NonRT-RIC A1 Northbound API

Initial SEED CODE
Issue-ID: NONRTRIC-36
Change-Id: I72c537297c3440f49af0160b0029488959f5556b
Signed-off-by: Lathish <lathishbabu.ganesan@est.tech>
diff --git a/sdnc-a1-controller/oam/.gitignore b/sdnc-a1-controller/oam/.gitignore
new file mode 100755
index 0000000..b632be9
--- /dev/null
+++ b/sdnc-a1-controller/oam/.gitignore
@@ -0,0 +1,62 @@
+#####standard .git ignore entries#####
+
+## IDE Specific Files ##
+org.eclipse.core.resources.prefs
+.checkstyle
+.classpath
+.project
+.settings
+.idea
+.externalToolBuilders
+.pydevproject
+maven-eclipse.xml
+workspace
+
+## Compilation Files ##
+*.class
+**/target
+target
+target-ide
+MANIFEST.MF
+
+## Misc Ignores (OS specific etc) ##
+bin/
+dist
+*~
+*.ipr
+*.iml
+*.iws
+classes
+out/
+.DS_STORE
+.metadata
+
+## antlr4 generated files ##
+ExprGrammarBaseListener.java
+ExprGrammarLexer.java
+ExprGrammarListener.java
+ExprGrammarParser.java
+ExprGrammar.tokens
+ExprGrammarLexer.tokens
+
+# BlackDuck generated file
+sdnc-oam_bdio.jsonld
+blackDuckHubProjectName.txt
+blackDuckHubProjectVersionName.txt
+
+#Chef local mode cache
+local-mode-cache
+
+# Generated local docker image
+**/docker-files/opt
+**/src/main/resources/opt
+
+#dgbuilder releases
+#**/dgbuilder/releases
+
+#version plugin backups
+**/*.versionsBackup
+
+#Yang generated
+**/restconfapi-yang/src/main/java/
+**/yang-gen-sal/
diff --git a/sdnc-a1-controller/oam/.gitreview b/sdnc-a1-controller/oam/.gitreview
new file mode 100644
index 0000000..7703960
--- /dev/null
+++ b/sdnc-a1-controller/oam/.gitreview
@@ -0,0 +1,4 @@
+[gerrit]
+host=gerrit.onap.org
+port=29418
+project=sdnc/oam.git
diff --git a/sdnc-a1-controller/oam/INFO.yaml b/sdnc-a1-controller/oam/INFO.yaml
new file mode 100644
index 0000000..f8b0d37
--- /dev/null
+++ b/sdnc-a1-controller/oam/INFO.yaml
@@ -0,0 +1,52 @@
+---
+project: 'sdnc-oam'
+project_creation_date: '2017-02-14'
+project_category: ''
+lifecycle_state: 'Incubation'
+project_lead: &onap_sdnc_ptl
+    name: 'Dan Timoney'
+    email: 'dtimoney@att.com'
+    id: 'djtimoney'
+    company: 'ATT'
+    timezone: 'America/New York'
+primary_contact: *onap_sdnc_ptl
+issue_tracking:
+    type: 'jira'
+    url: 'https://jira.onap.org/projects/SDNC'
+    key: 'SDNC'
+mailing_list:
+    type: 'groups.io'
+    url: 'lists.onap.org'
+    tag: '<[vid]>'
+realtime_discussion: ''
+meetings:
+    - type: 'zoom'
+      agenda: 'https://wiki.onap.org/display/DW/Software+Defined+Network+Controller+Project'
+      url: 'https://wiki.onap.org/display/DW/Software+Defined+Network+Controller+Project#SoftwareDefinedNetworkControllerProject-Meetings'
+      server: 'n/a'
+      channel: 'n/a'
+      repeats: 'weekly'
+      time: '13:00 UTC'
+repositories:
+    - 'sdnc/adaptors'
+    - 'sdnc/apps'
+    - 'sdnc/northbound'
+    - 'sdnc/oam'
+committers:
+    - <<: *onap_sdnc_ptl
+    - name: 'Prabhuram Somasundaram'
+      email: 'ps7551@att.com'
+      company: 'ATT'
+      id: 'Prabhu_Ram'
+      timezone: ''
+    - name: 'David Stilwell'
+      email: 'stilwelld@att.com'
+      company: 'ATT'
+      id: 'stilwelld'
+      timezone: ''
+tsc:
+    approval: 'https://lists.onap.org/pipermail/onap-tsc'
+    changes:
+        - type: 'Deletion'
+          name: 'Ryan Goulding'
+          link: 'https://lists.onap.org/g/onap-tsc/message/4261'
diff --git a/sdnc-a1-controller/oam/LICENSE.txt b/sdnc-a1-controller/oam/LICENSE.txt
new file mode 100644
index 0000000..3ea5081
--- /dev/null
+++ b/sdnc-a1-controller/oam/LICENSE.txt
@@ -0,0 +1,22 @@
+/*
+ * ============LICENSE_START==========================================
+ * ===================================================================
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ *
+ */
diff --git a/sdnc-a1-controller/oam/README.md b/sdnc-a1-controller/oam/README.md
new file mode 100644
index 0000000..98b67fb
--- /dev/null
+++ b/sdnc-a1-controller/oam/README.md
@@ -0,0 +1,14 @@
+This source repository contains the code for SDN Controller operations, administration and maintenance utilities. This code depends on the following, which should be downloaded and compiled first:
+
+1. org.openecomp.sdnc/sdnc-core
+2. org.openecomp.sdnc/sdnc-adaptors
+3. org.openecomp.sdnc/sdnc-northbound
+4. org.openecomp.sdnc/sdnc-plugins
+
+To compile this code:
+
+1. Make sure your local Maven settings file ($HOME/.m2/settings.xml) contains references to the OpenECOMP repositories and OpenDaylight repositories.  See example-settings.xml for an example.
+
+2. To compile, run "mvn clean install".
+
+
diff --git a/sdnc-a1-controller/oam/SdncReports/README.md b/sdnc-a1-controller/oam/SdncReports/README.md
new file mode 100644
index 0000000..651f64b
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/README.md
@@ -0,0 +1,11 @@
+Parent-SdncReports (ccsdk is used as parent)
+---------------------------------------------
+Child-
+	SdncReportsApi
+	SdncReportsDao
+DB information:-
+Need to change below DB details inside application.properties.
+
+	spring.datasource.url=jdbc:mariadb://localhost:3306/testreports
+	spring.datasource.username=root
+	spring.datasource.password=root
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/pom.xml b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/pom.xml
new file mode 100644
index 0000000..b6eab48
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/pom.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<packaging>jar</packaging>
+	<artifactId>SdncReportsApi</artifactId>
+	<groupId>org.onap.sdnc.oam</groupId>
+	<version>1.7.3-SNAPSHOT</version>
+        <name>sdnc-oam :: SdncReports :: SdncReportsApi</name>
+	<parent>
+		<groupId>org.onap.sdnc.oam</groupId>
+		<artifactId>SdncReports</artifactId>
+		<version>1.7.3-SNAPSHOT</version>
+	</parent>
+
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+		<java.version>1.8</java.version>
+	</properties>
+
+	<dependencies>
+	
+		<dependency>
+			<groupId>ch.vorburger.mariaDB4j</groupId>
+			<artifactId>mariaDB4j</artifactId>
+			<version>2.2.3</version>
+		</dependency>
+		
+		<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
+		<dependency>
+			<groupId>com.google.code.gson</groupId>
+			<artifactId>gson</artifactId>
+			<version>2.8.2</version>
+		</dependency>
+
+		<dependency>
+			<groupId>${project.groupId}</groupId>
+			<artifactId>SdncReportsDao</artifactId>
+			<version>${project.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.mariadb.jdbc</groupId>
+			<artifactId>mariadb-java-client</artifactId>
+			<version>1.1.9</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+			<version>1.5.4.RELEASE</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context</artifactId>
+			<version>4.3.9.RELEASE</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-tomcat</artifactId>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.tomcat.embed</groupId>
+			<artifactId>tomcat-embed-jasper</artifactId>
+			<scope>provided</scope>
+		</dependency>
+
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-devtools</artifactId>
+			<optional>true</optional>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+			<version>1.5.3.RELEASE</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-jpa</artifactId>
+		</dependency>
+
+		<!-- Add Log4j2 Dependency -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-log4j2</artifactId>
+		</dependency>
+		
+		<!-- Add Web jars, instead of dist folder  -->
+		<dependency>
+			<groupId>org.webjars</groupId>
+			<artifactId>bootstrap</artifactId>
+			<version>3.3.7</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.webjars</groupId>
+			<artifactId>bootstrap-datepicker</artifactId>
+			<version>1.0.1</version>
+		</dependency>
+		
+	</dependencies>
+
+	<build>
+
+		<plugins>
+
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+				<configuration>
+					<executable>true</executable>
+				</configuration>
+				
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<configuration>
+					<skipTests>true</skipTests>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.jacoco</groupId>
+				<artifactId>jacoco-maven-plugin</artifactId>
+				<version>0.7.5.201505241946</version>
+				<executions>					
+					<execution>
+						<id>pre-unit-test</id>
+						<goals>
+							<goal>prepare-agent</goal>
+						</goals>
+						<configuration>
+							<!-- Sets the path to the file which contains the execution data. -->
+							<destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
+							<!-- Sets the name of the property containing the settings for JaCoCo 
+								runtime agent. -->
+							<propertyName>surefireArgLine</propertyName>
+						</configuration>
+					</execution>
+					
+					<execution>
+						<id>post-unit-test</id>
+						<phase>test</phase>
+						<goals>
+							<goal>report</goal>
+						</goals>
+						<configuration>
+							<!-- Sets the path to the file which contains the execution data. -->
+							<dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
+							<!-- Sets the output directory for the code coverage report. -->
+							<outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+			<plugin>
+				<groupId>io.fabric8</groupId>
+				<artifactId>docker-maven-plugin</artifactId>
+				<version>0.15.3</version>
+				<configuration>
+					<dockerHost>http://127.0.0.1:9092</dockerHost>
+					<verbose>true</verbose>
+					<images>
+						<image>
+							<name>vishal/sdnc_report</name>
+							<build>
+								<dockerFile>Dockerfile</dockerFile>
+								<assembly>
+									<descriptorRef>artifact</descriptorRef>
+								</assembly>
+							</build>
+						</image>
+					</images>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/Application.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/Application.java
new file mode 100644
index 0000000..b7cd50f
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/Application.java
@@ -0,0 +1,42 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+
+package com.onap.sdnc.reports;
+
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+
+@SpringBootApplication(scanBasePackages = {"com.onap.sdnc.reports.*","com.onap.sdnc.testapi.*"})
+@EnableAutoConfiguration
+public class Application {
+	private static final Logger logger = LogManager.getLogger(Application.class);
+	public static void main(String[] args) {
+		
+		SpringApplication.run(Application.class, args);
+		logger.info("SDNC REPORTS API Has Started..");
+	}
+}
+
+
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/ServletInitializer.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/ServletInitializer.java
new file mode 100644
index 0000000..55678cb
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/ServletInitializer.java
@@ -0,0 +1,32 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.support.SpringBootServletInitializer;
+
+public class ServletInitializer extends SpringBootServletInitializer {
+
+	@Override
+	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+		return application.sources(Application.class);
+	}
+
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/config/EmbeddedMariaDbConfig.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/config/EmbeddedMariaDbConfig.java
new file mode 100644
index 0000000..ca45838
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/config/EmbeddedMariaDbConfig.java
@@ -0,0 +1,5 @@
+package com.onap.sdnc.reports.config;
+
+public class EmbeddedMariaDbConfig {
+
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/config/JpaApplicationConfig.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/config/JpaApplicationConfig.java
new file mode 100644
index 0000000..97ff282
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/config/JpaApplicationConfig.java
@@ -0,0 +1,30 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.config;
+
+
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+
+@EnableJpaRepositories("com.onap.sdnc.reports.repository")
+@EntityScan("com.onap.sdnc.reports.*")
+public class JpaApplicationConfig {
+	
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/controller/CertificationController.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/controller/CertificationController.java
new file mode 100644
index 0000000..7d69794
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/controller/CertificationController.java
@@ -0,0 +1,54 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.onap.sdnc.reports.model.Request;
+import com.onap.sdnc.reports.model.Response;
+import com.onap.sdnc.reports.service.LayerTestService;
+
+
+@RestController
+public class CertificationController {
+
+	@Autowired
+	LayerTestService ltService;	
+	
+	@RequestMapping("/")
+	ModelAndView home(ModelAndView modelAndView) {
+
+		modelAndView.setViewName("index");
+
+		return modelAndView;
+	}
+	
+	@RequestMapping(value="/runtest",method=RequestMethod.POST, consumes="application/json",produces=MediaType.APPLICATION_JSON_VALUE)
+	public Response findReportByTestName(@RequestBody Request req) {		
+		
+		return ltService.networkCertification(req);		
+	}
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/controller/ReportController.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/controller/ReportController.java
new file mode 100644
index 0000000..55a6360
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/controller/ReportController.java
@@ -0,0 +1,59 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.controller;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+import com.onap.sdnc.reports.service.IReportService;
+
+@RestController
+public class ReportController {
+
+	private static final Logger logger = LogManager.getLogger(ReportController.class);
+	
+	@Autowired
+	IReportService reportService;
+	@RequestMapping(value="/findReportByDeviceIP/{startDate}/{endDate}/{deviceIP:.+}", produces = "application/json",method=RequestMethod.GET)
+	public List<PreTestModel> findReportByDeviceIP(@PathVariable("startDate") Date startDate,@PathVariable("endDate") Date endDate,@PathVariable("deviceIP") String deviceIP) {
+
+		try{
+			logger.info("findReportByDeviceIP Started Working..");
+			if(logger.isDebugEnabled())
+				logger.debug("Received StartDate : "+startDate+" ,EndDate : "+endDate+"  ,DeviceIP : "+deviceIP);
+
+			return reportService.findReportByDeviceIP(startDate,endDate,deviceIP);
+		}
+		catch(Exception ex)
+		{
+			logger.info("Exception Occured : "+ex.getLocalizedMessage());
+			return java.util.Collections.emptyList();
+		}		
+	}
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/CertificationClientService.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/CertificationClientService.java
new file mode 100644
index 0000000..589fecf
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/CertificationClientService.java
@@ -0,0 +1,210 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package com.onap.sdnc.reports.service;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import com.onap.sdnc.reports.model.CertificationInputs;
+import com.onap.sdnc.reports.model.DeviceConfig;
+import com.onap.sdnc.reports.model.ODLClientResponse;
+import com.onap.sdnc.reports.model.Output;
+import com.onap.sdnc.reports.model.PreTestResponse;
+import com.onap.sdnc.reports.repository.DeviceRepository;
+import com.onap.sdnc.reports.repository.PreTestConfigRepository;
+
+@Service
+public class CertificationClientService {
+
+	private static final Logger logger = Logger.getLogger(CertificationClientService.class);
+
+	
+	@Autowired
+	DeviceRepository deviceRepository;
+	
+	@Autowired
+	PreTestConfigRepository preTestRepo;
+	
+	ObjectMapper mapper = new ObjectMapper();
+
+	public void restClient(CertificationInputs vnfinfo, List<PreTestResponse> preTestNew, String testType) {
+
+		PreTestResponse preTest = new PreTestResponse();
+
+		Output output = new Output();
+		if ("network".equalsIgnoreCase(testType)) {
+			output = pingTest(vnfinfo);
+		}
+		if ("protocol".equalsIgnoreCase(testType)) {
+			output = protocolTest(vnfinfo);
+		}
+		preTest.setStatus(output.getStatus());
+		preTest.setIpaddress(output.getIpaddress());
+		preTest.setStatistics(output.getStatistics());
+		preTest.setAvgTime(output.getAvgTime());
+		preTest.setTesttype(testType);
+		preTest.setHostname(output.getHostname());
+		preTestNew.add(preTest);
+		
+		ODLClientResponse odlClientResponse=new ODLClientResponse();
+		odlClientResponse.setOutput(output);
+		
+		testSaveResults(preTest, odlClientResponse);		
+	}
+
+	public static Output pingTest(CertificationInputs vnfinfo) {
+		
+		Output output = new Output();
+		String pingCmd = "ping " + vnfinfo.getInput().getIpaddress();
+		String pingResult = "";
+		String testResult = "fail";
+		String status = "unreachable";
+		String reason = null;
+		String timeRes = null;
+		String percentile = null;
+		boolean flag = false;
+		boolean flag1 = false;
+		try {
+			InetAddress byIpaddress = InetAddress.getByName(vnfinfo.getInput().getIpaddress());
+			String byHostName=vnfinfo.getInput().getHostname();			
+			flag = byIpaddress.isReachable(5000);
+
+		} catch (UnknownHostException e) {
+			logger.info("Network certification Exception : " + e);
+		} catch (IOException e) {
+			logger.info("Network certification Exception : " + e);
+		}
+		
+		if (flag ) {
+			try {
+				Runtime r = Runtime.getRuntime();
+				Process p = r.exec(pingCmd);
+				BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
+				String inputLine;
+				while ((inputLine = in.readLine()) != null) {
+					if (pingResult.equals("")) {
+						pingResult = inputLine;
+					} else {
+						pingResult += "~" + inputLine;
+					}
+				}
+				String[] results = pingResult.split("~");
+				for (String res : results) {
+					if (res.trim().contains("Packets:")) {
+						testResult = "pass";
+						status = "reachable";
+						String packets = res.trim();
+						String[] lossPercentile = packets.split("\\(");
+						percentile = lossPercentile[1].replace(")", "").replace(",", "").trim();
+					}
+					if (res.trim().contains("Minimum")) {
+						String timeMs = res.trim();
+						String[] time = timeMs.split(",");
+						timeRes = time[0];
+					}
+				}
+				in.close();
+			} catch (Exception e) {
+				logger.info("Network certification Exception : " + e);
+				testResult = "fail";
+				status = "unreachable";
+				reason = e.toString();
+			}
+		}
+		output.setAvgTime(timeRes);
+		output.setStatistics(percentile);
+		output.setHostname(vnfinfo.getInput().getHostname());
+		output.setIpaddress(vnfinfo.getInput().getIpaddress());
+		output.setReason(reason);
+		output.setTestresult(testResult);
+		output.setStatus(status);
+
+		return output;
+	}
+
+	public static Output protocolTest(CertificationInputs vnfinfo) {
+		Output output = new Output();
+		Socket s = null;
+		String status = "unreachable";
+		String reason = null;
+		try {
+			s = new Socket(vnfinfo.getInput().getIpaddress(), Integer.parseInt("445"));
+			status = "reachable";
+		} catch (Exception e) {
+			logger.info("Protocol certification Exception : " + e);
+			reason = e.toString();
+			status = "unreachable";
+		} finally {
+			if (s != null)
+				try {
+					s.close();
+				} catch (Exception e) {
+					logger.info("Protocol certification Exception : " + e);
+					reason = e.toString();
+					status = "unreachable";
+				}
+		}
+		output.setStatus(status);
+		output.setIpaddress(vnfinfo.getInput().getIpaddress());
+		output.setReason(reason);
+		
+		return output;
+	}
+	
+	public void testSaveResults(PreTestResponse preTest,ODLClientResponse output) {
+		boolean flag=false;
+		long devId = 1;
+		
+		String timeStamp = new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime());
+		try {
+			DeviceConfig devicename = deviceRepository.findDeviceIP(preTest.getIpaddress());
+			devId = devicename.getId();			
+		} catch (Exception e) {
+			flag=true;			
+		}
+		if(flag) {
+			deviceRepository.logDeviceName(preTest.getIpaddress(), timeStamp);	
+		}
+		
+		DeviceConfig devicename = deviceRepository.findDeviceIP(preTest.getIpaddress());
+		devId = devicename.getId();
+		
+		Gson gson = new Gson();
+		String testName= preTest.getTesttype();
+		String result = preTest.getStatus();
+		String execuationDetails = gson.toJson(output);
+
+		preTestRepo.logPreTestReport(testName, result, execuationDetails, timeStamp, devId);
+	}
+
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/IReportService.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/IReportService.java
new file mode 100644
index 0000000..cdf7b16
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/IReportService.java
@@ -0,0 +1,35 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.service;
+
+import java.util.Date;
+import java.util.List;
+
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+
+public interface IReportService {
+
+	public List<PreTestModel> findReportByDeviceIP(@PathVariable("startDate") Date startDate,@PathVariable("endDate") Date endDate,@RequestParam("deviceIP") String deviceIP) throws Exception;
+	
+
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/LayerTestService.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/LayerTestService.java
new file mode 100644
index 0000000..85afdc9
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/LayerTestService.java
@@ -0,0 +1,31 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */ 
+package com.onap.sdnc.reports.service;
+
+import com.onap.sdnc.reports.model.Request;
+import com.onap.sdnc.reports.model.Response;
+
+
+public interface LayerTestService {
+
+	public Response networkCertification(Request restReq);
+
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/LayerTestServiceImpl.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/LayerTestServiceImpl.java
new file mode 100644
index 0000000..0565e51
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/LayerTestServiceImpl.java
@@ -0,0 +1,93 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */ 
+package com.onap.sdnc.reports.service;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.stereotype.Service;
+import com.onap.sdnc.reports.model.CertificationInputs;
+import com.onap.sdnc.reports.model.Input;
+import com.onap.sdnc.reports.model.PreTestResponse;
+import com.onap.sdnc.reports.model.Request;
+import com.onap.sdnc.reports.model.Response;
+import com.onap.sdnc.reports.model.ValidationTestType;
+import com.onap.sdnc.reports.model.VnfList;
+import com.onap.sdnc.reports.repository.DeviceRepository;
+import com.onap.sdnc.reports.repository.PreTestConfigRepository;
+
+
+@EnableJpaRepositories("com.onap.sdnc.reports.repository")
+@EntityScan("com.onap.sdnc.*")
+@EnableAutoConfiguration
+@Service
+public class LayerTestServiceImpl implements LayerTestService {
+
+	private static final Logger logger = Logger.getLogger(CertificationClientService.class);
+	
+	@Autowired
+	CertificationClientService certificationClientservice;
+	
+	@Autowired
+	DeviceRepository deviceRepository;
+	
+	@Autowired
+	PreTestConfigRepository preTestRepo;
+	
+	@Override
+	public Response networkCertification(Request restReq) {
+		
+		String testType = "network";		
+		
+		VnfList[] vnf = restReq.getVnfList();
+		
+		ValidationTestType[] validationType = restReq.getValidationTestType();
+
+		CertificationInputs vnfRequestParams = new CertificationInputs();
+
+		Response resOutput = new Response();
+		
+		Input input = new Input();
+
+		List<PreTestResponse> preTestNew = new ArrayList<PreTestResponse>();
+		for (ValidationTestType validationTestType : validationType) {
+			if (validationTestType.getValidationType().equalsIgnoreCase("Network Layer")) {
+				testType = "network";
+			}
+			if (validationTestType.getValidationType().equalsIgnoreCase("Protocol Layer")) {
+				testType = "protocol";
+			}
+			for (VnfList vnfList : vnf) {
+				input.setIpaddress(vnfList.getIpAddress());
+				input.setHostname(vnfList.getHostName());
+				vnfRequestParams.setInput(input);
+				certificationClientservice.restClient(vnfRequestParams, preTestNew, testType);
+			}
+		}		
+		resOutput.setPreTestResponse(preTestNew);		
+		return resOutput;
+	}
+
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/ReportServiceImpl.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/ReportServiceImpl.java
new file mode 100644
index 0000000..68e2898
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/java/com/onap/sdnc/reports/service/ReportServiceImpl.java
@@ -0,0 +1,89 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.onap.sdnc.reports.model.PreTestConfig;
+import com.onap.sdnc.reports.repository.DeviceRepository;
+import com.onap.sdnc.reports.repository.PreTestConfigRepository;
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+
+@Service
+public class ReportServiceImpl implements IReportService {
+
+	private static final Logger logger = LogManager.getLogger(ReportServiceImpl.class);
+	
+	@Autowired
+	DeviceRepository deviceRepository;
+	
+	@Autowired 
+	PreTestConfigRepository preTestConfigRepository;
+	
+	
+	@Override
+	public List<PreTestModel> findReportByDeviceIP(Date startDate, Date endDate, String deviceIP) throws Exception{
+		
+		try{
+
+			List<PreTestConfig> resultSet= preTestConfigRepository.findReportByDeviceIP(startDate, endDate, deviceIP);
+
+			if(logger.isDebugEnabled())
+				logger.debug("Received Output From Repository Is: "+resultSet);
+			
+			List<PreTestModel> preTestList=new ArrayList<PreTestModel>();
+			for(PreTestConfig config : resultSet)
+			{
+				try{
+					long deviceid=config.getDevice().getId();
+					long testid=config.getTestId();
+					String testName=config.getTestName();
+					String deviceIp=config.getDevice().getDeviceIP();
+					String execuationDetails=config.getExecuationDetails();
+					String result=config.getResult();
+					Date timeStamp=config.getTimestamp();
+					
+					PreTestModel model=new PreTestModel(testid, deviceid, testName, deviceIp, execuationDetails, result, timeStamp);
+					preTestList.add(model);
+				}
+				catch(Exception ex)
+				{
+					logger.info("Exception Occured : "+ex.getLocalizedMessage());
+					logger.error(ex);
+				}				
+			}
+			logger.info("Final PreTestConfig List Size : "+preTestList.size());		
+			logger.info("findReportByDeviceIP Finished Working..");
+			return preTestList;
+		}
+		catch(Exception ex)
+		{
+			logger.info("Exception Occured : "+ex.getLocalizedMessage());
+			logger.error(ex);
+			throw new Exception("Exception occurred while processing findReportByDeviceIP ",ex);
+		}		
+	}
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/application.properties b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/application.properties
new file mode 100644
index 0000000..c680ce2
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/application.properties
@@ -0,0 +1,30 @@
+server.port = 9003
+
+spring.jackson.serialization.fail-on-empty-beans=false
+
+server.tomcat.uri-encoding=utf-8
+
+server.error.whitelabel.enabled=false
+spring.mvc.view.prefix = /WEB-INF/views/
+spring.mvc.view.suffix = .jsp
+
+spring.datasource.url=jdbc:mariadb://localhost:3306/testreports
+spring.datasource.username=root
+spring.datasource.password=12345
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+# Keep the connection alive if idle for a long time (needed in production)
+spring.datasource.testWhileIdle=true
+spring.datasource.validationQuery=SELECT 1
+# ===============================
+# = JPA / HIBERNATE
+# ===============================
+# Show or not log for each sql query
+spring.jpa.show-sql=true
+# Hibernate ddl auto (create, create-drop, update): with "create-drop" the database
+# schema will be automatically created afresh for every start of application
+spring.jpa.hibernate.ddl-auto=update
+# Naming strategy
+spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
+spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
+# Allows Hibernate to generate SQL optimized for a particular DBMS
+spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/log4j2.xml b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..e443b52
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/log4j2.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="WARN" monitorInterval="30">
+    <Properties>
+        <Property name="LOG_PATTERN">
+            %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${hostName} --- [%15.15t] %-40.40c{1.} : %m%n%ex
+        </Property>
+    </Properties>
+    <Appenders>
+        
+        <!-- <Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+        </Console> -->
+        
+	        <!-- Rolling File Appender -->
+	<RollingFile name="FileAppender" fileName="logs/sdnc_report_api.log" 
+	             filePattern="logs/sdnc_report_api-%d{yyyy-MM-dd}-%i.log">
+	    <PatternLayout>
+	        <Pattern>${LOG_PATTERN}</Pattern>
+	    </PatternLayout>
+	    <Policies>
+	        <SizeBasedTriggeringPolicy size="10MB" />
+	    </Policies>
+	    <DefaultRolloverStrategy max="10"/>
+	</RollingFile>
+        
+    </Appenders>
+    
+    <Loggers>
+        <Logger name="com.onap.sdnc.reports" level="debug" additivity="false">
+            <AppenderRef ref="FileAppender" />
+        </Logger>
+ 
+	 	<Root level="debug">
+	            <!-- <AppenderRef ref="ConsoleAppender" /> -->
+	            <AppenderRef ref="FileAppender"/>
+	   </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/footer.html b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/footer.html
new file mode 100644
index 0000000..0b31ef7
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/footer.html
@@ -0,0 +1,3 @@
+<div class="footer">
+ <p style=" position: absolute; bottom: 5; left: 5; width: 100%; text-align: center;""> @Copyright 2018 All rights reserved</p>
+</div>
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/form-validationTest.html b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/form-validationTest.html
new file mode 100644
index 0000000..7ca70cc
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/form-validationTest.html
@@ -0,0 +1,148 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * Licensed under the Apache License, Version 2.0 (the "License");
+   * you may not use this file except in compliance with the License.
+   * You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License.
+   * ============LICENSE_END=========================================================
+   */
+    -->
+<div class="testMain" style="height:auto ;">  
+	<div class="heading">
+		<img src="images/validation.png" width=30 height="30"
+			style="margin-left: 5px;">&nbsp;&nbsp;Pre-test/Certification
+	</div>
+	<form name="reportForm">
+		<div class="row>
+         <div role="
+			alert" style="margin-left: 20px; margin-bottom: 5px;">
+			<button class="btn btn-danger testNotification" ng-show="showError">
+				<img src="images/error.png" width=40 height="30" class="testImgIcon">{{errorMessage}}
+			</button>
+			<button class="btn btn-success testNotification"
+				ng-show="showSuccess">
+				<img src="images/success.png" width=40 height="30"
+					class="testImgIcon">{{successMessage}}
+			</button>
+			<button class="btn btn-warning testNotification"
+				ng-show="showWarninf">
+				<img src="images/waning.png" width=35 height="25"
+					class="testImgIcon">{{warningMessage}}
+			</button>
+			<button class="btn btn-info testNotification" ng-show="showInfo">{{infoMessage}}</button>
+		</div>
+		<div class="row">
+			<div class="column testCol">
+				<label class="labeltext">Specify IP Address</label>
+			</div>
+			<div class="column"
+				style="background-color: #f2f2f2; width: 50%; margin-left: 0px;">
+				<input type="text" ng-model="IPAddress" name="IPAddress"
+					style="margin-left: 5px; width: 170px;" ng-ip-address
+					placeholder='255.255.255.255' required></input>
+				<div role="alert">
+					<span class="error" ng-show="reportForm.IPAddress.$error.required">Required!</span>
+				</div>
+				<div role="alert">
+					<span class="error" ng-if="reportForm.IPAddress.$invalid">Not
+						a valid IPAddress!</span>
+				</div>
+				<div role="alert">
+					<span class="error" ng-if="reportForm.IPAddress.pattern">Not
+						a valid IPAddress!</span>
+				</div>
+			</div>
+		</div>
+		<div class="row">
+			<div class="column testCol">
+				<label class="labeltext">Specify Host Name</label>
+			</div>
+			<div class="column"
+				style="background-color: #f2f2f2; width: 50%; margin-left: 0px;">
+				<input type="text" ng-model="HostName" name="HostName"
+					style="margin-left: 5px; width: 170px;" required
+					ng-pattern="hostNamePattern"></input>
+				<div role="alert">
+					<span class="error" ng-show="reportForm.HostName.$error.required">Required!</span>
+				</div>
+				<div role="alert">
+					<span class="error" ng-show="reportForm.HostName.$invalid">Not
+						a valid HostName!</span>
+				</div>
+			</div>
+		</div>
+		<div class="row">
+			<div class="column"
+				style="width: 25%; background-color: #f2f2f2; height: 45px; margin-left: 35px;">
+				<label class="labeltext">Select Certification</label>
+			</div>
+			<div class="column"
+				style="background-color: #f2f2f2; width: 50%; height: 45px; margin-left: 0px;">
+				<label ng-repeat="val in validationTestList" class="labeltext"
+					style="margin-right: 35px;"> <input type="checkbox"
+					ng-model="val.Selected" class="check"
+					ng-change="updateSelection($index,validationTestList,val.validationType);">{{val.validationType}}</input>
+				</label>
+			</div>
+		</div>
+		<!--<hr style="border-color:darkGrey;">-->
+		<div class="row">
+			<div class="column btnRunTest">
+				<input type="submit" ng-click="runTest()" value="Run PreTest"
+					id="btnSubmit" ng-disabled="showError" style="margin-left: 0px;" />
+			</div>
+
+</div>
+			<table class="tableDisplay" ng-show="ShowResult" id="tableToExport"
+				style="margin-left: 10px; width: 1000px;">
+				<tr class="first_row">
+					<th>SNo.</th>
+					<th colspan="2" style="text-align: center;">TestName</th>
+					<th>Device IP</th>
+					<th>Status</th>
+					<th style="width: 20%;">Statistics (%Loss)</th>
+					<th style="width: 20%;">Average Time (ms)</th>
+					<th>Result</th>
+				</tr>
+				<tr ng-repeat="test in objPreTest">
+					<td>{{$index+1}}</td>
+					<td><img
+						src="{{(test.testtype=='Network Layer') ? 'images/images.png': 'images/protocol.png'}}"
+						width=40 height=30></img></td>
+					<td>{{test.testtype}}</td>
+					<td>{{test.ipaddress}}</td>
+					<td>{{test.status | uppercase}}</td>
+					<td>{{test.statistics | uppercase}}</td>
+					<td>{{test.avgTime | uppercase}}</td>
+
+					<td><img
+						src="{{(test.status=='reachable') ? 'images/success.png': 'images/FailImage.png'}}"
+						width=30 height=25></img></td>
+				</tr>
+			</table>
+		
+	</form>
+
+	<div class="row">
+		<div class="column" style="margin-top: 10px; width: 800px;"
+			ng-show="ShowResult">
+			<span class='arrowRed'>&#8594;</span> <label class="labeltext">UnReachable</label>&nbsp;&nbsp;
+			<span class='arrowGreen'>&#8594;</span> <label class="labeltext">Reachable</label>&nbsp;&nbsp;
+			<span><img src='images/success.png' width=30 height=25></span>
+			<label class="labeltext">Pass</label>&nbsp;&nbsp; <span><img
+				src='images/FailImage.png' width=30 height=25></span> <label
+				class="labeltext">Fail</label>
+		</div>
+	</div>
+</div>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/form-viewReport.html b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/form-viewReport.html
new file mode 100644
index 0000000..ac6b86e
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/form-viewReport.html
@@ -0,0 +1,129 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * Licensed under the Apache License, Version 2.0 (the "License");
+   * you may not use this file except in compliance with the License.
+   * You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License.
+   * ============LICENSE_END=========================================================
+   */
+    -->
+<div class="ReportMain" style="height:auto ;">  
+   <div class="heading"><img src="images/search.png" width=30 height="30" style="margin-left:5px;">&nbsp;&nbsp;Search For Historical Test Reports</div>
+   <form name="myForm">
+      <div class="row">
+         <div role="alert" style="margin-left:20px;margin-bottom:5px;">
+            <button class="btn btn-danger ReportNotification" ng-show="showError"><img src="images/error.png" width=25 height="25" class="ReportImgIcon">{{errorMessage}}</button>
+            <button class="btn btn-success ReportNotification" ng-show="showSuccess"><img src="images/success.png" width=30 height="30" class="ReportImgIcon">{{successMessage}}</button>
+            <button class="btn btn-warning ReportNotification" ng-show="showWarning"><img src="images/waning.png" width=35 height="25" class="ReportImgIcon">{{warningMessage}}</button>
+         </div>
+         <div class="column" style="background-color:#f2f2f2;width:40%;">
+            <label for="exampleInput" class="labeltext">Start Date</label>
+            <input type="date" id="exampleInput" name="input" ng-model="startdate.value"
+               placeholder="yyyy-MM-dd" style="margin-left:75px;width:170px;" required/>
+            <div role="alert">
+               <span class="error" ng-show="myForm.input.$error.required">
+               Required!</span>
+               <span class="error" ng-show="myForm.input.$error.date">
+               Not a valid date!</span>
+            </div>
+         </div>
+         <div class="column" style="background-color:#f2f2f2;margin-left:0px;width:50%;">
+            <label for="exampleEndInput" class="labeltext">End Date</label>
+            <input type="date" id="exampleEndInput" name="enddate" ng-model="enddate.value"
+               placeholder="yyyy-MM-dd" style="width:170px;" required/>
+            <div role="alert">
+               <span class="error" ng-show="myForm.input.$error.required">
+               Required!</span>
+               <span class="error" ng-show="myForm.input.$error.date">
+               Not a valid date!</span>
+            </div>
+         </div>
+      </div>
+      <div class="row">
+         <div class="column" style="background-color:#f2f2f2;width:90%;">
+            <label class="labeltext">Specify Device IP</label>
+            <input type="text" ng-model="deviceIP" name="text" style="margin-left:25px;width:170px;" required></input>
+            <div role="alert">
+               <span class="error" ng-show="myForm.text.$error.required">
+               Required!</span>
+               <span class="error" ng-show="myForm.text.$error.date">
+               Not a valid date!</span>
+            </div>
+         </div>
+      </div>
+      <div class="row">
+         <input type="submit" id="btnSubmit" ng-click="getReports(deviceIP,startdate.value,enddate.value)" style="width:120px;"></input>
+      </div>
+       <table class="tableDisplay" ng-show="ShowResult" id="tableToExport">
+      <tr class="first_row">
+         <th>SNo.
+         </th>
+         <th colspan="2" style="text-align:center;">TestName
+         </th>
+         <th>DeviceIP
+         </th>
+         <th>Timestamp
+         </th>
+         <th>Status
+         </th>
+         <th style="width:20%;">Statistics (%Loss)</th>
+         <th style="width:20%;">Average Time (ms)</th>
+         <th colspan="2" style="text-align:center;">Result
+         </th>
+      </tr>
+      <tr dir-paginate="test in objTestModel | itemsPerPage: 4">
+         <td>{{$index+1}}
+         </td>
+         <td><img src="{{(test.testname=='Network Layer') ? 'images/images.png': 'images/protocol.png'}}" width=40 height=30 ></img></td>
+         <td>{{test.testname}}
+         </td>
+         <td>{{test.deviceIP}}
+         </td>
+         <td>{{test.timeStamp}}
+         </td>
+         <td>{{test.executionDetails.status | uppercase}}
+         </td>
+          <td>{{test.executionDetails.statistics}}
+         </td>
+         </td>
+          <td>{{test.executionDetails.avgTime}}
+         </td>
+         <td>{{test.result}}</td>
+         <td><img src="{{(test.result=='pass'||'reachable') ? 'images/success.png': 'images/FailImage.png'}}" width=30 height=25></img>       
+      </tr>
+   </table>
+   </form>
+     
+   <div class="row">
+      <div class="column">
+         <dir-pagination-controls ng-show="pagination"
+            max-size="5"
+            direction-links="true"
+            boundary-links="true" >
+         </dir-pagination-controls>
+      </div>
+      <div class="column" style="margin-top:10px;" ng-show="ShowResult"> 
+         <span class='arrowRed'>&#8594;</span>
+         <label class="labeltext">UnReachable</label>&nbsp;&nbsp;
+         <span class='arrowGreen'>&#8594;</span>
+         <label class="labeltext">Reachable</label>
+      </div>
+   </div>
+   <div class="row">          
+      <button type="button" ng-csv="objTestModel" class="btndownload" ng-show="ShowResult" filename="fileName.csv" csv-column-order="csvOrder" csv-header="['TestName','DeviceIP','TimeStamp','Status','Statistics','AvgTime','Result']">Download</button>
+      <img src="images/downloadImage.png" width=30 height="30" ng-show="ShowResult" style="margin-left:5px;">
+   </div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/header.html b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/header.html
new file mode 100644
index 0000000..2385158
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/header.html
@@ -0,0 +1,3 @@
+<div  class="header">
+ <p style="margin-left:20px;"> ONAP Certification Test Page </p>
+</div>
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/FailImage.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/FailImage.png
new file mode 100644
index 0000000..22c44f7
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/FailImage.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/download.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/download.png
new file mode 100644
index 0000000..0b1f949
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/download.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/downloadImage.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/downloadImage.png
new file mode 100644
index 0000000..e72e128
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/downloadImage.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/error.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/error.png
new file mode 100644
index 0000000..3f44964
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/error.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/fail.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/fail.png
new file mode 100644
index 0000000..898fa26
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/fail.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/images.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/images.png
new file mode 100644
index 0000000..3bce573
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/images.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/networklayer.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/networklayer.png
new file mode 100644
index 0000000..c8e8008
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/networklayer.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/protocaol.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/protocaol.png
new file mode 100644
index 0000000..2c6f8fa
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/protocaol.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/protocol.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/protocol.png
new file mode 100644
index 0000000..aea9c7c
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/protocol.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/reachable.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/reachable.png
new file mode 100644
index 0000000..bb771b3
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/reachable.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/router.jpg b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/router.jpg
new file mode 100644
index 0000000..cb4c50e
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/router.jpg
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/router.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/router.png
new file mode 100644
index 0000000..94de9f5
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/router.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/search.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/search.png
new file mode 100644
index 0000000..a8b4b35
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/search.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/success.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/success.png
new file mode 100644
index 0000000..76689fe
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/success.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/validation.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/validation.png
new file mode 100644
index 0000000..77c53ff
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/validation.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/waning.png b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/waning.png
new file mode 100644
index 0000000..2ae2987
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/images/waning.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllDevices.json b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllDevices.json
new file mode 100644
index 0000000..d7faef5
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllDevices.json
@@ -0,0 +1,17 @@
+
+{  
+   "deviceList":[  
+      {  
+         "deviceId":"1",
+         "deviceName":"Device1"
+      },
+      {  
+         "deviceId":"2",
+         "deviceName":"Device2"
+      },
+      {  
+         "deviceId":"3",
+         "deviceName":"Device3"
+      }
+   ]
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllReports.json b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllReports.json
new file mode 100644
index 0000000..cd0723f
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllReports.json
@@ -0,0 +1,75 @@
+
+{  
+   "data":[  
+      {  
+         "testid":1,
+         "deviceid":1,
+         "testName":"Network Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"hostname": "google.com","testresult": "pass", "status": "reachable","statistics": "0% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 70ms"}},
+         "result":"Pass",
+         "timeStamp":"2018-03-16"
+      },
+      {  
+         "testid":2,
+         "deviceid":1,
+         "testName":"Network Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"hostname": "google.com","testresult": "fail", "status": "unreachable","statistics": "100% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 33ms"}},
+         "result":"Pass",
+         "timeStamp":"2018-03-16"
+      },
+	    {  
+         "testid":4,
+         "deviceid":1,
+         "testName":"Protocol Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"status": "unreachable"}},
+         "result":"Fail",
+         "timeStamp":"2018-03-08"
+      },
+      {  
+         "testid":5,
+         "deviceid":1,
+         "testName":"Protocol Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"status": "reachable"}},
+         "result":"Pass",
+         "timeStamp":"2018-03-15"
+      },
+      {  
+         "testid":6,
+         "deviceid":1,
+         "testName":"Network Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"hostname": "google.com","testresult": "fail", "status": "unreachable","statistics": "100% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 33ms"}},
+         "result":"Fail",
+         "timeStamp":"2018-03-15"
+      },
+      {  
+         "testid":7,
+         "deviceid":1,
+        "testName":"Network Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"hostname": "google.com","testresult": "fail", "status": "unreachable","statistics": "100% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 50ms"}},
+         "result":"Fail",
+         "timeStamp":"2018-03-15"
+      }
+   ],
+   "status":200,
+   "config":{  
+      "method":"GET",
+      "transformRequest":[  
+         null
+      ],
+      "transformResponse":[  
+         null
+      ],
+      "params":"",
+      "headers":{  
+         "Accept":"application/json"
+      },
+      "url":"/findReportByDeviceName/Thu Mar 15 2018 00:00:00 GMT+0530 (India Standard Time)/Fri Mar 16 2018 00:00:00 GMT+0530 (India Standard Time)/Router"
+   },
+   "statusText":""
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllTest.json b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllTest.json
new file mode 100644
index 0000000..fc9b290
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllTest.json
@@ -0,0 +1,17 @@
+
+{  
+   "testList":[  
+      {  
+         "testId":"1",
+         "testName":"Test1"
+      },
+      {  
+         "testId":"2",
+         "testName":"Test2"
+      },
+      {  
+         "testId":"3",
+         "testName":"Test3"
+      }
+   ]
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllVNF.json b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllVNF.json
new file mode 100644
index 0000000..4ebf951
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getAllVNF.json
@@ -0,0 +1,29 @@
+
+{  
+   "vnfList":[  
+      {  
+         "IpAddress":"1.160.10.240",
+         "HostName":"Host1",
+		 "Selected":false,
+		 "PortNo":"8282"
+      },
+      {  
+         "IpAddress":"1.160.10.241",
+         "HostName":"Host2",
+		 "Selected":false,
+		 "PortNo":"8080"
+      },
+      {  
+         "IpAddress":"1.160.10.242",
+         "HostName":"Host3",
+		 "Selected":false,
+		 "PortNo":"8285"
+      },
+       {  
+         "IpAddress":"1.160.10.243",
+         "HostName":"Host4",
+		 "Selected":false,
+		 "PortNo":"8286"
+      }
+   ]
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getTestResult.json b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getTestResult.json
new file mode 100644
index 0000000..581c8b0
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/sdnc-stubs/getTestResult.json
@@ -0,0 +1,42 @@
+
+{  
+   "preTestResponse":[  
+      {  
+         "ipaddress":"1.160.10.240",
+         "status":"unreachable",
+         "testtype":"Network Layer",
+         "statistics":null,
+         "avgTime":null
+      },
+      {  
+         "ipaddress":"1.160.10.240",
+         "status":"unreachable",
+         "testtype":"Protocol Layer",
+         "statistics":null,
+         "avgTime":null
+      },
+      {  
+         "ipaddress":"1.160.10.240",
+         "status":"reachable",
+         "testtype":"Network Layer",
+         "statistics":"0% loss",
+         "avgTime":"Minimum = 70ms"
+      }
+   ],
+   "status":200,
+   "config":{  
+      "method":"GET",
+      "transformRequest":[  
+         null
+      ],
+      "transformResponse":[  
+         null
+      ],
+      "params":"",
+      "headers":{  
+         "Accept":"application/json"
+      },
+      "url":"/findReportByDeviceName/Thu Mar 15 2018 00:00:00 GMT+0530 (India Standard Time)/Fri Mar 16 2018 00:00:00 GMT+0530 (India Standard Time)/Router"
+   },
+   "statusText":""
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/style/sdnc-style.css b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/style/sdnc-style.css
new file mode 100644
index 0000000..27b1595
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/style/sdnc-style.css
@@ -0,0 +1,240 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+ 
+ body{ 
+ padding-top:10px; 
+ overflow-y:scroll;
+ padding-bottom:10px;
+ } 
+
+/* form styling */
+#form-container{  
+	margin-bottom:20px;
+    border-radius:5px;
+}
+#form-container .page-header{  
+	margin:0; padding:30px; 
+    border-top-left-radius:5px; border-top-right-radius:5px;
+     }
+    
+ table.tableDisplay{
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     width: 100%;
+     table-layout: auto;
+}
+ table.tableDisplay tr:nth-child(even){
+     background-color: #C0C0C0;
+}
+ table.tableDisplay th{
+     padding-top: 12px;
+     padding-bottom: 12px;
+     text-align: left;
+     background: linear-gradient(to top, #f8f8f8 0%, #cce5ff 83%);
+     color: black;
+}
+ table.tableDisplay td,table.tableDisplay th {
+     border: 1px solid #ddd;
+     padding: 8px;
+     width:30px;
+     
+}
+ table.tableDisplay tr:{
+     text-align: left;
+}
+ table.tableDisplay tr:hover {
+     background-color:#cce5ff;
+}
+ .first_row{
+     background-color: #cce5ff;
+     color: black;
+     text-align:left;
+}
+ .column {
+     float: left;
+     width: 32.2%;
+     padding: 10px;
+     margin-left:20px;
+     height: 60px;
+    /* Should be removed. Only for demonstration */
+}
+/* Clear floats after the columns */
+ .row:after {
+     content: "";
+     display: table;
+     clear: both;
+}
+ #btnSubmit{
+     background-color: #cce5ff;
+     margin-top:20px;
+     margin-left:20px;
+     margin-bottom:10px;
+     width:100px;
+     height:30px;
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     border: 1px solid #ddd;
+     font-weight:700;
+}
+ .btndownload{
+     background-color: #cce5ff;
+     margin-top:20px;
+     margin-bottom:10px;
+     margin-left:20px;
+     width:130px;
+     height:30px;
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     border: 1px solid #ddd;
+     font-weight:700;
+}
+ #exampleInput{
+     margin-left:25px;
+     width:160px;
+}
+ #exampleEndInput{
+     margin-left:10px;
+}
+ .error{
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     color:Red;
+     font-size: 14px;
+     margin-bottom:10px;
+}
+ .labeltext{
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+}
+ .sort-icon {
+     font-size: 9px;
+     margin-left: 5px;
+}
+ th {
+     cursor:pointer;
+}
+ .heading{  
+     margin-top:30px;
+     width:99.5%;
+     height:45px;
+     margin-bottom:20px;
+     font-family:Trebuchet MS, Arial, Helvetica, sans-serif;
+     margin-right: -15px;
+     margin-left: 5px;
+     font-size: 20px;
+      background: linear-gradient(to top, #f8f8f8 0%, #cce5ff 83%);
+     padding-top:15px;
+
+}
+form_validationBody{
+	width:900px;
+	margin-left:15px;
+	margin-top:60px;
+	margin-bottom:20px;
+}
+button:hover {
+    position: relative;
+}
+button[title]:hover:after {
+     padding: 4px 8px;
+     position: absolute;
+     left: 0;
+     top: 100%;
+     white-space: nowrap;
+     z-index: 20px;
+     background:red;
+}
+.arrowRed {
+font-size: 30px;
+color: red;
+}
+.arrowGreen {
+font-size: 30px;
+color: green;
+}
+.ng-invalid  { border: 1px solid red; }
+.testMain{
+	width:100%;
+	margin-bottom:20px;
+	height:400px;
+	margin-top:10px;
+}
+.testNotification{
+	padding:0px;
+}
+.testImgIcon{
+	margin-left:5px;
+	margin-right:10px;
+	padding-right:10px;
+}
+.testCol{
+	background-color:#f2f2f2;
+	width:25%;
+	margin-left:35px;
+}
+.check{
+	 margin-left:10px;
+	margin-right:10px;
+}
+.btnRunTest{
+	background-color:#f2f2f2;
+	width:75%;
+	height:75px;
+	margin-left:35px;
+	margin-bottom:35px;
+}
+.ReportMain{
+	width:100%;
+    height:400px;
+    margin-top:10px;
+}
+.ReportNotification{
+	padding:0px;
+	margin-right:10px;
+	text-align:center;
+}
+.ReportImgIcon{
+	margin-left:5px;
+	margin-right:10px;
+}
+input[type=checkbox] { 
+	padding-right: 3px;!important;
+	}
+	
+.header{  
+     margin-top:20px;
+     width:1145px;
+     height:45px;
+     margin-bottom:5px;
+     font-family:Trebuchet MS, Arial, Helvetica, sans-serif;
+     font-size: 20px;
+     background: linear-gradient(to top, #f8f8f8 0%, #8F8484 83%);
+     padding-top:15px;
+
+}
+.footer{  
+     margin-top:10px;
+     width:1145px;
+     height:30px;
+     margin-bottom:5px;
+     font-family:Trebuchet MS, Arial, Helvetica, sans-serif;
+     font-size: 15px;
+     background: linear-gradient(to top, #f8f8f8 0%, #8F8484 83%);
+     padding-top:15px;
+
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/style/w3.css b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/style/w3.css
new file mode 100644
index 0000000..e73d269
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/style/w3.css
@@ -0,0 +1,231 @@
+/* W3.CSS 4.10 February 2018 by Jan Egil and Borge Refsnes */
+html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
+/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */
+html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}
+article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}
+audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline}
+audio:not([controls]){display:none;height:0}[hidden],template{display:none}
+a{background-color:transparent;-webkit-text-decoration-skip:objects}
+a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}
+dfn{font-style:italic}mark{background:#ff0;color:#000}
+small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}svg:not(:root){overflow:hidden}
+code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}
+button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:bold}
+button,input{overflow:visible}button,select{text-transform:none}
+button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}
+button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner{border-style:none;padding:0}
+button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring{outline:1px dotted ButtonText}
+fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
+legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}
+[type=checkbox],[type=radio]{padding:0}
+[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}
+[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
+[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}
+::-webkit-input-placeholder{color:inherit;opacity:0.54}
+::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
+/* End extract */
+html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden}
+h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif}
+h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px}
+hr{border:0;border-top:1px solid #eee;margin:20px 0}
+.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit}
+.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc}
+.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1}
+.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1}
+.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center}
+.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
+.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px}
+.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap}
+.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}
+.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}   
+.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none}
+.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none}
+.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%}
+.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none}
+.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block}
+.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s}
+.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%}
+.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc}
+.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer}
+.w3-dropdown-hover:hover .w3-dropdown-content{display:block}
+.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000}
+.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000}
+.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1}
+.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px}
+.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
+.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%}
+.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%}
+.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px}
+.w3-main,#main{transition:margin-left .4s}
+.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}
+.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}
+.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto}
+.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0}
+.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left}
+.w3-bar .w3-button{white-space:normal}
+.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0}
+.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%}
+.w3-responsive{display:block;overflow-x:auto}
+.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before,
+.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both}
+.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%}
+.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%}
+.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%}
+.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%}
+@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%}
+.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%}
+.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}}
+@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%}
+.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%}
+.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}}
+.w3-content{max-width:980px;margin:auto}.w3-rest{overflow:hidden}
+.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell}
+.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom}
+.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important}
+@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px}
+.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative}	
+.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center}
+.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}}
+@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}}
+@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}}
+@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}}
+@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}}
+.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0}
+.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2}
+.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0}
+.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0}
+.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}
+.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)}
+.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)}
+.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
+.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
+.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none}
+.w3-display-position{position:absolute}
+.w3-circle{border-radius:50%}
+.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px}
+.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px}
+.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px}
+.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px}
+.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
+.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
+.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}
+.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)}
+.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
+.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
+.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
+.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
+.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
+.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
+.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
+.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
+.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important}
+.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1}
+.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75}
+.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)}
+.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)}
+.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)}
+.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important}
+.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important}
+.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important}
+.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important}
+.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important}
+.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important}
+.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important}
+.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important}
+.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important}
+.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important}
+.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important}
+.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important}
+.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important}
+.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important}
+.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important}
+.w3-left{float:left!important}.w3-right{float:right!important}
+.w3-button:hover{color:#000!important;background-color:#ccc!important}
+.w3-transparent,.w3-hover-none:hover{background-color:transparent!important}
+.w3-hover-none:hover{box-shadow:none!important}
+/* Colors */
+.w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important}
+.w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important}
+.w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#2196F3!important}
+.w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important}
+.w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important}
+.w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important}
+.w3-blue-grey,.w3-hover-blue-grey:hover,.w3-blue-gray,.w3-hover-blue-gray:hover{color:#fff!important;background-color:#607d8b!important}
+.w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important}
+.w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important}
+.w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important}
+.w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important}
+.w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important}
+.w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important}
+.w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important}
+.w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important}
+.w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important}
+.w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important}
+.w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important}
+.w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important}
+.w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important}
+.w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important}
+.w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important}
+.w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important}
+.w3-grey,.w3-hover-grey:hover,.w3-gray,.w3-hover-gray:hover{color:#000!important;background-color:#9e9e9e!important}
+.w3-light-grey,.w3-hover-light-grey:hover,.w3-light-gray,.w3-hover-light-gray:hover{color:#000!important;background-color:#f1f1f1!important}
+.w3-dark-grey,.w3-hover-dark-grey:hover,.w3-dark-gray,.w3-hover-dark-gray:hover{color:#fff!important;background-color:#616161!important}
+.w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffdddd!important}
+.w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#ddffdd!important}
+.w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffcc!important}
+.w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#ddffff!important}
+.w3-text-amber,.w3-hover-text-amber:hover{color:#ffc107!important}
+.w3-text-aqua,.w3-hover-text-aqua:hover{color:#00ffff!important}
+.w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important}
+.w3-text-light-blue,.w3-hover-text-light-blue:hover{color:#87CEEB!important}
+.w3-text-brown,.w3-hover-text-brown:hover{color:#795548!important}
+.w3-text-cyan,.w3-hover-text-cyan:hover{color:#00bcd4!important}
+.w3-text-blue-grey,.w3-hover-text-blue-grey:hover,.w3-text-blue-gray,.w3-hover-text-blue-gray:hover{color:#607d8b!important}
+.w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important}
+.w3-text-light-green,.w3-hover-text-light-green:hover{color:#8bc34a!important}
+.w3-text-indigo,.w3-hover-text-indigo:hover{color:#3f51b5!important}
+.w3-text-khaki,.w3-hover-text-khaki:hover{color:#b4aa50!important}
+.w3-text-lime,.w3-hover-text-lime:hover{color:#cddc39!important}
+.w3-text-orange,.w3-hover-text-orange:hover{color:#ff9800!important}
+.w3-text-deep-orange,.w3-hover-text-deep-orange:hover{color:#ff5722!important}
+.w3-text-pink,.w3-hover-text-pink:hover{color:#e91e63!important}
+.w3-text-purple,.w3-hover-text-purple:hover{color:#9c27b0!important}
+.w3-text-deep-purple,.w3-hover-text-deep-purple:hover{color:#673ab7!important}
+.w3-text-red,.w3-hover-text-red:hover{color:#f44336!important}
+.w3-text-sand,.w3-hover-text-sand:hover{color:#fdf5e6!important}
+.w3-text-teal,.w3-hover-text-teal:hover{color:#009688!important}
+.w3-text-yellow,.w3-hover-text-yellow:hover{color:#d2be0e!important}
+.w3-text-white,.w3-hover-text-white:hover{color:#fff!important}
+.w3-text-black,.w3-hover-text-black:hover{color:#000!important}
+.w3-text-grey,.w3-hover-text-grey:hover,.w3-text-gray,.w3-hover-text-gray:hover{color:#757575!important}
+.w3-text-light-grey,.w3-hover-text-light-grey:hover,.w3-text-light-gray,.w3-hover-text-light-gray:hover{color:#f1f1f1!important}
+.w3-text-dark-grey,.w3-hover-text-dark-grey:hover,.w3-text-dark-gray,.w3-hover-text-dark-gray:hover{color:#3a3a3a!important}
+.w3-border-amber,.w3-hover-border-amber:hover{border-color:#ffc107!important}
+.w3-border-aqua,.w3-hover-border-aqua:hover{border-color:#00ffff!important}
+.w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important}
+.w3-border-light-blue,.w3-hover-border-light-blue:hover{border-color:#87CEEB!important}
+.w3-border-brown,.w3-hover-border-brown:hover{border-color:#795548!important}
+.w3-border-cyan,.w3-hover-border-cyan:hover{border-color:#00bcd4!important}
+.w3-border-blue-grey,.w3-hover-border-blue-grey:hover,.w3-border-blue-gray,.w3-hover-border-blue-gray:hover{border-color:#607d8b!important}
+.w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important}
+.w3-border-light-green,.w3-hover-border-light-green:hover{border-color:#8bc34a!important}
+.w3-border-indigo,.w3-hover-border-indigo:hover{border-color:#3f51b5!important}
+.w3-border-khaki,.w3-hover-border-khaki:hover{border-color:#f0e68c!important}
+.w3-border-lime,.w3-hover-border-lime:hover{border-color:#cddc39!important}
+.w3-border-orange,.w3-hover-border-orange:hover{border-color:#ff9800!important}
+.w3-border-deep-orange,.w3-hover-border-deep-orange:hover{border-color:#ff5722!important}
+.w3-border-pink,.w3-hover-border-pink:hover{border-color:#e91e63!important}
+.w3-border-purple,.w3-hover-border-purple:hover{border-color:#9c27b0!important}
+.w3-border-deep-purple,.w3-hover-border-deep-purple:hover{border-color:#673ab7!important}
+.w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important}
+.w3-border-sand,.w3-hover-border-sand:hover{border-color:#fdf5e6!important}
+.w3-border-teal,.w3-hover-border-teal:hover{border-color:#009688!important}
+.w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important}
+.w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important}
+.w3-border-black,.w3-hover-border-black:hover{border-color:#000!important}
+.w3-border-grey,.w3-hover-border-grey:hover,.w3-border-gray,.w3-hover-border-gray:hover{border-color:#9e9e9e!important}
+.w3-border-light-grey,.w3-hover-border-light-grey:hover,.w3-border-light-gray,.w3-hover-border-light-gray:hover{border-color:#f1f1f1!important}
+.w3-border-dark-grey,.w3-hover-border-dark-grey:hover,.w3-border-dark-gray,.w3-hover-border-dark-gray:hover{border-color:#616161!important}
+.w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important}
+.w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffcc!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/tabs.html b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/tabs.html
new file mode 100644
index 0000000..ab1ec32
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/resources/static/tabs.html
@@ -0,0 +1,10 @@
+<div>
+<nav role="navigation" class="navbar navbar-default" style="margin-top:10px;">
+         <div class="navbar-header" style="background-color:#F7EDEE;font-size: 15px;font-weight: bold;">
+            <ul class="nav navbar-nav">
+            <li ng-class='active'><a href="#testValidation">CERTIFICATION TEST</a></li>
+            <li><a href="#testReports">VIEW ALL REPORTS</a></li>
+            <ul>
+         </div>
+         </nav>
+         </div>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/WEB-INF/views/index.jsp b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/WEB-INF/views/index.jsp
new file mode 100644
index 0000000..3c7be35
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/WEB-INF/views/index.jsp
@@ -0,0 +1,67 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * Licensed under the Apache License, Version 2.0 (the "License");
+   * you may not use this file except in compliance with the License.
+   * You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License.
+   * ============LICENSE_END=========================================================
+   */
+    -->
+<!-- index.html -->
+<!DOCTYPE html>
+<html ng-app="myApp">
+   <head>
+      <meta charset="utf-8">
+      <!-- CSS -->
+      <script src="./node_modules/jquery.min.js"></script>
+      <script src="./node_modules/tether.min.js" ></script>
+      <link rel="stylesheet" href="/webjars/bootstrap/3.3.7/css/bootstrap.min.css">  
+      <script src="/webjars/bootstrap/3.3.7/js/bootstrap.min.js"></script>      
+      <link rel="stylesheet" href="/style/sdnc-style.css">
+      <!-- JS -->
+      <!-- load angular,date-time picker,pagination,growl and ui-router -->
+      <script src = "./node_modules/angular.min.js"></script>
+      <script src = "./node_modules/angular-route.min.js"></script>
+      <script src="./node_modules/angular-utils-pagination/dirPagination.js"></script>
+      <script src="./node_modules/ng-csv/build/ng-csv.min.js"></script>     
+      <script src="./node_modules/angular-sanitize.min.js"></script>
+      <link rel="stylesheet" href="./node_modules/angularjs-datetime-picker/angularjs-datetime-picker.css" />
+      <script src="./node_modules/angularjs-datetime-picker/angularjs-datetime-picker.js"></script>
+      <script data-require="jquery@*" data-semver="2.1.4" src="https://code.jquery.com/jquery-2.1.4.js"></script>
+      <script src="./node_modules/angular-utils-pagination/dirPagination.js"></script>
+      <script src="./js/app.js"></script>
+      <script src="./js/sdnc-controller/sdnc-viewreport-controller.js"></script>
+      <script src="./js/sdnc-controller/sdnc-validationTest-controller.js"></script>
+      <script src="./js/sdnc-services/sdnc-viewReport-service.js"></script>
+      <script src="./js/sdnc-services/sdnc-validationTest-service.js"></script>
+      <script src="./node_modules/angular-growl.min.js" ></script>
+      <script src="./node_modules/ng-ip-address/ngIpAddress.min.js" ></script>
+      <link rel="stylesheet" type="text/css" href="./node_modules/angular-growl.min.css">
+      <link rel="stylesheet" href="/style/w3.css">
+   </head>
+   <!-- apply our angular app -->
+   <body>
+   <div class="container">
+      <!-- header page -->
+   <div ng-include="" src="'header.html'"></div>
+      <div style="border-style:ridge;">         
+         <div ng-include="" src="'tabs.html'"></div>
+         <!-- views will be injected here -->
+         <div ng-view></div>
+      </div>  </div>
+      <!-- footer page -->
+       <div width="100%" align="center" ng-include="" src="'footer.html'"></div>
+     
+   </body>
+</html>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/app.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/app.js
new file mode 100644
index 0000000..82fac46
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/app.js
@@ -0,0 +1,47 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+
+// app.js This is first entry point for the application
+// =============================================================================
+var myApp = angular.module('myApp', ['ngRoute', 'ngSanitize', 'ngCsv', 'angularUtils.directives.dirPagination', 'angular-growl','ng-ip-address']);
+
+// configuring our routes 
+// =============================================================================
+myApp.config(['$routeProvider', function($routeProvider) {
+
+	//Called when user select pre validation test from the UI
+    $routeProvider.
+    when('/testValidation', {
+        templateUrl: 'form-validationTest.html',
+        controller: 'TestController'
+    }).
+    when('/', {
+        templateUrl: 'form-validationTest.html',
+        controller: 'TestController'
+    }).
+  //Called when user select view test report from the UI
+    when('/testReports', {
+        templateUrl: 'form-viewReport.html',
+        controller: 'ReportController'
+    }).
+    otherwise({
+        redirectTo: 'form-validationTest.html'
+    });
+}]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js
new file mode 100644
index 0000000..bf7005b
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js
@@ -0,0 +1,207 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+
+myApp.controller('TestController', ['$scope', '$http', 'growl', 'viewReportService', 'validationTestService', function($scope, $http, growl, viewReportService, validationTestService) {
+
+    $scope.showTestReport = false;
+
+    //Input data for validation test dropdown
+    var validationTestList = [{
+            "typeId": 1,
+            "validationType": "Network Layer",
+            "Selected": false
+        }
+        
+    ];
+
+    $scope.validationTestList = validationTestList;
+
+
+    $scope.getselectval = function() {
+        $scope.selectedvalues = 'Name: ' + $scope.selitem.validationType + ' Id: ' + $scope.selitem.typeId;
+    }
+
+    $scope.showError = false;
+    $scope.errorMessage = "";
+    $scope.showSuccess = false;
+    $scope.successMessage = "";
+    $scope.showWarning = false;
+    $scope.warningMessage = "";
+    $scope.showInfo = false;
+    $scope.infoMessage = "";
+    $scope.ShowResult = false;
+    $scope.allowTestSelection = false;
+    $scope.hostNamePattern = /([a-z0-9](.[a-z0-9-]*[a-z0-9]))/;
+
+    //Called when user clicks on runtest button
+    $scope.runTest = function() {
+
+        $scope.showError = false;
+        $scope.vnfSelected = [];
+        $scope.testSelected = [];
+
+        var message = "";
+        for (var i = 0; i < $scope.validationTestList.length; i++) {
+            if ($scope.validationTestList[i].Selected) {
+                var typeId = $scope.validationTestList[i].typeId;
+                var validationType = $scope.validationTestList[i].validationType;
+                message += "typeId: " + typeId + " validationType: " + validationType + "\n";
+                console.log("--TestController::Runtest--", message);
+                var testDetails = {};
+                testDetails.typeId = typeId;
+                testDetails.validationType = validationType;
+                $scope.testSelected.push(testDetails);
+            }
+        }
+        console.log("--TestController::Runtest--", JSON.stringify($scope.testSelected));
+
+        var vnfDetails = {};
+        if ($scope.IPAddress != null && $scope.HostName != null && $scope.testSelected.length >= 1) {
+            vnfDetails.ipAddress = $scope.IPAddress;
+            vnfDetails.hostName = $scope.HostName;
+            $scope.vnfSelected.push(vnfDetails);
+            console.log("--TestController::Runtest--", JSON.stringify($scope.vnfSelected));
+
+            //Call the validation test service with vnfselected and testType as the parameter
+
+            validationTestService.runPretest($scope.vnfSelected, $scope.testSelected).then(function(response) {
+                    console.log("--TestController::runTest--", JSON.stringify(response));
+                    var status = response.status;
+                    var response = response.data;
+                    //in case of success, build the model object to store the service output here
+                    if (status === 200) {
+                        if (response.preTestResponse != null && response.preTestResponse.length >= 1) {
+                            $scope.ShowResult = true;
+                            $scope.createTestModel(response.preTestResponse);
+                            $scope.showMessage(response.preTestResponse);
+                         
+                        } else {
+                            console.log(response);
+                            $scope.showError = true;
+                            $scope.errorMessage = "Something went wrong!!!";
+                            growl.error($scope.errorMessage, {
+                                title: 'Error!'
+                            });
+                        }
+                    } else {
+                        console.log(response);
+                        $scope.showError = true;
+                        $scope.errorMessage = "Pre test validation failed!!! Check the report for more details";
+                        growl.error($scope.errorMessage, {
+                            title: 'Error!'
+                        });
+                    }
+                },
+                function(response) {
+                    console.log("--TestController--", response);
+                });
+        } else {
+            $scope.showError = true;
+            $scope.errorMessage = "Please provide the inputs for VNF and test to be performed!!";
+            growl.error($scope.errorMessage, {
+                title: 'Error!'
+            });
+        }
+
+    };
+    
+    $scope.showMessage=function(data){
+    	
+    	if(angular.isDefined(data) && data.length>=1){
+    		
+    		 angular.forEach(data, function(value, key){
+    	         if(value.status == "unreachable"){
+    	           console.log("--TestController::showMessage--",value.status);
+    	           $scope.showError = true;
+                   $scope.errorMessage = "PreTest validation Failed, Please check logs for further details!!!";
+                   growl.error($scope.errorMessage, {
+                     title: 'Error!'
+                   });
+                 }
+    	         else
+    	        	 {
+    	        	  $scope.showSuccess = true;
+                      $scope.successMessage = "Pre test validation completed!!";
+                      growl.success($scope.successMessage, {
+                          title: 'Success!'
+                      });
+    	        	 }
+    	         
+    		 });
+    		
+    	}   	
+    }
+
+    //Function to build the UI model to be shown
+    $scope.createTestModel = function(result) {
+
+        $scope.showError = false;
+        $scope.showWarning = false;
+        $scope.objPreTestModel = result;
+        $scope.objPreTest = [];
+
+
+        if ($scope.objPreTestModel.length >= 1) {
+            for (var i = 0; i < $scope.objPreTestModel.length; i++) {
+                var objTestReport = {};
+                objTestReport.ipaddress = $scope.objPreTestModel[i].ipaddress;
+                objTestReport.status = $scope.objPreTestModel[i].status;
+                objTestReport.testtype = $scope.objPreTestModel[i].testtype;
+                objTestReport.statistics = $scope.objPreTestModel[i].statistics;
+                objTestReport.avgTime = $scope.objPreTestModel[i].avgTime;
+
+
+                if ($scope.objPreTestModel[i].testtype === "Network Layer") {
+                    if (objTestReport.statistics != null) {
+                        //fetching the statistics to show in progress bar
+                    	
+                        var statistics = objTestReport.statistics;
+                        statistics = statistics.split("%");
+                        objTestReport.statistics = statistics[0];
+                        if (objTestReport.statistics == 0) {
+                            objTestReport.statisticPer = parseInt(objTestReport.statistics) + 50;
+                        } else
+                            objTestReport.statisticPer = objTestReport.statistics;
+                    }
+
+                    //fetching the avg time to show in progress bar
+                    
+                    if (objTestReport.avgTime != null) {
+                        var avgTime = objTestReport.avgTime;
+                        avgTime = avgTime.split("=");
+                        var Testtime = avgTime[1];
+                        objTestReport.avgTime = Testtime.slice(0, -2).trim();
+                        console.log("--TestController::createTestModel--", objTestReport.avgTime);
+                        if (objTestReport.avgTime < 50) {
+                            objTestReport.avgTimePer = parseInt(objTestReport.avgTime) + 10;
+                        } else
+                            objTestReport.avgTimePer = objTestReport.avgTime;
+
+                    }
+                }
+                $scope.objPreTest.push(objTestReport);
+                console.log("--TestController::createTestModel--", JSON.stringify($scope.objPreTest));
+            }
+        }
+       console.log("--TestController::createTestModel::final PreTestModel--" + JSON.stringify($scope.objPreTest));
+
+    }
+
+}]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js
new file mode 100644
index 0000000..62158d5
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js
@@ -0,0 +1,169 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+
+myApp.controller('ReportController', ['$scope', '$http', 'viewReportService', 'growl', function($scope, $http, viewReportService, growl) {
+    $scope.isDisabled = true;
+    $scope.pagination = false;
+    $scope.selectedDevice;
+    $scope.ShowResult = false;
+    $scope.dateValidation = false;
+    $scope.NoSearchResult = false;
+    $scope.showError = false;
+    $scope.errorMessage = "";
+    $scope.showSuccess = false;
+    $scope.successMessage = "";
+    $scope.showWarning = false;
+    $scope.warningMessage = "";
+    $scope.showExecutionDetails = true;
+
+    //THIS FUNCTION WILL BE CALLED WHEN USER CLICK SUBMIT FROM UI
+    $scope.getReports = function(deviceIP, startdate, enddate) { 
+
+        $scope.ShowResult = false;
+        if (new Date(startdate) > new Date(enddate)) {
+            $scope.dateValidation = true;
+            $scope.showError = true;
+            $scope.errorMessage = "Start date cannot be greated than End date";
+            growl.error($scope.errorMessage, {
+                title: 'Error!'
+            });
+            return false;
+        }
+        var date = new Date(startdate);
+        if (angular.isDefined(deviceIP)) {
+            $scope.DeviceIP = deviceIP;
+        }
+        if (angular.isDefined(startdate)) {
+            $scope.startDate = startdate;
+        }
+        if (angular.isDefined(enddate)) {
+            $scope.endDate = enddate;
+        }
+
+        if (deviceIP != null && startdate != null && enddate != null) {
+
+            //service call to fetch the reports start date,end date,test name
+            viewReportService.getData($scope.startDate, $scope.endDate, $scope.DeviceIP).then(function(result) {
+                    console.log("--ReportController::getdata called from controler--", JSON.stringify(result.data));
+                    if (result.status == 200) {
+                        if (result.data != null && result.data.length >= 1) {
+                        	
+                            //in case of success, build the model object to store the service output here
+                            $scope.createTestReportModel(result.data);
+                        } else {
+                            $scope.ShowResult = false;
+                            $scope.showWarning = true;
+                            $scope.warningMessage = "No result found for specified Device name !!";
+                            growl.warning($scope.warningMessage, {
+                                title: 'Warning!'
+                            });
+                        }
+                    } else {
+                        $scope.ShowResult = false;
+                        $scope.showWarning = true;
+                        $scope.warningMessage = "No result found for specified Device name !!";
+                        growl.warning($scope.warningMessage, {
+                            title: 'Warning!'
+                        });
+                    }
+                },
+                function(response) {
+                    console.log("--ReportController::getdata::Error--", response);
+                });
+        }
+    }
+
+
+    //FUNCTION WILL BE CALLED WHEN USER CLICK DOWNLOAD FROM UI
+    $scope.exportToExcel = function(tableId) { // ex: '#my-table'
+        var exportHref = Excel.tableToExcel(tableId, 'export');
+        $timeout(function() {
+            location.href = exportHref;
+        }, 100); // trigger download
+
+        console.log("--ReportController::exportToexcel--");
+    }
+
+    $scope.createTestReportModel = function(result) {
+
+        $scope.showError = false;
+        $scope.showWarning = false;
+        $scope.objTestReportModel = result;
+        $scope.objTestModel = [];
+
+
+        if ($scope.objTestReportModel.length >= 1) {
+            for (var i = 0; i < $scope.objTestReportModel.length; i++) {
+                var objTestReport = {};
+                objTestReport.testid = $scope.objTestReportModel[i].testid;
+                objTestReport.deviceid = $scope.objTestReportModel[i].deviceid;
+                objTestReport.deviceIP = $scope.objTestReportModel[i].deviceIP;
+                objTestReport.result = $scope.objTestReportModel[i].result;
+                objTestReport.timeStamp = $scope.objTestReportModel[i].timeStamp;
+                objTestReport.testname = $scope.objTestReportModel[i].testName;
+
+                var executionDetails = {};
+                $scope.tmp = angular.fromJson($scope.objTestReportModel[i].execuationDetails); 
+                executionDetails = $scope.tmp.output;
+
+                if ($scope.objTestReportModel[i].testName === "Network Layer") {
+                	
+                    //fetching the statistics to show in progress bar
+                    var statistics = executionDetails.statistics;
+                    objTestReport.status = executionDetails.status;
+                    objTestReport.statistics = executionDetails.statistics;
+                    statistics = statistics.split("%");
+                    executionDetails.statistics = statistics[0];
+                    if (executionDetails.statistics == 0) {
+                        executionDetails.statisticPer = parseInt(executionDetails.statistics) + 50;
+                    } else
+                        executionDetails.statisticPer = executionDetails.statistics;
+
+                    console.log("--ReportController::CreateTestReportModel--", executionDetails.statistics);
+
+                    //fetching the avg time to show in progress bar
+                    
+                    var avgTime = executionDetails.avgTime;
+                    objTestReport.avgTime = executionDetails.avgTime;
+                    avgTime = avgTime.split("=");
+                    var Testtime = avgTime[1];
+                    executionDetails.avgTime = Testtime.slice(0, -2).trim();
+                    console.log("--ReportController::CreateTestReportModel--", executionDetails.avgTime);
+                    if (executionDetails.avgTime < 50) {
+                        executionDetails.avgTimePer = parseInt(executionDetails.avgTime) + 10;
+                    } else
+                        executionDetails.avgTimePer = executionDetails.avgTime;
+
+                }
+
+
+                objTestReport.executionDetails = executionDetails;
+                $scope.objTestModel.push(objTestReport);
+                console.log("--ReportController::CreateTestReportModel--", JSON.stringify($scope.objTestModel));
+
+            }
+            $scope.ShowResult = true;
+            $scope.pagination = true;
+        }
+        console.log("--ReportController::createTestReportModel::final TestReportModel--" + JSON.stringify($scope.objTestModel));
+        $scope.csvOrder = ['testname', 'deviceIP', 'timeStamp', 'status', 'statistics', 'avgTime', 'result'];
+
+    }
+}]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js
new file mode 100644
index 0000000..aa985ac
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js
@@ -0,0 +1,62 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+myApp.service('validationTestService', ['$http', function($http) {
+   
+    this.runPretest = function(vnfList, validationTestType) {
+
+
+        var data = {};
+        data.vnfList = vnfList;
+        data.validationTestType = validationTestType;
+
+        var config = {
+            params: data,
+            headers: {
+                'Accept': 'application/json'
+            }
+        };
+        
+        console.log("validationTestService::runPretest::config", JSON.stringify(config));
+
+        // Call the pre validation service
+        var request = {
+            method: 'POST',
+            url: '/runtest',
+            data: data,
+            headers: {
+                'Content-Type': "application/json"
+            }
+        };
+
+        // // SEND VNF FOR VALIDATION
+        return $http(request)
+            .then(function(response) {
+                    console.log("---validationTestService::runPretest::Response---" + JSON.stringify(response));
+                    return response;
+                },
+                function(response) {
+                    console.log("--validationTestService::Status Code--", response.status);
+                    return response;
+                });
+
+
+    }
+
+}]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js
new file mode 100644
index 0000000..de22ff3
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js
@@ -0,0 +1,53 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+
+myApp.service('viewReportService', ['$http', function($http) {
+    this.getData = function(startDate, endDate, deviceName) {
+
+        var data = {};
+        if (startDate != null && endDate != null && deviceName != null) {
+
+            data.startdate = startDate;
+            data.enddate = endDate;
+            data.devicename = deviceName;
+
+        }
+        var config = {
+            params: '',
+            headers: {
+                'Accept': 'application/json'
+            }
+        };
+
+        var sdate = new Date(startDate);
+        var edate = new Date(endDate);
+        
+        var objTestList = {};
+        
+        return $http.get('/findReportByDeviceIP/'+sdate+'/'+edate+'/'+deviceName,config)
+            .then(function(result) {
+                console.log("--viewReportService::getdata::TestResponse--", JSON.stringify(result));
+                objTestList = result.data;
+                console.log("--viewReportService::getdata::TestResponse--", +JSON.stringify(objTestList));
+                return result;
+            });
+    };
+
+}]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-growl.min.css b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-growl.min.css
new file mode 100644
index 0000000..4b326d1
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-growl.min.css
@@ -0,0 +1,7 @@
+/**
+ * angular-growl - v0.4.0 - 2013-11-19
+ * https://github.com/marcorinck/angular-growl
+ * Copyright (c) 2013 Marco Rinck; Licensed MIT
+ */
+
+.growl{position:fixed;top:10px;right:10px;float:right;width:250px}.growl-item.ng-enter,.growl-item.ng-leave{-webkit-transition:.5s linear all;-moz-transition:.5s linear all;-o-transition:.5s linear all;transition:.5s linear all}.growl-item.ng-enter,.growl-item.ng-leave.ng-leave-active{opacity:0}.growl-item.ng-leave,.growl-item.ng-enter.ng-enter-active{opacity:1}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-growl.min.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-growl.min.js
new file mode 100644
index 0000000..e07b22b
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-growl.min.js
@@ -0,0 +1,6 @@
+/**
+ * angular-growl - v0.4.0 - 2013-11-19
+ * https://github.com/marcorinck/angular-growl
+ * Copyright (c) 2013 Marco Rinck; Licensed MIT
+ */
+angular.module("angular-growl",[]),angular.module("angular-growl").directive("growl",["$rootScope",function(a){"use strict";return{restrict:"A",template:'<div class="growl">	<div class="growl-item alert" ng-repeat="message in messages" ng-class="computeClasses(message)">		<button type="button" class="close" ng-click="deleteMessage(message)">&times;</button>       <div ng-switch="message.enableHtml">           <div ng-switch-when="true" ng-bind-html="message.text"></div>           <div ng-switch-default ng-bind="message.text"></div>       </div>	</div></div>',replace:!1,scope:!0,controller:["$scope","$timeout","growl",function(b,c,d){function e(a){b.messages.push(a),a.ttl&&-1!==a.ttl&&c(function(){b.deleteMessage(a)},a.ttl)}var f=d.onlyUnique();b.messages=[],a.$on("growlMessage",function(a,c){var d;f?(angular.forEach(b.messages,function(a){c.text===a.text&&c.severity===a.severity&&(d=!0)}),d||e(c)):e(c)}),b.deleteMessage=function(a){var c=b.messages.indexOf(a);c>-1&&b.messages.splice(c,1)},b.computeClasses=function(a){return{"alert-success":"success"===a.severity,"alert-error":"error"===a.severity,"alert-danger":"error"===a.severity,"alert-info":"info"===a.severity,"alert-warning":"warn"===a.severity}}}]}}]),angular.module("angular-growl").provider("growl",function(){"use strict";var a=null,b=!1,c="messages",d="text",e="severity",f=!0;this.globalTimeToLive=function(b){a=b},this.globalEnableHtml=function(a){b=a},this.messagesKey=function(a){c=a},this.messageTextKey=function(a){d=a},this.messageSeverityKey=function(a){e=a},this.onlyUniqueMessages=function(a){f=a},this.serverMessagesInterceptor=["$q","growl",function(a,b){function d(a){a.data[c]&&a.data[c].length>0&&b.addServerMessages(a.data[c])}function e(a){return d(a),a}function f(b){return d(b),a.reject(b)}return function(a){return a.then(e,f)}}],this.$get=["$rootScope","$filter",function(c,g){function h(a){p&&(a.text=p(a.text)),c.$broadcast("growlMessage",a)}function i(c,d,e){var f,g=d||{};f={text:c,severity:e,ttl:g.ttl||a,enableHtml:g.enableHtml||b},h(f)}function j(a,b){i(a,b,"warn")}function k(a,b){i(a,b,"error")}function l(a,b){i(a,b,"info")}function m(a,b){i(a,b,"success")}function n(a){var b,c,f,g;for(g=a.length,b=0;g>b;b++)if(c=a[b],c[d]&&c[e]){switch(c[e]){case"warn":f="warn";break;case"success":f="success";break;case"info":f="info";break;case"error":f="error"}i(c[d],void 0,f)}}function o(){return f}var p;try{p=g("translate")}catch(q){}return{addWarnMessage:j,addErrorMessage:k,addInfoMessage:l,addSuccessMessage:m,addServerMessages:n,onlyUnique:o}}]});
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-route.min.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-route.min.js
new file mode 100644
index 0000000..a30b8ab
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-route.min.js
@@ -0,0 +1,15 @@
+/*
+ AngularJS v1.3.14
+ (c) 2010-2014 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(q,d,C){'use strict';function v(r,k,h){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,f,b,c,y){function z(){l&&(h.cancel(l),l=null);m&&(m.$destroy(),m=null);n&&(l=h.leave(n),l.then(function(){l=null}),n=null)}function x(){var b=r.current&&r.current.locals;if(d.isDefined(b&&b.$template)){var b=a.$new(),c=r.current;n=y(b,function(b){h.enter(b,null,n||f).then(function(){!d.isDefined(t)||t&&!a.$eval(t)||k()});z()});m=c.scope=b;m.$emit("$viewContentLoaded");
+m.$eval(w)}else z()}var m,n,l,t=b.autoscroll,w=b.onload||"";a.$on("$routeChangeSuccess",x);x()}}}function A(d,k,h){return{restrict:"ECA",priority:-400,link:function(a,f){var b=h.current,c=b.locals;f.html(c.$template);var y=d(f.contents());b.controller&&(c.$scope=a,c=k(b.controller,c),b.controllerAs&&(a[b.controllerAs]=c),f.data("$ngControllerController",c),f.children().data("$ngControllerController",c));y(a)}}}q=d.module("ngRoute",["ng"]).provider("$route",function(){function r(a,f){return d.extend(Object.create(a),
+f)}function k(a,d){var b=d.caseInsensitiveMatch,c={originalPath:a,regexp:a},h=c.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,d,b,c){a="?"===c?c:null;c="*"===c?c:null;h.push({name:b,optional:!!a});d=d||"";return""+(a?"":d)+"(?:"+(a?d:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");c.regexp=new RegExp("^"+a+"$",b?"i":"");return c}var h={};this.when=function(a,f){var b=d.copy(f);d.isUndefined(b.reloadOnSearch)&&(b.reloadOnSearch=!0);
+d.isUndefined(b.caseInsensitiveMatch)&&(b.caseInsensitiveMatch=this.caseInsensitiveMatch);h[a]=d.extend(b,a&&k(a,b));if(a){var c="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";h[c]=d.extend({redirectTo:a},k(c,b))}return this};this.caseInsensitiveMatch=!1;this.otherwise=function(a){"string"===typeof a&&(a={redirectTo:a});this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce",function(a,f,b,c,k,q,x){function m(b){var e=s.current;
+(v=(p=l())&&e&&p.$$route===e.$$route&&d.equals(p.pathParams,e.pathParams)&&!p.reloadOnSearch&&!w)||!e&&!p||a.$broadcast("$routeChangeStart",p,e).defaultPrevented&&b&&b.preventDefault()}function n(){var u=s.current,e=p;if(v)u.params=e.params,d.copy(u.params,b),a.$broadcast("$routeUpdate",u);else if(e||u)w=!1,(s.current=e)&&e.redirectTo&&(d.isString(e.redirectTo)?f.path(t(e.redirectTo,e.params)).search(e.params).replace():f.url(e.redirectTo(e.pathParams,f.path(),f.search())).replace()),c.when(e).then(function(){if(e){var a=
+d.extend({},e.resolve),b,g;d.forEach(a,function(b,e){a[e]=d.isString(b)?k.get(b):k.invoke(b,null,null,e)});d.isDefined(b=e.template)?d.isFunction(b)&&(b=b(e.params)):d.isDefined(g=e.templateUrl)&&(d.isFunction(g)&&(g=g(e.params)),g=x.getTrustedResourceUrl(g),d.isDefined(g)&&(e.loadedTemplateUrl=g,b=q(g)));d.isDefined(b)&&(a.$template=b);return c.all(a)}}).then(function(c){e==s.current&&(e&&(e.locals=c,d.copy(e.params,b)),a.$broadcast("$routeChangeSuccess",e,u))},function(b){e==s.current&&a.$broadcast("$routeChangeError",
+e,u,b)})}function l(){var a,b;d.forEach(h,function(c,h){var g;if(g=!b){var k=f.path();g=c.keys;var m={};if(c.regexp)if(k=c.regexp.exec(k)){for(var l=1,n=k.length;l<n;++l){var p=g[l-1],q=k[l];p&&q&&(m[p.name]=q)}g=m}else g=null;else g=null;g=a=g}g&&(b=r(c,{params:d.extend({},f.search(),a),pathParams:a}),b.$$route=c)});return b||h[null]&&r(h[null],{params:{},pathParams:{}})}function t(a,b){var c=[];d.forEach((a||"").split(":"),function(a,d){if(0===d)c.push(a);else{var f=a.match(/(\w+)(?:[?*])?(.*)/),
+h=f[1];c.push(b[h]);c.push(f[2]||"");delete b[h]}});return c.join("")}var w=!1,p,v,s={routes:h,reload:function(){w=!0;a.$evalAsync(function(){m();n()})},updateParams:function(a){if(this.current&&this.current.$$route)a=d.extend({},this.current.params,a),f.path(t(this.current.$$route.originalPath,a)),f.search(a);else throw B("norout");}};a.$on("$locationChangeStart",m);a.$on("$locationChangeSuccess",n);return s}]});var B=d.$$minErr("ngRoute");q.provider("$routeParams",function(){this.$get=function(){return{}}});
+q.directive("ngView",v);q.directive("ngView",A);v.$inject=["$route","$anchorScroll","$animate"];A.$inject=["$compile","$controller","$route"]})(window,window.angular);
+//# sourceMappingURL=angular-route.min.js.map
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-sanitize.min.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-sanitize.min.js
new file mode 100644
index 0000000..65fc5a4
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-sanitize.min.js
@@ -0,0 +1,16 @@
+/*
+ AngularJS v1.3.14
+ (c) 2010-2014 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(n,h,p){'use strict';function E(a){var e=[];r(e,h.noop).chars(a);return e.join("")}function g(a){var e={};a=a.split(",");var d;for(d=0;d<a.length;d++)e[a[d]]=!0;return e}function F(a,e){function d(a,b,d,l){b=h.lowercase(b);if(s[b])for(;f.last()&&t[f.last()];)c("",f.last());u[b]&&f.last()==b&&c("",b);(l=v[b]||!!l)||f.push(b);var m={};d.replace(G,function(a,b,e,c,d){m[b]=q(e||c||d||"")});e.start&&e.start(b,m,l)}function c(a,b){var c=0,d;if(b=h.lowercase(b))for(c=f.length-1;0<=c&&f[c]!=b;c--);
+if(0<=c){for(d=f.length-1;d>=c;d--)e.end&&e.end(f[d]);f.length=c}}"string"!==typeof a&&(a=null===a||"undefined"===typeof a?"":""+a);var b,k,f=[],m=a,l;for(f.last=function(){return f[f.length-1]};a;){l="";k=!0;if(f.last()&&w[f.last()])a=a.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(a,b){b=b.replace(H,"$1").replace(I,"$1");e.chars&&e.chars(q(b));return""}),c("",f.last());else{if(0===a.indexOf("\x3c!--"))b=a.indexOf("--",4),0<=b&&a.lastIndexOf("--\x3e",b)===b&&(e.comment&&
+e.comment(a.substring(4,b)),a=a.substring(b+3),k=!1);else if(x.test(a)){if(b=a.match(x))a=a.replace(b[0],""),k=!1}else if(J.test(a)){if(b=a.match(y))a=a.substring(b[0].length),b[0].replace(y,c),k=!1}else K.test(a)&&((b=a.match(z))?(b[4]&&(a=a.substring(b[0].length),b[0].replace(z,d)),k=!1):(l+="<",a=a.substring(1)));k&&(b=a.indexOf("<"),l+=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),e.chars&&e.chars(q(l)))}if(a==m)throw L("badparse",a);m=a}c()}function q(a){if(!a)return"";A.innerHTML=a.replace(/</g,
+"&lt;");return A.textContent}function B(a){return a.replace(/&/g,"&amp;").replace(M,function(a){var d=a.charCodeAt(0);a=a.charCodeAt(1);return"&#"+(1024*(d-55296)+(a-56320)+65536)+";"}).replace(N,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function r(a,e){var d=!1,c=h.bind(a,a.push);return{start:function(a,k,f){a=h.lowercase(a);!d&&w[a]&&(d=a);d||!0!==C[a]||(c("<"),c(a),h.forEach(k,function(d,f){var k=h.lowercase(f),g="img"===a&&"src"===k||"background"===
+k;!0!==O[k]||!0===D[k]&&!e(d,g)||(c(" "),c(f),c('="'),c(B(d)),c('"'))}),c(f?"/>":">"))},end:function(a){a=h.lowercase(a);d||!0!==C[a]||(c("</"),c(a),c(">"));a==d&&(d=!1)},chars:function(a){d||c(B(a))}}}var L=h.$$minErr("$sanitize"),z=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,y=/^<\/\s*([\w:-]+)[^>]*>/,G=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,K=/^</,J=/^<\//,H=/\x3c!--(.*?)--\x3e/g,x=/<!DOCTYPE([^>]*?)>/i,
+I=/<!\[CDATA\[(.*?)]]\x3e/g,M=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,N=/([^\#-~| |!])/g,v=g("area,br,col,hr,img,wbr");n=g("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr");p=g("rp,rt");var u=h.extend({},p,n),s=h.extend({},n,g("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),t=h.extend({},p,g("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var"));
+n=g("animate,animateColor,animateMotion,animateTransform,circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,set,stop,svg,switch,text,title,tspan,use");var w=g("script,style"),C=h.extend({},v,s,t,u,n),D=g("background,cite,href,longdesc,src,usemap,xlink:href");n=g("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,target,title,type,valign,value,vspace,width");
+p=g("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,attributeName,attributeType,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan");
+var O=h.extend({},D,p,n),A=document.createElement("pre");h.module("ngSanitize",[]).provider("$sanitize",function(){this.$get=["$$sanitizeUri",function(a){return function(e){var d=[];F(e,r(d,function(c,b){return!/^unsafe/.test(a(c,b))}));return d.join("")}}]});h.module("ngSanitize").filter("linky",["$sanitize",function(a){var e=/((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/,d=/^mailto:/;return function(c,b){function k(a){a&&g.push(E(a))}function f(a,c){g.push("<a ");
+h.isDefined(b)&&g.push('target="',b,'" ');g.push('href="',a.replace(/"/g,"&quot;"),'">');k(c);g.push("</a>")}if(!c)return c;for(var m,l=c,g=[],n,p;m=l.match(e);)n=m[0],m[2]||m[4]||(n=(m[3]?"http://":"mailto:")+n),p=m.index,k(l.substr(0,p)),f(n,m[0].replace(d,"")),l=l.substring(p+m[0].length);k(l);return a(g.join(""))}}])})(window,window.angular);
+//# sourceMappingURL=angular-sanitize.min.js.map
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-utils-pagination/dirPagination.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-utils-pagination/dirPagination.js
new file mode 100644
index 0000000..a1a7265
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular-utils-pagination/dirPagination.js
@@ -0,0 +1,639 @@
+/**
+ * dirPagination - AngularJS module for paginating (almost) anything.
+ *
+ *
+ * Credits
+ * =======
+ *
+ * Daniel Tabuenca: https://groups.google.com/d/msg/angular/an9QpzqIYiM/r8v-3W1X5vcJ
+ * for the idea on how to dynamically invoke the ng-repeat directive.
+ *
+ * I borrowed a couple of lines and a few attribute names from the AngularUI Bootstrap project:
+ * https://github.com/angular-ui/bootstrap/blob/master/src/pagination/pagination.js
+ *
+ * Copyright 2014 Michael Bromley <michael@michaelbromley.co.uk>
+ */
+
+(function() {
+
+    /**
+     * Config
+     */
+    var moduleName = 'angularUtils.directives.dirPagination';
+    var DEFAULT_ID = '__default';
+
+    /**
+     * Module
+     */
+    angular.module(moduleName, [])
+        .directive('dirPaginate', ['$compile', '$parse', 'paginationService', dirPaginateDirective])
+        .directive('dirPaginateNoCompile', noCompileDirective)
+        .directive('dirPaginationControls', ['paginationService', 'paginationTemplate', dirPaginationControlsDirective])
+        .filter('itemsPerPage', ['paginationService', itemsPerPageFilter])
+        .service('paginationService', paginationService)
+        .provider('paginationTemplate', paginationTemplateProvider)
+        .run(['$templateCache',dirPaginationControlsTemplateInstaller]);
+
+    function dirPaginateDirective($compile, $parse, paginationService) {
+
+        return  {
+            terminal: true,
+            multiElement: true,
+            priority: 100,
+            compile: dirPaginationCompileFn
+        };
+
+        function dirPaginationCompileFn(tElement, tAttrs){
+
+            var expression = tAttrs.dirPaginate;
+            // regex taken directly from https://github.com/angular/angular.js/blob/v1.4.x/src/ng/directive/ngRepeat.js#L339
+            var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
+
+            var filterPattern = /\|\s*itemsPerPage\s*:\s*(.*\(\s*\w*\)|([^\)]*?(?=\s+as\s+))|[^\)]*)/;
+            if (match[2].match(filterPattern) === null) {
+                throw 'pagination directive: the \'itemsPerPage\' filter must be set.';
+            }
+            var itemsPerPageFilterRemoved = match[2].replace(filterPattern, '');
+            var collectionGetter = $parse(itemsPerPageFilterRemoved);
+
+            addNoCompileAttributes(tElement);
+
+            // If any value is specified for paginationId, we register the un-evaluated expression at this stage for the benefit of any
+            // dir-pagination-controls directives that may be looking for this ID.
+            var rawId = tAttrs.paginationId || DEFAULT_ID;
+            paginationService.registerInstance(rawId);
+
+            return function dirPaginationLinkFn(scope, element, attrs){
+
+                // Now that we have access to the `scope` we can interpolate any expression given in the paginationId attribute and
+                // potentially register a new ID if it evaluates to a different value than the rawId.
+                var paginationId = $parse(attrs.paginationId)(scope) || attrs.paginationId || DEFAULT_ID;
+                
+                // (TODO: this seems sound, but I'm reverting as many bug reports followed it's introduction in 0.11.0.
+                // Needs more investigation.)
+                // In case rawId != paginationId we deregister using rawId for the sake of general cleanliness
+                // before registering using paginationId
+                // paginationService.deregisterInstance(rawId);
+                paginationService.registerInstance(paginationId);
+
+                var repeatExpression = getRepeatExpression(expression, paginationId);
+                addNgRepeatToElement(element, attrs, repeatExpression);
+
+                removeTemporaryAttributes(element);
+                var compiled =  $compile(element);
+
+                var currentPageGetter = makeCurrentPageGetterFn(scope, attrs, paginationId);
+                paginationService.setCurrentPageParser(paginationId, currentPageGetter, scope);
+
+                if (typeof attrs.totalItems !== 'undefined') {
+                    paginationService.setAsyncModeTrue(paginationId);
+                    scope.$watch(function() {
+                        return $parse(attrs.totalItems)(scope);
+                    }, function (result) {
+                        if (0 <= result) {
+                            paginationService.setCollectionLength(paginationId, result);
+                        }
+                    });
+                } else {
+                    paginationService.setAsyncModeFalse(paginationId);
+                    scope.$watchCollection(function() {
+                        return collectionGetter(scope);
+                    }, function(collection) {
+                        if (collection) {
+                            var collectionLength = (collection instanceof Array) ? collection.length : Object.keys(collection).length;
+                            paginationService.setCollectionLength(paginationId, collectionLength);
+                        }
+                    });
+                }
+
+                // Delegate to the link function returned by the new compilation of the ng-repeat
+                compiled(scope);
+                 
+                // (TODO: Reverting this due to many bug reports in v 0.11.0. Needs investigation as the
+                // principle is sound)
+                // When the scope is destroyed, we make sure to remove the reference to it in paginationService
+                // so that it can be properly garbage collected
+                // scope.$on('$destroy', function destroyDirPagination() {
+                //     paginationService.deregisterInstance(paginationId);
+                // });
+            };
+        }
+
+        /**
+         * If a pagination id has been specified, we need to check that it is present as the second argument passed to
+         * the itemsPerPage filter. If it is not there, we add it and return the modified expression.
+         *
+         * @param expression
+         * @param paginationId
+         * @returns {*}
+         */
+        function getRepeatExpression(expression, paginationId) {
+            var repeatExpression,
+                idDefinedInFilter = !!expression.match(/(\|\s*itemsPerPage\s*:[^|]*:[^|]*)/);
+
+            if (paginationId !== DEFAULT_ID && !idDefinedInFilter) {
+                repeatExpression = expression.replace(/(\|\s*itemsPerPage\s*:\s*[^|\s]*)/, "$1 : '" + paginationId + "'");
+            } else {
+                repeatExpression = expression;
+            }
+
+            return repeatExpression;
+        }
+
+        /**
+         * Adds the ng-repeat directive to the element. In the case of multi-element (-start, -end) it adds the
+         * appropriate multi-element ng-repeat to the first and last element in the range.
+         * @param element
+         * @param attrs
+         * @param repeatExpression
+         */
+        function addNgRepeatToElement(element, attrs, repeatExpression) {
+            if (element[0].hasAttribute('dir-paginate-start') || element[0].hasAttribute('data-dir-paginate-start')) {
+                // using multiElement mode (dir-paginate-start, dir-paginate-end)
+                attrs.$set('ngRepeatStart', repeatExpression);
+                element.eq(element.length - 1).attr('ng-repeat-end', true);
+            } else {
+                attrs.$set('ngRepeat', repeatExpression);
+            }
+        }
+
+        /**
+         * Adds the dir-paginate-no-compile directive to each element in the tElement range.
+         * @param tElement
+         */
+        function addNoCompileAttributes(tElement) {
+            angular.forEach(tElement, function(el) {
+                if (el.nodeType === 1) {
+                    angular.element(el).attr('dir-paginate-no-compile', true);
+                }
+            });
+        }
+
+        /**
+         * Removes the variations on dir-paginate (data-, -start, -end) and the dir-paginate-no-compile directives.
+         * @param element
+         */
+        function removeTemporaryAttributes(element) {
+            angular.forEach(element, function(el) {
+                if (el.nodeType === 1) {
+                    angular.element(el).removeAttr('dir-paginate-no-compile');
+                }
+            });
+            element.eq(0).removeAttr('dir-paginate-start').removeAttr('dir-paginate').removeAttr('data-dir-paginate-start').removeAttr('data-dir-paginate');
+            element.eq(element.length - 1).removeAttr('dir-paginate-end').removeAttr('data-dir-paginate-end');
+        }
+
+        /**
+         * Creates a getter function for the current-page attribute, using the expression provided or a default value if
+         * no current-page expression was specified.
+         *
+         * @param scope
+         * @param attrs
+         * @param paginationId
+         * @returns {*}
+         */
+        function makeCurrentPageGetterFn(scope, attrs, paginationId) {
+            var currentPageGetter;
+            if (attrs.currentPage) {
+                currentPageGetter = $parse(attrs.currentPage);
+            } else {
+                // If the current-page attribute was not set, we'll make our own.
+                // Replace any non-alphanumeric characters which might confuse
+                // the $parse service and give unexpected results.
+                // See https://github.com/michaelbromley/angularUtils/issues/233
+                var defaultCurrentPage = (paginationId + '__currentPage').replace(/\W/g, '_');
+                scope[defaultCurrentPage] = 1;
+                currentPageGetter = $parse(defaultCurrentPage);
+            }
+            return currentPageGetter;
+        }
+    }
+
+    /**
+     * This is a helper directive that allows correct compilation when in multi-element mode (ie dir-paginate-start, dir-paginate-end).
+     * It is dynamically added to all elements in the dir-paginate compile function, and it prevents further compilation of
+     * any inner directives. It is then removed in the link function, and all inner directives are then manually compiled.
+     */
+    function noCompileDirective() {
+        return {
+            priority: 5000,
+            terminal: true
+        };
+    }
+
+    function dirPaginationControlsTemplateInstaller($templateCache) {
+        $templateCache.put('angularUtils.directives.dirPagination.template', '<ul class="pagination" ng-if="1 < pages.length || !autoHide"><li ng-if="boundaryLinks" ng-class="{ disabled : pagination.current == 1 }"><a href="" ng-click="setCurrent(1)">&laquo;</a></li><li ng-if="directionLinks" ng-class="{ disabled : pagination.current == 1 }"><a href="" ng-click="setCurrent(pagination.current - 1)">&lsaquo;</a></li><li ng-repeat="pageNumber in pages track by tracker(pageNumber, $index)" ng-class="{ active : pagination.current == pageNumber, disabled : pageNumber == \'...\' || ( ! autoHide && pages.length === 1 ) }"><a href="" ng-click="setCurrent(pageNumber)">{{ pageNumber }}</a></li><li ng-if="directionLinks" ng-class="{ disabled : pagination.current == pagination.last }"><a href="" ng-click="setCurrent(pagination.current + 1)">&rsaquo;</a></li><li ng-if="boundaryLinks"  ng-class="{ disabled : pagination.current == pagination.last }"><a href="" ng-click="setCurrent(pagination.last)">&raquo;</a></li></ul>');
+    }
+
+    function dirPaginationControlsDirective(paginationService, paginationTemplate) {
+
+        var numberRegex = /^\d+$/;
+
+        var DDO = {
+            restrict: 'AE',
+            scope: {
+                maxSize: '=?',
+                onPageChange: '&?',
+                paginationId: '=?',
+                autoHide: '=?'
+            },
+            link: dirPaginationControlsLinkFn
+        };
+
+        // We need to check the paginationTemplate service to see whether a template path or
+        // string has been specified, and add the `template` or `templateUrl` property to
+        // the DDO as appropriate. The order of priority to decide which template to use is
+        // (highest priority first):
+        // 1. paginationTemplate.getString()
+        // 2. attrs.templateUrl
+        // 3. paginationTemplate.getPath()
+        var templateString = paginationTemplate.getString();
+        if (templateString !== undefined) {
+            DDO.template = templateString;
+        } else {
+            DDO.templateUrl = function(elem, attrs) {
+                return attrs.templateUrl || paginationTemplate.getPath();
+            };
+        }
+        return DDO;
+
+        function dirPaginationControlsLinkFn(scope, element, attrs) {
+
+            // rawId is the un-interpolated value of the pagination-id attribute. This is only important when the corresponding dir-paginate directive has
+            // not yet been linked (e.g. if it is inside an ng-if block), and in that case it prevents this controls directive from assuming that there is
+            // no corresponding dir-paginate directive and wrongly throwing an exception.
+            var rawId = attrs.paginationId ||  DEFAULT_ID;
+            var paginationId = scope.paginationId || attrs.paginationId ||  DEFAULT_ID;
+
+            if (!paginationService.isRegistered(paginationId) && !paginationService.isRegistered(rawId)) {
+                var idMessage = (paginationId !== DEFAULT_ID) ? ' (id: ' + paginationId + ') ' : ' ';
+                if (window.console) {
+                    console.warn('Pagination directive: the pagination controls' + idMessage + 'cannot be used without the corresponding pagination directive, which was not found at link time.');
+                }
+            }
+
+            if (!scope.maxSize) { scope.maxSize = 9; }
+            scope.autoHide = scope.autoHide === undefined ? true : scope.autoHide;
+            scope.directionLinks = angular.isDefined(attrs.directionLinks) ? scope.$parent.$eval(attrs.directionLinks) : true;
+            scope.boundaryLinks = angular.isDefined(attrs.boundaryLinks) ? scope.$parent.$eval(attrs.boundaryLinks) : false;
+
+            var paginationRange = Math.max(scope.maxSize, 5);
+            scope.pages = [];
+            scope.pagination = {
+                last: 1,
+                current: 1
+            };
+            scope.range = {
+                lower: 1,
+                upper: 1,
+                total: 1
+            };
+
+            scope.$watch('maxSize', function(val) {
+                if (val) {
+                    paginationRange = Math.max(scope.maxSize, 5);
+                    generatePagination();
+                }
+            });
+
+            scope.$watch(function() {
+                if (paginationService.isRegistered(paginationId)) {
+                    return (paginationService.getCollectionLength(paginationId) + 1) * paginationService.getItemsPerPage(paginationId);
+                }
+            }, function(length) {
+                if (0 < length) {
+                    generatePagination();
+                }
+            });
+
+            scope.$watch(function() {
+                if (paginationService.isRegistered(paginationId)) {
+                    return (paginationService.getItemsPerPage(paginationId));
+                }
+            }, function(current, previous) {
+                if (current != previous && typeof previous !== 'undefined') {
+                    goToPage(scope.pagination.current);
+                }
+            });
+
+            scope.$watch(function() {
+                if (paginationService.isRegistered(paginationId)) {
+                    return paginationService.getCurrentPage(paginationId);
+                }
+            }, function(currentPage, previousPage) {
+                if (currentPage != previousPage) {
+                    goToPage(currentPage);
+                }
+            });
+
+            scope.setCurrent = function(num) {
+                if (paginationService.isRegistered(paginationId) && isValidPageNumber(num)) {
+                    num = parseInt(num, 10);
+                    paginationService.setCurrentPage(paginationId, num);
+                }
+            };
+
+            /**
+             * Custom "track by" function which allows for duplicate "..." entries on long lists,
+             * yet fixes the problem of wrongly-highlighted links which happens when using
+             * "track by $index" - see https://github.com/michaelbromley/angularUtils/issues/153
+             * @param id
+             * @param index
+             * @returns {string}
+             */
+            scope.tracker = function(id, index) {
+                return id + '_' + index;
+            };
+
+            function goToPage(num) {
+                if (paginationService.isRegistered(paginationId) && isValidPageNumber(num)) {
+                    var oldPageNumber = scope.pagination.current;
+
+                    scope.pages = generatePagesArray(num, paginationService.getCollectionLength(paginationId), paginationService.getItemsPerPage(paginationId), paginationRange);
+                    scope.pagination.current = num;
+                    updateRangeValues();
+
+                    // if a callback has been set, then call it with the page number as the first argument
+                    // and the previous page number as a second argument
+                    if (scope.onPageChange) {
+                        scope.onPageChange({
+                            newPageNumber : num,
+                            oldPageNumber : oldPageNumber
+                        });
+                    }
+                }
+            }
+
+            function generatePagination() {
+                if (paginationService.isRegistered(paginationId)) {
+                    var page = parseInt(paginationService.getCurrentPage(paginationId)) || 1;
+                    scope.pages = generatePagesArray(page, paginationService.getCollectionLength(paginationId), paginationService.getItemsPerPage(paginationId), paginationRange);
+                    scope.pagination.current = page;
+                    scope.pagination.last = scope.pages[scope.pages.length - 1];
+                    if (scope.pagination.last < scope.pagination.current) {
+                        scope.setCurrent(scope.pagination.last);
+                    } else {
+                        updateRangeValues();
+                    }
+                }
+            }
+
+            /**
+             * This function updates the values (lower, upper, total) of the `scope.range` object, which can be used in the pagination
+             * template to display the current page range, e.g. "showing 21 - 40 of 144 results";
+             */
+            function updateRangeValues() {
+                if (paginationService.isRegistered(paginationId)) {
+                    var currentPage = paginationService.getCurrentPage(paginationId),
+                        itemsPerPage = paginationService.getItemsPerPage(paginationId),
+                        totalItems = paginationService.getCollectionLength(paginationId);
+
+                    scope.range.lower = (currentPage - 1) * itemsPerPage + 1;
+                    scope.range.upper = Math.min(currentPage * itemsPerPage, totalItems);
+                    scope.range.total = totalItems;
+                }
+            }
+            function isValidPageNumber(num) {
+                return (numberRegex.test(num) && (0 < num && num <= scope.pagination.last));
+            }
+        }
+
+        /**
+         * Generate an array of page numbers (or the '...' string) which is used in an ng-repeat to generate the
+         * links used in pagination
+         *
+         * @param currentPage
+         * @param rowsPerPage
+         * @param paginationRange
+         * @param collectionLength
+         * @returns {Array}
+         */
+        function generatePagesArray(currentPage, collectionLength, rowsPerPage, paginationRange) {
+            var pages = [];
+            var totalPages = Math.ceil(collectionLength / rowsPerPage);
+            var halfWay = Math.ceil(paginationRange / 2);
+            var position;
+
+            if (currentPage <= halfWay) {
+                position = 'start';
+            } else if (totalPages - halfWay < currentPage) {
+                position = 'end';
+            } else {
+                position = 'middle';
+            }
+
+            var ellipsesNeeded = paginationRange < totalPages;
+            var i = 1;
+            while (i <= totalPages && i <= paginationRange) {
+                var pageNumber = calculatePageNumber(i, currentPage, paginationRange, totalPages);
+
+                var openingEllipsesNeeded = (i === 2 && (position === 'middle' || position === 'end'));
+                var closingEllipsesNeeded = (i === paginationRange - 1 && (position === 'middle' || position === 'start'));
+                if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) {
+                    pages.push('...');
+                } else {
+                    pages.push(pageNumber);
+                }
+                i ++;
+            }
+            return pages;
+        }
+
+        /**
+         * Given the position in the sequence of pagination links [i], figure out what page number corresponds to that position.
+         *
+         * @param i
+         * @param currentPage
+         * @param paginationRange
+         * @param totalPages
+         * @returns {*}
+         */
+        function calculatePageNumber(i, currentPage, paginationRange, totalPages) {
+            var halfWay = Math.ceil(paginationRange/2);
+            if (i === paginationRange) {
+                return totalPages;
+            } else if (i === 1) {
+                return i;
+            } else if (paginationRange < totalPages) {
+                if (totalPages - halfWay < currentPage) {
+                    return totalPages - paginationRange + i;
+                } else if (halfWay < currentPage) {
+                    return currentPage - halfWay + i;
+                } else {
+                    return i;
+                }
+            } else {
+                return i;
+            }
+        }
+    }
+
+    /**
+     * This filter slices the collection into pages based on the current page number and number of items per page.
+     * @param paginationService
+     * @returns {Function}
+     */
+    function itemsPerPageFilter(paginationService) {
+
+        return function(collection, itemsPerPage, paginationId) {
+            if (typeof (paginationId) === 'undefined') {
+                paginationId = DEFAULT_ID;
+            }
+            if (!paginationService.isRegistered(paginationId)) {
+                throw 'pagination directive: the itemsPerPage id argument (id: ' + paginationId + ') does not match a registered pagination-id.';
+            }
+            var end;
+            var start;
+            if (angular.isObject(collection)) {
+                itemsPerPage = parseInt(itemsPerPage) || 9999999999;
+                if (paginationService.isAsyncMode(paginationId)) {
+                    start = 0;
+                } else {
+                    start = (paginationService.getCurrentPage(paginationId) - 1) * itemsPerPage;
+                }
+                end = start + itemsPerPage;
+                paginationService.setItemsPerPage(paginationId, itemsPerPage);
+
+                if (collection instanceof Array) {
+                    // the array just needs to be sliced
+                    return collection.slice(start, end);
+                } else {
+                    // in the case of an object, we need to get an array of keys, slice that, then map back to
+                    // the original object.
+                    var slicedObject = {};
+                    angular.forEach(keys(collection).slice(start, end), function(key) {
+                        slicedObject[key] = collection[key];
+                    });
+                    return slicedObject;
+                }
+            } else {
+                return collection;
+            }
+        };
+    }
+
+    /**
+     * Shim for the Object.keys() method which does not exist in IE < 9
+     * @param obj
+     * @returns {Array}
+     */
+    function keys(obj) {
+        if (!Object.keys) {
+            var objKeys = [];
+            for (var i in obj) {
+                if (obj.hasOwnProperty(i)) {
+                    objKeys.push(i);
+                }
+            }
+            return objKeys;
+        } else {
+            return Object.keys(obj);
+        }
+    }
+
+    /**
+     * This service allows the various parts of the module to communicate and stay in sync.
+     */
+    function paginationService() {
+
+        var instances = {};
+        var lastRegisteredInstance;
+
+        this.registerInstance = function(instanceId) {
+            if (typeof instances[instanceId] === 'undefined') {
+                instances[instanceId] = {
+                    asyncMode: false
+                };
+                lastRegisteredInstance = instanceId;
+            }
+        };
+
+        this.deregisterInstance = function(instanceId) {
+            delete instances[instanceId];
+        };
+        
+        this.isRegistered = function(instanceId) {
+            return (typeof instances[instanceId] !== 'undefined');
+        };
+
+        this.getLastInstanceId = function() {
+            return lastRegisteredInstance;
+        };
+
+        this.setCurrentPageParser = function(instanceId, val, scope) {
+            instances[instanceId].currentPageParser = val;
+            instances[instanceId].context = scope;
+        };
+        this.setCurrentPage = function(instanceId, val) {
+            instances[instanceId].currentPageParser.assign(instances[instanceId].context, val);
+        };
+        this.getCurrentPage = function(instanceId) {
+            var parser = instances[instanceId].currentPageParser;
+            return parser ? parser(instances[instanceId].context) : 1;
+        };
+
+        this.setItemsPerPage = function(instanceId, val) {
+            instances[instanceId].itemsPerPage = val;
+        };
+        this.getItemsPerPage = function(instanceId) {
+            return instances[instanceId].itemsPerPage;
+        };
+
+        this.setCollectionLength = function(instanceId, val) {
+            instances[instanceId].collectionLength = val;
+        };
+        this.getCollectionLength = function(instanceId) {
+            return instances[instanceId].collectionLength;
+        };
+
+        this.setAsyncModeTrue = function(instanceId) {
+            instances[instanceId].asyncMode = true;
+        };
+
+        this.setAsyncModeFalse = function(instanceId) {
+            instances[instanceId].asyncMode = false;
+        };
+
+        this.isAsyncMode = function(instanceId) {
+            return instances[instanceId].asyncMode;
+        };
+    }
+
+    /**
+     * This provider allows global configuration of the template path used by the dir-pagination-controls directive.
+     */
+    function paginationTemplateProvider() {
+
+        var templatePath = 'angularUtils.directives.dirPagination.template';
+        var templateString;
+
+        /**
+         * Set a templateUrl to be used by all instances of <dir-pagination-controls>
+         * @param {String} path
+         */
+        this.setPath = function(path) {
+            templatePath = path;
+        };
+
+        /**
+         * Set a string of HTML to be used as a template by all instances
+         * of <dir-pagination-controls>. If both a path *and* a string have been set,
+         * the string takes precedence.
+         * @param {String} str
+         */
+        this.setString = function(str) {
+            templateString = str;
+        };
+
+        this.$get = function() {
+            return {
+                getPath: function() {
+                    return templatePath;
+                },
+                getString: function() {
+                    return templateString;
+                }
+            };
+        };
+    }
+})();
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular.min.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular.min.js
new file mode 100644
index 0000000..7f3704c
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angular.min.js
@@ -0,0 +1,250 @@
+/*
+ AngularJS v1.3.14
+ (c) 2010-2014 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(P,X,u){'use strict';function M(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.3.14/"+(b?b+"/":"")+a;for(a=1;a<arguments.length;a++){c=c+(1==a?"?":"&")+"p"+(a-1)+"=";var d=encodeURIComponent,e;e=arguments[a];e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e;c+=d(e)}return Error(c)}}function Ta(b){if(null==b||Ua(b))return!1;var a=b.length;return b.nodeType===
+na&&a?!0:x(b)||E(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function s(b,a,c){var d,e;if(b)if(G(b))for(d in b)"prototype"==d||"length"==d||"name"==d||b.hasOwnProperty&&!b.hasOwnProperty(d)||a.call(c,b[d],d,b);else if(E(b)||Ta(b)){var f="object"!==typeof b;d=0;for(e=b.length;d<e;d++)(f||d in b)&&a.call(c,b[d],d,b)}else if(b.forEach&&b.forEach!==s)b.forEach(a,c,b);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d,b);return b}function Ed(b,a,c){for(var d=Object.keys(b).sort(),e=0;e<d.length;e++)a.call(c,
+b[d[e]],d[e]);return d}function lc(b){return function(a,c){b(c,a)}}function Fd(){return++ob}function mc(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function w(b){for(var a=b.$$hashKey,c=1,d=arguments.length;c<d;c++){var e=arguments[c];if(e)for(var f=Object.keys(e),g=0,h=f.length;g<h;g++){var l=f[g];b[l]=e[l]}}mc(b,a);return b}function $(b){return parseInt(b,10)}function Pb(b,a){return w(Object.create(b),a)}function B(){}function oa(b){return b}function da(b){return function(){return b}}function z(b){return"undefined"===
+typeof b}function y(b){return"undefined"!==typeof b}function J(b){return null!==b&&"object"===typeof b}function x(b){return"string"===typeof b}function V(b){return"number"===typeof b}function pa(b){return"[object Date]"===Da.call(b)}function G(b){return"function"===typeof b}function pb(b){return"[object RegExp]"===Da.call(b)}function Ua(b){return b&&b.window===b}function Va(b){return b&&b.$evalAsync&&b.$watch}function Wa(b){return"boolean"===typeof b}function nc(b){return!(!b||!(b.nodeName||b.prop&&
+b.attr&&b.find))}function Gd(b){var a={};b=b.split(",");var c;for(c=0;c<b.length;c++)a[b[c]]=!0;return a}function ta(b){return R(b.nodeName||b[0]&&b[0].nodeName)}function Xa(b,a){var c=b.indexOf(a);0<=c&&b.splice(c,1);return a}function Ea(b,a,c,d){if(Ua(b)||Va(b))throw Ka("cpws");if(a){if(b===a)throw Ka("cpi");c=c||[];d=d||[];if(J(b)){var e=c.indexOf(b);if(-1!==e)return d[e];c.push(b);d.push(a)}if(E(b))for(var f=a.length=0;f<b.length;f++)e=Ea(b[f],null,c,d),J(b[f])&&(c.push(b[f]),d.push(e)),a.push(e);
+else{var g=a.$$hashKey;E(a)?a.length=0:s(a,function(b,c){delete a[c]});for(f in b)b.hasOwnProperty(f)&&(e=Ea(b[f],null,c,d),J(b[f])&&(c.push(b[f]),d.push(e)),a[f]=e);mc(a,g)}}else if(a=b)E(b)?a=Ea(b,[],c,d):pa(b)?a=new Date(b.getTime()):pb(b)?(a=new RegExp(b.source,b.toString().match(/[^\/]*$/)[0]),a.lastIndex=b.lastIndex):J(b)&&(e=Object.create(Object.getPrototypeOf(b)),a=Ea(b,e,c,d));return a}function qa(b,a){if(E(b)){a=a||[];for(var c=0,d=b.length;c<d;c++)a[c]=b[c]}else if(J(b))for(c in a=a||{},
+b)if("$"!==c.charAt(0)||"$"!==c.charAt(1))a[c]=b[c];return a||b}function ea(b,a){if(b===a)return!0;if(null===b||null===a)return!1;if(b!==b&&a!==a)return!0;var c=typeof b,d;if(c==typeof a&&"object"==c)if(E(b)){if(!E(a))return!1;if((c=b.length)==a.length){for(d=0;d<c;d++)if(!ea(b[d],a[d]))return!1;return!0}}else{if(pa(b))return pa(a)?ea(b.getTime(),a.getTime()):!1;if(pb(b)&&pb(a))return b.toString()==a.toString();if(Va(b)||Va(a)||Ua(b)||Ua(a)||E(a))return!1;c={};for(d in b)if("$"!==d.charAt(0)&&!G(b[d])){if(!ea(b[d],
+a[d]))return!1;c[d]=!0}for(d in a)if(!c.hasOwnProperty(d)&&"$"!==d.charAt(0)&&a[d]!==u&&!G(a[d]))return!1;return!0}return!1}function Ya(b,a,c){return b.concat(Za.call(a,c))}function oc(b,a){var c=2<arguments.length?Za.call(arguments,2):[];return!G(a)||a instanceof RegExp?a:c.length?function(){return arguments.length?a.apply(b,Ya(c,arguments,0)):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}}function Hd(b,a){var c=a;"string"===typeof b&&"$"===b.charAt(0)&&"$"===b.charAt(1)?
+c=u:Ua(a)?c="$WINDOW":a&&X===a?c="$DOCUMENT":Va(a)&&(c="$SCOPE");return c}function $a(b,a){if("undefined"===typeof b)return u;V(a)||(a=a?2:null);return JSON.stringify(b,Hd,a)}function pc(b){return x(b)?JSON.parse(b):b}function ua(b){b=C(b).clone();try{b.empty()}catch(a){}var c=C("<div>").append(b).html();try{return b[0].nodeType===qb?R(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+R(b)})}catch(d){return R(c)}}function qc(b){try{return decodeURIComponent(b)}catch(a){}}function rc(b){var a=
+{},c,d;s((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=qc(c[0]),y(d)&&(b=y(c[1])?qc(c[1]):!0,sc.call(a,d)?E(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Qb(b){var a=[];s(b,function(b,d){E(b)?s(b,function(b){a.push(Fa(d,!0)+(!0===b?"":"="+Fa(b,!0)))}):a.push(Fa(d,!0)+(!0===b?"":"="+Fa(b,!0)))});return a.length?a.join("&"):""}function rb(b){return Fa(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Fa(b,a){return encodeURIComponent(b).replace(/%40/gi,
+"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Id(b,a){var c,d,e=sb.length;b=C(b);for(d=0;d<e;++d)if(c=sb[d]+a,x(c=b.attr(c)))return c;return null}function Jd(b,a){var c,d,e={};s(sb,function(a){a+="app";!c&&b.hasAttribute&&b.hasAttribute(a)&&(c=b,d=b.getAttribute(a))});s(sb,function(a){a+="app";var e;!c&&(e=b.querySelector("["+a.replace(":","\\:")+"]"))&&(c=e,d=e.getAttribute(a))});c&&(e.strictDi=null!==Id(c,"strict-di"),
+a(c,d?[d]:[],e))}function tc(b,a,c){J(c)||(c={});c=w({strictDi:!1},c);var d=function(){b=C(b);if(b.injector()){var d=b[0]===X?"document":ua(b);throw Ka("btstrpd",d.replace(/</,"&lt;").replace(/>/,"&gt;"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);c.debugInfoEnabled&&a.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);a.unshift("ng");d=ab(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",
+d);c(b)(a)})}]);return d},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;P&&e.test(P.name)&&(c.debugInfoEnabled=!0,P.name=P.name.replace(e,""));if(P&&!f.test(P.name))return d();P.name=P.name.replace(f,"");aa.resumeBootstrap=function(b){s(b,function(b){a.push(b)});return d()};G(aa.resumeDeferredBootstrap)&&aa.resumeDeferredBootstrap()}function Kd(){P.name="NG_ENABLE_DEBUG_INFO!"+P.name;P.location.reload()}function Ld(b){b=aa.element(b).injector();if(!b)throw Ka("test");return b.get("$$testability")}
+function uc(b,a){a=a||"_";return b.replace(Md,function(b,d){return(d?a:"")+b.toLowerCase()})}function Nd(){var b;vc||((ra=P.jQuery)&&ra.fn.on?(C=ra,w(ra.fn,{scope:La.scope,isolateScope:La.isolateScope,controller:La.controller,injector:La.injector,inheritedData:La.inheritedData}),b=ra.cleanData,ra.cleanData=function(a){var c;if(Rb)Rb=!1;else for(var d=0,e;null!=(e=a[d]);d++)(c=ra._data(e,"events"))&&c.$destroy&&ra(e).triggerHandler("$destroy");b(a)}):C=Q,aa.element=C,vc=!0)}function Sb(b,a,c){if(!b)throw Ka("areq",
+a||"?",c||"required");return b}function tb(b,a,c){c&&E(b)&&(b=b[b.length-1]);Sb(G(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Ma(b,a){if("hasOwnProperty"===b)throw Ka("badname",a);}function wc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g<f;g++)d=a[g],b&&(b=(e=b)[d]);return!c&&G(b)?oc(e,b):b}function ub(b){var a=b[0];b=b[b.length-1];var c=[a];do{a=a.nextSibling;if(!a)break;c.push(a)}while(a!==b);return C(c)}function fa(){return Object.create(null)}
+function Od(b){function a(a,b,c){return a[b]||(a[b]=c())}var c=M("$injector"),d=M("ng");b=a(b,"angular",Object);b.$$minErr=b.$$minErr||M;return a(b,"module",function(){var b={};return function(f,g,h){if("hasOwnProperty"===f)throw d("badname","module");g&&b.hasOwnProperty(f)&&(b[f]=null);return a(b,f,function(){function a(c,d,e,f){f||(f=b);return function(){f[e||"push"]([c,d,arguments]);return t}}if(!g)throw c("nomod",f);var b=[],d=[],e=[],q=a("$injector","invoke","push",d),t={_invokeQueue:b,_configBlocks:d,
+_runBlocks:e,requires:g,name:f,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),animation:a("$animateProvider","register"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:q,run:function(a){e.push(a);return this}};h&&q(h);return t})}})}function Pd(b){w(b,{bootstrap:tc,copy:Ea,extend:w,equals:ea,
+element:C,forEach:s,injector:ab,noop:B,bind:oc,toJson:$a,fromJson:pc,identity:oa,isUndefined:z,isDefined:y,isString:x,isFunction:G,isObject:J,isNumber:V,isElement:nc,isArray:E,version:Qd,isDate:pa,lowercase:R,uppercase:vb,callbacks:{counter:0},getTestability:Ld,$$minErr:M,$$csp:bb,reloadWithDebugInfo:Kd});cb=Od(P);try{cb("ngLocale")}catch(a){cb("ngLocale",[]).provider("$locale",Rd)}cb("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:Sd});a.provider("$compile",xc).directive({a:Td,
+input:yc,textarea:yc,form:Ud,script:Vd,select:Wd,style:Xd,option:Yd,ngBind:Zd,ngBindHtml:$d,ngBindTemplate:ae,ngClass:be,ngClassEven:ce,ngClassOdd:de,ngCloak:ee,ngController:fe,ngForm:ge,ngHide:he,ngIf:ie,ngInclude:je,ngInit:ke,ngNonBindable:le,ngPluralize:me,ngRepeat:ne,ngShow:oe,ngStyle:pe,ngSwitch:qe,ngSwitchWhen:re,ngSwitchDefault:se,ngOptions:te,ngTransclude:ue,ngModel:ve,ngList:we,ngChange:xe,pattern:zc,ngPattern:zc,required:Ac,ngRequired:Ac,minlength:Bc,ngMinlength:Bc,maxlength:Cc,ngMaxlength:Cc,
+ngValue:ye,ngModelOptions:ze}).directive({ngInclude:Ae}).directive(wb).directive(Dc);a.provider({$anchorScroll:Be,$animate:Ce,$browser:De,$cacheFactory:Ee,$controller:Fe,$document:Ge,$exceptionHandler:He,$filter:Ec,$interpolate:Ie,$interval:Je,$http:Ke,$httpBackend:Le,$location:Me,$log:Ne,$parse:Oe,$rootScope:Pe,$q:Qe,$$q:Re,$sce:Se,$sceDelegate:Te,$sniffer:Ue,$templateCache:Ve,$templateRequest:We,$$testability:Xe,$timeout:Ye,$window:Ze,$$rAF:$e,$$asyncCallback:af,$$jqLite:bf})}])}function db(b){return b.replace(cf,
+function(a,b,d,e){return e?d.toUpperCase():d}).replace(df,"Moz$1")}function Fc(b){b=b.nodeType;return b===na||!b||9===b}function Gc(b,a){var c,d,e=a.createDocumentFragment(),f=[];if(Tb.test(b)){c=c||e.appendChild(a.createElement("div"));d=(ef.exec(b)||["",""])[1].toLowerCase();d=ga[d]||ga._default;c.innerHTML=d[1]+b.replace(ff,"<$1></$2>")+d[2];for(d=d[0];d--;)c=c.lastChild;f=Ya(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";s(f,function(a){e.appendChild(a)});
+return e}function Q(b){if(b instanceof Q)return b;var a;x(b)&&(b=T(b),a=!0);if(!(this instanceof Q)){if(a&&"<"!=b.charAt(0))throw Ub("nosel");return new Q(b)}if(a){a=X;var c;b=(c=gf.exec(b))?[a.createElement(c[1])]:(c=Gc(b,a))?c.childNodes:[]}Hc(this,b)}function Vb(b){return b.cloneNode(!0)}function xb(b,a){a||yb(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;d<e;d++)yb(c[d])}function Ic(b,a,c,d){if(y(d))throw Ub("offargs");var e=(d=zb(b))&&d.events,f=d&&d.handle;if(f)if(a)s(a.split(" "),
+function(a){if(y(c)){var d=e[a];Xa(d||[],c);if(d&&0<d.length)return}b.removeEventListener(a,f,!1);delete e[a]});else for(a in e)"$destroy"!==a&&b.removeEventListener(a,f,!1),delete e[a]}function yb(b,a){var c=b.ng339,d=c&&Ab[c];d&&(a?delete d.data[a]:(d.handle&&(d.events.$destroy&&d.handle({},"$destroy"),Ic(b)),delete Ab[c],b.ng339=u))}function zb(b,a){var c=b.ng339,c=c&&Ab[c];a&&!c&&(b.ng339=c=++hf,c=Ab[c]={events:{},data:{},handle:u});return c}function Wb(b,a,c){if(Fc(b)){var d=y(c),e=!d&&a&&!J(a),
+f=!a;b=(b=zb(b,!e))&&b.data;if(d)b[a]=c;else{if(f)return b;if(e)return b&&b[a];w(b,a)}}}function Bb(b,a){return b.getAttribute?-1<(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+a+" "):!1}function Cb(b,a){a&&b.setAttribute&&s(a.split(" "),function(a){b.setAttribute("class",T((" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+T(a)+" "," ")))})}function Db(b,a){if(a&&b.setAttribute){var c=(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");
+s(a.split(" "),function(a){a=T(a);-1===c.indexOf(" "+a+" ")&&(c+=a+" ")});b.setAttribute("class",T(c))}}function Hc(b,a){if(a)if(a.nodeType)b[b.length++]=a;else{var c=a.length;if("number"===typeof c&&a.window!==a){if(c)for(var d=0;d<c;d++)b[b.length++]=a[d]}else b[b.length++]=a}}function Jc(b,a){return Eb(b,"$"+(a||"ngController")+"Controller")}function Eb(b,a,c){9==b.nodeType&&(b=b.documentElement);for(a=E(a)?a:[a];b;){for(var d=0,e=a.length;d<e;d++)if((c=C.data(b,a[d]))!==u)return c;b=b.parentNode||
+11===b.nodeType&&b.host}}function Kc(b){for(xb(b,!0);b.firstChild;)b.removeChild(b.firstChild)}function Lc(b,a){a||xb(b);var c=b.parentNode;c&&c.removeChild(b)}function jf(b,a){a=a||P;if("complete"===a.document.readyState)a.setTimeout(b);else C(a).on("load",b)}function Mc(b,a){var c=Fb[a.toLowerCase()];return c&&Nc[ta(b)]&&c}function kf(b,a){var c=b.nodeName;return("INPUT"===c||"TEXTAREA"===c)&&Oc[a]}function lf(b,a){var c=function(c,e){c.isDefaultPrevented=function(){return c.defaultPrevented};var f=
+a[e||c.type],g=f?f.length:0;if(g){if(z(c.immediatePropagationStopped)){var h=c.stopImmediatePropagation;c.stopImmediatePropagation=function(){c.immediatePropagationStopped=!0;c.stopPropagation&&c.stopPropagation();h&&h.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};1<g&&(f=qa(f));for(var l=0;l<g;l++)c.isImmediatePropagationStopped()||f[l].call(b,c)}};c.elem=b;return c}function bf(){this.$get=function(){return w(Q,{hasClass:function(b,a){b.attr&&(b=b[0]);
+return Bb(b,a)},addClass:function(b,a){b.attr&&(b=b[0]);return Db(b,a)},removeClass:function(b,a){b.attr&&(b=b[0]);return Cb(b,a)}})}}function Na(b,a){var c=b&&b.$$hashKey;if(c)return"function"===typeof c&&(c=b.$$hashKey()),c;c=typeof b;return c="function"==c||"object"==c&&null!==b?b.$$hashKey=c+":"+(a||Fd)():c+":"+b}function eb(b,a){if(a){var c=0;this.nextUid=function(){return++c}}s(b,this.put,this)}function mf(b){return(b=b.toString().replace(Pc,"").match(Qc))?"function("+(b[1]||"").replace(/[\s\r\n]+/,
+" ")+")":"fn"}function ab(b,a){function c(a){return function(b,c){if(J(b))s(b,lc(a));else return a(b,c)}}function d(a,b){Ma(a,"service");if(G(b)||E(b))b=q.instantiate(b);if(!b.$get)throw Ga("pget",a);return p[a+"Provider"]=b}function e(a,b){return function(){var c=r.invoke(b,this);if(z(c))throw Ga("undef",a);return c}}function f(a,b,c){return d(a,{$get:!1!==c?e(a,b):b})}function g(a){var b=[],c;s(a,function(a){function d(a){var b,c;b=0;for(c=a.length;b<c;b++){var e=a[b],f=q.get(e[0]);f[e[1]].apply(f,
+e[2])}}if(!m.get(a)){m.put(a,!0);try{x(a)?(c=cb(a),b=b.concat(g(c.requires)).concat(c._runBlocks),d(c._invokeQueue),d(c._configBlocks)):G(a)?b.push(q.invoke(a)):E(a)?b.push(q.invoke(a)):tb(a,"module")}catch(e){throw E(a)&&(a=a[a.length-1]),e.message&&e.stack&&-1==e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Ga("modulerr",a,e.stack||e.message||e);}}});return b}function h(b,c){function d(a,e){if(b.hasOwnProperty(a)){if(b[a]===l)throw Ga("cdep",a+" <- "+k.join(" <- "));return b[a]}try{return k.unshift(a),
+b[a]=l,b[a]=c(a,e)}catch(f){throw b[a]===l&&delete b[a],f;}finally{k.shift()}}function e(b,c,f,g){"string"===typeof f&&(g=f,f=null);var h=[],k=ab.$$annotate(b,a,g),l,q,p;q=0;for(l=k.length;q<l;q++){p=k[q];if("string"!==typeof p)throw Ga("itkn",p);h.push(f&&f.hasOwnProperty(p)?f[p]:d(p,g))}E(b)&&(b=b[l]);return b.apply(c,h)}return{invoke:e,instantiate:function(a,b,c){var d=Object.create((E(a)?a[a.length-1]:a).prototype||null);a=e(a,d,b,c);return J(a)||G(a)?a:d},get:d,annotate:ab.$$annotate,has:function(a){return p.hasOwnProperty(a+
+"Provider")||b.hasOwnProperty(a)}}}a=!0===a;var l={},k=[],m=new eb([],!0),p={$provide:{provider:c(d),factory:c(f),service:c(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:c(function(a,b){return f(a,da(b),!1)}),constant:c(function(a,b){Ma(a,"constant");p[a]=b;t[a]=b}),decorator:function(a,b){var c=q.get(a+"Provider"),d=c.$get;c.$get=function(){var a=r.invoke(d,c);return r.invoke(b,null,{$delegate:a})}}}},q=p.$injector=h(p,function(a,b){aa.isString(b)&&k.push(b);
+throw Ga("unpr",k.join(" <- "));}),t={},r=t.$injector=h(t,function(a,b){var c=q.get(a+"Provider",b);return r.invoke(c.$get,c,u,a)});s(g(b),function(a){r.invoke(a||B)});return r}function Be(){var b=!0;this.disableAutoScrolling=function(){b=!1};this.$get=["$window","$location","$rootScope",function(a,c,d){function e(a){var b=null;Array.prototype.some.call(a,function(a){if("a"===ta(a))return b=a,!0});return b}function f(b){if(b){b.scrollIntoView();var c;c=g.yOffset;G(c)?c=c():nc(c)?(c=c[0],c="fixed"!==
+a.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):V(c)||(c=0);c&&(b=b.getBoundingClientRect().top,a.scrollBy(0,b-c))}else a.scrollTo(0,0)}function g(){var a=c.hash(),b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=a.document;b&&d.$watch(function(){return c.hash()},function(a,b){a===b&&""===a||jf(function(){d.$evalAsync(g)})});return g}]}function af(){this.$get=["$$rAF","$timeout",function(b,a){return b.supported?function(a){return b(a)}:
+function(b){return a(b,0,!1)}}]}function nf(b,a,c,d){function e(a){try{a.apply(null,Za.call(arguments,1))}finally{if(n--,0===n)for(;D.length;)try{D.pop()()}catch(b){c.error(b)}}}function f(a,b){(function ca(){s(H,function(a){a()});v=b(ca,a)})()}function g(){h();l()}function h(){A=b.history.state;A=z(A)?null:A;ea(A,O)&&(A=O);O=A}function l(){if(F!==m.url()||N!==A)F=m.url(),N=A,s(W,function(a){a(m.url(),A)})}function k(a){try{return decodeURIComponent(a)}catch(b){return a}}var m=this,p=a[0],q=b.location,
+t=b.history,r=b.setTimeout,S=b.clearTimeout,K={};m.isMock=!1;var n=0,D=[];m.$$completeOutstandingRequest=e;m.$$incOutstandingRequestCount=function(){n++};m.notifyWhenNoOutstandingRequests=function(a){s(H,function(a){a()});0===n?a():D.push(a)};var H=[],v;m.addPollFn=function(a){z(v)&&f(100,r);H.push(a);return a};var A,N,F=q.href,ba=a.find("base"),I=null;h();N=A;m.url=function(a,c,e){z(e)&&(e=null);q!==b.location&&(q=b.location);t!==b.history&&(t=b.history);if(a){var f=N===e;if(F===a&&(!d.history||
+f))return m;var g=F&&Ha(F)===Ha(a);F=a;N=e;!d.history||g&&f?(g||(I=a),c?q.replace(a):g?(c=q,e=a.indexOf("#"),a=-1===e?"":a.substr(e+1),c.hash=a):q.href=a):(t[c?"replaceState":"pushState"](e,"",a),h(),N=A);return m}return I||q.href.replace(/%27/g,"'")};m.state=function(){return A};var W=[],va=!1,O=null;m.onUrlChange=function(a){if(!va){if(d.history)C(b).on("popstate",g);C(b).on("hashchange",g);va=!0}W.push(a);return a};m.$$checkUrlChange=l;m.baseHref=function(){var a=ba.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,
+""):""};var wa={},y="",ha=m.baseHref();m.cookies=function(a,b){var d,e,f,g;if(a)b===u?p.cookie=encodeURIComponent(a)+"=;path="+ha+";expires=Thu, 01 Jan 1970 00:00:00 GMT":x(b)&&(d=(p.cookie=encodeURIComponent(a)+"="+encodeURIComponent(b)+";path="+ha).length+1,4096<d&&c.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+d+" > 4096 bytes)!"));else{if(p.cookie!==y)for(y=p.cookie,d=y.split("; "),wa={},f=0;f<d.length;f++)e=d[f],g=e.indexOf("="),0<g&&(a=k(e.substring(0,g)),
+wa[a]===u&&(wa[a]=k(e.substring(g+1))));return wa}};m.defer=function(a,b){var c;n++;c=r(function(){delete K[c];e(a)},b||0);K[c]=!0;return c};m.defer.cancel=function(a){return K[a]?(delete K[a],S(a),e(B),!0):!1}}function De(){this.$get=["$window","$log","$sniffer","$document",function(b,a,c,d){return new nf(b,d,a,c)}]}function Ee(){this.$get=function(){function b(b,d){function e(a){a!=p&&(q?q==a&&(q=a.n):q=a,f(a.n,a.p),f(a,p),p=a,p.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(b in a)throw M("$cacheFactory")("iid",
+b);var g=0,h=w({},d,{id:b}),l={},k=d&&d.capacity||Number.MAX_VALUE,m={},p=null,q=null;return a[b]={put:function(a,b){if(k<Number.MAX_VALUE){var c=m[a]||(m[a]={key:a});e(c)}if(!z(b))return a in l||g++,l[a]=b,g>k&&this.remove(q.key),b},get:function(a){if(k<Number.MAX_VALUE){var b=m[a];if(!b)return;e(b)}return l[a]},remove:function(a){if(k<Number.MAX_VALUE){var b=m[a];if(!b)return;b==p&&(p=b.p);b==q&&(q=b.n);f(b.n,b.p);delete m[a]}delete l[a];g--},removeAll:function(){l={};g=0;m={};p=q=null},destroy:function(){m=
+h=l=null;delete a[b]},info:function(){return w({},h,{size:g})}}}var a={};b.info=function(){var b={};s(a,function(a,e){b[e]=a.info()});return b};b.get=function(b){return a[b]};return b}}function Ve(){this.$get=["$cacheFactory",function(b){return b("templates")}]}function xc(b,a){function c(a,b){var c=/^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,d={};s(a,function(a,e){var f=a.match(c);if(!f)throw ia("iscp",b,e,a);d[e]={mode:f[1][0],collection:"*"===f[2],optional:"?"===f[3],attrName:f[4]||e}});return d}var d=
+{},e=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,f=/(([\w\-]+)(?:\:([^;]+))?;?)/,g=Gd("ngSrc,ngSrcset,src,srcset"),h=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,l=/^(on[a-z]+|formaction)$/;this.directive=function p(a,e){Ma(a,"directive");x(a)?(Sb(e,"directiveFactory"),d.hasOwnProperty(a)||(d[a]=[],b.factory(a+"Directive",["$injector","$exceptionHandler",function(b,e){var f=[];s(d[a],function(d,g){try{var h=b.invoke(d);G(h)?h={compile:da(h)}:!h.compile&&h.link&&(h.compile=da(h.link));h.priority=h.priority||0;h.index=
+g;h.name=h.name||a;h.require=h.require||h.controller&&h.name;h.restrict=h.restrict||"EA";J(h.scope)&&(h.$$isolateBindings=c(h.scope,h.name));f.push(h)}catch(l){e(l)}});return f}])),d[a].push(e)):s(a,lc(p));return this};this.aHrefSanitizationWhitelist=function(b){return y(b)?(a.aHrefSanitizationWhitelist(b),this):a.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(b){return y(b)?(a.imgSrcSanitizationWhitelist(b),this):a.imgSrcSanitizationWhitelist()};var k=!0;this.debugInfoEnabled=
+function(a){return y(a)?(k=a,this):k};this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,b,c,r,S,K,n,D,H,v,A){function N(a,b){try{a.addClass(b)}catch(c){}}function F(a,b,c,d,e){a instanceof C||(a=C(a));s(a,function(b,c){b.nodeType==qb&&b.nodeValue.match(/\S+/)&&(a[c]=C(b).wrap("<span></span>").parent()[0])});var f=ba(a,b,a,c,d,e);F.$$addScopeClass(a);var g=null;return function(b,
+c,d){Sb(b,"scope");d=d||{};var e=d.parentBoundTranscludeFn,h=d.transcludeControllers;d=d.futureParentElement;e&&e.$$boundTransclude&&(e=e.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==ta(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==g?C(Xb(g,C("<div>").append(a).html())):c?La.clone.call(a):a;if(h)for(var l in h)d.data("$"+l+"Controller",h[l].instance);F.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,e);return d}}function ba(a,b,c,d,e,f){function g(a,c,d,e){var f,l,k,q,p,r,D;if(n)for(D=
+Array(c.length),q=0;q<h.length;q+=3)f=h[q],D[f]=c[f];else D=c;q=0;for(p=h.length;q<p;)l=D[h[q++]],c=h[q++],f=h[q++],c?(c.scope?(k=a.$new(),F.$$addScopeInfo(C(l),k)):k=a,r=c.transcludeOnThisElement?I(a,c.transclude,e,c.elementTranscludeOnThisElement):!c.templateOnThisElement&&e?e:!e&&b?I(a,b):null,c(f,k,l,d,r)):f&&f(a,l.childNodes,u,e)}for(var h=[],l,k,q,p,n,r=0;r<a.length;r++){l=new Yb;k=W(a[r],[],l,0===r?d:u,e);(f=k.length?y(k,a[r],l,b,c,null,[],[],f):null)&&f.scope&&F.$$addScopeClass(l.$$element);
+l=f&&f.terminal||!(q=a[r].childNodes)||!q.length?null:ba(q,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b);if(f||l)h.push(r,f,l),p=!0,n=n||f;f=null}return p?g:null}function I(a,b,c,d){return function(d,e,f,g,h){d||(d=a.$new(!1,h),d.$$transcluded=!0);return b(d,e,{parentBoundTranscludeFn:c,transcludeControllers:f,futureParentElement:g})}}function W(a,b,c,d,g){var h=c.$attr,l;switch(a.nodeType){case na:ha(b,ya(ta(a)),"E",d,g);for(var k,q,p,n=a.attributes,r=0,D=n&&n.length;r<
+D;r++){var S=!1,t=!1;k=n[r];l=k.name;q=T(k.value);k=ya(l);if(p=Pa.test(k))l=l.replace(Sc,"").substr(8).replace(/_(.)/g,function(a,b){return b.toUpperCase()});var A=k.replace(/(Start|End)$/,"");fb(A)&&k===A+"Start"&&(S=l,t=l.substr(0,l.length-5)+"end",l=l.substr(0,l.length-6));k=ya(l.toLowerCase());h[k]=l;if(p||!c.hasOwnProperty(k))c[k]=q,Mc(a,k)&&(c[k]=!0);Aa(a,b,q,k,p);ha(b,k,"A",d,g,S,t)}a=a.className;J(a)&&(a=a.animVal);if(x(a)&&""!==a)for(;l=f.exec(a);)k=ya(l[2]),ha(b,k,"C",d,g)&&(c[k]=T(l[3])),
+a=a.substr(l.index+l[0].length);break;case qb:P(b,a.nodeValue);break;case 8:try{if(l=e.exec(a.nodeValue))k=ya(l[1]),ha(b,k,"M",d,g)&&(c[k]=T(l[2]))}catch(v){}}b.sort(ca);return b}function va(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ia("uterdir",b,c);a.nodeType==na&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return C(d)}function O(a,b,c){return function(d,e,f,g,h){e=va(e[0],b,c);return a(d,e,f,g,h)}}function y(a,
+d,e,f,g,l,k,p,n){function r(a,b,c,d){if(a){c&&(a=O(a,c,d));a.require=L.require;a.directiveName=ca;if(I===L||L.$$isolateScope)a=Y(a,{isolateScope:!0});k.push(a)}if(b){c&&(b=O(b,c,d));b.require=L.require;b.directiveName=ca;if(I===L||L.$$isolateScope)b=Y(b,{isolateScope:!0});p.push(b)}}function D(a,b,c,d){var e,f="data",g=!1,l=c,k;if(x(b)){k=b.match(h);b=b.substring(k[0].length);k[3]&&(k[1]?k[3]=null:k[1]=k[3]);"^"===k[1]?f="inheritedData":"^^"===k[1]&&(f="inheritedData",l=c.parent());"?"===k[2]&&(g=
+!0);e=null;d&&"data"===f&&(e=d[b])&&(e=e.instance);e=e||l[f]("$"+b+"Controller");if(!e&&!g)throw ia("ctreq",b,a);return e||null}E(b)&&(e=[],s(b,function(b){e.push(D(a,b,c,d))}));return e}function A(a,c,f,g,h){function l(a,b,c){var d;Va(a)||(c=b,b=a,a=u);B&&(d=N);c||(c=B?W.parent():W);return h(a,b,d,c,va)}var n,r,t,v,N,gb,W,O;d===f?(O=e,W=e.$$element):(W=C(f),O=new Yb(W,e));I&&(v=c.$new(!0));h&&(gb=l,gb.$$boundTransclude=h);H&&(ba={},N={},s(H,function(a){var b={$scope:a===I||a.$$isolateScope?v:c,$element:W,
+$attrs:O,$transclude:gb};t=a.controller;"@"==t&&(t=O[a.name]);b=K(t,b,!0,a.controllerAs);N[a.name]=b;B||W.data("$"+a.name+"Controller",b.instance);ba[a.name]=b}));if(I){F.$$addScopeInfo(W,v,!0,!(ja&&(ja===I||ja===I.$$originalDirective)));F.$$addScopeClass(W,!0);g=ba&&ba[I.name];var xa=v;g&&g.identifier&&!0===I.bindToController&&(xa=g.instance);s(v.$$isolateBindings=I.$$isolateBindings,function(a,d){var e=a.attrName,f=a.optional,g,h,l,k;switch(a.mode){case "@":O.$observe(e,function(a){xa[d]=a});O.$$observers[e].$$scope=
+c;O[e]&&(xa[d]=b(O[e])(c));break;case "=":if(f&&!O[e])break;h=S(O[e]);k=h.literal?ea:function(a,b){return a===b||a!==a&&b!==b};l=h.assign||function(){g=xa[d]=h(c);throw ia("nonassign",O[e],I.name);};g=xa[d]=h(c);f=function(a){k(a,xa[d])||(k(a,g)?l(c,a=xa[d]):xa[d]=a);return g=a};f.$stateful=!0;f=a.collection?c.$watchCollection(O[e],f):c.$watch(S(O[e],f),null,h.literal);v.$on("$destroy",f);break;case "&":h=S(O[e]),xa[d]=function(a){return h(c,a)}}})}ba&&(s(ba,function(a){a()}),ba=null);g=0;for(n=k.length;g<
+n;g++)r=k[g],Z(r,r.isolateScope?v:c,W,O,r.require&&D(r.directiveName,r.require,W,N),gb);var va=c;I&&(I.template||null===I.templateUrl)&&(va=v);a&&a(va,f.childNodes,u,h);for(g=p.length-1;0<=g;g--)r=p[g],Z(r,r.isolateScope?v:c,W,O,r.require&&D(r.directiveName,r.require,W,N),gb)}n=n||{};for(var v=-Number.MAX_VALUE,N,H=n.controllerDirectives,ba,I=n.newIsolateScopeDirective,ja=n.templateDirective,wa=n.nonTlbTranscludeDirective,ha=!1,fb=!1,B=n.hasElementTranscludeDirective,w=e.$$element=C(d),L,ca,U,R=f,
+P,Q=0,Aa=a.length;Q<Aa;Q++){L=a[Q];var Pa=L.$$start,$=L.$$end;Pa&&(w=va(d,Pa,$));U=u;if(v>L.priority)break;if(U=L.scope)L.templateUrl||(J(U)?(Oa("new/isolated scope",I||N,L,w),I=L):Oa("new/isolated scope",I,L,w)),N=N||L;ca=L.name;!L.templateUrl&&L.controller&&(U=L.controller,H=H||{},Oa("'"+ca+"' controller",H[ca],L,w),H[ca]=L);if(U=L.transclude)ha=!0,L.$$tlb||(Oa("transclusion",wa,L,w),wa=L),"element"==U?(B=!0,v=L.priority,U=w,w=e.$$element=C(X.createComment(" "+ca+": "+e[ca]+" ")),d=w[0],V(g,Za.call(U,
+0),d),R=F(U,f,v,l&&l.name,{nonTlbTranscludeDirective:wa})):(U=C(Vb(d)).contents(),w.empty(),R=F(U,f));if(L.template)if(fb=!0,Oa("template",ja,L,w),ja=L,U=G(L.template)?L.template(w,e):L.template,U=Tc(U),L.replace){l=L;U=Tb.test(U)?Uc(Xb(L.templateNamespace,T(U))):[];d=U[0];if(1!=U.length||d.nodeType!==na)throw ia("tplrt",ca,"");V(g,w,d);Aa={$attr:{}};U=W(d,[],Aa);var of=a.splice(Q+1,a.length-(Q+1));I&&z(U);a=a.concat(U).concat(of);Rc(e,Aa);Aa=a.length}else w.html(U);if(L.templateUrl)fb=!0,Oa("template",
+ja,L,w),ja=L,L.replace&&(l=L),A=M(a.splice(Q,a.length-Q),w,e,g,ha&&R,k,p,{controllerDirectives:H,newIsolateScopeDirective:I,templateDirective:ja,nonTlbTranscludeDirective:wa}),Aa=a.length;else if(L.compile)try{P=L.compile(w,e,R),G(P)?r(null,P,Pa,$):P&&r(P.pre,P.post,Pa,$)}catch(aa){c(aa,ua(w))}L.terminal&&(A.terminal=!0,v=Math.max(v,L.priority))}A.scope=N&&!0===N.scope;A.transcludeOnThisElement=ha;A.elementTranscludeOnThisElement=B;A.templateOnThisElement=fb;A.transclude=R;n.hasElementTranscludeDirective=
+B;return A}function z(a){for(var b=0,c=a.length;b<c;b++)a[b]=Pb(a[b],{$$isolateScope:!0})}function ha(b,e,f,g,h,l,k){if(e===h)return null;h=null;if(d.hasOwnProperty(e)){var q;e=a.get(e+"Directive");for(var n=0,r=e.length;n<r;n++)try{q=e[n],(g===u||g>q.priority)&&-1!=q.restrict.indexOf(f)&&(l&&(q=Pb(q,{$$start:l,$$end:k})),b.push(q),h=q)}catch(D){c(D)}}return h}function fb(b){if(d.hasOwnProperty(b))for(var c=a.get(b+"Directive"),e=0,f=c.length;e<f;e++)if(b=c[e],b.multiElement)return!0;return!1}function Rc(a,
+b){var c=b.$attr,d=a.$attr,e=a.$$element;s(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});s(b,function(b,f){"class"==f?(N(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function M(a,b,c,d,e,f,g,h){var l=[],k,q,p=b[0],n=a.shift(),D=Pb(n,{templateUrl:null,transclude:null,replace:null,$$originalDirective:n}),
+S=G(n.templateUrl)?n.templateUrl(b,c):n.templateUrl,t=n.templateNamespace;b.empty();r(H.getTrustedResourceUrl(S)).then(function(r){var A,v;r=Tc(r);if(n.replace){r=Tb.test(r)?Uc(Xb(t,T(r))):[];A=r[0];if(1!=r.length||A.nodeType!==na)throw ia("tplrt",n.name,S);r={$attr:{}};V(d,b,A);var H=W(A,[],r);J(n.scope)&&z(H);a=H.concat(a);Rc(c,r)}else A=p,b.html(r);a.unshift(D);k=y(a,A,c,e,b,n,f,g,h);s(d,function(a,c){a==A&&(d[c]=b[0])});for(q=ba(b[0].childNodes,e);l.length;){r=l.shift();v=l.shift();var F=l.shift(),
+K=l.shift(),H=b[0];if(!r.$$destroyed){if(v!==p){var O=v.className;h.hasElementTranscludeDirective&&n.replace||(H=Vb(A));V(F,C(v),H);N(C(H),O)}v=k.transcludeOnThisElement?I(r,k.transclude,K):K;k(q,r,H,d,v)}}l=null});return function(a,b,c,d,e){a=e;b.$$destroyed||(l?l.push(b,c,d,a):(k.transcludeOnThisElement&&(a=I(b,k.transclude,e)),k(q,b,c,d,a)))}}function ca(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function Oa(a,b,c,d){if(b)throw ia("multidir",
+b.name,c.name,a,ua(d));}function P(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){a=a.parent();var b=!!a.length;b&&F.$$addBindingClass(a);return function(a,c){var e=c.parent();b||F.$$addBindingClass(e);F.$$addBindingInfo(e,d.expressions);a.$watch(d,function(a){c[0].nodeValue=a})}}})}function Xb(a,b){a=R(a||"html");switch(a){case "svg":case "math":var c=X.createElement("div");c.innerHTML="<"+a+">"+b+"</"+a+">";return c.childNodes[0].childNodes;default:return b}}function Q(a,b){if("srcdoc"==
+b)return H.HTML;var c=ta(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return H.RESOURCE_URL}function Aa(a,c,d,e,f){var h=Q(a,e);f=g[e]||f;var k=b(d,!0,h,f);if(k){if("multiple"===e&&"select"===ta(a))throw ia("selmulti",ua(a));c.push({priority:100,compile:function(){return{pre:function(a,c,g){c=g.$$observers||(g.$$observers={});if(l.test(e))throw ia("nodomevents");var n=g[e];n!==d&&(k=n&&b(n,!0,h,f),d=n);k&&(g[e]=k(a),(c[e]||(c[e]=[])).$$inter=!0,(g.$$observers&&g.$$observers[e].$$scope||
+a).$watch(k,function(a,b){"class"===e&&a!=b?g.$updateClass(a,b):g.$set(e,a)}))}}}})}}function V(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g<h;g++)if(a[g]==d){a[g++]=c;h=g+e-1;for(var l=a.length;g<l;g++,h++)h<l?a[g]=a[h]:delete a[g];a.length-=e-1;a.context===d&&(a.context=c);break}f&&f.replaceChild(c,d);a=X.createDocumentFragment();a.appendChild(d);C(c).data(C(d).data());ra?(Rb=!0,ra.cleanData([d])):delete C.cache[d[C.expando]];d=1;for(e=b.length;d<e;d++)f=b[d],C(f).remove(),
+a.appendChild(f),delete b[d];b[0]=c;b.length=1}function Y(a,b){return w(function(){return a.apply(null,arguments)},a,b)}function Z(a,b,d,e,f,g){try{a(b,d,e,f,g)}catch(h){c(h,ua(d))}}var Yb=function(a,b){if(b){var c=Object.keys(b),d,e,f;d=0;for(e=c.length;d<e;d++)f=c[d],this[f]=b[f]}else this.$attr={};this.$$element=a};Yb.prototype={$normalize:ya,$addClass:function(a){a&&0<a.length&&v.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&v.removeClass(this.$$element,a)},$updateClass:function(a,
+b){var c=Vc(a,b);c&&c.length&&v.addClass(this.$$element,c);(c=Vc(b,a))&&c.length&&v.removeClass(this.$$element,c)},$set:function(a,b,d,e){var f=this.$$element[0],g=Mc(f,a),h=kf(f,a),f=a;g?(this.$$element.prop(a,b),e=g):h&&(this[h]=b,f=h);this[a]=b;e?this.$attr[a]=e:(e=this.$attr[a])||(this.$attr[a]=e=uc(a,"-"));g=ta(this.$$element);if("a"===g&&"href"===a||"img"===g&&"src"===a)this[a]=b=A(b,"src"===a);else if("img"===g&&"srcset"===a){for(var g="",h=T(b),l=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,l=/\s/.test(h)?
+l:/(,)/,h=h.split(l),l=Math.floor(h.length/2),k=0;k<l;k++)var q=2*k,g=g+A(T(h[q]),!0),g=g+(" "+T(h[q+1]));h=T(h[2*k]).split(/\s/);g+=A(T(h[0]),!0);2===h.length&&(g+=" "+T(h[1]));this[a]=b=g}!1!==d&&(null===b||b===u?this.$$element.removeAttr(e):this.$$element.attr(e,b));(a=this.$$observers)&&s(a[f],function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers=fa()),e=d[a]||(d[a]=[]);e.push(b);n.$evalAsync(function(){!e.$$inter&&c.hasOwnProperty(a)&&b(c[a])});
+return function(){Xa(e,b)}}};var U=b.startSymbol(),ja=b.endSymbol(),Tc="{{"==U||"}}"==ja?oa:function(a){return a.replace(/\{\{/g,U).replace(/}}/g,ja)},Pa=/^ngAttr[A-Z]/;F.$$addBindingInfo=k?function(a,b){var c=a.data("$binding")||[];E(b)?c=c.concat(b):c.push(b);a.data("$binding",c)}:B;F.$$addBindingClass=k?function(a){N(a,"ng-binding")}:B;F.$$addScopeInfo=k?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateScope":"$scope",b)}:B;F.$$addScopeClass=k?function(a,b){N(a,b?"ng-isolate-scope":
+"ng-scope")}:B;return F}]}function ya(b){return db(b.replace(Sc,""))}function Vc(b,a){var c="",d=b.split(/\s+/),e=a.split(/\s+/),f=0;a:for(;f<d.length;f++){for(var g=d[f],h=0;h<e.length;h++)if(g==e[h])continue a;c+=(0<c.length?" ":"")+g}return c}function Uc(b){b=C(b);var a=b.length;if(1>=a)return b;for(;a--;)8===b[a].nodeType&&pf.call(b,a,1);return b}function Fe(){var b={},a=!1,c=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(a,c){Ma(a,"controller");J(a)?w(b,a):b[a]=c};this.allowGlobals=function(){a=
+!0};this.$get=["$injector","$window",function(d,e){function f(a,b,c,d){if(!a||!J(a.$scope))throw M("$controller")("noscp",d,b);a.$scope[b]=c}return function(g,h,l,k){var m,p,q;l=!0===l;k&&x(k)&&(q=k);if(x(g)){k=g.match(c);if(!k)throw qf("ctrlfmt",g);p=k[1];q=q||k[3];g=b.hasOwnProperty(p)?b[p]:wc(h.$scope,p,!0)||(a?wc(e,p,!0):u);tb(g,p,!0)}if(l)return l=(E(g)?g[g.length-1]:g).prototype,m=Object.create(l||null),q&&f(h,q,m,p||g.name),w(function(){d.invoke(g,m,h,p);return m},{instance:m,identifier:q});
+m=d.instantiate(g,h,p);q&&f(h,q,m,p||g.name);return m}}]}function Ge(){this.$get=["$window",function(b){return C(b.document)}]}function He(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function Zb(b,a){if(x(b)){var c=b.replace(rf,"").trim();if(c){var d=a("Content-Type");(d=d&&0===d.indexOf(Wc))||(d=(d=c.match(sf))&&tf[d[0]].test(c));d&&(b=pc(c))}}return b}function Xc(b){var a=fa(),c,d,e;if(!b)return a;s(b.split("\n"),function(b){e=b.indexOf(":");c=R(T(b.substr(0,
+e)));d=T(b.substr(e+1));c&&(a[c]=a[c]?a[c]+", "+d:d)});return a}function Yc(b){var a=J(b)?b:u;return function(c){a||(a=Xc(b));return c?(c=a[R(c)],void 0===c&&(c=null),c):a}}function Zc(b,a,c,d){if(G(d))return d(b,a,c);s(d,function(d){b=d(b,a,c)});return b}function Ke(){var b=this.defaults={transformResponse:[Zb],transformRequest:[function(a){return J(a)&&"[object File]"!==Da.call(a)&&"[object Blob]"!==Da.call(a)&&"[object FormData]"!==Da.call(a)?$a(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},
+post:qa($b),put:qa($b),patch:qa($b)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},a=!1;this.useApplyAsync=function(b){return y(b)?(a=!!b,this):a};var c=this.interceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(d,e,f,g,h,l){function k(a){function c(a){var b=w({},a);b.data=a.data?Zc(a.data,a.headers,a.status,e.transformResponse):a.data;a=a.status;return 200<=a&&300>a?b:h.reject(b)}function d(a){var b,c={};s(a,function(a,d){G(a)?(b=
+a(),null!=b&&(c[d]=b)):c[d]=a});return c}if(!aa.isObject(a))throw M("$http")("badreq",a);var e=w({method:"get",transformRequest:b.transformRequest,transformResponse:b.transformResponse},a);e.headers=function(a){var c=b.headers,e=w({},a.headers),f,g,c=w({},c.common,c[R(a.method)]);a:for(f in c){a=R(f);for(g in e)if(R(g)===a)continue a;e[f]=c[f]}return d(e)}(a);e.method=vb(e.method);var f=[function(a){var d=a.headers,e=Zc(a.data,Yc(d),u,a.transformRequest);z(e)&&s(d,function(a,b){"content-type"===R(b)&&
+delete d[b]});z(a.withCredentials)&&!z(b.withCredentials)&&(a.withCredentials=b.withCredentials);return m(a,e).then(c,c)},u],g=h.when(e);for(s(t,function(a){(a.request||a.requestError)&&f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var l=f.shift(),g=g.then(a,l)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,e)});return g};g.error=function(a){g.then(null,function(b){a(b.data,b.status,b.headers,e)});
+return g};return g}function m(c,f){function l(b,c,d,e){function f(){n(c,b,d,e)}N&&(200<=b&&300>b?N.put(I,[b,c,Xc(d),e]):N.remove(I));a?g.$applyAsync(f):(f(),g.$$phase||g.$apply())}function n(a,b,d,e){b=Math.max(b,0);(200<=b&&300>b?v.resolve:v.reject)({data:a,status:b,headers:Yc(d),config:c,statusText:e})}function m(a){n(a.data,a.status,qa(a.headers()),a.statusText)}function t(){var a=k.pendingRequests.indexOf(c);-1!==a&&k.pendingRequests.splice(a,1)}var v=h.defer(),A=v.promise,N,F,s=c.headers,I=p(c.url,
+c.params);k.pendingRequests.push(c);A.then(t,t);!c.cache&&!b.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(N=J(c.cache)?c.cache:J(b.cache)?b.cache:q);N&&(F=N.get(I),y(F)?F&&G(F.then)?F.then(m,m):E(F)?n(F[1],F[0],qa(F[2]),F[3]):n(F,200,{},"OK"):N.put(I,A));z(F)&&((F=$c(c.url)?e.cookies()[c.xsrfCookieName||b.xsrfCookieName]:u)&&(s[c.xsrfHeaderName||b.xsrfHeaderName]=F),d(c.method,I,f,l,s,c.timeout,c.withCredentials,c.responseType));return A}function p(a,b){if(!b)return a;var c=[];Ed(b,
+function(a,b){null===a||z(a)||(E(a)||(a=[a]),s(a,function(a){J(a)&&(a=pa(a)?a.toISOString():$a(a));c.push(Fa(b)+"="+Fa(a))}))});0<c.length&&(a+=(-1==a.indexOf("?")?"?":"&")+c.join("&"));return a}var q=f("$http"),t=[];s(c,function(a){t.unshift(x(a)?l.get(a):l.invoke(a))});k.pendingRequests=[];(function(a){s(arguments,function(a){k[a]=function(b,c){return k(w(c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){s(arguments,function(a){k[a]=function(b,c,d){return k(w(d||{},{method:a,
+url:b,data:c}))}})})("post","put","patch");k.defaults=b;return k}]}function uf(){return new P.XMLHttpRequest}function Le(){this.$get=["$browser","$window","$document",function(b,a,c){return vf(b,uf,b.defer,a.angular.callbacks,c[0])}]}function vf(b,a,c,d,e){function f(a,b,c){var f=e.createElement("script"),m=null;f.type="text/javascript";f.src=a;f.async=!0;m=function(a){f.removeEventListener("load",m,!1);f.removeEventListener("error",m,!1);e.body.removeChild(f);f=null;var g=-1,t="unknown";a&&("load"!==
+a.type||d[b].called||(a={type:"error"}),t=a.type,g="error"===a.type?404:200);c&&c(g,t)};f.addEventListener("load",m,!1);f.addEventListener("error",m,!1);e.body.appendChild(f);return m}return function(e,h,l,k,m,p,q,t){function r(){n&&n();D&&D.abort()}function S(a,d,e,f,g){v!==u&&c.cancel(v);n=D=null;a(d,e,f,g);b.$$completeOutstandingRequest(B)}b.$$incOutstandingRequestCount();h=h||b.url();if("jsonp"==R(e)){var K="_"+(d.counter++).toString(36);d[K]=function(a){d[K].data=a;d[K].called=!0};var n=f(h.replace("JSON_CALLBACK",
+"angular.callbacks."+K),K,function(a,b){S(k,a,d[K].data,"",b);d[K]=B})}else{var D=a();D.open(e,h,!0);s(m,function(a,b){y(a)&&D.setRequestHeader(b,a)});D.onload=function(){var a=D.statusText||"",b="response"in D?D.response:D.responseText,c=1223===D.status?204:D.status;0===c&&(c=b?200:"file"==Ba(h).protocol?404:0);S(k,c,b,D.getAllResponseHeaders(),a)};e=function(){S(k,-1,null,null,"")};D.onerror=e;D.onabort=e;q&&(D.withCredentials=!0);if(t)try{D.responseType=t}catch(H){if("json"!==t)throw H;}D.send(l||
+null)}if(0<p)var v=c(r,p);else p&&G(p.then)&&p.then(r)}}function Ie(){var b="{{",a="}}";this.startSymbol=function(a){return a?(b=a,this):b};this.endSymbol=function(b){return b?(a=b,this):a};this.$get=["$parse","$exceptionHandler","$sce",function(c,d,e){function f(a){return"\\\\\\"+a}function g(f,g,t,r){function S(c){return c.replace(k,b).replace(m,a)}function K(a){try{var b=a;a=t?e.getTrusted(t,b):e.valueOf(b);var c;if(r&&!y(a))c=a;else if(null==a)c="";else{switch(typeof a){case "string":break;case "number":a=
+""+a;break;default:a=$a(a)}c=a}return c}catch(g){c=ac("interr",f,g.toString()),d(c)}}r=!!r;for(var n,D,H=0,v=[],A=[],N=f.length,F=[],s=[];H<N;)if(-1!=(n=f.indexOf(b,H))&&-1!=(D=f.indexOf(a,n+h)))H!==n&&F.push(S(f.substring(H,n))),H=f.substring(n+h,D),v.push(H),A.push(c(H,K)),H=D+l,s.push(F.length),F.push("");else{H!==N&&F.push(S(f.substring(H)));break}if(t&&1<F.length)throw ac("noconcat",f);if(!g||v.length){var I=function(a){for(var b=0,c=v.length;b<c;b++){if(r&&z(a[b]))return;F[s[b]]=a[b]}return F.join("")};
+return w(function(a){var b=0,c=v.length,e=Array(c);try{for(;b<c;b++)e[b]=A[b](a);return I(e)}catch(g){a=ac("interr",f,g.toString()),d(a)}},{exp:f,expressions:v,$$watchDelegate:function(a,b,c){var d;return a.$watchGroup(A,function(c,e){var f=I(c);G(b)&&b.call(this,f,c!==e?d:f,a);d=f},c)}})}}var h=b.length,l=a.length,k=new RegExp(b.replace(/./g,f),"g"),m=new RegExp(a.replace(/./g,f),"g");g.startSymbol=function(){return b};g.endSymbol=function(){return a};return g}]}function Je(){this.$get=["$rootScope",
+"$window","$q","$$q",function(b,a,c,d){function e(e,h,l,k){var m=a.setInterval,p=a.clearInterval,q=0,t=y(k)&&!k,r=(t?d:c).defer(),S=r.promise;l=y(l)?l:0;S.then(null,null,e);S.$$intervalId=m(function(){r.notify(q++);0<l&&q>=l&&(r.resolve(q),p(S.$$intervalId),delete f[S.$$intervalId]);t||b.$apply()},h);f[S.$$intervalId]=r;return S}var f={};e.cancel=function(b){return b&&b.$$intervalId in f?(f[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete f[b.$$intervalId],!0):!1};return e}]}
+function Rd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),
+DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function bc(b){b=b.split("/");for(var a=b.length;a--;)b[a]=rb(b[a]);return b.join("/")}function ad(b,a){var c=Ba(b);a.$$protocol=
+c.protocol;a.$$host=c.hostname;a.$$port=$(c.port)||wf[c.protocol]||null}function bd(b,a){var c="/"!==b.charAt(0);c&&(b="/"+b);var d=Ba(b);a.$$path=decodeURIComponent(c&&"/"===d.pathname.charAt(0)?d.pathname.substring(1):d.pathname);a.$$search=rc(d.search);a.$$hash=decodeURIComponent(d.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function za(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Ha(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Gb(b){return b.replace(/(#.+)|#$/,
+"$1")}function cc(b){return b.substr(0,Ha(b).lastIndexOf("/")+1)}function dc(b,a){this.$$html5=!0;a=a||"";var c=cc(b);ad(b,this);this.$$parse=function(a){var b=za(c,a);if(!x(b))throw Hb("ipthprfx",a,c);bd(b,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Qb(this.$$search),b=this.$$hash?"#"+rb(this.$$hash):"";this.$$url=bc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),
+!0;var f,g;(f=za(b,d))!==u?(g=f,g=(f=za(a,f))!==u?c+(za("/",f)||f):b+g):(f=za(c,d))!==u?g=c+f:c==d+"/"&&(g=c);g&&this.$$parse(g);return!!g}}function ec(b,a){var c=cc(b);ad(b,this);this.$$parse=function(d){d=za(b,d)||za(c,d);var e;"#"===d.charAt(0)?(e=za(a,d),z(e)&&(e=d)):e=this.$$html5?d:"";bd(e,this);d=this.$$path;var f=/^\/[A-Z]:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=Qb(this.$$search),e=this.$$hash?
+"#"+rb(this.$$hash):"";this.$$url=bc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$parseLinkUrl=function(a,c){return Ha(b)==Ha(a)?(this.$$parse(a),!0):!1}}function cd(b,a){this.$$html5=!0;ec.apply(this,arguments);var c=cc(b);this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;b==Ha(d)?f=d:(g=za(c,d))?f=b+a+g:c===d+"/"&&(f=c);f&&this.$$parse(f);return!!f};this.$$compose=function(){var c=Qb(this.$$search),e=this.$$hash?"#"+rb(this.$$hash):
+"";this.$$url=bc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+a+this.$$url}}function Ib(b){return function(){return this[b]}}function dd(b,a){return function(c){if(z(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Me(){var b="",a={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(a){return y(a)?(b=a,this):b};this.html5Mode=function(b){return Wa(b)?(a.enabled=b,this):J(b)?(Wa(b.enabled)&&(a.enabled=b.enabled),Wa(b.requireBase)&&(a.requireBase=b.requireBase),Wa(b.rewriteLinks)&&
+(a.rewriteLinks=b.rewriteLinks),this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(c,d,e,f,g){function h(a,b,c){var e=k.url(),f=k.$$state;try{d.url(a,b,c),k.$$state=d.state()}catch(g){throw k.url(e),k.$$state=f,g;}}function l(a,b){c.$broadcast("$locationChangeSuccess",k.absUrl(),a,k.$$state,b)}var k,m;m=d.baseHref();var p=d.url(),q;if(a.enabled){if(!m&&a.requireBase)throw Hb("nobase");q=p.substring(0,p.indexOf("/",p.indexOf("//")+2))+(m||"/");m=e.history?dc:cd}else q=
+Ha(p),m=ec;k=new m(q,"#"+b);k.$$parseLinkUrl(p,p);k.$$state=d.state();var t=/^\s*(javascript|mailto):/i;f.on("click",function(b){if(a.rewriteLinks&&!b.ctrlKey&&!b.metaKey&&!b.shiftKey&&2!=b.which&&2!=b.button){for(var e=C(b.target);"a"!==ta(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),l=e.attr("href")||e.attr("xlink:href");J(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=Ba(h.animVal).href);t.test(h)||!h||e.attr("target")||b.isDefaultPrevented()||!k.$$parseLinkUrl(h,
+l)||(b.preventDefault(),k.absUrl()!=d.url()&&(c.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});Gb(k.absUrl())!=Gb(p)&&d.url(k.absUrl(),!0);var r=!0;d.onUrlChange(function(a,b){c.$evalAsync(function(){var d=k.absUrl(),e=k.$$state,f;k.$$parse(a);k.$$state=b;f=c.$broadcast("$locationChangeStart",a,d,b,e).defaultPrevented;k.absUrl()===a&&(f?(k.$$parse(d),k.$$state=e,h(d,!1,e)):(r=!1,l(d,e)))});c.$$phase||c.$digest()});c.$watch(function(){var a=Gb(d.url()),b=Gb(k.absUrl()),f=d.state(),g=k.$$replace,
+q=a!==b||k.$$html5&&e.history&&f!==k.$$state;if(r||q)r=!1,c.$evalAsync(function(){var b=k.absUrl(),d=c.$broadcast("$locationChangeStart",b,a,k.$$state,f).defaultPrevented;k.absUrl()===b&&(d?(k.$$parse(a),k.$$state=f):(q&&h(b,g,f===k.$$state?null:k.$$state),l(a,f)))});k.$$replace=!1});return k}]}function Ne(){var b=!0,a=this;this.debugEnabled=function(a){return y(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?
+"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||B;a=!1;try{a=!!e.apply}catch(l){}return a?function(){var a=[];s(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function sa(b,a){if("__defineGetter__"===
+b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"===b)throw ka("isecfld",a);return b}function la(b,a){if(b){if(b.constructor===b)throw ka("isecfn",a);if(b.window===b)throw ka("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw ka("isecdom",a);if(b===Object)throw ka("isecobj",a);}return b}function fc(b){return b.constant}function hb(b,a,c,d,e){la(b,e);la(a,e);c=c.split(".");for(var f,g=0;1<c.length;g++){f=sa(c.shift(),e);var h=0===g&&a&&a[f]||
+b[f];h||(h={},b[f]=h);b=la(h,e)}f=sa(c.shift(),e);la(b[f],e);return b[f]=d}function Qa(b){return"constructor"==b}function ed(b,a,c,d,e,f,g){sa(b,f);sa(a,f);sa(c,f);sa(d,f);sa(e,f);var h=function(a){return la(a,f)},l=g||Qa(b)?h:oa,k=g||Qa(a)?h:oa,m=g||Qa(c)?h:oa,p=g||Qa(d)?h:oa,q=g||Qa(e)?h:oa;return function(f,g){var h=g&&g.hasOwnProperty(b)?g:f;if(null==h)return h;h=l(h[b]);if(!a)return h;if(null==h)return u;h=k(h[a]);if(!c)return h;if(null==h)return u;h=m(h[c]);if(!d)return h;if(null==h)return u;
+h=p(h[d]);return e?null==h?u:h=q(h[e]):h}}function xf(b,a){return function(c,d){return b(c,d,la,a)}}function yf(b,a,c){var d=a.expensiveChecks,e=d?zf:Af,f=e[b];if(f)return f;var g=b.split("."),h=g.length;if(a.csp)f=6>h?ed(g[0],g[1],g[2],g[3],g[4],c,d):function(a,b){var e=0,f;do f=ed(g[e++],g[e++],g[e++],g[e++],g[e++],c,d)(a,b),b=u,a=f;while(e<h);return f};else{var l="";d&&(l+="s = eso(s, fe);\nl = eso(l, fe);\n");var k=d;s(g,function(a,b){sa(a,c);var e=(b?"s":'((l&&l.hasOwnProperty("'+a+'"))?l:s)')+
+"."+a;if(d||Qa(a))e="eso("+e+", fe)",k=!0;l+="if(s == null) return undefined;\ns="+e+";\n"});l+="return s;";a=new Function("s","l","eso","fe",l);a.toString=da(l);k&&(a=xf(a,c));f=a}f.sharedGetter=!0;f.assign=function(a,c,d){return hb(a,d,b,c,b)};return e[b]=f}function gc(b){return G(b.valueOf)?b.valueOf():Bf.call(b)}function Oe(){var b=fa(),a=fa();this.$get=["$filter","$sniffer",function(c,d){function e(a){var b=a;a.sharedGetter&&(b=function(b,c){return a(b,c)},b.literal=a.literal,b.constant=a.constant,
+b.assign=a.assign);return b}function f(a,b){for(var c=0,d=a.length;c<d;c++){var e=a[c];e.constant||(e.inputs?f(e.inputs,b):-1===b.indexOf(e)&&b.push(e))}return b}function g(a,b){return null==a||null==b?a===b:"object"===typeof a&&(a=gc(a),"object"===typeof a)?!1:a===b||a!==a&&b!==b}function h(a,b,c,d){var e=d.$$inputs||(d.$$inputs=f(d.inputs,[])),h;if(1===e.length){var l=g,e=e[0];return a.$watch(function(a){var b=e(a);g(b,l)||(h=d(a),l=b&&gc(b));return h},b,c)}for(var k=[],q=0,p=e.length;q<p;q++)k[q]=
+g;return a.$watch(function(a){for(var b=!1,c=0,f=e.length;c<f;c++){var l=e[c](a);if(b||(b=!g(l,k[c])))k[c]=l&&gc(l)}b&&(h=d(a));return h},b,c)}function l(a,b,c,d){var e,f;return e=a.$watch(function(a){return d(a)},function(a,c,d){f=a;G(b)&&b.apply(this,arguments);y(a)&&d.$$postDigest(function(){y(f)&&e()})},c)}function k(a,b,c,d){function e(a){var b=!0;s(a,function(a){y(a)||(b=!1)});return b}var f,g;return f=a.$watch(function(a){return d(a)},function(a,c,d){g=a;G(b)&&b.call(this,a,c,d);e(a)&&d.$$postDigest(function(){e(g)&&
+f()})},c)}function m(a,b,c,d){var e;return e=a.$watch(function(a){return d(a)},function(a,c,d){G(b)&&b.apply(this,arguments);e()},c)}function p(a,b){if(!b)return a;var c=a.$$watchDelegate,c=c!==k&&c!==l?function(c,d){var e=a(c,d);return b(e,c,d)}:function(c,d){var e=a(c,d),f=b(e,c,d);return y(e)?f:e};a.$$watchDelegate&&a.$$watchDelegate!==h?c.$$watchDelegate=a.$$watchDelegate:b.$stateful||(c.$$watchDelegate=h,c.inputs=[a]);return c}var q={csp:d.csp,expensiveChecks:!1},t={csp:d.csp,expensiveChecks:!0};
+return function(d,f,g){var n,D,H;switch(typeof d){case "string":H=d=d.trim();var v=g?a:b;n=v[H];n||(":"===d.charAt(0)&&":"===d.charAt(1)&&(D=!0,d=d.substring(2)),g=g?t:q,n=new hc(g),n=(new ib(n,c,g)).parse(d),n.constant?n.$$watchDelegate=m:D?(n=e(n),n.$$watchDelegate=n.literal?k:l):n.inputs&&(n.$$watchDelegate=h),v[H]=n);return p(n,f);case "function":return p(d,f);default:return p(B,f)}}}]}function Qe(){this.$get=["$rootScope","$exceptionHandler",function(b,a){return fd(function(a){b.$evalAsync(a)},
+a)}]}function Re(){this.$get=["$browser","$exceptionHandler",function(b,a){return fd(function(a){b.defer(a)},a)}]}function fd(b,a){function c(a,b,c){function d(b){return function(c){e||(e=!0,b.call(a,c))}}var e=!1;return[d(b),d(c)]}function d(){this.$$state={status:0}}function e(a,b){return function(c){b.call(a,c)}}function f(c){!c.processScheduled&&c.pending&&(c.processScheduled=!0,b(function(){var b,d,e;e=c.pending;c.processScheduled=!1;c.pending=u;for(var f=0,g=e.length;f<g;++f){d=e[f][0];b=e[f][c.status];
+try{G(b)?d.resolve(b(c.value)):1===c.status?d.resolve(c.value):d.reject(c.value)}catch(h){d.reject(h),a(h)}}}))}function g(){this.promise=new d;this.resolve=e(this,this.resolve);this.reject=e(this,this.reject);this.notify=e(this,this.notify)}var h=M("$q",TypeError);d.prototype={then:function(a,b,c){var d=new g;this.$$state.pending=this.$$state.pending||[];this.$$state.pending.push([d,a,b,c]);0<this.$$state.status&&f(this.$$state);return d.promise},"catch":function(a){return this.then(null,a)},"finally":function(a,
+b){return this.then(function(b){return k(b,!0,a)},function(b){return k(b,!1,a)},b)}};g.prototype={resolve:function(a){this.promise.$$state.status||(a===this.promise?this.$$reject(h("qcycle",a)):this.$$resolve(a))},$$resolve:function(b){var d,e;e=c(this,this.$$resolve,this.$$reject);try{if(J(b)||G(b))d=b&&b.then;G(d)?(this.promise.$$state.status=-1,d.call(b,e[0],e[1],this.notify)):(this.promise.$$state.value=b,this.promise.$$state.status=1,f(this.promise.$$state))}catch(g){e[1](g),a(g)}},reject:function(a){this.promise.$$state.status||
+this.$$reject(a)},$$reject:function(a){this.promise.$$state.value=a;this.promise.$$state.status=2;f(this.promise.$$state)},notify:function(c){var d=this.promise.$$state.pending;0>=this.promise.$$state.status&&d&&d.length&&b(function(){for(var b,e,f=0,g=d.length;f<g;f++){e=d[f][0];b=d[f][3];try{e.notify(G(b)?b(c):c)}catch(h){a(h)}}})}};var l=function(a,b){var c=new g;b?c.resolve(a):c.reject(a);return c.promise},k=function(a,b,c){var d=null;try{G(c)&&(d=c())}catch(e){return l(e,!1)}return d&&G(d.then)?
+d.then(function(){return l(a,b)},function(a){return l(a,!1)}):l(a,b)},m=function(a,b,c,d){var e=new g;e.resolve(a);return e.promise.then(b,c,d)},p=function t(a){if(!G(a))throw h("norslvr",a);if(!(this instanceof t))return new t(a);var b=new g;a(function(a){b.resolve(a)},function(a){b.reject(a)});return b.promise};p.defer=function(){return new g};p.reject=function(a){var b=new g;b.reject(a);return b.promise};p.when=m;p.all=function(a){var b=new g,c=0,d=E(a)?[]:{};s(a,function(a,e){c++;m(a).then(function(a){d.hasOwnProperty(e)||
+(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise};return p}function $e(){this.$get=["$window","$timeout",function(b,a){var c=b.requestAnimationFrame||b.webkitRequestAnimationFrame,d=b.cancelAnimationFrame||b.webkitCancelAnimationFrame||b.webkitCancelRequestAnimationFrame,e=!!c,f=e?function(a){var b=c(a);return function(){d(b)}}:function(b){var c=a(b,16.66,!1);return function(){a.cancel(c)}};f.supported=e;return f}]}function Pe(){var b=
+10,a=M("$rootScope"),c=null,d=null;this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=["$injector","$exceptionHandler","$parse","$browser",function(e,f,g,h){function l(){this.$id=++ob;this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this.$root=this;this.$$destroyed=!1;this.$$listeners={};this.$$listenerCount={};this.$$isolateBindings=null}function k(b){if(r.$$phase)throw a("inprog",r.$$phase);r.$$phase=b}function m(a,
+b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function p(){}function q(){for(;n.length;)try{n.shift()()}catch(a){f(a)}d=null}function t(){null===d&&(d=h.defer(function(){r.$apply(q)}))}l.prototype={constructor:l,$new:function(a,b){function c(){d.$$destroyed=!0}var d;b=b||this;a?(d=new l,d.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=function(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null;this.$$listeners=
+{};this.$$listenerCount={};this.$id=++ob;this.$$ChildScope=null},this.$$ChildScope.prototype=this),d=new this.$$ChildScope);d.$parent=b;d.$$prevSibling=b.$$childTail;b.$$childHead?(b.$$childTail.$$nextSibling=d,b.$$childTail=d):b.$$childHead=b.$$childTail=d;(a||b!=this)&&d.$on("$destroy",c);return d},$watch:function(a,b,d){var e=g(a);if(e.$$watchDelegate)return e.$$watchDelegate(this,b,d,e);var f=this.$$watchers,h={fn:b,last:p,get:e,exp:a,eq:!!d};c=null;G(b)||(h.fn=B);f||(f=this.$$watchers=[]);f.unshift(h);
+return function(){Xa(f,h);c=null}},$watchGroup:function(a,b){function c(){h=!1;l?(l=!1,b(e,e,g)):b(e,d,g)}var d=Array(a.length),e=Array(a.length),f=[],g=this,h=!1,l=!0;if(!a.length){var k=!0;g.$evalAsync(function(){k&&b(e,e,g)});return function(){k=!1}}if(1===a.length)return this.$watch(a[0],function(a,c,f){e[0]=a;d[0]=c;b(e,a===c?e:d,f)});s(a,function(a,b){var l=g.$watch(a,function(a,f){e[b]=a;d[b]=f;h||(h=!0,g.$evalAsync(c))});f.push(l)});return function(){for(;f.length;)f.shift()()}},$watchCollection:function(a,
+b){function c(a){e=a;var b,d,g,h;if(!z(e)){if(J(e))if(Ta(e))for(f!==q&&(f=q,t=f.length=0,k++),a=e.length,t!==a&&(k++,f.length=t=a),b=0;b<a;b++)h=f[b],g=e[b],d=h!==h&&g!==g,d||h===g||(k++,f[b]=g);else{f!==m&&(f=m={},t=0,k++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,g=e[b],h=f[b],b in f?(d=h!==h&&g!==g,d||h===g||(k++,f[b]=g)):(t++,f[b]=g,k++));if(t>a)for(b in k++,f)e.hasOwnProperty(b)||(t--,delete f[b])}else f!==e&&(f=e,k++);return k}}c.$stateful=!0;var d=this,e,f,h,l=1<b.length,k=0,p=g(a,c),q=[],m=
+{},n=!0,t=0;return this.$watch(p,function(){n?(n=!1,b(e,e,d)):b(e,h,d);if(l)if(J(e))if(Ta(e)){h=Array(e.length);for(var a=0;a<e.length;a++)h[a]=e[a]}else for(a in h={},e)sc.call(e,a)&&(h[a]=e[a]);else h=e})},$digest:function(){var e,g,l,m,n,t,s=b,I,W=[],y,O;k("$digest");h.$$checkUrlChange();this===r&&null!==d&&(h.defer.cancel(d),q());c=null;do{t=!1;for(I=this;S.length;){try{O=S.shift(),O.scope.$eval(O.expression,O.locals)}catch(w){f(w)}c=null}a:do{if(m=I.$$watchers)for(n=m.length;n--;)try{if(e=m[n])if((g=
+e.get(I))!==(l=e.last)&&!(e.eq?ea(g,l):"number"===typeof g&&"number"===typeof l&&isNaN(g)&&isNaN(l)))t=!0,c=e,e.last=e.eq?Ea(g,null):g,e.fn(g,l===p?g:l,I),5>s&&(y=4-s,W[y]||(W[y]=[]),W[y].push({msg:G(e.exp)?"fn: "+(e.exp.name||e.exp.toString()):e.exp,newVal:g,oldVal:l}));else if(e===c){t=!1;break a}}catch(C){f(C)}if(!(m=I.$$childHead||I!==this&&I.$$nextSibling))for(;I!==this&&!(m=I.$$nextSibling);)I=I.$parent}while(I=m);if((t||S.length)&&!s--)throw r.$$phase=null,a("infdig",b,W);}while(t||S.length);
+for(r.$$phase=null;u.length;)try{u.shift()()}catch(B){f(B)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;if(this!==r){for(var b in this.$$listenerCount)m(this,this.$$listenerCount[b],b);a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);
+this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=B;this.$on=this.$watch=this.$watchGroup=function(){return B};this.$$listeners={};this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a,b){r.$$phase||S.length||h.defer(function(){S.length&&r.$digest()});S.push({scope:this,expression:a,locals:b})},$$postDigest:function(a){u.push(a)},$apply:function(a){try{return k("$apply"),
+this.$eval(a)}catch(b){f(b)}finally{r.$$phase=null;try{r.$digest()}catch(c){throw f(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&n.push(b);t()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,m(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,g=!1,h={name:a,targetScope:e,
+stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},l=Ya([h],arguments,1),k,m;do{d=e.$$listeners[a]||c;h.currentScope=e;k=0;for(m=d.length;k<m;k++)if(d[k])try{d[k].apply(null,l)}catch(p){f(p)}else d.splice(k,1),k--,m--;if(g)return h.currentScope=null,h;e=e.$parent}while(e);h.currentScope=null;return h},$broadcast:function(a,b){var c=this,d=this,e={name:a,targetScope:this,preventDefault:function(){e.defaultPrevented=!0},defaultPrevented:!1};if(!this.$$listenerCount[a])return e;
+for(var g=Ya([e],arguments,1),h,l;c=d;){e.currentScope=c;d=c.$$listeners[a]||[];h=0;for(l=d.length;h<l;h++)if(d[h])try{d[h].apply(null,g)}catch(k){f(k)}else d.splice(h,1),h--,l--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=c.$$nextSibling);)c=c.$parent}e.currentScope=null;return e}};var r=new l,S=r.$$asyncQueue=[],u=r.$$postDigestQueue=[],n=r.$$applyAsyncQueue=[];return r}]}function Sd(){var b=/^\s*(https?|ftp|mailto|tel|file):/,a=/^\s*((https?|ftp|file|blob):|data:image\/)/;
+this.aHrefSanitizationWhitelist=function(a){return y(a)?(b=a,this):b};this.imgSrcSanitizationWhitelist=function(b){return y(b)?(a=b,this):a};this.$get=function(){return function(c,d){var e=d?a:b,f;f=Ba(c).href;return""===f||f.match(e)?c:"unsafe:"+f}}}function Cf(b){if("self"===b)return b;if(x(b)){if(-1<b.indexOf("***"))throw Ca("iwcard",b);b=gd(b).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return new RegExp("^"+b+"$")}if(pb(b))return new RegExp("^"+b.source+"$");throw Ca("imatcher");}function hd(b){var a=
+[];y(b)&&s(b,function(b){a.push(Cf(b))});return a}function Te(){this.SCE_CONTEXTS=ma;var b=["self"],a=[];this.resourceUrlWhitelist=function(a){arguments.length&&(b=hd(a));return b};this.resourceUrlBlacklist=function(b){arguments.length&&(a=hd(b));return a};this.$get=["$injector",function(c){function d(a,b){return"self"===a?$c(b):!!a.exec(b.href)}function e(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};
+b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var f=function(a){throw Ca("unsafe");};c.has("$sanitize")&&(f=c.get("$sanitize"));var g=e(),h={};h[ma.HTML]=e(g);h[ma.CSS]=e(g);h[ma.URL]=e(g);h[ma.JS]=e(g);h[ma.RESOURCE_URL]=e(h[ma.URL]);return{trustAs:function(a,b){var c=h.hasOwnProperty(a)?h[a]:null;if(!c)throw Ca("icontext",a,b);if(null===b||b===u||""===b)return b;if("string"!==typeof b)throw Ca("itype",a);return new c(b)},getTrusted:function(c,e){if(null===
+e||e===u||""===e)return e;var g=h.hasOwnProperty(c)?h[c]:null;if(g&&e instanceof g)return e.$$unwrapTrustedValue();if(c===ma.RESOURCE_URL){var g=Ba(e.toString()),p,q,t=!1;p=0;for(q=b.length;p<q;p++)if(d(b[p],g)){t=!0;break}if(t)for(p=0,q=a.length;p<q;p++)if(d(a[p],g)){t=!1;break}if(t)return e;throw Ca("insecurl",e.toString());}if(c===ma.HTML)return f(e);throw Ca("unsafe");},valueOf:function(a){return a instanceof g?a.$$unwrapTrustedValue():a}}}]}function Se(){var b=!0;this.enabled=function(a){arguments.length&&
+(b=!!a);return b};this.$get=["$parse","$sceDelegate",function(a,c){if(b&&8>Ra)throw Ca("iequirks");var d=qa(ma);d.isEnabled=function(){return b};d.trustAs=c.trustAs;d.getTrusted=c.getTrusted;d.valueOf=c.valueOf;b||(d.trustAs=d.getTrusted=function(a,b){return b},d.valueOf=oa);d.parseAs=function(b,c){var e=a(c);return e.literal&&e.constant?e:a(c,function(a){return d.getTrusted(b,a)})};var e=d.parseAs,f=d.getTrusted,g=d.trustAs;s(ma,function(a,b){var c=R(b);d[db("parse_as_"+c)]=function(b){return e(a,
+b)};d[db("get_trusted_"+c)]=function(b){return f(a,b)};d[db("trust_as_"+c)]=function(b){return g(a,b)}});return d}]}function Ue(){this.$get=["$window","$document",function(b,a){var c={},d=$((/android (\d+)/.exec(R((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,l=f.body&&f.body.style,k=!1,m=!1;if(l){for(var p in l)if(k=h.exec(p)){g=k[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in l&&"webkit");
+k=!!("transition"in l||g+"Transition"in l);m=!!("animation"in l||g+"Animation"in l);!d||k&&m||(k=x(f.body.style.webkitTransition),m=x(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hasEvent:function(a){if("input"===a&&11>=Ra)return!1;if(z(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:bb(),vendorPrefix:g,transitions:k,animations:m,android:d}}]}function We(){this.$get=["$templateCache","$http","$q",function(b,a,c){function d(e,f){d.totalPendingRequests++;
+var g=a.defaults&&a.defaults.transformResponse;E(g)?g=g.filter(function(a){return a!==Zb}):g===Zb&&(g=null);return a.get(e,{cache:b,transformResponse:g}).finally(function(){d.totalPendingRequests--}).then(function(a){return a.data},function(a){if(!f)throw ia("tpload",e);return c.reject(a)})}d.totalPendingRequests=0;return d}]}function Xe(){this.$get=["$rootScope","$browser","$location",function(b,a,c){return{findBindings:function(a,b,c){a=a.getElementsByClassName("ng-binding");var g=[];s(a,function(a){var d=
+aa.element(a).data("$binding");d&&s(d,function(d){c?(new RegExp("(^|\\s)"+gd(b)+"(\\s|\\||$)")).test(d)&&g.push(a):-1!=d.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,c){for(var g=["ng-","data-ng-","ng\\:"],h=0;h<g.length;++h){var l=a.querySelectorAll("["+g[h]+"model"+(c?"=":"*=")+'"'+b+'"]');if(l.length)return l}},getLocation:function(){return c.url()},setLocation:function(a){a!==c.url()&&(c.url(a),b.$digest())},whenStable:function(b){a.notifyWhenNoOutstandingRequests(b)}}}]}function Ye(){this.$get=
+["$rootScope","$browser","$q","$$q","$exceptionHandler",function(b,a,c,d,e){function f(f,l,k){var m=y(k)&&!k,p=(m?d:c).defer(),q=p.promise;l=a.defer(function(){try{p.resolve(f())}catch(a){p.reject(a),e(a)}finally{delete g[q.$$timeoutId]}m||b.$apply()},l);q.$$timeoutId=l;g[l]=p;return q}var g={};f.cancel=function(b){return b&&b.$$timeoutId in g?(g[b.$$timeoutId].reject("canceled"),delete g[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):!1};return f}]}function Ba(b){Ra&&(Y.setAttribute("href",b),b=Y.href);
+Y.setAttribute("href",b);return{href:Y.href,protocol:Y.protocol?Y.protocol.replace(/:$/,""):"",host:Y.host,search:Y.search?Y.search.replace(/^\?/,""):"",hash:Y.hash?Y.hash.replace(/^#/,""):"",hostname:Y.hostname,port:Y.port,pathname:"/"===Y.pathname.charAt(0)?Y.pathname:"/"+Y.pathname}}function $c(b){b=x(b)?Ba(b):b;return b.protocol===id.protocol&&b.host===id.host}function Ze(){this.$get=da(P)}function Ec(b){function a(c,d){if(J(c)){var e={};s(c,function(b,c){e[c]=a(c,b)});return e}return b.factory(c+
+"Filter",d)}this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+"Filter")}}];a("currency",jd);a("date",kd);a("filter",Df);a("json",Ef);a("limitTo",Ff);a("lowercase",Gf);a("number",ld);a("orderBy",md);a("uppercase",Hf)}function Df(){return function(b,a,c){if(!E(b))return b;var d;switch(typeof a){case "function":break;case "boolean":case "number":case "string":d=!0;case "object":a=If(a,c,d);break;default:return b}return b.filter(a)}}function If(b,a,c){var d=J(b)&&"$"in
+b;!0===a?a=ea:G(a)||(a=function(a,b){if(J(a)||J(b))return!1;a=R(""+a);b=R(""+b);return-1!==a.indexOf(b)});return function(e){return d&&!J(e)?Ia(e,b.$,a,!1):Ia(e,b,a,c)}}function Ia(b,a,c,d,e){var f=typeof b,g=typeof a;if("string"===g&&"!"===a.charAt(0))return!Ia(b,a.substring(1),c,d);if(E(b))return b.some(function(b){return Ia(b,a,c,d)});switch(f){case "object":var h;if(d){for(h in b)if("$"!==h.charAt(0)&&Ia(b[h],a,c,!0))return!0;return e?!1:Ia(b,a,c,!1)}if("object"===g){for(h in a)if(e=a[h],!G(e)&&
+(f="$"===h,!Ia(f?b:b[h],e,c,f,f)))return!1;return!0}return c(b,a);case "function":return!1;default:return c(b,a)}}function jd(b){var a=b.NUMBER_FORMATS;return function(b,d,e){z(d)&&(d=a.CURRENCY_SYM);z(e)&&(e=a.PATTERNS[1].maxFrac);return null==b?b:nd(b,a.PATTERNS[1],a.GROUP_SEP,a.DECIMAL_SEP,e).replace(/\u00A4/g,d)}}function ld(b){var a=b.NUMBER_FORMATS;return function(b,d){return null==b?b:nd(b,a.PATTERNS[0],a.GROUP_SEP,a.DECIMAL_SEP,d)}}function nd(b,a,c,d,e){if(!isFinite(b)||J(b))return"";var f=
+0>b;b=Math.abs(b);var g=b+"",h="",l=[],k=!1;if(-1!==g.indexOf("e")){var m=g.match(/([\d\.]+)e(-?)(\d+)/);m&&"-"==m[2]&&m[3]>e+1?b=0:(h=g,k=!0)}if(k)0<e&&1>b&&(h=b.toFixed(e),b=parseFloat(h));else{g=(g.split(od)[1]||"").length;z(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);var g=(""+b).split(od),k=g[0],g=g[1]||"",p=0,q=a.lgSize,t=a.gSize;if(k.length>=q+t)for(p=k.length-q,m=0;m<p;m++)0===(p-m)%t&&0!==m&&(h+=c),h+=k.charAt(m);for(m=p;m<k.length;m++)0===
+(k.length-m)%q&&0!==m&&(h+=c),h+=k.charAt(m);for(;g.length<e;)g+="0";e&&"0"!==e&&(h+=d+g.substr(0,e))}0===b&&(f=!1);l.push(f?a.negPre:a.posPre,h,f?a.negSuf:a.posSuf);return l.join("")}function Jb(b,a,c){var d="";0>b&&(d="-",b=-b);for(b=""+b;b.length<a;)b="0"+b;c&&(b=b.substr(b.length-a));return d+b}function Z(b,a,c,d){c=c||0;return function(e){e=e["get"+b]();if(0<c||e>-c)e+=c;0===e&&-12==c&&(e=12);return Jb(e,a,d)}}function Kb(b,a){return function(c,d){var e=c["get"+b](),f=vb(a?"SHORT"+b:b);return d[f][e]}}
+function pd(b){var a=(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function qd(b){return function(a){var c=pd(a.getFullYear());a=+new Date(a.getFullYear(),a.getMonth(),a.getDate()+(4-a.getDay()))-+c;a=1+Math.round(a/6048E5);return Jb(a,b)}}function kd(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,l=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=$(b[9]+b[10]),g=$(b[9]+b[11]));h.call(a,$(b[1]),$(b[2])-1,$(b[3]));f=$(b[4]||0)-f;g=$(b[5]||
+0)-g;h=$(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));l.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e,f){var g="",h=[],l,k;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;x(c)&&(c=Jf.test(c)?$(c):a(c));V(c)&&(c=new Date(c));if(!pa(c))return c;for(;e;)(k=Kf.exec(e))?(h=Ya(h,k,1),e=h.pop()):(h.push(e),e=null);f&&"UTC"===f&&(c=new Date(c.getTime()),c.setMinutes(c.getMinutes()+c.getTimezoneOffset()));
+s(h,function(a){l=Lf[a];g+=l?l(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function Ef(){return function(b,a){z(a)&&(a=2);return $a(b,a)}}function Ff(){return function(b,a){V(b)&&(b=b.toString());return E(b)||x(b)?(a=Infinity===Math.abs(Number(a))?Number(a):$(a))?0<a?b.slice(0,a):b.slice(a):x(b)?"":[]:b}}function md(b){return function(a,c,d){function e(a,b){return b?function(b,c){return a(c,b)}:a}function f(a){switch(typeof a){case "number":case "boolean":case "string":return!0;
+default:return!1}}function g(a){return null===a?"null":"function"===typeof a.valueOf&&(a=a.valueOf(),f(a))||"function"===typeof a.toString&&(a=a.toString(),f(a))?a:""}function h(a,b){var c=typeof a,d=typeof b;c===d&&"object"===c&&(a=g(a),b=g(b));return c===d?("string"===c&&(a=a.toLowerCase(),b=b.toLowerCase()),a===b?0:a<b?-1:1):c<d?-1:1}if(!Ta(a))return a;c=E(c)?c:[c];0===c.length&&(c=["+"]);c=c.map(function(a){var c=!1,d=a||oa;if(x(a)){if("+"==a.charAt(0)||"-"==a.charAt(0))c="-"==a.charAt(0),a=a.substring(1);
+if(""===a)return e(h,c);d=b(a);if(d.constant){var f=d();return e(function(a,b){return h(a[f],b[f])},c)}}return e(function(a,b){return h(d(a),d(b))},c)});return Za.call(a).sort(e(function(a,b){for(var d=0;d<c.length;d++){var e=c[d](a,b);if(0!==e)return e}return 0},d))}}function Ja(b){G(b)&&(b={link:b});b.restrict=b.restrict||"AC";return da(b)}function rd(b,a,c,d,e){var f=this,g=[],h=f.$$parentForm=b.parent().controller("form")||Lb;f.$error={};f.$$success={};f.$pending=u;f.$name=e(a.name||a.ngForm||
+"")(c);f.$dirty=!1;f.$pristine=!0;f.$valid=!0;f.$invalid=!1;f.$submitted=!1;h.$addControl(f);f.$rollbackViewValue=function(){s(g,function(a){a.$rollbackViewValue()})};f.$commitViewValue=function(){s(g,function(a){a.$commitViewValue()})};f.$addControl=function(a){Ma(a.$name,"input");g.push(a);a.$name&&(f[a.$name]=a)};f.$$renameControl=function(a,b){var c=a.$name;f[c]===a&&delete f[c];f[b]=a;a.$name=b};f.$removeControl=function(a){a.$name&&f[a.$name]===a&&delete f[a.$name];s(f.$pending,function(b,c){f.$setValidity(c,
+null,a)});s(f.$error,function(b,c){f.$setValidity(c,null,a)});s(f.$$success,function(b,c){f.$setValidity(c,null,a)});Xa(g,a)};sd({ctrl:this,$element:b,set:function(a,b,c){var d=a[b];d?-1===d.indexOf(c)&&d.push(c):a[b]=[c]},unset:function(a,b,c){var d=a[b];d&&(Xa(d,c),0===d.length&&delete a[b])},parentForm:h,$animate:d});f.$setDirty=function(){d.removeClass(b,Sa);d.addClass(b,Mb);f.$dirty=!0;f.$pristine=!1;h.$setDirty()};f.$setPristine=function(){d.setClass(b,Sa,Mb+" ng-submitted");f.$dirty=!1;f.$pristine=
+!0;f.$submitted=!1;s(g,function(a){a.$setPristine()})};f.$setUntouched=function(){s(g,function(a){a.$setUntouched()})};f.$setSubmitted=function(){d.addClass(b,"ng-submitted");f.$submitted=!0;h.$setSubmitted()}}function ic(b){b.$formatters.push(function(a){return b.$isEmpty(a)?a:a.toString()})}function jb(b,a,c,d,e,f){var g=R(a[0].type);if(!e.android){var h=!1;a.on("compositionstart",function(a){h=!0});a.on("compositionend",function(){h=!1;l()})}var l=function(b){k&&(f.defer.cancel(k),k=null);if(!h){var e=
+a.val();b=b&&b.type;"password"===g||c.ngTrim&&"false"===c.ngTrim||(e=T(e));(d.$viewValue!==e||""===e&&d.$$hasNativeValidators)&&d.$setViewValue(e,b)}};if(e.hasEvent("input"))a.on("input",l);else{var k,m=function(a,b,c){k||(k=f.defer(function(){k=null;b&&b.value===c||l(a)}))};a.on("keydown",function(a){var b=a.keyCode;91===b||15<b&&19>b||37<=b&&40>=b||m(a,this,this.value)});if(e.hasEvent("paste"))a.on("paste cut",m)}a.on("change",l);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)}}
+function Nb(b,a){return function(c,d){var e,f;if(pa(c))return c;if(x(c)){'"'==c.charAt(0)&&'"'==c.charAt(c.length-1)&&(c=c.substring(1,c.length-1));if(Mf.test(c))return new Date(c);b.lastIndex=0;if(e=b.exec(c))return e.shift(),f=d?{yyyy:d.getFullYear(),MM:d.getMonth()+1,dd:d.getDate(),HH:d.getHours(),mm:d.getMinutes(),ss:d.getSeconds(),sss:d.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},s(e,function(b,c){c<a.length&&(f[a[c]]=+b)}),new Date(f.yyyy,f.MM-1,f.dd,f.HH,f.mm,f.ss||0,
+1E3*f.sss||0)}return NaN}}function kb(b,a,c,d){return function(e,f,g,h,l,k,m){function p(a){return a&&!(a.getTime&&a.getTime()!==a.getTime())}function q(a){return y(a)?pa(a)?a:c(a):u}td(e,f,g,h);jb(e,f,g,h,l,k);var t=h&&h.$options&&h.$options.timezone,r;h.$$parserName=b;h.$parsers.push(function(b){return h.$isEmpty(b)?null:a.test(b)?(b=c(b,r),"UTC"===t&&b.setMinutes(b.getMinutes()-b.getTimezoneOffset()),b):u});h.$formatters.push(function(a){if(a&&!pa(a))throw Ob("datefmt",a);if(p(a)){if((r=a)&&"UTC"===
+t){var b=6E4*r.getTimezoneOffset();r=new Date(r.getTime()+b)}return m("date")(a,d,t)}r=null;return""});if(y(g.min)||g.ngMin){var s;h.$validators.min=function(a){return!p(a)||z(s)||c(a)>=s};g.$observe("min",function(a){s=q(a);h.$validate()})}if(y(g.max)||g.ngMax){var K;h.$validators.max=function(a){return!p(a)||z(K)||c(a)<=K};g.$observe("max",function(a){K=q(a);h.$validate()})}}}function td(b,a,c,d){(d.$$hasNativeValidators=J(a[0].validity))&&d.$parsers.push(function(b){var c=a.prop("validity")||{};
+return c.badInput&&!c.typeMismatch?u:b})}function ud(b,a,c,d,e){if(y(d)){b=b(d);if(!b.constant)throw M("ngModel")("constexpr",c,d);return b(a)}return e}function jc(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;d<a.length;d++){for(var e=a[d],m=0;m<b.length;m++)if(e==b[m])continue a;c.push(e)}return c}function e(a){if(!E(a)){if(x(a))return a.split(" ");if(J(a)){var b=[];s(a,function(a,c){a&&(b=b.concat(c.split(" ")))});return b}}return a}return{restrict:"AC",link:function(f,
+g,h){function l(a,b){var c=g.data("$classCounts")||{},d=[];s(a,function(a){if(0<b||c[a])c[a]=(c[a]||0)+b,c[a]===+(0<b)&&d.push(a)});g.data("$classCounts",c);return d.join(" ")}function k(b){if(!0===a||f.$index%2===a){var k=e(b||[]);if(!m){var t=l(k,1);h.$addClass(t)}else if(!ea(b,m)){var r=e(m),t=d(k,r),k=d(r,k),t=l(t,1),k=l(k,-1);t&&t.length&&c.addClass(g,t);k&&k.length&&c.removeClass(g,k)}}m=qa(b)}var m;f.$watch(h[b],k,!0);h.$observe("class",function(a){k(f.$eval(h[b]))});"ngClass"!==b&&f.$watch("$index",
+function(c,d){var g=c&1;if(g!==(d&1)){var k=e(f.$eval(h[b]));g===a?(g=l(k,1),h.$addClass(g)):(g=l(k,-1),h.$removeClass(g))}})}}}]}function sd(b){function a(a,b){b&&!f[a]?(k.addClass(e,a),f[a]=!0):!b&&f[a]&&(k.removeClass(e,a),f[a]=!1)}function c(b,c){b=b?"-"+uc(b,"-"):"";a(lb+b,!0===c);a(vd+b,!1===c)}var d=b.ctrl,e=b.$element,f={},g=b.set,h=b.unset,l=b.parentForm,k=b.$animate;f[vd]=!(f[lb]=e.hasClass(lb));d.$setValidity=function(b,e,f){e===u?(d.$pending||(d.$pending={}),g(d.$pending,b,f)):(d.$pending&&
+h(d.$pending,b,f),wd(d.$pending)&&(d.$pending=u));Wa(e)?e?(h(d.$error,b,f),g(d.$$success,b,f)):(g(d.$error,b,f),h(d.$$success,b,f)):(h(d.$error,b,f),h(d.$$success,b,f));d.$pending?(a(xd,!0),d.$valid=d.$invalid=u,c("",null)):(a(xd,!1),d.$valid=wd(d.$error),d.$invalid=!d.$valid,c("",d.$valid));e=d.$pending&&d.$pending[b]?u:d.$error[b]?!1:d.$$success[b]?!0:null;c(b,e);l.$setValidity(b,e,d)}}function wd(b){if(b)for(var a in b)return!1;return!0}var Nf=/^\/(.+)\/([a-z]*)$/,R=function(b){return x(b)?b.toLowerCase():
+b},sc=Object.prototype.hasOwnProperty,vb=function(b){return x(b)?b.toUpperCase():b},Ra,C,ra,Za=[].slice,pf=[].splice,Of=[].push,Da=Object.prototype.toString,Ka=M("ng"),aa=P.angular||(P.angular={}),cb,ob=0;Ra=X.documentMode;B.$inject=[];oa.$inject=[];var E=Array.isArray,T=function(b){return x(b)?b.trim():b},gd=function(b){return b.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},bb=function(){if(y(bb.isActive_))return bb.isActive_;var b=!(!X.querySelector("[ng-csp]")&&!X.querySelector("[data-ng-csp]"));
+if(!b)try{new Function("")}catch(a){b=!0}return bb.isActive_=b},sb=["ng-","data-ng-","ng:","x-ng-"],Md=/[A-Z]/g,vc=!1,Rb,na=1,qb=3,Qd={full:"1.3.14",major:1,minor:3,dot:14,codeName:"instantaneous-browserification"};Q.expando="ng339";var Ab=Q.cache={},hf=1;Q._data=function(b){return this.cache[b[this.expando]]||{}};var cf=/([\:\-\_]+(.))/g,df=/^moz([A-Z])/,Pf={mouseleave:"mouseout",mouseenter:"mouseover"},Ub=M("jqLite"),gf=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Tb=/<|&#?\w+;/,ef=/<([\w:]+)/,ff=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+ga={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ga.optgroup=ga.option;ga.tbody=ga.tfoot=ga.colgroup=ga.caption=ga.thead;ga.th=ga.td;var La=Q.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===X.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),Q(P).on("load",a))},
+toString:function(){var b=[];s(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?C(this[b]):C(this[this.length+b])},length:0,push:Of,sort:[].sort,splice:[].splice},Fb={};s("multiple selected checked disabled readOnly required open".split(" "),function(b){Fb[R(b)]=b});var Nc={};s("input select option textarea button form details".split(" "),function(b){Nc[b]=!0});var Oc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};
+s({data:Wb,removeData:yb},function(b,a){Q[a]=b});s({data:Wb,inheritedData:Eb,scope:function(b){return C.data(b,"$scope")||Eb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return C.data(b,"$isolateScope")||C.data(b,"$isolateScopeNoTemplate")},controller:Jc,injector:function(b){return Eb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Bb,css:function(b,a,c){a=db(a);if(y(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=R(a);if(Fb[d])if(y(c))c?
+(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||B).specified?d:u;else if(y(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?u:b},prop:function(b,a,c){if(y(c))b[a]=c;else return b[a]},text:function(){function b(a,b){if(z(b)){var d=a.nodeType;return d===na||d===qb?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(z(a)){if(b.multiple&&"select"===ta(b)){var c=[];s(b.options,function(a){a.selected&&
+c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(z(a))return b.innerHTML;xb(b,!0);b.innerHTML=a},empty:Kc},function(b,a){Q.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==Kc&&(2==b.length&&b!==Bb&&b!==Jc?a:d)===u){if(J(a)){for(e=0;e<g;e++)if(b===Wb)b(this[e],a);else for(f in a)b(this[e],f,a[f]);return this}e=b.$dv;g=e===u?Math.min(g,1):g;for(f=0;f<g;f++){var h=b(this[f],a,d);e=e?e+h:h}return e}for(e=0;e<g;e++)b(this[e],a,d);return this}});
+s({removeData:yb,on:function a(c,d,e,f){if(y(f))throw Ub("onargs");if(Fc(c)){var g=zb(c,!0);f=g.events;var h=g.handle;h||(h=g.handle=lf(c,f));for(var g=0<=d.indexOf(" ")?d.split(" "):[d],l=g.length;l--;){d=g[l];var k=f[d];k||(f[d]=[],"mouseenter"===d||"mouseleave"===d?a(c,Pf[d],function(a){var c=a.relatedTarget;c&&(c===this||this.contains(c))||h(a,d)}):"$destroy"!==d&&c.addEventListener(d,h,!1),k=f[d]);k.push(e)}}},off:Ic,one:function(a,c,d){a=C(a);a.on(c,function f(){a.off(c,d);a.off(c,f)});a.on(c,
+d)},replaceWith:function(a,c){var d,e=a.parentNode;xb(a);s(new Q(c),function(c){d?e.insertBefore(c,d.nextSibling):e.replaceChild(c,a);d=c})},children:function(a){var c=[];s(a.childNodes,function(a){a.nodeType===na&&c.push(a)});return c},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,c){var d=a.nodeType;if(d===na||11===d){c=new Q(c);for(var d=0,e=c.length;d<e;d++)a.appendChild(c[d])}},prepend:function(a,c){if(a.nodeType===na){var d=a.firstChild;s(new Q(c),function(c){a.insertBefore(c,
+d)})}},wrap:function(a,c){c=C(c).eq(0).clone()[0];var d=a.parentNode;d&&d.replaceChild(c,a);c.appendChild(a)},remove:Lc,detach:function(a){Lc(a,!0)},after:function(a,c){var d=a,e=a.parentNode;c=new Q(c);for(var f=0,g=c.length;f<g;f++){var h=c[f];e.insertBefore(h,d.nextSibling);d=h}},addClass:Db,removeClass:Cb,toggleClass:function(a,c,d){c&&s(c.split(" "),function(c){var f=d;z(f)&&(f=!Bb(a,c));(f?Db:Cb)(a,c)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){return a.nextElementSibling},
+find:function(a,c){return a.getElementsByTagName?a.getElementsByTagName(c):[]},clone:Vb,triggerHandler:function(a,c,d){var e,f,g=c.type||c,h=zb(a);if(h=(h=h&&h.events)&&h[g])e={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===this.defaultPrevented},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return!0===this.immediatePropagationStopped},stopPropagation:B,type:g,target:a},c.type&&(e=w(e,
+c)),c=qa(h),f=d?[e].concat(d):[e],s(c,function(c){e.isImmediatePropagationStopped()||c.apply(a,f)})}},function(a,c){Q.prototype[c]=function(c,e,f){for(var g,h=0,l=this.length;h<l;h++)z(g)?(g=a(this[h],c,e,f),y(g)&&(g=C(g))):Hc(g,a(this[h],c,e,f));return y(g)?g:this};Q.prototype.bind=Q.prototype.on;Q.prototype.unbind=Q.prototype.off});eb.prototype={put:function(a,c){this[Na(a,this.nextUid)]=c},get:function(a){return this[Na(a,this.nextUid)]},remove:function(a){var c=this[a=Na(a,this.nextUid)];delete this[a];
+return c}};var Qc=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,Qf=/,/,Rf=/^\s*(_?)(\S+?)\1\s*$/,Pc=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ga=M("$injector");ab.$$annotate=function(a,c,d){var e;if("function"===typeof a){if(!(e=a.$inject)){e=[];if(a.length){if(c)throw x(d)&&d||(d=a.name||mf(a)),Ga("strictdi",d);c=a.toString().replace(Pc,"");c=c.match(Qc);s(c[1].split(Qf),function(a){a.replace(Rf,function(a,c,d){e.push(d)})})}a.$inject=e}}else E(a)?(c=a.length-1,tb(a[c],"fn"),e=a.slice(0,c)):tb(a,"fn",!0);return e};
+var Sf=M("$animate"),Ce=["$provide",function(a){this.$$selectors={};this.register=function(c,d){var e=c+"-animation";if(c&&"."!=c.charAt(0))throw Sf("notcsel",c);this.$$selectors[c.substr(1)]=e;a.factory(e,d)};this.classNameFilter=function(a){1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null);return this.$$classNameFilter};this.$get=["$$q","$$asyncCallback","$rootScope",function(a,d,e){function f(d){var f,g=a.defer();g.promise.$$cancelFn=function(){f&&f()};e.$$postDigest(function(){f=
+d(function(){g.resolve()})});return g.promise}function g(a,c){var d=[],e=[],f=fa();s((a.attr("class")||"").split(/\s+/),function(a){f[a]=!0});s(c,function(a,c){var g=f[c];!1===a&&g?e.push(c):!0!==a||g||d.push(c)});return 0<d.length+e.length&&[d.length?d:null,e.length?e:null]}function h(a,c,d){for(var e=0,f=c.length;e<f;++e)a[c[e]]=d}function l(){m||(m=a.defer(),d(function(){m.resolve();m=null}));return m.promise}function k(a,c){if(aa.isObject(c)){var d=w(c.from||{},c.to||{});a.css(d)}}var m;return{animate:function(a,
+c,d){k(a,{from:c,to:d});return l()},enter:function(a,c,d,e){k(a,e);d?d.after(a):c.prepend(a);return l()},leave:function(a,c){a.remove();return l()},move:function(a,c,d,e){return this.enter(a,c,d,e)},addClass:function(a,c,d){return this.setClass(a,c,[],d)},$$addClassImmediately:function(a,c,d){a=C(a);c=x(c)?c:E(c)?c.join(" "):"";s(a,function(a){Db(a,c)});k(a,d);return l()},removeClass:function(a,c,d){return this.setClass(a,[],c,d)},$$removeClassImmediately:function(a,c,d){a=C(a);c=x(c)?c:E(c)?c.join(" "):
+"";s(a,function(a){Cb(a,c)});k(a,d);return l()},setClass:function(a,c,d,e){var k=this,l=!1;a=C(a);var m=a.data("$$animateClasses");m?e&&m.options&&(m.options=aa.extend(m.options||{},e)):(m={classes:{},options:e},l=!0);e=m.classes;c=E(c)?c:c.split(" ");d=E(d)?d:d.split(" ");h(e,c,!0);h(e,d,!1);l&&(m.promise=f(function(c){var d=a.data("$$animateClasses");a.removeData("$$animateClasses");if(d){var e=g(a,d.classes);e&&k.$$setClassImmediately(a,e[0],e[1],d.options)}c()}),a.data("$$animateClasses",m));
+return m.promise},$$setClassImmediately:function(a,c,d,e){c&&this.$$addClassImmediately(a,c);d&&this.$$removeClassImmediately(a,d);k(a,e);return l()},enabled:B,cancel:B}}]}],ia=M("$compile");xc.$inject=["$provide","$$sanitizeUriProvider"];var Sc=/^((?:x|data)[\:\-_])/i,qf=M("$controller"),Wc="application/json",$b={"Content-Type":Wc+";charset=utf-8"},sf=/^\[|^\{(?!\{)/,tf={"[":/]$/,"{":/}$/},rf=/^\)\]\}',?\n/,ac=M("$interpolate"),Tf=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,wf={http:80,https:443,ftp:21},Hb=
+M("$location"),Uf={$$html5:!1,$$replace:!1,absUrl:Ib("$$absUrl"),url:function(a){if(z(a))return this.$$url;var c=Tf.exec(a);(c[1]||""===a)&&this.path(decodeURIComponent(c[1]));(c[2]||c[1]||""===a)&&this.search(c[3]||"");this.hash(c[5]||"");return this},protocol:Ib("$$protocol"),host:Ib("$$host"),port:Ib("$$port"),path:dd("$$path",function(a){a=null!==a?a.toString():"";return"/"==a.charAt(0)?a:"/"+a}),search:function(a,c){switch(arguments.length){case 0:return this.$$search;case 1:if(x(a)||V(a))a=
+a.toString(),this.$$search=rc(a);else if(J(a))a=Ea(a,{}),s(a,function(c,e){null==c&&delete a[e]}),this.$$search=a;else throw Hb("isrcharg");break;default:z(c)||null===c?delete this.$$search[a]:this.$$search[a]=c}this.$$compose();return this},hash:dd("$$hash",function(a){return null!==a?a.toString():""}),replace:function(){this.$$replace=!0;return this}};s([cd,ec,dc],function(a){a.prototype=Object.create(Uf);a.prototype.state=function(c){if(!arguments.length)return this.$$state;if(a!==dc||!this.$$html5)throw Hb("nostate");
+this.$$state=z(c)?null:c;return this}});var ka=M("$parse"),Vf=Function.prototype.call,Wf=Function.prototype.apply,Xf=Function.prototype.bind,mb=fa();s({"null":function(){return null},"true":function(){return!0},"false":function(){return!1},undefined:function(){}},function(a,c){a.constant=a.literal=a.sharedGetter=!0;mb[c]=a});mb["this"]=function(a){return a};mb["this"].sharedGetter=!0;var nb=w(fa(),{"+":function(a,c,d,e){d=d(a,c);e=e(a,c);return y(d)?y(e)?d+e:d:y(e)?e:u},"-":function(a,c,d,e){d=d(a,
+c);e=e(a,c);return(y(d)?d:0)-(y(e)?e:0)},"*":function(a,c,d,e){return d(a,c)*e(a,c)},"/":function(a,c,d,e){return d(a,c)/e(a,c)},"%":function(a,c,d,e){return d(a,c)%e(a,c)},"===":function(a,c,d,e){return d(a,c)===e(a,c)},"!==":function(a,c,d,e){return d(a,c)!==e(a,c)},"==":function(a,c,d,e){return d(a,c)==e(a,c)},"!=":function(a,c,d,e){return d(a,c)!=e(a,c)},"<":function(a,c,d,e){return d(a,c)<e(a,c)},">":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,
+c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"!":function(a,c,d){return!d(a,c)},"=":!0,"|":!0}),Yf={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},hc=function(a){this.options=a};hc.prototype={constructor:hc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index<this.text.length;)if(a=this.text.charAt(this.index),'"'===a||"'"===a)this.readString(a);else if(this.isNumber(a)||"."===a&&this.isNumber(this.peek()))this.readNumber();
+else if(this.isIdent(a))this.readIdent();else if(this.is(a,"(){}[].,;:?"))this.tokens.push({index:this.index,text:a}),this.index++;else if(this.isWhitespace(a))this.index++;else{var c=a+this.peek(),d=c+this.peek(2),e=nb[c],f=nb[d];nb[a]||e||f?(a=f?d:e?c:a,this.tokens.push({index:this.index,text:a,operator:!0}),this.index+=a.length):this.throwError("Unexpected next character ",this.index,this.index+1)}return this.tokens},is:function(a,c){return-1!==c.indexOf(a)},peek:function(a){a=a||1;return this.index+
+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=y(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw ka("lexerr",a,c,this.text);
+},readNumber:function(){for(var a="",c=this.index;this.index<this.text.length;){var d=R(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var e=this.peek();if("e"==d&&this.isExpOperator(e))a+=d;else if(this.isExpOperator(d)&&e&&this.isNumber(e)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||e&&this.isNumber(e)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}this.tokens.push({index:c,text:a,constant:!0,value:Number(a)})},readIdent:function(){for(var a=
+this.index;this.index<this.text.length;){var c=this.text.charAt(this.index);if(!this.isIdent(c)&&!this.isNumber(c))break;this.index++}this.tokens.push({index:a,text:this.text.slice(a,this.index),identifier:!0})},readString:function(a){var c=this.index;this.index++;for(var d="",e=a,f=!1;this.index<this.text.length;){var g=this.text.charAt(this.index),e=e+g;if(f)"u"===g?(f=this.text.substring(this.index+1,this.index+5),f.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+f+"]"),this.index+=
+4,d+=String.fromCharCode(parseInt(f,16))):d+=Yf[g]||g,f=!1;else if("\\"===g)f=!0;else{if(g===a){this.index++;this.tokens.push({index:c,text:e,constant:!0,value:d});return}d+=g}this.index++}this.throwError("Unterminated quote",c)}};var ib=function(a,c,d){this.lexer=a;this.$filter=c;this.options=d};ib.ZERO=w(function(){return 0},{sharedGetter:!0,constant:!0});ib.prototype={constructor:ib,parse:function(a){this.text=a;this.tokens=this.lexer.lex(a);a=this.statements();0!==this.tokens.length&&this.throwError("is an unexpected token",
+this.tokens[0]);a.literal=!!a.literal;a.constant=!!a.constant;return a},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.peek().identifier&&this.peek().text in mb?a=mb[this.consume().text]:this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression",this.peek());for(var c,d;c=this.expect("(","[",".");)"("===c.text?(a=this.functionCall(a,
+d),d=null):"["===c.text?(d=a,a=this.objectIndex(a)):"."===c.text?(d=a,a=this.fieldAccess(a)):this.throwError("IMPOSSIBLE");return a},throwError:function(a,c){throw ka("syntax",c.text,a,c.index+1,this.text,this.text.substring(c.index));},peekToken:function(){if(0===this.tokens.length)throw ka("ueoe",this.text);return this.tokens[0]},peek:function(a,c,d,e){return this.peekAhead(0,a,c,d,e)},peekAhead:function(a,c,d,e,f){if(this.tokens.length>a){a=this.tokens[a];var g=a.text;if(g===c||g===d||g===e||g===
+f||!(c||d||e||f))return a}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},consume:function(a){if(0===this.tokens.length)throw ka("ueoe",this.text);var c=this.expect(a);c||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return c},unaryFn:function(a,c){var d=nb[a];return w(function(a,f){return d(a,f,c)},{constant:c.constant,inputs:[c]})},binaryFn:function(a,c,d,e){var f=nb[c];return w(function(c,e){return f(c,e,a,d)},{constant:a.constant&&
+d.constant,inputs:!e&&[a,d]})},identifier:function(){for(var a=this.consume().text;this.peek(".")&&this.peekAhead(1).identifier&&!this.peekAhead(2,"(");)a+=this.consume().text+this.consume().text;return yf(a,this.options,this.text)},constant:function(){var a=this.consume().value;return w(function(){return a},{constant:!0,literal:!0})},statements:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",";","]")&&a.push(this.filterChain()),!this.expect(";"))return 1===a.length?a[0]:function(c,
+d){for(var e,f=0,g=a.length;f<g;f++)e=a[f](c,d);return e}},filterChain:function(){for(var a=this.expression();this.expect("|");)a=this.filter(a);return a},filter:function(a){var c=this.$filter(this.consume().text),d,e;if(this.peek(":"))for(d=[],e=[];this.expect(":");)d.push(this.expression());var f=[a].concat(d||[]);return w(function(f,h){var l=a(f,h);if(e){e[0]=l;for(l=d.length;l--;)e[l+1]=d[l](f,h);return c.apply(u,e)}return c(l)},{constant:!c.$stateful&&f.every(fc),inputs:!c.$stateful&&f})},expression:function(){return this.assignment()},
+assignment:function(){var a=this.ternary(),c,d;return(d=this.expect("="))?(a.assign||this.throwError("implies assignment but ["+this.text.substring(0,d.index)+"] can not be assigned to",d),c=this.ternary(),w(function(d,f){return a.assign(d,c(d,f),f)},{inputs:[a,c]})):a},ternary:function(){var a=this.logicalOR(),c;if(this.expect("?")&&(c=this.assignment(),this.consume(":"))){var d=this.assignment();return w(function(e,f){return a(e,f)?c(e,f):d(e,f)},{constant:a.constant&&c.constant&&d.constant})}return a},
+logicalOR:function(){for(var a=this.logicalAND(),c;c=this.expect("||");)a=this.binaryFn(a,c.text,this.logicalAND(),!0);return a},logicalAND:function(){for(var a=this.equality(),c;c=this.expect("&&");)a=this.binaryFn(a,c.text,this.equality(),!0);return a},equality:function(){for(var a=this.relational(),c;c=this.expect("==","!=","===","!==");)a=this.binaryFn(a,c.text,this.relational());return a},relational:function(){for(var a=this.additive(),c;c=this.expect("<",">","<=",">=");)a=this.binaryFn(a,c.text,
+this.additive());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.text,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.text,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(ib.ZERO,a.text,this.unary()):(a=this.expect("!"))?this.unaryFn(a.text,this.unary()):this.primary()},fieldAccess:function(a){var c=
+this.identifier();return w(function(d,e,f){d=f||a(d,e);return null==d?u:c(d)},{assign:function(d,e,f){var g=a(d,f);g||a.assign(d,g={},f);return c.assign(g,e)}})},objectIndex:function(a){var c=this.text,d=this.expression();this.consume("]");return w(function(e,f){var g=a(e,f),h=d(e,f);sa(h,c);return g?la(g[h],c):u},{assign:function(e,f,g){var h=sa(d(e,g),c),l=la(a(e,g),c);l||a.assign(e,l={},g);return l[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());
+while(this.expect(","))}this.consume(")");var e=this.text,f=d.length?[]:null;return function(g,h){var l=c?c(g,h):y(c)?u:g,k=a(g,h,l)||B;if(f)for(var m=d.length;m--;)f[m]=la(d[m](g,h),e);la(l,e);if(k){if(k.constructor===k)throw ka("isecfn",e);if(k===Vf||k===Wf||k===Xf)throw ka("isecff",e);}l=k.apply?k.apply(l,f):k(f[0],f[1],f[2],f[3],f[4]);f&&(f.length=0);return la(l,e)}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))
+}this.consume("]");return w(function(c,d){for(var e=[],f=0,g=a.length;f<g;f++)e.push(a[f](c,d));return e},{literal:!0,constant:a.every(fc),inputs:a})},object:function(){var a=[],c=[];if("}"!==this.peekToken().text){do{if(this.peek("}"))break;var d=this.consume();d.constant?a.push(d.value):d.identifier?a.push(d.text):this.throwError("invalid key",d);this.consume(":");c.push(this.expression())}while(this.expect(","))}this.consume("}");return w(function(d,f){for(var g={},h=0,l=c.length;h<l;h++)g[a[h]]=
+c[h](d,f);return g},{literal:!0,constant:c.every(fc),inputs:c})}};var Af=fa(),zf=fa(),Bf=Object.prototype.valueOf,Ca=M("$sce"),ma={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},ia=M("$compile"),Y=X.createElement("a"),id=Ba(P.location.href);Ec.$inject=["$provide"];jd.$inject=["$locale"];ld.$inject=["$locale"];var od=".",Lf={yyyy:Z("FullYear",4),yy:Z("FullYear",2,0,!0),y:Z("FullYear",1),MMMM:Kb("Month"),MMM:Kb("Month",!0),MM:Z("Month",2,1),M:Z("Month",1,1),dd:Z("Date",2),d:Z("Date",
+1),HH:Z("Hours",2),H:Z("Hours",1),hh:Z("Hours",2,-12),h:Z("Hours",1,-12),mm:Z("Minutes",2),m:Z("Minutes",1),ss:Z("Seconds",2),s:Z("Seconds",1),sss:Z("Milliseconds",3),EEEE:Kb("Day"),EEE:Kb("Day",!0),a:function(a,c){return 12>a.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Jb(Math[0<a?"floor":"ceil"](a/60),2)+Jb(Math.abs(a%60),2))},ww:qd(2),w:qd(1)},Kf=/((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/,Jf=/^\-?\d+$/;
+kd.$inject=["$locale"];var Gf=da(R),Hf=da(vb);md.$inject=["$parse"];var Td=da({restrict:"E",compile:function(a,c){if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){if("a"===c[0].nodeName.toLowerCase()){var f="[object SVGAnimatedString]"===Da.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}}),wb={};s(Fb,function(a,c){if("multiple"!=a){var d=ya("ng-"+c);wb[d]=function(){return{restrict:"A",priority:100,link:function(a,f,g){a.$watch(g[d],function(a){g.$set(c,
+!!a)})}}}}});s(Oc,function(a,c){wb[c]=function(){return{priority:100,link:function(a,e,f){if("ngPattern"===c&&"/"==f.ngPattern.charAt(0)&&(e=f.ngPattern.match(Nf))){f.$set("ngPattern",new RegExp(e[1],e[2]));return}a.$watch(f[c],function(a){f.$set(c,a)})}}}});s(["src","srcset","href"],function(a){var c=ya("ng-"+a);wb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===Da.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href",g=null);f.$observe(c,
+function(c){c?(f.$set(h,c),Ra&&g&&e.prop(g,f[h])):"href"===a&&f.$set(h,null)})}}}});var Lb={$addControl:B,$$renameControl:function(a,c){a.$name=c},$removeControl:B,$setValidity:B,$setDirty:B,$setPristine:B,$setSubmitted:B};rd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var yd=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:rd,compile:function(a){a.addClass(Sa).addClass(lb);return{pre:function(a,d,g,h){if(!("action"in g)){var l=function(c){a.$apply(function(){h.$commitViewValue();
+h.$setSubmitted()});c.preventDefault()};d[0].addEventListener("submit",l,!1);d.on("$destroy",function(){c(function(){d[0].removeEventListener("submit",l,!1)},0,!1)})}var k=h.$$parentForm,m=h.$name;m&&(hb(a,null,m,h,m),g.$observe(g.name?"name":"ngForm",function(c){m!==c&&(hb(a,null,m,u,m),m=c,hb(a,null,m,h,m),k.$$renameControl(h,m))}));d.on("$destroy",function(){k.$removeControl(h);m&&hb(a,null,m,u,m);w(h,Lb)})}}}}}]},Ud=yd(),ge=yd(!0),Mf=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,
+Zf=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,$f=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,ag=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,zd=/^(\d{4})-(\d{2})-(\d{2})$/,Ad=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,kc=/^(\d{4})-W(\d\d)$/,Bd=/^(\d{4})-(\d\d)$/,Cd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Dd={text:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);ic(e)},date:kb("date",zd,Nb(zd,["yyyy",
+"MM","dd"]),"yyyy-MM-dd"),"datetime-local":kb("datetimelocal",Ad,Nb(Ad,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:kb("time",Cd,Nb(Cd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:kb("week",kc,function(a,c){if(pa(a))return a;if(x(a)){kc.lastIndex=0;var d=kc.exec(a);if(d){var e=+d[1],f=+d[2],g=d=0,h=0,l=0,k=pd(e),f=7*(f-1);c&&(d=c.getHours(),g=c.getMinutes(),h=c.getSeconds(),l=c.getMilliseconds());return new Date(e,0,k.getDate()+f,d,g,h,l)}}return NaN},"yyyy-Www"),month:kb("month",
+Bd,Nb(Bd,["yyyy","MM"]),"yyyy-MM"),number:function(a,c,d,e,f,g){td(a,c,d,e);jb(a,c,d,e,f,g);e.$$parserName="number";e.$parsers.push(function(a){return e.$isEmpty(a)?null:ag.test(a)?parseFloat(a):u});e.$formatters.push(function(a){if(!e.$isEmpty(a)){if(!V(a))throw Ob("numfmt",a);a=a.toString()}return a});if(y(d.min)||d.ngMin){var h;e.$validators.min=function(a){return e.$isEmpty(a)||z(h)||a>=h};d.$observe("min",function(a){y(a)&&!V(a)&&(a=parseFloat(a,10));h=V(a)&&!isNaN(a)?a:u;e.$validate()})}if(y(d.max)||
+d.ngMax){var l;e.$validators.max=function(a){return e.$isEmpty(a)||z(l)||a<=l};d.$observe("max",function(a){y(a)&&!V(a)&&(a=parseFloat(a,10));l=V(a)&&!isNaN(a)?a:u;e.$validate()})}},url:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);ic(e);e.$$parserName="url";e.$validators.url=function(a,c){var d=a||c;return e.$isEmpty(d)||Zf.test(d)}},email:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);ic(e);e.$$parserName="email";e.$validators.email=function(a,c){var d=a||c;return e.$isEmpty(d)||$f.test(d)}},radio:function(a,c,
+d,e){z(d.name)&&c.attr("name",++ob);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,l){var k=ud(l,a,"ngTrueValue",d.ngTrueValue,!0),m=ud(l,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked,a&&a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return!1===a};e.$formatters.push(function(a){return ea(a,
+k)});e.$parsers.push(function(a){return a?k:m})},hidden:B,button:B,submit:B,reset:B,file:B},yc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,l){l[0]&&(Dd[R(h.type)]||Dd.text)(f,g,h,l[0],c,a,d,e)}}}}],bg=/^(true|false|\d+)$/,ye=function(){return{restrict:"A",priority:100,compile:function(a,c){return bg.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",
+a)})}}}},Zd=["$compile",function(a){return{restrict:"AC",compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===u?"":a})}}}}],ae=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate));c.$$addBindingInfo(f,d.expressions);f=f[0];g.$observe("ngBindTemplate",function(a){f.textContent=a===u?"":a})}}}}],$d=["$sce",
+"$parse","$compile",function(a,c,d){return{restrict:"A",compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],xe=da({restrict:"A",require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),be=jc("",!0),de=jc("Odd",0),ce=jc("Even",1),ee=Ja({compile:function(a,c){c.$set("ngCloak",
+u);a.removeClass("ng-cloak")}}),fe=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Dc={},cg={blur:!0,focus:!0};s("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=ya("ng-"+a);Dc[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h=d(g[c],null,!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};
+cg[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var ie=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,l,k;c.$watch(e.ngIf,function(c){c?l||g(function(c,f){l=f;c[c.length++]=X.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(k&&(k.remove(),k=null),l&&(l.$destroy(),l=null),h&&(k=ub(h.clone),a.leave(k).then(function(){k=null}),h=null))})}}}],je=["$templateRequest","$anchorScroll",
+"$animate","$sce",function(a,c,d,e){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:aa.noop,compile:function(f,g){var h=g.ngInclude||g.src,l=g.onload||"",k=g.autoscroll;return function(f,g,q,s,r){var u=0,w,n,D,H=function(){n&&(n.remove(),n=null);w&&(w.$destroy(),w=null);D&&(d.leave(D).then(function(){n=null}),n=D,D=null)};f.$watch(e.parseAsResourceUrl(h),function(e){var h=function(){!y(k)||k&&!f.$eval(k)||c()},n=++u;e?(a(e,!0).then(function(a){if(n===u){var c=f.$new();
+s.template=a;a=r(c,function(a){H();d.enter(a,null,g).then(h)});w=c;D=a;w.$emit("$includeContentLoaded",e);f.$eval(l)}},function(){n===u&&(H(),f.$emit("$includeContentError",e))}),f.$emit("$includeContentRequested",e)):(H(),s.template=null)})}}}}],Ae=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(Gc(f.template,X).childNodes)(c,function(a){d.append(a)},{futureParentElement:d})):(d.html(f.template),a(d.contents())(c))}}}],
+ke=Ja({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),we=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?T(f):f;e.$parsers.push(function(a){if(!z(a)){var c=[];a&&s(a.split(h),function(a){a&&c.push(g?T(a):a)});return c}});e.$formatters.push(function(a){return E(a)?a.join(f):u});e.$isEmpty=function(a){return!a||!a.length}}}},lb="ng-valid",vd="ng-invalid",Sa="ng-pristine",
+Mb="ng-dirty",xd="ng-pending",Ob=new M("ngModel"),dg=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,l,k,m){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=u;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success=
+{};this.$pending=u;this.$name=m(d.name||"",!1)(a);var p=f(d.ngModel),q=p.assign,t=p,r=q,w=null,C,n=this;this.$$setOptions=function(a){if((n.$options=a)&&a.getterSetter){var c=f(d.ngModel+"()"),g=f(d.ngModel+"($$$p)");t=function(a){var d=p(a);G(d)&&(d=c(a));return d};r=function(a,c){G(p(a))?g(a,{$$$p:n.$modelValue}):q(a,n.$modelValue)}}else if(!p.assign)throw Ob("nonassign",d.ngModel,ua(e));};this.$render=B;this.$isEmpty=function(a){return z(a)||""===a||null===a||a!==a};var D=e.inheritedData("$formController")||
+Lb,H=0;sd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:D,$animate:g});this.$setPristine=function(){n.$dirty=!1;n.$pristine=!0;g.removeClass(e,Mb);g.addClass(e,Sa)};this.$setDirty=function(){n.$dirty=!0;n.$pristine=!1;g.removeClass(e,Sa);g.addClass(e,Mb);D.$setDirty()};this.$setUntouched=function(){n.$touched=!1;n.$untouched=!0;g.setClass(e,"ng-untouched","ng-touched")};this.$setTouched=function(){n.$touched=!0;n.$untouched=!1;g.setClass(e,"ng-touched",
+"ng-untouched")};this.$rollbackViewValue=function(){h.cancel(w);n.$viewValue=n.$$lastCommittedViewValue;n.$render()};this.$validate=function(){if(!V(n.$modelValue)||!isNaN(n.$modelValue)){var a=n.$$rawModelValue,c=n.$valid,d=n.$modelValue,e=n.$options&&n.$options.allowInvalid;n.$$runValidators(a,n.$$lastCommittedViewValue,function(f){e||c===f||(n.$modelValue=f?a:u,n.$modelValue!==d&&n.$$writeModelToScope())})}};this.$$runValidators=function(a,c,d){function e(){var d=!0;s(n.$validators,function(e,
+f){var h=e(a,c);d=d&&h;g(f,h)});return d?!0:(s(n.$asyncValidators,function(a,c){g(c,null)}),!1)}function f(){var d=[],e=!0;s(n.$asyncValidators,function(f,h){var k=f(a,c);if(!k||!G(k.then))throw Ob("$asyncValidators",k);g(h,u);d.push(k.then(function(){g(h,!0)},function(a){e=!1;g(h,!1)}))});d.length?k.all(d).then(function(){h(e)},B):h(!0)}function g(a,c){l===H&&n.$setValidity(a,c)}function h(a){l===H&&d(a)}H++;var l=H;(function(){var a=n.$$parserName||"parse";if(C===u)g(a,null);else return C||(s(n.$validators,
+function(a,c){g(c,null)}),s(n.$asyncValidators,function(a,c){g(c,null)})),g(a,C),C;return!0})()?e()?f():h(!1):h(!1)};this.$commitViewValue=function(){var a=n.$viewValue;h.cancel(w);if(n.$$lastCommittedViewValue!==a||""===a&&n.$$hasNativeValidators)n.$$lastCommittedViewValue=a,n.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var c=n.$$lastCommittedViewValue;if(C=z(c)?u:!0)for(var d=0;d<n.$parsers.length;d++)if(c=n.$parsers[d](c),z(c)){C=!1;break}V(n.$modelValue)&&
+isNaN(n.$modelValue)&&(n.$modelValue=t(a));var e=n.$modelValue,f=n.$options&&n.$options.allowInvalid;n.$$rawModelValue=c;f&&(n.$modelValue=c,n.$modelValue!==e&&n.$$writeModelToScope());n.$$runValidators(c,n.$$lastCommittedViewValue,function(a){f||(n.$modelValue=a?c:u,n.$modelValue!==e&&n.$$writeModelToScope())})};this.$$writeModelToScope=function(){r(a,n.$modelValue);s(n.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}})};this.$setViewValue=function(a,c){n.$viewValue=a;n.$options&&!n.$options.updateOnDefault||
+n.$$debounceViewValueCommit(c)};this.$$debounceViewValueCommit=function(c){var d=0,e=n.$options;e&&y(e.debounce)&&(e=e.debounce,V(e)?d=e:V(e[c])?d=e[c]:V(e["default"])&&(d=e["default"]));h.cancel(w);d?w=h(function(){n.$commitViewValue()},d):l.$$phase?n.$commitViewValue():a.$apply(function(){n.$commitViewValue()})};a.$watch(function(){var c=t(a);if(c!==n.$modelValue){n.$modelValue=n.$$rawModelValue=c;C=u;for(var d=n.$formatters,e=d.length,f=c;e--;)f=d[e](f);n.$viewValue!==f&&(n.$viewValue=n.$$lastCommittedViewValue=
+f,n.$render(),n.$$runValidators(c,f,B))}return c})}],ve=["$rootScope",function(a){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:dg,priority:1,compile:function(c){c.addClass(Sa).addClass("ng-untouched").addClass(lb);return{pre:function(a,c,f,g){var h=g[0],l=g[1]||Lb;h.$$setOptions(g[2]&&g[2].$options);l.$addControl(h);f.$observe("name",function(a){h.$name!==a&&l.$$renameControl(h,a)});a.$on("$destroy",function(){l.$removeControl(h)})},post:function(c,e,f,g){var h=g[0];
+if(h.$options&&h.$options.updateOn)e.on(h.$options.updateOn,function(a){h.$$debounceViewValueCommit(a&&a.type)});e.on("blur",function(e){h.$touched||(a.$$phase?c.$evalAsync(h.$setTouched):c.$apply(h.$setTouched))})}}}}}],eg=/(\s+|^)default(\s+|$)/,ze=function(){return{restrict:"A",controller:["$scope","$attrs",function(a,c){var d=this;this.$options=a.$eval(c.ngModelOptions);this.$options.updateOn!==u?(this.$options.updateOnDefault=!1,this.$options.updateOn=T(this.$options.updateOn.replace(eg,function(){d.$options.updateOnDefault=
+!0;return" "}))):this.$options.updateOnDefault=!0}]}},le=Ja({terminal:!0,priority:1E3}),me=["$locale","$interpolate",function(a,c){var d=/{}/g,e=/^when(Minus)?(.+)$/;return{restrict:"EA",link:function(f,g,h){function l(a){g.text(a||"")}var k=h.count,m=h.$attr.when&&g.attr(h.$attr.when),p=h.offset||0,q=f.$eval(m)||{},t={},m=c.startSymbol(),r=c.endSymbol(),u=m+k+"-"+p+r,w=aa.noop,n;s(h,function(a,c){var d=e.exec(c);d&&(d=(d[1]?"-":"")+R(d[2]),q[d]=g.attr(h.$attr[c]))});s(q,function(a,e){t[e]=c(a.replace(d,
+u))});f.$watch(k,function(c){c=parseFloat(c);var d=isNaN(c);d||c in q||(c=a.pluralCat(c-p));c===n||d&&isNaN(n)||(w(),w=f.$watch(t[c],l),n=c)})}}}],ne=["$parse","$animate",function(a,c){var d=M("ngRepeat"),e=function(a,c,d,e,k,m,p){a[d]=e;k&&(a[k]=m);a.$index=c;a.$first=0===c;a.$last=c===p-1;a.$middle=!(a.$first||a.$last);a.$odd=!(a.$even=0===(c&1))};return{restrict:"A",multiElement:!0,transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,compile:function(f,g){var h=g.ngRepeat,l=X.createComment(" end ngRepeat: "+
+h+" "),k=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!k)throw d("iexp",h);var m=k[1],p=k[2],q=k[3],t=k[4],k=m.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/);if(!k)throw d("iidexp",m);var r=k[3]||k[1],w=k[2];if(q&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(q)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(q)))throw d("badident",q);var y,n,D,H,v={$id:Na};t?y=a(t):(D=function(a,c){return Na(c)},
+H=function(a){return a});return function(a,f,g,k,m){y&&(n=function(c,d,e){w&&(v[w]=c);v[r]=d;v.$index=e;return y(a,v)});var t=fa();a.$watchCollection(p,function(g){var k,p,y=f[0],F,v=fa(),B,z,G,E,J,x,K;q&&(a[q]=g);if(Ta(g))J=g,p=n||D;else{p=n||H;J=[];for(K in g)g.hasOwnProperty(K)&&"$"!=K.charAt(0)&&J.push(K);J.sort()}B=J.length;K=Array(B);for(k=0;k<B;k++)if(z=g===J?k:J[k],G=g[z],E=p(z,G,k),t[E])x=t[E],delete t[E],v[E]=x,K[k]=x;else{if(v[E])throw s(K,function(a){a&&a.scope&&(t[a.id]=a)}),d("dupes",
+h,E,G);K[k]={id:E,scope:u,clone:u};v[E]=!0}for(F in t){x=t[F];E=ub(x.clone);c.leave(E);if(E[0].parentNode)for(k=0,p=E.length;k<p;k++)E[k].$$NG_REMOVED=!0;x.scope.$destroy()}for(k=0;k<B;k++)if(z=g===J?k:J[k],G=g[z],x=K[k],x.scope){F=y;do F=F.nextSibling;while(F&&F.$$NG_REMOVED);x.clone[0]!=F&&c.move(ub(x.clone),null,C(y));y=x.clone[x.clone.length-1];e(x.scope,k,r,G,w,z,B)}else m(function(a,d){x.scope=d;var f=l.cloneNode(!1);a[a.length++]=f;c.enter(a,null,C(y));y=f;x.clone=a;v[x.id]=x;e(x.scope,k,r,
+G,w,z,B)});t=v})}}}}],oe=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(c,d,e){c.$watch(e.ngShow,function(c){a[c?"removeClass":"addClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],he=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(c,d,e){c.$watch(e.ngHide,function(c){a[c?"addClass":"removeClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],pe=Ja(function(a,c,d){a.$watchCollection(d.ngStyle,function(a,d){d&&a!==d&&s(d,function(a,
+d){c.css(d,"")});a&&c.css(a)})}),qe=["$animate",function(a){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(c,d,e,f){var g=[],h=[],l=[],k=[],m=function(a,c){return function(){a.splice(c,1)}};c.$watch(e.ngSwitch||e.on,function(c){var d,e;d=0;for(e=l.length;d<e;++d)a.cancel(l[d]);d=l.length=0;for(e=k.length;d<e;++d){var r=ub(h[d].clone);k[d].$destroy();(l[d]=a.leave(r)).then(m(l,d))}h.length=0;k.length=0;(g=f.cases["!"+c]||f.cases["?"])&&s(g,function(c){c.transclude(function(d,
+e){k.push(e);var f=c.element;d[d.length++]=X.createComment(" end ngSwitchWhen: ");h.push({clone:d});a.enter(d,f.parent(),f)})})})}}}],re=Ja({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,c,d,e,f){e.cases["!"+d.ngSwitchWhen]=e.cases["!"+d.ngSwitchWhen]||[];e.cases["!"+d.ngSwitchWhen].push({transclude:f,element:c})}}),se=Ja({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,c,d,e,f){e.cases["?"]=e.cases["?"]||[];e.cases["?"].push({transclude:f,
+element:c})}}),ue=Ja({restrict:"EAC",link:function(a,c,d,e,f){if(!f)throw M("ngTransclude")("orphan",ua(c));f(function(a){c.empty();c.append(a)})}}),Vd=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(c,d){"text/ng-template"==d.type&&a.put(d.id,c[0].text)}}}],fg=M("ngOptions"),te=da({restrict:"A",terminal:!0}),Wd=["$compile","$parse",function(a,c){var d=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
+e={$setViewValue:B};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(a,c,d){var l=this,k={},m=e,p;l.databound=d.ngModel;l.init=function(a,c,d){m=a;p=d};l.addOption=function(c,d){Ma(c,'"option value"');k[c]=!0;m.$viewValue==c&&(a.val(c),p.parent()&&p.remove());d&&d[0].hasAttribute("selected")&&(d[0].selected=!0)};l.removeOption=function(a){this.hasOption(a)&&(delete k[a],m.$viewValue===a&&this.renderUnknownOption(a))};l.renderUnknownOption=function(c){c=
+"? "+Na(c)+" ?";p.val(c);a.prepend(p);a.val(c);p.prop("selected",!0)};l.hasOption=function(a){return k.hasOwnProperty(a)};c.$on("$destroy",function(){l.renderUnknownOption=B})}],link:function(e,g,h,l){function k(a,c,d,e){d.$render=function(){var a=d.$viewValue;e.hasOption(a)?(v.parent()&&v.remove(),c.val(a),""===a&&B.prop("selected",!0)):z(a)&&B?c.val(""):e.renderUnknownOption(a)};c.on("change",function(){a.$apply(function(){v.parent()&&v.remove();d.$setViewValue(c.val())})})}function m(a,c,d){var e;
+d.$render=function(){var a=new eb(d.$viewValue);s(c.find("option"),function(c){c.selected=y(a.get(c.value))})};a.$watch(function(){ea(e,d.$viewValue)||(e=qa(d.$viewValue),d.$render())});c.on("change",function(){a.$apply(function(){var a=[];s(c.find("option"),function(c){c.selected&&a.push(c.value)});d.$setViewValue(a)})})}function p(e,f,g){function h(a,c,d){R[B]=d;G&&(R[G]=c);return a(e,R)}function k(a){var c;if(t)if(K&&E(a)){c=new eb([]);for(var d=0;d<a.length;d++)c.put(h(K,null,a[d]),!0)}else c=
+new eb(a);else K&&(a=h(K,null,a));return function(d,e){var f;f=K?K:z?z:A;return t?y(c.remove(h(f,d,e))):a===h(f,d,e)}}function l(){n||(e.$$postDigest(p),n=!0)}function m(a,c,d){a[c]=a[c]||0;a[c]+=d?1:-1}function p(){n=!1;var a={"":[]},c=[""],d,l,r,u,v;r=g.$viewValue;u=N(e)||[];var B=G?Object.keys(u).sort():u,x,z,E,A,O={};v=k(r);var M=!1,T,V;Q={};for(A=0;E=B.length,A<E;A++){x=A;if(G&&(x=B[A],"$"===x.charAt(0)))continue;z=u[x];d=h(J,x,z)||"";(l=a[d])||(l=a[d]=[],c.push(d));d=v(x,z);M=M||d;z=h(C,x,z);
+z=y(z)?z:"";V=K?K(e,R):G?B[A]:A;K&&(Q[V]=x);l.push({id:V,label:z,selected:d})}t||(w||null===r?a[""].unshift({id:"",label:"",selected:!M}):M||a[""].unshift({id:"?",label:"",selected:!0}));x=0;for(B=c.length;x<B;x++){d=c[x];l=a[d];P.length<=x?(r={element:H.clone().attr("label",d),label:l.label},u=[r],P.push(u),f.append(r.element)):(u=P[x],r=u[0],r.label!=d&&r.element.attr("label",r.label=d));M=null;A=0;for(E=l.length;A<E;A++)d=l[A],(v=u[A+1])?(M=v.element,v.label!==d.label&&(m(O,v.label,!1),m(O,d.label,
+!0),M.text(v.label=d.label),M.prop("label",v.label)),v.id!==d.id&&M.val(v.id=d.id),M[0].selected!==d.selected&&(M.prop("selected",v.selected=d.selected),Ra&&M.prop("selected",v.selected))):(""===d.id&&w?T=w:(T=D.clone()).val(d.id).prop("selected",d.selected).attr("selected",d.selected).prop("label",d.label).text(d.label),u.push(v={element:T,label:d.label,id:d.id,selected:d.selected}),m(O,d.label,!0),M?M.after(T):r.element.append(T),M=T);for(A++;u.length>A;)d=u.pop(),m(O,d.label,!1),d.element.remove()}for(;P.length>
+x;){l=P.pop();for(A=1;A<l.length;++A)m(O,l[A].label,!1);l[0].element.remove()}s(O,function(a,c){0<a?q.addOption(c):0>a&&q.removeOption(c)})}var v;if(!(v=r.match(d)))throw fg("iexp",r,ua(f));var C=c(v[2]||v[1]),B=v[4]||v[6],x=/ as /.test(v[0])&&v[1],z=x?c(x):null,G=v[5],J=c(v[3]||""),A=c(v[2]?v[1]:B),N=c(v[7]),K=v[8]?c(v[8]):null,Q={},P=[[{element:f,label:""}]],R={};w&&(a(w)(e),w.removeClass("ng-scope"),w.remove());f.empty();f.on("change",function(){e.$apply(function(){var a=N(e)||[],c;if(t)c=[],s(f.val(),
+function(d){d=K?Q[d]:d;c.push("?"===d?u:""===d?null:h(z?z:A,d,a[d]))});else{var d=K?Q[f.val()]:f.val();c="?"===d?u:""===d?null:h(z?z:A,d,a[d])}g.$setViewValue(c);p()})});g.$render=p;e.$watchCollection(N,l);e.$watchCollection(function(){var a=N(e),c;if(a&&E(a)){c=Array(a.length);for(var d=0,f=a.length;d<f;d++)c[d]=h(C,d,a[d])}else if(a)for(d in c={},a)a.hasOwnProperty(d)&&(c[d]=h(C,d,a[d]));return c},l);t&&e.$watchCollection(function(){return g.$modelValue},l)}if(l[1]){var q=l[0];l=l[1];var t=h.multiple,
+r=h.ngOptions,w=!1,B,n=!1,D=C(X.createElement("option")),H=C(X.createElement("optgroup")),v=D.clone();h=0;for(var x=g.children(),G=x.length;h<G;h++)if(""===x[h].value){B=w=x.eq(h);break}q.init(l,w,v);t&&(l.$isEmpty=function(a){return!a||0===a.length});r?p(e,g,l):t?m(e,g,l):k(e,g,l,q)}}}}],Yd=["$interpolate",function(a){var c={addOption:B,removeOption:B};return{restrict:"E",priority:100,compile:function(d,e){if(z(e.value)){var f=a(d.text(),!0);f||e.$set("value",d.text())}return function(a,d,e){var k=
+d.parent(),m=k.data("$selectController")||k.parent().data("$selectController");m&&m.databound||(m=c);f?a.$watch(f,function(a,c){e.$set("value",a);c!==a&&m.removeOption(c);m.addOption(a,d)}):m.addOption(e.value,d);d.on("$destroy",function(){m.removeOption(e.value)})}}}}],Xd=da({restrict:"E",terminal:!1}),Ac=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){e&&(d.required=!0,e.$validators.required=function(a,c){return!d.required||!e.$isEmpty(c)},d.$observe("required",function(){e.$validate()}))}}},
+zc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f,g=d.ngPattern||d.pattern;d.$observe("pattern",function(a){x(a)&&0<a.length&&(a=new RegExp("^"+a+"$"));if(a&&!a.test)throw M("ngPattern")("noregexp",g,a,ua(c));f=a||u;e.$validate()});e.$validators.pattern=function(a){return e.$isEmpty(a)||z(f)||f.test(a)}}}}},Cc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=-1;d.$observe("maxlength",function(a){a=$(a);f=isNaN(a)?-1:a;e.$validate()});
+e.$validators.maxlength=function(a,c){return 0>f||e.$isEmpty(c)||c.length<=f}}}}},Bc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=0;d.$observe("minlength",function(a){f=$(a)||0;e.$validate()});e.$validators.minlength=function(a,c){return e.$isEmpty(c)||c.length>=f}}}}};P.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(Nd(),Pd(aa),C(X).ready(function(){Jd(X,tc)}))})(window,document);!window.angular.$$csp()&&window.angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}</style>');
+//# sourceMappingURL=angular.min.js.map
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.css b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.css
new file mode 100644
index 0000000..240be45
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.css
@@ -0,0 +1,74 @@
+.angularjs-datetime-picker {
+  color: #333;
+  font: normal 14px sans-serif;
+  border: 1px solid #ddd;
+  display: inline-block;
+  background: #fff;
+}
+.angularjs-datetime-picker > .adp-month {
+  text-align: center;
+  line-height: 22px;
+  padding: 10px;
+  background: #fcfcfc;
+  text-transform: uppercase;
+  font-weight: bold;
+  border-bottom: 1px solid #ddd;
+  position: relative;
+}
+.angularjs-datetime-picker > .adp-month > button {
+  color: #555;
+  font: normal 14px sans-serif;
+  outline: none;
+  position: absolute;
+  background: transparent;
+  border: none;
+  cursor: pointer;
+}
+.angularjs-datetime-picker > .adp-month > button:hover {
+  color: #333;
+}
+.angularjs-datetime-picker > .adp-month > button.adp-prev {
+  left: 10px;
+}
+.angularjs-datetime-picker > .adp-month > button.adp-next {
+  right: 10px;
+}
+.angularjs-datetime-picker > .adp-days {
+  width: 210px; /* 30 x 7 */
+  margin: 10px;
+  text-align: center;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day-of-week, .angularjs-datetime-picker > .adp-days > .adp-day {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  border: 1px solid transparent;
+  width: 30px;
+  line-height: 28px;
+  float: left;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day-of-week {
+  font-weight: bold;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day:not(.selectable) {
+  opacity: 0.15;
+  cursor: default;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day.selectable  {
+  cursor: pointer;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day.selected {
+  background: #e0e0e0;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day.selectable:hover {
+  background: #eee;
+}
+.angularjs-datetime-picker > .adp-days:after {
+  content: '';
+  display: block;
+  clear: left;
+  height: 0;
+}
+
+.angularjs-datetime-picker input[type=range] {
+  width: 150px;
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.js
new file mode 100644
index 0000000..946f12e
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.js
@@ -0,0 +1,332 @@
+(function() {
+  'use strict';
+
+  angular.module('angularjs-datetime-picker', []);
+
+  var getTimezoneOffset = function(date) {
+    (typeof date == 'string')  && (date = new Date(date));
+    var jan = new Date(date.getFullYear(), 0, 1);
+    var jul = new Date(date.getFullYear(), 6, 1);
+    var stdTimezoneOffset = Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
+    var isDST = date.getTimezoneOffset() < stdTimezoneOffset;
+    var offset = isDST ? stdTimezoneOffset - 60 : stdTimezoneOffset;
+    var diff = offset >=0 ? '-' : '+';
+    return diff +
+      ("0"+ (offset / 60)).slice(-2) + ':' +
+      ("0"+ (offset % 60)).slice(-2);
+  };
+
+  var DatetimePicker = function($compile, $document, $controller){
+    var datetimePickerCtrl = $controller('DatetimePickerCtrl'); //directive controller
+    return {
+      open: function(options) {
+        datetimePickerCtrl.openDatetimePicker(options);
+      },
+      close: function() {
+        datetimePickerCtrl.closeDatetimePicker();
+      }
+    };
+  };
+  DatetimePicker.$inject = ['$compile', '$document', '$controller'];
+  angular.module('angularjs-datetime-picker').factory('DatetimePicker', DatetimePicker);
+
+  var DatetimePickerCtrl = function($compile, $document) {
+    var datetimePickerEl;
+    var _this = this;
+    var removeEl = function(el) {
+      el && el.remove();
+      $document[0].body.removeEventListener('click', _this.closeDatetimePicker);
+    };
+
+    this.openDatetimePicker = function(options) {
+      this.closeDatetimePicker();
+      var div = angular.element('<div datetime-picker-popup ng-cloak></div>');
+      options.dateFormat && div.attr('date-format', options.dateFormat);
+      options.ngModel  && div.attr('ng-model', options.ngModel);
+      options.year     && div.attr('year', parseInt(options.year));
+      options.month    && div.attr('month', parseInt(options.month));
+      options.day      && div.attr('day', parseInt(options.day));
+      options.hour     && div.attr('hour', parseInt(options.hour));
+      options.minute   && div.attr('minute', parseInt(options.minute));
+      if (options.dateOnly === '' || options.dateOnly === true) {
+        div.attr('date-only', 'true');
+      }
+      if (options.closeOnSelect === 'false') {
+        div.attr('close-on-select', 'false');
+      }
+
+      var triggerEl = options.triggerEl;
+      options.scope = options.scope || angular.element(triggerEl).scope();
+      datetimePickerEl = $compile(div)(options.scope)[0];
+      datetimePickerEl.triggerEl = options.triggerEl;
+
+      $document[0].body.appendChild(datetimePickerEl);
+
+      //show datetimePicker below triggerEl
+      var bcr = triggerEl.getBoundingClientRect();
+      datetimePickerEl.style.position='absolute';
+      datetimePickerEl.style.left= (bcr.left + window.scrollX) + 'px';
+
+      options.scope.$apply();
+
+      var datePickerElBcr = datetimePickerEl.getBoundingClientRect();
+
+      if (bcr.top < 300 || window.innerHeight - bcr.bottom > 300) {
+        datetimePickerEl.style.top = (bcr.bottom + window.scrollY) + 'px';
+      } else {
+        datetimePickerEl.style.top = (bcr.top - datePickerElBcr.height + window.scrollY) + 'px';
+      }
+
+      $document[0].body.addEventListener('click', this.closeDatetimePicker);
+    };
+
+    this.closeDatetimePicker = function(evt) {
+      var target = evt && evt.target;
+      var popupEl = $document[0].querySelector('div[datetime-picker-popup]');
+      if (evt && target) {
+        if (target.hasAttribute('datetime-picker')) {  // element with datetimePicker behaviour
+          // do nothing
+        } else if (popupEl && popupEl.contains(target)) { // datetimePicker itself
+          // do nothing
+        } else {
+          removeEl(popupEl);
+        }
+      } else {
+        removeEl(popupEl);
+      }
+    }
+  };
+  DatetimePickerCtrl.$inject = ['$compile', '$document'];
+  angular.module('angularjs-datetime-picker').controller('DatetimePickerCtrl', DatetimePickerCtrl);
+
+  var tmpl = [
+    '<div class="angularjs-datetime-picker">' ,
+    '  <div class="adp-month">',
+    '    <button type="button" class="adp-prev" ng-click="addMonth(-1)">&laquo;</button>',
+    '    <span title="{{months[mv.month].fullName}}">{{months[mv.month].shortName}}</span> {{mv.year}}',
+    '    <button type="button" class="adp-next" ng-click="addMonth(1)">&raquo;</button>',
+    '  </div>',
+    '  <div class="adp-days" ng-click="setDate($event)">',
+    '    <div class="adp-day-of-week" ng-repeat="dayOfWeek in ::daysOfWeek" title="{{dayOfWeek.fullName}}">{{::dayOfWeek.firstLetter}}</div>',
+    '    <div class="adp-day" ng-repeat="day in mv.leadingDays">{{::day}}</div>',
+    '    <div class="adp-day selectable" ng-repeat="day in mv.days" ',
+    '      ng-class="{selected: (day == selectedDay)}">{{::day}}</div>',
+    '    <div class="adp-day" ng-repeat="day in mv.trailingDays">{{::day}}</div>',
+    '  </div>',
+    '  <div class="adp-days" id="adp-time"> ',
+    '    Time : {{("0"+inputHour).slice(-2)}} : {{("0"+inputMinute).slice(-2)}} <br/>',
+    '    <label>Hour:</label> <input type="range" min="0" max="23" ng-model="inputHour" ng-change="updateNgModel()" />',
+    '    <label>Min.:</label> <input type="range" min="0" max="59" ng-model="inputMinute"  ng-change="updateNgModel()"/> ',
+    '  </div> ',
+    '</div>'].join("\n");
+
+  var datetimePickerPopup = function($locale, dateFilter){
+    var days, months, daysOfWeek, firstDayOfWeek;
+
+    var initVars = function() {
+      days =[], months=[]; daysOfWeek=[], firstDayOfWeek=0;
+      for (var i = 1; i <= 31; i++) {
+        days.push(i);
+      }
+
+      for (var i = 0; i < 12; i++) { //jshint ignore:line
+        months.push({
+          fullName: $locale.DATETIME_FORMATS.MONTH[i],
+          shortName: $locale.DATETIME_FORMATS.SHORTMONTH[i]
+        });
+      }
+
+      for (var i = 0; i < 7; i++) { //jshint ignore:line
+        var day = $locale.DATETIME_FORMATS.DAY[(i + firstDayOfWeek) % 7];
+
+        daysOfWeek.push({
+          fullName: day,
+          firstLetter: day.substr(0, 2)
+        });
+      }
+      firstDayOfWeek = $locale.DATETIME_FORMATS.FIRSTDAYOFWEEK || 0;
+    };
+
+    var getMonthView = function(year, month) {
+      if (month>11) {
+        year++;
+      } else if (month < 0) {
+        year--;
+      }
+      month = (month + 12) % 12;
+      var firstDayOfMonth = new Date(year, month, 1),
+        lastDayOfMonth = new Date(year, month + 1, 0),
+        lastDayOfPreviousMonth = new Date(year, month, 0),
+        daysInMonth = lastDayOfMonth.getDate(),
+        daysInLastMonth = lastDayOfPreviousMonth.getDate(),
+        dayOfWeek = firstDayOfMonth.getDay(),
+        leadingDays = (dayOfWeek - firstDayOfWeek + 7) % 7 || 7, // Ensure there are always leading days to give context
+        trailingDays = days.slice(0, 6 * 7 - (leadingDays + daysInMonth));
+      if (trailingDays.length > 7) {
+        trailingDays = trailingDays.slice(0, trailingDays.length-7);
+      }
+
+      return {
+        year: year,
+        month: month,
+        days: days.slice(0, daysInMonth),
+        leadingDays: days.slice(- leadingDays - (31 - daysInLastMonth), daysInLastMonth),
+        trailingDays: trailingDays
+      };
+    };
+
+    var linkFunc = function(scope, element, attrs, ctrl) { //jshint ignore:line
+      initVars(); //initialize days, months, daysOfWeek, and firstDayOfWeek;
+      var dateFormat = attrs.dateFormat || 'short';
+      scope.months = months;
+      scope.daysOfWeek = daysOfWeek;
+      scope.inputHour;
+      scope.inputMinute;
+
+      if (scope.dateOnly === true){
+        element[0].querySelector('#adp-time').style.display = 'none';
+      }
+
+      scope.$applyAsync( function() {
+        ctrl.triggerEl = angular.element(element[0].triggerEl);
+        if (attrs.ngModel) { // need to parse date string
+          var dateStr = ''+ctrl.triggerEl.scope().$eval(attrs.ngModel);
+          if (dateStr) {
+            if (!dateStr.match(/[0-9]{2}:/)) {  // if no time is given, add 00:00:00 at the end
+              dateStr += " 00:00:00";
+            }
+            dateStr = dateStr.replace(/([0-9]{2}-[0-9]{2})-([0-9]{4})/,'$2-$1');      //mm-dd-yyyy to yyyy-mm-dd
+            dateStr = dateStr.replace(/([\/-][0-9]{2,4})\ ([0-9]{2}\:[0-9]{2}\:)/,'$1T$2'); //reformat for FF
+            dateStr = dateStr.replace(/EDT|EST|CDT|CST|MDT|PDT|PST|UT|GMT/g,''); //remove timezone
+            dateStr = dateStr.replace(/\s*\(\)\s*/,'');                          //remove timezone
+            dateStr = dateStr.replace(/[\-\+][0-9]{2}:?[0-9]{2}$/,'');           //remove timezone
+            dateStr += getTimezoneOffset(dateStr);
+            var d = new Date(dateStr);
+            scope.selectedDate = new Date(
+              d.getFullYear(),
+              d.getMonth(),
+              d.getDate(),
+              d.getHours(),
+              d.getMinutes(),
+              d.getSeconds()
+            );
+          }
+        }
+
+        if (!scope.selectedDate || isNaN(scope.selectedDate.getTime())) { // no predefined date
+          var today = new Date();
+          var year = scope.year || today.getFullYear();
+          var month = scope.month ? (scope.month-1) : today.getMonth();
+          var day = scope.day || today.getDate();
+          var hour = scope.hour || today.getHours();
+          var minute = scope.minute || today.getMinutes();
+          scope.selectedDate = new Date(year, month, day, hour, minute, 0);
+        }
+        scope.inputHour   = scope.selectedDate.getHours();
+        scope.inputMinute = scope.selectedDate.getMinutes();
+
+        // Default to current year and month
+        scope.mv = getMonthView(scope.selectedDate.getFullYear(), scope.selectedDate.getMonth());
+        if (scope.mv.year == scope.selectedDate.getFullYear() && scope.mv.month == scope.selectedDate.getMonth()) {
+          scope.selectedDay = scope.selectedDate.getDate();
+        } else {
+          scope.selectedDay = null;
+        }
+      });
+
+      scope.addMonth = function (amount) {
+        scope.mv = getMonthView(scope.mv.year, scope.mv.month + amount);
+      };
+
+      scope.setDate = function (evt) {
+        var target = angular.element(evt.target)[0];
+        if (target.className.indexOf('selectable')) {
+          scope.updateNgModel(parseInt(target.innerHTML));
+          if (scope.closeOnSelect !== false) {
+            ctrl.closeDatetimePicker();
+          }
+        }
+      };
+
+      scope.updateNgModel = function(day) {
+        day = day ? day : scope.selectedDate.getDate();
+        scope.selectedDate = new Date(
+          scope.mv.year, scope.mv.month, day, scope.inputHour, scope.inputMinute, 0
+        );
+        scope.selectedDay = scope.selectedDate.getDate();
+        if (attrs.ngModel) {
+          //console.log('attrs.ngModel',attrs.ngModel);
+          var elScope = ctrl.triggerEl.scope(), dateValue;
+          if (elScope.$eval(attrs.ngModel) && elScope.$eval(attrs.ngModel).constructor.name === 'Date') {
+            dateValue = new Date(dateFilter(scope.selectedDate, dateFormat));
+          } else {
+            dateValue = dateFilter(scope.selectedDate, dateFormat);
+          }
+          elScope.$eval(attrs.ngModel + '= date', {date: dateValue});
+        }
+      };
+
+      scope.$on('$destroy', ctrl.closeDatetimePicker);
+    };
+
+    return {
+      restrict: 'A',
+      template: tmpl,
+      controller: 'DatetimePickerCtrl',
+      replace: true,
+      scope: {
+        year: '=',
+        month: '=',
+        day: '=',
+        hour: '=',
+        minute: '=',
+        dateOnly: '=',
+        closeOnSelect: '='
+      },
+      link: linkFunc
+    };
+  };
+  datetimePickerPopup.$inject = ['$locale', 'dateFilter'];
+  angular.module('angularjs-datetime-picker').directive('datetimePickerPopup', datetimePickerPopup);
+
+  var datetimePicker  = function($parse, DatetimePicker) {
+    return {
+      // An ngModel is required to get the controller argument
+      require: 'ngModel',
+      link: function(scope, element, attrs, ctrl) {
+        // Attach validation watcher
+        scope.$watch(attrs.ngModel, function(value) {
+          if( !value || value == '' ){
+            return;
+          }
+          // The value has already been cleaned by the above code
+          var date = new Date(value);
+          ctrl.$setValidity('date', !date? false : true);
+          var now = new Date();
+          if( attrs.hasOwnProperty('futureOnly') ){
+            ctrl.$setValidity('future-only', date < now? false : true);
+          }
+        });
+
+        element[0].addEventListener('click', function() {
+          DatetimePicker.open({
+            triggerEl: element[0],
+            dateFormat: attrs.dateFormat,
+            ngModel: attrs.ngModel,
+            year: attrs.year,
+            month: attrs.month,
+            day: attrs.day,
+            hour: attrs.hour,
+            minute: attrs.minute,
+            dateOnly: attrs.dateOnly,
+            futureOnly: attrs.futureOnly,
+            closeOnSelect: attrs.closeOnSelect
+          });
+        });
+      }
+    };
+  };
+  datetimePicker.$inject=['$parse', 'DatetimePicker'];
+  angular.module('angularjs-datetime-picker').directive('datetimePicker', datetimePicker);
+
+})();
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.min.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.min.js
new file mode 100644
index 0000000..bc6c19a
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.min.js
@@ -0,0 +1 @@
+!function(){"use strict";angular.module("angularjs-datetime-picker",[]);var e=function(e){"string"==typeof e&&(e=new Date(e));var t=new Date(e.getFullYear(),0,1),a=new Date(e.getFullYear(),6,1),n=Math.max(t.getTimezoneOffset(),a.getTimezoneOffset()),l=e.getTimezoneOffset()<n,r=l?n-60:n,i=r>=0?"-":"+";return i+("0"+r/60).slice(-2)+":"+("0"+r%60).slice(-2)},t=function(e,t,a){var n=a("DatetimePickerCtrl");return{open:function(e){n.openDatetimePicker(e)},close:function(){n.closeDatetimePicker()}}};t.$inject=["$compile","$document","$controller"],angular.module("angularjs-datetime-picker").factory("DatetimePicker",t);var a=function(e,t){var a,n=this,l=function(e){e&&e.remove(),t[0].body.removeEventListener("click",n.closeDatetimePicker)};this.openDatetimePicker=function(n){this.closeDatetimePicker();var l=angular.element("<div datetime-picker-popup ng-cloak></div>");n.dateFormat&&l.attr("date-format",n.dateFormat),n.ngModel&&l.attr("ng-model",n.ngModel),n.year&&l.attr("year",parseInt(n.year)),n.month&&l.attr("month",parseInt(n.month)),n.day&&l.attr("day",parseInt(n.day)),n.hour&&l.attr("hour",parseInt(n.hour)),n.minute&&l.attr("minute",parseInt(n.minute)),(""===n.dateOnly||n.dateOnly===!0)&&l.attr("date-only","true"),"false"===n.closeOnSelect&&l.attr("close-on-select","false");var r=n.triggerEl;n.scope=n.scope||angular.element(r).scope(),a=e(l)(n.scope)[0],a.triggerEl=n.triggerEl,t[0].body.appendChild(a);var i=r.getBoundingClientRect();a.style.position="absolute",a.style.left=i.left+window.scrollX+"px",n.scope.$apply();var o=a.getBoundingClientRect();a.style.top=i.top<300||window.innerHeight-i.bottom>300?i.bottom+window.scrollY+"px":i.top-o.height+window.scrollY+"px",t[0].body.addEventListener("click",this.closeDatetimePicker)},this.closeDatetimePicker=function(e){var a=e&&e.target,n=t[0].querySelector("div[datetime-picker-popup]");e&&a?a.hasAttribute("datetime-picker")||n&&n.contains(a)||l(n):l(n)}};a.$inject=["$compile","$document"],angular.module("angularjs-datetime-picker").controller("DatetimePickerCtrl",a);var n=['<div class="angularjs-datetime-picker">','  <div class="adp-month">','    <button type="button" class="adp-prev" ng-click="addMonth(-1)">&laquo;</button>','    <span title="{{months[mv.month].fullName}}">{{months[mv.month].shortName}}</span> {{mv.year}}','    <button type="button" class="adp-next" ng-click="addMonth(1)">&raquo;</button>',"  </div>",'  <div class="adp-days" ng-click="setDate($event)">','    <div class="adp-day-of-week" ng-repeat="dayOfWeek in ::daysOfWeek" title="{{dayOfWeek.fullName}}">{{::dayOfWeek.firstLetter}}</div>','    <div class="adp-day" ng-repeat="day in mv.leadingDays">{{::day}}</div>','    <div class="adp-day selectable" ng-repeat="day in mv.days" ','      ng-class="{selected: (day == selectedDay)}">{{::day}}</div>','    <div class="adp-day" ng-repeat="day in mv.trailingDays">{{::day}}</div>',"  </div>",'  <div class="adp-days" id="adp-time"> ','    Time : {{("0"+inputHour).slice(-2)}} : {{("0"+inputMinute).slice(-2)}} <br/>','    <label>Hour:</label> <input type="range" min="0" max="23" ng-model="inputHour" ng-change="updateNgModel()" />','    <label>Min.:</label> <input type="range" min="0" max="59" ng-model="inputMinute"  ng-change="updateNgModel()"/> ',"  </div> ","</div>"].join("\n"),l=function(t,a){var l,r,i,o,c=function(){l=[],r=[],i=[],o=0;for(var e=1;31>=e;e++)l.push(e);for(var e=0;12>e;e++)r.push({fullName:t.DATETIME_FORMATS.MONTH[e],shortName:t.DATETIME_FORMATS.SHORTMONTH[e]});for(var e=0;7>e;e++){var a=t.DATETIME_FORMATS.DAY[(e+o)%7];i.push({fullName:a,firstLetter:a.substr(0,2)})}o=t.DATETIME_FORMATS.FIRSTDAYOFWEEK||0},d=function(e,t){t>11?e++:0>t&&e--,t=(t+12)%12;var a=new Date(e,t,1),n=new Date(e,t+1,0),r=new Date(e,t,0),i=n.getDate(),c=r.getDate(),d=a.getDay(),s=(d-o+7)%7||7,u=l.slice(0,42-(s+i));return u.length>7&&(u=u.slice(0,u.length-7)),{year:e,month:t,days:l.slice(0,i),leadingDays:l.slice(-s-(31-c),c),trailingDays:u}},s=function(t,n,l,o){c();var s=l.dateFormat||"short";t.months=r,t.daysOfWeek=i,t.inputHour,t.inputMinute,t.dateOnly===!0&&(n[0].querySelector("#adp-time").style.display="none"),t.$applyAsync(function(){if(o.triggerEl=angular.element(n[0].triggerEl),l.ngModel){var a=""+o.triggerEl.scope().$eval(l.ngModel);if(a){a.match(/[0-9]{2}:/)||(a+=" 00:00:00"),a=a.replace(/([0-9]{2}-[0-9]{2})-([0-9]{4})/,"$2-$1"),a=a.replace(/([\/-][0-9]{2,4})\ ([0-9]{2}\:[0-9]{2}\:)/,"$1T$2"),a=a.replace(/EDT|EST|CDT|CST|MDT|PDT|PST|UT|GMT/g,""),a=a.replace(/\s*\(\)\s*/,""),a=a.replace(/[\-\+][0-9]{2}:?[0-9]{2}$/,""),a+=e(a);var r=new Date(a);t.selectedDate=new Date(r.getFullYear(),r.getMonth(),r.getDate(),r.getHours(),r.getMinutes(),r.getSeconds())}}if(!t.selectedDate||isNaN(t.selectedDate.getTime())){var i=new Date,c=t.year||i.getFullYear(),s=t.month?t.month-1:i.getMonth(),u=t.day||i.getDate(),m=t.hour||i.getHours(),g=t.minute||i.getMinutes();t.selectedDate=new Date(c,s,u,m,g,0)}t.inputHour=t.selectedDate.getHours(),t.inputMinute=t.selectedDate.getMinutes(),t.mv=d(t.selectedDate.getFullYear(),t.selectedDate.getMonth()),t.selectedDay=t.mv.year==t.selectedDate.getFullYear()&&t.mv.month==t.selectedDate.getMonth()?t.selectedDate.getDate():null}),t.addMonth=function(e){t.mv=d(t.mv.year,t.mv.month+e)},t.setDate=function(e){var a=angular.element(e.target)[0];a.className.indexOf("selectable")&&(t.updateNgModel(parseInt(a.innerHTML)),t.closeOnSelect!==!1&&o.closeDatetimePicker())},t.updateNgModel=function(e){if(e=e?e:t.selectedDate.getDate(),t.selectedDate=new Date(t.mv.year,t.mv.month,e,t.inputHour,t.inputMinute,0),t.selectedDay=t.selectedDate.getDate(),l.ngModel){var n,r=o.triggerEl.scope();n=r.$eval(l.ngModel)&&"Date"===r.$eval(l.ngModel).constructor.name?new Date(a(t.selectedDate,s)):a(t.selectedDate,s),r.$eval(l.ngModel+"= date",{date:n})}},t.$on("$destroy",o.closeDatetimePicker)};return{restrict:"A",template:n,controller:"DatetimePickerCtrl",replace:!0,scope:{year:"=",month:"=",day:"=",hour:"=",minute:"=",dateOnly:"=",closeOnSelect:"="},link:s}};l.$inject=["$locale","dateFilter"],angular.module("angularjs-datetime-picker").directive("datetimePickerPopup",l);var r=function(e,t){return{require:"ngModel",link:function(e,a,n,l){e.$watch(n.ngModel,function(e){if(e&&""!=e){var t=new Date(e);l.$setValidity("date",t?!0:!1);var a=new Date;n.hasOwnProperty("futureOnly")&&l.$setValidity("future-only",a>t?!1:!0)}}),a[0].addEventListener("click",function(){t.open({triggerEl:a[0],dateFormat:n.dateFormat,ngModel:n.ngModel,year:n.year,month:n.month,day:n.day,hour:n.hour,minute:n.minute,dateOnly:n.dateOnly,futureOnly:n.futureOnly,closeOnSelect:n.closeOnSelect})})}}};r.$inject=["$parse","DatetimePicker"],angular.module("angularjs-datetime-picker").directive("datetimePicker",r)}();
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/bootstrap-3.3.7/package.json b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/bootstrap-3.3.7/package.json
new file mode 100644
index 0000000..fe4b31d
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/bootstrap-3.3.7/package.json
@@ -0,0 +1,89 @@
+{
+  "name": "bootstrap",
+  "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
+  "version": "3.3.7",
+  "keywords": [
+    "css",
+    "less",
+    "mobile-first",
+    "responsive",
+    "front-end",
+    "framework",
+    "web"
+  ],
+  "homepage": "http://getbootstrap.com",
+  "author": "Twitter, Inc.",
+  "scripts": {
+    "change-version": "node grunt/change-version.js",
+    "update-shrinkwrap": "npm shrinkwrap --dev && shx mv ./npm-shrinkwrap.json ./grunt/npm-shrinkwrap.json",
+    "test": "grunt test"
+  },
+  "style": "dist/css/bootstrap.css",
+  "less": "less/bootstrap.less",
+  "main": "./dist/js/npm",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/twbs/bootstrap.git"
+  },
+  "bugs": {
+    "url": "https://github.com/twbs/bootstrap/issues"
+  },
+  "license": "MIT",
+  "devDependencies": {
+    "btoa": "~1.1.2",
+    "glob": "~7.0.3",
+    "grunt": "~1.0.1",
+    "grunt-autoprefixer": "~3.0.4",
+    "grunt-contrib-clean": "~1.0.0",
+    "grunt-contrib-compress": "~1.3.0",
+    "grunt-contrib-concat": "~1.0.0",
+    "grunt-contrib-connect": "~1.0.0",
+    "grunt-contrib-copy": "~1.0.0",
+    "grunt-contrib-csslint": "~1.0.0",
+    "grunt-contrib-cssmin": "~1.0.0",
+    "grunt-contrib-htmlmin": "~1.5.0",
+    "grunt-contrib-jshint": "~1.0.0",
+    "grunt-contrib-less": "~1.3.0",
+    "grunt-contrib-pug": "~1.0.0",
+    "grunt-contrib-qunit": "~0.7.0",
+    "grunt-contrib-uglify": "~1.0.0",
+    "grunt-contrib-watch": "~1.0.0",
+    "grunt-csscomb": "~3.1.0",
+    "grunt-exec": "~1.0.0",
+    "grunt-html": "~8.0.1",
+    "grunt-jekyll": "~0.4.4",
+    "grunt-jscs": "~3.0.1",
+    "grunt-saucelabs": "~9.0.0",
+    "load-grunt-tasks": "~3.5.0",
+    "markdown-it": "^7.0.0",
+    "shelljs": "^0.7.0",
+    "shx": "^0.1.2",
+    "time-grunt": "^1.3.0"
+  },
+  "engines": {
+    "node": ">=0.10.1"
+  },
+  "files": [
+    "dist",
+    "fonts",
+    "grunt",
+    "js/*.js",
+    "less/**/*.less",
+    "Gruntfile.js",
+    "LICENSE"
+  ],
+  "jspm": {
+    "main": "js/bootstrap",
+    "shim": {
+      "js/bootstrap": {
+        "deps": "jquery",
+        "exports": "$"
+      }
+    },
+    "files": [
+      "css",
+      "fonts",
+      "js"
+    ]
+  }
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/jquery.min.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/jquery.min.js
new file mode 100644
index 0000000..4d9b3a2
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/jquery.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-csv/build/ng-csv.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-csv/build/ng-csv.js
new file mode 100644
index 0000000..80432ec
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-csv/build/ng-csv.js
@@ -0,0 +1,319 @@
+(function(window, document) {
+
+// Create all modules and define dependencies to make sure they exist
+// and are loaded in the correct order to satisfy dependency injection
+// before all nested files are concatenated by Grunt
+
+// Config
+angular.module('ngCsv.config', []).
+  value('ngCsv.config', {
+      debug: true
+  }).
+  config(['$compileProvider', function($compileProvider){
+    if (angular.isDefined($compileProvider.urlSanitizationWhitelist)) {
+      $compileProvider.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/);
+    } else {
+      $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/);
+    }
+  }]);
+
+// Modules
+angular.module('ngCsv.directives', ['ngCsv.services']);
+angular.module('ngCsv.services', []);
+angular.module('ngCsv',
+    [
+        'ngCsv.config',
+        'ngCsv.services',
+        'ngCsv.directives',
+        'ngSanitize'
+    ]);
+
+// Common.js package manager support (e.g. ComponentJS, WebPack)
+if (typeof module !== 'undefined' && typeof exports !== 'undefined' && module.exports === exports) {
+  module.exports = 'ngCsv';
+}
+/**
+ * Created by asafdav on 15/05/14.
+ */
+angular.module('ngCsv.services').
+  service('CSV', ['$q', function ($q) {
+
+    var EOL = '\r\n';
+    var BOM = "\ufeff";
+
+    var specialChars = {
+      '\\t': '\t',
+      '\\b': '\b',
+      '\\v': '\v',
+      '\\f': '\f',
+      '\\r': '\r'
+    };
+
+    /**
+     * Stringify one field
+     * @param data
+     * @param options
+     * @returns {*}
+     */
+    this.stringifyField = function (data, options) {
+      if (options.decimalSep === 'locale' && this.isFloat(data)) {
+        return data.toLocaleString();
+      }
+
+      if (options.decimalSep !== '.' && this.isFloat(data)) {
+        return data.toString().replace('.', options.decimalSep);
+      }
+
+      if (typeof data === 'string') {
+        data = data.replace(/"/g, '""'); // Escape double qoutes
+
+        if (options.quoteStrings || data.indexOf(',') > -1 || data.indexOf('\n') > -1 || data.indexOf('\r') > -1) {
+            data = options.txtDelim + data + options.txtDelim;
+        }
+
+        return data;
+      }
+
+      if (typeof data === 'boolean') {
+        return data ? 'TRUE' : 'FALSE';
+      }
+
+      return data;
+    };
+
+    /**
+     * Helper function to check if input is float
+     * @param input
+     * @returns {boolean}
+     */
+    this.isFloat = function (input) {
+      return +input === input && (!isFinite(input) || Boolean(input % 1));
+    };
+
+    /**
+     * Creates a csv from a data array
+     * @param data
+     * @param options
+     *  * header - Provide the first row (optional)
+     *  * fieldSep - Field separator, default: ',',
+     *  * addByteOrderMarker - Add Byte order mark, default(false)
+     * @param callback
+     */
+    this.stringify = function (data, options) {
+      var def = $q.defer();
+
+      var that = this;
+      var csv = "";
+      var csvContent = "";
+
+      var dataPromise = $q.when(data).then(function (responseData) {
+        //responseData = angular.copy(responseData);//moved to row creation
+        // Check if there's a provided header array
+        if (angular.isDefined(options.header) && options.header) {
+          var encodingArray, headerString;
+
+          encodingArray = [];
+          angular.forEach(options.header, function (title, key) {
+            this.push(that.stringifyField(title, options));
+          }, encodingArray);
+
+          headerString = encodingArray.join(options.fieldSep ? options.fieldSep : ",");
+          csvContent += headerString + EOL;
+        }
+
+        var arrData = [];
+
+        if (angular.isArray(responseData)) {
+          arrData = responseData;
+        }
+        else if (angular.isFunction(responseData)) {
+          arrData = responseData();
+        }
+
+        // Check if using keys as labels
+        if (angular.isDefined(options.label) && options.label && typeof options.label === 'boolean') {
+            var labelArray, labelString;
+
+            labelArray = [];
+            angular.forEach(arrData[0], function(value, label) {
+                this.push(that.stringifyField(label, options));
+            }, labelArray);
+            labelString = labelArray.join(options.fieldSep ? options.fieldSep : ",");
+            csvContent += labelString + EOL;
+        }
+
+        angular.forEach(arrData, function (oldRow, index) {
+          var row = angular.copy(arrData[index]);
+          var dataString, infoArray;
+
+          infoArray = [];
+
+          var iterator = !!options.columnOrder ? options.columnOrder : row;
+          angular.forEach(iterator, function (field, key) {
+            var val = !!options.columnOrder ? row[field] : field;
+            this.push(that.stringifyField(val, options));
+          }, infoArray);
+
+          dataString = infoArray.join(options.fieldSep ? options.fieldSep : ",");
+          csvContent += index < arrData.length ? dataString + EOL : dataString;
+        });
+
+        // Add BOM if needed
+        if (options.addByteOrderMarker) {
+          csv += BOM;
+        }
+
+        // Append the content and resolve.
+        csv += csvContent;
+        def.resolve(csv);
+      });
+
+      if (typeof dataPromise['catch'] === 'function') {
+        dataPromise['catch'](function (err) {
+          def.reject(err);
+        });
+      }
+
+      return def.promise;
+    };
+
+    /**
+     * Helper function to check if input is really a special character
+     * @param input
+     * @returns {boolean}
+     */
+    this.isSpecialChar = function(input){
+      return specialChars[input] !== undefined;
+    };
+
+    /**
+     * Helper function to get what the special character was supposed to be
+     * since Angular escapes the first backslash
+     * @param input
+     * @returns {special character string}
+     */
+    this.getSpecialChar = function (input) {
+      return specialChars[input];
+    };
+
+
+  }]);
+/**
+ * ng-csv module
+ * Export Javascript's arrays to csv files from the browser
+ *
+ * Author: asafdav - https://github.com/asafdav
+ */
+angular.module('ngCsv.directives').
+  directive('ngCsv', ['$parse', '$q', 'CSV', '$document', '$timeout', function ($parse, $q, CSV, $document, $timeout) {
+    return {
+      restrict: 'AC',
+      scope: {
+        data: '&ngCsv',
+        filename: '@filename',
+        header: '&csvHeader',
+        columnOrder: '&csvColumnOrder',
+        txtDelim: '@textDelimiter',
+        decimalSep: '@decimalSeparator',
+        quoteStrings: '@quoteStrings',
+        fieldSep: '@fieldSeparator',
+        lazyLoad: '@lazyLoad',
+        addByteOrderMarker: "@addBom",
+        ngClick: '&',
+        charset: '@charset',
+        label: '&csvLabel'
+      },
+      controller: [
+        '$scope',
+        '$element',
+        '$attrs',
+        '$transclude',
+        function ($scope, $element, $attrs, $transclude) {
+          $scope.csv = '';
+
+          if (!angular.isDefined($scope.lazyLoad) || $scope.lazyLoad != "true") {
+            if (angular.isArray($scope.data)) {
+              $scope.$watch("data", function (newValue) {
+                $scope.buildCSV();
+              }, true);
+            }
+          }
+
+          $scope.getFilename = function () {
+            return $scope.filename || 'download.csv';
+          };
+
+          function getBuildCsvOptions() {
+            var options = {
+              txtDelim: $scope.txtDelim ? $scope.txtDelim : '"',
+              decimalSep: $scope.decimalSep ? $scope.decimalSep : '.',
+              quoteStrings: $scope.quoteStrings,
+              addByteOrderMarker: $scope.addByteOrderMarker
+            };
+            if (angular.isDefined($attrs.csvHeader)) options.header = $scope.$eval($scope.header);
+            if (angular.isDefined($attrs.csvColumnOrder)) options.columnOrder = $scope.$eval($scope.columnOrder);
+            if (angular.isDefined($attrs.csvLabel)) options.label = $scope.$eval($scope.label);
+
+            options.fieldSep = $scope.fieldSep ? $scope.fieldSep : ",";
+
+            // Replaces any badly formatted special character string with correct special character
+            options.fieldSep = CSV.isSpecialChar(options.fieldSep) ? CSV.getSpecialChar(options.fieldSep) : options.fieldSep;
+
+            return options;
+          }
+
+          /**
+           * Creates the CSV and updates the scope
+           * @returns {*}
+           */
+          $scope.buildCSV = function () {
+            var deferred = $q.defer();
+
+            $element.addClass($attrs.ngCsvLoadingClass || 'ng-csv-loading');
+
+            CSV.stringify($scope.data(), getBuildCsvOptions()).then(function (csv) {
+              $scope.csv = csv;
+              $element.removeClass($attrs.ngCsvLoadingClass || 'ng-csv-loading');
+              deferred.resolve(csv);
+            });
+            $scope.$apply(); // Old angular support
+
+            return deferred.promise;
+          };
+        }
+      ],
+      link: function (scope, element, attrs) {
+        function doClick() {
+          var charset = scope.charset || "utf-8";
+          var blob = new Blob([scope.csv], {
+            type: "text/csv;charset="+ charset + ";"
+          });
+
+          if (window.navigator.msSaveOrOpenBlob) {
+            navigator.msSaveBlob(blob, scope.getFilename());
+          } else {
+
+            var downloadContainer = angular.element('<div data-tap-disabled="true"><a></a></div>');
+            var downloadLink = angular.element(downloadContainer.children()[0]);
+            downloadLink.attr('href', window.URL.createObjectURL(blob));
+            downloadLink.attr('download', scope.getFilename());
+            downloadLink.attr('target', '_blank');
+
+            $document.find('body').append(downloadContainer);
+            $timeout(function () {
+              downloadLink[0].click();
+              downloadLink.remove();
+            }, null);
+          }
+        }
+
+        element.bind('click', function (e) {
+          scope.buildCSV().then(function (csv) {
+            doClick();
+          });
+          scope.$apply();
+        });
+      }
+    };
+  }]);
+})(window, document);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-csv/build/ng-csv.min.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-csv/build/ng-csv.min.js
new file mode 100644
index 0000000..94dcd7f
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-csv/build/ng-csv.min.js
@@ -0,0 +1,2 @@
+/*! ng-csv 10-10-2015 */
+!function(a){angular.module("ngCsv.config",[]).value("ngCsv.config",{debug:!0}).config(["$compileProvider",function(a){angular.isDefined(a.urlSanitizationWhitelist)?a.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/):a.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)}]),angular.module("ngCsv.directives",["ngCsv.services"]),angular.module("ngCsv.services",[]),angular.module("ngCsv",["ngCsv.config","ngCsv.services","ngCsv.directives","ngSanitize"]),"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports="ngCsv"),angular.module("ngCsv.services").service("CSV",["$q",function(a){var b="\r\n",c="",d={"\\t":"	","\\b":"\b","\\v":"","\\f":"\f","\\r":"\r"};this.stringifyField=function(a,b){return"locale"===b.decimalSep&&this.isFloat(a)?a.toLocaleString():"."!==b.decimalSep&&this.isFloat(a)?a.toString().replace(".",b.decimalSep):"string"==typeof a?(a=a.replace(/"/g,'""'),(b.quoteStrings||a.indexOf(",")>-1||a.indexOf("\n")>-1||a.indexOf("\r")>-1)&&(a=b.txtDelim+a+b.txtDelim),a):"boolean"==typeof a?a?"TRUE":"FALSE":a},this.isFloat=function(a){return+a===a&&(!isFinite(a)||Boolean(a%1))},this.stringify=function(d,e){var f=a.defer(),g=this,h="",i="",j=a.when(d).then(function(a){if(angular.isDefined(e.header)&&e.header){var d,j;d=[],angular.forEach(e.header,function(a){this.push(g.stringifyField(a,e))},d),j=d.join(e.fieldSep?e.fieldSep:","),i+=j+b}var k=[];if(angular.isArray(a)?k=a:angular.isFunction(a)&&(k=a()),angular.isDefined(e.label)&&e.label&&"boolean"==typeof e.label){var l,m;l=[],angular.forEach(k[0],function(a,b){this.push(g.stringifyField(b,e))},l),m=l.join(e.fieldSep?e.fieldSep:","),i+=m+b}angular.forEach(k,function(a,c){var d,f,h=angular.copy(k[c]);f=[];var j=e.columnOrder?e.columnOrder:h;angular.forEach(j,function(a){var b=e.columnOrder?h[a]:a;this.push(g.stringifyField(b,e))},f),d=f.join(e.fieldSep?e.fieldSep:","),i+=c<k.length?d+b:d}),e.addByteOrderMarker&&(h+=c),h+=i,f.resolve(h)});return"function"==typeof j["catch"]&&j["catch"](function(a){f.reject(a)}),f.promise},this.isSpecialChar=function(a){return void 0!==d[a]},this.getSpecialChar=function(a){return d[a]}}]),angular.module("ngCsv.directives").directive("ngCsv",["$parse","$q","CSV","$document","$timeout",function(b,c,d,e,f){return{restrict:"AC",scope:{data:"&ngCsv",filename:"@filename",header:"&csvHeader",columnOrder:"&csvColumnOrder",txtDelim:"@textDelimiter",decimalSep:"@decimalSeparator",quoteStrings:"@quoteStrings",fieldSep:"@fieldSeparator",lazyLoad:"@lazyLoad",addByteOrderMarker:"@addBom",ngClick:"&",charset:"@charset",label:"&csvLabel"},controller:["$scope","$element","$attrs","$transclude",function(a,b,e){function f(){var b={txtDelim:a.txtDelim?a.txtDelim:'"',decimalSep:a.decimalSep?a.decimalSep:".",quoteStrings:a.quoteStrings,addByteOrderMarker:a.addByteOrderMarker};return angular.isDefined(e.csvHeader)&&(b.header=a.$eval(a.header)),angular.isDefined(e.csvColumnOrder)&&(b.columnOrder=a.$eval(a.columnOrder)),angular.isDefined(e.csvLabel)&&(b.label=a.$eval(a.label)),b.fieldSep=a.fieldSep?a.fieldSep:",",b.fieldSep=d.isSpecialChar(b.fieldSep)?d.getSpecialChar(b.fieldSep):b.fieldSep,b}a.csv="",angular.isDefined(a.lazyLoad)&&"true"==a.lazyLoad||angular.isArray(a.data)&&a.$watch("data",function(){a.buildCSV()},!0),a.getFilename=function(){return a.filename||"download.csv"},a.buildCSV=function(){var g=c.defer();return b.addClass(e.ngCsvLoadingClass||"ng-csv-loading"),d.stringify(a.data(),f()).then(function(c){a.csv=c,b.removeClass(e.ngCsvLoadingClass||"ng-csv-loading"),g.resolve(c)}),a.$apply(),g.promise}}],link:function(b,c){function d(){var c=b.charset||"utf-8",d=new Blob([b.csv],{type:"text/csv;charset="+c+";"});if(a.navigator.msSaveOrOpenBlob)navigator.msSaveBlob(d,b.getFilename());else{var g=angular.element('<div data-tap-disabled="true"><a></a></div>'),h=angular.element(g.children()[0]);h.attr("href",a.URL.createObjectURL(d)),h.attr("download",b.getFilename()),h.attr("target","_blank"),e.find("body").append(g),f(function(){h[0].click(),h.remove()},null)}}c.bind("click",function(){b.buildCSV().then(function(){d()}),b.$apply()})}}}])}(window,document);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.min.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.min.js
new file mode 100644
index 0000000..fa1a020
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.min.js
@@ -0,0 +1 @@
+!function(){"use strict";angular.module("ng-ip-address",[]).directive("ngIpAddress",function(){return{restrict:"A",require:"?ngModel",scope:{config:"=?ngIpConfig"},link:function(e,i,n,r){function t(e){return!isNaN(parseFloat(e))&&isFinite(e)}if(r){var l=!1,c=!1,s=new RegExp("^0","g"),a=new RegExp("^\\.","g"),o=new RegExp("\\.\\.+","g"),h=new RegExp(":","g"),u=new RegExp("^:","g"),p=0,w=!1;e.$watchCollection("config",function(e){e?(c="boolean"==typeof e.requirePort&&e.requirePort,l=c||"boolean"==typeof e.allowPort&&e.allowPort):(l=!1,c=!1),l||!r.$viewValue?r.$parsers[0](r.$viewValue):r.$setViewValue(r.$viewValue.replace(h,""))}),i.bind("keydown",function(e){17!==e.which&&91!==e.which||(w=!0)}),i.bind("keyup",function(e){17!==e.which&&91!==e.which||(w=!1)}),i.bind("keypress",function(e){(e.which<46&&0!==e.which&&8!==e.which&&13!==e.which||47===e.which||58===e.which&&!l||e.which>58&&(!w||99!==e.which&&118!==e.which&&120!==e.which))&&e.preventDefault()}),r.$parsers.push(function(e){if(!e)return r.$setValidity("ipAddress",!0),e;p=i[0].selectionStart;var n=!0,w=null,g=(e=(e=e.replace(a,"")).replace(o,".")).split("."),f=g.length;f<4?n=!1:f>4&&(g.length=4,f=4);for(var d=0;d<f;d++){var $=g[d];if(l)if(d<3)$=$.replace(h,"");else if(-1!==($=$.replace(u,"")).indexOf(":")){var v=$.split(":");$=v[0],(!(w=v[1].replace(s,"").substring(0,5))||!t($)||w>65535)&&(n=!1)}else c&&(n=!1);$.length>1?(!t($=$.replace(s,"").substring(0,3))||$>255)&&(n=!1):$||(n=!1),g[d]=$}return e=g.join("."),null!==w&&(e+=":"+w),r.$setValidity("ipAddress",n),r.$setViewValue(e),r.$render(),i[0].setSelectionRange(p,p),e})}}}})}();
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.vanilla.min.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.vanilla.min.js
new file mode 100644
index 0000000..5c1f0dd
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.vanilla.min.js
@@ -0,0 +1 @@
+!function(){"use strict";angular.module("ng-ip-address",[]).directive("ngIpAddress",function(){return{restrict:"A",require:"?ngModel",link:function(e,i,n,r){function t(e){return!isNaN(parseFloat(e))&&isFinite(e)}if(r){var h=new RegExp("^0","g"),c=new RegExp("^\\.","g"),s=new RegExp("\\.\\.+","g"),u=0,a=!1;i.bind("keydown",function(e){17!==e.which&&91!==e.which||(a=!0)}),i.bind("keyup",function(e){17!==e.which&&91!==e.which||(a=!1)}),i.bind("keypress",function(e){(e.which<46&&0!==e.which&&8!==e.which&&13!==e.which||47===e.which||e.which>57&&(!a||99!==e.which&&118!==e.which&&120!==e.which))&&e.preventDefault()}),r.$parsers.push(function(e){if(!e)return r.$setValidity("ipAddress",!0),e;u=i[0].selectionStart;var n=!0,a=(e=(e=e.replace(c,"")).replace(s,".")).split("."),d=a.length;d<4?n=!1:d>4&&(a.length=4,d=4);for(var l=0;l<d;l++){var w=a[l];w.length>1?(!t(w=w.replace(h,"").substring(0,3))||w>255)&&(n=!1):w||(n=!1),a[l]=w}return e=a.join("."),r.$setValidity("ipAddress",n),r.$setViewValue(e),r.$render(),i[0].setSelectionRange(u,u),e})}}}})}();
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/package.json b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/package.json
new file mode 100644
index 0000000..87f59cb
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/ng-ip-address/package.json
@@ -0,0 +1,67 @@
+{
+  "_from": "ng-ip-address",
+  "_id": "ng-ip-address@1.1.12",
+  "_inBundle": false,
+  "_integrity": "sha1-reynz2xY/ZSD8FLv30DF+2UMYrg=",
+  "_location": "/ng-ip-address",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "tag",
+    "registry": true,
+    "raw": "ng-ip-address",
+    "name": "ng-ip-address",
+    "escapedName": "ng-ip-address",
+    "rawSpec": "",
+    "saveSpec": null,
+    "fetchSpec": "latest"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/ng-ip-address/-/ng-ip-address-1.1.12.tgz",
+  "_shasum": "adeca7cf6c58fd9483f052efdf40c5fb650c62b8",
+  "_spec": "ng-ip-address",
+  "_where": "D:\\routing",
+  "author": {
+    "name": "Scott Gullen"
+  },
+  "bugs": {
+    "url": "https://github.com/CautemocSg/ng-ip-address/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "AngularJS directive that will validate an IP address and impose relevant character and structure limits",
+  "devDependencies": {
+    "gulp": "^3.9.1",
+    "gulp-rename": "^1.2.2",
+    "gulp-uglify": "^3.0.0",
+    "jasmine-core": "^2.6.4",
+    "karma": "^1.7.0",
+    "karma-jasmine": "^1.1.0",
+    "karma-phantomjs-launcher": "^1.0.4",
+    "phantomjs-prebuilt": "^2.1.14"
+  },
+  "homepage": "https://github.com/CautemocSg/ng-ip-address#readme",
+  "keywords": [
+    "angular",
+    "angularjs",
+    "directive",
+    "ip address",
+    "form",
+    "input",
+    "validation"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "ng-ip-address",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/CautemocSg/ng-ip-address.git"
+  },
+  "scripts": {
+    "build": "gulp default",
+    "test": "gulp test"
+  },
+  "version": "1.1.12"
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/tether.min.js b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/tether.min.js
new file mode 100644
index 0000000..bd608c0
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/node_modules/tether.min.js
@@ -0,0 +1 @@
+!function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e(require,exports,module):t.Tether=e()}(this,function(t,e,o){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t){var e=t.getBoundingClientRect(),o={};for(var i in e)o[i]=e[i];if(t.ownerDocument!==document){var r=t.ownerDocument.defaultView.frameElement;if(r){var s=n(r);o.top+=s.top,o.bottom+=s.top,o.left+=s.left,o.right+=s.left}}return o}function r(t){var e=getComputedStyle(t)||{},o=e.position,i=[];if("fixed"===o)return[t];for(var n=t;(n=n.parentNode)&&n&&1===n.nodeType;){var r=void 0;try{r=getComputedStyle(n)}catch(s){}if("undefined"==typeof r||null===r)return i.push(n),i;var a=r,f=a.overflow,l=a.overflowX,h=a.overflowY;/(auto|scroll|overlay)/.test(f+h+l)&&("absolute"!==o||["relative","absolute","fixed"].indexOf(r.position)>=0)&&i.push(n)}return i.push(t.ownerDocument.body),t.ownerDocument!==document&&i.push(t.ownerDocument.defaultView),i}function s(){A&&document.body.removeChild(A),A=null}function a(t){var e=void 0;t===document?(e=document,t=document.documentElement):e=t.ownerDocument;var o=e.documentElement,i=n(t),r=P();return i.top-=r.top,i.left-=r.left,"undefined"==typeof i.width&&(i.width=document.body.scrollWidth-i.left-i.right),"undefined"==typeof i.height&&(i.height=document.body.scrollHeight-i.top-i.bottom),i.top=i.top-o.clientTop,i.left=i.left-o.clientLeft,i.right=e.body.clientWidth-i.width-i.left,i.bottom=e.body.clientHeight-i.height-i.top,i}function f(t){return t.offsetParent||document.documentElement}function l(){if(M)return M;var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");h(e.style,{position:"absolute",top:0,left:0,pointerEvents:"none",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),e.appendChild(t),document.body.appendChild(e);var o=t.offsetWidth;e.style.overflow="scroll";var i=t.offsetWidth;o===i&&(i=e.clientWidth),document.body.removeChild(e);var n=o-i;return M={width:n,height:n}}function h(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=[];return Array.prototype.push.apply(e,arguments),e.slice(1).forEach(function(e){if(e)for(var o in e)({}).hasOwnProperty.call(e,o)&&(t[o]=e[o])}),t}function d(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.remove(e)});else{var o=new RegExp("(^| )"+e.split(" ").join("|")+"( |$)","gi"),i=c(t).replace(o," ");g(t,i)}}function p(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.add(e)});else{d(t,e);var o=c(t)+(" "+e);g(t,o)}}function u(t,e){if("undefined"!=typeof t.classList)return t.classList.contains(e);var o=c(t);return new RegExp("(^| )"+e+"( |$)","gi").test(o)}function c(t){return t.className instanceof t.ownerDocument.defaultView.SVGAnimatedString?t.className.baseVal:t.className}function g(t,e){t.setAttribute("class",e)}function m(t,e,o){o.forEach(function(o){e.indexOf(o)===-1&&u(t,o)&&d(t,o)}),e.forEach(function(e){u(t,e)||p(t,e)})}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function y(t,e){var o=arguments.length<=2||void 0===arguments[2]?1:arguments[2];return t+o>=e&&e>=t-o}function b(){return"object"==typeof performance&&"function"==typeof performance.now?performance.now():+new Date}function w(){for(var t={top:0,left:0},e=arguments.length,o=Array(e),i=0;i<e;i++)o[i]=arguments[i];return o.forEach(function(e){var o=e.top,i=e.left;"string"==typeof o&&(o=parseFloat(o,10)),"string"==typeof i&&(i=parseFloat(i,10)),t.top+=o,t.left+=i}),t}function C(t,e){return"string"==typeof t.left&&t.left.indexOf("%")!==-1&&(t.left=parseFloat(t.left,10)/100*e.width),"string"==typeof t.top&&t.top.indexOf("%")!==-1&&(t.top=parseFloat(t.top,10)/100*e.height),t}function O(t,e){return"scrollParent"===e?e=t.scrollParents[0]:"window"===e&&(e=[pageXOffset,pageYOffset,innerWidth+pageXOffset,innerHeight+pageYOffset]),e===document&&(e=e.documentElement),"undefined"!=typeof e.nodeType&&!function(){var t=e,o=a(e),i=o,n=getComputedStyle(e);if(e=[i.left,i.top,o.width+i.left,o.height+i.top],t.ownerDocument!==document){var r=t.ownerDocument.defaultView;e[0]+=r.pageXOffset,e[1]+=r.pageYOffset,e[2]+=r.pageXOffset,e[3]+=r.pageYOffset}G.forEach(function(t,o){t=t[0].toUpperCase()+t.substr(1),"Top"===t||"Left"===t?e[o]+=parseFloat(n["border"+t+"Width"]):e[o]-=parseFloat(n["border"+t+"Width"])})}(),e}var E=function(){function t(t,e){for(var o=0;o<e.length;o++){var i=e[o];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,o,i){return o&&t(e.prototype,o),i&&t(e,i),e}}(),x=void 0;"undefined"==typeof x&&(x={modules:[]});var A=null,T=function(){var t=0;return function(){return++t}}(),S={},P=function(){var t=A;t&&document.body.contains(t)||(t=document.createElement("div"),t.setAttribute("data-tether-id",T()),h(t.style,{top:0,left:0,position:"absolute"}),document.body.appendChild(t),A=t);var e=t.getAttribute("data-tether-id");return"undefined"==typeof S[e]&&(S[e]=n(t),k(function(){delete S[e]})),S[e]},M=null,W=[],k=function(t){W.push(t)},_=function(){for(var t=void 0;t=W.pop();)t()},B=function(){function t(){i(this,t)}return E(t,[{key:"on",value:function(t,e,o){var i=!(arguments.length<=3||void 0===arguments[3])&&arguments[3];"undefined"==typeof this.bindings&&(this.bindings={}),"undefined"==typeof this.bindings[t]&&(this.bindings[t]=[]),this.bindings[t].push({handler:e,ctx:o,once:i})}},{key:"once",value:function(t,e,o){this.on(t,e,o,!0)}},{key:"off",value:function(t,e){if("undefined"!=typeof this.bindings&&"undefined"!=typeof this.bindings[t])if("undefined"==typeof e)delete this.bindings[t];else for(var o=0;o<this.bindings[t].length;)this.bindings[t][o].handler===e?this.bindings[t].splice(o,1):++o}},{key:"trigger",value:function(t){if("undefined"!=typeof this.bindings&&this.bindings[t]){for(var e=0,o=arguments.length,i=Array(o>1?o-1:0),n=1;n<o;n++)i[n-1]=arguments[n];for(;e<this.bindings[t].length;){var r=this.bindings[t][e],s=r.handler,a=r.ctx,f=r.once,l=a;"undefined"==typeof l&&(l=this),s.apply(l,i),f?this.bindings[t].splice(e,1):++e}}}}]),t}();x.Utils={getActualBoundingClientRect:n,getScrollParents:r,getBounds:a,getOffsetParent:f,extend:h,addClass:p,removeClass:d,hasClass:u,updateClasses:m,defer:k,flush:_,uniqueId:T,Evented:B,getScrollBarSize:l,removeUtilElements:s};var j=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),E=function(){function t(t,e){for(var o=0;o<e.length;o++){var i=e[o];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,o,i){return o&&t(e.prototype,o),i&&t(e,i),e}}(),z=function(t,e,o){for(var i=!0;i;){var n=t,r=e,s=o;i=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,r);if(void 0!==a){if("value"in a)return a.value;var f=a.get;if(void 0===f)return;return f.call(s)}var l=Object.getPrototypeOf(n);if(null===l)return;t=l,e=r,o=s,i=!0,a=l=void 0}};if("undefined"==typeof x)throw new Error("You must include the utils.js file before tether.js");var Y=x.Utils,r=Y.getScrollParents,a=Y.getBounds,f=Y.getOffsetParent,h=Y.extend,p=Y.addClass,d=Y.removeClass,m=Y.updateClasses,k=Y.defer,_=Y.flush,l=Y.getScrollBarSize,s=Y.removeUtilElements,L=function(){if("undefined"==typeof document)return"";for(var t=document.createElement("div"),e=["transform","WebkitTransform","OTransform","MozTransform","msTransform"],o=0;o<e.length;++o){var i=e[o];if(void 0!==t.style[i])return i}}(),D=[],X=function(){D.forEach(function(t){t.position(!1)}),_()};!function(){var t=null,e=null,o=null,i=function n(){return"undefined"!=typeof e&&e>16?(e=Math.min(e-16,250),void(o=setTimeout(n,250))):void("undefined"!=typeof t&&b()-t<10||(null!=o&&(clearTimeout(o),o=null),t=b(),X(),e=b()-t))};"undefined"!=typeof window&&"undefined"!=typeof window.addEventListener&&["resize","scroll","touchmove"].forEach(function(t){window.addEventListener(t,i)})}();var F={center:"center",left:"right",right:"left"},H={middle:"middle",top:"bottom",bottom:"top"},N={top:0,left:0,middle:"50%",center:"50%",bottom:"100%",right:"100%"},U=function(t,e){var o=t.left,i=t.top;return"auto"===o&&(o=F[e.left]),"auto"===i&&(i=H[e.top]),{left:o,top:i}},V=function(t){var e=t.left,o=t.top;return"undefined"!=typeof N[t.left]&&(e=N[t.left]),"undefined"!=typeof N[t.top]&&(o=N[t.top]),{left:e,top:o}},R=function(t){var e=t.split(" "),o=j(e,2),i=o[0],n=o[1];return{top:i,left:n}},q=R,I=function(t){function e(t){var o=this;i(this,e),z(Object.getPrototypeOf(e.prototype),"constructor",this).call(this),this.position=this.position.bind(this),D.push(this),this.history=[],this.setOptions(t,!1),x.modules.forEach(function(t){"undefined"!=typeof t.initialize&&t.initialize.call(o)}),this.position()}return v(e,t),E(e,[{key:"getClass",value:function(){var t=arguments.length<=0||void 0===arguments[0]?"":arguments[0],e=this.options.classes;return"undefined"!=typeof e&&e[t]?this.options.classes[t]:this.options.classPrefix?this.options.classPrefix+"-"+t:t}},{key:"setOptions",value:function(t){var e=this,o=arguments.length<=1||void 0===arguments[1]||arguments[1],i={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto",classPrefix:"tether"};this.options=h(i,t);var n=this.options,s=n.element,a=n.target,f=n.targetModifier;if(this.element=s,this.target=a,this.targetModifier=f,"viewport"===this.target?(this.target=document.body,this.targetModifier="visible"):"scroll-handle"===this.target&&(this.target=document.body,this.targetModifier="scroll-handle"),["element","target"].forEach(function(t){if("undefined"==typeof e[t])throw new Error("Tether Error: Both element and target must be defined");"undefined"!=typeof e[t].jquery?e[t]=e[t][0]:"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),p(this.element,this.getClass("element")),this.options.addTargetClasses!==!1&&p(this.target,this.getClass("target")),!this.options.attachment)throw new Error("Tether Error: You must provide an attachment");this.targetAttachment=q(this.options.targetAttachment),this.attachment=q(this.options.attachment),this.offset=R(this.options.offset),this.targetOffset=R(this.options.targetOffset),"undefined"!=typeof this.scrollParents&&this.disable(),"scroll-handle"===this.targetModifier?this.scrollParents=[this.target]:this.scrollParents=r(this.target),this.options.enabled!==!1&&this.enable(o)}},{key:"getTargetBounds",value:function(){if("undefined"==typeof this.targetModifier)return a(this.target);if("visible"===this.targetModifier){if(this.target===document.body)return{top:pageYOffset,left:pageXOffset,height:innerHeight,width:innerWidth};var t=a(this.target),e={height:t.height,width:t.width,top:t.top,left:t.left};return e.height=Math.min(e.height,t.height-(pageYOffset-t.top)),e.height=Math.min(e.height,t.height-(t.top+t.height-(pageYOffset+innerHeight))),e.height=Math.min(innerHeight,e.height),e.height-=2,e.width=Math.min(e.width,t.width-(pageXOffset-t.left)),e.width=Math.min(e.width,t.width-(t.left+t.width-(pageXOffset+innerWidth))),e.width=Math.min(innerWidth,e.width),e.width-=2,e.top<pageYOffset&&(e.top=pageYOffset),e.left<pageXOffset&&(e.left=pageXOffset),e}if("scroll-handle"===this.targetModifier){var t=void 0,o=this.target;o===document.body?(o=document.documentElement,t={left:pageXOffset,top:pageYOffset,height:innerHeight,width:innerWidth}):t=a(o);var i=getComputedStyle(o),n=o.scrollWidth>o.clientWidth||[i.overflow,i.overflowX].indexOf("scroll")>=0||this.target!==document.body,r=0;n&&(r=15);var s=t.height-parseFloat(i.borderTopWidth)-parseFloat(i.borderBottomWidth)-r,e={width:15,height:.975*s*(s/o.scrollHeight),left:t.left+t.width-parseFloat(i.borderLeftWidth)-15},f=0;s<408&&this.target===document.body&&(f=-11e-5*Math.pow(s,2)-.00727*s+22.58),this.target!==document.body&&(e.height=Math.max(e.height,24));var l=this.target.scrollTop/(o.scrollHeight-s);return e.top=l*(s-e.height-f)+t.top+parseFloat(i.borderTopWidth),this.target===document.body&&(e.height=Math.max(e.height,24)),e}}},{key:"clearCache",value:function(){this._cache={}}},{key:"cache",value:function(t,e){return"undefined"==typeof this._cache&&(this._cache={}),"undefined"==typeof this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]}},{key:"enable",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]||arguments[0];this.options.addTargetClasses!==!1&&p(this.target,this.getClass("enabled")),p(this.element,this.getClass("enabled")),this.enabled=!0,this.scrollParents.forEach(function(e){e!==t.target.ownerDocument&&e.addEventListener("scroll",t.position)}),e&&this.position()}},{key:"disable",value:function(){var t=this;d(this.target,this.getClass("enabled")),d(this.element,this.getClass("enabled")),this.enabled=!1,"undefined"!=typeof this.scrollParents&&this.scrollParents.forEach(function(e){e.removeEventListener("scroll",t.position)})}},{key:"destroy",value:function(){var t=this;this.disable(),D.forEach(function(e,o){e===t&&D.splice(o,1)}),0===D.length&&s()}},{key:"updateAttachClasses",value:function(t,e){var o=this;t=t||this.attachment,e=e||this.targetAttachment;var i=["left","top","bottom","right","middle","center"];"undefined"!=typeof this._addAttachClasses&&this._addAttachClasses.length&&this._addAttachClasses.splice(0,this._addAttachClasses.length),"undefined"==typeof this._addAttachClasses&&(this._addAttachClasses=[]);var n=this._addAttachClasses;t.top&&n.push(this.getClass("element-attached")+"-"+t.top),t.left&&n.push(this.getClass("element-attached")+"-"+t.left),e.top&&n.push(this.getClass("target-attached")+"-"+e.top),e.left&&n.push(this.getClass("target-attached")+"-"+e.left);var r=[];i.forEach(function(t){r.push(o.getClass("element-attached")+"-"+t),r.push(o.getClass("target-attached")+"-"+t)}),k(function(){"undefined"!=typeof o._addAttachClasses&&(m(o.element,o._addAttachClasses,r),o.options.addTargetClasses!==!1&&m(o.target,o._addAttachClasses,r),delete o._addAttachClasses)})}},{key:"position",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]||arguments[0];if(this.enabled){this.clearCache();var o=U(this.targetAttachment,this.attachment);this.updateAttachClasses(this.attachment,o);var i=this.cache("element-bounds",function(){return a(t.element)}),n=i.width,r=i.height;if(0===n&&0===r&&"undefined"!=typeof this.lastSize){var s=this.lastSize;n=s.width,r=s.height}else this.lastSize={width:n,height:r};var h=this.cache("target-bounds",function(){return t.getTargetBounds()}),d=h,p=C(V(this.attachment),{width:n,height:r}),u=C(V(o),d),c=C(this.offset,{width:n,height:r}),g=C(this.targetOffset,d);p=w(p,c),u=w(u,g);for(var m=h.left+u.left-p.left,v=h.top+u.top-p.top,y=0;y<x.modules.length;++y){var b=x.modules[y],O=b.position.call(this,{left:m,top:v,targetAttachment:o,targetPos:h,elementPos:i,offset:p,targetOffset:u,manualOffset:c,manualTargetOffset:g,scrollbarSize:S,attachment:this.attachment});if(O===!1)return!1;"undefined"!=typeof O&&"object"==typeof O&&(v=O.top,m=O.left)}var E={page:{top:v,left:m},viewport:{top:v-pageYOffset,bottom:pageYOffset-v-r+innerHeight,left:m-pageXOffset,right:pageXOffset-m-n+innerWidth}},A=this.target.ownerDocument,T=A.defaultView,S=void 0;return T.innerHeight>A.documentElement.clientHeight&&(S=this.cache("scrollbar-size",l),E.viewport.bottom-=S.height),T.innerWidth>A.documentElement.clientWidth&&(S=this.cache("scrollbar-size",l),E.viewport.right-=S.width),["","static"].indexOf(A.body.style.position)!==-1&&["","static"].indexOf(A.body.parentElement.style.position)!==-1||(E.page.bottom=A.body.scrollHeight-v-r,E.page.right=A.body.scrollWidth-m-n),"undefined"!=typeof this.options.optimizations&&this.options.optimizations.moveElement!==!1&&"undefined"==typeof this.targetModifier&&!function(){var e=t.cache("target-offsetparent",function(){return f(t.target)}),o=t.cache("target-offsetparent-bounds",function(){return a(e)}),i=getComputedStyle(e),n=o,r={};if(["Top","Left","Bottom","Right"].forEach(function(t){r[t.toLowerCase()]=parseFloat(i["border"+t+"Width"])}),o.right=A.body.scrollWidth-o.left-n.width+r.right,o.bottom=A.body.scrollHeight-o.top-n.height+r.bottom,E.page.top>=o.top+r.top&&E.page.bottom>=o.bottom&&E.page.left>=o.left+r.left&&E.page.right>=o.right){var s=e.scrollTop,l=e.scrollLeft;E.offset={top:E.page.top-o.top+s-r.top,left:E.page.left-o.left+l-r.left}}}(),this.move(E),this.history.unshift(E),this.history.length>3&&this.history.pop(),e&&_(),!0}}},{key:"move",value:function(t){var e=this;if("undefined"!=typeof this.element.parentNode){var o={};for(var i in t){o[i]={};for(var n in t[i]){for(var r=!1,s=0;s<this.history.length;++s){var a=this.history[s];if("undefined"!=typeof a[i]&&!y(a[i][n],t[i][n])){r=!0;break}}r||(o[i][n]=!0)}}var l={top:"",left:"",right:"",bottom:""},d=function(t,o){var i="undefined"!=typeof e.options.optimizations,n=i?e.options.optimizations.gpu:null;if(n!==!1){var r=void 0,s=void 0;if(t.top?(l.top=0,r=o.top):(l.bottom=0,r=-o.bottom),t.left?(l.left=0,s=o.left):(l.right=0,s=-o.right),window.matchMedia){var a=window.matchMedia("only screen and (min-resolution: 1.3dppx)").matches||window.matchMedia("only screen and (-webkit-min-device-pixel-ratio: 1.3)").matches;a||(s=Math.round(s),r=Math.round(r))}l[L]="translateX("+s+"px) translateY("+r+"px)","msTransform"!==L&&(l[L]+=" translateZ(0)")}else t.top?l.top=o.top+"px":l.bottom=o.bottom+"px",t.left?l.left=o.left+"px":l.right=o.right+"px"},p=!1;if((o.page.top||o.page.bottom)&&(o.page.left||o.page.right)?(l.position="absolute",d(o.page,t.page)):(o.viewport.top||o.viewport.bottom)&&(o.viewport.left||o.viewport.right)?(l.position="fixed",d(o.viewport,t.viewport)):"undefined"!=typeof o.offset&&o.offset.top&&o.offset.left?!function(){l.position="absolute";var i=e.cache("target-offsetparent",function(){return f(e.target)});f(e.element)!==i&&k(function(){e.element.parentNode.removeChild(e.element),i.appendChild(e.element)}),d(o.offset,t.offset),p=!0}():(l.position="absolute",d({top:!0,left:!0},t.page)),!p)if(this.options.bodyElement)this.element.parentNode!==this.options.bodyElement&&this.options.bodyElement.appendChild(this.element);else{for(var u=!0,c=this.element.parentNode;c&&1===c.nodeType&&"BODY"!==c.tagName;){if("static"!==getComputedStyle(c).position){u=!1;break}c=c.parentNode}u||(this.element.parentNode.removeChild(this.element),this.element.ownerDocument.body.appendChild(this.element))}var g={},m=!1;for(var n in l){var v=l[n],b=this.element.style[n];b!==v&&(m=!0,g[n]=v)}m&&k(function(){h(e.element.style,g),e.trigger("repositioned")})}}}]),e}(B);I.modules=[],x.position=X;var $=h(I,x),j=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),Y=x.Utils,a=Y.getBounds,h=Y.extend,m=Y.updateClasses,k=Y.defer,G=["left","top","right","bottom"];x.modules.push({position:function(t){var e=this,o=t.top,i=t.left,n=t.targetAttachment;if(!this.options.constraints)return!0;var r=this.cache("element-bounds",function(){return a(e.element)}),s=r.height,f=r.width;if(0===f&&0===s&&"undefined"!=typeof this.lastSize){var l=this.lastSize;f=l.width,s=l.height}var d=this.cache("target-bounds",function(){return e.getTargetBounds()}),p=d.height,u=d.width,c=[this.getClass("pinned"),this.getClass("out-of-bounds")];this.options.constraints.forEach(function(t){var e=t.outOfBoundsClass,o=t.pinnedClass;e&&c.push(e),o&&c.push(o)}),c.forEach(function(t){["left","top","right","bottom"].forEach(function(e){c.push(t+"-"+e)})});var g=[],v=h({},n),y=h({},this.attachment);return this.options.constraints.forEach(function(t){var r=t.to,a=t.attachment,l=t.pin;"undefined"==typeof a&&(a="");var h=void 0,d=void 0;if(a.indexOf(" ")>=0){var c=a.split(" "),m=j(c,2);d=m[0],h=m[1]}else h=d=a;var b=O(e,r);"target"!==d&&"both"!==d||(o<b[1]&&"top"===v.top&&(o+=p,v.top="bottom"),o+s>b[3]&&"bottom"===v.top&&(o-=p,v.top="top")),"together"===d&&("top"===v.top&&("bottom"===y.top&&o<b[1]?(o+=p,v.top="bottom",o+=s,y.top="top"):"top"===y.top&&o+s>b[3]&&o-(s-p)>=b[1]&&(o-=s-p,v.top="bottom",y.top="bottom")),"bottom"===v.top&&("top"===y.top&&o+s>b[3]?(o-=p,v.top="top",o-=s,y.top="bottom"):"bottom"===y.top&&o<b[1]&&o+(2*s-p)<=b[3]&&(o+=s-p,v.top="top",y.top="top")),"middle"===v.top&&(o+s>b[3]&&"top"===y.top?(o-=s,y.top="bottom"):o<b[1]&&"bottom"===y.top&&(o+=s,y.top="top"))),"target"!==h&&"both"!==h||(i<b[0]&&"left"===v.left&&(i+=u,v.left="right"),i+f>b[2]&&"right"===v.left&&(i-=u,v.left="left")),"together"===h&&(i<b[0]&&"left"===v.left?"right"===y.left?(i+=u,v.left="right",i+=f,y.left="left"):"left"===y.left&&(i+=u,v.left="right",i-=f,y.left="right"):i+f>b[2]&&"right"===v.left?"left"===y.left?(i-=u,v.left="left",i-=f,y.left="right"):"right"===y.left&&(i-=u,v.left="left",i+=f,y.left="left"):"center"===v.left&&(i+f>b[2]&&"left"===y.left?(i-=f,y.left="right"):i<b[0]&&"right"===y.left&&(i+=f,y.left="left"))),"element"!==d&&"both"!==d||(o<b[1]&&"bottom"===y.top&&(o+=s,y.top="top"),o+s>b[3]&&"top"===y.top&&(o-=s,y.top="bottom")),"element"!==h&&"both"!==h||(i<b[0]&&("right"===y.left?(i+=f,y.left="left"):"center"===y.left&&(i+=f/2,y.left="left")),i+f>b[2]&&("left"===y.left?(i-=f,y.left="right"):"center"===y.left&&(i-=f/2,y.left="right"))),"string"==typeof l?l=l.split(",").map(function(t){return t.trim()}):l===!0&&(l=["top","left","right","bottom"]),l=l||[];var w=[],C=[];o<b[1]&&(l.indexOf("top")>=0?(o=b[1],w.push("top")):C.push("top")),o+s>b[3]&&(l.indexOf("bottom")>=0?(o=b[3]-s,w.push("bottom")):C.push("bottom")),i<b[0]&&(l.indexOf("left")>=0?(i=b[0],w.push("left")):C.push("left")),i+f>b[2]&&(l.indexOf("right")>=0?(i=b[2]-f,w.push("right")):C.push("right")),w.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.pinnedClass?e.options.pinnedClass:e.getClass("pinned"),g.push(t),w.forEach(function(e){g.push(t+"-"+e)})}(),C.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.outOfBoundsClass?e.options.outOfBoundsClass:e.getClass("out-of-bounds"),g.push(t),C.forEach(function(e){g.push(t+"-"+e)})}(),(w.indexOf("left")>=0||w.indexOf("right")>=0)&&(y.left=v.left=!1),(w.indexOf("top")>=0||w.indexOf("bottom")>=0)&&(y.top=v.top=!1),v.top===n.top&&v.left===n.left&&y.top===e.attachment.top&&y.left===e.attachment.left||(e.updateAttachClasses(y,v),e.trigger("update",{attachment:y,targetAttachment:v}))}),k(function(){e.options.addTargetClasses!==!1&&m(e.target,g,c),m(e.element,g,c)}),{top:o,left:i}}});var Y=x.Utils,a=Y.getBounds,m=Y.updateClasses,k=Y.defer;x.modules.push({position:function(t){var e=this,o=t.top,i=t.left,n=this.cache("element-bounds",function(){return a(e.element)}),r=n.height,s=n.width,f=this.getTargetBounds(),l=o+r,h=i+s,d=[];o<=f.bottom&&l>=f.top&&["left","right"].forEach(function(t){var e=f[t];e!==i&&e!==h||d.push(t)}),i<=f.right&&h>=f.left&&["top","bottom"].forEach(function(t){var e=f[t];e!==o&&e!==l||d.push(t)});var p=[],u=[],c=["left","top","right","bottom"];return p.push(this.getClass("abutted")),c.forEach(function(t){p.push(e.getClass("abutted")+"-"+t)}),d.length&&u.push(this.getClass("abutted")),d.forEach(function(t){u.push(e.getClass("abutted")+"-"+t)}),k(function(){e.options.addTargetClasses!==!1&&m(e.target,u,p),m(e.element,u,p)}),!0}});var j=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();return x.modules.push({position:function(t){var e=t.top,o=t.left;if(this.options.shift){var i=this.options.shift;"function"==typeof this.options.shift&&(i=this.options.shift.call(this,{top:e,left:o}));var n=void 0,r=void 0;if("string"==typeof i){i=i.split(" "),i[1]=i[1]||i[0];var s=i,a=j(s,2);n=a[0],r=a[1],n=parseFloat(n,10),r=parseFloat(r,10)}else n=i.top,r=i.left;return e+=n,o+=r,{top:e,left:o}}}}),$});
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/package.json b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/package.json
new file mode 100644
index 0000000..8cb9530
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/main/webapp/package.json
@@ -0,0 +1,32 @@
+{
+  "name": "myapp",
+  "version": "1.0.0",
+  "description": "list of node modules for myapp",
+  "main": "app.js",
+  "scripts": {
+    "test": "standard"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/NMSVishal/SDNCReports.git"
+  },
+  "author": "",
+  "license": "Apache-2.0",
+  "bugs": {
+    "url": "https://github.com/NMSVishal/SDNCReports/issues"
+  },
+  "homepage": "https://github.com/NMSVishal/SDNCReports#readme",
+  "dependencies": {
+    "angular": "^1.6.9",
+    "angular-growl": "^0.1.0",
+    "angular-mocks": "^1.6.9",
+    "angular-route": "^1.6.9",
+    "angular-sanitize": "^1.6.9",
+    "angular-utils-pagination": "^0.11.1",
+    "angularjs-datetime-picker": "^0.1.16",
+    "bootstrap": "^4.0.0",
+    "jquery": "^3.3.1",
+    "ng-csv": "^0.3.6",
+    "ng-ip-address": "^1.1.12"
+  }
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/ApplicationTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/ApplicationTest.java
new file mode 100644
index 0000000..58c9cd7
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/ApplicationTest.java
@@ -0,0 +1,35 @@
+package com.onap.sdnc.reports;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.onap.sdnc.reports.controller.ReportController;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class ApplicationTest {
+	
+	private static final Logger logger = LogManager.getLogger(ApplicationTest.class);
+	
+	@Autowired
+	private ReportController reportController;
+	
+	@Test
+    public void controllerAutoWireTest()
+    {
+    	assertNotNull("Due to Application Context Fail", reportController);
+    }
+	
+	@Test
+	public void contextLoads() throws Exception
+	{
+		logger.info("Context Load Test Succeded");
+	}
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/controller/ReportControllerTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/controller/ReportControllerTest.java
new file mode 100644
index 0000000..7e16e11
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/controller/ReportControllerTest.java
@@ -0,0 +1,100 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.controller;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.servlet.MockMvc;
+
+import com.onap.sdnc.reports.Application;
+import com.onap.sdnc.reports.controller.ReportController;
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+import com.onap.sdnc.reports.service.IReportService;
+
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.when;
+
+@RunWith(SpringRunner.class)
+@ContextConfiguration(classes = { Application.class })
+@WebMvcTest(ReportController.class)
+
+public class ReportControllerTest {
+
+	@Autowired
+	private MockMvc mvc;
+
+	@MockBean
+	private IReportService reportService;
+
+	private Date startDate, endDate;
+
+	@Test
+	public void reportServiceAutoWireTest() {
+		assertNotNull("Due to Application Context Fail", reportService);
+	}
+
+	@Test
+	public void whenFindReportByDeviceName_thenReturnThis() throws Exception {
+		Calendar calendar = Calendar.getInstance();
+
+		calendar.add(Calendar.DATE, -7);
+		calendar.add(Calendar.HOUR_OF_DAY, 00);
+		calendar.add(Calendar.MINUTE, 00);
+		calendar.add(Calendar.SECOND, 00);
+		calendar.add(Calendar.MILLISECOND, 00);
+		startDate = calendar.getTime();
+
+		Calendar endDateCalendar = Calendar.getInstance();
+
+		endDateCalendar.add(Calendar.HOUR_OF_DAY, 23);
+		endDateCalendar.add(Calendar.MINUTE, 59);
+		calendar.add(Calendar.SECOND, 00);
+		endDateCalendar.add(Calendar.MILLISECOND, 00);
+		endDate = endDateCalendar.getTime();
+
+		Date d = new Date();
+		startDate = d;
+		endDate = d;
+		PreTestModel preTestModel = new PreTestModel(1, 1, "NetWorkTest", "Router", "Ping Got Successful", "Pass",
+				endDate);
+
+		List<PreTestModel> allTests = Arrays.asList(preTestModel);
+
+		when(reportService.findReportByDeviceIP(startDate, endDate, "0.0.0.0")).thenReturn(allTests);
+
+		mvc.perform(get("/findReportByDeviceIP/{startDate}/{endDate}/{deviceIP}/", startDate, endDate, "0.0.0.0")
+				.contentType(MediaType.APPLICATION_JSON)).andExpect(status().is(400));
+
+	}
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/CertificationClientServiceTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/CertificationClientServiceTest.java
new file mode 100644
index 0000000..6da3921
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/CertificationClientServiceTest.java
@@ -0,0 +1,94 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package com.onap.sdnc.reports.service;
+
+import static org.junit.Assert.assertEquals;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Test;
+import org.mockito.Mock;
+import com.onap.sdnc.reports.model.CertificationInputs;
+import com.onap.sdnc.reports.model.Input;
+import com.onap.sdnc.reports.model.Output;
+import com.onap.sdnc.reports.model.PreTestResponse;
+
+public class CertificationClientServiceTest {
+	
+	@Mock
+	CertificationClientService cService;
+	
+	private String hostname = "host";
+	private String ipaddress = "10.53.122.25";
+	private String statistics = "0% loss";
+	private String avgTime = "Minimum = 0ms";
+	private String testType = "network";
+	
+	@Test(expected = NullPointerException.class)
+	public void TestRestClient() {
+
+		PreTestResponse pretestResponse = new PreTestResponse();
+		pretestResponse.setIpaddress(ipaddress);
+		pretestResponse.setAvgTime(avgTime);
+		pretestResponse.setHostname(hostname);
+		pretestResponse.setStatus("successs");
+		pretestResponse.setStatistics(statistics);
+		pretestResponse.setTesttype(testType);
+
+		List<PreTestResponse> preTestNew = new ArrayList<PreTestResponse>();
+		preTestNew.add(pretestResponse);
+
+		Input input = new Input();
+		input.setIpaddress(ipaddress);
+		input.setHostname(hostname);
+		input.setNetwork(testType);
+
+		CertificationInputs certificationInputs = new CertificationInputs();
+		certificationInputs.setInput(input);
+		CertificationClientService certificationClientservice = new CertificationClientService();
+		certificationClientservice.restClient(certificationInputs, preTestNew, testType);
+		
+	}
+
+	@Test
+	public void pingServiceTest() {
+		CertificationInputs vnfinfo = new CertificationInputs();
+		Input input = new Input();
+		input.setIpaddress("10.53.122.25");
+		input.setHostname("hostname");
+		vnfinfo.setInput(input);
+		Output mockOutput = new Output();
+		mockOutput.setIpaddress("10.53.122.25");
+		Output output = CertificationClientService.pingTest(vnfinfo);
+		assertEquals(output.getIpaddress(), input.getIpaddress());
+	}
+
+	@Test
+	public void protocolTest() {
+		CertificationInputs vnfinfo = new CertificationInputs();
+		Input input = new Input();
+		input.setIpaddress(ipaddress);
+		input.setHostname("hostname");
+		vnfinfo.setInput(input);
+		Output mockOutput = new Output();
+		mockOutput.setIpaddress(ipaddress);
+	}
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/LayerTestServiceImplTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/LayerTestServiceImplTest.java
new file mode 100644
index 0000000..c721401
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/LayerTestServiceImplTest.java
@@ -0,0 +1,84 @@
+package com.onap.sdnc.reports.service;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.CertificationInputs;
+import com.onap.sdnc.reports.model.Input;
+import com.onap.sdnc.reports.model.PreTestResponse;
+import com.onap.sdnc.reports.model.Request;
+import com.onap.sdnc.reports.model.Response;
+import com.onap.sdnc.reports.model.ValidationTestType;
+import com.onap.sdnc.reports.model.VnfList;
+
+public class LayerTestServiceImplTest {
+
+	@Mock
+	CertificationClientService cService;
+
+	@Mock
+	LayerTestServiceImpl layerTestServiceImpl;
+
+	@Before
+	public void setUp() throws Exception {
+		MockitoAnnotations.initMocks(this);
+	}
+
+	@Test
+	public void networkCertificationTest() {
+
+		Request restReq = new Request();
+		Input input = new Input();
+		CertificationInputs vnfinfo = new CertificationInputs();
+		ValidationTestType vType = new ValidationTestType();
+
+		List<ValidationTestType> lVtype = new ArrayList<ValidationTestType>();
+		vType.setTypeId("1");
+		vType.setValidationType("Network Layer");
+		lVtype.add(vType);
+
+		ValidationTestType[] validationTestType = new ValidationTestType[lVtype.size()];
+		lVtype.toArray(validationTestType);
+		restReq.setValidationTestType(validationTestType);
+
+		VnfList vnfList = new VnfList();
+		vnfList.setHostName("hostname");
+		vnfList.setIpAddress("0.0.0.0");
+		vnfList.setPortNo("0");
+
+		List<VnfList> vnfListArray = new ArrayList<VnfList>();
+		vnfListArray.add(vnfList);
+
+		VnfList[] vnfInputArray = new VnfList[vnfListArray.size()];
+		vnfListArray.toArray(vnfInputArray);
+		restReq.setVnfList(vnfInputArray);
+		input.setHostname("hostname");
+		input.setIpaddress("10.20.30.50");
+		input.setNetwork("network");
+		vnfinfo.setInput(input);
+
+		Response res = new Response();
+
+		PreTestResponse preTestRes = new PreTestResponse();
+		preTestRes.setIpaddress("0.0.0.0");
+
+		List<PreTestResponse> preList = new ArrayList<PreTestResponse>();
+		preList.add(preTestRes);
+
+		res.setPreTestResponse(preList);
+
+		Mockito.when(layerTestServiceImpl.networkCertification(restReq)).thenReturn(res);
+
+		Response actualRes = layerTestServiceImpl.networkCertification(restReq);
+
+		assertEquals(actualRes.getPreTestResponse().get(0).getIpaddress(), vnfList.getIpAddress());
+	}
+
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/NetworkCertificationTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/NetworkCertificationTest.java
new file mode 100644
index 0000000..c21b603
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/NetworkCertificationTest.java
@@ -0,0 +1,109 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package com.onap.sdnc.reports.service;
+import static org.junit.Assert.assertEquals;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+/*import com.onap.sdnc.testapi.model.ODLClientResponse;
+import com.onap.sdnc.testapi.model.PreTestResponse;
+import com.onap.sdnc.testapi.model.Request;
+import com.onap.sdnc.testapi.model.Response;
+import com.onap.sdnc.testapi.model.ValidationTestType;
+import com.onap.sdnc.testapi.model.Vnf;
+import com.onap.sdnc.testapi.model.VnfList;
+import com.onap.sdnc.testapi.service.LayerTestServiceImpl;*/
+
+import com.onap.sdnc.reports.model.ODLClientResponse;
+import com.onap.sdnc.reports.model.PreTestResponse;
+import com.onap.sdnc.reports.model.Request;
+import com.onap.sdnc.reports.model.Response;
+import com.onap.sdnc.reports.model.ValidationTestType;
+import com.onap.sdnc.reports.model.Vnf;
+import com.onap.sdnc.reports.model.VnfList;
+
+public class NetworkCertificationTest {
+
+	@Mock
+	LayerTestServiceImpl layerTestServiceImpl;
+
+	@Captor
+	ArgumentCaptor<LayerTestServiceImpl> captor;
+
+	private String hostname = "host";
+	private String ipaddress = "0.0.0.0";
+	private String network = "Network Layer";
+	private String statistics = "0% loss";
+	private String avgTime = "Minimum = 0ms";
+	private String testtype = "network";
+	private String typeId = "1";
+
+	Response response = new Response();
+	PreTestResponse preTestResponse = new PreTestResponse();
+	ODLClientResponse odlClientResponse = new ODLClientResponse();
+	Request restReq = new Request();
+
+	@Before
+	public void setUp() throws Exception {
+		MockitoAnnotations.initMocks(this);
+	}
+
+	@Test
+	public void TestNetworkClient() {
+
+		preTestResponse.setAvgTime(avgTime);
+		preTestResponse.setIpaddress(ipaddress);
+		preTestResponse.setStatistics(statistics);
+		preTestResponse.setStatus("reachable");
+		preTestResponse.setTesttype(testtype);
+
+		List<PreTestResponse> listPreTestResponse = new ArrayList<PreTestResponse>();
+		listPreTestResponse.add(preTestResponse);
+		response.setPreTestResponse(listPreTestResponse);
+
+		ValidationTestType validationTestType = new ValidationTestType();
+		validationTestType.setTypeId(typeId);
+		validationTestType.setValidationType(network);
+
+		VnfList<List> vnflistt = new VnfList<List>();
+		vnflistt.setHostName(hostname);
+		vnflistt.setIpAddress(ipaddress);
+		vnflistt.setPortNo(null);
+
+		VnfList[] vnflist = restReq.getVnfList();
+		ValidationTestType[] validationTestTypee = restReq.getValidationTestType();
+
+		Vnf vnf = new Vnf();
+		vnf.setValidationTestType(validationTestTypee);
+		vnf.setVnfList(vnflist);
+		Mockito.when(layerTestServiceImpl.networkCertification(restReq)).thenReturn(response);
+		Response res = layerTestServiceImpl.networkCertification(restReq);
+
+		assertEquals(res.getPreTestResponse(), response.getPreTestResponse());
+	}		
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/ReportServiceImplTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/ReportServiceImplTest.java
new file mode 100644
index 0000000..27b88da
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/reports/service/ReportServiceImplTest.java
@@ -0,0 +1,127 @@
+package com.onap.sdnc.reports.service;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.TestConfiguration;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import com.onap.sdnc.reports.Application;
+import com.onap.sdnc.reports.config.EmbeddedMariaDbConfig;
+import com.onap.sdnc.reports.model.DeviceConfig;
+import com.onap.sdnc.reports.model.PreTestConfig;
+import com.onap.sdnc.reports.repository.PreTestConfigRepository;
+import com.onap.sdnc.reports.rest.model.PreTestModel;
+
+import org.springframework.test.annotation.DirtiesContext;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+@ContextConfiguration(classes = EmbeddedMariaDbConfig.class)
+@DataJpaTest
+@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
+@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
+public class ReportServiceImplTest {
+
+	private static final Logger logger = LogManager.getLogger(ReportServiceImplTest.class);
+
+	private Date startDate, endDate;
+
+	@TestConfiguration
+	static class ReportServiceImplTestContextConfiguration {
+		@Bean
+		public IReportService reportService() {
+			return new ReportServiceImpl();
+		}
+	}
+
+	@Autowired
+	private IReportService reportService;
+
+	@MockBean
+	private PreTestConfigRepository preTestConfigRepository;
+
+	@Test
+	public void reportServiceAutoWireTest() {
+		assertNotNull("Due to Application Context Fail", reportService);
+	}
+
+	@Test
+	public void preTestConfigRepositoryAutoWireTest() {
+		assertNotNull("Due to Application Context Fail", preTestConfigRepository);
+	}
+
+	@Before
+	public void setUp() {
+		DeviceConfig deviceConfig = new DeviceConfig();
+		deviceConfig.setDeviceIP("0.0.0.0");
+		deviceConfig.setPreTestConfig(null);
+		deviceConfig.setCreationDate(new Date().toLocaleString());
+
+		PreTestConfig obj = new PreTestConfig();
+		obj.setDevice(deviceConfig);
+		obj.setExecuationDetails("Ping Successful");
+		obj.setResult("Pass");
+
+		obj.setTestName("Network Layer");
+		obj.setTimestamp(new Date());
+
+		Calendar calendar = Calendar.getInstance();
+
+		calendar.add(Calendar.DATE, -7);
+		calendar.add(Calendar.HOUR_OF_DAY, 00);
+		calendar.add(Calendar.MINUTE, 00);
+		calendar.add(Calendar.SECOND, 00);
+		calendar.add(Calendar.MILLISECOND, 00);
+		startDate = calendar.getTime();
+
+		Calendar endDateCalendar = Calendar.getInstance();
+
+		endDateCalendar.add(Calendar.HOUR_OF_DAY, 23);
+		endDateCalendar.add(Calendar.MINUTE, 59);
+		calendar.add(Calendar.SECOND, 00);
+		endDateCalendar.add(Calendar.MILLISECOND, 00);
+		endDate = endDateCalendar.getTime();
+
+		System.out.println(
+				"Before Call : startDate " + startDate.toLocaleString() + " endDate : " + endDate.toLocaleString());
+		List<PreTestConfig> configList = new ArrayList<>();
+		configList.add(obj);
+		Mockito.when(preTestConfigRepository.findReportByDeviceIP(startDate, endDate, "0.0.0.0"))
+				.thenReturn(configList);
+	}
+
+	@Test
+	public void whenFindByDeviceName_thenReturPreTest() {
+		int expectedTestId = 0;
+		System.out.println(
+				"Test Call : startDate " + startDate.toLocaleString() + " endDate : " + endDate.toLocaleString());
+
+		List<PreTestModel> testList;
+		try {
+			testList = reportService.findReportByDeviceIP(startDate, endDate, "10.0.0.0");
+			assertThat(testList.get(0).getTestid()).isEqualTo(expectedTestId);
+		} catch (Exception e) {
+
+			e.printStackTrace();
+		}
+	}
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/CertificationInputsTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/CertificationInputsTest.java
new file mode 100644
index 0000000..462f30f
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/CertificationInputsTest.java
@@ -0,0 +1,61 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.CertificationInputs;
+
+import com.onap.sdnc.reports.model.Input;
+
+public class CertificationInputsTest {
+
+	private String hostname = "host";
+	private String ipaddress = "0.0.0.0";
+	private String network = "Network Layer";
+
+	Input input = new Input();
+
+	@Before
+	public void setUp() throws Exception {
+		MockitoAnnotations.initMocks(this);
+	}
+
+	@Test
+	public void TestCertificationInputs() {
+
+		input.setIpaddress(ipaddress);
+		input.setHostname(hostname);
+		input.setNetwork(network);
+		
+		CertificationInputs certificationInputs=new CertificationInputs();
+		certificationInputs.setInput(input);
+		
+		assertEquals(certificationInputs.getInput(), input);
+		assertEquals(input.getHostname(), hostname);
+		assertEquals(input.getIpaddress(), ipaddress);
+		assertEquals(input.getNetwork(), network);
+
+	}
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/InputTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/InputTest.java
new file mode 100644
index 0000000..d089837
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/InputTest.java
@@ -0,0 +1,34 @@
+package com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.Input;
+
+public class InputTest {	
+	
+	private String hostname = "host";
+	private String ipaddress = "0.0.0.0";
+	private String network = "Network Layer";
+	
+	Input input = new Input();
+	
+	@Before
+	public void setUp() throws Exception {
+		MockitoAnnotations.initMocks(this);
+	}
+	
+	@Test
+	public void TestInput() {		
+		
+		input.setHostname(hostname);		
+		input.setIpaddress(ipaddress);
+		input.setNetwork(network);
+
+		assertEquals(input.getHostname(), hostname);
+		assertEquals(input.getIpaddress(), ipaddress);
+		assertEquals(input.getNetwork(), network);
+
+	}
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/OdlResponseTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/OdlResponseTest.java
new file mode 100644
index 0000000..6c9f456
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/OdlResponseTest.java
@@ -0,0 +1,60 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.ODLClientResponse;
+import com.onap.sdnc.reports.model.Output;
+
+public class OdlResponseTest {
+
+	private String hostname = "host";
+	private String ipaddress = "0.0.0.0";
+	private String statistics = "0% loss";
+	private String avgTime = "Minimum = 0ms";
+	private String testresult = "testresult";
+	Output output = new Output();
+	ODLClientResponse odlClientResponse = new ODLClientResponse();
+
+	@Before
+	public void setUp() throws Exception {
+		MockitoAnnotations.initMocks(this);
+	}
+
+	@Test
+	public void TestODLClientResponse() {
+		output.setAvgTime(avgTime);
+		output.setHostname(hostname);
+		output.setIpaddress(ipaddress);
+		output.setTestresult(testresult);
+		output.setStatistics(statistics);
+		output.setStatus("unreachable");
+		output.setReason("Check your input");
+
+		odlClientResponse.setOutput(output);
+
+		assertEquals(odlClientResponse.getOutput(), output);
+	}
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/OutputTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/OutputTest.java
new file mode 100644
index 0000000..a01049d
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/OutputTest.java
@@ -0,0 +1,65 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */ 
+
+package com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.Output;
+
+public class OutputTest {
+	
+	private String hostname = "host";
+	private String ipaddress = "0.0.0.0";
+	private String statistics = "0% loss";
+	private String avgTime = "Minimum = 0ms";
+	private String testresult="testresult";
+	
+	@Before
+	public void setUp() throws Exception {
+		MockitoAnnotations.initMocks(this);
+	}
+	
+	@Test
+	public void TestOutput() {
+		
+		Output output=new Output();
+		
+		output.setAvgTime(avgTime);
+		output.setHostname(hostname);
+		output.setIpaddress(ipaddress);
+		output.setTestresult(testresult);		
+		output.setStatistics(statistics);
+		output.setStatus("unreachable");
+		output.setReason("Check your input");
+
+		assertEquals(output.getHostname(), hostname);
+		assertEquals(output.getIpaddress(), ipaddress);
+		assertEquals(output.getAvgTime(),avgTime);
+		assertEquals(output.getStatistics(), statistics);
+		assertEquals(output.getStatus(), "unreachable");		
+		assertEquals(output.getReason(), "Check your input");
+		assertEquals(output.getTestresult(), testresult);
+	}
+	
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/PreTestResponseTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/PreTestResponseTest.java
new file mode 100644
index 0000000..669e43b
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/PreTestResponseTest.java
@@ -0,0 +1,59 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.PreTestResponse;
+
+public class PreTestResponseTest {
+
+	private String ipaddress = "0.0.0.0";
+	private String avgTime = "Minimum = 0ms";
+	private String statistics = "0% loss";
+	private String testtype = "network";
+
+	PreTestResponse preTestResponse = new PreTestResponse();
+
+	@Before
+	public void setUp() throws Exception {
+		MockitoAnnotations.initMocks(this);
+	}
+
+	@Test
+	public void TestPreTestResponse() {
+
+		preTestResponse.setAvgTime(avgTime);
+		preTestResponse.setIpaddress(ipaddress);
+		preTestResponse.setStatistics(statistics);
+		preTestResponse.setStatus("reachable");
+		preTestResponse.setTesttype(testtype);
+
+		assertEquals(preTestResponse.getAvgTime(), avgTime);
+		assertEquals(preTestResponse.getIpaddress(), ipaddress);
+		assertEquals(preTestResponse.getStatistics(), statistics);
+		assertEquals(preTestResponse.getStatus(), "reachable");
+		assertEquals(preTestResponse.getTesttype(), testtype);
+	}
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/RequestTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/RequestTest.java
new file mode 100644
index 0000000..6515410
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/RequestTest.java
@@ -0,0 +1,75 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */ 
+
+package com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.Request;
+import com.onap.sdnc.reports.model.ValidationTestType;
+import com.onap.sdnc.reports.model.Vnf;
+import com.onap.sdnc.reports.model.VnfList;
+
+public class RequestTest {
+	
+	private String hostname = "host";
+	private String ipaddress = "0.0.0.0";
+	private String network = "Network Layer";
+	private String typeId="1";
+	
+	private ValidationTestType[] validationTestTypee;
+	Request restReq= new Request();
+	
+	@Before
+	public void setUp() throws Exception {
+		MockitoAnnotations.initMocks(this);
+	}
+	
+	@SuppressWarnings("deprecation")
+	@Test
+	public void TestRequest() {					
+		ValidationTestType validationTestType = new ValidationTestType();
+			validationTestType.setTypeId(typeId);
+			validationTestType.setValidationType(network);
+
+		VnfList<List> vnflistt = new VnfList<List>();
+			vnflistt.setHostName(hostname);
+			vnflistt.setIpAddress(ipaddress);
+			vnflistt.setPortNo(null);
+		
+		VnfList[] vnflist = restReq.getVnfList();
+		restReq.setValidationTestType(validationTestTypee);
+		restReq.setVnfList(vnflist);
+		
+		ValidationTestType[] validationTestTypee = restReq.getValidationTestType();
+		
+		Vnf vnf = new Vnf();
+			vnf.setValidationTestType(validationTestTypee);
+			vnf.setVnfList(vnflist);		
+			
+			assertEquals(restReq.getValidationTestType(), validationTestTypee);
+			assertEquals(restReq.getVnfList(), vnflist);
+	}
+	
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/ResponseTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/ResponseTest.java
new file mode 100644
index 0000000..c802f09
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/ResponseTest.java
@@ -0,0 +1,66 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */ 
+
+package com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.PreTestResponse;
+import com.onap.sdnc.reports.model.Response;
+
+
+public class ResponseTest {
+	
+	private String ipaddress = "0.0.0.0";
+	private String statistics = "0% loss";
+	private String avgTime = "Minimum = 0ms";
+	private String testtype = "network";
+	
+	PreTestResponse preTestResponse=new PreTestResponse();
+	Response response= new Response();
+	
+	@Before
+	public void setUp() throws Exception {
+		MockitoAnnotations.initMocks(this);
+	}
+	
+	@Test
+	public void TestResponse() {
+		preTestResponse.setAvgTime(avgTime);
+		preTestResponse.setIpaddress(ipaddress);
+		preTestResponse.setStatistics(statistics);
+		preTestResponse.setStatus("reachable");
+		preTestResponse.setTesttype(testtype);
+		
+		List<PreTestResponse> listPreTestResponse=new ArrayList<PreTestResponse>();
+		listPreTestResponse.add(preTestResponse);
+		response.setPreTestResponse(listPreTestResponse);
+		
+		assertEquals(response.getPreTestResponse(), listPreTestResponse);
+	}
+	
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/ValidationTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/ValidationTest.java
new file mode 100644
index 0000000..37dc750
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/ValidationTest.java
@@ -0,0 +1,48 @@
+/* ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */ 
+
+package com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.ValidationTestType;
+
+
+public class ValidationTest {
+	
+	private String validationType="network";	
+	private String typeId="1";
+	@Before
+	public void setUp() throws Exception {
+		MockitoAnnotations.initMocks(this);
+	}
+	
+	@Test
+	public void TestValidation() {	    
+	    ValidationTestType validationTestType=new ValidationTestType();
+		    validationTestType.setTypeId(typeId);
+		    validationTestType.setValidationType(validationType);
+		
+		    assertEquals(validationTestType.getTypeId(), "1"); 
+		    assertEquals(validationTestType.getValidationType(), "network");
+	}
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/VnfListTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/VnfListTest.java
new file mode 100644
index 0000000..6a24e46
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/VnfListTest.java
@@ -0,0 +1,53 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.MockitoAnnotations;
+import com.onap.sdnc.reports.model.VnfList;
+
+public class VnfListTest {
+
+	private String hostname = "host";
+	private String ipaddress = "0.0.0.0";
+	private String portnumber = null;
+
+	@Before
+	public void setUp() throws Exception {
+		MockitoAnnotations.initMocks(this);
+	}
+
+	@Test
+	public void TestVnfList() {
+		VnfList<List> vnfListt = new VnfList<List>();
+		vnfListt.setHostName(hostname);
+		vnfListt.setIpAddress(ipaddress);
+		vnfListt.setPortNo(null);
+
+		assertEquals(vnfListt.getHostName(), hostname);
+		assertEquals(vnfListt.getIpAddress(), ipaddress);
+		assertEquals(vnfListt.getPortNo(), portnumber);
+	}
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/VnfTest.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/VnfTest.java
new file mode 100644
index 0000000..0b7ac50
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/java/com/onap/sdnc/testapi/model/VnfTest.java
@@ -0,0 +1,61 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package com.onap.sdnc.testapi.model;
+
+import static org.junit.Assert.assertEquals;
+import java.util.List;
+import org.junit.Test;
+import com.onap.sdnc.reports.model.Request;
+import com.onap.sdnc.reports.model.ValidationTestType;
+import com.onap.sdnc.reports.model.Vnf;
+import com.onap.sdnc.reports.model.VnfList;
+
+
+public class VnfTest {
+
+	private String hostname = "host";
+	private String ipaddress = "0.0.0.0";
+	private ValidationTestType[] validationTestType;
+
+	Request restReq = new Request();
+
+	@SuppressWarnings("deprecation")
+	@Test
+	public void TestVnf() {
+
+		VnfList<List> vnfListt = new VnfList<List>();
+		vnfListt.setHostName(hostname);
+		vnfListt.setIpAddress(ipaddress);
+		vnfListt.setPortNo(null);
+
+		VnfList[] vnflist = restReq.getVnfList();
+		Vnf testvnf = new Vnf();
+		testvnf.setVnfList(vnflist);
+		testvnf.setValidationTestType(validationTestType);
+
+		ValidationTestType[] validationTestTypee = restReq.getValidationTestType();
+		testvnf.setValidationTestType(validationTestTypee);
+
+		assertEquals(testvnf.getVnfList(), vnflist);
+		assertEquals(testvnf.getValidationTestType(), validationTestTypee);
+	}
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/resources/application.properties b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/resources/application.properties
new file mode 100644
index 0000000..a17b6c9
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/src/test/resources/application.properties
@@ -0,0 +1,17 @@
+server.tomcat.uri-encoding=utf-8
+
+# maria db details
+
+spring.datasource.url=jdbc:mariadb://localhost:3307/testreports
+spring.datasource.username=root
+spring.datasource.password=root
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
+
+
+spring.datasource.tomcat.max-wait=20000
+spring.datasource.tomcat.max-active=50
+spring.datasource.tomcat.max-idle=20
+spring.datasource.tomcat.min-idle=15
+
+spring.jpa.show-sql=true
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/start.sh b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/start.sh
new file mode 100644
index 0000000..2a08ebe
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsApi/start.sh
@@ -0,0 +1,6 @@
+# start.sh
+/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar target/sdnc_reports_api-0.0.1-SNAPSHOT.jar &
+
+/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar target/sdnc_reports_certification-1.0.1-SNAPSHOT.jar &
+
+/usr/lib/jvm/java-8-openjdk-amd64/bin/java -jar target/sdnc_reports_service-0.0.1-SNAPSHOT.jar
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/pom.xml b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/pom.xml
new file mode 100644
index 0000000..f5ffe22
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.onap.sdnc.oam</groupId>
+	<artifactId>SdncReportsDao</artifactId>
+	<version>1.7.3-SNAPSHOT</version>
+	<packaging>jar</packaging>
+
+        <name>sdnc-oam :: SdncReports :: SdncReportsDao</name>
+
+	<parent>
+		<groupId>org.onap.sdnc.oam</groupId>
+		<artifactId>SdncReports</artifactId>
+		<version>1.7.3-SNAPSHOT</version>
+	</parent>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+			<version>1.5.3.RELEASE</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-jpa</artifactId>
+			<exclusions>
+				<exclusion>
+					<groupId>org.hibernate</groupId>
+					<artifactId>hibernate-entitymanager</artifactId>
+				</exclusion>
+			</exclusions>
+
+		</dependency>
+
+
+		<!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> 
+			<scope>provided</scope> </dependency> -->
+
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-annotations</artifactId>
+		</dependency>
+
+		<!-- <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> 
+			<version>1.0.1.Final</version> </dependency> -->
+		<dependency>
+			<groupId>org.mariadb.jdbc</groupId>
+			<artifactId>mariadb-java-client</artifactId>
+			<version>1.1.7</version>
+		</dependency>
+	</dependencies>
+</project>
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/CertificationInputs.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/CertificationInputs.java
new file mode 100644
index 0000000..d8952fc
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/CertificationInputs.java
@@ -0,0 +1,35 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.model;
+
+public class CertificationInputs {
+
+	private Input input;
+
+    public Input getInput ()
+    {
+        return input;
+    }
+
+    public void setInput (Input input)
+    {
+        this.input = input;
+    }  
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/DeviceConfig.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/DeviceConfig.java
new file mode 100644
index 0000000..2a999e2
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/DeviceConfig.java
@@ -0,0 +1,92 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.model;
+
+import java.io.Serializable;
+import java.util.Set;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "deviceconfig")
+public class DeviceConfig implements Serializable 
+{
+	private static final long serialVersionUID = -3009157732242241606L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.AUTO)
+	@Column(name = "deviceid")
+	private long id;
+
+	@Column(name = "deviceIP")
+	private String deviceIP;
+	
+	@Column(name = "createdon")
+	private String createdon;
+	
+	@OneToMany(mappedBy="device")
+	private Set<PreTestConfig> preTestConfig;
+	
+	public DeviceConfig() {
+	}
+
+	public long getId() {
+		return id;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+	
+	public String getCreationDate() {
+		return createdon;
+	}
+
+	public void setCreationDate(String creationDate) {
+		this.createdon = creationDate;
+	}
+	
+	public Set<PreTestConfig> getPreTestConfig() {
+		return preTestConfig;
+	}
+
+	public void setPreTestConfig(Set<PreTestConfig> preTestConfig) {
+		this.preTestConfig = preTestConfig;
+	}
+	
+	public String getDeviceIP() {
+		return deviceIP;
+	}
+
+	public void setDeviceIP(String deviceIP) {
+		this.deviceIP = deviceIP;
+	}
+
+	@Override
+	public String toString() {
+		return "DeviceConfig [id=" + id + ", deviceName=" +  ", createdon=" + createdon
+				+  ", deviceIP=" + deviceIP + "]";
+	}
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Input.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Input.java
new file mode 100644
index 0000000..7a49034
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Input.java
@@ -0,0 +1,53 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.model;
+
+public class Input {
+	
+	    private String ipaddress;
+	    private String hostname;
+	    private String network;
+	    
+	    public String getHostname() {
+			return hostname;
+		}
+
+		public void setHostname(String hostname) {
+			this.hostname = hostname;
+		}	
+		
+	    public String getIpaddress ()
+	    {
+	        return ipaddress;
+	    }
+
+	    public void setIpaddress (String ipaddress)
+	    {
+	        this.ipaddress = ipaddress;
+	    }
+
+		public String getNetwork() {
+			return network;
+		}
+
+		public void setNetwork(String network) {
+			this.network = network;
+		}
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/ODLClientResponse.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/ODLClientResponse.java
new file mode 100644
index 0000000..999059d
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/ODLClientResponse.java
@@ -0,0 +1,34 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.model;
+
+public class ODLClientResponse {
+	 private Output output;
+
+	    public Output getOutput ()
+	    {
+	        return output;
+	    }
+
+	    public void setOutput (Output output)
+	    {
+	        this.output = output;
+	    }	
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Output.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Output.java
new file mode 100644
index 0000000..3cc0932
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Output.java
@@ -0,0 +1,101 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.model;
+
+public class Output {
+		
+		private String status;
+
+	    private String testresult;
+
+	    private String hostname;
+
+	    private String ipaddress;
+	    
+	    private String statistics;
+	    
+	    private String avgTime;
+
+	    private String reason;
+	    
+	    public String getStatus ()
+	    {
+	        return status;
+	    }
+
+	    public String getStatistics() {
+			return statistics;
+		}
+
+		public void setStatistics(String statistics) {
+			this.statistics = statistics;
+		}
+
+		public void setStatus (String status)
+	    {
+	        this.status = status;
+	    }
+
+	    public String getTestresult ()
+	    {
+	        return testresult;
+	    }
+
+	    public void setTestresult (String testresult)
+	    {
+	        this.testresult = testresult;
+	    }
+
+	    public String getHostname ()
+	    {
+	        return hostname;
+	    }
+
+	    public void setHostname (String hostname)
+	    {
+	        this.hostname = hostname;
+	    }
+
+	    public String getIpaddress ()
+	    {
+	        return ipaddress;
+	    }
+
+	    public void setIpaddress (String ipaddress)
+	    {
+	        this.ipaddress = ipaddress;
+	    }
+
+		public String getAvgTime() {
+			return avgTime;
+		}
+
+		public void setAvgTime(String avgTime) {
+			this.avgTime = avgTime;
+		}
+
+		public String getReason() {
+			return reason;
+		}
+
+		public void setReason(String reason) {
+			this.reason = reason;
+		}
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/PreTestConfig.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/PreTestConfig.java
new file mode 100644
index 0000000..672a6f2
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/PreTestConfig.java
@@ -0,0 +1,120 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+@Entity
+@Table(name = "pretestconfig")
+public class PreTestConfig implements Serializable{
+	
+	private static final long serialVersionUID = -3009157732242241606L;
+	@Id
+	@GeneratedValue(strategy = GenerationType.AUTO)
+	@Column(name = "testid")
+	private long testId ;
+
+	@Column(name = "testname")
+	private String testName;
+		
+	@Column(name = "result")
+	private String result;
+	
+	@Column(name = "execuationdetails")
+	private String execuationDetails;
+	
+	@Column(name = "timestamp")
+	@Temporal(TemporalType.DATE)
+	private Date timestamp;
+	
+	@ManyToOne
+	@JoinColumn(name="deviceid",nullable=false)
+	private DeviceConfig device;
+	
+	public PreTestConfig() 
+	{
+	}
+
+	public long getTestId() {
+		return testId;
+	}
+
+	public void setTestId(long testId) {
+		this.testId = testId;
+	}
+
+	public String getTestName() {
+		return testName;
+	}
+
+	public void setTestName(String testName) {
+		this.testName = testName;
+	}
+
+	public DeviceConfig getDevice() {
+		return device;
+	}
+
+	public void setDevice(DeviceConfig device) {
+		this.device = device;
+	}
+
+	public String getResult() {
+		return result;
+	}
+
+	public void setResult(String result) {
+		this.result = result;
+	}
+
+	public String getExecuationDetails() {
+		return execuationDetails;
+	}
+
+	public void setExecuationDetails(String execuationDetails) {
+		this.execuationDetails = execuationDetails;
+	}
+
+	public Date getTimestamp() {
+		return timestamp;
+	}
+
+	public void setTimestamp(Date timestamp) {
+		this.timestamp = timestamp;
+	}
+
+	@Override
+	public String toString() {
+		return "PreTestConfig [testId=" + testId + ", testName=" + testName + ", result=" + result
+				+ ", execuationDetails=" + execuationDetails + ", timestamp=" + timestamp + ", device=" + device + "]";
+	}		
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/PreTestResponse.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/PreTestResponse.java
new file mode 100644
index 0000000..a2349e7
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/PreTestResponse.java
@@ -0,0 +1,85 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class PreTestResponse {
+
+	private String ipaddress;
+	private String status;
+	private String testtype;
+	private String statistics;
+	private String avgTime;
+	private String hostname;
+
+	public PreTestResponse() {
+
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public String getIpaddress() {
+		return ipaddress;
+	}
+
+	public void setIpaddress(String ipaddress) {
+		this.ipaddress = ipaddress;
+	}
+
+	public String getTesttype() {
+		return testtype;
+	}
+
+	public void setTesttype(String testtype) {
+		this.testtype = testtype;
+	}
+
+	public String getStatistics() {
+		return statistics;
+	}
+
+	public void setStatistics(String statistics) {
+		this.statistics = statistics;
+	}
+
+	public String getAvgTime() {
+		return avgTime;
+	}
+
+	public void setAvgTime(String avgTime) {
+		this.avgTime = avgTime;
+	}
+
+	public String getHostname() {
+		return hostname;
+	}
+
+	public void setHostname(String hostname) {
+		this.hostname = hostname;
+	}
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Request.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Request.java
new file mode 100644
index 0000000..e934a4c
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Request.java
@@ -0,0 +1,43 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.model;
+
+public class Request {
+
+	private VnfList[] vnfList;
+
+	private ValidationTestType[] validationTestType;
+
+	public VnfList[] getVnfList() {
+		return vnfList;
+	}
+
+	public void setVnfList(VnfList[] vnfList) {
+		this.vnfList = vnfList;
+	}
+
+	public ValidationTestType[] getValidationTestType() {
+		return validationTestType;
+	}
+
+	public void setValidationTestType(ValidationTestType[] validationTestType) {
+		this.validationTestType = validationTestType;
+	}	
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Response.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Response.java
new file mode 100644
index 0000000..e773212
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Response.java
@@ -0,0 +1,39 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.model;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class Response {
+
+	private List<PreTestResponse> preTestResponse;
+
+	public List<PreTestResponse> getPreTestResponse() {
+		return preTestResponse;
+	}
+
+	public void setPreTestResponse(List<PreTestResponse> preTestResponse) {
+		this.preTestResponse = preTestResponse;
+	}
+
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/ValidationTestType.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/ValidationTestType.java
new file mode 100644
index 0000000..9d6c987
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/ValidationTestType.java
@@ -0,0 +1,47 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.model;
+
+public class ValidationTestType
+{
+    private String validationType;
+
+    private String typeId;
+
+    public String getValidationType ()
+    {
+        return validationType;
+    }
+
+    public void setValidationType (String validationType)
+    {
+        this.validationType = validationType;
+    }
+
+    public String getTypeId ()
+    {
+        return typeId;
+    }
+
+    public void setTypeId (String typeId)
+    {
+        this.typeId = typeId;
+    }
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Vnf.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Vnf.java
new file mode 100644
index 0000000..b7eb456
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/Vnf.java
@@ -0,0 +1,47 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.model;
+
+public class Vnf {
+
+	 private VnfList[] vnfList;
+
+	    private ValidationTestType[] validationTestType;
+
+	    public VnfList[] getVnfList ()
+	    {
+	        return vnfList;
+	    }
+
+	    public void setVnfList (VnfList[] vnfList)
+	    {
+	        this.vnfList = vnfList;
+	    }
+
+	    public ValidationTestType[] getValidationTestType ()
+	    {
+	        return validationTestType;
+	    }
+
+	    public void setValidationTestType (ValidationTestType[] validationTestType)
+	    {
+	        this.validationTestType = validationTestType;
+	    }
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/VnfList.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/VnfList.java
new file mode 100644
index 0000000..09bf2eb
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/model/VnfList.java
@@ -0,0 +1,54 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.model;
+
+public class VnfList<List> {
+
+	private String portNo;
+
+	private String ipAddress;
+
+	private String hostName;
+
+	public String getPortNo() {
+		return portNo;
+	}
+
+	public void setPortNo(String portNo) {
+		this.portNo = portNo;
+	}
+
+	public String getIpAddress() {
+		return ipAddress;
+	}
+
+	public void setIpAddress(String ipAddress) {
+		this.ipAddress = ipAddress;
+	}
+
+	public String getHostName() {
+		return hostName;
+	}
+
+	public void setHostName(String hostName) {
+		this.hostName = hostName;
+	}
+
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/repository/DeviceRepository.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/repository/DeviceRepository.java
new file mode 100644
index 0000000..9a33bad
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/repository/DeviceRepository.java
@@ -0,0 +1,43 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.repository;
+
+import javax.transaction.Transactional;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import com.onap.sdnc.reports.model.DeviceConfig;
+
+
+@Repository
+public interface DeviceRepository extends JpaRepository<DeviceConfig, Long> {
+
+		@Query(value= "from DeviceConfig where deviceIP = :deviceIP" )
+		DeviceConfig findDeviceIP(@Param("deviceIP") String  deviceIP);
+		
+		@Modifying
+	    @Query(value = "insert into DeviceConfig (deviceIP,createdOn) VALUES (:deviceIP,:createdOn)", nativeQuery = true)
+	    @Transactional
+	    void logDeviceName(@Param("deviceIP") String deviceIP, @Param("createdOn") String  createdOn);
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/repository/PreTestConfigRepository.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/repository/PreTestConfigRepository.java
new file mode 100644
index 0000000..7c86042
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/repository/PreTestConfigRepository.java
@@ -0,0 +1,48 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.repository;
+
+import java.util.Date;
+
+import java.util.List;
+
+import javax.transaction.Transactional;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import com.onap.sdnc.reports.model.PreTestConfig;
+
+
+@Repository
+public interface PreTestConfigRepository extends JpaRepository<PreTestConfig, Long> {
+
+	@Query(value= " from PreTestConfig where timestamp >= :startDate and timestamp <= :endDate  and device.deviceIP = :deviceIP" )
+	List<PreTestConfig> findReportByDeviceIP(@Param("startDate") Date startDate, @Param("endDate")Date endDate, @Param("deviceIP")String deviceIP);
+	
+	@Modifying
+    @Query(value = "insert into PreTestConfig (testName,result,execuationDetails,timestamp,deviceId) VALUES (:testName,:result,:execuationDetails,:timestamp,:deviceId)", nativeQuery = true)
+    @Transactional
+    void logPreTestReport(@Param("testName") String testName,@Param("result") String result, @Param("execuationDetails") String  execuationDetails,@Param("timestamp") String  timestamp,@Param("deviceId") long  deviceId);
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/ConfigDetailsRestModel.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/ConfigDetailsRestModel.java
new file mode 100644
index 0000000..143e726
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/ConfigDetailsRestModel.java
@@ -0,0 +1,51 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.rest.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ConfigDetailsRestModel {
+
+	@JsonProperty(value = JSONTags.TAG_ROUTER)
+	String router;
+	
+	@JsonProperty(value = JSONTags.TAG_DATE)
+	String date;
+	
+	public ConfigDetailsRestModel() {
+		super();
+	}
+	public String getRouter() {
+		return router;
+	}
+	
+	public void setRouter(String router) {
+		this.router = router;
+	}
+
+	public String getDate() {
+		return date;
+	}
+
+	public void setDate(String date) {
+		this.date = date;
+	}
+	
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/JSONTags.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/JSONTags.java
new file mode 100644
index 0000000..54b5c0f
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/JSONTags.java
@@ -0,0 +1,55 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.rest.model;
+
+public class JSONTags {
+
+	public static final String TAG_REQUEST_FNAME = "first_name";
+	public static final String TAG_REQUEST_MNAME = "middle_name";
+	public static final String TAG_STATUS_SUCCESS = "success";
+	public static final String TAG_RESPONSE_STATUS = "status";
+	public static final String TAG_REQUEST_FROM = "request_from";
+	public static final String TAG_REQUEST_ID = "request_id";
+	public static final String TAG_RESPONSE_DETAIL = "response_detail";
+	public static final String TAG_RESPONSE_BODY = "response_body";
+	public static final String TAG_REQUEST_BODY = "request_body";
+	public static final String TAG_RESPONSE_MESSAGE = "request";
+	public static final String TAG_ERROR_CODE = "error_code";
+	public static final String TAG_ERROR_CODE_SUCCESS = "100";
+	
+	
+	public static final String TAG_ROUTER = "router";
+	public static final String TAG_IPSLA = "ipsla";
+	public static final String TAG_OSPF = "ospf";
+	public static final String TAG_DATE = "date";
+	public static final String TAG_COS_ENTRY_NUMBER = "cos-entry-number";
+	public static final String TAG_DESTINATION_ADDRESS = "destination-address";
+	public static final String TAG_SOURCE_ADDRESS = "source-address";
+	public static final String TAG_CUSTOMER_NAME = "customer-name";
+	public static final String TAG_PROTOCOL_NAME = "protocol-name";
+	
+	public static final String TAG_AS_NUMBER = "as-number";
+	public static final String TAG_ROUTER_ID = "router-id";
+	public static final String TAG_PEER_IP = "peer-ip";
+	
+	public static final String TAG_PROCESS_ID = "process-id";
+	
+
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/PreTestModel.java b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/PreTestModel.java
new file mode 100644
index 0000000..0a58121
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/java/com/onap/sdnc/reports/rest/model/PreTestModel.java
@@ -0,0 +1,113 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.reports.rest.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class PreTestModel implements Serializable{
+
+	private static final long serialVersionUID = -3009157732242241606L;
+	
+	private long testid;
+	
+	private long deviceid;
+	
+	private String testName;
+	
+	private String deviceIP,execuationDetails,result;
+	
+	private Date timeStamp;
+
+	public PreTestModel(long testid, long deviceid, String testName, String deviceIP, String execuationDetails,
+			String result, Date timeStamp) {
+		super();
+		this.testid = testid;
+		this.deviceid = deviceid;
+		this.testName = testName;
+		this.deviceIP = deviceIP;
+		this.execuationDetails = execuationDetails;
+		this.result = result;
+		this.timeStamp = timeStamp;
+	}
+
+	@Override
+	public String toString() {
+		return "PreTestModel [testid=" + testid + ", deviceid=" + deviceid + ", testName=" + testName + ", deviceName="
+				+ deviceIP + ", execuationDetails=" + execuationDetails + ", result=" + result + ", timeStamp="
+				+ timeStamp + "]";
+	}
+
+	public long getTestid() {
+		return testid;
+	}
+
+	public void setTestid(long testid) {
+		this.testid = testid;
+	}
+
+	public long getDeviceid() {
+		return deviceid;
+	}
+
+	public void setDeviceid(long deviceid) {
+		this.deviceid = deviceid;
+	}
+
+	public String getTestName() {
+		return testName;
+	}
+
+	public void setTestName(String testName) {
+		this.testName = testName;
+	}
+
+	public String getDeviceIP() {
+		return deviceIP;
+	}
+
+	public void setDeviceName(String deviceName) {
+		this.deviceIP = deviceName;
+	}
+
+	public String getExecuationDetails() {
+		return execuationDetails;
+	}
+
+	public void setExecuationDetails(String execuationDetails) {
+		this.execuationDetails = execuationDetails;
+	}
+
+	public String getResult() {
+		return result;
+	}
+
+	public void setResult(String result) {
+		this.result = result;
+	}
+
+	public Date getTimeStamp() {
+		return timeStamp;
+	}
+
+	public void setTimeStamp(Date timeStamp) {
+		this.timeStamp = timeStamp;
+	}
+}
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/resources/application.properties b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/resources/application.properties
new file mode 100644
index 0000000..71ead1b
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/main/resources/application.properties
@@ -0,0 +1,11 @@
+spring.jpa.generate-ddl=true
+spring.datasource.url=jdbc:mariadb://localhost:3306/testreports
+spring.datasource.username=root
+spring.datasource.password=12345
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
+
+spring.datasource.testWhileIdle=true
+
+#spring.jpa.hibernate.ddl-auto=update
+
diff --git a/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/test/resources/application.properties b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/test/resources/application.properties
new file mode 100644
index 0000000..bf76714
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/SdncReportsDao/src/test/resources/application.properties
@@ -0,0 +1,17 @@
+# H2 DB Details
+spring.jpa.hibernate.ddl-auto = update
+spring.jpa.database = HSQL
+spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.HSQLDialect
+spring.datasource.driverClassName = org.hsqldb.jdbcDriver
+spring.datasource.url: jdbc:hsqldb:mem:scratchdb
+spring.datasource.username =sa
+spring.datasource.password =sa
+
+spring.datasource.tomcat.max-wait=20000
+spring.datasource.tomcat.max-active=50
+spring.datasource.tomcat.max-idle=20
+spring.datasource.tomcat.min-idle=15
+
+spring.jpa.show-sql=true
+
+
diff --git a/sdnc-a1-controller/oam/SdncReports/pom.xml b/sdnc-a1-controller/oam/SdncReports/pom.xml
new file mode 100644
index 0000000..ca25183
--- /dev/null
+++ b/sdnc-a1-controller/oam/SdncReports/pom.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+
+	<groupId>org.onap.sdnc.oam</groupId>
+	<artifactId>SdncReports</artifactId>
+	<version>1.7.3-SNAPSHOT</version>
+	<packaging>pom</packaging>
+
+        <name>sdnc-oam :: SdncReports</name>
+
+	<parent>
+		<groupId>org.onap.ccsdk.parent</groupId>
+		<artifactId>spring-boot-1-starter-parent</artifactId>
+		<version>1.4.3</version>
+	</parent>
+	<distributionManagement>
+		<repository>
+			<id>ecomp-releases</id>
+			<url>http://nexus.onap.org/content/repositories/releases</url>
+		</repository>
+		<snapshotRepository>
+			<id>ecomp-snapshots</id>
+			<url>http://nexus.onap.org/content/repositories/snapshots</url>
+		</snapshotRepository>
+	</distributionManagement>
+
+	<modules>
+		<module>SdncReportsDao</module>
+		<module>SdncReportsApi</module>
+	</modules>
+
+	<build>
+
+		<plugins>
+			<plugin>
+				<groupId>org.jacoco</groupId>
+				<artifactId>jacoco-maven-plugin</artifactId>
+				<version>0.7.5.201505241946</version>
+				<executions>
+					<!-- Prepares the property pointing to the JaCoCo runtime agent which 
+						is passed as VM argument when Maven the Surefire plugin is executed. -->
+					<execution>
+						<id>pre-unit-test</id>
+						<goals>
+							<goal>prepare-agent</goal>
+						</goals>
+						<configuration>
+							<!-- Sets the path to the file which contains the execution data. -->
+							<destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
+							<!-- Sets the name of the property containing the settings for JaCoCo 
+								runtime agent. -->
+							<propertyName>surefireArgLine</propertyName>
+						</configuration>
+					</execution>
+					<!-- Ensures that the code coverage report for unit tests is created 
+						after unit tests have been run. -->
+					<execution>
+						<id>post-unit-test</id>
+						<phase>test</phase>
+						<goals>
+							<goal>report</goal>
+						</goals>
+						<configuration>
+							<!-- Sets the path to the file which contains the execution data. -->
+							<dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
+							<!-- Sets the output directory for the code coverage report. -->
+							<outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/sdnc-a1-controller/oam/admportal/.gitignore b/sdnc-a1-controller/oam/admportal/.gitignore
new file mode 100644
index 0000000..1b8a6ba
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/.gitignore
@@ -0,0 +1,12 @@
+org.eclipse.core.resources.prefs
+.classpath

+.project

+.settings

+.idea

+.externalToolBuilders

+maven-eclipse.xml

+*.class

+target/

+MANIFEST.MF

+.DS_STORE

+.metadata

diff --git a/sdnc-a1-controller/oam/admportal/README b/sdnc-a1-controller/oam/admportal/README
new file mode 100644
index 0000000..5712b36
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/README
@@ -0,0 +1,52 @@
+5.0.1 Initial Build for 1512
+
+10/29/2015
+MR 36,39
+
+11/12/2015
+MR: SDNGC-84 Handle BGP block correctly
+
+11/18/2015
+5.0.3
+MR: SDNGC-145 error with loading uCPE reference data files
+MR: SDNGC=153
+
+11/19/2015
+5.0.4
+MR: SDNGC-154 change ack namespaces for instar request
+
+1/5/2016
+6.0.1
+MR: SDNGC-323 changes to reflect CSI namespace changes
+
+1/7/2016
+6.0.2
+MR: SDNGC-339
+
+1/19/2016
+MR: SDNGC-394 add as-override and secondary-asn to AVPN BGP params
+
+1/20/2016
+MR: SDNGC-404 send response back to CSI before sending request to SDNC
+
+1/27/2016
+MR: SDNGC-463 UCPE Reference Data Change for ucpenminterfaces_MMDDYYYY file
+
+2/15/2016
+MR: SDNGC-489 Add multicast parameters
+
+2/29/2016
+MR: SDNGC-690 AdmPortal protocol changes for 1604
+
+3/22/2016
+MR: SDNGC-909 instar.js handling CSI namespace changes
+
+5/4/2016
+MR: SDNGC-1386 Fix multicast indicator checking
+
+5/19/2016
+MR: SDNGC-1522 CSI format changes in 16.07 for instar CDN
+
+5/23/2016
+MR: SDNGC-1531 More CSI format fixes
+
diff --git a/sdnc-a1-controller/oam/admportal/certs/README b/sdnc-a1-controller/oam/admportal/certs/README
new file mode 100644
index 0000000..4ac10fc
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/certs/README
@@ -0,0 +1 @@
+SSL certs are stored in this directory
diff --git a/sdnc-a1-controller/oam/admportal/config/admportal.json b/sdnc-a1-controller/oam/admportal/config/admportal.json
new file mode 100644
index 0000000..38fd043
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/config/admportal.json
@@ -0,0 +1,68 @@
+{
+  "MainMenu": "gamma",
+  "dbConnLimit": "100",
+  "home": "/opt/admportal",
+  "sslEnabled": "false",
+  "nonSslPort": "8843",
+  "ConexusNetworkPort": "8443",
+  "AppNetworkPort": "8543",
+  "clusterPort": "8443",
+  "serviceHomingServiceType": "SDN-ETHERNET-INTERNET",
+  "passwordKey": "QtfJMKggVk",
+  "preloadImportDirectory": "C:/data/csv",
+  "clusterPrefixURL": "/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-",
+  "clusterMidURL": "-shard-",
+  "clusterSuffixURL": "-config,type=DistributedConfigDatastore",
+  "shards": [
+    "default",
+    "inventory",
+    "topology"
+  ],
+  "dbFabric": "false",
+  "ip-addresses": {
+    "lo": "127.0.0.1",
+    "eth0": "127.0.0.1",
+    "docker0": "172.17.0.1",
+    "virbr0": "192.168.122.1"
+  },
+  "svclogicPropertiesDb01": "/opt/onap/sdnc/data/properties/svclogic.properties.sdnctldb01",
+  "databases": [
+    "dbhost|sdnctldb01"
+  ],
+  "dbFabricServer": "localhost",
+  "dbFabricPort": "32275",
+  "dbFabricGroupId": "hagroup1",
+  "dbFabricUser": "admin",
+  "dbFabricPassword": "admin",
+  "dbFabricDB": "mysql",
+  "dbUser": "sdnctl",
+  "dbPassword": "gamma",
+  "dbName": "sdnctl",
+  "odlProtocol": "http",
+  "odlHost": "sdnhost",
+  "odlConexusHost": "sdnhost",
+  "odlPort": "8181",
+  "odlConexusPort": "8181",
+  "odlUser": "admin",
+  "odlPasswd": "admin",
+  "ConexusNetwork_sslCert": "/opt/onap/sdnc/data/stores/org.onap.sdnc.p12",
+  "ConexusNetwork_sslKey": "?w5&!M;8v1XF;:Xd;g*%S$IY",
+  "AppNetwork_sslCert": "",
+  "AppNetwork_sslKey": "",
+  "hostnameList": [
+    {
+      "hname": "localhost"
+    }
+  ],
+  "shard_list": [
+    {
+      "shard_name": "default"
+    },
+    {
+      "shard_name": "inventory"
+    },
+    {
+      "shard_name": "topology"
+    }
+  ]
+}
diff --git a/sdnc-a1-controller/oam/admportal/config/admportal.log4js.json b/sdnc-a1-controller/oam/admportal/config/admportal.log4js.json
new file mode 100644
index 0000000..1dcb699
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/config/admportal.log4js.json
@@ -0,0 +1,154 @@
+{ 
+  "appenders": [ 
+	{
+		"category": "accesslog",
+		"type"    : "dateFile",
+		"absolute": true,
+		"filename": "/opt/admportal/logs/accesslog.rp",
+		"pattern" : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+        "backups" : 14
+	},
+	{
+        "category" : "usertrace",
+        "type"     : "file",
+		"absolute" : true,
+        "filename" : "/opt/admportal/logs/usertrace.log"
+    },
+    { 
+        "category": "tracelog", 
+        "type"    : "dateFile", 
+        "absolute": true, 
+        "filename": "/opt/admportal/logs/tracelog.log",
+        "pattern": "-yyyy-MM-dd", 
+        "alwaysIncludePattern": true, 
+        "backups"  : 14
+    },
+	{
+		"category" : "eipam",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/eipam.log",
+        "pattern"  : "-yyyy-MM-dd", 
+        "alwaysIncludePattern": true, 
+		"backups"  : 14
+	}, 
+	{
+        "category" : "instar",
+        "type"     : "dateFile",
+        "absolute" : true,
+        "filename" : "/opt/admportal/logs/instar.log",
+        "pattern"  : "-yyyy-MM-dd",
+        "alwaysIncludePattern": true,
+        "backups"  : 14
+    },
+	{
+		"category" : "app",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/app.log",
+        "pattern"  : "-yyyy-MM-dd", 
+        "alwaysIncludePattern": true, 
+		"backups"  : 14
+	}, 
+	{
+		"category" : "csp",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/csp.log",
+        "pattern"  : "-yyyy-MM-dd", 
+        "alwaysIncludePattern": true, 
+		"backups"  : 14
+	}, 
+	{
+		"category" : "db",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/db.log",
+		"pattern"  : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+		"backups"  : 14
+	}, 
+	{
+		"category" : "admin",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/admin.log",
+		"pattern"  : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+		"backups"  : 14
+	}, 
+	{
+		"category" : "resalloc",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/resalloc.log",
+		"pattern"  : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+		"backups"  : 14
+	}, 
+	{
+        "category" : "logs",
+        "type"     : "dateFile",
+        "absolute" : true,
+        "filename" : "/opt/admportal/logs/applogs.log",
+        "pattern"  : "-yyyy-MM-dd",
+        "alwaysIncludePattern": true,
+        "backups"  : 14
+    },
+	{
+		"category" : "sla",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/sla.log",
+		"pattern"  : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+		"backups"  : 14
+	}, 
+	{
+		"category" : "gamma",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/gamma.log",
+		"pattern"  : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+		"backups"  : 14
+	}, 
+	{
+		"category" : "odl",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/odl.log",
+		"pattern"  : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+		"backups"  : 14
+	}, 
+	{
+        "category" : "mobility",
+        "type"     : "dateFile",
+        "absolute" : true,
+        "filename" : "/opt/admportal/logs/mobility.log",
+        "pattern"  : "-yyyy-MM-dd",
+        "alwaysIncludePattern": true,
+        "backups"  : 14
+    },
+	{
+        "category" : "ucpe",
+        "type"     : "dateFile",
+        "absolute" : true,
+        "filename" : "/opt/admportal/logs/ucpe.log",
+        "pattern"  : "-yyyy-MM-dd",
+        "alwaysIncludePattern": true,
+        "backups"  : 14
+    },
+	{
+		"category" : "user",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/user.log",
+		"pattern"  : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+		"backups"  : 14
+	} 
+  ] 
+}
diff --git a/sdnc-a1-controller/oam/admportal/config/svclogic.properties b/sdnc-a1-controller/oam/admportal/config/svclogic.properties
new file mode 100644
index 0000000..f0cc841
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/config/svclogic.properties
@@ -0,0 +1,5 @@
+org.openecomp.sdnctl.sli.dbtype = jdbc

+org.openecomp.sdnctl.sli.jdbc.url = jdbc:mysql://sdnctldb01:3306/sdnctl

+org.openecomp.sdnctl.sli.jdbc.database = sdnctl

+org.openecomp.sdnctl.sli.jdbc.user = sdnctl

+org.openecomp.sdnctl.sli.jdbc.password = gamma

diff --git a/sdnc-a1-controller/oam/admportal/config/svclogic.properties.sdnctldb01 b/sdnc-a1-controller/oam/admportal/config/svclogic.properties.sdnctldb01
new file mode 100644
index 0000000..f0cc841
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/config/svclogic.properties.sdnctldb01
@@ -0,0 +1,5 @@
+org.openecomp.sdnctl.sli.dbtype = jdbc

+org.openecomp.sdnctl.sli.jdbc.url = jdbc:mysql://sdnctldb01:3306/sdnctl

+org.openecomp.sdnctl.sli.jdbc.database = sdnctl

+org.openecomp.sdnctl.sli.jdbc.user = sdnctl

+org.openecomp.sdnctl.sli.jdbc.password = gamma

diff --git a/sdnc-a1-controller/oam/admportal/config/svclogic.properties.sdnctldb02 b/sdnc-a1-controller/oam/admportal/config/svclogic.properties.sdnctldb02
new file mode 100644
index 0000000..c2b48ec
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/config/svclogic.properties.sdnctldb02
@@ -0,0 +1,5 @@
+org.openecomp.sdnctl.sli.dbtype = jdbc

+org.openecomp.sdnctl.sli.jdbc.url = jdbc:mysql://sdnctldb02:3306/sdnctl

+org.openecomp.sdnctl.sli.jdbc.database = sdnctl

+org.openecomp.sdnctl.sli.jdbc.user = sdnctl

+org.openecomp.sdnctl.sli.jdbc.password = gamma

diff --git a/sdnc-a1-controller/oam/admportal/package.json b/sdnc-a1-controller/oam/admportal/package.json
new file mode 100644
index 0000000..6274d72
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/package.json
@@ -0,0 +1,39 @@
+{
+  "name": "admportal",
+  "version": "0.0.0",
+  "private": true,
+  "scripts": {
+    "start": "node ./bin/www"
+  },
+  "dependencies": {
+    "async": "^2.5.0",
+    "body-parser": "~1.8.1",
+    "bootstrap": "^3.3.6",
+    "bootstrap-submenu": "^2.0.3",
+    "bootstrap-table": "^1.9.1",
+    "cookie-parser": "~1.3.3",
+    "crypto": "^1.0.1",
+    "csurf": "^1.10.0",
+    "csv": "^0.4.1",
+    "csvtojson": "^0.5.3",
+    "dateformat": "^1.0.11",
+    "debug": "~2.0.0",
+    "dns-sync": "~0.1.3",
+    "ejs": "~0.8.5",
+    "express": "~4.9.0",
+    "express-sanitizer": "^1.0.5",
+    "express-session": "^1.10.1",
+    "fs.extra": "^1.3.2",
+    "lodash": "^3.8.0",
+    "moment": "^2.13.0",
+    "morgan": "~1.3.0",
+    "multer": "^1.1.0",
+    "mysql": "^2.5.4",
+    "node-uuid": "^1.4.7",
+    "path": "^0.12.7",
+    "properties-reader": "0.0.9",
+    "sax": "^0.6.1",
+    "serve-favicon": "~2.1.3",
+    "xml2js": "^0.4.5"
+  }
+}
diff --git a/sdnc-a1-controller/oam/admportal/pom.xml b/sdnc-a1-controller/oam/admportal/pom.xml
new file mode 100644
index 0000000..96b7aa0
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/pom.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>binding-parent</artifactId>
+        <version>1.4.3</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.onap.sdnc.oam</groupId>
+    <artifactId>admportal</artifactId>
+    <version>1.7.3-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <name>sdnc-oam :: admportal</name>
+    <description>Admin Portal</description>
+    <organization>
+        <name>ONAP</name>
+    </organization>
+
+    <properties>
+        <application.name>admportal</application.name>
+        <skip.SWM>true</skip.SWM>
+        <adm.base>/opt/app/admportal</adm.base>
+        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
+        <build.number>${maven.build.timestamp}</build.number>
+        <SWM_VERSION>${project.version}-${build.number}</SWM_VERSION>
+    </properties>
+	<dependencyManagement>
+	    <dependencies>
+	    	<dependency>
+	    	    <groupId>org.onap.ccsdk.sli.core</groupId>
+	    	    <artifactId>sli-core-artifacts</artifactId>
+	    	    <version>${ccsdk.sli.core.version}</version>
+	    	    <type>pom</type>
+	    	    <scope>import</scope>
+	    	</dependency>
+	    </dependencies>
+	</dependencyManagement>
+    <dependencies>
+        <dependency>
+            <groupId>org.onap.ccsdk.sli.core</groupId>
+            <artifactId>sli-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.mariadb.jdbc</groupId>
+            <artifactId>mariadb-java-client</artifactId>
+            <version>${mariadb.connector.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.antlr</groupId>
+            <artifactId>antlr4</artifactId>
+            <version>${antlr.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <id>create-zip</id>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <phase>package</phase>
+                        <configuration>
+                            <finalName>${application.name}.${project.version}</finalName>
+                            <attach>true</attach>
+                            <descriptors>
+                                <descriptor>src/assembly/assemble_zip.xml</descriptor>
+                            </descriptors>
+                            <appendAssemblyId>false</appendAssemblyId>
+                            <appendAssemblyId>false</appendAssemblyId>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-dependencies</id>
+                        <goals>
+                            <goal>copy-dependencies</goal>
+                        </goals>
+                        <phase>prepare-package</phase>
+                        <configuration>
+                            <transitive>false</transitive>
+                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
+                            <overWriteReleases>false</overWriteReleases>
+                            <overWriteSnapshots>true</overWriteSnapshots>
+                            <overWriteIfNewer>true</overWriteIfNewer>
+                            <useRepositoryLayout>false</useRepositoryLayout>
+                            <addParentPoms>false</addParentPoms>
+                            <copyPom>false</copyPom>
+                            <scope>provided</scope>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/sdnc-a1-controller/oam/admportal/process.http.json b/sdnc-a1-controller/oam/admportal/process.http.json
new file mode 100644
index 0000000..717f2bc
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/process.http.json
@@ -0,0 +1,17 @@
+{
+  "apps" :[
+		{
+			"name"	: "http_admportal",
+			"script" : "/opt/admportal/bin/www",
+			"out_file" : "/opt/admportal/logs/http_admportal.log",
+			"error_file" : "/opt/admportal/logs/error_http_admportal.log",
+			"cwd"        : "/opt/admportal",
+			"env": 
+			{
+                "NODE_ENV": "production",
+                "HTTP_PROTOCOL": "http:",
+                "CLASSPATH"     : "/opt/admportal/lib/GLCookieDecryption.jar:/opt/admportal/lib"
+            }
+	    }
+		]
+}
diff --git a/sdnc-a1-controller/oam/admportal/process.https.json b/sdnc-a1-controller/oam/admportal/process.https.json
new file mode 100644
index 0000000..a9b5ae7
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/process.https.json
@@ -0,0 +1,17 @@
+{
+  "apps" :[
+		{
+			"name"	: "admportal8443",
+			"script" : "/opt/admportal/bin/wwwssl",
+			"out_file" : "/opt/admportal/logs/admportal8443.log",
+			"error_file" : "/opt/admportal/logs/error_admportal8443.log",
+			"cwd"        : "/opt/admportal",
+			"env": 
+			{ 
+				"NODE_ENV": "production",
+				"HTTP_PROTOCOL": "https:",
+			 	"CLASSPATH"     : "/opt/admportal/lib/GLCookieDecryption.jar:/opt/admportal/lib"
+			}
+	    }
+		]
+}
diff --git a/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.eot b/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000..b93a495
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.eot
Binary files differ
diff --git a/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.svg b/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..94fb549
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,288 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="400" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
+<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
+<glyph unicode="&#x2000;" horiz-adv-x="650" />
+<glyph unicode="&#x2001;" horiz-adv-x="1300" />
+<glyph unicode="&#x2002;" horiz-adv-x="650" />
+<glyph unicode="&#x2003;" horiz-adv-x="1300" />
+<glyph unicode="&#x2004;" horiz-adv-x="433" />
+<glyph unicode="&#x2005;" horiz-adv-x="325" />
+<glyph unicode="&#x2006;" horiz-adv-x="216" />
+<glyph unicode="&#x2007;" horiz-adv-x="216" />
+<glyph unicode="&#x2008;" horiz-adv-x="162" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="325" />
+<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
+<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
+<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
+<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
+<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
+<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
+<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
+<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
+<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
+<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
+<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
+<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
+<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
+<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
+<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
+<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
+<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
+<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
+<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
+<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
+<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
+<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
+<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
+<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
+<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
+<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
+<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
+<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
+<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
+<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
+<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
+<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
+<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
+<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
+<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
+<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
+<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
+<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
+<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
+<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
+<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
+<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
+<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
+<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
+<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
+<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
+<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
+<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
+<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
+<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
+<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
+<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
+<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
+<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
+<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
+<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
+<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
+<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
+<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
+<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
+<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
+<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
+<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
+<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
+<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
+<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
+<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
+<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
+<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
+<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
+<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
+<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
+<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
+<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
+<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
+<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
+<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
+<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
+<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
+<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
+<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
+<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
+<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
+<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
+<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
+<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
+<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
+<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
+<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
+<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
+<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
+<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
+<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
+<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
+<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
+<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
+<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
+<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
+<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
+<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
+<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
+<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
+<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
+<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
+<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
+<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
+<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
+<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
+<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
+<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
+<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
+<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
+<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
+<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
+<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
+<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
+<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
+<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
+<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
+<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
+<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
+<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
+<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
+<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
+<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
+<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
+<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
+<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
+<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
+<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
+<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
+<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
+<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
+<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
+<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
+<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
+<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
+<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
+<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
+<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
+<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
+<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
+<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
+<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
+<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
+<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
+<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
+<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
+<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
+<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
+<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
+<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
+<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
+<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
+<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
+<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
+<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
+<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
+<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
+<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.ttf b/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000..1413fc6
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.ttf
Binary files differ
diff --git a/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.woff b/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000..9e61285
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.woff
Binary files differ
diff --git a/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.woff2 b/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.woff2
new file mode 100644
index 0000000..64539b5
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/fonts/glyphicons-halflings-regular.woff2
Binary files differ
diff --git a/sdnc-a1-controller/oam/admportal/public/javascripts/admportal.js b/sdnc-a1-controller/oam/admportal/public/javascripts/admportal.js
new file mode 100644
index 0000000..d73517d
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/javascripts/admportal.js
@@ -0,0 +1,79 @@
+function uploadFile(form)
+{
+	if ( form.filename.value.length == 0)
+	{
+		bootbox.alert('Must select a file.');
+		return false;
+	}
+	else { form.submit(); return; }
+}
+function isDigit(num)
+{
+	// false means error
+	// true means success
+	//var dlNum = obj.value;
+	var charAllowed="0123456789";
+	var thisChar;
+    var cnt = 0;
+    var blankCnt = 0;
+    if ( num.length > 0 )
+    {
+        for (var i = 0; i < num.length; i++)
+        {
+            thisChar = num.substring(i, i+1);
+            if ( charAllowed.indexOf(thisChar) != -1 ) cnt++;
+            if ( num.substring(i, i + 1) == " " ) blankCnt++;
+        }
+        if ( cnt != num.length ){
+        	return false;
+        }
+        else if (blankCnt == num.length) {
+        	return false;
+        }
+        return true;
+     }
+	 else
+     	return false;
+}
+function isFloat(num)
+{
+	// false means error
+	// true means success
+	//var dlNum = obj.value;
+	var charAllowed=".-0123456789";
+	var thisChar;
+    var cnt = 0;
+    var blankCnt = 0;
+    if ( num.length > 0 )
+    {
+        for (var i = 0; i < num.length; i++)
+        {
+            thisChar = num.substring(i, i+1);
+            if ( charAllowed.indexOf(thisChar) != -1 ) cnt++;
+            if ( num.substring(i, i + 1) == " " ) blankCnt++;
+        }
+        if ( cnt != num.length ){
+        	return false;
+        }
+        else if (blankCnt == num.length) {
+        	return false;
+        }
+        return true;
+     }
+	 else
+     	return false;
+}
+function isblank(s)
+{
+    // true means all blank
+    // flase means not blank
+    for(var i=0; i<s.length; i++) {
+        var c = s.charAt(i);
+        if ( (c != ' ') && (c != '\n') && (c != '\t') ) return false;
+    }
+    return true;
+}
+
+function padLeft(nr, n, str){
+    return Array(n-String(nr).length+1).join(str||'0')+nr;
+}
diff --git a/sdnc-a1-controller/oam/admportal/public/javascripts/bootbox.min.js b/sdnc-a1-controller/oam/admportal/public/javascripts/bootbox.min.js
new file mode 100644
index 0000000..0dc0cbd
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/javascripts/bootbox.min.js
@@ -0,0 +1,6 @@
+/**
+ * bootbox.js v4.4.0
+ *
+ * http://bootboxjs.com/license.txt
+ */
+!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["jquery"],b):"object"==typeof exports?module.exports=b(require("jquery")):a.bootbox=b(a.jQuery)}(this,function a(b,c){"use strict";function d(a){var b=q[o.locale];return b?b[a]:q.en[a]}function e(a,c,d){a.stopPropagation(),a.preventDefault();var e=b.isFunction(d)&&d.call(c,a)===!1;e||c.modal("hide")}function f(a){var b,c=0;for(b in a)c++;return c}function g(a,c){var d=0;b.each(a,function(a,b){c(a,b,d++)})}function h(a){var c,d;if("object"!=typeof a)throw new Error("Please supply an object of options");if(!a.message)throw new Error("Please specify a message");return a=b.extend({},o,a),a.buttons||(a.buttons={}),c=a.buttons,d=f(c),g(c,function(a,e,f){if(b.isFunction(e)&&(e=c[a]={callback:e}),"object"!==b.type(e))throw new Error("button with key "+a+" must be an object");e.label||(e.label=a),e.className||(e.className=2>=d&&f===d-1?"btn-primary":"btn-default")}),a}function i(a,b){var c=a.length,d={};if(1>c||c>2)throw new Error("Invalid argument length");return 2===c||"string"==typeof a[0]?(d[b[0]]=a[0],d[b[1]]=a[1]):d=a[0],d}function j(a,c,d){return b.extend(!0,{},a,i(c,d))}function k(a,b,c,d){var e={className:"bootbox-"+a,buttons:l.apply(null,b)};return m(j(e,d,c),b)}function l(){for(var a={},b=0,c=arguments.length;c>b;b++){var e=arguments[b],f=e.toLowerCase(),g=e.toUpperCase();a[f]={label:d(g)}}return a}function m(a,b){var d={};return g(b,function(a,b){d[b]=!0}),g(a.buttons,function(a){if(d[a]===c)throw new Error("button key "+a+" is not allowed (options are "+b.join("\n")+")")}),a}var n={dialog:"<div class='bootbox modal' tabindex='-1' role='dialog'><div class='modal-dialog'><div class='modal-content'><div class='modal-body'><div class='bootbox-body'></div></div></div></div></div>",header:"<div class='modal-header'><h4 class='modal-title'></h4></div>",footer:"<div class='modal-footer'></div>",closeButton:"<button type='button' class='bootbox-close-button close' data-dismiss='modal' aria-hidden='true'>&times;</button>",form:"<form class='bootbox-form'></form>",inputs:{text:"<input class='bootbox-input bootbox-input-text form-control' autocomplete=off type=text />",textarea:"<textarea class='bootbox-input bootbox-input-textarea form-control'></textarea>",email:"<input class='bootbox-input bootbox-input-email form-control' autocomplete='off' type='email' />",select:"<select class='bootbox-input bootbox-input-select form-control'></select>",checkbox:"<div class='checkbox'><label><input class='bootbox-input bootbox-input-checkbox' type='checkbox' /></label></div>",date:"<input class='bootbox-input bootbox-input-date form-control' autocomplete=off type='date' />",time:"<input class='bootbox-input bootbox-input-time form-control' autocomplete=off type='time' />",number:"<input class='bootbox-input bootbox-input-number form-control' autocomplete=off type='number' />",password:"<input class='bootbox-input bootbox-input-password form-control' autocomplete='off' type='password' />"}},o={locale:"en",backdrop:"static",animate:!0,className:null,closeButton:!0,show:!0,container:"body"},p={};p.alert=function(){var a;if(a=k("alert",["ok"],["message","callback"],arguments),a.callback&&!b.isFunction(a.callback))throw new Error("alert requires callback property to be a function when provided");return a.buttons.ok.callback=a.onEscape=function(){return b.isFunction(a.callback)?a.callback.call(this):!0},p.dialog(a)},p.confirm=function(){var a;if(a=k("confirm",["cancel","confirm"],["message","callback"],arguments),a.buttons.cancel.callback=a.onEscape=function(){return a.callback.call(this,!1)},a.buttons.confirm.callback=function(){return a.callback.call(this,!0)},!b.isFunction(a.callback))throw new Error("confirm requires a callback");return p.dialog(a)},p.prompt=function(){var a,d,e,f,h,i,k;if(f=b(n.form),d={className:"bootbox-prompt",buttons:l("cancel","confirm"),value:"",inputType:"text"},a=m(j(d,arguments,["title","callback"]),["cancel","confirm"]),i=a.show===c?!0:a.show,a.message=f,a.buttons.cancel.callback=a.onEscape=function(){return a.callback.call(this,null)},a.buttons.confirm.callback=function(){var c;switch(a.inputType){case"text":case"textarea":case"email":case"select":case"date":case"time":case"number":case"password":c=h.val();break;case"checkbox":var d=h.find("input:checked");c=[],g(d,function(a,d){c.push(b(d).val())})}return a.callback.call(this,c)},a.show=!1,!a.title)throw new Error("prompt requires a title");if(!b.isFunction(a.callback))throw new Error("prompt requires a callback");if(!n.inputs[a.inputType])throw new Error("invalid prompt type");switch(h=b(n.inputs[a.inputType]),a.inputType){case"text":case"textarea":case"email":case"date":case"time":case"number":case"password":h.val(a.value);break;case"select":var o={};if(k=a.inputOptions||[],!b.isArray(k))throw new Error("Please pass an array of input options");if(!k.length)throw new Error("prompt with select requires options");g(k,function(a,d){var e=h;if(d.value===c||d.text===c)throw new Error("given options in wrong format");d.group&&(o[d.group]||(o[d.group]=b("<optgroup/>").attr("label",d.group)),e=o[d.group]),e.append("<option value='"+d.value+"'>"+d.text+"</option>")}),g(o,function(a,b){h.append(b)}),h.val(a.value);break;case"checkbox":var q=b.isArray(a.value)?a.value:[a.value];if(k=a.inputOptions||[],!k.length)throw new Error("prompt with checkbox requires options");if(!k[0].value||!k[0].text)throw new Error("given options in wrong format");h=b("<div/>"),g(k,function(c,d){var e=b(n.inputs[a.inputType]);e.find("input").attr("value",d.value),e.find("label").append(d.text),g(q,function(a,b){b===d.value&&e.find("input").prop("checked",!0)}),h.append(e)})}return a.placeholder&&h.attr("placeholder",a.placeholder),a.pattern&&h.attr("pattern",a.pattern),a.maxlength&&h.attr("maxlength",a.maxlength),f.append(h),f.on("submit",function(a){a.preventDefault(),a.stopPropagation(),e.find(".btn-primary").click()}),e=p.dialog(a),e.off("shown.bs.modal"),e.on("shown.bs.modal",function(){h.focus()}),i===!0&&e.modal("show"),e},p.dialog=function(a){a=h(a);var d=b(n.dialog),f=d.find(".modal-dialog"),i=d.find(".modal-body"),j=a.buttons,k="",l={onEscape:a.onEscape};if(b.fn.modal===c)throw new Error("$.fn.modal is not defined; please double check you have included the Bootstrap JavaScript library. See http://getbootstrap.com/javascript/ for more details.");if(g(j,function(a,b){k+="<button data-bb-handler='"+a+"' type='button' class='btn "+b.className+"'>"+b.label+"</button>",l[a]=b.callback}),i.find(".bootbox-body").html(a.message),a.animate===!0&&d.addClass("fade"),a.className&&d.addClass(a.className),"large"===a.size?f.addClass("modal-lg"):"small"===a.size&&f.addClass("modal-sm"),a.title&&i.before(n.header),a.closeButton){var m=b(n.closeButton);a.title?d.find(".modal-header").prepend(m):m.css("margin-top","-10px").prependTo(i)}return a.title&&d.find(".modal-title").html(a.title),k.length&&(i.after(n.footer),d.find(".modal-footer").html(k)),d.on("hidden.bs.modal",function(a){a.target===this&&d.remove()}),d.on("shown.bs.modal",function(){d.find(".btn-primary:first").focus()}),"static"!==a.backdrop&&d.on("click.dismiss.bs.modal",function(a){d.children(".modal-backdrop").length&&(a.currentTarget=d.children(".modal-backdrop").get(0)),a.target===a.currentTarget&&d.trigger("escape.close.bb")}),d.on("escape.close.bb",function(a){l.onEscape&&e(a,d,l.onEscape)}),d.on("click",".modal-footer button",function(a){var c=b(this).data("bb-handler");e(a,d,l[c])}),d.on("click",".bootbox-close-button",function(a){e(a,d,l.onEscape)}),d.on("keyup",function(a){27===a.which&&d.trigger("escape.close.bb")}),b(a.container).append(d),d.modal({backdrop:a.backdrop?"static":!1,keyboard:!1,show:!1}),a.show&&d.modal("show"),d},p.setDefaults=function(){var a={};2===arguments.length?a[arguments[0]]=arguments[1]:a=arguments[0],b.extend(o,a)},p.hideAll=function(){return b(".bootbox").modal("hide"),p};var q={bg_BG:{OK:"Ок",CANCEL:"Отказ",CONFIRM:"Потвърждавам"},br:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Sim"},cs:{OK:"OK",CANCEL:"Zrušit",CONFIRM:"Potvrdit"},da:{OK:"OK",CANCEL:"Annuller",CONFIRM:"Accepter"},de:{OK:"OK",CANCEL:"Abbrechen",CONFIRM:"Akzeptieren"},el:{OK:"Εντάξει",CANCEL:"Ακύρωση",CONFIRM:"Επιβεβαίωση"},en:{OK:"OK",CANCEL:"Cancel",CONFIRM:"OK"},es:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Aceptar"},et:{OK:"OK",CANCEL:"Katkesta",CONFIRM:"OK"},fa:{OK:"قبول",CANCEL:"لغو",CONFIRM:"تایید"},fi:{OK:"OK",CANCEL:"Peruuta",CONFIRM:"OK"},fr:{OK:"OK",CANCEL:"Annuler",CONFIRM:"D'accord"},he:{OK:"אישור",CANCEL:"ביטול",CONFIRM:"אישור"},hu:{OK:"OK",CANCEL:"Mégsem",CONFIRM:"Megerősít"},hr:{OK:"OK",CANCEL:"Odustani",CONFIRM:"Potvrdi"},id:{OK:"OK",CANCEL:"Batal",CONFIRM:"OK"},it:{OK:"OK",CANCEL:"Annulla",CONFIRM:"Conferma"},ja:{OK:"OK",CANCEL:"キャンセル",CONFIRM:"確認"},lt:{OK:"Gerai",CANCEL:"Atšaukti",CONFIRM:"Patvirtinti"},lv:{OK:"Labi",CANCEL:"Atcelt",CONFIRM:"Apstiprināt"},nl:{OK:"OK",CANCEL:"Annuleren",CONFIRM:"Accepteren"},no:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},pl:{OK:"OK",CANCEL:"Anuluj",CONFIRM:"Potwierdź"},pt:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Confirmar"},ru:{OK:"OK",CANCEL:"Отмена",CONFIRM:"Применить"},sq:{OK:"OK",CANCEL:"Anulo",CONFIRM:"Prano"},sv:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},th:{OK:"ตกลง",CANCEL:"ยกเลิก",CONFIRM:"ยืนยัน"},tr:{OK:"Tamam",CANCEL:"İptal",CONFIRM:"Onayla"},zh_CN:{OK:"OK",CANCEL:"取消",CONFIRM:"确认"},zh_TW:{OK:"OK",CANCEL:"取消",CONFIRM:"確認"}};return p.addLocale=function(a,c){return b.each(["OK","CANCEL","CONFIRM"],function(a,b){if(!c[b])throw new Error("Please supply a translation for '"+b+"'")}),q[a]={OK:c.OK,CANCEL:c.CANCEL,CONFIRM:c.CONFIRM},p},p.removeLocale=function(a){return delete q[a],p},p.setLocale=function(a){return p.setDefaults("locale",a)},p.init=function(c){return a(c||b)},p});
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/admportal/public/javascripts/bootstrap-submenu.js b/sdnc-a1-controller/oam/admportal/public/javascripts/bootstrap-submenu.js
new file mode 100644
index 0000000..7c8e411
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/javascripts/bootstrap-submenu.js
@@ -0,0 +1,185 @@
+/*!
+ * Bootstrap-submenu v2.0.3 (https://vsn4ik.github.io/bootstrap-submenu/)
+ * Copyright 2015 Vasily A. (https://github.com/vsn4ik)
+ * Licensed under the MIT license
+ */
+
+/**
+ * $.inArray: friends with IE8. Use Array.prototype.indexOf in future.
+ * $.proxy: friends with IE8. Use Function.prototype.bind in future.
+ */
+
+'use strict';
+
+(function(factory) {
+  if (typeof define == 'function' && define.amd) {
+    // AMD. Register as an anonymous module
+    define(['jquery'], factory);
+  }
+  else if (typeof exports == 'object') {
+    // Node/CommonJS
+    module.exports = factory(require('jquery'));
+  }
+  else {
+    // Browser globals
+    factory(jQuery);
+  }
+})(function($) {
+  function Item(element) {
+    this.$element = $(element);
+    this.$menu = this.$element.closest('.dropdown-menu');
+    this.$main = this.$menu.parent();
+    this.$items = this.$menu.children('.dropdown-submenu');
+
+    this.init();
+  }
+
+  Item.prototype = {
+    init: function() {
+      this.$element.on('keydown', $.proxy(this, 'keydown'));
+    },
+    close: function() {
+      this.$main.removeClass('open');
+      this.$items.trigger('hide.bs.submenu');
+    },
+    keydown: function(event) {
+      // 27: Esc
+
+      if (event.keyCode == 27) {
+        event.stopPropagation();
+
+        this.close();
+        this.$main.children('a, button').trigger('focus');
+      }
+    }
+  };
+
+  function SubmenuItem(element) {
+    this.$element = $(element);
+    this.$main = this.$element.parent();
+    this.$menu = this.$main.children('.dropdown-menu');
+    this.$subs = this.$main.siblings('.dropdown-submenu');
+    this.$items = this.$menu.children('.dropdown-submenu');
+
+    this.init();
+  }
+
+  $.extend(SubmenuItem.prototype, Item.prototype, {
+    init: function() {
+      this.$element.on({
+        click: $.proxy(this, 'click'),
+        keydown: $.proxy(this, 'keydown')
+      });
+
+      this.$main.on('hide.bs.submenu', $.proxy(this, 'hide'));
+    },
+    click: function(event) {
+      // Fix a[href="#"]. For community
+      event.preventDefault();
+
+      event.stopPropagation();
+
+      this.toggle();
+    },
+    hide: function(event) {
+      // Stop event bubbling
+      event.stopPropagation();
+
+      this.close();
+    },
+    open: function() {
+      this.$main.addClass('open');
+      this.$subs.trigger('hide.bs.submenu');
+    },
+    toggle: function() {
+      if (this.$main.hasClass('open')) {
+        this.close();
+      }
+      else {
+        this.open();
+      }
+    },
+    keydown: function(event) {
+      // 13: Return, 32: Spacebar
+
+      if (event.keyCode == 32) {
+        // Off vertical scrolling
+        event.preventDefault();
+      }
+
+      if ($.inArray(event.keyCode, [13, 32]) != -1) {
+        this.toggle();
+      }
+    }
+  });
+
+  function Submenupicker(element) {
+    this.$element = $(element);
+    this.$main = this.$element.parent();
+    this.$menu = this.$main.children('.dropdown-menu');
+    this.$items = this.$menu.children('.dropdown-submenu');
+
+    this.init();
+  }
+
+  Submenupicker.prototype = {
+    init: function() {
+      this.$menu.off('keydown.bs.dropdown.data-api');
+      this.$menu.on('keydown', $.proxy(this, 'itemKeydown'));
+
+      this.$menu.find('li > a').each(function() {
+        new Item(this);
+      });
+
+      this.$menu.find('.dropdown-submenu > a').each(function() {
+        new SubmenuItem(this);
+      });
+
+      this.$main.on('hidden.bs.dropdown', $.proxy(this, 'hidden'));
+    },
+    hidden: function() {
+      this.$items.trigger('hide.bs.submenu');
+    },
+    itemKeydown: function(event) {
+      // 38: Arrow up, 40: Arrow down
+
+      if ($.inArray(event.keyCode, [38, 40]) != -1) {
+        // Off vertical scrolling
+        event.preventDefault();
+
+        event.stopPropagation();
+
+        var $items = this.$menu.find('li:not(.disabled):visible > a');
+        var index = $items.index(event.target);
+
+        if (event.keyCode == 38 && index !== 0) {
+          index--;
+        }
+        else if (event.keyCode == 40 && index !== $items.length - 1) {
+          index++;
+        }
+        else {
+          return;
+        }
+
+        $items.eq(index).trigger('focus');
+      }
+    }
+  };
+
+  // For AMD/Node/CommonJS used elements (optional)
+  // http://learn.jquery.com/jquery-ui/environments/amd/
+  return $.fn.submenupicker = function(elements) {
+    var $elements = this instanceof $ ? this : $(elements);
+
+    return $elements.each(function() {
+      var data = $.data(this, 'bs.submenu');
+
+      if (!data) {
+        data = new Submenupicker(this);
+
+        $.data(this, 'bs.submenu', data);
+      }
+    });
+  };
+});
diff --git a/sdnc-a1-controller/oam/admportal/public/javascripts/bootstrap-submenu.min.js b/sdnc-a1-controller/oam/admportal/public/javascripts/bootstrap-submenu.min.js
new file mode 100644
index 0000000..6293c43
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/javascripts/bootstrap-submenu.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap-submenu v2.0.3 (https://vsn4ik.github.io/bootstrap-submenu/)
+ * Copyright 2015 Vasily A. (https://github.com/vsn4ik)
+ * Licensed under the MIT license
+ */
+
+"use strict";!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){function b(b){this.$element=a(b),this.$menu=this.$element.closest(".dropdown-menu"),this.$main=this.$menu.parent(),this.$items=this.$menu.children(".dropdown-submenu"),this.init()}function c(b){this.$element=a(b),this.$main=this.$element.parent(),this.$menu=this.$main.children(".dropdown-menu"),this.$subs=this.$main.siblings(".dropdown-submenu"),this.$items=this.$menu.children(".dropdown-submenu"),this.init()}function d(b){this.$element=a(b),this.$main=this.$element.parent(),this.$menu=this.$main.children(".dropdown-menu"),this.$items=this.$menu.children(".dropdown-submenu"),this.init()}return b.prototype={init:function(){this.$element.on("keydown",a.proxy(this,"keydown"))},close:function(){this.$main.removeClass("open"),this.$items.trigger("hide.bs.submenu")},keydown:function(a){27==a.keyCode&&(a.stopPropagation(),this.close(),this.$main.children("a, button").trigger("focus"))}},a.extend(c.prototype,b.prototype,{init:function(){this.$element.on({click:a.proxy(this,"click"),keydown:a.proxy(this,"keydown")}),this.$main.on("hide.bs.submenu",a.proxy(this,"hide"))},click:function(a){a.preventDefault(),a.stopPropagation(),this.toggle()},hide:function(a){a.stopPropagation(),this.close()},open:function(){this.$main.addClass("open"),this.$subs.trigger("hide.bs.submenu")},toggle:function(){this.$main.hasClass("open")?this.close():this.open()},keydown:function(b){32==b.keyCode&&b.preventDefault(),-1!=a.inArray(b.keyCode,[13,32])&&this.toggle()}}),d.prototype={init:function(){this.$menu.off("keydown.bs.dropdown.data-api"),this.$menu.on("keydown",a.proxy(this,"itemKeydown")),this.$menu.find("li > a").each(function(){new b(this)}),this.$menu.find(".dropdown-submenu > a").each(function(){new c(this)}),this.$main.on("hidden.bs.dropdown",a.proxy(this,"hidden"))},hidden:function(){this.$items.trigger("hide.bs.submenu")},itemKeydown:function(b){if(-1!=a.inArray(b.keyCode,[38,40])){b.preventDefault(),b.stopPropagation();var c=this.$menu.find("li:not(.disabled):visible > a"),d=c.index(b.target);if(38==b.keyCode&&0!==d)d--;else{if(40!=b.keyCode||d===c.length-1)return;d++}c.eq(d).trigger("focus")}}},a.fn.submenupicker=function(b){var c=this instanceof a?this:a(b);return c.each(function(){var b=a.data(this,"bs.submenu");b||(b=new d(this),a.data(this,"bs.submenu",b))})}});
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/admportal/public/javascripts/bootstrap-table.js b/sdnc-a1-controller/oam/admportal/public/javascripts/bootstrap-table.js
new file mode 100644
index 0000000..f8715e9
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/javascripts/bootstrap-table.js
@@ -0,0 +1,2690 @@
+/**
+ * @author zhixin wen <wenzhixin2010@gmail.com>
+ * version: 1.9.1
+ * https://github.com/wenzhixin/bootstrap-table/
+ */
+
+!function ($) {
+    'use strict';
+
+    // TOOLS DEFINITION
+    // ======================
+
+    var cachedWidth = null;
+
+    // it only does '%s', and return '' when arguments are undefined
+    var sprintf = function (str) {
+        var args = arguments,
+            flag = true,
+            i = 1;
+
+        str = str.replace(/%s/g, function () {
+            var arg = args[i++];
+
+            if (typeof arg === 'undefined') {
+                flag = false;
+                return '';
+            }
+            return arg;
+        });
+        return flag ? str : '';
+    };
+
+    var getPropertyFromOther = function (list, from, to, value) {
+        var result = '';
+        $.each(list, function (i, item) {
+            if (item[from] === value) {
+                result = item[to];
+                return false;
+            }
+            return true;
+        });
+        return result;
+    };
+
+    var getFieldIndex = function (columns, field) {
+        var index = -1;
+
+        $.each(columns, function (i, column) {
+            if (column.field === field) {
+                index = i;
+                return false;
+            }
+            return true;
+        });
+        return index;
+    };
+
+    // http://jsfiddle.net/wenyi/47nz7ez9/3/
+    var setFieldIndex = function (columns) {
+        var i, j, k,
+            totalCol = 0,
+            flag = [];
+
+        for (i = 0; i < columns[0].length; i++) {
+            totalCol += columns[0][i].colspan || 1;
+        }
+
+        for (i = 0; i < columns.length; i++) {
+            flag[i] = [];
+            for (j = 0; j < totalCol; j++) {
+                flag[i][j] = false;
+            }
+        }
+
+        for (i = 0; i < columns.length; i++) {
+            for (j = 0; j < columns[i].length; j++) {
+                var r = columns[i][j],
+                    rowspan = r.rowspan || 1,
+                    colspan = r.colspan || 1,
+                    index = $.inArray(false, flag[i]);
+
+                if (colspan === 1) {
+                    r.fieldIndex = index;
+                    // when field is undefined, use index instead
+                    if (typeof r.field === 'undefined') {
+                        r.field = index;
+                    }
+                }
+
+                for (k = 0; k < rowspan; k++) {
+                    flag[i + k][index] = true;
+                }
+                for (k = 0; k < colspan; k++) {
+                    flag[i][index + k] = true;
+                }
+            }
+        }
+    };
+
+    var getScrollBarWidth = function () {
+        if (cachedWidth === null) {
+            var inner = $('<p/>').addClass('fixed-table-scroll-inner'),
+                outer = $('<div/>').addClass('fixed-table-scroll-outer'),
+                w1, w2;
+
+            outer.append(inner);
+            $('body').append(outer);
+
+            w1 = inner[0].offsetWidth;
+            outer.css('overflow', 'scroll');
+            w2 = inner[0].offsetWidth;
+
+            if (w1 === w2) {
+                w2 = outer[0].clientWidth;
+            }
+
+            outer.remove();
+            cachedWidth = w1 - w2;
+        }
+        return cachedWidth;
+    };
+
+    var calculateObjectValue = function (self, name, args, defaultValue) {
+        var func = name;
+
+        if (typeof name === 'string') {
+            // support obj.func1.func2
+            var names = name.split('.');
+
+            if (names.length > 1) {
+                func = window;
+                $.each(names, function (i, f) {
+                    func = func[f];
+                });
+            } else {
+                func = window[name];
+            }
+        }
+        if (typeof func === 'object') {
+            return func;
+        }
+        if (typeof func === 'function') {
+            return func.apply(self, args);
+        }
+        if (!func && typeof name === 'string' && sprintf.apply(this, [name].concat(args))) {
+            return sprintf.apply(this, [name].concat(args));
+        }
+        return defaultValue;
+    };
+
+    var compareObjects = function (objectA, objectB, compareLength) {
+        // Create arrays of property names
+        var objectAProperties = Object.getOwnPropertyNames(objectA),
+            objectBProperties = Object.getOwnPropertyNames(objectB),
+            propName = '';
+
+        if (compareLength) {
+            // If number of properties is different, objects are not equivalent
+            if (objectAProperties.length !== objectBProperties.length) {
+                return false;
+            }
+        }
+
+        for (var i = 0; i < objectAProperties.length; i++) {
+            propName = objectAProperties[i];
+
+            // If the property is not in the object B properties, continue with the next property
+            if ($.inArray(propName, objectBProperties) > -1) {
+                // If values of same property are not equal, objects are not equivalent
+                if (objectA[propName] !== objectB[propName]) {
+                    return false;
+                }
+            }
+        }
+
+        // If we made it this far, objects are considered equivalent
+        return true;
+    };
+
+    var escapeHTML = function (text) {
+        if (typeof text === 'string') {
+            return text
+                .replace(/&/g, "&amp;")
+                .replace(/</g, "&lt;")
+                .replace(/>/g, "&gt;")
+                .replace(/"/g, "&quot;")
+                .replace(/'/g, "&#039;");
+        }
+        return text;
+    };
+
+    var getRealHeight = function ($el) {
+        var height = 0;
+        $el.children().each(function () {
+            if (height < $(this).outerHeight(true)) {
+                height = $(this).outerHeight(true);
+            }
+        });
+        return height;
+    };
+
+    var getRealDataAttr = function (dataAttr) {
+        for (var attr in dataAttr) {
+            var auxAttr = attr.split(/(?=[A-Z])/).join('-').toLowerCase();
+            if (auxAttr !== attr) {
+                dataAttr[auxAttr] = dataAttr[attr];
+                delete dataAttr[attr];
+            }
+        }
+
+        return dataAttr;
+    };
+
+    var getItemField = function (item, field) {
+        var value = item;
+
+        if (typeof field !== 'string' || item.hasOwnProperty(field)) {
+            return item[field];
+        }
+        var props = field.split('.');
+        for (var p in props) {
+            value = value[props[p]];
+        }
+        return value;
+    };
+
+    // BOOTSTRAP TABLE CLASS DEFINITION
+    // ======================
+
+    var BootstrapTable = function (el, options) {
+        this.options = options;
+        this.$el = $(el);
+        this.$el_ = this.$el.clone();
+        this.timeoutId_ = 0;
+        this.timeoutFooter_ = 0;
+
+        this.init();
+    };
+
+    BootstrapTable.DEFAULTS = {
+        classes: 'table table-hover',
+        locale: undefined,
+        height: undefined,
+        undefinedText: '-',
+        sortName: undefined,
+        sortOrder: 'asc',
+        striped: false,
+        columns: [[]],
+        data: [],
+        dataField: 'rows',
+        method: 'get',
+        url: undefined,
+        ajax: undefined,
+        cache: true,
+        contentType: 'application/json',
+        dataType: 'json',
+        ajaxOptions: {},
+        queryParams: function (params) {
+            return params;
+        },
+        queryParamsType: 'limit', // undefined
+        responseHandler: function (res) {
+            return res;
+        },
+        pagination: false,
+        onlyInfoPagination: false,
+        sidePagination: 'client', // client or server
+        totalRows: 0, // server side need to set
+        pageNumber: 1,
+        pageSize: 10,
+        pageList: [10, 25, 50, 100],
+        paginationHAlign: 'right', //right, left
+        paginationVAlign: 'bottom', //bottom, top, both
+        paginationDetailHAlign: 'left', //right, left
+        paginationFirstText: '&laquo;',
+        paginationPreText: '&lsaquo;',
+        paginationNextText: '&rsaquo;',
+        paginationLastText: '&raquo;',
+        search: false,
+        strictSearch: false,
+        searchAlign: 'right',
+        selectItemName: 'btSelectItem',
+        showHeader: true,
+        showFooter: false,
+        showColumns: false,
+        showPaginationSwitch: false,
+        showRefresh: false,
+        showToggle: false,
+        buttonsAlign: 'right',
+        smartDisplay: true,
+        minimumCountColumns: 1,
+        idField: undefined,
+        uniqueId: undefined,
+        cardView: false,
+        detailView: false,
+        detailFormatter: function (index, row) {
+            return '';
+        },
+        trimOnSearch: true,
+        clickToSelect: false,
+        singleSelect: false,
+        toolbar: undefined,
+        toolbarAlign: 'left',
+        checkboxHeader: true,
+        sortable: true,
+        silentSort: true,
+        maintainSelected: false,
+        searchTimeOut: 500,
+        searchText: '',
+        iconSize: undefined,
+        iconsPrefix: 'glyphicon', // glyphicon of fa (font awesome)
+        icons: {
+            paginationSwitchDown: 'glyphicon-collapse-down icon-chevron-down',
+            paginationSwitchUp: 'glyphicon-collapse-up icon-chevron-up',
+            refresh: 'glyphicon-refresh icon-refresh',
+            toggle: 'glyphicon-list-alt icon-list-alt',
+            columns: 'glyphicon-th icon-th',
+            detailOpen: 'glyphicon-plus icon-plus',
+            detailClose: 'glyphicon-minus icon-minus'
+        },
+
+        rowStyle: function (row, index) {
+            return {};
+        },
+
+        rowAttributes: function (row, index) {
+            return {};
+        },
+
+        onAll: function (name, args) {
+            return false;
+        },
+        onClickCell: function (field, value, row, $element) {
+            return false;
+        },
+        onDblClickCell: function (field, value, row, $element) {
+            return false;
+        },
+        onClickRow: function (item, $element) {
+            return false;
+        },
+        onDblClickRow: function (item, $element) {
+            return false;
+        },
+        onSort: function (name, order) {
+            return false;
+        },
+        onCheck: function (row) {
+            return false;
+        },
+        onUncheck: function (row) {
+            return false;
+        },
+        onCheckAll: function (rows) {
+            return false;
+        },
+        onUncheckAll: function (rows) {
+            return false;
+        },
+        onCheckSome: function (rows) {
+            return false;
+        },
+        onUncheckSome: function (rows) {
+            return false;
+        },
+        onLoadSuccess: function (data) {
+            return false;
+        },
+        onLoadError: function (status) {
+            return false;
+        },
+        onColumnSwitch: function (field, checked) {
+            return false;
+        },
+        onPageChange: function (number, size) {
+            return false;
+        },
+        onSearch: function (text) {
+            return false;
+        },
+        onToggle: function (cardView) {
+            return false;
+        },
+        onPreBody: function (data) {
+            return false;
+        },
+        onPostBody: function () {
+            return false;
+        },
+        onPostHeader: function () {
+            return false;
+        },
+        onExpandRow: function (index, row, $detail) {
+            return false;
+        },
+        onCollapseRow: function (index, row) {
+            return false;
+        },
+        onRefreshOptions: function (options) {
+            return false;
+        },
+        onResetView: function () {
+            return false;
+        }
+    };
+
+    BootstrapTable.LOCALES = [];
+
+    BootstrapTable.LOCALES['en-US'] = BootstrapTable.LOCALES['en'] = {
+        formatLoadingMessage: function () {
+            return 'Loading, please wait...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return sprintf('%s records per page', pageNumber);
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return sprintf('Showing %s to %s of %s rows', pageFrom, pageTo, totalRows);
+        },
+        formatDetailPagination: function (totalRows) {
+            return sprintf('Showing %s rows', totalRows);
+        },
+        formatSearch: function () {
+            return 'Search';
+        },
+        formatNoMatches: function () {
+            return 'No matching records found';
+        },
+        formatPaginationSwitch: function () {
+            return 'Hide/Show pagination';
+        },
+        formatRefresh: function () {
+            return 'Refresh';
+        },
+        formatToggle: function () {
+            return 'Toggle';
+        },
+        formatColumns: function () {
+            return 'Columns';
+        },
+        formatAllRows: function () {
+            return 'All';
+        }
+    };
+
+    $.extend(BootstrapTable.DEFAULTS, BootstrapTable.LOCALES['en-US']);
+
+    BootstrapTable.COLUMN_DEFAULTS = {
+        radio: false,
+        checkbox: false,
+        checkboxEnabled: true,
+        field: undefined,
+        title: undefined,
+        titleTooltip: undefined,
+        'class': undefined,
+        align: undefined, // left, right, center
+        halign: undefined, // left, right, center
+        falign: undefined, // left, right, center
+        valign: undefined, // top, middle, bottom
+        width: undefined,
+        sortable: false,
+        order: 'asc', // asc, desc
+        visible: true,
+        switchable: true,
+        clickToSelect: true,
+        formatter: undefined,
+        footerFormatter: undefined,
+        events: undefined,
+        sorter: undefined,
+        sortName: undefined,
+        cellStyle: undefined,
+        searchable: true,
+        searchFormatter: true,
+        cardVisible: true
+    };
+
+    BootstrapTable.EVENTS = {
+        'all.bs.table': 'onAll',
+        'click-cell.bs.table': 'onClickCell',
+        'dbl-click-cell.bs.table': 'onDblClickCell',
+        'click-row.bs.table': 'onClickRow',
+        'dbl-click-row.bs.table': 'onDblClickRow',
+        'sort.bs.table': 'onSort',
+        'check.bs.table': 'onCheck',
+        'uncheck.bs.table': 'onUncheck',
+        'check-all.bs.table': 'onCheckAll',
+        'uncheck-all.bs.table': 'onUncheckAll',
+        'check-some.bs.table': 'onCheckSome',
+        'uncheck-some.bs.table': 'onUncheckSome',
+        'load-success.bs.table': 'onLoadSuccess',
+        'load-error.bs.table': 'onLoadError',
+        'column-switch.bs.table': 'onColumnSwitch',
+        'page-change.bs.table': 'onPageChange',
+        'search.bs.table': 'onSearch',
+        'toggle.bs.table': 'onToggle',
+        'pre-body.bs.table': 'onPreBody',
+        'post-body.bs.table': 'onPostBody',
+        'post-header.bs.table': 'onPostHeader',
+        'expand-row.bs.table': 'onExpandRow',
+        'collapse-row.bs.table': 'onCollapseRow',
+        'refresh-options.bs.table': 'onRefreshOptions',
+        'reset-view.bs.table': 'onResetView'
+    };
+
+    BootstrapTable.prototype.init = function () {
+        this.initLocale();
+        this.initContainer();
+        this.initTable();
+        this.initHeader();
+        this.initData();
+        this.initFooter();
+        this.initToolbar();
+        this.initPagination();
+        this.initBody();
+        this.initSearchText();
+        this.initServer();
+    };
+
+    BootstrapTable.prototype.initLocale = function () {
+        if (this.options.locale) {
+            var parts = this.options.locale.split(/-|_/);
+            parts[0].toLowerCase();
+            parts[1] && parts[1].toUpperCase();
+            if ($.fn.bootstrapTable.locales[this.options.locale]) {
+                // locale as requested
+                $.extend(this.options, $.fn.bootstrapTable.locales[this.options.locale]);
+            } else if ($.fn.bootstrapTable.locales[parts.join('-')]) {
+                // locale with sep set to - (in case original was specified with _)
+                $.extend(this.options, $.fn.bootstrapTable.locales[parts.join('-')]);
+            } else if ($.fn.bootstrapTable.locales[parts[0]]) {
+                // short locale language code (i.e. 'en')
+                $.extend(this.options, $.fn.bootstrapTable.locales[parts[0]]);
+            }
+        }
+    };
+
+    BootstrapTable.prototype.initContainer = function () {
+        this.$container = $([
+            '<div class="bootstrap-table">',
+            '<div class="fixed-table-toolbar"></div>',
+            this.options.paginationVAlign === 'top' || this.options.paginationVAlign === 'both' ?
+                '<div class="fixed-table-pagination" style="clear: both;"></div>' :
+                '',
+            '<div class="fixed-table-container">',
+            '<div class="fixed-table-header"><table></table></div>',
+            '<div class="fixed-table-body">',
+            '<div class="fixed-table-loading">',
+            this.options.formatLoadingMessage(),
+            '</div>',
+            '</div>',
+            '<div class="fixed-table-footer"><table><tr></tr></table></div>',
+            this.options.paginationVAlign === 'bottom' || this.options.paginationVAlign === 'both' ?
+                '<div class="fixed-table-pagination"></div>' :
+                '',
+            '</div>',
+            '</div>'
+        ].join(''));
+
+        this.$container.insertAfter(this.$el);
+        this.$tableContainer = this.$container.find('.fixed-table-container');
+        this.$tableHeader = this.$container.find('.fixed-table-header');
+        this.$tableBody = this.$container.find('.fixed-table-body');
+        this.$tableLoading = this.$container.find('.fixed-table-loading');
+        this.$tableFooter = this.$container.find('.fixed-table-footer');
+        this.$toolbar = this.$container.find('.fixed-table-toolbar');
+        this.$pagination = this.$container.find('.fixed-table-pagination');
+
+        this.$tableBody.append(this.$el);
+        this.$container.after('<div class="clearfix"></div>');
+
+        this.$el.addClass(this.options.classes);
+        if (this.options.striped) {
+            this.$el.addClass('table-striped');
+        }
+        if ($.inArray('table-no-bordered', this.options.classes.split(' ')) !== -1) {
+            this.$tableContainer.addClass('table-no-bordered');
+        }
+    };
+
+    BootstrapTable.prototype.initTable = function () {
+        var that = this,
+            columns = [],
+            data = [];
+
+        this.$header = this.$el.find('>thead');
+        if (!this.$header.length) {
+            this.$header = $('<thead></thead>').appendTo(this.$el);
+        }
+        this.$header.find('tr').each(function () {
+            var column = [];
+
+            $(this).find('th').each(function () {
+                column.push($.extend({}, {
+                    title: $(this).html(),
+                    'class': $(this).attr('class'),
+                    titleTooltip: $(this).attr('title'),
+                    rowspan: $(this).attr('rowspan') ? +$(this).attr('rowspan') : undefined,
+                    colspan: $(this).attr('colspan') ? +$(this).attr('colspan') : undefined
+                }, $(this).data()));
+            });
+            columns.push(column);
+        });
+        if (!$.isArray(this.options.columns[0])) {
+            this.options.columns = [this.options.columns];
+        }
+        this.options.columns = $.extend(true, [], columns, this.options.columns);
+        this.columns = [];
+
+        setFieldIndex(this.options.columns);
+        $.each(this.options.columns, function (i, columns) {
+            $.each(columns, function (j, column) {
+                column = $.extend({}, BootstrapTable.COLUMN_DEFAULTS, column);
+
+                if (typeof column.fieldIndex !== 'undefined') {
+                    that.columns[column.fieldIndex] = column;
+                }
+
+                that.options.columns[i][j] = column;
+            });
+        });
+
+        // if options.data is setting, do not process tbody data
+        if (this.options.data.length) {
+            return;
+        }
+
+        this.$el.find('>tbody>tr').each(function () {
+            var row = {};
+
+            // save tr's id, class and data-* attributes
+            row._id = $(this).attr('id');
+            row._class = $(this).attr('class');
+            row._data = getRealDataAttr($(this).data());
+
+            $(this).find('td').each(function (i) {
+                var field = that.columns[i].field;
+
+                row[field] = $(this).html();
+                // save td's id, class and data-* attributes
+                row['_' + field + '_id'] = $(this).attr('id');
+                row['_' + field + '_class'] = $(this).attr('class');
+                row['_' + field + '_rowspan'] = $(this).attr('rowspan');
+                row['_' + field + '_title'] = $(this).attr('title');
+                row['_' + field + '_data'] = getRealDataAttr($(this).data());
+            });
+            data.push(row);
+        });
+        this.options.data = data;
+    };
+
+    BootstrapTable.prototype.initHeader = function () {
+        var that = this,
+            visibleColumns = {},
+            html = [];
+
+        this.header = {
+            fields: [],
+            styles: [],
+            classes: [],
+            formatters: [],
+            events: [],
+            sorters: [],
+            sortNames: [],
+            cellStyles: [],
+            searchables: []
+        };
+
+        $.each(this.options.columns, function (i, columns) {
+            html.push('<tr>');
+
+            if (i == 0 && !that.options.cardView && that.options.detailView) {
+                html.push(sprintf('<th class="detail" rowspan="%s"><div class="fht-cell"></div></th>',
+                    that.options.columns.length));
+            }
+
+            $.each(columns, function (j, column) {
+                var text = '',
+                    halign = '', // header align style
+                    align = '', // body align style
+                    style = '',
+                    class_ = sprintf(' class="%s"', column['class']),
+                    order = that.options.sortOrder || column.order,
+                    unitWidth = 'px',
+                    width = column.width;
+
+                if (column.width !== undefined && (!that.options.cardView)) {
+                    if (typeof column.width === 'string') {
+                        if (column.width.indexOf('%') !== -1) {
+                            unitWidth = '%';
+                        }
+                    }
+                }
+                if (column.width && typeof column.width === 'string') {
+                    width = column.width.replace('%', '').replace('px', '');
+                }
+
+                halign = sprintf('text-align: %s; ', column.halign ? column.halign : column.align);
+                align = sprintf('text-align: %s; ', column.align);
+                style = sprintf('vertical-align: %s; ', column.valign);
+                style += sprintf('width: %s; ', (column.checkbox || column.radio) && !width ?
+                    '36px' : (width ? width + unitWidth : undefined));
+
+                if (typeof column.fieldIndex !== 'undefined') {
+                    that.header.fields[column.fieldIndex] = column.field;
+                    that.header.styles[column.fieldIndex] = align + style;
+                    that.header.classes[column.fieldIndex] = class_;
+                    that.header.formatters[column.fieldIndex] = column.formatter;
+                    that.header.events[column.fieldIndex] = column.events;
+                    that.header.sorters[column.fieldIndex] = column.sorter;
+                    that.header.sortNames[column.fieldIndex] = column.sortName;
+                    that.header.cellStyles[column.fieldIndex] = column.cellStyle;
+                    that.header.searchables[column.fieldIndex] = column.searchable;
+
+                    if (!column.visible) {
+                        return;
+                    }
+
+                    if (that.options.cardView && (!column.cardVisible)) {
+                        return;
+                    }
+
+                    visibleColumns[column.field] = column;
+                }
+
+                html.push('<th' + sprintf(' title="%s"', column.titleTooltip),
+                    column.checkbox || column.radio ?
+                        sprintf(' class="bs-checkbox %s"', column['class'] || '') :
+                        class_,
+                    sprintf(' style="%s"', halign + style),
+                    sprintf(' rowspan="%s"', column.rowspan),
+                    sprintf(' colspan="%s"', column.colspan),
+                    sprintf(' data-field="%s"', column.field),
+                    "tabindex='0'",
+                    '>');
+
+                html.push(sprintf('<div class="th-inner %s">', that.options.sortable && column.sortable ?
+                    'sortable both' : ''));
+
+                text = column.title;
+
+                if (column.checkbox) {
+                    if (!that.options.singleSelect && that.options.checkboxHeader) {
+                        text = '<input name="btSelectAll" type="checkbox" />';
+                    }
+                    that.header.stateField = column.field;
+                }
+                if (column.radio) {
+                    text = '';
+                    that.header.stateField = column.field;
+                    that.options.singleSelect = true;
+                }
+
+                html.push(text);
+                html.push('</div>');
+                html.push('<div class="fht-cell"></div>');
+                html.push('</div>');
+                html.push('</th>');
+            });
+            html.push('</tr>');
+        });
+
+        this.$header.html(html.join(''));
+        this.$header.find('th[data-field]').each(function (i) {
+            $(this).data(visibleColumns[$(this).data('field')]);
+        });
+        this.$container.off('click', '.th-inner').on('click', '.th-inner', function (event) {
+            if (that.options.sortable && $(this).parent().data().sortable) {
+                that.onSort(event);
+            }
+        });
+
+        this.$header.children().children().off('keypress').on('keypress', function (event) {
+            if (that.options.sortable && $(this).data().sortable) {
+                var code = event.keyCode || event.which;
+                if (code == 13) { //Enter keycode
+                    that.onSort(event);
+                }
+            }
+        });
+
+        if (!this.options.showHeader || this.options.cardView) {
+            this.$header.hide();
+            this.$tableHeader.hide();
+            this.$tableLoading.css('top', 0);
+        } else {
+            this.$header.show();
+            this.$tableHeader.show();
+            this.$tableLoading.css('top', this.$header.outerHeight() + 1);
+            // Assign the correct sortable arrow
+            this.getCaret();
+        }
+
+        this.$selectAll = this.$header.find('[name="btSelectAll"]');
+        this.$container.off('click', '[name="btSelectAll"]')
+            .on('click', '[name="btSelectAll"]', function () {
+                var checked = $(this).prop('checked');
+                that[checked ? 'checkAll' : 'uncheckAll']();
+                that.updateSelected();
+            });
+    };
+
+    BootstrapTable.prototype.initFooter = function () {
+        if (!this.options.showFooter || this.options.cardView) {
+            this.$tableFooter.hide();
+        } else {
+            this.$tableFooter.show();
+        }
+    };
+
+    /**
+     * @param data
+     * @param type: append / prepend
+     */
+    BootstrapTable.prototype.initData = function (data, type) {
+        if (type === 'append') {
+            this.data = this.data.concat(data);
+        } else if (type === 'prepend') {
+            this.data = [].concat(data).concat(this.data);
+        } else {
+            this.data = data || this.options.data;
+        }
+
+        // Fix #839 Records deleted when adding new row on filtered table
+        if (type === 'append') {
+            this.options.data = this.options.data.concat(data);
+        } else if (type === 'prepend') {
+            this.options.data = [].concat(data).concat(this.options.data);
+        } else {
+            this.options.data = this.data;
+        }
+
+        if (this.options.sidePagination === 'server') {
+            return;
+        }
+        this.initSort();
+    };
+
+    BootstrapTable.prototype.initSort = function () {
+        var that = this,
+            name = this.options.sortName,
+            order = this.options.sortOrder === 'desc' ? -1 : 1,
+            index = $.inArray(this.options.sortName, this.header.fields);
+
+        if (index !== -1) {
+            this.data.sort(function (a, b) {
+                if (that.header.sortNames[index]) {
+                    name = that.header.sortNames[index];
+                }
+                var aa = getItemField(a, name),
+                    bb = getItemField(b, name),
+                    value = calculateObjectValue(that.header, that.header.sorters[index], [aa, bb]);
+
+                if (value !== undefined) {
+                    return order * value;
+                }
+
+                // Fix #161: undefined or null string sort bug.
+                if (aa === undefined || aa === null) {
+                    aa = '';
+                }
+                if (bb === undefined || bb === null) {
+                    bb = '';
+                }
+
+                // IF both values are numeric, do a numeric comparison
+                if ($.isNumeric(aa) && $.isNumeric(bb)) {
+                    // Convert numerical values form string to float.
+                    aa = parseFloat(aa);
+                    bb = parseFloat(bb);
+                    if (aa < bb) {
+                        return order * -1;
+                    }
+                    return order;
+                }
+
+                if (aa === bb) {
+                    return 0;
+                }
+
+                // If value is not a string, convert to string
+                if (typeof aa !== 'string') {
+                    aa = aa.toString();
+                }
+
+                if (aa.localeCompare(bb) === -1) {
+                    return order * -1;
+                }
+
+                return order;
+            });
+        }
+    };
+
+    BootstrapTable.prototype.onSort = function (event) {
+        var $this = event.type === "keypress" ? $(event.currentTarget) : $(event.currentTarget).parent(),
+            $this_ = this.$header.find('th').eq($this.index());
+
+        this.$header.add(this.$header_).find('span.order').remove();
+
+        if (this.options.sortName === $this.data('field')) {
+            this.options.sortOrder = this.options.sortOrder === 'asc' ? 'desc' : 'asc';
+        } else {
+            this.options.sortName = $this.data('field');
+            this.options.sortOrder = $this.data('order') === 'asc' ? 'desc' : 'asc';
+        }
+        this.trigger('sort', this.options.sortName, this.options.sortOrder);
+
+        $this.add($this_).data('order', this.options.sortOrder);
+
+        // Assign the correct sortable arrow
+        this.getCaret();
+
+        if (this.options.sidePagination === 'server') {
+            this.initServer(this.options.silentSort);
+            return;
+        }
+
+        this.initSort();
+        this.initBody();
+    };
+
+    BootstrapTable.prototype.initToolbar = function () {
+        var that = this,
+            html = [],
+            timeoutId = 0,
+            $keepOpen,
+            $search,
+            switchableCount = 0;
+
+        this.$toolbar.html('');
+
+        if (typeof this.options.toolbar === 'string' || typeof this.options.toolbar === 'object') {
+            $(sprintf('<div class="bars pull-%s"></div>', this.options.toolbarAlign))
+                .appendTo(this.$toolbar)
+                .append($(this.options.toolbar));
+        }
+
+        // showColumns, showToggle, showRefresh
+        html = [sprintf('<div class="columns columns-%s btn-group pull-%s">',
+            this.options.buttonsAlign, this.options.buttonsAlign)];
+
+        if (typeof this.options.icons === 'string') {
+            this.options.icons = calculateObjectValue(null, this.options.icons);
+        }
+
+        if (this.options.showPaginationSwitch) {
+            html.push(sprintf('<button class="btn btn-default" type="button" name="paginationSwitch" title="%s">',
+                    this.options.formatPaginationSwitch()),
+                sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.paginationSwitchDown),
+                '</button>');
+        }
+
+        if (this.options.showRefresh) {
+            html.push(sprintf('<button class="btn btn-default' +
+                    sprintf(' btn-%s', this.options.iconSize) +
+                    '" type="button" name="refresh" title="%s">',
+                    this.options.formatRefresh()),
+                sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.refresh),
+                '</button>');
+        }
+
+        if (this.options.showToggle) {
+            html.push(sprintf('<button class="btn btn-default' +
+                    sprintf(' btn-%s', this.options.iconSize) +
+                    '" type="button" name="toggle" title="%s">',
+                    this.options.formatToggle()),
+                sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.toggle),
+                '</button>');
+        }
+
+        if (this.options.showColumns) {
+            html.push(sprintf('<div class="keep-open btn-group" title="%s">',
+                    this.options.formatColumns()),
+                '<button type="button" class="btn btn-default' +
+                sprintf(' btn-%s', this.options.iconSize) +
+                ' dropdown-toggle" data-toggle="dropdown">',
+                sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.columns),
+                ' <span class="caret"></span>',
+                '</button>',
+                '<ul class="dropdown-menu" role="menu">');
+
+            $.each(this.columns, function (i, column) {
+                if (column.radio || column.checkbox) {
+                    return;
+                }
+
+                if (that.options.cardView && (!column.cardVisible)) {
+                    return;
+                }
+
+                var checked = column.visible ? ' checked="checked"' : '';
+
+                if (column.switchable) {
+                    html.push(sprintf('<li>' +
+                        '<label><input type="checkbox" data-field="%s" value="%s"%s> %s</label>' +
+                        '</li>', column.field, i, checked, column.title));
+                    switchableCount++;
+                }
+            });
+            html.push('</ul>',
+                '</div>');
+        }
+
+        html.push('</div>');
+
+        // Fix #188: this.showToolbar is for extentions
+        if (this.showToolbar || html.length > 2) {
+            this.$toolbar.append(html.join(''));
+        }
+
+        if (this.options.showPaginationSwitch) {
+            this.$toolbar.find('button[name="paginationSwitch"]')
+                .off('click').on('click', $.proxy(this.togglePagination, this));
+        }
+
+        if (this.options.showRefresh) {
+            this.$toolbar.find('button[name="refresh"]')
+                .off('click').on('click', $.proxy(this.refresh, this));
+        }
+
+        if (this.options.showToggle) {
+            this.$toolbar.find('button[name="toggle"]')
+                .off('click').on('click', function () {
+                    that.toggleView();
+                });
+        }
+
+        if (this.options.showColumns) {
+            $keepOpen = this.$toolbar.find('.keep-open');
+
+            if (switchableCount <= this.options.minimumCountColumns) {
+                $keepOpen.find('input').prop('disabled', true);
+            }
+
+            $keepOpen.find('li').off('click').on('click', function (event) {
+                event.stopImmediatePropagation();
+            });
+            $keepOpen.find('input').off('click').on('click', function () {
+                var $this = $(this);
+
+                that.toggleColumn(getFieldIndex(that.columns,
+                    $(this).data('field')), $this.prop('checked'), false);
+                that.trigger('column-switch', $(this).data('field'), $this.prop('checked'));
+            });
+        }
+
+        if (this.options.search) {
+            html = [];
+            html.push(
+                '<div class="pull-' + this.options.searchAlign + ' search">',
+                sprintf('<input class="form-control' +
+                    sprintf(' input-%s', this.options.iconSize) +
+                    '" type="text" placeholder="%s">',
+                    this.options.formatSearch()),
+                '</div>');
+
+            this.$toolbar.append(html.join(''));
+            $search = this.$toolbar.find('.search input');
+            $search.off('keyup drop').on('keyup drop', function (event) {
+                clearTimeout(timeoutId); // doesn't matter if it's 0
+                timeoutId = setTimeout(function () {
+                    that.onSearch(event);
+                }, that.options.searchTimeOut);
+            });
+        }
+    };
+
+    BootstrapTable.prototype.onSearch = function (event) {
+        var text = $.trim($(event.currentTarget).val());
+
+        // trim search input
+        if (this.options.trimOnSearch && $(event.currentTarget).val() !== text) {
+            $(event.currentTarget).val(text);
+        }
+
+        if (text === this.searchText) {
+            return;
+        }
+        this.searchText = text;
+
+        this.options.pageNumber = 1;
+        this.initSearch();
+        this.updatePagination();
+        this.trigger('search', text);
+    };
+
+    BootstrapTable.prototype.initSearch = function () {
+        var that = this;
+
+        if (this.options.sidePagination !== 'server') {
+            var s = this.searchText && this.searchText.toLowerCase();
+            var f = $.isEmptyObject(this.filterColumns) ? null : this.filterColumns;
+
+            // Check filter
+            this.data = f ? $.grep(this.options.data, function (item, i) {
+                for (var key in f) {
+                    if ($.isArray(f[key])) {
+                        if ($.inArray(item[key], f[key]) === -1) {
+                            return false;
+                        }
+                    } else if (item[key] !== f[key]) {
+                        return false;
+                    }
+                }
+                return true;
+            }) : this.options.data;
+
+            this.data = s ? $.grep(this.data, function (item, i) {
+                for (var key in item) {
+                    key = $.isNumeric(key) ? parseInt(key, 10) : key;
+                    var value = item[key],
+                        column = that.columns[getFieldIndex(that.columns, key)],
+                        j = $.inArray(key, that.header.fields);
+
+                    // Fix #142: search use formated data
+                    if (column && column.searchFormatter) {
+                        value = calculateObjectValue(column,
+                            that.header.formatters[j], [value, item, i], value);
+                    }
+
+                    var index = $.inArray(key, that.header.fields);
+                    if (index !== -1 && that.header.searchables[index] && (typeof value === 'string' || typeof value === 'number')) {
+                        if (that.options.strictSearch) {
+                            if ((value + '').toLowerCase() === s) {
+                                return true;
+                            }
+                        } else {
+                            if ((value + '').toLowerCase().indexOf(s) !== -1) {
+                                return true;
+                            }
+                        }
+                    }
+                }
+                return false;
+            }) : this.data;
+        }
+    };
+
+    BootstrapTable.prototype.initPagination = function () {
+        if (!this.options.pagination) {
+            this.$pagination.hide();
+            return;
+        } else {
+            this.$pagination.show();
+        }
+
+        var that = this,
+            html = [],
+            $allSelected = false,
+            i, from, to,
+            $pageList,
+            $first, $pre,
+            $next, $last,
+            $number,
+            data = this.getData();
+
+        if (this.options.sidePagination !== 'server') {
+            this.options.totalRows = data.length;
+        }
+
+        this.totalPages = 0;
+        if (this.options.totalRows) {
+            if (this.options.pageSize === this.options.formatAllRows()) {
+                this.options.pageSize = this.options.totalRows;
+                $allSelected = true;
+            } else if (this.options.pageSize === this.options.totalRows) {
+                // Fix #667 Table with pagination,
+                // multiple pages and a search that matches to one page throws exception
+                var pageLst = typeof this.options.pageList === 'string' ?
+                    this.options.pageList.replace('[', '').replace(']', '')
+                        .replace(/ /g, '').toLowerCase().split(',') : this.options.pageList;
+                if ($.inArray(this.options.formatAllRows().toLowerCase(), pageLst)  > -1) {
+                    $allSelected = true;
+                }
+            }
+
+            this.totalPages = ~~((this.options.totalRows - 1) / this.options.pageSize) + 1;
+
+            this.options.totalPages = this.totalPages;
+        }
+        if (this.totalPages > 0 && this.options.pageNumber > this.totalPages) {
+            this.options.pageNumber = this.totalPages;
+        }
+
+        this.pageFrom = (this.options.pageNumber - 1) * this.options.pageSize + 1;
+        this.pageTo = this.options.pageNumber * this.options.pageSize;
+        if (this.pageTo > this.options.totalRows) {
+            this.pageTo = this.options.totalRows;
+        }
+
+        html.push(
+            '<div class="pull-' + this.options.paginationDetailHAlign + ' pagination-detail">',
+            '<span class="pagination-info">',
+            this.options.onlyInfoPagination ? this.options.formatDetailPagination(this.options.totalRows) :
+            this.options.formatShowingRows(this.pageFrom, this.pageTo, this.options.totalRows),
+            '</span>');
+
+        if (!this.options.onlyInfoPagination) {
+            html.push('<span class="page-list">');
+
+            var pageNumber = [
+                    sprintf('<span class="btn-group %s">',
+                        this.options.paginationVAlign === 'top' || this.options.paginationVAlign === 'both' ?
+                            'dropdown' : 'dropup'),
+                    '<button type="button" class="btn btn-default ' +
+                    sprintf(' btn-%s', this.options.iconSize) +
+                    ' dropdown-toggle" data-toggle="dropdown">',
+                    '<span class="page-size">',
+                    $allSelected ? this.options.formatAllRows() : this.options.pageSize,
+                    '</span>',
+                    ' <span class="caret"></span>',
+                    '</button>',
+                    '<ul class="dropdown-menu" role="menu">'
+                ],
+                pageList = this.options.pageList;
+
+            if (typeof this.options.pageList === 'string') {
+                var list = this.options.pageList.replace('[', '').replace(']', '')
+                    .replace(/ /g, '').split(',');
+
+                pageList = [];
+                $.each(list, function (i, value) {
+                    pageList.push(value.toUpperCase() === that.options.formatAllRows().toUpperCase() ?
+                        that.options.formatAllRows() : +value);
+                });
+            }
+
+            $.each(pageList, function (i, page) {
+                if (!that.options.smartDisplay || i === 0 || pageList[i - 1] <= that.options.totalRows) {
+                    var active;
+                    if ($allSelected) {
+                        active = page === that.options.formatAllRows() ? ' class="active"' : '';
+                    } else {
+                        active = page === that.options.pageSize ? ' class="active"' : '';
+                    }
+                    pageNumber.push(sprintf('<li%s><a href="javascript:void(0)">%s</a></li>', active, page));
+                }
+            });
+            pageNumber.push('</ul></span>');
+
+            html.push(this.options.formatRecordsPerPage(pageNumber.join('')));
+            html.push('</span>');
+
+            html.push('</div>',
+                '<div class="pull-' + this.options.paginationHAlign + ' pagination">',
+                '<ul class="pagination' + sprintf(' pagination-%s', this.options.iconSize) + '">',
+                '<li class="page-first"><a href="javascript:void(0)">' + this.options.paginationFirstText + '</a></li>',
+                '<li class="page-pre"><a href="javascript:void(0)">' + this.options.paginationPreText + '</a></li>');
+
+            if (this.totalPages < 5) {
+                from = 1;
+                to = this.totalPages;
+            } else {
+                from = this.options.pageNumber - 2;
+                to = from + 4;
+                if (from < 1) {
+                    from = 1;
+                    to = 5;
+                }
+                if (to > this.totalPages) {
+                    to = this.totalPages;
+                    from = to - 4;
+                }
+            }
+            for (i = from; i <= to; i++) {
+                html.push('<li class="page-number' + (i === this.options.pageNumber ? ' active' : '') + '">',
+                    '<a href="javascript:void(0)">', i, '</a>',
+                    '</li>');
+            }
+
+            html.push(
+                '<li class="page-next"><a href="javascript:void(0)">' + this.options.paginationNextText + '</a></li>',
+                '<li class="page-last"><a href="javascript:void(0)">' + this.options.paginationLastText + '</a></li>',
+                '</ul>',
+                '</div>');
+
+        }
+        this.$pagination.html(html.join(''));
+
+        if (!this.options.onlyInfoPagination) {
+            $pageList = this.$pagination.find('.page-list a');
+            $first = this.$pagination.find('.page-first');
+            $pre = this.$pagination.find('.page-pre');
+            $next = this.$pagination.find('.page-next');
+            $last = this.$pagination.find('.page-last');
+            $number = this.$pagination.find('.page-number');
+
+            if (this.options.pageNumber <= 1) {
+                $first.addClass('disabled');
+                $pre.addClass('disabled');
+            }
+            if (this.options.pageNumber >= this.totalPages) {
+                $next.addClass('disabled');
+                $last.addClass('disabled');
+            }
+            if (this.options.smartDisplay) {
+                if (this.totalPages <= 1) {
+                    this.$pagination.find('div.pagination').hide();
+                }
+                if (pageList.length < 2 || this.options.totalRows <= pageList[0]) {
+                    this.$pagination.find('span.page-list').hide();
+                }
+
+                // when data is empty, hide the pagination
+                this.$pagination[this.getData().length ? 'show' : 'hide']();
+            }
+            if ($allSelected) {
+                this.options.pageSize = this.options.formatAllRows();
+            }
+            $pageList.off('click').on('click', $.proxy(this.onPageListChange, this));
+            $first.off('click').on('click', $.proxy(this.onPageFirst, this));
+            $pre.off('click').on('click', $.proxy(this.onPagePre, this));
+            $next.off('click').on('click', $.proxy(this.onPageNext, this));
+            $last.off('click').on('click', $.proxy(this.onPageLast, this));
+            $number.off('click').on('click', $.proxy(this.onPageNumber, this));
+        }
+    };
+
+    BootstrapTable.prototype.updatePagination = function (event) {
+        // Fix #171: IE disabled button can be clicked bug.
+        if (event && $(event.currentTarget).hasClass('disabled')) {
+            return;
+        }
+
+        if (!this.options.maintainSelected) {
+            this.resetRows();
+        }
+
+        this.initPagination();
+        if (this.options.sidePagination === 'server') {
+            this.initServer();
+        } else {
+            this.initBody();
+        }
+
+        this.trigger('page-change', this.options.pageNumber, this.options.pageSize);
+    };
+
+    BootstrapTable.prototype.onPageListChange = function (event) {
+        var $this = $(event.currentTarget);
+
+        $this.parent().addClass('active').siblings().removeClass('active');
+        this.options.pageSize = $this.text().toUpperCase() === this.options.formatAllRows().toUpperCase() ?
+            this.options.formatAllRows() : +$this.text();
+        this.$toolbar.find('.page-size').text(this.options.pageSize);
+
+        this.updatePagination(event);
+    };
+
+    BootstrapTable.prototype.onPageFirst = function (event) {
+        this.options.pageNumber = 1;
+        this.updatePagination(event);
+    };
+
+    BootstrapTable.prototype.onPagePre = function (event) {
+        this.options.pageNumber--;
+        this.updatePagination(event);
+    };
+
+    BootstrapTable.prototype.onPageNext = function (event) {
+        this.options.pageNumber++;
+        this.updatePagination(event);
+    };
+
+    BootstrapTable.prototype.onPageLast = function (event) {
+        this.options.pageNumber = this.totalPages;
+        this.updatePagination(event);
+    };
+
+    BootstrapTable.prototype.onPageNumber = function (event) {
+        if (this.options.pageNumber === +$(event.currentTarget).text()) {
+            return;
+        }
+        this.options.pageNumber = +$(event.currentTarget).text();
+        this.updatePagination(event);
+    };
+
+    BootstrapTable.prototype.initBody = function (fixedScroll) {
+        var that = this,
+            html = [],
+            data = this.getData();
+
+        this.trigger('pre-body', data);
+
+        this.$body = this.$el.find('>tbody');
+        if (!this.$body.length) {
+            this.$body = $('<tbody></tbody>').appendTo(this.$el);
+        }
+
+        //Fix #389 Bootstrap-table-flatJSON is not working
+
+        if (!this.options.pagination || this.options.sidePagination === 'server') {
+            this.pageFrom = 1;
+            this.pageTo = data.length;
+        }
+
+        for (var i = this.pageFrom - 1; i < this.pageTo; i++) {
+            var key,
+                item = data[i],
+                style = {},
+                csses = [],
+                data_ = '',
+                attributes = {},
+                htmlAttributes = [];
+
+            style = calculateObjectValue(this.options, this.options.rowStyle, [item, i], style);
+
+            if (style && style.css) {
+                for (key in style.css) {
+                    csses.push(key + ': ' + style.css[key]);
+                }
+            }
+
+            attributes = calculateObjectValue(this.options,
+                this.options.rowAttributes, [item, i], attributes);
+
+            if (attributes) {
+                for (key in attributes) {
+                    htmlAttributes.push(sprintf('%s="%s"', key, escapeHTML(attributes[key])));
+                }
+            }
+
+            if (item._data && !$.isEmptyObject(item._data)) {
+                $.each(item._data, function (k, v) {
+                    // ignore data-index
+                    if (k === 'index') {
+                        return;
+                    }
+                    data_ += sprintf(' data-%s="%s"', k, v);
+                });
+            }
+
+            html.push('<tr',
+                sprintf(' %s', htmlAttributes.join(' ')),
+                sprintf(' id="%s"', $.isArray(item) ? undefined : item._id),
+                sprintf(' class="%s"', style.classes || ($.isArray(item) ? undefined : item._class)),
+                sprintf(' data-index="%s"', i),
+                sprintf(' data-uniqueid="%s"', item[this.options.uniqueId]),
+                sprintf('%s', data_),
+                '>'
+            );
+
+            if (this.options.cardView) {
+                html.push(sprintf('<td colspan="%s">', this.header.fields.length));
+            }
+
+            if (!this.options.cardView && this.options.detailView) {
+                html.push('<td>',
+                    '<a class="detail-icon" href="javascript:">',
+                    sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.detailOpen),
+                    '</a>',
+                    '</td>');
+            }
+
+            $.each(this.header.fields, function (j, field) {
+                var text = '',
+                    value = getItemField(item, field),
+                    type = '',
+                    cellStyle = {},
+                    id_ = '',
+                    class_ = that.header.classes[j],
+                    data_ = '',
+                    rowspan_ = '',
+                    title_ = '',
+                    column = that.columns[getFieldIndex(that.columns, field)];
+
+                if (!column.visible) {
+                    return;
+                }
+
+                style = sprintf('style="%s"', csses.concat(that.header.styles[j]).join('; '));
+
+                value = calculateObjectValue(column,
+                    that.header.formatters[j], [value, item, i], value);
+
+                // handle td's id and class
+                if (item['_' + field + '_id']) {
+                    id_ = sprintf(' id="%s"', item['_' + field + '_id']);
+                }
+                if (item['_' + field + '_class']) {
+                    class_ = sprintf(' class="%s"', item['_' + field + '_class']);
+                }
+                if (item['_' + field + '_rowspan']) {
+                    rowspan_ = sprintf(' rowspan="%s"', item['_' + field + '_rowspan']);
+                }
+                if (item['_' + field + '_title']) {
+                    title_ = sprintf(' title="%s"', item['_' + field + '_title']);
+                }
+                cellStyle = calculateObjectValue(that.header,
+                    that.header.cellStyles[j], [value, item, i], cellStyle);
+                if (cellStyle.classes) {
+                    class_ = sprintf(' class="%s"', cellStyle.classes);
+                }
+                if (cellStyle.css) {
+                    var csses_ = [];
+                    for (var key in cellStyle.css) {
+                        csses_.push(key + ': ' + cellStyle.css[key]);
+                    }
+                    style = sprintf('style="%s"', csses_.concat(that.header.styles[j]).join('; '));
+                }
+
+                if (item['_' + field + '_data'] && !$.isEmptyObject(item['_' + field + '_data'])) {
+                    $.each(item['_' + field + '_data'], function (k, v) {
+                        // ignore data-index
+                        if (k === 'index') {
+                            return;
+                        }
+                        data_ += sprintf(' data-%s="%s"', k, v);
+                    });
+                }
+
+                if (column.checkbox || column.radio) {
+                    type = column.checkbox ? 'checkbox' : type;
+                    type = column.radio ? 'radio' : type;
+
+                    text = [that.options.cardView ?
+                        '<div class="card-view">' : '<td class="bs-checkbox">',
+                        '<input' +
+                        sprintf(' data-index="%s"', i) +
+                        sprintf(' name="%s"', that.options.selectItemName) +
+                        sprintf(' type="%s"', type) +
+                        sprintf(' value="%s"', item[that.options.idField]) +
+                        sprintf(' checked="%s"', value === true ||
+                        (value && value.checked) ? 'checked' : undefined) +
+                        sprintf(' disabled="%s"', !column.checkboxEnabled ||
+                        (value && value.disabled) ? 'disabled' : undefined) +
+                        ' />',
+                        that.header.formatters[j] && typeof value === 'string' ? value : '',
+                        that.options.cardView ? '</div>' : '</td>'
+                    ].join('');
+
+                    item[that.header.stateField] = value === true || (value && value.checked);
+                } else {
+                    value = typeof value === 'undefined' || value === null ?
+                        that.options.undefinedText : value;
+
+                    text = that.options.cardView ? ['<div class="card-view">',
+                        that.options.showHeader ? sprintf('<span class="title" %s>%s</span>', style,
+                            getPropertyFromOther(that.columns, 'field', 'title', field)) : '',
+                        sprintf('<span class="value">%s</span>', value),
+                        '</div>'
+                    ].join('') : [sprintf('<td%s %s %s %s %s %s>', id_, class_, style, data_, rowspan_, title_),
+                        value,
+                        '</td>'
+                    ].join('');
+
+                    // Hide empty data on Card view when smartDisplay is set to true.
+                    if (that.options.cardView && that.options.smartDisplay && value === '') {
+                        // Should set a placeholder for event binding correct fieldIndex
+                        text = '<div class="card-view"></div>';
+                    }
+                }
+
+                html.push(text);
+            });
+
+            if (this.options.cardView) {
+                html.push('</td>');
+            }
+
+            html.push('</tr>');
+        }
+
+        // show no records
+        if (!html.length) {
+            html.push('<tr class="no-records-found">',
+                sprintf('<td colspan="%s">%s</td>',
+                    this.$header.find('th').length, this.options.formatNoMatches()),
+                '</tr>');
+        }
+
+        this.$body.html(html.join(''));
+
+        if (!fixedScroll) {
+            this.scrollTo(0);
+        }
+
+        // click to select by column
+        this.$body.find('> tr[data-index] > td').off('click dblclick').on('click dblclick', function (e) {
+            var $td = $(this),
+                $tr = $td.parent(),
+                item = that.data[$tr.data('index')],
+                index = $td[0].cellIndex,
+                field = that.header.fields[that.options.detailView && !that.options.cardView ? index - 1 : index],
+                column = that.columns[getFieldIndex(that.columns, field)],
+                value = getItemField(item, field);
+
+            if ($td.find('.detail-icon').length) {
+                return;
+            }
+
+            that.trigger(e.type === 'click' ? 'click-cell' : 'dbl-click-cell', field, value, item, $td);
+            that.trigger(e.type === 'click' ? 'click-row' : 'dbl-click-row', item, $tr);
+
+            // if click to select - then trigger the checkbox/radio click
+            if (e.type === 'click' && that.options.clickToSelect && column.clickToSelect) {
+                var $selectItem = $tr.find(sprintf('[name="%s"]', that.options.selectItemName));
+                if ($selectItem.length) {
+                    $selectItem[0].click(); // #144: .trigger('click') bug
+                }
+            }
+        });
+
+        this.$body.find('> tr[data-index] > td > .detail-icon').off('click').on('click', function () {
+            var $this = $(this),
+                $tr = $this.parent().parent(),
+                index = $tr.data('index'),
+                row = data[index]; // Fix #980 Detail view, when searching, returns wrong row
+
+            // remove and update
+            if ($tr.next().is('tr.detail-view')) {
+                $this.find('i').attr('class', sprintf('%s %s', that.options.iconsPrefix, that.options.icons.detailOpen));
+                $tr.next().remove();
+                that.trigger('collapse-row', index, row);
+            } else {
+                $this.find('i').attr('class', sprintf('%s %s', that.options.iconsPrefix, that.options.icons.detailClose));
+                $tr.after(sprintf('<tr class="detail-view"><td colspan="%s">%s</td></tr>',
+                    $tr.find('td').length, calculateObjectValue(that.options,
+                        that.options.detailFormatter, [index, row], '')));
+                that.trigger('expand-row', index, row, $tr.next().find('td'));
+            }
+            that.resetView();
+        });
+
+        this.$selectItem = this.$body.find(sprintf('[name="%s"]', this.options.selectItemName));
+        this.$selectItem.off('click').on('click', function (event) {
+            event.stopImmediatePropagation();
+
+            var $this = $(this),
+                checked = $this.prop('checked'),
+                row = that.data[$this.data('index')];
+
+            if (that.options.maintainSelected && $(this).is(':radio')) {
+                $.each(that.options.data, function (i, row) {
+                    row[that.header.stateField] = false;
+                });
+            }
+
+            row[that.header.stateField] = checked;
+
+            if (that.options.singleSelect) {
+                that.$selectItem.not(this).each(function () {
+                    that.data[$(this).data('index')][that.header.stateField] = false;
+                });
+                that.$selectItem.filter(':checked').not(this).prop('checked', false);
+            }
+
+            that.updateSelected();
+            that.trigger(checked ? 'check' : 'uncheck', row, $this);
+        });
+
+        $.each(this.header.events, function (i, events) {
+            if (!events) {
+                return;
+            }
+            // fix bug, if events is defined with namespace
+            if (typeof events === 'string') {
+                events = calculateObjectValue(null, events);
+            }
+
+            var field = that.header.fields[i],
+                fieldIndex = $.inArray(field, that.getVisibleFields());
+
+            if (that.options.detailView && !that.options.cardView) {
+                fieldIndex += 1;
+            }
+
+            for (var key in events) {
+                that.$body.find('>tr:not(.no-records-found)').each(function () {
+                    var $tr = $(this),
+                        $td = $tr.find(that.options.cardView ? '.card-view' : 'td').eq(fieldIndex),
+                        index = key.indexOf(' '),
+                        name = key.substring(0, index),
+                        el = key.substring(index + 1),
+                        func = events[key];
+
+                    $td.find(el).off(name).on(name, function (e) {
+                        var index = $tr.data('index'),
+                            row = that.data[index],
+                            value = row[field];
+
+                        func.apply(this, [e, value, row, index]);
+                    });
+                });
+            }
+        });
+
+        this.updateSelected();
+        this.resetView();
+
+        this.trigger('post-body');
+    };
+
+    BootstrapTable.prototype.initServer = function (silent, query) {
+        var that = this,
+            data = {},
+            params = {
+                pageSize: this.options.pageSize === this.options.formatAllRows() ?
+                    this.options.totalRows : this.options.pageSize,
+                pageNumber: this.options.pageNumber,
+                searchText: this.searchText,
+                sortName: this.options.sortName,
+                sortOrder: this.options.sortOrder
+            },
+            request;
+
+        if (!this.options.url && !this.options.ajax) {
+            return;
+        }
+
+        if (this.options.queryParamsType === 'limit') {
+            params = {
+                search: params.searchText,
+                sort: params.sortName,
+                order: params.sortOrder
+            };
+            if (this.options.pagination) {
+                params.limit = this.options.pageSize === this.options.formatAllRows() ?
+                    this.options.totalRows : this.options.pageSize;
+                params.offset = this.options.pageSize === this.options.formatAllRows() ?
+                    0 : this.options.pageSize * (this.options.pageNumber - 1);
+            }
+        }
+
+        if (!($.isEmptyObject(this.filterColumnsPartial))) {
+            params['filter'] = JSON.stringify(this.filterColumnsPartial, null);
+        }
+
+        data = calculateObjectValue(this.options, this.options.queryParams, [params], data);
+
+        $.extend(data, query || {});
+
+        // false to stop request
+        if (data === false) {
+            return;
+        }
+
+        if (!silent) {
+            this.$tableLoading.show();
+        }
+        request = $.extend({}, calculateObjectValue(null, this.options.ajaxOptions), {
+            type: this.options.method,
+            url: this.options.url,
+            data: this.options.contentType === 'application/json' && this.options.method === 'post' ?
+                JSON.stringify(data) : data,
+            cache: this.options.cache,
+            contentType: this.options.contentType,
+            dataType: this.options.dataType,
+            success: function (res) {
+                res = calculateObjectValue(that.options, that.options.responseHandler, [res], res);
+
+                that.load(res);
+                that.trigger('load-success', res);
+            },
+            error: function (res) {
+                that.trigger('load-error', res.status, res);
+            },
+            complete: function () {
+                if (!silent) {
+                    that.$tableLoading.hide();
+                }
+            }
+        });
+
+        if (this.options.ajax) {
+            calculateObjectValue(this, this.options.ajax, [request], null);
+        } else {
+            $.ajax(request);
+        }
+    };
+
+    BootstrapTable.prototype.initSearchText = function () {
+        if (this.options.search) {
+            if (this.options.searchText !== '') {
+                var $search = this.$toolbar.find('.search input');
+                $search.val(this.options.searchText);
+                this.onSearch({currentTarget: $search});
+            }
+        }
+    };
+
+    BootstrapTable.prototype.getCaret = function () {
+        var that = this;
+
+        $.each(this.$header.find('th'), function (i, th) {
+            $(th).find('.sortable').removeClass('desc asc').addClass($(th).data('field') === that.options.sortName ? that.options.sortOrder : 'both');
+        });
+    };
+
+    BootstrapTable.prototype.updateSelected = function () {
+        var checkAll = this.$selectItem.filter(':enabled').length &&
+            this.$selectItem.filter(':enabled').length ===
+            this.$selectItem.filter(':enabled').filter(':checked').length;
+
+        this.$selectAll.add(this.$selectAll_).prop('checked', checkAll);
+
+        this.$selectItem.each(function () {
+            $(this).closest('tr')[$(this).prop('checked') ? 'addClass' : 'removeClass']('selected');
+        });
+    };
+
+    BootstrapTable.prototype.updateRows = function () {
+        var that = this;
+
+        this.$selectItem.each(function () {
+            that.data[$(this).data('index')][that.header.stateField] = $(this).prop('checked');
+        });
+    };
+
+    BootstrapTable.prototype.resetRows = function () {
+        var that = this;
+
+        $.each(this.data, function (i, row) {
+            that.$selectAll.prop('checked', false);
+            that.$selectItem.prop('checked', false);
+            if (that.header.stateField) {
+                row[that.header.stateField] = false;
+            }
+        });
+    };
+
+    BootstrapTable.prototype.trigger = function (name) {
+        var args = Array.prototype.slice.call(arguments, 1);
+
+        name += '.bs.table';
+        this.options[BootstrapTable.EVENTS[name]].apply(this.options, args);
+        this.$el.trigger($.Event(name), args);
+
+        this.options.onAll(name, args);
+        this.$el.trigger($.Event('all.bs.table'), [name, args]);
+    };
+
+    BootstrapTable.prototype.resetHeader = function () {
+        // fix #61: the hidden table reset header bug.
+        // fix bug: get $el.css('width') error sometime (height = 500)
+        clearTimeout(this.timeoutId_);
+        this.timeoutId_ = setTimeout($.proxy(this.fitHeader, this), this.$el.is(':hidden') ? 100 : 0);
+    };
+
+    BootstrapTable.prototype.fitHeader = function () {
+        var that = this,
+            fixedBody,
+            scrollWidth,
+            focused,
+            focusedTemp;
+
+        if (that.$el.is(':hidden')) {
+            that.timeoutId_ = setTimeout($.proxy(that.fitHeader, that), 100);
+            return;
+        }
+        fixedBody = this.$tableBody.get(0);
+
+        scrollWidth = fixedBody.scrollWidth > fixedBody.clientWidth &&
+        fixedBody.scrollHeight > fixedBody.clientHeight + this.$header.outerHeight() ?
+            getScrollBarWidth() : 0;
+
+        this.$el.css('margin-top', -this.$header.outerHeight());
+
+        focused = $(':focus');
+        if (focused.length > 0) {
+            var $th = focused.parents('th');
+            if ($th.length > 0) {
+                var dataField = $th.attr('data-field');
+                if (dataField !== undefined) {
+                    var $headerTh = this.$header.find("[data-field='" + dataField + "']");
+                    if ($headerTh.length > 0) {
+                        $headerTh.find(":input").addClass("focus-temp");
+                    }
+                }
+            }
+        }
+
+        this.$header_ = this.$header.clone(true, true);
+        this.$selectAll_ = this.$header_.find('[name="btSelectAll"]');
+        this.$tableHeader.css({
+            'margin-right': scrollWidth
+        }).find('table').css('width', this.$el.outerWidth())
+            .html('').attr('class', this.$el.attr('class'))
+            .append(this.$header_);
+
+
+        focusedTemp = $('.focus-temp:visible:eq(0)');
+        if (focusedTemp.length > 0) {
+            focusedTemp.focus();
+            this.$header.find('.focus-temp').removeClass('focus-temp');
+        }
+
+        // fix bug: $.data() is not working as expected after $.append()
+        this.$header.find('th[data-field]').each(function (i) {
+            that.$header_.find(sprintf('th[data-field="%s"]', $(this).data('field'))).data($(this).data());
+        });
+
+        var visibleFields = this.getVisibleFields();
+
+        this.$body.find('>tr:first-child:not(.no-records-found) > *').each(function (i) {
+            var $this = $(this),
+                index = i;
+
+            if (that.options.detailView && !that.options.cardView) {
+                if (i === 0) {
+                    that.$header_.find('th.detail').find('.fht-cell').width($this.innerWidth());
+                }
+                index = i - 1;
+            }
+
+            that.$header_.find(sprintf('th[data-field="%s"]', visibleFields[index]))
+                .find('.fht-cell').width($this.innerWidth());
+        });
+        // horizontal scroll event
+        // TODO: it's probably better improving the layout than binding to scroll event
+        this.$tableBody.off('scroll').on('scroll', function () {
+            that.$tableHeader.scrollLeft($(this).scrollLeft());
+
+            if (that.options.showFooter && !that.options.cardView) {
+                that.$tableFooter.scrollLeft($(this).scrollLeft());
+            }
+        });
+        that.trigger('post-header');
+    };
+
+    BootstrapTable.prototype.resetFooter = function () {
+        var that = this,
+            data = that.getData(),
+            html = [];
+
+        if (!this.options.showFooter || this.options.cardView) { //do nothing
+            return;
+        }
+
+        if (!this.options.cardView && this.options.detailView) {
+            html.push('<td><div class="th-inner">&nbsp;</div><div class="fht-cell"></div></td>');
+        }
+
+        $.each(this.columns, function (i, column) {
+            var falign = '', // footer align style
+                style = '',
+                class_ = sprintf(' class="%s"', column['class']);
+
+            if (!column.visible) {
+                return;
+            }
+
+            if (that.options.cardView && (!column.cardVisible)) {
+                return;
+            }
+
+            falign = sprintf('text-align: %s; ', column.falign ? column.falign : column.align);
+            style = sprintf('vertical-align: %s; ', column.valign);
+
+            html.push('<td', class_, sprintf(' style="%s"', falign + style), '>');
+            html.push('<div class="th-inner">');
+
+            html.push(calculateObjectValue(column, column.footerFormatter, [data], '&nbsp;') || '&nbsp;');
+
+            html.push('</div>');
+            html.push('<div class="fht-cell"></div>');
+            html.push('</div>');
+            html.push('</td>');
+        });
+
+        this.$tableFooter.find('tr').html(html.join(''));
+        clearTimeout(this.timeoutFooter_);
+        this.timeoutFooter_ = setTimeout($.proxy(this.fitFooter, this),
+            this.$el.is(':hidden') ? 100 : 0);
+    };
+
+    BootstrapTable.prototype.fitFooter = function () {
+        var that = this,
+            $footerTd,
+            elWidth,
+            scrollWidth;
+
+        clearTimeout(this.timeoutFooter_);
+        if (this.$el.is(':hidden')) {
+            this.timeoutFooter_ = setTimeout($.proxy(this.fitFooter, this), 100);
+            return;
+        }
+
+        elWidth = this.$el.css('width');
+        scrollWidth = elWidth > this.$tableBody.width() ? getScrollBarWidth() : 0;
+
+        this.$tableFooter.css({
+            'margin-right': scrollWidth
+        }).find('table').css('width', elWidth)
+            .attr('class', this.$el.attr('class'));
+
+        $footerTd = this.$tableFooter.find('td');
+
+        this.$body.find('>tr:first-child:not(.no-records-found) > *').each(function (i) {
+            var $this = $(this);
+
+            $footerTd.eq(i).find('.fht-cell').width($this.innerWidth());
+        });
+    };
+
+    BootstrapTable.prototype.toggleColumn = function (index, checked, needUpdate) {
+        if (index === -1) {
+            return;
+        }
+        this.columns[index].visible = checked;
+        this.initHeader();
+        this.initSearch();
+        this.initPagination();
+        this.initBody();
+
+        if (this.options.showColumns) {
+            var $items = this.$toolbar.find('.keep-open input').prop('disabled', false);
+
+            if (needUpdate) {
+                $items.filter(sprintf('[value="%s"]', index)).prop('checked', checked);
+            }
+
+            if ($items.filter(':checked').length <= this.options.minimumCountColumns) {
+                $items.filter(':checked').prop('disabled', true);
+            }
+        }
+    };
+
+    BootstrapTable.prototype.toggleRow = function (index, uniqueId, visible) {
+        if (index === -1) {
+            return;
+        }
+
+        this.$body.find(typeof index !== 'undefined' ?
+            sprintf('tr[data-index="%s"]', index) :
+            sprintf('tr[data-uniqueid="%s"]', uniqueId))
+            [visible ? 'show' : 'hide']();
+    };
+
+    BootstrapTable.prototype.getVisibleFields = function () {
+        var that = this,
+            visibleFields = [];
+
+        $.each(this.header.fields, function (j, field) {
+            var column = that.columns[getFieldIndex(that.columns, field)];
+
+            if (!column.visible) {
+                return;
+            }
+            visibleFields.push(field);
+        });
+        return visibleFields;
+    };
+
+    // PUBLIC FUNCTION DEFINITION
+    // =======================
+
+    BootstrapTable.prototype.resetView = function (params) {
+        var padding = 0;
+
+        if (params && params.height) {
+            this.options.height = params.height;
+        }
+
+        this.$selectAll.prop('checked', this.$selectItem.length > 0 &&
+            this.$selectItem.length === this.$selectItem.filter(':checked').length);
+
+        if (this.options.height) {
+            var toolbarHeight = getRealHeight(this.$toolbar),
+                paginationHeight = getRealHeight(this.$pagination),
+                height = this.options.height - toolbarHeight - paginationHeight;
+
+            this.$tableContainer.css('height', height + 'px');
+        }
+
+        if (this.options.cardView) {
+            // remove the element css
+            this.$el.css('margin-top', '0');
+            this.$tableContainer.css('padding-bottom', '0');
+            return;
+        }
+
+        if (this.options.showHeader && this.options.height) {
+            this.$tableHeader.show();
+            this.resetHeader();
+            padding += this.$header.outerHeight();
+        } else {
+            this.$tableHeader.hide();
+            this.trigger('post-header');
+        }
+
+        if (this.options.showFooter) {
+            this.resetFooter();
+            if (this.options.height) {
+                padding += this.$tableFooter.outerHeight() + 1;
+            }
+        }
+
+        // Assign the correct sortable arrow
+        this.getCaret();
+        this.$tableContainer.css('padding-bottom', padding + 'px');
+        this.trigger('reset-view');
+    };
+
+    BootstrapTable.prototype.getData = function (useCurrentPage) {
+        return (this.searchText || !$.isEmptyObject(this.filterColumns) || !$.isEmptyObject(this.filterColumnsPartial)) ?
+            (useCurrentPage ? this.data.slice(this.pageFrom - 1, this.pageTo) : this.data) :
+            (useCurrentPage ? this.options.data.slice(this.pageFrom - 1, this.pageTo) : this.options.data);
+    };
+
+    BootstrapTable.prototype.load = function (data) {
+        var fixedScroll = false;
+
+        // #431: support pagination
+        if (this.options.sidePagination === 'server') {
+            this.options.totalRows = data.total;
+            fixedScroll = data.fixedScroll;
+            data = data[this.options.dataField];
+        } else if (!$.isArray(data)) { // support fixedScroll
+            fixedScroll = data.fixedScroll;
+            data = data.data;
+        }
+
+        this.initData(data);
+        this.initSearch();
+        this.initPagination();
+        this.initBody(fixedScroll);
+    };
+
+    BootstrapTable.prototype.append = function (data) {
+        this.initData(data, 'append');
+        this.initSearch();
+        this.initPagination();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.prepend = function (data) {
+        this.initData(data, 'prepend');
+        this.initSearch();
+        this.initPagination();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.remove = function (params) {
+        var len = this.options.data.length,
+            i, row;
+
+        if (!params.hasOwnProperty('field') || !params.hasOwnProperty('values')) {
+            return;
+        }
+
+        for (i = len - 1; i >= 0; i--) {
+            row = this.options.data[i];
+
+            if (!row.hasOwnProperty(params.field)) {
+                continue;
+            }
+            if ($.inArray(row[params.field], params.values) !== -1) {
+                this.options.data.splice(i, 1);
+            }
+        }
+
+        if (len === this.options.data.length) {
+            return;
+        }
+
+        this.initSearch();
+        this.initPagination();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.removeAll = function () {
+        if (this.options.data.length > 0) {
+            this.options.data.splice(0, this.options.data.length);
+            this.initSearch();
+            this.initPagination();
+            this.initBody(true);
+        }
+    };
+
+    BootstrapTable.prototype.getRowByUniqueId = function (id) {
+        var uniqueId = this.options.uniqueId,
+            len = this.options.data.length,
+            dataRow = null,
+            i, row, rowUniqueId;
+
+        for (i = len - 1; i >= 0; i--) {
+            row = this.options.data[i];
+
+            if (row.hasOwnProperty(uniqueId)) { // uniqueId is a column
+                rowUniqueId = row[uniqueId];
+            } else if(row._data.hasOwnProperty(uniqueId)) { // uniqueId is a row data property
+                rowUniqueId = row._data[uniqueId];
+            } else {
+                continue;
+            }
+
+            if (typeof rowUniqueId === 'string') {
+                id = id.toString();
+            } else if (typeof rowUniqueId === 'number') {
+                if ((Number(rowUniqueId) === rowUniqueId) && (rowUniqueId % 1 === 0)) {
+                    id = parseInt(id);
+                } else if ((rowUniqueId === Number(rowUniqueId)) && (rowUniqueId !== 0)) {
+                    id = parseFloat(id);
+                }
+            }
+
+            if (rowUniqueId === id) {
+                dataRow = row;
+                break;
+            }
+        }
+
+        return dataRow;
+    };
+
+    BootstrapTable.prototype.removeByUniqueId = function (id) {
+        var len = this.options.data.length,
+            row = this.getRowByUniqueId(id);
+
+        if (row) {
+            this.options.data.splice(this.options.data.indexOf(row), 1);
+        }
+
+        if (len === this.options.data.length) {
+            return;
+        }
+
+        this.initSearch();
+        this.initPagination();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.updateByUniqueId = function (params) {
+        var rowId;
+
+        if (!params.hasOwnProperty('id') || !params.hasOwnProperty('row')) {
+            return;
+        }
+
+        rowId = $.inArray(this.getRowByUniqueId(params.id), this.options.data);
+
+        if (rowId === -1) {
+            return;
+        }
+
+        $.extend(this.data[rowId], params.row);
+        this.initSort();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.insertRow = function (params) {
+        if (!params.hasOwnProperty('index') || !params.hasOwnProperty('row')) {
+            return;
+        }
+        this.data.splice(params.index, 0, params.row);
+        this.initSearch();
+        this.initPagination();
+        this.initSort();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.updateRow = function (params) {
+        if (!params.hasOwnProperty('index') || !params.hasOwnProperty('row')) {
+            return;
+        }
+        $.extend(this.data[params.index], params.row);
+        this.initSort();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.showRow = function (params) {
+        if (!params.hasOwnProperty('index') || !params.hasOwnProperty('uniqueId')) {
+            return;
+        }
+        this.toggleRow(params.index, params.uniqueId, true);
+    };
+
+    BootstrapTable.prototype.hideRow = function (params) {
+        if (!params.hasOwnProperty('index') || !params.hasOwnProperty('uniqueId')) {
+            return;
+        }
+        this.toggleRow(params.index, params.uniqueId, false);
+    };
+
+    BootstrapTable.prototype.getRowsHidden = function (show) {
+        var rows = $(this.$body[0]).children().filter(':hidden'),
+            i = 0;
+        if (show) {
+            for (; i < rows.length; i++) {
+                $(rows[i]).show();
+            }
+        }
+        return rows;
+    };
+
+    BootstrapTable.prototype.mergeCells = function (options) {
+        var row = options.index,
+            col = $.inArray(options.field, this.getVisibleFields()),
+            rowspan = options.rowspan || 1,
+            colspan = options.colspan || 1,
+            i, j,
+            $tr = this.$body.find('>tr'),
+            $td;
+
+        if (this.options.detailView && !this.options.cardView) {
+            col += 1;
+        }
+
+        $td = $tr.eq(row).find('>td').eq(col);
+
+        if (row < 0 || col < 0 || row >= this.data.length) {
+            return;
+        }
+
+        for (i = row; i < row + rowspan; i++) {
+            for (j = col; j < col + colspan; j++) {
+                $tr.eq(i).find('>td').eq(j).hide();
+            }
+        }
+
+        $td.attr('rowspan', rowspan).attr('colspan', colspan).show();
+    };
+
+    BootstrapTable.prototype.updateCell = function (params) {
+        if (!params.hasOwnProperty('index') ||
+            !params.hasOwnProperty('field') ||
+            !params.hasOwnProperty('value')) {
+            return;
+        }
+        this.data[params.index][params.field] = params.value;
+        this.initSort();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.getOptions = function () {
+        return this.options;
+    };
+
+    BootstrapTable.prototype.getSelections = function () {
+        var that = this;
+
+        return $.grep(this.data, function (row) {
+            return row[that.header.stateField];
+        });
+    };
+
+    BootstrapTable.prototype.getAllSelections = function () {
+        var that = this;
+
+        return $.grep(this.options.data, function (row) {
+            return row[that.header.stateField];
+        });
+    };
+
+    BootstrapTable.prototype.checkAll = function () {
+        this.checkAll_(true);
+    };
+
+    BootstrapTable.prototype.uncheckAll = function () {
+        this.checkAll_(false);
+    };
+
+    BootstrapTable.prototype.checkAll_ = function (checked) {
+        var rows;
+        if (!checked) {
+            rows = this.getSelections();
+        }
+        this.$selectAll.add(this.$selectAll_).prop('checked', checked);
+        this.$selectItem.filter(':enabled').prop('checked', checked);
+        this.updateRows();
+        if (checked) {
+            rows = this.getSelections();
+        }
+        this.trigger(checked ? 'check-all' : 'uncheck-all', rows);
+    };
+
+    BootstrapTable.prototype.check = function (index) {
+        this.check_(true, index);
+    };
+
+    BootstrapTable.prototype.uncheck = function (index) {
+        this.check_(false, index);
+    };
+
+    BootstrapTable.prototype.check_ = function (checked, index) {
+        var $el = this.$selectItem.filter(sprintf('[data-index="%s"]', index)).prop('checked', checked);
+        this.data[index][this.header.stateField] = checked;
+        this.updateSelected();
+        this.trigger(checked ? 'check' : 'uncheck', this.data[index], $el);
+    };
+
+    BootstrapTable.prototype.checkBy = function (obj) {
+        this.checkBy_(true, obj);
+    };
+
+    BootstrapTable.prototype.uncheckBy = function (obj) {
+        this.checkBy_(false, obj);
+    };
+
+    BootstrapTable.prototype.checkBy_ = function (checked, obj) {
+        if (!obj.hasOwnProperty('field') || !obj.hasOwnProperty('values')) {
+            return;
+        }
+
+        var that = this,
+            rows = [];
+        $.each(this.options.data, function (index, row) {
+            if (!row.hasOwnProperty(obj.field)) {
+                return false;
+            }
+            if ($.inArray(row[obj.field], obj.values) !== -1) {
+                var $el = that.$selectItem.filter(':enabled')
+                    .filter(sprintf('[data-index="%s"]', index)).prop('checked', checked);
+                row[that.header.stateField] = checked;
+                rows.push(row);
+                that.trigger(checked ? 'check' : 'uncheck', row, $el);
+            }
+        });
+        this.updateSelected();
+        this.trigger(checked ? 'check-some' : 'uncheck-some', rows);
+    };
+
+    BootstrapTable.prototype.destroy = function () {
+        this.$el.insertBefore(this.$container);
+        $(this.options.toolbar).insertBefore(this.$el);
+        this.$container.next().remove();
+        this.$container.remove();
+        this.$el.html(this.$el_.html())
+            .css('margin-top', '0')
+            .attr('class', this.$el_.attr('class') || ''); // reset the class
+    };
+
+    BootstrapTable.prototype.showLoading = function () {
+        this.$tableLoading.show();
+    };
+
+    BootstrapTable.prototype.hideLoading = function () {
+        this.$tableLoading.hide();
+    };
+
+    BootstrapTable.prototype.togglePagination = function () {
+        this.options.pagination = !this.options.pagination;
+        var button = this.$toolbar.find('button[name="paginationSwitch"] i');
+        if (this.options.pagination) {
+            button.attr("class", this.options.iconsPrefix + " " + this.options.icons.paginationSwitchDown);
+        } else {
+            button.attr("class", this.options.iconsPrefix + " " + this.options.icons.paginationSwitchUp);
+        }
+        this.updatePagination();
+    };
+
+    BootstrapTable.prototype.refresh = function (params) {
+        if (params && params.url) {
+            this.options.url = params.url;
+            this.options.pageNumber = 1;
+        }
+        this.initServer(params && params.silent, params && params.query);
+    };
+
+    BootstrapTable.prototype.resetWidth = function () {
+        if (this.options.showHeader && this.options.height) {
+            this.fitHeader();
+        }
+        if (this.options.showFooter) {
+            this.fitFooter();
+        }
+    };
+
+    BootstrapTable.prototype.showColumn = function (field) {
+        this.toggleColumn(getFieldIndex(this.columns, field), true, true);
+    };
+
+    BootstrapTable.prototype.hideColumn = function (field) {
+        this.toggleColumn(getFieldIndex(this.columns, field), false, true);
+    };
+
+    BootstrapTable.prototype.getHiddenColumns = function () {
+        return $.grep(this.columns, function (column) {
+            return !column.visible;
+        });
+    };
+
+    BootstrapTable.prototype.filterBy = function (columns) {
+        this.filterColumns = $.isEmptyObject(columns) ? {} : columns;
+        this.options.pageNumber = 1;
+        this.initSearch();
+        this.updatePagination();
+    };
+
+    BootstrapTable.prototype.scrollTo = function (value) {
+        if (typeof value === 'string') {
+            value = value === 'bottom' ? this.$tableBody[0].scrollHeight : 0;
+        }
+        if (typeof value === 'number') {
+            this.$tableBody.scrollTop(value);
+        }
+        if (typeof value === 'undefined') {
+            return this.$tableBody.scrollTop();
+        }
+    };
+
+    BootstrapTable.prototype.getScrollPosition = function () {
+        return this.scrollTo();
+    };
+
+    BootstrapTable.prototype.selectPage = function (page) {
+        if (page > 0 && page <= this.options.totalPages) {
+            this.options.pageNumber = page;
+            this.updatePagination();
+        }
+    };
+
+    BootstrapTable.prototype.prevPage = function () {
+        if (this.options.pageNumber > 1) {
+            this.options.pageNumber--;
+            this.updatePagination();
+        }
+    };
+
+    BootstrapTable.prototype.nextPage = function () {
+        if (this.options.pageNumber < this.options.totalPages) {
+            this.options.pageNumber++;
+            this.updatePagination();
+        }
+    };
+
+    BootstrapTable.prototype.toggleView = function () {
+        this.options.cardView = !this.options.cardView;
+        this.initHeader();
+        // Fixed remove toolbar when click cardView button.
+        //that.initToolbar();
+        this.initBody();
+        this.trigger('toggle', this.options.cardView);
+    };
+
+    BootstrapTable.prototype.refreshOptions = function (options) {
+        //If the objects are equivalent then avoid the call of destroy / init methods
+        if (compareObjects(this.options, options, false)) {
+            return;
+        }
+        this.options = $.extend(this.options, options);
+        this.trigger('refresh-options', this.options);
+        this.destroy();
+        this.init();
+    };
+
+    BootstrapTable.prototype.resetSearch = function (text) {
+        var $search = this.$toolbar.find('.search input');
+        $search.val(text || '');
+        this.onSearch({currentTarget: $search});
+    };
+
+    BootstrapTable.prototype.expandRow_ = function (expand, index) {
+        var $tr = this.$body.find(sprintf('> tr[data-index="%s"]', index));
+        if ($tr.next().is('tr.detail-view') === (expand ? false : true)) {
+            $tr.find('> td > .detail-icon').click();
+        }
+    };
+
+    BootstrapTable.prototype.expandRow = function (index) {
+        this.expandRow_(true, index);
+    };
+
+    BootstrapTable.prototype.collapseRow = function (index) {
+        this.expandRow_(false, index);
+    };
+
+    BootstrapTable.prototype.expandAllRows = function (isSubTable) {
+        if (isSubTable) {
+            var $tr = this.$body.find(sprintf('> tr[data-index="%s"]', 0)),
+                that = this,
+                detailIcon = null,
+                executeInterval = false,
+                idInterval = -1;
+
+            if (!$tr.next().is('tr.detail-view')) {
+                $tr.find('> td > .detail-icon').click();
+                executeInterval = true;
+            } else if (!$tr.next().next().is('tr.detail-view')) {
+                $tr.next().find(".detail-icon").click();
+                executeInterval = true;
+            }
+
+            if (executeInterval) {
+                try {
+                    idInterval = setInterval(function () {
+                        detailIcon = that.$body.find("tr.detail-view").last().find(".detail-icon");
+                        if (detailIcon.length > 0) {
+                            detailIcon.click();
+                        } else {
+                            clearInterval(idInterval);
+                        }
+                    }, 1);
+                } catch (ex) {
+                    clearInterval(idInterval);
+                }
+            }
+        } else {
+            var trs = this.$body.children();
+            for (var i = 0; i < trs.length; i++) {
+                this.expandRow_(true, $(trs[i]).data("index"));
+            }
+        }
+    };
+
+    BootstrapTable.prototype.collapseAllRows = function (isSubTable) {
+        if (isSubTable) {
+            this.expandRow_(false, 0);
+        } else {
+            var trs = this.$body.children();
+            for (var i = 0; i < trs.length; i++) {
+                this.expandRow_(false, $(trs[i]).data("index"));
+            }
+        }
+    };
+
+    // BOOTSTRAP TABLE PLUGIN DEFINITION
+    // =======================
+
+    var allowedMethods = [
+        'getOptions',
+        'getSelections', 'getAllSelections', 'getData',
+        'load', 'append', 'prepend', 'remove', 'removeAll',
+        'insertRow', 'updateRow', 'updateCell', 'updateByUniqueId', 'removeByUniqueId',
+        'getRowByUniqueId', 'showRow', 'hideRow', 'getRowsHidden',
+        'mergeCells',
+        'checkAll', 'uncheckAll',
+        'check', 'uncheck',
+        'checkBy', 'uncheckBy',
+        'refresh',
+        'resetView',
+        'resetWidth',
+        'destroy',
+        'showLoading', 'hideLoading',
+        'showColumn', 'hideColumn', 'getHiddenColumns',
+        'filterBy',
+        'scrollTo',
+        'getScrollPosition',
+        'selectPage', 'prevPage', 'nextPage',
+        'togglePagination',
+        'toggleView',
+        'refreshOptions',
+        'resetSearch',
+        'expandRow', 'collapseRow', 'expandAllRows', 'collapseAllRows'
+    ];
+
+    $.fn.bootstrapTable = function (option) {
+        var value,
+            args = Array.prototype.slice.call(arguments, 1);
+
+        this.each(function () {
+            var $this = $(this),
+                data = $this.data('bootstrap.table'),
+                options = $.extend({}, BootstrapTable.DEFAULTS, $this.data(),
+                    typeof option === 'object' && option);
+
+            if (typeof option === 'string') {
+                if ($.inArray(option, allowedMethods) < 0) {
+                    throw new Error("Unknown method: " + option);
+                }
+
+                if (!data) {
+                    return;
+                }
+
+                value = data[option].apply(data, args);
+
+                if (option === 'destroy') {
+                    $this.removeData('bootstrap.table');
+                }
+            }
+
+            if (!data) {
+                $this.data('bootstrap.table', (data = new BootstrapTable(this, options)));
+            }
+        });
+
+        return typeof value === 'undefined' ? this : value;
+    };
+
+    $.fn.bootstrapTable.Constructor = BootstrapTable;
+    $.fn.bootstrapTable.defaults = BootstrapTable.DEFAULTS;
+    $.fn.bootstrapTable.columnDefaults = BootstrapTable.COLUMN_DEFAULTS;
+    $.fn.bootstrapTable.locales = BootstrapTable.LOCALES;
+    $.fn.bootstrapTable.methods = allowedMethods;
+    $.fn.bootstrapTable.utils = {
+        sprintf: sprintf,
+        getFieldIndex: getFieldIndex,
+        compareObjects: compareObjects,
+        calculateObjectValue: calculateObjectValue
+    };
+
+    // BOOTSTRAP TABLE INIT
+    // =======================
+
+    $(function () {
+        $('[data-toggle="table"]').bootstrapTable();
+    });
+
+}(jQuery);
diff --git a/sdnc-a1-controller/oam/admportal/public/javascripts/bootstrap.min.js b/sdnc-a1-controller/oam/admportal/public/javascripts/bootstrap.min.js
new file mode 100644
index 0000000..e79c065
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/javascripts/bootstrap.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.3.6 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.6",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");
+d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.6",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/admportal/public/javascripts/dataTables.bootstrap.min.js b/sdnc-a1-controller/oam/admportal/public/javascripts/dataTables.bootstrap.min.js
new file mode 100644
index 0000000..7ae847b
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/javascripts/dataTables.bootstrap.min.js
@@ -0,0 +1,9 @@
+/*!
+ DataTables Bootstrap 3 integration
+ ©2011-2015 SpryMedia Ltd - datatables.net/license
+*/
+(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,e){a||(a=window);if(!e||!e.fn.dataTable)e=require("datatables.net")(a,e).$;return b(e,a,a.document)}:b(jQuery,window,document)})(function(b,a,e){var d=b.fn.dataTable;b.extend(!0,d.defaults,{dom:"<'row'<'col-sm-6'l><'col-sm-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-5'i><'col-sm-7'p>>",renderer:"bootstrap"});b.extend(d.ext.classes,
+{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm",sProcessing:"dataTables_processing panel panel-default"});d.ext.renderer.pageButton.bootstrap=function(a,h,r,m,j,n){var o=new d.Api(a),s=a.oClasses,k=a.oLanguage.oPaginate,t=a.oLanguage.oAria.paginate||{},f,g,p=0,q=function(d,e){var l,h,i,c,m=function(a){a.preventDefault();!b(a.currentTarget).hasClass("disabled")&&o.page()!=a.data.action&&o.page(a.data.action).draw("page")};
+l=0;for(h=e.length;l<h;l++)if(c=e[l],b.isArray(c))q(d,c);else{g=f="";switch(c){case "ellipsis":f="&#x2026;";g="disabled";break;case "first":f=k.sFirst;g=c+(0<j?"":" disabled");break;case "previous":f=k.sPrevious;g=c+(0<j?"":" disabled");break;case "next":f=k.sNext;g=c+(j<n-1?"":" disabled");break;case "last":f=k.sLast;g=c+(j<n-1?"":" disabled");break;default:f=c+1,g=j===c?"active":""}f&&(i=b("<li>",{"class":s.sPageButton+" "+g,id:0===r&&"string"===typeof c?a.sTableId+"_"+c:null}).append(b("<a>",{href:"#",
+"aria-controls":a.sTableId,"aria-label":t[c],"data-dt-idx":p,tabindex:a.iTabIndex}).html(f)).appendTo(d),a.oApi._fnBindAction(i,{action:c},m),p++)}},i;try{i=b(h).find(e.activeElement).data("dt-idx")}catch(u){}q(b(h).empty().html('<ul class="pagination"/>').children("ul"),m);i&&b(h).find("[data-dt-idx="+i+"]").focus()};d.TableTools&&(b.extend(!0,d.TableTools.classes,{container:"DTTT btn-group",buttons:{normal:"btn btn-default",disabled:"disabled"},collection:{container:"DTTT_dropdown dropdown-menu",
+buttons:{normal:"",disabled:"disabled"}},print:{info:"DTTT_print_info"},select:{row:"active"}}),b.extend(!0,d.TableTools.DEFAULTS.oTags,{collection:{container:"ul",button:"li",liner:"a"}}));return d});
diff --git a/sdnc-a1-controller/oam/admportal/public/javascripts/jquery-2.2.0.min.js b/sdnc-a1-controller/oam/admportal/public/javascripts/jquery-2.2.0.min.js
new file mode 100644
index 0000000..06ac263
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/javascripts/jquery-2.2.0.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v2.2.0 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!k.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=R.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c}catch(e){}O.set(a,b,c);
+}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=N.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function W(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&T.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var X=/^(?:checkbox|radio)$/i,Y=/<([\w:-]+)/,Z=/^$|\/(?:java|ecma)script/i,$={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return this;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.rnamespace||a.rnamespace.test(g.namespace))&&(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||d,e=c.documentElement,f=c.body,a.pageX=b.clientX+(e&&e.scrollLeft||f&&f.scrollLeft||0)-(e&&e.clientLeft||f&&f.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||f&&f.scrollTop||0)-(e&&e.clientTop||f&&f.clientTop||0)),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ea.test(f)?this.mouseHooks:da.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=d),3===a.target.nodeType&&(a.target=a.target.parentNode),h.filter?h.filter(a,g):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==ia()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===ia()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ga:ha):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:ha,isPropagationStopped:ha,isImmediatePropagationStopped:ha,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ga,a&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ga,a&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ga,a&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),n.fn.extend({on:function(a,b,c,d){return ja(this,a,b,c,d)},one:function(a,b,c,d){return ja(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=ha),this.each(function(){n.event.remove(this,a,c,b)})}});var ka=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,la=/<script|<style|<link/i,ma=/checked\s*(?:[^=]|=\s*.checked.)/i,na=/^true\/(.*)/,oa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=wa[0].contentDocument,b.write(),b.close(),c=ya(a,b),wa.detach()),xa[a]=c),c}var Aa=/^margin/,Ba=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ca=function(b){var c=b.ownerDocument.defaultView;return c.opener||(c=a),c.getComputedStyle(b)},Da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Ea=d.documentElement;!function(){var b,c,e,f,g=d.createElement("div"),h=d.createElement("div");if(h.style){h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,g.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",g.appendChild(h);function i(){h.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",h.innerHTML="",Ea.appendChild(g);var d=a.getComputedStyle(h);b="1%"!==d.top,f="2px"===d.marginLeft,c="4px"===d.width,h.style.marginRight="50%",e="4px"===d.marginRight,Ea.removeChild(g)}n.extend(l,{pixelPosition:function(){return i(),b},boxSizingReliable:function(){return null==c&&i(),c},pixelMarginRight:function(){return null==c&&i(),e},reliableMarginLeft:function(){return null==c&&i(),f},reliableMarginRight:function(){var b,c=h.appendChild(d.createElement("div"));return c.style.cssText=h.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",h.style.width="1px",Ea.appendChild(g),b=!parseFloat(a.getComputedStyle(c).marginRight),Ea.removeChild(g),h.removeChild(c),b}})}}();function Fa(a,b,c){var d,e,f,g,h=a.style;return c=c||Ca(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),!l.pixelMarginRight()&&Ba.test(g)&&Aa.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Ga(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Ha=/^(none|table(?!-c[ea]).+)/,Ia={position:"absolute",visibility:"hidden",display:"block"},Ja={letterSpacing:"0",fontWeight:"400"},Ka=["Webkit","O","Moz","ms"],La=d.createElement("div").style;function Ma(a){if(a in La)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ka.length;while(c--)if(a=Ka[c]+b,a in La)return a}function Na(a,b,c){var d=T.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Oa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Pa(b,c,e){var f=!0,g="width"===c?b.offsetWidth:b.offsetHeight,h=Ca(b),i="border-box"===n.css(b,"boxSizing",!1,h);if(d.msFullscreenElement&&a.top!==a&&b.getClientRects().length&&(g=Math.round(100*b.getBoundingClientRect()[c])),0>=g||null==g){if(g=Fa(b,c,h),(0>g||null==g)&&(g=b.style[c]),Ba.test(g))return g;f=i&&(l.boxSizingReliable()||g===b.style[c]),g=parseFloat(g)||0}return g+Oa(b,c,e||(i?"border":"content"),f,h)+"px"}function Qa(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=N.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=N.access(d,"olddisplay",za(d.nodeName)))):(e=V(d),"none"===c&&e||N.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Fa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=T.exec(c))&&e[1]&&(c=W(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Fa(a,b,d)),"normal"===e&&b in Ja&&(e=Ja[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Ha.test(n.css(a,"display"))&&0===a.offsetWidth?Da(a,Ia,function(){return Pa(a,b,d)}):Pa(a,b,d):void 0},set:function(a,c,d){var e,f=d&&Ca(a),g=d&&Oa(a,b,d,"border-box"===n.css(a,"boxSizing",!1,f),f);return g&&(e=T.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=n.css(a,b)),Na(a,c,g)}}}),n.cssHooks.marginLeft=Ga(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Fa(a,"marginLeft"))||a.getBoundingClientRect().left-Da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px":void 0}),n.cssHooks.marginRight=Ga(l.reliableMarginRight,function(a,b){return b?Da(a,{display:"inline-block"},Fa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Aa.test(a)||(n.cssHooks[a+b].set=Na)}),n.fn.extend({css:function(a,b){return K(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ca(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Qa(this,!0)},hide:function(){return Qa(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function Ra(a,b,c,d,e){return new Ra.prototype.init(a,b,c,d,e)}n.Tween=Ra,Ra.prototype={constructor:Ra,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ra.propHooks[this.prop];return a&&a.get?a.get(this):Ra.propHooks._default.get(this)},run:function(a){var b,c=Ra.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ra.propHooks._default.set(this),this}},Ra.prototype.init.prototype=Ra.prototype,Ra.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},Ra.propHooks.scrollTop=Ra.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=Ra.prototype.init,n.fx.step={};var Sa,Ta,Ua=/^(?:toggle|show|hide)$/,Va=/queueHooks$/;function Wa(){return a.setTimeout(function(){Sa=void 0}),Sa=n.now()}function Xa(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=U[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ya(a,b,c){for(var d,e=(_a.tweeners[b]||[]).concat(_a.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Za(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&V(a),q=N.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?N.get(a,"olddisplay")||za(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Ua.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?za(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=N.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;N.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ya(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function $a(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function _a(a,b,c){var d,e,f=0,g=_a.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Sa||Wa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:Sa||Wa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for($a(k,j.opts.specialEasing);g>f;f++)if(d=_a.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,Ya,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(_a,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return W(c.elem,a,T.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],_a.tweeners[c]=_a.tweeners[c]||[],_a.tweeners[c].unshift(b)},prefilters:[Za],prefilter:function(a,b){b?_a.prefilters.unshift(a):_a.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=_a(this,n.extend({},a),f);(e||N.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=N.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Va.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=N.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Xa(b,!0),a,d,e)}}),n.each({slideDown:Xa("show"),slideUp:Xa("hide"),slideToggle:Xa("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Sa=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Sa=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ta||(Ta=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(Ta),Ta=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",l.checkOn=""!==a.value,l.optSelected=c.selected,b.disabled=!0,l.optDisabled=!c.disabled,a=d.createElement("input"),a.value="t",a.type="radio",l.radioValue="t"===a.value}();var ab,bb=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return K(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ab:void 0)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)}}),ab={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=bb[b]||n.find.attr;bb[b]=function(a,b,d){var e,f;return d||(f=bb[b],bb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,bb[b]=f),e}});var cb=/^(?:input|select|textarea|button)$/i,db=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return K(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b];
+},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):cb.test(a.nodeName)||db.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var eb=/[\t\r\n\f]/g;function fb(a){return a.getAttribute&&a.getAttribute("class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,fb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,fb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,fb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(void 0===a||"boolean"===c)&&(b=fb(this),b&&N.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":N.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+fb(c)+" ").replace(eb," ").indexOf(b)>-1)return!0;return!1}});var gb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(gb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){return n.trim(a.value)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(n.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var hb=/^(?:focusinfocus|focusoutblur)$/;n.extend(n.event,{trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!hb.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),l=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},f||!o.trigger||o.trigger.apply(e,c)!==!1)){if(!f&&!o.noBubble&&!n.isWindow(e)){for(j=o.delegateType||q,hb.test(j+q)||(h=h.parentNode);h;h=h.parentNode)p.push(h),i=h;i===(e.ownerDocument||d)&&p.push(i.defaultView||i.parentWindow||a)}g=0;while((h=p[g++])&&!b.isPropagationStopped())b.type=g>1?j:o.bindType||q,m=(N.get(h,"events")||{})[b.type]&&N.get(h,"handle"),m&&m.apply(h,c),m=l&&h[l],m&&m.apply&&L(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=q,f||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!L(e)||l&&n.isFunction(e[q])&&!n.isWindow(e)&&(i=e[l],i&&(e[l]=null),n.event.triggered=q,e[q](),n.event.triggered=void 0,i&&(e[l]=i)),b.result}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}}),n.fn.extend({trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),l.focusin="onfocusin"in a,l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=N.access(d,b);e||d.addEventListener(a,c,!0),N.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=N.access(d,b)-1;e?N.access(d,b,e):(d.removeEventListener(a,c,!0),N.remove(d,b))}}});var ib=a.location,jb=n.now(),kb=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return(!c||c.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+b),c};var lb=/#.*$/,mb=/([?&])_=[^&]*/,nb=/^(.*?):[ \t]*([^\r\n]*)$/gm,ob=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,pb=/^(?:GET|HEAD)$/,qb=/^\/\//,rb={},sb={},tb="*/".concat("*"),ub=d.createElement("a");ub.href=ib.href;function vb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function wb(a,b,c,d){var e={},f=a===sb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function xb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function yb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function zb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ib.href,type:"GET",isLocal:ob.test(ib.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":tb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?xb(xb(a,n.ajaxSettings),b):xb(n.ajaxSettings,a)},ajaxPrefilter:vb(rb),ajaxTransport:vb(sb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m=n.ajaxSetup({},c),o=m.context||m,p=m.context&&(o.nodeType||o.jquery)?n(o):n.event,q=n.Deferred(),r=n.Callbacks("once memory"),s=m.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,getResponseHeader:function(a){var b;if(2===v){if(!h){h={};while(b=nb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===v?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return v||(a=u[c]=u[c]||a,t[a]=b),this},overrideMimeType:function(a){return v||(m.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>v)for(b in a)s[b]=[s[b],a[b]];else x.always(a[x.status]);return this},abort:function(a){var b=a||w;return e&&e.abort(b),z(0,b),this}};if(q.promise(x).complete=r.add,x.success=x.done,x.error=x.fail,m.url=((b||m.url||ib.href)+"").replace(lb,"").replace(qb,ib.protocol+"//"),m.type=c.method||c.type||m.method||m.type,m.dataTypes=n.trim(m.dataType||"*").toLowerCase().match(G)||[""],null==m.crossDomain){j=d.createElement("a");try{j.href=m.url,j.href=j.href,m.crossDomain=ub.protocol+"//"+ub.host!=j.protocol+"//"+j.host}catch(y){m.crossDomain=!0}}if(m.data&&m.processData&&"string"!=typeof m.data&&(m.data=n.param(m.data,m.traditional)),wb(rb,m,c,x),2===v)return x;k=n.event&&m.global,k&&0===n.active++&&n.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!pb.test(m.type),f=m.url,m.hasContent||(m.data&&(f=m.url+=(kb.test(f)?"&":"?")+m.data,delete m.data),m.cache===!1&&(m.url=mb.test(f)?f.replace(mb,"$1_="+jb++):f+(kb.test(f)?"&":"?")+"_="+jb++)),m.ifModified&&(n.lastModified[f]&&x.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&x.setRequestHeader("If-None-Match",n.etag[f])),(m.data&&m.hasContent&&m.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",m.contentType),x.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+tb+"; q=0.01":""):m.accepts["*"]);for(l in m.headers)x.setRequestHeader(l,m.headers[l]);if(m.beforeSend&&(m.beforeSend.call(o,x,m)===!1||2===v))return x.abort();w="abort";for(l in{success:1,error:1,complete:1})x[l](m[l]);if(e=wb(sb,m,c,x)){if(x.readyState=1,k&&p.trigger("ajaxSend",[x,m]),2===v)return x;m.async&&m.timeout>0&&(i=a.setTimeout(function(){x.abort("timeout")},m.timeout));try{v=1,e.send(t,z)}catch(y){if(!(2>v))throw y;z(-1,y)}}else z(-1,"No Transport");function z(b,c,d,h){var j,l,t,u,w,y=c;2!==v&&(v=2,i&&a.clearTimeout(i),e=void 0,g=h||"",x.readyState=b>0?4:0,j=b>=200&&300>b||304===b,d&&(u=yb(m,x,d)),u=zb(m,u,x,j),j?(m.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(n.lastModified[f]=w),w=x.getResponseHeader("etag"),w&&(n.etag[f]=w)),204===b||"HEAD"===m.type?y="nocontent":304===b?y="notmodified":(y=u.state,l=u.data,t=u.error,j=!t)):(t=y,(b||!y)&&(y="error",0>b&&(b=0))),x.status=b,x.statusText=(c||y)+"",j?q.resolveWith(o,[l,y,x]):q.rejectWith(o,[x,y,t]),x.statusCode(s),s=void 0,k&&p.trigger(j?"ajaxSuccess":"ajaxError",[x,m,j?l:t]),r.fireWith(o,[x,y]),k&&(p.trigger("ajaxComplete",[x,m]),--n.active||n.event.trigger("ajaxStop")))}return x},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return!n.expr.filters.visible(a)},n.expr.filters.visible=function(a){return a.offsetWidth>0||a.offsetHeight>0||a.getClientRects().length>0};var Ab=/%20/g,Bb=/\[\]$/,Cb=/\r?\n/g,Db=/^(?:submit|button|image|reset|file)$/i,Eb=/^(?:input|select|textarea|keygen)/i;function Fb(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Bb.test(a)?d(a,e):Fb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Fb(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Fb(c,a[c],b,e);return d.join("&").replace(Ab,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Eb.test(this.nodeName)&&!Db.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Cb,"\r\n")}}):{name:b.name,value:c.replace(Cb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Gb={0:200,1223:204},Hb=n.ajaxSettings.xhr();l.cors=!!Hb&&"withCredentials"in Hb,l.ajax=Hb=!!Hb,n.ajaxTransport(function(b){var c,d;return l.cors||Hb&&!b.crossDomain?{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Gb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=n("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Ib=[],Jb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Ib.pop()||n.expando+"_"+jb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Jb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Jb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Jb,"$1"+e):b.jsonp!==!1&&(b.url+=(kb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Ib.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),l.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||(l.createHTMLDocument?d.implementation.createHTMLDocument(""):d);var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ca([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var Kb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Kb)return Kb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(g,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function Lb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(e=d.getBoundingClientRect(),c=Lb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0)-a.scrollTop(),d.left+=n.css(a[0],"borderLeftWidth",!0)-a.scrollLeft()),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ea})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;n.fn[a]=function(d){return K(this,function(a,d,e){var f=Lb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ga(l.pixelPosition,function(a,c){return c?(c=Fa(a,b),Ba.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return K(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},size:function(){return this.length}}),n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Mb=a.jQuery,Nb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Nb),b&&a.jQuery===n&&(a.jQuery=Mb),n},b||(a.jQuery=a.$=n),n});
diff --git a/sdnc-a1-controller/oam/admportal/public/javascripts/jquery.dataTables.min.js b/sdnc-a1-controller/oam/admportal/public/javascripts/jquery.dataTables.min.js
new file mode 100644
index 0000000..d877804
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/javascripts/jquery.dataTables.min.js
@@ -0,0 +1,164 @@
+/*!
+ DataTables 1.10.10
+ ©2008-2015 SpryMedia Ltd - datatables.net/license
+*/
+(function(h){"function"===typeof define&&define.amd?define(["jquery"],function(E){return h(E,window,document)}):"object"===typeof exports?module.exports=function(E,H){E||(E=window);H||(H="undefined"!==typeof window?require("jquery"):require("jquery")(E));return h(H,E,E.document)}:h(jQuery,window,document)})(function(h,E,H,k){function Y(a){var b,c,d={};h.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()),
+d[c]=e,"o"===b[1]&&Y(a[e])});a._hungarianMap=d}function J(a,b,c){a._hungarianMap||Y(a);var d;h.each(b,function(e){d=a._hungarianMap[e];if(d!==k&&(c||b[d]===k))"o"===d.charAt(0)?(b[d]||(b[d]={}),h.extend(!0,b[d],b[e]),J(a[d],b[d],c)):b[d]=b[e]})}function Fa(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&F(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&F(a,a,"sZeroRecords","sLoadingRecords");
+a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&db(a)}function eb(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":"");"boolean"===typeof a.scrollX&&(a.scrollX=
+a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&J(m.models.oSearch,a[b])}function fb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;b&&!h.isArray(b)&&(a.aDataSort=[b])}function gb(a){if(!m.__browser){var b={};m.__browser=b;var c=h("<div/>").css({position:"fixed",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute",top:1,left:1,
+width:100,overflow:"scroll"}).append(h("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,m.__browser);a.oScroll.iBarWidth=m.__browser.barWidth}function hb(a,b,c,d,e,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;d!==e;)a.hasOwnProperty(d)&&
+(g=j?b(g,a[d],d,a):a[d],j=!0,d+=f);return g}function Ga(a,b){var c=m.defaults.column,d=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:H.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},m.models.oSearch,c[d]);la(a,d,h(b).data())}function la(a,b,c){var b=a.aoColumns[b],d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var f=
+(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(fb(c),J(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),F(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),F(b,c,"aDataSort"));var g=b.mData,j=Q(g),i=b.mRender?Q(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&
+(c(g.sort)||c(g.type)||c(g.filter));b.fnGetData=function(a,b,c){var d=j(a,b,k,c);return i&&b?i(d,b,a,c):d};b.fnSetData=function(a,b,c){return R(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=
+d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function U(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ha(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&Z(a);v(a,null,"column-sizing",[a])}function $(a,b){var c=aa(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function ba(a,b){var c=aa(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function ca(a){return aa(a,
+"bVisible").length}function aa(a,b){var c=[];h.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Ia(a){var b=a.aoColumns,c=a.aoData,d=m.ext.type.detect,e,f,g,j,i,h,l,q,u;e=0;for(f=b.length;e<f;e++)if(l=b[e],u=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(j=d.length;g<j;g++){i=0;for(h=c.length;i<h;i++){u[i]===k&&(u[i]=B(a,i,e,"type"));q=d[g](u[i],a);if(!q&&g!==d.length-1)break;if("html"===q)break}if(q){l.sType=q;break}}l.sType||(l.sType="string")}}function ib(a,
+b,c,d){var e,f,g,j,i,o,l=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){o=b[e];var q=o.targets!==k?o.targets:o.aTargets;h.isArray(q)||(q=[q]);f=0;for(g=q.length;f<g;f++)if("number"===typeof q[f]&&0<=q[f]){for(;l.length<=q[f];)Ga(a);d(q[f],o)}else if("number"===typeof q[f]&&0>q[f])d(l.length+q[f],o);else if("string"===typeof q[f]){j=0;for(i=l.length;j<i;j++)("_all"==q[f]||h(l[j].nTh).hasClass(q[f]))&&d(j,o)}}if(c){e=0;for(a=c.length;e<a;e++)d(e,c[e])}}function N(a,b,c,d){var e=a.aoData.length,f=h.extend(!0,
+{},m.models.oRow,{src:c?"dom":"data",idx:e});f._aData=b;a.aoData.push(f);for(var g=a.aoColumns,j=0,i=g.length;j<i;j++)g[j].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==k&&(a.aIds[b]=f);(c||!a.oFeatures.bDeferRender)&&Ja(a,e,c,d);return e}function ma(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,e){c=Ka(a,e);return N(a,c.data,e,c.cells)})}function B(a,b,c,d){var e=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,i=f.fnGetData(g,d,{settings:a,row:b,col:c});
+if(i===k)return a.iDrawError!=e&&null===j&&(K(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),j;if((i===g||null===i)&&null!==j)i=j;else if("function"===typeof i)return i.call(g);return null===i&&"display"==d?"":i}function jb(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d,{settings:a,row:b,col:c})}function La(a){return h.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\./g,".")})}function Q(a){if(h.isPlainObject(a)){var b=
+{};h.each(a,function(a,c){c&&(b[a]=Q(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==k?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,f){var g,j;if(""!==f){j=La(f);for(var i=0,o=j.length;i<o;i++){f=j[i].match(da);g=j[i].match(V);if(f){j[i]=j[i].replace(da,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=
+j.join(".");if(h.isArray(a)){i=0;for(o=a.length;i<o;i++)g.push(c(a[i],b,j))}a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(V,"");a=a[j[i]]();continue}if(null===a||a[j[i]]===k)return k;a=a[j[i]]}}return a};return function(b,e){return c(b,e,a)}}return function(b){return b[a]}}function R(a){if(h.isPlainObject(a))return R(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"===typeof a&&(-1!==a.indexOf(".")||
+-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,d,e){var e=La(e),f;f=e[e.length-1];for(var g,j,i=0,o=e.length-1;i<o;i++){g=e[i].match(da);j=e[i].match(V);if(g){e[i]=e[i].replace(da,"");a[e[i]]=[];f=e.slice();f.splice(0,i+1);g=f.join(".");if(h.isArray(d)){j=0;for(o=d.length;j<o;j++)f={},b(f,d[j],g),a[e[i]].push(f)}else a[e[i]]=d;return}j&&(e[i]=e[i].replace(V,""),a=a[e[i]](d));if(null===a[e[i]]||a[e[i]]===k)a[e[i]]={};a=a[e[i]]}if(f.match(V))a[f.replace(V,"")](d);else a[f.replace(da,"")]=
+d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Ma(a){return D(a.aoData,"_aData")}function na(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function oa(a,b,c){for(var d=-1,e=0,f=a.length;e<f;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function ea(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=
+Ka(a,e,d,d===k?k:e._aData).data;else{var j=e.anCells;if(j)if(d!==k)g(j[d],d);else{c=0;for(f=j.length;c<f;c++)g(j[c],c)}}e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==k)g[d].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;Na(a,e)}}function Ka(a,b,c,d){var e=[],f=b.firstChild,g,j,i=0,o,l=a.aoColumns,q=a._rowReadObject,d=d!==k?d:q?{}:[],u=function(a,b){if("string"===typeof a){var c=a.indexOf("@");-1!==c&&(c=a.substring(c+1),R(a)(d,b.getAttribute(c)))}},S=function(a){if(c===k||
+c===i)j=l[i],o=h.trim(a.innerHTML),j&&j._bAttrSrc?(R(j.mData._)(d,o),u(j.mData.sort,a),u(j.mData.type,a),u(j.mData.filter,a)):q?(j._setter||(j._setter=R(j.mData)),j._setter(d,o)):d[i]=o;i++};if(f)for(;f;){g=f.nodeName.toUpperCase();if("TD"==g||"TH"==g)S(f),e.push(f);f=f.nextSibling}else{e=b.anCells;f=0;for(g=e.length;f<g;f++)S(e[f])}if(b=b.firstChild?b:b.nTr)(b=b.getAttribute("id"))&&R(a.rowId)(d,b);return{data:d,cells:e}}function Ja(a,b,c,d){var e=a.aoData[b],f=e._aData,g=[],j,i,h,l,q;if(null===
+e.nTr){j=c||H.createElement("tr");e.nTr=j;e.anCells=g;j._DT_RowIndex=b;Na(a,e);l=0;for(q=a.aoColumns.length;l<q;l++){h=a.aoColumns[l];i=c?d[l]:H.createElement(h.sCellType);i._DT_CellIndex={row:b,column:l};g.push(i);if(!c||h.mRender||h.mData!==l)i.innerHTML=B(a,b,l,"display");h.sClass&&(i.className+=" "+h.sClass);h.bVisible&&!c?j.appendChild(i):!h.bVisible&&c&&i.parentNode.removeChild(i);h.fnCreatedCell&&h.fnCreatedCell.call(a.oInstance,i,B(a,b,l),f,b,l)}v(a,"aoRowCreatedCallback",null,[j,f,b])}e.nTr.setAttribute("role",
+"row")}function Na(a,b){var c=b.nTr,d=b._aData;if(c){var e=a.rowIdFn(d);e&&(c.id=e);d.DT_RowClass&&(e=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?pa(b.__rowc.concat(e)):e,h(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&h(c).attr(d.DT_RowAttr);d.DT_RowData&&h(c).data(d.DT_RowData)}}function kb(a){var b,c,d,e,f,g=a.nTHead,j=a.nTFoot,i=0===h("th, td",g).length,o=a.oClasses,l=a.aoColumns;i&&(e=h("<tr/>").appendTo(g));b=0;for(c=l.length;b<c;b++)f=l[b],d=h(f.nTh).addClass(f.sClass),
+i&&d.appendTo(e),a.oFeatures.bSort&&(d.addClass(f.sSortingClass),!1!==f.bSortable&&(d.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Oa(a,f.nTh,b))),f.sTitle!=d[0].innerHTML&&d.html(f.sTitle),Pa(a,"header")(a,d,f,o);i&&fa(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(o.sHeaderTH);h(j).find(">tr>th, >tr>td").addClass(o.sFooterTH);if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}
+function ga(a,b,c){var d,e,f,g=[],j=[],i=a.aoColumns.length,o;if(b){c===k&&(c=!1);d=0;for(e=b.length;d<e;d++){g[d]=b[d].slice();g[d].nTr=b[d].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[d].splice(f,1);j.push([])}d=0;for(e=g.length;d<e;d++){if(a=g[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[d].length;f<b;f++)if(o=i=1,j[d][f]===k){a.appendChild(g[d][f].cell);for(j[d][f]=1;g[d+i]!==k&&g[d][f].cell==g[d+i][f].cell;)j[d+i][f]=1,i++;for(;g[d][f+o]!==k&&g[d][f].cell==g[d][f+o].cell;){for(c=
+0;c<i;c++)j[d+c][f+o]=1;o++}h(g[d][f].cell).attr("rowspan",i).attr("colspan",o)}}}}function O(a){var b=v(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,d=a.asStripeClasses,e=d.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==y(a),i=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);var g=a._iDisplayStart,o=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&
+!lb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:o;for(j=j?0:g;j<f;j++){var l=i[j],q=a.aoData[l];null===q.nTr&&Ja(a,l);l=q.nTr;if(0!==e){var u=d[c%e];q._sRowStripe!=u&&(h(l).removeClass(q._sRowStripe).addClass(u),q._sRowStripe=u)}v(a,"aoRowCallback",null,[l,q._aData,c,j]);b.push(l);c++}}else c=f.sZeroRecords,1==a.iDraw&&"ajax"==y(a)?c=f.sLoadingRecords:f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":e?d[0]:""}).append(h("<td />",{valign:"top",colSpan:ca(a),
+"class":a.oClasses.sRowEmpty}).html(c))[0];v(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ma(a),g,o,i]);v(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ma(a),g,o,i]);d=h(a.nTBody);d.children().detach();d.append(h(b));v(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function T(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&mb(a);d?ha(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;O(a);a._drawHold=
+!1}function nb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),d=a.oFeatures,e=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,o,l,q,u=0;u<f.length;u++){g=null;j=f[u];if("<"==j){i=h("<div/>")[0];o=f[u+1];if("'"==o||'"'==o){l="";for(q=2;f[u+q]!=o;)l+=f[u+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(o=l.split("."),
+i.id=o[0].substr(1,o[0].length-1),i.className=o[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;u+=q}e.append(i);e=h(i)}else if(">"==j)e=e.parent();else if("l"==j&&d.bPaginate&&d.bLengthChange)g=ob(a);else if("f"==j&&d.bFilter)g=pb(a);else if("r"==j&&d.bProcessing)g=qb(a);else if("t"==j)g=rb(a);else if("i"==j&&d.bInfo)g=sb(a);else if("p"==j&&d.bPaginate)g=tb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(o=i.length;q<o;q++)if(j==i[q].cFeature){g=i[q].fnInit(a);break}}g&&
+(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),e.append(g))}c.replaceWith(e);a.nHolding=null}function fa(a,b){var c=h(b).children("tr"),d,e,f,g,j,i,o,l,q,u;a.splice(0,a.length);f=0;for(i=c.length;f<i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){d=c[f];for(e=d.firstChild;e;){if("TD"==e.nodeName.toUpperCase()||"TH"==e.nodeName.toUpperCase()){l=1*e.getAttribute("colspan");q=1*e.getAttribute("rowspan");l=!l||0===l||1===l?1:l;q=!q||0===q||1===q?1:q;g=0;for(j=a[f];j[g];)g++;o=g;u=1===l?!0:!1;for(j=0;j<l;j++)for(g=
+0;g<q;g++)a[f+g][o+j]={cell:e,unique:u},a[f+g].nTr=d}e=e.nextSibling}}}function qa(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],fa(c,b)));for(var b=0,e=c.length;b<e;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function ra(a,b,c){v(a,"aoServerParams","serverParams",[b]);if(b&&h.isArray(b)){var d={},e=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(e);c?(c=c[0],d[c]||(d[c]=[]),d[c].push(b.value)):d[b.name]=b.value});b=d}var f,g=a.ajax,
+j=a.oInstance,i=function(b){v(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var o=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&o?o:h.extend(!0,b,o);delete g.data}o={data:b,success:function(b){var c=b.error||b.sError;c&&K(a,0,c);a.json=b;i(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var d=v(a,null,"xhr",[a,null,a.jqXHR]);-1===h.inArray(!0,d)&&("parsererror"==c?K(a,0,"Invalid JSON response",1):4===b.readyState&&K(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=
+b;v(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),i,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(o,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,b,i,a):(a.jqXHR=h.ajax(h.extend(o,g)),g.data=f)}function lb(a){return a.bAjaxDataGet?(a.iDraw++,C(a,!0),ra(a,ub(a),function(b){vb(a,b)}),!1):!0}function ub(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,o,
+l,q=W(a);g=a._iDisplayStart;i=!1!==d.bPaginate?a._iDisplayLength:-1;var k=function(a,b){j.push({name:a,value:b})};k("sEcho",a.iDraw);k("iColumns",c);k("sColumns",D(b,"sName").join(","));k("iDisplayStart",g);k("iDisplayLength",i);var S={draw:a.iDraw,columns:[],order:[],start:g,length:i,search:{value:e.sSearch,regex:e.bRegex}};for(g=0;g<c;g++)o=b[g],l=f[g],i="function"==typeof o.mData?"function":o.mData,S.columns.push({data:i,name:o.sName,searchable:o.bSearchable,orderable:o.bSortable,search:{value:l.sSearch,
+regex:l.bRegex}}),k("mDataProp_"+g,i),d.bFilter&&(k("sSearch_"+g,l.sSearch),k("bRegex_"+g,l.bRegex),k("bSearchable_"+g,o.bSearchable)),d.bSort&&k("bSortable_"+g,o.bSortable);d.bFilter&&(k("sSearch",e.sSearch),k("bRegex",e.bRegex));d.bSort&&(h.each(q,function(a,b){S.order.push({column:b.col,dir:b.dir});k("iSortCol_"+a,b.col);k("sSortDir_"+a,b.dir)}),k("iSortingCols",q.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?j:S:b?j:S}function vb(a,b){var c=sa(a,b),d=b.sEcho!==k?b.sEcho:b.draw,e=
+b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(d){if(1*d<a.iDraw)return;a.iDraw=1*d}na(a);a._iRecordsTotal=parseInt(e,10);a._iRecordsDisplay=parseInt(f,10);d=0;for(e=c.length;d<e;d++)N(a,c[d]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;O(a);a._bInitComplete||ta(a,b);a.bAjaxDataGet=!0;C(a,!1)}function sa(a,b){var c=h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||
+b[c]:""!==c?Q(c)(b):b}function pb(a){var b=a.oClasses,c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=d.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),f=function(){var b=!this.value?"":this.value;b!=e.sSearch&&(ha(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,O(a))},g=null!==
+a.searchDelay?a.searchDelay:"ssp"===y(a)?400:0,i=h("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).bind("keyup.DT search.DT input.DT paste.DT cut.DT",g?ua(f,g):f).bind("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{i[0]!==H.activeElement&&i.val(e.sSearch)}catch(d){}});return b[0]}function ha(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;
+d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};Ia(a);if("ssp"!=y(a)){wb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<e.length;b++)xb(a,e[b].sSearch,b,e[b].bEscapeRegex!==k?!e[b].bEscapeRegex:e[b].bRegex,e[b].bSmart,e[b].bCaseInsensitive);yb(a)}else f(b);a.bFiltered=!0;v(a,null,"search",[a])}function yb(a){for(var b=m.ext.search,c=a.aiDisplay,d,e,f=0,g=b.length;f<g;f++){for(var j=[],i=0,o=c.length;i<o;i++)e=c[i],d=a.aoData[e],b[f](a,
+d._aFilterData,e,d._aData,i)&&j.push(e);c.length=0;h.merge(c,j)}}function xb(a,b,c,d,e,f){if(""!==b)for(var g=a.aiDisplay,d=Qa(b,d,e,f),e=g.length-1;0<=e;e--)b=a.aoData[g[e]]._aFilterData[c],d.test(b)||g.splice(e,1)}function wb(a,b,c,d,e,f){var d=Qa(b,d,e,f),e=a.oPreviousSearch.sSearch,f=a.aiDisplayMaster,g;0!==m.ext.search.length&&(c=!0);g=zb(a);if(0>=b.length)a.aiDisplay=f.slice();else{if(g||c||e.length>b.length||0!==b.indexOf(e)||a.bSorted)a.aiDisplay=f.slice();b=a.aiDisplay;for(c=b.length-1;0<=
+c;c--)d.test(a.aoData[b[c]]._sFilterRow)||b.splice(c,1)}}function Qa(a,b,c,d){a=b?a:va(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,d?"i":"")}function va(a){return a.replace(Yb,"\\$1")}function zb(a){var b=a.aoColumns,c,d,e,f,g,j,i,h,l=m.ext.type.search;c=!1;d=0;for(f=a.aoData.length;d<f;d++)if(h=a.aoData[d],!h._aFilterData){j=[];e=0;for(g=b.length;e<
+g;e++)c=b[e],c.bSearchable?(i=B(a,d,e,"filter"),l[c.sType]&&(i=l[c.sType](i)),null===i&&(i=""),"string"!==typeof i&&i.toString&&(i=i.toString())):i="",i.indexOf&&-1!==i.indexOf("&")&&(wa.innerHTML=i,i=Zb?wa.textContent:wa.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join("  ");c=!0}return c}function Ab(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function Bb(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,
+bCaseInsensitive:a.caseInsensitive}}function sb(a){var b=a.sTableId,c=a.aanFeatures.i,d=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Cb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Cb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+1,e=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&
+(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Db(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,d,e,f,g,j));h(b).html(j)}}function Db(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/
+e)))}function ia(a){var b,c,d=a.iInitDisplayStart,e=a.aoColumns,f;c=a.oFeatures;var g=a.bDeferLoading;if(a.bInitialised){nb(a);kb(a);ga(a,a.aoHeader);ga(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ha(a);b=0;for(c=e.length;b<c;b++)f=e[b],f.sWidth&&(f.nTh.style.width=w(f.sWidth));v(a,null,"preInit",[a]);T(a);e=y(a);if("ssp"!=e||g)"ajax"==e?ra(a,[],function(c){var f=sa(a,c);for(b=0;b<f.length;b++)N(a,f[b]);a.iInitDisplayStart=d;T(a);C(a,!1);ta(a,c)},a):(C(a,!1),ta(a))}else setTimeout(function(){ia(a)},200)}
+function ta(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&U(a);v(a,null,"plugin-init",[a,b]);v(a,"aoInitComplete","init",[a,b])}function Ra(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Sa(a);v(a,null,"length",[a,c])}function ob(a){for(var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=h.isArray(d[0]),f=e?d[0]:d,d=e?d[1]:d,e=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)e[0][g]=new Option(d[g],f[g]);var i=h("<div><label/></div>").addClass(b.sLength);
+a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",i).val(a._iDisplayLength).bind("change.DT",function(){Ra(a,h(this).val());O(a)});h(a.nTable).bind("length.dt.DT",function(b,c,d){a===c&&h("select",i).val(d)});return i[0]}function tb(a){var b=a.sPaginationType,c=m.ext.pager[b],d="function"===typeof c,e=function(a){O(a)},b=h("<div/>").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+
+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),k,l=0;for(k=f.p.length;l<k;l++)Pa(a,"pageButton")(a,f.p[l],l,h,b,i)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Ta(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===e?d=0:"number"===typeof b?(d=b*e,d>f&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==
+b?d+e<f&&(d+=e):"last"==b?d=Math.floor((f-1)/e)*e:K(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(v(a,null,"page",[a]),c&&O(a));return b}function qb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none");v(a,null,"processing",[a,b])}function rb(a){var b=h(a.nTable);b.attr("role",
+"grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),o=h(b[0].cloneNode(!1)),l=b.children("tfoot");l.length||(l=null);i=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:w(d):"100%"}).append(h("<div/>",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||
+"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:w(d)}).append(b));l&&i.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:w(d):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(o.removeAttr("id").css("margin-left",0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=i.children(),
+k=b[0],f=b[1],u=l?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;l&&(u.scrollLeft=a)});h(f).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=u;a.aoDrawCallback.push({fn:Z,sName:"scrolling"});return i[0]}function Z(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,j=f.children("div"),i=j[0].style,o=j.children("table"),j=a.nScrollBody,l=h(j),q=j.style,u=h(a.nScrollFoot).children("div"),
+m=u.children("table"),n=h(a.nTHead),p=h(a.nTable),t=p[0],v=t.style,r=a.nTFoot?h(a.nTFoot):null,Eb=a.oBrowser,Ua=Eb.bScrollOversize,s,L,P,x,y=[],z=[],A=[],B,C=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};L=j.scrollHeight>j.clientHeight;if(a.scrollBarVis!==L&&a.scrollBarVis!==k)a.scrollBarVis=L,U(a);else{a.scrollBarVis=L;p.children("thead, tfoot").remove();x=n.clone().prependTo(p);n=n.find("tr");L=x.find("tr");x.find("th, td").removeAttr("tabindex");
+r&&(P=r.clone().prependTo(p),s=r.find("tr"),P=P.find("tr"));c||(q.width="100%",f[0].style.width="100%");h.each(qa(a,x),function(b,c){B=$(a,b);c.style.width=a.aoColumns[B].sWidth});r&&I(function(a){a.style.width=""},P);f=p.outerWidth();if(""===c){v.width="100%";if(Ua&&(p.find("tbody").height()>j.offsetHeight||"scroll"==l.css("overflow-y")))v.width=w(p.outerWidth()-b);f=p.outerWidth()}else""!==d&&(v.width=w(d),f=p.outerWidth());I(C,L);I(function(a){A.push(a.innerHTML);y.push(w(h(a).css("width")))},
+L);I(function(a,b){a.style.width=y[b]},n);h(L).height(0);r&&(I(C,P),I(function(a){z.push(w(h(a).css("width")))},P),I(function(a,b){a.style.width=z[b]},s),h(P).height(0));I(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+A[b]+"</div>";a.style.width=y[b]},L);r&&I(function(a,b){a.innerHTML="";a.style.width=z[b]},P);if(p.outerWidth()<f){s=j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(Ua&&(j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")))v.width=
+w(s-b);(""===c||""!==d)&&K(a,1,"Possible column misalignment",6)}else s="100%";q.width=w(s);g.width=w(s);r&&(a.nScrollFoot.style.width=w(s));!e&&Ua&&(q.height=w(t.offsetHeight+b));c=p.outerWidth();o[0].style.width=w(c);i.width=w(c);d=p.height()>j.clientHeight||"scroll"==l.css("overflow-y");e="padding"+(Eb.bScrollbarLeft?"Left":"Right");i[e]=d?b+"px":"0px";r&&(m[0].style.width=w(c),u[0].style.width=w(c),u[0].style[e]=d?b+"px":"0px");l.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=
+0}}function I(a,b,c){for(var d=0,e=0,f=b.length,g,j;e<f;){g=b[e].firstChild;for(j=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,d):a(g,d),d++),g=g.nextSibling,j=c?j.nextSibling:null;e++}}function Ha(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,e=d.sY,f=d.sX,g=d.sXInner,j=c.length,i=aa(a,"bVisible"),o=h("th",a.nTHead),l=b.getAttribute("width"),k=b.parentNode,u=!1,m,n,p=a.oBrowser,d=p.bScrollOversize;(m=b.style.width)&&-1!==m.indexOf("%")&&(l=m);for(m=0;m<i.length;m++)n=c[i[m]],null!==n.sWidth&&
+(n.sWidth=Fb(n.sWidthOrig,k),u=!0);if(d||!u&&!f&&!e&&j==ca(a)&&j==o.length)for(m=0;m<j;m++)i=$(a,m),null!==i&&(c[i].sWidth=w(o.eq(m).width()));else{j=h(b).clone().css("visibility","hidden").removeAttr("id");j.find("tbody tr").remove();var t=h("<tr/>").appendTo(j.find("tbody"));j.find("thead, tfoot").remove();j.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());j.find("tfoot th, tfoot td").css("width","");o=qa(a,j.find("thead")[0]);for(m=0;m<i.length;m++)n=c[i[m]],o[m].style.width=null!==n.sWidthOrig&&
+""!==n.sWidthOrig?w(n.sWidthOrig):"",n.sWidthOrig&&f&&h(o[m]).append(h("<div/>").css({width:n.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(m=0;m<i.length;m++)u=i[m],n=c[u],h(Gb(a,u)).clone(!1).append(n.sContentPadding).appendTo(t);n=h("<div/>").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(j).appendTo(k);f&&g?j.width(g):f?(j.css("width","auto"),j.removeAttr("width"),j.width()<k.clientWidth&&l&&j.width(k.clientWidth)):e?j.width(k.clientWidth):
+l&&j.width(l);for(m=e=0;m<i.length;m++)k=h(o[m]),g=k.outerWidth()-k.width(),k=p.bBounding?Math.ceil(o[m].getBoundingClientRect().width):k.outerWidth(),e+=k,c[i[m]].sWidth=w(k-g);b.style.width=w(e);n.remove()}l&&(b.style.width=w(l));if((l||f)&&!a._reszEvt)b=function(){h(E).bind("resize.DT-"+a.sInstance,ua(function(){U(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0}function ua(a,b){var c=b!==k?b:200,d,e;return function(){var b=this,g=+new Date,j=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=
+k;a.apply(b,j)},c)):(d=g,a.apply(b,j))}}function Fb(a,b){if(!a)return 0;var c=h("<div/>").css("width",w(a)).appendTo(b||H.body),d=c[0].offsetWidth;c.remove();return d}function Gb(a,b){var c=Hb(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr?h("<td/>").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Hb(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;f<g;f++)c=B(a,f,b,"display")+"",c=c.replace($b,""),c=c.replace(/&nbsp;/g," "),c.length>d&&(d=c.length,e=f);return e}function w(a){return null===
+a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function W(a){var b,c,d=[],e=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var o=[];f=function(a){a.length&&!h.isArray(a[0])?o.push(a):h.merge(o,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<o.length;a++){i=o[a][0];f=e[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=e[g].sType||"string",o[a]._idx===k&&(o[a]._idx=h.inArray(o[a][1],e[g].asSorting)),d.push({src:i,col:g,dir:o[a][1],
+index:o[a]._idx,type:j,formatter:m.ext.type.order[j+"-pre"]})}return d}function mb(a){var b,c,d=[],e=m.ext.type.order,f=a.aoData,g=0,j,i=a.aiDisplayMaster,h;Ia(a);h=W(a);b=0;for(c=h.length;b<c;b++)j=h[b],j.formatter&&g++,Ib(a,j.col);if("ssp"!=y(a)&&0!==h.length){b=0;for(c=i.length;b<c;b++)d[i[b]]=b;g===h.length?i.sort(function(a,b){var c,e,g,j,i=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g=0;g<i;g++)if(j=h[g],c=k[j.col],e=m[j.col],c=c<e?-1:c>e?1:0,0!==c)return"asc"===j.dir?c:-c;c=d[a];e=d[b];
+return c<e?-1:c>e?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,p=f[b]._aSortData;for(j=0;j<k;j++)if(i=h[j],c=m[i.col],g=p[i.col],i=e[i.type+"-"+i.dir]||e["string-"+i.dir],c=i(c,g),0!==c)return c;c=d[a];g=d[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Jb(a){for(var b,c,d=a.aoColumns,e=W(a),a=a.oLanguage.oAria,f=0,g=d.length;f<g;f++){c=d[f];var j=c.asSorting;b=c.sTitle.replace(/<.*?>/g,"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<e.length&&e[0].col==f?(i.setAttribute("aria-sort",
+"asc"==e[0].dir?"ascending":"descending"),c=j[e[0].index+1]||j[0]):c=j[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label",b)}}function Va(a,b,c,d){var e=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,D(e,"0")),-1!==c?(b=g(e[c],!0),null===b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=f[b],e[c]._idx=
+b)):(e.push([b,f[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=f[b],e[0]._idx=b):(e.length=0,e.push([b,f[0]]),e[0]._idx=0);T(a);"function"==typeof d&&d(a)}function Oa(a,b,c,d){var e=a.aoColumns[c];Wa(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Va(a,c,b.shiftKey,d);"ssp"!==y(a)&&C(a,!1)},0)):Va(a,c,b.shiftKey,d))})}function xa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=W(a),e=a.oFeatures,f,g;if(e.bSort&&e.bSortClasses){e=
+0;for(f=b.length;e<f;e++)g=b[e].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3));e=0;for(f=d.length;e<f;e++)g=d[e].src,h(D(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Ib(a,b){var c=a.aoColumns[b],d=m.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,ba(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j<i;j++)if(c=a.aoData[j],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)f=d?e[j]:B(a,j,b,"sort"),c._aSortData[b]=g?g(f):f}function ya(a){if(a.oFeatures.bStateSave&&
+!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),search:Ab(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:Ab(a.aoPreSearchCols[d])}})};v(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Kb(a){var b,c,d=a.aoColumns;if(a.oFeatures.bStateSave){var e=a.fnStateLoadCallback.call(a.oInstance,a);if(e&&e.time&&(b=v(a,"aoStateLoadParams",
+"stateLoadParams",[a,e]),-1===h.inArray(!1,b)&&(b=a.iStateDuration,!(0<b&&e.time<+new Date-1E3*b)&&d.length===e.columns.length))){a.oLoadedState=h.extend(!0,{},e);e.start!==k&&(a._iDisplayStart=e.start,a.iInitDisplayStart=e.start);e.length!==k&&(a._iDisplayLength=e.length);e.order!==k&&(a.aaSorting=[],h.each(e.order,function(b,c){a.aaSorting.push(c[0]>=d.length?[0,c[1]]:c)}));e.search!==k&&h.extend(a.oPreviousSearch,Bb(e.search));b=0;for(c=e.columns.length;b<c;b++){var f=e.columns[b];f.visible!==
+k&&(d[b].bVisible=f.visible);f.search!==k&&h.extend(a.aoPreSearchCols[b],Bb(f.search))}v(a,"aoStateLoaded","stateLoaded",[a,e])}}}function za(a){var b=m.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function K(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)E.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,a&&v(a,null,"error",[a,d,c]),"alert"==
+b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function F(a,b,c,d){h.isArray(c)?h.each(c,function(c,d){h.isArray(d)?F(a,b,d[0],d[1]):F(a,b,d)}):(d===k&&(d=c),b[c]!==k&&(a[d]=b[c]))}function Lb(a,b,c){var d,e;for(e in b)b.hasOwnProperty(e)&&(d=b[e],h.isPlainObject(d)?(h.isPlainObject(a[e])||(a[e]={}),h.extend(!0,a[e],d)):a[e]=c&&"data"!==e&&"aaData"!==e&&h.isArray(d)?d.slice():d);return a}function Wa(a,b,c){h(a).bind("click.DT",b,function(b){a.blur();c(b)}).bind("keypress.DT",
+b,function(a){13===a.which&&(a.preventDefault(),c(a))}).bind("selectstart.DT",function(){return!1})}function z(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function v(a,b,c,d){var e=[];b&&(e=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=h.Event(c+".dt"),h(a.nTable).trigger(b,d),e.push(b.result));return e}function Sa(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=
+a.renderer,d=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===typeof c?d[c]||d._:d._}function y(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Aa(a,b){var c=[],c=Mb.numbers_length,d=Math.floor(c/2);b<=c?c=X(0,b):a<=d?(c=X(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=X(b-(c-2),b):(c=X(a-d+2,a+d-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function db(a){h.each({num:function(b){return Ba(b,
+a)},"num-fmt":function(b){return Ba(b,a,Xa)},"html-num":function(b){return Ba(b,a,Ca)},"html-num-fmt":function(b){return Ba(b,a,Ca,Xa)}},function(b,c){s.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(s.type.search[b+a]=s.type.search.html)})}function Nb(a){return function(){var b=[za(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m,s,t,p,r,Ya={},Ob=/[\r\n]/g,Ca=/<.*?>/g,ac=/^[\w\+\-]/,bc=/[\w\+\-]$/,Yb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)",
+"g"),Xa=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,M=function(a){return!a||!0===a||"-"===a?!0:!1},Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb=function(a,b){Ya[b]||(Ya[b]=RegExp(va(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Ya[b],"."):a},Za=function(a,b,c){var d="string"===typeof a;if(M(a))return!0;b&&d&&(a=Qb(a,b));c&&d&&(a=a.replace(Xa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Rb=function(a,b,c){return M(a)?!0:!(M(a)||"string"===
+typeof a)?null:Za(a.replace(Ca,""),b,c)?!0:null},D=function(a,b,c){var d=[],e=0,f=a.length;if(c!==k)for(;e<f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<f;e++)a[e]&&d.push(a[e][b]);return d},ja=function(a,b,c,d){var e=[],f=0,g=b.length;if(d!==k)for(;f<g;f++)a[b[f]][c]&&e.push(a[b[f]][c][d]);else for(;f<g;f++)e.push(a[b[f]][c]);return e},X=function(a,b){var c=[],d;b===k?(b=0,d=a):(d=b,b=a);for(var e=b;e<d;e++)c.push(e);return c},Sb=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);
+return b},pa=function(a){var b=[],c,d,e=a.length,f,g=0;d=0;a:for(;d<e;d++){c=a[d];for(f=0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b},A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},da=/\[.*?\]$/,V=/\(\)$/,wa=h("<div>")[0],Zb=wa.textContent!==k,$b=/<.*?>/g;m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new t(za(this[s.iApiIndex])):new t(this)};this.fnAddData=function(a,b){var c=this.api(!0),
+d=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===k||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&Z(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],
+h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===k||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===k?e.search(a,c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};
+this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);
+(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return za(this[s.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===k||e)&&h.columns.adjust();(d===k||d)&&h.draw();return 0};this.fnVersionCheck=
+s.fnVersionCheck;var b=this,c=a===k,d=this.length;c&&(a={});this.oApi=this.internal=s.internal;for(var e in m.ext.internal)e&&(this[e]=Nb(e));this.each(function(){var e={},e=1<d?Lb(e,a,!0):a,g=0,j,i=this.getAttribute("id"),o=!1,l=m.defaults,q=h(this);if("table"!=this.nodeName.toLowerCase())K(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{eb(l);fb(l.column);J(l,l,!0);J(l.column,l.column,!0);J(l,h.extend(e,q.data()));var u=m.settings,g=0;for(j=u.length;g<j;g++){var p=u[g];if(p.nTable==
+this||p.nTHead.parentNode==this||p.nTFoot&&p.nTFoot.parentNode==this){g=e.bRetrieve!==k?e.bRetrieve:l.bRetrieve;if(c||g)return p.oInstance;if(e.bDestroy!==k?e.bDestroy:l.bDestroy){p.oInstance.fnDestroy();break}else{K(p,0,"Cannot reinitialise DataTable",3);return}}if(p.sTableId==this.id){u.splice(g,1);break}}if(null===i||""===i)this.id=i="DataTables_Table_"+m.ext._unique++;var n=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:q[0].style.width,sInstance:i,sTableId:i});n.nTable=this;n.oApi=b.internal;
+n.oInit=e;u.push(n);n.oInstance=1===b.length?b:q.dataTable();eb(e);e.oLanguage&&Fa(e.oLanguage);e.aLengthMenu&&!e.iDisplayLength&&(e.iDisplayLength=h.isArray(e.aLengthMenu[0])?e.aLengthMenu[0][0]:e.aLengthMenu[0]);e=Lb(h.extend(!0,{},l),e);F(n.oFeatures,e,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));F(n,e,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu",
+"sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);F(n.oScroll,e,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);F(n.oLanguage,e,"fnInfoCallback");z(n,"aoDrawCallback",
+e.fnDrawCallback,"user");z(n,"aoServerParams",e.fnServerParams,"user");z(n,"aoStateSaveParams",e.fnStateSaveParams,"user");z(n,"aoStateLoadParams",e.fnStateLoadParams,"user");z(n,"aoStateLoaded",e.fnStateLoaded,"user");z(n,"aoRowCallback",e.fnRowCallback,"user");z(n,"aoRowCreatedCallback",e.fnCreatedRow,"user");z(n,"aoHeaderCallback",e.fnHeaderCallback,"user");z(n,"aoFooterCallback",e.fnFooterCallback,"user");z(n,"aoInitComplete",e.fnInitComplete,"user");z(n,"aoPreDrawCallback",e.fnPreDrawCallback,
+"user");n.rowIdFn=Q(e.rowId);gb(n);i=n.oClasses;e.bJQueryUI?(h.extend(i,m.ext.oJUIClasses,e.oClasses),e.sDom===l.sDom&&"lfrtip"===l.sDom&&(n.sDom='<"H"lfr>t<"F"ip>'),n.renderer)?h.isPlainObject(n.renderer)&&!n.renderer.header&&(n.renderer.header="jqueryui"):n.renderer="jqueryui":h.extend(i,m.ext.classes,e.oClasses);q.addClass(i.sTable);n.iInitDisplayStart===k&&(n.iInitDisplayStart=e.iDisplayStart,n._iDisplayStart=e.iDisplayStart);null!==e.iDeferLoading&&(n.bDeferLoading=!0,g=h.isArray(e.iDeferLoading),
+n._iRecordsDisplay=g?e.iDeferLoading[0]:e.iDeferLoading,n._iRecordsTotal=g?e.iDeferLoading[1]:e.iDeferLoading);var t=n.oLanguage;h.extend(!0,t,e.oLanguage);""!==t.sUrl&&(h.ajax({dataType:"json",url:t.sUrl,success:function(a){Fa(a);J(l.oLanguage,a);h.extend(true,t,a);ia(n)},error:function(){ia(n)}}),o=!0);null===e.asStripeClasses&&(n.asStripeClasses=[i.sStripeOdd,i.sStripeEven]);var g=n.asStripeClasses,r=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(g,function(a){return r.hasClass(a)}))&&
+(h("tbody tr",this).removeClass(g.join(" ")),n.asDestroyStripes=g.slice());u=[];g=this.getElementsByTagName("thead");0!==g.length&&(fa(n.aoHeader,g[0]),u=qa(n));if(null===e.aoColumns){p=[];g=0;for(j=u.length;g<j;g++)p.push(null)}else p=e.aoColumns;g=0;for(j=p.length;g<j;g++)Ga(n,u?u[g]:null);ib(n,e.aoColumnDefs,p,function(a,b){la(n,a,b)});if(r.length){var s=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h(r[0]).children("th, td").each(function(a,b){var c=n.aoColumns[a];if(c.mData===
+a){var d=s(b,"sort")||s(b,"order"),e=s(b,"filter")||s(b,"search");if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};la(n,a)}}})}var w=n.oFeatures;e.bStateSave&&(w.bStateSave=!0,Kb(n,e),z(n,"aoDrawCallback",ya,"state_save"));if(e.aaSorting===k){u=n.aaSorting;g=0;for(j=u.length;g<j;g++)u[g][1]=n.aoColumns[g].asSorting[0]}xa(n);w.bSort&&z(n,"aoDrawCallback",function(){if(n.bSorted){var a=W(n),b={};h.each(a,function(a,
+c){b[c.src]=c.dir});v(n,null,"order",[n,a,b]);Jb(n)}});z(n,"aoDrawCallback",function(){(n.bSorted||y(n)==="ssp"||w.bDeferRender)&&xa(n)},"sc");g=q.children("caption").each(function(){this._captionSide=q.css("caption-side")});j=q.children("thead");0===j.length&&(j=h("<thead/>").appendTo(this));n.nTHead=j[0];j=q.children("tbody");0===j.length&&(j=h("<tbody/>").appendTo(this));n.nTBody=j[0];j=q.children("tfoot");if(0===j.length&&0<g.length&&(""!==n.oScroll.sX||""!==n.oScroll.sY))j=h("<tfoot/>").appendTo(this);
+0===j.length||0===j.children().length?q.addClass(i.sNoFooter):0<j.length&&(n.nTFoot=j[0],fa(n.aoFooter,n.nTFoot));if(e.aaData)for(g=0;g<e.aaData.length;g++)N(n,e.aaData[g]);else(n.bDeferLoading||"dom"==y(n))&&ma(n,h(n.nTBody).children("tr"));n.aiDisplay=n.aiDisplayMaster.slice();n.bInitialised=!0;!1===o&&ia(n)}});b=null;return this};var Tb=[],x=Array.prototype,cc=function(a){var b,c,d=m.settings,e=h.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=
+h.inArray(a,e),-1!==b?[d[b]]:null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,e);return-1!==b?d[b]:null}).toArray()};t=function(a,b){if(!(this instanceof t))return new t(a,b);var c=[],d=function(a){(a=cc(a))&&(c=c.concat(a))};if(h.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);else d(a);this.context=pa(c);b&&h.merge(this,b);this.selector={rows:null,cols:null,opts:null};
+t.extend(this,this,Tb)};m.Api=t;h.extend(t.prototype,{any:function(){return 0!==this.count()},concat:x.concat,context:[],count:function(){return this.flatten().length},each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new t(b[a],this[a]):null},filter:function(a){var b=[];if(x.filter)b=x.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new t(this.context,
+b)},flatten:function(){var a=[];return new t(this.context,a.concat.apply(a,this.toArray()))},join:x.join,indexOf:x.indexOf||function(a,b){for(var c=b||0,d=this.length;c<d;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,d){var e=[],f,g,h,i,o,l=this.context,m,p,r=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);g=0;for(h=l.length;g<h;g++){var n=new t(l[g]);if("table"===b)f=c.call(n,l[g],g),f!==k&&e.push(f);else if("columns"===b||"rows"===b)f=c.call(n,l[g],this[g],g),f!==k&&e.push(f);
+else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){p=this[g];"column-rows"===b&&(m=Da(l[g],r.opts));i=0;for(o=p.length;i<o;i++)f=p[i],f="cell"===b?c.call(n,l[g],f.row,f.column,g,i):c.call(n,l[g],f,g,i,m),f!==k&&e.push(f)}}return e.length||d?(a=new t(l,a?e.concat.apply([],e):e),b=a.selector,b.rows=r.rows,b.cols=r.cols,b.opts=r.opts,a):this},lastIndexOf:x.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(x.map)b=
+x.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new t(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:x.pop,push:x.push,reduce:x.reduce||function(a,b){return hb(this,a,b,0,this.length,1)},reduceRight:x.reduceRight||function(a,b){return hb(this,a,b,this.length-1,-1,-1)},reverse:x.reverse,selector:null,shift:x.shift,sort:x.sort,splice:x.splice,toArray:function(){return x.slice.call(this)},to$:function(){return h(this)},
+toJQuery:function(){return h(this)},unique:function(){return new t(this.context,pa(this))},unshift:x.unshift});t.extend=function(a,b,c){if(c.length&&b&&(b instanceof t||b.__dt_wrapper)){var d,e,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);t.extend(d,d,c.methodExt);return d}};d=0;for(e=c.length;d<e;d++)f=c[d],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,t.extend(a,b[f.name],f.propExt)}};t.register=p=function(a,b){if(h.isArray(a))for(var c=
+0,d=a.length;c<d;c++)t.register(a[c],b);else for(var e=a.split("."),f=Tb,g,j,c=0,d=e.length;c<d;c++){g=(j=-1!==e[c].indexOf("()"))?e[c].replace("()",""):e[c];var i;a:{i=0;for(var k=f.length;i<k;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===d-1?i.val=b:f=j?i.methodExt:i.propExt}};t.registerPlural=r=function(a,b,c){t.register(a,c);t.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof t?a.length?h.isArray(a[0])?
+new t(a.context,a[0]):a[0]:k:a})};p("tables()",function(a){var b;if(a){b=t;var c=this.context;if("number"===typeof a)a=[c[a]];else var d=h.map(c,function(a){return a.nTable}),a=h(d).filter(a).map(function(){var a=h.inArray(this,d);return c[a]}).toArray();b=new b(a)}else b=this;return b});p("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new t(b[0]):a});r("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});r("tables().body()",
+"table().body()",function(){return this.iterator("table",function(a){return a.nTBody},1)});r("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});r("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});r("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});p("draw()",function(a){return this.iterator("table",
+function(b){"page"===a?O(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),T(b,!1===a))})});p("page()",function(a){return a===k?this.page.info().page:this.iterator("table",function(b){Ta(b,a)})});p("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),
+recordsDisplay:d,serverSide:"ssp"===y(a)}});p("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength:k:this.iterator("table",function(b){Ra(b,a)})});var Ub=function(a,b,c){if(c){var d=new t(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==y(a))T(a,b);else{C(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();ra(a,[],function(c){na(a);for(var c=sa(a,c),d=0,e=c.length;d<e;d++)N(a,c[d]);T(a,b);C(a,!1)})}};p("ajax.json()",function(){var a=this.context;if(0<
+a.length)return a[0].json});p("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});p("ajax.reload()",function(a,b){return this.iterator("table",function(c){Ub(c,!1===b,a)})});p("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});p("ajax.url().load()",function(a,b){return this.iterator("table",
+function(c){Ub(c,!1===b,a)})});var $a=function(a,b,c,d,e){var f=[],g,j,i,o,l,m;i=typeof b;if(!b||"string"===i||"function"===i||b.length===k)b=[b];i=0;for(o=b.length;i<o;i++){j=b[i]&&b[i].split?b[i].split(","):[b[i]];l=0;for(m=j.length;l<m;l++)(g=c("string"===typeof j[l]?h.trim(j[l]):j[l]))&&g.length&&(f=f.concat(g))}a=s.selector[a];if(a.length){i=0;for(o=a.length;i<o;i++)f=a[i](d,e,f)}return pa(f)},ab=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",
+order:"current",page:"all"},a)},bb=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Da=function(a,b){var c,d,e,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;d=b.order;e=b.page;if("ssp"==y(a))return"removed"===j?[]:X(0,c.length);if("current"==e){c=a._iDisplayStart;for(d=a.fnDisplayEnd();c<d;c++)f.push(g[c])}else if("current"==d||"applied"==d)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,
+function(a){return-1===h.inArray(a,g)?a:null});else if("index"==d||"original"==d){c=0;for(d=a.aoData.length;c<d;c++)"none"==j?f.push(c):(e=h.inArray(c,g),(-1===e&&"removed"==j||0<=e&&"applied"==j)&&f.push(c))}return f};p("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var e=b;return $a("row",a,function(a){var b=Pb(a);if(b!==null&&!e)return[b];var j=Da(c,e);if(b!==null&&h.inArray(b,j)!==-1)return[b];if(!a)return j;if(typeof a==="function")return h.map(j,
+function(b){var e=c.aoData[b];return a(b,e._aData,e.nTr)?b:null});b=Sb(ja(c.aoData,j,"nTr"));if(a.nodeName&&h.inArray(a,b)!==-1)return[a._DT_RowIndex];if(typeof a==="string"&&a.charAt(0)==="#"){j=c.aIds[a.replace(/^#/,"")];if(j!==k)return[j.idx]}return h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},c,e)},1);c.selector.rows=a;c.selector.opts=b;return c});p("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||k},1)});p("rows().data()",function(){return this.iterator(!0,
+"rows",function(a,b){return ja(a.aoData,b,"_aData")},1)});r("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return"search"===a?d._aFilterData:d._aSortData},1)});r("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){ea(b,c,a)})});r("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});r("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,
+d=0,e=c.length;d<e;d++)for(var f=0,g=this[d].length;f<g;f++){var h=c[d].rowIdFn(c[d].aoData[this[d][f]]._aData);b.push((!0===a?"#":"")+h)}return new t(c,b)});r("rows().remove()","row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,f=e[c],g,h,i,o,l;e.splice(c,1);g=0;for(h=e.length;g<h;g++)if(i=e[g],l=i.anCells,null!==i.nTr&&(i.nTr._DT_RowIndex=g),null!==l){i=0;for(o=l.length;i<o;i++)l[i]._DT_CellIndex.row=g}oa(b.aiDisplayMaster,c);oa(b.aiDisplay,c);oa(a[d],c,!1);
+Sa(b);c=b.rowIdFn(f._aData);c!==k&&delete b.aIds[c]});this.iterator("table",function(a){for(var c=0,d=a.aoData.length;c<d;c++)a.aoData[c].idx=c});return this});p("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ma(b,c)[0]):h.push(N(b,c));return h},1),c=this.rows(-1);c.pop();h.merge(c,b);return c});p("row()",function(a,b){return bb(this.rows(a,b))});p("row().data()",function(a){var b=
+this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;ea(b[0],this[0],"data");return this});p("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});p("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:N(b,a)});return this.row(b[0])});var cb=function(a,b){var c=a.context;if(c.length&&
+(c=c[0].aoData[b!==k?b:a[0]])&&c._details)c._details.remove(),c._detailsShow=k,c._details=k},Vb=function(a,b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];if(d._details){(d._detailsShow=b)?d._details.insertAfter(d.nTr):d._details.detach();var e=c[0],f=new t(e),g=e.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(g,"_details").length&&(f.on("draw.dt.DT_details",function(a,b){e===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];
+a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(e===b)for(var c,d=ca(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",d)}),f.on("destroy.dt.DT_details",function(a,b){if(e===b)for(var c=0,d=g.length;c<d;c++)g[c]._details&&cb(f,c)}))}}};p("row().child()",function(a,b){var c=this.context;if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===
+a)cb(this);else if(c.length&&this.length){var d=c[0],c=c[0].aoData[this[0]],e=[],f=function(a,b){if(h.isArray(a)||a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?e.push(a):(c=h("<tr><td/></tr>").addClass(b),h("td",c).addClass(b).html(a)[0].colSpan=ca(d),e.push(c[0]))};f(a,b);c._details&&c._details.remove();c._details=h(e);c._detailsShow&&c._details.insertAfter(c.nTr)}return this});p(["row().child.show()","row().child().show()"],function(){Vb(this,
+!0);return this});p(["row().child.hide()","row().child().hide()"],function(){Vb(this,!1);return this});p(["row().child.remove()","row().child().remove()"],function(){cb(this);return this});p("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var dc=/^(.+):(name|visIdx|visible)$/,Wb=function(a,b,c,d,e){for(var c=[],d=0,f=e.length;d<f;d++)c.push(B(a,e[d],b));return c};p("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&
+(b=a,a="");var b=ab(b),c=this.iterator("table",function(c){var e=a,f=b,g=c.aoColumns,j=D(g,"sName"),i=D(g,"nTh");return $a("column",e,function(a){var b=Pb(a);if(a==="")return X(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var e=Da(c,f);return h.map(g,function(b,f){return a(f,Wb(c,f,0,0,e),i[f])?f:null})}var k=typeof a==="string"?a.match(dc):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});
+return[m[m.length+b]]}return[$(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null})}else return h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray()},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});r("columns().header()","column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});r("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});r("columns().data()",
+"column().data()",function(){return this.iterator("column-rows",Wb,1)});r("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});r("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return ja(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});r("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ja(a.aoData,
+e,"anCells",b)},1)});r("columns().visible()","column().visible()",function(a,b){return this.iterator("column",function(c,d){if(a===k)return c.aoColumns[d].bVisible;var e=c.aoColumns,f=e[d],g=c.aoData,j,i,m;if(a!==k&&f.bVisible!==a){if(a){var l=h.inArray(!0,D(e,"bVisible"),d+1);j=0;for(i=g.length;j<i;j++)m=g[j].nTr,e=g[j].anCells,m&&m.insertBefore(e[d],e[l]||null)}else h(D(c.aoData,"anCells",d)).detach();f.bVisible=a;ga(c,c.aoHeader);ga(c,c.aoFooter);if(b===k||b)U(c),(c.oScroll.sX||c.oScroll.sY)&&
+Z(c);v(c,null,"column-visibility",[c,d,a,b]);ya(c)}})});r("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?ba(b,c):c},1)});p("columns.adjust()",function(){return this.iterator("table",function(a){U(a)},1)});p("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return $(c,b);if("fromData"===a||"toVisible"===a)return ba(c,b)}});p("column()",function(a,b){return bb(this.columns(a,
+b))});p("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",function(b){var d=a,e=ab(c),f=b.aoData,g=Da(b,e),j=Sb(ja(f,g,"anCells")),i=h([].concat.apply([],j)),l,m=b.aoColumns.length,o,p,t,r,s,v;return $a("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){o=[];p=0;for(t=g.length;p<t;p++){l=g[p];for(r=0;r<m;r++){s={row:l,column:r};if(c){v=f[l];a(s,B(b,l,r),v.anCells?
+v.anCells[r]:null)&&o.push(s)}else o.push(s)}}return o}return h.isPlainObject(a)?[a]:i.filter(a).map(function(a,b){return{row:b._DT_CellIndex.row,column:b._DT_CellIndex.column}}).toArray()},b,e)});var d=this.columns(b,c),e=this.rows(a,c),f,g,j,i,m,l=this.iterator("table",function(a,b){f=[];g=0;for(j=e[b].length;g<j;g++){i=0;for(m=d[b].length;i<m;i++)f.push({row:e[b][g],column:d[b][i]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});r("cells().nodes()","cell().node()",function(){return this.iterator("cell",
+function(a,b,c){return(a=a.aoData[b].anCells)?a[c]:k},1)});p("cells().data()",function(){return this.iterator("cell",function(a,b,c){return B(a,b,c)},1)});r("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});r("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return B(b,c,d,a)},1)});r("cells().indexes()","cell().index()",function(){return this.iterator("cell",
+function(a,b,c){return{row:b,column:c,columnVisible:ba(a,c)}},1)});r("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){ea(b,c,a,d)})});p("cell()",function(a,b,c){return bb(this.cells(a,b,c))});p("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?B(b[0],c[0].row,c[0].column):k;jb(b[0],c[0].row,c[0].column,a);ea(b[0],c[0].row,"data",c[0].column);return this});p("order()",function(a,b){var c=this.context;if(a===
+k)return 0!==c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:h.isArray(a[0])||(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});p("order.listener()",function(a,b,c){return this.iterator("table",function(d){Oa(d,a,b,c)})});p("order.fixed()",function(a){if(!a){var b=this.context,b=b.length?b[0].aaSortingFixed:k;return h.isArray(b)?{pre:b}:b}return this.iterator("table",function(b){b.aaSortingFixed=h.extend(!0,{},a)})});p(["columns().order()",
+"column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];h.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});p("search()",function(a,b,c,d){var e=this.context;return a===k?0!==e.length?e[0].oPreviousSearch.sSearch:k:this.iterator("table",function(e){e.oFeatures.bFilter&&ha(e,h.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});r("columns().search()","column().search()",function(a,
+b,c,d){return this.iterator("column",function(e,f){var g=e.aoPreSearchCols;if(a===k)return g[f].sSearch;e.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),ha(e,e.oPreviousSearch,1))})});p("state()",function(){return this.context.length?this.context[0].oSavedState:null});p("state.clear()",function(){return this.iterator("table",function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});p("state.loaded()",function(){return this.context.length?
+this.context[0].oLoadedState:null});p("state.save()",function(){return this.iterator("table",function(a){ya(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;h.each(m.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot?h("table",e.nScrollFoot)[0]:
+null;if(e.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){var b=!1;h.isPlainObject(a)&&(b=a.api,a=a.visible);var c=h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable});return b?new t(c):c};m.util={throttle:ua,escapeRegex:va};m.camelToHungarian=J;p("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){p(b+"()",function(){var a=Array.prototype.slice.call(arguments);
+a[0].match(/\.dt\b/)||(a[0]+=".dt");var d=h(this.tables().nodes());d[b].apply(d,a);return this})});p("clear()",function(){return this.iterator("table",function(a){na(a)})});p("settings()",function(){return new t(this.context,this.context)});p("init()",function(){var a=this.context;return a.length?a[0].oInit:null});p("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});p("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=
+b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(e),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),p;b.bDestroying=!0;v(b,"aoDestroyCallback","destroy",[b]);a||(new t(b)).columns().visible(!0);k.unbind(".DT").find(":not(tbody *)").unbind(".DT");h(E).unbind(".DT-"+b.sInstance);e!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&e!=j.parentNode&&(i.children("tfoot").detach(),i.append(j));b.aaSorting=[];b.aaSortingFixed=[];xa(b);
+h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);b.bJUI&&(h("th span."+d.sSortIcon+", td span."+d.sSortIcon,g).detach(),h("th, td",g).each(function(){var a=h("div."+d.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));f.children().detach();f.append(l);g=a?"remove":"detach";i[g]();k[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),i.css("width",b.sDestroyWidth).removeClass(d.sTable),(p=
+b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%p])}));c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,1)})});h.each(["column","row","cell"],function(a,b){p(b+"s().every()",function(a){var d=this.selector.opts,e=this;return this.iterator(b,function(f,g,h,i,m){a.call(e[b](g,"cell"===b?h:d,"cell"===b?d:k),g,h,i,m)})})});p("i18n()",function(a,b,c){var d=this.context[0],a=Q(a)(d.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);
+return a.replace("%d",c)});m.version="1.10.10";m.settings=[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,
+sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,
+bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+
+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},
+oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},
+m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};Y(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};
+Y(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],
+aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",
+iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==y(this)?
+1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==y(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};
+m.ext=s={buttons:{},classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(s,{afnFiltering:s.search,aTypes:s.type.detect,ofnSearch:s.type.search,oSort:s.type.order,afnSortData:s.order,aoFeatures:s.feature,oApi:s.internal,oStdClasses:s.classes,
+oPagination:s.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",
+sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",
+sJUIHeader:"",sJUIFooter:""});var Ea="",Ea="",G=Ea+"ui-state-default",ka=Ea+"css_right ui-icon ui-icon-",Xb=Ea+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";h.extend(m.ext.oJUIClasses,m.ext.classes,{sPageButton:"fg-button ui-button "+G,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:G+" sorting_asc",sSortDesc:G+" sorting_desc",sSortable:G+" sorting",
+sSortableAsc:G+" sorting_asc_disabled",sSortableDesc:G+" sorting_desc_disabled",sSortableNone:G+" sorting_disabled",sSortJUIAsc:ka+"triangle-1-n",sSortJUIDesc:ka+"triangle-1-s",sSortJUI:ka+"carat-2-n-s",sSortJUIAscAllowed:ka+"carat-1-n",sSortJUIDescAllowed:ka+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+G,sScrollFoot:"dataTables_scrollFoot "+G,sHeaderTH:G,sFooterTH:G,sJUIHeader:Xb+" ui-corner-tl ui-corner-tr",sJUIFooter:Xb+
+" ui-corner-bl ui-corner-br"});var Mb=m.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[Aa(a,b)]},simple_numbers:function(a,b){return["previous",Aa(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Aa(a,b),"next","last"]},_numbers:Aa,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i=a.oLanguage.oAria.paginate||
+{},k,l,m=0,p=function(b,d){var n,r,t,s,v=function(b){Ta(a,b.data.action,true)};n=0;for(r=d.length;n<r;n++){s=d[n];if(h.isArray(s)){t=h("<"+(s.DT_el||"div")+"/>").appendTo(b);p(t,s)}else{k=null;l="";switch(s){case "ellipsis":b.append('<span class="ellipsis">&#x2026;</span>');break;case "first":k=j.sFirst;l=s+(e>0?"":" "+g.sPageButtonDisabled);break;case "previous":k=j.sPrevious;l=s+(e>0?"":" "+g.sPageButtonDisabled);break;case "next":k=j.sNext;l=s+(e<f-1?"":" "+g.sPageButtonDisabled);break;case "last":k=
+j.sLast;l=s+(e<f-1?"":" "+g.sPageButtonDisabled);break;default:k=s+1;l=e===s?g.sPageButtonActive:""}if(k!==null){t=h("<a>",{"class":g.sPageButton+" "+l,"aria-controls":a.sTableId,"aria-label":i[s],"data-dt-idx":m,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(k).appendTo(b);Wa(t,{action:s},v);m++}}}},r;try{r=h(b).find(H.activeElement).data("dt-idx")}catch(n){}p(h(b).empty(),d);r&&h(b).find("[data-dt-idx="+r+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=
+b.oLanguage.sDecimal;return Za(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!ac.test(a)||!bc.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||M(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,!0)?"html-num-fmt"+c:null},function(a){return M(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":
+null}]);h.extend(m.ext.type.search,{html:function(a){return M(a)?a:"string"===typeof a?a.replace(Ob," ").replace(Ca,""):""},string:function(a){return M(a)?a:"string"===typeof a?a.replace(Ob," "):a}});var Ba=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Qb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};h.extend(s.type.order,{"date-pre":function(a){return Date.parse(a)||0},"html-pre":function(a){return M(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():
+a+""},"string-pre":function(a){return M(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});db("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,
+b,c,d){h("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(h[e]=="asc"?d.sSortJUIAsc:
+h[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});m.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return f;f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}},text:function(){return{display:function(a){return"string"===typeof a?a.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):
+a}}}};h.extend(m.ext.internal,{_fnExternApiFunc:Nb,_fnBuildAjax:ra,_fnAjaxUpdate:lb,_fnAjaxParameters:ub,_fnAjaxUpdateDraw:vb,_fnAjaxDataSrc:sa,_fnAddColumn:Ga,_fnColumnOptions:la,_fnAdjustColumnSizing:U,_fnVisibleToColumnIndex:$,_fnColumnIndexToVisible:ba,_fnVisbleColumns:ca,_fnGetColumns:aa,_fnColumnTypes:Ia,_fnApplyColumnDefs:ib,_fnHungarianMap:Y,_fnCamelToHungarian:J,_fnLanguageCompat:Fa,_fnBrowserDetect:gb,_fnAddData:N,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:
+null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:B,_fnSetCellData:jb,_fnSplitObjNotation:La,_fnGetObjectDataFn:Q,_fnSetObjectDataFn:R,_fnGetDataMaster:Ma,_fnClearTable:na,_fnDeleteIndex:oa,_fnInvalidate:ea,_fnGetRowElements:Ka,_fnCreateTr:Ja,_fnBuildHead:kb,_fnDrawHead:ga,_fnDraw:O,_fnReDraw:T,_fnAddOptionsHtml:nb,_fnDetectHeader:fa,_fnGetUniqueThs:qa,_fnFeatureHtmlFilter:pb,_fnFilterComplete:ha,_fnFilterCustom:yb,_fnFilterColumn:xb,_fnFilter:wb,_fnFilterCreateSearch:Qa,
+_fnEscapeRegex:va,_fnFilterData:zb,_fnFeatureHtmlInfo:sb,_fnUpdateInfo:Cb,_fnInfoMacros:Db,_fnInitialise:ia,_fnInitComplete:ta,_fnLengthChange:Ra,_fnFeatureHtmlLength:ob,_fnFeatureHtmlPaginate:tb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:qb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:rb,_fnScrollDraw:Z,_fnApplyToChildren:I,_fnCalculateColumnWidths:Ha,_fnThrottle:ua,_fnConvertToWidth:Fb,_fnGetWidestNode:Gb,_fnGetMaxLenString:Hb,_fnStringToCss:w,_fnSortFlatten:W,_fnSort:mb,_fnSortAria:Jb,_fnSortListener:Va,
+_fnSortAttachListener:Oa,_fnSortingClasses:xa,_fnSortData:Ib,_fnSaveState:ya,_fnLoadState:Kb,_fnSettingsFromNode:za,_fnLog:K,_fnMap:F,_fnBindAction:Wa,_fnCallbackReg:z,_fnCallbackFire:v,_fnLengthOverflow:Sa,_fnRenderer:Pa,_fnDataSource:y,_fnRowAttributes:Na,_fnCalculateEnd:function(){}});h.fn.dataTable=m;m.$=h;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable});
diff --git a/sdnc-a1-controller/oam/admportal/public/javascripts/jquery.min.js b/sdnc-a1-controller/oam/admportal/public/javascripts/jquery.min.js
new file mode 100644
index 0000000..ab28a24
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/javascripts/jquery.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;
+if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
+},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/sdnc-a1-controller/oam/admportal/public/javascripts/jquery.treegrid.bootstrap3.js b/sdnc-a1-controller/oam/admportal/public/javascripts/jquery.treegrid.bootstrap3.js
new file mode 100644
index 0000000..1118697
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/javascripts/jquery.treegrid.bootstrap3.js
@@ -0,0 +1,4 @@
+$.extend($.fn.treegrid.defaults, {

+    expanderExpandedClass: 'glyphicon glyphicon-chevron-down',

+    expanderCollapsedClass: 'glyphicon glyphicon-chevron-right'

+});

diff --git a/sdnc-a1-controller/oam/admportal/public/javascripts/jquery.treegrid.js b/sdnc-a1-controller/oam/admportal/public/javascripts/jquery.treegrid.js
new file mode 100644
index 0000000..8579d8e
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/javascripts/jquery.treegrid.js
@@ -0,0 +1,626 @@
+/*

+ * jQuery treegrid Plugin 0.2.0

+ * https://github.com/maxazan/jquery-treegrid

+ *

+ * Copyright 2013, Pomazan Max

+ * Licensed under the MIT licenses.

+ */

+(function($) {

+

+    var methods = {

+        /**

+         * Initialize tree

+         *

+         * @param {Object} options

+         * @returns {Object[]}

+         */

+        initTree: function(options) {

+            var settings = $.extend({}, this.treegrid.defaults, options);

+            return this.each(function() {

+                var $this = $(this);

+                $this.treegrid('setTreeContainer', $(this));

+                $this.treegrid('setSettings', settings);

+                settings.getRootNodes.apply(this, [$(this)]).treegrid('initNode', settings);

+                $this.treegrid('getRootNodes').treegrid('render');

+            });

+        },

+        /**

+         * Initialize node

+         *

+         * @param {Object} settings

+         * @returns {Object[]}

+         */

+        initNode: function(settings) {

+            return this.each(function() {

+                var $this = $(this);

+                $this.treegrid('setTreeContainer', settings.getTreeGridContainer.apply(this));

+                $this.treegrid('getChildNodes').treegrid('initNode', settings);

+                $this.treegrid('initExpander').treegrid('initIndent').treegrid('initEvents').treegrid('initState').treegrid('initChangeEvent').treegrid("initSettingsEvents");

+            });

+        },

+        initChangeEvent: function() {

+            var $this = $(this);

+            //Save state on change

+            $this.on("change", function() {

+                var $this = $(this);

+                $this.treegrid('render');

+                if ($this.treegrid('getSetting', 'saveState')) {

+                    $this.treegrid('saveState');

+                }

+            });

+            return $this;

+        },

+        /**

+         * Initialize node events

+         *

+         * @returns {Node}

+         */

+        initEvents: function() {

+            var $this = $(this);

+            //Default behavior on collapse

+            $this.on("collapse", function() {

+                var $this = $(this);

+                $this.removeClass('treegrid-expanded');

+                $this.addClass('treegrid-collapsed');

+            });

+            //Default behavior on expand

+            $this.on("expand", function() {

+                var $this = $(this);

+                $this.removeClass('treegrid-collapsed');

+                $this.addClass('treegrid-expanded');

+            });

+

+            return $this;

+        },

+        /**

+         * Initialize events from settings

+         *

+         * @returns {Node}

+         */

+        initSettingsEvents: function() {

+            var $this = $(this);

+            //Save state on change

+            $this.on("change", function() {

+                var $this = $(this);

+                if (typeof($this.treegrid('getSetting', 'onChange')) === "function") {

+                    $this.treegrid('getSetting', 'onChange').apply($this);

+                }

+            });

+            //Default behavior on collapse

+            $this.on("collapse", function() {

+                var $this = $(this);

+                if (typeof($this.treegrid('getSetting', 'onCollapse')) === "function") {

+                    $this.treegrid('getSetting', 'onCollapse').apply($this);

+                }

+            });

+            //Default behavior on expand

+            $this.on("expand", function() {

+                var $this = $(this);

+                if (typeof($this.treegrid('getSetting', 'onExpand')) === "function") {

+                    $this.treegrid('getSetting', 'onExpand').apply($this);

+                }

+

+            });

+

+            return $this;

+        },

+        /**

+         * Initialize expander for node

+         *

+         * @returns {Node}

+         */

+        initExpander: function() {

+            var $this = $(this);

+            var cell = $this.find('td').get($this.treegrid('getSetting', 'treeColumn'));

+            var tpl = $this.treegrid('getSetting', 'expanderTemplate');

+            var expander = $this.treegrid('getSetting', 'getExpander').apply(this);

+            if (expander) {

+                expander.remove();

+            }

+            $(tpl).prependTo(cell).click(function() {

+                $($(this).closest('tr')).treegrid('toggle');

+            });

+            return $this;

+        },

+        /**

+         * Initialize indent for node

+         *

+         * @returns {Node}

+         */

+        initIndent: function() {

+            var $this = $(this);

+            $this.find('.treegrid-indent').remove();

+            var tpl = $this.treegrid('getSetting', 'indentTemplate');

+            var expander = $this.find('.treegrid-expander');

+            var depth = $this.treegrid('getDepth');

+            for (var i = 0; i < depth; i++) {

+                $(tpl).insertBefore(expander);

+            }

+            return $this;

+        },

+        /**

+         * Initialise state of node

+         *

+         * @returns {Node}

+         */

+        initState: function() {

+            var $this = $(this);

+            if ($this.treegrid('getSetting', 'saveState') && !$this.treegrid('isFirstInit')) {

+                $this.treegrid('restoreState');

+            } else {

+                if ($this.treegrid('getSetting', 'initialState') === "expanded") {

+                    $this.treegrid('expand');

+                } else {

+                    $this.treegrid('collapse');

+                }

+            }

+            return $this;

+        },

+        /**

+         * Return true if this tree was never been initialised

+         *

+         * @returns {Boolean}

+         */

+        isFirstInit: function() {

+            var tree = $(this).treegrid('getTreeContainer');

+            if (tree.data('first_init') === undefined) {

+                tree.data('first_init', $.cookie(tree.treegrid('getSetting', 'saveStateName')) === undefined);

+            }

+            return tree.data('first_init');

+        },

+        /**

+         * Save state of current node

+         *

+         * @returns {Node}

+         */

+        saveState: function() {

+            var $this = $(this);

+            if ($this.treegrid('getSetting', 'saveStateMethod') === 'cookie') {

+

+                var stateArrayString = $.cookie($this.treegrid('getSetting', 'saveStateName')) || '';

+                var stateArray = (stateArrayString === '' ? [] : stateArrayString.split(','));

+                var nodeId = $this.treegrid('getNodeId');

+

+                if ($this.treegrid('isExpanded')) {

+                    if ($.inArray(nodeId, stateArray) === -1) {

+                        stateArray.push(nodeId);

+                    }

+                } else if ($this.treegrid('isCollapsed')) {

+                    if ($.inArray(nodeId, stateArray) !== -1) {

+                        stateArray.splice($.inArray(nodeId, stateArray), 1);

+                    }

+                }

+                $.cookie($this.treegrid('getSetting', 'saveStateName'), stateArray.join(','));

+            }

+            return $this;

+        },

+        /**

+         * Restore state of current node.

+         *

+         * @returns {Node}

+         */

+        restoreState: function() {

+            var $this = $(this);

+            if ($this.treegrid('getSetting', 'saveStateMethod') === 'cookie') {

+                var stateArray = $.cookie($this.treegrid('getSetting', 'saveStateName')).split(',');

+                if ($.inArray($this.treegrid('getNodeId'), stateArray) !== -1) {

+                    $this.treegrid('expand');

+                } else {

+                    $this.treegrid('collapse');

+                }

+

+            }

+            return $this;

+        },

+        /**

+         * Method return setting by name

+         *

+         * @param {type} name

+         * @returns {unresolved}

+         */

+        getSetting: function(name) {

+            if (!$(this).treegrid('getTreeContainer')) {

+                return null;

+            }

+            return $(this).treegrid('getTreeContainer').data('settings')[name];

+        },

+        /**

+         * Add new settings

+         *

+         * @param {Object} settings

+         */

+        setSettings: function(settings) {

+            $(this).treegrid('getTreeContainer').data('settings', settings);

+        },

+        /**

+         * Return tree container

+         *

+         * @returns {HtmlElement}

+         */

+        getTreeContainer: function() {

+            return $(this).data('treegrid');

+        },

+        /**

+         * Set tree container

+         *

+         * @param {HtmlE;ement} container

+         */

+        setTreeContainer: function(container) {

+            return $(this).data('treegrid', container);

+        },

+        /**

+         * Method return all root nodes of tree.

+         *

+         * Start init all child nodes from it.

+         *

+         * @returns {Array}

+         */

+        getRootNodes: function() {

+            return $(this).treegrid('getSetting', 'getRootNodes').apply(this, [$(this).treegrid('getTreeContainer')]);

+        },

+        /**

+         * Method return all nodes of tree.

+         *

+         * @returns {Array}

+         */

+        getAllNodes: function() {

+            return $(this).treegrid('getSetting', 'getAllNodes').apply(this, [$(this).treegrid('getTreeContainer')]);

+        },

+        /**

+         * Mthod return true if element is Node

+         *

+         * @returns {String}

+         */

+        isNode: function() {

+            return $(this).treegrid('getNodeId') !== null;

+        },

+        /**

+         * Mthod return id of node

+         *

+         * @returns {String}

+         */

+        getNodeId: function() {

+            if ($(this).treegrid('getSetting', 'getNodeId') === null) {

+                return null;

+            } else {

+                return $(this).treegrid('getSetting', 'getNodeId').apply(this);

+            }

+        },

+        /**

+         * Method return parent id of node or null if root node

+         *

+         * @returns {String}

+         */

+        getParentNodeId: function() {

+            return $(this).treegrid('getSetting', 'getParentNodeId').apply(this);

+        },

+        /**

+         * Method return parent node or null if root node

+         *

+         * @returns {Object[]}

+         */

+        getParentNode: function() {

+            if ($(this).treegrid('getParentNodeId') === null) {

+                return null;

+            } else {

+                return $(this).treegrid('getSetting', 'getNodeById').apply(this, [$(this).treegrid('getParentNodeId'), $(this).treegrid('getTreeContainer')]);

+            }

+        },

+        /**

+         * Method return array of child nodes or null if node is leaf

+         *

+         * @returns {Object[]}

+         */

+        getChildNodes: function() {

+            return $(this).treegrid('getSetting', 'getChildNodes').apply(this, [$(this).treegrid('getNodeId'), $(this).treegrid('getTreeContainer')]);

+        },

+        /**

+         * Method return depth of tree.

+         *

+         * This method is needs for calculate indent

+         *

+         * @returns {Number}

+         */

+        getDepth: function() {

+            if ($(this).treegrid('getParentNode') === null) {

+                return 0;

+            }

+            return $(this).treegrid('getParentNode').treegrid('getDepth') + 1;

+        },

+        /**

+         * Method return true if node is root

+         *

+         * @returns {Boolean}

+         */

+        isRoot: function() {

+            return $(this).treegrid('getDepth') === 0;

+        },

+        /**

+         * Method return true if node has no child nodes

+         *

+         * @returns {Boolean}

+         */

+        isLeaf: function() {

+            return $(this).treegrid('getChildNodes').length === 0;

+        },

+        /**

+         * Method return true if node last in branch

+         *

+         * @returns {Boolean}

+         */

+        isLast: function() {

+            if ($(this).treegrid('isNode')) {

+                var parentNode = $(this).treegrid('getParentNode');

+                if (parentNode === null) {

+                    if ($(this).treegrid('getNodeId') === $(this).treegrid('getRootNodes').last().treegrid('getNodeId')) {

+                        return true;

+                    }

+                } else {

+                    if ($(this).treegrid('getNodeId') === parentNode.treegrid('getChildNodes').last().treegrid('getNodeId')) {

+                        return true;

+                    }

+                }

+            }

+            return false;

+        },

+        /**

+         * Method return true if node first in branch

+         *

+         * @returns {Boolean}

+         */

+        isFirst: function() {

+            if ($(this).treegrid('isNode')) {

+                var parentNode = $(this).treegrid('getParentNode');

+                if (parentNode === null) {

+                    if ($(this).treegrid('getNodeId') === $(this).treegrid('getRootNodes').first().treegrid('getNodeId')) {

+                        return true;

+                    }

+                } else {

+                    if ($(this).treegrid('getNodeId') === parentNode.treegrid('getChildNodes').first().treegrid('getNodeId')) {

+                        return true;

+                    }

+                }

+            }

+            return false;

+        },

+        /**

+         * Return true if node expanded

+         *

+         * @returns {Boolean}

+         */

+        isExpanded: function() {

+            return $(this).hasClass('treegrid-expanded');

+        },

+        /**

+         * Return true if node collapsed

+         *

+         * @returns {Boolean}

+         */

+        isCollapsed: function() {

+            return $(this).hasClass('treegrid-collapsed');

+        },

+        /**

+         * Return true if at least one of parent node is collapsed

+         *

+         * @returns {Boolean}

+         */

+        isOneOfParentsCollapsed: function() {

+            var $this = $(this);

+            if ($this.treegrid('isRoot')) {

+                return false;

+            } else {

+                if ($this.treegrid('getParentNode').treegrid('isCollapsed')) {

+                    return true;

+                } else {

+                    return $this.treegrid('getParentNode').treegrid('isOneOfParentsCollapsed');

+                }

+            }

+        },

+        /**

+         * Expand node

+         *

+         * @returns {Node}

+         */

+        expand: function() {

+            if (!this.treegrid('isLeaf') && !this.treegrid("isExpanded")) {

+                this.trigger("expand");

+                this.trigger("change");

+                return this;

+            }

+            return this;

+        },

+        /**

+         * Expand all nodes

+         *

+         * @returns {Node}

+         */

+        expandAll: function() {

+            var $this = $(this);

+            $this.treegrid('getRootNodes').treegrid('expandRecursive');

+            return $this;

+        },

+        /**

+         * Expand current node and all child nodes begin from current

+         *

+         * @returns {Node}

+         */

+        expandRecursive: function() {

+            return $(this).each(function() {

+                var $this = $(this);

+                $this.treegrid('expand');

+                if (!$this.treegrid('isLeaf')) {

+                    $this.treegrid('getChildNodes').treegrid('expandRecursive');

+                }

+            });

+        },

+        /**

+         * Collapse node

+         *

+         * @returns {Node}

+         */

+        collapse: function() {

+            return $(this).each(function() {

+                var $this = $(this);

+                if (!$this.treegrid('isLeaf') && !$this.treegrid("isCollapsed")) {

+                    $this.trigger("collapse");

+                    $this.trigger("change");

+                }

+            });

+        },

+        /**

+         * Collapse all nodes

+         *

+         * @returns {Node}

+         */

+        collapseAll: function() {

+            var $this = $(this);

+            $this.treegrid('getRootNodes').treegrid('collapseRecursive');

+            return $this;

+        },

+        /**

+         * Collapse current node and all child nodes begin from current

+         *

+         * @returns {Node}

+         */

+        collapseRecursive: function() {

+            return $(this).each(function() {

+                var $this = $(this);

+                $this.treegrid('collapse');

+                if (!$this.treegrid('isLeaf')) {

+                    $this.treegrid('getChildNodes').treegrid('collapseRecursive');

+                }

+            });

+        },

+        /**

+         * Expand if collapsed, Collapse if expanded

+         *

+         * @returns {Node}

+         */

+        toggle: function() {

+            var $this = $(this);

+            if ($this.treegrid('isExpanded')) {

+                $this.treegrid('collapse');

+            } else {

+                $this.treegrid('expand');

+            }

+            return $this;

+        },

+        /**

+         * Rendering node

+         *

+         * @returns {Node}

+         */

+        render: function() {

+            return $(this).each(function() {

+                var $this = $(this);

+                //if parent colapsed we hidden

+                if ($this.treegrid('isOneOfParentsCollapsed')) {

+                    $this.hide();

+                } else {

+                    $this.show();

+                }

+                if (!$this.treegrid('isLeaf')) {

+                    $this.treegrid('renderExpander');

+                    $this.treegrid('getChildNodes').treegrid('render');

+                }

+            });

+        },

+        /**

+         * Rendering expander depends on node state

+         *

+         * @returns {Node}

+         */

+        renderExpander: function() {

+            return $(this).each(function() {

+                var $this = $(this);

+                var expander = $this.treegrid('getSetting', 'getExpander').apply(this);

+                if (expander) {

+

+                    if (!$this.treegrid('isCollapsed')) {

+                        expander.removeClass($this.treegrid('getSetting', 'expanderCollapsedClass'));

+                        expander.addClass($this.treegrid('getSetting', 'expanderExpandedClass'));

+                    } else {

+                        expander.removeClass($this.treegrid('getSetting', 'expanderExpandedClass'));

+                        expander.addClass($this.treegrid('getSetting', 'expanderCollapsedClass'));

+                    }

+                } else {

+                    $this.treegrid('initExpander');

+                    $this.treegrid('renderExpander');

+                }

+            });

+        }

+    };

+    $.fn.treegrid = function(method) {

+        if (methods[method]) {

+            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));

+        } else if (typeof method === 'object' || !method) {

+            return methods.initTree.apply(this, arguments);

+        } else {

+            $.error('Method with name ' + method + ' does not exists for jQuery.treegrid');

+        }

+    };

+    /**

+     *  Plugin's default options

+     */

+    $.fn.treegrid.defaults = {

+        initialState: 'expanded',

+        saveState: false,

+        saveStateMethod: 'cookie',

+        saveStateName: 'tree-grid-state',

+        expanderTemplate: '<span class="treegrid-expander"></span>',

+        indentTemplate: '<span class="treegrid-indent"></span>',

+        expanderExpandedClass: 'treegrid-expander-expanded',

+        expanderCollapsedClass: 'treegrid-expander-collapsed',

+        treeColumn: 0,

+        getExpander: function() {

+            return $(this).find('.treegrid-expander');

+        },

+        getNodeId: function() {

+            var template = /treegrid-([A-Za-z0-9_-]+)/;

+            if (template.test($(this).attr('class'))) {

+                return template.exec($(this).attr('class'))[1];

+            }

+            return null;

+        },

+        getParentNodeId: function() {

+            var template = /treegrid-parent-([A-Za-z0-9_-]+)/;

+            if (template.test($(this).attr('class'))) {

+                return template.exec($(this).attr('class'))[1];

+            }

+            return null;

+        },

+        getNodeById: function(id, treegridContainer) {

+            var templateClass = "treegrid-" + id;

+            return treegridContainer.find('tr.' + templateClass);

+        },

+        getChildNodes: function(id, treegridContainer) {

+            var templateClass = "treegrid-parent-" + id;

+            return treegridContainer.find('tr.' + templateClass);

+        },

+        getTreeGridContainer: function() {

+            return $(this).closest('table');

+        },

+        getRootNodes: function(treegridContainer) {

+            var result = $.grep(treegridContainer.find('tr'), function(element) {

+                var classNames = $(element).attr('class');

+                var templateClass = /treegrid-([A-Za-z0-9_-]+)/;

+                var templateParentClass = /treegrid-parent-([A-Za-z0-9_-]+)/;

+                return templateClass.test(classNames) && !templateParentClass.test(classNames);

+            });

+            return $(result);

+        },

+        getAllNodes: function(treegridContainer) {

+            var result = $.grep(treegridContainer.find('tr'), function(element) {

+                var classNames = $(element).attr('class');

+                var templateClass = /treegrid-([A-Za-z0-9_-]+)/;

+                return templateClass.test(classNames);

+            });

+            return $(result);

+        },

+        //Events

+        onCollapse: null,

+        onExpand: null,

+        onChange: null

+

+    };

+})(jQuery);

diff --git a/sdnc-a1-controller/oam/admportal/public/javascripts/sla.js b/sdnc-a1-controller/oam/admportal/public/javascripts/sla.js
new file mode 100644
index 0000000..53c4931
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/javascripts/sla.js
@@ -0,0 +1,9 @@
+function uploadDG(form)
+{
+	if ( form.filename.value.length == 0)
+	{
+		alert('Must select a file.');
+		return false;
+	}
+	else { form.submit(); return; }
+}
diff --git a/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-submenu.css b/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-submenu.css
new file mode 100644
index 0000000..91e88db
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-submenu.css
@@ -0,0 +1,125 @@
+/*!
+ * Bootstrap-submenu v2.0.3 (https://vsn4ik.github.io/bootstrap-submenu/)
+ * Copyright 2015 Vasily A. (https://github.com/vsn4ik)
+ * Licensed under the MIT license
+ */
+
+.dropdown-submenu > a:after {
+  content: "";
+}
+@media (min-width: 768px) {
+  .dropdown-submenu {
+    position: relative;
+  }
+  .dropdown-submenu .dropdown-menu {
+    top: 0;
+    left: 100%;
+    margin-top: -6px;
+    border-top-left-radius: 0;
+  }
+  .dropup .dropdown-submenu .dropdown-menu,
+  .navbar-fixed-bottom .dropdown-submenu .dropdown-menu {
+    top: auto;
+    bottom: 0;
+    margin-top: 0;
+    margin-bottom: -6px;
+    border-top-left-radius: 4px;
+    border-bottom-left-radius: 0;
+  }
+  .dropdown-menu-right .dropdown-submenu .dropdown-menu,
+  .navbar-right .dropdown-submenu .dropdown-menu {
+    left: auto;
+    right: 100%;
+    border-top-left-radius: 4px;
+    border-top-right-radius: 0;
+  }
+  .dropup .dropdown-menu-right .dropdown-submenu .dropdown-menu,
+  .dropup .navbar-right .dropdown-submenu .dropdown-menu,
+  .navbar-fixed-bottom .dropdown-menu-right .dropdown-submenu .dropdown-menu,
+  .navbar-fixed-bottom .navbar-right .dropdown-submenu .dropdown-menu {
+    border-radius: 4px 4px 0;
+  }
+  .dropdown-submenu > a:after {
+    float: right;
+    margin-top: 6px;
+    margin-right: -10px;
+    border-left: 4px dashed;
+    border-top: 4px solid transparent;
+    border-bottom: 4px solid transparent;
+  }
+  .dropdown-menu-right .dropdown-submenu > a:after,
+  .navbar-right .dropdown-submenu > a:after {
+    float: left;
+    border-left: none;
+    margin-left: -10px;
+    margin-right: 0;
+    border-right: 4px dashed;
+    border-top: 4px solid transparent;
+    border-bottom: 4px solid transparent;
+  }
+}
+@media (max-width: 767px) {
+  .dropdown-submenu .dropdown-menu {
+    position: static;
+    margin-top: 0;
+    border: 0;
+    box-shadow: none;
+  }
+  .dropdown-submenu > a:after {
+    margin-left: 6px;
+    display: inline-block;
+    vertical-align: middle;
+    border-top: 4px dashed;
+    border-left: 4px solid transparent;
+    border-right: 4px solid transparent;
+  }
+  .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li.dropdown-header,
+  .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li.dropdown-header,
+  .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li.dropdown-header,
+  .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > a,
+  .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > a,
+  .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > a {
+    padding-left: 30px;
+  }
+  .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li.dropdown-header,
+  .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li.dropdown-header,
+  .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li.dropdown-header,
+  .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > a,
+  .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > a,
+  .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > a {
+    padding-left: 40px;
+  }
+  .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header,
+  .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header,
+  .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header,
+  .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a,
+  .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a,
+  .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a {
+    padding-left: 50px;
+  }
+  .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header,
+  .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header,
+  .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header,
+  .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a,
+  .dropup > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a,
+  .btn-group > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a {
+    padding-left: 60px;
+  }
+  .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li.dropdown-header,
+  .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > a {
+    padding-left: 35px;
+  }
+  .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li.dropdown-header,
+  .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > a {
+    padding-left: 45px;
+  }
+  .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header,
+  .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a {
+    padding-left: 55px;
+  }
+  .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li.dropdown-header,
+  .navbar-nav > .dropdown > .dropdown-menu > .dropdown-submenu > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a {
+    padding-left: 65px;
+  }
+}
+/*# sourceMappingURL=bootstrap-submenu.css.map */
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-submenu.css.map b/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-submenu.css.map
new file mode 100644
index 0000000..4ab4300
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-submenu.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["less/bootstrap-submenu.less","less/mixins.less"],"names":[],"mappings":"AAYA,iBAAkB,IAAG;EACnB,SAAS,EAAT;;AA2DF,QAxD2C;EACzC;IACE,kBAAA;;EADF,iBAGE;IACE,MAAA;IACA,UAAA;IACA,gBAAA;IACA,yBAAA;;EAGA,OAAQ,kBAPV;EAQE,oBAAqB,kBARvB;IASI,SAAA;IACA,SAAA;IACA,aAAA;IACA,mBAAA;IACA,2BAAA;IACA,4BAAA;;EAGF,oBAAqB,kBAjBvB;EAkBE,aAAc,kBAlBhB;IAmBI,UAAA;IACA,WAAA;IAEA,2BAAA;IACA,0BAAA;;EAEA,OAAQ,qBARW,kBAjBvB;EAyBI,OAAQ,cAPI,kBAlBhB;EA0BI,oBAAqB,qBATF,kBAjBvB;EA0BI,oBAAqB,cART,kBAlBhB;IA2BM,wBAAA;;EA9BR,iBAmCE,IAAG;IACD,YAAA;IACA,eAAA;IACA,mBAAA;ICrDJ,uBAAA;IAEA,iCAAA;IACA,oCAAA;;EDsDI,oBAAqB,kBAPvB,IAAG;EAQD,aAAc,kBARhB,IAAG;IASC,WAAA;IACA,iBAAA;IACA,kBAAA;IACA,eAAA;IC9DN,wBAAA;IAEA,iCAAA;IACA,oCAAA;;;ADiGF,QA9B+C;EAC7C,iBACE;IACE,gBAAA;IACA,aAAA;IACA,SAAA;IACA,gBAAA;;EALJ,iBAQE,IAAG;IACD,gBAAA;IACA,qBAAA;IACA,sBAAA;IClFJ,sBAAA;IAEA,kCAAA;IACA,mCAAA;;EAKE,SDiFU,iBADG,oBCjFf,iBAAiB,KACd;EAAD,ODkFQ,iBAFK,oBCjFf,iBAAiB,KACd;EAAD,UDmFW,iBAHE,oBCjFf,iBAAiB,KACd;EDiFD,SAAU,iBADG,oBCjFf,iBAAiB,KAEf;EDiFA,OAAQ,iBAFK,oBCjFf,iBAAiB,KAEf;EDkFA,UAAW,iBAHE,oBCjFf,iBAAiB,KAEf;IACE,kBAAA;;EAFF,SDiFU,iBADG,oBCjFf,iBAAiB,KAAjB,iBAAiB,KACd;EAAD,ODkFQ,iBAFK,oBCjFf,iBAAiB,KAAjB,iBAAiB,KACd;EAAD,UDmFW,iBAHE,oBCjFf,iBAAiB,KAAjB,iBAAiB,KACd;EDiFD,SAAU,iBADG,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAEf;EDiFA,OAAQ,iBAFK,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAEf;EDkFA,UAAW,iBAHE,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAEf;IACE,kBAAA;;EAFF,SDiFU,iBADG,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KACd;EAAD,ODkFQ,iBAFK,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KACd;EAAD,UDmFW,iBAHE,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KACd;EDiFD,SAAU,iBADG,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAEf;EDiFA,OAAQ,iBAFK,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAEf;EDkFA,UAAW,iBAHE,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAEf;IACE,kBAAA;;EAFF,SDiFU,iBADG,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KACd;EAAD,ODkFQ,iBAFK,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KACd;EAAD,UDmFW,iBAHE,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KACd;EDiFD,SAAU,iBADG,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAEf;EDiFA,OAAQ,iBAFK,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAEf;EDkFA,UAAW,iBAHE,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAEf;IACE,kBAAA;;EAFF,WDuFY,YAAY,iBAPX,oBCjFf,iBAAiB,KACd;EDuFD,WAAY,YAAY,iBAPX,oBCjFf,iBAAiB,KAEf;IACE,kBAAA;;EAFF,WDuFY,YAAY,iBAPX,oBCjFf,iBAAiB,KAAjB,iBAAiB,KACd;EDuFD,WAAY,YAAY,iBAPX,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAEf;IACE,kBAAA;;EAFF,WDuFY,YAAY,iBAPX,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KACd;EDuFD,WAAY,YAAY,iBAPX,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAEf;IACE,kBAAA;;EAFF,WDuFY,YAAY,iBAPX,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KACd;EDuFD,WAAY,YAAY,iBAPX,oBCjFf,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAAjB,iBAAiB,KAEf;IACE,kBAAA","sourcesContent":["// :after: friends with IE8. Use ::after in future.\n\n@import \"../node_modules/bootstrap/less/variables.less\";\n@import \"mixins.less\";\n\n// Variables\n@caret-margin: -@caret-width-base * 2 - 2;\n\n//\n// Sub-Menus\n// --------------------------------------------------\n\n.dropdown-submenu > a:after {\n  content: \"\";\n}\n\n@media (min-width: @grid-float-breakpoint) {\n  .dropdown-submenu {\n    position: relative;\n\n    .dropdown-menu {\n      top: 0;\n      left: 100%;\n      margin-top: -6px;\n      border-top-left-radius: 0;\n\n      // Strictly before .dropdown-menu-right\n      .dropup &,\n      .navbar-fixed-bottom & {\n        top: auto;\n        bottom: 0;\n        margin-top: 0;\n        margin-bottom: -6px;\n        border-top-left-radius: @border-radius-base;\n        border-bottom-left-radius: 0;\n      }\n\n      .dropdown-menu-right &,\n      .navbar-right & {\n        left: auto;\n        right: 100%;\n\n        border-top-left-radius: @border-radius-base;\n        border-top-right-radius: 0;\n\n        .dropup &,\n        .navbar-fixed-bottom & {\n          border-radius: @border-radius-base @border-radius-base 0;\n        }\n      }\n    }\n\n    > a:after {\n      float: right;\n      margin-top: @line-height-computed / 2 - @caret-width-base;\n      margin-right: @caret-margin;\n\n      .make-caret(left, top, bottom);\n\n      .dropdown-menu-right &,\n      .navbar-right & {\n        float: left;\n        border-left: none;\n        margin-left: @caret-margin;\n        margin-right: 0;\n\n        .make-caret(right, top, bottom);\n      }\n    }\n  }\n}\n\n@media (max-width: @grid-float-breakpoint-max) {\n  .dropdown-submenu {\n    .dropdown-menu {\n      position: static;\n      margin-top: 0;\n      border: 0;\n      box-shadow: none;\n    }\n\n    > a:after {\n      margin-left: 6px;\n      display: inline-block;\n      vertical-align: middle;\n\n      .make-caret(top, left, right);\n    }\n  }\n\n  .dropdown-menu > .dropdown-submenu {\n    .dropdown > &,\n    .dropup > &,\n    .btn-group > & {\n      .make-nested-list(30px, 0, 4);\n    }\n\n    .navbar-nav > .dropdown > & {\n      .make-nested-list(35px, 0, 4);\n    }\n  }\n}\n",".make-caret(@base, @left, @right) {\n  // dashed: fix caret size for Mozilla Firefox\n  border-@{base}: @caret-width-base dashed;\n\n  border-@{left}: @caret-width-base solid transparent;\n  border-@{right}: @caret-width-base solid transparent;\n}\n\n.make-nested-list(@offset, @i, @n) when (@i < @n) {\n  > .dropdown-menu > li {\n    &.dropdown-header,\n    > a {\n      padding-left: @offset + (10 * @i);\n    }\n\n    .make-nested-list(@offset, @i + 1, @n);\n  }\n}\n"]}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-submenu.min.css b/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-submenu.min.css
new file mode 100644
index 0000000..7199e0d
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-submenu.min.css
@@ -0,0 +1,8 @@
+/*!
+ * Bootstrap-submenu v2.0.3 (https://vsn4ik.github.io/bootstrap-submenu/)
+ * Copyright 2015 Vasily A. (https://github.com/vsn4ik)
+ * Licensed under the MIT license
+ */
+
+.dropdown-submenu>a:after{content:""}@media (min-width:768px){.dropdown-submenu{position:relative}.dropdown-submenu .dropdown-menu{top:0;left:100%;margin-top:-6px;border-top-left-radius:0}.dropup .dropdown-submenu .dropdown-menu,.navbar-fixed-bottom .dropdown-submenu .dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-6px;border-top-left-radius:4px;border-bottom-left-radius:0}.dropdown-menu-right .dropdown-submenu .dropdown-menu,.navbar-right .dropdown-submenu .dropdown-menu{left:auto;right:100%;border-top-left-radius:4px;border-top-right-radius:0}.dropup .dropdown-menu-right .dropdown-submenu .dropdown-menu,.dropup .navbar-right .dropdown-submenu .dropdown-menu,.navbar-fixed-bottom .dropdown-menu-right .dropdown-submenu .dropdown-menu,.navbar-fixed-bottom .navbar-right .dropdown-submenu .dropdown-menu{border-radius:4px 4px 0}.dropdown-submenu>a:after{float:right;margin-top:6px;margin-right:-10px;border-left:4px dashed;border-top:4px solid transparent;border-bottom:4px solid transparent}.dropdown-menu-right .dropdown-submenu>a:after,.navbar-right .dropdown-submenu>a:after{float:left;border-left:none;margin-left:-10px;margin-right:0;border-right:4px dashed;border-top:4px solid transparent;border-bottom:4px solid transparent}}@media (max-width:767px){.dropdown-submenu .dropdown-menu{position:static;margin-top:0;border:0;box-shadow:none}.dropdown-submenu>a:after{margin-left:6px;display:inline-block;vertical-align:middle;border-top:4px dashed;border-left:4px solid transparent;border-right:4px solid transparent}.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li.dropdown-header,.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>a,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li.dropdown-header,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>a,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li.dropdown-header,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>a{padding-left:30px}.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>a,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>a,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>a{padding-left:40px}.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a{padding-left:50px}.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.btn-group>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.dropup>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a{padding-left:60px}.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li.dropdown-header,.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>a{padding-left:35px}.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>a{padding-left:45px}.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a{padding-left:55px}.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li.dropdown-header,.navbar-nav>.dropdown>.dropdown-menu>.dropdown-submenu>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>.dropdown-menu>li>a{padding-left:65px}}
+/*# sourceMappingURL=bootstrap-submenu.min.css.map */
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-submenu.min.css.map b/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-submenu.min.css.map
new file mode 100644
index 0000000..6eab8c7
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-submenu.min.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["less/bootstrap-submenu.less","less/mixins.less"],"names":[],"mappings":"AAYqB,0BACnB,QAAA,GAGyC,yBACzC,kBACE,SAAA,SAEA,iCACE,IAAA,EACA,KAAA,KACA,WAAA,KACA,uBAAA,EAJF,yCAAA,sDASI,IAAA,KACA,OAAA,EACA,WAAA,EACA,cAAA,KACA,uBAAA,IACA,0BAAA,EAdJ,sDAAA,+CAmBI,KAAA,KACA,MAAA,KAEA,uBAAA,IACA,wBAAA,EAvBJ,8DAAA,uDAAA,2EAAA,oEA2BM,cAAA,IAAA,IAAA,EAKH,0BACD,MAAA,MACA,WAAA,IACA,aAAA,MCrDJ,YAAA,IAAA,OAEA,WAAA,IAAA,MAAA,YACA,cAAA,IAAA,MAAA,YD+CK,+CAAA,wCASC,MAAA,KACA,YAAA,KACA,YAAA,MACA,aAAA,EC9DN,aAAA,IAAA,OAEA,WAAA,IAAA,MAAA,YACA,cAAA,IAAA,MAAA,aDmE6C,yBAE3C,iCACE,SAAA,OACA,WAAA,EACA,OAAA,EACA,WAAA,KAGC,0BACD,YAAA,IACA,QAAA,aACA,eAAA,OClFJ,WAAA,IAAA,OAEA,YAAA,IAAA,MAAA,YACA,aAAA,IAAA,MAAA,YAKG,8EACD,gEADC,6EACD,+DADC,2EACD,6DACE,aAAA,KAFD,gGACD,kFADC,+FACD,iFADC,6FACD,+EACE,aAAA,KAFD,kHACD,oGADC,iHACD,mGADC,+GACD,iGACE,aAAA,KAFD,oIACD,sHADC,mIACD,qHADC,iIACD,mHACE,aAAA,KAFD,yFACD,2EACE,aAAA,KAFD,2GACD,6FACE,aAAA,KAFD,6HACD,+GACE,aAAA,KAFD,+IACD,iIACE,aAAA"}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-table.css b/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-table.css
new file mode 100644
index 0000000..66d5631
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-table.css
@@ -0,0 +1,297 @@
+/**
+ * @author zhixin wen <wenzhixin2010@gmail.com>
+ * version: 1.8.1
+ * https://github.com/wenzhixin/bootstrap-table/
+ */
+
+.bootstrap-table .table {
+    margin-bottom: 0 !important;
+    border-bottom: 1px solid #dddddd;
+    border-collapse: collapse !important;
+    border-radius: 1px;
+}
+
+.bootstrap-table .table:not(.table-condensed),
+.bootstrap-table .table:not(.table-condensed) > tbody > tr > th,
+.bootstrap-table .table:not(.table-condensed) > tfoot > tr > th,
+.bootstrap-table .table:not(.table-condensed) > thead > tr > td,
+.bootstrap-table .table:not(.table-condensed) > tbody > tr > td,
+.bootstrap-table .table:not(.table-condensed) > tfoot > tr > td {
+    padding: 8px !important;
+}
+
+.bootstrap-table .table.table-no-bordered > thead > tr > th,
+.bootstrap-table .table.table-no-bordered > tbody > tr > td {
+    border-right: 2px solid transparent;
+}
+
+.fixed-table-container {
+    position: relative;
+    clear: both;
+    border: 1px solid #dddddd;
+    border-radius: 4px;
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+}
+
+.fixed-table-container.table-no-bordered {
+    border: 1px solid transparent;
+}
+
+.fixed-table-footer,
+.fixed-table-header {
+    overflow: hidden;
+}
+
+.fixed-table-footer {
+    border-top: 1px solid #dddddd;
+}
+
+.fixed-table-body {
+    overflow-x: auto;
+    overflow-y: auto;
+    height: 100%;
+}
+
+.fixed-table-container table {
+    width: 100%;
+}
+
+.fixed-table-container thead th {
+    height: 0;
+    padding: 0;
+    margin: 0;
+    border-left: 1px solid #dddddd;
+}
+
+.fixed-table-container thead th:first-child {
+    border-left: none;
+    border-top-left-radius: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -moz-border-radius-topleft: 4px;
+}
+
+.fixed-table-container thead th .th-inner,
+.fixed-table-container tbody td .th-inner {
+    padding: 8px;
+    line-height: 24px;
+    vertical-align: top;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+
+.fixed-table-container thead th .sortable {
+    cursor: pointer;
+    background-position: right;
+    background-repeat: no-repeat;
+    padding-right: 30px;
+}
+
+.fixed-table-container thead th .both {
+    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC');
+}
+
+.fixed-table-container thead th .asc {
+    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==');
+}
+
+.fixed-table-container thead th .desc {
+    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ');
+}
+
+.fixed-table-container th.detail {
+    width: 30px;
+}
+
+.fixed-table-container tbody td {
+    border-left: 1px solid #dddddd;
+}
+
+.fixed-table-container tbody tr:first-child td {
+    border-top: none;
+}
+
+.fixed-table-container tbody td:first-child {
+    border-left: none;
+}
+
+/* the same color with .active */
+.fixed-table-container tbody .selected td {
+    background-color: #f5f5f5;
+}
+
+.fixed-table-container .bs-checkbox {
+    text-align: center;
+}
+
+.fixed-table-container .bs-checkbox .th-inner {
+    padding: 8px 0;
+}
+
+.fixed-table-container input[type="radio"],
+.fixed-table-container input[type="checkbox"] {
+    margin: 0 auto !important;
+}
+
+.fixed-table-container .no-records-found {
+    text-align: center;
+}
+
+.fixed-table-pagination div.pagination,
+.fixed-table-pagination .pagination-detail {
+    margin-top: 10px;
+    margin-bottom: 10px;
+}
+
+.fixed-table-pagination div.pagination .pagination {
+    margin: 0;
+}
+
+.fixed-table-pagination .pagination a {
+    padding: 6px 12px;
+    line-height: 1.428571429;
+}
+
+.fixed-table-pagination .pagination-info {
+    line-height: 34px;
+    margin-right: 5px;
+}
+
+.fixed-table-pagination .btn-group {
+    position: relative;
+    display: inline-block;
+    vertical-align: middle;
+}
+
+.fixed-table-pagination .dropup .dropdown-menu {
+    margin-bottom: 0;
+}
+
+.fixed-table-pagination .page-list {
+    display: inline-block;
+}
+
+.fixed-table-toolbar .columns-left {
+    margin-right: 5px;
+}
+
+.fixed-table-toolbar .columns-right {
+    margin-left: 5px;
+}
+
+.fixed-table-toolbar .columns label {
+    display: block;
+    padding: 3px 20px;
+    clear: both;
+    font-weight: normal;
+    line-height: 1.428571429;
+}
+
+.fixed-table-toolbar .bars,
+.fixed-table-toolbar .search,
+.fixed-table-toolbar .columns {
+    position: relative;
+    margin-top: 10px;
+    margin-bottom: 10px;
+    line-height: 34px;
+}
+
+.fixed-table-pagination li.disabled a {
+    pointer-events: none;
+    cursor: default;
+}
+
+.fixed-table-loading {
+    display: none;
+    position: absolute;
+    top: 42px;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 99;
+    background-color: #fff;
+    text-align: center;
+}
+
+.fixed-table-body .card-view .title {
+    font-weight: bold;
+    display: inline-block;
+    min-width: 30%;
+    text-align: left !important;
+}
+
+/* support bootstrap 2 */
+.fixed-table-body thead th .th-inner {
+    box-sizing: border-box;
+}
+
+.table th, .table td {
+    vertical-align: middle;
+    box-sizing: border-box;
+}
+
+.fixed-table-toolbar .dropdown-menu {
+    text-align: left;
+    max-height: 300px;
+    overflow: auto;
+}
+
+.fixed-table-toolbar .btn-group > .btn-group {
+    display: inline-block;
+    margin-left: -1px !important;
+}
+
+.fixed-table-toolbar .btn-group > .btn-group > .btn {
+    border-radius: 0;
+}
+
+.fixed-table-toolbar .btn-group > .btn-group:first-child > .btn {
+    border-top-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+}
+
+.fixed-table-toolbar .btn-group > .btn-group:last-child > .btn {
+    border-top-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+}
+
+.bootstrap-table .table > thead > tr > th {
+    vertical-align: bottom;
+    border-bottom: 1px solid #ddd;
+}
+
+/* support bootstrap 3 */
+.bootstrap-table .table thead > tr > th {
+    padding: 0;
+    margin: 0;
+}
+
+.bootstrap-table .fixed-table-footer tbody > tr > td {
+    padding: 0 !important;
+}
+
+.bootstrap-table .fixed-table-footer .table {
+    border-bottom: none;
+    border-radius: 0;
+}
+
+.pull-right .dropdown-menu {
+    right: 0;
+    left: auto;
+}
+
+/* calculate scrollbar width */
+p.fixed-table-scroll-inner {
+    width: 100%;
+    height: 200px;
+}
+
+div.fixed-table-scroll-outer {
+    top: 0;
+    left: 0;
+    visibility: hidden;
+    width: 200px;
+    height: 150px;
+    overflow: hidden;
+}
diff --git a/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-theme.min.css b/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-theme.min.css
new file mode 100644
index 0000000..dc95d8e
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap-theme.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.3.6 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
+/*# sourceMappingURL=bootstrap-theme.min.css.map */
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap.min.css b/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap.min.css
new file mode 100644
index 0000000..4cf729e
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/stylesheets/bootstrap.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.3.6 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
+/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/admportal/public/stylesheets/dataTables.bootstrap.min.css b/sdnc-a1-controller/oam/admportal/public/stylesheets/dataTables.bootstrap.min.css
new file mode 100644
index 0000000..745f299
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/stylesheets/dataTables.bootstrap.min.css
@@ -0,0 +1 @@
+table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable{border-collapse:separate !important}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0}
diff --git a/sdnc-a1-controller/oam/admportal/public/stylesheets/jquery.treegrid.css b/sdnc-a1-controller/oam/admportal/public/stylesheets/jquery.treegrid.css
new file mode 100644
index 0000000..b5bf0de
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/stylesheets/jquery.treegrid.css
@@ -0,0 +1,6 @@
+.treegrid-indent {width:16px; height: 16px; display: inline-block; position: relative;}

+

+.treegrid-expander {width:16px; height: 16px; display: inline-block; position: relative; cursor: pointer;}

+

+.treegrid-expander-expanded{background-image: url(../img/collapse.png); }

+.treegrid-expander-collapsed{background-image: url(../img/expand.png);}

diff --git a/sdnc-a1-controller/oam/admportal/public/stylesheets/signin.css b/sdnc-a1-controller/oam/admportal/public/stylesheets/signin.css
new file mode 100644
index 0000000..995df48
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/stylesheets/signin.css
@@ -0,0 +1,40 @@
+body {
+  padding-top: 40px;
+  padding-bottom: 40px;
+  background-color: #eee;
+}
+
+.form-signin {
+  max-width: 330px;
+  padding: 15px;
+  margin: 0 auto;
+}
+.form-signin .form-signin-heading,
+.form-signin .checkbox {
+  margin-bottom: 10px;
+}
+.form-signin .checkbox {
+  font-weight: normal;
+}
+.form-signin .form-control {
+  position: relative;
+  height: auto;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  padding: 10px;
+  font-size: 16px;
+}
+.form-signin .form-control:focus {
+  z-index: 2;
+}
+.form-signin input[type="email"] {
+  margin-bottom: -1px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.form-signin input[type="password"] {
+  margin-bottom: 10px;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
diff --git a/sdnc-a1-controller/oam/admportal/public/stylesheets/style.css b/sdnc-a1-controller/oam/admportal/public/stylesheets/style.css
new file mode 100644
index 0000000..30e047d
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/public/stylesheets/style.css
@@ -0,0 +1,8 @@
+body {
+  padding: 50px;
+  font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
+}
+
+a {
+  color: #00B7FF;
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/admportal/routes/index.js b/sdnc-a1-controller/oam/admportal/routes/index.js
new file mode 100644
index 0000000..896c948
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/routes/index.js
@@ -0,0 +1,9 @@
+var express = require('express');
+var router = express.Router();
+
+/* GET home page. */
+router.get('/', function(req, res) {
+  res.render('index', { title: 'Express' });
+});
+
+module.exports = router;
diff --git a/sdnc-a1-controller/oam/admportal/routes/users.js b/sdnc-a1-controller/oam/admportal/routes/users.js
new file mode 100644
index 0000000..c00d7de
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/routes/users.js
@@ -0,0 +1,9 @@
+var express = require('express');
+var router = express.Router();
+
+/* GET users listing. */
+router.get('/', function(req, res) {
+  res.send('respond with a resource');
+});
+
+module.exports = router;
diff --git a/sdnc-a1-controller/oam/admportal/server/adminPortal.db b/sdnc-a1-controller/oam/admportal/server/adminPortal.db
new file mode 100644
index 0000000..18429e4
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/adminPortal.db
Binary files differ
diff --git a/sdnc-a1-controller/oam/admportal/server/app.js b/sdnc-a1-controller/oam/admportal/server/app.js
new file mode 100644
index 0000000..898645e
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/app.js
@@ -0,0 +1,73 @@
+var express = require('express');
+var app = express();
+var path = require('path');
+var session = require('express-session');
+var cookieParser = require('cookie-parser');
+var bodyParser = require('body-parser');
+var PropertiesReader = require('properties-reader');
+var properties = PropertiesReader(process.argv[2]); //property file passed
+var morgan = require('morgan');
+var _ = require('lodash');
+var expressSanitizer = require('express-sanitizer');
+//var multer = require('multer');
+//var done=false;
+
+// Check to make sure SDNC_CONFIG_DIR is set
+var sdnc_config_dir = process.env.SDNC_CONFIG_DIR;
+if ( typeof sdnc_config_dir == 'undefined' )
+{
+	console.log('ERROR the SDNC_CONFIG_DIR environmental variable is not set.');
+	return;
+}
+	
+
+var moptions = { "stream": 
+{
+	write: function(str)
+	{
+		if ( str.indexOf("/javascript") == -1 && str.indexOf("/stylesheets") == -1)
+		{
+			console.log(str); 
+		}
+	}
+}
+};
+var accesslog = morgan( "|:method|HTTP/:http-version|:status|:url - requestIP-:remote-addr", moptions);
+
+//var favicon = require('serve-favicon');
+
+// initialize session objects
+app.use(session({
+	secret:'SDN7C',
+	resave: false,
+	saveUninitialized: false
+}));
+
+app.use(cookieParser());
+app.use(bodyParser.urlencoded({
+  extended: true
+}));
+
+// mount express-sanitizer here
+app.use(expressSanitizer()); // this line needs to follow bodyParser
+
+app.use(accesslog); // http access log
+app.use(express.static(process.cwd() + '/public')); // static files
+
+
+//app.use('trust proxy', true);
+app.enable('trust proxy');
+
+// view engine setup
+app.set('views', path.join(__dirname, '../views'));
+app.set('view engine', 'ejs');
+
+
+var router = require('./router')(app);
+
+// Error Handling
+app.use(function(err,req,res,next) {
+	res.status(err.status || 500);
+});
+
+module.exports = app;
diff --git a/sdnc-a1-controller/oam/admportal/server/netdb_updater.js b/sdnc-a1-controller/oam/admportal/server/netdb_updater.js
new file mode 100644
index 0000000..6dde27b
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/netdb_updater.js
@@ -0,0 +1,749 @@
+var log4js = require('log4js');
+var http = require('http');
+var async = require('async');
+var properties = require(process.env.SDNC_CONFIG_DIR + '/netdb-updater.json');
+var admProperties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
+var csvtojson = require('csvtojson');
+var mysql = require('mysql');
+var moment = require('moment');
+var os = require('os');
+var fs = require('fs.extra');
+
+// Check to make sure SDNC_CONFIG_DIR is set
+var sdnc_config_dir = process.env.SDNC_CONFIG_DIR;
+if ( typeof sdnc_config_dir == 'undefined' )
+{
+    console.log('ERROR the SDNC_CONFIG_DIR environmental variable is not set.');
+    return;
+}
+
+// SETUP LOGGER
+log4js.configure(process.env.SDNC_CONFIG_DIR + '/netdb.log4js.json');
+var logger = log4js.getLogger('netdb');
+logger.setLevel(properties.netdbLogLevel);
+
+var yargs = require('yargs')
+  .usage("\nUsage: node netdb_updater -t link_master|router_master")
+  .demand('t')
+  .alias('t', 'table')
+  .example("Example: node netdb_updater -t link_master","Update SDNC LINK_MASTER table from NetDB.")
+  .argv;
+
+var dbTable = yargs.table;
+var debug = properties.netdbDebug;
+var env = properties.netdbEnv; 
+var retSuccess = false;
+
+// DB Setup
+var currentDB = '';
+var dbConnection = '';
+var db01 = '';
+var db02 = '';
+var count = 0;
+var errorMsg = [];
+
+var dbtasks = [];
+dbtasks.push( function(callback) { checkParams(callback); } );
+dbtasks.push( function(callback) { dbConnect(callback); } );
+//dbtasks.push( function(callback) { netdb(callback); } );
+
+logger.debug('\n\n********** START PROCESSING - Env=' + env + ' Debug=' + debug + ' **********');
+
+async.series(dbtasks, function(err,result){
+    if(err) {
+		logger.error(err + ' COUNT: ' + count);
+    }
+    else {
+		if ( errorMsg.length > 0 ){
+			logger.error(errorMsg);
+		}
+	}
+});
+
+
+function checkParams(scb){
+	if ( dbTable != 'link_master' && dbTable != 'router_master' ){
+		scb("Invalid parameter passed in '" + dbTable + " ' exiting.'");
+	}
+	else{
+		scb(null);
+	}
+}
+
+
+async.whilst(
+    	function () { return count < properties.netdbRetryInterval },
+    	function (callback) {
+			if ( dbTable == 'link_master' ){
+				getLinkMaster(callback);
+			}
+			else if (dbTable == 'router_master'){
+				getRouterMaster(callback);
+			}
+			else{ // should never hit this condition
+				logger.debug("Invalid parameter passed in '" + dbTable + " ' exiting.'");
+			}
+    	},
+    	function (err) {
+logger.debug('whilst err function errorMsg = ' + errorMsg);
+			// report error
+			if ( errorMsg.length > 0 ){
+				logger.debug(errorMsg + ' COUNT: ' + count);
+				process.exit(1);
+			}
+			else{
+				logger.debug('success');
+				process.exit(0);
+			}
+    	}
+);
+
+
+function returnError(emsg, cb){
+	retSuccess=false;
+	errorMsg.push(emsg);
+	if ( count == properties.netdbRetryInterval ) { logger.error(errorMsg); }
+    setTimeout( function(){
+    		cb(null);
+		}, properties.netdbWaitTime);
+}
+
+function returnSuccess(cb){
+logger.debug('inside returnSuccess');
+	errorMsg = '';
+	//var cnt = properties.netdbRetryInterval;
+	//logger.debug('b4 inc returnSuccess count=' + count);
+	//count = ++cnt;
+	//logger.debug('after inc returnSuccess count=' + count);
+	//cb(null);
+	retSuccess=true;
+process.exit(0);
+} 
+
+function getRouterMaster(cb){
+
+	logger.info('getRouterMaster debug=' + debug + ' count=' + count);
+
+	// setup connection
+    var netdbEnv = properties.netdbEnv;
+    var auth_param = '';
+    if ( netdbEnv == 'e2e' || netdbEnv == 'prod' ){
+        // conexus network
+        auth_param = '?auth=' + admProperties['ip-addresses']['eth2'] + ';'
+    }else{
+        // app network
+        auth_param = '?auth=' + admProperties['ip-addresses']['eth1:0'] + ';'
+    }
+    var username = properties.netdbUser;;
+    var password = properties.netdbPassword;
+	var date = moment().format('YYYYMMDD');
+    var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64');
+    var host = properties.netdbHost;
+    var port = properties.netdbPort;
+    var path = '/' + properties.netdbPath
+                + '/' + properties.netdbNetwork
+                + '/' + properties.netdbApiName
+                + auth_param
+                + 'client=' + properties.netdbClientName + ';'
+                + 'date=' + date + ';'
+                + 'reportName=' + dbTable + ';'
+                + 'type=' + properties.netdbType;
+
+    var header = { 'Content-Type': 'text/csv' };
+    //var header = {'Host': host, 'Authorization': auth, 'Content-Type': 'text/csv' };
+    var options = {
+        method            : "GET",
+        path              : path,
+        host              : host,
+        port              : port,
+        headers           : header
+    };
+
+	logger.debug('options:\n' + JSON.stringify(options,null,2));
+
+    var request = http.request(options, function(response) {
+
+    	var response_str = '';
+		if ( retSuccess == true ){
+			var cnt = properties.netdbRetryInterval;
+			count = ++cnt;
+		}
+		else{
+			count++;
+		}
+
+        logger.debug('STATUS: ' + response.statusCode + ' content-type=' + response.headers['content-type']);
+
+        // Read the response from ODL side
+        response.on('data', function(chunk) {
+            response_str += chunk;
+        });
+
+        response.on('end', function() {
+
+			logger.debug('HEADERS:' + JSON.stringify(response.headers));
+
+            if(response.statusCode == 200){
+
+                if(response_str.length > 0){
+
+					// save the upload
+					try{
+						fs.writeFileSync('/sdncvar/sdnc/files/netdb-updater/' + moment().unix() + ".netdb." + dbTable + '.csv', response_str);
+					}
+					catch(e){
+						// this is not in reqs, if it fails keep on going.
+						logger.error('Error writing NetDB file:' + e);
+					}
+
+					if (response.headers['content-type'].indexOf('html') > 0){
+						returnError('Error:Unexpected content-type:' + response.headers['content-type'] + ' returned.\n', cb);
+						return;
+					}
+                    // need to parse csv file
+                    var Converter=csvtojson.Converter;
+                    var csvConverter = new Converter({
+                        noheader:true
+                    });
+                    var routerMasterSQL = '';
+
+                    // end_parsed will be emitted once parsing is finished
+                    csvConverter.on("end_parsed", function(respObj){
+
+                        routerMasterSQL = routerMasterSQL.concat("INSERT INTO ROUTER_MASTER (crs_name, loopback_ip)");
+                        for ( var x=0; x < respObj.length; x++ ){
+
+                           	if ( respObj[x].field1.length == 0 ){
+                               	returnError('Required field [crs_name] is null.', cb);
+                           	}
+
+							if (x!=0){
+								routerMasterSQL = routerMasterSQL.concat(' union ');
+							}
+							routerMasterSQL = routerMasterSQL.concat(" SELECT " 
+								+ "'" + respObj[x].field1 + "',"
+                               	+ "'" + respObj[x].field2 + "' FROM DUAL ");
+                        }
+                        //logger.debug('SQL: ' + routerMasterSQL);
+	
+			if (debug != 'debug' && env != 'dev'){
+
+                        	var tasks = [];
+                        	tasks.push( function(callback) { updateRouterMaster(routerMasterSQL,callback); } );
+                        	async.series(tasks, function(err,result){
+                            	if(err) {
+                                	returnError(err,cb);
+					return;
+                            	}
+                            	else {
+					logger.info('*** Router Master Table Replaced ***');
+                                	returnSuccess(cb);
+					return;
+                            	}
+                        	});
+			}
+			else{
+logger.debug('*** debug ***');
+                            	returnSuccess(cb);
+					return;
+			}
+
+                    });
+                    csvConverter.on("error",function(errMsg,errData){
+                        returnError(errMsg,cb);
+						return;
+                    });
+                    csvConverter.fromString(response_str, function(err,result){
+                        if(err){
+							returnError(err,cb);
+							return;
+                        }
+                    });
+                }
+                else{
+                    //logger.debug("no data");
+					returnError('no data',cb);
+					return;
+                }
+            }
+            else if(response.statusCode == 404){
+				returnError('Router Master Table for ' + date + ' is not Available.',cb);
+				return;
+			}
+            else {
+				returnError('Status Code:' + response.statudCode + ' returned for Router Master Table query.',cb);
+				return;
+            }
+        });
+    });
+    request.on('error', function(e) {
+	    if ( retSuccess == true ){
+			var cnt = properties.netdbRetryInterval;
+			count = ++cnt;
+		}
+		else{
+			count++;
+		}	
+        returnError(e,cb);
+		return;
+    });
+    request.end();
+}
+
+function getLinkMaster(cb){
+
+	logger.info('getLinkMaster debug=' + debug + ' count=' + count);
+
+    // setup connection
+    var netdbEnv = properties.netdbEnv;
+    var auth_param = '';
+    if ( netdbEnv == 'e2e' || netdbEnv == 'prod' ){
+        // conexus network
+        auth_param = '?auth=' + admProperties['ip-addresses']['eth2'] + ';'
+    }else{
+        // app network
+        auth_param = '?auth=' + admProperties['ip-addresses']['eth1:0'] + ';'
+    }
+    var username = properties.netdbUser;;
+    var password = properties.netdbPassword;
+    var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64');
+    var host = properties.netdbHost;
+    var port = properties.netdbPort;
+	var date = moment().format('YYYYMMDD');
+    var path = '/' + properties.netdbPath
+                + '/' + properties.netdbNetwork
+                + '/' + properties.netdbApiName
+                + auth_param
+                + 'client=' + properties.netdbClientName + ';'
+                + 'date=' + date + ';'
+                + 'reportName=' + dbTable + ';'
+                + 'type=' + properties.netdbType;
+
+    var header = { 'Content-Type': 'text/csv' };
+    //var header = {'Host': host, 'Authorization': auth, 'Content-Type': 'text/csv' };
+    var options = {
+        method            : "GET",
+        path              : path,
+        host              : host,
+        port              : port,
+        headers           : header
+    };
+
+    logger.debug('options:\n' + JSON.stringify(options,null,2));
+
+	var request = http.request(options, function(response) {
+
+        logger.debug('STATUS: ' + response.statusCode + ' content-type=' + response.headers['content-type']);
+
+		if ( retSuccess == true ){
+        	var cnt = properties.netdbRetryInterval;
+        	count = ++cnt;
+    	}
+		else{
+    		count++
+		}
+
+        var response_str = '';
+
+        // Read the response from ODL side
+        response.on('data', function(chunk) {
+            response_str += chunk;
+        });
+
+        response.on('end', function() {
+
+			logger.debug('HEADERS:' + JSON.stringify(response.headers));
+
+            if(response.statusCode == 200){
+
+				if(response_str.length > 0){
+
+					//logger.debug('response_str=' + response_str);
+					// save the upload
+                    try{
+						fs.writeFileSync('/sdncvar/sdnc/files/netdb-updater/' + moment().unix() + ".netdb." + dbTable + '.csv', response_str);
+                    }
+                    catch(e){
+                        // this is not in reqs, if it fails keep on going.
+                        logger.error('Error writing NetDB file:' + e);
+                    }
+
+					if (response.headers['content-type'].indexOf('html') > 0){
+						returnError('Error:Unexpected content-type:' + response.headers['content-type'] + ' returned.\n', cb);
+						return;
+					}
+					// need to parse csv file
+					var Converter=csvtojson.Converter;
+					var csvConverter = new Converter({
+						noheader:true
+					});
+
+					var linkMasterSQL = '';
+
+					// end_parsed will be emitted once parsing is finished
+					csvConverter.on("end_parsed", function(jsonObj){
+
+						linkMasterSQL = linkMasterSQL.concat("INSERT INTO LINK_MASTER (link_interface_ip, source_crs_name, destination_crs_name, link_speed, default_cost, bundle_name, shutdown)"); 
+						for ( var x=0; x < jsonObj.length; x++ ){
+							if ( jsonObj[x].field1.length == 0 ){
+								returnError('Required field [link_interface_ip] is null.', cb);
+								return;
+							}
+							if ( jsonObj[x].field2.length == 0 ){
+								returnError('Required field [source_crs_name] is null.', cb);
+								return;
+							}
+							if ( jsonObj[x].field3.length == 0 ){
+								returnError('Required field [destination_crs_name] is null.', cb);
+								return;
+							}
+							if (x!=0){
+								linkMasterSQL = linkMasterSQL.concat(' union ');
+							}
+
+							linkMasterSQL = linkMasterSQL.concat(" SELECT " 
+								+ "'" + jsonObj[x].field1 + "',"
+								+ "'" + jsonObj[x].field2 + "',"
+								+ "'" + jsonObj[x].field3 + "',"
+								+ jsonObj[x].field4 + ","
+								+ jsonObj[x].field5 + ","
+								+ "'" + jsonObj[x].field6 + "',"
+								+ "'" + jsonObj[x].field7 + "' FROM DUAL");
+						}
+						//logger.debug('SQL: ' + linkMasterSQL);
+
+						if (debug != 'debug' && env != 'dev'){
+                    		// update db
+							var tasks = [];
+							tasks.push( function(callback) { updateLinkMaster(linkMasterSQL,callback); } );
+    						async.series(tasks, function(err,result){
+								if(err)
+                            	{
+                                	returnError(err,cb);
+									return;
+                            	}
+                            	else
+                            	{
+									logger.info('*** Link Master Table Replaced ***');
+                                	returnSuccess(cb);
+									return;
+                            	}
+    						});
+						}
+						else{
+                        	returnSuccess(cb);
+							return;
+						}
+					});
+					csvConverter.on("error",function(errMsg,errData){
+    					returnError(errMsg,cb);
+						return;
+  					});
+					csvConverter.fromString(response_str, function(err,result){
+						if(err){
+    						returnError(errMsg,cb);
+							return;
+						}
+					});
+                }
+                else{
+    				returnError('no data',cb);
+					return;
+                }
+            }
+            else if(response.statusCode == 404){
+				returnError('Link Master Table for ' + date + ' is not Available.',cb);
+				return;
+			}
+            else {
+				returnError('Status Code:' + response.statudCode + ' returned for Link Master Table query.',cb);
+				return;
+            }
+    	});
+	});
+	request.on('error', function(e) {
+		if ( retSuccess == true ){
+        	var cnt = properties.netdbRetryInterval;
+        	count = ++cnt;
+    	}
+		else{
+    		count++
+		}
+        returnError(e,cb);
+        return;
+	});
+	request.end();
+}
+			
+
+function dbConnect(callback){
+
+        var l_db01 = admProperties['databases']['0'];
+	var db01Array = l_db01.split("|");
+	db01 = db01Array[0];
+
+        var l_db02 = admProperties['databases']['1'];
+	var db02Array = l_db02.split("|");
+	db02 = db02Array[0];
+
+	if ( admProperties.dbFabric == 'true' )
+	{
+		logger.debug('connectFabric()');
+
+    // testing 
+    var fabric_connection = mysql.createConnection({
+        host            : admProperties.dbFabricServer,
+        user            : admProperties.dbFabricUser,
+        password        : admProperties.dbFabricPassword,
+        database        : admProperties.dbFabricDB,
+        port            : admProperties.dbFabricPort
+    });
+
+
+    fabric_connection.connect( function(err) {
+
+        if (err) {
+            callback(err);
+            return;
+        }
+        fabric_connection.query('CALL dump.servers()', function(err,rows) {
+
+            var masterDB = '';
+
+            if (err) {
+                callback(err);
+                return;
+            }
+            fabric_connection.end();
+            logger.debug('rows: ' + JSON.stringify(rows,null,2));
+
+            // fabric servers
+            for ( var x=0; x<rows.length; x++)
+            {
+                // database servers
+                for ( var y=0; y<rows[x].length; y++)
+                {
+                    var row = rows[x][y];
+                    if (row.group_id == admProperties.dbFabricGroupId)
+                    {
+                        if (row.status == '3' && row.mode == '3'){
+                            masterDB = row.host;
+                        }
+                    }
+                }
+            }
+            logger.debug('currentDB: ' + currentDB);
+            logger.debug('masterDB: ' + masterDB);
+
+            if (masterDB.length <=0)
+            {
+                logger.debug('no writable master db');
+                callback('no writable master db');
+                return;
+            }
+
+            if ( currentDB != masterDB )
+            {
+                currentDB = masterDB;
+                dbConnection = mysql.createConnection({
+                    connectionLimit   : admProperties.dbConnLimit,
+                    host              : currentDB,
+                    user              : admProperties.dbUser,
+                    password          : admProperties.dbPassword,
+                    database          : admProperties.dbName,
+                    multipleStatements: true,
+                    debug             : false
+                });
+            }
+            logger.debug('new currentDB: ' + currentDB);
+            logger.debug('new masterDB: ' + masterDB);
+            callback(null);
+            return;
+        });
+        fabric_connection.on('error', function(err){
+             logger.debug(err.code);
+             callback(err);
+		     return;
+        });
+    });
+	}
+	else
+	{
+    	currentDB = db01;
+
+    	var dbConn = mysql.createConnection({
+        	connectionLimit : admProperties.dbConnLimit,
+        	host            : currentDB,
+        	user            : admProperties.dbUser,
+        	password        : admProperties.dbPassword,
+        	database        : admProperties.dbName,
+        	multipleStatements: true,
+        	debug           : false
+    	});
+		logger.debug('initDB currentDB=' + currentDB);
+
+    	dbConn.connect(function(err,connection){
+
+        	if(err){
+            	logger.debug( String(err) ); // ALARM
+            	callback(err);
+            	return;
+        	}
+        	var sql = 'select @@read_only';
+        	dbConn.query(sql, function(err,result){
+            	dbConn.end();
+
+            	// @@read_only=0 means db is writable
+            	logger.debug('@@read_only=' + result[0]['@@read_only']);
+            	if ( result[0]['@@read_only'] != '0' )
+            	{
+                	if (currentDB == db01)
+                	{
+                    	currentDB = db02;
+                	}
+                	else
+                	{
+                    	currentDB = db01;
+                	}
+logger.debug('initDB reconnect to currentDB '+ currentDB);
+                	var newConnection = mysql.createConnection({
+                    	connectionLimit : admProperties.dbConnLimit,
+                    	host            : currentDB,
+                    	user            : admProperties.dbUser,
+                    	password        : admProperties.dbPassword,
+                    	database        : admProperties.dbName,
+                    	multipleStatements: true,
+                    	debug           : false
+                	}); // end create
+                	dbConnection = newConnection;
+                	callback(null);
+					return;
+            	}
+                dbConnection = dbConn;
+            	callback(null);
+				return;
+        	});
+    	});
+	}
+}
+
+function updateLinkMaster(linkMasterSQL,callback){
+
+logger.debug('updateLinkMaster');
+
+    dbConnection.connect(function(err,connection)
+    {
+        if(err){
+            logger.debug( String(err) ); // ALARM
+            callback(err, 'Unable to get database connection.');
+            return;
+        }
+    }); // end connection
+    dbConnection.beginTransaction(function(err) {
+    	if(err){
+            //dbConnection.release();
+            callback(err,String(err));
+            return;
+        }
+        var sql = "DELETE FROM LINK_MASTER";
+        dbConnection.query(sql,function(err,result)
+        {
+            if(err){
+                //dbConnection.release();
+                dbConnection.rollback( {rollback: 'NO RELEASE'},function(){
+                    callback(err,String(err));
+                    return;
+                });
+            }
+            dbConnection.query(linkMasterSQL,function(err,result)
+            {
+                if(err){
+                    //dbConnection.release();
+                    dbConnection.rollback( {rollback: 'NO RELEASE'},function(){
+                        callback(err,String(err));
+                        return;
+                    });
+                }
+                dbConnection.commit(function(err){
+                    if(err){
+                        //dbConnection.release();
+                		dbConnection.rollback( {rollback: 'NO RELEASE'},function(){
+                            callback(err,String(err));
+                            return;
+                        });
+                    }
+                    //dbConnection.release();
+                    callback(null);
+                });
+            })
+        });
+    }); // end transaction
+}
+
+function updateRouterMaster(routerMasterSQL,callback){
+
+logger.debug('updateRouterMaster');
+
+    dbConnection.connect(function(err,connection)
+    {
+        if(err){
+            logger.debug( String(err) ); // ALARM
+            callback(err, 'Unable to get database connection.');
+            return;
+        }
+    }); // end connection
+    dbConnection.beginTransaction(function(err) {
+        if(err){
+            //dbConnection.release();
+            callback(err,String(err));
+            return;
+        }
+        var sql = "DELETE FROM ROUTER_MASTER";
+        dbConnection.query(sql,function(err,result)
+        {
+            if(err){
+                //dbConnection.release();
+                dbConnection.rollback( function(){
+                    callback(err,String(err));
+                    return;
+                });
+            }
+            dbConnection.query(routerMasterSQL,function(err,result)
+            {
+                if(err){
+                    //dbConnection.release();
+                	dbConnection.rollback( function(){
+                        callback(err,String(err));
+                        return;
+                    });
+                }
+                dbConnection.commit(function(err){
+                    if(err){
+                        //dbConnection.release();
+                		dbConnection.rollback( function(){
+                            callback(err,String(err));
+                            return;
+                        });
+                    }
+                    //dbConnection.release();
+                    callback(null);
+                });
+            })
+        });
+    }); // end transaction
+}
+
+/*
+
+	logger.debug('getLinkMaster - count=' + count);
+	if ( true ) {
+		//fail
+		setTimeout( function(){
+			cb(null);}, properties.netdbWaitTime);
+		return;
+	}
+	// success
+	count = 10;
+	cb(null);
+}
+*/
diff --git a/sdnc-a1-controller/oam/admportal/server/npm-debug.log b/sdnc-a1-controller/oam/admportal/server/npm-debug.log
new file mode 100644
index 0000000..40e151a
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/npm-debug.log
@@ -0,0 +1,18 @@
+0 info it worked if it ends with ok
+1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'start' ]
+2 info using npm@1.4.28
+3 info using node@v0.10.35
+4 verbose node symlink /usr/bin/node
+5 error Error: ENOENT, open '/home/users/ar3165/projects/admin-portal2/server/package.json'
+6 error If you need help, you may report this *entire* log,
+6 error including the npm and node versions, at:
+6 error     <http://github.com/npm/npm/issues>
+7 error System Linux 3.13.0-40-generic
+8 error command "/usr/bin/node" "/usr/bin/npm" "start"
+9 error cwd /home/users/ar3165/projects/admin-portal2/server
+10 error node -v v0.10.35
+11 error npm -v 1.4.28
+12 error path /home/users/ar3165/projects/admin-portal2/server/package.json
+13 error code ENOENT
+14 error errno 34
+15 verbose exit [ 34, true ]
diff --git a/sdnc-a1-controller/oam/admportal/server/router/index.js b/sdnc-a1-controller/oam/admportal/server/router/index.js
new file mode 100644
index 0000000..a529375
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/index.js
@@ -0,0 +1,18 @@
+console.log("index.js");
+
+module.exports = function(app) {
+
+//console.log ( 'index port ' + server.address().port );
+
+	app.use('/', require('./routes/root'));
+	//app.use('/login', require('./routes/login'));
+	app.use('/odl', require('./routes/odl'));
+	app.use('/sla', require('./routes/sla'));
+	app.use('/user', require('./routes/user'));
+	//app.use('/gamma', require('./routes/gamma'));
+	app.use('/mobility', require('./routes/mobility'));
+	//app.use('/admin', require('./routes/admin'));
+	app.use('/preload', require('./routes/preload'));
+	//app.use('/svc-topology-operation', require('./routes/odl'));
+	//app.use('/wklist-delete', require('./routes/odl'));
+};
diff --git a/sdnc-a1-controller/oam/admportal/server/router/routes/OdlInterface.js b/sdnc-a1-controller/oam/admportal/server/router/routes/OdlInterface.js
new file mode 100755
index 0000000..1fc615c
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/routes/OdlInterface.js
@@ -0,0 +1,594 @@
+// OdlInterface.js
+var https = require('https');
+var http = require('http');
+var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
+
+
+var OdlInterface = function() {
+    // Call ODL page
+    //  get(uri,res)
+    //  post(uri,data, res)
+
+	var _healthcheck = function(options, callback)
+	{
+		// Setup request to ODL side
+		console.log('options:' + JSON.stringify(options,null,2));
+		var request = https.request(options, function(response) {
+			
+			var response_str = '';
+	    	// Read the response from ODL side
+	    	response.on('data', function(chunk) {
+				response_str += chunk;
+	    	});
+			
+			response.on('end', function() 
+			{
+				//logger.debug(response_str);
+				if(response.statusCode == 200)
+				{
+					console.log('200 OK');
+					callback(null, response_str);
+					return;
+				}
+				else{
+					console.log('not ok status=' + response.statusCode);
+					callback(response_str, 'statusCode=' + response.statusCode + '\n' + response_str);
+					return;
+				}
+			});
+		});
+		request.end()
+
+		request.on('error', function(err) {
+			console.error('err:' + err);
+			callback(err, err);
+			return;
+		});
+	}
+
+    var _get = function(uri,options,callback,req,res) 
+	{
+
+		options.method = "GET";
+		options.path = uri;
+
+		// Setup request to ODL side
+		console.log('options:' + JSON.stringify(options,null,2));
+		var request = https.request(options, function(response) {
+	    	// console.dir(response);
+  	    	console.log('STATUS: ' + response.statusCode);
+	    	var response_str = '';
+	    	// Read the response from ODL side
+	    	response.on('data', function(chunk) {
+				response_str += chunk;
+	    	});
+
+	    	response.on('end', function() 
+			{
+				console.log(response_str);
+
+				if(response.statusCode == 200)
+				{
+				// make sure response starts with JSON string
+        		if (response_str && response_str.indexOf('{') == 0) {
+            		//console.log("response: ", result);
+						
+					req.session.l3sdnPageInfo = undefined;
+					var x=0;
+					var pageList = [];
+					var obj_rows = [];
+					var rows = [];
+					var robj = JSON.parse(response_str);
+
+					if ( typeof robj['services']['layer3-service-list'] != 'undefined' )
+					{
+						for( var i=0; i<robj['services']['layer3-service-list'].length; i++)
+						{
+							obj_rows.push( robj['services']['layer3-service-list'][i] );
+						}
+					}
+					else
+					{
+            			res.render('pages/err', {result:{code:'failure', msg:'no data Error: ' + String(err)}, header:process.env.MAIN_MENU});
+						callback(null,response_str,res);
+						return;
+					}
+ 
+        			var rows = [];
+					var l3sdnPageInfo =
+        			{
+            			'totalRows'   : obj_rows.length,
+            			'pageSize'    : 18,
+            			'pageCount'   : parseInt(obj_rows.length/18),
+            			'currentPage' : 1
+        			}
+
+					while (obj_rows.length > 0){
+            			pageList.push(obj_rows.splice(0,l3sdnPageInfo.pageSize));
+        			}
+					l3sdnPageInfo.rows = pageList[0]; // first page
+					l3sdnPageInfo.pages = pageList; // all pages
+
+
+					req.session.l3sdnPageInfo = l3sdnPageInfo;
+					var privObj = req.session.loggedInAdmin;
+
+            		res.render('odl/listWklst', 
+					{
+            			pageInfo  : l3sdnPageInfo,
+            			result    : {code:'', msg:''},
+						privilege : privObj, header:process.env.MAIN_MENU
+    				});
+
+
+        		} else {
+            		res.render('pages/err', {result:{code:'failure', msg:'no data Error: ' + String(err)}, header:process.env.MAIN_MENU});
+        		}
+	        	callback(null, response_str, res);
+			}
+			else
+			{
+				callback(response_str,response_str,res);
+				//res.render('pages/err', {result:{code:'failure', msg:'Failed to retrieve worklist. ' + response_str}});
+			}
+	    	});
+		});
+
+		request.end()
+
+		request.on('error', function(err) {
+	    	callback(err,null, res);
+		});
+    }
+
+    var _getid = function(uri,options,res) {
+	options.method = "GET";
+	options.path = uri;
+
+	// Setup request to ODL side
+	var request = https.request(options, function(response) {
+	    // console.dir(response);
+  	    //console.log('STATUS: ' + response.statusCode);
+	    var response_str = '';
+	    // Read the response from ODL side
+	    response.on('data', function(chunk) {
+			response_str += chunk;
+	    });
+
+	    response.on('end', function() {
+			if(response.statusCode == 200){
+				if(response_str){
+					//console.log("response: ", response_str);
+					res.render('odl/view', {response_obj: JSON.parse(response_str), header:process.env.MAIN_MENU});
+				}
+				else{
+					//console.log("no data");
+					res.render('pages/err', {result:{code:'failure', msg:'Failed to retrieve worklist'}, header:process.env.MAIN_MENU});
+				}
+			}
+			else {
+				//console.log("bad status code:", response.statusCode);
+				res.render('pages/err', {result:{code:'failure', msg:'Failed to retrieve worklist. Status Code:' + response.statusCode}, header:process.env.MAIN_MENU});
+			}
+	    });
+	});
+
+	request.end()
+
+	request.on('error', function(err) {
+		//console.log(err);
+		res.render('pages/err', {result:{code:'failure', msg:'Failed to get worklist item. ' + String(err)}, header:process.env.MAIN_MENU});
+	});
+    }
+
+	var _getvrlan = function(uri,options,callback) {
+    options.method = "GET";
+    options.path = uri;
+
+
+	//callback(null,'');	
+    // Setup request to ODL side
+    var request = https.request(options, function(response) {
+        // console.dir(response);
+        //console.log('STATUS: ' + response.statusCode);
+        var response_str = '';
+        // Read the response from ODL side
+        response.on('data', function(chunk) {
+            response_str += chunk;
+        });
+
+
+        response.on('end', function() {
+            if(response.statusCode == 200){
+                if(response_str){
+					callback(null,response_str);
+					return;
+                }
+                else{
+					callback('err','no data');
+					return;
+                }
+            }
+            else {
+				callback('error',response.statusCode);
+				return;
+            }
+        });
+    });
+
+    request.end()
+
+    request.on('error', function(err) {
+		callback(err,String(err));
+		return;
+    });
+    }
+
+
+	var _getvnf = function(uri,options,req,res) {
+    options.method = "GET";
+    options.path = uri;
+
+    // Setup request to ODL side
+    var request = https.request(options, function(response) {
+        // console.dir(response);
+        //console.log('STATUS: ' + response.statusCode);
+        var response_str = '';
+        // Read the response from ODL side
+        response.on('data', function(chunk) {
+            response_str += chunk;
+        });
+
+        response.on('end', function() {
+            if(response.statusCode == 200){
+                if(response_str){
+                    //console.log("response: ", response_str);
+                    res.render('odl/viewvnf', { vnf_obj: JSON.parse(response_str),
+											   request_id: req.query['request'], header:process.env.MAIN_MENU });
+                }
+                else{
+                    //console.log("no data");
+					res.render('pages/err', {result:{code:'failure', msg:'Failed to retrieve worklist item.'}, header:process.env.MAIN_MENU});
+                }
+            }
+            else {
+                //console.log("bad status code:", response.statusCode);
+				res.render('pages/err', {result:{code:'failure', msg:'Failed to retrieve worklist. Status Code:' + response.statusCode}, header:process.env.MAIN_MENU});
+            }
+        });
+    });
+
+    request.end()
+
+    request.on('error', function(err) {
+        //console.log(err);
+        res.render('pages/err', {result:{code:'failure', msg:'Failed getting VNF information. Error: '+ String(err)}, header:process.env.MAIN_MENU});
+    });
+    }
+
+	var _getPreloadVnfData = function(uri,options,res,callback) {
+
+    options.method = "GET";
+    options.path = uri;
+
+
+    // Setup request to ODL side
+	var protocol;
+	if ( process.env.NODE_ENV != 'production' ){
+    	protocol = http;
+	}else{
+    	protocol = https;
+	}
+
+console.log('NODE_ENV:' + process.env.NODE_ENV);
+console.log('GET: ' + JSON.stringify(options,null,4));
+
+    var request = protocol.request(options, function(response) {
+
+        var response_str = '';
+
+        // Read the response from ODL side
+        response.on('data', function(chunk) {
+            response_str += chunk;
+        });
+
+        response.on('end', function() {
+console.log('response_str: ' + response_str);
+console.log('response.statusCode: ' + response.statusCode);
+            if(response.statusCode == 200){
+                if(response_str){
+						callback(null,response_str);
+						return;
+				}
+                else{
+					callback('Error - No data returned.');
+					return;
+                }
+            }
+            else {
+				if ( response.statusCode == 404 )
+				{
+					callback('HTTP Status Code:' + response.statusCode + '.  Not Found.');
+					return;
+				}
+				else if ( response_str.length > 0 )
+				{
+					callback('HTTP Status Code:' + response.statusCode + '.  ' + response_str);
+					return;
+				}
+				else
+				{
+					callback('HTTP Status Code:' + response.statusCode + '.  No data returned.');
+					return;
+				}
+            }
+        });
+    });
+
+    request.end()
+
+    request.on('error', function(err) {
+		callback(err);
+		return;
+    });
+    }
+
+var _getClusterStatus = function(options,callback) {
+    //options.method = "GET";
+    //options.path = uri;
+
+    console.log('URI='+options.path);
+
+    // Setup request to ODL side
+    var protocol = properties.odlProtocol;
+console.log('protocol=' + protocol);
+    if ( protocol == 'http' || protocol == 'HTTP' )
+    {
+console.log('http request');
+	var request = http.request(options, function(response) {
+        	var response_str = '';
+
+        	// Read the response from ODL side
+        	response.on('data', function(chunk) {
+            		response_str += chunk;
+        	});
+
+
+        	response.on('end', function() {
+console.log('HTTP StatusCode='+response.statusCode);
+            		if(response.statusCode == 200){
+                		if(response_str){
+console.log('response_str='+response_str);
+                    			callback(null,JSON.parse(response_str));
+                    			return;
+                		}
+                		else{
+                    			callback(null,'no data');
+                    			return;
+                		}
+            		}
+            		else {
+                		callback(null,response.statusCode);
+                		return;
+            		}
+        	});
+    		});
+
+    	request.end()
+
+    	request.on('error', function(err) {
+        	callback(null,String(err));
+        	return;
+    	});
+    }
+    else {
+	var request = https.request(options, function(response) {
+                var response_str = '';
+
+                // Read the response from ODL side
+                response.on('data', function(chunk) {
+                        response_str += chunk;
+                });
+
+
+                response.on('end', function() {
+                        if(response.statusCode == 200){
+                                if(response_str){
+console.log('response_str='+response_str);
+                                        callback(null,JSON.parse(response_str));
+                                        return;
+                                }
+                                else{
+                                        callback(null,'no data');
+                                        return;
+                                }
+                        }
+                        else {
+                                callback(null,response.statusCode);
+                                return;
+                        }
+                });
+                });
+
+        request.end()
+
+        request.on('error', function(err) {
+                callback(null,String(err));
+                return;
+        });
+    }
+}
+
+    var _delete = function(uri,options,res,callback) {
+		options.method = 'DELETE';
+		options.path = uri;
+
+
+        // Setup request to ODL side
+        //var request = https.request(options, function(response) {
+        var request = http.request(options, function(response) {
+            //console.log('STATUS: ' + response.statusCode);
+            var response_str = '';
+            // Read the response from ODL side
+            response.on('data', function(chunk) {
+                response_str += chunk;
+            });
+
+            response.on('end', function() {
+				if(response.statusCode == 200){
+                    callback(null);
+                    return;
+                }
+                else {
+                    callback('Error:' + response_str);
+                    return;
+                }
+            });
+        });
+		request.on('error', function(err) {
+	    	callback(err);
+			return;
+		});
+        request.end()
+    }
+
+    var _post = function(uri,options,data,res,callback)
+	{
+		options.method = 'POST';
+		options.path = uri;
+
+
+		// Setup request to ODL side
+		var protocol;
+		//if ( process.env.NODE_ENV != 'production' ){
+    		protocol = http;
+		//}else{
+    		//protocol = https;
+		//}
+		var request = protocol.request(options, function(response)
+		{
+	    	var response_str = '';
+	    	// Read the response from ODL side
+	    	response.on('data', function(chunk) {
+				response_str += chunk;
+                //logger.debug('chunk:' + chunk);
+	    	});
+
+	    	// end of request, check response
+	    	response.on('end', function() {
+				console.log('post status code:'+response.statusCode);
+				if(response.statusCode == 200 ){
+                    try {
+				        var respObj = JSON.parse(response_str);
+                        console.log('response_str.length:' + response_str.length);
+					    if(response_str){
+	        			    console.log("post response-code:" + respObj['output']['response-code']);
+						
+                    	    if ( respObj['output']['response-code'] == 200 ){
+                        	    callback(null,response_str);
+                        	    return;
+                    	    }else{
+                        	    callback('Error - response-code:' + respObj['output']['response-code'] + '  response-message:' + respObj['output']['response-message']);
+                        	    return;
+                    	    }
+					    }else{
+						    // success
+	            		    callback(null);
+						    return;
+					    }
+                    }
+                    catch (error) {
+                        callback('Error parsing response: ' + error);
+                        return;
+                    }
+				}
+            	else {
+				    var respObj = null; 
+                    if ( response_str.length > 0 ) {
+                        console.log('response_str:' + response_str);
+				        try {
+                            respObj = JSON.parse(response_str);
+                            if ( typeof respObj['errors'] != 'undefined' )
+					        {
+                                console.log('Error' + JSON.stringify(respObj));
+						        if ( typeof respObj['errors']['error'][0]['error-message'] != 'undefined' )
+						        {
+							        callback('HTTP Status Code:' + response.statusCode + '. Message:' 
+								        + respObj['errors']['error'][0]['error-message']);
+                			        return;
+						        }
+						        else
+						        {
+							        callback('Error - HTTP Status Code:' + response.statusCode + '.');
+                			        return;
+						        }
+					        }
+					        else
+					        {
+						        callback('Error - HTTP Status Code:' + response.statusCode + '.');
+                		        return;
+					        }
+                        }
+                        catch (error) {
+						    callback('Error - HTTP Status Code:' + response.statusCode + '.');
+                		    return;
+                        }
+                    }
+                    else{
+						callback('Error - HTTP Status Code:' + response.statusCode + '.');
+                		return;
+					}
+            	}
+	    	});
+		});
+
+		request.on('error', function(err) {
+	    	callback(err);
+			return;
+		});
+
+    	request.write(data);
+		request.end()
+    }
+
+    var _postSubnetAllocated = function(uri,options,data,callback,res) {
+        options.method = 'POST';
+        options.path = uri;
+
+        // Setup request to ODL side
+        var request = https.request(options, function(response) {
+        var response_str = '';
+        // Read the response from ODL side
+        response.on('data', function(chunk) {
+        response_str += chunk;
+        });
+
+        // end of request, check response
+        response.on('end', function() {
+            //console.log("post: response: " + response_str);
+             callback(response_str,null,res);
+        });
+    });
+    request.on('error', function(err) {
+        callback(err,null, res);
+    });
+    request.write(data);
+    request.end()
+    }
+
+    return {
+	GetClusterStatus: _getClusterStatus,
+	Get: _get,
+	GetID: _getid,
+	GetVNF: _getvnf,
+	GetVRlan: _getvrlan,
+	GetPreloadVnfData: _getPreloadVnfData,
+	Post: _post,
+	PostSubnetAllocated: _postSubnetAllocated,
+	Delete: _delete,
+	Healthcheck: _healthcheck
+    };
+}();
+
+module.exports = OdlInterface;
+
diff --git a/sdnc-a1-controller/oam/admportal/server/router/routes/admin.js b/sdnc-a1-controller/oam/admportal/server/router/routes/admin.js
new file mode 100755
index 0000000..96c7fd8
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/routes/admin.js
@@ -0,0 +1,86 @@
+var express = require('express');
+var router = express.Router();
+var exec = require('child_process').exec;
+var util = require('util');
+var fs = require('fs');
+var dbRoutes = require('./dbRoutes');
+var csp = require('./csp');
+var cookieParser = require('cookie-parser');
+var bodyParser = require('body-parser');
+var sax = require('sax'),strict=true,parser = sax.parser(strict);
+var async = require('async');
+var csrf = require('csurf');
+
+var csrfProtection = csrf({cookie: true});
+router.use(cookieParser());
+
+
+// GET
+router.get('/getParameters', csp.checkAuth, dbRoutes.checkDB, function(req,res) {
+    dbRoutes.getParameters(req,res, {code:'', msg:''}, req.session.loggedInAdmin);
+});
+router.get('/deleteParameter', csp.checkAuth, dbRoutes.checkDB, csrfProtection, function(req,res) {
+
+	var privilegeObj = req.session.loggedInAdmin;
+	var tasks = [];
+	tasks.push(function(callback) { dbRoutes.deleteParameter(req,res,callback); });
+	async.series(tasks, function(err,result){
+		var msgArray = new Array();
+		if(err){
+			msgArray.push(err);
+			dbRoutes.getParameters(req,res,{code:'failure', msg:msgArray},privilegeObj);
+			return;
+		}
+		else {
+			msgArray.push('Row successfully deleted from PARAMETERS table.');
+			dbRoutes.getParameters(req,res,{code:'success', msg:msgArray},privilegeObj);
+			return;
+		}
+	});
+});
+
+
+// POST
+router.post('/addParameter', csp.checkAuth, dbRoutes.checkDB, csrfProtection, function(req,res){
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push( function(callback) { dbRoutes.addParameter(req,res,callback); } );
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getParameters(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Successfully updated PARAMETERS.');
+            dbRoutes.getParameters(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+// gamma - updateAicSite
+router.post('/updateParameter', csp.checkAuth, dbRoutes.checkDB, csrfProtection, function(req,res){
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push( function(callback) { dbRoutes.updateParameter(req,res,callback); } );
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getParameters(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Successfully updated PARAMETERS.');
+            dbRoutes.getParameters(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+
+module.exports = router;
diff --git a/sdnc-a1-controller/oam/admportal/server/router/routes/csp.js b/sdnc-a1-controller/oam/admportal/server/router/routes/csp.js
new file mode 100644
index 0000000..8828052
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/routes/csp.js
@@ -0,0 +1,124 @@
+var exec = require('child_process').exec;
+var dbRoutes = require('./dbRoutes');
+var fs = require('fs.extra');
+var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
+
+var retURL = "";
+var noCookieUrl = "";
+var logoutUrl = "";
+
+function logout(req,res){
+	console.log("logout");
+	req.session.loggedInAdmin = undefined;
+	res.redirect('/login');
+}
+
+function login (req,res) {
+
+console.log('login');
+var tkn = req.sanitize(req.body._csrf);
+console.log('login:tkn=' + tkn);
+
+	var loggedInAdmin={};
+	var email = req.sanitize(req.body.email);
+	var pswd = req.sanitize(req.body.password);
+	dbRoutes.findAdminUser(email,res,function(adminUser){
+		if(adminUser !== null){
+			
+			// make sure correct password is provided
+			if (pswd != adminUser.password) {
+				res.render("pages/login", 
+				{
+					result:
+					{
+						code:'error',
+						msg:'Invalid password entered.'
+					},
+					header:process.env.MAIN_MENU 
+				});
+				return;
+			}
+				
+			var loggedInAdmin = {
+				email:adminUser.email,
+				csrfToken: tkn,
+				password:adminUser.password,
+				privilege:adminUser.privilege
+			}
+            req.session.loggedInAdmin = loggedInAdmin;
+        	console.log("Login Success"+JSON.stringify(loggedInAdmin));
+        	res.redirect('sla/listSLA');
+		}else{
+			res.render("pages/err", 
+			{
+				result:
+				{
+					code:'error',
+					msg:'User ' + attuid + ' is not in the database.  Please see an adminstrator to have them added.'
+				},
+				header:process.env.MAIN_MENU 
+			});
+		}
+	});
+}
+
+function checkAuth(req,res,next){
+
+	var host = req.get('host');
+	var url = req.url;
+	var originalUrl = req.originalUrl;
+
+	console.log("checkAuth");
+
+	var host = req.headers['host'];
+	console.log('host=' + host);
+	console.log("cookie is not null "+JSON.stringify(req.session.loggedInAdmin));
+	if(req.session == null || req.session == undefined 
+		|| req.session.loggedInAdmin == null || req.session.loggedInAdmin == undefined)
+	{
+		// nothing else to do but log them back in, or they may
+		// be coming from the graph tool
+		console.log("loggedInAdmin not found.session timed out.");
+		res.render('pages/login');
+		return false;
+	}
+	next();
+}
+
+function checkPriv(req,res,next)
+{
+  var priv = req.session.loggedInAdmin;
+  if(req.session == null || req.session == undefined 
+		|| req.session.loggedInAdmin == null || req.session.loggedInAdmin == undefined)
+  {
+    res.render("pages/err", 
+		{
+			result: {code:'error', msg:'Unexpected null session.'}, 
+			header: process.env.MAIN_MENU
+		});
+    return;
+  }
+  else
+  {
+    if (priv.privilege == 'A')
+    {
+      next();
+      return;
+    }
+    else
+    {
+      res.render("pages/err", 
+			{
+				result: { code:'error', msg:'User does not have permission to run operation.'},
+				header: process.env.MAIN_MENU
+			});
+      return;
+    }
+  }
+}
+
+
+exports.login = login;
+exports.logout = logout;
+exports.checkAuth = checkAuth;
+exports.checkPriv = checkPriv;
diff --git a/sdnc-a1-controller/oam/admportal/server/router/routes/dbRoutes.js b/sdnc-a1-controller/oam/admportal/server/router/routes/dbRoutes.js
new file mode 100644
index 0000000..c4a09fd
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/routes/dbRoutes.js
@@ -0,0 +1,1230 @@
+var express = require('express'),
+    app = express();
+var mysql = require('mysql');
+var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
+var fs = require('fs.extra');
+var util = require('util');
+var os = require('os');
+var async = require('async');
+var l_ = require('lodash');
+var dns = require('dns');
+var dnsSync = require('dns-sync');
+
+var pool = '';
+var currentDB = '';
+var currentDbName = '';
+var fabricDB = properties.dbFabricServer;
+var dbArray = properties.databases;
+var enckey = properties.passwordKey;
+
+console.log('dbFabric=' + properties.dbFabric);
+
+if ( properties.dbFabric == 'true' )
+{
+	connectFabric();
+}
+else
+{
+    initDB();
+}
+
+
+exports.dbConnect = function(){
+
+	console.log('fabric=' + fabricDB);
+	if ( properties.dbFabric == 'true' )
+	{
+		connectFabric();
+	}
+	else
+	{
+        initDB();
+	}
+}
+
+function setCurrentDbName(){
+	
+	function createFunction(dbentry)
+	{
+		return function(callback) { findCurrentDbIP(dbentry,callback); }
+	}
+
+	var tasks = [];
+	for (var x=0; x<dbArray.length; x++){
+		var dbElement = dbArray[x];
+		var dbElementArray = dbElement.split("|");
+
+		tasks.push( createFunction(dbElement) );
+	}
+	async.series(tasks, function(err,result){
+	
+		if(err){
+			currentDbName = err;
+			console.log('currentDbName: ' + err);
+            return;
+        }
+        else {
+			console.log('not found');
+            return;
+        }
+	});
+}
+
+
+function findCurrentDbIP(dbElement, callback){
+
+	var dbElementArray = dbElement.split("|");
+
+	dns.lookup( dbElementArray[0], function onLookup(err, addresses, family) {
+
+        if ( currentDB == addresses ){
+        	callback(dbElementArray[1]);
+            return;
+        }
+		else {
+        	callback(null);
+        	return;
+		}
+    });
+}
+
+
+exports.getCurrentDB = function(){
+	return currentDbName;
+}
+		
+	
+exports.testdb = function(req,res,callback){
+console.log('testdb');
+
+	osObj = {
+        'hostname' : os.hostname(),
+        'type'     : os.type(),
+        'platform' : os.platform(),
+        'arch'     : os.arch(),
+        'release'  : os.release(),
+        'uptime'   : os.uptime(),
+        'totalmem' : os.totalmem(),
+        'dbhealth' : ''
+    };
+
+    pool.getConnection(function(err,connection)
+	{
+        if(err){
+            callback(err);
+            return;
+        }
+
+		// http://stackoverflow.com/questions/10982281/mysql-connection-validity-test-in-datasource-select-1-or-something-better
+		connection.query("/* pint */ SELECT 1", function(err,result){
+
+            connection.release();
+            if(err) {
+				callback(err);
+                return;
+            }
+			callback(null,'Database Connectivity to ' + currentDB + ' is working.');
+            return;
+        }); //end query
+    }); // end getConnection
+}
+
+/*
+exports.checkSvcLogic = function(req,res){
+
+	if ( DBmasterHost.length > 0 && currentHost != DBmasterHost )
+	{
+		 // need to copy file so SLA functionality works
+         var source = process.env.SDNC_CONFIG_DIR
+    	     + "/svclogic.properties." + currentHost;
+         var target = process.env.SDNC_CONFIG_DIR
+             + "/svclogic.properties";
+         fs.copy(source,target,{replace:true}, function(err){
+         	if(err){
+            	res.render("pages/err",
+                	{result:{code:'error',
+                              msg:"Unable to copy svclogic.properties. "+ String(err) }});
+                return;
+            }
+         });
+	}
+}
+*/
+function initDB( next ) {
+
+
+	var tasks = [];
+	for (var x=0; x<properties.databases.length; x++){
+
+		var db = properties.databases[x];
+		var dbArray = db.split("|");
+		var _dbIP = dnsSync.resolve(dbArray[0]);
+		var _dbName = dbArray[1];
+
+        tasks.push( createFindMasterFunctionObj(_dbIP, _dbName) );
+	}
+    async.series(tasks, function(err,result)
+    {
+        if(err){
+			if ( err == 'found' ){
+				if ( typeof next != 'undefined'){
+					next();
+				}
+				else {
+					return;
+				}
+			}
+			else {
+            	console.error( String(err) ); // ALARM
+            	return;
+			}
+        }
+		console.log('result=' + result);
+	});
+	return;
+}
+
+
+function createFindMasterFunctionObj(dbIP,dbName){
+	return function(callback) { findMaster(dbIP, dbName, callback); }
+}
+
+function findMaster (ldbIP, ldbName, callback){
+var dbIP = ldbIP;
+var dbName = ldbName;
+
+	console.log('checking dbIP:' + dbIP);
+
+    pool = mysql.createPool({
+        connectionLimit : properties.dbConnLimit,
+        host            : dbIP,
+        user            : properties.dbUser,
+        password        : properties.dbPassword,
+        database        : properties.dbName,
+        multipleStatements: true,
+        debug           : false
+    });
+
+	pool.getConnection(function(err,connection){
+
+        if(err){
+			callback( String(err) ); 
+            return;
+        }
+        var sql = 'select @@read_only';
+        connection.query(sql, function(err,result){
+            connection.release();
+
+            // @@read_only=0 means db is writeable
+            console.log('@@read_only=' + result[0]['@@read_only']);
+            if ( result[0]['@@read_only'] == '0' )
+            { // writeable
+				// if this is not the current DB, make it since its writeable
+					currentDB = dbIP;
+					currentDbName = dbName;
+					console.log('currentDB=' + currentDB + "|" + currentDbName);
+                	var newpool = mysql.createPool({
+                   		connectionLimit : properties.dbConnLimit,
+                   		host            : currentDB,
+                   		user            : properties.dbUser,
+                   		password        : properties.dbPassword,
+                   		database        : properties.dbName,
+                   		multipleStatements: true,
+                   		debug           : false
+                	}); // end create
+                	pool = newpool;
+					callback('found', currentDB);
+					return;
+			}
+		// otherwise this is the current db and its writeable, just return
+		callback(null, currentDB);
+		return;
+        });
+    });
+}
+
+exports.checkDB = function(req,res,next){
+
+console.log('checkDB');
+
+
+	if ( properties.dbFabric == 'true' )
+	{
+		connectFabric();
+		next();
+	}
+	else
+	{
+		initDB( next );
+	}
+}
+
+
+exports.saveUser = function(req,res){
+
+console.log('b4 sani');
+	var email = req.sanitize(req.body.nf_email);
+	var pswd = req.sanitize(req.body.nf_password);
+console.log('after sani');
+
+	pool.getConnection(function(err,connection)
+	{
+		if(err){
+			console.error( String(err) ); // ALARM
+			res.render("pages/signup", {result:{code:'error', msg:"Unable to get database connection. " + String(err)},header:process.env.MAIN_MENU});
+			return;
+		}
+		var sql = "SELECT email FROM PORTAL_USERS WHERE email='" + email + "'";
+
+		connection.query(sql, function(err,result)
+		{
+			if(err){
+				connection.release();
+				res.render("pages/signup", {result:{code:'error', msg:"Unable to get database connection. " + String(err)},header:process.env.MAIN_MENU});
+				return;
+			}
+			if (result.length == 1 || result.length > 1)
+			{
+				connection.release();
+				res.render("pages/signup", {result:{code:'error', msg:'User Information already exists.'},header:process.env.MAIN_MENU});
+				return;
+			}
+
+			sql = "INSERT INTO PORTAL_USERS (email,password,privilege) VALUES ("
+            +"'"+ email + "',"
+            + "AES_ENCRYPT('" + pswd + "','" + enckey + "'),"
+            +"'A')";
+
+			connection.query(sql, function(err,result)
+			{
+				connection.release();
+				
+				if(err){
+					res.render("pages/signup", {result:{ code:'error', msg:String(err) },header:process.env.MAIN_MENU});;
+					return;
+				}
+				res.render('pages/signup', {result:{code:'success', msg:'User created.  Please login.'},header:process.env.MAIN_MENU});
+				return;
+			});
+		});
+	});
+}
+
+// delete User
+exports.deleteUser = function(req,res){
+
+	var rows={};
+	var resultObj = { code:'', msg:'' };
+	var privilegeObj = req.session.loggedInAdmin;
+
+    pool.getConnection(function(err,connection) {
+        if(err){
+			console.error( String(err) ); // ALARM
+            res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. Error:" + String(err), 
+				privilege:privilegeObj },header:process.env.MAIN_MENU});
+			return;
+        }
+
+        var sqlUpdate = "DELETE FROM PORTAL_USERS WHERE email='" + req.query.email + "'";
+
+		console.log(sqlUpdate);
+
+        connection.query(sqlUpdate,function(err,result){
+
+            if(err){
+                 resultObj = {code:'error', msg:'Delete of user failed Error: '+ String(err) };
+            }
+
+            // Need DB lookup logic here
+            connection.query("SELECT email,password,privilege FROM PORTAL_USERS", function(err, rows) {
+            	connection.release();
+                if(!err) {
+                    if ( rows.length > 0 )
+                    {
+						resultObj = {code:'success',msg:'Successfully deleted user.'};
+                        res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
+						return;
+                    }else{
+                        res.render("user/list", { rows: null, result:{code:'error', msg:'Unexpected no rows returned from database, please try again.',
+							privilege:privilegeObj },header:process.env.MAIN_MENU});
+						return;
+                    }
+                } else {
+                    res.render("user/list", { rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. Error: ' + String(err),
+							privilege:privilegeObj },header:process.env.MAIN_MENU});
+					return;
+                }
+            }); //end query
+        });
+    }); // end of getConnection
+}
+
+// add User
+exports.addUser = function(req,res){
+	
+	var rows={};
+	var resultObj = { code:'', msg:'' };
+	var privilegeObj = req.session.loggedInAdmin;
+	var privilege = req.sanitize(req.body.nf_privilege);
+	var email = req.sanitize(req.body.nf_email);
+  var pswd = req.sanitize(req.body.nf_password);
+
+
+	pool.getConnection(function(err,connection) 
+	{
+		if(err)
+		{
+			console.error( String(err) ); // ALARM
+			res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. "+ String(err),
+			privilege:privilegeObj },header:process.env.MAIN_MENU});
+			return;
+		}
+
+		if( privilege == "admin" ){
+			var char_priv = 'A';
+		}else if(privilege == 'readonly'){
+			var char_priv = 'R';
+		}else{
+			var char_priv = 'R';
+		}
+
+		//connection.query(sqlRequest, function(err,result)
+		var sqlUpdate = "INSERT INTO PORTAL_USERS (email, password, privilege) VALUES ("
+			+"'"+ email + "',"
+			+ "AES_ENCRYPT('" + pswd + "','" + enckey + "'),"
+			+"'"+ char_priv + "')";
+
+
+		connection.query(sqlUpdate,function(err,result)
+		{
+			if(err){
+				resultObj = {code:'error', msg:'Add of user failed Error: '+err};
+			}
+			// Need DB lookup logic here
+			connection.query("SELECT email,AES_DECRYPT(password, '" + enckey + "') password,privilege FROM PORTAL_USERS", function(err, rows)
+			{
+				connection.release();
+				if(!err)
+				{
+					if ( rows.length > 0 )
+					{
+						resultObj = {code:'success',msg:'Successfully added user.'};
+						res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
+						return;
+					}else{
+						res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database, please try again.',
+							privilege:privilegeObj },header:process.env.MAIN_MENU});
+						return;
+					}
+				}
+				else {
+					res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. Error: '+ err ,
+						privilege:privilegeObj },header:process.env.MAIN_MENU});
+					return;
+				}
+			}); //end query
+		});
+	}); // end of getConnection
+}
+
+// updateUser
+exports.updateUser= function(req,res){
+
+	var rows={};
+	var resultObj = { code:'', msg:'' };
+	var privilegeObj = req.session.loggedInAdmin;
+	var email = req.sanitize(req.body.uf_email);
+	var key_email = req.sanitize(req.body.uf_key_email)
+  var pswd = req.sanitize(req.body.uf_password);
+  var privilege = req.sanitize(req.body.uf_privilege);
+
+	pool.getConnection(function(err,connection)
+	{
+		if(err){
+			console.error( String(err) ); // ALARM
+			res.render("user/list", {rows: null, result:{code:'error', msg:"Unable to get database connection. " + String(err),
+				privilege:privilegeObj },header:process.env.MAIN_MENU});
+			return;
+		}
+
+		if( privilege == "admin" ){
+			var char_priv = 'A';
+		}else if(privilege == 'readonly'){
+			var char_priv = 'R';
+		}else{
+			var char_priv = 'R';
+		}
+
+		var sqlUpdate = "UPDATE PORTAL_USERS SET "
+			+ "email = '" + email + "',"
+			+ "password = " + "AES_ENCRYPT('" + pswd + "','" + enckey + "'), "
+			+ "privilege = '"+ char_priv + "'"
+			+ " WHERE email = '" + key_email + "'";
+
+		connection.query(sqlUpdate,function(err,result)
+		{
+			if(err){
+				resultObj = {code:'error', msg:'Update of user failed Error: '+err};
+			}
+			// Need DB lookup logic here
+			connection.query("SELECT email, AES_DECRYPT(password,'" + enckey + "') password, privilege FROM PORTAL_USERS", function(err, rows)
+			{
+				connection.release();
+				if(!err)
+				{
+					if ( rows.length > 0 )
+					{
+						resultObj = {code:'success',msg:'Successfully updated user.'};
+						res.render('user/list', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU} );
+						return;
+					}else{
+						res.render("user/list", {rows: null, result:{ code:'error', msg:'Unexpected no rows returned from database.',
+							privilege:privilegeObj },header:process.env.MAIN_MENU});
+						return;
+					}
+				} else {
+					res.render("user/list", {rows: null, result:{code:'error', msg:'Unexpected no rows returned from database. ' + String(err),
+						privilege:privilegeObj },header:process.env.MAIN_MENU});
+					return;
+				}
+			}); //end query
+		});
+	}); // end of getConnection
+}
+
+exports.listUsers = function(req,res,resultObj){
+
+	var privilegeObj = req.session.loggedInAdmin;
+	var rows={};
+	pool.getConnection(function(err,connection)
+	{
+    
+		if(err){
+			console.error( String(err) ); // ALARM
+			res.render("pages/list", 
+			{
+				rows: null, 
+				result:{
+					code:'error', 
+					msg:"Unable to get database connection. " + String(err), 
+					privilege:privilegeObj },
+					header:process.env.MAIN_MENU
+			});
+			return;
+		}
+
+		// Need DB lookup logic here
+		var selectUsers = "SELECT email, AES_DECRYPT(password,'" 
+			+ enckey + "') password, privilege from PORTAL_USERS";
+
+		connection.query(selectUsers, function(err, rows) {
+
+		connection.release();
+		if(err){
+			resultObj = {code:'error', msg:'Unable to SELECT users Error: '+err};
+		}
+		if(!err)
+		{
+			if ( rows.length > 0 )
+			{
+				console.log(JSON.stringify(rows));
+				res.render('user/list', 
+				{
+					rows: rows, 
+					result:resultObj, 
+					privilege:privilegeObj,
+					header:process.env.MAIN_MENU 
+				});
+				return;
+			}
+			else{
+				res.render("user/list", 
+				{
+					rows: null, 
+					result:{
+						code:'error', 
+						msg:'Unexpected no rows returned from database.',
+						privilege:privilegeObj },
+						header:process.env.MAIN_MENU
+				});
+				return;
+			}
+		}
+		else
+		{
+			res.render("user/list", 
+			{
+				rows: null, 
+				result:{
+					code:'error', 
+					msg:'Unexpected no rows returned from database. ' + String(err),
+					privilege:privilegeObj },header:process.env.MAIN_MENU
+			});
+			return;
+		}
+		}); //end query
+	}); // end getConnection
+}
+
+exports.listSLA = function(req,res,resultObj){
+
+	var privilegeObj = req.session.loggedInAdmin;
+
+	pool.getConnection(function(err,connection) {
+
+        if(err){
+			console.error( String(err) ); // ALARM
+            res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+			return;
+        }
+
+        // Need DB lookup logic here
+		connection.query("SELECT module,rpc,version,mode,active,graph FROM SVC_LOGIC", function(err, rows) {
+
+            connection.release();
+            if(err) {
+                res.render("pages/err", {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
+				return;
+			}
+			else {
+				res.render("sla/list", {rows:rows, result:resultObj, privilege:privilegeObj, header:process.env.MAIN_MENU} );
+				return;
+            }
+        }); //end query
+    }); // end getConnection
+}
+
+exports.executeSQL = function(sql,req,res,callback){
+
+    console.log(sql);
+
+    pool.getConnection(function(err,connection) {
+
+        if(err){
+            console.error( String(err) ); // ALARM
+            callback(err, 'Unable to get database connection.' + err);
+            return;
+        }
+
+        connection.query(sql, function(err,result){
+            connection.release();
+			if (err) {
+				callback(err,'Database operation failed. ' + err );
+			}
+            else
+            {
+console.log('affectedRows='+result.affectedRows);
+                callback(null, result.affectedRows);
+            }
+       }); //end query
+    }); // end getConnection
+}
+
+
+// gamma - deleteParameter
+exports.deleteParameter = function(req,res,callback){
+
+    var sql = "DELETE FROM PARAMETERS WHERE name='" + req.query.name + "'";
+
+    console.log(sql);
+
+    pool.getConnection(function(err,connection) {
+
+        if(err){
+            console.log( String(err) ); // ALARM
+            callback(err, 'Unable to get database connection.' + err);
+            return;
+        }
+        connection.query(sql, function(err,result){
+            connection.release();
+               if(err){
+                    console.log('Update failed. ' + err );
+                    callback(err,'Update failed. ' + err );
+               }
+               else
+               {
+                    callback(null,'');
+               }
+       }); //end query
+    }); // end getConnection
+}
+
+
+exports.getTable = function(req,res,sql,rdestination,resultObj,privilegeObj){
+
+console.log('SQL:'+sql);
+
+    pool.getConnection(function(err,connection) {
+
+        if(err){
+            console.error( String(err) ); // ALARM
+            res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+            return;
+        }
+        connection.query(sql,function(err, rows)
+        {
+            connection.release();
+            if(err) {
+                res.render(rdestination, {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
+                return;
+            }
+            else {
+                res.render(rdestination, { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
+                return;
+            }
+        }); //end query
+    }); // end getConnection
+}
+
+exports.getMetaTable = function(req,res,sql,rdestination,resultObj,privilegeObj){
+
+    console.log('SQL:'+ sql);
+
+    var rdata = [];
+    var v_tables = [];
+    var vtables = properties.viewTables;
+
+	for ( var i in vtables ) {
+		v_tables.push(vtables[i]);
+	}
+
+    pool.getConnection(function(err,connection) {
+
+        if(err){
+            console.error( String(err) ); // ALARM
+            res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+            return;
+        }
+        connection.query(sql,function(err, rows, fields)
+        {
+            console.log('rows:' + JSON.stringify(rows,null,2));
+            // http://stackoverflow.com/questions/14528385/how-to-convert-json-object-to-javascript-array
+            //logger.debug(Object.keys(rows[0]).map(function(v) { return rows[0][v]; }));
+            for ( var i in rows ){
+                rdata.push(Object.keys(rows[i]).map(function(v) { return rows[i][v]; }));
+                //logger.debug(Object.keys(rows[i]).map(function(v) { return rows[i][v]; }));
+                //logger.debug([i, rows[i]]);
+            }
+            for ( var x in rdata ){
+                for ( var j in rdata[x] ){
+                    console.log('rdata[' + x + ']: ' + rdata[x][j]);
+                }
+            }
+            console.log('rdata:' + rdata[0]);
+            console.log('fields:' + JSON.stringify(fields,null,2));
+            connection.release();
+            if(err) {
+                res.render(rdestination, {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
+                return;
+            }
+            else {
+                res.render(rdestination, { displayTable:true, vtables:v_tables, rows:rdata, fields:fields, result:resultObj, privilege:privilegeObj, header:process.env.MAIN_MENU } );
+                return;
+            }
+        }); //end query
+    }); // end getConnection
+}
+
+exports.getVnfProfile = function(req,res,resultObj,privilegeObj){
+
+	pool.getConnection(function(err,connection)
+	{
+		if(err){
+			console.error( String(err) ); // ALARM
+			res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+			return;
+		}
+		var sql = "SELECT vnf_type,availability_zone_count,equipment_role FROM VNF_PROFILE ORDER BY VNF_TYPE";
+		console.log(sql);
+		connection.query(sql, function(err, rows)
+		{
+			connection.release();
+			if(err) {
+				res.render("mobility/vnfProfile", {result:{code:'error',msg:'Database Error: '+ String(err)},header:process.env.MAIN_MENU});
+				return;
+			}
+			else {
+				console.log('render vnfProfile');
+				res.render('mobility/vnfProfile', { rows: rows, result:resultObj, privilege:privilegeObj,header:process.env.MAIN_MENU } );
+				return;
+			}
+		}); //end query
+	}); // end getConnection
+}
+
+
+exports.getVnfPreloadData = function(req,res,dbtable,callback){
+
+    pool.getConnection(function(err,connection) {
+
+		 if(err){
+            console.error( String(err) ); // ALARM
+            callback(err, 'Unable to get database connection.' + err);
+            return;
+        }
+
+        // Need DB lookup logic here
+        connection.query("SELECT preload_data FROM " + dbtable + " WHERE id="
+			+ req.query.id, function(err, rows)
+        {
+            connection.release();
+            if(err) {
+                callback(err);
+                return;
+            }
+            else {
+				var buffer = rows[0].preload_data;
+                var decode_buffer = decodeURI(buffer);
+				var content = JSON.parse(decode_buffer);
+				callback(null,content);
+				return;
+            }
+        }); //end query
+    }); // end getConnection
+}
+
+
+
+exports.getVnfNetworkData = function(req,res,resultObj,privilegeObj)
+{ 
+	pool.getConnection(function(err,connection)
+	{
+		if(err){
+			console.error( String(err) ); // ALARM
+			res.render("pages/err",
+				{result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+			return;
+		}
+		// Need DB lookup logic here
+		var sql = "SELECT id,svc_request_id,svc_action,status,filename,ts,preload_data FROM PRE_LOAD_VNF_NETWORK_DATA ORDER BY id";
+		console.log(sql);
+		connection.query(sql, function(err, rows)
+		{
+			var msgArray = new Array();
+			connection.release();
+			if(err) {
+				msgArray = 'Database Error: '+ String(err);
+				res.render("mobility/vnfPreloadNetworkData", {
+					result:{code:'error',msg:msgArray},
+					privilege:privilegeObj,
+					preloadImportDirectory: properties.preloadImportDirectory,
+					header:process.env.MAIN_MENU
+				});
+				return;
+			}
+			else {
+				var retData = [];
+				for( r=0; r<rows.length; r++)
+				{
+					var rowObj = {};
+					rowObj.row = rows[r];
+					if ( rows[r].filename.length > 0 )
+					{
+						try{
+							var buffer = rows[r].preload_data;
+							var decode_buffer = decodeURI(buffer);
+							var filecontent = JSON.parse(decode_buffer);
+							rowObj.filecontent = filecontent;
+							rowObj.network_name = filecontent.input["network-topology-information"]["network-topology-identifier"]["network-name"];
+							rowObj.network_type = filecontent.input["network-topology-information"]["network-topology-identifier"]["network-type"];
+						}
+						catch(error){
+							msgArray.push('File ' + rows[r].filename + ' has invalid JSON. Error:' + error);
+						}
+					}
+					else {
+						rowObj.filecontent = '';
+					}
+					retData.push(rowObj);
+				}//endloop
+				if(msgArray.length>0){
+					resultObj.code = 'failure';
+					resultObj.msg = msgArray;
+				}
+				res.render('mobility/vnfPreloadNetworkData', { 
+					retData:retData, 
+					result:resultObj, 
+					privilege:privilegeObj,
+					preloadImportDirectory: properties.preloadImportDirectory,
+					header:process.env.MAIN_MENU 
+				});
+				return;
+			}
+		}); //end query
+	}); // end getConnection
+}
+
+exports.getVnfData = function(req,res,resultObj,privilegeObj)
+{
+	pool.getConnection(function(err,connection)
+	{
+		if(err){
+			console.error( String(err) ); // ALARM
+			res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+			return;
+		}
+		// Need DB lookup logic here
+		var sql = "SELECT id,svc_request_id,svc_action,status,filename,ts,preload_data FROM PRE_LOAD_VNF_DATA ORDER BY id";
+		console.log(sql);
+		connection.query(sql,function(err, rows) 
+		{
+			var msgArray = new Array();
+			connection.release();
+			if(err) {
+				msgArray = 'Database Error: '+ String(err);
+				res.render("mobility/vnfPreloadData", {
+					result:{code:'error',msg:msgArray},
+					privilege:privilegeObj,
+					preloadImportDirectory: properties.preloadImportDirectory,
+					header:process.env.MAIN_MENU
+				});
+				return;
+			}
+			else {
+				var retData = [];
+				for( r=0; r<rows.length; r++)
+				{
+					var rowObj = {};
+					rowObj.row = rows[r];
+					if ( rows[r].filename.length > 0 )
+					{
+						try{
+							var buffer = rows[r].preload_data;
+							var s_buffer = decodeURI(buffer);
+							var filecontent = JSON.parse(s_buffer);
+							rowObj.filecontent = filecontent;
+							rowObj.vnf_name = filecontent.input["vnf-topology-information"]["vnf-topology-identifier"]["vnf-name"];
+							rowObj.vnf_type = filecontent.input["vnf-topology-information"]["vnf-topology-identifier"]["vnf-type"];
+						}
+						catch(error){
+							msgArray.push('File ' + rows[r].filename + ' has invalid JSON. Error:' + error);
+						}
+					}
+					else {
+						rowObj.filecontent = '';
+					}
+					retData.push(rowObj);
+				}//endloop
+				if(msgArray.length>0){
+					resultObj.code = 'failure';
+					resultObj.msg = msgArray;
+				}
+				res.render('mobility/vnfPreloadData',{ 
+					retData:retData, result:resultObj, 
+					privilege:privilegeObj,
+					header:process.env.MAIN_MENU, 
+					preloadImportDirectory: properties.preloadImportDirectory
+				});
+				return;
+			}
+		}); //end query
+	}); // end getConnection
+}
+
+
+exports.findAdminUser = function(email,res,callback) {
+
+
+	var adminUser={};
+	pool.getConnection(function(err,connection) {
+        if(err){
+			console.error( String(err) ); // ALARM
+            res.render("pages/login", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+			return;
+        }
+
+		// Need DB lookup logic here
+		connection.query("SELECT email, AES_DECRYPT(password, '" + enckey + "') password, privilege FROM PORTAL_USERS WHERE email='" + email + "'", function(err, rows) {
+
+			connection.release();
+        	if(!err) {
+				if ( rows.length > 0 )
+            	{
+                	rows.forEach(function(row){
+                    	adminUser = {
+                        	"email" : row.email,
+                        	"password" : row.password,
+                        	"privilege" : row.privilege };
+                	});
+                	callback(adminUser);
+					return;
+            	}else{
+                	console.log("no rows returned");
+                	res.render("pages/login", {result:{code:'error', msg:'User is not in database.'},header:process.env.MAIN_MENU});
+					return;
+            	}
+            } else {
+                    res.render("pages/err", {result:{code:'error',msg:'Unexpected no rows returned from database. '+ String(err)},header:process.env.MAIN_MENU});
+					return;
+			}
+		}); //end query
+    }); // end getConnection
+}
+
+
+exports.addRow = function(sql,req,res,callback){
+
+	console.log(sql);
+
+	pool.getConnection(function(err,connection) {
+
+		if(err){
+			console.error( String(err) ); // ALARM
+			callback(err, 'Unable to get database connection.' + err);
+			return;
+		}
+		connection.query(sql, function(err,result){
+			connection.release();
+			if(err){
+				console.debug('Database operation failed. ' + err );
+				callback(err,'Database operation failed. ' + err );
+			}
+			else
+			{
+				callback(null, result.affectedRows);
+			}
+		}); //end query
+	}); // end getConnection
+}
+
+
+
+exports.addVnfProfile = function(row,res,callback){
+
+	var sqlInsert;
+
+    if ( row.length < 3 )
+    {
+        console.log('Row [' + row + '] does not have enough fields.');
+        callback(null, 'Row [' + row + '] does not have enough fields.');
+		return;
+    }
+
+    sqlInsert = "INSERT INTO VNF_PROFILE ("
+        + "vnf_type,availability_zone_count,equipment_role) VALUES ("
+        + "'" + row[0] + "',"
+		+ row[1] 
+        + ",'" + row[2] + "')";
+
+    console.log('SQL='+sqlInsert);
+
+    pool.getConnection(function(err,connection) {
+
+        if(err){
+            console.log( String(err) ); // ALARM
+            callback(err, 'Unable to get database connection.');
+            return;
+        }
+        connection.query(sqlInsert, function(err,result){
+            connection.release();
+            if(err){
+                console.log('Row [' + row + '] failed to insert. ' + err );
+                callback(null,'Row [' + row + '] failed to insert. ' + err );
+            }
+            else
+            {
+                callback(null,'');
+            }
+        }); //end query
+    }); // end getConnection
+}
+
+
+// Add to SVC_LOGIC table
+exports.addDG = function(_module, version, rpc, mode, xmlfile, req,res){
+
+	var privilegeObj = req.session.loggedInAdmin;
+	var rows={};
+
+    pool.getConnection(function(err,connection) {
+        if(err){
+			console.error( String(err) ); // ALARM
+            res.render("pages/err", {result:{code:'error', msg:"Unable to get database connection. "+ String(err)},header:process.env.MAIN_MENU});
+			return;
+        }
+
+        var post = {
+            module  :  _module,
+            rpc     : rpc,
+            version : version,
+            mode    : mode,
+            active  : "N",
+            graph   : xmlfile
+        };
+
+        //logger.debug( JSON.stringify(post));
+
+        //connection.query(sqlRequest, function(err,result){
+        connection.query('INSERT INTO SVC_LOGIC SET ?', post, function(err,result){
+            // neat!
+
+            // Need DB lookup logic here
+            connection.query("SELECT module,rpc,version,mode,active,graph FROM SVC_LOGIC", function(err, rows) {
+
+                if(!err) {
+                    if ( rows.length > 0 )
+                    {
+                        res.render('sla/list', { rows: rows, result:{code:'',msg:''}, privilege:privilegeObj,header:process.env.MAIN_MENU } );
+						return;
+                    }else{
+                        console.log("no rows returned");
+                        res.render("pages/home");
+						return;
+                    }
+                }
+                connection.on('error', function(err){
+                    connection.release();
+                    console.log(500, "An error has occurred -- " + err);
+                    res.render("pages/home");
+					return;
+                });
+            }); //end query
+
+            connection.release();
+        });
+        //connection.query('INSERT INTO SVC_LOGIC SET ?', post, function(err,result){
+            // neat!
+            //logger.debug('inserted rows');
+        //});
+
+        //if(err){
+            //res.render('pages/home');
+        //}
+        return;
+
+    }); // end of getConnection
+};
+
+exports.activate = function(req,res,_module,rpc,version,mode,callback){
+
+	var sql = "UPDATE SVC_LOGIC SET active=\'Y\' WHERE module=\'"
+            + _module + "' AND rpc=\'"
+            + rpc + "' AND version=\'"
+            +  version + "' AND mode=\'"
+            +  mode + "'";
+
+	console.log('SQL='+sql);
+
+    pool.getConnection(function(err,connection) {
+    
+        if(err){
+			console.error( String(err) ); // ALARM
+            callback(err, 'Unable to get database connection.' + err);
+			return;
+        }
+
+        connection.query(sql, function(err,result){
+
+            connection.release();
+			if(err){
+            	callback(err, 'Unable to get database connection.' + err);
+        	}
+            else
+            {
+                 callback(null,'');
+            }
+       }); //end query
+    }); // end getConnection
+}
+
+
+exports.deactivate = function(req,res,_module,rpc,version,mode,callback){
+
+    var sql = "UPDATE SVC_LOGIC SET active=\'N\' WHERE module=\'"
+            + _module + "' AND rpc=\'"
+            + rpc + "' AND version=\'"
+            +  version + "' AND mode=\'"
+            +  mode + "'";
+
+	console.log('SQL='+sql);
+
+    pool.getConnection(function(err,connection) {
+
+        if(err){
+			console.error( String(err) ); // ALARM
+            callback(err, 'Unable to get database connection.' + err);
+			return;
+        }
+
+        connection.query(sql, function(err,result){
+
+            connection.release();
+            if(err){
+                callback(err, 'Unable to get database connection.' + err);
+            }
+            else
+            {
+                 callback(null,'');
+            }
+       }); //end query
+    }); // end getConnection
+}
+
+exports.global_deactivate = function(req,res,_module,rpc,mode,callback){
+
+    var sql = "UPDATE SVC_LOGIC SET active=\'N\' WHERE module=\'"
+            + _module + "' AND rpc=\'"
+            + rpc + "' AND mode=\'"
+            +  mode + "'";
+
+
+    pool.getConnection(function(err,connection) {
+
+        if(err){
+            callback(err, 'Unable to get database connection.' + err);
+            return;
+        }
+
+        connection.query(sql, function(err,result){
+
+            connection.release();
+            if(err){
+                callback(err, err);
+            }
+            else
+            {
+                 callback(null,'');
+            }
+       }); //end query
+    }); // end getConnection
+}
+
+
+exports.deleteDG = function(req,res,_module,rpc,version,mode,callback){
+
+	var sql = "DELETE FROM SVC_LOGIC WHERE module=\'"
+            + _module + "' AND rpc=\'"
+            + rpc + "' AND version=\'"
+            +  version + "' AND mode=\'"
+            +  mode + "'";
+
+	console.log('SQL='+sql);
+
+    pool.getConnection(function(err,connection) {
+
+        if(err){
+			console.error( String(err) ); // ALARM
+            callback(err, 'Unable to get database connection.' + err);
+			return;
+        }
+
+        connection.query(sql, function(err,result){
+
+            connection.release();
+            if(err){
+                callback(err, 'Unable to get database connection.' + err);
+            }
+            else
+            {
+                 callback(null,'');
+            }
+       }); //end query
+    }); // end getConnection
+}
+
+
+
+function padLeft(nr, n, str){
+    return Array(n-String(nr).length+1).join(str||'0')+nr;
+}
+
diff --git a/sdnc-a1-controller/oam/admportal/server/router/routes/gamma.js b/sdnc-a1-controller/oam/admportal/server/router/routes/gamma.js
new file mode 100644
index 0000000..5b8c764
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/routes/gamma.js
@@ -0,0 +1,1360 @@
+var express = require('express');
+var router = express.Router();
+var exec = require('child_process').exec;
+var util = require('util');
+var fs = require('fs');
+var dbRoutes = require('./dbRoutes');
+var csp = require('./csp');
+var multer = require('multer');
+var bodyParser = require('body-parser');
+var sax = require('sax'),strict=true,parser = sax.parser(strict);
+var async = require('async');
+var l_ = require('lodash');
+
+
+// used for file upload button, retain original file name
+//router.use(bodyParser());
+router.use(bodyParser.urlencoded({
+  extended: true
+}));
+
+//var upload = multer({ dest: process.cwd() + '/uploads/', rename: function(fieldname,filename){ return filename; } });
+
+// multer 1.1
+var storage = multer.diskStorage({
+  destination: function (req, file, cb) {
+    cb(null, process.cwd() + '/uploads/')
+  },
+  filename: function (req, file, cb) {
+    cb(null, file.originalname )
+  }
+});
+
+var upload = multer({
+    storage: storage
+});
+
+
+//router.use(express.json());
+//router.use(express.urlencoded());
+//router.use(multer({ dest: './uploads/' }));
+
+// 1604
+var selectNetworkProfile = "SELECT network_type,technology FROM NETWORK_PROFILE ORDER BY network_type";
+
+var selectNbVlanRange = "SELECT vlan_plan_id,plan_type,purpose,LPAD(range_start,4,0) range_start,LPAD(range_end,4,0) range_end,generated from VLAN_RANGES ORDER BY vlan_plan_id";
+
+var selectNbVlanPool = "SELECT aic_site_id,availability_zone,vlan_plan_id,plan_type,purpose,LPAD(vlan_id,4,0) vlan_id,status FROM VLAN_POOL ORDER BY aic_site_id,availability_zone,vlan_plan_id,vlan_id";
+
+router.get('/getNetworkProfile', csp.checkAuth, dbRoutes.checkDB, function(req,res) {
+	dbRoutes.getTable(req,res,selectNetworkProfile,'gamma/networkProfile',{code:'', msg:''}, req.session.loggedInAdmin);
+});
+router.get('/getNbVlanRange', csp.checkAuth, dbRoutes.checkDB, function(req,res) {
+		dbRoutes.getTable(req,res,selectNbVlanRange,'gamma/nbVlanRange',{code:'', msg:''}, req.session.loggedInAdmin);
+});
+
+// GET
+router.get('/deleteSite', csp.checkAuth, dbRoutes.checkDB, function(req,res) {
+
+	var privilegeObj = req.session.loggedInAdmin;
+	var tasks = [];
+	tasks.push(function(callback) {
+		dbRoutes.deleteSite(req,res,callback);
+	});
+	async.series(tasks, function(err,result){
+    	var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getAicSite(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Row successfully deleted from AIC_SITE table.');
+            dbRoutes.getAicSite(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+// DELETE AIC_SWITCH
+router.get('/deleteSwitch', csp.checkAuth, dbRoutes.checkDB, function(req,res) {
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push(function(callback) {
+        dbRoutes.deleteSwitch(req,res,callback);
+    });
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getAicSwitch(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Row successfully deleted from AIC_SWITCH table.');
+            dbRoutes.getAicSwitch(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+// DELETE AIC_AVAIL_ZONE_POOL
+router.get('/deleteZone', csp.checkAuth, dbRoutes.checkDB, function(req,res) {
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push(function(callback) {
+        dbRoutes.deleteZone(req,res,callback);
+    });
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getAicAvailZone(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Row successfully deleted from AIC_AVAIL_ZONE_POOL table.');
+            dbRoutes.getAicAvailZone(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+// DELETE VLAN_ID_POOL
+router.get('/deleteVlanPool', csp.checkAuth, dbRoutes.checkDB, function(req,res) {
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push(function(callback) {
+        dbRoutes.deleteVlanPool(req,res,callback);
+    });
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getVlanPool(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Row successfully deleted from VLAN_ID_POOL table.');
+            dbRoutes.getVlanPool(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+// DELETE VPE_POOL
+router.get('/deleteVpePool', csp.checkAuth, dbRoutes.checkDB, function(req,res) {
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push(function(callback) {
+        dbRoutes.deleteVpePool(req,res,callback);
+    });
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getVpePool(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Row successfully deleted from VPE_POOL table.');
+            dbRoutes.getVpePool(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+
+// DELETE VPE_POOL
+router.get('/deleteVplspePool', csp.checkAuth, dbRoutes.checkDB, function(req,res) {
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push(function(callback) {
+        dbRoutes.deleteVplspePool(req,res,callback);
+    });
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getVplspePool(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Row successfully deleted from VPLSPE_POOL table.');
+            dbRoutes.getVplspePool(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+// POST
+router.post('/addServiceHoming', csp.checkAuth, dbRoutes.checkDB, function(req,res){
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push( function(callback) { dbRoutes.addWebServiceHoming(req,res,callback); } );
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getServiceHoming(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Successfully added SERVICE_HOMING');
+            dbRoutes.getServiceHoming(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+
+// gamma - updateProvStatus
+router.post('/updateProvStatus', csp.checkAuth, dbRoutes.checkDB, function(req,res){
+
+
+	var privilegeObj = req.session.loggedInAdmin;
+	var tasks = [];
+    tasks.push( function(callback) { dbRoutes.updateProvStatus(req,res,callback); } );
+    async.series(tasks, function(err,result){
+		var msgArray = new Array();
+		if(err){
+			msgArray.push(err);
+            dbRoutes.getVpePool(req,res,{code:'failure', msg:msgArray},privilegeObj);
+			return;
+        }
+        else {
+			msgArray.push('Successfully updated Provisioning Status');
+            dbRoutes.getVpePool(req,res,{code:'success', msg:msgArray},privilegeObj);
+			return;
+        }
+    });
+});
+
+// gamma - updateAicSite
+router.post('/updateAicSite', csp.checkAuth, dbRoutes.checkDB, function(req,res){
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push( function(callback) { dbRoutes.updateAicSite(req,res,callback); } );
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getAicSite(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Successfully updated AIC_SITE table.');
+            dbRoutes.getAicSite(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+// gamma - updateAicSwitch
+router.post('/updateAicSwitch', csp.checkAuth, dbRoutes.checkDB, function(req,res){
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push( function(callback) { dbRoutes.updateAicSwitch(req,res,callback); } );
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getAicSwitch(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Successfully updated AIC_SWITCH table.');
+            dbRoutes.getAicSwitch(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+// gamma - updateAicAvailZone
+router.post('/updateAicAvailZone', csp.checkAuth, dbRoutes.checkDB, function(req,res){
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push( function(callback) { dbRoutes.updateAicAvailZone(req,res,callback); } );
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getAicAvailZone(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Successfully updated AIC_AVAIL_ZONE_POOL table.');
+            dbRoutes.getAicAvailZone(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+// gamma - updateVlanPool
+router.post('/updateVlanPool', csp.checkAuth, dbRoutes.checkDB, function(req,res){
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push( function(callback) { dbRoutes.updateVlanPool(req,res,callback); } );
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getVlanPool(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Successfully updated VLAN_ID_POOL table.');
+            dbRoutes.getVlanPool(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+// gamma - updateVpePool
+router.post('/updateVpePool', csp.checkAuth, dbRoutes.checkDB, function(req,res){
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push( function(callback) { dbRoutes.updateVpePool(req,res,callback); } );
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getVpePool(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Successfully updated VPE_POOL table.');
+            dbRoutes.getVpePool(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+// gamma - updateVplspePool
+router.post('/updateVplspePool', csp.checkAuth, dbRoutes.checkDB, function(req,res){
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push( function(callback) { dbRoutes.updateVplspePool(req,res,callback); } );
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getVplspePool(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Successfully updated VPLSPE_POOL table.');
+            dbRoutes.getVplspePool(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+
+// gamma - updateServiceHoming
+router.post('/updateServiceHoming', csp.checkAuth, dbRoutes.checkDB, function(req,res){
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    tasks.push( function(callback) { dbRoutes.updateServiceHoming(req,res,callback); } );
+    async.series(tasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getServiceHoming(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Successfully updated SERVICE_HOMING table.');
+            dbRoutes.getServiceHoming(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+
+router.post('/uploadVLAN', csp.checkAuth, dbRoutes.checkDB, upload.single('filename'), function(req, res, next){
+
+	var msgArray = new Array();
+	var privilegeObj = req.session.loggedInAdmin;
+
+	if(req.file.originalname){
+        if (req.file.originalname.size == 0) {
+			dbRoutes.getVlanPool(req,res,{code:'danger', msg:'There was an error uploading the file, please try again.'},privilegeObj);
+			return;
+        }
+        fs.exists(req.file.path, function(exists) {
+            if(exists) {
+
+				var str = req.file.originalname;
+				
+				// check for valid filename format
+				var tagpos = str.search("_ctag_pool");
+				var csvpos = str.search(".csv");
+				if(tagpos != 13 || csvpos != 23){
+					var msgArray = new Array();
+					msgArray.push('Not a valid filename, format must be pp_YYYYMMDDHH_ctag_pool.csv');
+					dbRoutes.getVlanPool(req,res,{code:'failure', msg:msgArray},privilegeObj);
+					return;
+				}
+				
+				try {
+					var csv = require('csv');
+
+					// the job of the parser is to convert a CSV file
+					// to a list of rows (array of rows)
+					var parser = csv.parse({
+    					columns: function(line) {
+        					// By defining this callback, we get handed the
+        					// first line of the spreadsheet. Which we'll
+        					// ignore and effectively skip this line from processing
+    					},
+    					skip_empty_lines: true
+					});
+
+					var row = 0;
+					var f = new Array();
+					var transformer = csv.transform(function(data){
+						// this will get row by row data, so for example,
+						//logger.debug(data[0]+','+data[1]+','+data[2]);
+						f[row] = new Array();
+						for ( col=0; col<data.length; col++ )
+						{
+							f[row][col] = data[col];
+						}
+						row++;
+					});
+
+
+					// called when done with processing the CSV
+                    transformer.on("finish", function() {
+
+                        var funcArray = new Array();
+
+                        function createFunction(lrow,res)
+                        {
+                            return function(callback) { dbRoutes.addVLAN(lrow,res,callback); }
+                        }
+
+                        // loop for each row and create an array of callbacks for async.parallelLimit
+                        // had to create a function above 'createFunction' to get
+                        for (var x=0; x<f.length; x++)
+                        {
+                            funcArray.push( createFunction(f[x],res) );
+                        }
+
+                        // make db calls in parrallel
+                        //async.parallelLimit(funcArray, 5, function(err,result){
+                        async.series(funcArray, function(err,result){
+
+                            if ( err ) {
+                                dbRoutes.getVlanPool(req,res, result,privilegeObj);
+                                return;
+                            }
+                            else {
+                                // result array has an entry in it, success entries are blank, figure out
+                                // how many are not blank, aka errors.
+                                var rowError = 0;
+                                for(var i=0;i<result.length;i++){
+                                    if ( result[i].length > 0 )
+                                    {
+                                        rowError++;
+                                    }
+                                }
+
+                                var rowsProcessed = f.length - rowError;
+                                result.push(rowsProcessed + ' of ' + f.length + ' rows processed.');
+                                if ( rowError > 0 )
+                                {
+                                    result = {code:'failure', msg:result};
+                                }
+                                else
+                                {
+                                    result = {code:'success', msg:result};
+                                }
+                                dbRoutes.getVlanPool(req,res,result,privilegeObj);
+                                return;
+                            }
+                        });
+                    });
+
+
+    				var stream = fs.createReadStream(req.file.path, "utf8");
+					stream.pipe(parser).pipe(transformer);
+
+
+				} catch(ex) {
+					console.error('error:'+ex);
+					msgArray = [];
+					msgArray.push('There was an error uploading the file. '+ex);
+					dbRoutes.getVlanPool(req,res, {code:'danger', msg:msgArray}, privilegeObj);
+					return;
+				}
+
+            } else {
+				msgArray = [];
+				msgArray.push('There was an error uploading the file.');
+				dbRoutes.getVlanPool(req,res, {code:'danger', msg:msgArray}, privilegeObj);
+				return;
+            }
+        });
+	}
+	else {
+		msgArray = [];
+		msgArray.push('There was an error uploading the file.');
+		dbRoutes.getVlanPool(req,res, {code:'danger', msg:msgArray}, privilegeObj);
+		return;
+	}
+	
+});
+
+
+// POST
+router.post('/uploadAicSite', csp.checkAuth, dbRoutes.checkDB, upload.single('filename'), function(req, res){
+
+	var msgArray = new Array();
+	var privilegeObj = req.session.loggedInAdmin;
+
+	if(req.file.originalname){
+        if (req.file.originalname.size == 0) {
+			dbRoutes.getAicSite(req,res, {code:'danger', msg:'There was an error uploading the file, please try again.'}, privilegeObj);
+			return;
+        }
+        fs.exists(req.file.path, function(exists) {
+            if(exists) {
+
+				var str = req.file.originalname;
+				
+				// check for valid filename format
+				var tagpos = str.search("_site");
+				var csvpos = str.search(".csv");
+				if(tagpos != 13 || csvpos != 18){
+					msgArray.length = 0;
+					msgArray.push('Not a valid filename, format must be pp_YYYYMMDDHH_site.csv');
+					dbRoutes.getAicSite(req,res,{code:'failure', msg:msgArray},privilegeObj);
+					return;
+				}
+
+				try {
+					var csv = require('csv');
+
+					// the job of the parser is to convert a CSV file
+					// to a list of rows (array of rows)
+					var parser = csv.parse({
+    					columns: function(line) {
+        					// By defining this callback, we get handed the
+        					// first line of the spreadsheet. Which we'll
+        					// ignore and effectively skip this line from processing
+    					},
+    					skip_empty_lines: true
+					});
+
+					var row = 0;
+                    var f = new Array();
+                    var transformer = csv.transform(function(data){
+                        // this will get row by row data, so for example,
+                        //logger.debug(data[0]+','+data[1]+','+data[2]);
+
+						// build an array of rows
+                        f[row] = new Array();
+                        for ( col=0; col<data.length; col++ )
+                        {
+                            f[row][col] = data[col];
+                        }
+                        row++;
+                    });
+
+					// called when done with processing the CSV
+					transformer.on("finish", function() {
+
+						var funcArray = new Array();
+
+						function createFunction(lrow,res)
+						{
+							return function(callback) { dbRoutes.addAicSite(lrow,res,callback); }
+						}
+
+						// loop for each row and create an array of callbacks for async.parallelLimit
+						// had to create a function above 'createFunction' to get
+						for (var x=0; x<f.length; x++)
+						{
+							funcArray.push( createFunction(f[x],res) );
+						}
+
+						// make db calls in parrallel
+						async.parallelLimit(funcArray, 50, function(err,result){
+
+							if ( err ) {
+								dbRoutes.getAicSite(req,res, result,privilegeObj);
+								return;
+							}
+							else {
+								// result array has an entry in it, success entries are blank, figure out
+								// how many are not blank, aka errors.
+								var rowError = 0;
+								for(var i=0;i<result.length;i++){
+									if ( result[i].length > 0 )
+									{
+										rowError++;
+									}
+								}
+								
+								var rowsProcessed = f.length - rowError;
+								result.push(rowsProcessed + ' of ' + f.length + ' rows processed.');
+								if ( rowError > 0 )
+								{
+									result = {code:'failure', msg:result};
+								}
+								else
+								{
+									result = {code:'success', msg:result};
+								}
+								dbRoutes.getAicSite(req,res,result,privilegeObj);
+								return;
+							}
+						});
+					});
+
+    				var stream = fs.createReadStream(req.file.path, "utf8");
+					stream.pipe(parser).pipe(transformer);
+
+
+				} catch(ex) {
+					msgArray.length = 0;
+					msgArray.push('There was an error uploading the file. '+ex);
+					dbRoutes.getAicSite(req,res,{code:'danger', msg:msgArray},privilegeObj);
+					return;
+				}
+
+            } else {
+				msgArray.length = 0;
+				msgArray.push('There was an error uploading the file.');
+				dbRoutes.getAicSite(req,res,{code:'danger', msg:msgArray},privilegeObj);
+				return;
+            }
+        });
+	}
+	else {
+		msgArray.length = 0;
+		msgArray.push('There was an error uploading the file.');
+		dbRoutes.getAicSite(req,res,{code:'danger', msg:msgArray},privilegeObj);
+	}
+	
+} );
+
+// POST
+router.post('/uploadAicSwitch', csp.checkAuth, dbRoutes.checkDB, upload.single('filename'), function(req, res){
+
+    var msgArray = new Array();
+	var privilegeObj = req.session.loggedInAdmin;
+
+    if(req.file.originalname){
+        if (req.file.originalname.size == 0) {
+            dbRoutes.getAicSwitch(req,res,{code:'danger', msg:'There was an error uploading the file, please try again.'},privilegeObj);
+			return;
+        }
+        fs.exists(req.file.path, function(exists) {
+
+            if(exists) {
+
+                var str = req.file.orignalname;
+
+                // check for valid filename format
+                var tagpos = str.search("_switch");
+                var csvpos = str.search(".csv");
+                if(tagpos != 13 || csvpos != 20){
+                    msgArray.length = 0;
+                    msgArray.push('Not a valid filename, format must be pp_YYYYMMDDHH_switch.csv');
+                    dbRoutes.getAicSwitch(req,res,{code:'failure', msg:msgArray},privilegeObj);
+                    return;
+                }
+
+                try {
+                    var csv = require('csv');
+
+                    // the job of the parser is to convert a CSV file
+                    // to a list of rows (array of rows)
+                    var parser = csv.parse({
+                        columns: function(line) {
+                            // By defining this callback, we get handed the
+                            // first line of the spreadsheet. Which we'll
+                            // ignore and effectively skip this line from processing
+                        },
+                        skip_empty_lines: true
+                    });
+
+                    var row = 0;
+                    var f = new Array();
+                    var transformer = csv.transform(function(data){
+                        // this will get row by row data, so for example,
+                        //logger.debug(data[0]+','+data[1]+','+data[2]);
+
+                        // build an array of rows
+                        f[row] = new Array();
+                        for ( col=0; col<data.length; col++ )
+                        {
+                            f[row][col] = data[col];
+                        }
+                        row++;
+                    });
+
+                    // called when done with processing the CSV
+                    transformer.on("finish", function() {
+
+                        var funcArray = new Array();
+
+                        function createFunction(lrow,res)
+                        {
+                            return function(callback) { dbRoutes.addAicSwitch(lrow,res,callback); }
+                        }
+
+                        // loop for each row and create an array of callbacks for async.parallelLimit
+                        // had to create a function above 'createFunction' to get
+                        for (var x=0; x<f.length; x++)
+                        {
+                            funcArray.push( createFunction(f[x],res) );
+                        }
+
+                        // make db calls in parrallel
+                        async.parallelLimit(funcArray, 50, function(err,result){
+
+                            if ( err ) {
+                                dbRoutes.getAicSwitch(req,res,result,privilegeObj);
+								return;
+                            }
+                            else {
+                                // result array has an entry in it, success entries are blank, figure out
+                                // how many are not blank, aka errors.
+                                var rowError = 0;
+                                for(var i=0;i<result.length;i++){
+                                    if ( result[i].length > 0 )
+                                    {
+                                        rowError++;
+                                    }
+                                }
+
+                                var rowsProcessed = f.length - rowError;
+                                result.push(rowsProcessed + ' of ' + f.length + ' rows processed.');
+                                if ( rowError > 0 )
+                                {
+                                    result = {code:'failure', msg:result};
+                                }
+                                else
+                                {
+                                    result = {code:'success', msg:result};
+                                }
+                                dbRoutes.getAicSwitch(req,res,result,privilegeObj);
+								return;
+                            }
+                        });
+                    });
+
+                    var stream = fs.createReadStream(req.file.path, "utf8");
+                    stream.pipe(parser).pipe(transformer);
+
+
+                } catch(ex) {
+                    msgArray.length = 0;
+                    msgArray.push('There was an error uploading the file. '+ex);
+                    dbRoutes.getAicSwitch(req,res,{code:'danger', msg:msgArray},privilegeObj);
+					return;
+                }
+
+            } else {
+                msgArray.length = 0;
+                msgArray.push('There was an error uploading the file.');
+                dbRoutes.getAicSwitch(req,res,{code:'danger', msg:msgArray},privilegeObj);
+				return;
+            }
+        });
+    }
+    else {
+	 	msgArray.length = 0;
+        msgArray.push('There was an error uploading the file.');
+        dbRoutes.getAicSwitch(req,res,{code:'danger', msg:msgArray},privilegeObj);
+		return;
+    }
+
+} );
+
+// POST
+router.post('/uploadAicAvailZone', csp.checkAuth, dbRoutes.checkDB, upload.single('filename'), function(req, res){
+
+    var msgArray = new Array();
+	var privilegeObj = req.session.loggedInAdmin;
+
+    if(req.file.originalname){
+        if (req.file.originalname.size == 0) {
+            dbRoutes.getAicAvailZone(req,res,{code:'failure', msg:'There was an error uploading the file, please try again.'},privilegeObj);
+			return;
+        }
+        fs.exists(req.file.path, function(exists) {
+
+            if(exists) {
+
+                var str = req.file.originalname;
+
+                // check for valid filename format
+                var tagpos = str.search("_availabilityzone");
+                var csvpos = str.search(".csv");
+                if(tagpos != 13 || csvpos != 30){
+                    msgArray.length = 0;
+                    msgArray.push('Not a valid filename, format must be pp_YYYYMMDDHH_availabilityzone.csv');
+                    dbRoutes.getAicAvailZone(req,res,{code:'failure', msg:msgArray},privilegeObj);
+                    return;
+                }
+
+                try {
+                    var csv = require('csv');
+
+                    // the job of the parser is to convert a CSV file
+                    // to a list of rows (array of rows)
+                    var parser = csv.parse({
+                        columns: function(line) {
+                            // By defining this callback, we get handed the
+                            // first line of the spreadsheet. Which we'll
+                            // ignore and effectively skip this line from processing
+                        },
+                        skip_empty_lines: true
+                    });
+
+                    var row = 0;
+                    var f = new Array();
+                    var transformer = csv.transform(function(data){
+                        // this will get row by row data, so for example,
+                        //logger.debug(data[0]+','+data[1]+','+data[2]);
+
+                        // build an array of rows
+                        f[row] = new Array();
+                        for ( col=0; col<data.length; col++ )
+                        {
+                            f[row][col] = data[col];
+                        }
+                        row++;
+                    });
+
+                    // called when done with processing the CSV
+                    transformer.on("finish", function() {
+
+                        var funcArray = new Array();
+
+                        function createFunction(lrow,res)
+						{
+                            return function(callback) { dbRoutes.addAicAvailZone(lrow,res,callback); }
+                        }
+
+                        // loop for each row and create an array of callbacks for async.parallelLimit
+                        // had to create a function above 'createFunction' to get
+                        for (var x=0; x<f.length; x++)
+                        {
+                            funcArray.push( createFunction(f[x],res) );
+                        }
+
+                        // make db calls in parrallel
+                        async.parallelLimit(funcArray, 50, function(err,result){
+
+                            if ( err ) {
+                                dbRoutes.getAicAvailZone(req,res,result,privilegeObj);
+								return;
+                            }
+                            else {
+                                // result array has an entry in it, success entries are blank, figure out
+                                // how many are not blank, aka errors.
+                                var rowError = 0;
+                                for(var i=0;i<result.length;i++){
+                                    if ( result[i].length > 0 )
+                                    {
+                                        rowError++;
+                                    }
+                                }
+
+                                var rowsProcessed = f.length - rowError;
+                                result.push(rowsProcessed + ' of ' + f.length + ' rows processed.');
+                                if ( rowError > 0 )
+                                {
+                                    result = {code:'failure', msg:result};
+                                }
+                                else
+                                {
+                                    result = {code:'success', msg:result};
+                                }
+                                dbRoutes.getAicAvailZone(req,res,result,privilegeObj);
+								return;
+                            }
+                        });
+                    });
+
+                    var stream = fs.createReadStream(req.file.path, "utf8");
+                    stream.pipe(parser).pipe(transformer);
+
+
+                } catch(ex) {
+                    msgArray.length = 0;
+                    msgArray.push('There was an error uploading the file. '+ex);
+                    dbRoutes.getAicAvailZone(req,res,{code:'danger', msg:msgArray},privilegeObj);
+					return;
+                }
+
+            } else {
+                msgArray.length = 0;
+                msgArray.push('There was an error uploading the file.');
+                dbRoutes.getAicAvailZone(req,res,{code:'danger', msg:msgArray},privilegeObj);
+				return;
+            }
+        });
+ }
+    else {
+        msgArray.length = 0;
+        msgArray.push('There was an error uploading the file.');
+        dbRoutes.getAicAvailZone(req,res,{code:'danger', msg:msgArray},privilegeObj);
+		return;
+    }
+
+} );
+
+// POST
+router.post('/uploadVpePool', csp.checkAuth, dbRoutes.checkDB, upload.single('filename'), function(req, res){
+
+    var msgArray = new Array();
+	var privilegeObj = req.session.loggedInAdmin;
+
+    if(req.file.originalname){
+        if (req.file.originalname.size == 0) {
+            dbRoutes.getVpePool(req,res,{code:'failure', msg:'There was an error uploading the file, please try again.'},privilegeObj);
+			return;
+        }
+        fs.exists(req.file.path, function(exists) {
+
+            if(exists) {
+
+                var str = req.file.originalname;
+
+                // check for valid filename format
+                var tagpos = str.search("_vpe");
+                var csvpos = str.search(".csv");
+                if(tagpos != 13 || csvpos != 17){
+                    msgArray.length = 0;
+                    msgArray.push('Not a valid filename, format must be pp_YYYYMMDDHH_vpe.csv');
+					var resultObj = {code:'failure', msg:msgArray};
+                    dbRoutes.getVpePool(req,res,resultObj,privilegeObj);
+					return;
+                }
+
+                try {
+                    var csv = require('csv');
+
+                    // the job of the parser is to convert a CSV file
+                    // to a list of rows (array of rows)
+                    var parser = csv.parse({
+                        columns: function(line) {
+                            // By defining this callback, we get handed the
+                            // first line of the spreadsheet. Which we'll
+                            // ignore and effectively skip this line from processing
+                        },
+                        skip_empty_lines: true
+                    });
+
+                    var row = 0;
+                    var f = new Array();
+                    var transformer = csv.transform(function(data){
+                        // this will get row by row data, so for example,
+                        //logger.debug(data[0]+','+data[1]+','+data[2]);
+
+                        // build an array of rows
+                        f[row] = new Array();
+                        for ( col=0; col<data.length; col++ )
+                        {
+                            f[row][col] = data[col];
+                        }
+                        row++;
+                    });
+
+                    // called when done with processing the CSV
+                    transformer.on("finish", function() {
+
+                        var funcArray = new Array();
+
+                        function createFunction(lrow,res)
+                        {
+                            return function(callback) { dbRoutes.addVpePool(lrow,res,callback); }
+                        }
+
+                        // loop for each row and create an array of callbacks for async.parallelLimit
+						// had to create a function above 'createFunction' to get
+                        for (var x=0; x<f.length; x++)
+                        {
+                            funcArray.push( createFunction(f[x],res) );
+                        }
+
+                        // make db calls in parrallel
+                        async.parallelLimit(funcArray, 50, function(err,result){
+
+                            if ( err ) {
+                                dbRoutes.getVpePool(req,res,result,privilegeObj);
+								return;
+                            }
+                            else {
+                                // result array has an entry in it, success entries are blank, figure out
+                                // how many are not blank, aka errors.
+                                var rowError = 0;
+                                for(var i=0;i<result.length;i++){
+                                    if ( result[i].length > 0 )
+                                    {
+                                        rowError++;
+                                    }
+                                }
+
+                                var rowsProcessed = f.length - rowError;
+                                result.push(rowsProcessed + ' of ' + f.length + ' rows processed.');
+                                if ( rowError > 0 )
+                                {
+                                    result = {code:'failure', msg:result};
+                                }
+                                else
+                                {
+                                    result = {code:'success', msg:result};
+                                }
+                                dbRoutes.getVpePool(req,res,result,privilegeObj);
+								return;
+                            }
+                        });
+                    });
+
+                    var stream = fs.createReadStream(req.file.path, "utf8");
+                    stream.pipe(parser).pipe(transformer);
+
+
+                } catch(ex) {
+                    msgArray.length = 0;
+                    msgArray.push('There was an error uploading the file. '+ex);
+                    dbRoutes.getVpePool(req,res,{code:'danger', msg:msgArray},privilegeObj);
+					return;
+                }
+
+            } else {
+                msgArray.length = 0;
+                msgArray.push('There was an error uploading the file.');
+                dbRoutes.getVpePool(req,res,{code:'danger', msg:msgArray},privilegeObj);
+				return;
+            }
+        });
+ }
+    else {
+        msgArray.length = 0;
+        msgArray.push('There was an error uploading the file.');
+        dbRoutes.getVpePool(req,res,{code:'danger', msg:msgArray},privilegeObj);
+		return;
+    }
+
+} );
+
+// POST
+router.post('/uploadVplspePool', csp.checkAuth, dbRoutes.checkDB, upload.single('filename'), function(req, res){
+
+    var msgArray = new Array();
+	var privilegeObj = req.session.loggedInAdmin;
+
+    if(req.file.originalname){
+        if (req.file.originalname.size == 0) {
+            dbRoutes.getVplspePool(req,res,{code:'failure', msg:'There was an error uploading the file, please try again.'},privilegeObj);
+			return;
+        }
+        fs.exists(req.file.path, function(exists) {
+
+            if(exists) {
+
+                var str = req.file.originalname;
+
+                // check for valid filename format
+                var tagpos = str.search("_vpls");
+                var csvpos = str.search(".csv");
+                if(tagpos != 13 || csvpos != 18){
+                    msgArray.length = 0;
+                    msgArray.push('Not a valid filename, format must be pp_YYYYMMDDHH_vpls.csv');
+                    dbRoutes.getVplspePool(req,res,{code:'failure', msg:msgArray},privilegeObj);
+                    return;
+                }
+
+                try {
+                    var csv = require('csv');
+
+                    // the job of the parser is to convert a CSV file
+                    // to a list of rows (array of rows)
+                    var parser = csv.parse({
+                        columns: function(line) {
+                            // By defining this callback, we get handed the
+                            // first line of the spreadsheet. Which we'll
+                            // ignore and effectively skip this line from processing
+                        },
+                        skip_empty_lines: true
+                    });
+
+                    var row = 0;
+                    var f = new Array();
+                    var transformer = csv.transform(function(data){
+                        // this will get row by row data, so for example,
+                        //logger.debug(data[0]+','+data[1]+','+data[2]);
+
+                        // build an array of rows
+                        f[row] = new Array();
+                        for ( col=0; col<data.length; col++ )
+                        {
+                            f[row][col] = data[col];
+                        }
+                        row++;
+                    });
+
+                    // called when done with processing the CSV
+                    transformer.on("finish", function() {
+
+                        var funcArray = new Array();
+
+                        function createFunction(lrow,res)
+                        {
+                            return function(callback) { dbRoutes.addVplspePool(lrow,res,callback); }
+                        }
+			 			// loop for each row and create an array of callbacks for async.parallelLimit
+                        // had to create a function above 'createFunction' to get
+                        for (var x=0; x<f.length; x++)
+                        {
+                            funcArray.push( createFunction(f[x],res) );
+                        }
+
+                        // make db calls in parrallel
+                        async.parallelLimit(funcArray, 50, function(err,result){
+
+                            if ( err ) {
+                                dbRoutes.getVplspePool(req,res,result,privilegeObj);
+								return;
+                            }
+                            else {
+                                // result array has an entry in it, success entries are blank, figure out
+                                // how many are not blank, aka errors.
+                                var rowError = 0;
+                                for(var i=0;i<result.length;i++){
+                                    if ( result[i].length > 0 )
+                                    {
+                                        rowError++;
+                                    }
+                                }
+                                var rowsProcessed = f.length - rowError;
+                                result.push(rowsProcessed + ' of ' + f.length + ' rows processed.');
+                                if ( rowError > 0 )
+                                {
+                                    result = {code:'failure', msg:result};
+                                }
+                                else
+                                {
+                                    result = {code:'success', msg:result};
+                                }
+                                dbRoutes.getVplspePool(req,res,result,privilegeObj);
+								return;
+                            }
+                        });
+                    });
+
+                    var stream = fs.createReadStream(req.file.path, "utf8");
+                    stream.pipe(parser).pipe(transformer);
+
+
+                } catch(ex) {
+                    msgArray.length = 0;
+                    msgArray.push('There was an error uploading the file. '+ex);
+                    dbRoutes.getVplspePool(req,res,{code:'danger', msg:msgArray},privilegeObj);
+					return;
+                }
+
+            } else {
+                msgArray.length = 0;
+                msgArray.push('There was an error uploading the file.');
+                dbRoutes.getVplspePool(req,res,{code:'danger', msg:msgArray},privilegeObj);
+				return;
+            }
+        });
+ }
+    else {
+        msgArray.length = 0;
+        msgArray.push('There was an error uploading the file.');
+        dbRoutes.getVplspePool(req,res,{code:'danger', msg:msgArray},privilegeObj);
+		return;
+    }
+
+} );
+
+// POST
+router.post('/uploadServiceHoming', csp.checkAuth, dbRoutes.checkDB, upload.single('filename'), function(req, res)
+{
+    var msgArray = new Array();
+    var privilegeObj = req.session.loggedInAdmin;
+
+    if(req.file.originalname)
+	{
+        if (req.file.originalname.size == 0) {
+            dbRoutes.getServiceHoming(req,res,{code:'failure', msg:'There was an error uploading the file, please try again.'},privilegeObj);
+            return;
+        }
+        fs.exists(req.file.path, function(exists) 
+		{
+            if(exists) 
+			{
+                var str = req.file.originalname;
+
+                // check for valid filename format
+                var csvpos = str.search(".csv");
+                if( (l_.startsWith(str,'aichoming_') != true)  || csvpos != 18)
+				{
+                   	msgArray.length = 0;
+                   	msgArray.push('Not a valid filename, format must be aichoming_mmddYYYY.csv');
+                   	//msgArray.push('Not a valid filename, format must be pp_YYYYMMDDHH_vpls.csv');
+                   	dbRoutes.getServiceHoming(req,res,{code:'failure', msg:msgArray},privilegeObj);
+                   	return;
+                }
+
+                try 
+				{
+                    var csv = require('csv');
+
+                    // the job of the parser is to convert a CSV file
+                    // to a list of rows (array of rows)
+                    var parser = csv.parse({
+                        columns: function(line) {
+                            // By defining this callback, we get handed the
+                            // first line of the spreadsheet. Which we'll
+                            // ignore and effectively skip this line from processing
+                        },
+                        skip_empty_lines: true
+                    });
+
+                    var row = 0;
+                    var f = new Array();
+					var csvrows = new Array();
+                    var transformer = csv.transform(function(data){
+                        // this will get row by row data, so for example,
+                        //logger.debug(data[0]+','+data[1]+','+data[2]);
+
+                        // build an array of rows
+                        f[row] = new Array();
+                        for ( col=0; col<data.length; col++ )
+                        {
+                            f[row][col] = data[col];
+                        }
+                        row++;
+                    });
+
+                    // called when done with processing the CSV
+                    transformer.on("finish", function() 
+					{
+                        var funcArray = new Array();
+
+                        function createFunction(lrow,res)
+                        {
+                            return function(callback) { dbRoutes.addServiceHoming(lrow,req,res,callback); }
+                        }
+						funcArray.push(function(callback) {
+							dbRoutes.saveServiceHoming(req,res,callback);
+						});
+                        // loop for each row and create an array of callbacks for async.parallelLimit
+                        // had to create a function above 'createFunction' to get
+                        for (var x=0; x<f.length; x++)
+                        {
+							funcArray.push( createFunction(f[x],res) );
+						}
+
+                        // make db calls in series
+                        async.series(funcArray, function(err,result)
+						{
+                            if ( err ) 
+							{
+                                result = {code:'failure', msg:result};
+                                dbRoutes.getServiceHoming(req,res,result,privilegeObj);
+                                return;
+                            }
+                            else 
+							{	// result array has an entry in it, success entries are blank, figure out
+                                // how many are not blank, aka errors.
+                                var rowError = 0;
+                                for(var i=0;i<result.length;i++)
+								{
+                                    if ( result[i].length > 0 )
+                                    {
+                                        rowError++;
+                                    }
+                                }
+                                var rowsProcessed = f.length - rowError;
+                                result.push(rowsProcessed + ' of ' + f.length + ' rows processed.');
+                                if ( rowError > 0 )
+                                {
+                                    result = {code:'failure', msg:result};
+                                }
+                                else
+                                {
+                                    result = {code:'success', msg:result};
+                                }
+                                dbRoutes.getServiceHoming(req,res,result,privilegeObj);
+                                return;
+                            }
+                        });
+                    });
+
+                    var stream = fs.createReadStream(req.file.path, "utf8");
+                    stream.pipe(parser).pipe(transformer);
+
+
+                } catch(ex) {
+                    msgArray.length = 0;
+                    msgArray.push('There was an error uploading the file. '+ex);
+                    dbRoutes.getServiceHoming(req,res,{code:'danger', msg:msgArray},privilegeObj);
+                    return;
+                }
+
+            } else {
+                msgArray.length = 0;
+                msgArray.push('There was an error uploading the file.');
+                dbRoutes.getServiceHoming(req,res,{code:'danger', msg:msgArray},privilegeObj);
+                return;
+            }
+        });
+ 	}
+    else 
+	{
+        msgArray.length = 0;
+        msgArray.push('There was an error uploading the file.');
+        dbRoutes.getServiceHoming(req,res,{code:'danger', msg:msgArray},privilegeObj);
+        return;
+    }
+
+} );
+function removeNL(s) {
+  /*
+  ** Remove NewLine, CarriageReturn and Tab characters from a String
+  **   s  string to be processed
+  ** returns new string
+  */
+  r = "";
+  for (i=0; i < s.length; i++)
+  {
+    if (s.charAt(i) != '\n' &&
+        s.charAt(i) != '\r' &&
+        s.charAt(i) != '\t')
+    {
+      r += s.charAt(i);
+    }
+  }
+  return r;
+}
+function padLeft(nr, n, str){
+    return Array(n-String(nr).length+1).join(str||'0')+nr;
+}
+
+
+module.exports = router;
diff --git a/sdnc-a1-controller/oam/admportal/server/router/routes/helpers.js b/sdnc-a1-controller/oam/admportal/server/router/routes/helpers.js
new file mode 100644
index 0000000..6ac8215
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/routes/helpers.js
@@ -0,0 +1,66 @@
+

+var _ = require('lodash');

+var csvtojson = require('csvtojson');

+var async = require('async');

+var uuid = require('node-uuid');   // generate a uuid with "uuid.v1()"

+var path = require('path');

+var fs = require("fs");

+var moment = require('moment');

+

+var helpers = module.exports;

+

+function puts(obj) { console.log(obj); } 

+function putd(obj) { console.log(obj); } 

+helpers.puts = puts;

+helpers.putd = putd;

+

+

+helpers.readCsv = function(filedir, filename, callback) {

+

+

+  var Converter=csvtojson.Converter;

+  var csvFileName=path.join(filedir,filename);

+  var fileStream=fs.createReadStream(csvFileName);

+  fileStream.on('error', function(err){

+	callback(err, null);

+  });

+  var param={noheader:true, checkType:false};

+  var csvConverter=new Converter(param);

+  csvConverter.on("end_parsed",function(jsonObj){

+     var returnValue = jsonObj;

+     callback(null, returnValue);

+  });

+  fileStream.on('error', function(err) {

+    putd(err);

+    callback(err,"");

+  });

+  fileStream.pipe(csvConverter);

+}

+

+helpers.getParam = function(csv, matchField, matchValue, returnField) {

+  dataRow=_.find(csv, matchField, matchValue);

+  dataValue=dataRow[returnField];

+  return dataValue;

+}

+

+helpers.writeOutput = function(req, filename, jsonOutput, callback) {

+  try {

+  	fs.writeFileSync(filename, jsonOutput);

+  }

+  catch(err){

+	callback(err);

+  }

+}

+

+helpers.getFileName = function(req, defFilename) {

+  

+  var fileObj = null;

+  for (var x=0; x < req.files.length; x++)

+  {

+	var fileObj = req.files[x];

+	if ( fileObj.filename.indexOf(defFilename) != -1 ){

+  		return fileObj.filename;

+	}

+  }

+  return null;

+}

diff --git a/sdnc-a1-controller/oam/admportal/server/router/routes/mobility.js b/sdnc-a1-controller/oam/admportal/server/router/routes/mobility.js
new file mode 100644
index 0000000..cd798dc
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/routes/mobility.js
@@ -0,0 +1,770 @@
+var express = require('express');
+var router = express.Router();
+var exec = require('child_process').exec;
+var util = require('util');
+var fs = require('fs.extra');
+var dbRoutes = require('./dbRoutes');
+var csp = require('./csp');
+var multer = require('multer');
+var cookieParser = require('cookie-parser');
+var bodyParser = require('body-parser');
+var sax = require('sax'),strict=true,parser = sax.parser(strict);
+var async = require('async');
+var l_ = require('lodash');
+var dateFormat = require('dateformat');
+var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
+var crypto = require('crypto');
+var csrf = require('csurf');
+
+var csrfProtection = csrf({cookie: true});
+router.use(cookieParser())
+
+// pass host, username and password to ODL
+// target host for ODL request
+var username = properties.odlUser;
+var password = properties.odlPasswd;
+var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64');
+var host = properties.odlHost;
+var port = properties.odlPort;
+
+var header = {'Host': host, 'Authorization': auth, 'Content-Type': 'application/json'};
+var options = {
+        host    : host,
+        headers : header,
+        port    : port,
+        rejectUnauthorized:false,
+        strictSSL: false
+};
+
+// Connection to OpenDaylight
+OdlInterface = require('./OdlInterface');
+
+// used for file upload button, retain original file name
+//router.use(bodyParser());
+//router.use(bodyParser.urlencoded({
+  //extended: true
+//}));
+
+//var upload = multer({ dest: process.cwd() + '/uploads/', rename: function(fieldname,filename){ return filename; } });
+
+// multer 1.1
+var storage = multer.diskStorage({
+  destination: function (req, file, cb) {
+    cb(null, process.cwd() + '/uploads/')
+  },
+  filename: function (req, file, cb) {
+    cb(null, file.originalname )
+  }
+});
+
+var upload = multer({
+    storage: storage
+});
+
+
+// GET
+router.get('/getVnfData', csp.checkAuth, csrfProtection, function(req,res) {
+	dbRoutes.getVnfData(req,res, {code:'', msg:''}, req.session.loggedInAdmin);
+});
+router.get('/getVnfNetworkData', csp.checkAuth, csrfProtection, function(req,res) {
+	dbRoutes.getVnfNetworkData(req,res, {code:'', msg:''}, req.session.loggedInAdmin);
+});
+router.get('/getVnfProfile', csp.checkAuth, csrfProtection, function(req,res) {
+	dbRoutes.getVnfProfile(req,res, {code:'', msg:''}, req.session.loggedInAdmin);
+});
+//router.get('/getVmNetworks', csp.checkAuth, function(req,res) {
+//	dbRoutes.getVmNetworks(req,res, {code:'', msg:''}, req.session.loggedInAdmin);
+//});
+//router.get('/getVnfNetworks', csp.checkAuth, function(req,res) {
+//	dbRoutes.getVnfNetworks(req,res, {code:'', msg:''}, req.session.loggedInAdmin);
+//});
+//router.get('/getVmProfile', csp.checkAuth, function(req,res) {
+//	dbRoutes.getVmProfile(req,res, {code:'', msg:''}, req.session.loggedInAdmin);
+//});
+////////
+
+router.get('/viewVnfNetworkData', csp.checkAuth, csrfProtection, function(req,res)
+{
+    var privilegeObj = req.session.loggedInAdmin;
+    var resp_msg = '';
+    var network_name = req.query.network_name;
+    var network_type = req.query.network_type;
+    var tasks = [];
+
+    tasks.push(function(callback){
+		OdlInterface.GetPreloadVnfData('/restconf/config/VNF-API:preload-vnfs/vnf-preload-list/'
+            + encodeURIComponent(network_name) + '/' + encodeURIComponent(network_type) + '/', options,res,callback);
+
+    });
+    async.series(tasks, function(err,result)
+    {
+        var msgArray = new Array();
+        if(err){
+            resp_msg = err;
+            res.render('mobility/displayVnfNetworkData', {result:{code:'failure', msg:resp_msg}, header:process.env.MAIN_MENU});
+            return;
+        }
+        else{
+            resp_msg = JSON.stringify(JSON.parse(result[0],null,4));
+            res.render('mobility/displayVnfNetworkData', {result:{code:'success', msg:JSON.parse(result[0])}, header:process.env.MAIN_MENU});
+            return;
+        }
+    });
+
+});
+
+router.get('/viewVnfData', csp.checkAuth, csrfProtection, function(req,res) 
+{
+    var privilegeObj = req.session.loggedInAdmin;
+    var resp_msg = '';
+	var vnf_name = req.query.vnf_name;
+	var vnf_type = req.query.vnf_type;
+	var tasks = [];
+
+	tasks.push(function(callback){
+		OdlInterface.GetPreloadVnfData('/restconf/config/VNF-API:preload-vnfs/vnf-preload-list/'
+			+ encodeURIComponent(vnf_name) + '/' + encodeURIComponent(vnf_type) + '/', options,res,callback);
+
+	});
+	async.series(tasks, function(err,result)
+    {
+        var msgArray = new Array();
+        if(err){
+            resp_msg = err;
+			res.render('mobility/displayVnfData', {result:{code:'failure', msg:resp_msg}, header:process.env.MAIN_MENU});
+            return;
+        }
+        else{
+			resp_msg = JSON.stringify(JSON.parse(result[0],null,4));
+			res.render('mobility/displayVnfData', {result:{code:'success', msg:JSON.parse(result[0])}, header:process.env.MAIN_MENU});
+            return;
+        }
+    });
+
+});
+
+router.get('/loadVnfNetworkData', csp.checkAuth, csp.checkPriv, function(req,res)
+{
+	var privilegeObj = req.session.loggedInAdmin;
+	var msgArray = new Array();
+
+	if ( req.query.status != 'pending' )
+	{
+		msgArray.push("Upload Status must be in 'pending' state.");
+		dbRoutes.getVnfNetworkData(req,res, {code:'failure', msg:msgArray}, privilegeObj);
+		return;
+	}
+
+	// build request-id
+	var now = new Date();
+	var df = dateFormat(now,"isoDateTime");
+	const rnum = crypto.randomBytes(4);
+	var svc_req_id = req.query.id + "-" + df + "-" + rnum.toString('hex');;
+	var tasks = [];
+
+	// first get the contents of the file from the db
+	tasks.push(function(callback){
+		dbRoutes.getVnfPreloadData(req,res,"PRE_LOAD_VNF_NETWORK_DATA",callback);
+	});
+
+	// then format the request and send it using the arg1 parameter
+	// which is the contents of the file returned from the previous function
+	// call in the tasks array
+	tasks.push(function(arg1,callback){
+
+		var s_file = JSON.stringify(arg1);
+
+		// remove the last two braces, going to add the headers there
+		// will add them back later.
+		s_file = s_file.substring(0, (s_file.length-2));
+
+		// add the request-information header
+		s_file = s_file.concat(',"request-information": {"request-action": "PreloadNetworkRequest"}');
+
+		// add the sdnc-request-header
+		s_file = s_file.concat(',"sdnc-request-header": {"svc-request-id":"');
+		s_file = s_file.concat(svc_req_id);
+		s_file = s_file.concat('","svc-action": "reserve"}');
+
+		// add the two curly braces at the end that we stripped off
+		s_file = s_file.concat('}}');
+
+		OdlInterface.Post('/restconf/operations/VNF-API:preload-network-topology-operation', 
+			options,s_file,res,callback);
+	});
+
+	// if successful then update the status
+	tasks.push(function(arg1,callback){
+		dbRoutes.executeSQL("UPDATE PRE_LOAD_VNF_NETWORK_DATA SET status='uploaded',svc_request_id='"
+            + svc_req_id + "',svc_action='reserve' WHERE id="+req.query.id,req,res,callback);
+	});
+
+	// use the waterfall method of making calls
+	async.waterfall(tasks, function(err,result)
+	{
+		var msgArray = new Array();
+		if(err){
+			msgArray.push("Error posting pre-load data to ODL: "+err);
+			dbRoutes.getVnfNetworkData(req,res, {code:'failure', msg:msgArray}, privilegeObj);
+			return;
+		}
+		else{
+			msgArray.push('Successfully loaded VNF pre-loaded data.');
+			dbRoutes.getVnfNetworkData(req,res,{code:'success', msg:msgArray},privilegeObj);
+			return;
+		}
+	});
+});
+
+
+router.get('/loadVnfData', csp.checkAuth, csp.checkPriv, function(req,res) 
+{
+	var privilegeObj = req.session.loggedInAdmin;
+	var full_path_file_name = process.cwd() + "/uploads/" + req.query.filename
+  var msgArray = new Array();
+
+	if ( req.query.status != 'pending' )
+	{
+		msgArray.push("Upload Status must be in 'pending' state.");
+		dbRoutes.getVnfData(req,res, {code:'failure', msg:msgArray}, privilegeObj);
+		return;
+	}
+
+	// build request-id
+	var now = new Date();
+	var df = dateFormat(now,"isoDateTime");
+	const rnum = crypto.randomBytes(4);
+	var svc_req_id = req.query.id + "-" + df + "-" + rnum.toString('hex');
+	var tasks = [];
+
+	// first get the contents of the file from the db
+	tasks.push(function(callback){
+		dbRoutes.getVnfPreloadData(req,res,"PRE_LOAD_VNF_DATA",callback);
+  });
+
+	// then format the request and send it using the arg1 parameter
+	// which is the contents of the file returned from the previous function
+	// call in the tasks array
+	tasks.push(function(arg1,callback){
+
+		var s1_file = JSON.stringify(arg1);
+		var s_file = decodeURI(s1_file);
+
+
+		// remove the last two braces, going to add the headers there
+   	// will add them back later.
+    s_file = s_file.substring(0, (s_file.length-2));
+
+		// add the request-information header
+		s_file = s_file.concat(',"request-information": {"request-action": "PreloadVNFRequest"}');
+
+		// add the sdnc-request-header
+		s_file = s_file.concat(',"sdnc-request-header": {"svc-request-id":"');
+		s_file = s_file.concat(svc_req_id);
+		s_file = s_file.concat('","svc-action": "reserve"}');
+
+		// add the two curly braces at the end that we stripped off
+		s_file = s_file.concat('}}');
+
+		OdlInterface.Post('/restconf/operations/VNF-API:preload-vnf-topology-operation',
+			options,s_file,res,callback);
+	});
+
+	// if successful then update the status
+	tasks.push(function(arg1,callback){
+		dbRoutes.executeSQL("UPDATE PRE_LOAD_VNF_DATA SET status='uploaded',svc_request_id='"
+			+ svc_req_id + "',svc_action='reserve' WHERE id="+req.query.id,req,res,callback);
+	});
+
+	// use the waterfall method of making calls
+	async.waterfall(tasks, function(err,result)
+	{
+		var msgArray = new Array();
+		if(err){
+			msgArray.push("Error posting pre-load data to ODL: "+err);
+      dbRoutes.getVnfData(req,res, {code:'failure', msg:msgArray}, privilegeObj);
+      return;
+		}
+		else{
+			msgArray.push('Successfully loaded VNF pre-loaded data.');
+      dbRoutes.getVnfData(req,res,{code:'success', msg:msgArray},privilegeObj);
+      return;
+    }
+	});
+});
+
+
+router.get('/deleteVnfNetworkData', csp.checkAuth, csp.checkPriv, csrfProtection,  function(req,res) {
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    var sql = 'DELETE FROM PRE_LOAD_VNF_NETWORK_DATA WHERE id=' + req.query.id;
+
+    // if status is pending, then we do not have to call
+    // ODL, just remove from db
+    if (req.query.status == 'pending'){
+        tasks.push(function(callback) {
+            dbRoutes.executeSQL(sql,req,res,callback);
+        });
+    } else {
+		// format the request to ODL
+        var inputString = '{"input":{"network-topology-information":{"network-topology-identifier":{"service-type":"SDN-MOBILITY","network-name": "';
+        inputString = inputString.concat(req.query.network_name);
+        inputString = inputString.concat('","network-type":"');
+        inputString = inputString.concat(req.query.network_type);
+        inputString = inputString.concat('"}},');
+
+        // add the request-information header
+        inputString = inputString.concat('"request-information": {"request-action": "DeletePreloadNetworkRequest"},');
+
+		// add the sdnc-request-header
+		inputString = inputString.concat('"sdnc-request-header": {"svc-request-id":"');
+		inputString = inputString.concat(req.query.svc_request_id);
+		inputString = inputString.concat('","svc-action": "delete"}}}');
+	
+        tasks.push(function(callback) {
+            OdlInterface.Post('/restconf/operations/VNF-API:preload-network-topology-operation',
+                    options,inputString,res,callback);
+        });
+        tasks.push(function(callback) {
+            dbRoutes.executeSQL(sql,req,res,callback);
+        });
+    }
+    async.series(tasks, function(err,result){
+
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getVnfNetworkData(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Row successfully deleted from PRE_LOAD_VNF_NETWORK_DATA table and ODL.');
+            dbRoutes.getVnfNetworkData(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+
+router.get('/deleteVnfData', csp.checkAuth, csp.checkPriv, csrfProtection, function(req,res) {
+
+console.log('deleteVnfData');
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    var sql = 'DELETE FROM PRE_LOAD_VNF_DATA WHERE id=' + req.query.id;
+
+    // if status is pending, then we do not have to call
+    // ODL, just remove from db
+    if (req.query.status == 'pending'){
+        tasks.push(function(callback) {
+            dbRoutes.executeSQL(sql,req,res,callback);
+        });
+    } else {
+			var inputString = '{"input":{"vnf-topology-information":{"vnf-topology-identifier":{"service-type":"SDN-MOBILITY","vnf-name": "';
+			inputString = inputString.concat(req.query.vnf_name);
+			inputString = inputString.concat('","vnf-type":"');
+			inputString = inputString.concat(req.query.vnf_type);
+			inputString = inputString.concat('"}},');
+		
+      // add the request-information header
+      inputString = inputString.concat('"request-information": {"request-action": "DeletePreloadVNFRequest"},');
+
+    	// add the request-information header
+    	//inputString = inputString.concat('"request-information": {"request-id": "259c0f93-23cf-46ad-84dc-162ea234fff1",');
+		//inputString = inputString.concat('"source": "ADMINPORTAL",');
+		//inputString = inputString.concat('"order-version": "1",');
+		//inputString = inputString.concat('"notification-url": "notused-this would be infrastructure portal",');
+		//inputString = inputString.concat('"order-number": "1",');
+		//inputString = inputString.concat('"request-action": "DeletePreloadVNFRequest"},');
+
+		// add the sdnc-request-header
+		inputString = inputString.concat('"sdnc-request-header": {"svc-request-id":"');
+		inputString = inputString.concat(req.query.svc_request_id);
+		inputString = inputString.concat('","svc-action": "delete"}}}');
+
+		//inputString = inputString.concat('"sdnc-request-header":{');
+		//inputString = inputString.concat('"svc-request-id": "2015-01-15T14:34:54.st1101a",');
+		//inputString = inputString.concat('"svc-notification-url": "not used",');
+		//inputString = inputString.concat('"svc-action": "delete"}}}');
+		
+        tasks.push(function(callback) {
+        	OdlInterface.Post('/restconf/operations/VNF-API:preload-vnf-topology-operation',
+                    options,inputString,res,callback);
+        });
+        tasks.push(function(callback) {
+            dbRoutes.executeSQL(sql,req,res,callback);
+        });
+    }
+    async.series(tasks, function(err,result){
+
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getVnfData(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Row successfully deleted from PRE_LOAD_VNF_DATA table and ODL.');
+            dbRoutes.getVnfData(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+
+router.get('/deleteVnfNetwork', csp.checkAuth, csp.checkPriv, csrfProtection, function(req,res) {
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    var sql = '';
+
+    sql = "DELETE FROM VNF_NETWORKS WHERE vnf_type='" + req.query.vnf_type + "'"
+		+ " AND network_role='" + req.query.network_role + "'";
+
+    tasks.push(function(callback) {
+        dbRoutes.executeSQL(sql,req,res,callback);
+    });
+    async.series(tasks, function(err,result)
+    {
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getVnfNetwork(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Row successfully deleted from VNF_NETWORKS table.');
+            dbRoutes.getVnfNetworks(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+router.get('/deleteVnfProfile', csp.checkAuth, csp.checkPriv, csrfProtection, function(req,res) {
+
+    var privilegeObj = req.session.loggedInAdmin;
+    var tasks = [];
+    var sql = '';
+
+    sql = "DELETE FROM VNF_PROFILE WHERE vnf_type='" + req.query.vnf_type + "'";
+
+    tasks.push(function(callback) {
+        dbRoutes.executeSQL(sql,req,res,callback);
+    });
+    async.series(tasks, function(err,result)
+    {
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            dbRoutes.getVnfProfile(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        else {
+            msgArray.push('Row successfully deleted from VNF_PROFILE table.');
+            dbRoutes.getVnfProfile(req,res,{code:'success', msg:msgArray},privilegeObj);
+            return;
+        }
+    });
+});
+
+// POST
+router.post('/addVnfProfile', csp.checkAuth, csp.checkPriv, csrfProtection, function(req,res){
+
+  var privilegeObj = req.session.loggedInAdmin;
+	var vnf_type = req.sanitize(req.body.nf_vnf_type);
+	var availability_zone_count = req.sanitize(req.body.nf_availability_zone_count);
+  var equipment_role = req.sanitize(req.body.nf_equipment_role);
+  var tasks = [];
+	var sql;
+
+  sql = "INSERT INTO VNF_PROFILE (vnf_type,availability_zone_count,equipment_role) VALUES ("
+       	+ "'" + vnf_type + "'," + availability_zone_count + ",'" + equipment_role + "')"; 
+
+console.log(sql);
+
+	tasks.push( function(callback) { dbRoutes.executeSQL(sql,req,res,callback); } );
+	async.series(tasks, function(err,result){
+		var msgArray = new Array();
+		if(err){
+			msgArray.push(err);
+			dbRoutes.getVnfProfile(req,res,{code:'failure', msg:msgArray},privilegeObj);
+			return;
+		}
+		else {
+			msgArray.push('Successfully added VNF Profile');
+			dbRoutes.getVnfProfile(req,res,{code:'success', msg:msgArray},privilegeObj);
+			return;
+		}
+	});
+});
+
+// POST
+router.post('/uploadVnfData', csp.checkAuth, csp.checkPriv, upload.single('filename'), function(req, res)
+{
+console.log('filename:'+ JSON.stringify(req.file.originalname));
+    var msgArray = new Array();
+    var privilegeObj = req.session.loggedInAdmin;
+
+    if(req.file.originalname)
+	{
+        if (req.file.originalname.size == 0) {
+			msgArray.push('There was an error uploading the file.');
+            dbRoutes.getVnfData(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        fs.exists(req.file.path, function(exists) 
+		{
+            if(exists) 
+			{
+                var str = req.file.originalname;
+				var content;
+                var enc_content;
+			
+				try{
+                    content = fs.readFileSync(req.file.path);
+                    enc_content = encodeURI(content);
+
+
+                    var sql = "INSERT INTO PRE_LOAD_VNF_DATA "
+                        + "(filename,preload_data) VALUES ("
+                        + "'"+ str + "'," + "'" + enc_content + "')";
+
+                	var privilegeObj = req.session.loggedInAdmin;
+                	var tasks = [];
+                	tasks.push( function(callback) { dbRoutes.addRow(sql,req,res,callback); } );
+                	async.series(tasks, function(err,result)
+                	{
+                    	if(err){
+                        	msgArray.push(err);
+                        	dbRoutes.getVnfData(req,res,{code:'failure', msg:msgArray},privilegeObj);
+                        	return;
+                    	}
+                    	else {
+                        	msgArray.push('Successfully uploaded ' + str);
+                        	dbRoutes.getVnfData(req,res,{code:'success', msg:msgArray},privilegeObj);
+                        	return;
+                    	}
+                	});
+				}
+				catch(error){
+						fs.removeSync(req.file.path); // remove bad file that was uploaded
+						console.error("There was an error reading the file '"+str+"'. Error: " + error);
+						msgArray.push("There was an error reading the file '"+str+"'. Error: " + error);
+            			dbRoutes.getVnfData(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            			return;
+				}
+            } else {
+                msgArray.length = 0;
+                msgArray.push('There was an error uploading the file.');
+                dbRoutes.getVnfData(req,res,{code:'danger', msg:msgArray},privilegeObj);
+                return;
+            }
+        });
+ 	}
+    else 
+	{
+        msgArray.length = 0;
+        msgArray.push('There was an error uploading the file.');
+        dbRoutes.getVnfData(req,res,{code:'danger', msg:msgArray},privilegeObj);
+        return;
+    }
+
+} );
+
+router.post('/uploadVnfNetworkData', csp.checkAuth, csp.checkPriv, upload.single('filename'), function(req, res)
+{
+    var msgArray = new Array();
+    var privilegeObj = req.session.loggedInAdmin;
+
+    if(req.file.originalname)
+    {
+        if (req.file.originalname.size == 0) {
+            msgArray.push('There was an error uploading the file.');
+            dbRoutes.getVnfData(req,res,{code:'failure', msg:msgArray},privilegeObj);
+            return;
+        }
+        fs.exists(req.file.path, function(exists)
+        {
+            if(exists)
+            {
+                var str = req.file.originalname;
+                var content;
+                var enc_content;
+
+                try{
+                    content = fs.readFileSync(req.file.path);
+                    enc_content = encodeURI(content);
+
+                    var sql = "INSERT INTO PRE_LOAD_VNF_NETWORK_DATA "
+                        + "(filename,preload_data) VALUES ("
+                        + "'"+ str + "'," + "'" + enc_content + "')";
+
+                    var privilegeObj = req.session.loggedInAdmin;
+                    var tasks = [];
+                    tasks.push( function(callback) { dbRoutes.addRow(sql,req,res,callback); } );
+                    async.series(tasks, function(err,result)
+                    {
+                        if(err){
+                            msgArray.push(err);
+                            dbRoutes.getVnfNetworkData(req,res,{code:'failure', msg:msgArray},privilegeObj);
+                            return;
+                        }
+                        else {
+                            msgArray.push('Successfully uploaded ' + str);
+                            dbRoutes.getVnfNetworkData(req,res,{code:'success', msg:msgArray},privilegeObj);
+                            return;
+                        }
+                    });
+                }
+                catch(error){
+                        fs.removeSync(req.file.path); // remove bad file that was uploaded
+                        msgArray.push("There was an error reading the file '"+str+"'. Error: " + error);
+                        dbRoutes.getVnfNetworkData(req,res,{code:'failure', msg:msgArray},privilegeObj);
+                        return;
+                }
+            } else {
+                msgArray.length = 0;
+                msgArray.push('There was an error uploading the file.');
+                dbRoutes.getVnfNetworkData(req,res,{code:'danger', msg:msgArray},privilegeObj);
+                return;
+            }
+        });
+    }
+	else
+    {
+        msgArray.length = 0;
+        msgArray.push('There was an error uploading the file.');
+        dbRoutes.getVnfNetworkData(req,res,{code:'danger', msg:msgArray},privilegeObj);
+        return;
+    }
+
+} );
+
+
+router.post('/uploadVnfProfile', csp.checkAuth, csp.checkPriv, upload.single('filename'), function(req, res){
+
+    var msgArray = new Array();
+    var privilegeObj = req.session.loggedInAdmin;
+
+    if(req.file.originalname)
+	{
+        if (req.file.originalname.size == 0) {
+            dbRoutes.getVnfProfile(req,res,{code:'failure', msg:'There was an error uploading the file, please try again.'},privilegeObj);
+            return;
+        }
+        fs.exists(req.file.path, function(exists) {
+
+            if(exists) {
+
+                var str = req.file.originalname;
+
+                try {
+                    var csv = require('csv');
+
+                    // the job of the parser is to convert a CSV file
+                    // to a list of rows (array of rows)
+                    var parser = csv.parse({
+                        columns: function(line) {
+                            // By defining this callback, we get handed the
+                            // first line of the spreadsheet. Which we'll
+                            // ignore and effectively skip this line from processing
+                        },
+                        skip_empty_lines: true
+                    });
+
+                    var row = 0;
+                    var f = new Array();
+                    var transformer = csv.transform(function(data){
+                        // this will get row by row data, so for example,
+                        //logger.debug(data[0]+','+data[1]+','+data[2]);
+
+                        // build an array of rows
+                        f[row] = new Array();
+                        for ( col=0; col<data.length; col++ )
+                        {
+                            f[row][col] = data[col];
+                        }
+                        row++;
+                    });
+
+                    // called when done with processing the CSV
+                    transformer.on("finish", function() {
+
+                        var funcArray = new Array();
+
+                        function createFunction(lrow,res)
+                        {
+                            return function(callback) { dbRoutes.addVnfProfile(lrow,res,callback); }
+                        }
+                        // loop for each row and create an array of callbacks for async.parallelLimit
+                        // had to create a function above 'createFunction' to get
+                        for (var x=0; x<f.length; x++)
+                        {
+                            funcArray.push( createFunction(f[x],res) );
+                        }
+
+                        // make db calls in parrallel
+                        async.series(funcArray, function(err,result){
+
+                            if ( err ) {
+                                dbRoutes.getVnfProfile(req,res,result,privilegeObj);
+                                return;
+                            }
+                            else {
+                                // result array has an entry in it, success entries are blank, figure out
+                                // how many are not blank, aka errors.
+                                var rowError = 0;
+                                for(var i=0;i<result.length;i++){
+                                    if ( result[i].length > 0 )
+                                    {
+                                        rowError++;
+                                    }
+                                }
+console.log('rowError='+rowError);
+                                var rowsProcessed = f.length - rowError;
+console.log('rowsProcessed='+rowsProcessed);
+                                result.push(rowsProcessed + ' of ' + f.length + ' rows processed.');
+                                if ( rowError > 0 )
+                                {
+                                    result = {code:'failure', msg:result};
+                                }
+                                else
+                                {
+                                    result = {code:'success', msg:result};
+                                }
+console.log('result='+JSON.stringify(result));
+                                dbRoutes.getVnfProfile(req,res,result,privilegeObj);
+                                return;
+                            }
+                        });
+                    });
+
+                    var stream = fs.createReadStream(req.file.path, "utf8");
+                    stream.pipe(parser).pipe(transformer);
+
+                } catch(ex) {
+                    msgArray.length = 0;
+                    msgArray.push('There was an error uploading the file. '+ex);
+                    console.error('There was an error uploading the file. '+ex);
+                    dbRoutes.getVnfProfile(req,res,{code:'danger', msg:msgArray},privilegeObj);
+                    return;
+                }
+            } else {
+                msgArray.length = 0;
+                msgArray.push('There was an error uploading the file.');
+                dbRoutes.getVnfProfile(req,res,{code:'danger', msg:msgArray},privilegeObj);
+                return;
+            }
+        });
+        }
+    else {
+        msgArray.length = 0;
+        msgArray.push('There was an error uploading the file.');
+        dbRoutes.getVnfProfile(req,res,{code:'danger', msg:msgArray},privilegeObj);
+        return;
+    }
+} );
+
+module.exports = router;
diff --git a/sdnc-a1-controller/oam/admportal/server/router/routes/network.js b/sdnc-a1-controller/oam/admportal/server/router/routes/network.js
new file mode 100644
index 0000000..30aa66b
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/routes/network.js
@@ -0,0 +1,438 @@
+

+// Helper functions for processing a NETWORK worksheet

+

+var helpers = require('./helpers.js');

+var _ = require('lodash');

+var csvtojson = require('csvtojson');

+var async = require('async');

+var uuid = require('node-uuid');   // generate a uuid with "uuid.v1()"

+var path = require('path');

+var fs = require("fs");

+var moment = require("moment");

+

+var network = module.exports;

+var getParam = helpers.getParam;

+

+var indir;

+var csvGeneral, csvSubnets, csvVpnBindings, csvPolicies, csvNetRoutes;

+var rawJson={}

+var finalJson={};  

+var platform;

+var req,res;

+var preloadVersion;  // 1607, 1610, etc...

+var proc_error = false;

+var filename;

+

+puts = helpers.puts;

+putd = helpers.putd;

+

+network.go = function(lreq,lres,cb,dir) {

+  puts("Processing NETWORK workbook");

+	proc_error = false;

+  req = lreq;

+  res = lres;

+  callback = cb;

+  if (dir!="") {

+    platform="pc";

+    indir=dir;

+  } else {

+    platform="portal";

+    indir=process.cwd() + "/uploads/";

+  }

+  doGeneral();

+}

+

+// READ WORKSHEET: GENERAL

+

+function doGeneral() {

+  puts("Reading General worksheet");

+  var csvFilename="General.csv";

+  var newFileName = helpers.getFileName(req, csvFilename);

+  if ( newFileName != null ) {

+    helpers.readCsv(indir, newFileName, gotGeneral);

+  }

+  else {

+    puts('general file is missing from upload.');

+		proc_error=true;

+  }

+}

+

+function gotGeneral(err, jsonObj) {

+  if (err) {

+    puts("\nError!");

+    putd(err);

+    proc_error=true;

+		callback('General.csv file is missing from upload.');

+		return;

+  }

+  csvGeneral = jsonObj;

+  puts("\nRead this: ");

+  putd(csvGeneral);

+  puts("\n");

+  doSubnets();

+}

+

+// READ WORKSHEET: SUBNETS

+

+function doSubnets() {

+  puts("Reading Subnets worksheet");

+  var csvFilename="Subnets.csv";

+  var newFileName = helpers.getFileName(req, csvFilename);

+  if ( newFileName != null ) {

+    helpers.readCsv(indir, newFileName, gotSubnets);

+  }

+  else {

+		puts('subnets file is missing from upload.');

+    proc_error=true;

+    callback(csvFilename + ' file is missing from upload.');

+		return;

+  }

+}

+

+function gotSubnets(err, jsonObj) {

+  if (err) {

+    puts("\nError!");

+    putd(err);

+		proc_error=true;

+    callback('Subnets.csv file is missing from upload.');

+    return;

+  }

+  csvSubnets = jsonObj;

+  csvSubnets = _.reject(csvSubnets, 'field2', 'Subnets');

+  csvSubnets = _.reject(csvSubnets, 'field2', 'start-address');

+  csvSubnets = _.reject(csvSubnets, 'field2', '');

+  puts("\nRead this: ");

+  putd(csvSubnets);

+  puts("\n");

+  doVpnBindings();

+}

+

+// READ WORKSHEET: VPN-BINDINGS

+

+function doVpnBindings() {

+  puts("Reading VPN-Bindings worksheet");

+  var csvFilename="VPN-Bindings.csv";

+  var newFileName = helpers.getFileName(req, csvFilename);

+  if ( newFileName != null ) {

+    helpers.readCsv(indir, newFileName, gotVpnBindings);

+  }

+  else {

+		puts('vnp-bindings file is missing from upload.');

+    proc_error=true;

+    callback(csvFilename + ' file is missing from upload.');

+		return;

+  }

+}

+

+function gotVpnBindings(err, jsonObj) {

+  if (err) {

+    puts("\nError!");

+    putd(err);

+		proc_error=true;

+    callback('VPN-Bindings.csv file is missing from upload.');

+    return;

+  }

+  csvVpnBindings = jsonObj;

+  csvVpnBindings = _.reject(csvVpnBindings, 'field2', 'VPN-Bindings');

+  csvVpnBindings = _.reject(csvVpnBindings, 'field2', 'vpn-binding-id');

+  csvVpnBindings = _.reject(csvVpnBindings, function(o) { return (_.trim(o.field2)=="") && (_.trim(o.field3)==""); } );

+  puts("\nRead this: ");

+  putd(csvVpnBindings);

+  puts("\n");

+  doPolicies();

+}

+

+

+// READ WORKSHEET: POLICIES

+

+function doPolicies() {

+  puts("Reading Policies worksheet");

+  var csvFilename="Policies.csv";

+  var newFileName = helpers.getFileName(req, csvFilename);

+  if ( newFileName != null ) {

+    helpers.readCsv(indir, newFileName, gotPolicies);

+  }

+  else {

+		puts('policies file is missing from upload.');

+    proc_error=true;

+    callback(csvFilename + ' file is missing from upload.');

+		return;

+  }

+}

+

+function gotPolicies(err, jsonObj) {

+  if (err) {

+    puts("\nError!");

+    putd(err);

+		proc_error=true;

+    callback('Policies.csv file is missing from upload.');

+    return;

+  }

+  csvPolicies = jsonObj;

+  csvPolicies = _.reject(csvPolicies, 'field2', 'Policies');

+  csvPolicies = _.reject(csvPolicies, 'field2', 'network-policy-fqdn');

+  csvPolicies = _.reject(csvPolicies, 'field2', '');

+  puts("\nRead this: ");

+  putd(csvPolicies);

+  puts("\n");

+  doNetRoutes();

+}

+

+

+// READ WORKSHEET: NETWORK-ROUTES

+

+function doNetRoutes() {

+  puts("Reading Network-Routes worksheet");

+  var csvFilename="Network-Routes.csv";

+  var newFileName = helpers.getFileName(req, csvFilename);

+  preloadVersion = getParam(csvGeneral, 'field2', 'preload-version', 'field3');

+  if ( preloadVersion == '1607' ) {

+    puts("This is a 1607 spreadsheet. Skipping Network-Routes.csv.");

+    gotNetRoutes(null,{});

+    return;

+  }

+  if ( newFileName != null ) {

+    helpers.readCsv(indir, newFileName, gotNetRoutes);

+  }

+  else {

+		puts('network-routes file is missing from upload.');

+    proc_error=true;

+    callback(csvFilename + ' file is missing from upload.');

+		return;

+  }

+}

+

+function gotNetRoutes(err, jsonObj) {

+  if (err) {

+    puts("\nError!");

+    putd(err);

+		proc_error=true;

+    callback('Network-Routes.csv file is missing from upload.');

+    return;

+  }

+  csvNetRoutes = jsonObj;

+  csvNetRoutes = _.reject(csvNetRoutes, 'field2', 'Network-Routes');

+  csvNetRoutes = _.reject(csvNetRoutes, 'field2', 'route-table-reference-fqdn');

+  csvNetRoutes = _.reject(csvNetRoutes, 'field2', '');

+  puts("\nRead this: ");

+  putd(csvNetRoutes);

+  puts("\n");

+  doneReadingFiles();

+}

+

+

+// DONE READING FILES

+

+function doneReadingFiles() {

+  puts("\n");

+  puts("DONE READING FILES!");

+  puts("\n");

+  processJson();

+}

+

+

+// PROCESS THE CSV FILES INTO OBJECTS TO BE ASSEMBLED INTO FINAL OUTPUT

+function processJson() {

+  processGeneral();

+  processSubnets();

+  processVpnBindings();

+  processPolicies();

+  processNetRoutes();

+  assembleJson();

+	outputJson();

+

+	puts('proc_error=');

+  putd(proc_error);

+  if ( proc_error ){

+    puts('callback with failure');

+    callback('Error was encountered processing upload.');

+    return;

+  }

+  else

+  {

+    puts('callback with success');

+  	callback(null,  finalJson, filename);

+    return;

+	}

+}

+

+// ASSEMBLE AND OUTPUT RESULTS

+

+function assembleJson() {

+  puts("\n");

+  puts("Using raw JSON and assembling final ouptut JSON.");

+  puts("\n");

+

+  networkTopoID = { "network-name": rawJson['network-name'],

+		"network-role": rawJson['network-role'],

+		"network-type": rawJson['network-type'],

+		"network-technology": rawJson['network-technology'] };

+

+  providerInfo = { "physical-network-name": rawJson['physical-network-name'],

+               "is-provider-network": rawJson['is-provider-network'],

+               "is-shared-network": rawJson['is-shared-network'],

+               "is-external-network": rawJson['is-external-network'] };

+

+  networkSubnets = rawJson['subnets'];

+

+  networkVpnBindings = rawJson['vpn-bindings'];

+

+  networkPolicies = rawJson['network-policy-fqdns'];

+

+  networkRoutes = rawJson['route-table-reference'];

+

+  networkTopo = { "network-topology-identifier": networkTopoID,

+	      "provider-network-information": providerInfo,

+              "subnets": networkSubnets,

+              "vpn-bindings": networkVpnBindings,

+              "network-policy": networkPolicies,

+              "route-table-reference": networkRoutes};

+

+  networkInput = {'network-topology-information': networkTopo};

+

+  finalJson = {"input": networkInput};

+

+  //outputJson();

+}

+

+function outputJson() {

+  puts("\n");

+  puts("\n");

+  puts(JSON.stringify(finalJson,null,2));

+  puts("\n");

+  puts("\n");

+  var unixTime, fullpath_filename;

+  unixTime = moment().unix();

+  if (platform=='portal') {

+    fullpath_filename = process.cwd() + "/uploads/" + unixTime + ".net_worksheet.json";

+    filename = unixTime + ".net_worksheet.json.";

+  } else {

+    fullpath_filename = "./output.json."+unixTime;

+    filename = "output.json." + unixTime;

+  }

+  helpers.writeOutput(req, fullpath_filename, JSON.stringify(finalJson,null,2), callback);

+  //callback(null,  finalJson, filename);

+}

+

+

+// Gather functions that actually process data after it is all read

+

+function processGeneral() {

+  preloadVersion = getParam(csvGeneral, 'field2', 'preload-version', 'field3');

+  rawJson['preload-version'] = preloadVersion;

+  puts("Preload version: " + preloadVersion);

+

+  if ( (preloadVersion!='1607') && (preloadVersion!='1610') ) {

+    puts("\nError - incorrect version of preload worksheet.");

+		proc_error=true;

+    //callback('Error - incorrect version of preload worksheet.');

+		return;

+  }

+

+  rawJson['network-name'] = getParam(csvGeneral, 'field2', 'network-name', 'field3');

+  rawJson['network-role'] = getParam(csvGeneral, 'field2', 'network-role', 'field3');

+  rawJson['network-type'] = getParam(csvGeneral, 'field2', 'network-type', 'field3');

+  rawJson['network-technology'] = getParam(csvGeneral, 'field2', 'network-technology', 'field3');

+

+  if ( preloadVersion!='1607' ) {

+    rawJson['physical-network-name'] = getParam(csvGeneral, 'field2', 'physical-network-name', 'field3');

+    rawJson['is-provider-network'] = getParam(csvGeneral, 'field2', 'is-provider-network', 'field3');

+    rawJson['is-shared-network'] = getParam(csvGeneral, 'field2', 'is-shared-network', 'field3');

+    rawJson['is-external-network'] = getParam(csvGeneral, 'field2', 'is-external-network', 'field3');

+  }

+

+  rawJson['request-action'] = "PreloadNetworkRequest";

+  rawJson['svc-request-id'] = uuid.v1();

+  rawJson['svc-action'] = "reserve";

+  puts('rawJson:');

+  putd(rawJson);

+  puts("\n");

+}

+

+function processSubnets() {

+  var newSubnets = [];

+  csvSubnets.forEach( function(subnet) {

+    var subnetJson = {};

+    subnetJson["start-address"] = subnet.field2;

+    if (subnet.field3!='') {

+      subnetJson["dhcp-start-address"] = subnet.field3;

+    }

+    if (subnet.field4!='') {

+      subnetJson["dhcp-end-address"] = subnet.field4;

+    }

+    if (subnet.field5!='') {

+      subnetJson["gateway-address"] = subnet.field5;

+    }

+    subnetJson["cidr-mask"] = subnet.field6;

+    subnetJson["ip-version"] = subnet.field7;

+    subnetJson["dhcp-enabled"] = subnet.field8;

+    subnetJson["subnet-name"] = subnet.field9;

+    newSubnets.push(subnetJson);

+    }

+  );

+  puts("subnets:");

+  putd(newSubnets);

+  puts("\n");

+  rawJson["subnets"] = newSubnets;

+}

+

+function processVpnBindings() {

+  var newVpnBindings = [];

+

+  csvVpnBindings.forEach( function(vpn) {

+    var vpnJson = {};

+    bindid = _.trim(vpn.field2);

+    vpnJson["vpn-binding-id"] = bindid;

+    if (bindid!="") {

+      newVpnBindings.push(vpnJson);

+    }

+    });

+

+  puts("VPN-Bindings:");

+  putd(newVpnBindings);

+  puts("\n");

+  rawJson["vpn-bindings"] = newVpnBindings;

+}

+

+function processPolicies() {

+  var newPolicies = [];

+

+  csvPolicies.forEach( function(policy) {

+    var policyJson = {};

+    fqdn = _.trim(policy.field2);

+    if (fqdn != "") {

+      policyJson["network-policy-fqdn"] = fqdn;

+      newPolicies.push(policyJson);

+    }

+

+    }

+  );

+

+  puts("Policies:");

+  putd(newPolicies);

+  puts("\n");

+  rawJson["network-policy-fqdns"] = newPolicies;

+}

+

+function processNetRoutes() {

+  var newNetRoutes = [];

+

+  csvNetRoutes.forEach( function(netroute) {

+    var netrouteJson = {};

+    fqdn = _.trim(netroute.field2);

+    if (fqdn != "") {

+      netrouteJson["route-table-reference-fqdn"] = fqdn;

+      newNetRoutes.push(netrouteJson);

+    }

+

+    }

+  );

+

+  puts("Network-Routes:");

+  putd(newNetRoutes);

+  puts("\n");

+  rawJson["route-table-reference"] = newNetRoutes;

+}

+

+

+

diff --git a/sdnc-a1-controller/oam/admportal/server/router/routes/odl.js b/sdnc-a1-controller/oam/admportal/server/router/routes/odl.js
new file mode 100644
index 0000000..3882afc
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/routes/odl.js
@@ -0,0 +1,258 @@
+var express = require('express');
+var router = express.Router();
+var csp = require('./csp');
+var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
+var async = require('async');
+
+
+// pass host, username and password to ODL
+var username = properties.odlUser;
+var password = properties.odlPasswd;
+var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64');
+
+// target host for ODL request
+var host = properties.odlHost;
+var port = properties.odlPort;
+var header = {'Host': host, 'Authorization': auth, 'Content-Type': 'application/yang.data+json'};
+var options = {
+        host: host,
+        headers           : header,
+        port              : port,
+		rejectUnauthorized: false,
+		strictSSL         : false
+};
+
+// Connection to OpenDaylight
+OdlInterface = require('./OdlInterface');
+
+function handleResult(err, response_str, res) {
+    if (err) {
+        console.error( String(err) );
+        res.render('pages/err', {result:{code:'failure', msg:String(err)}, header:process.env.MAIN_MENU});
+    } else {
+        // make sure response starts with JSON string
+        if (response_str && response_str.indexOf('{') == 0) {
+            //console.log("response: ", result);
+            res.render('odl/listWklst', { response_obj: JSON.parse(response_str), header:process.env.MAIN_MENU });
+        } else {
+			res.render('pages/err', {result:{code:'failure', msg:String(err) }, header:process.env.MAIN_MENU});
+        }
+    }
+}
+
+// / index page
+// calls restconf to get information
+router.get('/listWklst', csp.checkAuth, function(req, res) {
+    options.strictSSL = true;   // used to test SSL certificate
+    OdlInterface.Get('/restconf/config/L3SDN-API:services',options, handleResult,req,res);
+});
+
+router.get('/pageWklst', csp.checkAuth, function(req,res) {
+    pageWklst(req,res, {code:'', msg:''}, req.session.loggedInAdmin);
+});
+
+
+function pageWklst(req,res,resultObj,privilegeObj)
+{
+     if(req.session == null || req.session == undefined
+            || req.session.l3sdnPageInfo == null || req.session.l3sdnPageInfo == undefined)
+     {
+        res.render("pages/err",
+            { result: {code:'error', msg:"Unable to read session information. "+ String(err) }, header:process.env.MAIN_MENU});
+            return;
+     }
+
+    var l3sdnPageInfo = req.session.l3sdnPageInfo;
+    var currentPage=1;
+    if (typeof req.query.page != 'undefined')
+    {
+        currentPage = +req.query.page;
+    }
+    l3sdnPageInfo.currentPage = currentPage;
+    l3sdnPageInfo.rows = l3sdnPageInfo.pages[currentPage-1];
+    req.session.l3sdnPageInfo = l3sdnPageInfo;
+	res.render('odl/listWklst',
+    {
+    	pageInfo  : l3sdnPageInfo,
+        result    : resultObj,
+        privilege : privilegeObj, header:process.env.MAIN_MENU
+    });
+    return;
+}
+
+
+router.post('/update_vr_lan_interface', function(req,res){
+	var svc_instance_id = encodeURIComponent(req.body.svc_instance_id);
+
+	// format msg
+    var msgRsp = 
+	{
+    	"vr-lan-interface" : 
+		[
+			{
+				"vr-designation"         : req.body.uf_vr_designation,
+				"v6-vr-lan-prefix"       : req.body.uf_vr_lan_prefix,
+				"v6-vr-lan-prefix-length": req.body.uf_vr_lan_prefix_length,
+				"v6-vce-wan-address"     : req.body.uf_vce_wan_address,
+				"v4-vr-lan-prefix"       : req.body.uf_vr_lan_prefix,
+				"v4-vr-lan-prefix-length": req.body.uf_vr_lan_prefix_length,
+				"v4-vce-loopback-address": req.body.uf_vce_loopback_address
+			}
+		]
+	};
+	var tasks = [];
+	tasks.push(function(callback){
+		OdlInterface.put_vr_lan_interface('/restconf/config/L3SDN-API:services/layer3-service-list/'
+			+ svc_instance_id
+			+ '/service-data/vr-lan/', options, callback);
+	});
+	async.series(tasks, function(err,result){
+		
+		if(err){
+		}
+		else{
+    		var msgArray = new Array();
+			//result:{code:'error', msg:"got vr-lan information: "+ String(result)}
+            msgArray.push('vr-lan-interface successfully updated.');
+			res.render("odl/listVRlan", 
+			{
+				svc_instance_id: req.body.svc_instance_id,
+				response_obj   : JSON.parse(result), header:process.env.MAIN_MENU
+			});
+            return;
+		}	
+	});
+});
+
+
+// sendData submits form data to ODL
+// Data is read from URL params and converted to JSON
+router.get('/svc-topology-operation', function(req, res) {
+    var formData = '{"input":{'
+             + '"svc-request-id":"'+ new Date().toISOString() + '"' +','
+             + '"svc-notification-url":"'+ req.query['svc-notification-url']+ '"' + ','
+             + '"svc-action":"'+ req.query['svc-action']+ '"' + ','
+             + '"svc-vnf-type":"'+ req.query['svc-vnf-type']+ '"' + ','
+             + '"svc-instance-id":"'+ req.query['svc-instance-id']+ '"' + ','
+             + '"svc-aic-site-id":"'+ req.query['svc-aic-site-id']+ '"'
+             +' } }';
+    OdlInterface.Post('/restconf/operations/L3SDN-API:svc-topology-operation', options, formData, handleResult, res);
+});
+
+// delete request
+router.get('/wklist-delete', function(req, res) {
+    //console.dir(req.query);
+    OdlInterface.Delete('/restconf/config/L3SDN-API:l3sdn-api-worklist/requests/'+req.query['request'], options, handleResult, res);
+});
+
+// get request
+router.get('/getid',function(req, res) {
+    //console.dir(req.query);
+    OdlInterface.GetID('/restconf/config/L3SDN-API:l3sdn-api-worklist/requests/'+req.query['request'], options, res);
+});
+
+router.get('/getvnf', function(req,res) {
+    //console.log("/getvnf "+req.query);
+    OdlInterface.GetVNF('/restconf/config/L3SDN-API:l3sdn-api-worklist/requests/'+req.query['request']+'/vnf/',options,req,res);
+});
+router.get('/getvrlan', function(req,res) {
+	var vrtasks = [];
+	var reqstr = encodeURIComponent(req.query['request']);
+    vrtasks.push(function(callback) {
+		OdlInterface.GetVRlan('/restconf/config/L3SDN-API:services/layer3-service-list/'+reqstr+'/service-data/vr-lan/',options,callback);
+    });
+	async.series(vrtasks, function(err,result){
+    	var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+			OdlInterface.Get('/restconf/config/L3SDN-API:services',options, handleResult,res);
+			//res.render("pages/err",
+                //{result:{code:'error', msg:"Unable to get vr-lan information: "+ String(err) }});
+            return;
+        }
+        else {
+            msgArray.push('Row successfully deleted from AIC_SITE table.');
+			res.render("odl/listVRlan", 
+			{
+				svc_instance_id: req.query['request'],
+				response_obj   : JSON.parse(result), header:process.env.MAIN_MENU
+			});
+            return;
+        }
+    });
+});
+router.get('/getClusterStatus', function(req,res) {
+
+
+    var urltasks = [];
+    var _header = {'Host': host, 'Authorization': auth, 'Content-Type': 'application/yang.data+json'};
+    var _options = null;
+
+	var slist = properties.shard_list;
+	var hlist = properties.hostnameList;
+	var port = properties.clusterPort;
+	var prefix_url = properties.clusterPrefixURL;
+	var mid_url = properties.clusterMidURL;
+	var suffix_url = properties.clusterSuffixURL;
+	var urlArray = new Array();
+	var url_request='';
+	var shard=null, hostname=null;
+
+	// build array of urls from properties
+    for(var x=0; x<slist.length; x++)
+    {
+       	shard = slist[x];
+		for(var y=0; y<hlist.length; y++)
+		{
+    		hostname = hlist[y];
+
+        	url_request = properties.odlProtocol + '://'
+            	+ hostname.hname + ':'
+            	+ port
+            	+ prefix_url
+            	+ (y+1)
+            	+ mid_url
+            	+ shard.shard_name
+            	+ suffix_url;
+
+    		_options = {
+				method 			  : "GET",
+				path			  : url_request,
+        		host			  : hostname.hname,
+        		headers           : _header,
+        		port              : port,
+        		rejectUnauthorized: false,
+        		strictSSL         : false
+			};
+        	urlArray.push(_options);
+    	}
+	}
+
+	urlArray.forEach(function(request){
+    	urltasks.push(function(callback) {
+        	OdlInterface.GetClusterStatus(request,callback);
+		});
+    });
+    async.series(urltasks, function(err,result){
+        var msgArray = new Array();
+        if(err){
+            msgArray.push(err);
+            res.render("pages/err",
+                {result:{code:'error', msg:"Unable to get status: "+ String(err) }, header:process.env.MAIN_MENU});
+            return;
+        }
+        else {
+    		var msgArray = new Array();
+            msgArray.push('Sucess');
+            res.render("odl/cluster_status",
+            {
+				result         : {code:'success', msg:msgArray}, 
+                response_obj   : result, header:process.env.MAIN_MENU
+            });
+            return;
+        }
+    });
+});
+
+
+module.exports = router;
diff --git a/sdnc-a1-controller/oam/admportal/server/router/routes/preload.js b/sdnc-a1-controller/oam/admportal/server/router/routes/preload.js
new file mode 100644
index 0000000..522c6da
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/routes/preload.js
@@ -0,0 +1,138 @@
+var express = require('express');
+var router = express.Router();
+var exec = require('child_process').exec;
+var util = require('util');
+var fs = require('fs.extra');
+var dbRoutes = require('./dbRoutes');
+var csp = require('./csp');
+var multer = require('multer');
+var bodyParser = require('body-parser');
+var sax = require('sax'),strict=true,parser = sax.parser(strict);
+var async = require('async');
+var l_ = require('lodash');
+var dateFormat = require('dateformat');
+var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
+var vnf = require('./vnf');
+var network = require('./network');
+var moment = require('moment');
+
+// pass host, username and password to ODL
+// target host for ODL request
+var username = properties.odlUser;
+var password = properties.odlPasswd;
+var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64');
+var host = properties.odlHost;
+var port = properties.odlPort;
+
+var header = {'Host': host, 'Authorization': auth, 'Content-Type': 'application/json'};
+var options = {
+        host    : host,
+        headers : header,
+        port    : port,
+        rejectUnauthorized:false,
+        strictSSL: false
+};
+
+// multer 
+var unixTime = moment().unix();
+var storage = multer.diskStorage({
+  destination: function (req, file, cb) {
+    cb(null, process.cwd() + '/uploads/')
+		return;
+  },
+  filename: function (req, file, cb) {
+console.log('filename');
+    cb(null, unixTime + "." + file.originalname )
+		return;
+  }
+});
+
+var upload = multer({
+	storage: storage,
+	fileFilter: function(req,file,cb) {
+		var type = file.mimetype;
+		if ( type.indexOf('ms-excel') == -1 ) {
+			return cb(null,false);
+		}
+		cb(null,true);
+		return;
+	}
+});
+
+router.post('/uploadVnfCsv', csp.checkAuth, upload.array('filename'), function(req, res)
+{
+  var msgArray = new Array();
+	var privilegeObj = req.session.loggedInAdmin;
+	var tasks = [];
+
+	tasks.push ( function(callback) { vnf.go(req,res,callback,''); } );
+	tasks.push ( function(arg1,arg2,callback) { formatVnfInsertStatement(arg1,arg2,req,res,callback); } );
+  tasks.push( function(arg1, callback) { dbRoutes.addRow(arg1,req,res,callback); } );
+	async.waterfall(tasks, function(err,result)
+	{	
+		if(err){
+			msgArray.push(err);
+			dbRoutes.getVnfData(req,res,{code:'failure', msg:msgArray},privilegeObj);
+			return;
+		}
+		else {
+			msgArray.push('Successfully uploaded file.' );
+			dbRoutes.getVnfData(req,res,{code:'success', msg:msgArray},privilegeObj);
+			return;
+		}
+	});
+});
+
+router.post('/uploadNetworkCsv', csp.checkAuth, upload.array('filename'), function(req, res)
+{
+	console.log('uploadNetworkCsv');
+
+	var msgArray = new Array();
+	var privilegeObj = req.session.loggedInAdmin;
+	var tasks = [];
+
+	tasks.push ( function(callback) { network.go(req,res,callback,''); } );
+	tasks.push ( function(arg1,arg2,callback) { formatNetworkInsertStatement(arg1,arg2,req,res,callback); } );
+	tasks.push( function(arg1, callback) { dbRoutes.addRow(arg1,req,res,callback); } );
+	async.waterfall(tasks, function(err,result)
+	{
+		if(err){
+			console.log('ERROR:' + err);
+			msgArray.push(err);
+			dbRoutes.getVnfNetworkData(req,res,{code:'failure', msg:msgArray},privilegeObj);
+		}
+		else {
+			msgArray.push('Successfully uploaded file.' );
+			dbRoutes.getVnfNetworkData(req,res,{code:'success', msg:msgArray},privilegeObj);
+		}
+	});
+});
+
+
+function formatVnfInsertStatement(content,filename,req,res,callback)
+{
+	var newstr = JSON.stringify(content);
+	var enc_str = encodeURI(newstr);
+	var sql = "INSERT INTO PRE_LOAD_VNF_DATA "
+		+ "(filename,preload_data) VALUES ("
+		+ "'"+ filename + "',"
+		+ "'" + enc_str + "')";
+
+	callback(null,sql);
+	return;
+}
+
+function formatNetworkInsertStatement(content,filename,req,res,callback)
+{
+	var newstr = JSON.stringify(content);
+	var enc_str = encodeURI(newstr);
+	var sql = "INSERT INTO PRE_LOAD_VNF_NETWORK_DATA "
+		+ "(filename,preload_data) VALUES ("
+		+ "'"+ filename + "',"
+		+ "'" + enc_str + "')";
+
+	callback(null,sql);
+	return;
+}
+
+module.exports = router;
diff --git a/sdnc-a1-controller/oam/admportal/server/router/routes/root.js b/sdnc-a1-controller/oam/admportal/server/router/routes/root.js
new file mode 100644
index 0000000..78b6982
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/routes/root.js
@@ -0,0 +1,122 @@
+var express = require('express');
+var router = express.Router();
+var csp = require('./csp.js');
+var dbRoutes = require('./dbRoutes.js');
+var sla = require('./sla');
+var os = require('os');
+var async = require('async');
+var OdlInterface = require('./OdlInterface');
+var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
+var cookieParser = require('cookie-parser')
+var csrf = require('csurf')
+var bodyParser = require('body-parser')
+
+var csrfProtection = csrf({cookie:true});
+var parseForm = bodyParser.urlencoded({ extended: false })
+
+
+
+router.use('/healthcheck', function(req,res){
+	res.render('pages/healthcheck');
+});
+router.get('/test', function(req,res){
+
+//console.log('port='+ req.socket.localPort);
+//console.log('port='+ req.protocol);
+
+	// pass host, username and password to ODL
+	var username = properties.odlUser;
+	var password = properties.odlPasswd;
+	var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64');
+
+	// target host for ODL request
+	var host = properties.odlHost;
+	var header = {'Host': host, 'Authorization': auth, 'Content-Type': 'application/yang.data+json'};
+	var c_header = {'Host': properties.odlConexusHost, 'Authorization': auth, 'Content-Type': 'application/yang.data+json'};
+
+// path = '/restconf/config/SLI-API:healthcheck',
+	var _options = {
+		method			  : 'POST',
+        host              : host,
+        headers           : header,
+        port              : '8443',
+		path			  : '/restconf/operations/SLI-API:healthcheck',
+        rejectUnauthorized: false,
+        strictSSL         : false
+	};
+	var c_options = {
+		method			  : 'POST',
+        host              : properties.odlConexusHost,
+        headers           : c_header,
+        port              : '8543',
+		path			  : '/restconf/operations/SLI-API:healthcheck',
+        rejectUnauthorized: false,
+        strictSSL         : false
+	};
+
+
+    var tasks = [];
+    //tasks.push( function(callback) { dbRoutes.testdb(req,res,callback); } );
+
+	tasks.push ( createFunctionObj(_options) );
+
+	tasks.push ( createFunctionObj(c_options) );
+
+    async.series(tasks, function(err,result){
+    	if(err) {
+			res.status(400).send(err);
+			return;
+    	}
+		res.status(200).send(result);
+		return;
+	});
+});
+
+function createFunctionObj( loptions ) {
+	return function(callback) { OdlInterface.Healthcheck(loptions,callback); };
+}
+
+//router.get('/mytree', function(req,res) {
+//	res.render('pages/tree');
+//});
+//router.get('/setuplogin', function(req,res) {
+//	res.render('pages/setuplogin');
+//});
+//router.post('/formSetupLogin', function(req,res) {
+//	dbRoutes.saveSetupLogin(req,res);
+//});
+
+router.get('/login', csrfProtection, function(req,res) {
+	var tkn = req.csrfToken();
+	res.render('pages/login', {csrfToken:tkn});
+	return;
+});
+router.post('/formlogin', csrfProtection, function(req,res) {
+	csp.login(req,res);
+});
+
+router.get('/signup', csrfProtection, function(req,res) {
+	var tkn = req.csrfToken();
+	res.render('pages/signup', {csrfToken:tkn});
+});
+router.post('/formSignUp', csrfProtection, function(req,res) {
+	dbRoutes.saveUser(req,res);
+});
+
+router.get('/info', function(req,res) {
+	// handle get
+	res.send("login info");
+});
+router.get('/logout', csp.logout, function(req,res) {
+    // handle get
+});
+router.get('/csplogout', function(req,res) {
+    // handle get
+	res.render("pages/csplogout", {result:{code:'success', msg:'You have been successfylly logged out.'},header:process.env.MAIN_MENU});
+});
+router.get('/getuser', function(req,res) {
+    // handle get
+    res.render("pages/home");
+});
+
+module.exports = router;
diff --git a/sdnc-a1-controller/oam/admportal/server/router/routes/sla.js b/sdnc-a1-controller/oam/admportal/server/router/routes/sla.js
new file mode 100644
index 0000000..098cd66
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/routes/sla.js
@@ -0,0 +1,319 @@
+var express = require('express');
+var router = express.Router();
+var exec = require('child_process').exec;
+//var util = require('util');
+var fs = require('fs');
+var dbRoutes = require('./dbRoutes');
+var csp = require('./csp');
+var multer = require('multer');
+var cookieParser = require('cookie-parser');
+var csrf = require('csurf');
+var bodyParser = require('body-parser');
+//var sax = require('sax'),strict=true,parser = sax.parser(strict);
+var async = require('async');
+
+
+// SVC_LOGIC table columns
+var _module=''; // cannot use module its a reserved word
+var version='';
+var rpc='';
+var mode='';
+var xmlfile='';
+
+
+// used for file upload button, retain original file name
+//router.use(bodyParser());
+var csrfProtection = csrf({cookie: true});
+router.use(bodyParser.urlencoded({ extended: true }));
+//var upload = multer({ dest: process.cwd() + '/uploads/', rename: function(fieldname,filename){ return filename; } });
+
+// multer 1.1
+var storage = multer.diskStorage({
+  destination: function (req, file, cb) {
+    cb(null, process.cwd() + '/uploads/')
+  },
+  filename: function (req, file, cb) {
+    cb(null, file.originalname )
+  }
+});
+
+var upload = multer({
+    storage: storage
+});
+
+
+/*
+router.use(multer({
+	dest: process.cwd() + '/uploads/',
+	rename: function(fieldname,filename){
+		return filename;
+	}
+}));
+*/
+
+
+//router.use(express.json());
+//router.use(express.urlencoded());
+//router.use(multer({ dest: './uploads/' }));
+
+
+// GET
+router.get('/listSLA', csp.checkAuth, csrfProtection, function(req,res) {
+	dbRoutes.listSLA(req,res,{code:'', msg:''} );
+});
+
+router.get('/activate', csp.checkAuth, csrfProtection, function(req,res){
+
+	var _module = req.query.module;
+	var rpc = req.query.rpc;
+	var version = req.query.version;
+	var mode = req.query.mode;
+
+	var tasks = [];
+    tasks.push( function(callback) { dbRoutes.global_deactivate(req,res,_module,rpc,mode,callback); } );
+    tasks.push( function(callback) { dbRoutes.activate(req,res,_module,rpc,version,mode,callback); } );
+	async.series(tasks,  function(err,result){
+
+		 if (  err ) {
+			 dbRoutes.listSLA(req,res,{code:'failure', msg:'Failed to activate, '+ String(err) });
+         }
+		 else {
+			 dbRoutes.listSLA(req,res,{ code:'success', msg:'Successfully activated directed graph.'});
+		 }
+	});
+});
+
+router.get('/deactivate', csp.checkAuth, csrfProtection, function(req,res){
+
+	var _module = req.query.module;
+	var rpc = req.query.rpc;
+	var version = req.query.version;
+	var mode = req.query.mode;
+
+	var tasks = [];
+    tasks.push( function(callback) { dbRoutes.deactivate(req,res,_module,rpc,version,mode,callback); } );
+    async.series(tasks,  function(err,result){
+
+         if (  err ) {
+             dbRoutes.listSLA(req,res,{code:'failure', msg:'There was an error uploading the file. '+ err });
+         }
+         else {
+             dbRoutes.listSLA(req,res,{ code:'success', msg:'Successfully deactivated directed graph.'});
+         }
+    });
+});
+
+router.get('/deleteDG', csp.checkAuth, csrfProtection, function(req,res){
+
+	var _module = req.query.module;
+	var rpc = req.query.rpc;
+	var version = req.query.version;
+	var mode = req.query.mode;
+
+	var tasks = [];
+    tasks.push( function(callback) { dbRoutes.deleteDG(req,res,_module,rpc,version,mode,callback); } );
+    async.series(tasks,  function(err,result){
+
+         if (  err ) {
+             dbRoutes.listSLA(req,res,{ code:'failure', msg:'There was an error uploading the file. '+ err });
+         }
+         else {
+             dbRoutes.listSLA(req,res,{ code:'success', msg:'Successfully deleted directed graph.'});
+         }
+    });
+});
+
+router.post('/dgUpload', upload.single('filename'), csrfProtection, function(req, res, next){
+
+    if(req.file.originalname){
+        if (req.file.originalname == 0) {
+			
+            dbRoutes.listSLA(req,res,{ code:'danger', msg:'There was an error uploading the file, please try again.'});
+        }
+        fs.exists(req.file.path, function(exists) {
+            if(exists) {
+
+                // parse xml
+                try {
+					//dbRoutes.checkSvcLogic(req,res);
+
+                    var file_buf = fs.readFileSync(req.file.path, "utf8");
+
+                    // call Dan's svclogic shell script from here
+					 var currentDB = dbRoutes.getCurrentDB();
+                     var commandToExec = process.cwd()
+                        + "/shell/svclogic.sh load "
+                        + req.file.path + " "
+                        + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB;
+
+                    console.log("commandToExec:" + commandToExec);
+                    child = exec(commandToExec ,function (error,stdout,stderr){
+                        if(error){
+                            console.error("error:" + error);
+							//res.type('text/html').status(400).send( error);
+							//return;
+                        }
+                        if(stderr){
+							res.status(400).send(stderr);
+							return;
+                        }
+                        if(stdout){
+							res.status(200).send( new Buffer('Success'));
+							return;
+                        }
+
+                        // remove the grave accents, the sax parser does not like them
+                        //parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
+                        //dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
+                        //dbRoutes.listSLA(req,res, resultObj);
+                    });
+                } catch(ex) {
+                    // keep 'em silent
+                    console.error('sax error:'+ex);
+					res.status(400).send(ex);
+					return;
+                }
+
+            } else {
+				res.status(400).send(new Buffer('Cannot find file.'));
+				return;
+			
+            }
+        });
+    }
+    else {
+		res.status(400).send(new Buffer('file does not exist\n'));
+    }
+	return;
+});
+
+
+// POST
+router.post('/upload', csp.checkAuth, upload.single('filename'), csrfProtection, function(req, res, next){
+
+console.log('file:'+ JSON.stringify(req.file));
+
+	if(req.file.originalname)
+	{
+		if (req.file.originalname.size == 0)
+		{
+			dbRoutes.listSLA(req,res,
+			{ code:'danger', msg:'There was an error uploading the file, please try again.'});
+		}
+		fs.exists(req.file.path, function(exists)
+		{
+			if(exists)
+			{
+				// parse xml
+				try 
+				{
+					//dbRoutes.checkSvcLogic(req,res);
+
+					var currentDB = dbRoutes.getCurrentDB();
+					var file_buf = fs.readFileSync(req.file.path, "utf8");
+
+					// call svclogic shell script from here
+					var commandToExec = process.cwd() + "/shell/svclogic.sh load "
+						+ req.file.path + " "
+            + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB;
+
+					console.log("commandToExec:" + commandToExec);
+					child = exec(commandToExec ,function (error,stdout,stderr)
+					{
+						if(error)
+						{
+							console.error("error:" + error);
+							dbRoutes.listSLA(req,res,{code:'failure',msg:error} );
+							return;
+						}
+						if(stderr){
+							console.error("stderr:" + JSON.stringify(stderr,null,2));
+							var s_stderr = JSON.stringify(stderr);
+            	if ( s_stderr.indexOf("Saving") > -1 )
+            	{
+              	dbRoutes.listSLA(req,res,{code:'success', msg:'File sucessfully uploaded.'});
+            	}else {
+              	dbRoutes.listSLA(req,res,{code:'failure', msg:stderr});
+            	}
+            	return;
+						}
+          	if(stdout){
+							console.log("stderr:" + stdout);
+							dbRoutes.listSLA(req,res,{code:'success', msg:'File sucessfully uploaded.'});
+            	return;
+						}
+
+						// remove the grave accents, the sax parser does not like them
+    					//parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
+						//dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
+						//dbRoutes.listSLA(req,res, resultObj);
+				});
+			} catch(ex) {
+				// keep 'em silent
+				console.error("error:" + ex);
+				dbRoutes.listSLA(req,res,{code:'failure',msg:ex} );
+			}
+		}
+		else {
+			dbRoutes.listSLA(req,res,{ code:'danger', msg:'There was an error uploading the file, please try again.'});
+		}
+		});
+	}
+	else {
+		dbRoutes.listSLA(req,res,{ code:'danger', msg:'There was an error uploading the file, please try again.'});
+	}
+});
+
+router.get('/printAsXml', csp.checkAuth, csrfProtection, function(req,res){
+
+	try {
+		//dbRoutes.checkSvcLogic(req,res);
+
+		var _module = req.query.module;
+    var rpc = req.query.rpc;
+    var version = req.query.version;
+    var mode = req.query.mode;
+		var currentDB = dbRoutes.getCurrentDB();
+
+    // call Dan's svclogic shell script from here
+    var commandToExec = process.cwd()
+       		+ "/shell/svclogic.sh get-source "
+            + _module + " "
+            + rpc + " "
+            + mode + " "
+            + version + " "
+            + process.env.SDNC_CONFIG_DIR + "/svclogic.properties." + currentDB;
+
+		console.log("commandToExec:" + commandToExec);
+
+    child = exec(commandToExec , {maxBuffer: 1024*5000}, function (error,stdout,stderr){
+	  	if(error){
+				console.error("error:" + error);
+        dbRoutes.listSLA(req,res,{code:'failure',msg:error} );
+				return;
+    	}
+    	//if(stderr){
+    	//logger.info("stderr:" + stderr);
+    	//}
+    	if(stdout){
+      	console.log("OUTPUT:" + stdout);
+      	res.render('sla/printasxml', {result:{code:'success', 
+				msg:'Module : ' + _module + '\n' + 
+						'RPC    : ' + rpc + '\n' + 
+						'Mode   : ' + mode + '\n' +
+						'Version: ' + version + '\n\n' + stdout}, header:process.env.MAIN_MENU});
+   		}
+
+   		// remove the grave accents, the sax parser does not like them
+   		//parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
+   		//dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
+   		//dbRoutes.listSLA(req,res, resultObj);
+   });
+ } catch(ex) {
+		console.error("error:" + ex);
+		dbRoutes.listSLA(req,res,{code:'failure',msg:ex} );
+ }
+});
+
+
+module.exports = router;
diff --git a/sdnc-a1-controller/oam/admportal/server/router/routes/user.js b/sdnc-a1-controller/oam/admportal/server/router/routes/user.js
new file mode 100644
index 0000000..df5f860
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/routes/user.js
@@ -0,0 +1,172 @@
+var express = require('express');
+var router = express.Router();
+var exec = require('child_process').exec;
+var util = require('util');
+var fs = require('fs');
+var dbRoutes = require('./dbRoutes');
+var csp = require('./csp');
+var cookieParser = require('cookie-parser');
+var csrf = require('csurf');
+var bodyParser = require('body-parser');
+//var sax = require('sax'),strict=true,parser = sax.parser(strict);
+
+var csrfProtection = csrf({cookie: true});
+router.use(cookieParser());
+
+// SVC_LOGIC table columns
+var _module=''; // cannot use module its a reserved word
+var version='';
+var rpc='';
+var mode='';
+var xmlfile='';
+
+
+//router.use(bodyParser());
+router.use(bodyParser.urlencoded({ extended: true }));
+
+
+// GET
+router.get('/listUsers', csp.checkAuth, function(req,res) {
+	dbRoutes.listUsers(req,res, {user:req.session.loggedInAdmin,code:'', msg:''} );
+});
+// POST
+router.post('/updateUser', csp.checkAuth, csrfProtection, function(req,res,next){
+	dbRoutes.updateUser(req,res,{code:'',msg:''});
+});
+router.post('/addUser', csp.checkAuth, csrfProtection, function(req,res) {
+	dbRoutes.addUser(req,res, {code:'', msg:''} );
+});
+router.get('/deleteUser', csp.checkAuth, csrfProtection, function(req,res) {
+	dbRoutes.deleteUser(req,res, {code:'', msg:''} );
+});
+
+//router.get('/activate', csp.checkAuth, function(req,res){
+
+	//var _module = req.query.module;
+	//var rpc = req.query.rpc;
+	//var version = req.query.version;
+	//var mode = req.query.mode;
+
+	//dbRoutes.activate(req,res,_module,rpc,version,mode);
+//});
+
+//router.get('/deactivate', csp.checkAuth, function(req,res){
+
+	//var _module = req.query.module;
+	//var rpc = req.query.rpc;
+	//var version = req.query.version;
+	//var mode = req.query.mode;
+//
+	//dbRoutes.deactivate(req,res,_module,rpc,version,mode);
+//});
+
+//router.get('/deleteDG', csp.checkAuth, function(req,res){
+
+	//var _module = req.query.module;
+	//var rpc = req.query.rpc;
+	//var version = req.query.version;
+	//var mode = req.query.mode;
+
+	//dbRoutes.deleteDG(req,res,_module,rpc,version,mode);
+//});
+/*
+// SAX
+parser.onerror = function (e) {
+	logger.debug('onerror');
+  // an error happened.
+};
+parser.ontext = function (t) {
+  // got some text.  t is the string of text.
+	logger.debug('ontext:'+t);
+};
+parser.onopentag = function (node) {
+  // opened a tag.  node has "name" and "attributes"
+	if ( node.name == 'service-logic' )
+	{
+		_module = node.attributes.module;
+		version = node.attributes.version;
+	}
+	if ( node.name == 'method' )
+	{
+		rpc = node.attributes.rpc;
+		mode = node.attributes.mode;
+	}
+};
+parser.onattribute = function (attr) {
+  // an attribute.  attr has "name" and "value"
+	logger.debug('onattribute:'+attr);
+};
+parser.onend = function () {
+  // parser stream is done, and ready to have more stuff written to it.
+	logger.debug('onend:');
+};
+*/
+
+
+
+//router.post('/upload', csp.checkAuth, function(req, res, next){
+
+/*
+logger.debug("upload");
+	if(req.files.filename){
+        if (req.files.filename.size == 0) {
+			resultObj = 
+				{code:'danger', msg:'There was an error uploading the file, please try again.'};
+			dbRoutes.listSLA(req,res, resultObj);
+        }
+        fs.exists(req.files.filename.path, function(exists) {
+            if(exists) {
+				resultObj = {code:'success', msg:'File sucessfully uploaded.'};
+
+				// parse xml
+				try {
+    				var file_buf = fs.readFileSync(req.files.filename.path, "utf8");
+logger.debug('file '+req.files.filename);
+
+					
+					// call Dan's svclogic shell script from here
+					 var commandToExec = process.cwd()
+            			+ "/shell/svclogic.sh load "
+						+ req.files.filename.path + " "
+						+ process.cwd()
+						+ "/config/svclogic.properties";
+
+        			logger.debug("commandToExec:" + commandToExec);
+        			child = exec(commandToExec ,function (error,stdout,stderr){
+            			if(error){
+                			logger.info("error:" + error);
+            			}
+            			if(stderr){
+                			logger.info("stderr:" + stderr);
+            			}
+            			if(stdout){
+							logger.info("OUTPUT:" + stdout);
+							dbRoutes.listSLA(req,res, resultObj);
+						}
+
+						// remove the grave accents, the sax parser does not like them
+    					//parser.write(file_buf.replace(/\`/g,'').toString('utf8')).close();
+						//dbRoutes.addDG(_module,version,rpc,mode,file_buf,req,res);
+						//dbRoutes.listSLA(req,res, resultObj);
+					});
+				} catch(ex) {
+    				// keep 'em silent
+					logger.debug('sax error:'+ex);
+				}
+
+            } else {
+				resultObj = 
+					{code:'danger', msg:'There was an error uploading the file, please try again.'};
+				dbRoutes.listSLA(req,res, resultObj);
+            }
+        });
+	}
+	else {
+		resultObj = 
+			{code:'danger', msg:'There was an error uploading the file, please try again.'};
+		dbRoutes.listSLA(req,res, resultObj);
+	}
+});
+*/
+
+module.exports = router;
diff --git a/sdnc-a1-controller/oam/admportal/server/router/routes/vnf.js b/sdnc-a1-controller/oam/admportal/server/router/routes/vnf.js
new file mode 100644
index 0000000..99bb3a7
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/server/router/routes/vnf.js
@@ -0,0 +1,644 @@
+

+// Helper functions for processing a VNF worksheet

+

+var helpers = require('./helpers.js');

+var _ = require('lodash');

+var csvtojson = require('csvtojson');

+var async = require('async');

+var uuid = require('node-uuid');   // generate a uuid with "uuid.v1()"

+var path = require('path');

+var fs = require("fs");

+var moment = require("moment");

+

+var vnf = module.exports;

+var getParam = helpers.getParam;

+

+var callback;

+var indir;

+var csvGeneral, csvZones, csvNetworks, csvVMs, csvVMnetworks, csvVMnetworkIPs, csvVMnetworkMACs, csvTagValues;

+var rawJson={}

+var finalJson={};  

+var platform;

+var req, res;

+var preloadVersion;  // 1607, 1610, etc...

+var proc_error=false;

+var filename;

+

+puts = helpers.puts;

+putd = helpers.putd;

+

+vnf.go = function(lreq,lres,cb,dir){

+  puts("Processing VNF workbook");

+	proc_error=false;

+  req = lreq;

+  res = lres;

+  callback = cb;

+  if (dir!="") {

+    platform="pc";

+    indir=dir;

+  } else {

+    platform="portal";

+    indir=process.cwd() + "/uploads/";

+  }

+  doGeneral();

+}

+

+

+// READ WORKSHEET: GENERAL

+

+function doGeneral() {

+  puts("Reading General worksheet");

+  var csvFilename="General.csv";

+  var newFileName = helpers.getFileName(req, csvFilename);

+  if ( newFileName != null ) {

+    helpers.readCsv(indir, newFileName, gotGeneral);

+  }

+  else {

+    puts('General.csv file is missing from upload.');

+		proc_error=true;

+  }

+}

+

+function gotGeneral(err, jsonObj) {

+  if (err) {

+    puts("\nError!");

+    putd(err);

+		proc_error=true;

+    callback('General.csv file is missing from upload.');

+    return;

+  }

+  csvGeneral = jsonObj;

+  puts("\nRead this: ");

+  putd(csvGeneral);

+  puts("\n");

+  doAvailZones();

+}

+

+// READ WORKSHEET: AVAILABILITY ZONES

+

+function doAvailZones() {

+  puts("Reading Availability-zones worksheet");

+  var csvFilename="Availability-zones.csv";

+  var newFileName = helpers.getFileName(req, csvFilename);

+  if ( newFileName != null ) {

+    helpers.readCsv(indir, newFileName, gotAvailZones);

+  }

+  else {

+		proc_error=true;

+    callback(csvFilename + ' file is missing from upload.');

+  }

+	return;

+}

+

+function gotAvailZones(err, jsonObj) {

+  if (err) {

+    puts("\nError!");

+    putd(err);

+		proc_error=true;

+    callback('Availability-zones.csv file is missing from upload.');

+    return;

+  }

+  csvZones = jsonObj;

+  csvZones = _.reject(csvZones, 'field2', 'Availability Zones');

+  csvZones = _.reject(csvZones, 'field2', 'List the availability zones for this VNF');

+  csvZones = _.reject(csvZones, 'field2', '');

+  puts("\nRead this: ");

+  putd(csvZones);

+  puts("\n");

+  doNetworks();

+}

+

+// READ WORKSHEET: NETWORKS

+

+function doNetworks() {

+  puts("Reading Networks worksheet");

+  var csvFilename="Networks.csv";

+  var newFileName = helpers.getFileName(req, csvFilename);

+  if ( newFileName != null ) {

+    helpers.readCsv(indir, newFileName, gotNetworks);

+  }

+  else {

+		proc_error=true;

+    callback(csvFilename + ' file is missing from upload.');

+  }

+	return;

+}

+

+function gotNetworks(err, jsonObj) {

+  if (err) {

+    puts("\nError!");

+    putd(err);

+		proc_error=true;

+    callback('Networks.csv file is missing from upload.');

+    return;

+  }

+  csvNetworks = jsonObj;

+  csvNetworks = _.reject(csvNetworks, 'field2', 'Networks');

+  csvNetworks = _.reject(csvNetworks, 'field2', 'List the VNF networks. (VM-networks are on a different worksheet.)');

+  csvNetworks = _.reject(csvNetworks, 'field2', 'network-role');

+  csvNetworks = _.reject(csvNetworks, 'field2', '');

+  puts("\nRead this: ");

+  putd(csvNetworks);

+  puts("\n");

+  doVMs();

+}

+

+// READ WORKSHEET: VMs

+

+function doVMs() {

+  puts("Reading VMs worksheet");

+  var csvFilename="VMs.csv";

+  var newFileName = helpers.getFileName(req, csvFilename);

+  if ( newFileName != null ) {

+    helpers.readCsv(indir, newFileName, gotVMs);

+  }

+  else {

+		proc_error=true;

+    callback(csvFilename + ' file is missing from upload.');

+  }

+	return;

+}

+

+function gotVMs(err, jsonObj) {

+  if (err) {

+    puts("\nError!");

+    putd(err);

+		proc_error=true;

+    callback('VMs.csv file is missing from upload.');

+    return;

+  }

+  csvVMs = jsonObj;

+  csvVMs = _.reject(csvVMs, 'field2', 'VMs');

+  csvVMs = _.reject(csvVMs, 'field2', 'List the VM types for this VNF');

+  csvVMs = _.reject(csvVMs, 'field2', 'vm-type');

+  csvVMs = _.reject(csvVMs, 'field2', '');

+  puts("\nRead this: ");

+  putd(csvVMs);

+  puts("\n");

+  doVMnetworks();

+}

+

+// READ WORKSHEET: VM-NETWORKS

+

+function doVMnetworks() {

+  puts("Reading VM-networks worksheet");

+  var csvFilename="VM-networks.csv";

+  var newFileName = helpers.getFileName(req, csvFilename);

+  if ( newFileName != null ) {

+    helpers.readCsv(indir, newFileName, gotVMnetworks);

+  }

+  else {

+		proc_error=true;

+    callback(csvFilename + ' file is missing from upload.');

+  }

+	return;

+}

+

+function gotVMnetworks(err, jsonObj) {

+  if (err) {

+    puts("\nError!");

+    putd(err);

+		proc_error=true;

+    callback('VM-networks.csv file is missing from upload.');

+    return;

+  }

+  csvVMnetworks = jsonObj;

+  csvVMnetworks = _.reject(csvVMnetworks, 'field2', 'VM-networks');

+  csvVMnetworks = _.reject(csvVMnetworks, 'field2', 'List the VM-networks for each VM type');

+  csvVMnetworks = _.reject(csvVMnetworks, 'field2', 'vm-type');

+  csvVMnetworks = _.reject(csvVMnetworks, 'field2', '');

+  puts("\nRead this: ");

+  putd(csvVMnetworks);

+  puts("\n");

+  doVMnetworkIPs();

+}

+

+// READ WORKSHEET: VM-NETWORK-IPS

+

+function doVMnetworkIPs() {

+  puts("Reading VM-network-IPs worksheet");

+  var csvFilename="VM-network-IPs.csv";

+  var newFileName = helpers.getFileName(req, csvFilename);

+  if ( newFileName != null ) {

+    helpers.readCsv(indir, newFileName, gotVMnetworkIPs);

+  }

+  else {

+		proc_error=true;

+    callback(csvFilename + ' file is missing from upload.');

+  }

+	return;

+}

+

+function gotVMnetworkIPs(err, jsonObj) {

+  if (err) {

+    puts("\nError!");

+    putd(err);

+		proc_error=true;

+    callback('VM-network-IPs.csv file is missing from upload.');

+    return;

+  }

+  csvVMnetworkIPs = jsonObj;

+  csvVMnetworkIPs = _.reject(csvVMnetworkIPs, 'field2', 'VM-network-IPs');

+  csvVMnetworkIPs = _.reject(csvVMnetworkIPs, 'field2', 'List the IPs assigned to each VM-network');

+  csvVMnetworkIPs = _.reject(csvVMnetworkIPs, 'field2', 'vm-type');

+  csvVMnetworkIPs = _.reject(csvVMnetworkIPs, 'field2', '');

+  puts("\nRead this: ");

+  putd(csvVMnetworkIPs);

+  puts("\n");

+  doVMnetworkMACs();

+}

+

+// READ WORKSHEET: VM-NETWORK-MACS

+

+function doVMnetworkMACs() {

+  puts("Reading VM-network-MACs worksheet");

+  var csvFilename="VM-network-MACs.csv";

+  var newFileName = helpers.getFileName(req, csvFilename);

+  if ( newFileName != null ) {

+    helpers.readCsv(indir, newFileName, gotVMnetworkMACs);

+  }

+  else {

+		proc_error=true;

+    callback(csvFilename + ' file is missing from upload.');

+  }

+	return;

+}

+

+function gotVMnetworkMACs(err, jsonObj) {

+  if (err) {

+    puts("\nError!");

+    putd(err);

+		proc_error=true;

+    callback('VM-network-MACs.csv file is missing from upload.');

+    return;

+  }

+  csvVMnetworkMACs = jsonObj;

+  csvVMnetworkMACs = _.reject(csvVMnetworkMACs, 'field2', 'VM-network-MACs');

+  csvVMnetworkMACs = _.reject(csvVMnetworkMACs, 'field2', 'List the MACs assigned to each VM-network');

+  csvVMnetworkMACs = _.reject(csvVMnetworkMACs, 'field2', 'vm-type');

+  csvVMnetworkMACs = _.reject(csvVMnetworkMACs, 'field2', '');

+  puts("\nRead this: ");

+  putd(csvVMnetworkMACs);

+  puts("\n");

+  doTagValues();

+}

+

+// READ WORKSHEET: TAG-VALUES

+

+function doTagValues() {

+  puts("Reading Tag-values worksheet");

+  var csvFilename="Tag-values.csv";

+  var newFileName = helpers.getFileName(req, csvFilename);

+  if ( newFileName != null ) {

+    helpers.readCsv(indir, newFileName, gotTagValues);

+  }

+  else {

+		proc_error=true;

+    callback(csvFilename + ' file is missing from upload.');

+  }

+	return;

+}

+

+function gotTagValues(err, jsonObj) {

+  if (err) {

+    puts("\nError!");

+    putd(err);

+		proc_error=true;

+    callback('Tag-values.csv file is missing from upload.');

+    return;

+  }

+  csvTagValues = jsonObj;

+  csvTagValues = _.reject(csvTagValues, 'field2', 'Tag-values');

+  csvTagValues = _.reject(csvTagValues, 'field2', 'Extra data to be passed into the HEAT template for this VNF');

+  csvTagValues = _.reject(csvTagValues, 'field2', 'vnf-parameter-name');

+  csvTagValues = _.reject(csvTagValues, 'field2', 'vnf-parameter-value');

+  csvTagValues = _.reject(csvTagValues, 'field2', '');

+  puts("\nRead this: ");

+  putd(csvTagValues);

+  puts("\n");

+  doneReadingFiles();

+}

+

+

+

+

+function doneReadingFiles() {

+  puts("\n");

+  puts("DONE READING FILES!");

+  puts("\n");

+  processJson();

+}

+

+

+// PROCESS THE CSV FILES INTO OBJECTS TO BE ASSEMBLED INTO FINAL OUTPUT

+function processJson() {

+  processGeneral();

+  processAvailZones();

+  processNetworks();

+  processVMnetworks();

+  processVMnetips();

+  processVMnetmacs();

+  processVMs();

+  processTagValues();

+  assembleJson();

+  outputJson();

+

+	puts('proc_error=');

+  putd(proc_error);

+  if ( proc_error ){

+    puts('callback with failure');

+    callback('Error was encountered processing upload.');

+    return;

+  }

+  else

+  {

+    puts('callback with success');

+    callback(null,  finalJson, filename);

+    return;

+  }

+}

+

+// ASSEMBLE AND OUTPUT RESULTS

+

+function assembleJson() {

+  puts("\n");

+  puts("Using raw JSON and assembling final ouptut JSON.");

+  puts("\n");

+

+  vnfTopoID = { "service-type": "SDN-MOBILITY",

+	        "vnf-name": rawJson['vf-module-name'],

+		"vnf-type": rawJson['vf-module-model-name'], 

+		"generic-vnf-name": rawJson['generic-vnf-name'], 

+		"generic-vnf-type": rawJson['generic-vnf-type'] };

+

+  vnfZones = rawJson['availability-zones'];

+

+  vnfNetworks = rawJson['networks'];

+

+  vnfVMs = rawJson['vms'];

+

+  vnfParams = rawJson['tag-values'];

+

+  vnfAssignments = { "availability-zones": vnfZones,

+	             "vnf-networks": vnfNetworks,

+		     "vnf-vms": vnfVMs};

+

+  vnfTopo = { "vnf-topology-identifier": vnfTopoID,

+              "vnf-assignments": vnfAssignments,

+              "vnf-parameters": vnfParams };

+

+  vnfInput = {'vnf-topology-information': vnfTopo}; 

+

+  finalJson = {"input": vnfInput};

+

+  //outputJson();

+}

+

+function outputJson() {

+  puts("\n");

+  puts("\n");

+  puts(JSON.stringify(finalJson,null,2));

+  puts("\n");

+  puts("\n");

+  var unixTime, fullpath_filename;

+  unixTime = moment().unix();

+  if (platform=='portal') {

+    fullpath_filename = process.cwd() + "/uploads/" + unixTime + ".vnf_worksheet.json";

+    filename = unixTime + ".vnf_worksheet.json.";

+  } else {

+    fullpath_filename = "./output.json."+unixTime;

+    filename = "output.json." + unixTime;

+  }

+  //helpers.writeOutput(req, fullpath_filename, JSON.stringify(finalJson,null,2), callback);

+  //callback(null,  finalJson, filename);

+}

+

+

+// Gather functions that actually process data after it is all read

+

+function processGeneral() {

+

+  preloadVersion = getParam(csvGeneral, 'field2', 'preload-version', 'field3');

+  rawJson['preload-version'] = preloadVersion;

+  puts("Preload version: " + preloadVersion);

+

+  if ( (preloadVersion!='1607') && (preloadVersion!='1610') ) {

+    puts("\nError - incorrect version of preload worksheet.");

+    callback('Error - incorrect version of preload worksheet.');

+  }

+

+  rawJson['vf-module-name'] = getParam(csvGeneral, 'field2', 'vf-module-name', 'field3');

+  // rawJson['vf-module-type'] = getParam(csvGeneral, 'field2', 'vf-module-type', 'field3');

+  try {

+    rawJson['vf-module-model-name'] = getParam(csvGeneral, 'field2', 'vf-module-model-name', 'field3');

+  } catch (e) {

+    puts("\n\n");

+    puts("ERROR ERROR ERROR ERROR ERROR\n");

+    puts("Failed to find data field 'vf-module-model-name'. Maybe this preload worksheet is older?")

+    puts("If on the 'general' tab there is a field called 'vf-module-type' please rename it to 'vf-module-model-name'");

+    puts("\n\n");

+    process.exit();

+  }

+  rawJson['generic-vnf-name'] = getParam(csvGeneral, 'field2', 'vnf-name', 'field3');

+  rawJson['generic-vnf-type'] = getParam(csvGeneral, 'field2', 'vnf-type', 'field3');

+  rawJson['request-id'] = uuid.v1();

+  rawJson['source'] = "ADMINPORTAL";

+  rawJson['request-action'] = "PreloadVNFRequest";

+  rawJson['svc-request-id'] = uuid.v1();

+  rawJson['svc-action'] = "reserve";

+  puts('rawJson:');

+  putd(rawJson);

+  puts("\n");

+}

+

+function processAvailZones() {

+  var newZones = _.map(csvZones, function(x) { return {'availability-zone': x['field2']}; } );

+  rawJson['availability-zones'] = newZones;

+  puts("Availability zones read:");

+  putd(rawJson['availability-zones']);

+  puts("\n");

+}

+

+function processNetworks() {

+  var newNetworks = [];

+  csvNetworks.forEach( function(network) {

+    var netJson = {};

+    netJson["network-role"] = network.field2;

+    netJson["network-name"] = network.field3;

+    netJson["network-id"] = network.field4;

+    netJson["contrail-network-fqdn"] = network.field5;

+    netJson["subnet-name"] = network.field6;

+    netJson["subnet-id"] = network.field7;

+    netJson["ipv6-subnet-name"] = network.field8;

+    netJson["ipv6-subnet-id"] = network.field9;

+    newNetworks.push(netJson);

+    }

+  );

+  puts("networks:");

+  putd(newNetworks);

+  rawJson["networks"] = newNetworks;

+}

+

+function processVMs() {

+  var newVMs = [];

+  csvVMs.forEach( function(vm) {

+    var vmJson = {};

+    vmJson["vm-type"] = vm.field2;

+    vmJson["vm-name"] = vm.field3;

+    newVMs.push(vmJson);

+    }

+  );

+

+  puts("VMs:");

+  putd(newVMs);

+

+  // OK, now for each type, get count and then build vm-names array of the names

+  var vnfvms=[]

+  vmTypes = _.uniq(_.pluck(newVMs,'vm-type'));

+  vmTypes.forEach( function(vmType) {

+    puts(vmType);

+    var vmJson={};

+    var vmThisType;

+    var vmCount;

+    var vmNames=[];

+    var tmpNames;

+    vmThisType=_.select(newVMs, 'vm-type', vmType);

+    vmCount=vmThisType.length;

+    vmJson["vm-type"] = vmType;

+    vmJson["vm-count"] = vmCount;

+    tmpNames = _.pluck(vmThisType,'vm-name');

+    vmJson["vm-names"] = _.map(tmpNames, function(nam) { return {"vm-name": nam}; } );

+    netroles = _.select( rawJson["vm-networks"], "vm-type", vmType );

+    newnetroles=[]

+    netroles.forEach( function(netrole) {

+      tmpNetDetails = {};

+      tmpNetDetails["network-role"] = netrole["network-role"];

+      tmpNetDetails["use-dhcp"] = netrole["use-dhcp"];

+

+      var tmpipsThisVmType=[];

+      tmpipsThisVmType = _.select( rawJson["vm-net-ips"], "vm-type", vmType);

+      var tmpips=[];

+      tmpips = _.select( tmpipsThisVmType, "network-role", netrole["network-role"]);

+      tmpipsJson = _.map(tmpips, function(ip) { return {"ip-address": ip["ip-address"]} } );

+      tmpipsJson = _.reject(tmpipsJson, function(o) { return (o["ip-address"]==undefined); } );

+      tmpNetDetails["network-ips"] = tmpipsJson;

+

+      var tmpipsv6ThisVmType=[];

+      tmpipsv6ThisVmType = _.select( rawJson["vm-net-ips"], "vm-type", vmType);

+      var tmpipsv6=[];

+      tmpipsv6 = _.select( tmpipsv6ThisVmType, "network-role", netrole["network-role"]);

+      tmpipsv6Json = _.map(tmpipsv6, function(ip) { return {"ip-address-ipv6": ip["ipv6-address"]} } );

+      tmpipsv6Json = _.reject(tmpipsv6Json, function(o) { return (o["ip-address-ipv6"]==undefined); } );

+      tmpNetDetails["network-ips-v6"] = tmpipsv6Json;

+

+      var tmpirpThisVmType=[];

+      tmpirpThisVmType = _.select( rawJson["vm-net-ips"], "vm-type", vmType);

+      var tmpirp=[];

+      tmpirp = _.select( tmpirpThisVmType, "network-role", netrole["network-role"]);

+      tmpirpJson = _.map(tmpirp, function(irp) { return {"interface-route-prefix-cidr": irp["interface-route-prefix"]} } );

+      tmpirpJson = _.reject(tmpirpJson, function(o) { return (o["interface-route-prefix-cidr"]==undefined); } );

+      tmpNetDetails["interface-route-prefixes"] = tmpirpJson;

+

+      var tmpmacsThisVmType=[];

+      tmpmacsThisVmType = _.select( rawJson["vm-net-macs"], "vm-type", vmType);

+      var tmpmacs=[];

+      tmpmacs = _.select( tmpmacsThisVmType, "network-role", netrole["network-role"]);

+      tmpmacsJson = _.map(tmpmacs, function(mac) { return {"mac-address": mac["mac-address"]} } );

+      tmpNetDetails["network-macs"] = tmpmacsJson;

+

+      var fip='';

+      fip = netrole["floating-ip"];

+      fip = _.trim(fip);

+      if (fip != '') {

+        tmpNetDetails["floating-ip"] = netrole["floating-ip"];

+      }

+

+      var fipv6='';

+      fipv6 = netrole["floating-ip-v6"];

+      fipv6 = _.trim(fipv6);

+      if (fipv6 != '') {

+        tmpNetDetails["floating-ip-v6"] = netrole["floating-ip-v6"];

+      }

+

+      newnetroles.push(tmpNetDetails);

+      }

+    );

+    vmJson["vm-networks"] = newnetroles;

+    putd(vmJson);

+    vnfvms.push(vmJson);

+    }

+  );

+  rawJson["vms"] = vnfvms;

+}

+

+function processVMnetworks() {

+  // For each VM type, for each Network role, get details like use-dhcp

+  var newVMnetworks = [];

+  csvVMnetworks.forEach( function(vm) {

+    var newvmJson = {};

+    newvmJson["vm-type"] = vm.field2;

+    newvmJson["network-role"] = vm.field3;

+    newvmJson["use-dhcp"] = vm.field4;

+    newvmJson["floating-ip"] = vm.field5;

+    newvmJson["floating-ip-v6"] = vm.field6;

+    newVMnetworks.push(newvmJson);

+    }

+  );

+  rawJson["vm-networks"] = newVMnetworks;

+  puts("rawJson for vm-networks...");

+  putd( rawJson["vm-networks"] );

+}

+

+

+function processVMnetips() {

+  // For each VM type, for each network role, get the set of network IPs

+  puts("Processing VM-net-ips");

+  var newVMnetips = [];

+  csvVMnetworkIPs.forEach( function(vm) {

+    var newvmnetipsJson = {};

+    newvmnetipsJson["vm-type"] = vm.field2;

+    newvmnetipsJson["network-role"] = vm.field3;

+    if (_.trim(vm.field4)!="") { 

+      newvmnetipsJson["ip-address"] = vm.field4;

+    }

+    if (_.trim(vm.field5)!="") { 

+    newvmnetipsJson["ipv6-address"] = vm.field5;

+    }

+    if (_.trim(vm.field6)!="") { 

+    newvmnetipsJson["interface-route-prefix"] = vm.field6;

+    }

+    newVMnetips.push(newvmnetipsJson);

+    }

+  );

+  rawJson["vm-net-ips"] = newVMnetips;

+  puts("rawJson for vm-net-ips");

+  putd(rawJson["vm-net-ips"]);

+}

+

+function processVMnetmacs() {

+  // For each VM type, for each network role, get the set of MACs 

+  puts("Processing VM-net-macs");

+  var newVMnetmacs = [];

+  csvVMnetworkMACs.forEach( function(vm) {

+    var newvmnetmacsJson = {};

+    newvmnetmacsJson["vm-type"] = vm.field2;

+    newvmnetmacsJson["network-role"] = vm.field3;

+    newvmnetmacsJson["mac-address"] = vm.field4;

+    newVMnetmacs.push(newvmnetmacsJson);

+    }

+  );

+  rawJson["vm-net-macs"] = newVMnetmacs;

+  puts("rawJson for vm-net-macs");

+  putd(rawJson["vm-net-macs"]);

+}

+

+function processTagValues() {

+  var newTagValues = _.map(csvTagValues, function(x) { return {'vnf-parameter-name': x['field2'], 

+	  'vnf-parameter-value': x['field3']}; } );

+  rawJson['tag-values'] = newTagValues;

+  puts("Tag-values read:");

+  putd(rawJson['tag-values']);

+  puts("\n");

+}

+

+

diff --git a/sdnc-a1-controller/oam/admportal/shell/getAdmPortalProp.py b/sdnc-a1-controller/oam/admportal/shell/getAdmPortalProp.py
new file mode 100755
index 0000000..2e0ea79
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/shell/getAdmPortalProp.py
@@ -0,0 +1,13 @@
+#!/usr/bin/python
+
+import json
+import sys
+import os
+
+propfile = os.getenv('SDNC_CONFIG_DIR') + '/admportal.json'
+
+from pprint import pprint
+
+with open(propfile) as data_file:    
+    data = json.load(data_file)
+pprint( str(data[sys.argv[1]]))
diff --git a/sdnc-a1-controller/oam/admportal/shell/start.sh b/sdnc-a1-controller/oam/admportal/shell/start.sh
new file mode 100755
index 0000000..d8cb0fc
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/shell/start.sh
@@ -0,0 +1,11 @@
+#. ./set-http-env.sh
+#cd ../bin
+#cp ../config/config.json.http ../config/config.json
+. /etc/attappl.env
+. ${PROJECT_HOME}/etc/default.env
+
+MAIN_MENU=`python printMainMenu.py | sed -e 's|['\'']||g'`
+export MAIN_MENU
+
+cd ..
+pm2 startOrRestart process.http.json 
diff --git a/sdnc-a1-controller/oam/admportal/shell/start_netdb.sh b/sdnc-a1-controller/oam/admportal/shell/start_netdb.sh
new file mode 100755
index 0000000..4a3d75a
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/shell/start_netdb.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+. /etc/attappl.env
+. ${PROJECT_HOME}/etc/default.env
+. ${PROJECT_HOME}/siteconfig/siteconf.info
+
+# only run on primary adm vm
+# ${Rank} comes from siteconf.info
+if [ ${Rank} == '1' ]; then
+        cd /opt/admportal/server
+        node ./netdb_updater.js -t ${1} -d ${2} >/dev/null 2>&1
+fi
diff --git a/sdnc-a1-controller/oam/admportal/shell/start_portal.sh b/sdnc-a1-controller/oam/admportal/shell/start_portal.sh
new file mode 100755
index 0000000..36716f4
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/shell/start_portal.sh
@@ -0,0 +1,33 @@
+#. ./set-https-env.sh
+#cd ../bin
+#cp ../config/config.json.https ../config/config.json
+export PROJECT_HOME=/opt/onap/sdnc
+export PROJECT_RUNTIME_BASE=/opt/onap/sdnc
+#export JAVA_HOME=/usr/lib/jvm/java-7-oracle
+export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
+export SSL_ENABLED=false
+export SDNC_CONFIG_DIR=${PROJECT_HOME}/data/properties
+export NODE_ENV=production
+export CLASSPATH=$PROJECT_HOME/admportal/lib:$CLASSPATH
+
+PATH=${PATH}:${JAVA_HOME}/bin
+
+#. ${PROJECT_HOME}/etc/default.env
+
+MAIN_MENU=`python $PROJECT_HOME/admportal/shell/getAdmPortalProp.py MainMenu | sed -e 's|['\'']||g'` 
+export MAIN_MENU
+SSL_ENABLED=`python $PROJECT_HOME/admportal/shell/getAdmPortalProp.py sslEnabled | sed -e 's|['\'']||g'` 
+export SSL_ENABLED
+
+if [ ! -d /opt/onap/sdnc/admportal/node_modules ]; then
+    echo "ERROR: missing node modules: /opt/onap/sdnc/admportal/node_modules"
+    exit 1
+fi
+
+cd /opt/onap/sdnc/admportal
+exec node shell/www
+#if [ "true" == "${SSL_ENABLED}" ]; then
+	#pm2 startOrRestart process.https.json
+#else
+	#pm2 startOrRestart process.http.json
+#fi
diff --git a/sdnc-a1-controller/oam/admportal/shell/startssl.sh b/sdnc-a1-controller/oam/admportal/shell/startssl.sh
new file mode 100755
index 0000000..a56570e
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/shell/startssl.sh
@@ -0,0 +1,28 @@
+#. ./set-https-env.sh
+#cd ../bin
+#cp ../config/config.json.https ../config/config.json
+export PROJECT_HOME=/opt/openecomp/sdnc
+export PROJECT_RUNTIME_BASE=/opt/openecomp/sdnc
+#export JAVA_HOME=/usr/lib/jvm/java-7-oracle
+export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
+export SSL_ENABLED=false
+export SDNC_CONFIG_DIR=${PROJECT_HOME}/data/properties
+export NODE_ENV=production
+export CLASSPATH=$PROJECT_HOME/admportal/lib:$CLASSPATH
+
+PATH=${PATH}:${JAVA_HOME}/bin
+
+#. ${PROJECT_HOME}/etc/default.env
+
+MAIN_MENU=`python $PROJECT_HOME/admportal/shell/getAdmPortalProp.py MainMenu | sed -e 's|['\'']||g'` 
+export MAIN_MENU
+SSL_ENABLED=`python $PROJECT_HOME/admportal/shell/getAdmPortalProp.py sslEnabled | sed -e 's|['\'']||g'` 
+export SSL_ENABLED
+
+cd ..
+node bin/www
+#if [ "true" == "${SSL_ENABLED}" ]; then
+	#pm2 startOrRestart process.https.json
+#else
+	#pm2 startOrRestart process.http.json
+#fi
diff --git a/sdnc-a1-controller/oam/admportal/shell/stop.sh b/sdnc-a1-controller/oam/admportal/shell/stop.sh
new file mode 100644
index 0000000..404c2fb
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/shell/stop.sh
@@ -0,0 +1,2 @@
+pm2 stop http_admportal
+pm2 kill
diff --git a/sdnc-a1-controller/oam/admportal/shell/stopssl.sh b/sdnc-a1-controller/oam/admportal/shell/stopssl.sh
new file mode 100755
index 0000000..a71de61
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/shell/stopssl.sh
@@ -0,0 +1,13 @@
+. /etc/attappl.env
+. ${PROJECT_HOME}/etc/default.env
+
+SSL_ENABLED=`python /opt/admportal/shell/getAdmPortalProp.py sslEnabled | sed -e 's|['\'']||g'` 
+export SSL_ENABLED
+
+cd ..
+if [ "true" == "${SSL_ENABLED}" ]; then
+    pm2 stop admportal8443
+else
+    pm2 stop http_admportal
+fi
+pm2 kill
diff --git a/sdnc-a1-controller/oam/admportal/shell/svclogic.sh b/sdnc-a1-controller/oam/admportal/shell/svclogic.sh
new file mode 100644
index 0000000..67ada89
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/shell/svclogic.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+#             reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )"
+JARDIR=${BASEDIR}/lib
+
+for jar in $JARDIR/*.jar
+do
+    CLASSPATH=$CLASSPATH:${jar}
+done
+
+java -cp ${CLASSPATH}:${MYSQL_JDBC_DRIVER} org.onap.ccsdk.sli.core.sli.SvcLogicParser $*
diff --git a/sdnc-a1-controller/oam/admportal/shell/www b/sdnc-a1-controller/oam/admportal/shell/www
new file mode 100755
index 0000000..ef5dcae
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/shell/www
@@ -0,0 +1,43 @@
+#!/usr/bin/env node
+var debug = require('debug')('admportal');
+var app = require('../server/app');
+var constants = require('constants');
+var properties = require(process.env.SDNC_CONFIG_DIR + '/admportal.json');
+var out_file = "/opt/onap/sdnc/admportal/logs/http_admportal.log";
+var error_file = "/opt/onap/sdnc/admportal/logs/error_http_admportal.log";
+var cwd = "/opt/onap/sdnc/admportal";
+
+var fs = require('fs.extra');
+var https = require('https');
+var http_port = properties.nonSslPort;
+var https_port = properties.ConexusNetworkPort;
+var cert_pswd = process.env.CERT_PSWD;
+var sslCert = properties.ConexusNetwork_sslCert;
+
+if (typeof http_port != 'undefined' && http_port.length > 0)
+{
+	app.set('port', http_port );
+	var server = app.listen(app.get('port'), function() 
+	{
+		console.log('Express server listening on port ' + server.address().port);
+		debug('Express server listening on port ' + server.address().port);
+	});
+}
+
+if (typeof https_port != 'undefined' && https_port.length > 0 && sslCert.length > 0)
+{
+	var sslOptions = {
+		pfx: fs.readFileSync(sslCert),
+		passphrase: properties.ConexusNetwork_sslKey,
+		secureOptions: constants.SSL_OP_NO_TLSv1|constants.SSL_OP_NO_SSLv2|constants.SSL_OP_NO_SSLv3,
+		ciphers: [ "AES128-GCM-SHA256","!RC4","HIGH","!MD5","!aNULL","!EDH","!3DES" ].join(':'),
+		honorCipherOrder: true,
+		requestCert: true,
+		rejectUnauthorized: false
+  };
+  app.set('port', https_port);
+  var secureServer = https.createServer(sslOptions,app).listen(app.get('port'), function(){
+    console.log('Express server (https) listening on port ' + secureServer.address().port);
+    debug('Express server (https) listening on port ' + secureServer.address().port);
+  });
+}
diff --git a/sdnc-a1-controller/oam/admportal/src/assembly/assemble_zip.xml b/sdnc-a1-controller/oam/admportal/src/assembly/assemble_zip.xml
new file mode 100644
index 0000000..6e06a76
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/src/assembly/assemble_zip.xml
@@ -0,0 +1,102 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  							reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<!-- Defines how we build the .zip file which is our distribution. -->
+
+<assembly
+	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+	<id>bin</id>
+	<formats>
+		<format>zip</format>
+	</formats>
+
+	 <includeBaseDirectory>false</includeBaseDirectory>
+
+	 <fileSets>
+        <fileSet>
+            <directory>bin</directory>
+            <outputDirectory>admportal/bin</outputDirectory>
+        </fileSet>
+        <fileSet>
+            <directory>certs</directory>
+            <outputDirectory>admportal/certs</outputDirectory>
+        </fileSet>
+        <fileSet>
+            <directory>config</directory>
+            <outputDirectory>admportal/config</outputDirectory>
+        </fileSet>
+        <fileSet>
+            <directory>lib</directory>
+            <outputDirectory>admportal/lib</outputDirectory>
+        </fileSet>
+        <fileSet>
+            <directory>node_modules</directory>
+            <outputDirectory>admportal/node_modules</outputDirectory>
+        </fileSet>
+        <fileSet>
+            <directory>public</directory>
+            <outputDirectory>admportal/public</outputDirectory>
+        </fileSet>
+        <fileSet>
+            <directory>routes</directory>
+            <outputDirectory>admportal/routes</outputDirectory>
+        </fileSet>
+        <fileSet>
+            <directory>server</directory>
+            <outputDirectory>admportal/server</outputDirectory>
+        </fileSet>
+        <fileSet>
+            <directory>shell</directory>
+            <outputDirectory>admportal/shell</outputDirectory>
+        </fileSet>
+        <fileSet>
+            <directory>uploads</directory>
+            <outputDirectory>admportal/uploads</outputDirectory>
+        </fileSet>
+        <fileSet>
+            <directory>test</directory>
+            <outputDirectory>admportal/test</outputDirectory>
+        </fileSet>
+        <fileSet>
+            <directory>views</directory>
+            <outputDirectory>admportal/views</outputDirectory>
+        </fileSet>
+		<fileSet>
+            <directory>.</directory>
+            <outputDirectory>admportal/</outputDirectory>
+                <includes>
+                	<include>*.json</include>
+                	<include>README</include>
+            	</includes>
+        </fileSet>
+		<fileSet>
+			<directory>target/lib</directory>
+			<outputDirectory>admportal/lib</outputDirectory>
+			<includes>
+				<include>*.jar</include>
+			</includes>
+		</fileSet>
+    </fileSets>
+
+
+</assembly>
diff --git a/sdnc-a1-controller/oam/admportal/src/main/swm/deinstall/postproc/post_proc b/sdnc-a1-controller/oam/admportal/src/main/swm/deinstall/postproc/post_proc
new file mode 100644
index 0000000..09e4ca8
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/src/main/swm/deinstall/postproc/post_proc
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+exit 0;
+
diff --git a/sdnc-a1-controller/oam/admportal/src/main/swm/deinstall/preproc/pre_proc b/sdnc-a1-controller/oam/admportal/src/main/swm/deinstall/preproc/pre_proc
new file mode 100644
index 0000000..09e4ca8
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/src/main/swm/deinstall/preproc/pre_proc
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+exit 0;
+
diff --git a/sdnc-a1-controller/oam/admportal/src/main/swm/fallback/postproc/post_proc b/sdnc-a1-controller/oam/admportal/src/main/swm/fallback/postproc/post_proc
new file mode 100644
index 0000000..09e4ca8
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/src/main/swm/fallback/postproc/post_proc
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+exit 0;
+
diff --git a/sdnc-a1-controller/oam/admportal/src/main/swm/fallback/preproc/pre_proc b/sdnc-a1-controller/oam/admportal/src/main/swm/fallback/preproc/pre_proc
new file mode 100644
index 0000000..09e4ca8
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/src/main/swm/fallback/preproc/pre_proc
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+exit 0;
+
diff --git a/sdnc-a1-controller/oam/admportal/src/main/swm/initinst/postproc/post_proc b/sdnc-a1-controller/oam/admportal/src/main/swm/initinst/postproc/post_proc
new file mode 100644
index 0000000..09e4ca8
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/src/main/swm/initinst/postproc/post_proc
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+exit 0;
+
diff --git a/sdnc-a1-controller/oam/admportal/src/main/swm/initinst/preproc/pre_proc b/sdnc-a1-controller/oam/admportal/src/main/swm/initinst/preproc/pre_proc
new file mode 100644
index 0000000..09e4ca8
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/src/main/swm/initinst/preproc/pre_proc
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+exit 0;
+
diff --git a/sdnc-a1-controller/oam/admportal/src/main/swm/install/postproc/post_proc b/sdnc-a1-controller/oam/admportal/src/main/swm/install/postproc/post_proc
new file mode 100644
index 0000000..09e4ca8
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/src/main/swm/install/postproc/post_proc
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+exit 0;
+
diff --git a/sdnc-a1-controller/oam/admportal/src/main/swm/install/preproc/pre_proc b/sdnc-a1-controller/oam/admportal/src/main/swm/install/preproc/pre_proc
new file mode 100644
index 0000000..a8f5979
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/src/main/swm/install/preproc/pre_proc
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exit 0;
diff --git a/sdnc-a1-controller/oam/admportal/src/main/swm/notes.txt b/sdnc-a1-controller/oam/admportal/src/main/swm/notes.txt
new file mode 100644
index 0000000..7fd88fb
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/src/main/swm/notes.txt
@@ -0,0 +1,3 @@
+${groupId} ${artifactId} ${project.version}-${build.number}
+${SWM_VERSION}
+
diff --git a/sdnc-a1-controller/oam/admportal/test/YYYYMMDDHH_ctag_pool.csv b/sdnc-a1-controller/oam/admportal/test/YYYYMMDDHH_ctag_pool.csv
new file mode 100644
index 0000000..80102f7
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/test/YYYYMMDDHH_ctag_pool.csv
@@ -0,0 +1,1501 @@
+#vlan_id,aic_site_id,azone,vplspe,purpose
+2001,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2002,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2003,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2004,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2005,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2006,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2007,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2008,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2009,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2010,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2011,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2012,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2013,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2014,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2015,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2016,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2017,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2018,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2019,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2020,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2021,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2022,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2023,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2024,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2025,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2026,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2027,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2028,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2029,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2030,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2031,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2032,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2033,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2034,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2035,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2036,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2037,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2038,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2039,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2040,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2041,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2042,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2043,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2044,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2045,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2046,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2047,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2048,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2049,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2050,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2051,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2052,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2053,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2054,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2055,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2056,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2057,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2058,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2059,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2060,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2061,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2062,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2063,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2064,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2065,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2066,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2067,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2068,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2069,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2070,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2071,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2072,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2073,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2074,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2075,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2076,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2077,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2078,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2079,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2080,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2081,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2082,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2083,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2084,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2085,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2086,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2087,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2088,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2089,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2090,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2091,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2092,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2093,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2094,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2095,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2096,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2097,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2098,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2099,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2100,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2101,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2102,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2103,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2104,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2105,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2106,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2107,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2108,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2109,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2110,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2111,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2112,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2113,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2114,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2115,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2116,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2117,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2118,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2119,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2120,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2121,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2122,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2123,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2124,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2125,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2126,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2127,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2128,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2129,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2130,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2131,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2132,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2133,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2134,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2135,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2136,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2137,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2138,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2139,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2140,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2141,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2142,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2143,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2144,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2145,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2146,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2147,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2148,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2149,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2150,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2151,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2152,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2153,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2154,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2155,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2156,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2157,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2158,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2159,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2160,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2161,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2162,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2163,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2164,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2165,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2166,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2167,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2168,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2169,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2170,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2171,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2172,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2173,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2174,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2175,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2176,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2177,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2178,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2179,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2180,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2181,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2182,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2183,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2184,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2185,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2186,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2187,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2188,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2189,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2190,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2191,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2192,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2193,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2194,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2195,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2196,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2197,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2198,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2199,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2200,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2201,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2202,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2203,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2204,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2205,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2206,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2207,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2208,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2209,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2210,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2211,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2212,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2213,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2214,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2215,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2216,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2217,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2218,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2219,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2220,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2221,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2222,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2223,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2224,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2225,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2226,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2227,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2228,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2229,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2230,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2231,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2232,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2233,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2234,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2235,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2236,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2237,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2238,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2239,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2240,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2241,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2242,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2243,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2244,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2245,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2246,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2247,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2248,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2249,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2250,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2251,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2252,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2253,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2254,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2255,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2256,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2257,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2258,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2259,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2260,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2261,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2262,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2263,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2264,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2265,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2266,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2267,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2268,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2269,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2270,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2271,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2272,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2273,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2274,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2275,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2276,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2277,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2278,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2279,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2280,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2281,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2282,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2283,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2284,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2285,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2286,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2287,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2288,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2289,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2290,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2291,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2292,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2293,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2294,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2295,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2296,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2297,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2298,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2299,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2300,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2301,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2302,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2303,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2304,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2305,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2306,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2307,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2308,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2309,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2310,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2311,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2312,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2313,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2314,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2315,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2316,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2317,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2318,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2319,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2320,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2321,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2322,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2323,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2324,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2325,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2326,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2327,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2328,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2329,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2330,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2331,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2332,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2333,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2334,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2335,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2336,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2337,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2338,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2339,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2340,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2341,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2342,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2343,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2344,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2345,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2346,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2347,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2348,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2349,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2350,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2351,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2352,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2353,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2354,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2355,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2356,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2357,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2358,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2359,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2360,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2361,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2362,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2363,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2364,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2365,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2366,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2367,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2368,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2369,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2370,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2371,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2372,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2373,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2374,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2375,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2376,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2377,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2378,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2379,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2380,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2381,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2382,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2383,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2384,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2385,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2386,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2387,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2388,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2389,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2390,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2391,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2392,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2393,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2394,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2395,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2396,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2397,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2398,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2399,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2400,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2401,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2402,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2403,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2404,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2405,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2406,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2407,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2408,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2409,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2410,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2411,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2412,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2413,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2414,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2415,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2416,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2417,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2418,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2419,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2420,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2421,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2422,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2423,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2424,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2425,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2426,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2427,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2428,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2429,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2430,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2431,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2432,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2433,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2434,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2435,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2436,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2437,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2438,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2439,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2440,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2441,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2442,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2443,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2444,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2445,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2446,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2447,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2448,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2449,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2450,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2451,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2452,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2453,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2454,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2455,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2456,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2457,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2458,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2459,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2460,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2461,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2462,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2463,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2464,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2465,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2466,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2467,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2468,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2469,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2470,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2471,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2472,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2473,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2474,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2475,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2476,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2477,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2478,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2479,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2480,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2481,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2482,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2483,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2484,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2485,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2486,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2487,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2488,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2489,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2490,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2491,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2492,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2493,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2494,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2495,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2496,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2497,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2498,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2499,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2500,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2501,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2502,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2503,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2504,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2505,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2506,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2507,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2508,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2509,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2510,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2511,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2512,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2513,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2514,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2515,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2516,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2517,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2518,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2519,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2520,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2521,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2522,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2523,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2524,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2525,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2526,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2527,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2528,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2529,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2530,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2531,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2532,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2533,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2534,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2535,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2536,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2537,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2538,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2539,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2540,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2541,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2542,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2543,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2544,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2545,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2546,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2547,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2548,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2549,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2550,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2551,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2552,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2553,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2554,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2555,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2556,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2557,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2558,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2559,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2560,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2561,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2562,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2563,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2564,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2565,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2566,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2567,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2568,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2569,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2570,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2571,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2572,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2573,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2574,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2575,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2576,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2577,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2578,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2579,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2580,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2581,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2582,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2583,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2584,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2585,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2586,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2587,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2588,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2589,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2590,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2591,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2592,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2593,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2594,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2595,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2596,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2597,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2598,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2599,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2600,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2601,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2602,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2603,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2604,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2605,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2606,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2607,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2608,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2609,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2610,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2611,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2612,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2613,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2614,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2615,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2616,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2617,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2618,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2619,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2620,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2621,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2622,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2623,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2624,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2625,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2626,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2627,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2628,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2629,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2630,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2631,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2632,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2633,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2634,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2635,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2636,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2637,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2638,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2639,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2640,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2641,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2642,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2643,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2644,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2645,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2646,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2647,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2648,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2649,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2650,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2651,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2652,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2653,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2654,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2655,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2656,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2657,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2658,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2659,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2660,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2661,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2662,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2663,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2664,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2665,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2666,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2667,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2668,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2669,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2670,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2671,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2672,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2673,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2674,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2675,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2676,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2677,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2678,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2679,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2680,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2681,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2682,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2683,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2684,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2685,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2686,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2687,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2688,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2689,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2690,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2691,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2692,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2693,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2694,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2695,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2696,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2697,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2698,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2699,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2700,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2701,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2702,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2703,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2704,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2705,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2706,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2707,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2708,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2709,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2710,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2711,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2712,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2713,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2714,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2715,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2716,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2717,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2718,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2719,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2720,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2721,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2722,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2723,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2724,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2725,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2726,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2727,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2728,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2729,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2730,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2731,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2732,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2733,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2734,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2735,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2736,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2737,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2738,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2739,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2740,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2741,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2742,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2743,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2744,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2745,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2746,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2747,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2748,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2749,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2750,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2751,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2752,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2753,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2754,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2755,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2756,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2757,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2758,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2759,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2760,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2761,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2762,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2763,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2764,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2765,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2766,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2767,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2768,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2769,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2770,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2771,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2772,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2773,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2774,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2775,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2776,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2777,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2778,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2779,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2780,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2781,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2782,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2783,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2784,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2785,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2786,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2787,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2788,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2789,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2790,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2791,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2792,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2793,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2794,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2795,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2796,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2797,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2798,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2799,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2800,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2801,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2802,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2803,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2804,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2805,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2806,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2807,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2808,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2809,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2810,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2811,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2812,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2813,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2814,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2815,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2816,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2817,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2818,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2819,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2820,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2821,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2822,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2823,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2824,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2825,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2826,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2827,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2828,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2829,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2830,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2831,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2832,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2833,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2834,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2835,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2836,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2837,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2838,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2839,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2840,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2841,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2842,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2843,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2844,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2845,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2846,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2847,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2848,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2849,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2850,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2851,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2852,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2853,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2854,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2855,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2856,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2857,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2858,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2859,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2860,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2861,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2862,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2863,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2864,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2865,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2866,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2867,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2868,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2869,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2870,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2871,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2872,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2873,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2874,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2875,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2876,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2877,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2878,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2879,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2880,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2881,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2882,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2883,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2884,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2885,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2886,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2887,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2888,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2889,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2890,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2891,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2892,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2893,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2894,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2895,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2896,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2897,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2898,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2899,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2900,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2901,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2902,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2903,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2904,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2905,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2906,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2907,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2908,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2909,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2910,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2911,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2912,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2913,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2914,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2915,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2916,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2917,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2918,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2919,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2920,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2921,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2922,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2923,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2924,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2925,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2926,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2927,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2928,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2929,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2930,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2931,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2932,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2933,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2934,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2935,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2936,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2937,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2938,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2939,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2940,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2941,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2942,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2943,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2944,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2945,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2946,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2947,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2948,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2949,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2950,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2951,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2952,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2953,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2954,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2955,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2956,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2957,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2958,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2959,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2960,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2961,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2962,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2963,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2964,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2965,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2966,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2967,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2968,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2969,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2970,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2971,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2972,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2973,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2974,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2975,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2976,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2977,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2978,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2979,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2980,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2981,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2982,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2983,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2984,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2985,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2986,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2987,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2988,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2989,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2990,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2991,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2992,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2993,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2994,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2995,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2996,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2997,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2998,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+2999,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3000,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3001,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3002,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3003,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3004,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3005,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3006,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3007,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3008,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3009,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3010,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3011,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3012,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3013,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3014,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3015,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3016,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3017,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3018,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3019,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3020,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3021,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3022,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3023,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3024,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3025,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3026,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3027,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3028,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3029,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3030,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3031,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3032,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3033,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3034,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3035,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3036,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3037,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3038,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3039,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3040,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3041,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3042,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3043,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3044,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3045,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3046,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3047,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3048,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3049,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3050,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3051,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3052,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3053,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3054,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3055,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3056,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3057,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3058,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3059,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3060,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3061,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3062,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3063,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3064,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3065,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3066,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3067,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3068,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3069,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3070,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3071,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3072,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3073,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3074,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3075,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3076,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3077,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3078,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3079,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3080,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3081,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3082,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3083,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3084,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3085,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3086,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3087,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3088,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3089,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3090,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3091,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3092,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3093,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3094,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3095,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3096,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3097,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3098,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3099,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3100,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3101,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3102,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3103,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3104,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3105,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3106,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3107,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3108,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3109,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3110,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3111,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3112,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3113,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3114,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3115,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3116,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3117,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3118,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3119,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3120,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3121,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3122,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3123,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3124,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3125,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3126,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3127,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3128,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3129,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3130,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3131,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3132,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3133,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3134,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3135,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3136,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3137,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3138,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3139,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3140,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3141,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3142,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3143,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3144,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3145,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3146,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3147,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3148,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3149,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3150,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3151,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3152,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3153,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3154,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3155,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3156,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3157,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3158,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3159,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3160,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3161,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3162,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3163,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3164,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3165,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3166,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3167,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3168,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3169,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3170,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3171,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3172,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3173,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3174,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3175,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3176,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3177,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3178,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3179,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3180,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3181,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3182,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3183,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3184,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3185,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3186,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3187,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3188,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3189,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3190,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3191,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3192,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3193,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3194,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3195,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3196,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3197,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3198,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3199,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3200,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3201,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3202,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3203,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3204,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3205,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3206,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3207,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3208,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3209,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3210,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3211,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3212,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3213,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3214,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3215,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3216,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3217,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3218,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3219,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3220,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3221,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3222,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3223,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3224,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3225,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3226,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3227,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3228,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3229,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3230,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3231,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3232,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3233,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3234,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3235,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3236,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3237,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3238,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3239,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3240,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3241,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3242,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3243,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3244,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3245,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3246,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3247,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3248,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3249,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3250,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3251,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3252,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3253,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3254,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3255,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3256,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3257,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3258,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3259,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3260,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3261,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3262,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3263,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3264,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3265,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3266,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3267,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3268,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3269,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3270,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3271,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3272,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3273,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3274,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3275,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3276,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3277,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3278,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3279,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3280,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3281,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3282,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3283,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3284,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3285,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3286,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3287,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3288,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3289,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3290,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3291,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3292,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3293,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3294,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3295,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3296,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3297,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3298,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3299,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3300,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3301,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3302,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3303,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3304,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3305,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3306,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3307,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3308,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3309,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3310,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3311,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3312,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3313,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3314,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3315,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3316,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3317,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3318,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3319,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3320,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3321,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3322,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3323,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3324,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3325,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3326,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3327,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3328,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3329,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3330,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3331,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3332,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3333,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3334,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3335,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3336,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3337,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3338,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3339,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3340,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3341,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3342,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3343,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3344,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3345,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3346,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3347,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3348,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3349,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3350,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3351,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3352,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3353,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3354,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3355,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3356,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3357,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3358,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3359,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3360,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3361,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3362,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3363,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3364,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3365,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3366,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3367,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3368,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3369,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3370,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3371,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3372,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3373,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3374,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3375,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3376,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3377,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3378,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3379,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3380,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3381,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3382,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3383,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3384,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3385,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3386,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3387,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3388,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3389,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3390,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3391,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3392,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3393,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3394,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3395,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3396,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3397,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3398,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3399,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3400,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3401,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3402,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3403,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3404,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3405,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3406,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3407,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3408,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3409,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3410,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3411,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3412,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3413,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3414,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3415,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3416,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3417,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3418,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3419,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3420,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3421,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3422,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3423,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3424,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3425,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3426,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3427,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3428,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3429,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3430,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3431,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3432,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3433,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3434,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3435,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3436,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3437,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3438,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3439,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3440,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3441,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3442,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3443,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3444,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3445,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3446,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3447,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3448,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3449,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3450,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3451,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3452,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3453,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3454,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3455,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3456,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3457,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3458,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3459,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3460,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3461,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3462,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3463,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3464,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3465,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3466,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3467,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3468,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3469,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3470,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3471,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3472,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3473,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3474,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3475,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3476,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3477,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3478,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3479,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3480,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3481,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3482,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3483,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3484,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3485,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3486,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3487,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3488,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3489,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3490,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3491,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3492,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3493,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3494,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3495,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3496,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3497,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3498,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3499,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+3500,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
diff --git a/sdnc-a1-controller/oam/admportal/test/eipam/sample.xml b/sdnc-a1-controller/oam/admportal/test/eipam/sample.xml
new file mode 100644
index 0000000..c058ecf
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/test/eipam/sample.xml
@@ -0,0 +1,36 @@
+<aw:PurchaseOrder
+    aw:PurchaseOrderNumber="99503"
+    aw:OrderDate="1999-10-20"
+    xmlns:aw="http://www.adventure-works.com">
+  <aw:Address aw:Type="Shipping">
+    <aw:Name>Ellen Adams</aw:Name>
+    <aw:Street>123 Maple Street</aw:Street>
+    <aw:City>Mill Valley</aw:City>
+    <aw:State>CA</aw:State>
+    <aw:Zip>10999</aw:Zip>
+    <aw:Country>USA</aw:Country>
+  </aw:Address>
+  <aw:Address aw:Type="Billing">
+    <aw:Name>Tai Yee</aw:Name>
+    <aw:Street>8 Oak Avenue</aw:Street>
+    <aw:City>Old Town</aw:City>
+    <aw:State>PA</aw:State>
+    <aw:Zip>95819</aw:Zip>
+    <aw:Country>USA</aw:Country>
+  </aw:Address>
+  <aw:DeliveryNotes>Please leave packages in shed by driveway.</aw:DeliveryNotes>
+  <aw:Items>
+    <aw:Item aw:PartNumber="872-AA">
+      <aw:ProductName>Lawnmower</aw:ProductName>
+      <aw:Quantity>1</aw:Quantity>
+      <aw:USPrice>148.95</aw:USPrice>
+      <aw:Comment>Confirm this is electric</aw:Comment>
+    </aw:Item>
+    <aw:Item aw:PartNumber="926-AA">
+      <aw:ProductName>Baby Monitor</aw:ProductName>
+      <aw:Quantity>2</aw:Quantity>
+      <aw:USPrice>39.98</aw:USPrice>
+      <aw:ShipDate>1999-05-21</aw:ShipDate>
+    </aw:Item>
+  </aw:Items>
+</aw:PurchaseOrder>
diff --git a/sdnc-a1-controller/oam/admportal/test/gen.sh b/sdnc-a1-controller/oam/admportal/test/gen.sh
new file mode 100755
index 0000000..8c7928d
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/test/gen.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+for i in `seq 2001 3500`;do
+	echo $i,MDTWNJ21A401,a2stx,auttx301vr1,IPAG-CTAG
+done
diff --git a/sdnc-a1-controller/oam/admportal/uploads/temp b/sdnc-a1-controller/oam/admportal/uploads/temp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/uploads/temp
diff --git a/sdnc-a1-controller/oam/admportal/views/admin/list_usertrace.ejs b/sdnc-a1-controller/oam/admportal/views/admin/list_usertrace.ejs
new file mode 100644
index 0000000..799288a
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/admin/list_usertrace.ejs
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <title>SDN-C AdminPortal</title>
+</head>
+
+<body>
+
+<div class="actions" style="padding:0px 25px;">
+<h2>User Trace</h2>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'><%=result.msg %></div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'><%=result.msg %></div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+    <div class="actions" style="padding:15px 0px;">
+
+    </div>
+    <div class="content">
+     <table class="table table-hover">
+      <thead>
+        <tr>
+		  <th>Date</th>
+          <th>ATTUID</th>
+		  <th>Action</th>
+          <th>Description</th>
+        </tr>
+      </thead>
+      <tbody>
+    <% if (rows)  {
+         rows.forEach(function(row) { %>
+			<tr>
+            	<td><%= row.date %></td> 
+            	<td><%= row.attuid %></td> 
+            	<td><%= row.action %></td> 
+            	<td><%= row.description %></td> 
+			</tr>
+    <% }); }; %>
+      </tbody>
+    </table>
+   </div>
+
+    <footer>
+        <% include ../partials/footer %>
+    </footer>
+    
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/admin/parameters.ejs b/sdnc-a1-controller/oam/admportal/views/admin/parameters.ejs
new file mode 100644
index 0000000..247abc5
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/admin/parameters.ejs
@@ -0,0 +1,181 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#params').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Parameters</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary btn-md" data-toggle="modal" data-target="#new_parameter">
+      Add Parameter
+    </button>
+</div>
+
+	<table id="params" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>*Name</th>
+          <th>*Value</th>
+          <th>Category</th>
+		  <th>Memo</th>
+		  <% if(priv == 'A'){ %>
+		  <th>Action</th>
+		  <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.name %></td>
+            <td><%= row.value %></td>
+            <td><%= row.category %></td>
+            <td><%= row.memo %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                    onclick="updateParameter('<%=row.name %>','<%= row.value %>','<%= row.category %>','<%= row.memo %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+                   onclick="deleteParameter('<%= row.name %>','<%=row.value %>','<%= row.category %>','<%= row.memo %>');">Delete</button>
+            </td>
+            <% } %>
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+</div>
+
+<% include ../partials/new_parameter %>
+<% include ../partials/update_parameter %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitParam(form)
+{
+    var errorMsg='';
+    var name = '';
+    var value = '';
+    var category = '';
+    var memo = '';
+
+    if ( form.name == 'addForm' )
+    {
+        name = form.nf_name;
+        value = form.nf_value;
+        category = form.nf_category;
+        memo = form.nf_memo;
+    }
+    else
+    {
+        name = form.uf_name;
+        value = form.uf_value;
+        category = form.uf_category;
+        memo = form.uf_memo;
+    }
+
+	if ( (name.value == null) || (name.value == "") || isblank(name.value) )
+    {
+        errorMsg += 'Name is required.<br>';
+    }
+	if ( (value.value == null) || (value.value == "") || isblank(value.value) )
+    {
+        errorMsg += 'Value is required.<br>';
+    }
+    if( errorMsg.length > 0 ) {
+        bootbox.alert(errorMsg);
+        return;
+    }
+	form.submit();
+}
+
+
+function updateParameter(name,value,category,memo) {
+
+    document.getElementById('uf_name').value=name;
+    document.getElementById('uf_value').value=value
+    document.getElementById('uf_category').value=category;
+    document.getElementById('uf_memo').value=memo;
+
+    document.getElementById('uf_key_name').value=name;
+
+    $('#update_parameter').modal('show');
+}
+
+function deleteParameter(name,value,category,memo) {
+
+	var url_string = encodeURI("/admin/deleteParameter?name=" + name
+            + "&value=" + value
+            + "&category=" + category
+			+ "&memo=" + memo);
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete PARAMETER [" + name + "][" + value + "] ?",
+        callback: function(result) {
+            if ( result )
+            {
+                location.assign(url_string);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/css_delete/bootstrap-theme.min.css b/sdnc-a1-controller/oam/admportal/views/css_delete/bootstrap-theme.min.css
new file mode 100644
index 0000000..4c3e7ba
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/css_delete/bootstrap-theme.min.css
@@ -0,0 +1,5 @@
+/*!
+ * Bootstrap v3.3.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:hover,.btn-primary:focus{background-color:#265a88;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#265a88;border-color:#245580}.btn-primary:disabled,.btn-primary[disabled]{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/admportal/views/css_delete/bootstrap.min.css b/sdnc-a1-controller/oam/admportal/views/css_delete/bootstrap.min.css
new file mode 100644
index 0000000..b6fe4e0
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/css_delete/bootstrap.min.css
@@ -0,0 +1,5 @@
+/*!
+ * Bootstrap v3.3.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:before,:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,select.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,textarea.form-group-sm .form-control,select[multiple].input-sm,select[multiple].form-group-sm .form-control{height:auto}.input-lg,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,select.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,textarea.form-group-lg .form-control,select[multiple].input-lg,select[multiple].form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important;visibility:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/admportal/views/error.ejs b/sdnc-a1-controller/oam/admportal/views/error.ejs
new file mode 100644
index 0000000..7cf94ed
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/error.ejs
@@ -0,0 +1,3 @@
+<h1><%= message %></h1>
+<h2><%= error.status %></h2>
+<pre><%= error.stack %></pre>
diff --git a/sdnc-a1-controller/oam/admportal/views/gamma/list.ejs b/sdnc-a1-controller/oam/admportal/views/gamma/list.ejs
new file mode 100644
index 0000000..cf89a09
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/gamma/list.ejs
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vlan_id_pool').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>NoD VLAN ID POOL</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){ 
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+<div class="container-fluid">
+	<table id="vlan_id_pool" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>AIC Site ID</th>
+          <th>Purpose</th>
+		  <th>VLAN ID</th>
+	      <th>VLPSPE Name</th>
+	  	  <th>Availability Zone</th>
+          <th>Status</th>
+          <th>Svc Instance ID</th>
+		  <% if(priv == 'A'){ %>
+		  <th>Action</th>
+		  <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.aic_site_id %></td>
+            <td><%= row.purpose %></td>
+            <td><%= row.vlan_id %></td>
+            <td><%= row.vplspe_name %></td>
+            <td><%= row.availability_zone %></td>
+            <td><%= row.status %></td>
+            <td><%= row.svc_instance_id %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				 <button type="button" class="btn btn-default btn-xs"
+                 	onclick="updateVlanPool('<%=row.aic_site_id %>','<%= row.availability_zone %>',
+						'<%= row.purpose %>','<%= row.vlan_id %>','<%= row.status %>',
+						'<%= row.svc_instance_id %>','<%= row.vplspe_name %>');">Update</button>
+				 <button type="button" class="btn btn-default btn-xs"
+                 	onclick="deleteVlanPool('<%=row.aic_site_id %>', '<%= row.purpose %>', 
+						'<%= row.vlan_id %>');">Delete</button>
+            </td>
+            <% } %>
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+<!--
+	<% if(priv == 'A'){ %>
+	<div class="actions" style="padding:0px 25px;">
+	<form method="POST" action="/gamma/uploadVLAN" enctype="multipart/form-data">
+		<div class="form-group">
+    		<label for="dest">File input</label>
+    		<input name="filename" type="file" id="dest">
+    		<p class="help-block">Choose a file to upload.</p>
+  		</div>
+		<% if(priv == 'A') { %>
+            <button type="button" class="btn btn-default"
+                onclick="uploadFile(this.form);">Upload File</button>
+        <% } else { %>
+            <button type="button" class="btn btn-default disabled"
+                onclick="uploadFile(this.form);">Upload File</button>
+        <% } %>
+	</form>
+	</div>
+	<% } %>
+-->
+</div>
+
+<% include ../partials/update_vlan_id_pool %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function updateVlanPool(aic_site_id,availability_zone,purpose,vlan_id,status,svc_instance_id,vplspe_name) {
+
+    document.getElementById('uf_aic_site_id').value=aic_site_id;
+    document.getElementById('uf_availability_zone').value=availability_zone
+    document.getElementById('uf_purpose').value=purpose;
+    document.getElementById('uf_vlan_id').value=vlan_id;
+    document.getElementById('uf_status').value=status;
+    document.getElementById('uf_svc_instance_id').value=svc_instance_id;
+    document.getElementById('uf_vplspe_name').value=vplspe_name;
+
+    document.getElementById('uf_key_aic_site_id').value=aic_site_id;
+    document.getElementById('uf_key_purpose').value=purpose;
+    document.getElementById('uf_key_vlan_id').value=vlan_id;
+    $('#update_vlan_id_pool_modal').modal('show');
+}
+
+function deleteVlanPool(aic_site_id,purpose,vlan_id) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete VLAN Id [" + aic_site_id + "][" + purpose + "][" + vlan_id + "] ?",
+        callback: function(result) {
+            if ( result )
+            {
+                location.assign("/gamma/deleteVlanPool?aic_site_id=" + aic_site_id + "&purpose=" + purpose + "&vlan_id=" + vlan_id);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/gamma/listAicAvailZone.ejs b/sdnc-a1-controller/oam/admportal/views/gamma/listAicAvailZone.ejs
new file mode 100644
index 0000000..7d0b7bd
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/gamma/listAicAvailZone.ejs
@@ -0,0 +1,166 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+
+<script class="init">
+    $(document).ready(function() {
+    $('#availability_zone').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>AIC Availabilty Zone Pool</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+	<table id="availability_zone" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>AIC Site ID</th>
+          <th>Availability Zone</th>
+          <th>Token</th>
+		  <th>Service Type</th>
+          <th>Status</th>
+          <th>VNF ID</th>
+          <th>VNF Type</th>
+          <th>Hypervisor</th>
+		  <% if(priv == 'A') { %>
+		  <th>Action</th>
+		  <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.aic_site_id %></td>
+            <td><%= row.availability_zone %></td>
+            <td><%= row.token %></td>
+            <td><%= row.service_type %></td>
+            <td><%= row.status %></td>
+            <td><%= row.vnf_id %></td>
+            <td><%= row.vnf_type %></td>
+            <td><%= row.hypervisor %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                    onclick="updateAicAvailZone('<%=row.aic_site_id %>','<%= row.availability_zone %>','<%= row.token %>','<%= row.service_type %>','<%= row.status %>','<%= row.vnf_id %>','<%= row.vnf_type %>','<%= row.hypervisor %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+                   onclick="deleteZone('<%=row.aic_site_id %>','<%= row.availability_zone %>', '<%= row.token %>');">Delete</button>
+            </td>
+            <% } %>
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+
+<!--
+	<% if(priv == 'A'){ %>
+	<div class="actions" style="padding:0px 25px;">
+	<form method="POST" action="/gamma/uploadAicAvailZone" enctype="multipart/form-data">
+		<div class="form-group">
+    		<label for="dest">File input</label>
+    		<input name="filename" type="file" id="dest">
+    		<p class="help-block">Choose a file to upload.</p>
+  		</div>
+		<% if(priv == 'A') { %>
+			<button type="button" class="btn btn-default"
+				onclick="uploadFile(this.form);">Upload File</button>
+		<% } else { %>
+			<button type="button" class="btn btn-default disabled"
+				onclick="uploadFile(this.form);">Upload File</button>
+		<% } %>
+	</form>
+	</div>
+	<% } %>
+-->
+</div>
+
+<% include ../partials/update_aic_avail_zone %>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function updateAicAvailZone(aic_site_id,availability_zone,token,service_type,status,vnf_id,vnf_type,hypervisor) {
+
+    document.getElementById('uf_aic_site_id').value=aic_site_id;
+    document.getElementById('uf_availability_zone').value=availability_zone
+    document.getElementById('uf_token').value=token;
+    document.getElementById('uf_service_type').value=service_type;
+    document.getElementById('uf_status').value=status;
+    document.getElementById('uf_vnf_id').value=vnf_id;
+    document.getElementById('uf_vnf_type').value=vnf_type;
+    document.getElementById('uf_hypervisor').value=hypervisor;
+    document.getElementById('uf_key_aic_site_id').value=aic_site_id;
+    document.getElementById('uf_key_availability_zone').value=availability_zone
+    document.getElementById('uf_key_token').value=token;
+    $('#update_aic_avail_zone_modal').modal('show');
+}
+
+function deleteZone(siteid,azone,token) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete zone [" + siteid + "][" + azone + "][" + token + "] ?",
+        callback: function(result) {
+            if ( result )
+            {
+                location.assign("/gamma/deleteZone?siteid=" + siteid + "&azone=" + azone + "&token=" + token);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+</script>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/gamma/listAicSwitch.ejs b/sdnc-a1-controller/oam/admportal/views/gamma/listAicSwitch.ejs
new file mode 100644
index 0000000..659652c
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/gamma/listAicSwitch.ejs
@@ -0,0 +1,156 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+  
+  <script class="init">
+    $(document).ready(function() {
+    $('#switch').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+	} );
+  </script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>AIC Switch</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+	<table id="switch" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>Physical Network Name</th>
+          <th>Switch Name</th>
+          <th>AIC Site ID</th>
+          <th>UUID</th>
+          <th>Availability Zone</th>
+		  <% if(priv == 'A') { %>
+		  <th>Action</th>
+		  <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.physical_network_name %></td>
+            <td><%= row.switch_name %></td>
+            <td><%= row.aic_site_id %></td>
+            <td><%= row.uuid %></td>
+            <td><%= row.availability_zone %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+					onclick="updateAicSwitch('<%= row.physical_network_name %>','<%= row.switch_name %>','<%=row.aic_site_id %>','<%= row.uuid %>','<%=row.availability_zone %>');">Update</button>
+
+				<button type="button" class="btn btn-default btn-xs"
+                   onclick="deleteSwitch('<%=row.physical_network_name %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+
+<!--
+	<% if(priv == 'A') { %>
+	<div class="actions" style="padding:0px 25px;">
+	<form method="POST" action="/gamma/uploadAicSwitch" enctype="multipart/form-data">
+		<div class="form-group">
+    		<label for="dest">File input</label>
+    		<input name="filename" type="file" id="dest">
+    		<p class="help-block">Choose a file to upload.</p>
+  		</div>
+
+		<% if(priv == 'A') { %>
+            <button type="button" class="btn btn-default"
+                onclick="uploadFile(this.form);">Upload File</button>
+        <% } else { %>
+            <button type="button" class="btn btn-default disabled"
+                onclick="uploadFile(this.form);">Upload File</button>
+        <% } %>
+	</form>
+	</div>
+	<% } %>
+-->
+</div>
+
+<% include ../partials/update_aic_switch %>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function updateAicSwitch(physical_network_name,switch_name,aic_site_id,uuid,availability_zone) {
+
+    document.getElementById('uf_physical_network_name').value=physical_network_name;
+    document.getElementById('uf_switch_name').value=switch_name;
+    document.getElementById('uf_aic_site_id').value=aic_site_id;
+    document.getElementById('uf_uuid').value=uuid;
+    document.getElementById('uf_availability_zone').value=availability_zone;
+    document.getElementById('uf_key_physical_network_name').value=physical_network_name;
+    $('#update_aic_switch_modal').modal('show');
+}
+function deleteSwitch(pnetwork_name) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete this switch [" + pnetwork_name + "] ?",
+        callback: function(result) {
+            if ( result )
+            {
+                location.assign("/gamma/deleteSwitch?phy_network_name=" + pnetwork_name);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/gamma/listServiceHoming.ejs b/sdnc-a1-controller/oam/admportal/views/gamma/listServiceHoming.ejs
new file mode 100644
index 0000000..e25777a
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/gamma/listServiceHoming.ejs
@@ -0,0 +1,241 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Service Homing</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<% if (priv == 'A'){ %>
+	<div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_service_homing">
+      Add Service Homing
+    </button>
+	</div>
+	<% } %>
+
+	<table class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*Service Type</th>
+          <th>*LATA</th>
+		  <th>*Hubbing City Type</th>
+          <th>Latitude</th>
+          <th>Longitude</th>
+          <th>*Primary Site Name</th>
+          <th>Secondary Site Name</th>
+          <th>Tertiary Site Name</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% var i=0; rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.service_type %></td>
+            <td><%= row.lata %></td>
+            <td><%= row.hubbing_city_type%></td>
+            <td><%= row.latitude %></td>
+            <td><%= row.longitude %></td>
+            <td><%= row.primary_aic_site_name %></td>
+            <td><%= row.secondary_aic_site_name %></td>
+            <td><%= row.tertiary_aic_site_name %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                    onclick="updateServiceHoming('<%=row.service_type %>','<%= row.lata %>','<%= row.hubbing_city_type %>','<%= row.latitude %>','<%= row.longitude %>','<%= row.primary_aic_site_name %>','<%= row.secondary_aic_site_name %>','<%= row.tertiary_aic_site_name %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+                   onclick="deleteServiceHoming('<%= row.service_type %>','<%=row.lata %>','<%= row.hubbing_city_type %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% i++; }); %>
+      </tbody>
+    </table>
+
+	 <div class container>
+        <p><%= i %> rows in table.</p>
+    </div>
+
+
+	<% if(priv == 'A'){ %>
+	<div class="actions" style="padding:0px 25px;">
+	<form method="POST" action="/gamma/uploadServiceHoming" enctype="multipart/form-data">
+		<div class="form-group">
+    		<label for="dest">File input</label>
+    		<input name="filename" type="file" id="dest">
+    		<p class="help-block">Choose a file to upload.</p>
+  		</div>
+		<% if(priv == 'A') { %>
+            <button type="button" class="btn btn-default"
+                onclick="uploadFile(this.form);">Upload File</button>
+        <% } else { %>
+            <button type="button" class="btn btn-default disabled"
+                onclick="uploadFile(this.form);">Upload File</button>
+        <% } %>
+
+	</form>
+	</div>
+	<% } %>
+</div>
+
+<% include ../partials/add_service_homing %>
+<% include ../partials/update_service_homing %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+
+function submitServiceHoming(form)
+{
+	var errorMsg='';
+	var lata='';
+	var hubbing_city_type='';
+	var primary_aic_site_name='';
+	var latitude='';
+	var longitude='';
+
+	if ( form.name == 'addForm' )
+	{
+		lata = form.nf_lata;
+		hubbing_city_type = form.nf_hubbing_city_type;
+		primary_aic_site_name = form.nf_primary_aic_site_name;
+		latitude = form.nf_latitude;
+		longitude = form.nf_longitude;
+	}
+	else
+	{
+		lata = form.uf_lata;
+		hubbing_city_type = form.uf_hubbing_city_type;
+		primary_aic_site_name = form.uf_primary_aic_site_name;
+		latitude = form.uf_latitude;
+		longitude = form.uf_longitude;
+	}
+
+
+	if ( (lata.value == null) || (lata.value == "") || isblank(lata.value) )
+	{
+		errorMsg += 'LATA is required.<br>';
+	}
+	if ( (hubbing_city_type.value == null) || (hubbing_city_type.value == "") || isblank(hubbing_city_type.value) )
+	{
+		errorMsg += 'Hubbing City Type is required.<br>';
+	}
+	if ( (primary_aic_site_name.value == null) || (primary_aic_site_name.value == "") || isblank(primary_aic_site_name.value) ){
+		errorMsg += 'Primary Site Name is required.<br>';
+	}
+	if( errorMsg.length > 0 ) {
+		bootbox.alert(errorMsg);
+		return;
+	}
+
+	if ( !isDigit(lata.value) )
+	{
+		bootbox.alert('LATA must be a number.');
+		return;
+	}
+	if ( latitude.length > 0 )
+	{
+		if ( !isFloat(latitude.value) )
+		{
+			bootbox.alert('Latitude must be a float.');
+			return;
+		}
+	}
+	if ( longitude.length > 0 )
+	{
+		if ( !isFloat(longitude.value) )
+		{
+			bootbox.alert('Longitude must be a float.');
+			return;
+		}
+	}
+	form.submit();
+}
+
+function updateServiceHoming(service_type,lata,hubbing_city_type,latitude,longitude,primary_aic_site_name,secondary_aic_site_name,tertiary_aic_site_name) {
+
+    document.getElementById('uf_service_type').value=service_type;
+    document.getElementById('uf_lata').value=lata
+    document.getElementById('uf_hubbing_city_type').value=hubbing_city_type;
+    document.getElementById('uf_latitude').value=latitude;
+    document.getElementById('uf_longitude').value=longitude;
+    document.getElementById('uf_primary_aic_site_name').value=primary_aic_site_name;
+    document.getElementById('uf_secondary_aic_site_name').value=secondary_aic_site_name;
+    document.getElementById('uf_tertiary_aic_site_name').value=tertiary_aic_site_name;
+
+    document.getElementById('uf_key_service_type').value=service_type;
+    document.getElementById('uf_key_lata').value=lata
+    document.getElementById('uf_key_hubbing_city_type').value=hubbing_city_type;
+
+    $('#update_service_homing').modal('show');
+}
+
+function deleteServiceHoming(service_type,lata,hubbing_city_type) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete SERVICE_HOMING [" + service_type + "]" + "[" + lata + "][" + hubbing_city_type + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/gamma/deleteServiceHoming?service_type=" + service_type + "&lata=" + lata + "&hubbing_city_type=" + hubbing_city_type);
+
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/gamma/listServiceHomingRollback.ejs b/sdnc-a1-controller/oam/admportal/views/gamma/listServiceHomingRollback.ejs
new file mode 100644
index 0000000..a7b5ef5
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/gamma/listServiceHomingRollback.ejs
@@ -0,0 +1,117 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Service Homing Rollback</h3>
+<p>(This table data was saved during the last import of SERVICE_HOMING data.)</p>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+	<table class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>Service Type</th>
+          <th>LATA</th>
+		  <th>Hubbing City Type</th>
+          <th>Latitude</th>
+          <th>Longitude</th>
+          <th>Primary Site Name</th>
+          <th>Secondary Site Name</th>
+          <th>Tertiary Site Name</th>
+        </tr>
+      </thead>
+      <tbody>
+      <% var i=0; rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.service_type %></td>
+            <td><%= row.lata %></td>
+            <td><%= row.hubbing_city_type%></td>
+            <td><%= row.latitude %></td>
+            <td><%= row.longitude %></td>
+            <td><%= row.primary_aic_site_name %></td>
+            <td><%= row.secondary_aic_site_name %></td>
+            <td><%= row.tertiary_aic_site_name %></td>
+        </tr>
+    <% i++; }); %>
+      </tbody>
+    </table>
+
+	 <div class container>
+        <p><%= i %> rows in table.</p>
+    </div>
+
+	<% if (priv == 'A') { %>
+	<button type="button" class="btn btn-default"
+                onclick="rollback();">Rollback</button>
+	<% } %>
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+<script type="text/javascript">
+
+function rollback()
+{
+	bootbox.confirm({
+		message: "This Rollback will overlay the current SERVICE_HOMING table.  Are you sure you want to Rollback the SERVICE_HOMING table?",
+		callback: function(result){
+			if(result)
+			{
+				location.assign("/gamma/rollbackServiceHoming");
+			}
+			return;
+		},
+		buttons: {
+			cancel: {
+				label: "Cancel"
+			},
+			confirm:{
+				label: "Yes"
+			}
+		}
+	});
+}
+
+</script>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/gamma/listSite.ejs b/sdnc-a1-controller/oam/admportal/views/gamma/listSite.ejs
new file mode 100644
index 0000000..9287ad5
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/gamma/listSite.ejs
@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#site').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+    <h3>AIC Site</h3>
+</div>
+<!--
+<div class="actions" style="padding:0px 25px;">
+<h2>AIC SITE</h2>
+</div>
+-->
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+<div class="container-fluid">
+	<table id="site" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>Name</th>
+          <th>AIC Site ID</th>
+          <th>VCenter URL</th>
+		  <th>OAM Gateway Address</th>
+          <th>VCenter User</th>
+          <th>VCenter Passwd</th>
+          <th>City</th>
+          <th>State</th>
+          <th>Status</th>
+		  <% if(priv == 'A') { %>
+		  <th>Action</th>
+		  <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.name %></td>
+            <td><%= row.aic_site_id %></td>
+            <td><%= row.vcenter_url %></td>
+			<td><%= row.oam_gateway_addr %></td>
+            <td><%= row.vcenter_username %></td>
+			<td>*****</td>
+            <td><%= row.city %></td>
+            <td><%= row.state %></td>
+            <td><%= row.operational_status %></td>
+			<% if(priv == 'A') { %>
+			<td>
+				<button type="button" class="btn btn-default btn-xs"
+					onclick="updateAicSite('<%= row.name %>','<%=row.aic_site_id %>',
+					'<%= row.vcenter_url %>','<%= JSON.stringify(row.vcenter_username).replace(/\"/g,'') %>',
+					'<%= row.vcenter_passwd %>', '<%= row.city %>','<%= row.state %>',
+					'<%= row.operational_status %>', '<%= row.oam_gateway_addr %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+					onclick="deleteSite('<%=row.aic_site_id %>');">Delete</button>
+			</td>
+			<% } %>
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+<!--
+	<% if(priv == 'A') { %>
+	<div class="actions" style="padding:0px 25px;">
+	<form method="POST" action="/gamma/uploadAicSite" enctype="multipart/form-data">
+		<div class="form-group">
+    		<label for="dest">File input</label>
+    		<input name="filename" type="file" id="dest">
+    		<p class="help-block">Choose a file to upload.</p>
+  		</div>
+		<% if(priv == 'A') { %>
+            <button type="button" class="btn btn-default"
+                onclick="uploadFile(this.form);">Upload File</button>
+        <% } else { %>
+            <button type="button" class="btn btn-default disabled"
+                onclick="uploadFile(this.form);">Upload File</button>
+        <% } %>
+	</form>
+	</div>
+	<% } %>
+-->
+</div>
+
+<% include ../partials/update_aic_site %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function updateAicSite(name,aic_site_id,vcenter_url,vcenter_username,vcenter_passwd,city,state,operational_status,oam_gateway_addr) 
+{
+    document.getElementById('uf_name').value=name
+    document.getElementById('uf_aic_site_id').value=aic_site_id;
+    document.getElementById('uf_vcenter_url').value=vcenter_url;
+    document.getElementById('uf_vcenter_username').value=vcenter_username;
+    document.getElementById('uf_vcenter_passwd').value=vcenter_passwd;
+    document.getElementById('uf_city').value=city;
+    document.getElementById('uf_state').value=state;
+    document.getElementById('uf_operational_status').value=operational_status;
+    document.getElementById('uf_oam_gateway_addr').value=oam_gateway_addr;
+
+    document.getElementById('uf_key_aic_site_id').value=aic_site_id;
+    $('#update_aic_site_modal').modal('show');
+}
+
+function deleteSite(siteId) {
+
+    bootbox.confirm({
+        message: "Their may be SERVICE_HOMING entry pointing to this site.  Are you sure you want to delete site [" + siteId + "] ?",
+        callback: function(result) {
+            if ( result )
+            {
+                location.assign("/gamma/deleteSite?siteid=" + siteId);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/gamma/listVpePool.ejs b/sdnc-a1-controller/oam/admportal/views/gamma/listVpePool.ejs
new file mode 100644
index 0000000..51c2dfe
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/gamma/listVpePool.ejs
@@ -0,0 +1,194 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+
+<script class="init">
+    $(document).ready(function() {
+    $('#vpe_pool').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>VPE Pool</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+	<table id="vpe_pool" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>AIC Site ID</th>
+          <th>VPE Name</th>
+          <th>Availability Zone</th>
+		  <th>IPV4 OAM Address</th>
+          <th>Loopback IPV4 Address</th>
+          <th>Prov Status</th>
+          <th>VLAN ID Outer</th>
+          <th>Vendor</th>
+          <th>Interface Name</th>
+          <th>Interface Speed</th>
+          <th>Interface Units</th>
+          <th>VPE UUID</th>
+          <th>VPE ID</th>
+		  <th>AS_NUMBER</th>
+          <th>Image Filename</th>
+		  <% if(priv == 'A'){ %>
+		  <th>Action</th>
+		  <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.aic_site_id %></td>
+            <td><%= row.vpe_name %></td>
+            <td><%= row.availability_zone %></td>
+            <td><%= row.ipv4_oam_address %></td>
+            <td><%= row.loopback0_ipv4_address %></td>
+            <td><%= row.provisioning_status %></td>
+            <td><%= row.vlan_id_outer %></td>
+            <td><%= row.vendor %></td>
+            <td><%= row.physical_intf_name %></td>
+            <td><%= row.physical_intf_speed %></td>
+            <td><%= row.physical_intf_units %></td>
+            <td><%= row.vpe_uuid %></td>
+            <td><%= row.vpe_id %></td>
+            <td><%= row.as_number %></td>
+            <td><%= row.image_filename %></td>
+			<td>
+<!--
+				<form name="rowform">
+                <input type="hidden" name="rf_aic_site_id" id="rf_aic_site_id" value="<%= row.aic_site_id %>"</input>
+                <input type="hidden" name="rf_vpe_name" id="rf_vpe_name" value="<%= row.vpe_name %>"</input>
+                <input type="hidden" name="rf_availability_zone" id="rf_availability_zone" value="<%= row.availability_zone %>"</input>
+                </form>
+-->
+                <!-- <% var _attuid = row.attuid %> -->
+                <% if(priv == 'A') { %>
+					<button type="button" class="btn btn-default btn-xs"
+                    onclick="updateVpePool('<%=row.aic_site_id %>','<%=row.vpe_name %>', '<%=row.availability_zone %>','<%=row.provisioning_status %>','<%= row.ipv4_oam_address %>','<%= row.loopback0_ipv4_address %>','<%= row.vlan_id_outer %>','<%= row.vendor %>','<%= row.physical_intf_name %>','<%= row.physical_intf_speed %>','<%= row.physical_intf_units %>','<%= row.vpe_uuid %>','<%= row.vpe_id %>', '<%= row.image_filename %>', '<%= row.as_number %>' );">Update</button>
+					<button type="button" class="btn btn-default btn-xs"
+                    onclick="deleteVpePool('<%= row.vpe_name %>','<%=row.aic_site_id %>','<%= row.availability_zone %>');">Delete</button>
+                <% } %>
+            </td>
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+<!--
+	<% if(priv == 'A'){ %>
+	<div class="actions" style="padding:0px 25px;">
+	<form method="POST" action="/gamma/uploadVpePool" enctype="multipart/form-data">
+		<div class="form-group">
+    		<label for="dest">File input</label>
+    		<input name="filename" type="file" id="dest">
+    		<p class="help-block">Choose a file to upload.</p>
+  		</div>
+		<% if(priv == 'A') { %>
+            <button type="button" class="btn btn-default"
+                onclick="uploadFile(this.form);">Upload File</button>
+        <% } else { %>
+            <button type="button" class="btn btn-default disabled"
+                onclick="uploadFile(this.form);">Upload File</button>
+        <% } %>
+	</form>
+	</div>
+	<% } %>
+-->
+</div>
+
+<% include ../partials/update_vpe_pool %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function updateVpePool(aic_site_id,vpe_name,availability_zone,provisioning_status,ipv4_oam_address,loopback0_ipv4_address,vlan_id_outer,vendor,physical_intf_name,physical_intf_speed,physical_intf_units,vpe_uuid,vpe_id,image_filename, as_number) {
+
+    document.getElementById('uf_aic_site_id').value=aic_site_id;
+    document.getElementById('uf_vpe_name').value=vpe_name;
+    document.getElementById('uf_availability_zone').value=availability_zone;
+    document.getElementById('uf_provisioning_status').value=provisioning_status;
+    document.getElementById('uf_ipv4_oam_address').value=ipv4_oam_address;
+    document.getElementById('uf_loopback0_ipv4_address').value=loopback0_ipv4_address;
+    document.getElementById('uf_vlan_id_outer').value=vlan_id_outer;
+    document.getElementById('uf_vendor').value=vendor;
+    document.getElementById('uf_physical_intf_name').value=physical_intf_name;
+    document.getElementById('uf_physical_intf_speed').value=physical_intf_speed;
+    document.getElementById('uf_physical_intf_units').value=physical_intf_units;
+    document.getElementById('uf_vpe_uuid').value=vpe_uuid;
+    document.getElementById('uf_vpe_id').value=vpe_id;
+    document.getElementById('uf_as_number').value=as_number;
+    document.getElementById('uf_image_filename').value=image_filename;
+
+    document.getElementById('uf_key_availability_zone').value=availability_zone;
+    document.getElementById('uf_key_aic_site_id').value=aic_site_id;
+    document.getElementById('uf_key_vpe_name').value=vpe_name;
+    $('#update_vpe_pool_modal').modal('show');
+
+}
+function deleteVpePool(vpe_name,aic_site_id,availability_zone) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete VPE [" + aic_site_id + "][" + vpe_name + "][" + availability_zone + "] ?",
+        callback: function(result) {
+            if ( result )
+            {
+                location.assign("/gamma/deleteVpePool?aic_site_id=" + aic_site_id + "&vpe_name=" + vpe_name + "&availability_zone=" + availability_zone);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/gamma/listVplspePool.ejs b/sdnc-a1-controller/oam/admportal/views/gamma/listVplspePool.ejs
new file mode 100644
index 0000000..b49c2a3
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/gamma/listVplspePool.ejs
@@ -0,0 +1,178 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+
+<script class="init">
+    $(document).ready(function() {
+    $('#vplspe_pool').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>VPLSPE Pool</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+<div class="container-fluid">
+	<table id="vplspe_pool" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>VPLSPE Name</th>
+          <th>AIC Site ID</th>
+          <th>Availability Zone</th>
+		  <th>Interface Name</th>
+          <th>Interface Speed</th>
+          <th>Interface Units</th>
+          <th>Loopback IPV4 Address</th>
+          <th>VLAN ID Outer</th>
+          <th>VPLSPE UUID</th>
+          <th>Image Filename</th>
+          <th>Prov Status</th>
+          <th>Vendor</th>
+		  <% if(priv == 'A'){ %>
+		  <th>Action</th>
+		  <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.vplspe_name %></td>
+            <td><%= row.aic_site_id %></td>
+            <td><%= row.availability_zone %></td>
+            <td><%= row.physical_intf_name %></td>
+            <td><%= row.physical_intf_speed %></td>
+            <td><%= row.physical_intf_units %></td>
+            <td><%= row.loopback0_ipv4_address %></td>
+            <td><%= row.vlan_id_outer %></td>
+            <td><%= row.vplspe_uuid %></td>
+            <td><%= row.image_filename %></td>
+            <td><%= row.provisioning_status %></td>
+            <td><%= row.vendor %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                    onclick="updateVplspePool('<%=row.aic_site_id %>','<%= row.availability_zone %>','<%= row.vplspe_name %>','<%= row.physical_intf_name %>','<%= row.physical_intf_speed %>','<%= row.physical_intf_units %>','<%= row.loopback0_ipv4_address %>','<%= row.vlan_id_outer %>','<%= row.vplspe_uuid %>','<%= row.image_filename %>','<%= row.provisioning_status %>','<%= row.vendor %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+                   onclick="deleteVplspePool('<%= row.vplspe_name %>','<%=row.aic_site_id %>','<%= row.availability_zone %>','<%= row.physical_intf_name %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+<!--
+	<% if(priv == 'A'){ %>
+	<div class="actions" style="padding:0px 25px;">
+	<form method="POST" action="/gamma/uploadVplspePool" enctype="multipart/form-data">
+		<div class="form-group">
+    		<label for="dest">File input</label>
+    		<input name="filename" type="file" id="dest">
+    		<p class="help-block">Choose a file to upload.</p>
+  		</div>
+		<% if(priv == 'A') { %>
+            <button type="button" class="btn btn-default"
+                onclick="uploadFile(this.form);">Upload File</button>
+        <% } else { %>
+            <button type="button" class="btn btn-default disabled"
+                onclick="uploadFile(this.form);">Upload File</button>
+        <% } %>
+
+	</form>
+	</div>
+	<% } %>
+-->
+</div>
+
+<% include ../partials/update_vplspe_pool %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function updateVplspePool(aic_site_id,availability_zone,vplspe_name,physical_intf_name,physical_intf_speed,physical_intf_units,loopback0_ipv4_address,vlan_id_outer,vplspe_uuid,image_filename,provisioning_status,vendor) {
+
+    document.getElementById('uf_aic_site_id').value=aic_site_id;
+    document.getElementById('uf_availability_zone').value=availability_zone
+    document.getElementById('uf_vplspe_name').value=vplspe_name;
+    document.getElementById('uf_physical_intf_name').value=physical_intf_name;
+    document.getElementById('uf_physical_intf_speed').value=physical_intf_speed;
+    document.getElementById('uf_physical_intf_units').value=physical_intf_units;
+    document.getElementById('uf_loopback0_ipv4_address').value=loopback0_ipv4_address;
+    document.getElementById('uf_vlan_id_outer').value=vlan_id_outer;
+    document.getElementById('uf_vplspe_uuid').value=vplspe_uuid;
+    document.getElementById('uf_image_filename').value=image_filename;
+    document.getElementById('uf_provisioning_status').value=provisioning_status;
+    document.getElementById('uf_vendor').value=vendor;
+
+    document.getElementById('uf_key_aic_site_id').value=aic_site_id;
+    document.getElementById('uf_key_vplspe_name').value=vplspe_name;
+    document.getElementById('uf_key_availability_zone').value=availability_zone
+    document.getElementById('uf_key_physical_intf_name').value=physical_intf_name;
+    $('#update_vplspe_pool_modal').modal('show');
+}
+
+function deleteVplspePool(vplspe_name,aic_site_id,availability_zone,physical_intf_name) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete VPLSPE [" + vplspe_name + "][" + aic_site_id + "][" + availability_zone + "][" + physical_intf_name + "] ?",
+        callback: function(result) {
+            if ( result )
+            {
+                location.assign("/gamma/deleteVplspePool?aic_site_id=" + aic_site_id + "&vplspe_name=" + vplspe_name + "&availability_zone=" + availability_zone + "&physical_intf_name=" + physical_intf_name);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/gamma/nbVlanPool.ejs b/sdnc-a1-controller/oam/admportal/views/gamma/nbVlanPool.ejs
new file mode 100644
index 0000000..9d3a8d1
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/gamma/nbVlanPool.ejs
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+
+<script class="init">
+    $(document).ready(function() {
+    $('#nb_vlan_pool').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>NetBond VLAN Pools</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){ 
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+<div class="container-fluid">
+
+	<table id="nb_vlan_pool" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>AIC Site Id</th>
+          <th>Availability Zone</th>
+		  <th>VLAN Plan Id</th>
+		  <th>Plan Type</th>
+		  <th>Purpose</th>
+		  <th>VLAN Id</th>
+	      <th>Status</th>
+		  <% if(priv == 'A'){ %>
+		  <th>Action</th>
+		  <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.aic_site_id %></td>
+            <td><%= row.availability_zone %></td>
+            <td><%= row.vlan_plan_id %></td>
+            <td><%= row.plan_type %></td>
+            <td><%= row.purpose %></td>
+            <td><%= row.vlan_id %></td>
+            <td><%= row.status %></td>
+			<% if(priv == 'A') { %>
+            <td>
+               	<button type="button" class="btn btn-default btn-xs" 
+					onclick="updateNbVlanPool('<%= row.aic_site_id %>', '<%= row.availability_zone %>',
+						'<%= row.vlan_plan_id %>', '<%= row.plan_type %>', '<%= row.purpose %>', 
+						'<%= row.vlan_id %>', '<%= row.status %>');">Update</button>
+            </td>
+            <% } else { %>
+				<td>&nbsp;</td>
+			<% } %>
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+</div>
+
+<% include ../partials/nb_vlan_pool %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+
+function updateNbVlanPool(aic_site_id,availability_zone,vlan_plan_id,plan_type,purpose,vlan_id,pstatus) {
+
+    document.getElementById('uf_key_aic_site_id').value=aic_site_id;
+    document.getElementById('uf_key_availability_zone').value=availability_zone;
+    document.getElementById('uf_key_vlan_plan_id').value=vlan_plan_id;
+    document.getElementById('uf_key_plan_type').value=plan_type;
+    document.getElementById('uf_key_purpose').value=purpose;
+    document.getElementById('uf_key_vlan_id').value=vlan_id;
+    document.getElementById('uf_status').value=pstatus;
+
+    $('#update_nb_vlan_pool').modal('show');
+}
+
+function saveNbVlanPool(form)
+{
+   	form.submit();
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/gamma/nbVlanRange.ejs b/sdnc-a1-controller/oam/admportal/views/gamma/nbVlanRange.ejs
new file mode 100644
index 0000000..748dbbe
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/gamma/nbVlanRange.ejs
@@ -0,0 +1,205 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+
+<script class="init">
+    $(document).ready(function() {
+    $('#nb_vlan_ranges').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>NetBond VLAN Ranges</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){ 
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+<div class="container-fluid">
+
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary" data-toggle="modal" data-target="#add_vlan_range">
+            Add Range
+            </button>
+        </div>
+    <% } %>
+
+	<table id="nb_vlan_ranges" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>Vlan Plan Id</th>
+          <th>Purpose</th>
+		  <th>Range Start</th>
+		  <th>Range End</th>
+		  <th>Plan Type</th>
+	      <th>Pool Generated</th>
+		  <% if(priv == 'A'){ %>
+		  <th>Action</th>
+		  <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.vlan_plan_id %></td>
+            <td><%= row.purpose %></td>
+            <td><%= row.range_start %></td>
+            <td><%= row.range_end %></td>
+            <td><%= row.plan_type %></td>
+            <td><%= row.generated %></td>
+            <td>
+				<% if (row.generated == 'N' && priv == 'A'){ %>
+               		<button type="button" class="btn btn-default btn-xs" onclick="generateVlanPool();">Generate Pool</button>
+				<% } else { %>
+               		<button type="button" class="btn btn-default btn-xs disabled" 
+					onclick="generateVlanPool('<%= row.purpose %>', '<%= row.vlan_plan_id %>',
+						'<%= row.range_start %>', '<%= row.range_end %>',
+						'<%= row.plan_type %>');">Generate Pool</button>
+				<% } %>
+				<% if (row.generated == 'N'){ %>
+               		<button type="button" class="btn btn-default btn-xs disabled" onclick="viewNbVlanPool('<%= row.vlan_plan_id %>','<%= row.range_start %>', '<%= row.range_end %>');">View Pool</button>
+				<% } else { %>
+               		<button type="button" class="btn btn-default btn-xs" onclick="viewNbVlanPool('<%= row.vlan_plan_id %>','<%= row.range_start %>', '<%= row.range_end %>');">View Pool</button>
+				<% } %>
+				<% if(priv == 'A') { %>
+               		<button type="button" class="btn btn-default btn-xs" 
+						onclick="deleteNbVlanRange('<%= row.vlan_plan_id %>',
+						'<%= row.plan_type %>', '<%= row.purpose %>', '<%= row.range_start %>',
+						'<%= row.range_end %>');">Delete</button>
+				<% } %>
+            </td>
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+</div>
+
+<% include ../partials/nb_vlan_range %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+
+function generateVlanPool(purpose,vlan_plan_id,range_start,range_end,plan_type)
+{
+	var url_string = encodeURI("/gamma/generateNbVlanPool?vlan_plan_id=" + vlan_plan_id
+		+ "&range_start=" + range_start + "&range_end=" + range_end 
+		+ "&plan_type=" + plan_type + "&purpose=" + purpose);
+	location.assign(url_string);
+	return;
+}
+function viewNbVlanPool(vlan_plan_id, range_start, range_end)
+{
+	var url_string = encodeURI("/gamma/getNbVlanPool?vlan_plan_id=" + vlan_plan_id
+		+ "&range_start=" + range_start + "&range_end=" + range_end);
+	location.assign(url_string);
+	return;
+}
+function deleteNbVlanRange(vlan_plan_id,plan_type,purpose,range_start,range_end) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete this VLAN Range[" + vlan_plan_id + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				var url_string = encodeURI(
+					"/gamma/deleteNbVlanRange?vlan_plan_id=" + vlan_plan_id
+					+ "&plan_type=" + plan_type + "&purpose=" + purpose
+					+ "&range_start=" + range_start + "&range_end=" + range_end);
+                location.assign(url_string);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+function saveNbVlanRange(form)
+{
+    var errorMsg='';
+    var plan_type = form.nf_plan_type.value;
+    var purpose = form.nf_purpose.value;
+	var range_start = form.nf_range_start.value;
+	var range_end = form.nf_range_end.value;
+
+    if ( (range_start == null) || (range_start == "") || isblank(range_start) )
+    {
+        errorMsg += 'Range Start is required.<br>';
+    }
+    if ( (range_end == null) || (range_end == "") || isblank(range_start) )
+    {
+        errorMsg += 'Range End is required.<br>';
+    }
+    if( errorMsg.length > 0 ) {
+        bootbox.alert(errorMsg);
+        return;
+    }
+
+	if ( !$.isNumeric(range_start) ) {
+        bootbox.alert('Range Start is not a number.');
+        return;
+    }
+	if ( !$.isNumeric(range_end) ) {
+        bootbox.alert('Range End is not a number.');
+        return;
+    }
+	var r_start = Number(range_start);
+	var r_end = Number(range_end);
+
+	if ( r_end < r_start )
+	{
+		bootbox.alert('Range End must be greater than Range Start.');
+		return;
+	}
+
+   	form.submit();
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/gamma/networkProfile.ejs b/sdnc-a1-controller/oam/admportal/views/gamma/networkProfile.ejs
new file mode 100644
index 0000000..1b54d67
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/gamma/networkProfile.ejs
@@ -0,0 +1,164 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+
+<script class="init"> 
+	$(document).ready(function() {
+    $('#network_profile').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Network Profile</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary btn-md" data-toggle="modal" data-target="#add_network_profile">
+            Add Profile 
+            </button>
+            </div>
+    <% } %>
+
+	<table id="network_profile" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*Network Type</th>
+          <th>Technology</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.network_type %></td>
+            <td><%= row.technology %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<% if (priv == 'A') { %>
+				<button type="button" class="btn btn-default btn-xs" onclick="updateNetworkProfile('<%= row.network_type %>', '<%= row.technology %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs" onclick="deleteNetworkProfile('<%= row.network_type %>');">Delete</button>
+				<% } %>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+</div>
+
+<% include ../partials/network_profile %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function saveNetworkProfile(form)
+{
+    var errorMsg='';
+    var network_type = '';
+	var technology = '';
+
+    if ( form.name == 'addForm' )
+    {
+		network_type = form.nf_network_type;
+		technology = form.nf_technology;
+    }
+    else
+    {
+		network_type = form.uf_network_type;
+		technology = form.uf_technology;
+    }
+
+
+    if ( (network_type.value == null) || (network_type.value == "") || isblank(network_type.value) )
+    {
+        errorMsg += 'Network Type is required.<br>';
+    }
+    if( errorMsg.length > 0 ) {
+        bootbox.alert(errorMsg);
+        return;
+    }
+    form.submit();
+}
+
+function updateNetworkProfile(network_type,technology) {
+
+    document.getElementById('uf_network_type').value=network_type;
+    document.getElementById('uf_technology').value=technology;
+
+    document.getElementById('uf_key_network_type').value=network_type;
+
+    $('#update_network_profile').modal('show');
+}
+
+function deleteNetworkProfile(network_type) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete this Network Profile [" + network_type + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/gamma/deleteNetworkProfile?network_type=" + network_type);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/javascript_delete/jquery.min.js b/sdnc-a1-controller/oam/admportal/views/javascript_delete/jquery.min.js
new file mode 100644
index 0000000..ab28a24
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/javascript_delete/jquery.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;
+if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
+},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/sdnc-a1-controller/oam/admportal/views/javascript_delete/sla.js b/sdnc-a1-controller/oam/admportal/views/javascript_delete/sla.js
new file mode 100644
index 0000000..e3819a8
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/javascript_delete/sla.js
@@ -0,0 +1,11 @@
+<script>
+function uploadDG(form)
+{
+	if ( form.filename.value.length == 0)
+	{
+		alert('Must select a file.');
+		return false;
+	}
+	else { form.submit(); return; }
+}
+</script>
diff --git a/sdnc-a1-controller/oam/admportal/views/logs/accesslog.ejs b/sdnc-a1-controller/oam/admportal/views/logs/accesslog.ejs
new file mode 100644
index 0000000..0b4ea56
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/logs/accesslog.ejs
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#access').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>HTTP Server Access Log</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+	<table id="access" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>Date (UTC)</th>
+          <th>Method</th>
+		  <th>Version</th>
+          <th>Status</th>
+          <th>URL</th>
+        </tr>
+      </thead>
+      <tbody>
+	  <% for(var x=0; x < rows.length; x++) { %>
+        <tr>
+            <td><%= rows[x].date %></td>
+            <td><%= rows[x].method %></td>
+            <td><%= rows[x].version %></td>
+            <td><%= rows[x].status %></td>
+            <td><%= rows[x].url %></td>
+        </tr>
+    <% } %>
+      </tbody>
+    </table>
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/logs/accesslog.ejs.0223 b/sdnc-a1-controller/oam/admportal/views/logs/accesslog.ejs.0223
new file mode 100644
index 0000000..77ece8f
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/logs/accesslog.ejs.0223
@@ -0,0 +1,121 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#access').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>HTTP Server Access Log</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+	<table id="access" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>Date (UTC)</th>
+          <th>Method</th>
+		  <th>Version</th>
+          <th>Status</th>
+          <th>URL</th>
+        </tr>
+      </thead>
+      <tbody>
+	  <% for(var x=0; x<pageInfo.rows.length; x++) { %>
+        <tr>
+            <td><%= pageInfo.rows[x].date %></td>
+            <td><%= pageInfo.rows[x].method %></td>
+            <td><%= pageInfo.rows[x].version %></td>
+            <td><%= pageInfo.rows[x].status %></td>
+            <td><%= pageInfo.rows[x].url %></td>
+        </tr>
+    <% } %>
+      </tbody>
+    </table>
+</div>
+
+	<div class="container-fluid">
+    <div class="row">
+    <div class="col-md-1 text-left">
+        <p>&nbsp;&nbsp;Page <%= pageInfo.currentPage %> of <%= pageInfo.pageCount %></p>
+    </div>
+    <div class="col-md-11 text-left">
+    <% if (pageInfo.pageCount > 1) { %>
+        <ul class="pagination">
+        <% if (pageInfo.currentPage > 1) { %>
+            <li><a href="/logs/pageAccessLog?page=1">&laquo;</a></li>
+        <% } %>
+        <% var i = 1;
+        if (pageInfo.currentPage > 10) {
+            i = +pageInfo.currentPage - 9;
+        } %>
+        <% if (i !== 1) { %>
+            <!--<li class="disabled"><a href="#">...</a></li>-->
+        <% } %>
+        <% for (i; i<=pageInfo.pageCount; i++) { %>
+            <% if (pageInfo.currentPage == i) { %>
+                <li class="active"><span><%= i %> <span class="sr-only">(current)</span></span></li>
+            <% } else { %>
+                <li><a href="/logs/pageAccessLog?page=<%= i %>"><%= i %></a></li>
+            <% } %>
+            <% if (i == (+pageInfo.currentPage + 9)) { %>
+                <!--<li class="disabled"><a href="#">...</a></li>-->
+            <% break; } %>
+        <% } %>
+        <% if (pageInfo.currentPage != pageInfo.pageCount) { %>
+            <li><a href="/logs/pageAccessLog?page=<%= pageInfo.pageCount %>">&raquo;</a></li>
+        <% } %>
+        </ul>
+    <% } %>
+    </div><!-- col-md-10 -->
+    </div><!-- row -->
+    </div><!-- container-fluid -->
+
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/logs/usertrace.ejs b/sdnc-a1-controller/oam/admportal/views/logs/usertrace.ejs
new file mode 100644
index 0000000..cca003b
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/logs/usertrace.ejs
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#usertrace').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>User Trace</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+	<div class="table-responsive">
+	<table id="usertrace" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>Date (UTC)</th>
+          <th>ATTUID</th>
+		  <th>Action</th>
+          <th>Description</th>
+        </tr>
+      </thead>
+      <tbody id="myTable">
+      <% for (var x=0; x < rows.length; x++) { %>
+        <tr>
+            <td><%= rows[x].date %></td>
+            <td><%= rows[x].attuid %></td>
+            <td><%= rows[x].action %></td>
+            <td><%= rows[x].desc %></td>
+        </tr>
+	  <% } %>
+      </tbody>
+    </table>
+	</div>
+</div>
+		
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/logs/usertrace.ejs.0223 b/sdnc-a1-controller/oam/admportal/views/logs/usertrace.ejs.0223
new file mode 100644
index 0000000..8a099ed
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/logs/usertrace.ejs.0223
@@ -0,0 +1,122 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#usertrace').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>User Trace</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+	<div class="table-responsive">
+	<table id="usertrace" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>Date (UTC)</th>
+          <th>ATTUID</th>
+		  <th>Action</th>
+          <th>Description</th>
+        </tr>
+      </thead>
+      <tbody id="myTable">
+      <% for (var x=0; x<pageInfo.rows.length; x++) { %>
+        <tr>
+            <td><%= pageInfo.rows[x].date %></td>
+            <td><%= pageInfo.rows[x].attuid %></td>
+            <td><%= pageInfo.rows[x].action %></td>
+            <td><%= pageInfo.rows[x].desc %></td>
+        </tr>
+	  <% } %>
+      </tbody>
+    </table>
+	</div>
+</div>
+		
+	
+
+	<div class="container-fluid">
+	<div class="row">
+	<div class="col-md-1 text-left">
+       	<p>&nbsp;&nbsp;Page <%= pageInfo.currentPage %> of <%= pageInfo.pageCount %></p>
+	</div>
+	<div class="col-md-11 text-left">
+	<% if (pageInfo.pageCount > 1) { %>  
+		<ul class="pagination">  
+  		<% if (pageInfo.currentPage > 1) { %>
+      		<li><a href="/logs/pageUserTrace?page=1">&laquo;</a></li>
+  		<% } %>
+  		<% var i = 1;
+  		if (pageInfo.currentPage > 10) {
+  			i = +pageInfo.currentPage - 9;
+  		} %>
+  		<% if (i !== 1) { %>
+      		<!--<li class="disabled"><a href="#">...</a></li>-->
+  		<% } %>
+  		<% for (i; i<=pageInfo.pageCount; i++) { %>
+    		<% if (pageInfo.currentPage == i) { %>
+        		<li class="active"><span><%= i %> <span class="sr-only">(current)</span></span></li>
+    		<% } else { %>
+        		<li><a href="/logs/pageUserTrace?page=<%= i %>"><%= i %></a></li>
+    		<% } %>
+    		<% if (i == (+pageInfo.currentPage + 9)) { %>
+        		<!--<li class="disabled"><a href="#">...</a></li>-->
+    		<% break; } %>
+  		<% } %>
+  		<% if (pageInfo.currentPage != pageInfo.pageCount) { %>
+      		<li><a href="/logs/pageUserTrace?page=<%= pageInfo.pageCount %>">&raquo;</a></li>
+  		<% } %>
+		</ul>  
+	<% } %>  
+	</div><!-- col-md-10 -->
+	</div><!-- row -->
+	</div><!-- container-fluid -->
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/mobility/displayVnfData.ejs b/sdnc-a1-controller/oam/admportal/views/mobility/displayVnfData.ejs
new file mode 100644
index 0000000..596feb6
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/mobility/displayVnfData.ejs
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <title>SDN-C AdminPortal</title>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+</head>
+<body>
+
+
+<div class="actions" style="padding:0px 25px;">
+<h2>VNF Data</h2>
+</div>
+
+<div class="container-fluid">
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <pre class='alert alert-success' role='alert'><%=JSON.stringify(result.msg,null,4) %></pre>
+            <% } else { %>
+                <pre class='alert alert-danger' role='danger'><%=result.msg %></pre>
+            <% } %>
+        <% } %>
+<% } %>
+</div>
+
+
+<footer>
+	 <% include ../partials/footer %>
+</footer>
+    
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/mobility/displayVnfNetworkData.ejs b/sdnc-a1-controller/oam/admportal/views/mobility/displayVnfNetworkData.ejs
new file mode 100644
index 0000000..e2bcd63
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/mobility/displayVnfNetworkData.ejs
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <title>SDN-C AdminPortal</title>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+</head>
+<body>
+
+
+<div class="actions" style="padding:0px 25px;">
+<h2>VNF Network Data</h2>
+</div>
+
+<div class="container-fluid">
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <pre class='alert alert-success' role='alert'><%=JSON.stringify(result.msg,null,4) %></pre>
+            <% } else { %>
+                <pre class='alert alert-danger' role='danger'><%=result.msg %></pre>
+            <% } %>
+        <% } %>
+<% } %>
+</div>
+
+
+<footer>
+	 <% include ../partials/footer %>
+</footer>
+    
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/mobility/vmNetworks.ejs b/sdnc-a1-controller/oam/admportal/views/mobility/vmNetworks.ejs
new file mode 100644
index 0000000..6394c44
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/mobility/vmNetworks.ejs
@@ -0,0 +1,198 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vm_networks').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>VM Networks </h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<% if (priv == 'A'){ %>
+	<div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary btn-md" data-toggle="modal" data-target="#add_vm_network">
+      Add VM Network
+    </button>
+	</div>
+	<% } %>
+
+	<table id="vm_networks" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*VNF_TYPE</th>
+		  <th>*VM_TYPE</th>
+          <th>*NETWORK_ROLE</th>
+          <th>IP_COUNT</th>
+          <th>ASSIGN_IPS</th>
+          <th>ASSIGN_MACS</th>
+          <th>ASSIGN_FLOATING_IP</th>
+		  <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+		<% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.vnf_type %></td>
+            <td><%= row.vm_type %></td>
+            <td><%= row.network_role %></td>
+			<td><%= row.ip_count %></td>
+            <td><%= (row.assign_ips == '1') ? 'true' : 'false' %></td>
+            <td><%= (row.assign_macs == '1') ? 'true' : 'false' %></td>
+            <td><%= (row.assign_floating_ip == '1') ? 'true' : 'false' %></td>
+			<% if(priv == 'A' ) { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                   onclick="deleteVmNetwork('<%= row.vnf_type %>', '<%= row.vm_type %>', '<%= row.network_role %>');">Delete</button>
+            </td>
+            <% } %>
+        </tr>
+		<% }); %>
+      </tbody>
+    </table>
+
+	<% if(priv == 'A'){ %>
+	<div class="actions" style="padding:0px 25px;">
+	<form method="POST" action="/mobility/uploadVmNetworks" enctype="multipart/form-data">
+		<div class="form-group">
+    		<label for="dest">File input</label>
+    		<input name="filename" type="file" id="dest">
+    		<p class="help-block">Choose a file to upload.</p>
+  		</div>
+        <button type="button" class="btn btn-default"
+                onclick="uploadFile(this.form);">Upload File</button>
+	</form>
+	</div>
+	<% } %>
+</div>
+
+<% include ../partials/vm_networks %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+
+function addVmNetwork(form)
+{
+	var errorMsg='';
+	var vnf_type='';
+	var vm_type='';
+	var network_role='';
+	var ip_count = '';
+	var assign_ips='';
+	var assign_macs='';
+	var assign_floating_ip='';
+
+	if ( form.name == 'addForm' )
+	{
+		vnf_type = form.nf_vnf_type;
+		vm_type = form.nf_vm_type;
+		network_role = form.nf_network_role;
+		ip_count = form.nf_ip_count;
+		assign_ips = form.nf_assign_ips;
+		assign_macs = form.nf_assign_macs;
+		assign_floating_ip = form.nf_assign_floating_ip;
+	}
+
+	if ( (vnf_type.value == null) || (vnf_type.value == "") || isblank(vnf_type.value) )
+	{
+		errorMsg += 'VNF Type is required.<br>';
+	}
+	if ( (vm_type.value == null) || (vm_type.value == "") || isblank(vm_type.value) )
+	{
+		errorMsg += 'VM Type is required.<br>';
+	}
+	if ( (network_role.value == null) || (network_role.value == "") || isblank(network_role.value) ){
+		errorMsg += 'Network Role is required.<br>';
+	}
+	if( errorMsg.length > 0 ) {
+		bootbox.alert(errorMsg);
+		return;
+	}
+	if (ip_count.value.length >0 && !isDigit(ip_count.value) )
+    {
+        bootbox.alert('VM Count must be a number.');
+        return;
+    }
+	if (assign_ips.value == 'true' && ip_count.value.length == 0)
+    {
+        bootbox.alert("If ASSIGN IPS equals 'true', IP COUNT must be populated with a number.");
+        return;
+    }
+
+	form.submit();
+}
+
+function deleteVmNetwork(vnf_type,vm_type,network_role) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete VM_NETWORK [" + vnf_type + "]" + "[" + vm_type + "][" + network_role + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/mobility/deleteVmNetwork?vnf_type=" + vnf_type + "&vm_type=" + vm_type + "&network_role=" + network_role);
+
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/mobility/vmProfile.ejs b/sdnc-a1-controller/oam/admportal/views/mobility/vmProfile.ejs
new file mode 100644
index 0000000..f702e51
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/mobility/vmProfile.ejs
@@ -0,0 +1,173 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vm_profile').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>VM Profile </h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<% if (priv == 'A'){ %>
+	<div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary btn-md" data-toggle="modal" data-target="#add_vm_profile">
+      Add VM Profile
+    </button>
+	</div>
+	<% } %>
+
+	<table id="vm_profile" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*VNF_TYPE</th>
+		  <th>*VM_TYPE</th>
+		  <th>VM_COUNT</th>
+		  <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+		<% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.vnf_type %></td>
+            <td><%= row.vm_type %></td>
+            <td><%= row.vm_count %></td>
+			<% if(priv == 'A' ) { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                   onclick="deleteVmProfile('<%= row.vnf_type %>', '<%= row.vm_type %>');">Delete</button>
+            </td>
+            <% } %>
+        </tr>
+		<% }); %>
+      </tbody>
+    </table>
+
+	<% if(priv == 'A'){ %>
+	<div class="actions" style="padding:0px 25px;">
+	<form method="POST" action="/mobility/uploadVmProfile" enctype="multipart/form-data">
+		<div class="form-group">
+    		<label for="dest">File input</label>
+    		<input name="filename" type="file" id="dest">
+    		<p class="help-block">Choose a file to upload.</p>
+  		</div>
+        <button type="button" class="btn btn-default"
+                onclick="uploadFile(this.form);">Upload File</button>
+	</form>
+	</div>
+	<% } %>
+</div>
+
+<% include ../partials/vm_profile %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+
+function addVmProfile(form)
+{
+	var errorMsg='';
+	var vnf_type='';
+	var vm_type='';
+	var vm_count='';
+
+	if ( form.name == 'addForm' )
+	{
+		vnf_type = form.nf_vnf_type;
+		vm_type = form.nf_vm_type;
+		vm_count = form.nf_vm_count;
+	}
+
+	if ( (vnf_type.value == null) || (vnf_type.value == "") || isblank(vnf_type.value) )
+	{
+		errorMsg += 'VNF Type is required.<br>';
+	}
+	if ( (vm_type.value == null) || (vm_type.value == "") || isblank(vm_type.value) )
+	{
+		errorMsg += 'VM Type is required.<br>';
+	}
+	if( errorMsg.length > 0 ) {
+		bootbox.alert(errorMsg);
+		return;
+	}
+
+	if ( vm_count.value.length > 0 && !isDigit(vm_count.value) )
+	{
+		bootbox.alert('VM Count must be a number.');
+		return;
+	}
+	form.submit();
+}
+
+function deleteVmProfile(vnf_type, vm_type) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete VM_PROFILE [" + vnf_type + "][" + vm_type + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/mobility/deleteVmProfile?vnf_type=" + vnf_type + "&vm_type=" + vm_type);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/mobility/vnfNetworks.ejs b/sdnc-a1-controller/oam/admportal/views/mobility/vnfNetworks.ejs
new file mode 100644
index 0000000..a4a9f17
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/mobility/vnfNetworks.ejs
@@ -0,0 +1,163 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_networks').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>VNF Networks </h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<% if (priv == 'A'){ %>
+	<div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary btn-md" data-toggle="modal" data-target="#add_vnf_network">
+      Add VNF Network
+    </button>
+	</div>
+	<% } %>
+
+	<table id="vnf_networks" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*VNF_TYPE</th>
+		  <th>*NETWORK_ROLE</th>
+		  <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+		<% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.vnf_type %></td>
+            <td><%= row.network_role %></td>
+			<% if(priv == 'A' ) { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                   onclick="deleteVnfNetwork('<%= row.vnf_type %>', '<%= row.network_role %>');">Delete</button>
+            </td>
+            <% } %>
+        </tr>
+		<% }); %>
+      </tbody>
+    </table>
+
+	<% if(priv == 'A'){ %>
+	<div class="actions" style="padding:0px 25px;">
+	<form method="POST" action="/mobility/uploadVnfNetworks" enctype="multipart/form-data">
+		<div class="form-group">
+    		<label for="dest">File input</label>
+    		<input name="filename" type="file" id="dest">
+    		<p class="help-block">Choose a file to upload.</p>
+  		</div>
+        <button type="button" class="btn btn-default"
+                onclick="uploadFile(this.form);">Upload File</button>
+	</form>
+	</div>
+	<% } %>
+</div>
+
+<% include ../partials/vnf_network %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+
+function addVnfNetwork(form)
+{
+	var errorMsg='';
+	var vnf_type='';
+	var network_role='';
+
+	if ( form.name == 'addForm' )
+	{
+		vnf_type = form.nf_vnf_type;
+		network_role = form.nf_network_role;
+	}
+
+	if ( (vnf_type.value == null) || (vnf_type.value == "") || isblank(vnf_type.value) )
+	{
+		errorMsg += 'VNF Type is required.<br>';
+	}
+	if ( (network_role.value == null) || (network_role.value == "") || isblank(network_role.value) )
+	{
+		errorMsg += 'Network Role is required.<br>';
+	}
+	if( errorMsg.length > 0 ) {
+		bootbox.alert(errorMsg);
+		return;
+	}
+	form.submit();
+}
+
+function deleteVnfNetwork(vnf_type, network_role) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete VNF_NETWORK [" + vnf_type + "][" + network_role + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/mobility/deleteVnfNetwork?vnf_type=" + vnf_type + "&network_role=" + network_role);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/mobility/vnfPreloadData.ejs b/sdnc-a1-controller/oam/admportal/views/mobility/vnfPreloadData.ejs
new file mode 100644
index 0000000..4dc7398
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/mobility/vnfPreloadData.ejs
@@ -0,0 +1,246 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_data').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Pre-load VNF Data</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<table id="vnf_data" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>ID</th>
+		  <th>SVC_REQUEST_ID</th>
+		  <th>VNF_NAME</th>
+		  <th>VNF_TYPE</th>
+		  <th>SVC_ACTION</th>
+		  <th>UPLOAD STATUS</th>
+          <th>FILENAME</th>
+          <th>IMPORT/UPLOAD TIMESTAMP</th>
+		  <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+		<% var i=0; retData.forEach( function(rowObj) { %>
+        <tr>
+            <td><%= rowObj.row.id %></td>
+            <td><a href="javascript:getVnfData('<%= rowObj.vnf_name %>','<%= rowObj.vnf_type %>');"><%= rowObj.row.svc_request_id %></a></td>
+			<td><%= rowObj.vnf_name %></td>
+			<td><%= rowObj.vnf_type %></td>
+            <td><%= rowObj.row.svc_action %></td>
+            <td><%= rowObj.row.status %></td>
+			<td>
+                <a data-toggle="collapse"
+                    href="#collapseExample<%= i %>" aria-expanded="false"
+                    aria-controls="collapseExample"><%= rowObj.row.filename %>
+                </a>
+                <div class="collapse" id="collapseExample<%= i %>">
+                    <div class="well">
+                        <pre><%= JSON.stringify(rowObj.filecontent,null,4) %></pre>
+                    </div>
+                </div>
+           </td>
+
+            <td><%= rowObj.row.ts %></td>
+			<% if(priv == 'A' ) { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="deleteVnfData('<%= rowObj.row.id %>','<%= rowObj.row.svc_request_id %>','<%= rowObj.row.filename %>','<%= rowObj.row.status %>','<%= rowObj.vnf_name %>','<%= rowObj.vnf_type %>');">Delete</button>
+            <% if (typeof rowObj.vnf_name != 'undefined' || typeof rowObj.vnf_type != 'undefined'){ %>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="loadVnfData('<%= rowObj.row.id %>','<%= rowObj.row.svc_request_id %>','<%= rowObj.row.svc_action %>','<%= rowObj.row.status %>','<%= rowObj.row.filename %>','<%= rowObj.row.ts %>');">Load Data</button>
+            <% } %>
+            </td>
+            <% } %>
+        </tr>
+		<% i++; }); %>
+      </tbody>
+    </table>
+
+	<% if(priv == 'A'){ %>
+	<div class="row">
+    <div class="col-md-8  col-md-push-4">
+	<form method="POST" action="/mobility/uploadVnfData" enctype="multipart/form-data">
+		<div class="form-group">
+				<input type="hidden" name="_csrf" value="<%= privilege.csrfToken %>" />
+    		<label for="dest">Upload pre processed JSON file.</label>
+    		<input name="filename" type="file" id="dest" />
+    		<p class="help-block">Choose a JSON file to upload.</p>
+            <button type="button" class="btn btn-default"
+				data-toggle="tooltip" data-placement="bottom"
+				title="Upload a JSON file that has already been pre processed."
+                onclick="uploadFile(this.form);">Upload JSON File</button>
+  		</div>
+	</form>
+    </div>
+	<div class="col-md-4 col-md-pull-8">
+	<form method="POST" action="/preload/uploadVnfCsv" enctype="multipart/form-data">
+		<div class="form-group">
+				<input type="hidden" name="_csrf" value="<%= privilege.csrfToken %>" />
+    		<label for="dest">Upload Worksheet CSV files from the <%= preloadImportDirectory %> directory.</label>
+    		<input name="filename" type="file" id="dest" multiple />
+    		<p class="help-block">Choose Worksheet CSV files to upload.</p>
+			<button type="button" class="btn btn-default" 
+				data-toggle="tooltip" data-placement="bottom" 
+				title="Must upload all the VNF CSV files from <%= preloadImportDirectory %>"
+				onclick="importWorksheet(this.form);">Upload VNF Worksheet CSV files
+			</button>
+  		</div>
+	</form>
+	</div>
+	</div>
+	<% } %>
+</div>
+
+<% include ../partials/add_service_homing %>
+<% include ../partials/update_service_homing %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+
+function importWorksheet(form)
+{
+    if ( form.filename.value.length == 0)
+    {
+        bootbox.alert('Must select a file.');
+        return false;
+    }
+    else { 
+
+		bootbox.confirm({
+        	message: "Are you sure you want to import VNF WORKSHEET .csv files from <%= preloadImportDirectory %>",
+        	callback: function(result) {
+            	if ( result )
+            	{
+					form.submit();
+            	}
+            	return;
+        	},
+        	buttons: {
+            	cancel: {
+                	label: "Cancel"
+            	},
+            	confirm: {
+                	label: "Yes"
+            	}
+        	}
+    	});
+	}
+}
+
+
+function getVnfData(vnf_name,vnf_type,svc_request_id)
+{
+	location.assign("/mobility/viewVnfData?vnf_name=" + vnf_name + "&vnf_type=" + vnf_type );
+	return;
+}
+function loadVnfData(id,svc_request_id,svc_action,status,filename,ts)
+{
+	if ( status != 'pending' )
+	{
+		bootbox.alert("Upload Status must be in 'pending' state.");
+		return;
+	}
+	bootbox.confirm({
+        message: "Are you sure you want to load file [" + filename + "]? ",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/mobility/loadVnfData?id=" + id + "&svc_request_id=" + svc_request_id + "&filename=" + filename + "&status=" + status);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+function deleteVnfData(id,svc_request_id,filename,status,vnf_name,vnf_type) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete uploaded file [" + filename + "]? ",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/mobility/deleteVnfData?id=" 
+					+ id 
+					+ "&svc_request_id=" + svc_request_id 
+					+ "&filename=" + filename 
+					+ "&status=" + status
+					+ "&vnf_name=" + vnf_name
+					+ "&vnf_type=" + vnf_type);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/mobility/vnfPreloadNetworkData.ejs b/sdnc-a1-controller/oam/admportal/views/mobility/vnfPreloadNetworkData.ejs
new file mode 100644
index 0000000..5d6204c
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/mobility/vnfPreloadNetworkData.ejs
@@ -0,0 +1,242 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#preload_vnf_data').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Pre-load VNF Network Data</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<table id="preload_vnf_data" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>ID</th>
+		  <th>SVC_REQUEST_ID</th>
+		  <th>NETWORK_NAME</th>
+		  <th>NETWORK_TYPE</th>
+		  <th>SVC_ACTION</th>
+		  <th>UPLOAD STATUS</th>
+          <th>FILENAME</th>
+          <th>IMPORT/UPLOAD TIMESTAMP</th>
+		  <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+		<% var i=0; retData.forEach( function(rowObj) { %>
+        <tr>
+            <td><%= rowObj.row.id %></td>
+            <td><a href="javascript:getVnfNetworkData('<%= rowObj.network_name %>','<%= rowObj.network_type %>');"><%= rowObj.row.svc_request_id %></a></td>
+			<td><%= rowObj.network_name %></td>
+			<td><%= rowObj.network_type %></td>
+            <td><%= rowObj.row.svc_action %></td>
+            <td><%= rowObj.row.status %></td>
+			<td>
+                <a data-toggle="collapse"
+                    href="#collapseExample<%= i %>" aria-expanded="false"
+                    aria-controls="collapseExample"><%= rowObj.row.filename %>
+                </a>
+                <div class="collapse" id="collapseExample<%= i %>">
+                    <div class="well">
+                        <pre><%= JSON.stringify(rowObj.filecontent,null,4) %></pre>
+                    </div>
+                </div>
+           </td>
+
+            <td><%= rowObj.row.ts %></td>
+			<% if(priv == 'A' ) { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="deleteVnfNetworkData('<%= rowObj.row.id %>','<%= rowObj.row.svc_request_id %>','<%= rowObj.row.filename %>','<%= rowObj.row.status %>','<%= rowObj.network_name %>','<%= rowObj.network_type %>');">Delete</button>
+            <% if (typeof rowObj.network_name != 'undefined' || typeof rowObj.network_type != 'undefined'){ %>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="loadVnfNetworkData('<%= rowObj.row.id %>','<%= rowObj.row.svc_request_id %>','<%= rowObj.row.svc_action %>','<%= rowObj.row.status %>','<%= rowObj.row.filename %>','<%= rowObj.row.ts %>');">Load Data</button>
+            <% } %>
+			</td>
+            <% } %>
+        </tr>
+		<% i++; }); %>
+      </tbody>
+    </table>
+
+	<% if(priv == 'A'){ %>
+<div class="row">
+    <div class="col-md-8  col-md-push-4">
+    <form method="POST" action="/mobility/uploadVnfNetworkData" enctype="multipart/form-data">
+        <div class="form-group">
+            <label for="dest">Upload pre processed JSON file.</label>
+            <input name="filename" type="file" id="dest" />
+            <p class="help-block">Choose a JSON file to upload.</p>
+            <button type="button" class="btn btn-default"
+                data-toggle="tooltip" data-placement="bottom"
+                title="Upload a JSON file that has already been pre processed."
+                onclick="uploadFile(this.form);">Upload JSON File
+			</button>
+        </div>
+    </form>
+    </div>
+    <div class="col-md-4 col-md-pull-8">
+    <form method="POST" action="/preload/uploadNetworkCsv" enctype="multipart/form-data">
+        <div class="form-group">
+            <label for="dest">Upload Worksheet CSV files from the <%= preloadImportDirectory %> directory.</label>
+            <input name="filename" type="file" id="dest" multiple />
+            <p class="help-block">Choose Worksheet CSV files to upload.</p>
+            <button type="button" class="btn btn-default"
+                data-toggle="tooltip" data-placement="bottom"
+                title="Must upload all the VNF CSV files from <%= preloadImportDirectory %>"
+                onclick="importWorksheet(this.form);">Upload Network Worksheet CSV files
+            </button>
+        </div>
+    </form>
+    </div>
+</div>
+    <% } %>
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+
+function importWorksheet(form)
+{
+    if ( form.filename.value.length == 0)
+    {
+        bootbox.alert('Must select a file.');
+        return false;
+    }
+    else {
+
+        bootbox.confirm({
+            message: "Are you sure you want to import Network WORKSHEET .csv files from <%= preloadImportDirectory %>",
+            callback: function(result) {
+                if ( result )
+                {
+                    form.submit();
+                }
+                return;
+            },
+            buttons: {
+                cancel: {
+                    label: "Cancel"
+                },
+                confirm: {
+                    label: "Yes"
+                }
+            }
+        });
+    }
+}
+
+function getVnfNetworkData(network_name,network_type)
+{
+	location.assign("/mobility/viewVnfNetworkData?network_name=" + network_name + "&network_type=" + network_type );
+	return;
+}
+function loadVnfNetworkData(id,svc_request_id,svc_action,status,filename,ts)
+{
+	if ( status != 'pending' )
+	{
+		bootbox.alert("Upload Status must be in 'pending' state.");
+		return;
+	}
+	bootbox.confirm({
+        message: "Are you sure you want to load file [" + filename + "]? ",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/mobility/loadVnfNetworkData?id=" + id + "&svc_request_id=" + svc_request_id + "&filename=" + filename + "&status=" + status);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+function deleteVnfNetworkData(id,svc_request_id,filename,status,network_name,network_type) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete uploaded file [" + filename + "]? ",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/mobility/deleteVnfNetworkData?id=" 
+					+ id 
+					+ "&svc_request_id=" + svc_request_id 
+					+ "&filename=" + filename 
+					+ "&status=" + status
+					+ "&network_name=" + network_name
+					+ "&network_type=" + network_type);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/mobility/vnfProfile.ejs b/sdnc-a1-controller/oam/admportal/views/mobility/vnfProfile.ejs
new file mode 100644
index 0000000..a801b90
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/mobility/vnfProfile.ejs
@@ -0,0 +1,178 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_profile').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>VNF Profile </h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<% if (priv == 'A'){ %>
+	<div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary btn-md" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+	</div>
+	<% } %>
+
+	<table id="vnf_profile" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*VNF_TYPE</th>
+		  <th>AVAILABILITY_ZONE_COUNT</th>
+		  <th>EQUIPMENT_ROLE</th>
+		  <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+		<% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.vnf_type %></td>
+            <td><%= row.availability_zone_count %></td>
+            <td><%= row.equipment_role %></td>
+			<% if(priv == 'A' ) { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                   onclick="deleteVnfProfile('<%= row.vnf_type %>');">Delete</button>
+            </td>
+            <% } %>
+        </tr>
+		<% }); %>
+      </tbody>
+    </table>
+
+	<% if(priv == 'A'){ %>
+	<div class="actions" style="padding:0px 25px;">
+	<form method="POST" action="/mobility/uploadVnfProfile" enctype="multipart/form-data">
+		<input type="hidden" name="_csrf" value="<%= privilege.csrfToken %>" />
+		<div class="form-group">
+    		<label for="dest">File input</label>
+    		<input name="filename" type="file" id="dest">
+    		<p class="help-block">Choose a file to upload.</p>
+  		</div>
+        <button type="button" class="btn btn-default"
+                onclick="uploadFile(this.form);">Upload File</button>
+	</form>
+	</div>
+	<% } %>
+</div>
+
+<% include ../partials/vnf_profile %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+
+function addVnfProfile(form)
+{
+	var errorMsg='';
+	var vnf_type='';
+	var availability_zone_count='';
+	var equipment_role='';
+
+	if ( form.name == 'addForm' )
+	{
+		vnf_type = form.nf_vnf_type;
+		availability_zone_count = form.nf_availability_zone_count;
+		equipment_role = form.nf_equipment_role;
+	}
+
+	if ( (vnf_type.value == null) || (vnf_type.value == "") || isblank(vnf_type.value) )
+	{
+		errorMsg += 'VNF Type is required.<br>';
+	}
+	if ( (availability_zone_count.value == null) || (availability_zone_count.value == "") || isblank(availability_zone_count.value) )
+	{
+		errorMsg += 'Availability Zone Count is a required field.<br>';
+	}
+	if ( (equipment_role.value == null) || (equipment_role.value == "") || isblank(equipment_role.value) )
+	{
+		errorMsg += 'Equipment Role is a required field.<br>';
+	}
+	if( errorMsg.length > 0 ) {
+		bootbox.alert(errorMsg);
+		return;
+	}
+	if ( availability_zone_count.value.length > 0 && !isDigit(availability_zone_count.value) )
+    {
+        bootbox.alert('Availability Zone Count must be a number.');
+        return;
+    }
+	form.submit();
+}
+
+function deleteVnfProfile(vnf_type) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete VNF_PROFILE [" + vnf_type + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/mobility/deleteVnfProfile?vnf_type=" + vnf_type);
+
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/odl/cluster_status.ejs b/sdnc-a1-controller/oam/admportal/views/odl/cluster_status.ejs
new file mode 100644
index 0000000..e7590df
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/odl/cluster_status.ejs
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>SDN-C Cluster Status</h3>
+</div>
+
+
+<div class="container-fluid">
+	<table class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>ShardName</th>
+		  <th>Status</th>
+          <th>Leader</th>
+          <th>RaftState</th>
+		  <th>View Response</th>
+        </tr>
+      </thead>
+      <tbody>
+		 <% var i=0; if (response_obj != 'undefined' )  {
+			 response_obj.forEach(function(request) { %>
+
+		<% if ( request.status == '200' ){ %>
+
+			<tr>
+            <td><%= request['value']['ShardName'] %></td>
+            <td><%= request.status %></td>
+            <td><%= request['value']['Leader'] %></td>
+            <td><%= request['value']['RaftState'] %></td>
+            <td>
+                <a class="btn btn-link" data-toggle="collapse"
+                    href="#collapseExample<%= i %>" aria-expanded="false"
+                    aria-controls="collapseExample"><%= request['value']['ShardName'] %>
+                </a>
+                <div class="collapse" id="collapseExample<%= i %>">
+                    <div class="well">
+                        <pre><%= JSON.stringify(request,null,4) %></pre>
+                    </div>
+                </div>
+           </td>
+        </tr>
+		<% } else { %>
+			 <tr>
+                <td>&nbsp;</td>
+                <td><%= request.status %></td>
+                <td>&nbsp;</td>
+                <td>&nbsp;</td>
+                <td>
+                <a class="btn btn-link" data-toggle="collapse"
+                    href="#collapseExample<%= i %>" aria-expanded="false"
+                    aria-controls="collapseExample">View
+                </a>
+                <div class="collapse" id="collapseExample<%= i %>">
+                    <div class="well">
+                        <pre><%= JSON.stringify(request,null,4) %></pre>
+                    </div>
+                </div>
+                </td>
+            </tr>
+
+		<% } %>
+		<% i++; }); }; %>
+
+      </tbody>
+    </table>
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/odl/listVRlan.ejs b/sdnc-a1-controller/oam/admportal/views/odl/listVRlan.ejs
new file mode 100644
index 0000000..93eedac
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/odl/listVRlan.ejs
@@ -0,0 +1,1069 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <title>SDN-C AdminPortal</title>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+</head>
+<body>
+
+<h2>VR-LAN</h2>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+<div class="container-fluid">
+<div class="content">
+
+<% if ( typeof response_obj['vr-lan']['routing-protocol'] != 'undefined' ){ %>
+	<div class="content">
+	service-instance-id: <%= svc_instance_id %><br>
+	routing-protocol   : <%= response_obj['vr-lan']['routing-protocol'] %>
+	</div>
+<% } %>
+
+<table class="tree">
+
+<% var i=1; root_node=1;
+if ( typeof response_obj['vr-lan'] != 'undefined' )  
+{
+	if( typeof response_obj['vr-lan']['vr-lan-interface'] != 'undefined' )
+	{
+       	response_obj['vr-lan']['vr-lan-interface'].forEach(function(request) { 
+		var root_node = i %>
+
+		<tr class="treegrid-<%= i %>">
+            <td>vr-lan-interface</td>
+		</tr>
+		<% i++; %>
+
+		<% if ( request['vr-designation'] != 'undefined')
+		{
+			var vr_designation = request['vr-designation'];
+		} %> 
+
+		<tr class="treegrid-<%= i %> treegrid-parent-<%= root_node %>">
+        <td>
+			<a href="javascript:vrlan_interface(
+               '<%= svc_instance_id %>',
+               '<%= request['vr-designation'] %>',
+               '<%= request['v6-vr-lan-prefix'] %>',
+               '<%= request['v6-vr-lan-prefix-length'] %>',
+               '<%= request['v6-vce-wan-address'] %>',
+               '<%= request['v4-vr-lan-prefix-length'] %>',
+               '<%= request['v4-vr-lan-prefix'] %>',
+               '<%= request['t-defaulted-v6-vrlan'] %>',
+               '<%= request['v4-vce-loopback-address'] %>');">vr-lan-interface</a>
+		</td>
+		</tr>
+		<% i++; %>
+
+		<% if ( (typeof request['v6-public-lan-prefixes'] != 'undefined') && (typeof request['v6-public-lan-prefixes']['t-provided-v6-lan-public-prefixes'] != 'undefined') )
+        { %>
+        	<% request['v6-public-lan-prefixes']['t-provided-v6-lan-public-prefixes'].forEach(function(trequest){ var t_v6_root = i; %>
+				<tr class="treegrid-<%= i %> treegrid-parent-<%= root_node %>">
+				<td>v6-public-lan-prefixes</td>
+				</tr>
+				<% i++; %>
+				<tr class="treegrid-<%= i %> treegrid-parent-<%= t_v6_root %>">
+				<td>
+					<a href="javascript:t_provided_v6_prefixes(
+                       '<%= svc_instance_id %>',
+                       '<%= trequest['request-index'] %>',
+                       '<%= trequest['v6-next-hop-address'] %>',
+                       '<%= trequest['v6-lan-public-prefix-length'] %>',
+                       '<%= trequest['v6-lan-public-prefix'] %>');">t-provided-v6-lan-public-prefixes</a>
+				</td>
+				</tr>
+				<% i++; %>
+            <% }); %>
+        <% } %>
+
+		<% if ( typeof request['dhcp'] != 'undefined' )
+        { %>
+			<% var dhcp_node = i; %>
+			<tr class="treegrid-<%= i %> treegrid-parent-<%= root_node %>">
+			<td>dhcp</td>
+			</tr>
+			<% i++; %>
+
+			<tr class="treegrid-<%= i %> treegrid-parent-<%= dhcp_node %>">
+            <td>
+                <a href="javascript:dhcp(
+                   '<%= svc_instance_id %>',
+                   '<%= request['dhcp']['use-v4-default-pool'] %>',
+                   '<%= request['dhcp']['use-v6-default-pool'] %>',
+                   '<%= request['dhcp']['v4-dhcp-server-enabled'] %>',
+                   '<%= request['dhcp']['v6-dhcp-server-enabled'] %>',
+                   '<%= request['dhcp']['v6-dhcp-default-pool-prefix'] %>',
+                   '<%= request['dhcp']['v6-dhcp-default-pool-prefix-length'] %>',
+                   '<%= request['dhcp']['v4-dhcp-default-pool-prefix'] %>',
+                   '<%= request['dhcp']['v4-dhcp-default-pool-prefix-length'] %>');">dhcp</a>
+            </td>
+            </tr>
+			<% i++; %>
+
+			<% if ( typeof request['dhcp']['v4-dhcp-pools'] != 'undefined' )
+            { %>
+				<% var v4_dhcp_pools_node = i; %>
+				<tr class="treegrid-<%= i %> treegrid-parent-<%= dhcp_node %>">
+				<td>v4-dhcp-pool</td>
+				</tr>
+				<% i++; %>
+
+                <% request['dhcp']['v4-dhcp-pools'].forEach(function(v4request)
+                { %>
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= dhcp_node %>">
+                    <td>
+                        <a href="javascript:v4_dhcp_pools(
+                        '<%= svc_instance_id %>',
+                        '<%= v4request['v4-dhcp-relay-next-hop-address'] %>',
+                        '<%= v4request['v4-dhcp-pool-prefix'] %>',
+                        '<%= v4request['v4-dhcp-pool-prefix-length'] %>',
+                        '<%= v4request['v4-dhcp-relay-gateway-address'] %>');">v4-dhcp-pools</a>
+                    </td>
+                    </tr>
+                    <% i++; %>
+
+					<% if ( typeof v4request['excluded-v4-address'] != 'undefined' )
+                    { %>
+						<% var excluded_v4_address_node = i; %>
+						<tr class="treegrid-<%= i %> treegrid-parent-<%= v4_dhcp_node %>">
+							<td>exluded-v4-address</td>
+						</tr>
+						<% i++; %>
+
+                        <% v4request['excluded-v4-addresses'].forEach(function(ex_request)
+                        { %>
+                            <tr class="treegrid-<%= i %> treegrid-parent-<%= excluded_v4_address_node %>">
+                            <td>
+                                <a href="javascript:excluded_v4_address(
+                                '<%= svc_instance_id %>',
+                                '<%= ex_request['excluded-v4-address'] %>');">excluded-v4-address</a>
+                            </td>
+                            </tr>
+                            <% i++; %>
+                        <% }); %>
+                    <% } %>
+                <% }); %>
+        	<% } %>
+
+			<% if ( typeof request['dhcp']['excluded-v4-dhcp-addresses-from-default-pool'] != 'undefined' )
+            { %>
+				<% var exc_v4_address_node = i; %>
+				<tr class="treegrid-<%= i %> treegrid-parent-<%= dhcp_node %>">
+				<td>excluded-v4-dhcp-addresses-from-default-pool</td>
+				</tr>
+				<% i++; %>
+				
+				<% request['dhcp']['excluded-v4-dhcp-addresses-from-default-pool'].forEach(function(ex_request)
+                { %>
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= exc_v4_address_node %>">
+					<td>
+                        <a href="javascript:excluded_v4_addresses_from_default_pool(
+                        '<%= svc_instance_id %>',
+                        '<%= ex_request['excluded-v4-address'] %>');">excluded-v4-dhcp-addresses-from-default-pool</a>
+                    </td>
+                    </tr>
+                    </tr>
+                    <% i++; %>
+				<% }); %>
+			<% } %>
+
+			<% if ( typeof request['dhcp']['v6-dhcp-pools'] != 'undefined' )
+            { %>
+				<% var v6_dhcp_pools_node = i; %>
+                <tr class="treegrid-<%= i %> treegrid-parent-<%= dhcp_node %>">
+                <td>v6-dhcp-pool</td>
+                </tr>
+                <% i++; %>
+
+                <% request['dhcp']['v6-dhcp-pools'].forEach(function(v6request)
+                { %>
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= dhcp_node %>">
+                    <td>
+                        <a href="javascript:v6_dhcp_pools(
+                        '<%= svc_instance_id %>',
+                        '<%= v6request['v6-dhcp-relay-next-hop-address'] %>',
+                        '<%= v6request['v6-dhcp-pool-prefix'] %>',
+                        '<%= v6request['v6-dhcp-pool-prefix-length'] %>',
+                        '<%= v6request['v6-dhcp-relay-gateway-address'] %>');">v6-dhcp-pools</a>
+                    </td>
+                    </tr>
+                    <% i++; %>
+
+                    <% if ( typeof v4request['excluded-v6-addresses'] != 'undefined' )
+                    { %>
+                        <% var excluded_v6_address_node = i; %>
+                        <tr class="treegrid-<%= i %> treegrid-parent-<%= v6_dhcp_node %>">
+                            <td>exluded-v6-address</td>
+                        </tr>
+                        <% i++; %>
+
+                        <% v6request['excluded-v6-addresses'].forEach(function(ex_request)
+                        { %>
+                            <tr class="treegrid-<%= i %> treegrid-parent-<%= excluded_v6_address_node %>">
+                            <td>
+                                <a href="javascript:excluded_v6_address(
+                                '<%= svc_instance_id %>',
+                                '<%= ex_request['excluded-v6-address'] %>');">excluded-v6-address</a>
+                            </td>
+                            </tr>
+                            <% i++; %>
+                        <% }); %>
+                    <% } %>
+                <% }); %>
+			<% } %>
+
+			<% if ( typeof request['dhcp']['excluded-v6-dhcp-addresses-from-default-pool'] != 'undefined' )
+            { %>
+				<% var exc_v6_address_node = i; %>
+                <tr class="treegrid-<%= i %> treegrid-parent-<%= dhcp_node %>">
+                <td>excluded-v6-dhcp-addresses-from-default-pool</td>
+                </tr>
+                <% i++; %>
+
+                <% request['dhcp']['excluded-v6-dhcp-addresses-from-default-pool'].forEach(function(ex_request)
+                { %>
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= exc_v6_address_node %>">
+                    <td>
+                        <a href="javascript:excluded_v6_addresses_from_default_pool(
+                        '<%= svc_instance_id %>',
+                        '<%= ex_request['excluded-v6-address'] %>');">excluded-v6-dhcp-addresses-from-default-pool</a>
+                    </td>
+                    </tr>
+                    </tr>
+                    <% i++; %>
+                <% }); %>
+			<% } %>
+		<% } %>
+
+		<% if ( typeof request['firewall-lite'] != 'undefined' )
+        { %>
+			<% var firewall_lite_node = i; %>
+			<tr class="treegrid-<%= i %> treegrid-parent-<%= root_node %>">
+				<td>firewall-lite</td>
+			</tr>
+			<% i++; %>
+
+			<tr class="treegrid-<%= i %> treegrid-parent-<%= firewall_lite_node %>">
+            <td>
+                <a href="javascript:firewall_lite(
+                '<%= svc_instance_id %>',
+				'<%= vr_designation %>',
+                '<%= request['firewall-lite']['stateful-firewall-lite-v6-enabled'] %>',
+                '<%= request['firewall-lite']['stateful-firewall-lite-v4-enabled'] %>');">firewall-lite</a>
+            </td>
+            </tr>
+            <% i++; %>
+
+			<% if ( typeof request['firewall-lite']['v6-firewall-packet-filters'] != 'undefined' )
+            {
+                var v6_firewall_packet_filters_node = i; %>
+                <tr class="treegrid-<%= i %> treegrid-parent-<%= firewall_lite_node %>">
+                    <td>v6-firewall-packet-filters</td>
+                </tr>
+                <% i++; %>
+
+                <% request['firewall-lite']['v6-firewall-packet-filters'].forEach(function(v6request)
+                { %>
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= v6_firewall_packet_filters_node %>">
+                    <td>
+                        <a href="javascript:v6_firewall_packet_filters(
+                                    '<%= svc_instance_id %>',
+                                    '<%= v6request['v6-firewall-prefix'] %>',
+                                    '<%= v6request['v6-firewall-prefix-length'] %>',
+                                    '<%= v6request['allow-icmp-ping'] %>');">v6-firewall-packet-filters</a>
+                    </td>
+                    </tr>
+                    <% i++; %>
+
+                    <% if ( typeof v6request['udp-port-list'] != 'undefined' )
+                    { %>
+                        <% v6request['udp-port-list'].forEach(function(udp_request)
+                        { %>
+                            <tr class="treegrid-<%= i %> treegrid-parent-<%= v6_firewall_packet_filters_node %>">
+                            <td>
+                                <a href="javascript:udp_port_list(
+                                '<%= svc_instance_id %>',
+                                '<%= udp_request['port-number'] %>');">udp-port-list</a>
+                            </td>
+                            </tr>
+                            <% i++; %>
+                        <% }); %>
+                    <% } %>
+                    <% if ( typeof v6p_request['tcp-port-list'] != 'undefined' )
+                    { %>
+                        <% v6request['tcp-port-list'].forEach(function(tcp_request)
+                        { %>
+                            <tr class="treegrid-<%= i %> treegrid-parent-<%= v6_firewall_packet_filters_node %>">
+                            <td>
+                                <a href="javascript:tcp_port_list(
+                                '<%= svc_instance_id %>',
+                                '<%= tcp_request['port-number'] %>');">tcp-port-list</a>
+                            </td>
+                            </tr>
+                            <% i++; %>
+                        <% }); %>
+                    <% } %>
+                <% }); %>
+            <% } %>
+			<% if ( typeof request['firewall-lite']['v4-firewall-packet-filters'] != 'undefined' )
+            {
+                var v4_firewall_packet_filters_node = i; %>
+                <tr class="treegrid-<%= i %> treegrid-parent-<%= firewall_lite_node %>">
+                    <td>v4-firewall-packet-filters</td>
+                </tr>
+                <% i++; %>
+
+                <% request['firewall-lite']['v4-firewall-packet-filters'].forEach(function(v4request)
+                { %>
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= v4_firewall_packet_filters_node %>">
+                    <td>
+                        <a href="javascript:v4_firewall_packet_filters(
+                                    '<%= svc_instance_id %>',
+                                    '<%= v4request['v4-firewall-prefix'] %>',
+                                    '<%= v4request['v4-firewall-prefix-length'] %>',
+                                    '<%= v4request['allow-icmp-ping'] %>');">v4-firewall-packet-filters</a>
+                    </td>
+                    </tr>
+                    <% i++; %>
+
+                    <% if ( typeof v4request['udp-port-list'] != 'undefined' )
+                    { %>
+                        <% v4request['udp-port-list'].forEach(function(udp_request)
+                        { %>
+                            <tr class="treegrid-<%= i %> treegrid-parent-<%= v4_firewall_packet_filters_node %>">
+                            <td>
+                                <a href="javascript:udp_port_list(
+                                '<%= svc_instance_id %>',
+                                '<%= udp_request['port-number'] %>');">udp-port-list</a>
+                            </td>
+                            </tr>
+                            <% i++; %>
+                        <% }); %>
+                    <% } %>
+                    <% if ( typeof v4p_request['tcp-port-list'] != 'undefined' )
+                    { %>
+                        <% v4request['tcp-port-list'].forEach(function(tcp_request)
+                        { %>
+                            <tr class="treegrid-<%= i %> treegrid-parent-<%= v4_firewall_packet_filters_node %>">
+                            <td>
+                                <a href="javascript:tcp_port_list(
+                                '<%= svc_instance_id %>',
+                                '<%= tcp_request['port-number'] %>');">tcp-port-list</a>
+                            </td>
+                            </tr>
+                            <% i++; %>
+                        <% }); %>
+                    <% } %>
+                <% }); %>
+            <% } %>
+
+		<% } %>
+
+		<% if ( typeof request['static-routes'] != 'undefined' )
+		{ 
+			var static_route_node = i; %>
+			<tr class="treegrid-<%= i %> treegrid-parent-<%= root_node %>">
+        	<td>static-routes</td>
+			</tr>
+			<% i++; %>
+            <% if ( typeof request['static-routes']['v6-static-routes'] != 'undefined' )
+            { %>
+				<% v6_static_route = i %>
+				<tr class="treegrid-<%= i %> treegrid-parent-<%= static_route_node %>">
+				<td>v6-static-routes</td>
+				</tr>
+				<% i++; %>
+			
+                <% request['static-routes']['v6-static-routes'].forEach(function(strequest){ %>
+					<tr class="treegrid-<%= i %> treegrid-parent-<%= v6_static_route %>">
+					<td>
+						<a href="javascript:v6_static_routes(
+                       	'<%= svc_instance_id %>',
+                        '<%= strequest['v6-static-route-prefix'] %>',
+                        '<%= strequest['v6-next-hop-address'] %>',
+                        '<%= strequest['v6-static-route-prefix-length'] %>');">v6-static-routes</a>
+					</td>
+					</tr>
+					<% i++; %>
+                <% }); %>
+            <% } %>
+            <% if ( typeof request['static-routes']['v4-static-routes'] != 'undefined' )
+            { %>
+				<% v4_static_route = i %>
+				<tr class="treegrid-<%= i %> treegrid-parent-<%= static_route_node %>">
+				<td>v4-static-routes</td>
+				</tr>
+				<% i++; %>
+                <% request['static-routes']['v4-static-routes'].forEach(function(v4request)
+				{ %>
+					<tr class="treegrid-<%= i %> treegrid-parent-<%= v4_static_route %>">
+					<td>
+						<a href="javascript:v4_static_routes(
+                       	'<%= svc_instance_id %>',
+                        '<%= v4request['v4-static-route-prefix'] %>',
+                        '<%= v4request['v4-next-hop-address'] %>',
+                        '<%= v4request['v4-static-route-prefix-length'] %>');">v4-static-routes</a>
+					</td>
+					</tr>
+					<% i++; %>
+                <% }); %>
+			<% } %>
+		<% } %>
+		<% if ( typeof request['pat'] != 'undefined' )
+        { %>
+			<% var pat_node = i %>
+			<tr class="treegrid-<%= i %> treegrid-parent-<%= root_node %>">
+				<td>pat</td>
+			</tr>
+			<% i++; %>
+
+			<tr class="treegrid-<%= i %> treegrid-parent-<%= pat_node %>">
+			<td>
+				<a href="javascript:pat(
+               	'<%= svc_instance_id %>',
+               	'<%= request['pat']['v4-pat-default-pool-prefix-length'] %>',
+               	'<%= request['pat']['use-v4-default-pool'] %>',
+               	'<%= request['pat']['v4-pat-enabled'] %>',
+               	'<%= request['pat']['v4-pat-default-pool-prefix'] %>');">pat</a>
+			</td>
+			</tr>
+			<% i++; %>
+
+			<% if ( typeof request['pat']['v4-pat-pools'] != 'undefined' )
+			{ 
+				var pat_pools_node = i %>
+				<tr class="treegrid-<%= i %> treegrid-parent-<%= pat_node %>">
+					<td>v4-pat-pools</td>
+				</tr>
+				<% i++; %>
+
+        		<% request['pat']['v4-pat-pools'].forEach(function(trequest)
+				{ %>
+				<tr class="treegrid-<%= i %> treegrid-parent-<%= pat_pools_node %>">
+				<td>
+					<a href="javascript:pat_pools(
+                    '<%= svc_instance_id %>',
+                    '<%= trequest['v4-pat-pool-next-hop-address'] %>',
+                    '<%= trequest['v4-pat-pool-prefix-length'] %>',
+                    '<%= trequest['v4-pat-pool-prefix'] %>');">v4-pat-pools</a>
+				</td>
+				</tr>
+				<% }); %> 
+				<% i++; %>
+			
+        	<% } %>
+		<% } %>
+		<% if ( typeof request['nat'] != 'undefined' )
+        { %>
+            <% var nat_node = i %>
+            <tr class="treegrid-<%= i %> treegrid-parent-<%= root_node %>">
+                <td>nat</td>
+            </tr>
+            <% i++; %>
+
+            <tr class="treegrid-<%= i %> treegrid-parent-<%= nat_node %>">
+            <td>
+                <a href="javascript:nat(
+                '<%= svc_instance_id %>',
+                '<%= request['pat']['v4-nat-enabled'] %>');">nat</a>
+            </td>
+            </tr>
+            <% i++; %>
+
+            <% if ( typeof request['nat']['v4-nat-mapping-entries'] != 'undefined' )
+            {
+                var nat_mapping_node = i %>
+                <tr class="treegrid-<%= i %> treegrid-parent-<%= nat_node %>">
+                    <td>v4-nat-mapping-entries</td>
+                </tr>
+                <% i++; %>
+
+                <% request['nat']['v4-nat-mapping-entries'].forEach(function(trequest)
+                { %>
+                <tr class="treegrid-<%= i %> treegrid-parent-<%= nat_mapping_node %>">
+                <td>
+                    <a href="javascript:v4_nat_mapping_entries(
+                    '<%= svc_instance_id %>',
+                    '<%= trequest['v4-nat-external'] %>',
+                    '<%= trequest['v4-nat-next-hop-address'] %>',
+                    '<%= trequest['v4-nat-internal'] %>');">v4-nat-mapping-entries</a>
+                </td>
+                </tr>
+                <% }); %>
+                <% i++; %>
+
+            <% } %>
+        <% } %>
+
+		<% if ( (typeof request['v4-public-lan-prefixes'] != 'undefined') && (typeof request['v4-public-lan-prefixes']['t-provided-v4-lan-public-prefixes'] != 'undefined') )
+        { %>
+        	<% request['v4-public-lan-prefixes']['t-provided-v4-lan-public-prefixes'].forEach(function(trequest){ 
+				var v4_public_root = i; %>
+				<tr class="treegrid-<%= i %> treegrid-parent-<%= root_node %>">
+				<td>v4-public-lan-prefixes</td>
+				</tr>
+				<% i++; %>
+				<tr class="treegrid-<%= i %> treegrid-parent-<%= v4_public_root %>">
+				<td>
+					<a href="javascript:t_provided_v4_prefixes(
+                    '<%= svc_instance_id %>',
+                    '<%= trequest['request-index'] %>',
+                    '<%= trequest['v4-lan-public-prefix-length'] %>',
+                    '<%= trequest['v4-lan-public-prefix'] %>');">t-provided-v4-lan-public-prefixes</a>
+				</td>
+				</tr>
+				<% i++; %>
+            <% }); %>
+        <% } %>
+		<% }); 
+	} 
+} else { %>
+			<div><pre>no data</pre></div>
+<% } %>
+</table>
+</div>
+</div>
+
+   <% include ../partials/vr_lan_interface %>
+   <% include ../partials/dhcp %>
+   <% include ../partials/v4_dhcp_pools %>
+   <% include ../partials/v6_dhcp_pools %>
+   <% include ../partials/excluded_v4_address %>
+   <% include ../partials/excluded_v4_address_from_default_pool %>
+   <% include ../partials/excluded_v6_address_from_default_pool %>
+   <% include ../partials/t_provided_v6_lan_public_prefixes %>
+   <% include ../partials/firewall_lite %>
+   <% include ../partials/v6_static_routes %>
+   <% include ../partials/v4_static_routes %>
+   <% include ../partials/pat %>
+   <% include ../partials/pat_pools %>
+   <% include ../partials/nat %>
+   <% include ../partials/v4_nat_mapping_entries %>
+   <% include ../partials/t_provided_v4_lan_public_prefixes %>
+   <% include ../partials/v6_firewall_packet_filters %>
+   <% include ../partials/v4_firewall_packet_filters %>
+   <% include ../partials/udp_port_list %>
+   <% include ../partials/tcp_port_list %>
+   <footer>
+       <% include ../partials/footer %>
+   </footer>
+    
+<script type="text/javascript">
+
+$(document).ready(function() {
+        $('.tree').treegrid( { initialState: 'collapsed' } );
+});
+
+function excluded_v4_addresses_from_default_pool(svc_instance_id, excluded_v4_address)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('excluded_v4_address_from_default_pool');
+    if( excluded_v4_address != 'undefined' ){
+        lvalue.value=excluded_v4_address;
+    } else {
+        lvalue.value='';
+    }
+    $('#excluded-v4-address-from-default-pool-modal').modal('show');
+}
+function excluded_v6_addresses_from_default_pool(svc_instance_id, excluded_v6_address)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('excluded_v6_address');
+    if( excluded_v6_address != 'undefined' ){
+        lvalue.value=excluded_v6_address;
+    } else {
+        lvalue.value='';
+    }
+    $('#excluded-v6-address-modal').modal('show');
+}
+function excluded_v4_addresses_from_default_pool(svc_instance_id, excluded_v4_address)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('excluded_v4_address');
+    if( excluded_v4_address != 'undefined' ){
+        lvalue.value=excluded_v4_address;
+    } else {
+        lvalue.value='';
+    }
+    $('#excluded-v4-address-modal').modal('show');
+}
+function exluded_v4_address(svc_instance_id, excluded_v4_address)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('excluded_v4_address');
+    if( excluded_v4_address != 'undefined' ){
+        lvalue.value=excluded_v4_address;
+    } else {
+        lvalue.value='';
+    }
+    $('#excluded-v4-address-modal').modal('show');
+}
+
+function v6_dhcp_pools(svc_instance_id,v6_dhcp_relay_next_hop_address,v6_dhcp_pool_prefix,v6_dhcp_pool_prefix_length,v6_dhcp_relay_gateway_address)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v6_dhcp_relay_next_hop_address');
+    if( v6_dhcp_relay_next_hop_address != 'undefined' ){
+        lvalue.value=v6_dhcp_relay_next_hop_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_dhcp_pool_prefix');
+    if( v6_dhcp_pool_prefix != 'undefined' ){
+        lvalue.value=v6_dhcp_pool_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_dhcp_pool_prefix_length');
+    if( v6_dhcp_pool_prefix_length != 'undefined' ){
+        lvalue.value=v6_dhcp_pool_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_dhcp_relay_gateway_address');
+    if( v6_dhcp_relay_gateway_address != 'undefined' ){
+        lvalue.value=v6_dhcp_relay_gateway_address;
+    } else {
+        lvalue.value='';
+    }
+    $('#v6-dhcp-pools-modal').modal('show');
+}
+
+function v4_dhcp_pools(svc_instance_id,v4_dhcp_relay_next_hop_address,v4_dhcp_pool_prefix,v4_dhcp_pool_prefix_length,v4_dhcp_relay_gateway_address)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v4_dhcp_relay_next_hop_address');
+    if( v4_dhcp_relay_next_hop_address != 'undefined' ){
+        lvalue.value=v4_dhcp_relay_next_hop_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_dhcp_pool_prefix');
+    if( v4_dhcp_pool_prefix != 'undefined' ){
+        lvalue.value=v4_dhcp_pool_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_dhcp_pool_prefix_length');
+    if( v4_dhcp_pool_prefix_length != 'undefined' ){
+        lvalue.value=v4_dhcp_pool_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_dhcp_relay_gateway_address');
+    if( v4_dhcp_relay_gateway_address != 'undefined' ){
+        lvalue.value=v4_dhcp_relay_gateway_address;
+    } else {
+        lvalue.value='';
+    }
+    $('#v4-dhcp-pools-modal').modal('show');
+}
+
+function dhcp(svc_instance_id,use_v4_default_pool,use_v6_default_pool,v4_dhcp_server_enabled,v6_dhcp_server_enabled,v6_dhcp_default_pool_prefix,v6_dhcp_default_pool_prefix_length,v4_dhcp_default_pool_prefix,v4_dhcp_default_pool_prefix_length)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('use_v4_default_pool');
+    if( use_v4_default_pool != 'undefined' ){
+        lvalue.value=use_v4_default_pool;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('use_v6_default_pool');
+    if( use_v6_default_pool != 'undefined' ){
+        lvalue.value=use_v6_default_pool;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_dhcp_server_enabled');
+    if( v4_dhcp_server_enabled != 'undefined' ){
+        lvalue.value=v4_dhcp_server_enabled;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_dhcp_server_enabled');
+    if( v6_dhcp_server_enabled != 'undefined' ){
+        lvalue.value=v6_dhcp_server_enabled;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_dhcp_default_pool_prefix');
+    if( v6_dhcp_default_pool_prefix != 'undefined' ){
+        lvalue.value=v6_dhcp_default_pool_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_dhcp_default_pool_prefix_length');
+    if( v6_dhcp_default_pool_prefix_length != 'undefined' ){
+        lvalue.value=v6_dhcp_default_pool_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_dhcp_default_pool_prefix');
+    if( v4_dhcp_default_pool_prefix != 'undefined' ){
+        lvalue.value=v4_dhcp_default_pool_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_dhcp_default_pool_prefix_length');
+    if( v4_dhcp_default_pool_prefix_length != 'undefined' ){
+        lvalue.value=v4_dhcp_default_pool_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    $('#dhcp-modal').modal('show');
+}
+
+function tcp_port_list(svc_instance_id,tcp_port_number)
+{
+	document.getElementById('svc_instance_id').value = svc_instance_id;
+	var lvalue = document.getElementById('tcp_port_number');
+    if( tcp_port_number != 'undefined' ){
+    	lvalue.value=tcp_port_number;
+    } else {
+    	lvalue.value='';
+	}
+    $('#tcp-port-list-modal').modal('show');
+}
+function udp_port_list(svc_instance_id,udp_port_number)
+{
+	document.getElementById('svc_instance_id').value = svc_instance_id;
+	var lvalue = document.getElementById('udp_port_number');
+    if( udp_port_number != 'undefined' ){
+    	lvalue.value=udp_port_number;
+    } else {
+    	lvalue.value='';
+	}
+    $('#udp-port-list-modal').modal('show');
+}
+function v4_firewall_packet_filters(svc_instance_id,v4_firewall_prefix,v4_firewall_prefix_length,v4_allow_icmp_ping)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v4_firewall_prefix');
+    if( v4_firewall_prefix != 'undefined' ){
+        lvalue.value=v4_firewall_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_firewall_prefix_length');
+    if( v4_firewall_prefix_length != 'undefined' ){
+        lvalue.value=v4_firewall_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_allow_icmp_ping');
+    if( v4_allow_icmp_ping != 'undefined' ){
+        lvalue.value=v4_allow_icmp_ping;
+    } else {
+        lvalue.value='';
+    }
+    $('#v4-firewall-packet-filters-modal').modal('show');
+}
+
+function v6_firewall_packet_filters(svc_instance_id,v6_firewall_prefix,v6_firewall_prefix_length,v6_allow_icmp_ping)
+{
+	document.getElementById('svc_instance_id').value = svc_instance_id;
+	var lvalue = document.getElementById('v6_firewall_prefix');
+    if( v6_firewall_prefix != 'undefined' ){
+    	lvalue.value=v6_firewall_prefix;
+    } else {
+    	lvalue.value='';
+	}
+	lvalue = document.getElementById('v6_firewall_prefix_length');
+    if( v6_firewall_prefix_length != 'undefined' ){
+    	lvalue.value=v6_firewall_prefix_length;
+    } else {
+    	lvalue.value='';
+	}
+	lvalue = document.getElementById('v6_allow_icmp_ping');
+    if( v6_allow_icmp_ping != 'undefined' ){
+    	lvalue.value=v6_allow_icmp_ping;
+    } else {
+    	lvalue.value='';
+	}
+    $('#v6-firewall-packet-filters-modal').modal('show');
+} function nat(svc_instance_id,v4_nat_enabled) {
+	document.getElementById('svc_instance_id').value = svc_instance_id;
+	var lvalue = document.getElementById('v4_nat_enabled');
+    if( v4_nat_enabled != 'undefined' ){
+    	lvalue.value=v4_nat_enabled;
+    } else {
+    	lvalue.value='';
+	}
+    $('#nat-modal').modal('show');
+}
+function v4_nat_mapping_entries(svc_instance_id,v4_nat_external,v4_nat_next_hop_address,v4_nat_internal)
+{
+	document.getElementById('svc_instance_id').value = svc_instance_id;
+	var lvalue = document.getElementById('v4_nat_external');
+    if( v4_nat_external != 'undefined' ){
+    	lvalue.value=v4_nat_external;
+    } else {
+    	lvalue.value='';
+	}
+	lvalue = document.getElementById('v4_nat_next_hop_address');
+    if( v4_nat_next_hop_address != 'undefined' ){
+    	lvalue.value=v4_nat_next_hop_address;
+    } else {
+    	lvalue.value='';
+	}
+	lvalue = document.getElementById('v4_nat_internal');
+    if( v4_nat_internal != 'undefined' ){
+    	lvalue.value=v4_nat_internal;
+    } else {
+    	lvalue.value='';
+	}
+    $('#v4-nat-mapping-entries-modal').modal('show');
+}
+function pat_pools(svc_instance_id,v4_pat_pool_next_hop_address,v4_pat_pool_prefix_length,v4_pat_pool_prefix)
+{
+	document.getElementById('svc_instance_id').value = svc_instance_id;
+	var lvalue = document.getElementById('v4_pat_pool_next_hop_address');
+    if( v4_pat_pool_next_hop_address != 'undefined' ){
+    	lvalue.value=v4_pat_pool_next_hop_address;
+    } else {
+    	lvalue.value='';
+	}
+	lvalue = document.getElementById('v4_pat_pool_prefix_length');
+    if( v4_pat_pool_prefix_length != 'undefined' ){
+    	lvalue.value=v4_pat_pool_prefix_length;
+    } else {
+    	lvalue.value='';
+	}
+	lvalue = document.getElementById('v4_pat_pool_prefix');
+    if( v4_pat_pool_prefix != 'undefined' ){
+    	lvalue.value=v4_pat_pool_prefix;
+    } else {
+    	lvalue.value='';
+	}
+    $('#pat-pools-modal').modal('show');
+}
+function pat(svc_instance_id,v4_pat_default_pool_prefix_length,use_v4_default_pool,v4_pat_enabled,v4_pat_default_pool_prefix)
+{
+	document.getElementById('svc_instance_id').value = svc_instance_id;
+	var lvalue = document.getElementById('v4_pat_default_pool_prefix_length');
+    if( v4_pat_default_pool_prefix_length != 'undefined' ){
+    	lvalue.value=v4_pat_default_pool_prefix_length;
+    } else {
+    	lvalue.value='';
+	}
+
+	lvalue = document.getElementById('use_v4_default_pool');
+    if( use_v4_default_pool != 'undefined' ){
+    	lvalue.value = use_v4_default_pool;
+    } else {
+    	lvalue.value = '';
+    }
+
+	lvalue = document.getElementById('v4_pat_enabled');
+    if( v4_pat_enabled != 'undefined' ){
+    	lvalue.value = v4_pat_enabled;
+    } else {
+    	lvalue.value = '';
+	}
+
+	lvalue = document.getElementById('v4_pat_default_pool_prefix');
+    if( v4_pat_default_pool_prefix != 'undefined' ){
+    	lvalue.value = v4_pat_default_pool_prefix;
+    } else {
+    	lvalue.value = '';
+	}
+    $('#pat-modal').modal('show');
+}
+function v4_static_routes(svc_instance_id,v4_static_route_prefix,static_v4_next_hop_address,v4_static_route_prefix_length)
+{
+	document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v4_static_route_prefix');
+    if( v4_static_route_prefix != 'undefined' ){
+        lvalue.value=v4_static_route_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('static_v4_next_hop_address');
+    if( static_v4_next_hop_address != 'undefined' ){
+        lvalue.value=static_v4_next_hop_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_static_route_prefix_length');
+    if( v4_static_route_prefix_length != 'undefined' ){
+        lvalue.value=v4_static_route_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    $('#v4-static-routes-modal').modal('show');
+}
+
+function v6_static_routes(svc_instance_id,v6_static_route_prefix,static_v6_next_hop_address,v6_static_route_prefix_length)
+{
+	document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v6_static_route_prefix');
+    if( v6_static_route_prefix != 'undefined' ){
+        lvalue.value=v6_static_route_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('static_v6_next_hop_address');
+    if( static_v6_next_hop_address != 'undefined' ){
+        lvalue.value=static_v6_next_hop_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_static_route_prefix_length');
+    if( v6_static_route_prefix_length != 'undefined' ){
+        lvalue.value=v6_static_route_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    $('#v6-static-routes-modal').modal('show');
+}
+function firewall_lite(svc_instance_id,firewall_lite_vr_designation,stateful_firewall_lite_v4_enabled,stateful_firewall_lite_v6_enabled)
+{
+	document.getElementById('svc_instance_id').value = svc_instance_id;
+	document.getElementById('firewall_lite_vr_designation').value = firewall_lite_vr_designation;
+    var lvalue = document.getElementById('stateful_firewall_lite_v4_enabled');
+    if( stateful_firewall_lite_v4_enabled != 'undefined' ){
+        lvalue.value=stateful_firewall_lite_v4_enabled;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('stateful_firewall_lite_v6_enabled');
+    if( stateful_firewall_lite_v6_enabled != 'undefined' ){
+        lvalue.value=stateful_firewall_lite_v6_enabled;
+    } else {
+        lvalue.value='';
+    }
+    $('#firewall-lite-modal').modal('show');
+}
+function t_provided_v6_prefixes(svc_instance_id,v6_request_index,v6_lan_public_prefix_length,v6_lan_public_prefix)
+{
+	document.getElementById('svc_instance_id').value = svc_instance_id;
+	var lvalue = document.getElementById('v6_request_index'); 
+	if( v6_request_index != 'undefined' ){
+		lvalue.value=v6_request_index;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('v6_lan_public_prefix_length'); 
+	if( v6_lan_public_prefix_length != 'undefined' ){
+		lvalue.value=v6_lan_public_prefix_length;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('v6_lan_public_prefix'); 
+	if( v6_lan_public_prefix != 'undefined' ){
+		lvalue.value=v6_lan_public_prefix;
+	} else {
+		lvalue.value='';
+	}
+	$('#t-provided-v6-lan-public-prefixes-modal').modal('show');
+}
+function t_provided_v4_prefixes(svc_instance_id,v4_request_index,v4_lan_public_prefix_length,v4_lan_public_prefix)
+{
+	document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v4_request_index');
+    if( v4_request_index != 'undefined' ){
+        lvalue.value=v4_request_index;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_lan_public_prefix_length');
+    if( v4_lan_public_prefix_length != 'undefined' ){
+        lvalue.value=v4_lan_public_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_lan_public_prefix');
+    if( v4_lan_public_prefix != 'undefined' ){
+        lvalue.value=v4_lan_public_prefix;
+    } else {
+        lvalue.value='';
+    }
+    $('#t-provided-v4-lan-public-prefixes-modal').modal('show');
+}
+
+function vrlan_interface(svc_instance_id,vr_designation,v6_vr_lan_prefix, v6_vr_lan_prefix_length, v6_vce_wan_address, v4_vr_lan_prefix_length, v4_vr_lan_prefix, t_defaulted_v6_vrlan,v4_vce_loopback_address)
+{
+	document.getElementById('svc_instance_id').value = svc_instance_id;
+	var lvalue = document.getElementById('vr_designation'); 
+	if( vr_designation != 'undefined' ){
+		lvalue.value=vr_designation;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('v6_vr_lan_prefix'); 
+	if( v6_vr_lan_prefix != 'undefined' ){
+		lvalue.value=v6_vr_lan_prefix;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('v6_vr_lan_prefix_length'); 
+	if( v6_vr_lan_prefix_length != 'undefined' ){
+		lvalue.value=v6_vr_lan_prefix_length;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('v6_vce_wan_address'); 
+	if( v6_vce_wan_address != 'undefined' ){
+		lvalue.value=v6_vce_wan_address;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('v4_vr_lan_prefix_length'); 
+	if( v4_vr_lan_prefix_length != 'undefined' ){
+		lvalue.value=v4_vr_lan_prefix_length;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('v4_vr_lan_prefix'); 
+	if( v4_vr_lan_prefix != 'undefined' ){
+		lvalue.value=v4_vr_lan_prefix;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('v4_vce_loopback_address'); 
+	if( v4_vce_loopback_address != 'undefined' ){
+		lvalue.value=v4_vce_loopback_address;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('t_defaulted_v6_vrlan'); 
+	if( t_defaulted_v6_vrlan != 'undefined' ){
+		lvalue.value=t_defaulted_v6_vrlan;
+	} else {
+		lvalue.value='';
+	}
+	$('#vr-lan-interface-modal').modal('show');
+}
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/odl/listWklst.ejs b/sdnc-a1-controller/oam/admportal/views/odl/listWklst.ejs
new file mode 100644
index 0000000..432c207
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/odl/listWklst.ejs
@@ -0,0 +1,2224 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <title>SDN-C AdminPortal</title>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+
+<script type="text/javascript">
+$(document).ready(function() {
+        $('.tree').treegrid( { initialState: 'collapsed' } );
+});
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>L3SDN-API Services</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'><%=result.msg %></div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'><%=result.msg %></div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<div class="container-fluid">
+<div class="content">
+
+<table class="table tree table-hover table-condensed">
+<% var i=1; root_node=1;
+pageInfo.rows.forEach(function(request)
+{
+        root_node = i; %>
+
+		<tr class="treegrid-<%= i %>">
+		  	<td><%= request['service-instance-id'] %></td>
+		</tr>
+		<% i++; %>
+
+		<% if ( typeof request['service-status'] != 'undefined' )
+        { %>
+        	<tr class="treegrid-<%= i %>> treegrid-parent-<%= root_node %>">
+			<td>			
+				<a class=""
+                   		href="javascript:serviceStatus(
+                       '<%= request['service-status']['rpc-name'] %>',
+                       '<%= request['service-status']['final-indicator'] %>',
+                       '<%= request['service-status']['request-status'] %>',
+                       '<%= request['service-status']['rpc-action'] %>',
+                       '<%= request['service-status']['l3sdn-action'] %>',
+                       '<%= request['service-status']['l3sdn-subaction'] %>',
+                       '<%= request['service-status']['response-message'] %>',
+                       '<%= request['service-status']['response-code'] %>',
+                       '<%= request['service-status']['response-timestamp'] %>' );">service-status</a>
+			</td>
+			</tr>
+			<% i++; %>
+        <% } %>
+		<% if ( typeof request['service-data'] != 'undefined' )
+		{ %>
+			<% var service_data_node = i; %>
+        	<tr class="treegrid-<%= i %> treegrid-parent-<%= root_node %>">
+				<td> service-data</td>
+			</tr>
+			<% i++; %>
+
+			<% if ( typeof request['service-data']['internet-evc-access-information'] != 'undefined' )
+           	{ %>
+        		<tr class="treegrid-<%= i %> treegrid-parent-<%= service_data_node %>">
+				<td>
+                   	<a class=""
+                   		href="javascript:internetInfo(
+                       		'<%= request['service-data']['internet-evc-access-information']['ip-version'] %>',
+                       		'<%= request['service-data']['internet-evc-access-information']['internet-evc-speed-value'] %>',
+                       		'<%= request['service-data']['internet-evc-access-information']['internet-evc-speed-units'] %>');">internet-evc-access-information</a>
+				</td>
+				</tr>
+				<% i++; %>
+			<% } %>
+		<% if ( typeof request['service-data']['oper-status'] != 'undefined' )
+    	{ %>
+        	<tr class="treegrid-<%= i %> treegrid-parent-<%= service_data_node %>">
+			<td>
+			<a class=""
+           		href="javascript:operStatus(
+                    '<%= request['service-data']['oper-status']['order-status'] %>',
+                    '<%= request['service-data']['oper-status']['modify-timestamp'] %>',
+                    '<%= request['service-data']['oper-status']['last-svc-request-id'] %>',
+                    '<%= request['service-data']['oper-status']['last-sub-action'] %>',
+                    '<%= request['service-data']['oper-status']['t-defaulted-v6-vrlan'] %>',
+                    '<%= request['service-data']['oper-status']['last-action'] %>',
+                    '<%= request['service-data']['oper-status']['create-timestamp'] %>',
+                    '<%= request['service-data']['oper-status']['maintenance-indicator'] %>',
+                    '<%= request['service-data']['oper-status']['last-order-status'] %>');">oper-status</a>
+			</td>
+			</tr>
+			<% i = i+1; %>
+		<% } %>
+		<% if ( typeof request['service-data']['svc-topology-additional-data'] != 'undefined' )
+    	{ %>
+        	<tr class="treegrid-<%= i %> treegrid-parent-<%= service_data_node %>">
+			<td>
+			<a class=""
+           		href="javascript:svcTopo(
+               '<%= request['service-data']['svc-topology-additional-data']['svc-vnf-type'] %>');">svc-topology-additional-data</a>
+			</td>
+			</tr>
+			<% i = i+1; %>
+		<% }  %>
+		<% if ( typeof request['service-data']['request-information'] != 'undefined' )
+		{ %>
+        	<tr class="treegrid-<%= i %> treegrid-parent-<%= service_data_node %>">
+			<td>
+			<a class=""
+               href="javascript:reqInfo(
+               	'<%= request['service-data']['request-information']['notification-url'] %>',
+                '<%= request['service-data']['request-information']['source'] %>',
+                '<%= request['service-data']['request-information']['order-number'] %>',
+                '<%= request['service-data']['request-information']['request-id'] %>',
+                '<%= request['service-data']['request-information']['order-version'] %>',
+                '<%= request['service-data']['request-information']['request-action'] %>',
+                '<%= request['service-data']['request-information']['request-sub-action'] %>');">request-information</a>
+			</td>
+			</tr>
+			<% i = i+1; %>
+		<% } %>
+		<% if ( typeof request['service-data']['sdnc-request-header'] != 'undefined' )
+		{ %>
+        	<tr class="treegrid-<%= i %> treegrid-parent-<%= service_data_node %>">
+			<td>
+			<a class=""
+               href="javascript:reqHeader(
+               '<%= request['service-data']['sdnc-request-header']['svc-notification-url'] %>',
+               '<%= request['service-data']['sdnc-request-header']['svc-request-id'] %>',
+               '<%= request['service-data']['sdnc-request-header']['svc-action'] %>');">sdnc-request-header</a>
+			</td>
+			</tr>
+			<% i = i+1; %>
+		<% } %>
+		<% if ( typeof request['service-data']['l2-homing-information'] != 'undefined' )
+    	{ %>
+        	<tr class="treegrid-<%= i %> treegrid-parent-<%= service_data_node %>">
+			<td>
+				<a class=""
+               	href="javascript:l2Homing(
+               	'<%= request['service-data']['l2-homing-information']['evc-name'] %>',
+               	'<%= request['service-data']['l2-homing-information']['preferred-aic-clli'] %>',
+               	'<%= request['service-data']['l2-homing-information']['topology'] %>');">l2-homing-information</a>
+			</td>
+			</tr>
+			<% i = i+1; %>
+		<% } %>
+		<% if ( typeof request['service-data']['service-information'] != 'undefined' )
+    	{ %>
+        	<tr class="treegrid-<%= i %> treegrid-parent-<%= service_data_node %>">
+			<td>
+				<a class=""
+               href="javascript:svcInfo(
+               '<%= request['service-data']['service-information']['service-instance-id'] %>',
+               '<%= request['service-data']['service-information']['subscriber-name'] %>',
+               '<%= request['service-data']['service-information']['service-type'] %>');">service-information</a>
+			</td>
+			</tr>
+			<% i++; %>
+		<% } %>
+		<% if ( typeof request['service-data']['feature-list'] != 'undefined' )
+        { %>
+			<% var feature_list_node = i; %>
+        	<tr class="treegrid-<%= i %> treegrid-parent-<%= service_data_node %>">
+			<td> feature-list</td>
+			</tr>
+            <% i++; %>
+
+        	<% request['service-data']['feature-list'].forEach(function(request) 
+			{ %>
+            	<tr class="treegrid-<%= i %> treegrid-parent-<%= feature_list_node %>">
+            	<td>
+                	<a class=""
+               			href="javascript:feature_list(
+               			'<%= request['feature-instance-id'] %>',
+               			'<%= request['feature-instance-xpath'] %>',
+               			'<%= request['feature-sub-type'] %>',
+               			'<%= request['feature-type'] %>');">feature-list</a>
+            	</td>
+            	</tr>
+            	<% i++; %>
+			<% }); %>
+        <% } %>
+		<% if ( typeof request['service-data']['svc-config-additional-data'] != 'undefined' )
+		{ %>
+			<% var svc_config_additional_data_node = i; %>
+        	<tr class="treegrid-<%= i %> treegrid-parent-<%= service_data_node %>">
+			<td> svc-config-additional-data</td>
+			</tr>
+            <% i++; %>
+
+			<tr class="treegrid-<%= i %> treegrid-parent-<%= svc_config_additional_data_node %>">
+            <td>
+            	<a class=""
+                	href="javascript:svc_config_additional_data(
+                    '<%= request['service-data']['svc-config-additional-data']['management-ip'] %>');">management-ip</a>
+            </td>
+            </tr>
+            <% i++; %>
+		<% } %>
+		<% if ( typeof request['service-data']['equipment'] != 'undefined' )
+        { %>
+			<% var equipment_node = i; %>
+        	<tr class="treegrid-<%= i %> treegrid-parent-<%= service_data_node %>">
+			<td> equipment</td>
+			</tr>
+            <% i++; %>
+
+        	<% request['service-data']['equipment'].forEach(function(equip) 
+			{ %>
+				<tr class="treegrid-<%= i %> treegrid-parent-<%= equipment_node %>">
+                <td>
+                    <a class=""
+                        href="javascript:equipment(
+                        '<%= equip['equipment-role'] %>',
+                        '<%= equip['ipv4-oam-address'] %>',
+                        '<%= equip['ipv4-oam-gateway-address-prefix-length'] %>',
+                        '<%= equip['ptnii-name'] %>',
+                        '<%= equip['v4-loopback0-ip-address'] %>',
+                        '<%= equip['ipv4-oam-gateway-address'] %>');">equipment</a>
+                </td>
+                </tr>
+                <% i++; %>
+
+				<% if ( typeof equip['ipv4-infrastructure-static-route'] != 'undefined' )
+                { %>
+                    <% ipv4_infrastructure_static_route_node = i; %>
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= equipment_node %>">
+                    <td> ipv4-infrastructure-static-route</td>
+                    </tr>
+                    <% i++; %>
+			
+					<% equip['ipv4-infrastructure-static-route'].forEach(function(eroute)
+                    { %>
+                        <tr class="treegrid-<%= i %> treegrid-parent-<%= ipv4_infrastructure_static_route_node %>">
+                        <td>
+                            <a class=""
+                                href="javascript:ipv4_infrastructure_static_route(
+                                '<%= eroute['ipv4-outgoing-interface'] %>',
+                                '<%= eroute['ipv4-next-hop-address'] %>',
+                                '<%= eroute['ipv4-dest-prefix'] %>',
+                                '<%= eroute['ipv4-dest-prefix-length'] %>');">ipv4_infrastructure_static_route</a>
+                        </td>
+                        </tr>
+                        <% i++; %>
+                    <% }); %>
+                <% } %>
+				<% if ( typeof equip['ipv6-infrastructure-static-route'] != 'undefined' )
+                { %>
+                    <% ipv6_infrastructure_static_route_node = i; %>
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= equipment_node %>">
+                    <td> ipv6-infrastructure-static-route</td>
+                    </tr>
+                    <% i++; %>
+
+                    <% equip['ipv6-infrastructure-static-route'].forEach(function(eroute)
+                    { %>
+                        <tr class="treegrid-<%= i %> treegrid-parent-<%= ipv6_infrastructure_static_route_node %>">
+                        <td>
+                            <a class=""
+                                href="javascript:ipv6_infrastructure_static_route(
+                                '<%= eroute['ipv6-outgoing-interface'] %>',
+                                '<%= eroute['ipv6-next-hop-address'] %>',
+                                '<%= eroute['ipv6-dest-prefix'] %>',
+                                '<%= eroute['ipv6-dest-prefix-length'] %>');">ipv6_infrastructure_static_route</a>
+                        </td>
+                        </tr>
+                        <% i++; %>
+                    <% }); %>
+                <% } %>
+				<% if ( typeof equip['interface'] != 'undefined' )
+                { %>
+                    <% interface_node = i; %>
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= equipment_node %>">
+                    <td> interface</td>
+                    </tr>
+                    <% i++; %>
+
+                    <% equip['interface'].forEach(function(interface)
+                    { %>
+                        <tr class="treegrid-<%= i %> treegrid-parent-<%= interface_node %>">
+                        <td>
+                            <a class=""
+                                href="javascript:interface(
+                                '<%= interface['interface-name'] %>',
+                                '<%= interface['interface-role'] %>');">interface</a>
+                        </td>
+                        </tr>
+                        <% i++; %>
+
+						<% if ( typeof interface['vlan'] != 'undefined' )
+                    	{ %>
+                    		<% vlan_node = i; %>
+                    		<tr class="treegrid-<%= i %> treegrid-parent-<%= interface_node %>">
+                    		<td> vlan</td>
+                    		</tr>
+                    		<% i++; %>
+
+                    		<% interface['vlan'].forEach(function(vlan)
+                    		{ %>
+                        		<tr class="treegrid-<%= i %> treegrid-parent-<%= vlan_node %>">
+                        		<td>
+                            		<a class=""
+                                		href="javascript:vlan(
+                                		'<%= vlan['vlan-interface'] %>',
+                                		'<%= vlan['vlan-id-outer'] %>',
+                                		'<%= vlan['vlan-id-inner'] %>');">vlan</a>
+                        		</td>
+                        		</tr>
+                        		<% i++; %>
+
+								<% if ( typeof vlan['l3-interface-ipv4-address-list'] != 'undefined' )
+                    			{ %>
+                    				<% ipv4_address_list_node = i; %>
+                    				<tr class="treegrid-<%= i %> treegrid-parent-<%= interface_node %>">
+                    				<td> l3-interface-ipv4-address-list</td>
+                    				</tr>
+                    				<% i++; %>
+
+                    				<% vlan['l3-interface-ipv4-address-list'].forEach(function(v4)
+                    				{ %>
+										<tr class="treegrid-<%= i %> treegrid-parent-<%= ipv4_address_list_node %>">
+                                		<td>
+                                    		<a class=""
+                                        		href="javascript:l3_interface_ipv4_address_list(
+                                        		'<%= v4['l3-interface-ipv4-address'] %>',
+                                        		'<%= v4['l3-interface-ipv4-prefix-length'] %>');">l3-interface-ipv4-address-list</a>
+                                		</td>
+                                		</tr>
+                                		<% i++; %>
+
+                    				<% }); %>
+                    			<% }; %>
+
+								<% if ( typeof vlan['l3-interface-ipv6-address-list'] != 'undefined' )
+                                { %>
+                                    <% ipv6_address_list_node = i; %>
+                                    <tr class="treegrid-<%= i %> treegrid-parent-<%= interface_node %>">
+                                    <td> l3-interface-ipv6-address-list</td>
+                                    </tr>
+                                    <% i++; %>
+
+                                    <% vlan['l3-interface-ipv6-address-list'].forEach(function(v6)
+                                    { %>
+										<tr class="treegrid-<%= i %> treegrid-parent-<%= ipv6_address_list_node %>">
+                                		<td>
+                                    		<a class=""
+                                        		href="javascript:l3_interface_ipv6_address_list(
+                                        		'<%= v6['l3-interface-ipv6-address'] %>',
+                                        		'<%= v6['l3-interface-ipv6-prefix-length'] %>');">l3-interface-ipv6-address-list</a>
+                                		</td>
+                                		</tr>
+                                		<% i++; %>
+                                    <% }); %>
+                                <% }; %>
+                    		<% }); %>
+                    	<% }; %>
+                	<% }); %>
+                <% } %>
+
+
+
+			<% }); %>
+		<% } %>
+
+		<% if ( typeof request['service-data']['l3sdn-vnf-fields'] != 'undefined' )
+		{ %>
+			<% l3sdn_vnf_fields_node = i; %>
+        	<tr class="treegrid-<%= i %> treegrid-parent-<%= service_data_node %>">
+			<td> l3sdn-vnf-fields</td>
+			</tr>
+			<% i++; %>
+
+			<tr class="treegrid-<%= i %> treegrid-parent-<%= l3sdn_vnf_fields_node %>">
+            	<td>
+            		<a class=""
+            		href="javascript:l3sdn_vnf_fields(
+            		'<%= request['service-data']['l3sdn-vnf-fields']['availability-zone'] %>',
+            		'<%= request['service-data']['l3sdn-vnf-fields']['vnf-stack-id'] %>',
+            		'<%= request['service-data']['l3sdn-vnf-fields']['vnf-name'] %>',
+            		'<%= request['service-data']['l3sdn-vnf-fields']['vnf-name2'] %>',
+            		'<%= request['service-data']['l3sdn-vnf-fields']['vnf-type'] %>',
+            		'<%= request['service-data']['l3sdn-vnf-fields']['vnf-status'] %>',
+            		'<%= request['service-data']['l3sdn-vnf-fields']['vnf-id'] %>',
+            		'<%= request['service-data']['l3sdn-vnf-fields']['oam-network-name'] %>',
+            		'<%= request['service-data']['l3sdn-vnf-fields']['aic_site_id'] %>');">l3sdn-vnf-fields</a>
+            	</td>
+            </tr>
+            <% i++; %>
+
+			<% if ( typeof request['service-data']['l3sdn-vnf-fields']['network-connections'] != 'undefined' )
+            { %>
+                <% network_connections_node = i; %>
+                <tr class="treegrid-<%= i %> treegrid-parent-<%= l3sdn_vnf_fields_node %>">
+                <td> network-connections</td>
+                </tr>
+                <% i++; %>
+
+                <% request['service-data']['l3sdn-vnf-fields']['network-connections'].forEach(function(nconn)
+                { %>
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= network_connections_node %>">
+                    <td>
+                        <a class=""
+                        href="javascript:network_connections(
+                        '<%= nconn['stack-id'] %>',
+                        '<%= nconn['net-status'] %>',
+                        '<%= nconn['connection-type'] %>',
+                        '<%= nconn['provider-network'] %>',
+                        '<%= nconn['interface-id'] %>',
+                        '<%= nconn['vlan'] %>',
+                        '<%= nconn['port-group-name'] %>',
+                        '<%= nconn['neutron-network-id'] %>');">network-connections</a>
+                    </td>
+                    </tr>
+                    <% i++; %>
+                <% }); %>
+            <% } %>
+
+			<% if ( typeof request['service-data']['l3sdn-vnf-fields']['vnf-vm-information'] != 'undefined' )
+            { %>
+                <% vnf_vm_information_node = i; %>
+                <tr class="treegrid-<%= i %> treegrid-parent-<%= l3sdn_vnf_fields_node %>">
+                <td> vnf-vm-information</td>
+                </tr>
+                <% i++; %>
+
+                <% request['service-data']['l3sdn-vnf-fields']['vnf-vm-information'].forEach(function(info)
+                { %>
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= vnf_vm_information_node %>">
+                    <td>
+                        <a class=""
+                        href="javascript:vnf_vm_information(
+                        '<%= info['vserver-type'] %>',
+                        '<%= info['vserver-name'] %>');">vnf-vm-information</a>
+                    </td>
+                    </tr>
+                    <% i++; %>
+                <% }); %>
+            <% } %>
+
+
+		<% } %>
+
+		<% if ( typeof request['service-data']['vr-lan'] != 'undefined' )
+		{ %>
+			<% if ( typeof request['service-instance-id'] != 'undefined' )
+			{ 
+    			var svc_instance_id = request['service-instance-id'];
+			} %>
+
+			<% vr_lan_node = i; %>
+        	<tr class="treegrid-<%= i %> treegrid-parent-<%= service_data_node %>">
+			<td> vr-lan</td>
+			</tr>
+			<% i++; %>
+			
+
+			<% if ( request['service-data']['vr-lan']['routing-protocol'] != 'undefined' )
+			{ %>
+				<tr class="treegrid-<%= i %> treegrid-parent-<%= vr_lan_node %>">
+				<td>
+            		<a href="javascript:routing_protocol('<%= svc_instance_id %>',
+					'<%= request['service-data']['vr-lan']['routing-protocol'] %>');">routing-protocol</a> 
+				</td>
+				</tr>
+				<% i++; %>
+			<% } %>
+			<% vr_lan_interface_node = i; %>
+        	<tr class="treegrid-<%= i %> treegrid-parent-<%= vr_lan_node %>">
+			<td> vr-lan-interface</td>
+			</tr>
+			<% i++; %>
+
+			<% if( typeof request['service-data']['vr-lan']['vr-lan-interface'] != 'undefined' )
+    		{ %>
+				
+        		<% request['service-data']['vr-lan']['vr-lan-interface'].forEach(function(request) 
+				{ %>
+
+        			<% if ( request['vr-designation'] != 'undefined')
+        			{
+            			var vr_designation = request['vr-designation'];
+        			} %>
+
+					<tr class="treegrid-<%= i %> treegrid-parent-<%= vr_lan_interface_node %>">
+        			<td>
+            			<a href="javascript:vrlan_interface(
+               			'<%= svc_instance_id %>',
+               			'<%= request['vr-designation'] %>',
+               			'<%= request['v6-vr-lan-prefix'] %>',
+               			'<%= request['v6-vr-lan-prefix-length'] %>',
+               			'<%= request['v6-vce-wan-address'] %>',
+               			'<%= request['v4-vr-lan-prefix-length'] %>',
+               			'<%= request['v4-vr-lan-prefix'] %>',
+               			'<%= request['t-defaulted-v6-vrlan'] %>',
+               			'<%= request['v4-vce-loopback-address'] %>');">vr-lan-interface</a>
+        			</td>
+        			</tr>
+        			<% i++; %>
+
+					<% if ( typeof request['dhcp'] != 'undefined' )
+        			{ %>
+            			<% var dhcp_node = i; %>
+            			<tr class="treegrid-<%= i %> treegrid-parent-<%= vr_lan_interface_node %>">
+            			<td> dhcp</td>
+            			</tr>
+            			<% i++; %>
+
+            			<tr class="treegrid-<%= i %> treegrid-parent-<%= dhcp_node %>">
+            			<td>
+                			<a href="javascript:dhcp(
+                   			'<%= svc_instance_id %>',
+                   			'<%= request['dhcp']['use-v4-default-pool'] %>',
+                   			'<%= request['dhcp']['use-v6-default-pool'] %>',
+                   			'<%= request['dhcp']['v4-dhcp-server-enabled'] %>',
+                   			'<%= request['dhcp']['v6-dhcp-server-enabled'] %>',
+                   			'<%= request['dhcp']['v6-dhcp-default-pool-prefix'] %>',
+                   			'<%= request['dhcp']['v6-dhcp-default-pool-prefix-length'] %>',
+                   			'<%= request['dhcp']['v4-dhcp-default-pool-prefix'] %>',
+                   			'<%= request['dhcp']['v4-dhcp-default-pool-prefix-length'] %>');">dhcp</a>
+            			</td>
+            			</tr>
+            			<% i++; %>
+
+						<% if ( typeof request['dhcp']['v4-dhcp-pools'] != 'undefined' )
+            			{ %>
+                			<% var v4_dhcp_pools_node = i; %>
+                			<tr class="treegrid-<%= i %> treegrid-parent-<%= dhcp_node %>">
+                			<td>v4-dhcp-pool</td>
+                			</tr>
+                			<% i++; %>
+
+                			<% request['dhcp']['v4-dhcp-pools'].forEach(function(v4request)
+                			{ %>
+                    			<tr class="treegrid-<%= i %> treegrid-parent-<%= v4_dhcp_pools_node %>">
+                    			<td>
+                        			<a href="javascript:v4_dhcp_pools(
+                        			'<%= svc_instance_id %>',
+                        			'<%= v4request['v4-dhcp-relay-next-hop-address'] %>',
+                        			'<%= v4request['v4-dhcp-pool-prefix'] %>',
+                        			'<%= v4request['v4-dhcp-pool-prefix-length'] %>',
+                        			'<%= v4request['v4-dhcp-relay-gateway-address'] %>');">v4-dhcp-pools</a>
+                    			</td>
+                    			</tr>
+                    			<% i++; %>
+
+                    			<% if ( typeof v4request['excluded-v4-address'] != 'undefined' )
+                    			{ %>
+                        			<% var excluded_v4_address_node = i; %>
+                        			<tr class="treegrid-<%= i %> treegrid-parent-<%= v4_dhcp_pools_node %>">
+                            			<td>exluded-v4-address</td>
+                        			</tr>
+                        			<% i++; %>
+
+                        			<% v4request['excluded-v4-addresses'].forEach(function(ex_request)
+                        			{ %>
+                            			<tr class="treegrid-<%= i %> treegrid-parent-<%= excluded_v4_address_node %>">
+                            			<td>
+                                			<a href="javascript:excluded_v4_address(
+                                			'<%= svc_instance_id %>',
+                                			'<%= ex_request['excluded-v4-address'] %>');">excluded-v4-address</a>
+                            			</td>
+                            			</tr>
+                            			<% i++; %>
+                        			<% }); %>
+                    			<% } %>
+                			<% }); %>
+            			<% } %>
+				
+						<% if ( typeof request['dhcp']['excluded-v4-dhcp-addresses-from-default-pool'] != 'undefined' )
+            			{ %>
+                			<% var exc_v4_address_node = i; %>
+                			<tr class="treegrid-<%= i %> treegrid-parent-<%= dhcp_node %>">
+                			<td>excluded-v4-dhcp-addresses-from-default-pool</td>
+                			</tr>
+                			<% i++; %>
+
+                			<% request['dhcp']['excluded-v4-dhcp-addresses-from-default-pool'].forEach(function(ex_request)
+                			{ %>
+                    			<tr class="treegrid-<%= i %> treegrid-parent-<%= exc_v4_address_node %>">
+                    			<td>
+                        			<a href="javascript:excluded_v4_addresses_from_default_pool(
+                        			'<%= svc_instance_id %>',
+                        			'<%= ex_request['excluded-v4-address'] %>');">excluded-v4-dhcp-addresses-from-default-pool</a>
+                    			</td>
+                    			</tr>
+                    			</tr>
+                    			<% i++; %>
+                			<% }); %>
+            			<% } %>
+						<% if ( typeof request['dhcp']['v6-dhcp-pools'] != 'undefined' )
+						{ %>
+                			<% var v6_dhcp_pools_node = i; %>
+                			<tr class="treegrid-<%= i %> treegrid-parent-<%= dhcp_node %>">
+                			<td>v6-dhcp-pool</td>
+                			</tr>
+                			<% i++; %>
+
+                			<% request['dhcp']['v6-dhcp-pools'].forEach(function(v6request)
+                			{ %>
+                    			<tr class="treegrid-<%= i %> treegrid-parent-<%= v6_dhcp_pools_node %>">
+                    			<td>
+                        			<a href="javascript:v6_dhcp_pools(
+                        			'<%= svc_instance_id %>',
+                        			'<%= v6request['v6-dhcp-relay-next-hop-address'] %>',
+                        			'<%= v6request['v6-dhcp-pool-prefix'] %>',
+                        			'<%= v6request['v6-dhcp-pool-prefix-length'] %>',
+                        			'<%= v6request['v6-dhcp-relay-gateway-address'] %>');">v6-dhcp-pools</a>
+                    			</td>
+                    			</tr>
+                    			<% i++; %>
+
+                    			<% if ( typeof v6request['excluded-v6-addresses'] != 'undefined' )
+                    			{ %>
+                        			<% var excluded_v6_address_node = i; %>
+                        			<tr class="treegrid-<%= i %> treegrid-parent-<%= v6_dhcp_pools_node %>">
+                            			<td>exluded-v6-address</td>
+                        			</tr>
+                        			<% i++; %>
+
+                        			<% v6request['excluded-v6-addresses'].forEach(function(ex_request)
+                        			{ %>
+                            			<tr class="treegrid-<%= i %> treegrid-parent-<%= excluded_v6_address_node %>">
+                            			<td>
+                                			<a href="javascript:excluded_v6_addresses(
+                                			'<%= svc_instance_id %>',
+                                			'<%= ex_request['excluded-v6-address'] %>');">excluded-v6-address</a>
+                            			</td>
+                            			</tr>
+                            			<% i++; %>
+                        			<% }); %>
+                    			<% } %>
+                			<% }); %>
+            			<% } %>
+						
+						<% if ( typeof request['dhcp']['excluded-v6-dhcp-addresses-from-default-pool'] != 'undefined' )
+            			{ %>
+                			<% var exc_v6_address_node = i; %>
+                			<tr class="treegrid-<%= i %> treegrid-parent-<%= dhcp_node %>">
+                			<td>excluded-v6-dhcp-addresses-from-default-pool</td>
+                			</tr>
+                			<% i++; %>
+
+                			<% request['dhcp']['excluded-v6-dhcp-addresses-from-default-pool'].forEach(function(ex_request)
+                			{ %>
+                    			<tr class="treegrid-<%= i %> treegrid-parent-<%= exc_v6_address_node %>">
+                    			<td>
+                        			<a href="javascript:excluded_v6_addresses_from_default_pool(
+                        			'<%= svc_instance_id %>',
+                        			'<%= ex_request['excluded-v6-address'] %>');">excluded-v6-dhcp-addresses-from-default-pool</a>
+                    			</td>
+                    			</tr>
+                    			</tr>
+                    			<% i++; %>
+                			<% }); %>
+            			<% } %>
+				<% } %>
+				<% if ( typeof request['firewall-lite'] != 'undefined' )
+                { %>
+                    <% var firewall_lite_node = i; %>
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= vr_lan_interface_node %>">
+                        <td> firewall-lite</td>
+                    </tr>
+                    <% i++; %>
+
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= firewall_lite_node %>">
+                    <td>
+                        <a href="javascript:firewall_lite(
+                        '<%= svc_instance_id %>',
+                        '<%= vr_designation %>',
+                        '<%= request['firewall-lite']['stateful-firewall-lite-v6-enabled'] %>',
+                        '<%= request['firewall-lite']['stateful-firewall-lite-v4-enabled'] %>');">firewall-lite</a>
+                    </td>
+                    </tr>
+                    <% i++; %>
+
+                    <% if ( typeof request['firewall-lite']['v6-firewall-packet-filters'] != 'undefined' )
+                    { %>
+                        <% var v6_firewall_packet_filters_node = i; %>
+                        <tr class="treegrid-<%= i %> treegrid-parent-<%= firewall_lite_node %>">
+                            <td>v6_firewall_packet_filters</td>
+                        </tr>
+                        <% i++; %>
+
+						<% request['firewall-lite']['v6-firewall-packet-filters'].forEach(function(v6request)
+                        { %>
+                            <tr class="treegrid-<%= i %> treegrid-parent-<%= v6_firewall_packet_filters_node %>">
+                            <td>
+                                <a href="javascript:v6_firewall_packet_filters(
+                                '<%= svc_instance_id %>',
+                                '<%= v6request['v6-firewall-prefix'] %>',
+                                '<%= v6request['v6-firewall-prefix-length'] %>',
+                                '<%= v6request['allow-icmp-ping'] %>');">v6-firewall-packet-filters</a>
+                            </td>
+                            </tr>
+                            <% i++; %>
+
+							<% if ( typeof v6request['udp-port-list'] != 'undefined' )
+                            { %>
+                                <% var udp_port_list_node = i; %>
+                                <tr class="treegrid-<%= i %> treegrid-parent-<%= v6_firewall_packet_filters_node %>">
+                                    <td>udp_port_list</td>
+                                </tr>
+                                <% i++; %>
+
+                                <% v6request['udp-port-list'].forEach(function(udp_request)
+                                { %>
+                                    <tr class="treegrid-<%= i %> treegrid-parent-<%= udp_port_list_node %>">
+                                    <td>
+                                        <a href="javascript:udp_port_list(
+                                        '<%= svc_instance_id %>',
+                                        '<%= udp_request['port-number'] %>');">udp-port-list</a>
+                                    </td>
+                                    </tr>
+                                    <% i++; %>
+                                <% }); %>
+                            <% } %>
+							<% if ( typeof v6request['tcp-port-list'] != 'undefined' )
+                            { %>
+                                <% var tcp_port_list_node = i; %>
+                                <tr class="treegrid-<%= i %> treegrid-parent-<%= v6_firewall_packet_filters_node %>">
+                                    <td>tcp_port_list</td>
+                                </tr>
+                                <% i++; %>
+ 								<% v6request['tcp-port-list'].forEach(function(tcp_request)
+                                { %>
+                                    <tr class="treegrid-<%= i %> treegrid-parent-<%= tcp_port_list_node %>">
+                                    <td>
+                                        <a href="javascript:tcp_port_list(
+                                        '<%= svc_instance_id %>',
+                                        '<%= tcp_request['port-number'] %>');">tcp-port-list</a>
+                                    </td>
+                                    </tr>
+                                    <% i++; %>
+                                <% }); %>
+                            <% } %>
+						<% }); %>
+
+                    <% } %>
+					<% if ( typeof request['firewall-lite']['v4-firewall-packet-filters'] != 'undefined' )
+                 	{ %>
+                        <% var v4_firewall_packet_filters_node = i; %>
+                        <tr class="treegrid-<%= i %> treegrid-parent-<%= firewall_lite_node %>">
+                            <td>v4_firewall_packet_filters</td>
+                        </tr>
+                        <% i++; %>
+
+                        <% request['firewall-lite']['v4-firewall-packet-filters'].forEach(function(v4request)
+                        { %>
+                            <tr class="treegrid-<%= i %> treegrid-parent-<%= v4_firewall_packet_filters_node %>">
+                            <td>
+                                <a href="javascript:v4_firewall_packet_filters(
+                                '<%= svc_instance_id %>',
+                                '<%= v4request['v4-firewall-prefix'] %>',
+                                '<%= v4request['v4-firewall-prefix-length'] %>',
+                                '<%= v4request['allow-icmp-ping'] %>');">v4-firewall-packet-filters</a>
+                            </td>
+                            </tr>
+                            <% i++; %>
+
+                            <% if ( typeof v4request['udp-port-list'] != 'undefined' )
+                            { %>
+                                <% var udp_port_list_node = i; %>
+                                <tr class="treegrid-<%= i %> treegrid-parent-<%= v4_firewall_packet_filters_node %>">
+                                    <td>udp_port_list</td>
+                                </tr>
+                                <% i++; %>
+
+                                <% v4request['udp-port-list'].forEach(function(udp_request)
+                                { %>
+                                    <tr class="treegrid-<%= i %> treegrid-parent-<%= udp_port_list_node %>">
+                                    <td>
+                                        <a href="javascript:udp_port_list(
+                                        '<%= svc_instance_id %>',
+                                        '<%= udp_request['port-number'] %>');">udp-port-list</a>
+                                    </td>
+                                    </tr>
+                                    <% i++; %>
+                                <% }); %>
+                            <% } %>
+                            <% if ( typeof v4request['tcp-port-list'] != 'undefined' )
+                            { %>
+                                <% var tcp_port_list_node = i; %>
+                                <tr class="treegrid-<%= i %> treegrid-parent-<%= v4_firewall_packet_filters_node %>">
+                                    <td>tcp_port_list</td>
+                                </tr>
+                                <% i++; %>
+                                <% v4request['tcp-port-list'].forEach(function(tcp_request)
+                                { %>
+                                    <tr class="treegrid-<%= i %> treegrid-parent-<%= tcp_port_list_node %>">
+                                    <td>
+                                        <a href="javascript:tcp_port_list(
+                                        '<%= svc_instance_id %>',
+                                        '<%= tcp_request['port-number'] %>');">tcp-port-list</a>
+                                    </td>
+                                    </tr>
+                                    <% i++; %>
+                                <% }); %>
+                            <% } %>
+                        <% }); %>
+
+                    <% } %>
+
+                <% } %>
+
+
+ 				<% if ( typeof request['v4-public-lan-prefixes'] != 'undefined')
+				{ %>
+					<% var v4_public_lan_prefixes_node = i; %>
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= vr_lan_interface_node %>">
+                    	<td> v4-public-lan-prefixes</td>
+                    </tr>
+                    <% i++; %>
+
+					<% if (typeof request['v4-public-lan-prefixes']['t-provided-v4-lan-public-prefixes'] != 'undefined')
+        			{ %>
+
+            			<% request['v4-public-lan-prefixes']['t-provided-v4-lan-public-prefixes'].forEach(function(trequest)
+						{ %>
+                			<tr class="treegrid-<%= i %> treegrid-parent-<%= v4_public_lan_prefixes_node %>">
+                			<td>
+                    			<a href="javascript:t_provided_v4_prefixes(
+                    			'<%= svc_instance_id %>',
+                    			'<%= trequest['request-index'] %>',
+                    			'<%= trequest['v4-lan-public-prefix-length'] %>',
+                    			'<%= trequest['v4-lan-public-prefix'] %>');">t-provided-v4-lan-public-prefixes</a>
+                			</td>
+                			</tr>
+                			<% i++; %>
+            			<% }); %>
+        			<% } %>
+				<% } %>
+				<% if ( typeof request['v6-public-lan-prefixes'] != 'undefined')
+                { %>
+                    <% var v6_public_lan_prefixes_node = i; %>
+                    <tr class="treegrid-<%= i %> treegrid-parent-<%= vr_lan_interface_node %>">
+                        <td> v6-public-lan-prefixes</td>
+                    </tr>
+                    <% i++; %>
+
+                    <% if (typeof request['v6-public-lan-prefixes']['t-provided-v6-lan-public-prefixes'] != 'undefined')
+                    { %>
+
+                        <% request['v6-public-lan-prefixes']['t-provided-v6-lan-public-prefixes'].forEach(function(trequest)
+                        { %>
+                            <tr class="treegrid-<%= i %> treegrid-parent-<%= v6_public_lan_prefixes_node %>">
+                            <td>
+                                <a href="javascript:t_provided_v6_prefixes(
+                                '<%= svc_instance_id %>',
+                                '<%= trequest['request-index'] %>',
+                                '<%= trequest['v6-lan-public-prefix-length'] %>',
+                                '<%= trequest['v6-lan-public-prefix'] %>');">t-provided-v6-lan-public-prefixes</a>
+                            </td>
+                            </tr>
+                            <% i++; %>
+                        <% }); %>
+                    <% } %>
+                <% } %>
+
+				<% if ( typeof request['nat'] != 'undefined' )
+        		{ %>
+            		<% var nat_node = i %>
+            		<tr class="treegrid-<%= i %> treegrid-parent-<%= vr_lan_interface_node %>">
+                		<td> nat</td>
+            		</tr>
+            		<% i++; %>
+
+            		<tr class="treegrid-<%= i %> treegrid-parent-<%= nat_node %>">
+            		<td>
+                		<a href="javascript:nat(
+                		'<%= svc_instance_id %>',
+                		'<%= request['nat']['v4-nat-enabled'] %>');">nat</a>
+            		</td>
+            		</tr>
+            		<% i++; %>
+
+            		<% if ( typeof request['nat']['v4-nat-mapping-entries'] != 'undefined' )
+            		{
+                		var nat_mapping_node = i %>
+                		<tr class="treegrid-<%= i %> treegrid-parent-<%= nat_node %>">
+                    		<td>v4-nat-mapping-entries</td>
+                		</tr>
+                		<% i++; %>
+		
+                		<% request['nat']['v4-nat-mapping-entries'].forEach(function(trequest)
+                		{ %>
+                			<tr class="treegrid-<%= i %> treegrid-parent-<%= nat_mapping_node %>">
+                				<td>
+                    				<a href="javascript:v4_nat_mapping_entries(
+                    				'<%= svc_instance_id %>',
+                    				'<%= trequest['v4-nat-external'] %>',
+                    				'<%= trequest['v4-nat-next-hop-address'] %>',
+                    				'<%= trequest['v4-nat-internal'] %>');">v4-nat-mapping-entries</a>
+                				</td>
+                			</tr>
+                			<% i++; %>
+                		<% }); %>
+            		<% } %>
+        		<% } %>
+
+				<% if ( typeof request['static-routes'] != 'undefined' )
+        		{ %>
+            		<% var static_route_node = i; %>
+            		<tr class="treegrid-<%= i %> treegrid-parent-<%= vr_lan_interface_node %>">
+            			<td> static-routes</td>
+            		</tr>
+            		<% i++; %>
+            		<% if ( typeof request['static-routes']['v6-static-routes'] != 'undefined' )
+            		{ %>
+                		<% v6_static_route = i %>
+                		<tr class="treegrid-<%= i %> treegrid-parent-<%= static_route_node %>">
+                				<td>v6-static-routes</td>
+                		</tr>
+                		<% i++; %>
+
+                		<% request['static-routes']['v6-static-routes'].forEach(function(strequest){ %>
+                    		<tr class="treegrid-<%= i %> treegrid-parent-<%= v6_static_route %>">
+                    		<td>
+                        		<a href="javascript:v6_static_routes(
+                        		'<%= svc_instance_id %>',
+                        		'<%= strequest['v6-static-route-prefix'] %>',
+                        		'<%= strequest['v6-next-hop-address'] %>',
+                        		'<%= strequest['v6-static-route-prefix-length'] %>');">v6-static-routes</a>
+                    		</td>
+                    		</tr>
+                    		<% i++; %>
+                		<% }); %>
+            		<% } %>
+            		<% if ( typeof request['static-routes']['v4-static-routes'] != 'undefined' )
+            		{ %>
+                		<% v4_static_route = i %>
+                		<tr class="treegrid-<%= i %> treegrid-parent-<%= static_route_node %>">
+                		<td> v4-static-routes</td>
+                		</tr>
+                		<% i++; %>
+                		<% request['static-routes']['v4-static-routes'].forEach(function(v4request)
+                		{ %>
+                    		<tr class="treegrid-<%= i %> treegrid-parent-<%= v4_static_route %>">
+                    		<td>
+                        		<a href="javascript:v4_static_routes(
+                        		'<%= svc_instance_id %>',
+                        		'<%= v4request['v4-static-route-prefix'] %>',
+                        		'<%= v4request['v4-next-hop-address'] %>',
+                        		'<%= v4request['v4-static-route-prefix-length'] %>');">v4-static-routes</a>
+                    		</td>
+                    		</tr>
+                    		<% i++; %>
+                		<% }); %>
+            		<% } %>
+        		<% } %>
+
+				<% if ( typeof request['pat'] != 'undefined' )
+        		{ %>
+            		<% var pat_node = i %>
+            		<tr class="treegrid-<%= i %> treegrid-parent-<%= vr_lan_interface_node %>">
+                		<td> pat</td>
+            		</tr>
+            		<% i++; %>
+
+            		<tr class="treegrid-<%= i %> treegrid-parent-<%= pat_node %>">
+            			<td>
+                			<a href="javascript:pat(
+                			'<%= svc_instance_id %>',
+                			'<%= request['pat']['v4-pat-default-pool-prefix-length'] %>',
+                			'<%= request['pat']['use-v4-default-pool'] %>',
+                			'<%= request['pat']['v4-pat-enabled'] %>',
+                			'<%= request['pat']['v4-pat-default-pool-prefix'] %>');">pat</a>
+            			</td>
+            		</tr>
+	            	<% i++; %>
+
+            		<% if ( typeof request['pat']['v4-pat-pools'] != 'undefined' )
+            		{ %>
+                		<% var pat_pools_node = i %>
+                		<tr class="treegrid-<%= i %> treegrid-parent-<%= pat_node %>">
+                    		<td> v4-pat-pools</td>
+                		</tr>
+                		<% i++; %>
+
+                		<% request['pat']['v4-pat-pools'].forEach(function(trequest)
+                		{ %>
+                			<tr class="treegrid-<%= i %> treegrid-parent-<%= pat_pools_node %>">
+                			<td>
+                    			<a href="javascript:pat_pools(
+                    			'<%= svc_instance_id %>',
+                    			'<%= trequest['v4-pat-pool-next-hop-address'] %>',
+                    			'<%= trequest['v4-pat-pool-prefix-length'] %>',
+                    			'<%= trequest['v4-pat-pool-prefix'] %>');">v4-pat-pools</a>
+                			</td>
+                			</tr>
+                			<% i++; %>
+                		<% }); %>
+            	<% } %>
+        	<% } %>
+
+
+
+
+
+
+				<% }); %>
+			<% } %>
+		<% } %>
+
+	<% } %>
+	<% }); %> 
+</table>
+</div>
+</div>
+
+<div class="container-fluid">
+    <div class="row">
+    <div class="col-md-1 text-left">
+        <p>&nbsp;&nbsp;Page <%= pageInfo.currentPage %> of <%= pageInfo.pageCount %></p>
+    </div>
+    <div class="col-md-11 text-left">
+    <% if (pageInfo.pageCount > 1) { %>
+        <ul class="pagination">
+        <% if (pageInfo.currentPage > 1) { %>
+            <li><a href="/odl/pageWklst?page=1">&laquo;</a></li>
+        <% } %>
+        <% var i = 1;
+        if (pageInfo.currentPage > 10) {
+            i = +pageInfo.currentPage - 9;
+        } %>
+        <% if (i !== 1) { %>
+            <!--<li class="disabled"><a href="#">...</a></li>-->
+        <% } %>
+        <% for (i; i<=pageInfo.pageCount; i++) { %>
+            <% if (pageInfo.currentPage == i) { %>
+                <li class="active"><span><%= i %> <span class="sr-only">(current)</span></span></li>
+            <% } else { %>
+                <li><a href="/odl/pageWklst?page=<%= i %>"><%= i %></a></li>
+            <% } %>
+            <% if (i == (+pageInfo.currentPage + 9)) { %>
+                <!--<li class="disabled"><a href="#">...</a></li>-->
+            <% break; } %>
+        <% } %>
+        <% if (pageInfo.currentPage != pageInfo.pageCount) { %>
+            <li><a href="/odl/pageWklst?page=<%= pageInfo.pageCount %>">&raquo;</a></li>
+        <% } %>
+        </ul>
+    <% } %>
+    </div><!-- col-md-10 -->
+    </div><!-- row -->
+    </div><!-- container-fluid -->
+
+
+
+<% include ../partials/vnf_vm_information %>
+<% include ../partials/network_connections %>
+<% include ../partials/l3sdn_vnf_fields %>
+<% include ../partials/l3_interface_ipv4_address_list %>
+<% include ../partials/l3_interface_ipv6_address_list %>
+<% include ../partials/vlan %>
+<% include ../partials/interface %>
+<% include ../partials/ipv6_infrastructure_static_route %>
+<% include ../partials/ipv4_infrastructure_static_route %>
+<% include ../partials/equipment %>
+<% include ../partials/svc_config_additional_data %>
+<% include ../partials/feature_list %>
+<% include ../partials/pat %>
+<% include ../partials/pat_pools %>
+<% include ../partials/v6_static_routes %>
+<% include ../partials/v4_static_routes %>
+<% include ../partials/nat %>
+<% include ../partials/v4_nat_mapping_entries %>
+<% include ../partials/t_provided_v4_lan_public_prefixes %>
+<% include ../partials/v4_firewall_packet_filters %>
+<% include ../partials/udp_port_list %>
+<% include ../partials/tcp_port_list %>
+<% include ../partials/v6_firewall_packet_filters %>
+<% include ../partials/firewall_lite %>
+<% include ../partials/excluded_v6_addresses %>
+<% include ../partials/excluded_v6_address_from_default_pool %>
+<% include ../partials/v6_dhcp_pools %>
+<% include ../partials/excluded_v4_address_from_default_pool %>
+<% include ../partials/excluded_v4_address %>
+<% include ../partials/v4_dhcp_pools %>
+<% include ../partials/dhcp %>
+<% include ../partials/routing_protocol %>
+<% include ../partials/t_provided_v6_lan_public_prefixes %>
+<% include ../partials/vr_lan_interface %>
+<% include ../partials/service_information_modal %>
+<% include ../partials/l2_homing_information_modal %>
+<% include ../partials/sdnc_request_header_modal %>
+<% include ../partials/request_information_modal %>
+<% include ../partials/svc_topology_additional_data_modal %>
+<% include ../partials/service_status_modal %>
+<% include ../partials/oper_status_modal %>
+<% include ../partials/internet_evc_modal %>
+
+<footer>
+<% include ../partials/footer %>
+</footer>
+    
+<script type="text/javascript">
+
+
+
+function vnf_vm_information(vserver_type,vserver_name)
+{
+	var lvalue = document.getElementById('vserver_type');
+    if( vserver_type != 'undefined' ){
+        lvalue.value=vserver_type;
+    } else {
+        lvalue.value='';
+    }
+	lvalue = document.getElementById('vserver_name');
+    if( vserver_name != 'undefined' ){
+        lvalue.value=vserver_name;
+    } else {
+        lvalue.value='';
+    }
+    $('#vnf-vm-information-modal').modal('show');
+}
+function network_connections (stack_id,net_status,connection_type,provider_network,interface_id,vlan,port_group_name,neutron_network_id)
+{
+	var lvalue = document.getElementById('stack_id');
+    if( stack_id != 'undefined' ){
+        lvalue.value=stack_id;
+    } else {
+        lvalue.value='';
+    }
+	lvalue = document.getElementById('net_status');
+    if( net_status != 'undefined' ){
+        lvalue.value=net_status;
+    } else {
+        lvalue.value='';
+    }
+	lvalue = document.getElementById('connection_type');
+    if( connection_type != 'undefined' ){
+        lvalue.value=connection_type;
+    } else {
+        lvalue.value='';
+    }
+	lvalue = document.getElementById('provider_network');
+    if( provider_network != 'undefined' ){
+        lvalue.value=provider_network;
+    } else {
+        lvalue.value='';
+    }
+	lvalue = document.getElementById('interface_id');
+    if( interface_id != 'undefined' ){
+        lvalue.value=interface_id;
+    } else {
+        lvalue.value='';
+    }
+	lvalue = document.getElementById('vlan');
+    if( vlan != 'undefined' ){
+        lvalue.value=vlan;
+    } else {
+        lvalue.value='';
+    }
+	lvalue = document.getElementById('port_group_name');
+    if( port_group_name != 'undefined' ){
+        lvalue.value=port_group_name;
+    } else {
+        lvalue.value='';
+    }
+	lvalue = document.getElementById('neutron_network_id');
+    if( neutron_network_id != 'undefined' ){
+        lvalue.value=neutron_network_id;
+    } else {
+        lvalue.value='';
+    }
+    $('#network-connections-modal').modal('show');
+}
+
+function l3sdn_vnf_fields(availability_zone,vnf_stack_id,vnf_name,vnf_name2,vnf_type,vnf_status,vnf_id,oam_network_name,aic_site_id)
+{
+    var lvalue = document.getElementById('availability_zone');
+    if( availability_zone != 'undefined' ){
+        lvalue.value=availability_zone;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('vnf_stack_id');
+    if( vnf_stack_id != 'undefined' ){
+        lvalue.value=vnf_stack_id;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('vnf_name');
+    if( vnf_name != 'undefined' ){
+        lvalue.value=vnf_name;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('vnf_name2');
+    if( vnf_name2 != 'undefined' ){
+        lvalue.value=vnf_name2;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('vnf_type');
+    if( vnf_type != 'undefined' ){
+        lvalue.value=vnf_type;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('vnf_status');
+    if( vnf_status != 'undefined' ){
+        lvalue.value=vnf_status;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('vnf_id');
+    if( vnf_id != 'undefined' ){
+        lvalue.value=vnf_id;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('oam_network_name');
+    if( oam_network_name != 'undefined' ){
+        lvalue.value=oam_network_name;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('aic_site_id');
+    if( aic_site_id != 'undefined' ){
+        lvalue.value=aic_site_id;
+    } else {
+        lvalue.value='';
+    }
+    $('#l3sdn-vnf-fields-modal').modal('show');
+}
+function l3_interface_ipv4_address_list(l3_interface_ipv4_address,l3_interface_ipv4_prefix_length)
+{
+    var lvalue = document.getElementById('l3_interface_ipv4_address');
+    if( l3_interface_ipv4_address != 'undefined' ){
+        lvalue.value=l3_interface_ipv4_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('l3_interface_ipv4_prefix_length');
+    if( l3_interface_ipv4_prefix_length != 'undefined' ){
+        lvalue.value=l3_interface_ipv4_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    $('#l3-interface-ipv4-address-list-modal').modal('show');
+}
+
+function l3_interface_ipv6_address_list(l3_interface_ipv6_address,l3_interface_ipv6_prefix_length)
+{
+    var lvalue = document.getElementById('l3_interface_ipv6_address');
+    if( l3_interface_ipv6_address != 'undefined' ){
+        lvalue.value=l3_interface_ipv6_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('l3_interface_ipv6_prefix_length');
+    if( l3_interface_ipv6_prefix_length != 'undefined' ){
+        lvalue.value=l3_interface_ipv6_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    $('#l3-interface-ipv6-address-list-modal').modal('show');
+}
+
+
+function vlan(vlan_interface,vlan_id_inner,vlan_id_outer)
+{
+    var lvalue = document.getElementById('vlan_interface');
+    if( vlan_interface != 'undefined' ){
+        lvalue.value=vlan_interface;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('vlan_id_inner');
+    if( vlan_id_inner != 'undefined' ){
+        lvalue.value=vlan_id_inner;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('vlan_id_outer');
+    if( vlan_id_outer != 'undefined' ){
+        lvalue.value=vlan_id_outer;
+    } else {
+        lvalue.value='';
+    }
+    $('#vlan-modal').modal('show');
+}
+
+function interface(interface_name,interface_role)
+{
+    var lvalue = document.getElementById('interface_name');
+    if( interface_name != 'undefined' ){
+        lvalue.value=interface_name;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('interface_role');
+    if( interface_role != 'undefined' ){
+        lvalue.value=interface_role;
+    } else {
+        lvalue.value='';
+    }
+    $('#interface-modal').modal('show');
+}
+
+function ipv4_infrastructure_static_route(ipv4_outgoing_interface,ipv4_next_hop_address,ipv4_dest_prefix,ipv4_dest_prefix_length)
+{
+    var lvalue = document.getElementById('ipv4_outgoing_interface');
+    if( ipv4_outgoing_interface != 'undefined' ){
+        lvalue.value=ipv4_outgoing_interface;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('ipv4_next_hop_address');
+    if( ipv4_next_hop_address != 'undefined' ){
+        lvalue.value=ipv4_next_hop_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('ipv4_dest_prefix');
+    if( ipv4_dest_prefix != 'undefined' ){
+        lvalue.value=ipv4_dest_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('ipv4_dest_prefix_length');
+    if( ipv4_dest_prefix_length != 'undefined' ){
+        lvalue.value=ipv4_dest_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    $('#ipv4-infrastructure-static-route-modal').modal('show');
+}
+
+function ipv6_infrastructure_static_route(ipv6_outgoing_interface,ipv6_next_hop_address,ipv6_dest_prefix,ipv6_dest_prefix_length)
+{
+    var lvalue = document.getElementById('ipv6_outgoing_interface');
+    if( ipv6_outgoing_interface != 'undefined' ){
+        lvalue.value=ipv6_outgoing_interface;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('ipv6_next_hop_address');
+    if( ipv6_next_hop_address != 'undefined' ){
+        lvalue.value=ipv6_next_hop_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('ipv6_dest_prefix');
+    if( ipv6_dest_prefix != 'undefined' ){
+        lvalue.value=ipv6_dest_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('ipv6_dest_prefix_length');
+    if( ipv6_dest_prefix_length != 'undefined' ){
+        lvalue.value=ipv6_dest_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    $('#ipv6-infrastructure-static-route-modal').modal('show');
+}
+
+function equipment(equipment_role,ipv4_oam_address,ipv4_oam_gateway_address_prefix_length,ptnii_name,v4_loopback0_ip_address,ipv4_oam_gateway_address)
+{
+    var lvalue = document.getElementById('equipment_role');
+    if( equipment_role != 'undefined' ){
+        lvalue.value=equipment_role;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('ipv4_oam_address');
+    if( ipv4_oam_address != 'undefined' ){
+        lvalue.value=ipv4_oam_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('ipv4_oam_gateway_address_prefix_length');
+    if( ipv4_oam_gateway_address_prefix_length != 'undefined' ){
+        lvalue.value=ipv4_oam_gateway_address_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('ptnii_name');
+    if( ptnii_name != 'undefined' ){
+        lvalue.value=ptnii_name;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_loopback0_ip_address');
+    if( v4_loopback0_ip_address != 'undefined' ){
+        lvalue.value=v4_loopback0_ip_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('ipv4_oam_gateway_address');
+    if( ipv4_oam_gateway_address != 'undefined' ){
+        lvalue.value=ipv4_oam_gateway_address;
+    } else {
+        lvalue.value='';
+    }
+    $('#equipment-modal').modal('show');
+}
+function svc_config_additional_data(management_ip)
+{
+    var lvalue = document.getElementById('management_ip');
+    if( management_ip != 'undefined' ){
+        lvalue.value=management_ip;
+    } else {
+        lvalue.value='';
+    }
+    $('#svc-config-additional-data-modal').modal('show');
+}
+function feature_list(feature_instance_id,feature_instance_xpath,feature_sub_type,feature_type)
+{
+    var lvalue = document.getElementById('feature_instance_id');
+    if( feature_instance_id != 'undefined' ){
+        lvalue.value=feature_instance_id;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('feature_instance_xpath');
+    if( feature_instance_xpath != 'undefined' ){
+        lvalue.value=feature_instance_xpath;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('feature_sub_type');
+    if( feature_sub_type != 'undefined' ){
+        lvalue.value=feature_sub_type;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('feature_type');
+    if( feature_type != 'undefined' ){
+        lvalue.value=feature_type;
+    } else {
+        lvalue.value='';
+    }
+    $('#feature-list-modal').modal('show');
+}
+function pat_pools(svc_instance_id,v4_pat_pool_next_hop_address,v4_pat_pool_prefix_length,v4_pat_pool_prefix)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v4_pat_pool_next_hop_address');
+    if( v4_pat_pool_next_hop_address != 'undefined' ){
+        lvalue.value=v4_pat_pool_next_hop_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_pat_pool_prefix_length');
+    if( v4_pat_pool_prefix_length != 'undefined' ){
+        lvalue.value=v4_pat_pool_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_pat_pool_prefix');
+    if( v4_pat_pool_prefix != 'undefined' ){
+        lvalue.value=v4_pat_pool_prefix;
+    } else {
+        lvalue.value='';
+    }
+    $('#pat-pools-modal').modal('show');
+}
+function pat(svc_instance_id,v4_pat_default_pool_prefix_length,use_v4_default_pool,v4_pat_enabled,v4_pat_default_pool_prefix)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v4_pat_default_pool_prefix_length');
+    if( v4_pat_default_pool_prefix_length != 'undefined' ){
+        lvalue.value=v4_pat_default_pool_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+
+    lvalue = document.getElementById('use_v4_default_pool');
+    if( use_v4_default_pool != 'undefined' ){
+        lvalue.value = use_v4_default_pool;
+    } else {
+        lvalue.value = '';
+    }
+
+    lvalue = document.getElementById('v4_pat_enabled');
+    if( v4_pat_enabled != 'undefined' ){
+        lvalue.value = v4_pat_enabled;
+    } else {
+        lvalue.value = '';
+    }
+
+    lvalue = document.getElementById('v4_pat_default_pool_prefix');
+    if( v4_pat_default_pool_prefix != 'undefined' ){
+        lvalue.value = v4_pat_default_pool_prefix;
+    } else {
+        lvalue.value = '';
+    }
+    $('#pat-modal').modal('show');
+}
+
+function v4_static_routes(svc_instance_id,v4_static_route_prefix,static_v4_next_hop_address,v4_static_route_prefix_length)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v4_static_route_prefix');
+    if( v4_static_route_prefix != 'undefined' ){
+        lvalue.value=v4_static_route_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('static_v4_next_hop_address');
+    if( static_v4_next_hop_address != 'undefined' ){
+        lvalue.value=static_v4_next_hop_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_static_route_prefix_length');
+    if( v4_static_route_prefix_length != 'undefined' ){
+        lvalue.value=v4_static_route_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    $('#v4-static-routes-modal').modal('show');
+}
+
+function v6_static_routes(svc_instance_id,v6_static_route_prefix,static_v6_next_hop_address,v6_static_route_prefix_length)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v6_static_route_prefix');
+    if( v6_static_route_prefix != 'undefined' ){
+        lvalue.value=v6_static_route_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('static_v6_next_hop_address');
+    if( static_v6_next_hop_address != 'undefined' ){
+        lvalue.value=static_v6_next_hop_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_static_route_prefix_length');
+    if( v6_static_route_prefix_length != 'undefined' ){
+        lvalue.value=v6_static_route_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    $('#v6-static-routes-modal').modal('show');
+}
+
+function nat(svc_instance_id,v4_nat_enabled) {
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v4_nat_enabled');
+    if( v4_nat_enabled != 'undefined' ){
+        lvalue.value=v4_nat_enabled;
+    } else {
+        lvalue.value='';
+    }
+    $('#nat-modal').modal('show');
+}
+function v4_nat_mapping_entries(svc_instance_id,v4_nat_external,v4_nat_next_hop_address,v4_nat_internal)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v4_nat_external');
+    if( v4_nat_external != 'undefined' ){
+        lvalue.value=v4_nat_external;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_nat_next_hop_address');
+    if( v4_nat_next_hop_address != 'undefined' ){
+        lvalue.value=v4_nat_next_hop_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_nat_internal');
+    if( v4_nat_internal != 'undefined' ){
+        lvalue.value=v4_nat_internal;
+    } else {
+        lvalue.value='';
+    }
+    $('#v4-nat-mapping-entries-modal').modal('show');
+}
+
+function v4_firewall_packet_filters(svc_instance_id,v4_firewall_prefix,v4_firewall_prefix_length,v4_allow_icmp_ping)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v4_firewall_prefix');
+    if( v4_firewall_prefix != 'undefined' ){
+        lvalue.value=v4_firewall_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_firewall_prefix_length');
+    if( v4_firewall_prefix_length != 'undefined' ){
+        lvalue.value=v4_firewall_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_allow_icmp_ping');
+    if( v4_allow_icmp_ping != 'undefined' ){
+        lvalue.value=v4_allow_icmp_ping;
+    } else {
+        lvalue.value='';
+    }
+    $('#v4-firewall-packet-filters-modal').modal('show');
+}
+
+function v6_firewall_packet_filters(svc_instance_id,v6_firewall_prefix,v6_firewall_prefix_length,v6_allow_icmp_ping)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v6_firewall_prefix');
+    if( v6_firewall_prefix != 'undefined' ){
+        lvalue.value=v6_firewall_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_firewall_prefix_length');
+    if( v6_firewall_prefix_length != 'undefined' ){
+        lvalue.value=v6_firewall_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_allow_icmp_ping');
+    if( v6_allow_icmp_ping != 'undefined' ){
+        lvalue.value=v6_allow_icmp_ping;
+    } else {
+        lvalue.value='';
+    }
+    $('#v6-firewall-packet-filters-modal').modal('show');
+}
+
+function tcp_port_list(svc_instance_id,tcp_port_number)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('tcp_port_number');
+    if( tcp_port_number != 'undefined' ){
+        lvalue.value=tcp_port_number;
+    } else {
+        lvalue.value='';
+    }
+    $('#tcp-port-list-modal').modal('show');
+}
+function udp_port_list(svc_instance_id,udp_port_number)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('udp_port_number');
+    if( udp_port_number != 'undefined' ){
+        lvalue.value=udp_port_number;
+    } else {
+        lvalue.value='';
+    }
+    $('#udp-port-list-modal').modal('show');
+}
+
+function firewall_lite(svc_instance_id,firewall_lite_vr_designation,stateful_firewall_lite_v4_enabled,stateful_firewall_lite_v6_enabled)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    document.getElementById('firewall_lite_vr_designation').value = firewall_lite_vr_designation;
+    var lvalue = document.getElementById('stateful_firewall_lite_v4_enabled');
+    if( stateful_firewall_lite_v4_enabled != 'undefined' ){
+        lvalue.value=stateful_firewall_lite_v4_enabled;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('stateful_firewall_lite_v6_enabled');
+    if( stateful_firewall_lite_v6_enabled != 'undefined' ){
+        lvalue.value=stateful_firewall_lite_v6_enabled;
+    } else {
+        lvalue.value='';
+    }
+    $('#firewall-lite-modal').modal('show');
+}
+
+function excluded_v6_addresses(svc_instance_id, excluded_v6_address)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('excluded_v6_address');
+    if( excluded_v6_address != 'undefined' ){
+        lvalue.value=excluded_v6_address;
+    } else {
+        lvalue.value='';
+    }
+    $('#excluded-v6-addresses-modal').modal('show');
+}
+
+
+function excluded_v6_addresses_from_default_pool(svc_instance_id, excluded_v6_address_from_default_pool)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('excluded_v6_address_from_default_pool');
+    if( excluded_v6_address_from_default_pool != 'undefined' ){
+        lvalue.value=excluded_v6_address_from_default_pool;
+    } else {
+        lvalue.value='';
+    }
+    $('#excluded-v6-address-from-default-pool-modal').modal('show');
+}
+
+
+function v6_dhcp_pools(svc_instance_id,v6_dhcp_relay_next_hop_address,v6_dhcp_pool_prefix,v6_dhcp_pool_prefix_length,v6_dhcp_relay_gateway_address)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v6_dhcp_relay_next_hop_address');
+    if( v6_dhcp_relay_next_hop_address != 'undefined' ){
+        lvalue.value=v6_dhcp_relay_next_hop_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_dhcp_pool_prefix');
+    if( v6_dhcp_pool_prefix != 'undefined' ){
+        lvalue.value=v6_dhcp_pool_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_dhcp_pool_prefix_length');
+    if( v6_dhcp_pool_prefix_length != 'undefined' ){
+        lvalue.value=v6_dhcp_pool_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_dhcp_relay_gateway_address');
+    if( v6_dhcp_relay_gateway_address != 'undefined' ){
+        lvalue.value=v6_dhcp_relay_gateway_address;
+    } else {
+        lvalue.value='';
+    }
+    $('#v6-dhcp-pools-modal').modal('show');
+}
+
+function excluded_v4_addresses_from_default_pool(svc_instance_id, excluded_v4_address)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('excluded_v4_address_from_default_pool');
+    if( excluded_v4_address != 'undefined' ){
+        lvalue.value=excluded_v4_address;
+    } else {
+        lvalue.value='';
+    }
+    $('#excluded-v4-address-from-default-pool-modal').modal('show');
+}
+
+
+function exluded_v4_address(svc_instance_id, excluded_v4_address)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('excluded_v4_address');
+    if( excluded_v4_address != 'undefined' ){
+        lvalue.value=excluded_v4_address;
+    } else {
+        lvalue.value='';
+    }
+    $('#excluded-v4-address-modal').modal('show');
+}
+
+function v4_dhcp_pools(svc_instance_id,v4_dhcp_relay_next_hop_address,v4_dhcp_pool_prefix,v4_dhcp_pool_prefix_length,v4_dhcp_relay_gateway_address)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v4_dhcp_relay_next_hop_address');
+    if( v4_dhcp_relay_next_hop_address != 'undefined' ){
+        lvalue.value=v4_dhcp_relay_next_hop_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_dhcp_pool_prefix');
+    if( v4_dhcp_pool_prefix != 'undefined' ){
+        lvalue.value=v4_dhcp_pool_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_dhcp_pool_prefix_length');
+    if( v4_dhcp_pool_prefix_length != 'undefined' ){
+        lvalue.value=v4_dhcp_pool_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_dhcp_relay_gateway_address');
+    if( v4_dhcp_relay_gateway_address != 'undefined' ){
+        lvalue.value=v4_dhcp_relay_gateway_address;
+    } else {
+        lvalue.value='';
+    }
+    $('#v4-dhcp-pools-modal').modal('show');
+}
+
+function dhcp(svc_instance_id,use_v4_default_pool,use_v6_default_pool,v4_dhcp_server_enabled,v6_dhcp_server_enabled,v6_dhcp_default_pool_prefix,v6_dhcp_default_pool_prefix_length,v4_dhcp_default_pool_prefix,v4_dhcp_default_pool_prefix_length)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('use_v4_default_pool');
+    if( use_v4_default_pool != 'undefined' ){
+        lvalue.value=use_v4_default_pool;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('use_v6_default_pool');
+    if( use_v6_default_pool != 'undefined' ){
+        lvalue.value=use_v6_default_pool;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_dhcp_server_enabled');
+    if( v4_dhcp_server_enabled != 'undefined' ){
+        lvalue.value=v4_dhcp_server_enabled;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_dhcp_server_enabled');
+    if( v6_dhcp_server_enabled != 'undefined' ){
+        lvalue.value=v6_dhcp_server_enabled;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_dhcp_default_pool_prefix');
+    if( v6_dhcp_default_pool_prefix != 'undefined' ){
+        lvalue.value=v6_dhcp_default_pool_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_dhcp_default_pool_prefix_length');
+    if( v6_dhcp_default_pool_prefix_length != 'undefined' ){
+        lvalue.value=v6_dhcp_default_pool_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_dhcp_default_pool_prefix');
+    if( v4_dhcp_default_pool_prefix != 'undefined' ){
+        lvalue.value=v4_dhcp_default_pool_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_dhcp_default_pool_prefix_length');
+    if( v4_dhcp_default_pool_prefix_length != 'undefined' ){
+        lvalue.value=v4_dhcp_default_pool_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    $('#dhcp-modal').modal('show');
+}
+
+function routing_protocol(svc_instance_id, routing_protocol)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('routing_protocol');
+    if( routing_protocol != 'undefined' ){
+        lvalue.value=routing_protocol;
+    } else {
+        lvalue.value='';
+    }
+    $('#routing-protocol-modal').modal('show');
+}
+function t_provided_v4_prefixes(svc_instance_id,v4_request_index,v4_lan_public_prefix_length,v4_lan_public_prefix)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v4_request_index');
+    if( v4_request_index != 'undefined' ){
+        lvalue.value=v4_request_index;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_lan_public_prefix_length');
+    if( v4_lan_public_prefix_length != 'undefined' ){
+        lvalue.value=v4_lan_public_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_lan_public_prefix');
+    if( v4_lan_public_prefix != 'undefined' ){
+        lvalue.value=v4_lan_public_prefix;
+    } else {
+        lvalue.value='';
+    }
+    $('#t-provided-v4-lan-public-prefixes-modal').modal('show');
+}
+
+function t_provided_v6_prefixes(svc_instance_id,v6_request_index,v6_lan_public_prefix_length,v6_lan_public_prefix)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('v6_request_index');
+    if( v6_request_index != 'undefined' ){
+        lvalue.value=v6_request_index;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_lan_public_prefix_length');
+    if( v6_lan_public_prefix_length != 'undefined' ){
+        lvalue.value=v6_lan_public_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_lan_public_prefix');
+    if( v6_lan_public_prefix != 'undefined' ){
+        lvalue.value=v6_lan_public_prefix;
+    } else {
+        lvalue.value='';
+    }
+    $('#t-provided-v6-lan-public-prefixes-modal').modal('show');
+}
+
+function vrlan_interface(svc_instance_id,vr_designation,v6_vr_lan_prefix, v6_vr_lan_prefix_length, v6_vce_wan_address, v4_vr_lan_prefix_length, v4_vr_lan_prefix, t_defaulted_v6_vrlan,v4_vce_loopback_address)
+{
+    document.getElementById('svc_instance_id').value = svc_instance_id;
+    var lvalue = document.getElementById('vr_designation');
+    if( vr_designation != 'undefined' ){
+        lvalue.value=vr_designation;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_vr_lan_prefix');
+    if( v6_vr_lan_prefix != 'undefined' ){
+        lvalue.value=v6_vr_lan_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_vr_lan_prefix_length');
+    if( v6_vr_lan_prefix_length != 'undefined' ){
+        lvalue.value=v6_vr_lan_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v6_vce_wan_address');
+    if( v6_vce_wan_address != 'undefined' ){
+        lvalue.value=v6_vce_wan_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_vr_lan_prefix_length');
+    if( v4_vr_lan_prefix_length != 'undefined' ){
+        lvalue.value=v4_vr_lan_prefix_length;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_vr_lan_prefix');
+    if( v4_vr_lan_prefix != 'undefined' ){
+        lvalue.value=v4_vr_lan_prefix;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('v4_vce_loopback_address');
+    if( v4_vce_loopback_address != 'undefined' ){
+        lvalue.value=v4_vce_loopback_address;
+    } else {
+        lvalue.value='';
+    }
+    lvalue = document.getElementById('t_defaulted_v6_vrlan');
+    if( t_defaulted_v6_vrlan != 'undefined' ){
+        lvalue.value=t_defaulted_v6_vrlan;
+    } else {
+        lvalue.value='';
+    }
+    $('#vr-lan-interface-modal').modal('show');
+}
+
+function getvrlan(svc_instance_id)
+{
+location.assign("/odl/getvrlan?request=" + svc_instance_id);
+return;
+}
+
+function svcInfo(service_instance_id,subscriber_name,service_type){
+	var lvalue = document.getElementById('service_instance_id'); 
+	if( service_instance_id != 'undefined' ){
+		lvalue.value=service_instance_id;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('subscriber_name'); 
+	if( subscriber_name != 'undefined' ){
+		lvalue.value=subscriber_name;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('service_type'); 
+	if( service_type != 'undefined' ){
+		lvalue.value=service_type;
+	} else {
+		lvalue.value='';
+	}
+	$('#service-information-modal').modal('show');
+}
+function l2Homing(evc_name,preferred_aic_clli,topology){
+	var lvalue = document.getElementById('evc_name'); 
+	if( evc_name != 'undefined' ){
+		lvalue.value=evc_name;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('preferred_aic_clli'); 
+	if( preferred_aic_clli != 'undefined' ){
+		lvalue.value=preferred_aic_clli;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('topology'); 
+	if( topology != 'undefined' ){
+		lvalue.value=topology;
+	} else {
+		lvalue.value='';
+	}
+	$('#l2-homing-information-modal').modal('show');
+}
+function reqHeader(svc_notification_url, svc_request_id, svc_action){
+	var lvalue = document.getElementById('svc_notification_url'); 
+	if( svc_notification_url != 'undefined' ){
+		lvalue.value=svc_notification_url;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('svc_request_id'); 
+	if( svc_request_id != 'undefined' ){
+		lvalue.value=svc_request_id;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('svc_action'); 
+	if( svc_action != 'undefined' ){
+		lvalue.value=svc_action;
+	} else {
+		lvalue.value='';
+	}
+	$('#sdnc-request-header-modal').modal('show');
+}
+function reqInfo(notification_url, source, order_number, request_id, order_version, 
+	request_action, request_sub_action){
+
+	var lvalue = document.getElementById('notification_url'); 
+	if( notification_url != 'undefined' ){
+		lvalue.value=notification_url;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('source'); 
+	if( source != 'undefined' ){
+		lvalue.value=source;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('order_number'); 
+	if( order_number != 'undefined' ){
+		lvalue.value=order_number;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('request_id'); 
+	if( request_id != 'undefined' ){
+		lvalue.value=request_id;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('order_version'); 
+	if( order_version != 'undefined' ){
+		lvalue.value=order_version;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('request_action'); 
+	if( request_action != 'undefined' ){
+		lvalue.value=request_action;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('request_sub_action'); 
+	if( request_sub_action != 'undefined' ){
+		lvalue.value=request_sub_action;
+	} else {
+		lvalue.value='';
+	}
+	$('#request-information-modal').modal('show');
+}
+function svcTopo(svc_vnf_type){
+	var lvalue = document.getElementById('svc_vnf_type'); 
+	if( svc_vnf_type != 'undefined' ){
+		lvalue.value=svc_vnf_type;
+	} else {
+		lvalue.value='';
+	}
+	$('#svc-topology-additional-data-modal').modal('show');
+}
+function operStatus(order_status, modify_timestamp,last_svc_request_id,last_sub_action,
+	t_defaulted_v6_vrlan, last_action, create_timestamp, maintenance_indicator, last_order_status){
+	var lvalue = document.getElementById('order_status'); 
+	if( order_status != 'undefined' ){
+		lvalue.value=order_status;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('modify_timestamp'); 
+	if( modify_timestamp != 'undefined' ){
+		lvalue.value=modify_timestamp;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('last_svc_request_id'); 
+	if( last_svc_request_id != 'undefined' ){
+		lvalue.value=last_svc_request_id;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('last_sub_action'); 
+	if( last_sub_action != 'undefined' ){
+		lvalue.value=last_sub_action;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('t_defaulted_v6_vrlan'); 
+	if( t_defaulted_v6_vrlan != 'undefined' ){
+		lvalue.value=t_defaulted_v6_vrlan;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('last_action'); 
+	if( last_action != 'undefined' ){
+		lvalue.value=last_action;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('create_timestamp'); 
+	if( create_timestamp != 'undefined' ){
+		lvalue.value=create_timestamp;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('maintenance_indicator'); 
+	if( maintenance_indicator != 'undefined' ){
+		lvalue.value=maintenance_indicator;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('last_order_status'); 
+	if( last_order_status != 'undefined' ){
+		lvalue.value=last_order_status;
+	} else {
+		lvalue.value='';
+	}
+	$('#oper-status-modal').modal('show');
+}
+function internetInfo(ip_version,internet_evc_speed_value,internet_evc_speed_units){
+
+	var lvalue = document.getElementById('ip_version'); 
+	if( ip_version != 'undefined' ){
+		lvalue.value=ip_version;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('internet_evc_speed_value'); 
+	if( internet_evc_speed_value != 'undefined' ){
+		lvalue.value=internet_evc_speed_value;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('internet_evc_speed_units'); 
+	if( internet_evc_speed_units != 'undefined' ){
+		lvalue.value=internet_evc_speed_units;
+	} else {
+		lvalue.value='';
+	}
+	$('#internet-evc-modal').modal('show');
+}
+function serviceStatus( rpc_name, final_indicator, request_status, rpc_action, l3sdn_action, l3sdn_subaction, response_message, response_code, response_timestamp){
+
+	var lvalue = document.getElementById('rpc_name'); 
+	if( rpc_name != 'undefined' ){
+		lvalue.value=rpc_name;
+	} else {
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('final_indicator'); 
+	if( final_indicator != 'undefined' ){
+		lvalue.value=final_indicator;
+	}else{
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('request_status'); 
+	if( request_status != 'undefined' ){
+		lvalue.value=request_status;
+	}else{
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('rpc_action'); 
+	if( rpc_action != 'undefined' ){
+		lvalue.value=rpc_action;
+	}else{
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('l3sdn_action'); 
+	if( l3sdn_action != 'undefined' ){
+		lvalue.value=l3sdn_action;
+	}else{
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('l3sdn_subaction'); 
+	if( l3sdn_subaction != 'undefined' ){
+		lvalue.value=l3sdn_subaction;
+	}else{
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('response_message'); 
+	if( response_message != 'undefined' ){
+		lvalue.value=response_message;
+	}else{
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('response_code'); 
+	if( lvalue != 'undefined' ){
+		response_code.value=response_code;
+	}else{
+		lvalue.value='';
+	}
+	lvalue = document.getElementById('response_timestamp'); 
+	if( response_timestamp != 'undefined' ){
+		lvalue.value=response_timestamp;
+	}else{
+		lvalue.value='';
+	}
+	$('#service-status-modal').modal('show');
+}
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/odl/view.ejs b/sdnc-a1-controller/oam/admportal/views/odl/view.ejs
new file mode 100644
index 0000000..34d7d93
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/odl/view.ejs
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <title>SDN-C AdminPortal</title>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+</head>
+<body class="container">
+
+<div class="actions" style="padding:0px 25px;">
+<h2>Worklist Orders - Request ID:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<%= response_obj.requests[0]['svc-request-id'] %></h2>
+</div>
+
+<div class="actions" style="padding:15px 0px;">
+	<button type="button" class="btn btn-primary aria-expanded="false" 
+			onclick="viewVNF('/odl/getvnf?request=<%= response_obj.requests[0]['svc-request-id'] %>')">VNF</button>
+</div>
+
+
+<div class="table-responsive">
+    <table class="table table-bordered">
+      <colgroup>
+        <col class="col-xs-1">
+        <col class="col-xs-7">
+      </colgroup>
+      <tbody>
+        <tr>
+          <th scope="row">Instance ID</th>
+          <td><%= response_obj.requests[0]['svc-instance-id'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">Action</th>
+          <td><%= response_obj.requests[0]['svc-action'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">VNF Type</th>
+          <td><%= response_obj.requests[0]['svc-vnf-type'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">Notification URL</th>
+          <td><%= response_obj.requests[0]['svc-notification-url'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">VNF Name</th>
+          <td><%= response_obj.requests[0].vnf['vnf-name'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">VNF IPv4 Addr</th>
+          <td><%= response_obj.requests[0].vnf['vnf-oam-ipv4-addr'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">VNF Type</th>
+          <td><%= response_obj.requests[0].vnf['vnf-type'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">VNF Status</th>
+          <td><%= response_obj.requests[0].vnf['vnf-status'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">AIC Site ID</th>
+          <td><%= response_obj.requests[0].vnf['aic-site-id'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">Availability Zone</th>
+          <td><%= response_obj.requests[0].vnf['availability-zone'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">Network Connection(s)</th>
+          <td><pre><%= JSON.stringify(response_obj.requests[0].vnf['network-connections'],null,4) %></pre></td>
+        </tr>
+      </tbody>
+    </table>
+  </div>
+
+   <% include ../partials/form %>
+
+    <footer>
+        <% include ../partials/footer %>
+    </footer>
+<script type="text/javascript">
+function viewVNF( requestid ) {
+alert(requestid);
+	location.assign(requestid);
+}
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/odl/viewvnf.ejs b/sdnc-a1-controller/oam/admportal/views/odl/viewvnf.ejs
new file mode 100644
index 0000000..dd2e05c
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/odl/viewvnf.ejs
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <title>SDN-C AdminPortal</title>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+</head>
+
+<body class="container">
+
+<div class="actions" style="padding:0px 25px;">
+<h2>Worklist Orders - VNF - Request ID <%= request_id %></h2>
+</div>
+
+<div class="table-responsive">
+    <table class="table table-bordered">
+      <colgroup>
+        <col class="col-xs-1">
+        <col class="col-xs-7">
+      </colgroup>
+      <tbody>
+        <tr>
+          <th scope="row">VNF OAM IPv4 Addr</th>
+          <td><%= vnf_obj.vnf['vnf-oam-ipv4-addr'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">AIC Site ID</th>
+          <td><%= vnf_obj.vnf['aic-site-id'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">VNF Name</th>
+          <td><%= vnf_obj.vnf['vnf-name'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">VNF Type</th>
+          <td><%= vnf_obj.vnf['vnf-type'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">VNF Status</th>
+          <td><%= vnf_obj.vnf['vnf-status'] %></td>
+        </tr>
+        <tr>
+          <th scope="row">Availability Zone</th>
+          <td><%= vnf_obj.vnf['availability-zone'] %></td>
+        </tr>
+		<tr>
+          <th scope="row">Network Connection(s)</th>
+          <td><pre><%= JSON.stringify(vnf_obj.vnf['network-connections'],null,4) %></pre></td>
+        </tr>
+
+	</tbody>
+    </table>
+ </div>
+
+    <footer>
+        <% include ../partials/footer %>
+    </footer>
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/pages/csplogout.ejs b/sdnc-a1-controller/oam/admportal/views/pages/csplogout.ejs
new file mode 100644
index 0000000..971feda
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/pages/csplogout.ejs
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+
+<% if (header == 'gamma') { %>
+  <title>SDN-C AdminPortal</title>
+<% } else if(header == 'sdn-mlc'){ %>
+  <title>SDNC-MLC AdminPortal</title>
+<% } else { %>
+  <title>SDN-C AdminPortal</title>
+<% } %>
+
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+</head>
+<body class="container">
+
+<div class="actions" style="padding:0px 25px;">
+<% if (header == 'gamma') { %>
+  <h2>SDN-C Admin Portal</h2>
+<% } else if(header == 'sdn-mlc'){ %>
+  <h2>SDNC-MLC Admin Portal</h2>
+<% } else { %>
+  <h2>SDN-C Admin Portal</h2>
+<% } %>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'><%=result.msg %></div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'><%=result.msg %></div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<p><a href="/login">Click here to login</a></p>
+
+
+<footer>
+         <% include ../partials/footer %>
+</footer>
+
+</body>
+</html>
diff --git a/sdnc-a1-controller/oam/admportal/views/pages/err.ejs b/sdnc-a1-controller/oam/admportal/views/pages/err.ejs
new file mode 100644
index 0000000..8ed51c6
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/pages/err.ejs
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <title>SDN-C AdminPortal</title>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+</head>
+<body class="container">
+
+<div class="actions" style="padding:0px 25px;">
+<h2>System Error</h2>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'><%=result.msg %></div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'><%=result.msg %></div>
+            <% } %>
+        <% } %>
+<% } %>
+
+
+<footer>
+	 <% include ../partials/footer %>
+</footer>
+    
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/pages/home.ejs b/sdnc-a1-controller/oam/admportal/views/pages/home.ejs
new file mode 100644
index 0000000..3eb4a0a
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/pages/home.ejs
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <title>SDN-C AdminPortal</title>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+</head>
+<body class="container">
+
+<div class="actions" style="padding:0px 25px;">
+<h2>SDN-C Admin Portal</h2>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <pre class='alert alert-success' role='alert'><%=result.msg %></pre>
+            <% } else { %>
+                <pre class='alert alert-danger' role='danger'><%=result.msg %></pre>
+            <% } %>
+        <% } %>
+<% } %>
+
+
+<footer>
+	 <% include ../partials/footer %>
+</footer>
+    
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/pages/home.ejs.orig b/sdnc-a1-controller/oam/admportal/views/pages/home.ejs.orig
new file mode 100644
index 0000000..353bc45
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/pages/home.ejs.orig
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title>SDN-C Admin Portal</title>
+  </head>
+  <body>
+    <h1>SDN-C Admin Portal</h1>
+    <p>Welcome to SDN-C Admin Portal</p>
+<% if ( typeof loggedInAdmin != 'undefined') { %>
+    <p><%= loggedInAdmin.firstName %></p>
+<% } %>
+<% if ( typeof result != 'undefined') { %>
+    <p><%= result %></p>
+<% } %>
+<% if ( typeof errmsg != 'undefined') { %>
+    <p><%= errmsg %></p>
+<% } %>
+
+  </body>
+</html>
diff --git a/sdnc-a1-controller/oam/admportal/views/pages/login.ejs b/sdnc-a1-controller/oam/admportal/views/pages/login.ejs
new file mode 100644
index 0000000..9da2f31
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/pages/login.ejs
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
+  	<title>AdminPortal</title>
+
+
+    <!-- Bootstrap core CSS -->
+  	<% include ../partials/head %>
+
+    <!-- Custom styles for this template -->
+	<link rel="stylesheet" href="/stylesheets/signin.css">
+
+  </head>
+
+  <body>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'><%=result.msg %></div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'><%=result.msg %></div>
+            <% } %>
+        <% } %>
+<% } %>
+
+    <div class="container">
+
+      <form class="form-signin" method="POST" action="/formlogin">
+        <h3 class="form-signin-heading">AdminPortal Login</h3>
+
+				<input type="hidden" name="_csrf" value="<%= csrfToken %>" />
+        <input type="text" name="email" id="email" class="form-control" placeholder="Email" required>
+        <input type="password" name="password" id="password" class="form-control" placeholder="Password" required>
+
+        <button class="btn btn-lg btn-primary btn-block" type="submit">Submit</button>
+      </form>
+
+    </div> <!-- /container -->
+
+  </body>
+</html>
diff --git a/sdnc-a1-controller/oam/admportal/views/pages/setuplogin.ejs b/sdnc-a1-controller/oam/admportal/views/pages/setuplogin.ejs
new file mode 100644
index 0000000..ef75e84
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/pages/setuplogin.ejs
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
+  	<title>SDN-C AdminPortal</title>
+
+
+    <!-- Bootstrap core CSS -->
+  	<% include ../partials/head %>
+
+    <!-- Custom styles for this template -->
+	<link rel="stylesheet" href="/stylesheets/signin.css">
+
+  </head>
+
+  <body>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'><%=result.msg %></div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'><%=result.msg %></div>
+            <% } %>
+        <% } %>
+<% } %>
+
+    <div class="container">
+
+      <form class="form-signin" method="POST" action="/formSetupLogin">
+        <h3 class="form-signin-heading">Enter Initial User Information</h3>
+
+        <label for="firstName" class="sr-only">First Name</label>
+        <input type="text" name="firstName" id="firstName" class="form-control" placeholder="First Name" required autofocus>
+
+        <label for="lastName" class="sr-only">Last Name</label>
+        <input type="text" name="lastName" id="lastName" class="form-control" placeholder="Last Name" required>
+
+        <label for="attuid" class="sr-only">ATTUID</label>
+        <input type="text" name="attuid" id="attuid" class="form-control" placeholder="ATTUID" required>
+
+        <button class="btn btn-lg btn-primary btn-block" type="submit">Setup Login</button>
+      </form>
+
+    </div> <!-- /container -->
+
+  </body>
+</html>
diff --git a/sdnc-a1-controller/oam/admportal/views/pages/signup.ejs b/sdnc-a1-controller/oam/admportal/views/pages/signup.ejs
new file mode 100644
index 0000000..2a03953
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/pages/signup.ejs
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
+  	<title>AdminPortal</title>
+
+
+    <!-- Bootstrap core CSS -->
+  	<% include ../partials/head %>
+
+    <!-- Custom styles for this template -->
+	<link rel="stylesheet" href="/stylesheets/signin.css">
+
+  </head>
+
+  <body>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'><%=result.msg %></div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'><%=result.msg %></div>
+            <% } %>
+        <% } %>
+<% } %>
+
+    <div class="container">
+
+      <form class="form-signin" method="POST" action="/formSignUp">
+        <h3 class="form-signin-heading">AdminPortal Signup</h3>
+
+				<input type="hidden" name="_csrf" value="<%= csrfToken %>" />
+        <input type="email" name="nf_email" id="nf_email" class="form-control" placeholder="Email Address" required>
+        <input type="password" name="nf_password" id="nf_password" class="form-control" placeholder="Password" required>
+
+        <button class="btn btn-lg btn-primary btn-block" type="submit">Submit</button>
+      </form>
+
+    </div> <!-- /container -->
+
+  </body>
+</html>
diff --git a/sdnc-a1-controller/oam/admportal/views/pages/testdb.ejs b/sdnc-a1-controller/oam/admportal/views/pages/testdb.ejs
new file mode 100644
index 0000000..837b479
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/pages/testdb.ejs
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <title>SDN-C AdminPortal</title>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/ro_header %>
+</head>
+<body class="container">
+
+<div class="actions" style="padding:0px 25px;">
+<h2>SDN-C AdminPortal Healthcheck</h2>
+</div>
+
+<% if (typeof osObj != 'undefined')
+{ %>
+	<pre>
+		Hostname     : <%= osObj.hostname %>
+		Type         : <%= osObj.type %>
+		Platform     : <%= osObj.platform %>
+		Architecture : <%= osObj.arch %>
+		Release      : <%= osObj.release %>
+		Uptime       : <%= osObj.uptime %>
+		Total Memory : <%= osObj.totalmem %>
+	
+		<%= osObj.dbhealth %>
+	</pre>
+<% } %>
+
+
+<footer>
+	 <% include ../partials/footer %>
+</footer>
+    
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/add_service_homing.ejs b/sdnc-a1-controller/oam/admportal/views/partials/add_service_homing.ejs
new file mode 100644
index 0000000..4a75125
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/add_service_homing.ejs
@@ -0,0 +1,52 @@
+   <div class="modal fade" id="add_service_homing" tabindex="-1" role="dialog" 
+		aria-labelledby="add_service_homing_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add Service Homing</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/gamma/addServiceHoming" method="POST">
+              <div class="form-group">
+                <label for="nf_service_type">*Service Type</label>
+                <input readonly type="text" class="form-control" name="nf_service_type" id="nf_service_type" value="SDN-ETHERNET-INTERNET">
+              </div>
+              <div class="form-group">
+                <label for="nf_lata">*LATA</label>
+                <input type="text" class="form-control" name="nf_lata" id="nf_lata" maxlength="12" placeholder="int(3)">
+              </div>
+              <div class="form-group">
+                <label for="nf_hubbing_city_type">*Hubbing City Type</label>
+                <input maxlength="40" type="text" class="form-control" name="nf_hubbing_city_type" id="nf_hubbing_city_type" placeholder="varchar(40)">
+              </div>
+              <div class="form-group">
+                <label for="nf_latitude">Latitude</label>
+                <input type="text" class="form-control" name="nf_latitude" id="nf_latitude" maxlength="24" placeholder="float">
+              </div>
+              <div class="form-group">
+                <label for="nf_longitude">Longitude</label>
+                <input type="text" class="form-control" name="nf_longitude" id="nf_longitude" maxlength="24" placeholder="float">
+			  </div>
+              <div class="form-group">
+                <label for="nf_primary_aic_site_name">*Primary Site Name</label>
+                <input maxlength="100" type="text" class="form-control" name="nf_primary_aic_site_name" id="nf_primary_aic_site_name" placeholder="varchar(100)">
+			  </div>
+              <div class="form-group">
+                <label for="nf_secondary_aic_site_name">Secondary Site Name</label>
+                <input maxlength="100" type="text" class="form-control" name="nf_secondary_aic_site_name" id="nf_secondary_aic_site_name" placeholder="varchar(100)">
+              </div>
+              <div class="form-group">
+                <label for="nf_tertiary_aic_site_name">Tertiary Site Name</label>
+                <input maxlength="100" type="text" class="form-control" name="nf_tertiary_aic_site_name" id="nf_tertiary_aic_site_name" placeholder="varchar(100)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="nf_action" id="nf_action">
+				<button type="button" class="btn btn-primary" onclick="submitServiceHoming(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/alts_credentials.ejs b/sdnc-a1-controller/oam/admportal/views/partials/alts_credentials.ejs
new file mode 100644
index 0000000..6d5f113
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/alts_credentials.ejs
@@ -0,0 +1,65 @@
+<div class="modal fade" id="add_alts_credentials" tabindex="-1" role="dialog"
+        aria-labelledby="add_alts_credentials_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add ALTS Credentials</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/ucpe/addAltsCredentials" method="POST">
+              <div class="form-group">
+                <label for="nf_alts_username">*ALTS Username</label>
+                <input type="text" class="form-control" maxlength="255" name="nf_alts_username" id="nf_alts_username" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_alts_password">*ALTS Password</label>
+                <input type="password" class="form-control" maxlength="255" name="nf_alts_password" id="nf_alts_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_alts_password">*Confirm ALTS Password</label>
+                <input type="password" class="form-control" maxlength="255" name="nf_confirm_alts_password" id="nf_confirm_alts_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <button type="button" class="btn btn-primary" onclick="submitAltsCredentials(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+   <div class="modal fade" id="update_alts_credentials" tabindex="-1" role="dialog" 
+		aria-labelledby="update_alts_credentials_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update ALTS Credentials</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/ucpe/updateAltsCredentials" method="POST">
+              <div class="form-group">
+                <label for="uf_alts_username">*ALTS Username</label>
+                <input type="text" class="form-control" maxlength="255" name="uf_alts_username" id="uf_alts_username">
+              </div>
+              <div class="form-group">
+                <label for="uf_alts_password">*ALTS Password</label>
+                <input type="password" class="form-control" maxlength="255" name="uf_alts_password" id="uf_alts_password">
+			  </div>
+              <div class="form-group">
+                <label for="uf_alts_password">*Confirm ALTS Password</label>
+                <input type="password" class="form-control" maxlength="255" name="uf_confirm_alts_password" id="uf_confirm_alts_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submitAltsCredentials(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/dhcp.ejs b/sdnc-a1-controller/oam/admportal/views/partials/dhcp.ejs
new file mode 100644
index 0000000..a290c32
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/dhcp.ejs
@@ -0,0 +1,66 @@
+   <div class="modal fade" id="dhcp-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="dhcp-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">dhcp</h4>
+          </div>
+          <div class="modal-body">
+            <form id="dhcp_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="use_v4_default_pool">use-v4-default-pool</label>
+                <input type="text" class="form-control" name="use_v4_default_pool" id="use_v4_default_pool">
+              </div>
+              <div class="form-group">
+                <label for="use_v6_default_pool">use-v6-default-pool</label>
+                <input type="text" class="form-control" name="use_v6_default_pool" id="use_v6_default_pool">
+              </div>
+              <div class="form-group">
+                <label for="v4_dhcp_server_enabled">v4-dhcp-server-enabled</label>
+                <input type="text" class="form-control" name="v4_dhcp_server_enabled" id="v4_dhcp_server_enabled">
+              </div>
+              <div class="form-group">
+                <label for="v6_dhcp_server_enabled">v6-dhcp-server-enabled</label>
+                <input type="text" class="form-control" name="v6_dhcp_server_enabled" id="v6_dhcp_server_enabled">
+              </div>
+              <div class="form-group">
+                <label for="v6_dhcp_default_pool_prefix">v6-dhcp-default-pool-prefix</label>
+                <input type="text" class="form-control" name="v6_dhcp_default_pool_prefix" id="v6_dhcp_default_pool_prefix">
+              </div>
+              <div class="form-group">
+                <label for="v6_dhcp_default_pool_prefix_length">v6-dhcp-default-pool-prefix-length</label>
+                <input type="text" class="form-control" name="v6_dhcp_default_pool_prefix_length" id="v6_dhcp_default_pool_prefix_length">
+              </div>
+              <div class="form-group">
+                <label for="v4_dhcp_default_pool_prefix">v4-dhcp-default-pool-prefix</label>
+                <input type="text" class="form-control" name="v4_dhcp_default_pool_prefix" id="v4_dhcp_default_pool_prefix">
+              </div>
+              <div class="form-group">
+                <label for="v4_dhcp_default_pool_prefix_length">v4-dhcp-default-pool-prefix-length</label>
+                <input type="text" class="form-control" name="v4_dhcp_default_pool_prefix_length" id="v4_dhcp_default_pool_prefix_length">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#dhcp-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/env.ejs b/sdnc-a1-controller/oam/admportal/views/partials/env.ejs
new file mode 100644
index 0000000..249a707
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/env.ejs
@@ -0,0 +1 @@
+-dev
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/equipment.ejs b/sdnc-a1-controller/oam/admportal/views/partials/equipment.ejs
new file mode 100644
index 0000000..5f4d798
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/equipment.ejs
@@ -0,0 +1,58 @@
+   <div class="modal fade" 
+		id="equipment-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="equipment-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">equipment</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="equipment_role">equipment-role</label>
+                <input type="text" class="form-control" name="equipment_role" id="equipment_role">
+              </div>
+              <div class="form-group">
+                <label for="ptnii_name">ptnii-name</label>
+                <input type="text" class="form-control" name="ptnii_name" id="ptnii_name">
+              </div>
+              <div class="form-group">
+                <label for="ipv4_oam_address">ipv4-oam-address</label>
+                <input type="text" class="form-control" name="ipv4_oam_address" id="ipv4_oam_address">
+              </div>
+              <div class="form-group">
+                <label for="ipv4_oam_gateway_address">ipv4-oam-gateway-address</label>
+                <input type="text" class="form-control" name="ipv4_oam_gateway_address" id="ipv4_oam_gateway_address">
+              </div>
+              <div class="form-group">
+                <label for="v4_loopback0_ip_address">v4-loopback0-ip-address</label>
+                <input type="text" class="form-control" name="v4_loopback0_ip_address" id="v4_loopback0_ip_address">
+              </div>
+              <div class="form-group">
+                <label for="ipv4_oam_gateway_address_prefix_length">ipv4-oam-gateway-address-prefix-length</label>
+                <input type="text" class="form-control" name="ipv4_oam_gateway_address_prefix_length" id="ipv4_oam_gateway_address_prefix_length">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#equipment-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/excluded_v4_address.ejs b/sdnc-a1-controller/oam/admportal/views/partials/excluded_v4_address.ejs
new file mode 100644
index 0000000..e74d324
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/excluded_v4_address.ejs
@@ -0,0 +1,38 @@
+   <div class="modal fade" id="excluded-v4-address-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="excluded-v4-address-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">dhcp</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="exclded_v4_address">exclded-v4-address</label>
+                <input type="text" class="form-control" name="exclded_v4_address" id="exclded_v4_address">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#excluded-v4-address-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/excluded_v4_address_from_default_pool.ejs b/sdnc-a1-controller/oam/admportal/views/partials/excluded_v4_address_from_default_pool.ejs
new file mode 100644
index 0000000..442fd34
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/excluded_v4_address_from_default_pool.ejs
@@ -0,0 +1,38 @@
+   <div class="modal fade" id="excluded-v4-address-from-default-pool-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="excluded-v4-address-from-default-pool-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">excluded-v4-addresses-from-default-pool</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="excluded_v4_address_from_default_pool">excluded-v4-address</label>
+                <input type="text" class="form-control" name="excluded_v4_address_from_default_pool" id="excluded_v4_address_from_default_pool">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#excluded-v4-address-from-default-pool-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/excluded_v6_address_from_default_pool.ejs b/sdnc-a1-controller/oam/admportal/views/partials/excluded_v6_address_from_default_pool.ejs
new file mode 100644
index 0000000..a91d0a7
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/excluded_v6_address_from_default_pool.ejs
@@ -0,0 +1,38 @@
+   <div class="modal fade" id="excluded-v6-address-from-default-pool-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="excluded-v6-address-from-default-pool-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">excluded-v6-addresses-from-default-pool</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="excluded_v6_address_from_default_pool">excluded-v6-address</label>
+                <input type="text" class="form-control" name="excluded_v6_address_from_default_pool" id="excluded_v6_address_from_default_pool">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#excluded-v6-address-from-default-pool-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/excluded_v6_addresses.ejs b/sdnc-a1-controller/oam/admportal/views/partials/excluded_v6_addresses.ejs
new file mode 100644
index 0000000..d155383
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/excluded_v6_addresses.ejs
@@ -0,0 +1,38 @@
+   <div class="modal fade" id="excluded-v6-addresses-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="excluded-v6-addresses-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">excluded-v6-addresses</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="excluded_v6_address">excluded-v6-address</label>
+                <input type="text" class="form-control" name="excluded_v6_address" id="excluded_v6_address">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#excluded-v6-addresses-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/feature_list.ejs b/sdnc-a1-controller/oam/admportal/views/partials/feature_list.ejs
new file mode 100644
index 0000000..95ebf87
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/feature_list.ejs
@@ -0,0 +1,50 @@
+   <div class="modal fade" 
+		id="feature-list-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="feature-list-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">feature-list</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="feature_instance_id">feature-instance-id</label>
+                <input type="text" class="form-control" name="feature_instance_id" id="feature_instance_id">
+              </div>
+              <div class="form-group">
+                <label for="feature_instance_xpath">feature-instance-xpath</label>
+                <input type="text" class="form-control" name="feature_instance_xpath" id="feature_instance_xpath">
+              </div>
+              <div class="form-group">
+                <label for="feature_sub_type">feature-sub-type</label>
+                <input type="text" class="form-control" name="feature_sub_type" id="feature_sub_type">
+              </div>
+              <div class="form-group">
+                <label for="feature_type">feature-type</label>
+                <input type="text" class="form-control" name="feature_type" id="feature_type">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#feature-list-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/firewall_lite.ejs b/sdnc-a1-controller/oam/admportal/views/partials/firewall_lite.ejs
new file mode 100644
index 0000000..b26d078
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/firewall_lite.ejs
@@ -0,0 +1,43 @@
+   <div class="modal fade" id="firewall-lite-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="firewall-lite-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">firewall-lite</h4>
+          </div>
+          <div class="modal-body">
+            <form id="firewall_lite_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="stateful_firewall_lite_v4_enabled">stateful-firewall-lite-v4-enabled</label>
+                <input type="text" class="form-control" name="stateful_firewall_lite_v4_enabled" id="stateful_firewall_lite_v4_enabled">
+              </div>
+              <div class="form-group">
+                <label for="stateful_firewall_lite_v6_enabled">stateful-firewall-lite-v6-enabled</label>
+                <input type="text" class="form-control" name="stateful_firewall_lite_v6_enabled" id="stateful_firewall_lite_v6_enabled">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="firewall_lite_vr_designation" id="firewall_lite_vr_designation">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#firewall-lite-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/footer.ejs b/sdnc-a1-controller/oam/admportal/views/partials/footer.ejs
new file mode 100644
index 0000000..c04e26d
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/footer.ejs
@@ -0,0 +1,5 @@
+
+<!-- views/partials/footer.ejs -->
+
+<p class="text-center text-muted">© Copyright 2017 AT&T Intellectual Property</p>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/form.ejs b/sdnc-a1-controller/oam/admportal/views/partials/form.ejs
new file mode 100644
index 0000000..00d3c0c
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/form.ejs
@@ -0,0 +1,55 @@
+   <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title" id="myModalLabel">New Request</h4>
+          </div>
+          <div class="modal-body">
+            <form id="addEntry" role="form" action="svc-topology-operation">
+              <!--
+              <div class="form-group">
+                <label for="svc-request-id">svc-request-id</label>
+                <input type="text" class="form-control" name="svc-request-id" id="svc-request-id" value="req-0001">
+              </div>
+              -->
+              <div class="form-group">
+                <label for="svc-instance-id">svc-instance-id</label>
+                <input type="text" class="form-control" name="svc-instance-id" id="svc-instance-id" value="siid-0001">
+              </div>
+              <div class="form-group">
+                <label for="svc-vnf-type">svc-vnf-type</label>
+                <select class="form-control" name="svc-vnf-type" id="svc-vnf-type">
+                    <option value=vce>"vce"</option>
+                    <option value=Unknown>"Unknown"</option>
+                </select>
+              </div>
+              <div class="form-group">
+                <label for="svc-action">svc-action</label>
+                <select class="form-control" name="svc-action" id="svc-action">
+                    <option value=reserve>"reserve"</option>
+                    <option value=create>"create"</option>
+                    <option value=activate>"activate"</option>
+                    <option value=query>"query"</option>
+                    <option value=update>"update"</option>
+                    <option value=delete>"delete"</option>
+                </select>
+              </div>
+              <div class="form-group">
+                <label for="svc-notification-url">svc-notification-url</label>
+                <input type="text" class="form-control" name="svc-notification-url" id="svc-notification-url" value="">
+              </div>
+              <div class="form-group">
+                <label for="desc">svc-aic-site-id</label>
+                <input type="text" class="form-control" name="svc-aic-site-id" id="svc-aic-site-id" value="att-0001">
+              </div>
+              <div class="form-group">
+                <button type="submit" class="btn btn-primary">Save</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/gammaHeader.ejs b/sdnc-a1-controller/oam/admportal/views/partials/gammaHeader.ejs
new file mode 100644
index 0000000..8af8396
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/gammaHeader.ejs
@@ -0,0 +1,63 @@
+
+<!-- views/partials/header.ejs -->
+<nav class="navbar navbar-default" role="navigation">
+    <div class="container-fluid">
+
+
+		<div class="navbar-header">
+			<a class="navbar-brand" href="#">&nbsp;AdminPortal</a>
+    	</div>
+
+        <div class="btn-toolbar" role="toolbar" aria-label="Toolbar with button groups">
+
+        <div class="btn-group" role="group">
+            <button type="button" class="btn btn-default navbar-btn "
+				onclick="location.assign('/sla/listSLA');">SLA</button>
+
+			<div class="btn-group" role="group">
+      			<button type="button" class="btn btn-default navbar-btn dropdown-toggle" 
+					data-toggle="dropdown" 
+					aria-expanded="false">Profiles <span class="caret"></span>
+				</button>
+      			<ul class="dropdown-menu" role="menu">
+        			<li><a href="/mobility/getVnfProfile">VNF Profile</a></li>
+				</ul>
+			</div>
+
+			<div class="btn-group" role="group">
+                <button type="button" class="btn btn-default navbar-btn dropdown-toggle"
+                    data-toggle="dropdown"
+                    aria-expanded="false">Preload Tools <span class="caret"></span>
+                </button>
+                <ul class="dropdown-menu" role="menu">
+        			<li><a href="/mobility/getVnfData">Pre-load VNF Data</a></li>
+        			<li><a href="/mobility/getVnfNetworkData">Pre-load VNF Network Data</a></li>
+                </ul>
+            </div>
+
+			<!-- LOGS
+			<div class="btn-group" role="group">
+      			<button type="button" class="btn btn-default navbar-btn dropdown-toggle" 
+					data-toggle="dropdown" 
+					aria-expanded="false">Logs  <span class="caret"></span></button>
+      			<ul class="dropdown-menu" role="menu">
+        			<li><a href="/logs/getUserTrace">User Trace</a></li>
+        			<li><a href="/logs/getAccessLog">Access Log</a></li>
+				</ul>
+			</div>
+			-->
+
+            <button type="button" class="btn btn-default navbar-btn"
+				onclick="location.assign('/user/listUsers');">User Admin</button>
+            <button type="button" class="btn btn-default navbar-btn"
+				onclick="location.assign('/logout');">Logout</button>
+        </div>
+        </div>
+    </div>
+
+</nav>
+
+<script type="text/javascript">
+$('[data-submenu]').submenupicker();
+$('[vlanidpool-submenu]').submenupicker();
+</script>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/head.ejs b/sdnc-a1-controller/oam/admportal/views/partials/head.ejs
new file mode 100644
index 0000000..066bf3c
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/head.ejs
@@ -0,0 +1,20 @@
+<!-- Latest compiled and minified CSS -->
+<link rel="stylesheet" href="/stylesheets/bootstrap.min.css">
+<link rel="stylesheet" href="/stylesheets/bootstrap-theme.min.css">
+<link rel="stylesheet" href="/stylesheets/dataTables.bootstrap.min.css">
+<!-- <link rel="stylesheet" href="/stylesheets/bootstrap-table.css"> -->
+<link rel="stylesheet" href="/stylesheets/bootstrap-submenu.min.css">
+<link rel="stylesheet" href="/stylesheets/jquery.treegrid.css">
+
+<!-- jquery downloaded from jquery.com/download -->
+<!-- <script src="/javascripts/jquery.min.js"></script> -->
+<script src="/javascripts/jquery-2.2.0.min.js"></script>
+<script src="/javascripts/jquery.dataTables.min.js"></script>
+<script src="/javascripts/jquery.treegrid.js"></script>
+<script src="/javascripts/jquery.treegrid.bootstrap3.js"></script>
+<script src="/javascripts/bootstrap.min.js"></script>
+<!-- <script src="/javascripts/bootstrap-table.js"></script> -->
+<script src="/javascripts/bootstrap-submenu.min.js"></script>
+<script src="/javascripts/bootbox.min.js"></script>
+<script src="/javascripts/dataTables.bootstrap.min.js"></script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/head.ejs.orig b/sdnc-a1-controller/oam/admportal/views/partials/head.ejs.orig
new file mode 100644
index 0000000..2f6f537
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/head.ejs.orig
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML>
+<meta charset="UTF-8">
+<title>SDN-C AdminPortal</title>
+
+<!-- Latest compiled and minified CSS -->
+<link rel="stylesheet" href="/stylesheets/bootstrap.min.css">
+
+<!-- Optional theme -->
+<link rel="stylesheet" href="/stylesheets/bootstrap-theme.min.css">
+<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
+<script src="/javascripts/jquery.min.js"></script>
+<!-- Latest compiled and minified JavaScript -->
+<script src="/javascripts/bootstrap.min.js"></script>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/header.ejs b/sdnc-a1-controller/oam/admportal/views/partials/header.ejs
new file mode 100644
index 0000000..6342154
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/header.ejs
@@ -0,0 +1,11 @@
+<% if (header == 'gamma') { %>
+  <% include ../partials/gammaHeader %>
+<% } else if(header == 'sdn-mlc'){ %>
+  <% include ../partials/sdnmlcHeader %>
+<% } else if(header == 'sdn-fc'){ %>
+  <% include ../partials/sdnfcHeader %>
+<% } else { %>
+  <% include ../partials/gammaHeader %>
+<% } %>
+
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/header.ejs.orig b/sdnc-a1-controller/oam/admportal/views/partials/header.ejs.orig
new file mode 100644
index 0000000..830bd27
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/header.ejs.orig
@@ -0,0 +1,55 @@
+<!-- views/partials/header.ejs -->
+<nav class="navbar navbar-default" role="navigation">
+    <div class="container-fluid">
+
+		<div class="navbar-header">
+            <a class="navbar-brand" href="#">&nbsp;SDN-C AdminPortal</a>
+        </div>
+
+        <div class="btn-toolbar" role="toolbar" aria-label="Toolbar with button groups">
+
+        <div class="btn-group" role="group">
+            <button type="button" class="btn btn-default navbar-btn"
+				onclick="location.assign('/sla/listSLA');">SLA</button>
+
+<div class="btn-group">
+      <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Default <span class="caret"></span></button>
+      <ul class="dropdown-menu" role="menu">
+        <li><a href="#">Action</a></li>
+        <li><a href="#">Another action</a></li>
+        <li><a href="#">Something else here</a></li>
+        <li class="divider"></li>
+        <li><a href="#">Separated link</a></li>
+      </ul>
+    </div>
+
+            <button type="button" class="btn btn-default navbar-btn">Interfaces</button>
+            <button type="button" class="btn btn-default navbar-btn">VMs</button>
+            <button type="button" class="btn btn-default navbar-btn"
+				onclick="location.assign('/odl/listWklst');">Worklist Orders</button>
+            <button type="button" class="btn btn-default navbar-btn">Connections</button>
+            <button type="button" class="btn btn-default navbar-btn">VNFs</button>
+            <button type="button" class="btn btn-default navbar-btn">VLANs</button>
+            <button type="button" class="btn btn-default navbar-btn"
+				onclick="location.assign('/user/listUsers');">User Admin</button>
+            <button type="button" class="btn btn-default navbar-btn navbar-btn"
+				onclick="location.assign('/logout');">Logout</button>
+			<!-- <p class="btn-toolbar" role="group">ar3165 | Al Rotundo</p> -->
+        </div>
+        </div>
+    </div>
+</nav>
+
+<!-- Single button -->
+<div class="btn-group">
+  <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+    Action <span class="caret"></span>
+  </button>
+  <ul class="dropdown-menu" role="menu">
+    <li><a href="#">Action</a></li>
+    <li><a href="#">Another action</a></li>
+    <li><a href="#">Something else here</a></li>
+    <li class="divider"></li>
+    <li><a href="#">Separated link</a></li>
+  </ul>
+</div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/interface.ejs b/sdnc-a1-controller/oam/admportal/views/partials/interface.ejs
new file mode 100644
index 0000000..c8afce9
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/interface.ejs
@@ -0,0 +1,42 @@
+   <div class="modal fade" 
+		id="interface-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="interface-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">interface</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="interface_name">interface-name</label>
+                <input type="text" class="form-control" name="interface_name" id="interface_name">
+              </div>
+              <div class="form-group">
+                <label for="interface_role">interface_role</label>
+                <input type="text" class="form-control" name="interface_role" id="interface_role">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#interface-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/internet_evc_modal.ejs b/sdnc-a1-controller/oam/admportal/views/partials/internet_evc_modal.ejs
new file mode 100644
index 0000000..70848ba
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/internet_evc_modal.ejs
@@ -0,0 +1,44 @@
+   <div class="modal fade" id="internet-evc-modal" tabindex="-1" role="dialog" aria-labelledby="internet-evc-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title" id="internet-evc-modal-label">Internet EVC Access Information</h4>
+          </div>
+          <div class="modal-body">
+            <form id="internet_evc_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="ip_version">ip-version</label>
+                <input type="text" class="form-control" name="ip_version" id="ip_version">
+              </div>
+              <div class="form-group">
+                <label for="internet_evc_speed_value">internet-evc-speed-value</label>
+                <input type="text" class="form-control" name="internet_evc_speed_value" id="internet_evc_speed_value">
+              </div>
+              <div class="form-group">
+                <label for="internet_evc_speed_units">internet-evc-speed-units</label>
+                <input type="text" class="form-control" name="internet_evc_speed_units" id="internet_evc_speed_units">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#service-status-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/ipv4_infrastructure_static_route.ejs b/sdnc-a1-controller/oam/admportal/views/partials/ipv4_infrastructure_static_route.ejs
new file mode 100644
index 0000000..b9b9208
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/ipv4_infrastructure_static_route.ejs
@@ -0,0 +1,50 @@
+   <div class="modal fade" 
+		id="ipv4-infrastructure-static-route-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="ipv4-infrastructure-static-route-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">ipv4-infrastructure-static-route</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="ipv4_outgoing_interface">ipv4-outgoing-interface</label>
+                <input type="text" class="form-control" name="ipv4_outgoing_interface" id="ipv4_outgoing_interface">
+              </div>
+              <div class="form-group">
+                <label for="ipv4_next_hop_address">ipv4-next-hop-address</label>
+                <input type="text" class="form-control" name="ipv4_next_hop_address" id="ipv4_next_hop_address">
+              </div>
+              <div class="form-group">
+                <label for="ipv4_dest_prefix">ipv4-dest-prefix</label>
+                <input type="text" class="form-control" name="ipv4_dest_prefix" id="ipv4_dest_prefix">
+              </div>
+              <div class="form-group">
+                <label for="ipv4_dest_prefix_length">ipv4-dest-prefix-length</label>
+                <input type="text" class="form-control" name="ipv4_dest_prefix_length" id="ipv4_dest_prefix_length">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#ipv4-infrastructure-static-route-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/ipv6_infrastructure_static_route.ejs b/sdnc-a1-controller/oam/admportal/views/partials/ipv6_infrastructure_static_route.ejs
new file mode 100644
index 0000000..4921e2e
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/ipv6_infrastructure_static_route.ejs
@@ -0,0 +1,50 @@
+   <div class="modal fade" 
+		id="ipv6-infrastructure-static-route-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="ipv6-infrastructure-static-route-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">ipv6-infrastructure-static-route</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="ipv6_outgoing_interface">ipv6-outgoing-interface</label>
+                <input type="text" class="form-control" name="ipv6_outgoing_interface" id="ipv6_outgoing_interface">
+              </div>
+              <div class="form-group">
+                <label for="ipv6_next_hop_address">ipv6-next-hop-address</label>
+                <input type="text" class="form-control" name="ipv6_next_hop_address" id="ipv6_next_hop_address">
+              </div>
+              <div class="form-group">
+                <label for="ipv6_dest_prefix">ipv6-dest-prefix</label>
+                <input type="text" class="form-control" name="ipv6_dest_prefix" id="ipv6_dest_prefix">
+              </div>
+              <div class="form-group">
+                <label for="ipv6_dest_prefix_length">ipv6-dest-prefix-length</label>
+                <input type="text" class="form-control" name="ipv6_dest_prefix_length" id="ipv6_dest_prefix_length">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#ipv6-infrastructure-static-route-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/l2_homing_information_modal.ejs b/sdnc-a1-controller/oam/admportal/views/partials/l2_homing_information_modal.ejs
new file mode 100644
index 0000000..03af054
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/l2_homing_information_modal.ejs
@@ -0,0 +1,46 @@
+   <div class="modal fade" 
+		id="l2-homing-information-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="l2-homing-information-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title" id="l2-homing-information-modal-label">l2-homing-information</h4>
+          </div>
+          <div class="modal-body">
+            <form id="l2_homing_information_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="evc_name">evc-name</label>
+                <input type="text" class="form-control" name="evc_name" id="evc_name">
+              </div>
+              <div class="form-group">
+                <label for="preferred_aic_clli">preferred-aic-clli</label>
+                <input type="text" class="form-control" name="preferred_aic_clli" id="preferred_aic_clli">
+              </div>
+              <div class="form-group">
+                <label for="topology">topology</label>
+                <input type="text" class="form-control" name="topology" id="topology">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#service-status-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/l3_interface_ipv4_address_list.ejs b/sdnc-a1-controller/oam/admportal/views/partials/l3_interface_ipv4_address_list.ejs
new file mode 100644
index 0000000..50c66cd
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/l3_interface_ipv4_address_list.ejs
@@ -0,0 +1,42 @@
+   <div class="modal fade" 
+		id="l3-interface-ipv4-address-list-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="l3-interface-ipv4-address-list-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">l3-interface-ipv4-address-list</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="l3_interface_ipv4_address">l3-interface-ipv4-address</label>
+                <input type="text" class="form-control" name="l3_interface_ipv4_address" id="l3_interface_ipv4_address">
+              </div>
+              <div class="form-group">
+                <label for="l3_interface_ipv4_prefix_length">l3-interface-ipv4-prefix-length</label>
+                <input type="text" class="form-control" name="l3_interface_ipv4_prefix_length" id="l3_interface_ipv4_prefix_length">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#l3-interface-ipv4-address-list-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/l3_interface_ipv6_address_list.ejs b/sdnc-a1-controller/oam/admportal/views/partials/l3_interface_ipv6_address_list.ejs
new file mode 100644
index 0000000..9faec4c
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/l3_interface_ipv6_address_list.ejs
@@ -0,0 +1,42 @@
+   <div class="modal fade" 
+		id="l3-interface-ipv6-address-list-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="l3-interface-ipv6-address-list-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">l3-interface-ipv6-address-list</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="l3_interface_ipv6_address">l3-interface-ipv6-address</label>
+                <input type="text" class="form-control" name="l3_interface_ipv6_address" id="l3_interface_ipv6_address">
+              </div>
+              <div class="form-group">
+                <label for="l3_interface_ipv6_prefix_length">l3-interface-ipv6-prefix-length</label>
+                <input type="text" class="form-control" name="l3_interface_ipv6_prefix_length" id="l3_interface_ipv6_prefix_length">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#l3-interface-ipv6-address-list-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/l3sdn_vnf_fields.ejs b/sdnc-a1-controller/oam/admportal/views/partials/l3sdn_vnf_fields.ejs
new file mode 100644
index 0000000..e3d842e
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/l3sdn_vnf_fields.ejs
@@ -0,0 +1,70 @@
+   <div class="modal fade" 
+		id="l3sdn-vnf-fields-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="l3sdn-vnf-fields-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">l3sdn-vnf-fields</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="availability_zone">availability_zone</label>
+                <input type="text" class="form-control" name="availability_zone" id="availability_zone">
+              </div>
+              <div class="form-group">
+                <label for="vnf_stack_id">vnf-stack-id</label>
+                <input type="text" class="form-control" name="vnf_stack_id" id="vnf_stack_id">
+              </div>
+              <div class="form-group">
+                <label for="vnf_name">vnf-name</label>
+                <input type="text" class="form-control" name="vnf_name" id="vnf_name">
+              </div>
+              <div class="form-group">
+                <label for="vnf_name2">vnf-name2</label>
+                <input type="text" class="form-control" name="vnf_name2" id="vnf_name2">
+              </div>
+              <div class="form-group">
+                <label for="vnf_type">vnf-type</label>
+                <input type="text" class="form-control" name="vnf_type" id="vnf_type">
+              </div>
+              <div class="form-group">
+                <label for="vnf_status">vnf-status</label>
+                <input type="text" class="form-control" name="vnf_status" id="vnf_status">
+              </div>
+              <div class="form-group">
+                <label for="vnf_id">vnf-id</label>
+                <input type="text" class="form-control" name="vnf_id" id="vnf_id">
+              </div>
+              <div class="form-group">
+                <label for="oam_network_name">oam-network-name</label>
+                <input type="text" class="form-control" name="oam_network_name" id="oam_network_name">
+              </div>
+              <div class="form-group">
+                <label for="aic_site_id">aic_site_id</label>
+                <input type="text" class="form-control" name="aic_site_id" id="aic_site_id">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#l3sdn-vnf-fields-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/link_latency_master.ejs b/sdnc-a1-controller/oam/admportal/views/partials/link_latency_master.ejs
new file mode 100644
index 0000000..83e87f0
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/link_latency_master.ejs
@@ -0,0 +1,100 @@
+<div class="modal fade" id="add_link_latency_master" tabindex="-1" role="dialog"
+        aria-labelledby="add_link_latency_master_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add Link Latency Master</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/tunnel/addLinkLatencyMaster" method="POST">
+              <div class="form-group">
+                <label for="nf_source_crs_name">*Source CRS Name</label>
+                <input type="text" class="form-control" maxlength="20" name="nf_source_crs_name" id="nf_source_crs_name" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <label for="nf_destination_crs_name">*Destination CRS Name</label>
+                <input type="text" class="form-control" maxlength="20" name="nf_destination_crs_name" id="nf_destination_crs_name" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <label for="nf_bundle_name">*Bundle Name</label>
+                <input type="text" class="form-control" maxlength="50" name="nf_bundle_name" id="nf_bundle_name" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="nf_latency">*Latency</label>
+                <input type="text" class="form-control" maxlength="10" name="nf_latency" id="nf_latency" placeholder="varchar(10)">
+              </div>
+              <div class="form-group">
+                <label for="nf_intra_inter_snrc">*Intra Inter SNRC</label>
+                <input type="text" class="form-control" maxlength="10" name="nf_intra_inter_snrc" id="nf_intra_inter_snrc" placeholder="varchar(10)">
+              </div>
+              <div class="form-group">
+                <label for="nf_final_latency">*Final Latency</label>
+                <input type="text" class="form-control" maxlength="10" name="nf_final_latency" id="nf_final_latency" placeholder="varchar(10)">
+              </div>
+              <div class="form-group">
+                <label for="nf_augmentable">*Augmentable</label>
+                <input type="text" class="form-control" maxlength="1" name="nf_augmentable" id="nf_augmentable" placeholder="varchar(1)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <button type="button" class="btn btn-primary" onclick="submitLinkLatencyMaster(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+   <div class="modal fade" id="update_link_latency_master" tabindex="-1" role="dialog" 
+		aria-labelledby="update_link_latency_master_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update Link Latency Master</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/tunnel/updateLinkLatencyMaster" method="POST">
+              <div class="form-group">
+                    <label for="uf_source_crs_name">*Source CRS Name</label>
+                    <input type="text" class="form-control" maxlength="20" name="uf_source_crs_name" id="uf_source_crs_name" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <label for="uf_destination_crs_name">*Destination CRS Name</label>
+                <input type="text" class="form-control" maxlength="20" name="uf_destination_crs_name" id="uf_destination_crs_name" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <label for="uf_bundle_name">*Bundle Name</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_bundle_name" id="uf_bundle_name" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="uf_latency">*Latency</label>
+                <input type="text" class="form-control" maxlength="10" name="uf_latency" id="uf_latency" placeholder="varchar(10)">
+              </div>
+              <div class="form-group">
+                <label for="uf_intra_inter_snrc">*Intra Inter SNRC</label>
+                <input type="text" class="form-control" maxlength="10" name="uf_intra_inter_snrc" id="uf_intra_inter_snrc" placeholder="varchar(10)">
+              </div>
+              <div class="form-group">
+                <label for="uf_final_latency">*Final Latency</label>
+                <input type="text" class="form-control" maxlength="10" name="uf_final_latency" id="uf_final_latency" placeholder="varchar(10)">
+              </div>
+              <div class="form-group">
+                <label for="uf_augmentable">*Augmentable</label>
+                <input type="text" class="form-control" maxlength="1" name="uf_augmentable" id="uf_augmentable" placeholder="varchar(1)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <input type="hidden" name="uf_key_source_crs_name" id="uf_key_source_crs_name">
+                <input type="hidden" name="uf_key_destination_crs_name" id="uf_key_destination_crs_name">
+                <input type="hidden" name="uf_key_bundle_name" id="uf_key_bundle_name">
+                <button type="button" class="btn btn-primary" onclick="submitLinkLatencyMaster(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/link_master.ejs b/sdnc-a1-controller/oam/admportal/views/partials/link_master.ejs
new file mode 100644
index 0000000..5ece82d
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/link_master.ejs
@@ -0,0 +1,109 @@
+<div class="modal fade" id="add_link_master" tabindex="-1" role="dialog"
+                aria-labelledby="add_link_master_label" aria-hidden="true">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-header">
+          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+          <h4 class="modal-title">Add Link Master</h4>
+      </div>
+      <div class="modal-body">
+      <form name="addForm" role="form" action="/tunnel/addLinkMaster" method="POST">
+          <div class="form-group">
+              <label for="nf_link_interface_ip">*Link Interface IP</label>
+              <input type="text" class="form-control" name="nf_link_interface_ip" id="nf_link_interface_ip" maxlength="20" placeholder="varchar(20)">
+          </div>
+          <div class="form-group">
+              <label for="nf_source_crs_name">*Source CRS Name</label>
+              <input type="text" class="form-control" name="nf_source_crs_name" id="nf_source_crs_name" maxlength="20" placeholder="varchar(20)">
+          </div>
+          <div class="form-group">
+              <label for="nf_destination_crs_name">*Destination CRS Name</label>
+              <input type="text" class="form-control" name="nf_destination_crs_name" id="nf_destination_crs_name" maxlength="20" placeholder="varchar(20)">
+          </div>
+          <div class="form-group">
+              <label for="nf_link_speed">Link Speed</label>
+              <input type="text" class="form-control" name="nf_link_speed" id="nf_link_speed" maxlength="11" placeholder="int(11)">
+          </div>
+          <div class="form-group">
+              <label for="nf_default_cost">Default Cost</label>
+              <input type="text" class="form-control" name="nf_default_cost" id="nf_default_cost" maxlength="11" placeholder="int(11)">
+          </div>
+          <div class="form-group">
+              <label for="nf_bundle_name">Bundle Name</label>
+              <input type="text" class="form-control" name="nf_bundle_name" id="nf_bundle_name" maxlength="20" placeholder="varchar(20)">
+          </div>
+          <div class="form-group">
+              <label for="nf_shutdown">Shutdown</label>
+              <select class="form-control" name="nf_shutdown" id="nf_shutdown">
+                    <option value='N'>False</option>
+                    <option value='Y'>True</option>
+              </select>
+          </div>
+
+          <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <button type="button" class="btn btn-primary" onclick="saveLinkMaster(this.form);">Save</button>
+                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+          </div>
+       </form>
+       </div>
+    </div>
+  </div>
+</div>
+
+<div class="modal fade" id="update_link_master" tabindex="-1" role="dialog"
+        aria-labelledby="update_link_master_label" aria-hidden="true">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-header">
+          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+          <h4 class="modal-title">Update Link Master</h4>
+      </div>
+      <div class="modal-body">
+      <form role="form" action="/tunnel/updateLinkMaster" method="POST">
+      <div class="form-group">
+          <label for="uf_link_interface_ip">*Link Interface IP</label>
+          <input type="text" class="form-control" name="uf_link_interface_ip" id="uf_link_interface_ip" maxlength="20" placeholder="varchar(20)">
+      </div>
+      <div class="form-group">
+          <label for="uf_source_crs_name">*Source CRS Name</label>
+          <input type="text" class="form-control" name="uf_source_crs_name" id="uf_source_crs_name" maxlength="20" placeholder="varchar(20)">
+      </div>
+      <div class="form-group">
+          <label for="uf_destination_crs_name">*Destination CRS Name</label>
+          <input type="text" class="form-control" name="uf_destination_crs_name" id="uf_destination_crs_name" maxlength="20" placeholder="varchar(20)">
+      </div>
+      <div class="form-group">
+          <label for="uf_link_speed">Link Speed</label>
+          <input type="text" class="form-control" name="uf_link_speed" id="uf_link_speed" maxlength="11" placeholder="int(11)">
+      </div>
+      <div class="form-group">
+          <label for="uf_default_cost">Default Cost</label>
+          <input type="text" class="form-control" name="uf_default_cost" id="uf_default_cost" maxlength="11" placeholder="int(11)">
+      </div>
+      <div class="form-group">
+        <label for="uf_bundle_name">Bundle Name</label>
+        <input type="text" class="form-control" name="uf_bundle_name" id="uf_bundle_name" maxlength="20" placeholder="varchar(20)">
+      </div>
+
+      <div class="form-group">
+          <label for="uf_shutdown">Shutdown</label>
+          <select class="form-control" name="uf_shutdown" id="uf_shutdown">
+                <option value='N'>False</option>
+                <option value='Y'>True</option>
+          </select>
+      </div>
+
+
+      <div class="form-group">
+            <input type="hidden" name="uf_action" id="uf_action">
+            <input type="hidden" name="uf_key_link_interface_ip" id="uf_key_link_interface_ip">
+            <button type="button" class="btn btn-primary" onclick="saveLinkMaster(this.form);">Save</button>
+            <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+      </div>
+      </form>
+      </div>
+    </div>
+  </div>
+</div>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/max_port_speed.ejs b/sdnc-a1-controller/oam/admportal/views/partials/max_port_speed.ejs
new file mode 100644
index 0000000..a578308
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/max_port_speed.ejs
@@ -0,0 +1,86 @@
+ <div class="modal fade" id="add_max_port_speed" tabindex="-1" role="dialog"
+        aria-labelledby="add_max_port_speed_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add Max Port Speed</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/resalloc/addMaxPortSpeed" method="POST">
+              <div class="form-group">
+                <label for="nf_image_file_name">*Image File Name</label>
+                <input type="text" class="form-control" maxlength="50" name="nf_image_file_name" id="nf_image_file_name" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="nf_end_point_position">*End Point Position</label>
+                <input type="text" class="form-control" maxlength="50" name="nf_end_point_position" id="nf_end_point_position" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="nf_interface_name">*Interface Name</label>
+                <input type="text" class="form-control" maxlength="100" name="nf_interface_name" id="nf_interface_name" placeholder="varchar(100)" >
+              </div>
+              <div class="form-group">
+                <label for="nf_max_speed">*Max Speed</label>
+                <input type="text" class="form-control" maxlength="50" name="nf_max_speed" id="nf_max_speed" placeholder="bigint(20)">
+              </div>
+              <div class="form-group">
+                <label for="nf_unit">*Unit</label>
+                <input type="text" class="form-control" maxlength="10" name="nf_unit" id="nf_unit" placeholder="varchar(10)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <button type="button" class="btn btn-primary" onclick="submitMaxPortSpeed(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+   <div class="modal fade" id="update_max_port_speed" tabindex="-1" role="dialog" 
+		aria-labelledby="update_max_port_speed_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update Max Port Speed</h4>
+          </div>
+          <div class="modal-body">
+            <form name="updateForm" role="form" action="/resalloc/updateMaxPortSpeed" method="POST">
+              <div class="form-group">
+                <label for="uf_max_port_speed_id">*ID</label>
+                <input readonly type="text" class="form-control" name="uf_max_port_speed_id" id="uf_max_port_speed_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_image_file_name">*Image File Name</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_image_file_name" id="uf_image_file_name" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="uf_end_point_position">*End Point Position</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_end_point_position" id="uf_end_point_position" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="uf_interface_name">*Interface Name</label>
+                <input type="text" class="form-control" maxlength="100" name="uf_interface_name" id="uf_interface_name" placeholder="varchar(100)">
+              </div>
+              <div class="form-group">
+                <label for="uf_max_speed">*Max Speed</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_max_speed" id="uf_max_speed" placeholder="bigint(20)">
+			  </div>
+              <div class="form-group">
+                <label for="uf_unit">*Unit</label>
+                <input type="text" class="form-control" maxlength="10" name="uf_unit" id="uf_unit" placeholder="varchar(10)">
+			  </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+				<input type="hidden" name="uf_key_max_port_speed_id" id="uf_key_max_port_speed_id">
+                <button type="button" class="btn btn-primary" onclick="submitMaxPortSpeed(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/max_server_speed.ejs b/sdnc-a1-controller/oam/admportal/views/partials/max_server_speed.ejs
new file mode 100644
index 0000000..6212414
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/max_server_speed.ejs
@@ -0,0 +1,88 @@
+<div class="modal fade" id="add_max_server_speed" tabindex="-1" role="dialog"
+        aria-labelledby="add_max_server_speed_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add Max Server Speed</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/resalloc/addMaxServerSpeed" method="POST">
+              <div class="form-group">
+                <label for="nf_server_model">*Server ModelName</label>
+                <input type="text" class="form-control" maxlength="50" name="nf_server_model" id="nf_server_model" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="nf_evc_count">*EVC Count</label>
+                <input type="text" class="form-control" maxlength="50" name="nf_evc_count" id="nf_evc_count" placeholder="smallint(6)">
+              </div>
+              <div class="form-group">
+                <label for="nf_max_speed">*Max Speed</label>
+                <input type="text" class="form-control" maxlength="100" name="nf_max_speed" id="nf_max_speed" placeholder="bigint(20)">
+              </div>
+              <div class="form-group">
+                <label for="nf_unit">*Unit</label>
+                <input type="text" class="form-control" maxlength="10" name="nf_unit" id="nf_unit" placeholder="varchar(10)">
+              </div>
+              <div class="form-group">
+                <label for="nf_description">Description</label>
+                <input type="text" class="form-control" maxlength="500" name="nf_description" id="nf_description" placeholder="varchar(500)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <input type="hidden" name="nf_key_max_server_speed_id" id="nf_key_max_server_speed_id">
+                <button type="button" class="btn btn-primary" onclick="submitMaxServerSpeed(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+
+   <div class="modal fade" id="update_max_server_speed" tabindex="-1" role="dialog" 
+		aria-labelledby="max_server_speed_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update Max Server Speed</h4>
+          </div>
+          <div class="modal-body">
+            <form name="updateForm" role="form" action="/resalloc/updateMaxServerSpeed" method="POST">
+              <div class="form-group">
+                <label for="uf_max_server_speed_id">*ID</label>
+                <input readonly type="text" class="form-control" name="uf_max_server_speed_id" id="uf_max_server_speed_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_server_model">*Server Model</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_server_model" id="uf_server_model" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="uf_evc_count">*EVC Count</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_evc_count" id="uf_evc_count" placeholder="smallint(6)">
+              </div>
+              <div class="form-group">
+                <label for="uf_max_speed">*Max Speed</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_max_speed" id="uf_max_speed" placeholder="bigint(20)">
+			  </div>
+              <div class="form-group">
+                <label for="uf_unit">*Unit</label>
+                <input type="text" class="form-control" maxlength="10" name="uf_unit" id="uf_unit" placeholder="varchar(10)">
+			  </div>
+              <div class="form-group">
+                <label for="uf_description">Description</label>
+                <input type="text" class="form-control" maxlength="500" name="uf_description" id="uf_description" placeholder="varchar(500)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+				<input type="hidden" name="uf_key_max_server_speed_id" id="uf_key_max_server_speed_id">
+                <button type="button" class="btn btn-primary" onclick="submitMaxServerSpeed(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/metroroadm_service_request.ejs b/sdnc-a1-controller/oam/admportal/views/partials/metroroadm_service_request.ejs
new file mode 100644
index 0000000..e198f7f
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/metroroadm_service_request.ejs
@@ -0,0 +1,170 @@
+<div class="modal fade" id="add_metroroadm_service_request" tabindex="-1" role="dialog"
+        aria-labelledby="add_metroroadm_service_request_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add Metro ROADM Service Request</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/tunnel/addMetroRoadmServiceRequest" method="POST">
+              <div class="form-group">
+                <label for="nf_request_id">*Request ID</label>
+                <input type="text" class="form-control" maxlength="75" name="nf_request_id" id="nf_request_id" placeholder="varchar(75)">
+              </div>
+              <div class="form-group">
+                <label for="nf_request_source">Request Source</label>
+                <input type="text" class="form-control" maxlength="20" name="nf_request_source" id="nf_request_source" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <label for="nf_notification_url">Notification URL</label>
+                <input type="text" class="form-control" maxlength="255" name="nf_notification_url" id="nf_notification_url" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_l_action">*Action</label>
+                <input type="text" class="form-control" maxlength="10" name="nf_l_action" id="nf_l_action" placeholder="varchar(10)">
+              </div>
+              <div class="form-group">
+                <label for="nf_request_timestamp">*Request Timestamp</label>
+                <input type="text" class="form-control" maxlength="80" name="nf_request_timestamp" id="nf_request_timestamp" placeholder="YYYY-MM-DD HH:MM:SS">
+              </div>
+              <div class="form-group">
+                <label for="nf_update_timestamp">Update Timestamp</label>
+                <input type="text" class="form-control" maxlength="80" name="nf_update_timestamp" id="nf_update_timestamp" placeholder="varchar(80)">
+              </div>
+              <div class="form-group">
+                <label for="nf_request_status">*Request Status</label>
+                <input type="text" class="form-control" maxlength="20" name="nf_request_status" id="nf_request_status" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <label for="nf_processing_status">*Processing Status</label>
+                <input type="text" class="form-control" maxlength="40" name="nf_processing_status" id="nf_processing_status" placeholder="varchar(40)">
+              </div>
+              <div class="form-group">
+                <label for="nf_reason_code">Reason Code</label>
+                <input type="text" class="form-control" maxlength="255" name="nf_reason_code" id="nf_reason_code" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_reason_message">Reason Message</label>
+                <input type="text" class="form-control" maxlength="255" name="nf_reason_message" id="nf_reason_message" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_service_id">*Service Id</label>
+                <input type="text" class="form-control" maxlength="50" name="nf_service_id" id="nf_service_id" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="nf_common_id">Common Id</label>
+                <input type="text" class="form-control" maxlength="12" name="nf_common_id" id="nf_common_id" placeholder="varchar(12)">
+              </div>
+              <div class="form-group">
+                <label for="nf_clli_a">CLLI A</label>
+                <input type="text" class="form-control" maxlength="20" name="nf_clli_a" id="nf_clli_a" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <label for="nf_clli_z">CLLI Z</label>
+                <input type="text" class="form-control" maxlength="20" name="nf_clli_z" id="nf_clli_z" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <label for="nf_customer">Customer</label>
+                <input type="text" class="form-control" maxlength="255" name="nf_customer" id="nf_customer" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_controller_id">*Controller Id</label>
+                <input type="text" class="form-control" maxlength="255" name="nf_controller_id" id="nf_controller_id" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <button type="button" class="btn btn-primary" onclick="submitMetroRoadmServiceRequest(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+   <div class="modal fade" id="update_metroroadm_service_request" tabindex="-1" role="dialog" 
+		aria-labelledby="update_metroroadm_service_request_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update Metro ROADM Service Request</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/tunnel/updateMetroRoadmServiceRequest" method="POST">
+              <div class="form-group">
+                    <label for="uf_request_id">*Request ID</label>
+                    <input type="text" class="form-control" maxlength="75" name="uf_request_id" id="uf_request_id" placeholder="varchar(75)">
+              </div>
+              <div class="form-group">
+                <label for="uf_request_source">Request Source</label>
+                <input type="text" class="form-control" maxlength="20" name="uf_request_source" id="uf_request_source" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <label for="uf_notification_url">Notification URL</label>
+                <input type="text" class="form-control" maxlength="255" name="uf_notification_url" id="uf_notification_url" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="uf_l_action">*Action</label>
+                <input type="text" class="form-control" maxlength="10" name="uf_l_action" id="uf_l_action" placeholder="varchar(10)">
+              </div>
+              <div class="form-group">
+                <label for="uf_request_timestamp">*Request Timestamp</label>
+                <input type="text" class="form-control" maxlength="80" name="uf_request_timestamp" id="uf_request_timestamp" placeholder="varchar(80)">
+              </div>
+              <div class="form-group">
+                <label for="uf_update_timestamp">Update Timestamp</label>
+                <input type="text" class="form-control" maxlength="80" name="uf_update_timestamp" id="uf_update_timestamp" placeholder="varchar(80)">
+              </div>
+              <div class="form-group">
+                <label for="uf_request_status">*Request Status</label>
+                <input type="text" class="form-control" maxlength="20" name="uf_request_status" id="uf_request_status" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <label for="uf_processing_status">*Processing Status</label>
+                <input type="text" class="form-control" maxlength="40" name="uf_processing_status" id="uf_processing_status" placeholder="varchar(40)">
+              </div>
+              <div class="form-group">
+                <label for="uf_reason_code">Reason Code</label>
+                <input type="text" class="form-control" maxlength="255" name="uf_reason_code" id="uf_reason_code" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="uf_reason_message">Reason Message</label>
+                <input type="text" class="form-control" maxlength="255" name="uf_reason_message" id="uf_reason_message" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="uf_service_id">*Service Id</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_service_id" id="uf_service_id" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="uf_common_id">Common Id</label>
+                <input type="text" class="form-control" maxlength="12" name="uf_common_id" id="uf_common_id" placeholder="varchar(12)">
+              </div>
+              <div class="form-group">
+                <label for="uf_clli_a">CLLI A</label>
+                <input type="text" class="form-control" maxlength="20" name="uf_clli_a" id="uf_clli_a" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <label for="uf_clli_z">CLLI Z</label>
+                <input type="text" class="form-control" maxlength="20" name="uf_clli_z" id="uf_clli_z" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <label for="uf_customer">Customer</label>
+                <input type="text" class="form-control" maxlength="255" name="uf_customer" id="uf_customer" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="uf_controller_id">*Controller Id</label>
+                <input type="text" class="form-control" maxlength="255" name="uf_controller_id" id="uf_controller_id" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <input type="hidden" name="uf_key_request_id" id="uf_key_request_id">
+                <button type="button" class="btn btn-primary" onclick="submitMetroRoadmServiceRequest(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/nat.ejs b/sdnc-a1-controller/oam/admportal/views/partials/nat.ejs
new file mode 100644
index 0000000..973c254
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/nat.ejs
@@ -0,0 +1,38 @@
+   <div class="modal fade" id="nat-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="nat-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">nat</h4>
+          </div>
+          <div class="modal-body">
+            <form id="nat_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="v4_nat_enabled">v4-nat-enabled</label>
+                <input type="text" class="form-control" name="v4_nat_enabled" id="v4_nat_enabled">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#nat-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/nb_vlan_pool.ejs b/sdnc-a1-controller/oam/admportal/views/partials/nb_vlan_pool.ejs
new file mode 100644
index 0000000..d5e8973
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/nb_vlan_pool.ejs
@@ -0,0 +1,38 @@
+   <div class="modal fade" id="update_nb_vlan_pool" tabindex="-1" role="dialog" 
+		aria-labelledby="update_nb_vlan_pool_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update NetBond VLAN Pool</h4>
+          </div>
+          <div class="modal-body">
+          <form name="updateForm" role="form" action="/gamma/updateNbVlanPool" method="POST">
+
+			 <div class="form-group">
+             <label for="nf_plan_type">Status</label>
+                <select class="form-control" name="uf_status" id="uf_status">
+                    <option value="AVAILABLE">AVAILABLE</option>
+                    <option value="RESERVED">RESERVED</option>
+                    <option value="IN-USE">IN-USE</option>
+                </select>
+              </div>
+
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+				<input type="hidden" name="uf_key_aic_site_id" id="uf_key_aic_site_id">
+				<input type="hidden" name="uf_key_availability_zone" id="uf_key_availability_zone">
+				<input type="hidden" name="uf_key_vlan_plan_id" id="uf_key_vlan_plan_id">
+				<input type="hidden" name="uf_key_plan_type" id="uf_key_plan_type">
+				<input type="hidden" name="uf_key_purpose" id="uf_key_purpose">
+				<input type="hidden" name="uf_key_vlan_id" id="uf_key_vlan_id">
+
+				<button type="button" class="btn btn-primary" 
+					onclick="saveNbVlanPool(this.form);">Save</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/nb_vlan_range.ejs b/sdnc-a1-controller/oam/admportal/views/partials/nb_vlan_range.ejs
new file mode 100644
index 0000000..4cc24a2
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/nb_vlan_range.ejs
@@ -0,0 +1,45 @@
+   <div class="modal fade" id="add_vlan_range" tabindex="-1" role="dialog" 
+		aria-labelledby="add_vlan_range_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add NetBond VLAN Range</h4>
+          </div>
+          <div class="modal-body">
+          <form name="addForm" role="form" action="/gamma/saveNbVlanRange" method="POST">
+
+			 <div class="form-group">
+             <label for="nf_plan_type">*Plan Type</label>
+                <select class="form-control" name="nf_plan_type" id="nf_plan_type">
+                    <option value="NB VNAT">NB VNAT</option>
+                </select>
+              </div>
+
+			  <div class="form-group">
+              <label for="nf_purpose">*Purpose</label>
+                <select class="form-control" name="nf_purpose" id="nf_purpose">
+                    <option value=CUSTOMER>CUSTOMER</option>
+                    <option value=PARTNER>PARTNER</option>
+                </select>
+              </div>
+
+              <div class="form-group">
+                <label for="nf_range_start">*Range Start</label>
+                <input type="text" class="form-control" name="nf_range_start" id="nf_range_start" maxlength="4" placeholder="int(4)">
+              </div>
+
+              <div class="form-group">
+                <label for="nf_range_end">*Range End</label>
+                <input type="text" class="form-control" name="nf_range_end" id="nf_range_end" maxlength="4" placeholder="int(4)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="nf_action" id="nf_action">
+				<button type="button" class="btn btn-primary" onclick="saveNbVlanRange(this.form);">Save</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/ncs_credentials.ejs b/sdnc-a1-controller/oam/admportal/views/partials/ncs_credentials.ejs
new file mode 100644
index 0000000..a35b7e4
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/ncs_credentials.ejs
@@ -0,0 +1,74 @@
+<div class="modal fade" id="add_ncs_credentials" tabindex="-1" role="dialog"
+        aria-labelledby="add_ncs_credentials_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add NCS Credentials</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/ucpe/addNcsCredentials" method="POST">
+              <div class="form-group">
+                <label for="nf_customer_name">*Customer Name</label>
+                <input type="text" class="form-control" maxlength="255" aria-describedby="helpCName" name="nf_customer_name" id="nf_customer_name" placeholder="varchar(255)">
+				<span id="helpCName" class="help-block">The Customer Name must match exactly whats in the NCS Servers table.</span>
+              </div>
+              <div class="form-group">
+                <label for="nf_ncs_username">*NCS Username</label>
+                <input type="text" class="form-control" maxlength="255" name="nf_ncs_username" id="nf_ncs_username" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_ncs_password">*NCS Password</label>
+                <input type="password" class="form-control" maxlength="255" name="nf_ncs_password" id="nf_ncs_password" placeholder="varbinary(255)">
+              </div>
+			  <div class="form-group">
+                <label for="nf_phs_password">*Confirm NCS Password</label>
+                <input type="password" class="form-control" maxlength="255" name="nf_confirm_ncs_password" id="nf_confirm_ncs_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <button type="button" class="btn btn-primary" onclick="submitNcsCredentials(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+   <div class="modal fade" id="update_ncs_credentials" tabindex="-1" role="dialog" 
+		aria-labelledby="update_ncs_credentials_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update NCS Credentials</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/ucpe/updateNcsCredentials" method="POST">
+              <div class="form-group">
+                <label for="uf_customer_name">*Customer Name</label>
+                <input readonly type="text" class="form-control" name="uf_customer_name" id="uf_customer_name">
+              </div>
+              <div class="form-group">
+                <label for="uf_ncs_username">*NCS Username</label>
+                <input type="text" class="form-control" maxlength="255" name="uf_ncs_username" id="uf_ncs_username">
+              </div>
+              <div class="form-group">
+                <label for="uf_ncs_password">*NCS Password</label>
+                <input type="password" class="form-control" maxlength="255" name="uf_ncs_password" id="uf_ncs_password">
+			  </div>
+			  <div class="form-group">
+                <label for="nf_phs_password">*Confirm NCS Password</label>
+                <input type="password" class="form-control" maxlength="255" name="uf_confirm_ncs_password" id="uf_confirm_ncs_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submitNcsCredentials(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/network_connections.ejs b/sdnc-a1-controller/oam/admportal/views/partials/network_connections.ejs
new file mode 100644
index 0000000..7209323
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/network_connections.ejs
@@ -0,0 +1,66 @@
+   <div class="modal fade" 
+		id="network-connections-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="network-connections-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">network-connections</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="stack_id">stack-id</label>
+                <input type="text" class="form-control" name="stack_id" id="stack_id">
+              </div>
+              <div class="form-group">
+                <label for="net_status">net-status</label>
+                <input type="text" class="form-control" name="net_status" id="net_status">
+              </div>
+              <div class="form-group">
+                <label for="connection_type">connection-type</label>
+                <input type="text" class="form-control" name="connection_type" id="connection_type">
+              </div>
+              <div class="form-group">
+                <label for="provider_network">provider-network</label>
+                <input type="text" class="form-control" name="provider_network" id="provider_network">
+              </div>
+              <div class="form-group">
+                <label for="interface_id">interface-id</label>
+                <input type="text" class="form-control" name="interface_id" id="interface_id">
+              </div>
+              <div class="form-group">
+                <label for="vlan">vlan</label>
+                <input type="text" class="form-control" name="vlan" id="vlan">
+              </div>
+              <div class="form-group">
+                <label for="port_group_name">port-group-name</label>
+                <input type="text" class="form-control" name="port_group_name" id="port_group_name">
+              </div>
+              <div class="form-group">
+                <label for="neutron_network_id">neutron-network-id</label>
+                <input type="text" class="form-control" name="neutron_network_id" id="neutron_network_id">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#network-connections-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/network_profile.ejs b/sdnc-a1-controller/oam/admportal/views/partials/network_profile.ejs
new file mode 100644
index 0000000..81d7f32
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/network_profile.ejs
@@ -0,0 +1,59 @@
+   <div class="modal fade" id="add_network_profile" tabindex="-1" role="dialog" 
+		aria-labelledby="add_network_profile" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add Network Profile</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/gamma/addNetworkProfile" method="POST">
+              <div class="form-group">
+                <label for="nf_network_type">*Network Type</label>
+                <input type="text" class="form-control" name="nf_network_type" id="nf_network_type" maxlength="100" placeholder="varchar(100)">
+              </div>
+              <div class="form-group">
+                <label for="nf_technology">Technology</label>
+                <input type="text" class="form-control" name="nf_technology" id="nf_technology" maxlength="100" placeholder="varchar(100)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="nf_action" id="nf_action">
+				<button type="button" class="btn btn-primary" onclick="saveNetworkProfile(this.form);">Save</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<div class="modal fade" id="update_network_profile" tabindex="-1" role="dialog"
+        aria-labelledby="update_network_profile_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update Network Profile</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/gamma/updateNetworkProfile" method="POST">
+              <div class="form-group">
+                <label for="uf_network_type">*Network Type</label>
+                <input type="text" class="form-control" maxlength="100" name="uf_network_type" id="uf_network_type" placeholder="varchar(100)">
+              </div>
+              <div class="form-group">
+                <label for="uf_technology">Technology</label>
+                <input type="text" class="form-control" maxlength="100" name="uf_technology" id="uf_technology" placeholder="varchar(100)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="uf_action" id="uf_action">
+                <input type="hidden" name="uf_key_network_type" id="uf_key_network_type">
+                <button type="button" class="btn btn-primary" onclick="saveNetworkProfile(this.form);">Save</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/new_parameter.ejs b/sdnc-a1-controller/oam/admportal/views/partials/new_parameter.ejs
new file mode 100644
index 0000000..4a2c0fe
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/new_parameter.ejs
@@ -0,0 +1,37 @@
+<div class="modal fade" id="new_parameter" tabindex="-1" role="dialog" 
+		aria-labelledby="new_parameter_label" aria-hidden="true">
+	<div class="modal-dialog">
+		<div class="modal-content">
+			<div class="modal-header">
+				<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+				<h4 class="modal-title">Add Parameter</h4>
+			</div>
+			<div class="modal-body">
+				<form name="addForm" role="form" action="/admin/addParameter" method="POST">
+					<div class="form-group">
+						<label for="nf_name">*Name</label>
+						<input maxlength="100" type="text" class="form-control" name="nf_name" id="nf_name" placeholder="varchar(100)" />
+					</div>
+					<div class="form-group">
+						<label for="nf_value">*Value</label>
+						<input maxlength="100" type="text" class="form-control" name="nf_value" id="nf_value" placeholder="varchar(100)" />
+					</div>
+					<div class="form-group">
+						<label for="nf_category">Category</label>
+						<input maxlength="24" type="text" class="form-control" name="nf_category" id="nf_category" placeholder="varchar(24)" />
+					</div>
+					<div class="form-group">
+						<label for="nf_memo">Memo</label>
+						<input maxlength="128" type="text" class="form-control" name="nf_memo" id="nf_memo" placeholder="varchar(128)" />
+					</div>
+					<div class="form-group">
+						<input type="hidden" name="_csrf" value="<%= privilege.csrfToken %>" />
+          	<input type="hidden" name="nf_action" id="nf_action">
+          	<button type="button" class="btn btn-primary" onclick="submitParam(this.form);">Submit</button>
+          	<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+        	</div>
+        </form>
+			</div>
+		</div>
+	</div>
+</div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/newuserform.ejs b/sdnc-a1-controller/oam/admportal/views/partials/newuserform.ejs
new file mode 100644
index 0000000..61bf2dd
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/newuserform.ejs
@@ -0,0 +1,38 @@
+<div class="modal fade" id="new_user" tabindex="-1" role="dialog" aria-labelledby="new_user" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">New User</h4>
+          </div>
+          <div class="modal-body">
+            <form id="addForm" name="addForm" role="form" action="/user/addUser" method="POST">
+              <div class="form-group">
+                <label for="nf_email">Email</label>
+                <input type="email" class="form-control" name="nf_email" id="nf_email" placeholder="varchar(64)" maxlength="64" />
+              </div>
+              <div class="form-group">
+                <label for="nf_password">Password</label>
+                <input type="password" class="form-control" name="nf_password" id="nf_password" />
+              </div>
+              <div class="form-group">
+                <label for="nf_confirm_password">Confirm Password</label>
+                <input type="password" class="form-control" name="nf_confirm_password" id="nf_confirm_password" />
+              </div>
+              <div class="form-group">
+                <label for="nf_privilege">Privilege</label>
+                <select class="form-control" name="nf_privilege" id="nf_privilege">
+                    <option value=admin>Administrator</option>
+                    <option value=readonly>Readonly</option>
+                </select>
+              </div>
+              <div class="form-group">
+								<input type="hidden" name="_csrf" value="<%= privilege.csrfToken %>" />
+                <button type="button" class="btn btn-primary" onclick="submitUserAdmin(this.form);">Submit</button>
+		<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+</div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/oper_status_modal.ejs b/sdnc-a1-controller/oam/admportal/views/partials/oper_status_modal.ejs
new file mode 100644
index 0000000..ae6cbe0
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/oper_status_modal.ejs
@@ -0,0 +1,68 @@
+   <div class="modal fade" id="oper-status-modal" tabindex="-1" role="dialog" aria-labelledby="oper-status-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title" id="oper-status-modal-label">oper-status</h4>
+          </div>
+          <div class="modal-body">
+            <form id="oper_status_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="order_status">order-status</label>
+                <input type="text" class="form-control" name="order_status" id="order_status">
+              </div>
+              <div class="form-group">
+                <label for="modify_timestamp">modify-timestamp</label>
+                <input type="text" class="form-control" name="modify_timestamp" id="modify_timestamp">
+              </div>
+              <div class="form-group">
+                <label for="last_svc_request_id">last-svc-request-id</label>
+                <input type="text" class="form-control" name="last_svc_request_id" id="last_svc_request_id">
+              </div>
+              <div class="form-group">
+                <label for="last_sub_action">last-sub-action</label>
+                <input type="text" class="form-control" name="last_sub_action" id="last_sub_action">
+              </div>
+              <div class="form-group">
+                <label for="t_defaulted_v6_vrlan">t-defaulted-v6-vrlan</label>
+                <input type="text" class="form-control" name="t_defaulted_v6_vrlan" id="t_defaulted_v6_vrlan">
+              </div>
+              <div class="form-group">
+                <label for="last_action">last-action</label>
+                <input type="text" class="form-control" name="last_action" id="last_action">
+              </div>
+              <div class="form-group">
+                <label for="create_timestamp">create-timestamp</label>
+                <input type="text" class="form-control" name="create_timestamp" id="create_timestamp">
+              </div>
+              <div class="form-group">
+                <label for="maintenance_indicator">maintenance-indicator</label>
+                <input type="text" class="form-control" name="maintenance_indicator" id="maintenance_indicator">
+              </div>
+              <div class="form-group">
+                <label for="last_order_status">last-order-status</label>
+                <input type="text" class="form-control" name="last_order_status" id="last_order_status">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#service-status-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/owbc_properties.ejs b/sdnc-a1-controller/oam/admportal/views/partials/owbc_properties.ejs
new file mode 100644
index 0000000..0d64032
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/owbc_properties.ejs
@@ -0,0 +1,98 @@
+<div class="modal fade" id="add_owbc_properties" tabindex="-1" role="dialog"
+        aria-labelledby="add_owbc_properties_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add OWBC Properties</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/tunnel/addOwbcProperties" method="POST">
+              <div class="form-group">
+                <label for="nf_controller_id">*Controller ID</label>
+                <input type="text" class="form-control" maxlength="255" name="nf_controller_id" id="nf_controller_id" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_base_uri">*Base URL</label>
+                <input type="text" class="form-control" maxlength="255" name="nf_base_uri" id="nf_base_uri" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_service_create_extension">*Service Create Extension</label>
+                <input type="text" class="form-control" maxlength="255" name="nf_service_create_extension" id="nf_service_create_extension" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_service_delete_extension">*Service Delete Extension</label>
+                <input type="text" class="form-control" maxlength="255" name="nf_service_delete_extension" id="nf_service_delete_extension" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_auth_username">*Auth Username</label>
+                <input type="text" class="form-control" maxlength="80" name="nf_auth_username" id="nf_auth_username" placeholder="varchar(80)">
+              </div>
+              <div class="form-group">
+                <label for="nf_auth_password">*Auth Password</label>
+                <input type="password" class="form-control" maxlength="80" name="nf_auth_password" id="nf_auth_password" placeholder="varbinary(80)">
+              </div>
+              <div class="form-group">
+                <label for="nf_confirm_auth_password">*Confirm Auth Password</label>
+                <input type="password" class="form-control" maxlength="80" name="nf_confirm_auth_password" id="nf_confirm_auth_password" placeholder="varbinary(80)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <button type="button" class="btn btn-primary" onclick="submitOwbcProperties(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+   <div class="modal fade" id="update_owbc_properties" tabindex="-1" role="dialog" 
+		aria-labelledby="update_owbc_properties_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update OWBC Properties</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/tunnel/updateOwbcProperties" method="POST">
+              <div class="form-group">
+                <label for="uf_controller_id">*Controller ID</label>
+                <input type="text" class="form-control" maxlength="255" name="uf_controller_id" id="uf_controller_id" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="uf_base_uri">*Base URL</label>
+                <input type="text" class="form-control" maxlength="255" name="uf_base_uri" id="uf_base_uri" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="uf_service_create_extension">*Service Create Extension</label>
+                <input type="text" class="form-control" maxlength="255" name="uf_service_create_extension" id="uf_service_create_extension" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="uf_service_delete_extension">*Service Delete Extension</label>
+                <input type="text" class="form-control" maxlength="255" name="uf_service_delete_extension" id="uf_service_delete_extension" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="uf_auth_username">*Auth Username</label>
+                <input type="text" class="form-control" maxlength="80" name="uf_auth_username" id="uf_auth_username" placeholder="varchar(80)">
+              </div>
+              <div class="form-group">
+                <label for="uf_auth_password">*Auth Password</label>
+                <input type="password" class="form-control" maxlength="80" name="uf_auth_password" id="uf_auth_password" placeholder="varbinary(80)">
+              </div>
+              <div class="form-group">
+                <label for="uf_confirm_auth_password">*Confirm Auth Password</label>
+                <input type="password" class="form-control" maxlength="80" name="uf_confirm_auth_password" id="uf_confirm_auth_password" placeholder="varbinary(80)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <input type="hidden" name="uf_key_controller_id" id="uf_key_controller_id">
+                <button type="button" class="btn btn-primary" onclick="submitOwbcProperties(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/partner_properties.ejs b/sdnc-a1-controller/oam/admportal/views/partials/partner_properties.ejs
new file mode 100644
index 0000000..1f1d601
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/partner_properties.ejs
@@ -0,0 +1,74 @@
+<div class="modal fade" id="add_partner_properties" tabindex="-1" role="dialog"
+        aria-labelledby="add_partner_properties_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add Partner Properties</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/tunnel/addPartnerProperties" method="POST">
+              <div class="form-group">
+                <label for="nf_partner">*Partner</label>
+                <input type="text" class="form-control" maxlength="100" name="nf_partner" id="nf_partner" placeholder="varchar(100)">
+              </div>
+              <div class="form-group">
+                <label for="nf_auth_username">*Auth Username</label>
+                <input type="text" class="form-control" maxlength="80" name="nf_auth_username" id="nf_auth_username" placeholder="varchar(80)">
+              </div>
+              <div class="form-group">
+                <label for="nf_auth_password">*Auth Password</label>
+                <input type="password" class="form-control" maxlength="255" name="nf_auth_password" id="nf_auth_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_confirm_auth_password">*Confirm Auth Password</label>
+                <input type="password" class="form-control" maxlength="255" name="nf_confirm_auth_password" id="nf_confirm_auth_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <button type="button" class="btn btn-primary" onclick="submitPartnerProperties(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+   <div class="modal fade" id="update_partner_properties" tabindex="-1" role="dialog" 
+		aria-labelledby="update_partner_properties_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update Partner Properties</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/tunnel/updatePartnerProperties" method="POST">
+              <div class="form-group">
+                <label for="uf_partner">*Partner</label>
+                <input type="text" class="form-control" maxlength="100" name="uf_partner" id="uf_partner" placeholder="varchar(100)">
+              </div>
+              <div class="form-group">
+                <label for="uf_auth_username">*Auth Username</label>
+                <input type="text" class="form-control" maxlength="80" name="uf_auth_username" id="uf_auth_username" placeholder="varchar(80)">
+              </div>
+              <div class="form-group">
+                <label for="uf_auth_password">*Auth Password</label>
+                <input type="password" class="form-control" maxlength="255" name="uf_auth_password" id="uf_auth_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+                <label for="uf_confirm_auth_password">*Confirm Auth Password</label>
+                <input type="password" class="form-control" maxlength="255" name="uf_confirm_auth_password" id="uf_confirm_auth_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <input type="hidden" name="uf_key_partner" id="uf_key_partner">
+                <button type="button" class="btn btn-primary" onclick="submitPartnerProperties(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/pat.ejs b/sdnc-a1-controller/oam/admportal/views/partials/pat.ejs
new file mode 100644
index 0000000..8cc9155
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/pat.ejs
@@ -0,0 +1,50 @@
+   <div class="modal fade" id="pat-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="pat-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">pat</h4>
+          </div>
+          <div class="modal-body">
+            <form id="pat_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="v4_pat_default_pool_prefix_length">v4-pat-default-pool-prefix-length</label>
+                <input type="text" class="form-control" name="v4_pat_default_pool_prefix_length" id="v4_pat_default_pool_prefix_length">
+              </div>
+              <div class="form-group">
+                <label for="use_v4_default_pool">use-v4-default-pool</label>
+                <input type="text" class="form-control" name="use_v4_default_pool" id="use_v4_default_pool">
+              </div>
+              <div class="form-group">
+                <label for="v4_pat_enabled">v4-pat-enabled</label>
+                <input type="text" class="form-control" name="v4_pat_enabled" id="v4_pat_enabled">
+              </div>
+              <div class="form-group">
+                <label for="v4_pat_default_pool_prefix">v4-pat-default-pool-prefix</label>
+                <input type="text" class="form-control" name="v4_pat_default_pool_prefix" id="v4_pat_default_pool_prefix">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#pat-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/pat_pools.ejs b/sdnc-a1-controller/oam/admportal/views/partials/pat_pools.ejs
new file mode 100644
index 0000000..5b0b3f0
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/pat_pools.ejs
@@ -0,0 +1,46 @@
+   <div class="modal fade" id="pat-pools-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="pat-pools-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">v4-pat-pools</h4>
+          </div>
+          <div class="modal-body">
+            <form id="pat_pools-form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="v4_pat__pool_next_hop_address">v4-pat-pool-next-hop-address</label>
+                <input type="text" class="form-control" name="v4_pat_pool_next_hop_address" id="v4_pat_pool_next_hop_address">
+              </div>
+              <div class="form-group">
+                <label for="v4_pat_pool_prefix_length">v4-pat-pool-prefix-length</label>
+                <input type="text" class="form-control" name="v4_pat_pool_prefix_length" id="v4_pat_pool_prefix_length">
+              </div>
+              <div class="form-group">
+                <label for="v4_pat_pool_prefix">v4-pat-pool-prefix</label>
+                <input type="text" class="form-control" name="v4_pat_pool_prefix" id="v4_pat_pool_prefix">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#pat-pools-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/phs_credentials.ejs b/sdnc-a1-controller/oam/admportal/views/partials/phs_credentials.ejs
new file mode 100644
index 0000000..4413dca
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/phs_credentials.ejs
@@ -0,0 +1,92 @@
+<div class="modal fade" id="add_phs_credentials" tabindex="-1" role="dialog"
+        aria-labelledby="add_phs_credentials_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add PHS Credentials</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/ucpe/addPhsCredentials" method="POST">
+              <div class="form-group">
+                <label for="nf_device_vendor_name">*Device Vendor Name</label>
+                <input type="text" class="form-control" maxlength="255" aria-describedby="helpVName" name="nf_device_vendor_name" id="nf_device_vendor_name" placeholder="varchar(255)">
+				<span id="helpVName" class="help-block">The Device Vendor Name must match exactly whats in the PHS Servers table.</span>
+              </div>
+              <div class="form-group">
+                <label for="nf_customer_name">*Customer Name</label>
+                <input type="text" class="form-control" maxlength="255" aria-describedby="helpCName" name="nf_customer_name" id="nf_customer_name" placeholder="varchar(255)">
+				<span id="helpCName" class="help-block">The Customer Name must match exactly whats in the PHS Servers table.</span>
+              </div>
+              <div class="form-group">
+                <label for="nf_ip_addresses">*IP Addresses</label>
+                <input type="text" class="form-control" maxlength="40" aria-describedby="helpIP" name="nf_ip_addresses" id="nf_ip_addresses" placeholder="varchar(40)">
+				<span id="helpIP" class="help-block">The IP Addresses must match exactly whats in the PHS Servers table.</span>
+              </div>
+              <div class="form-group">
+                <label for="nf_phs_username">*PHS Username</label>
+                <input type="text" class="form-control" maxlength="255" name="nf_phs_username" id="nf_phs_username" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_phs_password">*PHS Password</label>
+                <input type="password" class="form-control" maxlength="255" name="nf_phs_password" id="nf_phs_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_phs_password">*Confirm PHS Password</label>
+                <input type="password" class="form-control" maxlength="255" name="nf_confirm_phs_password" id="nf_confirm_phs_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <button type="button" class="btn btn-primary" onclick="submitPhsCredentials(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+   <div class="modal fade" id="update_phs_credentials" tabindex="-1" role="dialog" 
+		aria-labelledby="update_phs_credentials_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update PHS Credentials</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/ucpe/updatePhsCredentials" method="POST">
+              <div class="form-group">
+                <label for="uf_device_vendor_name">*Device Vendor Name</label>
+                <input readonly type="text" class="form-control" name="uf_device_vendor_name" id="uf_device_vendor_name">
+              </div>
+              <div class="form-group">
+                <label for="uf_customer_name">*Customer Name</label>
+                <input readonly type="text" class="form-control" name="uf_customer_name" id="uf_customer_name">
+              </div>
+              <div class="form-group">
+                <label for="uf_ip_addresses">*IP Addresses</label>
+                <input readonly type="text" class="form-control" name="uf_ip_addresses" id="uf_ip_addresses">
+              </div>
+              <div class="form-group">
+                <label for="uf_phs_username">*PHS Username</label>
+                <input type="text" class="form-control" maxlength="255" name="uf_phs_username" id="uf_phs_username">
+              </div>
+              <div class="form-group">
+                <label for="uf_phs_password">*PHS Password</label>
+                <input type="password" class="form-control" maxlength="255" name="uf_phs_password" id="uf_phs_password">
+			  </div>
+              <div class="form-group">
+                <label for="uf_phs_password">*Confirm PHS Password</label>
+                <input type="password" class="form-control" maxlength="255" name="uf_confirm_phs_password" id="uf_confirm_phs_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submitPhsCredentials(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/request_information_modal.ejs b/sdnc-a1-controller/oam/admportal/views/partials/request_information_modal.ejs
new file mode 100644
index 0000000..b5ee4a3
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/request_information_modal.ejs
@@ -0,0 +1,60 @@
+   <div class="modal fade" id="request-information-modal" tabindex="-1" role="dialog" aria-labelledby="request-information-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title" id="request-information-modal-label">request-information</h4>
+          </div>
+          <div class="modal-body">
+            <form id="request_information_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="notification_url">notification-url</label>
+                <input type="text" class="form-control" name="notification_url" id="notification_url">
+              </div>
+              <div class="form-group">
+                <label for="source">source</label>
+                <input type="text" class="form-control" name="source" id="source">
+              </div>
+              <div class="form-group">
+                <label for="order_number">order-number</label>
+                <input type="text" class="form-control" name="order_number" id="order_number">
+              </div>
+              <div class="form-group">
+                <label for="request_id">request-id</label>
+                <input type="text" class="form-control" name="request_id" id="request_id">
+              </div>
+              <div class="form-group">
+                <label for="order_version">order-version</label>
+                <input type="text" class="form-control" name="order_version" id="order_version">
+              </div>
+              <div class="form-group">
+                <label for="request_action">request-action</label>
+                <input type="text" class="form-control" name="request_action" id="request_action">
+              </div>
+              <div class="form-group">
+                <label for="request_sub_action">request-sub-action</label>
+                <input type="text" class="form-control" name="request_sub_action" id="request_sub_action">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#service-status-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/resource_rule.ejs b/sdnc-a1-controller/oam/admportal/views/partials/resource_rule.ejs
new file mode 100644
index 0000000..05d0bf4
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/resource_rule.ejs
@@ -0,0 +1,118 @@
+<div class="modal fade" id="add_resource_rule" tabindex="-1" role="dialog"
+        aria-labelledby="add_resource_rule_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add Resource Rule</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/resalloc/addResourceRule" method="POST">
+              <div class="form-group">
+                <label for="nf_resource_name">*Name</label>
+                <input type="text" class="form-control" maxlength="50" name="nf_resource_name" id="nf_resource_name" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="nf_end_point_position">*End Point Position</label>
+                <input type="text" class="form-control" maxlength="50" name="nf_end_point_position" id="nf_end_point_position" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="nf_service_expression">*Service Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="nf_service_expression" id="nf_service_expression" placeholder="varchar(2000)">
+              </div>
+              <div class="form-group">
+                <label for="nf_equipment_level">*Equipment Level</label>
+                <input type="text" class="form-control" maxlength="50" name="nf_equipment_level" id="nf_equipment_level" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="nf_equipment_expression">*Equipment Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="nf_equipment_expression" id="nf_equipment_expression" placeholder="varchar(2000)">
+              </div>
+              <div class="form-group">
+                <label for="nf_allocation_expression">*Allocation Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="nf_allocation_expression" id="nf_allocation_expression" placeholder="varchar(2000)">
+              </div>
+              <div class="form-group">
+                <label for="nf_soft_limit_expression">*Soft Limit Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="nf_soft_limit_expression" id="nf_soft_limit_expression" placeholder="varchar(2000)">
+              </div>
+              <div class="form-group">
+                <label for="nf_hard_limit_expression">*Hard Limit Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="nf_hard_limit_expression" id="nf_hard_limit_expression" placeholder="varchar(2000)">
+              </div>
+              <div class="form-group">
+                <label for="nf_service_model">*Service Model</label>
+                <input type="text" class="form-control" maxlength="50" name="nf_service_model" id="nf_service_model" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <button type="button" class="btn btn-primary" onclick="submitResourceRule(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+   <div class="modal fade" id="update_resource_rule" tabindex="-1" role="dialog" 
+		aria-labelledby="update_resource_rule_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update Resource Rule</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/resalloc/updateResourceRule" method="POST">
+              <div class="form-group">
+                <label for="uf_resource_rule_id">*Rule ID</label>
+                <input readonly type="text" class="form-control" name="uf_resource_rule_id" id="uf_resource_rule_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_resource_name">*Name</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_resource_name" id="uf_resource_name" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="uf_end_point_position">*End Point Position</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_end_point_position" id="uf_end_point_position" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="uf_service_expression">*Service Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="uf_service_expression" id="uf_service_expression" placeholder="varchar(2000)">
+              </div>
+              <div class="form-group">
+                <label for="uf_equipment_level">*Equipment Level</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_equipment_level" id="uf_equipment_level" placeholder="varchar(50)">
+			  </div>
+              <div class="form-group">
+                <label for="uf_equipment_expression">*Equipment Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="uf_equipment_expression" id="uf_equipment_expression" placeholder="varchar(2000)">
+			  </div>
+              <div class="form-group">
+                <label for="uf_allocation_expression">*Allocation Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="uf_allocation_expression" id="uf_allocation_expression" placeholder="varchar(2000)">
+              </div>
+              <div class="form-group">
+                <label for="uf_soft_limit_expression">*Soft Limit Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="uf_soft_limit_expression" id="uf_soft_limit_expression" placeholder="varchar(2000)">
+              </div>
+              <div class="form-group">
+                <label for="uf_hard_limit_expression">*Hard Limit Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="uf_hard_limit_expression" id="uf_hard_limit_expression" placeholder="varchar(2000)">
+              </div>
+              <div class="form-group">
+                <label for="uf_service_model">*Service Model</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_service_model" id="uf_service_model" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+				<input type="hidden" name="uf_key_resource_rule_id" id="uf_key_resource_rule_id">
+                <button type="button" class="btn btn-primary" onclick="submitResourceRule(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/ro_header.ejs b/sdnc-a1-controller/oam/admportal/views/partials/ro_header.ejs
new file mode 100644
index 0000000..2e5624a
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/ro_header.ejs
@@ -0,0 +1,43 @@
+<!-- views/partials/header.ejs -->
+<nav class="navbar navbar-default" role="navigation">
+    <div class="container-fluid">
+
+
+		<div class="navbar-header">
+            <a class="navbar-brand" href="#">&nbsp;SDN-C AdminPortal</a>
+    	</div>
+
+        <div class="btn-toolbar" role="toolbar" aria-label="Toolbar with button groups">
+
+        <div class="btn-group" role="group">
+            <button type="button" class="btn btn-default navbar-btn" disabled>SLA</button>
+
+			<div class="btn-group" role="group">
+      			<button disabled type="button" class="btn btn-default navbar-btn dropdown-toggle" 
+					data-toggle="dropdown" aria-expanded="false">Table Initialization <span class="caret"></span></button>
+      			<ul class="dropdown-menu" role="menu">
+        			<li><a href="/gamma/getAicSite">AIC Site</a></li>
+        			<li><a href="/gamma/getAicSwitch">AIC Switch</a></li>
+        			<li><a href="/gamma/getAicAvailZone">AIC Availability Zone</a></li>
+        			<li><a href="/gamma/getVlanPool">VLAN_ID Pool</a></li>
+        			<li><a href="/gamma/getVpePool">VPE Pool</a></li>
+        			<li><a href="/gamma/getVplspePool">VPLSPE Pool</a></li>
+        			<!-- <li class="divider"></li> -->
+      			</ul>
+    		</div>
+
+            <button type="button" class="btn btn-default navbar-btn" disabled>Interfaces</button>
+            <button type="button" class="btn btn-default navbar-btn" disabled>VMs</button>
+            <button disabled type="button" class="btn btn-default navbar-btn"
+				onclick="location.assign('/odl/listWklst');">Worklist Orders</button>
+            <button type="button" class="btn btn-default navbar-btn" disabled>Connections</button>
+            <button type="button" class="btn btn-default navbar-btn" disabled>VNFs</button>
+            <button type="button" class="btn btn-default navbar-btn" disabled>VLANs</button>
+            <button disabled type="button" class="btn btn-default navbar-btn"
+				onclick="location.assign('/user/listUsers');">User Admin</button>
+            <button disabled type="button" class="btn btn-default navbar-btn"
+				onclick="location.assign('/logout');">Logout</button>
+        </div>
+        </div>
+    </div>
+</nav>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/roadm_mapping.ejs b/sdnc-a1-controller/oam/admportal/views/partials/roadm_mapping.ejs
new file mode 100644
index 0000000..0e3a6fb
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/roadm_mapping.ejs
@@ -0,0 +1,101 @@
+<div class="modal fade" id="add_roadm_mapping" tabindex="-1" role="dialog"
+                aria-labelledby="add_roadm_mapping_label" aria-hidden="true">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-header">
+          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+          <h4 class="modal-title">Add ROADM Mapping</h4>
+      </div>
+      <div class="modal-body">
+      <form name="addForm" role="form" action="/tunnel/addRoadmMapping" method="POST">
+          <div class="form-group">
+              <label for="nf_router_name">*Router Name</label>
+              <input type="text" class="form-control" name="nf_router_name" id="nf_router_name" maxlength="20" placeholder="varchar(20)">
+          </div>
+          <div class="form-group">
+              <label for="nf_roadm_name">*ROADM Name</label>
+              <input type="text" class="form-control" name="nf_roadm_name" id="nf_roadm_name" maxlength="20" placeholder="varchar(20)">
+          </div>
+          <div class="form-group">
+              <label for="nf_clli">*CLLI</label>
+              <input type="text" class="form-control" name="nf_clli" id="nf_clli" maxlength="20" placeholder="varchar(20)">
+          </div>
+          <div class="form-group">
+              <label for="nf_city_name">*City Name</label>
+              <input type="text" class="form-control" name="nf_city_name" id="nf_city_name" maxlength="80" placeholder="varchar(80)">
+          </div>
+          <div class="form-group">
+              <label for="nf_lat">*Latitude</label>
+              <input type="text" class="form-control" name="nf_lat" id="nf_lat" maxlength="20" placeholder="varchar(20)">
+          </div>
+          <div class="form-group">
+              <label for="nf_lon">*Longitude</label>
+              <input type="text" class="form-control" name="nf_lon" id="nf_lon" maxlength="20" placeholder="varchar(20)">
+          </div>
+          <div class="form-group">
+              <label for="nf_snrc">*SNRC</label>
+              <input type="text" class="form-control" name="nf_snrc" id="nf_snrc" maxlength="20" placeholder="varchar(20)">
+          </div>
+
+          <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <button type="button" class="btn btn-primary" onclick="saveRoadmMapping(this.form);">Save</button>
+                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+          </div>
+       </form>
+       </div>
+    </div>
+  </div>
+</div>
+
+<div class="modal fade" id="update_roadm_mapping" tabindex="-1" role="dialog"
+        aria-labelledby="update_roadm_mapping_label" aria-hidden="true">
+  <div class="modal-dialog">
+    <div class="modal-content">
+      <div class="modal-header">
+          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+          <h4 class="modal-title">Update ROADM Mapping</h4>
+      </div>
+      <div class="modal-body">
+      <form role="form" action="/tunnel/updateRoadmMapping" method="POST">
+          <div class="form-group">
+              <label for="uf_router_name">*Router Name</label>
+              <input type="text" class="form-control" name="uf_router_name" id="uf_router_name" maxlength="20" placeholder="varchar(20)">
+          </div>
+          <div class="form-group">
+              <label for="uf_roadm_name">*ROADM Name</label>
+              <input type="text" class="form-control" name="uf_roadm_name" id="uf_roadm_name" maxlength="20" placeholder="varchar(20)">
+          </div>
+          <div class="form-group">
+              <label for="uf_clli">*CLLI</label>
+              <input type="text" class="form-control" name="uf_clli" id="uf_clli" maxlength="20" placeholder="varchar(20)">
+          </div>
+          <div class="form-group">
+              <label for="uf_city_name">*City Name</label>
+              <input type="text" class="form-control" name="uf_city_name" id="uf_city_name" maxlength="80" placeholder="varchar(80)">
+          </div>
+          <div class="form-group">
+              <label for="uf_lat">*Latitude</label>
+              <input type="text" class="form-control" name="uf_lat" id="uf_lat" maxlength="20" placeholder="varchar(20)">
+          </div>
+          <div class="form-group">
+              <label for="uf_lon">*Longitude</label>
+              <input type="text" class="form-control" name="uf_lon" id="uf_lon" maxlength="20" placeholder="varchar(20)">
+          </div>
+          <div class="form-group">
+              <label for="uf_snrc">*SNRC</label>
+              <input type="text" class="form-control" name="uf_snrc" id="uf_snrc" maxlength="20" placeholder="varchar(20)">
+          </div>
+
+      <div class="form-group">
+            <input type="hidden" name="uf_action" id="uf_action">
+            <input type="hidden" name="uf_key_router_name" id="uf_key_router_name">
+            <button type="button" class="btn btn-primary" onclick="saveRoadmMapping(this.form);">Save</button>
+            <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+      </div>
+      </form>
+      </div>
+    </div>
+  </div>
+</div>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/router_master.ejs b/sdnc-a1-controller/oam/admportal/views/partials/router_master.ejs
new file mode 100644
index 0000000..9b731b4
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/router_master.ejs
@@ -0,0 +1,59 @@
+   <div class="modal fade" id="add_router_master" tabindex="-1" role="dialog" 
+		aria-labelledby="add_router_master_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add Router Master</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/tunnel/addRouterMaster" method="POST">
+              <div class="form-group">
+                <label for="nf_crs_name">*CRS Name</label>
+                <input type="text" class="form-control" name="nf_crs_name" id="nf_crs_name" maxlength="20" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <label for="nf_loopback_ip">Loopback IP</label>
+                <input type="text" class="form-control" name="nf_loopback_ip" id="nf_loopback_ip" maxlength="20" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="nf_action" id="nf_action">
+				<button type="button" class="btn btn-primary" onclick="saveRouterMaster(this.form);">Save</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<div class="modal fade" id="update_router_master" tabindex="-1" role="dialog"
+        aria-labelledby="update_router_master_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update Router Master</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/tunnel/updateRouterMaster" method="POST">
+			  <div class="form-group">
+                <label for="uf_crs_name">*CRS Name</label>
+                <input type="text" class="form-control" name="uf_crs_name" id="uf_crs_name" maxlength="20" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <label for="uf_loopback_ip">Loopback IP</label>
+                <input type="text" class="form-control" name="uf_loopback_ip" id="uf_loopback_ip" maxlength="20" placeholder="varchar(20)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="uf_action" id="uf_action">
+                <input type="hidden" name="uf_key_crs_name" id="uf_key_crs_name">
+                <button type="button" class="btn btn-primary" onclick="saveRouterMaster(this.form);">Save</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/routing_protocol.ejs b/sdnc-a1-controller/oam/admportal/views/partials/routing_protocol.ejs
new file mode 100644
index 0000000..1bd647f
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/routing_protocol.ejs
@@ -0,0 +1,38 @@
+   <div class="modal fade" id="routing-protocol-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="routing-protocol-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">routing-protocol</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="routing_protocol">routing-protocol</label>
+                <input type="text" class="form-control" name="routing_protocol" id="routing_protocol">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#routing-protocol-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/sdnc_request_header_modal.ejs b/sdnc-a1-controller/oam/admportal/views/partials/sdnc_request_header_modal.ejs
new file mode 100644
index 0000000..08ae186
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/sdnc_request_header_modal.ejs
@@ -0,0 +1,46 @@
+   <div class="modal fade" 
+		id="sdnc-request-header-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="sdnc-request-header-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title" id="sdnc-request-header-modal-label">sdnc-request-header</h4>
+          </div>
+          <div class="modal-body">
+            <form id="sdnc_request_header_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="svc_notification_url">svc-notification-url</label>
+                <input type="text" class="form-control" name="svc_notification_url" id="svc_notification_url">
+              </div>
+              <div class="form-group">
+                <label for="svc_request_id">svc-request-id</label>
+                <input type="text" class="form-control" name="svc_request_id" id="svc_request_id">
+              </div>
+              <div class="form-group">
+                <label for="svc_action">svc-action</label>
+                <input type="text" class="form-control" name="svc_action" id="svc_action">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#service-status-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/sdnfcHeader.ejs b/sdnc-a1-controller/oam/admportal/views/partials/sdnfcHeader.ejs
new file mode 100644
index 0000000..ba963ab
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/sdnfcHeader.ejs
@@ -0,0 +1,61 @@
+<title>SDN-FC AdminPortal</title>
+
+<!-- views/partials/header.ejs -->
+<nav class="navbar navbar-default" role="navigation">
+    <div class="container-fluid">
+
+
+		<div class="navbar-header">
+			<a class="navbar-brand" href="#">&nbsp;SDN-FC AdminPortal</a>
+    	</div>
+
+        <div class="btn-toolbar" role="toolbar" aria-label="Toolbar with button groups">
+
+        <div class="btn-group" role="group">
+            <button type="button" class="btn btn-default navbar-btn "
+				onclick="location.assign('/sla/listSLA');">SLA</button>
+
+			<div class="btn-group" role="group">
+      			<button type="button" class="btn btn-default navbar-btn dropdown-toggle" 
+					data-toggle="dropdown" aria-expanded="false" vlanidpool-submenu>Table Management <span class="caret"></span>
+				</button>
+      			<ul class="dropdown-menu" role="menu">
+                    <li><a href="/sdnfc/getTables">View Tables</a></li>
+        			<li class="divider"></li>
+                    <li><a href="/sdnfc/getVrrCredentials">VRR Credentials</a></li>
+                    <li><a href="/sdnfc/getBgpUpdates">BGP Updates</a></li>
+                    <li><a href="/sdnfc/getCliUpdates">CLI Updates</a></li>
+        			<li class="divider"></li>
+        			<li><a href="/admin/getParameters">Parameters</a></li>
+				</ul>
+			</div>
+
+			<div class="btn-group" role="group">
+      			<button type="button" class="btn btn-default navbar-btn dropdown-toggle" 
+					data-toggle="dropdown" 
+					aria-expanded="false">ODL  <span class="caret"></span></button>
+      			<ul class="dropdown-menu" role="menu">
+        			<li><a href="/odl/getClusterStatus">Get Cluster Status</a></li>
+				</ul>
+			</div>
+
+			<!-- LOGS -->
+			<div class="btn-group" role="group">
+      			<button type="button" class="btn btn-default navbar-btn dropdown-toggle" 
+					data-toggle="dropdown" 
+					aria-expanded="false">Logs  <span class="caret"></span></button>
+      			<ul class="dropdown-menu" role="menu">
+        			<li><a href="/logs/getUserTrace">User Trace</a></li>
+        			<li><a href="/logs/getAccessLog">Access Log</a></li>
+				</ul>
+			</div>
+
+            <button type="button" class="btn btn-default navbar-btn"
+				onclick="location.assign('/user/listUsers');">User Admin</button>
+            <button type="button" class="btn btn-default navbar-btn"
+				onclick="location.assign('/logout');">Logout</button>
+        </div>
+        </div>
+    </div>
+
+</nav>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/sdnmlcHeader.ejs b/sdnc-a1-controller/oam/admportal/views/partials/sdnmlcHeader.ejs
new file mode 100644
index 0000000..3dc768f
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/sdnmlcHeader.ejs
@@ -0,0 +1,63 @@
+<title>SDNC-MLC AdminPortal</title>
+
+<!-- views/partials/header.ejs -->
+<nav class="navbar navbar-default" role="navigation">
+    <div class="container-fluid">
+
+
+		<div class="navbar-header">
+			<a class="navbar-brand" href="#">&nbsp;SDNC-MLC AdminPortal</a>
+    	</div>
+
+        <div class="btn-toolbar" role="toolbar" aria-label="Toolbar with button groups">
+
+        <div class="btn-group" role="group">
+            <button type="button" class="btn btn-default navbar-btn "
+				onclick="location.assign('/sla/listSLA');">SLA</button>
+
+			<div class="btn-group" role="group">
+      			<button type="button" class="btn btn-default navbar-btn dropdown-toggle" 
+					data-toggle="dropdown" aria-expanded="false" vlanidpool-submenu>Table Management <span class="caret"></span>
+				</button>
+      			<ul class="dropdown-menu" role="menu">
+        			<li><a href="/tunnel/getRouterMaster">Router Master</a></li>
+        			<li><a href="/tunnel/getLinkMaster">Link Master</a></li>
+        			<li><a href="/tunnel/getRoadmMapping">ROADM Mapping</a></li>
+        			<li><a href="/tunnel/getOwbcProperties">OWBC Properties</a></li>
+        			<li><a href="/tunnel/getMetroRoadmServiceRequest">Metro ROADM Service Request</a></li>
+        			<li><a href="/tunnel/getLinkLatencyMaster">Link Latency Master</a></li>
+        			<li><a href="/tunnel/getPartnerProperties">Partner Properties</a></li>
+        			<li class="divider"></li>
+        			<li><a href="/admin/getParameters">Parameters</a></li>
+				</ul>
+			</div>
+
+			<div class="btn-group" role="group">
+      			<button type="button" class="btn btn-default navbar-btn dropdown-toggle" 
+					data-toggle="dropdown" 
+					aria-expanded="false">ODL  <span class="caret"></span></button>
+      			<ul class="dropdown-menu" role="menu">
+        			<li><a href="/odl/getClusterStatus">Get Cluster Status</a></li>
+				</ul>
+			</div>
+
+			<!-- LOGS -->
+			<div class="btn-group" role="group">
+      			<button type="button" class="btn btn-default navbar-btn dropdown-toggle" 
+					data-toggle="dropdown" 
+					aria-expanded="false">Logs  <span class="caret"></span></button>
+      			<ul class="dropdown-menu" role="menu">
+        			<li><a href="/logs/getUserTrace">User Trace</a></li>
+        			<li><a href="/logs/getAccessLog">Access Log</a></li>
+				</ul>
+			</div>
+
+            <button type="button" class="btn btn-default navbar-btn"
+				onclick="location.assign('/user/listUsers');">User Admin</button>
+            <button type="button" class="btn btn-default navbar-btn"
+				onclick="location.assign('/logout');">Logout</button>
+        </div>
+        </div>
+    </div>
+
+</nav>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/service_information_modal.ejs b/sdnc-a1-controller/oam/admportal/views/partials/service_information_modal.ejs
new file mode 100644
index 0000000..7adf4aa
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/service_information_modal.ejs
@@ -0,0 +1,46 @@
+   <div class="modal fade" 
+		id="service-information-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="service-information-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title" id="service-information-modal-label">Service Information</h4>
+          </div>
+          <div class="modal-body">
+            <form id="service_information_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="service_instance_id">service-instance-id</label>
+                <input type="text" class="form-control" name="service_instance_id" id="service_instance_id">
+              </div>
+              <div class="form-group">
+                <label for="subscriber_name">subscriber-name</label>
+                <input type="text" class="form-control" name="subscriber_name" id="subscriber_name">
+              </div>
+              <div class="form-group">
+                <label for="service_type">service-type</label>
+                <input type="text" class="form-control" name="service_type" id="service_type">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#service-status-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/service_manager_credentials.ejs b/sdnc-a1-controller/oam/admportal/views/partials/service_manager_credentials.ejs
new file mode 100644
index 0000000..655d176
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/service_manager_credentials.ejs
@@ -0,0 +1,65 @@
+<div class="modal fade" id="add_service_manager_credentials" tabindex="-1" role="dialog"
+        aria-labelledby="add_service_manager_credentials_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add Service Manager Credentials</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/ucpe/addServiceManagerCredentials" method="POST">
+              <div class="form-group">
+                <label for="nf_service_manager_username">*Service Manager Username</label>
+                <input type="text" class="form-control" maxlength="255" name="nf_service_manager_username" id="nf_service_manager_username" placeholder="varchar(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_service_manager_password">*Service Manager Password</label>
+                <input type="password" class="form-control" maxlength="255" name="nf_service_manager_password" id="nf_service_manager_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_confirm_service_manager_password">*Confirm Service Manager Password</label>
+                <input type="password" class="form-control" maxlength="255" name="nf_confirm_service_manager_password" id="nf_confirm_service_manager_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <button type="button" class="btn btn-primary" onclick="submitServiceManagerCredentials(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+   <div class="modal fade" id="update_service_manager_credentials" tabindex="-1" role="dialog" 
+		aria-labelledby="update_service_manager_credentials_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update Service Manager Credentials</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/ucpe/updateServiceManagerCredentials" method="POST">
+              <div class="form-group">
+                <label for="uf_service_manager_username">*Service Manager Username</label>
+                <input type="text" class="form-control" maxlength="255" name="uf_service_manager_username" id="uf_service_manager_username">
+              </div>
+              <div class="form-group">
+                <label for="uf_service_manager_password">*Service Manager Password</label>
+                <input type="password" class="form-control" maxlength="255" name="uf_service_manager_password" id="uf_service_manager_password">
+			  </div>
+              <div class="form-group">
+                <label for="uf_confirm_service_manager_password">*Confirm Service Manager Password</label>
+                <input type="password" class="form-control" maxlength="255" name="uf_confirm_service_manager_password" id="uf_confirm_service_manager_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submitServiceManagerCredentials(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/service_status_modal.ejs b/sdnc-a1-controller/oam/admportal/views/partials/service_status_modal.ejs
new file mode 100644
index 0000000..8da4fcb
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/service_status_modal.ejs
@@ -0,0 +1,68 @@
+   <div class="modal fade" id="service-status-modal" tabindex="-1" role="dialog" aria-labelledby="service-status-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title" id="service-status-modal-label">SERVICE-STATUS</h4>
+          </div>
+          <div class="modal-body">
+            <form id="service_status_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="rpc_name">rpc-name</label>
+                <input type="text" class="form-control" name="rpc_name" id="rpc_name">
+              </div>
+              <div class="form-group">
+                <label for="final_indicator">final-indicator</label>
+                <input type="text" class="form-control" name="final_indicator" id="final_indicator">
+              </div>
+              <div class="form-group">
+                <label for="request_status">request-status</label>
+                <input type="text" class="form-control" name="request_status" id="request_status">
+              </div>
+              <div class="form-group">
+                <label for="rpc_action">rpc-action</label>
+                <input type="text" class="form-control" name="rpc_action" id="rpc_action">
+              </div>
+              <div class="form-group">
+                <label for="l3sdn_action">l3sdn-action</label>
+                <input type="text" class="form-control" name="l3sdn_action" id="l3sdn_action">
+              </div>
+              <div class="form-group">
+                <label for="l3sdn_subaction">l3sdn-subaction</label>
+                <input type="text" class="form-control" name="l3sdn_subaction" id="l3sdn_subaction">
+              </div>
+              <div class="form-group">
+                <label for="response_message">response-message</label>
+                <input type="text" class="form-control" name="response_message" id="response_message">
+              </div>
+              <div class="form-group">
+                <label for="response_code">response-code</label>
+                <input type="text" class="form-control" name="response_code" id="response_code">
+              </div>
+              <div class="form-group">
+                <label for="response_timestamp">response-timestamp</label>
+                <input type="text" class="form-control" name="response_timestamp" id="response_timestamp">
+              </div>
+
+<!--
+			<div class="form-group">
+                                <input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#service-status-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/startssl.sh b/sdnc-a1-controller/oam/admportal/views/partials/startssl.sh
new file mode 100755
index 0000000..a56570e
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/startssl.sh
@@ -0,0 +1,28 @@
+#. ./set-https-env.sh
+#cd ../bin
+#cp ../config/config.json.https ../config/config.json
+export PROJECT_HOME=/opt/openecomp/sdnc
+export PROJECT_RUNTIME_BASE=/opt/openecomp/sdnc
+#export JAVA_HOME=/usr/lib/jvm/java-7-oracle
+export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
+export SSL_ENABLED=false
+export SDNC_CONFIG_DIR=${PROJECT_HOME}/data/properties
+export NODE_ENV=production
+export CLASSPATH=$PROJECT_HOME/admportal/lib:$CLASSPATH
+
+PATH=${PATH}:${JAVA_HOME}/bin
+
+#. ${PROJECT_HOME}/etc/default.env
+
+MAIN_MENU=`python $PROJECT_HOME/admportal/shell/getAdmPortalProp.py MainMenu | sed -e 's|['\'']||g'` 
+export MAIN_MENU
+SSL_ENABLED=`python $PROJECT_HOME/admportal/shell/getAdmPortalProp.py sslEnabled | sed -e 's|['\'']||g'` 
+export SSL_ENABLED
+
+cd ..
+node bin/www
+#if [ "true" == "${SSL_ENABLED}" ]; then
+	#pm2 startOrRestart process.https.json
+#else
+	#pm2 startOrRestart process.http.json
+#fi
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/svc_config_additional_data.ejs b/sdnc-a1-controller/oam/admportal/views/partials/svc_config_additional_data.ejs
new file mode 100644
index 0000000..14cfd03
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/svc_config_additional_data.ejs
@@ -0,0 +1,38 @@
+   <div class="modal fade" 
+		id="svc-config-additional-data-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="svc-config-additional-data-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">svc-config-additional-data</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="management_ip">management-ip</label>
+                <input type="text" class="form-control" name="management_ip" id="management_ip">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#svc-config-additional-data-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/svc_topology_additional_data_modal.ejs b/sdnc-a1-controller/oam/admportal/views/partials/svc_topology_additional_data_modal.ejs
new file mode 100644
index 0000000..9117dd9
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/svc_topology_additional_data_modal.ejs
@@ -0,0 +1,36 @@
+   <div class="modal fade" id="svc-topology-additional-data-modal" tabindex="-1" role="dialog" aria-labelledby="svc_topology-additional-data-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title" id="svc-topology-additional-data-modal-label">Service Topology Additional Data</h4>
+          </div>
+          <div class="modal-body">
+            <form id="svc_topology_additional_data_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="svc_vnf_type">svc-vnf-type</label>
+                <input type="text" class="form-control" name="svc_vnf_type" id="svc_vnf_type">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#service-status-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/t_provided_v4_lan_public_prefixes.ejs b/sdnc-a1-controller/oam/admportal/views/partials/t_provided_v4_lan_public_prefixes.ejs
new file mode 100644
index 0000000..d7ced07
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/t_provided_v4_lan_public_prefixes.ejs
@@ -0,0 +1,46 @@
+   <div class="modal fade" id="t-provided-v4-lan-public-prefixes-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="t-provided-v4-lan-public-prefixes-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">t-provided-v4-lan-public-prefixes</h4>
+          </div>
+          <div class="modal-body">
+            <form id="t_provided_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="request_index">request-index</label>
+                <input type="text" class="form-control" name="v4_request_index" id="v4_request_index">
+              </div>
+              <div class="form-group">
+                <label for="v4_lan_public_prefix_length">v4-lan-public-prefix-length</label>
+                <input type="text" class="form-control" name="v4_lan_public_prefix_length" id="v4_lan_public_prefix_length">
+              </div>
+              <div class="form-group">
+                <label for="v4_lan_public_prefix">v4-lan-public-prefix</label>
+                <input type="text" class="form-control" name="v4_lan_public_prefix" id="v4_lan_public_prefix">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#t-provided-v4-lan-public-prefixes-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/t_provided_v6_lan_public_prefixes.ejs b/sdnc-a1-controller/oam/admportal/views/partials/t_provided_v6_lan_public_prefixes.ejs
new file mode 100644
index 0000000..f044303
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/t_provided_v6_lan_public_prefixes.ejs
@@ -0,0 +1,46 @@
+   <div class="modal fade" id="t-provided-v6-lan-public-prefixes-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="t-provided-v6-lan-public-prefixes-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">t-provided-v6-lan-public-prefixes</h4>
+          </div>
+          <div class="modal-body">
+            <form id="t_provided_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="request_index">request-index</label>
+                <input type="text" class="form-control" name="v6_request_index" id="v6_request_index">
+              </div>
+              <div class="form-group">
+                <label for="v6_lan_public_prefix_length">v6-lan-public-prefix-length</label>
+                <input type="text" class="form-control" name="v6_lan_public_prefix_length" id="v6_lan_public_prefix_length">
+              </div>
+              <div class="form-group">
+                <label for="v6_lan_public_prefix">v6-lan-public-prefix</label>
+                <input type="text" class="form-control" name="v6_lan_public_prefix" id="v6_lan_public_prefix">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#t-provided-v6-lan-public-prefixes-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/tcp_port_list.ejs b/sdnc-a1-controller/oam/admportal/views/partials/tcp_port_list.ejs
new file mode 100644
index 0000000..efb4a43
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/tcp_port_list.ejs
@@ -0,0 +1,38 @@
+   <div class="modal fade" id="tcp-port-list-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="tcp-port-list-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">tcp-port-list</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="tcp_port_number">port-number</label>
+                <input type="text" class="form-control" name="tcp_port_number" id="tcp_port_number">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#tcp-port-list-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/threshold_alarm.ejs b/sdnc-a1-controller/oam/admportal/views/partials/threshold_alarm.ejs
new file mode 100644
index 0000000..f1df2ea
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/threshold_alarm.ejs
@@ -0,0 +1,71 @@
+<div class="modal fade" id="add_threshold_alarm" tabindex="-1" role="dialog"
+        aria-labelledby="add_threshold_alarm_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add Threshold Alarm</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/resalloc/addThresholdAlarm" method="POST">
+              <div class="form-group">
+                <label for="nf_resource_rule_id">*Resource Rule ID</label>
+                <input type="text" class="form-control" maxlength="20" name="nf_resource_rule_id" id="nf_resource_rule_id" placeholder="bigint(20)">
+              </div>
+              <div class="form-group">
+                <label for="nf_threshold_expression">*Threshold Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="nf_threshold_expression" id="nf_threshold_expression" placeholder="varchar(2000)">
+              </div>
+              <div class="form-group">
+                <label for="nf_threshold_message">*Threshold Message</label>
+                <input type="text" class="form-control" maxlength="500" name="nf_threshold_message" id="nf_threshold_message" placeholder="varchar(500)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <button type="button" class="btn btn-primary" onclick="submitThresholdAlarm(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+
+   <div class="modal fade" id="update_threshold_alarm" tabindex="-1" role="dialog" 
+		aria-labelledby="threshold_alarm_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update Threshold Alarm</h4>
+          </div>
+          <div class="modal-body">
+            <form name="updateForm" role="form" action="/resalloc/updateThresholdAlarm" method="POST">
+              <div class="form-group">
+                <label for="uf_resource_threshold_id">*Resource Threshold ID</label>
+                <input readonly type="text" class="form-control" name="uf_resource_threshold_id" id="uf_resource_threshold_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_resource_rule_id">*Resource Rule ID</label>
+                <input type="text" class="form-control" maxlength="20" name="uf_resource_rule_id" id="uf_resource_rule_id" placeholder="bigint(20)">
+              </div>
+              <div class="form-group">
+                <label for="uf_threshold_expression">*Threshold Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="uf_threshold_expression" id="uf_threshold_expression" placeholder="varchar(2000)">
+              </div>
+              <div class="form-group">
+                <label for="uf_threshold_message">*Threshold Message</label>
+                <input type="text" class="form-control" maxlength="2000" name="uf_threshold_message" id="uf_threshold_message" placeholder="varchar(2000)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+				<input type="hidden" name="uf_key_resource_threshold_id" id="uf_key_resource_threshold_id">
+                <button type="button" class="btn btn-primary" onclick="submitThresholdAlarm(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/udp_port_list.ejs b/sdnc-a1-controller/oam/admportal/views/partials/udp_port_list.ejs
new file mode 100644
index 0000000..b4310b2
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/udp_port_list.ejs
@@ -0,0 +1,38 @@
+   <div class="modal fade" id="udp-port-list-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="udp-port-list-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">udp-port-list</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="udp_port_number">port-number</label>
+                <input type="text" class="form-control" name="udp_port_number" id="udp_port_number">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#udp-port-list-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/update_aic_avail_zone.ejs b/sdnc-a1-controller/oam/admportal/views/partials/update_aic_avail_zone.ejs
new file mode 100644
index 0000000..29528a0
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/update_aic_avail_zone.ejs
@@ -0,0 +1,54 @@
+   <div class="modal fade" id="update_aic_avail_zone_modal" tabindex="-1" role="dialog" 
+		aria-labelledby="update_aic_avail_zone_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update AIC Availability Zone Pool</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/gamma/updateAicAvailZone" method="POST">
+              <div class="form-group">
+                <label for="uf_aic_site_id">AIC Site ID</label>
+                <input type="text" class="form-control" name="uf_aic_site_id" id="uf_aic_site_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_availability_zone">Availability Zone</label>
+                <input type="text" class="form-control" name="uf_availability_zone" id="uf_availability_zone">
+              </div>
+              <div class="form-group">
+                <label for="uf_token">Token</label>
+                <input type="text" class="form-control" name="uf_token" id="uf_token">
+              </div>
+              <div class="form-group">
+                <label for="uf_service_type">Service Type</label>
+                <input type="text" class="form-control" name="uf_service_type" id="uf_service_type">
+              </div>
+              <div class="form-group">
+                <label for="uf_status">Status</label>
+                <input type="text" class="form-control" name="uf_status" id="uf_status">
+              </div>
+              <div class="form-group">
+                <label for="uf_vnf_id">VNF ID</label>
+                <input type="text" class="form-control" name="uf_vnf_id" id="uf_vnf_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_vnf_type">VNF Type</label>
+                <input type="text" class="form-control" name="uf_vnf_type" id="uf_vnf_type">
+              </div>
+              <div class="form-group">
+                <label for="uf_hypervisor">Hypervisor</label>
+                <input type="text" class="form-control" name="uf_hypervisor" id="uf_hypervisor">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_key_aic_site_id" id="uf_key_aic_site_id">
+				<input type="hidden" name="uf_key_availability_zone" id="uf_key_availability_zone">
+				<input type="hidden" name="uf_key_token" id="uf_key_token">
+                <button type="submit" class="btn btn-primary">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/update_aic_site.ejs b/sdnc-a1-controller/oam/admportal/views/partials/update_aic_site.ejs
new file mode 100644
index 0000000..ffff9dc
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/update_aic_site.ejs
@@ -0,0 +1,57 @@
+   <div class="modal fade" id="update_aic_site_modal" tabindex="-1" role="dialog" 
+		aria-labelledby="update_aic_site_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update AIC Site</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/gamma/updateAicSite" method="POST">
+              <div class="form-group">
+                <label for="uf_name">Name</label>
+                <input type="text" class="form-control" name="uf_name" id="uf_name">
+              </div>
+              <div class="form-group">
+                <label for="uf_aic_site_id">AIC Site ID</label>
+                <input type="text" class="form-control" name="uf_aic_site_id" id="uf_aic_site_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_vcenter_url">VCenter URL</label>
+                <input type="text" class="form-control" name="uf_vcenter_url" id="uf_vcenter_url">
+              </div>
+              <div class="form-group">
+                <label for="uf_vcenter_username">VCenter User</label>
+                <input type="text" class="form-control" name="uf_vcenter_username" id="uf_vcenter_username">
+              </div>
+              <div class="form-group">
+                <label for="uf_vcenter_passwd">VCenter Password</label>
+                <input type="password" class="form-control" name="uf_vcenter_passwd" id="uf_vcenter_passwd">
+              </div>
+              <div class="form-group">
+                <label for="uf_oam_gateway_addr">OAM Gateway Address</label>
+                <input type="text" class="form-control" name="uf_oam_gateway_addr" id="uf_oam_gateway_addr">
+              </div>
+              <div class="form-group">
+                <label for="uf_city">City</label>
+                <input type="text" class="form-control" name="uf_city" id="uf_city">
+              </div>
+              <div class="form-group">
+                <label for="uf_state">State</label>
+                <input type="text" class="form-control" name="uf_state" id="uf_state">
+              </div>
+              <div class="form-group">
+                <label for="uf_operational_status">Operational Status</label>
+                <input type="text" class="form-control" name="uf_operational_status" id="uf_operational_status">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+				<input type="hidden" name="uf_key_aic_site_id" id="uf_key_aic_site_id">
+                <button type="submit" class="btn btn-primary">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/update_aic_switch.ejs b/sdnc-a1-controller/oam/admportal/views/partials/update_aic_switch.ejs
new file mode 100644
index 0000000..31f03d5
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/update_aic_switch.ejs
@@ -0,0 +1,41 @@
+   <div class="modal fade" id="update_aic_switch_modal" tabindex="-1" role="dialog" 
+		aria-labelledby="update_aic_switch_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update AIC Switch</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/gamma/updateAicSwitch" method="POST">
+              <div class="form-group">
+                <label for="uf_physical_network_name">Physical Network Name</label>
+                <input type="text" class="form-control" name="uf_physical_network_name" id="uf_physical_network_name">
+              </div>
+              <div class="form-group">
+                <label for="uf_switch_name">Switch Name</label>
+                <input type="text" class="form-control" name="uf_switch_name" id="uf_switch_name">
+              </div>
+              <div class="form-group">
+                <label for="uf_aic_site_id">AIC Site ID</label>
+                <input type="text" class="form-control" name="uf_aic_site_id" id="uf_aic_site_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_uuid">UUID</label>
+                <input type="text" class="form-control" name="uf_uuid" id="uf_uuid">
+              </div>
+              <div class="form-group">
+                <label for="uf_availability_zone">Availability Zone</label>
+                <input type="text" class="form-control" name="uf_availability_zone" id="uf_availability_zone">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+				<input type="hidden" name="uf_key_physical_network_name" id="uf_key_physical_network_name">
+                <button type="submit" class="btn btn-primary">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/update_max_port_speed.ejs b/sdnc-a1-controller/oam/admportal/views/partials/update_max_port_speed.ejs
new file mode 100644
index 0000000..71c4a42
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/update_max_port_speed.ejs
@@ -0,0 +1,45 @@
+   <div class="modal fade" id="update_max_port_speed" tabindex="-1" role="dialog" 
+		aria-labelledby="update_max_port_speed_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update Max Port Speed</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/resalloc/updateMaxPortSpeed" method="POST">
+              <div class="form-group">
+                <label for="uf_max_port_speed_id">ID</label>
+                <input readonly type="text" class="form-control" name="uf_max_port_speed_id" id="uf_max_port_speed_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_image_file_name">Image File Name</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_image_file_name" id="uf_image_file_name">
+              </div>
+              <div class="form-group">
+                <label for="uf_end_point_position">End Point Position</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_end_point_position" id="uf_end_point_position">
+              </div>
+              <div class="form-group">
+                <label for="uf_interface_name">Interface Name</label>
+                <input type="text" class="form-control" maxlength="100" name="uf_interface_name" id="uf_interface_name">
+              </div>
+              <div class="form-group">
+                <label for="uf_max_speed">Max Speed</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_max_speed" id="uf_max_speed">
+			  </div>
+              <div class="form-group">
+                <label for="uf_unit">Unit</label>
+                <input type="text" class="form-control" maxlength="10" name="uf_unit" id="uf_unit">
+			  </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+				<input type="hidden" name="uf_key_max_port_speed_id" id="uf_key_max_port_speed_id">
+                <button type="submit" class="btn btn-primary">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/update_parameter.ejs b/sdnc-a1-controller/oam/admportal/views/partials/update_parameter.ejs
new file mode 100644
index 0000000..257f657
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/update_parameter.ejs
@@ -0,0 +1,38 @@
+   <div class="modal fade" id="update_parameter" tabindex="-1" role="dialog" 
+		aria-labelledby="parameter_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update Parameter</h4>
+          </div>
+          <div class="modal-body">
+            <form name="updateForm" role="form" action="/admin/updateParameter" method="POST">
+              <div class="form-group">
+                <label for="uf_name">*Name</label>
+                <input maxlength="100" type="text" class="form-control" name="uf_name" id="uf_name" placeholder="varchar(100)">
+              </div>
+              <div class="form-group">
+                <label for="uf_value">*Value</label>
+                <input maxlength="100" type="text" class="form-control" name="uf_value" id="uf_value" placeholder="varchar(100)">
+              </div>
+              <div class="form-group">
+                <label for="uf_category">Category</label>
+                <input maxlength="24" type="text" class="form-control" name="uf_category" id="uf_category" placeholder="varchar(24)">
+              </div>
+              <div class="form-group">
+                <label for="uf_memo">Memo</label>
+                <input maxlength="128" type="text" class="form-control" name="uf_memo" id="uf_memo" placeholder="varchar(128)">
+              </div>
+			  <div class="form-group">
+					<input type="hidden" name="_csrf" value="<%= privilege.csrfToken %>" />
+                  <input type="hidden" name="nf_action" id="nf_action">
+                  <input type="hidden" name="uf_key_name" id="uf_key_name">
+                  <button type="button" class="btn btn-primary" onclick="submitParam(this.form);">Submit</button>
+                  <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/update_resource_rule.ejs b/sdnc-a1-controller/oam/admportal/views/partials/update_resource_rule.ejs
new file mode 100644
index 0000000..69243b2
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/update_resource_rule.ejs
@@ -0,0 +1,57 @@
+   <div class="modal fade" id="update_resource_rule" tabindex="-1" role="dialog" 
+		aria-labelledby="update_resource_rule_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update Resource Rule</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/resalloc/updateResourceRule" method="POST">
+              <div class="form-group">
+                <label for="uf_resource_rule_id">Rule ID</label>
+                <input readonly type="text" class="form-control" name="uf_resource_rule_id" id="uf_resource_rule_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_resource_name">Name</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_resource_name" id="uf_resource_name">
+              </div>
+              <div class="form-group">
+                <label for="uf_end_point_position">End Point Position</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_end_point_position" id="uf_end_point_position">
+              </div>
+              <div class="form-group">
+                <label for="uf_service_expression">Service Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="uf_service_expression" id="uf_service_expression">
+              </div>
+              <div class="form-group">
+                <label for="uf_equipment_level">Equipment Level</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_equipment_level" id="uf_equipment_level">
+			  </div>
+              <div class="form-group">
+                <label for="uf_equipment_expression">Equipment Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="uf_equipment_expression" id="uf_equipment_expression">
+			  </div>
+              <div class="form-group">
+                <label for="uf_allocation_expression">Allocation Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="uf_allocation_expression" id="uf_allocation_expression">
+              </div>
+              <div class="form-group">
+                <label for="uf_soft_limit_expression">Soft Limit Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="uf_soft_limit_expression" id="uf_soft_limit_expression">
+              </div>
+              <div class="form-group">
+                <label for="uf_hard_limit_expression">Hard Limit Expression</label>
+                <input type="text" class="form-control" maxlength="2000" name="uf_hard_limit_expression" id="uf_hard_limit_expression">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+				<input type="hidden" name="uf_key_resource_rule_id" id="uf_key_resource_rule_id">
+                <button type="submit" class="btn btn-primary">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/update_service_homing.ejs b/sdnc-a1-controller/oam/admportal/views/partials/update_service_homing.ejs
new file mode 100644
index 0000000..5697168
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/update_service_homing.ejs
@@ -0,0 +1,55 @@
+   <div class="modal fade" id="update_service_homing" tabindex="-1" role="dialog" 
+		aria-labelledby="update_service_homing_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update Service Homing</h4>
+          </div>
+          <div class="modal-body">
+            <form name="updateForm" role="form" action="/gamma/updateServiceHoming" method="POST">
+              <div class="form-group">
+                <label for="uf_service_type">*Service Type</label>
+                <input readonly type="text" class="form-control" name="uf_service_type" id="uf_service_type">
+              </div>
+              <div class="form-group">
+                <label for="uf_lata">*LATA</label>
+                <input type="text" class="form-control" name="uf_lata" id="uf_lata" maxlength="12" placeholder="int(3)">
+              </div>
+              <div class="form-group">
+                <label for="uf_hubbing_city_type">*Hubbing City Type</label>
+                <input type="text" class="form-control" name="uf_hubbing_city_type" id="uf_hubbing_city_type" maxlength="40" placeholder="varchar(40)">
+              </div>
+              <div class="form-group">
+                <label for="uf_latitude">Latitude</label>
+                <input type="text" class="form-control" name="uf_latitude" id="uf_latitude" maxlength="24" placeholder="float">
+              </div>
+              <div class="form-group">
+                <label for="uf_longitude">Longitude</label>
+                <input type="text" class="form-control" name="uf_longitude" id="uf_longitude" maxlength="24" placeholder="float">
+			  </div>
+              <div class="form-group">
+                <label for="uf_primary_aic_site_name">*Primary Site Name</label>
+                <input type="text" class="form-control" name="uf_primary_aic_site_name" id="uf_primary_aic_site_name" maxlength="100" placeholder="varchar(100)">
+			  </div>
+              <div class="form-group">
+                <label for="uf_secondary_aic_site_name">Secondary Site Name</label>
+                <input type="text" class="form-control" name="uf_secondary_aic_site_name" id="uf_secondary_aic_site_name" maxlength="100" placeholder="varchar(100)">
+              </div>
+              <div class="form-group">
+                <label for="uf_tertiary_aic_site_name">Tertiary Site Name</label>
+                <input type="text" class="form-control" name="uf_tertiary_aic_site_name" id="uf_tertiary_aic_site_name" maxlength="100" placeholder="varchar(100)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+				<input type="hidden" name="uf_key_service_type" id="uf_key_service_type">
+				<input type="hidden" name="uf_key_lata" id="uf_key_lata">
+				<input type="hidden" name="uf_key_hubbing_city_type" id="uf_key_hubbing_city_type">
+				<button type="button" class="btn btn-primary" onclick="submitServiceHoming(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/update_vlan_id_pool.ejs b/sdnc-a1-controller/oam/admportal/views/partials/update_vlan_id_pool.ejs
new file mode 100644
index 0000000..d010672
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/update_vlan_id_pool.ejs
@@ -0,0 +1,51 @@
+   <div class="modal fade" id="update_vlan_id_pool_modal" tabindex="-1" role="dialog" 
+		aria-labelledby="update_vlan_id_pool_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update VLAN ID Pool</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/gamma/updateVlanPool" method="POST">
+              <div class="form-group">
+                <label for="uf_aic_site_id">AIC Site ID</label>
+                <input type="text" class="form-control" name="uf_aic_site_id" id="uf_aic_site_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_purpose">Purpose</label>
+                <input type="text" class="form-control" name="uf_purpose" id="uf_purpose">
+              </div>
+              <div class="form-group">
+                <label for="uf_vlan_id">VLAN ID</label>
+                <input type="text" class="form-control" name="uf_vlan_id" id="uf_vlan_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_vplspe_name">VPLSPE Name</label>
+                <input type="text" class="form-control" name="uf_vplspe_name" id="uf_vplspe_name">
+              </div>
+              <div class="form-group">
+                <label for="uf_availability_zone">Availability Zone</label>
+                <input type="text" class="form-control" name="uf_availability_zone" id="uf_availability_zone">
+              </div>
+              <div class="form-group">
+                <label for="uf_status">Status</label>
+                <input type="text" class="form-control" name="uf_status" id="uf_status">
+              </div>
+              <div class="form-group">
+                <label for="uf_svc_instance_id">Svc Instance ID</label>
+                <input type="text" class="form-control" name="uf_svc_instance_id" id="uf_svc_instance_id">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+				<input type="hidden" name="uf_key_aic_site_id" id="uf_key_aic_site_id">
+				<input type="hidden" name="uf_key_purpose" id="uf_key_purpose">
+				<input type="hidden" name="uf_key_vlan_id" id="uf_key_vlan_id">
+                <button type="submit" class="btn btn-primary">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/update_vpe_pool.ejs b/sdnc-a1-controller/oam/admportal/views/partials/update_vpe_pool.ejs
new file mode 100644
index 0000000..c583590
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/update_vpe_pool.ejs
@@ -0,0 +1,88 @@
+   <div class="modal fade" id="update_vpe_pool_modal" tabindex="-1" role="dialog" 
+		aria-labelledby="update_vpe_pool_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update VPE Pool</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/gamma/updateVpePool" method="POST">
+              <div class="form-group">
+                <label for="uf_aic_site_id">AIC Site ID</label>
+                <input type="text" class="form-control" name="uf_aic_site_id" id="uf_aic_site_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_vpe_name">VPE Name</label>
+                <input type="text" class="form-control" name="uf_vpe_name" id="uf_vpe_name">
+              </div>
+              <div class="form-group">
+                <label for="uf_availability_zone">Availability Zone</label>
+                <input type="text" class="form-control" name="uf_availability_zone" id="uf_availability_zone">
+              </div>
+              <div class="form-group">
+                <label for="uf_ipv4_oam_address">IPV4 OAM Address</label>
+                <input type="text" class="form-control" name="uf_ipv4_oam_address" id="uf_ipv4_oam_address">
+              </div>
+              <div class="form-group">
+                <label for="uf_loopback0_ipv4_address">Loopback IPV4 Address</label>
+                <input type="text" class="form-control" name="uf_loopback0_ipv4_address" id="uf_loopback0_ipv4_address">
+              </div>
+              <div class="form-group">
+                <label for="uf_provisioning_status">Provisioning Status</label>
+                <select class="form-control" name="uf_provisioning_status" id="uf_provisioning_status">
+                    <option value=PREPROV>PREPROV</option>
+                    <option value=NVTPROV>NVTPROV</option>
+                    <option value=PROV>PROV</option>
+                    <option value=CAPPED>CAPPED</option>
+                </select>
+              </div>
+              <div class="form-group">
+                <label for="uf_vlan_id_outer">VLAN ID Outer</label>
+                <input type="text" class="form-control" name="uf_vlan_id_outer" id="uf_vlan_id_outer">
+              </div>
+              <div class="form-group">
+                <label for="uf_vendor">Vendor</label>
+                <input type="text" class="form-control" name="uf_vendor" id="uf_vendor">
+              </div>
+              <div class="form-group">
+                <label for="uf_physical_intf_name">Interface Name</label>
+                <input type="text" class="form-control" name="uf_physical_intf_name" id="uf_physical_intf_name">
+              </div>
+              <div class="form-group">
+                <label for="uf_physical_intf_speed">Interface Speed</label>
+                <input type="text" class="form-control" name="uf_physical_intf_speed" id="uf_physical_intf_speed">
+              </div>
+              <div class="form-group">
+                <label for="uf_physical_intf_units">Interface Units</label>
+                <input type="text" class="form-control" name="uf_physical_intf_units" id="uf_physical_intf_units">
+              </div>
+              <div class="form-group">
+                <label for="uf_vpe_uuid">VPE UUID</label>
+                <input type="text" class="form-control" name="uf_vpe_uuid" id="uf_vpe_uuid">
+              </div>
+              <div class="form-group">
+                <label for="uf_as_number">AS_NUMBER</label>
+                <input type="text" class="form-control" name="uf_as_number" id="uf_as_number">
+              </div>
+              <div class="form-group">
+                <label for="uf_vpe_id">VPE ID</label>
+                <input type="text" class="form-control" name="uf_vpe_id" id="uf_vpe_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_image_filename">Image Filename</label>
+                <input type="text" class="form-control" name="uf_image_filename" id="uf_image_filename">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="uf_key_vpe_name" id="uf_key_vpe_name">
+                <input type="hidden" name="uf_key_availability_zone" id="uf_key_availability_zone">
+                <input type="hidden" name="uf_key_aic_site_id" id="uf_key_aic_site_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="submit" class="btn btn-primary">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/update_vplspe_pool.ejs b/sdnc-a1-controller/oam/admportal/views/partials/update_vplspe_pool.ejs
new file mode 100644
index 0000000..eb93052
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/update_vplspe_pool.ejs
@@ -0,0 +1,72 @@
+   <div class="modal fade" id="update_vplspe_pool_modal" tabindex="-1" role="dialog" 
+		aria-labelledby="update_vplspe_pool_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update VPLSPE Pool</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/gamma/updateVplspePool" method="POST">
+              <div class="form-group">
+                <label for="uf_vplspe_name">VPLSPE Name</label>
+                <input type="text" class="form-control" name="uf_vplspe_name" id="uf_vplspe_name">
+              </div>
+              <div class="form-group">
+                <label for="uf_aic_site_id">AIC Site ID</label>
+                <input type="text" class="form-control" name="uf_aic_site_id" id="uf_aic_site_id">
+              </div>
+              <div class="form-group">
+                <label for="uf_availability_zone">Availability Zone</label>
+                <input type="text" class="form-control" name="uf_availability_zone" id="uf_availability_zone">
+              </div>
+              <div class="form-group">
+                <label for="uf_physical_intf_name">Interface Name</label>
+                <input type="text" class="form-control" name="uf_physical_intf_name" id="uf_physical_intf_name">
+              </div>
+              <div class="form-group">
+                <label for="uf_physical_intf_speed">Interface Speed</label>
+                <input type="text" class="form-control" name="uf_physical_intf_speed" id="uf_physical_intf_speed">
+			  </div>
+              <div class="form-group">
+                <label for="uf_physical_intf_units">Interface Units</label>
+                <input type="text" class="form-control" name="uf_physical_intf_units" id="uf_physical_intf_units">
+			  </div>
+              <div class="form-group">
+                <label for="uf_loopback0_ipv4_address">Loopback IPV4 Address</label>
+                <input type="text" class="form-control" name="uf_loopback0_ipv4_address" id="uf_loopback0_ipv4_address">
+              </div>
+              <div class="form-group">
+                <label for="uf_vlan_id_outer">VLAN ID Outer</label>
+                <input type="text" class="form-control" name="uf_vlan_id_outer" id="uf_vlan_id_outer">
+              </div>
+              <div class="form-group">
+                <label for="uf_vplspe_uuid">VPLSPE UUID</label>
+                <input type="text" class="form-control" name="uf_vplspe_uuid" id="uf_vplspe_uuid">
+              </div>
+              <div class="form-group">
+                <label for="uf_image_filename">Image Filename</label>
+                <input type="text" class="form-control" name="uf_image_filename" id="uf_image_filename">
+              </div>
+              <div class="form-group">
+                <label for="uf_provisioning_status">Provisioning Status</label>
+                <input type="text" class="form-control" name="uf_provisioning_status" id="uf_provisioning_status">
+              </div>
+              <div class="form-group">
+                <label for="uf_vendor">Vendor</label>
+                <input type="text" class="form-control" name="uf_vendor" id="uf_vendor">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="uf_key_availability_zone" id="uf_key_availability_zone">
+                <input type="hidden" name="uf_key_physical_intf_name" id="uf_key_physical_intf_name">
+                <input type="hidden" name="uf_key_vplspe_name" id="uf_key_vplspe_name">
+                <input type="hidden" name="uf_key_aic_site_id" id="uf_key_aic_site_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="submit" class="btn btn-primary">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/userform.ejs b/sdnc-a1-controller/oam/admportal/views/partials/userform.ejs
new file mode 100644
index 0000000..f882c6d
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/userform.ejs
@@ -0,0 +1,42 @@
+<div class="modal fade" id="myUserModal" tabindex="-1" role="dialog" aria-labelledby="myUserModalLabel" aria-hidden="true">
+	<div class="modal-dialog">
+		<div class="modal-content">
+			<div class="modal-header">
+				<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+				<h4 class="modal-title" id="myUserModalLabel">Update User</h4>
+			</div>
+			<div class="modal-body">
+				<form id="updateForm" name="updateForm" role="form" action="/user/updateUser" method="POST">
+					<div class="form-group">
+						<label for="uf_email">Email</label>
+						<input type="email" class="form-control" name="uf_email" id="uf_email" />
+					</div>
+					<div class="form-group">
+						<label for="uf_password">Password</label>
+						<input type="password" class="form-control" name="uf_password" id="uf_password" />
+					</div>
+					<div class="form-group">
+						<label for="uf_confirm_password">Confirm Password</label>
+						<input type="password" class="form-control" name="uf_confirm_password" id="uf_confirm_password" />
+					</div>
+					<div class="form-group">
+						<label for="uf_privilege">Privilege</label>
+						<select class="form-control" name="uf_privilege" id="uf_privilege">
+							<option value=admin>Administrator</option>
+							<option value=readonly>Readonly</option>
+						</select>
+					</div>
+					<div class="form-group">
+						<input type="hidden" name="uf_action" id="uf_action" />
+						<input type="hidden" name="_csrf" value="<%= privilege.csrfToken %>" />
+						<input type="hidden" name="uf_key_email" id="uf_key_email" />
+						<button type="button" class="btn btn-primary" onclick="submitUserAdmin(this.form);">Submit</button>
+						<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+					</div>
+				</form>
+			</div>
+		</div>
+	</div>
+</div>
+
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/v4_dhcp_pools.ejs b/sdnc-a1-controller/oam/admportal/views/partials/v4_dhcp_pools.ejs
new file mode 100644
index 0000000..5a67aeb
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/v4_dhcp_pools.ejs
@@ -0,0 +1,50 @@
+   <div class="modal fade" id="v4-dhcp-pools-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="v4-dhcp-pools-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">dhcp</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="v4_dhcp_relay_next_hop_address">v4-dhcp-relay-next-hop-address</label>
+                <input type="text" class="form-control" name="v4_dhcp_relay_next_hop_address" id="v4_dhcp_relay_next_hop_address">
+              </div>
+              <div class="form-group">
+                <label for="v4_dhcp_pool_prefix">v4-dhcp-pool-prefix</label>
+                <input type="text" class="form-control" name="v4_dhcp_pool_prefix" id="v4_dhcp_pool_prefix">
+              </div>
+              <div class="form-group">
+                <label for="v4_dhcp_pool_prefix_length">v4-dhcp-pool-prefix-length</label>
+                <input type="text" class="form-control" name="v4_dhcp_pool_prefix_length" id="v4_dhcp_pool_prefix_length">
+              </div>
+              <div class="form-group">
+                <label for="v4_dhcp_relay_gateway_address">v4-dhcp-relay-gateway-address</label>
+                <input type="text" class="form-control" name="v4_dhcp_relay_gateway_address" id="v4_dhcp_relay_gateway_address">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#v4-dhcp-pools-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/v4_firewall_packet_filters.ejs b/sdnc-a1-controller/oam/admportal/views/partials/v4_firewall_packet_filters.ejs
new file mode 100644
index 0000000..0b091d1
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/v4_firewall_packet_filters.ejs
@@ -0,0 +1,46 @@
+   <div class="modal fade" id="v4-firewall-packet-filters-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="v4-firewall-packet-filters-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">v4-firewall-packet-filters</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="v4_firewall_prefix">v4-firewall-prefix</label>
+                <input type="text" class="form-control" name="v4_firewall_prefix" id="v4_firewall_prefix">
+              </div>
+              <div class="form-group">
+                <label for="v4_firewall_prefix_length">v4-firewall-prefix-length</label>
+                <input type="text" class="form-control" name="v4_firewall_prefix_length" id="v4_firewall_prefix_length">
+              </div>
+              <div class="form-group">
+                <label for="v4_allow_icmp_ping">allow-icmp-ping</label>
+                <input type="text" class="form-control" name="v4_allow_icmp_ping" id="v4_allow_icmp_ping">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#v4-firewall-packet-filters-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/v4_nat_mapping_entries.ejs b/sdnc-a1-controller/oam/admportal/views/partials/v4_nat_mapping_entries.ejs
new file mode 100644
index 0000000..ef80022
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/v4_nat_mapping_entries.ejs
@@ -0,0 +1,46 @@
+   <div class="modal fade" id="v4-nat-mapping-entries-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="v4-nat-mapping-entries-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">v4-nat-mapping-entries</h4>
+          </div>
+          <div class="modal-body">
+            <form id="v4_nat_mapping_entries_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="v4_nat_external">v4-nat-external</label>
+                <input type="text" class="form-control" name="v4_nat_external" id="v4_nat_external">
+              </div>
+              <div class="form-group">
+                <label for="v4_nat_next_hop_address">v4-nat-next-hop-address</label>
+                <input type="text" class="form-control" name="v4_nat_next_hop_address" id="v4_nat_next_hop_address">
+              </div>
+              <div class="form-group">
+                <label for="v4_nat_internal">v4-nat-internal</label>
+                <input type="text" class="form-control" name="v4_nat_internal" id="v4_nat_internal">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#v4-nat-mapping-entries-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/v4_static_routes.ejs b/sdnc-a1-controller/oam/admportal/views/partials/v4_static_routes.ejs
new file mode 100644
index 0000000..0474dd3
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/v4_static_routes.ejs
@@ -0,0 +1,46 @@
+   <div class="modal fade" id="v4-static-routes-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="v4-static-routes-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">v4-static-routes</h4>
+          </div>
+          <div class="modal-body">
+            <form id="v4_static_route_prefix_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="v4_static_route_prefix">v4-static-route-prefix</label>
+                <input type="text" class="form-control" name="v4_static_route_prefix" id="v4_static_route_prefix">
+              </div>
+              <div class="form-group">
+                <label for="v4_static_route_prefix_length">v4-static-route-prefix-length</label>
+                <input type="text" class="form-control" name="v4_static_route_prefix_length" id="v4_static_route_prefix_length">
+              </div>
+              <div class="form-group">
+                <label for="static_v4_next_hop_address">v4-next-hop-address</label>
+                <input type="text" class="form-control" name="static_v4_next_hop_address" id="static_v4_next_hop_address">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#v4-static-routes-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/v6_dhcp_pools.ejs b/sdnc-a1-controller/oam/admportal/views/partials/v6_dhcp_pools.ejs
new file mode 100644
index 0000000..7dc54ab
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/v6_dhcp_pools.ejs
@@ -0,0 +1,50 @@
+   <div class="modal fade" id="v6-dhcp-pools-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="v6-dhcp-pools-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">v6-dhcp-pools</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="v6_dhcp_relay_next_hop_address">v6-dhcp-relay-next-hop-address</label>
+                <input type="text" class="form-control" name="v6_dhcp_relay_next_hop_address" id="v6_dhcp_relay_next_hop_address">
+              </div>
+              <div class="form-group">
+                <label for="v6_dhcp_pool_prefix">v6-dhcp-pool-prefix</label>
+                <input type="text" class="form-control" name="v6_dhcp_pool_prefix" id="v6_dhcp_pool_prefix">
+              </div>
+              <div class="form-group">
+                <label for="v6_dhcp_pool_prefix_length">v6-dhcp-pool-prefix-length</label>
+                <input type="text" class="form-control" name="v6_dhcp_pool_prefix_length" id="v6_dhcp_pool_prefix_length">
+              </div>
+              <div class="form-group">
+                <label for="v6_dhcp_relay_gateway_address">v6-dhcp-relay-gateway-address</label>
+                <input type="text" class="form-control" name="v6_dhcp_relay_gateway_address" id="v6_dhcp_relay_gateway_address">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#v6-dhcp-pools-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/v6_firewall_packet_filters.ejs b/sdnc-a1-controller/oam/admportal/views/partials/v6_firewall_packet_filters.ejs
new file mode 100644
index 0000000..09e2e3d
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/v6_firewall_packet_filters.ejs
@@ -0,0 +1,46 @@
+   <div class="modal fade" id="v6-firewall-packet-filters-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="v6-firewall-packet-filters-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">v6-firewall-packet-filters</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="v6_firewall_prefix">v6-firewall-prefix</label>
+                <input type="text" class="form-control" name="v6_firewall_prefix" id="v6_firewall_prefix">
+              </div>
+              <div class="form-group">
+                <label for="v6_firewall_prefix_length">v6-firewall-prefix-length</label>
+                <input type="text" class="form-control" name="v6_firewall_prefix_length" id="v6_firewall_prefix_length">
+              </div>
+              <div class="form-group">
+                <label for="v6_allow_icmp_ping">allow-icmp-ping</label>
+                <input type="text" class="form-control" name="v6_allow_icmp_ping" id="v6_allow_icmp_ping">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#v6-firewall-packet-filters-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/v6_static_routes.ejs b/sdnc-a1-controller/oam/admportal/views/partials/v6_static_routes.ejs
new file mode 100644
index 0000000..bea721d
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/v6_static_routes.ejs
@@ -0,0 +1,46 @@
+   <div class="modal fade" id="v6-static-routes-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="v6-static-routes-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">v6-static-routes</h4>
+          </div>
+          <div class="modal-body">
+            <form id="v6_static_route_prefix_form" role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="v6_static_route_prefix">v6-static-route-prefix</label>
+                <input type="text" class="form-control" name="v6_static_route_prefix" id="v6_static_route_prefix">
+              </div>
+              <div class="form-group">
+                <label for="v6_static_route_prefix_length">v6-static-route-prefix-length</label>
+                <input type="text" class="form-control" name="v6_static_route_prefix_length" id="v6_static_route_prefix_length">
+              </div>
+              <div class="form-group">
+                <label for="static_v6_next_hop_address">v6-next-hop-address</label>
+                <input type="text" class="form-control" name="static_v6_next_hop_address" id="static_v6_next_hop_address">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#v6-static-routes-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/vlan.ejs b/sdnc-a1-controller/oam/admportal/views/partials/vlan.ejs
new file mode 100644
index 0000000..99cb802
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/vlan.ejs
@@ -0,0 +1,46 @@
+   <div class="modal fade" 
+		id="vlan-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="vlan-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">vlan</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="vlan_interface">vlan-interface</label>
+                <input type="text" class="form-control" name="vlan_interface" id="vlan_interface">
+              </div>
+              <div class="form-group">
+                <label for="vlan_id_inner">vlan-id-inner</label>
+                <input type="text" class="form-control" name="vlan_id_inner" id="vlan_id_inner">
+              </div>
+              <div class="form-group">
+                <label for="vlan_id_outer">vlan-id-outer</label>
+                <input type="text" class="form-control" name="vlan_id_outer" id="vlan_id_outer">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#vlan-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/vm_networks.ejs b/sdnc-a1-controller/oam/admportal/views/partials/vm_networks.ejs
new file mode 100644
index 0000000..f0f7337
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/vm_networks.ejs
@@ -0,0 +1,57 @@
+   <div class="modal fade" id="add_vm_network" tabindex="-1" role="dialog" 
+		aria-labelledby="add_vm_network" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add VM Network</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/mobility/addVmNetwork" method="POST">
+              <div class="form-group">
+                <label for="nf_vnf_type">*VNF Type</label>
+                <input type="text" class="form-control" name="nf_vnf_type" id="nf_vnf_type" maxlength="200" placeholder="varchar(200)">
+              </div>
+              <div class="form-group">
+                <label for="nf_vm_type">*VM Type</label>
+                <input type="text" class="form-control" name="nf_vm_type" id="nf_vm_type" maxlength="45" placeholder="varchar(45)">
+              </div>
+              <div class="form-group">
+                <label for="nf_network_role">*NETWORK ROLE</label>
+                <input maxlength="45" type="text" class="form-control" name="nf_network_role" id="nf_network_role" placeholder="varchar(45)">
+              </div>
+              <div class="form-group">
+                <label for="nf_ip_count">IP COUNT</label>
+                <input maxlength="3" type="text" class="form-control" name="nf_ip_count" id="nf_ip_count" placeholder="int(11)">
+              </div>
+              <div class="form-group">
+                <label for="nf_assign_ips">ASSIGN IPS</label>
+                <select class="form-control" name="nf_assign_ips" id="nf_assign_ips">
+					<option>true</option>
+					<option>false</option>
+				</select>
+              </div>
+              <div class="form-group">
+                <label for="nf_assign_macs">ASSIGN MACS</label>
+                <select class="form-control" name="nf_assign_macs" id="nf_assign_macs">
+					<option>true</option>
+					<option>false</option>
+				</select>
+			  </div>
+              <div class="form-group">
+                <label for="nf_assign_floating_ip">ASSIGN FLOATING IP</label>
+                <select class="form-control" name="nf_assign_floating_ip" id="nf_assign_floating_ip">
+					<option>true</option>
+					<option>false</option>
+				</select>
+			  </div>
+              <div class="form-group">
+				<input type="hidden" name="nf_action" id="nf_action">
+				<button type="button" class="btn btn-primary" onclick="addVmNetwork(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/vm_profile.ejs b/sdnc-a1-controller/oam/admportal/views/partials/vm_profile.ejs
new file mode 100644
index 0000000..5c437e9
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/vm_profile.ejs
@@ -0,0 +1,32 @@
+   <div class="modal fade" id="add_vm_profile" tabindex="-1" role="dialog" 
+		aria-labelledby="add_vm_profile" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add VM Profile</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/mobility/addVmProfile" method="POST">
+              <div class="form-group">
+                <label for="nf_vnf_type">*VNF Type</label>
+                <input type="text" class="form-control" name="nf_vnf_type" id="nf_vnf_type" maxlength="200" placeholder="varchar(200)">
+              </div>
+              <div class="form-group">
+                <label for="nf_vm_type">*VM Type</label>
+                <input type="text" class="form-control" name="nf_vm_type" id="nf_vm_type" maxlength="45" placeholder="varchar(45)">
+              </div>
+              <div class="form-group">
+                <label for="nf_vm_count">VM Count</label>
+                <input type="text" class="form-control" name="nf_vm_count" id="nf_vm_count" maxlength="11" placeholder="int(11)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="nf_action" id="nf_action">
+				<button type="button" class="btn btn-primary" onclick="addVmProfile(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/vnf_network.ejs b/sdnc-a1-controller/oam/admportal/views/partials/vnf_network.ejs
new file mode 100644
index 0000000..47580dc
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/vnf_network.ejs
@@ -0,0 +1,28 @@
+   <div class="modal fade" id="add_vnf_network" tabindex="-1" role="dialog" 
+		aria-labelledby="add_vnf_network" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add VNF Network</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/mobility/addVnfNetwork" method="POST">
+              <div class="form-group">
+                <label for="nf_vnf_type">*VNF Type</label>
+                <input type="text" class="form-control" name="nf_vnf_type" id="nf_vnf_type" maxlength="200" placeholder="varchar(200)">
+              </div>
+              <div class="form-group">
+                <label for="nf_network_role">*Network Role</label>
+                <input type="text" class="form-control" name="nf_network_role" id="nf_network_role" maxlength="45" placeholder="varchar(45)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="nf_action" id="nf_action">
+				<button type="button" class="btn btn-primary" onclick="addVnfNetwork(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/vnf_profile.ejs b/sdnc-a1-controller/oam/admportal/views/partials/vnf_profile.ejs
new file mode 100644
index 0000000..f513219
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/vnf_profile.ejs
@@ -0,0 +1,33 @@
+   <div class="modal fade" id="add_vnf_profile" tabindex="-1" role="dialog" 
+		aria-labelledby="add_vnf_profile" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add VNF Profile</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/mobility/addVnfProfile" method="POST">
+              <div class="form-group">
+                <label for="nf_vnf_type">*VNF Type</label>
+                <input type="text" class="form-control" name="nf_vnf_type" id="nf_vnf_type" maxlength="200" placeholder="varchar(200)">
+              </div>
+              <div class="form-group">
+                <label for="nf_availability_zone_count">Availability Zone Count</label>
+                <input type="text" class="form-control" name="nf_availability_zone_count" id="nf_availability_zone_count" maxlength="11" placeholder="int(11)">
+              </div>
+              <div class="form-group">
+                <label for="nf_equipment_role">Equipment Role</label>
+                <input type="text" class="form-control" name="nf_equipment_role" id="nf_equipment_role" maxlength="11" placeholder="varchar(80)">
+              </div>
+              <div class="form-group">
+								<input type="hidden" name="nf_action" id="nf_action">
+								<input type="hidden" name="_csrf" value="<%= privilege.csrfToken %>" />
+								<button type="button" class="btn btn-primary" onclick="addVnfProfile(this.form);">Submit</button>
+								<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/vnf_vm_information.ejs b/sdnc-a1-controller/oam/admportal/views/partials/vnf_vm_information.ejs
new file mode 100644
index 0000000..fb9af73
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/vnf_vm_information.ejs
@@ -0,0 +1,42 @@
+   <div class="modal fade" 
+		id="vnf-vm-information-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="vnf-vm-information-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">vnf-vm-information</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="" method="POST">
+              <div class="form-group">
+                <label for="vserver_type">vserver-type</label>
+                <input type="text" class="form-control" name="vserver_type" id="vserver_type">
+              </div>
+              <div class="form-group">
+                <label for="vserver_name">vserver-name</label>
+                <input type="text" class="form-control" name="vserver_name" id="vserver_name">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#vnf-vm-information-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/vr_lan_interface.ejs b/sdnc-a1-controller/oam/admportal/views/partials/vr_lan_interface.ejs
new file mode 100644
index 0000000..45f7ec1
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/vr_lan_interface.ejs
@@ -0,0 +1,66 @@
+   <div class="modal fade" id="vr-lan-interface-modal" tabindex="-1" role="dialog" 
+		aria-labelledby="vr-lan-interface-modal-label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">VR-LAN-INTERFACE</h4>
+          </div>
+          <div class="modal-body">
+            <form id="vr_lan_interface_form" role="form" action="/odl/update_vr_lan_interface" method="POST">
+              <div class="form-group">
+                <label for="vr_designation">vr-designation</label>
+                <input type="text" class="form-control" name="vr_designation" id="vr_designation">
+              </div>
+              <div class="form-group">
+                <label for="v6_vr_lan_prefix">v6-vr-lan-prefix</label>
+                <input type="text" class="form-control" name="v6_vr_lan_prefix" id="v6_vr_lan_prefix">
+              </div>
+              <div class="form-group">
+                <label for="v6_vr_lan_prefix_length">v6-vr-lan-prefix-length</label>
+                <input type="text" class="form-control" name="v6_vr_lan_prefix_length" id="v6_vr_lan_prefix_length">
+              </div>
+              <div class="form-group">
+                <label for="v6_vce_wan_address">v6-vce-wan-address</label>
+                <input type="text" class="form-control" name="v6_vce_wan_address" id="v6_vce_wan_address">
+              </div>
+              <div class="form-group">
+                <label for="v4_vr_lan_prefix">v4-vr-lan-prefix</label>
+                <input type="text" class="form-control" name="v4_vr_lan_prefix" id="v4_vr_lan_prefix">
+              </div>
+              <div class="form-group">
+                <label for="v4_vr_lan_prefix_length">v4-vr-lan-prefix-length</label>
+                <input type="text" class="form-control" name="v4_vr_lan_prefix_length" id="v4_vr_lan_prefix_length">
+              </div>
+              <div class="form-group">
+                <label for="t_defaulted_v6_vrlan">t-defaulted-v6-vrlan</label>
+                <input type="text" class="form-control" name="t_defaulted_v6_vrlan" id="t_defaulted_v6_vrlan">
+              </div>
+              <div class="form-group">
+                <label for="v4_vce_loopback_address">v4-vce-loopback-address</label>
+                <input type="text" class="form-control" name="v4_vce_loopback_address" id="v4_vce_loopback_address">
+              </div>
+
+<!--
+              <div class="form-group">
+				<input type="hidden" name="svc_instance_id" id="svc_instance_id">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <button type="button" class="btn btn-primary" onclick="submit(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+-->
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+<script type="text/javascript">
+function submit(form){
+	$('#vr-lan-interface-modal').modal('hide');
+	form.action = form.uf_action.value;
+	form.submit();
+	return;
+}
+</script>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/partials/vrr_credentials.ejs b/sdnc-a1-controller/oam/admportal/views/partials/vrr_credentials.ejs
new file mode 100644
index 0000000..620176d
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/partials/vrr_credentials.ejs
@@ -0,0 +1,82 @@
+<div class="modal fade" id="add_vrr_credentials" tabindex="-1" role="dialog"
+        aria-labelledby="add_vrr_credentials_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Add VRR Credentials</h4>
+          </div>
+          <div class="modal-body">
+            <form name="addForm" role="form" action="/sdnfc/addVrrCredentials" method="POST">
+              <div class="form-group">
+                <label for="nf_server_name">*Server Name</label>
+                <input type="text" class="form-control" maxlength="50" name="nf_server_name" id="nf_server_name" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="nf_ip_address">*IP Address</label>
+                <input type="text" class="form-control" maxlength="15" name="nf_ip_address" id="nf_ip_address" placeholder="varchar(15)">
+              </div>
+              <div class="form-group">
+                <label for="nf_username">*Username</label>
+                <input type="text" class="form-control" maxlength="50" name="nf_username" id="nf_username" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="nf_password">*Password</label>
+                <input type="password" class="form-control" maxlength="255" name="nf_password" id="nf_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+                <label for="nf_confirm_password">*Confirm Password</label>
+                <input type="password" class="form-control" maxlength="255" name="nf_confirm_password" id="nf_confirm_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+                <input type="hidden" name="nf_action" id="nf_action">
+                <button type="button" class="btn btn-primary" onclick="submitVrrCredentials(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
+
+   <div class="modal fade" id="update_vrr_credentials" tabindex="-1" role="dialog" 
+		aria-labelledby="update_vrr_credentials_label" aria-hidden="true">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+            <h4 class="modal-title">Update VRR Credentials</h4>
+          </div>
+          <div class="modal-body">
+            <form role="form" action="/sdnfc/updateVrrCredentials" method="POST">
+              <div class="form-group">
+                <label for="uf_server_name">*Server Name</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_server_name" id="uf_server_name" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="uf_ip_address">*IP Address</label>
+                <input type="text" class="form-control" maxlength="15" name="uf_ip_address" id="uf_ip_address" placeholder="varchar(15)">
+              </div>
+              <div class="form-group">
+                <label for="uf_username">*Username</label>
+                <input type="text" class="form-control" maxlength="50" name="uf_username" id="uf_username" placeholder="varchar(50)">
+              </div>
+              <div class="form-group">
+                <label for="uf_password">*Password</label>
+                <input type="password" class="form-control" maxlength="255" name="uf_password" id="uf_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+                <label for="uf_confirm_password">*Confirm Password</label>
+                <input type="password" class="form-control" maxlength="255" name="uf_confirm_password" id="uf_confirm_password" placeholder="varbinary(255)">
+              </div>
+              <div class="form-group">
+				<input type="hidden" name="uf_action" id="uf_action">
+                <input type="hidden" name="uf_key_server_name" id="uf_key_server_name">
+                <button type="button" class="btn btn-primary" onclick="submitVrrCredentials(this.form);">Submit</button>
+				<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+              </div>
+           </form>
+          </div>
+      </div>
+    </div>
+  </div>
diff --git a/sdnc-a1-controller/oam/admportal/views/resalloc/max_port_speed.ejs b/sdnc-a1-controller/oam/admportal/views/resalloc/max_port_speed.ejs
new file mode 100644
index 0000000..b46b14d
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/resalloc/max_port_speed.ejs
@@ -0,0 +1,205 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#max_port_speed').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Max Port Speed</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<% if (priv == 'A'){ %>
+		<div class="actions" style="padding:15px 0px;">
+    	<button class="btn btn-primary" data-toggle="modal" data-target="#add_max_port_speed">
+      	Add Max Port Speed
+    	</button>
+		</div>
+	<% } %>
+
+	<table id="max_port_speed" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*ID</th>
+          <th>*Image File Name</th>
+		  <th>*End Point Position</th>
+          <th>*Interface Name</th>
+          <th>*Max Speed</th>
+          <th>*Unit</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.max_port_speed_id %></td>
+            <td><%= row.image_file_name %></td>
+            <td><%= row.end_point_position %></td>
+            <td><%= row.interface_name %></td>
+            <td><%= row.max_speed %></td>
+            <td><%= row.unit %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                    onclick="updateMaxPortSpeed('<%=row.max_port_speed_id %>','<%= row.image_file_name %>','<%= row.end_point_position %>','<%= row.interface_name %>','<%= row.max_speed %>','<%= row.unit %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+                   onclick="deleteMaxPortSpeed('<%= row.max_port_speed_id %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/max_port_speed %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitMaxPortSpeed(form)
+{
+    var errorMsg='';
+	var image_file_name = '';
+	var end_point_position = '';
+	var interface_name = '';
+	var max_speed = '';
+	var unit = '';
+
+    if ( form.name == 'addForm' )
+    {
+		image_file_name = form.nf_image_file_name;
+		end_point_position = form.nf_end_point_position;
+		interface_name = form.nf_interface_name;
+		max_speed = form.nf_max_speed;
+		unit = form.nf_unit;
+    }
+    else
+    {
+		image_file_name = form.uf_image_file_name;
+		end_point_position = form.uf_end_point_position;
+		interface_name = form.uf_interface_name;
+		max_speed = form.uf_max_speed;
+		unit = form.uf_unit;
+    }
+
+
+    if ( (image_file_name.value == null) || (image_file_name.value == "") || isblank(image_file_name.value) )
+    {
+        errorMsg += 'Image File Name is required.<br>';
+    }
+    if ( (end_point_position.value == null) || (end_point_position.value == "") || isblank(end_point_position.value) )
+    {
+        errorMsg += 'End Point Position is required.<br>';
+    }
+    if ( (interface_name.value == null) || (interface_name.value == "") || isblank(interface_name.value) ){
+        errorMsg += 'Interface Name is required.<br>';
+    }
+    if ( (max_speed.value == null) || (max_speed.value == "") || isblank(max_speed.value) ){
+        errorMsg += 'Max Speed is required.<br>';
+    }
+    if ( (unit.value == null) || (unit.value == "") || isblank(unit.value) ){
+        errorMsg += 'Unit is required.<br>';
+    }
+    if( errorMsg.length > 0 ) {
+        bootbox.alert(errorMsg);
+        return;
+    }
+
+	if ( !isDigit(max_speed.value) )
+    {
+        bootbox.alert('Max Speed must be a number.');
+        return;
+    }
+
+    form.submit();
+}
+
+function updateMaxPortSpeed(max_port_speed_id,image_file_name,end_point_position,interface_name,max_speed,unit) {
+
+    document.getElementById('uf_max_port_speed_id').value=max_port_speed_id;
+    document.getElementById('uf_image_file_name').value=image_file_name;
+    document.getElementById('uf_end_point_position').value=end_point_position;
+    document.getElementById('uf_interface_name').value=interface_name;
+    document.getElementById('uf_max_speed').value=max_speed;
+    document.getElementById('uf_unit').value=unit;
+
+    document.getElementById('uf_key_max_port_speed_id').value=max_port_speed_id;
+
+    $('#update_max_port_speed').modal('show');
+}
+
+function deleteMaxPortSpeed(max_port_speed_id) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete MAX_PORT_SPEED [" + max_port_speed_id + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/resalloc/deleteMaxPortSpeed?max_port_speed_id=" + max_port_speed_id);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/resalloc/max_server_speed.ejs b/sdnc-a1-controller/oam/admportal/views/resalloc/max_server_speed.ejs
new file mode 100644
index 0000000..c0848df
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/resalloc/max_server_speed.ejs
@@ -0,0 +1,207 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#max_server_speed').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Max Server Speed</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<% if (priv == 'A'){ %>
+		<div class="actions" style="padding:15px 0px;">
+    	<button class="btn btn-primary" data-toggle="modal" data-target="#add_max_server_speed">
+      	Add Max Server Speed
+    	</button>
+		</div>
+	<% } %>
+
+	<table id="max_server_speed" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*ID</th>
+          <th>*Server Model</th>
+		  <th>*EVC Count</th>
+          <th>*Max Speed</th>
+          <th>*Unit</th>
+          <th>Description</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.max_server_speed_id %></td>
+            <td><%= row.server_model %></td>
+            <td><%= row.evc_count %></td>
+            <td><%= row.max_speed %></td>
+            <td><%= row.unit %></td>
+            <td><%= row.description %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                    onclick="updateMaxServerSpeed('<%=row.max_server_speed_id %>','<%= row.server_model %>','<%= row.evc_count %>','<%= row.max_speed %>','<%= row.unit %>', '<%= row.description %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+                   onclick="deleteMaxServerSpeed('<%= row.max_server_speed_id %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/max_server_speed %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitMaxServerSpeed(form)
+{
+    var errorMsg='';
+	var server_model = '';
+	var evc_count = '';
+	var max_speed = '';
+	var unit = '';
+	var description = '';
+
+    if ( form.name == 'addForm' )
+    {
+		server_model = form.nf_server_model;
+		evc_count = form.nf_evc_count;
+        max_speed = form.nf_max_speed;
+		unit = form.nf_unit;
+		description = form.nf_description;
+    }
+    else
+    {
+		server_model = form.uf_server_model;
+		evc_count = form.uf_evc_count;
+        max_speed = form.uf_max_speed;
+		unit = form.uf_unit;
+		description = form.uf_description;
+    }
+
+
+    if ( (server_model.value == null) || (server_model.value == "") || isblank(server_model.value) )
+    {
+        errorMsg += 'Server Model is required.<br>';
+    }
+    if ( (evc_count.value == null) || (evc_count.value == "") || isblank(evc_count.value) )
+    {
+        errorMsg += 'EVC Count is required.<br>';
+    }
+    if ( (max_speed.value == null) || (max_speed.value == "") || isblank(max_speed.value) ){
+        errorMsg += 'Max Speed is required.<br>';
+    }
+    if ( (unit.value == null) || (unit.value == "") || isblank(unit.value) ){
+        errorMsg += 'Unit is required.<br>';
+    }
+    if( errorMsg.length > 0 ) {
+        bootbox.alert(errorMsg);
+        return;
+    }
+
+    if ( !isDigit(evc_count.value) )
+    {
+        bootbox.alert('EVC Count must be a number.');
+        return;
+    }
+    if ( !isDigit(max_speed.value) )
+    {
+        bootbox.alert('Max Speed must be a number.');
+        return;
+    }
+
+    form.submit();
+}
+
+function updateMaxServerSpeed(max_server_speed_id,server_model,evc_count,max_speed,unit,description) {
+
+    document.getElementById('uf_max_server_speed_id').value=max_server_speed_id;
+    document.getElementById('uf_server_model').value=server_model;
+    document.getElementById('uf_evc_count').value=evc_count;
+    document.getElementById('uf_max_speed').value=max_speed;
+    document.getElementById('uf_unit').value=unit;
+    document.getElementById('uf_description').value=description;
+
+    document.getElementById('uf_key_max_server_speed_id').value=max_server_speed_id;
+
+    $('#update_max_server_speed').modal('show');
+}
+
+function deleteMaxServerSpeed(max_server_speed_id) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete MAX_SERVER_SPEED [" + max_server_speed_id + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/resalloc/deleteMaxServerSpeed?max_server_speed_id=" + max_server_speed_id);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/resalloc/resource_rule.ejs b/sdnc-a1-controller/oam/admportal/views/resalloc/resource_rule.ejs
new file mode 100644
index 0000000..4171fc6
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/resalloc/resource_rule.ejs
@@ -0,0 +1,228 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#resource_rule').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well wel-sm">
+<h3>Resource Rule</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary" data-toggle="modal" data-target="#add_resource_rule">
+            Add Resource Rule
+            </button>
+            </div>
+    <% } %>
+
+	<table id="resource_rule" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*ID</th>
+          <th>*Name</th>
+		  <th>*End Point Position</th>
+          <th>*Service Expression</th>
+          <th>*Equipment Level</th>
+          <th>*Equipment Expression</th>
+          <th>*Allocation Expression</th>
+          <th>*Soft Limit Expression</th>
+          <th>*Hard Limit Expression</th>
+          <th>*Service Model</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.resource_rule_id %></td>
+            <td><%= row.resource_name %></td>
+            <td><%= row.end_point_position %></td>
+            <td><%= row.service_expression %></td>
+            <td><%= row.equipment_level %></td>
+            <td><%= row.equipment_expression %></td>
+            <td><%= row.allocation_expression %></td>
+            <td><%= row.soft_limit_expression %></td>
+            <td><%= row.hard_limit_expression %></td>
+            <td><%= row.service_model %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                    onclick="updateResourceRule('<%=row.resource_rule_id %>','<%= row.resource_name %>','<%= row.end_point_position %>','<%= row.service_expression %>','<%= row.equipment_level %>','<%= row.equipment_expression %>','<%= row.allocation_expression %>','<%= row.soft_limit_expression %>', '<%= row.hard_limit_expression %>','<%= row.service_model %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+                   onclick="deleteResourceRule('<%= row.resource_rule_id %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/resource_rule %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitResourceRule(form)
+{
+    var errorMsg='';
+    var resource_name = '';
+	var end_point_position = '';
+	var service_expression = '';
+	var equipment_level = '';
+	var equipment_expression = '';
+	var allocation_expression = '';
+	var soft_limit_expression = '';
+	var hard_limit_expression = '';
+	var service_model = '';
+
+    if ( form.name == 'addForm' )
+    {
+		resource_name = form.nf_resource_name;
+		end_point_position = form.nf_end_point_position;
+		service_expression = form.nf_service_expression;
+		equipment_level = form.nf_equipment_level;
+		allocation_expression = form.nf_allocation_expression;
+		soft_limit_expression = form.nf_soft_limit_expression;
+		hard_limit_expression = form.nf_hard_limit_expression;
+		service_model = form.nf_service_model;
+    }
+    else
+    {
+		resource_name = form.uf_resource_name;
+		end_point_position = form.uf_end_point_position;
+		service_expression = form.uf_service_expression;
+		equipment_level = form.uf_equipment_level;
+		allocation_expression = form.uf_allocation_expression;
+		soft_limit_expression = form.uf_soft_limit_expression;
+		hard_limit_expression = form.uf_hard_limit_expression;
+		service_model = form.uf_service_model;
+    }
+
+
+    if ( (resource_name.value == null) || (resource_name.value == "") || isblank(resource_name.value) )
+    {
+        errorMsg += 'Resource Name is required.<br>';
+    }
+    if ( (end_point_position.value == null) || (end_point_position.value == "") || isblank(end_point_position.value) )
+    {
+        errorMsg += 'End Point Position is required.<br>';
+    }
+    if ( (service_expression.value == null) || (service_expression.value == "") || isblank(service_expression.value) ){
+        errorMsg += 'Service Expression is required.<br>';
+    }
+    if ( (equipment_level.value == null) || (equipment_level.value == "") || isblank(equipment_level.value) ){
+        errorMsg += 'Equipment Level is required.<br>';
+    }
+    if ( (allocation_expression.value == null) || (allocation_expression.value == "") || isblank(allocation_expression.value) ){
+        errorMsg += 'Allocation Expression is required.<br>';
+    }
+    if ( (soft_limit_expression.value == null) || (soft_limit_expression.value == "") || isblank(soft_limit_expression.value) ){
+        errorMsg += 'Soft Limit Expression is required.<br>';
+    }
+    if ( (hard_limit_expression.value == null) || (hard_limit_expression.value == "") || isblank(hard_limit_expression.value) ){
+        errorMsg += 'Hard Limit Expression is required.<br>';
+    }
+    if ( (service_model.value == null) || (service_model.value == "") || isblank(service_model.value) ){
+        errorMsg += 'Service Model is required.<br>';
+    }
+    if( errorMsg.length > 0 ) {
+        bootbox.alert(errorMsg);
+        return;
+    }
+    form.submit();
+}
+
+function updateResourceRule(resource_rule_id,resource_name,end_point_position,service_expression,equipment_level,equipment_expression,allocation_expression,soft_limit_expression,hard_limit_expression,service_model) {
+
+    document.getElementById('uf_resource_rule_id').value=resource_rule_id;
+    document.getElementById('uf_resource_name').value=resource_name;
+    document.getElementById('uf_end_point_position').value=end_point_position;
+    document.getElementById('uf_service_expression').value=service_expression;
+    document.getElementById('uf_equipment_level').value=equipment_level;
+    document.getElementById('uf_equipment_expression').value=equipment_expression;
+    document.getElementById('uf_allocation_expression').value=allocation_expression;
+    document.getElementById('uf_soft_limit_expression').value=soft_limit_expression;
+    document.getElementById('uf_hard_limit_expression').value=hard_limit_expression;
+    document.getElementById('uf_service_model').value=service_model;
+    document.getElementById('uf_key_resource_rule_id').value=resource_rule_id;
+
+    $('#update_resource_rule').modal('show');
+}
+
+function deleteResourceRule(resource_rule_id) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete RESOURCE_RULE [" + resource_rule_id + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/resalloc/deleteResourceRule?resource_rule_id=" + resource_rule_id);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/resalloc/threshold_alarms.ejs b/sdnc-a1-controller/oam/admportal/views/resalloc/threshold_alarms.ejs
new file mode 100644
index 0000000..f561bc4
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/resalloc/threshold_alarms.ejs
@@ -0,0 +1,186 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#threshold_alarms').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Threshold Alarms</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<% if (priv == 'A'){ %>
+		<div class="actions" style="padding:15px 0px;">
+    	<button class="btn btn-primary" data-toggle="modal" data-target="#add_threshold_alarm">
+      	Add Threshold Alarm
+    	</button>
+		</div>
+	<% } %>
+
+	<table id="threshold_alarms" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*Resource Threshold ID</th>
+		  <th>*Resource Rule ID</th>
+          <th>Threshold Expression</th>
+		  <th>Threshold Message</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.resource_threshold_id %></td>
+            <td><%= row.resource_rule_id %></td>
+            <td><%= row.threshold_expression %></td>
+            <td><%= row.threshold_message %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                    onclick="updateThresholdAlarm('<%= row.resource_threshold_id %>','<%=row.resource_rule_id %>','<%= row.threshold_expression %>','<%= row.threshold_message %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+                   onclick="deleteThresholdAlarm('<%= row.resource_threshold_id %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/threshold_alarm %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitThresholdAlarm(form)
+{
+    var resource_rule_id = '';
+	var threshold_expression = '';
+	var threshold_message = '';
+    var errorMsg = '';
+
+    if ( form.name == 'addForm' )
+    {
+		resource_rule_id = form.nf_resource_rule_id;
+		threshold_expression = form.nf_threshold_expression;
+		threshold_message = form.nf_threshold_message;
+    }
+    else
+    {
+		resource_rule_id = form.uf_resource_rule_id;
+		threshold_expression = form.uf_threshold_expression;
+		threshold_message = form.uf_threshold_message;
+    }
+    if ( (resource_rule_id.value == null) || (resource_rule_id.value == "") || isblank(resource_rule_id.value) )
+    {
+        errorMsg += 'Resource Rule ID is required.\n';
+    }
+    if ( (threshold_expression.value == null) || (threshold_expression.value == "") || isblank(threshold_expression.value) )
+    {
+        errorMsg += 'Threshold Expression is required.\n';
+    }
+    if ( (threshold_message.value == null) || (threshold_message.value == "") || isblank(threshold_message.value) )
+    {
+        errorMsg += 'Threshold Message is required.\n';
+    }
+    if( errorMsg.length > 0 ) {
+        alert(errorMsg);
+        return;
+    }
+
+    if ( !isDigit(resource_rule_id.value) )
+    {
+        alert('Resource Rule ID must be a number.');
+        return;
+    }
+
+    form.submit();
+}
+
+function updateThresholdAlarm(resource_threshold_id,resource_rule_id,threshold_expression,threshold_message) {
+
+    document.getElementById('uf_resource_threshold_id').value=resource_threshold_id;
+    document.getElementById('uf_resource_rule_id').value=resource_rule_id;
+    document.getElementById('uf_threshold_expression').value=threshold_expression;
+    document.getElementById('uf_threshold_message').value=threshold_message;
+
+    document.getElementById('uf_key_resource_threshold_id').value=resource_threshold_id;
+
+    $('#update_threshold_alarm').modal('show');
+}
+
+function deleteThresholdAlarm(resource_threshold_id) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete Threshold Alarm [" + resource_threshold_id + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/resalloc/deleteThresholdAlarm?resource_threshold_id=" + resource_threshold_id);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/sdnfc/viewTables.ejs b/sdnc-a1-controller/oam/admportal/views/sdnfc/viewTables.ejs
new file mode 100644
index 0000000..b950d8f
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/sdnfc/viewTables.ejs
@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+
+<meta charset="UTF-8" />
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<% include ../partials/head %>
+<% include ../partials/header %>
+<script type="text/javascript" src="/javascripts/admportal.js" async></script>
+<title>SDN-FC AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#viewTables').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+</head>
+
+<body>
+
+<div class="well well-sm">
+<h3>View Database Tables
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+<!-- Single button -->
+<nav class="navbar navbar-default">
+<div class="container-fluid">
+<div class="navbar-header">
+
+<div class="btn-group">
+  <button type="button" class="btn btn-primary dropdown-toggle navbar-btn" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+    Table <span class="caret"></span>
+  </button>
+    <ul class="dropdown-menu" role="menu">
+    <% for ( var i in vtables ){ %>
+		<li><a href="/sdnfc/getTables?tableName=<%= vtables[i] %>"><%= vtables[i] %></a></li>
+	<% } %>
+    </ul>
+</div>
+</div>
+</div>
+</nav>
+
+<% if (displayTable) { %>
+<div class="container-fluid">
+    <table id="viewTables" class="table table-hover table-condensed">
+    <caption class="text-primary"><%= fields[0].table %></caption>
+    <thead>
+    <tr>
+	<% fields.forEach( function(field) { %>
+        <th><%= field.name %></th>
+        <% }); %>
+    </tr>
+    </thead>
+
+	<tbody>
+    <% for ( var x in rows ){ %>
+    <tr>
+        <% for ( var j in rows[x] ){ %>
+        <td><%= rows[x][j] %></td>
+        <% } %>
+    </tr>
+    <% } %>
+    </tbody>
+    </table>
+</div>
+<% } %>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/sdnfc/vrrCredentials.ejs b/sdnc-a1-controller/oam/admportal/views/sdnfc/vrrCredentials.ejs
new file mode 100644
index 0000000..85c9e95
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/sdnfc/vrrCredentials.ejs
@@ -0,0 +1,223 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-FC AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vrr_credentials').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>VRR Credentials</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary" data-toggle="modal" data-target="#add_vrr_credentials">
+           Add VRR Credentials 
+            </button>
+            </div>
+    <% } %>
+
+	<table id="vrr_CREDENTIALS" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>*Server Name</th>
+          <th>*IP Address</th>
+          <th>*Username</th>
+          <th>*Password</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.server_name %></td>
+            <td><%= row.ip_address %></td>
+            <td><%= row.username %></td>
+            <td>*****</td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+						onclick="updateVrrCredentials('<%= row.server_name %>', '<%= row.ip_address %>', '<%= row.username %>','<%= row.password %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+				onclick="deleteVrrCredentials('<%= row.server_name %>');">Delete</button>
+            </td>
+            <% } %>
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/vrr_credentials %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitVrrCredentials(form)
+{
+    var errorMsg='';
+	var server_name = '';
+	var ip_address = '';
+	var username = '';
+	var password = '';
+	var confirm_password = '';
+
+    if ( form.name == 'addForm' )
+    {
+		server_name = form.nf_server_name;
+		ip_address = form.nf_ip_address;
+		username = form.nf_username;
+		password = form.nf_password;
+		confirm_password = form.nf_confirm_password;
+
+    	if ( (server_name.value == null) || (server_name.value == "") || isblank(server_name.value) )
+    	{
+        	errorMsg += 'Server Name is required.<br>';
+    	}
+    	if ( (ip_address.value == null) || (ip_address.value == "") || isblank(ip_address.value) )
+    	{
+        	errorMsg += 'IP Address is required.<br>';
+    	}
+    	if ( (password.value == null) || (password.value == "") || isblank(password.value) )
+    	{
+        	errorMsg += 'Password is required.<br>';
+    	}
+    	if ( (confirm_password.value == null) || (confirm_password.value == "") || isblank(confirm_password.value) )
+    	{
+        	errorMsg += 'Confirm Password is required.<br>';
+    	}
+    	if( errorMsg.length > 0 ) {
+        	bootbox.alert(errorMsg);
+        	return;
+    	}
+		if ( password.value != confirm_password.value )
+        {
+            bootbox.alert('Passwords do not match.');
+            return;
+        }
+    }
+    else
+    {
+		server_name = form.uf_server_name;
+		ip_address = form.uf_ip_address;
+		username = form.uf_username;
+		password = form.uf_password;
+		confirm_password = form.uf_confirm_password;
+
+		if ( (server_name.value == null) || (server_name.value == "") || isblank(server_name.value) )
+    	{
+        	errorMsg += 'Server Name is required.<br>';
+    	}
+    	if ( (ip_address.value == null) || (ip_address.value == "") || isblank(ip_address.value) )
+    	{
+        	errorMsg += 'IP Address is required.<br>';
+    	}
+    	if ( (password.value == null) || (password.value == "") || isblank(password.value) )
+    	{
+        	errorMsg += 'Password is required.<br>';
+    	}
+    	if ( (confirm_password.value == null) || (confirm_password.value == "") || isblank(confirm_password.value) )
+    	{
+        	errorMsg += 'Confirm Password is required.<br>';
+    	}
+    	if( errorMsg.length > 0 ) {
+        	bootbox.alert(errorMsg);
+        	return;
+    	}
+
+		if ( password.value != confirm_password.value )
+        {
+            bootbox.alert('Passwords do not match.');
+            return;
+        }
+    }
+    form.submit();
+}
+
+function updateVrrCredentials(server_name,ip_address,username,password) {
+
+    document.getElementById('uf_server_name').value=server_name;
+    document.getElementById('uf_key_server_name').value=server_name;
+    document.getElementById('uf_ip_address').value=ip_address;
+    document.getElementById('uf_username').value=username;
+    document.getElementById('uf_password').value=password;
+    document.getElementById('uf_confirm_password').value=password;
+
+    $('#update_vrr_credentials').modal('show');
+}
+
+function deleteVrrCredentials(server_name) {
+
+	var url_string = encodeURI("/sdnfc/deleteVrrCredentials?server_name=" + server_name); 
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete VRR Credential [ " + server_name + " ]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign(url_string);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/sla/list.ejs b/sdnc-a1-controller/oam/admportal/views/sla/list.ejs
new file mode 100644
index 0000000..575e206
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/sla/list.ejs
@@ -0,0 +1,183 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#sla').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Service Logic Administration</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'><%=result.msg %></div>
+			<% } else { %>
+				<div class='alert alert-danger' role='danger'><%=result.msg %></div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else { 
+    var priv = 'A';
+} %>
+
+<div class="container-fluid">
+	<table id="sla" class="table table-hover table-condensed">
+	<thead>
+	<tr>
+		<th>Module</th>
+		<th>RPC</th>
+		<th>Version</th>
+		<th>Mode</th>
+		<th>Active</th>
+		<% if(priv == 'A') { %>
+		<th>Activate/Deactive</th>
+		<% } %>
+		<th>XML code</th>
+		<% if(priv=='A') { %>
+		<th>Delete</th>
+		<% } %>
+	</tr>
+	</thead>
+	<tbody>
+	<% var i=0; rows.forEach( function(row) { %> 
+	<tr>
+		<td><%= row.module %></td>
+		<td><%= row.rpc %></td>
+		<td><%= row.version %></td>
+		<td><%= row.mode %></td>
+		<td><%= row.active %></td>
+		<% if ( priv == 'A' ) { 
+			if (row.active == "Y") { %>
+		<td><button type="button" class="btn btn-default btn-xs" onclick="toggleState('deactivate','<%= row.module %>','<%= row.rpc %>','<%= row.version %>','<%= row.mode %>');" >Deactivate</button> </td>
+		<% } else { %>
+		<td><button type="button" class="btn btn-default btn-xs" onclick="toggleState('activate','<%= row.module %>','<%= row.rpc %>','<%= row.version %>','<%= row.mode %>');" >Activate</button></td>
+		<% } %>
+		<% } %>
+		<td>
+			<button type="button" class="btn btn-default btn-xs"
+				onclick='location.assign("/sla/printAsXml?module=<%= row.module %>&rpc=<%= row.rpc %>&version=<%= row.version %>&mode=<%= row.mode %>");'>XML code</button>
+		</td>
+		<% if ( priv == 'A' ) { %>
+		<td>
+			<button type="button" class="btn btn-default btn-xs"
+				onclick="deleteGraph('<%=row.module %>',
+				'<%=row.rpc %>', '<%=row.version %>','<%=row.mode %>');">Delete</button>
+		</td>
+		<% } %>
+	</tr>
+	<% i++; }); %>
+	</tbody>
+	</table>
+
+	<% if(priv == 'A') { %>
+	<div class="actions" style="padding:0px 25px;">
+	<form method="POST" action="/sla/upload" enctype="multipart/form-data">
+		<div class="form-group">
+			<label for="dest">File input</label>
+			<input name="filename" type="file" id="dest" />
+			<input type="hidden" name="_csrf" value="<%= privilege.csrfToken %>" />
+			<p class="help-block">Choose a file to upload.</p>
+		</div>
+		<% if ( priv == 'A' ) { %>
+		<button type="button" class="btn btn-default"
+			onclick="uploadFile(this.form);">Upload File</button>
+		<% } else { %>
+		<button type="button" class="btn btn-default disabled"
+			onclick="uploadFile(this.form);">Upload File</button>
+		<% } %>
+	</form>
+	</div>
+	<% } %>
+
+</div>
+
+
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function deleteGraph(_module,rpc,version,mode) {
+
+	bootbox.confirm({
+        message: "Are you sure you want to delete Directed Graph [" + _module + "][" + rpc + "][" + version + "] ?",
+        callback: function(result) {
+            if ( result )
+            {
+        		location.assign("/sla/deleteDG?module=" + _module 
+					+ "&rpc=" + rpc + "&version=" + version + "&mode=" + mode );
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+function toggleState(laction,_module,rpc,version,mode)
+{
+	var myprompt = '';
+	var myaction = '';
+	if(laction == 'activate'){
+		myprompt = "Are you sure you want to Activate Directed Graph [" + _module + "] ?";
+        myaction = "/sla/activate"
+			+ "?module=" + _module
+			+ "&rpc=" + rpc 
+			+ "&version=" + version
+			+ "&mode=" + mode;
+	} else {
+		myprompt = "Are you sure you want to Deactivate Directed Graph [" + _module + "] ?";
+		myaction = "/sla/deactivate"
+			+ "?module=" + _module
+			+ "&rpc=" + rpc 
+			+ "&version=" + version
+			+ "&mode=" + mode;
+	}
+		
+	bootbox.confirm({
+        message: myprompt,
+        callback: function(result) {
+            if ( result )
+            {
+                location.assign(myaction);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+</script>
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/sla/printasgv.ejs b/sdnc-a1-controller/oam/admportal/views/sla/printasgv.ejs
new file mode 100644
index 0000000..66dca13
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/sla/printasgv.ejs
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <title>SDN-C AdminPortal</title>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+</head>
+<body>
+
+
+
+<div class="well well-sm">
+<h3>Service Logic Graph</h3>
+</div>
+
+<div class="container-fluid">
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+<pre>
+Module  : <%= result.module %>
+RPC     : <%= result.rpc %>
+Mode    : <%= result.mode %>
+Version : <%= result.version %>
+<br>
+<img src='data:image/png;base64,<%= result.msg %>' >
+</pre>
+            <% } else { %>
+                <pre class='alert alert-danger' role='danger'><%=result.msg %></pre>
+            <% } %>
+        <% } %>
+<% } %>
+
+
+<footer>
+	 <% include ../partials/footer %>
+</footer>
+    
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/sla/printasxml.ejs b/sdnc-a1-controller/oam/admportal/views/sla/printasxml.ejs
new file mode 100644
index 0000000..48b5504
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/sla/printasxml.ejs
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <title>SDN-C AdminPortal</title>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Service Logic Code</h3>
+</div>
+
+<div class="container-fluid">
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <pre class='alert alert-success' role='alert'><%=result.msg %></pre>
+            <% } else { %>
+                <pre class='alert alert-danger' role='danger'><%=result.msg %></pre>
+            <% } %>
+        <% } %>
+<% } %>
+</div>
+
+
+<footer>
+	 <% include ../partials/footer %>
+</footer>
+    
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/tunnel/linkLatencyMaster.ejs b/sdnc-a1-controller/oam/admportal/views/tunnel/linkLatencyMaster.ejs
new file mode 100644
index 0000000..c09adc4
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/tunnel/linkLatencyMaster.ejs
@@ -0,0 +1,240 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+
+<meta charset="UTF-8" />
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<% include ../partials/head %>
+<% include ../partials/header %>
+<script type="text/javascript" src="/javascripts/admportal.js" async></script>
+<title>SDNC-MLC AdminPortal</title>
+
+
+<script class="init"> 
+	$(document).ready(function() {
+    $('#linkLatencyMaster').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+</head>
+
+<body>
+
+<div class="well well-sm">
+<h3>Link Latency Master</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary btn-md" data-toggle="modal" data-target="#add_link_latency_master">Add Link Latency</button>
+        </div>
+    <% } %>
+
+	<table id="linkLatencyMaster" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*Src CRS Name</th>
+		  <th>*Dest CRS Name</th>
+          <th>*Bundle Name</th>
+		  <th>*Latency</th>
+		  <th>*Intra Inter SNRC</th>
+          <th>*Final Latency</th>
+          <th>*Augmentable</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.source_crs_name %></td>
+            <td><%= row.destination_crs_name %></td>
+            <td><%= row.bundle_name %></td>
+            <td><%= row.latency %></td>
+            <td><%= row.intra_inter_snrc %></td>
+            <td><%= row.final_latency %></td>
+            <td><%= row.augmentable %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs" onclick="updateLinkLatencyMaster('<%= row.source_crs_name %>', '<%= row.destination_crs_name %>', '<%= row.bundle_name %>', '<%= row.latency %>', '<%= row.intra_inter_snrc %>', '<%= row.final_latency %>', '<%= row.augmentable %>');">Update</button>
+                <button type="button" class="btn btn-default btn-xs" onclick="deleteLinkLatencyMaster('<%= row.source_crs_name %>','<%= row.destination_crs_name %>','<%= row.bundle_name %>');">Delete</button>
+            </td>
+            <% } %>
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+    <% if(priv == 'A'){ %>
+    <div class="actions" style="padding:0px 25px;">
+        <form method="POST" action="/tunnel/uploadLinkLatencyMaster" enctype="multipart/form-data">
+        <div class="form-group">
+            <label for="dest">File input</label>
+            <input name="filename" type="file" id="dest">
+            <p class="help-block">Choose a file to upload.</p>
+        </div>
+        <button type="button" class="btn btn-default" onclick="uploadFile(this.form);">Upload File</button>
+        </form>
+    </div>
+    <% } %>
+
+</div>
+
+<% include ../partials/link_latency_master %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitLinkLatencyMaster(form)
+{
+    var errorMsg='';
+    var source_crs_name = '';
+    var destination_crs_name = '';
+	var bundle_name = '';
+	var latency = '';
+	var intra_inter_snrc = '';
+    var final_latency = '';
+    var augmentable = '';
+
+    if ( form.name == 'addForm' )
+    {
+		source_crs_name = form.nf_source_crs_name;
+		destination_crs_name = form.nf_destination_crs_name;
+		bundle_name = form.nf_bundle_name;
+		latency = form.nf_latency;
+		intra_inter_snrc = form.nf_intra_inter_snrc;
+        final_latency = form.nf_final_latency;
+        augmentable = form.nf_augmentable;
+    }
+    else
+    {
+		source_crs_name = form.uf_source_crs_name;
+		destination_crs_name = form.uf_destination_crs_name;
+		bundle_name = form.uf_bundle_name;
+		latency = form.uf_latency;
+		intra_inter_snrc = form.uf_intra_inter_snrc;
+        final_latency = form.uf_final_latency;
+        augmentable = form.uf_augmentable;
+    }
+
+    if ( (source_crs_name.value == null) || (source_crs_name.value == "") || isblank(source_crs_name.value) )
+    {
+        errorMsg += 'Source CRS Name is required.<br>';
+    }
+    if ( (destination_crs_name.value == null) || (destination_crs_name.value == "") || isblank(destination_crs_name.value) )
+    {
+        errorMsg += 'Destination CRS Name is required.<br>';
+    }
+    if ( (bundle_name.value == null) || (bundle_name.value == "") || isblank(bundle_name.value) )
+    {
+        errorMsg += 'Bundle Name is required.<br>';
+    }
+    if ( (latency.value == null) || (latency.value == "") || isblank(latency.value) )
+    {
+        errorMsg += 'Latency is required.<br>';
+    }
+    if ( (intra_inter_snrc.value == null) || (intra_inter_snrc.value == "") || isblank(intra_inter_snrc.value) )
+    {
+        errorMsg += 'Intra Inter SNRC is required.<br>';
+    }
+    if ( (final_latency.value == null) || (final_latency.value == "") || isblank(final_latency.value) )
+    {
+        errorMsg += 'Final Latency is required.<br>';
+    }
+    if ( (augmentable.value == null) || (augmentable.value == "") || isblank(augmentable.value) )
+    {
+        errorMsg += 'Augmentable is required.<br>';
+    }
+    if( errorMsg.length > 0 ) {
+        bootbox.alert(errorMsg);
+        return;
+    }
+
+    if (augmentable.value != 'Y' && augmentable.value != 'N'){
+        bootbox.alert('Augmentable must be Y or N');
+        return;
+    }
+
+    form.submit();
+}
+
+function updateLinkLatencyMaster(source_crs_name,destination_crs_name,bundle_name,latency,intra_inter_snrc,final_latency,augmentable) {
+
+    document.getElementById('uf_source_crs_name').value=source_crs_name;
+    document.getElementById('uf_destination_crs_name').value=destination_crs_name;
+    document.getElementById('uf_bundle_name').value=bundle_name;
+    document.getElementById('uf_latency').value=latency;
+    document.getElementById('uf_intra_inter_snrc').value=intra_inter_snrc;
+    document.getElementById('uf_final_latency').value=final_latency;
+    document.getElementById('uf_augmentable').value=augmentable;
+
+    document.getElementById('uf_key_source_crs_name').value=source_crs_name;
+    document.getElementById('uf_key_destination_crs_name').value=destination_crs_name;
+    document.getElementById('uf_key_bundle_name').value=bundle_name;
+
+    $('#update_link_latency_master').modal('show');
+}
+
+function deleteLinkLatencyMaster(source_crs_name,destination_crs_name,bundle_name) {
+
+	var url_string = encodeURI("/tunnel/deleteLinkLatencyMaster?source_crs_name=" + source_crs_name
+            + "&destination_crs_name=" + destination_crs_name
+            + "&bundle_name=" + bundle_name);
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete this Link Latency entry? [" + source_crs_name + ":" + destination_crs_name + ":" + bundle_name + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign(url_string);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/tunnel/linkMaster.ejs b/sdnc-a1-controller/oam/admportal/views/tunnel/linkMaster.ejs
new file mode 100644
index 0000000..160bb7e
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/tunnel/linkMaster.ejs
@@ -0,0 +1,213 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+
+<meta charset="UTF-8" />
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<% include ../partials/head %>
+<% include ../partials/header %>
+<script type="text/javascript" src="/javascripts/admportal.js" async></script>
+<title>SDNC-MLC AdminPortal</title>
+
+
+<script class="init"> 
+	$(document).ready(function() {
+    $('#linkMaster').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+</head>
+
+<body>
+
+<div class="well well-sm">
+<h3>Link Master</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary btn-md" data-toggle="modal" data-target="#add_link_master">Add Link</button>
+        </div>
+    <% } %>
+
+	<table id="linkMaster" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*Link Interface IP</th>
+          <th>Source CRS Name</th>
+		  <th>Destination CRS Name</th>
+		  <th>Max Reserved BW</th>
+		  <th>Default Cost</th>
+		  <th>Bundle Name</th>
+		  <th>Shutdown</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.link_interface_ip %></td>
+            <td><%= row.source_crs_name %></td>
+            <td><%= row.destination_crs_name %></td>
+            <td><%= row.link_speed %></td>
+            <td><%= row.default_cost %></td>
+            <td><%= row.bundle_name %></td>
+			<td><%= row.shutdown %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs" onclick="updateLinkMaster('<%= row.link_interface_ip %>', 
+					'<%= row.source_crs_name %>', '<%= row.destination_crs_name %>', '<%= row.link_speed %>', '<%= row.default_cost %>',
+					'<%= row.bundle_name %>', '<%= row.shutdown %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs" onclick="deleteLinkMaster('<%= row.link_interface_ip %>');">Delete</button>
+            </td>
+            <% } %>
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+</div>
+
+<% include ../partials/link_master %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function saveLinkMaster(form)
+{
+    var errorMsg='';
+    var link_interface_ip = '';
+	var source_crs_name = '';
+	var destination_crs_name = '';
+	var link_speed = '';
+	var default_cost = '';
+	var bundle_name = '';
+	var shutdown = '';
+
+    if ( form.name == 'addForm' )
+    {
+		link_interface_ip = form.nf_link_interface_ip;
+		source_crs_name = form.nf_source_crs_name;
+		destination_crs_name = form.nf_destination_crs_name;
+		link_speed = form.nf_link_speed;
+		default_cost = form.nf_default_cost;
+		bundle_name = form.nf_bundle_name;
+		shutdown = form.nf_shutdown;
+    }
+    else
+    {
+		link_interface_ip = form.uf_link_interface_ip;
+		source_crs_name = form.uf_source_crs_name;
+		destination_crs_name = form.uf_destination_crs_name;
+		link_speed = form.uf_link_speed;
+		default_cost = form.uf_default_cost;
+		bundle_name = form.uf_bundle_name;
+		shutdown = form.uf_shutdown;
+    }
+
+
+    if ( (link_interface_ip.value == null) || (link_interface_ip.value == "") || isblank(link_interface_ip.value) )
+    {
+        errorMsg += 'Link Interface IP is required.<br>';
+    }
+    if ( (source_crs_name.value == null) || (source_crs_name.value == "") || isblank(source_crs_name.value) )
+    {
+        errorMsg += 'Source CRS Name is required.<br>';
+    }
+    if ( (destination_crs_name.value == null) || (destination_crs_name.value == "") || isblank(destination_crs_name.value) )
+    {
+        errorMsg += 'Destination CRS Name is required.<br>';
+    }
+    if( errorMsg.length > 0 ) {
+        bootbox.alert(errorMsg);
+        return;
+    }
+
+	if ( link_speed.value.length >0 && !isDigit(link_speed.value) )
+    {
+        bootbox.alert('Max Reserved BW must be a number.');
+        return;
+    }
+	if ( default_cost.value.length >0 && !isDigit(default_cost.value) )
+    {
+        bootbox.alert('Default Cost must be a number.');
+        return;
+    }
+    form.submit();
+}
+
+function updateLinkMaster(link_interface_ip,source_crs_name,destination_crs_name,link_speed,default_cost,bundle_name,shutdown) {
+
+    document.getElementById('uf_link_interface_ip').value=link_interface_ip;
+    document.getElementById('uf_source_crs_name').value=source_crs_name;
+    document.getElementById('uf_destination_crs_name').value=destination_crs_name;
+    document.getElementById('uf_link_speed').value=link_speed;
+    document.getElementById('uf_default_cost').value=default_cost;
+    document.getElementById('uf_bundle_name').value=bundle_name;
+    document.getElementById('uf_shutdown').value=shutdown;
+    document.getElementById('uf_key_link_interface_ip').value=link_interface_ip;
+
+    $('#update_link_master').modal('show');
+}
+
+function deleteLinkMaster(link_interface_ip) {
+
+	var url_string = encodeURI("/tunnel/deleteLinkMaster?link_interface_ip=" + link_interface_ip);
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete this Link [" + link_interface_ip + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign(url_string);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/tunnel/metroRoadmServiceRequest.ejs b/sdnc-a1-controller/oam/admportal/views/tunnel/metroRoadmServiceRequest.ejs
new file mode 100644
index 0000000..efc81af
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/tunnel/metroRoadmServiceRequest.ejs
@@ -0,0 +1,300 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#metroRoadmServiceRequest').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Metro ROADM Service Request</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+    <!--
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary" data-toggle="modal" data-target="#add_metroroadm_service_request">
+            Add Metro ROADM Serice Request
+            </button>
+            </div>
+    <% } %>
+    -->
+
+	<table id="metroRoadmServiceRequest" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		   <th>ReqId</th>
+		   <th>ReqSource</th>
+		   <th>NotificationURL</th>
+		   <th>Action</th>
+          <th>ReqTimestamp</th>
+          <th>UpdateTimestamp</th>
+          <th>ReqStatus</th>
+          <th>ProcStatus</th>
+          <th>ReasonCode</th>
+          <th>ReasonMsg</th>
+          <th>ServiceId</th>
+          <th>CommonId</th>
+          <th>Clli_A</th>
+          <th>Clli_Z</th>
+          <th>Customer</th>
+          <th>ControllerId</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.request_id %></td>
+            <td><%= row.request_source %></td>
+            <td><%= row.notification_url %></td>
+            <td><%= row.action %></td>
+            <td><%= row.request_timestamp %></td>
+            <td><%= row.update_timestamp %></td>
+            <td><%= row.request_status %></td>
+            <td><%= row.processing_status %></td>
+            <td><%= row.reason_code %></td>
+            <td><%= row.reason_message %></td>
+            <td><%= row.service_id %></td>
+            <td><%= row.common_id %></td>
+            <td><%= row.clli_a %></td>
+            <td><%= row.clli_z %></td>
+            <td><%= row.customer %></td>
+            <td><%= row.controller_id %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="updateMetroRoadmServiceRequest('<%=row.request_id %>','<%= row.request_source %>',
+                    '<%=row.notification_url %>','<%= row.action %>','<%= row.request_timestamp %>',
+                    '<%= row.update_timestamp %>','<%= row.request_status %>', '<%= row.processing_status %>',
+                    '<%= row.reason_code %>', '<%= row.reason_message %>','<%= row.service_id %>',
+                    '<%= row.common_id %>','<%= row.clli_a %>', '<%= row.clli_z %>','<%= row.customer %>',
+                    '<%= row.controller_id %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+				onclick="deleteMetroRoadmServiceRequest('<%= row.request_id %>');">Delete</button>
+            </td>
+            <% } %>
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+</div>
+
+<% include ../partials/metroroadm_service_request %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitMetroRoadmServiceRequest(form)
+{
+    var errorMsg='';
+    var request_id='';
+	var request_source = '';
+	var notification_url = '';
+	var action = '';
+	var request_timestamp = '';
+	var update_timestamp = '';
+	var request_status = '';
+	var processing_status = '';
+	var reason_code = '';
+	var reason_message = '';
+	var service_id = '';
+	var common_id = '';
+	var clli_a = '';
+	var clli_z = '';
+	var customer = '';
+	var controller_id = '';
+
+    if ( form.name == 'addForm' )
+    {
+		request_id = form.nf_request_id;
+		request_source = form.nf_request_source;
+		notification_url = form.nf_notification_url;
+		action = form.nf_l_action;
+		request_timestamp = form.nf_request_timestamp;
+		update_timestamp = form.nf_update_timestamp;
+		request_status = form.nf_request_status;
+		processing_status = form.nf_processing_status;
+		reason_code = form.nf_reason_code;
+		reason_message = form.nf_reason_message;
+		service_id = form.nf_service_id;
+		common_id = form.nf_common_id;
+		clli_a = form.nf_clli_a;
+		clli_z = form.nf_clli_z;
+		customer = form.nf_customer;
+		controller_id = form.nf_controller_id;
+    }
+    else
+    {
+		request_id = form.uf_request_id;
+		request_source = form.uf_request_source;
+		notification_url = form.uf_notification_url;
+		action = form.uf_l_action;
+		request_timestamp = form.uf_request_timestamp;
+		update_timestamp = form.uf_update_timestamp;
+		request_status = form.uf_request_status;
+		processing_status = form.uf_processing_status;
+		reason_code = form.uf_reason_code;
+		reason_message = form.uf_reason_message;
+		service_id = form.uf_service_id;
+		common_id = form.uf_common_id;
+		clli_a = form.uf_clli_a;
+		clli_z = form.uf_clli_z;
+		customer = form.uf_customer;
+		controller_id = form.uf_controller_id;
+    }
+    if ( (request_id.value == null) || (request_id.value == "") || isblank(request_id.value) )
+    {
+        errorMsg += 'Request Id is required.\n';
+    }
+    if ( (action.value == null) || (action.value == "") || isblank(action.value) )
+    {
+        errorMsg += 'Action is required.\n';
+    }
+    if ( (request_timestamp.value == null) || (request_timestamp.value == "") || isblank(request_timestamp.value) )
+    {
+        errorMsg += 'Request Timestamp is required.\n';
+    }
+    if ( (request_status.value == null) || (request_status.value == "") || isblank(request_status.value) )
+    {
+        errorMsg += 'Request Status is required.\n';
+    }
+    if ( (processing_status.value == null) || (processing_status.value == "") || isblank(processing_status.value) )
+    {
+        errorMsg += 'Processing Status is required.\n';
+    }
+    if ( (service_id.value == null) || (service_id.value == "") || isblank(service_id.value) )
+    {
+        errorMsg += 'Service Id is required.\n';
+    }
+    if ( (controller_id.value == null) || (controller_id.value == "") || isblank(controller_id.value) )
+    {
+        errorMsg += 'Controller Id is required.\n';
+    }
+    if( errorMsg.length > 0 ) {
+        alert(errorMsg);
+        return;
+    }
+
+    // edit request_timestamp, update_timestamp
+    if (!isValid(request_timestamp.value)){ 
+        alert('Request Timestamp must be in format YYYY-MM-DD HH:MM:SS');
+        return;
+    }
+    if ( update_timestamp.length > 0 )
+    {
+        if (!isValid(update_timestamp.value)){ 
+            alert('Update Timestamp must be in format YYYY-MM-DD HH:MM:SS');
+            return;
+        }
+    }
+    form.submit();
+}
+
+function isValid(dateString) {
+    if (dateString == '0000-00-00 00:00:00'){
+        return(true);
+    }
+    var minDate = new Date('1970-01-01 00:00:01');
+    var maxDate = new Date('2038-01-19 03:14:07');
+    var date = new Date(dateString);
+    return date > minDate && date < maxDate;
+}
+
+function updateMetroRoadmServiceRequest(request_id,request_source,notification_url,action,request_timestamp,update_timestamp,
+        request_status,processing_status,reason_code,reason_message,service_id,common_id,clli_a,clli_z,customer,controller_id) {
+
+    document.getElementById('uf_request_id').value=request_id;
+    document.getElementById('uf_key_request_id').value=request_id;
+    document.getElementById('uf_request_source').value=request_source;
+    document.getElementById('uf_notification_url').value=notification_url;
+    document.getElementById('uf_l_action').value=action;
+    document.getElementById('uf_request_timestamp').value=request_timestamp;
+    document.getElementById('uf_update_timestamp').value=update_timestamp;
+    document.getElementById('uf_request_status').value=request_status;
+    document.getElementById('uf_processing_status').value=processing_status;
+    document.getElementById('uf_reason_code').value=reason_code;
+    document.getElementById('uf_reason_message').value=reason_message;
+    document.getElementById('uf_service_id').value=service_id;
+    document.getElementById('uf_common_id').value=common_id;
+    document.getElementById('uf_clli_a').value=clli_a;
+    document.getElementById('uf_clli_z').value=clli_z;
+    document.getElementById('uf_customer').value=customer;
+    document.getElementById('uf_controller_id').value=controller_id;
+
+    $('#update_metroroadm_service_request').modal('show');
+}
+
+function deleteMetroRoadmServiceRequest(request_id) {
+
+	var url_string = encodeURI("/tunnel/deleteMetroRoadmServiceRequest?request_id=" + request_id );
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete Metro ROADM Service Request? " + request_id,
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign(url_string);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/tunnel/owbcProperties.ejs b/sdnc-a1-controller/oam/admportal/views/tunnel/owbcProperties.ejs
new file mode 100644
index 0000000..37b02fe
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/tunnel/owbcProperties.ejs
@@ -0,0 +1,223 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#owbc_properties').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>OWBC Properties</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary" data-toggle="modal" data-target="#add_owbc_properties">
+            Add OWBC Properties
+            </button>
+            </div>
+    <% } %>
+
+	<table id="owbc_properties" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		   <th>Controller ID</th>
+		   <th>Base URL</th>
+		   <th>Service Create Extension</th>
+		   <th>Service Delete Extension</th>
+          <th>Auth Username</th>
+          <th>Auth Password</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.controller_id %></td>
+            <td><%= row.base_uri %></td>
+            <td><%= row.service_create_extension %></td>
+            <td><%= row.service_delete_extension %></td>
+            <td><%= row.auth_username %></td>
+            <td>*****</td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="updateOwbcProperties('<%=row.controller_id %>','<%= row.base_uri %>','<%= row.service_create_extension %>','<%= row.service_delete_extension %>','<%= row.auth_username %>','<%= row.auth_password %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+				onclick="deleteOwbcProperties('<%= row.controller_id %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/owbc_properties %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitOwbcProperties(form)
+{
+    var errorMsg='';
+	var controller_id = '';
+	var base_uri = '';
+	var service_create_extension = '';
+	var service_delete_extension = '';
+	var auth_username = '';
+	var auth_password = '';
+	var confirm_auth_password = '';
+
+    if ( form.name == 'addForm' )
+    {
+		controller_id = form.nf_controller_id;
+		base_uri = form.nf_base_uri;
+		service_create_extension = form.nf_service_create_extension;
+		service_delete_extension = form.nf_service_delete_extension;
+		auth_username = form.nf_auth_username;
+		auth_password = form.nf_auth_password;
+		confirm_auth_password = form.nf_confirm_auth_password;
+
+		if ( auth_password.value != confirm_auth_password.value )
+		{
+			bootbox.alert('Passwords do not match.');
+			return;
+		}
+    }
+    else
+    {
+		controller_id = form.uf_controller_id;
+		base_uri = form.uf_base_uri;
+		service_create_extension = form.uf_service_create_extension;
+		service_delete_extension = form.uf_service_delete_extension;
+		auth_username = form.uf_auth_username;
+		auth_password = form.uf_auth_password;
+		confirm_auth_password = form.uf_confirm_auth_password;
+
+		if ( auth_password.value != confirm_auth_password.value )
+		{
+			bootbox.alert('Passwords do not match.');
+			return;
+		}
+    }
+    if ( (controller_id.value == null) || (controller_id.value == "") || isblank(controller_id.value) )
+    {
+        errorMsg += 'Controller Id is required.<br>';
+    }
+    if ( (base_uri.value == null) || (base_uri.value == "") || isblank(base_uri.value) )
+    {
+        errorMsg += 'Base URL is required.<br>';
+    }
+    if ( (service_create_extension.value == null) || (service_create_extension.value == "") || isblank(service_create_extension.value) )
+    {
+        errorMsg += 'Service Create Extension is required.<br>';
+    }
+    if ( (service_delete_extension.value == null) || (service_delete_extension.value == "") || isblank(service_delete_extension.value) )
+    {
+        errorMsg += 'Service Delete Extension is required.<br>';
+    }
+    if ( (auth_username.value == null) || (auth_username.value == "") || isblank(auth_username.value) )
+    {
+        errorMsg += 'Auth Username is required.<br>';
+    }
+    if ( (auth_password.value == null) || (auth_password.value == "") || isblank(auth_password.value) )
+    {
+        errorMsg += 'Auth Password is required.<br>';
+    }
+    if( errorMsg.length > 0 ) {
+        bootbox.alert(errorMsg);
+        return;
+    }
+    form.submit();
+}
+
+function updateOwbcProperties(controller_id,base_uri,service_create_extension,service_delete_extension,auth_username,auth_password) {
+
+    document.getElementById('uf_controller_id').value=controller_id;
+    document.getElementById('uf_key_controller_id').value=controller_id;
+    document.getElementById('uf_base_uri').value=base_uri;
+    document.getElementById('uf_service_create_extension').value=service_create_extension;
+    document.getElementById('uf_service_delete_extension').value=service_delete_extension;
+    document.getElementById('uf_auth_username').value=auth_username;
+    document.getElementById('uf_auth_password').value=auth_password;
+    document.getElementById('uf_confirm_auth_password').value=auth_password;
+
+    $('#update_owbc_properties').modal('show');
+}
+
+function deleteOwbcProperties(controller_id) {
+
+	var url_string = encodeURI("/tunnel/deleteOwbcProperties?controller_id=" + controller_id );
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete OWBC Properties? " + controller_id,
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign(url_string);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/tunnel/partnerProperties.ejs b/sdnc-a1-controller/oam/admportal/views/tunnel/partnerProperties.ejs
new file mode 100644
index 0000000..af51c86
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/tunnel/partnerProperties.ejs
@@ -0,0 +1,184 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDNC-MLC AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#partner_properties').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Partner Properties</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary" data-toggle="modal" data-target="#add_partner_properties">
+           Add Partner Properties 
+            </button>
+            </div>
+    <% } %>
+
+	<table id="partner_properties" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>*Partner</th>
+          <th>*Username</th>
+          <th>*Password</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.partner %></td>
+            <td><%= row.auth_username %></td>
+            <td>*****</td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="updatePartnerProperties('<%= row.partner %>','<%= row.auth_username %>','<%= row.auth_password %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+				onclick="deletePartnerProperties('<%= row.partner %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/partner_properties %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitPartnerProperties(form)
+{
+    var errorMsg='';
+	var partner = '';
+	var auth_username = '';
+	var auth_password = '';
+	var confirm_auth_password = '';
+
+    if ( form.name == 'addForm' )
+    {
+		partner = form.nf_partner;
+		auth_username = form.nf_auth_username;
+		auth_password = form.nf_auth_password;
+		confirm_auth_password = form.nf_confirm_auth_password;
+
+    	if ( (partner.value == null) || (partner.value == "") || isblank(partner.value) )
+    	{
+        	errorMsg += 'Partner is required.<br>';
+    	}
+    	if( errorMsg.length > 0 ) {
+        	bootbox.alert(errorMsg);
+        	return;
+    	}
+		if ( auth_password.value != confirm_auth_password.value )
+        {
+            bootbox.alert('Passwords do not match.');
+            return;
+        }
+    }
+    else
+    {
+		partner = form.uf_partner;
+		auth_username = form.uf_auth_username;
+		auth_password = form.uf_auth_password;
+		confirm_auth_password = form.uf_confirm_auth_password;
+		if ( auth_password.value != confirm_auth_password.value )
+        {
+            bootbox.alert('Passwords do not match.');
+            return;
+        }
+    }
+    form.submit();
+}
+
+function updatePartnerProperties(partner,auth_username,auth_password) {
+
+    document.getElementById('uf_partner').value=partner;
+    document.getElementById('uf_key_partner').value=partner;
+    document.getElementById('uf_auth_username').value=auth_username;
+    document.getElementById('uf_auth_password').value=auth_password;
+    document.getElementById('uf_confirm_auth_password').value=auth_password;
+
+    $('#update_partner_properties').modal('show');
+}
+
+function deletePartnerProperties(partner) {
+
+	var url_string = encodeURI("/tunnel/deletePartnerProperties?partner=" + partner); 
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete Partner Property [ " + partner + " ]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign(url_string);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/tunnel/roadmMapping.ejs b/sdnc-a1-controller/oam/admportal/views/tunnel/roadmMapping.ejs
new file mode 100644
index 0000000..347cf03
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/tunnel/roadmMapping.ejs
@@ -0,0 +1,230 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+
+<meta charset="UTF-8" />
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<% include ../partials/head %>
+<% include ../partials/header %>
+<script type="text/javascript" src="/javascripts/admportal.js" async></script>
+<title>SDNC-MLC AdminPortal</title>
+
+
+<script class="init"> 
+	$(document).ready(function() {
+    $('#roadmMapping').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+</head>
+
+<body>
+
+<div class="well well-sm">
+<h3>ROADM Mapping</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary btn-md" data-toggle="modal" data-target="#add_roadm_mapping">Add Mapping</button>
+        </div>
+    <% } %>
+
+	<table id="roadmMapping" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*Router Name</th>
+          <th>*ROADM Name</th>
+          <th>*CLLI</th>
+          <th>*City Name</th>
+		  <th>*LAT</th>
+		  <th>*LON</th>
+		  <th>*SNRC</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.router_name %></td>
+            <td><%= row.roadm_name %></td>
+            <td><%= row.clli %></td>
+            <td><%= row.city_name %></td>
+            <td><%= row.lat %></td>
+            <td><%= row.lon %></td>
+            <td><%= row.snrc %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs" onclick="updateRoadmMapping('<%= row.router_name %>', 
+                    '<%= row.roadm_name %>', '<%= row.clli %>', '<%= row.city_name %>', '<%= row.lat %>', '<%= row.lon %>', '<%= row.snrc %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs" onclick="deleteRoadmMapping('<%= row.router_name %>');">Delete</button>
+            </td>
+            <% } %>
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+    <% if(priv == 'A'){ %>
+    <div class="actions" style="padding:0px 25px;">
+        <form method="POST" action="/tunnel/uploadRoadmMapping" enctype="multipart/form-data">
+        <div class="form-group">
+            <label for="dest">File input</label>
+            <input name="filename" type="file" id="dest">
+            <p class="help-block">Choose a file to upload.</p>
+        </div>
+        <button type="button" class="btn btn-default" onclick="uploadFile(this.form);">Upload File</button>
+        </form>
+    </div>
+    <% } %>
+
+</div>
+
+<% include ../partials/roadm_mapping %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function saveRoadmMapping(form)
+{
+    var errorMsg='';
+    var router_name = '';
+	var roadm_name = '';
+	var clli = '';
+	var city_name = '';
+	var lat = '';
+	var lon = '';
+	var snrc = '';
+
+    if ( form.name == 'addForm' )
+    {
+		router_name = form.nf_router_name;
+		roadm_name = form.nf_roadm_name;
+		clli = form.nf_clli;
+		city_name = form.nf_city_name;
+		lat = form.nf_lat;
+		lon = form.nf_lon;
+		snrc = form.nf_snrc;
+    }
+    else
+    {
+		router_name = form.uf_router_name;
+		roadm_name = form.uf_roadm_name;
+		clli = form.uf_clli;
+		city_name = form.uf_city_name;
+		lat = form.uf_lat;
+		lon = form.uf_lon;
+		snrc = form.uf_snrc;
+    }
+
+    if ( (router_name.value == null) || (router_name.value == "") || isblank(router_name.value) )
+    {
+        errorMsg += 'Router Name is required.<br>';
+    }
+    if ( (roadm_name.value == null) || (roadm_name.value == "") || isblank(roadm_name.value) )
+    {
+        errorMsg += 'ROADM Name is required.<br>';
+    }
+    if ( (clli.value == null) || (clli.value == "") || isblank(clli.value) )
+    {
+        errorMsg += 'CLLI is required.<br>';
+    }
+    if ( (city_name.value == null) || (city_name.value == "") || isblank(city_name.value) )
+    {
+        errorMsg += 'City Name is required.<br>';
+    }
+    if ( (lat.value == null) || (lat.value == "") || isblank(lat.value) )
+    {
+        errorMsg += 'LAT (latitude) is required.<br>';
+    }
+    if ( (lon.value == null) || (lon.value == "") || isblank(lon.value) )
+    {
+        errorMsg += 'LON (longitude) is required.<br>';
+    }
+    if ( (snrc.value == null) || (snrc.value == "") || isblank(snrc.value) )
+    {
+        errorMsg += 'SNRC is required.<br>';
+    }
+    if( errorMsg.length > 0 ) {
+        bootbox.alert(errorMsg);
+        return;
+    }
+    form.submit();
+}
+
+function updateRoadmMapping(router_name,roadm_name,clli,city_name,lat,lon,snrc) {
+
+    document.getElementById('uf_router_name').value=router_name;
+    document.getElementById('uf_roadm_name').value=roadm_name;
+    document.getElementById('uf_clli').value=clli;
+    document.getElementById('uf_city_name').value=city_name;
+    document.getElementById('uf_lat').value=lat;
+    document.getElementById('uf_lon').value=lon;
+    document.getElementById('uf_snrc').value=snrc;
+    document.getElementById('uf_key_router_name').value=router_name;
+
+    $('#update_roadm_mapping').modal('show');
+}
+
+function deleteRoadmMapping(router_name) {
+
+	var url_string = encodeURI("/tunnel/deleteRoadmMapping?router_name=" + router_name);
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete this mapping? [" + router_name + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign(url_string);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/tunnel/routerMaster.ejs b/sdnc-a1-controller/oam/admportal/views/tunnel/routerMaster.ejs
new file mode 100644
index 0000000..eada3f3
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/tunnel/routerMaster.ejs
@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+
+<meta charset="UTF-8" />
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<% include ../partials/head %>
+<% include ../partials/header %>
+<script type="text/javascript" src="/javascripts/admportal.js" async></script>
+<title>SDN-C AdminPortal</title>
+
+
+<script class="init"> 
+	$(document).ready(function() {
+    $('#routerMaster').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+</head>
+
+<body>
+
+<div class="well well-sm">
+<h3>Router Master</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary btn-md" data-toggle="modal" data-target="#add_router_master">Add Router</button>
+        </div>
+    <% } %>
+
+	<table id="routerMaster" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*CRS Name</th>
+          <th>Loopback IP</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.crs_name %></td>
+            <td><%= row.loopback_ip %></td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs" onclick="updateRouterMaster('<%= row.crs_name %>', 
+					'<%= row.loopback_ip %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs" onclick="deleteRouterMaster('<%= row.crs_name %>');">Delete</button>
+            </td>
+            <% } %>
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+</div>
+
+<% include ../partials/router_master %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function saveRouterMaster(form)
+{
+    var errorMsg='';
+    var crs_name = '';
+	var loopback_ip = '';
+
+    if ( form.name == 'addForm' )
+    {
+		crs_name = form.nf_crs_name;
+		loopback_ip = form.nf_loopback_ip;
+    }
+    else
+    {
+		crs_name = form.uf_crs_name;
+		loopback_ip = form.uf_loopback_ip;
+    }
+
+
+    if ( (crs_name.value == null) || (crs_name.value == "") || isblank(crs_name.value) )
+    {
+        errorMsg += 'CRS Name is required.<br>';
+    }
+    if ( (loopback_ip.value == null) || (loopback_ip.value == "") || isblank(loopback_ip.value) )
+    {
+        errorMsg += 'Loopback IP is required.<br>';
+    }
+    if( errorMsg.length > 0 ) {
+        bootbox.alert(errorMsg);
+        return;
+    }
+    form.submit();
+}
+
+function updateRouterMaster(crs_name,loopback_ip) {
+
+    document.getElementById('uf_crs_name').value=crs_name;
+    document.getElementById('uf_loopback_ip').value=loopback_ip;
+    document.getElementById('uf_key_crs_name').value=crs_name;
+
+    $('#update_router_master').modal('show');
+}
+
+function deleteRouterMaster(crs_name) {
+
+	var url_string = encodeURI("/tunnel/deleteRouterMaster?crs_name=" + crs_name);
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete this Router [" + crs_name + "]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign(url_string);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/altsCredentials.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/altsCredentials.ejs
new file mode 100644
index 0000000..54ca020
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/altsCredentials.ejs
@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#alts_credentials').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>ALTS Credentials</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary" data-toggle="modal" data-target="#add_alts_credentials">
+            Add ALTS Credentials
+            </button>
+            </div>
+    <% } %>
+
+	<table id="alts_credentials" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>ALTS Username</th>
+          <th>ALTS Password</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.alts_username %></td>
+            <td>*****</td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="updateAltsCredentials('<%=row.alts_username %>','<%= row.alts_password %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+				onclick="deleteAltsCredentials('<%= row.alts_username %>', '<%= row.alts_password %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/alts_credentials %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitAltsCredentials(form)
+{
+    var errorMsg='';
+	var alts_username = '';
+	var alts_password = '';
+	var confirm_alts_password = '';
+
+    if ( form.name == 'addForm' )
+    {
+		alts_username = form.nf_alts_username;
+		alts_password = form.nf_alts_password;
+		confirm_alts_password = form.nf_confirm_alts_password;
+
+		if ( alts_password.value != confirm_alts_password.value )
+		{
+			bootbox.alert('Passwords do not match.');
+			return;
+		}
+    }
+    else
+    {
+		alts_username = form.uf_alts_username;
+		alts_password = form.uf_alts_password;
+		confirm_alts_password = form.uf_confirm_alts_password;
+
+		if ( alts_password.value != confirm_alts_password.value )
+		{
+			bootbox.alert('Passwords do not match.');
+			return;
+		}
+    }
+    form.submit();
+}
+
+function updateAltsCredentials(alts_username,alts_password) {
+
+    document.getElementById('uf_alts_username').value=alts_username;
+    document.getElementById('uf_alts_password').value=alts_password;
+
+    $('#update_alts_credentials').modal('show');
+}
+
+function deleteAltsCredentials(alts_username, alts_password) {
+
+	var url_string = encodeURI("/ucpe/deleteAltsCredentials?alts_username=" + alts_username 
+					+ "&alts_password=" + alts_password);
+
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete ALTS Credentials? " + alts_username,
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign(url_string);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/apiLogins.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/apiLogins.ejs
new file mode 100644
index 0000000..ddb50c8
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/apiLogins.ejs
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#api_logins').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+
+<body>
+
+<div class="well well-sm">
+<h3>uCPE API Logins</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="api_logins" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*CUSTOMER_NAME</th>
+		  <th>PHS_NCS_USERNAME</th>
+		  <th>NCS_PUBLIC_SSH_KEY</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.customer_name %></td>
+            <td><%= row.phs_ncs_username %></td>
+            <td><%= row.ncs_public_ssh_key %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/chainingTopologies.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/chainingTopologies.ejs
new file mode 100644
index 0000000..2717062
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/chainingTopologies.ejs
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#chaining_topologies').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE Chaining Topologies</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="chaining_topologies" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*TOPOLOGY_NAME</th>
+		  <th>*START_VNF_TYPE</th>
+		  <th>*SEQUENCE_NUMBER</th>
+		  <th>START_SERVIVE_PORT_NAME</th>
+		  <th>VNF_TYPE</th>
+		  <th>SERVICE_PORT_NAME</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.topology_name %></td>
+            <td><%= row.start_vnf_type %></td>
+            <td><%= row.sequence_number %></td>
+            <td><%= row.start_service_port_name %></td>
+            <td><%= row.vnf_type %></td>
+            <td><%= row.service_port_name %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/customerNcsServers.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/customerNcsServers.ejs
new file mode 100644
index 0000000..082384a
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/customerNcsServers.ejs
@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#ncs_servers').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE Customer NCS Servers</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="ncs_servers" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*CUSTOMER_NAME</th>
+		  <th>URL</th>
+		  <th>NCS_SM_IP_ADDRESS</th>
+		  <th>NCS_DM_V6_IP_ADDRESS</th>
+		  <th>NCS_DM_V6_IP_NETWORK</th>
+		  <th>DR_NCS_DM_V6_IP_NETWORK</th>
+		  <th>NCS_DM_V4_IP_NETWORK</th>
+		  <th>DR_NCS_DM_V4_IP_NETWORK</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.customer_name %></td>
+            <td><%= row.url %></td>
+            <td><%= row.ncs_sm_ip_address %></td>
+            <td><%= row.ncs_dm_v6_ip_address %></td>
+            <td><%= row.ncs_dm_v6_ip_network %></td>
+            <td><%= row.dr_ncs_dm_v6_ip_network %></td>
+            <td><%= row.ncs_dm_v4_ip_network %></td>
+            <td><%= row.dr_ncs_dm_v4_ip_network %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/mappedServicePort.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/mappedServicePort.ejs
new file mode 100644
index 0000000..1c55eb5
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/mappedServicePort.ejs
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#mapped_service_port').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE Mapped Service Port</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="mapped_service_port" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*DEVICE_VENDOR_NAME</th>
+		  <th>*DEVICE_MODEL</th>
+		  <th>*SERVICE_PORT_NAME</th>
+		  <th>*VNF_VENDOR_NAME</th>
+		  <th>*VNF_MODEL</th>
+		  <th>*PORT_NAME</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.device_model %></td>
+            <td><%= row.service_port_name %></td>
+            <td><%= row.vnf_vendor_name %></td>
+            <td><%= row.vnf_model %></td>
+            <td><%= row.port_name %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/mcapServers.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/mcapServers.ejs
new file mode 100644
index 0000000..a51abd0
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/mcapServers.ejs
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#mcap_servers').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE MCAP Servers</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="mcap_servers" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*CUSTOMER_NAME</th>
+		  <th>*MCAP_IP_ADDRESS</th>
+		  <th>*MCAP_POLLER_IP_ADDRESS</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.customer_name %></td>
+            <td><%= row.mcap_ip_address %></td>
+            <td><%= row.mcap_poller_ip_address %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/ncsCredentials.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/ncsCredentials.ejs
new file mode 100644
index 0000000..f860b07
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/ncsCredentials.ejs
@@ -0,0 +1,180 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#ncs_server_credentials').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>NCS Server Credentials</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary" data-toggle="modal" data-target="#add_ncs_credentials">
+            Add NCS Credentials
+            </button>
+            </div>
+    <% } %>
+
+	<table id="ncs_server_credentials" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>*Customer Name</th>
+          <th>NCS Username</th>
+          <th>NCS Password</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.customer_name %></td>
+            <td><%= row.ncs_username %></td>
+            <td>*****</td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="updateNcsCredentials('<%= row.customer_name %>','<%= row.ncs_username %>','<%= row.ncs_password %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+				onclick="deleteNcsCredentials('<%= row.customer_name %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/ncs_credentials %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitNcsCredentials(form)
+{
+    var errorMsg='';
+	var customer_name = '';
+	var ncs_username = '';
+	var ncs_password = '';
+	var confirm_ncs_password = '';
+
+    if ( form.name == 'addForm' )
+    {
+		customer_name = form.nf_customer_name;
+		ncs_username = form.nf_ncs_username;
+		ncs_password = form.nf_ncs_password;
+		confirm_ncs_password = form.nf_confirm_ncs_password;
+
+    	if ( (customer_name.value == null) || (customer_name.value == "") || isblank(customer_name.value) )
+    	{
+        	errorMsg += 'Customer Name is required.<br>';
+    	}
+    	if( errorMsg.length > 0 ) {
+        	bootbox.alert(errorMsg);
+        	return;
+    	}
+		if ( ncs_password.value != confirm_ncs_password.value )
+        {
+            bootbox.alert('Passwords do not match.');
+            return;
+        }
+    }
+    else
+    {
+		customer_name = form.uf_customer_name;
+		ncs_username = form.uf_ncs_username;
+		ncs_password = form.uf_ncs_password;
+		confirm_ncs_password = form.uf_confirm_ncs_password;
+		if ( ncs_password.value != confirm_ncs_password.value )
+        {
+            bootbox.alert('Passwords do not match.');
+            return;
+        }
+    }
+    form.submit();
+}
+
+function updateNcsCredentials(customer_name,ncs_username,ncs_password) {
+
+    document.getElementById('uf_customer_name').value=customer_name;
+    document.getElementById('uf_ncs_username').value=ncs_username;
+    document.getElementById('uf_ncs_password').value=ncs_password;
+
+    $('#update_ncs_credentials').modal('show');
+}
+
+function deleteNcsCredentials(customer_name) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete NCS Credentials [ " + customer_name + " ]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/ucpe/deleteNcsCredentials?customer_name=" + customer_name); 
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/nmInterfaces.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/nmInterfaces.ejs
new file mode 100644
index 0000000..50b15c4
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/nmInterfaces.ejs
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#nm_interfaces').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE NM Interfaces</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="nm_interfaces" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*DEVICE_VENDOR_NAME</th>
+		  <th>*DEVICE_MODEL</th>
+		  <th>NM_VLAN_NUMBER</th>
+		  <th>DEVICE_MANAGER_NM_LAN_INTERFACE</th>
+		  <th>SWITCH_MANAGER_NM_LAN_INTERFACE</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.device_model %></td>
+            <td><%= row.nm_lan_vlan_number %></td>
+            <td><%= row.device_manager_nm_lan_interface %></td>
+            <td><%= row.switch_manager_nm_lan_interface %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/phsCredentials.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/phsCredentials.ejs
new file mode 100644
index 0000000..508b5a2
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/phsCredentials.ejs
@@ -0,0 +1,202 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#phs_server_credentials').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>PHS Server Credentials</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary" data-toggle="modal" data-target="#add_phs_credentials">
+            Add PHS Credentials
+            </button>
+            </div>
+    <% } %>
+
+	<table id="phs_server_credentials" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*Device Vendor Name</th>
+          <th>*Customer Name</th>
+		  <th>*IP Addresses</th>
+          <th>PHS Username</th>
+          <th>PHS Password</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.customer_name %></td>
+            <td><%= row.ip_addresses %></td>
+            <td><%= row.phs_username %></td>
+            <td>*****</td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="updatePhsCredentials('<%=row.device_vendor_name %>','<%= row.customer_name %>','<%= row.ip_addresses %>','<%= row.phs_username %>','<%= row.phs_password %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+				onclick="deletePhsCredentials('<%= row.device_vendor_name %>', '<%= row.customer_name %>', '<%= row.ip_addresses %>' );">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/phs_credentials %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitPhsCredentials(form)
+{
+    var errorMsg='';
+    var device_vendor_name = '';
+	var customer_name = '';
+	var ip_addresses = '';
+	var phs_username = '';
+	var phs_password = '';
+	var confirm_phs_password = '';
+
+    if ( form.name == 'addForm' )
+    {
+		device_vendor_name = form.nf_device_vendor_name;
+		customer_name = form.nf_customer_name;
+		ip_addresses = form.nf_ip_addresses;
+		phs_username = form.nf_phs_username;
+		phs_password = form.nf_phs_password;
+		confirm_phs_password = form.nf_confirm_phs_password;
+
+    	if ( (device_vendor_name.value == null) || (device_vendor_name.value == "") || isblank(device_vendor_name.value) )
+    	{
+        	errorMsg += 'Device Vendor Name is required.<br>';
+    	}
+    	if ( (customer_name.value == null) || (customer_name.value == "") || isblank(customer_name.value) )
+    	{
+        	errorMsg += 'Customer Name is required.<br>';
+    	}
+    	if ( (ip_addresses.value == null) || (ip_addresses.value == "") || isblank(ip_addresses.value) ){
+        	errorMsg += 'IP Addresses is required.<br>';
+    	}
+    	if( errorMsg.length > 0 ) {
+        	bootbox.alert(errorMsg);
+        	return;
+    	}
+
+		if ( phs_password.value != confirm_phs_password.value )
+		{
+			bootbox.alert('Passwords do not match.');
+			return;
+		}
+    }
+    else
+    {
+		device_vendor_name = form.uf_device_vendor_name;
+		customer_name = form.uf_customer_name;
+		ip_addresses = form.uf_ip_addresses;
+		phs_username = form.uf_phs_username;
+		phs_password = form.uf_phs_password;
+		confirm_phs_password = form.uf_confirm_phs_password;
+
+		if ( phs_password.value != confirm_phs_password.value )
+		{
+			bootbox.alert('Passwords do not match.');
+			return;
+		}
+    }
+    form.submit();
+}
+
+function updatePhsCredentials(device_vendor_name,customer_name,ip_addresses,phs_username,phs_password) {
+
+    document.getElementById('uf_device_vendor_name').value=device_vendor_name;
+    document.getElementById('uf_customer_name').value=customer_name;
+    document.getElementById('uf_ip_addresses').value=ip_addresses;
+    document.getElementById('uf_phs_username').value=phs_username;
+    document.getElementById('uf_phs_password').value=phs_password;
+
+    $('#update_phs_credentials').modal('show');
+}
+
+function deletePhsCredentials(device_vendor_name, customer_name, ip_addresses) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete PHS Credentials " + device_vendor_name + "|" + customer_name + "|" + ip_addresses,
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/ucpe/deletePhsCredentials?device_vendor_name=" + device_vendor_name 
+					+ "&customer_name=" + customer_name + "&ip_addresses=" + ip_addresses);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/phsServers.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/phsServers.ejs
new file mode 100644
index 0000000..1f28dbb
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/phsServers.ejs
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#phs_servers').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE PHS Servers</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="phs_servers" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*DEVICE_VENDOR_NAME</th>
+		  <th>*CUSTOMER_NAME</th>
+		  <th>IP_ADDRESSES</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.customer_name %></td>
+            <td><%= row.ip_addresses %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/physicalDeviceLogins.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/physicalDeviceLogins.ejs
new file mode 100644
index 0000000..0dd78d4
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/physicalDeviceLogins.ejs
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#device_logins').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE Physical Device Logins</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="device_logins" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*CUSTOMER_NAME</th>
+		  <th>*DEVICE_VENDOR_NAME</th>
+		  <th>*DEVICE_MODEL</th>
+		  <th>*DEVICE_MANAGER_HASHED_PASSWORD</th>
+		  <th>*SWITCH_MANAGER_HASHED_PASSWORD</th>
+		  <th>*OS_HASHED_PASSWORD</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.customer_name %></td>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.device_model %></td>
+            <td><%= row.device_manager_hashed_password %></td>
+            <td><%= row.switch_manager_hashed_password %></td>
+            <td><%= row.os_hashed_password %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/referenceData.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/referenceData.ejs
new file mode 100644
index 0000000..6196c46
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/referenceData.ejs
@@ -0,0 +1,224 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#reference_data').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE Reference Data</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<table id="reference_data" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>REFERENCE_ID</th>
+		  <th>STATUS</th>
+          <th>FILENAME</th>
+          <th>ATTUID</th>
+          <th>DATE</th>
+		  <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+		<% var i=0; retData.forEach( function(rowObj) { %>
+        <tr>
+            <td><%= rowObj.row.reference_id %></td>
+            <td><%= rowObj.row.status %></td>
+			<td>
+                <a data-toggle="collapse"
+                    href="#collapseExample<%= i %>" aria-expanded="false"
+                    aria-controls="collapseExample"><%= rowObj.row.filename %>
+                </a>
+                <div class="collapse" id="collapseExample<%= i %>">
+                    <div class="well">
+                        <pre><%= rowObj.filecontent %></pre>
+                    </div>
+                </div>
+           </td>
+            <td><%= rowObj.row.attuid %></td>
+            <td><%= rowObj.row.ts %></td>
+			<% if(priv == 'A' ) { %>
+            <td>
+			<% if ( rowObj.row.status == 'pending' ) { %>
+				<button type="button" class="btn btn-default btn-xs"
+            	onclick="importReferenceData('<%= rowObj.row.reference_id %>','<%= rowObj.row.status %>','<%= rowObj.row.filename %>','<%= rowObj.row.ts %>');">Import</button>
+			<% } %>
+				<button type="button" class="btn btn-default btn-xs"
+            	onclick="deleteReferenceData('<%= rowObj.row.reference_id %>','<%= rowObj.row.filename %>');">Delete</button>
+			</td>
+            <% } %>
+        </tr>
+		<% i++; }); %>
+      </tbody>
+    </table>
+
+	<% if(priv == 'A'){ %>
+	<div class="actions" style="padding:0px 25px;">
+	<form method="POST" action="/ucpe/uploadReferenceData" enctype="multipart/form-data">
+		<div class="form-group">
+    		<label for="dest">File input</label>
+    		<input name="filename" type="file" id="dest">
+    		<p class="help-block">Choose a file to upload.</p>
+  		</div>
+            <button type="button" class="btn btn-default"
+                onclick="uploadFile(this.form);">Upload File</button>
+	</form>
+	</div>
+	<% } %>
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+
+function getVnfData(vnf_name,vnf_type,svc_request_id)
+{
+	location.assign("/mobility/viewVnfData?vnf_name=" + vnf_name + "&vnf_type=" + vnf_type );
+	return;
+}
+function importReferenceData(reference_id,status,filename,ts)
+{
+	var alertMessage = '';
+	if ( status != 'pending' )
+	{
+		bootbox.alert("Upload Status must be in 'pending' state.");
+		return;
+	}
+	if ( filename.substring(0,11) == 'ucpedevice_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_MAPPED_SERVICE_PORT and UCPE_SERVICE_PORT tables?";
+	}else if ( filename.substring(0,14) == 'ucpeapilogins_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_VNF_LOGINS, UCPE_PHYSICAL_DEVICE_LOGINS and UCPE_API_LOGINS tables?";
+	}else if ( filename.substring(0,17) == 'ucpenminterfaces_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_VNF_NM_INTERFACES and UCPE_NM_INTERFACES tables?";
+	}else if ( filename.substring(0,15) == 'ucpephsservers_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_PHS_SERVERS table?";
+	}else if ( filename.substring(0,15) == 'ucpencsservers_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_CUSTOMER_NCS_SERVERS table?";
+	}else if ( filename.substring(0,15) == 'ucpevnfcatalog_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_VNF_MODELS, UCPE_VNF_MODEL_SOFTWARE and UCPE_VNF_MODEL_FEATURES tables?";
+	}else if ( filename.substring(0,16) == 'ucpemcapservers_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_MCAP_SERVERS table?";
+	}else if ( filename.substring(0,23) == 'ucpechainingtopologies_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_CHAINING_TOPOLOGIES table?";
+	}else if ( filename.substring(0,16) == 'ucpevnfportinfo_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_VNF_PORT and UCPE_MAP_TO_DEVICE tables?";
+	} else {
+		bootbox.alert('Invalid Filename in database: ' + filename);
+		return;
+	}
+	bootbox.confirm({
+        message: alertMessage,
+        callback: function(result) {
+            if ( result )
+            {
+				if ( filename.substring(0,11) == 'ucpedevice_' ){
+					location.assign("/ucpe/importUcpeDevices?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,14) == 'ucpeapilogins_' ){
+					location.assign("/ucpe/importApiLogins?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,17) == 'ucpenminterfaces_' ){
+					location.assign("/ucpe/importNmInterfaces?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,15) == 'ucpephsservers_' ){
+					location.assign("/ucpe/importPhsServers?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,15) == 'ucpencsservers_' ){
+					location.assign("/ucpe/importNcsServers?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,15) == 'ucpevnfcatalog_' ){
+					location.assign("/ucpe/importVnfCatalog?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,16) == 'ucpemcapservers_' ){
+					location.assign("/ucpe/importMcapServers?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,23) == 'ucpechainingtopologies_' ){
+					location.assign("/ucpe/importChainTopo?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,16) == 'ucpevnfportinfo_' ){
+					location.assign("/ucpe/importVnfPortInfo?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				} else {
+					bootbox.alert('Invalid Filename: ' + filename);
+					return;
+				}
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+function deleteReferenceData(reference_id,filename)
+{
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete uploaded file [" + filename + "]? (This action will not effect the database.)",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/ucpe/deleteReferenceData?id=" + reference_id + "&filename=" + filename); 
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/serviceManagerCredentials.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/serviceManagerCredentials.ejs
new file mode 100644
index 0000000..9e156f2
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/serviceManagerCredentials.ejs
@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#service_manager_credentials').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Service Manager Credentials</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary" data-toggle="modal" data-target="#add_service_manager_credentials">
+            Add Service Manager Credentials
+            </button>
+            </div>
+    <% } %>
+
+	<table id="service_manager_credentials" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>Service Manager Username</th>
+          <th>Service Manager Password</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.service_manager_username %></td>
+            <td>*****</td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="updateServiceManagerCredentials('<%=row.service_manager_username %>','<%= row.service_manager_password %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+				onclick="deleteServiceManagerCredentials('<%= row.service_manager_username %>', '<%= row.service_manager_password %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/service_manager_credentials %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitServiceManagerCredentials(form)
+{
+    var errorMsg='';
+	var service_manager_username = '';
+	var service_manager_password = '';
+	var confirm_service_manager_password = '';
+
+    if ( form.name == 'addForm' )
+    {
+		service_manager_username = form.nf_service_manager_username;
+		service_manager_password = form.nf_service_manager_password;
+		confirm_service_manager_password = form.nf_confirm_service_manager_password;
+
+		if ( service_manager_password.value != confirm_service_manager_password.value )
+		{
+			bootbox.alert('Passwords do not match.');
+			return;
+		}
+    }
+    else
+    {
+		service_manager_username = form.uf_service_manager_username;
+		service_manager_password = form.uf_service_manager_password;
+		confirm_service_manager_password = form.uf_confirm_service_manager_password;
+
+		if ( service_manager_password.value != confirm_service_manager_password.value )
+		{
+			bootbox.alert('Passwords do not match.');
+			return;
+		}
+    }
+    form.submit();
+}
+
+function updateServiceManagerCredentials(service_manager_username,service_manager_password) {
+
+    document.getElementById('uf_service_manager_username').value=service_manager_username;
+    document.getElementById('uf_service_manager_password').value=service_manager_password;
+
+    $('#update_service_manager_credentials').modal('show');
+}
+
+function deleteServiceManagerCredentials(service_manager_username, service_manager_password) {
+
+	var url_string = encodeURI("/ucpe/deleteServiceManagerCredentials?service_manager_username=" + service_manager_username 
+					+ "&service_manager_password=" + service_manager_password);
+
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete Service Manager Credentials? " + service_manager_username,
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign(url_string);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/servicePort.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/servicePort.ejs
new file mode 100644
index 0000000..8053713
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/servicePort.ejs
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#service_port').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE Service Port</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<table id="service_port" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*DEVICE_VENDOR_NAME</th>
+		  <th>*DEVICE_MODEL</th>
+		  <th>*SERVICE_PORT_NAME</th>
+		  <th>PHYSICAL_PORT_NAME</th>
+		  <th>PHYSICAL_SPEED</th>
+		  <th>PHYSICAL_SPEED_UNITS</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.device_model %></td>
+            <td><%= row.service_port_name %></td>
+            <td><%= row.physical_port_name %></td>
+            <td><%= row.physical_speed %></td>
+            <td><%= row.physical_speed_units %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/vnfLogins.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/vnfLogins.ejs
new file mode 100644
index 0000000..f5e8873
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/vnfLogins.ejs
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_logins').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE VNF Logins</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="vnf_logins" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*CUSTOMER_NAME</th>
+		  <th>*VNF_VENDOR_NAME</th>
+		  <th>*VNF_MODEL</th>
+		  <th>HASHED_PASSWORD</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.customer_name %></td>
+            <td><%= row.vnf_vendor_name %></td>
+            <td><%= row.vnf_model %></td>
+            <td><%= row.hashed_password %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/vnfMapDevice.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/vnfMapDevice.ejs
new file mode 100644
index 0000000..fbfa2ba
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/vnfMapDevice.ejs
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_map_to_device').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE VNF Map to Device</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="vnf_map_to_device" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*VNF_VENDOR_NAME</th>
+		  <th>*VNF_MODEL</th>
+		  <th>*SERVICE_PORT_NAME</th>
+		  <th>*DEVICE_VENDOR_NAME</th>
+		  <th>*DEVICE_MODEL</th>
+		  <th>*MAPPED_SERVICE_PORT_NAME</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.vnf_vendor_name %></td>
+            <td><%= row.vnf_model %></td>
+            <td><%= row.service_port_name %></td>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.device_model %></td>
+            <td><%= row.mapped_service_port_name %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/vnfModelFeatures.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/vnfModelFeatures.ejs
new file mode 100644
index 0000000..4015179
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/vnfModelFeatures.ejs
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_model_features').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE VNF Model Features</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="vnf_model_features" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*ATT PART NUMBER</th>
+		  <th>*VNF_FEATURE</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.att_part_number %></td>
+            <td><%= row.vnf_feature %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/vnfModelSoftware.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/vnfModelSoftware.ejs
new file mode 100644
index 0000000..f82b5b8
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/vnfModelSoftware.ejs
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_model_software').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE VNF Model Software</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="vnf_model_software" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*ATT PART NUMBER</th>
+		  <th>*SOFTWARE_VERSION</th>
+		  <th>SOFTWARE_VERSION_STATE</th>
+		  <th>SOFTWARE_FILENAME</th>
+		  <th>SOFTWARE_FILETYPE</th>
+		  <th>FILE_MD5_VALUE</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.att_part_number %></td>
+            <td><%= row.software_version %></td>
+            <td><%= row.software_version_state %></td>
+            <td><%= row.software_filename %></td>
+            <td><%= row.software_filetype %></td>
+            <td><%= row.file_md5_value %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/vnfModels.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/vnfModels.ejs
new file mode 100644
index 0000000..df71306
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/vnfModels.ejs
@@ -0,0 +1,122 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_models').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE VNF Models</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="vnf_models" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*ATT PART NUMBER</th>
+		  <th>VNF_TYPE</th>
+		  <th>VENDOR_NAME</th>
+		  <th>VENDOR_PART_NUMBER</th>
+		  <th>VENDOR_MODEL</th>
+		  <th>VCPU_DEFAULT</th>
+		  <th>VCPU_MIN</th>
+		  <th>VCPU_MAX</th>
+		  <th>VMEMORY_DEFAULT</th>
+		  <th>VMEMORY_UNITS</th>
+		  <th>VMEMORY_MIN</th>
+		  <th>VMEMORY_MAX</th>
+		  <th>VDISK_DEFAULT</th>
+		  <th>VDISK_UNITS</th>
+		  <th>VDISK_MIN</th>
+		  <th>VDISK_MAX</th>
+		  <th>SPEED_UNITS</th>
+		  <th>SPEED</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.att_part_number %></td>
+            <td><%= row.vnf_type %></td>
+            <td><%= row.vendor_name %></td>
+            <td><%= row.vendor_part_number %></td>
+            <td><%= row.vendor_model %></td>
+            <td><%= row.vcpu_default %></td>
+            <td><%= row.vcpu_min %></td>
+            <td><%= row.vcpu_max %></td>
+            <td><%= row.vmemory_default %></td>
+            <td><%= row.vmemory_units %></td>
+            <td><%= row.vmemory_min %></td>
+            <td><%= row.vmemory_max %></td>
+            <td><%= row.vdisk_default %></td>
+            <td><%= row.vdisk_units %></td>
+            <td><%= row.vdisk_min %></td>
+            <td><%= row.vdisk_max %></td>
+            <td><%= row.speed_units %></td>
+            <td><%= row.speed %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/vnfNmInterfaces.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/vnfNmInterfaces.ejs
new file mode 100644
index 0000000..3430f6b
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/vnfNmInterfaces.ejs
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_nm_interfaces').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE VNF NM Interfaces</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="vnf_nm_interfaces" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*DEVICE_VENDOR_NAME</th>
+		  <th>*DEVICE_MODEL</th>
+		  <th>*VNF_VENDOR_NAME</th>
+		  <th>*VNF_MODEL</th>
+		  <th>NM_LAN_INTERFACE</th>
+		  <th>NM_LOOPBACK_INTERFACE</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.device_model %></td>
+            <td><%= row.vnf_vendor_name %></td>
+            <td><%= row.vnf_model %></td>
+            <td><%= row.nm_lan_interface %></td>
+            <td><%= row.nm_loopback_interface %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/ucpe/vnfPorts.ejs b/sdnc-a1-controller/oam/admportal/views/ucpe/vnfPorts.ejs
new file mode 100644
index 0000000..834eada
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/ucpe/vnfPorts.ejs
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_ports').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE VNF Ports</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="vnf_ports" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*VNF_VENDOR_NAME</th>
+		  <th>*VNF_MODEL</th>
+		  <th>*SERVICE_PORT_NAME</th>
+		  <th>PHYSICAL_PORT_NAME</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.vnf_vendor_name %></td>
+            <td><%= row.vnf_model %></td>
+            <td><%= row.service_port_name %></td>
+            <td><%= row.physical_port_name %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/admportal/views/user/list.ejs b/sdnc-a1-controller/oam/admportal/views/user/list.ejs
new file mode 100644
index 0000000..ec650b0
--- /dev/null
+++ b/sdnc-a1-controller/oam/admportal/views/user/list.ejs
@@ -0,0 +1,194 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#user_admin').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+
+<body>
+
+<div class="well well-sm">
+<h3>User Administration</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'><%=result.msg %></div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'><%=result.msg %></div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+    <div class="actions" style="padding:15px 0px;">
+	<% if(priv == 'A') { %>
+    	<button class="btn btn-primary" data-toggle="modal" data-target="#new_user">Add User</button>
+	<% } %>
+
+    </div>
+    <div class="content">
+     <table id="user_admin" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+			<th>Email</th>
+        	<th>Password</th>
+        	<th>Privilege</th>
+	  		<% if(priv == 'A'){ %>
+          	<th>Action</th>
+		  	<% } %>
+        </tr>
+      </thead>
+      <tbody>
+    <% if (rows)  {
+         rows.forEach(function(row) { %>
+			<tr>
+            <td><%= row.email %></td> 
+            <td>**********</td> 
+            <td>
+				<% if(row.privilege == 'A'){ %>
+					Administrator
+				<% } else if (row.privilege == 'R') { %>
+					Readonly
+				<% } else { %>
+					unknown
+				<% } %>
+			</td> 
+			<% if(priv == 'A') { %>
+			<td>
+				<form name="rowform">
+					<button type="button" class="btn btn-default btn-xs"
+						onclick="updateRequest('<%=row.email %>', '<%=row.password %>', '<%=row.privilege %>');">Update</button>
+					<button type="button" class="btn btn-default btn-xs"
+						onclick="deleteRequest('<%=row.email %>');">Delete</button>
+				</form>
+			</td>
+			<% } %>
+			</tr>
+    <% }); }; %>
+      </tbody>
+    </table>
+   </div>
+
+   <% include ../partials/newuserform %>
+   <% include ../partials/userform %>
+
+    <footer>
+        <% include ../partials/footer %>
+    </footer>
+    
+<script type="text/javascript">
+
+function submitUserAdmin(form)
+{
+	var errorMsg='';
+	var email = '';
+	var password = '';
+	var confirm_password = '';
+	var privilege = '';
+
+    if ( form.name == 'addForm' )
+    {
+    	email = form.nf_email;
+        password = form.nf_password;
+        confirm_password = form.nf_confirm_password;
+        privilege = form.nf_privilege;
+
+        if ( (email.value == null) || (email.value == "") || isblank(email.value) )
+        {
+                errorMsg += 'Email is required.<br>';
+        }
+        if( errorMsg.length > 0 ) {
+                bootbox.alert(errorMsg);
+                return;
+        }
+
+        if ( password.value != confirm_password.value )
+        {
+            bootbox.alert('Passwords do not match.');
+            return;
+        }
+    }
+    else
+    {
+    	email = form.uf_email;
+        password = form.uf_password;
+        confirm_password = form.uf_confirm_password;
+        privilege = form.uf_privilege;
+
+        if ( (email.value == null) || (email.value == "") || isblank(email.value) )
+        {
+                errorMsg += 'Email is required.<br>';
+        }
+        if ( password.value != confirm_password.value )
+        {
+            bootbox.alert('Passwords do not match.');
+            return;
+        }
+    }
+    form.submit();
+}
+
+function deleteRequest(email) {
+
+	bootbox.confirm({
+  		message: "Are you sure you want to delete user [" + email + "] ?",
+  		callback: function(result) {
+			if ( result )
+			{
+				location.assign("/user/deleteUser?email=" + email);
+			}
+			return;
+  		},
+  		buttons: {
+    		cancel: {
+      			label: "Cancel"
+    		},
+    		confirm: {
+      			label: "Yes"
+    		}
+  		}
+	});
+}
+function updateRequest(email,password,privilege) {
+
+	document.getElementById('uf_email').value = email;
+	document.getElementById('uf_key_email').value = email;
+	document.getElementById('uf_password').value = password;
+	document.getElementById('uf_confirm_password').value = password;
+	if ( privilege == "A" ){
+		document.getElementById('uf_privilege').value = 'admin';
+	}else if (privilege == "R"){
+		document.getElementById('uf_privilege').value = 'readonly';
+	}else{
+		document.getElementById('uf_privilege').value = 'admin';
+	}
+	document.getElementById('uf_action').value = "/user/updateUser";
+	$('#myUserModal').modal('show');
+     
+}
+</script>
+
+</body>
+</html>
+
diff --git a/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/pom.xml b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/pom.xml
new file mode 100644
index 0000000..f38721f
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/pom.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.onap.sdnc.oam.vnfbackup</groupId>
+		<artifactId>configbackuprestore</artifactId>
+		<version>1.7.3-SNAPSHOT</version>
+	</parent>
+	<groupId>org.onap.sdnc.oam.vnfbackup</groupId>
+	<artifactId>getBackupVnfDetailService</artifactId>
+	<version>1.7.3-SNAPSHOT</version>
+	<name>sdnc-oam :: vnfbackup :: getBackupVnfDetailService</name>
+	<url>http://maven.apache.org</url>
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+	</properties>
+	<dependencies>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.4</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.mariadb.jdbc</groupId>
+			<artifactId>mariadb-java-client</artifactId>
+			<version>1.1.9</version>
+		</dependency>
+		<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
+		<dependency>
+			<groupId>commons-codec</groupId>
+			<artifactId>commons-codec</artifactId>
+			<version>1.9</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+			<version>1.5.4.RELEASE</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context</artifactId>
+			<version>4.3.9.RELEASE</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-tomcat</artifactId>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.tomcat.embed</groupId>
+			<artifactId>tomcat-embed-jasper</artifactId>
+			<scope>provided</scope>
+		</dependency>
+
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-devtools</artifactId>
+			<optional>true</optional>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+			<version>1.5.3.RELEASE</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-jpa</artifactId>
+		</dependency>
+
+		<!-- Add Log4j2 Dependency -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-log4j2</artifactId>
+		</dependency>
+		<!-- https://mvnrepository.com/artifact/org.javers/javers-core -->
+		<dependency>
+			<groupId>org.javers</groupId>
+			<artifactId>javers-core</artifactId>
+			<version>3.9.3</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.json</groupId>
+			<artifactId>json</artifactId>
+			<version>20180130</version>
+		</dependency>
+
+		<!-- https://mvnrepository.com/artifact/com.flipkart.zjsonpatch/zjsonpatch -->
+		<dependency>
+			<groupId>com.flipkart.zjsonpatch</groupId>
+			<artifactId>zjsonpatch</artifactId>
+			<version>0.4.6</version>
+		</dependency>
+
+	</dependencies>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.jacoco</groupId>
+				<artifactId>jacoco-maven-plugin</artifactId>
+				<version>0.7.5.201505241946</version>
+				<executions>
+					<!-- Prepares the property pointing to the JaCoCo runtime agent which 
+						is passed as VM argument when Maven the Surefire plugin is executed. -->
+					<execution>
+						<id>pre-unit-test</id>
+						<goals>
+							<goal>prepare-agent</goal>
+						</goals>
+						<configuration>
+							<!-- Sets the path to the file which contains the execution data. -->
+							<destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
+							<!-- Sets the name of the property containing the settings for JaCoCo 
+								runtime agent. -->
+							<propertyName>surefireArgLine</propertyName>
+						</configuration>
+					</execution>
+					<!-- Ensures that the code coverage report for unit tests is created 
+						after unit tests have been run. -->
+					<execution>
+						<id>post-unit-test</id>
+						<phase>test</phase>
+						<goals>
+							<goal>report</goal>
+						</goals>
+						<configuration>
+							<!-- Sets the path to the file which contains the execution data. -->
+							<dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
+							<!-- Sets the output directory for the code coverage report. -->
+							<outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/read.md b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/read.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/read.md
diff --git a/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/controller/VnfComparisonController.java b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/controller/VnfComparisonController.java
new file mode 100644
index 0000000..2f83368
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/controller/VnfComparisonController.java
@@ -0,0 +1,68 @@
+package com.onap.sdnc.vnfcomparsion.controller;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfCompareResponse;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfConfigDetailsDB;
+import com.onap.sdnc.vnfconfigcomparsion.service.VnfComparisonService;
+
+
+@RestController
+public class VnfComparisonController {
+	
+	private static final Logger logger = Logger.getLogger(VnfComparisonController.class);
+
+	@Autowired
+	VnfComparisonService vnfComparisonService;
+	
+	
+	@RequestMapping(value="/getAllBackupVnfIds", method=RequestMethod.GET,produces="application/json")
+	public List<VnfConfigDetailsDB>  getAllBackupVnfIds() {
+		return vnfComparisonService.getAllBackupVnfIds();
+	}
+	
+	
+	@RequestMapping(value="/configcomparison/{vnfid}", method = RequestMethod.POST,produces="application/json")
+	public VnfCompareResponse configComparison(@RequestBody String versionNames,@PathVariable("vnfid") String vnfId) {
+		VnfCompareResponse vnfCompareResponse = null;
+		try {
+			JSONObject versionId = new JSONObject(versionNames);
+			vnfCompareResponse = vnfComparisonService.getConfigurationDeatils(versionId,vnfId);
+		
+	} catch (JSONException e1) {
+		logger.error("exception occered"+e1);
+	}
+	
+	return vnfCompareResponse;
+}
+	
+	@RequestMapping(value="/configDetailsByIdVersion/{vnfid}", method = RequestMethod.POST,produces="application/json")
+	public VnfCompareResponse getVnfDetailsOfVersionsAndVnfID(@RequestBody String versionNames,@PathVariable("vnfid") String vnfId) {
+		VnfCompareResponse vnfCompareResponse = null;
+		try {
+			JSONObject versionId = new JSONObject(versionNames);
+			vnfCompareResponse = vnfComparisonService.getConfigDeatilsByVnfIdVnfVersion(versionId,vnfId);
+		
+	} catch (JSONException e1) {
+		logger.error("exception occered"+e1);
+	}
+	
+	return vnfCompareResponse;
+}
+	
+	@RequestMapping(value="/configDetailsById/{vnfid}", method = RequestMethod.GET,produces="application/json")
+	public List<VnfConfigDetailsDB> getVnfDetailsOfVnfID(@PathVariable("vnfid") String vnfId) {
+		List<VnfConfigDetailsDB> vnfConfigDetails = null;
+		vnfConfigDetails = vnfComparisonService.getConfigurationDeatils(vnfId);
+	return vnfConfigDetails;
+}
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/dao/VnfComparisonRepository.java b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/dao/VnfComparisonRepository.java
new file mode 100644
index 0000000..265206d
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/dao/VnfComparisonRepository.java
@@ -0,0 +1,30 @@
+package com.onap.sdnc.vnfcomparsion.dao;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfConfigDetailsDB;
+
+
+@Repository
+public interface VnfComparisonRepository extends JpaRepository<VnfConfigDetailsDB, Serializable>{
+	
+	
+	@Query(value = "Select * from vnfconfigdetails where vnfid = :vnfid", nativeQuery = true)
+	List<VnfConfigDetailsDB> getVnfDetailsByVnfID(@Param("vnfid") String vnfid);
+
+	@Query(value = "Select * from vnfconfigdetails where vnfversion = :vnfversion and vnfid = :vnfid", nativeQuery = true)
+	VnfConfigDetailsDB getVnfDetails(@Param("vnfversion") String vnfversion, @Param("vnfid") String vnfid);
+
+	public static final String FIND_VNFID = "SELECT * FROM vnfconfigdetails group by vnfid";
+
+	@Query(value= FIND_VNFID,nativeQuery = true) 
+	List<VnfConfigDetailsDB> findvnfidvnfname();
+
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/dao/VnfIds.java b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/dao/VnfIds.java
new file mode 100644
index 0000000..51210b1
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfcomparsion/dao/VnfIds.java
@@ -0,0 +1,7 @@
+package com.onap.sdnc.vnfcomparsion.dao;
+
+public interface VnfIds {
+	
+	String getVnfID();
+
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfCompareResponse.java b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfCompareResponse.java
new file mode 100644
index 0000000..b684541
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfCompareResponse.java
@@ -0,0 +1,16 @@
+package com.onap.sdnc.vnfconfigcomparsion.model;
+
+import java.util.List;
+
+public class VnfCompareResponse {
+
+	private List<VnfDetails> vnfDetails;
+
+	public List<VnfDetails> getVnfDetails() {
+		return vnfDetails;
+	}
+
+	public void setVnfDetails(List<VnfDetails> vnfDetails) {
+		this.vnfDetails = vnfDetails;
+	}
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfConfigDetailsDB.java b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfConfigDetailsDB.java
new file mode 100644
index 0000000..7a62dc2
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfConfigDetailsDB.java
@@ -0,0 +1,108 @@
+package com.onap.sdnc.vnfconfigcomparsion.model;
+
+import java.sql.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "vnfconfigdetails", schema = "testreports")
+public class VnfConfigDetailsDB {
+
+	private static final long serialVersionUID = 1L;
+
+	@Id
+	@GeneratedValue
+	private int id;
+	
+	@Column(name = "vnfid")
+	private String vnfid;
+
+	@Column(name = "vnfversion")
+	private String vnfversion;
+
+	@Column(name = "vnfname")
+	private String vnfname;
+
+	@Column(name = "configinfo")
+	@Lob
+	private String configinfo;
+
+	@Column(name = "creationdate")
+	private Date creationdate;
+
+	@Column(name = "lastupdated")
+	private String lastupdated;
+
+	@Column(name = "status")
+	private String status;
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public String getVnfid() {
+		return vnfid;
+	}
+
+	public void setVnfid(String vnfid) {
+		this.vnfid = vnfid;
+	}
+
+	public String getVnfversion() {
+		return vnfversion;
+	}
+
+	public void setVnfversion(String vnfversion) {
+		this.vnfversion = vnfversion;
+	}
+
+	public String getVnfname() {
+		return vnfname;
+	}
+
+	public void setVnfname(String vnfname) {
+		this.vnfname = vnfname;
+	}
+
+	public String getConfiginfo() {
+		return configinfo;
+	}
+
+	public void setConfiginfo(String configinfo) {
+		this.configinfo = configinfo;
+	}
+
+	public Date getCreationdate() {
+		return creationdate;
+	}
+
+	public void setCreationdate(Date creationdate) {
+		this.creationdate = creationdate;
+	}
+
+	public String getLastupdated() {
+		return lastupdated;
+	}
+
+	public void setLastupdated(String lastupdated) {
+		this.lastupdated = lastupdated;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfDetails.java b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfDetails.java
new file mode 100644
index 0000000..56b5ee2
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/model/VnfDetails.java
@@ -0,0 +1,27 @@
+package com.onap.sdnc.vnfconfigcomparsion.model;
+
+public class VnfDetails {
+
+	private String vnfId;
+	private String vnfDeatils;
+	private String vnfversion;
+	
+	public String getVnfversion() {
+		return vnfversion;
+	}
+	public void setVnfversion(String vnfversion) {
+		this.vnfversion = vnfversion;
+	}
+	public String getVnfDeatils() {
+		return vnfDeatils;
+	}
+	public void setVnfDeatils(String vnfDeatils) {
+		this.vnfDeatils = vnfDeatils;
+	}
+	public String getVnfId() {
+		return vnfId;
+	}
+	public void setVnfId(String vnfId) {
+		this.vnfId = vnfId;
+	}
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfComparisonService.java b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfComparisonService.java
new file mode 100644
index 0000000..73111e6
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfComparisonService.java
@@ -0,0 +1,96 @@
+package com.onap.sdnc.vnfconfigcomparsion.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.onap.sdnc.vnfcomparsion.dao.VnfComparisonRepository;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfCompareResponse;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfConfigDetailsDB;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfDetails;
+
+@Service
+public class VnfComparisonService {
+
+	private static final Logger logger = LogManager.getLogger(VnfComparisonService.class);
+
+	@Autowired
+	VnfComparisonRepository vnfComparisonRepository;
+
+	//Returns vnfconfig details if at list 2 and at most 4 versions selected.
+	public VnfCompareResponse getConfigurationDeatils(JSONObject vnfVersionNames, String vnfId) {
+		VnfCompareResponse vnfCompareResponse = new VnfCompareResponse();
+		List<VnfDetails> vnfDetailsList = new ArrayList<VnfDetails>();
+		VnfDetails vnfDetails = null;
+		try {
+			JSONArray vnfIdArray = vnfVersionNames.getJSONArray("versionNames");
+			if (vnfIdArray.length() >= 2 && vnfIdArray.length() <= 4) {
+				for (int i = 0; i < vnfIdArray.length(); i++) {
+					
+						VnfConfigDetailsDB vnfconfigdetails = vnfComparisonRepository
+								.getVnfDetails(vnfIdArray.get(i).toString(), vnfId);
+						vnfDetails = new VnfDetails();
+						vnfDetails.setVnfDeatils(vnfconfigdetails.getConfiginfo());
+						vnfDetails.setVnfId(vnfconfigdetails.getVnfid());
+						vnfDetails.setVnfversion(vnfconfigdetails.getVnfversion());
+						vnfDetailsList.add(vnfDetails);
+						logger.debug("Versions : " + vnfIdArray.get(i));
+				}
+			}/*else {
+				throw new RuntimeException("At list 2 and at most 4 versions need to be selected");
+			}*/
+		} catch (JSONException jSONException1) {
+			
+			logger.debug("JSONException occered " + jSONException1);
+			
+		}
+		vnfCompareResponse.setVnfDetails(vnfDetailsList);
+		return vnfCompareResponse;
+	}
+
+	//Returns vnfconfig details for any version.
+	public VnfCompareResponse getConfigDeatilsByVnfIdVnfVersion(JSONObject vnfVersionNames, String vnfId) {
+		VnfCompareResponse vnfCompareResponse = new VnfCompareResponse();
+		List<VnfDetails> vnfDetailsList = new ArrayList<VnfDetails>();
+		VnfDetails vnfDetails = null;
+		try {
+			JSONArray vnfIdArray = vnfVersionNames.getJSONArray("versionNames");
+			for (int i = 0; i < vnfIdArray.length(); i++) {
+				VnfConfigDetailsDB vnfconfigdetails = vnfComparisonRepository
+						.getVnfDetails(vnfIdArray.get(i).toString(), vnfId);
+				vnfDetails = new VnfDetails();
+				vnfDetails.setVnfDeatils(vnfconfigdetails.getConfiginfo());
+				vnfDetails.setVnfId(vnfconfigdetails.getVnfid());
+				vnfDetails.setVnfversion(vnfconfigdetails.getVnfversion());
+				vnfDetailsList.add(vnfDetails);
+				logger.debug("Versions : " + vnfIdArray.get(i));
+			}
+		} catch (JSONException jSONException2) {
+
+			logger.debug("JSONException occered " + jSONException2);
+		}
+		vnfCompareResponse.setVnfDetails(vnfDetailsList);
+		return vnfCompareResponse;
+	}
+	
+	//Returns backup vnf details according to vnf id.
+	public List<VnfConfigDetailsDB> getConfigurationDeatils(String vnfId) {
+		List<VnfConfigDetailsDB> vnfconfigdetails = vnfComparisonRepository.getVnfDetailsByVnfID(vnfId);
+		return vnfconfigdetails;
+	}
+
+	//Returns all backup vnf details.
+	public List<VnfConfigDetailsDB> getAllBackupVnfIds() {
+		List<VnfConfigDetailsDB> vnfconfigdetails = vnfComparisonRepository.findvnfidvnfname();
+		
+		return vnfconfigdetails;
+	}
+
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfDetailsForVnfIDAndVnfVersionService.java b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfDetailsForVnfIDAndVnfVersionService.java
new file mode 100644
index 0000000..27db0ac
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfDetailsForVnfIDAndVnfVersionService.java
@@ -0,0 +1,56 @@
+/*package com.onap.sdnc.vnfconfigcomparsion.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.onap.sdnc.vnfcomparsion.dao.VnfComparisonRepository;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfCompareResponse;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfConfigDetailsDB;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfDetails;
+
+public class VnfDetailsForVnfIDAndVnfVersionService {
+	
+	private static final Logger logger = LogManager.getLogger(VnfComparisonService.class);
+	
+	@Autowired
+	VnfComparisonRepository vnfComparisonRepository;
+
+	public VnfCompareResponse getConfigurationDeatils(JSONObject vnfVersionNames, String vnfId) {
+		
+		VnfCompareResponse vnfCompareResponse = new VnfCompareResponse();
+		List<VnfDetails> vnfDetailsList = new ArrayList<VnfDetails>();
+		VnfDetails vnfDetails = new VnfDetails();
+		try {
+			JSONArray vnfIdArray = vnfVersionNames.getJSONArray("versionNames");
+				for (int i = 0; i < vnfIdArray.length(); i++) {
+					try {
+						VnfConfigDetailsDB vnfconfigdetails = vnfComparisonRepository
+								.getVnfDetails(vnfIdArray.get(i).toString(), vnfId);
+						vnfDetails.setVnfDeatils(vnfconfigdetails.getConfiginfo());
+						vnfDetails.setVnfId(vnfconfigdetails.getVnfid());
+						vnfDetailsList.add(vnfDetails);
+						logger.debug("Versions : " + vnfIdArray.get(i));
+					} catch (Exception e) {
+						// TODO Auto-generated catch block
+						// e.printStackTrace();
+					}
+				}
+		} catch (JSONException jSONException) {
+
+			throw new RuntimeException("Enter atlist 2 versions and maximum 4 versions");
+		}
+		vnfCompareResponse.setVnfDetails(vnfDetailsList);
+		return vnfCompareResponse;
+		
+	}
+
+}
+*/
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfDetailsForVnfIDService.java b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfDetailsForVnfIDService.java
new file mode 100644
index 0000000..2aff5bd
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/main/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfDetailsForVnfIDService.java
@@ -0,0 +1,36 @@
+/*package com.onap.sdnc.vnfconfigcomparsion.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.onap.sdnc.vnfcomparsion.dao.VnfComparisonRepository;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfCompareResponse;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfConfigDetailsDB;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfDetails;
+
+public class VnfDetailsForVnfIDService {
+	
+	@Autowired
+	VnfComparisonRepository vnfComparisonRepository;
+
+	public VnfCompareResponse getConfigurationDeatils(String vnfId) {
+		VnfCompareResponse vnfCompareResponse = new VnfCompareResponse();
+		List<VnfDetails> vnfDetailsList = new ArrayList<VnfDetails>();
+		VnfDetails vnfDetails = new VnfDetails();
+			try {
+				VnfConfigDetailsDB vnfconfigdetails = vnfComparisonRepository.getVnfDetailsByVnfID(vnfId);
+				vnfDetails.setVnfDeatils(vnfconfigdetails.getConfiginfo());
+				vnfDetails.setVnfId(vnfconfigdetails.getVnfid());
+				vnfDetailsList.add(vnfDetails);
+				} catch (Exception e) {
+				// TODO Auto-generated catch block
+				// e.printStackTrace();
+				}
+		vnfCompareResponse.setVnfDetails(vnfDetailsList);
+		return vnfCompareResponse;
+	}
+
+}
+*/
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/test/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfComparisonServiceTest.java b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/test/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfComparisonServiceTest.java
new file mode 100644
index 0000000..0afcd69
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/getBackupVnfDetailService/src/test/java/com/onap/sdnc/vnfconfigcomparsion/service/VnfComparisonServiceTest.java
@@ -0,0 +1,123 @@
+package com.onap.sdnc.vnfconfigcomparsion.service;
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Matchers.anyString;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+
+import com.onap.sdnc.vnfcomparsion.dao.VnfComparisonRepository;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfCompareResponse;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfConfigDetailsDB;
+import com.onap.sdnc.vnfconfigcomparsion.model.VnfDetails;
+
+
+
+@RunWith(MockitoJUnitRunner.class)
+public class VnfComparisonServiceTest {
+
+	@InjectMocks
+	VnfComparisonService vnfComparisonService;
+	
+	@Mock
+	VnfComparisonRepository vnfComparisonRepository;
+	
+	@Test
+	public void testGetConfigurationDeatils_1() throws JSONException {
+		VnfCompareResponse response = new VnfCompareResponse();
+		String exampleJson = "{\"vnfname\":\"vnfversion\":[\"vnf1\",\"1.0\"]}";
+		JSONObject vnfVersionNames = new JSONObject("{ \"versionNames\":[\"1.0\"]  }");
+		String vnfId = "1a";
+		List<VnfDetails> vnfDetailslist = new ArrayList<VnfDetails>();
+		VnfDetails vnfdetails = new VnfDetails();
+		JSONArray vnfIdArray = vnfVersionNames.getJSONArray("versionNames");
+		VnfConfigDetailsDB value = new VnfConfigDetailsDB();
+		value.setVnfid("1a");
+		value.setConfiginfo(exampleJson);
+		value.setId(1);
+		value.setLastupdated("05-22-2018");
+		value.setStatus("Y");
+		value.setVnfname("vnf1");
+		value.setVnfversion("1.0");
+
+		//Mockito.when(vnfComparisonRepository.getVnfDetails(anyString(), anyString())).thenReturn(value);
+		response.setVnfDetails(vnfDetailslist);
+		response = vnfComparisonService.getConfigurationDeatils(vnfVersionNames, vnfId);
+		assertEquals(value.getConfiginfo(), exampleJson);
+		
+	}
+	
+	@Test
+	public void testGetConfigurationDeatils() throws Exception {
+		VnfCompareResponse response = new VnfCompareResponse();
+		String exampleJson = "{\"vnfname\":\"vnfversion\":[\"vnf1\",\"1.0\"]}";
+		JSONObject vnfVersionNames = new JSONObject("{ \"versionNames\":[\"1.0\",\"2.0\"]  }");
+		// String vnfversion = "{ \"versionNames\":[\"Version-1\"] }";
+		String vnfId = "1a";
+		List<VnfDetails> vnfDetailslist = new ArrayList<VnfDetails>();
+		VnfDetails vnfdetails = new VnfDetails();
+		JSONArray vnfIdArray = vnfVersionNames.getJSONArray("versionNames");
+		VnfConfigDetailsDB value = new VnfConfigDetailsDB();
+		value.setVnfid("1a");
+		value.setConfiginfo(exampleJson);
+		value.setId(1);
+		value.setLastupdated("05-22-2018");
+		value.setStatus("Y");
+		value.setVnfname("vnf1");
+		value.setVnfversion("1.0");
+
+		Mockito.when(vnfComparisonRepository.getVnfDetails(anyString(), anyString())).thenReturn(value);
+		response.setVnfDetails(vnfDetailslist);
+
+		response = vnfComparisonService.getConfigurationDeatils(vnfVersionNames, vnfId);
+		System.out.println(response);
+		assertNotNull(response);
+		assertEquals(value.getConfiginfo(), exampleJson);
+		assertEquals(value.getVnfid(), vnfId);
+		assertEquals(value.getStatus(), "Y");
+	}
+	
+	@Test
+	public void testgetConfigDeatilsByVnfIdVnfVersion() throws JSONException {
+		VnfCompareResponse response = new VnfCompareResponse();
+		String exampleJson = "{\"vnfname\":\"vnfversion\":[\"vnf1\",\"1.0\"]}";
+		JSONObject vnfVersionNames = new JSONObject("{ \"versionNames\":[\"1.0\",\"2.0\"]  }");
+		// String vnfversion = "{ \"versionNames\":[\"Version-1\"] }";
+		String vnfId = "1a";
+		List<VnfDetails> vnfDetailslist = new ArrayList<VnfDetails>();
+		VnfDetails vnfdetails = new VnfDetails();
+		JSONArray vnfIdArray = vnfVersionNames.getJSONArray("versionNames");
+		VnfConfigDetailsDB value = new VnfConfigDetailsDB();
+		value.setVnfid("1a");
+		value.setConfiginfo(exampleJson);
+		value.setId(1);
+		value.setLastupdated("05-22-2018");
+		value.setStatus("Y");
+		value.setVnfname("vnf1");
+		value.setVnfversion("1.0");
+
+		Mockito.when(vnfComparisonRepository.getVnfDetails(anyString(), anyString())).thenReturn(value);
+		response.setVnfDetails(vnfDetailslist);
+
+		response = vnfComparisonService.getConfigDeatilsByVnfIdVnfVersion(vnfVersionNames, vnfId);
+		System.out.println(response);
+		assertNotNull(response);
+		assertEquals(value.getConfiginfo(), exampleJson);
+		assertEquals(value.getVnfid(), vnfId);
+		assertEquals(value.getStatus(), "Y");
+	}
+
+
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/pom.xml b/sdnc-a1-controller/oam/configbackuprestore/pom.xml
new file mode 100644
index 0000000..270830e
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/pom.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>org.onap.sdnc.oam.vnfbackup</groupId>
+	<artifactId>configbackuprestore</artifactId>
+	<version>1.7.3-SNAPSHOT</version>
+	<name>sdnc-oam :: vnfbackup</name>
+	<packaging>pom</packaging>
+
+	<parent>
+		<groupId>org.onap.ccsdk.parent</groupId>
+		<artifactId>spring-boot-1-starter-parent</artifactId>
+		<version>1.4.3</version>
+	</parent>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+		<!-- ONAP repositories -->
+		<onap.nexus.host>nexus.onap.org</onap.nexus.host>
+		<onap.nexus.port>443</onap.nexus.port>
+		<onap.nexus.protocol>https</onap.nexus.protocol>
+		<onap.nexus.public-url>https://nexus.onap.org/content/groups/public</onap.nexus.public-url>
+		<onap.nexus.staging-url>https://nexus.onap.org/content/groups/staging</onap.nexus.staging-url>
+		<onap.nexus.release-url>https://nexus.onap.org/content/repositories/releases</onap.nexus.release-url>
+		<onap.nexus.snapshot-url>https://nexus.onap.org/content/repositories/snapshots</onap.nexus.snapshot-url>
+		<onap.nexus.staging.server-id>ecomp-staging</onap.nexus.staging.server-id>
+		<onap.nexus.staging.profile-id>176c31dfe190a</onap.nexus.staging.profile-id>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>3.8.1</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+
+	<distributionManagement>
+		<repository>
+			<id>ecomp-releases</id>
+			<url>http://nexus.onap.org/content/repositories/releases</url>
+		</repository>
+		<snapshotRepository>
+			<id>ecomp-snapshots</id>
+			<url>http://nexus.onap.org/content/repositories/snapshots</url>
+		</snapshotRepository>
+	</distributionManagement>
+
+	<modules>
+		<module>getBackupVnfDetailService</module>
+		<module>vnfconfigreportsservice</module>
+		<module>vnfconfigbackupservice</module>
+	</modules>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.jacoco</groupId>
+				<artifactId>jacoco-maven-plugin</artifactId>
+				<version>0.7.5.201505241946</version>
+				<executions>
+
+					<execution>
+						<id>pre-unit-test</id>
+						<goals>
+							<goal>prepare-agent</goal>
+						</goals>
+						<configuration>
+							<destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
+							<propertyName>surefireArgLine</propertyName>
+						</configuration>
+					</execution>
+
+					<execution>
+						<id>post-unit-test</id>
+						<phase>test</phase>
+						<goals>
+							<goal>report</goal>
+						</goals>
+						<configuration>
+							<dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
+							<outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/sdnc-a1-controller/oam/configbackuprestore/read.md b/sdnc-a1-controller/oam/configbackuprestore/read.md
new file mode 100644
index 0000000..3667cd3
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/read.md
@@ -0,0 +1,7 @@
+Pconfigbackuprestore
+---------------------
+It is the parent of bellow services
+
+vnfconfigbackupservice
+getBackupVnfDetailService
+vnfconfigreportsservice
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/pom.xml b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/pom.xml
new file mode 100644
index 0000000..fa85e59
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/pom.xml
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	
+	<modelVersion>4.0.0</modelVersion>
+	
+	<parent>
+		<groupId>org.onap.sdnc.oam.vnfbackup</groupId>
+		<artifactId>configbackuprestore</artifactId>
+		<version>1.7.3-SNAPSHOT</version>
+	</parent>
+	
+	<groupId>org.onap.sdnc.oam.vnfbackup</groupId>
+	<artifactId>vnfconfigbackupservice</artifactId>
+	<version>1.7.3-SNAPSHOT</version>
+	<name>sdnc-oam :: vnfbackup :: vnfconfigbackupservice</name>
+	<url>http://maven.apache.org</url>
+	
+	<dependencies>
+	
+		<dependency>
+			<groupId>org.onap.sdnc.oam.vnfbackup</groupId>
+			<artifactId>getBackupVnfDetailService</artifactId>
+			<version>1.7.3-SNAPSHOT</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>org.onap.sdnc.oam.vnfbackup</groupId>
+			<artifactId>vnfconfigreportsservice</artifactId>
+			<version>1.7.3-SNAPSHOT</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>org.jmockit</groupId>
+			<artifactId>jmockit</artifactId>
+			<version>1.19</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.jmockit</groupId>
+			<artifactId>jmockit-coverage</artifactId>
+			<version>1.19</version>
+			<scope>test</scope>
+		</dependency>
+		
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.9</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>jstl</artifactId>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.mariadb.jdbc</groupId>
+			<artifactId>mariadb-java-client</artifactId>
+			<version>1.1.9</version>
+		</dependency>
+		
+		<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
+		<dependency>
+			<groupId>commons-codec</groupId>
+			<artifactId>commons-codec</artifactId>
+			<version>1.9</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+			<version>1.5.4.RELEASE</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context</artifactId>
+			<version>4.3.9.RELEASE</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-tomcat</artifactId>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.tomcat.embed</groupId>
+			<artifactId>tomcat-embed-jasper</artifactId>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-devtools</artifactId>
+			<optional>true</optional>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+			<version>1.5.3.RELEASE</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-jpa</artifactId>
+		</dependency>
+
+		<!-- Add Log4j2 Dependency -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-log4j2</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.json</groupId>
+			<artifactId>json</artifactId>
+			<version>20180130</version>
+		</dependency>
+		
+		<!-- https://mvnrepository.com/artifact/com.fasterxml/jackson-xml-databind -->
+		<dependency>
+			<groupId>com.fasterxml</groupId>
+			<artifactId>jackson-xml-databind</artifactId>
+			<version>0.6.2</version>
+		</dependency>
+		
+		<dependency>
+		<groupId>org.webjars</groupId>
+			<artifactId>bootstrap</artifactId>
+			<version>3.3.7</version>
+		</dependency>
+
+		<dependency>
+		<groupId>org.webjars</groupId>
+			<artifactId>bootstrap-datepicker</artifactId>
+			<version>1.0.1</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>org.webjars.bower</groupId>
+			<artifactId>angular-object-diff</artifactId>
+			<version>1.0.1</version>
+		</dependency>
+
+	</dependencies>
+
+	<build>
+		<plugins>
+
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<version>2.21.0</version>
+				<configuration>
+					<argLine>-XX:+StartAttachListener</argLine>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/read.md b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/read.md
new file mode 100644
index 0000000..1ac3280
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/read.md
@@ -0,0 +1,13 @@
+vnfconfigbackupservice
+
+---------------------
+
+Need to change in application.properties:
+	- Update properties file based on the Database.
+	e.g-spring.datasource.url=jdbc:mariadb://localhost:3306/DBNAME
+	- Need to change Rest-conf values: 
+	eg.sdnc.rest.vnf.api.host=10.53.172.121
+	   sdnc.rest.vnf.api.port=8282
+	   sdnc.rest.vnf.api.basepath=/restconf
+	   sdnc.rest.vnf.api.username=xxxx
+	   sdnc.rest.vnf.api.password=xxxx
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/config/ApplicationConfiguration.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/config/ApplicationConfiguration.java
new file mode 100644
index 0000000..03d65a6
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/config/ApplicationConfiguration.java
@@ -0,0 +1,49 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.config;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.web.client.RestTemplate;
+
+@SpringBootApplication
+@EnableJpaRepositories("com.onap.sdnc.*")
+@EntityScan("com.onap.sdnc.*")
+@ComponentScan({"com.onap.sdnc.*"})
+@EnableAutoConfiguration
+public class ApplicationConfiguration {
+	private static final Logger logger = LogManager.getLogger(ApplicationConfiguration.class);
+	public static void main(String[] args) {
+		
+		SpringApplication.run(ApplicationConfiguration.class, args);
+		logger.info("SDNC REPORTS API Has Started..");
+	}
+	@Bean
+	public RestTemplate template() {
+		return new RestTemplate();
+	}
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/config/ServletInitializer.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/config/ServletInitializer.java
new file mode 100644
index 0000000..5267262
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/config/ServletInitializer.java
@@ -0,0 +1,32 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.config;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.support.SpringBootServletInitializer;
+
+public class ServletInitializer extends SpringBootServletInitializer {
+
+	@Override
+	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+		return application.sources(ApplicationConfiguration.class);
+	}
+
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/controller/VnfBackupServiceController.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/controller/VnfBackupServiceController.java
new file mode 100644
index 0000000..a04aac7
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/controller/VnfBackupServiceController.java
@@ -0,0 +1,74 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.onap.sdnc.vnfbackupservice.model.VnfServiceResponse;
+import com.onap.sdnc.vnfbackupservice.scheduler.VnfConfigBackupScheduler;
+import com.onap.sdnc.vnfbackupservice.service.VnfbackupService;
+
+@RestController
+public class VnfBackupServiceController {
+
+	@Autowired
+	VnfbackupService vnfbackupService;
+	
+	@Autowired	
+	VnfConfigBackupScheduler vnfConfigBackupScheduler;
+	
+	@RequestMapping("/")
+	ModelAndView home(ModelAndView modelAndView) {
+		modelAndView.setViewName("index");
+		return modelAndView;
+	}
+	
+	@RequestMapping(value="/getAllVnfIds", method=RequestMethod.GET,produces="application/json")
+	public VnfServiceResponse  getAllVnfIds() {
+		return vnfbackupService.getAllVnfDetails();
+	}
+	
+	@RequestMapping(value="/backupVnfconfigById/{vnfId}", method=RequestMethod.GET)
+	public String  getAllVnfIds(@PathVariable("vnfId") String vnfId) {
+		return vnfbackupService.backupVnfconfig(vnfId);		
+	}
+	
+	@RequestMapping(value="/vnf-list/{vnf-Id}", method=RequestMethod.PUT)
+	public String  putOneVnfconfig(@RequestBody String configfile, @PathVariable("vnf-Id") String vnfId) {		
+		String vnfconfigupdated = vnfbackupService.putVnfconfig(configfile,vnfId);		
+		return vnfconfigupdated;
+	}
+	
+	@RequestMapping(value="/backup", method=RequestMethod.GET, produces="application/text")
+	public String backupVnfConfigs() {
+		return "current time:  " + vnfConfigBackupScheduler.initiateBackupService() ;
+	}
+	
+	@RequestMapping(value="/backuptime", method=RequestMethod.GET, produces="application/text")
+	public String lastUpdatedBackuptime() {		
+		return vnfbackupService.updatedBackuptime();
+	}
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/dao/VnfBackupServiceRepo.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/dao/VnfBackupServiceRepo.java
new file mode 100644
index 0000000..7a13233
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/dao/VnfBackupServiceRepo.java
@@ -0,0 +1,68 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.dao;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+import javax.transaction.Transactional;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+
+import com.onap.sdnc.vnfbackupservice.model.VnfConfigDetailsDB;
+
+@Repository
+public interface VnfBackupServiceRepo extends JpaRepository<VnfConfigDetailsDB, Long> {
+
+	@Query(value = "Select * from vnfconfigdetails where vnfid = :vnfid", nativeQuery = true)
+	List<VnfConfigDetailsDB> getVnfDetails(@Param("vnfid") String vnfid);
+	
+	@Query(value = "Select * from vnfconfigdetails where vnfid = :vnfid ORDER BY vnfversion DESC LIMIT 1", nativeQuery = true)
+	VnfConfigDetailsDB getVnfDetail(@Param("vnfid") String vnfid);
+
+	@Modifying
+	@Query(value = "insert into vnfconfigdetails (configinfo,creationdate,lastupdated,status,vnfid,vnfname,vnfversion) VALUES (:configinfo,:creationdate,:lastupdated,:status,:vnfid,:vnfname,:vnfversion)", nativeQuery = true)
+	@Transactional
+	void saveVnfDetails(@Param("configinfo") String configinfo, @Param("creationdate") Timestamp creationDate,
+			@Param("lastupdated") Timestamp lastupdated, @Param("status") int status, @Param("vnfid") String vnfid,
+			@Param("vnfname") String vnfname,@Param("vnfversion") String vnfversion);
+
+	@Query(value = "Select configinfo && vnfversion from vnfconfigdetails where vnfid = :vnfid", nativeQuery = true)
+	List<VnfConfigDetailsDB> getVnfDetailhavingAllVersion(@Param("vnfid") String vnfid);
+
+	@Query(value = "Select backuptime from vnfschedulertime where id=1", nativeQuery = true)
+	String getvnfschedulertime();
+
+	@Modifying
+	@Query(value = "insert into vnfschedulertime(id, backuptime) VALUES (:id, :backuptime)", nativeQuery = true)
+	@Transactional
+	void insertSchedulerTime(@Param("id") int id, @Param("backuptime") String backuptime);
+
+	@Modifying
+	@Query(value = "UPDATE vnfschedulertime SET backuptime =:formatDateTime WHERE id = 1", nativeQuery = true)
+	@Transactional
+	void updateSchedulerTime(@Param("formatDateTime") String formatDateTime);
+	
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/model/VnfConfigDetailsDB.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/model/VnfConfigDetailsDB.java
new file mode 100644
index 0000000..5ac86b3
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/model/VnfConfigDetailsDB.java
@@ -0,0 +1,137 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.model;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedDate;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@Entity
+@Table(name = "vnfconfigdetails", schema = "testreports")
+@JsonIgnoreProperties(value = {"createdAt", "updatedAt"}, 
+	allowGetters = true)
+public class VnfConfigDetailsDB implements Serializable{
+
+	private static final long serialVersionUID = 1L;
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.IDENTITY)
+	private int id;
+	
+	@Column(name = "vnfid")
+	private String vnfid;
+
+	@Column(name = "vnfversion")
+	private String vnfversion;
+
+	@Column(name = "vnfname")
+	private String vnfname;
+
+	@Column(name = "configinfo")
+	@Lob
+	private String configinfo;
+
+	@Column(nullable = false, updatable = false,columnDefinition="DATETIME")
+    @CreatedDate
+	private Timestamp creationdate;
+
+	@Column(nullable = false,columnDefinition="DATETIME")
+    @LastModifiedDate
+	private Timestamp lastupdated;
+	
+	@Column(name = "status")
+	private int status;
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public String getVnfid() {
+		return vnfid;
+	}
+
+	public void setVnfid(String vnfid) {
+		this.vnfid = vnfid;
+	}
+
+	public String getVnfversion() {
+		return vnfversion;
+	}
+
+	public void setVnfversion(String vnfversion) {
+		this.vnfversion = vnfversion;
+	}
+
+	public String getVnfname() {
+		return vnfname;
+	}
+
+	public void setVnfname(String vnfname) {
+		this.vnfname = vnfname;
+	}
+
+	public String getConfiginfo() {
+		return configinfo;
+	}
+
+	public void setConfiginfo(String configinfo) {
+		this.configinfo = configinfo;
+	}
+
+	public Timestamp getCreationdate() {
+		return creationdate;
+	}
+
+	public void setCreationdate(Timestamp creationdate) {
+		this.creationdate = creationdate;
+	}
+	
+	public int getStatus() {
+		return status;
+	}
+
+	public void setStatus(int status) {
+		this.status = status;
+	}	
+
+	public Timestamp getLastupdated() {
+		return lastupdated;
+	}
+
+	public void setLastupdated(Timestamp lastupdated) {
+		this.lastupdated = lastupdated;
+	}
+
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/model/VnfConfigSchedulerTimeStamp.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/model/VnfConfigSchedulerTimeStamp.java
new file mode 100644
index 0000000..a529326
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/model/VnfConfigSchedulerTimeStamp.java
@@ -0,0 +1,55 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "vnfschedulertime", schema = "testreports")
+public class VnfConfigSchedulerTimeStamp {
+
+	@Id
+	@GeneratedValue
+	private int id;
+	
+	@Column(name = "backuptime")
+	private String backuptime;
+
+	public String getBackuptime() {
+		return backuptime;
+	}
+
+	public void setBackuptime(String backuptime) {
+		this.backuptime = backuptime;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/model/VnfDisplayParams.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/model/VnfDisplayParams.java
new file mode 100644
index 0000000..9f0753b
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/model/VnfDisplayParams.java
@@ -0,0 +1,39 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.model;
+
+public class VnfDisplayParams {
+
+	private String vnfName;
+	private String vnfId;
+	
+	public String getVnfName() {
+		return vnfName;
+	}
+	public void setVnfName(String vnfName) {
+		this.vnfName = vnfName;
+	}
+	public String getVnfId() {
+		return vnfId;
+	}
+	public void setVnfId(String vnfId) {
+		this.vnfId = vnfId;
+	}
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/model/VnfServiceResponse.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/model/VnfServiceResponse.java
new file mode 100644
index 0000000..e9c311f
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/model/VnfServiceResponse.java
@@ -0,0 +1,36 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class VnfServiceResponse {
+
+	private List<VnfDisplayParams> vnfDisplayList =  new ArrayList<VnfDisplayParams>();
+
+	public List<VnfDisplayParams> getVnfDisplayList() {
+		return vnfDisplayList;
+	}
+
+	public void setVnfDisplayList(List<VnfDisplayParams> vnfDisplayList) {
+		this.vnfDisplayList = vnfDisplayList;
+	} 
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/scheduler/VnfConfigBackupScheduler.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/scheduler/VnfConfigBackupScheduler.java
new file mode 100644
index 0000000..1336330
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/scheduler/VnfConfigBackupScheduler.java
@@ -0,0 +1,82 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.scheduler;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import com.onap.sdnc.vnfbackupservice.dao.VnfBackupServiceRepo;
+import com.onap.sdnc.vnfbackupservice.model.VnfDisplayParams;
+import com.onap.sdnc.vnfbackupservice.model.VnfServiceResponse;
+import com.onap.sdnc.vnfbackupservice.service.VnfbackupService;
+import com.onap.sdnc.vnfbackupservice.service.VnfbackupServiceImpl;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+@Component
+@EnableScheduling
+public class VnfConfigBackupScheduler {
+	
+	@Autowired
+	VnfbackupService vnfConfigBackService;
+
+	@Autowired
+	VnfBackupServiceRepo vnfBackupServiceDao;
+	
+	private static final Logger logger = Logger.getLogger(VnfbackupServiceImpl.class);
+	
+	@Scheduled(cron = "0 0 * * * *")
+	public String initiateBackupService() {
+		
+		String lastupdatedtime = null;
+		VnfServiceResponse s = vnfConfigBackService.getAllVnfDetails();
+		List<VnfDisplayParams> displayParams = s.getVnfDisplayList();
+		for (VnfDisplayParams params : displayParams) {
+			lastupdatedtime = invokeDetails(params.getVnfId());
+		}
+		return lastupdatedtime;
+	}
+
+	public String invokeDetails(String vnfId) {
+		String formatDateTime = null;
+		try {
+			LocalDateTime now = LocalDateTime.now();
+			DateTimeFormatter format = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
+			formatDateTime = now.format(format);
+			String dbschedulertime = vnfBackupServiceDao.getvnfschedulertime();
+			if (dbschedulertime == null) {
+				int id = 1;
+				vnfBackupServiceDao.insertSchedulerTime(id, formatDateTime);
+			}
+			vnfBackupServiceDao.updateSchedulerTime(formatDateTime);
+		} catch (Exception e) {
+			logger.error(":::::::::exception is at vackupVnfconfig()::::   " + e);
+		}
+		vnfConfigBackService.backupVnfconfig(vnfId);
+		return formatDateTime;
+	}
+
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/scheduler/VnfRestClient.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/scheduler/VnfRestClient.java
new file mode 100644
index 0000000..2af4e08
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/scheduler/VnfRestClient.java
@@ -0,0 +1,58 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.scheduler;
+
+
+import java.util.Arrays;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+
+@Service
+public class VnfRestClient {
+
+	@Autowired
+	private RestTemplate restTemplate;
+
+	public String vnfRestClient(String url, String userName, String password) {
+		restTemplate = new RestTemplate();
+		HttpHeaders headers = new HttpHeaders();
+		HttpEntity<String> entity = new HttpEntity<String>(generateHeaders(headers, userName, password));
+		ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
+		String result = response.getBody();
+		return result;
+	}
+	
+	public HttpHeaders generateHeaders(HttpHeaders headers, String userName, String password) {
+		headers.setAccept(Arrays.asList(new MediaType[] { MediaType.APPLICATION_JSON }));
+		headers.setContentType(MediaType.APPLICATION_JSON);
+		String base64Username = userName + ":" + password;
+		byte[] message = base64Username.getBytes();
+		headers.set("Authorization", "Basic " + java.util.Base64.getEncoder().encodeToString(message));
+		return headers;
+	}
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/service/VnfbackupService.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/service/VnfbackupService.java
new file mode 100644
index 0000000..d7cb1f5
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/service/VnfbackupService.java
@@ -0,0 +1,31 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.service;
+
+import com.onap.sdnc.vnfbackupservice.model.VnfServiceResponse;
+
+public interface VnfbackupService {
+
+	public VnfServiceResponse getAllVnfDetails();
+	public String backupVnfconfig(String vnfId);
+	public String putVnfconfig(String configfile, String vnfId);
+	public String updatedBackuptime();
+	
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/service/VnfbackupServiceImpl.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/service/VnfbackupServiceImpl.java
new file mode 100644
index 0000000..c3c86df
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/java/com/onap/sdnc/vnfbackupservice/service/VnfbackupServiceImpl.java
@@ -0,0 +1,234 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.service;
+
+import java.io.IOException;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.onap.sdnc.vnfbackupservice.dao.VnfBackupServiceRepo;
+import com.onap.sdnc.vnfbackupservice.model.VnfConfigDetailsDB;
+import com.onap.sdnc.vnfbackupservice.model.VnfDisplayParams;
+import com.onap.sdnc.vnfbackupservice.model.VnfServiceResponse;
+
+import com.onap.sdnc.vnfbackupservice.scheduler.VnfConfigBackupScheduler;
+import com.onap.sdnc.vnfbackupservice.scheduler.VnfRestClient;
+
+@Service
+public class VnfbackupServiceImpl implements VnfbackupService {
+
+	@Autowired
+	private RestTemplate restTemplate;
+
+	@Autowired
+	VnfBackupServiceRepo vnfBackupServiceDao;
+
+	@Autowired
+	VnfConfigBackupScheduler vnfConfigBackupScheduler;
+
+	@Value("${sdnc.rest.vnf.api.host}")
+	private String host;
+
+	@Value("${sdnc.rest.vnf.api.port}")
+	private String port;
+
+	@Value("${sdnc.rest.vnf.api.basepath}")
+	private String basePath;
+
+	@Value("${sdnc.rest.vnf.api.username}")
+	private String username;
+
+	@Value("${sdnc.rest.vnf.api.password}")
+	private String password;
+
+	@Autowired
+	VnfRestClient vnfRestClientlocal;
+
+	private static final Logger logger = Logger.getLogger(VnfbackupServiceImpl.class);
+
+	@Override
+	public VnfServiceResponse getAllVnfDetails() {
+		VnfServiceResponse vnfServiceResponse = new VnfServiceResponse();
+		String finalURL = "http://" + host + ":" + port + basePath + "/config/VNF-API:vnfs";
+		String response = vnfRestClientlocal.vnfRestClient(finalURL, username, password);
+		List<VnfDisplayParams> displayParams = parseVnfConfigDetails(response);
+		vnfServiceResponse.setVnfDisplayList(displayParams);
+		return vnfServiceResponse;
+	}
+
+	public List<VnfDisplayParams> parseVnfConfigDetails(String jsonInput) {
+		List<VnfDisplayParams> displayParams = new ArrayList<VnfDisplayParams>();
+
+		try {
+			JSONObject vnf = new JSONObject(jsonInput);
+			JSONArray vnfList = vnf.getJSONObject("vnfs").getJSONArray("vnf-list");
+
+			for (int i = 0; i < vnfList.length(); i++) {
+				VnfDisplayParams vnfDisplayParams = new VnfDisplayParams();
+				String responseStatus = vnfList.getJSONObject(i).getJSONObject("service-status").get("response-code")
+						.toString();
+				if ("200".equalsIgnoreCase(responseStatus)) {
+					String vnfId = vnfList.getJSONObject(i).get("vnf-id").toString();
+					String vnfName = vnfList.getJSONObject(i).getJSONObject("service-data")
+							.getJSONObject("vnf-request-information").get("vnf-name").toString();
+					vnfDisplayParams.setVnfId(vnfId);
+					vnfDisplayParams.setVnfName(vnfName);
+					displayParams.add(vnfDisplayParams);
+				}
+			}
+		} catch (JSONException e) {
+			logger.error("Exception is at parseVnfConfigDetails() :  " + e);
+		}
+		return displayParams;
+	}
+
+	@Override
+	public String backupVnfconfig(String vnfId) {
+		long millis = System.currentTimeMillis();
+		Timestamp date = new java.sql.Timestamp(millis);
+		String finalURL = "http://" + host + ":" + port + basePath + "/config/VNF-API:vnfs/vnf-list/" + vnfId;
+		logger.debug("connecting to restconf device:::" + finalURL);
+		String response = vnfRestClientlocal.vnfRestClient(finalURL, username, password);
+		String configInfo = response;
+		Timestamp creationDate = date;
+		Timestamp lastupdated = date;
+		int status = 1;
+		String vnfid = vnfId;
+		String vnfname = "";
+		VnfConfigDetailsDB getVnfDetails = null;
+		String vnfversion = "Version-1";
+		try {
+			getVnfDetails = vnfBackupServiceDao.getVnfDetail(vnfId);
+		} catch (Exception e) {
+			logger.error("exception is at getVnfdetails() :  " + e);
+		}
+		if (getVnfDetails == null) {
+			JSONObject vnf;
+			try {
+				vnf = new JSONObject(response);
+				vnfname = vnf.getJSONArray("vnf-list").getJSONObject(0).getJSONObject("service-data")
+						.getJSONObject("vnf-request-information").get("vnf-name").toString();
+
+			} catch (JSONException e) {
+				logger.error("exception is at getVnfdetails() :  " + e);
+			}
+			vnfBackupServiceDao.saveVnfDetails(configInfo, creationDate, lastupdated, status, vnfid, vnfname,
+					vnfversion);
+		} else {
+			try {
+				String[] vnfvesionsplit = getVnfDetails.getVnfversion().split("-");
+				int tmpVnfversion = Integer.parseInt(vnfvesionsplit[1]) + 1;
+				vnfversion = vnfvesionsplit[0] + "-" + String.valueOf(tmpVnfversion);
+
+				ObjectMapper om = new ObjectMapper();
+				try {
+					Map<String, Object> m1 = (Map<String, Object>) (om.readValue(getVnfDetails.getConfiginfo(),
+							Map.class));
+					Map<String, Object> m2 = (Map<String, Object>) (om.readValue(response, Map.class));
+
+					JSONObject vnf;
+					vnf = new JSONObject(response);
+					vnfname = vnf.getJSONArray("vnf-list").getJSONObject(0).getJSONObject("service-data")
+							.getJSONObject("vnf-request-information").get("vnf-name").toString();
+
+					if (!m1.equals(m2)) {
+						vnfBackupServiceDao.saveVnfDetails(configInfo, creationDate, lastupdated, status, vnfid,
+								vnfname, vnfversion);
+					}
+				} catch (Exception e) {
+					logger.error("exception is at getVnfdetails() :  " + e);
+				}
+			} catch (Exception e) {
+				logger.error("exception is at getVnfdetails() :  " + e);
+			}
+		}
+		return "success";
+	}
+
+	@Override
+	public String putVnfconfig(String configfile, String vnfId) {
+
+		String indented = null;
+
+		if (configfile != null) {
+			restTemplate = new RestTemplate();
+			String finalURL = "http://" + host + ":" + port + basePath + "/config/VNF-API:vnfs/vnf-list/" + vnfId;
+
+			HttpHeaders headers = new HttpHeaders();
+
+			logger.info("connecting to restconf device:::" + finalURL);
+			String response = vnfRestClientlocal.vnfRestClient(finalURL, username, password);
+			logger.info(response);
+			ObjectMapper mapper = new ObjectMapper();
+			try {
+				Object json = mapper.readValue(response, Object.class);
+				indented = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(json);
+				logger.info(indented);
+			} catch (JsonParseException e) {
+				logger.error("exception occer" + e);
+			} catch (JsonMappingException e) {
+				logger.error("exception occer" + e);
+			} catch (IOException e) {
+				logger.error("exception occer" + e);
+			}
+
+			if (!(configfile.equals(indented))) {
+				HttpEntity<String> requestEntity = new HttpEntity<String>(configfile,
+						vnfRestClientlocal.generateHeaders(headers, username, password));
+
+				ResponseEntity<String> uri = restTemplate.exchange(finalURL, HttpMethod.PUT, requestEntity,
+						String.class);
+				logger.info(uri.getStatusCode());
+				if (uri.getStatusCodeValue() == 200) {
+					vnfConfigBackupScheduler.initiateBackupService();
+				}
+				return "ok";
+			} else {
+				throw new RuntimeException("Both configurations are same");
+			}
+		}
+		return "ok";
+	}
+
+	@Override
+	public String updatedBackuptime() {
+		String sdtime = vnfBackupServiceDao.getvnfschedulertime();
+		return sdtime;
+	}
+
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/resources/application.properties b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/resources/application.properties
new file mode 100644
index 0000000..aee97f8
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/resources/application.properties
@@ -0,0 +1,33 @@
+server.port = 9003
+
+spring.mvc.view.prefix = /WEB-INF/views/
+spring.mvc.view.suffix = .jsp
+
+sdnc.rest.vnf.api.host=10.53.172.134
+sdnc.rest.vnf.api.port=8282
+sdnc.rest.vnf.api.basepath=/restconf
+sdnc.rest.vnf.api.username=admin
+sdnc.rest.vnf.api.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+
+# ===============================
+# Set here configurations for the database connection
+spring.datasource.url=jdbc:mariadb://localhost:3306/configtest
+spring.datasource.username=root
+spring.datasource.password=root
+spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
+# Keep the connection alive if idle for a long time (needed in production)
+spring.datasource.testWhileIdle=true
+spring.datasource.validationQuery=SELECT 1
+# ===============================
+# = JPA / HIBERNATE
+# ===============================
+# Show or not log for each sql query
+spring.jpa.show-sql=true
+# Hibernate ddl auto (create, create-drop, update): with "create-drop" the database
+# schema will be automatically created afresh for every start of application
+spring.jpa.hibernate.ddl-auto=update
+# Naming strategy
+spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyHbmImpl
+spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
+# Allows Hibernate to generate SQL optimized for a particular DBMS
+spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/resources/log4j2.xml b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..e443b52
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/resources/log4j2.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="WARN" monitorInterval="30">
+    <Properties>
+        <Property name="LOG_PATTERN">
+            %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${hostName} --- [%15.15t] %-40.40c{1.} : %m%n%ex
+        </Property>
+    </Properties>
+    <Appenders>
+        
+        <!-- <Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
+            <PatternLayout pattern="${LOG_PATTERN}"/>
+        </Console> -->
+        
+	        <!-- Rolling File Appender -->
+	<RollingFile name="FileAppender" fileName="logs/sdnc_report_api.log" 
+	             filePattern="logs/sdnc_report_api-%d{yyyy-MM-dd}-%i.log">
+	    <PatternLayout>
+	        <Pattern>${LOG_PATTERN}</Pattern>
+	    </PatternLayout>
+	    <Policies>
+	        <SizeBasedTriggeringPolicy size="10MB" />
+	    </Policies>
+	    <DefaultRolloverStrategy max="10"/>
+	</RollingFile>
+        
+    </Appenders>
+    
+    <Loggers>
+        <Logger name="com.onap.sdnc.reports" level="debug" additivity="false">
+            <AppenderRef ref="FileAppender" />
+        </Logger>
+ 
+	 	<Root level="debug">
+	            <!-- <AppenderRef ref="ConsoleAppender" /> -->
+	            <AppenderRef ref="FileAppender"/>
+	   </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/WEB-INF/views/index.jsp b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/WEB-INF/views/index.jsp
new file mode 100644
index 0000000..95b6414
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/WEB-INF/views/index.jsp
@@ -0,0 +1,73 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * Licensed under the Apache License, Version 2.0 (the "License");
+   * you may not use this file except in compliance with the License.
+   * You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License.
+   * ============LICENSE_END=========================================================
+   */
+    -->
+<!-- index.html -->
+<!DOCTYPE html>
+<html ng-app="myApp">
+   <head>
+      <meta charset="utf-8">
+      <!-- CSS -->
+      <script src="./node_modules/jquery.min.js"></script>
+      <script src="./node_modules/tether.min.js" ></script>
+      <link rel="stylesheet" href="./webjars/bootstrap/3.3.7/css/bootstrap.min.css">
+      <script src="./webjars/bootstrap/3.3.7/js/bootstrap.min.js"></script>
+      <link rel="stylesheet" href="/static/style/sdnc-style.css">
+      <!-- JS -->
+      <!-- load angular,date-time picker,pagination,growl and ui-router -->
+      <script src = "./node_modules/angular.min.js"></script>
+      <script src = "./node_modules/angular-route.min.js"></script>
+      <script src="./node_modules/angular-utils-pagination/dirPagination.js"></script>
+      <script src="./node_modules/ng-csv/build/ng-csv.min.js"></script>     
+      <script src="./node_modules/angular-sanitize.min.js"></script>
+      <link rel="stylesheet" href="./node_modules/angularjs-datetime-picker/angularjs-datetime-picker.css" />
+      <script src="./node_modules/angularjs-datetime-picker/angularjs-datetime-picker.js"></script>
+      <script data-require="jquery@*" data-semver="2.1.4" src="https://code.jquery.com/jquery-2.1.4.js"></script>
+      <script src="./node_modules/angular-utils-pagination/dirPagination.js"></script>
+      <script src="./js/app.js"></script>
+      <script src="./js/sdnc-controller/sdnc-viewreport-controller.js"></script>
+      <script src="./js/sdnc-controller/sdnc-validationTest-controller.js"></script>
+      <script src="./js/sdnc-services/sdnc-viewReport-service.js"></script>
+      <script src="./js/sdnc-services/sdnc-validationTest-service.js"></script>
+      <script src="./js/sdnc-controller/sdnc-backupConfig-controller.js"></script>
+      <script src="./js/sdnc-controller/sdnc-applyConfig-controller.js"></script>
+      <script src="./js/sdnc-controller/sdnc-compareConfig-controller.js"></script>
+      <script src="./js/sdnc-services/sdnc-compareConfig-service.js"></script>
+      <script src="./node_modules/angular-growl-v2/build/angular-growl.min.js" ></script>
+      <script src="./node_modules/ng-ip-address/ngIpAddress.min.js" ></script>
+      <link rel="stylesheet" type="text/css" href="./node_modules/angular-growl-v2/build/angular-growl.css">
+      <link rel="stylesheet" href="/static/style/w3.css">
+      <link type="text/css" href="./webjars/angular-object-diff/1.0.1/dist/angular-object-diff.css" rel='stylesheet'>
+      <script type="text/javascript" src="/webjars/angular-object-diff/1.0.1/dist/angular-object-diff.js"></script>
+   </head>
+   <!-- apply our angular app -->
+   <body>
+   <div class="container">
+      <!-- header page -->
+   <div ng-include="'static/views/header.html'"></div>
+      <div style="border-style:ridge;height:auto;">          
+         <div ng-include="'static/views/tabs.html'" ></div>
+         <!-- views will be injected here -->
+         <div ng-view></div>
+      </div>
+      <!-- footer page -->
+       <div ng-include="'static/views/footer.html'" ></div>
+       </div>
+   </body>
+</html>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/app.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/app.js
new file mode 100644
index 0000000..109baec
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/app.js
@@ -0,0 +1,68 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+
+// app.js This is first entry point for the application
+// =============================================================================
+var myApp = angular.module('myApp', ['ngRoute', 'ngSanitize', 'ngCsv', 'angularUtils.directives.dirPagination', 'angular-growl','ng-ip-address','ds.objectDiff']);
+
+myApp.config(['growlProvider',function(growlProvider) {
+    growlProvider.globalDisableCloseButton(false);
+}]);
+
+
+// configuring our routes 
+// =============================================================================
+myApp.config(['$routeProvider', function($routeProvider) {
+
+	//Called when user select pre validation test from the UI
+    $routeProvider.
+    when('/testReportsById', {
+        templateUrl: 'static/views/form-viewReportById.html',
+        controller: 'ReportController'
+    }).
+    when('/', {
+        templateUrl: 'static/views/form-viewReport.html',
+        controller: 'ReportController'
+    }).
+  //Called when user select view test report from the UI
+    when('/testReports', {
+        templateUrl: 'static/views/form-viewReport.html',
+        controller: 'ReportController'
+    }).
+    when('/deviceConfig', {
+        templateUrl: 'static/views/form-backupConfig.html',
+        controller: 'BackupConfigCtrl'
+    }).
+    when('/applyConfig', {
+        templateUrl: 'static/views/form-applyConfig.jsp',
+        controller: 'ApplyConfigCtrl'
+    }).
+    when('/compareConfig', {
+        templateUrl: 'static/views/form-compareConfig.html',
+        controller: 'CompareConfigCtrl'
+    }).
+    otherwise({
+        redirectTo: 'static/views/form-viewReport.html'
+    });
+}]);
+
+
+myApp.constant('CERTIFICATION_API_BASE', 'http://myapp.production.com/');
+myApp.constant('VNF_API_BASE', 'http://myapp.production.com/');
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-applyConfig-controller.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-applyConfig-controller.js
new file mode 100644
index 0000000..ed6733e
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-applyConfig-controller.js
@@ -0,0 +1,106 @@
+myApp.controller('ApplyConfigCtrl', ['$scope','$window', '$http', 'growl', 'deviceConfigService', 'ObjectDiff', function($scope, $http,$window, growl, deviceConfigService, ObjectDiff) {
+
+    $scope.showResult = false;
+
+    //THIS FUNCTION WILL BE CALLED ON PAGE LOAD
+    $scope.getAllVNFFromRc = function() {
+
+        deviceConfigService.getAllVnfIds().then(function(data) {
+            if (data != null) {
+                console.log(data);
+                $scope.objvnfList= data['vnfDisplayList'];
+             console.log("CompareConfigCtrl:getAllVNFFromRc called" + $scope.objvnfList);
+            } else {
+                $scope.warningMessage = "No VNF is eligible for configuration!!!";
+                growl.error($scope.warningMessage, {
+                    title: 'Warning!',
+                    globalDisableCloseButton: false,
+                    ttl: 7000,
+                    disableCountDown: true  
+                });
+            }
+        });
+    };
+   $scope.getAllVNFFromRc();
+   
+   
+   $scope.ShowResult=false;
+   $scope.selectVnf = function(selectedValueVnf) {
+	   if (selectedValueVnf != null && selectedValueVnf != "") {
+		   $scope.ShowResult=true;
+   	var vnfId = selectedValueVnf;
+   		$scope.successMessagebool1 = false;
+   		$scope.fileContent = '';
+   	    $scope.fileSize = 0;
+   	    $scope.fileName = '';
+   	   
+   	    $scope.submit = function () {
+   	      var file = document.getElementById("myFileInput").files[0];
+   	    $scope.result1={}; 
+   	      if (file) {
+   	        var aReader = new FileReader();
+   	        aReader.readAsText(file, "UTF-8");
+   	        aReader.onload = function (evt) {
+   	            $scope.fileName = document.getElementById("myFileInput").files[0].name;
+   	            $scope.fileSize = document.getElementById("myFileInput").files[0].size;
+   	            var id= vnfId;
+   	             result1=JSON.parse(aReader.result);
+   	            $scope.fileContent = aReader.result.search(id);
+   	            $scope.successMessagebool = false;
+   	        if(  $scope.fileContent == -1){
+   	        	  $scope.errorMessage = "VNF Id is different!!! Select different file and try again";
+   	              growl.error($scope.errorMessage, {
+   	                  title: 'Error!',
+   	                  globalDisableCloseButton: false,
+   	                 ttl: 7000,
+   	                 disableCountDown: true  
+   	              });
+   	            }
+   	        else{	
+   	         $scope.apply();
+   	        }
+   	           }
+   	        aReader.onerror = function (evt) {
+   	            $scope.fileContent = "error";
+   	        }
+   	       
+   	      }else{
+ 	        	$scope.errorMessage = "Please select file!!!!";
+	              growl.error($scope.errorMessage, {
+	                  title: 'Error!',
+	                  globalDisableCloseButton: false,
+	                 ttl: 7000,
+	                 disableCountDown: true  
+	              });
+ 	        }
+   	 
+   	       $scope.apply = function() {
+   	          if (file) {
+   	        	  deviceConfigService.runApplyconfig(vnfId,result1);
+   	        	$scope.successMessage = "File uploaded successfully";
+	              growl.success($scope.successMessage, {
+	                  title: 'Success!',
+	                  globalDisableCloseButton: false,
+	                  ttl: 7000,
+	                  disableCountDown: true  
+	             }); 
+ 	            $scope.successMessagebool1 = true;
+   	          }  };
+   	    
+   	    }; } else {
+            $scope.ShowResult = false;
+            $scope.showCompare = false;
+            $scope.showResult = false;
+            $scope.errorMessage = "Please select a VNF!!!";
+            growl.error($scope.errorMessage, {
+                title: 'Error!',
+                globalDisableCloseButton: false,
+                ttl: 7000,
+                disableCountDown: true  
+            });
+        }
+   	    
+   	      };
+   
+   
+}]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-backupConfig-controller.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-backupConfig-controller.js
new file mode 100644
index 0000000..3ea9c75
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-backupConfig-controller.js
@@ -0,0 +1,314 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC-FEATURES
+ * ================================================================================
+ * Copyright 2018 TechMahindra
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+myApp.controller('BackupConfigCtrl', ['$scope', '$http','$window', 'growl', 'deviceConfigService', 'ObjectDiff', '$timeout' , function($scope, $http, $window, growl, deviceConfigService, ObjectDiff, $timeout) {
+
+    $scope.showResult = false;
+    $scope.showCompare = false;
+
+    //THIS FUNCTION WILL BE CALLED ON PAGE LOAD
+    $scope.getAllVNF = function() {
+
+        deviceConfigService.getAllVNF().then(function(data) {
+            if (data != null) {
+                console.log(data);
+                $scope.objvnfList = data;
+                console.log("CompareConfigCtrl:getAllVNF called" + $scope.objvnfList);
+            } else {
+                $scope.warningMessage = "No VNF is eligible for configuration!!!";
+                growl.error($scope.warningMessage, {
+                    title: 'Warning!',
+                    globalDisableCloseButton: false,
+                    ttl: 7000,
+                    disableCountDown: true  
+                });
+            }
+        });
+    };
+    $scope.getAllVNF();
+
+    $scope.selectVnf = function(selectedValueVnf) {
+
+        if (selectedValueVnf != null && selectedValueVnf != "") {
+            console.log("selectedvnf Value", selectedValueVnf);
+            //selectedItem = selectedValueVnf.split("%");
+//            var vnfName = selectedItem[0];
+//            var vnfType = selectedItem[1];
+            var vnfId = selectedValueVnf;
+            $scope.getVersionList(vnfId);
+        } else {
+            $scope.ShowResult = false;
+            $scope.showCompare = false;
+            $scope.showResult = false;
+            $scope.errorMessage = "Please select a VNF!!!";
+            growl.error($scope.errorMessage, {
+                title: 'Error!',
+                globalDisableCloseButton: false,
+                ttl: 7000,
+                disableCountDown: true  
+            });
+        }
+        
+    }
+
+    //THIS FUNCTION WILL BE CALLED ON SELECTION OF VNF
+    $scope.getVersionList = function(vnfId) {
+
+        $scope.ShowResult = false;
+
+        //service call to fetch the version list
+        deviceConfigService.getVersions(vnfId).then(function(result) {
+                console.log("--CompareConfigCtrl::getVersionList called from controler--", JSON.stringify(result));
+                var status = result.status;
+                var result = result.data;
+                if (status == 200) {
+                    if (result.length >= 1) {
+                        //in case of success, build the model object to store the service output here
+                        $scope.createVersionModel(result);
+                    } else {
+                        $scope.ShowResult = false;
+                        $scope.warningMessage = "No configruation found for the selected VNF !!";
+                        growl.warning($scope.warningMessage, {
+                            title: 'Warning!',
+                            globalDisableCloseButton: false,
+                            ttl: 7000,
+                            disableCountDown: true  
+                        });
+                    }
+                } else {
+                    $scope.ShowResult = false;
+                    $scope.warningMessage = "No configruation found for the selected VNF !!";
+                    growl.warning($scope.warningMessage, {
+                        title: 'Warning!',
+                        globalDisableCloseButton: false,
+                        ttl: 7000,
+                        disableCountDown: true  
+                    });
+                }
+            },
+            function(response) {
+                $scope.errorMessage = "Something went wrong, Please try again !!";
+                growl.error($scope.errorMessage, {
+                    title: 'Error!',
+                    globalDisableCloseButton: false,
+                    ttl: 7000,
+                    disableCountDown: true  
+                });
+                console.log("--CompareConfigCtrl::getVersionList::Error--", response);
+            });
+    }
+
+    //Function to build the UI model to be shown
+    $scope.createVersionModel = function(result) {
+
+        $scope.objVersionModel = result;
+        $scope.objVersion = [];
+
+        console.log("--CompareConfigCtrl::createVersionModel::--", JSON.stringify($scope.objVersionModel));
+        if ($scope.objVersionModel.length >= 1) {
+            $scope.ShowResult = true;
+            $scope.showCompare = true;
+            for (var i = 0; i < $scope.objVersionModel.length; i++) {
+                var objVersionDetail = {};
+                objVersionDetail.vnfname = $scope.objVersionModel[i].vnfname;
+                objVersionDetail.vnfid = $scope.objVersionModel[i].vnfid;
+                objVersionDetail.versionNo = $scope.objVersionModel[i].vnfversion;
+                objVersionDetail.createdAt = $scope.objVersionModel[i].creationdate;
+                objVersionDetail.configinfo = $scope.objVersionModel[i].configinfo;
+                objVersionDetail.selected = false;
+                
+                $scope.objVersion.push(objVersionDetail);
+            }
+        }
+        console.log("--CompareConfigCtrl::createVersionModel::final VersionModel--" + JSON.stringify($scope.objVersion));
+
+    }
+
+    $scope.CompareConfig = function(objVersion) {
+        var count = 0;
+        angular.forEach(objVersion, function(item) {
+            if (item.selected == true) 
+                count++;
+        });
+        if (count > 2) {
+            $scope.errorMessage = "Only two config files can be selected for the comparison!!!";
+            growl.error($scope.errorMessage, {
+                title: 'Error!',
+                globalDisableCloseButton: false,
+                ttl: 7000,
+                disableCountDown: true  
+            });
+        } else if (count === 1){
+        	 $scope.errorMessage = "At least two config files can be selected for the comparison!!!";
+             growl.error($scope.errorMessage, {
+                 title: 'Error!',
+                 globalDisableCloseButton: false,
+                 ttl: 7000,
+                 disableCountDown: true  
+             });
+        }else
+            $scope.createCompareModelNew(objVersion);
+    };
+
+    $scope.createCompareModelNew = function(objVersion) {
+
+        $scope.objCompareModel1 = {};
+        $scope.objCompareModel2 = {};
+
+        $scope.versionsSelected = [];
+        angular.forEach(objVersion, function(item) {
+            angular.forEach($scope.objVersionModel, function(val, index) {
+                if (item.versionNo == val['versionNo'] && item.selected == false) {
+                    $scope.objVersionModel.splice(index, 1);
+                }
+                if (item.selected) {
+                    if ($scope.versionsSelected.indexOf(item) == -1)
+                        $scope.versionsSelected.push(item);
+                }
+            })
+        });
+        console.log("--CompareConfigCtrl::createCompareModel::$scope.objVersionModel", JSON.stringify($scope.objVersionModel));
+        angular.forEach($scope.objVersionModel, function(item) {
+            var versionObj = {};
+            var versionDetails = {};
+            versionDetails.versionNo = item['vnfversion'];
+            /*versionDetails.vnfName = item['vnfname'];
+            versionDetails.vnfid = item['vnfid'];*/
+            versionDetails.timeStamp = item.creationdate;
+            versionObj.versionDetails = versionDetails;
+
+            //fetch all the other topology/network,opertaion status for the vnf
+           // versionObj.topologyInfo = $scope.fetchConfigDetails(item);
+            versionObj.topologyInfo = $scope.fetchTopologyInfo(item);
+            	
+            versionObj.networkTopologyInfo = $scope.fetchNetworkTopologyInfo(item);
+            versionObj.operationStatus = $scope.operationStatus(item);
+            versionObj.vnfTopologyIdentifier = $scope.vnfTopologyIdentifier(item);
+
+            if ((versionObj.versionDetails.versionNo == $scope.versionsSelected[0].versionNo)) {
+                $scope.objCompareModel1 = versionObj;
+            } else
+                $scope.objCompareModel2 = versionObj;
+
+        });
+        $scope.showResult = true;
+        console.log("CompareConfigCtrl::createCompareModel::objCompareModel1", JSON.stringify($scope.objCompareModel1));
+        console.log("CompareConfigCtrl::createCompareModel::objCompareModel2", JSON.stringify($scope.objCompareModel2));
+    }
+    
+    
+
+    $scope.fetchTopologyInfo = function(item) {
+        var topologyInfo = {};
+        item = JSON.parse(item.configinfo);
+        if (angular.isDefined(item['preload-data']) && angular.isDefined(item['preload-data']['vnf-topology-information'])) {
+            var vnfTopologyInfo = item['preload-data']['vnf-topology-information'];
+            if (angular.isDefined(vnfTopologyInfo['vnf-parameters'] && vnfTopologyInfo['vnf-parameters'] != null)) {
+                var vnfParameters = vnfTopologyInfo['vnf-parameters'];
+                for (var i = 0; i < vnfParameters.length; i++) {
+
+                    var key = vnfParameters[i]['vnf-parameter-name'];
+                    var value = vnfParameters[i]['vnf-parameter-value'];
+                    console.log("CompareConfigCtrl::fetchTopologyInfo::key", key);
+                    console.log("CompareConfigCtrl::fetchTopologyInfo::value", value);
+                    topologyInfo[key] = value;
+
+                }
+                console.log("CompareConfigCtrl::fetchTopologyInfo::", JSON.stringify(topologyInfo));
+                return topologyInfo;
+            }
+        }
+    }
+    
+    $scope.fetchNetworkTopologyInfo = function(item) {
+        var networkTopology = {};
+        item = JSON.parse(item.configinfo);
+        if (angular.isDefined(item['preload-data']) && angular.isDefined(item['preload-data']['network-topology-information'])) {
+            var netwrokTopologyInfo = item['preload-data']['network-topology-information'];
+            if (angular.isDefined(netwrokTopologyInfo) && netwrokTopologyInfo != null) {
+                for (var i = 0; i < netwrokTopologyInfo.length; i++) {
+
+                    var key = netwrokTopologyInfo[i]['vnf-parameter-name'];
+                    var value = netwrokTopologyInfo[i]['vnf-parameter-value'];
+                    console.log("CompareConfigCtrl::fetchTopologyInfo::key", key);
+                    console.log("CompareConfigCtrl::fetchTopologyInfo::value", value);
+                    networkTopology[key] = value;
+                }
+            }
+        }
+        console.log("CompareConfigCtrl::fetchNetworkTopologyInfo::", JSON.stringify(networkTopology));
+        return networkTopology;
+    }
+    
+    $scope.operationStatus = function(item) {
+        var operationStatus = {};
+        item = JSON.parse(item.configinfo);
+        if (angular.isDefined(item['preload-data']) && angular.isDefined(item['preload-data']['oper-status'])) {
+            var operStatus = item['preload-data']['oper-status'];
+            if (angular.isDefined(operStatus) && operStatus != null) {
+
+                var value = operStatus['order-status'];
+                operationStatus['order-status'] = value;
+
+            }
+        }
+        console.log("CompareConfigCtrl::operationStatus::", JSON.stringify(operationStatus));
+        return operationStatus;
+    }
+    
+    $scope.vnfTopologyIdentifier = function(item) {
+        var topologyIdnetifier = {};
+        item = JSON.parse(item.configinfo);
+        if (angular.isDefined(item['preload-data']) && angular.isDefined(item['preload-data']['vnf-topology-information']['vnf-topology-identifier'])) {
+            var topologyInfoidentifier = item['preload-data']['vnf-topology-information']['vnf-topology-identifier'];
+            if (angular.isDefined(topologyInfoidentifier)) {
+                angular.forEach(topologyInfoidentifier, function(value, key) {
+
+                    console.log("CompareConfigCtrl::fetchTopologyInfo::key", key);
+                    console.log("CompareConfigCtrl::fetchTopologyInfo::value", value);
+                    topologyIdnetifier[key] = value;
+                });
+            }
+        }
+
+        console.log("CompareConfigCtrl::vnfTopologyIdentifier::", JSON.stringify(topologyIdnetifier));
+        return topologyIdnetifier;
+    }
+    
+    $scope.invokeBackup = function(){
+    	deviceConfigService.invokeBackup().then(function(data) {
+    		console.log("response -- data -- "+data)
+    		$window.location.reload();
+    	});
+    }
+    
+    $scope.getLastModifiedTime=function(){
+//    	$timeout(function(result){
+//    		console.log("response-data-"+ result);
+//    		$scope.lastModifiedTime="Testcode Dushyant"
+//    	}
+//    ,5000);
+    	
+    	deviceConfigService.getlastupdated().then(function(result) {
+    		$scope.lastModifiedTime= result.data;
+    		console.log("response -- getlastupdated -- "+JSON.stringify(result))
+    	});
+    }
+    $scope.getLastModifiedTime()
+}]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-compareConfig-controller.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-compareConfig-controller.js
new file mode 100644
index 0000000..9884862
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-compareConfig-controller.js
@@ -0,0 +1,689 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC-FEATURES
+ * ================================================================================
+ * Copyright 2018 TechMahindra
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+myApp.controller('CompareConfigCtrl', ['$scope','$filter', '$http','$window', 'growl', 'deviceConfigService', 'ObjectDiff', function($scope,$filter, $http,$window, growl, deviceConfigService, ObjectDiff) {
+
+    $scope.showResult = false;
+    $scope.showCompare = false;
+  $scope.showView=false;
+  $scope.pagination = false;
+  $scope.gap = 2;
+	$scope.filteredItems = [];
+	$scope.groupedItems = [];
+	$scope.itemsPerPage = 5;
+	$scope.pagedItems = [];
+	$scope.currentPage = 0;
+	$scope.version1=false;
+	$scope.version2=false;
+	$scope.version3=false;
+	$scope.version4=false;
+    //THIS FUNCTION WILL BE CALLED ON PAGE LOAD
+    $scope.getAllVNF = function() {
+
+        deviceConfigService.getAllVNF().then(function(data) {
+            if (data != null) {
+                console.log(data);
+                $scope.objvnfList = data;
+                console.log("CompareConfigCtrl:getAllVNF called" + $scope.objvnfList);
+            } else {
+                $scope.warningMessage = "No VNF is eligible for configuration!!!";
+                growl.error($scope.warningMessage, {
+                    title: 'Warning!',
+                    globalDisableCloseButton: false,
+                    ttl: 7000,
+                    disableCountDown: true  
+                });
+            }
+        });
+    };
+    $scope.getAllVNF();
+
+    $scope.selectVnf = function(selectedValueVnf) {
+
+        if (selectedValueVnf != null && selectedValueVnf != "") {
+            console.log("selectedvnf Value", selectedValueVnf);
+            var vnfId = selectedValueVnf;
+            $scope.getVersionList(vnfId);
+        } else {
+            $scope.ShowResult = false;
+            $scope.showCompare = false;
+            $scope.showResult = false;
+            $scope.errorMessage = "Please select a VNF!!!";
+            growl.error($scope.errorMessage, {
+                title: 'Error!',
+                globalDisableCloseButton: false,
+                ttl: 7000,
+                disableCountDown: true  
+            });
+        }
+
+    }
+
+    //THIS FUNCTION WILL BE CALLED ON SELECTION OF VNF
+    $scope.getVersionList = function(vnfId) {
+
+        $scope.ShowResult = false;
+
+        //service call to fetch the version list
+        deviceConfigService.getVersions(vnfId).then(function(result) {
+                console.log("-----CompareConfigCtrl::getVersionList called from controler--", JSON.stringify(result));
+                var status = result.status;
+                var result = result.data;
+                if (status == 200) {
+                    if (result.length >= 1) {
+                        //in case of success, build the model object to store the service output here
+                        $scope.createVersionModel(result);
+                        
+                    } else {
+                        $scope.ShowResult = false;
+                        $scope.warningMessage = "No configruation found for the selected VNF !!";
+                        growl.warning($scope.warningMessage, {
+                            title: 'Warning!',
+                            globalDisableCloseButton: false,
+                            ttl: 7000,
+                            disableCountDown: true  
+                        });
+                    }
+                } else {
+                    $scope.ShowResult = false;
+                    $scope.warningMessage = "No configruation found for the selected VNF !!";
+                    growl.warning($scope.warningMessage, {
+                        title: 'Warning!',
+                        globalDisableCloseButton: false,
+                        ttl: 7000,
+                        disableCountDown: true  
+                    });
+                }
+            },
+            function(response) {
+                $scope.errorMessage = "Something went wrong, Please try again !!";
+                growl.error($scope.errorMessage, {
+                    title: 'Error!',
+                    globalDisableCloseButton: false,
+                    ttl: 7000,
+                    disableCountDown: true  
+                });
+                console.log("--CompareConfigCtrl::getVersionList::Error--", response);
+            });
+    }
+
+    //Function to build the UI model to be shown
+    $scope.createVersionModel = function(result) {
+
+        $scope.objVersionModel = result;
+        $scope.objVersion = [];
+
+        console.log("-----CompareConfigCtrl::createVersionModel::--", JSON.stringify($scope.objVersionModel));
+        if ($scope.objVersionModel.length >= 1) {
+            $scope.ShowResult = true;
+            $scope.showCompare = true;
+            $scope.showView =true;
+            for (var i = 0; i < $scope.objVersionModel.length; i++) {
+                var objVersionDetail = {};
+                objVersionDetail.vnfname = $scope.objVersionModel[i].vnfname;
+                objVersionDetail.vnfid = $scope.objVersionModel[i].vnfid;
+                objVersionDetail.vnfversion = $scope.objVersionModel[i].vnfversion;
+                objVersionDetail.createdAt = $scope.objVersionModel[i].creationdate;
+                objVersionDetail.updatedAt = $scope.objVersionModel[i].lastupdated;
+                objVersionDetail.configinfo = $scope.objVersionModel[i].configinfo;
+                objVersionDetail.selected = false;
+                $scope.objVersion.push(objVersionDetail);
+                
+            }
+        }
+        console.log("-----CompareConfigCtrl::createVersionModel::final VersionModel--" + JSON.stringify($scope.objVersion));
+    
+     // init
+		$scope.sort = {
+			sortingOrder : 'vnfversion',
+			reverse : true
+		};
+
+		var searchMatch = function(haystack, needle) {
+			if (!needle) {
+				return true;
+			}
+			return haystack.toLowerCase().indexOf(
+					needle.toLowerCase()) !== -1;
+		};
+
+		// init the filtered items
+		$scope.search = function() {
+			$scope.filteredItems = $filter('filter')(
+					$scope.objVersion,
+					function(item) {
+						for ( var attr in item) {
+							if (searchMatch(item[attr],
+									$scope.query))
+								return true;
+						}
+						return false;
+					});
+			// take care of the sorting order
+			if ($scope.sort.sortingOrder !== '') {
+				$scope.filteredItems = $filter(
+						'orderBy')(
+						$scope.filteredItems,
+						$scope.sort.sortingOrder,
+						$scope.sort.reverse);
+			}
+			$scope.currentPage = 0;
+			// now group by pages
+			$scope.groupToPages();
+		};
+
+		// calculate page in place
+		$scope.groupToPages = function() {
+			$scope.pagedItems = [];
+
+			for (var i = 0; i < $scope.filteredItems.length; i++) {
+				if (i % $scope.itemsPerPage === 0) {
+					$scope.pagedItems[Math.floor(i
+							/ $scope.itemsPerPage)] = [ $scope.filteredItems[i] ];
+				} else {
+					$scope.pagedItems[Math.floor(i
+							/ $scope.itemsPerPage)]
+							.push($scope.filteredItems[i]);
+				}
+			}
+		};
+
+		$scope.range = function(size, start, end) {
+			var ret = [];
+			//console.log(size, start, end);
+
+			if (size < end) {
+				end = size;
+				start = size - $scope.gap;
+			}
+			for (var i = start; i < end; i++) {
+				ret.push(i);
+			}
+			//console.log(ret);
+			return ret;
+		};
+
+		$scope.prevPage = function() {
+			if ($scope.currentPage > 0) {
+				$scope.currentPage--;
+			}
+		};
+
+		$scope.nextPage = function() {
+			if ($scope.currentPage < $scope.pagedItems.length - 1) {
+				$scope.currentPage++;
+			}
+		};
+
+		$scope.setPage = function() {
+			$scope.currentPage = this.n;
+		};
+
+		// functions have been describe process the data
+		// for display
+		$scope.search();
+    
+    }
+  
+    
+    
+    //For apply version
+       
+ $scope.ApplyConfig = function(objVersion){
+	   var count = 0;
+       angular.forEach(objVersion, function(item) {
+           if (item.selected == true) 
+               count++;
+       });
+       if (count < 1) {
+           $scope.errorMessage = "Select a config file to apply !!!";
+           growl.error($scope.errorMessage, {
+               title: 'Error!',
+               globalDisableCloseButton: false,
+               ttl: 7000,
+               disableCountDown: true  
+           });
+         }else if (count > 1) {
+             $scope.errorMessage = "Only one config file can be applyed at a time !!!";
+             growl.error($scope.errorMessage, {
+                 title: 'Error!',
+                 globalDisableCloseButton: false,
+                 ttl: 7000,
+                 disableCountDown: true  
+             });
+         }else
+        	 $scope.applyModelNew(objVersion);
+   };
+   
+   
+   $scope.applyModelNew = function(objVersion){
+	   
+	   $scope.objCompareModel1 = {};
+
+       $scope.versionsSelected = [];
+       angular.forEach(objVersion, function(item) {
+           angular.forEach($scope.objVersionModel, function(val, index) {
+               if (item.selected) {
+                   if ($scope.versionsSelected.indexOf(item) == -1)
+                       $scope.versionsSelected.push(item);
+               }
+           })
+       });
+       console.log("--CompareConfigCtrl::createCompareModel::$scope.objVersionModel", JSON.stringify($scope.objVersionModel));
+     
+       angular.forEach($scope.versionsSelected, function(item) {
+           var versionObj = {};
+           var versionDetails = {};
+           versionDetails.vnfversion = item['vnfversion'];
+           versionDetails.vnfName = item['vnfname'];
+           var vnfid = item['vnfid'];
+           var config = item['configinfo'];
+           var config1=JSON.parse(config);
+           console.log("CompareConfigCtrl::createCompareModel::objCompareModel1", config1);
+           deviceConfigService.runApplyconfig(vnfid,config1);
+           $scope.showResult = false;
+           $scope.successMessage = "File uploaded successfully";
+           growl.success($scope.successMessage, {
+               title: 'Success!',
+               globalDisableCloseButton: false,
+               ttl: 7000,
+               disableCountDown: true  
+          }); 
+       });
+   } 
+   
+//View Configuration
+   
+   $scope.ViewConfig = function(objVersion){
+	   var elmnt1 = document.getElementById("view");
+	
+       elmnt1.style.display = "block";
+	   var count = 0;
+       angular.forEach(objVersion, function(item) {
+           if (item.selected == true) 
+               count++;
+       });
+       if (count < 1) {
+           $scope.showResult = false;
+           $scope.errorMessage = "Select a config file to view !!!";
+           growl.error($scope.errorMessage, {
+               title: 'Error!',
+               globalDisableCloseButton: false,
+               ttl: 7000,
+               disableCountDown: true  
+           });
+         }else if (count > 1) {
+             $scope.showResult = false;
+             $scope.errorMessage = "Only one config file can be viewed at a time !!!";
+             growl.error($scope.errorMessage, {
+                 title: 'Error!',
+                 globalDisableCloseButton: false,
+                 ttl: 7000,
+                 disableCountDown: true  
+             });
+         }else
+        	 $scope.ViewCompareModelNew(objVersion); 
+   	};
+   
+    $scope.ViewCompareModelNew = function(objVersion) {
+    	$scope.objCompareModel1 = {};
+
+        $scope.versionsSelected = [];
+        angular.forEach(objVersion, function(item) {
+            angular.forEach($scope.objVersionModel, function(val, index) {
+                if (item.selected) {
+                    if ($scope.versionsSelected.indexOf(item) == -1)
+                        $scope.versionsSelected.push(item);
+                }
+            })
+        });
+        console.log("--CompareConfigCtrl::createCompareModel::$scope.objVersionModel", JSON.stringify($scope.objVersionModel));
+      
+        angular.forEach($scope.versionsSelected, function(item) {
+            var versionObj = {};
+            var versionDetails = {};
+            versionDetails.vnfversion = item['vnfversion'];
+            versionDetails.vnfName = item['vnfname'];
+            var vnfid = item['vnfid'];
+            
+            
+            versionDetails.timeStamp = item.createdAt;
+            versionObj.versionDetails = versionDetails;
+
+            //fetch all the other topology/network,opertaion status for the vnf
+            versionObj.topologyInfo = $scope.fetchTopologyInfo(item);
+            versionObj.vnfIdInfo = $scope.fetchVnfId(item);	
+            versionObj.serviceStatusInfo= $scope.fetchServiceStatus(item);
+            versionObj.vnfTopologyIdentifier = $scope.vnfTopologyIdentifier(item);
+            versionObj.operationStatus = $scope.operationStatus(item);
+            versionObj.vnfRequestInfo=$scope.fetchVnfRequestInfo(item);
+            versionObj.serviceInfo= $scope.fetchServiceInfo(item);
+            versionObj.requestHeader= $scope.serviceRequestHeader(item);
+            versionObj.requestInfo=$scope.fetchRequestInfo(item);
+           
+            if ((versionObj.versionDetails.vnfversion == $scope.versionsSelected[0].vnfversion)) {
+                $scope.objCompareModel1 = versionObj;
+            } else
+            	{console.log("CompareConfigCtrl::createCompareModel::objCompareModel1");
+
+        }
+       document.getElementById("compare").style.display = "none";
+    } );
+        $scope.showView=true;
+        $scope.showResult = true;
+        var elmnt1 = document.getElementById("view");
+        elmnt1.scrollIntoView();
+        console.log("CompareConfigCtrl::createCompareModel::objCompareModel1", JSON.stringify($scope.objCompareModel1));
+    }
+ 
+   
+    //compare
+    
+    
+    $scope.CompareConfig = function(objVersion) {
+    	 var elmnt = document.getElementById("compare");
+    	elmnt.style.display = "block";
+        var count = 0;
+        angular.forEach(objVersion, function(item) {
+            if (item.selected == true) 
+                count++;
+        });
+        if (count > 4) {
+        	$scope.showResult = false;
+            $scope.errorMessage = "Four or lessthan four and gretterthan two config files can be selected for the comparison!!!";
+            growl.error($scope.errorMessage, {
+                title: 'Error!',
+                globalDisableCloseButton: false,
+                ttl: 7000,
+                disableCountDown: true  
+            });
+        } else if (count < 2){
+        	$scope.showResult = false;
+        	 $scope.errorMessage = "At least two config files can be selected for the comparison!!!";
+             growl.error($scope.errorMessage, {
+                 title: 'Error!',
+                 globalDisableCloseButton: false,
+                 ttl: 7000,
+                 disableCountDown: true  
+             });
+        }else
+            $scope.createCompareModelNew(objVersion);
+    };
+
+    $scope.createCompareModelNew = function(objVersion) {
+
+        $scope.objCompareModel1 = {};
+        $scope.objCompareModel2 = {};
+
+        $scope.versionsSelected = [];
+        angular.forEach(objVersion, function(item) {
+            angular.forEach($scope.objVersionModel, function(val, index) {
+                if (item.selected) {
+                    if ($scope.versionsSelected.indexOf(item) == -1)
+                        $scope.versionsSelected.push(item);
+                }
+            })
+        });
+        console.log("--CompareConfigCtrl::createCompareModel::$scope.objVersionModel", JSON.stringify($scope.objVersionModel));
+        console.log("--CompareConfigCtrl::createCompareModel::$scope.objVersionModel", JSON.stringify($scope.versionsSelected));
+      
+        angular.forEach($scope.versionsSelected, function(item) {
+            var versionObj = {};
+            var versionDetails = {};
+            versionDetails.vnfversion = item.vnfversion;
+            versionDetails.timeStamp = item.createdAt;
+            versionObj.versionDetails = versionDetails;
+
+            //fetch all the other topology/network,opertaion status for the vnf
+            versionObj.topologyInfo = $scope.fetchTopologyInfo(item);
+            versionObj.vnfIdInfo = $scope.fetchVnfId(item);	
+            versionObj.serviceStatusInfo= $scope.fetchServiceStatus(item);
+            versionObj.vnfTopologyIdentifier = $scope.vnfTopologyIdentifier(item);
+            versionObj.operationStatus = $scope.operationStatus(item);
+            versionObj.vnfRequestInfo=$scope.fetchVnfRequestInfo(item);
+            versionObj.serviceInfo= $scope.fetchServiceInfo(item);
+            versionObj.requestHeader= $scope.serviceRequestHeader(item);
+            versionObj.requestInfo=$scope.fetchRequestInfo(item);
+           
+            if ((versionObj.versionDetails.vnfversion == $scope.versionsSelected[0].vnfversion)) {
+                $scope.objCompareModel1 = versionObj;
+                $scope.version1=true;
+            } else if ((versionObj.versionDetails.vnfversion == $scope.versionsSelected[1].vnfversion))
+                {$scope.objCompareModel2 = versionObj;
+                $scope.version2=true;
+                $scope.version3=false;
+                $scope.version4=false;
+        }else if((versionObj.versionDetails.vnfversion == $scope.versionsSelected[2].vnfversion)){
+        	$scope.objCompareModel3 = versionObj;
+        	$scope.version3=true;
+        	$scope.version4=false;
+        }else if((versionObj.versionDetails.vnfversion == $scope.versionsSelected[3].vnfversion)){
+        	$scope.objCompareModel4 = versionObj;
+        	$scope.version4=true;
+        	}
+      document.getElementById("view").style.display = "none";
+        } );
+        $scope.showResult = true;
+        var elmnt = document.getElementById("compare");
+        elmnt.scrollIntoView();
+        console.log("CompareConfigCtrl::createCompareModel::objCompareModel1", JSON.stringify($scope.objCompareModel1));
+        console.log("CompareConfigCtrl::createCompareModel::objCompareModel2", JSON.stringify($scope.objCompareModel2));
+        
+    }
+    
+    //1'st comparison for vnf topology info vnf-parameters
+   $scope.fetchTopologyInfo = function(item) {
+        var topologyInfo = {};
+        item = JSON.parse(item.configinfo);
+        var item= item['vnf-list'][0];
+        if (angular.isDefined(item['service-data']) && angular.isDefined(item['service-data']['vnf-topology-information'])) {
+            var vnfTopologyInfo = item['service-data']['vnf-topology-information'];
+            if (angular.isDefined(vnfTopologyInfo['vnf-parameters'] && vnfTopologyInfo['vnf-parameters'] != null)) {
+                var vnfParameters = vnfTopologyInfo['vnf-parameters'];
+                for (var i = 0; i < vnfParameters.length; i++) {
+
+                    var key = vnfParameters[i]['vnf-parameter-name'];
+                    var value = vnfParameters[i]['vnf-parameter-value'];
+                   console.log("CompareConfigCtrl::fetchTopologyInfo::key", key);
+                   console.log("CompareConfigCtrl::fetchTopologyInfo::value", value);
+                    topologyInfo[key] = value;
+
+                }
+            console.log("CompareConfigCtrl::fetchTopologyInfo::", JSON.stringify(topologyInfo));
+                return topologyInfo;
+            }
+        }
+    }
+    
+ 
+   
+   //2nd comparison for vnf id
+   
+  $scope.fetchVnfId = function(item){
+	  var vnfIdInfo = {}; 
+	  item = JSON.parse(item.configinfo);
+	  var item= item['vnf-list'][0];
+	  if (angular.isDefined(item['vnf-id'])) {
+	  var key=item['vnf-id'];
+	  vnfIdInfo['vnf-id']=key;
+	  }
+	console.log("CompareConfigCtrl::fetchVnfId::", JSON.stringify( vnfIdInfo));
+	  return vnfIdInfo;
+  }  
+  
+ 
+  //3rd comparison for service status
+  
+  $scope.fetchServiceStatus = function(item) {
+      var serviceStatusInfo = {};
+      
+      item = JSON.parse(item.configinfo);
+      var item= item['vnf-list'][0];
+      
+      if (angular.isDefined(item['service-status'])) {
+          var serviceStatus = item['service-status'];
+          if (angular.isDefined(serviceStatus)) {
+              angular.forEach(serviceStatus, function(value, key) {
+
+                 console.log("CompareConfigCtrl::fetchServiceStatus::key", key);
+               console.log("CompareConfigCtrl::fetchServiceStatus::value", value);
+                  serviceStatusInfo[key] = value;
+              });
+          }
+      }
+
+     console.log("CompareConfigCtrl::fetchServiceStatus::", JSON.stringify(serviceStatusInfo));
+      return serviceStatusInfo;
+  }
+  
+  // 4th comparison for vnf topology identifire
+  
+  $scope.vnfTopologyIdentifier = function(item) {
+      var topologyIdnetifier = {};
+      item = JSON.parse(item.configinfo);
+      var item= item['vnf-list'][0];
+      if (angular.isDefined(item['service-data']) && angular.isDefined(item['service-data']['vnf-topology-information']['vnf-topology-identifier'])) {
+          var topologyInfoidentifier = item['service-data']['vnf-topology-information']['vnf-topology-identifier'];
+          if (angular.isDefined(topologyInfoidentifier)) {
+              angular.forEach(topologyInfoidentifier, function(value, key) {
+
+               console.log("CompareConfigCtrl::fetchTopologyInfo::key", key);
+           console.log("CompareConfigCtrl::fetchTopologyInfo::value", value);
+                  topologyIdnetifier[key] = value;
+              });
+          }
+      }
+
+      console.log("CompareConfigCtrl::vnfTopologyIdentifier::", JSON.stringify(topologyIdnetifier));
+      return topologyIdnetifier;
+  }
+ 
+  // 5th comparison for vnf request information
+  
+  $scope.fetchVnfRequestInfo = function(item) {
+      var vnfRequestInfo = {};
+      item = JSON.parse(item.configinfo);
+      var item= item['vnf-list'][0];
+      if (angular.isDefined(item['service-data']) && angular.isDefined(item['service-data']['vnf-request-information'])) {
+          var vnfRequest = item['service-data']['vnf-request-information'];
+          if (angular.isDefined(vnfRequest) && vnfRequest != null) {
+
+        	  angular.forEach(vnfRequest, function(value, key) {
+
+             console.log("CompareConfigCtrl::fetchVnfRequestInfo::key", key);
+              console.log("CompareConfigCtrl::fetchVnfRequestInfo::value", value);
+                  vnfRequestInfo[key] = value;
+              });
+          }
+      }
+console.log("CompareConfigCtrl::fetchVnfRequestInfo::", JSON.stringify(vnfRequestInfo));
+      return vnfRequestInfo;
+  }
+  
+  // 6th comparison for service info
+  
+
+  $scope.fetchServiceInfo = function(item) {
+      var serviceInfo = {};
+      item = JSON.parse(item.configinfo);
+      var item= item['vnf-list'][0];
+      if (angular.isDefined(item['service-data']) && angular.isDefined(item['service-data']['service-information'])) {
+          var service= item['service-data']['service-information'];
+          if (angular.isDefined(service) && service != null) {
+
+        	  angular.forEach(service, function(value, key) {
+
+           console.log("CompareConfigCtrl::fetchServiceInfo::key", key);
+           console.log("CompareConfigCtrl::fetchServiceInfo::value", value);
+                  serviceInfo[key] = value;
+              });
+          }
+      }
+ console.log("CompareConfigCtrl::fetchServiceInfo::", JSON.stringify(serviceInfo));
+      return serviceInfo;
+  }
+  
+  // 7th comparison for sdnc request header
+  
+  $scope.serviceRequestHeader = function(item) {
+      var requestHeader = {};
+      item = JSON.parse(item.configinfo);
+      var item= item['vnf-list'][0];
+      if (angular.isDefined(item['service-data']) && angular.isDefined(item['service-data']['sdnc-request-header'])) {
+          var requestHeaderInfo = item['service-data']['sdnc-request-header'];
+          if (angular.isDefined(requestHeaderInfo) && requestHeaderInfo != null) {
+
+        	  angular.forEach(requestHeaderInfo, function(value, key) {
+
+                 console.log("CompareConfigCtrl::serviceRequestHeader::key", key);
+             console.log("CompareConfigCtrl::serviceRequestHeader::value", value);
+                  requestHeader[key] = value;
+              });
+
+          }
+      }
+  console.log("CompareConfigCtrl::serviceRequestHeader::", JSON.stringify(requestHeader));
+      return requestHeader;
+  }
+  
+  // 8th comparison for oper status
+  $scope.operationStatus = function(item) {
+      var operationStatus = {};
+      item = JSON.parse(item.configinfo);
+      var item= item['vnf-list'][0];
+      if (angular.isDefined(item['service-data']) && angular.isDefined(item['service-data']['oper-status'])) {
+          var operStatus = item['service-data']['oper-status'];
+          if (angular.isDefined(operStatus) && operStatus != null) {
+
+        	  angular.forEach(operStatus, function(value, key) {
+
+                 console.log("CompareConfigCtrl::operationStatus::key", key);
+                console.log("CompareConfigCtrl::operationStatus::value", value);
+                  operationStatus[key] = value;
+              });
+
+          }
+      }
+     console.log("CompareConfigCtrl::operationStatus::", JSON.stringify(operationStatus));
+      return operationStatus;
+  }
+  // 9th comparison for request info
+ 
+  $scope.fetchRequestInfo = function(item) {
+      var requestInfo = {};
+      item = JSON.parse(item.configinfo);
+      var item= item['vnf-list'][0];
+      if (angular.isDefined(item['service-data']) && angular.isDefined(item['service-data']['request-information'])) {
+          var request = item['service-data']['request-information'];
+          if (angular.isDefined(request) && request != null) {
+
+        	  angular.forEach(request, function(value, key) {
+
+                 console.log("CompareConfigCtrl::fetchRequestInfo::key", key);
+                console.log("CompareConfigCtrl::fetchRequestInfo::value", value);
+                  requestInfo[key] = value;
+              });
+
+          }
+      }
+     console.log("CompareConfigCtrl::fetchRequestInfo::", JSON.stringify(requestInfo));
+      return requestInfo;
+  }
+  
+}]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js
new file mode 100644
index 0000000..0e80836
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-validationTest-controller.js
@@ -0,0 +1,222 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+
+
+myApp.controller('TestController', ['$scope', '$http', 'growl', 'viewReportService', 'validationTestService','CERTIFICATION_API_BASE', function($scope, $http, growl, viewReportService, validationTestService,CERTIFICATION_API_BASE) {
+
+    $scope.showTestReport = false;
+
+    //Input data for validation test dropdown
+    var validationTestList = [{
+            "typeId": 1,
+            "validationType": "Network Layer",
+            "Selected": false
+        },
+        {
+            "typeId": 2,
+            "validationType": "Protocol Layer",
+            "Selected": false
+        }
+    ];
+
+    $scope.validationTestList = validationTestList;
+
+
+    $scope.getselectval = function() {
+        $scope.selectedvalues = 'Name: ' + $scope.selitem.validationType + ' Id: ' + $scope.selitem.typeId;
+    }
+
+    $scope.showError = false;
+    $scope.errorMessage = "";
+    $scope.showSuccess = false;
+    $scope.successMessage = "";
+    $scope.showWarning = false;
+    $scope.warningMessage = "";
+    $scope.showInfo = false;
+    $scope.infoMessage = "";
+    $scope.ShowResult = false;
+    $scope.allowTestSelection = false;
+    $scope.hostNamePattern = /([a-z0-9](.[a-z0-9-]*[a-z0-9]))/;
+
+    //Called when user clicks on runtest button
+    $scope.runTest = function() {
+
+        $scope.showError = false;
+        $scope.vnfSelected = [];
+        $scope.testSelected = [];
+
+        var message = "";
+        for (var i = 0; i < $scope.validationTestList.length; i++) {
+            if ($scope.validationTestList[i].Selected) {
+                var typeId = $scope.validationTestList[i].typeId;
+                var validationType = $scope.validationTestList[i].validationType;
+                message += "typeId: " + typeId + " validationType: " + validationType + "\n";
+                console.log("--TestController::Runtest--", message);
+                var testDetails = {};
+                testDetails.typeId = typeId;
+                testDetails.validationType = validationType;
+                $scope.testSelected.push(testDetails);
+            }
+        }
+        console.log("--TestController::Runtest--", JSON.stringify($scope.testSelected));
+
+        var vnfDetails = {};
+        if ($scope.IPAddress != null && $scope.HostName != null && $scope.testSelected.length >= 1) {
+            vnfDetails.IpAddress = $scope.IPAddress;
+            vnfDetails.HostName = $scope.HostName;
+            $scope.vnfSelected.push(vnfDetails);
+            console.log("--TestController::Runtest--", JSON.stringify($scope.vnfSelected));
+
+            //Call the validation test service with vnfselected and testType as the parameter
+
+            validationTestService.runPretest($scope.vnfSelected, $scope.testSelected).then(function(response) {
+                    console.log("--TestController::runTest--", JSON.stringify(response));
+                    
+                    //in case of success, build the model object to store the service output here
+                    if (response.status === 200) {
+                        if (response.preTestResponse != null && response.preTestResponse.length >= 1) {
+                            $scope.ShowResult = true;
+                            $scope.createTestModel(response.preTestResponse);
+                            $scope.showMessage(response.preTestResponse);
+                         
+                        } else {
+                            console.log(response);
+                            $scope.showError = true;
+                            $scope.errorMessage = "Something went wrong!!!";
+                            growl.error($scope.errorMessage, {
+                                title: 'Error!',
+                                globalDisableCloseButton:false
+                            });
+                        }
+                    } else {
+                        console.log(response);
+                        $scope.showError = true;
+                        $scope.errorMessage = "Something went wrong!!! Please try again later";
+                        growl.error($scope.errorMessage, {
+                            title: 'Error!',
+                            globalDisableCloseButton:false
+                        });
+                    }
+                },
+                function(response) {
+                    console.log("--TestController--", response);
+                });
+        } else {
+            $scope.showError = true;
+            $scope.errorMessage = "Please provide the inputs for VNF and test to be performed!!";
+            growl.error($scope.errorMessage, {
+                title: 'Error!',
+                globalDisableCloseButton:false
+            });
+        }
+
+    };
+    
+$scope.showMessage=function(data){
+    	
+        var iterate = true;
+    	if(angular.isDefined(data) && data.length>=1){
+    		
+             iterate=true;
+    		 angular.forEach(data, function(value, key){
+
+                if(iterate=true){
+    	         if(value.status == "unreachable"){
+    	           console.log("--TestController::showMessage--",value.status);
+    	           $scope.showError = true;
+                   $scope.errorMessage = "PreTest validation Failed, Please check logs for further details!!!";
+                   growl.error($scope.errorMessage, {
+                     title: 'Error!',
+                     globalDisableCloseButton:false
+                   });
+                   iterate=false;
+                 }
+             }
+    	         else
+    	        	 {
+    	        	  $scope.showSuccess = true;
+                      $scope.successMessage = "Pre test validation completed!!";
+                      growl.success($scope.successMessage, {
+                          title: 'Success!',
+                          globalDisableCloseButton:false
+                      });
+    	        	 }
+    	         
+    		 });
+    		
+    	}   	
+    }
+
+    //Function to build the UI model to be shown
+    $scope.createTestModel = function(result) {
+
+        $scope.showError = false;
+        $scope.showWarning = false;
+        $scope.objPreTestModel = result;
+        $scope.objPreTest = [];
+
+
+        if ($scope.objPreTestModel.length >= 1) {
+            for (var i = 0; i < $scope.objPreTestModel.length; i++) {
+                var objTestReport = {};
+                objTestReport.ipaddress = $scope.objPreTestModel[i].ipaddress;
+                objTestReport.status = $scope.objPreTestModel[i].status;
+                objTestReport.testtype = $scope.objPreTestModel[i].testtype;
+                objTestReport.statistics = $scope.objPreTestModel[i].statistics;
+                objTestReport.avgTime = $scope.objPreTestModel[i].avgTime;
+
+
+                if ($scope.objPreTestModel[i].testtype === "Network Layer") {
+                    if (objTestReport.statistics != null) {
+                        //fetching the statistics to show in progress bar
+                    	
+                        var statistics = objTestReport.statistics;
+                        statistics = statistics.split("%");
+                        objTestReport.statistics = statistics[0];
+                        if (objTestReport.statistics == 0) {
+                            objTestReport.statisticPer = parseInt(objTestReport.statistics) + 50;
+                        } else
+                            objTestReport.statisticPer = objTestReport.statistics;
+                    }
+
+                    //fetching the avg time to show in progress bar
+                    
+                    if (objTestReport.avgTime != null) {
+                        var avgTime = objTestReport.avgTime;
+                        avgTime = avgTime.split("=");
+                        var Testtime = avgTime[1];
+                        objTestReport.avgTime = Testtime.slice(0, -2).trim();
+                        console.log("--TestController::createTestModel--", objTestReport.avgTime);
+                        if (objTestReport.avgTime < 50) {
+                            objTestReport.avgTimePer = parseInt(objTestReport.avgTime) + 10;
+                        } else
+                            objTestReport.avgTimePer = objTestReport.avgTime;
+
+                    }
+                }
+                $scope.objPreTest.push(objTestReport);
+                console.log("--TestController::createTestModel--", JSON.stringify($scope.objPreTest));
+            }
+        }
+       console.log("--TestController::createTestModel::final PreTestModel--" + JSON.stringify($scope.objPreTest));
+
+    }
+
+}]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js
new file mode 100644
index 0000000..951ac5d
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-controller/sdnc-viewreport-controller.js
@@ -0,0 +1,519 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC-FEATURES
+ * ================================================================================
+ * Copyright 2018 TechMahindra
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+myApp.controller(
+				'ReportController',
+				[
+						'$scope',
+						'$http',
+						'$filter',
+						'viewReportService',
+						'growl',
+						function($scope, $http, $filter, viewReportService,
+								growl) {
+							$scope.isDisabled = true;
+							$scope.pagination = false;
+							$scope.selectedDevice;
+							$scope.ShowResult = false;
+							$scope.dateValidation = false;
+							$scope.NoSearchResult = false;
+							$scope.showError = false;
+							$scope.errorMessage = "";
+							$scope.showSuccess = false;
+							$scope.successMessage = "";
+							$scope.showWarning = false;
+							$scope.warningMessage = "";
+							$scope.showExecutionDetails = true;
+							$scope.showData = false;
+
+							$scope.gap = 2;
+							$scope.filteredItems = [];
+							$scope.groupedItems = [];
+							$scope.itemsPerPage = 5;
+							$scope.pagedItems = [];
+							$scope.currentPage = 0;
+
+							// THIS FUNCTION WILL BE CALLED ON PAGE LOAD
+							$scope.getAllVNF = function() {
+
+								viewReportService
+										.getAllVNF()
+										.then(
+												function(data) {
+													if (data != null) {
+														console.log(data);
+														$scope.objvnfList = data;
+														console
+																.log("ViewConfigCtrl:getAllVNF called"
+																		+ $scope.objvnfList);
+													} else {
+														$scope.warningMessage = "No VNF is eligible for configuration!!!";
+														growl
+																.error(
+																		$scope.warningMessage,
+																		{
+																			title : 'Warning!',
+																			globalDisableCloseButton : false,
+																			ttl : 7000,
+																			disableCountDown : true
+																		});
+													}
+												});
+							};
+							$scope.getAllVNF();
+
+							$scope.selectVnf = function(selectedValueVnf) {
+
+								if (selectedValueVnf != null
+										&& selectedValueVnf != "") {
+									console.log("selectedvnf Value",
+											selectedValueVnf);
+									var vnfId = selectedValueVnf;
+									$scope.ShowResult = true;
+
+								} else {
+									$scope.ShowResult = false;
+									$scope.showCompare = false;
+									$scope.showResult = false;
+									$scope.errorMessage = "Please select a VNF!!!";
+									growl.error($scope.errorMessage, {
+										title : 'Error!',
+										globalDisableCloseButton : false,
+										ttl : 7000,
+										disableCountDown : true
+									});
+								}
+							}
+
+							// THIS FUNCTION WILL BE CALLED WHEN USER CLICK
+							// SUBMIT FROM UI
+							$scope.getReportsById = function(selectedValueVnf,
+									startdate, enddate) {
+
+								$scope.ShowResult = true;
+								if (new Date(startdate) > new Date(enddate)) {
+									$scope.dateValidation = true;
+									$scope.showError = true;
+									$scope.errorMessage = "Start date cannot be greated than End date";
+									growl.error($scope.errorMessage, {
+										title : 'Error!',
+										globalDisableCloseButton : false,
+										ttl : 7000,
+										disableCountDown : true
+									});
+									return false;
+								}
+								var date = new Date(startdate);
+								if (angular.isDefined(startdate)) {
+									$scope.startDate = startdate;
+								}
+								if (angular.isDefined(enddate)) {
+									$scope.endDate = enddate;
+								}
+
+								$scope.startdate1 = $filter('date')(
+										$scope.startDate, 'dd-MM-yyyy');
+								$scope.enddate1 = $filter('date')(
+										$scope.endDate, 'dd-MM-yyyy');
+								if (startdate != null && enddate != null) {
+
+									// service call to fetch the reports start
+									// date,end date,test name
+									viewReportService
+											.getDataById(selectedValueVnf,
+													$scope.startdate1,
+													$scope.enddate1)
+											.then(
+													function(result) {
+														console
+																.log(
+																		"-----------------------------------ReportController::getdata called from controler--",
+																		JSON
+																				.stringify(result.data));
+														if (result.status == 200) {
+															if (result.data != null
+																	&& result.data.length >= 1) {
+
+																// in case of
+																// success,
+																// build the
+																// model object
+																// to store the
+																// service
+																// output here
+																$scope
+																		.createTestReportModel(result.data);// result.data.data
+															} else {
+																$scope.ShowResult = false;
+																$scope.showWarning = true;
+																$scope.warningMessage = "No result found for specified Date !!";
+																growl
+																		.warning(
+																				$scope.warningMessage,
+																				{
+																					title : 'Warning!',
+																					globalDisableCloseButton : false,
+																					ttl : 7000,
+																					disableCountDown : true
+																				});
+															}
+														} else {
+															$scope.ShowResult = false;
+															$scope.showWarning = true;
+															$scope.warningMessage = "No result found for specified Date !!";
+															growl
+																	.warning(
+																			$scope.warningMessage,
+																			{
+																				title : 'Warning!',
+																				globalDisableCloseButton : false,
+																				ttl : 7000,
+																				disableCountDown : true
+																			});
+														}
+													},
+													function(response) {
+														$scope.ShowError = true;
+														$scope.errorMessage = "Something went wrong, Please try again !!";
+														growl
+																.error(
+																		$scope.errorMessage,
+																		{
+																			title : 'Error!',
+																			globalDisableCloseButton : false,
+																			ttl : 7000,
+																			disableCountDown : true
+																		});
+														console
+																.log(
+																		"--ReportController::getdata::Error--",
+																		response);
+													});
+								}
+							}
+
+							// FUNCTION WILL BE CALLED WHEN USER CLICK DOWNLOAD
+							// FROM UI
+							$scope.exportToExcel = function(tableId) { // ex:
+																		// '#my-table'
+								var exportHref = Excel.tableToExcel(tableId,
+										'export');
+								$timeout(function() {
+									location.href = exportHref;
+								}, 100); // trigger download
+
+								console
+										.log("--ReportController::exportToexcel--");
+							}
+
+							$scope.createTestReportModel = function(result) {
+
+								$scope.showError = false;
+								$scope.showWarning = false;
+								$scope.objTestReportModel = result;
+								$scope.objTestModel = [];
+
+								if ($scope.objTestReportModel.length >= 1) {
+									for (var i = 0; i < $scope.objTestReportModel.length; i++) {
+										var objTestReport = {};
+										objTestReport.vnfname = $scope.objTestReportModel[i].vnfname;
+										objTestReport.vnfid = $scope.objTestReportModel[i].vnfid;
+										objTestReport.versionNo = $scope.objTestReportModel[i].vnfversion;
+										objTestReport.createdAt = $scope.objTestReportModel[i].creationdate;
+										objTestReport.updatedAt = $scope.objTestReportModel[i].lastupdated;
+										objTestReport.status = $scope.objTestReportModel[i].status;
+										objTestReport.Id = $scope.objTestReportModel[i].id;
+										// objTestReport.configinfo =
+										// $scope.objVersionModel[i].configinfo;
+										$scope.objTestModel.push(objTestReport);
+										console
+												.log(
+														"--ReportController::CreateTestReportModel--",
+														JSON
+																.stringify($scope.objTestModel));
+
+									}
+									$scope.showresult = true;
+									$scope.pagination = true;
+								}
+								console
+										.log("--ReportController::createTestReportModel::final TestReportModel--"
+												+ JSON
+														.stringify($scope.objTestModel));
+								$scope.csvOrder = [ 'testname', 'timeStamp',
+										'status', 'statistics', 'avgTime',
+										'result' ];
+
+							}
+
+							// THIS FUNCTION WILL BE CALLED WHEN USER CLICK
+							// SUBMIT FROM UI
+							$scope.getReports = function(startdate, enddate) {
+
+								$scope.ShowResult = false;
+								if (new Date(startdate) > new Date(enddate)) {
+									$scope.dateValidation = true;
+									$scope.showError = true;
+									$scope.errorMessage = "Start date cannot be greated than End date";
+									growl.error($scope.errorMessage, {
+										title : 'Error!',
+										globalDisableCloseButton : false,
+										ttl : 7000,
+										disableCountDown : true
+									});
+									return false;
+								}
+								var date = new Date(startdate);
+								/*
+								 * if (angular.isDefined(deviceName)) {
+								 * $scope.DeviceName = deviceName; }
+								 */
+								if (angular.isDefined(startdate)) {
+									$scope.startDate = startdate;
+								}
+								if (angular.isDefined(enddate)) {
+									$scope.endDate = enddate;
+								}
+
+								$scope.startdate1 = $filter('date')(
+										$scope.startDate, 'dd-MM-yyyy');
+								$scope.enddate1 = $filter('date')(
+										$scope.endDate, 'dd-MM-yyyy');
+								if (startdate != null && enddate != null) {
+
+									// service call to fetch the reports start
+									// date,end date,test name
+									viewReportService
+											.getData($scope.startdate1,
+													$scope.enddate1)
+											.then(
+													function(result) {
+														console
+																.log(
+																		"-----------------------------------ReportController::getdata called from controler--",
+																		JSON
+																				.stringify(result.data));
+														if (result.status == 200) {
+															if (result.data != null
+																	&& result.data.length >= 1) {
+
+																// in case of
+																// success,
+																// build the
+																// model object
+																// to store the
+																// service
+																// output here
+																$scope
+																		.createTestReportModel(result.data);// result.data.data
+															} else {
+																$scope.ShowResult = false;
+																$scope.showWarning = true;
+																$scope.warningMessage = "No result found for specified Date !!";
+																growl
+																		.warning(
+																				$scope.warningMessage,
+																				{
+																					title : 'Warning!',
+																					globalDisableCloseButton : false,
+																					ttl : 7000,
+																					disableCountDown : true
+																				});
+															}
+														} else {
+															$scope.ShowResult = false;
+															$scope.showWarning = true;
+															$scope.warningMessage = "No result found for specified Date !!";
+															growl
+																	.warning(
+																			$scope.warningMessage,
+																			{
+																				title : 'Warning!',
+																				globalDisableCloseButton : false,
+																				ttl : 7000,
+																				disableCountDown : true
+																			});
+														}
+													},
+													function(response) {
+														$scope.ShowError = true;
+														$scope.errorMessage = "Something went wrong, Please try again !!";
+														growl
+																.error(
+																		$scope.errorMessage,
+																		{
+																			title : 'Error!',
+																			globalDisableCloseButton : false,
+																			ttl : 7000,
+																			disableCountDown : true
+																		});
+														console
+																.log(
+																		"--ReportController::getdata::Error--",
+																		response);
+													});
+								}
+							}
+
+							// FUNCTION WILL BE CALLED WHEN USER CLICK DOWNLOAD
+							// FROM UI
+							$scope.exportToExcel = function(tableId) { // ex:
+																		// '#my-table'
+								var exportHref = Excel.tableToExcel(tableId,
+										'export');
+								$timeout(function() {
+									location.href = exportHref;
+								}, 100); // trigger download
+
+								console
+										.log("--ReportController::exportToexcel--");
+							}
+
+							$scope.createTestReportModel = function(result) {
+
+								$scope.showError = false;
+								$scope.showWarning = false;
+								$scope.objTestReportModel = result;
+								$scope.objTestModel = [];
+
+								if ($scope.objTestReportModel.length >= 1) {
+									for (var i = 0; i < $scope.objTestReportModel.length; i++) {
+										var objTestReport = {};
+										objTestReport.vnfname = $scope.objTestReportModel[i].vnfname;
+										objTestReport.vnfid = $scope.objTestReportModel[i].vnfid;
+										objTestReport.versionNo = $scope.objTestReportModel[i].vnfversion;
+										objTestReport.createdAt = $scope.objTestReportModel[i].creationdate;
+										objTestReport.updatedAt = $scope.objTestReportModel[i].lastupdated;
+										objTestReport.status = $scope.objTestReportModel[i].status;
+										objTestReport.Id = $scope.objTestReportModel[i].id;
+										// objTestReport.configinfo =
+										// $scope.objVersionModel[i].configinfo;
+										$scope.objTestModel.push(objTestReport);
+										console
+												.log(
+														"--ReportController::CreateTestReportModel--",
+														JSON
+																.stringify($scope.objTestModel));
+
+									}
+									$scope.showresult = true;
+									$scope.pagination = true;
+								}
+								console
+										.log("--ReportController::createTestReportModel::final TestReportModel--"
+												+ JSON
+														.stringify($scope.objTestModel));
+								$scope.csvOrder = [ 'testname', 'timeStamp',
+										'status', 'statistics', 'avgTime',
+										'result' ];
+
+								// init
+								$scope.sort = {
+									sortingOrder : 'createdAt',
+									reverse : false
+								};
+
+								var searchMatch = function(haystack, needle) {
+									if (!needle) {
+										return true;
+									}
+									return haystack.toLowerCase().indexOf(
+											needle.toLowerCase()) !== -1;
+								};
+
+								// init the filtered items
+								$scope.search = function() {
+									$scope.filteredItems = $filter('filter')(
+											$scope.objTestModel,
+											function(item) {
+												for ( var attr in item) {
+													if (searchMatch(item[attr],
+															$scope.query))
+														return true;
+												}
+												return false;
+											});
+									// take care of the sorting order
+									if ($scope.sort.sortingOrder !== '') {
+										$scope.filteredItems = $filter(
+												'orderBy')(
+												$scope.filteredItems,
+												$scope.sort.sortingOrder,
+												$scope.sort.reverse);
+									}
+									$scope.currentPage = 0;
+									// now group by pages
+									$scope.groupToPages();
+								};
+
+								// calculate page in place
+								$scope.groupToPages = function() {
+									$scope.pagedItems = [];
+
+									for (var i = 0; i < $scope.filteredItems.length; i++) {
+										if (i % $scope.itemsPerPage === 0) {
+											$scope.pagedItems[Math.floor(i
+													/ $scope.itemsPerPage)] = [ $scope.filteredItems[i] ];
+										} else {
+											$scope.pagedItems[Math.floor(i
+													/ $scope.itemsPerPage)]
+													.push($scope.filteredItems[i]);
+										}
+									}
+								};
+
+								$scope.range = function(size, start, end) {
+									var ret = [];
+									console.log(size, start, end);
+
+									if (size < end) {
+										end = size;
+										start = size - $scope.gap;
+									}
+									for (var i = start; i < end; i++) {
+										ret.push(i);
+									}
+									console.log(ret);
+									return ret;
+								};
+
+								$scope.prevPage = function() {
+									if ($scope.currentPage > 0) {
+										$scope.currentPage--;
+									}
+								};
+
+								$scope.nextPage = function() {
+									if ($scope.currentPage < $scope.pagedItems.length - 1) {
+										$scope.currentPage++;
+									}
+								};
+
+								$scope.setPage = function() {
+									$scope.currentPage = this.n;
+								};
+
+								// functions have been describe process the data
+								// for display
+								$scope.search();
+
+							}
+
+						} ]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-services/sdnc-compareConfig-service.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-services/sdnc-compareConfig-service.js
new file mode 100644
index 0000000..42bafcd
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-services/sdnc-compareConfig-service.js
@@ -0,0 +1,156 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC-FEATURES
+ * ================================================================================
+ * Copyright 2018 TechMahindra
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+myApp.service('deviceConfigService', ['$http','VNF_API_BASE', function($http, VNF_API_BASE) {
+
+   
+	this.getAllVNFFromRc = function() {
+        var rctestlist = {};
+        return $http.get('/getAllBackupVnfIds')
+            .then(function(response) {
+                   console.log("---validationTestService::getAllVNF From Restconf::TestResponse---" + JSON.stringify(response));
+                    vnflist = response.data;
+                    return vnflist;
+                },
+                function(response) {
+                   console.log("validationTestService::getAllVNF From Restconf::Status Code", response.status);
+                    return response;
+                });
+
+    };
+       
+    	this.getAllVNF = function() {
+        var testlist = {};
+        return $http.get('/getAllBackupVnfIds')
+            .then(function(response) {
+                    console.log("---validationTestService::getAllVNF::TestResponse---" + JSON.stringify(response));
+                    vnflist = response.data;
+                    return vnflist;
+                },
+                function(response) {
+                    console.log("validationTestService::getAllVNF::Status Code", response.status);
+                    return response;
+                });
+
+    };
+
+    this.getAllVnfIds = function() {
+        var rctestlist = {};
+        return $http.get('/getAllVnfIds')
+            .then(function(response) {
+                   console.log("---validationTestService::getAllVNF From Restconf::TestResponse---" + JSON.stringify(response));
+                    vnflist = response.data;
+                    return vnflist;
+                },
+                function(response) {
+                   console.log("validationTestService::getAllVNF From Restconf::Status Code", response.status);
+                    return response;
+                });
+
+    };
+    
+    this.getVersions = function(vnfId) {
+
+        var data = {};
+        data.vnfId = vnfId;
+        var config = {
+            params: data,
+            headers: {
+                'Accept': 'application/json'
+            }
+        };
+
+        console.log("deviceConfigService::getVersions::config", JSON.stringify(config));
+
+        var baseUrl = VNF_API_BASE;
+        var request = {
+            method: 'GET',
+            url: '/configDetailsById/'+vnfId,
+            
+            headers: {
+                'Content-Type': 'application/json',
+            }
+        };
+
+        return $http(request)
+            .then(function(response) {
+                    console.log("---deviceConfigService::getVersions::Response---" + JSON.stringify(response));
+                    return response;
+                },
+                function(response) {
+                    console.log("--deviceConfigService::getVersions::Status Code--", response.status);
+                    return response;
+                });
+
+
+    }
+    
+    this.invokeBackup = function() {
+        var testlist = {};
+        return $http.get('/backup')
+            .then(function(response) {
+                    console.log("---validationTestService::getAllVNF::TestResponse---" + response);
+                    vnflist = response;
+                    return vnflist;
+                },
+                function(response) {
+                    console.log("validationTestService::getAllVNF::Status Code", response);
+                    return response;
+                });
+
+    };
+    
+    this.getlastupdated = function() {
+        var testlist = {};
+        return $http.get('/backuptime')
+            .then(function(response) {
+                    console.log("---validationTestService::getBackuptime::---" + response);         
+                    return response;
+                })          
+
+    };
+    
+    this.runApplyconfig = function(vnfid, newConfig) {
+
+ 
+    	
+    	var url='/vnf-list/'+vnfid;
+    	
+    	
+    	
+    	var config = {
+                 headers : {
+                     'Content-Type': 'application/json'
+                 }
+             }
+
+    	 $http.put(url, newConfig, config)
+    	 .success(function(newConfig) {
+             console.log("---validationTestService::getAllVNF::TestResponse---" ,response);
+             
+             return  newConfig;
+         },
+         function(newConfig) {
+             console.log("validationTestService::getAllVNF::Status Code", response);
+             return newConfig;
+         });
+    };
+	
+
+}]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js
new file mode 100644
index 0000000..36c916c
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-services/sdnc-validationTest-service.js
@@ -0,0 +1,66 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+myApp.service('validationTestService', ['$http','CERTIFICATION_API_BASE', function($http,CERTIFICATION_API_BASE) {
+   
+    this.runPretest = function(vnfList, validationTestType) {
+
+
+        var data = {};
+        data.vnfList = vnfList;
+        data.validationTestType = validationTestType;
+
+        var config = {
+            params: data,
+            headers: {
+                'Accept': 'application/json'
+            }
+        };
+        
+        console.log("validationTestService::runPretest::config", JSON.stringify(config));
+        
+        var baseUrl = CERTIFICATION_API_BASE;
+        var baseApi='runtest';
+        var apiUrl= baseUrl + baseApi;
+
+        // Call the pre validation service
+        var request = {
+            method: 'POST',
+            url: apiUrl,
+            data: data,
+            headers: {
+                'Content-Type': undefined
+            }
+        };
+
+        // // SEND VNF FOR VALIDATION
+        return $http(request)
+            .then(function(response) {
+                    console.log("---validationTestService::runPretest::Response---" + JSON.stringify(response));
+                    return response.data;
+                },
+                function(response) {
+                    console.log("--validationTestService::Status Code--", response.status);
+                    return response;
+                });
+
+
+    }
+
+}]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js
new file mode 100644
index 0000000..82ab83a
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/js/sdnc-services/sdnc-viewReport-service.js
@@ -0,0 +1,101 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+
+myApp.service('viewReportService', ['$http', function($http) {
+    
+this.getAllVNF = function() {
+        var testlist = {};
+        return $http.get('/getAllBackupVnfIds')
+            .then(function(response) {
+                    console.log("---validationTestService::getAllVNF::TestResponse---" + JSON.stringify(response));
+                    vnflist = response.data;
+                    return vnflist;
+                },
+                function(response) {
+                    console.log("validationTestService::getAllVNF::Status Code", response.status);
+                    return response;
+                });
+
+    };
+
+	this.getData = function(startDate, endDate) {
+		
+		var data = {};
+		if (startDate != null && endDate != null) {
+
+            data.startdate = startDate;
+            data.enddate = endDate;
+
+        }
+		var request = {
+		            method: 'GET',
+		            url: '/getVnfDetBetDates/'+startDate+'/'+endDate+'/',
+		           
+		             headers: {
+		                'Content-Type': 'application/json',
+		            }
+		        };
+		 
+		 return $http(request)
+	     .then(function(response) {
+	             console.log("---deviceConfigService::getVersions::Response---" + JSON.stringify(response));
+	             return response;
+	         },
+	         function(response) {
+	             console.log("--deviceConfigService::getVersions::Status Code--", response.status);
+	             return response;
+	         });
+
+		}
+	
+	
+	this.getDataById = function(selectedValueVnf,startDate, endDate) {
+		
+		var data = {};
+		if (startDate != null && endDate != null) {
+
+            data.startdate = startDate;
+            data.enddate = endDate;
+
+        }
+		var request = {
+		            method: 'GET',
+		            url: '/getVnfDetByVnfidBetDates/'+selectedValueVnf+'/'+startDate+'/'+endDate+'/',
+		           
+		             headers: {
+		                'Content-Type': 'application/json',
+		            }
+		        };
+		 
+		 return $http(request)
+	     .then(function(response) {
+	             console.log("---deviceConfigService::getVersions::Response---" + JSON.stringify(response));
+	             return response;
+	         },
+	         function(response) {
+	             console.log("--deviceConfigService::getVersions::Status Code--", response.status);
+	             return response;
+	         });
+
+		}
+	
+	
+	
+}]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl-v2/build/angular-growl.css b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl-v2/build/angular-growl.css
new file mode 100644
index 0000000..3fcd12d
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl-v2/build/angular-growl.css
@@ -0,0 +1,88 @@
+/**
+ * angular-growl-v2 - v0.7.5 - 2015-06-17
+ * http://janstevens.github.io/angular-growl-2
+ * Copyright (c) 2015 Marco Rinck,Jan Stevens; Licensed MIT
+ */
+/*
+ *  growl-container styles
+ */
+/*
+ * growl-item styles
+ */
+.growl-container > .growl-item {
+  padding: 10px;
+  padding-right: 35px;
+  margin-bottom: 10px;
+  cursor: pointer;
+}
+
+.growl-container > button {
+  border: none;
+  outline:none;
+}
+.growl-container > .growl-item.ng-enter,
+.growl-container > .growl-item.ng-leave {
+  -webkit-transition:0.5s linear all;
+  -moz-transition:0.5s linear all;
+  -o-transition:0.5s linear all;
+  transition:0.5s linear all;
+}
+
+.growl-container > .growl-item.ng-enter,
+.growl-container > .growl-item.ng-leave.ng-leave-active {
+  opacity:0;
+}
+.growl-container > .growl-item.ng-leave,
+.growl-container > .growl-item.ng-enter.ng-enter-active {
+  opacity:1;
+}
+
+.growl-container > div.growl-item {
+  background-position: 12px center;
+  background-repeat: no-repeat;
+}
+
+/*
+ * growl-title styles
+ */
+.growl-title {
+  font-size: 16px;
+}
+.growl-item.icon > .growl-title {
+  margin: 0 0 0 40px;
+}
+
+/*
+ * growl-message styles
+ */
+.growl-item.icon > .growl-message {
+  margin: 0 0 0 40px;
+}
+
+/*
+ * growl background images
+ */
+.growl-container > .alert-info.icon {
+  /* for the white images
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=");
+  */
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAt9JREFUeNpi/P//PwMDAwMDIyMjAzbQsXpv2ePXH5Kevfsk9/3nL1YGBgYGAR6ub7Ii/JckBPmmFAc5rMSmD24uLgsmbzqsdv7e0wPn7z6VZMADLDTk72jLSbjk+No8JNqC1pV7GvddvF3z7vM3JgYigAgf918HPZXW6nCXeoIWtK/aU7Pq8MVmbAZxsrH+52Rn/Y/L4iAr3d7aSLcSZAtQFE7ZfET84OW79bhcGmilG+9hrJGAS37PhduFkzcdVkMWQ7HgzrM3219++MLCQCb49O0H08X7z/Yii8GDaOLGQ85L9p/b8/ffP5wG8HCy/+dmZ/1LyBERdoaFZSGOE1B88Pzd50p8hjMwMDB8+f6TkRgfPnr9PgPGhit++u6jIT5NxioyT1SlRHtZmJke7Dh7Y82bT1+Zcal98PKdEkYcvPn4hQ+fBWfvPJF58+lLcHGQwwZmJsb/+NQ+e/eJFWskEwJffvySIDXi4RawsrD8Y6AS4OPi+IdhgTAv13tqWSDEy/UTwwJ5McGd1LJAQUzwCoYFInzcrTyc7P+JMQBfcDIzMTEoiAsVYViQ62d7y0FXeQW+cJUS4tvIwMDAoCMvsZ+NFXt2MFGVuZ/vb3cEIyfDCruoriXvrz9+KYCuUVlC+CsbK8tvBgYGBn5ujjdP3nyUe/LmAxuyGnEBnj8+ZtoqOb42D2HmYjjDTE02+vGbD1u+fP+JUkHcffGWG4krgM2HzgZqmej1Atb6YOLGQ6anbz/ecfXhCyFi4kRGROCXs76KV0GA/V6iazQGBgaG6oXb1u+5eDvg1+8/eC0wV5e7PyMnVImkKhO5jnj7+WvD+8/fzX/++cPLysz8jZeT/d6fv/94D1+95/T9129GBgYGhhhH4wjk+ploC/CBiRsP2Zy982T95QfPRTRlxT8sK4sRRLeA4f///wgOmaBh6c45tmVT/nWs3luGbMH///+pYwGsFVI+b8sedAsAAwBDyFfm+mD7RwAAAABJRU5ErkJggg==");
+}
+.growl-container > .alert-error.icon {
+  /* for the white images
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=");
+  */
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAwBJREFUeNqsll1IU2EYx5+zj7Ozdo477sOPuZiJ+Nlm2CRZ6yJKJcGICDRvEjY2+rg0EIkuxLzRC+lGEUZGRJd1EQahoikUiBVZF64hzAYqhlvbztzZOdvpavNsunOm9b96X97nfX7P877ned6DcBwHCIKAkNY8HlMkEHge9vutusbGSUyrfXS2ry8OIuI4DpB8gDWPx8RQVHd8b69rZ3X1IkNRGSOUIFKaurqfp0pK3spx/F2T2z0nCFgaHPzBJZNokqZVSZpWJsJhFbW9LYcCJVepOFV5eUSmVFJShYJi9/eJFMMork5MFMsAAP5sbNTs7+7KxBzJMIxj4/FD6TIUhYR8viIAKMpdkwAAKNTqmJBjRCqFM52dkzdnZiR1PT2XNPX1vwvNTgIAIJHJWCGjIpMp2tLffxcAwOJyLWtqa0fFHEtR9AAgx/E9wShyA0CQhBgAVatZfgYx+M9CCSKeAcgwbFfIOB4M4scG4HgoA0DV6gUh4xTDSPjzJE1XiQGUOt3XAwCOvxAypkOhLECKZXUF1MbnDMDscPjxioq4WLvgZWAQBRDEywwAAAA3GjcEj4llG9NjNhYrE7Ilq6vDFqfTmwVQarVzQpsSkUhXZhyNakUAbzLVz7uUxwqSvJ973mkFvd7eldFReZKmjZvz8zqhqsc0mieZOb+bfhwamv21sHDlX75/vcUSuDw+fjrdTbOiVRkM99IlfhJJURS0DQ23D/WitCxOp7fUav1y1ObimpqQqb39lcFm+yLDMO4om/LW1mWLy7WcFwAAoK6svKbU69ncyMpaWs5dGBjotQ8PNxtstve5+zCNJkkYjbeO7KZ8mZ3OnQq7/WFW5SYSwFBUNwDA9+lpMrq1dZ6/riDJlKmt7brZ6dw5dOn5nsxPIyOvN2dnb2SVv17PMpGIlP/oKEgyVdnR0dXkds8c603OB8mNPJ/zggAAACtjY08Di4sP+I++XKXiSq3WD4TReMfscPhP9FfB17epKXvQ53sWXF+vKmluXhJzzAf8HQAC8i1VVpW6ogAAAABJRU5ErkJggg==");
+}
+.growl-container > .alert-success.icon {
+  /* for the white images
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==");
+  */
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAASZJREFUeNrs1bFKA0EQgOF/LyksrkgXi8wbpLTIFEICgnkACxGsbCzdzs5CxCZwvoGFhYUgNmJlJ2wgD6DIlSm0T382d3IkBnOX3S4DW9wsfMssszcmyzJCRkTgCH6A8Ymp1S3gFDgBxsBV0yPeBO6AgzzVBVrGI35fwouYRQFxgCcTEP8CdqOA+MAlLjUB8Y9abVoFBzBqtQWcAfvAM3DjEjfzgRcv+SJfPeAScGq14wMvDtiby3WBiVrdWRcHaIhKG+jP5WPgSFTeRSWtixcVjIC3P/Zi4AGY1MV/uyj/Sd0Chys200r4Qpuq1Wvg3BcO0Ch/TMfTV1H5BoZLZkUlfOlDU6vD/P7jdfCFCkqVpKLyAmwDHeAROHaJ+6w80TZD/7/4GQBAp3eJ4awpVwAAAABJRU5ErkJggg==");
+}
+.growl-container > .alert-warning.icon {
+  /* for the white images
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=");
+  */
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAdhJREFUeNrUlr9LI0EUxz9RixRXWObQwsKAdhJksAjYWlpaeBgYAyciKCh3BzrCgMRf4Fml8Abs9OD+geu0k1GInQcpziLCFXtgkWKLQCx8QtjLHqtG0AfDsu/tzJvv9/vezKaazSYvaV28JjNajRqtJl8SwR6wY7RKdzyB0WoKyAODwGLSeamEi6eBKlCTMQFkrfN/OoXgM5ABisAC0ABKSSZ2J9j9AHAEbFvnv59Wburjub6/gBnP9f08rdzUnougBFwDGw8O6/w34EREfzpFRqs8MAXMWefDSHgOGDFaTT9JZKNVD3AOXFjni/J+IOEV63xgtFoF5kXw+mMRFETYFaGlIb4C8E6+2QQC4NOjKDJa9Qr3S9b525ZQvfUpSYvAshRDYgQl4Jd1/jjiD2ThoEXwM+AHUE6UwGg1BsxKvUetISNqX4C8dHt8ghYhD63zl20WugDOok7rfA3YAvaE3lgEy0A/sBZD3RLwISa2C4TRDu+KdOw6sNHujJGdVYHfRqvBNihCoeqj0PwPgrIcZF9jdhgCt1JBYbsPpChOgAOh+z6BiDMhZdmImRwCWeC9cM5/aBwSukkJ9CsgDex36PKbkSYd7hFRMhJY7/AtW069+b+KuwEAfk2f1A5JePkAAAAASUVORK5CYII=");
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl-v2/build/angular-growl.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl-v2/build/angular-growl.js
new file mode 100644
index 0000000..2bc3e95
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl-v2/build/angular-growl.js
@@ -0,0 +1,419 @@
+/**
+ * angular-growl-v2 - v0.7.5 - 2015-06-17
+ * http://janstevens.github.io/angular-growl-2
+ * Copyright (c) 2015 Marco Rinck,Jan Stevens; Licensed MIT
+ */
+angular.module('angular-growl', []);
+angular.module('angular-growl').directive('growl', [function () {
+    'use strict';
+    return {
+      restrict: 'A',
+      templateUrl: 'templates/growl/growl.html',
+      replace: false,
+      scope: {
+        reference: '@',
+        inline: '=',
+        limitMessages: '='
+      },
+      controller: [
+        '$scope',
+        '$timeout',
+        'growl',
+        'growlMessages',
+        function ($scope, $timeout, growl, growlMessages) {
+          $scope.referenceId = $scope.reference || 0;
+          growlMessages.initDirective($scope.referenceId, $scope.limitMessages);
+          $scope.growlMessages = growlMessages;
+          $scope.inlineMessage = angular.isDefined($scope.inline) ? $scope.inline : growl.inlineMessages();
+          $scope.$watch('limitMessages', function (limitMessages) {
+            var directive = growlMessages.directives[$scope.referenceId];
+            if (!angular.isUndefined(limitMessages) && !angular.isUndefined(directive)) {
+              directive.limitMessages = limitMessages;
+            }
+          });
+          $scope.stopTimeoutClose = function (message) {
+            if (!message.clickToClose) {
+              angular.forEach(message.promises, function (promise) {
+                $timeout.cancel(promise);
+              });
+              if (message.close) {
+                growlMessages.deleteMessage(message);
+              } else {
+                message.close = true;
+              }
+            }
+          };
+          $scope.alertClasses = function (message) {
+            return {
+              'alert-success': message.severity === 'success',
+              'alert-error': message.severity === 'error',
+              'alert-danger': message.severity === 'error',
+              'alert-info': message.severity === 'info',
+              'alert-warning': message.severity === 'warning',
+              'icon': message.disableIcons === false,
+              'alert-dismissable': !message.disableCloseButton
+            };
+          };
+          $scope.showCountDown = function (message) {
+            return !message.disableCountDown && message.ttl > 0;
+          };
+          $scope.wrapperClasses = function () {
+            var classes = {};
+            classes['growl-fixed'] = !$scope.inlineMessage;
+            classes[growl.position()] = true;
+            return classes;
+          };
+          $scope.computeTitle = function (message) {
+            var ret = {
+                'success': 'Success',
+                'error': 'Error',
+                'info': 'Information',
+                'warn': 'Warning'
+              };
+            return ret[message.severity];
+          };
+        }
+      ]
+    };
+  }]);
+angular.module('angular-growl').run([
+  '$templateCache',
+  function ($templateCache) {
+    'use strict';
+    if ($templateCache.get('templates/growl/growl.html') === undefined) {
+      $templateCache.put('templates/growl/growl.html', '<div class="growl-container" ng-class="wrapperClasses()">' + '<div class="growl-item alert" ng-repeat="message in growlMessages.directives[referenceId].messages" ng-class="alertClasses(message)" ng-click="stopTimeoutClose(message)">' + '<button type="button" class="close" data-dismiss="alert" aria-hidden="true" ng-click="growlMessages.deleteMessage(message)" ng-show="!message.disableCloseButton">&times;</button>' + '<button type="button" class="close" aria-hidden="true" ng-show="showCountDown(message)">{{message.countdown}}</button>' + '<h4 class="growl-title" ng-show="message.title" ng-bind="message.title"></h4>' + '<div class="growl-message" ng-bind-html="message.text"></div>' + '</div>' + '</div>');
+    }
+  }
+]);
+angular.module('angular-growl').provider('growl', function () {
+  'use strict';
+  var _ttl = {
+      success: null,
+      error: null,
+      warning: null,
+      info: null
+    }, _messagesKey = 'messages', _messageTextKey = 'text', _messageTitleKey = 'title', _messageSeverityKey = 'severity', _onlyUniqueMessages = true, _messageVariableKey = 'variables', _referenceId = 0, _inline = false, _position = 'top-right', _disableCloseButton = false, _disableIcons = false, _reverseOrder = false, _disableCountDown = false, _translateMessages = true;
+  this.globalTimeToLive = function (ttl) {
+    if (typeof ttl === 'object') {
+      for (var k in ttl) {
+        if (ttl.hasOwnProperty(k)) {
+          _ttl[k] = ttl[k];
+        }
+      }
+    } else {
+      for (var severity in _ttl) {
+        if (_ttl.hasOwnProperty(severity)) {
+          _ttl[severity] = ttl;
+        }
+      }
+    }
+    return this;
+  };
+  this.globalTranslateMessages = function (translateMessages) {
+    _translateMessages = translateMessages;
+    return this;
+  };
+  this.globalDisableCloseButton = function (disableCloseButton) {
+    _disableCloseButton = disableCloseButton;
+    return this;
+  };
+  this.globalDisableIcons = function (disableIcons) {
+    _disableIcons = disableIcons;
+    return this;
+  };
+  this.globalReversedOrder = function (reverseOrder) {
+    _reverseOrder = reverseOrder;
+    return this;
+  };
+  this.globalDisableCountDown = function (countDown) {
+    _disableCountDown = countDown;
+    return this;
+  };
+  this.messageVariableKey = function (messageVariableKey) {
+    _messageVariableKey = messageVariableKey;
+    return this;
+  };
+  this.globalInlineMessages = function (inline) {
+    _inline = inline;
+    return this;
+  };
+  this.globalPosition = function (position) {
+    _position = position;
+    return this;
+  };
+  this.messagesKey = function (messagesKey) {
+    _messagesKey = messagesKey;
+    return this;
+  };
+  this.messageTextKey = function (messageTextKey) {
+    _messageTextKey = messageTextKey;
+    return this;
+  };
+  this.messageTitleKey = function (messageTitleKey) {
+    _messageTitleKey = messageTitleKey;
+    return this;
+  };
+  this.messageSeverityKey = function (messageSeverityKey) {
+    _messageSeverityKey = messageSeverityKey;
+    return this;
+  };
+  this.onlyUniqueMessages = function (onlyUniqueMessages) {
+    _onlyUniqueMessages = onlyUniqueMessages;
+    return this;
+  };
+  this.serverMessagesInterceptor = [
+    '$q',
+    'growl',
+    function ($q, growl) {
+      function checkResponse(response) {
+        if (response !== undefined && response.data && response.data[_messagesKey] && response.data[_messagesKey].length > 0) {
+          growl.addServerMessages(response.data[_messagesKey]);
+        }
+      }
+      return {
+        'response': function (response) {
+          checkResponse(response);
+          return response;
+        },
+        'responseError': function (rejection) {
+          checkResponse(rejection);
+          return $q.reject(rejection);
+        }
+      };
+    }
+  ];
+  this.$get = [
+    '$rootScope',
+    '$interpolate',
+    '$sce',
+    '$filter',
+    '$timeout',
+    'growlMessages',
+    function ($rootScope, $interpolate, $sce, $filter, $timeout, growlMessages) {
+      var translate;
+      growlMessages.onlyUnique = _onlyUniqueMessages;
+      growlMessages.reverseOrder = _reverseOrder;
+      try {
+        translate = $filter('translate');
+      } catch (e) {
+      }
+      function broadcastMessage(message) {
+        if (translate && message.translateMessage) {
+          message.text = translate(message.text, message.variables) || message.text;
+          message.title = translate(message.title) || message.title;
+        } else {
+          var polation = $interpolate(message.text);
+          message.text = polation(message.variables);
+        }
+        var addedMessage = growlMessages.addMessage(message);
+        $rootScope.$broadcast('growlMessage', message);
+        $timeout(function () {
+        }, 0);
+        return addedMessage;
+      }
+      function sendMessage(text, config, severity) {
+        var _config = config || {}, message;
+        message = {
+          text: text,
+          title: _config.title,
+          severity: severity,
+          ttl: _config.ttl || _ttl[severity],
+          variables: _config.variables || {},
+          disableCloseButton: _config.disableCloseButton === undefined ? _disableCloseButton : _config.disableCloseButton,
+          disableIcons: _config.disableIcons === undefined ? _disableIcons : _config.disableIcons,
+          disableCountDown: _config.disableCountDown === undefined ? _disableCountDown : _config.disableCountDown,
+          position: _config.position || _position,
+          referenceId: _config.referenceId || _referenceId,
+          translateMessage: _config.translateMessage === undefined ? _translateMessages : _config.translateMessage,
+          destroy: function () {
+            growlMessages.deleteMessage(message);
+          },
+          setText: function (newText) {
+            message.text = $sce.trustAsHtml(String(newText));
+          },
+          onclose: _config.onclose,
+          onopen: _config.onopen
+        };
+        return broadcastMessage(message);
+      }
+      function warning(text, config) {
+        return sendMessage(text, config, 'warning');
+      }
+      function error(text, config) {
+        return sendMessage(text, config, 'error');
+      }
+      function info(text, config) {
+        return sendMessage(text, config, 'info');
+      }
+      function success(text, config) {
+        return sendMessage(text, config, 'success');
+      }
+      function general(text, config, severity) {
+        severity = (severity || 'error').toLowerCase();
+        return sendMessage(text, config, severity);
+      }
+      function addServerMessages(messages) {
+        if (!messages || !messages.length) {
+          return;
+        }
+        var i, message, severity, length;
+        length = messages.length;
+        for (i = 0; i < length; i++) {
+          message = messages[i];
+          if (message[_messageTextKey]) {
+            severity = (message[_messageSeverityKey] || 'error').toLowerCase();
+            var config = {};
+            config.variables = message[_messageVariableKey] || {};
+            config.title = message[_messageTitleKey];
+            sendMessage(message[_messageTextKey], config, severity);
+          }
+        }
+      }
+      function onlyUnique() {
+        return _onlyUniqueMessages;
+      }
+      function reverseOrder() {
+        return _reverseOrder;
+      }
+      function inlineMessages() {
+        return _inline;
+      }
+      function position() {
+        return _position;
+      }
+      return {
+        warning: warning,
+        error: error,
+        info: info,
+        success: success,
+        general: general,
+        addServerMessages: addServerMessages,
+        onlyUnique: onlyUnique,
+        reverseOrder: reverseOrder,
+        inlineMessages: inlineMessages,
+        position: position
+      };
+    }
+  ];
+});
+angular.module('angular-growl').service('growlMessages', [
+  '$sce',
+  '$timeout',
+  function ($sce, $timeout) {
+    'use strict';
+    var self = this;
+    this.directives = {};
+    var preloadDirectives = {};
+    function preLoad(referenceId) {
+      var directive;
+      if (preloadDirectives[referenceId]) {
+        directive = preloadDirectives[referenceId];
+      } else {
+        directive = preloadDirectives[referenceId] = { messages: [] };
+      }
+      return directive;
+    }
+    function directiveForRefId(referenceId) {
+      var refId = referenceId || 0;
+      return self.directives[refId] || preloadDirectives[refId];
+    }
+    this.initDirective = function (referenceId, limitMessages) {
+      if (preloadDirectives[referenceId]) {
+        this.directives[referenceId] = preloadDirectives[referenceId];
+        this.directives[referenceId].limitMessages = limitMessages;
+      } else {
+        this.directives[referenceId] = {
+          messages: [],
+          limitMessages: limitMessages
+        };
+      }
+      return this.directives[referenceId];
+    };
+    this.getAllMessages = function (referenceId) {
+      referenceId = referenceId || 0;
+      var messages;
+      if (directiveForRefId(referenceId)) {
+        messages = directiveForRefId(referenceId).messages;
+      } else {
+        messages = [];
+      }
+      return messages;
+    };
+    this.destroyAllMessages = function (referenceId) {
+      var messages = this.getAllMessages(referenceId);
+      for (var i = messages.length - 1; i >= 0; i--) {
+        messages[i].destroy();
+      }
+      var directive = directiveForRefId(referenceId);
+      if (directive) {
+        directive.messages = [];
+      }
+    };
+    this.addMessage = function (message) {
+      var directive, messages, found, msgText;
+      if (this.directives[message.referenceId]) {
+        directive = this.directives[message.referenceId];
+      } else {
+        directive = preLoad(message.referenceId);
+      }
+      messages = directive.messages;
+      if (this.onlyUnique) {
+        angular.forEach(messages, function (msg) {
+          msgText = $sce.getTrustedHtml(msg.text);
+          if (message.text === msgText && message.severity === msg.severity && message.title === msg.title) {
+            found = true;
+          }
+        });
+        if (found) {
+          return;
+        }
+      }
+      message.text = $sce.trustAsHtml(String(message.text));
+      if (message.ttl && message.ttl !== -1) {
+        message.countdown = message.ttl / 1000;
+        message.promises = [];
+        message.close = false;
+        message.countdownFunction = function () {
+          if (message.countdown > 1) {
+            message.countdown--;
+            message.promises.push($timeout(message.countdownFunction, 1000));
+          } else {
+            message.countdown--;
+          }
+        };
+      }
+      if (angular.isDefined(directive.limitMessages)) {
+        var diff = messages.length - (directive.limitMessages - 1);
+        if (diff > 0) {
+          messages.splice(directive.limitMessages - 1, diff);
+        }
+      }
+      if (this.reverseOrder) {
+        messages.unshift(message);
+      } else {
+        messages.push(message);
+      }
+      if (typeof message.onopen === 'function') {
+        message.onopen();
+      }
+      if (message.ttl && message.ttl !== -1) {
+        var self = this;
+        message.promises.push($timeout(angular.bind(this, function () {
+          self.deleteMessage(message);
+        }), message.ttl));
+        message.promises.push($timeout(message.countdownFunction, 1000));
+      }
+      return message;
+    };
+    this.deleteMessage = function (message) {
+      var messages = this.getAllMessages(message.referenceId), index = messages.indexOf(message);
+      if (index > -1) {
+        messages[index].close = true;
+        messages.splice(index, 1);
+      }
+      if (typeof message.onclose === 'function') {
+        message.onclose();
+      }
+    };
+  }
+]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl-v2/build/angular-growl.min.css b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl-v2/build/angular-growl.min.css
new file mode 100644
index 0000000..0de520b
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl-v2/build/angular-growl.min.css
@@ -0,0 +1,7 @@
+/**
+ * angular-growl-v2 - v0.7.5 - 2015-06-17
+ * http://janstevens.github.io/angular-growl-2
+ * Copyright (c) 2015 Marco Rinck,Jan Stevens; Licensed MIT
+ */
+
+.growl-container.growl-fixed{position:fixed;float:right;width:90%;max-width:400px;z-index:9999}.growl-container.growl-fixed.top-right{top:10px;right:15px}.growl-container.growl-fixed.bottom-right{bottom:10px;right:15px}.growl-container.growl-fixed.middle-right{top:49%;right:15px}.growl-container.growl-fixed.top-left{top:10px;left:15px}.growl-container.growl-fixed.bottom-left{bottom:10px;left:15px}.growl-container.growl-fixed.middle-left{top:49%;left:15px}.growl-container.growl-fixed.top-center{top:10px;left:50%;margin-left:-200px}.growl-container.growl-fixed.bottom-center{bottom:10px;left:50%;margin-left:-200px}.growl-container.growl-fixed.middle-center{top:49%;left:50%;margin-left:-200px}.growl-container>.growl-item{padding:10px;padding-right:35px;margin-bottom:10px;cursor:pointer}.growl-container>button{border:0;outline:0}.growl-container>.growl-item.ng-enter,.growl-container>.growl-item.ng-leave{-webkit-transition:.5s linear all;-moz-transition:.5s linear all;-o-transition:.5s linear all;transition:.5s linear all}.growl-container>.growl-item.ng-enter,.growl-container>.growl-item.ng-leave.ng-leave-active{opacity:0}.growl-container>.growl-item.ng-leave,.growl-container>.growl-item.ng-enter.ng-enter-active{opacity:1}.growl-container>div.growl-item{background-position:12px center;background-repeat:no-repeat}.growl-title{font-size:16px}.growl-item.icon>.growl-title{margin:0 0 0 40px}.growl-item.icon>.growl-message{margin:0 0 0 40px}.growl-container>.alert-info.icon{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAt9JREFUeNpi/P//PwMDAwMDIyMjAzbQsXpv2ePXH5Kevfsk9/3nL1YGBgYGAR6ub7Ii/JckBPmmFAc5rMSmD24uLgsmbzqsdv7e0wPn7z6VZMADLDTk72jLSbjk+No8JNqC1pV7GvddvF3z7vM3JgYigAgf918HPZXW6nCXeoIWtK/aU7Pq8MVmbAZxsrH+52Rn/Y/L4iAr3d7aSLcSZAtQFE7ZfET84OW79bhcGmilG+9hrJGAS37PhduFkzcdVkMWQ7HgzrM3219++MLCQCb49O0H08X7z/Yii8GDaOLGQ85L9p/b8/ffP5wG8HCy/+dmZ/1LyBERdoaFZSGOE1B88Pzd50p8hjMwMDB8+f6TkRgfPnr9PgPGhit++u6jIT5NxioyT1SlRHtZmJke7Dh7Y82bT1+Zcal98PKdEkYcvPn4hQ+fBWfvPJF58+lLcHGQwwZmJsb/+NQ+e/eJFWskEwJffvySIDXi4RawsrD8Y6AS4OPi+IdhgTAv13tqWSDEy/UTwwJ5McGd1LJAQUzwCoYFInzcrTyc7P+JMQBfcDIzMTEoiAsVYViQ62d7y0FXeQW+cJUS4tvIwMDAoCMvsZ+NFXt2MFGVuZ/vb3cEIyfDCruoriXvrz9+KYCuUVlC+CsbK8tvBgYGBn5ujjdP3nyUe/LmAxuyGnEBnj8+ZtoqOb42D2HmYjjDTE02+vGbD1u+fP+JUkHcffGWG4krgM2HzgZqmej1Atb6YOLGQ6anbz/ecfXhCyFi4kRGROCXs76KV0GA/V6iazQGBgaG6oXb1u+5eDvg1+8/eC0wV5e7PyMnVImkKhO5jnj7+WvD+8/fzX/++cPLysz8jZeT/d6fv/94D1+95/T9129GBgYGhhhH4wjk+ploC/CBiRsP2Zy982T95QfPRTRlxT8sK4sRRLeA4f///wgOmaBh6c45tmVT/nWs3luGbMH///+pYwGsFVI+b8sedAsAAwBDyFfm+mD7RwAAAABJRU5ErkJggg==")}.growl-container>.alert-error.icon{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAwBJREFUeNqsll1IU2EYx5+zj7Ozdo477sOPuZiJ+Nlm2CRZ6yJKJcGICDRvEjY2+rg0EIkuxLzRC+lGEUZGRJd1EQahoikUiBVZF64hzAYqhlvbztzZOdvpavNsunOm9b96X97nfX7P877ned6DcBwHCIKAkNY8HlMkEHge9vutusbGSUyrfXS2ry8OIuI4DpB8gDWPx8RQVHd8b69rZ3X1IkNRGSOUIFKaurqfp0pK3spx/F2T2z0nCFgaHPzBJZNokqZVSZpWJsJhFbW9LYcCJVepOFV5eUSmVFJShYJi9/eJFMMork5MFMsAAP5sbNTs7+7KxBzJMIxj4/FD6TIUhYR8viIAKMpdkwAAKNTqmJBjRCqFM52dkzdnZiR1PT2XNPX1vwvNTgIAIJHJWCGjIpMp2tLffxcAwOJyLWtqa0fFHEtR9AAgx/E9wShyA0CQhBgAVatZfgYx+M9CCSKeAcgwbFfIOB4M4scG4HgoA0DV6gUh4xTDSPjzJE1XiQGUOt3XAwCOvxAypkOhLECKZXUF1MbnDMDscPjxioq4WLvgZWAQBRDEywwAAAA3GjcEj4llG9NjNhYrE7Ilq6vDFqfTmwVQarVzQpsSkUhXZhyNakUAbzLVz7uUxwqSvJ973mkFvd7eldFReZKmjZvz8zqhqsc0mieZOb+bfhwamv21sHDlX75/vcUSuDw+fjrdTbOiVRkM99IlfhJJURS0DQ23D/WitCxOp7fUav1y1ObimpqQqb39lcFm+yLDMO4om/LW1mWLy7WcFwAAoK6svKbU69ncyMpaWs5dGBjotQ8PNxtstve5+zCNJkkYjbeO7KZ8mZ3OnQq7/WFW5SYSwFBUNwDA9+lpMrq1dZ6/riDJlKmt7brZ6dw5dOn5nsxPIyOvN2dnb2SVv17PMpGIlP/oKEgyVdnR0dXkds8c603OB8mNPJ/zggAAACtjY08Di4sP+I++XKXiSq3WD4TReMfscPhP9FfB17epKXvQ53sWXF+vKmluXhJzzAf8HQAC8i1VVpW6ogAAAABJRU5ErkJggg==")}.growl-container>.alert-success.icon{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAASZJREFUeNrs1bFKA0EQgOF/LyksrkgXi8wbpLTIFEICgnkACxGsbCzdzs5CxCZwvoGFhYUgNmJlJ2wgD6DIlSm0T382d3IkBnOX3S4DW9wsfMssszcmyzJCRkTgCH6A8Ymp1S3gFDgBxsBV0yPeBO6AgzzVBVrGI35fwouYRQFxgCcTEP8CdqOA+MAlLjUB8Y9abVoFBzBqtQWcAfvAM3DjEjfzgRcv+SJfPeAScGq14wMvDtiby3WBiVrdWRcHaIhKG+jP5WPgSFTeRSWtixcVjIC3P/Zi4AGY1MV/uyj/Sd0Chys200r4Qpuq1Wvg3BcO0Ch/TMfTV1H5BoZLZkUlfOlDU6vD/P7jdfCFCkqVpKLyAmwDHeAROHaJ+6w80TZD/7/4GQBAp3eJ4awpVwAAAABJRU5ErkJggg==")}.growl-container>.alert-warning.icon{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAdhJREFUeNrUlr9LI0EUxz9RixRXWObQwsKAdhJksAjYWlpaeBgYAyciKCh3BzrCgMRf4Fml8Abs9OD+geu0k1GInQcpziLCFXtgkWKLQCx8QtjLHqtG0AfDsu/tzJvv9/vezKaazSYvaV28JjNajRqtJl8SwR6wY7RKdzyB0WoKyAODwGLSeamEi6eBKlCTMQFkrfN/OoXgM5ABisAC0ABKSSZ2J9j9AHAEbFvnv59Wburjub6/gBnP9f08rdzUnougBFwDGw8O6/w34EREfzpFRqs8MAXMWefDSHgOGDFaTT9JZKNVD3AOXFjni/J+IOEV63xgtFoF5kXw+mMRFETYFaGlIb4C8E6+2QQC4NOjKDJa9Qr3S9b525ZQvfUpSYvAshRDYgQl4Jd1/jjiD2ThoEXwM+AHUE6UwGg1BsxKvUetISNqX4C8dHt8ghYhD63zl20WugDOok7rfA3YAvaE3lgEy0A/sBZD3RLwISa2C4TRDu+KdOw6sNHujJGdVYHfRqvBNihCoeqj0PwPgrIcZF9jdhgCt1JBYbsPpChOgAOh+z6BiDMhZdmImRwCWeC9cM5/aBwSukkJ9CsgDex36PKbkSYd7hFRMhJY7/AtW069+b+KuwEAfk2f1A5JePkAAAAASUVORK5CYII=")}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl-v2/build/angular-growl.min.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl-v2/build/angular-growl.min.js
new file mode 100644
index 0000000..f2cad7f
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl-v2/build/angular-growl.min.js
@@ -0,0 +1,6 @@
+/**
+ * angular-growl-v2 - v0.7.5 - 2015-06-17
+ * http://janstevens.github.io/angular-growl-2
+ * Copyright (c) 2015 Marco Rinck,Jan Stevens; Licensed MIT
+ */
+angular.module("angular-growl",[]),angular.module("angular-growl").directive("growl",[function(){"use strict";return{restrict:"A",templateUrl:"templates/growl/growl.html",replace:!1,scope:{reference:"@",inline:"=",limitMessages:"="},controller:["$scope","$timeout","growl","growlMessages",function(a,b,c,d){a.referenceId=a.reference||0,d.initDirective(a.referenceId,a.limitMessages),a.growlMessages=d,a.inlineMessage=angular.isDefined(a.inline)?a.inline:c.inlineMessages(),a.$watch("limitMessages",function(b){var c=d.directives[a.referenceId];angular.isUndefined(b)||angular.isUndefined(c)||(c.limitMessages=b)}),a.stopTimeoutClose=function(a){a.clickToClose||(angular.forEach(a.promises,function(a){b.cancel(a)}),a.close?d.deleteMessage(a):a.close=!0)},a.alertClasses=function(a){return{"alert-success":"success"===a.severity,"alert-error":"error"===a.severity,"alert-danger":"error"===a.severity,"alert-info":"info"===a.severity,"alert-warning":"warning"===a.severity,icon:a.disableIcons===!1,"alert-dismissable":!a.disableCloseButton}},a.showCountDown=function(a){return!a.disableCountDown&&a.ttl>0},a.wrapperClasses=function(){var b={};return b["growl-fixed"]=!a.inlineMessage,b[c.position()]=!0,b},a.computeTitle=function(a){var b={success:"Success",error:"Error",info:"Information",warn:"Warning"};return b[a.severity]}}]}}]),angular.module("angular-growl").run(["$templateCache",function(a){"use strict";void 0===a.get("templates/growl/growl.html")&&a.put("templates/growl/growl.html",'<div class="growl-container" ng-class="wrapperClasses()"><div class="growl-item alert" ng-repeat="message in growlMessages.directives[referenceId].messages" ng-class="alertClasses(message)" ng-click="stopTimeoutClose(message)"><button type="button" class="close" data-dismiss="alert" aria-hidden="true" ng-click="growlMessages.deleteMessage(message)" ng-show="!message.disableCloseButton">&times;</button><button type="button" class="close" aria-hidden="true" ng-show="showCountDown(message)">{{message.countdown}}</button><h4 class="growl-title" ng-show="message.title" ng-bind="message.title"></h4><div class="growl-message" ng-bind-html="message.text"></div></div></div>')}]),angular.module("angular-growl").provider("growl",function(){"use strict";var a={success:null,error:null,warning:null,info:null},b="messages",c="text",d="title",e="severity",f=!0,g="variables",h=0,i=!1,j="top-right",k=!1,l=!1,m=!1,n=!1,o=!0;this.globalTimeToLive=function(b){if("object"==typeof b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);else for(var d in a)a.hasOwnProperty(d)&&(a[d]=b);return this},this.globalTranslateMessages=function(a){return o=a,this},this.globalDisableCloseButton=function(a){return k=a,this},this.globalDisableIcons=function(a){return l=a,this},this.globalReversedOrder=function(a){return m=a,this},this.globalDisableCountDown=function(a){return n=a,this},this.messageVariableKey=function(a){return g=a,this},this.globalInlineMessages=function(a){return i=a,this},this.globalPosition=function(a){return j=a,this},this.messagesKey=function(a){return b=a,this},this.messageTextKey=function(a){return c=a,this},this.messageTitleKey=function(a){return d=a,this},this.messageSeverityKey=function(a){return e=a,this},this.onlyUniqueMessages=function(a){return f=a,this},this.serverMessagesInterceptor=["$q","growl",function(a,c){function d(a){void 0!==a&&a.data&&a.data[b]&&a.data[b].length>0&&c.addServerMessages(a.data[b])}return{response:function(a){return d(a),a},responseError:function(b){return d(b),a.reject(b)}}}],this.$get=["$rootScope","$interpolate","$sce","$filter","$timeout","growlMessages",function(b,p,q,r,s,t){function u(a){if(G&&a.translateMessage)a.text=G(a.text,a.variables)||a.text,a.title=G(a.title)||a.title;else{var c=p(a.text);a.text=c(a.variables)}var d=t.addMessage(a);return b.$broadcast("growlMessage",a),s(function(){},0),d}function v(b,c,d){var e,f=c||{};return e={text:b,title:f.title,severity:d,ttl:f.ttl||a[d],variables:f.variables||{},disableCloseButton:void 0===f.disableCloseButton?k:f.disableCloseButton,disableIcons:void 0===f.disableIcons?l:f.disableIcons,disableCountDown:void 0===f.disableCountDown?n:f.disableCountDown,position:f.position||j,referenceId:f.referenceId||h,translateMessage:void 0===f.translateMessage?o:f.translateMessage,destroy:function(){t.deleteMessage(e)},setText:function(a){e.text=q.trustAsHtml(String(a))},onclose:f.onclose,onopen:f.onopen},u(e)}function w(a,b){return v(a,b,"warning")}function x(a,b){return v(a,b,"error")}function y(a,b){return v(a,b,"info")}function z(a,b){return v(a,b,"success")}function A(a,b,c){return c=(c||"error").toLowerCase(),v(a,b,c)}function B(a){if(a&&a.length){var b,f,h,i;for(i=a.length,b=0;i>b;b++)if(f=a[b],f[c]){h=(f[e]||"error").toLowerCase();var j={};j.variables=f[g]||{},j.title=f[d],v(f[c],j,h)}}}function C(){return f}function D(){return m}function E(){return i}function F(){return j}var G;t.onlyUnique=f,t.reverseOrder=m;try{G=r("translate")}catch(H){}return{warning:w,error:x,info:y,success:z,general:A,addServerMessages:B,onlyUnique:C,reverseOrder:D,inlineMessages:E,position:F}}]}),angular.module("angular-growl").service("growlMessages",["$sce","$timeout",function(a,b){"use strict";function c(a){var b;return b=f[a]?f[a]:f[a]={messages:[]}}function d(a){var b=a||0;return e.directives[b]||f[b]}var e=this;this.directives={};var f={};this.initDirective=function(a,b){return f[a]?(this.directives[a]=f[a],this.directives[a].limitMessages=b):this.directives[a]={messages:[],limitMessages:b},this.directives[a]},this.getAllMessages=function(a){a=a||0;var b;return b=d(a)?d(a).messages:[]},this.destroyAllMessages=function(a){for(var b=this.getAllMessages(a),c=b.length-1;c>=0;c--)b[c].destroy();var e=d(a);e&&(e.messages=[])},this.addMessage=function(d){var e,f,g,h;if(e=this.directives[d.referenceId]?this.directives[d.referenceId]:c(d.referenceId),f=e.messages,!this.onlyUnique||(angular.forEach(f,function(b){h=a.getTrustedHtml(b.text),d.text===h&&d.severity===b.severity&&d.title===b.title&&(g=!0)}),!g)){if(d.text=a.trustAsHtml(String(d.text)),d.ttl&&-1!==d.ttl&&(d.countdown=d.ttl/1e3,d.promises=[],d.close=!1,d.countdownFunction=function(){d.countdown>1?(d.countdown--,d.promises.push(b(d.countdownFunction,1e3))):d.countdown--}),angular.isDefined(e.limitMessages)){var i=f.length-(e.limitMessages-1);i>0&&f.splice(e.limitMessages-1,i)}if(this.reverseOrder?f.unshift(d):f.push(d),"function"==typeof d.onopen&&d.onopen(),d.ttl&&-1!==d.ttl){var j=this;d.promises.push(b(angular.bind(this,function(){j.deleteMessage(d)}),d.ttl)),d.promises.push(b(d.countdownFunction,1e3))}return d}},this.deleteMessage=function(a){var b=this.getAllMessages(a.referenceId),c=b.indexOf(a);c>-1&&(b[c].close=!0,b.splice(c,1)),"function"==typeof a.onclose&&a.onclose()}}]);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl.min.css b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl.min.css
new file mode 100644
index 0000000..4b326d1
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl.min.css
@@ -0,0 +1,7 @@
+/**
+ * angular-growl - v0.4.0 - 2013-11-19
+ * https://github.com/marcorinck/angular-growl
+ * Copyright (c) 2013 Marco Rinck; Licensed MIT
+ */
+
+.growl{position:fixed;top:10px;right:10px;float:right;width:250px}.growl-item.ng-enter,.growl-item.ng-leave{-webkit-transition:.5s linear all;-moz-transition:.5s linear all;-o-transition:.5s linear all;transition:.5s linear all}.growl-item.ng-enter,.growl-item.ng-leave.ng-leave-active{opacity:0}.growl-item.ng-leave,.growl-item.ng-enter.ng-enter-active{opacity:1}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl.min.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl.min.js
new file mode 100644
index 0000000..e07b22b
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-growl.min.js
@@ -0,0 +1,6 @@
+/**
+ * angular-growl - v0.4.0 - 2013-11-19
+ * https://github.com/marcorinck/angular-growl
+ * Copyright (c) 2013 Marco Rinck; Licensed MIT
+ */
+angular.module("angular-growl",[]),angular.module("angular-growl").directive("growl",["$rootScope",function(a){"use strict";return{restrict:"A",template:'<div class="growl">	<div class="growl-item alert" ng-repeat="message in messages" ng-class="computeClasses(message)">		<button type="button" class="close" ng-click="deleteMessage(message)">&times;</button>       <div ng-switch="message.enableHtml">           <div ng-switch-when="true" ng-bind-html="message.text"></div>           <div ng-switch-default ng-bind="message.text"></div>       </div>	</div></div>',replace:!1,scope:!0,controller:["$scope","$timeout","growl",function(b,c,d){function e(a){b.messages.push(a),a.ttl&&-1!==a.ttl&&c(function(){b.deleteMessage(a)},a.ttl)}var f=d.onlyUnique();b.messages=[],a.$on("growlMessage",function(a,c){var d;f?(angular.forEach(b.messages,function(a){c.text===a.text&&c.severity===a.severity&&(d=!0)}),d||e(c)):e(c)}),b.deleteMessage=function(a){var c=b.messages.indexOf(a);c>-1&&b.messages.splice(c,1)},b.computeClasses=function(a){return{"alert-success":"success"===a.severity,"alert-error":"error"===a.severity,"alert-danger":"error"===a.severity,"alert-info":"info"===a.severity,"alert-warning":"warn"===a.severity}}}]}}]),angular.module("angular-growl").provider("growl",function(){"use strict";var a=null,b=!1,c="messages",d="text",e="severity",f=!0;this.globalTimeToLive=function(b){a=b},this.globalEnableHtml=function(a){b=a},this.messagesKey=function(a){c=a},this.messageTextKey=function(a){d=a},this.messageSeverityKey=function(a){e=a},this.onlyUniqueMessages=function(a){f=a},this.serverMessagesInterceptor=["$q","growl",function(a,b){function d(a){a.data[c]&&a.data[c].length>0&&b.addServerMessages(a.data[c])}function e(a){return d(a),a}function f(b){return d(b),a.reject(b)}return function(a){return a.then(e,f)}}],this.$get=["$rootScope","$filter",function(c,g){function h(a){p&&(a.text=p(a.text)),c.$broadcast("growlMessage",a)}function i(c,d,e){var f,g=d||{};f={text:c,severity:e,ttl:g.ttl||a,enableHtml:g.enableHtml||b},h(f)}function j(a,b){i(a,b,"warn")}function k(a,b){i(a,b,"error")}function l(a,b){i(a,b,"info")}function m(a,b){i(a,b,"success")}function n(a){var b,c,f,g;for(g=a.length,b=0;g>b;b++)if(c=a[b],c[d]&&c[e]){switch(c[e]){case"warn":f="warn";break;case"success":f="success";break;case"info":f="info";break;case"error":f="error"}i(c[d],void 0,f)}}function o(){return f}var p;try{p=g("translate")}catch(q){}return{addWarnMessage:j,addErrorMessage:k,addInfoMessage:l,addSuccessMessage:m,addServerMessages:n,onlyUnique:o}}]});
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.editorconfig b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.editorconfig
new file mode 100644
index 0000000..8565360
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.editorconfig
@@ -0,0 +1,18 @@
+# This file is for unifying the coding style for different editors and IDEs
+# editorconfig.org
+
+root = true
+
+[*]
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+# Tabs in JS unless otherwise specified
+[**.js]
+indent_style = space
+indent_size = 2
+
+[*.md]
+trim_trailing_whitespace = false
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.gitattributes b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.gitattributes
new file mode 100644
index 0000000..bdb0cab
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.gitattributes
@@ -0,0 +1,17 @@
+# Auto detect text files and perform LF normalization
+* text=auto
+
+# Custom for Visual Studio
+*.cs     diff=csharp
+
+# Standard to msysgit
+*.doc	 diff=astextplain
+*.DOC	 diff=astextplain
+*.docx diff=astextplain
+*.DOCX diff=astextplain
+*.dot  diff=astextplain
+*.DOT  diff=astextplain
+*.pdf  diff=astextplain
+*.PDF	 diff=astextplain
+*.rtf	 diff=astextplain
+*.RTF	 diff=astextplain
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.jscsrc b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.jscsrc
new file mode 100644
index 0000000..e91fa41
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.jscsrc
@@ -0,0 +1,52 @@
+{
+  "requireCurlyBraces": [
+    "try",
+    "catch",
+    "do"
+  ],
+  "requireCamelCaseOrUpperCaseIdentifiers": "ignoreProperties",
+  "requireCapitalizedConstructors": true,
+  "validateIndentation": 2,
+  "validateQuoteMarks": "'",
+
+  "disallowQuotedKeysInObjects": true,
+  "disallowSpaceAfterObjectKeys": true,
+
+  "requireSpaceBeforeBinaryOperators": [
+    "=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=",
+    "&=", "|=", "^=", "+=",
+
+    "+", "-", "*", "/", "%", "<<", ">>", ">>>", "&",
+    "|", "^", "&&", "||", "===", "==", ">=",
+    "<=", "<", ">", "!=", "!=="
+  ],
+  "requireSpaceAfterBinaryOperators": true,
+  "requireSpacesInConditionalExpression": true,
+  "requireSpaceBeforeBlockStatements": true,
+  "requireSpacesInForStatement": true,
+  "requireLineFeedAtFileEnd": true,
+  "requireSpacesInFunctionExpression": {
+    "beforeOpeningCurlyBrace": true
+  },
+  "requireDotNotation": true,
+  "disallowSpacesInsideArrayBrackets": "all",
+  "disallowSpacesInsideParentheses": true,
+
+
+  "validateJSDoc": {
+    "checkParamNames": true,
+    "requireParamTypes": true
+  },
+
+  "disallowMultipleLineBreaks": true,
+  "disallowNewlineBeforeBlockStatements": true,
+  "disallowKeywords": [ "with" ],
+
+  "excludeFiles": [
+    "bower_components/**",
+    "node_modules/**",
+    "dist/**",
+    "test/coverage/**",
+    "examples/smoothscroll.min.js"
+  ]
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.jshintignore b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.jshintignore
new file mode 100644
index 0000000..997cf2d
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.jshintignore
@@ -0,0 +1,6 @@
+bower_components/
+node_modules/
+dist/
+tmp/
+examples/
+
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.jshintrc b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.jshintrc
new file mode 100644
index 0000000..c569ff2
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.jshintrc
@@ -0,0 +1,19 @@
+{
+  "strict"        : true,     // true: Requires all functions run in ES5 Strict Mode
+  "undef"         : true,     // true: Require all non-global variables to be declared (prevents global leaks)
+  "unused"        : true,     // true: Require all defined variables be used
+  "noempty"       : true,     // Prohibit use of empty blocks
+  "trailing"      : true,     // Prohibit trailing whitespaces.
+  "white"         : false,    // Check against strict whitespace and indentation rules.
+  "indent"        : 2,        // {int} Number of spaces to use for indentation
+  "newcap"        : true,     // true: Require capitalization of all constructor functions e.g. `new F()`
+  "quotmark"      : "single", // Quotation mark consistency
+  "-W058"         : true,     // Missing '()' invoking a constructor
+  "browser"       : true,     // Standard browser globals e.g. `window`, `document`.
+  "predef"        : [         // Custom globals.
+    "angular",
+    "G_vmlCanvasManager",
+    "require",
+    "console"
+  ]
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.npmignore b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.npmignore
new file mode 100644
index 0000000..aeb776d
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/.npmignore
@@ -0,0 +1,4 @@
+.idea/
+node_modules/
+test/fixtures/shots/
+bower_components/
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/LICENSE b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/LICENSE
new file mode 100644
index 0000000..0f2fefc
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Deepu k Sasidharan
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/README.md b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/README.md
new file mode 100644
index 0000000..bc3190d
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/README.md
@@ -0,0 +1,121 @@
+# angular-diff
+An Angular JS plugin to compare and show object differences in JSON format. [Demo](http://hipster-labs.github.io/angular-object-diff/)
+
+![Screenshot](/screenshot.png)
+# Installation
+
+with bower
+```
+bower install angular-object-diff --save
+```
+
+```
+<link type="text/css" href="bower_components/dist/angular-object-diff.css" rel='stylesheet'>
+<script type="text/javascript" src="bower_components/dist/angular-object-diff.js"></script>
+```
+
+or with npm
+```
+npm i angular-object-diff
+```
+
+# Available methods on `ObjectDiff` service
+
+
+`setOpenChar`: set the opening character for the view, default is `{`
+
+`setCloseChar`: set the closing character for the view, default is `}`
+
+`diff`: compare and build all the difference of two objects including prototype properties
+
+`diffOwnProperties`: compare and build the difference of two objects taking only its own properties into account
+
+`toJsonView`: format a diff object to a full JSON formatted object view
+
+`toJsonDiffView`: format a diff object to a JSON formatted view with only changes
+
+`objToJsonView`: format any javascript object to a JSON formatted view
+
+
+# Available filters
+
+`toJsonView`: format a diff object to a full JSON formatted object view
+
+`toJsonDiffView`: format a diff object to a JSON formatted view with only changes
+
+`objToJsonView`: format any javascript object to a JSON formatted view
+
+
+# Usage
+
+Declare the dependency
+```
+angular.module('myModule', ['ds.objectDiff']);
+
+```
+
+Inject the service
+
+```javascript
+angular.module('myModule')
+    .controller('MyController', ['$scope', 'ObjectDiff', function($scope, ObjectDiff){
+        $scope.yourObjectOne = {//all your object attributes and values here};
+        $scope.yourObjectTwo = {//all your object attributes and values here};
+
+        // This is required only if you want to show a JSON formatted view of your object without using a filter
+        $scope.yourObjectOneJsonView = ObjectDiff.objToJsonView($scope.yourObjectOne);
+        $scope.yourObjectTwoJsonView = ObjectDiff.objToJsonView($scope.yourObjectTwo);
+
+        // you can directly diff your objects js now or parse a Json to object and diff
+        var diff = ObjectDiff.diffOwnProperties($scope.yourObjectOne, $scope.yourObjectTwo);
+        
+        // you can directly diff your objects including prototype properties and inherited properties using `diff` method
+        var diffAll = ObjectDiff.diff($scope.yourObjectOne, $scope.yourObjectTwo);
+
+        // gives a full object view with Diff highlighted
+        $scope.diffValue = ObjectDiff.toJsonView(diff);
+        
+        // gives object view with onlys Diff highlighted
+        $scope.diffValueChanges = ObjectDiff.toJsonDiffView(diff);
+    
+    }]);
+```
+
+Bind the variables directly in your html using the `ng-bind-html` angular directive.
+Use a `<pre>` element for better results
+
+```html
+<pre ng-bind-html="diffValue"></pre>
+<pre ng-bind-html="diffValueChanges"></pre>
+<pre ng-bind-html="yourObjectOneJsonView"></pre>
+<pre ng-bind-html="yourObjectTwoJsonView"></pre>
+```
+
+The same can be done with filters as well
+
+```javascript
+angular.module('myModule')
+    .controller('MyController', ['$scope', 'ObjectDiff', function($scope, ObjectDiff){
+        $scope.yourObjectOne = {//all your object attributes and values here};
+        $scope.yourObjectTwo = {//all your object attributes and values here};
+
+        // you can directly diff your objects js now or parse a Json to object and diff
+        var diff = ObjectDiff.diffOwnProperties($scope.yourObjectOne, $scope.yourObjectTwo);
+        
+        // you can directly diff your objects including prototype properties and inherited properties using `diff` method
+        var diffAll = ObjectDiff.diff($scope.yourObjectOne, $scope.yourObjectTwo);
+    
+    }]);
+```
+
+Bind the variables directly in your html using the `ng-bind-html` angular directive.
+Use a `<pre>` element for better results
+
+```html
+<pre ng-bind-html="diffValue | toJsonView"></pre>
+<pre ng-bind-html="diffValueChanges | toJsonDiffView"></pre>
+<pre ng-bind-html="yourObjectOneJsonView | objToJsonView"></pre>
+<pre ng-bind-html="yourObjectTwoJsonView | objToJsonView"></pre>
+```
+
+Inspired from https://github.com/NV/objectDiff.js
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/angular-object-diff.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/angular-object-diff.js
new file mode 100644
index 0000000..08b124f
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/angular-object-diff.js
@@ -0,0 +1,344 @@
+(function () {
+    'use strict';
+
+    angular
+        .module('ds.objectDiff', [])
+        .factory('ObjectDiff', objectDiff)
+        .filter('toJsonView', toJsonViewFilter)
+        .filter('toJsonDiffView', toJsonDiffViewFilter)
+        .filter('objToJsonView', objToJsonViewFilter);
+
+    objectDiff.$inject = ['$sce'];
+    toJsonViewFilter.$inject = ['ObjectDiff'];
+    toJsonDiffViewFilter.$inject = ['ObjectDiff'];
+    objToJsonViewFilter.$inject = ['ObjectDiff'];
+
+    /* service implementation */
+    function objectDiff($sce) {
+
+        var openChar = '{',
+            closeChar = '}',
+            service = {
+                setOpenChar: setOpenChar,
+                setCloseChar: setCloseChar,
+                diff: diff,
+                diffOwnProperties: diffOwnProperties,
+                toJsonView: formatToJsonXMLString,
+                objToJsonView: formatObjToJsonXMLString,
+                toJsonDiffView: formatChangesToXMLString
+            };
+
+        return service;
+
+
+        /* service methods */
+
+        /**
+         * @param char
+         */
+        function setOpenChar(char) {
+            openChar = char;
+        }
+
+        /**
+         * @param char
+         */
+        function setCloseChar(char) {
+            closeChar = char;
+        }
+
+        /**
+         * diff between object a and b
+         * @param {Object} a
+         * @param {Object} b
+         * @param shallow
+         * @param isOwn
+         * @return {Object}
+         */
+        function diff(a, b, shallow, isOwn) {
+
+            if (a === b) {
+                return equalObj(a);
+            }
+
+            var diffValue = {};
+            var equal = true;
+
+            for (var key in a) {
+                if ((!isOwn && key in b) || (isOwn && typeof b != 'undefined' && b.hasOwnProperty(key))) {
+                    if (a[key] === b[key]) {
+                        diffValue[key] = equalObj(a[key]);
+                    } else {
+                        if (!shallow && isValidAttr(a[key], b[key])) {
+                            var valueDiff = diff(a[key], b[key], shallow, isOwn);
+                            if (valueDiff.changed == 'equal') {
+                                diffValue[key] = equalObj(a[key]);
+                            } else {
+                                equal = false;
+                                diffValue[key] = valueDiff;
+                            }
+                        } else {
+                            equal = false;
+                            diffValue[key] = {
+                                changed: 'primitive change',
+                                removed: a[key],
+                                added: b[key]
+                            }
+                        }
+                    }
+                } else {
+                    equal = false;
+                    diffValue[key] = {
+                        changed: 'removed',
+                        value: a[key]
+                    }
+                }
+            }
+
+            for (key in b) {
+                if ((!isOwn && !(key in a)) || (isOwn && typeof a != 'undefined' && !a.hasOwnProperty(key))) {
+                    equal = false;
+                    diffValue[key] = {
+                        changed: 'added',
+                        value: b[key]
+                    }
+                }
+            }
+
+            if (equal) {
+                return equalObj(a);
+            } else {
+                return {
+                    changed: 'object change',
+                    value: diffValue
+                }
+            }
+        }
+
+
+        /**
+         * diff between object a and b own properties only
+         * @param {Object} a
+         * @param {Object} b
+         * @return {Object}
+         * @param deep
+         */
+        function diffOwnProperties(a, b, shallow) {
+            return diff(a, b, shallow, true);
+        }
+
+        /**
+         * Convert to a readable xml/html Json structure
+         * @param {Object} changes
+         * @return {string}
+         * @param shallow
+         */
+        function formatToJsonXMLString(changes, shallow) {
+            var properties = [];
+
+            var diff = changes.value;
+            if (changes.changed == 'equal') {
+                return $sce.trustAsHtml(inspect(diff, shallow));
+            }
+
+            for (var key in diff) {
+                properties.push(formatChange(key, diff[key], shallow));
+            }
+
+            return $sce.trustAsHtml('<span>' + openChar + '</span>\n<div class="diff-level">' + properties.join('<span>,</span>\n') + '\n</div><span>' + closeChar + '</span>');
+
+        }
+
+        /**
+         * Convert to a readable xml/html Json structure
+         * @return {string}
+         * @param obj
+         * @param shallow
+         */
+        function formatObjToJsonXMLString(obj, shallow) {
+            return $sce.trustAsHtml(inspect(obj, shallow));
+        }
+
+        /**
+         * Convert to a readable xml/html Json structure
+         * @param {Object} changes
+         * @return {string}
+         * @param shallow
+         */
+        function formatChangesToXMLString(changes, shallow) {
+            var properties = [];
+
+            if (changes.changed == 'equal') {
+                return '';
+            }
+
+            var diff = changes.value;
+
+            for (var key in diff) {
+                var changed = diff[key].changed;
+                if (changed !== 'equal')
+                    properties.push(formatChange(key, diff[key], shallow, true));
+            }
+
+            return $sce.trustAsHtml('<span>' + openChar + '</span>\n<div class="diff-level">' + properties.join('<span>,</span>\n') + '\n</div><span>' + closeChar + '</span>');
+
+        }
+
+        /**
+         * @param obj
+         * @returns {{changed: string, value: *}}
+         */
+        function equalObj(obj) {
+            return {
+                changed: 'equal',
+                value: obj
+            }
+        }
+
+        /**
+         * @param a
+         * @param b
+         * @returns {*|boolean}
+         */
+        function isValidAttr(a, b) {
+            var typeA = typeof a;
+            var typeB = typeof b;
+            return (a && b && (typeA == 'object' || typeA == 'function') && (typeB == 'object' || typeB == 'function'));
+        }
+
+        /**
+         * @param key
+         * @param diffItem
+         * @returns {*}
+         * @param shallow
+         * @param diffOnly
+         */
+        function formatChange(key, diffItem, shallow, diffOnly) {
+            var changed = diffItem.changed;
+            var property;
+            switch (changed) {
+                case 'equal':
+                    property = (stringifyObjectKey(escapeHTML(key)) + '<span>: </span>' + inspect(diffItem.value));
+                    break;
+
+                case 'removed':
+                    property = ('<del class="diff">' + stringifyObjectKey(escapeHTML(key)) + '<span>: </span>' + inspect(diffItem.value) + '</del>');
+                    break;
+
+                case 'added':
+                    property = ('<ins class="diff">' + stringifyObjectKey(escapeHTML(key)) + '<span>: </span>' + inspect(diffItem.value) + '</ins>');
+                    break;
+
+                case 'primitive change':
+                    var prefix = stringifyObjectKey(escapeHTML(key)) + '<span>: </span>';
+                    property = (
+                    '<del class="diff diff-key">' + prefix + inspect(diffItem.removed) + '</del><span>,</span>\n' +
+                    '<ins class="diff diff-key">' + prefix + inspect(diffItem.added) + '</ins>');
+                    break;
+
+                case 'object change':
+                    property = shallow ? '' : (stringifyObjectKey(key) + '<span>: </span>' + ( diffOnly ? formatChangesToXMLString(diffItem) : formatToJsonXMLString(diffItem)));
+                    break;
+            }
+
+            return property;
+        }
+
+        /**
+         * @param {string} key
+         * @return {string}
+         */
+        function stringifyObjectKey(key) {
+            return /^[a-z0-9_$]*$/i.test(key) ?
+                key :
+                JSON.stringify(key);
+        }
+
+        /**
+         * @param {string} string
+         * @return {string}
+         */
+        function escapeHTML(string) {
+            return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+        }
+
+        /**
+         * @param {Object} obj
+         * @return {string}
+         * @param shallow
+         */
+        function inspect(obj, shallow) {
+
+            return _inspect('', obj, shallow);
+
+            /**
+             * @param {string} accumulator
+             * @param {object} obj
+             * @see http://jsperf.com/continuation-passing-style/3
+             * @return {string}
+             * @param shallow
+             */
+            function _inspect(accumulator, obj, shallow) {
+                switch (typeof obj) {
+                    case 'object':
+                        if (!obj) {
+                            accumulator += 'null';
+                            break;
+                        }
+                        if (shallow) {
+                            accumulator += '[object]';
+                            break;
+                        }
+                        var keys = Object.keys(obj);
+                        var length = keys.length;
+                        if (length === 0) {
+                            accumulator += '<span>' + openChar + closeChar + '</span>';
+                        } else {
+                            accumulator += '<span>' + openChar + '</span>\n<div class="diff-level">';
+                            for (var i = 0; i < length; i++) {
+                                var key = keys[i];
+                                accumulator = _inspect(accumulator + stringifyObjectKey(escapeHTML(key)) + '<span>: </span>', obj[key]);
+                                if (i < length - 1) {
+                                    accumulator += '<span>,</span>\n';
+                                }
+                            }
+                            accumulator += '\n</div><span>' + closeChar + '</span>'
+                        }
+                        break;
+
+                    case 'string':
+                        accumulator += JSON.stringify(escapeHTML(obj));
+                        break;
+
+                    case 'undefined':
+                        accumulator += 'undefined';
+                        break;
+
+                    default:
+                        accumulator += escapeHTML(String(obj));
+                        break;
+                }
+                return accumulator;
+            }
+        }
+    }
+
+    /* filter implementation */
+    function toJsonViewFilter(ObjectDiff) {
+        return function (value) {
+            return ObjectDiff.toJsonView(value);
+        };
+    }
+
+    function toJsonDiffViewFilter(ObjectDiff) {
+        return function (value) {
+            return ObjectDiff.toJsonDiffView(value);
+        };
+    }
+
+    function objToJsonViewFilter(ObjectDiff) {
+        return function (value) {
+            return ObjectDiff.objToJsonView(value);
+        };
+    }
+})();
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/angular-object-diff.less b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/angular-object-diff.less
new file mode 100644
index 0000000..0811554
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/angular-object-diff.less
@@ -0,0 +1,42 @@
+.diff {
+	display: inline-block;
+}
+.diff-level {
+	margin-left: 1.6em;
+}
+.diff-holder {
+	color: #666;
+	margin: 0;
+}
+.diff-holder span {
+	color: #AAA;
+}
+del.diff {
+	text-decoration: none;
+	color: #b30000;
+	background: #fadad7;
+}
+ins.diff {
+	background: #eaf2c2;
+	color: #406619;
+	text-decoration: none;
+}
+del.diff-key {
+	border: 1px solid #f8a4a4;
+}
+ins.diff-key {
+	border: 1px solid #a3ce4c;
+	margin-top: -1px;
+	position: relative;
+}
+ins.diff span {
+	color: #AABF40;
+}
+del.diff span {
+	color: #EE8177;
+}
+.audit-obj {
+    max-height: 300px;
+    max-width: 300px;
+    overflow: auto;
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/bower.json b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/bower.json
new file mode 100644
index 0000000..7602502
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/bower.json
@@ -0,0 +1,50 @@
+{
+  "name": "angular-object-diff",
+  "version": "1.0.3",
+  "main": [
+    "./dist/angular-object-diff.js",
+    "./dist/angular-object-diff.css"
+  ],
+  "authors": [
+    "Deepu K Sasidharan <d4udts@gmail.com>"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/hipster-labs/angular-object-diff.git"
+  },
+  "description": "An Angular JS plugin to compare and show object differences.",
+  "moduleType": [
+    "globals"
+  ],
+  "keywords": [
+    "angular",
+    "angular.js",
+    "object",
+    "diff",
+    "json",
+    "json-diff",
+    "object-diff",
+    "compare"
+  ],
+  "license": "MIT",
+  "ignore": [
+    "**/.*",
+    "node_modules",
+    "bower_components",
+    "test",
+    "tests"
+  ],
+  "dependencies": {
+    "angular": "1.x"
+  },
+  "devDependencies": {
+    "angular-bootstrap": "~0.11.0",
+    "font-awesome": "~4.1.0",
+    "rainbow": "~1.1.9",
+    "angular-mocks": "~1.3.10"
+  },
+  "resolutions": {
+    "angular": "1.x",
+    "angular-mocks": "1.3.10"
+  }
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/demo.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/demo.js
new file mode 100644
index 0000000..3613fcc
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/demo.js
@@ -0,0 +1,68 @@
+// Angular JS code
+(function () {
+    'use-strict';
+
+    angular.module('demoApp', ['ds.objectDiff'])
+        .config([
+          '$interpolateProvider',
+            function ($interpolateProvider) {
+                return $interpolateProvider.startSymbol('{(').endSymbol(')}');
+          }
+        ])
+        .controller('DemoController', DemoController);
+
+    DemoController.$inject = ['$scope', 'ObjectDiff'];
+
+    function DemoController($scope, ObjectDiff) {
+        $scope.objectOne = "{\n" +
+            "   a: {\n" +
+            "     b: 1,\n" +
+            "     c: [1, 2]\n" +
+            "   },\n" +
+            "   \"2b\": {\n" +
+            "     foo: 'bar'\n" +
+            "   }\n" +
+            " }";
+        $scope.objectTwo = "{\n" +
+            "   a: { \n" +
+            "     b: 2,\n" +
+            "     c: [1, 2, 3]\n" +
+            "   },\n" +
+            "   x: 1\n" +
+            " }";
+
+
+        function makeDiff() {
+            var objectOne, objectTwo, diff;
+            try {
+                $scope.errorA = false;
+                objectOne = eval('(' + $scope.objectOne + ')'); //JSON.parse($scope.objectOne);
+            } catch (err) {
+                $scope.errorA = true;
+            }
+            try {
+                $scope.errorB = false;
+                objectTwo = eval('(' + $scope.objectTwo + ')'); //JSON.parse($scope.objectTwo);
+            } catch (err) {
+                $scope.errorB = true;
+            }
+
+            // you can directly diff your objects if they are not string
+            diff = ObjectDiff.diffOwnProperties(objectOne, objectTwo);
+
+            $scope.diffValue = ObjectDiff.toJsonView(diff);
+            $scope.diffValueChanges = ObjectDiff.toJsonDiffView(diff);
+
+            $scope.yourObjectOne = objectOne;
+            $scope.yourObjectTwo = objectTwo;
+        }
+
+        $scope.$watch('objectOne', function (newValue, oldValue) {
+            makeDiff();
+        });
+        $scope.$watch('objectTwo', function (newValue, oldValue) {
+            makeDiff();
+        });
+    }
+
+})();
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/gulpfile.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/gulpfile.js
new file mode 100644
index 0000000..78fdc57
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/gulpfile.js
@@ -0,0 +1,169 @@
+(function () {
+    'use strict';
+
+    var gulp = require('gulp');
+    var less = require('gulp-less');
+    var sourcemaps = require('gulp-sourcemaps');
+    var uglify = require('gulp-uglify');
+    var csso = require('gulp-csso');
+    var jshint = require('gulp-jshint');
+    var stylish = require('jshint-stylish');
+    var jscs = require('gulp-jscs');
+    var mocha = require('gulp-spawn-mocha');
+    var mochaPhantomJS = require('gulp-mocha-phantomjs');
+    var tar = require('gulp-tar');
+    var gzip = require('gulp-gzip');
+    var bumper = require('gulp-bump');
+    var git = require('gulp-git');
+    var shell = require('gulp-shell');
+    var rename = require('gulp-rename');
+    var fs = require('fs');
+    var sequence = require('gulp-sequence');
+
+    gulp.task('less', function () {
+        return gulp.src('./*.less')
+            .pipe(sourcemaps.init())
+            .pipe(less())
+            .pipe(csso())
+            .pipe(sourcemaps.write('./'))
+            .pipe(gulp.dest('./dist'));
+    });
+
+    gulp.task('lint', function () {
+        return gulp.src('**/*.js')
+            .pipe(jshint())
+            .pipe(jshint.reporter(stylish));
+    });
+
+    /* gulp.task('style', function() {
+      return gulp.src('**/
+    /*.js')
+        .pipe(jscs());
+    });*/
+
+    gulp.task('unit', function () {
+        return gulp
+            .src('test/index.html')
+            .pipe(mochaPhantomJS());
+    });
+
+    gulp.task('bump-patch', bump('patch'));
+    gulp.task('bump-minor', bump('minor'));
+    gulp.task('bump-major', bump('major'));
+
+    gulp.task('bower', function () {
+        return gulp.src('./angular-object-diff.js')
+            .pipe(gulp.dest('./dist'));
+    });
+
+    gulp.task('js', ['lint' /*, 'style'*/ , 'bower'], function () {
+        return gulp.src('./angular-object-diff.js')
+            .pipe(rename('angular-object-diff.min.js'))
+            .pipe(sourcemaps.init())
+            .pipe(uglify())
+            .pipe(sourcemaps.write('./'))
+            .pipe(gulp.dest('./dist'));
+    });
+
+    gulp.task('build', function () {
+        return gulp.src(['dist/*', '!./dist/*.tar.gz'])
+            .pipe(tar('angular-object-diff.js.tar'))
+            .pipe(gzip({
+                gzipOptions: {
+                    level: 9
+                }
+            }))
+            .pipe(gulp.dest('dist/'));
+    });
+
+    gulp.task('update', function (cb) {
+        fs.readFile('./examples/index.template.html', 'utf8', function (err, file) {
+            if (err) return cb(err);
+            file = file.replace('<!-- version -->', version());
+            fs.writeFile('./examples/index.html', file, cb);
+        });
+    });
+
+    gulp.task('git-commit', function () {
+        var v = 'update to version ' + version();
+        gulp.src(['./dist/*', './examples/*', './test/*', './package.json', './bower.json', './angular-object-diff.js', './angular-object-diff.less'])
+            .pipe(git.add())
+            .pipe(git.commit(v));
+    });
+
+    gulp.task('git-push', function (cb) {
+        var v = 'v' + version();
+        git.push('origin', 'master', function (err) {
+            if (err) return cb(err);
+            git.tag(v, v, function (err) {
+                if (err) return cb(err);
+                git.push('origin', 'master', {
+                    args: '--tags'
+                }, function(err){
+                    if (err) return cb(err);
+                    git.checkout('gh-pages', function (err) {
+                        if (err) return cb(err);
+                        git.reset('master', {
+                            args: '--hard'
+                        }, function (err) {
+                            if (err) return cb(err);
+                            git.push('origin', 'gh-pages', function (err) {
+                                if (err) return cb(err);
+                                git.checkout('master', cb);
+                            });
+                        });
+                    });
+                });
+            });
+        });
+    });
+
+    gulp.task('git-demo', function (cb) {
+        var v = 'v' + version();
+        git.checkout('gh-pages', function (err) {
+            if (err) return cb(err);
+            git.reset('master', {
+                args: '--hard'
+            }, function (err) {
+                if (err) return cb(err);
+                git.push('origin', 'gh-pages', function (err) {
+                    if (err) return cb(err);
+                    git.checkout('master', cb);
+                });
+            });
+        });
+    });
+
+    gulp.task('npm', shell.task([
+        'npm publish'
+    ]));
+
+    gulp.task('watch', function () {
+        gulp.watch('./*.js', ['js']);
+        gulp.watch('./*.less', ['less']);
+        return true;
+    });
+
+    function bump(level) {
+        return function () {
+            return gulp.src(['./package.json', './bower.json'])
+                .pipe(bumper({
+                    type: level
+                }))
+                .pipe(gulp.dest('./'));
+        };
+    }
+
+    function version() {
+        return JSON.parse(fs.readFileSync('package.json', 'utf8')).version;
+    }
+
+    gulp.task('default', sequence('check', ['less', 'js'], 'build'));
+    gulp.task('test', sequence('unit' /*, 'integration'*/ ));
+    gulp.task('check', sequence(['lint' /*, 'style'*/ ], 'test'));
+    gulp.task('publish', sequence(['git-commit', 'git-push', 'npm']));
+    gulp.task('deploy-patch', sequence('default', 'bump-patch', /*'update',*/ 'publish'));
+    gulp.task('deploy-minor', sequence('default', 'bump-minor', /*'update',*/ 'publish'));
+    gulp.task('deploy-major', sequence('default', 'bump-major', /*'update',*/ 'publish'));
+
+})();
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/index.html b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/index.html
new file mode 100644
index 0000000..986a8b2
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/index.html
@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<html lang="en-US">
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <meta name="description" content="A Demo page for angular-object-diff plugin.">
+    <meta name="author" content="Deepu KS (deepu.js.org)">
+    <meta name="twitter:site" content="@deepu105" />
+    <meta name="twitter:title" content="A Demo page for angular-object-diff plugin" />
+    <meta name="twitter:description" content="A Demo page for angular-object-diff plugin." />
+    <meta name="twitter:url" content="http://hipster-labs.js.org/angular-object-diff/" />
+    <title>Angular Object Diff Demo</title>
+    <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />
+    <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/font-awesome/4.0.0/css/font-awesome.css" />
+    <link rel="stylesheet" href="dist/angular-object-diff.css" />
+    <style>
+        .error {
+            background-color: red;
+        }
+    </style>
+</head>
+
+<body>
+
+    <!-- Static navbar -->
+    <div class="navbar navbar-default navbar-static-top" role="navigation">
+        <div class="container">
+            <div class="navbar-header">
+                <a class="navbar-brand" href="#">Angular Object Diff</a>
+            </div>
+            <div class="navbar-collapse collapse">
+                <ul class="nav navbar-nav">
+                    <li class="active"><a href="#">Home</a></li>
+                    <li><a href="https://github.com/hipster-labs/angular-object-diff">Github</a></li>
+                </ul>
+            </div>
+            <!--/.nav-collapse -->
+        </div>
+    </div>
+
+
+    <div class="container-fluid" ng-app="demoApp">
+
+        <!-- content is injected here -->
+        <div ng-controller="DemoController">
+            <div class="row">
+                <div class="col-md-4 col-xs-12">
+                    <label>Object A</label>
+                    <textarea class="form-control" ng-class="[{'error': errorA}]" rows="15" ng-model="objectOne"></textarea>
+                </div>
+                <div class="col-md-4 col-xs-12">
+                    <label>Object B</label>
+                    <textarea class="form-control" ng-class="[{'error': errorB}]" rows="15" ng-model="objectTwo"></textarea>
+                </div>
+                <div class="col-md-4 col-xs-12">
+                    <label>Full Diff</label>
+                    <pre ng-bind-html="diffValue"></pre>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-md-4 col-xs-12">
+                    <label>Object A JSON View</label>
+                    <pre ng-bind-html="yourObjectOne | objToJsonView"></pre>
+                </div>
+                <div class="col-md-4 col-xs-12">
+                    <label>Object B JSON View</label>
+                    <pre ng-bind-html="yourObjectTwo | objToJsonView"></pre>
+                </div>
+                <div class="col-md-4 col-xs-12">
+                    <label>Diff Changes only</label>
+                    <pre ng-bind-html="diffValueChanges"></pre>
+                </div>
+            </div>
+        </div>
+
+    </div>
+    <!-- /container -->
+
+    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
+    <script src="angular-object-diff.js"></script>
+    <script src="demo.js"></script>
+    <script>
+      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+      ga('create', 'UA-74370272-3', 'auto');
+      ga('send', 'pageview');
+
+    </script>
+</body>
+
+</html>
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/package.json b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/package.json
new file mode 100644
index 0000000..ea694e0
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/package.json
@@ -0,0 +1,84 @@
+{
+  "_from": "angular-object-diff",
+  "_id": "angular-object-diff@1.0.3",
+  "_inBundle": false,
+  "_integrity": "sha1-zUu3X+n/Extw08NCzUxhBFFtXF8=",
+  "_location": "/angular-object-diff",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "tag",
+    "registry": true,
+    "raw": "angular-object-diff",
+    "name": "angular-object-diff",
+    "escapedName": "angular-object-diff",
+    "rawSpec": "",
+    "saveSpec": null,
+    "fetchSpec": "latest"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/angular-object-diff/-/angular-object-diff-1.0.3.tgz",
+  "_shasum": "cd4bb75fe9ff131b70d3c342cd4c6104516d5c5f",
+  "_spec": "angular-object-diff",
+  "_where": "D:\\SDNC_UI\\app\\node_modules",
+  "author": {
+    "name": "Deepu K Sasidharan",
+    "email": "d4udts@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/hipster-labs/angular-object-diff/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "An Angular JS plugin to compare and show object differences.",
+  "devDependencies": {
+    "chai": "^1.10.0",
+    "chai-string": "^1.1.1",
+    "cp": "^0.2.0",
+    "gm": "^1.17.0",
+    "gulp": "^3.8.6",
+    "gulp-bump": "^0.1.11",
+    "gulp-csso": "^0.2.9",
+    "gulp-git": "^0.5.6",
+    "gulp-gzip": "0.0.8",
+    "gulp-jscs": "^1.4.0",
+    "gulp-jshint": "^1.9.2",
+    "gulp-less": "^1.3.1",
+    "gulp-mocha-phantomjs": "^0.6.1",
+    "gulp-rename": "^1.2.0",
+    "gulp-sequence": "^0.3.1",
+    "gulp-shell": "^0.2.11",
+    "gulp-sourcemaps": "^1.0.0",
+    "gulp-spawn-mocha": "^2.0.1",
+    "gulp-tar": "^0.5.0",
+    "gulp-uglify": "^0.3.1",
+    "imgur-node-api": "^0.1.0",
+    "jshint-stylish": "^1.0.0",
+    "less": "^1.7.3",
+    "mkdirp": "^0.5.0",
+    "mocha": "^2.1.0",
+    "mocha-phantomjs": "^3.5.3",
+    "sinon": "^1.12.2",
+    "sinon-chai": "^2.7.0",
+    "testatic": "^0.1.0",
+    "tmp-sync": "github:jtblin/node-tmp-sync",
+    "webshot": "^0.15.3"
+  },
+  "directories": {
+    "example": "examples"
+  },
+  "homepage": "https://github.com/hipster-labs/angular-object-diff#readme",
+  "license": "MIT",
+  "main": "angular-object-diff.js",
+  "name": "angular-object-diff",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/hipster-labs/angular-object-diff.git"
+  },
+  "scripts": {
+    "test": "gulp check"
+  },
+  "version": "1.0.3"
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/screenshot.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/screenshot.png
new file mode 100644
index 0000000..938110d
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-object-diff/screenshot.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-route.min.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-route.min.js
new file mode 100644
index 0000000..a30b8ab
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-route.min.js
@@ -0,0 +1,15 @@
+/*
+ AngularJS v1.3.14
+ (c) 2010-2014 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(q,d,C){'use strict';function v(r,k,h){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,f,b,c,y){function z(){l&&(h.cancel(l),l=null);m&&(m.$destroy(),m=null);n&&(l=h.leave(n),l.then(function(){l=null}),n=null)}function x(){var b=r.current&&r.current.locals;if(d.isDefined(b&&b.$template)){var b=a.$new(),c=r.current;n=y(b,function(b){h.enter(b,null,n||f).then(function(){!d.isDefined(t)||t&&!a.$eval(t)||k()});z()});m=c.scope=b;m.$emit("$viewContentLoaded");
+m.$eval(w)}else z()}var m,n,l,t=b.autoscroll,w=b.onload||"";a.$on("$routeChangeSuccess",x);x()}}}function A(d,k,h){return{restrict:"ECA",priority:-400,link:function(a,f){var b=h.current,c=b.locals;f.html(c.$template);var y=d(f.contents());b.controller&&(c.$scope=a,c=k(b.controller,c),b.controllerAs&&(a[b.controllerAs]=c),f.data("$ngControllerController",c),f.children().data("$ngControllerController",c));y(a)}}}q=d.module("ngRoute",["ng"]).provider("$route",function(){function r(a,f){return d.extend(Object.create(a),
+f)}function k(a,d){var b=d.caseInsensitiveMatch,c={originalPath:a,regexp:a},h=c.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,d,b,c){a="?"===c?c:null;c="*"===c?c:null;h.push({name:b,optional:!!a});d=d||"";return""+(a?"":d)+"(?:"+(a?d:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");c.regexp=new RegExp("^"+a+"$",b?"i":"");return c}var h={};this.when=function(a,f){var b=d.copy(f);d.isUndefined(b.reloadOnSearch)&&(b.reloadOnSearch=!0);
+d.isUndefined(b.caseInsensitiveMatch)&&(b.caseInsensitiveMatch=this.caseInsensitiveMatch);h[a]=d.extend(b,a&&k(a,b));if(a){var c="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";h[c]=d.extend({redirectTo:a},k(c,b))}return this};this.caseInsensitiveMatch=!1;this.otherwise=function(a){"string"===typeof a&&(a={redirectTo:a});this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce",function(a,f,b,c,k,q,x){function m(b){var e=s.current;
+(v=(p=l())&&e&&p.$$route===e.$$route&&d.equals(p.pathParams,e.pathParams)&&!p.reloadOnSearch&&!w)||!e&&!p||a.$broadcast("$routeChangeStart",p,e).defaultPrevented&&b&&b.preventDefault()}function n(){var u=s.current,e=p;if(v)u.params=e.params,d.copy(u.params,b),a.$broadcast("$routeUpdate",u);else if(e||u)w=!1,(s.current=e)&&e.redirectTo&&(d.isString(e.redirectTo)?f.path(t(e.redirectTo,e.params)).search(e.params).replace():f.url(e.redirectTo(e.pathParams,f.path(),f.search())).replace()),c.when(e).then(function(){if(e){var a=
+d.extend({},e.resolve),b,g;d.forEach(a,function(b,e){a[e]=d.isString(b)?k.get(b):k.invoke(b,null,null,e)});d.isDefined(b=e.template)?d.isFunction(b)&&(b=b(e.params)):d.isDefined(g=e.templateUrl)&&(d.isFunction(g)&&(g=g(e.params)),g=x.getTrustedResourceUrl(g),d.isDefined(g)&&(e.loadedTemplateUrl=g,b=q(g)));d.isDefined(b)&&(a.$template=b);return c.all(a)}}).then(function(c){e==s.current&&(e&&(e.locals=c,d.copy(e.params,b)),a.$broadcast("$routeChangeSuccess",e,u))},function(b){e==s.current&&a.$broadcast("$routeChangeError",
+e,u,b)})}function l(){var a,b;d.forEach(h,function(c,h){var g;if(g=!b){var k=f.path();g=c.keys;var m={};if(c.regexp)if(k=c.regexp.exec(k)){for(var l=1,n=k.length;l<n;++l){var p=g[l-1],q=k[l];p&&q&&(m[p.name]=q)}g=m}else g=null;else g=null;g=a=g}g&&(b=r(c,{params:d.extend({},f.search(),a),pathParams:a}),b.$$route=c)});return b||h[null]&&r(h[null],{params:{},pathParams:{}})}function t(a,b){var c=[];d.forEach((a||"").split(":"),function(a,d){if(0===d)c.push(a);else{var f=a.match(/(\w+)(?:[?*])?(.*)/),
+h=f[1];c.push(b[h]);c.push(f[2]||"");delete b[h]}});return c.join("")}var w=!1,p,v,s={routes:h,reload:function(){w=!0;a.$evalAsync(function(){m();n()})},updateParams:function(a){if(this.current&&this.current.$$route)a=d.extend({},this.current.params,a),f.path(t(this.current.$$route.originalPath,a)),f.search(a);else throw B("norout");}};a.$on("$locationChangeStart",m);a.$on("$locationChangeSuccess",n);return s}]});var B=d.$$minErr("ngRoute");q.provider("$routeParams",function(){this.$get=function(){return{}}});
+q.directive("ngView",v);q.directive("ngView",A);v.$inject=["$route","$anchorScroll","$animate"];A.$inject=["$compile","$controller","$route"]})(window,window.angular);
+//# sourceMappingURL=angular-route.min.js.map
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-sanitize.min.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-sanitize.min.js
new file mode 100644
index 0000000..65fc5a4
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-sanitize.min.js
@@ -0,0 +1,16 @@
+/*
+ AngularJS v1.3.14
+ (c) 2010-2014 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(n,h,p){'use strict';function E(a){var e=[];r(e,h.noop).chars(a);return e.join("")}function g(a){var e={};a=a.split(",");var d;for(d=0;d<a.length;d++)e[a[d]]=!0;return e}function F(a,e){function d(a,b,d,l){b=h.lowercase(b);if(s[b])for(;f.last()&&t[f.last()];)c("",f.last());u[b]&&f.last()==b&&c("",b);(l=v[b]||!!l)||f.push(b);var m={};d.replace(G,function(a,b,e,c,d){m[b]=q(e||c||d||"")});e.start&&e.start(b,m,l)}function c(a,b){var c=0,d;if(b=h.lowercase(b))for(c=f.length-1;0<=c&&f[c]!=b;c--);
+if(0<=c){for(d=f.length-1;d>=c;d--)e.end&&e.end(f[d]);f.length=c}}"string"!==typeof a&&(a=null===a||"undefined"===typeof a?"":""+a);var b,k,f=[],m=a,l;for(f.last=function(){return f[f.length-1]};a;){l="";k=!0;if(f.last()&&w[f.last()])a=a.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(a,b){b=b.replace(H,"$1").replace(I,"$1");e.chars&&e.chars(q(b));return""}),c("",f.last());else{if(0===a.indexOf("\x3c!--"))b=a.indexOf("--",4),0<=b&&a.lastIndexOf("--\x3e",b)===b&&(e.comment&&
+e.comment(a.substring(4,b)),a=a.substring(b+3),k=!1);else if(x.test(a)){if(b=a.match(x))a=a.replace(b[0],""),k=!1}else if(J.test(a)){if(b=a.match(y))a=a.substring(b[0].length),b[0].replace(y,c),k=!1}else K.test(a)&&((b=a.match(z))?(b[4]&&(a=a.substring(b[0].length),b[0].replace(z,d)),k=!1):(l+="<",a=a.substring(1)));k&&(b=a.indexOf("<"),l+=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),e.chars&&e.chars(q(l)))}if(a==m)throw L("badparse",a);m=a}c()}function q(a){if(!a)return"";A.innerHTML=a.replace(/</g,
+"&lt;");return A.textContent}function B(a){return a.replace(/&/g,"&amp;").replace(M,function(a){var d=a.charCodeAt(0);a=a.charCodeAt(1);return"&#"+(1024*(d-55296)+(a-56320)+65536)+";"}).replace(N,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function r(a,e){var d=!1,c=h.bind(a,a.push);return{start:function(a,k,f){a=h.lowercase(a);!d&&w[a]&&(d=a);d||!0!==C[a]||(c("<"),c(a),h.forEach(k,function(d,f){var k=h.lowercase(f),g="img"===a&&"src"===k||"background"===
+k;!0!==O[k]||!0===D[k]&&!e(d,g)||(c(" "),c(f),c('="'),c(B(d)),c('"'))}),c(f?"/>":">"))},end:function(a){a=h.lowercase(a);d||!0!==C[a]||(c("</"),c(a),c(">"));a==d&&(d=!1)},chars:function(a){d||c(B(a))}}}var L=h.$$minErr("$sanitize"),z=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,y=/^<\/\s*([\w:-]+)[^>]*>/,G=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,K=/^</,J=/^<\//,H=/\x3c!--(.*?)--\x3e/g,x=/<!DOCTYPE([^>]*?)>/i,
+I=/<!\[CDATA\[(.*?)]]\x3e/g,M=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,N=/([^\#-~| |!])/g,v=g("area,br,col,hr,img,wbr");n=g("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr");p=g("rp,rt");var u=h.extend({},p,n),s=h.extend({},n,g("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),t=h.extend({},p,g("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var"));
+n=g("animate,animateColor,animateMotion,animateTransform,circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,set,stop,svg,switch,text,title,tspan,use");var w=g("script,style"),C=h.extend({},v,s,t,u,n),D=g("background,cite,href,longdesc,src,usemap,xlink:href");n=g("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,target,title,type,valign,value,vspace,width");
+p=g("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,attributeName,attributeType,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan");
+var O=h.extend({},D,p,n),A=document.createElement("pre");h.module("ngSanitize",[]).provider("$sanitize",function(){this.$get=["$$sanitizeUri",function(a){return function(e){var d=[];F(e,r(d,function(c,b){return!/^unsafe/.test(a(c,b))}));return d.join("")}}]});h.module("ngSanitize").filter("linky",["$sanitize",function(a){var e=/((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/,d=/^mailto:/;return function(c,b){function k(a){a&&g.push(E(a))}function f(a,c){g.push("<a ");
+h.isDefined(b)&&g.push('target="',b,'" ');g.push('href="',a.replace(/"/g,"&quot;"),'">');k(c);g.push("</a>")}if(!c)return c;for(var m,l=c,g=[],n,p;m=l.match(e);)n=m[0],m[2]||m[4]||(n=(m[3]?"http://":"mailto:")+n),p=m.index,k(l.substr(0,p)),f(n,m[0].replace(d,"")),l=l.substring(p+m[0].length);k(l);return a(g.join(""))}}])})(window,window.angular);
+//# sourceMappingURL=angular-sanitize.min.js.map
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-utils-pagination/dirPagination.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-utils-pagination/dirPagination.js
new file mode 100644
index 0000000..a1a7265
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular-utils-pagination/dirPagination.js
@@ -0,0 +1,639 @@
+/**
+ * dirPagination - AngularJS module for paginating (almost) anything.
+ *
+ *
+ * Credits
+ * =======
+ *
+ * Daniel Tabuenca: https://groups.google.com/d/msg/angular/an9QpzqIYiM/r8v-3W1X5vcJ
+ * for the idea on how to dynamically invoke the ng-repeat directive.
+ *
+ * I borrowed a couple of lines and a few attribute names from the AngularUI Bootstrap project:
+ * https://github.com/angular-ui/bootstrap/blob/master/src/pagination/pagination.js
+ *
+ * Copyright 2014 Michael Bromley <michael@michaelbromley.co.uk>
+ */
+
+(function() {
+
+    /**
+     * Config
+     */
+    var moduleName = 'angularUtils.directives.dirPagination';
+    var DEFAULT_ID = '__default';
+
+    /**
+     * Module
+     */
+    angular.module(moduleName, [])
+        .directive('dirPaginate', ['$compile', '$parse', 'paginationService', dirPaginateDirective])
+        .directive('dirPaginateNoCompile', noCompileDirective)
+        .directive('dirPaginationControls', ['paginationService', 'paginationTemplate', dirPaginationControlsDirective])
+        .filter('itemsPerPage', ['paginationService', itemsPerPageFilter])
+        .service('paginationService', paginationService)
+        .provider('paginationTemplate', paginationTemplateProvider)
+        .run(['$templateCache',dirPaginationControlsTemplateInstaller]);
+
+    function dirPaginateDirective($compile, $parse, paginationService) {
+
+        return  {
+            terminal: true,
+            multiElement: true,
+            priority: 100,
+            compile: dirPaginationCompileFn
+        };
+
+        function dirPaginationCompileFn(tElement, tAttrs){
+
+            var expression = tAttrs.dirPaginate;
+            // regex taken directly from https://github.com/angular/angular.js/blob/v1.4.x/src/ng/directive/ngRepeat.js#L339
+            var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
+
+            var filterPattern = /\|\s*itemsPerPage\s*:\s*(.*\(\s*\w*\)|([^\)]*?(?=\s+as\s+))|[^\)]*)/;
+            if (match[2].match(filterPattern) === null) {
+                throw 'pagination directive: the \'itemsPerPage\' filter must be set.';
+            }
+            var itemsPerPageFilterRemoved = match[2].replace(filterPattern, '');
+            var collectionGetter = $parse(itemsPerPageFilterRemoved);
+
+            addNoCompileAttributes(tElement);
+
+            // If any value is specified for paginationId, we register the un-evaluated expression at this stage for the benefit of any
+            // dir-pagination-controls directives that may be looking for this ID.
+            var rawId = tAttrs.paginationId || DEFAULT_ID;
+            paginationService.registerInstance(rawId);
+
+            return function dirPaginationLinkFn(scope, element, attrs){
+
+                // Now that we have access to the `scope` we can interpolate any expression given in the paginationId attribute and
+                // potentially register a new ID if it evaluates to a different value than the rawId.
+                var paginationId = $parse(attrs.paginationId)(scope) || attrs.paginationId || DEFAULT_ID;
+                
+                // (TODO: this seems sound, but I'm reverting as many bug reports followed it's introduction in 0.11.0.
+                // Needs more investigation.)
+                // In case rawId != paginationId we deregister using rawId for the sake of general cleanliness
+                // before registering using paginationId
+                // paginationService.deregisterInstance(rawId);
+                paginationService.registerInstance(paginationId);
+
+                var repeatExpression = getRepeatExpression(expression, paginationId);
+                addNgRepeatToElement(element, attrs, repeatExpression);
+
+                removeTemporaryAttributes(element);
+                var compiled =  $compile(element);
+
+                var currentPageGetter = makeCurrentPageGetterFn(scope, attrs, paginationId);
+                paginationService.setCurrentPageParser(paginationId, currentPageGetter, scope);
+
+                if (typeof attrs.totalItems !== 'undefined') {
+                    paginationService.setAsyncModeTrue(paginationId);
+                    scope.$watch(function() {
+                        return $parse(attrs.totalItems)(scope);
+                    }, function (result) {
+                        if (0 <= result) {
+                            paginationService.setCollectionLength(paginationId, result);
+                        }
+                    });
+                } else {
+                    paginationService.setAsyncModeFalse(paginationId);
+                    scope.$watchCollection(function() {
+                        return collectionGetter(scope);
+                    }, function(collection) {
+                        if (collection) {
+                            var collectionLength = (collection instanceof Array) ? collection.length : Object.keys(collection).length;
+                            paginationService.setCollectionLength(paginationId, collectionLength);
+                        }
+                    });
+                }
+
+                // Delegate to the link function returned by the new compilation of the ng-repeat
+                compiled(scope);
+                 
+                // (TODO: Reverting this due to many bug reports in v 0.11.0. Needs investigation as the
+                // principle is sound)
+                // When the scope is destroyed, we make sure to remove the reference to it in paginationService
+                // so that it can be properly garbage collected
+                // scope.$on('$destroy', function destroyDirPagination() {
+                //     paginationService.deregisterInstance(paginationId);
+                // });
+            };
+        }
+
+        /**
+         * If a pagination id has been specified, we need to check that it is present as the second argument passed to
+         * the itemsPerPage filter. If it is not there, we add it and return the modified expression.
+         *
+         * @param expression
+         * @param paginationId
+         * @returns {*}
+         */
+        function getRepeatExpression(expression, paginationId) {
+            var repeatExpression,
+                idDefinedInFilter = !!expression.match(/(\|\s*itemsPerPage\s*:[^|]*:[^|]*)/);
+
+            if (paginationId !== DEFAULT_ID && !idDefinedInFilter) {
+                repeatExpression = expression.replace(/(\|\s*itemsPerPage\s*:\s*[^|\s]*)/, "$1 : '" + paginationId + "'");
+            } else {
+                repeatExpression = expression;
+            }
+
+            return repeatExpression;
+        }
+
+        /**
+         * Adds the ng-repeat directive to the element. In the case of multi-element (-start, -end) it adds the
+         * appropriate multi-element ng-repeat to the first and last element in the range.
+         * @param element
+         * @param attrs
+         * @param repeatExpression
+         */
+        function addNgRepeatToElement(element, attrs, repeatExpression) {
+            if (element[0].hasAttribute('dir-paginate-start') || element[0].hasAttribute('data-dir-paginate-start')) {
+                // using multiElement mode (dir-paginate-start, dir-paginate-end)
+                attrs.$set('ngRepeatStart', repeatExpression);
+                element.eq(element.length - 1).attr('ng-repeat-end', true);
+            } else {
+                attrs.$set('ngRepeat', repeatExpression);
+            }
+        }
+
+        /**
+         * Adds the dir-paginate-no-compile directive to each element in the tElement range.
+         * @param tElement
+         */
+        function addNoCompileAttributes(tElement) {
+            angular.forEach(tElement, function(el) {
+                if (el.nodeType === 1) {
+                    angular.element(el).attr('dir-paginate-no-compile', true);
+                }
+            });
+        }
+
+        /**
+         * Removes the variations on dir-paginate (data-, -start, -end) and the dir-paginate-no-compile directives.
+         * @param element
+         */
+        function removeTemporaryAttributes(element) {
+            angular.forEach(element, function(el) {
+                if (el.nodeType === 1) {
+                    angular.element(el).removeAttr('dir-paginate-no-compile');
+                }
+            });
+            element.eq(0).removeAttr('dir-paginate-start').removeAttr('dir-paginate').removeAttr('data-dir-paginate-start').removeAttr('data-dir-paginate');
+            element.eq(element.length - 1).removeAttr('dir-paginate-end').removeAttr('data-dir-paginate-end');
+        }
+
+        /**
+         * Creates a getter function for the current-page attribute, using the expression provided or a default value if
+         * no current-page expression was specified.
+         *
+         * @param scope
+         * @param attrs
+         * @param paginationId
+         * @returns {*}
+         */
+        function makeCurrentPageGetterFn(scope, attrs, paginationId) {
+            var currentPageGetter;
+            if (attrs.currentPage) {
+                currentPageGetter = $parse(attrs.currentPage);
+            } else {
+                // If the current-page attribute was not set, we'll make our own.
+                // Replace any non-alphanumeric characters which might confuse
+                // the $parse service and give unexpected results.
+                // See https://github.com/michaelbromley/angularUtils/issues/233
+                var defaultCurrentPage = (paginationId + '__currentPage').replace(/\W/g, '_');
+                scope[defaultCurrentPage] = 1;
+                currentPageGetter = $parse(defaultCurrentPage);
+            }
+            return currentPageGetter;
+        }
+    }
+
+    /**
+     * This is a helper directive that allows correct compilation when in multi-element mode (ie dir-paginate-start, dir-paginate-end).
+     * It is dynamically added to all elements in the dir-paginate compile function, and it prevents further compilation of
+     * any inner directives. It is then removed in the link function, and all inner directives are then manually compiled.
+     */
+    function noCompileDirective() {
+        return {
+            priority: 5000,
+            terminal: true
+        };
+    }
+
+    function dirPaginationControlsTemplateInstaller($templateCache) {
+        $templateCache.put('angularUtils.directives.dirPagination.template', '<ul class="pagination" ng-if="1 < pages.length || !autoHide"><li ng-if="boundaryLinks" ng-class="{ disabled : pagination.current == 1 }"><a href="" ng-click="setCurrent(1)">&laquo;</a></li><li ng-if="directionLinks" ng-class="{ disabled : pagination.current == 1 }"><a href="" ng-click="setCurrent(pagination.current - 1)">&lsaquo;</a></li><li ng-repeat="pageNumber in pages track by tracker(pageNumber, $index)" ng-class="{ active : pagination.current == pageNumber, disabled : pageNumber == \'...\' || ( ! autoHide && pages.length === 1 ) }"><a href="" ng-click="setCurrent(pageNumber)">{{ pageNumber }}</a></li><li ng-if="directionLinks" ng-class="{ disabled : pagination.current == pagination.last }"><a href="" ng-click="setCurrent(pagination.current + 1)">&rsaquo;</a></li><li ng-if="boundaryLinks"  ng-class="{ disabled : pagination.current == pagination.last }"><a href="" ng-click="setCurrent(pagination.last)">&raquo;</a></li></ul>');
+    }
+
+    function dirPaginationControlsDirective(paginationService, paginationTemplate) {
+
+        var numberRegex = /^\d+$/;
+
+        var DDO = {
+            restrict: 'AE',
+            scope: {
+                maxSize: '=?',
+                onPageChange: '&?',
+                paginationId: '=?',
+                autoHide: '=?'
+            },
+            link: dirPaginationControlsLinkFn
+        };
+
+        // We need to check the paginationTemplate service to see whether a template path or
+        // string has been specified, and add the `template` or `templateUrl` property to
+        // the DDO as appropriate. The order of priority to decide which template to use is
+        // (highest priority first):
+        // 1. paginationTemplate.getString()
+        // 2. attrs.templateUrl
+        // 3. paginationTemplate.getPath()
+        var templateString = paginationTemplate.getString();
+        if (templateString !== undefined) {
+            DDO.template = templateString;
+        } else {
+            DDO.templateUrl = function(elem, attrs) {
+                return attrs.templateUrl || paginationTemplate.getPath();
+            };
+        }
+        return DDO;
+
+        function dirPaginationControlsLinkFn(scope, element, attrs) {
+
+            // rawId is the un-interpolated value of the pagination-id attribute. This is only important when the corresponding dir-paginate directive has
+            // not yet been linked (e.g. if it is inside an ng-if block), and in that case it prevents this controls directive from assuming that there is
+            // no corresponding dir-paginate directive and wrongly throwing an exception.
+            var rawId = attrs.paginationId ||  DEFAULT_ID;
+            var paginationId = scope.paginationId || attrs.paginationId ||  DEFAULT_ID;
+
+            if (!paginationService.isRegistered(paginationId) && !paginationService.isRegistered(rawId)) {
+                var idMessage = (paginationId !== DEFAULT_ID) ? ' (id: ' + paginationId + ') ' : ' ';
+                if (window.console) {
+                    console.warn('Pagination directive: the pagination controls' + idMessage + 'cannot be used without the corresponding pagination directive, which was not found at link time.');
+                }
+            }
+
+            if (!scope.maxSize) { scope.maxSize = 9; }
+            scope.autoHide = scope.autoHide === undefined ? true : scope.autoHide;
+            scope.directionLinks = angular.isDefined(attrs.directionLinks) ? scope.$parent.$eval(attrs.directionLinks) : true;
+            scope.boundaryLinks = angular.isDefined(attrs.boundaryLinks) ? scope.$parent.$eval(attrs.boundaryLinks) : false;
+
+            var paginationRange = Math.max(scope.maxSize, 5);
+            scope.pages = [];
+            scope.pagination = {
+                last: 1,
+                current: 1
+            };
+            scope.range = {
+                lower: 1,
+                upper: 1,
+                total: 1
+            };
+
+            scope.$watch('maxSize', function(val) {
+                if (val) {
+                    paginationRange = Math.max(scope.maxSize, 5);
+                    generatePagination();
+                }
+            });
+
+            scope.$watch(function() {
+                if (paginationService.isRegistered(paginationId)) {
+                    return (paginationService.getCollectionLength(paginationId) + 1) * paginationService.getItemsPerPage(paginationId);
+                }
+            }, function(length) {
+                if (0 < length) {
+                    generatePagination();
+                }
+            });
+
+            scope.$watch(function() {
+                if (paginationService.isRegistered(paginationId)) {
+                    return (paginationService.getItemsPerPage(paginationId));
+                }
+            }, function(current, previous) {
+                if (current != previous && typeof previous !== 'undefined') {
+                    goToPage(scope.pagination.current);
+                }
+            });
+
+            scope.$watch(function() {
+                if (paginationService.isRegistered(paginationId)) {
+                    return paginationService.getCurrentPage(paginationId);
+                }
+            }, function(currentPage, previousPage) {
+                if (currentPage != previousPage) {
+                    goToPage(currentPage);
+                }
+            });
+
+            scope.setCurrent = function(num) {
+                if (paginationService.isRegistered(paginationId) && isValidPageNumber(num)) {
+                    num = parseInt(num, 10);
+                    paginationService.setCurrentPage(paginationId, num);
+                }
+            };
+
+            /**
+             * Custom "track by" function which allows for duplicate "..." entries on long lists,
+             * yet fixes the problem of wrongly-highlighted links which happens when using
+             * "track by $index" - see https://github.com/michaelbromley/angularUtils/issues/153
+             * @param id
+             * @param index
+             * @returns {string}
+             */
+            scope.tracker = function(id, index) {
+                return id + '_' + index;
+            };
+
+            function goToPage(num) {
+                if (paginationService.isRegistered(paginationId) && isValidPageNumber(num)) {
+                    var oldPageNumber = scope.pagination.current;
+
+                    scope.pages = generatePagesArray(num, paginationService.getCollectionLength(paginationId), paginationService.getItemsPerPage(paginationId), paginationRange);
+                    scope.pagination.current = num;
+                    updateRangeValues();
+
+                    // if a callback has been set, then call it with the page number as the first argument
+                    // and the previous page number as a second argument
+                    if (scope.onPageChange) {
+                        scope.onPageChange({
+                            newPageNumber : num,
+                            oldPageNumber : oldPageNumber
+                        });
+                    }
+                }
+            }
+
+            function generatePagination() {
+                if (paginationService.isRegistered(paginationId)) {
+                    var page = parseInt(paginationService.getCurrentPage(paginationId)) || 1;
+                    scope.pages = generatePagesArray(page, paginationService.getCollectionLength(paginationId), paginationService.getItemsPerPage(paginationId), paginationRange);
+                    scope.pagination.current = page;
+                    scope.pagination.last = scope.pages[scope.pages.length - 1];
+                    if (scope.pagination.last < scope.pagination.current) {
+                        scope.setCurrent(scope.pagination.last);
+                    } else {
+                        updateRangeValues();
+                    }
+                }
+            }
+
+            /**
+             * This function updates the values (lower, upper, total) of the `scope.range` object, which can be used in the pagination
+             * template to display the current page range, e.g. "showing 21 - 40 of 144 results";
+             */
+            function updateRangeValues() {
+                if (paginationService.isRegistered(paginationId)) {
+                    var currentPage = paginationService.getCurrentPage(paginationId),
+                        itemsPerPage = paginationService.getItemsPerPage(paginationId),
+                        totalItems = paginationService.getCollectionLength(paginationId);
+
+                    scope.range.lower = (currentPage - 1) * itemsPerPage + 1;
+                    scope.range.upper = Math.min(currentPage * itemsPerPage, totalItems);
+                    scope.range.total = totalItems;
+                }
+            }
+            function isValidPageNumber(num) {
+                return (numberRegex.test(num) && (0 < num && num <= scope.pagination.last));
+            }
+        }
+
+        /**
+         * Generate an array of page numbers (or the '...' string) which is used in an ng-repeat to generate the
+         * links used in pagination
+         *
+         * @param currentPage
+         * @param rowsPerPage
+         * @param paginationRange
+         * @param collectionLength
+         * @returns {Array}
+         */
+        function generatePagesArray(currentPage, collectionLength, rowsPerPage, paginationRange) {
+            var pages = [];
+            var totalPages = Math.ceil(collectionLength / rowsPerPage);
+            var halfWay = Math.ceil(paginationRange / 2);
+            var position;
+
+            if (currentPage <= halfWay) {
+                position = 'start';
+            } else if (totalPages - halfWay < currentPage) {
+                position = 'end';
+            } else {
+                position = 'middle';
+            }
+
+            var ellipsesNeeded = paginationRange < totalPages;
+            var i = 1;
+            while (i <= totalPages && i <= paginationRange) {
+                var pageNumber = calculatePageNumber(i, currentPage, paginationRange, totalPages);
+
+                var openingEllipsesNeeded = (i === 2 && (position === 'middle' || position === 'end'));
+                var closingEllipsesNeeded = (i === paginationRange - 1 && (position === 'middle' || position === 'start'));
+                if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) {
+                    pages.push('...');
+                } else {
+                    pages.push(pageNumber);
+                }
+                i ++;
+            }
+            return pages;
+        }
+
+        /**
+         * Given the position in the sequence of pagination links [i], figure out what page number corresponds to that position.
+         *
+         * @param i
+         * @param currentPage
+         * @param paginationRange
+         * @param totalPages
+         * @returns {*}
+         */
+        function calculatePageNumber(i, currentPage, paginationRange, totalPages) {
+            var halfWay = Math.ceil(paginationRange/2);
+            if (i === paginationRange) {
+                return totalPages;
+            } else if (i === 1) {
+                return i;
+            } else if (paginationRange < totalPages) {
+                if (totalPages - halfWay < currentPage) {
+                    return totalPages - paginationRange + i;
+                } else if (halfWay < currentPage) {
+                    return currentPage - halfWay + i;
+                } else {
+                    return i;
+                }
+            } else {
+                return i;
+            }
+        }
+    }
+
+    /**
+     * This filter slices the collection into pages based on the current page number and number of items per page.
+     * @param paginationService
+     * @returns {Function}
+     */
+    function itemsPerPageFilter(paginationService) {
+
+        return function(collection, itemsPerPage, paginationId) {
+            if (typeof (paginationId) === 'undefined') {
+                paginationId = DEFAULT_ID;
+            }
+            if (!paginationService.isRegistered(paginationId)) {
+                throw 'pagination directive: the itemsPerPage id argument (id: ' + paginationId + ') does not match a registered pagination-id.';
+            }
+            var end;
+            var start;
+            if (angular.isObject(collection)) {
+                itemsPerPage = parseInt(itemsPerPage) || 9999999999;
+                if (paginationService.isAsyncMode(paginationId)) {
+                    start = 0;
+                } else {
+                    start = (paginationService.getCurrentPage(paginationId) - 1) * itemsPerPage;
+                }
+                end = start + itemsPerPage;
+                paginationService.setItemsPerPage(paginationId, itemsPerPage);
+
+                if (collection instanceof Array) {
+                    // the array just needs to be sliced
+                    return collection.slice(start, end);
+                } else {
+                    // in the case of an object, we need to get an array of keys, slice that, then map back to
+                    // the original object.
+                    var slicedObject = {};
+                    angular.forEach(keys(collection).slice(start, end), function(key) {
+                        slicedObject[key] = collection[key];
+                    });
+                    return slicedObject;
+                }
+            } else {
+                return collection;
+            }
+        };
+    }
+
+    /**
+     * Shim for the Object.keys() method which does not exist in IE < 9
+     * @param obj
+     * @returns {Array}
+     */
+    function keys(obj) {
+        if (!Object.keys) {
+            var objKeys = [];
+            for (var i in obj) {
+                if (obj.hasOwnProperty(i)) {
+                    objKeys.push(i);
+                }
+            }
+            return objKeys;
+        } else {
+            return Object.keys(obj);
+        }
+    }
+
+    /**
+     * This service allows the various parts of the module to communicate and stay in sync.
+     */
+    function paginationService() {
+
+        var instances = {};
+        var lastRegisteredInstance;
+
+        this.registerInstance = function(instanceId) {
+            if (typeof instances[instanceId] === 'undefined') {
+                instances[instanceId] = {
+                    asyncMode: false
+                };
+                lastRegisteredInstance = instanceId;
+            }
+        };
+
+        this.deregisterInstance = function(instanceId) {
+            delete instances[instanceId];
+        };
+        
+        this.isRegistered = function(instanceId) {
+            return (typeof instances[instanceId] !== 'undefined');
+        };
+
+        this.getLastInstanceId = function() {
+            return lastRegisteredInstance;
+        };
+
+        this.setCurrentPageParser = function(instanceId, val, scope) {
+            instances[instanceId].currentPageParser = val;
+            instances[instanceId].context = scope;
+        };
+        this.setCurrentPage = function(instanceId, val) {
+            instances[instanceId].currentPageParser.assign(instances[instanceId].context, val);
+        };
+        this.getCurrentPage = function(instanceId) {
+            var parser = instances[instanceId].currentPageParser;
+            return parser ? parser(instances[instanceId].context) : 1;
+        };
+
+        this.setItemsPerPage = function(instanceId, val) {
+            instances[instanceId].itemsPerPage = val;
+        };
+        this.getItemsPerPage = function(instanceId) {
+            return instances[instanceId].itemsPerPage;
+        };
+
+        this.setCollectionLength = function(instanceId, val) {
+            instances[instanceId].collectionLength = val;
+        };
+        this.getCollectionLength = function(instanceId) {
+            return instances[instanceId].collectionLength;
+        };
+
+        this.setAsyncModeTrue = function(instanceId) {
+            instances[instanceId].asyncMode = true;
+        };
+
+        this.setAsyncModeFalse = function(instanceId) {
+            instances[instanceId].asyncMode = false;
+        };
+
+        this.isAsyncMode = function(instanceId) {
+            return instances[instanceId].asyncMode;
+        };
+    }
+
+    /**
+     * This provider allows global configuration of the template path used by the dir-pagination-controls directive.
+     */
+    function paginationTemplateProvider() {
+
+        var templatePath = 'angularUtils.directives.dirPagination.template';
+        var templateString;
+
+        /**
+         * Set a templateUrl to be used by all instances of <dir-pagination-controls>
+         * @param {String} path
+         */
+        this.setPath = function(path) {
+            templatePath = path;
+        };
+
+        /**
+         * Set a string of HTML to be used as a template by all instances
+         * of <dir-pagination-controls>. If both a path *and* a string have been set,
+         * the string takes precedence.
+         * @param {String} str
+         */
+        this.setString = function(str) {
+            templateString = str;
+        };
+
+        this.$get = function() {
+            return {
+                getPath: function() {
+                    return templatePath;
+                },
+                getString: function() {
+                    return templateString;
+                }
+            };
+        };
+    }
+})();
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular.min.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular.min.js
new file mode 100644
index 0000000..7f3704c
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angular.min.js
@@ -0,0 +1,250 @@
+/*
+ AngularJS v1.3.14
+ (c) 2010-2014 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(P,X,u){'use strict';function M(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.3.14/"+(b?b+"/":"")+a;for(a=1;a<arguments.length;a++){c=c+(1==a?"?":"&")+"p"+(a-1)+"=";var d=encodeURIComponent,e;e=arguments[a];e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e;c+=d(e)}return Error(c)}}function Ta(b){if(null==b||Ua(b))return!1;var a=b.length;return b.nodeType===
+na&&a?!0:x(b)||E(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function s(b,a,c){var d,e;if(b)if(G(b))for(d in b)"prototype"==d||"length"==d||"name"==d||b.hasOwnProperty&&!b.hasOwnProperty(d)||a.call(c,b[d],d,b);else if(E(b)||Ta(b)){var f="object"!==typeof b;d=0;for(e=b.length;d<e;d++)(f||d in b)&&a.call(c,b[d],d,b)}else if(b.forEach&&b.forEach!==s)b.forEach(a,c,b);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d,b);return b}function Ed(b,a,c){for(var d=Object.keys(b).sort(),e=0;e<d.length;e++)a.call(c,
+b[d[e]],d[e]);return d}function lc(b){return function(a,c){b(c,a)}}function Fd(){return++ob}function mc(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function w(b){for(var a=b.$$hashKey,c=1,d=arguments.length;c<d;c++){var e=arguments[c];if(e)for(var f=Object.keys(e),g=0,h=f.length;g<h;g++){var l=f[g];b[l]=e[l]}}mc(b,a);return b}function $(b){return parseInt(b,10)}function Pb(b,a){return w(Object.create(b),a)}function B(){}function oa(b){return b}function da(b){return function(){return b}}function z(b){return"undefined"===
+typeof b}function y(b){return"undefined"!==typeof b}function J(b){return null!==b&&"object"===typeof b}function x(b){return"string"===typeof b}function V(b){return"number"===typeof b}function pa(b){return"[object Date]"===Da.call(b)}function G(b){return"function"===typeof b}function pb(b){return"[object RegExp]"===Da.call(b)}function Ua(b){return b&&b.window===b}function Va(b){return b&&b.$evalAsync&&b.$watch}function Wa(b){return"boolean"===typeof b}function nc(b){return!(!b||!(b.nodeName||b.prop&&
+b.attr&&b.find))}function Gd(b){var a={};b=b.split(",");var c;for(c=0;c<b.length;c++)a[b[c]]=!0;return a}function ta(b){return R(b.nodeName||b[0]&&b[0].nodeName)}function Xa(b,a){var c=b.indexOf(a);0<=c&&b.splice(c,1);return a}function Ea(b,a,c,d){if(Ua(b)||Va(b))throw Ka("cpws");if(a){if(b===a)throw Ka("cpi");c=c||[];d=d||[];if(J(b)){var e=c.indexOf(b);if(-1!==e)return d[e];c.push(b);d.push(a)}if(E(b))for(var f=a.length=0;f<b.length;f++)e=Ea(b[f],null,c,d),J(b[f])&&(c.push(b[f]),d.push(e)),a.push(e);
+else{var g=a.$$hashKey;E(a)?a.length=0:s(a,function(b,c){delete a[c]});for(f in b)b.hasOwnProperty(f)&&(e=Ea(b[f],null,c,d),J(b[f])&&(c.push(b[f]),d.push(e)),a[f]=e);mc(a,g)}}else if(a=b)E(b)?a=Ea(b,[],c,d):pa(b)?a=new Date(b.getTime()):pb(b)?(a=new RegExp(b.source,b.toString().match(/[^\/]*$/)[0]),a.lastIndex=b.lastIndex):J(b)&&(e=Object.create(Object.getPrototypeOf(b)),a=Ea(b,e,c,d));return a}function qa(b,a){if(E(b)){a=a||[];for(var c=0,d=b.length;c<d;c++)a[c]=b[c]}else if(J(b))for(c in a=a||{},
+b)if("$"!==c.charAt(0)||"$"!==c.charAt(1))a[c]=b[c];return a||b}function ea(b,a){if(b===a)return!0;if(null===b||null===a)return!1;if(b!==b&&a!==a)return!0;var c=typeof b,d;if(c==typeof a&&"object"==c)if(E(b)){if(!E(a))return!1;if((c=b.length)==a.length){for(d=0;d<c;d++)if(!ea(b[d],a[d]))return!1;return!0}}else{if(pa(b))return pa(a)?ea(b.getTime(),a.getTime()):!1;if(pb(b)&&pb(a))return b.toString()==a.toString();if(Va(b)||Va(a)||Ua(b)||Ua(a)||E(a))return!1;c={};for(d in b)if("$"!==d.charAt(0)&&!G(b[d])){if(!ea(b[d],
+a[d]))return!1;c[d]=!0}for(d in a)if(!c.hasOwnProperty(d)&&"$"!==d.charAt(0)&&a[d]!==u&&!G(a[d]))return!1;return!0}return!1}function Ya(b,a,c){return b.concat(Za.call(a,c))}function oc(b,a){var c=2<arguments.length?Za.call(arguments,2):[];return!G(a)||a instanceof RegExp?a:c.length?function(){return arguments.length?a.apply(b,Ya(c,arguments,0)):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}}function Hd(b,a){var c=a;"string"===typeof b&&"$"===b.charAt(0)&&"$"===b.charAt(1)?
+c=u:Ua(a)?c="$WINDOW":a&&X===a?c="$DOCUMENT":Va(a)&&(c="$SCOPE");return c}function $a(b,a){if("undefined"===typeof b)return u;V(a)||(a=a?2:null);return JSON.stringify(b,Hd,a)}function pc(b){return x(b)?JSON.parse(b):b}function ua(b){b=C(b).clone();try{b.empty()}catch(a){}var c=C("<div>").append(b).html();try{return b[0].nodeType===qb?R(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+R(b)})}catch(d){return R(c)}}function qc(b){try{return decodeURIComponent(b)}catch(a){}}function rc(b){var a=
+{},c,d;s((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=qc(c[0]),y(d)&&(b=y(c[1])?qc(c[1]):!0,sc.call(a,d)?E(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Qb(b){var a=[];s(b,function(b,d){E(b)?s(b,function(b){a.push(Fa(d,!0)+(!0===b?"":"="+Fa(b,!0)))}):a.push(Fa(d,!0)+(!0===b?"":"="+Fa(b,!0)))});return a.length?a.join("&"):""}function rb(b){return Fa(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Fa(b,a){return encodeURIComponent(b).replace(/%40/gi,
+"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Id(b,a){var c,d,e=sb.length;b=C(b);for(d=0;d<e;++d)if(c=sb[d]+a,x(c=b.attr(c)))return c;return null}function Jd(b,a){var c,d,e={};s(sb,function(a){a+="app";!c&&b.hasAttribute&&b.hasAttribute(a)&&(c=b,d=b.getAttribute(a))});s(sb,function(a){a+="app";var e;!c&&(e=b.querySelector("["+a.replace(":","\\:")+"]"))&&(c=e,d=e.getAttribute(a))});c&&(e.strictDi=null!==Id(c,"strict-di"),
+a(c,d?[d]:[],e))}function tc(b,a,c){J(c)||(c={});c=w({strictDi:!1},c);var d=function(){b=C(b);if(b.injector()){var d=b[0]===X?"document":ua(b);throw Ka("btstrpd",d.replace(/</,"&lt;").replace(/>/,"&gt;"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);c.debugInfoEnabled&&a.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);a.unshift("ng");d=ab(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",
+d);c(b)(a)})}]);return d},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;P&&e.test(P.name)&&(c.debugInfoEnabled=!0,P.name=P.name.replace(e,""));if(P&&!f.test(P.name))return d();P.name=P.name.replace(f,"");aa.resumeBootstrap=function(b){s(b,function(b){a.push(b)});return d()};G(aa.resumeDeferredBootstrap)&&aa.resumeDeferredBootstrap()}function Kd(){P.name="NG_ENABLE_DEBUG_INFO!"+P.name;P.location.reload()}function Ld(b){b=aa.element(b).injector();if(!b)throw Ka("test");return b.get("$$testability")}
+function uc(b,a){a=a||"_";return b.replace(Md,function(b,d){return(d?a:"")+b.toLowerCase()})}function Nd(){var b;vc||((ra=P.jQuery)&&ra.fn.on?(C=ra,w(ra.fn,{scope:La.scope,isolateScope:La.isolateScope,controller:La.controller,injector:La.injector,inheritedData:La.inheritedData}),b=ra.cleanData,ra.cleanData=function(a){var c;if(Rb)Rb=!1;else for(var d=0,e;null!=(e=a[d]);d++)(c=ra._data(e,"events"))&&c.$destroy&&ra(e).triggerHandler("$destroy");b(a)}):C=Q,aa.element=C,vc=!0)}function Sb(b,a,c){if(!b)throw Ka("areq",
+a||"?",c||"required");return b}function tb(b,a,c){c&&E(b)&&(b=b[b.length-1]);Sb(G(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Ma(b,a){if("hasOwnProperty"===b)throw Ka("badname",a);}function wc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g<f;g++)d=a[g],b&&(b=(e=b)[d]);return!c&&G(b)?oc(e,b):b}function ub(b){var a=b[0];b=b[b.length-1];var c=[a];do{a=a.nextSibling;if(!a)break;c.push(a)}while(a!==b);return C(c)}function fa(){return Object.create(null)}
+function Od(b){function a(a,b,c){return a[b]||(a[b]=c())}var c=M("$injector"),d=M("ng");b=a(b,"angular",Object);b.$$minErr=b.$$minErr||M;return a(b,"module",function(){var b={};return function(f,g,h){if("hasOwnProperty"===f)throw d("badname","module");g&&b.hasOwnProperty(f)&&(b[f]=null);return a(b,f,function(){function a(c,d,e,f){f||(f=b);return function(){f[e||"push"]([c,d,arguments]);return t}}if(!g)throw c("nomod",f);var b=[],d=[],e=[],q=a("$injector","invoke","push",d),t={_invokeQueue:b,_configBlocks:d,
+_runBlocks:e,requires:g,name:f,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),animation:a("$animateProvider","register"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:q,run:function(a){e.push(a);return this}};h&&q(h);return t})}})}function Pd(b){w(b,{bootstrap:tc,copy:Ea,extend:w,equals:ea,
+element:C,forEach:s,injector:ab,noop:B,bind:oc,toJson:$a,fromJson:pc,identity:oa,isUndefined:z,isDefined:y,isString:x,isFunction:G,isObject:J,isNumber:V,isElement:nc,isArray:E,version:Qd,isDate:pa,lowercase:R,uppercase:vb,callbacks:{counter:0},getTestability:Ld,$$minErr:M,$$csp:bb,reloadWithDebugInfo:Kd});cb=Od(P);try{cb("ngLocale")}catch(a){cb("ngLocale",[]).provider("$locale",Rd)}cb("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:Sd});a.provider("$compile",xc).directive({a:Td,
+input:yc,textarea:yc,form:Ud,script:Vd,select:Wd,style:Xd,option:Yd,ngBind:Zd,ngBindHtml:$d,ngBindTemplate:ae,ngClass:be,ngClassEven:ce,ngClassOdd:de,ngCloak:ee,ngController:fe,ngForm:ge,ngHide:he,ngIf:ie,ngInclude:je,ngInit:ke,ngNonBindable:le,ngPluralize:me,ngRepeat:ne,ngShow:oe,ngStyle:pe,ngSwitch:qe,ngSwitchWhen:re,ngSwitchDefault:se,ngOptions:te,ngTransclude:ue,ngModel:ve,ngList:we,ngChange:xe,pattern:zc,ngPattern:zc,required:Ac,ngRequired:Ac,minlength:Bc,ngMinlength:Bc,maxlength:Cc,ngMaxlength:Cc,
+ngValue:ye,ngModelOptions:ze}).directive({ngInclude:Ae}).directive(wb).directive(Dc);a.provider({$anchorScroll:Be,$animate:Ce,$browser:De,$cacheFactory:Ee,$controller:Fe,$document:Ge,$exceptionHandler:He,$filter:Ec,$interpolate:Ie,$interval:Je,$http:Ke,$httpBackend:Le,$location:Me,$log:Ne,$parse:Oe,$rootScope:Pe,$q:Qe,$$q:Re,$sce:Se,$sceDelegate:Te,$sniffer:Ue,$templateCache:Ve,$templateRequest:We,$$testability:Xe,$timeout:Ye,$window:Ze,$$rAF:$e,$$asyncCallback:af,$$jqLite:bf})}])}function db(b){return b.replace(cf,
+function(a,b,d,e){return e?d.toUpperCase():d}).replace(df,"Moz$1")}function Fc(b){b=b.nodeType;return b===na||!b||9===b}function Gc(b,a){var c,d,e=a.createDocumentFragment(),f=[];if(Tb.test(b)){c=c||e.appendChild(a.createElement("div"));d=(ef.exec(b)||["",""])[1].toLowerCase();d=ga[d]||ga._default;c.innerHTML=d[1]+b.replace(ff,"<$1></$2>")+d[2];for(d=d[0];d--;)c=c.lastChild;f=Ya(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";s(f,function(a){e.appendChild(a)});
+return e}function Q(b){if(b instanceof Q)return b;var a;x(b)&&(b=T(b),a=!0);if(!(this instanceof Q)){if(a&&"<"!=b.charAt(0))throw Ub("nosel");return new Q(b)}if(a){a=X;var c;b=(c=gf.exec(b))?[a.createElement(c[1])]:(c=Gc(b,a))?c.childNodes:[]}Hc(this,b)}function Vb(b){return b.cloneNode(!0)}function xb(b,a){a||yb(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;d<e;d++)yb(c[d])}function Ic(b,a,c,d){if(y(d))throw Ub("offargs");var e=(d=zb(b))&&d.events,f=d&&d.handle;if(f)if(a)s(a.split(" "),
+function(a){if(y(c)){var d=e[a];Xa(d||[],c);if(d&&0<d.length)return}b.removeEventListener(a,f,!1);delete e[a]});else for(a in e)"$destroy"!==a&&b.removeEventListener(a,f,!1),delete e[a]}function yb(b,a){var c=b.ng339,d=c&&Ab[c];d&&(a?delete d.data[a]:(d.handle&&(d.events.$destroy&&d.handle({},"$destroy"),Ic(b)),delete Ab[c],b.ng339=u))}function zb(b,a){var c=b.ng339,c=c&&Ab[c];a&&!c&&(b.ng339=c=++hf,c=Ab[c]={events:{},data:{},handle:u});return c}function Wb(b,a,c){if(Fc(b)){var d=y(c),e=!d&&a&&!J(a),
+f=!a;b=(b=zb(b,!e))&&b.data;if(d)b[a]=c;else{if(f)return b;if(e)return b&&b[a];w(b,a)}}}function Bb(b,a){return b.getAttribute?-1<(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+a+" "):!1}function Cb(b,a){a&&b.setAttribute&&s(a.split(" "),function(a){b.setAttribute("class",T((" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+T(a)+" "," ")))})}function Db(b,a){if(a&&b.setAttribute){var c=(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");
+s(a.split(" "),function(a){a=T(a);-1===c.indexOf(" "+a+" ")&&(c+=a+" ")});b.setAttribute("class",T(c))}}function Hc(b,a){if(a)if(a.nodeType)b[b.length++]=a;else{var c=a.length;if("number"===typeof c&&a.window!==a){if(c)for(var d=0;d<c;d++)b[b.length++]=a[d]}else b[b.length++]=a}}function Jc(b,a){return Eb(b,"$"+(a||"ngController")+"Controller")}function Eb(b,a,c){9==b.nodeType&&(b=b.documentElement);for(a=E(a)?a:[a];b;){for(var d=0,e=a.length;d<e;d++)if((c=C.data(b,a[d]))!==u)return c;b=b.parentNode||
+11===b.nodeType&&b.host}}function Kc(b){for(xb(b,!0);b.firstChild;)b.removeChild(b.firstChild)}function Lc(b,a){a||xb(b);var c=b.parentNode;c&&c.removeChild(b)}function jf(b,a){a=a||P;if("complete"===a.document.readyState)a.setTimeout(b);else C(a).on("load",b)}function Mc(b,a){var c=Fb[a.toLowerCase()];return c&&Nc[ta(b)]&&c}function kf(b,a){var c=b.nodeName;return("INPUT"===c||"TEXTAREA"===c)&&Oc[a]}function lf(b,a){var c=function(c,e){c.isDefaultPrevented=function(){return c.defaultPrevented};var f=
+a[e||c.type],g=f?f.length:0;if(g){if(z(c.immediatePropagationStopped)){var h=c.stopImmediatePropagation;c.stopImmediatePropagation=function(){c.immediatePropagationStopped=!0;c.stopPropagation&&c.stopPropagation();h&&h.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};1<g&&(f=qa(f));for(var l=0;l<g;l++)c.isImmediatePropagationStopped()||f[l].call(b,c)}};c.elem=b;return c}function bf(){this.$get=function(){return w(Q,{hasClass:function(b,a){b.attr&&(b=b[0]);
+return Bb(b,a)},addClass:function(b,a){b.attr&&(b=b[0]);return Db(b,a)},removeClass:function(b,a){b.attr&&(b=b[0]);return Cb(b,a)}})}}function Na(b,a){var c=b&&b.$$hashKey;if(c)return"function"===typeof c&&(c=b.$$hashKey()),c;c=typeof b;return c="function"==c||"object"==c&&null!==b?b.$$hashKey=c+":"+(a||Fd)():c+":"+b}function eb(b,a){if(a){var c=0;this.nextUid=function(){return++c}}s(b,this.put,this)}function mf(b){return(b=b.toString().replace(Pc,"").match(Qc))?"function("+(b[1]||"").replace(/[\s\r\n]+/,
+" ")+")":"fn"}function ab(b,a){function c(a){return function(b,c){if(J(b))s(b,lc(a));else return a(b,c)}}function d(a,b){Ma(a,"service");if(G(b)||E(b))b=q.instantiate(b);if(!b.$get)throw Ga("pget",a);return p[a+"Provider"]=b}function e(a,b){return function(){var c=r.invoke(b,this);if(z(c))throw Ga("undef",a);return c}}function f(a,b,c){return d(a,{$get:!1!==c?e(a,b):b})}function g(a){var b=[],c;s(a,function(a){function d(a){var b,c;b=0;for(c=a.length;b<c;b++){var e=a[b],f=q.get(e[0]);f[e[1]].apply(f,
+e[2])}}if(!m.get(a)){m.put(a,!0);try{x(a)?(c=cb(a),b=b.concat(g(c.requires)).concat(c._runBlocks),d(c._invokeQueue),d(c._configBlocks)):G(a)?b.push(q.invoke(a)):E(a)?b.push(q.invoke(a)):tb(a,"module")}catch(e){throw E(a)&&(a=a[a.length-1]),e.message&&e.stack&&-1==e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Ga("modulerr",a,e.stack||e.message||e);}}});return b}function h(b,c){function d(a,e){if(b.hasOwnProperty(a)){if(b[a]===l)throw Ga("cdep",a+" <- "+k.join(" <- "));return b[a]}try{return k.unshift(a),
+b[a]=l,b[a]=c(a,e)}catch(f){throw b[a]===l&&delete b[a],f;}finally{k.shift()}}function e(b,c,f,g){"string"===typeof f&&(g=f,f=null);var h=[],k=ab.$$annotate(b,a,g),l,q,p;q=0;for(l=k.length;q<l;q++){p=k[q];if("string"!==typeof p)throw Ga("itkn",p);h.push(f&&f.hasOwnProperty(p)?f[p]:d(p,g))}E(b)&&(b=b[l]);return b.apply(c,h)}return{invoke:e,instantiate:function(a,b,c){var d=Object.create((E(a)?a[a.length-1]:a).prototype||null);a=e(a,d,b,c);return J(a)||G(a)?a:d},get:d,annotate:ab.$$annotate,has:function(a){return p.hasOwnProperty(a+
+"Provider")||b.hasOwnProperty(a)}}}a=!0===a;var l={},k=[],m=new eb([],!0),p={$provide:{provider:c(d),factory:c(f),service:c(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:c(function(a,b){return f(a,da(b),!1)}),constant:c(function(a,b){Ma(a,"constant");p[a]=b;t[a]=b}),decorator:function(a,b){var c=q.get(a+"Provider"),d=c.$get;c.$get=function(){var a=r.invoke(d,c);return r.invoke(b,null,{$delegate:a})}}}},q=p.$injector=h(p,function(a,b){aa.isString(b)&&k.push(b);
+throw Ga("unpr",k.join(" <- "));}),t={},r=t.$injector=h(t,function(a,b){var c=q.get(a+"Provider",b);return r.invoke(c.$get,c,u,a)});s(g(b),function(a){r.invoke(a||B)});return r}function Be(){var b=!0;this.disableAutoScrolling=function(){b=!1};this.$get=["$window","$location","$rootScope",function(a,c,d){function e(a){var b=null;Array.prototype.some.call(a,function(a){if("a"===ta(a))return b=a,!0});return b}function f(b){if(b){b.scrollIntoView();var c;c=g.yOffset;G(c)?c=c():nc(c)?(c=c[0],c="fixed"!==
+a.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):V(c)||(c=0);c&&(b=b.getBoundingClientRect().top,a.scrollBy(0,b-c))}else a.scrollTo(0,0)}function g(){var a=c.hash(),b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=a.document;b&&d.$watch(function(){return c.hash()},function(a,b){a===b&&""===a||jf(function(){d.$evalAsync(g)})});return g}]}function af(){this.$get=["$$rAF","$timeout",function(b,a){return b.supported?function(a){return b(a)}:
+function(b){return a(b,0,!1)}}]}function nf(b,a,c,d){function e(a){try{a.apply(null,Za.call(arguments,1))}finally{if(n--,0===n)for(;D.length;)try{D.pop()()}catch(b){c.error(b)}}}function f(a,b){(function ca(){s(H,function(a){a()});v=b(ca,a)})()}function g(){h();l()}function h(){A=b.history.state;A=z(A)?null:A;ea(A,O)&&(A=O);O=A}function l(){if(F!==m.url()||N!==A)F=m.url(),N=A,s(W,function(a){a(m.url(),A)})}function k(a){try{return decodeURIComponent(a)}catch(b){return a}}var m=this,p=a[0],q=b.location,
+t=b.history,r=b.setTimeout,S=b.clearTimeout,K={};m.isMock=!1;var n=0,D=[];m.$$completeOutstandingRequest=e;m.$$incOutstandingRequestCount=function(){n++};m.notifyWhenNoOutstandingRequests=function(a){s(H,function(a){a()});0===n?a():D.push(a)};var H=[],v;m.addPollFn=function(a){z(v)&&f(100,r);H.push(a);return a};var A,N,F=q.href,ba=a.find("base"),I=null;h();N=A;m.url=function(a,c,e){z(e)&&(e=null);q!==b.location&&(q=b.location);t!==b.history&&(t=b.history);if(a){var f=N===e;if(F===a&&(!d.history||
+f))return m;var g=F&&Ha(F)===Ha(a);F=a;N=e;!d.history||g&&f?(g||(I=a),c?q.replace(a):g?(c=q,e=a.indexOf("#"),a=-1===e?"":a.substr(e+1),c.hash=a):q.href=a):(t[c?"replaceState":"pushState"](e,"",a),h(),N=A);return m}return I||q.href.replace(/%27/g,"'")};m.state=function(){return A};var W=[],va=!1,O=null;m.onUrlChange=function(a){if(!va){if(d.history)C(b).on("popstate",g);C(b).on("hashchange",g);va=!0}W.push(a);return a};m.$$checkUrlChange=l;m.baseHref=function(){var a=ba.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,
+""):""};var wa={},y="",ha=m.baseHref();m.cookies=function(a,b){var d,e,f,g;if(a)b===u?p.cookie=encodeURIComponent(a)+"=;path="+ha+";expires=Thu, 01 Jan 1970 00:00:00 GMT":x(b)&&(d=(p.cookie=encodeURIComponent(a)+"="+encodeURIComponent(b)+";path="+ha).length+1,4096<d&&c.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+d+" > 4096 bytes)!"));else{if(p.cookie!==y)for(y=p.cookie,d=y.split("; "),wa={},f=0;f<d.length;f++)e=d[f],g=e.indexOf("="),0<g&&(a=k(e.substring(0,g)),
+wa[a]===u&&(wa[a]=k(e.substring(g+1))));return wa}};m.defer=function(a,b){var c;n++;c=r(function(){delete K[c];e(a)},b||0);K[c]=!0;return c};m.defer.cancel=function(a){return K[a]?(delete K[a],S(a),e(B),!0):!1}}function De(){this.$get=["$window","$log","$sniffer","$document",function(b,a,c,d){return new nf(b,d,a,c)}]}function Ee(){this.$get=function(){function b(b,d){function e(a){a!=p&&(q?q==a&&(q=a.n):q=a,f(a.n,a.p),f(a,p),p=a,p.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(b in a)throw M("$cacheFactory")("iid",
+b);var g=0,h=w({},d,{id:b}),l={},k=d&&d.capacity||Number.MAX_VALUE,m={},p=null,q=null;return a[b]={put:function(a,b){if(k<Number.MAX_VALUE){var c=m[a]||(m[a]={key:a});e(c)}if(!z(b))return a in l||g++,l[a]=b,g>k&&this.remove(q.key),b},get:function(a){if(k<Number.MAX_VALUE){var b=m[a];if(!b)return;e(b)}return l[a]},remove:function(a){if(k<Number.MAX_VALUE){var b=m[a];if(!b)return;b==p&&(p=b.p);b==q&&(q=b.n);f(b.n,b.p);delete m[a]}delete l[a];g--},removeAll:function(){l={};g=0;m={};p=q=null},destroy:function(){m=
+h=l=null;delete a[b]},info:function(){return w({},h,{size:g})}}}var a={};b.info=function(){var b={};s(a,function(a,e){b[e]=a.info()});return b};b.get=function(b){return a[b]};return b}}function Ve(){this.$get=["$cacheFactory",function(b){return b("templates")}]}function xc(b,a){function c(a,b){var c=/^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,d={};s(a,function(a,e){var f=a.match(c);if(!f)throw ia("iscp",b,e,a);d[e]={mode:f[1][0],collection:"*"===f[2],optional:"?"===f[3],attrName:f[4]||e}});return d}var d=
+{},e=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,f=/(([\w\-]+)(?:\:([^;]+))?;?)/,g=Gd("ngSrc,ngSrcset,src,srcset"),h=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,l=/^(on[a-z]+|formaction)$/;this.directive=function p(a,e){Ma(a,"directive");x(a)?(Sb(e,"directiveFactory"),d.hasOwnProperty(a)||(d[a]=[],b.factory(a+"Directive",["$injector","$exceptionHandler",function(b,e){var f=[];s(d[a],function(d,g){try{var h=b.invoke(d);G(h)?h={compile:da(h)}:!h.compile&&h.link&&(h.compile=da(h.link));h.priority=h.priority||0;h.index=
+g;h.name=h.name||a;h.require=h.require||h.controller&&h.name;h.restrict=h.restrict||"EA";J(h.scope)&&(h.$$isolateBindings=c(h.scope,h.name));f.push(h)}catch(l){e(l)}});return f}])),d[a].push(e)):s(a,lc(p));return this};this.aHrefSanitizationWhitelist=function(b){return y(b)?(a.aHrefSanitizationWhitelist(b),this):a.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(b){return y(b)?(a.imgSrcSanitizationWhitelist(b),this):a.imgSrcSanitizationWhitelist()};var k=!0;this.debugInfoEnabled=
+function(a){return y(a)?(k=a,this):k};this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,b,c,r,S,K,n,D,H,v,A){function N(a,b){try{a.addClass(b)}catch(c){}}function F(a,b,c,d,e){a instanceof C||(a=C(a));s(a,function(b,c){b.nodeType==qb&&b.nodeValue.match(/\S+/)&&(a[c]=C(b).wrap("<span></span>").parent()[0])});var f=ba(a,b,a,c,d,e);F.$$addScopeClass(a);var g=null;return function(b,
+c,d){Sb(b,"scope");d=d||{};var e=d.parentBoundTranscludeFn,h=d.transcludeControllers;d=d.futureParentElement;e&&e.$$boundTransclude&&(e=e.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==ta(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==g?C(Xb(g,C("<div>").append(a).html())):c?La.clone.call(a):a;if(h)for(var l in h)d.data("$"+l+"Controller",h[l].instance);F.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,e);return d}}function ba(a,b,c,d,e,f){function g(a,c,d,e){var f,l,k,q,p,r,D;if(n)for(D=
+Array(c.length),q=0;q<h.length;q+=3)f=h[q],D[f]=c[f];else D=c;q=0;for(p=h.length;q<p;)l=D[h[q++]],c=h[q++],f=h[q++],c?(c.scope?(k=a.$new(),F.$$addScopeInfo(C(l),k)):k=a,r=c.transcludeOnThisElement?I(a,c.transclude,e,c.elementTranscludeOnThisElement):!c.templateOnThisElement&&e?e:!e&&b?I(a,b):null,c(f,k,l,d,r)):f&&f(a,l.childNodes,u,e)}for(var h=[],l,k,q,p,n,r=0;r<a.length;r++){l=new Yb;k=W(a[r],[],l,0===r?d:u,e);(f=k.length?y(k,a[r],l,b,c,null,[],[],f):null)&&f.scope&&F.$$addScopeClass(l.$$element);
+l=f&&f.terminal||!(q=a[r].childNodes)||!q.length?null:ba(q,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b);if(f||l)h.push(r,f,l),p=!0,n=n||f;f=null}return p?g:null}function I(a,b,c,d){return function(d,e,f,g,h){d||(d=a.$new(!1,h),d.$$transcluded=!0);return b(d,e,{parentBoundTranscludeFn:c,transcludeControllers:f,futureParentElement:g})}}function W(a,b,c,d,g){var h=c.$attr,l;switch(a.nodeType){case na:ha(b,ya(ta(a)),"E",d,g);for(var k,q,p,n=a.attributes,r=0,D=n&&n.length;r<
+D;r++){var S=!1,t=!1;k=n[r];l=k.name;q=T(k.value);k=ya(l);if(p=Pa.test(k))l=l.replace(Sc,"").substr(8).replace(/_(.)/g,function(a,b){return b.toUpperCase()});var A=k.replace(/(Start|End)$/,"");fb(A)&&k===A+"Start"&&(S=l,t=l.substr(0,l.length-5)+"end",l=l.substr(0,l.length-6));k=ya(l.toLowerCase());h[k]=l;if(p||!c.hasOwnProperty(k))c[k]=q,Mc(a,k)&&(c[k]=!0);Aa(a,b,q,k,p);ha(b,k,"A",d,g,S,t)}a=a.className;J(a)&&(a=a.animVal);if(x(a)&&""!==a)for(;l=f.exec(a);)k=ya(l[2]),ha(b,k,"C",d,g)&&(c[k]=T(l[3])),
+a=a.substr(l.index+l[0].length);break;case qb:P(b,a.nodeValue);break;case 8:try{if(l=e.exec(a.nodeValue))k=ya(l[1]),ha(b,k,"M",d,g)&&(c[k]=T(l[2]))}catch(v){}}b.sort(ca);return b}function va(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ia("uterdir",b,c);a.nodeType==na&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return C(d)}function O(a,b,c){return function(d,e,f,g,h){e=va(e[0],b,c);return a(d,e,f,g,h)}}function y(a,
+d,e,f,g,l,k,p,n){function r(a,b,c,d){if(a){c&&(a=O(a,c,d));a.require=L.require;a.directiveName=ca;if(I===L||L.$$isolateScope)a=Y(a,{isolateScope:!0});k.push(a)}if(b){c&&(b=O(b,c,d));b.require=L.require;b.directiveName=ca;if(I===L||L.$$isolateScope)b=Y(b,{isolateScope:!0});p.push(b)}}function D(a,b,c,d){var e,f="data",g=!1,l=c,k;if(x(b)){k=b.match(h);b=b.substring(k[0].length);k[3]&&(k[1]?k[3]=null:k[1]=k[3]);"^"===k[1]?f="inheritedData":"^^"===k[1]&&(f="inheritedData",l=c.parent());"?"===k[2]&&(g=
+!0);e=null;d&&"data"===f&&(e=d[b])&&(e=e.instance);e=e||l[f]("$"+b+"Controller");if(!e&&!g)throw ia("ctreq",b,a);return e||null}E(b)&&(e=[],s(b,function(b){e.push(D(a,b,c,d))}));return e}function A(a,c,f,g,h){function l(a,b,c){var d;Va(a)||(c=b,b=a,a=u);B&&(d=N);c||(c=B?W.parent():W);return h(a,b,d,c,va)}var n,r,t,v,N,gb,W,O;d===f?(O=e,W=e.$$element):(W=C(f),O=new Yb(W,e));I&&(v=c.$new(!0));h&&(gb=l,gb.$$boundTransclude=h);H&&(ba={},N={},s(H,function(a){var b={$scope:a===I||a.$$isolateScope?v:c,$element:W,
+$attrs:O,$transclude:gb};t=a.controller;"@"==t&&(t=O[a.name]);b=K(t,b,!0,a.controllerAs);N[a.name]=b;B||W.data("$"+a.name+"Controller",b.instance);ba[a.name]=b}));if(I){F.$$addScopeInfo(W,v,!0,!(ja&&(ja===I||ja===I.$$originalDirective)));F.$$addScopeClass(W,!0);g=ba&&ba[I.name];var xa=v;g&&g.identifier&&!0===I.bindToController&&(xa=g.instance);s(v.$$isolateBindings=I.$$isolateBindings,function(a,d){var e=a.attrName,f=a.optional,g,h,l,k;switch(a.mode){case "@":O.$observe(e,function(a){xa[d]=a});O.$$observers[e].$$scope=
+c;O[e]&&(xa[d]=b(O[e])(c));break;case "=":if(f&&!O[e])break;h=S(O[e]);k=h.literal?ea:function(a,b){return a===b||a!==a&&b!==b};l=h.assign||function(){g=xa[d]=h(c);throw ia("nonassign",O[e],I.name);};g=xa[d]=h(c);f=function(a){k(a,xa[d])||(k(a,g)?l(c,a=xa[d]):xa[d]=a);return g=a};f.$stateful=!0;f=a.collection?c.$watchCollection(O[e],f):c.$watch(S(O[e],f),null,h.literal);v.$on("$destroy",f);break;case "&":h=S(O[e]),xa[d]=function(a){return h(c,a)}}})}ba&&(s(ba,function(a){a()}),ba=null);g=0;for(n=k.length;g<
+n;g++)r=k[g],Z(r,r.isolateScope?v:c,W,O,r.require&&D(r.directiveName,r.require,W,N),gb);var va=c;I&&(I.template||null===I.templateUrl)&&(va=v);a&&a(va,f.childNodes,u,h);for(g=p.length-1;0<=g;g--)r=p[g],Z(r,r.isolateScope?v:c,W,O,r.require&&D(r.directiveName,r.require,W,N),gb)}n=n||{};for(var v=-Number.MAX_VALUE,N,H=n.controllerDirectives,ba,I=n.newIsolateScopeDirective,ja=n.templateDirective,wa=n.nonTlbTranscludeDirective,ha=!1,fb=!1,B=n.hasElementTranscludeDirective,w=e.$$element=C(d),L,ca,U,R=f,
+P,Q=0,Aa=a.length;Q<Aa;Q++){L=a[Q];var Pa=L.$$start,$=L.$$end;Pa&&(w=va(d,Pa,$));U=u;if(v>L.priority)break;if(U=L.scope)L.templateUrl||(J(U)?(Oa("new/isolated scope",I||N,L,w),I=L):Oa("new/isolated scope",I,L,w)),N=N||L;ca=L.name;!L.templateUrl&&L.controller&&(U=L.controller,H=H||{},Oa("'"+ca+"' controller",H[ca],L,w),H[ca]=L);if(U=L.transclude)ha=!0,L.$$tlb||(Oa("transclusion",wa,L,w),wa=L),"element"==U?(B=!0,v=L.priority,U=w,w=e.$$element=C(X.createComment(" "+ca+": "+e[ca]+" ")),d=w[0],V(g,Za.call(U,
+0),d),R=F(U,f,v,l&&l.name,{nonTlbTranscludeDirective:wa})):(U=C(Vb(d)).contents(),w.empty(),R=F(U,f));if(L.template)if(fb=!0,Oa("template",ja,L,w),ja=L,U=G(L.template)?L.template(w,e):L.template,U=Tc(U),L.replace){l=L;U=Tb.test(U)?Uc(Xb(L.templateNamespace,T(U))):[];d=U[0];if(1!=U.length||d.nodeType!==na)throw ia("tplrt",ca,"");V(g,w,d);Aa={$attr:{}};U=W(d,[],Aa);var of=a.splice(Q+1,a.length-(Q+1));I&&z(U);a=a.concat(U).concat(of);Rc(e,Aa);Aa=a.length}else w.html(U);if(L.templateUrl)fb=!0,Oa("template",
+ja,L,w),ja=L,L.replace&&(l=L),A=M(a.splice(Q,a.length-Q),w,e,g,ha&&R,k,p,{controllerDirectives:H,newIsolateScopeDirective:I,templateDirective:ja,nonTlbTranscludeDirective:wa}),Aa=a.length;else if(L.compile)try{P=L.compile(w,e,R),G(P)?r(null,P,Pa,$):P&&r(P.pre,P.post,Pa,$)}catch(aa){c(aa,ua(w))}L.terminal&&(A.terminal=!0,v=Math.max(v,L.priority))}A.scope=N&&!0===N.scope;A.transcludeOnThisElement=ha;A.elementTranscludeOnThisElement=B;A.templateOnThisElement=fb;A.transclude=R;n.hasElementTranscludeDirective=
+B;return A}function z(a){for(var b=0,c=a.length;b<c;b++)a[b]=Pb(a[b],{$$isolateScope:!0})}function ha(b,e,f,g,h,l,k){if(e===h)return null;h=null;if(d.hasOwnProperty(e)){var q;e=a.get(e+"Directive");for(var n=0,r=e.length;n<r;n++)try{q=e[n],(g===u||g>q.priority)&&-1!=q.restrict.indexOf(f)&&(l&&(q=Pb(q,{$$start:l,$$end:k})),b.push(q),h=q)}catch(D){c(D)}}return h}function fb(b){if(d.hasOwnProperty(b))for(var c=a.get(b+"Directive"),e=0,f=c.length;e<f;e++)if(b=c[e],b.multiElement)return!0;return!1}function Rc(a,
+b){var c=b.$attr,d=a.$attr,e=a.$$element;s(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});s(b,function(b,f){"class"==f?(N(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function M(a,b,c,d,e,f,g,h){var l=[],k,q,p=b[0],n=a.shift(),D=Pb(n,{templateUrl:null,transclude:null,replace:null,$$originalDirective:n}),
+S=G(n.templateUrl)?n.templateUrl(b,c):n.templateUrl,t=n.templateNamespace;b.empty();r(H.getTrustedResourceUrl(S)).then(function(r){var A,v;r=Tc(r);if(n.replace){r=Tb.test(r)?Uc(Xb(t,T(r))):[];A=r[0];if(1!=r.length||A.nodeType!==na)throw ia("tplrt",n.name,S);r={$attr:{}};V(d,b,A);var H=W(A,[],r);J(n.scope)&&z(H);a=H.concat(a);Rc(c,r)}else A=p,b.html(r);a.unshift(D);k=y(a,A,c,e,b,n,f,g,h);s(d,function(a,c){a==A&&(d[c]=b[0])});for(q=ba(b[0].childNodes,e);l.length;){r=l.shift();v=l.shift();var F=l.shift(),
+K=l.shift(),H=b[0];if(!r.$$destroyed){if(v!==p){var O=v.className;h.hasElementTranscludeDirective&&n.replace||(H=Vb(A));V(F,C(v),H);N(C(H),O)}v=k.transcludeOnThisElement?I(r,k.transclude,K):K;k(q,r,H,d,v)}}l=null});return function(a,b,c,d,e){a=e;b.$$destroyed||(l?l.push(b,c,d,a):(k.transcludeOnThisElement&&(a=I(b,k.transclude,e)),k(q,b,c,d,a)))}}function ca(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function Oa(a,b,c,d){if(b)throw ia("multidir",
+b.name,c.name,a,ua(d));}function P(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){a=a.parent();var b=!!a.length;b&&F.$$addBindingClass(a);return function(a,c){var e=c.parent();b||F.$$addBindingClass(e);F.$$addBindingInfo(e,d.expressions);a.$watch(d,function(a){c[0].nodeValue=a})}}})}function Xb(a,b){a=R(a||"html");switch(a){case "svg":case "math":var c=X.createElement("div");c.innerHTML="<"+a+">"+b+"</"+a+">";return c.childNodes[0].childNodes;default:return b}}function Q(a,b){if("srcdoc"==
+b)return H.HTML;var c=ta(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return H.RESOURCE_URL}function Aa(a,c,d,e,f){var h=Q(a,e);f=g[e]||f;var k=b(d,!0,h,f);if(k){if("multiple"===e&&"select"===ta(a))throw ia("selmulti",ua(a));c.push({priority:100,compile:function(){return{pre:function(a,c,g){c=g.$$observers||(g.$$observers={});if(l.test(e))throw ia("nodomevents");var n=g[e];n!==d&&(k=n&&b(n,!0,h,f),d=n);k&&(g[e]=k(a),(c[e]||(c[e]=[])).$$inter=!0,(g.$$observers&&g.$$observers[e].$$scope||
+a).$watch(k,function(a,b){"class"===e&&a!=b?g.$updateClass(a,b):g.$set(e,a)}))}}}})}}function V(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g<h;g++)if(a[g]==d){a[g++]=c;h=g+e-1;for(var l=a.length;g<l;g++,h++)h<l?a[g]=a[h]:delete a[g];a.length-=e-1;a.context===d&&(a.context=c);break}f&&f.replaceChild(c,d);a=X.createDocumentFragment();a.appendChild(d);C(c).data(C(d).data());ra?(Rb=!0,ra.cleanData([d])):delete C.cache[d[C.expando]];d=1;for(e=b.length;d<e;d++)f=b[d],C(f).remove(),
+a.appendChild(f),delete b[d];b[0]=c;b.length=1}function Y(a,b){return w(function(){return a.apply(null,arguments)},a,b)}function Z(a,b,d,e,f,g){try{a(b,d,e,f,g)}catch(h){c(h,ua(d))}}var Yb=function(a,b){if(b){var c=Object.keys(b),d,e,f;d=0;for(e=c.length;d<e;d++)f=c[d],this[f]=b[f]}else this.$attr={};this.$$element=a};Yb.prototype={$normalize:ya,$addClass:function(a){a&&0<a.length&&v.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&v.removeClass(this.$$element,a)},$updateClass:function(a,
+b){var c=Vc(a,b);c&&c.length&&v.addClass(this.$$element,c);(c=Vc(b,a))&&c.length&&v.removeClass(this.$$element,c)},$set:function(a,b,d,e){var f=this.$$element[0],g=Mc(f,a),h=kf(f,a),f=a;g?(this.$$element.prop(a,b),e=g):h&&(this[h]=b,f=h);this[a]=b;e?this.$attr[a]=e:(e=this.$attr[a])||(this.$attr[a]=e=uc(a,"-"));g=ta(this.$$element);if("a"===g&&"href"===a||"img"===g&&"src"===a)this[a]=b=A(b,"src"===a);else if("img"===g&&"srcset"===a){for(var g="",h=T(b),l=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,l=/\s/.test(h)?
+l:/(,)/,h=h.split(l),l=Math.floor(h.length/2),k=0;k<l;k++)var q=2*k,g=g+A(T(h[q]),!0),g=g+(" "+T(h[q+1]));h=T(h[2*k]).split(/\s/);g+=A(T(h[0]),!0);2===h.length&&(g+=" "+T(h[1]));this[a]=b=g}!1!==d&&(null===b||b===u?this.$$element.removeAttr(e):this.$$element.attr(e,b));(a=this.$$observers)&&s(a[f],function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers=fa()),e=d[a]||(d[a]=[]);e.push(b);n.$evalAsync(function(){!e.$$inter&&c.hasOwnProperty(a)&&b(c[a])});
+return function(){Xa(e,b)}}};var U=b.startSymbol(),ja=b.endSymbol(),Tc="{{"==U||"}}"==ja?oa:function(a){return a.replace(/\{\{/g,U).replace(/}}/g,ja)},Pa=/^ngAttr[A-Z]/;F.$$addBindingInfo=k?function(a,b){var c=a.data("$binding")||[];E(b)?c=c.concat(b):c.push(b);a.data("$binding",c)}:B;F.$$addBindingClass=k?function(a){N(a,"ng-binding")}:B;F.$$addScopeInfo=k?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateScope":"$scope",b)}:B;F.$$addScopeClass=k?function(a,b){N(a,b?"ng-isolate-scope":
+"ng-scope")}:B;return F}]}function ya(b){return db(b.replace(Sc,""))}function Vc(b,a){var c="",d=b.split(/\s+/),e=a.split(/\s+/),f=0;a:for(;f<d.length;f++){for(var g=d[f],h=0;h<e.length;h++)if(g==e[h])continue a;c+=(0<c.length?" ":"")+g}return c}function Uc(b){b=C(b);var a=b.length;if(1>=a)return b;for(;a--;)8===b[a].nodeType&&pf.call(b,a,1);return b}function Fe(){var b={},a=!1,c=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(a,c){Ma(a,"controller");J(a)?w(b,a):b[a]=c};this.allowGlobals=function(){a=
+!0};this.$get=["$injector","$window",function(d,e){function f(a,b,c,d){if(!a||!J(a.$scope))throw M("$controller")("noscp",d,b);a.$scope[b]=c}return function(g,h,l,k){var m,p,q;l=!0===l;k&&x(k)&&(q=k);if(x(g)){k=g.match(c);if(!k)throw qf("ctrlfmt",g);p=k[1];q=q||k[3];g=b.hasOwnProperty(p)?b[p]:wc(h.$scope,p,!0)||(a?wc(e,p,!0):u);tb(g,p,!0)}if(l)return l=(E(g)?g[g.length-1]:g).prototype,m=Object.create(l||null),q&&f(h,q,m,p||g.name),w(function(){d.invoke(g,m,h,p);return m},{instance:m,identifier:q});
+m=d.instantiate(g,h,p);q&&f(h,q,m,p||g.name);return m}}]}function Ge(){this.$get=["$window",function(b){return C(b.document)}]}function He(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function Zb(b,a){if(x(b)){var c=b.replace(rf,"").trim();if(c){var d=a("Content-Type");(d=d&&0===d.indexOf(Wc))||(d=(d=c.match(sf))&&tf[d[0]].test(c));d&&(b=pc(c))}}return b}function Xc(b){var a=fa(),c,d,e;if(!b)return a;s(b.split("\n"),function(b){e=b.indexOf(":");c=R(T(b.substr(0,
+e)));d=T(b.substr(e+1));c&&(a[c]=a[c]?a[c]+", "+d:d)});return a}function Yc(b){var a=J(b)?b:u;return function(c){a||(a=Xc(b));return c?(c=a[R(c)],void 0===c&&(c=null),c):a}}function Zc(b,a,c,d){if(G(d))return d(b,a,c);s(d,function(d){b=d(b,a,c)});return b}function Ke(){var b=this.defaults={transformResponse:[Zb],transformRequest:[function(a){return J(a)&&"[object File]"!==Da.call(a)&&"[object Blob]"!==Da.call(a)&&"[object FormData]"!==Da.call(a)?$a(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},
+post:qa($b),put:qa($b),patch:qa($b)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},a=!1;this.useApplyAsync=function(b){return y(b)?(a=!!b,this):a};var c=this.interceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(d,e,f,g,h,l){function k(a){function c(a){var b=w({},a);b.data=a.data?Zc(a.data,a.headers,a.status,e.transformResponse):a.data;a=a.status;return 200<=a&&300>a?b:h.reject(b)}function d(a){var b,c={};s(a,function(a,d){G(a)?(b=
+a(),null!=b&&(c[d]=b)):c[d]=a});return c}if(!aa.isObject(a))throw M("$http")("badreq",a);var e=w({method:"get",transformRequest:b.transformRequest,transformResponse:b.transformResponse},a);e.headers=function(a){var c=b.headers,e=w({},a.headers),f,g,c=w({},c.common,c[R(a.method)]);a:for(f in c){a=R(f);for(g in e)if(R(g)===a)continue a;e[f]=c[f]}return d(e)}(a);e.method=vb(e.method);var f=[function(a){var d=a.headers,e=Zc(a.data,Yc(d),u,a.transformRequest);z(e)&&s(d,function(a,b){"content-type"===R(b)&&
+delete d[b]});z(a.withCredentials)&&!z(b.withCredentials)&&(a.withCredentials=b.withCredentials);return m(a,e).then(c,c)},u],g=h.when(e);for(s(t,function(a){(a.request||a.requestError)&&f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var l=f.shift(),g=g.then(a,l)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,e)});return g};g.error=function(a){g.then(null,function(b){a(b.data,b.status,b.headers,e)});
+return g};return g}function m(c,f){function l(b,c,d,e){function f(){n(c,b,d,e)}N&&(200<=b&&300>b?N.put(I,[b,c,Xc(d),e]):N.remove(I));a?g.$applyAsync(f):(f(),g.$$phase||g.$apply())}function n(a,b,d,e){b=Math.max(b,0);(200<=b&&300>b?v.resolve:v.reject)({data:a,status:b,headers:Yc(d),config:c,statusText:e})}function m(a){n(a.data,a.status,qa(a.headers()),a.statusText)}function t(){var a=k.pendingRequests.indexOf(c);-1!==a&&k.pendingRequests.splice(a,1)}var v=h.defer(),A=v.promise,N,F,s=c.headers,I=p(c.url,
+c.params);k.pendingRequests.push(c);A.then(t,t);!c.cache&&!b.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(N=J(c.cache)?c.cache:J(b.cache)?b.cache:q);N&&(F=N.get(I),y(F)?F&&G(F.then)?F.then(m,m):E(F)?n(F[1],F[0],qa(F[2]),F[3]):n(F,200,{},"OK"):N.put(I,A));z(F)&&((F=$c(c.url)?e.cookies()[c.xsrfCookieName||b.xsrfCookieName]:u)&&(s[c.xsrfHeaderName||b.xsrfHeaderName]=F),d(c.method,I,f,l,s,c.timeout,c.withCredentials,c.responseType));return A}function p(a,b){if(!b)return a;var c=[];Ed(b,
+function(a,b){null===a||z(a)||(E(a)||(a=[a]),s(a,function(a){J(a)&&(a=pa(a)?a.toISOString():$a(a));c.push(Fa(b)+"="+Fa(a))}))});0<c.length&&(a+=(-1==a.indexOf("?")?"?":"&")+c.join("&"));return a}var q=f("$http"),t=[];s(c,function(a){t.unshift(x(a)?l.get(a):l.invoke(a))});k.pendingRequests=[];(function(a){s(arguments,function(a){k[a]=function(b,c){return k(w(c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){s(arguments,function(a){k[a]=function(b,c,d){return k(w(d||{},{method:a,
+url:b,data:c}))}})})("post","put","patch");k.defaults=b;return k}]}function uf(){return new P.XMLHttpRequest}function Le(){this.$get=["$browser","$window","$document",function(b,a,c){return vf(b,uf,b.defer,a.angular.callbacks,c[0])}]}function vf(b,a,c,d,e){function f(a,b,c){var f=e.createElement("script"),m=null;f.type="text/javascript";f.src=a;f.async=!0;m=function(a){f.removeEventListener("load",m,!1);f.removeEventListener("error",m,!1);e.body.removeChild(f);f=null;var g=-1,t="unknown";a&&("load"!==
+a.type||d[b].called||(a={type:"error"}),t=a.type,g="error"===a.type?404:200);c&&c(g,t)};f.addEventListener("load",m,!1);f.addEventListener("error",m,!1);e.body.appendChild(f);return m}return function(e,h,l,k,m,p,q,t){function r(){n&&n();D&&D.abort()}function S(a,d,e,f,g){v!==u&&c.cancel(v);n=D=null;a(d,e,f,g);b.$$completeOutstandingRequest(B)}b.$$incOutstandingRequestCount();h=h||b.url();if("jsonp"==R(e)){var K="_"+(d.counter++).toString(36);d[K]=function(a){d[K].data=a;d[K].called=!0};var n=f(h.replace("JSON_CALLBACK",
+"angular.callbacks."+K),K,function(a,b){S(k,a,d[K].data,"",b);d[K]=B})}else{var D=a();D.open(e,h,!0);s(m,function(a,b){y(a)&&D.setRequestHeader(b,a)});D.onload=function(){var a=D.statusText||"",b="response"in D?D.response:D.responseText,c=1223===D.status?204:D.status;0===c&&(c=b?200:"file"==Ba(h).protocol?404:0);S(k,c,b,D.getAllResponseHeaders(),a)};e=function(){S(k,-1,null,null,"")};D.onerror=e;D.onabort=e;q&&(D.withCredentials=!0);if(t)try{D.responseType=t}catch(H){if("json"!==t)throw H;}D.send(l||
+null)}if(0<p)var v=c(r,p);else p&&G(p.then)&&p.then(r)}}function Ie(){var b="{{",a="}}";this.startSymbol=function(a){return a?(b=a,this):b};this.endSymbol=function(b){return b?(a=b,this):a};this.$get=["$parse","$exceptionHandler","$sce",function(c,d,e){function f(a){return"\\\\\\"+a}function g(f,g,t,r){function S(c){return c.replace(k,b).replace(m,a)}function K(a){try{var b=a;a=t?e.getTrusted(t,b):e.valueOf(b);var c;if(r&&!y(a))c=a;else if(null==a)c="";else{switch(typeof a){case "string":break;case "number":a=
+""+a;break;default:a=$a(a)}c=a}return c}catch(g){c=ac("interr",f,g.toString()),d(c)}}r=!!r;for(var n,D,H=0,v=[],A=[],N=f.length,F=[],s=[];H<N;)if(-1!=(n=f.indexOf(b,H))&&-1!=(D=f.indexOf(a,n+h)))H!==n&&F.push(S(f.substring(H,n))),H=f.substring(n+h,D),v.push(H),A.push(c(H,K)),H=D+l,s.push(F.length),F.push("");else{H!==N&&F.push(S(f.substring(H)));break}if(t&&1<F.length)throw ac("noconcat",f);if(!g||v.length){var I=function(a){for(var b=0,c=v.length;b<c;b++){if(r&&z(a[b]))return;F[s[b]]=a[b]}return F.join("")};
+return w(function(a){var b=0,c=v.length,e=Array(c);try{for(;b<c;b++)e[b]=A[b](a);return I(e)}catch(g){a=ac("interr",f,g.toString()),d(a)}},{exp:f,expressions:v,$$watchDelegate:function(a,b,c){var d;return a.$watchGroup(A,function(c,e){var f=I(c);G(b)&&b.call(this,f,c!==e?d:f,a);d=f},c)}})}}var h=b.length,l=a.length,k=new RegExp(b.replace(/./g,f),"g"),m=new RegExp(a.replace(/./g,f),"g");g.startSymbol=function(){return b};g.endSymbol=function(){return a};return g}]}function Je(){this.$get=["$rootScope",
+"$window","$q","$$q",function(b,a,c,d){function e(e,h,l,k){var m=a.setInterval,p=a.clearInterval,q=0,t=y(k)&&!k,r=(t?d:c).defer(),S=r.promise;l=y(l)?l:0;S.then(null,null,e);S.$$intervalId=m(function(){r.notify(q++);0<l&&q>=l&&(r.resolve(q),p(S.$$intervalId),delete f[S.$$intervalId]);t||b.$apply()},h);f[S.$$intervalId]=r;return S}var f={};e.cancel=function(b){return b&&b.$$intervalId in f?(f[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete f[b.$$intervalId],!0):!1};return e}]}
+function Rd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),
+DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function bc(b){b=b.split("/");for(var a=b.length;a--;)b[a]=rb(b[a]);return b.join("/")}function ad(b,a){var c=Ba(b);a.$$protocol=
+c.protocol;a.$$host=c.hostname;a.$$port=$(c.port)||wf[c.protocol]||null}function bd(b,a){var c="/"!==b.charAt(0);c&&(b="/"+b);var d=Ba(b);a.$$path=decodeURIComponent(c&&"/"===d.pathname.charAt(0)?d.pathname.substring(1):d.pathname);a.$$search=rc(d.search);a.$$hash=decodeURIComponent(d.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function za(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Ha(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Gb(b){return b.replace(/(#.+)|#$/,
+"$1")}function cc(b){return b.substr(0,Ha(b).lastIndexOf("/")+1)}function dc(b,a){this.$$html5=!0;a=a||"";var c=cc(b);ad(b,this);this.$$parse=function(a){var b=za(c,a);if(!x(b))throw Hb("ipthprfx",a,c);bd(b,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Qb(this.$$search),b=this.$$hash?"#"+rb(this.$$hash):"";this.$$url=bc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),
+!0;var f,g;(f=za(b,d))!==u?(g=f,g=(f=za(a,f))!==u?c+(za("/",f)||f):b+g):(f=za(c,d))!==u?g=c+f:c==d+"/"&&(g=c);g&&this.$$parse(g);return!!g}}function ec(b,a){var c=cc(b);ad(b,this);this.$$parse=function(d){d=za(b,d)||za(c,d);var e;"#"===d.charAt(0)?(e=za(a,d),z(e)&&(e=d)):e=this.$$html5?d:"";bd(e,this);d=this.$$path;var f=/^\/[A-Z]:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=Qb(this.$$search),e=this.$$hash?
+"#"+rb(this.$$hash):"";this.$$url=bc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$parseLinkUrl=function(a,c){return Ha(b)==Ha(a)?(this.$$parse(a),!0):!1}}function cd(b,a){this.$$html5=!0;ec.apply(this,arguments);var c=cc(b);this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;b==Ha(d)?f=d:(g=za(c,d))?f=b+a+g:c===d+"/"&&(f=c);f&&this.$$parse(f);return!!f};this.$$compose=function(){var c=Qb(this.$$search),e=this.$$hash?"#"+rb(this.$$hash):
+"";this.$$url=bc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+a+this.$$url}}function Ib(b){return function(){return this[b]}}function dd(b,a){return function(c){if(z(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Me(){var b="",a={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(a){return y(a)?(b=a,this):b};this.html5Mode=function(b){return Wa(b)?(a.enabled=b,this):J(b)?(Wa(b.enabled)&&(a.enabled=b.enabled),Wa(b.requireBase)&&(a.requireBase=b.requireBase),Wa(b.rewriteLinks)&&
+(a.rewriteLinks=b.rewriteLinks),this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(c,d,e,f,g){function h(a,b,c){var e=k.url(),f=k.$$state;try{d.url(a,b,c),k.$$state=d.state()}catch(g){throw k.url(e),k.$$state=f,g;}}function l(a,b){c.$broadcast("$locationChangeSuccess",k.absUrl(),a,k.$$state,b)}var k,m;m=d.baseHref();var p=d.url(),q;if(a.enabled){if(!m&&a.requireBase)throw Hb("nobase");q=p.substring(0,p.indexOf("/",p.indexOf("//")+2))+(m||"/");m=e.history?dc:cd}else q=
+Ha(p),m=ec;k=new m(q,"#"+b);k.$$parseLinkUrl(p,p);k.$$state=d.state();var t=/^\s*(javascript|mailto):/i;f.on("click",function(b){if(a.rewriteLinks&&!b.ctrlKey&&!b.metaKey&&!b.shiftKey&&2!=b.which&&2!=b.button){for(var e=C(b.target);"a"!==ta(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),l=e.attr("href")||e.attr("xlink:href");J(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=Ba(h.animVal).href);t.test(h)||!h||e.attr("target")||b.isDefaultPrevented()||!k.$$parseLinkUrl(h,
+l)||(b.preventDefault(),k.absUrl()!=d.url()&&(c.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});Gb(k.absUrl())!=Gb(p)&&d.url(k.absUrl(),!0);var r=!0;d.onUrlChange(function(a,b){c.$evalAsync(function(){var d=k.absUrl(),e=k.$$state,f;k.$$parse(a);k.$$state=b;f=c.$broadcast("$locationChangeStart",a,d,b,e).defaultPrevented;k.absUrl()===a&&(f?(k.$$parse(d),k.$$state=e,h(d,!1,e)):(r=!1,l(d,e)))});c.$$phase||c.$digest()});c.$watch(function(){var a=Gb(d.url()),b=Gb(k.absUrl()),f=d.state(),g=k.$$replace,
+q=a!==b||k.$$html5&&e.history&&f!==k.$$state;if(r||q)r=!1,c.$evalAsync(function(){var b=k.absUrl(),d=c.$broadcast("$locationChangeStart",b,a,k.$$state,f).defaultPrevented;k.absUrl()===b&&(d?(k.$$parse(a),k.$$state=f):(q&&h(b,g,f===k.$$state?null:k.$$state),l(a,f)))});k.$$replace=!1});return k}]}function Ne(){var b=!0,a=this;this.debugEnabled=function(a){return y(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?
+"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||B;a=!1;try{a=!!e.apply}catch(l){}return a?function(){var a=[];s(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function sa(b,a){if("__defineGetter__"===
+b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"===b)throw ka("isecfld",a);return b}function la(b,a){if(b){if(b.constructor===b)throw ka("isecfn",a);if(b.window===b)throw ka("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw ka("isecdom",a);if(b===Object)throw ka("isecobj",a);}return b}function fc(b){return b.constant}function hb(b,a,c,d,e){la(b,e);la(a,e);c=c.split(".");for(var f,g=0;1<c.length;g++){f=sa(c.shift(),e);var h=0===g&&a&&a[f]||
+b[f];h||(h={},b[f]=h);b=la(h,e)}f=sa(c.shift(),e);la(b[f],e);return b[f]=d}function Qa(b){return"constructor"==b}function ed(b,a,c,d,e,f,g){sa(b,f);sa(a,f);sa(c,f);sa(d,f);sa(e,f);var h=function(a){return la(a,f)},l=g||Qa(b)?h:oa,k=g||Qa(a)?h:oa,m=g||Qa(c)?h:oa,p=g||Qa(d)?h:oa,q=g||Qa(e)?h:oa;return function(f,g){var h=g&&g.hasOwnProperty(b)?g:f;if(null==h)return h;h=l(h[b]);if(!a)return h;if(null==h)return u;h=k(h[a]);if(!c)return h;if(null==h)return u;h=m(h[c]);if(!d)return h;if(null==h)return u;
+h=p(h[d]);return e?null==h?u:h=q(h[e]):h}}function xf(b,a){return function(c,d){return b(c,d,la,a)}}function yf(b,a,c){var d=a.expensiveChecks,e=d?zf:Af,f=e[b];if(f)return f;var g=b.split("."),h=g.length;if(a.csp)f=6>h?ed(g[0],g[1],g[2],g[3],g[4],c,d):function(a,b){var e=0,f;do f=ed(g[e++],g[e++],g[e++],g[e++],g[e++],c,d)(a,b),b=u,a=f;while(e<h);return f};else{var l="";d&&(l+="s = eso(s, fe);\nl = eso(l, fe);\n");var k=d;s(g,function(a,b){sa(a,c);var e=(b?"s":'((l&&l.hasOwnProperty("'+a+'"))?l:s)')+
+"."+a;if(d||Qa(a))e="eso("+e+", fe)",k=!0;l+="if(s == null) return undefined;\ns="+e+";\n"});l+="return s;";a=new Function("s","l","eso","fe",l);a.toString=da(l);k&&(a=xf(a,c));f=a}f.sharedGetter=!0;f.assign=function(a,c,d){return hb(a,d,b,c,b)};return e[b]=f}function gc(b){return G(b.valueOf)?b.valueOf():Bf.call(b)}function Oe(){var b=fa(),a=fa();this.$get=["$filter","$sniffer",function(c,d){function e(a){var b=a;a.sharedGetter&&(b=function(b,c){return a(b,c)},b.literal=a.literal,b.constant=a.constant,
+b.assign=a.assign);return b}function f(a,b){for(var c=0,d=a.length;c<d;c++){var e=a[c];e.constant||(e.inputs?f(e.inputs,b):-1===b.indexOf(e)&&b.push(e))}return b}function g(a,b){return null==a||null==b?a===b:"object"===typeof a&&(a=gc(a),"object"===typeof a)?!1:a===b||a!==a&&b!==b}function h(a,b,c,d){var e=d.$$inputs||(d.$$inputs=f(d.inputs,[])),h;if(1===e.length){var l=g,e=e[0];return a.$watch(function(a){var b=e(a);g(b,l)||(h=d(a),l=b&&gc(b));return h},b,c)}for(var k=[],q=0,p=e.length;q<p;q++)k[q]=
+g;return a.$watch(function(a){for(var b=!1,c=0,f=e.length;c<f;c++){var l=e[c](a);if(b||(b=!g(l,k[c])))k[c]=l&&gc(l)}b&&(h=d(a));return h},b,c)}function l(a,b,c,d){var e,f;return e=a.$watch(function(a){return d(a)},function(a,c,d){f=a;G(b)&&b.apply(this,arguments);y(a)&&d.$$postDigest(function(){y(f)&&e()})},c)}function k(a,b,c,d){function e(a){var b=!0;s(a,function(a){y(a)||(b=!1)});return b}var f,g;return f=a.$watch(function(a){return d(a)},function(a,c,d){g=a;G(b)&&b.call(this,a,c,d);e(a)&&d.$$postDigest(function(){e(g)&&
+f()})},c)}function m(a,b,c,d){var e;return e=a.$watch(function(a){return d(a)},function(a,c,d){G(b)&&b.apply(this,arguments);e()},c)}function p(a,b){if(!b)return a;var c=a.$$watchDelegate,c=c!==k&&c!==l?function(c,d){var e=a(c,d);return b(e,c,d)}:function(c,d){var e=a(c,d),f=b(e,c,d);return y(e)?f:e};a.$$watchDelegate&&a.$$watchDelegate!==h?c.$$watchDelegate=a.$$watchDelegate:b.$stateful||(c.$$watchDelegate=h,c.inputs=[a]);return c}var q={csp:d.csp,expensiveChecks:!1},t={csp:d.csp,expensiveChecks:!0};
+return function(d,f,g){var n,D,H;switch(typeof d){case "string":H=d=d.trim();var v=g?a:b;n=v[H];n||(":"===d.charAt(0)&&":"===d.charAt(1)&&(D=!0,d=d.substring(2)),g=g?t:q,n=new hc(g),n=(new ib(n,c,g)).parse(d),n.constant?n.$$watchDelegate=m:D?(n=e(n),n.$$watchDelegate=n.literal?k:l):n.inputs&&(n.$$watchDelegate=h),v[H]=n);return p(n,f);case "function":return p(d,f);default:return p(B,f)}}}]}function Qe(){this.$get=["$rootScope","$exceptionHandler",function(b,a){return fd(function(a){b.$evalAsync(a)},
+a)}]}function Re(){this.$get=["$browser","$exceptionHandler",function(b,a){return fd(function(a){b.defer(a)},a)}]}function fd(b,a){function c(a,b,c){function d(b){return function(c){e||(e=!0,b.call(a,c))}}var e=!1;return[d(b),d(c)]}function d(){this.$$state={status:0}}function e(a,b){return function(c){b.call(a,c)}}function f(c){!c.processScheduled&&c.pending&&(c.processScheduled=!0,b(function(){var b,d,e;e=c.pending;c.processScheduled=!1;c.pending=u;for(var f=0,g=e.length;f<g;++f){d=e[f][0];b=e[f][c.status];
+try{G(b)?d.resolve(b(c.value)):1===c.status?d.resolve(c.value):d.reject(c.value)}catch(h){d.reject(h),a(h)}}}))}function g(){this.promise=new d;this.resolve=e(this,this.resolve);this.reject=e(this,this.reject);this.notify=e(this,this.notify)}var h=M("$q",TypeError);d.prototype={then:function(a,b,c){var d=new g;this.$$state.pending=this.$$state.pending||[];this.$$state.pending.push([d,a,b,c]);0<this.$$state.status&&f(this.$$state);return d.promise},"catch":function(a){return this.then(null,a)},"finally":function(a,
+b){return this.then(function(b){return k(b,!0,a)},function(b){return k(b,!1,a)},b)}};g.prototype={resolve:function(a){this.promise.$$state.status||(a===this.promise?this.$$reject(h("qcycle",a)):this.$$resolve(a))},$$resolve:function(b){var d,e;e=c(this,this.$$resolve,this.$$reject);try{if(J(b)||G(b))d=b&&b.then;G(d)?(this.promise.$$state.status=-1,d.call(b,e[0],e[1],this.notify)):(this.promise.$$state.value=b,this.promise.$$state.status=1,f(this.promise.$$state))}catch(g){e[1](g),a(g)}},reject:function(a){this.promise.$$state.status||
+this.$$reject(a)},$$reject:function(a){this.promise.$$state.value=a;this.promise.$$state.status=2;f(this.promise.$$state)},notify:function(c){var d=this.promise.$$state.pending;0>=this.promise.$$state.status&&d&&d.length&&b(function(){for(var b,e,f=0,g=d.length;f<g;f++){e=d[f][0];b=d[f][3];try{e.notify(G(b)?b(c):c)}catch(h){a(h)}}})}};var l=function(a,b){var c=new g;b?c.resolve(a):c.reject(a);return c.promise},k=function(a,b,c){var d=null;try{G(c)&&(d=c())}catch(e){return l(e,!1)}return d&&G(d.then)?
+d.then(function(){return l(a,b)},function(a){return l(a,!1)}):l(a,b)},m=function(a,b,c,d){var e=new g;e.resolve(a);return e.promise.then(b,c,d)},p=function t(a){if(!G(a))throw h("norslvr",a);if(!(this instanceof t))return new t(a);var b=new g;a(function(a){b.resolve(a)},function(a){b.reject(a)});return b.promise};p.defer=function(){return new g};p.reject=function(a){var b=new g;b.reject(a);return b.promise};p.when=m;p.all=function(a){var b=new g,c=0,d=E(a)?[]:{};s(a,function(a,e){c++;m(a).then(function(a){d.hasOwnProperty(e)||
+(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise};return p}function $e(){this.$get=["$window","$timeout",function(b,a){var c=b.requestAnimationFrame||b.webkitRequestAnimationFrame,d=b.cancelAnimationFrame||b.webkitCancelAnimationFrame||b.webkitCancelRequestAnimationFrame,e=!!c,f=e?function(a){var b=c(a);return function(){d(b)}}:function(b){var c=a(b,16.66,!1);return function(){a.cancel(c)}};f.supported=e;return f}]}function Pe(){var b=
+10,a=M("$rootScope"),c=null,d=null;this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=["$injector","$exceptionHandler","$parse","$browser",function(e,f,g,h){function l(){this.$id=++ob;this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this.$root=this;this.$$destroyed=!1;this.$$listeners={};this.$$listenerCount={};this.$$isolateBindings=null}function k(b){if(r.$$phase)throw a("inprog",r.$$phase);r.$$phase=b}function m(a,
+b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function p(){}function q(){for(;n.length;)try{n.shift()()}catch(a){f(a)}d=null}function t(){null===d&&(d=h.defer(function(){r.$apply(q)}))}l.prototype={constructor:l,$new:function(a,b){function c(){d.$$destroyed=!0}var d;b=b||this;a?(d=new l,d.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=function(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null;this.$$listeners=
+{};this.$$listenerCount={};this.$id=++ob;this.$$ChildScope=null},this.$$ChildScope.prototype=this),d=new this.$$ChildScope);d.$parent=b;d.$$prevSibling=b.$$childTail;b.$$childHead?(b.$$childTail.$$nextSibling=d,b.$$childTail=d):b.$$childHead=b.$$childTail=d;(a||b!=this)&&d.$on("$destroy",c);return d},$watch:function(a,b,d){var e=g(a);if(e.$$watchDelegate)return e.$$watchDelegate(this,b,d,e);var f=this.$$watchers,h={fn:b,last:p,get:e,exp:a,eq:!!d};c=null;G(b)||(h.fn=B);f||(f=this.$$watchers=[]);f.unshift(h);
+return function(){Xa(f,h);c=null}},$watchGroup:function(a,b){function c(){h=!1;l?(l=!1,b(e,e,g)):b(e,d,g)}var d=Array(a.length),e=Array(a.length),f=[],g=this,h=!1,l=!0;if(!a.length){var k=!0;g.$evalAsync(function(){k&&b(e,e,g)});return function(){k=!1}}if(1===a.length)return this.$watch(a[0],function(a,c,f){e[0]=a;d[0]=c;b(e,a===c?e:d,f)});s(a,function(a,b){var l=g.$watch(a,function(a,f){e[b]=a;d[b]=f;h||(h=!0,g.$evalAsync(c))});f.push(l)});return function(){for(;f.length;)f.shift()()}},$watchCollection:function(a,
+b){function c(a){e=a;var b,d,g,h;if(!z(e)){if(J(e))if(Ta(e))for(f!==q&&(f=q,t=f.length=0,k++),a=e.length,t!==a&&(k++,f.length=t=a),b=0;b<a;b++)h=f[b],g=e[b],d=h!==h&&g!==g,d||h===g||(k++,f[b]=g);else{f!==m&&(f=m={},t=0,k++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++,g=e[b],h=f[b],b in f?(d=h!==h&&g!==g,d||h===g||(k++,f[b]=g)):(t++,f[b]=g,k++));if(t>a)for(b in k++,f)e.hasOwnProperty(b)||(t--,delete f[b])}else f!==e&&(f=e,k++);return k}}c.$stateful=!0;var d=this,e,f,h,l=1<b.length,k=0,p=g(a,c),q=[],m=
+{},n=!0,t=0;return this.$watch(p,function(){n?(n=!1,b(e,e,d)):b(e,h,d);if(l)if(J(e))if(Ta(e)){h=Array(e.length);for(var a=0;a<e.length;a++)h[a]=e[a]}else for(a in h={},e)sc.call(e,a)&&(h[a]=e[a]);else h=e})},$digest:function(){var e,g,l,m,n,t,s=b,I,W=[],y,O;k("$digest");h.$$checkUrlChange();this===r&&null!==d&&(h.defer.cancel(d),q());c=null;do{t=!1;for(I=this;S.length;){try{O=S.shift(),O.scope.$eval(O.expression,O.locals)}catch(w){f(w)}c=null}a:do{if(m=I.$$watchers)for(n=m.length;n--;)try{if(e=m[n])if((g=
+e.get(I))!==(l=e.last)&&!(e.eq?ea(g,l):"number"===typeof g&&"number"===typeof l&&isNaN(g)&&isNaN(l)))t=!0,c=e,e.last=e.eq?Ea(g,null):g,e.fn(g,l===p?g:l,I),5>s&&(y=4-s,W[y]||(W[y]=[]),W[y].push({msg:G(e.exp)?"fn: "+(e.exp.name||e.exp.toString()):e.exp,newVal:g,oldVal:l}));else if(e===c){t=!1;break a}}catch(C){f(C)}if(!(m=I.$$childHead||I!==this&&I.$$nextSibling))for(;I!==this&&!(m=I.$$nextSibling);)I=I.$parent}while(I=m);if((t||S.length)&&!s--)throw r.$$phase=null,a("infdig",b,W);}while(t||S.length);
+for(r.$$phase=null;u.length;)try{u.shift()()}catch(B){f(B)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;if(this!==r){for(var b in this.$$listenerCount)m(this,this.$$listenerCount[b],b);a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);
+this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=B;this.$on=this.$watch=this.$watchGroup=function(){return B};this.$$listeners={};this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a,b){r.$$phase||S.length||h.defer(function(){S.length&&r.$digest()});S.push({scope:this,expression:a,locals:b})},$$postDigest:function(a){u.push(a)},$apply:function(a){try{return k("$apply"),
+this.$eval(a)}catch(b){f(b)}finally{r.$$phase=null;try{r.$digest()}catch(c){throw f(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&n.push(b);t()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,m(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,g=!1,h={name:a,targetScope:e,
+stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},l=Ya([h],arguments,1),k,m;do{d=e.$$listeners[a]||c;h.currentScope=e;k=0;for(m=d.length;k<m;k++)if(d[k])try{d[k].apply(null,l)}catch(p){f(p)}else d.splice(k,1),k--,m--;if(g)return h.currentScope=null,h;e=e.$parent}while(e);h.currentScope=null;return h},$broadcast:function(a,b){var c=this,d=this,e={name:a,targetScope:this,preventDefault:function(){e.defaultPrevented=!0},defaultPrevented:!1};if(!this.$$listenerCount[a])return e;
+for(var g=Ya([e],arguments,1),h,l;c=d;){e.currentScope=c;d=c.$$listeners[a]||[];h=0;for(l=d.length;h<l;h++)if(d[h])try{d[h].apply(null,g)}catch(k){f(k)}else d.splice(h,1),h--,l--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=c.$$nextSibling);)c=c.$parent}e.currentScope=null;return e}};var r=new l,S=r.$$asyncQueue=[],u=r.$$postDigestQueue=[],n=r.$$applyAsyncQueue=[];return r}]}function Sd(){var b=/^\s*(https?|ftp|mailto|tel|file):/,a=/^\s*((https?|ftp|file|blob):|data:image\/)/;
+this.aHrefSanitizationWhitelist=function(a){return y(a)?(b=a,this):b};this.imgSrcSanitizationWhitelist=function(b){return y(b)?(a=b,this):a};this.$get=function(){return function(c,d){var e=d?a:b,f;f=Ba(c).href;return""===f||f.match(e)?c:"unsafe:"+f}}}function Cf(b){if("self"===b)return b;if(x(b)){if(-1<b.indexOf("***"))throw Ca("iwcard",b);b=gd(b).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return new RegExp("^"+b+"$")}if(pb(b))return new RegExp("^"+b.source+"$");throw Ca("imatcher");}function hd(b){var a=
+[];y(b)&&s(b,function(b){a.push(Cf(b))});return a}function Te(){this.SCE_CONTEXTS=ma;var b=["self"],a=[];this.resourceUrlWhitelist=function(a){arguments.length&&(b=hd(a));return b};this.resourceUrlBlacklist=function(b){arguments.length&&(a=hd(b));return a};this.$get=["$injector",function(c){function d(a,b){return"self"===a?$c(b):!!a.exec(b.href)}function e(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};
+b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var f=function(a){throw Ca("unsafe");};c.has("$sanitize")&&(f=c.get("$sanitize"));var g=e(),h={};h[ma.HTML]=e(g);h[ma.CSS]=e(g);h[ma.URL]=e(g);h[ma.JS]=e(g);h[ma.RESOURCE_URL]=e(h[ma.URL]);return{trustAs:function(a,b){var c=h.hasOwnProperty(a)?h[a]:null;if(!c)throw Ca("icontext",a,b);if(null===b||b===u||""===b)return b;if("string"!==typeof b)throw Ca("itype",a);return new c(b)},getTrusted:function(c,e){if(null===
+e||e===u||""===e)return e;var g=h.hasOwnProperty(c)?h[c]:null;if(g&&e instanceof g)return e.$$unwrapTrustedValue();if(c===ma.RESOURCE_URL){var g=Ba(e.toString()),p,q,t=!1;p=0;for(q=b.length;p<q;p++)if(d(b[p],g)){t=!0;break}if(t)for(p=0,q=a.length;p<q;p++)if(d(a[p],g)){t=!1;break}if(t)return e;throw Ca("insecurl",e.toString());}if(c===ma.HTML)return f(e);throw Ca("unsafe");},valueOf:function(a){return a instanceof g?a.$$unwrapTrustedValue():a}}}]}function Se(){var b=!0;this.enabled=function(a){arguments.length&&
+(b=!!a);return b};this.$get=["$parse","$sceDelegate",function(a,c){if(b&&8>Ra)throw Ca("iequirks");var d=qa(ma);d.isEnabled=function(){return b};d.trustAs=c.trustAs;d.getTrusted=c.getTrusted;d.valueOf=c.valueOf;b||(d.trustAs=d.getTrusted=function(a,b){return b},d.valueOf=oa);d.parseAs=function(b,c){var e=a(c);return e.literal&&e.constant?e:a(c,function(a){return d.getTrusted(b,a)})};var e=d.parseAs,f=d.getTrusted,g=d.trustAs;s(ma,function(a,b){var c=R(b);d[db("parse_as_"+c)]=function(b){return e(a,
+b)};d[db("get_trusted_"+c)]=function(b){return f(a,b)};d[db("trust_as_"+c)]=function(b){return g(a,b)}});return d}]}function Ue(){this.$get=["$window","$document",function(b,a){var c={},d=$((/android (\d+)/.exec(R((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,l=f.body&&f.body.style,k=!1,m=!1;if(l){for(var p in l)if(k=h.exec(p)){g=k[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in l&&"webkit");
+k=!!("transition"in l||g+"Transition"in l);m=!!("animation"in l||g+"Animation"in l);!d||k&&m||(k=x(f.body.style.webkitTransition),m=x(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hasEvent:function(a){if("input"===a&&11>=Ra)return!1;if(z(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:bb(),vendorPrefix:g,transitions:k,animations:m,android:d}}]}function We(){this.$get=["$templateCache","$http","$q",function(b,a,c){function d(e,f){d.totalPendingRequests++;
+var g=a.defaults&&a.defaults.transformResponse;E(g)?g=g.filter(function(a){return a!==Zb}):g===Zb&&(g=null);return a.get(e,{cache:b,transformResponse:g}).finally(function(){d.totalPendingRequests--}).then(function(a){return a.data},function(a){if(!f)throw ia("tpload",e);return c.reject(a)})}d.totalPendingRequests=0;return d}]}function Xe(){this.$get=["$rootScope","$browser","$location",function(b,a,c){return{findBindings:function(a,b,c){a=a.getElementsByClassName("ng-binding");var g=[];s(a,function(a){var d=
+aa.element(a).data("$binding");d&&s(d,function(d){c?(new RegExp("(^|\\s)"+gd(b)+"(\\s|\\||$)")).test(d)&&g.push(a):-1!=d.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,c){for(var g=["ng-","data-ng-","ng\\:"],h=0;h<g.length;++h){var l=a.querySelectorAll("["+g[h]+"model"+(c?"=":"*=")+'"'+b+'"]');if(l.length)return l}},getLocation:function(){return c.url()},setLocation:function(a){a!==c.url()&&(c.url(a),b.$digest())},whenStable:function(b){a.notifyWhenNoOutstandingRequests(b)}}}]}function Ye(){this.$get=
+["$rootScope","$browser","$q","$$q","$exceptionHandler",function(b,a,c,d,e){function f(f,l,k){var m=y(k)&&!k,p=(m?d:c).defer(),q=p.promise;l=a.defer(function(){try{p.resolve(f())}catch(a){p.reject(a),e(a)}finally{delete g[q.$$timeoutId]}m||b.$apply()},l);q.$$timeoutId=l;g[l]=p;return q}var g={};f.cancel=function(b){return b&&b.$$timeoutId in g?(g[b.$$timeoutId].reject("canceled"),delete g[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):!1};return f}]}function Ba(b){Ra&&(Y.setAttribute("href",b),b=Y.href);
+Y.setAttribute("href",b);return{href:Y.href,protocol:Y.protocol?Y.protocol.replace(/:$/,""):"",host:Y.host,search:Y.search?Y.search.replace(/^\?/,""):"",hash:Y.hash?Y.hash.replace(/^#/,""):"",hostname:Y.hostname,port:Y.port,pathname:"/"===Y.pathname.charAt(0)?Y.pathname:"/"+Y.pathname}}function $c(b){b=x(b)?Ba(b):b;return b.protocol===id.protocol&&b.host===id.host}function Ze(){this.$get=da(P)}function Ec(b){function a(c,d){if(J(c)){var e={};s(c,function(b,c){e[c]=a(c,b)});return e}return b.factory(c+
+"Filter",d)}this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+"Filter")}}];a("currency",jd);a("date",kd);a("filter",Df);a("json",Ef);a("limitTo",Ff);a("lowercase",Gf);a("number",ld);a("orderBy",md);a("uppercase",Hf)}function Df(){return function(b,a,c){if(!E(b))return b;var d;switch(typeof a){case "function":break;case "boolean":case "number":case "string":d=!0;case "object":a=If(a,c,d);break;default:return b}return b.filter(a)}}function If(b,a,c){var d=J(b)&&"$"in
+b;!0===a?a=ea:G(a)||(a=function(a,b){if(J(a)||J(b))return!1;a=R(""+a);b=R(""+b);return-1!==a.indexOf(b)});return function(e){return d&&!J(e)?Ia(e,b.$,a,!1):Ia(e,b,a,c)}}function Ia(b,a,c,d,e){var f=typeof b,g=typeof a;if("string"===g&&"!"===a.charAt(0))return!Ia(b,a.substring(1),c,d);if(E(b))return b.some(function(b){return Ia(b,a,c,d)});switch(f){case "object":var h;if(d){for(h in b)if("$"!==h.charAt(0)&&Ia(b[h],a,c,!0))return!0;return e?!1:Ia(b,a,c,!1)}if("object"===g){for(h in a)if(e=a[h],!G(e)&&
+(f="$"===h,!Ia(f?b:b[h],e,c,f,f)))return!1;return!0}return c(b,a);case "function":return!1;default:return c(b,a)}}function jd(b){var a=b.NUMBER_FORMATS;return function(b,d,e){z(d)&&(d=a.CURRENCY_SYM);z(e)&&(e=a.PATTERNS[1].maxFrac);return null==b?b:nd(b,a.PATTERNS[1],a.GROUP_SEP,a.DECIMAL_SEP,e).replace(/\u00A4/g,d)}}function ld(b){var a=b.NUMBER_FORMATS;return function(b,d){return null==b?b:nd(b,a.PATTERNS[0],a.GROUP_SEP,a.DECIMAL_SEP,d)}}function nd(b,a,c,d,e){if(!isFinite(b)||J(b))return"";var f=
+0>b;b=Math.abs(b);var g=b+"",h="",l=[],k=!1;if(-1!==g.indexOf("e")){var m=g.match(/([\d\.]+)e(-?)(\d+)/);m&&"-"==m[2]&&m[3]>e+1?b=0:(h=g,k=!0)}if(k)0<e&&1>b&&(h=b.toFixed(e),b=parseFloat(h));else{g=(g.split(od)[1]||"").length;z(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);var g=(""+b).split(od),k=g[0],g=g[1]||"",p=0,q=a.lgSize,t=a.gSize;if(k.length>=q+t)for(p=k.length-q,m=0;m<p;m++)0===(p-m)%t&&0!==m&&(h+=c),h+=k.charAt(m);for(m=p;m<k.length;m++)0===
+(k.length-m)%q&&0!==m&&(h+=c),h+=k.charAt(m);for(;g.length<e;)g+="0";e&&"0"!==e&&(h+=d+g.substr(0,e))}0===b&&(f=!1);l.push(f?a.negPre:a.posPre,h,f?a.negSuf:a.posSuf);return l.join("")}function Jb(b,a,c){var d="";0>b&&(d="-",b=-b);for(b=""+b;b.length<a;)b="0"+b;c&&(b=b.substr(b.length-a));return d+b}function Z(b,a,c,d){c=c||0;return function(e){e=e["get"+b]();if(0<c||e>-c)e+=c;0===e&&-12==c&&(e=12);return Jb(e,a,d)}}function Kb(b,a){return function(c,d){var e=c["get"+b](),f=vb(a?"SHORT"+b:b);return d[f][e]}}
+function pd(b){var a=(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function qd(b){return function(a){var c=pd(a.getFullYear());a=+new Date(a.getFullYear(),a.getMonth(),a.getDate()+(4-a.getDay()))-+c;a=1+Math.round(a/6048E5);return Jb(a,b)}}function kd(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,l=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=$(b[9]+b[10]),g=$(b[9]+b[11]));h.call(a,$(b[1]),$(b[2])-1,$(b[3]));f=$(b[4]||0)-f;g=$(b[5]||
+0)-g;h=$(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));l.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e,f){var g="",h=[],l,k;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;x(c)&&(c=Jf.test(c)?$(c):a(c));V(c)&&(c=new Date(c));if(!pa(c))return c;for(;e;)(k=Kf.exec(e))?(h=Ya(h,k,1),e=h.pop()):(h.push(e),e=null);f&&"UTC"===f&&(c=new Date(c.getTime()),c.setMinutes(c.getMinutes()+c.getTimezoneOffset()));
+s(h,function(a){l=Lf[a];g+=l?l(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function Ef(){return function(b,a){z(a)&&(a=2);return $a(b,a)}}function Ff(){return function(b,a){V(b)&&(b=b.toString());return E(b)||x(b)?(a=Infinity===Math.abs(Number(a))?Number(a):$(a))?0<a?b.slice(0,a):b.slice(a):x(b)?"":[]:b}}function md(b){return function(a,c,d){function e(a,b){return b?function(b,c){return a(c,b)}:a}function f(a){switch(typeof a){case "number":case "boolean":case "string":return!0;
+default:return!1}}function g(a){return null===a?"null":"function"===typeof a.valueOf&&(a=a.valueOf(),f(a))||"function"===typeof a.toString&&(a=a.toString(),f(a))?a:""}function h(a,b){var c=typeof a,d=typeof b;c===d&&"object"===c&&(a=g(a),b=g(b));return c===d?("string"===c&&(a=a.toLowerCase(),b=b.toLowerCase()),a===b?0:a<b?-1:1):c<d?-1:1}if(!Ta(a))return a;c=E(c)?c:[c];0===c.length&&(c=["+"]);c=c.map(function(a){var c=!1,d=a||oa;if(x(a)){if("+"==a.charAt(0)||"-"==a.charAt(0))c="-"==a.charAt(0),a=a.substring(1);
+if(""===a)return e(h,c);d=b(a);if(d.constant){var f=d();return e(function(a,b){return h(a[f],b[f])},c)}}return e(function(a,b){return h(d(a),d(b))},c)});return Za.call(a).sort(e(function(a,b){for(var d=0;d<c.length;d++){var e=c[d](a,b);if(0!==e)return e}return 0},d))}}function Ja(b){G(b)&&(b={link:b});b.restrict=b.restrict||"AC";return da(b)}function rd(b,a,c,d,e){var f=this,g=[],h=f.$$parentForm=b.parent().controller("form")||Lb;f.$error={};f.$$success={};f.$pending=u;f.$name=e(a.name||a.ngForm||
+"")(c);f.$dirty=!1;f.$pristine=!0;f.$valid=!0;f.$invalid=!1;f.$submitted=!1;h.$addControl(f);f.$rollbackViewValue=function(){s(g,function(a){a.$rollbackViewValue()})};f.$commitViewValue=function(){s(g,function(a){a.$commitViewValue()})};f.$addControl=function(a){Ma(a.$name,"input");g.push(a);a.$name&&(f[a.$name]=a)};f.$$renameControl=function(a,b){var c=a.$name;f[c]===a&&delete f[c];f[b]=a;a.$name=b};f.$removeControl=function(a){a.$name&&f[a.$name]===a&&delete f[a.$name];s(f.$pending,function(b,c){f.$setValidity(c,
+null,a)});s(f.$error,function(b,c){f.$setValidity(c,null,a)});s(f.$$success,function(b,c){f.$setValidity(c,null,a)});Xa(g,a)};sd({ctrl:this,$element:b,set:function(a,b,c){var d=a[b];d?-1===d.indexOf(c)&&d.push(c):a[b]=[c]},unset:function(a,b,c){var d=a[b];d&&(Xa(d,c),0===d.length&&delete a[b])},parentForm:h,$animate:d});f.$setDirty=function(){d.removeClass(b,Sa);d.addClass(b,Mb);f.$dirty=!0;f.$pristine=!1;h.$setDirty()};f.$setPristine=function(){d.setClass(b,Sa,Mb+" ng-submitted");f.$dirty=!1;f.$pristine=
+!0;f.$submitted=!1;s(g,function(a){a.$setPristine()})};f.$setUntouched=function(){s(g,function(a){a.$setUntouched()})};f.$setSubmitted=function(){d.addClass(b,"ng-submitted");f.$submitted=!0;h.$setSubmitted()}}function ic(b){b.$formatters.push(function(a){return b.$isEmpty(a)?a:a.toString()})}function jb(b,a,c,d,e,f){var g=R(a[0].type);if(!e.android){var h=!1;a.on("compositionstart",function(a){h=!0});a.on("compositionend",function(){h=!1;l()})}var l=function(b){k&&(f.defer.cancel(k),k=null);if(!h){var e=
+a.val();b=b&&b.type;"password"===g||c.ngTrim&&"false"===c.ngTrim||(e=T(e));(d.$viewValue!==e||""===e&&d.$$hasNativeValidators)&&d.$setViewValue(e,b)}};if(e.hasEvent("input"))a.on("input",l);else{var k,m=function(a,b,c){k||(k=f.defer(function(){k=null;b&&b.value===c||l(a)}))};a.on("keydown",function(a){var b=a.keyCode;91===b||15<b&&19>b||37<=b&&40>=b||m(a,this,this.value)});if(e.hasEvent("paste"))a.on("paste cut",m)}a.on("change",l);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)}}
+function Nb(b,a){return function(c,d){var e,f;if(pa(c))return c;if(x(c)){'"'==c.charAt(0)&&'"'==c.charAt(c.length-1)&&(c=c.substring(1,c.length-1));if(Mf.test(c))return new Date(c);b.lastIndex=0;if(e=b.exec(c))return e.shift(),f=d?{yyyy:d.getFullYear(),MM:d.getMonth()+1,dd:d.getDate(),HH:d.getHours(),mm:d.getMinutes(),ss:d.getSeconds(),sss:d.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},s(e,function(b,c){c<a.length&&(f[a[c]]=+b)}),new Date(f.yyyy,f.MM-1,f.dd,f.HH,f.mm,f.ss||0,
+1E3*f.sss||0)}return NaN}}function kb(b,a,c,d){return function(e,f,g,h,l,k,m){function p(a){return a&&!(a.getTime&&a.getTime()!==a.getTime())}function q(a){return y(a)?pa(a)?a:c(a):u}td(e,f,g,h);jb(e,f,g,h,l,k);var t=h&&h.$options&&h.$options.timezone,r;h.$$parserName=b;h.$parsers.push(function(b){return h.$isEmpty(b)?null:a.test(b)?(b=c(b,r),"UTC"===t&&b.setMinutes(b.getMinutes()-b.getTimezoneOffset()),b):u});h.$formatters.push(function(a){if(a&&!pa(a))throw Ob("datefmt",a);if(p(a)){if((r=a)&&"UTC"===
+t){var b=6E4*r.getTimezoneOffset();r=new Date(r.getTime()+b)}return m("date")(a,d,t)}r=null;return""});if(y(g.min)||g.ngMin){var s;h.$validators.min=function(a){return!p(a)||z(s)||c(a)>=s};g.$observe("min",function(a){s=q(a);h.$validate()})}if(y(g.max)||g.ngMax){var K;h.$validators.max=function(a){return!p(a)||z(K)||c(a)<=K};g.$observe("max",function(a){K=q(a);h.$validate()})}}}function td(b,a,c,d){(d.$$hasNativeValidators=J(a[0].validity))&&d.$parsers.push(function(b){var c=a.prop("validity")||{};
+return c.badInput&&!c.typeMismatch?u:b})}function ud(b,a,c,d,e){if(y(d)){b=b(d);if(!b.constant)throw M("ngModel")("constexpr",c,d);return b(a)}return e}function jc(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;d<a.length;d++){for(var e=a[d],m=0;m<b.length;m++)if(e==b[m])continue a;c.push(e)}return c}function e(a){if(!E(a)){if(x(a))return a.split(" ");if(J(a)){var b=[];s(a,function(a,c){a&&(b=b.concat(c.split(" ")))});return b}}return a}return{restrict:"AC",link:function(f,
+g,h){function l(a,b){var c=g.data("$classCounts")||{},d=[];s(a,function(a){if(0<b||c[a])c[a]=(c[a]||0)+b,c[a]===+(0<b)&&d.push(a)});g.data("$classCounts",c);return d.join(" ")}function k(b){if(!0===a||f.$index%2===a){var k=e(b||[]);if(!m){var t=l(k,1);h.$addClass(t)}else if(!ea(b,m)){var r=e(m),t=d(k,r),k=d(r,k),t=l(t,1),k=l(k,-1);t&&t.length&&c.addClass(g,t);k&&k.length&&c.removeClass(g,k)}}m=qa(b)}var m;f.$watch(h[b],k,!0);h.$observe("class",function(a){k(f.$eval(h[b]))});"ngClass"!==b&&f.$watch("$index",
+function(c,d){var g=c&1;if(g!==(d&1)){var k=e(f.$eval(h[b]));g===a?(g=l(k,1),h.$addClass(g)):(g=l(k,-1),h.$removeClass(g))}})}}}]}function sd(b){function a(a,b){b&&!f[a]?(k.addClass(e,a),f[a]=!0):!b&&f[a]&&(k.removeClass(e,a),f[a]=!1)}function c(b,c){b=b?"-"+uc(b,"-"):"";a(lb+b,!0===c);a(vd+b,!1===c)}var d=b.ctrl,e=b.$element,f={},g=b.set,h=b.unset,l=b.parentForm,k=b.$animate;f[vd]=!(f[lb]=e.hasClass(lb));d.$setValidity=function(b,e,f){e===u?(d.$pending||(d.$pending={}),g(d.$pending,b,f)):(d.$pending&&
+h(d.$pending,b,f),wd(d.$pending)&&(d.$pending=u));Wa(e)?e?(h(d.$error,b,f),g(d.$$success,b,f)):(g(d.$error,b,f),h(d.$$success,b,f)):(h(d.$error,b,f),h(d.$$success,b,f));d.$pending?(a(xd,!0),d.$valid=d.$invalid=u,c("",null)):(a(xd,!1),d.$valid=wd(d.$error),d.$invalid=!d.$valid,c("",d.$valid));e=d.$pending&&d.$pending[b]?u:d.$error[b]?!1:d.$$success[b]?!0:null;c(b,e);l.$setValidity(b,e,d)}}function wd(b){if(b)for(var a in b)return!1;return!0}var Nf=/^\/(.+)\/([a-z]*)$/,R=function(b){return x(b)?b.toLowerCase():
+b},sc=Object.prototype.hasOwnProperty,vb=function(b){return x(b)?b.toUpperCase():b},Ra,C,ra,Za=[].slice,pf=[].splice,Of=[].push,Da=Object.prototype.toString,Ka=M("ng"),aa=P.angular||(P.angular={}),cb,ob=0;Ra=X.documentMode;B.$inject=[];oa.$inject=[];var E=Array.isArray,T=function(b){return x(b)?b.trim():b},gd=function(b){return b.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},bb=function(){if(y(bb.isActive_))return bb.isActive_;var b=!(!X.querySelector("[ng-csp]")&&!X.querySelector("[data-ng-csp]"));
+if(!b)try{new Function("")}catch(a){b=!0}return bb.isActive_=b},sb=["ng-","data-ng-","ng:","x-ng-"],Md=/[A-Z]/g,vc=!1,Rb,na=1,qb=3,Qd={full:"1.3.14",major:1,minor:3,dot:14,codeName:"instantaneous-browserification"};Q.expando="ng339";var Ab=Q.cache={},hf=1;Q._data=function(b){return this.cache[b[this.expando]]||{}};var cf=/([\:\-\_]+(.))/g,df=/^moz([A-Z])/,Pf={mouseleave:"mouseout",mouseenter:"mouseover"},Ub=M("jqLite"),gf=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Tb=/<|&#?\w+;/,ef=/<([\w:]+)/,ff=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
+ga={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ga.optgroup=ga.option;ga.tbody=ga.tfoot=ga.colgroup=ga.caption=ga.thead;ga.th=ga.td;var La=Q.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===X.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),Q(P).on("load",a))},
+toString:function(){var b=[];s(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?C(this[b]):C(this[this.length+b])},length:0,push:Of,sort:[].sort,splice:[].splice},Fb={};s("multiple selected checked disabled readOnly required open".split(" "),function(b){Fb[R(b)]=b});var Nc={};s("input select option textarea button form details".split(" "),function(b){Nc[b]=!0});var Oc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};
+s({data:Wb,removeData:yb},function(b,a){Q[a]=b});s({data:Wb,inheritedData:Eb,scope:function(b){return C.data(b,"$scope")||Eb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return C.data(b,"$isolateScope")||C.data(b,"$isolateScopeNoTemplate")},controller:Jc,injector:function(b){return Eb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Bb,css:function(b,a,c){a=db(a);if(y(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=R(a);if(Fb[d])if(y(c))c?
+(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||B).specified?d:u;else if(y(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?u:b},prop:function(b,a,c){if(y(c))b[a]=c;else return b[a]},text:function(){function b(a,b){if(z(b)){var d=a.nodeType;return d===na||d===qb?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(z(a)){if(b.multiple&&"select"===ta(b)){var c=[];s(b.options,function(a){a.selected&&
+c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(z(a))return b.innerHTML;xb(b,!0);b.innerHTML=a},empty:Kc},function(b,a){Q.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==Kc&&(2==b.length&&b!==Bb&&b!==Jc?a:d)===u){if(J(a)){for(e=0;e<g;e++)if(b===Wb)b(this[e],a);else for(f in a)b(this[e],f,a[f]);return this}e=b.$dv;g=e===u?Math.min(g,1):g;for(f=0;f<g;f++){var h=b(this[f],a,d);e=e?e+h:h}return e}for(e=0;e<g;e++)b(this[e],a,d);return this}});
+s({removeData:yb,on:function a(c,d,e,f){if(y(f))throw Ub("onargs");if(Fc(c)){var g=zb(c,!0);f=g.events;var h=g.handle;h||(h=g.handle=lf(c,f));for(var g=0<=d.indexOf(" ")?d.split(" "):[d],l=g.length;l--;){d=g[l];var k=f[d];k||(f[d]=[],"mouseenter"===d||"mouseleave"===d?a(c,Pf[d],function(a){var c=a.relatedTarget;c&&(c===this||this.contains(c))||h(a,d)}):"$destroy"!==d&&c.addEventListener(d,h,!1),k=f[d]);k.push(e)}}},off:Ic,one:function(a,c,d){a=C(a);a.on(c,function f(){a.off(c,d);a.off(c,f)});a.on(c,
+d)},replaceWith:function(a,c){var d,e=a.parentNode;xb(a);s(new Q(c),function(c){d?e.insertBefore(c,d.nextSibling):e.replaceChild(c,a);d=c})},children:function(a){var c=[];s(a.childNodes,function(a){a.nodeType===na&&c.push(a)});return c},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,c){var d=a.nodeType;if(d===na||11===d){c=new Q(c);for(var d=0,e=c.length;d<e;d++)a.appendChild(c[d])}},prepend:function(a,c){if(a.nodeType===na){var d=a.firstChild;s(new Q(c),function(c){a.insertBefore(c,
+d)})}},wrap:function(a,c){c=C(c).eq(0).clone()[0];var d=a.parentNode;d&&d.replaceChild(c,a);c.appendChild(a)},remove:Lc,detach:function(a){Lc(a,!0)},after:function(a,c){var d=a,e=a.parentNode;c=new Q(c);for(var f=0,g=c.length;f<g;f++){var h=c[f];e.insertBefore(h,d.nextSibling);d=h}},addClass:Db,removeClass:Cb,toggleClass:function(a,c,d){c&&s(c.split(" "),function(c){var f=d;z(f)&&(f=!Bb(a,c));(f?Db:Cb)(a,c)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){return a.nextElementSibling},
+find:function(a,c){return a.getElementsByTagName?a.getElementsByTagName(c):[]},clone:Vb,triggerHandler:function(a,c,d){var e,f,g=c.type||c,h=zb(a);if(h=(h=h&&h.events)&&h[g])e={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===this.defaultPrevented},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return!0===this.immediatePropagationStopped},stopPropagation:B,type:g,target:a},c.type&&(e=w(e,
+c)),c=qa(h),f=d?[e].concat(d):[e],s(c,function(c){e.isImmediatePropagationStopped()||c.apply(a,f)})}},function(a,c){Q.prototype[c]=function(c,e,f){for(var g,h=0,l=this.length;h<l;h++)z(g)?(g=a(this[h],c,e,f),y(g)&&(g=C(g))):Hc(g,a(this[h],c,e,f));return y(g)?g:this};Q.prototype.bind=Q.prototype.on;Q.prototype.unbind=Q.prototype.off});eb.prototype={put:function(a,c){this[Na(a,this.nextUid)]=c},get:function(a){return this[Na(a,this.nextUid)]},remove:function(a){var c=this[a=Na(a,this.nextUid)];delete this[a];
+return c}};var Qc=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,Qf=/,/,Rf=/^\s*(_?)(\S+?)\1\s*$/,Pc=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ga=M("$injector");ab.$$annotate=function(a,c,d){var e;if("function"===typeof a){if(!(e=a.$inject)){e=[];if(a.length){if(c)throw x(d)&&d||(d=a.name||mf(a)),Ga("strictdi",d);c=a.toString().replace(Pc,"");c=c.match(Qc);s(c[1].split(Qf),function(a){a.replace(Rf,function(a,c,d){e.push(d)})})}a.$inject=e}}else E(a)?(c=a.length-1,tb(a[c],"fn"),e=a.slice(0,c)):tb(a,"fn",!0);return e};
+var Sf=M("$animate"),Ce=["$provide",function(a){this.$$selectors={};this.register=function(c,d){var e=c+"-animation";if(c&&"."!=c.charAt(0))throw Sf("notcsel",c);this.$$selectors[c.substr(1)]=e;a.factory(e,d)};this.classNameFilter=function(a){1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null);return this.$$classNameFilter};this.$get=["$$q","$$asyncCallback","$rootScope",function(a,d,e){function f(d){var f,g=a.defer();g.promise.$$cancelFn=function(){f&&f()};e.$$postDigest(function(){f=
+d(function(){g.resolve()})});return g.promise}function g(a,c){var d=[],e=[],f=fa();s((a.attr("class")||"").split(/\s+/),function(a){f[a]=!0});s(c,function(a,c){var g=f[c];!1===a&&g?e.push(c):!0!==a||g||d.push(c)});return 0<d.length+e.length&&[d.length?d:null,e.length?e:null]}function h(a,c,d){for(var e=0,f=c.length;e<f;++e)a[c[e]]=d}function l(){m||(m=a.defer(),d(function(){m.resolve();m=null}));return m.promise}function k(a,c){if(aa.isObject(c)){var d=w(c.from||{},c.to||{});a.css(d)}}var m;return{animate:function(a,
+c,d){k(a,{from:c,to:d});return l()},enter:function(a,c,d,e){k(a,e);d?d.after(a):c.prepend(a);return l()},leave:function(a,c){a.remove();return l()},move:function(a,c,d,e){return this.enter(a,c,d,e)},addClass:function(a,c,d){return this.setClass(a,c,[],d)},$$addClassImmediately:function(a,c,d){a=C(a);c=x(c)?c:E(c)?c.join(" "):"";s(a,function(a){Db(a,c)});k(a,d);return l()},removeClass:function(a,c,d){return this.setClass(a,[],c,d)},$$removeClassImmediately:function(a,c,d){a=C(a);c=x(c)?c:E(c)?c.join(" "):
+"";s(a,function(a){Cb(a,c)});k(a,d);return l()},setClass:function(a,c,d,e){var k=this,l=!1;a=C(a);var m=a.data("$$animateClasses");m?e&&m.options&&(m.options=aa.extend(m.options||{},e)):(m={classes:{},options:e},l=!0);e=m.classes;c=E(c)?c:c.split(" ");d=E(d)?d:d.split(" ");h(e,c,!0);h(e,d,!1);l&&(m.promise=f(function(c){var d=a.data("$$animateClasses");a.removeData("$$animateClasses");if(d){var e=g(a,d.classes);e&&k.$$setClassImmediately(a,e[0],e[1],d.options)}c()}),a.data("$$animateClasses",m));
+return m.promise},$$setClassImmediately:function(a,c,d,e){c&&this.$$addClassImmediately(a,c);d&&this.$$removeClassImmediately(a,d);k(a,e);return l()},enabled:B,cancel:B}}]}],ia=M("$compile");xc.$inject=["$provide","$$sanitizeUriProvider"];var Sc=/^((?:x|data)[\:\-_])/i,qf=M("$controller"),Wc="application/json",$b={"Content-Type":Wc+";charset=utf-8"},sf=/^\[|^\{(?!\{)/,tf={"[":/]$/,"{":/}$/},rf=/^\)\]\}',?\n/,ac=M("$interpolate"),Tf=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,wf={http:80,https:443,ftp:21},Hb=
+M("$location"),Uf={$$html5:!1,$$replace:!1,absUrl:Ib("$$absUrl"),url:function(a){if(z(a))return this.$$url;var c=Tf.exec(a);(c[1]||""===a)&&this.path(decodeURIComponent(c[1]));(c[2]||c[1]||""===a)&&this.search(c[3]||"");this.hash(c[5]||"");return this},protocol:Ib("$$protocol"),host:Ib("$$host"),port:Ib("$$port"),path:dd("$$path",function(a){a=null!==a?a.toString():"";return"/"==a.charAt(0)?a:"/"+a}),search:function(a,c){switch(arguments.length){case 0:return this.$$search;case 1:if(x(a)||V(a))a=
+a.toString(),this.$$search=rc(a);else if(J(a))a=Ea(a,{}),s(a,function(c,e){null==c&&delete a[e]}),this.$$search=a;else throw Hb("isrcharg");break;default:z(c)||null===c?delete this.$$search[a]:this.$$search[a]=c}this.$$compose();return this},hash:dd("$$hash",function(a){return null!==a?a.toString():""}),replace:function(){this.$$replace=!0;return this}};s([cd,ec,dc],function(a){a.prototype=Object.create(Uf);a.prototype.state=function(c){if(!arguments.length)return this.$$state;if(a!==dc||!this.$$html5)throw Hb("nostate");
+this.$$state=z(c)?null:c;return this}});var ka=M("$parse"),Vf=Function.prototype.call,Wf=Function.prototype.apply,Xf=Function.prototype.bind,mb=fa();s({"null":function(){return null},"true":function(){return!0},"false":function(){return!1},undefined:function(){}},function(a,c){a.constant=a.literal=a.sharedGetter=!0;mb[c]=a});mb["this"]=function(a){return a};mb["this"].sharedGetter=!0;var nb=w(fa(),{"+":function(a,c,d,e){d=d(a,c);e=e(a,c);return y(d)?y(e)?d+e:d:y(e)?e:u},"-":function(a,c,d,e){d=d(a,
+c);e=e(a,c);return(y(d)?d:0)-(y(e)?e:0)},"*":function(a,c,d,e){return d(a,c)*e(a,c)},"/":function(a,c,d,e){return d(a,c)/e(a,c)},"%":function(a,c,d,e){return d(a,c)%e(a,c)},"===":function(a,c,d,e){return d(a,c)===e(a,c)},"!==":function(a,c,d,e){return d(a,c)!==e(a,c)},"==":function(a,c,d,e){return d(a,c)==e(a,c)},"!=":function(a,c,d,e){return d(a,c)!=e(a,c)},"<":function(a,c,d,e){return d(a,c)<e(a,c)},">":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,
+c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"!":function(a,c,d){return!d(a,c)},"=":!0,"|":!0}),Yf={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},hc=function(a){this.options=a};hc.prototype={constructor:hc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index<this.text.length;)if(a=this.text.charAt(this.index),'"'===a||"'"===a)this.readString(a);else if(this.isNumber(a)||"."===a&&this.isNumber(this.peek()))this.readNumber();
+else if(this.isIdent(a))this.readIdent();else if(this.is(a,"(){}[].,;:?"))this.tokens.push({index:this.index,text:a}),this.index++;else if(this.isWhitespace(a))this.index++;else{var c=a+this.peek(),d=c+this.peek(2),e=nb[c],f=nb[d];nb[a]||e||f?(a=f?d:e?c:a,this.tokens.push({index:this.index,text:a,operator:!0}),this.index+=a.length):this.throwError("Unexpected next character ",this.index,this.index+1)}return this.tokens},is:function(a,c){return-1!==c.indexOf(a)},peek:function(a){a=a||1;return this.index+
+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=y(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw ka("lexerr",a,c,this.text);
+},readNumber:function(){for(var a="",c=this.index;this.index<this.text.length;){var d=R(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var e=this.peek();if("e"==d&&this.isExpOperator(e))a+=d;else if(this.isExpOperator(d)&&e&&this.isNumber(e)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||e&&this.isNumber(e)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}this.tokens.push({index:c,text:a,constant:!0,value:Number(a)})},readIdent:function(){for(var a=
+this.index;this.index<this.text.length;){var c=this.text.charAt(this.index);if(!this.isIdent(c)&&!this.isNumber(c))break;this.index++}this.tokens.push({index:a,text:this.text.slice(a,this.index),identifier:!0})},readString:function(a){var c=this.index;this.index++;for(var d="",e=a,f=!1;this.index<this.text.length;){var g=this.text.charAt(this.index),e=e+g;if(f)"u"===g?(f=this.text.substring(this.index+1,this.index+5),f.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+f+"]"),this.index+=
+4,d+=String.fromCharCode(parseInt(f,16))):d+=Yf[g]||g,f=!1;else if("\\"===g)f=!0;else{if(g===a){this.index++;this.tokens.push({index:c,text:e,constant:!0,value:d});return}d+=g}this.index++}this.throwError("Unterminated quote",c)}};var ib=function(a,c,d){this.lexer=a;this.$filter=c;this.options=d};ib.ZERO=w(function(){return 0},{sharedGetter:!0,constant:!0});ib.prototype={constructor:ib,parse:function(a){this.text=a;this.tokens=this.lexer.lex(a);a=this.statements();0!==this.tokens.length&&this.throwError("is an unexpected token",
+this.tokens[0]);a.literal=!!a.literal;a.constant=!!a.constant;return a},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.peek().identifier&&this.peek().text in mb?a=mb[this.consume().text]:this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression",this.peek());for(var c,d;c=this.expect("(","[",".");)"("===c.text?(a=this.functionCall(a,
+d),d=null):"["===c.text?(d=a,a=this.objectIndex(a)):"."===c.text?(d=a,a=this.fieldAccess(a)):this.throwError("IMPOSSIBLE");return a},throwError:function(a,c){throw ka("syntax",c.text,a,c.index+1,this.text,this.text.substring(c.index));},peekToken:function(){if(0===this.tokens.length)throw ka("ueoe",this.text);return this.tokens[0]},peek:function(a,c,d,e){return this.peekAhead(0,a,c,d,e)},peekAhead:function(a,c,d,e,f){if(this.tokens.length>a){a=this.tokens[a];var g=a.text;if(g===c||g===d||g===e||g===
+f||!(c||d||e||f))return a}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},consume:function(a){if(0===this.tokens.length)throw ka("ueoe",this.text);var c=this.expect(a);c||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return c},unaryFn:function(a,c){var d=nb[a];return w(function(a,f){return d(a,f,c)},{constant:c.constant,inputs:[c]})},binaryFn:function(a,c,d,e){var f=nb[c];return w(function(c,e){return f(c,e,a,d)},{constant:a.constant&&
+d.constant,inputs:!e&&[a,d]})},identifier:function(){for(var a=this.consume().text;this.peek(".")&&this.peekAhead(1).identifier&&!this.peekAhead(2,"(");)a+=this.consume().text+this.consume().text;return yf(a,this.options,this.text)},constant:function(){var a=this.consume().value;return w(function(){return a},{constant:!0,literal:!0})},statements:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",";","]")&&a.push(this.filterChain()),!this.expect(";"))return 1===a.length?a[0]:function(c,
+d){for(var e,f=0,g=a.length;f<g;f++)e=a[f](c,d);return e}},filterChain:function(){for(var a=this.expression();this.expect("|");)a=this.filter(a);return a},filter:function(a){var c=this.$filter(this.consume().text),d,e;if(this.peek(":"))for(d=[],e=[];this.expect(":");)d.push(this.expression());var f=[a].concat(d||[]);return w(function(f,h){var l=a(f,h);if(e){e[0]=l;for(l=d.length;l--;)e[l+1]=d[l](f,h);return c.apply(u,e)}return c(l)},{constant:!c.$stateful&&f.every(fc),inputs:!c.$stateful&&f})},expression:function(){return this.assignment()},
+assignment:function(){var a=this.ternary(),c,d;return(d=this.expect("="))?(a.assign||this.throwError("implies assignment but ["+this.text.substring(0,d.index)+"] can not be assigned to",d),c=this.ternary(),w(function(d,f){return a.assign(d,c(d,f),f)},{inputs:[a,c]})):a},ternary:function(){var a=this.logicalOR(),c;if(this.expect("?")&&(c=this.assignment(),this.consume(":"))){var d=this.assignment();return w(function(e,f){return a(e,f)?c(e,f):d(e,f)},{constant:a.constant&&c.constant&&d.constant})}return a},
+logicalOR:function(){for(var a=this.logicalAND(),c;c=this.expect("||");)a=this.binaryFn(a,c.text,this.logicalAND(),!0);return a},logicalAND:function(){for(var a=this.equality(),c;c=this.expect("&&");)a=this.binaryFn(a,c.text,this.equality(),!0);return a},equality:function(){for(var a=this.relational(),c;c=this.expect("==","!=","===","!==");)a=this.binaryFn(a,c.text,this.relational());return a},relational:function(){for(var a=this.additive(),c;c=this.expect("<",">","<=",">=");)a=this.binaryFn(a,c.text,
+this.additive());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.text,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.text,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(ib.ZERO,a.text,this.unary()):(a=this.expect("!"))?this.unaryFn(a.text,this.unary()):this.primary()},fieldAccess:function(a){var c=
+this.identifier();return w(function(d,e,f){d=f||a(d,e);return null==d?u:c(d)},{assign:function(d,e,f){var g=a(d,f);g||a.assign(d,g={},f);return c.assign(g,e)}})},objectIndex:function(a){var c=this.text,d=this.expression();this.consume("]");return w(function(e,f){var g=a(e,f),h=d(e,f);sa(h,c);return g?la(g[h],c):u},{assign:function(e,f,g){var h=sa(d(e,g),c),l=la(a(e,g),c);l||a.assign(e,l={},g);return l[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());
+while(this.expect(","))}this.consume(")");var e=this.text,f=d.length?[]:null;return function(g,h){var l=c?c(g,h):y(c)?u:g,k=a(g,h,l)||B;if(f)for(var m=d.length;m--;)f[m]=la(d[m](g,h),e);la(l,e);if(k){if(k.constructor===k)throw ka("isecfn",e);if(k===Vf||k===Wf||k===Xf)throw ka("isecff",e);}l=k.apply?k.apply(l,f):k(f[0],f[1],f[2],f[3],f[4]);f&&(f.length=0);return la(l,e)}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))
+}this.consume("]");return w(function(c,d){for(var e=[],f=0,g=a.length;f<g;f++)e.push(a[f](c,d));return e},{literal:!0,constant:a.every(fc),inputs:a})},object:function(){var a=[],c=[];if("}"!==this.peekToken().text){do{if(this.peek("}"))break;var d=this.consume();d.constant?a.push(d.value):d.identifier?a.push(d.text):this.throwError("invalid key",d);this.consume(":");c.push(this.expression())}while(this.expect(","))}this.consume("}");return w(function(d,f){for(var g={},h=0,l=c.length;h<l;h++)g[a[h]]=
+c[h](d,f);return g},{literal:!0,constant:c.every(fc),inputs:c})}};var Af=fa(),zf=fa(),Bf=Object.prototype.valueOf,Ca=M("$sce"),ma={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},ia=M("$compile"),Y=X.createElement("a"),id=Ba(P.location.href);Ec.$inject=["$provide"];jd.$inject=["$locale"];ld.$inject=["$locale"];var od=".",Lf={yyyy:Z("FullYear",4),yy:Z("FullYear",2,0,!0),y:Z("FullYear",1),MMMM:Kb("Month"),MMM:Kb("Month",!0),MM:Z("Month",2,1),M:Z("Month",1,1),dd:Z("Date",2),d:Z("Date",
+1),HH:Z("Hours",2),H:Z("Hours",1),hh:Z("Hours",2,-12),h:Z("Hours",1,-12),mm:Z("Minutes",2),m:Z("Minutes",1),ss:Z("Seconds",2),s:Z("Seconds",1),sss:Z("Milliseconds",3),EEEE:Kb("Day"),EEE:Kb("Day",!0),a:function(a,c){return 12>a.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Jb(Math[0<a?"floor":"ceil"](a/60),2)+Jb(Math.abs(a%60),2))},ww:qd(2),w:qd(1)},Kf=/((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/,Jf=/^\-?\d+$/;
+kd.$inject=["$locale"];var Gf=da(R),Hf=da(vb);md.$inject=["$parse"];var Td=da({restrict:"E",compile:function(a,c){if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){if("a"===c[0].nodeName.toLowerCase()){var f="[object SVGAnimatedString]"===Da.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}}),wb={};s(Fb,function(a,c){if("multiple"!=a){var d=ya("ng-"+c);wb[d]=function(){return{restrict:"A",priority:100,link:function(a,f,g){a.$watch(g[d],function(a){g.$set(c,
+!!a)})}}}}});s(Oc,function(a,c){wb[c]=function(){return{priority:100,link:function(a,e,f){if("ngPattern"===c&&"/"==f.ngPattern.charAt(0)&&(e=f.ngPattern.match(Nf))){f.$set("ngPattern",new RegExp(e[1],e[2]));return}a.$watch(f[c],function(a){f.$set(c,a)})}}}});s(["src","srcset","href"],function(a){var c=ya("ng-"+a);wb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===Da.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href",g=null);f.$observe(c,
+function(c){c?(f.$set(h,c),Ra&&g&&e.prop(g,f[h])):"href"===a&&f.$set(h,null)})}}}});var Lb={$addControl:B,$$renameControl:function(a,c){a.$name=c},$removeControl:B,$setValidity:B,$setDirty:B,$setPristine:B,$setSubmitted:B};rd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var yd=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:rd,compile:function(a){a.addClass(Sa).addClass(lb);return{pre:function(a,d,g,h){if(!("action"in g)){var l=function(c){a.$apply(function(){h.$commitViewValue();
+h.$setSubmitted()});c.preventDefault()};d[0].addEventListener("submit",l,!1);d.on("$destroy",function(){c(function(){d[0].removeEventListener("submit",l,!1)},0,!1)})}var k=h.$$parentForm,m=h.$name;m&&(hb(a,null,m,h,m),g.$observe(g.name?"name":"ngForm",function(c){m!==c&&(hb(a,null,m,u,m),m=c,hb(a,null,m,h,m),k.$$renameControl(h,m))}));d.on("$destroy",function(){k.$removeControl(h);m&&hb(a,null,m,u,m);w(h,Lb)})}}}}}]},Ud=yd(),ge=yd(!0),Mf=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,
+Zf=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,$f=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,ag=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,zd=/^(\d{4})-(\d{2})-(\d{2})$/,Ad=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,kc=/^(\d{4})-W(\d\d)$/,Bd=/^(\d{4})-(\d\d)$/,Cd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Dd={text:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);ic(e)},date:kb("date",zd,Nb(zd,["yyyy",
+"MM","dd"]),"yyyy-MM-dd"),"datetime-local":kb("datetimelocal",Ad,Nb(Ad,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:kb("time",Cd,Nb(Cd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:kb("week",kc,function(a,c){if(pa(a))return a;if(x(a)){kc.lastIndex=0;var d=kc.exec(a);if(d){var e=+d[1],f=+d[2],g=d=0,h=0,l=0,k=pd(e),f=7*(f-1);c&&(d=c.getHours(),g=c.getMinutes(),h=c.getSeconds(),l=c.getMilliseconds());return new Date(e,0,k.getDate()+f,d,g,h,l)}}return NaN},"yyyy-Www"),month:kb("month",
+Bd,Nb(Bd,["yyyy","MM"]),"yyyy-MM"),number:function(a,c,d,e,f,g){td(a,c,d,e);jb(a,c,d,e,f,g);e.$$parserName="number";e.$parsers.push(function(a){return e.$isEmpty(a)?null:ag.test(a)?parseFloat(a):u});e.$formatters.push(function(a){if(!e.$isEmpty(a)){if(!V(a))throw Ob("numfmt",a);a=a.toString()}return a});if(y(d.min)||d.ngMin){var h;e.$validators.min=function(a){return e.$isEmpty(a)||z(h)||a>=h};d.$observe("min",function(a){y(a)&&!V(a)&&(a=parseFloat(a,10));h=V(a)&&!isNaN(a)?a:u;e.$validate()})}if(y(d.max)||
+d.ngMax){var l;e.$validators.max=function(a){return e.$isEmpty(a)||z(l)||a<=l};d.$observe("max",function(a){y(a)&&!V(a)&&(a=parseFloat(a,10));l=V(a)&&!isNaN(a)?a:u;e.$validate()})}},url:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);ic(e);e.$$parserName="url";e.$validators.url=function(a,c){var d=a||c;return e.$isEmpty(d)||Zf.test(d)}},email:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);ic(e);e.$$parserName="email";e.$validators.email=function(a,c){var d=a||c;return e.$isEmpty(d)||$f.test(d)}},radio:function(a,c,
+d,e){z(d.name)&&c.attr("name",++ob);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,l){var k=ud(l,a,"ngTrueValue",d.ngTrueValue,!0),m=ud(l,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked,a&&a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return!1===a};e.$formatters.push(function(a){return ea(a,
+k)});e.$parsers.push(function(a){return a?k:m})},hidden:B,button:B,submit:B,reset:B,file:B},yc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,l){l[0]&&(Dd[R(h.type)]||Dd.text)(f,g,h,l[0],c,a,d,e)}}}}],bg=/^(true|false|\d+)$/,ye=function(){return{restrict:"A",priority:100,compile:function(a,c){return bg.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",
+a)})}}}},Zd=["$compile",function(a){return{restrict:"AC",compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===u?"":a})}}}}],ae=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate));c.$$addBindingInfo(f,d.expressions);f=f[0];g.$observe("ngBindTemplate",function(a){f.textContent=a===u?"":a})}}}}],$d=["$sce",
+"$parse","$compile",function(a,c,d){return{restrict:"A",compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],xe=da({restrict:"A",require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),be=jc("",!0),de=jc("Odd",0),ce=jc("Even",1),ee=Ja({compile:function(a,c){c.$set("ngCloak",
+u);a.removeClass("ng-cloak")}}),fe=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Dc={},cg={blur:!0,focus:!0};s("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=ya("ng-"+a);Dc[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h=d(g[c],null,!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};
+cg[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var ie=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,l,k;c.$watch(e.ngIf,function(c){c?l||g(function(c,f){l=f;c[c.length++]=X.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(k&&(k.remove(),k=null),l&&(l.$destroy(),l=null),h&&(k=ub(h.clone),a.leave(k).then(function(){k=null}),h=null))})}}}],je=["$templateRequest","$anchorScroll",
+"$animate","$sce",function(a,c,d,e){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:aa.noop,compile:function(f,g){var h=g.ngInclude||g.src,l=g.onload||"",k=g.autoscroll;return function(f,g,q,s,r){var u=0,w,n,D,H=function(){n&&(n.remove(),n=null);w&&(w.$destroy(),w=null);D&&(d.leave(D).then(function(){n=null}),n=D,D=null)};f.$watch(e.parseAsResourceUrl(h),function(e){var h=function(){!y(k)||k&&!f.$eval(k)||c()},n=++u;e?(a(e,!0).then(function(a){if(n===u){var c=f.$new();
+s.template=a;a=r(c,function(a){H();d.enter(a,null,g).then(h)});w=c;D=a;w.$emit("$includeContentLoaded",e);f.$eval(l)}},function(){n===u&&(H(),f.$emit("$includeContentError",e))}),f.$emit("$includeContentRequested",e)):(H(),s.template=null)})}}}}],Ae=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(Gc(f.template,X).childNodes)(c,function(a){d.append(a)},{futureParentElement:d})):(d.html(f.template),a(d.contents())(c))}}}],
+ke=Ja({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),we=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?T(f):f;e.$parsers.push(function(a){if(!z(a)){var c=[];a&&s(a.split(h),function(a){a&&c.push(g?T(a):a)});return c}});e.$formatters.push(function(a){return E(a)?a.join(f):u});e.$isEmpty=function(a){return!a||!a.length}}}},lb="ng-valid",vd="ng-invalid",Sa="ng-pristine",
+Mb="ng-dirty",xd="ng-pending",Ob=new M("ngModel"),dg=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,l,k,m){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=u;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success=
+{};this.$pending=u;this.$name=m(d.name||"",!1)(a);var p=f(d.ngModel),q=p.assign,t=p,r=q,w=null,C,n=this;this.$$setOptions=function(a){if((n.$options=a)&&a.getterSetter){var c=f(d.ngModel+"()"),g=f(d.ngModel+"($$$p)");t=function(a){var d=p(a);G(d)&&(d=c(a));return d};r=function(a,c){G(p(a))?g(a,{$$$p:n.$modelValue}):q(a,n.$modelValue)}}else if(!p.assign)throw Ob("nonassign",d.ngModel,ua(e));};this.$render=B;this.$isEmpty=function(a){return z(a)||""===a||null===a||a!==a};var D=e.inheritedData("$formController")||
+Lb,H=0;sd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:D,$animate:g});this.$setPristine=function(){n.$dirty=!1;n.$pristine=!0;g.removeClass(e,Mb);g.addClass(e,Sa)};this.$setDirty=function(){n.$dirty=!0;n.$pristine=!1;g.removeClass(e,Sa);g.addClass(e,Mb);D.$setDirty()};this.$setUntouched=function(){n.$touched=!1;n.$untouched=!0;g.setClass(e,"ng-untouched","ng-touched")};this.$setTouched=function(){n.$touched=!0;n.$untouched=!1;g.setClass(e,"ng-touched",
+"ng-untouched")};this.$rollbackViewValue=function(){h.cancel(w);n.$viewValue=n.$$lastCommittedViewValue;n.$render()};this.$validate=function(){if(!V(n.$modelValue)||!isNaN(n.$modelValue)){var a=n.$$rawModelValue,c=n.$valid,d=n.$modelValue,e=n.$options&&n.$options.allowInvalid;n.$$runValidators(a,n.$$lastCommittedViewValue,function(f){e||c===f||(n.$modelValue=f?a:u,n.$modelValue!==d&&n.$$writeModelToScope())})}};this.$$runValidators=function(a,c,d){function e(){var d=!0;s(n.$validators,function(e,
+f){var h=e(a,c);d=d&&h;g(f,h)});return d?!0:(s(n.$asyncValidators,function(a,c){g(c,null)}),!1)}function f(){var d=[],e=!0;s(n.$asyncValidators,function(f,h){var k=f(a,c);if(!k||!G(k.then))throw Ob("$asyncValidators",k);g(h,u);d.push(k.then(function(){g(h,!0)},function(a){e=!1;g(h,!1)}))});d.length?k.all(d).then(function(){h(e)},B):h(!0)}function g(a,c){l===H&&n.$setValidity(a,c)}function h(a){l===H&&d(a)}H++;var l=H;(function(){var a=n.$$parserName||"parse";if(C===u)g(a,null);else return C||(s(n.$validators,
+function(a,c){g(c,null)}),s(n.$asyncValidators,function(a,c){g(c,null)})),g(a,C),C;return!0})()?e()?f():h(!1):h(!1)};this.$commitViewValue=function(){var a=n.$viewValue;h.cancel(w);if(n.$$lastCommittedViewValue!==a||""===a&&n.$$hasNativeValidators)n.$$lastCommittedViewValue=a,n.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var c=n.$$lastCommittedViewValue;if(C=z(c)?u:!0)for(var d=0;d<n.$parsers.length;d++)if(c=n.$parsers[d](c),z(c)){C=!1;break}V(n.$modelValue)&&
+isNaN(n.$modelValue)&&(n.$modelValue=t(a));var e=n.$modelValue,f=n.$options&&n.$options.allowInvalid;n.$$rawModelValue=c;f&&(n.$modelValue=c,n.$modelValue!==e&&n.$$writeModelToScope());n.$$runValidators(c,n.$$lastCommittedViewValue,function(a){f||(n.$modelValue=a?c:u,n.$modelValue!==e&&n.$$writeModelToScope())})};this.$$writeModelToScope=function(){r(a,n.$modelValue);s(n.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}})};this.$setViewValue=function(a,c){n.$viewValue=a;n.$options&&!n.$options.updateOnDefault||
+n.$$debounceViewValueCommit(c)};this.$$debounceViewValueCommit=function(c){var d=0,e=n.$options;e&&y(e.debounce)&&(e=e.debounce,V(e)?d=e:V(e[c])?d=e[c]:V(e["default"])&&(d=e["default"]));h.cancel(w);d?w=h(function(){n.$commitViewValue()},d):l.$$phase?n.$commitViewValue():a.$apply(function(){n.$commitViewValue()})};a.$watch(function(){var c=t(a);if(c!==n.$modelValue){n.$modelValue=n.$$rawModelValue=c;C=u;for(var d=n.$formatters,e=d.length,f=c;e--;)f=d[e](f);n.$viewValue!==f&&(n.$viewValue=n.$$lastCommittedViewValue=
+f,n.$render(),n.$$runValidators(c,f,B))}return c})}],ve=["$rootScope",function(a){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:dg,priority:1,compile:function(c){c.addClass(Sa).addClass("ng-untouched").addClass(lb);return{pre:function(a,c,f,g){var h=g[0],l=g[1]||Lb;h.$$setOptions(g[2]&&g[2].$options);l.$addControl(h);f.$observe("name",function(a){h.$name!==a&&l.$$renameControl(h,a)});a.$on("$destroy",function(){l.$removeControl(h)})},post:function(c,e,f,g){var h=g[0];
+if(h.$options&&h.$options.updateOn)e.on(h.$options.updateOn,function(a){h.$$debounceViewValueCommit(a&&a.type)});e.on("blur",function(e){h.$touched||(a.$$phase?c.$evalAsync(h.$setTouched):c.$apply(h.$setTouched))})}}}}}],eg=/(\s+|^)default(\s+|$)/,ze=function(){return{restrict:"A",controller:["$scope","$attrs",function(a,c){var d=this;this.$options=a.$eval(c.ngModelOptions);this.$options.updateOn!==u?(this.$options.updateOnDefault=!1,this.$options.updateOn=T(this.$options.updateOn.replace(eg,function(){d.$options.updateOnDefault=
+!0;return" "}))):this.$options.updateOnDefault=!0}]}},le=Ja({terminal:!0,priority:1E3}),me=["$locale","$interpolate",function(a,c){var d=/{}/g,e=/^when(Minus)?(.+)$/;return{restrict:"EA",link:function(f,g,h){function l(a){g.text(a||"")}var k=h.count,m=h.$attr.when&&g.attr(h.$attr.when),p=h.offset||0,q=f.$eval(m)||{},t={},m=c.startSymbol(),r=c.endSymbol(),u=m+k+"-"+p+r,w=aa.noop,n;s(h,function(a,c){var d=e.exec(c);d&&(d=(d[1]?"-":"")+R(d[2]),q[d]=g.attr(h.$attr[c]))});s(q,function(a,e){t[e]=c(a.replace(d,
+u))});f.$watch(k,function(c){c=parseFloat(c);var d=isNaN(c);d||c in q||(c=a.pluralCat(c-p));c===n||d&&isNaN(n)||(w(),w=f.$watch(t[c],l),n=c)})}}}],ne=["$parse","$animate",function(a,c){var d=M("ngRepeat"),e=function(a,c,d,e,k,m,p){a[d]=e;k&&(a[k]=m);a.$index=c;a.$first=0===c;a.$last=c===p-1;a.$middle=!(a.$first||a.$last);a.$odd=!(a.$even=0===(c&1))};return{restrict:"A",multiElement:!0,transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,compile:function(f,g){var h=g.ngRepeat,l=X.createComment(" end ngRepeat: "+
+h+" "),k=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!k)throw d("iexp",h);var m=k[1],p=k[2],q=k[3],t=k[4],k=m.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/);if(!k)throw d("iidexp",m);var r=k[3]||k[1],w=k[2];if(q&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(q)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(q)))throw d("badident",q);var y,n,D,H,v={$id:Na};t?y=a(t):(D=function(a,c){return Na(c)},
+H=function(a){return a});return function(a,f,g,k,m){y&&(n=function(c,d,e){w&&(v[w]=c);v[r]=d;v.$index=e;return y(a,v)});var t=fa();a.$watchCollection(p,function(g){var k,p,y=f[0],F,v=fa(),B,z,G,E,J,x,K;q&&(a[q]=g);if(Ta(g))J=g,p=n||D;else{p=n||H;J=[];for(K in g)g.hasOwnProperty(K)&&"$"!=K.charAt(0)&&J.push(K);J.sort()}B=J.length;K=Array(B);for(k=0;k<B;k++)if(z=g===J?k:J[k],G=g[z],E=p(z,G,k),t[E])x=t[E],delete t[E],v[E]=x,K[k]=x;else{if(v[E])throw s(K,function(a){a&&a.scope&&(t[a.id]=a)}),d("dupes",
+h,E,G);K[k]={id:E,scope:u,clone:u};v[E]=!0}for(F in t){x=t[F];E=ub(x.clone);c.leave(E);if(E[0].parentNode)for(k=0,p=E.length;k<p;k++)E[k].$$NG_REMOVED=!0;x.scope.$destroy()}for(k=0;k<B;k++)if(z=g===J?k:J[k],G=g[z],x=K[k],x.scope){F=y;do F=F.nextSibling;while(F&&F.$$NG_REMOVED);x.clone[0]!=F&&c.move(ub(x.clone),null,C(y));y=x.clone[x.clone.length-1];e(x.scope,k,r,G,w,z,B)}else m(function(a,d){x.scope=d;var f=l.cloneNode(!1);a[a.length++]=f;c.enter(a,null,C(y));y=f;x.clone=a;v[x.id]=x;e(x.scope,k,r,
+G,w,z,B)});t=v})}}}}],oe=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(c,d,e){c.$watch(e.ngShow,function(c){a[c?"removeClass":"addClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],he=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(c,d,e){c.$watch(e.ngHide,function(c){a[c?"addClass":"removeClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],pe=Ja(function(a,c,d){a.$watchCollection(d.ngStyle,function(a,d){d&&a!==d&&s(d,function(a,
+d){c.css(d,"")});a&&c.css(a)})}),qe=["$animate",function(a){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(c,d,e,f){var g=[],h=[],l=[],k=[],m=function(a,c){return function(){a.splice(c,1)}};c.$watch(e.ngSwitch||e.on,function(c){var d,e;d=0;for(e=l.length;d<e;++d)a.cancel(l[d]);d=l.length=0;for(e=k.length;d<e;++d){var r=ub(h[d].clone);k[d].$destroy();(l[d]=a.leave(r)).then(m(l,d))}h.length=0;k.length=0;(g=f.cases["!"+c]||f.cases["?"])&&s(g,function(c){c.transclude(function(d,
+e){k.push(e);var f=c.element;d[d.length++]=X.createComment(" end ngSwitchWhen: ");h.push({clone:d});a.enter(d,f.parent(),f)})})})}}}],re=Ja({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,c,d,e,f){e.cases["!"+d.ngSwitchWhen]=e.cases["!"+d.ngSwitchWhen]||[];e.cases["!"+d.ngSwitchWhen].push({transclude:f,element:c})}}),se=Ja({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,c,d,e,f){e.cases["?"]=e.cases["?"]||[];e.cases["?"].push({transclude:f,
+element:c})}}),ue=Ja({restrict:"EAC",link:function(a,c,d,e,f){if(!f)throw M("ngTransclude")("orphan",ua(c));f(function(a){c.empty();c.append(a)})}}),Vd=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(c,d){"text/ng-template"==d.type&&a.put(d.id,c[0].text)}}}],fg=M("ngOptions"),te=da({restrict:"A",terminal:!0}),Wd=["$compile","$parse",function(a,c){var d=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
+e={$setViewValue:B};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(a,c,d){var l=this,k={},m=e,p;l.databound=d.ngModel;l.init=function(a,c,d){m=a;p=d};l.addOption=function(c,d){Ma(c,'"option value"');k[c]=!0;m.$viewValue==c&&(a.val(c),p.parent()&&p.remove());d&&d[0].hasAttribute("selected")&&(d[0].selected=!0)};l.removeOption=function(a){this.hasOption(a)&&(delete k[a],m.$viewValue===a&&this.renderUnknownOption(a))};l.renderUnknownOption=function(c){c=
+"? "+Na(c)+" ?";p.val(c);a.prepend(p);a.val(c);p.prop("selected",!0)};l.hasOption=function(a){return k.hasOwnProperty(a)};c.$on("$destroy",function(){l.renderUnknownOption=B})}],link:function(e,g,h,l){function k(a,c,d,e){d.$render=function(){var a=d.$viewValue;e.hasOption(a)?(v.parent()&&v.remove(),c.val(a),""===a&&B.prop("selected",!0)):z(a)&&B?c.val(""):e.renderUnknownOption(a)};c.on("change",function(){a.$apply(function(){v.parent()&&v.remove();d.$setViewValue(c.val())})})}function m(a,c,d){var e;
+d.$render=function(){var a=new eb(d.$viewValue);s(c.find("option"),function(c){c.selected=y(a.get(c.value))})};a.$watch(function(){ea(e,d.$viewValue)||(e=qa(d.$viewValue),d.$render())});c.on("change",function(){a.$apply(function(){var a=[];s(c.find("option"),function(c){c.selected&&a.push(c.value)});d.$setViewValue(a)})})}function p(e,f,g){function h(a,c,d){R[B]=d;G&&(R[G]=c);return a(e,R)}function k(a){var c;if(t)if(K&&E(a)){c=new eb([]);for(var d=0;d<a.length;d++)c.put(h(K,null,a[d]),!0)}else c=
+new eb(a);else K&&(a=h(K,null,a));return function(d,e){var f;f=K?K:z?z:A;return t?y(c.remove(h(f,d,e))):a===h(f,d,e)}}function l(){n||(e.$$postDigest(p),n=!0)}function m(a,c,d){a[c]=a[c]||0;a[c]+=d?1:-1}function p(){n=!1;var a={"":[]},c=[""],d,l,r,u,v;r=g.$viewValue;u=N(e)||[];var B=G?Object.keys(u).sort():u,x,z,E,A,O={};v=k(r);var M=!1,T,V;Q={};for(A=0;E=B.length,A<E;A++){x=A;if(G&&(x=B[A],"$"===x.charAt(0)))continue;z=u[x];d=h(J,x,z)||"";(l=a[d])||(l=a[d]=[],c.push(d));d=v(x,z);M=M||d;z=h(C,x,z);
+z=y(z)?z:"";V=K?K(e,R):G?B[A]:A;K&&(Q[V]=x);l.push({id:V,label:z,selected:d})}t||(w||null===r?a[""].unshift({id:"",label:"",selected:!M}):M||a[""].unshift({id:"?",label:"",selected:!0}));x=0;for(B=c.length;x<B;x++){d=c[x];l=a[d];P.length<=x?(r={element:H.clone().attr("label",d),label:l.label},u=[r],P.push(u),f.append(r.element)):(u=P[x],r=u[0],r.label!=d&&r.element.attr("label",r.label=d));M=null;A=0;for(E=l.length;A<E;A++)d=l[A],(v=u[A+1])?(M=v.element,v.label!==d.label&&(m(O,v.label,!1),m(O,d.label,
+!0),M.text(v.label=d.label),M.prop("label",v.label)),v.id!==d.id&&M.val(v.id=d.id),M[0].selected!==d.selected&&(M.prop("selected",v.selected=d.selected),Ra&&M.prop("selected",v.selected))):(""===d.id&&w?T=w:(T=D.clone()).val(d.id).prop("selected",d.selected).attr("selected",d.selected).prop("label",d.label).text(d.label),u.push(v={element:T,label:d.label,id:d.id,selected:d.selected}),m(O,d.label,!0),M?M.after(T):r.element.append(T),M=T);for(A++;u.length>A;)d=u.pop(),m(O,d.label,!1),d.element.remove()}for(;P.length>
+x;){l=P.pop();for(A=1;A<l.length;++A)m(O,l[A].label,!1);l[0].element.remove()}s(O,function(a,c){0<a?q.addOption(c):0>a&&q.removeOption(c)})}var v;if(!(v=r.match(d)))throw fg("iexp",r,ua(f));var C=c(v[2]||v[1]),B=v[4]||v[6],x=/ as /.test(v[0])&&v[1],z=x?c(x):null,G=v[5],J=c(v[3]||""),A=c(v[2]?v[1]:B),N=c(v[7]),K=v[8]?c(v[8]):null,Q={},P=[[{element:f,label:""}]],R={};w&&(a(w)(e),w.removeClass("ng-scope"),w.remove());f.empty();f.on("change",function(){e.$apply(function(){var a=N(e)||[],c;if(t)c=[],s(f.val(),
+function(d){d=K?Q[d]:d;c.push("?"===d?u:""===d?null:h(z?z:A,d,a[d]))});else{var d=K?Q[f.val()]:f.val();c="?"===d?u:""===d?null:h(z?z:A,d,a[d])}g.$setViewValue(c);p()})});g.$render=p;e.$watchCollection(N,l);e.$watchCollection(function(){var a=N(e),c;if(a&&E(a)){c=Array(a.length);for(var d=0,f=a.length;d<f;d++)c[d]=h(C,d,a[d])}else if(a)for(d in c={},a)a.hasOwnProperty(d)&&(c[d]=h(C,d,a[d]));return c},l);t&&e.$watchCollection(function(){return g.$modelValue},l)}if(l[1]){var q=l[0];l=l[1];var t=h.multiple,
+r=h.ngOptions,w=!1,B,n=!1,D=C(X.createElement("option")),H=C(X.createElement("optgroup")),v=D.clone();h=0;for(var x=g.children(),G=x.length;h<G;h++)if(""===x[h].value){B=w=x.eq(h);break}q.init(l,w,v);t&&(l.$isEmpty=function(a){return!a||0===a.length});r?p(e,g,l):t?m(e,g,l):k(e,g,l,q)}}}}],Yd=["$interpolate",function(a){var c={addOption:B,removeOption:B};return{restrict:"E",priority:100,compile:function(d,e){if(z(e.value)){var f=a(d.text(),!0);f||e.$set("value",d.text())}return function(a,d,e){var k=
+d.parent(),m=k.data("$selectController")||k.parent().data("$selectController");m&&m.databound||(m=c);f?a.$watch(f,function(a,c){e.$set("value",a);c!==a&&m.removeOption(c);m.addOption(a,d)}):m.addOption(e.value,d);d.on("$destroy",function(){m.removeOption(e.value)})}}}}],Xd=da({restrict:"E",terminal:!1}),Ac=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){e&&(d.required=!0,e.$validators.required=function(a,c){return!d.required||!e.$isEmpty(c)},d.$observe("required",function(){e.$validate()}))}}},
+zc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f,g=d.ngPattern||d.pattern;d.$observe("pattern",function(a){x(a)&&0<a.length&&(a=new RegExp("^"+a+"$"));if(a&&!a.test)throw M("ngPattern")("noregexp",g,a,ua(c));f=a||u;e.$validate()});e.$validators.pattern=function(a){return e.$isEmpty(a)||z(f)||f.test(a)}}}}},Cc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=-1;d.$observe("maxlength",function(a){a=$(a);f=isNaN(a)?-1:a;e.$validate()});
+e.$validators.maxlength=function(a,c){return 0>f||e.$isEmpty(c)||c.length<=f}}}}},Bc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=0;d.$observe("minlength",function(a){f=$(a)||0;e.$validate()});e.$validators.minlength=function(a,c){return e.$isEmpty(c)||c.length>=f}}}}};P.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(Nd(),Pd(aa),C(X).ready(function(){Jd(X,tc)}))})(window,document);!window.angular.$$csp()&&window.angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}</style>');
+//# sourceMappingURL=angular.min.js.map
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.css b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.css
new file mode 100644
index 0000000..240be45
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.css
@@ -0,0 +1,74 @@
+.angularjs-datetime-picker {
+  color: #333;
+  font: normal 14px sans-serif;
+  border: 1px solid #ddd;
+  display: inline-block;
+  background: #fff;
+}
+.angularjs-datetime-picker > .adp-month {
+  text-align: center;
+  line-height: 22px;
+  padding: 10px;
+  background: #fcfcfc;
+  text-transform: uppercase;
+  font-weight: bold;
+  border-bottom: 1px solid #ddd;
+  position: relative;
+}
+.angularjs-datetime-picker > .adp-month > button {
+  color: #555;
+  font: normal 14px sans-serif;
+  outline: none;
+  position: absolute;
+  background: transparent;
+  border: none;
+  cursor: pointer;
+}
+.angularjs-datetime-picker > .adp-month > button:hover {
+  color: #333;
+}
+.angularjs-datetime-picker > .adp-month > button.adp-prev {
+  left: 10px;
+}
+.angularjs-datetime-picker > .adp-month > button.adp-next {
+  right: 10px;
+}
+.angularjs-datetime-picker > .adp-days {
+  width: 210px; /* 30 x 7 */
+  margin: 10px;
+  text-align: center;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day-of-week, .angularjs-datetime-picker > .adp-days > .adp-day {
+  box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  border: 1px solid transparent;
+  width: 30px;
+  line-height: 28px;
+  float: left;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day-of-week {
+  font-weight: bold;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day:not(.selectable) {
+  opacity: 0.15;
+  cursor: default;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day.selectable  {
+  cursor: pointer;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day.selected {
+  background: #e0e0e0;
+}
+.angularjs-datetime-picker > .adp-days > .adp-day.selectable:hover {
+  background: #eee;
+}
+.angularjs-datetime-picker > .adp-days:after {
+  content: '';
+  display: block;
+  clear: left;
+  height: 0;
+}
+
+.angularjs-datetime-picker input[type=range] {
+  width: 150px;
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.js
new file mode 100644
index 0000000..946f12e
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.js
@@ -0,0 +1,332 @@
+(function() {
+  'use strict';
+
+  angular.module('angularjs-datetime-picker', []);
+
+  var getTimezoneOffset = function(date) {
+    (typeof date == 'string')  && (date = new Date(date));
+    var jan = new Date(date.getFullYear(), 0, 1);
+    var jul = new Date(date.getFullYear(), 6, 1);
+    var stdTimezoneOffset = Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
+    var isDST = date.getTimezoneOffset() < stdTimezoneOffset;
+    var offset = isDST ? stdTimezoneOffset - 60 : stdTimezoneOffset;
+    var diff = offset >=0 ? '-' : '+';
+    return diff +
+      ("0"+ (offset / 60)).slice(-2) + ':' +
+      ("0"+ (offset % 60)).slice(-2);
+  };
+
+  var DatetimePicker = function($compile, $document, $controller){
+    var datetimePickerCtrl = $controller('DatetimePickerCtrl'); //directive controller
+    return {
+      open: function(options) {
+        datetimePickerCtrl.openDatetimePicker(options);
+      },
+      close: function() {
+        datetimePickerCtrl.closeDatetimePicker();
+      }
+    };
+  };
+  DatetimePicker.$inject = ['$compile', '$document', '$controller'];
+  angular.module('angularjs-datetime-picker').factory('DatetimePicker', DatetimePicker);
+
+  var DatetimePickerCtrl = function($compile, $document) {
+    var datetimePickerEl;
+    var _this = this;
+    var removeEl = function(el) {
+      el && el.remove();
+      $document[0].body.removeEventListener('click', _this.closeDatetimePicker);
+    };
+
+    this.openDatetimePicker = function(options) {
+      this.closeDatetimePicker();
+      var div = angular.element('<div datetime-picker-popup ng-cloak></div>');
+      options.dateFormat && div.attr('date-format', options.dateFormat);
+      options.ngModel  && div.attr('ng-model', options.ngModel);
+      options.year     && div.attr('year', parseInt(options.year));
+      options.month    && div.attr('month', parseInt(options.month));
+      options.day      && div.attr('day', parseInt(options.day));
+      options.hour     && div.attr('hour', parseInt(options.hour));
+      options.minute   && div.attr('minute', parseInt(options.minute));
+      if (options.dateOnly === '' || options.dateOnly === true) {
+        div.attr('date-only', 'true');
+      }
+      if (options.closeOnSelect === 'false') {
+        div.attr('close-on-select', 'false');
+      }
+
+      var triggerEl = options.triggerEl;
+      options.scope = options.scope || angular.element(triggerEl).scope();
+      datetimePickerEl = $compile(div)(options.scope)[0];
+      datetimePickerEl.triggerEl = options.triggerEl;
+
+      $document[0].body.appendChild(datetimePickerEl);
+
+      //show datetimePicker below triggerEl
+      var bcr = triggerEl.getBoundingClientRect();
+      datetimePickerEl.style.position='absolute';
+      datetimePickerEl.style.left= (bcr.left + window.scrollX) + 'px';
+
+      options.scope.$apply();
+
+      var datePickerElBcr = datetimePickerEl.getBoundingClientRect();
+
+      if (bcr.top < 300 || window.innerHeight - bcr.bottom > 300) {
+        datetimePickerEl.style.top = (bcr.bottom + window.scrollY) + 'px';
+      } else {
+        datetimePickerEl.style.top = (bcr.top - datePickerElBcr.height + window.scrollY) + 'px';
+      }
+
+      $document[0].body.addEventListener('click', this.closeDatetimePicker);
+    };
+
+    this.closeDatetimePicker = function(evt) {
+      var target = evt && evt.target;
+      var popupEl = $document[0].querySelector('div[datetime-picker-popup]');
+      if (evt && target) {
+        if (target.hasAttribute('datetime-picker')) {  // element with datetimePicker behaviour
+          // do nothing
+        } else if (popupEl && popupEl.contains(target)) { // datetimePicker itself
+          // do nothing
+        } else {
+          removeEl(popupEl);
+        }
+      } else {
+        removeEl(popupEl);
+      }
+    }
+  };
+  DatetimePickerCtrl.$inject = ['$compile', '$document'];
+  angular.module('angularjs-datetime-picker').controller('DatetimePickerCtrl', DatetimePickerCtrl);
+
+  var tmpl = [
+    '<div class="angularjs-datetime-picker">' ,
+    '  <div class="adp-month">',
+    '    <button type="button" class="adp-prev" ng-click="addMonth(-1)">&laquo;</button>',
+    '    <span title="{{months[mv.month].fullName}}">{{months[mv.month].shortName}}</span> {{mv.year}}',
+    '    <button type="button" class="adp-next" ng-click="addMonth(1)">&raquo;</button>',
+    '  </div>',
+    '  <div class="adp-days" ng-click="setDate($event)">',
+    '    <div class="adp-day-of-week" ng-repeat="dayOfWeek in ::daysOfWeek" title="{{dayOfWeek.fullName}}">{{::dayOfWeek.firstLetter}}</div>',
+    '    <div class="adp-day" ng-repeat="day in mv.leadingDays">{{::day}}</div>',
+    '    <div class="adp-day selectable" ng-repeat="day in mv.days" ',
+    '      ng-class="{selected: (day == selectedDay)}">{{::day}}</div>',
+    '    <div class="adp-day" ng-repeat="day in mv.trailingDays">{{::day}}</div>',
+    '  </div>',
+    '  <div class="adp-days" id="adp-time"> ',
+    '    Time : {{("0"+inputHour).slice(-2)}} : {{("0"+inputMinute).slice(-2)}} <br/>',
+    '    <label>Hour:</label> <input type="range" min="0" max="23" ng-model="inputHour" ng-change="updateNgModel()" />',
+    '    <label>Min.:</label> <input type="range" min="0" max="59" ng-model="inputMinute"  ng-change="updateNgModel()"/> ',
+    '  </div> ',
+    '</div>'].join("\n");
+
+  var datetimePickerPopup = function($locale, dateFilter){
+    var days, months, daysOfWeek, firstDayOfWeek;
+
+    var initVars = function() {
+      days =[], months=[]; daysOfWeek=[], firstDayOfWeek=0;
+      for (var i = 1; i <= 31; i++) {
+        days.push(i);
+      }
+
+      for (var i = 0; i < 12; i++) { //jshint ignore:line
+        months.push({
+          fullName: $locale.DATETIME_FORMATS.MONTH[i],
+          shortName: $locale.DATETIME_FORMATS.SHORTMONTH[i]
+        });
+      }
+
+      for (var i = 0; i < 7; i++) { //jshint ignore:line
+        var day = $locale.DATETIME_FORMATS.DAY[(i + firstDayOfWeek) % 7];
+
+        daysOfWeek.push({
+          fullName: day,
+          firstLetter: day.substr(0, 2)
+        });
+      }
+      firstDayOfWeek = $locale.DATETIME_FORMATS.FIRSTDAYOFWEEK || 0;
+    };
+
+    var getMonthView = function(year, month) {
+      if (month>11) {
+        year++;
+      } else if (month < 0) {
+        year--;
+      }
+      month = (month + 12) % 12;
+      var firstDayOfMonth = new Date(year, month, 1),
+        lastDayOfMonth = new Date(year, month + 1, 0),
+        lastDayOfPreviousMonth = new Date(year, month, 0),
+        daysInMonth = lastDayOfMonth.getDate(),
+        daysInLastMonth = lastDayOfPreviousMonth.getDate(),
+        dayOfWeek = firstDayOfMonth.getDay(),
+        leadingDays = (dayOfWeek - firstDayOfWeek + 7) % 7 || 7, // Ensure there are always leading days to give context
+        trailingDays = days.slice(0, 6 * 7 - (leadingDays + daysInMonth));
+      if (trailingDays.length > 7) {
+        trailingDays = trailingDays.slice(0, trailingDays.length-7);
+      }
+
+      return {
+        year: year,
+        month: month,
+        days: days.slice(0, daysInMonth),
+        leadingDays: days.slice(- leadingDays - (31 - daysInLastMonth), daysInLastMonth),
+        trailingDays: trailingDays
+      };
+    };
+
+    var linkFunc = function(scope, element, attrs, ctrl) { //jshint ignore:line
+      initVars(); //initialize days, months, daysOfWeek, and firstDayOfWeek;
+      var dateFormat = attrs.dateFormat || 'short';
+      scope.months = months;
+      scope.daysOfWeek = daysOfWeek;
+      scope.inputHour;
+      scope.inputMinute;
+
+      if (scope.dateOnly === true){
+        element[0].querySelector('#adp-time').style.display = 'none';
+      }
+
+      scope.$applyAsync( function() {
+        ctrl.triggerEl = angular.element(element[0].triggerEl);
+        if (attrs.ngModel) { // need to parse date string
+          var dateStr = ''+ctrl.triggerEl.scope().$eval(attrs.ngModel);
+          if (dateStr) {
+            if (!dateStr.match(/[0-9]{2}:/)) {  // if no time is given, add 00:00:00 at the end
+              dateStr += " 00:00:00";
+            }
+            dateStr = dateStr.replace(/([0-9]{2}-[0-9]{2})-([0-9]{4})/,'$2-$1');      //mm-dd-yyyy to yyyy-mm-dd
+            dateStr = dateStr.replace(/([\/-][0-9]{2,4})\ ([0-9]{2}\:[0-9]{2}\:)/,'$1T$2'); //reformat for FF
+            dateStr = dateStr.replace(/EDT|EST|CDT|CST|MDT|PDT|PST|UT|GMT/g,''); //remove timezone
+            dateStr = dateStr.replace(/\s*\(\)\s*/,'');                          //remove timezone
+            dateStr = dateStr.replace(/[\-\+][0-9]{2}:?[0-9]{2}$/,'');           //remove timezone
+            dateStr += getTimezoneOffset(dateStr);
+            var d = new Date(dateStr);
+            scope.selectedDate = new Date(
+              d.getFullYear(),
+              d.getMonth(),
+              d.getDate(),
+              d.getHours(),
+              d.getMinutes(),
+              d.getSeconds()
+            );
+          }
+        }
+
+        if (!scope.selectedDate || isNaN(scope.selectedDate.getTime())) { // no predefined date
+          var today = new Date();
+          var year = scope.year || today.getFullYear();
+          var month = scope.month ? (scope.month-1) : today.getMonth();
+          var day = scope.day || today.getDate();
+          var hour = scope.hour || today.getHours();
+          var minute = scope.minute || today.getMinutes();
+          scope.selectedDate = new Date(year, month, day, hour, minute, 0);
+        }
+        scope.inputHour   = scope.selectedDate.getHours();
+        scope.inputMinute = scope.selectedDate.getMinutes();
+
+        // Default to current year and month
+        scope.mv = getMonthView(scope.selectedDate.getFullYear(), scope.selectedDate.getMonth());
+        if (scope.mv.year == scope.selectedDate.getFullYear() && scope.mv.month == scope.selectedDate.getMonth()) {
+          scope.selectedDay = scope.selectedDate.getDate();
+        } else {
+          scope.selectedDay = null;
+        }
+      });
+
+      scope.addMonth = function (amount) {
+        scope.mv = getMonthView(scope.mv.year, scope.mv.month + amount);
+      };
+
+      scope.setDate = function (evt) {
+        var target = angular.element(evt.target)[0];
+        if (target.className.indexOf('selectable')) {
+          scope.updateNgModel(parseInt(target.innerHTML));
+          if (scope.closeOnSelect !== false) {
+            ctrl.closeDatetimePicker();
+          }
+        }
+      };
+
+      scope.updateNgModel = function(day) {
+        day = day ? day : scope.selectedDate.getDate();
+        scope.selectedDate = new Date(
+          scope.mv.year, scope.mv.month, day, scope.inputHour, scope.inputMinute, 0
+        );
+        scope.selectedDay = scope.selectedDate.getDate();
+        if (attrs.ngModel) {
+          //console.log('attrs.ngModel',attrs.ngModel);
+          var elScope = ctrl.triggerEl.scope(), dateValue;
+          if (elScope.$eval(attrs.ngModel) && elScope.$eval(attrs.ngModel).constructor.name === 'Date') {
+            dateValue = new Date(dateFilter(scope.selectedDate, dateFormat));
+          } else {
+            dateValue = dateFilter(scope.selectedDate, dateFormat);
+          }
+          elScope.$eval(attrs.ngModel + '= date', {date: dateValue});
+        }
+      };
+
+      scope.$on('$destroy', ctrl.closeDatetimePicker);
+    };
+
+    return {
+      restrict: 'A',
+      template: tmpl,
+      controller: 'DatetimePickerCtrl',
+      replace: true,
+      scope: {
+        year: '=',
+        month: '=',
+        day: '=',
+        hour: '=',
+        minute: '=',
+        dateOnly: '=',
+        closeOnSelect: '='
+      },
+      link: linkFunc
+    };
+  };
+  datetimePickerPopup.$inject = ['$locale', 'dateFilter'];
+  angular.module('angularjs-datetime-picker').directive('datetimePickerPopup', datetimePickerPopup);
+
+  var datetimePicker  = function($parse, DatetimePicker) {
+    return {
+      // An ngModel is required to get the controller argument
+      require: 'ngModel',
+      link: function(scope, element, attrs, ctrl) {
+        // Attach validation watcher
+        scope.$watch(attrs.ngModel, function(value) {
+          if( !value || value == '' ){
+            return;
+          }
+          // The value has already been cleaned by the above code
+          var date = new Date(value);
+          ctrl.$setValidity('date', !date? false : true);
+          var now = new Date();
+          if( attrs.hasOwnProperty('futureOnly') ){
+            ctrl.$setValidity('future-only', date < now? false : true);
+          }
+        });
+
+        element[0].addEventListener('click', function() {
+          DatetimePicker.open({
+            triggerEl: element[0],
+            dateFormat: attrs.dateFormat,
+            ngModel: attrs.ngModel,
+            year: attrs.year,
+            month: attrs.month,
+            day: attrs.day,
+            hour: attrs.hour,
+            minute: attrs.minute,
+            dateOnly: attrs.dateOnly,
+            futureOnly: attrs.futureOnly,
+            closeOnSelect: attrs.closeOnSelect
+          });
+        });
+      }
+    };
+  };
+  datetimePicker.$inject=['$parse', 'DatetimePicker'];
+  angular.module('angularjs-datetime-picker').directive('datetimePicker', datetimePicker);
+
+})();
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.min.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.min.js
new file mode 100644
index 0000000..bc6c19a
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/angularjs-datetime-picker/angularjs-datetime-picker.min.js
@@ -0,0 +1 @@
+!function(){"use strict";angular.module("angularjs-datetime-picker",[]);var e=function(e){"string"==typeof e&&(e=new Date(e));var t=new Date(e.getFullYear(),0,1),a=new Date(e.getFullYear(),6,1),n=Math.max(t.getTimezoneOffset(),a.getTimezoneOffset()),l=e.getTimezoneOffset()<n,r=l?n-60:n,i=r>=0?"-":"+";return i+("0"+r/60).slice(-2)+":"+("0"+r%60).slice(-2)},t=function(e,t,a){var n=a("DatetimePickerCtrl");return{open:function(e){n.openDatetimePicker(e)},close:function(){n.closeDatetimePicker()}}};t.$inject=["$compile","$document","$controller"],angular.module("angularjs-datetime-picker").factory("DatetimePicker",t);var a=function(e,t){var a,n=this,l=function(e){e&&e.remove(),t[0].body.removeEventListener("click",n.closeDatetimePicker)};this.openDatetimePicker=function(n){this.closeDatetimePicker();var l=angular.element("<div datetime-picker-popup ng-cloak></div>");n.dateFormat&&l.attr("date-format",n.dateFormat),n.ngModel&&l.attr("ng-model",n.ngModel),n.year&&l.attr("year",parseInt(n.year)),n.month&&l.attr("month",parseInt(n.month)),n.day&&l.attr("day",parseInt(n.day)),n.hour&&l.attr("hour",parseInt(n.hour)),n.minute&&l.attr("minute",parseInt(n.minute)),(""===n.dateOnly||n.dateOnly===!0)&&l.attr("date-only","true"),"false"===n.closeOnSelect&&l.attr("close-on-select","false");var r=n.triggerEl;n.scope=n.scope||angular.element(r).scope(),a=e(l)(n.scope)[0],a.triggerEl=n.triggerEl,t[0].body.appendChild(a);var i=r.getBoundingClientRect();a.style.position="absolute",a.style.left=i.left+window.scrollX+"px",n.scope.$apply();var o=a.getBoundingClientRect();a.style.top=i.top<300||window.innerHeight-i.bottom>300?i.bottom+window.scrollY+"px":i.top-o.height+window.scrollY+"px",t[0].body.addEventListener("click",this.closeDatetimePicker)},this.closeDatetimePicker=function(e){var a=e&&e.target,n=t[0].querySelector("div[datetime-picker-popup]");e&&a?a.hasAttribute("datetime-picker")||n&&n.contains(a)||l(n):l(n)}};a.$inject=["$compile","$document"],angular.module("angularjs-datetime-picker").controller("DatetimePickerCtrl",a);var n=['<div class="angularjs-datetime-picker">','  <div class="adp-month">','    <button type="button" class="adp-prev" ng-click="addMonth(-1)">&laquo;</button>','    <span title="{{months[mv.month].fullName}}">{{months[mv.month].shortName}}</span> {{mv.year}}','    <button type="button" class="adp-next" ng-click="addMonth(1)">&raquo;</button>',"  </div>",'  <div class="adp-days" ng-click="setDate($event)">','    <div class="adp-day-of-week" ng-repeat="dayOfWeek in ::daysOfWeek" title="{{dayOfWeek.fullName}}">{{::dayOfWeek.firstLetter}}</div>','    <div class="adp-day" ng-repeat="day in mv.leadingDays">{{::day}}</div>','    <div class="adp-day selectable" ng-repeat="day in mv.days" ','      ng-class="{selected: (day == selectedDay)}">{{::day}}</div>','    <div class="adp-day" ng-repeat="day in mv.trailingDays">{{::day}}</div>',"  </div>",'  <div class="adp-days" id="adp-time"> ','    Time : {{("0"+inputHour).slice(-2)}} : {{("0"+inputMinute).slice(-2)}} <br/>','    <label>Hour:</label> <input type="range" min="0" max="23" ng-model="inputHour" ng-change="updateNgModel()" />','    <label>Min.:</label> <input type="range" min="0" max="59" ng-model="inputMinute"  ng-change="updateNgModel()"/> ',"  </div> ","</div>"].join("\n"),l=function(t,a){var l,r,i,o,c=function(){l=[],r=[],i=[],o=0;for(var e=1;31>=e;e++)l.push(e);for(var e=0;12>e;e++)r.push({fullName:t.DATETIME_FORMATS.MONTH[e],shortName:t.DATETIME_FORMATS.SHORTMONTH[e]});for(var e=0;7>e;e++){var a=t.DATETIME_FORMATS.DAY[(e+o)%7];i.push({fullName:a,firstLetter:a.substr(0,2)})}o=t.DATETIME_FORMATS.FIRSTDAYOFWEEK||0},d=function(e,t){t>11?e++:0>t&&e--,t=(t+12)%12;var a=new Date(e,t,1),n=new Date(e,t+1,0),r=new Date(e,t,0),i=n.getDate(),c=r.getDate(),d=a.getDay(),s=(d-o+7)%7||7,u=l.slice(0,42-(s+i));return u.length>7&&(u=u.slice(0,u.length-7)),{year:e,month:t,days:l.slice(0,i),leadingDays:l.slice(-s-(31-c),c),trailingDays:u}},s=function(t,n,l,o){c();var s=l.dateFormat||"short";t.months=r,t.daysOfWeek=i,t.inputHour,t.inputMinute,t.dateOnly===!0&&(n[0].querySelector("#adp-time").style.display="none"),t.$applyAsync(function(){if(o.triggerEl=angular.element(n[0].triggerEl),l.ngModel){var a=""+o.triggerEl.scope().$eval(l.ngModel);if(a){a.match(/[0-9]{2}:/)||(a+=" 00:00:00"),a=a.replace(/([0-9]{2}-[0-9]{2})-([0-9]{4})/,"$2-$1"),a=a.replace(/([\/-][0-9]{2,4})\ ([0-9]{2}\:[0-9]{2}\:)/,"$1T$2"),a=a.replace(/EDT|EST|CDT|CST|MDT|PDT|PST|UT|GMT/g,""),a=a.replace(/\s*\(\)\s*/,""),a=a.replace(/[\-\+][0-9]{2}:?[0-9]{2}$/,""),a+=e(a);var r=new Date(a);t.selectedDate=new Date(r.getFullYear(),r.getMonth(),r.getDate(),r.getHours(),r.getMinutes(),r.getSeconds())}}if(!t.selectedDate||isNaN(t.selectedDate.getTime())){var i=new Date,c=t.year||i.getFullYear(),s=t.month?t.month-1:i.getMonth(),u=t.day||i.getDate(),m=t.hour||i.getHours(),g=t.minute||i.getMinutes();t.selectedDate=new Date(c,s,u,m,g,0)}t.inputHour=t.selectedDate.getHours(),t.inputMinute=t.selectedDate.getMinutes(),t.mv=d(t.selectedDate.getFullYear(),t.selectedDate.getMonth()),t.selectedDay=t.mv.year==t.selectedDate.getFullYear()&&t.mv.month==t.selectedDate.getMonth()?t.selectedDate.getDate():null}),t.addMonth=function(e){t.mv=d(t.mv.year,t.mv.month+e)},t.setDate=function(e){var a=angular.element(e.target)[0];a.className.indexOf("selectable")&&(t.updateNgModel(parseInt(a.innerHTML)),t.closeOnSelect!==!1&&o.closeDatetimePicker())},t.updateNgModel=function(e){if(e=e?e:t.selectedDate.getDate(),t.selectedDate=new Date(t.mv.year,t.mv.month,e,t.inputHour,t.inputMinute,0),t.selectedDay=t.selectedDate.getDate(),l.ngModel){var n,r=o.triggerEl.scope();n=r.$eval(l.ngModel)&&"Date"===r.$eval(l.ngModel).constructor.name?new Date(a(t.selectedDate,s)):a(t.selectedDate,s),r.$eval(l.ngModel+"= date",{date:n})}},t.$on("$destroy",o.closeDatetimePicker)};return{restrict:"A",template:n,controller:"DatetimePickerCtrl",replace:!0,scope:{year:"=",month:"=",day:"=",hour:"=",minute:"=",dateOnly:"=",closeOnSelect:"="},link:s}};l.$inject=["$locale","dateFilter"],angular.module("angularjs-datetime-picker").directive("datetimePickerPopup",l);var r=function(e,t){return{require:"ngModel",link:function(e,a,n,l){e.$watch(n.ngModel,function(e){if(e&&""!=e){var t=new Date(e);l.$setValidity("date",t?!0:!1);var a=new Date;n.hasOwnProperty("futureOnly")&&l.$setValidity("future-only",a>t?!1:!0)}}),a[0].addEventListener("click",function(){t.open({triggerEl:a[0],dateFormat:n.dateFormat,ngModel:n.ngModel,year:n.year,month:n.month,day:n.day,hour:n.hour,minute:n.minute,dateOnly:n.dateOnly,futureOnly:n.futureOnly,closeOnSelect:n.closeOnSelect})})}}};r.$inject=["$parse","DatetimePicker"],angular.module("angularjs-datetime-picker").directive("datetimePicker",r)}();
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/bootstrap-3.3.7/package.json b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/bootstrap-3.3.7/package.json
new file mode 100644
index 0000000..fe4b31d
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/bootstrap-3.3.7/package.json
@@ -0,0 +1,89 @@
+{
+  "name": "bootstrap",
+  "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
+  "version": "3.3.7",
+  "keywords": [
+    "css",
+    "less",
+    "mobile-first",
+    "responsive",
+    "front-end",
+    "framework",
+    "web"
+  ],
+  "homepage": "http://getbootstrap.com",
+  "author": "Twitter, Inc.",
+  "scripts": {
+    "change-version": "node grunt/change-version.js",
+    "update-shrinkwrap": "npm shrinkwrap --dev && shx mv ./npm-shrinkwrap.json ./grunt/npm-shrinkwrap.json",
+    "test": "grunt test"
+  },
+  "style": "dist/css/bootstrap.css",
+  "less": "less/bootstrap.less",
+  "main": "./dist/js/npm",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/twbs/bootstrap.git"
+  },
+  "bugs": {
+    "url": "https://github.com/twbs/bootstrap/issues"
+  },
+  "license": "MIT",
+  "devDependencies": {
+    "btoa": "~1.1.2",
+    "glob": "~7.0.3",
+    "grunt": "~1.0.1",
+    "grunt-autoprefixer": "~3.0.4",
+    "grunt-contrib-clean": "~1.0.0",
+    "grunt-contrib-compress": "~1.3.0",
+    "grunt-contrib-concat": "~1.0.0",
+    "grunt-contrib-connect": "~1.0.0",
+    "grunt-contrib-copy": "~1.0.0",
+    "grunt-contrib-csslint": "~1.0.0",
+    "grunt-contrib-cssmin": "~1.0.0",
+    "grunt-contrib-htmlmin": "~1.5.0",
+    "grunt-contrib-jshint": "~1.0.0",
+    "grunt-contrib-less": "~1.3.0",
+    "grunt-contrib-pug": "~1.0.0",
+    "grunt-contrib-qunit": "~0.7.0",
+    "grunt-contrib-uglify": "~1.0.0",
+    "grunt-contrib-watch": "~1.0.0",
+    "grunt-csscomb": "~3.1.0",
+    "grunt-exec": "~1.0.0",
+    "grunt-html": "~8.0.1",
+    "grunt-jekyll": "~0.4.4",
+    "grunt-jscs": "~3.0.1",
+    "grunt-saucelabs": "~9.0.0",
+    "load-grunt-tasks": "~3.5.0",
+    "markdown-it": "^7.0.0",
+    "shelljs": "^0.7.0",
+    "shx": "^0.1.2",
+    "time-grunt": "^1.3.0"
+  },
+  "engines": {
+    "node": ">=0.10.1"
+  },
+  "files": [
+    "dist",
+    "fonts",
+    "grunt",
+    "js/*.js",
+    "less/**/*.less",
+    "Gruntfile.js",
+    "LICENSE"
+  ],
+  "jspm": {
+    "main": "js/bootstrap",
+    "shim": {
+      "js/bootstrap": {
+        "deps": "jquery",
+        "exports": "$"
+      }
+    },
+    "files": [
+      "css",
+      "fonts",
+      "js"
+    ]
+  }
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/jquery.min.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/jquery.min.js
new file mode 100644
index 0000000..4d9b3a2
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/jquery.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-csv/build/ng-csv.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-csv/build/ng-csv.js
new file mode 100644
index 0000000..80432ec
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-csv/build/ng-csv.js
@@ -0,0 +1,319 @@
+(function(window, document) {
+
+// Create all modules and define dependencies to make sure they exist
+// and are loaded in the correct order to satisfy dependency injection
+// before all nested files are concatenated by Grunt
+
+// Config
+angular.module('ngCsv.config', []).
+  value('ngCsv.config', {
+      debug: true
+  }).
+  config(['$compileProvider', function($compileProvider){
+    if (angular.isDefined($compileProvider.urlSanitizationWhitelist)) {
+      $compileProvider.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/);
+    } else {
+      $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/);
+    }
+  }]);
+
+// Modules
+angular.module('ngCsv.directives', ['ngCsv.services']);
+angular.module('ngCsv.services', []);
+angular.module('ngCsv',
+    [
+        'ngCsv.config',
+        'ngCsv.services',
+        'ngCsv.directives',
+        'ngSanitize'
+    ]);
+
+// Common.js package manager support (e.g. ComponentJS, WebPack)
+if (typeof module !== 'undefined' && typeof exports !== 'undefined' && module.exports === exports) {
+  module.exports = 'ngCsv';
+}
+/**
+ * Created by asafdav on 15/05/14.
+ */
+angular.module('ngCsv.services').
+  service('CSV', ['$q', function ($q) {
+
+    var EOL = '\r\n';
+    var BOM = "\ufeff";
+
+    var specialChars = {
+      '\\t': '\t',
+      '\\b': '\b',
+      '\\v': '\v',
+      '\\f': '\f',
+      '\\r': '\r'
+    };
+
+    /**
+     * Stringify one field
+     * @param data
+     * @param options
+     * @returns {*}
+     */
+    this.stringifyField = function (data, options) {
+      if (options.decimalSep === 'locale' && this.isFloat(data)) {
+        return data.toLocaleString();
+      }
+
+      if (options.decimalSep !== '.' && this.isFloat(data)) {
+        return data.toString().replace('.', options.decimalSep);
+      }
+
+      if (typeof data === 'string') {
+        data = data.replace(/"/g, '""'); // Escape double qoutes
+
+        if (options.quoteStrings || data.indexOf(',') > -1 || data.indexOf('\n') > -1 || data.indexOf('\r') > -1) {
+            data = options.txtDelim + data + options.txtDelim;
+        }
+
+        return data;
+      }
+
+      if (typeof data === 'boolean') {
+        return data ? 'TRUE' : 'FALSE';
+      }
+
+      return data;
+    };
+
+    /**
+     * Helper function to check if input is float
+     * @param input
+     * @returns {boolean}
+     */
+    this.isFloat = function (input) {
+      return +input === input && (!isFinite(input) || Boolean(input % 1));
+    };
+
+    /**
+     * Creates a csv from a data array
+     * @param data
+     * @param options
+     *  * header - Provide the first row (optional)
+     *  * fieldSep - Field separator, default: ',',
+     *  * addByteOrderMarker - Add Byte order mark, default(false)
+     * @param callback
+     */
+    this.stringify = function (data, options) {
+      var def = $q.defer();
+
+      var that = this;
+      var csv = "";
+      var csvContent = "";
+
+      var dataPromise = $q.when(data).then(function (responseData) {
+        //responseData = angular.copy(responseData);//moved to row creation
+        // Check if there's a provided header array
+        if (angular.isDefined(options.header) && options.header) {
+          var encodingArray, headerString;
+
+          encodingArray = [];
+          angular.forEach(options.header, function (title, key) {
+            this.push(that.stringifyField(title, options));
+          }, encodingArray);
+
+          headerString = encodingArray.join(options.fieldSep ? options.fieldSep : ",");
+          csvContent += headerString + EOL;
+        }
+
+        var arrData = [];
+
+        if (angular.isArray(responseData)) {
+          arrData = responseData;
+        }
+        else if (angular.isFunction(responseData)) {
+          arrData = responseData();
+        }
+
+        // Check if using keys as labels
+        if (angular.isDefined(options.label) && options.label && typeof options.label === 'boolean') {
+            var labelArray, labelString;
+
+            labelArray = [];
+            angular.forEach(arrData[0], function(value, label) {
+                this.push(that.stringifyField(label, options));
+            }, labelArray);
+            labelString = labelArray.join(options.fieldSep ? options.fieldSep : ",");
+            csvContent += labelString + EOL;
+        }
+
+        angular.forEach(arrData, function (oldRow, index) {
+          var row = angular.copy(arrData[index]);
+          var dataString, infoArray;
+
+          infoArray = [];
+
+          var iterator = !!options.columnOrder ? options.columnOrder : row;
+          angular.forEach(iterator, function (field, key) {
+            var val = !!options.columnOrder ? row[field] : field;
+            this.push(that.stringifyField(val, options));
+          }, infoArray);
+
+          dataString = infoArray.join(options.fieldSep ? options.fieldSep : ",");
+          csvContent += index < arrData.length ? dataString + EOL : dataString;
+        });
+
+        // Add BOM if needed
+        if (options.addByteOrderMarker) {
+          csv += BOM;
+        }
+
+        // Append the content and resolve.
+        csv += csvContent;
+        def.resolve(csv);
+      });
+
+      if (typeof dataPromise['catch'] === 'function') {
+        dataPromise['catch'](function (err) {
+          def.reject(err);
+        });
+      }
+
+      return def.promise;
+    };
+
+    /**
+     * Helper function to check if input is really a special character
+     * @param input
+     * @returns {boolean}
+     */
+    this.isSpecialChar = function(input){
+      return specialChars[input] !== undefined;
+    };
+
+    /**
+     * Helper function to get what the special character was supposed to be
+     * since Angular escapes the first backslash
+     * @param input
+     * @returns {special character string}
+     */
+    this.getSpecialChar = function (input) {
+      return specialChars[input];
+    };
+
+
+  }]);
+/**
+ * ng-csv module
+ * Export Javascript's arrays to csv files from the browser
+ *
+ * Author: asafdav - https://github.com/asafdav
+ */
+angular.module('ngCsv.directives').
+  directive('ngCsv', ['$parse', '$q', 'CSV', '$document', '$timeout', function ($parse, $q, CSV, $document, $timeout) {
+    return {
+      restrict: 'AC',
+      scope: {
+        data: '&ngCsv',
+        filename: '@filename',
+        header: '&csvHeader',
+        columnOrder: '&csvColumnOrder',
+        txtDelim: '@textDelimiter',
+        decimalSep: '@decimalSeparator',
+        quoteStrings: '@quoteStrings',
+        fieldSep: '@fieldSeparator',
+        lazyLoad: '@lazyLoad',
+        addByteOrderMarker: "@addBom",
+        ngClick: '&',
+        charset: '@charset',
+        label: '&csvLabel'
+      },
+      controller: [
+        '$scope',
+        '$element',
+        '$attrs',
+        '$transclude',
+        function ($scope, $element, $attrs, $transclude) {
+          $scope.csv = '';
+
+          if (!angular.isDefined($scope.lazyLoad) || $scope.lazyLoad != "true") {
+            if (angular.isArray($scope.data)) {
+              $scope.$watch("data", function (newValue) {
+                $scope.buildCSV();
+              }, true);
+            }
+          }
+
+          $scope.getFilename = function () {
+            return $scope.filename || 'download.csv';
+          };
+
+          function getBuildCsvOptions() {
+            var options = {
+              txtDelim: $scope.txtDelim ? $scope.txtDelim : '"',
+              decimalSep: $scope.decimalSep ? $scope.decimalSep : '.',
+              quoteStrings: $scope.quoteStrings,
+              addByteOrderMarker: $scope.addByteOrderMarker
+            };
+            if (angular.isDefined($attrs.csvHeader)) options.header = $scope.$eval($scope.header);
+            if (angular.isDefined($attrs.csvColumnOrder)) options.columnOrder = $scope.$eval($scope.columnOrder);
+            if (angular.isDefined($attrs.csvLabel)) options.label = $scope.$eval($scope.label);
+
+            options.fieldSep = $scope.fieldSep ? $scope.fieldSep : ",";
+
+            // Replaces any badly formatted special character string with correct special character
+            options.fieldSep = CSV.isSpecialChar(options.fieldSep) ? CSV.getSpecialChar(options.fieldSep) : options.fieldSep;
+
+            return options;
+          }
+
+          /**
+           * Creates the CSV and updates the scope
+           * @returns {*}
+           */
+          $scope.buildCSV = function () {
+            var deferred = $q.defer();
+
+            $element.addClass($attrs.ngCsvLoadingClass || 'ng-csv-loading');
+
+            CSV.stringify($scope.data(), getBuildCsvOptions()).then(function (csv) {
+              $scope.csv = csv;
+              $element.removeClass($attrs.ngCsvLoadingClass || 'ng-csv-loading');
+              deferred.resolve(csv);
+            });
+            $scope.$apply(); // Old angular support
+
+            return deferred.promise;
+          };
+        }
+      ],
+      link: function (scope, element, attrs) {
+        function doClick() {
+          var charset = scope.charset || "utf-8";
+          var blob = new Blob([scope.csv], {
+            type: "text/csv;charset="+ charset + ";"
+          });
+
+          if (window.navigator.msSaveOrOpenBlob) {
+            navigator.msSaveBlob(blob, scope.getFilename());
+          } else {
+
+            var downloadContainer = angular.element('<div data-tap-disabled="true"><a></a></div>');
+            var downloadLink = angular.element(downloadContainer.children()[0]);
+            downloadLink.attr('href', window.URL.createObjectURL(blob));
+            downloadLink.attr('download', scope.getFilename());
+            downloadLink.attr('target', '_blank');
+
+            $document.find('body').append(downloadContainer);
+            $timeout(function () {
+              downloadLink[0].click();
+              downloadLink.remove();
+            }, null);
+          }
+        }
+
+        element.bind('click', function (e) {
+          scope.buildCSV().then(function (csv) {
+            doClick();
+          });
+          scope.$apply();
+        });
+      }
+    };
+  }]);
+})(window, document);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-csv/build/ng-csv.min.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-csv/build/ng-csv.min.js
new file mode 100644
index 0000000..94dcd7f
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-csv/build/ng-csv.min.js
@@ -0,0 +1,2 @@
+/*! ng-csv 10-10-2015 */
+!function(a){angular.module("ngCsv.config",[]).value("ngCsv.config",{debug:!0}).config(["$compileProvider",function(a){angular.isDefined(a.urlSanitizationWhitelist)?a.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/):a.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)}]),angular.module("ngCsv.directives",["ngCsv.services"]),angular.module("ngCsv.services",[]),angular.module("ngCsv",["ngCsv.config","ngCsv.services","ngCsv.directives","ngSanitize"]),"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports="ngCsv"),angular.module("ngCsv.services").service("CSV",["$q",function(a){var b="\r\n",c="",d={"\\t":"	","\\b":"\b","\\v":"","\\f":"\f","\\r":"\r"};this.stringifyField=function(a,b){return"locale"===b.decimalSep&&this.isFloat(a)?a.toLocaleString():"."!==b.decimalSep&&this.isFloat(a)?a.toString().replace(".",b.decimalSep):"string"==typeof a?(a=a.replace(/"/g,'""'),(b.quoteStrings||a.indexOf(",")>-1||a.indexOf("\n")>-1||a.indexOf("\r")>-1)&&(a=b.txtDelim+a+b.txtDelim),a):"boolean"==typeof a?a?"TRUE":"FALSE":a},this.isFloat=function(a){return+a===a&&(!isFinite(a)||Boolean(a%1))},this.stringify=function(d,e){var f=a.defer(),g=this,h="",i="",j=a.when(d).then(function(a){if(angular.isDefined(e.header)&&e.header){var d,j;d=[],angular.forEach(e.header,function(a){this.push(g.stringifyField(a,e))},d),j=d.join(e.fieldSep?e.fieldSep:","),i+=j+b}var k=[];if(angular.isArray(a)?k=a:angular.isFunction(a)&&(k=a()),angular.isDefined(e.label)&&e.label&&"boolean"==typeof e.label){var l,m;l=[],angular.forEach(k[0],function(a,b){this.push(g.stringifyField(b,e))},l),m=l.join(e.fieldSep?e.fieldSep:","),i+=m+b}angular.forEach(k,function(a,c){var d,f,h=angular.copy(k[c]);f=[];var j=e.columnOrder?e.columnOrder:h;angular.forEach(j,function(a){var b=e.columnOrder?h[a]:a;this.push(g.stringifyField(b,e))},f),d=f.join(e.fieldSep?e.fieldSep:","),i+=c<k.length?d+b:d}),e.addByteOrderMarker&&(h+=c),h+=i,f.resolve(h)});return"function"==typeof j["catch"]&&j["catch"](function(a){f.reject(a)}),f.promise},this.isSpecialChar=function(a){return void 0!==d[a]},this.getSpecialChar=function(a){return d[a]}}]),angular.module("ngCsv.directives").directive("ngCsv",["$parse","$q","CSV","$document","$timeout",function(b,c,d,e,f){return{restrict:"AC",scope:{data:"&ngCsv",filename:"@filename",header:"&csvHeader",columnOrder:"&csvColumnOrder",txtDelim:"@textDelimiter",decimalSep:"@decimalSeparator",quoteStrings:"@quoteStrings",fieldSep:"@fieldSeparator",lazyLoad:"@lazyLoad",addByteOrderMarker:"@addBom",ngClick:"&",charset:"@charset",label:"&csvLabel"},controller:["$scope","$element","$attrs","$transclude",function(a,b,e){function f(){var b={txtDelim:a.txtDelim?a.txtDelim:'"',decimalSep:a.decimalSep?a.decimalSep:".",quoteStrings:a.quoteStrings,addByteOrderMarker:a.addByteOrderMarker};return angular.isDefined(e.csvHeader)&&(b.header=a.$eval(a.header)),angular.isDefined(e.csvColumnOrder)&&(b.columnOrder=a.$eval(a.columnOrder)),angular.isDefined(e.csvLabel)&&(b.label=a.$eval(a.label)),b.fieldSep=a.fieldSep?a.fieldSep:",",b.fieldSep=d.isSpecialChar(b.fieldSep)?d.getSpecialChar(b.fieldSep):b.fieldSep,b}a.csv="",angular.isDefined(a.lazyLoad)&&"true"==a.lazyLoad||angular.isArray(a.data)&&a.$watch("data",function(){a.buildCSV()},!0),a.getFilename=function(){return a.filename||"download.csv"},a.buildCSV=function(){var g=c.defer();return b.addClass(e.ngCsvLoadingClass||"ng-csv-loading"),d.stringify(a.data(),f()).then(function(c){a.csv=c,b.removeClass(e.ngCsvLoadingClass||"ng-csv-loading"),g.resolve(c)}),a.$apply(),g.promise}}],link:function(b,c){function d(){var c=b.charset||"utf-8",d=new Blob([b.csv],{type:"text/csv;charset="+c+";"});if(a.navigator.msSaveOrOpenBlob)navigator.msSaveBlob(d,b.getFilename());else{var g=angular.element('<div data-tap-disabled="true"><a></a></div>'),h=angular.element(g.children()[0]);h.attr("href",a.URL.createObjectURL(d)),h.attr("download",b.getFilename()),h.attr("target","_blank"),e.find("body").append(g),f(function(){h[0].click(),h.remove()},null)}}c.bind("click",function(){b.buildCSV().then(function(){d()}),b.$apply()})}}}])}(window,document);
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.min.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.min.js
new file mode 100644
index 0000000..fa1a020
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.min.js
@@ -0,0 +1 @@
+!function(){"use strict";angular.module("ng-ip-address",[]).directive("ngIpAddress",function(){return{restrict:"A",require:"?ngModel",scope:{config:"=?ngIpConfig"},link:function(e,i,n,r){function t(e){return!isNaN(parseFloat(e))&&isFinite(e)}if(r){var l=!1,c=!1,s=new RegExp("^0","g"),a=new RegExp("^\\.","g"),o=new RegExp("\\.\\.+","g"),h=new RegExp(":","g"),u=new RegExp("^:","g"),p=0,w=!1;e.$watchCollection("config",function(e){e?(c="boolean"==typeof e.requirePort&&e.requirePort,l=c||"boolean"==typeof e.allowPort&&e.allowPort):(l=!1,c=!1),l||!r.$viewValue?r.$parsers[0](r.$viewValue):r.$setViewValue(r.$viewValue.replace(h,""))}),i.bind("keydown",function(e){17!==e.which&&91!==e.which||(w=!0)}),i.bind("keyup",function(e){17!==e.which&&91!==e.which||(w=!1)}),i.bind("keypress",function(e){(e.which<46&&0!==e.which&&8!==e.which&&13!==e.which||47===e.which||58===e.which&&!l||e.which>58&&(!w||99!==e.which&&118!==e.which&&120!==e.which))&&e.preventDefault()}),r.$parsers.push(function(e){if(!e)return r.$setValidity("ipAddress",!0),e;p=i[0].selectionStart;var n=!0,w=null,g=(e=(e=e.replace(a,"")).replace(o,".")).split("."),f=g.length;f<4?n=!1:f>4&&(g.length=4,f=4);for(var d=0;d<f;d++){var $=g[d];if(l)if(d<3)$=$.replace(h,"");else if(-1!==($=$.replace(u,"")).indexOf(":")){var v=$.split(":");$=v[0],(!(w=v[1].replace(s,"").substring(0,5))||!t($)||w>65535)&&(n=!1)}else c&&(n=!1);$.length>1?(!t($=$.replace(s,"").substring(0,3))||$>255)&&(n=!1):$||(n=!1),g[d]=$}return e=g.join("."),null!==w&&(e+=":"+w),r.$setValidity("ipAddress",n),r.$setViewValue(e),r.$render(),i[0].setSelectionRange(p,p),e})}}}})}();
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.vanilla.min.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.vanilla.min.js
new file mode 100644
index 0000000..5c1f0dd
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-ip-address/ngIpAddress.vanilla.min.js
@@ -0,0 +1 @@
+!function(){"use strict";angular.module("ng-ip-address",[]).directive("ngIpAddress",function(){return{restrict:"A",require:"?ngModel",link:function(e,i,n,r){function t(e){return!isNaN(parseFloat(e))&&isFinite(e)}if(r){var h=new RegExp("^0","g"),c=new RegExp("^\\.","g"),s=new RegExp("\\.\\.+","g"),u=0,a=!1;i.bind("keydown",function(e){17!==e.which&&91!==e.which||(a=!0)}),i.bind("keyup",function(e){17!==e.which&&91!==e.which||(a=!1)}),i.bind("keypress",function(e){(e.which<46&&0!==e.which&&8!==e.which&&13!==e.which||47===e.which||e.which>57&&(!a||99!==e.which&&118!==e.which&&120!==e.which))&&e.preventDefault()}),r.$parsers.push(function(e){if(!e)return r.$setValidity("ipAddress",!0),e;u=i[0].selectionStart;var n=!0,a=(e=(e=e.replace(c,"")).replace(s,".")).split("."),d=a.length;d<4?n=!1:d>4&&(a.length=4,d=4);for(var l=0;l<d;l++){var w=a[l];w.length>1?(!t(w=w.replace(h,"").substring(0,3))||w>255)&&(n=!1):w||(n=!1),a[l]=w}return e=a.join("."),r.$setValidity("ipAddress",n),r.$setViewValue(e),r.$render(),i[0].setSelectionRange(u,u),e})}}}})}();
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-ip-address/package.json b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-ip-address/package.json
new file mode 100644
index 0000000..87f59cb
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/ng-ip-address/package.json
@@ -0,0 +1,67 @@
+{
+  "_from": "ng-ip-address",
+  "_id": "ng-ip-address@1.1.12",
+  "_inBundle": false,
+  "_integrity": "sha1-reynz2xY/ZSD8FLv30DF+2UMYrg=",
+  "_location": "/ng-ip-address",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "tag",
+    "registry": true,
+    "raw": "ng-ip-address",
+    "name": "ng-ip-address",
+    "escapedName": "ng-ip-address",
+    "rawSpec": "",
+    "saveSpec": null,
+    "fetchSpec": "latest"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/ng-ip-address/-/ng-ip-address-1.1.12.tgz",
+  "_shasum": "adeca7cf6c58fd9483f052efdf40c5fb650c62b8",
+  "_spec": "ng-ip-address",
+  "_where": "D:\\routing",
+  "author": {
+    "name": "Scott Gullen"
+  },
+  "bugs": {
+    "url": "https://github.com/CautemocSg/ng-ip-address/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "AngularJS directive that will validate an IP address and impose relevant character and structure limits",
+  "devDependencies": {
+    "gulp": "^3.9.1",
+    "gulp-rename": "^1.2.2",
+    "gulp-uglify": "^3.0.0",
+    "jasmine-core": "^2.6.4",
+    "karma": "^1.7.0",
+    "karma-jasmine": "^1.1.0",
+    "karma-phantomjs-launcher": "^1.0.4",
+    "phantomjs-prebuilt": "^2.1.14"
+  },
+  "homepage": "https://github.com/CautemocSg/ng-ip-address#readme",
+  "keywords": [
+    "angular",
+    "angularjs",
+    "directive",
+    "ip address",
+    "form",
+    "input",
+    "validation"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "ng-ip-address",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/CautemocSg/ng-ip-address.git"
+  },
+  "scripts": {
+    "build": "gulp default",
+    "test": "gulp test"
+  },
+  "version": "1.1.12"
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/tether.min.js b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/tether.min.js
new file mode 100644
index 0000000..bd608c0
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/node_modules/tether.min.js
@@ -0,0 +1 @@
+!function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e(require,exports,module):t.Tether=e()}(this,function(t,e,o){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t){var e=t.getBoundingClientRect(),o={};for(var i in e)o[i]=e[i];if(t.ownerDocument!==document){var r=t.ownerDocument.defaultView.frameElement;if(r){var s=n(r);o.top+=s.top,o.bottom+=s.top,o.left+=s.left,o.right+=s.left}}return o}function r(t){var e=getComputedStyle(t)||{},o=e.position,i=[];if("fixed"===o)return[t];for(var n=t;(n=n.parentNode)&&n&&1===n.nodeType;){var r=void 0;try{r=getComputedStyle(n)}catch(s){}if("undefined"==typeof r||null===r)return i.push(n),i;var a=r,f=a.overflow,l=a.overflowX,h=a.overflowY;/(auto|scroll|overlay)/.test(f+h+l)&&("absolute"!==o||["relative","absolute","fixed"].indexOf(r.position)>=0)&&i.push(n)}return i.push(t.ownerDocument.body),t.ownerDocument!==document&&i.push(t.ownerDocument.defaultView),i}function s(){A&&document.body.removeChild(A),A=null}function a(t){var e=void 0;t===document?(e=document,t=document.documentElement):e=t.ownerDocument;var o=e.documentElement,i=n(t),r=P();return i.top-=r.top,i.left-=r.left,"undefined"==typeof i.width&&(i.width=document.body.scrollWidth-i.left-i.right),"undefined"==typeof i.height&&(i.height=document.body.scrollHeight-i.top-i.bottom),i.top=i.top-o.clientTop,i.left=i.left-o.clientLeft,i.right=e.body.clientWidth-i.width-i.left,i.bottom=e.body.clientHeight-i.height-i.top,i}function f(t){return t.offsetParent||document.documentElement}function l(){if(M)return M;var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");h(e.style,{position:"absolute",top:0,left:0,pointerEvents:"none",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),e.appendChild(t),document.body.appendChild(e);var o=t.offsetWidth;e.style.overflow="scroll";var i=t.offsetWidth;o===i&&(i=e.clientWidth),document.body.removeChild(e);var n=o-i;return M={width:n,height:n}}function h(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=[];return Array.prototype.push.apply(e,arguments),e.slice(1).forEach(function(e){if(e)for(var o in e)({}).hasOwnProperty.call(e,o)&&(t[o]=e[o])}),t}function d(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.remove(e)});else{var o=new RegExp("(^| )"+e.split(" ").join("|")+"( |$)","gi"),i=c(t).replace(o," ");g(t,i)}}function p(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.add(e)});else{d(t,e);var o=c(t)+(" "+e);g(t,o)}}function u(t,e){if("undefined"!=typeof t.classList)return t.classList.contains(e);var o=c(t);return new RegExp("(^| )"+e+"( |$)","gi").test(o)}function c(t){return t.className instanceof t.ownerDocument.defaultView.SVGAnimatedString?t.className.baseVal:t.className}function g(t,e){t.setAttribute("class",e)}function m(t,e,o){o.forEach(function(o){e.indexOf(o)===-1&&u(t,o)&&d(t,o)}),e.forEach(function(e){u(t,e)||p(t,e)})}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function y(t,e){var o=arguments.length<=2||void 0===arguments[2]?1:arguments[2];return t+o>=e&&e>=t-o}function b(){return"object"==typeof performance&&"function"==typeof performance.now?performance.now():+new Date}function w(){for(var t={top:0,left:0},e=arguments.length,o=Array(e),i=0;i<e;i++)o[i]=arguments[i];return o.forEach(function(e){var o=e.top,i=e.left;"string"==typeof o&&(o=parseFloat(o,10)),"string"==typeof i&&(i=parseFloat(i,10)),t.top+=o,t.left+=i}),t}function C(t,e){return"string"==typeof t.left&&t.left.indexOf("%")!==-1&&(t.left=parseFloat(t.left,10)/100*e.width),"string"==typeof t.top&&t.top.indexOf("%")!==-1&&(t.top=parseFloat(t.top,10)/100*e.height),t}function O(t,e){return"scrollParent"===e?e=t.scrollParents[0]:"window"===e&&(e=[pageXOffset,pageYOffset,innerWidth+pageXOffset,innerHeight+pageYOffset]),e===document&&(e=e.documentElement),"undefined"!=typeof e.nodeType&&!function(){var t=e,o=a(e),i=o,n=getComputedStyle(e);if(e=[i.left,i.top,o.width+i.left,o.height+i.top],t.ownerDocument!==document){var r=t.ownerDocument.defaultView;e[0]+=r.pageXOffset,e[1]+=r.pageYOffset,e[2]+=r.pageXOffset,e[3]+=r.pageYOffset}G.forEach(function(t,o){t=t[0].toUpperCase()+t.substr(1),"Top"===t||"Left"===t?e[o]+=parseFloat(n["border"+t+"Width"]):e[o]-=parseFloat(n["border"+t+"Width"])})}(),e}var E=function(){function t(t,e){for(var o=0;o<e.length;o++){var i=e[o];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,o,i){return o&&t(e.prototype,o),i&&t(e,i),e}}(),x=void 0;"undefined"==typeof x&&(x={modules:[]});var A=null,T=function(){var t=0;return function(){return++t}}(),S={},P=function(){var t=A;t&&document.body.contains(t)||(t=document.createElement("div"),t.setAttribute("data-tether-id",T()),h(t.style,{top:0,left:0,position:"absolute"}),document.body.appendChild(t),A=t);var e=t.getAttribute("data-tether-id");return"undefined"==typeof S[e]&&(S[e]=n(t),k(function(){delete S[e]})),S[e]},M=null,W=[],k=function(t){W.push(t)},_=function(){for(var t=void 0;t=W.pop();)t()},B=function(){function t(){i(this,t)}return E(t,[{key:"on",value:function(t,e,o){var i=!(arguments.length<=3||void 0===arguments[3])&&arguments[3];"undefined"==typeof this.bindings&&(this.bindings={}),"undefined"==typeof this.bindings[t]&&(this.bindings[t]=[]),this.bindings[t].push({handler:e,ctx:o,once:i})}},{key:"once",value:function(t,e,o){this.on(t,e,o,!0)}},{key:"off",value:function(t,e){if("undefined"!=typeof this.bindings&&"undefined"!=typeof this.bindings[t])if("undefined"==typeof e)delete this.bindings[t];else for(var o=0;o<this.bindings[t].length;)this.bindings[t][o].handler===e?this.bindings[t].splice(o,1):++o}},{key:"trigger",value:function(t){if("undefined"!=typeof this.bindings&&this.bindings[t]){for(var e=0,o=arguments.length,i=Array(o>1?o-1:0),n=1;n<o;n++)i[n-1]=arguments[n];for(;e<this.bindings[t].length;){var r=this.bindings[t][e],s=r.handler,a=r.ctx,f=r.once,l=a;"undefined"==typeof l&&(l=this),s.apply(l,i),f?this.bindings[t].splice(e,1):++e}}}}]),t}();x.Utils={getActualBoundingClientRect:n,getScrollParents:r,getBounds:a,getOffsetParent:f,extend:h,addClass:p,removeClass:d,hasClass:u,updateClasses:m,defer:k,flush:_,uniqueId:T,Evented:B,getScrollBarSize:l,removeUtilElements:s};var j=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),E=function(){function t(t,e){for(var o=0;o<e.length;o++){var i=e[o];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,o,i){return o&&t(e.prototype,o),i&&t(e,i),e}}(),z=function(t,e,o){for(var i=!0;i;){var n=t,r=e,s=o;i=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,r);if(void 0!==a){if("value"in a)return a.value;var f=a.get;if(void 0===f)return;return f.call(s)}var l=Object.getPrototypeOf(n);if(null===l)return;t=l,e=r,o=s,i=!0,a=l=void 0}};if("undefined"==typeof x)throw new Error("You must include the utils.js file before tether.js");var Y=x.Utils,r=Y.getScrollParents,a=Y.getBounds,f=Y.getOffsetParent,h=Y.extend,p=Y.addClass,d=Y.removeClass,m=Y.updateClasses,k=Y.defer,_=Y.flush,l=Y.getScrollBarSize,s=Y.removeUtilElements,L=function(){if("undefined"==typeof document)return"";for(var t=document.createElement("div"),e=["transform","WebkitTransform","OTransform","MozTransform","msTransform"],o=0;o<e.length;++o){var i=e[o];if(void 0!==t.style[i])return i}}(),D=[],X=function(){D.forEach(function(t){t.position(!1)}),_()};!function(){var t=null,e=null,o=null,i=function n(){return"undefined"!=typeof e&&e>16?(e=Math.min(e-16,250),void(o=setTimeout(n,250))):void("undefined"!=typeof t&&b()-t<10||(null!=o&&(clearTimeout(o),o=null),t=b(),X(),e=b()-t))};"undefined"!=typeof window&&"undefined"!=typeof window.addEventListener&&["resize","scroll","touchmove"].forEach(function(t){window.addEventListener(t,i)})}();var F={center:"center",left:"right",right:"left"},H={middle:"middle",top:"bottom",bottom:"top"},N={top:0,left:0,middle:"50%",center:"50%",bottom:"100%",right:"100%"},U=function(t,e){var o=t.left,i=t.top;return"auto"===o&&(o=F[e.left]),"auto"===i&&(i=H[e.top]),{left:o,top:i}},V=function(t){var e=t.left,o=t.top;return"undefined"!=typeof N[t.left]&&(e=N[t.left]),"undefined"!=typeof N[t.top]&&(o=N[t.top]),{left:e,top:o}},R=function(t){var e=t.split(" "),o=j(e,2),i=o[0],n=o[1];return{top:i,left:n}},q=R,I=function(t){function e(t){var o=this;i(this,e),z(Object.getPrototypeOf(e.prototype),"constructor",this).call(this),this.position=this.position.bind(this),D.push(this),this.history=[],this.setOptions(t,!1),x.modules.forEach(function(t){"undefined"!=typeof t.initialize&&t.initialize.call(o)}),this.position()}return v(e,t),E(e,[{key:"getClass",value:function(){var t=arguments.length<=0||void 0===arguments[0]?"":arguments[0],e=this.options.classes;return"undefined"!=typeof e&&e[t]?this.options.classes[t]:this.options.classPrefix?this.options.classPrefix+"-"+t:t}},{key:"setOptions",value:function(t){var e=this,o=arguments.length<=1||void 0===arguments[1]||arguments[1],i={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto",classPrefix:"tether"};this.options=h(i,t);var n=this.options,s=n.element,a=n.target,f=n.targetModifier;if(this.element=s,this.target=a,this.targetModifier=f,"viewport"===this.target?(this.target=document.body,this.targetModifier="visible"):"scroll-handle"===this.target&&(this.target=document.body,this.targetModifier="scroll-handle"),["element","target"].forEach(function(t){if("undefined"==typeof e[t])throw new Error("Tether Error: Both element and target must be defined");"undefined"!=typeof e[t].jquery?e[t]=e[t][0]:"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),p(this.element,this.getClass("element")),this.options.addTargetClasses!==!1&&p(this.target,this.getClass("target")),!this.options.attachment)throw new Error("Tether Error: You must provide an attachment");this.targetAttachment=q(this.options.targetAttachment),this.attachment=q(this.options.attachment),this.offset=R(this.options.offset),this.targetOffset=R(this.options.targetOffset),"undefined"!=typeof this.scrollParents&&this.disable(),"scroll-handle"===this.targetModifier?this.scrollParents=[this.target]:this.scrollParents=r(this.target),this.options.enabled!==!1&&this.enable(o)}},{key:"getTargetBounds",value:function(){if("undefined"==typeof this.targetModifier)return a(this.target);if("visible"===this.targetModifier){if(this.target===document.body)return{top:pageYOffset,left:pageXOffset,height:innerHeight,width:innerWidth};var t=a(this.target),e={height:t.height,width:t.width,top:t.top,left:t.left};return e.height=Math.min(e.height,t.height-(pageYOffset-t.top)),e.height=Math.min(e.height,t.height-(t.top+t.height-(pageYOffset+innerHeight))),e.height=Math.min(innerHeight,e.height),e.height-=2,e.width=Math.min(e.width,t.width-(pageXOffset-t.left)),e.width=Math.min(e.width,t.width-(t.left+t.width-(pageXOffset+innerWidth))),e.width=Math.min(innerWidth,e.width),e.width-=2,e.top<pageYOffset&&(e.top=pageYOffset),e.left<pageXOffset&&(e.left=pageXOffset),e}if("scroll-handle"===this.targetModifier){var t=void 0,o=this.target;o===document.body?(o=document.documentElement,t={left:pageXOffset,top:pageYOffset,height:innerHeight,width:innerWidth}):t=a(o);var i=getComputedStyle(o),n=o.scrollWidth>o.clientWidth||[i.overflow,i.overflowX].indexOf("scroll")>=0||this.target!==document.body,r=0;n&&(r=15);var s=t.height-parseFloat(i.borderTopWidth)-parseFloat(i.borderBottomWidth)-r,e={width:15,height:.975*s*(s/o.scrollHeight),left:t.left+t.width-parseFloat(i.borderLeftWidth)-15},f=0;s<408&&this.target===document.body&&(f=-11e-5*Math.pow(s,2)-.00727*s+22.58),this.target!==document.body&&(e.height=Math.max(e.height,24));var l=this.target.scrollTop/(o.scrollHeight-s);return e.top=l*(s-e.height-f)+t.top+parseFloat(i.borderTopWidth),this.target===document.body&&(e.height=Math.max(e.height,24)),e}}},{key:"clearCache",value:function(){this._cache={}}},{key:"cache",value:function(t,e){return"undefined"==typeof this._cache&&(this._cache={}),"undefined"==typeof this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]}},{key:"enable",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]||arguments[0];this.options.addTargetClasses!==!1&&p(this.target,this.getClass("enabled")),p(this.element,this.getClass("enabled")),this.enabled=!0,this.scrollParents.forEach(function(e){e!==t.target.ownerDocument&&e.addEventListener("scroll",t.position)}),e&&this.position()}},{key:"disable",value:function(){var t=this;d(this.target,this.getClass("enabled")),d(this.element,this.getClass("enabled")),this.enabled=!1,"undefined"!=typeof this.scrollParents&&this.scrollParents.forEach(function(e){e.removeEventListener("scroll",t.position)})}},{key:"destroy",value:function(){var t=this;this.disable(),D.forEach(function(e,o){e===t&&D.splice(o,1)}),0===D.length&&s()}},{key:"updateAttachClasses",value:function(t,e){var o=this;t=t||this.attachment,e=e||this.targetAttachment;var i=["left","top","bottom","right","middle","center"];"undefined"!=typeof this._addAttachClasses&&this._addAttachClasses.length&&this._addAttachClasses.splice(0,this._addAttachClasses.length),"undefined"==typeof this._addAttachClasses&&(this._addAttachClasses=[]);var n=this._addAttachClasses;t.top&&n.push(this.getClass("element-attached")+"-"+t.top),t.left&&n.push(this.getClass("element-attached")+"-"+t.left),e.top&&n.push(this.getClass("target-attached")+"-"+e.top),e.left&&n.push(this.getClass("target-attached")+"-"+e.left);var r=[];i.forEach(function(t){r.push(o.getClass("element-attached")+"-"+t),r.push(o.getClass("target-attached")+"-"+t)}),k(function(){"undefined"!=typeof o._addAttachClasses&&(m(o.element,o._addAttachClasses,r),o.options.addTargetClasses!==!1&&m(o.target,o._addAttachClasses,r),delete o._addAttachClasses)})}},{key:"position",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]||arguments[0];if(this.enabled){this.clearCache();var o=U(this.targetAttachment,this.attachment);this.updateAttachClasses(this.attachment,o);var i=this.cache("element-bounds",function(){return a(t.element)}),n=i.width,r=i.height;if(0===n&&0===r&&"undefined"!=typeof this.lastSize){var s=this.lastSize;n=s.width,r=s.height}else this.lastSize={width:n,height:r};var h=this.cache("target-bounds",function(){return t.getTargetBounds()}),d=h,p=C(V(this.attachment),{width:n,height:r}),u=C(V(o),d),c=C(this.offset,{width:n,height:r}),g=C(this.targetOffset,d);p=w(p,c),u=w(u,g);for(var m=h.left+u.left-p.left,v=h.top+u.top-p.top,y=0;y<x.modules.length;++y){var b=x.modules[y],O=b.position.call(this,{left:m,top:v,targetAttachment:o,targetPos:h,elementPos:i,offset:p,targetOffset:u,manualOffset:c,manualTargetOffset:g,scrollbarSize:S,attachment:this.attachment});if(O===!1)return!1;"undefined"!=typeof O&&"object"==typeof O&&(v=O.top,m=O.left)}var E={page:{top:v,left:m},viewport:{top:v-pageYOffset,bottom:pageYOffset-v-r+innerHeight,left:m-pageXOffset,right:pageXOffset-m-n+innerWidth}},A=this.target.ownerDocument,T=A.defaultView,S=void 0;return T.innerHeight>A.documentElement.clientHeight&&(S=this.cache("scrollbar-size",l),E.viewport.bottom-=S.height),T.innerWidth>A.documentElement.clientWidth&&(S=this.cache("scrollbar-size",l),E.viewport.right-=S.width),["","static"].indexOf(A.body.style.position)!==-1&&["","static"].indexOf(A.body.parentElement.style.position)!==-1||(E.page.bottom=A.body.scrollHeight-v-r,E.page.right=A.body.scrollWidth-m-n),"undefined"!=typeof this.options.optimizations&&this.options.optimizations.moveElement!==!1&&"undefined"==typeof this.targetModifier&&!function(){var e=t.cache("target-offsetparent",function(){return f(t.target)}),o=t.cache("target-offsetparent-bounds",function(){return a(e)}),i=getComputedStyle(e),n=o,r={};if(["Top","Left","Bottom","Right"].forEach(function(t){r[t.toLowerCase()]=parseFloat(i["border"+t+"Width"])}),o.right=A.body.scrollWidth-o.left-n.width+r.right,o.bottom=A.body.scrollHeight-o.top-n.height+r.bottom,E.page.top>=o.top+r.top&&E.page.bottom>=o.bottom&&E.page.left>=o.left+r.left&&E.page.right>=o.right){var s=e.scrollTop,l=e.scrollLeft;E.offset={top:E.page.top-o.top+s-r.top,left:E.page.left-o.left+l-r.left}}}(),this.move(E),this.history.unshift(E),this.history.length>3&&this.history.pop(),e&&_(),!0}}},{key:"move",value:function(t){var e=this;if("undefined"!=typeof this.element.parentNode){var o={};for(var i in t){o[i]={};for(var n in t[i]){for(var r=!1,s=0;s<this.history.length;++s){var a=this.history[s];if("undefined"!=typeof a[i]&&!y(a[i][n],t[i][n])){r=!0;break}}r||(o[i][n]=!0)}}var l={top:"",left:"",right:"",bottom:""},d=function(t,o){var i="undefined"!=typeof e.options.optimizations,n=i?e.options.optimizations.gpu:null;if(n!==!1){var r=void 0,s=void 0;if(t.top?(l.top=0,r=o.top):(l.bottom=0,r=-o.bottom),t.left?(l.left=0,s=o.left):(l.right=0,s=-o.right),window.matchMedia){var a=window.matchMedia("only screen and (min-resolution: 1.3dppx)").matches||window.matchMedia("only screen and (-webkit-min-device-pixel-ratio: 1.3)").matches;a||(s=Math.round(s),r=Math.round(r))}l[L]="translateX("+s+"px) translateY("+r+"px)","msTransform"!==L&&(l[L]+=" translateZ(0)")}else t.top?l.top=o.top+"px":l.bottom=o.bottom+"px",t.left?l.left=o.left+"px":l.right=o.right+"px"},p=!1;if((o.page.top||o.page.bottom)&&(o.page.left||o.page.right)?(l.position="absolute",d(o.page,t.page)):(o.viewport.top||o.viewport.bottom)&&(o.viewport.left||o.viewport.right)?(l.position="fixed",d(o.viewport,t.viewport)):"undefined"!=typeof o.offset&&o.offset.top&&o.offset.left?!function(){l.position="absolute";var i=e.cache("target-offsetparent",function(){return f(e.target)});f(e.element)!==i&&k(function(){e.element.parentNode.removeChild(e.element),i.appendChild(e.element)}),d(o.offset,t.offset),p=!0}():(l.position="absolute",d({top:!0,left:!0},t.page)),!p)if(this.options.bodyElement)this.element.parentNode!==this.options.bodyElement&&this.options.bodyElement.appendChild(this.element);else{for(var u=!0,c=this.element.parentNode;c&&1===c.nodeType&&"BODY"!==c.tagName;){if("static"!==getComputedStyle(c).position){u=!1;break}c=c.parentNode}u||(this.element.parentNode.removeChild(this.element),this.element.ownerDocument.body.appendChild(this.element))}var g={},m=!1;for(var n in l){var v=l[n],b=this.element.style[n];b!==v&&(m=!0,g[n]=v)}m&&k(function(){h(e.element.style,g),e.trigger("repositioned")})}}}]),e}(B);I.modules=[],x.position=X;var $=h(I,x),j=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),Y=x.Utils,a=Y.getBounds,h=Y.extend,m=Y.updateClasses,k=Y.defer,G=["left","top","right","bottom"];x.modules.push({position:function(t){var e=this,o=t.top,i=t.left,n=t.targetAttachment;if(!this.options.constraints)return!0;var r=this.cache("element-bounds",function(){return a(e.element)}),s=r.height,f=r.width;if(0===f&&0===s&&"undefined"!=typeof this.lastSize){var l=this.lastSize;f=l.width,s=l.height}var d=this.cache("target-bounds",function(){return e.getTargetBounds()}),p=d.height,u=d.width,c=[this.getClass("pinned"),this.getClass("out-of-bounds")];this.options.constraints.forEach(function(t){var e=t.outOfBoundsClass,o=t.pinnedClass;e&&c.push(e),o&&c.push(o)}),c.forEach(function(t){["left","top","right","bottom"].forEach(function(e){c.push(t+"-"+e)})});var g=[],v=h({},n),y=h({},this.attachment);return this.options.constraints.forEach(function(t){var r=t.to,a=t.attachment,l=t.pin;"undefined"==typeof a&&(a="");var h=void 0,d=void 0;if(a.indexOf(" ")>=0){var c=a.split(" "),m=j(c,2);d=m[0],h=m[1]}else h=d=a;var b=O(e,r);"target"!==d&&"both"!==d||(o<b[1]&&"top"===v.top&&(o+=p,v.top="bottom"),o+s>b[3]&&"bottom"===v.top&&(o-=p,v.top="top")),"together"===d&&("top"===v.top&&("bottom"===y.top&&o<b[1]?(o+=p,v.top="bottom",o+=s,y.top="top"):"top"===y.top&&o+s>b[3]&&o-(s-p)>=b[1]&&(o-=s-p,v.top="bottom",y.top="bottom")),"bottom"===v.top&&("top"===y.top&&o+s>b[3]?(o-=p,v.top="top",o-=s,y.top="bottom"):"bottom"===y.top&&o<b[1]&&o+(2*s-p)<=b[3]&&(o+=s-p,v.top="top",y.top="top")),"middle"===v.top&&(o+s>b[3]&&"top"===y.top?(o-=s,y.top="bottom"):o<b[1]&&"bottom"===y.top&&(o+=s,y.top="top"))),"target"!==h&&"both"!==h||(i<b[0]&&"left"===v.left&&(i+=u,v.left="right"),i+f>b[2]&&"right"===v.left&&(i-=u,v.left="left")),"together"===h&&(i<b[0]&&"left"===v.left?"right"===y.left?(i+=u,v.left="right",i+=f,y.left="left"):"left"===y.left&&(i+=u,v.left="right",i-=f,y.left="right"):i+f>b[2]&&"right"===v.left?"left"===y.left?(i-=u,v.left="left",i-=f,y.left="right"):"right"===y.left&&(i-=u,v.left="left",i+=f,y.left="left"):"center"===v.left&&(i+f>b[2]&&"left"===y.left?(i-=f,y.left="right"):i<b[0]&&"right"===y.left&&(i+=f,y.left="left"))),"element"!==d&&"both"!==d||(o<b[1]&&"bottom"===y.top&&(o+=s,y.top="top"),o+s>b[3]&&"top"===y.top&&(o-=s,y.top="bottom")),"element"!==h&&"both"!==h||(i<b[0]&&("right"===y.left?(i+=f,y.left="left"):"center"===y.left&&(i+=f/2,y.left="left")),i+f>b[2]&&("left"===y.left?(i-=f,y.left="right"):"center"===y.left&&(i-=f/2,y.left="right"))),"string"==typeof l?l=l.split(",").map(function(t){return t.trim()}):l===!0&&(l=["top","left","right","bottom"]),l=l||[];var w=[],C=[];o<b[1]&&(l.indexOf("top")>=0?(o=b[1],w.push("top")):C.push("top")),o+s>b[3]&&(l.indexOf("bottom")>=0?(o=b[3]-s,w.push("bottom")):C.push("bottom")),i<b[0]&&(l.indexOf("left")>=0?(i=b[0],w.push("left")):C.push("left")),i+f>b[2]&&(l.indexOf("right")>=0?(i=b[2]-f,w.push("right")):C.push("right")),w.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.pinnedClass?e.options.pinnedClass:e.getClass("pinned"),g.push(t),w.forEach(function(e){g.push(t+"-"+e)})}(),C.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.outOfBoundsClass?e.options.outOfBoundsClass:e.getClass("out-of-bounds"),g.push(t),C.forEach(function(e){g.push(t+"-"+e)})}(),(w.indexOf("left")>=0||w.indexOf("right")>=0)&&(y.left=v.left=!1),(w.indexOf("top")>=0||w.indexOf("bottom")>=0)&&(y.top=v.top=!1),v.top===n.top&&v.left===n.left&&y.top===e.attachment.top&&y.left===e.attachment.left||(e.updateAttachClasses(y,v),e.trigger("update",{attachment:y,targetAttachment:v}))}),k(function(){e.options.addTargetClasses!==!1&&m(e.target,g,c),m(e.element,g,c)}),{top:o,left:i}}});var Y=x.Utils,a=Y.getBounds,m=Y.updateClasses,k=Y.defer;x.modules.push({position:function(t){var e=this,o=t.top,i=t.left,n=this.cache("element-bounds",function(){return a(e.element)}),r=n.height,s=n.width,f=this.getTargetBounds(),l=o+r,h=i+s,d=[];o<=f.bottom&&l>=f.top&&["left","right"].forEach(function(t){var e=f[t];e!==i&&e!==h||d.push(t)}),i<=f.right&&h>=f.left&&["top","bottom"].forEach(function(t){var e=f[t];e!==o&&e!==l||d.push(t)});var p=[],u=[],c=["left","top","right","bottom"];return p.push(this.getClass("abutted")),c.forEach(function(t){p.push(e.getClass("abutted")+"-"+t)}),d.length&&u.push(this.getClass("abutted")),d.forEach(function(t){u.push(e.getClass("abutted")+"-"+t)}),k(function(){e.options.addTargetClasses!==!1&&m(e.target,u,p),m(e.element,u,p)}),!0}});var j=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();return x.modules.push({position:function(t){var e=t.top,o=t.left;if(this.options.shift){var i=this.options.shift;"function"==typeof this.options.shift&&(i=this.options.shift.call(this,{top:e,left:o}));var n=void 0,r=void 0;if("string"==typeof i){i=i.split(" "),i[1]=i[1]||i[0];var s=i,a=j(s,2);n=a[0],r=a[1],n=parseFloat(n,10),r=parseFloat(r,10)}else n=i.top,r=i.left;return e+=n,o+=r,{top:e,left:o}}}}),$});
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/package.json b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/package.json
new file mode 100644
index 0000000..8cb9530
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/package.json
@@ -0,0 +1,32 @@
+{
+  "name": "myapp",
+  "version": "1.0.0",
+  "description": "list of node modules for myapp",
+  "main": "app.js",
+  "scripts": {
+    "test": "standard"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/NMSVishal/SDNCReports.git"
+  },
+  "author": "",
+  "license": "Apache-2.0",
+  "bugs": {
+    "url": "https://github.com/NMSVishal/SDNCReports/issues"
+  },
+  "homepage": "https://github.com/NMSVishal/SDNCReports#readme",
+  "dependencies": {
+    "angular": "^1.6.9",
+    "angular-growl": "^0.1.0",
+    "angular-mocks": "^1.6.9",
+    "angular-route": "^1.6.9",
+    "angular-sanitize": "^1.6.9",
+    "angular-utils-pagination": "^0.11.1",
+    "angularjs-datetime-picker": "^0.1.16",
+    "bootstrap": "^4.0.0",
+    "jquery": "^3.3.1",
+    "ng-csv": "^0.3.6",
+    "ng-ip-address": "^1.1.12"
+  }
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/Apply.jpg b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/Apply.jpg
new file mode 100644
index 0000000..7d5ab8d
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/Apply.jpg
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/FailImage.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/FailImage.png
new file mode 100644
index 0000000..22c44f7
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/FailImage.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/backup.jpg b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/backup.jpg
new file mode 100644
index 0000000..a38acc7
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/backup.jpg
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/backupConfig.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/backupConfig.png
new file mode 100644
index 0000000..33347d2
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/backupConfig.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/compare.jpg b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/compare.jpg
new file mode 100644
index 0000000..e463494
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/compare.jpg
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/compare.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/compare.png
new file mode 100644
index 0000000..f761147
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/compare.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/download.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/download.png
new file mode 100644
index 0000000..0b1f949
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/download.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/downloadImage.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/downloadImage.png
new file mode 100644
index 0000000..e72e128
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/downloadImage.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/error.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/error.png
new file mode 100644
index 0000000..3f44964
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/error.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/fail.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/fail.png
new file mode 100644
index 0000000..898fa26
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/fail.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/images.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/images.png
new file mode 100644
index 0000000..3bce573
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/images.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/networklayer.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/networklayer.png
new file mode 100644
index 0000000..c8e8008
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/networklayer.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/protocaol.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/protocaol.png
new file mode 100644
index 0000000..2c6f8fa
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/protocaol.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/protocol.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/protocol.png
new file mode 100644
index 0000000..aea9c7c
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/protocol.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/reachable.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/reachable.png
new file mode 100644
index 0000000..bb771b3
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/reachable.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/router.jpg b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/router.jpg
new file mode 100644
index 0000000..cb4c50e
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/router.jpg
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/router.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/router.png
new file mode 100644
index 0000000..94de9f5
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/router.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/search.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/search.png
new file mode 100644
index 0000000..a8b4b35
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/search.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/success.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/success.png
new file mode 100644
index 0000000..76689fe
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/success.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/validation.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/validation.png
new file mode 100644
index 0000000..77c53ff
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/validation.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/waning.png b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/waning.png
new file mode 100644
index 0000000..2ae2987
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/images/waning.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllConfigForVNF.json b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllConfigForVNF.json
new file mode 100644
index 0000000..040d2ee
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllConfigForVNF.json
@@ -0,0 +1,199 @@
+{
+  "preload-vnfs": {
+    "vnf-preload-list": [
+      {
+        "vnf-name": "vDNS-vIMS",
+        "vnf-type": "VimsClearwaterVsp..sproutScaling..module-1",
+        "vnf-version":"1.0",
+        "timeStamp":"2018-03-16",
+        "preload-data": {
+          "vnf-topology-information": {
+            "vnf-parameters": [
+              {
+                "vnf-parameter-name": "dn_range_length",
+                "vnf-parameter-value": "10000"
+              },
+              {
+                "vnf-parameter-name": "public_net_id",
+                "vnf-parameter-value": "d05b5f2a-37ce-4d75-810a-c7592a123ca3"
+              },
+              {
+                "vnf-parameter-name": "dn_range_start",
+                "vnf-parameter-value": "2425550000"
+              },
+              {
+                "vnf-parameter-name": "etcd_ip",
+                "vnf-parameter-value": "30.30.30.20"
+              },
+              {
+                "vnf-parameter-name": "zone",
+                "vnf-parameter-value": "me.cw-ngv.com"
+              },
+              {
+                "vnf-parameter-name": "dnssec_key",
+                "vnf-parameter-value": "9FPdYTWhk5+LbhrqtTPQKw=="
+              },
+              {
+                "vnf-parameter-name": "dns_ip",
+                "vnf-parameter-value": "30.30.30.9"
+              },
+              {
+                "vnf-parameter-name": "key_name",
+                "vnf-parameter-value": "sprout_scale_key1"
+              },
+              {
+                "vnf-parameter-name": "repo_url",
+                "vnf-parameter-value": "http://repo.cw-ngv.com/stable"
+              }
+            ],
+            "vnf-topology-identifier": {
+              "service-type": "dcdae039-b762-4f25-a4aa-92e6034cf3bd",
+              "vnf-type": "VimsClearwaterVsp..sproutScaling..module-1",
+              "generic-vnf-name": "vIMS-vnf-inst-1",
+              "generic-vnf-type": "vIMS-ClearWater-VSP 0",
+              "vnf-name": "vDNS-vIMS"
+            }
+          },
+          "oper-status": {
+            "order-status": "PendingAssignment"
+          },
+          "network-topology-information": {}
+        }
+      },
+      {
+        "vnf-name": "vDNS-vIMS",
+        "vnf-type": "VimsClearwaterVsp..sproutScaling..module-1",
+        "vnf-version":"2.0",
+        "timeStamp":"2018-03-17",
+        "preload-data": {
+          "vnf-topology-information": {
+            "vnf-parameters": [
+              {
+                "vnf-parameter-name": "dn_range_length",
+                "vnf-parameter-value": "20000"
+              },
+              {
+                "vnf-parameter-name": "public_net_id",
+                "vnf-parameter-value": "60dc8a1c-86b8-4cc4-b5c8-9b0272113c1f"
+              },
+              {
+                "vnf-parameter-name": "dn_range_start",
+                "vnf-parameter-value": "2425550111"
+              },
+              {
+                "vnf-parameter-name": "etcd_ip",
+                "vnf-parameter-value": "10.53.172.155"
+              },
+              {
+                "vnf-parameter-name": "zone",
+                "vnf-parameter-value": "me.cw-ngv.com"
+              },
+              {
+                "vnf-parameter-name": "dnssec_key",
+                "vnf-parameter-value": "9FPdYTWhk5+LbhrqtTPQKw=="
+              },
+              {
+                "vnf-parameter-name": "dns_ip",
+                "vnf-parameter-value": "10.53.172.152"
+              },
+              {
+                "vnf-parameter-name": "key_name",
+                "vnf-parameter-value": "vm1-key-vims"
+              },
+              {
+                "vnf-parameter-name": "repo_url",
+                "vnf-parameter-value": "http://repo.cw-ngv.com/stable"
+              }
+            ],
+            "vnf-topology-identifier": {
+              "service-type": "dcdae039-b762-4f25-a4aa-92e6034cf3bd",
+              "vnf-type": "VimsClearwaterVsp..base_clearwater..module-0",
+              "generic-vnf-name": "vIMS-vnf-inst-1",
+              "generic-vnf-type": "vIMS-ClearWater-VSP 0",
+              "vnf-name": "Vfmodule-vIMS"
+            }
+          },
+          "oper-status": {
+            "order-status": "PendingAssignment"
+          },
+          "network-topology-information": {}
+        }
+      },
+       {
+        "vnf-name": "vDNS-vIMS",
+        "vnf-type": "VimsClearwaterVsp..sproutScaling..module-1",
+        "vnf-version":"3.0",
+        "timeStamp":"2018-03-16",
+        "preload-data": {
+          "vnf-topology-information": {
+            "vnf-parameters": [
+              {
+                "vnf-parameter-name": "dn_range_length",
+                "vnf-parameter-value": "10000"
+              },
+              {
+                "vnf-parameter-name": "public_net_id",
+                "vnf-parameter-value": "d05b5f2a-37ce-4d75-810a-c7592a123ca3"
+              },
+              {
+                "vnf-parameter-name": "dn_range_start",
+                "vnf-parameter-value": "2425550000"
+              },
+              {
+                "vnf-parameter-name": "etcd_ip",
+                "vnf-parameter-value": "30.30.30.20"
+              },
+              {
+                "vnf-parameter-name": "zone",
+                "vnf-parameter-value": "me.cw-ngv.com"
+              },
+              {
+                "vnf-parameter-name": "dnssec_key",
+                "vnf-parameter-value": "9FPdYTWhk5+LbhrqtTPQKw=="
+              },
+              {
+                "vnf-parameter-name": "dns_ip",
+                "vnf-parameter-value": "30.30.30.9"
+              },
+              {
+                "vnf-parameter-name": "key_name",
+                "vnf-parameter-value": "sprout_scale_key1"
+              },
+              {
+                "vnf-parameter-name": "repo_url",
+                "vnf-parameter-value": "http://repo.cw-ngv.com/stable"
+              }
+            ],
+            "vnf-topology-identifier": {
+              "service-type": "dcdae039-b762-4f25-a4aa-92e6034cf3bd",
+              "vnf-type": "VimsClearwaterVsp..sproutScaling..module-1",
+              "generic-vnf-name": "vIMS-vnf-inst-1",
+              "generic-vnf-type": "vIMS-ClearWater-VSP 0",
+              "vnf-name": "vDNS-vIMS"
+            }
+          },
+          "oper-status": {
+            "order-status": "PendingAssignment"
+          },
+          "network-topology-information": {}
+        }
+      }
+    ]
+},
+    "status":200,
+   "config":{  
+      "method":"GET",
+      "transformRequest":[  
+         null
+      ],
+      "transformResponse":[  
+         null
+      ],
+      "params":"",
+      "headers":{  
+         "Accept":"application/json"
+      },
+      "url":"/getAllConfigForVNF/Thu Mar 15 2018 00:00:00 GMT+0530 (India Standard Time)/Fri Mar 16 2018 00:00:00 GMT+0530 (India Standard Time)/Router"
+   },
+   "statusText":""
+  }
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllDevices.json b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllDevices.json
new file mode 100644
index 0000000..d7faef5
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllDevices.json
@@ -0,0 +1,17 @@
+
+{  
+   "deviceList":[  
+      {  
+         "deviceId":"1",
+         "deviceName":"Device1"
+      },
+      {  
+         "deviceId":"2",
+         "deviceName":"Device2"
+      },
+      {  
+         "deviceId":"3",
+         "deviceName":"Device3"
+      }
+   ]
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllReports.json b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllReports.json
new file mode 100644
index 0000000..cd0723f
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllReports.json
@@ -0,0 +1,75 @@
+
+{  
+   "data":[  
+      {  
+         "testid":1,
+         "deviceid":1,
+         "testName":"Network Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"hostname": "google.com","testresult": "pass", "status": "reachable","statistics": "0% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 70ms"}},
+         "result":"Pass",
+         "timeStamp":"2018-03-16"
+      },
+      {  
+         "testid":2,
+         "deviceid":1,
+         "testName":"Network Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"hostname": "google.com","testresult": "fail", "status": "unreachable","statistics": "100% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 33ms"}},
+         "result":"Pass",
+         "timeStamp":"2018-03-16"
+      },
+	    {  
+         "testid":4,
+         "deviceid":1,
+         "testName":"Protocol Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"status": "unreachable"}},
+         "result":"Fail",
+         "timeStamp":"2018-03-08"
+      },
+      {  
+         "testid":5,
+         "deviceid":1,
+         "testName":"Protocol Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"status": "reachable"}},
+         "result":"Pass",
+         "timeStamp":"2018-03-15"
+      },
+      {  
+         "testid":6,
+         "deviceid":1,
+         "testName":"Network Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"hostname": "google.com","testresult": "fail", "status": "unreachable","statistics": "100% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 33ms"}},
+         "result":"Fail",
+         "timeStamp":"2018-03-15"
+      },
+      {  
+         "testid":7,
+         "deviceid":1,
+        "testName":"Network Layer",
+         "deviceName":"Router",
+         "execuationDetails":{"output": {"hostname": "google.com","testresult": "fail", "status": "unreachable","statistics": "100% loss","ipaddress": "10.53.122.44","avgTime": "Minimum = 50ms"}},
+         "result":"Fail",
+         "timeStamp":"2018-03-15"
+      }
+   ],
+   "status":200,
+   "config":{  
+      "method":"GET",
+      "transformRequest":[  
+         null
+      ],
+      "transformResponse":[  
+         null
+      ],
+      "params":"",
+      "headers":{  
+         "Accept":"application/json"
+      },
+      "url":"/findReportByDeviceName/Thu Mar 15 2018 00:00:00 GMT+0530 (India Standard Time)/Fri Mar 16 2018 00:00:00 GMT+0530 (India Standard Time)/Router"
+   },
+   "statusText":""
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllTest.json b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllTest.json
new file mode 100644
index 0000000..fc9b290
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllTest.json
@@ -0,0 +1,17 @@
+
+{  
+   "testList":[  
+      {  
+         "testId":"1",
+         "testName":"Test1"
+      },
+      {  
+         "testId":"2",
+         "testName":"Test2"
+      },
+      {  
+         "testId":"3",
+         "testName":"Test3"
+      }
+   ]
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllVNF.json b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllVNF.json
new file mode 100644
index 0000000..49b91a4
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllVNF.json
@@ -0,0 +1,33 @@
+
+{  
+   "vnfList":[  
+      {  
+         "IpAddress":"1.160.10.240",
+         "HostName":"Vfmodule-vIMS",
+		 "Selected":false,
+		 "PortNo":"8282",
+		 "vnfType": "VimsClearwaterVsp..sproutScaling..module-1"
+      },
+      {  
+         "IpAddress":"1.160.10.241",
+         "HostName":"vDNS-vIMS",
+		 "Selected":false,
+		 "PortNo":"8080",
+		 "vnfType": "VimsClearwaterVsp..sproutScaling..module-1"
+      },
+      {  
+         "IpAddress":"1.160.10.242",
+         "HostName":"Vfmodule-F5",
+		 "Selected":false,
+		 "PortNo":"8285",
+		 "vnfType": "VimsClearwaterVsp..sproutScaling..module-1"
+      },
+       {  
+         "IpAddress":"1.160.10.243",
+         "HostName":"Vfmodule-F6",
+		 "Selected":false,
+		 "PortNo":"8286",
+		 "vnfType": "VimsClearwaterVsp..sproutScaling..module-1"
+      }
+   ]
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllVersion.json b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllVersion.json
new file mode 100644
index 0000000..7d0172e
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getAllVersion.json
@@ -0,0 +1,133 @@
+{  
+   "versionlist":[  
+      {  
+         "model":"CSR1000V",
+         "vendor":"CISCO",
+         "versionNo":"1.0",
+         "timestamp":"2017/09/01",
+         "router":{  
+            "ospf":{  
+               "process-id":"1",
+               "networks":{  
+                  "subnet-ip":"10.10.1.0/24",
+                  "area-id":"20"
+               }
+            },
+            "bgp":{  
+               "as-number":"2000",
+               "router-id":"10.10.1.2",
+               "neighbors":{  
+                  "as-number":"1000",
+                  "peer-ip":"10.10.2.1"
+               }
+            },
+            "ipsla":[  
+               {  
+                  "cos-entry-number":"40102",
+                  "destination-address":"13.13.13.13",
+                  "source-address":"10.10.1.1",
+                  "customer-name":"Hello Inc"
+               },
+               {  
+                  "cos-entry-number":"40103",
+                  "destination-address":"10.11.12.12",
+                  "source-address":"10.10.1.2",
+                  "customer-name":"ABC Inc"
+               },
+               {  
+                  "cos-entry-number":"40105",
+                  "destination-address":"12.5.12.12",
+                  "source-address":"10.10.1.3",
+                  "customer-name":"test Inc"
+               }
+            ]
+         }
+      },
+      {  
+         "model":"CSR1000V",
+         "vendor":"CISCO",
+         "versionNo":"2.0",
+         "timestamp":"2017/10/01",
+         "router":{  
+            "ospf":{  
+               "process-id":"1",
+               "networks":{  
+                  "subnet-ip":"10.10.1.0/25",
+                  "area-id":"20"
+               }
+            },
+            "bgp":{  
+               "as-number":"2000",
+               "router-id":"10.10.1.2",
+               "neighbors":{  
+                  "as-number":"1000",
+                  "peer-ip":"10.10.2.1"
+               }
+            },
+            "ipsla":[  
+               {  
+                  "cos-entry-number":"40102",
+                  "destination-address":"12.12.12.12",
+                  "source-address":"10.10.1.1",
+                  "customer-name":"Hello Inc"
+               },
+               {  
+                  "cos-entry-number":"40103",
+                  "destination-address":"10.11.12.12",
+                  "source-address":"10.10.1.1",
+                  "customer-name":"ABC Inc"
+               },
+               {  
+                  "cos-entry-number":"40105",
+                  "destination-address":"12.5.12.12",
+                  "source-address":"10.10.1.2",
+                  "customer-name":"test Inc"
+               }
+            ]
+         }
+      },
+      {  
+         "model":"CSR1000V",
+         "vendor":"CISCO",
+         "versionNo":"3.0",
+         "timestamp":"2017/10/01",
+         "router":{  
+            "ospf":{  
+               "process-id":"1",
+               "networks":{  
+                  "subnet-ip":"10.10.1.0/25",
+                  "area-id":"20"
+               }
+            },
+            "bgp":{  
+               "as-number":"2000",
+               "router-id":"10.10.1.2",
+               "neighbors":{  
+                  "as-number":"1000",
+                  "peer-ip":"10.10.2.1"
+               }
+            },
+            "ipsla":[  
+               {  
+                  "cos-entry-number":"40102",
+                  "destination-address":"12.12.12.12",
+                  "source-address":"10.10.1.1",
+                  "customer-name":"Hello Inc"
+               },
+               {  
+                  "cos-entry-number":"40103",
+                  "destination-address":"10.11.12.12",
+                  "source-address":"10.10.1.1",
+                  "customer-name":"ABC Inc"
+               },
+               {  
+                  "cos-entry-number":"40105",
+                  "destination-address":"12.5.12.12",
+                  "source-address":"10.10.1.2",
+                  "customer-name":"test Inc"
+               }
+            ]
+         }
+      }
+   ]
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getTestResult.json b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getTestResult.json
new file mode 100644
index 0000000..581c8b0
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/sdnc-stubs/getTestResult.json
@@ -0,0 +1,42 @@
+
+{  
+   "preTestResponse":[  
+      {  
+         "ipaddress":"1.160.10.240",
+         "status":"unreachable",
+         "testtype":"Network Layer",
+         "statistics":null,
+         "avgTime":null
+      },
+      {  
+         "ipaddress":"1.160.10.240",
+         "status":"unreachable",
+         "testtype":"Protocol Layer",
+         "statistics":null,
+         "avgTime":null
+      },
+      {  
+         "ipaddress":"1.160.10.240",
+         "status":"reachable",
+         "testtype":"Network Layer",
+         "statistics":"0% loss",
+         "avgTime":"Minimum = 70ms"
+      }
+   ],
+   "status":200,
+   "config":{  
+      "method":"GET",
+      "transformRequest":[  
+         null
+      ],
+      "transformResponse":[  
+         null
+      ],
+      "params":"",
+      "headers":{  
+         "Accept":"application/json"
+      },
+      "url":"/findReportByDeviceName/Thu Mar 15 2018 00:00:00 GMT+0530 (India Standard Time)/Fri Mar 16 2018 00:00:00 GMT+0530 (India Standard Time)/Router"
+   },
+   "statusText":""
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/style/sdnc-style.css b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/style/sdnc-style.css
new file mode 100644
index 0000000..82f9c10
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/style/sdnc-style.css
@@ -0,0 +1,562 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+ 
+ body{ 
+ padding-top:10px; 
+ overflow-y:scroll;
+ padding-bottom:10px;
+ } 
+
+/* form styling */
+#form-container{  
+	margin-bottom:20px;
+    border-radius:5px;
+}
+#form-container .page-header{  
+	margin:0; padding:30px; 
+    border-top-left-radius:5px; border-top-right-radius:5px;
+     }
+    
+ table.tableDisplay{
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     width: 100%;
+     table-layout: auto;
+}
+ table.tableDisplay tr:nth-child(even){
+     background-color: #E1E0DA;
+}
+ table.tableDisplay th{
+     padding-top: 12px;
+     padding-bottom: 12px;
+     text-align: left;
+     background: linear-gradient(to top, #f8f8f8 0%, #cce5ff 83%);
+     color: black;
+}
+ table.tableDisplay td,table.tableDisplay th {
+     border: 1px solid #ABABAB;
+     padding: 8px;
+     width:30px;
+     height:10%;
+     
+}
+ table.tableDisplay tr:{
+     text-align: left;
+     height:105;;
+}
+ table.tableDisplay tr:hover {
+     background-color:#cce5ff;
+}
+ .first_row{
+     background-color: #cce5ff;
+     color: black;
+     text-align:left;
+}
+ .column {
+     float: left;
+     width: 32.2%;
+     padding: 10px;
+     margin-left:20px;
+     height: 60px;
+    /* Should be removed. Only for demonstration */
+}
+.columnComp{
+	float: left;
+     width: 22%;
+     padding: 10px;
+     margin-left:20px;
+     height: 60px;
+}
+/* Clear floats after the columns */
+ .row:after {
+     content: "";
+     display: table;
+     clear: both;
+}
+ #btnSubmit{
+     background-color: #AED6F1;
+     margin-top:20px;
+     margin-left:20px;
+     margin-bottom:10px;
+     width:75px;
+     height:28px;
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     border: 1px solid #5DADE2;
+     font-weight:700;
+}
+ .btndownload{
+     background-color: #AED6F1;
+     margin-top:20px;
+     margin-bottom:10px;
+     margin-left:20px;
+     width:130px;
+     height:30px;
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     border: 1px solid #5DADE2;
+     font-weight:700;
+}
+ #exampleInput{
+     margin-left:25px;
+     width:160px;
+}
+ #exampleEndInput{
+     margin-left:10px;
+}
+ .error{
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     color:Red;
+     font-size: 14px;
+     margin-bottom:10px;
+}
+ .labeltext{
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+}
+ .sort-icon {
+     font-size: 9px;
+     margin-left: 5px;
+}
+ th {
+     cursor:pointer;
+}
+ .heading{  
+     margin-top:10px;
+     width:100%;
+     height:45px;
+     margin-bottom:20px;
+     font-family:Trebuchet MS, Arial, Helvetica, sans-serif;
+     margin-top: 15px;
+     margin-right: auto;
+     margin-left: auto;
+     font-size: 20px;
+      background: linear-gradient(to top, #f8f8f8 0%, #cce5ff 83%);
+     padding-top: 15px;
+     padding-bottom: 50px;
+
+}
+form_validationBody{
+	width:900px;
+	margin-left:15px;
+	margin-top:60px;
+	margin-bottom:20px;
+}
+button:hover {
+    position: relative;
+}
+button[title]:hover:after {
+     padding: 4px 8px;
+     position: absolute;
+     left: 0;
+     top: 100%;
+     white-space: nowrap;
+     z-index: 20px;
+     background:red;
+}
+.pagination{
+display: inline-block;
+  padding-left: 0;
+  margin: 5px 0;
+  border-radius: 4px;
+  border: 1px solid #ABABAB;
+  font-size: 13px;
+}
+.pagination > li > span {
+  position: relative;
+  float: left;
+  padding: 6px 12px;
+  line-height: 1.42857143;
+  text-decoration: none;
+  color: #337ab7;
+  background-color: #fff;
+  border: 1px solid #ABABAB;
+  margin-left: -1px;
+}
+.pagination > .active >a{
+  z-index: 3;
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #337ab7;
+  cursor: default;
+}
+.arrowRed {
+font-size: 30px;
+color: red;
+}
+.arrowGreen {
+font-size: 30px;
+color: green;
+}
+.ng-invalid  { border: 1px ridge #ddd; }
+.testMain{
+	width:100%;
+	margin-bottom:20px;
+	min-height:400px;
+	margin-top:10px;
+}
+.testNotification{
+	padding:0px;
+}
+.testImgIcon{
+	margin-left:5px;
+	margin-right:10px;
+	padding-right:10px;
+}
+.testCol{
+	background-color:#f2f2f2;
+	width:25%;
+	margin-left:35px;
+}
+.check{
+	 margin-left:10px;
+	margin-right:10px;
+}
+.btnRunTest{
+	background-color:#f2f2f2;
+	width:75%;
+	height:75px;
+	margin-left:35px;
+	margin-bottom:35px;
+}
+.ReportMain{
+	width:100%;
+    min-height:400px;
+    margin-top:10px;
+}
+.ReportNotification{
+	padding:0px;
+	margin-right:10px;
+	text-align:center;
+}
+.ReportImgIcon{
+	margin-left:5px;
+	margin-right:10px;
+}
+input[type=checkbox] { 
+	padding-right: 3px;
+	!important;
+	}
+	
+.header{  
+     margin-top:20px;
+     width:1145px;
+     height:45px;
+     margin-bottom:5px;
+     font-family:Trebuchet MS, Arial, Helvetica, sans-serif;
+     font-size: 20px;
+     background: linear-gradient(to top, #f8f8f8 0%, #8F8484 83%);
+     padding-top:15px;
+
+}
+.footer{  
+     margin-top:10px;
+     width:1145px;
+     height:30px;
+     margin-bottom:5px;
+     font-family:Trebuchet MS, Arial, Helvetica, sans-serif;
+     font-size: 15px;
+     background: linear-gradient(to top, #f8f8f8 0%, #8F8484 83%);
+     padding-top:15px;
+
+}
+.btn-danger{
+	background-color: #ffb3b3;
+	width: 1090px;
+	text-align: left;
+	color:black;
+	height:45px;
+}
+.btn-success{
+	width: 1090px;
+	text-align: left;
+	color:black;
+	background-color: #66cc66;
+	height:45px;
+	
+}
+.btn-warning{
+	width: 1090px;
+	text-align: left;
+	color:black;
+	height:45px;
+	background-color: #ffff99;
+}
+/* Dropdown Button */
+.dropbtn {
+    background-color: #ffe0b3;
+    font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
+    color: #333333;
+    padding: 15px;
+    font-size: 17px;
+    border: none;
+    padding-right:20px;
+    padding-left: 30px;
+}
+
+/* The container <div> - needed to position the dropdown content */
+.dropdown {
+    position: relative;
+    display: inline-block;
+}
+
+/* Dropdown Content (Hidden by Default) */
+.dropdown-content {
+    display: none;
+    position: absolute;
+    background-color: #f1f1f1;
+    min-width: 240px;
+    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
+    z-index: 1;
+}
+
+/* Links inside the dropdown */
+.dropdown-content a {
+    color: black;
+    padding: 12px 16px;
+    text-decoration: none;
+    display: block;
+    font-family: Trebuchet MS, Arial, Helvetica, sans-serif;
+}
+
+/* Change color of dropdown links on hover */
+.dropdown-content a:hover {background-color: #ddd}
+
+/* Show the dropdown menu on hover */
+.dropdown:hover .dropdown-content {
+    display: block;
+    color: black;
+}
+
+
+.navbar-default .navbar-nav>li> a:hover {background-color: #ddd}
+.btnapply{
+     background-color:#AED6F1 ;
+     margin-top:10px;
+     margin-bottom:10px;
+     margin-right:20px;
+     width:150px;
+     height:30px;
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     border: 1px solid #5DADE2;
+     font-weight:700;
+}
+
+
+.btnview{
+    background-color: #AED6F1;
+     margin-top:8px;
+     margin-bottom:10px;
+     margin-right:20px;
+     width:150px;
+     height:30px;
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     border: 1px solid #5DADE2;
+     font-weight:700;
+}
+.btnview:hover {background-color:  #85C1E9}
+
+.btnview:active {
+  background-color:  #85C1E9;
+  box-shadow: 0 5px  #85C1E9;
+  transform: translateY(4px);
+}
+
+.btnapplycfg{
+     background-color: #AED6F1;
+     margin-top:8px;
+     margin-bottom:10px;
+     margin-right:20px;
+     width:150px;
+     height:30px;
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     border: 1px solid #5DADE2;
+     font-weight:700;
+}
+.btnapplycfg:hover {background-color: #85C1E9}
+
+.btnapplycfg:active {
+  background-color: #85C1E9;
+  box-shadow: 0 5px  #85C1E9;
+  transform: translateY(4px);
+}
+
+.navbar-default .navbar-nav>li> a:hover {background-color: #FFFF00}
+
+ .btnCompareVersion{
+     background-color: #AED6F1;
+     margin-top:8px;
+     margin-bottom:10px;
+     margin-right:20px;
+     width:150px;
+     height:30px;
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     border: 1px solid #5DADE2;
+     font-weight:700;
+}
+
+.btnCompareVersion:hover {background-color:  #85C1E9}
+
+.btnCompareVersion:active {
+  background-color: #85C1E9;
+  box-shadow: 0 5px  #85C1E9;
+  transform: translateY(4px);
+  border-collapse: collapse;
+  border: 2px solid #5DADE2;
+}
+
+.btnapply{
+     background-color: #AED6F1;
+     margin-top:8px;
+     margin-bottom:10px;
+     margin-right:20px;
+     width:150px;
+     height:30px;
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     border: 1px solid #5DADE2;
+     font-weight:700;
+}
+
+.btnapply:hover {background-color: #85C1E9}
+
+.btnapply:active {
+  background-color: #85C1E9;
+  box-shadow: 0 5px #85C1E9;
+  transform: translateY(4px);
+  border-collapse: collapse;
+  border: 2px solid #5DADE2;
+}
+
+.Formclass{
+	width:100%;
+    margin-top:30px;
+    min-height:10000;
+} 
+
+.VersionMain{
+	width:100%;
+    margin-top:60px;
+    min-height:2200px;
+    border: 0.5px solid lightgrey;
+} 
+
+.versionHeading{
+     width:100%;
+     height:35px;
+     margin-bottom:20px;
+     background-color: #cce5ff;
+     font-family:Trebuchet MS, Arial, Helvetica, sans-serif;
+     margin-right: -15px;
+     font-size: 15px;
+     padding-top:5px;
+     color:black;
+
+}
+{
+    box-sizing: border-box;
+
+}
+
+.columnsVersionview{
+    float: left;
+    width: 50%;
+    padding: 8px;
+    border-radius: 15px;
+}
+
+.price {
+    list-style-type: none;
+    border: 1px solid grey;
+    border-radius: 25px;
+    margin: 0;
+    padding: 0;
+    -webkit-transition: 0.3s;
+    transition: 0.3s;
+}
+
+.price:hover {
+    box-shadow: 0 8px 12px 0 rgba(0,0,0,0.2)
+}
+
+.price .headerVersion {
+    background-color:#484848;
+    color: white;
+    font-size: 15px;
+    border-radius: 50px;
+    height:40px;
+}
+
+.price li {
+    border-bottom: 1px solid #eee;
+    padding: 5px;
+    text-align: center;
+    font-size: 12px;
+    word-wrap: break-word;
+}
+
+.price .grey {
+    background-color: #FFCCCC;
+    font-size: 12px;
+    margin-left:20px;
+    margin-right:20px;
+}
+
+@media only screen and (max-width: 600px) {
+    .columnsVersion {
+        width: 100%;
+    }
+}
+.separator{
+	border-color:darkgrey;
+	min-height:2px;
+}
+.listHeading{
+	background-color: #ffcccc;
+}
+table.tableCompare{
+     font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
+     border-collapse: collapse;
+     width: 100%;
+     table-layout: auto;
+}
+ table.tableCompare tr:nth-child(even){
+     background-color: #E1E0DA;
+}
+ table.tableCompare th{
+     padding-top: 12px;
+     padding-bottom: 12px;
+     text-align: left;
+     background: linear-gradient(to top, #f8f8f8 0%, #cce5ff 83%);
+     color: black;
+}
+ table.tableCompare td,table.tableCompare th {
+     min-width:100px;
+     padding: 3px;
+     height:10%;
+     max-width:200px;
+}
+ table.tableCompare tr:{
+     text-align: left;
+     height:105;;
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/style/w3.css b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/style/w3.css
new file mode 100644
index 0000000..e73d269
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/style/w3.css
@@ -0,0 +1,231 @@
+/* W3.CSS 4.10 February 2018 by Jan Egil and Borge Refsnes */
+html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
+/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */
+html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}
+article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}
+audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline}
+audio:not([controls]){display:none;height:0}[hidden],template{display:none}
+a{background-color:transparent;-webkit-text-decoration-skip:objects}
+a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}
+dfn{font-style:italic}mark{background:#ff0;color:#000}
+small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}svg:not(:root){overflow:hidden}
+code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}
+button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:bold}
+button,input{overflow:visible}button,select{text-transform:none}
+button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}
+button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner{border-style:none;padding:0}
+button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring{outline:1px dotted ButtonText}
+fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
+legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}
+[type=checkbox],[type=radio]{padding:0}
+[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}
+[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
+[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}
+::-webkit-input-placeholder{color:inherit;opacity:0.54}
+::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
+/* End extract */
+html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden}
+h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif}
+h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px}
+hr{border:0;border-top:1px solid #eee;margin:20px 0}
+.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit}
+.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc}
+.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1}
+.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1}
+.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center}
+.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
+.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px}
+.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap}
+.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}
+.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}   
+.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none}
+.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none}
+.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%}
+.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none}
+.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block}
+.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s}
+.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%}
+.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc}
+.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer}
+.w3-dropdown-hover:hover .w3-dropdown-content{display:block}
+.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000}
+.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000}
+.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1}
+.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px}
+.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
+.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%}
+.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%}
+.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px}
+.w3-main,#main{transition:margin-left .4s}
+.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}
+.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}
+.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto}
+.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0}
+.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left}
+.w3-bar .w3-button{white-space:normal}
+.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0}
+.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%}
+.w3-responsive{display:block;overflow-x:auto}
+.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before,
+.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both}
+.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%}
+.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%}
+.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%}
+.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%}
+@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%}
+.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%}
+.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}}
+@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%}
+.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%}
+.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}}
+.w3-content{max-width:980px;margin:auto}.w3-rest{overflow:hidden}
+.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell}
+.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom}
+.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important}
+@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px}
+.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative}	
+.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center}
+.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}}
+@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}}
+@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}}
+@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}}
+@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}}
+.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0}
+.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2}
+.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0}
+.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0}
+.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}
+.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)}
+.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)}
+.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
+.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
+.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none}
+.w3-display-position{position:absolute}
+.w3-circle{border-radius:50%}
+.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px}
+.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px}
+.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px}
+.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px}
+.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
+.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
+.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}
+.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)}
+.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
+.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
+.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
+.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
+.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
+.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
+.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
+.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
+.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important}
+.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1}
+.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75}
+.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)}
+.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)}
+.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)}
+.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important}
+.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important}
+.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important}
+.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important}
+.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important}
+.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important}
+.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important}
+.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important}
+.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important}
+.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important}
+.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important}
+.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important}
+.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important}
+.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important}
+.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important}
+.w3-left{float:left!important}.w3-right{float:right!important}
+.w3-button:hover{color:#000!important;background-color:#ccc!important}
+.w3-transparent,.w3-hover-none:hover{background-color:transparent!important}
+.w3-hover-none:hover{box-shadow:none!important}
+/* Colors */
+.w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important}
+.w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important}
+.w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#2196F3!important}
+.w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important}
+.w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important}
+.w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important}
+.w3-blue-grey,.w3-hover-blue-grey:hover,.w3-blue-gray,.w3-hover-blue-gray:hover{color:#fff!important;background-color:#607d8b!important}
+.w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important}
+.w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important}
+.w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important}
+.w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important}
+.w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important}
+.w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important}
+.w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important}
+.w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important}
+.w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important}
+.w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important}
+.w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important}
+.w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important}
+.w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important}
+.w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important}
+.w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important}
+.w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important}
+.w3-grey,.w3-hover-grey:hover,.w3-gray,.w3-hover-gray:hover{color:#000!important;background-color:#9e9e9e!important}
+.w3-light-grey,.w3-hover-light-grey:hover,.w3-light-gray,.w3-hover-light-gray:hover{color:#000!important;background-color:#f1f1f1!important}
+.w3-dark-grey,.w3-hover-dark-grey:hover,.w3-dark-gray,.w3-hover-dark-gray:hover{color:#fff!important;background-color:#616161!important}
+.w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffdddd!important}
+.w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#ddffdd!important}
+.w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffcc!important}
+.w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#ddffff!important}
+.w3-text-amber,.w3-hover-text-amber:hover{color:#ffc107!important}
+.w3-text-aqua,.w3-hover-text-aqua:hover{color:#00ffff!important}
+.w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important}
+.w3-text-light-blue,.w3-hover-text-light-blue:hover{color:#87CEEB!important}
+.w3-text-brown,.w3-hover-text-brown:hover{color:#795548!important}
+.w3-text-cyan,.w3-hover-text-cyan:hover{color:#00bcd4!important}
+.w3-text-blue-grey,.w3-hover-text-blue-grey:hover,.w3-text-blue-gray,.w3-hover-text-blue-gray:hover{color:#607d8b!important}
+.w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important}
+.w3-text-light-green,.w3-hover-text-light-green:hover{color:#8bc34a!important}
+.w3-text-indigo,.w3-hover-text-indigo:hover{color:#3f51b5!important}
+.w3-text-khaki,.w3-hover-text-khaki:hover{color:#b4aa50!important}
+.w3-text-lime,.w3-hover-text-lime:hover{color:#cddc39!important}
+.w3-text-orange,.w3-hover-text-orange:hover{color:#ff9800!important}
+.w3-text-deep-orange,.w3-hover-text-deep-orange:hover{color:#ff5722!important}
+.w3-text-pink,.w3-hover-text-pink:hover{color:#e91e63!important}
+.w3-text-purple,.w3-hover-text-purple:hover{color:#9c27b0!important}
+.w3-text-deep-purple,.w3-hover-text-deep-purple:hover{color:#673ab7!important}
+.w3-text-red,.w3-hover-text-red:hover{color:#f44336!important}
+.w3-text-sand,.w3-hover-text-sand:hover{color:#fdf5e6!important}
+.w3-text-teal,.w3-hover-text-teal:hover{color:#009688!important}
+.w3-text-yellow,.w3-hover-text-yellow:hover{color:#d2be0e!important}
+.w3-text-white,.w3-hover-text-white:hover{color:#fff!important}
+.w3-text-black,.w3-hover-text-black:hover{color:#000!important}
+.w3-text-grey,.w3-hover-text-grey:hover,.w3-text-gray,.w3-hover-text-gray:hover{color:#757575!important}
+.w3-text-light-grey,.w3-hover-text-light-grey:hover,.w3-text-light-gray,.w3-hover-text-light-gray:hover{color:#f1f1f1!important}
+.w3-text-dark-grey,.w3-hover-text-dark-grey:hover,.w3-text-dark-gray,.w3-hover-text-dark-gray:hover{color:#3a3a3a!important}
+.w3-border-amber,.w3-hover-border-amber:hover{border-color:#ffc107!important}
+.w3-border-aqua,.w3-hover-border-aqua:hover{border-color:#00ffff!important}
+.w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important}
+.w3-border-light-blue,.w3-hover-border-light-blue:hover{border-color:#87CEEB!important}
+.w3-border-brown,.w3-hover-border-brown:hover{border-color:#795548!important}
+.w3-border-cyan,.w3-hover-border-cyan:hover{border-color:#00bcd4!important}
+.w3-border-blue-grey,.w3-hover-border-blue-grey:hover,.w3-border-blue-gray,.w3-hover-border-blue-gray:hover{border-color:#607d8b!important}
+.w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important}
+.w3-border-light-green,.w3-hover-border-light-green:hover{border-color:#8bc34a!important}
+.w3-border-indigo,.w3-hover-border-indigo:hover{border-color:#3f51b5!important}
+.w3-border-khaki,.w3-hover-border-khaki:hover{border-color:#f0e68c!important}
+.w3-border-lime,.w3-hover-border-lime:hover{border-color:#cddc39!important}
+.w3-border-orange,.w3-hover-border-orange:hover{border-color:#ff9800!important}
+.w3-border-deep-orange,.w3-hover-border-deep-orange:hover{border-color:#ff5722!important}
+.w3-border-pink,.w3-hover-border-pink:hover{border-color:#e91e63!important}
+.w3-border-purple,.w3-hover-border-purple:hover{border-color:#9c27b0!important}
+.w3-border-deep-purple,.w3-hover-border-deep-purple:hover{border-color:#673ab7!important}
+.w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important}
+.w3-border-sand,.w3-hover-border-sand:hover{border-color:#fdf5e6!important}
+.w3-border-teal,.w3-hover-border-teal:hover{border-color:#009688!important}
+.w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important}
+.w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important}
+.w3-border-black,.w3-hover-border-black:hover{border-color:#000!important}
+.w3-border-grey,.w3-hover-border-grey:hover,.w3-border-gray,.w3-hover-border-gray:hover{border-color:#9e9e9e!important}
+.w3-border-light-grey,.w3-hover-border-light-grey:hover,.w3-border-light-gray,.w3-hover-border-light-gray:hover{border-color:#f1f1f1!important}
+.w3-border-dark-grey,.w3-hover-border-dark-grey:hover,.w3-border-dark-gray,.w3-hover-border-dark-gray:hover{border-color:#616161!important}
+.w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important}
+.w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffcc!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/footer.html b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/footer.html
new file mode 100644
index 0000000..9d252bf
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/footer.html
@@ -0,0 +1,3 @@
+<div class="footer">
+ <p style="margin-left:20px;text-align:center"> @Copyright 2018 All rights reserved</p>
+</div>
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-applyConfig.jsp b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-applyConfig.jsp
new file mode 100644
index 0000000..c686b38
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-applyConfig.jsp
@@ -0,0 +1,58 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * Licensed under the Apache License, Version 2.0 (the "License");
+   * you may not use this file except in compliance with the License.
+   * You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License.
+   * ============LICENSE_END=========================================================
+   */
+    -->
+<div class="ReportMain" >
+   <div class="heading"><img src="static/images/Apply.jpg" width=50 height="40"  style="margin-left:5px;">&nbsp;&nbsp;Apply Configruation</div>
+   <form name="myForm" style="background-color: #f2f2f2;padding:20px 15px;border: 1px ridge #ddd">
+    <div growl></div>
+    
+     <div class="row">
+			<div class="column"
+				style="width: 20%; background-color: #f2f2f2; height: 35px; margin-left: 35px;">
+				<label class="labeltext">Select Avaliable VNF</label>
+			</div>
+			<div class="column"
+				style="background-color: #f2f2f2; width: 45%; height: 55px; margin-left: 0px;">
+				<select class="form-control" style="width: 100%; margin-top: 0px;"
+					name="select" ng-model="selectedValueVnf"
+					ng-change=selectVnf(selectedValueVnf) required>
+					<option ng-repeat="vnf in objvnfList" value="{{vnf.vnfId}}">VnfId-
+						{{vnf.vnfId}}&nbsp;VnfName- {{vnf.vnfName}}</option>
+					<option value="">Select VNF</option>
+				</select>
+				<div role="alert">
+					<span class="error" ng-show="myForm.select.$error.required">
+						Required!</span>
+				</div>
+			</div>
+		</div>
+<br><br>
+        <div class="row" style="background-color:#f2f2f2;width:100%;margin-left:1px;height:100px" ng-show="ShowResult">  
+        <div class="column" style="width:30%;height:55px;margin-left:35px;"> 
+	<input type="file" style="width:300px" id="myFileInput" ng-model="file" accept=".json"/>
+	</div>
+ 	<div class="column" style="width:50%;height:55px;margin-left:10px;"> 
+ 	<button type="submit" class="btnapply" ng-click="submit()">Apply Config</button>
+   </div>
+   </div>
+    </form>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-backupConfig.html b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-backupConfig.html
new file mode 100644
index 0000000..15c1c4b
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-backupConfig.html
@@ -0,0 +1,39 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * Licensed under the Apache License, Version 2.0 (the "License");
+   * you may not use this file except in compliance with the License.
+   * You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License.
+   * ============LICENSE_END=========================================================
+   */
+    -->
+<div class="ReportMain">
+   <div class="heading"><img src="static/images/backupConfig.png" width=50 height="40"  style="margin-left:5px;">&nbsp;&nbsp;Backup Configruation
+   <label style="float: right; margin-right: 84px;"><font size='2'>Last Updated Time : <span style="color:red">{{lastModifiedTime}}</span></font></label>
+   </div>
+   <form name="myForm">
+    <div growl></div>
+      <div class="row"> 
+         
+      </div>
+      <div class="row">
+         <div class="column" style="background-color:#f2f2f2;width:97%;border: 1px solid #ddd;">
+           <input type="button" class="btnapply" ng-click="invokeBackup()" value=" Config Backup" />
+         </div>
+      </div>
+      <div class="row">
+         
+      </div>
+    </form>
+</div>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-compareConfig.html b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-compareConfig.html
new file mode 100644
index 0000000..6acaa0e
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-compareConfig.html
@@ -0,0 +1,85 @@
+ <!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * Licensed under the Apache License, Version 2.0 (the "License");
+   * you may not use this file except in compliance with the License.
+   * You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License.
+   * ============LICENSE_END=========================================================
+   */
+    -->
+<div class="ReportMain">
+   <div class="heading"><img src="static/images/compare.png" width=45 height="40" style="margin-left:5px;">&nbsp;&nbsp;Compare Configruation</div>
+   <form name="myForm" class="Formclass">
+      <div growl></div>
+      <div class="row" style="background-color:#f2f2f2;width:100%;margin-left:1px; border: 1px solid #ddd;">
+         <div class="column" style="width:30%;background-color:#f2f2f2;height:55px;margin-left:40px;"> 
+            <label class="labeltext">Select Avaliable VNF</label>
+         </div>
+         <div  class="column" style="background-color:#f2f2f2;width:60%;height:55px;margin-left:0px;">
+            <select  class="form-control" style="width:100%;margin-top:0px;" ng-model="selectedValueVnf"  ng-change="selectVnf(selectedValueVnf)">
+               <option  ng-repeat="vnf in objvnfList" value="{{vnf.vnfid}}">VnfId- {{vnf.vnfid}}&nbsp;VnfName- {{vnf.vnfname}}</option>
+               <option  value="">Select VNFId</option>
+            </select>
+         </div>
+      </div>
+      <table class="tableDisplay" ng-show="ShowResult" id="tableToExport" style="margin-top:15px;">
+         <tr class="first_row" style="background-color:#6D7B8D;">
+            <th>SNo.
+            </th>
+            <th>VersionNo
+            </th>
+            <th>Backup Date
+            </th>
+           <th>Updated Date
+            </th>
+            <th>Action</th>
+         </tr>
+          <tr ng-repeat="version in pagedItems[currentPage] | orderBy:sort.sortingOrder:sort.reverse">
+          <td>{{ ($index + 1) + (currentPage - 1) * itemsPerPage + 5}}</td>
+            <td>{{version.vnfversion}}</td>
+            <td>{{version.createdAt}}</td>
+            <td>{{version.updatedAt}}</td>
+            <td><input type=checkbox ng-model="version.selected">
+            </td>
+         </tr>
+         
+         <td colspan="5" ng-if="pagedItems.length > 5">
+         <!-- ng-show="pagedItems.length > 5"  -->
+				<ul class="pagination pull-right">
+					<li ng-class="{disabled: currentPage == 0}"><a href
+						ng-click="prevPage()">&laquo;</a></li>
+					<li ng-repeat="n in range(pagedItems.length, currentPage, currentPage + gap) "
+						ng-class="{active: n == currentPage}" ng-click="setPage()"><a
+						href ng-bind="n + 1">1</a></li>
+					<li ng-class="{disabled: (currentPage) == pagedItems.length - 1}">
+						<a href ng-click="nextPage()">&raquo;</a>
+					</li>
+				</ul>
+			</td>
+         
+         <tr>
+          <td colspan="5">
+           <div class="row pull-right">           
+         <button type="button" class="btnview"  ng-click="ViewConfig(objVersion)" ng-show="showView" ng-model="version.selected" >View Config</button>
+         <button type="button" class="btnapplycfg" ng-click="ApplyConfig(objVersion)" >Apply Config</button>
+         <button type="button"  class="btnCompareVersion" ng-click="CompareConfig(objVersion)" ng-show="showCompare" ng-model="version.selected" >Compare Config</button>
+         </div>
+     	 </td>
+       	</tr> 
+      </table>
+       <div id="compare" ng-form = "compare" ng-include="" src="'static/views/form-deviceConfig.html'"></div>
+        <div id="view" ng-form = "view" ng-include="" src="'static/views/form-deviceConfigView.html'"></div>
+       
+   </form>
+</div>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-deviceConfig.html b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-deviceConfig.html
new file mode 100644
index 0000000..fb5248c
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-deviceConfig.html
@@ -0,0 +1,467 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * Licensed under the Apache License, Version 2.0 (the "License");
+   * you may not use this file except in compliance with the License.
+   * You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License.
+   * ============LICENSE_END=========================================================
+   */
+    -->
+<!-- <div class="VersionMain" ng-show="showResult">
+   <div class="versionHeading"><img src="static/images/compare.jpg" width=25 height="25" style="margin-left:5px;">&nbsp;&nbsp;Version Comparision Result</div>
+   <div class="columnsVersion">
+      <ul class="price">
+         <li class="headerVersion">Attributes</li>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Config Details</li>
+            <li ng-repeat="(key,value) in objCompareModel1.versionDetails">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology</li>
+            <li ng-repeat="(key,value) in objCompareModel1.topologyInfo">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;" ng-if="objCompareModel1.networkTopologyInfo.length>=1">
+            <li class="listHeading">Network Topology</li>
+            <li ng-repeat="(key,value) in objCompareModel1.networkTopologyInfo">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Operation Status</li>
+            <li ng-repeat="(key,value) in objCompareModel1.operationStatus">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology Identifer</li>
+            <li ng-repeat="(key,value) in objCompareModel1.vnfTopologyIdentifier">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+      </ul>
+   </div>
+   <div class="columnsVersion">
+      <ul class="price">
+         <li class="headerVersion" style="background-color:#807C7C">Version {{objCompareModel1.versionDetails.vnfversion}}</li>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Config Details</li>
+            <li ng-repeat="(key,value) in objCompareModel1.versionDetails">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology</li>
+            <li  ng-repeat="(key,value) in objCompareModel1.topologyInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;" ng-if="objCompareModel1.networkTopologyInfo.length>=1">
+            <li class="listHeading">Network Topology</li>
+            <li ng-repeat="(key,value) in objCompareModel1.networkTopologyInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Operation Status</li>
+            <li ng-repeat="(key,value) in objCompareModel1.operationStatus">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology Identifer</li>
+            <li ng-repeat="(key,value) in objCompareModel1.vnfTopologyIdentifier">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+      </ul>
+   </div>
+   <div class="columnsVersion">
+      <ul class="price">
+         <li class="headerVersion"style="background-color:#807C7C">Version {{objCompareModel2.versionDetails.vnfversion}}</li>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Config Details</li>
+            <li ng-repeat="(key,value) in objCompareModel2.versionDetails">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology</li>
+            <li ng-repeat="(key,value) in objCompareModel2.topologyInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;" ng-if="objCompareModel1.networkTopologyInfo.length>=1">
+            <li class="listHeading">Network Topology</li>
+            <li ng-repeat="(key,value) in objCompareModel2.networkTopologyInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Operation Status</li>
+            <li ng-repeat="(key,value) in objCompareModel2.operationStatus">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology Identifer</li>
+            <li ng-repeat="(key,value) in objCompareModel2.vnfTopologyIdentifier">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+      </ul>
+   </div>
+</div> -->
+
+
+
+<div id = "Div1" class="VersionMain" ng-show="showResult" >
+   <div class="versionHeading"><img src="static/images/compare.jpg" width=25 height="25" style="margin-left:5px;">&nbsp;&nbsp;Version Comparision Result</div>
+  <table class="tableCompare" >
+  <td style="width:230px;">
+   
+      <ul class="price" style="font-weight:bold;">
+         <li class="headerVersion">Attributes</li>
+         <div style="background-color:#E1E0DA;">
+            <li  class="listHeading">Config Details</li>
+            <li  ng-repeat="(key,value) in objCompareModel1.versionDetails">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF ID</li>
+            <li ng-repeat="(key,value) in objCompareModel1.vnfIdInfo">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">SERVICE STATUS</li>
+            <li ng-repeat="(key,value) in objCompareModel1.serviceStatusInfo">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology Identifer</li>
+            <li ng-repeat="(key,value) in objCompareModel1.vnfTopologyIdentifier">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Operation Status</li>
+            <li ng-repeat="(key,value) in objCompareModel1.operationStatus">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Request Info</li>
+            <li ng-repeat="(key,value) in objCompareModel1.vnfRequestInfo">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Service Info</li>
+            <li ng-repeat="(key,value) in objCompareModel1.serviceInfo">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Service Request Header</li>
+            <li ng-repeat="(key,value) in objCompareModel1.requestHeader">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Request Information</li>
+            <li ng-repeat="(key,value) in objCompareModel1.requestInfo">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology</li>
+            <li ng-repeat="(key,value) in objCompareModel1.topologyInfo">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+      </ul>
+  
+  </td><td>
+   
+      <ul class="price">
+         <li class="headerVersion" style="background-color:#807C7C">Version {{objCompareModel1.versionDetails.vnfversion}}</li>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Config Details</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.versionDetails">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;" >
+            <li class="listHeading">VNF ID</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.vnfIdInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">SERVICE STATUS</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.serviceStatusInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology Identifer</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.vnfTopologyIdentifier">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Operation Status</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.operationStatus">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Request Info</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.vnfRequestInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Service Info</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.serviceInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Service Request Header</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.requestHeader">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Request Information</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.requestInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.topologyInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+       </ul>
+  
+</td><td>
+     
+         <ul class="price">
+         <li class="headerVersion"style="background-color:#807C7C">Version {{objCompareModel2.versionDetails.vnfversion}}</li>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Config Details</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel2.versionDetails">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF ID</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel2.vnfIdInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">SERVICE STATUS</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel2.serviceStatusInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology Identifer</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel2.vnfTopologyIdentifier">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Operation Status</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel2.operationStatus">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Request Info</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel2.vnfRequestInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+  		<div style="background-color:#E1E0DA;">
+            <li class="listHeading">Service Info</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel2.serviceInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+  		<div style="background-color:#E1E0DA;">
+            <li class="listHeading">Service Request Header</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel2.requestHeader">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Request Information</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel2.requestInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel2.topologyInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+      </ul>
+   
+</td><td ng-show=version3>
+
+         <ul class="price">
+         <li class="headerVersion"style="background-color:#807C7C">Version {{objCompareModel3.versionDetails.vnfversion}}</li>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Config Details</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel3.versionDetails">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF ID</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel3.vnfIdInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">SERVICE STATUS</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel3.serviceStatusInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology Identifer</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel3.vnfTopologyIdentifier">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Operation Status</li>
+            <li  style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel3.operationStatus">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Request Info</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel3.vnfRequestInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+  		<div style="background-color:#E1E0DA;">
+            <li class="listHeading">Service Info</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel3.serviceInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+  		<div style="background-color:#E1E0DA;">
+            <li class="listHeading">Service Request Header</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel3.requestHeader">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Request Information</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel3.requestInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel3.topologyInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+      </ul>
+  
+</td><td ng-show=version4>
+
+         <ul class="price">
+         <li class="headerVersion"style="background-color:#807C7C">Version {{objCompareModel4.versionDetails.vnfversion}}</li>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Config Details</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel4.versionDetails">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF ID</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel4.vnfIdInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">SERVICE STATUS</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel4.serviceStatusInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology Identifer</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel4.vnfTopologyIdentifier">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Operation Status</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel4.operationStatus">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Request Info</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel4.vnfRequestInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+  		<div style="background-color:#E1E0DA;">
+            <li class="listHeading">Service Info</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel4.serviceInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+  		<div style="background-color:#E1E0DA;">
+            <li class="listHeading">Service Request Header</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel4.requestHeader">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Request Information</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel4.requestInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel4.topologyInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+      </ul>
+  
+   </td>
+</table>
+</div>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-deviceConfigView.html b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-deviceConfigView.html
new file mode 100644
index 0000000..d6cf2fd
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-deviceConfigView.html
@@ -0,0 +1,154 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * Licensed under the Apache License, Version 2.0 (the "License");
+   * you may not use this file except in compliance with the License.
+   * You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License.
+   * ============LICENSE_END=========================================================
+   */
+    -->
+  <div class="VersionMain" ng-show="showResult">
+   <div class="versionHeading"><img src="static/images/compare.jpg" width=25 height="25" style="margin-left:5px;">&nbsp;&nbsp;Version Comparision Result</div>
+   <div class="columnsVersionview">
+      <ul class="price">
+         <li class="headerVersion">Attributes</li>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Config Details</li>
+            <li ng-repeat="(key,value) in objCompareModel1.versionDetails">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF ID</li>
+            <li ng-repeat="(key,value) in objCompareModel1.vnfIdInfo">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">SERVICE STATUS</li>
+            <li ng-repeat="(key,value) in objCompareModel1.serviceStatusInfo">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology Identifer</li>
+            <li ng-repeat="(key,value) in objCompareModel1.vnfTopologyIdentifier">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Operation Status</li>
+            <li ng-repeat="(key,value) in objCompareModel1.operationStatus">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Request Info</li>
+            <li ng-repeat="(key,value) in objCompareModel1.vnfRequestInfo">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Service Info</li>
+            <li ng-repeat="(key,value) in objCompareModel1.serviceInfo">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Service Request Header</li>
+            <li ng-repeat="(key,value) in objCompareModel1.requestHeader">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Request Information</li>
+            <li ng-repeat="(key,value) in objCompareModel1.requestInfo">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology</li>
+            <li ng-repeat="(key,value) in objCompareModel1.topologyInfo">{{key}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+      </ul>
+   </div>
+   <div class="columnsVersionview">
+      <ul class="price">
+         <li class="headerVersion" style="background-color:#807C7C">Version {{objCompareModel1.versionDetails.vnfversion}}</li>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Config Details</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.versionDetails">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;" >
+            <li class="listHeading">VNF ID</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.vnfIdInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">SERVICE STATUS</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.serviceStatusInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology Identifer</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.vnfTopologyIdentifier">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Operation Status</li>
+            <li ng-repeat="(key,value) in objCompareModel1.operationStatus">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+          <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Request Info</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.vnfRequestInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Service Info</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.serviceInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Service Request Header</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.requestHeader">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">Request Information</li>
+            <li style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.requestInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+         <div style="background-color:#E1E0DA;">
+            <li class="listHeading">VNF Topology</li>
+            <li style="height:29px;overflow: auto;" style="height:29px;overflow: auto;" ng-repeat="(key,value) in objCompareModel1.topologyInfo">{{value}}</li>
+            <hr class="separator">
+            </hr>
+         </div>
+       </ul>
+   </div>
+
+</div>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-validationTest.html b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-validationTest.html
new file mode 100644
index 0000000..0bf39f6
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-validationTest.html
@@ -0,0 +1,135 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * Licensed under the Apache License, Version 2.0 (the "License");
+   * you may not use this file except in compliance with the License.
+   * You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License.
+   * ============LICENSE_END=========================================================
+   */
+    -->
+<div  class="testMain">
+   <div class="heading"><img src="static/images/validation.png" width=30 height="30" style="margin-left:5px;">&nbsp;&nbsp;Pre-test/Certification</div>
+   <form name="reportForm">
+    <div growl></div>
+      <div class="row">
+         <div class="column testCol">
+            <label class="labeltext">Specify IP Address</label>
+         </div>
+         <div class="column" style="background-color:#f2f2f2;width:50%;margin-left:0px;">
+            <input type="text" ng-model="IPAddress" name="IPAddress" style="margin-left:5px;width:170px;" ng-ip-address placeholder='255.255.255.255' required></input>
+            <div role="alert">
+               <span class="error" ng-show="reportForm.IPAddress.$error.required">Required!</span>
+            </div>
+            <div role="alert">
+               <span class="error" ng-if="reportForm.IPAddress.$invalid">Not a valid IPAddress!</span>
+            </div>
+            <div role="alert">
+               <span class="error" ng-if="reportForm.IPAddress.pattern">Not a valid IPAddress!</span>
+            </div>
+         </div>
+      </div>
+      <div class="row">
+         <div class="column testCol">
+            <label class="labeltext">Specify Host Name</label>
+         </div>
+         <div class="column" style="background-color:#f2f2f2;width:50%;margin-left:0px;">
+            <input type="text" ng-model="HostName" name="HostName" style="margin-left:5px;width:170px;"  required ng-pattern="hostNamePattern"></input>
+            <div role="alert">
+               <span class="error" ng-show="reportForm.HostName.$error.required">Required!</span>
+            </div>
+            <div role="alert">
+               <span class="error" ng-show="reportForm.HostName.$invalid">Not a valid HostName!</span>
+            </div>
+         </div>
+      </div>
+      <div class="row">
+         <div class="column" style="width:25%;background-color:#f2f2f2;height:45px;margin-left:35px;"> 
+            <label class="labeltext">Select Certification</label>
+         </div>
+         <div class="column" style="background-color:#f2f2f2;width:50%;height:45px;margin-left:0px;">
+            <label ng-repeat="val in validationTestList" class="labeltext" style="margin-right:35px;">
+            <input type="checkbox" ng-model="val.Selected" class="check" ng-change="updateSelection($index,validationTestList,val.validationType);">{{val.validationType}}</input>
+            </label>
+         </div>
+      </div>
+      <!--<hr style="border-color:darkGrey;">-->
+      <div class="row">
+         <div class="column btnRunTest">
+            <input type="submit" ng-click="runTest()" value="Run PreTest" id="btnSubmit" ng-disabled="showError" style="margin-left:0px;"/>
+         </div>
+      </div>
+   
+   <table class="tableDisplay" ng-show="ShowResult" id="tableToExport" style="margin-left:10px;width:1000px;">
+      <tr class="first_row">
+         <th>SNo.
+         </th>
+         <th colspan="2" style="text-align:center;">TestName
+         </th>
+         <th>Device IP
+         </th>
+         <th>Status
+         </th>
+         <th style="width:20%;">Statistics (%Loss)</th>
+         <th style="width:20%;">Average Time (ms)</th>
+         <th>Result
+         </th>
+      </tr>
+      <tr ng-repeat="test in objPreTest">
+         <td>{{$index+1}}
+         </td>
+         <td><img src="{{(test.testtype=='Network Layer') ? 'static/images/images.png': 'static/images/protocol.png'}}" width=40 height=30 ></img></td>
+         <td>{{test.testtype}}
+         </td>
+         <td>{{test.ipaddress}}
+         </td>
+         <td>{{test.status | uppercase}}
+         </td>
+         <td>
+            <div ng-show="test.testtype =='Network Layer'" class="w3-light-grey">
+               <div ng-show=test.statistics!=null class="w3-container w3-red w3-center" style="width:{{test.statisticPer}}%">{{test.statistics}}% Loss
+               </div>
+               <div ng-show=test.statistics==null class="w3-orange w3-center" style="width:{{test.statisticPer}}%">No Statistics Recorded
+               </div>
+            </div>
+            <div ng-show="test.testtype =='Protocol Layer'">
+               <img src='static/images/router.png' width=30 height=30 style="margin-bottom:10px;"></img>
+               <span class="{{(test.status == 'unreachable') ? 'arrowRed':'arrowGreen'}}">&#8594;</span><span class="{{(test.status == 'unreachable') ? 'arrowRed':'arrowGreen'}}">&#8594;</span><span class="{{(test.status == 'unreachable') ? 'arrowRed':'arrowGreen'}}">&#8594;				
+               <img src='static/images/router.png' width=30 height=30 ></img>
+            </div>
+         </td>
+         <td>
+            <div ng-show="test.testtype =='Network Layer'" class="w3-light-grey">
+               <div  ng-show=test.avgTime!=null class="w3-container w3-green w3-center" style="width:{{test.avgTimePer}}%">{{test.avgTime}} ms</div>
+               <div ng-show=test.statistics==null class="w3-blue w3-center" style="width:{{test.statisticPer}}%">No AvgTime Recorded
+               </div>
+            </div>
+         </td>
+         <td><img src="{{(test.status=='reachable') ? 'static/images/success.png': 'static/images/FailImage.png'}}" width=30 height=25></img>
+         </td>
+      </tr>
+   </table>
+   <div class="row">
+      <div class="column" style="margin-top:10px;width:800px;" ng-show="ShowResult"> 
+         <span class='arrowRed'>&#8594;</span>
+         <label class="labeltext">UnReachable</label>&nbsp;&nbsp;
+         <span class='arrowGreen'>&#8594;</span>
+         <label class="labeltext">Reachable</label>&nbsp;&nbsp;
+         <span><img src='static/images/success.png' width=30 height=25></span>
+         <label class="labeltext">Pass</label>&nbsp;&nbsp;
+         <span><img src='static/images/FailImage.png' width=30 height=25></span>
+         <label class="labeltext">Fail</label>
+      </div>
+   </div>
+   </form>
+</div>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-versionCompare.html b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-versionCompare.html
new file mode 100644
index 0000000..182c31f
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-versionCompare.html
@@ -0,0 +1,59 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * Licensed under the Apache License, Version 2.0 (the "License");
+   * you may not use this file except in compliance with the License.
+   * You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License.
+   * ============LICENSE_END=========================================================
+   */
+    -->
+<div class="VersionMain">
+   <div class="versionHeading"><img src="images/compare.jpg" width=25 height="25" style="margin-left:5px;">&nbsp;&nbsp;Version Comparision Result</div>
+  
+  <div class="columnsVersion">
+  <ul class="price">
+    <li class="headerVersion">Basic</li>
+    <li class="grey">$ 9.99 / year</li>
+    <li>10GB Storage</li>
+    <li>10 Emails</li>
+    <li>10 Domains</li>
+    <li>1GB Bandwidth</li>
+    <li class="grey"><a href="#" class="button">Sign Up</a></li>
+  </ul>
+</div>
+
+<div class="columnsVersion">
+  <ul class="price">
+    <li class="headerVersion" style="background-color:#4CAF50">Pro</li>
+    <li class="grey">$ 24.99 / year</li>
+    <li>25GB Storage</li>
+    <li>25 Emails</li>
+    <li>25 Domains</li>
+    <li>2GB Bandwidth</li>
+    <li class="grey"><a href="#" class="button">Sign Up</a></li>
+  </ul>
+</div>
+
+<div class="columnsVersion">
+  <ul class="price">
+    <li class="headerVersion">Premium</li>
+    <li class="grey">$ 49.99 / year</li>
+    <li>50GB Storage</li>
+    <li>50 Emails</li>
+    <li>50 Domains</li>
+    <li>5GB Bandwidth</li>
+    <li class="grey"><a href="#" class="button">Sign Up</a></li>
+  </ul>
+</div>
+   </div>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-viewReport.html b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-viewReport.html
new file mode 100644
index 0000000..2537263
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-viewReport.html
@@ -0,0 +1,90 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * Licensed under the Apache License, Version 2.0 (the "License");
+   * you may not use this file except in compliance with the License.
+   * You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License.
+   * ============LICENSE_END=========================================================
+   */
+    -->
+<div class="ReportMain">
+	<div class="heading">
+		<img src="static/images/search.png" width=50 height="40"
+			style="margin-left: 5px;">&nbsp;&nbsp;Search For Vnf Reports
+	</div>
+	<form name="myForm" style="background-color: #f2f2f2;">
+		<div growl></div>
+		<div class="row">
+			<div class="column" style="width: 40%;">
+				<label for="exampleInput" class="labeltext">Start Date</label> <input
+					type="date" id="exampleInput" name="input"
+					ng-model="startdate.value" placeholder="yyyy-MM-dd"
+					style="margin-left: 20px; width: 170px;" required />
+				<div role="alert">
+					<span class="error" ng-show="myForm.input.$error.required">Required!</span>
+					<span class="error" ng-show="myForm.input.$error.date">Not a
+						valid date!</span>
+				</div>
+			</div>
+			<div class="column" style="margin-left: 0px; width: 50%;">
+				<label for="exampleEndInput" class="labeltext">End Date</label> <input
+					type="date" id="exampleEndInput" name="input"
+					ng-model="enddate.value" placeholder="yyyy-MM-dd"
+					style="margin-left: 20px; width: 170px;" required />
+				<div role="alert">
+					<span class="error" ng-show="myForm.input.$error.required">
+						Required!</span> <span class="error" ng-show="myForm.input.$error.date">
+						Not a valid date!</span>
+				</div>
+			</div>
+		</div>
+		<br>
+		<div class="row">
+			<input type="submit" id="btnSubmit"
+				ng-click="getReports(startdate.value,enddate.value)"
+				style="width: 120px;">
+		</div>
+
+		<table class="tableDisplay"
+			style="text-align: center;" ng-show="showresult" id="tableToExport">
+			<tr class="first_row">
+				<th style="text-align: center;">SNo.</th>
+				<th style="text-align: center;">Time Period</th>
+				<th style="text-align: center;">Vnf Name</th>
+				<th style="text-align: center;">Vnf Id</th>
+			</tr>
+			<tr ng-repeat="version in pagedItems[currentPage] | orderBy:sort.sortingOrder:sort.reverse">
+				<td>{{ ($index + 1) + (currentPage - 1) * itemsPerPage + 5}}</td>
+				<td>{{version.createdAt}}</td>
+				<td>{{version.vnfname }}</td>
+				<td>{{version.vnfid}}</td>
+			</tr>
+			 <td colspan="4" ng-show="pagedItems.length > 5" >
+			<!-- ng-show="pagedItems.length > 5" -->
+				<ul class="pagination pull-right" >
+					<li ng-class="{disabled: currentPage == 0}"><a href
+						ng-click="prevPage()">&laquo;</a></li>
+					<li ng-repeat="n in range(pagedItems.length, currentPage, currentPage + gap) "
+						ng-class="{active: n == currentPage}" ng-click="setPage()"><a
+						href ng-bind="n + 1">1</a></li>
+					<li ng-class="{disabled: (currentPage) == pagedItems.length - 1}">
+						<a href ng-click="nextPage()">&raquo;</a>
+					</li>
+				</ul>
+			</td>
+		</table>
+	</form>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-viewReportById.html b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-viewReportById.html
new file mode 100644
index 0000000..6fde31f
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/form-viewReportById.html
@@ -0,0 +1,122 @@
+<!-- /*
+   * ============LICENSE_START=======================================================
+   * ONAP : SDNC-FEATURES
+   * ================================================================================
+   * Copyright 2018 TechMahindra
+   *=================================================================================
+   * Licensed under the Apache License, Version 2.0 (the "License");
+   * you may not use this file except in compliance with the License.
+   * You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License.
+   * ============LICENSE_END=========================================================
+   */
+    -->
+<div class="ReportMain">
+	<div class="heading">
+		<img src="static/images/search.png" width=50 height="40"
+			style="margin-left: 5px;">&nbsp;&nbsp;Search For Vnf Reports
+	</div>
+	<form name="myForm" style="background-color: #f2f2f2;padding:20px 15px;">
+		<div growl></div>
+
+		<div class="row">
+			<div class="column"
+				style="width: 20%; background-color: #f2f2f2; height: 35px; margin-left: 35px;">
+				<label class="labeltext">Select Avaliable VNF</label>
+			</div>
+			<div class="column"
+				style="background-color: #f2f2f2; width: 45%; height: 55px; margin-left: 0px;">
+				<select class="form-control" style="width: 100%; margin-top: 0px;"
+					name="select" ng-model="selectedValueVnf"
+					ng-change=selectVnf(selectedValueVnf) required>
+					<option ng-repeat="vnf in objvnfList" value="{{vnf.vnfid}}">VnfId-
+						{{vnf.vnfid}}&nbsp;VnfName- {{vnf.vnfname}}</option>
+					<option value="">Select VNF</option>
+				</select>
+				<div role="alert">
+					<span class="error" ng-show="myForm.select.$error.required">
+						Required!</span>
+				</div>
+			</div>
+		</div>
+
+		<div class="row" ng-show="ShowResult">
+			<div class="column" style="margin-left: 13px; width: 40%;">
+				<label for="exampleInput" class="labeltext">Start Date</label> <input
+					type="date" id="exampleInput" name="input"
+					ng-model="startdate.value" placeholder="yyyy-MM-dd"
+					style="margin-left: 20px; width: 170px;" required />
+				<div role="alert">
+					<span class="error" ng-show="myForm.input.$error.required">
+						Required!</span> <span class="error" ng-show="myForm.input.$error.date">
+						Not a valid date!</span>
+				</div>
+			</div>
+
+			<div class="column" style="margin-left: 0px; width: 50%;">
+				<label for="exampleEndInput" class="labeltext">End Date</label> <input
+					type="date" id="exampleEndInput" name="input"
+					ng-model="enddate.value" placeholder="yyyy-MM-dd"
+					style="margin-left: 20px; width: 170px;" required />
+				<div role="alert">
+					<span class="error" ng-show="myForm.input.$error.required">
+						Required!</span> <span class="error" ng-show="myForm.input.$error.date">
+						Not a valid date!</span>
+				</div>
+			</div>
+			<br>
+			<div class="column">
+			<input type="submit" id="btnSubmit"
+				ng-click="getReportsById(selectedValueVnf,startdate.value,enddate.value)"
+				style="width: 120px;">
+			</div>
+			
+		</div>
+		<br>
+		<div class="row" ng-show="showresult">
+		<div class="column"
+				style="width: 80%; background-color: #f2f2f2; height: 35px; margin-left: 35px; font-size: 14px;font-weight:500;color:#1B4F72;">
+				 Vnfid: {{selectedValueVnf}}
+				</div>
+				</div>
+		<br>
+	<div>
+		<table class="tableDisplay"
+			style="text-align: center;" ng-show="showresult" id="tableToExport">
+			<tr class="first_row">
+				<th style="text-align: center;">SNo.</th>
+				<th style="text-align: center;">Time Period</th>
+				<th style="text-align: center;">Vnf Name</th>
+				<th style="text-align: center;">Version No.</th>
+			</tr>
+			<tr ng-repeat="version in pagedItems[currentPage] | orderBy:sort.sortingOrder:sort.reverse">
+				<td>{{ ($index + 1) + (currentPage - 1) * itemsPerPage + 5}}</td>
+				<td>{{version.createdAt}}</td>
+				<td>{{version.vnfname }}</td>
+				<td>{{version.versionNo}}</td>
+			</tr>
+			 <td colspan="4" ng-if="pagedItems.length > 5">
+				<ul class="pagination pull-right">
+					<li ng-class="{disabled: currentPage == 0}"><a href
+						ng-click="prevPage()">&laquo;</a></li>
+					<li ng-repeat="n in range(pagedItems.length, currentPage, currentPage + gap) "
+						ng-class="{active: n == currentPage}" ng-click="setPage()"><a
+						href ng-bind="n + 1">1</a></li>
+					<li ng-class="{disabled: (currentPage) == pagedItems.length - 1}">
+						<a href ng-click="nextPage()">&raquo;</a>
+					</li>
+				</ul>
+			</td>
+		</table>
+		</div>
+	</form>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/header.html b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/header.html
new file mode 100644
index 0000000..2385158
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/header.html
@@ -0,0 +1,3 @@
+<div  class="header">
+ <p style="margin-left:20px;"> ONAP Certification Test Page </p>
+</div>
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/tabs.html b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/tabs.html
new file mode 100644
index 0000000..b8b65c6
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/main/webapp/static/views/tabs.html
@@ -0,0 +1,25 @@
+<div>
+<nav role="navigation" class="navbar navbar-default" style="margin-top:10px;">
+         <div class="navbar-header" style="background-color:#ffe0b3;font-size: 15px;font-weight: bold;color:black;">
+            <ul class="nav navbar-nav">
+           	 <li><div class="dropdown">
+          		 <button class="dropbtn" style="padding-right:40px;padding-left: 30px; ">VIEW ALL REPORTS</button>
+           			<div class="dropdown-content">
+                             <a ng-href="#testReports">Search Vnf Reports</a>
+                             <a ng-href="#testReportsById">Search Vnf Reports By ID</a>
+           			</div>
+           		 </div>
+            <li><div class="dropdown">
+              <button class="dropbtn">DEVICE CONFIGURATION</button>
+                      <div class="dropdown-content">
+                             <a ng-href="#deviceConfig">Backup Config</a>
+                             <a ng-href="#applyConfig">Apply Config</a>
+                             <a ng-href="#compareConfig">Compare Config</a>
+                      </div>
+                 </div>
+            </li>
+
+           </ul>
+         </div>
+</nav>
+</div>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/model/VnfConfigDetailsDBTest.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/model/VnfConfigDetailsDBTest.java
new file mode 100644
index 0000000..3897323
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/model/VnfConfigDetailsDBTest.java
@@ -0,0 +1,62 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.model;
+
+import static org.junit.Assert.assertEquals;
+
+import java.sql.Timestamp;
+
+import org.junit.Test;
+
+import com.onap.sdnc.vnfbackupservice.model.VnfConfigDetailsDB;
+
+public class VnfConfigDetailsDBTest {
+
+	@Test
+	public void configDetailsDbTest() {
+
+		long millis = System.currentTimeMillis();
+		Timestamp date = new java.sql.Timestamp(millis);
+		String configinfo = "configifo";
+		Timestamp creationDate = date;
+		Timestamp lastupdated = date;
+		int status = 1;
+		String vnfid = "vnfId";
+		String vnfname = "vnfname";
+		String vnfversion = "Version-1";
+
+		VnfConfigDetailsDB vnfConfigDetailsDB = new VnfConfigDetailsDB();
+		vnfConfigDetailsDB.setVnfid(vnfid);
+		vnfConfigDetailsDB.setConfiginfo(configinfo);
+		vnfConfigDetailsDB.setCreationdate(creationDate);
+		vnfConfigDetailsDB.setLastupdated(lastupdated);
+		vnfConfigDetailsDB.setStatus(status);
+		vnfConfigDetailsDB.setVnfname(vnfname);
+		vnfConfigDetailsDB.setVnfversion(vnfversion);
+
+		assertEquals(vnfid, vnfConfigDetailsDB.getVnfid());
+		assertEquals(configinfo, vnfConfigDetailsDB.getConfiginfo());
+		assertEquals(creationDate, vnfConfigDetailsDB.getCreationdate());
+		assertEquals(lastupdated, vnfConfigDetailsDB.getLastupdated());
+		assertEquals(status, vnfConfigDetailsDB.getStatus());
+		assertEquals(vnfname, vnfConfigDetailsDB.getVnfname());
+		assertEquals(vnfversion, vnfConfigDetailsDB.getVnfversion());
+	}
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/model/VnfConfigSchedulerTimeStampTest.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/model/VnfConfigSchedulerTimeStampTest.java
new file mode 100644
index 0000000..ee6d532
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/model/VnfConfigSchedulerTimeStampTest.java
@@ -0,0 +1,39 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.model;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class VnfConfigSchedulerTimeStampTest {
+
+	@Test
+	public void vnfConfSchedulerTimeTest() {
+		String time="12:00";
+		int id=1;
+		
+		VnfConfigSchedulerTimeStamp vcst= new VnfConfigSchedulerTimeStamp();
+		vcst.setBackuptime(time);
+		vcst.setId(id);
+		assertEquals(time, vcst.getBackuptime());
+		assertEquals(id, vcst.getId());
+	}
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/scheduler/VnfConfigBackupSchedulerTest.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/scheduler/VnfConfigBackupSchedulerTest.java
new file mode 100644
index 0000000..9308eeb
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/scheduler/VnfConfigBackupSchedulerTest.java
@@ -0,0 +1,85 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.scheduler;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import com.onap.sdnc.vnfbackupservice.model.VnfDisplayParams;
+import com.onap.sdnc.vnfbackupservice.model.VnfServiceResponse;
+import com.onap.sdnc.vnfbackupservice.scheduler.VnfConfigBackupScheduler;
+import com.onap.sdnc.vnfbackupservice.service.VnfbackupServiceImpl;
+
+public class VnfConfigBackupSchedulerTest {
+
+	@Before
+	public void setUp() throws Exception {
+		MockitoAnnotations.initMocks(this);
+	}
+
+	@Mock
+	VnfbackupServiceImpl vnfbackupServiceImpl;
+	
+	@InjectMocks
+	VnfConfigBackupScheduler vnfconfigBackScheduler;
+
+	@Test
+	public void initiateBackupServiceTest() {
+		
+		String backuptime="timeee";		
+		String vnfId = "vnfid";
+		String vnfName = "vnfname";
+		VnfDisplayParams vnfDisplayParams = new VnfDisplayParams();
+		vnfDisplayParams.setVnfId(vnfId);
+		vnfDisplayParams.setVnfName(vnfName);
+		
+		VnfServiceResponse vnfServiceResponse = new VnfServiceResponse();
+
+		List<VnfDisplayParams> vnfdisplaylist = new ArrayList<VnfDisplayParams>();
+		vnfdisplaylist.add(vnfDisplayParams);
+		vnfServiceResponse.setVnfDisplayList(vnfdisplaylist);
+		
+		when(vnfbackupServiceImpl.getAllVnfDetails()).thenReturn(vnfServiceResponse);
+		when(vnfconfigBackScheduler.initiateBackupService()).thenReturn(backuptime);
+		
+		vnfconfigBackScheduler.initiateBackupService();
+	}
+	
+	@Test
+	public void invokebackupTest() {
+		
+		String vnfId="vnfid";	
+		VnfConfigBackupScheduler vnfConBackSch= mock(VnfConfigBackupScheduler.class);
+		when(vnfConBackSch.invokeDetails(vnfId)).thenReturn(vnfId);
+		assertEquals(vnfId, vnfConBackSch.invokeDetails(vnfId));
+		vnfConBackSch.invokeDetails(vnfId);
+	}
+	
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/scheduler/VnfRestClientTest.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/scheduler/VnfRestClientTest.java
new file mode 100644
index 0000000..29b1c0f
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/scheduler/VnfRestClientTest.java
@@ -0,0 +1,62 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.scheduler;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.junit.Test;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestClientException;
+import org.springframework.web.client.RestTemplate;
+
+import mockit.Mock;
+import mockit.MockUp;
+
+
+public class VnfRestClientTest {
+	
+	String url = "/restconf/config/VNF-API:vnfs";
+	String userName = "abc";
+	String password = "abc";
+	
+	@Test
+	public void restClientTest() {
+
+		new MockUp<RestTemplate>() {
+			@SuppressWarnings("unchecked")
+			@Mock
+			public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity,
+					Class<T> responseType, Object... uriVariables) throws RestClientException {
+				ResponseEntity<String> str = new ResponseEntity<String>(HttpStatus.ACCEPTED);
+				return (ResponseEntity<T>) str;
+			}
+		};
+		VnfRestClient vnfRestClientmock = mock(VnfRestClient.class);
+		when(vnfRestClientmock.vnfRestClient(url, userName, password)).thenReturn("successfully mocked");
+	 
+		VnfRestClient vnfRestClient =new VnfRestClient();
+		vnfRestClient.vnfRestClient(url, userName, password);
+		
+	}
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/service/VnfbackupServiceImplTest.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/service/VnfbackupServiceImplTest.java
new file mode 100644
index 0000000..3428bce
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigbackupservice/src/test/java/com/onap/sdnc/vnfbackupservice/service/VnfbackupServiceImplTest.java
@@ -0,0 +1,150 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SDNC-FEATURES
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ============LICENSE_END=========================================================
+*/
+package com.onap.sdnc.vnfbackupservice.service;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.when;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
+
+import com.onap.sdnc.vnfbackupservice.dao.VnfBackupServiceRepo;
+import com.onap.sdnc.vnfbackupservice.model.VnfConfigDetailsDB;
+import com.onap.sdnc.vnfbackupservice.scheduler.VnfRestClient;
+import com.onap.sdnc.vnfbackupservice.service.VnfbackupServiceImpl;
+
+public class VnfbackupServiceImplTest {
+	
+	@Mock
+	VnfBackupServiceRepo vrepo;
+	
+	@Mock
+	private RestTemplate rTemplate;
+	
+	@Mock
+    private VnfRestClient vnfclient;
+	
+	@InjectMocks
+	VnfbackupServiceImpl vnfserviceimpl;
+	
+	@Before
+	public void setUp() throws Exception {
+		MockitoAnnotations.initMocks(this);
+	}
+
+	String json =     "{\r\n" + "  \"vnfs\": {\r\n" + "    \"vnf-list\": [\r\n" + "     {\r\n"
+					+ "        \"vnf-id\": \"f24ae4f1-ed6b-4f8b-9ad6-4110a6fe26e7\",\r\n"
+					+ "        \"service-data\": {\r\n" + "          \"vnf-request-information\": {\r\n"
+					+ "            \"vnf-name\": \"vDNS-Techm_vIMS_vnf_1\"\r\n" + "          },\r\n"
+					+ "        \"service-status\": {         \r\n" + "          \"response-code\": \"200\"\r\n"
+					+ "        }},\r\n" + "       \"service-status\": {         \r\n"
+					+ "          \"response-code\": \"200\"\r\n" + "        }\r\n" + "     }\r\n" + "      \r\n"
+					+ "	  ]\r\n" + "  }\r\n" + "	}";
+	
+	String url = "http://localhost:8023/test/api/foos";
+	String vnfId="vnfid";
+	String userName = "abc";
+	String password = "abc";
+	String configfile="config";	
+	String vnfversion = "Version-1";
+	String jsonInput="jsoninput";
+	String vnfName = "vnfname";
+	
+	long millis = System.currentTimeMillis();
+	Timestamp date = new java.sql.Timestamp(millis);
+	String configinfo =json;
+	Timestamp creationDate = date;
+	Timestamp lastupdated = date;
+	int status = 1;
+	String vnfname = "vnfname";
+	
+	@Test
+	public void parseConfigTest() {	
+		VnfbackupServiceImpl vnfbackupServiceImpl = new VnfbackupServiceImpl();
+		vnfbackupServiceImpl.parseVnfConfigDetails(json);
+		assertTrue(true);
+	}			
+	
+	@Test()
+	public void backupVnfconfigTest()
+	{		
+		HttpHeaders headers = new HttpHeaders();
+		HttpHeaders headers1= new HttpHeaders();
+		
+		headers1.setAccept(Arrays.asList(new MediaType[] { MediaType.APPLICATION_JSON }));
+		headers1.setContentType(MediaType.APPLICATION_JSON);
+		String base64Username = userName + ":" + password;
+		byte[] message = base64Username.getBytes();
+		headers1.set("Authorization", "Basic " + java.util.Base64.getEncoder().encodeToString(message));		
+
+		when(vnfclient.generateHeaders(headers, userName, password)).thenReturn(headers1);
+		
+		ResponseEntity<String> entity = new ResponseEntity<String>(HttpStatus.OK);	 
+	
+		when(rTemplate.exchange(url, HttpMethod.GET, entity, String.class)).thenReturn(entity) ;
+		
+		when(vnfclient.vnfRestClient(url, userName, password)).thenReturn(json);		
+				
+		VnfConfigDetailsDB vnfConfigDetailsDB = new VnfConfigDetailsDB();
+		vnfConfigDetailsDB.setVnfid(vnfId);
+		vnfConfigDetailsDB.setConfiginfo(configinfo);
+		vnfConfigDetailsDB.setCreationdate(date);
+		vnfConfigDetailsDB.setLastupdated(date);
+		vnfConfigDetailsDB.setStatus(status);
+		vnfConfigDetailsDB.setVnfname(vnfname);
+		vnfConfigDetailsDB.setVnfversion(vnfversion);
+			
+		when(vrepo.getVnfDetail(vnfId)).thenReturn(vnfConfigDetailsDB);
+
+		List<VnfConfigDetailsDB> listvnfconfdb= new ArrayList<VnfConfigDetailsDB>();
+		
+		when(vrepo.getVnfDetails(vnfId)).thenReturn(listvnfconfdb);
+		 
+		doNothing().when(vrepo).saveVnfDetails(configinfo, creationDate, lastupdated, status, vnfId, vnfname, vnfversion);
+				
+		vnfserviceimpl.backupVnfconfig(vnfId);
+		
+		assertEquals("success", vnfserviceimpl.backupVnfconfig(vnfId));			
+	}	
+	
+	@Test
+	public void updatedBackuptimeTest() {
+		String sdtime="12:00";
+		when(vrepo.getvnfschedulertime()).thenReturn(sdtime);		
+		vnfserviceimpl.updatedBackuptime();		
+	}
+	
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/README.md b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/README.md
new file mode 100644
index 0000000..4462cbe
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/README.md
@@ -0,0 +1,3 @@
+vnfconfigreportsservice
+------------------------
+It will show all the information about backup vnf configuration details.
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/pom.xml b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/pom.xml
new file mode 100644
index 0000000..203cc54
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/pom.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.onap.sdnc.oam.vnfbackup</groupId>
+		<artifactId>configbackuprestore</artifactId>
+		<version>1.7.3-SNAPSHOT</version>
+	</parent>
+	<groupId>org.onap.sdnc.oam.vnfbackup</groupId>
+	<artifactId>vnfconfigreportsservice</artifactId>
+	<version>1.7.3-SNAPSHOT</version>
+	<name>sdnc-oam :: vnfbackup :: vnfconfigreportservice</name>
+	<url>http://maven.apache.org</url>
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+	</properties>
+	<dependencies>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.11</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>jstl</artifactId>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.mariadb.jdbc</groupId>
+			<artifactId>mariadb-java-client</artifactId>
+			<version>1.1.9</version>
+		</dependency>
+		<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
+		<dependency>
+			<groupId>commons-codec</groupId>
+			<artifactId>commons-codec</artifactId>
+			<version>1.9</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+			<version>1.5.4.RELEASE</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context</artifactId>
+			<version>4.3.9.RELEASE</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-tomcat</artifactId>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.tomcat.embed</groupId>
+			<artifactId>tomcat-embed-jasper</artifactId>
+			<scope>provided</scope>
+		</dependency>
+
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-devtools</artifactId>
+			<optional>true</optional>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+			<version>1.5.3.RELEASE</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-jpa</artifactId>
+		</dependency>
+
+		<!-- Add Log4j2 Dependency -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-log4j2</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.json</groupId>
+			<artifactId>json</artifactId>
+			<version>20180130</version>
+		</dependency>
+		<!-- https://mvnrepository.com/artifact/com.fasterxml/jackson-xml-databind -->
+		<dependency>
+			<groupId>com.fasterxml</groupId>
+			<artifactId>jackson-xml-databind</artifactId>
+			<version>0.6.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-all</artifactId>
+			<version>1.9.5</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+</project>
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/controller/VnfReportsServiceController.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/controller/VnfReportsServiceController.java
new file mode 100644
index 0000000..4ef1536
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/controller/VnfReportsServiceController.java
@@ -0,0 +1,44 @@
+package com.onap.sdnc.vnfreportsservice.controller;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.onap.sdnc.vnfreportsservice.model.VnfConfigDetailsDB;
+import com.onap.sdnc.vnfreportsservice.service.VnfReportsServiceImpl;
+
+@RestController
+public class VnfReportsServiceController {
+
+	private static final Logger logger = LogManager.getLogger(VnfReportsServiceController.class);
+
+	@Autowired
+	VnfReportsServiceImpl Vnfreportsservice;
+
+	@RequestMapping(value = "/getVnfDetBetDates/{startDate}/{endDate}", method = RequestMethod.GET, produces = "application/json")
+
+	public List<VnfConfigDetailsDB> getVnfConfigDetailsBetweenDates(
+			@PathVariable("startDate") @DateTimeFormat(pattern = "dd-MM-yyyy") Date startDate,
+			@PathVariable("endDate") @DateTimeFormat(pattern = "dd-MM-yyyy") Date endDate) {
+			logger.info("Get VNF Configuration Details Inbetween 2 Dates ");
+		return Vnfreportsservice.getVnfConfigDetailsBetweenDates(startDate, endDate);
+	}
+
+	@RequestMapping(value = "/getVnfDetByVnfidBetDates/{vnfid}/{startDate}/{endDate}", method = RequestMethod.GET, produces = "application/json")
+
+	public List<VnfConfigDetailsDB> getVnfConfigDetailsByVnfIdBetweenDates(@PathVariable("vnfid") String vnfId,
+			@PathVariable("startDate") @DateTimeFormat(pattern = "dd-MM-yyyy") Date startDate,
+			@PathVariable("endDate") @DateTimeFormat(pattern = "dd-MM-yyyy") Date endDate) {
+		logger.info("Get VNF Configuration Details Of a VnfID Inbetween 2 Dates ");
+		return Vnfreportsservice.getVnfIdDetailsBetweenDates(vnfId, startDate, endDate);
+	}
+
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/dao/VnfReportsServiceRepo.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/dao/VnfReportsServiceRepo.java
new file mode 100644
index 0000000..1834ebe
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/dao/VnfReportsServiceRepo.java
@@ -0,0 +1,20 @@
+package com.onap.sdnc.vnfreportsservice.dao;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.onap.sdnc.vnfreportsservice.controller.VnfReportsServiceController;
+import com.onap.sdnc.vnfreportsservice.model.VnfConfigDetailsDB;
+
+
+public interface VnfReportsServiceRepo extends JpaRepository<VnfConfigDetailsDB, Long>  {
+	
+	List<VnfConfigDetailsDB> findByLastupdatedBetween(Date startDate, Date endDate);
+	List<VnfConfigDetailsDB> findByVnfidAndLastupdatedBetween(String vnfid,Date startDate,Date endDate);
+	
+}
+
+
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/model/VnfConfigDetailsDB.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/model/VnfConfigDetailsDB.java
new file mode 100644
index 0000000..a2c08ef
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/model/VnfConfigDetailsDB.java
@@ -0,0 +1,110 @@
+package com.onap.sdnc.vnfreportsservice.model;
+
+import java.sql.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "vnfconfigdetails", schema = "testreports")
+public class VnfConfigDetailsDB {
+
+	private static final long serialVersionUID = 1L;
+
+	@Id
+	@GeneratedValue
+	private int id;
+	
+	@Column(name = "vnfid")
+	private String vnfid;
+
+	@Column(name = "vnfversion")
+	private String vnfversion;
+
+	@Column(name = "vnfname")
+	private String vnfname;
+
+	@Column(name = "configinfo")
+	@Lob
+	private String configinfo;
+
+	@Column(name = "creationdate")
+	private Date creationdate;
+
+	@Column(name = "lastupdated")
+	private Date lastupdated;
+	
+	@Column(name = "status")
+	private String status;
+	
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public String getVnfid() {
+		return vnfid;
+	}
+
+	public void setVnfid(String vnfid) {
+		this.vnfid = vnfid;
+	}
+
+	public String getVnfversion() {
+		return vnfversion;
+	}
+
+	public void setVnfversion(String vnfversion) {
+		this.vnfversion = vnfversion;
+	}
+
+	public String getVnfname() {
+		return vnfname;
+	}
+
+	public void setVnfname(String vnfname) {
+		this.vnfname = vnfname;
+	}
+
+	public String getConfiginfo() {
+		return configinfo;
+	}
+
+	public void setConfiginfo(String configinfo) {
+		this.configinfo = configinfo;
+	}
+
+	public Date getCreationdate() {
+		return creationdate;
+	}
+
+	public void setCreationdate(Date creationdate) {
+		this.creationdate = creationdate;
+	}
+
+	
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public Date getLastupdated() {
+		return lastupdated;
+	}
+
+	public void setLastupdated(Date lastupdated) {
+		this.lastupdated = lastupdated;
+	}
+
+}
+
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/service/VnfReportsServiceImpl.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/service/VnfReportsServiceImpl.java
new file mode 100644
index 0000000..3b4a7f8
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/service/VnfReportsServiceImpl.java
@@ -0,0 +1,48 @@
+package com.onap.sdnc.vnfreportsservice.service;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.onap.sdnc.vnfreportsservice.dao.VnfReportsServiceRepo;
+import com.onap.sdnc.vnfreportsservice.model.VnfConfigDetailsDB;
+@Service
+public class VnfReportsServiceImpl implements Vnfreportsservice {
+	
+	private static final Logger logger = LogManager.getLogger(VnfReportsServiceImpl.class);
+
+	@Autowired
+	VnfReportsServiceRepo vnfRepo;
+
+	List<VnfConfigDetailsDB> config = null;
+
+	@Override
+	public List<VnfConfigDetailsDB> getVnfConfigDetailsBetweenDates(Date startDate, Date endDate) {
+
+		logger.info("Start Date" + startDate + "End Date" + endDate);
+		try {
+			config = vnfRepo.findByLastupdatedBetween(startDate, endDate);
+		} catch (Exception e) {
+			logger.error("Exception Occered Not able to get details from DB : " + e);
+		}
+
+		return config;
+	}
+
+	@Override
+	public List<VnfConfigDetailsDB> getVnfIdDetailsBetweenDates(String vnfid, Date startDate, Date endDate) {
+
+		logger.info("Vnf ID: " + vnfid + "Start Date: " + startDate + "End Date: " + endDate);
+		try {
+			config = vnfRepo.findByVnfidAndLastupdatedBetween(vnfid, startDate, endDate);
+		} catch (Exception e) {
+			logger.error("Exception Occered Not able to get details from DB : " + e);
+		}
+		return config;
+	}
+
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/service/Vnfreportsservice.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/service/Vnfreportsservice.java
new file mode 100644
index 0000000..3cbd205
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/main/java/com/onap/sdnc/vnfreportsservice/service/Vnfreportsservice.java
@@ -0,0 +1,11 @@
+package com.onap.sdnc.vnfreportsservice.service;
+
+import java.util.Date;
+import java.util.List;
+import com.onap.sdnc.vnfreportsservice.model.VnfConfigDetailsDB;
+
+public interface Vnfreportsservice {
+	public List<VnfConfigDetailsDB> getVnfConfigDetailsBetweenDates(Date startDate, Date endDate);
+	public List<VnfConfigDetailsDB> getVnfIdDetailsBetweenDates(String vnfId, Date startDate, Date endDate);
+
+}
diff --git a/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/test/java/com/onap/sdnc/vnfreportsservice/service/VnfReportsServiceImplTest.java b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/test/java/com/onap/sdnc/vnfreportsservice/service/VnfReportsServiceImplTest.java
new file mode 100644
index 0000000..e40fb05
--- /dev/null
+++ b/sdnc-a1-controller/oam/configbackuprestore/vnfconfigreportsservice/src/test/java/com/onap/sdnc/vnfreportsservice/service/VnfReportsServiceImplTest.java
@@ -0,0 +1,87 @@
+package com.onap.sdnc.vnfreportsservice.service;
+
+import static org.junit.Assert.*;
+
+import java.sql.Date;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.onap.sdnc.vnfreportsservice.dao.VnfReportsServiceRepo;
+import com.onap.sdnc.vnfreportsservice.model.VnfConfigDetailsDB;
+
+@RunWith(MockitoJUnitRunner.class)
+public class VnfReportsServiceImplTest {
+	
+	private static final Logger LOGGER = LoggerFactory.getLogger(VnfReportsServiceImplTest.class);
+
+	@Mock
+	VnfReportsServiceRepo vnfRepo;
+
+	@InjectMocks
+	VnfReportsServiceImpl Vnfreportsservice;
+
+		@Test
+		public void getVnfConfigDetailsBetweenDatesTest() throws Exception{
+			VnfConfigDetailsDB db = new VnfConfigDetailsDB();
+			db.setId(123);
+			db.setVnfid("Vnfid");
+			db.setVnfname("vnfname");
+			db.setVnfversion("vnfversion");
+			
+			Date sDate = new Date(2018, 5, 7);
+			Date eDate = new Date(2018, 7, 7);
+			db.setCreationdate(sDate);
+			db.setLastupdated(eDate);
+			db.setStatus("status");
+			db.setConfiginfo("configinfo");
+
+			List<VnfConfigDetailsDB> list = new ArrayList<VnfConfigDetailsDB>();
+			list.add(db);
+			LOGGER.info("List of vnf config details::" + list);
+			
+		
+			Mockito.when(vnfRepo.findByLastupdatedBetween(sDate, eDate)).thenReturn(list);
+			
+			Vnfreportsservice.getVnfConfigDetailsBetweenDates(sDate, eDate);
+			assertEquals(list, Vnfreportsservice.getVnfConfigDetailsBetweenDates(sDate, eDate));
+
+		}
+	
+		@Test
+		public void getVnfIdDetailsBetweenDatesTest() throws Exception{
+			VnfConfigDetailsDB db = new VnfConfigDetailsDB();
+			db.setId(123);
+			db.setVnfid("Vnfid");
+			db.setVnfname("vnfname");
+			db.setVnfversion("vnfversion");
+			
+			Date sDate = new Date(2018, 5, 7);
+			Date eDate = new Date(2018, 7, 7);
+			db.setCreationdate(sDate);
+			db.setLastupdated(eDate);
+			db.setStatus("status");
+			db.setConfiginfo("configinfo");
+
+			List<VnfConfigDetailsDB> list = new ArrayList<VnfConfigDetailsDB>();
+			list.add(db);
+			LOGGER.info("List of vnf config details::" + list);
+			
+		
+			Mockito.when(vnfRepo.findByVnfidAndLastupdatedBetween("vnfid",sDate, eDate)).thenReturn(list);
+			
+			Vnfreportsservice.getVnfIdDetailsBetweenDates("vnfid" ,sDate, eDate);
+			assertEquals(list, Vnfreportsservice.getVnfIdDetailsBetweenDates("vnfid",sDate, eDate));
+
+		}
+}
+
+
diff --git a/sdnc-a1-controller/oam/data-migrator/pom.xml b/sdnc-a1-controller/oam/data-migrator/pom.xml
new file mode 100644
index 0000000..c29b34d
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/pom.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onap.sdnc.oam</groupId>
+        <artifactId>sdnc-oam</artifactId>
+        <version>1.7.3-SNAPSHOT</version>
+    </parent>
+    
+    <groupId>org.onap.sdnc.oam</groupId>
+    <artifactId>data-migrator</artifactId>
+    <version>1.7.3-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>sdnc-oam :: data-migrator</name>
+    <description>MDSAL Data Migrator</description>
+
+    <properties>
+        <fasterxml.jackson.version>2.9.4</fasterxml.jackson.version>
+        <velocity.version>2.0</velocity.version>
+        <skip.SWM>true</skip.SWM>
+        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
+        <build.number>${maven.build.timestamp}</build.number>
+        <SWM_VERSION>${project.version}-${build.number}</SWM_VERSION>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>1.7.21</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+            <version>1.6.1</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>1.2.17</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.5</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>3.5</version>
+        </dependency>
+        <dependency>
+            <groupId>org.reflections</groupId>
+            <artifactId>reflections</artifactId>
+            <version>0.9.9-RC1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.beust</groupId>
+            <artifactId>jcommander</artifactId>
+            <version>1.48</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.tomakehurst</groupId>
+            <artifactId>wiremock-standalone</artifactId>
+            <version>2.18.0</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+
+            <!-- ================================================== -->
+            <!-- Set the JDK compiler version. -->
+            <!-- ================================================== -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.5.1</version>
+                <inherited>true</inherited>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>2.6</version>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <addClasspath>true</addClasspath>
+                            <mainClass>org.onap.sdnc.oam.datamigrator.DataMigration</mainClass>
+                        </manifest>
+                    </archive>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <id>create-zip</id>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <phase>package</phase>
+                        <configuration>
+                            <attach>true</attach>
+                            <finalName>${project.artifactId}.${project.version}</finalName>
+                            <attach>true</attach>
+                            <descriptors>
+                                <descriptor>src/assembly/assemble_zip.xml</descriptor>
+                            </descriptors>
+                            <appendAssemblyId>false</appendAssemblyId>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+        </plugins>
+    </build>
+</project>
diff --git a/sdnc-a1-controller/oam/data-migrator/src/assembly/assemble_zip.xml b/sdnc-a1-controller/oam/data-migrator/src/assembly/assemble_zip.xml
new file mode 100644
index 0000000..604adf3
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/assembly/assemble_zip.xml
@@ -0,0 +1,59 @@
+<!--
+  ============LICENSE_START=======================================================
+  ONAP : SDNC
+  ================================================================================
+  Copyright (C) 2019 AMDOCS
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<!-- Defines how we build the .zip file which is our distribution. -->
+
+<assembly
+	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+	<id>assemble_zip</id>
+	<formats>
+		<format>zip</format>
+	</formats>
+
+	<includeBaseDirectory>false</includeBaseDirectory>
+
+	<fileSets>
+		<fileSet>
+			<directory>src/main/scripts</directory>
+			<outputDirectory>bin</outputDirectory>
+		</fileSet>
+		<fileSet>
+			<directory>target</directory>
+			<outputDirectory>lib</outputDirectory>
+			<includes>
+				<include>*.jar</include>
+			</includes>
+		</fileSet>
+		<fileSet>
+			<directory>src/main/resources</directory>
+			<outputDirectory>properties</outputDirectory>
+			<includes>
+				<include>*.properties</include>
+			</includes>
+		</fileSet>
+	</fileSets>
+	<dependencySets>
+		<dependencySet>
+			<outputDirectory>lib</outputDirectory>
+			<useProjectArtifact>true</useProjectArtifact>
+			<scope>runtime</scope>
+		</dependencySet>
+	</dependencySets>
+</assembly>
diff --git a/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/DataMigration.java b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/DataMigration.java
new file mode 100644
index 0000000..ac53f44
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/DataMigration.java
@@ -0,0 +1,39 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC
+ * ================================================================================
+ * Copyright 2019 AMDOCS
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.oam.datamigrator;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DataMigration {
+
+    private static final Logger LOG = LoggerFactory.getLogger(DataMigration.class);
+
+    public static void main(String[] args) {
+        try {
+            DataMigrationInternal dataMigrationInternal = new DataMigrationInternal(LOG);
+            dataMigrationInternal.run(args);
+        }catch (Exception e){
+            e.printStackTrace();
+            LOG.error("Error in DataMigration" + e.getMessage());
+        }
+        return;
+    }
+}
diff --git a/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/DataMigrationInternal.java b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/DataMigrationInternal.java
new file mode 100644
index 0000000..ae49723
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/DataMigrationInternal.java
@@ -0,0 +1,148 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC
+ * ================================================================================
+ * Copyright 2019 AMDOCS
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.oam.datamigrator;
+
+import com.beust.jcommander.JCommander;
+import com.beust.jcommander.Parameter;
+import com.beust.jcommander.Strings;
+import org.onap.sdnc.oam.datamigrator.common.Description;
+import org.onap.sdnc.oam.datamigrator.common.MigratorConfiguration;
+import org.onap.sdnc.oam.datamigrator.common.Operation;
+import org.onap.sdnc.oam.datamigrator.migrators.Migrator;
+import org.reflections.Reflections;
+import org.slf4j.Logger;
+
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+public class DataMigrationInternal {
+
+    private final Logger log;
+
+    public DataMigrationInternal(Logger log) {
+        this.log = log;
+    }
+
+    private void logAndPrint(String msg) {
+        System.out.println(msg);
+        log.info(msg);
+    }
+
+    public void run(String[] args){
+        CommandLineArgs cArgs = new CommandLineArgs();
+        JCommander jCommander = new JCommander(cArgs, args);
+        jCommander.setProgramName(DataMigration.class.getSimpleName());
+
+        if (cArgs.help) {
+            jCommander.usage();
+            return;
+        }
+
+        Set<Class<? extends Migrator>> migratorList = getMigratorList();
+        if(cArgs.scripts.size() > 0){
+            migratorList = migratorList.stream().filter(aClass -> cArgs.scripts.contains(aClass.getSimpleName())).collect(Collectors.toSet());
+        }
+        if(cArgs.excludeClasses.size() > 0){
+            migratorList = migratorList.stream().filter(aClass -> !cArgs.excludeClasses.contains(aClass.getSimpleName())).collect(Collectors.toSet());
+        }
+
+        if(migratorList.size()>0) {
+            logAndPrint("Total number of available migrations: " + migratorList.size());
+            if(cArgs.list) {
+                logAndPrint("List of available migrations:");
+                for (Class<? extends Migrator> migrator : migratorList) {
+                    if(migrator.getAnnotation(Description.class) != null && !migrator.getAnnotation(Description.class).value().isEmpty()) {
+                        logAndPrint(migrator.getSimpleName()+ ": " + migrator.getAnnotation(Description.class).value() );
+                    }else {
+                        logAndPrint(migrator.getSimpleName());
+                    }
+                }
+            }else {
+                Operation operation;
+                try {
+                    operation = Operation.valueOf(cArgs.operation.toUpperCase());
+                    logAndPrint("Starting operation: " + operation.name());
+                }catch (IllegalArgumentException e) {
+                    logAndPrint("Invalid operation: " + cArgs.operation +". Supported operations are: Migrate, Backup, Restore.");
+                    return;
+                }
+                boolean success = true;
+                MigratorConfiguration config;
+                if(!Strings.isStringEmpty(cArgs.config)){
+                    config = new MigratorConfiguration(cArgs.config);
+                }else {
+                    logAndPrint("No external configuration provided. Initializing Default configuration.");
+                    config = new MigratorConfiguration();
+                }
+                for (Class<? extends Migrator> migratorClass : migratorList) {
+                    logAndPrint("Started executing migrator: "+ migratorClass.getSimpleName());
+                    try {
+                        Migrator migrator =  migratorClass.newInstance();
+                        migrator.init(config);
+                        migrator.run(operation);
+                        success = success && migrator.isSuccess();
+                    } catch (InstantiationException | IllegalAccessException e) {
+                        logAndPrint("Error instantiating migrator: " + migratorClass);
+                        success=false;
+                    }
+                    logAndPrint("Completed execution for migrator "+ migratorClass.getSimpleName() +" with status: " + success);
+                }
+                if(success){
+                    logAndPrint(operation.name()+ " operation completed Successfully.");
+                }else{
+                    logAndPrint("Error during "+ operation.name() +" operation. Check logs for details.");
+                }
+            }
+        }else{
+            logAndPrint("No migrations available.");
+        }
+    }
+
+    private Set<Class<? extends Migrator>> getMigratorList() {
+        Reflections reflections = new Reflections("org.onap.sdnc.oam.datamigrator.migrators");
+        return reflections.getSubTypesOf(Migrator.class).stream().filter(aClass -> !Modifier.isAbstract(aClass.getModifiers())).collect(Collectors.toSet());
+    }
+
+    class CommandLineArgs {
+
+        @Parameter(names = "--h", help = true)
+        public boolean help;
+
+        @Parameter(names = "-o", description = "Operation to be performed. Default is Migrate. Supported operations: Migrate , Backup , Restore.")
+        public String operation = "Migrate";
+
+        @Parameter(names = "-c", description = "Configuration File path / directory")
+        public String config;
+
+        @Parameter(names = "-m", description = "Names of migration scripts to run")
+        public List<String> scripts = new ArrayList<>();
+
+        @Parameter(names = "-l", description = "List the available of migrations")
+        public boolean list = false;
+
+        @Parameter(names = "-e", description = "Exclude list of migrator classes")
+        public List<String> excludeClasses = new ArrayList<>();
+    }
+
+
+}
diff --git a/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/common/Description.java b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/common/Description.java
new file mode 100644
index 0000000..3eaf562
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/common/Description.java
@@ -0,0 +1,31 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC
+ * ================================================================================
+ * Copyright 2019 AMDOCS
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.oam.datamigrator.common;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface Description {
+    String value() default "";
+}
diff --git a/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/common/MigratorConfiguration.java b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/common/MigratorConfiguration.java
new file mode 100644
index 0000000..40a1b92
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/common/MigratorConfiguration.java
@@ -0,0 +1,118 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC
+ * ================================================================================
+ * Copyright 2019 AMDOCS
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.oam.datamigrator.common;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Properties;
+
+public class MigratorConfiguration {
+
+    private String sourceHost ;
+    private String sourceUser ;
+    private String sourcePassword ;
+    private String targetHost ;
+    private String targetUser ;
+    private String targetPassword ;
+    private String dataPath;
+
+    private static final String SDNC_CONFIG_DIR = "SDNC_CONFIG_DIR";
+    private static final Logger LOG = LoggerFactory
+            .getLogger(MigratorConfiguration.class);
+
+    public MigratorConfiguration (){
+        String propDir = System.getenv(SDNC_CONFIG_DIR);
+        if (propDir == null) {
+            propDir = "/opt/sdnc/data/properties";
+        }
+        try {
+            init(propDir);
+        } catch (Exception e) {
+            LOG.error("Cannot initialize MigratorConfiguration", e);
+        }
+    }
+
+    public MigratorConfiguration (String propDir){
+        try {
+            init(propDir);
+        } catch (Exception e) {
+            LOG.error("Cannot initialize MigratorConfiguration", e);
+        }
+    }
+
+    public void init(String propDir) throws IOException {
+        String propPath = propDir + "/data-migrator.properties";
+        URL propPathUrl= getClass().getClassLoader().getResource(propPath);
+        File propFile = (propPathUrl != null) ? new File(propPathUrl.getFile()) : new File(propPath); 
+        if (!propFile.exists()) {
+            throw new FileNotFoundException(
+                    "Missing configuration properties file : "
+                            + propFile);
+        }
+
+        Properties props = new Properties();
+        props.load(new FileInputStream(propFile));
+        this.sourceHost = props.getProperty("org.onap.sdnc.datamigrator.source.host");
+        this.sourceUser = props.getProperty("org.onap.sdnc.datamigrator.source.user");
+        this.sourcePassword = props.getProperty("org.onap.sdnc.datamigrator.source.password");
+        this.targetHost = props.getProperty("org.onap.sdnc.datamigrator.target.host");
+        this.targetUser = props.getProperty("org.onap.sdnc.datamigrator.target.user");
+        this.targetPassword = props.getProperty("org.onap.sdnc.datamigrator.target.password");
+        this.dataPath = props.getProperty("org.onap.sdnc.datamigrator.data.path");
+    }
+
+    public String getSourceHost() {
+        return sourceHost;
+    }
+
+    public String getSourceUser() {
+        return sourceUser;
+    }
+
+    public String getSourcePassword() {
+        return sourcePassword;
+    }
+
+    public String getTargetHost() {
+        return targetHost;
+    }
+
+    public String getTargetUser() {
+        return targetUser;
+    }
+
+    public String getTargetPassword() {
+        return targetPassword;
+    }
+
+    public String getDataPath() {
+        return dataPath;
+    }
+
+    public void setDataPath(String dataPath) {
+        this.dataPath = dataPath;
+    }
+}
diff --git a/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/common/Operation.java b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/common/Operation.java
new file mode 100644
index 0000000..df6cd00
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/common/Operation.java
@@ -0,0 +1,24 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC
+ * ================================================================================
+ * Copyright 2019 AMDOCS
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.oam.datamigrator.common;
+
+public enum Operation {
+    RESTORE,MIGRATE,BACKUP
+}
diff --git a/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/common/RestconfClient.java b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/common/RestconfClient.java
new file mode 100644
index 0000000..b7722b6
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/common/RestconfClient.java
@@ -0,0 +1,144 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC
+ * ================================================================================
+ * Copyright 2019 AMDOCS
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.oam.datamigrator.common;
+
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import org.onap.sdnc.oam.datamigrator.exceptions.RestconfException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.Authenticator;
+import java.net.HttpURLConnection;
+import java.net.PasswordAuthentication;
+import java.net.URL;
+import java.util.Base64;
+
+public class RestconfClient {
+
+    private HttpURLConnection httpConn = null;
+    private final String host ;
+    private final String user ;
+    private final String password ;
+    private static final String CONFIG_PATH = "/restconf/config/";
+    private static final String CONTENT_TYPE_JSON = "application/json";
+    private final Logger log = LoggerFactory.getLogger(RestconfClient.class);
+
+    public RestconfClient (String host , String user , String password){
+        this.host = host;
+        this.user = user;
+        this.password = password;
+    }
+
+    private class SdncAuthenticator extends Authenticator {
+
+        private final String user;
+        private final String passwd;
+
+        SdncAuthenticator(String user, String passwd) {
+            this.user = user;
+            this.passwd = passwd;
+        }
+        @Override
+        protected PasswordAuthentication getPasswordAuthentication() {
+            return new PasswordAuthentication(user, passwd.toCharArray());
+        }
+    }
+
+    public JsonObject get(String path) throws RestconfException {
+            String getResponse = send(path,"GET",CONTENT_TYPE_JSON,"");
+            JsonParser parser = new JsonParser();
+            return parser.parse(getResponse).getAsJsonObject();
+    }
+
+    public void put(String path, String data) throws RestconfException {
+            send(path,"PUT",CONTENT_TYPE_JSON, data );
+    }
+
+    private String send(String path,String method, String contentType, String msg) throws RestconfException {
+        Authenticator.setDefault(new SdncAuthenticator(user, password));
+        String url = host + CONFIG_PATH + path;
+        try {
+            URL sdncUrl = new URL(url);
+            log.info("SDNC url: " + url);
+            log.info("Method: " + method);
+            this.httpConn = (HttpURLConnection) sdncUrl.openConnection();
+            String authStr = user + ":" + password;
+            String encodedAuthStr = new String(Base64.getEncoder().encode(authStr.getBytes()));
+            httpConn.addRequestProperty("Authentication", "Basic " + encodedAuthStr);
+
+            httpConn.setRequestMethod(method);
+            httpConn.setRequestProperty("Content-Type", contentType);
+            httpConn.setRequestProperty("Accept", contentType);
+
+            httpConn.setDoInput(true);
+            httpConn.setDoOutput(true);
+            httpConn.setUseCaches(false);
+
+            if (httpConn instanceof HttpsURLConnection) {
+                HostnameVerifier hostnameVerifier = (hostname, session) -> true;
+                ((HttpsURLConnection) httpConn).setHostnameVerifier(hostnameVerifier);
+            }
+            if (!method.equals("GET")) {
+                log.info("Request payload: " + msg);
+                httpConn.setRequestProperty("Content-Length", "" + msg.length());
+                DataOutputStream outStr = new DataOutputStream(httpConn.getOutputStream());
+                outStr.write(msg.getBytes());
+                outStr.close();
+            }
+
+            BufferedReader respRdr;
+            log.info("Response: " + httpConn.getResponseCode() + " " + httpConn.getResponseMessage());
+
+            if (httpConn.getResponseCode() < 300) {
+                respRdr = new BufferedReader(new InputStreamReader(httpConn.getInputStream()));
+            } else {
+                respRdr = new BufferedReader(new InputStreamReader(httpConn.getErrorStream()));
+                log.error("Error during restconf operation: "+ method + ". URL:" + sdncUrl.toString()+". Response:"+respRdr);
+                throw new RestconfException(httpConn.getResponseCode(),"Error during restconf operation: "+ method +". Response:"+respRdr);
+            }
+
+            StringBuilder respBuff = new StringBuilder();
+            String respLn;
+            while ((respLn = respRdr.readLine()) != null) {
+                respBuff.append(respLn).append("\n");
+            }
+            respRdr.close();
+            String respString = respBuff.toString();
+
+            log.info("Response body :\n" + respString);
+            return respString;
+        }catch (IOException e){
+            throw new RestconfException(500,e.getMessage(),e);
+        }finally {
+            if (httpConn != null) {
+                httpConn.disconnect();
+            }
+        }
+    }
+
+
+}
diff --git a/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/exceptions/RestconfException.java b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/exceptions/RestconfException.java
new file mode 100644
index 0000000..6b714c2
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/exceptions/RestconfException.java
@@ -0,0 +1,46 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC
+ * ================================================================================
+ * Copyright 2019 AMDOCS
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.oam.datamigrator.exceptions;
+
+public class RestconfException extends Exception{
+
+    private final int errorCode;
+    private final String errorMessage;
+
+    public RestconfException(int errorCode, String errorMessage) {
+        super(errorMessage);
+        this.errorCode = errorCode;
+        this.errorMessage = errorMessage;
+    }
+
+    public RestconfException(int errorCode, String errorMessage, Throwable e) {
+        super(errorMessage,e);
+        this.errorCode = errorCode;
+        this.errorMessage = errorMessage;
+    }
+
+    public int getErrorCode() {
+        return errorCode;
+    }
+
+    public String getErrorMessage() {
+        return errorMessage;
+    }
+}
diff --git a/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/migrators/Migrator.java b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/migrators/Migrator.java
new file mode 100644
index 0000000..e44a2c7
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/migrators/Migrator.java
@@ -0,0 +1,136 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC
+ * ================================================================================
+ * Copyright 2019 AMDOCS
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.oam.datamigrator.migrators;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import org.onap.sdnc.oam.datamigrator.common.MigratorConfiguration;
+import org.onap.sdnc.oam.datamigrator.common.Operation;
+import org.onap.sdnc.oam.datamigrator.common.RestconfClient;
+import org.onap.sdnc.oam.datamigrator.exceptions.RestconfException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+
+public abstract class Migrator {
+
+    protected RestconfClient sourceClient;
+    protected RestconfClient targetClient;
+    protected boolean success = true;
+    private MigratorConfiguration config;
+    private final Logger log = LoggerFactory.getLogger(PreloadInformationMigrator.class);
+
+
+    public void run(Operation operation){
+        {
+            JsonObject sourceData;
+            if(operation != Operation.RESTORE) {
+
+                try {
+                    sourceData = sourceClient.get(getYangModuleName()+":"+ getSourcePath());
+                    if(operation == Operation.BACKUP){
+                        String fileName = getFileName();
+                        try {
+                            BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
+                            writer.write(sourceData.toString());
+                            writer.close();
+                        } catch (IOException e) {
+                            log.error("Error writing data to file : " + fileName, e);
+                            success = false;
+                            return;
+                        }
+                        return;
+                    }
+                } catch (RestconfException e) {
+                    if(e.getErrorCode() == 404){
+                        log.error("No data available for migration. Returning silent success.", e);
+                        success = true;
+                    }else {
+                        log.error("Error retrieving data from MD-SAL store. Error code: " + e.getErrorCode() + ". Error message:" + e.getErrorMessage(), e);
+                        success = false;
+                    }
+                    return;
+                }
+            }else {
+                String fileName = getFileName();
+                try {
+                    Gson gson = new Gson();
+                    sourceData = gson.fromJson(new BufferedReader(new FileReader(fileName)),JsonObject.class);
+                } catch (IOException e) {
+                    log.error("Error Reading data from file : " + fileName, e);
+                    success = false;
+                    return;
+                }
+            }
+            try {
+                String targetData = convertData(sourceData);
+                targetClient.put(getYangModuleName()+":"+ getTargetPath(),targetData);
+            } catch (RestconfException e) {
+                log.error("Error loading data to MD-SAL store. Error code: "+e.getErrorCode()+". Error message:"+e.getErrorMessage(),e);
+                success=false;
+            }
+        }
+    }
+
+    private String getFileName() {
+        return config.getDataPath()+ "/" + getYangModuleName()+ "_"+ getSourcePath()+"_"+ getTargetPath() + ".json";
+    }
+
+    protected abstract String convertData(JsonObject sourceData);
+
+    public abstract String getYangModuleName();
+    public abstract String getSourcePath();
+    public abstract String getTargetPath();
+
+    public void init(MigratorConfiguration config){
+        this.config = config;
+        sourceClient = new RestconfClient(config.getSourceHost(),config.getSourceUser(),config.getSourcePassword());
+        targetClient = new RestconfClient(config.getTargetHost(),config.getTargetUser(),config.getTargetPassword());
+    }
+
+    public RestconfClient getSourceClient() {
+        return sourceClient;
+    }
+
+    public void setSourceClient(RestconfClient sourceClient) {
+        this.sourceClient = sourceClient;
+    }
+
+    public RestconfClient getTargetClient() {
+        return targetClient;
+    }
+
+    public void setTargetClient(RestconfClient targetClient) {
+        this.targetClient = targetClient;
+    }
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+}
+
diff --git a/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/migrators/PreloadInformationMigrator.java b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/migrators/PreloadInformationMigrator.java
new file mode 100644
index 0000000..d259c21
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/migrators/PreloadInformationMigrator.java
@@ -0,0 +1,61 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC
+ * ================================================================================
+ * Copyright 2019 AMDOCS
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.oam.datamigrator.migrators;
+
+import org.onap.sdnc.oam.datamigrator.common.Description;
+
+import java.util.HashMap;
+import java.util.HashSet;
+
+@Description("Migrator for container 'preload-vnf' in GENERIC-RESOURCE-API.yang")
+public class PreloadInformationMigrator extends RenameDeleteLeafMigrator {
+
+    private static final String YANG_MODULE = "GENERIC-RESOURCE-API";
+
+    static{
+        deletedFields = new HashSet<>();
+        deletedFields.add("preload-vnfs.vnf-preload-list.preload-data.vnf-topology-information");
+        deletedFields.add("preload-vnfs.vnf-preload-list.preload-data.network-topology-information.network-topology-identifier.service-type");
+        deletedFields.add("preload-vnfs.vnf-preload-list.preload-data.oper-status.last-action");
+        renamedFields = new HashMap<>();
+        renamedFields.put("preload-vnfs","preload-information");
+        renamedFields.put("preload-vnfs.vnf-preload-list","preload-list");
+        renamedFields.put("preload-vnfs.vnf-preload-list.vnf-type","preload-type");
+        renamedFields.put("preload-vnfs.vnf-preload-list.vnf-name","preload-id");
+        renamedFields.put("preload-vnfs.vnf-preload-list.preload-data.oper-status","preload-oper-status");
+        renamedFields.put("preload-vnfs.vnf-preload-list.preload-data.network-topology-information","preload-network-topology-information");
+        renamedFields.put("preload-vnfs.vnf-preload-list.preload-data.network-topology-information.network-topology-identifier","network-topology-identifier-structure");
+    }
+
+    @Override
+    public String getYangModuleName() {
+        return YANG_MODULE;
+    }
+
+    @Override
+    public String getSourcePath() {
+        return "preload-vnfs";
+    }
+
+    @Override
+    public String getTargetPath() {
+        return "preload-information";
+    }
+}
diff --git a/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/migrators/RenameDeleteLeafMigrator.java b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/migrators/RenameDeleteLeafMigrator.java
new file mode 100644
index 0000000..8c0adc0
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/main/java/org/onap/sdnc/oam/datamigrator/migrators/RenameDeleteLeafMigrator.java
@@ -0,0 +1,62 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC
+ * ================================================================================
+ * Copyright 2019 AMDOCS
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.oam.datamigrator.migrators;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import org.apache.commons.lang3.StringUtils;
+import java.util.Map;
+import java.util.Set;
+
+public abstract class RenameDeleteLeafMigrator extends Migrator {
+
+    protected static Map<String,String> renamedFields ;
+    protected static Set<String> deletedFields ;
+
+    @Override
+    protected String convertData(JsonObject sourceData) {
+        JsonObject target =  convert(sourceData,"");
+        return  target.toString();
+    }
+
+    protected JsonObject convert(JsonObject source,String parent) {
+        JsonObject target = new JsonObject();
+        for (String key : source.keySet()){
+            String prefixKey = StringUtils.isNotEmpty(parent) ? parent + "."+key : key;
+            if(!deletedFields.contains(prefixKey)) {
+                JsonElement value = source.get(key);
+                if (value.isJsonPrimitive()) {
+                    target.add(renamedFields.getOrDefault(prefixKey,key), value);
+                } else if(value.isJsonArray()){
+                    JsonArray targetList = new JsonArray();
+                    JsonArray sourceArray = value.getAsJsonArray();
+                    for(JsonElement  e : sourceArray){
+                         targetList.add(convert(e.getAsJsonObject(),prefixKey));
+                    }
+                    target.add(renamedFields.getOrDefault(prefixKey,key), targetList);
+                } else{
+                    target.add(renamedFields.getOrDefault(prefixKey,key), convert(value.getAsJsonObject(),prefixKey));
+                }
+            }
+        }
+        return target;
+    }
+}
diff --git a/sdnc-a1-controller/oam/data-migrator/src/main/resources/data-migrator.properties b/sdnc-a1-controller/oam/data-migrator/src/main/resources/data-migrator.properties
new file mode 100644
index 0000000..f5f55a5
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/main/resources/data-migrator.properties
@@ -0,0 +1,27 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2019 AMDOCS
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+org.onap.sdnc.datamigrator.source.host=http://localhost:8081
+org.onap.sdnc.datamigrator.source.user=admin
+org.onap.sdnc.datamigrator.source.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+org.onap.sdnc.datamigrator.target.host=http://localhost:8082
+org.onap.sdnc.datamigrator.target.user=admin
+org.onap.sdnc.datamigrator.target.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+org.onap.sdnc.datamigrator.data.path=C:/DATA
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/data-migrator/src/main/resources/log4j.properties b/sdnc-a1-controller/oam/data-migrator/src/main/resources/log4j.properties
new file mode 100644
index 0000000..d53dc5a
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/main/resources/log4j.properties
@@ -0,0 +1,37 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2019 AMDOCS
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+log4j.rootLogger=DEBUG,CONSOLE,LOGFILE
+
+# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.Threshold=DEBUG
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%p %d{yyyy-MM-dd HH:mm:ss.SSS Z} %c{1} - %m%n
+
+
+# LOGFILE is set to be a File appender using a PatternLayout.
+log4j.appender.LOGFILE=org.apache.log4j.RollingFileAppender
+log4j.appender.LOGFILE.File=/opt/app/data-migrator/data-migrator.log
+log4j.appender.LOGFILE.Append=true
+log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
+log4j.appender.LOGFILE.layout.ConversionPattern=%p %d{yyyy-MM-dd HH:mm:ss.SSS Z} %c{1} - %m%n
+log4j.appender.LOGFILE.MaxFileSize=10MB
+log4j.appender.LOGFILE.MaxBackupIndex=10
diff --git a/sdnc-a1-controller/oam/data-migrator/src/main/scripts/runMigration.sh b/sdnc-a1-controller/oam/data-migrator/src/main/scripts/runMigration.sh
new file mode 100644
index 0000000..e763acb
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/main/scripts/runMigration.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2019 AMDOCS
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+PROPERTY_DIR=${PROPERTY_DIR:-/opt/onap/sdnc/data/properties}
+MIGRATION=data-migrator
+MIGRATION_ROOT=${MIGRATION_ROOT:-/opt/onap/sdnc/data-migrator}
+JAVA_HOME=${JAVA_HOME:-/usr/lib/jvm/java-8-oracle}
+JAVA_OPTS=${JAVA_OPTS:--Dhttps.protocols=TLSv1.1,TLSv1.2}
+JAVA=${JAVA:-${JAVA_HOME}/bin/java}
+
+# Redirect output from script to MIGRATION.out
+exec >> ${MIGRATION_ROOT}/logs/$MIGRATION.out
+exec 2>&1
+
+if [ ! -d ${MIGRATION_ROOT}/logs ]
+then
+  mkdir ${MIGRATION_ROOT}/logs
+fi
+
+for file in ${MIGRATION_ROOT}/lib/*.jar
+do
+  CLASSPATH=$CLASSPATH:$file
+done
+
+${JAVA} ${JAVA_OPTS} -Dlog4j.configuration=file:${MIGRATION_ROOT}/properties/log4j.properties -cp ${CLASSPATH} org.onap.sdnc.oam.datamigrator.DataMigration $@
+
+echo $! 
+
+exit 0
diff --git a/sdnc-a1-controller/oam/data-migrator/src/test/java/org/onap/sdnc/oam/datamigrator/DataMigrationInternalTest.java b/sdnc-a1-controller/oam/data-migrator/src/test/java/org/onap/sdnc/oam/datamigrator/DataMigrationInternalTest.java
new file mode 100644
index 0000000..18cd662
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/test/java/org/onap/sdnc/oam/datamigrator/DataMigrationInternalTest.java
@@ -0,0 +1,92 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC
+ * ================================================================================
+ * Copyright 2019 AMDOCS
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.oam.datamigrator;
+
+import com.github.tomakehurst.wiremock.client.WireMock;
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.put;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+public class DataMigrationInternalTest {
+
+    @Rule
+    public WireMockRule source = new WireMockRule(8081);
+    @Rule
+    public WireMockRule target = new WireMockRule(8082);
+    
+    private static final Logger LOG = LoggerFactory.getLogger(DataMigrationInternal.class);
+    DataMigrationInternal dataMigrationInternal = new DataMigrationInternal(LOG);
+    private ClassLoader classLoader = getClass().getClassLoader();
+    private  String preloadVnfResponseJson = new String(Files.readAllBytes(Paths.get(classLoader.getResource("wiremock/preloadVnfResponse.json").toURI())));
+    private String preloadInformationRequestJson = new String(Files.readAllBytes(Paths.get(classLoader.getResource("wiremock/preloadInformationRequest.json").toURI())));
+
+    public DataMigrationInternalTest() throws IOException, URISyntaxException {
+    }
+
+    @Test
+    public void runPositiveTest() {
+        String [] args = {"-c","migration/props"};
+        PrintStream oldOutputStream = System.out;
+        final ByteArrayOutputStream myOut = new ByteArrayOutputStream();
+        System.setOut(new PrintStream(myOut));
+        source.stubFor(get(urlEqualTo("/restconf/config/GENERIC-RESOURCE-API:preload-vnfs")).willReturn(
+                aResponse()
+                        .withStatus(200)
+                        .withBody(preloadVnfResponseJson)));
+        target.stubFor(put(urlEqualTo("/restconf/config/GENERIC-RESOURCE-API:preload-information")).withRequestBody(WireMock.equalTo(preloadInformationRequestJson)).willReturn(
+                aResponse()
+                        .withStatus(200)));
+        dataMigrationInternal.run(args);
+        String content = myOut.toString();
+        assertThat("Migration failed", content.contains("MIGRATE operation completed Successfully."));
+        System.setOut(oldOutputStream);
+    }
+
+  @Test
+    public void runTestWithNoData() {
+        String [] args = {"-c","migration/props"};
+      PrintStream oldOutputStream = System.out;
+      final ByteArrayOutputStream myOut = new ByteArrayOutputStream();
+      System.setOut(new PrintStream(myOut));
+      source.stubFor(get(urlEqualTo("/restconf/config/GENERIC-RESOURCE-API:preload-vnfs"))
+              .willReturn(aResponse().withStatus(404)));
+      target.stubFor(put(urlEqualTo("/restconf/config/GENERIC-RESOURCE-API:preload-information"))
+              .withRequestBody(WireMock.equalTo(preloadInformationRequestJson)).willReturn(aResponse().withStatus(200)));
+      dataMigrationInternal.run(args);
+      String content = myOut.toString();
+      assertThat("Migration failed", content.contains("MIGRATE operation completed Successfully."));
+      System.setOut(oldOutputStream);
+    }
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/data-migrator/src/test/java/org/onap/sdnc/oam/datamigrator/common/RestconfClientTest.java b/sdnc-a1-controller/oam/data-migrator/src/test/java/org/onap/sdnc/oam/datamigrator/common/RestconfClientTest.java
new file mode 100644
index 0000000..bbffd60
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/test/java/org/onap/sdnc/oam/datamigrator/common/RestconfClientTest.java
@@ -0,0 +1,107 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC
+ * ================================================================================
+ * Copyright 2019 AMDOCS
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.oam.datamigrator.common;
+
+import com.github.tomakehurst.wiremock.client.WireMock;
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import org.junit.Rule;
+import org.junit.Test;
+import org.onap.sdnc.oam.datamigrator.exceptions.RestconfException;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.put;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+public class RestconfClientTest {
+
+    @Rule
+    public WireMockRule service = new WireMockRule(8081);
+    private RestconfClient restconfClient = new RestconfClient("http://localhost:8081","admin","Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U");
+    private ClassLoader classLoader = getClass().getClassLoader();
+    private  String preloadVnfResponseJson = new String(Files.readAllBytes(Paths.get(classLoader.getResource("wiremock/preloadVnfResponse.json").toURI())));
+    private String preloadInformationRequestJson = new String(Files.readAllBytes(Paths.get(classLoader.getResource("wiremock/preloadInformationRequest.json").toURI())));
+    
+    
+    JsonObject expectedJsonObject = new JsonParser().parse(preloadVnfResponseJson).getAsJsonObject();
+
+    public RestconfClientTest() throws IOException, URISyntaxException {
+    }
+
+    @Test
+    public void getPositiveTest() {
+        service.stubFor(get(urlEqualTo("/restconf/config/GENERIC-RESOURCE-API:preload-vnfs"))
+                .willReturn(aResponse().withStatus(200).withBody(preloadVnfResponseJson)));
+        JsonObject actualResponse=null;
+        try {
+            actualResponse =  restconfClient.get("GENERIC-RESOURCE-API:preload-vnfs");
+        } catch (RestconfException e) {
+            e.printStackTrace();
+        }
+        assertEquals(expectedJsonObject,actualResponse);
+    }
+
+    @Test
+    public void getNegativeTest() {
+        service.stubFor(get(urlEqualTo("/restconf/config/GENERIC-RESOURCE-API:preload-vnfs"))
+                .willReturn(aResponse().withStatus(404)));
+        JsonObject actualResponse=null;
+        try {
+            actualResponse = restconfClient.get("GENERIC-RESOURCE-API:preload-vnfs");
+        } catch (RestconfException e) {
+            e.printStackTrace();
+        }
+        assertNull(actualResponse);
+    }
+
+    @Test
+    public void putPositiveTest() {
+        service.stubFor(put(urlEqualTo("/restconf/config/GENERIC-RESOURCE-API:preload-information"))
+                .withRequestBody(WireMock.equalTo(preloadInformationRequestJson)).willReturn(aResponse().withStatus(200)));
+        Exception ex = null;
+        try {
+            restconfClient.put("GENERIC-RESOURCE-API:preload-information", preloadInformationRequestJson);
+        } catch (RestconfException e) {
+            ex =e;
+        }
+        assertNull(ex);
+    }
+
+    @Test
+    public void putNegativeTest() {
+        service.stubFor(put(urlEqualTo("/restconf/config/GENERIC-RESOURCE-API:preload-information"))
+                .withRequestBody(WireMock.equalTo(preloadInformationRequestJson)).willReturn(aResponse().withStatus(500)));
+        try {
+            restconfClient.put("GENERIC-RESOURCE-API:preload-information", preloadInformationRequestJson);
+        } catch (RestconfException e) {
+           assertTrue(e.getErrorMessage().contains("Error during restconf operation: PUT."));
+        }
+    }
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/data-migrator/src/test/java/org/onap/sdnc/oam/datamigrator/datamigrator/PreloadInformationMigratorTest.java b/sdnc-a1-controller/oam/data-migrator/src/test/java/org/onap/sdnc/oam/datamigrator/datamigrator/PreloadInformationMigratorTest.java
new file mode 100644
index 0000000..7972b7a
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/test/java/org/onap/sdnc/oam/datamigrator/datamigrator/PreloadInformationMigratorTest.java
@@ -0,0 +1,80 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : SDNC
+ * ================================================================================
+ * Copyright 2019 AMDOCS
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.sdnc.oam.datamigrator.datamigrator;
+
+import com.github.tomakehurst.wiremock.client.WireMock;
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.onap.sdnc.oam.datamigrator.common.Operation;
+import org.onap.sdnc.oam.datamigrator.common.RestconfClient;
+import org.onap.sdnc.oam.datamigrator.migrators.PreloadInformationMigrator;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+public class PreloadInformationMigratorTest {
+
+    @Rule
+    public WireMockRule service1 = new WireMockRule(8081);
+
+    @Rule
+    public WireMockRule service2 = new WireMockRule(8082);
+    PreloadInformationMigrator migrator = new PreloadInformationMigrator();
+    private ClassLoader classLoader = getClass().getClassLoader();
+    private  String preloadVnfResponseJson = new String(Files.readAllBytes(Paths.get(classLoader.getResource("wiremock/preloadVnfResponse.json").toURI())));
+    private String preloadInformationRequestJson = new String(Files.readAllBytes(Paths.get(classLoader.getResource("wiremock/preloadInformationRequest.json").toURI())));
+
+    public PreloadInformationMigratorTest() throws IOException, URISyntaxException {
+    }
+
+    @Test
+    public void testRun (){
+        service1.stubFor(WireMock.get(WireMock.urlEqualTo("/restconf/config/GENERIC-RESOURCE-API:preload-vnfs")).willReturn(
+                WireMock.aResponse()
+                        .withStatus(200)
+                        .withBody(preloadVnfResponseJson)));
+        service2.stubFor(WireMock.put(WireMock.urlEqualTo("/restconf/config/GENERIC-RESOURCE-API:preload-information")).withRequestBody(WireMock.equalTo(preloadInformationRequestJson)).willReturn(
+                WireMock.aResponse()
+                        .withStatus(200)));
+        RestconfClient sourceClient = new RestconfClient("http://localhost:8081","admin","Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U");
+        migrator.setSourceClient(sourceClient);
+        RestconfClient targetClient = new RestconfClient("http://localhost:8082","admin","Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U");
+        migrator.setTargetClient(targetClient);
+        migrator.run(Operation.MIGRATE);
+    }
+
+    @Test
+    public void testRunNoData (){
+        service1.stubFor(WireMock.get(WireMock.urlEqualTo("/restconf/config/GENERIC-RESOURCE-API:preload-vnfs")).willReturn(
+                WireMock.aResponse()
+                        .withStatus(404)));
+        service2.stubFor(WireMock.put(WireMock.urlEqualTo("/restconf/config/GENERIC-RESOURCE-API:preload-information")).withRequestBody(WireMock.equalTo(preloadInformationRequestJson)).willReturn(
+                WireMock.aResponse()
+                        .withStatus(200)));
+        RestconfClient sourceClient = new RestconfClient("http://localhost:8081","admin","Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U");
+        migrator.setSourceClient(sourceClient);
+        RestconfClient targetClient = new RestconfClient("http://localhost:8082","admin","Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U");
+        migrator.setTargetClient(targetClient);
+        migrator.run(Operation.MIGRATE);
+    }
+}
diff --git a/sdnc-a1-controller/oam/data-migrator/src/test/resources/log4j.properties b/sdnc-a1-controller/oam/data-migrator/src/test/resources/log4j.properties
new file mode 100644
index 0000000..82f1f47
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/test/resources/log4j.properties
@@ -0,0 +1,29 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : SDN-C
+# ================================================================================
+# Copyright (C) 2019 AMDOCS
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+log4j.rootLogger=DEBUG,CONSOLE
+
+# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.Threshold=DEBUG
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%p %d{yyyy-MM-dd HH:mm:ss.SSS Z} %c{1} - %m%n
+
+
diff --git a/sdnc-a1-controller/oam/data-migrator/src/test/resources/migration/props/data-migrator.properties b/sdnc-a1-controller/oam/data-migrator/src/test/resources/migration/props/data-migrator.properties
new file mode 100644
index 0000000..d9ddadb
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/test/resources/migration/props/data-migrator.properties
@@ -0,0 +1,27 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : SDN-C
+# ================================================================================
+# Copyright (C) 2019 AMDOCS
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+org.onap.sdnc.datamigrator.source.host=http://localhost:8081
+org.onap.sdnc.datamigrator.source.user=admin
+org.onap.sdnc.datamigrator.source.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+org.onap.sdnc.datamigrator.target.host=http://localhost:8082
+org.onap.sdnc.datamigrator.target.user=admin
+org.onap.sdnc.datamigrator.target.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+org.onap.sdnc.datamigrator.data.path=C:/DATA
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/data-migrator/src/test/resources/wiremock/preloadInformationRequest.json b/sdnc-a1-controller/oam/data-migrator/src/test/resources/wiremock/preloadInformationRequest.json
new file mode 100644
index 0000000..82df627
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/test/resources/wiremock/preloadInformationRequest.json
@@ -0,0 +1 @@
+{"preload-information":{"preload-list":[{"preload-type":"vnf-type","preload-id":"vnf-name","preload-data":{"preload-oper-status":{"modify-timestamp":"Some modify-timestamp","create-timestamp":"Some create-timestamp","last-order-status":"Active","order-status":"Active","maintenance-indicator":"Y","last-svc-request-id":"Some last-svc-request-id"},"preload-network-topology-information":{"is-provider-network":true,"network-topology-identifier-structure":{"network-role":"Some network-role","network-technology":"Some network-technology","network-type":"Some network-type","network-name":"Some network-name"},"route-table-reference":[{"route-table-reference-fqdn":"Some route-table-reference-fqdn","route-table-reference-id":"Some route-table-reference-id"}],"network-policy":[{"network-policy-fqdn":"Some network-policy-fqdn","network-policy-id":"Some network-policy-id"}],"subnets":[{"start-address":"1.1.11.2","gateway-address":"8.0.25.2","cidr-mask":"Some cidr-mask","dhcp-end-address":"Some dhcp-end-address","subnet-name":"Some subnet-name","dhcp-start-address":"Some dhcp-start-address","ip-version":"Some ip-version","dhcp-enabled":"Y"}],"vpn-bindings":[{"vpn-binding-id":"Some vpn-binding-id","global-route-target":"Some global-route-target"}],"is-external-network":true,"is-shared-network":true,"physical-network-name":"Some physical-network-name"}}}]}}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/data-migrator/src/test/resources/wiremock/preloadVnfResponse.json b/sdnc-a1-controller/oam/data-migrator/src/test/resources/wiremock/preloadVnfResponse.json
new file mode 100644
index 0000000..006d62f
--- /dev/null
+++ b/sdnc-a1-controller/oam/data-migrator/src/test/resources/wiremock/preloadVnfResponse.json
@@ -0,0 +1,132 @@
+{
+  "preload-vnfs": {
+    "vnf-preload-list": [
+      {
+        "vnf-type": "vnf-type",
+        "vnf-name": "vnf-name",
+        "preload-data": {
+          "oper-status": {
+            "last-action": "VNFActivateRequest",
+            "modify-timestamp": "Some modify-timestamp",
+            "create-timestamp": "Some create-timestamp",
+            "last-order-status": "Active",
+            "order-status": "Active",
+            "maintenance-indicator": "Y",
+            "last-svc-request-id": "Some last-svc-request-id"
+          },
+          "vnf-topology-information": {
+            "vnf-topology-identifier": {
+              "service-type": "Some service-type",
+              "service-id": "Some service-id",
+              "generic-vnf-name": "Some generic-vnf-name",
+              "generic-vnf-id": "Some generic-vnf-id",
+              "generic-vnf-type": "Some generic-vnf-type",
+              "vnf-type": "vnf-type",
+              "vnf-name": "vnf-name"
+            },
+            "vnf-parameters": [
+              {
+                "vnf-parameter-name": "Some vnf-parameter-name",
+                "vnf-parameter-value": "Some vnf-parameter-value"
+              }
+            ],
+            "vnf-assignments": {
+              "vnf-vms": [
+                {
+                  "vm-type": "Some vm-type",
+                  "vm-count": 0,
+                  "vm-names": [
+                    {"vm-name": "Some vm-name"}
+                  ],
+                  "vm-networks": [
+                    {
+                      "network-role": "Some network-role",
+                      "use-dhcp": "Y",
+                      "floating-ip": "2.12.250.0",
+                      "network-macs": [
+                        {"mac-address": "Some mac-address"}
+                      ],
+                      "network-ips": [
+                        {"ip-address": "13.2.219.8"}
+                      ],
+                      "interface-route-prefixes": [
+                        {
+                          "interface-route-prefix-cidr": "Some interface-route-prefix-cidr",
+                          "interface-route-prefix": "24.0.45.1"
+                        }
+                      ],
+                      "ip-count": 0
+                    }
+                  ]
+                }
+              ],
+              "vnf-status": "Some vnf-status",
+              "vnf-networks": [
+                {
+                  "network-role": "Some network-role",
+                  "network-id": "Some network-id",
+                  "ipv6-subnet-id": "Some ipv6-subnet-id",
+                  "ipv6-subnet-name": "Some ipv6-subnet-name",
+                  "subnet-name": "Some subnet-name",
+                  "contrail-network-fqdn": "Some contrail-network-fqdn",
+                  "subnet-id": "Some subnet-id",
+                  "sriov-vlan-filter-list": [
+                    {"sriov-vlan-filter": "Some sriov-vlan-filter"}
+                  ],
+                  "network-name": "Some network-name",
+                  "neutron-id": "Some neutron-id"
+                }
+              ],
+              "availability-zones": [
+                {"availability-zone": "Some availability-zone"}
+              ]
+            }
+          },
+          "network-topology-information": {
+            "is-provider-network": true,
+            "network-topology-identifier": {
+              "service-type": "Some service-type",
+              "network-role": "Some network-role",
+              "network-technology": "Some network-technology",
+              "network-type": "Some network-type",
+              "network-name": "Some network-name"
+            },
+            "route-table-reference": [
+              {
+                "route-table-reference-fqdn": "Some route-table-reference-fqdn",
+                "route-table-reference-id": "Some route-table-reference-id"
+              }
+            ],
+            "network-policy": [
+              {
+                "network-policy-fqdn": "Some network-policy-fqdn",
+                "network-policy-id": "Some network-policy-id"
+              }
+            ],
+            "subnets": [
+              {
+                "start-address": "1.1.11.2",
+                "gateway-address": "8.0.25.2",
+                "cidr-mask": "Some cidr-mask",
+                "dhcp-end-address": "Some dhcp-end-address",
+                "subnet-name": "Some subnet-name",
+                "dhcp-start-address": "Some dhcp-start-address",
+                "ip-version": "Some ip-version",
+                "dhcp-enabled": "Y"
+              }
+            ],
+            "vpn-bindings": [
+              {
+                "vpn-binding-id": "Some vpn-binding-id",
+                "global-route-target": "Some global-route-target"
+              }
+            ],
+            "is-external-network": true,
+            "is-shared-network": true,
+            "physical-network-name": "Some physical-network-name"
+          }
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/docs/apis/genericresource.rst b/sdnc-a1-controller/oam/docs/apis/genericresource.rst
new file mode 100644
index 0000000..3b3afef
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/apis/genericresource.rst
@@ -0,0 +1,4 @@
+GENERIC-RESOURCE-API(2017-08-24)
+================================
+
+.. swaggerv2doc:: https://gerrit.onap.org/r/gitweb?p=sdnc/northbound.git;a=blob_plain;f=generic-resource-api/model/src/main/resources/generic-resource-api.20170824.json
diff --git a/sdnc-a1-controller/oam/docs/apis/vnfapi.rst b/sdnc-a1-controller/oam/docs/apis/vnfapi.rst
new file mode 100644
index 0000000..2595a09
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/apis/vnfapi.rst
@@ -0,0 +1,4 @@
+VNF-API(2015-07-20)
+===================
+
+.. swaggerv2doc:: https://gerrit.onap.org/r/gitweb?p=sdnc/northbound.git;a=blob_plain;f=vnfapi/model/src/main/resources/vnf-api.20150720.json
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/docs/architecture.rst b/sdnc-a1-controller/oam/docs/architecture.rst
new file mode 100644
index 0000000..8daa0d3
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/architecture.rst
@@ -0,0 +1,27 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Architecture
+============
+
+.. note::
+   * This section is used to describe a software component from a high level
+     view of capability, common usage scenarios, and interactions with other
+     components required in the usage scenarios.  
+   
+   * The architecture section is typically: provided in a platform-component
+     and sdk collections; and referenced from developer and user guides.
+   
+   * This note must be removed after content has been added.
+
+
+Capabilities
+------------
+
+
+Usage Scenarios
+---------------
+
+
+Interactions
+------------
diff --git a/sdnc-a1-controller/oam/docs/build.rst b/sdnc-a1-controller/oam/docs/build.rst
new file mode 100644
index 0000000..0a4c308
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/build.rst
@@ -0,0 +1,18 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Build
+=====
+
+
+Environment
+-----------
+Requires maven release 3.3 or greater
+
+Steps
+-----
+To compile this code:
+
+1. Make sure your local Maven settings file ($HOME/.m2/settings.xml) contains references to the ONAP repositories and OpenDaylight repositories.
+
+2. To compile, run "mvn clean install".
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/docs/cert_installation.rst b/sdnc-a1-controller/oam/docs/cert_installation.rst
new file mode 100644
index 0000000..8e665c2
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/cert_installation.rst
@@ -0,0 +1,222 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+============================================================
+Installing Keys and Certificates in ODL for NETCONF over TLS
+============================================================
+
+The purpose of this document is to help you with the setup needed for the installation of xNF keys and certificates inside of OpenDaylight(ODL) in SDNC. 
+
+To use NETCONF over TLS, ODL needs to be configured with Keys and Certificates to use for TLS connections.
+
+Preparing Required Key and Certificate Files
+============================================
+
+The first step to adding the keys and certificates for ODL is to have configured a zip file made up of your keys and certificates that ODL needs.
+
+There are three files required in the zip file and those are:
+    1. client.crt
+    2. client.key
+    3. trustedCertificates.crt which contains a list of trusted certificates - normally one or more CA or sub-CA certificates, or xNF self-signed certificate(s) for testing only
+
+Client.crt represents the client certificate and the client.key is the private key that is to be used.
+Only a single client/client cert is supported as of the Dublin release and multiple clients are not supported. 
+
+These files will all be needed when configuring ODL’s private key, own certificate and trusted certificates.
+
+An example of the three required files that are needed in the zip folder can be seen  in the screenshots below:
+
+
+	.. image:: images/client_certificate.png
+	   :align: center
+
+
+	.. image:: images/client_key.png
+	   :align: center
+
+
+	.. image:: images/trusted_certificate.png
+	   :align: center
+
+
+
+Once you have these three files created you need to create a zip file from these files. 
+You will then have to add the name of this zip file to a file called certs.properties file.
+You should use the naming convention “keys<IncrementedNumber>.zip” that is used in the screenshot below and that between each zip file there is a new line with “\*****” between each zip file.
+Since the Dublin release only supports a single client this means that there should be only one zip file present.
+
+Below is an image of how the certs.properties files should be written: 
+
+	.. image:: images/certs_properties.png
+
+
+
+How to Install Certs and Keys when deploying SDNC/ODL with OOM in K8s environment
+=================================================================================
+
+At setup time, you will need to place the zip file along with the certs.properties file in the following file path:
+   */docker-data/sdnc/certs/*
+
+Placing the files in this location will ensure that your files are mounted into the SDNC container at run time in the /tmp folder.
+
+If you are running in a Kubernetes container and would like to edit the default mount path you need to go to the following path:
+	*oom/kubernetes/sdnc/values.yaml*
+
+
+If you have your zip file and the certs.properties file set up correctly at setup-time, these RPC’s will automatically be called from the installCerts.py file and your keys and certificates will be added to the ODL keystore for you. 
+
+The last step that is needed once you have your zip file and certs.properties file in the correct folder you need to run the following command to deploy ONAP:
+
+.. code-block:: bash
+
+	helm deploy dev local/onap -f /root/oom/kubernetes/onap/resources/environments/public-cloud.yaml -f /root/integration-override.yaml --namespace onap --verbose
+
+Or if you do not want to deploy the full ONAP but just SDNC container run:
+
+.. code-block:: bash
+
+	helm upgrade -i dev-sdnc <path to sdnc chart> --namespace onap  -f <path to global override> -f <path to sdnc sub chart>
+
+Example of this full command is:
+
+.. code-block:: bash
+
+	helm upgrade -i dev-sdnc /root/.helm/plugins/deploy/cache/onap-subcharts/sdnc --namespace onap -f /root/.helm/plugins/deploy/cache/onap/global-overrides.yaml -f /root/.helm/plugins/deploy/cache/onap-subcharts/sdnc/subchart-overrides.yaml
+
+
+How to Install Certs and Keys when deploying SDNC/ODL with docker-compose
+=========================================================================
+
+If you want to do a local installation of SDNC/ODL with docker-compose you need to first download the OAM repo from the gerrit repo with the following URL.
+
+	*git clone https://gerrit.onap.org/r/sdnc/oam*
+
+Once you have this downloaded you need to go the following location.
+
+	*/oam/installation/src/main/yaml*
+
+Once you are there you need to edit the docker-compose.yaml file to include your directory where you have the zip file and certs.properties located. 
+
+You need to add in the following lines into the yaml file just below *container_name: sdnc_controller_container* in the file::
+
+	volumes:
+	  - <Your_Workspace>:/opt/opendaylight/current/certs
+
+Once you have the mount path for your files added into the yaml file you can run the following command::
+
+	docker-compose up -d
+
+
+Clustering:
+=============
+
+For running a Kubernetes cluster using a pre-built SDNC image the keys and certificates only need to be placed on a single mount point and not put on each image individually as the keys and certificates will be replicated across all instances in the cluster.
+
+To get your Kubernetes running in a cluster, you need to SSH into your Rancher machine that your pods are running on and go to the directory:
+
+	*/root/oom/kubernetes/sdnc/*
+
+In this directory you will find the values.yaml file which is the one you will need to edit. You need to find the variable *replicaCount* which is the default number of instances and change that value to 3 for clustering and also look for config: enableClustering and ensure that it is set to true.
+
+Once this is edited you will need to stop the SDNC container with the command:
+
+.. code-block:: bash
+
+	helm delete --purge dev-sdnc
+
+	make all
+
+	helm upgrade -i dev-sdnc /root/oom/kubernetes/sdnc --namespace onap -f /root/.helm/plugins/deploy/cache/onap/global-overrides.yaml -f /root/.helm/plugins/deploy/cache/onap-subcharts/sdnc/subchart-overrides.yaml
+
+
+EXAMPLE: Mounting pnf-simulator
+===============================
+
+If you want to mount a pnf-simulator onto the SDNC container the you must have the pnf-simulator container up and running and the SDNC container running with the keys and certificates in the ODL keystore.
+
+To mount your pnf-simulator you must send the following RPC:
+    *PUT /restconf/config/network-topology:network-topology/topology/topology-netconf/node/pnf-simulator*
+
+
+You must also send this as the body of the request::
+
+    <node xmlns="urn:TBD:params:xml:ns:yang:network-topology">
+        <node-id>pnf-simulator</node-id>
+        <key-based xmlns="urn:opendaylight:netconf-node-topology">
+            <key-id xmlns="urn:opendaylight:netconf-node-topology">ODL_private_key_0</key-id>
+             <username xmlns="urn:opendaylight:netconf-node-topology">netconf</username>
+         </key-based>
+         <host xmlns="urn:opendaylight:netconf-node-topology">IP-ADDRESS</ip-address></host>
+         <port xmlns="urn:opendaylight:netconf-node-topology">6513</port>
+         <tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only>
+ 	     <protocol xmlns="urn:opendaylight:netconf-node-topology">
+             <name xmlns="urn:opendaylight:netconf-node-topology">TLS</name>
+         </protocol>
+         <max-connection-attempts xmlns="urn:opendaylight:netconf-node-topology">2</max-connection-attempts>
+     </node>
+
+
+where IP-ADDRESS is the ip-address you are trying to mount the pnf-simulator on. 
+
+
+
+APPENDIX:
+===========
+
+ODL Commands
+~~~~~~~~~~~~~
+There are three RPC’s needed to configure the keys and certificates for TLS and these are:
+
+    1. “add-keystore-entry” 
+    2. “add-private-keys”
+    3. “add-trusted-certificate”
+
+These three commands will be implemented by scripts in the SDNC container so these will all be implemented automatically.
+
+add-keystore-entry
+-----------------------------
+This is used to add the client private key from the xNF and a key-id to ODL’s TLS keystore. This is triggered with a POST command on ODL’s keystore operations.
+
+The “private-key” data is taken form the client.key file. 
+
+add-private-keys
+---------------------------
+This is used to associate the private key with the client certificate and CA from the xNF and add it to the ODL keystore.
+
+	
+add-trusted-certificate
+-------------------------------------
+This is used to add the list of CA’s and server certificates from the xnf as trusted certificates. The trustedCertificates.crt file is needed for this action as it contains the list of CA’s.
+
+
+Checking Correct Certs Installation
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If you would like to run a check to make sure that your keys and certificates were installed correctly in ODL you can run the following command in Postman REST client:
+	*GET http://localhost:8282/restconf/config/netconf-keystore:keystore*
+
+The authorization that is needed to gain access to ODL’s restconf interface is the default SDNC username and password. 
+
+You should get a response back which looks like the screenshot below:
+
+	.. image:: images/get_keystore.png
+
+
+
+
+
+
+ODL APIs:
+--------------
+
+The ODL features that are installed by the SDNC script are:
+
+	**odl-restconf-all**
+
+	**odl-mdsal-all**
+
+	**odl-netconf-topology**
+
+When we are using a clustered topology some of these features are replaced by other features.
+ 	**odl-netconf-clustered-topology** replaces **odl-netconf-topology**  as these two features cannot be installed together as it will break ODL. 
+	
+	**odl-mdsal-clustering** also gets installed.
diff --git a/sdnc-a1-controller/oam/docs/configuration.rst b/sdnc-a1-controller/oam/docs/configuration.rst
new file mode 100644
index 0000000..c6d382c
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/configuration.rst
@@ -0,0 +1,27 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Configuration
+=============
+
+.. note::
+   * This section is used to describe the options a software component offers for configuration.
+
+   * Configuration is typically: provided for platform-component and sdk projects;
+     and referenced in developer and user guides.
+
+   * This note must be removed after content has been added.
+
+
+
+Example ...
+
+You can provide the following in ``basic.conf``
+
+``host=ADDRESS``
+  The address of the host
+
+``port=PORT``
+  The port used for signaling
+
+  Optional. Default: ``8080``
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/docs/consumedapis.rst b/sdnc-a1-controller/oam/docs/consumedapis.rst
new file mode 100644
index 0000000..fa72e02
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/consumedapis.rst
@@ -0,0 +1,15 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Consumed APIs
+=============
+
+.. note::
+   * This section is used to reference APIs that a software component depends on
+     and uses from other sources.
+
+   * Consumed APIs should be a specific link to the offered APIs from another component
+     or external source.
+
+   * This note must be removed after content has been added.
+
diff --git a/sdnc-a1-controller/oam/docs/delivery.rst b/sdnc-a1-controller/oam/docs/delivery.rst
new file mode 100644
index 0000000..ba5d17b
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/delivery.rst
@@ -0,0 +1,43 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Delivery
+========
+
+.. note::
+   * This section is used to describe a software component packaging.
+     For a run-time component this might be executable images, containers, etc.
+     For an SDK this might be libraries.
+
+   * This section is typically provided for a platform-component and sdk;
+     and referenced in developer and user guides
+
+   * This note must be removed after content has been added.
+
+Example use of a block diagram.
+
+.. blockdiag::
+
+
+   blockdiag layers {
+   orientation = portrait
+   a -> m;
+   b -> n;
+   c -> x;
+   m -> y;
+   m -> z;
+   group l1 {
+   color = blue;
+   x; y; z;
+   }
+   group l2 {
+   color = yellow;
+   m; n;
+   }
+   group l3 {
+   color = orange;
+   a; b; c;
+   }
+
+   }
+
diff --git a/sdnc-a1-controller/oam/docs/humaninterfaces.rst b/sdnc-a1-controller/oam/docs/humaninterfaces.rst
new file mode 100644
index 0000000..47afe69
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/humaninterfaces.rst
@@ -0,0 +1,16 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Human Interfaces
+================
+
+.. note::
+   * This section is used to describe a software component's command line and graphical
+     user interfaces.
+
+   * This section is typically: provided for a platform-component and application; and
+     referenced from  user guides.
+
+   * This note must be removed after content has been added.
+
+
diff --git a/sdnc-a1-controller/oam/docs/images/certs_properties.png b/sdnc-a1-controller/oam/docs/images/certs_properties.png
new file mode 100644
index 0000000..34d9db5
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/images/certs_properties.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/docs/images/client_certificate.png b/sdnc-a1-controller/oam/docs/images/client_certificate.png
new file mode 100644
index 0000000..46b852d
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/images/client_certificate.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/docs/images/client_key.png b/sdnc-a1-controller/oam/docs/images/client_key.png
new file mode 100644
index 0000000..48f94eb
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/images/client_key.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/docs/images/get_keystore.png b/sdnc-a1-controller/oam/docs/images/get_keystore.png
new file mode 100644
index 0000000..77b563f
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/images/get_keystore.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/docs/images/trusted_certificate.png b/sdnc-a1-controller/oam/docs/images/trusted_certificate.png
new file mode 100644
index 0000000..c57211e
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/images/trusted_certificate.png
Binary files differ
diff --git a/sdnc-a1-controller/oam/docs/index.rst b/sdnc-a1-controller/oam/docs/index.rst
new file mode 100644
index 0000000..d954a89
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/index.rst
@@ -0,0 +1,20 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+
+SDNC Northbound
+===============
+
+.. toctree::
+   :maxdepth: 1
+
+   architecture.rst
+   offeredapis.rst
+   consumedapis.rst
+   delivery.rst
+   logging.rst
+   installation.rst
+   configuration.rst
+   build.rst
+   humaninterfaces.rst
+   release-notes.rst
diff --git a/sdnc-a1-controller/oam/docs/installation.rst b/sdnc-a1-controller/oam/docs/installation.rst
new file mode 100644
index 0000000..6d44115
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/installation.rst
@@ -0,0 +1,290 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Introduction
+============
+The purpose of this document is to explain how to build an ONAP SDNC Instance on vanilla Openstack deployment.
+The document begins with creation of a network, and a VM.
+Then, the document explains how to run the installation scripts on the VM.
+Finally, the document shows how to check that the SDNC installation was completed successfully.
+This document and logs were created on 22 November, 2018.
+
+Infrastructure setup on OpenStack
+---------------------------------
+Create the network, we call it “ONAP-net”:
+
+::
+
+ cloud@olc-ubuntu2:~$ neutron net-create onap-net
+ neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
+ Created a new network:
+ +-----------------+--------------------------------------+
+ | Field           | Value                                |
+ +-----------------+--------------------------------------+
+ | admin_state_up  | True                                 |
+ | id              | 662650f0-d178-4745-b4fe-dd2cb735160c |
+ | name            | onap-net                             |
+ | router:external | False                                |
+ | shared          | False                                |
+ | status          | ACTIVE                               |
+ | subnets         |                                      |
+ | tenant_id       | 324b90de6e9a4ad88e93a100c2cedd5d     |
+ +-----------------+--------------------------------------+
+ cloud@olc-ubuntu2:~$
+
+Create the subnet, “ONAP-subnet”:
+
+::
+
+ cloud@olc-ubuntu2:~$ neutron subnet-create --name onap-subnet onap-net 10.0.0.0/16
+ neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
+ Created a new subnet:
+ +-------------------+----------------------------------------------+
+ | Field             | Value                                        |
+ +-------------------+----------------------------------------------+
+ | allocation_pools  | {"start": "10.0.0.2", "end": "10.0.255.254"} |
+ | cidr              | 10.0.0.0/16                                  |
+ | dns_nameservers   |                                              |
+ | enable_dhcp       | True                                         |
+ | gateway_ip        | 10.0.0.1                                     |
+ | host_routes       |                                              |
+ | id                | 574df42f-15e9-4761-a4c5-e48d64f04b99         |
+ | ip_version        | 4                                            |
+ | ipv6_address_mode |                                              |
+ | ipv6_ra_mode      |                                              |
+ | name              | onap-subnet                                  |
+ | network_id        | 662650f0-d178-4745-b4fe-dd2cb735160c         |
+ | tenant_id         | 324b90de6e9a4ad88e93a100c2cedd5d             |
+ +-------------------+----------------------------------------------+
+ cloud@olc-ubuntu2:~$
+
+Boot an Ubuntu 14.04 instance, using the correct flavor name according to your Openstack :
+
+::
+
+ cloud@olc-ubuntu2:~$ nova boot --flavor n2.cw.standard-4 --image "Ubuntu 14.04" --key-name olc-
+ key2 --nic net-name=onap-net,v4-fixed-ip=10.0.7.1 vm1-sdnc
+ +--------------------------------------+-----------------------------------------------------+
+ | Property                             | Value                                               |
+ +--------------------------------------+-----------------------------------------------------+
+ | OS-DCF:diskConfig                    | MANUAL                                              |
+ | OS-EXT-AZ:availability_zone          |                                                     |
+ | OS-EXT-STS:power_state               | 0                                                   |
+ | OS-EXT-STS:task_state                | scheduling                                          |
+ | OS-EXT-STS:vm_state                  | building                                            |
+ | OS-SRV-USG:launched_at               | -                                                   |
+ | OS-SRV-USG:terminated_at             | -                                                   |
+ | accessIPv4                           |                                                     |
+ | accessIPv6                           |                                                     |
+ | config_drive                         |                                                     |
+ | created                              | 2017-11-14T15:48:37Z                                |
+ | flavor                               | n2.cw.standard-4 (44)                               |
+ | hostId                               |                                                     |
+ | id                                   | 596e2b1f-ff09-4c8e-b3e8-fc06566306cf                |
+ | image                                | Ubuntu 14.04 (ac9d6735-7c2b-4ff1-90e9-b45225fd80a9) |
+ | key_name                             | olc-key2                                            |
+ | metadata                             | {}                                                  |
+ | name                                 | vm1-sdnc                                            |
+ | os-extended-volumes:volumes_attached | []                                                  |
+ | progress                             | 0                                                   |
+ | security_groups                      | default                                             |
+ | status                               | BUILD                                               |
+ | tenant_id                            | 324b90de6e9a4ad88e93a100c2cedd5d                    |
+ | updated                              | 2017-11-14T15:48:38Z                                |
+ | user_id                              | 24c673ecc97f4b42887a195654d6a0b9                    |
+ +--------------------------------------+-----------------------------------------------------+
+ cloud@olc-ubuntu2:~$
+
+Create a floating IP and associate to the SDNC VM so that it can access internet to download needed files:
+
+::
+
+ cloud@olc-ubuntu2:~$ neutron floatingip-create public
+ neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
+ Created a new floatingip:
+ +---------------------+--------------------------------------+
+ | Field               | Value                                |
+ +---------------------+--------------------------------------+
+ | fixed_ip_address    |                                      |
+ | floating_ip_address | 84.39.47.153                         |
+ | floating_network_id | b5dd7532-1533-4b9c-8bf9-e66631a9be1d |
+ | id                  | eac0124f-9c92-47e5-a694-53355c06c6b2 |
+ | port_id             |                                      |
+ | router_id           |                                      |
+ | status              | ACTIVE                               |
+ | tenant_id           | 324b90de6e9a4ad88e93a100c2cedd5d     |
+ +---------------------+--------------------------------------+
+ cloud@olc-ubuntu2:~$
+ cloud@olc-ubuntu2:~$ neutron port-list
+ neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
+ +--------------------------------------+--------------------------------------+-------------------+-------------------------------------------------------------------------------------+
+ | id                                   | name                                 | mac_address       | fixed_ips                                                                           |
+ +--------------------------------------+--------------------------------------+-------------------+-------------------------------------------------------------------------------------+
+ | 5d8e8f30-a13a-417d-b5b4-f4038224364b | 5d8e8f30-a13a-417d-b5b4-f4038224364b | 02:5d:8e:8f:30:a1 | {"subnet_id": "574df42f-15e9-4761-a4c5-e48d64f04b99", "ip_address": "10.0.7.1"}     |
+ +--------------------------------------+--------------------------------------+-------------------+-------------------------------------------------------------------------------------+
+ cloud@olc-ubuntu2:~$
+ cloud@olc-ubuntu2:~$ neutron floatingip-associate eac0124f-9c92-47e5-a694-53355c06c6b25d8e8f30-a13a-417d-b5b4-f4038224364b
+ neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
+ Associated floating IP eac0124f-9c92-47e5-a694-53355c06c6b2
+ cloud@olc-ubuntu2:~$
+
+Add the security group to the VM in order to open needed ports for SDNC like port 22, 3000, 8282 etc ...:
+
+::
+
+ cloud@olc-ubuntu2:~$ nova add-secgroup vm1-sdnc olc-onap
+ cloud@olc-ubuntu2:~$
+
+Installing SDNC
+---------------
+
+Connect to the new VM and change to user "root", and run the following commands to start the installation:
+
+::
+
+ # Login as root
+ sudo -i
+ # Clone Casablanca branch for demo Repo
+ root@sdnc-test:~# git clone https://gerrit.onap.org/r/demo -b casablanca
+ Cloning into 'demo'...
+ remote: Counting objects: 10, done
+ remote: Finding sources: 100% (10/10)
+ remote: Total 9562 (delta 0), reused 9562 (delta 0)
+ Receiving objects: 100% (9562/9562), 43.00 MiB | 13.84 MiB/s, done.
+ Resolving deltas: 100% (5922/5922), done.
+ Checking connectivity... done.
+ root@sdnc-test:~#
+
+Use below commands to update installation environment
+
+::
+
+ # Create Configuration directory
+ mkdir -p /opt/config
+ # Update configuration folder with variables used during the installation
+ awk '$1 == "artifacts_version:" {print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/artifacts_version.txt
+ awk '$1 == "sdnc_repo:" {print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/remote_repo.txt
+ awk '$1 == "sdnc_branch:" {print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/gerrit_branch.txt
+ echo "no_proxy" > /opt/config/http_proxy.txt
+ echo "no_proxy" > /opt/config/https_proxy.txt
+ echo "https://nexus.onap.org" > /opt/config/nexus_artifact_repo.txt
+ echo "8.8.8.8" > /opt/config/external_dns.txt
+ awk '$1 == "dns_ip_addr:" {print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/dns_ip_addr.txt
+ awk '$1 == "nexus_username:" {print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/nexus_username.txt
+ awk '$1 == "nexus_password:" {print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/nexus_password.txt
+ awk '$1 == "nexus_docker_repo:" {print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/nexus_docker_repo.txt
+ awk '$1 == "sdnc_docker:" {gsub("\"","",$2);print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/docker_version.txt
+ awk '$1 == "dgbuilder_docker:" {gsub("\"","",$2);print $2}' /root/demo/heat/ONAP/onap_openstack.env > /opt/config/dgbuilder_version.txt
+ # Add host name to /etc/host to avoid warnings in openstack images
+ echo 127.0.0.1 $(hostname) >> /etc/hosts
+ # Install additional components
+ apt update
+ apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual apt-transport-https ca-certificates wget git ntp ntpdate make jq unzip
+ # Enable autorestart when VM reboots
+ chmod +x /root/demo/heat/ONAP/cloud-config/serv.sh
+ cp /root/demo/heat/ONAP/cloud-config/serv.sh /etc/init.d
+ update-rc.d serv.sh defaults
+
+Install docker engine
+
+::
+
+ echo "deb https://apt.dockerproject.org/repo ubuntu-$(lsb_release -cs) main" | tee /etc/apt/sources.list.d/docker.list
+ apt-get update
+ apt-get install -y --allow-unauthenticated docker-engine
+
+Install docker-compose & complete docker configuration
+
+::
+
+ root@sdnc-test:~# mkdir -p /opt/docker
+ root@sdnc-test:~# curl -L "https://github.com/docker/compose/releases/download/1.16.1/docker-compose-$(uname -s)-$(uname -m)" > /opt/docker/docker-compose
+  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
+                                  Dload  Upload   Total   Spent    Left  Speed
+	100 8648k  100 8648k    0     0  3925k      0  0:00:02  0:00:02 --:--:-- 10.3M
+ root@sdnc-test:~# chmod +x /opt/docker/docker-compose
+ # Set the MTU size of docker containers to the minimum MTU size supported by vNICs
+ root@sdnc-test:~# MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1)
+ root@sdnc-test:~# echo "DOCKER_OPTS=\"$DNS_FLAG--mtu=$MTU\"" >> /etc/default/docker
+ root@sdnc-test:~# cp /lib/systemd/system/docker.service /etc/systemd/system
+ root@sdnc-test:~# sed -i "/ExecStart/s/$/ --mtu=$MTU/g" /etc/systemd/system/docker.service
+ root@sdnc-test:~# systemctl daemon-reload
+ root@sdnc-test:~# service docker restart
+ # DNS IP address configuration
+ root@sdnc-test:~# echo "nameserver $(cat /opt/config/external_dns.txt)" >> /etc/resolvconf/resolv.conf.d/head
+ root@sdnc-test:~# resolvconf -u
+
+Copy & run installation scripts
+
+::
+
+ # Copy installation scripts to opt directory
+ root@sdnc-test:~# cp /root/demo/heat/ONAP/cloud-config/sdnc_install.sh /opt/sdnc_install.sh
+ root@sdnc-test:~# cp /root/demo/heat/ONAP/cloud-config/sdnc_vm_init.sh /opt/sdnc_vm_init.sh
+ # Run installation script
+ root@sdnc-test:~# cd /opt
+ root@sdnc-test:~# chmod +x sdnc_install.sh
+ root@sdnc-test:~# chmod +x sdnc_vm_init.sh
+ root@sdnc-test:~# ./sdnc_install.sh
+ Cloning into 'sdnc'...
+ remote: Finding sources: 100% (8962/8962)
+ remote: Total 8962 (delta 3999), reused 8956 (delta 3999)
+ Receiving objects: 100% (8962/8962), 702.76 MiB | 19.20 MiB/s, done.
+ Resolving deltas: 100% (3999/3999), done.
+ Checking connectivity... done.
+ Already up-to-date.
+ Login Succeeded
+ 1.4-STAGING-latest: Pulling from onap/sdnc-image
+ 18d680d61657: Pull complete
+ … output truncated …
+
+The following install logs shows the containers are coming up, meaning a successful deployment of the SDNC:
+
+::
+
+ ... truncated output ...
+ d3565df0a804: Pull complete
+ Digest: sha256:0ba03586c705ca8f79030586a579001c4fab3d6fa8c388b6c1c37c695645b78e
+ Status: Downloaded newer image for mysql/mysql-server:5.6
+ Creating sdnc_db_container ...
+ Creating sdnc_db_container ... done
+ Creating sdnc_ansible_container ...
+ Creating sdnc_ansible_container ... done
+ Creating sdnc_controller_container ...
+ Creating sdnc_controller_container ... done
+ Creating sdnc_ueblistener_container ...
+ Creating sdnc_portal_container ...
+ Creating sdnc_dgbuilder_container ...
+ Creating sdnc_dmaaplistener_container ...
+ Creating sdnc_ueblistener_container
+ Creating sdnc_portal_container
+ Creating sdnc_dmaaplistener_container
+ Creating sdnc_dgbuilder_container ... done
+
+Check that the containers are up and running:
+
+::
+
+ root@sdnc-test:/opt# docker container list
+ CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS                    PORTS                     NAMES
+ 9de71aea163a        onap/ccsdk-dgbuilder-image:latest       "/bin/bash -c 'cd ..."   11 minutes ago      Up 11 minutes             0.0.0.0:3000->3100/tcp    sdnc_dgbuilder_container
+ adffc0e70758        onap/sdnc-dmaap-listener-image:latest   "/opt/onap/sdnc/dm..."   11 minutes ago      Up 11 minutes                                       sdnc_dmaaplistener_container
+ 53bfa2e31c44        onap/admportal-sdnc-image:latest        "/bin/bash -c 'cd ..."   11 minutes ago      Up 11 minutes             0.0.0.0:8843->8843/tcp    sdnc_portal_container
+ 2fd18ceb09de        onap/sdnc-image:latest                  "/opt/onap/sdnc/bi..."   11 minutes ago      Up 11 minutes             0.0.0.0:8282->8181/tcp    sdnc_controller_container
+ 3ddb85174acb        onap/sdnc-ansible-server-image:latest   "/opt/onap/ccsdk/s..."   11 minutes ago      Up 11 minutes             0.0.0.0:32769->8000/tcp   sdnc_ansible_container
+ 4a11c393ffa3        mysql/mysql-server:5.6                  "/entrypoint.sh my..."   11 minutes ago      Up 11 minutes (healthy)   0.0.0.0:32768->3306/tcp   sdnc_db_container
+ root@sdnc-test:/opt#
+
+Login into APIDOC Explorer and check that you can see Swagger UI interface with all the APIs:
+
+::
+
+ APIDOC Explorer URL: http://{SDNC-IP}:8282/apidoc/explorer/index.html
+ Username: admin
+ Password: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+
+Login into DG Builder and check that you can see the GUI:
+
+::
+
+ DG Builder URL: http://dguser:test123@{SDNC-IP}:3000
diff --git a/sdnc-a1-controller/oam/docs/logging.rst b/sdnc-a1-controller/oam/docs/logging.rst
new file mode 100644
index 0000000..187eb03
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/logging.rst
@@ -0,0 +1,14 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+Logging
+=======
+CCSDK uses slf4j to log messages to the standard OpenDaylight karaf.log
+log file.
+
+Where to Access Information
+---------------------------
+Logs are found within the SDNC docker container, in the directory
+/opt/opendaylight/current/data/logs.
+
+
diff --git a/sdnc-a1-controller/oam/docs/offeredapis.rst b/sdnc-a1-controller/oam/docs/offeredapis.rst
new file mode 100644
index 0000000..c79cb97
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/offeredapis.rst
@@ -0,0 +1,10 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+
+
+Offered APIs
+============
+.. toctree::
+   :maxdepth: 1
+
+   apis/genericresource.rst
+   apis/vnfapi.rst
diff --git a/sdnc-a1-controller/oam/docs/release-notes.rst b/sdnc-a1-controller/oam/docs/release-notes.rst
new file mode 100644
index 0000000..5e56c6e
--- /dev/null
+++ b/sdnc-a1-controller/oam/docs/release-notes.rst
@@ -0,0 +1,266 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+
+Release Notes
+=============
+
+Version 1.5.4
+-------------
+:Release Date: 2019-06-13
+
+
+**New Features**
+
+The full list of Dublin epics and user stories for SDNC maybe be found at <https://jira.onap.org/issues/?filter=11803>.
+
+The following list summarizes some of the most significant epics:
+
++------------+----------------------------------------------------------------------------+
+| Jira #     | Abstract                                                                   |
++============+============================================================================+
+| [SDNC-551] | OpenDaylight Fluorine Support                                              |
++------------+----------------------------------------------------------------------------+
+| [SDNC-564] | 5G Use Case                                                                |
++------------+----------------------------------------------------------------------------+
+| [SDNC-565] | CCVPN Use Case Extension                                                   |
++------------+----------------------------------------------------------------------------+
+| [SDNC-570] | SDN-R: Server side component                                               |
++------------+----------------------------------------------------------------------------+
+| [SDNC-579] | SDN-R : UX-Client                                                          |
++------------+----------------------------------------------------------------------------+
+| [SDNC-631] | SDNC support for the PNF Use Case Network Assign for Plug and Play feature |
++------------+----------------------------------------------------------------------------+
+
+
+**Bug Fixes**
+The full list of bug fixes in the SDNC Dublin release may be found at <https://jira.onap.org/issues/?filter=11805>
+
+**Known Issues**
+The full list of known issues in SDNC may be found in the ONAP Jira at <https://jira.onap.org/issues/?filter=11119>
+
+One item of note is that the SDNC admin portal was determined to have a number of security vulnerabilities,
+under Known Security Issues.  As a temporary remediation, the admin portal is disabled in
+Dublin.  It will be re-enabled in El Alto once the security issues are addressed.
+
+**Security Notes**
+
+*Fixed Security Issues*
+
+- CVE-2019-12132 `OJSI-41 <https://jira.onap.org/browse/OJSI-41>`_ SDNC service allows for arbitrary code execution in sla/dgUpload form
+  Fixed temporarily by disabling admportal
+- CVE-2019-12123 `OJSI-42 <https://jira.onap.org/browse/OJSI-42>`_ SDNC service allows for arbitrary code execution in sla/printAsXml form
+  Fixed temporarily by disabling admportal
+- CVE-2019-12113 `OJSI-43 <https://jira.onap.org/browse/OJSI-43>`_ SDNC service allows for arbitrary code execution in sla/printAsGv form
+  Fixed temporarily by disabling admportal
+- `OJSI-91 <https://jira.onap.org/browse/OJSI-91>`_ SDNC exposes unprotected API for user creation
+  Fixed temporarily by disabling admportal
+- `OJSI-98 <https://jira.onap.org/browse/OJSI-98>`_ In default deployment SDNC (sdnc-portal) exposes HTTP port 30201 outside of cluster.
+  Fixed temporarily by disabling admportal
+- CVE-2019-12112 `OJSI-199 <https://jira.onap.org/browse/OJSI-199>`_ SDNC service allows for arbitrary code execution in sla/upload form
+  Fixed temporarily by disabling admportal
+
+*Known Security Issues*
+
+- `OJSI-34 <https://jira.onap.org/browse/OJSI-34>`_ Multiple SQL Injection issues in SDNC
+- `OJSI-99 <https://jira.onap.org/browse/OJSI-99>`_ In default deployment SDNC (sdnc) exposes HTTP port 30202 outside of cluster.
+- `OJSI-100 <https://jira.onap.org/browse/OJSI-100>`_ In default deployment SDNC (sdnc-dgbuilder) exposes HTTP port 30203 outside of cluster.
+- `OJSI-179 <https://jira.onap.org/browse/OJSI-179>`_ dev-sdnc-sdnc exposes JDWP on port 1830 which allows for arbitrary code execution
+- `OJSI-183 <https://jira.onap.org/browse/OJSI-183>`_ SDNC exposes ssh service on port 30208
+
+*Known Vulnerabilities in Used Modules*
+
+Quick Links:
+
+- `SDNC project page <https://wiki.onap.org/display/DW/Software+Defined+Network+Controller+Project>`_
+- `Passing Badge information for SDNC <https://bestpractices.coreinfrastructure.org/en/projects/1703>`_
+- `Project Vulnerability Review Table for Casablanca Release <https://wiki.onap.org/pages/viewpage.action?pageId=45307811>`_
+
+Version: 1.4.4
+--------------
+
+**Bugs Fixes**
+
+The following bugs are fixed in the SDNC Casablanca January 2019 maintenance release:
+
++------------+------------------------------------------------------------------------------------------+
+| Jira #     | Abstract                                                                                 |
++============+==========================================================================================+
+| [SDNC-405] | SDNC API documentation is missing on ReadTheDocs                                         |
++------------+------------------------------------------------------------------------------------------+
+| [SDNC-523] | vnf-information.vnf-id validation check should not be mandatory in validate-vnf-input DG |
++------------+------------------------------------------------------------------------------------------+
+| [SDNC-532] | oof query failed due to hostname change, returning unknown host                          |
++------------+------------------------------------------------------------------------------------------+
+| [SDNC-534] | wrong "input" field in DMaaP message template                                            |
++------------+------------------------------------------------------------------------------------------+
+| [SDNC-536] | Upgrade zjsonpatch version to remediate vulnerabilities                                  |
++------------+------------------------------------------------------------------------------------------+
+| [SDNC-537] | Update to spring-boot 2.1.0-RELEASE                                                      |
++------------+------------------------------------------------------------------------------------------+
+| [SDNC-540] | CCVPN closed loop testing failed.                                                        |
++------------+------------------------------------------------------------------------------------------+
+| [SDNC-542] | [PORT] Network Discovery microservice does not log                                       |
++------------+------------------------------------------------------------------------------------------+
+| [SDNC-546] | CCVPN bugs fix for manual free integration test                                          |
++------------+------------------------------------------------------------------------------------------+
+| [SDNC-549] | Retain MD-SAL data on pod recreate                                                       |
++------------+------------------------------------------------------------------------------------------+
+
+
+
+Version: 1.4.3
+--------------
+
+
+:Release Date: 2018-11-30
+
+**New Features**
+
+The Casablanca release of SDNC introduces the following new features:
+
+	- Network Discovery, in support of POMBA
+	- Support for CCVPN use case
+	- Change Management enhancements
+
+**Bug Fixes**
+
+The list of bugs fixed in the SDNC Casablanca release may be found in the ONAP Jira at <https://jira.onap.org/issues/?filter=11544>
+
+
+**Known Issues**
+
+The list of known issues in the SDNC project may be found in the ONAP Jira at <https://jira.onap.org/issues/?filter=11119>
+
+
+**Security Notes**
+
+SDNC code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The SDNC open Critical security vulnerabilities and their risk assessment have been documented as part of the `project <https://wiki.onap.org/pages/viewpage.action?pageId=45307811>`_.
+
+Quick Links:
+
+- `SDNC project page <https://wiki.onap.org/display/DW/Software+Defined+Network+Controller+Project>`_
+- `Passing Badge information for SDNC <https://bestpractices.coreinfrastructure.org/en/projects/1703>`_
+- `Project Vulnerability Review Table for Casablanca Release <https://wiki.onap.org/pages/viewpage.action?pageId=45307811>`_
+
+**Upgrade Notes**
+   NA
+
+**Deprecation Notes**
+   NA
+
+**Other**
+   NA
+
+Version: 1.3.4
+--------------
+
+
+:Release Date: 2018-07-06
+
+**New Features**
+
+The full list of SDNC Beijing Epics and user stories can be found in the ONAP Jira at <https://jira.onap.org/issues/?filter=10791>.  The
+following table lists the major features included in the Beijing release.
+
++------------+-------------------------------------------------------------------------------------------------------------+
+| Jira #     | Abstract                                                                                                    |
++============+=============================================================================================================+
+| [SDNC-278] | Change management in-place software upgrade execution using Ansible <https://jira.onap.org/browse/SDNC-278> |
++------------+-------------------------------------------------------------------------------------------------------------+
+| [SDNC-163] | Deploy a SDN-C high availability environment - Kubernetes <https://jira.onap.org/browse/SDNC-163>           |
++------------+-------------------------------------------------------------------------------------------------------------+
+
+
+**Bug Fixes**
+
+The list of bugs fixed in the SDNC Beijing release may be found in the ONAP Jira at <https://jira.onap.org/issues/?filter=11118>
+
+
+**Known Issues**
+
++------------+----------------------------------------------------------------------------------------------------------------------------------+
+| Jira #     | Abstract                                                                                                                         |
++============+==================================================================================================================================+
+| [SDNC-324] | IPV4_ADDRESS_POOL is empty <https://jira.onap.org/browse/SDNC-324>                                                               |
++------------+----------------------------------------------------------------------------------------------------------------------------------+
+| [SDNC-321] | dgbuilder won't save DG <https://jira.onap.org/browse/SDNC-321>                                                                  |
++------------+----------------------------------------------------------------------------------------------------------------------------------+
+| [SDNC-304] | SDNC OOM intermittent Healthcheck failure - JSONDecodeError - on different startup order <https://jira.onap.org/browse/SDNC-304> |
++------------+----------------------------------------------------------------------------------------------------------------------------------+
+| [SDNC-115] | VNFAPI DGs contain plugin references to software not part of ONAP <https://jira.onap.org/browse/SDNC-115>                        |
++------------+----------------------------------------------------------------------------------------------------------------------------------+
+| [SDNC-114] | Generic API DGs contain plugin references to software not part of ONAP <https://jira.onap.org/browse/SDNC-114>                   |
++------------+----------------------------------------------------------------------------------------------------------------------------------+
+| [SDNC-106] | VNFAPI DGs contain old openecomp and com.att based plugin references <https://jira.onap.org/browse/SDNC-106>                     |
++------------+----------------------------------------------------------------------------------------------------------------------------------+
+| [SDNC-64]  | SDNC is not setting FromApp identifier in logging MDC <https://jira.onap.org/browse/SDNC-64>                                     |
++------------+----------------------------------------------------------------------------------------------------------------------------------+
+
+
+**Security Notes**
+
+SDNC code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The SDNC open Critical security vulnerabilities and their risk assessment have been documented as part of the `project <https://wiki.onap.org/pages/viewpage.action?pageId=28379582>`_.
+
+Quick Links:
+
+- `SDNC project page <https://wiki.onap.org/display/DW/Software+Defined+Network+Controller+Project>`_
+- `Passing Badge information for SDNC <https://bestpractices.coreinfrastructure.org/en/projects/1703>`_
+- `Project Vulnerability Review Table for SDNC <https://wiki.onap.org/pages/viewpage.action?pageId=28379582>`_
+
+**Upgrade Notes**
+	NA
+
+**Deprecation Notes**
+	NA
+
+**Other**
+	NA
+
+Version: 1.2.1
+--------------
+
+:Release Date: 2018-01-18
+
+**Bug Fixes**
+
+- `SDNC-145 <https://jira.onap.org/browse/SDNC-145>`_ Error message refers to wrong parameters
+- `SDNC-195 <https://jira.onap.org/browse/SDNC-195>`_ UEB listener doesn't insert correct parameters for allotted resources in DB table ALLOTTED_RESOURCE_MODEL
+- `SDNC-198 <https://jira.onap.org/browse/SDNC-198>`_ CSIT job fails
+- `SDNC-201 <https://jira.onap.org/browse/SDNC-201>`_ Fix DG bugs from integration tests
+- `SDNC-202 <https://jira.onap.org/browse/SDNC-202>`_ Search for service -data null match, set vGW LAN IP via Heat
+- `SDNC-211 <https://jira.onap.org/browse/SDNC-211>`_ Update SDNC Amsterdam branch to use maintenance release versions
+- `SDNC-212 <https://jira.onap.org/browse/SDNC-212>`_ Duplicate file name
+
+Version: 1.2.0
+--------------
+
+:Release Date: 2017-11-16
+
+**New Features**
+
+The ONAP Amsterdam release introduces the following changes to SDNC from
+the original openECOMP seed code:
+   - Refactored / moved common platform code to new CCSDK project
+   - Refactored code to rename openecomp to onap
+   - Introduced new GENERIC-RESOURCE-API api, used by vCPE and VoLTE use cases
+   - Introduced new docker containers for SDC and DMAAP interfaces
+
+**Bug Fixes**
+	NA
+**Known Issues**
+The following known high priority issues are being worked and are expected to be delivered
+in release 1.2.1:
+- `SDNC-179 <https://jira.onap.org/browse/SDNC-179>`_ Failed to make HTTPS connection in restapicall node
+- `SDNC-181 <https://jira.onap.org/browse/SDNC-181>`_ Change call to brg-wan-ip-address vbrg-wan-ip brg topo activate DG
+- `SDNC-182 <https://jira.onap.org/browse/SDNC-182>`_ Fix VNI Consistency: Add vG vxlan tunnel setup and bridge domain setup to brg-topo-activate DG
+
+**Security Issues**
+	NA
+
+**Upgrade Notes**
+	NA
+
+**Deprecation Notes**
+	NA
+
+**Other**
+	NA
diff --git a/sdnc-a1-controller/oam/installation/TagVersion.groovy b/sdnc-a1-controller/oam/installation/TagVersion.groovy
new file mode 100644
index 0000000..9daac31
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/TagVersion.groovy
@@ -0,0 +1,41 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP SDNC
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ *
+ */
+
+package org.onap.sdnc.oam
+
+
+def versionArray;
+if ( project.properties['sdnc.project.version'] != null ) {
+	versionArray = project.properties['sdnc.project.version'].split('\\.');
+}
+
+if ( project.properties['sdnc.project.version'].endsWith("-SNAPSHOT") ) {
+	patchArray = versionArray[2].split('-');
+	project.properties['project.docker.latestminortag.version']=versionArray[0] + '.' + versionArray[1] + "-SNAPSHOT-latest";
+	project.properties['project.docker.latestfulltag.version']=versionArray[0] + '.' + versionArray[1] + '.' + patchArray[0] + "-SNAPSHOT-latest";
+	project.properties['project.docker.latesttagtimestamp.version']=versionArray[0] + '.' + versionArray[1] + '.' + patchArray[0] + "-SNAPSHOT-"+project.properties['sdnc.build.timestamp'];
+} else {
+	project.properties['project.docker.latestminortag.version']=versionArray[0] + '.' + versionArray[1] + "-STAGING-latest";
+	project.properties['project.docker.latestfulltag.version']=versionArray[0] + '.' + versionArray[1] + '.' + versionArray[2] + "-STAGING-latest";
+	project.properties['project.docker.latesttagtimestamp.version']=versionArray[0] + '.' + versionArray[1] + '.' + versionArray[2] + "-STAGING-"+project.properties['sdnc.build.timestamp'];
+}
diff --git a/sdnc-a1-controller/oam/installation/admportal/pom.xml b/sdnc-a1-controller/oam/installation/admportal/pom.xml
new file mode 100644
index 0000000..6dddd03
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/admportal/pom.xml
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>odlparent-lite</artifactId>
+        <version>1.4.3</version>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <packaging>pom</packaging>
+    <groupId>org.onap.sdnc.oam</groupId>
+    <artifactId>installation-admportal</artifactId>
+    <version>1.7.3-SNAPSHOT</version>
+
+    <name>sdnc-oam :: installation :: ${project.artifactId}</name>
+    <description>Creates admportal Docker container</description>
+
+    <properties>
+        <image.name>onap/admportal-sdnc-image</image.name>
+        <sdnc.project.version>${project.version}</sdnc.project.version>
+        <sdnc.build.timestamp>${maven.build.timestamp}</sdnc.build.timestamp>
+        <ccsdk.docker.version>0.6.3</ccsdk.docker.version>
+        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
+    </properties>
+
+
+    <build>
+        <plugins>
+
+            <plugin>
+                <groupId>org.codehaus.groovy.maven</groupId>
+                <artifactId>gmaven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>execute</goal>
+                        </goals>
+                        <configuration>
+                            <source>${basedir}/../TagVersion.groovy</source>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>io.fabric8</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+                <version>0.28.0</version>
+                <inherited>false</inherited>
+                <configuration>
+
+                    <images>
+                        <image>
+                            <name>${image.name}</name>
+                            <build>
+                                <cleanup>try</cleanup>
+                                <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
+                                <dockerFile>Dockerfile</dockerFile>
+                                <tags>
+                                    <tag>${project.docker.latestminortag.version}</tag>
+                                    <tag>${project.docker.latestfulltag.version}</tag>
+                                    <tag>${project.docker.latesttagtimestamp.version}</tag>
+                                </tags>
+                            </build>
+                        </image>
+                    </images>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>generate-images</id>
+                        <phase>process-sources</phase>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+
+                    <execution>
+                        <id>push-images</id>
+                        <phase>deploy</phase>
+                        <goals>
+                            <goal>build</goal>
+                            <goal>push</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <id>copy-dockerfile</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/docker</directory>
+                                    <includes>
+                                        <include>Dockerfile</include>
+                                    </includes>
+                                    <filtering>true</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>copy-properties</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/data/properties</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>../src/main/properties</directory>
+                                    <includes>
+                                        <include>*.properties</include>
+                                        <include>*.properties.sdnctldb01</include>
+                                    </includes>
+                                    <filtering>false</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>copy-keystores</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/data/stores</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>../src/main/stores</directory>
+                                    <includes>
+                                        <include>*.p12</include>
+                                    </includes>
+                                    <filtering>false</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>exec-maven-plugin</artifactId>
+                <groupId>org.codehaus.mojo</groupId>
+                <version>1.5.0</version>
+                <executions>
+                    <execution>
+                        <id>Unzip admportal</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <executable>/usr/bin/unzip</executable>
+                            <arguments>
+                                <argument>-d</argument>
+                                <argument>${basedir}/target/docker-stage/opt/onap/sdnc</argument>
+                                <argument>../../admportal/target/*.zip</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+
+                    <execution>
+                        <id>Copy admportal config</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <executable>/bin/cp</executable>
+                            <arguments>
+                                <argument>../../admportal/config/admportal.json</argument>
+                                <argument>${basedir}/target/docker-stage/opt/onap/sdnc/data/properties</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+
+                    <execution>
+                        <id>Copy admportal config1</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <executable>/bin/cp</executable>
+                            <arguments>
+                                <argument>../../admportal/config/admportal.log4js.json</argument>
+                                <argument>${basedir}/target/docker-stage/opt/onap/sdnc/data/properties</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+
+
+                    <execution>
+                        <id>change shell permissions</id>
+                        <phase>process-sources</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <executable>/usr/bin/find</executable>
+                            <arguments>
+                                <argument>${basedir}/target/docker-stage/opt/onap/sdnc</argument>
+                                <argument>-name</argument>
+                                <argument>*.sh</argument>
+                                <argument>-exec</argument>
+                                <argument>chmod</argument>
+                                <argument>+x</argument>
+                                <argument>{}</argument>
+                                <argument>;</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+
+        </plugins>
+
+    </build>
+    <organization>
+        <name>openECOMP</name>
+    </organization>
+</project>
diff --git a/sdnc-a1-controller/oam/installation/admportal/src/main/docker/Dockerfile b/sdnc-a1-controller/oam/installation/admportal/src/main/docker/Dockerfile
new file mode 100644
index 0000000..f5b51d1
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/admportal/src/main/docker/Dockerfile
@@ -0,0 +1,14 @@
+# Base ubuntu with added packages needed for open ecomp
+FROM onap/ccsdk-ubuntu-image:${ccsdk.docker.version}
+MAINTAINER SDN-C Team (sdnc@lists.openecomp.org)
+
+# create link for pm2
+#RUN ln -s /opt/openecomp/sdnc/admportal/node_modules/pm2/bin/pm2 /usr/bin/pm2
+
+# copy openecomp
+COPY opt /opt
+
+RUN cd /opt/onap/sdnc/admportal && npm install
+
+#ENTRYPOINT exec /opt/openecomp/sdnc/admportal/shell/startssl.sh
+EXPOSE 8843 8443
diff --git a/sdnc-a1-controller/oam/installation/ansible-server/pom.xml b/sdnc-a1-controller/oam/installation/ansible-server/pom.xml
new file mode 100644
index 0000000..3e2bd19
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/pom.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>odlparent-lite</artifactId>
+        <version>1.4.3</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <packaging>pom</packaging>
+    <groupId>org.onap.sdnc.oam</groupId>
+    <artifactId>installation-ansible-server</artifactId>
+    <version>1.7.3-SNAPSHOT</version>
+
+    <name>sdnc-oam :: installation :: ${project.artifactId}</name>
+    <description>Creates ansible-server Docker container</description>
+
+    <properties>
+        <image.name>onap/sdnc-ansible-server-image</image.name>
+        <sdnc.project.version>${project.version}</sdnc.project.version>
+        <sdnc.build.timestamp>${maven.build.timestamp}</sdnc.build.timestamp>
+        <ccsdk.docker.version>0.6.3</ccsdk.docker.version>
+        <docker.buildArg.https_proxy>${https_proxy}</docker.buildArg.https_proxy>
+        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
+    </properties>
+
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.groovy.maven</groupId>
+                <artifactId>gmaven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>execute</goal>
+                        </goals>
+                        <configuration>
+                            <source>${basedir}/../TagVersion.groovy</source>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <id>copy-files</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main</directory>
+                                    <includes>
+                                        <include>**/*</include>
+                                    </includes>
+                                    <filtering>false</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>docker</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>io.fabric8</groupId>
+                        <artifactId>docker-maven-plugin</artifactId>
+                        <version>0.28.0</version>
+                        <inherited>false</inherited>
+                        <configuration>
+                            <images>
+                                <image>
+                                    <name>${image.name}</name>
+                                    <build>
+                                        <cleanup>try</cleanup>
+                                        <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
+                                        <dockerFile>Dockerfile</dockerFile>
+                                        <tags>
+                                            <tag>${project.docker.latestminortag.version}</tag>
+                                            <tag>${project.docker.latestfulltag.version}</tag>
+                                            <tag>${project.docker.latesttagtimestamp.version}</tag>
+                                        </tags>
+                                    </build>
+                                </image>
+                            </images>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>generate-images</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>build</goal>
+                                </goals>
+                            </execution>
+
+                            <execution>
+                                <id>push-images</id>
+                                <phase>deploy</phase>
+                                <goals>
+                                    <goal>build</goal>
+                                    <goal>push</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+    <organization>
+        <name>ONAP</name>
+    </organization>
+</project>
diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/.dockerignore b/sdnc-a1-controller/oam/installation/ansible-server/src/main/.dockerignore
new file mode 100644
index 0000000..0d20b64
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/.dockerignore
@@ -0,0 +1 @@
+*.pyc
diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Dockerfile b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Dockerfile
new file mode 100644
index 0000000..726d606
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Dockerfile
@@ -0,0 +1,6 @@
+#FROM onap/ccsdk-ansible-server-image:${ccsdk.docker.version}
+FROM onap/ccsdk-ansible-server-image:0.4-STAGING-latest
+
+LABEL maintainer="SDN-C Team (sdnc@lists.openecomp.org)"
+
+COPY Playbooks /opt/ansible-server/Playbooks
diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/Ansible_inventory b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/Ansible_inventory
new file mode 100644
index 0000000..4fffb37
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/Ansible_inventory
@@ -0,0 +1,26 @@
+# /*-
+# * ============LICENSE_START=======================================================
+# * ONAP : APPC
+# * ================================================================================
+# * Copyright (C) 2017 AT&T Intellectual Property.  All rights reserved.
+# * ================================================================================
+# * Copyright (C) 2017 Amdocs
+# * =============================================================================
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *      http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *
+# * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+# * ============LICENSE_END=========================================================
+# */
+
+[host]
+localhost   ansible_connection=local
diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_postcheck@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_postcheck@0.00.yml
new file mode 100644
index 0000000..0711e40
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_postcheck@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 post-check operation

+    shell: ./swm/upgrade-post-check.sh {{pnfId}} {{oldSwVersion}} {{targetSwVersion}} {{ruleName}} /tmp/tmp-{{Id}}

+

+  - name: remove the temporary file

+    file:

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

+        state: absent

+    become: false

diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_postcheck@0.01.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_postcheck@0.01.yml
new file mode 100644
index 0000000..b9b1ab8
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_postcheck@0.01.yml
@@ -0,0 +1,41 @@
+---

+- hosts: all

+  tasks:

+  - name: create a temporary file for additional data

+    file: 

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

+      state: touch

+

+  - name: prepare additional data

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

+

+  - name: execute post-check operation

+    shell: ./swm/upgrade-post-check {{pnfId}} {{oldSwVersion}} {{targetSwVersion}} {{ruleName}} /tmp/tmp-{{Id}}

+    ignore_errors: yes

+    register: postcheck_result

+

+  - name: write output to file

+    local_action: copy content="{{postcheck_result.stdout}}" dest="{{inventory_dir}}/{{inventory_hostname}}_results.txt"

+    when: postcheck_result.stdout != ""

+

+  - name: remove the temporary file

+    file:

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

+      state: absent

+

+  - name: build error message

+    set_fact:

+      err_msg:

+        "reason": "{{postcheck_result.stderr}}"

+        "result": "Failure"

+    when: postcheck_result is failed and postcheck_result.stdout == "" and postcheck_result.stderr != ""

+

+  - name: write error message to file

+    local_action: copy content="{{err_msg}}" dest="{{inventory_dir}}/{{inventory_hostname}}_results.txt"

+    when: postcheck_result is failed and postcheck_result.stdout == "" and postcheck_result.stderr != ""

+

+  - name: use result of post-check as the result of Playbook

+    fail:

+      msg: "{{postcheck_result.stderr}}"

+    when: postcheck_result is failed

+

diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_precheck@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_precheck@0.00.yml
new file mode 100644
index 0000000..b6614b6
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_precheck@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 pre-check operation

+    shell: ./swm/upgrade-pre-check.sh {{pnfId}} {{oldSwVersion}} {{targetSwVersion}} {{ruleName}} /tmp/tmp-{{Id}}

+

+  - name: remove the temporary file

+    file:

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

+        state: absent

+    become: false

diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_precheck@0.01.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_precheck@0.01.yml
new file mode 100644
index 0000000..dcb6f6a
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_precheck@0.01.yml
@@ -0,0 +1,41 @@
+---

+- hosts: all

+  tasks:

+  - name: create a temporary file for additional data

+    file: 

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

+      state: touch

+

+  - name: prepare additional data

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

+

+  - name: execute pre-check operation

+    shell: ./swm/upgrade-pre-check {{pnfId}} {{oldSwVersion}} {{targetSwVersion}} {{ruleName}} /tmp/tmp-{{Id}}

+    ignore_errors: yes

+    register: precheck_result

+

+  - name: write output to file

+    local_action: copy content="{{precheck_result.stdout}}" dest="{{inventory_dir}}/{{inventory_hostname}}_results.txt"

+    when: precheck_result.stdout != ""

+

+  - name: remove the temporary file

+    file:

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

+      state: absent

+

+  - name: build error message

+    set_fact:

+      err_msg:

+        "reason": "{{precheck_result.stderr}}"

+        "result": "Failure"

+    when: precheck_result is failed and precheck_result.stdout == "" and precheck_result.stderr != ""

+

+  - name: write error message to file

+    local_action: copy content="{{err_msg}}" dest="{{inventory_dir}}/{{inventory_hostname}}_results.txt"

+    when: precheck_result is failed and precheck_result.stdout == "" and precheck_result.stderr != ""

+

+  - name: use result of pre-check as the result of Playbook

+    fail:

+      msg: "{{precheck_result.stderr}}"

+    when: precheck_result is failed

+

diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_rollback@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_rollback@0.00.yml
new file mode 100644
index 0000000..8d8982a
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_rollback@0.00.yml
@@ -0,0 +1,29 @@
+---

+- hosts: all

+  tasks:

+

+  - name: execute swFallback operation

+    shell: ./swm/swFallback --filter {{filter}}

+    ignore_errors: yes

+    register: fallback_result

+    

+  - name: write output to file

+    local_action: copy content="{{fallback_result.stdout}}" dest="{{inventory_dir}}/{{inventory_hostname}}_results.txt"

+    when: fallback_result.stdout != ""

+

+  - name: build error message

+    set_fact:

+      err_msg:

+        "reason": "{{fallback_result.stderr}}"

+        "result": "Failure"

+    when: fallback_result is failed and fallback_result.stdout == "" and fallback_result.stderr != ""

+

+  - name: write error message to file

+    local_action: copy content="{{err_msg}}" dest="{{inventory_dir}}/{{inventory_hostname}}_results.txt"

+    when: fallback_result is failed and fallback_result.stdout == "" and fallback_result.stderr != ""

+

+  - name: use result of swFallback as the result of Playbook

+    fail:

+      msg: "{{fallback_result.stderr}}"

+    when: fallback_result is failed

+

diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_upgrade@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_upgrade@0.00.yml
new file mode 100644
index 0000000..87e84ab
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_upgrade@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 upgrade software operation

+    shell: ./swm/upgrade-software.sh {{pnfId}} {{oldSwVersion}} {{targetSwVersion}} /tmp/tmp-{{Id}}

+

+  - name: remove the temporary file

+    file:

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

+        state: absent

+    become: false

diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_upgrade@0.01.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_upgrade@0.01.yml
new file mode 100644
index 0000000..c4b76b0
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_huawei_upgrade@0.01.yml
@@ -0,0 +1,190 @@
+---

+- hosts: all

+  tasks:

+

+  - name: compatible with parameter targetSwVersion

+    set_fact:

+      sw_to_be_downloaded: "{{targetSwVersion}}"

+    when: targetSwVersion is defined

+

+  - name: support new parameter swToBeDownloaded

+    set_fact:

+      sw_to_be_downloaded: "{{swToBeDownloaded}}"

+    when: swToBeDownloaded is defined

+

+  - name: compatible with parameter pnfId

+    set_fact:

+      ne_identifier: "{{pnfId}}"

+    when: pnfId is defined

+

+  - name: support new parameter neIdentifier

+    set_fact:

+      ne_identifier: "{{neIdentifier}}"

+    when: neIdentifier is defined

+

+  - name: support new parameter swToBeInstalled

+    set_fact:

+      sw_to_be_installed: "{{swToBeInstalled}}"

+    when: swToBeInstalled is defined

+

+  - name: check if swToBeInstalled is empty

+    fail:

+    when: swToBeInstalled is defined and sw_to_be_installed | length == 0

+

+  - name: support new parameter swVersionToBeActivated

+    set_fact:

+      sw_version_to_be_activated: "{{swVersionToBeActivated}}"

+    when: swVersionToBeActivated is defined

+

+  - name: execute downloadNESw operation

+    shell: ./swm/downloadNESw --swToBeDownloaded {{sw_to_be_downloaded}} --neIdentifier {{ne_identifier}}

+    ignore_errors: yes

+    register: download_result

+

+  - name: build error message for downloadNESw

+    set_fact:

+      download_err_msg:

+        "reason": "downloadNESw failure"

+        "result": "Failure"

+    when: download_result is failed

+

+  - name: write error message to file for downloadNESw

+    local_action: copy content="{{download_err_msg}}" dest="{{inventory_dir}}/{{inventory_hostname}}_results.txt"

+    when: download_result is failed

+

+  - name: use result of downloadNESw as the result of Playbook

+    fail:

+      msg: "{{download_err_msg}}"

+    when: download_result is failed

+

+  - name: parse response of downloadNESw

+    set_fact:

+      download_response: "{{ download_result.stdout | from_json }}"

+    when: swToBeInstalled is not defined

+

+  - name: fetch file of Notification notifyDownloadNESwStatusChanged

+    fetch:

+      dest: "{{inventory_dir}}"

+      src: "/tmp/notifyDownloadNESwStatusChanged-{{download_response.downloadProcessId}}"

+    when: swToBeInstalled is not defined

+

+  - name: read contents of Notification notifyDownloadNESwStatusChanged

+    set_fact:

+      download_notification: "{{ lookup('file', '{{inventory_dir}}/{{inventory_hostname}}/tmp/notifyDownloadNESwStatusChanged-{{download_response.downloadProcessId}}') | from_json }}"

+    when: swToBeInstalled is not defined

+

+  - name: delete file of Notification notifyDownloadNESwStatusChanged

+    local_action: file path="{{inventory_dir}}/{{inventory_hostname}}/tmp/notifyDownloadNESwStatusChanged-{{download_response.downloadProcessId}}" state=absent

+    when: swToBeInstalled is not defined

+

+  - name: set downloadedNESwInfo

+    set_fact:

+      downloaded_ne_sw_info: "{{ download_notification.downloadedNESwInfo }}"

+    when: swToBeInstalled is not defined

+

+  - name: execute installNESw operation

+    shell: ./swm/installNESw --swToBeInstalled {{item}} --neIdentifier {{ne_identifier}}

+    ignore_errors: yes

+    register: install_result

+    with_items: "{{ downloaded_ne_sw_info | default([]) }}"

+

+  - name: execute installNESw operation using new parameter

+    shell: ./swm/installNESw --swToBeInstalled {{item}} --neIdentifier {{ne_identifier}}

+    ignore_errors: yes

+    register: install_result_new

+    with_items: "{{ sw_to_be_installed | default([]) }}"

+

+  - name: unify install result

+    set_fact:

+      install_result: "{{ install_result_new }}"

+    when: swToBeInstalled is defined

+

+  - name: build error message for installNESw

+    set_fact:

+      install_err_msg:

+        "reason": "installNESw failure"

+        "result": "Failure"

+    when: install_result is failed

+

+  - name: write error message to file for installNESw

+    local_action: copy content="{{install_err_msg}}" dest="{{inventory_dir}}/{{inventory_hostname}}_results.txt"

+    when: install_result is failed

+

+  - name: use result of installNESw as the result of Playbook

+    fail:

+      msg: "{{install_err_msg}}"

+    when: install_result is failed

+

+  - name: set install results list

+    set_fact:

+      install_results_list: "{{ install_result.results }}"

+    when: swVersionToBeActivated is not defined

+

+  - name: parse responses of all the installNESws

+    set_fact:

+      install_responses: "{{ install_responses | default([]) + [item.stdout | from_json] }}"

+    with_items: "{{ install_results_list | default([]) }}"

+

+  - name: fetch files of all the Notifications notifyInstallNESwStatusChanged

+    fetch:

+      dest: "{{inventory_dir}}"

+      src: "/tmp/notifyInstallNESwStatusChanged-{{item.installProcessId}}"

+    with_items: "{{ install_responses | default([]) }}"

+

+  - name: read contents of all the Notifications notifyInstallNESwStatusChanged

+    set_fact:

+      install_notifications: "{{ install_notifications | default([]) + [lookup('file', '{{inventory_dir}}/{{inventory_hostname}}/tmp/notifyInstallNESwStatusChanged-{{item.installProcessId}}') | from_json] }}"

+    with_items: "{{ install_responses | default([]) }}"

+

+  - name: delete files of all the Notifications notifyInstallNESwStatusChanged

+    local_action: file path="{{inventory_dir}}/{{inventory_hostname}}/tmp/notifyInstallNESwStatusChanged-{{item.installProcessId}}" state=absent

+    with_items: "{{ install_responses | default([]) }}"

+

+  - name: parse all the installed NE SW info

+    set_fact:

+      installed_ne_sw_info: "{{ installed_ne_sw_info | default([]) + item.installedNESwInfo }}"

+    with_items: "{{ install_notifications | default([]) }}"

+

+  - name: execute activateNESw operation

+    shell: ./swm/activateNESw --swVersionToBeActivated {{item}} --neIdentifier {{ne_identifier}}

+    ignore_errors: yes

+    register: activate_result

+    with_items: "{{ installed_ne_sw_info | default([]) }}"

+

+  - name: execute activateNESw operation using new parameter

+    shell: ./swm/activateNESw --swVersionToBeActivated {{sw_version_to_be_activated}} --neIdentifier {{ne_identifier}}

+    ignore_errors: yes

+    register: activate_result_new

+    when: swVersionToBeActivated is defined

+

+  - name: unify activate result

+    set_fact:

+      activate_result: "{{ activate_result_new }}"

+    when: swVersionToBeActivated is defined

+

+  - name: build error message for activateNESw

+    set_fact:

+      activate_err_msg:

+        "reason": "activateNESw failure"

+        "result": "Failure"

+    when: activate_result is failed

+

+  - name: write error message to file for activateNESw

+    local_action: copy content="{{activate_err_msg}}" dest="{{inventory_dir}}/{{inventory_hostname}}_results.txt"

+    when: activate_result is failed

+

+  - name: use result of activateNESw as the result of Playbook

+    fail:

+      msg: "{{activate_err_msg}}"

+    when: activate_result is failed

+

+  - name: build success message for activateNESw

+    set_fact:

+      activate_success_msg:

+        "result": "Success"

+    when: activate_result is not failed

+

+  - name: write success message to file for activateNESw

+    local_action: copy content="{{activate_success_msg}}" dest="{{inventory_dir}}/{{inventory_hostname}}_results.txt"

+    when: activate_result is not failed

+

diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_postcheck@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_postcheck@0.00.yml
new file mode 100644
index 0000000..199bc50
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_postcheck@0.00.yml
@@ -0,0 +1,6 @@
+---

+- hosts: all

+  tasks:

+  - name: check the vpp version

+    shell: vppctl show version | grep v17.07.01-release

+    become: true

diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_postcheck_jq@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_postcheck_jq@0.00.yml
new file mode 100755
index 0000000..18d20ed
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_postcheck_jq@0.00.yml
@@ -0,0 +1,10 @@
+---
+- hosts: all
+  tasks:
+  - name: check jq is not installed
+    stat:
+      path: /usr/bin/jq
+    register: abc
+  - fail:
+      msg: "jq is not installed"
+    when: abc.stat.exists == false
diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_precheck@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_precheck@0.00.yml
new file mode 100644
index 0000000..e596aa2
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_precheck@0.00.yml
@@ -0,0 +1,6 @@
+---

+- hosts: all

+  tasks:

+  - name: check the vpp version

+    shell: vppctl show version | grep v17.04.2-release

+    become: true

diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_precheck_jq@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_precheck_jq@0.00.yml
new file mode 100755
index 0000000..0047080
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_precheck_jq@0.00.yml
@@ -0,0 +1,10 @@
+---
+- hosts: all
+  tasks:
+  - name: check jq is not installed
+    stat:
+      path: /usr/bin/jq
+    register: abc
+  - fail:
+      msg: "jq is already installed"
+    when: abc.stat.exists == true
diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_pyver@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_pyver@0.00.yml
new file mode 100644
index 0000000..ad90e54
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_pyver@0.00.yml
@@ -0,0 +1,6 @@
+---

+- hosts: all

+  tasks:

+  - name: check the python version

+    shell: python --version  2>&1 | grep 2.7.12

+    become: true

diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_quiescetraffic@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_quiescetraffic@0.00.yml
new file mode 100755
index 0000000..000bc48
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_quiescetraffic@0.00.yml
@@ -0,0 +1,6 @@
+---
+- hosts: all
+  tasks:
+  - name: Set vG to vG-MUX interface down
+    shell: vppctl set int state GigabitEthernet0/4/0 down 
+    become: true
diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_resumetraffic@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_resumetraffic@0.00.yml
new file mode 100755
index 0000000..32ebfc9
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_resumetraffic@0.00.yml
@@ -0,0 +1,6 @@
+---
+- hosts: all
+  tasks:
+  - name: Set vG to vG-MUX interface up
+    shell: vppctl set int state GigabitEthernet0/4/0 up 
+    become: true
diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_sleep@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_sleep@0.00.yml
new file mode 100644
index 0000000..345f5e4
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_sleep@0.00.yml
@@ -0,0 +1,41 @@
+# /*-
+# * ============LICENSE_START=======================================================
+# * ONAP : APPC
+# * ================================================================================
+# * Copyright (C) 2017 AT&T Intellectual Property.  All rights reserved.
+# * ================================================================================
+# * Copyright (C) 2017 Amdocs
+# * =============================================================================
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *      http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *
+# * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+# * ============LICENSE_END=========================================================
+# */
+
+- hosts: all
+
+  # Mandatory:
+  vars:
+      sleep_time: "{{Sleep|default(10)}}"
+
+  tasks:
+
+    - debug:
+        msg: "Sleep time: {{ sleep_time }}"
+
+    - name: sleep
+      shell: sleep {{ sleep_time }}
+
+
+    - debug:
+        msg: "Done"
diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_upgradesw@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_upgradesw@0.00.yml
new file mode 100644
index 0000000..886705d
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_upgradesw@0.00.yml
@@ -0,0 +1,17 @@
+---

+- hosts: all

+  tasks:

+  - name: add fd.io repository

+    lineinfile:

+      path: /etc/apt/sources.list.d/99fd.io.list

+      state: present

+      create: yes

+      regexp: 'fd.io.stable.1707'

+      line: 'deb [trusted=yes] https://nexus.fd.io/content/repositories/fd.io.stable.1707.ubuntu.xenial.main/ ./'

+    become: true

+  - name: upgrade vpp software

+    apt:

+      name: vpp

+      state: latest

+      update_cache: yes

+    become: true

diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_upgradesw_insjq@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_upgradesw_insjq@0.00.yml
new file mode 100755
index 0000000..ec1d2de
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_upgradesw_insjq@0.00.yml
@@ -0,0 +1,9 @@
+---
+- hosts: all
+  tasks:
+  - name: install jq package
+    apt:
+      name: jq
+      state: latest
+      update_cache: yes
+    become: true
diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_upgradesw_remjq@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_upgradesw_remjq@0.00.yml
new file mode 100755
index 0000000..c5be633
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_upgradesw_remjq@0.00.yml
@@ -0,0 +1,9 @@
+---
+- hosts: all
+  tasks:
+  - name: remove jq package
+    apt:
+      name: jq
+      state: absent
+      update_cache: yes
+    become: true
diff --git a/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_vfw_distributetraffic@0.00.yml b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_vfw_distributetraffic@0.00.yml
new file mode 100644
index 0000000..aeffe62
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ansible-server/src/main/Playbooks/ansible_vfw_distributetraffic@0.00.yml
@@ -0,0 +1,110 @@
+---
+- hosts: all
+  gather_facts: no
+  tasks:
+    - include_vars: "{{ ConfigFileName }}"
+    - debug: var=fwIp
+      failed_when: fwIp is not defined
+    - debug: var=sinkIp
+      failed_when: sinkIp is not defined
+    - name: Read PKG IP
+      shell: cat /opt/config/vpg_private_ip_0.txt
+      register: pkgIp
+      become: true
+    - name: Read OLD FW IP
+      shell: cat /opt/config/fw_ipaddr.txt
+      register: oldFwIp
+      become: true
+    - name: Read OLD SINK IP
+      shell: cat /opt/config/sink_ipaddr.txt
+      register: oldSinkIp
+      become: true
+    - name: Read protected net CIDR
+      shell: cat /opt/config/protected_net_cidr.txt
+      register: protectedCidr
+      become: true
+    - debug: var=pkgIp.stdout
+    - debug: var=oldFwIp.stdout
+    - debug: var=oldSinkIp.stdout
+    - debug: var=protectedCidr.stdout
+    - debug: 
+        msg: "FW IP has not been changed"
+      when: oldFwIp.stdout == fwIp
+    - block:
+        - name: Remove OLD FW IP route
+          shell: vppctl ip route del {{ protectedCidr.stdout }} via {{ oldFwIp.stdout }}
+        - name: Add NEW FW IP route
+          shell: vppctl ip route add {{ protectedCidr.stdout }} via {{ fwIp }}
+        - name: Save NEW FW IP address
+          shell: echo {{ fwIp }} > /opt/config/fw_ipaddr.txt
+        - debug: 
+            msg: "FW IP has been changed"
+      become: true
+      when: oldFwIp.stdout != fwIp
+    - debug: 
+        msg: "SINK IP has not been changed"
+      when: oldSinkIp.stdout == sinkIp
+    - block:
+        - block:
+          - name: Modify packet stream files
+            debug:
+              msg: "Modify packet stream files"
+          - shell: "sed -i -e '0,/UDP/ s/UDP:.*/UDP: {{ pkgIp.stdout }} -> {{ sinkIp }}/' /opt/pg_streams/stream_fw_udp1"
+          - shell: "sed -i -e '0,/UDP/ s/UDP:.*/UDP: {{ pkgIp.stdout }} -> {{ sinkIp }}/' /opt/pg_streams/stream_fw_udp2"
+          - shell: "sed -i -e '0,/UDP/ s/UDP:.*/UDP: {{ pkgIp.stdout }} -> {{ sinkIp }}/' /opt/pg_streams/stream_fw_udp3"
+          - shell: "sed -i -e '0,/UDP/ s/UDP:.*/UDP: {{ pkgIp.stdout }} -> {{ sinkIp }}/' /opt/pg_streams/stream_fw_udp4"
+          - shell: "sed -i -e '0,/UDP/ s/UDP:.*/UDP: {{ pkgIp.stdout }} -> {{ sinkIp }}/' /opt/pg_streams/stream_fw_udp5"
+          - shell: "sed -i -e '0,/UDP/ s/UDP:.*/UDP: {{ pkgIp.stdout }} -> {{ sinkIp }}/' /opt/pg_streams/stream_fw_udp6"
+          - shell: "sed -i -e '0,/UDP/ s/UDP:.*/UDP: {{ pkgIp.stdout }} -> {{ sinkIp }}/' /opt/pg_streams/stream_fw_udp7"
+          - shell: "sed -i -e '0,/UDP/ s/UDP:.*/UDP: {{ pkgIp.stdout }} -> {{ sinkIp }}/' /opt/pg_streams/stream_fw_udp8"
+          - shell: "sed -i -e '0,/UDP/ s/UDP:.*/UDP: {{ pkgIp.stdout }} -> {{ sinkIp }}/' /opt/pg_streams/stream_fw_udp9"
+          - shell: "sed -i -e '0,/UDP/ s/UDP:.*/UDP: {{ pkgIp.stdout }} -> {{ sinkIp }}/' /opt/pg_streams/stream_fw_udp10"
+        - block:
+          - name: Delete old streams
+            debug:
+              msg: "Delete old streams"
+          - shell: vppctl packet-generator delete fw_udp1
+          - shell: vppctl packet-generator delete fw_udp2
+          - shell: vppctl packet-generator delete fw_udp3
+          - shell: vppctl packet-generator delete fw_udp4
+          - shell: vppctl packet-generator delete fw_udp5
+          - shell: vppctl packet-generator delete fw_udp6
+          - shell: vppctl packet-generator delete fw_udp7
+          - shell: vppctl packet-generator delete fw_udp8
+          - shell: vppctl packet-generator delete fw_udp9
+          - shell: vppctl packet-generator delete fw_udp10
+        - block:
+          - name: Install new streams
+            debug:
+              msg: "Install new streams"
+          - shell: vppctl exec /opt/pg_streams/stream_fw_udp1
+          - shell: vppctl exec /opt/pg_streams/stream_fw_udp2
+          - shell: vppctl exec /opt/pg_streams/stream_fw_udp3
+          - shell: vppctl exec /opt/pg_streams/stream_fw_udp4
+          - shell: vppctl exec /opt/pg_streams/stream_fw_udp5
+          - shell: vppctl exec /opt/pg_streams/stream_fw_udp6
+          - shell: vppctl exec /opt/pg_streams/stream_fw_udp7
+          - shell: vppctl exec /opt/pg_streams/stream_fw_udp8
+          - shell: vppctl exec /opt/pg_streams/stream_fw_udp9
+          - shell: vppctl exec /opt/pg_streams/stream_fw_udp10
+        - block:
+          - name: Enable new streams
+            debug:
+              msg: "Enable new streams"
+          - shell: vppctl packet-generator enable fw_udp1
+          - shell: vppctl packet-generator enable fw_udp2
+          - shell: vppctl packet-generator enable fw_udp3
+          - shell: vppctl packet-generator enable fw_udp4
+          - shell: vppctl packet-generator enable fw_udp5
+          - shell: vppctl packet-generator enable fw_udp6
+          - shell: vppctl packet-generator enable fw_udp7
+          - shell: vppctl packet-generator enable fw_udp8
+          - shell: vppctl packet-generator enable fw_udp9
+          - shell: vppctl packet-generator enable fw_udp10
+        - name: Save NEW SINK IP address
+          shell: echo {{ sinkIp }} > /opt/config/sink_ipaddr.txt
+        - debug: 
+            msg: "SINK IP has been changed"
+      become: true
+      when: oldSinkIp.stdout != sinkIp
+
diff --git a/sdnc-a1-controller/oam/installation/dmaap-listener/pom.xml b/sdnc-a1-controller/oam/installation/dmaap-listener/pom.xml
new file mode 100644
index 0000000..16b7bd1
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/dmaap-listener/pom.xml
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>odlparent-lite</artifactId>
+        <version>1.4.3</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <packaging>pom</packaging>
+    <groupId>org.onap.sdnc.oam</groupId>
+    <artifactId>installation-dmaap-listener</artifactId>
+    <version>1.7.3-SNAPSHOT</version>
+
+    <name>sdnc-oam :: installation :: ${project.artifactId}</name>
+    <description>Creates dmaap-listener Docker container</description>
+
+    <properties>
+        <image.name>onap/sdnc-dmaap-listener-image</image.name>
+        <sdnc.project.version>${project.version}</sdnc.project.version>
+        <sdnc.build.timestamp>${maven.build.timestamp}</sdnc.build.timestamp>
+        <ccsdk.docker.version>0.6.3</ccsdk.docker.version>
+        <docker.buildArg.https_proxy>${https_proxy}</docker.buildArg.https_proxy>
+        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
+    </properties>
+
+
+    <build>
+        <plugins>
+
+
+            <plugin>
+                <groupId>org.codehaus.groovy.maven</groupId>
+                <artifactId>gmaven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>execute</goal>
+                        </goals>
+                        <configuration>
+                            <source>${basedir}/../TagVersion.groovy</source>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+
+
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <id>copy-dockerfile</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/docker</directory>
+                                    <includes>
+                                        <include>Dockerfile</include>
+                                    </includes>
+                                    <filtering>true</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+
+                    <execution>
+                        <id>copy-scripts</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/dmaap-listener/bin</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/scripts</directory>
+                                    <includes>
+                                        <include>*.sh</include>
+                                    </includes>
+                                    <filtering>false</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+
+                    <execution>
+                        <id>copy-properties</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/data/properties</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/properties</directory>
+                                    <includes>
+                                        <include>*</include>
+                                    </includes>
+                                    <filtering>false</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>unpack</id>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <phase>initialize</phase>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.onap.ccsdk.sli.northbound</groupId>
+                                    <artifactId>dmaap-listener</artifactId>
+                                    <type>zip</type>
+                                    <version>${ccsdk.sli.northbound.version}</version>
+                                </artifactItem>
+                            </artifactItems>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/dmaap-listener</outputDirectory>
+                            <excludes>bin/**,**/*-javadoc.jar,**/*-sources.jar</excludes>
+                            <overWriteReleases>true</overWriteReleases>
+                            <overWriteSnapshots>true</overWriteSnapshots>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <artifactId>exec-maven-plugin</artifactId>
+                <groupId>org.codehaus.mojo</groupId>
+                <version>1.5.0</version>
+                <executions>
+
+
+
+                    <execution>
+                        <id>change shell permissions</id>
+                        <phase>process-sources</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <executable>/usr/bin/find</executable>
+                            <arguments>
+                                <argument>${basedir}/target/docker-stage/opt/onap/sdnc</argument>
+                                <argument>-name</argument>
+                                <argument>*.sh</argument>
+                                <argument>-exec</argument>
+                                <argument>chmod</argument>
+                                <argument>+x</argument>
+                                <argument>{}</argument>
+                                <argument>;</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+
+    </build>
+
+    <profiles>
+        <profile>
+            <id>docker</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>io.fabric8</groupId>
+                        <artifactId>docker-maven-plugin</artifactId>
+                        <version>0.28.0</version>
+                        <inherited>false</inherited>
+                        <configuration>
+                            <images>
+                                <image>
+                                    <name>${image.name}</name>
+                                    <build>
+                                        <cleanup>try</cleanup>
+                                        <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
+                                        <dockerFile>Dockerfile</dockerFile>
+                                        <tags>
+                                            <tag>${project.docker.latestminortag.version}</tag>
+                                            <tag>${project.docker.latestfulltag.version}</tag>
+                                            <tag>${project.docker.latesttagtimestamp.version}</tag>
+                                        </tags>
+                                    </build>
+                                </image>
+                            </images>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>generate-images</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>build</goal>
+                                </goals>
+                            </execution>
+
+                            <execution>
+                                <id>push-images</id>
+                                <phase>deploy</phase>
+                                <goals>
+                                    <goal>build</goal>
+                                    <goal>push</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+    <organization>
+        <name>ONAP</name>
+    </organization>
+</project>
diff --git a/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/docker/Dockerfile b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/docker/Dockerfile
new file mode 100644
index 0000000..71f2eca
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/docker/Dockerfile
@@ -0,0 +1,24 @@
+# Base ubuntu with added packages needed for open ecomp
+FROM alpine:3.8
+
+MAINTAINER SDNC Team (onap-sdnc@lists.onap.org)
+
+ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
+ENV SDNC_CONFIG_DIR /opt/onap/sdnc/data/properties
+    
+RUN apk update && apk add \
+    bash \
+    git \
+    openjdk8 \
+    maven \
+    mysql-client \
+    nodejs \
+    py-pip \
+    graphviz \
+    unzip \
+    rsync
+
+# copy deliverables to opt
+COPY opt /opt
+
+
diff --git a/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/aai.properties b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/aai.properties
new file mode 100755
index 0000000..186efa9
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/aai.properties
@@ -0,0 +1,36 @@
+TransportType=HTTPAUTH
+Latitude =50.000000
+Longitude =-100.000000
+Version =1.0
+ServiceName =dmaap-v1.dev.dmaap.dt.saat.acsi.openecomp.org/events
+Environment =TEST
+Partner = BOT_R
+routeOffer=MR1
+SubContextPath =/
+Protocol =http
+MethodType =GET
+username =admin
+password =admin
+contenttype =application/json
+authKey=fxoW4jZrO7mdLWWa:f4KxkoBtToyoEG7suMoV8KhnkwM=
+authDate=2016-02-18T13:57:37-0800
+host=ueb.api.simpledemo.onap.org:3904
+topic=AAI-EVENT
+group=jmsgrp
+id=sdnc2
+timeout=15000
+limit=1000
+filter=
+AFT_DME2_EXCHANGE_REQUEST_HANDLERS=com.att.nsa.test.PreferredRouteRequestHandler
+AFT_DME2_EXCHANGE_REPLY_HANDLERS=com.att.nsa.test.PreferredRouteReplyHandler
+AFT_DME2_REQ_TRACE_ON=true
+AFT_ENVIRONMENT=AFTUAT
+AFT_DME2_EP_CONN_TIMEOUT=15000
+AFT_DME2_ROUNDTRIP_TIMEOUT_MS=240000
+AFT_DME2_EP_READ_TIMEOUT_MS=50000
+sessionstickinessrequired=NO
+DME2preferredRouterFilePath=/opt/onap/sdnc/data/properties/dmaap-listener.preferredRoute.txt
+sdnc.odl.user=admin
+sdnc.odl.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+sdnc.odl.url-base=http://sdnhost:8181/restconf/operations
+
diff --git a/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dblib.properties b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dblib.properties
new file mode 100644
index 0000000..9506ac8
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dblib.properties
@@ -0,0 +1,38 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 						reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+# dblib.properrties
+org.onap.ccsdk.sli.dbtype=jdbc
+
+org.onap.ccsdk.sli.jdbc.hosts=sdnctldb01
+org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://dbhost:3306/sdnctl
+org.onap.ccsdk.sli.jdbc.driver=org.mariadb.jdbc.Driver
+org.onap.ccsdk.sli.jdbc.database=sdnctl
+org.onap.ccsdk.sli.jdbc.user=sdnctl
+org.onap.ccsdk.sli.jdbc.password=gamma
+org.onap.ccsdk.sli.jdbc.connection.name=sdnctldb01
+org.onap.ccsdk.sli.jdbc.connection.timeout=50
+org.onap.ccsdk.sli.jdbc.request.timeout=100
+org.onap.ccsdk.sli.jdbc.limit.init=10
+org.onap.ccsdk.sli.jdbc.limit.min=10
+org.onap.ccsdk.sli.jdbc.limit.max=20
+org.onap.dblib.connection.recovery=false
+
diff --git a/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dhcpalert.properties b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dhcpalert.properties
new file mode 100755
index 0000000..ae9804f
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dhcpalert.properties
@@ -0,0 +1,36 @@
+TransportType=HTTPAUTH
+Latitude =50.000000
+Longitude =-100.000000
+Version =1.0
+ServiceName =dmaap-v1.dev.dmaap.dt.saat.acsi.openecomp.org/events
+Environment =TEST
+Partner = BOT_R
+routeOffer=MR1
+SubContextPath =/
+Protocol =http
+MethodType =GET
+username =admin
+password =admin
+contenttype =application/json
+authKey=fxoW4jZrO7mdLWWa:f4KxkoBtToyoEG7suMoV8KhnkwM=
+authDate=2016-02-18T13:57:37-0800
+host=ueb.api.simpledemo.onap.org:3904
+topic=VCPE-DHCP-EVENT
+group=jmsgrp
+id=sdnc1
+timeout=15000
+limit=1000
+filter=
+AFT_DME2_EXCHANGE_REQUEST_HANDLERS=com.att.nsa.test.PreferredRouteRequestHandler
+AFT_DME2_EXCHANGE_REPLY_HANDLERS=com.att.nsa.test.PreferredRouteReplyHandler
+AFT_DME2_REQ_TRACE_ON=true
+AFT_ENVIRONMENT=AFTUAT
+AFT_DME2_EP_CONN_TIMEOUT=15000
+AFT_DME2_ROUNDTRIP_TIMEOUT_MS=240000
+AFT_DME2_EP_READ_TIMEOUT_MS=50000
+sessionstickinessrequired=NO
+DME2preferredRouterFilePath=/opt/onap/sdnc/data/properties/dmaap-listener.preferredRoute.txt
+sdnc.odl.user=admin
+sdnc.odl.password=admin
+sdnc.odl.url-base=https://sdncodl.st.us.aic.cip.att.com:8443/restconf/operations
+
diff --git a/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dmaap-consumer-oofpcipoc.properties b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dmaap-consumer-oofpcipoc.properties
new file mode 100644
index 0000000..f933ede
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dmaap-consumer-oofpcipoc.properties
@@ -0,0 +1,35 @@
+TransportType=HTTPNOAUTH
+Latitude =50.000000
+Longitude =-100.000000
+Version =1.0
+ServiceName =message-router.onap:3904/events
+Environment =TEST
+Partner =
+routeOffer=MR1
+SubContextPath =/
+Protocol =http
+MethodType =GET
+username =admin
+password =admin
+contenttype =application/json
+authKey=fs20cKwalJ6ry4kX:7Hqm6BDZK47IKxGRkOPFk33qMYs=
+authDate=2019-04-09T04:28:40-05:00
+host=message-router.onap:3904
+topic=SDNR-CL
+group=users
+id=sdnc1
+timeout=15000
+limit=1000
+filter=
+AFT_DME2_EXCHANGE_REQUEST_HANDLERS=com.att.nsa.test.PreferredRouteRequestHandler
+AFT_DME2_EXCHANGE_REPLY_HANDLERS=com.att.nsa.test.PreferredRouteReplyHandler
+AFT_DME2_REQ_TRACE_ON=true
+AFT_ENVIRONMENT=AFTUAT
+AFT_DME2_EP_CONN_TIMEOUT=15000
+AFT_DME2_ROUNDTRIP_TIMEOUT_MS=240000
+AFT_DME2_EP_READ_TIMEOUT_MS=50000
+sessionstickinessrequired=NO
+DME2preferredRouterFilePath=/opt/onap/sdnc/data/properties/dmaap-listener.preferredRoute.txt
+sdnc.odl.user=admin
+sdnc.odl.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+sdnc.odl.url-base=http://sdnc.onap:8282/restconf/operations
diff --git a/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dmaap-listener.preferredRoute.txt b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dmaap-listener.preferredRoute.txt
new file mode 100755
index 0000000..1400ee2
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dmaap-listener.preferredRoute.txt
@@ -0,0 +1 @@
+preferredRouteKey=MR1
diff --git a/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dmaap-listener.properties b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dmaap-listener.properties
new file mode 100755
index 0000000..dd1b232
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/dmaap-listener.properties
@@ -0,0 +1 @@
+subscriptions=org.onap.ccsdk.sli.northbound.dmaapclient.SdncDhcpEventConsumer:dhcpalert.properties;org.onap.ccsdk.sli.northbound.dmaapclient.SdncLcmDmaapConsumer:lcm.properties;org.onap.ccsdk.sli.northbound.dmaapclient.SdncAaiDmaapConsumer:aai.properties;org.onap.ccsdk.sli.northbound.dmaapclient.OofPciPocDmaapConsumers:dmaap-consumer-oofpcipoc.properties
diff --git a/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/lcm.properties b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/lcm.properties
new file mode 100755
index 0000000..22dbebe
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/lcm.properties
@@ -0,0 +1,36 @@
+TransportType=HTTPAUTH
+Latitude =50.000000
+Longitude =-100.000000
+Version =1.0
+ServiceName =dmaap-v1.dev.dmaap.dt.saat.acsi.openecomp.org/events
+Environment =TEST
+Partner = BOT_R
+routeOffer=MR1
+SubContextPath =/
+Protocol =http
+MethodType =GET
+username =admin
+password =admin
+contenttype =application/json
+authKey=fxoW4jZrO7mdLWWa:f4KxkoBtToyoEG7suMoV8KhnkwM=
+authDate=2016-02-18T13:57:37-0800
+host=ueb.api.simpledemo.onap.org:3904
+topic=SDNC-LCM-READ
+group=jmsgrp
+id=sdnc2
+timeout=15000
+limit=1000
+filter=
+AFT_DME2_EXCHANGE_REQUEST_HANDLERS=com.att.nsa.test.PreferredRouteRequestHandler
+AFT_DME2_EXCHANGE_REPLY_HANDLERS=com.att.nsa.test.PreferredRouteReplyHandler
+AFT_DME2_REQ_TRACE_ON=true
+AFT_ENVIRONMENT=AFTUAT
+AFT_DME2_EP_CONN_TIMEOUT=15000
+AFT_DME2_ROUNDTRIP_TIMEOUT_MS=240000
+AFT_DME2_EP_READ_TIMEOUT_MS=50000
+sessionstickinessrequired=NO
+DME2preferredRouterFilePath=/opt/onap/sdnc/data/properties/dmaap-listener.preferredRoute.txt
+sdnc.odl.user=admin
+sdnc.odl.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+sdnc.odl.url-base=http://sdnhost:8181/restconf/operations
+
diff --git a/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/log4j.properties b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/log4j.properties
new file mode 100644
index 0000000..d550f1b
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/properties/log4j.properties
@@ -0,0 +1,50 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 			reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+status = debug
+dest = err
+name = LogConfiguration
+rootLogger.level = debug
+appenders = logfile, console
+
+property.filename = /opt/onap/sdnc/dmaap-listener/logs/dmaap-listener.log
+property.filePattern = /opt/onap/sdnc/dmaap-listener/logs/dmaap-listener-%i.log
+
+# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
+appender.console.type = Console
+appender.console.name = STDOUT
+appender.console.filter.threshold.type = ThresholdFilter
+appender.console.filter.threshold.level = error
+appender.console.layout.type = PatternLayout
+appender.console.layout.pattern = %p %d{yyyy-MM-dd HH:mm:ss.SSS Z} %c{1} - %m%n
+
+# LOGFILE is set to be a File appender using a PatternLayout.
+appender.logfile.type = RollingFile
+appender.logfile.name = RollingFile
+appender.logfile.fileName = ${filename}
+appender.logfile.filePattern = ${filePattern}
+appender.logfile.layout.type = PatternLayout
+appender.logfile.layout.pattern = %p %d{yyyy-MM-dd HH:mm:ss.SSS Z} %c{1} - %m%n
+appender.logfile.policies.type = Policies
+appender.logfile.policies.size.type = SizeBasedTriggeringPolicy
+appender.logfile.policies.size.size = 10MB
+appender.logfile.strategy.type = DefaultRolloverStrategy
+appender.logfile.strategy.max = 10
diff --git a/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/scripts/start-dmaap-listener.sh b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/scripts/start-dmaap-listener.sh
new file mode 100644
index 0000000..e606585
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/dmaap-listener/src/main/scripts/start-dmaap-listener.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+###
+# ============LICENSE_START=======================================================
+# ONAP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 			reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+PROPERTY_DIR=${PROPERTY_DIR:-/opt/onap/sdnc/data/properties}
+
+
+LISTENER=dmaap-listener
+
+DMAAPLISTENERROOT=${DMAAPLISTENERROOT:-/opt/onap/sdnc/dmaap-listener}
+JAVA_HOME=${JAVA_HOME:-/usr/lib/jvm/java-7-oracle}
+JAVA_OPTS=${JAVA_OPTS:--Dhttps.protocols=TLSv1.1,TLSv1.2}
+JAVA=${JAVA:-${JAVA_HOME}/bin/java}
+
+
+
+for file in ${DMAAPLISTENERROOT}/lib/*.jar
+do
+  LISTENERCLASSPATH=$LISTENERCLASSPATH:$file
+done
+
+echo "Starting dmaap-listener"
+exec ${JAVA} ${JAVA_OPTS} -Dlog4j.configurationFile=${PROPERTY_DIR}/log4j.properties -jar ${DMAAPLISTENERROOT}/lib/dmaap-listener*.jar dmaap-listener.properties -cp ${LISTENERCLASSPATH}
+
+
+
diff --git a/sdnc-a1-controller/oam/installation/pom.xml b/sdnc-a1-controller/oam/installation/pom.xml
new file mode 100644
index 0000000..3cae144
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/pom.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>odlparent-lite</artifactId>
+        <version>1.4.3</version>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <packaging>pom</packaging>
+    <groupId>org.onap.sdnc.oam</groupId>
+    <artifactId>installation</artifactId>
+    <version>1.7.3-SNAPSHOT</version>
+
+    <name>sdnc-oam :: installation</name>
+    <description>Installs SDN-C on local file system</description>
+
+    <properties>
+        <application.name>installation</application.name>
+
+        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
+        <build.number>${maven.build.timestamp}</build.number>
+        <ccsdk.distribution.version>0.6.3</ccsdk.distribution.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+    </properties>
+
+    <modules>
+        <module>ansible-server</module>
+        <module>sdnc</module>
+        <module>admportal</module>
+        <module>ueb-listener</module>
+        <module>dmaap-listener</module>
+    </modules>
+</project>
diff --git a/sdnc-a1-controller/oam/installation/sdnc/pom.xml b/sdnc-a1-controller/oam/installation/sdnc/pom.xml
new file mode 100644
index 0000000..e09de4a
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/pom.xml
@@ -0,0 +1,437 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>odlparent-lite</artifactId>
+        <version>1.4.3</version>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <packaging>pom</packaging>
+    <groupId>org.onap.sdnc.oam</groupId>
+    <artifactId>installation-sdnc</artifactId>
+    <version>1.7.3-SNAPSHOT</version>
+
+    <name>sdnc-oam :: installation :: ${project.artifactId}</name>
+    <description>Creates SDN Controller Docker container</description>
+
+    <properties>
+        <image.name>onap/sdnc-aaf-image</image.name>
+        <standalone.image.name>onap/sdnc-image</standalone.image.name>
+        <sdnc.project.version>${project.version}</sdnc.project.version>
+        <sdnc.build.timestamp>${maven.build.timestamp}</sdnc.build.timestamp>
+        <sdnc.northbound.version>1.7.3-SNAPSHOT</sdnc.northbound.version>
+        <ccsdk.docker.version>0.6.3</ccsdk.docker.version>
+        <ccsdk.features.version>0.6.3</ccsdk.features.version>
+        <sdnc.keystore>org.onap.sdnc.p12</sdnc.keystore>
+        <sdnc.keypass><![CDATA[ff^G9D]yf&r}Ktum@BJ0YB?N]]></sdnc.keypass>
+        <sdnc.secureport>8443</sdnc.secureport>
+        <docker.buildArg.https_proxy>${https_proxy}</docker.buildArg.https_proxy>
+        <docker.push.phase>deploy</docker.push.phase>
+        <docker.verbose>true</docker.verbose>
+        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.onap.sdnc.northbound</groupId>
+            <artifactId>generic-resource-api-installer</artifactId>
+            <version>${sdnc.northbound.version}</version>
+            <classifier>repo</classifier>
+            <type>zip</type>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.sdnc.northbound</groupId>
+            <artifactId>nonrt-ric-api-installer</artifactId>
+            <version>${sdnc.northbound.version}</version>
+            <classifier>repo</classifier>
+            <type>zip</type>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.sdnc.northbound</groupId>
+            <artifactId>vnfapi-installer</artifactId>
+            <version>${sdnc.northbound.version}</version>
+            <classifier>repo</classifier>
+            <type>zip</type>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.sdnc.northbound</groupId>
+            <artifactId>vnftools-installer</artifactId>
+            <version>${sdnc.northbound.version}</version>
+            <classifier>repo</classifier>
+            <type>zip</type>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.sdnc.northbound</groupId>
+            <artifactId>sdnc-northbound-features-installer</artifactId>
+            <version>${sdnc.northbound.version}</version>
+            <classifier>repo</classifier>
+            <type>zip</type>
+        </dependency>
+
+        <dependency>
+            <groupId>org.onap.ccsdk.features.sdnr.northbound</groupId>
+            <artifactId>oofpcipoc-installer</artifactId>
+            <version>${ccsdk.features.version}</version>
+            <classifier>repo</classifier>
+            <type>zip</type>
+        </dependency>
+
+        <dependency>
+            <groupId>org.onap.ccsdk.features.sdnr.northbound</groupId>
+            <artifactId>sdnr-northbound-features-installer</artifactId>
+            <version>${ccsdk.features.version}</version>
+            <classifier>repo</classifier>
+            <type>zip</type>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+            <artifactId>sdnr-wt-feature-aggregator-installer</artifactId>
+            <version>${ccsdk.features.version}</version>
+            <classifier>repo</classifier>
+            <type>zip</type>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+
+
+            <plugin>
+                <groupId>org.codehaus.groovy.maven</groupId>
+                <artifactId>gmaven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>execute</goal>
+                        </goals>
+                        <configuration>
+                            <source>${basedir}/../TagVersion.groovy</source>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>io.fabric8</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+                <version>0.28.0</version>
+                <inherited>false</inherited>
+                <executions>
+                    <execution>
+                        <id>generate-images</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                        <configuration>
+                           <images>
+                            <image>
+                             <name>${image.name}</name>
+                             <build>
+                              <cleanup>try</cleanup>
+                              <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
+                              <dockerFile>Dockerfile</dockerFile>
+                              <tags>
+                                 <tag>${project.docker.latestminortag.version}</tag>
+                                 <tag>${project.docker.latestfulltag.version}</tag>
+                                 <tag>${project.docker.latesttagtimestamp.version}</tag>
+                              </tags>
+                             </build>
+                            </image>
+                           </images>
+                          </configuration>
+                    </execution>
+                    <execution>
+                      <id>push-images</id>
+                      <phase>${docker.push.phase}</phase>
+                      <goals>
+                       <goal>build</goal>
+                       <goal>push</goal>
+                      </goals>
+                       <configuration>
+                        <images>
+                         <image>
+                          <name>${image.name}</name>
+                          <build>
+                           <cleanup>try</cleanup>
+                           <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
+                           <dockerFile>Dockerfile</dockerFile>
+                           <tags>
+                              <tag>${project.docker.latestminortag.version}</tag>
+                              <tag>${project.docker.latestfulltag.version}</tag>
+                              <tag>${project.docker.latesttagtimestamp.version}</tag>
+                           </tags>
+                          </build>
+                         </image>
+                        </images>
+                       </configuration>
+                   </execution>
+                   <execution>
+                     <id>generate-standalone-images</id>
+                     <phase>package</phase>
+                     <goals>
+                      <goal>build</goal>
+                     </goals>
+                     <configuration>
+                      <images>
+                       <image>
+                        <name>${standalone.image.name}</name>
+                        <build>
+                         <cleanup>try</cleanup>
+                         <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
+                         <dockerFile>standalone.Dockerfile</dockerFile>
+                         <tags>
+                             <tag>${project.docker.latestminortag.version}</tag>
+                             <tag>${project.docker.latestfulltag.version}</tag>
+                             <tag>${project.docker.latesttagtimestamp.version}</tag>
+                         </tags>
+                        </build>
+                       </image>
+                      </images>
+                     </configuration>
+                   </execution>
+                   <execution>
+                     <id>push-standalone-images</id>
+                     <phase>${docker.push.phase}</phase>
+                     <goals>
+                      <goal>build</goal>
+                      <goal>push</goal>
+                     </goals>
+                     <configuration>
+                       <images>
+                        <image>
+                         <name>${standalone.image.name}</name>
+                         <build>
+                          <cleanup>try</cleanup>
+                          <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
+                          <dockerFile>standalone.Dockerfile</dockerFile>
+                          <tags>
+                             <tag>${project.docker.latestminortag.version}</tag>
+                             <tag>${project.docker.latestfulltag.version}</tag>
+                             <tag>${project.docker.latesttagtimestamp.version}</tag>
+                          </tags>
+                         </build>
+                        </image>
+                       </images>
+                     </configuration>
+                  </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <id>copy-dockerfile</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/docker</directory>
+                                    <includes>
+                                        <include>Dockerfile</include>
+                                        <include>standalone.Dockerfile</include>
+                                    </includes>
+                                    <filtering>true</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>copy-scripts</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/bin</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/scripts</directory>
+                                    <includes>
+                                        <include>*.py</include>
+                                        <include>*.sh</include>
+                                    </includes>
+                                    <filtering>false</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>copy-tarballs</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/resources</directory>
+                                    <includes>
+                                        <include>idmlight.db.mv.db</include>
+                                        <include>truststoreONAPall.jks</include>
+                                        <include>aaa-app-config.xml</include>
+                                    </includes>
+                                    <filtering>false</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>copy-data</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/data</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/resources</directory>
+                                    <includes>
+                                        <include>*.dump</include>
+                                    </includes>
+                                    <filtering>false</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>copy-properties</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/data/properties</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>../src/main/properties</directory>
+                                    <includes>
+                                        <include>*.properties</include>
+                                        <include>*.props</include>
+                                        <include>*.csv</include>
+                                    </includes>
+                                    <filtering>false</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>copy-keystores</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/data/stores</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>../src/main/stores</directory>
+                                    <includes>
+                                        <include>*.jks</include>
+                                        <include>*.keyfile</include>
+                                        <include>*.p12</include>
+                                    </includes>
+                                    <filtering>false</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>3.0.2</version>
+                <executions>
+                    <execution>
+                        <id>unpack sdnc features</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>unpack-dependencies</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage</outputDirectory>
+                            <excludeTransitive>true</excludeTransitive>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>unpack dgs</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc</outputDirectory>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>${project.groupId}</groupId>
+                                    <artifactId>platform-logic-installer</artifactId>
+                                    <version>${project.version}</version>
+                                    <type>zip</type>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>unpack migration utility</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/data-migrator</outputDirectory>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.onap.sdnc.oam</groupId>
+                                    <artifactId>data-migrator</artifactId>
+                                    <version>${project.version}</version>
+                                    <type>zip</type>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>exec-maven-plugin</artifactId>
+                <groupId>org.codehaus.mojo</groupId>
+                <version>1.5.0</version>
+                <executions>
+                    <execution>
+                        <id>change shell permissions</id>
+                        <phase>process-sources</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <executable>/usr/bin/find</executable>
+                            <arguments>
+                                <argument>${basedir}/target/docker-stage/opt/onap/sdnc</argument>
+                                <argument>-name</argument>
+                                <argument>*.sh</argument>
+                                <argument>-exec</argument>
+                                <argument>chmod</argument>
+                                <argument>+x</argument>
+                                <argument>{}</argument>
+                                <argument>;</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    <organization>
+        <name>ONAP</name>
+    </organization>
+</project>
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/docker/Dockerfile b/sdnc-a1-controller/oam/installation/sdnc/src/main/docker/Dockerfile
new file mode 100755
index 0000000..8b7e12b
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/docker/Dockerfile
@@ -0,0 +1,69 @@
+# Prepare stage for multistage image build
+## START OF STAGE0 ##
+FROM onap/ccsdk-odlsli-alpine-image:${ccsdk.docker.version} AS stage0
+
+ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
+ENV ODL_HOME /opt/opendaylight
+
+USER root
+
+# copy onap
+COPY opt /opt
+RUN test -L /opt/sdnc || ln -s /opt/onap/sdnc /opt/sdnc
+RUN mkdir $ODL_HOME/current/certs
+
+# copy SDNC mvn artifacts to ODL repository
+COPY system /tmp/system
+RUN rsync -a /tmp/system $ODL_HOME
+## END OF STAGE0 ##
+
+
+FROM onap/ccsdk-odlsli-alpine-image:${ccsdk.docker.version}
+
+MAINTAINER SDN-C Team (sdnc@lists.onap.org)
+
+ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
+ENV ODL_HOME /opt/opendaylight
+ENV SDNC_CONFIG_DIR /opt/onap/sdnc/data/properties
+ENV SDNC_STORE_DIR /opt/onap/sdnc/data/stores
+ENV SSL_CERTS_DIR /etc/ssl/certs
+ENV JAVA_SECURITY_DIR $SSL_CERTS_DIR/java
+ENV SDNC_NORTHBOUND_REPO mvn:org.onap.sdnc.northbound/sdnc-northbound-all/${sdnc.northbound.version}/xml/features
+ENV SDNR_NORTHBOUND_REPO mvn:org.onap.ccsdk.features.sdnr.northbound/sdnr-northbound-all/${ccsdk.features.version}/xml/features
+ENV SDNR_WT_REPO mvn:org.onap.ccsdk.features.sdnr.wt/sdnr-wt-feature-aggregator/${ccsdk.features.version}/xml/features
+ENV SDNC_KEYSTORE ${sdnc.keystore}
+ENV SDNC_KEYPASS ${sdnc.keypass}
+ENV SDNC_SECUREPORT ${sdnc.secureport}
+
+USER root
+
+COPY --from=stage0 --chown=odl:odl /opt /opt
+
+# Add SDNC repositories to boot repositories
+RUN cp $ODL_HOME/etc/org.apache.karaf.features.cfg $ODL_HOME/etc/org.apache.karaf.features.cfg.orig
+RUN sed -i -e "\|featuresRepositories|s|$|,${SDNC_NORTHBOUND_REPO}, ${SDNR_NORTHBOUND_REPO}, ${SDNR_WT_REPO}|"  $ODL_HOME/etc/org.apache.karaf.features.cfg
+RUN sed -i -e "\|featuresBoot[^a-zA-Z]|s|$|,sdnc-northbound-all, sdnr-northbound-all|"  $ODL_HOME/etc/org.apache.karaf.features.cfg
+RUN sed -i "s/odl-restconf-all/odl-restconf-all,odl-netconf-topology/g"  $ODL_HOME/etc/org.apache.karaf.features.cfg
+
+# install AAF configs
+COPY aaa-app-config.xml $ODL_HOME/etc/opendaylight/datastore/initial/config/
+RUN echo "cadi_prop_files=$SDNC_CONFIG_DIR/org.onap.sdnc.props" >> $ODL_HOME/etc/system.properties
+
+# Install ssl and java certificates
+COPY truststoreONAPall.jks $JAVA_SECURITY_DIR
+COPY truststoreONAPall.jks $SDNC_STORE_DIR
+RUN keytool -importkeystore -srckeystore $JAVA_SECURITY_DIR/truststoreONAPall.jks -srcstorepass changeit -destkeystore $JAVA_SECURITY_DIR/cacerts  -deststorepass changeit
+
+# Secure with TLS
+RUN echo org.osgi.service.http.secure.enabled=true >> $ODL_HOME/etc/custom.properties
+RUN echo org.osgi.service.http.secure.port=$SDNC_SECUREPORT >> $ODL_HOME/etc/custom.properties
+RUN echo org.ops4j.pax.web.ssl.keystore=$SDNC_STORE_DIR/$SDNC_KEYSTORE >> $ODL_HOME/etc/custom.properties
+RUN echo org.ops4j.pax.web.ssl.password=$SDNC_KEYPASS >> $ODL_HOME/etc/custom.properties
+RUN echo org.ops4j.pax.web.ssl.keypassword=$SDNC_KEYPASS >> $ODL_HOME/etc/custom.properties
+
+RUN chown -R odl:odl /opt
+
+USER odl
+
+ENTRYPOINT /opt/onap/sdnc/bin/startODL.sh
+EXPOSE 8181
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/docker/standalone.Dockerfile b/sdnc-a1-controller/oam/installation/sdnc/src/main/docker/standalone.Dockerfile
new file mode 100755
index 0000000..e0c706f
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/docker/standalone.Dockerfile
@@ -0,0 +1,65 @@
+# Prepare stage for multistage image build
+## START OF STAGE0 ##
+FROM onap/ccsdk-odlsli-alpine-image:${ccsdk.docker.version} AS stage0
+
+ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
+ENV ODL_HOME /opt/opendaylight
+
+USER root
+
+# copy onap
+COPY opt /opt
+RUN test -L /opt/sdnc || ln -s /opt/onap/sdnc /opt/sdnc
+RUN mkdir $ODL_HOME/current/certs
+
+# copy SDNC mvn artifacts to ODL repository
+COPY system /tmp/system
+RUN rsync -a /tmp/system $ODL_HOME
+## END OF STAGE0 ##
+
+
+FROM onap/ccsdk-odlsli-alpine-image:${ccsdk.docker.version}
+
+MAINTAINER SDN-C Team (sdnc@lists.onap.org)
+
+ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
+ENV ODL_HOME /opt/opendaylight
+ENV SDNC_CONFIG_DIR /opt/onap/sdnc/data/properties
+ENV SDNC_STORE_DIR /opt/onap/sdnc/data/stores
+ENV SSL_CERTS_DIR /etc/ssl/certs
+ENV JAVA_SECURITY_DIR $SSL_CERTS_DIR/java
+ENV SDNC_NORTHBOUND_REPO mvn:org.onap.sdnc.northbound/sdnc-northbound-all/${sdnc.northbound.version}/xml/features
+ENV SDNR_NORTHBOUND_REPO mvn:org.onap.ccsdk.features.sdnr.northbound/sdnr-northbound-all/${ccsdk.features.version}/xml/features
+ENV SDNR_WT_REPO mvn:org.onap.ccsdk.features.sdnr.wt/sdnr-wt-feature-aggregator/${ccsdk.features.version}/xml/features
+ENV SDNC_KEYSTORE ${sdnc.keystore}
+ENV SDNC_KEYPASS ${sdnc.keypass}
+ENV SDNC_SECUREPORT ${sdnc.secureport}
+
+USER root
+
+COPY --from=stage0 --chown=odl:odl /opt /opt
+
+# Add SDNC repositories to boot repositories
+RUN cp $ODL_HOME/etc/org.apache.karaf.features.cfg $ODL_HOME/etc/org.apache.karaf.features.cfg.orig
+RUN sed -i -e "\|featuresRepositories|s|$|,${SDNC_NORTHBOUND_REPO}, ${SDNR_NORTHBOUND_REPO}, ${SDNR_WT_REPO}|"  $ODL_HOME/etc/org.apache.karaf.features.cfg
+RUN sed -i -e "\|featuresBoot[^a-zA-Z]|s|$|,sdnc-northbound-all, sdnr-northbound-all|"  $ODL_HOME/etc/org.apache.karaf.features.cfg
+RUN sed -i "s/odl-restconf-all/odl-restconf-all,odl-netconf-topology/g"  $ODL_HOME/etc/org.apache.karaf.features.cfg
+
+# Install ssl and java certificates
+COPY truststoreONAPall.jks $JAVA_SECURITY_DIR
+COPY truststoreONAPall.jks $SDNC_STORE_DIR
+RUN keytool -importkeystore -srckeystore $JAVA_SECURITY_DIR/truststoreONAPall.jks -srcstorepass changeit -destkeystore $JAVA_SECURITY_DIR/cacerts  -deststorepass changeit
+
+# Secure with TLS
+RUN echo org.osgi.service.http.secure.enabled=true >> $ODL_HOME/etc/custom.properties
+RUN echo org.osgi.service.http.secure.port=$SDNC_SECUREPORT >> $ODL_HOME/etc/custom.properties
+RUN echo org.ops4j.pax.web.ssl.keystore=$SDNC_STORE_DIR/$SDNC_KEYSTORE >> $ODL_HOME/etc/custom.properties
+RUN echo org.ops4j.pax.web.ssl.password=$SDNC_KEYPASS >> $ODL_HOME/etc/custom.properties
+RUN echo org.ops4j.pax.web.ssl.keypassword=$SDNC_KEYPASS >> $ODL_HOME/etc/custom.properties
+
+RUN chown -R odl:odl /opt
+
+USER odl
+
+ENTRYPOINT /opt/onap/sdnc/bin/startODL.sh
+EXPOSE 8181
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/aaa-app-config.xml b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/aaa-app-config.xml
new file mode 100644
index 0000000..86e6667
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/aaa-app-config.xml
@@ -0,0 +1,320 @@
+<?xml version="1.0" ?>
+<!--
+     Copyright (c) 2017 Inocybe Technologies and others.  All rights reserved.
+
+     This program and the accompanying materials are made available under the
+     terms of the Eclipse Public License v1.0 which accompanies this distribution,
+     and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<!--
+  ///////////////////////////////////////////////////////////////////////////////////////
+  // clustered-app-config instance responsible for AAA configuration.  In the future,  //
+  // this will contain all AAA related configuration.                                  //
+  ///////////////////////////////////////////////////////////////////////////////////////
+-->
+
+<shiro-configuration xmlns="urn:opendaylight:aaa:app:config">
+
+    <!--
+      ///////////////////////////////////////////////////////////////////////////////////
+      // shiro-configuration is the model based container that contains all shiro      //
+      // related information used in ODL AAA configuration.  It is the sole pain of    //
+      // glass for shiro related configuration, and is how to configure shiro concepts //
+      // such as:                                                                      //
+      // * realms                                                                      //
+      // * urls                                                                        //
+      // * security manager settings                                                   //
+      //                                                                               //
+      // In general, you really shouldn't muck with the settings in this file.  The    //
+      // way an operator should configure AAA shiro settings is through one of ODL's   //
+      // northbound interfaces (i.e., RESTCONF or NETCONF).  These are just the        //
+      // defaults if no values are specified in MD-SAL.  The reason this file is so    //
+      // verbose is for two reasons:                                                   //
+      // 1) to demonstrate payload examples for plausible configuration scenarios      //
+      // 2) to allow bootstrap of the controller (first time start) since otherwise    //
+      //    configuration becomes a chicken and the egg problem.                       //
+      //                                                                               //
+      ///////////////////////////////////////////////////////////////////////////////////
+    -->
+
+    <!--
+      ===================================================================================
+      =                                                                                 =
+      =                                                                                 =
+      =                                      MAIN                                       =
+      =                                                                                 =
+      =                                                                                 =
+      ===================================================================================
+    -->
+
+    <!--
+      ===================================================================================
+      ============================ ODLJndiLdapRealmAuthNOnly ============================
+      ===================================================================================
+      =                                                                                 =
+      = Description:  A Realm implementation aimed at federating with an external LDAP  =
+      =               server for authentication only.  For authorization support, refer =
+      =               to ODLJndiLdapRealm.                                              =
+      ===================================================================================
+    -->
+    <!-- Start ldapRealm commented out
+    <main>
+        <pair-key>ldapRealm</pair-key>
+        <pair-value>org.opendaylight.aaa.shiro.realm.ODLJndiLdapRealmAuthNOnly</pair-value>
+    </main>
+    <main>
+        <pair-key>ldapRealm.userDnTemplate</pair-key>
+        <pair-value>uid={0},ou=People,dc=DOMAIN,dc=TLD</pair-value>
+    </main>
+    <main>
+        <pair-key>ldapRealm.contextFactory.url</pair-key>
+        <pair-value>ldap://&lt;URL&gt;:389</pair-value>
+    </main>
+    <main>
+        <pair-key>ldapRealm.searchBase</pair-key>
+        <pair-value>dc=DOMAIN,dc=TLD</pair-value>
+    </main>
+    <main>
+        <pair-key>ldapRealm.groupRolesMap</pair-key>
+        <pair-value>&quot;person&quot;:&quot;admin&quot;, &quot;organizationalPerson&quot;:&quot;user&quot;</pair-value>
+    </main>
+    <main>
+        <pair-key>ldapRealm.ldapAttributeForComparison</pair-key>
+        <pair-value>objectClass</pair-value>
+    </main>
+    End ldapRealm commented out-->
+
+    <!--
+      ===================================================================================
+      ============================= ODLActiveDirectoryRealm =============================
+      ===================================================================================
+      =                                                                                 =
+      = Description:  A Realm implementation aimed at federating with an external AD    =
+      =               IDP server.                                                       =
+      ===================================================================================
+    -->
+    <!-- Start adRealm commented out
+    <main>
+        <pair-key>adRealm</pair-key>
+        <pair-value>org.opendaylight.aaa.shiro.realm.ODLActiveDirectoryRealm</pair-value>
+    </main>
+    <main>
+        <pair-key>adRealm.searchBase</pair-key>
+        <pair-value>&quot;CN=Users,DC=example,DC=com&quot;</pair-value>
+    </main>
+    <main>
+        <pair-key>adRealm.systemUsername</pair-key>
+        <pair-value>aduser@example.com</pair-value>
+    </main>
+    <main>
+        <pair-key>adRealm.systemPassword</pair-key>
+        <pair-value>adpassword</pair-value>
+    </main>
+    <main>
+        <pair-key>adRealm.url</pair-key>
+        <pair-value>ldaps://adserver:636</pair-value>
+    </main>
+    <main>
+        <pair-key>adRealm.groupRolesMap</pair-key>
+        <pair-value>&quot;CN=sysadmin,CN=Users,DC=example,DC=com&quot;:&quot;admin&quot;, &quot;CN=unprivileged,CN=Users,DC=example,DC=com&quot;:&quot;user&quot;</pair-value>
+    </main>
+    End adRealm commented out-->
+
+    <!--
+      ===================================================================================
+      ================================== ODLJdbcRealm ===================================
+      ===================================================================================
+      =                                                                                 =
+      = Description:  A Realm implementation aimed at federating with an external JDBC  =
+      =               DBMS.                                                             =
+      ===================================================================================
+    -->
+    <!-- Start jdbcRealm commented out
+    <main>
+        <pair-key>ds</pair-key>
+        <pair-value>com.mysql.jdbc.Driver</pair-value>
+    </main>
+    <main>
+        <pair-key>ds.serverName</pair-key>
+        <pair-value>localhost</pair-value>
+    </main>
+    <main>
+        <pair-key>ds.user</pair-key>
+        <pair-value>user</pair-value>
+    </main>
+    <main>
+        <pair-key>ds.password</pair-key>
+        <pair-value>password</pair-value>
+    </main>
+    <main>
+        <pair-key>ds.databaseName</pair-key>
+        <pair-value>db_name</pair-value>
+    </main>
+    <main>
+        <pair-key>jdbcRealm</pair-key>
+        <pair-value>ODLJdbcRealm</pair-value>
+    </main>
+    <main>
+        <pair-key>jdbcRealm.dataSource</pair-key>
+        <pair-value>$ds</pair-value>
+    </main>
+    <main>
+        <pair-key>jdbcRealm.authenticationQuery</pair-key>
+        <pair-value>&quot;SELECT password FROM users WHERE user_name = ?&quot;</pair-value>
+    </main>
+    <main>
+        <pair-key>jdbcRealm.userRolesQuery</pair-key>
+        <pair-value>&quot;SELECT role_name FROM user_rolesWHERE user_name = ?&quot;</pair-value>
+    </main>
+    End jdbcRealm commented out-->
+
+    <!--
+      ===================================================================================
+      ================================= TokenAuthRealm ==================================
+      ===================================================================================
+      =                                                                                 =
+      = Description:  A Realm implementation utilizing a per node H2 database store.    =
+      ===================================================================================
+    -->
+    <main>
+        <pair-key>tokenAuthRealm</pair-key>
+	<pair-value>org.onap.aaf.cadi.shiro.AAFRealm</pair-value>
+        <!-- <pair-value>org.opendaylight.aaa.shiro.realm.TokenAuthRealm</pair-value> -->
+    </main>
+
+    <!--
+      ===================================================================================
+      =================================== MdsalRealm ====================================
+      ===================================================================================
+      =                                                                                 =
+      = Description:  A Realm implementation utilizing the aaa.yang model.              =
+      ===================================================================================
+    -->
+    <!-- Start mdsalRealm commented out
+    <main>
+        <pair-key>mdsalRealm</pair-key>
+        <pair-value>org.opendaylight.aaa.shiro.realm.MdsalRealm</pair-value>
+    </main>
+    End mdsalRealm commented out-->
+
+    <!--
+      ===================================================================================
+      ================================= MoonAuthRealm ===================================
+      ===================================================================================
+      =                                                                                 =
+      = Description:  A Realm implementation aimed at federating with OPNFV Moon.       =
+      ===================================================================================
+    -->
+    <!-- Start moonAuthRealm commented out
+    <main>
+        <pair-key>moonAuthRealm</pair-key>
+        <pair-value>org.opendaylight.aaa.shiro.realm.MoonRealm</pair-value>
+    </main>
+    <main>
+        <pair-key>moonAuthRealm.moonServerURL</pair-key>
+        <pair-value>http://&lt;host&gt;:&lt;port&gt;</pair-value>
+    </main>
+    End moonAuthRealm commented out-->
+
+    <!--
+      ===================================================================================
+      ================================= KeystoneAuthRealm == ============================
+      ===================================================================================
+      =                                                                                 =
+      = Description:  A Realm implementation aimed at federating with an OpenStack      =
+      =               Keystone.                                                         =
+      ===================================================================================
+    -->
+    <!-- Start keystoneAuthRealm commented out
+    <main>
+        <pair-key>keystoneAuthRealm</pair-key>
+        <pair-value>org.opendaylight.aaa.shiro.realm.KeystoneAuthRealm</pair-value>
+    </main>
+    <main>
+        <pair-key>keystoneAuthRealm.url</pair-key>
+        <pair-value>https://&lt;host&gt;:&lt;port&gt;</pair-value>
+    </main>
+    <main>
+        <pair-key>keystoneAuthRealm.sslVerification</pair-key>
+        <pair-value>true</pair-value>
+    </main>
+    <main>
+        <pair-key>keystoneAuthRealm.defaultDomain</pair-key>
+        <pair-value>Default</pair-value>
+    </main>
+    -->
+
+    <!--
+    Add tokenAuthRealm as the only realm.  To enable mdsalRealm, add it to the list to he right of tokenAuthRealm.
+    -->
+    <main>
+        <pair-key>securityManager.realms</pair-key>
+        <pair-value>$tokenAuthRealm</pair-value>
+    </main>
+    <!-- Used to support OAuth2 use case. -->
+    <main>
+        <pair-key>authcBasic</pair-key>
+        <pair-value>org.opendaylight.aaa.shiro.filters.ODLHttpAuthenticationFilter</pair-value>
+    </main>
+
+    <!-- Start moonAuthRealm commented out
+    <main>
+        <pair-key>rest</pair-key>
+        <pair-value>org.opendaylight.aaa.shiro.filters.MoonOAuthFilter</pair-value>
+    </main>
+    End moonAuthRealm commented out-->
+
+    <!-- in order to track AAA challenge attempts -->
+    <main>
+        <pair-key>accountingListener</pair-key>
+        <pair-value>org.opendaylight.aaa.shiro.filters.AuthenticationListener</pair-value>
+    </main>
+    <main>
+        <pair-key>securityManager.authenticator.authenticationListeners</pair-key>
+        <pair-value>$accountingListener</pair-value>
+    </main>
+
+    <!-- Model based authorization scheme supporting RBAC for REST endpoints -->
+    <main>
+        <pair-key>dynamicAuthorization</pair-key>
+        <pair-value>org.opendaylight.aaa.shiro.realm.MDSALDynamicAuthorizationFilter</pair-value>
+    </main>
+
+
+    <!--
+      ===================================================================================
+      =                                                                                 =
+      =                                                                                 =
+      =                                      URLS                                       =
+      =                                                                                 =
+      =                                                                                 =
+      ===================================================================================
+    -->
+    <!-- Start moonAuthRealm commented out
+    <urls>
+        <pair-key>/token</pair-key>
+        <pair-value>rest</pair-value>
+    </urls>
+    End moonAuthRealm commented out-->
+   <!-- URLS comment out
+    <urls>
+        <pair-key>/operations/cluster-admin**</pair-key>
+        <pair-value>authcBasic, roles[admin]</pair-value>
+    </urls>
+    <urls>
+        <pair-key>/v1/**</pair-key>
+        <pair-value>authcBasic, roles[admin]</pair-value>
+    </urls>
+    <urls>
+        <pair-key>/config/aaa*/**</pair-key>
+        <pair-value>authcBasic, roles[admin]</pair-value>
+    </urls>
+    End URLS commented out -->
+    <urls>
+        <pair-key>/**</pair-key>
+        <!-- <pair-value>authcBasic</pair-value> -->
+        <pair-value>authcBasic, rest[org.onap.sdnc.odl:odl-api]</pair-value>
+    </urls>
+</shiro-configuration>
+
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/allotted_resource_model.data.dump b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/allotted_resource_model.data.dump
new file mode 100644
index 0000000..879fa50
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/allotted_resource_model.data.dump
@@ -0,0 +1,61 @@
+-- MySQL dump 10.13  Distrib 5.6.22, for Linux (x86_64)
+--
+-- Host: sdnctldb01    Database: sdnctl
+-- ------------------------------------------------------
+-- Server version	5.6.36-enterprise-commercial-advanced-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `ALLOTTED_RESOURCE_MODEL`
+--
+
+DROP TABLE IF EXISTS `ALLOTTED_RESOURCE_MODEL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `ALLOTTED_RESOURCE_MODEL` (
+  `customization_uuid` varchar(255) NOT NULL,
+  `model_yaml` longblob,
+  `invariant_uuid` varchar(255) DEFAULT NULL,
+  `uuid` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  `naming_policy` varchar(255) DEFAULT NULL,
+  `ecomp_generated_naming` char(1) DEFAULT NULL,
+  `depending_service` varchar(255) DEFAULT NULL,
+  `role` varchar(255) DEFAULT NULL,
+  `type` varchar(255) DEFAULT NULL,
+  `service_dependency` varchar(255) DEFAULT NULL,
+  `allotted_resource_type` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `ALLOTTED_RESOURCE_MODEL`
+--
+
+LOCK TABLES `ALLOTTED_RESOURCE_MODEL` WRITE;
+/*!40000 ALTER TABLE `ALLOTTED_RESOURCE_MODEL` DISABLE KEYS */;
+INSERT INTO `ALLOTTED_RESOURCE_MODEL` VALUES ('0ac79616-4f69-4936-8f31-5ce982282be2','null','d3f33c8f-bd9f-447d-b4d2-ad6fc5aea83f','2abcec58-fe97-478e-a58f-35c8cdc3ec3d','1.0',NULL,NULL,NULL,NULL,'Tunnel XConnect',NULL,'Tunnel XConnect'),('1e7a8782-7bf6-4726-a26e-a5e4eca6cba1','null','5255679f-0d50-49e3-82f1-e51bca8cf6d1','f6d6767d-c015-4924-9052-97659f8a16e3','1.0',NULL,NULL,NULL,NULL,'IP Mux Demux',NULL,'IP Mux Demux'),('9f8dbc4f-d7f6-421b-a2fe-3c09b1068622','null','b8064c7c-2390-4eab-9472-f0cdde3b1b9e','1bba1911-e393-46fb-a773-a93d29261cc2','1.0',NULL,NULL,NULL,NULL,'IP Mux Demux',NULL,'IP Mux Demux'),('acc15553-e8fa-41f1-a260-e4588290dd9d','null','b8064c7c-2390-4eab-9472-f0cdde3b1b9e','1bba1911-e393-46fb-a773-a93d29261cc2','1.0',NULL,NULL,NULL,NULL,'IP Mux Demux',NULL,'IP Mux Demux'),('ad07a460-4224-4b55-8aab-cbd3d3c3310b','null','b5bbf19a-9fed-4fc0-a61e-e44d246f37b8','f59db7f5-74fb-4dbd-94aa-90b2ce4ac627','3.0',NULL,'Y',NULL,NULL,'Tunnel XConnect',NULL,'Tunnel XConnect'),('bb50f135-22d2-4b64-98ab-e6aed28608e8','null','d3f33c8f-bd9f-447d-b4d2-ad6fc5aea83f','2abcec58-fe97-478e-a58f-35c8cdc3ec3d','1.0',NULL,NULL,NULL,NULL,'Tunnel XConnect',NULL,'Tunnel XConnect'),('f66a5a6a-30f4-40ef-a3b6-ba779a522fd0','null','5d623af7-1ae4-4e7d-933b-b09bd4407f40','dac644a3-2b2c-4586-862d-9a9a4b1eb5e1','1.0',NULL,NULL,NULL,NULL,'Allotted Resource',NULL,'Allotted Resource');
+/*!40000 ALTER TABLE `ALLOTTED_RESOURCE_MODEL` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2017-10-12 20:47:30
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/blueprint-processor.data.dump b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/blueprint-processor.data.dump
new file mode 100644
index 0000000..9a19863
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/blueprint-processor.data.dump
@@ -0,0 +1,98 @@
+-- -----------------------------------------------------
+-- Dropping tables ( One time )
+-- -----------------------------------------------------
+
+SET FOREIGN_KEY_CHECKS=0;
+
+DROP TABLE IF EXISTS sdnctl.CONFIG_RESOURCE_ASSIGNMENT_DATA;
+DROP TABLE IF EXISTS sdnctl.CONFIG_RESOURCE;
+DROP TABLE IF EXISTS sdnctl.CONFIG_RESOURCE_RELATION;
+DROP TABLE IF EXISTS sdnctl.CONFIG_TRANSACTION_LOG;
+
+SET FOREIGN_KEY_CHECKS=1;
+
+-- -----------------------------------------------------
+-- table sdnctl.CONFIG_TRANSACTION_LOG
+-- -----------------------------------------------------
+CREATE TABLE IF NOT EXISTS sdnctl.CONFIG_TRANSACTION_LOG (
+   config_transaction_log_id  VARCHAR(50) NOT NULL,
+   request_id                 VARCHAR(50)   NULL          DEFAULT NULL,
+   message_type               VARCHAR(100)  NULL          DEFAULT NULL,
+   creation_date              DATETIME      NOT NULL      DEFAULT CURRENT_TIMESTAMP,
+   message                           LONGTEXT      NULL          DEFAULT NULL,
+   PRIMARY KEY PK_CONFIG_TRANSACTION_LOG (config_transaction_log_id)
+   ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+-- -----------------------------------------------------
+-- table sdnctl.CONFIG_RESOURCE
+-- -----------------------------------------------------
+CREATE TABLE IF NOT EXISTS sdnctl.CONFIG_RESOURCE (
+   config_resource_id   VARCHAR(50)         NOT NULL,
+   resource_id          VARCHAR(50)   NOT NULL,
+   resource_type        VARCHAR(50)   NOT NULL,
+   service_template_name   VARCHAR(50)      NULL          DEFAULT NULL,
+   service_template_version   VARCHAR(50)      NULL          DEFAULT NULL,
+   template_name        VARCHAR(50)   NOT NULL,
+   recipe_name          VARCHAR(50)   NOT NULL,
+   request_id           VARCHAR(50)   NOT NULL,
+   resource_data        LONGTEXT      NULL          DEFAULT NULL,
+   mask_data            LONGTEXT      NULL          DEFAULT NULL,
+   created_date         DATETIME      NOT NULL      DEFAULT CURRENT_TIMESTAMP,
+   status               VARCHAR(20)   NOT NULL,
+   updated_by           VARCHAR(50)   NOT NULL,
+   PRIMARY KEY PK_CONFIG_RESOURCE (config_resource_id),
+   INDEX IX_CONFIG_RESOURCE (created_date desc)
+   ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+-- -----------------------------------------------------
+-- table sdnctl.CONFIG_RESOURCE_RELATION
+-- -----------------------------------------------------
+CREATE TABLE IF NOT EXISTS sdnctl.CONFIG_RESOURCE_RELATION (
+   config_resource_relation_id VARCHAR(50) NOT NULL,
+   resource_id VARCHAR(50) NOT NULL,
+   related_resource_id VARCHAR(50) NOT NULL,
+   relation_type VARCHAR(50) NOT NULL DEFAULT 'children',
+   created_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+   updated_by VARCHAR(50) NOT NULL,
+   PRIMARY KEY PK_CONFIG_RESOURCE_RELATION (config_resource_relation_id),
+   INDEX IX_CONFIG_RESOURCE_RELATION (created_date desc),
+   CONSTRAINT FK_CONFIG_RESOURCE_RELATION_TO_CONFIG_RESOURCE1
+   FOREIGN KEY (resource_id)
+   REFERENCES sdnctl.CONFIG_RESOURCE (config_resource_id)
+   ON DELETE NO ACTION
+   ON UPDATE NO ACTION,
+   CONSTRAINT FK_CONFIG_RESOURCE_RELATION_TO_CONFIG_RESOURCE2
+   FOREIGN KEY (related_resource_id)
+   REFERENCES sdnctl.CONFIG_RESOURCE (config_resource_id)
+   ON DELETE NO ACTION
+   ON UPDATE NO ACTION
+   ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+-- -----------------------------------------------------
+-- table sdnctl.CONFIG_RESOURCE_ASSIGNMENT_DATA
+-- -----------------------------------------------------
+CREATE TABLE IF NOT EXISTS sdnctl.CONFIG_RESOURCE_ASSIGNMENT_DATA (
+   config_resource_assignment_data_id VARCHAR(50) NOT NULL,
+   config_resource_id    VARCHAR(50) NOT NULL,
+   version INT(11) NOT NULL,
+   updated_date    DATETIME         NOT NULL          DEFAULT CURRENT_TIMESTAMP,
+   updated_by      VARCHAR(50)    NOT NULL,   
+   template_key_name     VARCHAR(50)    NOT NULL,
+   resource_name   VARCHAR(50)    NOT NULL,
+   data_type       VARCHAR(100)    NOT NULL,
+   entry_schema    VARCHAR(100)    NULL DEFAULT NULL,
+   resource_value  LONGTEXT         NOT NULL,
+   source   VARCHAR(50)    NOT NULL,
+   status   VARCHAR(50)    NOT NULL,
+   message  LONGTEXT         NOT NULL,
+   PRIMARY KEY PK_CONFIG_RESOURCE (config_resource_assignment_data_id),
+   INDEX IX_CONFIG_RESOURCE (updated_date desc),
+   CONSTRAINT FK_CONFIG_RESOURCE_ASSIGNMENT_DATA
+   FOREIGN KEY (config_resource_id)
+   REFERENCES sdnctl.CONFIG_RESOURCE (config_resource_id)
+   ON DELETE NO ACTION
+   ON UPDATE NO ACTION
+   ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/idmlight.db.mv.db b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/idmlight.db.mv.db
new file mode 100644
index 0000000..c6b359d
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/idmlight.db.mv.db
Binary files differ
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/ipam.data.dump b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/ipam.data.dump
new file mode 100644
index 0000000..94dd19b
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/ipam.data.dump
@@ -0,0 +1,88 @@
+-- MySQL dump 10.13  Distrib 5.7.21, for Linux (x86_64)
+--
+-- Host: localhost    Database: sdnctl
+-- ------------------------------------------------------
+-- Server version	5.7.21-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `IPAM_IP_POOL`
+--
+
+DROP TABLE IF EXISTS `IPAM_IP_POOL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `IPAM_IP_POOL` (
+  `ipam_pool_uuid` int(11) NOT NULL AUTO_INCREMENT,
+  `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `prefix_id` int(2) DEFAULT NULL,
+  `prefix` varchar(255) DEFAULT NULL,
+  `address_family` int(1) DEFAULT NULL,
+  `prefix_status` varchar(255) DEFAULT NULL,
+  `description` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`ipam_pool_uuid`)
+) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `IPAM_IP_POOL`
+--
+
+LOCK TABLES `IPAM_IP_POOL` WRITE;
+/*!40000 ALTER TABLE `IPAM_IP_POOL` DISABLE KEYS */;
+INSERT INTO `IPAM_IP_POOL` VALUES (1,'2018-08-17 20:15:12',3,'10.0.0.0/8',4,'ACTIVE','management'),(2,'2018-08-17 20:19:29',2,'192.168.10.0/24',4,'ACTIVE','private1'),(3,'2018-08-17 20:20:08',1,'192.168.20.0/24',4,'ACTIVE','private2');
+/*!40000 ALTER TABLE `IPAM_IP_POOL` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `IPAM_IP_ASSIGNEMENT`
+--
+
+DROP TABLE IF EXISTS `IPAM_IP_ASSIGNEMENT`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `IPAM_IP_ASSIGNEMENT` (
+  `ipam_ip_uuid` int(11) NOT NULL AUTO_INCREMENT,
+  `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `service_instance_id` varchar(255) DEFAULT NULL,
+  `vf_module_id` varchar(255) DEFAULT NULL,
+  `prefix_id` varchar(255) DEFAULT NULL,
+  `external_key` varchar(255) DEFAULT NULL,
+  `ip_address_id` varchar(255) DEFAULT NULL,
+  `ip_address` varchar(255) DEFAULT NULL,
+  `ip_address_type` varchar(255) DEFAULT NULL,
+  `ip_status` varchar(255) DEFAULT NULL,
+  `ip_response_json` TEXT DEFAULT NULL,
+  PRIMARY KEY (`ipam_ip_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `IPAM_IP_ASSIGNEMENT`
+--
+
+LOCK TABLES `IPAM_IP_ASSIGNEMENT` WRITE;
+/*!40000 ALTER TABLE `IPAM_IP_ASSIGNEMENT` DISABLE KEYS */;
+/*!40000 ALTER TABLE `IPAM_IP_ASSIGNEMENT` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2018-08-24 13:02:09
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/listDataFiles.sh b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/listDataFiles.sh
new file mode 100755
index 0000000..a2daad4
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/listDataFiles.sh
@@ -0,0 +1,4 @@
+for file in /Users/dt5972/gerrit/sdnc/oam/installation/sdnc/src/main/resources/*.data.dump
+do
+  echo "*** $file ***"
+done
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/network_model.data.dump b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/network_model.data.dump
new file mode 100644
index 0000000..a6e8d22
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/network_model.data.dump
@@ -0,0 +1,80 @@
+-- MySQL dump 10.13  Distrib 5.6.22, for Linux (x86_64)
+--
+-- Host: sdnctldb01    Database: sdnctl
+-- ------------------------------------------------------
+-- Server version	5.6.36-enterprise-commercial-advanced-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `NETWORK_MODEL`
+--
+
+DROP TABLE IF EXISTS `NETWORK_MODEL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NETWORK_MODEL` (
+  `customization_uuid` varchar(255) NOT NULL,
+  `service_uuid` varchar(255) NOT NULL,
+  `model_yaml` longblob,
+  `invariant_uuid` varchar(255) DEFAULT NULL,
+  `uuid` varchar(255) DEFAULT NULL,
+  `network_type` varchar(255) DEFAULT NULL,
+  `network_role` varchar(255) DEFAULT NULL,
+  `network_technology` varchar(255) DEFAULT NULL,
+  `trunk_network_indicator` char(1) DEFAULT NULL,
+  `network_scope` varchar(255) DEFAULT NULL,
+  `naming_policy` varchar(255) DEFAULT NULL,
+  `ecomp_generated_naming` char(1) DEFAULT NULL,
+  `is_shared_network` char(1) DEFAULT NULL,
+  `is_external_network` char(1) DEFAULT NULL,
+  `is_provider_network` char(1) DEFAULT NULL,
+  `physical_network_name` varchar(255) DEFAULT NULL,
+  `is_bound_to_vpn` char(1) DEFAULT NULL,
+  `vpn_binding` varchar(255) DEFAULT NULL,
+  `use_ipv4` char(1) DEFAULT NULL,
+  `ipv4_dhcp_enabled` char(1) DEFAULT NULL,
+  `ipv4_ip_version` char(1) DEFAULT NULL,
+  `ipv4_cidr_mask` varchar(255) DEFAULT NULL,
+  `eipam_v4_address_plan` varchar(255) DEFAULT NULL,
+  `use_ipv6` char(1) DEFAULT NULL,
+  `ipv6_dhcp_enabled` char(1) DEFAULT NULL,
+  `ipv6_ip_version` char(1) DEFAULT NULL,
+  `ipv6_cidr_mask` varchar(255) DEFAULT NULL,
+  `eipam_v6_address_plan` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`customization_uuid`),
+  KEY `FK_NETWORK_MODEL` (`service_uuid`),
+  CONSTRAINT `FK_NETWORK_MODEL` FOREIGN KEY (`service_uuid`) REFERENCES `SERVICE_MODEL` (`service_uuid`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `NETWORK_MODEL`
+--
+
+LOCK TABLES `NETWORK_MODEL` WRITE;
+/*!40000 ALTER TABLE `NETWORK_MODEL` DISABLE KEYS */;
+INSERT INTO `NETWORK_MODEL` VALUES ('367a8ba9-057a-4506-b106-fbae818597c6','6794ec22-95ff-4b00-8846-b1148e90df54','!!com.att.sdnctl.uebclient.SdncNetworkServiceModel\ndescription: null\nimports:\n- Service_Admin: {file: resource-ServiceAdmin-template.yml}\n- IP_MUX_Demux: {file: resource-IpMuxDemux-template.yml}\n- Tunnel_Xconn: {file: resource-TunnelXconn-template.yml}\n- vHNF for DHV Test: {file: resource-VhnfForDhvTest-template.yml}\nmetadata: {invariantUUID: 7b0fafc1-83df-4590-9460-b5a8d9f9f277, UUID: 6794ec22-95ff-4b00-8846-b1148e90df54,\n  name: SD-WAN, description: \'Standard Wan connector, redoing this for sdnc again\n    as they got already deployed.\', type: Service, category: Network L1-3, serviceEcompNaming: false,\n  serviceHoming: false}\ntopology_template:\n  node_templates:\n    Pri_IP_MUX_Demux 1:\n      type: com.att.d2.resource.vf.IpMuxDemux\n      metadata: {invariantUUID: f110ef53-a0a6-4d72-ab91-fd88a835e8c4, UUID: 79b0a3cc-c5f9-4831-aa72-b2884ed0bd55,\n        customizationUUID: 211bcbd5-de25-41bb-a758-edd32220461d, version: \'1.0\', name: IP_MUX_Demux,\n        description: 1/17, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n    Pri_Service_Admin 5:\n      type: com.att.d2.resource.vf.ServiceAdmin\n      metadata: {invariantUUID: 462edf71-1a3c-487b-bf55-497460ab7de3, UUID: b51acc89-1c55-4586-b82b-6480b16339e9,\n        customizationUUID: 22b1ed87-2ca5-42f5-9e2e-20ad5bfb097e, version: \'1.0\', name: Service_Admin,\n        description: Service Version, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n    Sec_IP_MUX_Demux 3:\n      type: com.att.d2.resource.vf.IpMuxDemux\n      metadata: {invariantUUID: f110ef53-a0a6-4d72-ab91-fd88a835e8c4, UUID: 79b0a3cc-c5f9-4831-aa72-b2884ed0bd55,\n        customizationUUID: 96e090a4-93dd-43a2-9d87-a746ee7e53cd, version: \'1.0\', name: IP_MUX_Demux,\n        description: 1/17, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n    Pri_Tunnel_Xconn 9:\n      type: com.att.d2.resource.vf.TunnelXconn\n      metadata: {invariantUUID: b7a1b78e-6b6b-4b36-9698-8c9530da14af, UUID: a2a57fb1-213d-45a4-acd8-6a0f7b4e54b1,\n        customizationUUID: 5b9bee43-f537-4fb3-9e8b-4de9f714d28a, version: \'1.0\', name: Tunnel_Xconn,\n        description: Tunnel, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n    Sec_Service_Admin 7:\n      type: com.att.d2.resource.vf.ServiceAdmin\n      metadata: {invariantUUID: 462edf71-1a3c-487b-bf55-497460ab7de3, UUID: b51acc89-1c55-4586-b82b-6480b16339e9,\n        customizationUUID: 5431e571-3df5-423a-99bc-0b020ecac97b, version: \'1.0\', name: Service_Admin,\n        description: Service Version, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n    Sec_Tunnel_Xconn 11:\n      type: com.att.d2.resource.vf.TunnelXconn\n      metadata: {invariantUUID: b7a1b78e-6b6b-4b36-9698-8c9530da14af, UUID: a2a57fb1-213d-45a4-acd8-6a0f7b4e54b1,\n        customizationUUID: 367a8ba9-057a-4506-b106-fbae818597c6, version: \'1.0\', name: Tunnel_Xconn,\n        description: Tunnel, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n    vHNF for DHV Test 17:\n      type: com.att.d2.resource.vf.VhnfForDhvTest\n      metadata: {invariantUUID: 6ea0b528-e303-4686-aa77-aa2fcbdccb96, UUID: 619c7cd3-76a9-46a8-b01b-c1f236b14d68,\n        customizationUUID: 2eb202d1-b36b-4c63-821f-4a163abaed42, version: \'1.0\', name: vHNF for DHV Test,\n        description: \'vHNF for DHV testing 1_19_17. \', type: VF, category: Network L2-3,\n        subcategory: Infrastructure}\n  groups:\n    vhnffordhvtest17..VhnfForDhvTest..base_TEST..module-0:\n      type: com.att.d2.groups.VfModule\n      metadata: {vfModuleModelName: VhnfForDhvTest..base_TEST..module-0, vfModuleModelInvariantUUID: f5696ec0-ec71-4916-bf3b-93a654efcba4,\n        vfModuleModelUUID: ebc3d18c-3e62-4c24-bcd6-961e98701a0a, vfModuleModelVersion: \'1\',\n        vfModuleModelCustomizationUUID: 63f9560a-4603-4e3b-8fb7-55f8ea06ee21}\n      properties: {min_vf_module_instances: 1, vf_module_label: base_TEST, max_vf_module_instances: 1,\n        vf_module_type: Base, vf_module_description: null, initial_count: 1, volume_group: false}\n  substitution_mappings:\n    node_type: com.att.d2.service.SdWan\n    capabilities:\n      vHNF for DHV Test 17.disk.write.bytes:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Volume of writes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.write.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.device.write.bytes.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of writes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.write.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      Sec_IP_MUX_Demux 3.feature:\n        type: tosca.capabilities.Node\n        occurrences: [1, UNBOUNDED]\n      vHNF for DHV Test 17.disk.usage:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: The physical size in bytes of the image container on the host,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.device.latency:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average disk latency per device, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: ms, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.latency, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.memory.resident:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Volume of RAM used by the instance on the physical machine,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: MB, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: memory.resident, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.network.outgoing.packets.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of outgoing packets, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: packet/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.outgoing.packets.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.device.write.bytes:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Volume of writes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.write.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.device.allocation:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: The amount of disk per device occupied by the instance on the host machine,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.allocation, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      Pri_Service_Admin 5.feature:\n        type: tosca.capabilities.Node\n        occurrences: [1, UNBOUNDED]\n      vHNF for DHV Test 17.disk.allocation:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: The amount of disk occupied by the instance on the host machine,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.allocation, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.device.write.requests:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of write requests, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: request, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.write.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.attachment:\n        type: tosca.capabilities.Attachment\n        occurrences: [1, UNBOUNDED]\n      vHNF for DHV Test 17.disk.capacity:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: The amount of disk that the instance can see,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.capacity, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.network.incoming.packets.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of incoming packets, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: packet/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.incoming.packets.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.latency:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average disk latency, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: ms, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.latency, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.host:\n        type: tosca.capabilities.Container\n        occurrences: [1, UNBOUNDED]\n        valid_source_types: [tosca.nodes.SoftwareComponent]\n        properties:\n          num_cpus: {type: integer, required: false}\n          disk_size: {type: scalar-unit.size, required: false}\n          cpu_frequency: {type: scalar-unit.frequency, required: false}\n          mem_size: {type: scalar-unit.size, required: false}\n      vHNF for DHV Test 17.disk.device.read.bytes.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of reads, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.read.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.ephemeral.size:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Size of ephemeral disk, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: GB, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.ephemeral.size, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.cpu_util:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average CPU utilization, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: \'%\', description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: cpu_util, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.write.requests:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of write requests, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: request, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.write.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.read.requests:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of read requests, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: request, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.read.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.cpu:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: CPU time used, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: ns, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: cpu, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.write.bytes.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of writes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.write.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.network.incoming.bytes:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of incoming bytes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.incoming.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.scalable:\n        type: tosca.capabilities.Scalable\n        occurrences: [1, UNBOUNDED]\n        properties:\n          max_instances: {type: integer, default: 1, required: false}\n          min_instances: {type: integer, default: 1, required: false}\n          default_instances: {type: integer, required: false}\n      vHNF for DHV Test 17.cpu.delta:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: CPU time used since previous datapoint,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Delta, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: ns, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: cpu.delta, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.instance:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Existence of instance, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: instance, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: instance, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.memory:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Volume of RAM allocated to the instance,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: MB, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: memory, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.read.bytes:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Volume of reads, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.read.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.iops:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average disk iops, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: count/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.iops, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.device.usage:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: The physical size in bytes of the image container on the host per device,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.device.read.requests:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of read requests, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: request, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.read.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      Sec_Service_Admin 7.feature:\n        type: tosca.capabilities.Node\n        occurrences: [1, UNBOUNDED]\n      vHNF for DHV Test 17.disk.device.capacity:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: The amount of disk per device that the instance can see,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.capacity, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.os:\n        type: tosca.capabilities.OperatingSystem\n        occurrences: [1, UNBOUNDED]\n        properties:\n          type: {type: string, required: false}\n          distribution: {type: string, required: false}\n          version: {type: version, required: false}\n          architecture: {type: string, required: false}\n      Sec_Tunnel_Xconn 11.feature:\n        type: tosca.capabilities.Node\n        occurrences: [1, UNBOUNDED]\n      vHNF for DHV Test 17.binding:\n        type: tosca.capabilities.network.Bindable\n        occurrences: [0, UNBOUNDED]\n        valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n      vHNF for DHV Test 17.disk.read.bytes.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of reads, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.read.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.device.read.bytes:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Volume of reads, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.read.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.feature:\n        type: tosca.capabilities.Node\n        occurrences: [1, UNBOUNDED]\n      Pri_Tunnel_Xconn 9.feature:\n        type: tosca.capabilities.Node\n        occurrences: [1, UNBOUNDED]\n      vHNF for DHV Test 17.vcpus:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of virtual CPUs allocated to the instance,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: vcpu, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: vcpus, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.device.iops:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average disk iops per device, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: count/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.iops, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.network.incoming.packets:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of incoming packets, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: packet, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.incoming.packets, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.write.requests.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of write requests, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: request/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.write.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.network.incoming.bytes.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of incoming bytes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.incoming.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.network.outpoing.packets:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of outgoing packets, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: packet, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.outpoing.packets, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.memory.usage:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Volume of RAM used by the instance from the amount of its allocated memory,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: MB, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: memory.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.network.outgoing.bytes:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of outgoing bytes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.outgoing.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.endpoint:\n        type: tosca.capabilities.Endpoint.Admin\n        occurrences: [1, UNBOUNDED]\n        properties:\n          port_name: {type: string, required: false}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          secure: {type: boolean, default: true, required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.network.outgoing.bytes.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of outgoing bytes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.outgoing.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      Pri_IP_MUX_Demux 1.feature:\n        type: tosca.capabilities.Node\n        occurrences: [1, UNBOUNDED]\n      vHNF for DHV Test 17.disk.root.size:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Size of root disk, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: GB, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.root.size, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.device.write.requests.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of write requests, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: request/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.write.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      vHNF for DHV Test 17.disk.device.read.requests.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of read requests, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: request/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.read.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n    requirements:\n      Sec_IP_MUX_Demux 3.dependency:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Node\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.DependsOn\n      Pri_Tunnel_Xconn 9.service_dependency:\n        occurrences: [1, 1]\n        capability: com.att.d2.capabilities.AllottedResource\n        node: tosca.services.Root\n        relationship: tosca.relationships.DependsOn\n      Pri_IP_MUX_Demux 1.dependency:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Node\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.DependsOn\n      Pri_Service_Admin 5.dependency:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Node\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.DependsOn\n      Pri_IP_MUX_Demux 1.service_dependency:\n        occurrences: [1, 1]\n        capability: com.att.d2.capabilities.AllottedResource\n        node: tosca.services.Root\n        relationship: tosca.relationships.DependsOn\n      Pri_Service_Admin 5.service_dependency:\n        occurrences: [1, 1]\n        capability: com.att.d2.capabilities.AllottedResource\n        node: tosca.services.Root\n        relationship: tosca.relationships.DependsOn\n      Sec_IP_MUX_Demux 3.service_dependency:\n        occurrences: [1, 1]\n        capability: com.att.d2.capabilities.AllottedResource\n        node: tosca.services.Root\n        relationship: tosca.relationships.DependsOn\n      vHNF for DHV Test 17.dependency:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Node\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.DependsOn\n      vHNF for DHV Test 17.local_storage:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Attachment\n        node: tosca.nodes.BlockStorage\n        relationship: tosca.relationships.AttachesTo\n      vHNF for DHV Test 17.link:\n        occurrences: [1, 1]\n        capability: tosca.capabilities.network.Linkable\n        relationship: tosca.relationships.network.LinksTo\n      Pri_Tunnel_Xconn 9.dependency:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Node\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.DependsOn\n      Sec_Tunnel_Xconn 11.service_dependency:\n        occurrences: [1, 1]\n        capability: com.att.d2.capabilities.AllottedResource\n        node: tosca.services.Root\n        relationship: tosca.relationships.DependsOn\n      Sec_Service_Admin 7.dependency:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Node\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.DependsOn\n      Sec_Tunnel_Xconn 11.dependency:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Node\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.DependsOn\n      Sec_Service_Admin 7.service_dependency:\n        occurrences: [1, 1]\n        capability: com.att.d2.capabilities.AllottedResource\n        node: tosca.services.Root\n        relationship: tosca.relationships.DependsOn\ntosca_definitions_version: tosca_simple_yaml_1_0\n','b7a1b78e-6b6b-4b36-9698-8c9530da14af','a2a57fb1-213d-45a4-acd8-6a0f7b4e54b1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+/*!40000 ALTER TABLE `NETWORK_MODEL` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2017-10-12 20:48:13
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/sdnctl.dump b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/sdnctl.dump
new file mode 100644
index 0000000..4776666
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/sdnctl.dump
@@ -0,0 +1,3441 @@
+-- MySQL dump 10.13  Distrib 5.6.22, for Linux (x86_64)
+--
+-- Host: sdnctldb01    Database: sdnctl
+-- ------------------------------------------------------
+-- Server version	5.6.27-enterprise-commercial-advanced-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `ACCESS_LOG`
+--
+
+DROP TABLE IF EXISTS `ACCESS_LOG`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `ACCESS_LOG` (
+  `access_log_seq` int(11) NOT NULL AUTO_INCREMENT,
+  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `method` varchar(12) DEFAULT NULL,
+  `version` varchar(12) DEFAULT NULL,
+  `status` varchar(12) DEFAULT NULL,
+  `url` varchar(256) DEFAULT NULL,
+  `remote_address` varchar(128) DEFAULT NULL,
+  PRIMARY KEY (`access_log_seq`)
+) ENGINE=InnoDB AUTO_INCREMENT=1034 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `ADDRESS_PLAN_POLICIES`
+--
+
+DROP TABLE IF EXISTS `ADDRESS_PLAN_POLICIES`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `ADDRESS_PLAN_POLICIES` (
+  `key_name` varchar(255) NOT NULL,
+  `key_value_source_type` varchar(255) NOT NULL,
+  `key_value_source` varchar(255) NOT NULL,
+  PRIMARY KEY (`key_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `AGNOSTIC_NOTIFICATION_URL`
+--
+
+DROP TABLE IF EXISTS `AGNOSTIC_NOTIFICATION_URL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `AGNOSTIC_NOTIFICATION_URL` (
+  `service_type` varchar(128) NOT NULL,
+  `service_instance_id` varchar(128) NOT NULL,
+  `request_id` varchar(128) NOT NULL,
+  `svc_notification_url` varchar(256) NOT NULL,
+  PRIMARY KEY (`service_type`,`service_instance_id`,`request_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `AGNOSTIC_TO_SVC_SPCFC_API`
+--
+
+DROP TABLE IF EXISTS `AGNOSTIC_TO_SVC_SPCFC_API`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `AGNOSTIC_TO_SVC_SPCFC_API` (
+  `operation` varchar(128) NOT NULL,
+  `service` varchar(128) NOT NULL,
+  `service_specific_api` varchar(128) NOT NULL,
+  `async_process` varchar(15) DEFAULT NULL,
+  PRIMARY KEY (`operation`,`service`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `AIC_AVAIL_ZONE_POOL`
+--
+
+DROP TABLE IF EXISTS `AIC_AVAIL_ZONE_POOL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `AIC_AVAIL_ZONE_POOL` (
+  `aic_site_id` varchar(100) NOT NULL,
+  `status` varchar(40) NOT NULL,
+  `availability_zone` varchar(100) NOT NULL,
+  `token` varchar(5) NOT NULL,
+  `vnf_id` varchar(80) DEFAULT NULL,
+  `service_type` varchar(100) NOT NULL,
+  `vnf_type` varchar(20) DEFAULT NULL,
+  `hypervisor` varchar(10) DEFAULT NULL,
+  PRIMARY KEY (`aic_site_id`,`availability_zone`,`token`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `AIC_HOSTNAME`
+--
+
+DROP TABLE IF EXISTS `AIC_HOSTNAME`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `AIC_HOSTNAME` (
+  `hostname` varchar(20) NOT NULL,
+  `cust_id` int(11) NOT NULL,
+  `vendor_code` varchar(1) NOT NULL,
+  `virtual_device_type` varchar(2) DEFAULT NULL,
+  `device_sequence` varchar(3) NOT NULL,
+  `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`hostname`),
+  UNIQUE KEY `hostname` (`hostname`),
+  KEY `IN1_AIC_HOSTNAME` (`cust_id`),
+  CONSTRAINT `AC1_HOSTNAME` FOREIGN KEY (`cust_id`) REFERENCES `CUSTOMER` (`cust_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `AIC_NETWORK`
+--
+
+DROP TABLE IF EXISTS `AIC_NETWORK`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `AIC_NETWORK` (
+  `network_id` varchar(100) NOT NULL,
+  `network_name` varchar(100) DEFAULT NULL,
+  `status` varchar(20) DEFAULT NULL,
+  `tenant_id` varchar(100) DEFAULT NULL,
+  `switch_uuid` varchar(100) DEFAULT NULL,
+  `portgroup_name` varchar(100) DEFAULT NULL,
+  `portgroup_id` varchar(100) DEFAULT NULL,
+  PRIMARY KEY (`network_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `AIC_SITE`
+--
+
+DROP TABLE IF EXISTS `AIC_SITE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `AIC_SITE` (
+  `name` varchar(100) DEFAULT NULL,
+  `aic_site_id` varchar(100) NOT NULL,
+  `vcenter_url` varchar(200) DEFAULT NULL,
+  `vcenter_username` varchar(40) DEFAULT NULL,
+  `vcenter_passwd` varbinary(255) DEFAULT NULL,
+  `city` varchar(100) DEFAULT NULL,
+  `state` varchar(2) DEFAULT NULL,
+  `operational_status` varchar(20) DEFAULT NULL,
+  `oam_gateway_addr` varchar(20) DEFAULT '',
+  PRIMARY KEY (`aic_site_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `AIC_SWITCH`
+--
+
+DROP TABLE IF EXISTS `AIC_SWITCH`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `AIC_SWITCH` (
+  `switch_name` varchar(100) DEFAULT NULL,
+  `physical_network_name` varchar(100) NOT NULL,
+  `aic_site_id` varchar(100) DEFAULT NULL,
+  `uuid` varchar(100) DEFAULT NULL,
+  `availability_zone` varchar(100) DEFAULT NULL,
+  PRIMARY KEY (`physical_network_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `AIC_ZONE_CLOUD_REGION_ID`
+--
+
+DROP TABLE IF EXISTS `AIC_ZONE_CLOUD_REGION_ID`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `AIC_ZONE_CLOUD_REGION_ID` (
+  `zone_region_id` varchar(255) NOT NULL,
+  `cilli_code` varchar(255) NOT NULL,
+  `location_id` varchar(255) NOT NULL DEFAULT '',
+  `city_state_country` varchar(255) NOT NULL DEFAULT '',
+  PRIMARY KEY (`zone_region_id`,`cilli_code`,`location_id`,`city_state_country`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `ALLOCATION_ITEM`
+--
+
+DROP TABLE IF EXISTS `ALLOCATION_ITEM`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `ALLOCATION_ITEM` (
+  `allocation_item_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `resource_id` bigint(20) NOT NULL,
+  `application_id` varchar(50) NOT NULL,
+  `resource_set_id` varchar(200) NOT NULL,
+  `resource_union_id` varchar(200) NOT NULL,
+  `resource_share_group_list` varchar(200) DEFAULT NULL,
+  `lt_used` bigint(20) DEFAULT NULL,
+  `ll_label` varchar(50) DEFAULT NULL,
+  `rr_used` varchar(200) DEFAULT NULL,
+  `allocation_time` datetime NOT NULL,
+  PRIMARY KEY (`allocation_item_id`),
+  UNIQUE KEY `allocation_item_id` (`allocation_item_id`),
+  UNIQUE KEY `IX2_ALLOCATION_ITEM` (`resource_id`,`resource_set_id`),
+  KEY `IX1_ALLOCATION_ITEM` (`resource_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=5764 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `ALLOTTED_RESOURCE_MODEL`
+--
+
+DROP TABLE IF EXISTS `ALLOTTED_RESOURCE_MODEL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `ALLOTTED_RESOURCE_MODEL` (
+  `customization_uuid` varchar(255) NOT NULL,
+  `model_yaml` longblob,
+  `invariant_uuid` varchar(255) DEFAULT NULL,
+  `uuid` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  `naming_policy` varchar(255) DEFAULT NULL,
+  `ecomp_generated_naming` char(1) DEFAULT NULL,
+  `depending_service` varchar(255) DEFAULT NULL,
+  `role` varchar(255) DEFAULT NULL,
+  `type` varchar(255) DEFAULT NULL,
+  `service_dependency` varchar(255) DEFAULT NULL,
+  `allotted_resource_type` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `ALTS_CREDENTIALS`
+--
+
+DROP TABLE IF EXISTS `ALTS_CREDENTIALS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `ALTS_CREDENTIALS` (
+  `alts_username` varchar(255) NOT NULL,
+  `alts_password` varbinary(255) NOT NULL,
+  PRIMARY KEY (`alts_username`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `ASDC_ARTIFACTS`
+--
+
+DROP TABLE IF EXISTS `ASDC_ARTIFACTS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `ASDC_ARTIFACTS` (
+  `asdc_artifacts_id` int(11) NOT NULL AUTO_INCREMENT,
+  `service_uuid` varchar(50) DEFAULT NULL,
+  `distribution_id` varchar(50) DEFAULT NULL,
+  `service_name` varchar(255) DEFAULT NULL,
+  `service_description` varchar(255) DEFAULT NULL,
+  `resource_uuid` varchar(255) DEFAULT NULL,
+  `resource_instance_name` varchar(255) DEFAULT NULL,
+  `resource_name` varchar(255) DEFAULT NULL,
+  `resource_version` varchar(50) DEFAULT NULL,
+  `resource_type` varchar(50) DEFAULT NULL,
+  `artifact_uuid` varchar(50) DEFAULT NULL,
+  `artifact_type` varchar(50) DEFAULT NULL,
+  `artifact_version` varchar(25) DEFAULT NULL,
+  `artifact_description` varchar(255) DEFAULT NULL,
+  `internal_version` int(11) DEFAULT NULL,
+  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `artifact_name` varchar(255) DEFAULT NULL,
+  `artifact_content` longtext,
+  PRIMARY KEY (`asdc_artifacts_id`),
+  UNIQUE KEY `asdc_artifacts_id` (`asdc_artifacts_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `ASDC_REFERENCE`
+--
+
+DROP TABLE IF EXISTS `ASDC_REFERENCE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `ASDC_REFERENCE` (
+  `asdc_reference_id` int(11) NOT NULL AUTO_INCREMENT,
+  `service_type` varchar(50) DEFAULT NULL,
+  `vnf_type` varchar(50) DEFAULT NULL,
+  `vnfc_type` varchar(50) DEFAULT NULL,
+  `file_category` varchar(50) DEFAULT NULL,
+  `action` varchar(50) DEFAULT NULL,
+  `artifact_type` varchar(50) DEFAULT NULL,
+  `artifact_name` varchar(255) NOT NULL,
+  PRIMARY KEY (`asdc_reference_id`),
+  UNIQUE KEY `asdc_reference_id` (`asdc_reference_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+
+--
+-- Table structure for table `BLOB_TEST`
+--
+
+DROP TABLE IF EXISTS `BLOB_TEST`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `BLOB_TEST` (
+  `seq` int(11) NOT NULL AUTO_INCREMENT,
+  `odl` varchar(20) DEFAULT NULL,
+  `communities` mediumblob,
+  `status` enum('NEW','COMPLETE','FAILED') NOT NULL DEFAULT 'NEW',
+  `retry_count` int(11) DEFAULT '-1',
+  PRIMARY KEY (`seq`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `CAPABILITY`
+--
+
+DROP TABLE IF EXISTS `CAPABILITY`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `CAPABILITY` (
+  `capability_id` int(11) NOT NULL AUTO_INCREMENT,
+  `capability_name` varchar(50) NOT NULL,
+  `implementation_name` varchar(100) NOT NULL,
+  `operation_name` varchar(50) NOT NULL,
+  `operation_description` varchar(100) NOT NULL,
+  `input_definition` longtext,
+  `output_definition` longtext,
+  `dependency_definition` longtext,
+  `tags` varchar(100) DEFAULT NULL,
+  PRIMARY KEY (`capability_id`),
+  UNIQUE KEY `capability_id` (`capability_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `CITY_CODE`
+--
+
+DROP TABLE IF EXISTS `CITY_CODE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `CITY_CODE` (
+  `city_code_id` int(11) NOT NULL AUTO_INCREMENT,
+  `city_code` varchar(3) NOT NULL,
+  `city` varchar(150) NOT NULL,
+  `state` varchar(10) NOT NULL,
+  `country_code` varchar(10) NOT NULL,
+  PRIMARY KEY (`city_code_id`),
+  KEY `IN1_CITY_CODE` (`city`,`state`,`country_code`)
+) ENGINE=InnoDB AUTO_INCREMENT=37822 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `CLI_UPDATES`
+--
+
+DROP TABLE IF EXISTS `CLI_UPDATES`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `CLI_UPDATES` (
+  `seq` int(11) NOT NULL AUTO_INCREMENT,
+  `status` enum('NEW','COMPLETE','FAILED') NOT NULL DEFAULT 'NEW',
+  `create_timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+  `last_processed_timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `target_address` varchar(128) DEFAULT NULL,
+  `cli_text` varchar(128) DEFAULT NULL,
+  PRIMARY KEY (`seq`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `CONFIGFILES`
+--
+
+DROP TABLE IF EXISTS `CONFIGFILES`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `CONFIGFILES` (
+  `config_file_id` int(11) NOT NULL AUTO_INCREMENT,
+  `external_version` varchar(50) DEFAULT NULL,
+  `data_source` varchar(25) DEFAULT NULL,
+  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `service_instance_id` varchar(50) DEFAULT NULL,
+  `vnf_type` varchar(50) DEFAULT NULL,
+  `vnfc_type` varchar(50) DEFAULT NULL,
+  `file_category` varchar(50) DEFAULT NULL,
+  `file_name` varchar(255) DEFAULT NULL,
+  `file_content` longtext,
+  `action` varchar(50) DEFAULT NULL,
+  `vnf_id` varchar(50) DEFAULT NULL,
+  `vm_name` varchar(50) DEFAULT NULL,
+  `vnf_name` varchar(50) DEFAULT NULL,
+  PRIMARY KEY (`config_file_id`),
+  UNIQUE KEY `config_file_id` (`config_file_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `CONFIGURE_ACTION_DG`
+--
+
+DROP TABLE IF EXISTS `CONFIGURE_ACTION_DG`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `CONFIGURE_ACTION_DG` (
+  `configure_action_dg_id` int(11) NOT NULL AUTO_INCREMENT,
+  `vnf_type` varchar(50) DEFAULT NULL,
+  `action` varchar(50) DEFAULT NULL,
+  `init_config_dg` varchar(50) DEFAULT NULL,
+  `generate_config_dg` varchar(50) DEFAULT NULL,
+  `download_config_dg` varchar(50) DEFAULT NULL,
+  PRIMARY KEY (`configure_action_dg_id`),
+  UNIQUE KEY `configure_action_dg_id` (`configure_action_dg_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `CONFIG_CONTENT`
+--
+
+DROP TABLE IF EXISTS `CONFIG_CONTENT`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `CONFIG_CONTENT` (
+  `config_content_id` int(11) NOT NULL AUTO_INCREMENT,
+  `request_id` varchar(50) NOT NULL,
+  `content_type` varchar(50) NOT NULL,
+  `template_name` varchar(50) DEFAULT NULL,
+  `originator_id` varchar(50) DEFAULT NULL,
+  `service_description` varchar(100) DEFAULT NULL,
+  `action` varchar(50) DEFAULT NULL,
+  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `service_type` varchar(50) DEFAULT NULL,
+  `service_instance_id` varchar(50) DEFAULT NULL,
+  `vnf_id` varchar(50) DEFAULT NULL,
+  `vnf_name` varchar(50) DEFAULT NULL,
+  `vm_name` varchar(50) DEFAULT NULL,
+  `vnf_type` varchar(50) DEFAULT NULL,
+  `vnfc_type` varchar(50) DEFAULT NULL,
+  `host_ip_address` varchar(50) DEFAULT NULL,
+  `config_indicator` varchar(25) DEFAULT NULL,
+  `pending_delete` varchar(1) DEFAULT NULL,
+  `content` longtext,
+  PRIMARY KEY (`config_content_id`),
+  UNIQUE KEY `config_content_id` (`creation_date`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `CONFIG_FILE_REFERENCE`
+--
+
+DROP TABLE IF EXISTS `CONFIG_FILE_REFERENCE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `CONFIG_FILE_REFERENCE` (
+  `config_file_reference_id` int(11) NOT NULL AUTO_INCREMENT,
+  `site_location` varchar(50) DEFAULT NULL,
+  `vnf_type` varchar(50) DEFAULT NULL,
+  `import_type` varchar(50) DEFAULT NULL,
+  `file_type` varchar(50) DEFAULT NULL,
+  `source_server_name` varchar(255) DEFAULT NULL,
+  `source_file_path` varchar(255) DEFAULT NULL,
+  `target_file_path` varchar(255) DEFAULT NULL,
+  `name` varchar(50) DEFAULT NULL,
+  `file_name` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`config_file_reference_id`),
+  UNIQUE KEY `config_file_reference_id` (`config_file_reference_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `CONFIG_TRANSACTION_LOG`
+--
+
+DROP TABLE IF EXISTS `CONFIG_TRANSACTION_LOG`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `CONFIG_TRANSACTION_LOG` (
+  `config_transaction_log_id` varchar(50) NOT NULL,
+  `request_id` varchar(50) DEFAULT NULL,
+  `message_type` varchar(100) DEFAULT NULL,
+  `creation_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `message` longtext,
+  PRIMARY KEY (`config_transaction_log_id`),
+  UNIQUE KEY `config_transaction_log_id` (`config_transaction_log_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `COUNTRY_ASN_MAPPING`
+--
+
+DROP TABLE IF EXISTS `COUNTRY_ASN_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `COUNTRY_ASN_MAPPING` (
+  `asn` int(5) NOT NULL,
+  `iso_2char` varchar(5) NOT NULL,
+  `iso_3char` varchar(5) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `CUSTOMER`
+--
+
+DROP TABLE IF EXISTS `CUSTOMER`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `CUSTOMER` (
+  `cust_id` int(11) NOT NULL AUTO_INCREMENT,
+  `customer_name` varchar(256) DEFAULT NULL,
+  `grua` varchar(4) NOT NULL,
+  `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`cust_id`),
+  UNIQUE KEY `IU1_CUSTOMER` (`customer_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=155 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `CUSTOMER2CONNECTION_MAPPING`
+--
+
+DROP TABLE IF EXISTS `CUSTOMER2CONNECTION_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `CUSTOMER2CONNECTION_MAPPING` (
+  `customer2connection_id` int(11) NOT NULL AUTO_INCREMENT,
+  `service_instance_id` varchar(80) NOT NULL,
+  `instance_type` varchar(20) NOT NULL,
+  `originating_service_instance_id` varchar(80) DEFAULT NULL,
+  `originating_service_type` varchar(20) DEFAULT NULL,
+  `service_type` varchar(30) DEFAULT NULL,
+  `connection_id` varchar(100) NOT NULL,
+  `status` varchar(20) DEFAULT NULL,
+  PRIMARY KEY (`customer2connection_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `CUSTOMER2CONNECTION_MAPPING_NEW`
+--
+
+DROP TABLE IF EXISTS `CUSTOMER2CONNECTION_MAPPING_NEW`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `CUSTOMER2CONNECTION_MAPPING_NEW` (
+  `customer2connection_id` int(11) NOT NULL AUTO_INCREMENT,
+  `service_instance_id` varchar(80) NOT NULL,
+  `instance_type` varchar(20) NOT NULL,
+  `originating_service_instance_id` varchar(80) DEFAULT NULL,
+  `originating_service_type` varchar(20) DEFAULT NULL,
+  `service_type` varchar(30) DEFAULT NULL,
+  `connection_id` varchar(100) NOT NULL,
+  `status` varchar(100) DEFAULT NULL,
+  PRIMARY KEY (`customer2connection_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `DATA_OBJECT_MAPPING`
+--
+
+DROP TABLE IF EXISTS `DATA_OBJECT_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `DATA_OBJECT_MAPPING` (
+  `serial_key` int(11) NOT NULL AUTO_INCREMENT,
+  `data_object_key` varchar(100) NOT NULL,
+  `data_object_type` varchar(50) NOT NULL,
+  `service_type` varchar(50) NOT NULL,
+  `data_object_key2` varchar(100) NOT NULL,
+  `data_object_key2_type` varchar(50) NOT NULL,
+  `data_object_key3` varchar(100) DEFAULT NULL,
+  `data_object_key3_type` varchar(50) DEFAULT NULL,
+  `service` varchar(50) DEFAULT NULL,
+  PRIMARY KEY (`serial_key`),
+  KEY `IX1_DATA_OBJECT_MAPPING` (`data_object_key`,`data_object_type`,`service_type`),
+  KEY `IX2_DATA_OBJECT_MAPPING` (`service_type`,`data_object_key2`,`data_object_key2_type`)
+) ENGINE=InnoDB AUTO_INCREMENT=3211 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `DEVICE2CONNECTION_MAPPING`
+--
+
+DROP TABLE IF EXISTS `DEVICE2CONNECTION_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `DEVICE2CONNECTION_MAPPING` (
+  `vnf_host_name` varchar(100) NOT NULL,
+  `e2e_vpn_key` varchar(30) NOT NULL,
+  `service_type` varchar(30) NOT NULL,
+  `connection_id` varchar(100) NOT NULL,
+  PRIMARY KEY (`vnf_host_name`,`e2e_vpn_key`,`service_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `DEVICE2IPADDRESS_CONSUMPTION`
+--
+
+DROP TABLE IF EXISTS `DEVICE2IPADDRESS_CONSUMPTION`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `DEVICE2IPADDRESS_CONSUMPTION` (
+  `serial_key` int(11) NOT NULL AUTO_INCREMENT,
+  `device_id` varchar(100) NOT NULL,
+  `device_type` varchar(30) NOT NULL,
+  `ip_version` varchar(10) NOT NULL,
+  `consumption_key` varchar(100) NOT NULL,
+  `logical_interface_service_id` varchar(100) NOT NULL,
+  `address_type` varchar(30) NOT NULL,
+  `ip_consumed` varchar(50) NOT NULL,
+  `vnf_type` varchar(30) NOT NULL,
+  `secondary_key` varchar(100) DEFAULT NULL,
+  PRIMARY KEY (`serial_key`),
+  KEY `IX1_DEVICEIPADDRESS_CONSUMPTION` (`device_id`,`device_type`,`ip_version`)
+) ENGINE=InnoDB AUTO_INCREMENT=1357 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `DEVICE2IPADDRESS_MAPPING`
+--
+
+DROP TABLE IF EXISTS `DEVICE2IPADDRESS_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `DEVICE2IPADDRESS_MAPPING` (
+  `serial_key` int(11) NOT NULL AUTO_INCREMENT,
+  `device_id` varchar(100) NOT NULL,
+  `device_type` varchar(30) NOT NULL,
+  `secondary_key` varchar(100) NOT NULL,
+  `secondary_key_type` varchar(30) NOT NULL,
+  `address` varchar(50) NOT NULL,
+  `address_type` varchar(30) NOT NULL,
+  `ip_version` varchar(10) NOT NULL,
+  `length` int(11) NOT NULL,
+  `status` varchar(30) NOT NULL,
+  PRIMARY KEY (`serial_key`),
+  KEY `IX1_DEVICE2IPADDRESS_MAPPING` (`device_id`,`device_type`,`secondary_key`,`secondary_key_type`,`address`,`address_type`)
+) ENGINE=InnoDB AUTO_INCREMENT=4734 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `DEVICE_AUTHENTICATION`
+--
+
+DROP TABLE IF EXISTS `DEVICE_AUTHENTICATION`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `DEVICE_AUTHENTICATION` (
+  `device_authentication_id` int(11) NOT NULL AUTO_INCREMENT,
+  `vnf_type` varchar(50) DEFAULT NULL,
+  `user_name` varchar(50) DEFAULT NULL,
+  `password` varchar(100) DEFAULT NULL,
+  `protocol` varchar(100) DEFAULT NULL,
+  `port_number` int(11) DEFAULT NULL,
+  PRIMARY KEY (`device_authentication_id`),
+  UNIQUE KEY `device_authentication_id` (`device_authentication_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `DEVICE_INTERFACE_LOG`
+--
+
+DROP TABLE IF EXISTS `DEVICE_INTERFACE_LOG`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `DEVICE_INTERFACE_LOG` (
+  `device_interface_log_id` int(11) NOT NULL AUTO_INCREMENT,
+  `service_instance_id` varchar(50) DEFAULT NULL,
+  `request_id` varchar(50) DEFAULT NULL,
+  `creation_date` datetime NOT NULL,
+  `log` longtext,
+  PRIMARY KEY (`device_interface_log_id`),
+  UNIQUE KEY `device_interface_log_id` (`device_interface_log_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `DEVICE_INTERFACE_PROTOCOL`
+--
+
+DROP TABLE IF EXISTS `DEVICE_INTERFACE_PROTOCOL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `DEVICE_INTERFACE_PROTOCOL` (
+  `device_interface_protocol_id` int(11) NOT NULL AUTO_INCREMENT,
+  `vnf_type` varchar(50) DEFAULT NULL,
+  `protocol` varchar(50) DEFAULT NULL,
+  `module` varchar(50) DEFAULT NULL,
+  `dg_rpc` varchar(50) DEFAULT NULL,
+  PRIMARY KEY (`device_interface_protocol_id`),
+  UNIQUE KEY `device_interface_protocol_id` (`device_interface_protocol_id`),
+  UNIQUE KEY `vnf_type` (`vnf_type`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `DOWNLOAD_CONFIG_TEMPLATE`
+--
+
+DROP TABLE IF EXISTS `DOWNLOAD_CONFIG_TEMPLATE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `DOWNLOAD_CONFIG_TEMPLATE` (
+  `download_config_template_id` int(11) NOT NULL AUTO_INCREMENT,
+  `vnf_type` varchar(50) NOT NULL,
+  `protocol` varchar(50) NOT NULL,
+  `template` longtext,
+  PRIMARY KEY (`download_config_template_id`),
+  UNIQUE KEY `download_config_template_id` (`download_config_template_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `DOWNLOAD_DG_REFERENCE`
+--
+
+DROP TABLE IF EXISTS `DOWNLOAD_DG_REFERENCE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `DOWNLOAD_DG_REFERENCE` (
+  `download_dg_reference_id` int(11) NOT NULL AUTO_INCREMENT,
+  `protocol` varchar(50) NOT NULL,
+  `download_config_dg` varchar(50) NOT NULL,
+  PRIMARY KEY (`download_dg_reference_id`),
+  UNIQUE KEY `download_dg_reference_id` (`download_dg_reference_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `EIPAM_CLIENT_KEY_INDEX`
+--
+
+DROP TABLE IF EXISTS `EIPAM_CLIENT_KEY_INDEX`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `EIPAM_CLIENT_KEY_INDEX` (
+  `vnf_name_prefix` varchar(100) NOT NULL,
+  `index_number` int(11) NOT NULL,
+  PRIMARY KEY (`vnf_name_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `EIPAM_IP_ASSIGNMENTS`
+--
+
+DROP TABLE IF EXISTS `EIPAM_IP_ASSIGNMENTS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `EIPAM_IP_ASSIGNMENTS` (
+  `plan_name` varchar(40) NOT NULL,
+  `client_key` varchar(100) NOT NULL,
+  `service_type` varchar(40) NOT NULL,
+  `ip_address` varchar(40) DEFAULT NULL,
+  `prefix_length` int(2) DEFAULT NULL,
+  `status` varchar(255) DEFAULT NULL,
+  `service_instance_id` varchar(80) DEFAULT NULL,
+  `last_modified_ts` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `prev_status` varchar(20) DEFAULT NULL,
+  `info` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`plan_name`,`client_key`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `EIPAM_IP_POOLS`
+--
+
+DROP TABLE IF EXISTS `EIPAM_IP_POOLS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `EIPAM_IP_POOLS` (
+  `pool_id` int(11) NOT NULL AUTO_INCREMENT,
+  `key_name` varchar(50) NOT NULL,
+  `key_value` varchar(255) NOT NULL,
+  `level` int(2) NOT NULL,
+  `plan_name` varchar(50) NOT NULL,
+  `address_family` varchar(10) NOT NULL,
+  `parent_pool` varchar(255) NOT NULL,
+  `service_instance_id` varchar(255) DEFAULT NULL,
+  `network_id` varchar(255) DEFAULT NULL,
+  `created_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `delete_failure` varchar(20) DEFAULT NULL,
+  `delete_request_id` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`pool_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=339 DEFAULT CHARSET=latin1 COMMENT='This table will capture the pools being created by SDN-C in EIPAM_IP_POOLS. There is no data migration for existing vPE pool data.';
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `EIPAM_IP_SUBNETS`
+--
+
+DROP TABLE IF EXISTS `EIPAM_IP_SUBNETS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `EIPAM_IP_SUBNETS` (
+  `entity_id` int(6) NOT NULL,
+  `service_type` varchar(40) NOT NULL,
+  `plan_name` varchar(50) NOT NULL,
+  `address_family` varchar(10) NOT NULL,
+  `ip_address` varchar(40) NOT NULL,
+  `prefix_length` int(3) NOT NULL,
+  `status` varchar(20) NOT NULL,
+  `last_modified_ts` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `network_id` varchar(255) DEFAULT NULL,
+  `pool_id` int(11) DEFAULT NULL,
+  `dealloc_failure` varchar(20) DEFAULT NULL,
+  `dealloc_request_id` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`entity_id`),
+  KEY `FK_EIPAM_IP_SUBNETS_EIPAM_IP_POOLS` (`pool_id`),
+  CONSTRAINT `EIPAM_IP_SUBNETS_ibfk_1` FOREIGN KEY (`pool_id`) REFERENCES `EIPAM_IP_POOLS` (`pool_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
+  CONSTRAINT `FK_EIPAM_IP_SUBNETS_EIPAM_IP_POOLS` FOREIGN KEY (`pool_id`) REFERENCES `EIPAM_IP_POOLS` (`pool_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `EIPAM_IP_SUBNET_KEYS`
+--
+
+DROP TABLE IF EXISTS `EIPAM_IP_SUBNET_KEYS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `EIPAM_IP_SUBNET_KEYS` (
+  `entity_id` int(6) NOT NULL,
+  `key_name` varchar(50) NOT NULL,
+  `key_value` varchar(255) NOT NULL,
+  `level` int(2) NOT NULL,
+  PRIMARY KEY (`entity_id`,`key_name`,`key_value`,`level`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `EIPAM_REQUEST_KEY`
+--
+
+DROP TABLE IF EXISTS `EIPAM_REQUEST_KEY`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `EIPAM_REQUEST_KEY` (
+  `key_name_1` varchar(50) NOT NULL,
+  `address_family` varchar(4) NOT NULL,
+  `serial_key` int(2) NOT NULL AUTO_INCREMENT,
+  `plan_name` varchar(50) NOT NULL,
+  `request_length` int(2) NOT NULL,
+  `pools_length` int(2) NOT NULL,
+  `plan_length` int(2) NOT NULL,
+  `key_name_0` varchar(50) NOT NULL,
+  `key_name_type_0` varchar(255) NOT NULL,
+  `key_name_type_1` varchar(255) NOT NULL,
+  `prefix_length` int(2) NOT NULL,
+  `group_flag` char(1) NOT NULL,
+  `address_type` varchar(20) DEFAULT NULL,
+  PRIMARY KEY (`key_name_1`,`address_family`),
+  UNIQUE KEY `IX1_EIPAM_REQUEST_KEY` (`serial_key`)
+) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `EXTERNAL_DATA`
+--
+
+DROP TABLE IF EXISTS `EXTERNAL_DATA`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `EXTERNAL_DATA` (
+  `external_data_id` int(11) NOT NULL AUTO_INCREMENT,
+  `request_id` int(11) DEFAULT NULL,
+  `param_name` varchar(30) NOT NULL,
+  `param_value` varchar(50) NOT NULL,
+  PRIMARY KEY (`external_data_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `FLOW_UPDATES`
+--
+
+DROP TABLE IF EXISTS `FLOW_UPDATES`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `FLOW_UPDATES` (
+  `seq` int(11) NOT NULL AUTO_INCREMENT,
+  `status` enum('NEW','COMPLETE','FAILED') NOT NULL DEFAULT 'NEW',
+  `create_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `last_processed_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `odl` varchar(128) DEFAULT NULL,
+  `address_family` enum('IPV4','IPV6') DEFAULT NULL,
+  `destination_prefix` varchar(50) DEFAULT NULL,
+  `communities` varchar(6000) DEFAULT NULL,
+  `route_key` varchar(50) DEFAULT NULL,
+  PRIMARY KEY (`seq`)
+) ENGINE=InnoDB AUTO_INCREMENT=276 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `GENERIC_L3_NETWORK`
+--
+
+DROP TABLE IF EXISTS `GENERIC_L3_NETWORK`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `GENERIC_L3_NETWORK` (
+  `network_id` varchar(80) NOT NULL,
+  `network_name` varchar(80) DEFAULT NULL,
+  `network_type` varchar(80) DEFAULT NULL,
+  `network_role` varchar(80) DEFAULT NULL,
+  `network_technology` varchar(80) DEFAULT NULL,
+  `neutron_network_id` varchar(80) DEFAULT NULL,
+  `is_bound_to_vpn` tinyint(1) DEFAULT NULL,
+  `orchestration_status` varchar(20) DEFAULT NULL,
+  `heat_stack_id` varchar(80) DEFAULT NULL,
+  `mso_catalog_key` varchar(80) DEFAULT NULL,
+  `service_id` varchar(80) NOT NULL,
+  `tenant_id` varchar(80) NOT NULL,
+  `physical_location_id` varchar(20) DEFAULT NULL,
+  `network_role_instance` varchar(80) NOT NULL,
+  PRIMARY KEY (`network_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `GENERIC_L3_NETWORK_SUBNET`
+--
+
+DROP TABLE IF EXISTS `GENERIC_L3_NETWORK_SUBNET`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `GENERIC_L3_NETWORK_SUBNET` (
+  `network_id` varchar(80) NOT NULL,
+  `subnet_id` varchar(80) NOT NULL,
+  `neutron_subnet_id` varchar(80) DEFAULT NULL,
+  `gateway_address` varchar(45) NOT NULL,
+  `network_start_address` varchar(45) NOT NULL,
+  `cidr_mask` varchar(20) NOT NULL,
+  `ip_version` char(1) NOT NULL,
+  `orchestration_status` varchar(64) NOT NULL,
+  `dhcp_enabled` tinyint(1) NOT NULL,
+  `dhcp_start` varchar(45) DEFAULT NULL,
+  `dhcp_end` varchar(45) DEFAULT NULL,
+  PRIMARY KEY (`network_id`,`subnet_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `GENERIC_L3_NETWORK_VPN_BINDING`
+--
+
+DROP TABLE IF EXISTS `GENERIC_L3_NETWORK_VPN_BINDING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `GENERIC_L3_NETWORK_VPN_BINDING` (
+  `network_id` varchar(80) NOT NULL,
+  `vpn_id` varchar(80) NOT NULL,
+  PRIMARY KEY (`network_id`,`vpn_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `GENERIC_RESOURCE_NAME`
+--
+
+DROP TABLE IF EXISTS `GENERIC_RESOURCE_NAME`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `GENERIC_RESOURCE_NAME` (
+  `type` varchar(50) NOT NULL,
+  `name` varchar(255) NOT NULL,
+  `prefix` varchar(255) NULL,
+  `name_index` int(11) NULL,
+  `context_id` varchar(255) NULL,
+  PRIMARY KEY (`type`,`name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `GENERIC_VNF`
+--
+
+DROP TABLE IF EXISTS `GENERIC_VNF`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `GENERIC_VNF` (
+  `vnf_id` varchar(80) NOT NULL,
+  `vnf_name` varchar(80) NOT NULL,
+  `vnf_type` varchar(200) NOT NULL,
+  `vnf_name2` varchar(80) DEFAULT NULL,
+  `service_id` varchar(80) NOT NULL,
+  `equipment_role` varchar(80) NOT NULL,
+  `orchestration_status` varchar(20) DEFAULT NULL,
+  `prov_status` varchar(20) DEFAULT NULL,
+  `heat_stack_id` varchar(80) DEFAULT NULL,
+  `mso_catalog_key` varchar(80) DEFAULT NULL,
+  `regional_resource_zone` varchar(80) DEFAULT NULL,
+  `operational_state` varchar(80) DEFAULT NULL,
+  `license_key` varchar(80) DEFAULT NULL,
+  `ipv4_oam_address` varchar(20) DEFAULT NULL,
+  `ipv4_loopback0_address` varchar(20) DEFAULT NULL,
+  `nm_lan_v6_address` varchar(40) DEFAULT NULL,
+  `management_v6_address` varchar(40) DEFAULT NULL,
+  `management_option` varchar(45) DEFAULT NULL,
+  `vcpu` varchar(45) DEFAULT NULL,
+  `vmemory` varchar(45) DEFAULT NULL,
+  `vdisk` varchar(45) DEFAULT NULL,
+  `vcpu_units` varchar(45) DEFAULT NULL,
+  `vmemory_units` varchar(45) DEFAULT NULL,
+  `vdisk_units` varchar(45) DEFAULT NULL,
+  PRIMARY KEY (`vnf_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `GENERIC_VNF_L3_NETWORK`
+--
+
+DROP TABLE IF EXISTS `GENERIC_VNF_L3_NETWORK`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `GENERIC_VNF_L3_NETWORK` (
+  `vnf_id` varchar(80) NOT NULL,
+  `network_id` varchar(80) NOT NULL,
+  PRIMARY KEY (`vnf_id`,`network_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `GENERIC_VNF_LICENSE_MANAGEMENT`
+--
+
+DROP TABLE IF EXISTS `GENERIC_VNF_LICENSE_MANAGEMENT`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `GENERIC_VNF_LICENSE_MANAGEMENT` (
+  `vnf_id` varchar(80) NOT NULL,
+  `att_uuid` varchar(80) NOT NULL,
+  PRIMARY KEY (`vnf_id`,`att_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `GENERIC_VNF_LINTERFACE`
+--
+
+DROP TABLE IF EXISTS `GENERIC_VNF_LINTERFACE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `GENERIC_VNF_LINTERFACE` (
+  `vnf_id` varchar(80) NOT NULL,
+  `interface_name` varchar(255) NOT NULL,
+  `interface_role` varchar(45) DEFAULT NULL,
+  `v6_wan_link_ip` varchar(45) DEFAULT NULL,
+  `selflink` varchar(128) DEFAULT NULL,
+  `interface_id` varchar(45) DEFAULT NULL,
+  `macaddr` varchar(64) DEFAULT NULL,
+  `network_name` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`vnf_id`,`interface_name`),
+  KEY `FK_GENERIC_VNF_LINTERFACE_GENERIC_VNF_IDX` (`vnf_id`),
+  CONSTRAINT `FK_GENERIC_VNF_LINTERFACE_GENERIC_VNF` FOREIGN KEY (`vnf_id`) REFERENCES `GENERIC_VNF` (`vnf_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `GENERIC_VNF_PSERVER`
+--
+
+DROP TABLE IF EXISTS `GENERIC_VNF_PSERVER`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `GENERIC_VNF_PSERVER` (
+  `vnf_id` varchar(64) NOT NULL,
+  `hostname` varchar(255) NOT NULL,
+  PRIMARY KEY (`vnf_id`,`hostname`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `GENERIC_VNF_SERVICE_INSTANCE`
+--
+
+DROP TABLE IF EXISTS `GENERIC_VNF_SERVICE_INSTANCE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `GENERIC_VNF_SERVICE_INSTANCE` (
+  `vnf_id` varchar(64) NOT NULL,
+  `service_instance_id` varchar(255) NOT NULL,
+  `relationship_key` varchar(64) NOT NULL,
+  `relationship_value` varchar(64) DEFAULT NULL,
+  `global_customer_id` varchar(255) DEFAULT NULL,
+  `service_type` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`vnf_id`,`service_instance_id`,`relationship_key`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `GENERIC_VNF_VNF_IMAGE`
+--
+
+DROP TABLE IF EXISTS `GENERIC_VNF_VNF_IMAGE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `GENERIC_VNF_VNF_IMAGE` (
+  `vnf_id` varchar(64) NOT NULL,
+  `att_uuid` varchar(255) NOT NULL,
+  PRIMARY KEY (`vnf_id`,`att_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `GENERIC_VNF_VSERVER`
+--
+
+DROP TABLE IF EXISTS `GENERIC_VNF_VSERVER`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `GENERIC_VNF_VSERVER` (
+  `vnf_id` varchar(80) NOT NULL,
+  `vserver_id` varchar(128) NOT NULL,
+  `tenant_id` varchar(128) DEFAULT NULL,
+  PRIMARY KEY (`vnf_id`,`vserver_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `GENERIC_VPN_BINDING`
+--
+
+DROP TABLE IF EXISTS `GENERIC_VPN_BINDING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `GENERIC_VPN_BINDING` (
+  `vpn_id` varchar(80) NOT NULL,
+  `vpn_name` varchar(80) NOT NULL,
+  `global_route_target` varchar(80) NOT NULL,
+  PRIMARY KEY (`vpn_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `GET_CONFIG_TEMPLATE`
+--
+
+DROP TABLE IF EXISTS `GET_CONFIG_TEMPLATE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `GET_CONFIG_TEMPLATE` (
+  `get_config_template_id` int(11) NOT NULL AUTO_INCREMENT,
+  `vnf_type` varchar(50) NOT NULL,
+  `device_interface_protocol_id` int(11) NOT NULL,
+  `xml_processing` varchar(1) DEFAULT NULL,
+  `xml_protocol` varchar(30) DEFAULT NULL,
+  `template` longtext,
+  PRIMARY KEY (`get_config_template_id`),
+  UNIQUE KEY `get_config_template_id` (`get_config_template_id`),
+  KEY `get_config_template_ibfk_1` (`device_interface_protocol_id`),
+  CONSTRAINT `get_config_template_ibfk_1` FOREIGN KEY (`device_interface_protocol_id`) REFERENCES `DEVICE_INTERFACE_PROTOCOL` (`device_interface_protocol_id`) ON DELETE NO ACTION ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `HOSTNAME`
+--
+
+DROP TABLE IF EXISTS `HOSTNAME`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `HOSTNAME` (
+  `hostname` varchar(21) NOT NULL,
+  `parent_hostname` varchar(21) DEFAULT NULL,
+  `cust_id` int(11) NOT NULL,
+  `loc_id` int(11) NOT NULL,
+  `site_sequence` varchar(2) NOT NULL,
+  `server_sequence` varchar(2) NOT NULL,
+  `activation_code` varchar(11) DEFAULT NULL,
+  `vnf_sequence` varchar(2) DEFAULT NULL,
+  `vendor_code` varchar(1) NOT NULL,
+  `virtual_device_type` varchar(2) DEFAULT NULL,
+  `device_sequence` varchar(3) DEFAULT NULL,
+  `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`hostname`),
+  KEY `IN1_HOSTNAME` (`cust_id`),
+  KEY `IN2_HOSTNAME` (`loc_id`),
+  KEY `IN3_HOSTNAME` (`vendor_code`),
+  KEY `IN4_HOSTNAME` (`parent_hostname`),
+  CONSTRAINT `FK1_HOSTNAME` FOREIGN KEY (`cust_id`) REFERENCES `CUSTOMER` (`cust_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
+  CONSTRAINT `FK2_HOSTNAME` FOREIGN KEY (`loc_id`) REFERENCES `LOCATION` (`loc_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
+  CONSTRAINT `FK4_HOSTNAME` FOREIGN KEY (`parent_hostname`) REFERENCES `HOSTNAME` (`hostname`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `IPV4_ADDRESS_POOL`
+--
+
+DROP TABLE IF EXISTS `IPV4_ADDRESS_POOL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `IPV4_ADDRESS_POOL` (
+  `aic_site_id` varchar(100) NOT NULL,
+  `universe` varchar(40) NOT NULL,
+  `status` varchar(40) NOT NULL,
+  `ipv4_addr` varchar(20) NOT NULL,
+  PRIMARY KEY (`ipv4_addr`,`universe`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `LINK_MASTER`
+--
+
+DROP TABLE IF EXISTS `LINK_MASTER`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `LINK_MASTER` (
+  `link_interface_ip` varchar(20) NOT NULL,
+  `source_crs_name` varchar(20) NOT NULL,
+  `destination_crs_name` varchar(20) NOT NULL,
+  `max_reserved_bw` int(11) DEFAULT NULL,
+  `default_cost` int(11) DEFAULT NULL,
+  `bundle_name` varchar(20) DEFAULT NULL,
+  PRIMARY KEY (`link_interface_ip`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `LINTERFACE_VLAN`
+--
+
+DROP TABLE IF EXISTS `LINTERFACE_VLAN`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `LINTERFACE_VLAN` (
+  `vnf_id` varchar(80) NOT NULL,
+  `interface_name` varchar(255) NOT NULL,
+  `vlan_interface` varchar(255) NOT NULL,
+  `vlan_id_inner` varchar(64) DEFAULT NULL,
+  `vlan_id_outer` varchar(64) DEFAULT NULL,
+  PRIMARY KEY (`vnf_id`,`interface_name`,`vlan_interface`),
+  KEY `FK_LINTERFACE_VLAN_GENERIC_VNF_LINTERFACE_IDX` (`vnf_id`,`interface_name`),
+  CONSTRAINT `FK_LINTERFACE_VLAN_GENERIC_VNF_LINTERFACE` FOREIGN KEY (`vnf_id`, `interface_name`) REFERENCES `GENERIC_VNF_LINTERFACE` (`vnf_id`, `interface_name`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `LOCATION`
+--
+
+DROP TABLE IF EXISTS `LOCATION`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `LOCATION` (
+  `loc_id` int(11) NOT NULL AUTO_INCREMENT,
+  `address` varchar(150) NOT NULL,
+  `city_code_id` int(11) NOT NULL,
+  `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`loc_id`),
+  KEY `IN1_LOCATION_IDX` (`city_code_id`),
+  CONSTRAINT `FK1_LOCATION` FOREIGN KEY (`city_code_id`) REFERENCES `CITY_CODE` (`city_code_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB AUTO_INCREMENT=327 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `MAX_PORT_SPEED`
+--
+
+DROP TABLE IF EXISTS `MAX_PORT_SPEED`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `MAX_PORT_SPEED` (
+  `max_port_speed_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `image_file_name` varchar(50) NOT NULL,
+  `end_point_position` varchar(50) NOT NULL,
+  `interface_name` varchar(100) NOT NULL,
+  `max_speed` bigint(20) NOT NULL,
+  `unit` varchar(10) NOT NULL,
+  PRIMARY KEY (`max_port_speed_id`),
+  UNIQUE KEY `max_port_speed_id` (`max_port_speed_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `MAX_SERVER_SPEED`
+--
+
+DROP TABLE IF EXISTS `MAX_SERVER_SPEED`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `MAX_SERVER_SPEED` (
+  `max_server_speed_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `server_model` varchar(50) NOT NULL,
+  `evc_count` smallint(6) NOT NULL,
+  `max_speed` bigint(20) NOT NULL,
+  `unit` varchar(10) NOT NULL,
+  `description` varchar(500) DEFAULT NULL,
+  PRIMARY KEY (`max_server_speed_id`),
+  UNIQUE KEY `max_server_speed_id` (`max_server_speed_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NAMING_POLICY_VM_NAME_INDEX`
+--
+
+DROP TABLE IF EXISTS `NAMING_POLICY_VM_NAME_INDEX`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NAMING_POLICY_VM_NAME_INDEX` (
+  `vm_name_prefix` varchar(255) NOT NULL,
+  `index_number` int(11) NOT NULL,
+  PRIMARY KEY (`vm_name_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NAMING_POLICY_VNFC_NAME_INDEX`
+--
+
+DROP TABLE IF EXISTS `NAMING_POLICY_VNFC_NAME_INDEX`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NAMING_POLICY_VNFC_NAME_INDEX` (
+  `vnfc_name_prefix` varchar(255) NOT NULL,
+  `index_number` int(11) NOT NULL,
+  PRIMARY KEY (`vnfc_name_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NBNC_ASSIGN_VPN_OVERRIDE`
+--
+
+DROP TABLE IF EXISTS `NBNC_ASSIGN_VPN_OVERRIDE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NBNC_ASSIGN_VPN_OVERRIDE` (
+  `vpn_id` varchar(12) NOT NULL DEFAULT '',
+  `vpn_rt` varchar(16) NOT NULL DEFAULT '',
+  `service_type` varchar(16) NOT NULL DEFAULT '',
+  `be_location` varchar(16) NOT NULL DEFAULT '',
+  `be_type` varchar(32) NOT NULL DEFAULT '',
+  `be_id` varchar(32) DEFAULT NULL,
+  `description` varchar(128) DEFAULT NULL,
+  PRIMARY KEY (`vpn_id`,`vpn_rt`,`service_type`,`be_location`,`be_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NBNC_BORDER_ELEMENT`
+--
+
+DROP TABLE IF EXISTS `NBNC_BORDER_ELEMENT`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NBNC_BORDER_ELEMENT` (
+  `be_id` varchar(32) NOT NULL,
+  `be_type` varchar(16) NOT NULL,
+  `be_name` varchar(32) DEFAULT NULL,
+  `be_host_vnf_id` varchar(32) DEFAULT NULL,
+  `service_type` varchar(16) DEFAULT NULL,
+  `tangibility` varchar(16) DEFAULT NULL,
+  `usage_order` smallint(6) DEFAULT NULL,
+  `vlan_start` smallint(6) DEFAULT NULL,
+  `vlan_end` smallint(6) DEFAULT NULL,
+  `ipv4_subnet` varchar(18) DEFAULT NULL,
+  `ipv6_subnet` varchar(68) DEFAULT NULL,
+  `network_ip` varchar(48) DEFAULT NULL,
+  `be_location` varchar(16) DEFAULT NULL,
+  `description` varchar(128) DEFAULT NULL,
+  `updated_timestamp` timestamp NULL DEFAULT NULL,
+  `log_link_model_uuid` varchar(64) DEFAULT NULL,
+  PRIMARY KEY (`be_id`,`be_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NBNC_IPE`
+--
+
+DROP TABLE IF EXISTS `NBNC_IPE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NBNC_IPE` (
+  `ipe_name` varchar(32) NOT NULL,
+  `ipe_location` varchar(16) DEFAULT NULL,
+  `ipe_ip_address` varchar(16) DEFAULT NULL,
+  `ipe_id` varchar(8) DEFAULT NULL,
+  `service_type_array` varchar(512) DEFAULT NULL,
+  `ipe_status` varchar(32) DEFAULT NULL,
+  `updated_timestamp` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`ipe_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NBNC_IPE_PORT`
+--
+
+DROP TABLE IF EXISTS `NBNC_IPE_PORT`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NBNC_IPE_PORT` (
+  `port_id` varchar(16) NOT NULL,
+  `ipe_name` varchar(32) NOT NULL,
+  `be_id` varchar(32) NOT NULL,
+  `be_type` varchar(16) NOT NULL,
+  `port_type` varchar(16) DEFAULT NULL,
+  `ae_name` varchar(16) DEFAULT NULL,
+  `description` varchar(128) DEFAULT NULL,
+  `updated_timestamp` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`port_id`,`ipe_name`,`be_id`,`be_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NBNC_MAPPING_SBG_BGF`
+--
+
+DROP TABLE IF EXISTS `NBNC_MAPPING_SBG_BGF`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NBNC_MAPPING_SBG_BGF` (
+  `asbg_vlan` smallint(6) NOT NULL,
+  `bgf_vlan` smallint(6) NOT NULL,
+  PRIMARY KEY (`asbg_vlan`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NBNC_SERVICE`
+--
+
+DROP TABLE IF EXISTS `NBNC_SERVICE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NBNC_SERVICE` (
+  `service_type` varchar(16) NOT NULL,
+  `service_model_uuid` varchar(64) NOT NULL,
+  `description` varchar(128) DEFAULT NULL,
+  `created_timestamp` timestamp NULL DEFAULT NULL,
+  `updated_timestamp` timestamp NULL DEFAULT NULL,
+  PRIMARY KEY (`service_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NBNC_SERVICE_VLAN`
+--
+
+DROP TABLE IF EXISTS `NBNC_SERVICE_VLAN`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NBNC_SERVICE_VLAN` (
+  `be_id` varchar(32) NOT NULL,
+  `vlan` smallint(6) NOT NULL,
+  `service_type` varchar(16) DEFAULT NULL,
+  `be_type` varchar(16) DEFAULT NULL,
+  `be_name` varchar(32) DEFAULT NULL,
+  `be_host_vnf_id` varchar(32) DEFAULT NULL,
+  `be_location` varchar(16) DEFAULT NULL,
+  `be_usage_order` smallint(6) DEFAULT NULL,
+  `vlan_usage_order` smallint(6) DEFAULT NULL,
+  `status` varchar(16) DEFAULT 'AVAILABLE',
+  `request_id` varchar(64) DEFAULT NULL,
+  `service_instance_id` varchar(64) DEFAULT NULL,
+  `vni_id` varchar(16) DEFAULT NULL,
+  `customer_id` varchar(16) DEFAULT NULL,
+  `ipe1_router_name` varchar(32) DEFAULT NULL,
+  `ipe1_port_id` varchar(16) DEFAULT NULL,
+  `ipe1_ae_name` varchar(16) DEFAULT NULL,
+  `ipe2_router_name` varchar(32) DEFAULT NULL,
+  `ipe2_port_id` varchar(16) DEFAULT NULL,
+  `ipe2_ae_name` varchar(16) DEFAULT NULL,
+  `available_timestamp` timestamp NULL DEFAULT NULL,
+  `allocated_timestamp` timestamp NULL DEFAULT NULL,
+  `disabled_timestamp` timestamp NULL DEFAULT NULL,
+  `enabled_timestamp` timestamp NULL DEFAULT NULL,
+  `vpn_id` varchar(12) DEFAULT NULL,
+  `vpn_rt` varchar(16) DEFAULT NULL,
+  PRIMARY KEY (`be_id`,`vlan`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NCS_EXPECTED_ASYNC_REQUESTS`
+--
+
+DROP TABLE IF EXISTS `NCS_EXPECTED_ASYNC_REQUESTS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NCS_EXPECTED_ASYNC_REQUESTS` (
+  `ncs_request_id` varchar(255) NOT NULL,
+  `mso_gp_request_id` varchar(255) NOT NULL,
+  `service_instance_id` varchar(255) NOT NULL,
+  `sdn_module_name` varchar(255) NOT NULL,
+  `sdn_rpc_name` varchar(255) NOT NULL,
+  `sdn_service_action` varchar(255) DEFAULT NULL,
+  `ncs_rpc` varchar(255) NOT NULL,
+  `ncs_sub_action` varchar(255) DEFAULT NULL,
+  `status` varchar(255) NOT NULL DEFAULT 'inProgress',
+  `creation_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`ncs_request_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NETWORK_INSTANCE_NAME_INDEX`
+--
+
+DROP TABLE IF EXISTS `NETWORK_INSTANCE_NAME_INDEX`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NETWORK_INSTANCE_NAME_INDEX` (
+  `network_instance_name_prefix` varchar(255) NOT NULL,
+  `index_number` int(11) NOT NULL,
+  PRIMARY KEY (`network_instance_name_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NETWORK_MODEL`
+--
+
+DROP TABLE IF EXISTS `NETWORK_MODEL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NETWORK_MODEL` (
+  `customization_uuid` varchar(255) NOT NULL,
+  `service_uuid` varchar(255) NOT NULL,
+  `model_yaml` longblob,
+  `invariant_uuid` varchar(255) DEFAULT NULL,
+  `uuid` varchar(255) DEFAULT NULL,
+  `network_type` varchar(255) DEFAULT NULL,
+  `network_role` varchar(255) DEFAULT NULL,
+  `network_technology` varchar(255) DEFAULT NULL,
+  `trunk_network_indicator` char(1) DEFAULT NULL, 
+  `network_scope` varchar(255) DEFAULT NULL,
+  `naming_policy` varchar(255) DEFAULT NULL,
+  `ecomp_generated_naming` char(1) DEFAULT NULL,
+  `is_shared_network` char(1) DEFAULT NULL,
+  `is_external_network` char(1) DEFAULT NULL,
+  `is_provider_network` char(1) DEFAULT NULL,
+  `physical_network_name` varchar(255) DEFAULT NULL,
+  `is_bound_to_vpn` char(1) DEFAULT NULL,
+  `vpn_binding` varchar(255) DEFAULT NULL,
+  `use_ipv4` char(1) DEFAULT NULL,
+  `ipv4_dhcp_enabled` char(1) DEFAULT NULL,
+  `ipv4_ip_version` char(1) DEFAULT NULL,
+  `ipv4_cidr_mask` varchar(255) DEFAULT NULL,
+  `eipam_v4_address_plan` varchar(255) DEFAULT NULL,
+  `use_ipv6` char(1) DEFAULT NULL,
+  `ipv6_dhcp_enabled` char(1) DEFAULT NULL,
+  `ipv6_ip_version` char(1) DEFAULT NULL,
+  `ipv6_cidr_mask` varchar(255) DEFAULT NULL,
+  `eipam_v6_address_plan` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`customization_uuid`),
+  KEY `FK_NETWORK_MODEL` (`service_uuid`),
+  CONSTRAINT `FK_NETWORK_MODEL` FOREIGN KEY (`service_uuid`) REFERENCES `SERVICE_MODEL` (`service_uuid`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NETWORK_PROFILE`
+--
+
+DROP TABLE IF EXISTS `NETWORK_PROFILE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NETWORK_PROFILE` (
+  `network_type` varchar(100) NOT NULL,
+  `technology` varchar(100) NOT NULL,
+  PRIMARY KEY (`network_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NETWORK_ROLE_VPN_BINDING`
+--
+
+DROP TABLE IF EXISTS `NETWORK_ROLE_VPN_BINDING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NETWORK_ROLE_VPN_BINDING` (
+  `network_role` varchar(80) NOT NULL,
+  `vpn_id` varchar(80) NOT NULL,
+  PRIMARY KEY (`network_role`,`vpn_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `NODE_TYPES`
+--
+
+DROP TABLE IF EXISTS `NODE_TYPES`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NODE_TYPES` (
+  `nodetype` varchar(80) NOT NULL,
+  PRIMARY KEY (`nodetype`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `OBJECT_GROUPING`
+--
+
+DROP TABLE IF EXISTS `OBJECT_GROUPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `OBJECT_GROUPING` (
+  `group_id` varchar(128) NOT NULL,
+  `group_type` varchar(128) NOT NULL,
+  PRIMARY KEY (`group_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `OBJECT_GROUP_MEMBER_TRACKING`
+--
+
+DROP TABLE IF EXISTS `OBJECT_GROUP_MEMBER_TRACKING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `OBJECT_GROUP_MEMBER_TRACKING` (
+  `group_id` varchar(128) NOT NULL,
+  `key_id` varchar(128) NOT NULL,
+  `key_type` varchar(128) NOT NULL,
+  PRIMARY KEY (`group_id`,`key_id`,`key_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `PARAMETERS`
+--
+
+DROP TABLE IF EXISTS `PARAMETERS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `PARAMETERS` (
+  `name` varchar(100) NOT NULL,
+  `value` varchar(128) NOT NULL,
+  `category` varchar(24) DEFAULT NULL,
+  `memo` varchar(128) DEFAULT NULL,
+  PRIMARY KEY (`name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `PE_INV`
+--
+
+DROP TABLE IF EXISTS `PE_INV`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `PE_INV` (
+  `EQUIP_ID` int(11) DEFAULT NULL,
+  `EQUIP_TYPE` varchar(20) DEFAULT NULL,
+  `PTNII_EQUIP_NAME` varchar(20) DEFAULT NULL,
+  `IP_ADDR` varchar(15) DEFAULT NULL,
+  `ROUTER_PROV_STATUS` varchar(50) DEFAULT NULL,
+  `REGION` varchar(16) DEFAULT NULL,
+  `COUNTRY_ABBR` varchar(50) DEFAULT NULL,
+  `EQUIP_NAME_CODE` varchar(50) DEFAULT NULL,
+  `AS_NUMBER` varchar(5) DEFAULT NULL,
+  `LOOPBACK1` varchar(15) DEFAULT NULL,
+  `LOOPBACK2` varchar(15) DEFAULT NULL,
+  `LOOPBACK3` varchar(15) DEFAULT NULL,
+  `LOOPBACK40` varchar(15) DEFAULT NULL,
+  `LOOPBACK65535` varchar(15) DEFAULT NULL,
+  `INMS_LIST` varchar(20) DEFAULT NULL,
+  `ENCRYPTED_ACCESS_FLAG` varchar(50) DEFAULT NULL,
+  `SW_NAME` varchar(100) DEFAULT NULL,
+  `NMIPADDR` varchar(15) DEFAULT NULL,
+  `CREATE_DATE` datetime DEFAULT NULL,
+  `MOD_DATE` datetime DEFAULT NULL,
+  `FCN_CODE` varchar(50) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `PHYSICAL_LINK`
+--
+
+DROP TABLE IF EXISTS `PHYSICAL_LINK`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `PHYSICAL_LINK` (
+  `link_name` varchar(255) NOT NULL,
+  `speed_value` varchar(64) DEFAULT NULL,
+  `speed_units` varchar(64) DEFAULT NULL,
+  `circuit_id` varchar(255) NOT NULL,
+  `dual_mode` varchar(64) NOT NULL,
+  PRIMARY KEY (`link_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `PHYSICAL_LINK_PINTERFACE`
+--
+
+DROP TABLE IF EXISTS `PHYSICAL_LINK_PINTERFACE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `PHYSICAL_LINK_PINTERFACE` (
+  `link_name` varchar(255) NOT NULL,
+  `hostname` varchar(255) NOT NULL,
+  `port_name_ft` varchar(255) NOT NULL,
+  PRIMARY KEY (`link_name`,`hostname`,`port_name_ft`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `PINTERFACE`
+--
+
+DROP TABLE IF EXISTS `PINTERFACE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `PINTERFACE` (
+  `hostname` varchar(255) NOT NULL,
+  `port_name_ft` varchar(255) NOT NULL,
+  `interface_name` varchar(255) DEFAULT '',
+  `physical_speed` varchar(255) DEFAULT '',
+  `physical_units` varchar(255) DEFAULT '',
+  `port_description` varchar(255) DEFAULT '',
+  PRIMARY KEY (`hostname`,`port_name_ft`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `POLICY_UPDATE_NOTIFICATION`
+--
+
+DROP TABLE IF EXISTS `POLICY_UPDATE_NOTIFICATION`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `POLICY_UPDATE_NOTIFICATION` (
+  `policy_name` varchar(255) NOT NULL,
+  `version_id` varchar(255) NOT NULL,
+  `update_type` varchar(255) NOT NULL,
+  `timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`policy_name`,`version_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `PORTAL_USERS`
+--
+
+DROP TABLE IF EXISTS `PORTAL_USERS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `PORTAL_USERS` (
+  `email` varchar(64) NOT NULL,
+  `password` varbinary(255) NOT NULL,
+  `privilege` char(1) NOT NULL,
+  PRIMARY KEY (`email`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+
+--
+-- Table structure for table `PREPARE_FILE_RELATIONSHIP`
+--
+
+DROP TABLE IF EXISTS `PREPARE_FILE_RELATIONSHIP`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `PREPARE_FILE_RELATIONSHIP` (
+  `prepare_file_relationship_id` int(11) NOT NULL AUTO_INCREMENT,
+  `service_instance_id` varchar(50) DEFAULT NULL,
+  `request_id` varchar(255) DEFAULT NULL,
+  `config_file_id` int(11) DEFAULT NULL,
+  `asdc_artifacts_id` int(11) DEFAULT NULL,
+  PRIMARY KEY (`prepare_file_relationship_id`),
+  UNIQUE KEY `prepare_file_relationship_id` (`prepare_file_relationship_id`),
+  KEY `ie_prepare_file_relationship` (`config_file_id`),
+  KEY `ie2_prepare_file_relationship` (`asdc_artifacts_id`),
+  CONSTRAINT `prepare_file_relationship_ibfk_2` FOREIGN KEY (`asdc_artifacts_id`) REFERENCES `ASDC_ARTIFACTS` (`asdc_artifacts_id`) ON DELETE NO ACTION ON UPDATE CASCADE,
+  CONSTRAINT `prepare_file_replationship_ibfk_1` FOREIGN KEY (`config_file_id`) REFERENCES `CONFIGFILES` (`config_file_id`) ON DELETE NO ACTION ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `PRE_LOAD_VNF_DATA`
+--
+
+DROP TABLE IF EXISTS `PRE_LOAD_VNF_DATA`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `PRE_LOAD_VNF_DATA` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `svc_request_id` varchar(100) DEFAULT '',
+  `svc_action` varchar(40) DEFAULT '',
+  `status` varchar(10) NOT NULL DEFAULT 'pending',
+  `filename` varchar(100) NOT NULL,
+  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `preload_data` longblob,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=295 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `PRE_LOAD_VNF_NETWORK_DATA`
+--
+
+DROP TABLE IF EXISTS `PRE_LOAD_VNF_NETWORK_DATA`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `PRE_LOAD_VNF_NETWORK_DATA` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `svc_request_id` varchar(100) DEFAULT '',
+  `svc_action` varchar(40) DEFAULT '',
+  `status` varchar(10) NOT NULL DEFAULT 'pending',
+  `filename` varchar(100) NOT NULL,
+  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `preload_data` longblob,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=278 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `PSERVER`
+--
+
+DROP TABLE IF EXISTS `PSERVER`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `PSERVER` (
+  `hostname` varchar(255) NOT NULL,
+  `ptnii_equip_name` varchar(255) DEFAULT '',
+  `number_of_cpus` varchar(255) DEFAULT '',
+  `disk_in_gigabytes` varchar(255) DEFAULT '',
+  `ram_in_megabytes` varchar(255) DEFAULT '',
+  `equip_type` varchar(255) DEFAULT '',
+  `equip_vendor` varchar(255) DEFAULT '',
+  `equip_model` varchar(255) DEFAULT '',
+  `fqdn` varchar(255) DEFAULT '',
+  `pserver_selflink` varchar(255) DEFAULT '',
+  `ipv4_oam_address` varchar(40) DEFAULT NULL,
+  `serial_number` varchar(255) DEFAULT '',
+  `pserver_id` varchar(255) DEFAULT '',
+  `internet_topology` varchar(40) DEFAULT '',
+  `aic_site_id` varchar(100) DEFAULT '',
+  `in_maint` varchar(5) DEFAULT '',
+  `pserver_name2` varchar(255) DEFAULT '',
+  `purpose` varchar(255) DEFAULT '',
+  PRIMARY KEY (`hostname`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `RANGE_RULE`
+--
+
+DROP TABLE IF EXISTS `RANGE_RULE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `RANGE_RULE` (
+  `range_rule_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `range_name` varchar(50) NOT NULL,
+  `service_model` varchar(50) NOT NULL,
+  `end_point_position` varchar(50) NOT NULL,
+  `equipment_level` varchar(50) NOT NULL,
+  `min_value` int(11) NOT NULL,
+  `max_value` int(11) NOT NULL,
+  PRIMARY KEY (`range_rule_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `REQUEST_PROGRESS`
+--
+
+DROP TABLE IF EXISTS `REQUEST_PROGRESS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `REQUEST_PROGRESS` (
+  `request_id` int(11) NOT NULL AUTO_INCREMENT,
+  `request_type` varchar(20) DEFAULT NULL,
+  `service_instance_id` varchar(80) NOT NULL,
+  `request_instance_type` varchar(20) NOT NULL,
+  `originating_service_instance_id` varchar(80) DEFAULT NULL,
+  `originating_service_type` varchar(20) DEFAULT NULL,
+  `overall_status` varchar(20) DEFAULT NULL,
+  `status_date` varchar(80) DEFAULT NULL,
+  `message` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`request_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `REQUEST_PROGRESS_STATE`
+--
+
+DROP TABLE IF EXISTS `REQUEST_PROGRESS_STATE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `REQUEST_PROGRESS_STATE` (
+  `request_progress_state_id` int(11) NOT NULL AUTO_INCREMENT,
+  `request_id` int(11) DEFAULT NULL,
+  `service_instance_id` varchar(80) NOT NULL,
+  `request_instance_type` varchar(20) NOT NULL,
+  `progress_state` varchar(30) DEFAULT NULL,
+  `transaction_status` varchar(20) DEFAULT NULL,
+  `status_date` varchar(80) DEFAULT NULL,
+  `response_code` varchar(20) DEFAULT NULL,
+  `message` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`request_progress_state_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `RESOURCE`
+--
+
+DROP TABLE IF EXISTS `RESOURCE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `RESOURCE` (
+  `resource_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `asset_id` varchar(100) NOT NULL,
+  `resource_name` varchar(50) NOT NULL,
+  `resource_type` enum('Limit','Label','Range') NOT NULL,
+  `lt_used` bigint(20) DEFAULT NULL,
+  `ll_label` varchar(50) DEFAULT NULL,
+  `ll_reference_count` smallint(6) DEFAULT NULL,
+  `rr_used` varchar(4000) DEFAULT NULL,
+  PRIMARY KEY (`resource_id`),
+  UNIQUE KEY `resource_id` (`resource_id`),
+  UNIQUE KEY `IX1_RESOURCE` (`asset_id`,`resource_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=179 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `RESOURCE_LOAD`
+--
+
+DROP TABLE IF EXISTS `RESOURCE_LOAD`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `RESOURCE_LOAD` (
+  `resource_load_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `resource_id` bigint(20) NOT NULL,
+  `application_id` varchar(20) NOT NULL,
+  `resource_load_time` datetime NOT NULL,
+  `resource_expiration_time` datetime DEFAULT NULL,
+  PRIMARY KEY (`resource_load_id`),
+  UNIQUE KEY `resource_load_id` (`resource_load_id`),
+  UNIQUE KEY `IX2_RESOURCE_LOAD` (`resource_id`,`application_id`),
+  KEY `IX1_RESOURCE_LOAD` (`resource_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `RESOURCE_LOCK`
+--
+
+DROP TABLE IF EXISTS `RESOURCE_LOCK`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `RESOURCE_LOCK` (
+  `resource_lock_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `resource_name` varchar(256) DEFAULT NULL,
+  `lock_holder` varchar(100) NOT NULL,
+  `lock_count` smallint(6) NOT NULL,
+  `lock_time` datetime NOT NULL,
+  `expiration_time` datetime NOT NULL,
+  PRIMARY KEY (`resource_lock_id`),
+  UNIQUE KEY `resource_lock_id` (`resource_lock_id`),
+  UNIQUE KEY `IX1_RESOURCE_LOCK` (`resource_name`)
+) ENGINE=InnoDB AUTO_INCREMENT=29681 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `RESOURCE_RULE`
+--
+
+DROP TABLE IF EXISTS `RESOURCE_RULE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `RESOURCE_RULE` (
+  `resource_rule_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `resource_name` varchar(50) NOT NULL,
+  `service_model` varchar(50) NOT NULL,
+  `end_point_position` varchar(50) NOT NULL,
+  `service_expression` varchar(2000) NOT NULL,
+  `equipment_level` varchar(50) NOT NULL,
+  `equipment_expression` varchar(2000) NOT NULL,
+  `allocation_expression` varchar(2000) NOT NULL,
+  `soft_limit_expression` varchar(2000) NOT NULL,
+  `hard_limit_expression` varchar(2000) NOT NULL,
+  PRIMARY KEY (`resource_rule_id`),
+  UNIQUE KEY `resource_rule_id` (`resource_rule_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `RESOURCE_THRESHOLD`
+--
+
+DROP TABLE IF EXISTS `RESOURCE_THRESHOLD`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `RESOURCE_THRESHOLD` (
+  `resource_threshold_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `resource_rule_id` bigint(20) NOT NULL,
+  `threshold_expression` varchar(2000) NOT NULL,
+  `threshold_message` varchar(2000) NOT NULL,
+  PRIMARY KEY (`resource_threshold_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `ROUTER_MASTER`
+--
+
+DROP TABLE IF EXISTS `ROUTER_MASTER`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `ROUTER_MASTER` (
+  `crs_name` varchar(20) NOT NULL,
+  `loopback_ip` varchar(20) NOT NULL,
+  PRIMARY KEY (`crs_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `ROUTING_CHARACTERISTIC_MAPPING`
+--
+
+DROP TABLE IF EXISTS `ROUTING_CHARACTERISTIC_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `ROUTING_CHARACTERISTIC_MAPPING` (
+  `network_role` varchar(255) NOT NULL,
+  `vrf_name` varchar(255) NOT NULL,
+  `routing_characteristic` varchar(255) NOT NULL,
+  PRIMARY KEY (`network_role`,`vrf_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `SERVICE_HOMING`
+--
+
+DROP TABLE IF EXISTS `SERVICE_HOMING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `SERVICE_HOMING` (
+  `service_type` varchar(100) NOT NULL,
+  `lata` int(3) NOT NULL,
+  `hubbing_city_type` varchar(40) NOT NULL,
+  `latitude` float DEFAULT NULL,
+  `longitude` float DEFAULT NULL,
+  `primary_aic_site_name` varchar(100) NOT NULL,
+  `secondary_aic_site_name` varchar(100) DEFAULT NULL,
+  `tertiary_aic_site_name` varchar(100) DEFAULT NULL,
+  PRIMARY KEY (`service_type`,`lata`,`hubbing_city_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `SERVICE_HOMING_BACKUP`
+--
+
+DROP TABLE IF EXISTS `SERVICE_HOMING_BACKUP`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `SERVICE_HOMING_BACKUP` (
+  `service_type` varchar(100) NOT NULL,
+  `lata` int(3) NOT NULL,
+  `hubbing_city_type` varchar(40) NOT NULL,
+  `latitude` float DEFAULT NULL,
+  `longitude` float DEFAULT NULL,
+  `primary_aic_site_name` varchar(100) NOT NULL,
+  `secondary_aic_site_name` varchar(100) DEFAULT NULL,
+  `tertiary_aic_site_name` varchar(100) DEFAULT NULL,
+  PRIMARY KEY (`service_type`,`lata`,`hubbing_city_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `SERVICE_INSTANCE_NAME_INDEX`
+--
+
+DROP TABLE IF EXISTS `SERVICE_INSTANCE_NAME_INDEX`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `SERVICE_INSTANCE_NAME_INDEX` (
+  `service_instance_name_prefix` varchar(255) NOT NULL,
+  `index_number` int(11) NOT NULL,
+  PRIMARY KEY (`service_instance_name_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `SERVICE_MANAGER_CREDENTIALS`
+--
+
+DROP TABLE IF EXISTS `SERVICE_MANAGER_CREDENTIALS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `SERVICE_MANAGER_CREDENTIALS` (
+  `service_manager_username` varchar(255) NOT NULL,
+  `service_manager_password` varbinary(255) NOT NULL,
+  PRIMARY KEY (`service_manager_username`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `SERVICE_MODEL`
+--
+
+DROP TABLE IF EXISTS `SERVICE_MODEL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `SERVICE_MODEL` (
+  `service_uuid` varchar(255) NOT NULL,
+  `model_yaml` longblob,
+  `invariant_uuid` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  `name` varchar(255) DEFAULT NULL,
+  `description` varchar(1024) DEFAULT NULL,
+  `type` varchar(255) DEFAULT NULL,
+  `category` varchar(255) DEFAULT NULL,
+  `ecomp_naming` char(1) DEFAULT NULL,
+  `service_instance_name_prefix` varchar(255) DEFAULT NULL,
+  `filename` varchar(100) DEFAULT NULL,
+  `naming_policy` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`service_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `SERVICE_PROXY`
+--
+
+DROP TABLE IF EXISTS `SERVICE_PROXY`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `SERVICE_PROXY` (
+  `port_mirror_service_uuid` varchar(255) NOT NULL,
+  `service_proxy_name` varchar(255) NOT NULL,
+  `source_service_uuid` varchar(255) NOT NULL,
+  `resources_vendor` varchar(255) DEFAULT NULL,
+  `resource_vendor_release` varchar(255) DEFAULT NULL,
+  `description` varchar(255) DEFAULT NULL,
+  `category` varchar(255) DEFAULT NULL,
+  `subcategory` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  `role` varchar(255) NOT NULL,
+  `uuid` varchar(255) DEFAULT NULL,
+  `customization_uuid` varchar(255) DEFAULT NULL,
+  `invariant_uuid` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`port_mirror_service_uuid`,`service_proxy_name`),
+  KEY `FK_SERVICE_PROXY_SOURCE_TO_SERVICE_MODE` (`source_service_uuid`),
+  CONSTRAINT `FK_SERVICE_PROXY_MIRROR_TO_SERVICE_MODE` FOREIGN KEY (`port_mirror_service_uuid`) REFERENCES `SERVICE_MODEL` (`service_uuid`) ON DELETE CASCADE ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `SERVICE_RESOURCE`
+--
+
+DROP TABLE IF EXISTS `SERVICE_RESOURCE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `SERVICE_RESOURCE` (
+  `service_resource_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `service_instance_id` varchar(80) NOT NULL,
+  `service_status` enum('Active','Pending') NOT NULL,
+  `service_change_number` smallint(6) NOT NULL,
+  `resource_set_id` varchar(100) NOT NULL,
+  `resource_union_id` varchar(100) NOT NULL,
+  PRIMARY KEY (`service_instance_id`,`service_change_number`),
+  UNIQUE KEY `service_resource_id` (`service_resource_id`),
+  KEY `IX1_SERVICE_RESOURCE` (`service_instance_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=955 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `SERVICE_TYPE_MAPPING`
+--
+
+DROP TABLE IF EXISTS `SERVICE_TYPE_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `SERVICE_TYPE_MAPPING` (
+  `sdnc_service_type` varchar(128) NOT NULL,
+  `ncs_service_type` varchar(128) NOT NULL,
+  PRIMARY KEY (`sdnc_service_type`,`ncs_service_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `SUBNETPOOL_MAPPING`
+--
+
+DROP TABLE IF EXISTS `SUBNETPOOL_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `SUBNETPOOL_MAPPING` (
+  `aic_cloud_region` varchar(16) NOT NULL,
+  `ntc` varchar(32) NOT NULL,
+  `lcp` varchar(32) NOT NULL,
+  `aic_region_id` varchar(255) NOT NULL,
+  PRIMARY KEY (`aic_cloud_region`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `SUPPORTED_SEQUENCE_NUMBER`
+--
+
+DROP TABLE IF EXISTS `SUPPORTED_SEQUENCE_NUMBER`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `SUPPORTED_SEQUENCE_NUMBER` (
+  `resource_sequence_number` varchar(10) NOT NULL,
+  `resource_type` varchar(10) NOT NULL,
+  PRIMARY KEY (`resource_sequence_number`,`resource_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `SVC_LOGIC`
+--
+
+DROP TABLE IF EXISTS `SVC_LOGIC`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `SVC_LOGIC` (
+  `module` varchar(80) NOT NULL,
+  `rpc` varchar(80) NOT NULL,
+  `version` varchar(40) NOT NULL,
+  `mode` varchar(5) NOT NULL,
+  `active` varchar(1) NOT NULL,
+  `graph` longblob,
+  `modified_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `md5sum` varchar(128) DEFAULT NULL,
+  PRIMARY KEY (`module`,`rpc`,`version`,`mode`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `TABLE_CLEANUP_CONFIGURATION`
+--
+
+DROP TABLE IF EXISTS `TABLE_CLEANUP_CONFIGURATION`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `TABLE_CLEANUP_CONFIGURATION` (
+  `table_name` varchar(255) NOT NULL COMMENT 'The name of the table the cleanup will be performed on',
+  `days_old` int(11) NOT NULL COMMENT 'Records older than the current date minus DAYS_OLD will be deleted',
+  `date_column` varchar(255) NOT NULL COMMENT 'The name of the column containing the date to be checked',
+  `commit_interval` int(11) NOT NULL DEFAULT '2500' COMMENT 'The maximum number of rows a commit may contain',
+  `query_clause` varchar(1000) DEFAULT NULL COMMENT 'An optional additional query clause to further restrict deletion criteria',
+  `child_table_name` varchar(255) DEFAULT NULL,
+  `child_table_pk` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`table_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='This table will be used by the table clean-up script, tableCleanup.sh, to drive what tables should be purged and what the purge criteria are.';
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `TASK_TEMPLATE`
+--
+
+DROP TABLE IF EXISTS `TASK_TEMPLATE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `TASK_TEMPLATE` (
+  `task_template_id` int(11) NOT NULL AUTO_INCREMENT,
+  `request_type` varchar(20) DEFAULT NULL,
+  `task_name` varchar(30) NOT NULL,
+  `task_category` varchar(50) NOT NULL,
+  `ecomp_task` varchar(50) NOT NULL,
+  `initial_load` varchar(1) NOT NULL,
+  `service` varchar(20) DEFAULT NULL,
+  PRIMARY KEY (`task_template_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `TENANT`
+--
+
+DROP TABLE IF EXISTS `TENANT`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `TENANT` (
+  `tenant_id` varchar(255) NOT NULL,
+  `tenant_name` varchar(255) NOT NULL,
+  `service_instance_id` varchar(255) NOT NULL,
+  PRIMARY KEY (`tenant_id`,`tenant_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `TESTTBL`
+--
+
+DROP TABLE IF EXISTS `TESTTBL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `TESTTBL` (
+  `pk` varchar(25) NOT NULL,
+  `col1` varchar(25) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `THRESHOLD_NOTIFICATION`
+--
+
+DROP TABLE IF EXISTS `THRESHOLD_NOTIFICATION`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `THRESHOLD_NOTIFICATION` (
+  `resource_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `threshold_expression` varchar(2000) DEFAULT NULL,
+  `threshold_message` varchar(500) DEFAULT NULL,
+  PRIMARY KEY (`resource_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `TMP_AIC_AVAIL_ZONE_POOL`
+--
+
+DROP TABLE IF EXISTS `TMP_AIC_AVAIL_ZONE_POOL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `TMP_AIC_AVAIL_ZONE_POOL` (
+  `aic_site_id` varchar(100) NOT NULL,
+  `status` varchar(40) NOT NULL,
+  `availability_zone` varchar(100) NOT NULL,
+  `token` int(4) NOT NULL,
+  `vnf_id` varchar(80) DEFAULT NULL,
+  `service_type` varchar(100) NOT NULL,
+  `vnf_type` varchar(20) DEFAULT NULL,
+  `hypervisor` varchar(10) DEFAULT NULL,
+  PRIMARY KEY (`aic_site_id`,`availability_zone`,`token`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `TOPOLOGY_PARAMETER`
+--
+
+DROP TABLE IF EXISTS `TOPOLOGY_PARAMETER`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `TOPOLOGY_PARAMETER` (
+  `parameter_id` int(11) NOT NULL,
+  `parameter_name` varchar(20) NOT NULL,
+  `parameter_set` int(11) NOT NULL,
+  `create_update_time` datetime NOT NULL,
+  `create_update_user` varchar(40) NOT NULL,
+  PRIMARY KEY (`parameter_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `TOPOLOGY_PARAMETER_ENTRIES`
+--
+
+DROP TABLE IF EXISTS `TOPOLOGY_PARAMETER_ENTRIES`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `TOPOLOGY_PARAMETER_ENTRIES` (
+  `parameter_entry_id` int(11) NOT NULL,
+  `parameter_name` varchar(255) NOT NULL,
+  `parameter_value` varchar(64) NOT NULL,
+  `create_update_time` datetime NOT NULL,
+  `create_update_user` varchar(40) NOT NULL,
+  PRIMARY KEY (`parameter_entry_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `TOPOLOGY_PARAMETER_TO_ENTRIES`
+--
+
+DROP TABLE IF EXISTS `TOPOLOGY_PARAMETER_TO_ENTRIES`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `TOPOLOGY_PARAMETER_TO_ENTRIES` (
+  `parameter_id` int(11) DEFAULT NULL,
+  `parameter_entry_id` int(11) DEFAULT NULL,
+  `entry_order` int(11) DEFAULT NULL,
+  `create_update_time` datetime DEFAULT NULL,
+  `create_update_user` varchar(40) NOT NULL,
+  KEY `FK1_TOPOLOGY_PARAMETER_TO_ENTRIES` (`parameter_id`),
+  KEY `FK2_TOPOLOGY_PARAMETER_TO_ENTRIES` (`parameter_entry_id`),
+  CONSTRAINT `FK1_TOPOLOGY_PARAMETER_TO_ENTRIES` FOREIGN KEY (`parameter_id`) REFERENCES `TOPOLOGY_PARAMETER` (`parameter_id`),
+  CONSTRAINT `FK2_TOPOLOGY_PARAMETER_TO_ENTRIES` FOREIGN KEY (`parameter_entry_id`) REFERENCES `TOPOLOGY_PARAMETER_ENTRIES` (`parameter_entry_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `TRANSACTION_LOG`
+--
+
+DROP TABLE IF EXISTS `TRANSACTION_LOG`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `TRANSACTION_LOG` (
+  `serial_key` int(10) NOT NULL AUTO_INCREMENT,
+  `log_time` varchar(40) NOT NULL,
+  `request_id` varchar(80) DEFAULT NULL,
+  `svc_request_id` varchar(80) DEFAULT NULL,
+  `x_ecomp_request_id` varchar(80) DEFAULT NULL,
+  `graph_name` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`serial_key`)
+) ENGINE=InnoDB AUTO_INCREMENT=249 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+
+--
+-- Table structure for table `UPLOAD_CONFIG`
+--
+
+DROP TABLE IF EXISTS `UPLOAD_CONFIG`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `UPLOAD_CONFIG` (
+  `upload_config_id` int(11) NOT NULL AUTO_INCREMENT,
+  `request_id` varchar(50) DEFAULT NULL,
+  `originator_id` varchar(50) DEFAULT NULL,
+  `service_description` varchar(100) DEFAULT NULL,
+  `action` varchar(50) DEFAULT NULL,
+  `upload_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `vnf_id` varchar(50) DEFAULT NULL,
+  `vnf_name` varchar(50) DEFAULT NULL,
+  `vm_name` varchar(50) DEFAULT NULL,
+  `vnf_type` varchar(50) DEFAULT NULL,
+  `vnfc_type` varchar(50) DEFAULT NULL,
+  `host_ip_address` varchar(50) DEFAULT NULL,
+  `config_indicator` varchar(25) DEFAULT NULL,
+  `pending_delete` varchar(1) DEFAULT NULL,
+  `content` longtext,
+  PRIMARY KEY (`upload_config_id`),
+  UNIQUE KEY `upload_config_id` (`upload_config_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `USED_SEQUENCE_NUMBER`
+--
+
+DROP TABLE IF EXISTS `USED_SEQUENCE_NUMBER`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `USED_SEQUENCE_NUMBER` (
+  `resource_sequence_number` varchar(10) NOT NULL,
+  `resource_type` varchar(10) NOT NULL,
+  `zone_region_id` varchar(50) NOT NULL,
+  PRIMARY KEY (`resource_sequence_number`,`resource_type`,`zone_region_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `USER_TRACE`
+--
+
+DROP TABLE IF EXISTS `USER_TRACE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `USER_TRACE` (
+  `user_trace_seq` int(11) NOT NULL AUTO_INCREMENT,
+  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `identity` varchar(12) DEFAULT NULL,
+  `action` varchar(128) DEFAULT NULL,
+  `description` varchar(256) DEFAULT NULL,
+  PRIMARY KEY (`user_trace_seq`)
+) ENGINE=InnoDB AUTO_INCREMENT=392 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VENDOR_CODE`
+--
+
+DROP TABLE IF EXISTS `VENDOR_CODE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VENDOR_CODE` (
+  `vendor_code` varchar(1) NOT NULL,
+  `vendor` varchar(45) NOT NULL DEFAULT '',
+  PRIMARY KEY (`vendor_code`,`vendor`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VFC_MODEL`
+--
+
+DROP TABLE IF EXISTS `VFC_MODEL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VFC_MODEL` (
+  `customization_uuid` varchar(255) NOT NULL,
+  `model_yaml` longblob,
+  `invariant_uuid` varchar(255) DEFAULT NULL,
+  `uuid` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  `naming_policy` varchar(255) DEFAULT NULL,
+  `ecomp_generated_naming` char(1) DEFAULT NULL,
+  `nfc_function` varchar(255) DEFAULT NULL,
+  `nfc_naming_code` varchar(255) DEFAULT NULL,
+  `vm_type` varchar(255) DEFAULT NULL,
+  `vm_type_tag` varchar(255) DEFAULT NULL,
+  `vm_image_name` varchar(255) DEFAULT NULL,
+  `vm_flavor_name` varchar(255) DEFAULT NULL,
+  `high_availability` varchar(255) DEFAULT NULL,
+  `nfc_naming` varchar(255) DEFAULT NULL,
+  `min_instances` int(11) DEFAULT NULL,
+  `max_instances` int(11) DEFAULT NULL,
+  PRIMARY KEY (`customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VFC_TO_NETWORK_ROLE_MAPPING`
+--
+
+DROP TABLE IF EXISTS `VFC_TO_NETWORK_ROLE_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VFC_TO_NETWORK_ROLE_MAPPING` (
+  `seq` int(11) NOT NULL AUTO_INCREMENT,
+  `vfc_customization_uuid` varchar(255) NOT NULL,
+  `network_role` varchar(255) NOT NULL,
+  `vm_type` varchar(255) DEFAULT NULL,
+  `network_role_tag` varchar(255) DEFAULT NULL,
+  `ipv4_count` int(11) NOT NULL,
+  `ipv6_count` int(11) NOT NULL,
+  `ipv4_use_dhcp` char(1) DEFAULT NULL,
+  `ipv6_use_dhcp` char(1) DEFAULT NULL,
+  `ipv4_ip_version` char(1) DEFAULT NULL,
+  `ipv6_ip_version` char(1) DEFAULT NULL,
+  `extcp_subnetpool_id` varchar(512) DEFAULT NULL,
+  `ipv4_floating_count` int(11) DEFAULT NULL,
+  `ipv6_floating_count` int(11) DEFAULT NULL,
+  `ipv4_address_plan_name` varchar(512) DEFAULT NULL,
+  `ipv6_address_plan_name` varchar(512) DEFAULT NULL,
+  `ipv4_vrf_name` varchar(512) DEFAULT NULL,
+  `ipv6_vrf_name` varchar(512) DEFAULT NULL,
+  `subnet_role` varchar(255) DEFAULT NULL,
+  `subinterface_indicator` char(1) DEFAULT NULL,
+  PRIMARY KEY (`seq`),
+  KEY `IX1_VFC_TO_NETWORK_ROLE_MAPPING` (`vfc_customization_uuid`)
+) ENGINE=InnoDB AUTO_INCREMENT=1791 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VF_MODEL`
+--
+
+DROP TABLE IF EXISTS `VF_MODEL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VF_MODEL` (
+  `customization_uuid` varchar(255) NOT NULL,
+  `model_yaml` longblob,
+  `invariant_uuid` varchar(255) DEFAULT NULL,
+  `uuid` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  `name` varchar(255) DEFAULT NULL,
+  `naming_policy` varchar(255) DEFAULT NULL,
+  `ecomp_generated_naming` char(1) DEFAULT NULL,
+  `avail_zone_max_count` int(11) DEFAULT NULL,
+  `nf_function` varchar(255) DEFAULT NULL,
+  `nf_code` varchar(255) DEFAULT NULL,
+  `nf_type` varchar(255) DEFAULT NULL,
+  `nf_role` varchar(255) DEFAULT NULL,
+  `vendor` varchar(255) DEFAULT NULL,
+  `vendor_version` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VF_MODULE_MODEL`
+--
+
+DROP TABLE IF EXISTS `VF_MODULE_MODEL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VF_MODULE_MODEL` (
+  `customization_uuid` varchar(255) NOT NULL,
+  `model_yaml` longblob,
+  `invariant_uuid` varchar(255) DEFAULT NULL,
+  `uuid` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  `vf_module_type` varchar(255) DEFAULT NULL,
+  `availability_zone_count` int(11) DEFAULT NULL,
+  `ecomp_generated_vm_assignments` char(1) DEFAULT NULL,
+  PRIMARY KEY (`customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VF_MODULE_TO_VFC_MAPPING`
+--
+
+DROP TABLE IF EXISTS `VF_MODULE_TO_VFC_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VF_MODULE_TO_VFC_MAPPING` (
+  `seq` int(11) NOT NULL AUTO_INCREMENT,
+  `vf_module_customization_uuid` varchar(255) NOT NULL,
+  `vfc_customization_uuid` varchar(255) NOT NULL,
+  `vm_type` varchar(255) NOT NULL,
+  `vm_count` int(11) NOT NULL,
+  PRIMARY KEY (`seq`),
+  KEY `IX1_VF_MODULE_TO_VFC_MAPPING` (`vf_module_customization_uuid`)
+) ENGINE=InnoDB AUTO_INCREMENT=1591 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VF_TO_NETWORK_ROLE_MAPPING`
+--
+
+DROP TABLE IF EXISTS `VF_TO_NETWORK_ROLE_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VF_TO_NETWORK_ROLE_MAPPING` (
+  `seq` int(11) NOT NULL AUTO_INCREMENT,
+  `vf_customization_uuid` varchar(255) NOT NULL,
+  `network_role` varchar(255) NOT NULL,
+  PRIMARY KEY (`seq`),
+  KEY `IX1_VF_TO_NETWORK_ROLE_MAPPING` (`vf_customization_uuid`)
+) ENGINE=InnoDB AUTO_INCREMENT=348 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VIPR_CONFIGURATION`
+--
+
+DROP TABLE IF EXISTS `VIPR_CONFIGURATION`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VIPR_CONFIGURATION` (
+  `seq` int(11) NOT NULL AUTO_INCREMENT,
+  `serial_number` varchar(255) DEFAULT NULL,
+  `vnf_id` varchar(255) DEFAULT NULL,
+  `vnf_name` varchar(255) DEFAULT NULL,
+  `ecomp_service_instance_id` varchar(255) DEFAULT NULL,
+  `vm_name` varchar(255) DEFAULT NULL,
+  `cloud_region_id` varchar(255) DEFAULT NULL,
+  `cloud_owner` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`seq`)
+) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VIPR_SZ_MANAGER_KEY`
+--
+
+DROP TABLE IF EXISTS `VIPR_SZ_MANAGER_KEY`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VIPR_SZ_MANAGER_KEY` (
+  `vipr_sz_manager_ip_addr` varchar(40) NOT NULL,
+  `vipr_sz_manager_state` varchar(10) DEFAULT NULL,
+  `vipr_sz_manager_api_key` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`vipr_sz_manager_ip_addr`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VLAN_ID_POOL`
+--
+
+DROP TABLE IF EXISTS `VLAN_ID_POOL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VLAN_ID_POOL` (
+  `aic_site_id` varchar(100) NOT NULL,
+  `purpose` varchar(40) NOT NULL,
+  `status` varchar(40) NOT NULL,
+  `vlan_id` int(4) NOT NULL,
+  `svc_instance_id` varchar(80) DEFAULT NULL,
+  `availability_zone` varchar(100) DEFAULT NULL,
+  `vplspe_name` varchar(80) DEFAULT NULL,
+  PRIMARY KEY (`vlan_id`,`aic_site_id`,`purpose`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VLAN_L3INTERFACE_IPV4_ADDRESS`
+--
+
+DROP TABLE IF EXISTS `VLAN_L3INTERFACE_IPV4_ADDRESS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VLAN_L3INTERFACE_IPV4_ADDRESS` (
+  `vnf_id` varchar(80) NOT NULL,
+  `interface_name` varchar(255) NOT NULL,
+  `vlan_interface` varchar(255) NOT NULL,
+  `l3_interface_ipv4_address` varchar(64) NOT NULL,
+  `l3_interface_ipv4_prefix_length` varchar(45) DEFAULT NULL,
+  `vlan_id_inner` varchar(45) DEFAULT NULL,
+  `vlan_id_outer` varchar(45) DEFAULT NULL,
+  `is_floating` varchar(1) DEFAULT NULL,
+  PRIMARY KEY (`vnf_id`,`interface_name`,`vlan_interface`,`l3_interface_ipv4_address`),
+  KEY `FK_VLAN_L3INTERFACE_IPV4_ADDRESS_LINTERFACE_VLAN_IDX` (`vnf_id`,`interface_name`),
+  CONSTRAINT `FK_VLAN_L3INTERFACE_IPV4_ADDRESS_LINTERFACE_VLAN` FOREIGN KEY (`vnf_id`, `interface_name`, `vlan_interface`) REFERENCES `LINTERFACE_VLAN` (`vnf_id`, `interface_name`, `vlan_interface`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VLAN_L3INTERFACE_IPV6_ADDRESS`
+--
+
+DROP TABLE IF EXISTS `VLAN_L3INTERFACE_IPV6_ADDRESS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VLAN_L3INTERFACE_IPV6_ADDRESS` (
+  `vnf_id` varchar(80) NOT NULL,
+  `interface_name` varchar(255) NOT NULL,
+  `vlan_interface` varchar(255) NOT NULL,
+  `l3_interface_ipv6_address` varchar(64) NOT NULL,
+  `l3_interface_ipv6_prefix_length` varchar(45) DEFAULT NULL,
+  `vlan_id_inner` varchar(45) DEFAULT NULL,
+  `vlan_id_outer` varchar(45) DEFAULT NULL,
+  `is_floating` varchar(1) DEFAULT NULL,
+  PRIMARY KEY (`vnf_id`,`interface_name`,`vlan_interface`,`l3_interface_ipv6_address`),
+  KEY `FK_VLAN_L3INTERFACE_IPV6_ADDRESS_LINTERFACE_VLAN_IDX` (`vnf_id`,`interface_name`,`vlan_interface`),
+  CONSTRAINT `FK_VLAN_L3INTERFACE_IPV6_ADDRESS_LINTERFACE_VLAN` FOREIGN KEY (`vnf_id`, `interface_name`, `vlan_interface`) REFERENCES `LINTERFACE_VLAN` (`vnf_id`, `interface_name`, `vlan_interface`) ON DELETE NO ACTION ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VLAN_PLAN_ID`
+--
+
+DROP TABLE IF EXISTS `VLAN_PLAN_ID`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VLAN_PLAN_ID` (
+  `plan_type` varchar(40) NOT NULL,
+  `purpose` varchar(40) NOT NULL,
+  `vlan_plan_id_count` int(4) NOT NULL,
+  PRIMARY KEY (`vlan_plan_id_count`,`plan_type`,`purpose`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VLAN_POOL`
+--
+
+DROP TABLE IF EXISTS `VLAN_POOL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VLAN_POOL` (
+  `aic_site_id` varchar(100) NOT NULL,
+  `availability_zone` varchar(100) NOT NULL,
+  `vlan_plan_id` varchar(100) NOT NULL,
+  `plan_type` varchar(40) NOT NULL,
+  `purpose` varchar(40) NOT NULL,
+  `vlan_id` int(4) NOT NULL,
+  `status` varchar(40) NOT NULL,
+  `reserved_id` varchar(80) DEFAULT NULL,
+  PRIMARY KEY (`aic_site_id`,`availability_zone`,`vlan_plan_id`,`plan_type`,`purpose`,`vlan_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VLAN_RANGES`
+--
+
+DROP TABLE IF EXISTS `VLAN_RANGES`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VLAN_RANGES` (
+  `vlan_plan_id` varchar(100) NOT NULL,
+  `plan_type` varchar(40) NOT NULL,
+  `purpose` varchar(40) NOT NULL,
+  `range_start` int(4) NOT NULL,
+  `range_end` int(4) NOT NULL,
+  `generated` char(1) DEFAULT NULL,
+  PRIMARY KEY (`vlan_plan_id`,`plan_type`,`purpose`,`range_start`,`range_end`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VM_NAME_INDEX`
+--
+
+DROP TABLE IF EXISTS `VM_NAME_INDEX`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VM_NAME_INDEX` (
+  `vm_name_prefix` varchar(255) NOT NULL,
+  `index_number` int(11) NOT NULL,
+  PRIMARY KEY (`vm_name_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VM_NETWORKS`
+--
+
+DROP TABLE IF EXISTS `VM_NETWORKS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VM_NETWORKS` (
+  `vnf_type` varchar(200) NOT NULL,
+  `vm_type` varchar(45) NOT NULL,
+  `network_role` varchar(45) NOT NULL,
+  `assign_ips` tinyint(1) NOT NULL,
+  `assign_macs` tinyint(1) NOT NULL,
+  `assign_floating_ip` tinyint(1) NOT NULL,
+  `ip_count` int(11) DEFAULT NULL,
+  PRIMARY KEY (`vnf_type`,`vm_type`,`network_role`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VM_PROFILE`
+--
+
+DROP TABLE IF EXISTS `VM_PROFILE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VM_PROFILE` (
+  `vnf_type` varchar(200) NOT NULL,
+  `vm_type` varchar(45) NOT NULL,
+  `vm_count` int(11) NOT NULL,
+  PRIMARY KEY (`vnf_type`,`vm_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VNF`
+--
+
+DROP TABLE IF EXISTS `VNF`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VNF` (
+  `vnf_id` varchar(80) NOT NULL,
+  `vnf_name` varchar(80) NOT NULL,
+  `vnf_type` varchar(10) NOT NULL,
+  `orchestration_status` varchar(20) DEFAULT NULL,
+  `heat_stack_id` varchar(80) DEFAULT NULL,
+  `mso_catalog_key` varchar(80) DEFAULT NULL,
+  `availability_zone` varchar(80) DEFAULT NULL,
+  `aic_site_id` varchar(80) DEFAULT NULL,
+  `oam_ipv4_address` varchar(20) DEFAULT NULL,
+  `vnf_name2` varchar(80) DEFAULT NULL,
+  `vpe_id` varchar(80) NOT NULL,
+  `ipv4_loopback0_address` varchar(80) DEFAULT NULL,
+  `license_key` varchar(256) DEFAULT NULL,
+  `entitlement_resource_uuid` varchar(256) DEFAULT NULL,
+  PRIMARY KEY (`vnf_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VNFC_DG_MAPPING`
+--
+
+DROP TABLE IF EXISTS `VNFC_DG_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VNFC_DG_MAPPING` (
+  `vnfc_dg_mapping_id` int(11) NOT NULL AUTO_INCREMENT,
+  `action` varchar(50) DEFAULT NULL,
+  `api_version` varchar(10) DEFAULT NULL,
+  `vnf_type` varchar(50) DEFAULT NULL,
+  `vnfc_type` varchar(50) DEFAULT NULL,
+  `dg_name` varchar(50) NOT NULL,
+  `dg_version` varchar(50) DEFAULT NULL,
+  `dg_module` varchar(50) NOT NULL,
+  PRIMARY KEY (`vnfc_dg_mapping_id`),
+  UNIQUE KEY `input_constraint` (`action`,`api_version`,`vnf_type`,`vnfc_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VNFC_REFERENCE`
+--
+
+DROP TABLE IF EXISTS `VNFC_REFERENCE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VNFC_REFERENCE` (
+  `vnfc_reference_id` int(11) NOT NULL AUTO_INCREMENT,
+  `action` varchar(50) NOT NULL,
+  `vnf_type` varchar(50) NOT NULL,
+  `vm_instance` int(11) NOT NULL,
+  `vnfc_instance` int(11) NOT NULL,
+  `vnfc_type` varchar(50) NOT NULL,
+  `vnfc_function_code` varchar(50) NOT NULL,
+  `ipaddress_v4_oam_vip` varchar(50) DEFAULT NULL,
+  `group_notation_type` varchar(50) DEFAULT NULL,
+  `group_notation_value` varchar(50) DEFAULT NULL,
+  PRIMARY KEY (`vnfc_reference_id`),
+  UNIQUE KEY `vnfc_reference_id` (`vnfc_reference_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VNF_IMAGE`
+--
+
+DROP TABLE IF EXISTS `VNF_IMAGE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VNF_IMAGE` (
+  `application_vendor` varchar(255) NOT NULL,
+  `application_version` varchar(255) NOT NULL,
+  `att_uuid` varchar(255) NOT NULL,
+  `application` varchar(255) DEFAULT NULL,
+  `selflink` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`application_vendor`,`application_version`,`att_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VNF_MODEL_LICENSES`
+--
+
+DROP TABLE IF EXISTS `VNF_MODEL_LICENSES`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VNF_MODEL_LICENSES` (
+  `att_part_number` varchar(255) NOT NULL,
+  `license_assignment_group` varchar(255) NOT NULL,
+  `license_required` tinyint(1) DEFAULT NULL,
+  `entitlement_assignment_group` varchar(255) DEFAULT NULL,
+  `entitlement_required` tinyint(1) DEFAULT '0',
+  `feature_group_uuid` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`att_part_number`,`license_assignment_group`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VNF_MODEL_LICENSE_FEATURES`
+--
+
+DROP TABLE IF EXISTS `VNF_MODEL_LICENSE_FEATURES`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VNF_MODEL_LICENSE_FEATURES` (
+  `att_part_number` varchar(255) NOT NULL,
+  `license_assignment_group` varchar(255) NOT NULL,
+  `feature` varchar(255) NOT NULL,
+  PRIMARY KEY (`att_part_number`,`license_assignment_group`,`feature`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VNF_NAME_INDEX`
+--
+
+DROP TABLE IF EXISTS `VNF_NAME_INDEX`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VNF_NAME_INDEX` (
+  `vnf_name_prefix` varchar(255) NOT NULL,
+  `index_number` int(11) NOT NULL,
+  PRIMARY KEY (`vnf_name_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VNF_NETWORKS`
+--
+
+DROP TABLE IF EXISTS `VNF_NETWORKS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VNF_NETWORKS` (
+  `vnf_type` varchar(200) NOT NULL,
+  `network_role` varchar(45) NOT NULL,
+  PRIMARY KEY (`vnf_type`,`network_role`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VNF_NETWORK_CONNECTION`
+--
+
+DROP TABLE IF EXISTS `VNF_NETWORK_CONNECTION`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VNF_NETWORK_CONNECTION` (
+  `connection_uuid` varchar(80) NOT NULL,
+  `vnf_id` varchar(80) NOT NULL,
+  `connection_id` varchar(80) DEFAULT NULL,
+  `connection_type` varchar(20) DEFAULT NULL,
+  `neutron_network_id` varchar(80) DEFAULT NULL,
+  `neutron_network_name` varchar(80) DEFAULT NULL,
+  `orchestration_status` varchar(20) DEFAULT NULL,
+  `switch_id` varchar(40) DEFAULT NULL,
+  `heat_stack_id` varchar(80) DEFAULT NULL,
+  `mso_catalog_key` varchar(80) DEFAULT NULL,
+  `provider_network` varchar(80) DEFAULT NULL,
+  `port_group_id` varchar(80) DEFAULT NULL,
+  `port_group_name` varchar(80) DEFAULT NULL,
+  PRIMARY KEY (`connection_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VNF_NETWORK_CONNECTION_VLAN`
+--
+
+DROP TABLE IF EXISTS `VNF_NETWORK_CONNECTION_VLAN`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VNF_NETWORK_CONNECTION_VLAN` (
+  `vlan_uuid` varchar(80) NOT NULL,
+  `vlan_id` int(4) NOT NULL,
+  `vlan_type` varchar(5) NOT NULL,
+  `connection_uuid` varchar(80) DEFAULT NULL,
+  PRIMARY KEY (`vlan_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VNF_PROFILE`
+--
+
+DROP TABLE IF EXISTS `VNF_PROFILE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VNF_PROFILE` (
+  `vnf_type` varchar(200) NOT NULL,
+  `availability_zone_count` int(11) NOT NULL,
+  `equipment_role` varchar(80) NOT NULL,
+  PRIMARY KEY (`vnf_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VNF_SERVICE_TO_NETWORK_ROLE_FILTER`
+--
+
+DROP TABLE IF EXISTS `VNF_SERVICE_TO_NETWORK_ROLE_FILTER`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VNF_SERVICE_TO_NETWORK_ROLE_FILTER` (
+  `vnf_service_type` varchar(60) NOT NULL,
+  `network_role_filter` varchar(60) NOT NULL,
+  PRIMARY KEY (`vnf_service_type`,`network_role_filter`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VPE_LOCK`
+--
+
+DROP TABLE IF EXISTS `VPE_LOCK`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VPE_LOCK` (
+  `vpe_name` varchar(20) NOT NULL,
+  `vpn_lock` varchar(20) NOT NULL,
+  PRIMARY KEY (`vpe_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VPE_MAC_ADDRESS_POOL`
+--
+
+DROP TABLE IF EXISTS `VPE_MAC_ADDRESS_POOL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VPE_MAC_ADDRESS_POOL` (
+  `id` int(11) NOT NULL,
+  `mac_address` varchar(50) NOT NULL,
+  `sw_name` varchar(30) NOT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VPE_MAC_ADDRESS_TO_HOSTNAME_MAPPING`
+--
+
+DROP TABLE IF EXISTS `VPE_MAC_ADDRESS_TO_HOSTNAME_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VPE_MAC_ADDRESS_TO_HOSTNAME_MAPPING` (
+  `id` int(11) NOT NULL,
+  `hostname` varchar(50) NOT NULL,
+  `assigned_user` varchar(25) NOT NULL,
+  `assigned_date` date DEFAULT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VPE_POOL`
+--
+
+DROP TABLE IF EXISTS `VPE_POOL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VPE_POOL` (
+  `vpe_name` varchar(20) NOT NULL,
+  `ipv4_oam_address` varchar(20) NOT NULL,
+  `loopback0_ipv4_address` varchar(20) NOT NULL,
+  `provisioning_status` varchar(10) NOT NULL,
+  `aic_site_id` varchar(100) NOT NULL,
+  `availability_zone` varchar(100) NOT NULL,
+  `vlan_id_outer` varchar(20) NOT NULL,
+  `vendor` varchar(20) NOT NULL,
+  `physical_intf_name` varchar(40) NOT NULL,
+  `physical_intf_speed` varchar(20) NOT NULL,
+  `physical_intf_units` varchar(20) NOT NULL,
+  `vpe_uuid` varchar(80) DEFAULT NULL,
+  `vpe_id` varchar(80) NOT NULL,
+  `image_filename` varchar(100) DEFAULT NULL,
+  `as_number` varchar(20) NOT NULL,
+  `loopback5000` varchar(16) DEFAULT NULL,
+  `loopback10` varchar(16) DEFAULT NULL,
+  `aic_version` varchar(50) DEFAULT NULL,
+  `vpe_capacity` int(11) NOT NULL,
+  PRIMARY KEY (`aic_site_id`,`vpe_name`,`availability_zone`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VPLSPE_POOL`
+--
+
+DROP TABLE IF EXISTS `VPLSPE_POOL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VPLSPE_POOL` (
+  `vplspe_name` varchar(20) NOT NULL,
+  `aic_site_id` varchar(100) NOT NULL,
+  `availability_zone` varchar(100) NOT NULL,
+  `physical_intf_name` varchar(40) NOT NULL,
+  `physical_intf_speed` varchar(20) NOT NULL,
+  `physical_intf_units` varchar(20) NOT NULL,
+  `loopback0_ipv4_address` varchar(20) NOT NULL,
+  `vlan_id_outer` varchar(20) NOT NULL,
+  `vplspe_uuid` varchar(80) DEFAULT NULL,
+  `image_filename` varchar(100) DEFAULT NULL,
+  `provisioning_status` varchar(10) DEFAULT NULL,
+  `vendor` varchar(20) DEFAULT NULL,
+  PRIMARY KEY (`vplspe_name`,`aic_site_id`,`availability_zone`,`physical_intf_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VPN_BINDINGS`
+--
+
+DROP TABLE IF EXISTS `VPN_BINDINGS`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VPN_BINDINGS` (
+  `network_customization_uuid` varchar(255) NOT NULL,
+  `binding_uuid` varchar(255) NOT NULL,
+  PRIMARY KEY (`network_customization_uuid`,`binding_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VRR_FUNCTION_CODE_VMTYPE_MAPPING`
+--
+
+DROP TABLE IF EXISTS `VRR_FUNCTION_CODE_VMTYPE_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VRR_FUNCTION_CODE_VMTYPE_MAPPING` (
+  `ptnii_function_code` varchar(128) NOT NULL,
+  `vm_type` varchar(128) NOT NULL,
+  PRIMARY KEY (`ptnii_function_code`,`vm_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VSERVER`
+--
+
+DROP TABLE IF EXISTS `VSERVER`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VSERVER` (
+  `tenant_id` varchar(40) NOT NULL,
+  `vserver_id` varchar(40) NOT NULL,
+  `aic_site_id` varchar(100) NOT NULL,
+  `vendor` varchar(20) NOT NULL,
+  `image_name` varchar(100) NOT NULL,
+  `vnf_type` varchar(10) NOT NULL,
+  `vnf_id` varchar(80) NOT NULL,
+  PRIMARY KEY (`tenant_id`,`vserver_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VSERVER2`
+--
+
+DROP TABLE IF EXISTS `VSERVER2`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VSERVER2` (
+  `tenant_id` varchar(255) NOT NULL,
+  `vserver_id` varchar(128) NOT NULL,
+  `vserver_name` varchar(255) NOT NULL,
+  `vserver_name2` varchar(255) DEFAULT NULL,
+  `prov_status` varchar(20) DEFAULT NULL,
+  `selflink` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`tenant_id`,`vserver_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VSERVER_PSERVER`
+--
+
+DROP TABLE IF EXISTS `VSERVER_PSERVER`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VSERVER_PSERVER` (
+  `vserver_id` varchar(128) NOT NULL,
+  `pserver_hostname` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`vserver_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `VVIG_VM_INSTANCE_TO_CLOUD_REGION_MAPPING`
+--
+
+DROP TABLE IF EXISTS `VVIG_VM_INSTANCE_TO_CLOUD_REGION_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VVIG_VM_INSTANCE_TO_CLOUD_REGION_MAPPING` (
+  `key_id` varchar(128) NOT NULL,
+  `cloud_region` varchar(128) NOT NULL,
+  `key_type` varchar(128) NOT NULL,
+  PRIMARY KEY (`key_id`,`cloud_region`,`key_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `WAN_COMBO_ALLOWABLE`
+--
+
+DROP TABLE IF EXISTS `WAN_COMBO_ALLOWABLE`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `WAN_COMBO_ALLOWABLE` (
+  `combo_sequence` int(11) NOT NULL AUTO_INCREMENT,
+  `topology` varchar(16) DEFAULT 'unknown',
+  `internet_topology` varchar(20) DEFAULT NULL,
+  `wan1` varchar(40) DEFAULT NULL,
+  `wan2` varchar(40) DEFAULT NULL,
+  `new_start_release_flexware` varchar(16) DEFAULT 'unknown',
+  `is_active_flexware` varchar(1) DEFAULT 'N',
+  `new_start_release_dhv` varchar(16) DEFAULT 'unknown',
+  `is_active_dhv` varchar(1) DEFAULT 'N',
+  `ucpe_type` varchar(32) DEFAULT 'stand-alone',
+  `description` varchar(128) NOT NULL,
+  PRIMARY KEY (`combo_sequence`),
+  UNIQUE KEY `IX1_WAN_COMBO_ALLOWABLE` (`internet_topology`,`wan1`,`wan2`)
+) ENGINE=InnoDB AUTO_INCREMENT=147 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+DROP TABLE IF EXISTS `DHCP_MAP`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `DHCP_MAP` (
+  `mac_addr` varchar(128) NOT NULL,
+  `ip_addr` varchar(128) DEFAULT NULL,
+  PRIMARY KEY (`mac_addr`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+DROP TABLE IF EXISTS `RESOURCE_GROUP_TO_TARGET_NODE_MAPPING`;
+CREATE TABLE `RESOURCE_GROUP_TO_TARGET_NODE_MAPPING` (
+  `group_uuid` varchar(255) NOT NULL,
+  `parent_uuid` varchar(255) NOT NULL,
+  `target_node_uuid` varchar(255) NOT NULL,
+  `target_type` varchar(255) NULL,
+  `table_name` varchar(255) NULL,
+  PRIMARY KEY (`group_uuid`, `parent_uuid`, `target_node_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+/*!40101 SET character_set_client = @saved_cs_client */;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+DROP TABLE IF EXISTS `ATTRIBUTE_VALUE_PAIR`;
+CREATE TABLE `ATTRIBUTE_VALUE_PAIR` (
+  `resource_uuid` varchar(255) NOT NULL,
+  `attribute_name` varchar(255) NOT NULL,
+  `resource_type` varchar(255) NOT NULL,
+  `attribute_value` varchar(255) DEFAULT NULL,
+  `resource_customization_uuid` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`resource_uuid`,`attribute_name`,`resource_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+DROP TABLE IF EXISTS `COMPLEX_RESOURCE`;
+CREATE TABLE `COMPLEX_RESOURCE` (
+  `uuid` varchar(255) NOT NULL,
+  `model_yaml` longblob,
+  `invariant_uuid` varchar(255) NOT NULL,
+  `customization_uuid` varchar(255) NOT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  `name` varchar(255) DEFAULT NULL,
+  `description` varchar(255) DEFAULT NULL,
+  `type` varchar(255) NOT NULL,
+  PRIMARY KEY (`uuid`,`customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+DROP TABLE IF EXISTS `NODE_CAPABILITY`;
+CREATE TABLE `NODE_CAPABILITY` (
+  `capability_id` int(11) NOT NULL AUTO_INCREMENT,
+  `capability_provider_uuid` varchar(255) NOT NULL,
+  `capability_provider_customization_uuid` varchar(255) NOT NULL,
+  `capability_name` varchar(255) DEFAULT NULL,
+  `capability_type` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`capability_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=69 DEFAULT CHARSET=latin1;
+
+DROP TABLE IF EXISTS `NODE_REQUIREMENT`;
+CREATE TABLE `NODE_REQUIREMENT` (
+  `requirement_id` int(11) NOT NULL AUTO_INCREMENT,
+  `capability_id` int(11) DEFAULT NULL,
+  `capability_provider_uuid` varchar(255) DEFAULT NULL,
+  `capability_provider_customization_uuid` varchar(255) DEFAULT NULL,
+  `capability_consumer_uuid` varchar(255) NOT NULL,
+  `capability_consumer_customization_uuid` varchar(255) NOT NULL,
+  `requirement_name` varchar(255) NOT NULL,
+  PRIMARY KEY (`requirement_id`),
+  KEY `NODE_REQUIREMENT_TO_NODE_CAPABILITY` (`capability_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;
+
+DROP TABLE IF EXISTS `RELATED_NETWORK_ROLE`;
+CREATE TABLE `RELATED_NETWORK_ROLE` (
+  `network_model_customization_uuid` varchar(255) NOT NULL,
+  `related_network_role` varchar(255) NOT NULL,
+  PRIMARY KEY (`network_model_customization_uuid`,`related_network_role`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+DROP TABLE IF EXISTS `RESOURCE_GROUP`;
+CREATE TABLE `RESOURCE_GROUP` (
+  `resource_uuid` varchar(255) NOT NULL,
+  `group_uuid` varchar(255) NOT NULL,
+  `group_customization_uuid` varchar(255) DEFAULT NULL,
+  `group_invariant_uuid` varchar(255) NOT NULL,
+  `group_name` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  `group_type` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`resource_uuid`,`group_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+DROP TABLE IF EXISTS `RESOURCE_POLICY`;
+CREATE TABLE `RESOURCE_POLICY` (
+  `resource_uuid` varchar(255) NOT NULL,
+  `policy_uuid` varchar(255) NOT NULL,
+  `policy_customization_uuid` varchar(255) DEFAULT NULL,
+  `policy_invariant_uuid` varchar(255) NOT NULL,
+  `policy_name` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  `policy_type` varchar(255) DEFAULT NULL,
+  `property_type` varchar(255) DEFAULT NULL,
+  `property_source` varchar(255) DEFAULT NULL,
+  `property_name` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`resource_uuid`,`policy_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+DROP TABLE IF EXISTS `RESOURCE_POLICY_TO_TARGET_NODE_MAPPING`;
+CREATE TABLE `RESOURCE_POLICY_TO_TARGET_NODE_MAPPING` (
+  `policy_uuid` varchar(255) NOT NULL,
+  `parent_uuid` varchar(255) NOT NULL,
+  `target_node_uuid` varchar(255) NOT NULL,
+  `target_type` varchar(255) DEFAULT NULL,
+  `target_node_customization_uuid` varchar(255) DEFAULT NULL,
+  `policy_customization_uuid` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`policy_uuid`,`parent_uuid`,`target_node_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+DROP TABLE IF EXISTS `SERVICE_MODEL_TO_COMPLEX_RESOURCE_MAPPING`;
+CREATE TABLE `SERVICE_MODEL_TO_COMPLEX_RESOURCE_MAPPING` (
+  `service_uuid` varchar(255) NOT NULL,
+  `complex_resource_uuid` varchar(255) NOT NULL,
+  `complex_resource_customization_uuid` varchar(255) NOT NULL,
+  PRIMARY KEY (`service_uuid`,`complex_resource_uuid`,`complex_resource_customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+DROP TABLE IF EXISTS `VFC_RELATED_NETWORK_ROLE`;
+CREATE TABLE `VFC_RELATED_NETWORK_ROLE` (
+  `vfc_customization_uuid` varchar(255) NOT NULL,
+  `vm_type` varchar(255) NOT NULL,
+  `network_role` varchar(255) NOT NULL,
+  `related_network_role` varchar(255) NOT NULL,
+  PRIMARY KEY (`vfc_customization_uuid`,`vm_type`,`network_role`,`related_network_role`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+DROP TABLE IF EXISTS `VNF_RELATED_NETWORK_ROLE`;
+CREATE TABLE `VNF_RELATED_NETWORK_ROLE` (
+  `vnf_customization_uuid` varchar(255) NOT NULL,
+  `network_role` varchar(255) NOT NULL,
+  `related_network_role` varchar(255) NOT NULL,
+  PRIMARY KEY (`vnf_customization_uuid`,`network_role`,`related_network_role`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- Dump completed on 2017-10-04 18:23:01
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/service_model.data.dump b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/service_model.data.dump
new file mode 100644
index 0000000..0494930
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/service_model.data.dump
@@ -0,0 +1,72 @@
+-- MySQL dump 10.13  Distrib 5.6.22, for Linux (x86_64)
+--
+-- Host: sdnctldb01    Database: sdnctl
+-- ------------------------------------------------------
+-- Server version	5.6.36-enterprise-commercial-advanced-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `SERVICE_MODEL`
+--
+
+DROP TABLE IF EXISTS `SERVICE_MODEL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `SERVICE_MODEL` (
+  `service_uuid` varchar(255) NOT NULL,
+  `model_yaml` longblob,
+  `invariant_uuid` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  `name` varchar(255) DEFAULT NULL,
+  `description` varchar(1024) DEFAULT NULL,
+  `type` varchar(255) DEFAULT NULL,
+  `category` varchar(255) DEFAULT NULL,
+  `ecomp_naming` char(1) DEFAULT NULL,
+  `service_instance_name_prefix` varchar(255) DEFAULT NULL,
+  `filename` varchar(100) DEFAULT NULL,
+  `naming_policy` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`service_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `SERVICE_MODEL`
+--
+
+LOCK TABLES `SERVICE_MODEL` WRITE;
+/*!40000 ALTER TABLE `SERVICE_MODEL` DISABLE KEYS */;
+INSERT INTO `SERVICE_MODEL` VALUES ('0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), ('00e50cbd-ef0f-4b28-821e-f2b583752dd3','!!com.att.sdnctl.uebclient.SdncNetworkServiceModel\ndescription: null\nimports:\n- Second try_vbng: {file: resource-SecondTryVbng-template.yml}\nmetadata: {invariantUUID: dbf9288d-18ef-4d28-82cb-29373028f367, UUID: 00e50cbd-ef0f-4b28-821e-f2b583752dd3,\n  name: vBNG_0202, description: Virtual, type: Service, category: Network L1-3, serviceEcompNaming: false,\n  serviceHoming: false}\ntopology_template:\n  node_templates:\n    Second try_vbng 1:\n      type: com.att.d2.resource.vf.SecondTryVbng\n      metadata: {invariantUUID: 57516bfc-35f5-4169-a4ee-66a495a9c645, UUID: f196fdad-9b74-4fcc-9d38-72f4a71aea77,\n        customizationUUID: 72a9f413-4d16-4f7b-b0bc-d98f87997f01, version: \'1.0\', name: Second try_vbng,\n        description: ntwork, type: VF, category: Generic, subcategory: Network Elements}\n  groups:\n    secondtry_vbng1..SecondTryVbng..VSR_base_hot..module-0:\n      type: com.att.d2.groups.VfModule\n      metadata: {vfModuleModelName: SecondTryVbng..VSR_base_hot..module-0, vfModuleModelInvariantUUID: b73fcd7d-f374-4e7e-a905-f5e58eb8a34a,\n        vfModuleModelUUID: 3b3ff306-b493-4b3d-bb3d-baa13c2d82c7, vfModuleModelVersion: \'1\',\n        vfModuleModelCustomizationUUID: d106e920-0188-48b7-9f90-ae7c1ab43b73}\n      properties: {min_vf_module_instances: 1, vf_module_label: VSR_base_hot, max_vf_module_instances: 1,\n        vf_module_type: Base, vf_module_description: null, volume_group: false, initial_count: 1}\n  substitution_mappings:\n    node_type: com.att.d2.service.Vbng0202\n    capabilities:\n      Second try_vbng 1.attachment_iom_ctrl_fabric_0_port:\n        type: tosca.capabilities.Attachment\n        occurrences: [0, UNBOUNDED]\n      Second try_vbng 1.os_CPM:\n        type: tosca.capabilities.OperatingSystem\n        occurrences: [1, UNBOUNDED]\n        properties:\n          distribution: {type: string, required: false}\n          type: {type: string, required: false}\n          version: {type: version, required: false}\n          architecture: {type: string, required: false}\n      Second try_vbng 1.scalable_CPM:\n        type: tosca.capabilities.Scalable\n        occurrences: [1, UNBOUNDED]\n        properties:\n          max_instances: {type: integer, default: 1, required: false}\n          min_instances: {type: integer, default: 1, required: false}\n          default_instances: {type: integer, required: false}\n      Second try_vbng 1.binding_iom_data_0_port:\n        type: tosca.capabilities.network.Bindable\n        occurrences: [0, UNBOUNDED]\n        valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n      Second try_vbng 1.attachment_iom_mgt_0_port:\n        type: tosca.capabilities.Attachment\n        occurrences: [0, UNBOUNDED]\n      Second try_vbng 1.binding_cpm_ctrl_fabric_0_port:\n        type: tosca.capabilities.network.Bindable\n        occurrences: [0, UNBOUNDED]\n        valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n      Second try_vbng 1.scalable_IOM:\n        type: tosca.capabilities.Scalable\n        occurrences: [1, UNBOUNDED]\n        properties:\n          max_instances: {type: integer, default: 1, required: false}\n          min_instances: {type: integer, default: 1, required: false}\n          default_instances: {type: integer, required: false}\n      Second try_vbng 1.attachment_iom_data_0_port:\n        type: tosca.capabilities.Attachment\n        occurrences: [0, UNBOUNDED]\n      Second try_vbng 1.host_CPM:\n        type: tosca.capabilities.Container\n        occurrences: [1, UNBOUNDED]\n        valid_source_types: [tosca.nodes.SoftwareComponent]\n        properties:\n          num_cpus: {type: integer, required: false}\n          disk_size: {type: scalar-unit.size, required: false}\n          cpu_frequency: {type: scalar-unit.frequency, required: false}\n          mem_size: {type: scalar-unit.size, required: false}\n      Second try_vbng 1.attachment_cpm_mgt_0_port:\n        type: tosca.capabilities.Attachment\n        occurrences: [0, UNBOUNDED]\n      Second try_vbng 1.binding_iom_data_1_port:\n        type: tosca.capabilities.network.Bindable\n        occurrences: [0, UNBOUNDED]\n        valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n      Second try_vbng 1.attachment_iom_data_3_port:\n        type: tosca.capabilities.Attachment\n        occurrences: [0, UNBOUNDED]\n      Second try_vbng 1.binding_iom_mgt_0_port:\n        type: tosca.capabilities.network.Bindable\n        occurrences: [0, UNBOUNDED]\n        valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n      Second try_vbng 1.attachment_iom_data_2_port:\n        type: tosca.capabilities.Attachment\n        occurrences: [0, UNBOUNDED]\n      Second try_vbng 1.binding_iom_data_2_port:\n        type: tosca.capabilities.network.Bindable\n        occurrences: [0, UNBOUNDED]\n        valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n      Second try_vbng 1.endpoint_CPM:\n        type: tosca.capabilities.Endpoint.Admin\n        occurrences: [1, UNBOUNDED]\n        properties:\n          port_name: {type: string, required: false}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          secure: {type: boolean, default: true, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          url_path: {type: string, required: false}\n      Second try_vbng 1.binding_cpm_mgt_0_port:\n        type: tosca.capabilities.network.Bindable\n        occurrences: [0, UNBOUNDED]\n        valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n      Second try_vbng 1.feature:\n        type: tosca.capabilities.Node\n        occurrences: [1, UNBOUNDED]\n      Second try_vbng 1.binding_IOM:\n        type: tosca.capabilities.network.Bindable\n        occurrences: [1, UNBOUNDED]\n      Second try_vbng 1.attachment_cpm_ctrl_fabric_0_port:\n        type: tosca.capabilities.Attachment\n        occurrences: [0, UNBOUNDED]\n      Second try_vbng 1.binding_iom_ctrl_fabric_0_port:\n        type: tosca.capabilities.network.Bindable\n        occurrences: [0, UNBOUNDED]\n        valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n      Second try_vbng 1.binding_iom_data_3_port:\n        type: tosca.capabilities.network.Bindable\n        occurrences: [0, UNBOUNDED]\n        valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n      Second try_vbng 1.binding_CPM:\n        type: tosca.capabilities.network.Bindable\n        occurrences: [1, UNBOUNDED]\n      Second try_vbng 1.attachment_iom_data_1_port:\n        type: tosca.capabilities.Attachment\n        occurrences: [0, UNBOUNDED]\n      Second try_vbng 1.host_IOM:\n        type: tosca.capabilities.Container\n        occurrences: [1, UNBOUNDED]\n        valid_source_types: [tosca.nodes.SoftwareComponent]\n        properties:\n          num_cpus: {type: integer, required: false}\n          disk_size: {type: scalar-unit.size, required: false}\n          cpu_frequency: {type: scalar-unit.frequency, required: false}\n          mem_size: {type: scalar-unit.size, required: false}\n      Second try_vbng 1.os_IOM:\n        type: tosca.capabilities.OperatingSystem\n        occurrences: [1, UNBOUNDED]\n        properties:\n          distribution: {type: string, required: false}\n          type: {type: string, required: false}\n          version: {type: version, required: false}\n          architecture: {type: string, required: false}\n      Second try_vbng 1.endpoint_IOM:\n        type: tosca.capabilities.Endpoint.Admin\n        occurrences: [1, UNBOUNDED]\n        properties:\n          port_name: {type: string, required: false}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          secure: {type: boolean, default: true, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          url_path: {type: string, required: false}\n    requirements:\n      Second try_vbng 1.local_storage_IOM:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Attachment\n        node: tosca.nodes.BlockStorage\n        relationship: tosca.relationships.AttachesTo\n      Second try_vbng 1.link_iom_ctrl_fabric_0_port:\n        occurrences: [1, 1]\n        capability: tosca.capabilities.network.Linkable\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.network.LinksTo\n      Second try_vbng 1.link_cpm_ctrl_fabric_0_port:\n        occurrences: [1, 1]\n        capability: tosca.capabilities.network.Linkable\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.network.LinksTo\n      Second try_vbng 1.link_cpm_mgt_0_port:\n        occurrences: [1, 1]\n        capability: tosca.capabilities.network.Linkable\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.network.LinksTo\n      Second try_vbng 1.link_iom_data_3_port:\n        occurrences: [1, 1]\n        capability: tosca.capabilities.network.Linkable\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.network.LinksTo\n      Second try_vbng 1.local_storage_CPM:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Attachment\n        node: tosca.nodes.BlockStorage\n        relationship: tosca.relationships.AttachesTo\n      Second try_vbng 1.dependency:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Node\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.DependsOn\n      Second try_vbng 1.link_iom_data_2_port:\n        occurrences: [1, 1]\n        capability: tosca.capabilities.network.Linkable\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.network.LinksTo\n      Second try_vbng 1.link_iom_data_0_port:\n        occurrences: [1, 1]\n        capability: tosca.capabilities.network.Linkable\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.network.LinksTo\n      Second try_vbng 1.link_iom_mgt_0_port:\n        occurrences: [1, 1]\n        capability: tosca.capabilities.network.Linkable\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.network.LinksTo\n      Second try_vbng 1.port:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Attachment\n        node: com.att.d2.resource.cp.nodes.heat.network.neutron.Port\n        relationship: com.att.d2.relationships.AttachesTo\n      Second try_vbng 1.link_iom_data_1_port:\n        occurrences: [1, 1]\n        capability: tosca.capabilities.network.Linkable\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.network.LinksTo\ntosca_definitions_version: tosca_simple_yaml_1_0\n','dbf9288d-18ef-4d28-82cb-29373028f367',NULL,'vBNG_0202','Virtual','Service','Network L1-3','N','Vbng0202','service-Vbng0202-template.yml',NULL), ('0a92fd9c-baab-4c03-b4e2-827e2cb9bcc7','!!com.att.sdnctl.uebclient.SdncNetworkServiceModel\ndescription: null\nimports:\n- BK-012317-UUID-VSP: {file: resource-Bk012317UuidVsp-template.yml}\nmetadata: {invariantUUID: 083b57cd-4b76-4924-a64c-610445528063, UUID: 0a92fd9c-baab-4c03-b4e2-827e2cb9bcc7,\n  name: BK-012317-UUID-Service, description: BK-012317-UUID-Service, type: Service,\n  category: Network L1-3, serviceEcompNaming: false, serviceHoming: false}\ntopology_template:\n  inputs:\n    bk012317uuidvsp1_oam_protected_net_id: {type: string, description: OAM network id}\n    bk012317uuidvsp1_ppd_name_0: {type: string, description: name of the PCRF PD instance}\n  node_templates:\n    BK-012317-UUID-VSP 1:\n      type: com.att.d2.resource.vf.Bk012317UuidVsp\n      metadata: {invariantUUID: daeccf0e-d5f0-4b95-98db-0ae23b890d1a, UUID: bd533689-28e0-4601-81d2-545a424a665e,\n        customizationUUID: 14a2c39f-e261-4453-8d09-28f1e006dc91, version: \'1.0\', name: BK-012317-UUID-VSP,\n        description: BK-012317-UUID-VSP, type: VF, category: Network L2-3, subcategory: Gateway}\n      properties:\n        ppd_name_0: {get_input: bk012317uuidvsp1_ppd_name_0}\n        oam_protected_net_id: {get_input: bk012317uuidvsp1_oam_protected_net_id}\n  groups:\n    bk012317uuidvsp1..Bk012317UuidVsp..pcrf_nimbus_oam..module-5:\n      type: com.att.d2.groups.VfModule\n      metadata: {vfModuleModelName: Bk012317UuidVsp..pcrf_nimbus_oam..module-5, vfModuleModelInvariantUUID: 96cf1eea-8bea-40f1-8daf-29b4d9e24139,\n        vfModuleModelUUID: 9dd06cea-7cef-4b3d-ba2d-4e84336a5654, vfModuleModelVersion: \'1\',\n        vfModuleModelCustomizationUUID: fd3104b5-c3bf-4080-81dd-78944dc8a263}\n      properties: {min_vf_module_instances: 0, vf_module_label: pcrf_nimbus_oam, max_vf_module_instances: null,\n        vf_module_type: Expansion, vf_module_description: null, volume_group: true,\n        initial_count: 0}\n    bk012317uuidvsp1..Bk012317UuidVsp..pcrf_base_template_v3_0..module-0:\n      type: com.att.d2.groups.VfModule\n      metadata: {vfModuleModelName: Bk012317UuidVsp..pcrf_base_template_v3_0..module-0,\n        vfModuleModelInvariantUUID: 85f5f4e4-b5e0-4ece-a3aa-bc5c68287700, vfModuleModelUUID: fa4033e7-9c3f-4140-a374-e80a742f6b2f,\n        vfModuleModelVersion: \'1\', vfModuleModelCustomizationUUID: 430443ea-78a2-43f5-8aae-967857ea4466}\n      properties: {min_vf_module_instances: 1, vf_module_label: pcrf_base_template_v3_0,\n        max_vf_module_instances: 1, vf_module_type: Base, vf_module_description: null,\n        volume_group: false, initial_count: 1}\n    bk012317uuidvsp1..Bk012317UuidVsp..pcrf_nimbus_pcm..module-4:\n      type: com.att.d2.groups.VfModule\n      metadata: {vfModuleModelName: Bk012317UuidVsp..pcrf_nimbus_pcm..module-4, vfModuleModelInvariantUUID: d47db54d-8146-4e24-bc88-5ca62ceda22f,\n        vfModuleModelUUID: 3fcb381a-860b-43e0-84e7-00774f43a5d8, vfModuleModelVersion: \'1\',\n        vfModuleModelCustomizationUUID: 2a1d55c3-df91-4a3c-afea-683a69fd4d8a}\n      properties: {min_vf_module_instances: 0, vf_module_label: pcrf_nimbus_pcm, max_vf_module_instances: null,\n        vf_module_type: Expansion, vf_module_description: null, initial_count: 0,\n        volume_group: true}\n    bk012317uuidvsp1..Bk012317UuidVsp..pcrf_nimbus_ppd..module-3:\n      type: com.att.d2.groups.VfModule\n      metadata: {vfModuleModelName: Bk012317UuidVsp..pcrf_nimbus_ppd..module-3, vfModuleModelInvariantUUID: 72e9eff2-d1c7-4dcb-8ffc-43afedb65e53,\n        vfModuleModelUUID: b509d8dc-7cb0-4139-ab85-5d764cd17bb5, vfModuleModelVersion: \'1\',\n        vfModuleModelCustomizationUUID: 9f14ae6b-b156-4b33-ad23-77aa3d9d38ac}\n      properties: {min_vf_module_instances: 0, vf_module_label: pcrf_nimbus_ppd, max_vf_module_instances: null,\n        vf_module_type: Expansion, vf_module_description: null, initial_count: 0,\n        volume_group: false}\n    bk012317uuidvsp1..Bk012317UuidVsp..pcrf_nimbus_psm..module-1:\n      type: com.att.d2.groups.VfModule\n      metadata: {vfModuleModelName: Bk012317UuidVsp..pcrf_nimbus_psm..module-1, vfModuleModelInvariantUUID: 07abb9e0-0714-4b9c-b269-b52a405ab4b3,\n        vfModuleModelUUID: 2b66c94f-3de3-45be-ad65-109d3c016bb0, vfModuleModelVersion: \'1\',\n        vfModuleModelCustomizationUUID: 357384b3-9085-42a1-b3ba-ec9baf9a9de1}\n      properties: {min_vf_module_instances: 0, vf_module_label: pcrf_nimbus_psm, max_vf_module_instances: null,\n        vf_module_type: Expansion, vf_module_description: null, volume_group: false,\n        initial_count: 0}\n    bk012317uuidvsp1..Bk012317UuidVsp..pcrf_nimbus_pps..module-2:\n      type: com.att.d2.groups.VfModule\n      metadata: {vfModuleModelName: Bk012317UuidVsp..pcrf_nimbus_pps..module-2, vfModuleModelInvariantUUID: 1d7dbc30-ac35-4120-b5ea-a4fe5b570de3,\n        vfModuleModelUUID: 18e1160f-f917-446e-954c-3ed3e8d5b13d, vfModuleModelVersion: \'1\',\n        vfModuleModelCustomizationUUID: f37780a8-e662-4b17-a0e9-ba798667be00}\n      properties: {min_vf_module_instances: 0, vf_module_label: pcrf_nimbus_pps, max_vf_module_instances: null,\n        vf_module_type: Expansion, vf_module_description: null, volume_group: false,\n        initial_count: 0}\n  substitution_mappings:\n    node_type: com.att.d2.service.Bk012317UuidService\n    capabilities:\n      BK-012317-UUID-VSP 1.disk.read.bytes.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of reads, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.read.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.latency:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average disk latency, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: ms, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.latency, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.vcpus:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of virtual CPUs allocated to the instance,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: vcpu, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: vcpus, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.scalable:\n        type: tosca.capabilities.Scalable\n        occurrences: [1, UNBOUNDED]\n        properties:\n          max_instances: {type: integer, default: 1, required: false}\n          min_instances: {type: integer, default: 1, required: false}\n          default_instances: {type: integer, required: false}\n      BK-012317-UUID-VSP 1.instance:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Existence of instance, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: instance, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: instance, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.memory:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Volume of RAM allocated to the instance,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: MB, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: memory, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.write.requests.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of write requests, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: request/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.write.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.feature:\n        type: tosca.capabilities.Node\n        occurrences: [1, UNBOUNDED]\n      BK-012317-UUID-VSP 1.disk.write.requests:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of write requests, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: request, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.write.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.device.iops:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average disk iops per device, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: count/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.iops, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.device.latency:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average disk latency per device, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: ms, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.latency, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.ephemeral.size:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Size of ephemeral disk, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: GB, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.ephemeral.size, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.device.usage:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: The physical size in bytes of the image container on the host per device,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.write.bytes:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Volume of writes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.write.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.host:\n        type: tosca.capabilities.Container\n        occurrences: [1, UNBOUNDED]\n        valid_source_types: [tosca.nodes.SoftwareComponent]\n        properties:\n          num_cpus: {type: integer, required: false}\n          disk_size: {type: scalar-unit.size, required: false}\n          cpu_frequency: {type: scalar-unit.frequency, required: false}\n          mem_size: {type: scalar-unit.size, required: false}\n      BK-012317-UUID-VSP 1.disk.allocation:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: The amount of disk occupied by the instance on the host machine,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.allocation, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.network.incoming.packets.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of incoming packets, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: packet/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.incoming.packets.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.network.outgoing.packets.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of outgoing packets, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: packet/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.outgoing.packets.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.device.capacity:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: The amount of disk per device that the instance can see,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.capacity, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.attachment:\n        type: tosca.capabilities.Attachment\n        occurrences: [0, UNBOUNDED]\n      BK-012317-UUID-VSP 1.network.outgoing.bytes:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of outgoing bytes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.outgoing.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.device.write.requests.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of write requests, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: request/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.write.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.network.incoming.bytes.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of incoming bytes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.incoming.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.memory.resident:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Volume of RAM used by the instance on the physical machine,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: MB, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: memory.resident, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.network.outgoing.bytes.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of outgoing bytes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.outgoing.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.device.read.bytes.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of reads, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.read.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.cpu:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: CPU time used, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: ns, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: cpu, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.write.bytes.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of writes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.write.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.iops:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average disk iops, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: count/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.iops, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.network.outpoing.packets:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of outgoing packets, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: packet, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.outpoing.packets, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.device.write.bytes.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of writes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.write.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.binding:\n        type: tosca.capabilities.network.Bindable\n        occurrences: [0, UNBOUNDED]\n        valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n      BK-012317-UUID-VSP 1.cpu_util:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average CPU utilization, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: \'%\', description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: cpu_util, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.capacity:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: The amount of disk that the instance can see,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.capacity, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.device.read.requests:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of read requests, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: request, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.read.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.endpoint:\n        type: tosca.capabilities.Endpoint.Admin\n        occurrences: [1, UNBOUNDED]\n        properties:\n          port_name: {type: string, required: false}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          secure: {type: boolean, default: true, required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.device.read.bytes:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Volume of reads, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.read.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.device.allocation:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: The amount of disk per device occupied by the instance on the host machine,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.allocation, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.root.size:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Size of root disk, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: GB, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.root.size, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.usage:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: The physical size in bytes of the image container on the host,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.cpu.delta:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: CPU time used since previous datapoint,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Delta, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: ns, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: cpu.delta, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.device.read.requests.rate:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Average rate of read requests, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: request/s, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.read.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.os:\n        type: tosca.capabilities.OperatingSystem\n        occurrences: [1, UNBOUNDED]\n        properties:\n          type: {type: string, required: false}\n          distribution: {type: string, required: false}\n          version: {type: version, required: false}\n          architecture: {type: string, required: false}\n      BK-012317-UUID-VSP 1.network.incoming.packets:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of incoming packets, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: packet, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.incoming.packets, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.memory.usage:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Volume of RAM used by the instance from the amount of its allocated memory,\n            description: Description of the metric, required: false}\n          type: {type: string, default: Gauge, description: \'Type of the metric value,\n              for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: MB, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: memory.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.read.requests:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of read requests, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: request, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.read.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.device.write.bytes:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Volume of writes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.write.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.link:\n        type: tosca.capabilities.network.Linkable\n        occurrences: [0, UNBOUNDED]\n      BK-012317-UUID-VSP 1.disk.device.write.requests:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of write requests, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: request, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.device.write.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: disk, description: \'Category of the metric,\n              for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.network.incoming.bytes:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Number of incoming bytes, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: network.incoming.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: network, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n      BK-012317-UUID-VSP 1.disk.read.bytes:\n        type: com.att.d2.capabilities.metric.Ceilometer\n        description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n        occurrences: [1, UNBOUNDED]\n        properties:\n          initiator: {type: string, default: source, required: false}\n          network_name: {type: string, default: PRIVATE, required: false}\n          description: {type: string, default: Volume of reads, description: Description of the metric,\n            required: false}\n          type: {type: string, default: Cumulative, description: \'Type of the metric\n              value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n          secure: {type: boolean, default: false, required: false}\n          ports:\n            type: map\n            required: false\n            entry_schema: {type: PortSpec}\n          port_name: {type: string, required: false}\n          unit: {type: string, default: B, description: Unit of the metric value,\n            required: true}\n          protocol: {type: string, default: tcp, required: false}\n          port: {type: PortDef, required: false}\n          name: {type: string, default: disk.read.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n            required: true}\n          category: {type: string, default: compute, description: \'Category of the\n              metric, for an example, compute, disk, network, storage and etc.\', required: false}\n          url_path: {type: string, required: false}\n    requirements:\n      BK-012317-UUID-VSP 1.dependency:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Node\n        node: tosca.nodes.Root\n        relationship: tosca.relationships.DependsOn\n      BK-012317-UUID-VSP 1.local_storage:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Attachment\n        node: tosca.nodes.BlockStorage\n        relationship: tosca.relationships.AttachesTo\n      BK-012317-UUID-VSP 1.link:\n        occurrences: [1, 1]\n        capability: tosca.capabilities.network.Linkable\n        relationship: tosca.relationships.network.LinksTo\n      BK-012317-UUID-VSP 1.port:\n        occurrences: [0, UNBOUNDED]\n        capability: tosca.capabilities.Attachment\n        node: com.att.d2.resource.cp.nodes.heat.network.neutron.Port\n        relationship: com.att.d2.relationships.AttachesTo\ntosca_definitions_version: tosca_simple_yaml_1_0\n','083b57cd-4b76-4924-a64c-610445528063',NULL,'BK-012317-UUID-Service','BK-012317-UUID-Service','Service','Network L1-3','N','Bk012317UuidService','service-Bk012317UuidService-template.yml',NULL);
+/*!40000 ALTER TABLE `SERVICE_MODEL` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+DROP TABLE IF EXISTS `SERVICE_MODEL_TO_VF_MODEL_MAPPING`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `SERVICE_MODEL_TO_VF_MODEL_MAPPING` (
+  `service_uuid` varchar(255) NOT NULL,
+  `vf_uuid` varchar(255) NOT NULL,
+  `vf_customization_uuid` varchar(255) NOT NULL,
+  `service_invariant_uuid` varchar(255) DEFAULT NULL,
+  PRIMARY KEY(`service_uuid`, `vf_uuid`, `vf_customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+-- Dump completed on 2017-10-12 20:48:44
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/truststoreONAPall.jks b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/truststoreONAPall.jks
new file mode 100755
index 0000000..ff844b1
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/truststoreONAPall.jks
Binary files differ
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/vf_model.data.dump b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/vf_model.data.dump
new file mode 100644
index 0000000..6e528e5
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/vf_model.data.dump
@@ -0,0 +1,67 @@
+-- MySQL dump 10.13  Distrib 5.6.22, for Linux (x86_64)
+--
+-- Host: sdnctldb01    Database: sdnctl
+-- ------------------------------------------------------
+-- Server version	5.6.36-enterprise-commercial-advanced-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `VF_MODEL`
+--
+
+DROP TABLE IF EXISTS `VF_MODEL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VF_MODEL` (
+  `customization_uuid` varchar(255) NOT NULL,
+  `model_yaml` longblob,
+  `invariant_uuid` varchar(255) DEFAULT NULL,
+  `uuid` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  `name` varchar(255) DEFAULT NULL,
+  `naming_policy` varchar(255) DEFAULT NULL,
+  `ecomp_generated_naming` char(1) DEFAULT NULL,
+  `avail_zone_max_count` int(11) DEFAULT NULL,
+  `nf_function` varchar(255) DEFAULT NULL,
+  `nf_code` varchar(255) DEFAULT NULL,
+  `nf_type` varchar(255) DEFAULT NULL,
+  `nf_role` varchar(255) DEFAULT NULL,
+  `vendor` varchar(255) DEFAULT NULL,
+  `vendor_version` varchar(255) DEFAULT NULL,
+  `sdnc_model_name` varchar(255) DEFAULT NULL,
+  `sdnc_model_version` varchar(255) DEFAULT NULL,
+  `sdnc_artifact_name` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `VF_MODEL`
+--
+
+LOCK TABLES `VF_MODEL` WRITE;
+/*!40000 ALTER TABLE `VF_MODEL` DISABLE KEYS */;
+INSERT INTO `VF_MODEL` VALUES ('002c7b3f-2cf5-4a36-8c68-9952d258e26a','null','f07ca67d-01fd-4eb7-8ed3-9ae36cc5689d','487dc954-8913-4485-9eea-17328023ae37','1.0','RG_3-17_Juniper',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'null','null'),('0882e51b-a150-46d5-95ff-ba39e6b0e9cd','null','e84297f3-b740-468b-a462-5b598218ba49','d1761fed-6c16-4ac2-a5b8-acc19345de7c','1.0','Erez-Test',NULL,NULL,1,NULL,NULL,NULL,NULL,'Erez-test','1.0'),('0ac79616-4f69-4936-8f31-5ce982282be2','null','d3f33c8f-bd9f-447d-b4d2-ad6fc5aea83f','2abcec58-fe97-478e-a58f-35c8cdc3ec3d','1.0','Tunnel_XConn for DHV Testing',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'AT&T','0'),('0b70d1c0-81cd-49ff-a023-ea77ea616034','null','4855e399-a5cd-4c22-96d0-72d12906a199','5f71acf1-30e5-4832-9c7b-85ec7fd4c814','1.0','RG_5-23_CSR',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('13f2e3ec-103a-433e-a7d2-e6481ad7555d','null','966e9e4d-44b4-4b21-beb7-0d627e744cde','d68d5e8f-5f0c-40bf-aab4-c0526c908ca9','1.0','RG_5-12_vMOG_SDNGC',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('14db7127-331a-476a-a160-ab719ed2216a','null','af94e0b5-454c-4fd8-b62b-ef27632afd22','71b87384-8e60-4d0b-9ed0-757245996fc3','1.0','VID-PCRF-05-15-17',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('14eadd76-73fd-4f21-b497-74ae30c112c8','null','54e45ec1-0c26-419e-9406-59ea3048a9a4','d2e9a881-9c3c-4989-bbc4-3926bbfaa2f3','1.0','IXLAtest',NULL,NULL,1,NULL,NULL,NULL,NULL,'ATT','1.0'),('16ecd2b2-8d3f-4a70-ada1-a4d5cb4a3fc4','null','8ae2cd75-b3f3-4066-9565-f2d1a11776be','cd39dc66-8f81-46df-9c15-bea7cb4d45ed','4.0','VID-PCRF-031517-VSP',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('17af1f68-4cd8-4ea3-82c7-32681aa4652f','null','64a1421f-8345-4221-9e8d-3b98363312ac','7b12d706-4fd3-4d57-b56e-7a4692f31968','1.0','vHSS-EPC-RDM3-Lab-VF-0921',NULL,'Y',1,NULL,NULL,NULL,NULL,'Mobility Vendor','1.0'),('1a6e8495-ae7f-4054-a749-274d94043b26','null','c238a6ae-4ac1-4261-a022-3cb3dac69a20','e971cc83-5589-4f8d-8edf-e9d2f0e8c982','2.0','VF_zrdm5bpxtc02_092017',NULL,'Y',1,NULL,NULL,NULL,NULL,'Ericsson','1.0'),('1e7a8782-7bf6-4726-a26e-a5e4eca6cba1','null','5255679f-0d50-49e3-82f1-e51bca8cf6d1','f6d6767d-c015-4924-9052-97659f8a16e3','1.0','eNodeBALU',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'alu','123456'),('23165057-8f27-47e9-a522-d12ed273d2f2','null','d87f6943-1225-4e69-9407-72d6472d84aa','bf94dc77-0892-4be1-a66b-f2f3cc3a44cb','1.0','RG_5-23_Wanx',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('232972fe-4ee2-4056-b23a-73c5052eb791','null','af94e0b5-454c-4fd8-b62b-ef27632afd22','71b87384-8e60-4d0b-9ed0-757245996fc3','1.0','VID-PCRF-05-15-17',NULL,NULL,1,'function_2','code_1','Type_1','role_1','null','null'),('28eede97-7501-4619-94a9-a683ff413f8b','null','20616b93-935e-4329-85d5-bea6d2c08379','7b12aaae-68ef-4376-9663-18ee5503f8c9','1.0','RG_3-17_WANx',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'null','null'),('2fdb7e0a-eb44-457b-a9ed-f7f83351aff3','null','6b4aa415-8d03-4fcd-bef4-187c216d9f3b','66a12a1c-47ab-4921-b2f9-e8aaf4ff3af7','2.0','MOBT Nimbus 3 Sprint 1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Mobility Vendor','1.0'),('30bf4d55-85ae-40c1-90c3-7f2fddc1fb91','null','640869f2-0e92-43c8-911f-b63022f4adf8','92c2f336-3d56-4f53-9bcc-2a1079ff682c','1.0','BK-Sanity-06-22-17-VF',NULL,NULL,1,NULL,NULL,NULL,NULL,'BK-Sanity-05-11-17','1.0'),('31bf2df5-b35d-4823-91d0-a1d24b6a1a9b','null','b94e6bb6-e5c9-4768-b4ee-1c9dc4c8c730','9e4977a8-41d7-49ec-aeb5-e1332013ed94','1.0','RG_6-22_vMOG2',NULL,NULL,1,NULL,NULL,NULL,NULL,'RG_3-15-_VLM','1.0'),('31f3e4bf-94c2-4699-b9ff-a08d0c28eeec','null','d87f6943-1225-4e69-9407-72d6472d84aa','bf94dc77-0892-4be1-a66b-f2f3cc3a44cb','1.0','RG_5-23_Wanx',NULL,NULL,1,NULL,NULL,NULL,NULL,'RG_3-15-_VLM','1.0'),('3204e4cd-a665-4a95-b66a-bc80a6a0fabf','null','944d3f67-4441-4728-aa3c-33d4109e17e9','8961a6e1-c463-40c3-9b3a-fe8c620b1189','1.0','BK-RADCOM--062117',NULL,NULL,1,NULL,NULL,NULL,NULL,'BK-Sanity-05-11-17','1.0'),('32cc97d7-14cb-4727-8e17-ec70ed56a651','null','58d838ea-e864-4a8e-9fee-bb3cc1f3f2be','4995eb33-f827-4eb1-be90-816efcad28b6','2.0','sixsix',NULL,NULL,1,NULL,NULL,NULL,NULL,'at&t','000000'),('37f02ecf-c30f-485e-a2ae-5e81fba64003','null','17bda8fa-d79b-4a0b-bcf9-b9c583fd286c','0d6dda79-c0ba-4567-8319-d3e3b6b1580e','1.0','Service_Admin for DHV Test',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'AT&T','0'),('380572bc-4a89-4f4e-85f1-2c250bf0e6c8','null','64f181a7-61ef-4df1-91b6-7b931b9233fd','9c351809-d899-401f-8e16-35934ad3ba71','1.0','MVM_SBC_1710_092017',NULL,'Y',1,NULL,NULL,NULL,NULL,'Metaswitch','1.0'),('3a10db5a-378f-4fd6-a8d4-b731a4bbddf6','null','af94e0b5-454c-4fd8-b62b-ef27632afd22','71b87384-8e60-4d0b-9ed0-757245996fc3','1.0','VID-PCRF-05-15-17',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('3dc7aa9f-ab87-4e45-94f9-bbffe52b8a22','null','9c1724fd-fea1-4b74-8474-86cd1867d3bb','3bc009b9-4f40-4613-b12b-da23ce8aaaaa','2.0','BK-vBNG-1702-05-16-17',NULL,NULL,1,NULL,NULL,NULL,NULL,'141_vCPM-05-05-17','1.0'),('3e12c838-8735-48e8-8b6e-2254370adc83','null','0fcabde3-c5fd-4ebc-9c62-dad025eaca63','e750d39d-268a-4c79-8b99-894d2ead1713','2.0','RG_5-23_ContrailRoute',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('3f7bdb33-28ec-4a6b-baa2-84af2cfb5df8','null','54e45ec1-0c26-419e-9406-59ea3048a9a4','d2e9a881-9c3c-4989-bbc4-3926bbfaa2f3','1.0','IXLAtest',NULL,NULL,1,NULL,NULL,NULL,NULL,'ATT','1.0'),('3fae5e32-b3b7-4ae2-8194-00397de12415','null','f023d0de-56a0-4cb4-b50b-9604808b936a','19c3d1eb-57f4-4d31-ba93-73305e0fa076','22.0','EFMC_DBE_Nin',NULL,'Y',1,NULL,NULL,NULL,NULL,'JUNIPER ','1.0'),('47c2c5f4-1b74-4ddb-968f-d1e38e5b009a','null','e02fd1cc-8b99-4121-8bd8-5f43bdfa3f43','314624ea-ba6d-45ad-856c-0576d5a202cb','2.0','Steph Preload Demo VNF mDNS',NULL,NULL,1,'Mobile DNS',NULL,NULL,NULL,'RG_3-15-_VLM','1.0'),('47d8dbb8-f8b4-4316-9303-94268037bea8','null','e9726c10-ebaf-42bd-a018-1c4fe6dc5bf9','93a15c58-cf63-40df-93a2-1f3aad06e050','1.0','StellaPattern5',NULL,NULL,1,NULL,NULL,NULL,NULL,'vlmstella_scp','1.0'),('4b50c49f-678a-4a80-bca1-b93b6699c29f','null','cc951666-5573-4c5c-8a2f-aed6b24c51a7','1da6a669-c0a6-4f06-ab6a-71df8d2a38de','1.0','RG_5-23_Juniper',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('4c462123-73ba-49fc-a0d1-ab3db4206d2e','null','8fe74968-dd22-4714-9e85-0f251c666f83','b66f10b4-9c56-4fb2-adf9-8252fa769a40','1.0','VSP1707061',NULL,NULL,1,NULL,NULL,NULL,NULL,'VLM1707061','1.0'),('4f2c3850-0e53-4c8d-91e1-ab0f41858b3b','null','4eff900a-9783-4cfd-ba06-b3c969248c98','c4c962e6-f0b6-45c5-936c-0c737e4ce431','1.0','BK-Performance',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('4f522401-b61f-44af-a7ae-de55516d4c6c','null','4855e399-a5cd-4c22-96d0-72d12906a199','5f71acf1-30e5-4832-9c7b-85ec7fd4c814','1.0','RG_5-23_CSR',NULL,NULL,1,NULL,NULL,NULL,NULL,'RG_3-15-_VLM','1.0'),('4f90bfae-b0de-4764-9049-759ea90fd11d','null','5e2be8e3-4ccc-4add-85b4-7cd0a4e70176','4935c10f-dca9-4f72-9f71-3e224c092b5e','2.0','MOW_ADIG_VPE_BV',NULL,'Y',1,NULL,NULL,NULL,NULL,'Juniper valid 2','1.0'),('55445025-028e-4b5f-8e59-3fc71b140c7c','null','b94e6bb6-e5c9-4768-b4ee-1c9dc4c8c730','9e4977a8-41d7-49ec-aeb5-e1332013ed94','1.0','RG_6-22_vMOG2',NULL,NULL,1,'Mobility Orchestration Gateway (MOG)','MOGX','Application','vMOG','RG_3-15-_VLM','1.0'),('56179cd8-de4a-4c38-919b-bbc4452d2d73','null','e8edfda2-a9d2-422d-a49c-32cad3d19d5a','8eb949d6-9635-426c-9f70-7edb4c1d5cc8','1.0','FDNT',NULL,NULL,2,'some nf funcion','some code','some nf type','some nf role','ciLicense2a511793','1.0'),('562d03ac-d59c-4ee8-8f96-b9b36aa7c889','null','68ed6ecf-37cd-4480-9338-15d847b26a55','aefb8cc8-b44b-432e-9569-58ee9401de9e','1.0','RG_5-23_Fortinet',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('5907fbd1-8744-4b5a-885e-a42fdf0a299a','null','b94e6bb6-e5c9-4768-b4ee-1c9dc4c8c730','368a1605-cb2e-4bc2-b4ce-ca47edf7ebbf','2.0','RG_6-22_vMOG2',NULL,NULL,1,NULL,NULL,NULL,NULL,'RG_3-15-_VLM','1.0'),('5ade5817-4749-4f33-86b0-a8ef8672e4e8','null','d149c45a-b42f-419a-9fac-f9c359fc2034','3b25707a-d345-4a80-8744-73adf8f2e67b','3.0','greatdefect',NULL,NULL,1,NULL,NULL,NULL,NULL,'ATT','1.0'),('5d45dd21-8a7d-4e90-8d77-6f28717de199','null','2a08c64c-9520-4945-a8af-4cbd70a756d9','5ac5647e-bd70-487c-8cb4-aa3ef0733c33','1.0','2016-20-vISBC3VF',NULL,'Y',1,NULL,NULL,NULL,NULL,'Metaswitch','1.0'),('5e18b3bb-1072-40f1-baf2-36742edcfc93','null','573ef755-d774-410b-ad73-5789ba779cdb','3fa8d519-7f9f-4ac9-9e43-74597ab91e19','1.0','RG_vMOG_5-15_VSP',NULL,NULL,1,'function','code','type','role','null','null'),('5ee69e8a-f8f3-41dd-a590-a1d7ae9f5796','null','9c1724fd-fea1-4b74-8474-86cd1867d3bb','1ddcf9c9-522f-4ce6-a92d-f6442edb42be','1.0','BK-vBNG-1702-05-16-17',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('635d73cb-baf6-42e7-9ae4-ac44e6344105','null','d149c45a-b42f-419a-9fac-f9c359fc2034','6342a6fc-0c83-40d9-8a29-d14332731088','2.0','greatdefect',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('64b23494-215e-48b1-a868-746fa3922679','null','7bc3ea49-c529-42fa-b396-149913d4948e','54707a5f-5e63-4e06-8874-64a67b56b032','3.0','FN vProbe BE 11 2 5 1 VF',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'RADCOM','1.0'),('65962e6a-2ec4-405b-8b5c-b59c8600c119','null','887ba3f3-4895-4a07-9fca-2f85eae2197d','2d40b8a0-6a42-4f55-9ef4-89f50f0816b7','2.0','2016-73_MOW-AVPN-vPE-BV-L',NULL,'Y',1,NULL,NULL,NULL,NULL,'Juniper valid 2','1.0'),('666601b2-f193-4543-847c-92b217da64de','null','a9e8acb6-aa6b-42f0-a708-1e345f848b41','1c38215b-c380-43be-b7a1-3c98bfe0d067','1.0','Testlatest1710VSP',NULL,'Y',1,NULL,NULL,NULL,NULL,'Mobility Vendor','1.0'),('67db60f5-6818-4baf-ac5a-e5d00f83b916','null','9eb25d67-2482-4647-aca5-08b1136cbd40','9625ab00-53c0-44cb-a661-093a5145eb68','1.0','6i6qHMWC66bXeYG0n73M1',NULL,NULL,1,NULL,NULL,NULL,NULL,'9qP6cJXAwbEN4Dod5FIK1','1'),('698e68c4-2f63-4280-93fa-32abedb0c9b1','null','54e45ec1-0c26-419e-9406-59ea3048a9a4','1d71d759-5218-4a9c-a74d-d9f2e1e41624','2.0','IXLAtest','nf.naming',NULL,1,'Ixia Ixload for end-2-end SUT','nf,code','Test Tool','vTools','ATT','1.0'),('6d83dd0e-5f47-4199-95fe-c8f05739c954','null','8c27db30-3417-4310-8cca-739033e16528','25ed9038-5d0d-4d58-8028-21a380fc4909','1.0','VSP_new1',NULL,NULL,1,NULL,NULL,NULL,NULL,'VLM_new1','1.0'),('70279afc-93ed-4c05-bacb-38c06ddf253d','null','76092c54-24e1-4757-b404-c165db98f011','4f048a9d-5b51-4b46-8736-a62b9ae6592d','1.0','RG_3-17_vCSR',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'null','null'),('77854203-788f-4459-b217-decfa65d8b65','null','04e561a8-16dd-43e9-867a-21431ed94c88','2abc9f02-613f-421e-8d5c-f7fed056480c','1.0','MNSOAM DEMO',NULL,'Y',1,NULL,NULL,NULL,NULL,'ATTSa997j','1.0'),('7b37efd4-15b4-4744-a477-06784f21d5f7','null','06ed3d2e-aaeb-4529-a87d-658301a95436','83d5ee29-0d9d-4f4e-bbe7-39e117fb84b6','5.0','VF-SSC-vISBC-APPC-Config',NULL,'Y',1,NULL,NULL,NULL,NULL,'Metaswitch','v1.0'),('8027ed9d-44c7-4bcb-ad2c-902fe50e8a4b','null','8ae2cd75-b3f3-4066-9565-f2d1a11776be','1c31fc16-f8da-45a6-b05f-76ae36cee911','3.0','VID-PCRF-031517-VSP',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('80fac977-55b1-460e-934d-ffe6055d67e2','null','6b4aa415-8d03-4fcd-bef4-187c216d9f3b','10a4a71a-d7d7-4355-9877-3034d7bfd50f','1.0','MOBT Nimbus 3 Sprint 1',NULL,'Y',1,NULL,NULL,NULL,NULL,'Mobility Vendor','1.0'),('819ef122-ca19-4141-a61e-62922f8fc279',NULL,NULL,'ff2ae348-214a-11e7-93ae-92361f002673','version','name',NULL,'Y',0,'nf-function-1','nf-code-1','nf-type-1','nf-role-1',NULL,NULL),('81c06d59-f43c-4757-8f6c-f04599f328ab','null','bc3622d2-a645-4806-80f2-96b04a866bbf','3f283439-4e0e-4a6a-9b31-da5d0cb05b52','1.0','29NFOD',NULL,NULL,1,NULL,NULL,NULL,NULL,'29NFOD','29NFOD'),('84ced91f-34b9-4769-8238-524cccc66538','null','054a06cc-7713-4d51-a3ca-51e2ce4585ba','507ab4a9-bd83-4806-bf2f-03e84b494807','1.0','vVIG_AIC-05-22-17',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('87743f2b-dba0-49bf-b035-4f2a35502bd3','null','06ed3d2e-aaeb-4529-a87d-658301a95436','ca554a79-3b62-4fd6-aa17-e79555df3a3e','4.0','VF-SSC-vISBC-APPC-Config',NULL,'Y',1,NULL,NULL,NULL,NULL,'Metaswitch','v1.0'),('88122b3f-a72a-4fa9-ad31-dbb102d13051','null','b0d77932-dadd-4bde-82c9-0bcc367cb81c','ce7f92a3-d5a8-4830-b1f9-72d32ff0f2bc','1.0','Dev2DevIpAssign_24_07','Dev2DevVfNamingPolicy','Y',1,'Dev2DevNfFunction','Dev2DevNfNamingCode','Dev2DevNfType','Dev2DevNfRole','Cisco','1.0'),('8a2c15b4-9817-414c-8cab-c672d4bd47ac','null','66ca7353-09a9-4caf-aee2-707ce2d53581','7f1fe626-fe0d-4372-ba52-5482e2825c63','24.0','2016-233_XSP-bfsa',NULL,'Y',1,NULL,NULL,NULL,NULL,'Broadsoft','1.0'),('8a93cf8f-525c-4614-a0a7-4c0cd299f42a','null','2f52d9f5-8526-42ea-9aa8-2accca7a34d3','8a7a3a5d-172d-4758-aba5-56c59f7eb239','1.0','vsp522vmog',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('8b02496d-19ef-4de0-b1d9-2a363906bd33','null','447a938d-7441-470b-9803-dc629375a243','3c46d08c-1476-43bb-9367-0c6221dceaf6','1.0','2017-505_URLB-vHEPE',NULL,'Y',1,NULL,NULL,NULL,NULL,'Juniper valid 2','1.0'),('8b59666c-9b22-435c-98a6-1523603c428f','null','892bf8ec-3e3a-4352-9a6d-c3d870740fbb','e0721c47-ce3b-4384-adc5-64fee3aadb2e','1.0','RG_3-17_Fortinet',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'null','null'),('8bc9d4ba-1773-416f-a89b-10b00345ea9a','null','bb1726db-9c23-459c-9ea5-a36f3d7a58df','5b309afc-7b11-4085-a20b-8d1c7b622824','2.0','RG_5-23_LalenaVF',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('8e521171-9096-4d76-b311-c37e56bab26c','null','89ecd794-f7cc-436d-a072-bf394baffba2','a0f92cd7-1a27-4aa7-95b4-0469e2fb655e','1.0','RG_6-9_vMOG',NULL,NULL,1,NULL,NULL,NULL,NULL,'RG_3-15-_VLM','1.0'),('8e754bf1-b24e-4b4a-abf3-70f3bdc3e12d','null','17bda8fa-d79b-4a0b-bcf9-b9c583fd286c','0d6dda79-c0ba-4567-8319-d3e3b6b1580e','1.0','Service_Admin for DHV Test',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'AT&T','0'),('90932810-f844-4a42-86a2-4008bf8d2e56','null','c0fe7298-c934-4133-8de1-ee795d0e74c5','96728f9e-075d-4ea8-8ac8-7967438c2d70','1.0','BK-vIRC_CC-06-21-17-VF',NULL,NULL,1,NULL,NULL,NULL,NULL,'BK-Sanity-05-11-17','1.0'),('9242722b-cfb9-4e1c-923a-08874d8074ae','null','e02fd1cc-8b99-4121-8bd8-5f43bdfa3f43','314624ea-ba6d-45ad-856c-0576d5a202cb','2.0','Steph Preload Demo VNF mDNS',NULL,NULL,1,NULL,NULL,NULL,NULL,'RG_3-15-_VLM','1.0'),('97b8bc8d-3908-4501-9500-3aa28c970dcd','null','3b11547b-05b1-4bbf-b814-39b22d46034f','47e3efc4-3fa4-4b43-b891-0fb382b09b26','1.0','BK-03-22-17-VSP',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'BK-03-22-17','1.0'),('98874aff-d866-426e-bdcb-959790defb50','null','f8d79f0a-b7e1-4972-9c49-0f0965d44f96','b0938785-0295-455d-ad1b-d918de50163e','2.0','201712-488_ADIOD-vPE',NULL,'Y',1,NULL,NULL,NULL,NULL,'Juniper valid 2','1.0'),('9c748db1-e54a-4994-9c64-44076eb2ad49','null','af94e0b5-454c-4fd8-b62b-ef27632afd22','71b87384-8e60-4d0b-9ed0-757245996fc3','1.0','VID-PCRF-05-15-17',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('9f8dbc4f-d7f6-421b-a2fe-3c09b1068622','null','b8064c7c-2390-4eab-9472-f0cdde3b1b9e','1bba1911-e393-46fb-a773-a93d29261cc2','1.0','IP_Mux_Demux updated',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'AT&T','0'),('a14da74c-b969-4b77-a6dd-9e4d4e421987','null','d464cc8a-d950-4a7f-b80f-80b476d8d78b','0456ad99-357f-4bac-98b5-36cada7bc5a6','1.0','BK-MCR_Linbit_30-062117',NULL,NULL,1,NULL,NULL,NULL,NULL,'BK-Sanity-05-11-17','1.0'),('a432ada6-def2-41bb-ac56-d52e0d97c28c','null','fd889284-c83a-4212-9392-466ef4a8dc22','92de75bf-d4d5-44e5-a4e3-20a37efb3141','1.0','RG_vBNG_VSP',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('a461cf24-d9c3-4c17-9442-7d2e79e6b2a0','null','66ca7353-09a9-4caf-aee2-707ce2d53581','93348147-d20e-4621-a63e-74598559d83d','22.0','2016-233_XSP-bfsa',NULL,'Y',1,NULL,NULL,NULL,NULL,'Broadsoft','1.0'),('a5e940bc-07f2-47f9-8a8d-818e12c4f6eb','null','66ca7353-09a9-4caf-aee2-707ce2d53581','59f22ce9-66d7-41c5-873c-8a56f5e0e592','20.0','2016-233_XSP-bfsa',NULL,'Y',1,NULL,NULL,NULL,NULL,'Broadsoft','1.0'),('acc15553-e8fa-41f1-a260-e4588290dd9d','null','b8064c7c-2390-4eab-9472-f0cdde3b1b9e','1bba1911-e393-46fb-a773-a93d29261cc2','1.0','IP_Mux_Demux updated',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'AT&T','0'),('ad07a460-4224-4b55-8aab-cbd3d3c3310b','null','b5bbf19a-9fed-4fc0-a61e-e44d246f37b8','f59db7f5-74fb-4dbd-94aa-90b2ce4ac627','3.0','Metrocell',NULL,'Y',1,NULL,NULL,NULL,NULL,'yow','123556'),('b68b482a-fee0-4477-85dd-d6f935cdad7c','null','c238a6ae-4ac1-4261-a022-3cb3dac69a20','75aa4aa7-43e2-40a8-a01d-40a743397614','1.0','VF_zrdm5bpxtc02_092017',NULL,'Y',1,NULL,NULL,NULL,NULL,'Ericsson','1.0'),('b73d7c17-cd17-4ee1-a74b-cacf560e5b6d','null','bfa5b434-b040-411d-a42d-0d7cd89ff929','1d7eb27f-f64c-4977-b877-b7024301ecb4','1.0','demo for Ops',NULL,'Y',1,NULL,NULL,NULL,NULL,'Mobility Vendor','1.0'),('bb50f135-22d2-4b64-98ab-e6aed28608e8','null','d3f33c8f-bd9f-447d-b4d2-ad6fc5aea83f','2abcec58-fe97-478e-a58f-35c8cdc3ec3d','1.0','Tunnel_XConn for DHV Testing',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'AT&T','0'),('bb6e7a13-45db-423e-b368-46f9592bcb87','null','cc951666-5573-4c5c-8a2f-aed6b24c51a7','1da6a669-c0a6-4f06-ab6a-71df8d2a38de','1.0','RG_5-23_Juniper',NULL,NULL,1,NULL,NULL,NULL,NULL,'RG_3-15-_VLM','1.0'),('bcfb218c-dd25-4757-8835-1bbabb2b547f','null','6e5c68a4-8479-4609-9d9b-088b36d209c3','3e7f714b-d3a4-4fec-8cce-e5de75b42f6c','1.0','vHSS-Test-NR2989-VF',NULL,'Y',1,NULL,NULL,NULL,NULL,'Mobility Vendor','1.0'),('c00e8fc8-af39-4da8-8c78-a7efc2fe5994','null','1fb1d956-406b-4610-9edf-d31086ba851c','76e908e0-5201-44d2-a3e2-9e6128d05820','3.0','mDNS preload 1710 0914',NULL,'Y',1,'Mobile DNS','MDNS','DNS','vMobileDNS','Mobility Vendor','1.0'),('c297ad0c-cace-41a8-ab70-ed097d75ea37','null','2a08c64c-9520-4945-a8af-4cbd70a756d9','5ac5647e-bd70-487c-8cb4-aa3ef0733c33','1.0','2016-20-vISBC3VF',NULL,'Y',1,NULL,NULL,NULL,NULL,'Metaswitch','1.0'),('c3f3fc76-99b4-4949-8e92-dcf5e8991c3a','null','6e801086-7877-4f23-b8d3-7f4c1d4fc0ff','972441ce-f595-4c10-8970-5b1b06856b3e','1.0','scpStella1',NULL,NULL,1,NULL,NULL,NULL,NULL,'vlmstella_scp','1.0'),('c9d54f0d-629f-4a4a-bc18-2798b77f48eb','null','99d1438f-aabd-44dc-916a-8d89e4efd84f','b89e7723-9767-4814-b70f-fe9ba807ba72','1.0','newrelease61',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('cac83d34-7de0-430c-ac29-8bd95e043dcb','null','b0b3c52b-7499-43f8-b458-ed2301f5392b','df26353a-dd3f-426b-901f-6919cba813b2','1.0','VSP1707050',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('d14ab960-72cb-44e9-896b-94578ba42361','null','2f52d9f5-8526-42ea-9aa8-2accca7a34d3','8a7a3a5d-172d-4758-aba5-56c59f7eb239','1.0','vsp522vmog',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('d24a4fc7-4cec-4560-8b51-300a7faf5ea3','null','e59988ce-3d81-4e07-81b5-53d3aa821134','64f2e078-bc0e-4917-b428-3ec414b6144c','8.0','vHNF for DHV Test',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Velocloud','1.0'),('d570a67f-53fe-4df7-b214-c991e2047521','null','5be7e99e-8eb2-4d97-be63-8081ff3cd10e','2074a53a-3d25-4de7-82a9-24fabe329f65','2.0','2017-488_ADIOD-vPE',NULL,'Y',1,NULL,NULL,NULL,NULL,'Juiper','1.0'),('d5dfbb82-e303-4790-b97f-7d71c24777e6','null','ce39321e-efa0-44f2-8e52-5f918435bdbb','611c9db8-ee30-4318-81c8-ebdc930eeba0','3.0','2016-234_NFM-bfnm VF',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Broadsoft','1.0'),('d747147f-cde3-43c5-ae1c-752e6bb9b84f','null','54e45ec1-0c26-419e-9406-59ea3048a9a4','1d71d759-5218-4a9c-a74d-d9f2e1e41624','2.0','IXLAtest',NULL,NULL,1,NULL,NULL,NULL,NULL,'ATT','1.0'),('dac03908-adc2-46b1-b6c8-e0de28a6a386','null','640869f2-0e92-43c8-911f-b63022f4adf8','92c2f336-3d56-4f53-9bcc-2a1079ff682c','1.0','BK-Sanity-06-22-17-VF',NULL,NULL,1,NULL,NULL,NULL,NULL,'BK-Sanity-05-11-17','1.0'),('deaa6843-204e-432b-bd46-fb4686a919cc','null','06ed3d2e-aaeb-4529-a87d-658301a95436','703cb205-1feb-47bc-954c-bceb370c89f4','1.0','VF-SSC-vISBC-APPC-Config',NULL,'Y',1,NULL,NULL,NULL,NULL,'Metaswitch','v1.0'),('e2d8605e-c4d2-46f0-b47b-d8b883890292','null','68ed6ecf-37cd-4480-9338-15d847b26a55','aefb8cc8-b44b-432e-9569-58ee9401de9e','1.0','RG_5-23_Fortinet',NULL,NULL,1,NULL,NULL,NULL,NULL,'RG_3-15-_VLM','1.0'),('e7bb3a75-450d-4b9e-bb30-858d876c8276','null','0a2b2eda-59b6-40b5-b7eb-233338209994','1cfb9dae-8415-4d5c-afbe-6e8d039e580b','1.0','StellapatterC2B1',NULL,NULL,1,NULL,NULL,NULL,NULL,'vlmstella_scp','1.0'),('efbfb008-2be0-42c6-b767-dea29209ba6d','null','af94e0b5-454c-4fd8-b62b-ef27632afd22','71b87384-8e60-4d0b-9ed0-757245996fc3','1.0','VID-PCRF-05-15-17',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('f0fbdfed-19bd-4e96-9b71-d67284d39b1a','null','8e823d60-8012-444e-b5ed-286fbe963e4c','f8e2d9b2-fd10-4aa1-bf72-64f0eff76988','1.0','RG_5-16_vMMSC_VSP',NULL,NULL,1,'AIC VMMSC FUNCTION','one.two.three','New Type for VMMSC','NETWORK INSTANTIATION','null','null'),('f13bb862-d588-4a96-89d0-999daf975f4b','null','03c969e1-4b5b-4789-af76-07c942ebfdf3','8dd1682a-e6dd-4844-85b0-25791825b252','1.0','BK-Sanity-1707.0.22-0414',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'vCCF_VDB_30_1702','1.0'),('f66a5a6a-30f4-40ef-a3b6-ba779a522fd0','null','5d623af7-1ae4-4e7d-933b-b09bd4407f40','dac644a3-2b2c-4586-862d-9a9a4b1eb5e1','1.0','eNodeBEricssion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'ericsson','123456'),('f79e095b-adfe-47b1-a05f-e0cc8907ab44','null','54e45ec1-0c26-419e-9406-59ea3048a9a4','d2e9a881-9c3c-4989-bbc4-3926bbfaa2f3','1.0','IXLAtest',NULL,NULL,1,NULL,NULL,NULL,NULL,'ATT','1.0'),('f9a0f22e-05ea-470a-9ffa-b63115ba9c46','null','18de43f1-7634-4024-b0f7-8c8706d018dd','b948edc7-e144-4af8-b544-42bad526c2b1','1.0','VSPvscpSTELLA23mAY',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('fdebb591-644f-4682-be51-5dcdda996809','null','f2cf2ec6-e2ae-4516-a52e-b909575c2e24','3a5bb746-5488-4f5a-a5b0-ea1cdae57d6a','5.0','2017-404_vUSP_vCCF_AIC3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Nokia','1.0'),('feb18ca1-9351-45ff-aee3-8aed97d76bf2','null','d149c45a-b42f-419a-9fac-f9c359fc2034','4a47b924-f4aa-4766-b508-7d8047c1ca37','1.0','greatdefect',NULL,NULL,1,NULL,NULL,NULL,NULL,'null','null'),('fff8e2d0-9fb4-4ade-8754-e2cbcfb90947','null','356f8e22-2885-4697-af27-22a223aa34cd','4846ea44-b4bc-43ae-8899-3b78a5b8f593','1.0','VF_zrdm5bpxmc02_092017',NULL,'Y',1,NULL,NULL,NULL,NULL,'Ericsson','1.0');
+/*!40000 ALTER TABLE `VF_MODEL` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2017-10-12 21:17:00
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/vf_module_model.data.dump b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/vf_module_model.data.dump
new file mode 100644
index 0000000..bd3139c
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/vf_module_model.data.dump
@@ -0,0 +1,59 @@
+-- MySQL dump 10.13  Distrib 5.6.22, for Linux (x86_64)
+--
+-- Host: sdnctldb01    Database: sdnctl
+-- ------------------------------------------------------
+-- Server version	5.6.36-enterprise-commercial-advanced-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `VF_MODULE_MODEL`
+--
+
+DROP TABLE IF EXISTS `VF_MODULE_MODEL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VF_MODULE_MODEL` (
+  `customization_uuid` varchar(255) NOT NULL,
+  `model_yaml` longblob,
+  `invariant_uuid` varchar(255) DEFAULT NULL,
+  `uuid` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  `vf_module_type` varchar(255) DEFAULT NULL,
+  `availability_zone_count` int(11) DEFAULT NULL,
+  `ecomp_generated_vm_assignments` char(1) DEFAULT NULL,
+  `vf_customization_uuid` varchar(255) DEFAULT NULL,
+  `vf_module_label` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `VF_MODULE_MODEL`
+--
+
+LOCK TABLES `VF_MODULE_MODEL` WRITE;
+/*!40000 ALTER TABLE `VF_MODULE_MODEL` DISABLE KEYS */;
+INSERT INTO `VF_MODULE_MODEL` VALUES ('017446e0-2014-4862-b589-9858eacce22a','null','b3ae6092-1973-495b-9cae-5813679da421','e018151b-6c29-496b-92de-cd22671651d7','1','Expansion',NULL,NULL),('021fb262-bf56-4e49-ad28-0733dc165bdc','null','8cfa1617-e502-4488-b660-eccac5d81858','beda9e8c-c268-47b0-ad13-cf6dd6ea8566','3','Expansion',NULL,NULL),('02217de7-bdd3-4dcc-9925-2734247f364f','null','fbf41f6a-5405-459b-a320-12f4786258b6','e218e4e7-5780-4b12-b14c-37cbc90902bf','1','Expansion',NULL,NULL),('0484e2af-2fed-4e92-bf15-6aaec0d1ef62','null','e9924b21-0c4c-4259-9bee-c86944c8f57f','b1929aa2-f2b8-449f-bdc4-319e7b2381eb','1','Expansion',NULL,NULL),('04be6237-6dfc-4bbb-871e-19a6708ad077','null','3ff02b4e-494f-4c28-9e7c-812a6fb36106','e2f7e1e0-5789-4497-a4cd-6198b8a286f5','3','Expansion',NULL,NULL),('055d1e23-961d-41c9-984b-caa2c41e48ba','null','2fb28e79-e6f2-4cdd-832d-f191244207e5','04854ad3-6b53-4f04-a14a-6f68a839b62c','1','Expansion',NULL,NULL),('0658eace-5459-427a-82e5-c2485f794f85','null','226e457e-1bfc-4be4-8032-2569772d9563','93fa2549-bccf-40b0-88be-4fab6c1fcd24','1','Base',NULL,NULL),('06c7d519-6271-479e-aa0e-6727a0cbf178','null','70196b5b-1070-4ccc-9b7f-340f18c10424','bac518a1-0cd5-4322-8b7f-926cc49c611b','2','Expansion',NULL,NULL),('074fc145-9dfc-4e79-b063-95a28c00b307','null','8daa5c4b-a7ce-437a-9b07-5e677da342f5','9ad9fb7b-fe6e-4142-a8db-bbd90138b558','3','Expansion',NULL,NULL),('0756874e-d137-4820-abdd-710d9035b472','null','2541114d-c9c7-4281-b0eb-22e48eeed7e9','a682725a-5e77-412a-95ff-385d1be6576f','1','Expansion',NULL,NULL),('083877a9-a5d1-4fc3-acb3-f3e11f320a27','null','0cb38db9-e2f0-46e8-8c6e-a375784760b7','bcd0b7d2-668d-4159-97f2-47c299e3bcbd','1','Expansion',NULL,NULL),('09381cfb-579c-4d8d-95ea-89d1300f0c18','null','aa8a1258-9da5-4e67-aa83-0b3eb99d1ef4','ab2b410d-f871-4c6d-86af-113a4e7fc9ad','5','Base',NULL,NULL),('097c7ed5-15b9-4f0d-9cae-2bf2d0aa16a5','null','1bc5228a-4f92-4f1e-b7e8-20462a13e34b','a08da318-e1a0-45b5-a1af-86ab189dc599','1','Expansion',NULL,NULL),('0ccc5b99-ab89-4aba-9780-a10d20a35755','null','34863ff7-e24c-4b38-b7db-0b403aead85e','cd170c8d-2dd3-4029-bbd7-81bc0fc51478','9','Base',NULL,NULL),('0d060add-6184-4ffc-bf32-50674315cb5a','null','b111a6c9-1316-4133-b9ec-3be90e84afdf','4cf7e6f4-c748-490c-be04-67cd9b67d215','1','Base',NULL,NULL),('0d6799b5-044b-491c-9b2d-5b6b40168300','null','55b9e2fe-7bb0-405f-af8f-89db1b1ccab8','104743d6-f21d-46e6-95f9-a8397fd668c4','2','Expansion',NULL,NULL),('0dc375de-8470-4b06-95d6-dc9ff0e6e590','null','eb5a1e09-7f46-4f1c-ab7a-b017bad95261','fa1c8558-006c-4fb6-82f2-4fc0646d6b06','1','Expansion',NULL,NULL),('0ecb9d84-aa21-4656-9783-655f926f7714','null','8cef0a5e-ebc0-4222-afdf-b78a5a0b2f64','706cf476-acd6-4f17-bae8-646deaad9193','2','Base',NULL,NULL),('1093265b-a5fd-482e-8c75-aabce120195e','null','b3c3a78b-a4c7-4471-9929-5a57706c0776','ee245e56-794a-4a71-9c82-98e500c4a2bd','1','Expansion',NULL,NULL),('111548bc-5fe7-4177-8049-ac492230abe0','null','7fc372e2-e701-4e41-9ed6-f632bd079fe7','7f9dcff2-f6e9-40e8-895e-8b4401c0c3b3','3','Base',NULL,NULL),('12ec65ab-e040-487d-bc7d-2ad59d3c3f3d','null','b34833bb-6aa9-4ad6-a831-70b06367a091','0339846b-758d-4ce3-be04-353234d603e6','4','Base',NULL,NULL),('135f283d-d53a-4db9-acfa-481364db46b8','null','c4c106d8-eed0-4abc-b385-78a59722d4d4','8115980c-9e60-4c0d-9926-90a16b36b77f','3','Base',NULL,NULL),('1745f7c5-4d0b-429a-bb99-2d489022fc93','null','7cb28ebf-92a2-4d2e-9b8a-78fe56e0013e','7413879d-f7da-42ae-9474-1e47c99e8140','2','Expansion',NULL,NULL),('1768d2c1-6e65-49ea-b5a3-e220cbd5b5d7','null','39f1a361-7cc9-4542-bce4-17d1043a6a29','247ec87c-bd08-4b1e-affc-2f6ddb3ad45e','1','Base',NULL,NULL),('18444f87-e820-4ab8-add5-7880a7b85d2c','null','732abc4a-35ec-4e2c-b33b-835771cbaa7f','f075292e-355b-4a40-b352-3d44776d2338','2','Expansion',NULL,NULL),('199e4140-1e9c-44fd-a05c-d9b273b3900e','null','ef49b484-89da-42ab-bc2a-8f2245f8c39d','541a70eb-4361-4534-918f-da330ed98fba','2','Expansion',NULL,NULL),('1b065adf-8f65-4d6c-a8d2-7a973bed9987','null','6de0109b-082a-47d3-8773-e27086ab7154','2d4f5892-ab66-47c3-9790-d60542a6b4e1','1','Expansion',NULL,NULL),('1b46e413-bc77-467b-ae5a-67fb653045a3','null','c1d7b9fb-5948-49d8-937d-f64a7006b552','62e53e0b-785a-4535-ba07-9ffb047d2057','2','Base',NULL,NULL),('1d11df8e-fd73-466c-b09f-448a8baf56ca','null','2541114d-c9c7-4281-b0eb-22e48eeed7e9','a682725a-5e77-412a-95ff-385d1be6576f','1','Expansion',NULL,NULL),('21262e67-15c7-4c2b-821e-98298f2cde14','null','fed07b93-214d-4bfe-a0ad-0b85c37ccfbc','f4886bfc-4b78-4f5c-992c-00a7fe203937','3','Expansion',NULL,NULL),('22025200-6a0e-44fe-abf6-2e637abffd00','null','f45aa352-8e76-4ae6-adc1-340c953221ed','75eed7df-995e-4775-8bff-9cbd3bd2d35f','11','Base',NULL,NULL),('260d1efe-e4c6-4a24-b2e2-40ba3dd85661','null','b3ae6092-1973-495b-9cae-5813679da421','e018151b-6c29-496b-92de-cd22671651d7','1','Expansion',NULL,NULL),('2618b64c-2ce7-4d97-b417-8168787e7e1a','null','4b51dd2e-517c-431f-8614-75e25607c5f2','6cd0d727-f841-41e9-9ce9-128687b03f1a','2','Base',NULL,NULL),('26868d55-4bc5-4db7-8315-eab1dbfa417e','null','b9a25c01-4f84-4e19-a27e-35ea68af2c24','4e41b216-be98-4bb5-89ab-fb6d48bdb457','3','Expansion',NULL,NULL),('276a98b8-a013-49f2-908c-96fcce3450a7','null','23befc6e-aa97-4004-b215-4979c3f84913','dea8e41f-c996-4557-b521-263210d96baa','3','Expansion',NULL,NULL),('2b52ca3b-9c4b-4c03-958c-577b52b27136','null','eb5a1e09-7f46-4f1c-ab7a-b017bad95261','fa1c8558-006c-4fb6-82f2-4fc0646d6b06','1','Expansion',NULL,NULL),('2c89166d-7ea5-4d92-a708-70812d72270f','null','9b82936a-8fb0-492c-8517-f3f13e224577','6c294358-6111-42d6-b418-41225ff201cd','2','Base',NULL,NULL),('2d207fc0-79d3-4ee1-96e1-1cef729a926e','null','7cb28ebf-92a2-4d2e-9b8a-78fe56e0013e','10955ab2-c2f4-4dbf-a772-970304aa4e95','1','Expansion',NULL,NULL),('2db2a875-529e-48d1-8be5-48280092875c','null','e02deae0-d62d-408c-838c-4c9da3441d62','93c33147-3d3c-42ef-8afa-0a25230f3765','3','Expansion',NULL,NULL),('2f3ce7ca-aec6-46c3-aaf6-9f299e88e1bb','null','46576fb9-cb8c-437f-a2a6-35c84c69c4a9','d7a3666a-351b-4d2f-81d8-be78daf22c73','3','Expansion',NULL,NULL),('319e3a65-8ae4-49cc-b3c1-5de2b4916b15','null','5f52df4a-4933-4f28-9add-eb3140e08c78','20285da4-127d-45fc-9482-ea26a6888626','2','Expansion',NULL,NULL),('3331497a-b2d7-4f1b-b53f-77dbfc157a24','null','9d41a84f-d1d8-48fe-a484-ea7212a1e0c5','8e49bb50-e727-4b80-9535-c5af4a2e7708','1','Expansion',NULL,NULL),('333a917e-d8b8-45a5-b19d-f0a6a5ce51bc','null','78731de4-b9b9-4e1e-b2c7-32ecf5c28ef5','8cf80cf4-d7a1-4fd5-b936-a51b65a21333','1','Base',NULL,NULL),('334bcdc2-0831-4a7f-95c7-7e57fc3a0ab6','null','55b9e2fe-7bb0-405f-af8f-89db1b1ccab8','104743d6-f21d-46e6-95f9-a8397fd668c4','2','Expansion',NULL,NULL),('33c58f68-ad4c-46ae-aa72-cac0c589393e','null','573ed63c-3017-44a5-9bb1-f60cd54e3564','f8c3258f-4537-4e65-a06d-acfbbaf72ef3','1','Base',NULL,NULL),('34b984b7-231a-4b56-9d49-672d44bb81ce','null','d139bd94-ab51-4274-a41b-2a34d2f497af','34c2afed-7618-4163-ae92-ce730fc2e492','2','Expansion',NULL,NULL),('366ac080-5904-406b-b827-70a63bea3b58','null','7e2402f7-411d-4978-b92c-680d426d4dd0','0755192a-fd92-45f9-b531-7b257c1a5552','1','Expansion',NULL,NULL),('3766e0cd-469c-4015-a7d1-70afd02d41ce','null','3828904e-684e-4c7c-ae30-5555bac3ed38','eaf22e74-296b-4719-9705-0d17d19b6d0a','1','Expansion',NULL,NULL),('37da548b-18ec-4599-bdd6-2f175c90b2ac','null','a06628a8-2d2b-4377-8419-e8e229694437','d9027d32-d4ec-40fb-a8d3-f7afba94941f','5','Base',NULL,NULL),('37da6c6d-a3b9-49e1-b209-f65866481344','null','10d8cbe1-e9b9-4498-8c0a-9d2a1aad2e6d','8902f4d9-a018-4dca-94a8-f758bc29b6ff','3','Expansion',NULL,NULL),('38ebbf63-72b4-47dd-be52-7fc8df9bb59e','null','7199aba6-a1ee-4af6-80a4-145093b816ef','36b284ca-720a-4d35-8a7a-1846a5f5d6bf','2','Expansion',NULL,NULL),('39ab1f47-c0fa-4c6c-8f50-15d98b315342','null','4b7ae7d3-95b4-415d-95cd-28018914c2b8','0e0bffe0-922d-42d2-a154-c1a0ff762bb2','1','Expansion',NULL,NULL),('39e0a574-c0f9-4e6d-9522-7e81afd89a66','null','53392901-3530-4022-9450-5ab1501235c4','e7b801c8-cd1b-420d-9cda-3cd1f90137eb','1','Base',NULL,NULL),('39f77bef-9484-4e51-bc06-e7eaaa762849','null','7253ff5c-97f0-4b8b-937c-77aeb4d79aa1','014b052c-d32c-4f79-bff0-ddcfbe5428c6','4','Expansion',NULL,NULL),('3af9e522-a85a-418d-8b15-387dbf9002dc','null','55b9e2fe-7bb0-405f-af8f-89db1b1ccab8','104743d6-f21d-46e6-95f9-a8397fd668c4','2','Expansion',NULL,NULL),('3b019217-cd1b-4f70-8edb-b2b98acef4e2','null','87b31faa-9523-480f-8ba5-759f36e3a8b5','9ccef53a-2f37-434f-9ed3-2dbd55f05ea9','1','Expansion',NULL,NULL),('3b244046-5eca-468f-8d2a-98b399cfb905','null','8ac56b80-55b7-48f2-85ca-f331f9b453fc','49ad472a-fd5e-48fc-87a5-4c6968f1da7f','2','Expansion',NULL,NULL),('3dd3db63-cff9-4cda-8381-3a5dbe6db17e','null','c9d381f0-9b78-4eb7-a269-e31c4604bb86','9325fd75-e49a-4f6d-92d0-4df112ceb5cd','1','Expansion',NULL,NULL),('3e9bf727-ca46-48e8-a4d3-dc6cd8f097cf','null','df35ebf5-880b-4052-b4dc-5fbf38a423ca','bbf63386-42ec-4cae-a6a1-a8dade4e09e1','1','Base',NULL,NULL),('3fc60178-6d0c-42dd-a0e3-d9b68d88425c','null','d189be23-526f-4995-b495-621b44216f5b','ae37e5e0-a7ee-40aa-9b88-7f7d29fd65f3','1','Base',NULL,NULL),('3fe5467d-fdbc-4f16-bcbb-af0c578da755','null','adf43808-1569-4361-b908-13566932fd41','41afcb54-a94f-4277-bc52-2c21aa31cbb7','1','Expansion',NULL,NULL),('406da647-c7f0-4f88-ba8b-b423db45d0ac','null','80457173-ec4a-41e0-a5a2-fb89746886d0','6834e030-5e32-4cd7-88de-289137296da4','1','Expansion',NULL,NULL),('408d747f-cd07-456b-b5cd-c908e968987a','null','e82b3c2e-c56c-4c45-92e9-c63fc10e75f3','721e45ff-89b2-4b98-abc6-3ff6e6802e57','1','Expansion',NULL,NULL),('41afa0c1-f3a9-44e1-96e1-817d47c8838e','null','e0297a51-c670-452e-b31c-c5b37c6ad40f','a903401d-08f8-42d8-9da6-d453bcbff604','2','Expansion',NULL,NULL),('41c74f6a-c604-4362-8ab9-3027aade3090','null','eb5a1e09-7f46-4f1c-ab7a-b017bad95261','fa1c8558-006c-4fb6-82f2-4fc0646d6b06','1','Expansion',NULL,NULL),('42c3e004-d5f1-4dc4-ae09-fd329feb71d3','null','2a81f0ef-823d-4e31-93d1-62fd0405c8de','06e3f0b6-2ca3-42ed-98d2-bdaddd65a137','1','Expansion',NULL,NULL),('437768f0-3c9b-4fa4-8462-83c545bc8dca','null','df35ebf5-880b-4052-b4dc-5fbf38a423ca','bbf63386-42ec-4cae-a6a1-a8dade4e09e1','1','Base',NULL,NULL),('47947d94-17c3-49a4-9db7-62fd0e9c4b3f','null','eff8cc59-53a1-4101-aed7-8cf24ecf8339','9b6abcd2-262c-4493-838d-48a5a16d3dd2','4','Expansion',NULL,NULL),('4932bb37-cf40-42bd-bdb6-1ca501189b87','null','ca2d8515-9eb7-48d8-8bed-71feaac8afdf','9b22ee37-f4e7-4ab2-910b-2b451680df6c','2','Expansion',NULL,NULL),('4a2426c9-1c9a-45f3-9a51-e877b0376d0b','null','a213e8d4-3140-4541-b65d-17ae2a78c3bd','b85b7098-5ee3-409e-8615-e95eb5aa74e7','3','Expansion',NULL,NULL),('4a4d09f0-635b-4267-aba8-16bd407b9d86','null','68c006af-1e78-4156-80d1-477716a2346b','60a1b82f-bb76-4222-a3d7-453c0439bd54','2','Expansion',NULL,NULL),('4b3e6f46-9ff4-45c2-a682-ac1457cf4cd3','null','547a7c06-48b8-408b-98fd-5827aa732419','cf3356d7-4be0-4adc-88c9-4e6c64e37623','1','Expansion',NULL,NULL),('4eac77ec-41d6-44c9-b390-1e0ea3a2bd55','null','bf801683-7b5f-450c-8bca-91f224025df0','32e3d429-9218-42a1-b6c3-28b9f43d92a1','3','Expansion',NULL,NULL),('4fd4aefa-8281-4f69-9354-c3456e9ea224','null','97fc1831-a34a-44de-ab82-3f6ad05e2dd8','30cc57a1-dc0b-4553-845a-cccceee8e5b3','3','Expansion',NULL,NULL),('51a2fe54-0491-4c8c-bd96-69a33e4d633a','null','86b9d7a7-6385-4ed7-bef7-0fc51bef8399','4db73447-dcd5-4667-a27f-cd8b2294afed','3','Base',NULL,NULL),('52643a8e-7953-4e48-8eab-97165b2b3a4b','yaml','inv-uuid','fe6985cd-ea33-3346-ac12-ab1214812345','ff2ae348-214a-11e7-93ae-92361f002673','Test/vSAMP10a::vSAMP10aDEV_macro::PCM::module-1',0,'1'),('5424b54f-0a79-4f89-88a0-2809b6c779b6','null','fbf41f6a-5405-459b-a320-12f4786258b6','e218e4e7-5780-4b12-b14c-37cbc90902bf','1','Expansion',NULL,NULL),('5426ba3c-57cf-4441-b762-7119194d01ef','null','a8faba2f-1f83-4206-9818-d0bc7321753b','4bfd0a7f-fc43-4130-87be-fabf513b1ff9','1','Expansion',NULL,NULL),('544d60a9-09ff-4d11-a3c5-41e31d91d251','null','5eea66c8-e5eb-4aef-9095-879b6d1544a3','57aca1a5-2e2b-4301-9e39-9801404cc1b8','2','Expansion',NULL,NULL),('56c33dad-e3eb-4beb-8681-dc7cee3787d6','null','f9cde959-b0df-44be-b9c8-ba177939e7b5','8214ed2c-d02d-4d4a-83c4-cc8a6b1b9e4d','3','Expansion',NULL,NULL),('57f5635a-31af-406b-bdcf-d7a296342a91','null','9b30bca2-ec1f-4fdd-afc6-4fb298893801','b1c1f37e-41e3-4e06-8733-b70e5049aa88','2','Expansion',NULL,NULL),('59755fa5-dbb9-44f3-bdc9-752c4d5b3fbd','null','cafcd9d6-5963-41f4-8922-fc013382be8f','879faa16-dc29-4e04-93ef-d4cb168eeba0','1','Expansion',NULL,NULL),('5a3ac46d-9136-4d70-a7e1-68569dbe7bf7','null','6d7201a5-ca5d-4c70-8a25-9b898879bb68','ef8adb67-6f57-47eb-a823-4b0278d5a22e','1','Expansion',NULL,NULL),('5aaf94d9-36e9-484a-bf1d-61ee8d4988b7','null','a2281b35-31a4-4184-a20a-605446289059','df4ea923-5197-4faa-a0fd-e7895e4d5372','1','Expansion',NULL,NULL),('5b055c57-abbf-411d-96e4-9f52d07c141b','null','b3ae6092-1973-495b-9cae-5813679da421','e018151b-6c29-496b-92de-cd22671651d7','1','Expansion',NULL,NULL),('5c4d883e-57a1-4b32-bff3-b05226ed8d47','null','449f4443-4410-42a0-b35d-8db88da4cebe','13bd1bcd-dc69-4b1b-9230-57f431dfcc0d','2','Expansion',NULL,NULL),('5e33c890-d453-47b6-a2e3-ab57014a7a96','null','28eb58ce-b353-4a19-9c68-d2ae0a304583','db10d9fd-3483-450d-8e09-f969810fd80f','1','Base',NULL,NULL),('5fec6284-e354-41eb-aab6-def3233af64d','null','a8faba2f-1f83-4206-9818-d0bc7321753b','4bfd0a7f-fc43-4130-87be-fabf513b1ff9','1','Expansion',NULL,NULL),('605ad028-8498-4eaa-a36f-543aa25470b0','null','69ef1dc0-adc4-4a16-9ad7-91fc898ba31f','6644cdc0-7f2f-4ba3-8221-81ff8bc0998a','1','Base',NULL,NULL),('640a174b-44fd-4719-aac1-a98adfebce11','null','7cf76f4b-cdf7-4a04-8396-9df44e3ea7b5','400f9a69-ae10-4825-885d-bd6627c01b8e','1','Base',NULL,NULL),('646fef85-9650-43f9-9a49-40bbde90c0e3','null','5df8ce8b-45ab-4265-a9a5-e87a7f4ee007','78f91537-c44f-4043-b593-bab033187a6c','1','Base',NULL,NULL),('64d22ab3-0e27-49e8-b649-0b959054a3f3','null','c1d7b9fb-5948-49d8-937d-f64a7006b552','62e53e0b-785a-4535-ba07-9ffb047d2057','2','Base',NULL,NULL),('659fb183-2cf5-41c2-81c6-66246195d805','null','264c8fd9-cb33-491a-b1d6-0059a97eb6f4','57996fa7-b8f3-4589-84c5-0707d397e1a1','1','Expansion',NULL,NULL),('65ba8f6f-0b4c-4920-a284-c47a6da798c8','null','f4e48ec2-47c9-4ef6-bb0e-9b580014a1fd','754eab9e-2eea-44c8-8df9-3f5d82d5c45d','3','Expansion',NULL,NULL),('667892de-3e65-48ff-ace7-bba3e7a3c047','null','b74a8ba7-ba07-418f-8f9c-1466e4981771','70d3feed-7a51-41fa-a291-52a5fef4bc61','1','Expansion',NULL,NULL),('66c428b1-a020-4113-848b-159e31d9c16e','null','d16300c1-1cd4-4426-b30f-aa4a1784c52f','300af813-d0f2-44a7-8a27-d46f06ade407','2','Expansion',NULL,NULL),('671376d5-8689-4788-8eae-f59648fa373f','null','f02190b7-0e49-4cff-8873-c055e7ebc6ad','cae6741e-8e23-4cdc-a792-ae89e4db5531','2','Expansion',NULL,NULL),('678264c4-f573-42d1-8de6-1a3f85f5531a','null','2e94c5c8-521e-436e-a429-83fbaf6e3106','8c8b5ffe-4bf8-4b4a-b5a4-809f9ede16a3','3','Expansion',NULL,NULL),('68bad53f-ab49-474b-8322-b0d69f3a64cc','null','23befc6e-aa97-4004-b215-4979c3f84913','dea8e41f-c996-4557-b521-263210d96baa','3','Expansion',NULL,NULL),('696b6cff-0173-4603-985c-8246ad6316a7','null','8a8e0578-135a-4144-adf7-b02ba6bf248e','ef4894f3-9573-4616-879a-7defb9eb2806','1','Expansion',NULL,NULL),('6a095b7e-f6b9-4772-a60b-66f1b57425da','null','55b9e2fe-7bb0-405f-af8f-89db1b1ccab8','104743d6-f21d-46e6-95f9-a8397fd668c4','2','Expansion',NULL,NULL),('6a55d558-e36a-49e4-827c-34cc016fc41f','null','05f96ce4-b412-4e57-9fb1-1b3095cd8b83','1a24df30-b3a9-4f05-91eb-aa4a1b901ba0','1','Expansion',NULL,NULL),('6b2678e7-9ee6-4292-a769-8b6c0936e360','null','24d39fc5-05ac-4d9e-b6e9-5635d58837a6','4914e043-954a-4421-864e-bc8f3ae8e6b9','2','Expansion',NULL,NULL),('6b7eaa3f-ea2a-434e-8b06-212d7942940b','null','82552e8e-7fab-4ca7-a6cc-c71a16f342d1','0a425002-065d-4f1f-879c-f524918babfc','1','Expansion',NULL,NULL),('6be48e52-3d79-44a1-940f-8aeb301347dc','null','ccdcf017-5cd4-4829-8c1e-3af9cc1c72da','9c468481-1b9a-4675-a717-cc9840e68626','3','Expansion',NULL,NULL),('6c6d785e-4278-4f79-bfb5-b08d9a716874','null','769180bc-972a-4ea2-9d20-f026551a9eb5','99ad52c2-36e7-44ae-8449-b2b16d2b1a81','1','Expansion',NULL,NULL),('6d6858ab-19d6-4b57-8ae9-ae4aeaa85b84','null','367d243d-a279-4a92-a751-0ed64c9dfa20','0d12a1af-692c-4903-bd3f-589f67c03638','1','Expansion',NULL,NULL),('6e6a94f6-f137-453b-9fff-fc8bb8b48334','null','a0bd4b05-4158-40d7-bf36-5e6d6589ffc4','c5fd8e94-9db8-4e3a-a4a5-c17ebea49553','1','Expansion',NULL,NULL),('6fdb77af-b4b0-48ed-b71e-3061a7fe5221','null','0f7f7a05-1160-4df8-8339-45114b7050ef','fb292f29-1fc8-4305-8436-174a5a78854f','2','Expansion',NULL,NULL),('6ffcd5f5-3b70-4d6a-999e-5664b5235fdd','null','bcb09cf9-c55b-4390-b1ca-077cfc3fbc7c','d1d62a25-4d08-4a13-bc18-368a9b618c70','2','Expansion',NULL,NULL),('71b8ad04-04ef-4024-a933-08d7a39dd1e5','null','f45aa352-8e76-4ae6-adc1-340c953221ed','d8aa5542-a8e6-4205-a37d-bfdda4ff88d9','12','Base',NULL,NULL),('745df1ff-5767-407f-be02-468a9958127b','null','41ea2a92-7467-4847-a100-c3a5e5cbd206','5a7ba9d9-c932-42f0-bec1-38bb1ae72fe3','1','Expansion',NULL,NULL),('74990029-180c-49b9-872f-a8cff4d20809','null','c3eb5880-1370-4f47-8cdc-72a539782c63','f961726a-0fa2-4a68-805b-65c8421efc6c','1','Expansion',NULL,NULL),('74dc8145-0035-469a-922f-795afe676331','null','0c669166-b61d-494e-b98b-829aacf4a48b','119e7de9-bd94-4ea1-88de-d4b5daef7373','2','Expansion',NULL,NULL),('75d0ac58-9a05-4cc4-90f2-1e582df39eba','null','dff23ac5-31db-4e5d-bd4c-189363273337','f22af421-578c-4e91-ad8c-3d63134791e0','1','Expansion',NULL,NULL),('766f0cd7-7853-4bca-9620-43ba51802265','null','8cef0a5e-ebc0-4222-afdf-b78a5a0b2f64','706cf476-acd6-4f17-bae8-646deaad9193','2','Base',NULL,NULL),('785a4b27-cce0-437e-bf38-fb81dadb7c50','null','22287914-c1f6-4378-a45d-21940fb0f54a','4c21a20f-650d-427a-ba24-43218630e602','2','Expansion',NULL,NULL),('79d36486-38d5-4a24-be6c-4727931ef9c7','null','83c7153e-c078-48b9-8134-d62901829ecc','3059d30c-6739-48bd-bdc4-88bd7a80b829','2','Base',NULL,NULL),('7ad564c6-939d-47b1-a2ee-5140d000571c','null','aae15bb7-0ddc-4876-be4e-dcc830d09e4d','0347e2b3-3025-459c-8482-f1897d3207ca','1','Expansion',NULL,NULL),('7bc82047-44a5-4e36-b273-fc4c99125111','null','c5f7d89f-dfdc-4e4b-961c-321ab9142877','aff2cf25-eac4-4c09-adba-f74ffa523511','1','Base',NULL,NULL),('7c5b298c-069b-4f0b-a6d4-8f7a62c368cd','null','dff23ac5-31db-4e5d-bd4c-189363273337','6d6ede06-b8b6-422c-a4b8-df062d20385d','2','Expansion',NULL,NULL),('7c83160a-27c4-469d-9666-2c3d07bbb91c','null','7e2402f7-411d-4978-b92c-680d426d4dd0','0755192a-fd92-45f9-b531-7b257c1a5552','1','Expansion',NULL,NULL),('7d967a5e-a3f9-453c-b7f8-70ac1209ec92','null','57003ff9-49a2-442e-9b66-81303afd5a74','34311082-3c51-4ea4-b8d8-63de665fb820','2','Expansion',NULL,NULL),('7e73aa9d-8908-4c0d-be4d-e8d35c6fd57f','null','53392901-3530-4022-9450-5ab1501235c4','e7b801c8-cd1b-420d-9cda-3cd1f90137eb','1','Base',NULL,NULL),('802f6145-7bae-4b71-bf3e-94102e6bb1bd','null','13214374-2ac0-4028-87df-d32722afd5ff','b8765c92-5d63-4227-8e29-0c98b3adca41','3','Expansion',NULL,NULL),('81867fb7-528f-4a1f-acf7-9f177def72b9','null','c1d7b9fb-5948-49d8-937d-f64a7006b552','62e53e0b-785a-4535-ba07-9ffb047d2057','2','Base',NULL,NULL),('819ef122-ca19-4141-a61e-62922f8fc279','yaml','inv-uuid','fe6985cd-ea33-3346-ac12-ab1214812345','ff2ae348-214a-11e7-93ae-92361f002673','Test/vSAMP10a::vSAMP10aDEV_macro::base::module-0',0,'1'),('82459961-dc30-4d19-af75-8a43a81c250f','null','3da79280-3c3e-4e6e-9f51-26ba20262f82','34f21239-d535-475f-90cd-de40f12dc4a5','3','Expansion',NULL,NULL),('824a6b58-9a88-43f9-890e-7e88bb78746d','null','c1d7b9fb-5948-49d8-937d-f64a7006b552','62e53e0b-785a-4535-ba07-9ffb047d2057','2','Base',NULL,NULL),('850fe25c-cf1e-4b55-ab89-7f50fccc63e4','null','4f9880d1-cd04-4ac8-b7fa-7cdb85bd90e1','b6c59f4d-25e5-4b1e-9f31-ea12640ae88f','1','Expansion',NULL,NULL),('86af9613-9bcc-4dee-9c83-8314bee4dd2e','null','3fd5e96c-8578-46e4-b300-28ca72a72d68','3880717c-5f00-4c9b-91ff-3f1c272a6c80','1','Expansion',NULL,NULL),('87879a89-7d64-4da6-afba-1736019bed05','null','80ff85fb-cb11-42cb-9737-e47095d42756','01166434-ef34-4969-aaf2-626203d72e48','3','Base',NULL,NULL),('87c255ea-0ff9-4c53-92eb-618d7f6cb84c','null','3dbd19c9-fd43-4836-a2f6-6ae072854a20','a9aa9405-9173-45f7-aaed-a5cc51a819fe','1','Expansion',NULL,NULL),('89c055db-0614-4ee6-99df-364d88ca6fac','null','41ea2a92-7467-4847-a100-c3a5e5cbd206','5a7ba9d9-c932-42f0-bec1-38bb1ae72fe3','1','Expansion',NULL,NULL),('8aad46b1-5672-46e8-bf3d-82ac59b31223','null','ae0e1de4-58e0-4e52-8d2d-4e92789da644','7401b558-48b4-45a2-bc50-fd002a18d9e5','2','Expansion',NULL,NULL),('8b8f0316-70f7-4e92-b1d9-c59d8601ad27','null','df35ebf5-880b-4052-b4dc-5fbf38a423ca','bbf63386-42ec-4cae-a6a1-a8dade4e09e1','1','Base',NULL,NULL),('8c6705a6-dd2b-4e95-b311-5e9e1c501ea2','null','a60f3f27-575c-439f-87b7-cf43af4f9212','37edc7b5-0d8f-4cd1-a5e0-38a4f266f2bb','1','Base',NULL,NULL),('8ec1db74-1698-405a-8258-f1e377db1c93','null','180e8190-6159-4568-bf54-af11489c093e','7a81dcb3-01c2-468a-94e1-7d62f802716e','1','Base',NULL,NULL),('8f810b5b-e901-449a-93de-c334ae353f0b','null','22287914-c1f6-4378-a45d-21940fb0f54a','4c21a20f-650d-427a-ba24-43218630e602','2','Expansion',NULL,NULL),('8fb8d253-465c-4967-b816-afa23e3a260f','null','96885133-398b-4572-96b3-ffa77da9d9f3','4c5c2ed5-0bc7-406a-b95f-8c128c522141','2','Expansion',NULL,NULL),('8fc20efc-afb8-4b15-921b-ed0b486d4e8d','null','2fb28e79-e6f2-4cdd-832d-f191244207e5','04854ad3-6b53-4f04-a14a-6f68a839b62c','1','Expansion',NULL,NULL),('8fe6a184-b66e-486f-bbe1-0a0515bc7619','null','b3ae6092-1973-495b-9cae-5813679da421','e018151b-6c29-496b-92de-cd22671651d7','1','Expansion',NULL,NULL),('90ac24c0-3ab1-4500-9959-e112e71a2b25','null','67c9966c-e0fc-4938-be0a-c2d56fc078e2','5acf8675-18b7-40a7-a7cc-973dc324a5ab','3','Expansion',NULL,NULL),('922ed4fd-0393-4845-92bf-ec8ec16c0a35','null','4e23c086-568d-455f-9fd3-78385ea07f5b','11346175-92c0-4acf-ad03-dfa58a0572f7','1','Base',NULL,NULL),('935de7c7-562e-4b5a-960c-881cf5827b05','null','fd756115-e0b4-4341-8ef1-79ebc9f985eb','eec17d4d-5bb4-4f56-9f8c-591f2e572631','3','Expansion',NULL,NULL),('93623be0-bd76-4d21-8c79-1f80afe7a913','null','1b794a81-9a5d-47e7-86ea-f18c27100a2d','aac6fecd-f110-4c7e-86e4-880f46f75689','1','Expansion',NULL,NULL),('94b2b4d7-b258-4349-981c-67e26503d70a','null','35cccd23-8c7b-4c96-a6c0-76317248d50e','8e65ecd1-06b7-4e0c-b23a-4c5b3e08cc9a','1','Expansion',NULL,NULL),('96c9ae68-9212-4955-ac9d-69f0f2205f70','null','df35ebf5-880b-4052-b4dc-5fbf38a423ca','bbf63386-42ec-4cae-a6a1-a8dade4e09e1','1','Base',NULL,NULL),('97bb1d8e-6bce-469b-b899-47e26210f5f5','null','7e2402f7-411d-4978-b92c-680d426d4dd0','0755192a-fd92-45f9-b531-7b257c1a5552','1','Expansion',NULL,NULL),('9962eece-474c-4ba3-a149-9e3856179bb6','null','a596b2f4-74c5-4a7f-9e0a-a9437cc573f7','1feefaec-46a8-438a-921d-c6da2e74c2fe','1','Expansion',NULL,NULL),('9b045d36-df11-4fde-a525-9a862c604bf2','null','69ad845f-3589-41e2-a373-217599966953','0be84e4c-a69e-40f0-8b9d-aa0882de154d','1','Base',NULL,NULL),('9c038c1b-64a8-4ae1-903f-c5b8c5b09665','null','856f7b1a-830f-47b3-bba6-a2d54e5c72f8','d9153096-7f86-4c0b-9581-6611c965827c','2','Expansion',NULL,NULL),('9c75c94e-0af0-4d5b-87ec-ae76aeeb7cf9','null','fd756115-e0b4-4341-8ef1-79ebc9f985eb','eec17d4d-5bb4-4f56-9f8c-591f2e572631','3','Expansion',NULL,NULL),('9cbcaa70-d7d7-43f7-b0fa-489b8ee6230b','null','b111a6c9-1316-4133-b9ec-3be90e84afdf','4cf7e6f4-c748-490c-be04-67cd9b67d215','1','Base',NULL,NULL),('9d076607-bf44-48d6-a0c7-5659b0b808b4','null','83c7153e-c078-48b9-8134-d62901829ecc','b3cdf066-bd51-4316-878e-4f261a517407','1','Base',NULL,NULL),('9d6ec5b0-f4fc-4320-a2d0-a3599dafcee5','null','ca2d8515-9eb7-48d8-8bed-71feaac8afdf','9fb7b403-3ae2-4624-a4eb-3e70a016ef9e','3','Expansion',NULL,NULL),('9e006a64-819a-4037-a2a2-902b78da277a','null','45cbf47f-039d-4a7f-a80b-cc989355f8bc','ea43f3e0-ea7f-4ead-a5c4-236de5833675','2','Expansion',NULL,NULL),('9e310624-a0f2-47f8-81f4-09c74aa85edc','null','143477a0-d9a1-4b09-9ac7-2318039319ba','f01c87d1-bce1-49bc-b188-aa6e20a67ced','1','Base',NULL,NULL),('9e4fdf97-47d0-4c11-9db8-a71028507be8','null','a8faba2f-1f83-4206-9818-d0bc7321753b','4bfd0a7f-fc43-4130-87be-fabf513b1ff9','1','Expansion',NULL,NULL),('9e7078d6-5959-44ac-924e-0b51e9488efa','null','53ea883e-8eae-456a-adfa-f08739e09e0f','7b680fb3-c2cf-45c4-9481-fcc3a0c69d36','1','Base',NULL,NULL),('9f4167aa-88f5-4745-a614-06c99d3c1a4d','null','8a4b2976-76c1-41dc-a27b-f167ef7068af','6a066eb0-b9ed-49dc-a7db-bdd8be6deee2','1','Expansion',NULL,NULL),('9fb239d4-fe2f-47f3-aecf-b3b75a5fae41','null','1d91dffa-b52f-428c-998c-b655118e806f','d6fa151b-d374-4eb9-93fd-d039dca3229b','3','Expansion',NULL,NULL),('a074136b-3a39-496e-ac5c-b3992d380682','null','68c006af-1e78-4156-80d1-477716a2346b','60a1b82f-bb76-4222-a3d7-453c0439bd54','2','Expansion',NULL,NULL),('a1409bda-4ed4-4f65-842e-ff8168056065','null','6ca5e94f-7a40-42ab-a4ec-65be9c94dd22','c29ff7ff-bca6-42a6-8427-07b3e44a0a5a','3','Expansion',NULL,NULL),('a59a4a1a-a3b8-4ef9-9d9b-2666f7e263c4','null','80ff85fb-cb11-42cb-9737-e47095d42756','01166434-ef34-4969-aaf2-626203d72e48','3','Base',NULL,NULL),('a731ce5b-e125-4e1f-a4bc-8595d36dfe42','null','9b82936a-8fb0-492c-8517-f3f13e224577','6c294358-6111-42d6-b418-41225ff201cd','2','Base',NULL,NULL),('a73ef048-c6e4-4d42-87e7-b1333e018128','null','e3e52111-f617-4ce7-a6a8-465e23a33b25','52bf4315-5a59-48b5-9b63-127011cf1760','2','Expansion',NULL,NULL),('a86d3649-b20b-42c8-93d6-6817173b0ded','null','a61dcf48-f4db-466f-bfe7-81a15776a41f','7abedd84-d10d-4daa-8d9e-1ac5e6c53853','1','Base',NULL,NULL),('ab2e647f-c159-436e-bfe2-9b11d10b4053','null','c1d7b9fb-5948-49d8-937d-f64a7006b552','62e53e0b-785a-4535-ba07-9ffb047d2057','2','Base',NULL,NULL),('af967b00-eb8d-4934-bd5d-018ae4dc3ed3','null','e0297a51-c670-452e-b31c-c5b37c6ad40f','6f09e053-56a6-4fbb-8299-e1de616825cc','3','Expansion',NULL,NULL),('b031bfb0-e1a1-41a1-be29-8387f9b65f15','null','ff932c01-9b9d-4914-aeff-847620b23c75','1035210c-b42d-4e32-816b-6fa7587e2447','2','Base',NULL,NULL),('b0a38c33-4464-4dc2-86dd-20fe9e4aabec','null','07bc6fcb-fbce-45be-99b1-151d00b3738a','a4528198-ed1f-433c-836b-5b6a1ca231ef','2','Expansion',NULL,NULL),('b0dcaed4-18ea-4afd-a34a-ddfd3dcb7b70','null','2dc6e60c-6971-4db6-98a6-0f42ee05231c','5d292079-dec7-4121-8a53-93739d345494','3','Base',NULL,NULL),('b458f4ef-ede2-403d-9605-d08c9398b6ee','null','6ee87d26-266f-4669-9d7d-9324802c24c9','e99b85bc-5f07-480a-bbf0-d5880a12469e','1','Base',NULL,NULL),('b62cc06c-4d23-40a6-9e56-7b1e00e731f9','null','30fe8d84-fbcc-43b5-b8f5-cad24f52d181','8400d0eb-20f4-437d-b655-2eac59677478','1','Expansion',NULL,NULL),('b66bd427-02d4-44ea-8117-6d1d1441fdad','null','b4a3e1f7-dbd2-481c-a22f-fda382bbb90c','bf73d965-216a-466a-be7e-1dfbefa91be4','2','Expansion',NULL,NULL),('b8cdb3e3-43cc-4eac-b886-ab0e408e4325','null','a5d2f324-5a20-4343-9d8a-72b305244223','89ecf791-fae7-491c-b0a7-e7a25d2057d6','2','Base',NULL,NULL),('ba3064d4-69c0-43a4-a435-522ef1029af6','null','7199aba6-a1ee-4af6-80a4-145093b816ef','333c95be-48e2-489b-a301-4b5216e2c7da','1','Expansion',NULL,NULL),('bc77e17a-be43-420f-94f3-30d129dd31b3','null','a8faba2f-1f83-4206-9818-d0bc7321753b','4bfd0a7f-fc43-4130-87be-fabf513b1ff9','1','Expansion',NULL,NULL),('bcba9935-2a86-42c7-abd8-2cbf330fd820','null','855ace80-8d5f-4e04-ae95-5da3b5e2ec36','e3387a8e-839d-4644-b9e2-87e0cc3e41d3','1','Expansion',NULL,NULL),('bf182e13-b670-4b6d-a03e-907d40e153ea','null','f34c0c11-4320-4538-9a57-edbbd0075389','6af103fc-79a8-4c70-a949-24a4696b33de','1','Expansion',NULL,NULL),('bf3c0f68-8fc5-44eb-a5b6-c392c40ae685','null','da8f1dc1-db44-4ae5-905c-757ef275d113','390b20da-b182-4561-976d-a8e8db27137e','2','Expansion',NULL,NULL),('c03772df-9da8-4e47-b145-4492b7cdc2e0','null','638c6130-06fb-45c3-922d-170e5aac08e7','a76cbb00-2e6b-4297-8a57-20f71e0583c3','1','Base',NULL,NULL),('c04b672c-914b-4ba6-821b-2dd72ea2f471','null','6e218679-f27a-4b90-adba-f9002079c41b','2243dc06-1b52-4a56-abe1-39d7efed538d','2','Expansion',NULL,NULL),('c0720fe9-918c-4134-9c94-15362364c66e','null','a27ba469-c844-4fcc-a4d9-e6a794286362','4e232768-d04f-4231-be78-34fed7e7981c','2','Expansion',NULL,NULL),('c24c2bcb-b6c4-4ff8-8bb3-a45abde0f379','null','30fe8d84-fbcc-43b5-b8f5-cad24f52d181','8400d0eb-20f4-437d-b655-2eac59677478','1','Expansion',NULL,NULL),('c3dcba9e-0fda-4491-ade2-98f47d93c7d0','null','ff932c01-9b9d-4914-aeff-847620b23c75','1035210c-b42d-4e32-816b-6fa7587e2447','2','Base',NULL,NULL),('c42ba9fe-88f5-4c03-ac93-fde1ba9d405d','null','bcb09cf9-c55b-4390-b1ca-077cfc3fbc7c','d1d62a25-4d08-4a13-bc18-368a9b618c70','2','Expansion',NULL,NULL),('c438643a-73d2-402d-9eb0-84be3d1f68e9','null','57003ff9-49a2-442e-9b66-81303afd5a74','cacf1996-a09c-478b-9db4-3017df786449','1','Expansion',NULL,NULL),('c5a6b0f6-1402-40c2-a732-f45a7460d0dd','null','34ba13f5-62db-4179-bc38-bbe6cfc4ca2d','4c53f3ee-6c6b-43fc-88cf-6ba7c451b7cd','3','Expansion',NULL,NULL),('c64de178-5b3f-4040-b8f9-14cfc145d993','null','e3fb4ced-d031-452b-9810-b96ffdaf0715','8225fcc9-e083-4328-8199-a13e0dcb7f35','2','Expansion',NULL,NULL),('c6e2df96-763c-491d-9664-e6240db1182f','null','894da0c8-2eae-4c2e-b9e4-c1923bbd1487','b34d88e6-2d57-4bb8-ae60-69b7765effa7','1','Expansion',NULL,NULL),('c7b61236-e20c-4ce4-b18c-ac487ac747a2','null','df35ebf5-880b-4052-b4dc-5fbf38a423ca','bbf63386-42ec-4cae-a6a1-a8dade4e09e1','1','Base',NULL,NULL),('c7e40081-48ac-4d7c-9ce4-7c1082a44c5f','null','c66dc598-212b-4d60-8201-53f0e609d1d1','16f1a93b-203d-4c4b-af9d-3e5971abbcea','1','Base',NULL,NULL),('c8923ecc-afd1-4271-9bd7-8f023b4f7392','null','d3f5594c-ca4e-42f6-9456-66af48b5d91b','652cfd56-0578-4e93-a1e1-f97a3c3c804a','3','Expansion',NULL,NULL),('c8a1b548-cdfa-45c4-ba5f-3260158e57a4','null','2fb28e79-e6f2-4cdd-832d-f191244207e5','04854ad3-6b53-4f04-a14a-6f68a839b62c','1','Expansion',NULL,NULL),('c9dd02e8-470c-4c54-bddb-3e7bf430d7e1','null','22191997-1f10-43af-8644-b2a032ac52d5','fa84b0ff-79a4-4cd1-a488-1a2f282a178c','1','Expansion',NULL,NULL),('cc9a5c63-471e-4f7b-9375-168d9de29374','null','44545e64-5b78-4780-8cfc-04a7869d254f','08c3cfce-e549-479e-adf4-ed1e39daa694','1','Expansion',NULL,NULL),('cd61a2d2-cce9-4ac0-b167-27b84a8833b9','null','58549ef0-e847-4e55-a7e0-57175c5f613c','f1947594-b787-4195-93b7-a26b7e2047f1','1','Expansion',NULL,NULL),('cff51306-3e71-479d-8bf2-c45e80de75e5','null','114415eb-6389-413b-987a-fca54accd681','a236add5-67f2-4044-8f14-d69d1baee994','1','Base',NULL,NULL),('d0155d09-b4c1-47f0-8941-0dcd1cc7f8a9','null','f55a7a9b-b509-453e-80de-2aa004c2bb17','96454f0c-86f3-4993-ba3b-8c437d3da380','3','Expansion',NULL,NULL),('d0220f8d-4dd1-4b39-b25f-9f9f70d979dc','null','24cfd9f7-146c-498e-a9ca-74795536bee7','2ef57504-771c-40c2-a173-293a1bc0458d','1','Base',NULL,NULL),('d02645bb-c17e-48ef-a5b1-4132182c8781','null','df121619-2d8b-4826-92ed-508b18a0ed39','345c0d38-4a26-444b-a090-751c6bc0ce41','3','Expansion',NULL,NULL),('d09f617d-0cd7-412a-bd44-6e75b73cb9bf','null','f45aa352-8e76-4ae6-adc1-340c953221ed','75eed7df-995e-4775-8bff-9cbd3bd2d35f','11','Base',NULL,NULL),('d17c6039-548a-446d-b5e5-3a092fe2ffa2','null','6e17bf6d-548c-4d89-9d73-c2e2dfa71b0b','222145b5-56f7-4263-bbb0-e1519f74b2fa','1','Expansion',NULL,NULL),('d1ff7261-3548-42ea-8002-decbb30b0ba0','null','23befc6e-aa97-4004-b215-4979c3f84913','4cf78631-996b-4a1d-9307-f781c00c733f','2','Expansion',NULL,NULL),('d3c06505-b1b3-4554-9b8a-b1ef97982c14','null','2b3dae4a-9bdd-462b-90fe-afdb2ba25c19','a62c7540-d9d0-43da-92e8-59bd4332edfe','1','Expansion',NULL,NULL),('d5b21eb1-1136-49a6-95b8-3466a9768bad','null','3816617b-46e4-4401-9f63-99d5eea7b3e3','d8ccab86-4a1f-49f6-b150-9ee83a9e4ace','1','Expansion',NULL,NULL),('d6b43575-63be-402f-bedf-5f362ad2d186','null','7628605b-bf63-49ae-9167-bde09df73166','060d3229-d944-4f58-94c4-3e29d2182abb','2','Expansion',NULL,NULL),('d7df8116-e8bb-4748-b46b-e8264f324646','null','e61d00d2-7be4-4549-8b74-9933fd45c181','1175a4d5-49a0-44fc-b0c7-08188fd44722','1','Expansion',NULL,NULL),('da400dd2-11fb-4387-b9db-8af6c2a1a8e2','null','2dc6e60c-6971-4db6-98a6-0f42ee05231c','003fbc2e-4743-4c86-90cb-622812cef8e0','2','Base',NULL,NULL),('dd130cdd-d1f7-4087-a27f-c37c683ee38c','null','39486d7f-b659-46e5-a164-cba8136ec77f','d520cbda-841b-4735-8671-feddb1350dfd','1','Base',NULL,NULL),('de7ebfda-e96b-459a-8e50-ee3e1ed5b5d7','null','a8faba2f-1f83-4206-9818-d0bc7321753b','4bfd0a7f-fc43-4130-87be-fabf513b1ff9','1','Expansion',NULL,NULL),('dec731f9-266c-4a71-844e-fd1649ea1fe1','null','f010ba64-9e45-4e9c-9903-65d475f77ed8','1b56a850-8001-4f77-8706-1aaf8829e461','1','Expansion',NULL,NULL),('df40c854-7dcd-47d3-b2dd-ddb5c7996336','null','c1752553-34c4-4cd9-9962-e2e822d8718b','25659306-4c56-4d58-80d7-25602ecd8456','1','Expansion',NULL,NULL),('e0718752-54cf-4535-9793-b695da1aaed6','null','2c0d78c2-9e41-4388-b6fc-bb456d4254c9','0a7df31a-4c9e-4a55-a195-92b754c7fd0a','2','Expansion',NULL,NULL),('e21702a8-907a-4f78-a6ae-d667ce511b7e','null','554e15f5-3c69-45fa-b71b-d0b85dd5c9c1','ed3dbc17-53eb-434d-90a2-73a6b3760417','1','Base',NULL,NULL),('e2609a23-74cd-44d4-88c6-7685ebfe1fdb','null','2638a531-c5d0-42cb-9466-b24de1680ffc','ac53bd31-b2b1-42ce-826a-a9420712cbff','1','Expansion',NULL,NULL),('e29a3919-8a4c-407e-9c40-29552b82804a','null','7e2402f7-411d-4978-b92c-680d426d4dd0','0755192a-fd92-45f9-b531-7b257c1a5552','1','Expansion',NULL,NULL),('e3ac1662-3b03-4646-95c9-eb396b91d733','null','51a8be82-b1e1-4d31-bc5f-c945d46bfceb','c4de5251-b5b1-4e30-adf2-0e5816958077','2','Base',NULL,NULL),('e45d5b08-d8c9-4470-8cda-d7bca56508f7','null','12c572d8-9782-4f81-aa78-b232709f57da','a609deb0-13c6-4b7d-916f-3f49eb3579bc','2','Expansion',NULL,NULL),('e778800a-b181-4f6c-8bef-16e7540e0894','null','48dcff69-d4eb-4ba4-8d87-0f8aa9b78689','6fd07519-c8c6-4510-85f9-3a7515fe5e7f','1','Expansion',NULL,NULL),('e8f1bd87-2349-4bff-a0e3-38d2aa638889','null','461b2d7a-97c9-4a55-980b-418b5d832f28','8c77ca52-c1c8-4e83-94fc-04ce2b17e02d','1','Base',NULL,NULL),('e9d29fdd-0326-4a53-a9c8-dfcae94696e9','null','fc5763f6-0876-40ca-b7f0-5182e021f6ed','8fbc2b4e-d129-477d-8b43-d2841508578c','2','Expansion',NULL,NULL),('e9d7f357-bf0c-4865-95cb-ed2439c63d79','null','ddc73cbc-90ab-473b-b978-7f3ee37169be','37f2f58e-7e88-4c85-b70c-f82e7d7a3694','1','Expansion',NULL,NULL),('eb9db5a3-2aaa-40dc-a5ff-b4341a0863e2','null','80ff85fb-cb11-42cb-9737-e47095d42756','68a5eb13-6887-4d22-ae22-927efdec8925','2','Base',NULL,NULL),('ebbcbcca-9397-43f2-b1e0-95f445701268','null','55b9e2fe-7bb0-405f-af8f-89db1b1ccab8','104743d6-f21d-46e6-95f9-a8397fd668c4','2','Expansion',NULL,NULL),('ee0ff917-f119-4c3e-a81a-19abc04be3aa','null','8ed0d773-f6c2-4a1d-aec9-c87ab66b4e57','0688e725-5af9-43b6-be02-c40bd479f6a2','2','Expansion',NULL,NULL),('ee43bb7f-e4b2-4a60-a62c-3cef383ed20c','null','a596b2f4-74c5-4a7f-9e0a-a9437cc573f7','1feefaec-46a8-438a-921d-c6da2e74c2fe','1','Expansion',NULL,NULL),('f0c7d780-5af6-4519-85fc-784b43f84725','null','e61d00d2-7be4-4549-8b74-9933fd45c181','212d4f97-019a-4820-a71e-5d92d5734906','2','Expansion',NULL,NULL),('f2479ef3-06bb-4669-825d-67d30dfd3322','null','b3ae6092-1973-495b-9cae-5813679da421','e018151b-6c29-496b-92de-cd22671651d7','1','Expansion',NULL,NULL),('f2bfb366-2027-4fbc-95a4-c8967c577813','null','de877de8-8519-445d-b582-1089e7856d04','819b60c1-302d-4461-82e9-864f3607e776','1','Expansion',NULL,NULL),('f2c84c2a-b199-4fdb-a334-71002d5f7260','null','2fb28e79-e6f2-4cdd-832d-f191244207e5','04854ad3-6b53-4f04-a14a-6f68a839b62c','1','Expansion',NULL,NULL),('f2cbfead-1c9e-4756-a053-cf34f1b6eb4d','null','7e2402f7-411d-4978-b92c-680d426d4dd0','0755192a-fd92-45f9-b531-7b257c1a5552','1','Expansion',NULL,NULL),('f30a1485-929d-4fc5-b678-05cb18a5b5d2','null','10c7ad74-0e32-4a6c-a065-7ce850f2d65d','56f3f5b8-98c2-4293-93a2-6b0120c77871','1','Expansion',NULL,NULL),('f46f2c00-cfc1-4bf7-8143-326af473d420','null','5e6660dd-2317-49b0-b893-8505c8e185df','1a295f64-eb36-45f0-943b-911445b6caae','1','Expansion',NULL,NULL),('f4b50017-b8d7-442e-848f-74844353cf90','null','9b30bca2-ec1f-4fdd-afc6-4fb298893801','b1c1f37e-41e3-4e06-8733-b70e5049aa88','2','Expansion',NULL,NULL),('f4f294fe-881f-4517-87bb-ba0500bc43a9','null','e35c8255-bb7a-4a56-9ed7-b44fb1474581','1abdeb20-b3c7-4ef7-96f6-964691d73ec1','1','Expansion',NULL,NULL),('f515095b-7030-40ec-ac9e-7f046c1435df','null','8a8e0578-135a-4144-adf7-b02ba6bf248e','ef4894f3-9573-4616-879a-7defb9eb2806','1','Expansion',NULL,NULL),('f5af1861-a476-42e2-b9eb-0fc064f4952c','null','77815620-a22e-4897-86ac-b37c319f21c6','e83944fd-b65b-4e2a-b7f7-dda6f1fa84a5','1','Expansion',NULL,NULL),('f6b25499-227a-44b2-8952-23d72ea2b074','null','4b718741-92d8-4c6e-920f-9a65da502b11','2b7d163f-3dce-454c-ad2a-8cc7ed0e8cda','3','Expansion',NULL,NULL),('f6e6e032-fc9c-4f75-a82c-f00b6a6e9cfa','null','5596de5c-2301-4764-b650-2dac0af3f513','1798fe1b-64ba-4845-bfe9-0996bb573f6c','2','Expansion',NULL,NULL),('fa3ecc0e-a334-4ffc-8e30-250411c6833b','null','c3eb5880-1370-4f47-8cdc-72a539782c63','f961726a-0fa2-4a68-805b-65c8421efc6c','1','Expansion',NULL,NULL),('faee0036-4c4f-4c55-b3ca-3533a18439f7','null','7185d525-31dd-4a6f-8a01-caec089b133e','c690c595-3d05-454e-8a17-3124ff0dc055','3','Expansion',NULL,NULL),('fb323bb6-bff2-4178-b089-9100261acc47','null','eb5a1e09-7f46-4f1c-ab7a-b017bad95261','fa1c8558-006c-4fb6-82f2-4fc0646d6b06','1','Expansion',NULL,NULL),('fc3adc7e-e74e-4727-86b2-988a4143446b','null','2fb28e79-e6f2-4cdd-832d-f191244207e5','04854ad3-6b53-4f04-a14a-6f68a839b62c','1','Expansion',NULL,NULL),('fcb1d58d-953b-4e21-a522-6489c7b3c3c9','null','eb5a1e09-7f46-4f1c-ab7a-b017bad95261','fa1c8558-006c-4fb6-82f2-4fc0646d6b06','1','Expansion',NULL,NULL),('fcd524bc-35cf-4587-8d2a-7d3ecb20b467','null','7628605b-bf63-49ae-9167-bde09df73166','060d3229-d944-4f58-94c4-3e29d2182abb','2','Expansion',NULL,NULL),('fd5d4f10-4e04-41fc-a925-9121006ac6c1','null','2c75b340-1bf6-4b0a-9fca-a488e8590149','ebef4326-e84a-49ea-9b51-32d4c35f4cb4','2','Expansion',NULL,NULL),('fe3ca454-10a5-418b-af62-a5044613faeb','null','f2e8f36d-351e-45bf-9a23-7a91dc5a2c8b','f82cb12c-b241-428b-adb0-efff001f9361','2','Base',NULL,NULL),('ff3b54db-f9ec-4e23-bdf8-030ebf52b23d','null','e0297a51-c670-452e-b31c-c5b37c6ad40f','6f09e053-56a6-4fbb-8299-e1de616825cc','3','Expansion',NULL,NULL),('ff5f5ce3-1134-481a-8ba7-922d169c5c35','null','14483a47-6f48-4489-b420-bb67b5006d2b','bacade2c-25a8-4b74-8e65-92c049a1b896','2','Base',NULL,NULL),('ff6d9d46-cbf3-403d-b31c-746a044c54d6','null','5d74727d-c270-4ff4-98ee-cadf2d70f25c','421007cd-26ed-4a20-b740-f7a72bc86aa7','1','Expansion',NULL,NULL),('vnfapi-001',NULL,'vnfapi-invariant-001','001','v1','TestVnf',2,'Y');
+/*!40000 ALTER TABLE `VF_MODULE_MODEL` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2017-10-12 20:49:23
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/vfc_model.data.dump b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/vfc_model.data.dump
new file mode 100644
index 0000000..1974f2a
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/resources/vfc_model.data.dump
@@ -0,0 +1,66 @@
+-- MySQL dump 10.13  Distrib 5.6.22, for Linux (x86_64)
+--
+-- Host: sdnctldb01    Database: sdnctl
+-- ------------------------------------------------------
+-- Server version	5.6.36-enterprise-commercial-advanced-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `VFC_MODEL`
+--
+
+DROP TABLE IF EXISTS `VFC_MODEL`;
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `VFC_MODEL` (
+  `customization_uuid` varchar(255) NOT NULL,
+  `model_yaml` longblob,
+  `invariant_uuid` varchar(255) DEFAULT NULL,
+  `uuid` varchar(255) DEFAULT NULL,
+  `version` varchar(255) DEFAULT NULL,
+  `naming_policy` varchar(255) DEFAULT NULL,
+  `ecomp_generated_naming` char(1) DEFAULT NULL,
+  `nfc_function` varchar(255) DEFAULT NULL,
+  `nfc_naming_code` varchar(255) DEFAULT NULL,
+  `vm_type` varchar(255) DEFAULT NULL,
+  `vm_type_tag` varchar(255) DEFAULT NULL,
+  `vm_image_name` varchar(255) DEFAULT NULL,
+  `vm_flavor_name` varchar(255) DEFAULT NULL,
+  `high_availability` varchar(255) DEFAULT NULL,
+  `nfc_naming` varchar(255) DEFAULT NULL,
+  `min_instances` int(11) DEFAULT NULL,
+  `max_instances` int(11) DEFAULT NULL,
+  PRIMARY KEY (`customization_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `VFC_MODEL`
+--
+
+LOCK TABLES `VFC_MODEL` WRITE;
+/*!40000 ALTER TABLE `VFC_MODEL` DISABLE KEYS */;
+INSERT INTO `VFC_MODEL` VALUES ('0062f5d9-eee4-4660-b08b-b1c63500b6ec','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('0063a07b-6eb7-4ed0-a0fd-5a2877cf1b11','null','629e5ac3-c75d-475f-8262-f53f6f761c2f','dec80f28-f12d-4ade-be99-d3ebf7635ecd','1.0',NULL,NULL,NULL,'virc_cc','virc_cc','virc_cc',NULL,NULL,NULL,NULL,NULL,NULL),('00b2ed93-e2c8-468b-aa39-bd77a2f3e4ac','null','aa2c90ad-56a3-417e-bfac-a16d52855861','a053db31-b6e6-4268-9d64-f3f26f630671','1.0',NULL,NULL,NULL,'schemamanager','schemamanager','schemamanager',NULL,NULL,NULL,NULL,NULL,NULL),('0137c30b-93c3-49cd-ac2b-eff8eeaae0c9','null','48ecf111-2b9a-491b-9a25-55fb39117ea0','ef7ad35d-0f5f-4016-900a-51ed005ca693','1.0',NULL,NULL,NULL,'cognosccm','cognosccm','cognosccm',NULL,NULL,NULL,NULL,NULL,NULL),('0142d2b6-d79d-459e-a414-4a68e18d554c','null','d8e95546-60f7-4d74-9bc3-97326e57f9bf','d003593a-de80-4202-9a80-bc5338c679c4','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'nd.c4r8d0',NULL,NULL,NULL,NULL),('014a9370-210a-491e-badb-2831f7ebc6d1','null','c9b52c32-2e53-47f5-9250-650d5380764f','33befda2-c9fc-4b49-9202-393fb8130277','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('01984773-9b8c-4a9e-ac78-7a6715abea41','null','94a6c3d9-fda8-435a-9e77-4eff0258b7d6','117022fd-d404-4d61-8d33-9fe539702eed','1.0',NULL,NULL,NULL,'nems_be','nems_be','nems_be',NULL,NULL,NULL,NULL,NULL,NULL),('019ee7d6-97f0-41c1-a9c8-ce753223c258','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('01eb2ef8-2331-4a95-bfe1-d3e4dad3cd4f','null','81edb46d-046e-4011-81b4-35abe397885f','cfea6434-95f5-4de2-9823-4615e00f1aba','1.0',NULL,NULL,NULL,'plt','plt','plt',NULL,NULL,NULL,NULL,NULL,NULL),('037cd524-4b26-4609-8fd0-3aa61ed1a2e2','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('03993dc2-e8ae-4b48-a5d9-33811fe820dc','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('03a5b04e-ebb1-4d2e-bc69-d4f88706086b','null','dd05c4b4-e316-4dfe-8299-e80171bf48b8','9fa396db-273d-4fc2-90f7-05462023c744','1.0',NULL,NULL,NULL,'be','be','be',NULL,NULL,NULL,NULL,NULL,NULL),('04080672-2d81-4f9d-a58f-78d4380d9a18','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('0447d25b-a3e3-4c51-809b-81a55b052bd4','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('0448c405-43f6-4514-8ce7-57f46ec47f55','null','7d603e14-9f59-4948-964d-df8bbccdc467','04d01856-ae41-487a-9919-b309a95309ae','1.0',NULL,'Y',NULL,'app','app','app','USP_IECF-APP_30.3.3-mcas4.4.6.qcow2','nd.c12r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL),('0471e477-09c1-43e2-a26a-7839d81475ee','null','1f00292a-0da3-4862-82c2-a606f9e2bf9a','ffa107f2-20ea-4264-8aa0-34a4dcd9e33c','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL),('0533df13-256d-4aa5-8123-3ed4cd067a00','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('0540f0aa-408e-414e-a00f-f5fc603edaef','null','9cef0352-fbe0-47df-87d5-62ed44ba5608','d2990b48-bc98-492f-b5cc-963db16b5ee9','1.0',NULL,NULL,NULL,'pd','pd','pd',NULL,NULL,NULL,NULL,NULL,NULL),('0561ec40-601c-41bb-bce5-04feae250e09','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('05d29ec2-ac26-4b6f-9687-9898c6c18910','null','facde21f-6dfe-47d1-beb5-003fae6a0651','462efc3d-a1ca-4925-a982-1dbd8d3dfbaa','1.0',NULL,'Y',NULL,'msrp_msc_b','msrp_msc_b','msrp_msc_b',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL),('05d36951-3d07-4255-8058-5bfc65b62d38','null','1ba0abe4-897c-4d22-a039-b6af2fea476b','f00fb687-7cdf-4fe7-aaf9-3836c793ffaa','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL),('05fda582-6802-4e21-ba32-610c7fb1d1b8','null','55372be2-6074-4793-92b1-e0fe1afb08b7','d03e16a8-becc-435b-aacd-829f6e3150b3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('063ed102-0d00-4cff-8bff-880ed09ad584','null','5fb94500-7c25-4e41-86e3-87e11738a997','67079eb1-9fe6-4731-955c-e737ac75be56','1.0',NULL,NULL,NULL,'rpmrepository','rpmrepository','rpmrepository',NULL,NULL,NULL,NULL,NULL,NULL),('069ef0e7-87d0-439e-846f-097c5d64a94d','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('06a1d072-4752-48c8-9c52-dfdd4c09c9e1','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('06eb1491-11fb-4e2c-80ed-5f4ad8b83b18','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('06f49ac5-7025-4737-bc0d-880371539b49','null','0a288050-1f71-4ccf-8661-316720483150','8ef01225-7484-4d8c-bd31-b7d45c4c8bec','1.0',NULL,NULL,NULL,'qtracelb','qtracelb','qtracelb',NULL,NULL,NULL,NULL,NULL,NULL),('071a1959-8203-4e9d-8c2f-d3dd67076353','null','1acc9e6a-8984-4cc5-8d72-3bfb793ed325','83fd2e6e-3c8f-478f-a940-0bf3913d2cf6','1.0',NULL,NULL,NULL,NULL,'vdbe_node','vdbe_node',NULL,NULL,NULL,NULL,NULL,NULL),('078e0007-2e68-4472-9506-d5910e167fa2','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('079379c5-41fa-4acb-b058-dd762213f48c','null','d8ae042a-d48f-4d1c-963f-b928f9c5dded','b4ac350f-d421-4d7e-a45f-44f0b3dde082','1.0',NULL,NULL,NULL,'mmsc','mmsc','mmsc',NULL,NULL,NULL,NULL,NULL,NULL),('07be8d64-8e5a-4de6-96e7-41782560df6a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('08372faa-bc18-4211-9fd3-19e3841ddc94','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('0863ccbd-cfdf-4f71-b8ef-e37a045aef7b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('08f086e2-a710-42e1-944d-ac8fa4118040','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('08f2b087-4b49-41ff-b4f5-a36c6d2cd92e','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('0a2882a0-eb50-4c05-a99b-97b6f4308620','null','6af6139f-fdad-4b92-a60c-1e121b05bcaf','8c85080c-5e9a-44ab-9a50-e2f7347abaec','1.0',NULL,'Y',NULL,'uir','uir','uir',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL),('0a941339-667f-49b7-bf71-58f952cecbb8','null','cfc8c02a-5018-4b58-8216-87dd38c72bfa','edd9bea9-efe1-4c15-a415-f7ddc83d4bd1','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL),('0abe9a8d-2437-4d82-92e5-d8190a8e2240','null','8dd6d443-245e-4836-b008-cffdd1ed7f92','9db9362c-0fbd-4621-ab74-6571903dcd8a','1.0',NULL,'Y',NULL,'app','app','app','USP_IECF-APP_30.3.3-mcas4.4.6.qcow2','nd.c12r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL),('0b390d3f-7089-45c9-8726-c69bdb7ee963','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('0b552ace-2f72-4d78-8adc-3f6e7032dcf2','null','6e0975ad-7f9a-4dfb-b4b9-0bc7f42dc8b2','0f294f57-03d6-4348-83ae-4ede8f9430ec','1.0',NULL,NULL,NULL,'processing','processing','processing',NULL,NULL,NULL,NULL,NULL,NULL),('0bc31a69-5e59-492c-a40b-e954d98b0809','null','51a669a5-4c83-4231-8aa0-9939acf835ef','3b97c83c-ee8b-4eb7-9910-428b7a58d9cb','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('0bc7260b-0572-4a47-bd84-b7bdb549a64c','null','47efe716-c94d-4d1e-9739-d90a0110f62a','418c85aa-4f64-4cad-a106-c22bcee7316e','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('0cd419ed-508f-4dc6-bcd7-a18787161255','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('0d5f6296-2725-4ddf-a5f5-4ec2b2bfa2fe','null','6f46fe0c-e467-413f-98c6-45aef5b7e33f','5a0d5695-bd83-423d-b9a2-c241528ecb89','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL),('0d9e290a-d6ad-4211-a11d-18b4792297f9','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('0dd132b5-f92e-4171-98ab-f22fb7695ba0','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('0f284f86-fddf-49c3-9a33-bf0ede0a361d','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('0f34a065-f043-401f-b0ef-d33dd77eb1e4','null','788edb40-2174-4722-8756-9c61b20484ec','e98433e9-6ca5-436d-aa17-4d7385ed99ec','1.0',NULL,NULL,NULL,'rdn','rdn','rdn',NULL,NULL,NULL,NULL,NULL,NULL),('0f4ca5e1-0f10-4550-a815-4f1a7ce05c32','null','feb4bb3b-accc-4396-8649-0898f4863d33','203caf20-132f-406b-95b0-ef8a35112dcc','1.0',NULL,NULL,NULL,'pcm','pcm','pcm',NULL,NULL,NULL,NULL,NULL,NULL),('0f61f955-e80d-43a4-8ce1-b74193595e95','null','e33903e2-7bc2-4393-b185-87f5907539f2','47157d39-6286-4037-88e5-2f616ff751bf','1.0',NULL,'Y',NULL,'pcm','pcm','pcm','NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2','nv.c8r12d100',NULL,'{ecomp_generated_naming=true}',0,NULL),('0f6f72f5-c86c-4b79-988b-4c0b5f18ce9a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('1','yaml','inv-uuid','fe6985cd-ea33-3346-ac12-ab1214812345','version','policy','Y',NULL,'naming-code-1','vm-type-1','vm-type-tag-1',NULL,NULL,NULL,NULL,NULL,NULL),('10dc2bc5-8ab4-4477-930c-c6796781efd3','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('1139adfd-89e7-4f25-95a3-1c600ff48e59','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('113b3b51-2d7d-4c1c-bffd-cef0a2c56035','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('11955383-eca3-4375-b8ee-07897373db19','null','0a83b10f-8eea-498a-83f3-7df8780a8f68','8a74fa52-ab11-414a-92e2-5908d72f405a','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL),('119ec191-89dc-492c-a713-fb45f5364cbb','null','99fe50cc-cadf-403f-a959-f481234a167c','2f95d643-f250-422a-9dcc-1b3c3f732525','1.0',NULL,'Y',NULL,'fe','fe','fe',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL),('11e735ff-de23-4a31-8e8c-c8af0cc37ed9','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('11e7e845-7975-4e03-9eb1-b61c8a37f361','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('12375bce-022c-4842-9321-dfedcf42a359','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('12b65d89-eaf3-4353-9810-d9d0848539e0','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('130faa79-9b52-456c-b21c-ad45c8bb9db4','null','18f47678-e346-4149-96fb-ebe50cda4f04','63cd6a88-45fc-4da0-b118-91641b9a2a9c','1.0',NULL,NULL,NULL,'TEST_server','TEST_server','TEST_server',NULL,NULL,NULL,NULL,NULL,NULL),('134626fe-118d-426a-82d3-fb0619fbc475','null','74cb4bec-db68-4888-9c40-5e26776541ef','c1ce217b-343f-4d43-a7b3-95ac392aced0','1.0',NULL,NULL,NULL,'cm','cm','cm',NULL,NULL,NULL,NULL,NULL,NULL),('13e3d5d9-dcf2-4a8d-bb66-5a2ea61f79ba','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('142e0921-694a-473e-b5b6-b974a4b5b0d2','null','39fca8db-3cde-4c23-b61a-508c4d0641fd','23fd690c-ceac-4847-b61d-a4621ea834ad','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('14fdd90f-1dfc-4227-9c88-28e1ed111b34','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('153c72a6-3ad3-410e-b0e9-b2b6a4ffa66f','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('156f559f-0e61-4940-a0d4-d45639833b9d','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('157fccbd-2462-4370-bbb4-786c9b2e0815','null','3ca34c00-47ad-407b-8b31-d209843f7a07','a6a47256-5dad-44bb-afd3-a3dcb58b6493','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('15a549ee-36fa-4775-9d22-e12cafb1cc22','null','936ae33b-9cbc-429f-8517-6c540f884fef','19236636-177c-4ae5-b8bb-fcd5a29fefa5','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL),('16412ab7-109f-4c1f-beec-8a447255290d','null','f596ba90-dab9-4be9-8002-e8ecd3906d5f','ab087889-fb19-4973-bb9e-2fd1c25be0b1','1.0',NULL,NULL,NULL,'cognos','cognos','cognos',NULL,NULL,NULL,NULL,NULL,NULL),('1669c0c1-40ec-48dd-825e-ec50916968f0','null','2bad24a8-c657-4b83-9418-86f2384b9b8e','dac6007d-c20b-46ed-8d7d-fa8fab319e4e','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL),('168fe2e1-4cd2-4d4a-b647-2045d10b878b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('16b581a8-30b8-4cf2-a199-70e0b1311c18','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('16b9c577-9176-4df4-8e74-39fce3c4ae92','null','a334ea62-22d3-4b33-8cc0-c84b77344a30','8e01babb-d2c8-4e4d-bd63-e139c3549599','1.0',NULL,'Y',NULL,'ldap','ldap','ldap',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL),('16e20667-0700-4aa2-882d-cebdbe650ef1','null','5a315346-8d3e-4a2a-b4ff-a466fe54366e','d1c62b46-7a23-49aa-81c1-574694a4f33e','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('16f679a4-35c3-4485-9ede-4042dfe1c201','null','0cb480f6-dfbd-4af2-84b0-52b212694070','ec33342f-14ce-45b6-96d2-ac4403ade6f9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('17bd986c-d4ac-42dd-9618-0073427967a1','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('17e57524-24b7-4e8e-8425-3ebe49a04ca8','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('18981d0b-5d2c-4021-b7d3-a81f8beaa830','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('18ca2316-4d64-4295-8797-cc7599c0be17','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('19f675fc-c648-4a7f-94d9-f24fcb47bdc9','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('1a4909ab-73ee-4088-8cf6-45a99d076991','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('1b8c9fc6-be3c-4570-81da-97e76a7bafbb','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('1bf49c1e-80a7-4039-877b-79da95053258','null','473fb54b-ed67-4725-b7e3-674e96c55649','37f1531b-a288-4c49-8c02-3ff17212c89e','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('1c0632cf-4a76-4b17-9194-b294dc1ed460','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('1dd16655-f74c-4484-ada0-656484588424','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('1ddb4d75-211c-418e-a50b-cd7242ecaa19','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('1dfcaa44-2b6f-407c-aa6f-89d12c850a13','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('1e262dce-063f-464a-87d6-f7d82910a1c7','null','5818d233-caf4-4825-a7bb-144bbd731329','b8c28cad-e97a-4ee8-bc64-119b373cf98f','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('1e3d921e-1df6-4bfa-9a94-939586fc9843','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('1f57716e-b0a0-4e25-bf81-7b8c9c1a2593','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('1fc481ad-15cc-4bff-8e32-d4c59bd4e2e6','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','7f26a2f8-3e6f-463d-8d7d-2a8fc36b2935','11.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('1fdb9130-1cf4-4c50-b72c-3379e4cf0efe','null','bfc3b33b-6bac-49ef-8d48-f732937bb75c','3d9006dc-21b9-4ce8-924c-053757611565','1.0',NULL,'Y',NULL,'msrp_msc_a','msrp_msc_a','msrp_msc_a',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL),('2','yaml','inv-uuid','fe6985cd-ea33-3346-ac12-ab1214812345','version','policy','Y',NULL,'naming-code-1','vm-type-1','vm-type-tag-1',NULL,NULL,NULL,NULL,NULL,NULL),('20111295-e578-4039-9adb-5a8443a8a86c','null','8a8a0fb6-8a01-492c-b131-a6894f41cc74','f57ee0f6-6f98-4ec9-8b04-b03fe0bf6f21','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL),('202e7744-8c3c-4915-b654-15488c602bd9','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('20449785-a2f2-4c89-858f-b22a27835136','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('20b7262a-15c4-4644-8ebe-7921d6c18123','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('20bd05dc-f26b-49c7-8738-f4109b1177d4','null','1b9d7f98-60f9-476a-bd30-dc200fa89f93','0318d0e9-d938-4c4a-9157-848e5564f717','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('2153c384-b814-4630-8756-e1477228dcb4','null','779329c0-9056-4e55-a2bc-4512268f462e','cd30fe8f-6a81-4b02-89c9-38f463a58e3d','1.0',NULL,NULL,NULL,'fe','fe','fe',NULL,NULL,NULL,NULL,NULL,NULL),('2262746d-fac4-490f-8866-a540a6058cbf','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('2296b1d8-a70c-479e-b8b8-b8a7de9ef44b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('22d1c351-6d11-4184-81ac-af81d4de101c','null','2b60f774-37ee-4121-b28a-8883b20a0fb8','f028b735-c52b-42a7-ad34-bc51d14037ad','1.0',NULL,NULL,NULL,'d2ice','d2ice','d2ice',NULL,NULL,NULL,NULL,NULL,NULL),('23b0fda7-3008-41df-a3c0-b25dd54a3f77','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('240d4bc3-8350-4882-abc6-efa6d477fbff','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('244632dd-0eaf-481e-ac16-3c6952434b7b','null','af6d9190-974e-4227-86df-ffd517887f61','f69d1c42-f423-4e8d-90c8-afee2f435651','1.0',NULL,NULL,NULL,'TEST_server','TEST_server','TEST_server',NULL,NULL,NULL,NULL,NULL,NULL),('2461f70b-edaa-487d-8bab-1646c4f24515','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('256c73d2-1aaf-49fb-82a9-c5236f139e9c','null','e2a1695a-4738-45a1-95fb-6b9876d72989','64eb97fe-401b-44b1-94c6-890e017ba2f9','1.0',NULL,'Y',NULL,'app','app','app','USP_IECF-APP_30.3.3-mcas4.4.6.qcow2','nd.c12r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL),('25d55f9e-a84c-49d7-89cf-7a8c8eea8bae','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('260143db-a9ff-4415-bfb0-c35a7b7063af','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('262cbb0f-c6d4-4cf0-9281-1f53c8ffdbc3','null','4f452541-6af0-42b1-b297-c8f308475a56','dc573479-521a-4ad5-8b6f-8c13b87fc091','1.0',NULL,NULL,NULL,NULL,'vdbe_node','vdbe_node',NULL,NULL,NULL,NULL,NULL,NULL),('269a1dc1-96f2-4b0b-a8d6-0b322cd1f7b0','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('26c479ff-a252-4510-950c-e8ec996e4f0c','null','16646ff5-a6e1-4ffe-b865-0b60d651a858','823ab43d-b194-43f8-8b02-2146f4b6092e','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('27bdc15a-5ed4-4529-97ee-0c1960e5528c','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('27f4e949-3263-45d3-a592-20eb8492556c','null','8e15b51a-5e4d-48bb-8c09-d7a8949ca333','89678cef-a1b3-4844-beba-4b2c4a34e132','1.0',NULL,NULL,NULL,'qloader','qloader','qloader',NULL,NULL,NULL,NULL,NULL,NULL),('27fde274-45f9-499d-9d7e-7a9196c680b2','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('281f4841-4a67-40a8-ba1d-c1971f82ffb7','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('284c3ef2-99b1-45c8-a5f7-14e33ee08676','null','a8f2f314-d7a8-41f3-9752-a6b22fb15a57','e49cf9e1-a63a-4f9d-9825-06c2661bd33c','1.0',NULL,NULL,NULL,'pd','pd','pd',NULL,NULL,NULL,NULL,NULL,NULL),('28ed6793-760d-4b33-bf48-367adcbe26fa','null','51eec557-e371-4af9-b6ab-d09e7ca5d904','13cf44eb-7dae-48e5-bbee-e8b3bf26e9ef','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL),('299426a1-ece5-4fbe-b449-2cfaa1788c98','null','fd2c7c18-aa25-43c6-940d-f496d8e0d3d8','be447d18-0340-4f9c-937f-d742dc8b961e','1.0',NULL,NULL,NULL,'pd_server','pd_server','pd_server',NULL,NULL,NULL,NULL,NULL,NULL),('29f53689-0d3d-431b-99cc-57fc002f5baf','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('2a811181-e613-4ec8-95d2-893d4007cbb9','null','1f3512c6-94f4-4609-905e-267e95addf83','4696c1b5-3781-4413-b3b0-14082a51da0b','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL),('2b480094-9d68-4a65-966d-af1d89349143','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('2ba8635a-b069-4787-910a-9b57043244ab','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('2c5c862d-8e31-4559-bf66-4a396e847b2b','null','4363ec32-ac12-46b5-a681-da39c9b937ab','071040aa-79e1-4451-b0f5-582e8e59efda','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('2dce2d53-9cd0-40c8-87c7-4318165c4016','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('2deb1937-f627-42ea-97d7-ea6df8f525c1','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('2e708833-1f3d-4653-a0bc-5328b73bbbf6','null','0cb480f6-dfbd-4af2-84b0-52b212694070','ec33342f-14ce-45b6-96d2-ac4403ade6f9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('2ea04d4a-84ce-4641-a879-544477584f72','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('2ea978ac-2761-424b-af1f-c0707ccdbfb1','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('2f381c15-0fe9-4c88-99b7-5e2f165a38db','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('2f6e792a-63b3-45a4-b9ae-cc38b4301bb2','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('2fc889a4-d5a0-46b9-a502-6411db0c4a1c','null','f2c4a5c4-d809-4d19-9c02-308b34e89794','65d44361-202b-4aeb-bf5d-ba318fc1f34d','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('30145f1d-140a-452b-95c9-0530a5ece13d','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('3018cfbc-fa08-4dbb-b2a1-195267d79b1e','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('303059e0-a0b5-463d-8e96-5c85ff0cfc46','null','686d2704-0892-41aa-8b79-b7360fe6903e','e4ac3c72-2437-48fd-907b-6418b691f798','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('30c35db4-9682-4f55-92d4-142079dbc5a1','null','10421357-a2b3-4a7a-b82d-125b2805fa5a','56324cee-8dfd-48f3-aae8-3101be93cdac','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL),('30c7d426-fd01-4ab1-9a87-3c53bcd23d88','null','05814c22-d7bb-4d14-93ba-d2079f2666e7','84bb300f-48cd-461d-82a8-f24b0e54cb3f','1.0',NULL,NULL,NULL,'iox','iox','iox',NULL,NULL,NULL,NULL,NULL,NULL),('312a26bc-b721-4ed5-a402-be0e502c675b','null','8d5acbcc-77b0-43ee-9775-8f4cd8fdf949','b50b4639-baf7-4472-9acc-fb576bc007e1','1.0',NULL,'Y',NULL,'xsa','xsa','xsa',NULL,'nd.c4r8d0',NULL,'{ecomp_generated_naming=true}',0,NULL),('31608b19-4efc-4620-a248-61147f9ec8a9','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('32365da5-1a59-424d-8397-4fbce1bae4fa','null','dd03d850-e91b-4ed0-bde4-0e721e76d013','1ee5d912-91db-46cc-9735-0b14d9463f7f','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('32b1b5a1-e05d-447d-a5ff-9c247bfdbc72','null','d94bdc77-144f-4b50-a351-aea5cbc9de4f','d81064dc-bf74-44c5-afcc-e17916a915d1','1.0',NULL,NULL,NULL,'cm','cm','cm',NULL,NULL,NULL,NULL,NULL,NULL),('3303c8ea-2e16-4a3f-96b7-fa98132560e6','null','196c64ee-ec75-445f-990e-08c6c9635298','16da0427-b36f-40ea-bb63-a68bf9a84272','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL),('332fff76-b67a-4970-82e9-4e6db5fc0e36','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('334add61-2118-4e75-8db3-5674849b5320','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('33d693e1-61cc-4517-9eec-56fb0572c93f','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('348e928a-e3d1-4faa-ac35-a1e2d6768fee','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('356e5394-90ca-4dfc-8ade-529077b727e4','null','55372be2-6074-4793-92b1-e0fe1afb08b7','d03e16a8-becc-435b-aacd-829f6e3150b3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('35726559-7135-405b-9691-47ed50bcbc19','null','55ef56c6-5f0b-420e-a787-64944a746d89','99e3482a-d42a-4ffe-aeb7-9e9ada03c8e7','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('358b84ab-f1af-4c42-8c81-c92801eff167','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('36102a1b-ce2c-46b9-967f-30318db23a32','null','0d54acdb-fefc-4d60-a429-ef351dc2a1f5','a10ddd8c-4366-4394-8854-6bf7b0d0014b','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL),('3665d859-180a-4314-beac-8f1877f2697e','null','9645e0f8-e537-4f9d-b137-8d16251f7138','4ff38825-5106-43de-971b-90b46d2e4e26','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('36eea4ac-8f88-4323-942d-7446fbf9639a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('372ee369-1d49-4aa2-acc0-1ef806a4fc03','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('376d659d-528d-41f7-be51-39ef57834ec8','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('3794aacd-6535-41c8-af1c-02e300ccf50b','null','9c9a8369-9e89-431b-9e73-9d483b2cf7e4','8d2e734d-882e-4998-9c8b-413e2b9d1241','0.1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('3827c05b-6c06-42c8-8725-b95353f97d9d','null','27c16c65-2ecb-4c7f-bda2-96aeb31e5ae0','8e7dcc7d-9aab-4509-b3c9-81ef4cdb2ea5','1.0',NULL,'Y',NULL,'iox','iox','iox','USP_IECF-IO_30.3.3-mcas4.4.6.qcow2','nd.c4r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL),('3850fdff-11a8-40b8-8bc5-f589c42a6702','null','60b620de-1ff3-46d3-9ae9-672b47ef0b27','75b70257-ee09-4481-965c-f3397849623c','1.0',NULL,'Y',NULL,'vmxvre','vmxvre','vmxvre',NULL,'ns.c1r16d32.v5',NULL,'{ecomp_generated_naming=true}',0,NULL),('38f47dc0-dc33-4375-98a9-0a9d37c9ad4c','null','ce213aac-bfac-462f-804e-a33091598aad','d65d9977-6053-4fba-b75f-a2fa315cd9b8','1.0',NULL,'Y',NULL,'mmn','mmn','mmn',NULL,'{}',NULL,'{ecomp_generated_naming=true}',0,NULL),('3982125d-dfc4-487f-862f-66e1e7f78d17','null','b3bf2d8e-a28c-43a8-9d68-a08a39502faf','38b82ce2-7b45-4f4b-bb2c-bdaec51fc8a5','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('3a05ede5-360a-4f5a-8cad-072560dd4406','null','1451a853-2fc7-4858-b1b4-72fe23395a6b','4a920796-cb97-4bd4-8724-c2e6155a86e4','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL),('3aba87d2-cc84-44fd-bc43-190d750f1e69','null','55372be2-6074-4793-92b1-e0fe1afb08b7','d03e16a8-becc-435b-aacd-829f6e3150b3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('3b1b59a6-d272-4ece-9dfb-ca87f0f793cc','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('3bb96b94-bc38-47ef-8202-f4c1f4b27beb','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('3bca6d26-d1c1-4ec1-9bb0-92ac6ec98dc0','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','7f26a2f8-3e6f-463d-8d7d-2a8fc36b2935','11.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('3c0ebca7-bfe3-4a8e-8167-93a7878c9bef','null','07e7ca7e-fca2-4131-a73e-51884ac6f4a6','6618af0c-d1e5-4813-ba39-228f2ad99128','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL),('3cdfd81c-3bb5-424a-af61-ae38a0131317','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('3ce98db0-0653-4d31-b065-a61a1959ac5f','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('3ce99b7c-9515-48fe-bb98-62f22f2fb005','null','5ec38b95-96cd-4cb1-b90a-484f4b13bd1a','c1374c40-adeb-4371-9d71-209c0315aef8','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('3d1957d7-1eb4-4df6-8469-74bccd0bd11e','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('3d370a1a-2529-4c8b-be72-e4bf088c8e8a','null','e6645581-0cc6-4e7d-a4dc-42124c8e364c','4b91bd36-feea-4a40-8304-609285032caa','1.0',NULL,NULL,NULL,'rdn','rdn','rdn',NULL,NULL,NULL,NULL,NULL,NULL),('3d8d3b5d-9c34-415b-8c74-7f0a9c7bda51','null','ced31a1e-b4ad-4fbf-aefc-1a3701f16bc4','b302fc76-1708-4ef9-a217-231620ab4154','1.0',NULL,NULL,NULL,'nems_fe','nems_fe','nems_fe',NULL,NULL,NULL,NULL,NULL,NULL),('3e3471fb-6ca1-49a2-abe6-40e7a864f767','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('3e37923b-b8cb-498c-938f-a19449908f52','null','bb8ff02b-6404-4e81-96e7-33999ed0fff3','62c39097-93b8-4d9b-9fa2-6c3e0d36d729','1.0',NULL,NULL,NULL,'pd','pd','pd',NULL,NULL,NULL,NULL,NULL,NULL),('3f777214-6a28-459c-962d-8ae02f45da94','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('3fe28b6e-6631-463e-8044-5062f2ab133c','null','39b2008a-1fd8-4af5-90cd-5bf098bd1123','ad7c0ec9-fddf-42d6-8c21-999a83ea0eb5','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('40183eae-faec-4e45-bfd2-c16565cbc034','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('40821124-8d95-4f55-91e2-608e72ffe6d6','null','21d87e48-2aa9-4f8d-9daf-268b31363a31','35a3e997-8208-4040-a4b3-0a6d39e198cd','1.0',NULL,NULL,NULL,'mmsc','mmsc','mmsc',NULL,NULL,NULL,NULL,NULL,NULL),('40a486a0-8420-4d2e-b2b9-fdd5d757f60c','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('41185191-dbed-4382-a9ae-f0e847fec9ff','null','83429bf9-49f1-4187-a5ad-afc329a84e76','ce422e74-7e58-4464-8a54-61e21f3ca7e5','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('41d27492-bfe6-4588-8f7f-d280636b667e','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('41e0211b-d990-4d09-845b-b98c9bed3f07','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('41fb28aa-44f9-48ee-9bb2-d4db999ea4b6','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('4209ff94-bb09-4a7e-a8cd-ef7691d20faa','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('4258c5c9-19f8-4942-a820-db7a646d9310','null','c5eaa410-5dcb-481e-88a4-44434fc9c58c','c3b635e7-4bcb-4537-b1c2-edc9ca45ac3b','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('428b0e01-a072-4d21-924e-2f692fec7277','null','7a1a7790-bbcd-4aa3-9c84-345ca1c4b52b','ffcfccb9-8813-4d8a-9f29-a6cb4dd4e754','1.0',NULL,'Y',NULL,'plt','plt','plt','USP_IECF-PILOT_30.3.3-mcas4.4.6.qcow2','nd.c2r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL),('42ab4b8a-5046-4b5b-bfff-8503dc43f257','null','1dde5066-ec47-470d-ac78-f741f61885ec','0ec3151a-dab9-48ae-89e8-f1a88b73fbf6','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL),('431f242c-8b94-4f4e-873b-6546f1ed60a1','null','f2d2ffde-5ed8-44ae-9471-f8bc0a51a89f','0b882f5f-b364-4603-85b5-e8cc94a11fe0','1.0',NULL,NULL,NULL,'be','be','be',NULL,NULL,NULL,NULL,NULL,NULL),('437d3bd7-2fff-4642-8a87-5396aa90128b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('449e1e81-848e-45f7-a1f0-14aa9bde238b','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('457d2c5f-1899-43b0-85b3-caf5866a6065','null','eaba5eb8-c480-47dc-b046-9ac6fc886077','aa524dcd-f38a-4f07-8288-af7cb10569d7','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL),('466c9e3c-6a64-4ae8-8900-07dd5f2f1473','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('4682caca-c19b-4f1e-a8c2-b68ac4fc9c5f','null','5a315346-8d3e-4a2a-b4ff-a466fe54366e','d1c62b46-7a23-49aa-81c1-574694a4f33e','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('46e79c61-9476-43b3-b1ee-7b39c8569531','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('46e86198-aec6-4036-b38e-c1cbd3e7e349','null','223edb5e-cdb3-4a32-97d0-46bb57c99ad7','bf3c23e2-0ee4-4e4a-a7c5-e0e6b6625706','1.0',NULL,NULL,NULL,'pps','pps','pps',NULL,NULL,NULL,NULL,NULL,NULL),('4858ced6-3fe9-4803-91ee-a10a69239496','null','16ecac80-118e-4826-bc18-9bd527126b7e','b3e8dc25-ba0e-4ba6-b301-b66a05043040','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('48e45c5d-e7b0-4dfb-9d40-40d122ad1c44','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('49036c1a-217e-405d-bf5e-08c9a46d57d7','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('49414e75-93e9-4f8f-bc79-49b6655bd4e5','null','230bf8f6-f204-450a-af6d-9cc65fea4f76','7c19492b-dc31-4319-8213-7b9ff791d314','1.0',NULL,NULL,NULL,'rdn','rdn','rdn',NULL,NULL,NULL,NULL,NULL,NULL),('4aa42ecd-6cb4-4759-8fd3-6c2fae4a2034','null','179a86ce-e6b0-463c-bd4b-03595729976a','f18ee363-2b6f-4408-8a93-1dd8ab5ffb42','1.0','nfc.naming.policy.robin',NULL,NULL,'nfc.naming.code.robin','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL),('4b922450-c9a6-4533-9d24-92f1b1f84160','null','80ebc47e-1f35-4ab8-a36d-2328a4a6985b','d6a00b1f-e12c-4145-9842-0ef6fc4fd69a','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('4c0e88fe-b367-46c2-ad07-fe7a8cde6f30','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('4c6c958d-b1b4-4aef-a768-0618a5650527','null','583301de-2a2e-40cf-98bb-3018be595871','26eaff4c-c6e0-41ee-b02e-27cc1208ed73','1.0',NULL,NULL,NULL,'configurationrepository','configurationrepository','configurationrepository',NULL,NULL,NULL,NULL,NULL,NULL),('4cedb213-a6ed-443e-8f8e-67cef4c87e47','null','58ce4658-3fcb-4b6d-a04e-43655908f50c','732be459-eaa5-4263-923e-21d46599740b','1.0',NULL,'Y',NULL,'ssc_b','ssc_b','ssc_b',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL),('4e09e0f7-6b42-41f5-b197-2ecfd4877987','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('4e7f65c4-94aa-4826-b401-c7f75d7a5e97','null','3bcaeab7-d987-4faa-abb6-0ca59f1ac661','4af66211-80b1-44b5-b68c-212c4921295f','1.0',NULL,NULL,NULL,'iox','iox','iox',NULL,NULL,NULL,NULL,NULL,NULL),('4eb18412-12f7-480f-b232-5a4c4cb2fade','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('4f2f5f08-8a0b-4828-be27-5ff1a641ed6a','null','86f39736-fe98-410c-b0a1-12baf7a64626','369abd2c-c79a-4ee3-9152-a158a8e160a9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('4fa2c6e8-bd95-4440-af00-390e8fffebc5','null','85bb6bc2-cd25-4bb2-98a4-28cc47d270cb','73717171-1684-4aea-acfd-7abc8533fec3','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('50432d50-169b-4592-93c7-7df340829872','null','88404161-33c8-4225-9b11-934b2686b005','f3264aab-8f59-4942-a118-2663e445e055','1.0',NULL,'Y','Dev2DevNfcFunction','pd_server','pd_server','pd_server',NULL,NULL,'Dev2DevHighAvailability','{ecomp_generated_naming=true}',1,10),('5051c268-7bb5-4d56-895f-8f829087025a','null','b95401c8-5c5e-48b7-9839-d581cfca5935','4c671c7b-3ce5-48d6-b7ca-4047c3ebb2ef','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('50f47cdf-1c8b-4843-b331-94927f239a6d','null','9c283f37-5516-427f-b230-37fc356852b6','95a81e90-cd52-4adb-a31a-957691fb11dc','1.0',NULL,NULL,NULL,'smp','smp','smp',NULL,NULL,NULL,NULL,NULL,NULL),('5165ea8b-7460-4879-b6da-5a9bfc4380b8','null','be545d42-bfa1-45c3-8c74-2febed777c45','4c5e5e35-19a6-4551-935e-44c6a4468b1e','1.0',NULL,'Y',NULL,'vmxvpfe','vmxvpfe','vmxvpfe',NULL,'ns.c20r24d25pin.v5',NULL,'{ecomp_generated_naming=true}',0,NULL),('518db694-1c7b-458c-abbe-b9676fdd68e0','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('51b414f7-8f44-42be-94bd-8e83c7bebb6e','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('51d4e18b-ee2b-4f40-8812-4904d310e500','null','4ddeea35-c041-472a-853b-40b8974dd9ca','140b8590-3d21-474c-9cd2-72d71eae93ac','1.0',NULL,'Y',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL),('521d3ae4-ad2a-4479-8b47-2b8e2f265a8b','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('527637d4-3f1b-4453-8a73-63be37d3ff3f','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('542331c9-6001-4760-a7d6-c2946a68e5aa','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('54325dd2-d646-4f36-bb61-c1657771bbef','null','51a669a5-4c83-4231-8aa0-9939acf835ef','3b97c83c-ee8b-4eb7-9910-428b7a58d9cb','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('5453e348-8c2a-4ae1-9c78-13861de6ae4f','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('54b6166f-1926-4542-899c-fb4aa0a3254b','null','8a33e6d3-ba02-4004-a057-d8deefc6a217','1941965b-d36f-493c-90d9-cfe1085ac402','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL),('54d33de8-a3a3-48d4-9616-7976d894162a','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('5543defe-8d08-4cde-badb-fc68eade5100','null','e113d30a-8a62-492a-837f-735a4eb88db9','eb45f98e-31d1-4c8b-afca-7412defa9056','1.0',NULL,NULL,NULL,'pd','pd','pd',NULL,NULL,NULL,NULL,NULL,NULL),('56079609-0b08-4307-8f61-2bb1545aed00','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('565090e4-6b5f-4690-8743-19cb7716fa8c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('565a8a1c-4ccc-49cb-a3dc-5f8f8ce72c51','null','6b67203e-d718-4b4d-8fa5-3308b9d6d909','07ec6c1d-5336-403a-a41c-950cb68956f5','1.0',NULL,NULL,NULL,'prx','prx','prx',NULL,NULL,NULL,NULL,NULL,NULL),('56f74777-a946-46d2-8ceb-c7f0d124894c','null','c5f1a3b8-fd2a-4938-8ff3-734f6049d0b1','d522e5ca-5bb6-4e51-8ca6-99b59fd789ae','1.0',NULL,NULL,NULL,'iox','iox','iox',NULL,NULL,NULL,NULL,NULL,NULL),('5790fb74-2ac3-4340-b69a-08bf3f3d126b','null','1c2ec7cc-2558-40a9-a5de-23ccca42f2ed','2717a36a-1b5e-421b-8794-65c7a92763a1','1.0',NULL,NULL,NULL,'fe','fe','fe',NULL,NULL,NULL,NULL,NULL,NULL),('57ce1650-9b4d-4a45-bee1-b4e841fadfbb','null','dec68ab1-24f5-4d83-a37b-80c716bb4c31','bf2cab5b-a968-48bd-b4bc-65914bba461d','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('582e18c1-689b-4516-9855-7fab1a489b18','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('58cf0015-fdca-4c3f-98bb-53c863716fd4','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('59330f0e-f45f-4111-bf21-a4bed5d4b30d','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('59698c21-7013-4e48-9f7c-bc6f9ea2562a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('59817abe-bbed-4aeb-a1c1-5cb60b043543','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('59b22558-fa49-4c10-af6f-a38ba93fbc5c','null','72308d7a-5d2b-43d0-ab9d-1839fae15b63','f2c093f3-2f6d-46dd-880d-2831569cdaa9','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL),('59cc25b6-e415-489e-aeab-e5edde982605','null','d1167766-829f-4022-8592-2b0edfb6069e','184c9f75-7577-4996-afbc-1ccc5419e015','1.0',NULL,NULL,NULL,'smp','smp','smp',NULL,NULL,NULL,NULL,NULL,NULL),('5a119889-9974-4a98-92d5-96a715f7c24a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('5a661196-c961-4286-9198-564347fea738','null','0d87f028-90dd-4b2d-8f76-87a4b4b55b64','d9d2dace-1ec5-496a-88f7-63dc218e1d99','1.0',NULL,NULL,NULL,'itc','itc','itc',NULL,NULL,NULL,NULL,NULL,NULL),('5a6c9ad0-e611-4ef7-92db-b40e420b1cb7','null','a181d0ff-11f8-4818-b98a-e14690db64cd','9baf379a-2c58-4788-9dcf-4a769dcd28a5','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL),('5a953500-41c9-43a1-bdab-48321b482c79','null','c117b652-dc84-43b7-b30c-12b21891f47a','95d3013e-11b2-4bdf-97ba-6e4a5a7c4227','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL),('5aefee46-a414-488f-b648-cd02afaa7b02','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('5b3263c1-71f0-4dcc-815c-9ebdfcb40a7f','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('5b453243-b3cc-4177-a218-c722216fa867','null','8cf7115b-cc5d-4143-b53b-96135982c0be','3aa0e405-eacf-4a54-b254-f95dd19a305b','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL),('5ce95a94-dbbc-4648-a7c3-deea7e7997aa','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('5d160958-74af-4327-96d6-d4bebe5e0465','null','23bfbe35-8d8e-469e-8da5-9d17dddef5a9','27daf0ce-39f6-4e3a-ae3c-d92bb253aa45','1.0',NULL,'Y',NULL,'sbc_a','sbc_a','sbc_a',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL),('5d2ec4aa-6e7f-4841-b67e-7b31a4e1858c','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('5d9f98ca-8553-4dd0-98e8-a6fe6de2ec94','null','744574d4-1102-4955-8e71-9ac4ab301bbf','08c98244-6d94-4c3a-852f-b3d05e371df1','1.0',NULL,NULL,NULL,'plt','plt','plt',NULL,NULL,NULL,NULL,NULL,NULL),('5dc18cc5-64ee-4f43-ba4d-cc24a6305425','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('5df465c0-9806-4790-8602-43ee2ffbf546','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('5e482da4-33c4-4601-bae7-d4b05436e58a','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('5e910229-fbc5-4347-910c-e293d63934f7','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('5f309a70-35f3-4b2b-9f06-71c70b39f3a2','null','cdb897e2-b3e0-4365-91d9-a603527fb52c','50148aff-51a7-4251-879d-54dd039086ae','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL),('5f859628-9f96-48a4-a2d7-a97c1148990f','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('5fd8bde5-aa4a-4e3e-a9e3-f874eddc00f0','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('5fdc1d98-154f-4d04-9d09-5fcb40b8c0e3','null','86093520-4a0a-4427-b1b7-1432a8ec0716','a8f3626b-bc8a-48fd-8c24-859943feed1c','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('6006ec20-3a36-4b3f-ab75-a1fcfd5147ea','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('605ae21e-0b6d-4cd0-93cb-393313b4bbd4','null','c7d8fb73-f7c9-4dca-8c23-ddf11c84b8cb','ea5877e8-c188-4908-bc35-225bb4d4fb6c','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('60636dd9-1339-4711-b1bd-2c7de1e7791e','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('612f98b5-39cc-4cba-8424-d889d44c68cb','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6167622f-b602-416a-9bed-c38b157726f8','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('61c7a13d-8dbf-4ed8-b00b-728f48ffa8b7','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('625434ec-f721-4a37-a8cb-e0e901de4103','null','7ff1b44a-41d3-469f-baf2-7f102d47feba','1d4f0506-bace-4fa5-b38b-3c31ae5e857c','1.0',NULL,NULL,NULL,'pd','pd','pd',NULL,NULL,NULL,NULL,NULL,NULL),('62d977c1-b230-49b3-8be1-4b5872f5e3df','null','629e5ac3-c75d-475f-8262-f53f6f761c2f','dec80f28-f12d-4ade-be99-d3ebf7635ecd','1.0',NULL,NULL,NULL,'virc_cc','virc_cc','virc_cc',NULL,NULL,NULL,NULL,NULL,NULL),('634b1226-63e1-4a84-b9a1-e68a1403efa9','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6383c740-0dc8-4937-8c0f-70d77fe2ee17','null','fd3d83d9-e375-4d27-ad44-99c84b5a5c26','eadafe4a-071c-4279-a898-d00d3dbda63d','1.0',NULL,'Y',NULL,'mts','mts','mts',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL),('63e225bc-c72e-42d0-95b4-9f9f77139c18','null','00db22fa-171a-42b1-8292-c6029717cdac','42d0b694-64d5-4846-8ee0-c7a1d1531d50','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL),('64088775-2a93-41a5-bb53-3206f9c36afd','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('64fd6f6d-aa6d-40bd-a883-5b8960e0f64d','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6522a054-632b-419c-b88d-e56a1b5236ed','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('65794907-4255-48fa-b710-86a806e23e99','null','b051c80d-d816-4c2d-a208-61410c68f6e2','81905a04-15f8-4f7a-8a24-3848cf419ee0','1.0',NULL,NULL,NULL,'iox','iox','iox',NULL,NULL,NULL,NULL,NULL,NULL),('65ade596-5f15-4115-a3a3-e214cc95a129','null','93b69c42-b5e8-44c6-a9ac-10ce60054dda','4659e19b-dec9-4ff7-a322-78ba480f1767','1.0',NULL,'Y',NULL,'ppd','ppd','ppd','NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2','nv.c8r12d100',NULL,'{ecomp_generated_naming=true}',0,NULL),('660e35c0-74cf-4c71-bc28-7bf9a769b5b9','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('661515a7-71eb-4b65-9a67-4c3fe8915404','null','d273feaf-7e39-45ab-8572-bf19f546b06b','f7001d42-6a1e-4ca6-a82c-b075f6981d93','1.0',NULL,NULL,NULL,'pd_server','pd_server','pd_server',NULL,NULL,NULL,NULL,NULL,NULL),('66518250-5925-45ac-bcf4-086bb8656b66','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('667b77ee-a50b-4889-9c7d-46d8cb934a63','null','16646ff5-a6e1-4ffe-b865-0b60d651a858','823ab43d-b194-43f8-8b02-2146f4b6092e','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6738c484-287c-4ecf-8095-0e38f0691482','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('677cf9d5-c18b-4fc5-a36c-4324dbcf3852','null','59f360ec-d2ba-4b27-aeb0-d35618afcb76','890f9c2c-828e-49e2-9c20-b2a77355149e','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL),('6784843b-6ee2-4ea9-9245-2a9400ab9288','null','c9945dc9-208e-48d3-a482-96925abe89e9','f2f35403-065e-489b-8b9a-c5c46dd76825','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('6835d254-f980-4d84-b997-f2437090fd3d','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('68386bcb-a633-4732-9777-7b997a448e5e','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('686bdd0b-788e-4744-9e7f-32869db281ce','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6873c4ae-14a8-4ecd-9c04-24e20eb2542c','null','117e6aac-885f-4ff8-891b-8e2696ce4964','1de8217a-db29-45e5-9f43-2edc6c9d85d2','1.0',NULL,'Y',NULL,'vmxvpfe','vmxvpfe','vmxvpfe',NULL,'ns.c20r16d25.v5',NULL,'{ecomp_generated_naming=true}',0,NULL),('68d5f2b0-5ad7-488e-9803-43aeeab09759','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('694b2e6d-83ba-43e2-b405-d947e94dda5e','null','c3ecc32f-38c9-4583-a513-4a8b65b21a83','dca61bcd-2102-4003-b433-9b7a9d01dd90','1.0',NULL,NULL,NULL,'pps','pps','pps',NULL,NULL,NULL,NULL,NULL,NULL),('69a32834-078e-48c3-8bd9-3125da2489b0','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('69d27369-08ed-4765-a489-968e1fafadd7','null','c91280dd-70e8-4ba6-a477-810629137b3a','f338dc0b-5575-4c38-b7e1-a9d40010de27','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('6a44b6b2-f7fb-4e2e-b8a1-e1342275b86a','null','5b7dd098-162f-4424-952e-cd0a0cd39447','87cc7625-fc88-4fb5-98c4-be288c1cc25a','1.0',NULL,NULL,NULL,'TEST_server','TEST_server','TEST_server',NULL,NULL,NULL,NULL,NULL,NULL),('6a6754c1-9f43-4cf1-92f3-044b6147ddac','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6ac5b9e8-f995-4d12-bbcf-d76ba61ae8b3','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6aee8f5d-b063-4564-813a-8b671a3c5f97','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6b1675cf-f93e-428f-80e3-5ec838c73324','null','554d02b7-0922-42f1-b0ad-1acc91f1380d','920984a2-1ac6-4e29-b566-5a10a72c51d9','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL),('6b8f77a4-c715-4a2d-92d7-d8a96bddeea8','null','55372be2-6074-4793-92b1-e0fe1afb08b7','d03e16a8-becc-435b-aacd-829f6e3150b3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6b9dff87-0c04-4a10-a918-9b627e9ae0b1','null','2972ce9f-526f-471f-aabf-df99168287c4','f2609a4e-8bc3-4659-bef6-bf77667b37ca','1.0',NULL,NULL,NULL,'fe','fe','fe',NULL,NULL,NULL,NULL,NULL,NULL),('6bbd2dc5-5272-4012-a92f-f51387e1bed4','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6c227dc7-acf3-41e3-9d0a-7aded6164c33','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6cb2be72-7210-492e-9f4c-4647b54d6613','null','b0444e96-4474-47b8-947f-65bc6d95e9e4','b7e37bdf-728a-4411-9fae-d1f789de3004','1.0',NULL,NULL,NULL,'vth','vth','vth',NULL,NULL,NULL,NULL,NULL,NULL),('6cf1a3b9-ef74-49e3-b682-34e57f79e22a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6cfdeef0-8962-4d62-83a1-b11020d72aeb','null','11aa3eb9-b80e-42d9-b2f9-378e4da35112','ef6656e8-3029-4125-8d06-747429518439','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6d810590-688b-4419-aa25-04f0127a8286','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6e5b8879-0cba-4804-b80c-85004fb8c3ef','null','cb6c8aef-d755-4d35-b1f5-c5d07aefdbd3','8005d90d-acd1-42f4-b7e5-f2c25324d3d0','1.0',NULL,NULL,NULL,'timesten','timesten','timesten',NULL,NULL,NULL,NULL,NULL,NULL),('6e5cb98b-a24e-4b1d-9504-ef472ba3b16c','null','ddb9b833-5751-4672-8b25-bcc78eb0d447','9f1aca89-2f9a-4043-9118-fcff91c4593d','1.0',NULL,NULL,NULL,'ppd','ppd','ppd',NULL,NULL,NULL,NULL,NULL,NULL),('6f39ab69-27f8-4def-b53d-906d272130b3','null','5d5282b2-1126-4a8a-aa21-f5b949d07ca0','89eacbb2-ccaf-4120-b1d3-0291917bbf71','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('6f644aed-ee1d-4a4d-b2ed-a9c09a30aa7b','null','e22db314-cbc4-4855-9e9c-9fb503a376bb','de35db61-91fd-46b7-b123-02f528e055fc','1.0',NULL,NULL,NULL,'be','be','be',NULL,NULL,NULL,NULL,NULL,NULL),('6fc2dc9a-1667-4035-b472-9fcbb22e42b2','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('7040e1ad-9d82-42ac-a024-9ec2a454d8a7','null','176d464b-2c2a-4cd0-9c2c-9421c6636631','02302049-3007-4fda-9e34-1302757b65a0','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL),('7047a19f-6e58-420e-b83a-fc5c5ca371a6','null','5de3f65a-9a57-463b-8f57-42307d9b27f8','900b6e33-ce13-46e8-b9e9-56d21e4a4668','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('70575d9f-6067-447f-81f5-ea0f08ffdb1e','null','b53cb5a0-ed82-440d-b202-d827469c1b5b','15082ced-72ff-4a76-9b75-20f103e50ca5','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('7098128e-a6d9-4225-90ab-beac14b82ac5','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('70e9a7f0-ce7f-446d-9606-2396e83503f2','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('71c83b70-fd19-4961-910d-0715abe8cd7c','null','5a315346-8d3e-4a2a-b4ff-a466fe54366e','d1c62b46-7a23-49aa-81c1-574694a4f33e','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('722602f7-f147-41fe-b72b-511af9552933','null','d5697262-b1cf-4b31-ac95-94fb30481b33','978dd3f1-84f1-458f-963a-52be9d81a3a8','1.0',NULL,NULL,NULL,'prx','prx','prx',NULL,NULL,NULL,NULL,NULL,NULL),('722b2624-586a-421f-9f11-97e442dd5806','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('725798c9-f501-4a90-9bc9-baba93016b34','null','ec1d2810-17b8-43a6-bf78-dacc26dd89a0','c726cf5a-f50b-42d8-89a6-3c55a21c1109','1.0',NULL,NULL,NULL,'par','par','par',NULL,NULL,NULL,NULL,NULL,NULL),('726dd182-74f2-47a0-bfcd-fb1cea8d089f','null','faf71359-153f-4159-bc4e-290a85807d00','ade4b591-aabd-415a-84bb-e986d6ae635d','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL),('72c1a9fc-804d-4316-b6b3-bcec6e1cdcdd','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('730589ed-f654-4727-805f-d845fae5ac9a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('73909ae0-5388-4994-9eb1-47b334f23d4a','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('73ea2af6-ada6-44a5-b9dd-921a65c3e3e0','null','7083fedb-430a-41bf-bb94-0eaf8b33fb30','39ff5503-11dd-4c6d-bf5d-1e1621cbf563','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL),('740d504a-2e21-430a-8354-11304c0cb493','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('74c7e2a4-6625-4fc8-8a60-02c0e72e0955','null','1636f12d-c286-43d3-9473-b9723d5795e8','0531806f-4fed-4888-8f9e-bee67ab71ed0','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL),('74e26dce-9df9-41bd-a224-37ee65fb2884','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('74efb08c-7d76-4955-abe2-131f26c7c35b','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('75019b6a-8890-4a7d-87ec-35b64d18a34c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('75192ff4-b321-4ac2-a3d6-d734fc8a7d56','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('752db263-360a-481f-8613-5205e3755d17','null','9793e8ae-82fb-4225-8cc8-ad0fa8d0532d','03996460-8c0d-42f0-abd9-96f2fb388fb2','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('754b4842-29a4-4559-9695-21269097b1ae','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('75855b5d-2b59-4763-905d-da64b66f4867','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('75999c1c-01ee-471c-905a-e4b895b01026','null','4c65d534-a3d8-4e43-97b8-9220a27ef727','54e5eda7-baba-485d-9979-1cff464f4881','1.0',NULL,'Y',NULL,'vmxvre','vmxvre','vmxvre',NULL,'ns.c1r16d32.v5',NULL,'{ecomp_generated_naming=true}',0,NULL),('76040bc3-a498-468f-978f-6d4e7b9281ee','null','29a93f90-907b-48ec-a34c-b9aa916f748a','fa90882f-9b77-49fd-8f59-46d15df379a2','1.0',NULL,NULL,NULL,'rdn','rdn','rdn',NULL,NULL,NULL,NULL,NULL,NULL),('767a2fb6-d382-4aac-bfac-b47c69cf8409','null','01071060-a604-4bd6-a228-2b3aebab1eb2','9b00b55f-c016-438f-9195-00a2d000a0df','1.0',NULL,NULL,NULL,'scheduledservices','scheduledservices','scheduledservices',NULL,NULL,NULL,NULL,NULL,NULL),('76b1cb79-11b3-4ade-867a-287368c711b0','null','c8935a10-d331-4cc3-8a16-3193dd459224','189760d4-5b9e-4287-b306-d27fc9cd083f','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('7764f563-3f27-42ac-8cdb-481f64969cbe','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('7775a765-9048-446f-b876-e0bdf8c4989c','null','81d23e7f-8cc6-49f1-b736-96eccad8103a','3b4e6f89-966e-4cb0-85ef-e8eee34b37dc','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('77812b13-4db0-4d86-abf6-a53f04bcdcfc','null','1c59c549-70fe-4a9d-ab0d-b65f29d6065c','dccf95fa-281b-43f9-a0ed-cc4bef6df649','1.0',NULL,'Y',NULL,'sbc_b','sbc_b','sbc_b',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL),('7876ab13-7ce1-4f13-b63a-366e7499c74e','null','76f85d22-025c-4d9e-89b1-0711f5cb09c5','abf7707d-0ed7-492f-8edf-436cd01f10cd','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('79aa3ba0-0a65-4580-a6f7-e6670578458d','null','4df3b2bc-23aa-4f2e-8a66-19b86f4d248b','057c1236-b166-4ac8-8067-c18901bf4e0c','1.0',NULL,NULL,NULL,'plt','plt','plt',NULL,NULL,NULL,NULL,NULL,NULL),('79b7c82d-4cf7-489b-a75c-0d55d1f2cc7b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('79ce1cd6-854f-4c93-b3b0-1d0372d4a03c','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('7a105b19-b89f-42e5-be0c-cf27b891f97f','null','a8c5d8d9-7115-44f5-a3a2-6482bbbc8906','2a228b84-405d-4c59-bb1c-351893a473b6','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('7b276e5c-e8fe-4057-9422-91eb3def50b3','null','10421357-a2b3-4a7a-b82d-125b2805fa5a','56324cee-8dfd-48f3-aae8-3101be93cdac','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL),('7d1c65c2-059e-4883-b28f-799f5dae4329','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('7d90d5f1-df81-4a1f-b6d0-ec1237ec0ecc','null','559e09d4-8cd8-477e-ade1-56d12cc7ec89','16e20c1a-fc9a-48b8-afa5-bfa59dbacc05','1.0',NULL,NULL,NULL,'vvig','vvig','vvig',NULL,NULL,NULL,NULL,NULL,NULL),('7dd7e5c9-4337-4ce0-8fb2-ff26f0a3ca52','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('7e59838f-0274-458f-a34f-9b91d79c3e1c','null','671e38f2-c1f1-4112-bcb2-e2300efc794d','c1075235-d9c2-4a8b-8215-7e3ccb168ac5','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL),('7e943e8a-c651-47be-9e27-630b9efa5940','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('7eff938c-6dd7-4bb5-a39c-b7935329ee2d','null','0cb480f6-dfbd-4af2-84b0-52b212694070','ec33342f-14ce-45b6-96d2-ac4403ade6f9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('80322740-def3-4b97-bc68-74735d1ac282','null','6eb9f47d-23c5-4f36-a5be-49be4c168623','6be1b41b-c7b5-4d18-bdbb-ab1784f2392c','1.0',NULL,'Y',NULL,'vmxvpfe','vmxvpfe','vmxvpfe',NULL,'ns.c20r16d25.v5',NULL,'{ecomp_generated_naming=true}',0,NULL),('80a6176c-fcb5-42ca-a738-3fa40ea2660a','null','1bcebed2-1f21-4264-b163-931211b1bf26','883a1cb8-43ca-4a52-b6b3-225255514bcb','1.0',NULL,NULL,NULL,'cognoscgw','cognoscgw','cognoscgw',NULL,NULL,NULL,NULL,NULL,NULL),('80ca15af-4b70-4ee7-be37-0b1de73051a1','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('811e1edf-aa75-4d07-b98d-f47ccfa3ae35','null','078b52a2-53d1-4d1b-8465-05beb27dd991','cd8a79b8-4384-4018-b8f2-0be19981c206','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL),('8127a732-3cba-4644-b86f-98327b512373','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('81d694d8-7253-400b-8310-a2d6489a523e','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('81f47a35-0ed3-4df8-ae79-70dffcda63c3','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('8297192b-fb85-4459-aa83-15f19d3140b1','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('829fee2b-5317-4793-8c4f-2ac8de1b73c3','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('83c21766-f7b0-4c8c-a3e7-143c5469019e','null','10421357-a2b3-4a7a-b82d-125b2805fa5a','56324cee-8dfd-48f3-aae8-3101be93cdac','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL),('83ce6e22-8cec-477c-b750-a37a14ae5450','null','ca5310cc-a0df-4f90-9775-d0a8741a1587','a417848b-ff41-4399-9d70-cc64a27fa576','1.0',NULL,'Y',NULL,'mon','mon','mon',NULL,'{}',NULL,'{ecomp_generated_naming=true}',0,NULL),('8439b3d0-35bc-48ab-8e13-6c08022a5a9d','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('859d4704-b610-4a2b-b112-000e403e823b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('85fdd64a-9f2d-4f27-a4ab-78f1a3a15200','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('86238ad4-5842-4d03-af1c-2f2ac40a6123','null','72308d7a-5d2b-43d0-ab9d-1839fae15b63','f2c093f3-2f6d-46dd-880d-2831569cdaa9','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL),('8767130c-3c4a-41df-b78d-16d674949746','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('87715b73-66ea-4e22-8b92-d6130a757d96','null','ef8e9f97-1c75-47a0-a3f3-f2e932a44b40','5b9af18a-e42d-436f-b61e-08d55d6f3050','1.0',NULL,NULL,NULL,'apigw','apigw','apigw',NULL,NULL,NULL,NULL,NULL,NULL),('877a120e-1d41-4f74-865c-8a9d32b7f00c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('87c8ce73-2771-4ac1-b592-1d0fdb0806f6','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('890593d3-885d-4919-89da-838fa12b4790','null','7afbfe3b-a909-4682-80d3-f5a1a57713ac','83458031-84c2-4d06-b977-53fe9b5d8100','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL),('891c94d3-bcff-4d5f-8a92-f1ef951fd9c4','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('895bba6a-2e3d-48f9-9e93-7a3de18b703f','null','51a669a5-4c83-4231-8aa0-9939acf835ef','3b97c83c-ee8b-4eb7-9910-428b7a58d9cb','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('8ab47c0f-a4c5-43c3-9ebb-6dba37f4c576','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('8ac0cb3a-dfb9-478b-96ab-c5ff0abb9609','null','00648ac2-2381-4235-843e-882d30c6f7b2','7982cd91-807d-48cd-a3f2-0c40777b3df4','1.0',NULL,'Y',NULL,'oam','oam','oam','NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2','nv.c12r48d100',NULL,'{ecomp_generated_naming=true}',0,NULL),('8b3798b4-65d1-4032-a2b9-83b3708945bf','null','6685b9d7-ae66-490a-8967-520549f7d6e5','f4c18fb7-ea8b-4e89-82e7-26525c528079','1.0',NULL,NULL,NULL,'fe','fe','fe',NULL,NULL,NULL,NULL,NULL,NULL),('8ca7da2f-1cd5-4493-ab82-805f48d8bd71','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('8da61575-f78e-4170-9b19-ebb14fb6c211','null','686e6906-6dad-42e4-836d-b01dfd8dcd3b','050dd517-57da-45ad-86c8-d6c2d9cf742b','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('8e4a567c-3a73-49c2-95a9-2b092032ab10','null','801f48a5-eb2c-49a2-a03c-4a3175bacbc3','4fddcad8-91f9-48cb-902b-b05fcd1fb98b','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('8e5d1a2d-9cf9-4988-961a-2e95772656d0','null','b95401c8-5c5e-48b7-9839-d581cfca5935','4c671c7b-3ce5-48d6-b7ca-4047c3ebb2ef','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('8e666420-f2c8-47ab-b593-ab4bd748460c','null','fd0b5273-f01b-4129-8a20-447567d7c370','94bcc5fb-18c9-47f3-9bc1-db73fba3c210','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('8e7289ce-c299-4ab5-8be7-245ef7b410db','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('8e80f851-fe0b-4363-81b8-f7bd0e59016b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('8e8a56fd-db66-462b-9e06-81e507a74a36','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('8ec1d032-e5eb-462a-b96c-40bed1028f51','null','efcc4117-0c1d-43fa-b80b-1f34712021bd','cc772cf5-fc52-4cbb-8b6b-a58da7e40abd','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL),('9066cc10-a5a1-4f0d-9498-7ea314e836ba','null','767cf039-9261-4efb-b63b-1f48a3391e74','ed19a0e7-2486-4c67-bbbb-01514efb4dac','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('9112fca1-6b0f-4f7a-9d1c-ed930ca86ffe','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('91c98964-347d-48e9-851d-57e22c4dddea','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('91e52c46-6dc8-4535-b1db-f1477ecfcaee','null','f61424d4-acc4-42ae-8a41-03a0bc098132','c2039665-e5f5-4114-a94d-74804cac2ea0','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('922a84a0-d9ce-4ff7-b6bb-7d1ebcaa0c1c','null','c7efdf88-8a09-41d3-908e-d1e513b3c745','a2d5099b-4254-4f7e-8d3d-ceb280571ee1','1.0',NULL,'Y',NULL,'plt','plt','plt','USP_IECF-PILOT_30.3.3-mcas4.4.6.qcow2','nd.c2r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL),('92f5bbb1-3215-4a80-95fe-aba44d79fb69','null','1efb8470-f0d6-4e69-97eb-7dbec527dc6d','eed80211-44a5-4f21-bb1e-83b82635bb3b','1.0',NULL,NULL,NULL,'pcm','pcm','pcm',NULL,NULL,NULL,NULL,NULL,NULL),('934d8e29-ab23-489e-910f-3e16db969d81','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('94738c09-9e9a-47e4-a444-c262328e1741','null','00629390-ad5c-4a52-a04e-1efa3b2c9dc2','ea761b8a-e27f-470b-ba8a-a89e9b61b467','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL),('9519bd6e-527c-4f7a-a013-dd478fad64bd','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('953f220f-a3f1-4191-a7eb-722f841f2c0c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('95b5cde3-d489-4329-9b75-2aa01db6e6a1','null','720c36a7-9380-4c11-a8ce-acb2ad5c2d7f','07285e73-89c2-4330-b09d-65f568c976de','1.0',NULL,'Y',NULL,'vdbe','vdbe','vdbe','SRX_DBE_15.1X49-D50.qcow2','nd.c2r6d20',NULL,'{ecomp_generated_naming=true}',0,NULL),('95bdd202-1f6a-4812-ae1f-c8df2ed8ce9c','null','324ba26b-468f-467b-9b49-021f76720277','ebffbeff-3b15-4ce9-abe7-654f0bd8615f','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('964808cb-2199-44fc-9390-004b8fa8d538','null','dd0137f5-c6fd-4990-a217-8e3c41838bd3','14c13c2e-dccd-48af-b46a-5526f6640a63','1.0',NULL,NULL,NULL,'its','its','its',NULL,NULL,NULL,NULL,NULL,NULL),('967653fc-d781-4f65-b513-7a111d854ffa','null','f0d528fa-8ae2-4548-9e59-71bdf5b16b2b','d18b5d59-c65e-420d-ae28-8181e87520b6','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('970657f6-a90a-4758-ba4f-512da3aa07e4','null','47e50720-58ad-41d5-a89d-a290833d5170','3ec89b15-8ef3-466b-8b6f-f8e658793601','1.0',NULL,NULL,NULL,'fe','fe','fe',NULL,NULL,NULL,NULL,NULL,NULL),('97dafb56-c3df-4922-970d-b514118b1196','null','f0d528fa-8ae2-4548-9e59-71bdf5b16b2b','d18b5d59-c65e-420d-ae28-8181e87520b6','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('9842c47b-f484-4de6-864f-ca4fdaea3cad','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('99699375-0397-405b-89c7-32fc9f714e0a','null','27f6423d-ab25-484a-86c7-038925e4cf30','10078587-93b2-4ec3-be27-c9172716e3bf','1.0',NULL,NULL,NULL,'be','be','be',NULL,NULL,NULL,NULL,NULL,NULL),('99781b3e-7c91-432c-af97-dccdf0e31281','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('99a274bf-c3fd-4d63-a4b1-1c7b4d9312d6','null','05c097e1-9d0b-484d-9d3f-b4c4ecf6938b','f61c31cb-5ffc-47a4-b423-4aabc4afb2d7','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL),('99bd7230-87c4-4dc5-aba2-4a63ad55954c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('99cab556-8786-4fdc-8ff6-284aa7d47fa8','null','cb26bc79-f5c2-4d70-96e5-8ef2ec5cb2f8','2354ae73-a126-4797-8136-56d5320c4efd','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('99f10ccf-e4d0-4c1a-87fc-9d4403f9bb57','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('9b5fd226-047a-4702-ac8b-d84a4e12bcb1','null','544f081b-41eb-41ed-aea3-82a53f8406b7','fd49fdc5-aa89-4528-88ad-7ab74497826e','1.0',NULL,NULL,NULL,'TEST_server','TEST_server','TEST_server',NULL,NULL,NULL,NULL,NULL,NULL),('9b68a223-ae32-495b-9dbf-706d17f4edca','null','fd0b5273-f01b-4129-8a20-447567d7c370','94bcc5fb-18c9-47f3-9bc1-db73fba3c210','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('9bc3396f-861c-4bb7-b11c-e40ed9fc785b','null','51a669a5-4c83-4231-8aa0-9939acf835ef','3b97c83c-ee8b-4eb7-9910-428b7a58d9cb','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('9cb550ff-94a8-46df-b216-8d8d79a4430c','null','3021e249-ce61-4921-97d3-c620fee735d8','f5d1a9de-02c5-408f-9a58-f3f7dc40e91d','1.0',NULL,NULL,NULL,'converter','converter','converter',NULL,NULL,NULL,NULL,NULL,NULL),('9d25a319-184f-41d8-b361-b3c34780815b','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('9da1a65e-107f-4c2f-b3aa-5741f9ec4246','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('9e0bae98-f88e-4afa-987e-44d6bf49d222','null','4dbb5f94-045d-4daa-8cc0-6b67b14733e8','e41c812e-482a-4831-8a61-90ca514afc64','1.0',NULL,NULL,NULL,'mmsc','mmsc','mmsc',NULL,NULL,NULL,NULL,NULL,NULL),('9e9a03db-5e18-4080-9a99-3befee79d106','null','8cf09ba8-a266-426d-b10e-77f8bfb0fa2f','e628f731-8879-41c3-b391-482b2d255f7d','1.0',NULL,'Y',NULL,'rtp_msc_a','rtp_msc_a','rtp_msc_a',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL),('9ead1a85-5592-4784-879c-147a94bea966','null','b2d3805f-a918-4f95-b4fa-f6c5b8dab1ca','2e090e82-864f-4d48-9c74-dd8a812c2396','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('9eb9415d-9c3a-499e-9889-d97647df8b41','null','fdb7b451-b225-464e-92da-fe01b24215e6','12b488c0-ff81-4840-930d-94020426b7da','1.0',NULL,'Y',NULL,'adm','adm','adm',NULL,'{}',NULL,'{ecomp_generated_naming=true}',0,NULL),('9eba7181-1630-49c1-8698-a94dd8ca95b2','null','2e0cd406-2bdb-48dc-b262-c7e45f1216b5','4f3990bc-bedc-4308-a3ac-6900eb684e9b','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('9f0d1717-e20d-4c2e-9c64-f7ce4b9b13d4','null','c30e7d17-563f-41fc-99dc-6390c831ee08','367294b2-ef14-49bc-8b01-d7cfdccaf0c1','1.0',NULL,'Y',NULL,'app','app','app','USP_IECF-APP_30.3.3-mcas4.4.6.qcow2','nd.c12r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL),('9f240ab4-117b-4bd4-aeac-432607eaeb6d','null','5c92f734-aee4-4431-bffd-4b1613b40eed','d39c7ac8-25d3-47b0-a10a-7474dad90e21','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('9f4130d6-6e88-4759-a635-ff24c6c7814c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('9f46cf9c-6b2c-41b8-a4b6-27b5e6373538','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('9fad30e6-3822-48a6-ad15-caa62566abe6','null','3ab414a7-b8b9-49ca-96c5-8e0bec348412','52e44eae-1f79-43ec-ac74-cf6501fb6e26','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL),('a00628bd-e870-4679-80ed-0423caad18df','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a0083208-228e-42d8-82db-ff463b8704b8','null','1dff89b9-f323-482b-b7a7-e049f9ad7635','0ce097c2-4121-449f-9f98-63532a8bff55','1.0',NULL,NULL,NULL,'vertica','vertica','vertica',NULL,NULL,NULL,NULL,NULL,NULL),('a0154f8d-ac4d-4af1-abd0-e660f7562d35','null','4ca1e003-d833-4bdc-877a-e4d7aeb6a4b7','2b6676c6-90b2-4d39-be19-b1ffbd23f558','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a0ec6cac-6fc9-4429-8387-93593d2072df','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a116fc55-74a0-4d69-b034-34170799ac3c','null','cb8841a3-5eb5-4c72-844b-16dcb0d3b7e4','c4342af1-f173-4d83-bbcb-0c9fdd7b9567','1.0',NULL,NULL,NULL,'d2ice','d2ice','d2ice',NULL,NULL,NULL,NULL,NULL,NULL),('a1b72bd2-0d25-4031-973a-c9600dab5f78','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a1cd762a-7c3c-4839-a2eb-e77bb374eca3','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a1e0d30a-598b-43cf-b1ef-62158ffc70eb','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a26fdde2-478b-4b1b-ba35-af8b6f3da856','null','10421357-a2b3-4a7a-b82d-125b2805fa5a','56324cee-8dfd-48f3-aae8-3101be93cdac','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL),('a27d8879-67a2-4537-b326-2c072e31f68c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a27f0fb5-4744-4b99-af5b-1dd1d59c8725','null','c6f03037-253c-473b-a538-73246b291185','cb19a064-c90f-4d71-b01b-a0bca8ed5e4b','1.0',NULL,NULL,NULL,'itm','itm','itm',NULL,NULL,NULL,NULL,NULL,NULL),('a2a8f05f-7d29-417a-af2a-00c3ec229246','null','ce2aa7f5-6fa8-46c1-9790-8ae7b49a6306','e395e992-e359-4635-a463-ab9b9fb027bc','1.0',NULL,'Y',NULL,'mda','mda','mda','{}','{}',NULL,'{ecomp_generated_naming=true}',0,NULL),('a3dd0b00-859a-4567-afd5-08efb92072e7','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a52999b1-dab9-42cf-9853-1d831eb0d318','null','b173ab2a-9b2b-433d-883e-3c153f39c331','464f4ed6-75d9-4a48-bb9c-9a49b4da172f','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL),('a54fdfd0-33da-462b-883f-f7ddc2d86e1c','null','86f39736-fe98-410c-b0a1-12baf7a64626','369abd2c-c79a-4ee3-9152-a158a8e160a9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a5653b1c-6e73-4ee6-a5e0-5f1bcb1ea959','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a5ece57f-58c7-4e9f-80f4-6a2d0a4bec38','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a5f25e31-5059-4d50-97ef-26735df799ed','null','9e4e3726-d8a8-4a40-8fae-f4bb46135d3f','08253508-dd15-4202-bfaa-c105f0a8c19f','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL),('a60c2994-8089-42ff-90ce-656c6aeeac42','null','7513c82e-63de-47f8-94b6-83ea61446fc1','82104fb7-3f0f-4c6b-97a2-adce8c48a7b2','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a682c9ab-b50c-429f-a605-2469a4efb829','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a698af7d-6797-4807-907f-f9e60593d082','null','90177c20-11a9-4a85-bac6-067f4c88403b','cbae819f-fe79-4031-8a06-79026c8eb1fe','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL),('a6d1fe14-e363-4c05-9c68-a23e3ff4e816','null','55372be2-6074-4793-92b1-e0fe1afb08b7','d03e16a8-becc-435b-aacd-829f6e3150b3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a727ca3c-cccb-45fd-a3dc-1b030b1fca71','null','c12a93bb-bb70-4f40-8823-155980ad078f','cef11b73-aa73-4f88-8b6c-34d21d55b8cf','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('a72f75fc-126f-4a3b-a125-a33e89fb3ca6','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a7fad07d-f91c-44fd-98f9-4952f35f3875','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a808430e-4931-417a-b6d8-183a719d1803','null','83429bf9-49f1-4187-a5ad-afc329a84e76','ce422e74-7e58-4464-8a54-61e21f3ca7e5','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a8bb4868-11f8-4eaf-a411-007f6691ef99','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('a91bc7ee-82ae-46b4-9eb4-4a92fef3f00c','null','9e68d141-f3ab-4436-a1a6-52f83a2908ba','7d33eb47-6050-4ef6-aea5-0485360ff4e8','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL),('aa008846-3e9f-462e-867d-653358cd6d8d','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('aa8a4494-cd9e-444f-a174-9f2590bbc692','null','178dcae6-892b-4fd8-9da9-bdf30da013ae','50d30dc2-fe59-46be-92e1-2844868bf1ab','1.0',NULL,'Y',NULL,'vmxvre','vmxvre','vmxvre',NULL,'ns.c1r16d32.v5',NULL,'{ecomp_generated_naming=true}',0,NULL),('aaad4b91-f2bd-4157-b386-fb7955b1dfc9','null','9b3265aa-64a8-498a-aa68-2d6a65c34ac2','d3351d9a-5b8c-423f-b63d-bdba0716b04f','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL),('ab26b6c2-af90-4f66-bc2b-f500a3ca1a5c','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('ac0cd98d-35ee-438c-a45e-9a2447c603a4','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('ac377ae1-fd6b-41e4-9aff-a6b2b038d484','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('ac496aaf-ecff-4db3-acb7-cd9989db2b21','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('aca91a09-aa6f-4701-bce6-2ded800ac69a','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('ad6791e1-eefe-49b4-bce3-3e5b76555fb9','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('adcc1687-2e29-4b48-81cf-d671aaff5cef','null','d2c6e47e-7320-4559-876c-65f21e71be94','71db90f8-ae2e-44a2-b57d-e96de3f89b66','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL),('ae6938ed-7d85-4d1c-b08b-683eaeeb8861','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('af36dd7e-6e79-4b5b-b031-d1a7ff2876b1','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('afc8dd7b-f829-4d44-a52f-ee0665d770b7','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b04d88cc-cf85-4968-82c8-c950f4487d0c','null','143fc587-69af-4c05-b624-d5d0cf0d2b44','4b5305d2-022c-47ab-8f47-7f795a6a64a0','1.0',NULL,NULL,NULL,'be','be','be',NULL,NULL,NULL,NULL,NULL,NULL),('b09c467f-048d-42e9-a127-79c8bf3b090d','null','5818d233-caf4-4825-a7bb-144bbd731329','b8c28cad-e97a-4ee8-bc64-119b373cf98f','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b0f2b86e-1b9a-4d3b-9dd8-ace1ee07976f','null','3ca34c00-47ad-407b-8b31-d209843f7a07','a6a47256-5dad-44bb-afd3-a3dcb58b6493','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b14c2a09-89e7-487f-95ec-1b5bbc3399e4','null','ea6ed17e-b52c-4a66-8bb3-8e5f6f3fef39','c14a722e-7f86-4577-9583-ba9397a2a54d','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL),('b1ff5519-4c6c-4378-99ab-df79b2802406','null','64607264-f245-419c-b490-5b40cdc6c8d1','23aee13f-2ba4-4f62-8739-60655b38e537','1.0',NULL,'Y',NULL,'ssc_a','ssc_a','ssc_a',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL),('b2f1e772-dc8d-4048-b984-441ad81f3955','null','51a669a5-4c83-4231-8aa0-9939acf835ef','3b97c83c-ee8b-4eb7-9910-428b7a58d9cb','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b328a3fe-e2c5-4fc0-800f-f3a64ca779d4','null','231e7f44-fdbc-40a0-b836-c3302421004d','e66f3e27-27f7-450c-b3b7-cdaf43d262b6','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b36490f4-abe6-4951-8f46-72889c614c4a','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b3a64b54-ea13-43c7-af8f-3b69a538c213','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b4100792-9341-4078-bac7-404b684f211c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b4483cf2-b435-4ed2-b45c-93a2f2bcda66','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b6444afc-7bf1-4170-83f7-8c932d5a55c9','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b6d5b572-0a9d-4de7-ba44-bd02bdf95626','null','5e6be389-4ca1-4344-b497-d40e7d76de5b','280afa6d-83d3-4ecf-9cdf-47a2e4b0431e','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('b6e7344e-5dc6-4b71-9735-fc047e5b999a','null','49c1424b-5e2d-4e16-b1f3-1f20fd529925','651bfb5d-d5cd-4ef0-bb26-0eb3bbbe71b8','1.0',NULL,NULL,NULL,'psm','psm','psm',NULL,NULL,NULL,NULL,NULL,NULL),('b6ff6a80-ee73-415d-b4d8-9e97cd788e1d','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b773d671-6888-48ca-8ba8-609371bfccb6','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b7cf537e-9b62-40e8-9f1d-278ff0b7986e','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b858d606-617d-4b29-b749-e51e70c52e5c','null','80501dcd-d0a6-4101-92b2-6a2249258d4f','e2eb1e3f-ca9a-406c-bcfe-d53b87e0fa27','1.0',NULL,'Y',NULL,'app','app','app','USP_IECF-APP_30.3.3-mcas4.4.6.qcow2','nd.c12r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL),('b87c7274-78d0-4549-ba63-9fdbdefe239d','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b8935925-e0bb-4103-b64b-14e24237599b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b8cddb4a-babb-49e0-a369-4ba04908d4f7','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b8e49d1b-e5ee-4e25-8d20-61e5588f5f87','null','a17323d7-1f15-459a-93a1-2523b2dcc909','78a657d7-74d1-44bf-939c-73d748dc4ebc','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('b95b06d3-f566-4d75-a43b-fbf94d9f9645','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('b9b64e3f-7b45-4293-b742-21b5bd63fac2','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('ba3c401d-def7-4085-bd8b-5cfad9cb94a9','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('bb0cd22b-bb81-4fbe-b756-94cd3b94255b','null','51a669a5-4c83-4231-8aa0-9939acf835ef','3b97c83c-ee8b-4eb7-9910-428b7a58d9cb','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('bb6da603-e8ec-435e-b84f-27e3985a1f91','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('bbadc8e6-b898-46ef-8204-06e125a690d6','null','44c2244b-b8c1-4788-886b-28addae150ec','76408aa4-80ce-4974-aed7-77336f6fecb0','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL),('bcbc6708-3697-430c-a8e8-6250939ecf5c','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('bcdd7c03-4140-4378-b00a-3775089ae232','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('bd18c89f-92d2-4cc9-ae09-dac57219db9a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('bd800b26-228f-40db-bd98-dd4afade8ee4','null','a768414c-507d-4120-a1a4-ed2c1ec3f4ad','8d8fcea8-4352-48a2-8e39-10b3b8862743','1.0',NULL,NULL,NULL,'cm','cm','cm',NULL,NULL,NULL,NULL,NULL,NULL),('be1a6293-fa3b-4a2f-afd6-480f2e70a5d2','null','bfc9b3ec-9c4f-4caa-9489-4c3e6c99a4ce','9fe7109f-e328-4ae1-aa27-1ea33b72613a','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL),('be65d2ae-31cc-479c-9156-e7f1d6b6a4b4','null','f30f9166-702e-47b8-8f0a-d5523f86b7d6','73aaf1fa-265c-4f13-a171-ca8dc4c908ff','1.0',NULL,NULL,NULL,'qtrace','qtrace','qtrace',NULL,NULL,NULL,NULL,NULL,NULL),('be96e427-e84c-4a57-b169-5490bc2bde4c','null','fc60c10b-f1ba-4e3d-9c41-e4eff820162e','c05c500e-e9c8-4edf-9e94-6af1779e62c0','1.0',NULL,NULL,NULL,'mmsc','mmsc','mmsc',NULL,NULL,NULL,NULL,NULL,NULL),('bf11ea87-eca7-4bfe-a958-a6395c14c11a','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('bf4cfefa-3bf4-43a9-a7b4-d091f92586e3','null','484fc852-b184-4321-ac3a-0a95d254fa6c','31be2acb-c53a-4a8c-a3ed-ff6d2db67255','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('c0228379-2c35-4d53-bffd-b22f70e5b131','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c0269cef-1de3-4b79-8c45-790e56540ac9','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c05551e2-d5f7-4fba-bd08-c76085bc0bd7','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c0a21a31-56f6-4ed0-9647-f2c9cfb22737','null','482d5ad8-7f48-444d-8b45-2817b8309075','2c1d7d2a-0122-4a1c-8be6-ce19cd9c3592','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL),('c0e635b4-e210-4c0a-ade3-943aab8ee3e3','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c1cba325-dce0-418b-9ec1-61bf6ecac873','null','e2d673cd-88da-46ea-a591-5f2b7c835639','279ac5e4-a5d9-48ab-82ab-9d336c0f96d3','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('c23ac2f2-56ff-4ecc-b65d-65dd8f82a0cc','null','629adabe-cc44-4989-8f2a-75b55f7737e4','e82cdbcc-5bbf-4dcb-9a0f-17c6e4766801','1.0',NULL,NULL,NULL,'daemon','daemon','daemon',NULL,NULL,NULL,NULL,NULL,NULL),('c2655316-7724-4fe0-9ace-cad170838ed0','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c2bc34f3-ec20-4f40-a6ff-c0913ac9b180','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c3afd8d5-cc77-43e9-baaf-7caf60146b15','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c3ec6c74-294e-4eec-825e-3071b55a08c0','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c43aef22-8dd1-4e8c-8169-f88da3ef2160','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c4753b00-af1d-4b49-bcfa-475effeaa3ca','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c4c23e62-b07d-4856-ad5b-af6a3980fae2','null','e1158f69-c65d-4b6b-8332-46ef339ffc81','9a2de0f9-0535-4bf1-8e5c-47cfd7affe43','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL),('c4d1cc21-49d5-4f45-a6ac-539165918edb','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c504575d-ec87-4c75-b3cf-26b561c77c8c','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c5d7d223-39d1-401c-98eb-0680733d2872','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c5eb0c33-6a51-400b-8186-d7fc1f0bee13','null','e996f365-b29f-471b-8b32-baf93152eb81','c3f2985e-1999-419a-bcf7-91560cca1a1f','1.0',NULL,NULL,NULL,'smp','smp','smp',NULL,NULL,NULL,NULL,NULL,NULL),('c6e0a9c3-babd-4517-988c-5f0c90877b1c','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c788c709-f8a6-453e-ad1e-8dfa63492dbb','null','8a895561-a663-4b64-b421-7416bf9d4a8b','795d516f-34ca-4a0e-a74b-c4746eae4300','1.0',NULL,NULL,NULL,'code1','tag1','tag1',NULL,NULL,NULL,NULL,NULL,NULL),('c7b54e8e-8121-4102-b5d0-b25181920fec','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c7d68a7a-7496-46de-adef-dd7b82f2e742','null','00f8e942-ae52-4da5-b459-8fb54eee2adc','b1b37903-9386-4912-8a60-ed692a03b52c','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL),('c859e495-1df4-4613-8193-357defa1ec51','null','088d65a7-f6fb-4214-b5fb-f5fa6948a7d1','92f3786d-9aa7-413b-b751-e7a8595c7c22','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL),('c873746f-0a6e-422b-9efd-44aae71283a7','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c877c31e-896a-4f07-9c25-e5a447462ff5','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c8ab7283-5834-4c61-a165-c1e292711a59','null','1572dff4-d406-40ad-afd4-9828e66347a1','3da37bf6-87b4-4b98-a9a5-d2c18a7ab8ab','1.0',NULL,'Y',NULL,'vmt','vmt','vmt',NULL,'{}',NULL,'{ecomp_generated_naming=true}',0,NULL),('c935fb51-b144-4f95-804f-8c21e8ab3769','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c9527801-36a0-4fb3-a6ce-3c3e685283ab','null','86f39736-fe98-410c-b0a1-12baf7a64626','369abd2c-c79a-4ee3-9152-a158a8e160a9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('c9f6627a-41c8-4805-8d30-74d755e3bd94','null','899ccf77-9926-47c5-9e96-7f32c7535455','5d660f11-702c-4875-b446-efaa631488c9','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('cb0fa12b-221c-41d3-b900-786711f5deba','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('cc1fb9ba-e8d8-4544-b893-19784421da07','null','e55ea388-7c7a-4624-98d0-530b1cf12353','a6df5997-cae3-47bc-b11f-a8ae9ea15755','1.0',NULL,NULL,NULL,'microservices','microservices','microservices',NULL,NULL,NULL,NULL,NULL,NULL),('cc2f9ba3-0a21-47cc-8e5c-d40b0b36b786','null','46359680-71dd-4c95-954d-70e1286003bc','b62b2cb6-cedb-4aa5-8501-d733dbad7546','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL),('cca81022-c403-46e3-a617-cf9d001532a1','null','c6a26e4e-4ba9-4abb-80c0-99af10e3e045','a7cf9a89-0b67-4247-bbfb-8fd671d0c13a','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('cd5501b1-1490-4b85-b954-8c3dcc641bf5','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('cdd0c29a-5067-4549-ac36-f437c64b79ed','null','e886bdeb-5486-4ecf-ad03-56837ab6e550','5e749085-6671-4472-a068-e9a974324c2a','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('cebe69d9-1c8e-45c0-9ab4-a0506c636d92','null','1172e0ac-8e56-4fdf-8454-18e2964e97de','440ce9b8-e1ba-4b63-918c-b433afb97d11','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL),('cf3e09d9-0a4c-4e54-9925-df317d9ac3ef','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('cfa061e6-f6b5-4f2e-b605-f4cccf69a1ff','null','e53b0aae-f8b0-4776-bb40-837c5d48e289','87425303-683f-414d-a84e-1ce7534688d5','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL),('d014e9dd-284b-4baf-acaf-6caae88eaec1','null','5014d933-aa2f-4ea9-87f1-70729f080747','331d6f77-d90a-4c83-a11f-176ca9c901ab','1.0',NULL,NULL,NULL,'mmsc','mmsc','mmsc',NULL,NULL,NULL,NULL,NULL,NULL),('d01bd75c-4c1c-415d-9a8b-a48d50589089','null','0e2da292-c026-499e-978d-8a9912b8f3c3','50dd9a89-6184-40f1-8d61-3586369f647e','1.0',NULL,NULL,NULL,'be','be','be',NULL,NULL,NULL,NULL,NULL,NULL),('d05e773f-2d6c-4a8c-9ed9-e29eaaab7a10','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d0d264c5-eb08-416d-9e2f-d78649e3eb07','null','51e3f3de-b2c9-4cdb-9ed1-7d689d1df408','9e4c8069-d199-43ea-8eb3-ca1b5bb433d5','1.0',NULL,NULL,NULL,'fe','fe','fe',NULL,NULL,NULL,NULL,NULL,NULL),('d18761e1-1c7e-45b5-92d3-bf057164629b','null','87cb315b-4c0a-4c65-81a6-8221562f6a8e','0312fa13-5678-4ff7-b5ab-d2eb370cd44c','1.0',NULL,'Y',NULL,'app','app','app','USP_IECF-APP_30.3.3-mcas4.4.6.qcow2','nd.c12r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL),('d1942b6f-5cfb-4167-a158-4a556d32d6fd','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d1c09e21-5074-4c80-9864-8bcdd3ef9d07','null','4ca1e003-d833-4bdc-877a-e4d7aeb6a4b7','2b6676c6-90b2-4d39-be19-b1ffbd23f558','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d2283908-05ea-4f6e-9e6a-c891f2df406f','null','039aeb04-d31a-48bd-9459-29539639d6ec','2bec9788-7039-4c59-aec1-35aae3903c19','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL),('d23cab29-da46-4aeb-b04d-3895f5ec3a76','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d2547357-4c45-4462-bc6b-46d640a4c1b8','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d25e12e3-8cf3-4fce-8fd2-bf21f0f0e795','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d2931a86-1b18-414c-a6f2-edd5cc1a26e9','null','1b9d7f98-60f9-476a-bd30-dc200fa89f93','0318d0e9-d938-4c4a-9157-848e5564f717','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d2e1e04b-0622-4624-868a-ff6a71b5adf3','null','c5993503-367f-4d34-901f-95fb562591fd','6ab10218-fb57-4423-b838-48efcec339a7','1.0',NULL,NULL,NULL,'conductor','conductor','conductor',NULL,NULL,NULL,NULL,NULL,NULL),('d330374c-aa93-4dfc-b4f4-a3dc4411b9aa','null','a3f9c583-bbfa-44a2-bc51-03f77a2bc8a7','8d63b561-50b8-44c9-a899-627687b6c930','1.0',NULL,'Y',NULL,'vmxvre','vmxvre','vmxvre',NULL,'ns.c1r16d32.v5',NULL,'{ecomp_generated_naming=true}',0,NULL),('d38f40ad-a4bd-4736-b324-486373898759','null','1e7d318b-f33b-4b90-9d75-6da7922361ed','35e68c56-72ff-43fc-892d-96164bd1f244','1.0',NULL,NULL,NULL,'pd_server','pd_server','pd_server',NULL,NULL,NULL,NULL,NULL,NULL),('d3afb81a-50f1-4e04-86de-7498741fcb62','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d44562b3-5960-474d-bfd3-e38bb638948c','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d48099b0-2b0a-4c5c-a2bd-aaf4727bb13d','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d486859c-c045-4216-a4a1-32901540ed1f','null','0ad0f610-74d9-4ddf-ad83-beca6203c3ce','87b6d27b-185e-419f-acfc-3f8bd659ce9c','2.0',NULL,NULL,NULL,'TEST_server','TEST_server','TEST_server','{}','{}',NULL,NULL,0,NULL),('d4ceca44-046f-4a8c-bc8f-4e55b39be39a','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d4d60fbb-3af9-42f7-9da9-1fd955e5c086','null','83e2f5f6-c7ab-4f9f-be3e-3566dce5ca4a','f2e899b2-50df-4cb3-aa4b-2ffccad39e61','1.0',NULL,'Y',NULL,'vmxvre','vmxvre','vmxvre',NULL,'ns.c1r16d32.v5',NULL,'{ecomp_generated_naming=true}',0,NULL),('d4ee269d-563e-4b40-abc0-b9e831167253','null','00df4ead-6147-413b-8658-064bf60b45f4','ce27c3d9-e589-462e-aa30-f7aa0693cbfc','1.0',NULL,'Y',NULL,'iox','iox','iox','USP_IECF-IO_30.3.3-mcas4.4.6.qcow2','nd.c4r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL),('d5a9f7ee-97bc-4f4c-a505-bcd49151fa80','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d5cbf388-721f-4e72-aeed-8eb087b54fdb','null','3c185a74-5a29-476d-a557-31af4c5e3ad6','34756e5d-c023-466f-a330-43c1e01a4491','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL),('d6aeb78d-9a31-494f-ab0e-936748eac20d','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d6f25bbc-9478-4885-b899-5cd6739557b3','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d7724722-c600-4a34-a813-3583d60a3776','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d77a5564-8dc8-492e-8d9b-2a93f6e6c8a3','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d7e69e58-c9b2-4480-8860-748656b693c1','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','7f26a2f8-3e6f-463d-8d7d-2a8fc36b2935','11.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d7ef089b-0fb6-4355-aef4-24bb33ad5d61','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d813efe8-c11f-415f-a7e7-4fbca9e92318','null','4354b220-90ef-4473-9d12-ce784891b4a7','4cdca75a-3f10-4658-ad63-4d30c6fab96c','1.0',NULL,'Y',NULL,'pps','pps','pps','NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2','nv.c8r12d100',NULL,'{ecomp_generated_naming=true}',0,NULL),('d89ef92d-7708-473c-9843-151525428a3c','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d9023921-639c-4f29-bc39-75574e715492','null','40fa1c65-5db5-435c-8465-2ea98a49bfff','3bb7ef22-bd9f-4818-abb4-19c560e3661b','1.0',NULL,'Y',NULL,'vmxvpfe','vmxvpfe','vmxvpfe',NULL,'ns.c22r16d25.v5',NULL,'{ecomp_generated_naming=true}',0,NULL),('d955ecf3-c37b-4829-a592-ed0c5dfac3db','null','86f39736-fe98-410c-b0a1-12baf7a64626','369abd2c-c79a-4ee3-9152-a158a8e160a9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('d9bb4581-b99a-4810-8bf7-2ddabf069573','null','63b30309-8d17-4a53-8a8e-d5c84dc67971','39962b65-2689-4dca-85d6-af29ac04af02','1.0',NULL,NULL,NULL,'plt','plt','plt',NULL,NULL,NULL,NULL,NULL,NULL),('da276e91-0540-41d0-b6b2-f062e9ffea98','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('dac39219-5bbb-466a-8136-f2b3cd715957','null','4ee9e271-2073-4399-9779-0756f838f560','265e608e-9304-4996-91bc-2f2edb888a61','1.0',NULL,NULL,NULL,'ppd','ppd','ppd',NULL,NULL,NULL,NULL,NULL,NULL),('daef9b68-c885-4fd9-905b-81d02287b400','null','7c072a5c-87da-43d6-a240-1bb4f5c48c8d','b158181f-e1da-43f3-89cd-41e8db24852a','1.0',NULL,NULL,NULL,'analyst','analyst','analyst',NULL,NULL,NULL,NULL,NULL,NULL),('db6a3c01-6635-427c-b022-4826a6abcf38','null','fcec5e47-ce59-4541-bcd1-1115037bc77d','f76a36a2-9ffb-459d-8065-e022dbd04c17','1.0',NULL,NULL,NULL,'nems_fe','nems_fe','nems_fe',NULL,NULL,NULL,NULL,NULL,NULL),('dc82a28b-e06c-4362-b9a9-1a8536d11103','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('dcdb832d-6202-4b2d-a5c8-75eef953ebfb','null','4b2c0f45-4236-4219-b063-e2ca9c655af5','c8d403d0-3996-42e0-92b3-e26f3346f7f1','1.0',NULL,NULL,NULL,'psm','psm','psm',NULL,NULL,NULL,NULL,NULL,NULL),('dd6bb792-56c1-401a-957c-1494e42d059c','null','e2824f52-f71f-4dda-9e2d-9dd1c6163123','7495d002-4660-40e3-a834-b7bcaabeb7be','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('ddb68a75-d9ac-4179-b00b-e5202eedb221','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('de5dad75-6519-42c9-b6fc-a73958971f26','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('de666e4b-8026-48ca-a753-4c8b6314edcf','null','f9cb9e26-f215-4d92-9686-c01d215c2370','e401c6be-3e29-4f6b-a9ff-dd289e15f3fd','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('df6167af-bf7a-46a0-a39c-b8e4834f2c70','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e011021c-1e17-4357-9390-138924d67df8','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e03f15f3-ecb9-4b34-ac1b-d33bab8cee2f','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e077e430-fdf1-4dc3-ae2d-ed02cb0534be','null','50696315-5bde-4a61-91c2-6fb9a47fb333','daf91cde-5b47-42c7-8b85-d18607ffe31f','1.0',NULL,NULL,NULL,'drbd','drbd','drbd',NULL,NULL,NULL,NULL,NULL,NULL),('e0894eed-1665-47ea-9bab-01d3d33b8a6a','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e0c44b72-4d57-4368-8f37-baa4bc507d53','null','86f39736-fe98-410c-b0a1-12baf7a64626','369abd2c-c79a-4ee3-9152-a158a8e160a9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e10c30eb-e67f-49bc-a3b9-53ac87f5147c','null','d8e95546-60f7-4d74-9bc3-97326e57f9bf','d003593a-de80-4202-9a80-bc5338c679c4','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'nd.c4r8d0',NULL,NULL,NULL,NULL),('e1696594-145c-44aa-b2ff-3a3679ee9daf','null','607b0e02-9797-4251-b4af-7e25023653cd','8b3f7cec-61a7-4299-92c5-a0a0bda4aa7b','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('e1d9a966-9f3c-48c6-8445-25faf6279e04','null','a2f315f2-5965-496c-aed6-7d3a3e3b9e93','b709e309-c645-4177-bb54-739b2d4c3fe3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e258f6b9-ab1a-4509-a5dd-14af510f39bf','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e2e2fee7-7f1b-4d05-bc71-0623bf4bca83','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e3119061-af71-4b1f-b2a7-6270561f89c4','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e319c3d2-4908-47c6-9d34-6167831748d5','null','a9d90156-8109-4a7f-af9e-bab39b0eb5ed','2dd777d8-0fa9-4a16-9d57-367c066398e9','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('e3d8f89e-c5ec-46b1-9ed9-e09aee95397e','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e400273f-1161-43eb-8c06-e1b5eade4b5f','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e479c112-5d01-4a10-af33-74f0f476ba05','null','72308d7a-5d2b-43d0-ab9d-1839fae15b63','f2c093f3-2f6d-46dd-880d-2831569cdaa9','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL),('e4bbdb28-c969-4f36-b071-9b2f93eccb78','null','86f39736-fe98-410c-b0a1-12baf7a64626','369abd2c-c79a-4ee3-9152-a158a8e160a9','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e4da2213-136c-4883-8dda-672b92574558','null','0d9310c0-238a-419c-9abf-a10c468f842b','60b3d723-a2af-427f-ae3a-c2626f860930','1.0',NULL,NULL,NULL,'par','par','par',NULL,NULL,NULL,NULL,NULL,NULL),('e53ac4a4-2f1d-4979-abe9-6fdd18024252','null','1ed55cb2-1569-4daa-8156-0c653a9a1bd2','97d74a37-0916-4de2-9f14-8a043228c4e8','1.0',NULL,NULL,NULL,'be','be','be',NULL,NULL,NULL,NULL,NULL,NULL),('e63dfc74-a391-4dd1-b498-502deabad064','null','5de3f65a-9a57-463b-8f57-42307d9b27f8','900b6e33-ce13-46e8-b9e9-56d21e4a4668','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e6898721-cbc0-4d92-b356-e0e3c6cdb571','null','f9f13cd4-2c3c-4e4b-99eb-697877a83156','e0dad5f4-47b6-4973-8c3c-978ab29ac010','1.0',NULL,'Y',NULL,'app','app','app','USP_IECF-APP_30.3.3-mcas4.4.6.qcow2','nd.c12r4d50',NULL,'{ecomp_generated_naming=true}',0,NULL),('e6d3fdb1-8bc3-4312-9489-1e76c8efb4af','null','90a23913-8d7d-4272-b2d4-ebe81667cf17','9335c8ba-9677-4a88-b6cb-8078792b0974','1.0',NULL,NULL,NULL,'sm','sm','sm',NULL,NULL,NULL,NULL,NULL,NULL),('e7456fde-73be-44b6-97be-3cd6bd0e200a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e755b80d-4779-439a-98e0-f322d2d70f5d','null','1f972070-da5e-45d4-b134-7f1dcd1e1848','854c5b98-6905-4ca1-a71c-23d0220c949a','1.0',NULL,NULL,NULL,'distributedlock','distributedlock','distributedlock',NULL,NULL,NULL,NULL,NULL,NULL),('e7678c43-dd5e-4a55-b58d-d58217d10292','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e77e6de3-e3a6-4579-b323-6ea911c5b3f0','null','5cc8a5cb-fc45-4ce0-8e95-6d221bd76d46','a5c14db7-eab9-4e7e-8dba-aa9421819132','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('e821918b-15ea-4a78-8f7f-840bb3959ea1','null','5adbe212-db9f-4a6c-9871-226111051aa2','e7b9821a-fec2-4a9e-9213-badec9e4bd60','7.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e86fca77-08a7-4fea-8785-c4dbdbb221ad','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e9154076-fd6e-4cb8-8f27-8d95111c6c59','null','01cf04fe-b053-40b9-868e-0436453ee927','1f4f659f-5f6a-4e59-a8a8-c061579a5d01','1.0',NULL,NULL,NULL,'app','app','app',NULL,NULL,NULL,NULL,NULL,NULL),('e918ccc5-223a-4d8f-a6d1-73d3de95a6b3','null','3ca34c00-47ad-407b-8b31-d209843f7a07','a6a47256-5dad-44bb-afd3-a3dcb58b6493','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('e949e615-fadb-44a6-84df-f9f39864dbce','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('ea133bc3-41e3-415d-a0b2-c65665d6e44e','null','5d8c005f-4a39-408f-9371-fd6dbb816d52','a9ac2bcc-09d7-495a-9fcf-f24e505f06ef','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('ea3747eb-8a8e-4714-917c-63fd80ffe88c','null','52e18045-96d2-4150-940d-dfb0b8de5ad5','f16f1489-d1a9-4dba-b02d-43cbe052fcc6','1.0',NULL,NULL,NULL,'oam','oam','oam',NULL,NULL,NULL,NULL,NULL,NULL),('eaa6a0ff-126e-491b-ae71-c66f305fb527','null','f9737450-54bd-4567-b8aa-bc41eff0907c','3a96d13f-ad83-4d66-9f09-49d348a1aa24','1.0',NULL,NULL,NULL,'pd_server','pd_server','pd_server',NULL,NULL,NULL,NULL,NULL,NULL),('eafb6ec4-8870-4d6c-a6e8-b0865268427a','null','fbb05866-aa6a-4dd4-97f7-a20346d5f024','a1fa23a7-c5c6-493e-a1f0-981af15e337c','1.0',NULL,'Y',NULL,'psm','psm','psm','NIMBUS_PCRF_11.0.0Base-ATTM1.0.0.qcow2','nv.c6r96d100',NULL,'{ecomp_generated_naming=true}',0,NULL),('eb386141-d1cd-418c-88d0-dd6769a73727','null','b793b557-d2ab-4d37-bda1-b897925c5aec','0a04f17d-b28b-435c-96d7-7bbe6c7072e5','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL),('eb653250-d8ab-419d-9b4a-eb0d283e3f84','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('eb73da35-bf2f-4b15-a6fc-4a8c7a81ea2e','null','aaa774f2-5100-4b89-9ffa-75ca47774f21','8081cb51-9c3d-4320-8f3b-9f5b8683f379','1.0',NULL,'Y',NULL,'ems','ems','ems',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL),('eb7edf17-9669-4a3f-8e4d-1a6c1d3e79cf','null','8b0ded4b-5f4f-41e9-a462-9d844dbd4e16','b3be0f48-049b-4eae-a438-469f98d3666a','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL),('ebe51ba8-e766-4aab-93c9-9dda409f6e84','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('ed014da5-013d-4dea-9f77-f1399adfd0c6','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('ed202651-4796-4cb4-94ca-382739d41dd4','null','503d60bc-0b02-4a46-8b3f-0d6efa355c6c','1e0ac2af-1887-46e5-adc9-4a6ded8e0b47','1.0',NULL,NULL,NULL,'pd','pd','pd',NULL,NULL,NULL,NULL,NULL,NULL),('ed8e372b-5893-4f81-ab4c-ad45e6f205b5','null','8d5acbcc-77b0-43ee-9775-8f4cd8fdf949','b50b4639-baf7-4472-9acc-fb576bc007e1','1.0',NULL,'Y',NULL,'xsa','xsa','xsa',NULL,'nd.c4r8d0',NULL,'{ecomp_generated_naming=true}',0,NULL),('ede8fba4-b7ff-4650-a711-6d6207c4b49b','null','f62862e2-1845-4dfa-b957-bc299928f375','14b6b533-f357-493d-a427-53e80dcf699f','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('eec51444-f917-4826-b6a8-e6221c7a90e4','null','c0738051-2a77-48a0-a0fa-dd5d5f8bcc31','2e67a45a-97ea-4e54-87a7-75c2f7ad9163','1.0',NULL,'Y',NULL,'vmxvpfe','vmxvpfe','vmxvpfe',NULL,'ns.c20r16d25.v5',NULL,'{ecomp_generated_naming=true}',0,NULL),('ef26a5a2-9e4e-42ff-bff4-0f194cb2d972','null','f2c4a5c4-d809-4d19-9c02-308b34e89794','65d44361-202b-4aeb-bf5d-ba318fc1f34d','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('efb0efd8-16c6-4e62-bd3f-522990dff760','null','3d101527-fe50-46e7-bd89-ad99e545d322','729e3ea2-d7e7-4a4f-9516-04bf6df59834','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('efb4a2b2-bc92-4d78-9ffb-bcece5d0ccaf','null','1db9da95-cd4d-4225-ac5a-e919f299989b','000ea3fe-76ca-4f10-9f7e-c65bbd597865','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('efc90207-24b1-47a1-928d-19350791ca47','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('efd437ed-2715-4fe4-a69a-eafc41e7f650','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('f016575f-e7d9-4a90-aaf2-e6b429060fa8','null','bd670156-9175-4be4-9fde-09fb49dfac27','097276ed-bb83-4805-9cce-ceda0046fe8f','1.0','gw1218.Config_MS_VmVnfcNamingPolicyMobility1710.*','Y','Consumer Mobile DNS','dns','dns','dns',NULL,NULL,NULL,'{naming_policy=gw1218.Config_MS_VmVnfcNamingPolicyMobility1710.*, ecomp_generated_naming=true}',0,NULL),('f0277eef-3729-4e66-8c72-a23f933c5c8f','null','504c87bd-4d99-4237-9ef5-823f659f153f','563300b6-3490-443f-acdc-a65b37a0d955','1.0',NULL,NULL,NULL,'cognoscdp','cognoscdp','cognoscdp',NULL,NULL,NULL,NULL,NULL,NULL),('f0606828-6ceb-497a-863d-b72c9d11fafd','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('f0961049-966a-440f-af4c-797befaea852','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('f148e42e-d310-464f-9a27-bf3bc7ed2202','null','616633f4-2f25-4d7f-915c-105d97ec1390','e5a4b18a-0f96-4a63-aa75-1b6245e5a98a','1.0',NULL,NULL,NULL,'dns','dns','dns',NULL,NULL,NULL,NULL,NULL,NULL),('f1f35cf8-0a4e-48c9-a966-513fcf4863f1','null','e96677f3-5e25-4981-ab2e-4717179460e4','87495082-054c-4c08-8701-a2daf1f39d61','1.0',NULL,NULL,NULL,'smp','smp','smp',NULL,NULL,NULL,NULL,NULL,NULL),('f2a5b03c-dca9-4152-b35e-95da0b2a42bd','null','db32aef7-2854-4c45-b54b-6a8ba9b2a187','9be0230e-8b41-472f-b116-c088031b6461','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL),('f33b0238-a850-4b95-9078-2561fa509e04','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('f39040ec-1feb-4a27-83e4-b5d3f184f896','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','852c4237-cfdd-4695-9e75-bcd4cf7d38a3','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('f39128b6-1f38-4ca2-816b-3f15872de0bf','null','fb5f262a-269d-475c-bac2-31b009cdbe38','d5ac0c8f-4461-403b-aeb5-9b67f2ca7248','1.0',NULL,'Y',NULL,'ddc','ddc','ddc','{}','{}',NULL,'{ecomp_generated_naming=true}',0,NULL),('f4267340-601e-4040-ad87-f915e929a7fa','null','1aa31df4-439a-4dcc-b649-a7ed13510ab4','220a8d4f-d9e1-471e-8bc2-5c54d18de3c5','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('f4906bee-f14a-4d10-ac33-99043205b5db','null','231e7f44-fdbc-40a0-b836-c3302421004d','e66f3e27-27f7-450c-b3b7-cdaf43d262b6','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('f4dd3fba-2106-4ba6-b834-b8876f072a3b','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('f580e854-ac3d-49d1-b581-80b72f5a2c81','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('f59f0b93-65da-4d01-bff6-50733cc8a9db','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('f5b646e3-bdef-4f05-88e8-7f8cbb13d27e','null','11a268da-9a6e-4f39-8794-8de38f6cad63','6f48d61b-58fb-494e-9450-3497531e456d','1.0',NULL,NULL,NULL,'vvig','vvig','vvig',NULL,NULL,NULL,NULL,NULL,NULL),('f75bbdcd-d848-4a8e-ba4b-5173a7dcbb5a','null','75b03378-7319-418c-95e3-7a596ffa0c3b','b6f636f1-a834-4f24-a036-d0212a053688','2.0',NULL,NULL,NULL,NULL,NULL,NULL,'{}','{}',NULL,NULL,NULL,NULL),('f7b8a554-4335-45b8-bb61-c0a9b6f3d0ca','null','ea28c4ef-8200-4a97-b78c-c1e56f5089aa','198d7317-ad56-4cc3-9027-7a835f72e547','1.0',NULL,'Y',NULL,'rtp_msc_b','rtp_msc_b','rtp_msc_b',NULL,NULL,NULL,'{ecomp_generated_naming=true}',0,NULL),('f7d4ccaf-0f34-49e9-bb48-e652ca8a2705','null','72308d7a-5d2b-43d0-ab9d-1839fae15b63','f2c093f3-2f6d-46dd-880d-2831569cdaa9','1.0',NULL,'Y',NULL,'adm','adm','adm','{}','nv.c12r32d320s32',NULL,'{ecomp_generated_naming=true}',0,NULL),('f7dbd366-3e6f-4078-8f57-0ec005a42aee','null','aedc2b1d-2d46-419a-a100-f19acc5dda4c','b6de808d-1bf1-4445-9096-7184865b90c8','1.0',NULL,NULL,NULL,'guardian','guardian','guardian',NULL,NULL,NULL,NULL,NULL,NULL),('f84541f8-a56d-4ba6-8f2a-98bf872b4323','null','4788a442-db68-4d49-8086-80881e2ebcaa','c691c12d-4cd4-4f6f-8a8c-eb520242ec39','1.0',NULL,NULL,NULL,'rdn','rdn','rdn',NULL,NULL,NULL,NULL,NULL,NULL),('f909049f-7457-40d2-83bc-e3a8ce282556','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('fa1a48a8-3939-4994-bc74-d57cc601e44a','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('fa606398-23cc-49c2-94f0-92b2ab6a4bb8','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('fb29bfb6-5885-44d4-b792-c8bbf74127f9','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('fbc1a5aa-361c-4ebf-838f-e50784d09fc9','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('fcaa6830-e5d2-4e51-8b2a-142ce5795ca9','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('fe0adb9f-6a53-4f5f-814a-7fd4a1f94aff','null','dd3b80d2-2bd5-447e-a477-c545cb5f12a3','d5d27789-37b3-48f7-9938-7b013b2d79a8','1.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('fe402490-fa32-48fa-9b64-c1be9feaeba8','null','28602f11-3e2a-4d19-8e0e-2f85a5256f69','9a3db35a-1416-4016-912a-afa57590ef6d','1.0',NULL,NULL,NULL,'eca_trx','eca_trx','eca_trx',NULL,NULL,NULL,NULL,NULL,NULL),('fe5506eb-2cab-49d0-98aa-3f6e7af62928','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('fea5c677-4b8b-492f-a23d-665020923070','null','d10dcdb7-3f52-4303-a078-11d769ef33f4','c07f11c8-fccd-477c-bb70-5b7f939b3f08','3.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('fee32e95-4d59-4fb6-bb30-88f63752400f','null','0ba8c32b-e413-494b-afe2-2b10ccfa5ee6','535e57f2-7913-4947-852a-dcd3a9020424','1.0',NULL,NULL,NULL,'nat_fw','nat_fw','nat_fw',NULL,NULL,NULL,NULL,NULL,NULL),('fef42f2f-7105-4d25-b5ea-d0488ba413b8','null','b8098e5a-a3eb-4758-a311-729fbcbaa8ee','5c712825-6389-4664-aeb0-0837faa5d9ad','1.0',NULL,NULL,NULL,'managementui','managementui','managementui',NULL,NULL,NULL,NULL,NULL,NULL),('fef48cfb-de1f-4482-b6fc-72cd47fa0998','null','8b45ff14-14ca-4e2f-9ec5-2d957bc0ce93','b425cf93-ca33-41e6-ba92-ce78501ac44e','13.0',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('ff739f94-f33c-4a27-a84e-7ea813bf2e7c','null','1c2f2b6f-dadd-491e-b0bf-91eb8b97e524','d8ae78d3-880d-4a1a-a3af-64bd3077596b','1.0',NULL,NULL,NULL,'ps','ps','ps',NULL,NULL,NULL,NULL,NULL,NULL),('vnfapi-vfc-001',NULL,'vnfapi-invariant-vnf-001','vfc-001','v1','vfc-policy-001','Y',NULL,'vfc1','vlc','vlc',NULL,NULL,NULL,NULL,NULL,NULL);
+/*!40000 ALTER TABLE `VFC_MODEL` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2017-10-12 21:16:48
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/addIpAddresses.sh b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/addIpAddresses.sh
new file mode 100755
index 0000000..7c088a9
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/addIpAddresses.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+MYSQL_USER=${MYSQL_USER:-sdnctl}
+MYSQL_PWD=${MYSQL_PWD:-gamma}
+MYSQL_DB=${MYSQL_DB:-sdnctl}
+MYSQL_HOST=${MYSQL_HOST:-dbhost}
+
+universe=$1
+subnet=$2
+start=$3
+
+if [ $# -eq 3 ]
+then
+  mysql --user=${MYSQL_USER} --password=${MYSQL_PWD} --host=${MYSQL_HOST} ${MYSQL_DB} <<EOF
+INSERT INTO IPV4_ADDRESS_POOL VALUES('$aicSiteId', '$universe', 'AVAILABLE', '${subnet}.${start}');
+EOF
+elif [ $# -eq 4 ]
+then
+   stop=$4
+   ip=$start
+
+   while [ $ip -le $stop ]
+   do
+   mysql --user=${MYSQL_USER} --password=${MYSQL_PWD} --host=${MYSQL_HOST} ${MYSQL_DB} <<EOF
+INSERT INTO IPV4_ADDRESS_POOL VALUES('$aicSiteId', '$universe', 'AVAILABLE','${subnet}.${ip}');
+EOF
+ip=$(( ip+1 ))
+done
+else
+  echo "Usage: $0 universe subnet start [stop]"
+  exit 1
+fi
+
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/addSdncKeyStore.sh b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/addSdncKeyStore.sh
new file mode 100755
index 0000000..c6f0e5a
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/addSdncKeyStore.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+SDNC_HOME=${SDNC_HOME:-/opt/onap/sdnc}
+
+keyStoreFile=${SDNC_HOME}/data/stores/sdnc.p12
+
+if [ ! -f ${keyStoreFile} ]
+then
+  keytool -genkeypair -dname "CN=SDNC, OU=ONAP, O=ONAP, L=, S=, C=" -alias sdncKey -keyalg RSA -keysize 1024 -keystore $keyStoreFile -storepass adminadmin -storetype pkcs12
+fi
+
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/addVnis.sh b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/addVnis.sh
new file mode 100755
index 0000000..a8b50eb
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/addVnis.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+MYSQL_USER=${MYSQL_USER:-sdnctl}
+MYSQL_PWD=${MYSQL_PWD:-gamma}
+MYSQL_DB=${MYSQL_DB:-sdnctl}
+MYSQL_HOST=${MYSQL_HOST:-dbhost}
+
+start=$1
+
+if [ $# -eq 1 ]
+then
+  mysql --user=${MYSQL_USER} --password=${MYSQL_PWD} --host ${MYSQL_HOST} ${MYSQL_DB} <<EOF
+INSERT INTO VLAN_ID_POOL (purpose, status, vlan_id) VALUES('VNI', 'AVAILABLE', $start);
+EOF
+elif [ $# -eq 2 ]
+then
+   stop=$2
+   vlanid=$start
+   
+   while [ $vlanid -le $stop ]
+   do
+   mysql --user=${MYSQL_USER} --password=${MYSQL_PWD}  --host ${MYSQL_HOST} ${MYSQL_DB} <<EOF
+INSERT INTO VLAN_ID_POOL (purpose, status, vlan_id) VALUES( 'VNI', 'AVAILABLE', $vlanid);
+EOF
+vlanid=$(( vlanid+1 ))
+done
+else
+  echo "Usage: $0 start [stop]"
+  exit 1
+fi
+
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/backupMdsal.sh b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/backupMdsal.sh
new file mode 100644
index 0000000..3aefec2
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/backupMdsal.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+cat > /tmp/daexim-export.json <<-END
+{ 
+   "input": { 
+     "data-export-import:run-at": 5 
+   } 
+}
+END
+
+curl -v -H "Content-Type: application/json" -X POST -uadmin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U -d@/tmp/daexim-export.json http://localhost:8282/restconf/operations/data-export-import:schedule-export
+
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/configure_geo_cluster.sh b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/configure_geo_cluster.sh
new file mode 100755
index 0000000..5fbe053
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/configure_geo_cluster.sh
@@ -0,0 +1,192 @@
+#!/bin/bash
+
+if [ $# -ne 3 ]; then
+   echo "Usage: configure_geo_cluster.sh <member_index{1..6}> <primary_node> <secondary_node>"
+   exit 1
+fi
+
+MEMBER_INDEX=$1
+PRIMARY_NODE=$2
+SECONDARY_NODE=$3
+CONF_DIR=/opt/opendaylight/current/configuration/initial
+AKKACONF=${CONF_DIR}/akka.conf
+MODULESCONF=${CONF_DIR}/modules.conf
+MODULESHARDSCONF=${CONF_DIR}/module-shards.conf
+MY_IP=$(hostname -i)
+CLUSTER_MASTER=$PRIMARY_NODE
+PORT_NUMBER=1
+
+case $MEMBER_INDEX in
+[1])
+   PORT_NUMBER=4
+   ;;
+[2])
+   PORT_NUMBER=5
+   ;;
+[3])
+   PORT_NUMBER=6
+   ;;
+[4])
+   PORT_NUMBER=4
+   CLUSTER_MASTER=$SECONDARY_NODE
+   ;;
+[5])
+   PORT_NUMBER=5
+   CLUSTER_MASTER=$SECONDARY_NODE
+   ;;
+[6])
+   PORT_NUMBER=6
+   CLUSTER_MASTER=$SECONDARY_NODE
+   ;;
+*)
+   echo "Usage: configure_geo_cluster.sh <primary_node{1..6}> <secondary_node>"
+   exit 1
+   ;;
+esac
+
+cat > $MODULESCONF << 'endModules'
+modules = [
+
+        {
+                name = "inventory"
+                namespace = "urn:opendaylight:inventory"
+                shard-strategy = "module"
+        },
+        {
+                name = "topology"
+                namespace = "urn:TBD:params:xml:ns:yang:network-topology"
+                shard-strategy = "module"
+        },
+        {
+                name = "toaster"
+                namespace = "http://netconfcentral.org/ns/toaster"
+                shard-strategy = "module"
+        }
+] 
+endModules
+
+cat > $MODULESHARDSCONF << 'moduleShards'
+module-shards = [
+        {
+                name = "default"
+                shards = [
+                        {
+                                name = "default"
+                                replicas = ["member-1",
+                                "member-2",
+                                "member-3",
+                                "member-4",
+                                "member-5",
+                                "member-6"]
+                        }
+                ]
+        },
+        {
+                name = "inventory"
+                shards = [
+                        {
+                                name="inventory"
+                                replicas = ["member-1",
+                                "member-2",
+                                "member-3",
+                                "member-4",
+                                "member-5",
+                                "member-6"]
+                        }
+                ]
+        },
+        {
+                name = "topology"
+                shards = [
+                        {
+                                name="topology"
+                                replicas = ["member-1",
+                                "member-2",
+                                "member-3",
+                                "member-4",
+                                "member-5",
+                                "member-6"]
+                        }
+                ]
+        },
+        {
+                name = "toaster"
+                shards = [
+                        {
+                                name="toaster"
+                                replicas = ["member-1",
+                                "member-2",
+                                "member-3",
+                                "member-4",
+                                "member-5",
+                                "member-6"]
+                        }
+                ]
+        }
+]
+moduleShards
+
+cat > $AKKACONF << 'akkaFile'
+
+odl-cluster-data {
+  akka {
+    remote {
+      artery {
+        enabled = off
+        canonical.hostname = CLUSTER_MASTER 
+        canonical.port = 3026PORT_NUMBER
+      }
+      netty.tcp {
+        bind-hostname = MY_IP
+        bind-port = 2550
+
+        hostname = CLUSTER_MASTER
+        port = 3026PORT_NUMBER
+      }
+      # when under load we might trip a false positive on the failure detector
+      # transport-failure-detector {
+        # heartbeat-interval = 4 s
+        # acceptable-heartbeat-pause = 16s
+      # }
+    }
+
+    cluster {
+      # Remove ".tcp" when using artery.
+      seed-nodes = ["akka.tcp://opendaylight-cluster-data@PRIMARY_NODE:30264",
+                                "akka.tcp://opendaylight-cluster-data@PRIMARY_NODE:30265",
+                                "akka.tcp://opendaylight-cluster-data@PRIMARY_NODE:30266",
+                                "akka.tcp://opendaylight-cluster-data@SECONDARY_NODE:30264",
+                                "akka.tcp://opendaylight-cluster-data@SECONDARY_NODE:30265",
+                                "akka.tcp://opendaylight-cluster-data@SECONDARY_NODE:30266"]
+
+      roles = ["member-MEMBER_INDEX"]
+
+    }
+
+    persistence {
+      # By default the snapshots/journal directories live in KARAF_HOME. You can choose to put it somewhere else by
+      # modifying the following two properties. The directory location specified may be a relative or absolute path.
+      # The relative path is always relative to KARAF_HOME.
+
+      # snapshot-store.local.dir = "target/snapshots"
+      # journal.leveldb.dir = "target/journal"
+
+      journal {
+        leveldb {
+          # Set native = off to use a Java-only implementation of leveldb.
+          # Note that the Java-only version is not currently considered by Akka to be production quality.
+
+          # native = off
+        }
+      }
+    }
+  }
+}
+akkaFile
+sed -i "s/CLUSTER_MASTER/${CLUSTER_MASTER}/" $AKKACONF
+sed -i "s/PORT_NUMBER/${PORT_NUMBER}/" $AKKACONF
+sed -i "s/MY_IP/${MY_IP}/" $AKKACONF
+sed -i "s/PRIMARY_NODE/${PRIMARY_NODE}/" $AKKACONF
+sed -i "s/SECONDARY_NODE/${SECONDARY_NODE}/" $AKKACONF
+sed -i "s/MEMBER_INDEX/${MEMBER_INDEX}/" $AKKACONF
+cat $AKKACONF
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/installCerts.py b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/installCerts.py
new file mode 100644
index 0000000..17ada4c
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/installCerts.py
@@ -0,0 +1,202 @@
+# ============LICENSE_START=======================================================
+#  Copyright (C) 2019 Nordix Foundation.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+#
+
+
+# coding=utf-8
+import os
+import httplib
+import base64
+import time
+import zipfile
+import shutil
+
+Path = "/tmp"
+
+zipFileList = []
+
+username = os.environ['ODL_ADMIN_USERNAME']
+password = os.environ['ODL_ADMIN_PASSWORD']
+TIMEOUT=1000
+INTERVAL=30
+timePassed=0
+
+postKeystore= "/restconf/operations/netconf-keystore:add-keystore-entry"
+postPrivateKey= "/restconf/operations/netconf-keystore:add-private-key"
+postTrustedCertificate= "/restconf/operations/netconf-keystore:add-trusted-certificate"
+
+
+headers = {'Authorization':'Basic %s' % base64.b64encode(username + ":" + password),
+           'X-FromAppId': 'csit-sdnc',
+           'X-TransactionId': 'csit-sdnc',
+           'Accept':"application/json",
+           'Content-type':"application/json"}
+
+def readFile(folder, file):
+    key = open(Path + "/" + folder + "/" + file, "r")
+    fileRead = key.read()
+    key.close()
+    fileRead = "\n".join(fileRead.splitlines()[1:-1])
+    return fileRead
+
+def readTrustedCertificate(folder, file):
+    listCert = list()
+    caPem = ""
+    startCa = False
+    key = open(Path + "/" + folder + "/" + file, "r")
+    lines = key.readlines()
+    for line in lines:
+        if not "BEGIN CERTIFICATE" in line and not "END CERTIFICATE" in line and startCa:
+            caPem += line
+        elif "BEGIN CERTIFICATE" in line:
+            startCa = True
+        elif "END CERTIFICATE" in line:
+            startCa = False
+            listCert.append(caPem)
+            caPem = ""
+    return listCert
+
+def makeKeystoreKey(clientKey, count):
+    odl_private_key="ODL_private_key_%d" %count
+
+    json_keystore_key='{{\"input\": {{ \"key-credential\": {{\"key-id\": \"{odl_private_key}\", \"private-key\" : ' \
+                      '\"{clientKey}\",\"passphrase\" : \"\"}}}}}}'.format(
+        odl_private_key=odl_private_key,
+        clientKey=clientKey)
+
+    return json_keystore_key
+
+
+
+def makePrivateKey(clientKey, clientCrt, certList, count):
+    caPem = ""
+    for cert in certList:
+        caPem += '\"%s\",' % cert
+
+    caPem = caPem.rsplit(',', 1)[0]
+    odl_private_key="ODL_private_key_%d" %count
+
+    json_private_key='{{\"input\": {{ \"private-key\":{{\"name\": \"{odl_private_key}\", \"data\" : ' \
+                     '\"{clientKey}\",\"certificate-chain\":[\"{clientCrt}\",{caPem}]}}}}}}'.format(
+        odl_private_key=odl_private_key,
+        clientKey=clientKey,
+        clientCrt=clientCrt,
+        caPem=caPem)
+
+    return json_private_key
+
+def makeTrustedCertificate(certList, count):
+    number = 0
+    json_cert_format = ""
+    for cert in certList:
+        cert_name = "xNF_CA_certificate_%d_%d" %(count, number)
+        json_cert_format += '{{\"name\": \"{trusted_name}\",\"certificate\":\"{cert}\"}},\n'.format(
+            trusted_name=cert_name,
+            cert=cert.strip())
+        number += 1
+
+    json_cert_format = json_cert_format.rsplit(',', 1)[0]
+    json_trusted_cert='{{\"input\": {{ \"trusted-certificate\": [{certificates}]}}}}'.format(
+        certificates=json_cert_format)
+    return json_trusted_cert
+
+
+def makeRestconfPost(conn, json_file, apiCall):
+    req = conn.request("POST", apiCall, json_file, headers=headers)
+    res = conn.getresponse()
+    res.read()
+    if res.status != 200:
+        print "Error here, response back wasnt 200: Response was : %d , %s" % (res.status, res.reason)
+    else:
+        print res.status, res.reason
+
+def extractZipFiles(zipFileList, count):
+    for zipFolder in zipFileList:
+        with zipfile.ZipFile(Path + "/" + zipFolder.strip(),"r") as zip_ref:
+            zip_ref.extractall(Path)
+        folder = zipFolder.rsplit(".")[0]
+        processFiles(folder, count)
+
+def processFiles(folder, count):
+    conn = httplib.HTTPConnection("localhost",8181)
+    for file in os.listdir(Path + "/" + folder):
+        if os.path.isfile(Path + "/" + folder + "/" + file.strip()):
+            if ".key" in file:
+                clientKey = readFile(folder, file.strip())
+            elif "trustedCertificate" in file:
+                certList = readTrustedCertificate(folder, file.strip())
+            elif ".crt" in file:
+                clientCrt = readFile(folder, file.strip())
+        else:
+            print "Could not find file %s" % file.strip()
+    shutil.rmtree(Path + "/" + folder)
+    json_keystore_key = makeKeystoreKey(clientKey, count)
+    json_private_key = makePrivateKey(clientKey, clientCrt, certList, count)
+    json_trusted_cert = makeTrustedCertificate(certList, count)
+
+    makeRestconfPost(conn, json_keystore_key, postKeystore)
+    makeRestconfPost(conn, json_private_key, postPrivateKey)
+    makeRestconfPost(conn, json_trusted_cert, postTrustedCertificate)
+
+def makeHealthcheckCall(headers, timePassed):
+    connected = False
+    # WAIT 10 minutes maximum and test every 30 seconds if HealthCheck API is returning 200
+    while timePassed < TIMEOUT:
+        try:
+            conn = httplib.HTTPConnection("localhost",8181)
+            req = conn.request("POST", "/restconf/operations/SLI-API:healthcheck",headers=headers)
+            res = conn.getresponse()
+            res.read()
+            if res.status == 200:
+                print ("Healthcheck Passed in %d seconds." %timePassed)
+                connected = True
+                break
+            else:
+                print ("Sleep: %d seconds before testing if Healthcheck worked. Total wait time up now is: %d seconds. Timeout is: %d seconds" %(INTERVAL, timePassed, TIMEOUT))
+        except:
+            print ("Cannot execute REST call. Sleep: %d seconds before testing if Healthcheck worked. Total wait time up now is: %d seconds. Timeout is: %d seconds" %(INTERVAL, timePassed, TIMEOUT))
+        timePassed = timeIncrement(timePassed)
+
+    if timePassed > TIMEOUT:
+        print ("TIME OUT: Healthcheck not passed in  %d seconds... Could cause problems for testing activities..." %TIMEOUT)
+    return connected
+
+
+def timeIncrement(timePassed):
+    time.sleep(INTERVAL)
+    timePassed = timePassed + INTERVAL
+    return timePassed
+
+def readCertProperties():
+    connected = makeHealthcheckCall(headers, timePassed)
+
+    if connected:
+        count = 0
+        if os.path.isfile(Path + "/certs.properties"):
+            with open(Path + "/certs.properties", "r") as f:
+                for line in f:
+                    if not "*****" in line:
+                        zipFileList.append(line)
+                    else:
+                        extractZipFiles(zipFileList, count)
+                        count += 1
+                        del zipFileList[:]
+        else:
+            print "Error: File not found in path entered"
+
+readCertProperties()
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/installFeatures.sh b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/installFeatures.sh
new file mode 100755
index 0000000..1fe1081
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/installFeatures.sh
@@ -0,0 +1,73 @@
+#!/bin/bash
+
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 							reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+ODL_HOME=${ODL_HOME:-/opt/opendaylight/current}
+ODL_ADMIN_PASSWORD=${ODL_ADMIN_PASSWORD:-Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U}
+SDNC_HOME=${SDNC_HOME:-/opt/onap/sdnc}
+CCSDK_HOME=${CCSDK_HOME:-/opt/onap/ccsdk}
+CCSDK_FEATURE_DIR=${CCSDK_FEATURE_DIR:-${CCSDK_HOME}/features}
+SDNC_FEATURE_DIR=${SDNC_FEATURE_DIR:-${SDNC_HOME}/features}
+
+CCSDK_EXTRAS=" \
+   ansible-adapter \
+   lcm \
+   netbox-client"
+
+
+
+SDNC_NORTHBOUND_FEATURES=" \
+  generic-resource-api \
+  vnfapi \
+  vnftools"
+
+
+SDNC_NORTHBOUND_VERSION=${SDNC_NORTHBOUND_VERSION:-1.3.1-SNAPSHOT}
+
+# Install CCSDK features
+${CCSDK_HOME}/bin/installCcsdkFeatures.sh
+
+# Install CCSDK extras, used by SDNC but not APP-C
+echo "Installing CCSDK extras"
+for feature in ${CCSDK_EXTRAS}
+do
+	if [ -f ${CCSDK_FEATURE_DIR}/ccsdk-${feature}/install-feature.sh ]
+	then
+		${CCSDK_FEATURE_DIR}/ccsdk-${feature}/install-feature.sh
+    else
+    	     echo "No installer found for ${feature}"
+    fi
+done
+
+
+echo "Installing SDN-C northbound"
+for feature in ${SDNC_NORTHBOUND_FEATURES}
+do
+  if [ -f ${SDNC_FEATURE_DIR}/sdnc-${feature}/install-feature.sh ]
+  then
+    ${SDNC_FEATURE_DIR}/sdnc-${feature}/install-feature.sh
+  else
+    echo "No installer found for feature sdnc-${feature}"
+  fi
+done
+
+
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/installSdncDb.sh b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/installSdncDb.sh
new file mode 100755
index 0000000..1a40328
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/installSdncDb.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 							reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+SDNC_HOME=${SDNC_HOME:-/opt/onap/sdnc}
+MYSQL_PASSWD=${MYSQL_PASSWD:-openECOMP1.0}
+
+SDNC_DB_USER=${SDNC_DB_USER:-sdnctl}
+SDNC_DB_PASSWD=${SDNC_DB_PASSWD:-gamma}
+SDNC_DB_DATABASE=${SDN_DB_DATABASE:-sdnctl}
+
+
+# Create tablespace and user account
+mysql -h dbhost -u root -p${MYSQL_PASSWD} mysql <<-END
+CREATE DATABASE ${SDNC_DB_DATABASE};
+CREATE USER '${SDNC_DB_USER}'@'localhost' IDENTIFIED BY '${SDNC_DB_PASSWD}';
+CREATE USER '${SDNC_DB_USER}'@'%' IDENTIFIED BY '${SDNC_DB_PASSWD}';
+GRANT ALL PRIVILEGES ON ${SDNC_DB_DATABASE}.* TO '${SDNC_DB_USER}'@'localhost' WITH GRANT OPTION;
+GRANT ALL PRIVILEGES ON ${SDNC_DB_DATABASE}.* TO '${SDNC_DB_USER}'@'%' WITH GRANT OPTION;
+commit;
+END
+
+# load schema
+if [ -f ${SDNC_HOME}/data/sdnctl.dump ]
+then
+  echo "Installing ${SDNC_HOME}/data/sdnctl.dump"
+  mysql -h dbhost -u root -p${MYSQL_PASSWD} sdnctl < ${SDNC_HOME}/data/sdnctl.dump
+fi
+
+for datafile in ${SDNC_HOME}/data/*.data.dump
+do
+  echo "Installing ${datafile}"
+  mysql -h dbhost -u root -p${MYSQL_PASSWD} sdnctl < $datafile
+done
+
+# Create VNIs 100-199
+${SDNC_HOME}/bin/addVnis.sh 100 199
+
+# Create default ip address pool for VGW
+${SDNC_HOME}/bin/addIpAddresses.sh VGW 10.5.0 22 250
+
+# Drop FK_NETWORK_MODEL foreign key as workaround for SDNC-291.
+${SDNC_HOME}/bin/rmForeignKey.sh NETWORK_MODEL FK_NETWORK_MODEL
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/installZips.sh b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/installZips.sh
new file mode 100644
index 0000000..e8789be
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/installZips.sh
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 							reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+if [ -z "$SETTINGS_FILE" -a -z "$GLOBAL_SETTINGS_FILE" -a -s "$HOME"/.m2/settings.xml ]
+then
+  DEFAULT_MAVEN_SETTINGS=${HOME}/.m2/settings.xml
+  SETTINGS_FILE=${SETTINGS_FILE:-${DEFAULT_MAVEN_SETTINGS}}
+  GLOBAL_SETTINGS_FILE=${GLOBAL_SETTINGS_FILE:-${DEFAULT_MAVEN_SETTINGS}}
+fi
+
+SDNC_HOME=${SDNC_HOME:-/opt/onap/sdnc}
+
+targetDir=${1:-${SDNC_HOME}}
+featureDir=${targetDir}/features
+
+
+SDNC_NORTHBOUND_FEATURES=" \
+  generic-resource-api \
+  vnfapi \
+  vnftools"
+
+
+
+SDNC_NORTHBOUND_VERSION=${SDNC_NORTHBOUND_VERSION:-1.2.0}
+SDNC_OAM_VERSION=${SDNC_OAM_VERSION:-1.2.0}
+
+if [ ! -d ${targetDir} ]
+then
+  mkdir -p ${targetDir}
+fi
+
+if [ ! -d ${featureDir} ]
+then
+  mkdir -p ${featureDir}
+fi
+
+cwd=$(pwd)
+
+mavenOpts=${2:-"-s ${SETTINGS_FILE} -gs ${GLOBAL_SETTINGS_FILE}"}
+cd /tmp
+
+echo "Installing SDN-C core version ${SDNC_CORE_VERSION}"
+for feature in ${SDNC_CORE_FEATURES}
+do
+ rm -f /tmp/${feature}-installer*.zip
+mvn -U ${mavenOpts} org.apache.maven.plugins:maven-dependency-plugin:2.9:copy -Dartifact=org.onap.sdnc.core:${feature}-installer:${SDNC_CORE_VERSION}:zip -DoutputDirectory=/tmp -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.ssl.insecure=true
+ unzip -d ${featureDir} /tmp/${feature}-installer*zip
+done
+
+echo "Installing SDN-C adaptors version ${SDNC_ADAPTORS_VERSION}"
+for feature in ${SDNC_ADAPTORS_FEATURES}
+do
+ rm -f /tmp/${feature}-installer*.zip
+mvn -U ${mavenOpts} org.apache.maven.plugins:maven-dependency-plugin:2.9:copy -Dartifact=org.onap.sdnc.adaptors:${feature}-installer:${SDNC_ADAPTORS_VERSION}:zip -DoutputDirectory=/tmp -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.ssl.insecure=true
+ unzip -d ${featureDir} /tmp/${feature}-installer*zip
+done
+
+echo "Installing SDN-C northbound version ${SDNC_NORTHBOUND_VERSION}"
+for feature in ${SDNC_NORTHBOUND_FEATURES}
+do
+ rm -f /tmp/${feature}-installer*.zip
+mvn -U ${mavenOpts} org.apache.maven.plugins:maven-dependency-plugin:2.9:copy -Dartifact=org.onap.sdnc.northbound:${feature}-installer:${SDNC_NORTHBOUND_VERSION}:zip -DoutputDirectory=/tmp -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.ssl.insecure=true
+ unzip -d ${featureDir} /tmp/${feature}-installer*zip
+done
+
+echo "Installing SDN-C plugins version ${SDNC_PLUGINS_VERSION}"
+for feature in ${SDNC_PLUGINS_FEATURES}
+do
+ rm -f /tmp/${feature}-installer*.zip
+mvn -U ${mavenOpts} org.apache.maven.plugins:maven-dependency-plugin:2.9:copy -Dartifact=org.onap.sdnc.plugins:${feature}-installer:${SDNC_PLUGINS_VERSION}:zip -DoutputDirectory=/tmp -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.ssl.insecure=true
+ unzip -d ${featureDir} /tmp/${feature}-installer*zip
+done
+
+
+
+echo "Installing platform-logic"
+rm -f /tmp/platform-logic-installer*.zip
+mvn -U ${mavenOpts} org.apache.maven.plugins:maven-dependency-plugin:2.9:copy -Dartifact=org.onap.sdnc.oam:platform-logic-installer:${SDNC_OAM_VERSION}:zip -DoutputDirectory=/tmp -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.ssl.insecure=true
+unzip -d ${targetDir} /tmp/platform-logic-installer*.zip
+
+find ${targetDir} -name '*.sh' -exec chmod +x '{}' \;
+
+cd $cwd
+
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/restoreMdsal.sh b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/restoreMdsal.sh
new file mode 100644
index 0000000..1f73d77
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/restoreMdsal.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+cat > /tmp/daexim-import.json <<-END
+{ 
+   "input" : { 
+     "check-models" : true, 
+     "clear-stores" : "all" 
+   } 
+}
+END
+
+curl -v -H "Content-Type: application/json" -X POST -uadmin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U -d@/tmp/daexim-import.json http://localhost:8080/restconf/operations/data-export-import:immediate-import
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/rmForeignKey.sh b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/rmForeignKey.sh
new file mode 100644
index 0000000..40914fa
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/rmForeignKey.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+MYSQL_USER=${MYSQL_USER:-sdnctl}
+MYSQL_PWD=${MYSQL_PWD:-gamma}
+MYSQL_DB=${MYSQL_DB:-sdnctl}
+MYSQL_HOST=${MYSQL_HOST:-dbhost}
+
+
+if [ $# -ne 2 ]
+then
+  echo "Usage: $0 table foreign-key"
+  exit 1
+fi
+
+mysql --user=${MYSQL_USER} --password=${MYSQL_PWD} --host ${MYSQL_HOST} ${MYSQL_DB} <<EOF
+ALTER TABLE $1
+DROP FOREIGN KEY $2;
+EOF
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/sdnc.cluster b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/sdnc.cluster
new file mode 100755
index 0000000..4f565ed
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/sdnc.cluster
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+OOM_HOME=${OOM_HOME:-$HOME}
+
+if ! [ "$(command -v jq)" ]; then
+  echo "Error: jq is not installed."
+  echo "use: sudo apt install jq"
+  exit 1
+fi 
+
+IS_PRIMARY_CLUSTER=`./sdnc.isPrimaryCluster`
+
+case $IS_PRIMARY_CLUSTER in
+true)
+   MEMBER_NUMBER=1
+   ;;
+false)
+   MEMBER_NUMBER=4
+   ;;
+*)
+  echo "Error: isPrimaryODLCluster not defined in ${OOM_HOME}/oom/kubernetes/sdnc/values.yaml."
+  exit 1
+  ;;
+esac
+
+for pod_number in {0..2}
+do
+   curl  "http://localhost:3026$((${pod_number} + 1))" > /dev/null 2>&1
+   if [ "$?" = "7" ]; then
+      continue 
+   fi
+
+   VOTING_RESULT=`curl -u admin:admin -H "Content-Type: application/json" -H "Accept: application/json" -X GET http://localhost:3026$((${pod_number} + 1))/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-$((${MEMBER_NUMBER} + ${pod_number}))-shard-default-config,type=DistributedConfigDatastore 2>/dev/null | jq '.value.Voting'` 
+
+   case $VOTING_RESULT in
+   true)
+      echo "active"
+      exit 0
+      ;;
+   false)
+      echo "standby"
+      exit 0
+      ;;
+   *) 
+     echo "Error: Voting status could not be determined."
+     exit 1
+     ;;
+   esac
+done
+
+echo "Error: Voting status could not be determined."
+exit 1
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/sdnc.failover b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/sdnc.failover
new file mode 100755
index 0000000..b002ae6
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/sdnc.failover
@@ -0,0 +1,65 @@
+#!/usr/bin/perl -s

+use strict;

+

+my $keyWord_standby = "standby";

+my $keyWord_active = "active";

+my $keyWord_true = "true";

+my $keyWord_false = "false";

+my $keyWord_success = "success";

+my $keyWord_failure = "failure";

+my $file_cluster = "sdnc.cluster";

+my $file_switchVoting = "switchVoting.sh";

+my $file_isPrimaryCluster = "sdnc.isPrimaryCluster";

+

+if ((!(-e $file_cluster)) || (!(-e $file_switchVoting))|| (!(-e $file_isPrimaryCluster))) {

+  # file not exist.

+  print qq|$keyWord_failure\n|;

+  exit 1;

+}

+

+my $roleRes = qx("./$file_isPrimaryCluster");

+my $clusterRes = qx("./$file_cluster");

+

+if ( index ($clusterRes, $keyWord_standby) != -1) {

+	# We are at standby side

+	if ( index ($roleRes, $keyWord_false) != -1) {

+	   # We are at Secondary cluster

+	   sub_activate_secondary();

+    } elsif ( index ($roleRes, $keyWord_true) != -1) {

+       # We are at Primary cluster

+	   sub_activate_primary();

+    } else {

+      # Error.

+      print qq|$keyWord_failure\n|;

+      exit 1;   	

+	}	

+} elsif ( index ($clusterRes, $keyWord_active) != -1) {

+    # We are at active side	

+	if ( index ($roleRes, $keyWord_false) != -1) {

+	   # We are at Secondary cluster

+	   sub_activate_primary();

+    } elsif ( index ($roleRes, $keyWord_true) != -1)  {

+       # We are at Primary cluster

+	   sub_activate_secondary();

+    } else {

+      # Error.

+      print qq|$keyWord_failure\n|;

+      exit 1;   	

+	}	

+} else {

+   # Error.

+  print qq|$keyWord_failure\n|;

+  exit 1;   

+}

+

+sub sub_activate_primary {

+		#Switching voting in Primary cluster 

+        system("./$file_switchVoting primary");

+	    print qq|$keyWord_success\n|;

+}

+

+sub sub_activate_secondary {

+		#Switching voting in secondary cluster

+        system("./$file_switchVoting secondary");

+	    print qq|$keyWord_success\n|;

+}

diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/sdnc.isPrimaryCluster b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/sdnc.isPrimaryCluster
new file mode 100755
index 0000000..c14f717
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/sdnc.isPrimaryCluster
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+OOM_HOME=${OOM_HOME:-$HOME}
+
+IS_PRIMARY_CLUSTER=`awk '/isPrimaryODLCluster/ {print $2}' ${OOM_HOME}/oom/kubernetes/sdnc/values.yaml`
+
+if [ "$?" -eq "2" ]; then
+      echo "Make sure you are ubuntu user." >&2
+fi
+
+case $IS_PRIMARY_CLUSTER in 
+true|false)
+	echo $IS_PRIMARY_CLUSTER
+	;;
+*)
+	echo "NOT CLUSTERED"
+	exit 1
+	;;
+esac
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/startODL.sh b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/startODL.sh
new file mode 100755
index 0000000..f6fa43a
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/startODL.sh
@@ -0,0 +1,177 @@
+#!/bin/bash
+
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 							reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+# Append features to karaf boot feature configuration
+# $1 additional feature to be added
+# $2 repositories to be added (optional)
+function addToFeatureBoot() {
+  CFG=$ODL_HOME/etc/org.apache.karaf.features.cfg
+  ORIG=$CFG.orig
+  if [ -n "$2" ] ; then
+    echo "Add repository: $2"
+    mv $CFG $ORIG
+    cat $ORIG | sed -e "\|featuresRepositories|s|$|,$2|" > $CFG
+  fi
+  echo "Add boot feature: $1"
+  mv $CFG $ORIG
+  cat $ORIG | sed -e "\|featuresBoot *=|s|$|,$1|" > $CFG
+}
+
+# Append features to karaf boot feature configuration
+# $1 search pattern
+# $2 replacement
+function replaceFeatureBoot() {
+  CFG=$ODL_HOME/etc/org.apache.karaf.features.cfg
+  ORIG=$CFG.orig
+  echo "Replace boot feature $1 with: $2"
+  sed -i "/featuresBoot/ s/$1/$2/g" $CFG
+}
+
+function install_sdnrwt_features() {
+  addToFeatureBoot "$SDNRWT_BOOTFEATURES" $SDNRWT_REPOSITORY
+}
+
+function install_sdnr_northbound_features() {
+  addToFeatureBoot "$SDNR_NORTHBOUND_BOOTFEATURES" $SDNR_NORTHBOUND_REPOSITORY
+}
+
+function enable_odl_cluster(){
+  if [ -z $SDNC_REPLICAS ]; then
+     echo "SDNC_REPLICAS is not configured in Env field"
+     exit
+  fi
+
+  echo "Installing Opendaylight cluster features"
+  replaceFeatureBoot odl-netconf-topology odl-netconf-clustered-topology
+  replaceFeatureBoot odl-mdsal-all odl-mdsal-all,odl-mdsal-clustering
+  addToFeatureBoot odl-jolokia
+  #${ODL_HOME}/bin/client feature:install odl-mdsal-clustering
+  #${ODL_HOME}/bin/client feature:install odl-jolokia
+
+  echo "Update cluster information statically"
+  hm=$(hostname)
+  echo "Get current Hostname ${hm}"
+
+  node=($(echo ${hm} | tr '-' '\n'))
+  node_name=${node[0]}
+  node_index=${node[1]}
+
+  if [ -z $PEER_ODL_CLUSTER ]; then
+    echo "This is a local cluster"
+    node_list="${node_name}-0.sdnhost-cluster.onap.svc.cluster.local";
+
+    for ((i=1;i<${SDNC_REPLICAS};i++));
+    do
+      node_list="${node_list} ${node_name}-$i.sdnhost-cluster.onap.svc.cluster.local"
+    done
+    /opt/opendaylight/current/bin/configure_cluster.sh $((node_index+1)) ${node_list}
+  else
+    echo "This is a Geo cluster"
+
+    if $IS_PRIMARY_CLUSTER; then
+       PRIMARY_NODE=${MY_ODL_CLUSTER}
+       SECONDARY_NODE=${PEER_ODL_CLUSTER}
+    else
+       PRIMARY_NODE=${PEER_ODL_CLUSTER}
+       SECONDARY_NODE=${MY_ODL_CLUSTER}
+       member_offset=4
+    fi
+
+    node_list="${PRIMARY_NODE} ${SECONDARY_NODE}"
+    /opt/onap/sdnc/bin/configure_geo_cluster.sh $((node_index+member_offset)) ${node_list}
+  fi
+}
+
+
+# Install SDN-C platform components if not already installed and start container
+
+ODL_HOME=${ODL_HOME:-/opt/opendaylight/current}
+ODL_ADMIN_USERNAME=${ODL_ADMIN_USERNAME:-admin}
+ODL_ADMIN_PASSWORD=${ODL_ADMIN_PASSWORD:-Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U}
+SDNC_HOME=${SDNC_HOME:-/opt/onap/sdnc}
+SDNC_BIN=${SDNC_BIN:-/opt/onap/sdnc/bin}
+CCSDK_HOME=${CCSDK_HOME:-/opt/onap/ccsdk}
+SLEEP_TIME=${SLEEP_TIME:-120}
+MYSQL_PASSWD=${MYSQL_PASSWD:-openECOMP1.0}
+ENABLE_ODL_CLUSTER=${ENABLE_ODL_CLUSTER:-false}
+IS_PRIMARY_CLUSTER=${IS_PRIMARY_CLUSTER:-false}
+MY_ODL_CLUSTER=${MY_ODL_CLUSTER:-127.0.0.1}
+INSTALLED_DIR=${INSTALLED_FILE:-/opt/opendaylight/current/daexim}
+SDNRWT=${SDNRWT:-false}
+SDNRWT_BOOTFEATURES=${SDNRWT_BOOTFEATURES:-sdnr-wt-feature-aggregator}
+SDNR_NORTHBOUND=${SDNR_NORTHBOUND:-false}
+SDNR_NORTHBOUND_BOOTFEATURES=${SDNR_NORTHBOUND_BOOTFEATURES:-sdnr-northbound-all}
+export ODL_ADMIN_PASSWORD ODL_ADMIN_USERNAME
+
+echo "Settings:"
+echo "  ENABLE_ODL_CLUSTER=$ENABLE_ODL_CLUSTER"
+echo "  SDNC_REPLICAS=$SDNC_REPLICAS"
+echo "  SDNRWT=$SDNRWT"
+echo "  SDNR_NORTHBOUND=$SDNR_NORTHBOUND"
+
+
+#
+# Wait for database
+#
+echo "Waiting for mysql"
+until mysql -h dbhost -u root -p${MYSQL_PASSWD} mysql &> /dev/null
+do
+  printf "."
+  sleep 1
+done
+echo -e "\nmysql ready"
+
+if [ ! -d ${INSTALLED_DIR} ]
+then
+    mkdir -p ${INSTALLED_DIR}
+fi
+
+if [ ! -f ${INSTALLED_DIR}/.installed ]
+then
+	echo "Installing SDN-C database"
+	${SDNC_HOME}/bin/installSdncDb.sh
+	echo "Installing SDN-C keyStore"
+	${SDNC_HOME}/bin/addSdncKeyStore.sh
+
+	#${CCSDK_HOME}/bin/installOdlHostKey.sh
+
+	if [ -x ${SDNC_HOME}/svclogic/bin/install.sh ]
+	then
+		echo "Installing directed graphs"
+		${SDNC_HOME}/svclogic/bin/install.sh
+	fi
+
+    if $ENABLE_ODL_CLUSTER ; then enable_odl_cluster ; fi
+
+	if $SDNRWT ; then install_sdnrwt_features ; fi
+
+  if $SDNR_NORTHBOUND ; then install_sdnr_northbound_features ; fi
+
+	echo "Installed at `date`" > ${INSTALLED_DIR}/.installed
+fi
+
+cp /opt/opendaylight/current/certs/* /tmp
+
+nohup python ${SDNC_BIN}/installCerts.py &
+
+exec ${ODL_HOME}/bin/karaf server
diff --git a/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/switchVoting.sh b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/switchVoting.sh
new file mode 100755
index 0000000..05d1e0f
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/sdnc/src/main/scripts/switchVoting.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+function usage()
+{
+    echo usage: switchVoting.sh primary\|secondary
+    exit 1
+}
+
+if [ $# -ne 1 ]; then
+    usage
+fi
+
+partition=$1
+
+if [ "$partition" == "primary" ]; then
+   curl -u admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U -H "Content-Type: application/json" -H "Accept: application/json" -X POST http://localhost:30202/restconf/operations/cluster-admin:change-member-voting-states-for-all-shards -d '{ "input" : { "member-voting-state" : [ { "member-name" : "member-1", "voting":true}, { "member-name" : "member-2", "voting":true}, { "member-name" : "member-3", "voting":true},{ "member-name" : "member-4", "voting":false},{ "member-name" : "member-5", "voting":false},{ "member-name" : "member-6", "voting":false}] } }' > switch_voting_resp.json 2>/dev/null
+   echo "" >> switch_voting_resp.json
+   exit 0
+fi
+
+if [ "$partition" == "secondary" ]; then
+   curl -u admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U -H "Content-Type: application/json" -H "Accept: application/json" -X POST http://localhost:30202/restconf/operations/cluster-admin:change-member-voting-states-for-all-shards -d '{ "input" : { "member-voting-state" : [ { "member-name" : "member-1", "voting":false}, { "member-name" : "member-2", "voting":false}, { "member-name" : "member-3", "voting":false},{ "member-name" : "member-4", "voting":true},{ "member-name" : "member-5", "voting":true},{ "member-name" : "member-6", "voting":true}] } }' > switch_voting_resp.json 2>/dev/null
+   echo "" >> switch_voting_resp.json
+   exit 0
+fi
+
+usage
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/aaiclient.properties b/sdnc-a1-controller/oam/installation/src/main/properties/aaiclient.properties
new file mode 100755
index 0000000..6568383
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/aaiclient.properties
@@ -0,0 +1,82 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 						reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+#
+# Configuration file for A&AI Client
+#
+
+#
+# Certificate keystore and truststore
+#
+org.onap.ccsdk.sli.adaptors.aai.ssl.trust=/opt/onap/sdnc/data/stores/truststoreONAPall.jks
+org.onap.ccsdk.sli.adaptors.aai.ssl.trust.psswd=changeit
+org.onap.ccsdk.sli.adaptors.aai.host.certificate.ignore=true
+
+org.onap.ccsdk.sli.adaptors.aai.client.name=sdnc@sdnc.onap.org
+org.onap.ccsdk.sli.adaptors.aai.client.psswd=demo123456!
+
+org.onap.ccsdk.sli.adaptors.aai.application=openECOMP
+#
+# Configuration file for A&AI Client
+#
+org.onap.ccsdk.sli.adaptors.aai.uri=https://aai.api.simpledemo.openecomp.org:8443
+connection.timeout=60000
+read.timeout=60000
+
+# query
+org.onap.ccsdk.sli.adaptors.aai.path.query=/aai/v13/search/sdn-zone-query
+org.onap.ccsdk.sli.adaptors.aai.query.nodes=/aai/v13/search/nodes-query?search-node-type={node-type}&filter={entity-identifier}:EQUALS:{entity-name}
+org.onap.ccsdk.sli.adaptors.aai.query.generic=/aai/v13/search/generic-query?key={identifier}:{value}&start-node-type={start-node-type}&include=complex&depth=3
+
+# named query
+org.onap.ccsdk.sli.adaptors.aai.query.named=/aai/search/named-query
+
+#update
+org.onap.ccsdk.sli.adaptors.aai.update=/aai/v13/actions/update
+
+# UBB Notify
+org.onap.ccsdk.sli.adaptors.aai.path.notify=/aai/v13/actions/notify
+org.onap.ccsdk.sli.adaptors.aai.notify.selflink.fqdn=<%= @ubbUri %>/restconf/config/L3SDN-API:services/layer3-service-list/{service-instance-id}
+org.onap.ccsdk.sli.adaptors.aai.notify.selflink.avpn=<%= @ubbUri %>/restconf/config/L3AVPN-EVC-API:services/service-list/{service-instance-id}/service-data/avpn-logicalchannel-information
+
+# P-Interfaces
+org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterfaces=/aai/v13/cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces
+org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface=/aai/v13/cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}
+
+# VNF IMAGES
+org.onap.ccsdk.sli.adaptors.aai.path.vnf.images=/aai/v13/service-design-and-creation/vnf-images
+org.onap.ccsdk.sli.adaptors.aai.path.vnf.image=/aai/v13/service-design-and-creation/vnf-images/vnf-image/{att-uuid}
+org.onap.ccsdk.sli.adaptors.aai.path.vnf.image.query=/aai/v13/service-design-and-creation/vnf-images/vnf-image?application={application_model}&application-vendor={application_vendor}
+
+# service instance
+org.onap.ccsdk.sli.adaptors.aai.path.svcinst.query=/aai/v13/search/generic-query?key=service-instance.service-instance-id:{svc-instance-id}&start-node-type=service-instance&include=service-instance
+org.onap.ccsdk.sli.adaptors.aai.path.service.instance=/aai/v13/business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}
+
+# VNF IMAGES QUERY
+org.onap.ccsdk.sli.adaptors.aai.path.vnf.image.query=/aai/v13/service-design-and-creation/vnf-images/vnf-image?application={application_model}&application-vendor={application_vendor}
+
+#
+# Formatting
+#
+org.onap.ccsdk.sli.adaptors.aai.param.format=filter=%s:%s
+org.onap.ccsdk.sli.adaptors.aai.param.vnf_type=vnf-type
+org.onap.ccsdk.sli.adaptors.aai.param.physical.location.id=physical-location-id
+org.onap.ccsdk.sli.adaptors.aai.param.service.type=service-type
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/admportal.json b/sdnc-a1-controller/oam/installation/src/main/properties/admportal.json
new file mode 100755
index 0000000..38fd043
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/admportal.json
@@ -0,0 +1,68 @@
+{
+  "MainMenu": "gamma",
+  "dbConnLimit": "100",
+  "home": "/opt/admportal",
+  "sslEnabled": "false",
+  "nonSslPort": "8843",
+  "ConexusNetworkPort": "8443",
+  "AppNetworkPort": "8543",
+  "clusterPort": "8443",
+  "serviceHomingServiceType": "SDN-ETHERNET-INTERNET",
+  "passwordKey": "QtfJMKggVk",
+  "preloadImportDirectory": "C:/data/csv",
+  "clusterPrefixURL": "/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-",
+  "clusterMidURL": "-shard-",
+  "clusterSuffixURL": "-config,type=DistributedConfigDatastore",
+  "shards": [
+    "default",
+    "inventory",
+    "topology"
+  ],
+  "dbFabric": "false",
+  "ip-addresses": {
+    "lo": "127.0.0.1",
+    "eth0": "127.0.0.1",
+    "docker0": "172.17.0.1",
+    "virbr0": "192.168.122.1"
+  },
+  "svclogicPropertiesDb01": "/opt/onap/sdnc/data/properties/svclogic.properties.sdnctldb01",
+  "databases": [
+    "dbhost|sdnctldb01"
+  ],
+  "dbFabricServer": "localhost",
+  "dbFabricPort": "32275",
+  "dbFabricGroupId": "hagroup1",
+  "dbFabricUser": "admin",
+  "dbFabricPassword": "admin",
+  "dbFabricDB": "mysql",
+  "dbUser": "sdnctl",
+  "dbPassword": "gamma",
+  "dbName": "sdnctl",
+  "odlProtocol": "http",
+  "odlHost": "sdnhost",
+  "odlConexusHost": "sdnhost",
+  "odlPort": "8181",
+  "odlConexusPort": "8181",
+  "odlUser": "admin",
+  "odlPasswd": "admin",
+  "ConexusNetwork_sslCert": "/opt/onap/sdnc/data/stores/org.onap.sdnc.p12",
+  "ConexusNetwork_sslKey": "?w5&!M;8v1XF;:Xd;g*%S$IY",
+  "AppNetwork_sslCert": "",
+  "AppNetwork_sslKey": "",
+  "hostnameList": [
+    {
+      "hname": "localhost"
+    }
+  ],
+  "shard_list": [
+    {
+      "shard_name": "default"
+    },
+    {
+      "shard_name": "inventory"
+    },
+    {
+      "shard_name": "topology"
+    }
+  ]
+}
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/admportal.log4js.json b/sdnc-a1-controller/oam/installation/src/main/properties/admportal.log4js.json
new file mode 100755
index 0000000..0f41e56
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/admportal.log4js.json
@@ -0,0 +1,169 @@
+{ 
+  "appenders": [ 
+	{
+		"category": "accesslog",
+		"type"    : "file",
+		"absolute": true,
+		"filename": "/opt/admportal/logs/accesslog.log"
+	},
+	{
+        "category" : "usertrace",
+        "type"     : "file",
+		"absolute" : true,
+        "filename" : "/opt/admportal/logs/usertrace.log"
+    },
+    { 
+        "category": "tracelog", 
+        "type"    : "dateFile", 
+        "absolute": true, 
+        "filename": "/opt/admportal/logs/tracelog.log",
+        "pattern": "-yyyy-MM-dd", 
+        "alwaysIncludePattern": true, 
+        "backups"  : 14
+    },
+	{
+        "category" : "tunnel",
+        "type"     : "dateFile",
+        "absolute" : true,
+        "filename" : "/opt/admportal/logs/tunnel.log",
+        "pattern"  : "-yyyy-MM-dd",
+        "alwaysIncludePattern": true,
+        "backups"  : 14
+    },
+	{
+        "category" : "preload",
+        "type"     : "dateFile",
+        "absolute" : true,
+        "filename" : "/opt/admportal/logs/preload.log",
+        "pattern"  : "-yyyy-MM-dd",
+        "alwaysIncludePattern": true,
+        "backups"  : 14
+    },
+	{
+		"category" : "eipam",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/eipam.log",
+        "pattern"  : "-yyyy-MM-dd", 
+        "alwaysIncludePattern": true, 
+		"backups"  : 14
+	}, 
+	{
+        "category" : "instar",
+        "type"     : "dateFile",
+        "absolute" : true,
+        "filename" : "/opt/admportal/logs/instar.log",
+        "pattern"  : "-yyyy-MM-dd",
+        "alwaysIncludePattern": true,
+        "backups"  : 14
+    },
+	{
+		"category" : "app",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/app.log",
+        "pattern"  : "-yyyy-MM-dd", 
+        "alwaysIncludePattern": true, 
+		"backups"  : 14
+	}, 
+	{
+		"category" : "csp",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/csp.log",
+        "pattern"  : "-yyyy-MM-dd", 
+        "alwaysIncludePattern": true, 
+		"backups"  : 14
+	}, 
+	{
+		"category" : "db",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/db.log",
+		"pattern"  : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+		"backups"  : 14
+	}, 
+	{
+		"category" : "admin",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/admin.log",
+		"pattern"  : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+		"backups"  : 14
+	}, 
+	{
+		"category" : "resalloc",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/resalloc.log",
+		"pattern"  : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+		"backups"  : 14
+	}, 
+	{
+        "category" : "logs",
+        "type"     : "dateFile",
+        "absolute" : true,
+        "filename" : "/opt/admportal/logs/applogs.log",
+        "pattern"  : "-yyyy-MM-dd",
+        "alwaysIncludePattern": true,
+        "backups"  : 14
+    },
+	{
+		"category" : "sla",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/sla.log",
+		"pattern"  : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+		"backups"  : 14
+	}, 
+	{
+		"category" : "gamma",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/gamma.log",
+		"pattern"  : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+		"backups"  : 14
+	}, 
+	{
+		"category" : "odl",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/odl.log",
+		"pattern"  : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+		"backups"  : 14
+	}, 
+	{
+        "category" : "mobility",
+        "type"     : "dateFile",
+        "absolute" : true,
+        "filename" : "/opt/admportal/logs/mobility.log",
+        "pattern"  : "-yyyy-MM-dd",
+        "alwaysIncludePattern": true,
+        "backups"  : 14
+    },
+	{
+        "category" : "ucpe",
+        "type"     : "dateFile",
+        "absolute" : true,
+        "filename" : "/opt/admportal/logs/ucpe.log",
+        "pattern"  : "-yyyy-MM-dd",
+        "alwaysIncludePattern": true,
+        "backups"  : 14
+    },
+	{
+		"category" : "user",
+		"type"     : "dateFile",
+        "absolute" : true, 
+		"filename" : "/opt/admportal/logs/user.log",
+		"pattern"  : "-yyyy-MM-dd",
+		"alwaysIncludePattern": true,
+		"backups"  : 14
+	} 
+  ] 
+}
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/ansible-adapter.properties b/sdnc-a1-controller/oam/installation/src/main/properties/ansible-adapter.properties
new file mode 100644
index 0000000..761758b
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/ansible-adapter.properties
@@ -0,0 +1,48 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : APPC
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Copyright (C) 2017 Amdocs
+# =============================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+# ============LICENSE_END=========================================================
+###
+
+#
+# Default properties for the APP-C TestService Adapter
+#
+# -------------------------------------------------------------------------------------------------
+#
+# Define the name and path of any user-provided configuration (bootstrap) file that can be loaded
+# to supply configuration options
+org.onap.appc.bootstrap.file=appc.properties
+org.onap.appc.bootstrap.path=${user.home},/opt/opendaylight/current/properties
+
+appc.application.name=APPC
+
+#
+# Define the message resource bundle name to be loaded
+org.onap.appc.resources=org.onap/appc/i18n/MessageResources
+#
+# The name of the adapter.
+org.onap.appc.provider.adaptor.name=org.onap.appc.appc_ansible_adapter
+
+
+# Default truststore path and password
+org.onap.appc.adapter.ansible.trustStore=/opt/opendaylight/tls-client/mykeystore.js
+org.onap.appc.adapter.ansible.trustStore.trustPasswd=changeit
+org.onap.appc.adapter.ansible.clientType=TRUST_ALL
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/bath_config.csv b/sdnc-a1-controller/oam/installation/src/main/properties/bath_config.csv
new file mode 100644
index 0000000..b6db778
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/bath_config.csv
@@ -0,0 +1 @@
+Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==,Basic c2RuY0BzZG5jLm9uYXAub3JnOmRlbW8xMjM0NTYh,2050-03-03
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/blueprints-processor-adaptor.properties b/sdnc-a1-controller/oam/installation/src/main/properties/blueprints-processor-adaptor.properties
new file mode 100644
index 0000000..a3dcf67
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/blueprints-processor-adaptor.properties
@@ -0,0 +1,35 @@
+###
+# Copyright � 2017-2018 AT&T Intellectual Property.
+# Modifications Copyright � 2018 IBM.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+###
+#
+# Configuration file for SDNC Controller Module
+#
+
+org.onap.ccsdk.features.blueprints.adaptors.envtype=solo
+
+# Config Generator Microservices
+org.onap.ccsdk.features.blueprints.adaptors.modelservice.type=generic
+org.onap.ccsdk.features.blueprints.adaptors.modelservice.enable=true
+org.onap.ccsdk.features.blueprints.adaptors.modelservice.url=http://controller-blueprints:8080/api/v1/
+org.onap.ccsdk.features.blueprints.adaptors.modelservice.user=ccsdkapps
+org.onap.ccsdk.features.blueprints.adaptors.modelservice.passwd=ccsdkapps
+
+# Generic RESTCONF Adaptor
+org.onap.ccsdk.features.blueprints.adaptors.restconf.type=generic
+org.onap.ccsdk.features.blueprints.adaptors.restconf.enable=true
+org.onap.ccsdk.features.blueprints.adaptors.restconf.user=admin
+org.onap.ccsdk.features.blueprints.adaptors.restconf.passwd=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+org.onap.ccsdk.features.blueprints.adaptors.restconf.url=http://sdnc:8282/restconf/
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/data-migrator.properties b/sdnc-a1-controller/oam/installation/src/main/properties/data-migrator.properties
new file mode 100644
index 0000000..9bec60d
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/data-migrator.properties
@@ -0,0 +1,26 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : SDN-C
+# ================================================================================
+# Copyright (C) 2019 AMDOCS
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+org.onap.sdnc.datamigrator.source.host=http://10.53.234.213:30202
+org.onap.sdnc.datamigrator.source.user=admin
+org.onap.sdnc.datamigrator.source.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+org.onap.sdnc.datamigrator.target.host=http://10.53.234.215:30202
+org.onap.sdnc.datamigrator.target.user=admin
+org.onap.sdnc.datamigrator.target.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+org.onap.sdnc.datamigrator.data.path=/tmp
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/dblib.properties b/sdnc-a1-controller/oam/installation/src/main/properties/dblib.properties
new file mode 100644
index 0000000..9506ac8
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/dblib.properties
@@ -0,0 +1,38 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 						reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+# dblib.properrties
+org.onap.ccsdk.sli.dbtype=jdbc
+
+org.onap.ccsdk.sli.jdbc.hosts=sdnctldb01
+org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://dbhost:3306/sdnctl
+org.onap.ccsdk.sli.jdbc.driver=org.mariadb.jdbc.Driver
+org.onap.ccsdk.sli.jdbc.database=sdnctl
+org.onap.ccsdk.sli.jdbc.user=sdnctl
+org.onap.ccsdk.sli.jdbc.password=gamma
+org.onap.ccsdk.sli.jdbc.connection.name=sdnctldb01
+org.onap.ccsdk.sli.jdbc.connection.timeout=50
+org.onap.ccsdk.sli.jdbc.request.timeout=100
+org.onap.ccsdk.sli.jdbc.limit.init=10
+org.onap.ccsdk.sli.jdbc.limit.min=10
+org.onap.ccsdk.sli.jdbc.limit.max=20
+org.onap.dblib.connection.recovery=false
+
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/generic-resource-api-dg.properties b/sdnc-a1-controller/oam/installation/src/main/properties/generic-resource-api-dg.properties
new file mode 100644
index 0000000..48c510b
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/generic-resource-api-dg.properties
@@ -0,0 +1,77 @@
+restapi.templateDir=/opt/onap/sdnc/restapi/templates
+controller.url=http://localhost:8181
+controller.user=admin
+controller.pwd=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+honeycomb.url=http://{honeycomb-instance-ip}:8183
+honeycomb.user=admin
+honeycomb.pwd=admin
+restapi.trustStoreFileName=/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks
+restapi.trustStorePassword=adminadmin
+restapi.keyStoreFileName=/opt/onap/sdnc/data/stores/sdnc.p12
+restapi.keyStorePassword=adminadmin
+restapi.connection-oof-url=http://oof-osdf:8698/api/oof/v1/route
+naming.gen-name.url=http://neng-serv:8080
+naming.gen-name.user=ccsdkapps
+naming.gen-name.pwd=ccsdkapps
+so.user=InfraPortalClient
+so.pwd=password1$
+cds.url=http://cds-blueprints-processor-http:8080
+cds.user=ccsdkapps
+cds.pwd=ccsdkapps
+
+# Templates
+restapi.sz.templatefile=security-zone-allotted-resource.json
+restapi.cr.templatefile=contrail-route-allotted-resource.json
+restapi.brg.templatefile=brg-allotted-resource.json
+restapi.vpp.vxlan-tunnel.templatefile=vcpe-vxlan-tunnel.json
+restapi.vpp.bridge-domain.templatefile=vcpe-vpp-bridge-domain.json
+restapi.vpp.xconnect.templatefile=vcpe-l2-interface.json
+restapi.tx.templatefile=tunnelxconn-allotted-resource.json
+restapi.parentsvc.templatefile=parent-provided-allotted-resource.json
+restapi.network-ar.templatefile=network-provided-allotted-resources.json
+restapi.vnf-ar.templatefile=vnf-provided-allotted-resources.json
+restapi.services.templatefile=vcpe-services-service.json
+restapi.services.vnf.vfmodule.templatefile=vfmodule-vim-parameters.vgw.json
+restapi.sotn-attachment.templatefile=sotn-attachment-allotted-resource.json
+restapi.sdwan-attachment.templatefile=sdwan-attachment-allotted-resource.json
+restapi.oof-getpath.templatefile=oof-getpath.json
+restapi.naming.gen-name.templatefile=naming-ms-post-gen-name.json
+restapi.ss.pnf.templatefile=self-serve-pnf-assignments.json
+restapi.ss.vnf.templatefile=self-serve-vnf-assignments.json
+restapi.ss.vfmodule.templatefile=self-serve-vfmodule-assignments.json
+restapi.ss.mS.vlan.tag.assign.templatefile=self-serve-mS-vlan-tag-assignments.json
+restapi.ss.mS.vlan.tag.unassign.templatefile=self-serve-mS-vlan-tag-unassignments.json
+restapi.ss.mS.mac.address.assign.templatefile=self-serve-mS-mac-address-assign.json
+restapi.ss.mS.mac.address.unassign.templatefile=self-serve-mS-mac-address-unassign.json
+
+# Default cloud owner
+cloud-region.cloud-owner=CloudOwner
+
+# URLs
+restapi.cr-allottedresource=/restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/{allotted-resource-id}/
+restapi.sz-allottedresource=/restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/{allotted-resource-id}/
+restapi.brg-allottedresource=/restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/{allotted-resource-id}/
+restapi.vpp-honeycomb=/restconf/config/ietf-interfaces:interfaces/interface/{tunnel-name}
+restapi.tx-allottedresource=/restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/{allotted-resource-id}/
+restapi.vnf-provided-allottedresource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-provided-allotted-resources/
+restapi.network-provided-allottedresource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-provided-allotted-resources/
+restapi.pm-configuration=/restconf/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/{configuration-id}/
+restapi.network=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/networks
+restapi.vnf=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs
+restapi.vnf-api.service-information=/restconf/config/VNF-API:vnfs/vnf-list/{vnf-id}/service-data
+restapi.parent-provided-resource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/provided-allotted-resources/provided-allotted-resource/{allotted-resource-id}/
+restapi.network-provided-resource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/networks/network/{network-id}/network-data/network-provided-allotted-resources/
+restapi.services=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}
+restapi.service.vnf.vfmodule-resource=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}
+restapi.connection-attachment-allottedresource=/restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/{allotted-resource-id}/
+restapi.naming.gen-name.service=/web/service/v1/genNetworkElementName
+restapi.ss-pnf-assignments=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/pnfs/pnf/{pnf-id}/
+restapi.ss-vnf-assignments=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/
+restapi.ss-vfmodule-assignments=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+restapi.ss-mS-vlan-tag-assign=/vlantagapi/v1/{action}
+restapi.ss-mS-mac-address-assign=/api/macaddress/v1/service/assign
+restapi.ss-mS-mac-address-unassign=/api/macaddress/v1/service/unassign
+restapi.preload-network=/restconf/config/GENERIC-RESOURCE-API:preload-information/preload-list/{network-name}/network/preload-data/preload-network-topology-information/
+restapi.preloadinformation=/restconf/config/GENERIC-RESOURCE-API:preload-information/preload-list/
+restapi.vf-module=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+restapi.vnf-assign=/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/lcm-dg.properties b/sdnc-a1-controller/oam/installation/src/main/properties/lcm-dg.properties
new file mode 100644
index 0000000..53cecfb
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/lcm-dg.properties
@@ -0,0 +1,40 @@
+#ANSIBLE
+ansible.agenturl=http://ansiblehost:8000/Dispatch
+ansible.user=sdnc
+ansible.password=sdnc
+ansible.lcm.localparameters=
+ansible.nodelist=
+ansible.timeout=60
+ansible.version=0.00
+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
+
+#RESTAPI INTERFACEs
+restapi.templateDir=/opt/onap/sdnc/restapi/templates
+
+#RESTCONF
+lcm.restconf.configscaleout.templatefile=lcm-restconf-configscaleout.json
+lcm.restconf.configscaleout.urlpath=/restconf/config/vlb-business-vnf-onap-plugin:vlb-business-vnf-onap-plugin/vdns-instances/vdns-instance/
+lcm.restconf.configscaleout.geturlpath=/restconf/config/vlb-business-vnf-onap-plugin:vlb-business-vnf-onap-plugin
+lcm.restconf.configscaleout.user=
+lcm.restconf.configscaleout.password=
+lcm.restconf.port=8183
+
+#DMAAP
+lcm.dmaap.url=http://mr.api.simpledemo.onap.org:3904/events/SDNC-LCM-WRITE
+restapi.lcm.dmaap.publish.templatefile=lcm-dmaap-publish-template.json
+lcm.dmaap.url=http://mr.api.simpledemo.onap.org:3904/events/SDNC-LCM-WRITE
+lcm.dmaap.user=
+lcm.dmaap.password=
+lcm.dmaap.version=1.0
+lcm.dmaap.partition=MSO
+lcm.dmaap.type=response
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/mdsal-resource.properties b/sdnc-a1-controller/oam/installation/src/main/properties/mdsal-resource.properties
new file mode 100644
index 0000000..47c8ebf
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/mdsal-resource.properties
@@ -0,0 +1,27 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 						reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+org.onap.ccsdk.sli.adaptors.resource.mdsal.sdnc-user=admin
+org.onap.ccsdk.sli.adaptors.resource.mdsal.sdnc-passwd=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+org.onap.ccsdk.sli.adaptors.resource.mdsal.sdnc-host=localhost
+org.onap.ccsdk.sli.adaptors.resource.mdsal.sdnc-protocol=http
+org.onap.ccsdk.sli.adaptors.resource.mdsal.sdnc-port=8181
+
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/org.onap.sdnc.cred.props b/sdnc-a1-controller/oam/installation/src/main/properties/org.onap.sdnc.cred.props
new file mode 100644
index 0000000..8898383
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/org.onap.sdnc.cred.props
@@ -0,0 +1,17 @@
+############################################################
+# Properties Generated by AT&T Certificate Manager
+#   by ubuntu
+#   on 2019-04-26T17:48:02.614+0000
+# @copyright 2019, AT&T
+############################################################
+Challenge=enc:YLFZL0xwmf-22zzHjNwMDus4xQhhjOO_HERh0LisPjGFMODJtM77jjh7EctH-Pme
+cadi_alias=sdnc@sdnc.onap.org
+cadi_key_password=enc:fbgVR_kMh7wuaEfm16VlW84HJR_yiob_CUf3oDXSE0K2yPlp0t55xT335GMh8ZSv
+cadi_keyfile=/opt/sdnc/data/stores/org.onap.sdnc.keyfile
+cadi_keystore=/opt/sdnc/data/stores/org.onap.sdnc.p12
+cadi_keystore_password=enc:xAl_o-JBdI86B4pDUNyrY9IauP54ecsXLUZYl_9p9R4Roybcnppqwwkdp_wJq1Ir
+cadi_keystore_password_jks=enc:Qf5-2ZRKRMYBwvO14qENypmu4A1HNjkdu_KkM0N5i7v7QjC_GmshNrYmmeWLQWIr
+cadi_keystore_password_p12=enc:xAl_o-JBdI86B4pDUNyrY9IauP54ecsXLUZYl_9p9R4Roybcnppqwwkdp_wJq1Ir
+cadi_truststore=/opt/sdnc/data/stores/org.onap.sdnc.trust.jks
+cadi_truststore_password=enc:U-tuJC67-g5WkC4o8aYf-zqxfB-u2ep3NcB9CZt3VfGCP_NhTWFYVx8mCL3S-jhU
+cadi_x509_issuers=CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_9, OU=OSAAF, O=ONAP, C=US
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/org.onap.sdnc.props b/sdnc-a1-controller/oam/installation/src/main/properties/org.onap.sdnc.props
new file mode 100644
index 0000000..5b96b90
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/org.onap.sdnc.props
@@ -0,0 +1,15 @@
+############################################################
+# Properties Generated by AT&T Certificate Manager
+#   by root
+#   on 2019-02-15T20:08:07.125+0000
+# @copyright 2016, AT&T
+############################################################
+aaf_id=sdnc@sdnc.onap.org
+aaf_locate_url=https://aaf-onap-test.osaaf.org:8095
+aaf_url=https://AAF_LOCATE_URL/AAF_NS.service:2.1
+cadi_etc_dir=/opt/sdnc/data/stores
+cadi_latitude=38.432899
+cadi_longitude=-90.43248
+cadi_prop_files=/opt/sdnc/data/properties/org.onap.sdnc.cred.props
+cm_url=https://AAF_LOCATE_URL/AAF_NS.cm:2.1
+cadi_bath_convert=/opt/sdnc/data/properties/bath_config.csv
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/sql-resource.properties b/sdnc-a1-controller/oam/installation/src/main/properties/sql-resource.properties
new file mode 100644
index 0000000..ac32f77
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/sql-resource.properties
@@ -0,0 +1,23 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 						reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+org.openecomp.sdnc.resource.sql.cryptkey=QtfJMKggVk
+
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/svclogic.properties b/sdnc-a1-controller/oam/installation/src/main/properties/svclogic.properties
new file mode 100644
index 0000000..54d667c
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/svclogic.properties
@@ -0,0 +1,29 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 						reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+org.onap.ccsdk.sli.dbtype = dblib
+#Note : the next 4 fields are only used if org.onap.ccsdk.sli.dbtype = jdbc
+org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://dbhost:3306/sdnctl
+org.onap.ccsdk.sli.jdbc.database=sdnctl
+org.onap.ccsdk.sli.jdbc.user=sdnctl
+org.onap.ccsdk.sli.jdbc.password=gamma
+
+org.xml.sax.driver=org.apache.xerces.parsers.SAXParser
diff --git a/sdnc-a1-controller/oam/installation/src/main/properties/svclogic.properties.sdnctldb01 b/sdnc-a1-controller/oam/installation/src/main/properties/svclogic.properties.sdnctldb01
new file mode 100755
index 0000000..54d667c
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/properties/svclogic.properties.sdnctldb01
@@ -0,0 +1,29 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 						reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+org.onap.ccsdk.sli.dbtype = dblib
+#Note : the next 4 fields are only used if org.onap.ccsdk.sli.dbtype = jdbc
+org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://dbhost:3306/sdnctl
+org.onap.ccsdk.sli.jdbc.database=sdnctl
+org.onap.ccsdk.sli.jdbc.user=sdnctl
+org.onap.ccsdk.sli.jdbc.password=gamma
+
+org.xml.sax.driver=org.apache.xerces.parsers.SAXParser
diff --git a/sdnc-a1-controller/oam/installation/src/main/stores/keystore.sdnc.p12 b/sdnc-a1-controller/oam/installation/src/main/stores/keystore.sdnc.p12
new file mode 100644
index 0000000..8fb4e2c
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/stores/keystore.sdnc.p12
Binary files differ
diff --git a/sdnc-a1-controller/oam/installation/src/main/stores/org.onap.sdnc.keyfile b/sdnc-a1-controller/oam/installation/src/main/stores/org.onap.sdnc.keyfile
new file mode 100644
index 0000000..4bbb0ab
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/stores/org.onap.sdnc.keyfile
@@ -0,0 +1,27 @@
+ssTXV3XxGHmaZ_tDK60bUUwJMidA6-cMQbn8EVO1HWhwTS3vhftirZkfE-Ymv0xkhB82LT05cTjv
+MnM6E_OU8ZzQtNCb0XTTsOU-xTExWuIJzgfTKDanH14OB83r-pM0Q1z3iOjgIZyKNn7Qtl-7FyJu
+Fr6bmPKFMMSDROwH347eYBpunVPIa1X0NNqJcHDQsWFhW0bgsfRMnP3XZNltqbuAFZocYsY3Tk5N
+Iz52WXz6-nSWYBO0sPuBUZmkck1zKZ9PMn2SAPYx1V3i1-kOBLE6AHj-ad7e_dnJjdSTrjhG5z81
+QtmwAevh2ROCdNXTeyurrGXaLrMluE9csSVIp0YCCuhUCX02oDQBqIY5IDIQtAIXS8_i2bJWwmMv
+tZOTavGZH1_nwyQQ60lWF8w0GtL1m-s1SVH5v8VunYrjdnwFsrwUkKWfmz70OWFy6RwRis4IL434
+ln0RY48K-E_93jw3pbV4vZFTo8-RO59DGr_0pZf7ZhDSNrdy8sMpaSeHjjrVMfD5TI-JWDdzaKhi
+edKGZN_MZLfgPKwXTfXLDQKxowLUoDpEKfAj_KSOAdTCB2piala6Ht3FM5zfXFY7PnYgDho1fe2j
+nSWQhN6BqMr4LVKCLVonIiiAgyEetseUnW5_FCcFJALhfEKG4CHI0TvbRZ9IG7SwEFBovrk3RkBv
+-UHxqqUAi9W3Zdm6wmYtSsUaT-lmMomJxHigWn9vCJ6fO0r_KSoGo-u8idP8P989hNdLqKx6sVWa
+en-Kyf0YUvYUk6TblucGVG0UYpjqMAr64tA2_a595QWriVRsxFWTZXBiXWUrOtbXxYZ6vn4jLomF
+KWAOu7ot-SQa9zAAAgIme5VB3I2h9s0mUOsQd-T1fJq_CdAGzyqXmBwt8TO4G8iQCMUtOptxJ220
+dq_unPUWJylDuU_9fTY95PLSIGfTCwOedOJb5A9IvyN_mahSPZqYH3a0P6gOgHPxQfTrUid31u7a
+BqsQdKKMoWCT7ZdX-ja95f3Z3PzHxhlI2dr1nCRBkN89GLyIK70dVN2QTVVWV5B4hLoyrON6QVwy
+1csZ1X6UGO-4YOX3_GUacJSnCenZzJFbn3moCkZ-QfpwU7Cqq2I7DEa8bDKz1sdeNtycOxiQnmnA
+AnVdXfOavctGcpA6tWyj-WAkZvV6yedt6Kb4BPL5_qDsCNa0r1wYNaQqzH1bYQnJu0aVjspTzlj4
+2ik_2i9t36Avoqj_g3e8fvwmF0r__yPpF2oULa4LcIQ8Cs3U9Oq3BmxlNXlEj7dyNOTIlJLcvrzX
+Js_5iv5rA_rIWY7YpOc-UCVrZw3yb8Ih-XI4tNuUn3qE7tHHQclWrrYRVM2Jt_u-73WYqL-iCvwQ
+BU5soWkSK5TwgR1BHfDs5-yNh1MRnr9RbNd8x_p3ohQrFtepgBHodTl98er9XANCy-HycLZhDP3D
+TUQdWVKxAwDFVBB-p6itYB9oVvkQtSosLQUYcAjbMTrFz4zqOj0CHMvquE-Wbznkayo5ZdvKoPXk
+loNtiG4qPx3UXpvfHElps-vPi8y1TlcmwqWEOn2vxKd5IIk2fglHXM9tv2m86XRgvTjppSs1V7NS
+Uoz_C_bW8zH5D-Twmq2DGHxuKbpUpqe0FDFXxoQezGCVhN6bzp-44CBkz9I9QeNVkm3XFu8s2fDn
+PeP2B_hGxkLhJHAJ28_3zZex818zqvFW-flWY43w6Cke8qWns3gxdyvXLUTluoidkFdTEvMBPIos
+itOB1MsLxsZNdAZtn3vxANPm7dTf8YIAJdMYH6yL9G83PxgKZ8uhoIZIsbrV2UWOJMLH8agctEZI
+pFqCipM8RZwuZwq7JmTYPyIjUDVTvAmiLJbG127T9eAfrZa2TYDWaE469v9f-7MdTD4_PK2JSogD
+8dg30EruD1VwQq03M98hL9EQsRNwAZ4MAshE2Kp3jQje2A-ZxGtMKNiw6DV0j3BM42FBitpV-Ley
+UaqWwELwDh7-BFmUeCu_RSP4XwrTUcOV725yIYcGkk06wLahMf2UvFzYS3PAmZLrs4fvLMK5
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/installation/src/main/stores/org.onap.sdnc.p12 b/sdnc-a1-controller/oam/installation/src/main/stores/org.onap.sdnc.p12
new file mode 100644
index 0000000..079ee67
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/stores/org.onap.sdnc.p12
Binary files differ
diff --git a/sdnc-a1-controller/oam/installation/src/main/stores/org.onap.sdnc.trust.jks b/sdnc-a1-controller/oam/installation/src/main/stores/org.onap.sdnc.trust.jks
new file mode 100644
index 0000000..e1f2e57
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/stores/org.onap.sdnc.trust.jks
Binary files differ
diff --git a/sdnc-a1-controller/oam/installation/src/main/stores/truststore.onap.client.jks b/sdnc-a1-controller/oam/installation/src/main/stores/truststore.onap.client.jks
new file mode 100755
index 0000000..28afd8f
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/stores/truststore.onap.client.jks
Binary files differ
diff --git a/sdnc-a1-controller/oam/installation/src/main/stores/truststore.openecomp.client.jks b/sdnc-a1-controller/oam/installation/src/main/stores/truststore.openecomp.client.jks
new file mode 100644
index 0000000..6c854b4
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/stores/truststore.openecomp.client.jks
Binary files differ
diff --git a/sdnc-a1-controller/oam/installation/src/main/yaml/docker-compose.yml b/sdnc-a1-controller/oam/installation/src/main/yaml/docker-compose.yml
new file mode 100644
index 0000000..4e0de9b
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/src/main/yaml/docker-compose.yml
@@ -0,0 +1,164 @@
+version: '2.1'
+
+networks:
+  default:
+    driver: bridge
+    driver_opts:
+      com.docker.network.driver.mtu: ${MTU}
+
+
+services:
+  db:
+    image: mysql/mysql-server:5.6
+    container_name: sdnc_db_container
+    ports:
+      - "3306"
+    environment:
+      - MYSQL_ROOT_PASSWORD=openECOMP1.0
+      - MYSQL_ROOT_HOST=%
+    logging:
+      driver:   "json-file"
+      options:
+        max-size: "30m"
+        max-file: "5"
+
+  ansible:
+    image: onap/sdnc-ansible-server-image:latest
+    depends_on :
+      - db
+    container_name: sdnc_ansible_container
+    entrypoint: ["/opt/onap/ccsdk/startAnsibleServer.sh"]
+    ports:
+      - "8000"
+    links:
+      - db:dbhost
+      - db:sdnctldb01
+      - db:sdnctldb02
+    environment:
+      - MYSQL_ROOT_PASSWORD=openECOMP1.0
+    logging:
+      driver:   "json-file"
+      options:
+        max-size: "30m"
+        max-file: "5"
+
+  sdnc:
+    image: onap/sdnc-image:latest
+    depends_on :
+      - db
+      - ansible
+    container_name: sdnc_controller_container
+    entrypoint: ["/opt/onap/sdnc/bin/startODL.sh"]
+    ports:
+      - "8282:8181"
+    links:
+      - db:dbhost
+      - db:sdnctldb01
+      - db:sdnctldb02
+      - ansible:ansiblehost
+    environment:
+      - MYSQL_ROOT_PASSWORD=openECOMP1.0
+      - SDNC_CONFIG_DIR=/opt/onap/sdnc/data/properties
+    dns:
+      - ${DNS_IP_ADDR-10.0.100.1}
+    logging:
+      driver:   "json-file"
+      options:
+        max-size: "30m"
+        max-file: "5"
+    extra_hosts:
+        aaf.osaaf.org: 10.12.6.214
+
+
+  web:
+    image: onap/admportal-sdnc-image:latest
+    depends_on:
+      - db
+    container_name: sdnc_portal_container
+    entrypoint:
+       - "/bin/bash"
+       - "-c"
+       - "cd /opt/onap/sdnc/admportal/shell && ./start_portal.sh"
+    ports:
+      - "8843:8843"
+      - "8443:8443"
+    links:
+      - db:dbhost
+      - db:sdnctldb01
+      - db:sdnctldb02
+      - sdnc:sdnhost
+    environment:
+      - MYSQL_ROOT_PASSWORD=openECOMP1.0
+      - SDNC_CONFIG_DIR=/opt/onap/sdnc/data/properties
+      - CERT_PSWD=onap3.0
+    logging:
+      driver:   "json-file"
+      options:
+        max-size: "30m"
+        max-file: "5"
+
+
+  dgbuilder:
+    image: onap/ccsdk-dgbuilder-image:latest
+    depends_on:
+      - db
+    container_name:  sdnc_dgbuilder_container
+    entrypoint:
+       - "/bin/bash"
+       - "-c"
+       - "cd /opt/onap/ccsdk/dgbuilder/ && ./start.sh sdnc1.0 && wait"
+    ports:
+      - "3000:3100"
+    links:
+      - db:dbhost
+      - db:sdnctldb01
+      - db:sdnctldb02
+      - sdnc:sdnhost
+    environment:
+      - MYSQL_ROOT_PASSWORD=openECOMP1.0
+      - SDNC_CONFIG_DIR=/opt/onap/ccsdk/data/properties
+    logging:
+      driver:   "json-file"
+      options:
+        max-size: "30m"
+        max-file: "5"
+
+  ueblistener:
+    image: onap/sdnc-ueb-listener-image:latest
+    depends_on:
+      - db
+    container_name:  sdnc_ueblistener_container
+    entrypoint: ["/opt/onap/sdnc/ueb-listener/bin/start-ueb-listener.sh" ]
+    links:
+      - db:dbhost
+      - db:sdnctldb01
+      - db:sdnctldb02
+      - sdnc:sdnhost
+    environment:
+      - SDNC_CONFIG_DIR=/opt/onap/sdnc/data/properties
+      - PROPERTY_DIR=/opt/onap/sdnc/data/properties
+    logging:
+      driver:   "json-file"
+      options:
+        max-size: "30m"
+        max-file: "5"
+
+  dmaaplistener:
+    image: onap/sdnc-dmaap-listener-image:latest
+    depends_on:
+      - db
+    container_name:  sdnc_dmaaplistener_container
+    entrypoint: ["/opt/onap/sdnc/dmaap-listener/bin/start-dmaap-listener.sh" ]
+    links:
+      - db:dbhost
+      - db:sdnctldb01
+      - db:sdnctldb02
+      - sdnc:sdnhost
+    environment:
+      - SDNC_CONFIG_DIR=/opt/onap/sdnc/data/properties
+      - PROPERTY_DIR=/opt/onap/sdnc/data/properties
+    logging:
+      driver:   "json-file"
+      options:
+        max-size: "30m"
+        max-file: "5"
diff --git a/sdnc-a1-controller/oam/installation/ueb-listener/pom.xml b/sdnc-a1-controller/oam/installation/ueb-listener/pom.xml
new file mode 100644
index 0000000..f581e8e
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ueb-listener/pom.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>odlparent-lite</artifactId>
+        <version>1.4.3</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <packaging>pom</packaging>
+    <groupId>org.onap.sdnc.oam</groupId>
+    <artifactId>installation-ueb-listener</artifactId>
+    <version>1.7.3-SNAPSHOT</version>
+
+    <name>sdnc-oam :: installation :: ${project.artifactId}</name>
+    <description>Creates ueb-listener Docker container</description>
+
+    <properties>
+        <image.name>onap/sdnc-ueb-listener-image</image.name>
+        <sdnc.project.version>${project.version}</sdnc.project.version>
+        <sdnc.build.timestamp>${maven.build.timestamp}</sdnc.build.timestamp>
+        <ccsdk.docker.version>0.6.3</ccsdk.docker.version>
+        <docker.buildArg.https_proxy>${https_proxy}</docker.buildArg.https_proxy>
+        <docker.push.phase>deploy</docker.push.phase>
+        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
+    </properties>
+
+
+    <build>
+        <plugins>
+
+
+            <plugin>
+                <groupId>org.codehaus.groovy.maven</groupId>
+                <artifactId>gmaven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>execute</goal>
+                        </goals>
+                        <configuration>
+                            <source>${basedir}/../TagVersion.groovy</source>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+
+
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <id>copy-dockerfile</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/docker</directory>
+                                    <includes>
+                                        <include>Dockerfile</include>
+                                    </includes>
+                                    <filtering>true</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+
+                    <execution>
+                        <id>copy-scripts</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/ueb-listener/bin</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/scripts</directory>
+                                    <includes>
+                                        <include>*.sh</include>
+                                    </includes>
+                                    <filtering>false</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+
+                    <execution>
+                        <id>copy-properties</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/data/properties</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/properties</directory>
+                                    <includes>
+                                        <include>*</include>
+                                    </includes>
+                                    <filtering>false</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>unpack</id>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <phase>initialize</phase>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.onap.ccsdk.sli.northbound</groupId>
+                                    <artifactId>ueb-listener</artifactId>
+                                    <type>zip</type>
+                                    <version>${ccsdk.sli.northbound.version}</version>
+                                </artifactItem>
+                            </artifactItems>
+                            <outputDirectory>${basedir}/target/docker-stage/opt/onap/sdnc/ueb-listener</outputDirectory>
+                            <excludes>bin/**,**/*-javadoc.jar,**/*-sources.jar</excludes>
+                            <overWriteReleases>true</overWriteReleases>
+                            <overWriteSnapshots>true</overWriteSnapshots>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <artifactId>exec-maven-plugin</artifactId>
+                <groupId>org.codehaus.mojo</groupId>
+                <version>1.5.0</version>
+                <executions>
+
+
+
+                    <execution>
+                        <id>change shell permissions</id>
+                        <phase>process-sources</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <executable>/usr/bin/find</executable>
+                            <arguments>
+                                <argument>${basedir}/target/docker-stage/opt/onap/sdnc</argument>
+                                <argument>-name</argument>
+                                <argument>*.sh</argument>
+                                <argument>-exec</argument>
+                                <argument>chmod</argument>
+                                <argument>+x</argument>
+                                <argument>{}</argument>
+                                <argument>;</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+
+    </build>
+
+    <profiles>
+        <profile>
+            <id>docker</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>io.fabric8</groupId>
+                        <artifactId>docker-maven-plugin</artifactId>
+                        <version>0.28.0</version>
+                        <inherited>false</inherited>
+                        <configuration>
+                            <images>
+                                <image>
+                                    <name>${image.name}</name>
+                                    <build>
+                                        <cleanup>try</cleanup>
+                                        <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
+                                        <dockerFile>Dockerfile</dockerFile>
+                                        <tags>
+                                            <tag>${project.docker.latestminortag.version}</tag>
+                                            <tag>${project.docker.latestfulltag.version}</tag>
+                                            <tag>${project.docker.latesttagtimestamp.version}</tag>
+                                        </tags>
+                                    </build>
+                                </image>
+                            </images>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>generate-images</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>build</goal>
+                                </goals>
+                            </execution>
+
+                            <execution>
+                                <id>push-images</id>
+                                <!--<phase>deploy</phase> -->
+                                <phase>${docker.push.phase}</phase>
+                                <goals>
+                                    <goal>build</goal>
+                                    <goal>push</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+    <organization>
+        <name>ONAP</name>
+    </organization>
+</project>
diff --git a/sdnc-a1-controller/oam/installation/ueb-listener/src/main/docker/Dockerfile b/sdnc-a1-controller/oam/installation/ueb-listener/src/main/docker/Dockerfile
new file mode 100644
index 0000000..8008dfd
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ueb-listener/src/main/docker/Dockerfile
@@ -0,0 +1,11 @@
+# Base alpine with added packages needed for open ecomp
+FROM onap/ccsdk-alpine-image:${ccsdk.docker.version}
+MAINTAINER SDNC Team (onap-sdnc@lists.onap.org)
+ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
+ENV SDNC_CONFIG_DIR /opt/onap/sdnc/data/properties
+
+
+# copy deliverables to opt
+COPY opt /opt
+
+
diff --git a/sdnc-a1-controller/oam/installation/ueb-listener/src/main/properties/artifact.map b/sdnc-a1-controller/oam/installation/ueb-listener/src/main/properties/artifact.map
new file mode 100644
index 0000000..0256515
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ueb-listener/src/main/properties/artifact.map
@@ -0,0 +1,2 @@
+vf-license-model,ASDC-API:vf-license-model-update,0
+bad-entry,0
diff --git a/sdnc-a1-controller/oam/installation/ueb-listener/src/main/properties/dblib.properties b/sdnc-a1-controller/oam/installation/ueb-listener/src/main/properties/dblib.properties
new file mode 100644
index 0000000..9506ac8
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ueb-listener/src/main/properties/dblib.properties
@@ -0,0 +1,38 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 						reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+# dblib.properrties
+org.onap.ccsdk.sli.dbtype=jdbc
+
+org.onap.ccsdk.sli.jdbc.hosts=sdnctldb01
+org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://dbhost:3306/sdnctl
+org.onap.ccsdk.sli.jdbc.driver=org.mariadb.jdbc.Driver
+org.onap.ccsdk.sli.jdbc.database=sdnctl
+org.onap.ccsdk.sli.jdbc.user=sdnctl
+org.onap.ccsdk.sli.jdbc.password=gamma
+org.onap.ccsdk.sli.jdbc.connection.name=sdnctldb01
+org.onap.ccsdk.sli.jdbc.connection.timeout=50
+org.onap.ccsdk.sli.jdbc.request.timeout=100
+org.onap.ccsdk.sli.jdbc.limit.init=10
+org.onap.ccsdk.sli.jdbc.limit.min=10
+org.onap.ccsdk.sli.jdbc.limit.max=20
+org.onap.dblib.connection.recovery=false
+
diff --git a/sdnc-a1-controller/oam/installation/ueb-listener/src/main/properties/log4j.properties b/sdnc-a1-controller/oam/installation/ueb-listener/src/main/properties/log4j.properties
new file mode 100644
index 0000000..0d25298
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ueb-listener/src/main/properties/log4j.properties
@@ -0,0 +1,50 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 			reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+status = debug
+dest = err
+name = LogConfiguration
+rootLogger.level = debug
+appenders = logfile, console
+
+property.filename = /opt/onap/sdnc/ueb-listener/logs/ueb-listener.log
+property.filePattern = /opt/onap/sdnc/ueb-listener/logs/ueb-listener-%i.log
+
+# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
+appender.console.type = Console
+appender.console.name = STDOUT
+appender.console.filter.threshold.type = ThresholdFilter
+appender.console.filter.threshold.level = error
+appender.console.layout.type = PatternLayout
+appender.console.layout.pattern = %p %d{yyyy-MM-dd HH:mm:ss.SSS Z} %c{1} - %m%n
+
+# LOGFILE is set to be a File appender using a PatternLayout.
+appender.logfile.type = RollingFile
+appender.logfile.name = RollingFile
+appender.logfile.fileName = ${filename}
+appender.logfile.filePattern = ${filePattern}
+appender.logfile.layout.type = PatternLayout
+appender.logfile.layout.pattern = %p %d{yyyy-MM-dd HH:mm:ss.SSS Z} %c{1} - %m%n
+appender.logfile.policies.type = Policies
+appender.logfile.policies.size.type = SizeBasedTriggeringPolicy
+appender.logfile.policies.size.size = 10MB
+appender.logfile.strategy.type = DefaultRolloverStrategy
+appender.logfile.strategy.max = 10
diff --git a/sdnc-a1-controller/oam/installation/ueb-listener/src/main/properties/ueb-listener.properties b/sdnc-a1-controller/oam/installation/ueb-listener/src/main/properties/ueb-listener.properties
new file mode 100755
index 0000000..c8418d0
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ueb-listener/src/main/properties/ueb-listener.properties
@@ -0,0 +1,27 @@
+org.onap.ccsdk.sli.northbound.uebclient.asdc-address=c2.vm1.sdc.simpledemo.openecomp.org:8443
+org.onap.ccsdk.sli.northbound.uebclient.consumer-group=sdc-OpenSource-Env1-sdnc-dockero
+org.onap.ccsdk.sli.northbound.uebclient.consumer-id=sdc-COpenSource-Env11-sdnc-dockero
+# Test config for Robot testing
+#org.onap.ccsdk.sli.northbound.uebclient.asdc-address=10.12.5.198:8443
+#org.onap.ccsdk.sli.northbound.uebclient.consumer-group=sdc-OpenSource-Env1-ccsdkTest-dockero
+#org.onap.ccsdk.sli.northbound.uebclient.consumer-id=sdc-COpenSource-Env11-ccsdkTest-dockero
+#org.onap.ccsdk.sli.northbound.uebclient.msg-bus-address=10.12.5.127
+org.onap.ccsdk.sli.northbound.uebclient.environment-name=AUTO
+org.onap.ccsdk.sli.northbound.uebclient.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+org.onap.ccsdk.sli.northbound.uebclient.user=sdnc
+org.onap.ccsdk.sli.northbound.uebclient.sdnc-user=admin
+org.onap.ccsdk.sli.northbound.uebclient.sdnc-passwd=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+org.onap.ccsdk.sli.northbound.uebclient.asdc-api-base-url=http://sdnhost:8181/restconf/operations/
+org.onap.ccsdk.sli.northbound.uebclient.asdc-api-namespace=org:onap:ccsdk
+org.onap.ccsdk.sli.northbound.uebclient.spool.incoming=/opt/onap/sdnc/ueb-listener/spool/incoming
+org.onap.ccsdk.sli.northbound.uebclient.spool.archive=/opt/onap/sdnc/ueb-listener/spool/archive
+org.onap.ccsdk.sli.northbound.uebclient.polling-interval=30
+org.onap.ccsdk.sli.northbound.uebclient.polling-timeout=15
+org.onap.ccsdk.sli.northbound.uebclient.client-startup-timeout=300
+org.onap.ccsdk.sli.northbound.uebclient.relevant-artifact-types=TOSCA_CSAR
+org.onap.ccsdk.sli.northbound.uebclient.activate-server-tls-auth=false
+org.onap.ccsdk.sli.northbound.uebclient.keystore-path=
+org.onap.ccsdk.sli.northbound.uebclient.keystore-password=
+org.onap.ccsdk.sli.northbound.uebclient.xslt-path-list=/opt/onap/sdnc/ueb-listener/lib/normalizeTagNames.xslt,/opt/onap/sdnc/ueb-listener/lib/removeNs.xslt
+org.onap.ccsdk.sli.northbound.uebclient.artifact-map=/opt/onap/sdnc/data/properties/artifact.map
+org.onap.ccsdk.sli.northbound.uebclient.msg-bus-address=10.0.11.1,10.0.11.1
diff --git a/sdnc-a1-controller/oam/installation/ueb-listener/src/main/scripts/start-ueb-listener.sh b/sdnc-a1-controller/oam/installation/ueb-listener/src/main/scripts/start-ueb-listener.sh
new file mode 100644
index 0000000..33793fb
--- /dev/null
+++ b/sdnc-a1-controller/oam/installation/ueb-listener/src/main/scripts/start-ueb-listener.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+###
+# ============LICENSE_START=======================================================
+# ONAP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# 			reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+PROPERTY_DIR=${PROPERTY_DIR:-/opt/onap/sdnc/data/properties}
+
+
+LISTENER=ueb-listener
+
+UEBLISTENERROOT=${UEBLISTENERROOT:-/opt/onap/sdnc/ueb-listener}
+JAVA_HOME=${JAVA_HOME:-/usr/lib/jvm/java-7-oracle}
+JAVA_OPTS=${JAVA_OPTS:--Dhttps.protocols=TLSv1.1,TLSv1.2}
+JAVA=${JAVA:-${JAVA_HOME}/bin/java}
+
+
+for file in ${UEBLISTENERROOT}/lib/*.jar
+do
+  LISTENERCLASSPATH=$LISTENERCLASSPATH:$file
+done
+
+echo "Starting ueb-listener"
+exec ${JAVA} ${JAVA_OPTS} -jar ${UEBLISTENERROOT}/lib/ueb-listener*.jar -Dlog4j.configurationFile=${PROPERTY_DIR}/log4j.properties -cp ${LISTENERCLASSPATH}
+
+
+
diff --git a/sdnc-a1-controller/oam/platform-logic/.gitignore b/sdnc-a1-controller/oam/platform-logic/.gitignore
new file mode 100644
index 0000000..1b8a6ba
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/.gitignore
@@ -0,0 +1,12 @@
+org.eclipse.core.resources.prefs
+.classpath

+.project

+.settings

+.idea

+.externalToolBuilders

+maven-eclipse.xml

+*.class

+target/

+MANIFEST.MF

+.DS_STORE

+.metadata

diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/pom.xml b/sdnc-a1-controller/oam/platform-logic/datachange/pom.xml
new file mode 100644
index 0000000..645cdf0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/pom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>odlparent-lite</artifactId>
+        <version>1.4.3</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.onap.sdnc.oam</groupId>
+    <artifactId>platform-logic-datachange</artifactId>
+    <version>1.7.3-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <name>sdnc-oam :: platform-logic :: ${project.artifactId}</name>
+    <description>Contains platform-level service logic for the data change</description>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <id>copy-version</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>../target/svclogic/graphs/datachange</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/xml</directory>
+                                    <includes>
+                                        <include>**/*.xml</include>
+                                    </includes>
+                                    <filtering>true</filtering>
+                                </resource>
+                                <resource>
+                                    <directory>src/main/resources</directory>
+                                    <includes>
+                                        <include>graph.versions</include>
+                                    </includes>
+                                    <filtering>true</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_data-change-notification.json b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_data-change-notification.json
new file mode 100644
index 0000000..6d33aa4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_data-change-notification.json
@@ -0,0 +1,170 @@
+[

+    {

+        "id": "4153f9c1.51e918",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 121.03125,

+        "y": 50.99999761581421,

+        "z": "351662fa.1d559e",

+        "wires": [

+            [

+                "c35543aa.9c0db"

+            ]

+        ]

+    },

+    {

+        "id": "c35543aa.9c0db",

+        "type": "service-logic",

+        "name": "DataChange ${project.version}",

+        "module": "DataChange",

+        "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='DataChange' version='${project.version}'>",

+        "outputs": 1,

+        "x": 284.14239501953125,

+        "y": 153.44447326660156,

+        "z": "351662fa.1d559e",

+        "wires": [

+            [

+                "ddb1e250.e70de"

+            ]

+        ]

+    },

+    {

+        "id": "ddb1e250.e70de",

+        "type": "method",

+        "name": "method data-change-notification",

+        "xml": "<method rpc='data-change-notification' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 281.5869483947754,

+        "y": 316.22225427627563,

+        "z": "351662fa.1d559e",

+        "wires": [

+            [

+                "d8e6317c.7d1e4"

+            ]

+        ]

+    },

+    {

+        "id": "d8e6317c.7d1e4",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 326.8092346191406,

+        "y": 431.1113245487213,

+        "z": "351662fa.1d559e",

+        "wires": [

+            [

+                "3e65d07f.a9ae2",

+                "ed2d48f6.216158"

+            ]

+        ]

+    },

+    {

+        "id": "3e65d07f.a9ae2",

+        "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": 534.3650932312012,

+        "y": 518.5561289787292,

+        "z": "351662fa.1d559e",

+        "wires": []

+    },

+    {

+        "id": "b5c4485f.b2ff78",

+        "type": "call",

+        "name": "call esr-thirdparty-sdnc",

+        "xml": "<call module='DataChange' rpc='esr-thirdparty-sdnc' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1162.3653564453125,

+        "y": 152.66677856445312,

+        "z": "351662fa.1d559e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ed2d48f6.216158",

+        "type": "switchNode",

+        "name": "switch aai-node-type",

+        "xml": "<switch test='`$data-change-notification-input.aai-node-type`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 537.9139709472656,

+        "y": 394.88262581825256,

+        "z": "351662fa.1d559e",

+        "wires": [

+            [

+                "a7d7c4e8.cc6678",

+                "c25d5c15.d569e"

+            ]

+        ]

+    },

+    {

+        "id": "a7d7c4e8.cc6678",

+        "type": "other",

+        "name": "esr-thirdparty-sdnc",

+        "xml": "<outcome value='esr-thirdparty-sdnc'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 712.9459228515625,

+        "y": 153.0572485923767,

+        "z": "351662fa.1d559e",

+        "wires": [

+            [

+                "dfa0cb23.be8c58"

+            ]

+        ]

+    },

+    {

+        "id": "c25d5c15.d569e",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 777.9140357971191,

+        "y": 393.8826584815979,

+        "z": "351662fa.1d559e",

+        "wires": [

+            [

+                "f4eb1449.fa4908"

+            ]

+        ]

+    },

+    {

+        "id": "f4eb1449.fa4908",

+        "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=\"AAI node type not supported\" />",

+        "comments": "",

+        "x": 933.3585548400879,

+        "y": 393.99375772476196,

+        "z": "351662fa.1d559e",

+        "wires": []

+    },

+    {

+        "id": "dfa0cb23.be8c58",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 929.53125,

+        "y": 153,

+        "z": "351662fa.1d559e",

+        "wires": [

+            [

+                "b5c4485f.b2ff78"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_esr-thirdparty-sdnc-discovery-of-zte.json b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_esr-thirdparty-sdnc-discovery-of-zte.json
new file mode 100644
index 0000000..4de0399
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_esr-thirdparty-sdnc-discovery-of-zte.json
@@ -0,0 +1,1316 @@
+[

+    {

+        "id": "5f902aaa.7aa9a4",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 96,

+        "y": 111,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "a24e36d1.cffe88"

+            ]

+        ]

+    },

+    {

+        "id": "a24e36d1.cffe88",

+        "type": "service-logic",

+        "name": "DataChange ${project.version}",

+        "module": "DataChange",

+        "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='DataChange' version='${project.version}'>",

+        "outputs": 1,

+        "x": 200,

+        "y": 200,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "62181046.00897"

+            ]

+        ]

+    },

+    {

+        "id": "62181046.00897",

+        "type": "method",

+        "name": "method esr-thirdparty-sdnc-discovery-of-zte",

+        "xml": "<method rpc='esr-thirdparty-sdnc-discovery-of-zte' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 268,

+        "y": 298,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "bc55b20f.579c9"

+            ]

+        ]

+    },

+    {

+        "id": "bc55b20f.579c9",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 192,

+        "y": 405,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "f7cce3b7.da11f"

+            ]

+        ]

+    },

+    {

+        "id": "f7cce3b7.da11f",

+        "type": "switchNode",

+        "name": "switch aai-event-trigger",

+        "xml": "<switch test=\"`$data-change-notification-input.aai-event-trigger`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 394,

+        "y": 405,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "feebd6bc.652fa8",

+                "274f1a37.9e7186"

+            ]

+        ]

+    },

+    {

+        "id": "feebd6bc.652fa8",

+        "type": "outcome",

+        "name": "update",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 622,

+        "y": 360,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "3a6c0212.670f4e"

+            ]

+        ]

+    },

+    {

+        "id": "274f1a37.9e7186",

+        "type": "outcome",

+        "name": "delete",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 620,

+        "y": 528,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "9093c48f.404368"

+            ]

+        ]

+    },

+    {

+        "id": "9093c48f.404368",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 795,

+        "y": 528,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3a6c0212.670f4e",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 774,

+        "y": 360,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "8c1f6548.e5e568"

+            ]

+        ]

+    },

+    {

+        "id": "8c1f6548.e5e568",

+        "type": "switchNode",

+        "name": "switch type",

+        "xml": "<switch test=\"`$zte.prop.sdncRestApi.type`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 943,

+        "y": 360,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "74951572.ebdc6c",

+                "eaaeda12.faa678"

+            ]

+        ]

+    },

+    {

+        "id": "74951572.ebdc6c",

+        "type": "outcome",

+        "name": "SOTN",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1119,

+        "y": 295,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "c610ea22.d44298"

+            ]

+        ]

+    },

+    {

+        "id": "eaaeda12.faa678",

+        "type": "outcome",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1113,

+        "y": 417,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "c3125ba4.7ffdb8"

+            ]

+        ]

+    },

+    {

+        "id": "c3125ba4.7ffdb8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name='error-code' value=\"500\" />\n<parameter name='error-message' value=\"`'Unsupported type = ' + $prop.sdncRestApi.type`\" />\n",

+        "comments": "",

+        "x": 1305,

+        "y": 417,

+        "z": "540d3add.6d0b44",

+        "wires": []

+    },

+    {

+        "id": "c610ea22.d44298",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1305,

+        "y": 295,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "93e42ee3.ef7c9",

+                "14a63f8c.fb75e",

+                "16563079.8d5e2"

+            ]

+        ]

+    },

+    {

+        "id": "93e42ee3.ef7c9",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get ZTE Topology",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/getzteodutopotemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$zte.prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ZTE-API-Topology:get-topology-details'`\" />\n<parameter name=\"restapiUser\" value=\"`$zte.prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$zte.prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"POST\"/>\n<parameter name=\"responsePrefix\" value=\"ztetopology\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1625,

+        "y": 203,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "7009dab5.0199f4",

+                "e43c55f6.204948"

+            ]

+        ]

+    },

+    {

+        "id": "7009dab5.0199f4",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1907,

+        "y": 148,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "2945e727.0d1da8"

+            ]

+        ]

+    },

+    {

+        "id": "e43c55f6.204948",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1905,

+        "y": 248,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "775e4e34.10584"

+            ]

+        ]

+    },

+    {

+        "id": "2945e727.0d1da8",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2106,

+        "y": 147,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "775e4e34.10584",

+        "type": "returnFailure",

+        "name": "return failure",

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

+        "comments": "",

+        "x": 2101,

+        "y": 248,

+        "z": "540d3add.6d0b44",

+        "wires": []

+    },

+    {

+        "id": "14a63f8c.fb75e",

+        "type": "for",

+        "name": "for each topology",

+        "xml": "<for index='nidx' start='0' end='`$ztetopology.output.topology.node-ref-id_length`' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 1533,

+        "y": 336,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "5cd977af.6d2188"

+            ]

+        ]

+    },

+    {

+        "id": "4b8d1cd8.c32504",

+        "type": "update",

+        "name": "save network-resource",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='network-resource'  \n     key='network-resource.network-id = $prop.zte.network-id' >\n<parameter name='network-id' value='`$prop.zte.network-id`' />\n<parameter name='client-id' value='`$prop.zte.client-id`' />\n<parameter name='te-topo-id' value='`$prop.zte.topo-id`' />\n<parameter name='provider-id' value='`$prop.zte.provider-id`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1637,

+        "y": 664,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4a607014.a17fa",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1362,

+        "y": 562,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5d5e9d41.c00664",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get ZTE oduTopology",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/getzteodutoponodetemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$zte.prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ZTE-API-Topology:get-topology-details'`\" />\n<parameter name=\"restapiUser\" value=\"`$zte.prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$zte.prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"POST\"/>\n<parameter name=\"responsePrefix\" value=\"ztetopologynode\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2023,

+        "y": 414,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "ddc8baae.4921b8",

+                "66e109c3.50ba98"

+            ]

+        ]

+    },

+    {

+        "id": "66e109c3.50ba98",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2321,

+        "y": 495,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "6aaa8b79.149894"

+            ]

+        ]

+    },

+    {

+        "id": "ddc8baae.4921b8",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2319,

+        "y": 414,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "72846c1a.17d914"

+            ]

+        ]

+    },

+    {

+        "id": "72846c1a.17d914",

+        "type": "returnFailure",

+        "name": "return failure",

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

+        "comments": "",

+        "x": 2510,

+        "y": 414,

+        "z": "540d3add.6d0b44",

+        "wires": []

+    },

+    {

+        "id": "48652b97.2fedc4",

+        "type": "for",

+        "name": "for each oduTopology node",

+        "xml": "<for index='pidx' start='0' end='`$ztetopologynode.output.topology.node-ref-id_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1649,

+        "y": 749,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "2d5905b0.3495ea"

+            ]

+        ]

+    },

+    {

+        "id": "453fd3.8bd4502c",

+        "type": "update",

+        "name": "save pnf",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf' \n      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid' >\n<parameter name='pnf-name' value='`$ztetopologynodedetails.output.node.uuid`' />\n<parameter name='pnf-id' value='`$ztetopologynodedetails.output.node.uuid`' />\n<parameter name='operational-status' value=\"up\" />\n<parameter name='admin-status' value=\"up\" />\n<parameter name='in-maint' value='true' />\n\n\n\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2738,

+        "y": 818,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c9e69fe4.50fcd",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get ZTE oduTopology Node details",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/getzteodutoponodedetailstemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$zte.prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ZTE-API-Topology:get-node-details'`\" />\n<parameter name=\"restapiUser\" value=\"`$zte.prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$zte.prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"POST\"/>\n<parameter name=\"responsePrefix\" value=\"ztetopologynodedetails\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2251,

+        "y": 748,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "e85faec3.821",

+                "68392c6a.4e1674"

+            ]

+        ]

+    },

+    {

+        "id": "e85faec3.821",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1711,

+        "y": 833,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "854a7fc2.bfea9"

+            ]

+        ]

+    },

+    {

+        "id": "854a7fc2.bfea9",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error executing Get odutopo node details rest api\" />\n",

+        "comments": "",

+        "x": 1861,

+        "y": 833,

+        "z": "540d3add.6d0b44",

+        "wires": []

+    },

+    {

+        "id": "68392c6a.4e1674",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1709,

+        "y": 938,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "109fc05a.9da5c"

+            ]

+        ]

+    },

+    {

+        "id": "109fc05a.9da5c",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1892,

+        "y": 938,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "588ee473.9cb17c",

+                "6075f692.b2caa8",

+                "22a310d5.11293",

+                "7e2199ff.99b1c8"

+            ]

+        ]

+    },

+    {

+        "id": "6075f692.b2caa8",

+        "type": "save",

+        "name": "save pnf relationship to network-resource in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf:relationship-list' \n      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid' force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"network-resource\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/network-resources/network-resource/' + $prop.zte.network-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"network-resource.network-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.zte.network-id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 2187,

+        "y": 1027,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "22a310d5.11293",

+        "type": "save",

+        "name": "save pnf relation with esr-thirdparty-sdnc",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='esr-thirdparty-sdnc:relationship-list' \n      key='esr-thirdparty-sdnc.thirdparty-sdnc-id = $zte.prop.sdncRestApi.thirdpartySdnc.id' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"pnf\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/pnfs/pnf/' + $ztetopologynodedetails.output.node.uuid`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"pnf.pnf-name\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$ztetopologynodedetails.output.node.uuid`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2161,

+        "y": 1094,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f00776db.4dbaf8",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get ZTE oduTopology Node edge point details",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/getzteodutoponodenepdetailstemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$zte.prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ZTE-API-Topology:get-node-edge-point-details'`\" />\n<parameter name=\"restapiUser\" value=\"`$zte.prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$zte.prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"POST\"/>\n<parameter name=\"responsePrefix\" value=\"ztetopologynodenepdetails\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2792,

+        "y": 1275,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "345328c1.c40d08",

+                "72be01d7.1258c"

+            ]

+        ]

+    },

+    {

+        "id": "6e627eca.00e4a",

+        "type": "for",

+        "name": "for each oduTopology node nep name",

+        "xml": "<for index='tidx' start='0' end='`$ztetopologynodenepdetails.output.node-edge-point.name_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2663,

+        "y": 1510,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "7cffba09.0e7a94"

+            ]

+        ]

+    },

+    {

+        "id": "7cffba09.0e7a94",

+        "type": "execute",

+        "name": "contains client",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$ztetopologynodenepdetails.node-edge-point.name[tidx].value`\"/>\n    <parameter name=\"target\" value=\"client\"/>\n    ",

+        "comments": "",

+        "outputs": 1,

+        "x": 2976,

+        "y": 1510,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "36d5c2cc.d55c4e",

+                "c6db88ea.32d128"

+            ]

+        ]

+    },

+    {

+        "id": "72be01d7.1258c",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2386,

+        "y": 1510,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "6e627eca.00e4a"

+            ]

+        ]

+    },

+    {

+        "id": "345328c1.c40d08",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2386,

+        "y": 1419,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "fc122084.5176a"

+            ]

+        ]

+    },

+    {

+        "id": "fc122084.5176a",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error executing Get odutopo node edge point details rest api\" />\n",

+        "comments": "",

+        "x": 2739,

+        "y": 1417,

+        "z": "540d3add.6d0b44",

+        "wires": []

+    },

+    {

+        "id": "2aeff331.c3498c",

+        "type": "set",

+        "name": "set zte unique-ltpId",

+        "xml": "<set>\n<parameter name='zte-unique-ltpId' value=\"`'nodeId-' + $ztetopologynodedetails.output.node.uuid + '-ltpId-' + $ztetopologynodenepdetails.output.node-edge-point.uuid`\" />\n",

+        "comments": "",

+        "x": 3687,

+        "y": 1510,

+        "z": "540d3add.6d0b44",

+        "wires": []

+    },

+    {

+        "id": "62e34399.97db9c",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3473,

+        "y": 1510,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "2aeff331.c3498c",

+                "873e3131.8335a",

+                "f75f21b7.efa77"

+            ]

+        ]

+    },

+    {

+        "id": "e8680f6b.26d67",

+        "type": "update",

+        "name": "save p-interface",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='p-interface' \n      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid\n      AND p-interface.interface-name = $zte-unique-ltpId' >      \n<parameter name='interface-name' value='`$zte-unique-ltpId`' />\n<parameter name='network-ref' value=\"`'providerId/' + $prop.zte.provider-id + '/topologyId/' + $prop.zte.topo-id + '/clientId/' + $prop.zte.client-id`\" />\n<parameter name='transparent' value=\"true\" />\n<parameter name='speed-value' value='`$zte-bandwidth`' />\n<parameter name='operational-status' value=\"up\" />\n<parameter name='in-maint' value=\"true\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 4112,

+        "y": 1702,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "eed25adb.58f488",

+                "67b16207.7b846c"

+            ]

+        ]

+    },

+    {

+        "id": "209b7c79.7331c4",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3469,

+        "y": 1436,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "eed25adb.58f488",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 4300,

+        "y": 1636,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "e4358a9c.200a58"

+            ]

+        ]

+    },

+    {

+        "id": "67b16207.7b846c",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 4300,

+        "y": 1701,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "6efad235.03a13c"

+            ]

+        ]

+    },

+    {

+        "id": "e4358a9c.200a58",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 4489,

+        "y": 1635,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "588ee473.9cb17c",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test=\"`$ztetopologynodedetails.output.node.global-state-pac.operational-state == 'ENABLED'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2062,

+        "y": 937,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "e2329ee1.9a7b6",

+                "eaec1cbd.8f432"

+            ]

+        ]

+    },

+    {

+        "id": "e2329ee1.9a7b6",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2263,

+        "y": 886,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "67b87346.c6a5bc"

+            ]

+        ]

+    },

+    {

+        "id": "eaec1cbd.8f432",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2262,

+        "y": 957,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "a037a75a.ae6708"

+            ]

+        ]

+    },

+    {

+        "id": "67b87346.c6a5bc",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test=\"`$ztetopologynodedetails.output.node.global-state-pac.administrative-state == 'LOCKED'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2419,

+        "y": 886,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "ba21f30c.c4435",

+                "ab98b4e0.12a4f8"

+            ]

+        ]

+    },

+    {

+        "id": "a037a75a.ae6708",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test=\"`$ztetopologynodedetails.output.node.global-state-pac.administrative-state == 'LOCKED'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2420,

+        "y": 957,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "90096244.386ff",

+                "b1e15aa1.abad48"

+            ]

+        ]

+    },

+    {

+        "id": "ba21f30c.c4435",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2582,

+        "y": 818,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "453fd3.8bd4502c"

+            ]

+        ]

+    },

+    {

+        "id": "ab98b4e0.12a4f8",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2585,

+        "y": 886,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "1c144406.5ea9fc"

+            ]

+        ]

+    },

+    {

+        "id": "90096244.386ff",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2586,

+        "y": 957,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "65322994.d1f668"

+            ]

+        ]

+    },

+    {

+        "id": "b1e15aa1.abad48",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2587,

+        "y": 1026,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "97879765.7b8ac8"

+            ]

+        ]

+    },

+    {

+        "id": "1c144406.5ea9fc",

+        "type": "update",

+        "name": "save pnf",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf' \n      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid' >\n<parameter name='pnf-name' value='`$ztetopologynodedetails.output.node.uuid`' />\n<parameter name='pnf-id' value='`$ztetopologynodedetails.output.node.uuid`' />\n<parameter name='operational-status' value=\"up\" />\n<parameter name='admin-status' value=\"down\" />\n<parameter name='in-maint' value='true' />\n\n\n\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2738,

+        "y": 886,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "65322994.d1f668",

+        "type": "update",

+        "name": "save pnf",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf' \n      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid' >\n<parameter name='pnf-name' value='`$ztetopologynodedetails.output.node.uuid`' />\n<parameter name='pnf-id' value='`$ztetopologynodedetails.output.node.uuid`' />\n<parameter name='operational-status' value=\"down\" />\n<parameter name='admin-status' value=\"up\" />\n<parameter name='in-maint' value='true' />\n\n\n\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2735,

+        "y": 957,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "97879765.7b8ac8",

+        "type": "update",

+        "name": "save pnf",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf' \n      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid' >\n<parameter name='pnf-name' value='`$ztetopologynodedetails.output.node.uuid`' />\n<parameter name='pnf-id' value='`$ztetopologynodedetails.output.node.uuid`' />\n<parameter name='operational-status' value=\"down\" />\n<parameter name='admin-status' value=\"down\" />\n<parameter name='in-maint' value='true' />\n\n\n\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2736,

+        "y": 1026,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "873e3131.8335a",

+        "type": "switchNode",

+        "name": "test operational-state",

+        "xml": "<switch test=\"`$ztetopologynodedetails.output.node.global-state-pac.operational-state == 'ENABLED'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3687,

+        "y": 1699,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "dad7304e.123b4",

+                "cce973ee.e8539"

+            ]

+        ]

+    },

+    {

+        "id": "dad7304e.123b4",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3903,

+        "y": 1702,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "e8680f6b.26d67"

+            ]

+        ]

+    },

+    {

+        "id": "cce973ee.e8539",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3906,

+        "y": 1816,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "a9bffbab.0baeb8"

+            ]

+        ]

+    },

+    {

+        "id": "a9bffbab.0baeb8",

+        "type": "update",

+        "name": "save p-interface",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='p-interface' \n      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid\n      AND p-interface.interface-name = $zte-unique-ltpId' >      \n<parameter name='interface-name' value='`$zte-unique-ltpId`' />\n<parameter name='network-ref' value=\"`'providerId/' + $prop.zte.provider-id + '/topologyId/' + $prop.zte.topo-id + '/clientId/' + $prop.zte.client-id`\" />\n<parameter name='transparent' value=\"true\" />\n<parameter name='speed-value' value='`$zte-bandwidth`' />\n<parameter name='operational-status' value=\"down\" />\n<parameter name='in-maint' value=\"true\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4113,

+        "y": 1816,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "a6acf286.7190a",

+                "655a7457.79319c"

+            ]

+        ]

+    },

+    {

+        "id": "a6acf286.7190a",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 4301,

+        "y": 1816,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "f73009af.d52ca8"

+            ]

+        ]

+    },

+    {

+        "id": "655a7457.79319c",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 4298,

+        "y": 1877,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "367baa79.63cc46"

+            ]

+        ]

+    },

+    {

+        "id": "f73009af.d52ca8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 4487,

+        "y": 1816,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6efad235.03a13c",

+        "type": "update",

+        "name": "save p-interface",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='p-interface' \n      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid\n      AND p-interface.interface-name = $zte-unique-ltpId' >      \n<parameter name='interface-name' value='`$zte-unique-ltpId`' />\n<parameter name='network-ref' value=\"`'providerId/' + $prop.zte.provider-id + '/topologyId/' + $prop.zte.topo-id + '/clientId/' + $prop.zte.client-id`\" />\n<parameter name='transparent' value=\"true\" />\n<parameter name='speed-value' value='`$zte-bandwidth`' />\n<parameter name='operational-status' value=\"up\" />\n<parameter name='in-maint' value=\"true\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4520,

+        "y": 1701,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "367baa79.63cc46",

+        "type": "update",

+        "name": "save p-interface",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='p-interface' \n      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid\n      AND p-interface.interface-name = $zte-unique-ltpId' >      \n<parameter name='interface-name' value='`$zte-unique-ltpId`' />\n<parameter name='network-ref' value=\"`'providerId/' + $prop.zte.provider-id + '/topologyId/' + $prop.zte.topo-id + '/clientId/' + $prop.zte.client-id`\" />\n<parameter name='transparent' value=\"true\" />\n<parameter name='speed-value' value='`$zte-bandwidth`' />\n<parameter name='operational-status' value=\"up\" />\n<parameter name='in-maint' value=\"true\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4514,

+        "y": 1877,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bcbc6e2c.3314",

+        "type": "set",

+        "name": "set params",

+        "xml": "<set>\n<parameter name='prop.zte.network-id' value=\"zteNetwork\" />\n<parameter name='prop.zte.client-id' value=\"zteClient1\" />\n<parameter name='prop.zte.topo-id' value=\"zteTopo1\" />\n<parameter name='prop.zte.provider-id' value=\"zteProvider1\" />\n",

+        "comments": "",

+        "x": 1604,

+        "y": 597,

+        "z": "540d3add.6d0b44",

+        "wires": []

+    },

+    {

+        "id": "2d5905b0.3495ea",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1871,

+        "y": 749,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "c9e69fe4.50fcd",

+                "69930609.325f68"

+            ]

+        ]

+    },

+    {

+        "id": "69930609.325f68",

+        "type": "set",

+        "name": "set odutopo node name",

+        "xml": "<set>\n<parameter name='prop.zte.odutopo.node.name' value='`$ztetopologynode.output.topology.node-ref-id[$pidx]`' />\n",

+        "comments": "",

+        "x": 2135,

+        "y": 674,

+        "z": "540d3add.6d0b44",

+        "wires": []

+    },

+    {

+        "id": "e65cd4cb.61e0c8",

+        "type": "set",

+        "name": "set odutopo node nep uuid",

+        "xml": "<set>\n<parameter name='prop.zte.odutopo.node.nep.uuid' value='`$ztetopologynodedetails.output.node.node-edge-point-id[$ridx]`' />\n",

+        "comments": "",

+        "x": 2652,

+        "y": 1158,

+        "z": "540d3add.6d0b44",

+        "wires": []

+    },

+    {

+        "id": "7e2199ff.99b1c8",

+        "type": "for",

+        "name": "for each oduTopology node nep",

+        "xml": "<for index='ridx' start='0' end='`$ztetopologynodedetails.output.node.node-edge-point-id_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2132,

+        "y": 1159,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "cf240b59.497fb8"

+            ]

+        ]

+    },

+    {

+        "id": "cf240b59.497fb8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2397,

+        "y": 1158,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "e65cd4cb.61e0c8",

+                "f00776db.4dbaf8"

+            ]

+        ]

+    },

+    {

+        "id": "f75f21b7.efa77",

+        "type": "set",

+        "name": "set zte bandwidth",

+        "xml": "<set>\n<parameter name='zte-bandwidth' value='`1250000000 * $ztetopologynodenepdetails.output.node-edge-point.lp[0].odu-nep-pac.odu-capacity`' />\n",

+        "comments": "",

+        "x": 3679,

+        "y": 1598,

+        "z": "540d3add.6d0b44",

+        "wires": []

+    },

+    {

+        "id": "16563079.8d5e2",

+        "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": 1551,

+        "y": 114,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ca881019.9ce88",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1353,

+        "y": 664,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "bcbc6e2c.3314",

+                "4b8d1cd8.c32504",

+                "48652b97.2fedc4"

+            ]

+        ]

+    },

+    {

+        "id": "6aaa8b79.149894",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test=\"`$ztetopologynode.output.topology.layer-protocol-name[0] == 'ODU'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1059,

+        "y": 562,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "3cbcd27b.e8a5ce",

+                "e7e2532e.34e23"

+            ]

+        ]

+    },

+    {

+        "id": "e7e2532e.34e23",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1204,

+        "y": 664,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "ca881019.9ce88"

+            ]

+        ]

+    },

+    {

+        "id": "3cbcd27b.e8a5ce",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1206,

+        "y": 562,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "4a607014.a17fa"

+            ]

+        ]

+    },

+    {

+        "id": "9b66d171.8f74a",

+        "type": "set",

+        "name": "set topo name",

+        "xml": "<set>\n<parameter name='prop.zte.odutopo.name' value='`$ztetopology.output.topology.node-ref-id[$nidx]`' />\n",

+        "comments": "",

+        "x": 1916,

+        "y": 336,

+        "z": "540d3add.6d0b44",

+        "wires": []

+    },

+    {

+        "id": "5cd977af.6d2188",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1725,

+        "y": 336,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "9b66d171.8f74a",

+                "5d5e9d41.c00664"

+            ]

+        ]

+    },

+    {

+        "id": "36d5c2cc.d55c4e",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3216,

+        "y": 1510,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "62e34399.97db9c"

+            ]

+        ]

+    },

+    {

+        "id": "c6db88ea.32d128",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3210,

+        "y": 1437,

+        "z": "540d3add.6d0b44",

+        "wires": [

+            [

+                "209b7c79.7331c4"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_esr-thirdparty-sdnc-discovery.json b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_esr-thirdparty-sdnc-discovery.json
new file mode 100644
index 0000000..7c2cc10
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_esr-thirdparty-sdnc-discovery.json
@@ -0,0 +1,639 @@
+[

+    {

+        "id": "41629315.bd4abc",

+        "type": "other",

+        "name": "update",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 724.9999961853027,

+        "y": 349.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "9970355a.979a58"

+            ]

+        ]

+    },

+    {

+        "id": "bb11b779.ca75f8",

+        "type": "other",

+        "name": "delete",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 724.9999961853027,

+        "y": 429.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "7e0497f8.ddad68"

+            ]

+        ]

+    },

+    {

+        "id": "7e0497f8.ddad68",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 866.4999961853027,

+        "y": 429.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c60c87fa.e5d1a8",

+        "type": "comment",

+        "name": "TODO: Delete topology from AAI",

+        "info": "",

+        "comments": "",

+        "x": 799.3335151672363,

+        "y": 397.96898913383484,

+        "z": "43e1d1ad.d6a8e",

+        "wires": []

+    },

+    {

+        "id": "cb414b17.62b928",

+        "type": "switchNode",

+        "name": "switch aai-event-trigger",

+        "xml": "<switch test=\"`$data-change-notification-input.aai-event-trigger`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 555.4999961853027,

+        "y": 389.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "41629315.bd4abc",

+                "bb11b779.ca75f8"

+            ]

+        ]

+    },

+    {

+        "id": "5f482ccf.0ae764",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1252.4999961853027,

+        "y": 260.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "d220c063.b8e9a",

+                "9a482a6d.6b7268",

+                "97f2ea03.107968",

+                "f06d5e7a.dcdff",

+                "1b8d7ae8.41c4c5"

+            ]

+        ]

+    },

+    {

+        "id": "9a482a6d.6b7268",

+        "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": 1525.5001945495605,

+        "y": 182.00000381469727,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "6b4e87a7.382818",

+                "8968e872.1395d8"

+            ]

+        ]

+    },

+    {

+        "id": "6b4e87a7.382818",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1815.0002403259277,

+        "y": 173.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "abb4b716.9e6c48"

+            ]

+        ]

+    },

+    {

+        "id": "8968e872.1395d8",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1811.0002403259277,

+        "y": 213.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "570488eb.f03fc8"

+            ]

+        ]

+    },

+    {

+        "id": "abb4b716.9e6c48",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1965.5002403259277,

+        "y": 173.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": []

+    },

+    {

+        "id": "157313d5.db8b4c",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get Topology",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/ietf-network:networks'`\" />\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=\"topology\"/>\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": 2032.5002403259277,

+        "y": 293.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "33873b8b.c155b4",

+                "ce710140.b905e"

+            ]

+        ]

+    },

+    {

+        "id": "33873b8b.c155b4",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2275.0002403259277,

+        "y": 313.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "e5513b6e.ef8ac8"

+            ]

+        ]

+    },

+    {

+        "id": "e5513b6e.ef8ac8",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2432.5002403259277,

+        "y": 313.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "5d082e27.1f397"

+            ]

+        ]

+    },

+    {

+        "id": "528cf13c.0c237",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n <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": 2409.0002403259277,

+        "y": 213.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": []

+    },

+    {

+        "id": "ce710140.b905e",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2271.0002403259277,

+        "y": 213.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "528cf13c.0c237"

+            ]

+        ]

+    },

+    {

+        "id": "e8420532.df1058",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 124.99999618530273,

+        "y": 124.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "8ccfff99.445d6"

+            ]

+        ]

+    },

+    {

+        "id": "8ccfff99.445d6",

+        "type": "service-logic",

+        "name": "DataChange ${project.version}",

+        "module": "DataChange",

+        "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='DataChange' version='${project.version}'>",

+        "outputs": 1,

+        "x": 190.99999618530273,

+        "y": 184.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "9ae5c632.b6f538"

+            ]

+        ]

+    },

+    {

+        "id": "9ae5c632.b6f538",

+        "type": "method",

+        "name": "method esr-thirdparty-sdnc-discovery",

+        "xml": "<method rpc='esr-thirdparty-sdnc-discovery' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 210.99999618530273,

+        "y": 264.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "12028600.fb215a"

+            ]

+        ]

+    },

+    {

+        "id": "12028600.fb215a",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 458.49999618530273,

+        "y": 264.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "807f3d.fff210c"

+            ]

+        ]

+    },

+    {

+        "id": "5d082e27.1f397",

+        "type": "for",

+        "name": "for each Network",

+        "xml": "<for index='nidx' start='0' end='`$topology.networks.network_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1858.5002555847168,

+        "y": 413.00000953674316,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "e62b44ce.a0e368"

+            ]

+        ]

+    },

+    {

+        "id": "e62b44ce.a0e368",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2007.0002555847168,

+        "y": 413.00000953674316,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "69d3f3bb.60d83c",

+                "4e20c7e0.4989a8"

+            ]

+        ]

+    },

+    {

+        "id": "69d3f3bb.60d83c",

+        "type": "call",

+        "name": "call update-network-to-aai",

+        "xml": "<call module='DataChange' rpc='update-network-to-aai' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2186.000255584717,

+        "y": 433.00000953674316,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4e20c7e0.4989a8",

+        "type": "set",

+        "name": "set network",

+        "xml": "<set>\n<parameter name='network.' value='`$topology.networks.network[$nidx].`' />\n",

+        "comments": "",

+        "x": 2141.000255584717,

+        "y": 393.00000953674316,

+        "z": "43e1d1ad.d6a8e",

+        "wires": []

+    },

+    {

+        "id": "570488eb.f03fc8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1931.0002403259277,

+        "y": 213.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8485b334.0774f",

+        "type": "comment",

+        "name": "Do Nothing",

+        "info": "",

+        "comments": "",

+        "x": 2101.0002403259277,

+        "y": 253.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": []

+    },

+    {

+        "id": "4662cdd1.b4f8a4",

+        "type": "switchNode",

+        "name": "switch type",

+        "xml": "<switch test=\"`$prop.sdncRestApi.type`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 977.9999961853027,

+        "y": 349.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "c4659524.ddaee8",

+                "b8841114.e40fb"

+            ]

+        ]

+    },

+    {

+        "id": "9970355a.979a58",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 844.9999961853027,

+        "y": 349.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "4662cdd1.b4f8a4"

+            ]

+        ]

+    },

+    {

+        "id": "c4659524.ddaee8",

+        "type": "other",

+        "name": "SOTN",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1090.9999961853027,

+        "y": 260.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "5f482ccf.0ae764"

+            ]

+        ]

+    },

+    {

+        "id": "b8841114.e40fb",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1106.0000038146973,

+        "y": 500.00002670288086,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "3b070a5d.7f8e96"

+            ]

+        ]

+    },

+    {

+        "id": "3b070a5d.7f8e96",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unsupported type = ' + $prop.sdncRestApi.type`\" />\n\n",

+        "comments": "",

+        "x": 1284.0000038146973,

+        "y": 500.00002670288086,

+        "z": "43e1d1ad.d6a8e",

+        "wires": []

+    },

+    {

+        "id": "d220c063.b8e9a",

+        "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": 1472.0001945495605,

+        "y": 142.00000381469727,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "97f2ea03.107968",

+        "type": "switchNode",

+        "name": "switch prop.sdncRestApi.token_id",

+        "xml": "<switch test=\"`$prop.sdncRestApi.token_id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1518.5001945495605,

+        "y": 262.00000381469727,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "a5358ccb.9e8dd",

+                "7f5cb122.be2df"

+            ]

+        ]

+    },

+    {

+        "id": "a5358ccb.9e8dd",

+        "type": "other",

+        "name": "Null",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1811.0002403259277,

+        "y": 253.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "ef0365d3.97ff38"

+            ]

+        ]

+    },

+    {

+        "id": "7f5cb122.be2df",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1811.0002403259277,

+        "y": 293.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "157313d5.db8b4c"

+            ]

+        ]

+    },

+    {

+        "id": "ef0365d3.97ff38",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get Topology",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/ietf-network:networks'`\" />\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=\"topology\"/>\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",

+        "comments": "",

+        "outputs": 1,

+        "x": 2032.5002403259277,

+        "y": 253.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "ce710140.b905e",

+                "33873b8b.c155b4"

+            ]

+        ]

+    },

+    {

+        "id": "1b8d7ae8.41c4c5",

+        "type": "execute",

+        "name": "execute RestconfDiscoveryNode",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restconfdiscovery.RestconfDiscoveryNode' method='establishSubscription' >\n<parameter name=\"subscriberId\" value=\"sotn-controller\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ietf-subscribed-notifications:establish-subscription'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"sseConnectURL\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/streams/yang-push-json'`\" />\n<parameter name=\"dirPath\" value=\"/opt/sdnc/restconfapi/yang/notification\" />\n<parameter name=\"format\" value=\"json\" />\n<parameter name=\"httpMethod\" value=\"post\" />\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`\" />\n<parameter name=\"module\" value=\"DataChange\" />\n<parameter name=\"rpc\" value=\"sotn-notification-handler\" />\n<parameter name=\"mode\" value=\"sync\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1517.0001525878906,

+        "y": 400.9999828338623,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f06d5e7a.dcdff",

+        "type": "set",

+        "name": "set encoding-format",

+        "xml": "<set>\n<parameter name='ietf-subscribed-notifications_establish-subscription.input.encoding' value=\"encode-json\" />",

+        "comments": "",

+        "x": 1475.0001945495605,

+        "y": 362.00000381469727,

+        "z": "43e1d1ad.d6a8e",

+        "wires": []

+    },

+    {

+        "id": "971a117b.a06b9",

+        "type": "comment",

+        "name": "Notification subscription",

+        "info": "",

+        "comments": "",

+        "x": 1480.0003395080566,

+        "y": 319.00000286102295,

+        "z": "43e1d1ad.d6a8e",

+        "wires": []

+    },

+    {

+        "id": "807f3d.fff210c",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test=\"`$prop.sdncRestApi.vendor == 'ZTE'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 164.99999618530273,

+        "y": 389.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "1b70ca9c.7c9985",

+                "c9877e2e.2d6a5"

+            ]

+        ]

+    },

+    {

+        "id": "1b70ca9c.7c9985",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 351.99999618530273,

+        "y": 389.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "cb414b17.62b928"

+            ]

+        ]

+    },

+    {

+        "id": "c9877e2e.2d6a5",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 352.99999618530273,

+        "y": 514.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            [

+                "66b25f6e.ea9c2"

+            ]

+        ]

+    },

+    {

+        "id": "66b25f6e.ea9c2",

+        "type": "call",

+        "name": "call esr-thirdparty-sdnc-of-zte",

+        "xml": "<call module='DataChange' rpc='esr-thirdparty-sdnc-of-zte' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 575.9999961853027,

+        "y": 514.9999942779541,

+        "z": "43e1d1ad.d6a8e",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_esr-thirdparty-sdnc-of-zte.json b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_esr-thirdparty-sdnc-of-zte.json
new file mode 100644
index 0000000..756bc61
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_esr-thirdparty-sdnc-of-zte.json
@@ -0,0 +1,405 @@
+[

+    {

+        "id": "909bed3c.217f8",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 197,

+        "y": 85,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "42a75c1a.2a0054"

+            ]

+        ]

+    },

+    {

+        "id": "42a75c1a.2a0054",

+        "type": "service-logic",

+        "name": "DataChange ${project.version}",

+        "module": "DataChange",

+        "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='DataChange' version='${project.version}'>",

+        "outputs": 1,

+        "x": 341,

+        "y": 198,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "d3b58cb6.7be93"

+            ]

+        ]

+    },

+    {

+        "id": "d3b58cb6.7be93",

+        "type": "method",

+        "name": "method esr-thirdparty-sdnc-of-zte",

+        "xml": "<method rpc='esr-thirdparty-sdnc-of-zte' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 266,

+        "y": 312,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "d96a4272.22b2d"

+            ]

+        ]

+    },

+    {

+        "id": "d96a4272.22b2d",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 195,

+        "y": 446,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "81ed8292.6b82",

+                "68becb2a.3bd784",

+                "d51d2b6.59965d8",

+                "33f265dc.9b698a"

+            ]

+        ]

+    },

+    {

+        "id": "81ed8292.6b82",

+        "type": "for",

+        "name": "for 0..key-data_length",

+        "xml": "<for index='idx' start='0' end='`$data-change-notification-input.key-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 456,

+        "y": 451,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "f198696d.07cc58"

+            ]

+        ]

+    },

+    {

+        "id": "f198696d.07cc58",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 647,

+        "y": 452,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "15a59c73.3ad834",

+                "557fb41a.fc54ec",

+                "2c8b7b9f.b0acf4",

+                "25227c9b.d556a4",

+                "efe677e5.fc6308",

+                "8d2d3c75.3a0c9"

+            ]

+        ]

+    },

+    {

+        "id": "15a59c73.3ad834",

+        "type": "switchNode",

+        "name": "switch service-url",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'service-url'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 856,

+        "y": 383,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "b5b04925.886a28"

+            ]

+        ]

+    },

+    {

+        "id": "557fb41a.fc54ec",

+        "type": "switchNode",

+        "name": "switch user-name",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'user-name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 856,

+        "y": 446,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "bfe7936.c0f7f7"

+            ]

+        ]

+    },

+    {

+        "id": "2c8b7b9f.b0acf4",

+        "type": "switchNode",

+        "name": "switch password",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'password'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 852,

+        "y": 505,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "3e6f0e11.6ee952"

+            ]

+        ]

+    },

+    {

+        "id": "25227c9b.d556a4",

+        "type": "switchNode",

+        "name": "switch esr-system-info-id",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'esr-system-info-id'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 879,

+        "y": 568,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "329a080c.012238"

+            ]

+        ]

+    },

+    {

+        "id": "efe677e5.fc6308",

+        "type": "switchNode",

+        "name": "switch thirdparty-sdnc-id",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'thirdparty-sdnc-id'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 878,

+        "y": 629,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "93ea3ac5.6755a8"

+            ]

+        ]

+    },

+    {

+        "id": "8d2d3c75.3a0c9",

+        "type": "switchNode",

+        "name": "switch type",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'type'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 837,

+        "y": 696,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "840db98b.49b268"

+            ]

+        ]

+    },

+    {

+        "id": "b5b04925.886a28",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1075,

+        "y": 383,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "2d9eaf7b.6319e"

+            ]

+        ]

+    },

+    {

+        "id": "bfe7936.c0f7f7",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1074,

+        "y": 445,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "2b796aae.5b34a6"

+            ]

+        ]

+    },

+    {

+        "id": "3e6f0e11.6ee952",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1074,

+        "y": 504,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "34eaee93.2338c2"

+            ]

+        ]

+    },

+    {

+        "id": "329a080c.012238",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1074,

+        "y": 568,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "c6a07788.15af18"

+            ]

+        ]

+    },

+    {

+        "id": "93ea3ac5.6755a8",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1071,

+        "y": 629,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "4b734f80.6eb31"

+            ]

+        ]

+    },

+    {

+        "id": "840db98b.49b268",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1070,

+        "y": 695,

+        "z": "6337c566.8d383c",

+        "wires": [

+            [

+                "2ea57fe6.0f677"

+            ]

+        ]

+    },

+    {

+        "id": "2d9eaf7b.6319e",

+        "type": "set",

+        "name": "set service-url",

+        "xml": "<set>\n<parameter name='zte.prop.sdncRestApi.thirdpartySdnc.url' value='`$data-change-notification-input.key-data[$idx].key-value`' />\n",

+        "comments": "",

+        "x": 1253,

+        "y": 383,

+        "z": "6337c566.8d383c",

+        "wires": []

+    },

+    {

+        "id": "2b796aae.5b34a6",

+        "type": "set",

+        "name": "set user",

+        "xml": "<set>\n<parameter name='zte.prop.sdncRestApi.thirdpartySdnc.user' value='`$data-change-notification-input.key-data[$idx].key-value`' />\n",

+        "comments": "",

+        "x": 1253,

+        "y": 445,

+        "z": "6337c566.8d383c",

+        "wires": []

+    },

+    {

+        "id": "34eaee93.2338c2",

+        "type": "set",

+        "name": "set password",

+        "xml": "<set>\n<parameter name='zte.prop.sdncRestApi.thirdpartySdnc.password' value='`$data-change-notification-input.key-data[$idx].key-value`' />\n",

+        "comments": "",

+        "x": 1254,

+        "y": 504,

+        "z": "6337c566.8d383c",

+        "wires": []

+    },

+    {

+        "id": "c6a07788.15af18",

+        "type": "set",

+        "name": "set system-info-id",

+        "xml": "<set>\n<parameter name='zte.prop.sdncRestApi.thirdpartySdnc.system-info-id' value='`$data-change-notification-input.key-data[$idx].key-value`' />\n",

+        "comments": "",

+        "x": 1252,

+        "y": 568,

+        "z": "6337c566.8d383c",

+        "wires": []

+    },

+    {

+        "id": "4b734f80.6eb31",

+        "type": "set",

+        "name": "set thirdparty-sdnc-id",

+        "xml": "<set>\n<parameter name='zte.prop.sdncRestApi.thirdpartySdnc.id' value='`$data-change-notification-input.key-data[$idx].key-value`' />\n",

+        "comments": "",

+        "x": 1250,

+        "y": 629,

+        "z": "6337c566.8d383c",

+        "wires": []

+    },

+    {

+        "id": "2ea57fe6.0f677",

+        "type": "set",

+        "name": "set type",

+        "xml": "<set>\n<parameter name='zte.prop.sdncRestApi.type' value='`$data-change-notification-input.key-data[$idx].key-value`' />\n",

+        "comments": "",

+        "x": 1250,

+        "y": 695,

+        "z": "6337c566.8d383c",

+        "wires": []

+    },

+    {

+        "id": "68becb2a.3bd784",

+        "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/zte.svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"data-change-notification\"/>\n<parameter name=\"field3\" value=\"Config\"/>\n<parameter name=\"field4\" value=\"`service-url`\"/>\n<parameter name=\"field5\" value=\"`$zte.prop.sdncRestApi.thirdpartySdnc.url`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 406,

+        "y": 538,

+        "z": "6337c566.8d383c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d51d2b6.59965d8",

+        "type": "call",

+        "name": "call esr-thirdparty-sdnc-discovery-of-zte",

+        "xml": "<call module='DataChange' rpc='esr-thirdparty-sdnc-discovery-of-zte' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 497,

+        "y": 628,

+        "z": "6337c566.8d383c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "33f265dc.9b698a",

+        "type": "set",

+        "name": "set zte vendor",

+        "xml": "<set>\n<parameter name='prop.zte.sdncRestApi.vendor' value='`$prop.sdncRestApi.vendor`' />\n",

+        "comments": "",

+        "x": 433,

+        "y": 384,

+        "z": "6337c566.8d383c",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_esr-thirdparty-sdnc.json b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_esr-thirdparty-sdnc.json
new file mode 100644
index 0000000..4e0b325
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_esr-thirdparty-sdnc.json
@@ -0,0 +1,452 @@
+[

+    {

+        "id": "99e701a0.2410d",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 136,

+        "y": 137,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "6330fb87.7056d4"

+            ]

+        ]

+    },

+    {

+        "id": "6330fb87.7056d4",

+        "type": "service-logic",

+        "name": "DataChange ${project.version}",

+        "module": "DataChange",

+        "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='DataChange' version='${project.version}'>",

+        "outputs": 1,

+        "x": 322.1111488342285,

+        "y": 241.44447135925293,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "5d3152d6.fc261c"

+            ]

+        ]

+    },

+    {

+        "id": "5d3152d6.fc261c",

+        "type": "method",

+        "name": "method esr-thirdparty-sdnc",

+        "xml": "<method rpc='esr-thirdparty-sdnc' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 319.5556983947754,

+        "y": 405.2222566604614,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "fd1dfef.d4b4b"

+            ]

+        ]

+    },

+    {

+        "id": "fd1dfef.d4b4b",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 274.7779655456543,

+        "y": 540.1113119125366,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "9b412bae.4b0eb8",

+                "cceae5d2.b0de18",

+                "ec471744.eb69b8",

+                "ca9b8814.58fc88"

+            ]

+        ]

+    },

+    {

+        "id": "cceae5d2.b0de18",

+        "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=\"data-change-notification\"/>\n<parameter name=\"field3\" value=\"Config\"/>\n<parameter name=\"field4\" value=\"`service-url`\"/>\n<parameter name=\"field5\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url`\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 564,

+        "y": 611,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9b412bae.4b0eb8",

+        "type": "for",

+        "name": "for 0..key-data_length",

+        "xml": "<for index='idx' start='0' end='`$data-change-notification-input.key-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 612.4441070556641,

+        "y": 556.190788269043,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "d38c4e0c.d3a8e"

+            ]

+        ]

+    },

+    {

+        "id": "d38c4e0c.d3a8e",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 784.3335723876953,

+        "y": 555.4130334854126,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "923e10da.3124e",

+                "ad127485.a941f8",

+                "39c9791a.a004c6",

+                "2bf6fbdd.98dd24",

+                "e16dffa9.206d5",

+                "74936d17.d58244",

+                "f60efc3e.9d559"

+            ]

+        ]

+    },

+    {

+        "id": "923e10da.3124e",

+        "type": "switchNode",

+        "name": "switch service-url",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'service-url'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 996.5552749633789,

+        "y": 465.5241861343384,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "62882f3b.f43fb"

+            ]

+        ]

+    },

+    {

+        "id": "62882f3b.f43fb",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1160.5553970336914,

+        "y": 464.5554189682007,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "d288b1fe.c97e8"

+            ]

+        ]

+    },

+    {

+        "id": "d288b1fe.c97e8",

+        "type": "set",

+        "name": "set service-url",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value='`$data-change-notification-input.key-data[$idx].key-value`' />\n",

+        "comments": "",

+        "x": 1314.5554885864258,

+        "y": 464.1554126739502,

+        "z": "3ca15a5b.03f956",

+        "wires": []

+    },

+    {

+        "id": "ad127485.a941f8",

+        "type": "switchNode",

+        "name": "switch user-name",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'user-name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 993.8450202941895,

+        "y": 534.7712459564209,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "32e92192.48f84e"

+            ]

+        ]

+    },

+    {

+        "id": "32e92192.48f84e",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1162.8450088500977,

+        "y": 532.8024892807007,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "e32de5c0.443f28"

+            ]

+        ]

+    },

+    {

+        "id": "e32de5c0.443f28",

+        "type": "set",

+        "name": "set user",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value='`$data-change-notification-input.key-data[$idx].key-value`' />\n",

+        "comments": "",

+        "x": 1298.8451614379883,

+        "y": 532.4024801254272,

+        "z": "3ca15a5b.03f956",

+        "wires": []

+    },

+    {

+        "id": "39c9791a.a004c6",

+        "type": "switchNode",

+        "name": "switch password",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'password'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 991.6228523254395,

+        "y": 600.3267955780029,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "699a3ade.cb3b24"

+            ]

+        ]

+    },

+    {

+        "id": "699a3ade.cb3b24",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1163.6228103637695,

+        "y": 600.3580408096313,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "b4409b06.1c7a48"

+            ]

+        ]

+    },

+    {

+        "id": "b4409b06.1c7a48",

+        "type": "set",

+        "name": "set password",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value='`$data-change-notification-input.key-data[$idx].key-value`' />\n",

+        "comments": "",

+        "x": 1318.6230545043945,

+        "y": 598.9580202102661,

+        "z": "3ca15a5b.03f956",

+        "wires": []

+    },

+    {

+        "id": "ec471744.eb69b8",

+        "type": "call",

+        "name": "call esr-thirdparty-sdnc-discovery",

+        "xml": "<call module='DataChange' rpc='esr-thirdparty-sdnc-discovery' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 635.4377593994141,

+        "y": 682.5490007400513,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2bf6fbdd.98dd24",

+        "type": "switchNode",

+        "name": "switch esr-system-info-id",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'esr-system-info-id'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1013.4441528320312,

+        "y": 654.3331909179688,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "6b800452.92b53c"

+            ]

+        ]

+    },

+    {

+        "id": "6b800452.92b53c",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1188.4441375732422,

+        "y": 652.3643522262573,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "5fb25642.fe13a8"

+            ]

+        ]

+    },

+    {

+        "id": "5fb25642.fe13a8",

+        "type": "set",

+        "name": "set esr-system-info-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.system-info-id' value='`$data-change-notification-input.key-data[$idx].key-value`' />\n",

+        "comments": "",

+        "x": 1354.444107055664,

+        "y": 653.964376449585,

+        "z": "3ca15a5b.03f956",

+        "wires": []

+    },

+    {

+        "id": "e16dffa9.206d5",

+        "type": "switchNode",

+        "name": "switch thirdparty-sdnc-id",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'thirdparty-sdnc-id'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1008,

+        "y": 699,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "c89a0c6d.1572e"

+            ]

+        ]

+    },

+    {

+        "id": "c89a0c6d.1572e",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1182.999984741211,

+        "y": 697.0311613082886,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "a9287f8e.79595"

+            ]

+        ]

+    },

+    {

+        "id": "a9287f8e.79595",

+        "type": "set",

+        "name": "set thirdparty-sdnc-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.id' value='`$data-change-notification-input.key-data[$idx].key-value`' />\n",

+        "comments": "",

+        "x": 1348.9999542236328,

+        "y": 698.6311855316162,

+        "z": "3ca15a5b.03f956",

+        "wires": []

+    },

+    {

+        "id": "74936d17.d58244",

+        "type": "switchNode",

+        "name": "switch type",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'type'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 958.0000305175781,

+        "y": 748.0000200271606,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "b33cf82.eefe308"

+            ]

+        ]

+    },

+    {

+        "id": "b33cf82.eefe308",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1103.0000343322754,

+        "y": 747.0311889648438,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "dfc8eb6b.f283a8"

+            ]

+        ]

+    },

+    {

+        "id": "dfc8eb6b.f283a8",

+        "type": "set",

+        "name": "set type",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.type' value='`$data-change-notification-input.key-data[$idx].key-value`' />\n",

+        "comments": "",

+        "x": 1235.0000381469727,

+        "y": 746.6312046051025,

+        "z": "3ca15a5b.03f956",

+        "wires": []

+    },

+    {

+        "id": "f60efc3e.9d559",

+        "type": "switchNode",

+        "name": "switch vendor",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'vendor'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 959.0000267028809,

+        "y": 804.0000219345093,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "f02e6468.4f1ca8"

+            ]

+        ]

+    },

+    {

+        "id": "f02e6468.4f1ca8",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1104.0000305175781,

+        "y": 803.0311908721924,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            [

+                "4287418.30ed9c"

+            ]

+        ]

+    },

+    {

+        "id": "4287418.30ed9c",

+        "type": "set",

+        "name": "set vendor",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.vendor' value='`$data-change-notification-input.key-data[$idx].key-value`' />\n",

+        "comments": "",

+        "x": 1236.0000343322754,

+        "y": 802.6312065124512,

+        "z": "3ca15a5b.03f956",

+        "wires": []

+    },

+    {

+        "id": "ca9b8814.58fc88",

+        "type": "call",

+        "name": "call validate-esr-thirdparty-sdnc-input",

+        "xml": "<call module='DataChange' rpc='validate-esr-thirdparty-sdnc-input' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 677.7776336669922,

+        "y": 473.9998035430908,

+        "z": "3ca15a5b.03f956",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_sotn-notification-handler.json b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_sotn-notification-handler.json
new file mode 100644
index 0000000..3afacd3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_sotn-notification-handler.json
@@ -0,0 +1,234 @@
+[

+    {

+        "id": "d2908135.0d5d4",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 97,

+        "y": 79,

+        "z": "a630608e.55155",

+        "wires": [

+            [

+                "5471a4fa.5564ec"

+            ]

+        ]

+    },

+    {

+        "id": "5471a4fa.5564ec",

+        "type": "service-logic",

+        "name": "DataChange ${project.version}",

+        "module": "DataChange",

+        "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='DataChange' version='${project.version}'>",

+        "outputs": 1,

+        "x": 297.5,

+        "y": 79,

+        "z": "a630608e.55155",

+        "wires": [

+            [

+                "41ad4a7a.dfb5f4"

+            ]

+        ]

+    },

+    {

+        "id": "41ad4a7a.dfb5f4",

+        "type": "method",

+        "name": "method sotn-notification-handler",

+        "xml": "<method rpc='sotn-notification-handler' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 268.5,

+        "y": 160,

+        "z": "a630608e.55155",

+        "wires": [

+            [

+                "58822b09.726d74"

+            ]

+        ]

+    },

+    {

+        "id": "3b461d1c.951192",

+        "type": "execute",

+        "name": "execute parseIdFromTarget",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$notification.push-change-update.datastore-changes.yang-patch.edit[0].target`'/>\n<parameter name=\"regex\" value=\"/\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"yang-nodes\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 254,

+        "y": 220,

+        "z": "a630608e.55155",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a4b6ea60.fbfc48",

+        "type": "execute",

+        "name": "execute last node",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$yang-nodes[$yang-nodes_length -1]`'/>\n<parameter name=\"regex\" value=\"=\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"last-node\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 223.5,

+        "y": 280,

+        "z": "a630608e.55155",

+        "wires": [

+            [

+                "4fda0bd8.3d5334",

+                "a280007a.e935d"

+            ]

+        ]

+    },

+    {

+        "id": "4e95c5c1.30f36c",

+        "type": "execute",

+        "name": "execute parse topo node",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$yang-nodes[$yang-nodes_length -2]`'/>\n<parameter name=\"regex\" value=\"=\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"node-prefix\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1185.5,

+        "y": 280,

+        "z": "a630608e.55155",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4b491788.1b21b8",

+        "type": "set",

+        "name": "set unique-ltpId",

+        "xml": "<set>\n<parameter name='unique-ltpId' value=\"`'nodeId-' + $node-prefix[$node-prefix_length -1] + '-ltpId-' + $last-node[$last-node_length -1]`\" />\n",

+        "comments": "",

+        "x": 1156.5,

+        "y": 320,

+        "z": "a630608e.55155",

+        "wires": []

+    },

+    {

+        "id": "f935a561.72ecd8",

+        "type": "update",

+        "name": "update p-interface",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='p-interface' \n      key='pnf.pnf-name = $node.node-id\n      AND p-interface.interface-name = $unique-ltpId' >      \n<parameter name='interface-name' value='`$unique-ltpId`' />\n<parameter name='operational-status' value='`$notification.push-change-update.datastore-changes.yang-patch.edit[0].value.termination-point[0].te.oper-status`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1165,

+        "y": 360,

+        "z": "a630608e.55155",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "58822b09.726d74",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 491,

+        "y": 160,

+        "z": "a630608e.55155",

+        "wires": [

+            [

+                "3b461d1c.951192",

+                "a4b6ea60.fbfc48"

+            ]

+        ]

+    },

+    {

+        "id": "8ad7a79a.b1d9a8",

+        "type": "switchNode",

+        "name": "switch last-node type",

+        "xml": "<switch test='`$last-node[0]`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 734,

+        "y": 260,

+        "z": "a630608e.55155",

+        "wires": [

+            [

+                "4f529877.c2c438"

+            ]

+        ]

+    },

+    {

+        "id": "4f529877.c2c438",

+        "type": "outcome",

+        "name": "outcome ietf-network-topology:termination-point",

+        "xml": "<outcome value='ietf-network-topology:termination-point'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 696,

+        "y": 320,

+        "z": "a630608e.55155",

+        "wires": [

+            [

+                "33395266.1d862e"

+            ]

+        ]

+    },

+    {

+        "id": "33395266.1d862e",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 971,

+        "y": 320,

+        "z": "a630608e.55155",

+        "wires": [

+            [

+                "4e95c5c1.30f36c",

+                "4b491788.1b21b8",

+                "f935a561.72ecd8"

+            ]

+        ]

+    },

+    {

+        "id": "f7127d7b.6e386",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 550,

+        "y": 260,

+        "z": "a630608e.55155",

+        "wires": [

+            [

+                "8ad7a79a.b1d9a8"

+            ]

+        ]

+    },

+    {

+        "id": "4fda0bd8.3d5334",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 414,

+        "y": 260,

+        "z": "a630608e.55155",

+        "wires": [

+            [

+                "f7127d7b.6e386"

+            ]

+        ]

+    },

+    {

+        "id": "a280007a.e935d",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 410,

+        "y": 300,

+        "z": "a630608e.55155",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_update-network-to-aai.json b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_update-network-to-aai.json
new file mode 100644
index 0000000..f82168b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_update-network-to-aai.json
@@ -0,0 +1,302 @@
+[
+  {
+    "id": "4d48ad52.66bce4",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 116,
+    "y": 72,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      [
+        "66f854f4.bc80cc"
+      ]
+    ]
+  },
+  {
+    "id": "66f854f4.bc80cc",
+    "type": "service-logic",
+    "name": "DataChange ${project.version}",
+    "module": "DataChange",
+    "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='DataChange' version='${project.version}'>",
+    "outputs": 1,
+    "x": 205.00003051757812,
+    "y": 162.88891220092773,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      [
+        "7eee0fcc.e1d78"
+      ]
+    ]
+  },
+  {
+    "id": "7eee0fcc.e1d78",
+    "type": "method",
+    "name": "method update-network-to-aai",
+    "xml": "<method rpc='update-network-to-aai' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 241.1112518310547,
+    "y": 233.22223663330078,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      [
+        "dd17da81.f85678"
+      ]
+    ]
+  },
+  {
+    "id": "dd17da81.f85678",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 466.33343505859375,
+    "y": 232.77792358398438,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      [
+        "c70a984d.cc2a48",
+        "5cf53006.e1ea9",
+        "a9f8a08c.a159f"
+      ]
+    ]
+  },
+  {
+    "id": "5cf53006.e1ea9",
+    "type": "update",
+    "name": "save network-resource",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='network-resource'  \n     key='network-resource.network-id = $tmp.network-id' >\n<parameter name='network-id' value='`$tmp.network-id`' />\n<parameter name='client-id' value='`$network.client-id`' />\n<parameter name='te-topo-id' value='`$network.te-topology-id`' />\n<parameter name='provider-id' value='`$network.provider-id`' />\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 696.333251953125,
+    "y": 138.00001525878906,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "bc0b4672.53b908",
+    "type": "update",
+    "name": "save pnf",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf' \n      key='pnf.pnf-name = $node.node-id' >\n<parameter name='pnf-name' value='`$node.node-id`' />\n<parameter name='pnf-id' value='`$node.node-id`' />\n<parameter name='operational-status' value='`$node.te.oper-status`' />\n<parameter name='admin-status' value='`$node.te.te-node-attributes.admin-status`' />\n<parameter name='in-maint' value='true' />\n\n\n\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 879.111141204834,
+    "y": 191.111102104187,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a9f8a08c.a159f",
+    "type": "for",
+    "name": "for each node",
+    "xml": "<for index='pidx' start='0' end='`$network.node_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 679.8888549804688,
+    "y": 208.33331298828125,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      [
+        "bc0b4672.53b908",
+        "6b3704fc.0bd35c",
+        "24e04af5.ddea66",
+        "9b1ff78d.8b3c08",
+        "8e9342c1.220f"
+      ]
+    ]
+  },
+  {
+    "id": "6b3704fc.0bd35c",
+    "type": "set",
+    "name": "set network",
+    "xml": "<set>\n<parameter name='node.' value='`$network.node[$pidx].`' />\n",
+    "comments": "",
+    "x": 893.111083984375,
+    "y": 156.2222137451172,
+    "z": "972d7ac.f66db88",
+    "wires": []
+  },
+  {
+    "id": "9b1ff78d.8b3c08",
+    "type": "save",
+    "name": "save pnf relationship to network-resource in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf:relationship-list' \n      key='pnf.pnf-name = $node.node-id' force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"network-resource\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/network-resources/network-resource/' + $tmp.network-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"network-resource.network-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.network-id`\" />",
+    "comments": "",
+    "outputs": 1,
+    "x": 1004.7779541015625,
+    "y": 223.44447803497314,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "8e9342c1.220f",
+    "type": "for",
+    "name": "for each termination point",
+    "xml": "<for index='tidx' start='0' end='`$node.termination-point_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 937.4444580078125,
+    "y": 339.111083984375,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      [
+        "7c32bd23.da1e04",
+        "38ff90b0.67e0b",
+        "36dd756f.9a425a"
+      ]
+    ]
+  },
+  {
+    "id": "7c32bd23.da1e04",
+    "type": "set",
+    "name": "set termination point",
+    "xml": "<set>\n<parameter name='tp.' value='`$node.termination-point[$tidx].`' />\n",
+    "comments": "",
+    "x": 1204.111328125,
+    "y": 300.0000457763672,
+    "z": "972d7ac.f66db88",
+    "wires": []
+  },
+  {
+    "id": "36dd756f.9a425a",
+    "type": "update",
+    "name": "save p-interface",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='p-interface' \n      key='pnf.pnf-name = $node.node-id\n      AND p-interface.interface-name = $unique-ltpId' >      \n<parameter name='interface-name' value='`$unique-ltpId`' />\n<parameter name='network-ref' value='`$tp.supporting-termination-point[0].network-ref`' />\n<parameter name='transparent' value='`$tp.svc.supported-classification.transparent`' />\n<parameter name='speed-value' value='`$tp.te.interface-switching-capability[0].max-lsp-bandwidth[0].te-bandwidth.eth-bandwidth`' />\n<parameter name='operational-status' value='`$tp.te.oper-status`' />\n<parameter name='in-maint' value=\"true\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1187.8151397705078,
+    "y": 473.5555934906006,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      [
+        "310a666a.23204a",
+        "52308d76.244944"
+      ]
+    ]
+  },
+  {
+    "id": "9b33d7c5.abef78",
+    "type": "save",
+    "name": "save pnf relationship to p-interface in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf:relationship-list' \n      key='pnf.pnf-name = $node.node-id' force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"p-interface\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/network-resources/network-resource/' + $tmp.network-id + '/pnfs/pnf/' + $node.node-id '/p-interfaces/p-interface/' + $unique-ltpId`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"p-interface.interface-name\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$unique-ltpId`\" />",
+    "comments": "",
+    "outputs": 1,
+    "x": 1263.7038879394531,
+    "y": 562.333345413208,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "38ff90b0.67e0b",
+    "type": "set",
+    "name": "set unique-ltpId",
+    "xml": "<set>\n<parameter name='unique-ltpId' value=\"`'nodeId-' + $node.node-id + '-ltpId-' + $tp.te-tp-id`\" />\n",
+    "comments": "",
+    "x": 1188.000244140625,
+    "y": 334.1111145019531,
+    "z": "972d7ac.f66db88",
+    "wires": []
+  },
+  {
+    "id": "c70a984d.cc2a48",
+    "type": "execute",
+    "name": "execute",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$network.network-id`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.network-id\"/>\n    <parameter name=\"target\" value=\"/\"/>\n    <parameter name=\"replacement\" value=\"-\"/>\n    ",
+    "comments": "",
+    "outputs": 1,
+    "x": 645.9935302734375,
+    "y": 98.99349212646484,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "24e04af5.ddea66",
+    "type": "save",
+    "name": "save pnf relation with esr-thirdparty-sdnc",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='esr-thirdparty-sdnc:relationship-list' \n      key='esr-thirdparty-sdnc.thirdparty-sdnc-id = $prop.sdncRestApi.thirdpartySdnc.id' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"pnf\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/pnfs/pnf/' + $node.node-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"pnf.pnf-name\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$node.node-id`\" />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 986,
+    "y": 259.9934997558594,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "310a666a.23204a",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1359.4998397827148,
+    "y": 460.7460689544678,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      [
+        "fcc0153a.edfd18"
+      ]
+    ]
+  },
+  {
+    "id": "52308d76.244944",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1353.1784286499023,
+    "y": 512.9603805541992,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      [
+        "1c6a1f1f.8e0f61"
+      ]
+    ]
+  },
+  {
+    "id": "fcc0153a.edfd18",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1510,
+    "y": 460,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "1c6a1f1f.8e0f61",
+    "type": "update",
+    "name": "save p-interface",
+    "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='p-interface' \n      key='pnf.pnf-name = $node.node-id\n      AND p-interface.interface-name = $unique-ltpId' >      \n<parameter name='interface-name' value='`$unique-ltpId`' />\n<parameter name='network-ref' value='`$tp.supporting-termination-point[0].network-ref`' />\n<parameter name='transparent' value='`$tp.svc.supported-classification.transparent`' />\n<parameter name='speed-value' value='`$tp.te.interface-switching-capability[0].max-lsp-bandwidth[0].te-bandwidth.eth-bandwidth`' />\n<parameter name='operational-status' value='`$tp.te.oper-status`' />\n<parameter name='in-maint' value=\"true\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1530,
+    "y": 510,
+    "z": "972d7ac.f66db88",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_validate-esr-thirdparty-sdnc-input.json b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_validate-esr-thirdparty-sdnc-input.json
new file mode 100644
index 0000000..b17138e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/json/DataChange_validate-esr-thirdparty-sdnc-input.json
@@ -0,0 +1,457 @@
+[

+    {

+        "id": "757023b0.c2468c",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 117.00390625,

+        "y": 95.99999871850014,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "7a528753.0793a8"

+            ]

+        ]

+    },

+    {

+        "id": "7a528753.0793a8",

+        "type": "service-logic",

+        "name": "DataChange ${project.version}",

+        "module": "DataChange",

+        "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='DataChange' version='${project.version}'>",

+        "outputs": 1,

+        "x": 320.11501693725586,

+        "y": 98.00002494454384,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "ae93aaac.418418"

+            ]

+        ]

+    },

+    {

+        "id": "ae93aaac.418418",

+        "type": "method",

+        "name": "method validate-esr-thirdparty-sdnc-input",

+        "xml": "<method rpc='validate-esr-thirdparty-sdnc-input' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 398.5596008300781,

+        "y": 220.00002479553223,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "37ee7462.da3a1c"

+            ]

+        ]

+    },

+    {

+        "id": "2152ae75.5db0e2",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2487.0038986206055,

+        "y": 1273.5555483400822,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "e2ca5b21.1154c8"

+            ]

+        ]

+    },

+    {

+        "id": "e2ca5b21.1154c8",

+        "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": 2668.0038986206055,

+        "y": 1271.5555483400822,

+        "z": "43ea58cb.5b56b8",

+        "wires": []

+    },

+    {

+        "id": "6fe2c29e.8f19cc",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2485.0038986206055,

+        "y": 1375.5555483400822,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "e3dd559f.6ba7b8"

+            ]

+        ]

+    },

+    {

+        "id": "e3dd559f.6ba7b8",

+        "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": 2666.0038986206055,

+        "y": 1373.5555483400822,

+        "z": "43ea58cb.5b56b8",

+        "wires": []

+    },

+    {

+        "id": "47680dcc.0511d4",

+        "type": "failure",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2486.0038986206055,

+        "y": 1207.5555483400822,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "18757b49.6ae535"

+            ]

+        ]

+    },

+    {

+        "id": "f3d08cd7.3ee9b",

+        "type": "failure",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2482.0038986206055,

+        "y": 1327.5555483400822,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "20888a03.0d8406"

+            ]

+        ]

+    },

+    {

+        "id": "18757b49.6ae535",

+        "type": "set",

+        "name": "set route1 ip-prefix next-hop",

+        "xml": "<set>\n<parameter name='prop.l3vpn.sna1-route.ip-prefix' value='`$route1[0]`' />\n<parameter name='prop.l3vpn.sna1-route.next-hop' value='`$route1[1]`' />\n",

+        "comments": "",

+        "x": 2693.0038986206055,

+        "y": 1201.5555483400822,

+        "z": "43ea58cb.5b56b8",

+        "wires": []

+    },

+    {

+        "id": "20888a03.0d8406",

+        "type": "set",

+        "name": "set route2 ip-prefix next-hop",

+        "xml": "<set>\n<parameter name='prop.l3vpn.sna2-route.ip-prefix' value='`$route2[0]`' />\n<parameter name='prop.l3vpn.sna2-route.next-hop' value='`$route2[1]`' />",

+        "comments": "",

+        "x": 2693.0038986206055,

+        "y": 1320.5555483400822,

+        "z": "43ea58cb.5b56b8",

+        "wires": []

+    },

+    {

+        "id": "e1257f0.a7f488",

+        "type": "switchNode",

+        "name": "switch aai-node-type",

+        "xml": "<switch test='`$data-change-notification-input.aai-node-type`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 786.8929500579834,

+        "y": 374.5555830001831,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "ec1259f5.ebbc68"

+            ]

+        ]

+    },

+    {

+        "id": "ec1259f5.ebbc68",

+        "type": "other",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1012.6072008950368,

+        "y": 357.5555825914653,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "df711004.31bd3"

+            ]

+        ]

+    },

+    {

+        "id": "df711004.31bd3",

+        "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=\"data-change-notification-input.aai-node-type is a required input\" />\n",

+        "comments": "",

+        "x": 1164.0357668740407,

+        "y": 357.55558068411665,

+        "z": "43ea58cb.5b56b8",

+        "wires": []

+    },

+    {

+        "id": "ecc0f598.db90c8",

+        "type": "switchNode",

+        "name": "switch aai-event-trigger",

+        "xml": "<switch test='`$data-change-notification-input.aai-event-trigger`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 796.464277267456,

+        "y": 316.12700843811035,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "a9518242.ec786"

+            ]

+        ]

+    },

+    {

+        "id": "a9518242.ec786",

+        "type": "other",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1011.1786212921143,

+        "y": 314.69840812683105,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "239438cd.9f0138"

+            ]

+        ]

+    },

+    {

+        "id": "239438cd.9f0138",

+        "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=\"data-change-notification-input.aai-event-trigger is a required input\" />\n",

+        "comments": "",

+        "x": 1161.1785945892334,

+        "y": 314.6984176635742,

+        "z": "43ea58cb.5b56b8",

+        "wires": []

+    },

+    {

+        "id": "4bbc510.85d9db",

+        "type": "for",

+        "name": "for 0..key-data_length",

+        "xml": "<for index='idx' start='0' end='`$data-change-notification-input.key-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 785.3373355865479,

+        "y": 445.0000476837158,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "de7f2e06.cc171"

+            ]

+        ]

+    },

+    {

+        "id": "de7f2e06.cc171",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 737.2263736724854,

+        "y": 535.4444351196289,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "2f8a5311.978d7c",

+                "267435da.461d5a",

+                "596d52bd.fd695c"

+            ]

+        ]

+    },

+    {

+        "id": "a0ba4f6d.060be",

+        "type": "other",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1183.671136856079,

+        "y": 557.7778100967407,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "49a377b1.d9e3a8"

+            ]

+        ]

+    },

+    {

+        "id": "577c0f47.e83ae",

+        "type": "other",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1178.2425479888916,

+        "y": 496.92064571380615,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "713caa1.0fcb154"

+            ]

+        ]

+    },

+    {

+        "id": "713caa1.0fcb154",

+        "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=\"data-change-notification-input.key-data.key-data.service-url is a required input\" />\n",

+        "comments": "",

+        "x": 1367.2424297332764,

+        "y": 495.92064571380615,

+        "z": "43ea58cb.5b56b8",

+        "wires": []

+    },

+    {

+        "id": "8eb34243.18f14",

+        "type": "other",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1186.671136856079,

+        "y": 620.634973526001,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "347ffe80.91f072"

+            ]

+        ]

+    },

+    {

+        "id": "37ee7462.da3a1c",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 488.892822265625,

+        "y": 378.77777767181396,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "ecc0f598.db90c8",

+                "e1257f0.a7f488",

+                "4bbc510.85d9db"

+            ]

+        ]

+    },

+    {

+        "id": "2f8a5311.978d7c",

+        "type": "switchNode",

+        "name": "switch service-url",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'service-url'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 987.7076587677002,

+        "y": 495,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "577c0f47.e83ae"

+            ]

+        ]

+    },

+    {

+        "id": "267435da.461d5a",

+        "type": "switchNode",

+        "name": "switch user-name",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'user-name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 987.9973659515381,

+        "y": 564.2470645904541,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "a0ba4f6d.060be"

+            ]

+        ]

+    },

+    {

+        "id": "596d52bd.fd695c",

+        "type": "switchNode",

+        "name": "switch password",

+        "xml": "<switch test=\"`$data-change-notification-input.key-data[$idx].key-name == 'password'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 985.7751979827881,

+        "y": 629.8026142120361,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            [

+                "8eb34243.18f14"

+            ]

+        ]

+    },

+    {

+        "id": "49a377b1.d9e3a8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1347.337236404419,

+        "y": 557.2222194671631,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "347ffe80.91f072",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1350.670488357544,

+        "y": 626.11110496521,

+        "z": "43ea58cb.5b56b8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "110d1cac.458883",

+        "type": "comment",

+        "name": "do nothing to support http",

+        "info": "",

+        "comments": "",

+        "x": 1542.8929843902588,

+        "y": 555.0000343322754,

+        "z": "43ea58cb.5b56b8",

+        "wires": []

+    },

+    {

+        "id": "83190729.11d658",

+        "type": "comment",

+        "name": "do nothing to support http",

+        "info": "",

+        "comments": "",

+        "x": 1542.8927783966064,

+        "y": 624.9999752044678,

+        "z": "43ea58cb.5b56b8",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/resources/graph.versions b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/resources/graph.versions
new file mode 100644
index 0000000..1901fd0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/resources/graph.versions
@@ -0,0 +1,7 @@
+DataChange data-change-notification ${project.version} sync
+DataChange esr-thirdparty-sdnc ${project.version} sync
+DataChange esr-thirdparty-sdnc-of-zte ${project.version} sync
+DataChange validate-esr-thirdparty-sdnc-input ${project.version} sync
+DataChange esr-thirdparty-sdnc-discovery ${project.version} sync
+DataChange esr-thirdparty-sdnc-discovery-of-zte ${project.version} sync
+DataChange update-network-to-aai ${project.version} sync
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_data-change-notification.xml b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_data-change-notification.xml
new file mode 100644
index 0000000..76f2fe8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_data-change-notification.xml
@@ -0,0 +1,27 @@
+<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='DataChange' version='${project.version}'>

+    <method rpc='data-change-notification' mode='sync'>

+        <block atomic="true">

+            <switch test='`$data-change-notification-input.aai-node-type`'>

+                <outcome value='esr-thirdparty-sdnc'>

+                    <block atomic="true">

+                        <call module='DataChange' rpc='esr-thirdparty-sdnc' mode='sync' ></call>

+                    </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="AAI node type not supported" />

+                    </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/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_esr-thirdparty-sdnc-discovery-of-zte.xml b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_esr-thirdparty-sdnc-discovery-of-zte.xml
new file mode 100644
index 0000000..4ffb73e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_esr-thirdparty-sdnc-discovery-of-zte.xml
@@ -0,0 +1,292 @@
+<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='DataChange' version='${project.version}'>

+    <method rpc='esr-thirdparty-sdnc-discovery-of-zte' mode='sync'>

+        <block atomic='true'>

+            <switch test="`$data-change-notification-input.aai-event-trigger`">

+                <outcome value='Update'>

+                    <block>

+                        <switch test="`$zte.prop.sdncRestApi.type`">

+                            <outcome value='SOTN'>

+                                <block atomic='true'>

+                                    <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>

+                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                        <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/getzteodutopotemplate.json'`" />

+                                        <parameter name="restapiUrl" value="`$zte.prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ZTE-API-Topology:get-topology-details'`" />

+                                        <parameter name="restapiUser" value="`$zte.prop.sdncRestApi.thirdpartySdnc.user`" />

+                                        <parameter name="restapiPassword" value="`$zte.prop.sdncRestApi.thirdpartySdnc.password`" />

+                                        <parameter name="format" value="json"/>

+                                        <parameter name="httpMethod" value="POST"/>

+                                        <parameter name="responsePrefix" value="ztetopology"/>

+                                        <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 Get odutopo rest api" />

+                                            </return>

+                                        </outcome>

+                                    </execute>

+                                    <for index='nidx' start='0' end='`$ztetopology.output.topology.node-ref-id_length`' >

+                                        <block>

+                                            <set>

+                                                <parameter name='prop.zte.odutopo.name' value='`$ztetopology.output.topology.node-ref-id[$nidx]`' />

+                                            </set>

+                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/getzteodutoponodetemplate.json'`" />

+                                                <parameter name="restapiUrl" value="`$zte.prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ZTE-API-Topology:get-topology-details'`" />

+                                                <parameter name="restapiUser" value="`$zte.prop.sdncRestApi.thirdpartySdnc.user`" />

+                                                <parameter name="restapiPassword" value="`$zte.prop.sdncRestApi.thirdpartySdnc.password`" />

+                                                <parameter name="format" value="json"/>

+                                                <parameter name="httpMethod" value="POST"/>

+                                                <parameter name="responsePrefix" value="ztetopologynode"/>

+                                                <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 odutopo node rest api" />

+                                                    </return>

+                                                </outcome>

+                                                <outcome value='success'>

+                                                    <switch test="`$ztetopologynode.output.topology.layer-protocol-name[0] == 'ODU'`">

+                                                        <outcome value='false'>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='true'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name='prop.zte.network-id' value="zteNetwork" />

+                                                                    <parameter name='prop.zte.client-id' value="zteClient1" />

+                                                                    <parameter name='prop.zte.topo-id' value="zteTopo1" />

+                                                                    <parameter name='prop.zte.provider-id' value="zteProvider1" />

+                                                                </set>

+                                                                <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='network-resource'  

+     key='network-resource.network-id = $prop.zte.network-id' >

+                                                                    <parameter name='network-id' value='`$prop.zte.network-id`' />

+                                                                    <parameter name='client-id' value='`$prop.zte.client-id`' />

+                                                                    <parameter name='te-topo-id' value='`$prop.zte.topo-id`' />

+                                                                    <parameter name='provider-id' value='`$prop.zte.provider-id`' />

+                                                                </save>

+                                                                <for index='pidx' start='0' end='`$ztetopologynode.output.topology.node-ref-id_length`' >

+                                                                    <block>

+                                                                        <set>

+                                                                            <parameter name='prop.zte.odutopo.node.name' value='`$ztetopologynode.output.topology.node-ref-id[$pidx]`' />

+                                                                        </set>

+                                                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                            <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/getzteodutoponodedetailstemplate.json'`" />

+                                                                            <parameter name="restapiUrl" value="`$zte.prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ZTE-API-Topology:get-node-details'`" />

+                                                                            <parameter name="restapiUser" value="`$zte.prop.sdncRestApi.thirdpartySdnc.user`" />

+                                                                            <parameter name="restapiPassword" value="`$zte.prop.sdncRestApi.thirdpartySdnc.password`" />

+                                                                            <parameter name="format" value="json"/>

+                                                                            <parameter name="httpMethod" value="POST"/>

+                                                                            <parameter name="responsePrefix" value="ztetopologynodedetails"/>

+                                                                            <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 odutopo node details rest api" />

+                                                                                </return>

+                                                                            </outcome>

+                                                                            <outcome value='success'>

+                                                                                <block>

+                                                                                    <switch test="`$ztetopologynodedetails.output.node.global-state-pac.operational-state == 'ENABLED'`">

+                                                                                        <outcome value='true'>

+                                                                                            <switch test="`$ztetopologynodedetails.output.node.global-state-pac.administrative-state == 'LOCKED'`">

+                                                                                                <outcome value='true'>

+                                                                                                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf' 

+      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid' >

+                                                                                                        <parameter name='pnf-name' value='`$ztetopologynodedetails.output.node.uuid`' />

+                                                                                                        <parameter name='pnf-id' value='`$ztetopologynodedetails.output.node.uuid`' />

+                                                                                                        <parameter name='operational-status' value="up" />

+                                                                                                        <parameter name='admin-status' value="up" />

+                                                                                                        <parameter name='in-maint' value='true' />

+                                                                                                    </save>

+                                                                                                </outcome>

+                                                                                                <outcome value='false'>

+                                                                                                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf' 

+      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid' >

+                                                                                                        <parameter name='pnf-name' value='`$ztetopologynodedetails.output.node.uuid`' />

+                                                                                                        <parameter name='pnf-id' value='`$ztetopologynodedetails.output.node.uuid`' />

+                                                                                                        <parameter name='operational-status' value="up" />

+                                                                                                        <parameter name='admin-status' value="down" />

+                                                                                                        <parameter name='in-maint' value='true' />

+                                                                                                    </save>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </outcome>

+                                                                                        <outcome value='false'>

+                                                                                            <switch test="`$ztetopologynodedetails.output.node.global-state-pac.administrative-state == 'LOCKED'`">

+                                                                                                <outcome value='true'>

+                                                                                                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf' 

+      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid' >

+                                                                                                        <parameter name='pnf-name' value='`$ztetopologynodedetails.output.node.uuid`' />

+                                                                                                        <parameter name='pnf-id' value='`$ztetopologynodedetails.output.node.uuid`' />

+                                                                                                        <parameter name='operational-status' value="down" />

+                                                                                                        <parameter name='admin-status' value="up" />

+                                                                                                        <parameter name='in-maint' value='true' />

+                                                                                                    </save>

+                                                                                                </outcome>

+                                                                                                <outcome value='false'>

+                                                                                                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf' 

+      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid' >

+                                                                                                        <parameter name='pnf-name' value='`$ztetopologynodedetails.output.node.uuid`' />

+                                                                                                        <parameter name='pnf-id' value='`$ztetopologynodedetails.output.node.uuid`' />

+                                                                                                        <parameter name='operational-status' value="down" />

+                                                                                                        <parameter name='admin-status' value="down" />

+                                                                                                        <parameter name='in-maint' value='true' />

+                                                                                                    </save>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf:relationship-list' 

+      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid' force="true" pfx="tmp.AnAI-data">

+                                                                                        <parameter name="relationship-list.relationship[0].related-to" value="network-resource" />

+                                                                                        <parameter name="relationship-list.relationship[0].related-link" value="`'/network/network-resources/network-resource/' + $prop.zte.network-id`" />

+                                                                                        <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-resource.network-id" />

+                                                                                        <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.zte.network-id`" />

+                                                                                    </save>

+                                                                                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='esr-thirdparty-sdnc:relationship-list' 

+      key='esr-thirdparty-sdnc.thirdparty-sdnc-id = $zte.prop.sdncRestApi.thirdpartySdnc.id' 

+      force="true" pfx="tmp.AnAI-data">

+                                                                                        <parameter name="relationship-list.relationship[0].related-to" value="pnf" />

+                                                                                        <parameter name="relationship-list.relationship[0].related-link" value="`'/network/pnfs/pnf/' + $ztetopologynodedetails.output.node.uuid`" />

+                                                                                        <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="pnf.pnf-name" />

+                                                                                        <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$ztetopologynodedetails.output.node.uuid`" />

+                                                                                    </save>

+                                                                                    <for index='ridx' start='0' end='`$ztetopologynodedetails.output.node.node-edge-point-id_length`' >

+                                                                                        <block>

+                                                                                            <set>

+                                                                                                <parameter name='prop.zte.odutopo.node.nep.uuid' value='`$ztetopologynodedetails.output.node.node-edge-point-id[$ridx]`' />

+                                                                                            </set>

+                                                                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                                                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/getzteodutoponodenepdetailstemplate.json'`" />

+                                                                                                <parameter name="restapiUrl" value="`$zte.prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ZTE-API-Topology:get-node-edge-point-details'`" />

+                                                                                                <parameter name="restapiUser" value="`$zte.prop.sdncRestApi.thirdpartySdnc.user`" />

+                                                                                                <parameter name="restapiPassword" value="`$zte.prop.sdncRestApi.thirdpartySdnc.password`" />

+                                                                                                <parameter name="format" value="json"/>

+                                                                                                <parameter name="httpMethod" value="POST"/>

+                                                                                                <parameter name="responsePrefix" value="ztetopologynodenepdetails"/>

+                                                                                                <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 odutopo node edge point details rest api" />

+                                                                                                    </return>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <for index='tidx' start='0' end='`$ztetopologynodenepdetails.output.node-edge-point.name_length`' >

+                                                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >

+                                                                                                            <parameter name="source" value="`$ztetopologynodenepdetails.node-edge-point.name[tidx].value`"/>

+                                                                                                            <parameter name="target" value="client"/>

+                                                                                                            <outcome value='failure'>

+                                                                                                                <block></block>

+                                                                                                            </outcome>

+                                                                                                            <outcome value='success'>

+                                                                                                                <block>

+                                                                                                                    <set>

+                                                                                                                        <parameter name='zte-unique-ltpId' value="`'nodeId-' + $ztetopologynodedetails.output.node.uuid + '-ltpId-' + $ztetopologynodenepdetails.output.node-edge-point.uuid`" />

+                                                                                                                    </set>

+                                                                                                                    <set>

+                                                                                                                        <parameter name='zte-bandwidth' value='`1250000000 * $ztetopologynodenepdetails.output.node-edge-point.lp[0].odu-nep-pac.odu-capacity`' />

+                                                                                                                    </set>

+                                                                                                                    <switch test="`$ztetopologynodedetails.output.node.global-state-pac.operational-state == 'ENABLED'`">

+                                                                                                                        <outcome value='true'>

+                                                                                                                            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='p-interface' 

+      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid

+      AND p-interface.interface-name = $zte-unique-ltpId' >

+                                                                                                                                <parameter name='interface-name' value='`$zte-unique-ltpId`' />

+                                                                                                                                <parameter name='network-ref' value="`'providerId/' + $prop.zte.provider-id + '/topologyId/' + $prop.zte.topo-id + '/clientId/' + $prop.zte.client-id`" />

+                                                                                                                                <parameter name='transparent' value="true" />

+                                                                                                                                <parameter name='speed-value' value='`$zte-bandwidth`' />

+                                                                                                                                <parameter name='operational-status' value="up" />

+                                                                                                                                <parameter name='in-maint' value="true" />

+                                                                                                                                <outcome value='success'>

+                                                                                                                                    <block></block>

+                                                                                                                                </outcome>

+                                                                                                                                <outcome value='failure'>

+                                                                                                                                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='p-interface' 

+      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid

+      AND p-interface.interface-name = $zte-unique-ltpId' >

+                                                                                                                                        <parameter name='interface-name' value='`$zte-unique-ltpId`' />

+                                                                                                                                        <parameter name='network-ref' value="`'providerId/' + $prop.zte.provider-id + '/topologyId/' + $prop.zte.topo-id + '/clientId/' + $prop.zte.client-id`" />

+                                                                                                                                        <parameter name='transparent' value="true" />

+                                                                                                                                        <parameter name='speed-value' value='`$zte-bandwidth`' />

+                                                                                                                                        <parameter name='operational-status' value="up" />

+                                                                                                                                        <parameter name='in-maint' value="true" />

+                                                                                                                                    </save>

+                                                                                                                                </outcome>

+                                                                                                                            </save>

+                                                                                                                        </outcome>

+                                                                                                                        <outcome value='false'>

+                                                                                                                            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='p-interface' 

+      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid

+      AND p-interface.interface-name = $zte-unique-ltpId' >

+                                                                                                                                <parameter name='interface-name' value='`$zte-unique-ltpId`' />

+                                                                                                                                <parameter name='network-ref' value="`'providerId/' + $prop.zte.provider-id + '/topologyId/' + $prop.zte.topo-id + '/clientId/' + $prop.zte.client-id`" />

+                                                                                                                                <parameter name='transparent' value="true" />

+                                                                                                                                <parameter name='speed-value' value='`$zte-bandwidth`' />

+                                                                                                                                <parameter name='operational-status' value="down" />

+                                                                                                                                <parameter name='in-maint' value="true" />

+                                                                                                                                <outcome value='success'>

+                                                                                                                                    <block></block>

+                                                                                                                                </outcome>

+                                                                                                                                <outcome value='failure'>

+                                                                                                                                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='p-interface' 

+      key='pnf.pnf-name = $ztetopologynodedetails.output.node.uuid

+      AND p-interface.interface-name = $zte-unique-ltpId' >

+                                                                                                                                        <parameter name='interface-name' value='`$zte-unique-ltpId`' />

+                                                                                                                                        <parameter name='network-ref' value="`'providerId/' + $prop.zte.provider-id + '/topologyId/' + $prop.zte.topo-id + '/clientId/' + $prop.zte.client-id`" />

+                                                                                                                                        <parameter name='transparent' value="true" />

+                                                                                                                                        <parameter name='speed-value' value='`$zte-bandwidth`' />

+                                                                                                                                        <parameter name='operational-status' value="up" />

+                                                                                                                                        <parameter name='in-maint' value="true" />

+                                                                                                                                    </save>

+                                                                                                                                </outcome>

+                                                                                                                            </save>

+                                                                                                                        </outcome>

+                                                                                                                    </switch>

+                                                                                                                </block>

+                                                                                                            </outcome>

+                                                                                                        </execute>

+                                                                                                    </for>

+                                                                                                </outcome>

+                                                                                            </execute>

+                                                                                        </block>

+                                                                                    </for>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </execute>

+                                                                    </block>

+                                                                </for>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                            </execute>

+                                        </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="`'Unsupported type = ' + $prop.sdncRestApi.type`" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='delete'>

+                    <block atomic='true'></block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_esr-thirdparty-sdnc-discovery.xml b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_esr-thirdparty-sdnc-discovery.xml
new file mode 100644
index 0000000..f6cd4d1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_esr-thirdparty-sdnc-discovery.xml
@@ -0,0 +1,148 @@
+<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="DataChange" version="${project.version}">

+  <method rpc="esr-thirdparty-sdnc-discovery" mode="sync"> 

+    <block atomic="true"> 

+      <switch test="`$prop.sdncRestApi.vendor == 'ZTE'`"> 

+        <outcome value="false"> 

+          <switch test="`$data-change-notification-input.aai-event-trigger`"> 

+            <outcome value="Update"> 

+              <block> 

+                <switch test="`$prop.sdncRestApi.type`"> 

+                  <outcome value="SOTN"> 

+                    <block atomic="true">

+                      <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>

+                      <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>

+                      <switch test="`$prop.sdncRestApi.token_id`"> 

+                        <outcome value=""> 

+                          <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest"> 

+                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/ietf-network:networks'`"/>  

+                            <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="topology"/>  

+                            <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="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">

+                                <for index="nidx" start="0" end="`$topology.networks.network_length`"> 

+                                  <block> 

+                                    <set> 

+                                      <parameter name="network." value="`$topology.networks.network[$nidx].`"/> 

+                                    </set>

+                                    <call module="DataChange" rpc="update-network-to-aai" mode="sync"></call>

+                                  </block>

+                                </for>

+                              </block>

+                            </outcome>

+                          </execute>

+                        </outcome>

+                        <outcome value="Other"> 

+                          <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest"> 

+                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/ietf-network:networks'`"/>  

+                            <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="topology"/>  

+                            <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">

+                                <for index="nidx" start="0" end="`$topology.networks.network_length`"> 

+                                  <block> 

+                                    <set> 

+                                      <parameter name="network." value="`$topology.networks.network[$nidx].`"/> 

+                                    </set>

+                                    <call module="DataChange" rpc="update-network-to-aai" mode="sync"></call>

+                                  </block>

+                                </for>

+                              </block>

+                            </outcome>

+                          </execute>

+                        </outcome>

+                      </switch>

+                      <set> 

+                        <parameter name="ietf-subscribed-notifications_establish-subscription.input.encoding" value="encode-json"/>

+                      </set>

+                      <execute plugin="org.onap.ccsdk.sli.plugins.restconfdiscovery.RestconfDiscoveryNode" method="establishSubscription"> 

+                        <parameter name="subscriberId" value="sotn-controller"/>  

+                        <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ietf-subscribed-notifications:establish-subscription'`"/>  

+                        <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`"/>  

+                        <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`"/>  

+                        <parameter name="sseConnectURL" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/streams/yang-push-json'`"/>  

+                        <parameter name="dirPath" value="/opt/sdnc/restconfapi/yang/notification"/>  

+                        <parameter name="format" value="json"/>  

+                        <parameter name="httpMethod" value="post"/>  

+                        <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`"/>  

+                        <parameter name="module" value="DataChange"/>  

+                        <parameter name="rpc" value="sotn-notification-handler"/>  

+                        <parameter name="mode" value="sync"/>

+                      </execute>

+                    </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="`'Unsupported type = ' + $prop.sdncRestApi.type`"/> 

+                    </return>

+                  </outcome>

+                </switch>

+              </block>

+            </outcome>

+            <outcome value="delete"> 

+              <block atomic="true"/>

+            </outcome>

+          </switch>

+        </outcome>

+        <outcome value="true"> 

+          <call module="DataChange" rpc="esr-thirdparty-sdnc-of-zte" mode="sync"></call>

+        </outcome>

+      </switch>

+    </block>

+  </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_esr-thirdparty-sdnc-of-zte.xml b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_esr-thirdparty-sdnc-of-zte.xml
new file mode 100644
index 0000000..e98dc7b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_esr-thirdparty-sdnc-of-zte.xml
@@ -0,0 +1,66 @@
+<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='DataChange' version='${project.version}'>

+    <method rpc='esr-thirdparty-sdnc-of-zte' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='prop.zte.sdncRestApi.vendor' value='`$prop.sdncRestApi.vendor`' />

+            </set>

+            <for index='idx' start='0' end='`$data-change-notification-input.key-data_length`' >

+                <block>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'service-url'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='zte.prop.sdncRestApi.thirdpartySdnc.url' value='`$data-change-notification-input.key-data[$idx].key-value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'user-name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='zte.prop.sdncRestApi.thirdpartySdnc.user' value='`$data-change-notification-input.key-data[$idx].key-value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'password'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='zte.prop.sdncRestApi.thirdpartySdnc.password' value='`$data-change-notification-input.key-data[$idx].key-value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'esr-system-info-id'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='zte.prop.sdncRestApi.thirdpartySdnc.system-info-id' value='`$data-change-notification-input.key-data[$idx].key-value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'thirdparty-sdnc-id'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='zte.prop.sdncRestApi.thirdpartySdnc.id' value='`$data-change-notification-input.key-data[$idx].key-value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'type'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='zte.prop.sdncRestApi.type' value='`$data-change-notification-input.key-data[$idx].key-value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                <parameter name="file" value="/opt/opendaylight/current/data/log/zte.svclogic.log"/>

+                <parameter name="field1" value="__TIMESTAMP__"/>

+                <parameter name="field2" value="data-change-notification"/>

+                <parameter name="field3" value="Config"/>

+                <parameter name="field4" value="`service-url`"/>

+                <parameter name="field5" value="`$zte.prop.sdncRestApi.thirdpartySdnc.url`"/>

+            </record>

+            <call module='DataChange' rpc='esr-thirdparty-sdnc-discovery-of-zte' mode='sync' ></call>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_esr-thirdparty-sdnc.xml b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_esr-thirdparty-sdnc.xml
new file mode 100644
index 0000000..15ac401
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_esr-thirdparty-sdnc.xml
@@ -0,0 +1,71 @@
+<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='DataChange' version='${project.version}'>

+    <method rpc='esr-thirdparty-sdnc' mode='sync'>

+        <block atomic="true">

+            <call module='DataChange' rpc='validate-esr-thirdparty-sdnc-input' mode='sync' ></call>

+            <for index='idx' start='0' end='`$data-change-notification-input.key-data_length`' >

+                <block>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'service-url'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value='`$data-change-notification-input.key-data[$idx].key-value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'user-name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value='`$data-change-notification-input.key-data[$idx].key-value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'password'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value='`$data-change-notification-input.key-data[$idx].key-value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'esr-system-info-id'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.sdncRestApi.thirdpartySdnc.system-info-id' value='`$data-change-notification-input.key-data[$idx].key-value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'thirdparty-sdnc-id'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.sdncRestApi.thirdpartySdnc.id' value='`$data-change-notification-input.key-data[$idx].key-value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'type'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.sdncRestApi.type' value='`$data-change-notification-input.key-data[$idx].key-value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'vendor'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.sdncRestApi.vendor' value='`$data-change-notification-input.key-data[$idx].key-value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <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="data-change-notification"/>

+                <parameter name="field3" value="Config"/>

+                <parameter name="field4" value="`service-url`"/>

+                <parameter name="field5" value="`$prop.sdncRestApi.thirdpartySdnc.url`"/>

+            </record>

+            <call module='DataChange' rpc='esr-thirdparty-sdnc-discovery' mode='sync' ></call>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_sotn-notification-handler.xml b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_sotn-notification-handler.xml
new file mode 100644
index 0000000..baac91c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_sotn-notification-handler.xml
@@ -0,0 +1,43 @@
+<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='DataChange' version='${project.version}'>

+    <method rpc='sotn-notification-handler' mode='sync'>

+        <block atomic="true">

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                <parameter name="original_string" value='`$notification.push-change-update.datastore-changes.yang-patch.edit[0].target`'/>

+                <parameter name="regex" value="/"/>

+                <parameter name="ctx_memory_result_key" value="yang-nodes"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                <parameter name="original_string" value='`$yang-nodes[$yang-nodes_length -1]`'/>

+                <parameter name="regex" value="="/>

+                <parameter name="ctx_memory_result_key" value="last-node"/>

+                <outcome value='success'>

+                    <block>

+                        <switch test='`$last-node[0]`'>

+                            <outcome value='ietf-network-topology:termination-point'>

+                                <block atomic="true">

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                        <parameter name="original_string" value='`$yang-nodes[$yang-nodes_length -2]`'/>

+                                        <parameter name="regex" value="="/>

+                                        <parameter name="ctx_memory_result_key" value="node-prefix"/>

+                                    </execute>

+                                    <set>

+                                        <parameter name='unique-ltpId' value="`'nodeId-' + $node-prefix[$node-prefix_length -1] + '-ltpId-' + $last-node[$last-node_length -1]`" />

+                                    </set>

+                                    <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='p-interface' 

+      key='pnf.pnf-name = $node.node-id

+      AND p-interface.interface-name = $unique-ltpId' >

+                                        <parameter name='interface-name' value='`$unique-ltpId`' />

+                                        <parameter name='operational-status' value='`$notification.push-change-update.datastore-changes.yang-patch.edit[0].value.termination-point[0].te.oper-status`' />

+                                    </update>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='failure'></outcome>

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_update-network-to-aai.xml b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_update-network-to-aai.xml
new file mode 100644
index 0000000..666d337
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_update-network-to-aai.xml
@@ -0,0 +1,82 @@
+<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='DataChange' version='${project.version}'>

+    <method rpc='update-network-to-aai' mode='sync'>

+        <block atomic="true">

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$network.network-id`"/>

+                <parameter name="outputPath" value="tmp.network-id"/>

+                <parameter name="target" value="/"/>

+                <parameter name="replacement" value="-"/>

+            </execute>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='network-resource'  

+     key='network-resource.network-id = $tmp.network-id' >

+                <parameter name='network-id' value='`$tmp.network-id`' />

+                <parameter name='client-id' value='`$network.client-id`' />

+                <parameter name='te-topo-id' value='`$network.te-topology-id`' />

+                <parameter name='provider-id' value='`$network.provider-id`' />

+            </save>

+            <for index='pidx' start='0' end='`$network.node_length`' >

+                <set>

+                    <parameter name='node.' value='`$network.node[$pidx].`' />

+                </set>

+                <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf' 

+      key='pnf.pnf-name = $node.node-id' >

+                    <parameter name='pnf-name' value='`$node.node-id`' />

+                    <parameter name='pnf-id' value='`$node.node-id`' />

+                    <parameter name='operational-status' value='`$node.te.oper-status`' />

+                    <parameter name='admin-status' value='`$node.te.te-node-attributes.admin-status`' />

+                    <parameter name='in-maint' value='true' />

+                </save>

+                <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='pnf:relationship-list' 

+      key='pnf.pnf-name = $node.node-id' force="true" pfx="tmp.AnAI-data">

+                    <parameter name="relationship-list.relationship[0].related-to" value="network-resource" />

+                    <parameter name="relationship-list.relationship[0].related-link" value="`'/network/network-resources/network-resource/' + $tmp.network-id`" />

+                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-resource.network-id" />

+                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.network-id`" />

+                </save>

+                <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='esr-thirdparty-sdnc:relationship-list' 

+      key='esr-thirdparty-sdnc.thirdparty-sdnc-id = $prop.sdncRestApi.thirdpartySdnc.id' 

+      force="true" pfx="tmp.AnAI-data">

+                    <parameter name="relationship-list.relationship[0].related-to" value="pnf" />

+                    <parameter name="relationship-list.relationship[0].related-link" value="`'/network/pnfs/pnf/' + $node.node-id`" />

+                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="pnf.pnf-name" />

+                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$node.node-id`" />

+                </save>

+                <for index='tidx' start='0' end='`$node.termination-point_length`' >

+                    <set>

+                        <parameter name='tp.' value='`$node.termination-point[$tidx].`' />

+                    </set>

+                    <set>

+                        <parameter name='unique-ltpId' value="`'nodeId-' + $node.node-id + '-ltpId-' + $tp.te-tp-id`" />

+                    </set>

+                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='p-interface' 

+      key='pnf.pnf-name = $node.node-id

+      AND p-interface.interface-name = $unique-ltpId' >

+                        <parameter name='interface-name' value='`$unique-ltpId`' />

+                        <parameter name='network-ref' value='`$tp.supporting-termination-point[0].network-ref`' />

+                        <parameter name='transparent' value='`$tp.svc.supported-classification.transparent`' />

+                        <parameter name='speed-value' value='`$tp.te.interface-switching-capability[0].max-lsp-bandwidth[0].te-bandwidth.eth-bandwidth`' />

+                        <parameter name='operational-status' value='`$tp.te.oper-status`' />

+                        <parameter name='in-maint' value="true" />

+                        <outcome value='success'>

+                            <block></block>

+                        </outcome>

+                        <outcome value='failure'>

+                            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='p-interface' 

+      key='pnf.pnf-name = $node.node-id

+      AND p-interface.interface-name = $unique-ltpId' >

+                                <parameter name='interface-name' value='`$unique-ltpId`' />

+                                <parameter name='network-ref' value='`$tp.supporting-termination-point[0].network-ref`' />

+                                <parameter name='transparent' value='`$tp.svc.supported-classification.transparent`' />

+                                <parameter name='speed-value' value='`$tp.te.interface-switching-capability[0].max-lsp-bandwidth[0].te-bandwidth.eth-bandwidth`' />

+                                <parameter name='operational-status' value='`$tp.te.oper-status`' />

+                                <parameter name='in-maint' value="true" />

+                            </update>

+                        </outcome>

+                    </save>

+                </for>

+            </for>

+        </block>

+    </method>

+</service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_validate-esr-thirdparty-sdnc-input.xml b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_validate-esr-thirdparty-sdnc-input.xml
new file mode 100644
index 0000000..9c4443c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/datachange/src/main/xml/DataChange_validate-esr-thirdparty-sdnc-input.xml
@@ -0,0 +1,49 @@
+<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='DataChange' version='${project.version}'>

+    <method rpc='validate-esr-thirdparty-sdnc-input' mode='sync'>

+        <block atomic="true">

+            <switch test='`$data-change-notification-input.aai-event-trigger`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="data-change-notification-input.aai-event-trigger is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$data-change-notification-input.aai-node-type`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="data-change-notification-input.aai-node-type is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$data-change-notification-input.key-data_length`' >

+                <block>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'service-url'`">

+                        <outcome value=''>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="data-change-notification-input.key-data.key-data.service-url is a required input" />

+                            </return>

+                        </outcome>

+                    </switch>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'user-name'`">

+                        <outcome value=''>

+                            <block></block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$data-change-notification-input.key-data[$idx].key-name == 'password'`">

+                        <outcome value=''>

+                            <block></block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/pom.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/pom.xml
new file mode 100644
index 0000000..bf689d8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/pom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>odlparent-lite</artifactId>
+        <version>1.4.3</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.onap.sdnc.oam</groupId>
+    <artifactId>platform-logic-generic-resource-api</artifactId>
+    <version>1.7.3-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <name>sdnc-oam :: platform-logic :: ${project.artifactId}</name>
+    <description>Contains platform-level service logic for the Generic Resource API</description>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <id>copy-version</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>../target/svclogic/graphs/generic-resource-api</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/xml</directory>
+                                    <includes>
+                                        <include>**/*.xml</include>
+                                    </includes>
+                                    <filtering>true</filtering>
+                                </resource>
+                                <resource>
+                                    <directory>src/main/resources</directory>
+                                    <includes>
+                                        <include>graph.versions</include>
+                                    </includes>
+                                    <filtering>true</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_aai-get-aic-zone.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_aai-get-aic-zone.json
new file mode 100755
index 0000000..ed4a532
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_aai-get-aic-zone.json
@@ -0,0 +1 @@
+[{"id":"b3991b61.976178","type":"dgstart","name":"DGSTART","outputs":1,"x":215.00390625,"y":136.00390625,"z":"58df01c0.f4ce1","wires":[["3df31865.df33c8"]]},{"id":"3df31865.df33c8","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":426.86101722717285,"y":241.4801082611084,"z":"58df01c0.f4ce1","wires":[["b710e6a7.b77ac8"]]},{"id":"b710e6a7.b77ac8","type":"method","name":"aai-get-aic-zone","xml":"<method rpc='aai-get-aic-zone' mode='sync'>\n","comments":"","outputs":1,"x":404.77781677246094,"y":322.99200439453125,"z":"58df01c0.f4ce1","wires":[["b2a9af7.4b45d5"]]},{"id":"44822186.7c8d5","type":"switchNode","name":"switch aaiapi.input.cloud-owner","xml":"<switch test='`$aaiapi.input.cloud-owner`'>\n","comments":"","outputs":1,"x":692.5753479003906,"y":409.2896385192871,"z":"58df01c0.f4ce1","wires":[["1255367.966edca"]]},{"id":"b2a9af7.4b45d5","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":430.7181854248047,"y":410.2896385192871,"z":"58df01c0.f4ce1","wires":[["44822186.7c8d5","d0853696.4e9ec8","79c31fe7.a9df7","ce3898e3.1e1888","36587093.62e9c","284effd4.0325b","33e1dacc.79a006","af00f1bf.451d7"]]},{"id":"1255367.966edca","type":"other","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":962.7182006835938,"y":409.0039176940918,"z":"58df01c0.f4ce1","wires":[["6e7dbda.1dfa844"]]},{"id":"6e7dbda.1dfa844","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"Error aaiapi.input.network-instance-group-id is NULL\" />\n","comments":"","x":1173.0039291381836,"y":409.0039339065552,"z":"58df01c0.f4ce1","wires":[]},{"id":"d0853696.4e9ec8","type":"set","name":"clear output variables","xml":"<set>\n<parameter name='aaiapi.output.cloud-zone' value='' />\n<parameter name='aaiapi.output.complex-name' value='' />\n<parameter name='aaiapi.output.aic-clli' value='' />\n\n","comments":"","x":661.8610687255859,"y":378.86112213134766,"z":"58df01c0.f4ce1","wires":[]},{"id":"1cf77eaa.c12641","type":"comment","name":"Input/Output","info":"Input:\n\taaiapi.input.cloud-owner\n\taaiapi.input.cloud-region-id\nOutput:\n\taaiapi.output.cloud-zone","comments":"","x":414.14508056640625,"y":171.71651458740234,"z":"58df01c0.f4ce1","wires":[]},{"id":"79c31fe7.a9df7","type":"switchNode","name":"switch aaiapi.input.cloud-region-id","xml":"<switch test='`$aaiapi.input.cloud-region-id`'>\n","comments":"","outputs":1,"x":699.0039215087891,"y":443.0039339065552,"z":"58df01c0.f4ce1","wires":[["1255367.966edca"]]},{"id":"ce3898e3.1e1888","type":"get-resource","name":"get-resource cloud region","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"cloud-region\" \n\t\tkey=\"cloud-region.cloud-owner = $aaiapi.input.cloud-owner AND \n\t\t     cloud-region.cloud-region-id = $aaiapi.input.cloud-region-id AND \n\t\t     depth = '0'\"\n        pfx='aai.cloud-region' local-only='false' >\n\n","comments":"","outputs":1,"x":674.00390625,"y":488.00390625,"z":"58df01c0.f4ce1","wires":[["9b95689a.708798","928f15d3.960de8"]]},{"id":"928f15d3.960de8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":896.3930130004883,"y":524.72607421875,"z":"58df01c0.f4ce1","wires":[["92d2316.c22efd"]]},{"id":"9b95689a.708798","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":902.893009185791,"y":488.72613525390625,"z":"58df01c0.f4ce1","wires":[["181e9426.a181ac"]]},{"id":"181e9426.a181ac","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1108.2246704101562,"y":485.0920696258545,"z":"58df01c0.f4ce1","wires":[["7e3472e1.aa065c","19d6391e.6cdb97"]]},{"id":"92d2316.c22efd","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1104.4746704101562,"y":525.0920696258545,"z":"58df01c0.f4ce1","wires":[["46bacc5d.a28ef4","19d6391e.6cdb97"]]},{"id":"7e3472e1.aa065c","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Cloud region not found in AAI\"/>","comments":"","x":1336.9748992919922,"y":482.8420991897583,"z":"58df01c0.f4ce1","wires":[]},{"id":"46bacc5d.a28ef4","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Error retrieving cloud region from AAI\"/>","comments":"","x":1341.9748229980469,"y":525.0919666290283,"z":"58df01c0.f4ce1","wires":[]},{"id":"19d6391e.6cdb97","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`$tmp.error-message`\" />\n","comments":"","x":1308.0039520263672,"y":571.0039129257202,"z":"58df01c0.f4ce1","wires":[]},{"id":"36587093.62e9c","type":"set","name":"set cloud zone and complex-name","xml":"<set>\n<parameter name='aaiapi.output.cloud-zone' value='`$aai.cloud-region.cloud-zone`' />\n<parameter name='aaiapi.output.complex-name' value='`$aai.cloud-region.complex-name`' />\n\n","comments":"","x":672.0039672851562,"y":882.003927230835,"z":"58df01c0.f4ce1","wires":[]},{"id":"18df9acc.21d935","type":"get-resource","name":"get-resource complex","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"complex\" \n\t\tkey=\"complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value\"\n        pfx='aai.complex' local-only='false' >\n        \n\n\n","comments":"","outputs":1,"x":1747.4483261108398,"y":740.1151838302612,"z":"58df01c0.f4ce1","wires":[[]]},{"id":"33e1dacc.79a006","type":"for","name":"for relationship list","xml":"<for silentFailure='false' index='ridx' start='0' end=\"`$aai.cloud-region.relationship-list.relationship_length`\" >\n","comments":"","outputs":1,"x":623.4210357666016,"y":695.2343463897705,"z":"58df01c0.f4ce1","wires":[["c402b857.f2fac8"]]},{"id":"77105e7.0dbf6a","type":"switchNode","name":"switch","xml":"<switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>\n","comments":"","outputs":1,"x":1028.9207000732422,"y":698.9484577178955,"z":"58df01c0.f4ce1","wires":[["c3e2ce03.285be"]]},{"id":"c402b857.f2fac8","type":"for","name":"for relationship data","xml":"<for silentFailure='false' index='rdidx' start='0' end=\"`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`\" >\n","comments":"","outputs":1,"x":846.3374786376953,"y":696.198579788208,"z":"58df01c0.f4ce1","wires":[["77105e7.0dbf6a"]]},{"id":"c3e2ce03.285be","type":"other","name":"complex.physical-location-id","xml":"<outcome value='complex.physical-location-id'>\n","comments":"","outputs":1,"x":1251.4207611083984,"y":697.365083694458,"z":"58df01c0.f4ce1","wires":[["c83e8f8b.573a1"]]},{"id":"c83e8f8b.573a1","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1490.8370819091797,"y":695.1152057647705,"z":"58df01c0.f4ce1","wires":[["18df9acc.21d935","49f9ce98.59417","b52fe5e8.aafe28"]]},{"id":"49f9ce98.59417","type":"set","name":"set aic-clli","xml":"<set>\n<parameter name='aaiapi.output.aic-clli' value='`$aai.complex.physical-location-id`' />\n\n","comments":"","x":1715.3376388549805,"y":702.059591293335,"z":"58df01c0.f4ce1","wires":[]},{"id":"284effd4.0325b","type":"switchNode","name":"switch relationship_length","xml":"<switch test='`$aai.cloud-region.relationship-list.relationship_length`'>\n","comments":"","outputs":1,"x":653.4484710693359,"y":618.2817707061768,"z":"58df01c0.f4ce1","wires":[["bd9af3be.4abcb","5fc7e377.df64dc"]]},{"id":"bd9af3be.4abcb","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":847.4485431247285,"y":617.281859503852,"z":"58df01c0.f4ce1","wires":[["ba47e05c.cb65e"]]},{"id":"5fc7e377.df64dc","type":"other","name":"null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":849.4485397338867,"y":656.2818908691406,"z":"58df01c0.f4ce1","wires":[["ba47e05c.cb65e"]]},{"id":"b52fe5e8.aafe28","type":"set","name":"set tmp.complex-found","xml":"<set>\n<parameter name='tmp.complex-found' value='true' />\n\n","comments":"","x":1753.6706466674805,"y":670.3929653167725,"z":"58df01c0.f4ce1","wires":[]},{"id":"af00f1bf.451d7","type":"switchNode","name":"switch tmp.complex-found","xml":"<switch test='`$tmp.complex-found`'>\n","comments":"","outputs":1,"x":651.4485931396484,"y":778.503999710083,"z":"58df01c0.f4ce1","wires":[["f21da410.59bab8"]]},{"id":"f21da410.59bab8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":868.9485931396484,"y":777.865083694458,"z":"58df01c0.f4ce1","wires":[["dd940e48.7c569"]]},{"id":"ba47e05c.cb65e","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1042.4745712280273,"y":634.8421478271484,"z":"58df01c0.f4ce1","wires":[["4e451cb5.795ce4","a26309a3.69ff38"]]},{"id":"4e451cb5.795ce4","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Cloud region missing relationships in AAI\"/>","comments":"","x":1285.974697113037,"y":615.592173576355,"z":"58df01c0.f4ce1","wires":[]},{"id":"dd940e48.7c569","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1057.4745712280273,"y":777.3421478271484,"z":"58df01c0.f4ce1","wires":[["3b8c939e.d0ca5c","a93a33d9.e9c42"]]},{"id":"3b8c939e.d0ca5c","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Complex not found in AAI\"/>","comments":"","x":1289.9747161865234,"y":777.342188835144,"z":"58df01c0.f4ce1","wires":[]},{"id":"a26309a3.69ff38","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`$tmp.error-message`\" />\n","comments":"","x":1249.00390625,"y":647.00390625,"z":"58df01c0.f4ce1","wires":[]},{"id":"a93a33d9.e9c42","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`$tmp.error-message`\" />\n","comments":"","x":1267.00390625,"y":811.00390625,"z":"58df01c0.f4ce1","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_aai-get-network-instance-group.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_aai-get-network-instance-group.json
new file mode 100755
index 0000000..2a91ce4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_aai-get-network-instance-group.json
@@ -0,0 +1 @@
+[{"id":"9ad18084.8f1ee8","type":"dgstart","name":"DGSTART","outputs":1,"x":190.88333129882812,"y":107.60000610351562,"z":"2508f1db.655a56","wires":[["4f01b94e.c013e8"]]},{"id":"4f01b94e.c013e8","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":402.740442276001,"y":213.07620811462402,"z":"2508f1db.655a56","wires":[["70d2221e.01a9e4"]]},{"id":"70d2221e.01a9e4","type":"method","name":"aai-get-network-instance-group","xml":"<method rpc='aai-get-network-instance-group' mode='sync'>\n","comments":"","outputs":1,"x":380.65724182128906,"y":294.5881042480469,"z":"2508f1db.655a56","wires":[["7c43646c.8c064c"]]},{"id":"79c12641.7dfb3","type":"comment","name":"Called from assign when network instance group passed in from mso","info":"","comments":"","x":567.0261993408203,"y":175.40953731536865,"z":"2508f1db.655a56","wires":[]},{"id":"f6fc9d5e.8e0928","type":"get-resource","name":"get AnAI - network-instance-group","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"instance-group\" \n\t\tkey=\"instance-group.id = $aaiapi.input.network-instance-group-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.networkInstanceGroup\">\n","comments":"","outputs":1,"x":1458.4553527832031,"y":424.4572649002075,"z":"2508f1db.655a56","wires":[["5b8f7866.b10508","889712b1.a290a"]]},{"id":"5b8f7866.b10508","type":"not-found","name":"not found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1717.7884559631348,"y":457.50868034362793,"z":"2508f1db.655a56","wires":[["336f9ffe.8b54"]]},{"id":"336f9ffe.8b54","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"`'network instance group id: ' + $aaiapi.input.network-instance-group-id + 'not found in AnAI'`\" />","comments":"","x":1880.427230834961,"y":457.39766788482666,"z":"2508f1db.655a56","wires":[]},{"id":"889712b1.a290a","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1710.7446746826172,"y":416.7072582244873,"z":"2508f1db.655a56","wires":[["6829e606.6b094"]]},{"id":"6829e606.6b094","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Error retrieving network instance group with id=' + $aaiapi.input.network-instance-group-id + ' from AnAI'`\" />","comments":"","x":1869.8557586669922,"y":416.92948722839355,"z":"2508f1db.655a56","wires":[]},{"id":"d5bad5d7.0f518","type":"switchNode","name":"switch aaiapi.input.network-instance-group-id","xml":"<switch test='`$aaiapi.input.network-instance-group-id`'>\n","comments":"","outputs":1,"x":719.454719543457,"y":381.88575077056885,"z":"2508f1db.655a56","wires":[["907718fa.e5ca3","e088b096.4c1298"]]},{"id":"7c43646c.8c064c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":406.5976104736328,"y":381.88573837280273,"z":"2508f1db.655a56","wires":[["d5bad5d7.0f518","48a34f94.14a79"]]},{"id":"907718fa.e5ca3","type":"other","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1036.5976257324219,"y":381.5999984741211,"z":"2508f1db.655a56","wires":[["d47beee1.f8027"]]},{"id":"e088b096.4c1298","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1017.2270317077637,"y":416.9240771830082,"z":"2508f1db.655a56","wires":[["c061d212.395e1"]]},{"id":"d47beee1.f8027","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"Error aaiapi.input.network-instance-group-id is NULL\" />\n","comments":"","x":1246.8833541870117,"y":381.6000146865845,"z":"2508f1db.655a56","wires":[]},{"id":"c061d212.395e1","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1190.8832702636719,"y":416.1714401245117,"z":"2508f1db.655a56","wires":[["f6fc9d5e.8e0928","6fd71f76.4aad58","56291dcc.a4970c","fcd0b068.87eaa"]]},{"id":"fcd0b068.87eaa","type":"get-resource","name":"get AnAI - collection","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"collection\" \n\t\tkey=\"collection.collection-id = $aaiapi.output.collection.collection-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.collection\">\n","comments":"","outputs":1,"x":1442.8839416503906,"y":813.0286903381348,"z":"2508f1db.655a56","wires":[["32942ead.237942","ddc63a84.c2bdc8","917b9591.1fa8f8"]]},{"id":"32942ead.237942","type":"not-found","name":"not found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1721.7885398864746,"y":844.3657636642456,"z":"2508f1db.655a56","wires":[["8b9d327e.c5eb28"]]},{"id":"8b9d327e.c5eb28","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"`'collection: ' + $aaiapi.output.collection.collection-id + 'not found in AnAI'`\" />","comments":"","x":1884.4273147583008,"y":844.2547512054443,"z":"2508f1db.655a56","wires":[]},{"id":"ddc63a84.c2bdc8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1714.744758605957,"y":803.564341545105,"z":"2508f1db.655a56","wires":[["d51e662.b7cc598"]]},{"id":"d51e662.b7cc598","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Error retrieving collection with id=' + $aaiapi.output.collection.collection-id + ' from AnAI'`\" />","comments":"","x":1873.855842590332,"y":803.7865705490112,"z":"2508f1db.655a56","wires":[]},{"id":"6fd71f76.4aad58","type":"for","name":"for relationship list","xml":"<for silentFailure='true' index='ridx' start='0' end=\"`$tmp.AnAI.networkInstanceGroup.relationship-list.relationship_length`\" >\n","comments":"","outputs":1,"x":1426.5977630615234,"y":574.7429070472717,"z":"2508f1db.655a56","wires":[["e129352e.93c508"]]},{"id":"15033b7f.2625bd","type":"switchNode","name":"switch relationship-key","xml":"<switch test='`$tmp.AnAI.networkInstanceGroup.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>\n","comments":"","outputs":1,"x":1843.382911682129,"y":573.5998611450195,"z":"2508f1db.655a56","wires":[["8b74e67f.9c834"]]},{"id":"e129352e.93c508","type":"for","name":"for relationship data","xml":"<for silentFailure='true' index='rdidx' start='0' end=\"`$tmp.AnAI.networkInstanceGroup.relationship-list.relationship[$ridx].relationship-data_length`\" >\n","comments":"","outputs":1,"x":1635.7998962402344,"y":575.8499984741211,"z":"2508f1db.655a56","wires":[["15033b7f.2625bd"]]},{"id":"8b74e67f.9c834","type":"other","name":"collection.collection-id","xml":"<outcome value='collection.collection-id'>\n","comments":"","outputs":1,"x":2068.8829956054688,"y":574.016471862793,"z":"2508f1db.655a56","wires":[["1465ce62.a01cc2"]]},{"id":"1465ce62.a01cc2","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2308.29931640625,"y":571.7665939331055,"z":"2508f1db.655a56","wires":[["13601b4c.2fcf95"]]},{"id":"48a34f94.14a79","type":"set","name":"clear output variables","xml":"<set>\n<parameter name='aaiapi.output.collection-customization-uuid' value='' />\n<parameter name='aaiapi.output.collection-name' value='' />\n<parameter name='aaiapi.output.collection-function' value='' />\n<parameter name='aaiapi.output.collection.collection-id' value='' />","comments":"","x":642.7404632568359,"y":349.45720291137695,"z":"2508f1db.655a56","wires":[]},{"id":"85b4fb43.16fb68","type":"comment","name":"aai-vlan-tagging-1260","info":"","comments":"","x":420.02452087402344,"y":113.31261825561523,"z":"2508f1db.655a56","wires":[]},{"id":"77116df9.651664","type":"comment","name":"Input/Output","info":"Input:\n\taaiapi.input.network-instance-group-id","comments":"","x":390.0245056152344,"y":143.31261444091797,"z":"2508f1db.655a56","wires":[]},{"id":"917b9591.1fa8f8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1720.274715423584,"y":886.3127021789551,"z":"2508f1db.655a56","wires":[["203680a4.cac048"]]},{"id":"203680a4.cac048","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1879.2746200561523,"y":886.3126602172852,"z":"2508f1db.655a56","wires":[["8660bd01.9728d8","13c8d78f.45d018"]]},{"id":"8660bd01.9728d8","type":"set","name":"set output variables","xml":"<set>\n<parameter name='aaiapi.output.collection-customization-uuid' value='`$tmp.AnAI.collection.collection-customization-id`' />\n<parameter name='aaiapi.output.collection-name' value='`$tmp.AnAI.collection.collection-name`' />\n<parameter name='aaiapi.output.collection-function' value='`$tmp.AnAI.collection.collection-function`' />\n","comments":"","x":2083.274726867676,"y":885.3127174377441,"z":"2508f1db.655a56","wires":[]},{"id":"13c8d78f.45d018","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n<parameter name='' value='' />\n","comments":"","x":2071.2747535705566,"y":922.3126726150513,"z":"2508f1db.655a56","wires":[]},{"id":"13601b4c.2fcf95","type":"set","name":"set collection id","xml":"<set>\n<parameter name='aaiapi.output.collection.collection-id' value='`$tmp.AnAI.networkInstanceGroup.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`' />\n\n\n","comments":"","x":2519.5246505737305,"y":571.3126363754272,"z":"2508f1db.655a56","wires":[]},{"id":"56291dcc.a4970c","type":"switchNode","name":"switch collection-id","xml":"<switch test='`$aaiapi.output.collection.collection-id`'>\n","comments":"","outputs":1,"x":1442.5246047973633,"y":694.3126230239868,"z":"2508f1db.655a56","wires":[["b72f0133.30d35"]]},{"id":"b72f0133.30d35","type":"other","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1673.667465209961,"y":693.0268650054932,"z":"2508f1db.655a56","wires":[["505c16e2.9377b"]]},{"id":"505c16e2.9377b","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"`'network instance group id: ' + $aaiapi.input.network-instance-group-id + ' collection not found in AnAI'`\" />","comments":"","x":1879.5246963500977,"y":693.3127098083496,"z":"2508f1db.655a56","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-activate.json
new file mode 100644
index 0000000..826a62b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-activate.json
@@ -0,0 +1,1792 @@
+[
+    {
+        "id": "fbf8fafe.8924a8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 117.00390625,
+        "y": 101.00390625,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "ddbd49c0.51ec78"
+            ]
+        ]
+    },
+    {
+        "id": "ddbd49c0.51ec78",
+        "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": 262.24205017089844,
+        "y": 173.95630741119385,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "a91124c9.ea56d8"
+            ]
+        ]
+    },
+    {
+        "id": "a91124c9.ea56d8",
+        "type": "method",
+        "name": "api-contrail-route-topology-operation-activate",
+        "xml": "<method rpc='api-contrail-route-topology-operation-activate' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 343.1587562561035,
+        "y": 245.1943483352661,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "1232d48a.c84e2b"
+            ]
+        ]
+    },
+    {
+        "id": "1232d48a.c84e2b",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 251.4800910949707,
+        "y": 388.527690410614,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "a7c33159.020f2",
+                "71348154.08357",
+                "de0622d4.cc88e",
+                "b926e867.47b478",
+                "5b0f0e89.fff95",
+                "bfffed8.eb42f1",
+                "c1894c85.76c23",
+                "a45921e6.ad3ef",
+                "e8418233.d69da",
+                "23cc061.9b89efa",
+                "2a87adce.093512",
+                "23d1f196.7dcfee",
+                "a4376ac0.5f7af8",
+                "3d7a5aa5.9e14c6",
+                "f859e910.363bc8",
+                "e0de1bea.e06568",
+                "bc9568bb.e6eb78",
+                "142c8365.56afed",
+                "38b3f506.22440a",
+                "ec219e57.3542d",
+                "88c586db.eb3e18",
+                "bf9b56b5.b3a1e8",
+                "fe97c2ba.c5f5d",
+                "3f9cc8d6.fcda48",
+                "74c07074.b9b6c",
+                "ef4ae829.eade68",
+                "defcda34.247b28",
+                "7e31f809.4e76e8"
+            ]
+        ]
+    },
+    {
+        "id": "71348154.08357",
+        "type": "set",
+        "name": "set tmp.ar.self-link",
+        "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/contrail-route-topology/'` \" />\n\n",
+        "comments": "",
+        "x": 532.9920654296875,
+        "y": 554.3372249603271,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "a7c33159.020f2",
+        "type": "set",
+        "name": "set tmp.ar.allotted-resource-id,etc",
+        "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$cto-api.contrail-route-allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$cto-api.parent-service-instance-id`' />\n\n\n\n",
+        "comments": "",
+        "x": 571.7514038085938,
+        "y": 466.09673595428467,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "de0622d4.cc88e",
+        "type": "execute",
+        "name": "execute Properties - pull properties file",
+        "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": 599.3545074462891,
+        "y": 590.2354888916016,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5b0f0e89.fff95",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 601.6655883789062,
+        "y": 743.7134675979614,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "d443ea24.922b58",
+                "fb1bb5f8.e95f28"
+            ]
+        ]
+    },
+    {
+        "id": "b926e867.47b478",
+        "type": "execute",
+        "name": "generate allotted-resource url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.cr-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 563.3187942504883,
+        "y": 665.2711420059204,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d443ea24.922b58",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 855.461727142334,
+        "y": 740.0213012695312,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "3d1387c8.400188"
+            ]
+        ]
+    },
+    {
+        "id": "3d1387c8.400188",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1024.4617309570312,
+        "y": 738.5212020874023,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "2516635.614c89c"
+            ]
+        ]
+    },
+    {
+        "id": "2516635.614c89c",
+        "type": "switchNode",
+        "name": "switch cr length",
+        "xml": "<switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1212.8189811706543,
+        "y": 736.8903217315674,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "514a86f5.812698",
+                "339ac5bc.d5e83a"
+            ]
+        ]
+    },
+    {
+        "id": "514a86f5.812698",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1392.1524467468262,
+        "y": 738.1403217315674,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "797cc731.3341e8"
+            ]
+        ]
+    },
+    {
+        "id": "609fa81b.43f0b8",
+        "type": "set",
+        "name": "set ar from get",
+        "xml": "<set>\n<parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />\n",
+        "comments": "",
+        "x": 1792.9501419067383,
+        "y": 678.3785338401794,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "797cc731.3341e8",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic='true'>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1581.4262981414795,
+        "y": 644.5451211929321,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "609fa81b.43f0b8",
+                "1b5999de.c1e766",
+                "9213e2d9.8bc42"
+            ]
+        ]
+    },
+    {
+        "id": "6cc7076e.1cb1a8",
+        "type": "comment",
+        "name": "GET contrail-route-allotted-resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 619.0687980651855,
+        "y": 709.5925989151001,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "1b5999de.c1e766",
+        "type": "switchNode",
+        "name": "switch order-status",
+        "xml": "<switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1808.9499244689941,
+        "y": 709.3784890174866,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "b809025c.a4d3d",
+                "69b030e.9be7ed"
+            ]
+        ]
+    },
+    {
+        "id": "b809025c.a4d3d",
+        "type": "outcome",
+        "name": "outcome Created",
+        "xml": "<outcome value='Created'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2030.7878799438477,
+        "y": 693.473792552948,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "5d75aafd.69a114"
+            ]
+        ]
+    },
+    {
+        "id": "69b030e.9be7ed",
+        "type": "outcome",
+        "name": "outcome Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2025.5977592468262,
+        "y": 720.8072423934937,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "2ba82db5.eb58c2"
+            ]
+        ]
+    },
+    {
+        "id": "2ba82db5.eb58c2",
+        "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\" \n    value=\"`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + ', expecting Created.'`\" />\n",
+        "comments": "",
+        "x": 2236.7164573669434,
+        "y": 724.4617581367493,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "9213e2d9.8bc42",
+        "type": "set",
+        "name": "save backup copy of mdsal-ar for rollback",
+        "xml": "<set>\n<parameter name='bk-cr-ar' value='$mdsal-ar.' />\n",
+        "comments": "",
+        "x": 1880.8071937561035,
+        "y": 645.1880259513855,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "8487ec3d.0bea",
+        "type": "comment",
+        "name": "Create urls for restapi",
+        "info": "",
+        "comments": "",
+        "x": 534.2116012573242,
+        "y": 634.8782691955566,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "7ece8ede.79816",
+        "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=\"Error: Contrail Route not found\" />\n    \n",
+        "comments": "",
+        "x": 1605.921157836914,
+        "y": 840.5873985290527,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "fb1bb5f8.e95f28",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 847.3135299682617,
+        "y": 775.0873861312866,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "59c76443.5ea54c"
+            ]
+        ]
+    },
+    {
+        "id": "59c76443.5ea54c",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1027.3134803771973,
+        "y": 775.7539367675781,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "7ece8ede.79816"
+            ]
+        ]
+    },
+    {
+        "id": "339ac5bc.d5e83a",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1380.4804000854492,
+        "y": 775.4206819534302,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "7ece8ede.79816"
+            ]
+        ]
+    },
+    {
+        "id": "5d75aafd.69a114",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2214.33748626709,
+        "y": 691.4206805229187,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "49a6403a.c8105",
+        "type": "not-found",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 831.2895660400391,
+        "y": 1026.7183133363724,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "a766ad78.04e4e"
+            ]
+        ]
+    },
+    {
+        "id": "e0de1bea.e06568",
+        "type": "get-resource",
+        "name": "get AnAI - l3-network by network-id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $ar-assignments.source-network.network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.src-network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 565.7379760742188,
+        "y": 1040.4649600982666,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "c8ed4496.b74a88",
+                "49a6403a.c8105",
+                "d63abbe9.2b3e68"
+            ]
+        ]
+    },
+    {
+        "id": "c8ed4496.b74a88",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 824.0116729736328,
+        "y": 1061.2029172182083,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "a766ad78.04e4e"
+            ]
+        ]
+    },
+    {
+        "id": "a766ad78.04e4e",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`\" />",
+        "comments": "",
+        "x": 976.1226348876953,
+        "y": 1057.4251462221146,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "d63abbe9.2b3e68",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 829.2896270751953,
+        "y": 1092.7183133363724,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "c2c4bb65.8ad1d8"
+            ]
+        ]
+    },
+    {
+        "id": "c2c4bb65.8ad1d8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 981.9561920166016,
+        "y": 1091.0516415834427,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b3798a7c.d13bf8",
+        "type": "comment",
+        "name": "GET source network from AAI",
+        "info": "",
+        "comments": "",
+        "x": 535.9681777954102,
+        "y": 1005.9683332443237,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "a45921e6.ad3ef",
+        "type": "execute",
+        "name": "execute Contrail API apply network policy to source network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='apply' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n<parameter name='default-project' value='`$cto-api.default-project`' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n<parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />\n<parameter name='contrail-virtual-network-id' value='`$uuidresp.uuid`' />\n\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 654.6180572509766,
+        "y": 1357.9513778686523,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "19d85634.c917ea",
+                "3a9f4e83.0014d2"
+            ]
+        ]
+    },
+    {
+        "id": "19d85634.c917ea",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1022.2842788696289,
+        "y": 1355.379361152649,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "95b88f2.7fbc67"
+            ]
+        ]
+    },
+    {
+        "id": "3a9f4e83.0014d2",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1020.3796005249023,
+        "y": 1388.37930091843,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "abb85b0d.789338"
+            ]
+        ]
+    },
+    {
+        "id": "abb85b0d.789338",
+        "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=\"Failed to apply policy in Contrail to source network\" />\n",
+        "comments": "",
+        "x": 1180.2843704223633,
+        "y": 1387.71266746521,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "95b88f2.7fbc67",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1174.4747619628906,
+        "y": 1356.0460861586034,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "bfffed8.eb42f1",
+        "type": "set",
+        "name": "set ar-assignments",
+        "xml": "<set>\n<parameter name='ar-assignments.' value=\"`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`\" />\n\n\n\n",
+        "comments": "",
+        "x": 519.0039672851562,
+        "y": 834.0040140151978,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "c1894c85.76c23",
+        "type": "switchNode",
+        "name": "switch source-network.network-id",
+        "xml": "<switch test='`$ar-assignments.source-network.network-id`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 555.5039672851562,
+        "y": 942.0039577484131,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "6d551f8f.357b",
+                "812fe09f.e6513"
+            ]
+        ]
+    },
+    {
+        "id": "6d551f8f.357b",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 915.0041236877441,
+        "y": 940.6702857017517,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "dc661073.9c1b9"
+            ]
+        ]
+    },
+    {
+        "id": "812fe09f.e6513",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 910.6709403991699,
+        "y": 903.6700859069824,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "d6f57d04.58e7e"
+            ]
+        ]
+    },
+    {
+        "id": "dc661073.9c1b9",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1049.115379333496,
+        "y": 941.1146903038025,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d6f57d04.58e7e",
+        "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 activating contrail route.  Source network not found\" />\n",
+        "comments": "",
+        "x": 1064.8044052124023,
+        "y": 904.3369884490967,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "438362ca.c4fb1c",
+        "type": "comment",
+        "name": "Find tenant id/cloud region from source network",
+        "info": "",
+        "comments": "",
+        "x": 596.4042282104492,
+        "y": 908.6702222824097,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "12975148.308cdf",
+        "type": "comment",
+        "name": "Apply the policy to source network",
+        "info": "",
+        "comments": "",
+        "x": 558.0039825439453,
+        "y": 1093.003999710083,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "e8418233.d69da",
+        "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": 470.004207611084,
+        "y": 2616.9808492660522,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "23cc061.9b89efa",
+        "type": "set",
+        "name": "set allotted-resource-oper-status",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+        "comments": "",
+        "x": 530.4249496459961,
+        "y": 2438.484212875366,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "2a87adce.093512",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 558.5334243774414,
+        "y": 2512.5337057113647,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "86fe624a.9f769",
+                "c15082cc.e45ed",
+                "73ea0483.537b4c"
+            ]
+        ]
+    },
+    {
+        "id": "86fe624a.9f769",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 828.8414421081543,
+        "y": 2565.5319065079093,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "b34f6a16.4d5698"
+            ]
+        ]
+    },
+    {
+        "id": "c15082cc.e45ed",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 819.8414916992188,
+        "y": 2534.031932257116,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "b34f6a16.4d5698"
+            ]
+        ]
+    },
+    {
+        "id": "73ea0483.537b4c",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 823.5915298461914,
+        "y": 2504.389037132263,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "cd864e8c.2ab94"
+            ]
+        ]
+    },
+    {
+        "id": "82666aa6.c56cb8",
+        "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 updating md-sal for contrail-route-allotted-resource\" />\n",
+        "comments": "",
+        "x": 1187.5915756225586,
+        "y": 2546.7821083068848,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "cd864e8c.2ab94",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 993.2475204467773,
+        "y": 2502.5816679000854,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "23d1f196.7dcfee",
+        "type": "execute",
+        "name": "execute getTime",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 481.24754333496094,
+        "y": 2404.9143447875977,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "17748471.05b93c",
+        "type": "comment",
+        "name": "Need to rollback aai here",
+        "info": "",
+        "comments": "",
+        "x": 1380.6708450317383,
+        "y": 2480.0996432304382,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "14c283bc.16080c",
+        "type": "comment",
+        "name": "Create  network policy in AAI",
+        "info": "",
+        "comments": "",
+        "x": 515.0040664672852,
+        "y": 2354.0994386672974,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "a4376ac0.5f7af8",
+        "type": "update",
+        "name": "update AAI allotted-resource",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.parent-service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"operational-status\" value=\"in-service-path\" />\n\t<parameter name=\"orchestration-status\" value=\"activated\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 519.6231384277344,
+        "y": 2316.0520610809326,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "e26ff95b.191f28",
+                "5b810143.7cfe6"
+            ]
+        ]
+    },
+    {
+        "id": "e26ff95b.191f28",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 787.3850555419922,
+        "y": 2293.290114402771,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "a1025836.ec58f8"
+            ]
+        ]
+    },
+    {
+        "id": "5b810143.7cfe6",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 792.6944847106934,
+        "y": 2328.8615322113037,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "a1025836.ec58f8"
+            ]
+        ]
+    },
+    {
+        "id": "81d4f66a.d1c928",
+        "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=\"AAI failed\" />\n",
+        "comments": "",
+        "x": 1157.4802894592285,
+        "y": 2309.909327507019,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "59f5f19c.2c2bf",
+        "type": "comment",
+        "name": "Update AAI AR",
+        "info": "",
+        "comments": "",
+        "x": 472.96598052978516,
+        "y": 2275.480383872986,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "a1ff339e.3748d",
+        "type": "comment",
+        "name": "Update network policy in AAI - relationship to networks",
+        "info": "",
+        "comments": "",
+        "x": 595.004150390625,
+        "y": 2174.004216194153,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "3d7a5aa5.9e14c6",
+        "type": "save",
+        "name": "save AnAI - network-policy relationship to source and destination network",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"network-policy:relationship-list\" \n\tkey=\"network-policy.network-policy-id = $ar-assignments.contrail-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" \nvalue=\"`'/aai/v$/network/l3-networks/l3-network/' + $ar-assignments.source-network.network-id`\" />\n<parameter name=\"relationship-list.relationship[1].related-to\" value=\"l3-network\" />\n<parameter name=\"relationship-list.relationship[1].related-link\" \nvalue=\"`'/aai/v$/network/l3-networks/l3-network/' + $ar-assignments.dest-network.network-id`\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 666.381103515625,
+        "y": 2220.071865081787,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "9a52b1cf.1510d",
+                "60b38365.bf508c"
+            ]
+        ]
+    },
+    {
+        "id": "ec62599e.16b9b8",
+        "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=\"Failed to save network policy in AAI\" />\n",
+        "comments": "",
+        "x": 1646.7267532348633,
+        "y": 2195.3538751602173,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "9a52b1cf.1510d",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1065.15523147583,
+        "y": 2190.3694381713867,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "e25e5b70.f65028"
+            ]
+        ]
+    },
+    {
+        "id": "60b38365.bf508c",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1071.9648513793945,
+        "y": 2220.845724582672,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "e25e5b70.f65028"
+            ]
+        ]
+    },
+    {
+        "id": "df841654.7038a8",
+        "type": "comment",
+        "name": "Parameters",
+        "info": "INPUT:\n\ncto-api.default-domain\ncto-api.default-project\ncto-api.cloud-region-id\ncto-api.contrail-route-allotted-resource-id\ncto-api.src-contrail-network-fqdn\ncto-api.collector-contrail-network-fqdn",
+        "comments": "",
+        "x": 625.3373031616211,
+        "y": 92.67058181762695,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "f859e910.363bc8",
+        "type": "call",
+        "name": "call validate-api-contrail-route-input",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-api-contrail-route-input' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 578.3372192382812,
+        "y": 432.0039372444153,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "bc9568bb.e6eb78",
+        "type": "set",
+        "name": "set cloud-region-id for input to contrail",
+        "xml": "<set>\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n",
+        "comments": "",
+        "x": 578.00390625,
+        "y": 1146.674747467041,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "8553ed76.ca7a",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 822.504264831543,
+        "y": 1480.3410449028015,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "ddb9ca6f.61d5a8"
+            ]
+        ]
+    },
+    {
+        "id": "2ab2cf3c.7cbb2",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 818.1710815429688,
+        "y": 1443.3408451080322,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "7f5db074.60a8"
+            ]
+        ]
+    },
+    {
+        "id": "ddb9ca6f.61d5a8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 956.6155204772949,
+        "y": 1480.7854495048523,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7f5db074.60a8",
+        "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 activating contrail route.  Destination network not found\" />\n",
+        "comments": "",
+        "x": 972.3045463562012,
+        "y": 1444.0077476501465,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "e73a4573.fde828",
+        "type": "not-found",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 885.0039978027344,
+        "y": 1524.4330253601074,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "30c22905.3a4936"
+            ]
+        ]
+    },
+    {
+        "id": "142c8365.56afed",
+        "type": "get-resource",
+        "name": "get AnAI - l3-network by dest network-id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.dest-network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 605.6308746337891,
+        "y": 1531.9652662277222,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "e73a4573.fde828",
+                "d1a7593e.2315a8",
+                "512d25e0.f1767c"
+            ]
+        ]
+    },
+    {
+        "id": "d1a7593e.2315a8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 877.7261047363281,
+        "y": 1558.9176292419434,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "30c22905.3a4936"
+            ]
+        ]
+    },
+    {
+        "id": "30c22905.3a4936",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`\" />",
+        "comments": "",
+        "x": 1029.8370666503906,
+        "y": 1555.1398582458496,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "512d25e0.f1767c",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 887.5755081176758,
+        "y": 1593.2900938987732,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "c41d8742.6e9888"
+            ]
+        ]
+    },
+    {
+        "id": "c41d8742.6e9888",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1040.242073059082,
+        "y": 1591.6234221458435,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7f8f58d7.90bc28",
+        "type": "comment",
+        "name": "GET dest network from AAI",
+        "info": "",
+        "comments": "",
+        "x": 562.4325408935547,
+        "y": 1423.1471500396729,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "38b3f506.22440a",
+        "type": "execute",
+        "name": "execute Contrail API apply network policy to destination network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='apply' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n<parameter name='default-project' value='`$cto-api.default-project`' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n<parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />\n<parameter name='contrail-virtual-network-id' value='`$uuidresp.uuid`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 668.0042114257812,
+        "y": 1910.0046558380127,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "96c79b36.154138",
+                "79421533.4e5ecc"
+            ]
+        ]
+    },
+    {
+        "id": "96c79b36.154138",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1004.6706390380859,
+        "y": 1881.4327244758606,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "871ab29c.61b02"
+            ]
+        ]
+    },
+    {
+        "id": "79421533.4e5ecc",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1002.7659606933594,
+        "y": 1914.4326642416418,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "e2d4bff5.4d172"
+            ]
+        ]
+    },
+    {
+        "id": "56199f14.af432",
+        "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=\"Failed to apply policy in Contrail to destination network\" />\n",
+        "comments": "",
+        "x": 1372.6709747314453,
+        "y": 1916.7664680480957,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "871ab29c.61b02",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1156.8611221313477,
+        "y": 1882.099449481815,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8c596cbe.dd753",
+        "type": "comment",
+        "name": "Apply the policy to dest network",
+        "info": "",
+        "comments": "",
+        "x": 561.3903503417969,
+        "y": 1877.057378768921,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "ec219e57.3542d",
+        "type": "switchNode",
+        "name": "switch dest-network.network-id",
+        "xml": "<switch test='`$ar-assignments.dest-network.network-id`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 569.0039825439453,
+        "y": 1463.674859046936,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "8553ed76.ca7a",
+                "2ab2cf3c.7cbb2"
+            ]
+        ]
+    },
+    {
+        "id": "88c586db.eb3e18",
+        "type": "execute",
+        "name": "execute Contrail API fqname to uuid for source network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='fqname-to-uuid' />\n<parameter name='api-action' value='get' />\n<parameter name='resp-prefix' value='uuidresp' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n<parameter name='default-project' value='`$cto-api.default-project`' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='fqname-type' value='virtual-network' />\n<parameter name='policy-name' value='`$src-virtual-network-fqname`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 639.0039978027344,
+        "y": 1281.674801826477,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "7a1c57b0.a74188",
+                "df772c1b.3fd3f"
+            ]
+        ]
+    },
+    {
+        "id": "7a1c57b0.a74188",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 971.0039367675781,
+        "y": 1290.6745529174805,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "8bb3dc75.04d83"
+            ]
+        ]
+    },
+    {
+        "id": "df772c1b.3fd3f",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 974.0992736816406,
+        "y": 1325.6744497679174,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "30c79ae1.56e5e6"
+            ]
+        ]
+    },
+    {
+        "id": "30c79ae1.56e5e6",
+        "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=\"Failed to find network uuid for Contrail to source network\" />\n",
+        "comments": "",
+        "x": 1134.0040435791016,
+        "y": 1325.0078163146973,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "8bb3dc75.04d83",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1114.1943969726562,
+        "y": 1287.3412857055664,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "bf9b56b5.b3a1e8",
+        "type": "execute",
+        "name": "execute Contrail API fqname to uuid for dest network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='fqname-to-uuid' />\n<parameter name='api-action' value='get' />\n<parameter name='resp-prefix' value='uuidresp' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n<parameter name='default-project' value='`$dest-default-project`' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='fqname-type' value='virtual-network' />\n<parameter name='policy-name' value='`$dest-virtual-network-fqname`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 630.0040893554688,
+        "y": 1803.6749420166016,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "d3a9b3b.a55135",
+                "4c6855f7.9d9f3c"
+            ]
+        ]
+    },
+    {
+        "id": "d3a9b3b.a55135",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 971.0040740966797,
+        "y": 1770.6746549606323,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "b7013ec1.476c6"
+            ]
+        ]
+    },
+    {
+        "id": "4c6855f7.9d9f3c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 969.0993499755859,
+        "y": 1806.6747187040746,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "a6d24134.4d78e"
+            ]
+        ]
+    },
+    {
+        "id": "a6d24134.4d78e",
+        "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=\"Failed to find network uuid for Contrail to destination network\" />\n",
+        "comments": "",
+        "x": 1129.0041198730469,
+        "y": 1806.0080852508545,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "b7013ec1.476c6",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1123.1945571899414,
+        "y": 1771.3413799665868,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3f9cc8d6.fcda48",
+        "type": "execute",
+        "name": "execute Split to get contrail virtual network fqname without defaults",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='virtual-network-fqdn-split' />\n   <parameter name='original_string' value='`$aai.src-network.contrail-network-fqdn`' />\n   <parameter name='regex' value=':' />\n\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 671.0039215087891,
+        "y": 1188.6746273040771,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5caffa4d.c36db4",
+        "type": "set",
+        "name": "set src-virtual-network-fqdn",
+        "xml": "<set>\n<parameter name='src-virtual-network-fqname' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 1]`' />\n",
+        "comments": "",
+        "x": 1193.6705474853516,
+        "y": 1245.3414163589478,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "fe97c2ba.c5f5d",
+        "type": "switchNode",
+        "name": "switch virtual-network-fqdn-split length",
+        "xml": "<switch test='`$virtual-network-fqdn-split_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 583.6706848144531,
+        "y": 1228.6743993759155,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "3df80ebf.7bf7a2",
+                "4cdce0e8.bafeb"
+            ]
+        ]
+    },
+    {
+        "id": "3df80ebf.7bf7a2",
+        "type": "outcome",
+        "name": "outcome 0",
+        "xml": "<outcome value='0'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1009.0040435791016,
+        "y": 1209.6746559143066,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "4a934e0.2948ab4"
+            ]
+        ]
+    },
+    {
+        "id": "4cdce0e8.bafeb",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 996.6706123352051,
+        "y": 1245.0078945159912,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "5caffa4d.c36db4"
+            ]
+        ]
+    },
+    {
+        "id": "4a934e0.2948ab4",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Unable to determine network fq-name from contrail fqdn' />\n",
+        "comments": "",
+        "x": 1174.3374366760254,
+        "y": 1208.008044242859,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "74c07074.b9b6c",
+        "type": "execute",
+        "name": "execute Split to get contrail virtual network fqname from contrail-network-fqdn",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='virtual-network-fqdn-split' />\n   <parameter name='original_string' value='`$aai.dest-network.contrail-network-fqdn`' />\n   <parameter name='regex' value=':' />\n\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 720.0038757324219,
+        "y": 1646.6749620437622,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "471ff7c8.22f108",
+        "type": "set",
+        "name": "set dest-virtual-network-fqname",
+        "xml": "<set>\n<parameter name='dest-virtual-network-fqname' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 1]`' />\n<parameter name='dest-default-project' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 2]`' />\n",
+        "comments": "",
+        "x": 1205.6704864501953,
+        "y": 1719.3413534164429,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "ef4ae829.eade68",
+        "type": "switchNode",
+        "name": "switch virtual-network-fqdn-split length",
+        "xml": "<switch test='`$virtual-network-fqdn-split_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 587.6706237792969,
+        "y": 1735.6746196746826,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "28174afe.44eb26",
+                "20116195.80bece"
+            ]
+        ]
+    },
+    {
+        "id": "28174afe.44eb26",
+        "type": "outcome",
+        "name": "outcome 0",
+        "xml": "<outcome value='0'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1021.0039825439453,
+        "y": 1683.6745929718018,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "949e42d4.3282b"
+            ]
+        ]
+    },
+    {
+        "id": "20116195.80bece",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1008.6705513000488,
+        "y": 1719.0078315734863,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "471ff7c8.22f108"
+            ]
+        ]
+    },
+    {
+        "id": "949e42d4.3282b",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Unable to determine network fq-name from contrail fqdn' />\n",
+        "comments": "",
+        "x": 1186.3373756408691,
+        "y": 1682.007981300354,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "ad550ebe.97e4c",
+        "type": "execute",
+        "name": "execute Contrail API remove network policy to destination network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='remove' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n<parameter name='default-project' value='`$cto-api.default-project`' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n<parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />\n<parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1892.0041198730469,
+        "y": 2082.004141807556,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "9240f23d.7f049"
+            ]
+        ]
+    },
+    {
+        "id": "a38a02dd.b8f9d",
+        "type": "execute",
+        "name": "execute Contrail API remove network policy to source network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='remove' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n<parameter name='default-project' value='`$cto-api.default-project`' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n<parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />\n<parameter name='contrail-virtual-network-id' value='`$src-uuid`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1910.0042572021484,
+        "y": 1811.004051208496,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "9240f23d.7f049"
+            ]
+        ]
+    },
+    {
+        "id": "9240f23d.7f049",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2287.5040283203125,
+        "y": 1856.0040197372437,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "93d636b9.8b55b8"
+            ]
+        ]
+    },
+    {
+        "id": "93d636b9.8b55b8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2421.6152839660645,
+        "y": 1856.4484243392944,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "defcda34.247b28",
+        "type": "set",
+        "name": "set src-uuid",
+        "xml": "<set>\n<parameter name='src-uuid' value='`$uuidresp.uuid`' />",
+        "comments": "",
+        "x": 510.0039939880371,
+        "y": 1322.0040254592896,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "7e31f809.4e76e8",
+        "type": "set",
+        "name": "set dest-uuid",
+        "xml": "<set>\n<parameter name='dest-uuid' value='`$uuidresp.uuid`' />",
+        "comments": "",
+        "x": 510.00390625,
+        "y": 1847.00390625,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "c4498fac.a299f",
+        "type": "comment",
+        "name": "If we hit an error, attempt to clean up contrail",
+        "info": "",
+        "comments": "",
+        "x": 1854.0041046142578,
+        "y": 1772.004108428955,
+        "z": "433d56b8.8f2a38",
+        "wires": []
+    },
+    {
+        "id": "e2d4bff5.4d172",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1157.2539596557617,
+        "y": 1915.0039901733398,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "a38a02dd.b8f9d",
+                "56199f14.af432"
+            ]
+        ]
+    },
+    {
+        "id": "e25e5b70.f65028",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1267.2539138793945,
+        "y": 2206.0039615631104,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "ec62599e.16b9b8",
+                "a38a02dd.b8f9d",
+                "ad550ebe.97e4c"
+            ]
+        ]
+    },
+    {
+        "id": "a1025836.ec58f8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 951.25390625,
+        "y": 2306.00390625,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "81d4f66a.d1c928",
+                "a38a02dd.b8f9d",
+                "ad550ebe.97e4c"
+            ]
+        ]
+    },
+    {
+        "id": "b34f6a16.4d5698",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 992.25390625,
+        "y": 2547.00390625,
+        "z": "433d56b8.8f2a38",
+        "wires": [
+            [
+                "82666aa6.c56cb8",
+                "a38a02dd.b8f9d",
+                "ad550ebe.97e4c"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-create.json
new file mode 100644
index 0000000..d26c5be
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-create.json
@@ -0,0 +1 @@
+[{"id":"73e0c5c4.0e65fc","type":"dgstart","name":"DGSTART","outputs":1,"x":194.75,"y":111.75,"z":"fd8223be.2936e","wires":[["7f1aae85.46fc5"]]},{"id":"7f1aae85.46fc5","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":300.98807525634766,"y":190.45239543914795,"z":"fd8223be.2936e","wires":[["2dca365b.8949fa"]]},{"id":"2dca365b.8949fa","type":"method","name":"api-contrail-route-topology-operation-create","xml":"<method rpc='api-contrail-route-topology-operation-create' mode='sync'>\n","comments":"","outputs":1,"x":279.23817443847656,"y":287.60711765289307,"z":"fd8223be.2936e","wires":[["71de5a8a.06d68c"]]},{"id":"71de5a8a.06d68c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":329.2261848449707,"y":399.273784160614,"z":"fd8223be.2936e","wires":[["37d1d007.e441d","7599d396.fab11c","5487e8c6.2ce188","90603bb4.644bf","bcff5d22.739c18","973bba6f.6e0248","7a30a7f9.6e1ae8","6e678b74.303c34","84c0d39e.e63c5","c015b9b7.736d8","b57c7a1.51b0008","88bf8b92.12a5e","64edc8a3.a7d48","e60b2fce.554fe","e2f5e253.1b2318","6d7d1582.92029c","59f0019d.e27e5","8a4f8bfb.56fa78","416a3007.88306","803a97d9.066c3","724e650c.59b494","7f28e1e1.db86f8","b09a986c.221fa8","5172899d.b7464","e9d9ba39.43f818","3d247334.a1372c","f255c05d.7948a","7213d545.2b0f9c","37ded934.68fab6","4c419af6.dc942c","2e387eee.1a638a","c5de323f.f81938","7cae277d.772588","c3814cf0.0b0738","6c53e4ce.fecfe4","4a08ade2.d13b7c","910ed547.3ffca","948c94af.a879","dfa7d0a5.73fd4","326513f8.a01924","82250dcd.64764","2ed539df.fbd8ce","17c62791.e0bba","1e7787ad.0d68a8","778c350c.8dd8e4","672a2172.2f5058"]]},{"id":"7599d396.fab11c","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":582.0835952758789,"y":4812.631404876709,"z":"fd8223be.2936e","wires":[]},{"id":"37d1d007.e441d","type":"set","name":"set output to caller","xml":"<set>\n<parameter name='cto-api.contrail-route-allotted-instance-id' value='`$tmp.ar.allotted-resource-id`' />\n\n \n","comments":"","x":595.8374938964844,"y":4717.801609992981,"z":"fd8223be.2936e","wires":[]},{"id":"88bf8b92.12a5e","type":"set","name":"set allotted-resource-oper-status","xml":"<set>\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n","comments":"","x":711.1708831787109,"y":3266.468216896057,"z":"fd8223be.2936e","wires":[]},{"id":"5487e8c6.2ce188","type":"set","name":"set tmp.ar.self-link","xml":"<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/contrail-route-topology/'` \" />\n\n","comments":"","x":750.0121307373047,"y":1818.3691606521606,"z":"fd8223be.2936e","wires":[]},{"id":"90603bb4.644bf","type":"execute","name":"execute Properties - pull properties file","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":818.9341888427734,"y":1861.9338998794556,"z":"fd8223be.2936e","wires":[[]]},{"id":"973bba6f.6e0248","type":"execute","name":"execute RestApiCallNode - Get AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":802.1262435913086,"y":2133.828694343567,"z":"fd8223be.2936e","wires":[["ed128194.abfb6","db13b017.ab15b"]]},{"id":"bcff5d22.739c18","type":"execute","name":"generate allotted-resource url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.cr-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n","comments":"","outputs":1,"x":792.6722106933594,"y":1905.7197103500366,"z":"fd8223be.2936e","wires":[[]]},{"id":"ed128194.abfb6","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1191.0890617370605,"y":2131.9697785377502,"z":"fd8223be.2936e","wires":[["b5310c26.f565d8"]]},{"id":"c015b9b7.736d8","type":"execute","name":"execute RestApiCallNode - PUT AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":676.0415382385254,"y":4578.041424751282,"z":"fd8223be.2936e","wires":[["852d43ca.478d68","dc3e6244.b22628","51fd5b3b.c2a0dc"]]},{"id":"852d43ca.478d68","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":943.0162200927734,"y":4609.373085021973,"z":"fd8223be.2936e","wires":[["c445da3e.4e161"]]},{"id":"dc3e6244.b22628","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":937.349609375,"y":4577.87292098999,"z":"fd8223be.2936e","wires":[["c445da3e.4e161"]]},{"id":"b87f121d.e891","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 updating md-sal for contrail-route-allotted-resource.  Parent provided resource rolled back\" />\n","comments":"","x":1279.4329414367676,"y":4623.956533432007,"z":"fd8223be.2936e","wires":[]},{"id":"b5310c26.f565d8","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1320.0890464782715,"y":2128.8030405044556,"z":"fd8223be.2936e","wires":[["efb8d6d3.a0fa4"]]},{"id":"efb8d6d3.a0fa4","type":"switchNode","name":"switch cr length","xml":"<switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>\n","comments":"","outputs":1,"x":1530.9462890625,"y":2128.4221696853638,"z":"fd8223be.2936e","wires":[["47489607.a87a28"]]},{"id":"47489607.a87a28","type":"other","name":"outcome 1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1720.2795944213867,"y":2128.422127723694,"z":"fd8223be.2936e","wires":[["b6498b3f.f4a89"]]},{"id":"e07680f5.890c28","type":"comment","name":"Save consumed-allotted-resources to mdsal","info":"","comments":"","x":693.9935455322266,"y":3937.4700117111206,"z":"fd8223be.2936e","wires":[]},{"id":"d60bc376.6aa18","type":"comment","name":"GET contrail-route-allotted-resource from mdsal","info":"","comments":"","x":823.0888977050781,"y":2081.1362199783325,"z":"fd8223be.2936e","wires":[]},{"id":"7a30a7f9.6e1ae8","type":"set","name":"set ar-request-information","xml":"<set>\n<parameter name='ar-request-information.source' value=\"SDNC\" />\n\n\n","comments":"","x":775.9936828613281,"y":1644.3269243240356,"z":"fd8223be.2936e","wires":[]},{"id":"dd0f18a6.2957a8","type":"comment","name":"Set allotted-resource-identifiers","info":"","comments":"","x":766.6127777099609,"y":2243.0409364700317,"z":"fd8223be.2936e","wires":[]},{"id":"64edc8a3.a7d48","type":"set","name":"set identifiers in overal structure","xml":"<set>\n<parameter name='ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.' \nvalue=\"`$ar-identifiers.`\" />\n\n\n","comments":"","x":730.3745155334473,"y":2838.7555561065674,"z":"fd8223be.2936e","wires":[]},{"id":"644ccc60.4a1004","type":"set","name":"set ar_name","xml":"<set>\n<parameter name='tmp.ar-name' value='$source-network-name_$cloud-region-id_$source-network-role_$collector-network-role _policy_' />\n","comments":"","x":978.3746719360352,"y":2449.1364755630493,"z":"fd8223be.2936e","wires":[]},{"id":"207be70c.805438","type":"execute","name":"execute SliStringUtils - replace $source-network-name","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ar-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-name\"/>\n    <parameter name=\"target\" value=\"$source-network-name\"/>\n    <parameter name=\"replacement\" value=\"`$ctotmp.s-l3-network.network-name`\"/>\n\n","comments":"","outputs":1,"x":1103.5179138183594,"y":2489.326988220215,"z":"fd8223be.2936e","wires":[[]]},{"id":"ca12d338.3af09","type":"execute","name":"execute SliStringUtils - replace collector-network-role","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ar-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-name\"/>\n    <parameter name=\"target\" value=\"$collector-network-role\"/>\n    <parameter name=\"replacement\" value=\"`$cto-api.collector-network-role`\"/>\n\n","comments":"","outputs":1,"x":1091.8511505126953,"y":2588.4696521759033,"z":"fd8223be.2936e","wires":[[]]},{"id":"2ed539df.fbd8ce","type":"block","name":"block: atomic","xml":"<block atomic='true'>\n","atomic":"false","comments":"","outputs":1,"x":708.0414085388184,"y":2449.8029142320156,"z":"fd8223be.2936e","wires":[["644ccc60.4a1004","207be70c.805438","ca12d338.3af09","264ea65f.c1daa2","43ac428a.dc5c34","3d9c9398.344a14","9e2a16a6.a13cb8","3f03ddb7.9a84f2","ce6205d7.9406b8"]]},{"id":"264ea65f.c1daa2","type":"set","name":"set identifiers.allotted-resource-name","xml":"<set>\n<parameter name='ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />\n","comments":"","x":1043.0412788391113,"y":2736.7553153932095,"z":"fd8223be.2936e","wires":[]},{"id":"e60b2fce.554fe","type":"set","name":"set assignments in overal structure","xml":"<set>\n<parameter name='ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.' \nvalue=\"`$ar-assignments.`\" />\n\n\n","comments":"","x":705.9459533691406,"y":3481.0422582626343,"z":"fd8223be.2936e","wires":[]},{"id":"6d7d1582.92029c","type":"set","name":"set ar-assignments","xml":"<set>\n<parameter name='ar-assignments.source-network.network-id' value=\"`$ctotmp.s-l3-network.network-id` \" />\n<parameter name='ar-assignments.source-network.network-role' value=\"`$cto-api.source-network-role` \" />\n<parameter name='ar-assignments.dest-network.network-id' value=\"`$ctotmp.c-l3-network.network-id` \" />\n<parameter name='ar-assignments.dest-network.network-role' value=\"`$cto-api.collector-network-role` \" />\n\n\n","comments":"","x":686.755500793457,"y":2873.8030004501343,"z":"fd8223be.2936e","wires":[]},{"id":"9e272ec7.04769","type":"for","name":"for cidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]","xml":"<for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n","comments":"","outputs":1,"x":1573.5654296875,"y":4012.374701499939,"z":"fd8223be.2936e","wires":[["2a65ff.8d7fda02"]]},{"id":"6e678b74.303c34","type":"switchNode","name":"switch service-data.consumed-allotted-resources_length","xml":"<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\n","comments":"","outputs":1,"x":741.5648803710938,"y":3970.0887699127197,"z":"fd8223be.2936e","wires":[["2ca2838e.661a44","674d770a.b887e"]]},{"id":"2ca2838e.661a44","type":"other","name":"outcome Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1053.707763671875,"y":3972.9461851119995,"z":"fd8223be.2936e","wires":[["5e15905d.5fd038"]]},{"id":"674d770a.b887e","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1041.7077674865723,"y":4015.946186542511,"z":"fd8223be.2936e","wires":[["106d14da.f2f283"]]},{"id":"2a65ff.8d7fda02","type":"switchNode","name":"switch allotted-resource-id","xml":"<switch test=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n","comments":"","outputs":1,"x":2003.660629272461,"y":4014.43434381485,"z":"fd8223be.2936e","wires":[["f00c83a.815be"]]},{"id":"f00c83a.815be","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2208.4706268310547,"y":4014.898920059204,"z":"fd8223be.2936e","wires":[["23dd8766.297268"]]},{"id":"106d14da.f2f283","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1201.8348579406738,"y":4014.072163105011,"z":"fd8223be.2936e","wires":[["9e272ec7.04769","b4720284.921fa"]]},{"id":"23dd8766.297268","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2399.2314453125,"y":4014.7560930252075,"z":"fd8223be.2936e","wires":[["48b3fee5.6ccd8","d4e53b54.a15808"]]},{"id":"5e15905d.5fd038","type":"set","name":"set cidx","xml":"<set>\n<parameter name='tmp.cidx' value=\"`0`\" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value=\"1\" />\n\n\n","comments":"","x":1212.5647354125977,"y":3972.6602478027344,"z":"fd8223be.2936e","wires":[]},{"id":"48b3fee5.6ccd8","type":"set","name":"set tmp.cidx and ctx.consumed-ar","xml":"<set>\n<parameter name='tmp.cidx' value='`$cidx`' />\n<parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />\n<parameter name='tmp.found-cidx' value='true' />","comments":"","x":2645.088876724243,"y":3971.994129180908,"z":"fd8223be.2936e","wires":[]},{"id":"84c0d39e.e63c5","type":"set","name":"set consumed allotted resources","xml":"<set>\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value=\"`$tmp.ar.allotted-resource-type` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value=\"`$tmp.ar.self-link` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />\n\n","comments":"","x":665.4222869873047,"y":4010.6603050231934,"z":"fd8223be.2936e","wires":[]},{"id":"abf7f200.f83fc8","type":"comment","name":"Create urls for restapi","info":"","comments":"","x":753.5650177001953,"y":1961.9933624267578,"z":"fd8223be.2936e","wires":[]},{"id":"b09a986c.221fa8","type":"set","name":"set ar-assignments","xml":"<set>\n<parameter name='ar-assignments.fq-name' value=\"`$tmp.fq-name` \" />\n\n\n\n","comments":"","x":680.0888290405273,"y":3091.9469709396362,"z":"fd8223be.2936e","wires":[]},{"id":"35bec61.b93bbba","type":"comment","name":"Add AR to md-sal","info":"","comments":"","x":597.3270835876465,"y":4550.89836025238,"z":"fd8223be.2936e","wires":[]},{"id":"b57c7a1.51b0008","type":"execute","name":"execute getTime","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n","comments":"","outputs":1,"x":666.6600646972656,"y":3227.2319765090942,"z":"fd8223be.2936e","wires":[[]]},{"id":"b6498b3f.f4a89","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: Existing contrail route allotted resource\" />\n    \n","comments":"","x":1900.6075477600098,"y":2126.369183063507,"z":"fd8223be.2936e","wires":[]},{"id":"db13b017.ab15b","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1187.940845489502,"y":2165.3692865371704,"z":"fd8223be.2936e","wires":[["c478d043.0bfbb"]]},{"id":"c478d043.0bfbb","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1322.9407958984375,"y":2166.0357751846313,"z":"fd8223be.2936e","wires":[[]]},{"id":"e2f5e253.1b2318","type":"set","name":"set ar data","xml":"<set>\n<parameter name='ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<!--\n<parameter name='ar.allotted-resource-status.action' value=\"`$contrail-route-topology-operation-input.request-information.request-action` \" />\n<parameter name='ar.allotted-resource-status.rpc-name' value=\"contrail-route-topology-operation\" />\n<parameter name='ar.allotted-resource-status.rpc-action' value=\"`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$contrail-route-topology-operation-input.request-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$contrail-route-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$contrail-route-topology-operation-input.service-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$contrail-route-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.` \" />\n-->","comments":"","x":718.2740936279297,"y":2189.702548980713,"z":"fd8223be.2936e","wires":[]},{"id":"43ac428a.dc5c34","type":"execute","name":"execute SliStringUtils - replace $cloud-region-id","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ar-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-name\"/>\n    <parameter name=\"target\" value=\"$cloud-region-id\"/>\n    <parameter name=\"replacement\" value=\"`$cto-api.cloud-region-id`\"/>\n\n","comments":"","outputs":1,"x":1081.8927841186523,"y":2521.7025747299194,"z":"fd8223be.2936e","wires":[[]]},{"id":"3d9c9398.344a14","type":"execute","name":"execute SliStringUtils - replace $source-network-role","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ar-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-name\"/>\n    <parameter name=\"target\" value=\"$source-network-role\"/>\n    <parameter name=\"replacement\" value=\"`$cto-api.source-network-role`\"/>\n\n","comments":"","outputs":1,"x":1085.2736053466797,"y":2549.035895347595,"z":"fd8223be.2936e","wires":[[]]},{"id":"3f03ddb7.9a84f2","type":"call","name":"call GENERIC-RESOURCE-API:generate-unique-name","xml":"<call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\n","comments":"","outputs":1,"x":1101.6071472167969,"y":2696.3691416978836,"z":"fd8223be.2936e","wires":[["b548b1f6.a326a","2e1da622.231e42"]]},{"id":"b548b1f6.a326a","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1436.321792602539,"y":2694.2263759970665,"z":"fd8223be.2936e","wires":[["ed374845.ee4bb"]]},{"id":"2e1da622.231e42","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1441.6550369262695,"y":2725.8930765092373,"z":"fd8223be.2936e","wires":[["5f3684b9.b9797c"]]},{"id":"9e2a16a6.a13cb8","type":"set","name":"set variables for generating unique name","xml":"<set>\n<parameter name='generate-unique-name-input.index-table-name' value='CONTRAIL_ROUTE_NAME_INDEX' />\n<parameter name='generate-unique-name-input.index-table-prefix-column' value='contrail_route_name_prefix' />\n<parameter name='generate-unique-name-input.name-table-type' value='CONTRAIL_ROUTE_INSTANCE' />\n<parameter name='generate-unique-name-input.prefix' value=\"`$tmp.ar-name`\" />\n<parameter name='generate-unique-name-input.index-length' value='2' />\n","comments":"","x":1063.2741470336914,"y":2626.035841912031,"z":"fd8223be.2936e","wires":[]},{"id":"5f3684b9.b9797c","type":"set","name":"set tmp.ar-name to generated name","xml":"<set>\n<parameter name='tmp.ar-name' value='`$generate-unique-name-output.generated-name`' />\n","comments":"","x":1688.845199584961,"y":2726.3691568374634,"z":"fd8223be.2936e","wires":[]},{"id":"ed374845.ee4bb","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=\"`$generate-unique-name-output.error-message`\" />\n","comments":"","x":1610.1787147521973,"y":2693.6548896729946,"z":"fd8223be.2936e","wires":[]},{"id":"59f0019d.e27e5","type":"set","name":"set fq_name","xml":"<set>\n<parameter name='tmp.fq-name' value='$defaultDomain.$defaultProject.$sdncNetworkPolicy' />\n","comments":"","x":668.4166259765625,"y":2958.083620071411,"z":"fd8223be.2936e","wires":[]},{"id":"8a4f8bfb.56fa78","type":"execute","name":"execute SliStringUtils - replace $defaultDomain","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.fq-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.fq-name\"/>\n    <parameter name=\"target\" value=\"$defaultDomain\"/>\n    <parameter name=\"replacement\" value=\"`$cto-api.default-domain`\"/>\n\n","comments":"","outputs":1,"x":775.7500152587891,"y":2988.0835410654545,"z":"fd8223be.2936e","wires":[[]]},{"id":"416a3007.88306","type":"execute","name":"execute SliStringUtils - replace $defaultProject","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.fq-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.fq-name\"/>\n    <parameter name=\"target\" value=\"$defaultProject\"/>\n    <parameter name=\"replacement\" value=\"`$cto-api.default-project`\"/>\n\n","comments":"","outputs":1,"x":775.7500076293945,"y":3021.417103767395,"z":"fd8223be.2936e","wires":[[]]},{"id":"bd3fa69c.30dc4","type":"comment","name":"generate fqname","info":"","comments":"","x":677.4166717529297,"y":2931.416926383972,"z":"fd8223be.2936e","wires":[]},{"id":"803a97d9.066c3","type":"execute","name":"execute SliStringUtils - replace $sdncNetworkPolicy","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.fq-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.fq-name\"/>\n    <parameter name=\"target\" value=\"$sdncNetworkPolicy\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar-name`\"/>\n\n","comments":"","outputs":1,"x":786.7499618530273,"y":3054.749886661768,"z":"fd8223be.2936e","wires":[[]]},{"id":"724e650c.59b494","type":"update","name":"save AAI allotted-resource","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $cto-api.service-type AND\n\t\t\tservice-instance.service-instance-id = $cto-api.parent-service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n    <parameter name=\"id\" value=\"`$tmp.ar.allotted-resource-id`\" />\n\t<parameter name=\"description\" value=\"`$tmp.ar.allotted-resource-type`\" />\n\t<parameter name=\"selflink\" value=\"`$tmp.ar.self-link`\" />\n\t<parameter name=\"operational-status\" value=\"out-of-service-path\" />\n\t<parameter name=\"order-status\" value=\"Created\" />","comments":"","outputs":1,"x":658.3690795898438,"y":3697.9887590408325,"z":"fd8223be.2936e","wires":[["1ded98d5.9cb767","26bf7392.67e7a4","e80c53f2.a704a"]]},{"id":"1ded98d5.9cb767","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":907.0357131958008,"y":3670.226936817169,"z":"fd8223be.2936e","wires":[["3b1f3b10.705a0c"]]},{"id":"26bf7392.67e7a4","type":"failure","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":912.345142364502,"y":3705.798354625702,"z":"fd8223be.2936e","wires":[["3b1f3b10.705a0c"]]},{"id":"ce6205d7.9406b8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"tmp.ar-name=\"/>\n<parameter name=\"field3\" value=\"`$tmp.ar-name`\"/>\n<parameter name=\"field4\" value=\"generate-unique-name-input.prefix\" />\n<parameter name=\"field5\" value=\"`$generate-unique-name-input.prefix`\" />","comments":"","outputs":1,"x":954.4739456176758,"y":2661.0359387099743,"z":"fd8223be.2936e","wires":[[]]},{"id":"7f28e1e1.db86f8","type":"execute","name":"generate parent-network url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.network`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-parentnetwork-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$cto-api.parent-service-instance-id`\"/>\n","comments":"","outputs":1,"x":768.2741546630859,"y":2034.7022666931152,"z":"fd8223be.2936e","wires":[[]]},{"id":"c3a420b2.5783a","type":"comment","name":"Update AAI AR","info":"","comments":"","x":614.6166381835938,"y":3656.417206287384,"z":"fd8223be.2936e","wires":[]},{"id":"5172899d.b7464","type":"execute","name":"execute RestApiCallNode - Update parent provided service AR","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"parent\" />\n\n","comments":"","outputs":1,"x":745.6167144775391,"y":4148.750764369965,"z":"fd8223be.2936e","wires":[["e59c42d5.79faf8","422ff4ec.a8a394","e613335b.7c4aa8"]]},{"id":"e59c42d5.79faf8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1066.2580795288086,"y":4197.08226108551,"z":"fd8223be.2936e","wires":[["10882401.6b38ec"]]},{"id":"422ff4ec.a8a394","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1058.9247817993164,"y":4162.249007701874,"z":"fd8223be.2936e","wires":[["10882401.6b38ec"]]},{"id":"e613335b.7c4aa8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1062.674819946289,"y":4132.606112577021,"z":"fd8223be.2936e","wires":[["60a1a7d3.34c4b8"]]},{"id":"60a1a7d3.34c4b8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1204.3307876586914,"y":4128.798281766474,"z":"fd8223be.2936e","wires":[[]]},{"id":"f83ef61.b139408","type":"comment","name":"Put the parent allotted resource in mdsal","info":"","comments":"","x":672.6166801452637,"y":4116.750589847565,"z":"fd8223be.2936e","wires":[]},{"id":"b4720284.921fa","type":"switchNode","name":"switch tmp.found-cidx","xml":"<switch test='`$tmp.found-cidx`'>\n","comments":"","outputs":1,"x":1390.9499244689941,"y":4077.7504601478577,"z":"fd8223be.2936e","wires":[["970f80eb.52fe4"]]},{"id":"970f80eb.52fe4","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1580.949878692627,"y":4077.750397205353,"z":"fd8223be.2936e","wires":[["b15e15ed.cb123"]]},{"id":"b15e15ed.cb123","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1746.949878692627,"y":4077.750397205353,"z":"fd8223be.2936e","wires":[["7f6380dc.838d4"]]},{"id":"7f6380dc.838d4","type":"set","name":"set tmp.cidx ","xml":"<set>\n<parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />\n","comments":"","x":1992.807207107544,"y":4078.32187128067,"z":"fd8223be.2936e","wires":[]},{"id":"d4e53b54.a15808","type":"break","name":"break","xml":"<break>\n","comments":"","x":2561.9498291015625,"y":4000.7501294612885,"z":"fd8223be.2936e","wires":[]},{"id":"e9d9ba39.43f818","type":"execute","name":"generate parent-ar url - replace service-instance-id","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.parent-provided-resource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.parent-ar-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$cto-api.parent-service-instance-id`\"/>\n","comments":"","outputs":1,"x":841.140869140625,"y":1993.369249343872,"z":"fd8223be.2936e","wires":[[]]},{"id":"3d247334.a1372c","type":"execute","name":"generate parent-ar url - replace allotted-resource-id","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.parent-ar-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.parent-ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n","comments":"","outputs":1,"x":829.4740142822266,"y":2278.369143486023,"z":"fd8223be.2936e","wires":[[]]},{"id":"2f969250.766e46","type":"execute","name":"execute RestApiCallNode - Update parent provided service AR","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"parent\" />\n\n","comments":"","outputs":1,"x":1436.4169578552246,"y":4589.750328063965,"z":"fd8223be.2936e","wires":[["cacefbda.c09118","a4a8e124.abfb98","a90079c7.306d8"]]},{"id":"48cc2493.a0fe6c","type":"comment","name":"Rollback parent","info":"","comments":"","x":1280.4168853759766,"y":4559.41695857048,"z":"fd8223be.2936e","wires":[]},{"id":"c445da3e.4e161","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1089.0834884643555,"y":4589.083631515503,"z":"fd8223be.2936e","wires":[["2f969250.766e46","76e9e56c.5f957c"]]},{"id":"cacefbda.c09118","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1807.7250061035156,"y":4650.415294408798,"z":"fd8223be.2936e","wires":[["772f3e20.3729e8"]]},{"id":"a4a8e124.abfb98","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1798.72505569458,"y":4618.915320158005,"z":"fd8223be.2936e","wires":[["772f3e20.3729e8"]]},{"id":"a90079c7.306d8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1802.4750938415527,"y":4589.272425033152,"z":"fd8223be.2936e","wires":[["772f3e20.3729e8"]]},{"id":"772f3e20.3729e8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1944.131061553955,"y":4585.464594222605,"z":"fd8223be.2936e","wires":[[]]},{"id":"f255c05d.7948a","type":"execute","name":"generate network-ar url - replace service-instance-id","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.network-provided-resource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.network-ar-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n","comments":"","outputs":1,"x":831.2739562988281,"y":2318.368896484375,"z":"fd8223be.2936e","wires":[[]]},{"id":"4bc63892.dc826","type":"comment","name":"allotted resource already exists- no op","info":"","comments":"","x":2516.7498817443848,"y":3931.4163995981216,"z":"fd8223be.2936e","wires":[]},{"id":"80af03e.6ba0e8","type":"comment","name":"Other Rollbacks? ","info":"","comments":"","x":1286.0832328796387,"y":4651.416703224182,"z":"fd8223be.2936e","wires":[]},{"id":"358b2d3.80d5a52","type":"comment","name":"MDSal adaptor only saves consuming service so parent service and AR are done by Rest api calls","info":"","comments":"","x":678.7499389648438,"y":69.74998950958252,"z":"fd8223be.2936e","wires":[]},{"id":"1b0fea44.83ef26","type":"comment","name":"Parameter names","info":"INPUT:\ncto-api.parent-service-instance-id\ncto-api.port-mirror-configuration-instance-id\ncto-api.source-network-role\ncto-api.collector-network-role\ncto-api.default-domain\ncto-api.default-project\ncto-api.cloud-region-id\ncto-api.service-type\nOUTPUT:\ncto-api.contrail-route-allotted-resource-id\n","comments":"","x":425.75,"y":102.75000476837158,"z":"fd8223be.2936e","wires":[]},{"id":"7213d545.2b0f9c","type":"save","name":"Get network from AAI for source network","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"ctotmp.aai.source-network\">\n      <parameter name=\"start[0]\" value=\"`'/cloud-infrastructure/cloud-regions/cloud-region/' + $cto-api.cloud-owner + '/'  + $cto-api.cloud-region-id`\" />\n      <parameter name=\"start_length\" value=\"1\" /> \n      <parameter name=\"query\" value=\"`'/query/network-name-fromNetwork-role?networkRole='  + $cto-api.source-network-role`\" /> \n","comments":"","outputs":1,"x":835.4283599853516,"y":476.65470790863037,"z":"fd8223be.2936e","wires":[["f489a184.f63528","90317c35.5ed19"]]},{"id":"f489a184.f63528","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1107.5712089538574,"y":446.6548328399658,"z":"fd8223be.2936e","wires":[["b7191164.dbdd18"]]},{"id":"b7191164.dbdd18","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1276.8093223571777,"y":437.13086891174316,"z":"fd8223be.2936e","wires":[["4e660df0.8c2e1c"]]},{"id":"90317c35.5ed19","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1109.3568572998047,"y":476.71428298950195,"z":"fd8223be.2936e","wires":[["23eddc08.e69244"]]},{"id":"23eddc08.e69244","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1273.6425666809082,"y":475.28576469421387,"z":"fd8223be.2936e","wires":[["7fc789ae.200978"]]},{"id":"2e387eee.1a638a","type":"configure","name":"set default values","xml":"<set>\n<parameter name=\"ctotmp.s-l3-network\" value=\"\" />\n<parameter name=\"ctotmp.num-s-network\" value=\"0\" />\n<parameter name=\"ctotmp.s-network-policy\" value=\"\" />\n<parameter name=\"ctotmp.num-s-np\" value=\"0\" />\n<parameter name=\"ctotmp.c-l3-network\" value=\"\" />\n<parameter name=\"ctotmp.num-c-network\" value=\"0\" />\n<parameter name=\"ctotmp.c-network-policy\" value=\"\" />\n<parameter name=\"ctotmp.num-c-np\" value=\"0\" />\n<parameter name=\"ctotmp.s-network-policy-list_length\" value=\"0\" />\n<parameter name=\"ctotmp.c-network-policy-list_length\" value=\"0\" />\n<parameter name=\"ctotmp.network-policy-id\" value=\"\" />\n<parameter name=\"ctotmp.action\" value=\"create\" />\n","comments":"","outputs":1,"x":774.4165954589844,"y":314.2737703323364,"z":"fd8223be.2936e","wires":[[]]},{"id":"527138b.89bd148","type":"comment","name":"Get l3-network/policy for source network role","info":"","comments":"","x":837.5117034912109,"y":446.65477657318115,"z":"fd8223be.2936e","wires":[]},{"id":"4e660df0.8c2e1c","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=\"API-contrail-route-topology-operation-create: Failed to get source network from aai\" />\n","comments":"","x":1449.4166374206543,"y":439.2737159729004,"z":"fd8223be.2936e","wires":[]},{"id":"7fc789ae.200978","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=\"API-contrail-route-topology-operation-create: Source network not found in AAI\" />\n","comments":"","x":1447.9878578186035,"y":473.5594291687012,"z":"fd8223be.2936e","wires":[]},{"id":"37ded934.68fab6","type":"for","name":"for each src network","xml":"<for index='ctotmp.sidx' start='0' end='`$ctotmp.aai.source-network.results_length`' >\n","comments":"","outputs":1,"x":772.7499237060547,"y":551.416615486145,"z":"fd8223be.2936e","wires":[["b901219f.362c48"]]},{"id":"62ec4e1c.4e5e1","type":"switchNode","name":"check for network-policy","xml":"<switch test='`$ctotmp.aai.source-network.results[$ctotmp.sidx].network-policy.network-policy-id`'>\n","comments":"","outputs":1,"x":1189.4167175292969,"y":551.0831060409546,"z":"fd8223be.2936e","wires":[["82e974a5.880ec","ab575fe2.1a7378"]]},{"id":"82e974a5.880ec","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1379.4165573120117,"y":533.0831651687622,"z":"fd8223be.2936e","wires":[["b8c1cb2a.2baaa"]]},{"id":"ab575fe2.1a7378","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1382.7498397827148,"y":569.5118780136108,"z":"fd8223be.2936e","wires":[["fdc0d899.f8967"]]},{"id":"b8c1cb2a.2baaa","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1541.0832214355469,"y":533.797441482544,"z":"fd8223be.2936e","wires":[[]]},{"id":"fdc0d899.f8967","type":"switchNode","name":"switch network-policy-id","xml":"<switch test='`$ctotmp.aai.source-network.results[$ctotmp.sidx].network-policy.network-policy-id`'>\n","comments":"","outputs":1,"x":1569.416763305664,"y":568.0834722518921,"z":"fd8223be.2936e","wires":[["9a0326c9.066d","f2d265f2.4447a8"]]},{"id":"9a0326c9.066d","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1794.4165344238281,"y":541.4164571762085,"z":"fd8223be.2936e","wires":[["924c99f0.70c"]]},{"id":"f2d265f2.4447a8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1792.7497596740723,"y":569.5117740631104,"z":"fd8223be.2936e","wires":[["d577bcf4.265fc8"]]},{"id":"d577bcf4.265fc8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1957.749843597412,"y":578.0831642150879,"z":"fd8223be.2936e","wires":[["ecf1fa5d.04cc2","cbfccf94.e608c8","400312fa.149e74"]]},{"id":"ecf1fa5d.04cc2","type":"configure","name":"set ctotmp.num-s-np","xml":"<set>\n<parameter name=\"ctotmp.num-s-np\" value=\"`$ctotmp.num-s-np+1`\" />\n","comments":"","outputs":1,"x":2189.9881744384766,"y":569.4641437530518,"z":"fd8223be.2936e","wires":[[]]},{"id":"924c99f0.70c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1962.7498626708984,"y":543.083291053772,"z":"fd8223be.2936e","wires":[[]]},{"id":"5abec00b.b100b","type":"switchNode","name":"check for l3-network","xml":"<switch test='`$ctotmp.aai.source-network.results[$ctotmp.sidx].l3-network.network-id`'>\n","comments":"","outputs":1,"x":1179.416648864746,"y":629.7497749328613,"z":"fd8223be.2936e","wires":[["e1486c36.e9aba8","7fb419d1.9615e8"]]},{"id":"e1486c36.e9aba8","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1386.0831832885742,"y":614.7498550415039,"z":"fd8223be.2936e","wires":[["83b5f616.98f4c"]]},{"id":"7fb419d1.9615e8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1389.4164657592773,"y":652.8451910018921,"z":"fd8223be.2936e","wires":[["1db68be1.b1d39c"]]},{"id":"83b5f616.98f4c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1547.749813079834,"y":615.1308164596558,"z":"fd8223be.2936e","wires":[[]]},{"id":"1db68be1.b1d39c","type":"switchNode","name":"switch network-id","xml":"<switch test='`$ctotmp.aai.source-network.results[$ctotmp.sidx].l3-network.network-id`'>\n","comments":"","outputs":1,"x":1561.083351135254,"y":653.0834550857544,"z":"fd8223be.2936e","wires":[["63feb3f3.840974","5823b7ec.89fb68"]]},{"id":"63feb3f3.840974","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1799.4164924621582,"y":631.4164018630981,"z":"fd8223be.2936e","wires":[["a870e259.8f814"]]},{"id":"5823b7ec.89fb68","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1801.0830917358398,"y":676.1784429550171,"z":"fd8223be.2936e","wires":[["d04fa4d.65ff158"]]},{"id":"d04fa4d.65ff158","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1959.4165344238281,"y":674.7497701644897,"z":"fd8223be.2936e","wires":[["f43dcd75.cd43d8"]]},{"id":"a870e259.8f814","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1969.4164562225342,"y":631.4166040420532,"z":"fd8223be.2936e","wires":[[]]},{"id":"b901219f.362c48","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":977.7498626708984,"y":551.4166040420532,"z":"fd8223be.2936e","wires":[["62ec4e1c.4e5e1","5abec00b.b100b"]]},{"id":"f43dcd75.cd43d8","type":"configure","name":"set s-l3-network and num-s-network","xml":"<set>\n<parameter name=\"ctotmp.s-l3-network.\" value=\"`$ctotmp.aai.source-network.results[$ctotmp.sidx].l3-network.`\" />\n<parameter name=\"ctotmp.num-s-network\" value=\"`$ctotmp.num-s-network+1`\" />\n\n","comments":"","outputs":1,"x":2214.0830078125,"y":673.0832681655884,"z":"fd8223be.2936e","wires":[[]]},{"id":"4c419af6.dc942c","type":"configure","name":"clear internal data","xml":"<set>\n<parameter name=\"ctotmp.\" value=\"\" />\n<parameter name=\"ar-request-information.\" value=\"\" />\n<parameter name=\"ar-created\" value=\"\" />\n<parameter name=\"ar-aai-created\" value=\"\" />\n<parameter name=\"np-aai-created\" value=\"\" />\n<parameter name=\"contrail-created\" value=\"\" />\n","comments":"","outputs":1,"x":771.0833129882812,"y":279.7499985694885,"z":"fd8223be.2936e","wires":[[]]},{"id":"948c94af.a879","type":"set","name":"set ar-contrail-route=request-input","xml":"<set>\n<parameter name='ar-contrail-route-request-input.source-network.network-role' value=\"`$cto-api.source-network-role`\" />\n<parameter name='ar-contrail-route-request-input.source-network.network-id' value=\"`$ctotmp.source-network.network-id`\" />\n<parameter name='ar-contrail-route-request-input.dest-network.network-role' value=\"`$cto-api.collector-network-role`\" />\n<parameter name='ar-contrail-route-request-input.dest-network.network-id' value=\"`$ctotmp.dest-network.network-id`\" />\n\n","comments":"","x":799.4167327880859,"y":1686.7498121261597,"z":"fd8223be.2936e","wires":[]},{"id":"c5de323f.f81938","type":"switchNode","name":"switch num-s-network","xml":"<switch test='`$ctotmp.num-s-network`'>\n","comments":"","outputs":1,"x":774.4166107177734,"y":723.0831327438354,"z":"fd8223be.2936e","wires":[["64a3201b.dafe8","48b7d85e.afa768","ec81d452.09a2b8"]]},{"id":"48b7d85e.afa768","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":971.0833282470703,"y":761.4166269302368,"z":"fd8223be.2936e","wires":[["8202168f.6d8d48"]]},{"id":"64a3201b.dafe8","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":971.0832405090332,"y":692.7498483657837,"z":"fd8223be.2936e","wires":[["3828f995.1688fe"]]},{"id":"ec81d452.09a2b8","type":"other","name":"1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":969.4166107177734,"y":728.0831747055054,"z":"fd8223be.2936e","wires":[["7c1e2f87.932f5"]]},{"id":"3828f995.1688fe","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=\"API-contrail-route-topology-operation-create: Source network not found from aai\" />\n","comments":"","x":1134.4165534973145,"y":692.7498826980591,"z":"fd8223be.2936e","wires":[]},{"id":"8202168f.6d8d48","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=\"API-contrail-route-topology-operation-create: Too many networks returned for source network from aai\" />\n","comments":"","x":1130.7498970031738,"y":761.7498617172241,"z":"fd8223be.2936e","wires":[]},{"id":"7c1e2f87.932f5","type":"configure","name":"set source network-id","xml":"<set>\n<parameter name=\"ctotmp.source-network.network-id\" value=\"`$ctotmp.s-l3-network.network-id`\" />\n\n\n","comments":"","outputs":1,"x":1157.75,"y":731.0833024978638,"z":"fd8223be.2936e","wires":[[]]},{"id":"c3814cf0.0b0738","type":"save","name":"Get network from AAI for collector network","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"ctotmp.aai.collector-network\">\n      <parameter name=\"start[0]\" value=\"`'/cloud-infrastructure/cloud-regions/cloud-region/' + $cto-api.cloud-owner + '/'  + $cto-api.cloud-region-id`\" />\n      <parameter name=\"start_length\" value=\"1\" /> \n      <parameter name=\"query\" value=\"`'/query/network-name-fromNetwork-role?networkRole='  + $cto-api.collector-network-role`\" /> \n","comments":"","outputs":1,"x":844.4166564941406,"y":864.7499113082886,"z":"fd8223be.2936e","wires":[["bb88165.d1937e8","7f15d0fc.069948"]]},{"id":"bb88165.d1937e8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1116.5595054626465,"y":834.750036239624,"z":"fd8223be.2936e","wires":[["bde8dca0.2e98d"]]},{"id":"bde8dca0.2e98d","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1285.7976188659668,"y":825.2260723114014,"z":"fd8223be.2936e","wires":[["f2f89124.07b14"]]},{"id":"7f15d0fc.069948","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1118.3451538085938,"y":864.8094863891602,"z":"fd8223be.2936e","wires":[["716be41c.d6d394"]]},{"id":"716be41c.d6d394","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1282.6308631896973,"y":863.3809680938721,"z":"fd8223be.2936e","wires":[["ffe76153.cabf68"]]},{"id":"56ea117c.705cb8","type":"comment","name":"Get l3-network/policy for collector network role","info":"","comments":"","x":846.5,"y":834.7499799728394,"z":"fd8223be.2936e","wires":[]},{"id":"f2f89124.07b14","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=\"API-contrail-route-topology-operation-create: Failed to get collector network from aai\" />\n","comments":"","x":1458.4049339294434,"y":827.3689193725586,"z":"fd8223be.2936e","wires":[]},{"id":"ffe76153.cabf68","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=\"API-contrail-route-topology-operation-create: Collector network not found in AAI\" />\n","comments":"","x":1456.9761543273926,"y":861.6546325683594,"z":"fd8223be.2936e","wires":[]},{"id":"7cae277d.772588","type":"for","name":"for each collector network","xml":"<for index='ctotmp.cidx' start='0' end='`$ctotmp.aai.collector-network.results_length`' >\n","comments":"","outputs":1,"x":771.4049072265625,"y":952.5117797851562,"z":"fd8223be.2936e","wires":[["f0662510.4e8fb8"]]},{"id":"230f1cfd.35f71c","type":"switchNode","name":"check for l3-network","xml":"<switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.network-id`'>\n","comments":"","outputs":1,"x":1208.0716552734375,"y":954.1781616210938,"z":"fd8223be.2936e","wires":[["fbe44b80.49bb3","578fb4d0.480724"]]},{"id":"fbe44b80.49bb3","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1415.0714111328125,"y":953.1783447265625,"z":"fd8223be.2936e","wires":[["b5d85abf.060458"]]},{"id":"578fb4d0.480724","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1418.4046936035156,"y":991.2736806869507,"z":"fd8223be.2936e","wires":[["9d0af548.8c9958"]]},{"id":"9d0af548.8c9958","type":"switchNode","name":"switch network-id","xml":"<switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.network-id`'>\n","comments":"","outputs":1,"x":1590.0715789794922,"y":991.511944770813,"z":"fd8223be.2936e","wires":[["643bc785.a07d5","a9f3513.8d7ddb"]]},{"id":"643bc785.a07d5","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1777.7381591796875,"y":992.511474609375,"z":"fd8223be.2936e","wires":[["26d45d59.14ab12"]]},{"id":"a9f3513.8d7ddb","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1779.4047584533691,"y":1037.273515701294,"z":"fd8223be.2936e","wires":[["ba7314d9.3de7b8"]]},{"id":"ba7314d9.3de7b8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1937.7382011413574,"y":1035.8448429107666,"z":"fd8223be.2936e","wires":[["fbe27f49.91dd28","94eb59a2.0945b"]]},{"id":"26d45d59.14ab12","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1947.7381229400635,"y":992.5116767883301,"z":"fd8223be.2936e","wires":[[]]},{"id":"f0662510.4e8fb8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":996.7381973266602,"y":952.8450679779053,"z":"fd8223be.2936e","wires":[["230f1cfd.35f71c"]]},{"id":"fbe27f49.91dd28","type":"configure","name":"set c-l3-network and num-c-network","xml":"<set>\n<parameter name=\"ctotmp.c-l3-network.\" value=\"`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.`\" />\n<parameter name=\"ctotmp.num-c-network\" value=\"`$ctotmp.num-c-network+1`\" />\n\n","comments":"","outputs":1,"x":2215.40478515625,"y":999.1783447265625,"z":"fd8223be.2936e","wires":[[]]},{"id":"810fdfd4.2afd5","type":"comment","name":"Do we need to check for > 1","info":"","comments":"","x":791.0833168029785,"y":678.0833911895752,"z":"fd8223be.2936e","wires":[]},{"id":"cbfccf94.e608c8","type":"configure","name":"add s-network-policy-id to list","xml":"<set>\n<parameter name=\"ctotmp.s-network-policy-list[$ctotmp.num-s-np].network-policy-id\" value=\"`$ctotmp.aai.source-network.results[$ctotmp.sidx].network-policy.network-policy-id`\" />\n\n","comments":"","outputs":1,"x":2212.749931335449,"y":543.0833034515381,"z":"fd8223be.2936e","wires":[[]]},{"id":"400312fa.149e74","type":"configure","name":"set s-network-policy-list_length","xml":"<set>\n<parameter name=\"ctotmp.s-network-policy-list_length\" value=\"`$ctotmp.num-s-np`\" />\n","comments":"","outputs":1,"x":2214.4168434143066,"y":604.7499723434448,"z":"fd8223be.2936e","wires":[[]]},{"id":"4a08ade2.d13b7c","type":"for","name":"for each source-network-policy","xml":"<for index='ctotmp.spidx' start='0' end='`$ctotmp.s-network-policy-list_length`' >\n","comments":"","outputs":1,"x":783.0833384394646,"y":1349.749788761139,"z":"fd8223be.2936e","wires":[["6b08e08e.3836b"]]},{"id":"6b08e08e.3836b","type":"for","name":"for each collector-network-policy","xml":"<for index='ctotmp.cpidx' start='0' end='`$ctotmp.c-network-policy-list_length`' >\n","comments":"","outputs":1,"x":1089.7500101923943,"y":1348.0831761360168,"z":"fd8223be.2936e","wires":[["3578a521.ca3c32"]]},{"id":"3578a521.ca3c32","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1348.0832774043083,"y":1348.0831627845764,"z":"fd8223be.2936e","wires":[["3948c7e7.d3adb8"]]},{"id":"1433c949.6a3ddf","type":"comment","name":"Check if the source and collector network tied to same network policy","info":"","comments":"","x":903.0833231806755,"y":1313.083164691925,"z":"fd8223be.2936e","wires":[]},{"id":"6c53e4ce.fecfe4","type":"switchNode","name":"switch num-c-network","xml":"<switch test='`$ctotmp.num-c-network`'>\n","comments":"","outputs":1,"x":768.083273589611,"y":1201.4165048599243,"z":"fd8223be.2936e","wires":[["57594924.deefc8","9e18ade.cd92a5","fdd09fb3.c645a"]]},{"id":"9e18ade.cd92a5","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":964.7499694824219,"y":1239.749945640564,"z":"fd8223be.2936e","wires":[["9edabcd2.3b55a8"]]},{"id":"57594924.deefc8","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":966.4165954589844,"y":1176.083170890808,"z":"fd8223be.2936e","wires":[["388cf1b9.8ef3a6"]]},{"id":"fdd09fb3.c645a","type":"other","name":"1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":963.083251953125,"y":1206.4164934158325,"z":"fd8223be.2936e","wires":[["cad12ae1.434178"]]},{"id":"388cf1b9.8ef3a6","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=\"API-contrail-route-topology-operation-create: Collector network not found from aai\" />\n","comments":"","x":1121.7498779296875,"y":1177.083251953125,"z":"fd8223be.2936e","wires":[]},{"id":"9edabcd2.3b55a8","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=\"API-contrail-route-topology-operation-create: Too many networks returned for collector network from aai\" />\n","comments":"","x":1124.4165382385254,"y":1240.0831804275513,"z":"fd8223be.2936e","wires":[]},{"id":"cad12ae1.434178","type":"configure","name":"set collector network-id","xml":"<set>\n<parameter name=\"ctotmp.dest-network.network-id\" value=\"`$ctotmp.c-l3-network.network-id`\" />\n\n\n","comments":"","outputs":1,"x":1151.4166412353516,"y":1208.4166345596313,"z":"fd8223be.2936e","wires":[[]]},{"id":"928568b8.42cae","type":"comment","name":"Do we need to check for > 1","info":"","comments":"","x":786.4167391657829,"y":1163.0834650993347,"z":"fd8223be.2936e","wires":[]},{"id":"3948c7e7.d3adb8","type":"switchNode","name":"switch source policy = collector policy","xml":"<switch test='`$ctotmp.s-network-policy-list[$ctotmp.spidx].network-policy-id == $ctotmp.c-network-policy-list[$ctotmp.cpidx].network-policy-id`'>\n","comments":"","outputs":1,"x":1622.4166259765625,"y":1350.08336353302,"z":"fd8223be.2936e","wires":[["d30cdd30.d5a818"]]},{"id":"4a42aa8b.83e934","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2055.7499771118164,"y":1348.4166588783264,"z":"fd8223be.2936e","wires":[["2e7bff75.08d278","a90dd523.58d14"]]},{"id":"2e7bff75.08d278","type":"configure","name":"set ctotmp.network-policy-id","xml":"<set>\n<parameter name=\"ctotmp.network-policy-id\" value=\"`$ctotmp.s-network-policy-list[$ctotmp.spidx].network-policy-id`\" />\n<parameter name=\"ctotmp.existing-network-policy-found\" value=\"true\" />","comments":"","outputs":1,"x":2310.7499771118164,"y":1348.4166588783264,"z":"fd8223be.2936e","wires":[[]]},{"id":"a90dd523.58d14","type":"break","name":"break","xml":"<break>\n","comments":"","x":2249.083236694336,"y":1425.08340549469,"z":"fd8223be.2936e","wires":[]},{"id":"d30cdd30.d5a818","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1870.7499732971191,"y":1348.4166555404663,"z":"fd8223be.2936e","wires":[["4a42aa8b.83e934"]]},{"id":"fd2ab770.01bd18","type":"comment","name":"if network policy found, get AR and return to calling method","info":"","comments":"","x":876.4166628718376,"y":1458.4165740013123,"z":"fd8223be.2936e","wires":[]},{"id":"910ed547.3ffca","type":"switchNode","name":"switch network-policy-id","xml":"<switch test='`$ctotmp.network-policy-id`'>\n","comments":"","outputs":1,"x":773.0833498835564,"y":1493.0831999778748,"z":"fd8223be.2936e","wires":[["dc9f60fd.a57cb","ef776953.3d7ee8"]]},{"id":"dc9f60fd.a57cb","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":979.7500101923943,"y":1491.4167160987854,"z":"fd8223be.2936e","wires":[["931d7263.438eb"]]},{"id":"ef776953.3d7ee8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":983.0833422541618,"y":1524.7500100135803,"z":"fd8223be.2936e","wires":[["4fb26c91.499a04"]]},{"id":"931d7263.438eb","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1144.7499606013298,"y":1491.4165968894958,"z":"fd8223be.2936e","wires":[[]]},{"id":"4fb26c91.499a04","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1154.749912917614,"y":1524.749927997589,"z":"fd8223be.2936e","wires":[["e80a0448.c77ed"]]},{"id":"e80a0448.c77ed","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=\"existing policy - error\" />\n","comments":"","x":1388.0832964777946,"y":1524.7498869895935,"z":"fd8223be.2936e","wires":[]},{"id":"218546c.191c6ba","type":"comment","name":"Flow to create the allotted resource","info":"","comments":"","x":791.0833129882812,"y":1557.4167375564575,"z":"fd8223be.2936e","wires":[]},{"id":"f542c02a.d7178","type":"comment","name":"Flow to use the existing allotted resource - TBD","info":"","comments":"","x":1467.7498779296875,"y":1409.749927520752,"z":"fd8223be.2936e","wires":[]},{"id":"bbda49e2.2a06b8","type":"comment","name":"Begin setup of new Allotted Resource","info":"","comments":"","x":802.7500457763672,"y":1591.416841506958,"z":"fd8223be.2936e","wires":[]},{"id":"dfa7d0a5.73fd4","type":"set","name":"set ar-identifiers","xml":"<set>\n<parameter name='ar-identifiers.allotted-resource-id' value=\"`$tmp.return.generate-allottedresource-id.id`\" />\n<parameter name='ar-identifiers.allotted-resource-type' value=\"contrail-route\" />\n<parameter name='ar-identifiers.parent-service-instance-id' value=\"`$cto-api.parent-service-instance-id`\" />\n<parameter name='ar-identifiers.consuming-service-instance-id' value=\"`$cto-api.service-instance-id` \" />\n<parameter name=\"tmp.ar.allotted-resource-id\" value=\"`$tmp.return.generate-allottedresource-id.id`\" />\n<parameter name='tmp.ar.allotted-resource-type' value=\"contrail-route\" />\n<parameter name='tmp.ar.parent-service-instance-id' value=\"`$cto-api.parent-service-instance-id`\" />\n<!-- <parameter name='tmp.ar.contrail-applied-service-instance-id' value='' />  -->\n","comments":"","x":742.4166717529297,"y":1771.4163599014282,"z":"fd8223be.2936e","wires":[]},{"id":"326513f8.a01924","type":"call","name":"call generate-allottedresource-id","xml":"<call module='GENERIC-RESOURCE-API' rpc='generate-allottedresource-id' mode='sync' >\n","comments":"","outputs":1,"x":793.2258377075195,"y":1723.8451147079468,"z":"fd8223be.2936e","wires":[[]]},{"id":"82250dcd.64764","type":"call","name":"call validate-api-contrail-route-input","xml":"<call module='GENERIC-RESOURCE-API' rpc='validate-api-contrail-route-input' mode='sync' >\n","comments":"","outputs":1,"x":831.0832824707031,"y":346.41666889190674,"z":"fd8223be.2936e","wires":[[]]},{"id":"4b4507fd.641f08","type":"comment","name":"Generate contrail-route-allotted-resource-name","info":"","comments":"","x":806.0833129882812,"y":2394.7499895095825,"z":"fd8223be.2936e","wires":[]},{"id":"dfce0d66.98785","type":"execute","name":"execute Contrail API create network policy","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='create' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='policy-name' value='`$tmp.fq-name`' />\n<parameter name='default-project' value='`$cto-api.default-project`' /> \n<!-- <parameter name='vipr-service-instance' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.contrail-applied-service.contrail-fqdn`' /> -->\n<parameter name='dst-virtual-network' value='`$ctotmp.c-l3-network.contrail-network-fqdn`' />\n<parameter name='src-virtual-network' value='`$ctotmp.s-l3-network.contrail-network-fqdn`' />\n<parameter name='direction' value='&lt;&gt;' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n\n","comments":"","outputs":1,"x":1486.0832824707031,"y":3370.1665449142456,"z":"fd8223be.2936e","wires":[["92f7cb34.8d741","f883d241.386fa8"]]},{"id":"92f7cb34.8d741","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1767.464126586914,"y":3339.5587922669947,"z":"fd8223be.2936e","wires":[["76c29cb0.6bee94"]]},{"id":"f883d241.386fa8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1765.5594482421875,"y":3372.558732032776,"z":"fd8223be.2936e","wires":[["bc08711f.026b2"]]},{"id":"bc08711f.026b2","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=\"`'Failed to create policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `\" />\n","comments":"","x":1925.464256286621,"y":3371.8921794891357,"z":"fd8223be.2936e","wires":[]},{"id":"22859f1a.190d08","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.api-contrail-route-topology-operation-create\"/>\n<parameter name='field3' value='network-policy' />\n<parameter name='field4' value='create' />\n<parameter name='field5' value='contrailResp' />\n<parameter name='field6' value='`$cto-api.default-domain`' />\n<parameter name='field7' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name`' />\n<parameter name='field8' value='`$cto-api.default-project`' />\n<parameter name='field9' value='`$ctotmp.c-l3-network.contrail-network-fqdn`' />\n<parameter name='field10' value='`$ctotmp.s-l3-network.contrail-network-fqdn`' />\n<parameter name='field11' value='&lt;&gt;' />\n<parameter name='field12' value='`$cto-api.cloud-region-id`' />\n\n\n\n","comments":"","outputs":1,"x":1374.1784362792969,"y":3341.177879333496,"z":"fd8223be.2936e","wires":[[]]},{"id":"76c29cb0.6bee94","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1919.6546096801758,"y":3340.225517272949,"z":"fd8223be.2936e","wires":[["ec5e5cc0.84dc"]]},{"id":"b797c1f1.3a6cd","type":"comment","name":"Create contrail network policy","info":"","comments":"","x":1439.416618347168,"y":3303.083293914795,"z":"fd8223be.2936e","wires":[]},{"id":"d9ba8a84.a48ee8","type":"set","name":"set ar-assignments.contrail-id","xml":"<set>\n<parameter name='ar-assignments.contrail-id' value=\"`$contrailResp.network-policy.uuid`\" />\n\n\n\n","comments":"","x":1444.7498779296875,"y":3401.7499895095825,"z":"fd8223be.2936e","wires":[]},{"id":"17c62791.e0bba","type":"switchNode","name":"switch cto-api.isTest","xml":"<switch test='`$cto-api.isTest`'>\n","comments":"","outputs":1,"x":682.7500076293945,"y":3339.749550819397,"z":"fd8223be.2936e","wires":[["7f3a60.3bfda5a","21cedbd5.f69f9c","71aa4797.6d83f8"]]},{"id":"7f3a60.3bfda5a","type":"outcome","name":"Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":882.7500534057617,"y":3343.083215713501,"z":"fd8223be.2936e","wires":[["4847b370.9b6efc"]]},{"id":"21cedbd5.f69f9c","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":881.0833435058594,"y":3379.7496404647827,"z":"fd8223be.2936e","wires":[["cea0da6e.4187f8"]]},{"id":"71aa4797.6d83f8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":887.7500343322754,"y":3418.08305644989,"z":"fd8223be.2936e","wires":[["4847b370.9b6efc"]]},{"id":"4847b370.9b6efc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1101.083251953125,"y":3343.0832414627075,"z":"fd8223be.2936e","wires":[["22859f1a.190d08","dfce0d66.98785","d9ba8a84.a48ee8"]]},{"id":"7fc0fc65.5a5e64","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.api-contrail-route-topology-operation-create\"/>\n<parameter name='field3' value='network-policy' />\n<parameter name='field4' value='TESTcreate' />\n<parameter name='field5' value='contrailResp' />\n<parameter name='field6' value='`$cto-api.default-domain`' />\n<parameter name='field7' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name`' />\n<parameter name='field8' value='`$cto-api.default-project`' />\n<parameter name='field10' value='`$ctotmp.c-l3-network.contrail-network-fqdn`' />\n<parameter name='field11' value='`$ctotmp.s-l3-network.contrail-network-fqdn`' />\n<parameter name='field12' value='&lt;&gt;' />\n<parameter name='field13' value='`$cto-api.cloud-region-id`' />\n\n\n\n","comments":"","outputs":1,"x":1380.5117874145508,"y":3441.8444213867188,"z":"fd8223be.2936e","wires":[[]]},{"id":"81e3b72c.ed4c2","type":"set","name":"set ar-assignments.contrail-id","xml":"<set>\n<parameter name='ar-assignments.contrail-id' value=\"dummy12345\" />\n\n\n\n","comments":"","x":1447.7498779296875,"y":3476.7497453689575,"z":"fd8223be.2936e","wires":[]},{"id":"cea0da6e.4187f8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1100.083251953125,"y":3439.0832414627075,"z":"fd8223be.2936e","wires":[["7fc0fc65.5a5e64","81e3b72c.ed4c2"]]},{"id":"e040148a.f082c","type":"comment","name":"Create  network policy in AAI","info":"","comments":"","x":662.7499747872353,"y":3536.4164934158325,"z":"fd8223be.2936e","wires":[]},{"id":"1e7787ad.0d68a8","type":"save","name":"save AnAI - network-policy","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"network-policy\" \n\t\tkey=\"network-policy.network-policy-id = $ar-assignments.contrail-id\" >\n<!-- Create network-policy object -->\n<parameter name=\"network-policy-id\" value=\"`$ar-assignments.contrail-id`\" />\n<parameter name=\"network-policy-fqdn\" value=\"`$ar-assignments.fq-name`\" />\n\n\n","comments":"","outputs":1,"x":669.7935333251953,"y":3571.817353248596,"z":"fd8223be.2936e","wires":[["fcabb970.d046e","fb253b0.c7b5ec8","ec0a2bbf.24a89"]]},{"id":"fcabb970.d046e","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":921.9009757637978,"y":3562.781409263611,"z":"fd8223be.2936e","wires":[["2e92d1d0.b575ce"]]},{"id":"fb253b0.c7b5ec8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":925.7104735970497,"y":3592.2578258514404,"z":"fd8223be.2936e","wires":[["2e92d1d0.b575ce"]]},{"id":"3b1f3b10.705a0c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1117.4166259765625,"y":3677.4164934158325,"z":"fd8223be.2936e","wires":[["975d575f.5bd068","76e9e56c.5f957c"]]},{"id":"e4cbef08.1b2cb8","type":"comment","name":"DESCOPED: CR177011 - network policy - set relationship to collector service instance -id","info":"","comments":"","x":830.75,"y":3773.749755859375,"z":"fd8223be.2936e","wires":[]},{"id":"1efde37a.eba0f5","type":"save","name":"save AnAI - network-policy relationship to service instances","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"network-policy:relationship-list\" \n\tkey=\"network-policy.network-policy-id = $ar-assignments.contrail-id\" >\n\t\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"service-instance\" />\n\t\t<parameter name=\"relationship-list.relationship[0].related-link\"\n\t\t\tvalue=\"`'/aai/v$/business/customers/customer/' + $service-data.service-information.global-customer-id + '/service-subscriptions/service-subscription/' + $cto-api.service-type + '/service-instances/service-instance/' + $collector-service-instance-id`\" />\n               \n                \n\n","comments":"","outputs":1,"x":762.1268920898438,"y":3814.8171281814575,"z":"fd8223be.2936e","wires":[["b76203a8.07925","5b1ac74f.e6a31"]]},{"id":"b76203a8.07925","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1214.9010009765625,"y":3814.1149797439575,"z":"fd8223be.2936e","wires":[["76ce4e27.d59ec8"]]},{"id":"5b1ac74f.e6a31","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1218.7104988098145,"y":3842.591396331787,"z":"fd8223be.2936e","wires":[["76ce4e27.d59ec8"]]},{"id":"778c350c.8dd8e4","type":"set","name":"Clear tmp data","xml":"<set>\n<parameter name='ctotmp.' value='' />\n\n \n","comments":"","x":591.0833129882812,"y":4748.083022117615,"z":"fd8223be.2936e","wires":[]},{"id":"672a2172.2f5058","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.api-contrail-route-topology-operation-create\"/>\n<parameter name='field3' value='cto-api.parent-service-instance-id' />\n<parameter name='field4' value='`$cto-api.parent-service-instance-id`' />\n<parameter name='field5' value='cto-api.default-domain' />\n<parameter name='field6' value='`$cto-api.default-domain`' />\n<parameter name='field7' value='cto-api.port-mirror-configuration-instance-id' />\n<parameter name='field8' value='`$cto-api.port-mirror-configuration-instance-id`' />\n<parameter name='field9' value='cto-api.service-type' />\n<parameter name='field10' value='`$cto-api.service-type`' />\n<parameter name='field11' value='cto-api.source-network-role' />\n<parameter name='field12' value='`$cto-api.source-network-fole`' />\n<parameter name='field13' value='cto-api.collector-network-role' />\n<parameter name='field14' value='`$cto-api.collector-network-4ole`' />\n<parameter name='field15' value='cto-api.default-project' />\n<parameter name='field16' value='`$cto-api.default-project`' />\n<parameter name='field17' value='cto-api.cloud-region-id' />\n<parameter name='field18' value='`$cto-api.cloud-region-id`' />\n<parameter name='field19' value='cto-api.cloud-owner' />\n<parameter name='field20' value='`$cto-api.cloud-owner`' />\n<parameter name='field21' value='cto-api.isTest' />\n<parameter name='field22' value='`$cto-api.isTest`' />\n<parameter name='field23' value='cto-api.owning-entity' />\n<parameter name='field24' value='`$cto-api.owning-entity`' />\n","comments":"","outputs":1,"x":738.1785659790039,"y":249.4642686843872,"z":"fd8223be.2936e","wires":[[]]},{"id":"76ce4e27.d59ec8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1412.75,"y":3818.7499895095825,"z":"fd8223be.2936e","wires":[["890d32.ed09ead","76e9e56c.5f957c"]]},{"id":"4d7901ed.ca6fb8","type":"update","name":"delete AAI allotted-resource","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-data.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $cto-api.contrail-route-allotted-resource-id\">\n\n","comments":"","outputs":1,"x":1799.5,"y":5123.9999895095825,"z":"fd8223be.2936e","wires":[["dc1a9d38.d97ca","531a6c1a.e19374"]]},{"id":"dc1a9d38.d97ca","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2053.1508026123047,"y":5102.460497379303,"z":"fd8223be.2936e","wires":[[]]},{"id":"531a6c1a.e19374","type":"failure","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2058.460231781006,"y":5138.031915187836,"z":"fd8223be.2936e","wires":[[]]},{"id":"139d91c1.e6a6be","type":"comment","name":"Update AAI AR","info":"","comments":"","x":1760.7317276000977,"y":5088.650766849518,"z":"fd8223be.2936e","wires":[]},{"id":"ec5f0e07.a1f8c8","type":"save","name":"delete AnAI - network-policy","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"network-policy\" \n\t\tkey=\"network-policy.network-policy-id = $ar-assignments.contrail-id\" >\n\n\n\n","comments":"","outputs":1,"x":1793.5,"y":4924.2499895095825,"z":"fd8223be.2936e","wires":[["b7a00272.5b5f","c5732bd5.d065d"]]},{"id":"b7a00272.5b5f","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2040.750072479248,"y":4894.750135421753,"z":"fd8223be.2936e","wires":[[]]},{"id":"c5732bd5.d065d","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2044.5595703125,"y":4924.2265520095825,"z":"fd8223be.2936e","wires":[[]]},{"id":"651e0a3a.ba13e4","type":"comment","name":"Call contrail api here","info":"","comments":"","x":1771.2500228881836,"y":4980.7500931322575,"z":"fd8223be.2936e","wires":[]},{"id":"b22dc036.227bf8","type":"execute","name":"execute Contrail API delete network policy","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='delete' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n<parameter name='default-project' value='`$cto-api.default-project`' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n\n","comments":"","outputs":1,"x":1843.2579345703125,"y":5012.7265520095825,"z":"fd8223be.2936e","wires":[["6ac63408.baa50c","d216f91d.6fa1a8","6b2140a3.641028"]]},{"id":"6ac63408.baa50c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2144.638885498047,"y":4978.7577374614775,"z":"fd8223be.2936e","wires":[[]]},{"id":"d216f91d.6fa1a8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2146.067543029785,"y":5049.535438209772,"z":"fd8223be.2936e","wires":[[]]},{"id":"6b2140a3.641028","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2147.3531646728516,"y":5011.639142662287,"z":"fd8223be.2936e","wires":[[]]},{"id":"48bf8bcb.6c23b4","type":"comment","name":"Consilidate the rollback","info":"","comments":"","x":1194.75,"y":4811.4999895095825,"z":"fd8223be.2936e","wires":[]},{"id":"975d575f.5bd068","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Failed to save allotted resource in AAI\"/>","comments":"","x":1338.75,"y":3677.7499895095825,"z":"fd8223be.2936e","wires":[]},{"id":"76e9e56c.5f957c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":870.75,"y":4972.2499895095825,"z":"fd8223be.2936e","wires":[["908cdbbc.fcfad","f0f708f9.48ace8","be261c82.caf37","ea1c5d0f.4a65f8","fcc7ec18.4965b","8e7b341.ec30848"]]},{"id":"908cdbbc.fcfad","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Error creating contrail route - ' + $tmp.error-message`\"/>","comments":"","x":1170.75,"y":5294.7499895095825,"z":"fd8223be.2936e","wires":[]},{"id":"6506a4f5.c15bac","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Failed to save network-policy in AAI\"/>","comments":"","x":1346.75,"y":3566.2499895095825,"z":"fd8223be.2936e","wires":[]},{"id":"2e92d1d0.b575ce","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1106.75,"y":3565.2499895095825,"z":"fd8223be.2936e","wires":[["6506a4f5.c15bac","76e9e56c.5f957c"]]},{"id":"f0f708f9.48ace8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"ROLLING BACK the create due to error\"/>\n","comments":"","outputs":1,"x":1157.75,"y":4845.4999895095825,"z":"fd8223be.2936e","wires":[[]]},{"id":"ec5e5cc0.84dc","type":"set","name":"set contrail-created - true","xml":"<set>\n<parameter name=\"contrail-created\" value=\"true\" />","comments":"","x":2124,"y":3339.4999895095825,"z":"fd8223be.2936e","wires":[]},{"id":"7803f431.03b724","type":"set","name":"set np-aai-created - true","xml":"<set>\n<parameter name=\"np-aai-created\" value=\"\" />\n","comments":"","x":1289,"y":3529.4999895095825,"z":"fd8223be.2936e","wires":[]},{"id":"ec0a2bbf.24a89","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":927,"y":3528.4999895095825,"z":"fd8223be.2936e","wires":[["2f05fc17.424bb4"]]},{"id":"2f05fc17.424bb4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1086,"y":3529.4999895095825,"z":"fd8223be.2936e","wires":[["7803f431.03b724"]]},{"id":"1fca8b85.38bd4c","type":"set","name":"set ar-aai-created - true","xml":"<set>\n<parameter name=\"ar-aai-created\" value=\"\" />","comments":"","x":1277,"y":3636.4999895095825,"z":"fd8223be.2936e","wires":[]},{"id":"e80c53f2.a704a","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":915,"y":3635.4999895095825,"z":"fd8223be.2936e","wires":[["146837ae.85637"]]},{"id":"146837ae.85637","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1074,"y":3636.4999895095825,"z":"fd8223be.2936e","wires":[["1fca8b85.38bd4c"]]},{"id":"116fe1e8.80164e","type":"set","name":"set ar-created - true","xml":"<set>\n<parameter name=\"ar-created\" value=\"true\" />","comments":"","x":1306,"y":4539.4999895095825,"z":"fd8223be.2936e","wires":[]},{"id":"51fd5b3b.c2a0dc","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":944,"y":4538.4999895095825,"z":"fd8223be.2936e","wires":[["322e5dfb.34bfe2"]]},{"id":"322e5dfb.34bfe2","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1103,"y":4539.4999895095825,"z":"fd8223be.2936e","wires":[["116fe1e8.80164e"]]},{"id":"be261c82.caf37","type":"switchNode","name":"switch np-aai-created","xml":"<switch test='`$np-aai-created`'>\n","comments":"","outputs":1,"x":1204.75,"y":4888.4999895095825,"z":"fd8223be.2936e","wires":[["8c52ad11.a1c0e","9040dc3c.a5a528"]]},{"id":"8c52ad11.a1c0e","type":"outcome","name":"Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1404.7500457763672,"y":4891.8336544036865,"z":"fd8223be.2936e","wires":[[]]},{"id":"9040dc3c.a5a528","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1407.0833740234375,"y":4926.4999895095825,"z":"fd8223be.2936e","wires":[["9c1b45b6.b3144"]]},{"id":"9c1b45b6.b3144","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1573.083251953125,"y":4924.8334856033325,"z":"fd8223be.2936e","wires":[["ec5f0e07.a1f8c8"]]},{"id":"ea1c5d0f.4a65f8","type":"switchNode","name":"switch contrail-created","xml":"<switch test='`$contrail-created`'>\n","comments":"","outputs":1,"x":1200.25,"y":4977.9999895095825,"z":"fd8223be.2936e","wires":[["b2997208.7a8af","607d5a5a.f07054"]]},{"id":"b2997208.7a8af","type":"outcome","name":"Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1400.2500457763672,"y":4981.3336544036865,"z":"fd8223be.2936e","wires":[[]]},{"id":"607d5a5a.f07054","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1402.5833740234375,"y":5015.9999895095825,"z":"fd8223be.2936e","wires":[["acea7ab2.ddb138"]]},{"id":"acea7ab2.ddb138","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1568.583251953125,"y":5014.3334856033325,"z":"fd8223be.2936e","wires":[["b22dc036.227bf8"]]},{"id":"fcc7ec18.4965b","type":"switchNode","name":"switch ar-aai-created","xml":"<switch test='`$ar-aai-created`'>\n","comments":"","outputs":1,"x":1198,"y":5087.7499895095825,"z":"fd8223be.2936e","wires":[["eada59bc.798f18","fb9f19d2.609ec8"]]},{"id":"eada59bc.798f18","type":"outcome","name":"Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1398.0000457763672,"y":5091.0836544036865,"z":"fd8223be.2936e","wires":[[]]},{"id":"fb9f19d2.609ec8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1400.3333740234375,"y":5125.7499895095825,"z":"fd8223be.2936e","wires":[["2cd682e1.7c396e"]]},{"id":"2cd682e1.7c396e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1566.333251953125,"y":5124.0834856033325,"z":"fd8223be.2936e","wires":[["4d7901ed.ca6fb8"]]},{"id":"8e7b341.ec30848","type":"switchNode","name":"switch ar-created","xml":"<switch test='`$ar-created`'>\n","comments":"","outputs":1,"x":1201.25,"y":5203.4999895095825,"z":"fd8223be.2936e","wires":[["8b1db97b.6e8948","e4b97998.57d95"]]},{"id":"8b1db97b.6e8948","type":"outcome","name":"Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1401.2500457763672,"y":5206.8336544036865,"z":"fd8223be.2936e","wires":[[]]},{"id":"e4b97998.57d95","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1403.5833740234375,"y":5241.4999895095825,"z":"fd8223be.2936e","wires":[["a6a522a1.9de19"]]},{"id":"a6a522a1.9de19","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1569.583251953125,"y":5239.8334856033325,"z":"fd8223be.2936e","wires":[["7c35b738.cd6098"]]},{"id":"7c35b738.cd6098","type":"execute","name":"execute RestApiCallNode - DELETE AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":1839.5,"y":5236.2499895095825,"z":"fd8223be.2936e","wires":[["86fb884b.0720f","31a6b86d.d51c48"]]},{"id":"86fb884b.0720f","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2116.5,"y":5235.2499895095825,"z":"fd8223be.2936e","wires":[[]]},{"id":"31a6b86d.d51c48","type":"failure","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2121.809429168701,"y":5270.821407318115,"z":"fd8223be.2936e","wires":[[]]},{"id":"890d32.ed09ead","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Failed to save network policy relationship to port mirror service and parent service in AAI\"/>","comments":"","x":1638,"y":3818.2499895095825,"z":"fd8223be.2936e","wires":[]},{"id":"9703e7ab.bcf26","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Error updating md-sal for contrail-route-allotted-resource\"/>","comments":"","x":1410,"y":4176.7499895095825,"z":"fd8223be.2936e","wires":[]},{"id":"10882401.6b38ec","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1210,"y":4178.7499895095825,"z":"fd8223be.2936e","wires":[["9703e7ab.bcf26","76e9e56c.5f957c"]]},{"id":"b5d85abf.060458","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=\"API-contrail-route-topology-operation-create: Collector network not found from aai\" />\n","comments":"","x":1583.75,"y":952.75,"z":"fd8223be.2936e","wires":[]},{"id":"94eb59a2.0945b","type":"for","name":"for each relationship","xml":"<for index='ridx' start='0' end='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship_length`' >\n","comments":"","outputs":1,"x":2166.5,"y":1038.75,"z":"fd8223be.2936e","wires":[["9b2fcf60.76ea18"]]},{"id":"9b2fcf60.76ea18","type":"switchNode","name":"switch related-to","xml":"<switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].related-to`'>\n","comments":"","outputs":1,"x":2381.178466796875,"y":1038.4998779296875,"z":"fd8223be.2936e","wires":[["347998a7.5c8ed","cb6fc427.9ea1d8"]]},{"id":"347998a7.5c8ed","type":"outcome","name":"service-instance","xml":"<outcome value='service-instance'>\n","comments":"","outputs":1,"x":2574.642822265625,"y":1037.8927612304688,"z":"fd8223be.2936e","wires":[["fee79290.82309"]]},{"id":"fee79290.82309","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2753.40478515625,"y":1038.9880981445312,"z":"fd8223be.2936e","wires":[["e5e787d0.c4657"]]},{"id":"4f621b29.09adec","type":"configure","name":"set collector service instance id","xml":"<set>\n<parameter name=\"collector-service-instance-id\" value=\"`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`\" />\n\n","comments":"","outputs":1,"x":3965.25,"y":1037.7499389648438,"z":"fd8223be.2936e","wires":[[]]},{"id":"e5e787d0.c4657","type":"for","name":"for each relationship data","xml":"<for index='rdidx' start='0' end='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data_length`' >\n","comments":"","outputs":1,"x":2969.75,"y":1038,"z":"fd8223be.2936e","wires":[["393822bb.644d6e"]]},{"id":"393822bb.644d6e","type":"switchNode","name":"switch relationship-key","xml":"<switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>\n","comments":"","outputs":1,"x":3205.428466796875,"y":1037.7498779296875,"z":"fd8223be.2936e","wires":[["7c9ef3ae.b747f4"]]},{"id":"7c9ef3ae.b747f4","type":"outcome","name":"service-instance.service-instance-id","xml":"<outcome value='service-instance.service-instance-id'>\n","comments":"","outputs":1,"x":3484.892822265625,"y":1037.142822265625,"z":"fd8223be.2936e","wires":[["f1dcb03d.c2cd4"]]},{"id":"f1dcb03d.c2cd4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3727.65478515625,"y":1038.238037109375,"z":"fd8223be.2936e","wires":[["4f621b29.09adec"]]},{"id":"cb6fc427.9ea1d8","type":"outcome","name":"network-policy","xml":"<outcome value='network-policy'>\n","comments":"","outputs":1,"x":2580.5,"y":1101.25,"z":"fd8223be.2936e","wires":[["48d9f017.24fff8"]]},{"id":"48d9f017.24fff8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2759.261962890625,"y":1102.3453369140625,"z":"fd8223be.2936e","wires":[["40c1b7bc.2f5e88"]]},{"id":"40c1b7bc.2f5e88","type":"for","name":"for each relationship data","xml":"<for index='rdidx' start='0' end='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data_length`' >\n","comments":"","outputs":1,"x":2975.607177734375,"y":1101.3572387695312,"z":"fd8223be.2936e","wires":[["163ead0a.7302ab"]]},{"id":"163ead0a.7302ab","type":"switchNode","name":"switch relationship-key","xml":"<switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>\n","comments":"","outputs":1,"x":3211.28564453125,"y":1101.1071166992188,"z":"fd8223be.2936e","wires":[["b60cc617.96d9f"]]},{"id":"b60cc617.96d9f","type":"outcome","name":"network-policy.network-policy-id","xml":"<outcome value='network-policy.network-policy-id'>\n","comments":"","outputs":1,"x":3490.75,"y":1100.5000610351562,"z":"fd8223be.2936e","wires":[["a3b2831.7275e"]]},{"id":"a3b2831.7275e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3733.511962890625,"y":1101.5952758789062,"z":"fd8223be.2936e","wires":[["902a0d6f.7b879","504ee0c3.1648b8","205a6ec0.806dea"]]},{"id":"504ee0c3.1648b8","type":"configure","name":"set ctotmp.num-c-np","xml":"<set>\n<parameter name=\"ctotmp.num-c-np\" value=\"`$ctotmp.num-c-np+1`\" />\n","comments":"","outputs":1,"x":3966.5,"y":1127.25,"z":"fd8223be.2936e","wires":[[]]},{"id":"902a0d6f.7b879","type":"configure","name":"add c-network-policy-id to list","xml":"<set>\n<parameter name=\"ctotmp.c-network-policy-list[$ctotmp.num-c-np].network-policy-id\" value=\"`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`\" />\n\n","comments":"","outputs":1,"x":3989.2617568969727,"y":1100.8691596984863,"z":"fd8223be.2936e","wires":[[]]},{"id":"205a6ec0.806dea","type":"configure","name":"set c-network-policy-list_length","xml":"<set>\n<parameter name=\"ctotmp.c-network-policy-list_length\" value=\"`$ctotmp.num-c-np`\" />\n","comments":"","outputs":1,"x":3991.9286403656006,"y":1164.5358610153198,"z":"fd8223be.2936e","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-deactivate.json
new file mode 100644
index 0000000..8334c78
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-deactivate.json
@@ -0,0 +1,1846 @@
+[
+    {
+        "id": "53d16eb.3d9c19",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 147.00390625,
+        "y": 91.66666734218597,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "25de91ce.b5fd3e"
+            ]
+        ]
+    },
+    {
+        "id": "25de91ce.b5fd3e",
+        "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": 293.24200439453125,
+        "y": 165.61906814575195,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "e1dc9e95.202cd"
+            ]
+        ]
+    },
+    {
+        "id": "e1dc9e95.202cd",
+        "type": "method",
+        "name": "api-contrail-route-topology-operation-deactivate",
+        "xml": "<method rpc='api-contrail-route-topology-operation-deactivate' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 370.15875244140625,
+        "y": 252.8571262359619,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "6e723a37.5fb414"
+            ]
+        ]
+    },
+    {
+        "id": "6e723a37.5fb414",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 281.4800910949707,
+        "y": 379.1904515028,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "db65c59e.74b7a8",
+                "cdda444b.68b9e8",
+                "12ebac6c.60c404",
+                "304813c4.78d06c",
+                "24a1e3b8.72820c",
+                "917d9ac2.daff68",
+                "c9cc6752.6dade8",
+                "f000cefd.dc0b3",
+                "90ac8599.5b3ae8",
+                "4b7740d3.fc61b",
+                "21e2e99a.b2c5f6",
+                "f7ee430b.8143b",
+                "d5ee6347.74eeb",
+                "1755b0ad.40d95f",
+                "d622c4ae.e4c078",
+                "3cffa7a5.824108",
+                "eaf9a24a.34c19",
+                "5fd1bc26.619354",
+                "5a6539af.a4eef8",
+                "97ba91e7.6ad5a",
+                "7089138.b1a97ec",
+                "94758d7.de9a07",
+                "d5fd35ad.ade908",
+                "15b849c5.50cd26",
+                "e7dae05c.bc65f",
+                "e4f9d349.fde5f",
+                "56153950.54ad38",
+                "b739671e.70ddd8"
+            ]
+        ]
+    },
+    {
+        "id": "db65c59e.74b7a8",
+        "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": 465.0040092468262,
+        "y": 2449.214762687683,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "f000cefd.dc0b3",
+        "type": "set",
+        "name": "set allotted-resource-oper-status",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+        "comments": "",
+        "x": 528.7580795288086,
+        "y": 2272.3847150802612,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "cdda444b.68b9e8",
+        "type": "set",
+        "name": "set tmp.ar.self-link",
+        "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/contrail-route-topology/'` \" />\n\n",
+        "comments": "",
+        "x": 582.9920043945312,
+        "y": 517.0000739097595,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "12ebac6c.60c404",
+        "type": "execute",
+        "name": "execute Properties - pull properties file",
+        "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": 648.2474060058594,
+        "y": 552.8983492851257,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "24a1e3b8.72820c",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 658.0227127075195,
+        "y": 719.6262936592102,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "654fd033.2374d",
+                "5baf96ad.89c9b8"
+            ]
+        ]
+    },
+    {
+        "id": "304813c4.78d06c",
+        "type": "execute",
+        "name": "generate allotted-resource url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.cr-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 628.5688323974609,
+        "y": 640.183976650238,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "654fd033.2374d",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 903.3188171386719,
+        "y": 720.4341073036194,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "3df8944b.0fdb1c"
+            ]
+        ]
+    },
+    {
+        "id": "917d9ac2.daff68",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 556.8665466308594,
+        "y": 2346.4342346191406,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "a132d913.f96618",
+                "4e2f6479.132e3c",
+                "8f713fc1.307d3"
+            ]
+        ]
+    },
+    {
+        "id": "a132d913.f96618",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 827.1745643615723,
+        "y": 2399.432435415685,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "42ff2a69.2ea5e4"
+            ]
+        ]
+    },
+    {
+        "id": "4e2f6479.132e3c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 818.1746139526367,
+        "y": 2367.9324611648917,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "42ff2a69.2ea5e4"
+            ]
+        ]
+    },
+    {
+        "id": "8f713fc1.307d3",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 821.9246520996094,
+        "y": 2338.289566040039,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "eefff8f0.c4e068"
+            ]
+        ]
+    },
+    {
+        "id": "ebb7c978.74fc68",
+        "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 updating md-sal for contrail-route-allotted-resource\" />\n",
+        "comments": "",
+        "x": 1201.924690246582,
+        "y": 2390.682702064514,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "3df8944b.0fdb1c",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1072.3188209533691,
+        "y": 718.9340081214905,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "fe4125ac.e2a618"
+            ]
+        ]
+    },
+    {
+        "id": "fe4125ac.e2a618",
+        "type": "switchNode",
+        "name": "switch cr length",
+        "xml": "<switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1283.1760635375977,
+        "y": 718.5531373023987,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "c1828e09.7c766",
+                "39f2e04d.45825"
+            ]
+        ]
+    },
+    {
+        "id": "c1828e09.7c766",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1475.0094146728516,
+        "y": 708.5529913902283,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "1075f3bd.78220c"
+            ]
+        ]
+    },
+    {
+        "id": "761ce19c.f38bd",
+        "type": "set",
+        "name": "set ar from get",
+        "xml": "<set>\n<parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />\n",
+        "comments": "",
+        "x": 1910.7001266479492,
+        "y": 640.5411952733994,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "1075f3bd.78220c",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic='true'>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1622.033197402954,
+        "y": 674.2078136205673,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "761ce19c.f38bd",
+                "3afefdf5.e26e02",
+                "47365a0f.ec0b44"
+            ]
+        ]
+    },
+    {
+        "id": "a52395f3.775018",
+        "type": "comment",
+        "name": "GET security-zone-allotted-resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 671.3187599182129,
+        "y": 686.9339966773987,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "47365a0f.ec0b44",
+        "type": "switchNode",
+        "name": "switch order-status",
+        "xml": "<switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1925.4498958587646,
+        "y": 674.0411601066589,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "27cedd03.00f992",
+                "24005d3f.56b7f2"
+            ]
+        ]
+    },
+    {
+        "id": "27cedd03.00f992",
+        "type": "outcome",
+        "name": "outcome Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2162.3475799560547,
+        "y": 685.9698594808578,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "c35abdc0.fb371"
+            ]
+        ]
+    },
+    {
+        "id": "c35abdc0.fb371",
+        "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\" \n    value=\"`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`\" />\n",
+        "comments": "",
+        "x": 2402.966470718384,
+        "y": 683.8744969367981,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "ef7d2a57.a57ab8",
+        "type": "set",
+        "name": "unset ar-assignments.vlan-tag",
+        "xml": "<set>\n<parameter name='ar-assignments.vlan-tag' value=\"\" />\n\n\n\n",
+        "comments": "",
+        "x": 527.8663635253906,
+        "y": 2117.7200841903687,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "3afefdf5.e26e02",
+        "type": "set",
+        "name": "save backup copy of mdsal-ar for rollback",
+        "xml": "<set>\n<parameter name='bk-cr-ar' value='$mdsal-ar.' />\n",
+        "comments": "",
+        "x": 1998.5571784973145,
+        "y": 607.3506873846054,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "a0f9f9b2.6dea88",
+        "type": "comment",
+        "name": "Create urls for restapi",
+        "info": "",
+        "comments": "",
+        "x": 599.4616394042969,
+        "y": 609.7911038398743,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "eefff8f0.c4e068",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 963.5806198120117,
+        "y": 2334.481735229492,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c9cc6752.6dade8",
+        "type": "execute",
+        "name": "execute getTime",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 479.5806655883789,
+        "y": 2238.8148736953735,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7eec538d.ff920c",
+        "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=\"Error: Contrail Route not found\" />\n    \n",
+        "comments": "",
+        "x": 1698.4211654663086,
+        "y": 836.250256061554,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "5baf96ad.89c9b8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 895.1706199645996,
+        "y": 755.5001921653748,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "c0b50cc8.0305c"
+            ]
+        ]
+    },
+    {
+        "id": "c0b50cc8.0305c",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1075.1705703735352,
+        "y": 756.1667428016663,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "7eec538d.ff920c"
+            ]
+        ]
+    },
+    {
+        "id": "39f2e04d.45825",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1471.3372955322266,
+        "y": 758.0834441184998,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "7eec538d.ff920c"
+            ]
+        ]
+    },
+    {
+        "id": "8148b606.b5c048",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2386.837516784668,
+        "y": 649.583414554596,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "471309fc.092828",
+        "type": "comment",
+        "name": "Need to rollback aai here",
+        "info": "",
+        "comments": "",
+        "x": 1457.0040893554688,
+        "y": 2374.0000858306885,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "24005d3f.56b7f2",
+        "type": "outcome",
+        "name": "outcome Active",
+        "xml": "<outcome value='Active'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2177.1092224121094,
+        "y": 654.2078708410263,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "8148b606.b5c048"
+            ]
+        ]
+    },
+    {
+        "id": "90ac8599.5b3ae8",
+        "type": "update",
+        "name": "update AAI allotted-resource",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.parent-service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"operational-status\" value=\"out-of-service-path\" />\n\t<parameter name=\"orchestration-status\" value=\"deactivated\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 513.3372497558594,
+        "y": 2198.333420753479,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "927b7e29.3db75",
+                "e2f7efc5.ee287"
+            ]
+        ]
+    },
+    {
+        "id": "927b7e29.3db75",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 769.0991821289062,
+        "y": 2175.5715951919556,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "5ffafd8c.fe0b24"
+            ]
+        ]
+    },
+    {
+        "id": "e2f7efc5.ee287",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 774.4086112976074,
+        "y": 2211.1430130004883,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "5ffafd8c.fe0b24"
+            ]
+        ]
+    },
+    {
+        "id": "84e2dba0.6f81c8",
+        "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=\"AAI failed\" />\n",
+        "comments": "",
+        "x": 1189.1944961547852,
+        "y": 2180.190938949585,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "b2f1d1d9.c33eb",
+        "type": "comment",
+        "name": "Update AAI AR",
+        "info": "",
+        "comments": "",
+        "x": 476.6801071166992,
+        "y": 2161.7618646621704,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "4b7740d3.fc61b",
+        "type": "set",
+        "name": "set ar-assignments",
+        "xml": "<set>\n<parameter name='ar-assignments.' value=\"`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`\" />\n\n\n\n",
+        "comments": "",
+        "x": 595.5039672851562,
+        "y": 784.1667847633362,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "bdfabc43.1fa35",
+        "type": "not-found",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 919.1942672729492,
+        "y": 938.7144109010696,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "7d9f0d21.7d4054"
+            ]
+        ]
+    },
+    {
+        "id": "21e2e99a.b2c5f6",
+        "type": "get-resource",
+        "name": "get AnAI - l3-network by network-id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $ar-assignments.source-network.network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.src-network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 642.3926086425781,
+        "y": 949.9609279632568,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "102d56af.96fb69",
+                "bdfabc43.1fa35",
+                "71792be9.fe8114"
+            ]
+        ]
+    },
+    {
+        "id": "102d56af.96fb69",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 911.916374206543,
+        "y": 973.1990147829056,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "7d9f0d21.7d4054"
+            ]
+        ]
+    },
+    {
+        "id": "7d9f0d21.7d4054",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Error retrieving source network with network-id=' + $ar-assignments.source-network.network-id + ' from AnAI'`\" />",
+        "comments": "",
+        "x": 1064.0273361206055,
+        "y": 969.4212437868118,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "71792be9.fe8114",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 917.1943283081055,
+        "y": 1004.7144109010696,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "e45895d6.2a9618"
+            ]
+        ]
+    },
+    {
+        "id": "e45895d6.2a9618",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1069.8608932495117,
+        "y": 1003.04773914814,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "36beda8e.435b36",
+        "type": "comment",
+        "name": "GET source network from AAI",
+        "info": "",
+        "comments": "",
+        "x": 620.6228256225586,
+        "y": 918.7144050598145,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "35892e52.03d1d2",
+        "type": "not-found",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 899.9085998535156,
+        "y": 1550.4287673830986,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "f782658b.df7a58"
+            ]
+        ]
+    },
+    {
+        "id": "1755b0ad.40d95f",
+        "type": "get-resource",
+        "name": "get AnAI - l3-network by network-id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $ar-assignments.dest-network.network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.dest-network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 628.5355224609375,
+        "y": 1557.961028277874,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "929dab66.defa08",
+                "35892e52.03d1d2",
+                "eccf34c6.ec9728"
+            ]
+        ]
+    },
+    {
+        "id": "929dab66.defa08",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 892.6307067871094,
+        "y": 1584.9133712649345,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "f782658b.df7a58"
+            ]
+        ]
+    },
+    {
+        "id": "25536135.8ba92e",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`\" />",
+        "comments": "",
+        "x": 1298.7418670654297,
+        "y": 1571.1360874176025,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "eccf34c6.ec9728",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 900.480110168457,
+        "y": 1626.2858138084412,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "9532d76.7c12f28"
+            ]
+        ]
+    },
+    {
+        "id": "9532d76.7c12f28",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1053.1466751098633,
+        "y": 1624.6191420555115,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "82b74742.3fb438",
+        "type": "comment",
+        "name": "GET dest network from AAI",
+        "info": "",
+        "comments": "",
+        "x": 601.3371429443359,
+        "y": 1526.1430203318596,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "f7ee430b.8143b",
+        "type": "set",
+        "name": "set cloud-region-id for input to contrail",
+        "xml": "<set>\n<parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />\n",
+        "comments": "",
+        "x": 653.331916809082,
+        "y": 1029.9470138549805,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "d5ee6347.74eeb",
+        "type": "execute",
+        "name": "execute Contrail API remove network policy to source network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='remove' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n<parameter name='default-project' value='`$cto-api.default-project`' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n<parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />\n<parameter name='contrail-virtual-network-id' value='`$uuidresp.uuid`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 699.5225219726562,
+        "y": 1361.9473094940186,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "ecc68255.1d081",
+                "d43b6488.136558"
+            ]
+        ]
+    },
+    {
+        "id": "ecc68255.1d081",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1053.1889877319336,
+        "y": 1362.375388622284,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "ea841139.28697"
+            ]
+        ]
+    },
+    {
+        "id": "d43b6488.136558",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1051.284309387207,
+        "y": 1395.375328388065,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "1dbc7790.e7ae58"
+            ]
+        ]
+    },
+    {
+        "id": "1dbc7790.e7ae58",
+        "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=\"Failed to remove policy in Contrail from source network\" />\n",
+        "comments": "",
+        "x": 1211.189079284668,
+        "y": 1394.708694934845,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "ea841139.28697",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1205.3794708251953,
+        "y": 1363.0421136282384,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "aa7b29ba.46e3f8",
+        "type": "comment",
+        "name": "Apply the policy to source network",
+        "info": "",
+        "comments": "",
+        "x": 615.9086761474609,
+        "y": 1329.999993801117,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "d622c4ae.e4c078",
+        "type": "execute",
+        "name": "execute Contrail API remove network policy to destination network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='remove' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n<parameter name='default-project' value='`$cto-api.default-project`' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n<parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />\n<parameter name='contrail-virtual-network-id' value='`$uuidresp.uuid`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 630.9087524414062,
+        "y": 1993.0005702972412,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "d7319da9.6f11f",
+                "6527b311.a1725c"
+            ]
+        ]
+    },
+    {
+        "id": "d7319da9.6f11f",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 978.5752029418945,
+        "y": 1940.4285743236542,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "79c0bf3e.8f161"
+            ]
+        ]
+    },
+    {
+        "id": "6527b311.a1725c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 971.6705017089844,
+        "y": 2000.4286079406738,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "d1acf48f.1528d8"
+            ]
+        ]
+    },
+    {
+        "id": "48db747b.77152c",
+        "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=\"Failed to remove policy in Contrail from dest network\" />\n",
+        "comments": "",
+        "x": 1324.575210571289,
+        "y": 1999.7620124816895,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "79c0bf3e.8f161",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1130.7656631469727,
+        "y": 1940.0952320098877,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e59fc471.19e8d8",
+        "type": "comment",
+        "name": "Apply the policy to dest network",
+        "info": "",
+        "comments": "",
+        "x": 527.2948684692383,
+        "y": 1962.053059577942,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "532f22ba.12601c",
+        "type": "comment",
+        "name": "Update network policy in AAI - relationship to networks",
+        "info": "",
+        "comments": "",
+        "x": 590.9087066650391,
+        "y": 2038.9999990463257,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "3cffa7a5.824108",
+        "type": "save",
+        "name": "delete AnAI - network-policy relationship to source/dest network",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"network-policy:relationship-list\" \n\tkey=\"network-policy.network-policy-id = $ar-assignments.contrail-id and related-to = 'l3-network' \" >\n\n\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 628.2856140136719,
+        "y": 2072.0676736831665,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "769c8a99.b4b644",
+                "edbcd523.680bd8"
+            ]
+        ]
+    },
+    {
+        "id": "667534.67f40acc",
+        "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=\"Failed to save network policy in AAI\" />\n",
+        "comments": "",
+        "x": 1300.6311531066895,
+        "y": 2089.3492336273193,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "769c8a99.b4b644",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 941.0597457885742,
+        "y": 2051.365255355835,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "6815d49e.d4968c"
+            ]
+        ]
+    },
+    {
+        "id": "edbcd523.680bd8",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 949.8692474365234,
+        "y": 2083.841604232788,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "6815d49e.d4968c"
+            ]
+        ]
+    },
+    {
+        "id": "b36a3a75.c03f18",
+        "type": "comment",
+        "name": "Paramaters",
+        "info": "INPUT:\ncto-api.default-domain\ncto-api.default-project\ncto-api.cloud-region-id\ncto-api.contrail-route-allotted-resource-id\ncto-api.rollback-flag\ncto-api.src-contrail-network-fqdn\ncto-api.collector-contrail-network-fqdn\n",
+        "comments": "",
+        "x": 125.0039291381836,
+        "y": 55,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "eaf9a24a.34c19",
+        "type": "call",
+        "name": "call validate-api-contrail-route-input",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-api-contrail-route-input' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 648.0039520263672,
+        "y": 417.6667326026509,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5fd1bc26.619354",
+        "type": "set",
+        "name": "set tmp.ar.allotted-resource-id,etc",
+        "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$cto-api.contrail-route-allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$cto-api.parent-service-instance-id`' />\n\n\n\n",
+        "comments": "",
+        "x": 637.00390625,
+        "y": 453.75488233566284,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "5a6539af.a4eef8",
+        "type": "switchNode",
+        "name": "switch source-network.network-id",
+        "xml": "<switch test='`$ar-assignments.source-network.network-id`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 641.9086380004883,
+        "y": 881.9999370574951,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "c16d9d8f.2f742",
+                "b4ab046c.7bbdd8"
+            ]
+        ]
+    },
+    {
+        "id": "c16d9d8f.2f742",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 995.908863067627,
+        "y": 882.6663212776184,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "1fdb4c68.9dcdd4"
+            ]
+        ]
+    },
+    {
+        "id": "b4ab046c.7bbdd8",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 991.5756797790527,
+        "y": 845.6661214828491,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "47d494e.8feca6c"
+            ]
+        ]
+    },
+    {
+        "id": "1fdb4c68.9dcdd4",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1130.020118713379,
+        "y": 883.1107258796692,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "47d494e.8feca6c",
+        "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 activating contrail route.  Source network not found\" />\n",
+        "comments": "",
+        "x": 1145.7091445922852,
+        "y": 846.3330240249634,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "adbc3d8f.4c88c",
+        "type": "comment",
+        "name": "Validate source network exists",
+        "info": "",
+        "comments": "",
+        "x": 622.3090057373047,
+        "y": 848.6662721633911,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "97ba91e7.6ad5a",
+        "type": "switchNode",
+        "name": "switch dest-network.network-id",
+        "xml": "<switch test='`$ar-assignments.dest-network.network-id`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 621.0039978027344,
+        "y": 1493.00412940979,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "86591e48.8b912",
+                "2d369d82.a15852"
+            ]
+        ]
+    },
+    {
+        "id": "86591e48.8b912",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 987.0041847229004,
+        "y": 1496.670422077179,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "6424c74c.6bf1b8"
+            ]
+        ]
+    },
+    {
+        "id": "2d369d82.a15852",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 982.6710014343262,
+        "y": 1459.6702222824097,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "b0ad8b07.b6b7a8"
+            ]
+        ]
+    },
+    {
+        "id": "6424c74c.6bf1b8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1121.1154403686523,
+        "y": 1497.1148266792297,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b0ad8b07.b6b7a8",
+        "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 activating contrail route.  Dest network not found\" />\n",
+        "comments": "",
+        "x": 1136.8044662475586,
+        "y": 1460.337124824524,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "34108a7a.83c866",
+        "type": "comment",
+        "name": "Validate dest network exists",
+        "info": "",
+        "comments": "",
+        "x": 613.4043273925781,
+        "y": 1462.6703729629517,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "e4f9d349.fde5f",
+        "type": "execute",
+        "name": "execute Contrail API fqname to uuid for source network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='fqname-to-uuid' />\n<parameter name='api-action' value='get' />\n<parameter name='resp-prefix' value='uuidresp' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n<parameter name='default-project' value='`$cto-api.default-project`' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='fqname-type' value='virtual-network' />\n<parameter name='policy-name' value='`$src-virtual-network-fqname`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 701.0039825439453,
+        "y": 1207.0039501190186,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "d6f6c55b.f02538",
+                "403f3b66.46ae04"
+            ]
+        ]
+    },
+    {
+        "id": "d6f6c55b.f02538",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1033.003921508789,
+        "y": 1184.0037670135498,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "b2bec48b.7b25f8"
+            ]
+        ]
+    },
+    {
+        "id": "403f3b66.46ae04",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1036.0992584228516,
+        "y": 1219.0036638639867,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "bd482d4e.9ce62"
+            ]
+        ]
+    },
+    {
+        "id": "bd482d4e.9ce62",
+        "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=\"Failed to find network uuid for Contrail to source network\" />\n",
+        "comments": "",
+        "x": 1196.0040283203125,
+        "y": 1218.3370304107666,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "b2bec48b.7b25f8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1176.1943817138672,
+        "y": 1180.6704998016357,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "15b849c5.50cd26",
+        "type": "execute",
+        "name": "execute Split to get contrail virtual network fqname without defaults",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='virtual-network-fqdn-split' />\n   <parameter name='original_string' value='`$aai.src-network.contrail-network-fqdn`' />\n   <parameter name='regex' value=':' />\n\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 733.00390625,
+        "y": 1082.0038414001465,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ce7dd724.3acf18",
+        "type": "set",
+        "name": "set src-virtual-network-fqname",
+        "xml": "<set>\n<parameter name='src-virtual-network-fqname' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 1]`' />\n",
+        "comments": "",
+        "x": 1255.6705322265625,
+        "y": 1138.670630455017,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "e7dae05c.bc65f",
+        "type": "switchNode",
+        "name": "switch virtual-network-fqdn-split length",
+        "xml": "<switch test='`$virtual-network-fqdn-split_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 645.6706695556641,
+        "y": 1122.0036134719849,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "22a0284e.af4fa8",
+                "172bcac1.b14ca5"
+            ]
+        ]
+    },
+    {
+        "id": "22a0284e.af4fa8",
+        "type": "outcome",
+        "name": "outcome 0",
+        "xml": "<outcome value='0'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1071.0040283203125,
+        "y": 1103.003870010376,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "3a81459a.53c3ca"
+            ]
+        ]
+    },
+    {
+        "id": "172bcac1.b14ca5",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1058.670597076416,
+        "y": 1138.3371086120605,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "ce7dd724.3acf18"
+            ]
+        ]
+    },
+    {
+        "id": "3a81459a.53c3ca",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Unable to determine network fq-name from contrail fqdn' />\n",
+        "comments": "",
+        "x": 1236.3374214172363,
+        "y": 1101.3372583389282,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "d5fd35ad.ade908",
+        "type": "execute",
+        "name": "execute Contrail API fqname to uuid for dest network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='fqname-to-uuid' />\n<parameter name='api-action' value='get' />\n<parameter name='resp-prefix' value='uuidresp' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n<parameter name='default-project' value='`$dest-default-project`' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='fqname-type' value='virtual-network' />\n<parameter name='policy-name' value='`$dest-virtual-network-fqname`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 666.7540435791016,
+        "y": 1857.004072189331,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "6705929e.e0e77c",
+                "c2d11fad.9664b"
+            ]
+        ]
+    },
+    {
+        "id": "6705929e.e0e77c",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1012.7540740966797,
+        "y": 1815.0038328170776,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "a622e69d.cbb0c8"
+            ]
+        ]
+    },
+    {
+        "id": "c2d11fad.9664b",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1010.8493499755859,
+        "y": 1851.00389656052,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "b72968fd.8211a8"
+            ]
+        ]
+    },
+    {
+        "id": "3a2af246.f1c3be",
+        "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=\"Failed to find network uuid for Contrail to destination network\" />\n",
+        "comments": "",
+        "x": 1336.7541999816895,
+        "y": 1850.3376598358154,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "a622e69d.cbb0c8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1164.9445571899414,
+        "y": 1815.6705578230321,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7089138.b1a97ec",
+        "type": "execute",
+        "name": "execute Split to get contrail virtual network fqname from contrail-network-fqdn",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='virtual-network-fqdn-split' />\n   <parameter name='original_string' value='`$aai.dest-network.contrail-network-fqdn`' />\n   <parameter name='regex' value=':' />\n\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 748.7538528442383,
+        "y": 1669.0042209625244,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a6c01b92.c4b048",
+        "type": "set",
+        "name": "set dest-virtual-network-fqname",
+        "xml": "<set>\n<parameter name='dest-virtual-network-fqname' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 1]`' />\n<parameter name='dest-default-project' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 2]`' />\n",
+        "comments": "",
+        "x": 1247.4204864501953,
+        "y": 1763.6705312728882,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "94758d7.de9a07",
+        "type": "switchNode",
+        "name": "switch virtual-network-fqdn-split length",
+        "xml": "<switch test='`$virtual-network-fqdn-split_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 624.4206771850586,
+        "y": 1775.0039176940918,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "64135014.1484c",
+                "78fd4449.d5663c"
+            ]
+        ]
+    },
+    {
+        "id": "64135014.1484c",
+        "type": "outcome",
+        "name": "outcome 0",
+        "xml": "<outcome value='0'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1062.7539825439453,
+        "y": 1728.003770828247,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "30e65481.3602fc"
+            ]
+        ]
+    },
+    {
+        "id": "78fd4449.d5663c",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1050.4205513000488,
+        "y": 1763.3370094299316,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "a6c01b92.c4b048"
+            ]
+        ]
+    },
+    {
+        "id": "da434e7c.51705",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Unable to determine network fq-name from contrail fqdn' />\n",
+        "comments": "",
+        "x": 1392.0874862670898,
+        "y": 1729.3372602462769,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "9c989359.3958a",
+        "type": "execute",
+        "name": "execute Contrail API apply network policy to destination network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='remove' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n<parameter name='default-project' value='`$cto-api.default-project`' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n<parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />\n<parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1952.254035949707,
+        "y": 1987.0046873092651,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "b2e4ce3a.78ab"
+            ]
+        ]
+    },
+    {
+        "id": "2b256c3a.a1ee64",
+        "type": "execute",
+        "name": "execute Contrail API apply network policy to source network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='remove' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n<parameter name='default-project' value='`$cto-api.default-project`' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n<parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />\n<parameter name='contrail-virtual-network-id' value='`$src-uuid`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1955.2542667388916,
+        "y": 1436.004343032837,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "b2e4ce3a.78ab"
+            ]
+        ]
+    },
+    {
+        "id": "b2e4ce3a.78ab",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2367.7539672851562,
+        "y": 1600.004165649414,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "be4c8985.5285d8"
+            ]
+        ]
+    },
+    {
+        "id": "be4c8985.5285d8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2501.865222930908,
+        "y": 1600.4485702514648,
+        "z": "9891698.5acc798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b739671e.70ddd8",
+        "type": "set",
+        "name": "set dest-uuid",
+        "xml": "<set>\n<parameter name='dest-uuid' value='`$uuidresp.uuid`' />",
+        "comments": "",
+        "x": 536.00390625,
+        "y": 1896.00390625,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "56153950.54ad38",
+        "type": "set",
+        "name": "set src-uuid",
+        "xml": "<set>\n<parameter name='src-uuid' value='`$uuidresp.uuid`' />",
+        "comments": "",
+        "x": 567.00390625,
+        "y": 1244.00390625,
+        "z": "9891698.5acc798",
+        "wires": []
+    },
+    {
+        "id": "f782658b.df7a58",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1061.003921508789,
+        "y": 1571.003975868225,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "2b256c3a.a1ee64",
+                "25536135.8ba92e"
+            ]
+        ]
+    },
+    {
+        "id": "30e65481.3602fc",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1220.00390625,
+        "y": 1728.00390625,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "2b256c3a.a1ee64",
+                "da434e7c.51705"
+            ]
+        ]
+    },
+    {
+        "id": "b72968fd.8211a8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1167.00390625,
+        "y": 1850.00390625,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "3a2af246.f1c3be",
+                "2b256c3a.a1ee64"
+            ]
+        ]
+    },
+    {
+        "id": "d1acf48f.1528d8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1121.00390625,
+        "y": 2000.00390625,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "2b256c3a.a1ee64",
+                "48db747b.77152c"
+            ]
+        ]
+    },
+    {
+        "id": "6815d49e.d4968c",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1114.00390625,
+        "y": 2067.00390625,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "667534.67f40acc",
+                "2b256c3a.a1ee64",
+                "9c989359.3958a"
+            ]
+        ]
+    },
+    {
+        "id": "5ffafd8c.fe0b24",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 954.75390625,
+        "y": 2181.00390625,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "84e2dba0.6f81c8",
+                "2b256c3a.a1ee64",
+                "9c989359.3958a"
+            ]
+        ]
+    },
+    {
+        "id": "42ff2a69.2ea5e4",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 968.75390625,
+        "y": 2389.00390625,
+        "z": "9891698.5acc798",
+        "wires": [
+            [
+                "ebb7c978.74fc68",
+                "2b256c3a.a1ee64",
+                "9c989359.3958a"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-delete.json
new file mode 100644
index 0000000..2567185
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-delete.json
@@ -0,0 +1 @@
+[{"id":"df974283.904838","type":"dgstart","name":"DGSTART","outputs":1,"x":311.75,"y":158.66666412353516,"z":"a04d05aa.96dde8","wires":[["3acfd36b.0baa74"]]},{"id":"3acfd36b.0baa74","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":457.9880828857422,"y":233.61905765533447,"z":"a04d05aa.96dde8","wires":[["9a66d8b7.be1fe8"]]},{"id":"9a66d8b7.be1fe8","type":"method","name":"api-contrail-route-topology-operation-delete","xml":"<method rpc='api-contrail-route-topology-operation-delete' mode='sync'>\n","comments":"","outputs":1,"x":540.9048461914062,"y":304.8571090698242,"z":"a04d05aa.96dde8","wires":[["73856450.29c29c"]]},{"id":"73856450.29c29c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":446.2261848449707,"y":446.19044828414917,"z":"a04d05aa.96dde8","wires":[["48e06f2b.f80d9","a42cbd9b.c72d78","390840cf.ea062","fdec1e33.2d584","4e7df2db.c66804","24e1937a.d92304","a5491397.e63d","b0e2fb65.4d72a8","5ff8263f.c34fe","37d8e562.438482","5cd931aa.cf1c9","f4ad5e9.3b0dd2","7eeb9c2a.4b203c","30ba6f49.d097d8","7bd3eb16.82f6d4","68d3b550.c2328c","a48b96ce.6aa88","bdea225f.6f7fc8","e717d7fd.25afe8","25bfe2f3.42be26"]]},{"id":"a42cbd9b.c72d78","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":688.1866493225098,"y":2109.881513595581,"z":"a04d05aa.96dde8","wires":[]},{"id":"48e06f2b.f80d9","type":"set","name":"set output to api handler","xml":"<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='contrail-route-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $contrail-route-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n","comments":"","x":724.7183570861816,"y":1995.6706681251526,"z":"a04d05aa.96dde8","wires":[]},{"id":"390840cf.ea062","type":"execute","name":"execute Properties - pull properties file","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":795.9656982421875,"y":931.1759785413742,"z":"a04d05aa.96dde8","wires":[[]]},{"id":"4e7df2db.c66804","type":"execute","name":"execute RestApiCallNode - Get AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":798.60205078125,"y":1070.2372941970825,"z":"a04d05aa.96dde8","wires":[["3e55c079.a5837","6436bb5b.c26b3c"]]},{"id":"fdec1e33.2d584","type":"execute","name":"generate allotted-resource url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.cr-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$cto-api.contrail-route-allotted-resource-id`\"/>\n","comments":"","outputs":1,"x":767.8148956298828,"y":963.1839027404785,"z":"a04d05aa.96dde8","wires":[[]]},{"id":"3e55c079.a5837","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1050.564842224121,"y":1069.9340190887451,"z":"a04d05aa.96dde8","wires":[["a646265f.47ea7"]]},{"id":"24e1937a.d92304","type":"execute","name":"execute RestApiCallNode - DELETE AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":787.8269882202148,"y":1948.767650127411,"z":"a04d05aa.96dde8","wires":[["29da9919.d1d6b6","bdfa5346.70b88","6479a17.ea4a8e"]]},{"id":"29da9919.d1d6b6","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1058.1350059509277,"y":2001.7658509239554,"z":"a04d05aa.96dde8","wires":[["a652f709.2d7f38"]]},{"id":"bdfa5346.70b88","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1049.1350555419922,"y":1970.265876673162,"z":"a04d05aa.96dde8","wires":[["a652f709.2d7f38"]]},{"id":"6479a17.ea4a8e","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1052.8850936889648,"y":1940.6229815483093,"z":"a04d05aa.96dde8","wires":[["d4a11274.e8fd"]]},{"id":"a652f709.2d7f38","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 updating md-sal for contrail-route-allotted-resource\" />\n","comments":"","x":1218.8850936889648,"y":1971.01590051502,"z":"a04d05aa.96dde8","wires":[]},{"id":"a646265f.47ea7","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1219.5648460388184,"y":1070.4339199066162,"z":"a04d05aa.96dde8","wires":[["8d7eabfa.167cc8"]]},{"id":"8d7eabfa.167cc8","type":"switchNode","name":"switch cr length","xml":"<switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>\n","comments":"","outputs":1,"x":1431.533187866211,"y":1069.8308267593384,"z":"a04d05aa.96dde8","wires":[["d5a911b3.ffec88","cfb45605.4899b8"]]},{"id":"d5a911b3.ffec88","type":"other","name":"outcome 1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1619.7553939819336,"y":1069.0530071258545,"z":"a04d05aa.96dde8","wires":[["6816e818.3220d"]]},{"id":"f2f09ff7.0045a","type":"set","name":"set ar from get","xml":"<set>\n<parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />\n","comments":"","x":2024.0572929382324,"y":1102.6245155334473,"z":"a04d05aa.96dde8","wires":[]},{"id":"6816e818.3220d","type":"block","name":"block: atomic","xml":"<block atomic='true'>\n","atomic":"false","comments":"","outputs":1,"x":1804.2792835235596,"y":1068.9578409194946,"z":"a04d05aa.96dde8","wires":[["f2f09ff7.0045a","2304cd9.2986e32"]]},{"id":"6e1274a3.dd6cac","type":"comment","name":"GET allotted-resource from mdsal","info":"","comments":"","x":779.6758880615234,"y":1035.3228569030762,"z":"a04d05aa.96dde8","wires":[]},{"id":"2304cd9.2986e32","type":"set","name":"save backup copy of mdsal-ar for rollback","xml":"<set>\n<parameter name='bk-cr-ar' value='$mdsal-ar.' />\n","comments":"","x":2111.9143447875977,"y":1069.4340076446533,"z":"a04d05aa.96dde8","wires":[]},{"id":"426e51cf.16c37","type":"comment","name":"Create urls for restapi","info":"","comments":"","x":740.9299468994141,"y":896.1243171691895,"z":"a04d05aa.96dde8","wires":[]},{"id":"d4a11274.e8fd","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1194.5410614013672,"y":1936.8151507377625,"z":"a04d05aa.96dde8","wires":[[]]},{"id":"79d75df3.055734","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=\"Error: Contrail Route not found in md-sal\" />\n    \n","comments":"","x":1794.4169921875,"y":1170.3334121704102,"z":"a04d05aa.96dde8","wires":[]},{"id":"6436bb5b.c26b3c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1042.4166450500488,"y":1115.0001039505005,"z":"a04d05aa.96dde8","wires":[["2087473c.3ecd6"]]},{"id":"2087473c.3ecd6","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1222.4165954589844,"y":1115.666654586792,"z":"a04d05aa.96dde8","wires":[["79d75df3.055734"]]},{"id":"cfb45605.4899b8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1608.0833473205566,"y":1115.3333673477173,"z":"a04d05aa.96dde8","wires":[["79d75df3.055734"]]},{"id":"7531096a.c15c5","type":"comment","name":"Need to rollback aai here","info":"","comments":"","x":1444.96435546875,"y":1970.3334956169128,"z":"a04d05aa.96dde8","wires":[]},{"id":"a5491397.e63d","type":"update","name":"delete AAI allotted-resource","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-data.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $cto-api.contrail-route-allotted-resource-id\">\n\n","comments":"","outputs":1,"x":752.0754089355469,"y":1479.1111221313477,"z":"a04d05aa.96dde8","wires":[["e4bc276b.df95e","4d6316f5.70cf88"]]},{"id":"e4bc276b.df95e","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1005.7262115478516,"y":1457.5716300010681,"z":"a04d05aa.96dde8","wires":[["1207feb3.ce5da1"]]},{"id":"4d6316f5.70cf88","type":"failure","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1011.0356407165527,"y":1493.1430478096008,"z":"a04d05aa.96dde8","wires":[["1207feb3.ce5da1"]]},{"id":"1207feb3.ce5da1","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=\"AAI failed\" />\n","comments":"","x":1220.8214263916016,"y":1459.1906743049622,"z":"a04d05aa.96dde8","wires":[]},{"id":"27d3b51a.5b1dc2","type":"comment","name":"Update AAI AR","info":"","comments":"","x":713.3071365356445,"y":1443.761899471283,"z":"a04d05aa.96dde8","wires":[]},{"id":"b0e2fb65.4d72a8","type":"set","name":"set ar-assignments","xml":"<set>\n<parameter name='ar-assignments.' value=\"`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`\" />\n\n\n\n","comments":"","x":734.5595550537109,"y":1118.4604206085205,"z":"a04d05aa.96dde8","wires":[]},{"id":"5e880cbf.42aa6c","type":"comment","name":"Call contrail api here","info":"","comments":"","x":735.7579727172852,"y":1198.111089706421,"z":"a04d05aa.96dde8","wires":[]},{"id":"5ff8263f.c34fe","type":"execute","name":"execute Contrail API delete network policy","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='delete' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />\n<parameter name='default-project' value='`$cto-api.default-project`' />\n<parameter name='default-domain' value='`$cto-api.default-domain`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n\n","comments":"","outputs":1,"x":807.7658843994141,"y":1230.087548583746,"z":"a04d05aa.96dde8","wires":[["6114ce41.1008","212d8de4.467eaa","98d5c18b.8e5f8"]]},{"id":"6114ce41.1008","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1109.1468353271484,"y":1196.118734035641,"z":"a04d05aa.96dde8","wires":[["cc339bb2.32dc08"]]},{"id":"212d8de4.467eaa","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1110.5754928588867,"y":1266.8964347839355,"z":"a04d05aa.96dde8","wires":[["df1fe041.e9c678"]]},{"id":"df1fe041.e9c678","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=\"Failed to delete policy in Contrail\" />\n","comments":"","x":1258.257968902588,"y":1265.118709564209,"z":"a04d05aa.96dde8","wires":[]},{"id":"cc339bb2.32dc08","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1261.3373184204102,"y":1196.7854590415955,"z":"a04d05aa.96dde8","wires":[[]]},{"id":"4a34e05d.2fb3d","type":"comment","name":"Delete network policy in AAI","info":"","comments":"","x":752.305549621582,"y":1312.6667261123657,"z":"a04d05aa.96dde8","wires":[]},{"id":"37d8e562.438482","type":"save","name":"delete AnAI - network-policy","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"network-policy\" \n\t\tkey=\"network-policy.network-policy-id = $ar-assignments.contrail-id\" >\n\n\n\n","comments":"","outputs":1,"x":767.6824340820312,"y":1348.7342910766602,"z":"a04d05aa.96dde8","wires":[["3a904ac8.8fe2f6","a8f8b714.3c2278"]]},{"id":"e3549d5e.09f13","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=\"Failed to delete network policy in AAI\" />\n","comments":"","x":1240.0279426574707,"y":1340.0159044265747,"z":"a04d05aa.96dde8","wires":[]},{"id":"3a904ac8.8fe2f6","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1011.4565505981445,"y":1339.031641960144,"z":"a04d05aa.96dde8","wires":[["e3549d5e.09f13"]]},{"id":"a8f8b714.3c2278","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1015.2660484313965,"y":1368.5080585479736,"z":"a04d05aa.96dde8","wires":[["e3549d5e.09f13"]]},{"id":"9b7b36e7.031118","type":"comment","name":"Parameters","info":"INPUT:\ncto-api.default-domain\ncto-api.default-project\ncto-api.cloud-region-id\ncto-api.contrail-route-allotted-resource-id\ncto-api.rollback-flag\ncto-api.configuration-id\n","comments":"","x":576.0833435058594,"y":155,"z":"a04d05aa.96dde8","wires":[]},{"id":"5cd931aa.cf1c9","type":"configure","name":"set default values","xml":"<set>\n<parameter name=\"ctotmp.action\" value=\"delete\" />\n<parameter name=\"ctotmp.config-count\" value=\"0\" />\n<parameter name=\"ctotmp.config-found\" value=\"true\" />","comments":"","outputs":1,"x":752.6388168334961,"y":444.6666660308838,"z":"a04d05aa.96dde8","wires":[[]]},{"id":"f4ad5e9.3b0dd2","type":"call","name":"call validate-api-contrail-route-input","xml":"<call module='GENERIC-RESOURCE-API' rpc='validate-api-contrail-route-input' mode='sync' >\n","comments":"","outputs":1,"x":804.8611145019531,"y":478.5555839538574,"z":"a04d05aa.96dde8","wires":[[]]},{"id":"7eeb9c2a.4b203c","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.api-contrail-route-topology-operation-delete\"/>\n<parameter name='field3' value='cto-api.parent-service-instance-id' />\n<parameter name='field4' value='`$cto-api.parent-service-instance-id`' />\n<parameter name='field5' value='cto-api.default-domain' />\n<parameter name='field6' value='`$cto-api.default-domain`' />\n<parameter name='field7' value='cto-api.port-mirror-configuration-instance-id' />\n<parameter name='field8' value='`$cto-api.port-mirror-configuration-instance-id`' />\n<parameter name='field9' value='cto-api.service-type' />\n<parameter name='field10' value='`$cto-api.service-type`' />\n<parameter name='field11' value='cto-api.source-network-role' />\n<parameter name='field12' value='`$cto-api.source-network-fole`' />\n<parameter name='field13' value='cto-api.collector-network-role' />\n<parameter name='field14' value='`$cto-api.collector-network-4ole`' />\n<parameter name='field15' value='cto-api.default-project' />\n<parameter name='field16' value='`$cto-api.default-project`' />\n<parameter name='field17' value='cto-api.cloud-region-id' />\n<parameter name='field18' value='`$cto-api.cloud-region-id`' />\n<parameter name='field19' value='cto-api.cloud-owner' />\n<parameter name='field20' value='`$cto-api.cloud-owner`' />\n<parameter name='field21' value='cto-api.isTest' />\n<parameter name='field22' value='`$cto-api.isTest`' />\n<parameter name='field23' value='service-data.service-information.global-customer-id' />\n<parameter name='field24' value='`$service-data.service-information.global-customer-id`' />\n","comments":"","outputs":1,"x":721.8611068725586,"y":377.73014736175537,"z":"a04d05aa.96dde8","wires":[[]]},{"id":"7bd3eb16.82f6d4","type":"update","name":"get AAI allotted-resource","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-data.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $cto-api.contrail-route-allotted-resource-id\"\n        pfx='aai.ar' local-only='false' >\n\n","comments":"","outputs":1,"x":778.0515594482422,"y":552.174599647522,"z":"a04d05aa.96dde8","wires":[["ee1b625f.50a488","56af5df.ef970a4","e2a7caea.66427"]]},{"id":"ee1b625f.50a488","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1006.5119018554688,"y":554.0160541534424,"z":"a04d05aa.96dde8","wires":[["e58a245b.cdd508"]]},{"id":"56af5df.ef970a4","type":"failure","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1017.3768005371094,"y":587.3652114868164,"z":"a04d05aa.96dde8","wires":[["65e4a356.63e61c"]]},{"id":"e58a245b.cdd508","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=\"AAI failed\" />\n","comments":"","x":1943.8293380737305,"y":550.0795211791992,"z":"a04d05aa.96dde8","wires":[]},{"id":"30ba6f49.d097d8","type":"configure","name":"clear internal data","xml":"<set>\n<parameter name=\"ctotmp.\" value=\"\" />\n","comments":"","outputs":1,"x":754.0833358764648,"y":408.4444885253906,"z":"a04d05aa.96dde8","wires":[[]]},{"id":"39e90493.8f2e8c","type":"switchNode","name":"switch rollback-flag","xml":"<switch test='`$cto-api.rollback-flag`'>\n","comments":"","outputs":1,"x":1392.972267150879,"y":587.111083984375,"z":"a04d05aa.96dde8","wires":[["f5f6cee5.3320b","6b2175e6.b048a4"]]},{"id":"65e4a356.63e61c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1189.6388931274414,"y":588.1111278533936,"z":"a04d05aa.96dde8","wires":[["39e90493.8f2e8c"]]},{"id":"f5f6cee5.3320b","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1578.5278053283691,"y":586.7777576446533,"z":"a04d05aa.96dde8","wires":[["79da048c.853c24"]]},{"id":"dd4149ba.e84128","type":"comment","name":"check if AR exists in AAI","info":"","comments":"","x":772.9722213745117,"y":514.5555629730225,"z":"a04d05aa.96dde8","wires":[]},{"id":"6b2175e6.b048a4","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1582.9721145629883,"y":618.9999198913574,"z":"a04d05aa.96dde8","wires":[["e58a245b.cdd508"]]},{"id":"68d3b550.c2328c","type":"for","name":"for relationship list","xml":"<for silentFailure='true' index='ridx' start='0' end=\"`$aai.ar.relationship-list.relationship_length`\" >\n","comments":"","outputs":1,"x":739.0833129882812,"y":747.4523906707764,"z":"a04d05aa.96dde8","wires":[["1b43e690.d53209"]]},{"id":"ed5ea8c8.d68408","type":"switchNode","name":"switch","xml":"<switch test='`$aai.ar.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>\n","comments":"","outputs":1,"x":1140.138469696045,"y":750.0553770065308,"z":"a04d05aa.96dde8","wires":[["11abf495.9e996b"]]},{"id":"1b43e690.d53209","type":"for","name":"for relationship data","xml":"<for silentFailure='false' index='rdidx' start='0' end=\"`$aai.ar.relationship-list.relationship[$ridx].relationship-data_length`\" >\n","comments":"","outputs":1,"x":955.3330612182617,"y":748.4166250228882,"z":"a04d05aa.96dde8","wires":[["ed5ea8c8.d68408"]]},{"id":"11abf495.9e996b","type":"other","name":"configuration.configuration-id","xml":"<outcome value='configuration.configuration-id'>\n","comments":"","outputs":1,"x":1364.860725402832,"y":750.6942253112793,"z":"a04d05aa.96dde8","wires":[["aef97856.ce1b6"]]},{"id":"aef97856.ce1b6","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1588.7216720581055,"y":750.6665563583374,"z":"a04d05aa.96dde8","wires":[["da49b6ab.8f85f8","5294fcec.e89854"]]},{"id":"da49b6ab.8f85f8","type":"switchNode","name":"switch relationship_value","xml":"<switch test='`$aai.ar.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value == $cto-api.configuration-id`'>\n","comments":"","outputs":1,"x":1816.3056945800781,"y":787.6666469573975,"z":"a04d05aa.96dde8","wires":[["83c2d256.3c16d"]]},{"id":"5294fcec.e89854","type":"set","name":"increment config count","xml":"<set>\n<parameter name='ctotmp.config-count' value='`$ctotmp.config-count+1`' />\n","comments":"","x":1810.7500305175781,"y":752.3332982063293,"z":"a04d05aa.96dde8","wires":[]},{"id":"83c2d256.3c16d","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2039.52783203125,"y":787.1111221313477,"z":"a04d05aa.96dde8","wires":[["9dbab233.06c6f"]]},{"id":"ba821080.6d606","type":"set","name":"set config found","xml":"<set>\n<parameter name='ctotmp.config-found' value='true' />\n","comments":"","x":2398.4168434143066,"y":786.8889141082764,"z":"a04d05aa.96dde8","wires":[]},{"id":"9dbab233.06c6f","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2200.638843536377,"y":786.8889055252075,"z":"a04d05aa.96dde8","wires":[["ba821080.6d606"]]},{"id":"a48b96ce.6aa88","type":"switchNode","name":"switch config count is 1 and found is true","xml":"<switch test=\"`$ctotmp.config-count == 1 and $ctotmp.config-found == 'true'`\">\n","comments":"","outputs":1,"x":801.0356597900391,"y":850.031702041626,"z":"a04d05aa.96dde8","wires":[["5497da6e.a8ab04","1eef5d93.dd9e2a"]]},{"id":"1eef5d93.dd9e2a","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1054.527783711751,"y":873.5555087195502,"z":"a04d05aa.96dde8","wires":[["31e92ab.8dfafd6"]]},{"id":"5497da6e.a8ab04","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1052.3056030273438,"y":843.5555191040039,"z":"a04d05aa.96dde8","wires":[["29500ab5.fd810e"]]},{"id":"31e92ab.8dfafd6","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1217.8610534667969,"y":872.4443607330322,"z":"a04d05aa.96dde8","wires":[[]]},{"id":"75ecc999.38973","type":"comment","name":"check if there is > 1 relationship to configuration id for this AR","info":"","comments":"","x":861.8611297607422,"y":710.1110916137695,"z":"a04d05aa.96dde8","wires":[]},{"id":"29500ab5.fd810e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1216.7499313354492,"y":840.2222023010254,"z":"a04d05aa.96dde8","wires":[["7a507900.94fec"]]},{"id":"79da048c.853c24","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1741.861089706421,"y":587.888858795166,"z":"a04d05aa.96dde8","wires":[["49e138a7.52ab1"]]},{"id":"e2a7caea.66427","type":"failure","name":"Other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1014.083345413208,"y":617.8888931274414,"z":"a04d05aa.96dde8","wires":[["b2354214.a5c4e"]]},{"id":"b2354214.a5c4e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1195.1943969726562,"y":616.7777481079102,"z":"a04d05aa.96dde8","wires":[[]]},{"id":"49e138a7.52ab1","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":1948.5277099609375,"y":584.5555191040039,"z":"a04d05aa.96dde8","wires":[]},{"id":"98d5c18b.8e5f8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1111.8611145019531,"y":1229.0001392364502,"z":"a04d05aa.96dde8","wires":[["cc339bb2.32dc08"]]},{"id":"7a507900.94fec","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=\"AAI Allotted resource is not tied to configuration object\" />\n","comments":"","x":1407.7500076293945,"y":839.6666507720947,"z":"a04d05aa.96dde8","wires":[]},{"id":"25bfe2f3.42be26","type":"switchNode","name":"switch config count is > 1","xml":"<switch test=\"`$ctotmp.config-count > 1`\">\n","comments":"","outputs":1,"x":754.75,"y":808.6666641235352,"z":"a04d05aa.96dde8","wires":[["2bb9b7c5.0d3e3"]]},{"id":"2bb9b7c5.0d3e3","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":966.75,"y":808.6666641235352,"z":"a04d05aa.96dde8","wires":[["80e48cb9.af064"]]},{"id":"80e48cb9.af064","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1121.083251953125,"y":808.5555191040039,"z":"a04d05aa.96dde8","wires":[["6dd3a580.5e0194"]]},{"id":"6dd3a580.5e0194","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=\"AAI Allotted Resource is tied to more than one configuration object\" />\n","comments":"","x":1312.97216796875,"y":808.7778091430664,"z":"a04d05aa.96dde8","wires":[]},{"id":"d245ce9c.91bbd","type":"for","name":"for snidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]","xml":"<for silentFailure='true' index='snidx' start='`$tmp.sdidx + 1`' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n","comments":"","outputs":1,"x":1802.4800338745117,"y":1845.6665649414062,"z":"a04d05aa.96dde8","wires":[["b65abe87.5e08f"]]},{"id":"23c9b219.960fee","type":"comment","name":"Remove CAR from service data","info":"","comments":"","x":761.4642715454102,"y":1697.3336191177368,"z":"a04d05aa.96dde8","wires":[]},{"id":"bdea225f.6f7fc8","type":"switchNode","name":"switch $service-data.consumed-allotted-resource.length","xml":"<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\n","comments":"","outputs":1,"x":838.2300415039062,"y":1729.7861623764038,"z":"a04d05aa.96dde8","wires":[["efda1bb.752dae8","dd386d7.e7be41"]]},{"id":"efda1bb.752dae8","type":"outcome","name":"1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1194.6108779907227,"y":1736.4525785446167,"z":"a04d05aa.96dde8","wires":[["49c4422a.edb67c"]]},{"id":"ffcf9253.ba3f3","type":"set","name":"Remove AR","xml":"<set>\n\t<parameter name=\"service-data.consumed-allotted-resources.\" value=\"\"/>\n\n","comments":"","x":1582.785255432129,"y":1739.0083026885986,"z":"a04d05aa.96dde8","wires":[]},{"id":"dd386d7.e7be41","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1200.1981830596924,"y":1800.3731260299683,"z":"a04d05aa.96dde8","wires":[["8a9e3de7.2f9478"]]},{"id":"447a0de1.41832c","type":"set","name":"set new CAR length","xml":"<set>\n\t<parameter name=\"service-data.consumed-allotted-resources.consumed-allotted-resource_length\" value=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`\"/>\n\n\t\n","comments":"","x":1608.6055297851562,"y":1874.6590523719788,"z":"a04d05aa.96dde8","wires":[]},{"id":"42362158.38f3c","type":"set","name":"Remove CAR","xml":"<set>\n\t<parameter name=\"service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.new_length].\" value=\"\"/>\n\n","comments":"","x":1590.6741905212402,"y":1905.9602828025818,"z":"a04d05aa.96dde8","wires":[]},{"id":"8a9e3de7.2f9478","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1380.134651184082,"y":1801.6904907226562,"z":"a04d05aa.96dde8","wires":[["d245ce9c.91bbd","42362158.38f3c","447a0de1.41832c","927787fb.eeccc8"]]},{"id":"e6e786d6.769ce","type":"set","name":"set new consumed allotted resource length","xml":"<set>\n\t<parameter name=\"service-data.consumed-allotted-resources.consumed-allotted-resource_length\" value=\"0\"/>\n\n\t\n","comments":"","x":1679.1187591552734,"y":1770.3786115646362,"z":"a04d05aa.96dde8","wires":[]},{"id":"49c4422a.edb67c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1373.944190979004,"y":1737.1563749313354,"z":"a04d05aa.96dde8","wires":[["ffcf9253.ba3f3","e6e786d6.769ce"]]},{"id":"c682491d.909558","type":"comment","name":"If only one remove all networks","info":"","comments":"","x":1265.9812393188477,"y":1701.0453519821167,"z":"a04d05aa.96dde8","wires":[]},{"id":"927787fb.eeccc8","type":"set","name":"Set new length","xml":"<set>\n\t<parameter name=\"tmp.new_length\" value=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`\"/>\n\t\n\t\n","comments":"","x":1592.5525665283203,"y":1813.1403861045837,"z":"a04d05aa.96dde8","wires":[]},{"id":"414c2157.1c39e","type":"set","name":"move CAR to remove one","xml":"<set>\n\t<parameter name=\"service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.newidx].\" value=\"$service-data.consumed-allotted-resources.consumed-allotted-resource[$snidx].\" />\n\t\n","comments":"","x":2469.3214797973633,"y":1871.380958557129,"z":"a04d05aa.96dde8","wires":[]},{"id":"b65abe87.5e08f","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2229.8772354125977,"y":1848.1586666107178,"z":"a04d05aa.96dde8","wires":[["414c2157.1c39e","62a4a718.204748"]]},{"id":"62a4a718.204748","type":"set","name":"Set new index","xml":"<set>\n\t<parameter name=\"tmp.newidx\" value=\"`$snidx - 1`\"/>\n\t\n\t\n","comments":"","x":2433.469711303711,"y":1840.9736213684082,"z":"a04d05aa.96dde8","wires":[]},{"id":"e717d7fd.25afe8","type":"for","name":"for snidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]","xml":"<for silentFailure='true' index='snidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n","comments":"","outputs":1,"x":906.46435546875,"y":1601.3808364868164,"z":"a04d05aa.96dde8","wires":[["e99eb00f.4b885"]]},{"id":"e99eb00f.4b885","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1342.432991027832,"y":1599.5871868133545,"z":"a04d05aa.96dde8","wires":[["4b1a33f.3d9384c"]]},{"id":"4b1a33f.3d9384c","type":"switchNode","name":"switch AR found","xml":"<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$sdix].allotted-resource-id == $cto-api.contrail-route-allotted-resource-id`'>\n","comments":"","outputs":1,"x":1545.0357093811035,"y":1599.9522647857666,"z":"a04d05aa.96dde8","wires":[["e25770d3.30d32"]]},{"id":"22e3c0f3.c27ec8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1922.178611755371,"y":1598.5238161087036,"z":"a04d05aa.96dde8","wires":[["befee4f2.430c08","176989d0.1d21ee"]]},{"id":"befee4f2.430c08","type":"set","name":"Set sdidx","xml":"<set>\n\t<parameter name=\"tmp.sdidx\" value=\"`$snidx`\"/>\n\t\n\t\n","comments":"","x":2136.4643211364746,"y":1562.8095998764038,"z":"a04d05aa.96dde8","wires":[]},{"id":"176989d0.1d21ee","type":"break","name":"break","xml":"<break>\n","comments":"","x":2127.8928413391113,"y":1597.095314025879,"z":"a04d05aa.96dde8","wires":[]},{"id":"dfe3ed02.58c5c","type":"comment","name":"Find AR idx in consumed allotted resource list","info":"","comments":"","x":823.6071166992188,"y":1567.0952281951904,"z":"a04d05aa.96dde8","wires":[]},{"id":"e25770d3.30d32","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1733.607063293457,"y":1598.5238337516785,"z":"a04d05aa.96dde8","wires":[["22e3c0f3.c27ec8"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_assign-vlan-tags.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_assign-vlan-tags.json
new file mode 100755
index 0000000..b84aa6c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_assign-vlan-tags.json
@@ -0,0 +1 @@
+[{"id":"652accf8.af78f4","type":"dgstart","name":"DGSTART","outputs":1,"x":115,"y":100,"z":"9a9cdd56.ab0e8","wires":[["245d2ed1.72c402"]]},{"id":"245d2ed1.72c402","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.85713958740234,"y":139.8095464706421,"z":"9a9cdd56.ab0e8","wires":[["8126c279.7385a"]]},{"id":"8126c279.7385a","type":"method","name":"method assign-vlan-tags","xml":"<method rpc='assign-vlan-tags' mode='sync'>\n","comments":"","outputs":1,"x":161.42861938476562,"y":179.99999618530273,"z":"9a9cdd56.ab0e8","wires":[["2b22e267.5880ce"]]},{"id":"a1ecd56f.4f7138","type":"comment","name":"assign-vlan-tags","info":"","comments":"","x":520.3210983276367,"y":42.97569942474365,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"2b22e267.5880ce","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":119.66666412353516,"y":1345,"z":"9a9cdd56.ab0e8","wires":[["2c244a0a.2f99a6","36cbdffa.88e67","e6dec19f.663c6","222c19b3.ff2636","811ae3a3.5562b","7c36bb21.e49e84","e5a5c2b7.e4596","ab38927e.7993a","e6008238.aa9a3","3b356a3d.30f4c6","5f217817.0236f8","3fd9412f.cfb7ae","4f6273f9.020e6c","f6eaa086.ac557","4a7282d1.a2361c","770d61b0.03e07","8518fce8.71575","33171a53.f82ee6","c5f0bc7b.328f2","65087d58.1bcb14","d92f8c4a.771eb","b8e066e.4d27d98","5d9fa9f6.6b9a18","f9e63e02.6c242","de447fe4.4319f","28ce36b5.91d29a","30b583e4.f4ac8c"]]},{"id":"36cbdffa.88e67","type":"set","name":"copy to tmp.vlan-vnics (to work in)","xml":"<set>\n<parameter name='tmp.vlan-vnics.'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-vnics.`' />\n","comments":"","x":463.3333854675293,"y":334.99997901916504,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"7c36bb21.e49e84","type":"whileNode","name":"while total-subs > 0","xml":"<while test='`$total-subs &gt; 0`'>\n","comments":"","outputs":1,"x":418.333309173584,"y":688.3333053588867,"z":"9a9cdd56.ab0e8","wires":[["41193025.7a02d"]]},{"id":"2c244a0a.2f99a6","type":"set","name":"set total-subs","xml":"<set>\n<parameter name='total-subs' value='`$get-data-from-policy-output.precreate-sub-intf-num`' />\n","comments":"","x":396.66670989990234,"y":378.3333377838135,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"811ae3a3.5562b","type":"set","name":"set sub-index, and vnic-index to 0","xml":"<set>\n<parameter name='sub-index' value='0' />\n<parameter name='vnic-index' value='0' />\n","comments":"","x":456.66675567626953,"y":514.9999523162842,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"84ee47a3.5e24c8","type":"set","name":"set vlan-tag-id","xml":"<set>\n<parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].vlan-tag-id'\n  value='`$cur-tag-id`' />\n","comments":"","x":801.6667861938477,"y":545,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"222c19b3.ff2636","type":"set","name":"set cur-tag-id","xml":"<set>\n<parameter name='cur-tag-id' value='`$get-data-from-policy-output.vlan-tag-start + $get-data-from-policy-output.vlan-tag-offset`' />\n","comments":"","x":395.0000648498535,"y":471.6666069030762,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"f1e94268.d9f41","type":"set","name":"increment cur-tag-id","xml":"<set>\n<parameter name='cur-tag-id' value='`$cur-tag-id + 1`' />\n","comments":"","x":818.3333702087402,"y":645.0000743865967,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"42a5d8f7.b5c068","type":"set","name":"increment vnic-index","xml":"<set>\n<parameter name='vnic-index' value='`$vnic-index + 1`' />\n","comments":"","x":818.333309173584,"y":693.3333683013916,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"fc80639f.54e36","type":"switchNode","name":"switch vnic-index == vnic length?","xml":"<switch test='`$vnic-index == $tmp.vlan-vnics.vlan-vnic_length`'>\n","comments":"","outputs":1,"x":860.0000762939453,"y":751.6667718887329,"z":"9a9cdd56.ab0e8","wires":[["8011b82e.664018"]]},{"id":"1c586522.eb984b","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1204.99995803833,"y":748.3333721160889,"z":"9a9cdd56.ab0e8","wires":[["cb730d93.9895e","15998ce6.1407d3"]]},{"id":"cb730d93.9895e","type":"set","name":"set vnic-index to 0","xml":"<set>\n<parameter name='vnic-index' value='0' />\n","comments":"","x":1371.6667251586914,"y":720.000078201294,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"15998ce6.1407d3","type":"set","name":"increment sub-index","xml":"<set>\n<parameter name='sub-index' value='`$sub-index + 1`' />\n","comments":"","x":1378.3331909179688,"y":775.0001201629639,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"2d0797cd.e719b8","type":"set","name":"decrement total-subs","xml":"<set>\n<parameter name='total-subs' value='`$total-subs - 1`' />\n","comments":"","x":819.9999542236328,"y":813.3334627151489,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"e6dec19f.663c6","type":"switchNode","name":"switch total-subs > (vlan-vnics_length * max per VNIC)","xml":"<switch test='`$total-subs &gt; ( $tmp.vlan-vnics.vlan-vnic_length * $get-data-from-policy-output.max-num-sub-intf )`'>\n","comments":"","outputs":1,"x":523.333423614502,"y":425.0000162124634,"z":"9a9cdd56.ab0e8","wires":[["2849b86f.6f5298"]]},{"id":"1fe6d488.c1b37b","type":"set","name":"set total-subs = vlan-vnics_length * max per VNIC","xml":"<set>\n<parameter name='total-subs' value='`$tmp.vlan-vnics.vlan-vnic_length * $get-data-from-policy-output.max-num-sub-intf`' />\n","comments":"","x":1054.9999961853027,"y":424.9999952316284,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"80411e6d.8bfb1","type":"set","name":"set sub interface length","xml":"<set>\n<parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length'\n  value='`$sub-index + 1`' />\n","comments":"","x":828.3333892822266,"y":595.0001430511475,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"2849b86f.6f5298","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":796.6666984558105,"y":424.99999618530273,"z":"9a9cdd56.ab0e8","wires":[["1fe6d488.c1b37b"]]},{"id":"41193025.7a02d","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":608.333324432373,"y":686.666675567627,"z":"9a9cdd56.ab0e8","wires":[["84ee47a3.5e24c8","80411e6d.8bfb1","f1e94268.d9f41","42a5d8f7.b5c068","fc80639f.54e36","2d0797cd.e719b8"]]},{"id":"8011b82e.664018","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1068.3333282470703,"y":750.0000381469727,"z":"9a9cdd56.ab0e8","wires":[["1c586522.eb984b"]]},{"id":"e5a5c2b7.e4596","type":"set","name":"copy back tmp.vlan-vnics","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-vnics.'\n  value='`$tmp.vlan-vnics.`' />\n","comments":"","x":420.50000381469727,"y":2816.499797821045,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"ab38927e.7993a","type":"set","name":"clear tmp.vlan-vnics","xml":"<set>\n<parameter name='tmp.vlan-vnics.' value='' />\n","comments":"","x":420.0000419616699,"y":288.3333511352539,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"e6008238.aa9a3","type":"for","name":"for each vlan-vnic","xml":"<for index='vnic-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic_length`' >\n","comments":"","outputs":1,"x":414.16661834716797,"y":1465.000072479248,"z":"9a9cdd56.ab0e8","wires":[["8ec558ca.ea5e38"]]},{"id":"8ec558ca.ea5e38","type":"for","name":"for each subinterface","xml":"<for index='sub-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >\n","comments":"","outputs":1,"x":620.8332824707031,"y":1465.000093460083,"z":"9a9cdd56.ab0e8","wires":[["4c6946af.e71148"]]},{"id":"4c6946af.e71148","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":827.4999694824219,"y":1463.33345413208,"z":"9a9cdd56.ab0e8","wires":[["23d29721.ac5b48","81b844d1.ae00d8","96cbf0d4.4b3ef"]]},{"id":"26c4311.85447ce","type":"comment","name":"First loop through networks looking for this vlan-tag-id","info":"","comments":"","x":1100.8333740234375,"y":1363.3334684371948,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"23d29721.ac5b48","type":"set","name":"set network-index, and unassigned-network-index to -1","xml":"<set>\n<parameter name='network-index' value='-1' />\n<parameter name='unassigned-network-index' value='-1' />\n","comments":"","x":1147.5000762939453,"y":1405.0001482963562,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"81b844d1.ae00d8","type":"for","name":"for each network","xml":"<for index='n-index' start='0' end='`$service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network_length`' >\n","comments":"","outputs":1,"x":1035.8332595825195,"y":1461.6668577194214,"z":"9a9cdd56.ab0e8","wires":[["99af6510.a954e8"]]},{"id":"3b356a3d.30f4c6","type":"set","name":"set network-instance-group-id","xml":"<set>\n<parameter name='network-instance-group-id' value='`$aai.instance-group.instance-group[$aai-ig-index].id`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id'\n  value='`$aai.instance-group.instance-group[$aai-ig-index].id`' />\n","comments":"","x":450.8333435058594,"y":1098.3333721160889,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"34d50f05.68416","type":"comment","name":"Assign vlan tag ids","info":"","comments":"","x":396.66668701171875,"y":243.33334732055664,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"c415275f.5939e8","type":"comment","name":"Find the network instance group","info":"","comments":"","x":462.5000228881836,"y":1161.6667041778564,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"5f217817.0236f8","type":"set","name":"set network-instance-group-index to -1","xml":"<set>\n<parameter name='network-instance-group-index' value='-1' />\n","comments":"","x":480.83335876464844,"y":1208.333351135254,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"3fd9412f.cfb7ae","type":"for","name":"for each network-instance-group","xml":"<for silentFailure='true' index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >\n","comments":"","outputs":1,"x":459.1667022705078,"y":1254.9999389648438,"z":"9a9cdd56.ab0e8","wires":[["40199d4d.bebbb4"]]},{"id":"40199d4d.bebbb4","type":"switchNode","name":"network-instance-group-ids match?","xml":"<switch test='`$network-instance-group-id\n== $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>\n","comments":"","outputs":1,"x":760.8333435058594,"y":1253.3331909179688,"z":"9a9cdd56.ab0e8","wires":[["a53c53b3.4e3b2"]]},{"id":"a53c53b3.4e3b2","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":980.8334007263184,"y":1252.3332719802856,"z":"9a9cdd56.ab0e8","wires":[["90bd0614.2b8f68"]]},{"id":"90bd0614.2b8f68","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1114.1666984558105,"y":1251.6666870117188,"z":"9a9cdd56.ab0e8","wires":[["eef79ff5.34e3","a063161.08833e8"]]},{"id":"eef79ff5.34e3","type":"set","name":"set network-instance-group-index","xml":"<set>\n<parameter name='network-instance-group-index' value='`$nig-index`' />\n","comments":"","x":1332.499912261963,"y":1224.99995803833,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"a063161.08833e8","type":"break","name":"break","xml":"<break>\n","comments":"","x":1252.5000343322754,"y":1268.3332328796387,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"4f6273f9.020e6c","type":"switchNode","name":"switch network-instance-group-index","xml":"<switch test='`$network-instance-group-index`'>\n","comments":"","outputs":1,"x":470.8333740234375,"y":1310.0000629425049,"z":"9a9cdd56.ab0e8","wires":[["2acd473f.1481d8"]]},{"id":"2acd473f.1481d8","type":"outcome","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":689.1666984558105,"y":1308.9998598098755,"z":"9a9cdd56.ab0e8","wires":[["3e46fcba.683d84"]]},{"id":"3e46fcba.683d84","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Unable to find network instance group ID '\n  + $network-instance-group-id\n  + ' in network-instance-groups'`\" />\n","comments":"","x":839.1667404174805,"y":1308.3333148956299,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"99af6510.a954e8","type":"switchNode","name":"vlan-tag-ids match?","xml":"<switch test='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].vlan-tag-id\n  == $service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$n-index].vlan-tag-id`'>\n","comments":"","outputs":1,"x":1240.833366394043,"y":1461.6666145324707,"z":"9a9cdd56.ab0e8","wires":[["87e84e53.ace3e","4f742575.5d294c"]]},{"id":"87e84e53.ace3e","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1409.1666679382324,"y":1424.9999465942383,"z":"9a9cdd56.ab0e8","wires":[["b93b3695.96b0a8"]]},{"id":"b93b3695.96b0a8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1545.833236694336,"y":1423.3331890106201,"z":"9a9cdd56.ab0e8","wires":[["702e077b.b74c88","4d366511.05eb1c"]]},{"id":"702e077b.b74c88","type":"set","name":"set network-index","xml":"<set>\n<parameter name='network-index' value='`$n-index`' />\n","comments":"","x":1720.8331413269043,"y":1394.9997415542603,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"4d366511.05eb1c","type":"break","name":"break","xml":"<break>\n","comments":"","x":1684.1665725708008,"y":1439.99973487854,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"96cbf0d4.4b3ef","type":"switchNode","name":"switch network-index","xml":"<switch test='`$network-index`'>\n","comments":"","outputs":1,"x":1042.5001068115234,"y":1648.3332471847534,"z":"9a9cdd56.ab0e8","wires":[["6ec24dcf.1760e4","fee6142c.9a6e38"]]},{"id":"6ec24dcf.1760e4","type":"outcome","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":1224.166618347168,"y":1588.3332052230835,"z":"9a9cdd56.ab0e8","wires":[["af21836d.750cb"]]},{"id":"fee6142c.9a6e38","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1220.8334884643555,"y":1712.3333311080933,"z":"9a9cdd56.ab0e8","wires":[["17a81eee.7b05e1"]]},{"id":"17a81eee.7b05e1","type":"set","name":"set network-id in subinterface","xml":"<set>\n<parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-id'\n  value='`$service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$network-index].network-id`' />\n","comments":"","x":1429.1665496826172,"y":1711.6665019989014,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"6be392b3.eb74ec","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1802.4998931884766,"y":1641.6666622161865,"z":"9a9cdd56.ab0e8","wires":[["15321738.385e99","724ea597.a1b9bc"]]},{"id":"724ea597.a1b9bc","type":"set","name":"set this network as assigned to this vlan","xml":"<set>\n<parameter name='service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$unassigned-network-index].vlan-tag-id'\n  value='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].vlan-tag-id`' />\n<parameter name='service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$unassigned-network-index].network-status'\n  value='assigned' />\n","comments":"","x":2027.499984741211,"y":1663.3333530426025,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"4f742575.5d294c","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1410.8334159851074,"y":1503.333402633667,"z":"9a9cdd56.ab0e8","wires":[["c0cf0c09.a1be"]]},{"id":"c0cf0c09.a1be","type":"switchNode","name":"switch unassigned-network-index","xml":"<switch test=\"`$unassigned-network-index`\">\n","comments":"","outputs":1,"x":1630.833251953125,"y":1501.666696548462,"z":"9a9cdd56.ab0e8","wires":[["973e08b7.3ab268"]]},{"id":"973e08b7.3ab268","type":"outcomeTrue","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":1842.499984741211,"y":1499.9998970031738,"z":"9a9cdd56.ab0e8","wires":[["8e8a8630.715dd8"]]},{"id":"445cd8d3.d38e48","type":"set","name":"set unassigned-network-index","xml":"<set>\n<parameter name='unassigned-network-index' value='`$n-index`' />\n","comments":"","x":2427.4997940063477,"y":1496.6666564941406,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"8e8a8630.715dd8","type":"switchNode","name":"switch network-status","xml":"<switch test='`$service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$n-index].network-status`'>\n","comments":"","outputs":1,"x":2022.500144958496,"y":1498.3332414627075,"z":"9a9cdd56.ab0e8","wires":[["11b8e83.0200718"]]},{"id":"11b8e83.0200718","type":"outcome","name":"unassigned","xml":"<outcome value='unassigned'>\n","comments":"","outputs":1,"x":2214.1664543151855,"y":1498.3332815170288,"z":"9a9cdd56.ab0e8","wires":[["445cd8d3.d38e48"]]},{"id":"af21836d.750cb","type":"switchNode","name":"switch unassigned-network-index","xml":"<switch test='`$unassigned-network-index`'>\n","comments":"","outputs":1,"x":1439.1666641235352,"y":1588.3334074020386,"z":"9a9cdd56.ab0e8","wires":[["63c42993.468758","c210e058.f7fab"]]},{"id":"63c42993.468758","type":"outcome","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":1667.4999771118164,"y":1566.6666593551636,"z":"9a9cdd56.ab0e8","wires":[["739c22d8.39741c"]]},{"id":"c210e058.f7fab","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1669.1668815612793,"y":1641.9999952316284,"z":"9a9cdd56.ab0e8","wires":[["6be392b3.eb74ec"]]},{"id":"739c22d8.39741c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"L3-network not found\" />\n","comments":"","x":1820.833236694336,"y":1564.9998970031738,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"15321738.385e99","type":"set","name":"set network-id in subinterface","xml":"<set>\n<parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-id'\n  value='`$service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$unassigned-network-index].network-id`' />\n","comments":"","x":1997.4999084472656,"y":1613.3333282470703,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"f6eaa086.ac557","type":"for","name":"for each vlan-nvic","xml":"<for index='vnic-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic_length`' >\n","comments":"","outputs":1,"x":400.8333282470703,"y":1819.9998970031738,"z":"9a9cdd56.ab0e8","wires":[["3e87d92c.aa7e66"]]},{"id":"3e87d92c.aa7e66","type":"for","name":"for each subinterface","xml":"<for index='sub-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >\n","comments":"","outputs":1,"x":607.4999923706055,"y":1819.9999179840088,"z":"9a9cdd56.ab0e8","wires":[["5fd8a0cb.1af52"]]},{"id":"5fd8a0cb.1af52","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":805.8333282470703,"y":1818.333293914795,"z":"9a9cdd56.ab0e8","wires":[["a0a5a2fe.8466"]]},{"id":"a0a5a2fe.8466","type":"for","name":"for each network in service-data","xml":"<for index='n-index' start='0' end='`$service-data.networks.network_length`' >\n","comments":"","outputs":1,"x":1037.5,"y":1819.9998397827148,"z":"9a9cdd56.ab0e8","wires":[["7f9b587d.8b8bc8"]]},{"id":"7f9b587d.8b8bc8","type":"switchNode","name":"switch network-ids match?","xml":"<switch test='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-id\n  == $service-data.networks.network[$n-index].network-id`'>\n","comments":"","outputs":1,"x":1312.5000305175781,"y":1818.3334169387817,"z":"9a9cdd56.ab0e8","wires":[["852afd7c.6b077"]]},{"id":"7bb29eb5.ce2aa","type":"set","name":"set network-name & role","xml":"<set>\n<parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-name'\n  value='`$service-data.networks.network[$n-index].network-data.network-topology.network-topology-identifier-structure.network-name`' />\n<parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-role'\n  value='`$service-data.networks.network[$n-index].network-data.network-topology.network-topology-identifier-structure.network-role`' />\n","comments":"","x":1819.1666412353516,"y":1791.6669521331787,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"489e8171.fadb3","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1634.1667594909668,"y":1815.0001640319824,"z":"9a9cdd56.ab0e8","wires":[["7bb29eb5.ce2aa","28e49c4e.dfc374"]]},{"id":"28e49c4e.dfc374","type":"break","name":"break","xml":"<break>\n","comments":"","x":1762.500057220459,"y":1838.3334999084473,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"4a7282d1.a2361c","type":"switchNode","name":"switch network-name","xml":"<switch test='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-name`'>\n","comments":"","outputs":1,"x":407.50001525878906,"y":1904.9999656677246,"z":"9a9cdd56.ab0e8","wires":[["83949a40.48e068"]]},{"id":"83949a40.48e068","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":589.1666717529297,"y":1904.9998970031738,"z":"9a9cdd56.ab0e8","wires":[["31e77c14.ce4c94"]]},{"id":"31e77c14.ce4c94","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to find a network name for network id '\n  + $service-data.networks.network[$n-index].network-id`\" />\n","comments":"","x":747.5000381469727,"y":1903.333257675171,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"770d61b0.03e07","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n","comments":"","x":385.50001525878906,"y":2881.4997596740723,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"852afd7c.6b077","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1504.1666107177734,"y":1816.6665229797363,"z":"9a9cdd56.ab0e8","wires":[["489e8171.fadb3"]]},{"id":"8518fce8.71575","type":"get-resource","name":"get-resource instance group","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n  resource=\"instance-groups\" \n  key=\"instance-group.instance-group-function = $db.group-uuids[$group-index].network-collection-function\n    AND instance-group.instance-group-type = 'L3-NETWORK'\"\n  pfx='aai.instance-group' local-only='false' >\n\n","comments":"","outputs":1,"x":448.3333511352539,"y":884.1666851043701,"z":"9a9cdd56.ab0e8","wires":[["9849af35.9608f","b9bb3c76.ee6f1"]]},{"id":"b9bb3c76.ee6f1","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":662.5794792175293,"y":907.3175296783447,"z":"9a9cdd56.ab0e8","wires":[["b3bb7492.879b88"]]},{"id":"9849af35.9608f","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":671.5081405639648,"y":860.603274345398,"z":"9a9cdd56.ab0e8","wires":[["33fbf4ac.607d1c"]]},{"id":"33fbf4ac.607d1c","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\"\n      value=\"`'Unable to find AAI instance-group for instance-group-function '\n        + $db.group-uuids[$group-index].network-collection-function\n        + ' and instance-group-type L3-NETWORK'`\" />\n","comments":"","x":829.6667175292969,"y":859.1671562194824,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"b3bb7492.879b88","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\"\n      value=\"`'System error getting AAI instance-group for instance-group-function '\n        + $db.group-uuids[$group-index].network-collection-function\n        + ' and instance-group-type L3-NETWORK'`\" />\n","comments":"","x":829.6666526794434,"y":907.1671447753906,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"c5f0bc7b.328f2","type":"for","name":"for each returned instance-group","xml":"<for index='ig-index' start='0' end='`$aai.instance-group.instance-group_length`' >\n","comments":"","outputs":1,"x":464.3335189819336,"y":996.1671514511108,"z":"9a9cdd56.ab0e8","wires":[["59617a69.dbc4a4"]]},{"id":"59617a69.dbc4a4","type":"for","name":"for each relationship","xml":"<for index='rel-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship_length`' >\n","comments":"","outputs":1,"x":716.0001602172852,"y":995.1671504974365,"z":"9a9cdd56.ab0e8","wires":[["c1083251.cc8c1"]]},{"id":"c1083251.cc8c1","type":"for","name":"for each relationship-data","xml":"<for index='reldata-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data_length`' >\n","comments":"","outputs":1,"x":942.6668319702148,"y":994.500524520874,"z":"9a9cdd56.ab0e8","wires":[["2a508b7f.bacb04"]]},{"id":"2a508b7f.bacb04","type":"switchNode","name":"switch relationship-key == service-instance.service-instance-id","xml":"<switch test=\"`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-key\n  == 'service-instance.service-instance-id'`\">\n","comments":"","outputs":1,"x":1301.0004196166992,"y":994.5004434585571,"z":"9a9cdd56.ab0e8","wires":[["13249590.69991a"]]},{"id":"13249590.69991a","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1597.666877746582,"y":994.5004758834839,"z":"9a9cdd56.ab0e8","wires":[["d4256ecd.7fa88"]]},{"id":"d4256ecd.7fa88","type":"switchNode","name":"switch relationship-value == this service-instance-id","xml":"<switch test='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-value\n  == $service-data.service-information.service-instance-id`'>\n","comments":"","outputs":1,"x":1862.6667022705078,"y":994.5004453659058,"z":"9a9cdd56.ab0e8","wires":[["a421e2d3.74531"]]},{"id":"33171a53.f82ee6","type":"set","name":"set found-instance-group to false","xml":"<set>\n<parameter name='found-instance-group' value='false' />\n","comments":"","x":464.33343505859375,"y":952.8336544036865,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"389120a7.29c36","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2249.3333892822266,"y":994.5004434585571,"z":"9a9cdd56.ab0e8","wires":[["a346204.a5f1be","2d1acd3b.a9b922","65d1ae7d.131c9"]]},{"id":"a346204.a5f1be","type":"set","name":"set found-instance-group to true","xml":"<set>\n<parameter name='found-instance-group' value='true' />\n","comments":"","x":2450.9999771118164,"y":951.1671094894409,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"2d1acd3b.a9b922","type":"set","name":"set aai-ig-index","xml":"<set>\n<parameter name='aai-ig-index' value='`$ig-index`' />\n","comments":"","x":2400.999813079834,"y":994.5005254745483,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"65d1ae7d.131c9","type":"break","name":"break","xml":"<break>\n","comments":"","x":2372.6668853759766,"y":1037.8338193893433,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"65087d58.1bcb14","type":"switchNode","name":"switch found-instance-group","xml":"<switch test='`$found-instance-group`'>\n","comments":"","outputs":1,"x":449.3335189819336,"y":1046.1672763824463,"z":"9a9cdd56.ab0e8","wires":[["886eaa87.ffc188"]]},{"id":"886eaa87.ffc188","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":646.0001564025879,"y":1046.1670751571655,"z":"9a9cdd56.ab0e8","wires":[["d4044e60.f7584"]]},{"id":"d4044e60.f7584","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\"\n      value=\"`'Unable to find AAI instance-group for instance-group-function '\n        + $db.group-uuids[$group-index].vfc-instance-group-function\n        + ' and instance-group-type VNFC'`\" />\n","comments":"","x":796.0000457763672,"y":1044.5004358291626,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"a421e2d3.74531","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2122.6666717529297,"y":994.5004358291626,"z":"9a9cdd56.ab0e8","wires":[["389120a7.29c36"]]},{"id":"85eb004c.66119","type":"comment","name":"Assign floating addresses","info":"","comments":"","x":370.83350372314453,"y":1962.0000457763672,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"b8e066e.4d27d98","type":"for","name":"for each vnf-network-collection","xml":"<for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection_length`' >\n","comments":"","outputs":1,"x":432.50025939941406,"y":2050.500108718872,"z":"9a9cdd56.ab0e8","wires":[["74b16895.a08878"]]},{"id":"d92f8c4a.771eb","type":"set","name":"set found-collection to false","xml":"<set>\n<parameter name='found-collection' value='false' />\n","comments":"","x":424.1669235229492,"y":2004.5000247955322,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"74b16895.a08878","type":"switchNode","name":"network-instance-group-functions match?","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$idx].network-instance-group-function\n  == $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function`'>\n","comments":"","outputs":1,"x":750.8335571289062,"y":2049.8334016799927,"z":"9a9cdd56.ab0e8","wires":[["faaf1332.7d76d"]]},{"id":"faaf1332.7d76d","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":989.1670722961426,"y":2049.5000677108765,"z":"9a9cdd56.ab0e8","wires":[["975615df.39d208"]]},{"id":"975615df.39d208","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1119.1667518615723,"y":2047.833360671997,"z":"9a9cdd56.ab0e8","wires":[["7828863b.a6d328","8d6f3a41.20ed28","6d574b94.f3f394"]]},{"id":"7828863b.a6d328","type":"set","name":"set found-collection to true","xml":"<set>\n<parameter name='found-collection' value='true' />\n","comments":"","x":1299.1667556762695,"y":2001.1668548583984,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"de447fe4.4319f","type":"for","name":"for each network-instance-group","xml":"<for index='idx' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >\n","comments":"","outputs":1,"x":432.50010681152344,"y":2191.1667013168335,"z":"9a9cdd56.ab0e8","wires":[["917af37.8643b1"]]},{"id":"917af37.8643b1","type":"switchNode","name":"network-instance-group-ids match?","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id\n  == $service-data.network-instance-groups.network-instance-group[$idx].network-instance-group-id`'>\n","comments":"","outputs":1,"x":730.8332824707031,"y":2189.5000858306885,"z":"9a9cdd56.ab0e8","wires":[["31f04a0f.57f536"]]},{"id":"31f04a0f.57f536","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":952.5000534057617,"y":2188.1668643951416,"z":"9a9cdd56.ab0e8","wires":[["ef7bae7e.384a9"]]},{"id":"8d6f3a41.20ed28","type":"break","name":"break","xml":"<break>\n","comments":"","x":1239.166919708252,"y":2089.500068664551,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"5d9fa9f6.6b9a18","type":"switchNode","name":"switch found-collection","xml":"<switch test='`$found-collection`'>\n","comments":"","outputs":1,"x":404.1669616699219,"y":2097.8334436416626,"z":"9a9cdd56.ab0e8","wires":[["381c3f44.23f99"]]},{"id":"381c3f44.23f99","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":577.5003108978271,"y":2097.8334436416626,"z":"9a9cdd56.ab0e8","wires":[["d682f9e9.9b2f58"]]},{"id":"d682f9e9.9b2f58","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Unable to find vnf-network-collection for network-instance-group-function '\n  + $tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`\" />\n","comments":"","x":720.8334808349609,"y":2097.8333673477173,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"6d574b94.f3f394","type":"set","name":"set vnc-index","xml":"<set>\n<parameter name='vnc-index' value='`$idx`' />\n","comments":"","x":1262.5004959106445,"y":2046.166693687439,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"f9e63e02.6c242","type":"set","name":"set found-network-instance-group to false","xml":"<set>\n<parameter name='found-network-instance-group' value='false' />\n","comments":"","x":460.8334655761719,"y":2144.500030517578,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"ef7bae7e.384a9","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1084.166732788086,"y":2186.1666193008423,"z":"9a9cdd56.ab0e8","wires":[["1c1479c5.0e3596","44374f33.c4d29","ca9bcaba.3c7cb8"]]},{"id":"1c1479c5.0e3596","type":"set","name":"set found-network-instance-group to true","xml":"<set>\n<parameter name='found-network-instance-group' value='true' />\n","comments":"","x":1312.5001678466797,"y":2139.500153541565,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"44374f33.c4d29","type":"break","name":"break","xml":"<break>\n","comments":"","x":1204.1669006347656,"y":2227.833327293396,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"ca9bcaba.3c7cb8","type":"set","name":"set nig-index","xml":"<set>\n<parameter name='nig-index' value='`$idx`' />\n","comments":"","x":1227.5004768371582,"y":2184.499952316284,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"28ce36b5.91d29a","type":"switchNode","name":"switch found-network-instance-group","xml":"<switch test='`$found-network-instance-group`'>\n","comments":"","outputs":1,"x":445.83343505859375,"y":2239.499831199646,"z":"9a9cdd56.ab0e8","wires":[["9c5a7f75.31353"]]},{"id":"9c5a7f75.31353","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":665.8336448669434,"y":2237.833409309387,"z":"9a9cdd56.ab0e8","wires":[["c0ff935e.ce4da"]]},{"id":"c0ff935e.ce4da","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Unable to find network-instance-group for network-instance-group-id '\n  + $tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-id`\" />\n","comments":"","x":809.1668148040771,"y":2237.833333015442,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"30b583e4.f4ac8c","type":"for","name":"for each subnet","xml":"<for silentFailure='true' index='subnet-index' start='0'\n  end='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets_length`' >\n","comments":"","outputs":1,"x":380.83331298828125,"y":2536.1669960021973,"z":"9a9cdd56.ab0e8","wires":[["c35334b3.d58d88"]]},{"id":"c35334b3.d58d88","type":"switchNode","name":"switch ip-version","xml":"<switch test='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets[$subnet-index].ip-version`'>\n","comments":"","outputs":1,"x":564.1666488647461,"y":2536.1669149398804,"z":"9a9cdd56.ab0e8","wires":[["3089a3c3.ba118c","b9ee7c6.9b83c8"]]},{"id":"3089a3c3.ba118c","type":"outcome","name":"ipv4","xml":"<outcome value='ipv4'>\n","comments":"","outputs":1,"x":727.5001564025879,"y":2421.166756629944,"z":"9a9cdd56.ab0e8","wires":[["4f0afcd5.e043f4"]]},{"id":"b9ee7c6.9b83c8","type":"outcome","name":"ipv6","xml":"<outcome value='ipv6'>\n","comments":"","outputs":1,"x":729.1667709350586,"y":2657.83327960968,"z":"9a9cdd56.ab0e8","wires":[["76c81b8.f9018e4"]]},{"id":"f9ac0c48.bea23","type":"switchNode","name":"switch network collection vipv4-address","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$vnc-index].vnf-floating-ip.ip-addresses.vipv4-address`'>\n","comments":"","outputs":1,"x":1087.5005798339844,"y":2354.500081062317,"z":"9a9cdd56.ab0e8","wires":[["b6283c51.9a1"]]},{"id":"b6283c51.9a1","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1322.5003280639648,"y":2352.833245277405,"z":"9a9cdd56.ab0e8","wires":[["4d266e16.60cc6"]]},{"id":"a968161.37c5ae8","type":"set","name":"set variables for EIPAM calls","xml":"<set>\n<parameter name='tmp.vt-ip.network-instance-group-id'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-id`' />\n<parameter name='tmp.vt-ip.network-instance-group-function'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`' />\n<parameter name='tmp.vt-ip.nf-role'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`' />\n<parameter name='tmp.vt-ip.vm-type'\n  value='`$db.group-uuids[$group-index].vm-type`' />\n<parameter name='tmp.vt-ip.vnfc-name'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`' />\n<parameter name='tmp.vt-ip.type'\n  value='VIP' />\n<parameter name='tmp.vt-ip.vf-module-id'\n  value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='tmp.vt-ip.ip-version'\n  value='ipv4' />\n<parameter name='tmp.vt-ip.network-id'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[0].vnic-sub-interface.sub-interface-network-data[0].network-id`' />\n","comments":"","x":1644.166862487793,"y":2294.5000791549683,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"4d266e16.60cc6","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1447.5003280639648,"y":2352.833245277405,"z":"9a9cdd56.ab0e8","wires":[["a968161.37c5ae8","b44508ed.c8e008","174299a1.3bc446","e48077b.3ea7a88"]]},{"id":"b44508ed.c8e008","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-vlan-tagging-ip-addresses","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-ip-addresses' mode='sync' >\n","comments":"","outputs":1,"x":1799.1668319702148,"y":2341.166741371155,"z":"9a9cdd56.ab0e8","wires":[["3f1cec1d.1871f4"]]},{"id":"3f1cec1d.1871f4","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2152.500186920166,"y":2339.500075340271,"z":"9a9cdd56.ab0e8","wires":[["a2851cad.d2b5d"]]},{"id":"a2851cad.d2b5d","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n","comments":"","x":2300.833610534668,"y":2337.8332147598267,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"174299a1.3bc446","type":"set","name":"set test EIPAM response","xml":"<set>\n<parameter name='eipam-ip-block.plans_length' value='2' />\n<parameter name='eipam-ip-block.plans[0].plan-name' value='plan-1' />\n<parameter name='eipam-ip-block.plans[0].requests_length' value='1' />\n<parameter name='eipam-ip-block.plans[0].requests[0].client-key'\n  value='vm-type-1|zmtn6nf-code-16code-1001|network-role-1|subnet-role-1|FIXED|4|1' />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-type' value='FIXED' />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-prefix' value=\"`'34.52.87.1' + $counter`\" />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-version' value='4' />\n","comments":"","x":1630.8335800170898,"y":2389.49999332428,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"e48077b.3ea7a88","type":"set","name":"set network collection vipv4-address","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$vnc-index].vnf-floating-ip.ip-addresses.vipv4-address'\n  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />\n","comments":"","x":1667.5002746582031,"y":2434.5001649856567,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"4f0afcd5.e043f4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":857.5001525878906,"y":2419.4999990463257,"z":"9a9cdd56.ab0e8","wires":[["f9ac0c48.bea23","44e75606.5d9828"]]},{"id":"44e75606.5d9828","type":"for","name":"for each vlan-vnic","xml":"<for index='vlan-vnic-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic_length`' >\n","comments":"","outputs":1,"x":1024.166732788086,"y":2492.833245277405,"z":"9a9cdd56.ab0e8","wires":[["78c15aef.261da4"]]},{"id":"78c15aef.261da4","type":"for","name":"for each sub-interface","xml":"<for index='sub-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic[$vlan-vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >\n","comments":"","outputs":1,"x":1230.8335037231445,"y":2492.8331747055054,"z":"9a9cdd56.ab0e8","wires":[["9cc506c6.cacec8"]]},{"id":"9cc506c6.cacec8","type":"set","name":"set floating-ip-v4","xml":"<set>\n<parameter name='tmp.vlan-vnics.vlan-vnic[$vlan-vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].floating-ips.floating-ip-v4'\n  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />\n","comments":"","x":1432.500099182129,"y":2492.8335008621216,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"7b56555a.339a6c","type":"switchNode","name":"switch network collection vipv6-address","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$vnc-index].vnf-floating-ip.ip-addresses.vipv6-address`'>\n","comments":"","outputs":1,"x":1090.833480834961,"y":2594.49999332428,"z":"9a9cdd56.ab0e8","wires":[["4938431d.a63f9c"]]},{"id":"4938431d.a63f9c","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1325.8332290649414,"y":2592.8331575393677,"z":"9a9cdd56.ab0e8","wires":[["2331e3c3.6f45ac"]]},{"id":"cd2467f7.91fd58","type":"set","name":"set variables for EIPAM calls","xml":"<set>\n<parameter name='tmp.vt-ip.network-instance-group-id'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-id`' />\n<parameter name='tmp.vt-ip.network-instance-group-function'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`' />\n<parameter name='tmp.vt-ip.nf-role'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`' />\n<parameter name='tmp.vt-ip.vm-type'\n  value='`$db.group-uuids[$group-index].vm-type`' />\n<parameter name='tmp.vt-ip.vnfc-name'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`' />\n<parameter name='tmp.vt-ip.type'\n  value='VIP' />\n<parameter name='tmp.vt-ip.vf-module-id'\n  value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='tmp.vt-ip.ip-version'\n  value='ipv6' />\n<parameter name='tmp.vt-ip.network-id'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[0].vnic-sub-interface.sub-interface-network-data[0].network-id`' />\n","comments":"","x":1647.4997634887695,"y":2534.499991416931,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"2331e3c3.6f45ac","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1450.8332290649414,"y":2592.8331575393677,"z":"9a9cdd56.ab0e8","wires":[["cd2467f7.91fd58","3a2cb18.85b084e","ad55df13.888ba","593a7f2c.310c7"]]},{"id":"3a2cb18.85b084e","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-vlan-tagging-ip-addresses","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-ip-addresses' mode='sync' >\n","comments":"","outputs":1,"x":1802.4997329711914,"y":2581.1666536331177,"z":"9a9cdd56.ab0e8","wires":[["a4c5186a.f96208"]]},{"id":"a4c5186a.f96208","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2155.8330879211426,"y":2579.499987602234,"z":"9a9cdd56.ab0e8","wires":[["c8656944.b5e6e8"]]},{"id":"c8656944.b5e6e8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n","comments":"","x":2304.1665115356445,"y":2577.8331270217896,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"ad55df13.888ba","type":"set","name":"set test EIPAM response","xml":"<set>\n<parameter name='eipam-ip-block.plans_length' value='2' />\n<parameter name='eipam-ip-block.plans[0].plan-name' value='plan-1' />\n<parameter name='eipam-ip-block.plans[0].requests_length' value='6' />\n<parameter name='eipam-ip-block.plans[0].requests[0].client-key'\n  value='vm-type-1|zmtn6nf-code-16code-1001|network-role-1|subnet-role-1|FIXED|4|1' />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-type' value='FIXED' />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-prefix' value=\"`'cafe:1111' + $counter`\" />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-version' value='6' />\n","comments":"","x":1634.1664810180664,"y":2629.4999055862427,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"593a7f2c.310c7","type":"set","name":"set network collection vipv6-address","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$vnc-index].vnf-floating-ip.ip-addresses.vipv6-address'\n  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />\n","comments":"","x":1670.8331756591797,"y":2674.5000772476196,"z":"9a9cdd56.ab0e8","wires":[]},{"id":"76c81b8.f9018e4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":862.4998321533203,"y":2656.16659450531,"z":"9a9cdd56.ab0e8","wires":[["7b56555a.339a6c","c214cfe5.d1b16"]]},{"id":"c214cfe5.d1b16","type":"for","name":"for each vlan-vnic","xml":"<for index='vlan-vnic-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic_length`' >\n","comments":"","outputs":1,"x":1027.4996337890625,"y":2732.8331575393677,"z":"9a9cdd56.ab0e8","wires":[["5eb6afaa.d832"]]},{"id":"5eb6afaa.d832","type":"for","name":"for each sub-interface","xml":"<for index='sub-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic[$vlan-vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >\n","comments":"","outputs":1,"x":1234.166404724121,"y":2732.8330869674683,"z":"9a9cdd56.ab0e8","wires":[["f3af3152.84e6"]]},{"id":"f3af3152.84e6","type":"set","name":"set floating-ip-v6","xml":"<set>\n<parameter name='tmp.vlan-vnics.vlan-vnic[$vlan-vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].floating-ips.floating-ip-v6'\n  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />\n","comments":"","x":1435.8330001831055,"y":2732.8334131240845,"z":"9a9cdd56.ab0e8","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_auto-ip-assignment.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_auto-ip-assignment.json
new file mode 100644
index 0000000..a4a2755
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_auto-ip-assignment.json
@@ -0,0 +1 @@
+[{"id":"bdeaac7e.eeba5","type":"method","name":"method auto-ip-assignment","xml":"<method rpc='auto-ip-assignment' mode='sync'>\n","comments":"","outputs":1,"x":192.5,"y":86.7261734008789,"z":"1fa209ca.68bcc6","wires":[["1d61830a.caff3d"]]},{"id":"1d61830a.caff3d","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":174.392822265625,"y":145.4045763015747,"z":"1fa209ca.68bcc6","wires":[["ca6c92f6.15a88","94a73311.17b05","e8373374.eb2ed","e7d10438.f3e268","8054687.0b2de98","311925a8.ed57ea","ebb5bed4.21fe4","92fb65d7.62b1e8","f661c9eb.ebf8b8","9572481d.426008","620ae3a1.712f0c","848cc7f8.6ad808","c539ed02.ba3e4","39576ccf.08aa54"]]},{"id":"6d8f285d.2ee468","type":"dgstart","name":"DGSTART","outputs":1,"x":132.64283752441406,"y":22.61903190612793,"z":"1fa209ca.68bcc6","wires":[["efaaa681.a9adf8"]]},{"id":"ca6c92f6.15a88","type":"get-resource","name":"get-resource VF_MODULE_MODEL","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODULE_MODEL WHERE customization_uuid = $auto-ip-assignment-input.vf-module.model-customization-uuid'\n  pfx='db1.vf-module-model'>\n\n","comments":"","outputs":1,"x":483.60704040527344,"y":385.4762716293335,"z":"1fa209ca.68bcc6","wires":[["ec4f7188.2ce47","e3fd6f30.c323f"]]},{"id":"311925a8.ed57ea","type":"for","name":"for each vm-type","xml":"<for index='vm-type-index' start='0' end='`$db1.vf-module-to-vfc-mapping_length`' >\n","comments":"","outputs":1,"x":400.82141876220703,"y":1281.429196357727,"z":"1fa209ca.68bcc6","wires":[["73db199f.b7b378"]]},{"id":"ec4f7188.2ce47","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":756.5356140136719,"y":365.8571071624756,"z":"1fa209ca.68bcc6","wires":[["382de90f.6812e6"]]},{"id":"e3fd6f30.c323f","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":765.1070442199707,"y":410.14282035827637,"z":"1fa209ca.68bcc6","wires":[["65e64946.838a18"]]},{"id":"3593ee13.1daa82","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":836.21435546875,"y":454.01176166534424,"z":"1fa209ca.68bcc6","wires":[["1dbed7a1.44f198"]]},{"id":"d347b8fb.2d6ba8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":844.7857856750488,"y":498.297474861145,"z":"1fa209ca.68bcc6","wires":[["c897c5db.f03b08"]]},{"id":"73db199f.b7b378","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":598.2499160766602,"y":1281.9168405532837,"z":"1fa209ca.68bcc6","wires":[["c18d23f9.dfb6a","69acb259.3743cc","f885dc5b.e1297","2849b46c.06d7ac","39e9f916.d84206","24dba145.3374ae"]]},{"id":"382de90f.6812e6","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 reading VF_MODULE_MODEL table\" />\n","comments":"","x":931.5355453491211,"y":365.00000762939453,"z":"1fa209ca.68bcc6","wires":[]},{"id":"65e64946.838a18","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=\"`'No model found for VF module customization UUID ' + $vnf-topology-operation-input.vnf-request-information.model-customization-uuid`\" />\n","comments":"","x":932.1783447265625,"y":409.904748916626,"z":"1fa209ca.68bcc6","wires":[]},{"id":"1dbed7a1.44f198","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 reading VF_MODULE_TO_VFC_MAPPING table\" />\n","comments":"","x":1011.2142868041992,"y":453.1546621322632,"z":"1fa209ca.68bcc6","wires":[]},{"id":"c897c5db.f03b08","type":"set","name":"set vf-module-to-vfc-mapping length to 0","xml":"<set>\n<parameter name='db1.vf-module-to-vfc-mapping_length' value='0' />\n","comments":"","x":1098.0000762939453,"y":497.9161376953125,"z":"1fa209ca.68bcc6","wires":[]},{"id":"5a553f67.c7601","type":"switchNode","name":"switch ipv4-ip-version","xml":"<switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>\n","comments":"","outputs":1,"x":2397.0757217407227,"y":2713.762487888336,"z":"1fa209ca.68bcc6","wires":[["fab0b697.cf8cf8"]]},{"id":"fab0b697.cf8cf8","type":"other","name":"4","xml":"<outcome value='4'>\n","comments":"","outputs":1,"x":2588.0755157470703,"y":2713.8576607704163,"z":"1fa209ca.68bcc6","wires":[["fe994d35.8cfd5"]]},{"id":"fe994d35.8cfd5","type":"switchNode","name":"switch ipv4-use-dhcp","xml":"<switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`'>\n","comments":"","outputs":1,"x":2783.38077545166,"y":2714.9407086372375,"z":"1fa209ca.68bcc6","wires":[["b3ff62a2.75876"]]},{"id":"b3ff62a2.75876","type":"outcome","name":"N","xml":"<outcome value='N'>\n","comments":"","outputs":1,"x":2979.630657196045,"y":2715.2623019218445,"z":"1fa209ca.68bcc6","wires":[["e5e94945.c9a578"]]},{"id":"4b46311e.8a97","type":"comment","name":"REQUIRED INPUTS","info":"auto-ip-assignment-input.vf-module.model-customization-uuid\n - used to get VF_MODULE_MODEL and related vfc-customization-uuids\nauto-ip-assignment-input.vf-module-id\n - pass to include in eipam-ip-block.plans.[].info\nauto-ip-assignment-input.aic-cloud-region\n - pass to generate FQPN to get clli and complex.region\n - pass to query-aai-l3-network-by network-role as 1st filter\nauto-ip-assignment-input.service-instance-id\n - pass to query-aai-l3-network-by network-role as 2nd filter\nauto-ip-assignment-input.vnf-assignments.vnf-vms[].vm-names[].vnfc-names[].vnfc-name\n - pass to use vnfc-name as part of client-key for ip request\n\t","comments":"","x":584.9524536132812,"y":76.84521675109863,"z":"1fa209ca.68bcc6","wires":[]},{"id":"63355749.999f38","type":"comment","name":"Change History","info":"iTrack 8790\n- fix generate-FQPN-input.location-clli8 (8 was missing)\n- fix typo (signular assignment, no s) in eipam-ip-block.plans[].requests[] SUPPLEMENTAL DATA\n- copy generate-FQPN-output. to eipam-ip-block.plans[].requests[] after ading SUPPLEMENTAL DATA\niTrack 9558\n- fix typo in node 95, 282 to test ipv6-ip-version instead of ipv6-use-dhcp\n- initialize pidx before looping vm-type\n- fixed node 105 for loop end index type, db instead of db1\n\n1802\niTrack 10575 \n\t- added property for cloud-owner, added property for cloud-owner, added property for cloud-owner, added property for cloud-owner, added property for cloud-owner, added property for cloud-owner\niTrack 10846\n\t- node 71, added network-role-tag\n\t- node 41, clear tmp.db1.\n\niTrack 10767\n\t- added node 320 to update GENERIC_RESOURCE_NAME.context_id for client-key\n\t\n\tiTrack 11310\n\t- added network-id as FQPN input\n1806\niTrack 13358\n- set service-type to NA if null","comments":"","x":800.25,"y":64.9404525756836,"z":"1fa209ca.68bcc6","wires":[]},{"id":"94a73311.17b05","type":"switchNode","name":"switch: auto-ip-assignment-input.vf-module.model-customization-uuid","xml":"<switch test='`$auto-ip-assignment-input.vf-module.model-customization-uuid`'>\n","comments":"","outputs":1,"x":585.4286193847656,"y":189.61903762817383,"z":"1fa209ca.68bcc6","wires":[["ffb298a5.f0f0e8"]]},{"id":"ffb298a5.f0f0e8","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":933.4286193847656,"y":189.6190366744995,"z":"1fa209ca.68bcc6","wires":[["501d7832.b9a1c8"]]},{"id":"501d7832.b9a1c8","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=\"auto-ip-assignment-input.vf-module.model-customization-uuid is null\" />\n","comments":"","x":1095.3452911376953,"y":189.73013544082642,"z":"1fa209ca.68bcc6","wires":[]},{"id":"e8373374.eb2ed","type":"switchNode","name":"switch: auto-ip-assignment-input.aic-cloud-region","xml":"<switch test='`$auto-ip-assignment-input.aic-cloud-region`'>\n","comments":"","outputs":1,"x":522.1785888671875,"y":145.61902713775635,"z":"1fa209ca.68bcc6","wires":[["5e6658b7.1d20b8"]]},{"id":"5e6658b7.1d20b8","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":785.678596496582,"y":145.11902713775635,"z":"1fa209ca.68bcc6","wires":[["29b82193.3a746e"]]},{"id":"29b82193.3a746e","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=\"auto-ip-assignment-input.aic-cloud-region is null\" />\n","comments":"","x":940.0952644348145,"y":145.23012399673462,"z":"1fa209ca.68bcc6","wires":[]},{"id":"e7d10438.f3e268","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":390.3695297241211,"y":5296.321459770203,"z":"1fa209ca.68bcc6","wires":[["d7916c77.af658"]]},{"id":"8054687.0b2de98","type":"switchNode","name":"switch: auto-ip-assignment-input.vf-module-id","xml":"<switch test='`$auto-ip-assignment-input.vf-module-id`'>\n","comments":"","outputs":1,"x":512.3571472167969,"y":235.47616958618164,"z":"1fa209ca.68bcc6","wires":[["94e19cf2.8369a"]]},{"id":"94e19cf2.8369a","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":806.8571548461914,"y":234.97616958618164,"z":"1fa209ca.68bcc6","wires":[["7f5c15a8.18707c"]]},{"id":"7f5c15a8.18707c","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=\"auto-ip-assignment-input.vf-module-id is null\" />\n","comments":"","x":961.2738227844238,"y":235.0872664451599,"z":"1fa209ca.68bcc6","wires":[]},{"id":"12834db5.591062","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1318.225917816162,"y":1416.6784665584564,"z":"1fa209ca.68bcc6","wires":[["29c73eda.7d05a2"]]},{"id":"29c73eda.7d05a2","type":"set","name":"set vfc-to-network-role-mapping length to 0","xml":"<set>\n<parameter name='db1.vfc-to-network-role-mapping_length' value='0' />\n","comments":"","x":1581.6307373046875,"y":1416.6868569850922,"z":"1fa209ca.68bcc6","wires":[]},{"id":"11c41bfb.ee6444","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1311.345043182373,"y":1461.4404199123383,"z":"1fa209ca.68bcc6","wires":[["552ab56d.0b188c"]]},{"id":"552ab56d.0b188c","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 reading VFC_TO_NETWORK_ROLE_MAPPING table\" />\n","comments":"","x":1486.3449745178223,"y":1460.5833203792572,"z":"1fa209ca.68bcc6","wires":[]},{"id":"c539ed02.ba3e4","type":"set","name":"set pidx = 0","xml":"<set>\n\t<parameter name='pidx' value = '0' />","comments":"","x":386.44034576416016,"y":1231.1307334899902,"z":"1fa209ca.68bcc6","wires":[]},{"id":"a35d339d.d772a","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":904.6986122131348,"y":616.0595092773438,"z":"1fa209ca.68bcc6","wires":[["14b0cd1a.0ef593"]]},{"id":"14b0cd1a.0ef593","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 retrieving cloud region from AAI\" />\n","comments":"","x":1079.698585510254,"y":616.0595455169678,"z":"1fa209ca.68bcc6","wires":[]},{"id":"36a9187c.6a9578","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":913.6272087097168,"y":567.3452425003052,"z":"1fa209ca.68bcc6","wires":[["f29043a7.1a8ff"]]},{"id":"f29043a7.1a8ff","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=\"`'aic-cloud-region, '+ $generate-fqpn-input.aic-cloud-region + ' not found in AAI'`\" />\n","comments":"","x":1079.9764862060547,"y":566.6508197784424,"z":"1fa209ca.68bcc6","wires":[]},{"id":"51b64b37.cbe814","type":"for","name":"for relationship list","xml":"<for index='ridx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >\n","comments":"","outputs":1,"x":645.4286270141602,"y":807.165768623352,"z":"1fa209ca.68bcc6","wires":[["84fdeabe.693e68"]]},{"id":"a2a54490.483078","type":"get-resource","name":"get-resource: AAI cloud region","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"cloud-region\" \n\t\tkey=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND \n\t\t     cloud-region.cloud-region-id = $auto-ip-assignment-input.aic-cloud-region AND\n\t\t     depth = '0'\"\n        pfx='aai.cloud-region' >\n\n","comments":"","outputs":1,"x":685.2024040222168,"y":590.1586618423462,"z":"1fa209ca.68bcc6","wires":[["36a9187c.6a9578","a35d339d.d772a"]]},{"id":"9cb1a25.f1cd86","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2017.8971519470215,"y":1002.8968086242676,"z":"1fa209ca.68bcc6","wires":[["d3347913.1f4b98"]]},{"id":"d3347913.1f4b98","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 retrieving complex from AAI\" />\n","comments":"","x":2184.4327964782715,"y":1002.3968486785889,"z":"1fa209ca.68bcc6","wires":[]},{"id":"6df847f.69579b8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2024.3971481323242,"y":958.8968696594238,"z":"1fa209ca.68bcc6","wires":[["fe77ab8.ca0aa58"]]},{"id":"fe77ab8.ca0aa58","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=\"Complex not found in AAI\" />\n","comments":"","x":2192.175075531006,"y":959.2022171020508,"z":"1fa209ca.68bcc6","wires":[]},{"id":"ee9cbe79.9bd6a","type":"get-resource","name":"get-resource complex","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"complex\" \n\t\tkey=\"complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value\"\n    pfx='aai.complex' >\n        \n\n\n","comments":"","outputs":1,"x":1816.5436248779297,"y":958.8534126281738,"z":"1fa209ca.68bcc6","wires":[["6df847f.69579b8","9cb1a25.f1cd86"]]},{"id":"e028a80d.17a7b8","type":"switchNode","name":"switch: relationship-key","xml":"<switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>\n","comments":"","outputs":1,"x":1095.345344543457,"y":806.9526331424713,"z":"1fa209ca.68bcc6","wires":[["8a4be0cf.c0c4c"]]},{"id":"8a4be0cf.c0c4c","type":"other","name":"complex.physical-location-id","xml":"<outcome value='complex.physical-location-id'>\n","comments":"","outputs":1,"x":1351.2740859985352,"y":807.22642827034,"z":"1fa209ca.68bcc6","wires":[["8f808106.51edd"]]},{"id":"2e362ecc.38ca82","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":1763.6426086425781,"y":806.8813190460205,"z":"1fa209ca.68bcc6","wires":[["1cf1acd6.2d9d43","74eb321a.32e84c","fb6c9d13.30d6a"]]},{"id":"1cf1acd6.2d9d43","type":"set","name":"set tmp.aic-clli","xml":"<set>\n<parameter name='tmp.aic-clli' value='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`' />\n\n","comments":"","x":1968.6195220947266,"y":805.2423820495605,"z":"1fa209ca.68bcc6","wires":[]},{"id":"9f220722.b9cdc8","type":"switchNode","name":"switch cloud-region.relationship_length","xml":"<switch test='`$aai.cloud-region.relationship-list.relationship_length`'>\n","comments":"","outputs":1,"x":710.0356864929199,"y":693.6586618423462,"z":"1fa209ca.68bcc6","wires":[["5b7be5d5.ae6adc","fe44cb88.ada2d8"]]},{"id":"5b7be5d5.ae6adc","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":960.2857585483125,"y":670.1587487326728,"z":"1fa209ca.68bcc6","wires":[["21477cfd.543464"]]},{"id":"fe44cb88.ada2d8","type":"other","name":"null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":963.5357551574707,"y":719.1587839126587,"z":"1fa209ca.68bcc6","wires":[["21477cfd.543464"]]},{"id":"21477cfd.543464","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=\"cloud-region missing relationships in AAI\" />\n","comments":"","x":1135.0357627868652,"y":690.1587829589844,"z":"1fa209ca.68bcc6","wires":[]},{"id":"84fdeabe.693e68","type":"for","name":"for relationship data","xml":"<for silentFailure='false' index='rdidx' start='0' end=\"`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`\" >\n","comments":"","outputs":1,"x":870.2500228881836,"y":807.0753405094147,"z":"1fa209ca.68bcc6","wires":[["e028a80d.17a7b8"]]},{"id":"ebb5bed4.21fe4","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":409.1666717529297,"y":589.6586980819702,"z":"1fa209ca.68bcc6","wires":[["a2a54490.483078","9f220722.b9cdc8","51b64b37.cbe814","80ea343b.e57cf8"]]},{"id":"74eb321a.32e84c","type":"execute","name":"substring aic-clli to 8 chars","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>\n   <parameter name='result' value='tmp.truncated.clli8' />\n   <parameter name='string' value='`$tmp.aic-clli`' />\n   <parameter name='begin-index' value='0' />\n   <parameter name='end-index' value='8' />\n","comments":"","outputs":1,"x":2009.1664810180664,"y":853.3928115367889,"z":"1fa209ca.68bcc6","wires":[[]]},{"id":"fb6c9d13.30d6a","type":"set","name":"set generate-FQPN-input.location-clli8","xml":"<set>\n<parameter name='generate-FQPN-input.location-clli8' value='`$tmp.truncated.clli8`' />\n","comments":"","x":2046.5555038452148,"y":900.7260100841522,"z":"1fa209ca.68bcc6","wires":[]},{"id":"a9bd2cf.cf2c0d","type":"set","name":"set generate-FQPN-input.complex-region","xml":"<set>\n<parameter name='generate-FQPN-input.complex-region' value='`$aai.complex.region`' />\n","comments":"","x":1876.5000457763672,"y":1052.3927431106567,"z":"1fa209ca.68bcc6","wires":[]},{"id":"8f808106.51edd","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1584.166576385498,"y":807.0594577789307,"z":"1fa209ca.68bcc6","wires":[["2e362ecc.38ca82","ee9cbe79.9bd6a","a9bd2cf.cf2c0d"]]},{"id":"5b9e9ca4.d8f764","type":"comment","name":"db1.vfc-to-network-role-mapping[]","info":"","comments":"","x":591.3928375244141,"y":1465.6071498394012,"z":"1fa209ca.68bcc6","wires":[]},{"id":"2285643b.9922cc","type":"outcome","name":"6","xml":"<outcome value='6'>\n","comments":"","outputs":1,"x":2583.39310836792,"y":3041.0481295585632,"z":"1fa209ca.68bcc6","wires":[["438426c0.cc0468"]]},{"id":"e5e94945.c9a578","type":"switchNode","name":"switch: ipv4-count > 0","xml":"<switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-count &gt; 0`'>\n","comments":"","outputs":1,"x":3175.11922454834,"y":2714.6307187080383,"z":"1fa209ca.68bcc6","wires":[["d2d209d7.8ed748"]]},{"id":"c269e9.de2c4618","type":"switchNode","name":"switch: ipv6-count > 0","xml":"<switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-count &gt; 0`'>\n","comments":"","outputs":1,"x":3167.6191329956055,"y":3041.4887051582336,"z":"1fa209ca.68bcc6","wires":[["45ccbd96.e468b4"]]},{"id":"45ccbd96.e468b4","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3366.666702270508,"y":3042.012421131134,"z":"1fa209ca.68bcc6","wires":[["c760b117.8b827"]]},{"id":"d2d209d7.8ed748","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3370.02396774292,"y":2714.6788535118103,"z":"1fa209ca.68bcc6","wires":[["4266f4eb.802e3c"]]},{"id":"f85e4bcd.6f1478","type":"outcome","name":"N","xml":"<outcome value='N'>\n","comments":"","outputs":1,"x":2974.7621841430664,"y":3041.8219780921936,"z":"1fa209ca.68bcc6","wires":[["c269e9.de2c4618"]]},{"id":"438426c0.cc0468","type":"switchNode","name":"switch ipv6-use-dhcp","xml":"<switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`'>\n","comments":"","outputs":1,"x":2774.762275695801,"y":3041.155140399933,"z":"1fa209ca.68bcc6","wires":[["f85e4bcd.6f1478"]]},{"id":"9fba10d1.1caf7","type":"for","name":"for vm-index in vm-count","xml":"<for index='vm-index' start='0' end='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >\n","comments":"","outputs":1,"x":3806.45263671875,"y":2981.6785564422607,"z":"1fa209ca.68bcc6","wires":[["bfe01ab7.6c8a88"]]},{"id":"bfe01ab7.6c8a88","type":"for","name":"for ipv4-index in ipv4-ip-count","xml":"<for index='ipv4-index' start='0' end='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-count`' >\n","comments":"","outputs":1,"x":4093.167495727539,"y":2981.3928303718567,"z":"1fa209ca.68bcc6","wires":[["ced3eb0a.3e32f8"]]},{"id":"80ea343b.e57cf8","type":"set","name":"set generate-FQPN-input.aic-cloud-region","xml":"<set>\n<parameter name='generate-FQPN-input.aic-cloud-region' \n\tvalue='`$auto-ip-assignment-input.aic-cloud-region`' />\n","comments":"","x":710.547607421875,"y":972.9165382385254,"z":"1fa209ca.68bcc6","wires":[]},{"id":"28c25d32.2a7872","type":"set","name":"set eipam-ip-block.plans[].requests[] SUPPLEMENTAL DATA","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'\n    value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'\n    value='FIXED' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'\n    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'\n    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />    ","comments":"","x":4946.429328918457,"y":3501.821168422699,"z":"1fa209ca.68bcc6","wires":[]},{"id":"92fb65d7.62b1e8","type":"set","name":"set qridx = 0","xml":"<set>\n\t<parameter name='qridx' value = '0' />","comments":"","x":391.4166946411133,"y":1181.3452701568604,"z":"1fa209ca.68bcc6","wires":[]},{"id":"b31cbbb7.684048","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":4571.095596313477,"y":3439.487681865692,"z":"1fa209ca.68bcc6","wires":[["e83ff5ab.6145c8","b8f985fd.a12bc8","454ab1a0.010a1","28c25d32.2a7872","f04325bc.877968","fad632eb.6a9c1"]]},{"id":"fcd641c6.e94f6","type":"call","name":"call: generate-FQPN","xml":"<call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >","comments":"","outputs":1,"x":3791.381187438965,"y":3105.6790585517883,"z":"1fa209ca.68bcc6","wires":[["b9a7ef28.c44b6"]]},{"id":"b9a7ef28.c44b6","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":3987.2264289855957,"y":3106.1195845603943,"z":"1fa209ca.68bcc6","wires":[["ef2f80a6.d9df2"]]},{"id":"ef2f80a6.d9df2","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=\"`'An error occured while generating FQPN: '+ $error-message`\" />\n","comments":"","x":4148.226428985596,"y":3106.1195845603943,"z":"1fa209ca.68bcc6","wires":[]},{"id":"c760b117.8b827","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3544.5243759155273,"y":3041.821900844574,"z":"1fa209ca.68bcc6","wires":[["fcd641c6.e94f6","a1756b5f.a813c8","f980c3d4.b9fbc","761e238c.5d346c","af240f9.e382ff","c276cfd9.9bcae"]]},{"id":"a1756b5f.a813c8","type":"set","name":"set generate-FQPN-input.plan-name, network-role, subnet-role, vrf-name","xml":"<set>\n<parameter name='generate-FQPN-input.plan-name'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />\n<parameter name='generate-FQPN-input.network-role'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />\n<parameter name='generate-FQPN-input.subnet-role'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />\n<parameter name='generate-FQPN-input.vrf-name'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-vrf-name`' />\n\n<!--\n<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' />\n<parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />\n-->","comments":"","x":3952.66707611084,"y":3041.5838437080383,"z":"1fa209ca.68bcc6","wires":[]},{"id":"f661c9eb.ebf8b8","type":"for","name":"for each vm-type","xml":"<for index='vm-type-index' start='0' end='`$db1.vf-module-to-vfc-mapping_length`' >\n","comments":"","outputs":1,"x":419.7501907348633,"y":3852.988638162613,"z":"1fa209ca.68bcc6","wires":[["2b988a1b.7f7bd6"]]},{"id":"13900383.cbb11c","type":"for","name":"for each network-role","xml":"<for index='network-role-index' start='0' end='`$db1.vfc-to-network-role-mapping_length`' >\n","comments":"","outputs":1,"x":846.5959014892578,"y":4062.5155210494995,"z":"1fa209ca.68bcc6","wires":[["3ba19fcb.20327"]]},{"id":"3ba19fcb.20327","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1073.4883880615234,"y":4062.1865224838257,"z":"1fa209ca.68bcc6","wires":[["1c79b3e4.57ddbc","e3bac480.22c4f8","b272fd59.bbf0b","91540bf0.cd70b8","b6c1cfe8.74caf"]]},{"id":"3ae51def.6f5252","type":"switchNode","name":"switch ipv4-ip-version","xml":"<switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>\n","comments":"","outputs":1,"x":2342.576271057129,"y":4877.321943998337,"z":"1fa209ca.68bcc6","wires":[["ba642375.134b4"]]},{"id":"ba642375.134b4","type":"other","name":"4","xml":"<outcome value='4'>\n","comments":"","outputs":1,"x":2533.5760650634766,"y":4877.417116880417,"z":"1fa209ca.68bcc6","wires":[["770e67e8.a971b8"]]},{"id":"770e67e8.a971b8","type":"switchNode","name":"switch ipv4-use-dhcp","xml":"<switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`'>\n","comments":"","outputs":1,"x":2719.5957794189453,"y":4876.880890607834,"z":"1fa209ca.68bcc6","wires":[["99ffb23a.1b79d"]]},{"id":"99ffb23a.1b79d","type":"outcome","name":"N","xml":"<outcome value='N'>\n","comments":"","outputs":1,"x":2915.84566116333,"y":4877.202483892441,"z":"1fa209ca.68bcc6","wires":[["fdc7524b.4f0ae"]]},{"id":"b272fd59.bbf0b","type":"set","name":"set tmp.network-role.found = false","xml":"<set>\n\t<parameter name='tmp.network-role.found' value = 'false' />","comments":"","x":1366.8337860107422,"y":4167.166709899902,"z":"1fa209ca.68bcc6","wires":[]},{"id":"fdc7524b.4f0ae","type":"switchNode","name":"switch: ipv4-floating-count > 0","xml":"<switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-floating-count &gt; 0`'>\n","comments":"","outputs":1,"x":3150.7387886047363,"y":4876.595235586166,"z":"1fa209ca.68bcc6","wires":[["98938161.3fea8"]]},{"id":"98938161.3fea8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3373.786449432373,"y":4876.643157243729,"z":"1fa209ca.68bcc6","wires":[["9dfd2540.737068"]]},{"id":"32938572.9de37a","type":"for","name":"for each q","xml":"<for index='q' start='0' end='`$tmp.network-role-query-results_length`' >\n","comments":"","outputs":1,"x":1670.0479354858398,"y":4277.179706811905,"z":"1fa209ca.68bcc6","wires":[["2b9ad069.c1331","9525c570.063288"]]},{"id":"d16be293.6196a","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2180.4646530151367,"y":4323.596601724625,"z":"1fa209ca.68bcc6","wires":[["da60e692.bfb7a8"]]},{"id":"da60e692.bfb7a8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2343.2146224975586,"y":4323.596543550491,"z":"1fa209ca.68bcc6","wires":[["b918599d.55a5c8","43751108.a7a64","7a257d71.1b3624","d7779888.5f9488"]]},{"id":"b918599d.55a5c8","type":"set","name":"set generate-FQPN-input.network-name","xml":"<set>\n<parameter name='generate-FQPN-input.network-name' \n\tvalue='`$tmp.network-role-query-results[$q].l3-network.network-name`' />\n<parameter name='generate-FQPN-input.network-id' \n\tvalue='`$tmp.network-role-query-results[$q].l3-network.network-id`' />","comments":"","x":2624.9646224975586,"y":4323.846543550491,"z":"1fa209ca.68bcc6","wires":[]},{"id":"43751108.a7a64","type":"set","name":"set tmp.network-role.found = true","xml":"<set>\n\t<parameter name='tmp.network-role.found' value = 'true' />","comments":"","x":2605.7146072387695,"y":4371.346486330032,"z":"1fa209ca.68bcc6","wires":[]},{"id":"2d94833e.63e13c","type":"switchNode","name":"switch tmp.network-role.found","xml":"<switch test='`$tmp.network-role.found`'>\n","comments":"","outputs":1,"x":1559.1431427001953,"y":4617.822324752808,"z":"1fa209ca.68bcc6","wires":[["b76e9a1f.d92a18","2cf6eef6.fd6c52"]]},{"id":"b76e9a1f.d92a18","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1783.809627532959,"y":4617.822783470154,"z":"1fa209ca.68bcc6","wires":[["5fd32b63.2b9584"]]},{"id":"cbd8150c.f07008","type":"comment","name":"Lopping for floating ips","info":"","comments":"","x":518.2620811462402,"y":3807.9170706272125,"z":"1fa209ca.68bcc6","wires":[]},{"id":"276a3823.9093b8","type":"set","name":"set ridx = 0","xml":"<set>\n<parameter name='ridx' value='0' />\n","comments":"","x":2361.833335876465,"y":2622.7740292549133,"z":"1fa209ca.68bcc6","wires":[]},{"id":"e83ff5ab.6145c8","type":"set","name":"increment ridx","xml":"<set>\n<parameter name='ridx' value='`$ridx + 1`' />\n","comments":"","x":4803.250274658203,"y":3839.4991660118103,"z":"1fa209ca.68bcc6","wires":[]},{"id":"b8f985fd.a12bc8","type":"set","name":"set eipam-ip-block.plans[].requests_length","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />\n","comments":"","x":4890.250595092773,"y":3902.356273174286,"z":"1fa209ca.68bcc6","wires":[]},{"id":"cac0d7fa.ff6178","type":"call","name":"call: generate-FQPN","xml":"<call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >","comments":"","outputs":1,"x":3795.928970336914,"y":4934.489298343658,"z":"1fa209ca.68bcc6","wires":[["8d739f0d.2f3e9"]]},{"id":"8d739f0d.2f3e9","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":3991.774211883545,"y":4934.929824352264,"z":"1fa209ca.68bcc6","wires":[["c853a009.e46a3"]]},{"id":"c853a009.e46a3","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=\"`'An error occured while generating FQPN: '+ $error-message`\" />\n","comments":"","x":4152.774211883545,"y":4934.929824352264,"z":"1fa209ca.68bcc6","wires":[]},{"id":"9dfd2540.737068","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3545.2148780822754,"y":4876.775269269943,"z":"1fa209ca.68bcc6","wires":[["cac0d7fa.ff6178","1cd5a66.7711b5a","2c1c79b7.b28ea6","267fa7c8.b7bda8","f9459525.385678","c0a42027.da922"]]},{"id":"1cd5a66.7711b5a","type":"set","name":"set generate-FQPN-input.plan-name, network-role, subnet-role, vrf-name","xml":"<set>\n<parameter name='generate-FQPN-input.plan-name'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />\n<parameter name='generate-FQPN-input.subnet-role'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />\n<parameter name='generate-FQPN-input.network-role'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />\n<parameter name='generate-FQPN-input.vrf-name'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-vrf-name`' />\n\n<!--\n<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' />\n<parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />\n-->","comments":"","x":3957.2144775390625,"y":4877.060610294342,"z":"1fa209ca.68bcc6","wires":[]},{"id":"8e6077b8.e4d448","type":"call","name":"call: generate-FQPN","xml":"<call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >","comments":"","outputs":1,"x":3802.5956497192383,"y":5245.894829750061,"z":"1fa209ca.68bcc6","wires":[["9bef6d5.5154c9"]]},{"id":"9bef6d5.5154c9","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":3994.440891265869,"y":5246.335355758667,"z":"1fa209ca.68bcc6","wires":[["29bd829e.c1928e"]]},{"id":"29bd829e.c1928e","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=\"`'An error occured while generating FQPN: '+ $error-message`\" />\n","comments":"","x":4155.440891265869,"y":5246.335355758667,"z":"1fa209ca.68bcc6","wires":[]},{"id":"734bf358.b8c19c","type":"set","name":"set eipam-ip-block.plans[].plan-name, address-family","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].plan-name'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />\n<parameter name='eipam-ip-block.plans[$pidx].address-family'\n    value=\"`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`\" />","comments":"","x":3904.2145042419434,"y":5350.704384326935,"z":"1fa209ca.68bcc6","wires":[]},{"id":"b4e09caf.66c66","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3532.2147521972656,"y":5183.18058514595,"z":"1fa209ca.68bcc6","wires":[["8e6077b8.e4d448","b2920be2.27bef8","734bf358.b8c19c","80af71b0.d1d94","f9459525.385678","71ccdccd.6f3db4"]]},{"id":"b2920be2.27bef8","type":"set","name":"set generate-FQPN-input.plan-name, network-role, subnet-role, vrf-name","xml":"<set>\n<parameter name='generate-FQPN-input.plan-name'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />\n<parameter name='generate-FQPN-input.vrf-name'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-vrf-name`' />\n<parameter name='generate-FQPN-input.subnet-role' \n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />\n<parameter name='generate-FQPN-input.network-role'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />\n\n<!--\n<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' />\n<parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />\n-->","comments":"","x":3965.214511871338,"y":5184.132459640503,"z":"1fa209ca.68bcc6","wires":[]},{"id":"780bb10d.855f4","type":"set","name":"increment ridx","xml":"<set>\n<parameter name='ridx' value='`$ridx + 1`' />\n","comments":"","x":3982.667449951172,"y":5831.13201212883,"z":"1fa209ca.68bcc6","wires":[]},{"id":"7dfc98af.30f1d8","type":"set","name":"set eipam-ip-block.plans[].requests_length","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />\n","comments":"","x":4069.667434692383,"y":5895.607931852341,"z":"1fa209ca.68bcc6","wires":[]},{"id":"2c1c79b7.b28ea6","type":"set","name":"set ip-version, use-dhcp","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />","comments":"","x":3811.3101196289062,"y":5089.6318254470825,"z":"1fa209ca.68bcc6","wires":[]},{"id":"6c18c680.514658","type":"set","name":"set ridx = 0","xml":"<set>\n<parameter name='ridx' value='0' />\n","comments":"","x":2314.3577880859375,"y":4760.751270055771,"z":"1fa209ca.68bcc6","wires":[]},{"id":"b2c848c5.019c18","type":"switchNode","name":"switch ipv6-ip-version","xml":"<switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>\n","comments":"","outputs":1,"x":2350.548126220703,"y":5183.489090204239,"z":"1fa209ca.68bcc6","wires":[["e37bbb38.1d0cf8"]]},{"id":"e37bbb38.1d0cf8","type":"other","name":"6","xml":"<outcome value='6'>\n","comments":"","outputs":1,"x":2541.547920227051,"y":5183.584263086319,"z":"1fa209ca.68bcc6","wires":[["e631b133.609ed"]]},{"id":"e631b133.609ed","type":"switchNode","name":"switch ipv6-use-dhcp","xml":"<switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`'>\n","comments":"","outputs":1,"x":2727.5676345825195,"y":5183.048036813736,"z":"1fa209ca.68bcc6","wires":[["b5b2cf39.285c2"]]},{"id":"b5b2cf39.285c2","type":"outcome","name":"N","xml":"<outcome value='N'>\n","comments":"","outputs":1,"x":2923.8175163269043,"y":5183.369630098343,"z":"1fa209ca.68bcc6","wires":[["f59678a.6d15988"]]},{"id":"f59678a.6d15988","type":"switchNode","name":"switch: ipv6-floating-count > 0","xml":"<switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-floating-count &gt; 0`'>\n","comments":"","outputs":1,"x":3151.3773040771484,"y":5182.929894685745,"z":"1fa209ca.68bcc6","wires":[["efdbdf0e.b28f6"]]},{"id":"efdbdf0e.b28f6","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3364.424964904785,"y":5182.9778163433075,"z":"1fa209ca.68bcc6","wires":[["b4e09caf.66c66"]]},{"id":"ec903613.4cc188","type":"execute","name":"call EIPAM assignIPAddress","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"assignIPAddress\">","comments":"","outputs":1,"x":1315.5126495361328,"y":5343.618245124817,"z":"1fa209ca.68bcc6","wires":[["4ccc4394.028a0c"]]},{"id":"4ccc4394.028a0c","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":1529.5126495361328,"y":5343.618245124817,"z":"1fa209ca.68bcc6","wires":[["dccc6100.bb124"]]},{"id":"dccc6100.bb124","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=\"`'An error occured while obtaining ip addresses from EIPAM: ' + $error-message`\" />\n","comments":"","x":1690.5126495361328,"y":5343.618245124817,"z":"1fa209ca.68bcc6","wires":[]},{"id":"d7916c77.af658","type":"switchNode","name":"switch: eipam-ip-block.plans_length >0","xml":"<switch test='`$eipam-ip-block.plans_length &gt; 0`'>\n","comments":"","outputs":1,"x":663.8218536376953,"y":5295.653888702393,"z":"1fa209ca.68bcc6","wires":[["9e541539.767c98"]]},{"id":"9e541539.767c98","type":"other","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":910.6196784973145,"y":5295.677324295044,"z":"1fa209ca.68bcc6","wires":[["f195efcb.8c3b5"]]},{"id":"37e47319.7ebcac","type":"comment","name":"generate-FQPN-input","info":"","comments":"","x":901.7381057739258,"y":991.4879360198975,"z":"1fa209ca.68bcc6","wires":[]},{"id":"f281ac4a.e7a7c","type":"comment","name":"generate-FQPN-input","info":"","comments":"","x":2273.1666259765625,"y":891.7261304855347,"z":"1fa209ca.68bcc6","wires":[]},{"id":"a22f243a.0b3c48","type":"comment","name":"generate-FQPN-input","info":"","comments":"","x":1976.499870300293,"y":1076.726095199585,"z":"1fa209ca.68bcc6","wires":[]},{"id":"5684a644.981d58","type":"comment","name":"generate-FQPN-input","info":"","comments":"","x":2039.5953674316406,"y":2511.7261209487915,"z":"1fa209ca.68bcc6","wires":[]},{"id":"cfd2ef69.0e48f","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2150.8570976257324,"y":2565.0676975250244,"z":"1fa209ca.68bcc6","wires":[["5a553f67.c7601","276a3823.9093b8","44068065.7c3bf","99c83f4.d51ddc","4ac0f04f.defe"]]},{"id":"7794aa4e.66c1c4","type":"call","name":"call: generate-FQPN","xml":"<call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >","comments":"","outputs":1,"x":3798.833808898926,"y":2766.6313948631287,"z":"1fa209ca.68bcc6","wires":[["c7e2ac3f.4c94f"]]},{"id":"c7e2ac3f.4c94f","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":3993.6790504455566,"y":2767.0719208717346,"z":"1fa209ca.68bcc6","wires":[["b7d8934d.12e39"]]},{"id":"b7d8934d.12e39","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=\"`'An error occured while generating FQPN: '+ $error-message`\" />\n","comments":"","x":4154.679050445557,"y":2767.0719208717346,"z":"1fa209ca.68bcc6","wires":[]},{"id":"aeda21f6.f8222","type":"set","name":"set generate-FQPN-input.plan-name, network-role, subnet-role,vrf-name","xml":"<set>\n<parameter name='generate-FQPN-input.plan-name'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />\n<parameter name='generate-FQPN-input.network-role'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />\n<parameter name='generate-FQPN-input.subnet-role'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />\n<parameter name='generate-FQPN-input.vrf-name'\n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-vrf-name`' />\n\t\n<!--\n<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' />\n<parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />\n-->\n","comments":"","x":3958.5478515625,"y":2713.8689494132996,"z":"1fa209ca.68bcc6","wires":[]},{"id":"4266f4eb.802e3c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3550.9766159057617,"y":2713.440763950348,"z":"1fa209ca.68bcc6","wires":[["aeda21f6.f8222","7794aa4e.66c1c4","9fba10d1.1caf7","b63d91fd.67a5d","86e1d7f6.faf318","b8156cb0.f8602"]]},{"id":"454ab1a0.010a1","type":"set","name":"set pools[] to generate-FQPN-output","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'\n    value='generate-FQPN-output.' />\n","comments":"","x":4872.000450134277,"y":3439.821309566498,"z":"1fa209ca.68bcc6","wires":[]},{"id":"f980c3d4.b9fbc","type":"set","name":"set eipam-ip-block.plans[].plan-name, address-family (ipv6)","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].plan-name'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />\n<parameter name='eipam-ip-block.plans[$pidx].address-family'\n    value=\"`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`\" />","comments":"","x":3910.3331718444824,"y":3159.0597863197327,"z":"1fa209ca.68bcc6","wires":[]},{"id":"b63d91fd.67a5d","type":"set","name":"set eipam-ip-block.plans[].plan-name, address-family (ipv4)","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].plan-name'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />\n<parameter name='eipam-ip-block.plans[$pidx].address-family'\n    value=\"`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`\" />","comments":"","x":3918.5001831054688,"y":2820.059724330902,"z":"1fa209ca.68bcc6","wires":[]},{"id":"761e238c.5d346c","type":"for","name":"for vm-index in vm-count","xml":"<for index='vm-index' start='0' end='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >\n","comments":"","outputs":1,"x":3808.47615814209,"y":3323.6309628486633,"z":"1fa209ca.68bcc6","wires":[["85701c73.74435"]]},{"id":"85701c73.74435","type":"for","name":"for ipv6-index in ipv6-count","xml":"<for index='ipv6-index' start='0' end='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-count`' >\n","comments":"","outputs":1,"x":4084.1430282592773,"y":3323.8214869499207,"z":"1fa209ca.68bcc6","wires":[["a2a2550d.0dbb68"]]},{"id":"267fa7c8.b7bda8","type":"set","name":"set eipam-ip-block.plans[].plan-name, address-family","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].plan-name'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />\n<parameter name='eipam-ip-block.plans[$pidx].address-family'\n    value=\"`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`\" />","comments":"","x":3897.833740234375,"y":4988.060574054718,"z":"1fa209ca.68bcc6","wires":[]},{"id":"ced3eb0a.3e32f8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":4359.642631530762,"y":2981.0122776031494,"z":"1fa209ca.68bcc6","wires":[["288a64fb.4485cc","b31cbbb7.684048","54f2b045.0b32"]]},{"id":"288a64fb.4485cc","type":"set","name":"set ip-version, use-dhcp","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />","comments":"","x":4598.9763107299805,"y":2981.0122985839844,"z":"1fa209ca.68bcc6","wires":[]},{"id":"4cd8a5e7.d7793c","type":"set","name":"set ip-version, use-dhcp","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />","comments":"","x":4592.33349609375,"y":3323.3930830955505,"z":"1fa209ca.68bcc6","wires":[]},{"id":"a2a2550d.0dbb68","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":4329.000061035156,"y":3323.3930888175964,"z":"1fa209ca.68bcc6","wires":[["4cd8a5e7.d7793c","b31cbbb7.684048","e26be7e0.c31918"]]},{"id":"4eb81c0f.22ac24","type":"set","name":"set eipam-ip-block.plans[].requests[] SUPPLEMENTAL DATA","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'\n    value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'\n    value='VIP' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].group-number'\n    value='1' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'\n    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'\n    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />    ","comments":"","x":4125.310096740723,"y":5594.061890363693,"z":"1fa209ca.68bcc6","wires":[]},{"id":"80af71b0.d1d94","type":"set","name":"set ip-version, use-dhcp","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`' />\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />","comments":"","x":3813.3338890075684,"y":5402.727821826935,"z":"1fa209ca.68bcc6","wires":[]},{"id":"6dd3e67.6311b18","type":"set","name":"set pools[] to generate-FQPN-output","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'\n    value='generate-FQPN-output.' />\n","comments":"","x":4051.738525390625,"y":5534.013761281967,"z":"1fa209ca.68bcc6","wires":[]},{"id":"f9459525.385678","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3770.8340377807617,"y":5534.060873746872,"z":"1fa209ca.68bcc6","wires":[["4eb81c0f.22ac24","6dd3e67.6311b18","780bb10d.855f4","7dfc98af.30f1d8","218a8cf.c29d374"]]},{"id":"5fd32b63.2b9584","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1934.9281692504883,"y":2079.250346183777,"z":"1fa209ca.68bcc6","wires":[["6a107bfb.0148f4","d317fff.71254","b3035c24.c4ddd","4a0e7a3a.fe5604","5934557f.f3fedc","cd8de2f4.dd7dd","cfd2ef69.0e48f","de878648.aad968"]]},{"id":"6a107bfb.0148f4","type":"set","name":"set query-aai-l3-network-by-network-role-input","xml":"<set>\n<parameter name='query-aai-l3-network-by-network-role-input.aic-cloud-region' \n\tvalue='`$auto-ip-assignment-input.aic-cloud-region`' />\n<parameter name='query-aai-l3-network-by-network-role-input.service-instance-id' \n\tvalue='`$auto-ip-assignment-input.service-instance-id`' />\n<parameter name='query-aai-l3-network-by-network-role-input.network-role' \n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />\n\t\n<!--\nfilter options: service-instance-id, aic-cloud-region, null, Other (or any string)\n    - null or Other will filter by aic-cloud-region first, then service-instance-id\n<parameter name='query-aai-l3-network-by-network-role-input.filter' \n\tvalue='service-instance-id' />\n-->","comments":"","x":2268.2614135742188,"y":2079.05961894989,"z":"1fa209ca.68bcc6","wires":[]},{"id":"d317fff.71254","type":"call","name":"call: query-aai-l3-network-by-network-role","xml":"<call module='GENERIC-RESOURCE-API' rpc='query-aai-l3-network-by-network-role' mode='sync' >","comments":"","outputs":1,"x":2251.5472869873047,"y":2129.6310777664185,"z":"1fa209ca.68bcc6","wires":[["ec951ac8.e48788"]]},{"id":"b3035c24.c4ddd","type":"set","name":"set generate-FQPN-input.network-name","xml":"<set>\n<parameter name='generate-FQPN-input.network-name' \n\tvalue='`$query-aai-l3-network-by-network-role-output.l3-network.network-name`' />\n<parameter name='generate-FQPN-input.network-id' \n\tvalue='`$query-aai-l3-network-by-network-role-output.l3-network.network-id`' />","comments":"","x":2245.7375259399414,"y":2181.440981864929,"z":"1fa209ca.68bcc6","wires":[]},{"id":"4a0e7a3a.fe5604","type":"set","name":"increment qridx","xml":"<set>\n<parameter name='qridx' value='`$qridx + 1`' />\n\t","comments":"","x":2174.7258071899414,"y":2333.2622652053833,"z":"1fa209ca.68bcc6","wires":[]},{"id":"5934557f.f3fedc","type":"set","name":"set eipam-ip-block.plans[$pidx].l3-network","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].l3-network.' \n\tvalue='query-aai-l3-network-by-network-role-output.l3-network.' />","comments":"","x":2253.7375259399414,"y":2282.488363265991,"z":"1fa209ca.68bcc6","wires":[]},{"id":"ec951ac8.e48788","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2514.761459350586,"y":2129.095410346985,"z":"1fa209ca.68bcc6","wires":[["42265866.4df2b8"]]},{"id":"42265866.4df2b8","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=\"`'An error occured while querying AAI to retrieve l3-network by network-role: ' + $error-message`\" />\n","comments":"","x":2675.761459350586,"y":2129.095410346985,"z":"1fa209ca.68bcc6","wires":[]},{"id":"cd8de2f4.dd7dd","type":"set","name":"set tmp.network-role-query-results_length","xml":"<set>\n<parameter name='tmp.network-role-query-results_length' value='`$qridx`' />","comments":"","x":2255.8209381103516,"y":2380.500467300415,"z":"1fa209ca.68bcc6","wires":[]},{"id":"9572481d.426008","type":"set","name":"intialize plans_length, query-aai.output","xml":"<set>\n\t<parameter name='eipam-ip-block.plans_length' value = '0' />\n\t<parameter name='query-aai-l3-network-by-network-role-output.' value = '' />","comments":"","x":471.3333282470703,"y":1128.7261352539062,"z":"1fa209ca.68bcc6","wires":[]},{"id":"c18d23f9.dfb6a","type":"for","name":"for each network-role","xml":"<for index='network-role-index' start='0' end='`$db1.vfc-to-network-role-mapping_length`' >\n","comments":"","outputs":1,"x":849.2024078369141,"y":1551.5118427276611,"z":"1fa209ca.68bcc6","wires":[["fe724d5a.448e8"]]},{"id":"fe724d5a.448e8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1055.6425857543945,"y":1551.5080301761627,"z":"1fa209ca.68bcc6","wires":[["a6c23102.c6382","f7de5d3e.8ee25","ae970313.da058","e47d816b.04ff5","36b7f160.7d80ce","fc0d7098.ec8bd"]]},{"id":"ae970313.da058","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1271.511703491211,"y":1795.1029949188232,"z":"1fa209ca.68bcc6","wires":[["901ab3e6.b6379","ea14bac6.97b598"]]},{"id":"46decb10.a2e294","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1746.4283714294434,"y":2078.4004096090794,"z":"1fa209ca.68bcc6","wires":[["5fd32b63.2b9584"]]},{"id":"901ab3e6.b6379","type":"switchNode","name":"switch tmp.network-role.found","xml":"<switch test='`$tmp.network-role.found`'>\n","comments":"","outputs":1,"x":1520.7619934082031,"y":2078.7333946228027,"z":"1fa209ca.68bcc6","wires":[["46decb10.a2e294","b602289c.28c628"]]},{"id":"debcbc94.182ce","type":"for","name":"for each q","xml":"<for index='q' start='0' end='`$tmp.network-role-query-results_length`' >\n","comments":"","outputs":1,"x":1594.9524002075195,"y":1795.2814807891846,"z":"1fa209ca.68bcc6","wires":[["99f40c66.4c79b","2f21d390.49b6bc"]]},{"id":"1ec2226b.30207e","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2112.7024841308594,"y":1873.6029319763184,"z":"1fa209ca.68bcc6","wires":[["30192d9d.398bb2"]]},{"id":"30192d9d.398bb2","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2275.4524536132812,"y":1873.602873802185,"z":"1fa209ca.68bcc6","wires":[["d1608cb7.69be1","c6ace3f8.10c9","da17823d.ca396","6082a89a.d21ec8"]]},{"id":"a6c23102.c6382","type":"set","name":"set tmp.network-role.found = false","xml":"<set>\n\t<parameter name='tmp.network-role.found' value = 'false' />","comments":"","x":1335.178337097168,"y":1648.5199508666992,"z":"1fa209ca.68bcc6","wires":[]},{"id":"620ae3a1.712f0c","type":"set","name":"set tmp.network-role-query-results_length = 0","xml":"<set>\n<parameter name='tmp.network-role-query-results_length' value='0' />","comments":"","x":494.1666717529297,"y":1080.0595092773438,"z":"1fa209ca.68bcc6","wires":[]},{"id":"f7de5d3e.8ee25","type":"set","name":"set tmp.plan-index-to-be-incremented = false","xml":"<set>\n<parameter name='tmp.plan-index-to-be-incremented' value='false' />\n","comments":"","x":1366.630973815918,"y":1597.9882307052612,"z":"1fa209ca.68bcc6","wires":[]},{"id":"86e1d7f6.faf318","type":"set","name":"set tmp.plan-index-to-be-incremented = true","xml":"<set>\n<parameter name='tmp.plan-index-to-be-incremented' value='true' />\n","comments":"","x":3872.214683532715,"y":2881.4881405830383,"z":"1fa209ca.68bcc6","wires":[]},{"id":"af240f9.e382ff","type":"set","name":"set tmp.plan-index-to-be-incremented = true","xml":"<set>\n<parameter name='tmp.plan-index-to-be-incremented' value='true' />\n","comments":"","x":3867.07186126709,"y":3211.7737851142883,"z":"1fa209ca.68bcc6","wires":[]},{"id":"e6fa96b7.a2c818","type":"set","name":"increment eipam-ip-block.plans_length","xml":"<set>\n<parameter name=\"eipam-ip-block.plans_length\" value=\"`$pidx`\"/>","comments":"","x":3089.5003356933594,"y":3379.5594997406006,"z":"1fa209ca.68bcc6","wires":[]},{"id":"3b242f42.f792","type":"set","name":"set pidx++","xml":"<set>\n<parameter name='pidx' value='`$pidx + 1`' />\n","comments":"","x":2999.50040435791,"y":3324.559500694275,"z":"1fa209ca.68bcc6","wires":[]},{"id":"540527ff.4b5538","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2836.1670684814453,"y":3324.2264165878296,"z":"1fa209ca.68bcc6","wires":[["3b242f42.f792","e6fa96b7.a2c818"]]},{"id":"44068065.7c3bf","type":"switchNode","name":"switch tmp.plan-index-to-be-incremented","xml":"<switch test='`$tmp.plan-index-to-be-incremented`'>\n","comments":"","outputs":1,"x":2428.071823120117,"y":3325.2736988067627,"z":"1fa209ca.68bcc6","wires":[["ebb68603.fca938"]]},{"id":"ebb68603.fca938","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2683.7860565185547,"y":3324.8452320098877,"z":"1fa209ca.68bcc6","wires":[["540527ff.4b5538"]]},{"id":"c0a42027.da922","type":"set","name":"set tmp.plan-index-to-be-incremented = true","xml":"<set>\n<parameter name='tmp.plan-index-to-be-incremented' value='true' />\n","comments":"","x":3873.0003051757812,"y":5034.2270402908325,"z":"1fa209ca.68bcc6","wires":[]},{"id":"71ccdccd.6f3db4","type":"set","name":"set tmp.plan-index-to-be-incremented = true","xml":"<set>\n<parameter name='tmp.plan-index-to-be-incremented' value='true' />\n","comments":"","x":3876.0956077575684,"y":5293.917274951935,"z":"1fa209ca.68bcc6","wires":[]},{"id":"c4017219.98fec","type":"set","name":"increment eipam-ip-block.plans_length","xml":"<set>\n<parameter name=\"eipam-ip-block.plans_length\" value=\"`$pidx`\"/>","comments":"","x":3064.762252807617,"y":5520.989094495773,"z":"1fa209ca.68bcc6","wires":[]},{"id":"d50e10f8.6600e","type":"set","name":"set pidx++","xml":"<set>\n<parameter name='pidx' value='`$pidx + 1`' />\n","comments":"","x":2974.7622680664062,"y":5440.9891221523285,"z":"1fa209ca.68bcc6","wires":[]},{"id":"2bf10e53.549e32","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2811.4289321899414,"y":5440.656038045883,"z":"1fa209ca.68bcc6","wires":[["d50e10f8.6600e","c4017219.98fec"]]},{"id":"3718704a.29e8","type":"switchNode","name":"switch tmp.plan-index-to-be-incremented","xml":"<switch test='`$tmp.plan-index-to-be-incremented`'>\n","comments":"","outputs":1,"x":2396.3336868286133,"y":5441.703320264816,"z":"1fa209ca.68bcc6","wires":[["5a65f76b.f145e8"]]},{"id":"5a65f76b.f145e8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2659.047920227051,"y":5441.274853467941,"z":"1fa209ca.68bcc6","wires":[["2bf10e53.549e32"]]},{"id":"e3bac480.22c4f8","type":"set","name":"set tmp.plan-index-to-be-incremented = false","xml":"<set>\n<parameter name='tmp.plan-index-to-be-incremented' value='false' />\n","comments":"","x":1398.3097915649414,"y":4114.060183525085,"z":"1fa209ca.68bcc6","wires":[]},{"id":"848cc7f8.6ad808","type":"get-resource","name":"get VF_MODULE_TO_VFC_MAPPING (vm_count > 0)","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n\tkey='SELECT * from VF_MODULE_TO_VFC_MAPPING WHERE vf_module_customization_uuid = $auto-ip-assignment-input.vf-module.model-customization-uuid \n\t\tAND vm_count > 0'\n  pfx='db1.vf-module-to-vfc-mapping[]'>\n\n","comments":"","outputs":1,"x":538.1666717529297,"y":475.7737865447998,"z":"1fa209ca.68bcc6","wires":[["3593ee13.1daa82","d347b8fb.2d6ba8"]]},{"id":"69acb259.3743cc","type":"get-resource","name":"get VFC_TO_NETWORK_ROLE_MAPPING (ANY ip-count > 0)","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n\tkey='SELECT * from VFC_TO_NETWORK_ROLE_MAPPING WHERE vfc_customization_uuid = $db1.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid \n\t\tAND (ipv4_count > 0 OR ipv6_count > 0 OR ipv4_floating_count > 0 OR ipv6_floating_count > 0)'\n\tpfx='db1.vfc-to-network-role-mapping[]'>\n\n","comments":"","outputs":1,"x":983.214241027832,"y":1438.1071565151215,"z":"1fa209ca.68bcc6","wires":[["12834db5.591062","11c41bfb.ee6444"]]},{"id":"b602289c.28c628","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1740.4999694824219,"y":2480.0593852996826,"z":"1fa209ca.68bcc6","wires":[["3c27b6b0.8a554a"]]},{"id":"99f40c66.4c79b","type":"switchNode","name":"switch network-role | query-result vs db1","xml":"<switch test='`$tmp.qresult.network-role == $tmp.db1.network-role`' >\n","comments":"","outputs":1,"x":1864.5952758789062,"y":1873.8211879730225,"z":"1fa209ca.68bcc6","wires":[["1ec2226b.30207e"]]},{"id":"3c27b6b0.8a554a","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1925.0596618652344,"y":2479.7300453186035,"z":"1fa209ca.68bcc6","wires":[["30580ab3.84dde6","cfd2ef69.0e48f"]]},{"id":"30580ab3.84dde6","type":"set","name":"set eipam-ip-block.plans[$pidx].l3-network","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].l3-network.' \n\tvalue='tmp.network-role-query-results[$query-results-found-index].l3-network.' />","comments":"","x":2217.726173400879,"y":2480.3965520858765,"z":"1fa209ca.68bcc6","wires":[]},{"id":"de878648.aad968","type":"set","name":"set tmp.network-role-query-results","xml":"<set>\n<parameter name='tmp.network-role-query-results[$qridx].l3-network.' \n\tvalue='`$query-aai-l3-network-by-network-role-output.l3-network.`' />\n<parameter name='tmp.network-role-query-results[$qridx].l3-network.network-role-tag' \n\tvalue='`$tmp.db1.network-role-tag`' />\n\n<!--\n<parameter name='tmp.network-role-query-results[$qridx].network-role' \n\tvalue='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />\n<parameter name='tmp.network-role-query-results[$qridx].network-name' \n\tvalue='`$query-aai-l3-network-by-network-role-output.l3-network.network-name`' />\n-->","comments":"","x":2228.344741821289,"y":2231.802201271057,"z":"1fa209ca.68bcc6","wires":[]},{"id":"7a257d71.1b3624","type":"set","name":"set query-results-found-index","xml":"<set>\n\t<parameter name='query-results-found-index' value = '`$q`' />","comments":"","x":2594.1064682006836,"y":4417.546196222305,"z":"1fa209ca.68bcc6","wires":[]},{"id":"28a8ff1f.90103","type":"set","name":"set eipam-ip-block.plans[$pidx].l3-network","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].l3-network.' \n\tvalue='tmp.network-role-query-results[$query-results-found-index].l3-network.' />","comments":"","x":2191.2733840942383,"y":4698.54718375206,"z":"1fa209ca.68bcc6","wires":[]},{"id":"2cf6eef6.fd6c52","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1781.9399642944336,"y":4699.213690519333,"z":"1fa209ca.68bcc6","wires":[["ff08471b.68c588"]]},{"id":"99c83f4.d51ddc","type":"set","name":"set eipam-ip-block.plans[].network-role, subnet-role","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].network-role'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />\n<parameter name='eipam-ip-block.plans[$pidx].subnet-role'\n    value=\"`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`\" />","comments":"","x":2486.0001831054688,"y":2666.559338092804,"z":"1fa209ca.68bcc6","wires":[]},{"id":"7c6ced48.013ab4","type":"set","name":"set eipam-ip-block.plans[].network-role, subnet-role","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].network-role'\n    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />\n<parameter name='eipam-ip-block.plans[$pidx].subnet-role'\n    value=\"`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`\" />","comments":"","x":2437.750213623047,"y":4814.560279607773,"z":"1fa209ca.68bcc6","wires":[]},{"id":"4ac0f04f.defe","type":"switchNode","name":"switch ipv6-ip-version","xml":"<switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>\n","comments":"","outputs":1,"x":2393.1192474365234,"y":3041.4283859729767,"z":"1fa209ca.68bcc6","wires":[["2285643b.9922cc"]]},{"id":"f885dc5b.e1297","type":"set","name":"set tmp.vm-type","xml":"<set>\n<parameter name='vm-type-loop' value = 'START' />\n<parameter name='tmp.vm-type' value = '`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />","comments":"","x":834.535701751709,"y":1281.6668610572815,"z":"1fa209ca.68bcc6","wires":[]},{"id":"e47d816b.04ff5","type":"set","name":"set network-role-loop","xml":"<set>\n<parameter name='network-role-loop' value = 'START' />","comments":"","x":1293.8214263916016,"y":1550.642938375473,"z":"1fa209ca.68bcc6","wires":[]},{"id":"1c79b3e4.57ddbc","type":"set","name":"set network-role-loop","xml":"<set>\n<parameter name='network-role-loop' value = 'START' />","comments":"","x":1325.643081665039,"y":4062.2864615917206,"z":"1fa209ca.68bcc6","wires":[]},{"id":"2b988a1b.7f7bd6","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":616.0239105224609,"y":3852.476308822632,"z":"1fa209ca.68bcc6","wires":[["8b36f505.beceb8","13900383.cbb11c","75a1e4eb.e91a0c","6276b052.96bf9","67372ecf.ddecc"]]},{"id":"8b36f505.beceb8","type":"set","name":"set tmp.vm-type","xml":"<set>\n<parameter name='vm-type-floating-loop' value = 'START' />\n<parameter name='tmp.vm-type' value = '`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />","comments":"","x":834.4525146484375,"y":3852.845067024231,"z":"1fa209ca.68bcc6","wires":[]},{"id":"2849b46c.06d7ac","type":"set","name":"clear db1.vfc-to-network-role-mapping[]","xml":"<set>\n<parameter name='db1.vfc-to-network-role-mapping.' value = '' />","comments":"","x":907.2499694824219,"y":1385.0951557159424,"z":"1fa209ca.68bcc6","wires":[]},{"id":"91540bf0.cd70b8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1304.2499771118164,"y":4277.28594326973,"z":"1fa209ca.68bcc6","wires":[["2d94833e.63e13c","b70e9260.d4d03"]]},{"id":"ff08471b.68c588","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1929.7024002075195,"y":4699.143431425095,"z":"1fa209ca.68bcc6","wires":[["28a8ff1f.90103","87218db.1c5c87"]]},{"id":"87218db.1c5c87","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2106.5120697021484,"y":4760.35818362236,"z":"1fa209ca.68bcc6","wires":[["6c18c680.514658","7c6ced48.013ab4","3ae51def.6f5252","3718704a.29e8","b2c848c5.019c18"]]},{"id":"b655aea4.094fd","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1314.9282569885254,"y":3935.1539726257324,"z":"1fa209ca.68bcc6","wires":[["659ad3e8.c45b9c"]]},{"id":"659ad3e8.c45b9c","type":"set","name":"set vfc-to-network-role-mapping length to 0","xml":"<set>\n<parameter name='db1.vfc-to-network-role-mapping_length' value='0' />\n","comments":"","x":1578.3330764770508,"y":3935.162363052368,"z":"1fa209ca.68bcc6","wires":[]},{"id":"111e43bd.511ecc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1308.0473823547363,"y":3979.9159259796143,"z":"1fa209ca.68bcc6","wires":[["45895c95.7c67d4"]]},{"id":"45895c95.7c67d4","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 reading VFC_TO_NETWORK_ROLE_MAPPING table\" />\n","comments":"","x":1483.0473136901855,"y":3979.058826446533,"z":"1fa209ca.68bcc6","wires":[]},{"id":"3ddfe7ee.f6d288","type":"comment","name":"db1.vfc-to-network-role-mapping[]","info":"","comments":"","x":582.8571014404297,"y":3956.9397706985474,"z":"1fa209ca.68bcc6","wires":[]},{"id":"6276b052.96bf9","type":"get-resource","name":"get VFC_TO_NETWORK_ROLE_MAPPING (ANY ip-count > 0)","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n\tkey='SELECT * from VFC_TO_NETWORK_ROLE_MAPPING WHERE vfc_customization_uuid = $db1.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid \n\t\tAND (ipv4_count > 0 OR ipv6_count > 0 OR ipv4_floating_count > 0 OR ipv6_floating_count > 0)'\n\tpfx='db1.vfc-to-network-role-mapping[]'>\n\n","comments":"","outputs":1,"x":979.9165802001953,"y":3956.5826625823975,"z":"1fa209ca.68bcc6","wires":[["b655aea4.094fd","111e43bd.511ecc"]]},{"id":"75a1e4eb.e91a0c","type":"set","name":"clear db1.vfc-to-network-role-mapping[]","xml":"<set>\n<parameter name='db1.vfc-to-network-role-mapping.' value = '' />","comments":"","x":906.9523086547852,"y":3903.5706617832184,"z":"1fa209ca.68bcc6","wires":[]},{"id":"d1608cb7.69be1","type":"set","name":"set tmp.network-role.found = true","xml":"<set>\n\t<parameter name='tmp.network-role.found' value = 'true' />","comments":"","x":2541.952438354492,"y":1921.352816581726,"z":"1fa209ca.68bcc6","wires":[]},{"id":"c6ace3f8.10c9","type":"set","name":"set generate-FQPN-input.network-name","xml":"<set>\n<parameter name='generate-FQPN-input.network-name' \n\tvalue='`$tmp.network-role-query-results[$q].l3-network.network-name`' />\n<parameter name='generate-FQPN-input.network-id' \n\tvalue='`$tmp.network-role-query-results[$q].l3-network.network-id`' />","comments":"","x":2560.773567199707,"y":1873.3927431106567,"z":"1fa209ca.68bcc6","wires":[]},{"id":"da17823d.ca396","type":"set","name":"set query-results-found-index","xml":"<set>\n\t<parameter name='query-results-found-index' value = '`$q`' />","comments":"","x":2530.2498779296875,"y":1967.063325881958,"z":"1fa209ca.68bcc6","wires":[]},{"id":"6082a89a.d21ec8","type":"returnFailure","name":"BREAK","xml":"<return status='failure'>","comments":"","x":2463.392936706543,"y":2016.8570928573608,"z":"1fa209ca.68bcc6","wires":[]},{"id":"ea14bac6.97b598","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1442.82133102417,"y":1795.5714492797852,"z":"1fa209ca.68bcc6","wires":[["debcbc94.182ce","20db49f4.e01796"]]},{"id":"2f21d390.49b6bc","type":"switchNode","name":"set tmp.qresult.network-role","xml":"<set>\n<parameter name='tmp.qresult.network-role' value = '`$tmp.network-role-query-results[$q].l3-network.network-role`' />\n","comments":"","outputs":1,"x":1824.5357666015625,"y":1794.8571472167969,"z":"1fa209ca.68bcc6","wires":[[]]},{"id":"36b7f160.7d80ce","type":"switchNode","name":"set tmp.db1.network-role","xml":"<set>\n<parameter name='tmp.db1.network-role' value = '`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />\n","comments":"","outputs":1,"x":1307.0000457763672,"y":1696.642921447754,"z":"1fa209ca.68bcc6","wires":[[]]},{"id":"20db49f4.e01796","type":"returnSuccess","name":"CATCH BREAK","xml":"<return status='success'>\n","comments":"","x":1609.9642486572266,"y":1954.142910003662,"z":"1fa209ca.68bcc6","wires":[]},{"id":"b6c1cfe8.74caf","type":"switchNode","name":"set tmp.db1.network-role","xml":"<set>\n<parameter name='tmp.db1.network-role' value = '`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />\n","comments":"","outputs":1,"x":1338.5357131958008,"y":4217.9998433589935,"z":"1fa209ca.68bcc6","wires":[[]]},{"id":"958cac03.4a9f3","type":"returnSuccess","name":"CATCH BREAK","xml":"<return status='success'>\n","comments":"","x":1686.249755859375,"y":4410.571350097656,"z":"1fa209ca.68bcc6","wires":[]},{"id":"9525c570.063288","type":"switchNode","name":"set tmp.qresult.network-role","xml":"<set>\n<parameter name='tmp.qresult.network-role' value = '`$tmp.network-role-query-results[$q].l3-network.network-role`' />\n","comments":"","outputs":1,"x":1897.6784362792969,"y":4276.666721343994,"z":"1fa209ca.68bcc6","wires":[[]]},{"id":"2b9ad069.c1331","type":"switchNode","name":"switch network-role | query-result vs db1","xml":"<switch test='`$tmp.qresult.network-role == $tmp.db1.network-role`' >\n","comments":"","outputs":1,"x":1937.7381286621094,"y":4324.297742843628,"z":"1fa209ca.68bcc6","wires":[["d16be293.6196a"]]},{"id":"d7779888.5f9488","type":"returnFailure","name":"BREAK","xml":"<return status='failure'>","comments":"","x":2529.868927001953,"y":4467.3333950042725,"z":"1fa209ca.68bcc6","wires":[]},{"id":"b70e9260.d4d03","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1475.678367614746,"y":4277.428359985352,"z":"1fa209ca.68bcc6","wires":[["32938572.9de37a","958cac03.4a9f3"]]},{"id":"67372ecf.ddecc","type":"switchNode","name":"clear tmp.db1.network-role","xml":"<set>\n<parameter name='tmp.db1.network-role' value = '' />\n","comments":"","outputs":1,"x":864.3928756713867,"y":4007.2858924865723,"z":"1fa209ca.68bcc6","wires":[[]]},{"id":"39e9f916.d84206","type":"switchNode","name":"set tmp.qresult.network-role","xml":"<set>\n<parameter name='tmp.qresult.network-role' value = '`$tmp.network-role-query-results[$q].l3-network.network-role`' />\n","comments":"","outputs":1,"x":872.8214263916016,"y":1491.285732269287,"z":"1fa209ca.68bcc6","wires":[[]]},{"id":"fc0d7098.ec8bd","type":"switchNode","name":"set tmp.db1.network-role-tag","xml":"<set>\n<parameter name='tmp.db1.network-role-tag' value = '`$db1.vfc-to-network-role-mapping[$network-role-index].network-role-tag`' />\n","comments":"","outputs":1,"x":1319.5,"y":1740.476173400879,"z":"1fa209ca.68bcc6","wires":[[]]},{"id":"24dba145.3374ae","type":"switchNode","name":"clear tmp.db1.","xml":"<set>\n<parameter name='tmp.db1.' value = '' />\n\n","comments":"","outputs":1,"x":827.5000152587891,"y":1329.2261924743652,"z":"1fa209ca.68bcc6","wires":[[]]},{"id":"4af66944.e78d78","type":"get-resource","name":"Update GENERIC_RESOURCE_NAME (client-key)","xml":"<update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n\tkey=\"update GENERIC_RESOURCE_NAME set context_id = $auto-ip-assignment-input.vf-module-id \n\t\tWHERE type = $tmp.grn.type.client-key AND context_id = $tmp.context-id.transient\">\n","comments":"","outputs":1,"x":906.0714721679688,"y":5832.441108703613,"z":"1fa209ca.68bcc6","wires":[["674917ce.c46028","ea4f9611.bab028"]]},{"id":"8a6c0049.b30ce","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-message' value=\"`'Error updating GENERIC_RESOURCE_NAME.context_id from TRANSIENT to '\n\t+ $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t+ ' for generated vm-names. MANUAL clean up is required!'`\" />\n\n","comments":"","x":1379.3574447631836,"y":5831.322142601013,"z":"1fa209ca.68bcc6","wires":[]},{"id":"674917ce.c46028","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1195.9288330078125,"y":5831.39365196228,"z":"1fa209ca.68bcc6","wires":[["8a6c0049.b30ce"]]},{"id":"ea4f9611.bab028","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1202.7742347717285,"y":5877.88179397583,"z":"1fa209ca.68bcc6","wires":[["102700e5.9763cf"]]},{"id":"102700e5.9763cf","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-message' value=\"`'No GENERIC_RESOURCE_NAME found with context_id = TRANSIENT and type = '\n\t+ $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t+ ' for vm-names. MANUAL clean up may be required!'`\" />\n\n","comments":"","x":1375.2144317626953,"y":5878.155340194702,"z":"1fa209ca.68bcc6","wires":[]},{"id":"bda4208a.4eeb9","type":"set","name":"set tmp.grn.type.client-key","xml":"<set>\n<parameter name='tmp.grn.type.client-key' value='VNFAPI_CLIENT_KEY' />\n","comments":"","x":826.7857971191406,"y":5683.154770851135,"z":"1fa209ca.68bcc6","wires":[]},{"id":"efaaa681.a9adf8","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":389.07142639160156,"y":20,"z":"1fa209ca.68bcc6","wires":[["bdeaac7e.eeba5"]]},{"id":"5c62b7dd.9563d8","type":"comment","name":"Need to check client-key length <=1000 chars","info":"","comments":"","x":4940.011932373047,"y":3799.393243789673,"z":"1fa209ca.68bcc6","wires":[]},{"id":"54f2b045.0b32","type":"set","name":"set tmp.client-key.seq++","xml":"<set>\n<parameter name='tmp.client-key.seq' value='`$tmp.client-key.seq + 1`' />\n","comments":"","x":4603.618713378906,"y":3037.0596923828125,"z":"1fa209ca.68bcc6","wires":[]},{"id":"700ab1d.f3b9c5","type":"switchNode","name":"switch: $tmp.client-key.seq < 10","xml":"<switch test='`$tmp.client-key.seq &lt; 10`'>\n","comments":"","outputs":1,"x":5056.9169273376465,"y":3595.6905097961426,"z":"1fa209ca.68bcc6","wires":[["dbd665a0.1ce068","ab21b7e.f1ec848"]]},{"id":"dbd665a0.1ce068","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":5306.964496612549,"y":3595.214225769043,"z":"1fa209ca.68bcc6","wires":[["a9f0a74e.1e2328"]]},{"id":"a9f0a74e.1e2328","type":"set","name":"set tmp.client-key.padding = 000","xml":"<set>\n<parameter name='tmp.client-key.padding' value='000' />\n","comments":"","x":5535.1669273376465,"y":3595.1905097961426,"z":"1fa209ca.68bcc6","wires":[]},{"id":"ab21b7e.f1ec848","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":5311.4169273376465,"y":3641.940510749817,"z":"1fa209ca.68bcc6","wires":[["a7fe81a3.3af48"]]},{"id":"a7fe81a3.3af48","type":"switchNode","name":"switch: $tmp.client-key.seq < 100","xml":"<switch test='`$tmp.client-key.seq &lt; 100`'>\n","comments":"","outputs":1,"x":5550.1669273376465,"y":3642.190511703491,"z":"1fa209ca.68bcc6","wires":[["b5316e27.f6bb8","25c36479.1d6c3c"]]},{"id":"b5316e27.f6bb8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":5797.666851043701,"y":3641.690456390381,"z":"1fa209ca.68bcc6","wires":[["1730f02c.72024"]]},{"id":"1730f02c.72024","type":"set","name":"set tmp.client-key.padding = 00","xml":"<set>\n<parameter name='tmp.client-key.padding' value='00' />\n","comments":"","x":6025.869281768799,"y":3641.6667404174805,"z":"1fa209ca.68bcc6","wires":[]},{"id":"25c36479.1d6c3c","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":5802.119281768799,"y":3688.416741371155,"z":"1fa209ca.68bcc6","wires":[["5d1a0d73.b3d164"]]},{"id":"5d1a0d73.b3d164","type":"switchNode","name":"switch: $tmp.client-key.seq < 1000","xml":"<switch test='`$tmp.client-key.seq &lt; 1000`'>\n","comments":"","outputs":1,"x":6040.869281768799,"y":3688.666742324829,"z":"1fa209ca.68bcc6","wires":[["4da4ca2e.63bbf4","efbd32d2.a3652"]]},{"id":"4da4ca2e.63bbf4","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":6283.916851043701,"y":3688.190456390381,"z":"1fa209ca.68bcc6","wires":[["c01a5bcf.9d20d8"]]},{"id":"c01a5bcf.9d20d8","type":"set","name":"set tmp.client-key.padding = 0","xml":"<set>\n<parameter name='tmp.client-key.padding' value='0' />\n","comments":"","x":6507.666851043701,"y":3688.190456390381,"z":"1fa209ca.68bcc6","wires":[]},{"id":"efbd32d2.a3652","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":6287.666851043701,"y":3738.190456390381,"z":"1fa209ca.68bcc6","wires":[["76a6b0b3.36532"]]},{"id":"76a6b0b3.36532","type":"switchNode","name":"switch: $tmp.client-key.seq < 10000","xml":"<switch test='`$tmp.client-key.seq &lt; 10000`'>\n","comments":"","outputs":1,"x":6540.166851043701,"y":3736.940456390381,"z":"1fa209ca.68bcc6","wires":[["7270781f.413b38"]]},{"id":"7270781f.413b38","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":6783.2144203186035,"y":3736.4641704559326,"z":"1fa209ca.68bcc6","wires":[["bd183881.e66208"]]},{"id":"bd183881.e66208","type":"set","name":"set tmp.client-key.padding = null","xml":"<set>\n<parameter name='tmp.client-key.padding' value='' />\n","comments":"","x":7006.9644203186035,"y":3736.4641704559326,"z":"1fa209ca.68bcc6","wires":[]},{"id":"f04325bc.877968","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":4816.833354949951,"y":3596.190212249756,"z":"1fa209ca.68bcc6","wires":[["700ab1d.f3b9c5"]]},{"id":"fad632eb.6a9c1","type":"set","name":"set client-key,  info","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'\n   value=\"`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +\n\t\t\t$eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name + '|' +\n\t\t\t$eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' + \n\t\t\t$eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +\n\t\t\t$eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' + \n\t\t\t$eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +\n\t\t\t$tmp.client-key.padding + $tmp.client-key.seq`\"/>\n\n<!-- rdn|zrdm3amdns02testdns001|data|static|VIP|4|0001 -->\n\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'\n   value='`$auto-ip-assignment-input.vf-module-id`' />\n","comments":"","x":4828.833534240723,"y":3759.8570518493652,"z":"1fa209ca.68bcc6","wires":[]},{"id":"218a8cf.c29d374","type":"set","name":"set client-key,  info","xml":"<set>\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'\n   value=\"`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +\n\t\t\t$eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' + \n\t\t\t$eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +\n\t\t\t$eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' + \n\t\t\t$eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' + \n\t\t\t$eipam-ip-block.plans[$pidx].requests[$ridx].group-number + '|0001'`\" />\n\n<!-- rdn|data|static|FIXED|4|1|0001 -->\n\n<parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'\n   value='`$auto-ip-assignment-input.vf-module-id`' />\n","comments":"","x":3995.499755859375,"y":5663.1901512146,"z":"1fa209ca.68bcc6","wires":[]},{"id":"39576ccf.08aa54","type":"switchNode","name":"switch: auto-ip-assignment-input.service-instance-id","xml":"<switch test='`$auto-ip-assignment-input.service-instance-id`'>","comments":"","outputs":1,"x":531.2500152587891,"y":280.00000381469727,"z":"1fa209ca.68bcc6","wires":[["ed1ef22c.7f465"]]},{"id":"ed1ef22c.7f465","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":825.7500228881836,"y":279.50000381469727,"z":"1fa209ca.68bcc6","wires":[["605ea0e9.015e7"]]},{"id":"605ea0e9.015e7","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=\"auto-ip-assignment-input.service-instance-id is null\" />\n","comments":"","x":980.166690826416,"y":279.61110067367554,"z":"1fa209ca.68bcc6","wires":[]},{"id":"db49eb6e.176328","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1621.2978401184082,"y":5295.273439407349,"z":"1fa209ca.68bcc6","wires":[["6580bb9b.736154"]]},{"id":"593fe1a1.e7f5c","type":"switchNode","name":"switch: auto-ip-assignment-input.service-type","xml":"<switch test='`$auto-ip-assignment-input.service-type`'>\n","comments":"","outputs":1,"x":1363.750015258789,"y":5295.2500829696655,"z":"1fa209ca.68bcc6","wires":[["db49eb6e.176328"]]},{"id":"6580bb9b.736154","type":"set","name":"set service-data.service-information.service-type","xml":"<set>\n<parameter name='service-data.service-information.service-type' value='NA' />\n","comments":"","x":1897.500015258789,"y":5295.250003814697,"z":"1fa209ca.68bcc6","wires":[]},{"id":"f195efcb.8c3b5","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1073.750015258789,"y":5295.250082015991,"z":"1fa209ca.68bcc6","wires":[["593fe1a1.e7f5c","ec903613.4cc188"]]},{"id":"e26be7e0.c31918","type":"set","name":"set tmp.client-key.seq++","xml":"<set>\n<parameter name='tmp.client-key.seq' value='`$tmp.client-key.seq + 1`' />\n","comments":"","x":4592.857200622559,"y":3375.7142639160156,"z":"1fa209ca.68bcc6","wires":[]},{"id":"b8156cb0.f8602","type":"set","name":"set tmp.client-key.seq = 0","xml":"<set>\n<parameter name='tmp.client-key.seq' value='0' />\n","comments":"","x":3815.71435546875,"y":2928.571533203125,"z":"1fa209ca.68bcc6","wires":[]},{"id":"c276cfd9.9bcae","type":"set","name":"set tmp.client-key.seq = 0","xml":"<set>\n<parameter name='tmp.client-key.seq' value='0' />\n","comments":"","x":3815.71435546875,"y":3262.857177734375,"z":"1fa209ca.68bcc6","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-create-huawei.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-create-huawei.json
new file mode 100644
index 0000000..ffa95da
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-create-huawei.json
@@ -0,0 +1,1217 @@
+[
+    {
+        "id": "d59dffe3.1ebcb",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 175.03125,
+        "y": 203.0001277923584,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "ec08cd91.55039"
+            ]
+        ]
+    },
+    {
+        "id": "ec08cd91.55039",
+        "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": 468.03065490722656,
+        "y": 203.00002765655518,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "513fbcd2.03e4e4"
+            ]
+        ]
+    },
+    {
+        "id": "513fbcd2.03e4e4",
+        "type": "method",
+        "name": "method:bbs-access-connectivity-network-topology-operation-create-huawei",
+        "xml": "<method rpc='bbs-access-connectivity-network-topology-operation-create-huawei' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 466.03065490722656,
+        "y": 399.00006771087646,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "5ffa3fc6.3a25d"
+            ]
+        ]
+    },
+    {
+        "id": "5ffa3fc6.3a25d",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 873.0308685302734,
+        "y": 400.00006771087646,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "d08319bc.bcb898",
+                "3702f371.c0220c",
+                "28397a59.582c76",
+                "98ddfc72.d43d9",
+                "a775f115.24069",
+                "f893f8d3.d95988",
+                "da212c99.cb2c6",
+                "d0f6c86f.1dac08"
+            ]
+        ]
+    },
+    {
+        "id": "d08319bc.bcb898",
+        "type": "execute",
+        "name": "excute:readProperties",
+        "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\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1305.0310974121094,
+        "y": 294.1111869812012,
+        "z": "f135a623.0543d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3702f371.c0220c",
+        "type": "call",
+        "name": "call:validate-bbs-network-input-parameters",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-bbs-network-input-parameters' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1386.031005859375,
+        "y": 76.99999809265137,
+        "z": "f135a623.0543d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d0f6c86f.1dac08",
+        "type": "execute",
+        "name": "execute:createAccessConnectivityService",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode\" method=\"sendRequest\">\n    <parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/bbs-access-connectivity-create.json'`\" />\n    <parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/ws/rest/1002/FanOpenAPI/ActiveOnt'`\" />\n    <parameter name=\"contentType\" value=\"application/json\"/>\n    <parameter name=\"httpMethod\" value=\"post\"/>\n    <parameter name=\"responsePrefix\" value=\"service-result\"/>\n    <parameter name=\"customHttpHeaders\" value=\"`'X-Auth-Token=' + $prop.sdncRestApi.token_id`\"/>\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": 1363.6820678710938,
+        "y": 849.9608364105225,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "fe656633.23f858",
+                "6f1e2083.ac153"
+            ]
+        ]
+    },
+    {
+        "id": "fe656633.23f858",
+        "type": "outcome",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1709.014835357666,
+        "y": 939.9607362747192,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "f4a3c0d8.430c"
+            ]
+        ]
+    },
+    {
+        "id": "6f1e2083.ac153",
+        "type": "outcome",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1700.92431640625,
+        "y": 848.142599105835,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "c90fe181.73329"
+            ]
+        ]
+    },
+    {
+        "id": "f893f8d3.d95988",
+        "type": "execute",
+        "name": "execute:querryTokenID",
+        "xml": " <execute plugin=\"org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode\" method=\"sendRequest\">\n    <parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/bbs-token-template.json'`\"/>\n    <parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url+'/rest/plat/smapp/v1/oauth/token'`\"/>\n    <parameter name=\"format\" value=\"json\"/>\n    <parameter name=\"httpMethod\" value=\"put\"/>\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\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1299.2534484863281,
+        "y": 651.5558013916016,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "a70e4e47.132c9",
+                "7cc0e9d7.1e3408"
+            ]
+        ]
+    },
+    {
+        "id": "7cc0e9d7.1e3408",
+        "type": "outcome",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1587.1982421875,
+        "y": 651.2501983642578,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "42bd34dc.590d6c"
+            ]
+        ]
+    },
+    {
+        "id": "a70e4e47.132c9",
+        "type": "outcome",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1585.4712524414062,
+        "y": 724.6138734817505,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "ede8d766.0fb378"
+            ]
+        ]
+    },
+    {
+        "id": "45c2f33c.d2afcc",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error executing queryTokenID,vaule is null\" />\n",
+        "comments": "",
+        "x": 2206.312057495117,
+        "y": 718.1595973968506,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "6ab23511.933ffc",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1990.0314674377441,
+        "y": 720.0004091262817,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "45c2f33c.d2afcc"
+            ]
+        ]
+    },
+    {
+        "id": "42bd34dc.590d6c",
+        "type": "switchNode",
+        "name": "switch:token ",
+        "xml": "<switch test='`$token-result.accessSession`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1801.0312995910645,
+        "y": 650.0001840591431,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "6ab23511.933ffc",
+                "279d981f.fd7de8"
+            ]
+        ]
+    },
+    {
+        "id": "279d981f.fd7de8",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1988.031307220459,
+        "y": 649.0001811981201,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "23e4d28e.64b4ce"
+            ]
+        ]
+    },
+    {
+        "id": "23e4d28e.64b4ce",
+        "type": "set",
+        "name": "set:token-id",
+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.accessSession`' />\n",
+        "comments": "",
+        "x": 2198.5313148498535,
+        "y": 649.2501821517944,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "28397a59.582c76",
+        "type": "set",
+        "name": "set:variables",
+        "xml": "<set>\n<parameter name='network-input-parameters.' value='`$network-topology-operation-input.network-request-input.network-input-parameters.`' />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value='https://172.30.0.55:26335' />\n<parameter name='prop.bbs.HsiPackage' value='50M' />\n<parameter name='prop.bbs.HsiType' value='IPoE' />\n",
+        "comments": "",
+        "x": 1264.0316467285156,
+        "y": 189.0002555847168,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "1bcdb021.046c7",
+        "type": "record",
+        "name": "log file",
+        "xml": " <record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n    <parameter name=\"file\" value=\"/opt/oak/logx.txt\" />\n    <parameter name=\"field1\" value=\"__TIMESTAMP__\" />\n    <parameter name=\"field2\" value=\"`$prop.bbs.remote_id`\" />\n    <parameter name=\"field3\" value=\"`$prop.bbs.ONTSN`\" />\n    <parameter name=\"field4\" value=\"`$prop.bbs.CVLAN`\" />\n    <parameter name=\"field5\" value=\"`$prop.bbs.SVLAN`\" />\n    <parameter name=\"field6\" value=\"`$prop.bbs.HsiPackage`\" />\n    <parameter name=\"field7\" value=\"`$prop.bbs.HsiType`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1254.0315246582031,
+        "y": 482.00019359588623,
+        "z": "f135a623.0543d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8375eb61.7efbd8",
+        "type": "record",
+        "name": "log file",
+        "xml": " <record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n    <parameter name=\"file\" value=\"/opt/oak/logx.txt\" />\n    <parameter name=\"field1\" value=\"createAccessConnectivityService success!\" />\n    <parameter name=\"field2\" value=\"`$service-result.accessE2Eservice.serviceID`\" />\n    ",
+        "comments": "",
+        "outputs": 1,
+        "x": 2527.0312900543213,
+        "y": 1009.0003001093864,
+        "z": "f135a623.0543d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f4a3c0d8.430c",
+        "type": "switchNode",
+        "name": "switch:service-result",
+        "xml": "<switch test=\"`$service-result.errors.error[0].error-message`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1944.0309562683105,
+        "y": 939.0000314712524,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "2f011cb2.7f1894",
+                "34a1e5de.d206ea"
+            ]
+        ]
+    },
+    {
+        "id": "2f011cb2.7f1894",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2165.031261444092,
+        "y": 861.0002145767212,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "bb6f25d3.83d998"
+            ]
+        ]
+    },
+    {
+        "id": "34a1e5de.d206ea",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2166.0308837890625,
+        "y": 937.0000133514404,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "ca2d548e.082f68"
+            ]
+        ]
+    },
+    {
+        "id": "19b1bc05.08dfa4",
+        "type": "record",
+        "name": "log error",
+        "xml": " <record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n    <parameter name=\"file\" value=\"/opt/oak/logx.txt\" />\n    <parameter name=\"field1\" value=\"createAccessConnectivityService falied!\" />\n    <parameter name=\"field2\" value=\"`$service-result.errors.error[0].error-info.error-code`\" />\n    <parameter name=\"field3\" value=\"`$service-result.errors.error[0].error-message`\" />\n    <parameter name=\"field4\" value=\"`$service-result.errors.error[0].error-tag`\" />\n    ",
+        "comments": "",
+        "outputs": 1,
+        "x": 2703.0312881469727,
+        "y": 899.000207901001,
+        "z": "f135a623.0543d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a775f115.24069",
+        "type": "for",
+        "name": "for:network-input-paramters",
+        "xml": "<for index='idx' start='0' end='`$network-input-parameters.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1328.5313720703125,
+        "y": 392.00017070770264,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "7be7fd6e.b84cb4"
+            ]
+        ]
+    },
+    {
+        "id": "9e9f8c41.189ca",
+        "type": "switchNode",
+        "name": "switch:remote_id",
+        "xml": "<switch test=\"`$network-input-parameters.param[$idx].name == 'remote_id'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1869.5314979553223,
+        "y": 193.00022411346436,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "ce6f91ef.3d714"
+            ]
+        ]
+    },
+    {
+        "id": "ce6f91ef.3d714",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2072.5314178466797,
+        "y": 193.00019550323486,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "58a6c9b5.515018"
+            ]
+        ]
+    },
+    {
+        "id": "29210a5.c1b86f6",
+        "type": "set",
+        "name": "set:remote_id",
+        "xml": "<set>\n<parameter name='prop.bbs.remote_id' value='`$network-input-parameters.param[$idx].value`' />\n",
+        "comments": "",
+        "x": 2790.5311737060547,
+        "y": 191.6002016067505,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "7be7fd6e.b84cb4",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1583.5316696166992,
+        "y": 393.0002098083496,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "9e9f8c41.189ca",
+                "496a4a60.f5cbc4",
+                "f8848aaa.eca5f8",
+                "6d2dca88.730874"
+            ]
+        ]
+    },
+    {
+        "id": "496a4a60.f5cbc4",
+        "type": "switchNode",
+        "name": "switch:ONTSN",
+        "xml": "<switch test=\"`$network-input-parameters.param[$idx].name == 'ONTSN'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1869.3832931518555,
+        "y": 254.000226020813,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "43a3f0e3.19198"
+            ]
+        ]
+    },
+    {
+        "id": "43a3f0e3.19198",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2071.383195877075,
+        "y": 254.0002899169922,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "41775fcc.20422"
+            ]
+        ]
+    },
+    {
+        "id": "ee55b9c9.49b6b8",
+        "type": "set",
+        "name": "set:ONTSN",
+        "xml": "<set>\n<parameter name='prop.bbs.ONTSN' value='`$network-input-parameters.param[$idx].value`' />\n",
+        "comments": "",
+        "x": 2789.3834800720215,
+        "y": 253.600266456604,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "f8848aaa.eca5f8",
+        "type": "switchNode",
+        "name": "switch:CVLAN",
+        "xml": "<switch test=\"`$network-input-parameters.param[$idx].name == 'CVLAN'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1869.3833656311035,
+        "y": 314.00027561187744,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "b5f77746.96a768"
+            ]
+        ]
+    },
+    {
+        "id": "b5f77746.96a768",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2071.3832244873047,
+        "y": 314.00028705596924,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "b1f319ce.9914f8"
+            ]
+        ]
+    },
+    {
+        "id": "9b2ab1ad.17aaf",
+        "type": "set",
+        "name": "set:CVLAN",
+        "xml": "<set>\n<parameter name='prop.bbs.CVLAN' value='`$network-input-parameters.param[$idx].value`' />\n",
+        "comments": "",
+        "x": 2787.3832244873047,
+        "y": 314.60026264190674,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "6d2dca88.730874",
+        "type": "switchNode",
+        "name": "switch:SVLAN",
+        "xml": "<switch test=\"`$network-input-parameters.param[$idx].name == 'SVLAN'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1866.383373260498,
+        "y": 390.22254276275635,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "cc5f4474.e42938"
+            ]
+        ]
+    },
+    {
+        "id": "cc5f4474.e42938",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2074.3832578659058,
+        "y": 389.2225408554077,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "b5f2e193.ef867"
+            ]
+        ]
+    },
+    {
+        "id": "4ead37e0.712608",
+        "type": "set",
+        "name": "set:SVLAN",
+        "xml": "<set>\n<parameter name='prop.bbs.SVLAN' value='`$network-input-parameters.param[$idx].value`' />\n",
+        "comments": "",
+        "x": 2793.3832244873047,
+        "y": 388.82255268096924,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "58a6c9b5.515018",
+        "type": "switchNode",
+        "name": "switch:remote_id value",
+        "xml": "<switch test='`$network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2317.5314178466797,
+        "y": 192.000226020813,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "e480f1f8.dda81",
+                "404720ad.59648"
+            ]
+        ]
+    },
+    {
+        "id": "404720ad.59648",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2605.5314178466797,
+        "y": 191.000226020813,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "29210a5.c1b86f6"
+            ]
+        ]
+    },
+    {
+        "id": "e480f1f8.dda81",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2603.531826019287,
+        "y": 122.00020503997803,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "e479132a.923ce"
+            ]
+        ]
+    },
+    {
+        "id": "41775fcc.20422",
+        "type": "switchNode",
+        "name": "switch:ONTSN value",
+        "xml": "<switch test='`$network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2317.5314178466797,
+        "y": 254.000226020813,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "e480f1f8.dda81",
+                "17a1e965.948987"
+            ]
+        ]
+    },
+    {
+        "id": "17a1e965.948987",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2607.5314178466797,
+        "y": 254.000226020813,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "ee55b9c9.49b6b8"
+            ]
+        ]
+    },
+    {
+        "id": "b1f319ce.9914f8",
+        "type": "switchNode",
+        "name": "switch:CVLAN value",
+        "xml": "<switch test='`$network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2320.5314178466797,
+        "y": 315.000226020813,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "e480f1f8.dda81",
+                "cdd37ad7.35df78"
+            ]
+        ]
+    },
+    {
+        "id": "cdd37ad7.35df78",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2608.5314178466797,
+        "y": 314.000226020813,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "9b2ab1ad.17aaf"
+            ]
+        ]
+    },
+    {
+        "id": "b5f2e193.ef867",
+        "type": "switchNode",
+        "name": "switch:SVLAN value",
+        "xml": "<switch test='`$network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2321.5314178466797,
+        "y": 389.000226020813,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "e480f1f8.dda81",
+                "1419c0d9.5cb57f"
+            ]
+        ]
+    },
+    {
+        "id": "1419c0d9.5cb57f",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2611.5314178466797,
+        "y": 390.000226020813,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "4ead37e0.712608"
+            ]
+        ]
+    },
+    {
+        "id": "98ddfc72.d43d9",
+        "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`\" />",
+        "comments": "",
+        "x": 1237.0864562988281,
+        "y": 1433.7781085968018,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "ca2d548e.082f68",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2324.1975135803223,
+        "y": 937.9999885559082,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "568e0d0f.176924"
+            ]
+        ]
+    },
+    {
+        "id": "bb6f25d3.83d998",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"`'Error createAccessConnectivityService return: '+$service-result.errors.error[0].error-message`\" />",
+        "comments": "",
+        "x": 2351.5309295654297,
+        "y": 861.0000514984131,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "e479132a.923ce",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"`$network-input-parameters.param[$idx].name  +' value is null, please check it.'`\" />\n",
+        "comments": "",
+        "x": 2786.5309143066406,
+        "y": 122.00002956390381,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "ede8d766.0fb378",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error failed to call queryTokenID\" />\n",
+        "comments": "",
+        "x": 1785.7867889404297,
+        "y": 725.0284938812256,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "c90fe181.73329",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error failed to call  createAccessConnectivityService\" />\n",
+        "comments": "",
+        "x": 1915.4235076904297,
+        "y": 847.846700668335,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "45b79ec3.5bbd2",
+        "type": "save",
+        "name": "save:generic-vnf",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"generic-vnf\" key=\"generic-vnf.vnf-id = $vnf-id\" >\n<parameter name= \"vnf-id\" value = \"`$vnf-id`\"/>\n<parameter name=  \"vnf-name\" value = \"`$vnf-name`\"/>\n<parameter name=  \"vnf-type\" value = \"AccessConnectivity\"/>\n<parameter name=  \"service-id\" value = \"`$network-topology-operation-input.service-information.service-id`\"/>\n<parameter name=  \"prov-status\" value = \"ACTIVE\"/>\n<parameter name=  \"orchestration-status\" value = \"Active\"/>\n<parameter name=  \"is-closed-loop-disabled\" value = \"false\" />\n<parameter name=  \"model-invariant-id\" value = \"`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`\"/>\n<parameter name=  \"model-version-id\" value = \"`$network-topology-operation-input.network-information.onap-model-information.model-uuid`\"/>\n<parameter name=  \"model-customization-id\" value = \"`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1560.5644626617432,
+        "y": 1289.0320949554443,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "9720d237.9ab5a",
+                "ea7c0871.ebdfc8",
+                "9a4cfbb2.d3a8d8"
+            ]
+        ]
+    },
+    {
+        "id": "9720d237.9ab5a",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1796.7863178253174,
+        "y": 1160.9208526611328,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "bbf8d78d.8c6dd8"
+            ]
+        ]
+    },
+    {
+        "id": "ea7c0871.ebdfc8",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1807.7621364593506,
+        "y": 1220.9367089271545,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "f882f752.137d88"
+            ]
+        ]
+    },
+    {
+        "id": "bbf8d78d.8c6dd8",
+        "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=\"Failure calling AAI to save generic-vnf\" />\n",
+        "comments": "",
+        "x": 2032.9288654327393,
+        "y": 1160.4923176765442,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "f882f752.137d88",
+        "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=\"generic-vnf instance does not exist in AAI\" />\n",
+        "comments": "",
+        "x": 2027.809663772583,
+        "y": 1221.4130234718323,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "9a4cfbb2.d3a8d8",
+        "type": "outcome",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1801.3729419708252,
+        "y": 1286.0631890296936,
+        "z": "f135a623.0543d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6292b001.56889",
+        "type": "record",
+        "name": "log file",
+        "xml": " <record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n    <parameter name=\"file\" value=\"/opt/oak/logx.txt\" />\n    <parameter name=\"field1\" value=\"save generic-vnf success!\" />\n    ",
+        "comments": "",
+        "outputs": 1,
+        "x": 2009.3731956481934,
+        "y": 1284.0633182525635,
+        "z": "f135a623.0543d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "10ba27d1.b765f8",
+        "type": "save",
+        "name": "save:metadata",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"service-instance:metadata\"\n key=\"service-instance.service-instance-id = $network-topology-operation-input.service-information.service-id  \n\tAND customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id\n\t  AND service-subscription.service-type = $network-topology-operation-input.service-information.subscription-service-type\n\t  AND service-instance.service-instance-id =  $network-topology-operation-input.service-information.service-instance-id\"  force=\"true\" pfx=\"tmp.AnAI-data\"\n    >\n    <parameter name=\"metadata.metadatum[0].metaname\" value=\"remote-id\" />\n    <parameter name=\"metadata.metadatum[0].metaval\" value=\"`$prop.bbs.remote_id`\" />\n    <parameter name=\"metadata.metadatum[1].metaname\" value=\"controller-service-id\" />\n    <parameter name=\"metadata.metadatum[1].metaval\" value=\"`$prop.bbs.serviceID`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1542.0637893676758,
+        "y": 1452.0319232940674,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "b441478d.1f9148",
+                "17bb11c4.8fa90e",
+                "ebf9ce7d.2261c"
+            ]
+        ]
+    },
+    {
+        "id": "b441478d.1f9148",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1772.5392990112305,
+        "y": 1383.396526813507,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "e654ba85.7dfa08"
+            ]
+        ]
+    },
+    {
+        "id": "17bb11c4.8fa90e",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1784.5154609680176,
+        "y": 1453.4124603271484,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "332a3386.5895dc"
+            ]
+        ]
+    },
+    {
+        "id": "e654ba85.7dfa08",
+        "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=\"Failure calling AAI to save metadatum\" />\n",
+        "comments": "",
+        "x": 2012.6820945739746,
+        "y": 1381.9680285453796,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "332a3386.5895dc",
+        "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=\"metadatum instance does not exist in AAI\" />\n",
+        "comments": "",
+        "x": 2009.562994003296,
+        "y": 1452.8886966705322,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "ebf9ce7d.2261c",
+        "type": "outcome",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1779.1261711120605,
+        "y": 1523.538899898529,
+        "z": "f135a623.0543d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7d0a0f4c.3633b",
+        "type": "record",
+        "name": "log file",
+        "xml": " <record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n    <parameter name=\"file\" value=\"/opt/oak/logx.txt\" />\n    <parameter name=\"field1\" value=\"save metadatum success!\" />\n    ",
+        "comments": "",
+        "outputs": 1,
+        "x": 1990.1261711120605,
+        "y": 1523.538899898529,
+        "z": "f135a623.0543d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "da212c99.cb2c6",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1255.6980628967285,
+        "y": 1163.0006465911865,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "45b79ec3.5bbd2",
+                "10ba27d1.b765f8",
+                "662db182.a7563",
+                "3313131f.0c8d1c",
+                "bd6ec8f4.04e3a8"
+            ]
+        ]
+    },
+    {
+        "id": "662db182.a7563",
+        "type": "set",
+        "name": "set:variables",
+        "xml": "<set>\n<parameter name='vnf-id' value=\"`$prop.random-data-list[3]`\"/>\n<parameter name='vnf-name' value=\"`'vnf-'+$prop.random-data-list[4]`\"/>\n",
+        "comments": "",
+        "x": 1544.6985321044922,
+        "y": 1167.3336391448975,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "3313131f.0c8d1c",
+        "type": "execute",
+        "name": "execute:generate",
+        "xml": " <execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\">\n    <parameter name=\"ctx-destination\" value=\"prop.random-data\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1563.0629119873047,
+        "y": 1086.031545639038,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "61f3386a.396d88"
+            ]
+        ]
+    },
+    {
+        "id": "61f3386a.396d88",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1801.062671661377,
+        "y": 1087.0315761566162,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "1e9f0299.df61fd"
+            ]
+        ]
+    },
+    {
+        "id": "1e9f0299.df61fd",
+        "type": "execute",
+        "name": "execute",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n    <parameter name=\"ctx_memory_result_key\" value=\"prop.random-data-list\"/>\n    <parameter name=\"original_string\" value=\"`$prop.random-data`\"/>\n    <parameter name=\"regex\" value=\"-\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1988.0627269744873,
+        "y": 1086.0314846038818,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "4fbc1b9e.fffd34"
+            ]
+        ]
+    },
+    {
+        "id": "9e0485c3.32fc78",
+        "type": "record",
+        "name": "log file",
+        "xml": " <record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n    <parameter name=\"file\" value=\"/opt/oak/logx.txt\" />\n    <parameter name=\"field1\" value=\"`$prop.random-data`\" />\n    ",
+        "comments": "",
+        "outputs": 1,
+        "x": 2320.062789916992,
+        "y": 1084.031545639038,
+        "z": "f135a623.0543d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4fbc1b9e.fffd34",
+        "type": "outcome",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2155.062665939331,
+        "y": 1085.03151512146,
+        "z": "f135a623.0543d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "568e0d0f.176924",
+        "type": "set",
+        "name": "set:variables",
+        "xml": "<set>\n<parameter name='prop.bbs.serviceID' value=\"`$service-result.accessE2Eservice.serviceID`\"/>\n",
+        "comments": "",
+        "x": 2538.06254196167,
+        "y": 937.0314273834229,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "cfb87bad.450ae8",
+        "type": "set",
+        "name": "set:variables",
+        "xml": "<set>\n<parameter name='prop.bbs.serviceID' value=\"HSI20190330\"/>\n\n",
+        "comments": "",
+        "x": 1234.3643798828125,
+        "y": 926.3333797454834,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "bd6ec8f4.04e3a8",
+        "type": "save",
+        "name": "save:relationship",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"service-instance:relationship-list\" \n      key=\"service-instance.service-instance-id =  $network-topology-operation-input.service-information.service-id\n         AND customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id\n         AND service-subscription.service-type =  $network-topology-operation-input.service-information.subscription-service-type \n         AND service-instance.service-instance-id =  $network-topology-operation-input.service-information.service-instance-id\" force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"generic-vnf\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/generic-vnfs/generic-vnf/' + $vnf-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"generic-vnf.vnf-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$vnf-id`\" />\n ",
+        "comments": "",
+        "outputs": 1,
+        "x": 1548.53125,
+        "y": 1642.03125,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "1578cba7.023b84",
+                "40fbebd2.9a7d24",
+                "af6b94b5.5bf458"
+            ]
+        ]
+    },
+    {
+        "id": "1578cba7.023b84",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1799.53125,
+        "y": 1595.03125,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "26c2f8e7.5d2188"
+            ]
+        ]
+    },
+    {
+        "id": "40fbebd2.9a7d24",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1811.507411956787,
+        "y": 1665.0471835136414,
+        "z": "f135a623.0543d8",
+        "wires": [
+            [
+                "d32cb96a.5805d8"
+            ]
+        ]
+    },
+    {
+        "id": "26c2f8e7.5d2188",
+        "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=\"Failure calling AAI to save metadatum\" />\n",
+        "comments": "",
+        "x": 2039.6740455627441,
+        "y": 1593.6027517318726,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "d32cb96a.5805d8",
+        "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=\"metadatum instance does not exist in AAI\" />\n",
+        "comments": "",
+        "x": 2036.5549449920654,
+        "y": 1664.5234198570251,
+        "z": "f135a623.0543d8",
+        "wires": []
+    },
+    {
+        "id": "af6b94b5.5bf458",
+        "type": "outcome",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1806.11812210083,
+        "y": 1735.173623085022,
+        "z": "f135a623.0543d8",
+        "wires": [
+            []
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-delete-huawei.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-delete-huawei.json
new file mode 100644
index 0000000..ef738ca
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-delete-huawei.json
@@ -0,0 +1,929 @@
+[

+    {

+        "id": "1fe4d356.7d1a4d",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 114.00390625,

+        "y": 228.9999885559082,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "33702a3.e0f9fd6"

+            ]

+        ]

+    },

+    {

+        "id": "33702a3.e0f9fd6",

+        "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": 502.00378799438477,

+        "y": 228.99999332427979,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "b821ff4a.2c1fa"

+            ]

+        ]

+    },

+    {

+        "id": "b821ff4a.2c1fa",

+        "type": "method",

+        "name": "method:bbs-access-connectivity-network-topology-operation-delete-huawei",

+        "xml": "<method rpc='bbs-access-connectivity-network-topology-operation-delete-huawei' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 465.00378799438477,

+        "y": 347.9999933242798,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "8a087462.b39fd8"

+            ]

+        ]

+    },

+    {

+        "id": "8a087462.b39fd8",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 863.0038948059082,

+        "y": 346.9999933242798,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "b571ef0e.fb883",

+                "e6661884.b85a18",

+                "8d5fd62a.ea1838",

+                "edca7b4c.628428",

+                "a1566932.4a14e8",

+                "8cd22f67.ca85",

+                "7ea1fa62.bd7864",

+                "74da4578.69488c",

+                "b3adae43.1a849"

+            ]

+        ]

+    },

+    {

+        "id": "b571ef0e.fb883",

+        "type": "execute",

+        "name": "excute:readProperties",

+        "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\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1305.004192352295,

+        "y": 201.11107444763184,

+        "z": "4da1e057.93c81",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8cd22f67.ca85",

+        "type": "for",

+        "name": "for:network-input-paramters",

+        "xml": "<for index='idx' start='0' end='`$network-input-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1309.0042152404785,

+        "y": 422.9999198913574,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "fb4eabbb.3b7248"

+            ]

+        ]

+    },

+    {

+        "id": "a1566932.4a14e8",

+        "type": "execute",

+        "name": "execute:querryTokenID",

+        "xml": " <execute plugin=\"org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode\" method=\"sendRequest\">\n    <parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/bbs-token-template.json'`\"/>\n    <parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url+'/rest/plat/smapp/v1/oauth/token'`\"/>\n    <parameter name=\"format\" value=\"json\"/>\n    <parameter name=\"httpMethod\" value=\"put\"/>\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\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1300.0042152404785,

+        "y": 332.99999618530273,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "b85b7ef3.4a5bd",

+                "608c2c9a.b06c14"

+            ]

+        ]

+    },

+    {

+        "id": "608c2c9a.b06c14",

+        "type": "outcome",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1599.170841217041,

+        "y": 329.24999618530273,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "8526ecf2.42dcd"

+            ]

+        ]

+    },

+    {

+        "id": "b85b7ef3.4a5bd",

+        "type": "outcome",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1595.170841217041,

+        "y": 223.2499656677246,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "a6f5bdc0.ca847"

+            ]

+        ]

+    },

+    {

+        "id": "7756fd5f.8c2fe4",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error executing queryTokenID,vaule is null\" />\n",

+        "comments": "",

+        "x": 2142.2846450805664,

+        "y": 271.61365032196045,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "8a946e8b.a881",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1966.004222869873,

+        "y": 271.9999523162842,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "7756fd5f.8c2fe4"

+            ]

+        ]

+    },

+    {

+        "id": "8526ecf2.42dcd",

+        "type": "switchNode",

+        "name": "switch:token ",

+        "xml": "<switch test='`$token-result.accessSession`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1798.004222869873,

+        "y": 329.9999523162842,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "8a946e8b.a881",

+                "f2c4f3fa.fa28"

+            ]

+        ]

+    },

+    {

+        "id": "f2c4f3fa.fa28",

+        "type": "outcome",

+        "name": "Other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1967.004222869873,

+        "y": 328.9999523162842,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "34e2fc86.cccd84"

+            ]

+        ]

+    },

+    {

+        "id": "34e2fc86.cccd84",

+        "type": "set",

+        "name": "set:token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.accessSession`' />\n",

+        "comments": "",

+        "x": 2141.5042152404785,

+        "y": 328.24999618530273,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "7f008572.ced19c",

+        "type": "record",

+        "name": "log file",

+        "xml": " <record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n    <parameter name=\"file\" value=\"/opt/oak/logx.txt\" />\n    <parameter name=\"field1\" value=\"__TIMESTAMP__\" />\n    <parameter name=\"field2\" value=\"sucess executing Get token rest api\" />\n    <parameter name=\"field3\" value=\"`$token-result.accessSession`\" />\n    ",

+        "comments": "",

+        "outputs": 1,

+        "x": 2353.0042152404785,

+        "y": 325.9999351501465,

+        "z": "4da1e057.93c81",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "edca7b4c.628428",

+        "type": "set",

+        "name": "set:variables",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value='https://172.30.0.55:26335' />\n<parameter name='network-input-parameters.' value='`$network-topology-operation-input.network-request-input.network-input-parameters.`' />\n",

+        "comments": "",

+        "x": 1271.004192352295,

+        "y": 121.00015068054199,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "b3adae43.1a849",

+        "type": "execute",

+        "name": "execute:deleteAccessConnectivityService",

+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode\" method=\"sendRequest\">\n    <parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/ws/rest/1002/FanOpenAPI/DeactivateOnt?serviceID='+$prop.bbs.serviceID`\" />\n    <parameter name=\"httpMethod\" value=\"get\"/>\n    <parameter name=\"contentType\" value=\"application/x-www-form-urlencoded\"/>\n    <parameter name=\"responsePrefix\" value=\"service-result\"/>\n    <parameter name=\"customHttpHeaders\" value=\"`'X-Auth-Token=' + $prop.sdncRestApi.token_id`\"/>\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": 1361.0044784545898,

+        "y": 603.0000989437103,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "b988b5d0.2516f8",

+                "4fcb328c.8c8d3c"

+            ]

+        ]

+    },

+    {

+        "id": "b988b5d0.2516f8",

+        "type": "outcome",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1666.004493713379,

+        "y": 543.0000801086426,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "8fd08b44.80a718"

+            ]

+        ]

+    },

+    {

+        "id": "4fcb328c.8c8d3c",

+        "type": "outcome",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1666.004467010498,

+        "y": 602.000079870224,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "732b9fd0.970c6"

+            ]

+        ]

+    },

+    {

+        "id": "d604a440.b8abb8",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2152.0045776367188,

+        "y": 499.00001406669617,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "f0d17cd2.4c7c1"

+            ]

+        ]

+    },

+    {

+        "id": "f0d17cd2.4c7c1",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"$network-input-parameters.param[$idx].name  +' value is null, please check it.'\" />\n",

+        "comments": "",

+        "x": 2336.9135246276855,

+        "y": 498.90906715393066,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "fb4eabbb.3b7248",

+        "type": "switchNode",

+        "name": "switch:serviceID",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1584.0042419433594,

+        "y": 422.00000762939453,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "36367cd4.1a04e4"

+            ]

+        ]

+    },

+    {

+        "id": "36367cd4.1a04e4",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1757.004126548767,

+        "y": 421.0000057220459,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "d961fc6c.9fcb7"

+            ]

+        ]

+    },

+    {

+        "id": "d96b619c.da3a9",

+        "type": "set",

+        "name": "set:serviceID",

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

+        "comments": "",

+        "x": 2328.004093170166,

+        "y": 420.6000175476074,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "d961fc6c.9fcb7",

+        "type": "switchNode",

+        "name": "switch:serviceID value",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1938.152286529541,

+        "y": 420.7776908874512,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "7d48d6fb.074d98",

+                "d604a440.b8abb8"

+            ]

+        ]

+    },

+    {

+        "id": "7d48d6fb.074d98",

+        "type": "outcome",

+        "name": "Other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2146.152286529541,

+        "y": 421.7776908874512,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "d96b619c.da3a9"

+            ]

+        ]

+    },

+    {

+        "id": "e6661884.b85a18",

+        "type": "call",

+        "name": "call:validate-bbs-network-input-parameters",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-bbs-network-input-parameters' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1382.503818511963,

+        "y": 40.00000190734863,

+        "z": "4da1e057.93c81",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "732b9fd0.970c6",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1842.504264831543,

+        "y": 603.0002579689026,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "44aeb9a4.8239d8"

+            ]

+        ]

+    },

+    {

+        "id": "44aeb9a4.8239d8",

+        "type": "switchNode",

+        "name": "switch:service-result",

+        "xml": "<switch test=\"`$service-result.errors.error[0].error-message`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2060.5041427612305,

+        "y": 602.000105381012,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "546b6ac8.884354",

+                "dd81919a.ab138"

+            ]

+        ]

+    },

+    {

+        "id": "546b6ac8.884354",

+        "type": "outcome",

+        "name": "Other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2294.5041885375977,

+        "y": 603.0000653266907,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "cde0380a.e69b48"

+            ]

+        ]

+    },

+    {

+        "id": "dd81919a.ab138",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2296.5041885375977,

+        "y": 689.0000653266907,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "8b2d1b97.9a7e98"

+            ]

+        ]

+    },

+    {

+        "id": "45e5b798.d82a48",

+        "type": "record",

+        "name": "log error",

+        "xml": " <record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n    <parameter name=\"file\" value=\"/opt/oak/logx.txt\" />\n    <parameter name=\"field1\" value=\"deleteAccessConnectivityService falied!\" />\n    <parameter name=\"field2\" value=\"`$service-result.errors.error[0].error-info.error-code`\" />\n    <parameter name=\"field3\" value=\"`$service-result.errors.error[0].error-message`\" />\n    <parameter name=\"field4\" value=\"`$service-result.errors.error[0].error-tag`\" />\n    ",

+        "comments": "",

+        "outputs": 1,

+        "x": 2734.50435256958,

+        "y": 590.0000820159912,

+        "z": "4da1e057.93c81",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8d5fd62a.ea1838",

+        "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": 1274.504035949707,

+        "y": 1017.9999990463257,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "cde0380a.e69b48",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"`'Error deleteAccessConnectivityService return: '+$service-result.errors.error[0].error-message`\" />\n\n",

+        "comments": "",

+        "x": 2494.50386428833,

+        "y": 603,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "8b2d1b97.9a7e98",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2480.5038833618164,

+        "y": 688.2726736068726,

+        "z": "4da1e057.93c81",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a6f5bdc0.ca847",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error failed to call queryTokenID\" />\n",

+        "comments": "",

+        "x": 1787.668701171875,

+        "y": 224.11931228637695,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "8fd08b44.80a718",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error failed to call deleteAccessConnectivityService\" />\n",

+        "comments": "",

+        "x": 1836.276611328125,

+        "y": 541.3635749816895,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "40e5b8d4.405008",

+        "type": "record",

+        "name": "log file",

+        "xml": " <record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n    <parameter name=\"file\" value=\"/opt/oak/logx.txt\" />\n    <parameter name=\"field1\" value=\"deleteAccessConnectivityService success!\" />\n    ",

+        "comments": "",

+        "outputs": 1,

+        "x": 2699.504409790039,

+        "y": 686.0001497268677,

+        "z": "4da1e057.93c81",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "74da4578.69488c",

+        "type": "update",

+        "name": "deleteResourceAAI",

+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $prop.bbs.accessConnectivityVNFId\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1290.7539596557617,

+        "y": 958.0039052963257,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "9ad48718.a48378",

+                "f19e3616.a65168"

+            ]

+        ]

+    },

+    {

+        "id": "a5690d23.086bf",

+        "type": "comment",

+        "name": "delete resource from AAI",

+        "info": "",

+        "comments": "",

+        "x": 1304.7539138793945,

+        "y": 919.0039348602295,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "b0cc7a09.a1b0b8",

+        "type": "for",

+        "name": "for relationship-list",

+        "xml": "<for silentFailure='true' index='ridx' start='0' end=\"`$aai.service-instance.relationship-list.relationship_length`\" >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1908.5041046142578,

+        "y": 809.0040121078491,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "7627454.6354fbc"

+            ]

+        ]

+    },

+    {

+        "id": "ff73aabd.67b448",

+        "type": "comment",

+        "name": "get generic-vnf of type AccessConnectivity",

+        "info": "",

+        "comments": "",

+        "x": 1976.5040130615234,

+        "y": 762.0039348602295,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "7ea1fa62.bd7864",

+        "type": "update",

+        "name": "get AAI service-instance",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"service-instance\" \n\t\tkey=\"customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $network-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $network-topology-operation-input.service-information.service-instance-id\"\n        pfx='aai.service-instance' local-only='false' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 1307.5038986206055,

+        "y": 702.0040426254272,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "fe7995d6.38c3f8",

+                "4a7386f6.0cd718"

+            ]

+        ]

+    },

+    {

+        "id": "6bc3fbd4.b813f4",

+        "type": "comment",

+        "name": "fetch relationship-list",

+        "info": "",

+        "comments": "",

+        "x": 1292.5039138793945,

+        "y": 665.0038900375366,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "fe7995d6.38c3f8",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1559.5041313171387,

+        "y": 672.0039348602295,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "2a31b9ca.55ee86"

+            ]

+        ]

+    },

+    {

+        "id": "2a31b9ca.55ee86",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",

+        "comments": "",

+        "x": 1750.5039138793945,

+        "y": 672.0039205551147,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "4a7386f6.0cd718",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1555.7540092468262,

+        "y": 808.7538890838623,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "64a4be69.1880c"

+            ]

+        ]

+    },

+    {

+        "id": "64a4be69.1880c",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1720.753978729248,

+        "y": 808.7539043426514,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "b0cc7a09.a1b0b8"

+            ]

+        ]

+    },

+    {

+        "id": "7627454.6354fbc",

+        "type": "for",

+        "name": "for relationship data",

+        "xml": "<for silentFailure='false' index='rdidx' start='0' end=\"`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data_length`\" >",

+        "comments": "",

+        "outputs": 1,

+        "x": 2113.754104614258,

+        "y": 808.7539510726929,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "e52ae02e.90c33"

+            ]

+        ]

+    },

+    {

+        "id": "430a4a42.5658e4",

+        "type": "switchNode",

+        "name": "switch vnf-id",

+        "xml": "<switch test='`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2379.7539291381836,

+        "y": 811.7539072036743,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "2eef72d5.dfee4e"

+            ]

+        ]

+    },

+    {

+        "id": "2eef72d5.dfee4e",

+        "type": "other",

+        "name": "generic-vnf.vnf-id",

+        "xml": "<outcome value='generic-vnf.vnf-id'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2570.75399017334,

+        "y": 810.7539215087891,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "47eecdf9.b49b94"

+            ]

+        ]

+    },

+    {

+        "id": "47eecdf9.b49b94",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2757.7538986206055,

+        "y": 810.7539072036743,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "ac1daadf.209048"

+            ]

+        ]

+    },

+    {

+        "id": "ac1daadf.209048",

+        "type": "update",

+        "name": "get AAI generic-vnf",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value\"\n        pfx='aai.generic-vnf' local-only='false' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 2962.2539596557617,

+        "y": 811.7538919448853,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "a6ab0510.fb39d8"

+            ]

+        ]

+    },

+    {

+        "id": "d31b01f7.54c3",

+        "type": "switchNode",

+        "name": "switch vnf-type",

+        "xml": "<switch test='`$aai.generic-vnf.vnf-type`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3435.75479888916,

+        "y": 885.7539205551147,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "1d80aac5.eefc05"

+            ]

+        ]

+    },

+    {

+        "id": "1d80aac5.eefc05",

+        "type": "other",

+        "name": "AccessConnectivity",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3629.754554748535,

+        "y": 879.7539501190186,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "e7551653.b65f38"

+            ]

+        ]

+    },

+    {

+        "id": "e7551653.b65f38",

+        "type": "set",

+        "name": "set AccessConnectivity vnf-id",

+        "xml": "<set>\n<parameter name='prop.bbs.accessConnectivityVNFId' value='`$aai.generic-vnf.vnf-id`' />\n",

+        "comments": "",

+        "x": 3873.754066467285,

+        "y": 877.7538747787476,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "f19e3616.a65168",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1508.75390625,

+        "y": 923.00390625,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "1c66ecef.3c69d3"

+            ]

+        ]

+    },

+    {

+        "id": "9ad48718.a48378",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1516.75390625,

+        "y": 983.00390625,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "1c66ecef.3c69d3"

+            ]

+        ]

+    },

+    {

+        "id": "1c66ecef.3c69d3",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",

+        "comments": "",

+        "x": 1724.75390625,

+        "y": 958.00390625,

+        "z": "4da1e057.93c81",

+        "wires": []

+    },

+    {

+        "id": "e52ae02e.90c33",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2266.00390625,

+        "y": 845.25390625,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "430a4a42.5658e4"

+            ]

+        ]

+    },

+    {

+        "id": "cbd10002.aaaa7",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 3252.7539443969727,

+        "y": 886.2539205551147,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "d31b01f7.54c3"

+            ]

+        ]

+    },

+    {

+        "id": "a6ab0510.fb39d8",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3155.75390625,

+        "y": 810.00390625,

+        "z": "4da1e057.93c81",

+        "wires": [

+            [

+                "cbd10002.aaaa7"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-change-huawei.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-change-huawei.json
new file mode 100644
index 0000000..a82d8ad
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-change-huawei.json
@@ -0,0 +1,229 @@
+[
+    {
+        "id": "8986a615.d2eba",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 893,
+        "y": 435,
+        "z": "ab14e16a.6a0518",
+        "wires": [
+            [
+                "a587d37.4461bb"
+            ]
+        ]
+    },
+    {
+        "id": "a587d37.4461bb",
+        "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": 1200.9996490478516,
+        "y": 435.0000219345093,
+        "z": "ab14e16a.6a0518",
+        "wires": [
+            [
+                "7bf72e16.cc5638"
+            ]
+        ]
+    },
+    {
+        "id": "7bf72e16.cc5638",
+        "type": "method",
+        "name": "method:bbs-internet-profile-network-topology-operation-change-huawei",
+        "xml": "<method rpc='bbs-internet-profile-network-topology-operation-change-huawei' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1198.9996490478516,
+        "y": 631.0000619888306,
+        "z": "ab14e16a.6a0518",
+        "wires": [
+            [
+                "d96dea5b.58d7"
+            ]
+        ]
+    },
+    {
+        "id": "d96dea5b.58d7",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1605.9998626708984,
+        "y": 632.0000619888306,
+        "z": "ab14e16a.6a0518",
+        "wires": [
+            [
+                "7720916f.7813b8",
+                "627c5b65.98524c",
+                "e657d2bd.9178a8"
+            ]
+        ]
+    },
+    {
+        "id": "627c5b65.98524c",
+        "type": "execute",
+        "name": "execute:ChangeInternetProfileInstance",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode\" method=\"sendRequest\">\n    <parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/bbs-internet-profile-operation.json'`\" />\n    <parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/ChangeInternetProfileInstance'`\" />\n    <parameter name=\"contentType\" value=\"application/json\"/>\n    <parameter name=\"httpMethod\" value=\"post\"/>\n    <parameter name=\"responsePrefix\" value=\"service-result\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1933,
+        "y": 633,
+        "z": "ab14e16a.6a0518",
+        "wires": [
+            [
+                "adc20a6c.9b2ab",
+                "55d7a784.5951f"
+            ]
+        ]
+    },
+    {
+        "id": "55d7a784.5951f",
+        "type": "outcome",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2234.332981109619,
+        "y": 633,
+        "z": "ab14e16a.6a0518",
+        "wires": [
+            [
+                "cce9a716.18951"
+            ]
+        ]
+    },
+    {
+        "id": "adc20a6c.9b2ab",
+        "type": "outcome",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2243.332893371582,
+        "y": 708.0000019073486,
+        "z": "ab14e16a.6a0518",
+        "wires": [
+            [
+                "b35bace0.7d3d98"
+            ]
+        ]
+    },
+    {
+        "id": "b35bace0.7d3d98",
+        "type": "switchNode",
+        "name": "switch:service-result",
+        "xml": "<switch test=\"`$service-result.errors.error[0].error-message`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2478.3490142822266,
+        "y": 707.0392971038818,
+        "z": "ab14e16a.6a0518",
+        "wires": [
+            [
+                "a90ffced.1c8348",
+                "63b509e9.2d95d8"
+            ]
+        ]
+    },
+    {
+        "id": "cce9a716.18951",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error failed to call ChangeInternetProfileInstance\" />\n",
+        "comments": "",
+        "x": 2743.2665939331055,
+        "y": 633.289547920227,
+        "z": "ab14e16a.6a0518",
+        "wires": []
+    },
+    {
+        "id": "a90ffced.1c8348",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2704.349353790283,
+        "y": 708.0393905639648,
+        "z": "ab14e16a.6a0518",
+        "wires": [
+            [
+                "e561cbc.a164eb8"
+            ]
+        ]
+    },
+    {
+        "id": "63b509e9.2d95d8",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2714.3490600585938,
+        "y": 794.0392570495605,
+        "z": "ab14e16a.6a0518",
+        "wires": [
+            [
+                "96c1b54d.1bf908"
+            ]
+        ]
+    },
+    {
+        "id": "e561cbc.a164eb8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"`'Error ChangeInternetProfileInstance return: '+$service-result.errors.error[0].error-message`\" />\n\n",
+        "comments": "",
+        "x": 2890.849021911621,
+        "y": 708.0392274856567,
+        "z": "ab14e16a.6a0518",
+        "wires": []
+    },
+    {
+        "id": "96c1b54d.1bf908",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2872.5156898498535,
+        "y": 795.0392322540283,
+        "z": "ab14e16a.6a0518",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e657d2bd.9178a8",
+        "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": 1848.8489570617676,
+        "y": 715.0393257141113,
+        "z": "ab14e16a.6a0518",
+        "wires": []
+    },
+    {
+        "id": "7720916f.7813b8",
+        "type": "call",
+        "name": "call:bbs-internet-profile-network-topology-operation-common-huawei",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-common-huawei' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2035.015869140625,
+        "y": 547.0391578674316,
+        "z": "ab14e16a.6a0518",
+        "wires": [
+            []
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-common-huawei.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-common-huawei.json
new file mode 100644
index 0000000..849637a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-common-huawei.json
@@ -0,0 +1,873 @@
+[
+    {
+        "id": "1005a4d7.cdc89b",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 157.03125,
+        "y": 337.9999974966049,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "84618843.f74f18"
+            ]
+        ]
+    },
+    {
+        "id": "84618843.f74f18",
+        "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": 465.03089904785156,
+        "y": 338.0000194311142,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "39d6495c.2a8966"
+            ]
+        ]
+    },
+    {
+        "id": "39d6495c.2a8966",
+        "type": "method",
+        "name": "method:bbs-internet-profile-network-topology-operation-common-huawei",
+        "xml": "<method rpc='bbs-internet-profile-network-topology-operation-common-huawei' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 463.0309143066406,
+        "y": 558.0000966787338,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "bc585204.23434"
+            ]
+        ]
+    },
+    {
+        "id": "bc585204.23434",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 887.0311126708984,
+        "y": 557.0000966787338,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "641b9dc3.c76d44",
+                "22e9e7f6.319e28",
+                "5806343e.90d4bc",
+                "ff7e2b0b.240d18"
+            ]
+        ]
+    },
+    {
+        "id": "641b9dc3.c76d44",
+        "type": "call",
+        "name": "call:validate-bbs-network-input-parameters",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-bbs-network-input-parameters' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1353.0312805175781,
+        "y": 236.00000703334808,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "22e9e7f6.319e28",
+        "type": "set",
+        "name": "set:variables",
+        "xml": "<set>\n<parameter name='network-input-parameters.' value='`$network-topology-operation-input.network-request-input.network-input-parameters.`' />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value='http://172.30.0.121:5000' />\n<parameter name='prop.bbs.service_id' value='`$network-topology-operation-input.service-information.service-id`' />\n\n",
+        "comments": "",
+        "x": 1243.03178024292,
+        "y": 342.00020349025726,
+        "z": "b5d9a62e.6044f8",
+        "wires": []
+    },
+    {
+        "id": "5806343e.90d4bc",
+        "type": "execute",
+        "name": "excute:readProperties",
+        "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\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1270.03125,
+        "y": 452.1111682653427,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ff7e2b0b.240d18",
+        "type": "for",
+        "name": "for:network-input-paramters",
+        "xml": "<for index='idx' start='0' end='`$network-input-parameters.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1286.5316162109375,
+        "y": 551.0001701116562,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "405ee64e.c6f528"
+            ]
+        ]
+    },
+    {
+        "id": "87370c41.174ad",
+        "type": "switchNode",
+        "name": "switch:ip_remote_id",
+        "xml": "<switch test=\"`$network-input-parameters.param[$idx].name == 'ip_remote_id'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1883.5316772460938,
+        "y": 332.0002044439316,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "6f712c2f.00fd94"
+            ]
+        ]
+    },
+    {
+        "id": "6f712c2f.00fd94",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2087.531597137451,
+        "y": 332.0001758337021,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "1531c27c.bf6ace"
+            ]
+        ]
+    },
+    {
+        "id": "82c53c1.cbe2cc",
+        "type": "set",
+        "name": "set:remote_id",
+        "xml": "<set>\n<parameter name='prop.bbs.remote_id' value='`$network-input-parameters.param[$idx].value`' />\n",
+        "comments": "",
+        "x": 2806.5319595336914,
+        "y": 325.60026013851166,
+        "z": "b5d9a62e.6044f8",
+        "wires": []
+    },
+    {
+        "id": "405ee64e.c6f528",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1532.5316581726074,
+        "y": 550.000178694725,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "87370c41.174ad",
+                "c3b38917.be7dd8",
+                "9df0c6fb.c3cff8",
+                "c04f9f0a.fdecd",
+                "70d3b64e.02f668",
+                "518351b3.5bba",
+                "3d4326b7.055a3a",
+                "363ebd91.fb5852"
+            ]
+        ]
+    },
+    {
+        "id": "c3b38917.be7dd8",
+        "type": "switchNode",
+        "name": "switch:ont_sn",
+        "xml": "<switch test=\"`$network-input-parameters.param[$idx].name == 'ont_sn'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1883.383472442627,
+        "y": 393.0002063512802,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "fcb34afe.c01578"
+            ]
+        ]
+    },
+    {
+        "id": "fcb34afe.c01578",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2086.3833751678467,
+        "y": 393.0002702474594,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "b65719a8.25dce8"
+            ]
+        ]
+    },
+    {
+        "id": "1cf31c48.ca8d04",
+        "type": "set",
+        "name": "set:ont_sn",
+        "xml": "<set>\n<parameter name='prop.bbs.ont_sn' value='`$network-input-parameters.param[$idx].value`' />\n",
+        "comments": "",
+        "x": 2805.384265899658,
+        "y": 387.6003249883652,
+        "z": "b5d9a62e.6044f8",
+        "wires": []
+    },
+    {
+        "id": "9df0c6fb.c3cff8",
+        "type": "switchNode",
+        "name": "switch:c_vlan",
+        "xml": "<switch test=\"`$network-input-parameters.param[$idx].name == 'c_vlan'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1878.3837280273438,
+        "y": 752.0003808736801,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "9f06e43c.6bf558"
+            ]
+        ]
+    },
+    {
+        "id": "9f06e43c.6bf558",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2081.383586883545,
+        "y": 752.0003923177719,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "6d16f565.8a456c"
+            ]
+        ]
+    },
+    {
+        "id": "da1647b1.e6b208",
+        "type": "set",
+        "name": "set:c_vlan",
+        "xml": "<set>\n<parameter name='prop.bbs.c_vlan' value='`$network-input-parameters.param[$idx].value`' />\n",
+        "comments": "",
+        "x": 2800.38427734375,
+        "y": 748.6004413366318,
+        "z": "b5d9a62e.6044f8",
+        "wires": []
+    },
+    {
+        "id": "c04f9f0a.fdecd",
+        "type": "switchNode",
+        "name": "switch:s_vlan",
+        "xml": "<switch test=\"`$network-input-parameters.param[$idx].name == 's_vlan'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1873.3837356567383,
+        "y": 695.2226079702377,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "c02cb5b5.2a9368"
+            ]
+        ]
+    },
+    {
+        "id": "c02cb5b5.2a9368",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2082.383620262146,
+        "y": 694.2226060628891,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "ad861806.5a6d18"
+            ]
+        ]
+    },
+    {
+        "id": "e8f72dd1.3f17a",
+        "type": "set",
+        "name": "set:s_vlan",
+        "xml": "<set>\n<parameter name='prop.bbs.s_vlan' value='`$network-input-parameters.param[$idx].value`' />\n",
+        "comments": "",
+        "x": 2802.38419342041,
+        "y": 688.8226960897446,
+        "z": "b5d9a62e.6044f8",
+        "wires": []
+    },
+    {
+        "id": "1531c27c.bf6ace",
+        "type": "switchNode",
+        "name": "switch:ip_remote_id value",
+        "xml": "<switch test='`$network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2298.531597137451,
+        "y": 331.0002063512802,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "ead29df7.edff2",
+                "7088f31b.2c3bac"
+            ]
+        ]
+    },
+    {
+        "id": "7088f31b.2c3bac",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2599.5320053100586,
+        "y": 325.0002979040146,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "82c53c1.cbe2cc"
+            ]
+        ]
+    },
+    {
+        "id": "b65719a8.25dce8",
+        "type": "switchNode",
+        "name": "switch:ont_sn value",
+        "xml": "<switch test='`$network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2298.531597137451,
+        "y": 393.0002063512802,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "ead29df7.edff2",
+                "693a2d60.620f14"
+            ]
+        ]
+    },
+    {
+        "id": "693a2d60.620f14",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2601.5320053100586,
+        "y": 388.0002979040146,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "1cf31c48.ca8d04"
+            ]
+        ]
+    },
+    {
+        "id": "6d16f565.8a456c",
+        "type": "switchNode",
+        "name": "switch:c_vlan value",
+        "xml": "<switch test='`$network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2296.53178024292,
+        "y": 753.0003312826157,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "ead29df7.edff2",
+                "c393438f.bba03"
+            ]
+        ]
+    },
+    {
+        "id": "c393438f.bba03",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2600.5323791503906,
+        "y": 750.000425696373,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "da1647b1.e6b208"
+            ]
+        ]
+    },
+    {
+        "id": "ad861806.5a6d18",
+        "type": "switchNode",
+        "name": "switch:s_vlan value",
+        "xml": "<switch test='`$network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2295.53178024292,
+        "y": 694.0002912282944,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "ead29df7.edff2",
+                "bcb8e5a5.9e5928"
+            ]
+        ]
+    },
+    {
+        "id": "bcb8e5a5.9e5928",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2598.5321884155273,
+        "y": 690.0003827810287,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "e8f72dd1.3f17a"
+            ]
+        ]
+    },
+    {
+        "id": "ead29df7.edff2",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2611.531982421875,
+        "y": 168.00020730495453,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "b35dde56.d6c17"
+            ]
+        ]
+    },
+    {
+        "id": "70d3b64e.02f668",
+        "type": "switchNode",
+        "name": "switch:ip_service_type",
+        "xml": "<switch test=\"`$network-input-parameters.param[$idx].name == 'ip_service_type'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1880.364860534668,
+        "y": 453.00010430812836,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "920a7410.841ae8"
+            ]
+        ]
+    },
+    {
+        "id": "920a7410.841ae8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2089.3647451400757,
+        "y": 452.0001024007797,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "a417f2d7.b944f"
+            ]
+        ]
+    },
+    {
+        "id": "5db34f7f.78458",
+        "type": "set",
+        "name": "set:service_type",
+        "xml": "<set>\n<parameter name='prop.bbs.service_type' value='`$network-input-parameters.param[$idx].value`' />\n",
+        "comments": "",
+        "x": 2809.36531829834,
+        "y": 446.6001924276352,
+        "z": "b5d9a62e.6044f8",
+        "wires": []
+    },
+    {
+        "id": "a417f2d7.b944f",
+        "type": "switchNode",
+        "name": "switch:ip_service_type value",
+        "xml": "<switch test='`$network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2302.5129051208496,
+        "y": 451.777787566185,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "2cc279ab.a0af76",
+                "ead29df7.edff2"
+            ]
+        ]
+    },
+    {
+        "id": "2cc279ab.a0af76",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2605.513313293457,
+        "y": 447.7778791189194,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "5db34f7f.78458"
+            ]
+        ]
+    },
+    {
+        "id": "518351b3.5bba",
+        "type": "switchNode",
+        "name": "switch:ip_rg_mac_addr",
+        "xml": "<switch test=\"`$network-input-parameters.param[$idx].name == 'ip_rg_mac_addr'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1878.364860534668,
+        "y": 513.000106215477,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "8a32b1ef.5d1bd"
+            ]
+        ]
+    },
+    {
+        "id": "8a32b1ef.5d1bd",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2087.3647451400757,
+        "y": 512.0001043081284,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "d637aef8.5a4c4"
+            ]
+        ]
+    },
+    {
+        "id": "201d0bf8.38ef94",
+        "type": "set",
+        "name": "set:mac",
+        "xml": "<set>\n<parameter name='prop.bbs.mac' value='`$network-input-parameters.param[$idx].value`' />\n",
+        "comments": "",
+        "x": 2796.365234375,
+        "y": 506.6002343893051,
+        "z": "b5d9a62e.6044f8",
+        "wires": []
+    },
+    {
+        "id": "d637aef8.5a4c4",
+        "type": "switchNode",
+        "name": "switch:ip_rg_mac_addr value",
+        "xml": "<switch test='`$network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2300.5129051208496,
+        "y": 511.77778947353363,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "2891a7be.4e6178",
+                "ead29df7.edff2"
+            ]
+        ]
+    },
+    {
+        "id": "2891a7be.4e6178",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2603.513313293457,
+        "y": 507.777881026268,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "201d0bf8.38ef94"
+            ]
+        ]
+    },
+    {
+        "id": "363ebd91.fb5852",
+        "type": "switchNode",
+        "name": "switch:ip_downstream_speed",
+        "xml": "<switch test=\"`$network-input-parameters.param[$idx].name == 'ip_downstream_speed'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1877.3650207519531,
+        "y": 635.0002111196518,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "bb19ad4b.b256c"
+            ]
+        ]
+    },
+    {
+        "id": "bb19ad4b.b256c",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2086.364905357361,
+        "y": 634.0002092123032,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "fdc80625.9b6288"
+            ]
+        ]
+    },
+    {
+        "id": "541d49b3.202258",
+        "type": "set",
+        "name": "set:down_speed",
+        "xml": "<set>\n<parameter name='prop.bbs.down_speed' value='`$network-input-parameters.param[$idx].value`' />\n",
+        "comments": "",
+        "x": 2806.365478515625,
+        "y": 628.6002992391586,
+        "z": "b5d9a62e.6044f8",
+        "wires": []
+    },
+    {
+        "id": "fdc80625.9b6288",
+        "type": "switchNode",
+        "name": "switch:ip_downstream_speed value",
+        "xml": "<switch test='`$network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2299.5130653381348,
+        "y": 633.7778943777084,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "6796c19d.201ef",
+                "ead29df7.edff2"
+            ]
+        ]
+    },
+    {
+        "id": "6796c19d.201ef",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2602.513473510742,
+        "y": 629.7779859304428,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "541d49b3.202258"
+            ]
+        ]
+    },
+    {
+        "id": "f9293ec6.f63f5",
+        "type": "switchNode",
+        "name": "switch:service_id",
+        "xml": "<switch test=\"`$network-input-parameters.param[$idx].name == 'service_id'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1888.3647117614746,
+        "y": 274.0000089406967,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "5b9ff78a.e4ef68"
+            ]
+        ]
+    },
+    {
+        "id": "5b9ff78a.e4ef68",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2092.364631652832,
+        "y": 273.9999803304672,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "bd60c3c1.753f3"
+            ]
+        ]
+    },
+    {
+        "id": "666554a.9b343ac",
+        "type": "set",
+        "name": "set:service_id",
+        "xml": "<set>\n<parameter name='prop.bbs.service_id' value='`$network-input-parameters.param[$idx].value`' />\n",
+        "comments": "",
+        "x": 2811.3649940490723,
+        "y": 267.6000646352768,
+        "z": "b5d9a62e.6044f8",
+        "wires": []
+    },
+    {
+        "id": "bd60c3c1.753f3",
+        "type": "switchNode",
+        "name": "switch:service_id value",
+        "xml": "<switch test='`$network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2303.364631652832,
+        "y": 273.00001084804535,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "db0298c0.2da528"
+            ]
+        ]
+    },
+    {
+        "id": "db0298c0.2da528",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2604.3650398254395,
+        "y": 267.0001024007797,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "666554a.9b343ac"
+            ]
+        ]
+    },
+    {
+        "id": "3d4326b7.055a3a",
+        "type": "switchNode",
+        "name": "switch:ip_upstream_speed",
+        "xml": "<switch test=\"`$network-input-parameters.param[$idx].name == 'ip_upstream_speed'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1877.3651809692383,
+        "y": 574.0001882314682,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "b44522a4.559ad"
+            ]
+        ]
+    },
+    {
+        "id": "b44522a4.559ad",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2086.365065574646,
+        "y": 573.0001863241196,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "dd2d9b7b.ed18c8"
+            ]
+        ]
+    },
+    {
+        "id": "d48daabb.434658",
+        "type": "set",
+        "name": "set:up_speed",
+        "xml": "<set>\n<parameter name='prop.bbs.up_speed' value='`$network-input-parameters.param[$idx].value`' />\n",
+        "comments": "",
+        "x": 2806.36563873291,
+        "y": 567.600276350975,
+        "z": "b5d9a62e.6044f8",
+        "wires": []
+    },
+    {
+        "id": "dd2d9b7b.ed18c8",
+        "type": "switchNode",
+        "name": "switch:ip_upstream_speed value",
+        "xml": "<switch test='`$network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2299.51322555542,
+        "y": 572.7778714895248,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "45350699.e53268",
+                "ead29df7.edff2"
+            ]
+        ]
+    },
+    {
+        "id": "45350699.e53268",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2602.5136337280273,
+        "y": 568.7779630422592,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            [
+                "d48daabb.434658"
+            ]
+        ]
+    },
+    {
+        "id": "b35dde56.d6c17",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"`$network-input-parameters.param[$idx].name  +' value is null, please check it.'`\" />\n",
+        "comments": "",
+        "x": 2798.364501953125,
+        "y": 166.99999749660492,
+        "z": "b5d9a62e.6044f8",
+        "wires": []
+    },
+    {
+        "id": "b035a2d5.a72c7",
+        "type": "record",
+        "name": "log file",
+        "xml": " <record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n    <parameter name=\"file\" value=\"/opt/oak/logx.txt\" />\n    <parameter name=\"field1\" value=\"bbs-internet-profile-common\" />\n    <parameter name=\"field2\" value=\"`$prop.bbs.service_id`\" />\n    <parameter name=\"field3\" value=\"`$prop.bbs.remote_id`\" />\n    <parameter name=\"field4\" value=\"`$prop.bbs.ont_sn`\" />\n    <parameter name=\"field5\" value=\"`$prop.bbs.service_type`\" />\n    <parameter name=\"field6\" value=\"`$prop.bbs.mac`\" />\n    <parameter name=\"field7\" value=\"`$prop.bbs.up_speed`\" />\n    <parameter name=\"field8\" value=\"`$prop.bbs.down_speed`\" />\n    <parameter name=\"field9\" value=\"`$prop.bbs.s_vlan`\" />\n    <parameter name=\"field10\" value=\"`$prop.bbs.c_vlan`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1221.253345489502,
+        "y": 657.5555566549301,
+        "z": "b5d9a62e.6044f8",
+        "wires": [
+            []
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-create-huawei.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-create-huawei.json
new file mode 100644
index 0000000..1e7e189
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-create-huawei.json
@@ -0,0 +1,624 @@
+[
+    {
+        "id": "a336222.57d48e",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 223.03125,
+        "y": 256.03125,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "825ef52.3a00b08"
+            ]
+        ]
+    },
+    {
+        "id": "825ef52.3a00b08",
+        "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": 583.0308990478516,
+        "y": 257.0312719345093,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "b1e4bf68.32817"
+            ]
+        ]
+    },
+    {
+        "id": "b1e4bf68.32817",
+        "type": "method",
+        "name": "method:bbs-internet-profile-network-topology-operation-create-huawei",
+        "xml": "<method rpc='bbs-internet-profile-network-topology-operation-create-huawei' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 581.0309143066406,
+        "y": 477.0313491821289,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "5c27c5cc.716a9c"
+            ]
+        ]
+    },
+    {
+        "id": "5c27c5cc.716a9c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1005.0311126708984,
+        "y": 476.0313491821289,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "df661865.6ac258",
+                "ace54c5f.9cbb7",
+                "b56478eb.baf7f8",
+                "67bc1d3.308aae4"
+            ]
+        ]
+    },
+    {
+        "id": "df661865.6ac258",
+        "type": "call",
+        "name": "call:bbs-internet-profile-network-topology-operation-common-huawei",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-common-huawei' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1521.0314025878906,
+        "y": 389.0312690734863,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ace54c5f.9cbb7",
+        "type": "execute",
+        "name": "execute:CreateInternetProfileInstance",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode\" method=\"sendRequest\">\n    <parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/bbs-internet-profile-operation.json'`\" />\n    <parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/CreateInternetProfileInstance'`\" />\n    <parameter name=\"contentType\" value=\"application/json\"/>\n    <parameter name=\"httpMethod\" value=\"post\"/>\n    <parameter name=\"responsePrefix\" value=\"service-result\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1410.6820373535156,
+        "y": 474.9920845031738,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "d900182d.b78f38",
+                "632d7421.f9066c"
+            ]
+        ]
+    },
+    {
+        "id": "632d7421.f9066c",
+        "type": "outcome",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1712.0150184631348,
+        "y": 474.9920845031738,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "ab6b3ce2.e4f21"
+            ]
+        ]
+    },
+    {
+        "id": "d900182d.b78f38",
+        "type": "outcome",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1721.0149307250977,
+        "y": 549.9920864105225,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "3236773.1989488"
+            ]
+        ]
+    },
+    {
+        "id": "3236773.1989488",
+        "type": "switchNode",
+        "name": "switch:service-result",
+        "xml": "<switch test=\"`$service-result.errors.error[0].error-message`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1956.0310516357422,
+        "y": 549.0313816070557,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "1a5d7765.109479",
+                "57a6d69.9382728"
+            ]
+        ]
+    },
+    {
+        "id": "ab6b3ce2.e4f21",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error failed to call CreateInternetProfileInstance\" />\n",
+        "comments": "",
+        "x": 2224.282148361206,
+        "y": 475.281587600708,
+        "z": "aab7ce65.cac3d",
+        "wires": []
+    },
+    {
+        "id": "1a5d7765.109479",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2182.031391143799,
+        "y": 550.0314750671387,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "8eb57923.9623f8"
+            ]
+        ]
+    },
+    {
+        "id": "57a6d69.9382728",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2192.0310974121094,
+        "y": 636.0313415527344,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "4e694f8b.fdd2b"
+            ]
+        ]
+    },
+    {
+        "id": "8eb57923.9623f8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"`'Error CreateInternetProfileInstance return: '+$service-result.errors.error[0].error-message`\" />\n\n",
+        "comments": "",
+        "x": 2368.5310592651367,
+        "y": 550.0313119888306,
+        "z": "aab7ce65.cac3d",
+        "wires": []
+    },
+    {
+        "id": "4e694f8b.fdd2b",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2350.197727203369,
+        "y": 637.0313167572021,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b56478eb.baf7f8",
+        "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": 1315.5311737060547,
+        "y": 1274.031442642212,
+        "z": "aab7ce65.cac3d",
+        "wires": []
+    },
+    {
+        "id": "7577071d.7f2498",
+        "type": "save",
+        "name": "save:generic-vnf",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"generic-vnf\" key=\"generic-vnf.vnf-id = $vnf-id\" >\n<parameter name= \"vnf-id\" value = \"`$vnf-id`\"/>\n<parameter name=  \"vnf-name\" value = \"`$vnf-name`\"/>\n<parameter name=  \"vnf-type\" value = \"InternetProfile\"/>\n<parameter name=  \"service-id\" value = \"`$network-topology-operation-input.service-information.service-id`\"/>\n<parameter name=  \"prov-status\" value = \"ACTIVE\"/>\n<parameter name=  \"orchestration-status\" value = \"Active\"/>\n<parameter name=  \"is-closed-loop-disabled\" value = \"false\" />\n<parameter name=  \"model-invariant-id\" value = \"`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`\"/>\n<parameter name=  \"model-version-id\" value = \"`$network-topology-operation-input.network-information.onap-model-information.model-uuid`\"/>\n<parameter name=  \"model-customization-id\" value = \"`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1594.0624866485596,
+        "y": 940.062463760376,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "de67643d.0a9048",
+                "508bcbf7.e76f04",
+                "840edff8.2907d"
+            ]
+        ]
+    },
+    {
+        "id": "de67643d.0a9048",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1830.2843418121338,
+        "y": 811.9512214660645,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "fe5bd03.02c593"
+            ]
+        ]
+    },
+    {
+        "id": "508bcbf7.e76f04",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1841.260160446167,
+        "y": 871.9670777320862,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "703dd65f.36e058"
+            ]
+        ]
+    },
+    {
+        "id": "fe5bd03.02c593",
+        "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=\"Failure calling AAI to save generic-vnf\" />\n",
+        "comments": "",
+        "x": 2066.4268894195557,
+        "y": 811.5226864814758,
+        "z": "aab7ce65.cac3d",
+        "wires": []
+    },
+    {
+        "id": "703dd65f.36e058",
+        "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=\"generic-vnf instance does not exist in AAI\" />\n",
+        "comments": "",
+        "x": 2061.3076877593994,
+        "y": 872.4433922767639,
+        "z": "aab7ce65.cac3d",
+        "wires": []
+    },
+    {
+        "id": "840edff8.2907d",
+        "type": "outcome",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1834.8709659576416,
+        "y": 937.0935578346252,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d7aa4847.5acd58",
+        "type": "record",
+        "name": "log file",
+        "xml": " <record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n    <parameter name=\"file\" value=\"/opt/oak/logx.txt\" />\n    <parameter name=\"field1\" value=\"save generic-vnf success!\" />\n    ",
+        "comments": "",
+        "outputs": 1,
+        "x": 2042.8712196350098,
+        "y": 935.0936870574951,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5fc61219.65927c",
+        "type": "save",
+        "name": "save:metadata",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"service-instance:metadata\"\n key=\"service-instance.service-instance-id = $network-topology-operation-input.service-information.service-id  \n\tAND customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id\n\t  AND service-subscription.service-type = $network-topology-operation-input.service-information.subscription-service-type\n\t  AND service-instance.service-instance-id =  $network-topology-operation-input.service-information.service-instance-id\"  force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"metadata.metadatum[0].metaname\" value=\"service-type\" />\n    <parameter name=\"metadata.metadatum[0].metaval\" value=\"`$prop.bbs.service_type`\" />\n    <parameter name=\"metadata.metadatum[1].metaname\" value=\"up-speed\" />\n    <parameter name=\"metadata.metadatum[1].metaval\" value=\"`$prop.bbs.up_speed`\" />\n    <parameter name=\"metadata.metadatum[2].metaname\" value=\"down-speed\" />\n    <parameter name=\"metadata.metadatum[2].metaval\" value=\"`$prop.bbs.down_speed`\" />\n    <parameter name=\"metadata.metadatum[3].metaname\" value=\"cvlan\" />\n    <parameter name=\"metadata.metadatum[3].metaval\" value=\"`$prop.bbs.c_vlan`\" />\n    <parameter name=\"metadata.metadatum[4].metaname\" value=\"svlan\" />\n    <parameter name=\"metadata.metadatum[4].metaval\" value=\"`$prop.bbs.s_vlan`\" />\n    <parameter name=\"metadata.metadatum[5].metaname\" value=\"expected-ont-id\" />\n    <parameter name=\"metadata.metadatum[5].metaval\" value=\"`$prop.bbs.ont_sn`\" />\n    <parameter name=\"metadata.metadatum[6].metaname\" value=\"rgw-mac-address\" />\n    <parameter name=\"metadata.metadatum[6].metaval\" value=\"`$prop.bbs.mac`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1592.5618381500244,
+        "y": 1092.0622310638428,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "9b60d426.7e33d8",
+                "c2480a0e.1b1478",
+                "a17ec97.b6aa738"
+            ]
+        ]
+    },
+    {
+        "id": "9b60d426.7e33d8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1823.037347793579,
+        "y": 1023.4268345832825,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "54deb41c.97ae6c"
+            ]
+        ]
+    },
+    {
+        "id": "c2480a0e.1b1478",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1835.0135097503662,
+        "y": 1093.4427680969238,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "15a91907.6a2f77"
+            ]
+        ]
+    },
+    {
+        "id": "54deb41c.97ae6c",
+        "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=\"Failure calling AAI to save metadatum\" />\n",
+        "comments": "",
+        "x": 2063.1801433563232,
+        "y": 1021.998336315155,
+        "z": "aab7ce65.cac3d",
+        "wires": []
+    },
+    {
+        "id": "15a91907.6a2f77",
+        "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=\"metadatum instance does not exist in AAI\" />\n",
+        "comments": "",
+        "x": 2060.0610427856445,
+        "y": 1092.9190044403076,
+        "z": "aab7ce65.cac3d",
+        "wires": []
+    },
+    {
+        "id": "a17ec97.b6aa738",
+        "type": "outcome",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1829.6242198944092,
+        "y": 1163.5692076683044,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e577d9f5.accf98",
+        "type": "record",
+        "name": "log file",
+        "xml": " <record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n    <parameter name=\"file\" value=\"/opt/oak/logx.txt\" />\n    <parameter name=\"field1\" value=\"save metadatum success!\" />\n    ",
+        "comments": "",
+        "outputs": 1,
+        "x": 2040.6242198944092,
+        "y": 1163.5692076683044,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "67bc1d3.308aae4",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1289.196086883545,
+        "y": 814.0310153961182,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "7577071d.7f2498",
+                "5fc61219.65927c",
+                "6fa2d919.edbe98",
+                "a47acb9b.a35478",
+                "3aa091fc.f969ae"
+            ]
+        ]
+    },
+    {
+        "id": "6fa2d919.edbe98",
+        "type": "set",
+        "name": "set:variables",
+        "xml": "<set>\n<parameter name='vnf-id' value=\"`$prop.random-data-list[3]`\"/>\n<parameter name='vnf-name' value=\"`'vnf-'+$prop.random-data-list[4]`\"/>\n",
+        "comments": "",
+        "x": 1577.1964359283447,
+        "y": 810.364013671875,
+        "z": "aab7ce65.cac3d",
+        "wires": []
+    },
+    {
+        "id": "a47acb9b.a35478",
+        "type": "execute",
+        "name": "execute:generate",
+        "xml": " <execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\">\n    <parameter name=\"ctx-destination\" value=\"prop.random-data\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1598.5606498718262,
+        "y": 736.061863899231,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "b904a8e6.00ba98"
+            ]
+        ]
+    },
+    {
+        "id": "b904a8e6.00ba98",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1827.5605926513672,
+        "y": 737.0618381500244,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "973e3b14.e96fb8"
+            ]
+        ]
+    },
+    {
+        "id": "973e3b14.e96fb8",
+        "type": "execute",
+        "name": "execute",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n    <parameter name=\"ctx_memory_result_key\" value=\"prop.random-data-list\"/>\n    <parameter name=\"original_string\" value=\"`$prop.random-data`\"/>\n    <parameter name=\"regex\" value=\"-\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2018.5606498718262,
+        "y": 735.0618381500244,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "dd3fe058.06716"
+            ]
+        ]
+    },
+    {
+        "id": "61f078a0.340828",
+        "type": "record",
+        "name": "log file",
+        "xml": " <record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n    <parameter name=\"file\" value=\"/opt/oak/logx.txt\" />\n    <parameter name=\"field1\" value=\"`$prop.random-data`\" />\n    ",
+        "comments": "",
+        "outputs": 1,
+        "x": 2350.560712814331,
+        "y": 733.0618991851807,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "dd3fe058.06716",
+        "type": "outcome",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2185.56058883667,
+        "y": 734.0618686676025,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3aa091fc.f969ae",
+        "type": "save",
+        "name": "save:relationship",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"service-instance:relationship-list\" \n      key=\"service-instance.service-instance-id =  $network-topology-operation-input.service-information.service-id\n         AND customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id\n         AND service-subscription.service-type =  $network-topology-operation-input.service-information.subscription-service-type \n         AND service-instance.service-instance-id =  $network-topology-operation-input.service-information.service-instance-id\" force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"generic-vnf\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/generic-vnfs/generic-vnf/' + $vnf-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"generic-vnf.vnf-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$vnf-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1538.03125,
+        "y": 1312.03125,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "3b4ae4d5.3b347c",
+                "987fe733.92a5d8",
+                "73836da.8f43494"
+            ]
+        ]
+    },
+    {
+        "id": "3b4ae4d5.3b347c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1768.5067596435547,
+        "y": 1243.3958535194397,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "2856d517.9eb7ba"
+            ]
+        ]
+    },
+    {
+        "id": "987fe733.92a5d8",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1780.4829216003418,
+        "y": 1313.411787033081,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            [
+                "43a5ebe7.d55dc4"
+            ]
+        ]
+    },
+    {
+        "id": "2856d517.9eb7ba",
+        "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=\"Failure calling AAI to save metadatum\" />\n",
+        "comments": "",
+        "x": 2008.6495552062988,
+        "y": 1241.9673552513123,
+        "z": "aab7ce65.cac3d",
+        "wires": []
+    },
+    {
+        "id": "43a5ebe7.d55dc4",
+        "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=\"metadatum instance does not exist in AAI\" />\n",
+        "comments": "",
+        "x": 2005.5304546356201,
+        "y": 1312.8880233764648,
+        "z": "aab7ce65.cac3d",
+        "wires": []
+    },
+    {
+        "id": "73836da.8f43494",
+        "type": "outcome",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1775.0936317443848,
+        "y": 1383.5382266044617,
+        "z": "aab7ce65.cac3d",
+        "wires": [
+            []
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-delete-huawei.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-delete-huawei.json
new file mode 100644
index 0000000..c5d0622
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-delete-huawei.json
@@ -0,0 +1,487 @@
+[

+    {

+        "id": "8393dc4.b00f62",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 100.00977325439453,

+        "y": 67.509765625,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "a8de9e47.ef835"

+            ]

+        ]

+    },

+    {

+        "id": "a8de9e47.ef835",

+        "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": 408.0094223022461,

+        "y": 67.50978755950928,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "412ac3c4.59356c"

+            ]

+        ]

+    },

+    {

+        "id": "412ac3c4.59356c",

+        "type": "method",

+        "name": "method:bbs-internet-profile-network-topology-operation-delete-huawei",

+        "xml": "<method rpc='bbs-internet-profile-network-topology-operation-delete-huawei' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 406.00940704345703,

+        "y": 263.5098638534546,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "d96b6a61.651aa8"

+            ]

+        ]

+    },

+    {

+        "id": "d96b6a61.651aa8",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 813.009635925293,

+        "y": 264.50982761383057,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "ed43d6ea.1722d8",

+                "dc1e34e.cfd17c8",

+                "4bbf7971.41bc68",

+                "643f2b24.3a23e4",

+                "17c5a97a.f12a27"

+            ]

+        ]

+    },

+    {

+        "id": "ed43d6ea.1722d8",

+        "type": "execute",

+        "name": "execute:DeleteInternetProfileInstance",

+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode\" method=\"sendRequest\">\n    <parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/bbs-internet-profile-operation.json'`\" />\n    <parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/DeleteInternetProfileInstance'`\" />\n    <parameter name=\"contentType\" value=\"application/json\"/>\n    <parameter name=\"httpMethod\" value=\"post\"/>\n    <parameter name=\"responsePrefix\" value=\"service-result\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1201.6606979370117,

+        "y": 268.4706506729126,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "1ac2698.caf4797",

+                "a7098526.9b3d78"

+            ]

+        ]

+    },

+    {

+        "id": "a7098526.9b3d78",

+        "type": "outcome",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1502.9936790466309,

+        "y": 268.4706506729126,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "9700e544.024e48"

+            ]

+        ]

+    },

+    {

+        "id": "1ac2698.caf4797",

+        "type": "outcome",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1511.9935913085938,

+        "y": 343.47065258026123,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "37607f24.53bf"

+            ]

+        ]

+    },

+    {

+        "id": "37607f24.53bf",

+        "type": "switchNode",

+        "name": "switch:service-result",

+        "xml": "<switch test=\"`$service-result.errors.error[0].error-message`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1747.0097122192383,

+        "y": 342.50994777679443,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "563023ed.4ba30c",

+                "b0e164e3.f2a418"

+            ]

+        ]

+    },

+    {

+        "id": "9700e544.024e48",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error failed to call DeleteInternetProfileInstance\" />\n",

+        "comments": "",

+        "x": 2011.9272918701172,

+        "y": 268.76019859313965,

+        "z": "633a4b5b.599dd4",

+        "wires": []

+    },

+    {

+        "id": "563023ed.4ba30c",

+        "type": "outcome",

+        "name": "Other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1973.010051727295,

+        "y": 343.51004123687744,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "55172168.37133"

+            ]

+        ]

+    },

+    {

+        "id": "b0e164e3.f2a418",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1983.0097579956055,

+        "y": 429.50990772247314,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "fe385e37.9e9a5"

+            ]

+        ]

+    },

+    {

+        "id": "55172168.37133",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"`'Error DeleteInternetProfileInstance return: '+$service-result.errors.error[0].error-message`\" />\n\n",

+        "comments": "",

+        "x": 2159.509719848633,

+        "y": 343.50987815856934,

+        "z": "633a4b5b.599dd4",

+        "wires": []

+    },

+    {

+        "id": "fe385e37.9e9a5",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2141.1763877868652,

+        "y": 430.5098829269409,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dc1e34e.cfd17c8",

+        "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": 1140.398536682129,

+        "y": 781.3988790512085,

+        "z": "633a4b5b.599dd4",

+        "wires": []

+    },

+    {

+        "id": "4bbf7971.41bc68",

+        "type": "call",

+        "name": "call:bbs-internet-profile-network-topology-operation-common-huawei",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-common-huawei' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1313.6766815185547,

+        "y": 184.50982093811035,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "65346647.308a38",

+        "type": "comment",

+        "name": "fetch relationship-list",

+        "info": "",

+        "comments": "",

+        "x": 1150.1802520751953,

+        "y": 389.7358646392822,

+        "z": "633a4b5b.599dd4",

+        "wires": []

+    },

+    {

+        "id": "643f2b24.3a23e4",

+        "type": "for",

+        "name": "for relationship data",

+        "xml": "<for silentFailure='false' index='rdidx' start='0' end=\"`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data_length`\" >",

+        "comments": "",

+        "outputs": 1,

+        "x": 1153.6527824401855,

+        "y": 443.4859027862549,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "99905752.097928"

+            ]

+        ]

+    },

+    {

+        "id": "fb8a9592.251f98",

+        "type": "switchNode",

+        "name": "switch vnf-id",

+        "xml": "<switch test='`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1501.8748245239258,

+        "y": 443.15258836746216,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "92d4d21b.2f71c"

+            ]

+        ]

+    },

+    {

+        "id": "92d4d21b.2f71c",

+        "type": "other",

+        "name": "generic-vnf.vnf-id",

+        "xml": "<outcome value='generic-vnf.vnf-id'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1675.0970458984375,

+        "y": 443.2636499404907,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "8caf9fcc.5729f"

+            ]

+        ]

+    },

+    {

+        "id": "8caf9fcc.5729f",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1854.3192672729492,

+        "y": 511.0414514541626,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "b3868d5c.48189"

+            ]

+        ]

+    },

+    {

+        "id": "b3868d5c.48189",

+        "type": "update",

+        "name": "get AAI generic-vnf",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value\"\n        pfx='aai.generic-vnf' local-only='false' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 2065.485954284668,

+        "y": 512.0414886474609,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "df1dd418.bafea8"

+            ]

+        ]

+    },

+    {

+        "id": "df29b5c0.224818",

+        "type": "switchNode",

+        "name": "switch vnf-type",

+        "xml": "<switch test='`$aai.generic-vnf.vnf-type`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2636.7645721435547,

+        "y": 518.2636861801147,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "859c71d2.e161e"

+            ]

+        ]

+    },

+    {

+        "id": "859c71d2.e161e",

+        "type": "other",

+        "name": "InternetProfile",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2830.7643280029297,

+        "y": 512.2637157440186,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "2d3afaef.f0ec06"

+            ]

+        ]

+    },

+    {

+        "id": "2d3afaef.f0ec06",

+        "type": "set",

+        "name": "set InternetProfile vnf-id",

+        "xml": "<set>\n<parameter name='prop.bbs.internetProfileVNFId' value='`$aai.generic-vnf.vnf-id`' />\n",

+        "comments": "",

+        "x": 3074.7638397216797,

+        "y": 510.26364040374756,

+        "z": "633a4b5b.599dd4",

+        "wires": []

+    },

+    {

+        "id": "485cf5c2.abf84c",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1334.2080688476562,

+        "y": 614.4025859832764,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "a29bb2f2.980ac"

+            ]

+        ]

+    },

+    {

+        "id": "93da79ed.e4ae48",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1342.2080688476562,

+        "y": 674.4025859832764,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "a29bb2f2.980ac"

+            ]

+        ]

+    },

+    {

+        "id": "a29bb2f2.980ac",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",

+        "comments": "",

+        "x": 1550.2080688476562,

+        "y": 649.4025859832764,

+        "z": "633a4b5b.599dd4",

+        "wires": []

+    },

+    {

+        "id": "99905752.097928",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1337.0136337280273,

+        "y": 443.31922149658203,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "fb8a9592.251f98"

+            ]

+        ]

+    },

+    {

+        "id": "75dc5fdd.d172c",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2453.763717651367,

+        "y": 518.7636861801147,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "df29b5c0.224818"

+            ]

+        ]

+    },

+    {

+        "id": "df1dd418.bafea8",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2251.208080291748,

+        "y": 511.4025754928589,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "75dc5fdd.d172c"

+            ]

+        ]

+    },

+    {

+        "id": "17c5a97a.f12a27",

+        "type": "update",

+        "name": "deleteResourceAAI",

+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $prop.bbs.internetProfileVNFId\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1144.170997619629,

+        "y": 614.4487934112549,

+        "z": "633a4b5b.599dd4",

+        "wires": [

+            [

+                "485cf5c2.abf84c",

+                "93da79ed.e4ae48"

+            ]

+        ]

+    },

+    {

+        "id": "63b45757.74e858",

+        "type": "comment",

+        "name": "delete AAI resource",

+        "info": "",

+        "comments": "",

+        "x": 1141.948844909668,

+        "y": 561.115478515625,

+        "z": "633a4b5b.599dd4",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-activate.json
new file mode 100755
index 0000000..68f46e6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-activate.json
@@ -0,0 +1 @@
+[{"id":"aa32063c.93243","type":"dgstart","name":"DGSTART","outputs":1,"x":236,"y":109,"z":"6c1fa692.a38a58","wires":[["833978dd.304958"]]},{"id":"833978dd.304958","type":"service-logic","name":"GENERIC-RESOURCE-API","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":332.2380790710449,"y":169.95239067077637,"z":"6c1fa692.a38a58","wires":[["b96884bf.17b1d8"]]},{"id":"b96884bf.17b1d8","type":"method","name":"brg-topology-operation-activate","xml":"<method rpc='brg-topology-operation-activate' mode='sync'>\n","comments":"","outputs":1,"x":378.15485763549805,"y":205.19044589996338,"z":"6c1fa692.a38a58","wires":[["c66eed15.187018"]]},{"id":"c66eed15.187018","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":245.9761962890625,"y":2112.02392578125,"z":"6c1fa692.a38a58","wires":[["50cb6b9d.38fa3c","ad1d1588.d76d","1afb7e82.eefe39","62d81f8c.21d7e8","7b6d22c9.e07ccc","1e99334.059e24d","1fbb479c.9b3e88","bb9bf99c.661c18","a41547ad.552528","7f6e2b92.2edeec","6a1a8118.ef901","761cfa6d.4a86bc","26582af.1a68ed6","e30e637f.d69ce8","536b348f.d4cf9c","d5288677.a2085","4cafc9eb.8872b","b8b17236.7bf06","7946e793.89f08","2e22cf41.82e978","a173f61c.f54af","25449935.bf4046","534527cb.5330b","fbbea4d5.1f17","bcd27cb7.187a6","574f0bbd.60c3ec","3451b716.87d158","52a794a3.717be4","4fe4fbe1.fdb434","803aa305.29b728","fcd41611.21ace","66b07f90.f3cf2","fe0cd6c.e5be028","e51d221e.ee2ab8","1879320e.a502ce","2e1dc18a.e0a76e"]]},{"id":"ad1d1588.d76d","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":550.5002098083496,"y":2665.381863594055,"z":"6c1fa692.a38a58","wires":[]},{"id":"50cb6b9d.38fa3c","type":"set","name":"set output to api handler","xml":"<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='brg-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $tmp.service-data.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n <!--\nbrg-topology-operation-input.allotted-resource-information.parent-service-instance-id\n \n brg-topology-operation-input.service-information.service-instance-id\n -->\n","comments":"","x":576.2541198730469,"y":2622.504550933838,"z":"6c1fa692.a38a58","wires":[]},{"id":"7f6e2b92.2edeec","type":"set","name":"set allotted-resource-oper-status","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n","comments":"","x":592.7542190551758,"y":729.0514001846313,"z":"6c1fa692.a38a58","wires":[]},{"id":"62d81f8c.21d7e8","type":"set","name":"set tmp.ar.self-link","xml":"<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/brg-topology/'` \" />\n\n","comments":"","x":546.738037109375,"y":341.33331298828125,"z":"6c1fa692.a38a58","wires":[]},{"id":"1afb7e82.eefe39","type":"set","name":"set tmp.ar.allotted-resource-id,etc","xml":"<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<!--\n<parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />\n-->\n\n","comments":"","x":586.997314453125,"y":256.59259033203125,"z":"6c1fa692.a38a58","wires":[]},{"id":"7b6d22c9.e07ccc","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":552.9934196472168,"y":379.23152446746826,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"1fbb479c.9b3e88","type":"execute","name":"execute RestApiCallNode - Get AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":617.5187530517578,"y":519.4594917297363,"z":"6c1fa692.a38a58","wires":[["158f0da2.87450a","5d6d055b.455bac"]]},{"id":"1e99334.059e24d","type":"execute","name":"generate allotted-resource url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.brg-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n","comments":"","outputs":1,"x":581.0648536682129,"y":439.0172290802002,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"158f0da2.87450a","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":874.8148918151855,"y":518.2672522068024,"z":"6c1fa692.a38a58","wires":[["39c8028b.d1ebd6"]]},{"id":"bb9bf99c.661c18","type":"execute","name":"execute RestApiCallNode - PUT AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":625.5293121337891,"y":872.4341316223145,"z":"6c1fa692.a38a58","wires":[["38d0e910.62fe16","b331edc.274599","6a7f51cd.da458"]]},{"id":"38d0e910.62fe16","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1149.8373832702637,"y":897.4324235916138,"z":"6c1fa692.a38a58","wires":[["cc616362.9090e8"]]},{"id":"b331edc.274599","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1140.8374328613281,"y":865.9324493408203,"z":"6c1fa692.a38a58","wires":[["cc616362.9090e8"]]},{"id":"6a7f51cd.da458","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1144.5874710083008,"y":836.2895542159677,"z":"6c1fa692.a38a58","wires":[["d1c749b9.48fe3"]]},{"id":"cc616362.9090e8","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 updating md-sal for brg-allotted-resource\" />\n","comments":"","x":1310.5874710083008,"y":866.6824731826782,"z":"6c1fa692.a38a58","wires":[]},{"id":"39c8028b.d1ebd6","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1055.8148460388184,"y":518.7672016620636,"z":"6c1fa692.a38a58","wires":[["38b40fc9.d62398","9b187214.4c99c"]]},{"id":"38b40fc9.d62398","type":"switchNode","name":"switch brg length","xml":"<switch test='`$mdsal-ar.brg-allotted-resource_length`'>\n","comments":"","outputs":1,"x":1301.6720924377441,"y":553.052964925766,"z":"6c1fa692.a38a58","wires":[["253116a2.13449a"]]},{"id":"253116a2.13449a","type":"other","name":"outcome 1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1492.6720962524414,"y":553.0529625415802,"z":"6c1fa692.a38a58","wires":[["a60326b3.15b8b"]]},{"id":"9c10ae24.f65718","type":"set","name":"set brg-ar from get","xml":"<set>\n<parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />\n","comments":"","x":1892.5292320251465,"y":553.6243867874146,"z":"6c1fa692.a38a58","wires":[]},{"id":"a60326b3.15b8b","type":"block","name":"block: atomic","xml":"<block atomic='true'>\n","atomic":"false","comments":"","outputs":1,"x":1663.5290794372559,"y":553.6244316101074,"z":"6c1fa692.a38a58","wires":[["9c10ae24.f65718","fd36fe44.f9fcd8","d42701c6.15bc"]]},{"id":"fd36fe44.f9fcd8","type":"set","name":"set oper-status","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n","comments":"","x":1890.5294761657715,"y":621.0529508590698,"z":"6c1fa692.a38a58","wires":[]},{"id":"f1b9b26c.17f35","type":"comment","name":"GET brg-allotted-resource from mdsal","info":"","comments":"","x":642.8148155212402,"y":482.7671926021576,"z":"6c1fa692.a38a58","wires":[]},{"id":"d42701c6.15bc","type":"switchNode","name":"switch order-status","xml":"<switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1900.52925491333,"y":586.6243848800659,"z":"6c1fa692.a38a58","wires":[["f5a846c5.f6614","4162652a.0eb31c"]]},{"id":"f5a846c5.f6614","type":"outcome","name":"outcome Created","xml":"<outcome value='Created'>\n","comments":"","outputs":1,"x":2112.1292114257812,"y":547.6243848800659,"z":"6c1fa692.a38a58","wires":[["54f38743.c68978"]]},{"id":"4162652a.0eb31c","type":"outcome","name":"outcome Other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2137.8435859680176,"y":583.052975654602,"z":"6c1fa692.a38a58","wires":[["54f38743.c68978"]]},{"id":"69655148.a35838","type":"comment","name":"Set allotted-resource-identifiers","info":"","comments":"","x":598.3386383056641,"y":573.3386459350586,"z":"6c1fa692.a38a58","wires":[]},{"id":"9b187214.4c99c","type":"set","name":"save backup copy of mdsal-ar for rollback","xml":"<set>\n<parameter name='bk-brg-ar' value='$mdsal-ar.' />\n","comments":"","x":1381.3864250183105,"y":518.7672936916351,"z":"6c1fa692.a38a58","wires":[]},{"id":"d5a3d619.6f2c1","type":"comment","name":"Create urls for restapi","info":"","comments":"","x":551.9576606750488,"y":408.6243562698364,"z":"6c1fa692.a38a58","wires":[]},{"id":"d1c749b9.48fe3","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1286.2434387207031,"y":832.4817234054208,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"911da86f.77f9d","type":"comment","name":"TO DO: vnf/put parent","info":"","comments":"","x":556.2433776855469,"y":761.1481952667236,"z":"6c1fa692.a38a58","wires":[]},{"id":"a41547ad.552528","type":"execute","name":"execute getTime","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n","comments":"","outputs":1,"x":540.2433815002441,"y":690.4815549850464,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"5d6d055b.455bac","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":874.5766868591309,"y":554.4814250469208,"z":"6c1fa692.a38a58","wires":[["51999669.382ec"]]},{"id":"51999669.382ec","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1054.5766372680664,"y":555.1479756832123,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"6a1a8118.ef901","type":"set","name":"set id","xml":"<set>\n<parameter name='brg-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='brg-ar.allotted-resource-status.action' value=\"`$brg-topology-operation-input.request-information.request-action` \" />\n<parameter name='brg-ar.allotted-resource-status.rpc-name' value=\"brg-topology-operation\" />\n<parameter name='brg-ar.allotted-resource-status.rpc-action' value=\"`$brg-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$brg-topology-operation-input.request-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$brg-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$brg-topology-operation-input.service-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$brg-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.' value=\"`$brg-topology-operation-input.brg-request-input.` \" />","comments":"","x":523.2434234619141,"y":610.1481666564941,"z":"6c1fa692.a38a58","wires":[]},{"id":"54f38743.c68978","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2326.5997276306152,"y":549.0000190734863,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"761cfa6d.4a86bc","type":"update","name":"update AAI allotted-resource","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $brg-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $brg-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $brg-topology-operation-input.allotted-resource-information.parent-service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"operational-status\" value=\"in-service-path\" />\n","comments":"","outputs":1,"x":583.8571624755859,"y":794.2380628585815,"z":"6c1fa692.a38a58","wires":[["c14221c9.4904f8","c8137cf1.86be"]]},{"id":"c14221c9.4904f8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":839.6190567016602,"y":777.1905598640442,"z":"6c1fa692.a38a58","wires":[["a1949e47.9f4ee"]]},{"id":"a1949e47.9f4ee","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=\"AAI failed\" />\n","comments":"","x":1006.142936706543,"y":788.8096308708191,"z":"6c1fa692.a38a58","wires":[]},{"id":"c8137cf1.86be","type":"failure","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":846.7143440246582,"y":809.9525275230408,"z":"6c1fa692.a38a58","wires":[["a1949e47.9f4ee"]]},{"id":"26582af.1a68ed6","type":"execute","name":"execute RestApiCallNode - setup BRG to vgMux vxlan tunnel port","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.vxlan-tunnel.templatefile`\" />\n    <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />\n    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />\n    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"honeycomb-vnf\" />\n\n","comments":"","outputs":1,"x":696.0000610351562,"y":1363.6668300628662,"z":"6c1fa692.a38a58","wires":[["c35188aa.9d267","6b7f71c4.2210e","15e48478.12fb44"]]},{"id":"c35188aa.9d267","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1029.9748497009277,"y":1422.9984420761466,"z":"6c1fa692.a38a58","wires":[["cc0c8074.979a3"]]},{"id":"6b7f71c4.2210e","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1020.9748992919922,"y":1391.4984678253531,"z":"6c1fa692.a38a58","wires":[["cc0c8074.979a3"]]},{"id":"15e48478.12fb44","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1024.7249374389648,"y":1361.8555727005005,"z":"6c1fa692.a38a58","wires":[["f47ec3c3.abb0f"]]},{"id":"cc0c8074.979a3","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 setting up vxlan tunnel\" />\n","comments":"","x":1190.7249374389648,"y":1392.248491667211,"z":"6c1fa692.a38a58","wires":[]},{"id":"f47ec3c3.abb0f","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1166.3809051513672,"y":1358.0477418899536,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"e30e637f.d69ce8","type":"execute","name":"execute RestApiCallNode - setup BRG vxlan bridge domain","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.bridge-domain.templatefile`\" />\n    <parameter name='restapiUrl' value=\"`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `\" />\n    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />\n    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"honeycomb-vnf\" />\n\n","comments":"","outputs":1,"x":677.6668243408203,"y":1510.3336246013641,"z":"6c1fa692.a38a58","wires":[["121ea1b0.ea0a96","71341c4e.7c87ac","27bd0ccf.487614"]]},{"id":"121ea1b0.ea0a96","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1098.9747314453125,"y":1565.9985536560416,"z":"6c1fa692.a38a58","wires":[["cdacc825.c32108"]]},{"id":"71341c4e.7c87ac","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1089.974781036377,"y":1534.4985794052482,"z":"6c1fa692.a38a58","wires":[["cdacc825.c32108"]]},{"id":"27bd0ccf.487614","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1093.7248191833496,"y":1504.8556842803955,"z":"6c1fa692.a38a58","wires":[["dd14f52.3d66b08"]]},{"id":"cdacc825.c32108","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 setting up bridge domain\" />\n","comments":"","x":1259.7248191833496,"y":1535.248603247106,"z":"6c1fa692.a38a58","wires":[]},{"id":"dd14f52.3d66b08","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1235.380786895752,"y":1501.0478534698486,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"4cafc9eb.8872b","type":"set","name":"set BRG to vgMUX VXLAN Tunnel Port Props","xml":"<set>\n<parameter name='tmp.tunnel-name' value=\"`'vxlanTun' + $brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-lan-ip` \" />\n<parameter name='tmp.tunnel-dest-ip' value=\"`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-lan-ip` \" />\n<parameter name='tmp.tunnel-src-ip' value=\"`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip` \" />\n<parameter name='tmp.tunnel-vni' value=\"`$brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.vni` \" />","comments":"","x":632.1112060546875,"y":1228.6670894622803,"z":"6c1fa692.a38a58","wires":[]},{"id":"d5288677.a2085","type":"execute","name":"generate full brg-vpp-honeycomb url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vpp-honeycomb`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vpp-honeycomb-url\"/>\n    <parameter name=\"target\" value=\"{tunnel-name}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.tunnel-name`\"/>\n","comments":"","outputs":1,"x":603.7778472900391,"y":1283.6668682098389,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"536b348f.d4cf9c","type":"execute","name":"generate honeycomb-url to vBRG","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.honeycomb.url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.honeycomb.url\"/>\n    <parameter name=\"target\" value=\"{honeycomb-instance-ip}\"/>\n    <parameter name=\"replacement\" value=\"`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip`\"/>\n","comments":"","outputs":1,"x":594.7778778076172,"y":1172.3333940505981,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"b8b17236.7bf06","type":"set","name":"set BRG Bridge Domain Props","xml":"<set>\n<parameter name='tmp.bridge-domain' value=\"bridge-domain-10\" />\n<parameter name='tmp.split-horizon-group' value=\"2\" />","comments":"","x":587.1111602783203,"y":1435.3334999084473,"z":"6c1fa692.a38a58","wires":[]},{"id":"ba483f5.d1e594","type":"comment","name":"save service data for BRG to md-sal for SO to do GET ","info":"http://c1.vm1.sdnc.simpledemo.openecomp.org:8282/restconf/config/GENERIC-RESOURCE-API:services/service/e565bb6b-de14-4a5c-a992-65a681771a7a/service-data/service-topology/\n\n\nservice-instance-id is of the vBRG (in VNF-API data)","comments":"","x":329.79503631591797,"y":2213.7715578079224,"z":"6c1fa692.a38a58","wires":[]},{"id":"2e22cf41.82e978","type":"execute","name":"execute RestApiCallNode - Get service-data by vnf-id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vnf-api-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"service-data\" />\n\n","comments":"","outputs":1,"x":662.0015068054199,"y":2340.8350467681885,"z":"6c1fa692.a38a58","wires":[["27e1f386.d18d9c","98885b52.6aac4"]]},{"id":"27e1f386.d18d9c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":950.8214263916016,"y":2338.2143902778625,"z":"6c1fa692.a38a58","wires":[["9811fdce.4362f"]]},{"id":"9811fdce.4362f","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1131.8213806152344,"y":2338.714339733124,"z":"6c1fa692.a38a58","wires":[["ae238cfd.99a978","ff84fda2.c98b9"]]},{"id":"ae238cfd.99a978","type":"switchNode","name":"switch brg length","xml":"<switch test='`$service-data.service-data_length`'>\n","comments":"","outputs":1,"x":1377.6786270141602,"y":2373.000102996826,"z":"6c1fa692.a38a58","wires":[["1239e54c.ee9663"]]},{"id":"1239e54c.ee9663","type":"other","name":"outcome 1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1568.6786308288574,"y":2373.0001006126404,"z":"6c1fa692.a38a58","wires":[["ea02cbd2.3046e"]]},{"id":"df56b573.34663","type":"set","name":"set service-data from get","xml":"<set>\n<parameter name='tmp.service-data.' value='$service-data.service-data[0].' />\n","comments":"","x":1968.5357666015625,"y":2373.5715248584747,"z":"6c1fa692.a38a58","wires":[]},{"id":"ea02cbd2.3046e","type":"block","name":"block: atomic","xml":"<block atomic='true'>\n","atomic":"false","comments":"","outputs":1,"x":1739.5356140136719,"y":2373.5715696811676,"z":"6c1fa692.a38a58","wires":[["df56b573.34663","f04b4bc1.0daf68"]]},{"id":"3fbbcb04.80fcec","type":"comment","name":"GET vnf-api service info","info":"","comments":"","x":567.3927612304688,"y":2304.1427431106567,"z":"6c1fa692.a38a58","wires":[]},{"id":"f04b4bc1.0daf68","type":"switchNode","name":"switch order-status","xml":"<switch test='`$tmp.service-data.order-status`'>\n","comments":"","outputs":1,"x":1952.249984741211,"y":2425.1429500579834,"z":"6c1fa692.a38a58","wires":[["2ed09998.304e0e","5efce4f3.9488fc"]]},{"id":"2ed09998.304e0e","type":"outcome","name":"outcome Created","xml":"<outcome value='Created'>\n","comments":"","outputs":1,"x":2192.1355476379395,"y":2389.5714988708496,"z":"6c1fa692.a38a58","wires":[["d8bdded8.a9409"]]},{"id":"5efce4f3.9488fc","type":"outcome","name":"outcome Other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2217.849922180176,"y":2425.0000896453857,"z":"6c1fa692.a38a58","wires":[["d8bdded8.a9409"]]},{"id":"e60d88ff.eaefb","type":"comment","name":"Set service-data","info":"","comments":"","x":543.4880065917969,"y":2439.0004692077637,"z":"6c1fa692.a38a58","wires":[]},{"id":"ff84fda2.c98b9","type":"set","name":"save backup copy of mdsal-ar for rollback","xml":"<set>\n<parameter name='bk-service-data' value='$service-data.' />\n","comments":"","x":1457.3929595947266,"y":2338.7144317626953,"z":"6c1fa692.a38a58","wires":[]},{"id":"98885b52.6aac4","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":950.5832214355469,"y":2374.428563117981,"z":"6c1fa692.a38a58","wires":[["4824800d.76fea"]]},{"id":"4824800d.76fea","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1130.5831718444824,"y":2375.0951137542725,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"d8bdded8.a9409","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2406.6060638427734,"y":2390.94713306427,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"7946e793.89f08","type":"execute","name":"generate vnf service-info url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vnf-api.service-information`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vnf-api-url\"/>\n    <parameter name=\"target\" value=\"{vnf-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.brg-vnf-id`\"/>\n\n   <!-- \n   <parameter name=\"replacement\" value=\"`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`\"/>\n -->\n    <!--\n    <parameter name=\"replacement\" value=\"`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`\"/>\n-->\n<!--\nbrg-ar.allotted-resource-data.brg-topology.brg-assignments\n-->","comments":"","outputs":1,"x":583.8109130859375,"y":2259.263671875,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"25449935.bf4046","type":"execute","name":"execute RestApiCallNode - PUT service into service","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.services.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.services-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":662.0966911315918,"y":2517.502098083496,"z":"6c1fa692.a38a58","wires":[["75076c77.fcddbc","ab0e0ff6.dbacd8","f2aab5bd.10be8"]]},{"id":"75076c77.fcddbc","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1168.3095474243164,"y":2512.0241107940674,"z":"6c1fa692.a38a58","wires":[["3d728759.355018"]]},{"id":"ab0e0ff6.dbacd8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1159.3095970153809,"y":2480.524136543274,"z":"6c1fa692.a38a58","wires":[["3d728759.355018"]]},{"id":"f2aab5bd.10be8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1163.0596351623535,"y":2450.8812414184213,"z":"6c1fa692.a38a58","wires":[["6c725f42.e545c"]]},{"id":"3d728759.355018","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 updating md-sal for brg-allotted-resource\" />\n","comments":"","x":1329.0596351623535,"y":2481.274160385132,"z":"6c1fa692.a38a58","wires":[]},{"id":"6c725f42.e545c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1304.7156028747559,"y":2447.0734106078744,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"a173f61c.f54af","type":"execute","name":"generate services url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.services`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.services-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.service-data.service-information.service-instance-id`\"/>\n<!--  tmp.service-data.service-information.service-instance-id\nbrg-topology-operation-input.allotted-resource-information.parent-service-instance-id\nbrg-topology-operation-input.service-information.service-instance-id\n\n-->","comments":"","outputs":1,"x":561.4300231933594,"y":2469.02618598938,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"534527cb.5330b","type":"get-resource","name":"get-resource IPADDR from dmaap DHCP_MAP ","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='IPADDR' key=\"SELECT min(ip_addr) ip from DHCP_MAP where mac_addr = $brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.brg-wan-mac-address\" pfx=\"tmp.brg-wan-ip\" >\n","comments":"","outputs":1,"x":640.8571624755859,"y":920.7501087188721,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"fbbea4d5.1f17","type":"set","name":"set brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip' value='`$tmp.brg-wan-ip.ip`' />\n","comments":"","x":727.0000305175781,"y":970.0000267028809,"z":"6c1fa692.a38a58","wires":[]},{"id":"bcd27cb7.187a6","type":"set","name":"set tmp.ar.consuming-service-instance-id to find vgmux-lan-ip","xml":"<set>\n<parameter name='tmp.ar.consuming-service-instance-id' value='`$brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.consuming-service-instance-id`' />\n","comments":"","x":687.9999694824219,"y":1017.9998550415039,"z":"6c1fa692.a38a58","wires":[]},{"id":"574f0bbd.60c3ec","type":"call","name":"call GENERIC-RESOURCE-API:get-tunnelxconn-ar","xml":"<call module='GENERIC-RESOURCE-API' rpc='get-tunnelxconn-ar' mode='sync' >\n","comments":"","outputs":1,"x":648.0000152587891,"y":1066.333191871643,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"3451b716.87d158","type":"set","name":"set brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-lan-ip","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-lan-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-lan-ip`' />\n","comments":"","x":726.3332672119141,"y":1119.6665697097778,"z":"6c1fa692.a38a58","wires":[]},{"id":"b7fc9e2e.d326a8","type":"comment","name":"Change to POST and just update service?","info":"","comments":"","x":841.357177734375,"y":2544.9287109375,"z":"6c1fa692.a38a58","wires":[]},{"id":"77c9e988.0d476","type":"execute","name":"execute RestApiCallNode - setup vG to vgMux vxlan tunnel port","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.vxlan-tunnel.templatefile`\" />\n    <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />\n    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />\n    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"honeycomb-vnf\" />\n\n","comments":"","outputs":1,"x":842.166748046875,"y":2035.166748046875,"z":"6c1fa692.a38a58","wires":[["98e1d7c2.e9e0a","5ccf5413.99e35c","a81a84bb.2cc498"]]},{"id":"98e1d7c2.e9e0a","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1181.141513824463,"y":2074.49837436527,"z":"6c1fa692.a38a58","wires":[["2fbb5268.c289be"]]},{"id":"5ccf5413.99e35c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1172.1415634155273,"y":2042.9984001144767,"z":"6c1fa692.a38a58","wires":[["2fbb5268.c289be"]]},{"id":"a81a84bb.2cc498","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1175.8916015625,"y":2013.355504989624,"z":"6c1fa692.a38a58","wires":[["28394b93.ce2d9c"]]},{"id":"2fbb5268.c289be","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 setting up vxlan tunnel\" />\n","comments":"","x":1341.8916015625,"y":2043.7484239563346,"z":"6c1fa692.a38a58","wires":[]},{"id":"28394b93.ce2d9c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1317.5475692749023,"y":2009.5476741790771,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"33cc3b7e.7713e4","type":"execute","name":"execute RestApiCallNode - setup BRG vxlan bridge domain","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.bridge-domain.templatefile`\" />\n    <parameter name='restapiUrl' value=\"`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `\" />\n    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />\n    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"honeycomb-vnf\" />\n\n","comments":"","outputs":1,"x":827.1668548583984,"y":2121.8336877822876,"z":"6c1fa692.a38a58","wires":[["c3b25db3.17a52","4db3ba34.59a5fc","2dc69fdd.e1aed8"]]},{"id":"c3b25db3.17a52","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1171.808193206787,"y":2202.4984325394034,"z":"6c1fa692.a38a58","wires":[["277d259.8e3b45a"]]},{"id":"4db3ba34.59a5fc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1162.8082427978516,"y":2170.99845828861,"z":"6c1fa692.a38a58","wires":[["277d259.8e3b45a"]]},{"id":"2dc69fdd.e1aed8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1166.5582809448242,"y":2141.3555631637573,"z":"6c1fa692.a38a58","wires":[["e418255e.942ff8"]]},{"id":"277d259.8e3b45a","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 setting up bridge domain\" />\n","comments":"","x":1332.5582809448242,"y":2171.748482130468,"z":"6c1fa692.a38a58","wires":[]},{"id":"e418255e.942ff8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1308.2142486572266,"y":2137.5477323532104,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"fcd41611.21ace","type":"set","name":"set vG to vgMUX VXLAN Tunnel Port Props","xml":"<set>\n<parameter name='tmp.tunnel-name' value=\"`'vxlanTun' + $brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip` \" />\n<parameter name='tmp.tunnel-dest-ip' value=\"`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip` \" />\n<parameter name='tmp.tunnel-src-ip' value=\"`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-ip` \" />\n<parameter name='tmp.tunnel-vni' value=\"`$brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.vni` \" />","comments":"","x":631.9445724487305,"y":1917.1669521331787,"z":"6c1fa692.a38a58","wires":[]},{"id":"66b07f90.f3cf2","type":"execute","name":"generate full vg-vpp-honeycomb url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vpp-honeycomb`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vpp-honeycomb-url\"/>\n    <parameter name=\"target\" value=\"{tunnel-name}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.tunnel-name`\"/>\n","comments":"","outputs":1,"x":611.611213684082,"y":1972.1667308807373,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"803aa305.29b728","type":"execute","name":"generate honeycomb-url to vG","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.honeycomb.url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.honeycomb.url\"/>\n    <parameter name=\"target\" value=\"{honeycomb-instance-ip}\"/>\n    <parameter name=\"replacement\" value=\"`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-mgmt-ip`\"/>\n","comments":"","outputs":1,"x":590.9446029663086,"y":1857.4999265670776,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"52a794a3.717be4","type":"set","name":"set brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-ip","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip`' />\n","comments":"","x":703.0000457763672,"y":1569.666633605957,"z":"6c1fa692.a38a58","wires":[]},{"id":"4fe4fbe1.fdb434","type":"set","name":"set brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-bearer-ip`' />\n","comments":"","x":741.3333435058594,"y":1619.6665630340576,"z":"6c1fa692.a38a58","wires":[]},{"id":"4d6b8902.f37ba8","type":"comment","name":"Setup VXLAN Tunnel - vG to vgMUX","info":"","comments":"","x":288,"y":1572.999852180481,"z":"6c1fa692.a38a58","wires":[]},{"id":"2f2d9dc0.026be2","type":"comment","name":"Setup VXLAN Tunnel - vBRG to vgMUX","info":"","comments":"","x":290.1666717529297,"y":923.0001373291016,"z":"6c1fa692.a38a58","wires":[]},{"id":"613dc927.a7cb98","type":"comment","name":"Get vg-mgmt-ip","info":"brg tunnelxconnn consuming-service-instance-id\nfound in services as service-instance-id","comments":"","x":286.00001525878906,"y":1767.333607673645,"z":"6c1fa692.a38a58","wires":[]},{"id":"fe0cd6c.e5be028","type":"set","name":"set tmp.search.consuming-service-instance-id to find vg-mgmt-ip","xml":"<set>\n<parameter name='tmp.search.consuming-service-instance-id' value='`$brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.consuming-service-instance-id`' />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t","comments":"","x":689.1666030883789,"y":1691.3329668045044,"z":"6c1fa692.a38a58","wires":[]},{"id":"5bee91fe.fa9cd8","type":"for","name":"for tmp.preloadvnfdata","xml":"<for index='vnfidx' start='0' end='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list_length`' >\n                               \n\n\n","comments":"","outputs":1,"x":1548.333251953125,"y":1685.9998779296875,"z":"6c1fa692.a38a58","wires":[["e8013be2.d085f"]]},{"id":"5cb532.32ef0ad","type":"get-resource","name":"get-resource generic-resource-api:services ","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='GENERIC-RESOURCE-API' key='services' pfx='tmp.servicedata' >\n","comments":"","outputs":1,"x":625.6667175292969,"y":1753.6663818359375,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"a465b112.0d40a8","type":"switchNode","name":"switch parent-service-instance-id matches","xml":"<switch test='`$tmp.preloadvnfdata.vnfs.vnf[$vnfidx].service-instance-id == $tmp.search.consuming-service-instance-id`'>\n\n\n","comments":"","outputs":1,"x":1777,"y":2033.6666259765625,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"4088be7a.cae2","type":"success","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2003.9999923706055,"y":1744.3332052230835,"z":"6c1fa692.a38a58","wires":[["8594640f.24b708"]]},{"id":"1045f43d.d6afdc","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1223.3332977294922,"y":1670.6664695739746,"z":"6c1fa692.a38a58","wires":[["209d4769.e6146"]]},{"id":"9090d90e.a8f0a","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1201.6666564941406,"y":1737.3331623077393,"z":"6c1fa692.a38a58","wires":[["87fe04e9.24d5f8"]]},{"id":"a0e306ed.820868","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1192.666706085205,"y":1705.8331880569458,"z":"6c1fa692.a38a58","wires":[["87fe04e9.24d5f8"]]},{"id":"87fe04e9.24d5f8","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 getting GENERIC-RESOURCE-API:services\" />\n","comments":"","x":1362.4167442321777,"y":1706.5832118988037,"z":"6c1fa692.a38a58","wires":[]},{"id":"5f63ed00.e4509c","type":"switchNode","name":"switch vnf-parameter-name matches vgw_private_ip","xml":"<switch test=\"`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-name == 'vgw_private_ip_1'`\" >\n\n\n","comments":"","outputs":1,"x":2492.3331451416016,"y":1637.3332786560059,"z":"6c1fa692.a38a58","wires":[["659ac035.31b17"]]},{"id":"659ac035.31b17","type":"success","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2771.333251953125,"y":1649,"z":"6c1fa692.a38a58","wires":[["faad5ed5.79e448"]]},{"id":"8594640f.24b708","type":"for","name":"for service vnfs vf-modules parameters","xml":"<for index='paramidx' start='0' end='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters_length`' >\n\n\n","comments":"","outputs":1,"x":2268.333251953125,"y":1727.66650390625,"z":"6c1fa692.a38a58","wires":[["5f63ed00.e4509c"]]},{"id":"faad5ed5.79e448","type":"set","name":"set vg-mgmt-ip","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-mgmt-ip'\n value=\"`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-value`\" />\n\n","comments":"","x":2920.999755859375,"y":1687.6666259765625,"z":"6c1fa692.a38a58","wires":[]},{"id":"6e158dbc.a9be7c","type":"execute","name":"execute print context","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/brg-topo-op-activate.log' />\n","comments":"","outputs":1,"x":568,"y":2576,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"e8013be2.d085f","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1561,"y":1799,"z":"6c1fa692.a38a58","wires":[["f34f3c76.64d458"]]},{"id":"591802ea.8c09bc","type":"set","name":"set debug","xml":"<set>\n<parameter name='tmp.debug.service-instance-id' value='`$tmp.servicedata.services.service[$serviceidx].service-instance-id`' />\n<parameter name='tmp.debug.consuming-service-instance-id' value='`$tmp.search.consuming-service-instance-id`' />\n\n\n\n","comments":"","x":1712,"y":1874,"z":"6c1fa692.a38a58","wires":[]},{"id":"60caa157.4e6378","type":"execute","name":"execute print context","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/brg-topo-op-activate.log' />\n","comments":"","outputs":1,"x":1541,"y":1618,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"543f9252.6eb754","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":1544,"y":1511,"z":"6c1fa692.a38a58","wires":[]},{"id":"209d4769.e6146","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1339,"y":1623,"z":"6c1fa692.a38a58","wires":[["5bee91fe.fa9cd8","6ba037e8.63ddd8"]]},{"id":"e51d221e.ee2ab8","type":"get-resource","name":"get-resource vnf-api:vnfs","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='preload-vnfs' pfx='tmp.preloadvnfdata' >\n<!--\ntmp.preloadvnfdata.preload-vnfs.vnf-preload-list[1].preload-data[0].vnf-topology-information.vnf-parameters[16].vnf-parameter-value = 10.0.101.30\n-->","comments":"","outputs":1,"x":661,"y":1801,"z":"6c1fa692.a38a58","wires":[["9090d90e.a8f0a","a0e306ed.820868","1045f43d.d6afdc"]]},{"id":"c7a11d7f.fb8c38","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":399,"y":1802,"z":"6c1fa692.a38a58","wires":[]},{"id":"f34f3c76.64d458","type":"switchNode","name":"switch parent-service-instance-id matches","xml":"<switch test='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].vnf-name == $tmp.brg-match-vnf-name`'>\n\n\n","comments":"","outputs":1,"x":1776,"y":1949,"z":"6c1fa692.a38a58","wires":[["4088be7a.cae2"]]},{"id":"6ba037e8.63ddd8","type":"set","name":"set tmp.brgmatch-vnf-name","xml":"<set>\n<parameter name='tmp.brg-match-vnf-name' value=\"`'VGW2BRG-'+ $brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.brg-wan-mac-address`\" />\n\n","comments":"","x":1562,"y":1574,"z":"6c1fa692.a38a58","wires":[]},{"id":"b292149a.348d68","type":"comment","name":"Disable updates to vGW becuase of race condition","info":"vGW has to reboot to apply its config and sdnc tries to connect soon. \nBeijing will have the sleep utilities to handle this. Use heat.env parameters with vni to resolve","comments":"","x":826,"y":2076,"z":"6c1fa692.a38a58","wires":[]},{"id":"3be7e02c.f2a31","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":526,"y":2043,"z":"6c1fa692.a38a58","wires":[]},{"id":"35706264.5e767e","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":520,"y":2125,"z":"6c1fa692.a38a58","wires":[]},{"id":"6c257595.e9d49c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":746,"y":2246,"z":"6c1fa692.a38a58","wires":[]},{"id":"65a5973d.076518","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":340,"y":312,"z":"6c1fa692.a38a58","wires":[]},{"id":"dce18120.0cf858","type":"for","name":"for tmp.vnfs","xml":"<for index='vnfidx' start='0' end='`$tmp.vnfdata.vnfs.vnf-list_length`' >\n\n\n","comments":"","outputs":1,"x":883,"y":339,"z":"6c1fa692.a38a58","wires":[["988fd8fd.e7e43"]]},{"id":"1879320e.a502ce","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":530.1429443359375,"y":299.1904296875,"z":"6c1fa692.a38a58","wires":[["a9df8e17.d4273","dce18120.0cf858"]]},{"id":"a9df8e17.d4273","type":"get-resource","name":"get-resource vnf-api vnfs","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='vnfs' pfx='tmp.vnfdata' >\n","comments":"","outputs":1,"x":962,"y":281.6666259765625,"z":"6c1fa692.a38a58","wires":[[]]},{"id":"988fd8fd.e7e43","type":"switchNode","name":"switch parent-service-instance-id matches","xml":"<switch test='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].service-data.service-information.service-instance-id == $tmp.ar.parent-service-instance-id`'>\n\n\n","comments":"","outputs":1,"x":1151,"y":362.33331298828125,"z":"6c1fa692.a38a58","wires":[["e2df1feb.345a88"]]},{"id":"e2df1feb.345a88","type":"success","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1449.0001220703125,"y":372.33331298828125,"z":"6c1fa692.a38a58","wires":[["c6e47000.d7b71"]]},{"id":"c6e47000.d7b71","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1664.0001220703125,"y":382.3333435058594,"z":"6c1fa692.a38a58","wires":[["e1ea2cb0.bcfd08"]]},{"id":"e1ea2cb0.bcfd08","type":"set","name":"set  tmp.ar.brg-vnf-id","xml":"<set>\n<parameter name='tmp.ar.brg-vnf-id' \n   value='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].vnf-id`' />\n\n\n\n","comments":"","x":1892,"y":399,"z":"6c1fa692.a38a58","wires":[]},{"id":"1934ef1e.f9add1","type":"comment","name":"Need to use parent service instance id","info":"service-instance id : {\n  \"service-status\": {\n    \"rpc-action\": \"activate\",\n    \"response-code\": \"200\",\n    \"action\": \"CreateVfModuleInstance\",\n    \"request-status\": \"synccomplete\",\n    \"rpc-name\": \"vf-module-topology-operation\",\n    \"response-timestamp\": \"2017-11-16T21:31:31.697Z\",\n    \"final-indicator\": \"Y\",\n    \"response-message\": \"\"\n  }\n}","comments":"","x":290,"y":2606,"z":"6c1fa692.a38a58","wires":[]},{"id":"2e1dc18a.e0a76e","type":"set","name":"set  service-instance-id ","xml":"<set>\n<parameter name='tmp.service-data.service-information.service-instance-id' value='`$brg-topology-operation-input.service-information.service-instance-id`' />\n","comments":"","x":568.5,"y":2391,"z":"6c1fa692.a38a58","wires":[]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-assign.json
new file mode 100644
index 0000000..53db1d2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-assign.json
@@ -0,0 +1 @@
+[{"id":"7570f0f1.92a5b","type":"dgstart","name":"DGSTART","outputs":1,"x":151,"y":77,"z":"bf2de7b8.413148","wires":[["d3b5c6d7.62aef"]]},{"id":"d3b5c6d7.62aef","type":"service-logic","name":"GENERIC-RESOURCE-API 1.2.0-SNAPSHOT-111502","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":285.23809814453125,"y":128.952392578125,"z":"bf2de7b8.413148","wires":[["c52f0437.0bb6a8"]]},{"id":"c52f0437.0bb6a8","type":"method","name":"brg-topology-operation-assign","xml":"<method rpc='brg-topology-operation-assign' mode='sync'>\n","comments":"","outputs":1,"x":293.15485763549805,"y":173.19044589996338,"z":"bf2de7b8.413148","wires":[["5d72c5be.42607c"]]},{"id":"5d72c5be.42607c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":201.47619247436523,"y":316.5237879753113,"z":"bf2de7b8.413148","wires":[["ce4415de.9f0f4","d0247918.df4a68","20bd770e.2b589","f626fedf.f8fe98","5de71d7a.6cddd4"]]},{"id":"7d236fa8.ed7de","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":1044.6666564941406,"y":2243.5477046966553,"z":"bf2de7b8.413148","wires":[]},{"id":"410f6b01.d7177c","type":"set","name":"set output to api handler","xml":"<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='tunnelxconn-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $brg-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n","comments":"","x":1081.7540550231934,"y":2122.432439804077,"z":"bf2de7b8.413148","wires":[]},{"id":"98199cc9.6a499","type":"set","name":"set allotted-resource-oper-status","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingCreate' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n","comments":"","x":1153.468376159668,"y":1539.6228160858154,"z":"bf2de7b8.413148","wires":[]},{"id":"d0247918.df4a68","type":"set","name":"set tmp.ar.self-link","xml":"<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/tunnelxconn-topology/'` \" />\n\n","comments":"","x":631.7380676269531,"y":208.33331298828125,"z":"bf2de7b8.413148","wires":[]},{"id":"ce4415de.9f0f4","type":"set","name":"set tmp.ar.allotted-resource-id,etc","xml":"<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n","comments":"","x":684.997314453125,"y":170.59259033203125,"z":"bf2de7b8.413148","wires":[]},{"id":"93640943.c5ad8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":834.8148803710938,"y":356.26727294921875,"z":"bf2de7b8.413148","wires":[["87e21149.4f9e4"]]},{"id":"f12334c3.4295d","type":"execute","name":"execute RestApiCallNode - PUT AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":1174.8626251220703,"y":1764.1008231639862,"z":"bf2de7b8.413148","wires":[["fd12f3ff.cf69e","ab1088f2.67d178","b1a1234c.07f858"]]},{"id":"fd12f3ff.cf69e","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1443.5040016174316,"y":1815.4322349056602,"z":"bf2de7b8.413148","wires":[["8a32e9ad.06d778"]]},{"id":"ab1088f2.67d178","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1434.504051208496,"y":1783.9322606548667,"z":"bf2de7b8.413148","wires":[["8a32e9ad.06d778"]]},{"id":"b1a1234c.07f858","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1438.2540893554688,"y":1754.289365530014,"z":"bf2de7b8.413148","wires":[["22dd0dd8.431072"]]},{"id":"8a32e9ad.06d778","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 updating md-sal for tunnelxconn-allotted-resource\" />\n","comments":"","x":1604.2540893554688,"y":1784.6822844967246,"z":"bf2de7b8.413148","wires":[]},{"id":"1f10f3f4.abae94","type":"set","name":"set oper-status","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n","comments":"","x":1184.5294189453125,"y":457.05291748046875,"z":"bf2de7b8.413148","wires":[]},{"id":"7cf9af45.cf036","type":"comment","name":"Save consumed-allotted-resources to mdsal","info":"","comments":"","x":1252.2434692382812,"y":1138.7196044921875,"z":"bf2de7b8.413148","wires":[]},{"id":"6194dab8.45fb04","type":"comment","name":"GET tunnelxconn-allotted-resource from mdsal","info":"","comments":"","x":557.8148193359375,"y":326.7672119140625,"z":"bf2de7b8.413148","wires":[]},{"id":"87e21149.4f9e4","type":"returnFailure","name":"return failure - tunnelxconn already exists","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\" \n    value=\"`'Existing brg-allotted-resource with order status of ' + $mdsal-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`\" />\n","comments":"","x":1144.129150390625,"y":352.6243896484375,"z":"bf2de7b8.413148","wires":[]},{"id":"d7e419ac.10dda8","type":"set","name":"set brg-ar-identifiers","xml":"<set>\n<parameter name='brg-ar-identifiers.consuming-service-instance-id' value=\"`$brg-topology-operation-input.service-information.service-instance-id` \" />\n<parameter name='brg-ar-identifiers.parent-service-instance-id' value=\"`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n<parameter name='brg-ar-identifiers.allotted-resource-type' value=\"`$brg-topology-operation-input.allotted-resource-information.allotted-resource-type` \" />\n<parameter name='brg-ar-identifiers.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n\n","comments":"","x":1194.38623046875,"y":550.6243896484375,"z":"bf2de7b8.413148","wires":[]},{"id":"29e4a25b.07caae","type":"comment","name":"Set allotted-resource-identifiers","info":"","comments":"","x":1221.338623046875,"y":509.338623046875,"z":"bf2de7b8.413148","wires":[]},{"id":"a7fa051c.ec08b8","type":"set","name":"set identifiers in overall structure","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.' \nvalue=\"`$brg-ar-identifiers.`\" />\n\n\n","comments":"","x":1211.38623046875,"y":858.910400390625,"z":"bf2de7b8.413148","wires":[]},{"id":"a1de8aef.82fc18","type":"set","name":"set onap model information from input","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.brg-topology.onap-model-information.' \nvalue=\"`$brg-topology-operation-input.allotted-resource-information.onap-model-information.`\" />\n\n\n","comments":"","x":1239.957763671875,"y":593.9100952148438,"z":"bf2de7b8.413148","wires":[]},{"id":"a718dba2.92623","type":"switchNode","name":"switch model-invariant-uuid is null","xml":"<switch test='$brg-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid'>\n","comments":"","outputs":1,"x":1219.8148193359375,"y":633.19580078125,"z":"bf2de7b8.413148","wires":[["7ca287e7.711478"]]},{"id":"7ca287e7.711478","type":"outcome","name":"outcome null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1447.9576988220215,"y":634.6243271827698,"z":"bf2de7b8.413148","wires":[["71896d4.b06f794"]]},{"id":"71896d4.b06f794","type":"set","name":"set model-invariant-uuid","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.brg-topology.onap-model-information.model-invariant-uuid' \nvalue=\"`$ar-model.invariant-uuid`\" />\n\n\n","comments":"","x":1649.38627243042,"y":634.0528798103333,"z":"bf2de7b8.413148","wires":[]},{"id":"8606bb79.93a638","type":"switchNode","name":"switch model-uuid is null","xml":"<switch test='$brg-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid'>\n","comments":"","outputs":1,"x":1192.2434158325195,"y":667.4815106391907,"z":"bf2de7b8.413148","wires":[["79f93f5.6db044"]]},{"id":"79f93f5.6db044","type":"outcome","name":"outcome null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1393.6719818115234,"y":668.0529322624207,"z":"bf2de7b8.413148","wires":[["c81e4cfe.eaa8d8"]]},{"id":"c81e4cfe.eaa8d8","type":"set","name":"set model-uuid","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.brg-topology.onap-model-information.model-uuid' \nvalue=\"`$ar-model.uuid`\" />\n\n\n","comments":"","x":1586.529140472412,"y":668.0528540611267,"z":"bf2de7b8.413148","wires":[]},{"id":"d9e258a7.c1071","type":"switchNode","name":"switch model-version is null","xml":"<switch test='$brg-topology-operation-input.allotted-resource-information.onap-model-information.model-version'>\n","comments":"","outputs":1,"x":1200.8148193359375,"y":700.3386378288269,"z":"bf2de7b8.413148","wires":[["8ee38127.aa0868"]]},{"id":"8ee38127.aa0868","type":"outcome","name":"outcome null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1450.8148002624512,"y":700.3386225700378,"z":"bf2de7b8.413148","wires":[["610bece7.c45dd4"]]},{"id":"610bece7.c45dd4","type":"set","name":"set model-version","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-version' \nvalue=\"`$ar-model.version`\" />\n\n\n","comments":"","x":1643.6719589233398,"y":700.3385443687439,"z":"bf2de7b8.413148","wires":[]},{"id":"7885bfde.a79488","type":"switchNode","name":"switch ar-model.ecomp-generated-naming","xml":"<switch test='`$ar-model.ecomp-generated-naming`'>\n","comments":"","outputs":1,"x":1264.38623046875,"y":802.7672729492188,"z":"bf2de7b8.413148","wires":[["9239a2ce.fafa4","e195da86.529e68"]]},{"id":"9239a2ce.fafa4","type":"other","name":"outcome Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1550.3862915039062,"y":802.1958618164062,"z":"bf2de7b8.413148","wires":[["cad0403.cd4d94"]]},{"id":"cad0403.cd4d94","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">\n","atomic":"true","comments":"","outputs":1,"x":1704.1363525390625,"y":804.69580078125,"z":"bf2de7b8.413148","wires":[["35d70668.6be0d2"]]},{"id":"e195da86.529e68","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1569.608642578125,"y":891.1958618164062,"z":"bf2de7b8.413148","wires":[["d35a58bc.e50138"]]},{"id":"d35a58bc.e50138","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 in allotted-resource-model data.  Ecomp-generated-naming should be true\" />\n\n","comments":"","x":1752.608642578125,"y":896.1958618164062,"z":"bf2de7b8.413148","wires":[]},{"id":"35d70668.6be0d2","type":"switchNode","name":"switch ar-model.ecomp-generated-naming","xml":"<switch test='`$ar-model.naming-policy`'>\n","comments":"","outputs":1,"x":1840.38623046875,"y":853.767333984375,"z":"bf2de7b8.413148","wires":[["c5a38d06.972378","d046dbae.b5109"]]},{"id":"c5a38d06.972378","type":"other","name":"outcome oam_network_policy","xml":"<outcome value='oam_network_policy'>\n","comments":"","outputs":1,"x":2215.244140625,"y":857.3453369140625,"z":"bf2de7b8.413148","wires":[["53d31de0.592f64"]]},{"id":"d046dbae.b5109","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2129.671875,"y":934.1958618164062,"z":"bf2de7b8.413148","wires":[["53d31de0.592f64"]]},{"id":"a6d75105.5c52c8","type":"set","name":"set ar_name","xml":"<set>\n<parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />\n","comments":"","x":2521.100830078125,"y":892.7672729492188,"z":"bf2de7b8.413148","wires":[]},{"id":"af081f6c.54a4d","type":"execute","name":"execute SliStringUtils - replace TenantOAMNetworkRole","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ar-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-name\"/>\n    <parameter name=\"target\" value=\"$TenantOAMNetworkRole\"/>\n    <parameter name=\"replacement\" value=\"`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.untrusted-network-role`\"/>\n\n","comments":"","outputs":1,"x":2665.2437858581543,"y":936.6244196891785,"z":"bf2de7b8.413148","wires":[[]]},{"id":"86105782.997358","type":"execute","name":"execute SliStringUtils - replace LandingNetworkRole","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ar-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-name\"/>\n    <parameter name=\"target\" value=\"$LandingNetworkRole\"/>\n    <parameter name=\"replacement\" value=\"`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.trusted-network-role`\"/>\n\n","comments":"","outputs":1,"x":2652.243896484375,"y":976.7672729492188,"z":"bf2de7b8.413148","wires":[[]]},{"id":"53d31de0.592f64","type":"block","name":"block: atomic","xml":"<block atomic='true'>\n","atomic":"false","comments":"","outputs":1,"x":2329.5292015075684,"y":932.3387522697449,"z":"bf2de7b8.413148","wires":[["a6d75105.5c52c8","af081f6c.54a4d","86105782.997358","8d2f4598.fa58"]]},{"id":"8d2f4598.fa58","type":"set","name":"set identifiers.allotted-resource-name","xml":"<set>\n<parameter name='brg-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />\n","comments":"","x":2610.1005859375,"y":1027.052978515625,"z":"bf2de7b8.413148","wires":[]},{"id":"489a55af.96a154","type":"set","name":"set assignments in overall structure","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.' \nvalue=\"`$brg-ar-assignments.`\" />\n\n\n","comments":"","x":1219.8624572753906,"y":1063.6246919631958,"z":"bf2de7b8.413148","wires":[]},{"id":"6e15816e.dc1a18","type":"set","name":"Handle brg-ar-assignments","xml":"<set>\n<parameter name='brg-ar-assignments.vbrg-wan-ip' value='127.0.0.1'/>\n","comments":"","x":1199.529052734375,"y":960.0530395507812,"z":"bf2de7b8.413148","wires":[]},{"id":"93589f82.f74e7","type":"for","name":"for cidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]","xml":"<for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n","comments":"","outputs":1,"x":2237.8155822753906,"y":1337.0411586761475,"z":"bf2de7b8.413148","wires":[["10287613.ac1c5a"]]},{"id":"6a7c81a4.d6b458","type":"switchNode","name":"switch service-data.consumed-allotted-resources_length","xml":"<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\n","comments":"","outputs":1,"x":1268.8148193359375,"y":1224.505126953125,"z":"bf2de7b8.413148","wires":[["93c6f9b5.58d778","7c7889c0.2dcf9"]]},{"id":"93c6f9b5.58d778","type":"other","name":"outcome Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1644.2077865600586,"y":1229.1124458312988,"z":"bf2de7b8.413148","wires":[["51706315.19d304"]]},{"id":"7c7889c0.2dcf9","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1642.9577865600586,"y":1319.1124477386475,"z":"bf2de7b8.413148","wires":[["97e6df3f.75cba"]]},{"id":"10287613.ac1c5a","type":"switchNode","name":"switch allotted-resource-id","xml":"<switch test=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n","comments":"","outputs":1,"x":2672.4106826782227,"y":1338.85085105896,"z":"bf2de7b8.413148","wires":[["b1182dc2.599"]]},{"id":"b1182dc2.599","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2879.220375061035,"y":1342.064962387085,"z":"bf2de7b8.413148","wires":[["4a37e6ba.7ef7c8"]]},{"id":"97e6df3f.75cba","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1800.834976196289,"y":1325.4885501861572,"z":"bf2de7b8.413148","wires":[["93589f82.f74e7","af2682ec.9c827"]]},{"id":"4a37e6ba.7ef7c8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3047.4817276000977,"y":1346.9222631454468,"z":"bf2de7b8.413148","wires":[["4d3df632.b7a47","b70883dd.4d196"]]},{"id":"51706315.19d304","type":"set","name":"set cidx","xml":"<set>\n<parameter name='tmp.cidx' value=\"`0`\" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value=\"1\" />\n\n\n","comments":"","x":1823.0647735595703,"y":1231.3266830444336,"z":"bf2de7b8.413148","wires":[]},{"id":"4d3df632.b7a47","type":"set","name":"set tmp.cidx and ctx.consumed-ar","xml":"<set>\n<parameter name='tmp.cidx' value='`$cidx`' />\n<parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />\n<parameter name='tmp.found-cidx' value='true' />","comments":"","x":3293.3391876220703,"y":1341.4937419891357,"z":"bf2de7b8.413148","wires":[]},{"id":"764d1d1a.157ec4","type":"set","name":"set consumed allotted resources","xml":"<set>\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value=\"`$brg-topology-operation-input.allotted-resource-information.allotted-resource-type` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value=\"`$tmp.ar.self-link` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />\n\n","comments":"","x":1179.6720123291016,"y":1389.826681137085,"z":"bf2de7b8.413148","wires":[]},{"id":"22dd0dd8.431072","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1579.910057067871,"y":1750.4815347194672,"z":"bf2de7b8.413148","wires":[["c6583a43.de49f"]]},{"id":"20da9a61.ce80de","type":"comment","name":"Add BRG AR to mdsal","info":"","comments":"","x":1104.148208618164,"y":1725.1957080364227,"z":"bf2de7b8.413148","wires":[]},{"id":"d18da704.925258","type":"execute","name":"execute getTime","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n","comments":"","outputs":1,"x":1120.4814224243164,"y":1463.671986579895,"z":"bf2de7b8.413148","wires":[[]]},{"id":"485cf3c4.63339c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":840.57666015625,"y":407.4814453125,"z":"bf2de7b8.413148","wires":[["f17f867f.41ed8"]]},{"id":"f17f867f.41ed8","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":788.57666015625,"y":903.2908325195312,"z":"bf2de7b8.413148","wires":[["c9560d04.6cea5","d7e419ac.10dda8","a1de8aef.82fc18","a718dba2.92623","8606bb79.93a638","d9e258a7.c1071","1f10f3f4.abae94","7885bfde.a79488","a7fa051c.ec08b8","6e15816e.dc1a18","489a55af.96a154","6a7c81a4.d6b458","764d1d1a.157ec4","d18da704.925258","98199cc9.6a499","1ef29606.df61aa","f12334c3.4295d","410f6b01.d7177c","7d236fa8.ed7de"]]},{"id":"c9560d04.6cea5","type":"set","name":"set id","xml":"<set>\n<parameter name='brg-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='brg-ar.allotted-resource-status.action' value=\"`$brg-topology-operation-input.request-information.request-action` \" />\n<parameter name='brg-ar.allotted-resource-status.rpc-name' value=\"brg-topology-operation\" />\n<parameter name='brg-ar.allotted-resource-status.rpc-action' value=\"`$brg-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$brg-topology-operation-input.request-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$brg-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$brg-topology-operation-input.service-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$brg-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value=\"`$brg-topology-operation-input.brg-request-input.` \" />","comments":"","x":1159.2434387207031,"y":413.433837890625,"z":"bf2de7b8.413148","wires":[]},{"id":"1ef29606.df61aa","type":"update","name":"update AAI allotted-resource","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $brg-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $brg-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $brg-topology-operation-input.allotted-resource-information.parent-service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"description\" value=\"`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type`\" />\n\t<parameter name=\"selflink\" value=\"`$tmp.ar.self-link`\" />\n\t<parameter name=\"model-invariant-id\" value=\"`$ar-model.invariant-uuid`\" />\n\t<parameter name=\"model-version-id\" value=\"`$ar-model.uuid`\" />\n\t<parameter name=\"operational-status\" value=\"null\" />\n","comments":"","outputs":1,"x":1141.0529327392578,"y":1631.5767517089844,"z":"bf2de7b8.413148","wires":[["d36496a4.dab97","995b6679.f48c1"]]},{"id":"d36496a4.dab97","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1396.814842224121,"y":1614.5292553901672,"z":"bf2de7b8.413148","wires":[["b90d9c62.7bb3c"]]},{"id":"b90d9c62.7bb3c","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=\"AAI failed\" />\n","comments":"","x":1563.338722229004,"y":1626.1483263969421,"z":"bf2de7b8.413148","wires":[]},{"id":"995b6679.f48c1","type":"failure","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1403.9101295471191,"y":1647.2912230491638,"z":"bf2de7b8.413148","wires":[["b90d9c62.7bb3c"]]},{"id":"af2682ec.9c827","type":"switchNode","name":"switch tmp.found-cidx","xml":"<switch test='`$tmp.found-cidx`'>\n","comments":"","outputs":1,"x":2052.743423461914,"y":1583.2315921783447,"z":"bf2de7b8.413148","wires":[["d9e9d9ac.d49268"]]},{"id":"d9e9d9ac.d49268","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2242.743377685547,"y":1583.2315292358398,"z":"bf2de7b8.413148","wires":[["a1cb35d3.82d23"]]},{"id":"a1cb35d3.82d23","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2408.743377685547,"y":1583.2315292358398,"z":"bf2de7b8.413148","wires":[["b0efdb24.9fd4c"]]},{"id":"b0efdb24.9fd4c","type":"set","name":"set tmp.cidx ","xml":"<set>\n<parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />\n","comments":"","x":2654.600706100464,"y":1583.8030033111572,"z":"bf2de7b8.413148","wires":[]},{"id":"c6583a43.de49f","type":"execute","name":"execute RestApiCallNode - Update parent provided service AR","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"parent\" />\n\n","comments":"","outputs":1,"x":1930.9521980285645,"y":1750.1904199123383,"z":"bf2de7b8.413148","wires":[["9ff1a968.b8411","551760d4.5414a8","4b3d2583.fd580c"]]},{"id":"86908d89.d4e3e8","type":"comment","name":"Rollback parent","info":"","comments":"","x":1774.9521255493164,"y":1719.8570504188538,"z":"bf2de7b8.413148","wires":[]},{"id":"9ff1a968.b8411","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2302.2602462768555,"y":1810.8553862571716,"z":"bf2de7b8.413148","wires":[["5bf32973.a0689"]]},{"id":"551760d4.5414a8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2293.26029586792,"y":1779.3554120063782,"z":"bf2de7b8.413148","wires":[["5bf32973.a0689"]]},{"id":"4b3d2583.fd580c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2297.0103340148926,"y":1749.7125168815255,"z":"bf2de7b8.413148","wires":[["5bf32973.a0689"]]},{"id":"5bf32973.a0689","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":2438.666301727295,"y":1745.9046860709786,"z":"bf2de7b8.413148","wires":[[]]},{"id":"d3365f28.2dd8d","type":"comment","name":"Generate naming","info":"","comments":"","x":1195.3862762451172,"y":760.7672252655029,"z":"bf2de7b8.413148","wires":[]},{"id":"20bd770e.2b589","type":"get-resource","name":"get-resource tunnelxconn-allotted-resource","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='GENERIC-RESOURCE-API' key='brg-allotted-resources/brg-allotted-resource/$brg-topology-operation-input.allotted-resource-information.allotted-resource-id/' pfx='mdsal-ar' >\n","comments":"","outputs":1,"x":540,"y":359,"z":"bf2de7b8.413148","wires":[["485cf3c4.63339c"]]},{"id":"f626fedf.f8fe98","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":616,"y":250,"z":"bf2de7b8.413148","wires":[[]]},{"id":"5de71d7a.6cddd4","type":"execute","name":"generate allotted-resource url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.brg-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n","comments":"","outputs":1,"x":623,"y":290,"z":"bf2de7b8.413148","wires":[[]]},{"id":"b70883dd.4d196","type":"break","name":"break","xml":"<break>","comments":"","x":3206.243507385254,"y":1386.7316856384277,"z":"bf2de7b8.413148","wires":[]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-create.json
new file mode 100755
index 0000000..2b5eff8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-create.json
@@ -0,0 +1 @@
+[{"id":"b6f76cf0.bed9d","type":"dgstart","name":"DGSTART","outputs":1,"x":295,"y":190,"z":"1afa105.0a3f0f","wires":[["ff3a2e96.20279"]]},{"id":"ff3a2e96.20279","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":391.2380790710449,"y":250.95239067077637,"z":"1afa105.0a3f0f","wires":[["b753df27.1ee1e"]]},{"id":"b753df27.1ee1e","type":"method","name":"brg-topology-operation-create","xml":"<method rpc='brg-topology-operation-create' mode='sync'>\n","comments":"","outputs":1,"x":437.15485763549805,"y":286.1904458999634,"z":"1afa105.0a3f0f","wires":[["3d5f9815.bb72d8"]]},{"id":"3d5f9815.bb72d8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":345.47619247436523,"y":429.5237879753113,"z":"1afa105.0a3f0f","wires":[["bd924d4b.6ac3d","58426f57.d9671","87dd9628.4b8e08","24e1c2bf.f38e3e","56c65e21.0c536","42ea3bdc.05eb14","ad98be46.853ca","9549d5d.4d0ae28","7db0224a.ddf40c","c1426d52.6c3f3","8fad2375.b2e97"]]},{"id":"58426f57.d9671","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":612.0001106262207,"y":1099.2145080566406,"z":"1afa105.0a3f0f","wires":[]},{"id":"bd924d4b.6ac3d","type":"set","name":"set output to api handler","xml":"<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='brg-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $brg-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n","comments":"","x":640.7540245056152,"y":1063.3370542526245,"z":"1afa105.0a3f0f","wires":[]},{"id":"c1426d52.6c3f3","type":"set","name":"set allotted-resource-oper-status","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n","comments":"","x":651.7542190551758,"y":810.0514001846313,"z":"1afa105.0a3f0f","wires":[]},{"id":"24e1c2bf.f38e3e","type":"set","name":"set tmp.ar.self-link","xml":"<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/brg-topology/'` \" />\n\n","comments":"","x":607.7380638122559,"y":403.33332538604736,"z":"1afa105.0a3f0f","wires":[]},{"id":"87dd9628.4b8e08","type":"set","name":"set tmp.ar.allotted-resource-id,etc","xml":"<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />\n\n\n","comments":"","x":654.9973258972168,"y":369.59259128570557,"z":"1afa105.0a3f0f","wires":[]},{"id":"56c65e21.0c536","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":613.9934196472168,"y":439.23152446746826,"z":"1afa105.0a3f0f","wires":[[]]},{"id":"ad98be46.853ca","type":"execute","name":"execute RestApiCallNode - Get AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":676.5187530517578,"y":600.4594917297363,"z":"1afa105.0a3f0f","wires":[["26a7a122.8ca35e","eef0e4d0.faeba8"]]},{"id":"42ea3bdc.05eb14","type":"execute","name":"generate allotted-resource url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.brg-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n","comments":"","outputs":1,"x":642.0648536682129,"y":499.0172290802002,"z":"1afa105.0a3f0f","wires":[[]]},{"id":"26a7a122.8ca35e","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":933.8148918151855,"y":599.2672522068024,"z":"1afa105.0a3f0f","wires":[["ba2d298f.ee9da8"]]},{"id":"9549d5d.4d0ae28","type":"execute","name":"execute RestApiCallNode - PUT AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":684.5293121337891,"y":953.4341316223145,"z":"1afa105.0a3f0f","wires":[["c81ee454.030d28","6308f6ba.6c5ee8","f6e148d1.5bbbc8"]]},{"id":"c81ee454.030d28","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":954.837329864502,"y":1006.432332418859,"z":"1afa105.0a3f0f","wires":[["a2f954df.7d6a08"]]},{"id":"6308f6ba.6c5ee8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":945.8373794555664,"y":974.9323581680655,"z":"1afa105.0a3f0f","wires":[["a2f954df.7d6a08"]]},{"id":"f6e148d1.5bbbc8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":949.5874176025391,"y":945.2894630432129,"z":"1afa105.0a3f0f","wires":[["956bdde7.54a34"]]},{"id":"a2f954df.7d6a08","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 updating md-sal for brg-allotted-resource\" />\n","comments":"","x":1115.587417602539,"y":975.6823820099235,"z":"1afa105.0a3f0f","wires":[]},{"id":"ba2d298f.ee9da8","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1114.8148460388184,"y":599.7672016620636,"z":"1afa105.0a3f0f","wires":[["f6b8a443.ce37c8","7f9a9607.9deb78"]]},{"id":"f6b8a443.ce37c8","type":"switchNode","name":"switch brg length","xml":"<switch test='`$mdsal-ar.brg-allotted-resource_length`'>\n","comments":"","outputs":1,"x":1360.6720924377441,"y":634.052964925766,"z":"1afa105.0a3f0f","wires":[["c19598d2.19bd88"]]},{"id":"c19598d2.19bd88","type":"other","name":"outcome 1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1551.6720962524414,"y":634.0529625415802,"z":"1afa105.0a3f0f","wires":[["852776b8.720618"]]},{"id":"20c1fba5.738554","type":"set","name":"set brg-ar from get","xml":"<set>\n<parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />\n","comments":"","x":1951.5292320251465,"y":634.6243867874146,"z":"1afa105.0a3f0f","wires":[]},{"id":"852776b8.720618","type":"block","name":"block: atomic","xml":"<block atomic='true'>\n","atomic":"false","comments":"","outputs":1,"x":1722.5290794372559,"y":634.6244316101074,"z":"1afa105.0a3f0f","wires":[["20c1fba5.738554","37c4ecf.ab37e14","b8ed9202.62a45"]]},{"id":"37c4ecf.ab37e14","type":"set","name":"set oper-status","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n","comments":"","x":1949.5294761657715,"y":702.0529508590698,"z":"1afa105.0a3f0f","wires":[]},{"id":"a2659467.3372c8","type":"comment","name":"GET brg-allotted-resource from mdsal","info":"","comments":"","x":701.8148155212402,"y":563.7671926021576,"z":"1afa105.0a3f0f","wires":[]},{"id":"b8ed9202.62a45","type":"switchNode","name":"switch order-status","xml":"<switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1959.52925491333,"y":667.6243848800659,"z":"1afa105.0a3f0f","wires":[["994a7d02.f776","c6432d89.74604"]]},{"id":"994a7d02.f776","type":"outcome","name":"outcome PendingCreate","xml":"<outcome value='PendingCreate'>\n","comments":"","outputs":1,"x":2171.1292114257812,"y":628.6243848800659,"z":"1afa105.0a3f0f","wires":[["edf3836c.7ac5a"]]},{"id":"c6432d89.74604","type":"outcome","name":"outcome Other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2196.8435859680176,"y":664.052975654602,"z":"1afa105.0a3f0f","wires":[["edf3836c.7ac5a"]]},{"id":"242cf515.aebfea","type":"comment","name":"Set allotted-resource-identifiers","info":"","comments":"","x":657.3386383056641,"y":654.3386459350586,"z":"1afa105.0a3f0f","wires":[]},{"id":"7f9a9607.9deb78","type":"set","name":"save backup copy of mdsal-ar for rollback","xml":"<set>\n<parameter name='bk-brg-ar' value='$mdsal-ar.' />\n","comments":"","x":1440.3864250183105,"y":599.7672936916351,"z":"1afa105.0a3f0f","wires":[]},{"id":"1ab1e0dc.601f6f","type":"comment","name":"Create urls for restapi","info":"","comments":"","x":612.9576606750488,"y":468.6243562698364,"z":"1afa105.0a3f0f","wires":[]},{"id":"956bdde7.54a34","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1091.2433853149414,"y":941.481632232666,"z":"1afa105.0a3f0f","wires":[[]]},{"id":"2ad43a51.cbb826","type":"comment","name":"TO DO: vnf/put parent","info":"","comments":"","x":625.2433776855468,"y":875.4815540313718,"z":"1afa105.0a3f0f","wires":[]},{"id":"7db0224a.ddf40c","type":"execute","name":"execute getTime","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n","comments":"","outputs":1,"x":599.2433815002441,"y":771.4815549850464,"z":"1afa105.0a3f0f","wires":[[]]},{"id":"eef0e4d0.faeba8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":933.5766868591309,"y":635.4814250469208,"z":"1afa105.0a3f0f","wires":[["c1d6759.acebc88"]]},{"id":"c1d6759.acebc88","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1113.5766372680664,"y":636.1479756832123,"z":"1afa105.0a3f0f","wires":[[]]},{"id":"8fad2375.b2e97","type":"set","name":"set id","xml":"<set>\n<parameter name='brg-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='brg-ar.allotted-resource-status.action' value=\"`$brg-topology-operation-input.request-information.request-action` \" />\n<parameter name='brg-ar.allotted-resource-status.rpc-name' value=\"brg-topology-operation\" />\n<parameter name='brg-ar.allotted-resource-status.rpc-action' value=\"`$brg-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$brg-topology-operation-input.request-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$brg-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$brg-topology-operation-input.service-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$brg-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.' value=\"`$brg-topology-operation-input.brg-request-input.` \" />","comments":"","x":582.2434234619141,"y":691.1481666564941,"z":"1afa105.0a3f0f","wires":[]},{"id":"edf3836c.7ac5a","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2385.5997276306152,"y":630.0000190734863,"z":"1afa105.0a3f0f","wires":[[]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-deactivate.json
new file mode 100755
index 0000000..25e2c1e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-deactivate.json
@@ -0,0 +1,1295 @@
+[
+  {
+    "id":"19d07461.d6c8dc",
+    "type":"dgstart",
+    "name":"DGSTART",
+    "outputs":1,
+    "x":295,
+    "y":230,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "b51a5c82.11d2c"
+      ]
+    ]
+  },
+  {
+    "id":"b51a5c82.11d2c",
+    "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":391.2380790710449,
+    "y":290.95239067077637,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "cbce84a6.ea6878"
+      ]
+    ]
+  },
+  {
+    "id":"cbce84a6.ea6878",
+    "type":"method",
+    "name":"brg-topology-operation-deactivate",
+    "xml":"<method rpc='brg-topology-operation-deactivate' mode='sync'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":437.15485763549805,
+    "y":326.1904458999634,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "d87b2e8f.9e2a"
+      ]
+    ]
+  },
+  {
+    "id":"d87b2e8f.9e2a",
+    "type":"block",
+    "name":"block : atomic",
+    "xml":"<block atomic=\"true\">",
+    "atomic":"true",
+    "comments":"",
+    "outputs":1,
+    "x":307.1428680419922,
+    "y":1181.1903924942017,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "7ae0972.e4f1268",
+        "26fbe137.e4574e",
+        "aaf75937.121618",
+        "b30da41f.59e8b8",
+        "eb6cb316.78bb2",
+        "f3f334a7.8ab7b8",
+        "b0c0958f.205828",
+        "9feaac31.accea",
+        "8072d7bb.d79ca8",
+        "a4c2b092.b5846",
+        "9bf033cd.906e8",
+        "2df95cec.fa5264",
+        "22dee26e.7d616e",
+        "61e540d8.506e5",
+        "4ae758c7.df5428",
+        "8327d1cf.254a7",
+        "9ae0d8e5.63af48",
+        "8261fdb3.cd771",
+        "1191ada7.aeacf2",
+        "2ab5bcc1.a3bc14",
+        "2271a9db.dcd166",
+        "b4b8750b.6fbcb8",
+        "f73b7075.c24df",
+        "1a8316bd.e83579",
+        "2bcd212a.e454ce",
+        "e1525574.ab65b8",
+        "ad5e9d69.70e36",
+        "8bd7c7a7.dbe958"
+      ]
+    ]
+  },
+  {
+    "id":"26fbe137.e4574e",
+    "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":604.0001449584961,
+    "y":2012.5478963851929,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"7ae0972.e4f1268",
+    "type":"set",
+    "name":"set output to api handler",
+    "xml":"<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='brg-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $brg-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+    "comments":"",
+    "x":632.7540588378906,
+    "y":1976.6704425811768,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"a4c2b092.b5846",
+    "type":"set",
+    "name":"set allotted-resource-oper-status",
+    "xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+    "comments":"",
+    "x":651.7542419433594,
+    "y":850.0514221191406,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"b30da41f.59e8b8",
+    "type":"set",
+    "name":"set tmp.ar.self-link",
+    "xml":"<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/brg-topology/'` \" />\n\n",
+    "comments":"",
+    "x":607.7380638122559,
+    "y":443.33332538604736,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"aaf75937.121618",
+    "type":"set",
+    "name":"set tmp.ar.allotted-resource-id,etc",
+    "xml":"<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />\n\n\n",
+    "comments":"",
+    "x":654.9973258972168,
+    "y":409.59259128570557,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"eb6cb316.78bb2",
+    "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":613.9934196472168,
+    "y":479.23152446746826,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"b0c0958f.205828",
+    "type":"execute",
+    "name":"execute RestApiCallNode - Get AR by id",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":676.5187530517578,
+    "y":640.4594917297363,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "3d7103cd.4568dc",
+        "b351e6c5.43b968"
+      ]
+    ]
+  },
+  {
+    "id":"f3f334a7.8ab7b8",
+    "type":"execute",
+    "name":"generate allotted-resource url",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.brg-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":642.0648536682129,
+    "y":539.0172290802002,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"3d7103cd.4568dc",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":933.8148918151855,
+    "y":639.2672522068024,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "d40621a.b89f9e"
+      ]
+    ]
+  },
+  {
+    "id":"9feaac31.accea",
+    "type":"execute",
+    "name":"execute RestApiCallNode - PUT AR by id",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":684.5293121337891,
+    "y":993.4341316223145,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "dbc1a30c.d1d4b",
+        "d6035553.162138",
+        "27b4f86b.b5c548"
+      ]
+    ]
+  },
+  {
+    "id":"dbc1a30c.d1d4b",
+    "type":"not-found",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":954.837329864502,
+    "y":1046.432332418859,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "29141af9.f07796"
+      ]
+    ]
+  },
+  {
+    "id":"d6035553.162138",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":945.8373794555664,
+    "y":1014.9323581680655,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "29141af9.f07796"
+      ]
+    ]
+  },
+  {
+    "id":"27b4f86b.b5c548",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":949.5874176025391,
+    "y":985.2894630432129,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "d196b6e8.482b88"
+      ]
+    ]
+  },
+  {
+    "id":"29141af9.f07796",
+    "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 updating md-sal for brg-allotted-resource\" />\n",
+    "comments":"",
+    "x":1115.587417602539,
+    "y":1015.6823820099235,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"d40621a.b89f9e",
+    "type":"block",
+    "name":"block: atomic",
+    "xml":"<block atomic=\"true\">\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1114.8148460388184,
+    "y":639.7672016620636,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "8b0ae8d2.ae99c8",
+        "7e3f871e.ecf428"
+      ]
+    ]
+  },
+  {
+    "id":"8b0ae8d2.ae99c8",
+    "type":"switchNode",
+    "name":"switch brg length",
+    "xml":"<switch test='`$mdsal-ar.brg-allotted-resource_length`'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1360.6720924377441,
+    "y":674.052964925766,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "3519e6a7.d8988a"
+      ]
+    ]
+  },
+  {
+    "id":"3519e6a7.d8988a",
+    "type":"other",
+    "name":"outcome 1",
+    "xml":"<outcome value='1'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1551.6720962524414,
+    "y":674.0529625415802,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "7664af61.543e6"
+      ]
+    ]
+  },
+  {
+    "id":"1e13655e.0cb03b",
+    "type":"set",
+    "name":"set brg-ar from get",
+    "xml":"<set>\n<parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />\n",
+    "comments":"",
+    "x":1951.5292320251465,
+    "y":674.6243867874146,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"7664af61.543e6",
+    "type":"block",
+    "name":"block: atomic",
+    "xml":"<block atomic='true'>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1722.5290794372559,
+    "y":674.6244316101074,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "1e13655e.0cb03b",
+        "110fdea6.c07091",
+        "8aa660c8.2e3bc"
+      ]
+    ]
+  },
+  {
+    "id":"110fdea6.c07091",
+    "type":"set",
+    "name":"set oper-status",
+    "xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
+    "comments":"",
+    "x":1949.5294761657715,
+    "y":742.0529508590698,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"370dee36.76c892",
+    "type":"comment",
+    "name":"GET brg-allotted-resource from mdsal",
+    "info":"",
+    "comments":"",
+    "x":701.8148155212402,
+    "y":603.7671926021576,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"8aa660c8.2e3bc",
+    "type":"switchNode",
+    "name":"switch order-status",
+    "xml":"<switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1959.52925491333,
+    "y":707.6243848800659,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "82998854.7cca78",
+        "e508d9e1.961e08"
+      ]
+    ]
+  },
+  {
+    "id":"82998854.7cca78",
+    "type":"outcome",
+    "name":"outcome Created",
+    "xml":"<outcome value='Created'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":2171.1292114257812,
+    "y":668.6243848800659,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "50f62ac1.c59a04"
+      ]
+    ]
+  },
+  {
+    "id":"e508d9e1.961e08",
+    "type":"outcome",
+    "name":"outcome Other",
+    "xml":"<outcome value='Other'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":2196.8435859680176,
+    "y":704.052975654602,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "50f62ac1.c59a04"
+      ]
+    ]
+  },
+  {
+    "id":"fb0878b6.3dd068",
+    "type":"comment",
+    "name":"Set allotted-resource-identifiers",
+    "info":"",
+    "comments":"",
+    "x":657.3386383056641,
+    "y":694.3386459350586,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"7e3f871e.ecf428",
+    "type":"set",
+    "name":"save backup copy of mdsal-ar for rollback",
+    "xml":"<set>\n<parameter name='bk-brg-ar' value='$mdsal-ar.' />\n",
+    "comments":"",
+    "x":1440.3864250183105,
+    "y":639.7672936916351,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"bee5e191.1671a",
+    "type":"comment",
+    "name":"Create urls for restapi",
+    "info":"",
+    "comments":"",
+    "x":612.9576606750488,
+    "y":508.6243562698364,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"d196b6e8.482b88",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1091.2433853149414,
+    "y":981.481632232666,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"6b4e5a43.fa5094",
+    "type":"comment",
+    "name":"TO DO: vnf/put parent",
+    "info":"",
+    "comments":"",
+    "x":619.5290908813477,
+    "y":886.9101696014404,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"8072d7bb.d79ca8",
+    "type":"execute",
+    "name":"execute getTime",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":600.9100952148438,
+    "y":808.1482043266296,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"b351e6c5.43b968",
+    "type":"other",
+    "name":"other",
+    "xml":"<outcome value='Other'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":933.5766868591309,
+    "y":675.4814250469208,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "a6e56111.1a042"
+      ]
+    ]
+  },
+  {
+    "id":"a6e56111.1a042",
+    "type":"block",
+    "name":"block: atomic",
+    "xml":"<block atomic=\"true\">\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1113.5766372680664,
+    "y":676.1479756832123,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"9bf033cd.906e8",
+    "type":"set",
+    "name":"set id",
+    "xml":"<set>\n<parameter name='brg-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='brg-ar.allotted-resource-status.action' value=\"`$brg-topology-operation-input.request-information.request-action` \" />\n<parameter name='brg-ar.allotted-resource-status.rpc-name' value=\"brg-topology-operation\" />\n<parameter name='brg-ar.allotted-resource-status.rpc-action' value=\"`$brg-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$brg-topology-operation-input.request-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$brg-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$brg-topology-operation-input.service-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$brg-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.' value=\"`$brg-topology-operation-input.brg-request-input.` \" />",
+    "comments":"",
+    "x":572.2434272766113,
+    "y":732.8148908615112,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"50f62ac1.c59a04",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":2385.5997276306152,
+    "y":670.0000190734863,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"2df95cec.fa5264",
+    "type":"update",
+    "name":"update AAI allotted-resource",
+    "xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $brg-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $brg-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $brg-topology-operation-input.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"operational-status\" value=\"out-of-service-path\" />\n",
+    "comments":"",
+    "outputs":1,
+    "x":641.4286422729492,
+    "y":928.5714282989502,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "735fa50a.5aedac",
+        "f4f3106d.3709a"
+      ]
+    ]
+  },
+  {
+    "id":"735fa50a.5aedac",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":902.1904830932617,
+    "y":911.5239224433899,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "acbfb4ad.063528"
+      ]
+    ]
+  },
+  {
+    "id":"acbfb4ad.063528",
+    "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=\"AAI failed\" />\n",
+    "comments":"",
+    "x":1068.7143630981445,
+    "y":923.1429934501648,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"f4f3106d.3709a",
+    "type":"failure",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":909.2857704162598,
+    "y":944.2858901023865,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "acbfb4ad.063528"
+      ]
+    ]
+  },
+  {
+    "id":"8327d1cf.254a7",
+    "type":"execute",
+    "name":"execute RestApiCallNode - delete BRG to vgMux vxlan tunnel port",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />\n    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />\n    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"honeycomb-vnf\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":757.0000038146973,
+    "y":1469.37672996521,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "6e32aa45.5f8194",
+        "a77ca19a.6e5a6",
+        "ad3f19e9.8b3568"
+      ]
+    ]
+  },
+  {
+    "id":"6e32aa45.5f8194",
+    "type":"not-found",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1178.9748191833496,
+    "y":1506.7083686813712,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "bf98dc87.5b3c4"
+      ]
+    ]
+  },
+  {
+    "id":"a77ca19a.6e5a6",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1169.974868774414,
+    "y":1475.2083944305778,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "bf98dc87.5b3c4"
+      ]
+    ]
+  },
+  {
+    "id":"ad3f19e9.8b3568",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1173.7249069213867,
+    "y":1445.565499305725,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "6e42584e.b2d738"
+      ]
+    ]
+  },
+  {
+    "id":"bf98dc87.5b3c4",
+    "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 deleting vxlan tunnel\" />\n",
+    "comments":"",
+    "x":1339.7249069213867,
+    "y":1475.9584182724357,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"6e42584e.b2d738",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1315.380874633789,
+    "y":1441.7576684951782,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"61e540d8.506e5",
+    "type":"set",
+    "name":"set BRG to vgMUX VXLAN Tunnel Name",
+    "xml":"<set>\n<parameter name='tmp.tunnel-name' value=\"`'vxlanTun' + $brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.vgmux-lan-ip` \" />",
+    "comments":"",
+    "x":681.7779541015625,
+    "y":1368.3770236968994,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"4ae758c7.df5428",
+    "type":"execute",
+    "name":"generate full brg-vpp-honeycomb url",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vpp-honeycomb`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vpp-honeycomb-url\"/>\n    <parameter name=\"target\" value=\"{tunnel-name}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.tunnel-name`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":664.7778167724609,
+    "y":1413.376732826233,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"22dee26e.7d616e",
+    "type":"execute",
+    "name":"generate honeycomb-url to vBRG",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.honeycomb.url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.honeycomb.url\"/>\n    <parameter name=\"target\" value=\"{honeycomb-instance-ip}\"/>\n    <parameter name=\"replacement\" value=\"`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":658.7778930664062,
+    "y":1325.0431432724,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"9ae0d8e5.63af48",
+    "type":"get-resource",
+    "name":"get-resource IPADDR from dmaap DHCP_MAP ",
+    "xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='IPADDR' key=\"SELECT min(ip_addr) ip from DHCP_MAP where mac_addr = $brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.brg-wan-mac-address\" pfx=\"tmp.brg-wan-ip\" >\n",
+    "comments":"",
+    "outputs":1,
+    "x":700.9999847412109,
+    "y":1075.8332653045654,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"8261fdb3.cd771",
+    "type":"set",
+    "name":"set brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip",
+    "xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip' value='`$tmp.brg-wan-ip.ip`' />\n",
+    "comments":"",
+    "x":787.142822265625,
+    "y":1123.416519165039,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"1191ada7.aeacf2",
+    "type":"set",
+    "name":"set tmp.ar.consuming-service-instance-id to find vgmux-lan-ip",
+    "xml":"<set>\n<parameter name='tmp.ar.consuming-service-instance-id' value='`$allotted-resource-data.brg-topology.allotted-resource-identifiers.consuming-service-instance-id`' />\n",
+    "comments":"",
+    "x":748.1427612304688,
+    "y":1171.416347503662,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"2ab5bcc1.a3bc14",
+    "type":"set",
+    "name":"set brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-lan-ip",
+    "xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-lan-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-lan-ip`' />\n",
+    "comments":"",
+    "x":791.4760894775391,
+    "y":1268.0829801559448,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"56899e0f.9f0a9",
+    "type":"comment",
+    "name":"Setup VXLAN Tunnel - vBRG to vgMUX",
+    "info":"",
+    "comments":"",
+    "x":350.30946350097656,
+    "y":1076.4166297912598,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"2271a9db.dcd166",
+    "type":"call",
+    "name":"call GENERIC-RESOURCE-API:get-tunnelxconn-ar",
+    "xml":"<call module='GENERIC-RESOURCE-API' rpc='get-tunnelxconn-ar' mode='sync' >\n",
+    "comments":"",
+    "outputs":1,
+    "x":716.6666107177734,
+    "y":1216.6665077209473,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"ad5e9d69.70e36",
+    "type":"execute",
+    "name":"execute RestApiCallNode - setup vG to vgMux vxlan tunnel port",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />\n    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />\n    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"honeycomb-vnf\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":750.7049789428711,
+    "y":1825.0618782043457,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "b97f57b9.da4a38",
+        "edd6cfd6.0c5c6",
+        "a1875f2b.49a61"
+      ]
+    ]
+  },
+  {
+    "id":"b97f57b9.da4a38",
+    "type":"not-found",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1084.6797676086426,
+    "y":1884.393490217626,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "8f0443c6.63f49"
+      ]
+    ]
+  },
+  {
+    "id":"edd6cfd6.0c5c6",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1075.679817199707,
+    "y":1852.8935159668326,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "8f0443c6.63f49"
+      ]
+    ]
+  },
+  {
+    "id":"a1875f2b.49a61",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1079.4298553466797,
+    "y":1823.25062084198,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "ee0fe1f7.5d9d6"
+      ]
+    ]
+  },
+  {
+    "id":"8f0443c6.63f49",
+    "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 setting up vxlan tunnel\" />\n",
+    "comments":"",
+    "x":1245.4298553466797,
+    "y":1853.6435398086905,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"ee0fe1f7.5d9d6",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1221.085823059082,
+    "y":1819.442790031433,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"2bcd212a.e454ce",
+    "type":"set",
+    "name":"set vG to vgMUX VXLAN Tunnel Name",
+    "xml":"<set>\n<parameter name='tmp.tunnel-name' value=\"`'vxlanTun' + $brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip` \" />\n",
+    "comments":"",
+    "x":672.1494979858398,
+    "y":1721.7288551330566,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"e1525574.ab65b8",
+    "type":"execute",
+    "name":"generate full vg-vpp-honeycomb url",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vpp-honeycomb`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vpp-honeycomb-url\"/>\n    <parameter name=\"target\" value=\"{tunnel-name}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.tunnel-name`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":660.1494674682617,
+    "y":1780.0618467330933,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"1a8316bd.e83579",
+    "type":"execute",
+    "name":"generate honeycomb-url to vG",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.honeycomb.url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.honeycomb.url\"/>\n    <parameter name=\"target\" value=\"{honeycomb-instance-ip}\"/>\n    <parameter name=\"replacement\" value=\"`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-mgmt-ip`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":647.1495361328125,
+    "y":1668.7282466888428,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"eaa53259.f5fbf",
+    "type":"comment",
+    "name":"Get vg-mgmt-ip",
+    "info":"brg tunnelxconnn consuming-service-instance-id\nfound in services as service-instance-id",
+    "comments":"",
+    "x":347.8716354370117,
+    "y":1616.8953161239624,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"9bd5631.49aaba",
+    "type":"for",
+    "name":"for tmp.servicedata.services",
+    "xml":"<for index='serviceidx' start='0' end='`$tmp.servicedata.services.service_length`' >\n\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":1491.5382080078125,
+    "y":1607.2283487319946,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "5387ccd0.736d34"
+      ]
+    ]
+  },
+  {
+    "id":"f73b7075.c24df",
+    "type":"get-resource",
+    "name":"get-resource generic-resource-api:services ",
+    "xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='GENERIC-RESOURCE-API' key='services' pfx='tmp.servicedata' >\n",
+    "comments":"",
+    "outputs":1,
+    "x":684.8716583251953,
+    "y":1619.89475440979,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "da8a3a08.847948",
+        "c7e2b4a3.bcd4c8",
+        "4e104241.ba90cc"
+      ]
+    ]
+  },
+  {
+    "id":"5387ccd0.736d34",
+    "type":"switchNode",
+    "name":"switch parent-service-instance-id matches",
+    "xml":"<switch test='`$tmp.servicedata.services.service[$serviceidx].service-instance-id == $tmp.search.consuming-service-instance-id`'>\n\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":1596.2050170898438,
+    "y":1714.5616245269775,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "27b2238f.48bacc"
+      ]
+    ]
+  },
+  {
+    "id":"27b2238f.48bacc",
+    "type":"success",
+    "name":"true",
+    "xml":"<outcome value='true'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1851.8715934753418,
+    "y":1665.561752319336,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "d6b8cc2c.e7ed2"
+      ]
+    ]
+  },
+  {
+    "id":"da8a3a08.847948",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1176.5382614135742,
+    "y":1623.8948411941528,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "9bd5631.49aaba"
+      ]
+    ]
+  },
+  {
+    "id":"4e104241.ba90cc",
+    "type":"not-found",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1154.8716201782227,
+    "y":1690.5615339279175,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "95609128.36e19"
+      ]
+    ]
+  },
+  {
+    "id":"c7e2b4a3.bcd4c8",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1145.871669769287,
+    "y":1659.061559677124,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "95609128.36e19"
+      ]
+    ]
+  },
+  {
+    "id":"95609128.36e19",
+    "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 getting GENERIC-RESOURCE-API:services\" />\n",
+    "comments":"",
+    "x":1315.6217079162598,
+    "y":1659.811583518982,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"d6b8cc2c.e7ed2",
+    "type":"for",
+    "name":"for service vnfs",
+    "xml":"<for index='vnfidx' start='0' end='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf_length`' >\n\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":1885.5381240844727,
+    "y":1566.8949918746948,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "dc75c31d.21ba2"
+      ]
+    ]
+  },
+  {
+    "id":"d6733026.3d178",
+    "type":"switchNode",
+    "name":"switch parent-service-instance-id matches",
+    "xml":"<switch test='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfmoduleidx].vf-module-data.vf-module-topology.vf-module-parameters.param[$paramidx].name == vgw_private_ip_1`'>\n\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":2445.5381088256836,
+    "y":1590.561650276184,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "43171d7f.7e6834"
+      ]
+    ]
+  },
+  {
+    "id":"43171d7f.7e6834",
+    "type":"success",
+    "name":"true",
+    "xml":"<outcome value='true'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":2695.5381927490234,
+    "y":1592.2283849716187,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "3f1e667b.61b1aa"
+      ]
+    ]
+  },
+  {
+    "id":"dc75c31d.21ba2",
+    "type":"for",
+    "name":"for service vnf vf-modules",
+    "xml":"<for index='vfmoduleidx' start='0' end='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >\n\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":2110.5382385253906,
+    "y":1593.8949279785156,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "d918ac81.8d655"
+      ]
+    ]
+  },
+  {
+    "id":"d918ac81.8d655",
+    "type":"for",
+    "name":"for service vnfs vf-modules parameters",
+    "xml":"<for index='paramidx' start='0' end='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfmoduleidx].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >\n\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":2200.538215637207,
+    "y":1678.8948965072632,
+    "z":"e9217625.0cac48",
+    "wires":[
+      [
+        "d6733026.3d178"
+      ]
+    ]
+  },
+  {
+    "id":"3f1e667b.61b1aa",
+    "type":"set",
+    "name":"set vg-mgmt-ip",
+    "xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-mgmt-ip' value='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfmoduleidx].vf-module-data.vf-module-topology.vf-module-parameters.param[$paramidx].value`' />\n",
+    "comments":"",
+    "x":2877.2047424316406,
+    "y":1588.894944190979,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"8bd7c7a7.dbe958",
+    "type":"set",
+    "name":"set brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-ip",
+    "xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip`' />\n",
+    "comments":"",
+    "x":762.8334503173828,
+    "y":1518.3331851959229,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"b4b8750b.6fbcb8",
+    "type":"set",
+    "name":"set brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip",
+    "xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-bearer-ip`' />\n",
+    "comments":"",
+    "x":798.8333930969238,
+    "y":1572.666563987732,
+    "z":"e9217625.0cac48",
+    "wires":[
+
+    ]
+  }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-delete.json
new file mode 100755
index 0000000..0149802
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-delete.json
@@ -0,0 +1 @@
+[{"id":"6b945847.1c8628","type":"dgstart","name":"DGSTART","outputs":1,"x":187,"y":84,"z":"cab86701.408c88","wires":[["46c9c550.08ddbc"]]},{"id":"46c9c550.08ddbc","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":283.2380790710449,"y":144.95239067077637,"z":"cab86701.408c88","wires":[["33033a6c.777e46"]]},{"id":"33033a6c.777e46","type":"method","name":"brg-topology-operation-delete","xml":"<method rpc='brg-topology-operation-delete' mode='sync'>\n","comments":"","outputs":1,"x":329.15485763549805,"y":180.19044589996338,"z":"cab86701.408c88","wires":[["71a136f2.4a6ae8"]]},{"id":"71a136f2.4a6ae8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":237.47619247436523,"y":323.5237879753113,"z":"cab86701.408c88","wires":[["d473982e.2073e8","21b535a4.6f3cfa","58735763.200388","67dca0c.5203f6","d4bebd02.2ac6","ed3aea18.ac56a8","ce33759f.7f8848","af4ea7a7.5e99e8","dd978c58.19189","a078b88c.279298","1469e91d.b421d7","4a2606ec.007d08"]]},{"id":"21b535a4.6f3cfa","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.0001106262207,"y":993.2145080566406,"z":"cab86701.408c88","wires":[]},{"id":"d473982e.2073e8","type":"set","name":"set output to api handler","xml":"<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='brg-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $brg-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n","comments":"","x":532.7540245056152,"y":957.3370542526245,"z":"cab86701.408c88","wires":[]},{"id":"dd978c58.19189","type":"set","name":"set allotted-resource-oper-status","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n","comments":"","x":543.7542190551758,"y":704.0514001846313,"z":"cab86701.408c88","wires":[]},{"id":"67dca0c.5203f6","type":"set","name":"set tmp.ar.self-link","xml":"<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/brg-topology/'` \" />\n\n","comments":"","x":499.73806381225586,"y":297.33332538604736,"z":"cab86701.408c88","wires":[]},{"id":"58735763.200388","type":"set","name":"set tmp.ar.allotted-resource-id,etc","xml":"<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />\n\n\n","comments":"","x":546.9973258972168,"y":263.59259128570557,"z":"cab86701.408c88","wires":[]},{"id":"d4bebd02.2ac6","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":505.9934196472168,"y":333.23152446746826,"z":"cab86701.408c88","wires":[[]]},{"id":"ce33759f.7f8848","type":"execute","name":"execute RestApiCallNode - Get AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":568.5187530517578,"y":494.4594917297363,"z":"cab86701.408c88","wires":[["3d6ff871.1b6728","c68f9183.6fe9"]]},{"id":"ed3aea18.ac56a8","type":"execute","name":"generate allotted-resource url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.brg-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n","comments":"","outputs":1,"x":534.0648536682129,"y":393.0172290802002,"z":"cab86701.408c88","wires":[[]]},{"id":"3d6ff871.1b6728","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":825.8148918151855,"y":493.26725220680237,"z":"cab86701.408c88","wires":[["cae924d0.c91d68"]]},{"id":"e3d80d76.f38b6","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":846.837329864502,"y":900.432332418859,"z":"cab86701.408c88","wires":[["e5182ef1.2930a"]]},{"id":"408d7749.7bfef8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":837.8373794555664,"y":868.9323581680655,"z":"cab86701.408c88","wires":[["e5182ef1.2930a"]]},{"id":"a26d7c72.44fcc","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":841.5874176025391,"y":839.2894630432129,"z":"cab86701.408c88","wires":[["e6e17eb6.e762c"]]},{"id":"e5182ef1.2930a","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 updating md-sal for brg-allotted-resource\" />\n","comments":"","x":1007.5874176025391,"y":869.6823820099235,"z":"cab86701.408c88","wires":[]},{"id":"cae924d0.c91d68","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1006.8148460388184,"y":493.7672016620636,"z":"cab86701.408c88","wires":[["a06def86.57a78","2d0ecbe9.d56c34"]]},{"id":"a06def86.57a78","type":"switchNode","name":"switch brg length","xml":"<switch test='`$mdsal-ar.brg-allotted-resource_length`'>\n","comments":"","outputs":1,"x":1252.6720924377441,"y":528.052964925766,"z":"cab86701.408c88","wires":[["ef02f832.92b468"]]},{"id":"ef02f832.92b468","type":"other","name":"outcome 1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1443.6720962524414,"y":528.0529625415802,"z":"cab86701.408c88","wires":[["6ff8e752.374018"]]},{"id":"b7d42ce2.9a481","type":"set","name":"set brg-ar from get","xml":"<set>\n<parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />\n","comments":"","x":1843.5292320251465,"y":528.6243867874146,"z":"cab86701.408c88","wires":[]},{"id":"6ff8e752.374018","type":"block","name":"block: atomic","xml":"<block atomic='true'>\n","atomic":"false","comments":"","outputs":1,"x":1614.5290794372559,"y":528.6244316101074,"z":"cab86701.408c88","wires":[["b7d42ce2.9a481","63e31730.e27918","d8d35b13.b628f8"]]},{"id":"63e31730.e27918","type":"set","name":"set oper-status","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n","comments":"","x":1841.5294761657715,"y":596.0529508590698,"z":"cab86701.408c88","wires":[]},{"id":"bed5b961.bd6788","type":"comment","name":"GET brg-allotted-resource from mdsal","info":"","comments":"","x":593.8148155212402,"y":457.7671926021576,"z":"cab86701.408c88","wires":[]},{"id":"d8d35b13.b628f8","type":"switchNode","name":"switch order-status","xml":"<switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1851.52925491333,"y":561.6243848800659,"z":"cab86701.408c88","wires":[["55b36fbc.52943","19d63441.492dec"]]},{"id":"55b36fbc.52943","type":"outcome","name":"outcome Created","xml":"<outcome value='Created'>\n","comments":"","outputs":1,"x":2063.1292114257812,"y":522.6243848800659,"z":"cab86701.408c88","wires":[["27c47993.316bb6"]]},{"id":"19d63441.492dec","type":"outcome","name":"outcome Other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2088.8435859680176,"y":558.052975654602,"z":"cab86701.408c88","wires":[["27c47993.316bb6"]]},{"id":"f3aeefda.cd911","type":"comment","name":"Set allotted-resource-identifiers","info":"","comments":"","x":549.3386383056641,"y":548.3386459350586,"z":"cab86701.408c88","wires":[]},{"id":"2d0ecbe9.d56c34","type":"set","name":"save backup copy of mdsal-ar for rollback","xml":"<set>\n<parameter name='bk-brg-ar' value='$mdsal-ar.' />\n","comments":"","x":1332.3864250183105,"y":493.76729369163513,"z":"cab86701.408c88","wires":[]},{"id":"33868ac7.abca26","type":"comment","name":"Create urls for restapi","info":"","comments":"","x":504.9576606750488,"y":362.6243562698364,"z":"cab86701.408c88","wires":[]},{"id":"e6e17eb6.e762c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":983.2433853149414,"y":835.481632232666,"z":"cab86701.408c88","wires":[[]]},{"id":"2b3604ae.317ccc","type":"comment","name":"TO DO: vnf/put parent","info":"","comments":"","x":517.2433776855468,"y":769.4815540313718,"z":"cab86701.408c88","wires":[]},{"id":"af4ea7a7.5e99e8","type":"execute","name":"execute getTime","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n","comments":"","outputs":1,"x":491.24338150024414,"y":665.4815549850464,"z":"cab86701.408c88","wires":[[]]},{"id":"c68f9183.6fe9","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":825.5766868591309,"y":529.4814250469208,"z":"cab86701.408c88","wires":[["336a662a.c1025a"]]},{"id":"336a662a.c1025a","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1005.5766372680664,"y":530.1479756832123,"z":"cab86701.408c88","wires":[[]]},{"id":"a078b88c.279298","type":"set","name":"set id","xml":"<set>\n<parameter name='brg-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='brg-ar.allotted-resource-status.action' value=\"`$brg-topology-operation-input.request-information.request-action` \" />\n<parameter name='brg-ar.allotted-resource-status.rpc-name' value=\"brg-topology-operation\" />\n<parameter name='brg-ar.allotted-resource-status.rpc-action' value=\"`$brg-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$brg-topology-operation-input.request-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$brg-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$brg-topology-operation-input.service-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$brg-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.' value=\"`$brg-topology-operation-input.brg-request-input.` \" />","comments":"","x":474.24342346191406,"y":585.1481666564941,"z":"cab86701.408c88","wires":[]},{"id":"27c47993.316bb6","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2277.5997276306152,"y":524.0000190734863,"z":"cab86701.408c88","wires":[[]]},{"id":"1469e91d.b421d7","type":"execute","name":"execute RestApiCallNode - PUT AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":574.0000152587891,"y":850.0000247955322,"z":"cab86701.408c88","wires":[["a26d7c72.44fcc","408d7749.7bfef8","e3d80d76.f38b6"]]},{"id":"4a2606ec.007d08","type":"set","name":"clear brg-ar-assignments","xml":"<set>\n<parameter name='brg-ar-assignments.' value=\"\" />\n\n\n\n","comments":"","x":518,"y":736,"z":"cab86701.408c88","wires":[]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-unassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-unassign.json
new file mode 100755
index 0000000..0516275
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation-unassign.json
@@ -0,0 +1 @@
+[{"id":"8f1f2ad4.1b2628","type":"dgstart","name":"DGSTART","outputs":1,"x":185,"y":110,"z":"892de9cf.a3e7e8","wires":[["aef28f38.d3ad2"]]},{"id":"aef28f38.d3ad2","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":281.2380790710449,"y":170.95239067077637,"z":"892de9cf.a3e7e8","wires":[["d541214e.1421c"]]},{"id":"d541214e.1421c","type":"method","name":"brg-topology-operation-unassign","xml":"<method rpc='brg-topology-operation-unassign' mode='sync'>\n","comments":"","outputs":1,"x":325.15489196777344,"y":210.190447807312,"z":"892de9cf.a3e7e8","wires":[["3d909232.be8cbe"]]},{"id":"3d909232.be8cbe","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":235.47619247436523,"y":349.5237879753113,"z":"892de9cf.a3e7e8","wires":[["ac546d04.a44e3","65b7ebff.45ef54","887af0a1.cfd5a","16719562.f89cfb","921e5db9.a3742","ae6a6800.748f18","4585bd6c.db3454","a30a4193.dc67c"]]},{"id":"65b7ebff.45ef54","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":502.0001106262207,"y":1019.2145080566406,"z":"892de9cf.a3e7e8","wires":[]},{"id":"ac546d04.a44e3","type":"set","name":"set output to api handler","xml":"<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='brg-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $brg-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n","comments":"","x":530.7540245056152,"y":983.3370542526245,"z":"892de9cf.a3e7e8","wires":[]},{"id":"16719562.f89cfb","type":"set","name":"set tmp.ar.self-link","xml":"<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/brg-topology/'` \" />\n\n","comments":"","x":497.73806381225586,"y":323.33332538604736,"z":"892de9cf.a3e7e8","wires":[]},{"id":"887af0a1.cfd5a","type":"set","name":"set tmp.ar.allotted-resource-id,etc","xml":"<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />\n\n\n","comments":"","x":544.9973258972168,"y":289.59259128570557,"z":"892de9cf.a3e7e8","wires":[]},{"id":"921e5db9.a3742","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":503.9934196472168,"y":359.23152446746826,"z":"892de9cf.a3e7e8","wires":[[]]},{"id":"4585bd6c.db3454","type":"execute","name":"execute RestApiCallNode - Get AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":566.5187530517578,"y":520.4594917297363,"z":"892de9cf.a3e7e8","wires":[["39c78959.7ed206","f4ec9c65.dbf1a"]]},{"id":"ae6a6800.748f18","type":"execute","name":"generate allotted-resource url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.brg-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n","comments":"","outputs":1,"x":532.0648536682129,"y":419.0172290802002,"z":"892de9cf.a3e7e8","wires":[[]]},{"id":"39c78959.7ed206","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":823.8148918151855,"y":519.2672522068024,"z":"892de9cf.a3e7e8","wires":[["aa4578bf.e01898"]]},{"id":"cf288e81.867c","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":844.837329864502,"y":926.432332418859,"z":"892de9cf.a3e7e8","wires":[["562e732f.776e5c"]]},{"id":"8f1f61fb.4c4c9","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":835.8373794555664,"y":894.9323581680655,"z":"892de9cf.a3e7e8","wires":[["562e732f.776e5c"]]},{"id":"48115134.9ae56","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":839.5874176025391,"y":865.2894630432129,"z":"892de9cf.a3e7e8","wires":[["9c761fba.db0c3"]]},{"id":"562e732f.776e5c","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 updating md-sal for brg-allotted-resource\" />\n","comments":"","x":1005.5874176025391,"y":895.6823820099235,"z":"892de9cf.a3e7e8","wires":[]},{"id":"aa4578bf.e01898","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1004.8148460388184,"y":519.7672016620636,"z":"892de9cf.a3e7e8","wires":[["d17cf2f0.cec85","dae16c74.e3b7c"]]},{"id":"d17cf2f0.cec85","type":"switchNode","name":"switch brg length","xml":"<switch test='`$mdsal-ar.brg-allotted-resource_length`'>\n","comments":"","outputs":1,"x":1250.6720924377441,"y":554.052964925766,"z":"892de9cf.a3e7e8","wires":[["9eb758cd.982008"]]},{"id":"9eb758cd.982008","type":"other","name":"outcome 1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1441.6720962524414,"y":554.0529625415802,"z":"892de9cf.a3e7e8","wires":[["e43335e7.a2b4b8"]]},{"id":"90a7fa85.7e06d8","type":"set","name":"set brg-ar from get","xml":"<set>\n<parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />\n","comments":"","x":1841.5292320251465,"y":554.6243867874146,"z":"892de9cf.a3e7e8","wires":[]},{"id":"e43335e7.a2b4b8","type":"block","name":"block: atomic","xml":"<block atomic='true'>\n","atomic":"false","comments":"","outputs":1,"x":1612.5290794372559,"y":554.6244316101074,"z":"892de9cf.a3e7e8","wires":[["90a7fa85.7e06d8","82e79827.7b2528","e9d4c55b.3b68e8"]]},{"id":"82e79827.7b2528","type":"set","name":"set oper-status","xml":"<set>\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />\n<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n","comments":"","x":1839.5294761657715,"y":622.0529508590698,"z":"892de9cf.a3e7e8","wires":[]},{"id":"dceff592.9c16a8","type":"comment","name":"GET brg-allotted-resource from mdsal","info":"","comments":"","x":591.8148155212402,"y":483.7671926021576,"z":"892de9cf.a3e7e8","wires":[]},{"id":"e9d4c55b.3b68e8","type":"switchNode","name":"switch order-status","xml":"<switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1849.52925491333,"y":587.6243848800659,"z":"892de9cf.a3e7e8","wires":[["ee32ca42.029ac8","f44f15e1.8ed938"]]},{"id":"ee32ca42.029ac8","type":"outcome","name":"outcome Created","xml":"<outcome value='Created'>\n","comments":"","outputs":1,"x":2061.1292114257812,"y":548.6243848800659,"z":"892de9cf.a3e7e8","wires":[["74e489f7.35eb68"]]},{"id":"f44f15e1.8ed938","type":"outcome","name":"outcome Other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2086.8435859680176,"y":584.052975654602,"z":"892de9cf.a3e7e8","wires":[["74e489f7.35eb68"]]},{"id":"dae16c74.e3b7c","type":"set","name":"save backup copy of mdsal-ar for rollback","xml":"<set>\n<parameter name='bk-brg-ar' value='$mdsal-ar.' />\n","comments":"","x":1330.3864250183105,"y":519.7672936916351,"z":"892de9cf.a3e7e8","wires":[]},{"id":"972a22dc.b7b85","type":"comment","name":"Create urls for restapi","info":"","comments":"","x":502.9576606750488,"y":388.6243562698364,"z":"892de9cf.a3e7e8","wires":[]},{"id":"9c761fba.db0c3","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":981.2433853149414,"y":861.481632232666,"z":"892de9cf.a3e7e8","wires":[[]]},{"id":"f4ec9c65.dbf1a","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":823.5766868591309,"y":555.4814250469208,"z":"892de9cf.a3e7e8","wires":[["8c932988.c6f7a8"]]},{"id":"8c932988.c6f7a8","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1003.5766372680664,"y":556.1479756832123,"z":"892de9cf.a3e7e8","wires":[[]]},{"id":"74e489f7.35eb68","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2275.5997276306152,"y":550.0000190734863,"z":"892de9cf.a3e7e8","wires":[[]]},{"id":"a30a4193.dc67c","type":"execute","name":"execute RestApiCallNode - PUT AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":568.0000610351562,"y":878.0000267028809,"z":"892de9cf.a3e7e8","wires":[["48115134.9ae56","8f1f61fb.4c4c9","cf288e81.867c"]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation.json
new file mode 100644
index 0000000..04407c8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_brg-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"6c1dd237.4ac514","type":"dgstart","name":"DGSTART","outputs":1,"x":186,"y":122,"z":"8e01e90d.03c0b8","wires":[["1d978af4.0eb20d"]]},{"id":"1d978af4.0eb20d","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":264.61902618408203,"y":162.238112449646,"z":"8e01e90d.03c0b8","wires":[["54c410ef.22533"]]},{"id":"54c410ef.22533","type":"method","name":"brg-topology-operation","xml":"<method rpc='brg-topology-operation' mode='sync'>\n","comments":"","outputs":1,"x":249.09529876708984,"y":221.99999809265137,"z":"8e01e90d.03c0b8","wires":[["26f2dc2e.727b4c"]]},{"id":"ff82b2d4.02e6b8","type":"comment","name":"BRG-TOPOLOGY-OPERATION ","info":"","comments":"","x":577.0115203857422,"y":69.58634376525879,"z":"8e01e90d.03c0b8","wires":[]},{"id":"26f2dc2e.727b4c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":302.3810043334961,"y":305.4434595108032,"z":"8e01e90d.03c0b8","wires":[["b666324b.9917e8","9699fcc1.653908","83c22972.dcb878","673a5d62.b6f37c"]]},{"id":"b666324b.9917e8","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":526.7500534057617,"y":909.2861194610596,"z":"8e01e90d.03c0b8","wires":[]},{"id":"9699fcc1.653908","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$brg-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":523.3809280395508,"y":515.857177734375,"z":"8e01e90d.03c0b8","wires":[["b7f5f677.943d9","65adfd1a.c80ddc","1a041f5.60f9561","a13e6eac.da9aa8","e5d2641c.f1fb7","43a8465a.615b","acd124f4.75c688"]]},{"id":"b7f5f677.943d9","type":"other","name":"assign","xml":"<outcome value='assign'>\n","comments":"","outputs":1,"x":745.2857551574707,"y":376.7142586708069,"z":"8e01e90d.03c0b8","wires":[["fff021ad.b9858"]]},{"id":"fff021ad.b9858","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":925.0952835083008,"y":379.1429500579834,"z":"8e01e90d.03c0b8","wires":[["5269932b.15572c"]]},{"id":"83c22972.dcb878","type":"call","name":"call GENERIC-RESOURCE-API:validate-brg-input","xml":"<call module='GENERIC-RESOURCE-API' rpc='validate-brg-input' mode='sync' >\n","comments":"","outputs":1,"x":657.9523544311523,"y":297.42859268188477,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"5269932b.15572c","type":"call","name":"call GENERIC-RESOURCE-API:brg-topology-operation-assign","xml":"<call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-assign' mode='sync' >\n","comments":"","outputs":1,"x":1296.6665802001953,"y":379.0000057220459,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"65adfd1a.c80ddc","type":"other","name":"activate","xml":"<outcome value='activate'>\n","comments":"","outputs":1,"x":745.6666641235352,"y":466,"z":"8e01e90d.03c0b8","wires":[["9e79cedd.803c8"]]},{"id":"9e79cedd.803c8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":929.9048233032227,"y":467.0001220703125,"z":"8e01e90d.03c0b8","wires":[["3e6fbc16.fbfb2c"]]},{"id":"9ba81ac2.6483c","type":"call","name":"call GENERIC-RESOURCE-API:network-topology-operation-activate","xml":"<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-activate' mode='sync' >\n","comments":"","outputs":1,"x":1862.476342519125,"y":1442.1904754638672,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"1a041f5.60f9561","type":"other","name":"deactivate","xml":"<outcome value='deactivate'>\n","comments":"","outputs":1,"x":754.6667041778564,"y":526.0000581741333,"z":"8e01e90d.03c0b8","wires":[["c6a02ccd.3a8a4"]]},{"id":"c6a02ccd.3a8a4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":935.904863357544,"y":527.0001802444458,"z":"8e01e90d.03c0b8","wires":[["d6368656.a9dc9"]]},{"id":"8f2d181d.e9dd4","type":"call","name":"call GENERIC-RESOURCE-API:network-topology-operation-deactivate","xml":"<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-deactivate' mode='sync' >\n","comments":"","outputs":1,"x":1868.9762509663906,"y":1557.9404754638672,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"a13e6eac.da9aa8","type":"other","name":"unassign","xml":"<outcome value='unassign'>\n","comments":"","outputs":1,"x":752.66672706604,"y":644.3333978652954,"z":"8e01e90d.03c0b8","wires":[["1ce38c61.56ed3c"]]},{"id":"1ce38c61.56ed3c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":933.9048862457275,"y":645.3335199356079,"z":"8e01e90d.03c0b8","wires":[["df0ce2cc.be0a4"]]},{"id":"138e04fc.67d6a3","type":"call","name":"call GENERIC-RESOURCE-API:network-topology-operation-unassign","xml":"<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-unassign' mode='sync' >\n","comments":"","outputs":1,"x":1875.7262509663906,"y":1670.6904754638672,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"e5d2641c.f1fb7","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":752.000057220459,"y":704.3333806991577,"z":"8e01e90d.03c0b8","wires":[["ff51f24.baa951"]]},{"id":"ff51f24.baa951","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-action is a required input\" />\n","comments":"","x":934.0000534057617,"y":703.3333902359009,"z":"8e01e90d.03c0b8","wires":[]},{"id":"673a5d62.b6f37c","type":"set","name":"Set final indicator to Y","xml":"<set>\n<parameter name=\"ack-final\" value=\"Y\"/>","comments":"","x":545.7777481079102,"y":868.4444580078125,"z":"8e01e90d.03c0b8","wires":[]},{"id":"1591bdd5.239aaa","type":"for","name":"for nidx..service-data.networks.network[]","xml":"<for index='nidx' start='0' end='`$service-data.networks.network_length`' >\n","comments":"","outputs":1,"x":1764.3971341451015,"y":1336.095230102539,"z":"8e01e90d.03c0b8","wires":[["847a89dc.e4c0d"]]},{"id":"c52d3dc.ceedd4","type":"switchNode","name":"switch service-data.networks.network_length","xml":"<switch test='`$service-data.networks.network_length`'>\n","comments":"","outputs":1,"x":1098.1112302144375,"y":1300.6666107177734,"z":"8e01e90d.03c0b8","wires":[["fa068ef.134e47","2eb4354e.bacee2"]]},{"id":"fa068ef.134e47","type":"other","name":"outcome Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1341.1111691792812,"y":1302.6666202545166,"z":"8e01e90d.03c0b8","wires":[["7a71186c.880bf"]]},{"id":"2eb4354e.bacee2","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1295.1111996968593,"y":1335.6666412353516,"z":"8e01e90d.03c0b8","wires":[["5ae3e22f.181e3c"]]},{"id":"847a89dc.e4c0d","type":"switchNode","name":"switch networkid found","xml":"<switch test=\"`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`\">\n\n","comments":"","outputs":1,"x":2054.8256848653164,"y":1335.345314025879,"z":"8e01e90d.03c0b8","wires":[["adf77eb2.a6bef"]]},{"id":"adf77eb2.a6bef","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2243.7780392964687,"y":1336.238052368164,"z":"8e01e90d.03c0b8","wires":[["b5bb9b20.bfcac8"]]},{"id":"b5bb9b20.bfcac8","type":"set","name":"set tmp.nidx and ctx.network-data","xml":"<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='ctx.network-data.' value='`$service-data.networks.network[$nidx].`' />\n","comments":"","x":2477.309808095297,"y":1334.9880599975586,"z":"8e01e90d.03c0b8","wires":[]},{"id":"dfdb5580.53cbe","type":"comment","name":"Find the index to service data for this network - save id in tmp.nidx, save service-data","info":"","comments":"","x":1221.2223141988125,"y":1269.666633605957,"z":"8e01e90d.03c0b8","wires":[]},{"id":"7a71186c.880bf","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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n","comments":"","x":1532.888726552328,"y":1300.5556182861328,"z":"8e01e90d.03c0b8","wires":[]},{"id":"5ae3e22f.181e3c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1462.3811658223476,"y":1335.2212181091309,"z":"8e01e90d.03c0b8","wires":[["1591bdd5.239aaa","586139d7.8852a8"]]},{"id":"586139d7.8852a8","type":"switchNode","name":"switch tmp.nidx ","xml":"<switch test=\"`$tmp.nidx`\">\n\n","comments":"","outputs":1,"x":1682.6985638936367,"y":1378.0784368515015,"z":"8e01e90d.03c0b8","wires":[["15d3790a.886ca7"]]},{"id":"f7113043.4dc108","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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n","comments":"","x":2035.5555470784511,"y":1373.7926788330078,"z":"8e01e90d.03c0b8","wires":[]},{"id":"15d3790a.886ca7","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1854.1270993550625,"y":1376.6498222351074,"z":"8e01e90d.03c0b8","wires":[["f7113043.4dc108"]]},{"id":"4bdb6fd2.39562","type":"switchNode","name":"switch network-level-oper-status","xml":"<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1075.4445737202968,"y":1442.1418762207031,"z":"8e01e90d.03c0b8","wires":[["bd001758.5c8da","b56f358b.638728"]]},{"id":"bd001758.5c8da","type":"outcome","name":"outcome PendingCreate","xml":"<outcome value='PendingCreate'>\n","comments":"","outputs":1,"x":1440.4445533752441,"y":1442.141860961914,"z":"8e01e90d.03c0b8","wires":[["9ba81ac2.6483c"]]},{"id":"b56f358b.638728","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1390.4446004231777,"y":1482.1418914794922,"z":"8e01e90d.03c0b8","wires":[["ef3ca8f6.2d1be8"]]},{"id":"ef3ca8f6.2d1be8","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 is not in appropriate state for activate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />","comments":"","x":1560.4446004231777,"y":1482.1418914794922,"z":"8e01e90d.03c0b8","wires":[]},{"id":"2cef8cb5.8dce54","type":"switchNode","name":"switch network-level-oper-status","xml":"<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1082.7460568745937,"y":1558.093276977539,"z":"8e01e90d.03c0b8","wires":[["df811c8b.287138","ee8d6caf.c61f58"]]},{"id":"df811c8b.287138","type":"outcome","name":"outcome Created","xml":"<outcome value='Created'>\n","comments":"","outputs":1,"x":1445.7460263570156,"y":1558.0933074951172,"z":"8e01e90d.03c0b8","wires":[["8f2d181d.e9dd4"]]},{"id":"ee8d6caf.c61f58","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1415.7460263570156,"y":1598.0933074951172,"z":"8e01e90d.03c0b8","wires":[["7ba4729f.e98744"]]},{"id":"7ba4729f.e98744","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 is not in appropriate state for deactivate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />","comments":"","x":1581.7460263570156,"y":1600.0933074951172,"z":"8e01e90d.03c0b8","wires":[]},{"id":"386e76f6.8691fa","type":"switchNode","name":"switch network-level-oper-status","xml":"<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1082.547631581625,"y":1672.294677734375,"z":"8e01e90d.03c0b8","wires":[["60db2784.a8367","cf88857c.ec7638","ee049e88.66a8e8"]]},{"id":"60db2784.a8367","type":"outcome","name":"outcome PendingCreate","xml":"<outcome value='PendingCreate'>\n","comments":"","outputs":1,"x":1442.5476010640468,"y":1672.2947082519531,"z":"8e01e90d.03c0b8","wires":[["138e04fc.67d6a3"]]},{"id":"cf88857c.ec7638","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1399.5475400288906,"y":1756.2947235107422,"z":"8e01e90d.03c0b8","wires":[["265fb0.353f685"]]},{"id":"265fb0.353f685","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 is not in appropriate state for unassign. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />","comments":"","x":1590.8809598286953,"y":1754.9613523483276,"z":"8e01e90d.03c0b8","wires":[]},{"id":"ee049e88.66a8e8","type":"outcome","name":"outcome PendingDelete","xml":"<outcome value='PendingDelete'>\n","comments":"","outputs":1,"x":1445.7778256734218,"y":1710.1418762207031,"z":"8e01e90d.03c0b8","wires":[["138e04fc.67d6a3"]]},{"id":"43a8465a.615b","type":"other","name":"create","xml":"<outcome value='create'>\n","comments":"","outputs":1,"x":750.9073715209961,"y":425.6048412322998,"z":"8e01e90d.03c0b8","wires":[["f465062d.77326"]]},{"id":"f465062d.77326","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":932.1455307006836,"y":426.6049633026123,"z":"8e01e90d.03c0b8","wires":[["8386ff96.bd5e8"]]},{"id":"8386ff96.bd5e8","type":"call","name":"call GENERIC-RESOURCE-API:brg-topology-operation-create","xml":"<call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-create' mode='sync' >\n","comments":"","outputs":1,"x":1298.0502395629883,"y":426.1286849975586,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"acd124f4.75c688","type":"other","name":"delete","xml":"<outcome value='delete'>\n","comments":"","outputs":1,"x":749.2407245635986,"y":587.2715005874634,"z":"8e01e90d.03c0b8","wires":[["5fda9f53.2a83b8"]]},{"id":"5fda9f53.2a83b8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":930.4788837432861,"y":588.2716226577759,"z":"8e01e90d.03c0b8","wires":[["a08d1432.8f8368"]]},{"id":"d6368656.a9dc9","type":"call","name":"call GENERIC-RESOURCE-API:brg-topology-operation-deactivate","xml":"<call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-deactivate' mode='sync' >\n","comments":"","outputs":1,"x":1317.8147811889648,"y":526.481538772583,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"a08d1432.8f8368","type":"call","name":"call GENERIC-RESOURCE-API:brg-topology-operation-delete","xml":"<call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-delete' mode='sync' >\n","comments":"","outputs":1,"x":1307.4816303253174,"y":588.1481676101685,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"df0ce2cc.be0a4","type":"call","name":"call GENERIC-RESOURCE-API:brg-topology-operation-unassign","xml":"<call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-unassign' mode='sync' >\n","comments":"","outputs":1,"x":1313.1481342315674,"y":645.4814939498901,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"3e6fbc16.fbfb2c","type":"call","name":"call GENERIC-RESOURCE-API:brg-topology-operation-activate","xml":"<call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-activate' mode='sync' >\n","comments":"","outputs":1,"x":1307.4814682006836,"y":467.48146057128906,"z":"8e01e90d.03c0b8","wires":[[]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_connection-attachment-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_connection-attachment-topology-operation.json
new file mode 100644
index 0000000..5975f5e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_connection-attachment-topology-operation.json
@@ -0,0 +1,636 @@
+[
+  {
+    "id": "1910b882.988187",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 112,
+    "y": 39,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "6daa18ee.bd9b48"
+      ]
+    ]
+  },
+  {
+    "id": "6daa18ee.bd9b48",
+    "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": 250.00001525878906,
+    "y": 99.99999809265137,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "d306af00.202b5"
+      ]
+    ]
+  },
+  {
+    "id": "d306af00.202b5",
+    "type": "method",
+    "name": "connection-attachment-topology-operation",
+    "xml": "<method rpc='connection-attachment-topology-operation' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 285.0000305175781,
+    "y": 148.00002670288086,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "439aa3bc.b5c89c"
+      ]
+    ]
+  },
+  {
+    "id": "439aa3bc.b5c89c",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 210,
+    "y": 225.99999237060547,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "b2ae5e0b.e62c8",
+        "9d2c0f9b.d86bc",
+        "66d180fd.aa86b",
+        "ebb56880.bc5f78"
+      ]
+    ]
+  },
+  {
+    "id": "b2ae5e0b.e62c8",
+    "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": 424.36917877197266,
+    "y": 838.8428673744202,
+    "z": "b7e352e3.19bee",
+    "wires": []
+  },
+  {
+    "id": "9d2c0f9b.d86bc",
+    "type": "switchNode",
+    "name": "switch svc-action",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 430.9999237060547,
+    "y": 385.41371059417725,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "e1ae6e39.aa27a",
+        "9414f9d2.dce2f8",
+        "6fb0447c.d97d9c",
+        "128f118b.699cee",
+        "e0bc6e7e.914ba"
+      ]
+    ]
+  },
+  {
+    "id": "66d180fd.aa86b",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:validate-connection-attachment-input",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-connection-attachment-input' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 622.5714416503906,
+    "y": 205.98515129089355,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "e1ae6e39.aa27a",
+    "type": "other",
+    "name": "activate",
+    "xml": "<outcome value='activate'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 646.2856674194336,
+    "y": 394.55659008026123,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "4c362fcf.8e944"
+      ]
+    ]
+  },
+  {
+    "id": "9414f9d2.dce2f8",
+    "type": "other",
+    "name": "delete",
+    "xml": "<outcome value='delete'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 656.2857284545898,
+    "y": 675.5567531585693,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "c5b8be14.e07f9"
+      ]
+    ]
+  },
+  {
+    "id": "6fb0447c.d97d9c",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 645.6190376281738,
+    "y": 760.8901767730713,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "1be7b37b.418c6d"
+      ]
+    ]
+  },
+  {
+    "id": "1be7b37b.418c6d",
+    "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-action is invalid\" />\n",
+    "comments": "",
+    "x": 827.6190338134766,
+    "y": 759.8901863098145,
+    "z": "b7e352e3.19bee",
+    "wires": []
+  },
+  {
+    "id": "ebb56880.bc5f78",
+    "type": "set",
+    "name": "Set final indicator to Y",
+    "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+    "comments": "",
+    "x": 443.3968734741211,
+    "y": 798.0012059211731,
+    "z": "b7e352e3.19bee",
+    "wires": []
+  },
+  {
+    "id": "128f118b.699cee",
+    "type": "other",
+    "name": "create",
+    "xml": "<outcome value='create'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 645.5263633728027,
+    "y": 259.16132259368896,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "41c94f6b.204e9"
+      ]
+    ]
+  },
+  {
+    "id": "e0bc6e7e.914ba",
+    "type": "other",
+    "name": "deactivate",
+    "xml": "<outcome value='deactivate'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 650.8597145080566,
+    "y": 535.8281259536743,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "da1fc201.3680b"
+      ]
+    ]
+  },
+  {
+    "id": "66c39149.70506",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:sotn-attachment-topology-operation-create",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-create' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1540.0863037109375,
+    "y": 210.54078483581543,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "41c94f6b.204e9",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 836.5000534057617,
+    "y": 258.0000066757202,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "ce5a6c0e.e9e7",
+        "ae9fa049.744a2",
+        "5e6d0e37.67471"
+      ]
+    ]
+  },
+  {
+    "id": "ce5a6c0e.e9e7",
+    "type": "outcome",
+    "name": "CreateSOTNAttachmentInstance",
+    "xml": "<outcome value='CreateSOTNAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1091.833267211914,
+    "y": 209.99981307983398,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "66c39149.70506"
+      ]
+    ]
+  },
+  {
+    "id": "ae9fa049.744a2",
+    "type": "outcome",
+    "name": "other",
+    "xml": "<outcome value='other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1021.8333740234375,
+    "y": 301.66654205322266,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "93d62769.1835a8"
+      ]
+    ]
+  },
+  {
+    "id": "93d62769.1835a8",
+    "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=\"`'Provided request-action=' + $connection-attachment-topology-operation-input.request-information.request-action + ' is not supported.'`\" />\n",
+    "comments": "",
+    "x": 1187.5000381469727,
+    "y": 302.00000762939453,
+    "z": "b7e352e3.19bee",
+    "wires": []
+  },
+  {
+    "id": "a98c29b2.451c58",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:sotn-attachment-topology-operation-activate",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-activate' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1549.5000457763672,
+    "y": 345.00000953674316,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "761c903c.218d4",
+    "type": "outcome",
+    "name": "ActivateSOTNAttachmentInstance",
+    "xml": "<outcome value='ActivateSOTNAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1099.247085571289,
+    "y": 347.4590435028076,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "a98c29b2.451c58"
+      ]
+    ]
+  },
+  {
+    "id": "3bbb5d04.5bf752",
+    "type": "outcome",
+    "name": "other",
+    "xml": "<outcome value='other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1029.2471923828125,
+    "y": 439.1257724761963,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "ca8f3243.2c298"
+      ]
+    ]
+  },
+  {
+    "id": "a90cbc0f.e63d",
+    "type": "outcome",
+    "name": "DeactivateSOTNAttachmentInstance",
+    "xml": "<outcome value='DeactivateSOTNAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1118.8332977294922,
+    "y": 485.9998302459717,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "a6371009.ee111"
+      ]
+    ]
+  },
+  {
+    "id": "4fe9f748.8c5d78",
+    "type": "outcome",
+    "name": "other",
+    "xml": "<outcome value='other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1033.8333206176758,
+    "y": 577.6665353775024,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "ccf57f8f.ea1c9"
+      ]
+    ]
+  },
+  {
+    "id": "a6371009.ee111",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:sotn-attachment-topology-operation-deactivate",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-deactivate' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1577.5001220703125,
+    "y": 486.00001335144043,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "feaf8aad.a6d7b8",
+    "type": "outcome",
+    "name": "DeleteSOTNAttachmentInstance",
+    "xml": "<outcome value='DeleteSOTNAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1107.8332138061523,
+    "y": 626.9998064041138,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "702bb124.73afe"
+      ]
+    ]
+  },
+  {
+    "id": "fcb130cd.5ae4",
+    "type": "outcome",
+    "name": "other",
+    "xml": "<outcome value='other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1037.8333206176758,
+    "y": 718.6665353775024,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "4b648692.1bee28"
+      ]
+    ]
+  },
+  {
+    "id": "702bb124.73afe",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:sotn-attachment-topology-operation-delete",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-delete' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1563.5000915527344,
+    "y": 628.0000171661377,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "4c362fcf.8e944",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 834.0000610351562,
+    "y": 399.00001335144043,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "761c903c.218d4",
+        "3bbb5d04.5bf752",
+        "2147e065.6d692"
+      ]
+    ]
+  },
+  {
+    "id": "da1fc201.3680b",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 848,
+    "y": 540,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "a90cbc0f.e63d",
+        "4fe9f748.8c5d78",
+        "9e313cc8.d833b"
+      ]
+    ]
+  },
+  {
+    "id": "c5b8be14.e07f9",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 851,
+    "y": 675,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "feaf8aad.a6d7b8",
+        "fcb130cd.5ae4",
+        "5e1720ff.4caf2"
+      ]
+    ]
+  },
+  {
+    "id": "ca8f3243.2c298",
+    "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=\"`'Provided request-action=' + $connection-attachment-topology-operation-input.request-information.request-action + ' is not supported.'`\" />\n",
+    "comments": "",
+    "x": 1193,
+    "y": 439,
+    "z": "b7e352e3.19bee",
+    "wires": []
+  },
+  {
+    "id": "ccf57f8f.ea1c9",
+    "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=\"`'Provided request-action=' + $connection-attachment-topology-operation-input.request-information.request-action + ' is not supported.'`\" />\n",
+    "comments": "",
+    "x": 1201,
+    "y": 579,
+    "z": "b7e352e3.19bee",
+    "wires": []
+  },
+  {
+    "id": "4b648692.1bee28",
+    "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=\"`'Provided request-action=' + $connection-attachment-topology-operation-input.request-information.request-action + ' is not supported.'`\" />\n",
+    "comments": "",
+    "x": 1206,
+    "y": 718,
+    "z": "b7e352e3.19bee",
+    "wires": []
+  },
+  {
+    "id": "5e6d0e37.67471",
+    "type": "outcome",
+    "name": "CreateSDWANAttachmentInstance",
+    "xml": "<outcome value='CreateSDWANAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1116.02734375,
+    "y": 257.0312509536743,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "4d854610.f2a218"
+      ]
+    ]
+  },
+  {
+    "id": "4d854610.f2a218",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:sdwan-attachment-topology-operation-create",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-attachment-topology-operation-create' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1564.2803802490234,
+    "y": 257.57222270965576,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "2147e065.6d692",
+    "type": "outcome",
+    "name": "ActivateSDWANAttachmentInstance",
+    "xml": "<outcome value='ActivateSDWANAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1111.02734375,
+    "y": 394.0312509536743,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "5d4d92f5.76ca5c"
+      ]
+    ]
+  },
+  {
+    "id": "5d4d92f5.76ca5c",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:sdwan-attachment-topology-operation-activate",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-attachment-topology-operation-activate' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1561.2803039550781,
+    "y": 391.57221698760986,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "9e313cc8.d833b",
+    "type": "outcome",
+    "name": "DeactivateSDWANAttachmentInstance",
+    "xml": "<outcome value='DeactivateSDWANAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1128.02734375,
+    "y": 535.0312509536743,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "79636f75.2b02a"
+      ]
+    ]
+  },
+  {
+    "id": "79636f75.2b02a",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:sdwan-attachment-topology-operation-deactivate",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-attachment-topology-operation-deactivate' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1586.6941680908203,
+    "y": 535.0314340591431,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "5e1720ff.4caf2",
+    "type": "outcome",
+    "name": "DeleteSDWANAttachmentInstance",
+    "xml": "<outcome value='DeleteSDWANAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1116.02734375,
+    "y": 673.0312509536743,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      [
+        "fc63a050.4fcca"
+      ]
+    ]
+  },
+  {
+    "id": "fc63a050.4fcca",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:sdwan-attachment-topology-operation-delete",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-attachment-topology-operation-delete' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1571.694221496582,
+    "y": 674.0314617156982,
+    "z": "b7e352e3.19bee",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-activate.json
new file mode 100755
index 0000000..157bc26
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-activate.json
@@ -0,0 +1 @@
+[{"id":"2343aa38.ae315e","type":"dgstart","name":"DGSTART","outputs":1,"x":186.75,"y":117.75,"z":"813dcd9a.d3bce","wires":[["913493cf.16963"]]},{"id":"913493cf.16963","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":332.9880828857422,"y":192.70239353179932,"z":"813dcd9a.d3bce","wires":[["514806e9.504f"]]},{"id":"514806e9.504f","type":"method","name":"contrail-route-topology-operation-activate","xml":"<method rpc='contrail-route-topology-operation-activate' mode='sync'>\n","comments":"","outputs":1,"x":412.9048500061035,"y":261.9404420852661,"z":"813dcd9a.d3bce","wires":[["fa2967be.15261"]]},{"id":"fa2967be.15261","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":321.2261848449707,"y":405.273784160614,"z":"813dcd9a.d3bce","wires":[["824c9a63.64fca","1dc42b23.680e85","f337c1ee.3a3d8","54e90212.74149c","4015e9a8.6cc8c8","efd1fdfe.31dcd","7fbcf301.da9274","b9d822a8.efbda8","d1f0b04b.3903a8","e1945769.4b158","c88e7d42.8dec2","654c455d.66bcbc","b00f0fb6.47e598","d76d4a4a.711878","4863a49a.47232c","4f9959ff.99f5d","212281cc.a674ae","d2d48767.60437","950cc6c.99f39b8","88a7580.32ec5a8","bf22b626.ac2cc","7e19f3fd.32b57c"]]},{"id":"1dc42b23.680e85","type":"set","name":"set tmp.ar.self-link","xml":"<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/contrail-route-topology/'` \" />\n\n","comments":"","x":583.4880561828613,"y":379.0833215713501,"z":"813dcd9a.d3bce","wires":[]},{"id":"824c9a63.64fca","type":"set","name":"set tmp.ar.allotted-resource-id,etc","xml":"<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n\n","comments":"","x":630.7473182678223,"y":345.3425874710083,"z":"813dcd9a.d3bce","wires":[]},{"id":"f337c1ee.3a3d8","type":"execute","name":"execute Properties - pull properties file","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":652.6005554199219,"y":410.98155403137207,"z":"813dcd9a.d3bce","wires":[[]]},{"id":"4015e9a8.6cc8c8","type":"execute","name":"execute RestApiCallNode - Get AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":657.4116058349609,"y":553.2095279693604,"z":"813dcd9a.d3bce","wires":[["d9815ba8.9478c","935a116c.d73118"]]},{"id":"54e90212.74149c","type":"execute","name":"generate allotted-resource url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.cr-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n","comments":"","outputs":1,"x":617.8148460388184,"y":474.76722526550293,"z":"813dcd9a.d3bce","wires":[[]]},{"id":"d9815ba8.9478c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":902.7077102661133,"y":554.0173416137695,"z":"813dcd9a.d3bce","wires":[["8c816029.77b7d"]]},{"id":"8c816029.77b7d","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1071.7077140808105,"y":552.5172424316406,"z":"813dcd9a.d3bce","wires":[["c6cb923e.5c1e18"]]},{"id":"c6cb923e.5c1e18","type":"switchNode","name":"switch cr length","xml":"<switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>\n","comments":"","outputs":1,"x":1282.564956665039,"y":552.1363716125488,"z":"813dcd9a.d3bce","wires":[["a78a62e1.215ed","fd8c66f.8374618"]]},{"id":"a78a62e1.215ed","type":"other","name":"outcome 1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1471.8982620239258,"y":552.1363296508789,"z":"813dcd9a.d3bce","wires":[["67688036.f47e3"]]},{"id":"7ffb3b8e.4eb0f4","type":"set","name":"set ar from get","xml":"<set>\n<parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />\n","comments":"","x":1947.9462203979492,"y":545.3745260238647,"z":"813dcd9a.d3bce","wires":[]},{"id":"67688036.f47e3","type":"block","name":"block: atomic","xml":"<block atomic='true'>\n","atomic":"false","comments":"","outputs":1,"x":1656.4221515655518,"y":549.041163444519,"z":"813dcd9a.d3bce","wires":[["7ffb3b8e.4eb0f4","25851419.744d64","5cdd13c9.86cf44","9c689889.da3ea8"]]},{"id":"25851419.744d64","type":"set","name":"set oper-status","xml":"<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n","comments":"","x":1955.9461479187012,"y":609.469669342041,"z":"813dcd9a.d3bce","wires":[]},{"id":"96c69243.4da77","type":"comment","name":"GET contrail-route-allotted-resource from mdsal","info":"","comments":"","x":673.5648498535156,"y":519.0886821746826,"z":"813dcd9a.d3bce","wires":[]},{"id":"5cdd13c9.86cf44","type":"switchNode","name":"switch order-status","xml":"<switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1963.946002960205,"y":576.3744812011719,"z":"813dcd9a.d3bce","wires":[["59a0add2.ea7254","d1f313dd.919bc"]]},{"id":"59a0add2.ea7254","type":"outcome","name":"outcome Created","xml":"<outcome value='Created'>\n","comments":"","outputs":1,"x":2185.7839584350586,"y":560.4697847366333,"z":"813dcd9a.d3bce","wires":[["2367cfdb.f8a1"]]},{"id":"d1f313dd.919bc","type":"outcome","name":"outcome Other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2199.5936737060547,"y":590.8031902313232,"z":"813dcd9a.d3bce","wires":[["5f8feb9f.295cf4"]]},{"id":"5f8feb9f.295cf4","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\" \n    value=\"`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + ', expecting Created.'`\" />\n","comments":"","x":2440.212423324585,"y":593.7077798843384,"z":"813dcd9a.d3bce","wires":[]},{"id":"9c689889.da3ea8","type":"set","name":"save backup copy of mdsal-ar for rollback","xml":"<set>\n<parameter name='bk-cr-ar' value='$mdsal-ar.' />\n","comments":"","x":2035.8032722473145,"y":512.1840181350708,"z":"813dcd9a.d3bce","wires":[]},{"id":"4dccfc3a.7e6a4c","type":"comment","name":"Create urls for restapi","info":"","comments":"","x":588.7076530456543,"y":444.37435245513916,"z":"813dcd9a.d3bce","wires":[]},{"id":"f6d7f132.e76b98","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=\"Error: Contrail Route not found\" />\n    \n","comments":"","x":1658.416997909546,"y":695.0833854675293,"z":"813dcd9a.d3bce","wires":[]},{"id":"935a116c.d73118","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":894.559513092041,"y":589.0834264755249,"z":"813dcd9a.d3bce","wires":[["c76dc8b4.875448"]]},{"id":"c76dc8b4.875448","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1074.5594635009766,"y":589.7499771118164,"z":"813dcd9a.d3bce","wires":[["f6d7f132.e76b98"]]},{"id":"efd1fdfe.31dcd","type":"set","name":"set ar data","xml":"<set>\n<parameter name='ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='ar.allotted-resource-status.action' value=\"`$contrail-route-topology-operation-input.request-information.request-action` \" />\n<parameter name='ar.allotted-resource-status.rpc-name' value=\"contrail-route-topology-operation\" />\n<parameter name='ar.allotted-resource-status.rpc-action' value=\"`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$contrail-route-topology-operation-input.request-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$contrail-route-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$contrail-route-topology-operation-input.service-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$contrail-route-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.` \" />\n","comments":"","x":567.4166107177734,"y":590.2737884521484,"z":"813dcd9a.d3bce","wires":[]},{"id":"fd8c66f.8374618","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1460.2262153625488,"y":589.4166898727417,"z":"813dcd9a.d3bce","wires":[["f6d7f132.e76b98"]]},{"id":"2367cfdb.f8a1","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2424.083469390869,"y":559.4166975021362,"z":"813dcd9a.d3bce","wires":[[]]},{"id":"e6e6b312.9ff66","type":"not-found","name":"not found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":912.0356597900391,"y":848.4643956422806,"z":"813dcd9a.d3bce","wires":[["c9758edd.27c358"]]},{"id":"aab18dd2.ccd71","type":"get-resource","name":"get AnAI - l3-network by network-id","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.src-network\">\n","comments":"","outputs":1,"x":635.234001159668,"y":859.7109127044678,"z":"813dcd9a.d3bce","wires":[["4ad4f4bf.b880f4","e6e6b312.9ff66","1feeeaa4.ceb4fd"]]},{"id":"4ad4f4bf.b880f4","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":904.7577667236328,"y":882.9489995241165,"z":"813dcd9a.d3bce","wires":[["c9758edd.27c358"]]},{"id":"c9758edd.27c358","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`\" />","comments":"","x":1056.8687286376953,"y":879.1712285280228,"z":"813dcd9a.d3bce","wires":[]},{"id":"1feeeaa4.ceb4fd","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":910.0357208251953,"y":914.4643956422806,"z":"813dcd9a.d3bce","wires":[["e7887ed9.ffdb8"]]},{"id":"e7887ed9.ffdb8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1062.7022857666016,"y":912.7977238893509,"z":"813dcd9a.d3bce","wires":[[]]},{"id":"12c0c74b.daf7b1","type":"comment","name":"GET source network from AAI","info":"","comments":"","x":613.4642181396484,"y":828.4643898010254,"z":"813dcd9a.d3bce","wires":[]},{"id":"b90ed216.18a428","type":"not-found","name":"not found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":929.75,"y":1112.1787095069885,"z":"813dcd9a.d3bce","wires":[["b83d895b.4f291"]]},{"id":"7fbcf301.da9274","type":"get-resource","name":"get AnAI - l3-network by network-id","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.dest-network\">\n","comments":"","outputs":1,"x":658.3769226074219,"y":1119.710970401764,"z":"813dcd9a.d3bce","wires":[["b8838c73.a36ad8","b90ed216.18a428","389164df.893924"]]},{"id":"b8838c73.a36ad8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":922.4721069335938,"y":1146.6633133888245,"z":"813dcd9a.d3bce","wires":[["b83d895b.4f291"]]},{"id":"b83d895b.4f291","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`\" />","comments":"","x":1074.5830688476562,"y":1142.8855423927307,"z":"813dcd9a.d3bce","wires":[]},{"id":"389164df.893924","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":932.3215103149414,"y":1181.0357780456543,"z":"813dcd9a.d3bce","wires":[["4306a8fb.a6b5e8"]]},{"id":"4306a8fb.a6b5e8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1084.9880752563477,"y":1179.3691062927246,"z":"813dcd9a.d3bce","wires":[[]]},{"id":"7d0a4ab3.6c586c","type":"comment","name":"GET dest network from AAI","info":"","comments":"","x":631.1785430908203,"y":1087.8929624557495,"z":"813dcd9a.d3bce","wires":[]},{"id":"b9d822a8.efbda8","type":"set","name":"set policy fq-name","xml":"<set>\n<parameter name='tmp.fq-name' value=\"`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name` \" />\n","comments":"","x":584.1786270141602,"y":905.6071510314941,"z":"813dcd9a.d3bce","wires":[]},{"id":"d1f0b04b.3903a8","type":"set","name":"set cloud-region-id for input to contrail","xml":"<set>\n<parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />\n","comments":"","x":646.1733093261719,"y":939.6969985961914,"z":"813dcd9a.d3bce","wires":[]},{"id":"654c455d.66bcbc","type":"execute","name":"execute Contrail API apply network policy to source network","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='apply' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n<parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.contrail-fq-name`' />\n<parameter name='contrail-virtual-network-id' value='`$aai.src-network.contrail-network-fqdn`' />\n\n","comments":"","outputs":1,"x":722.3638305664062,"y":1012.6971964836121,"z":"813dcd9a.d3bce","wires":[["773f5c52.d9a844","65423029.2aa448"]]},{"id":"773f5c52.d9a844","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1078.0303268432617,"y":1013.1254234313965,"z":"813dcd9a.d3bce","wires":[["6efba2cc.644a4c"]]},{"id":"65423029.2aa448","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1076.1256484985352,"y":1046.1253631971776,"z":"813dcd9a.d3bce","wires":[["f8269b33.8f2818"]]},{"id":"f8269b33.8f2818","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=\"Failed to apply policy in Contrail to source network\" />\n","comments":"","x":1236.030418395996,"y":1045.4587297439575,"z":"813dcd9a.d3bce","wires":[]},{"id":"6efba2cc.644a4c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1230.2208099365234,"y":1013.792148437351,"z":"813dcd9a.d3bce","wires":[[]]},{"id":"e1945769.4b158","type":"set","name":"set ar-assignments","xml":"<set>\n<parameter name='ar-assignments.' value=\"`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`\" />\n\n\n\n","comments":"","x":594.75,"y":624.75,"z":"813dcd9a.d3bce","wires":[]},{"id":"c88e7d42.8dec2","type":"switchNode","name":"switch source-network.network-id","xml":"<switch test='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`'>\n\n","comments":"","outputs":1,"x":638.75,"y":784.75,"z":"813dcd9a.d3bce","wires":[["9f744453.f73d38","731c0d32.4efde4"]]},{"id":"9f744453.f73d38","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":994.7502174377441,"y":783.4163794517517,"z":"813dcd9a.d3bce","wires":[["8990ad.edf7ff5"]]},{"id":"731c0d32.4efde4","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":990.4170341491699,"y":746.4161796569824,"z":"813dcd9a.d3bce","wires":[["ee9e549.5240d28"]]},{"id":"bdbbd6c9.1a2c2","type":"switchNode","name":"switch service-data.networks.network_length","xml":"<switch test='`$service-data.networks.network_length`'>\n","comments":"","outputs":1,"x":1386.5756530761719,"y":783.4322066307068,"z":"813dcd9a.d3bce","wires":[["b140a749.4fc48","46a1cf55.e7ba18"]]},{"id":"b140a749.4fc48","type":"other","name":"outcome Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1675.5756530761719,"y":785.432267665863,"z":"813dcd9a.d3bce","wires":[["2aaebe6b.9c4f0a"]]},{"id":"46a1cf55.e7ba18","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1655.5756530761719,"y":820.432267665863,"z":"813dcd9a.d3bce","wires":[["2365445.39bcbbc"]]},{"id":"8990ad.edf7ff5","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1128.861473083496,"y":783.8607840538025,"z":"813dcd9a.d3bce","wires":[["bdbbd6c9.1a2c2"]]},{"id":"ee9e549.5240d28","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 activating contrail route.  Source network not found\" />\n","comments":"","x":1144.5504989624023,"y":747.0830821990967,"z":"813dcd9a.d3bce","wires":[]},{"id":"5a5383e9.72c19c","type":"comment","name":"Find tenant id/cloud region from source network","info":"","comments":"","x":676.1503219604492,"y":751.4163160324097,"z":"813dcd9a.d3bce","wires":[]},{"id":"70cd42d4.2890fc","type":"for","name":"for nidx..service-data.networks.network[]","xml":"<for index='nidx' start='0' end='`$service-data.networks.network_length`' >\n","comments":"","outputs":1,"x":2118.7500610351562,"y":820.7500228881836,"z":"813dcd9a.d3bce","wires":[["f4807d03.933b48"]]},{"id":"2365445.39bcbbc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1844.7341003417969,"y":820.8760228157043,"z":"813dcd9a.d3bce","wires":[["70cd42d4.2890fc"]]},{"id":"2aaebe6b.9c4f0a","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 activating contrail route.  Source network not found\" />\n","comments":"","x":1857.2388000488281,"y":785.3055934906006,"z":"813dcd9a.d3bce","wires":[]},{"id":"f4807d03.933b48","type":"switchNode","name":"switch networkid found","xml":"<switch test=\"`$service-data.networks.network[$nidx].network-id == $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`\">\n\n","comments":"","outputs":1,"x":2411.3048706054688,"y":817.6391496658325,"z":"813dcd9a.d3bce","wires":[["436eb069.fa0778","4fbc2bc4.af96fc"]]},{"id":"13f4d129.adecdf","type":"set","name":"set cloud region id","xml":"<set>\n<parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />\n\n\n","comments":"","x":2993.9715118408203,"y":818.6392183303833,"z":"813dcd9a.d3bce","wires":[]},{"id":"a30719a6.edc868","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2761.0379848480225,"y":820.6391382217407,"z":"813dcd9a.d3bce","wires":[["13f4d129.adecdf"]]},{"id":"436eb069.fa0778","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2605.571361541748,"y":820.6390008926392,"z":"813dcd9a.d3bce","wires":[["a30719a6.edc868"]]},{"id":"4fbc2bc4.af96fc","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2606.3709716796875,"y":858.6390037536621,"z":"813dcd9a.d3bce","wires":[["387271c4.dfcf4e"]]},{"id":"387271c4.dfcf4e","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 activating contrail route.  Source network not found\" />\n","comments":"","x":2784.3711280822754,"y":858.6390695571899,"z":"813dcd9a.d3bce","wires":[]},{"id":"14b22c6c.fcabfc","type":"comment","name":"Apply the policy to source network","info":"","comments":"","x":640.7500152587891,"y":980.7500286102295,"z":"813dcd9a.d3bce","wires":[]},{"id":"b00f0fb6.47e598","type":"execute","name":"execute Contrail API apply network policy to destination network","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='apply' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n<parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.contrail-fq-name`' />\n<parameter name='contrail-virtual-network-id' value='`$aai.dest-network.contrail-network-fqdn`' />\n\n","comments":"","outputs":1,"x":746.7500610351562,"y":1264.750036239624,"z":"813dcd9a.d3bce","wires":[["c55c7ba4.af1c78","6f74bbcd.1e8a04"]]},{"id":"c55c7ba4.af1c78","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1082.4164962768555,"y":1265.1782269477844,"z":"813dcd9a.d3bce","wires":[["31c3a18d.c35b96"]]},{"id":"6f74bbcd.1e8a04","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1080.511817932129,"y":1298.1781667135656,"z":"813dcd9a.d3bce","wires":[["b857d4cd.98af18"]]},{"id":"b857d4cd.98af18","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=\"Failed to apply policy in Contrail to source network\" />\n","comments":"","x":1240.4165878295898,"y":1297.5115332603455,"z":"813dcd9a.d3bce","wires":[]},{"id":"31c3a18d.c35b96","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1234.6069793701172,"y":1265.844951953739,"z":"813dcd9a.d3bce","wires":[[]]},{"id":"f17083c0.fd25f8","type":"comment","name":"Apply the policy to dest network","info":"","comments":"","x":645.1361846923828,"y":1232.8028321266174,"z":"813dcd9a.d3bce","wires":[]},{"id":"d76d4a4a.711878","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":555.7501792907715,"y":2140.7266874313354,"z":"813dcd9a.d3bce","wires":[]},{"id":"4863a49a.47232c","type":"set","name":"set output to api handler","xml":"<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='contrail-route-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $contrail-route-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n","comments":"","x":584.5040855407715,"y":2103.1824808120728,"z":"813dcd9a.d3bce","wires":[]},{"id":"4f9959ff.99f5d","type":"set","name":"set allotted-resource-oper-status","xml":"<set>\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n","comments":"","x":616.1709213256836,"y":1962.2300510406494,"z":"813dcd9a.d3bce","wires":[]},{"id":"212281cc.a674ae","type":"execute","name":"execute RestApiCallNode - PUT AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":644.2793960571289,"y":2036.279543876648,"z":"813dcd9a.d3bce","wires":[["d4e42d2d.79d87","8d96d215.4633c","51423045.023d"]]},{"id":"d4e42d2d.79d87","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":914.5874137878418,"y":2089.2777446731925,"z":"813dcd9a.d3bce","wires":[["59c58cd2.31ad04"]]},{"id":"8d96d215.4633c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":905.5874633789062,"y":2057.777770422399,"z":"813dcd9a.d3bce","wires":[["59c58cd2.31ad04"]]},{"id":"51423045.023d","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":909.3375015258789,"y":2028.1348752975464,"z":"813dcd9a.d3bce","wires":[["b28af593.fdcef8"]]},{"id":"59c58cd2.31ad04","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 updating md-sal for contrail-route-allotted-resource\" />\n","comments":"","x":1075.337501525879,"y":2058.527794264257,"z":"813dcd9a.d3bce","wires":[]},{"id":"b28af593.fdcef8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1050.9934692382812,"y":2024.3270444869995,"z":"813dcd9a.d3bce","wires":[[]]},{"id":"d2d48767.60437","type":"execute","name":"execute getTime","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n","comments":"","outputs":1,"x":566.9935150146484,"y":1928.6601829528809,"z":"813dcd9a.d3bce","wires":[[]]},{"id":"f8def33f.3a491","type":"comment","name":"Need to rollback aai here","info":"","comments":"","x":1301.416763305664,"y":2057.84538936615,"z":"813dcd9a.d3bce","wires":[]},{"id":"60c83994.dfd038","type":"comment","name":"Create  network policy in AAI","info":"","comments":"","x":600.7500381469727,"y":1877.8452768325806,"z":"813dcd9a.d3bce","wires":[]},{"id":"950cc6c.99f39b8","type":"update","name":"update AAI allotted-resource","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-data.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"operational-status\" value=\"in-service-path\" />\n","comments":"","outputs":1,"x":605.3691101074219,"y":1839.7978992462158,"z":"813dcd9a.d3bce","wires":[["efbf0aed.e07788","115125da.13114a"]]},{"id":"efbf0aed.e07788","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":873.1310272216797,"y":1817.0359525680542,"z":"813dcd9a.d3bce","wires":[["cc34374d.c82f98"]]},{"id":"115125da.13114a","type":"failure","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":878.4404563903809,"y":1852.607370376587,"z":"813dcd9a.d3bce","wires":[["cc34374d.c82f98"]]},{"id":"cc34374d.c82f98","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=\"AAI failed\" />\n","comments":"","x":1088.2262420654297,"y":1818.6549968719482,"z":"813dcd9a.d3bce","wires":[]},{"id":"eb7af3d8.e2e8d8","type":"comment","name":"Update AAI AR","info":"","comments":"","x":558.7119522094727,"y":1799.226222038269,"z":"813dcd9a.d3bce","wires":[]},{"id":"c5899b4c.6cd78","type":"comment","name":"Update network policy in AAI - relationship to networks","info":"","comments":"","x":708.7501220703125,"y":1504.7500410079956,"z":"813dcd9a.d3bce","wires":[]},{"id":"88a7580.32ec5a8","type":"save","name":"save AnAI - network-policy relationship to source and destination network","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"network-policy:relationship-list\" \n\tkey=\"network-policy.network-policy-id = $ar-assignments.contrail-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`tmp.AnAI-src.related-link`\" />\n<parameter name=\"relationship-list.relationship[1].related-to\" value=\"l3-network\" />\n<parameter name=\"relationship-list.relationship[1].related-link\" value=\"`tmp.AnAI-dest.related-link`\" />\n\n\n","comments":"","outputs":1,"x":770.1270179748535,"y":1541.8175249099731,"z":"813dcd9a.d3bce","wires":[["e5a67b45.20b1c","b871af24.755df8"]]},{"id":"ae7fe4ff.4e4498","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=\"Failed to save network policy in AAI\" />\n","comments":"","x":1414.4725036621094,"y":1538.0994877815247,"z":"813dcd9a.d3bce","wires":[]},{"id":"e5a67b45.20b1c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1185.9011116027832,"y":1541.115225315094,"z":"813dcd9a.d3bce","wires":[["ae7fe4ff.4e4498"]]},{"id":"b871af24.755df8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1189.7106094360352,"y":1569.5916419029236,"z":"813dcd9a.d3bce","wires":[["ae7fe4ff.4e4498"]]},{"id":"bf22b626.ac2cc","type":"save","name":"get related-link data for source network","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\nresource=\"related-link\"\nkey=\"l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id\"\nlocal-only=\"true\"\npfx=\"tmp.AnAI-src\">\n\n\n\n","comments":"","outputs":1,"x":674.7500152587891,"y":1338.7500371932983,"z":"813dcd9a.d3bce","wires":[["ab369e17.3ba35","332634da.627144"]]},{"id":"77aaf3ff.eeeb7c","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=\"Failed to get related link for l3-network in AAI\" />\n","comments":"","x":1318.75,"y":1344.75,"z":"813dcd9a.d3bce","wires":[]},{"id":"ab369e17.3ba35","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1090.1786079406738,"y":1343.7657375335693,"z":"813dcd9a.d3bce","wires":[["77aaf3ff.eeeb7c"]]},{"id":"332634da.627144","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1093.9881057739258,"y":1373.242154121399,"z":"813dcd9a.d3bce","wires":[["77aaf3ff.eeeb7c"]]},{"id":"7e19f3fd.32b57c","type":"save","name":"get related-link data for dest network","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\nresource=\"related-link\"\nkey=\"l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id\"\nlocal-only=\"true\"\npfx=\"tmp.AnAI-dest\">\n\n\n\n","comments":"","outputs":1,"x":670.75,"y":1412.75,"z":"813dcd9a.d3bce","wires":[["6d15b228.6d5114","4640b9d8.04f298"]]},{"id":"ea538b84.fbe59","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=\"Failed to get related link for l3-network in AAI\" />\n","comments":"","x":1112.7500381469727,"y":1422.7500410079956,"z":"813dcd9a.d3bce","wires":[]},{"id":"6d15b228.6d5114","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":930.1786422729492,"y":1409.7657642364502,"z":"813dcd9a.d3bce","wires":[["ea538b84.fbe59"]]},{"id":"4640b9d8.04f298","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":935.9881210327148,"y":1439.2422285079956,"z":"813dcd9a.d3bce","wires":[["ea538b84.fbe59"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-assign.json
new file mode 100755
index 0000000..52bb36f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-assign.json
@@ -0,0 +1,3396 @@
+[
+    {
+        "id": "a15c86ae.e9ffa8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 117.00390625,
+        "y": 66.99999904632568,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "9f7352fa.e9442"
+            ]
+        ]
+    },
+    {
+        "id": "9f7352fa.e9442",
+        "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": 223.24198150634766,
+        "y": 145.70239448547363,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "bec67786.9a0fd8"
+            ]
+        ]
+    },
+    {
+        "id": "bec67786.9a0fd8",
+        "type": "method",
+        "name": "contrail-route-topology-operation-assign",
+        "xml": "<method rpc='contrail-route-topology-operation-assign' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 224.82543182373047,
+        "y": 241.1904354095459,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "106ac22b.f19c5e"
+            ]
+        ]
+    },
+    {
+        "id": "106ac22b.f19c5e",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 251.4800910949707,
+        "y": 354.5237832069397,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "1b476e9a.fe2761",
+                "89e36959.f57ca8",
+                "8e0d8361.64708",
+                "c1ac5f3e.e6966",
+                "47d7c2d7.6d83ec",
+                "e05ef5d3.6901c8",
+                "2fa400f8.8842c",
+                "63a20e20.4ef0d",
+                "27c0b1cb.cbaf7e",
+                "afb14d8.fa7e8b",
+                "164735e2.5f4fea",
+                "b8ee290b.0a5948",
+                "f4cedf71.423ad",
+                "59b1d791.8e8d88",
+                "98d8146e.2c8368",
+                "ec3a453a.6b4d18",
+                "80199fb5.28a97",
+                "42e59bba.390174",
+                "7bbf3a4b.922ac4",
+                "ab194250.a66de",
+                "94029424.bac068",
+                "f152aa61.54aba8",
+                "d7a09bb1.7dfc58",
+                "846017e5.c13a98",
+                "329e94ed.128dbc",
+                "e081301c.9853a",
+                "e99fb45b.d57118",
+                "6d745a26.0c7354",
+                "4888c4bf.132c3c",
+                "6e65e9d5.9f0028",
+                "e2239d78.dc34",
+                "5ddff342.e4df3c",
+                "5f1ba758.495008",
+                "3b7ee06a.f8b51",
+                "5fefa6f9.3a77d8",
+                "a348f9e1.479f68",
+                "e6b7c56f.4a4108",
+                "5182c386.6fc00c",
+                "b4d8f0cc.1375d",
+                "d3ab9d9.302806",
+                "50a5d5ae.00038c"
+            ]
+        ]
+    },
+    {
+        "id": "89e36959.f57ca8",
+        "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": 486.0041389465332,
+        "y": 3206.2144527435303,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "1b476e9a.fe2761",
+        "type": "set",
+        "name": "set output to api handler",
+        "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='contrail-route-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $contrail-route-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+        "comments": "",
+        "x": 514.7580642700195,
+        "y": 3178.0512561798096,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "80199fb5.28a97",
+        "type": "set",
+        "name": "set allotted-resource-oper-status",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingCreate' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+        "comments": "",
+        "x": 551.7581520080566,
+        "y": 2355.05126953125,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "c1ac5f3e.e6966",
+        "type": "set",
+        "name": "set tmp.ar.self-link",
+        "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/contrail-route-topology/'` \" />\n\n",
+        "comments": "",
+        "x": 523.7420768737793,
+        "y": 304.3333349227905,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "8e0d8361.64708",
+        "type": "set",
+        "name": "set tmp.ar.allotted-resource-id,etc",
+        "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.ar.contrail-applied-service-instance-id' value='`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.service-instance-id`' />\n<parameter name='tmp.ar.allotted-resource-type' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type`' />\n\n",
+        "comments": "",
+        "x": 571.0013389587402,
+        "y": 270.59260082244873,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "47d7c2d7.6d83ec",
+        "type": "execute",
+        "name": "execute Properties - pull properties file",
+        "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.9974899291992,
+        "y": 336.23158836364746,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2fa400f8.8842c",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 586.5228080749512,
+        "y": 716.4595785140991,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "4f71533e.51503c",
+                "6ff8b1b0.c2e46"
+            ]
+        ]
+    },
+    {
+        "id": "e05ef5d3.6901c8",
+        "type": "execute",
+        "name": "generate allotted-resource url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.cr-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 558.0688667297363,
+        "y": 400.01723861694336,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4f71533e.51503c",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 833.8188972473145,
+        "y": 711.2673678398132,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "15a9be7b.067652"
+            ]
+        ]
+    },
+    {
+        "id": "98d8146e.2c8368",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 579.962028503418,
+        "y": 2973.291174888611,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "b6b6c325.b9854",
+                "52bb813.f59bc8"
+            ]
+        ]
+    },
+    {
+        "id": "b6b6c325.b9854",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 846.9367637634277,
+        "y": 3002.956132888794,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "4b9fa7f1.b30308"
+            ]
+        ]
+    },
+    {
+        "id": "52bb813.f59bc8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 841.2701530456543,
+        "y": 2971.4559688568115,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "4b9fa7f1.b30308"
+            ]
+        ]
+    },
+    {
+        "id": "676e8a31.aad434",
+        "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 updating md-sal for contrail-route-allotted-resource.  Parent provided resource rolled back\" />\n",
+        "comments": "",
+        "x": 1183.3534851074219,
+        "y": 3017.539581298828,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "15a9be7b.067652",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1002.8189010620117,
+        "y": 709.7672686576843,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "e0174b9e.a92928"
+            ]
+        ]
+    },
+    {
+        "id": "e0174b9e.a92928",
+        "type": "switchNode",
+        "name": "switch cr length",
+        "xml": "<switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1213.6761436462402,
+        "y": 709.3863978385925,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "80cc2f81.87cf5"
+            ]
+        ]
+    },
+    {
+        "id": "80cc2f81.87cf5",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1403.009449005127,
+        "y": 709.3863558769226,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "940b96fe.4bc648"
+            ]
+        ]
+    },
+    {
+        "id": "200f56f8.1a568a",
+        "type": "comment",
+        "name": "Save consumed-allotted-resources to mdsal",
+        "info": "",
+        "comments": "",
+        "x": 586.2475738525391,
+        "y": 2164.386384487152,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "71cd75e1.a2e0ac",
+        "type": "comment",
+        "name": "GET contrail-route-allotted-resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 605.8187942504883,
+        "y": 683.7672171592712,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "63a20e20.4ef0d",
+        "type": "set",
+        "name": "set ar-identifiers",
+        "xml": "<set>\n<parameter name='ar-identifiers.consuming-service-instance-id' value=\"`$contrail-route-topology-operation-input.service-information.service-instance-id` \" />\n<parameter name='ar-identifiers.parent-service-instance-id' value=\"`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n<parameter name='ar-identifiers.allotted-resource-type' value=\"`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type` \" />\n<parameter name='ar-identifiers.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n\n",
+        "comments": "",
+        "x": 512.0570220947266,
+        "y": 825.2912397384644,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "7f798563.86347c",
+        "type": "comment",
+        "name": "Set allotted-resource-identifiers",
+        "info": "",
+        "comments": "",
+        "x": 552.6760330200195,
+        "y": 795.6720323562622,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "42e59bba.390174",
+        "type": "set",
+        "name": "set identifiers in overal structure",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.' \nvalue=\"`$ar-identifiers.`\" />\n\n\n",
+        "comments": "",
+        "x": 572.0568923950195,
+        "y": 1341.9103197157383,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "27c0b1cb.cbaf7e",
+        "type": "set",
+        "name": "set ecomp model information from input",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-data.contrail-route-topology.onap-model-information.' \nvalue=\"`$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.`\" />\n\n\n",
+        "comments": "",
+        "x": 573.7235946655273,
+        "y": 909.243691444397,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "afb14d8.fa7e8b",
+        "type": "switchNode",
+        "name": "switch model-invariant-uuid is null",
+        "xml": "<switch test='$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 559.9140548706055,
+        "y": 944.9578285217285,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "50ecfa4d.756b34"
+            ]
+        ]
+    },
+    {
+        "id": "50ecfa4d.756b34",
+        "type": "outcome",
+        "name": "outcome null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 787.0569343566895,
+        "y": 946.3863458633423,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "57fddba0.eaaf14"
+            ]
+        ]
+    },
+    {
+        "id": "57fddba0.eaaf14",
+        "type": "set",
+        "name": "set model-invariant-uuid",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-data.contrail-route-topology.onap-model-information.model-invariant-uuid' \nvalue=\"`$ar-model.invariant-uuid`\" />\n\n\n",
+        "comments": "",
+        "x": 988.4855079650879,
+        "y": 945.8148984909058,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "164735e2.5f4fea",
+        "type": "switchNode",
+        "name": "switch model-uuid is null",
+        "xml": "<switch test='$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 531.3426513671875,
+        "y": 979.2435293197632,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "6a69d11e.04137"
+            ]
+        ]
+    },
+    {
+        "id": "6a69d11e.04137",
+        "type": "outcome",
+        "name": "outcome null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 732.7712173461914,
+        "y": 979.8149509429932,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "a902eea0.7b187"
+            ]
+        ]
+    },
+    {
+        "id": "a902eea0.7b187",
+        "type": "set",
+        "name": "set model-uuid",
+        "xml": "<set>\n<parameter name='sar.allotted-resource-data.contrail-route-topology.onap-model-information.model-uuid' \nvalue=\"`$ar-model.uuid`\" />\n\n\n",
+        "comments": "",
+        "x": 925.6283760070801,
+        "y": 979.8148727416992,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "b8ee290b.0a5948",
+        "type": "switchNode",
+        "name": "switch model-version is null",
+        "xml": "<switch test='$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-version'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 539.9140548706055,
+        "y": 1012.1006565093994,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "d20dbd99.c611a"
+            ]
+        ]
+    },
+    {
+        "id": "d20dbd99.c611a",
+        "type": "outcome",
+        "name": "outcome null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 789.9140357971191,
+        "y": 1012.1006412506104,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "c9fcca5f.606248"
+            ]
+        ]
+    },
+    {
+        "id": "c9fcca5f.606248",
+        "type": "set",
+        "name": "set model-version",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-data.contrail-route-topology.onap-model-information.model-version' \nvalue=\"`$ar-model.version`\" />\n\n\n",
+        "comments": "",
+        "x": 982.771183013916,
+        "y": 1012.1006307601929,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "ab194250.a66de",
+        "type": "switchNode",
+        "name": "switch ar-model.ecomp-generated-naming",
+        "xml": "<switch test='`$ar-model.ecomp-generated-naming`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 600.7236022949219,
+        "y": 1258.767216682434,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "8fb0ef65.8d523",
+                "2eb9cf24.96b3d"
+            ]
+        ]
+    },
+    {
+        "id": "8fb0ef65.8d523",
+        "type": "other",
+        "name": "outcome Y",
+        "xml": "<outcome value='Y'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 877.7236404418945,
+        "y": 1254.8624348640442,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "6c96ac26.e9a684"
+            ]
+        ]
+    },
+    {
+        "id": "6c96ac26.e9a684",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1046.4736824035645,
+        "y": 1255.3624234199524,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "270e2a77.e35dc6"
+            ]
+        ]
+    },
+    {
+        "id": "2eb9cf24.96b3d",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 868.945930480957,
+        "y": 1287.8624348640442,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "9153ab18.136e08"
+            ]
+        ]
+    },
+    {
+        "id": "9153ab18.136e08",
+        "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 in allotted-resource-model data.  Ecomp-generated-naming should be true\" />\n\n",
+        "comments": "",
+        "x": 1046.945930480957,
+        "y": 1286.8624348640442,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "270e2a77.e35dc6",
+        "type": "switchNode",
+        "name": "switch ar-model.ecomp-generated-naming",
+        "xml": "<switch test='`$ar-model.naming-policy`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1347.7235870361328,
+        "y": 1255.4338970184326,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "d120c979.8da8c8",
+                "9b914bce.63aad8"
+            ]
+        ]
+    },
+    {
+        "id": "d120c979.8da8c8",
+        "type": "other",
+        "name": "outcome oam_network_policy",
+        "xml": "<outcome value='oam_network_policy'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1718.5814208984375,
+        "y": 1247.0119342803955,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "fcaca6b7.d32838"
+            ]
+        ]
+    },
+    {
+        "id": "9b914bce.63aad8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1643.342887878418,
+        "y": 1279.5291390419006,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "fcaca6b7.d32838"
+            ]
+        ]
+    },
+    {
+        "id": "b7235bb6.3a29f8",
+        "type": "set",
+        "name": "set ar_name",
+        "xml": "<set>\n<parameter name='tmp.ar-name' value='$TenantName_$CloudRegionID_$TenantNetworkRole_$LandingNetworkRole_policy_' />\n",
+        "comments": "",
+        "x": 2161.104751586914,
+        "y": 1235.100906342268,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "69b920ab.38aa1",
+        "type": "execute",
+        "name": "execute SliStringUtils - replace $TenantName",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ar-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-name\"/>\n    <parameter name=\"target\" value=\"$TenantName\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.tenant-name`\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2261.248062133789,
+        "y": 1273.6247825324535,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c7259873.fe9de8",
+        "type": "execute",
+        "name": "execute SliStringUtils - replace LandingNetworkRole",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ar-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-name\"/>\n    <parameter name=\"target\" value=\"$LandingNetworkRole\"/>\n    <parameter name=\"replacement\" value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-role`\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2269.581314086914,
+        "y": 1377.7676124572754,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "fcaca6b7.d32838",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic='true'>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1948.8666038513184,
+        "y": 1281.0053358078003,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "b7235bb6.3a29f8",
+                "69b920ab.38aa1",
+                "c7259873.fe9de8",
+                "554b99be.4d79e8",
+                "284f958b.7a5dfa",
+                "2b71aba8.1693c4",
+                "a2eac231.37f33",
+                "eef331cb.9aea7",
+                "bc1017e5.305348"
+            ]
+        ]
+    },
+    {
+        "id": "554b99be.4d79e8",
+        "type": "set",
+        "name": "set identifiers.allotted-resource-name",
+        "xml": "<set>\n<parameter name='ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />\n",
+        "comments": "",
+        "x": 2225.771224975586,
+        "y": 1524.386548012495,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "7bbf3a4b.922ac4",
+        "type": "set",
+        "name": "set assignments in overal structure",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.' \nvalue=\"`$ar-assignments.`\" />\n\n\n",
+        "comments": "",
+        "x": 560.1999206542969,
+        "y": 2131.62486076355,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "f152aa61.54aba8",
+        "type": "set",
+        "name": "set ar-assignments",
+        "xml": "<set>\n<parameter name='ar-assignments.source-network.' value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.` \" />\n<parameter name='ar-assignments.dest-network.' value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.` \" />\n<parameter name='ar-assignments.contrail-applied-service.' value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.` \" />\n\n\n",
+        "comments": "",
+        "x": 531.533073425293,
+        "y": 1378.3863615095615,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "287b8459.7da69c",
+        "type": "for",
+        "name": "for cidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]",
+        "xml": "<for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1465.8194580078125,
+        "y": 2239.2910742759705,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "51656950.e29468"
+            ]
+        ]
+    },
+    {
+        "id": "f4cedf71.423ad",
+        "type": "switchNode",
+        "name": "switch service-data.consumed-allotted-resources_length",
+        "xml": "<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 623.8189086914062,
+        "y": 2197.005136013031,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "64cf189.e7ea6e8",
+                "d0e0868c.bcee08"
+            ]
+        ]
+    },
+    {
+        "id": "64cf189.e7ea6e8",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 945.9617919921875,
+        "y": 2199.862557888031,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "12a02d0f.ee3803"
+            ]
+        ]
+    },
+    {
+        "id": "d0e0868c.bcee08",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 933.9617958068848,
+        "y": 2242.8625593185425,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "d57ec577.c56ff8"
+            ]
+        ]
+    },
+    {
+        "id": "51656950.e29468",
+        "type": "switchNode",
+        "name": "switch allotted-resource-id",
+        "xml": "<switch test=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1895.9146881103516,
+        "y": 2241.3508400917053,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "f22e0aec.651d38"
+            ]
+        ]
+    },
+    {
+        "id": "f22e0aec.651d38",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2100.724655151367,
+        "y": 2241.8152928352356,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "716c0762.bdde98"
+            ]
+        ]
+    },
+    {
+        "id": "d57ec577.c56ff8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1094.0888862609863,
+        "y": 2240.9885358810425,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "287b8459.7da69c",
+                "264a617a.dba88e"
+            ]
+        ]
+    },
+    {
+        "id": "716c0762.bdde98",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2272.485607147217,
+        "y": 2241.672521352768,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "106b68e8.1a4037",
+                "40e2c37b.f6506c"
+            ]
+        ]
+    },
+    {
+        "id": "12a02d0f.ee3803",
+        "type": "set",
+        "name": "set cidx",
+        "xml": "<set>\n<parameter name='tmp.cidx' value=\"`0`\" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value=\"1\" />\n\n\n",
+        "comments": "",
+        "x": 1104.8187637329102,
+        "y": 2199.576620578766,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "106b68e8.1a4037",
+        "type": "set",
+        "name": "set tmp.cidx and ctx.consumed-ar",
+        "xml": "<set>\n<parameter name='tmp.cidx' value='`$cidx`' />\n<parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />\n<parameter name='tmp.found-cidx' value='true' />",
+        "comments": "",
+        "x": 2518.342935562134,
+        "y": 2242.2439954280853,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "59b1d791.8e8d88",
+        "type": "set",
+        "name": "set consumed allotted resources",
+        "xml": "<set>\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value=\"`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value=\"`$tmp.ar.self-link` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />\n\n",
+        "comments": "",
+        "x": 547.6762428283691,
+        "y": 2287.5766220092773,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "d3ef150f.6b3e38",
+        "type": "comment",
+        "name": "Create urls for restapi",
+        "info": "",
+        "comments": "",
+        "x": 528.9616737365723,
+        "y": 369.6243658065796,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "6e65e9d5.9f0028",
+        "type": "set",
+        "name": "set ar-assignments",
+        "xml": "<set>\n<parameter name='ar-assignments.fq-name' value=\"`$tmp.fq-name` \" />\n\n\n\n",
+        "comments": "",
+        "x": 515.6761856079102,
+        "y": 2097.196541786194,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "d04be762.e31278",
+        "type": "comment",
+        "name": "Add AR to md-sal",
+        "info": "",
+        "comments": "",
+        "x": 501.2476272583008,
+        "y": 2944.4814081192017,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "ec3a453a.6b4d18",
+        "type": "execute",
+        "name": "execute getTime",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 502.24737548828125,
+        "y": 2322.481505393982,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "940b96fe.4bc648",
+        "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: Existing contrail route allotted resource\" />\n    \n",
+        "comments": "",
+        "x": 1583.33740234375,
+        "y": 707.3334112167358,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "6ff8b1b0.c2e46",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 825.6707000732422,
+        "y": 746.3334527015686,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "10cca98f.b56976"
+            ]
+        ]
+    },
+    {
+        "id": "10cca98f.b56976",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1005.6706504821777,
+        "y": 747.0000033378601,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "94029424.bac068",
+        "type": "set",
+        "name": "set ar data",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='ar.allotted-resource-status.action' value=\"`$contrail-route-topology-operation-input.request-information.request-action` \" />\n<parameter name='ar.allotted-resource-status.rpc-name' value=\"contrail-route-topology-operation\" />\n<parameter name='ar.allotted-resource-status.rpc-action' value=\"`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$contrail-route-topology-operation-input.request-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$contrail-route-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$contrail-route-topology-operation-input.service-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$contrail-route-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.` \" />\n",
+        "comments": "",
+        "x": 497.6706657409668,
+        "y": 750.6666746139526,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "284f958b.7a5dfa",
+        "type": "execute",
+        "name": "execute SliStringUtils - replace $CloudRegionID",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ar-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-name\"/>\n    <parameter name=\"target\" value=\"$CloudRegionID\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.cloud-region-id`\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2270.337173461914,
+        "y": 1307.6671228408813,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2b71aba8.1693c4",
+        "type": "execute",
+        "name": "execute SliStringUtils - replace $TenantNetworkRole",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ar-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-name\"/>\n    <parameter name=\"target\" value=\"$TenantNetworkRole\"/>\n    <parameter name=\"replacement\" value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-role`\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2279.6703720092773,
+        "y": 1341.6670265197754,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "eef331cb.9aea7",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:generate-unique-name",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2284.3371658325195,
+        "y": 1482.3336297273636,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "eaf8cb4c.514708",
+                "9f2060bc.fb7c6"
+            ]
+        ]
+    },
+    {
+        "id": "eaf8cb4c.514708",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2594.051689147949,
+        "y": 1485.1907623708248,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "a4726a3d.558568"
+            ]
+        ]
+    },
+    {
+        "id": "9f2060bc.fb7c6",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2599.3849334716797,
+        "y": 1516.8574628829956,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "6a782334.6926ac"
+            ]
+        ]
+    },
+    {
+        "id": "a2eac231.37f33",
+        "type": "set",
+        "name": "set variables for generating unique name",
+        "xml": "<set>\n<parameter name='generate-unique-name-input.index-table-name' value='CONTRAIL_ROUTE_NAME_INDEX' />\n<parameter name='generate-unique-name-input.index-table-prefix-column' value='contrail_route_name_prefix' />\n<parameter name='generate-unique-name-input.name-table-type' value='CONTRAIL_ROUTE_INSTANCE' />\n<parameter name='generate-unique-name-input.prefix' value=\"`$tmp.ar-name`\" />\n<parameter name='generate-unique-name-input.index-length' value='2' />\n",
+        "comments": "",
+        "x": 2246.004165649414,
+        "y": 1412.0003299415112,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "6a782334.6926ac",
+        "type": "set",
+        "name": "set tmp.ar-name to generated name",
+        "xml": "<set>\n<parameter name='tmp.ar-name' value='`$generate-unique-name-output.generated-name`' />\n",
+        "comments": "",
+        "x": 2846.575096130371,
+        "y": 1517.333545833826,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "a4726a3d.558568",
+        "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=\"`$generate-unique-name-output.error-message`\" />\n",
+        "comments": "",
+        "x": 2767.9086112976074,
+        "y": 1484.619276046753,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "d7a09bb1.7dfc58",
+        "type": "set",
+        "name": "set fq_name",
+        "xml": "<set>\n<parameter name='tmp.fq-name' value='$defaultDomain.$defaultProject.$sdncNetworkPolicy' />\n",
+        "comments": "",
+        "x": 515.3371810913086,
+        "y": 1457.6666278839111,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "846017e5.c13a98",
+        "type": "execute",
+        "name": "execute SliStringUtils - replace $defaultDomain",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.fq-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.fq-name\"/>\n    <parameter name=\"target\" value=\"$defaultDomain\"/>\n    <parameter name=\"replacement\" value=\"default-domain\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 622.6705322265625,
+        "y": 1487.6666707992554,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "329e94ed.128dbc",
+        "type": "execute",
+        "name": "execute SliStringUtils - replace $defaultProject",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.fq-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.fq-name\"/>\n    <parameter name=\"target\" value=\"$defaultProject\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.tenant-name`\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 622.6705627441406,
+        "y": 1521.000111579895,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9537b55.6a49048",
+        "type": "comment",
+        "name": "generate fqname",
+        "info": "",
+        "comments": "",
+        "x": 524.3372268676758,
+        "y": 1430.9999341964722,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "e081301c.9853a",
+        "type": "execute",
+        "name": "execute SliStringUtils - replace $sdncNetworkPolicy",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.fq-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.fq-name\"/>\n    <parameter name=\"target\" value=\"$sdncNetworkPolicy\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar-name`\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 636.0038681030273,
+        "y": 1554.3332662582397,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "fd2d75b0.6cb4a8",
+        "type": "comment",
+        "name": "Set onap-model-info",
+        "info": "",
+        "comments": "",
+        "x": 521.1468734741211,
+        "y": 875.5714731216431,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "e99fb45b.d57118",
+        "type": "update",
+        "name": "update AAI allotted-resource",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-data.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"description\" value=\"`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type`\" />\n\t<parameter name=\"selflink\" value=\"`$tmp.ar.self-link`\" />\n\t<parameter name=\"model-invariant-id\" value=\"`$ar-model.invariant-uuid`\" />\n\t<parameter name=\"model-version-id\" value=\"`$ar-model.uuid`\" />\n\t<parameter name=\"operational-status\" value=\"null\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 535.8610954284668,
+        "y": 2453.5715522766113,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "8acb12c2.f6f87",
+                "250daf6.713705"
+            ]
+        ]
+    },
+    {
+        "id": "8acb12c2.f6f87",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 791.6230278015137,
+        "y": 2430.809726715088,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "d00038bb.baddb8"
+            ]
+        ]
+    },
+    {
+        "id": "250daf6.713705",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 796.9324569702148,
+        "y": 2466.3811445236206,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "d00038bb.baddb8"
+            ]
+        ]
+    },
+    {
+        "id": "d00038bb.baddb8",
+        "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=\"AAI failed\" />\n",
+        "comments": "",
+        "x": 1006.7182426452637,
+        "y": 2432.428771018982,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "bc1017e5.305348",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"tmp.ar-name=\"/>\n<parameter name=\"field3\" value=\"`$tmp.ar-name`\"/>\n<parameter name=\"field4\" value=\"generate-unique-name-input.prefix\" />\n<parameter name=\"field5\" value=\"`$generate-unique-name-input.prefix`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2137.2039642333984,
+        "y": 1447.0004267394543,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6d745a26.0c7354",
+        "type": "switchNode",
+        "name": "switch source-network.network-id",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 568.6036758422852,
+        "y": 1134.3336181640625,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "8af0f89a.27c2a8",
+                "26bb6725.34ecc8"
+            ]
+        ]
+    },
+    {
+        "id": "8af0f89a.27c2a8",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 919.6039352416992,
+        "y": 1132.0001306533813,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "50061d1e.aa0f94"
+            ]
+        ]
+    },
+    {
+        "id": "26bb6725.34ecc8",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 912.2707290649414,
+        "y": 1093.9999256134033,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "ce51d766.4e8ee8"
+            ]
+        ]
+    },
+    {
+        "id": "b8bb95ad.9a2df8",
+        "type": "for",
+        "name": "for nidx..service-data.networks.network[]",
+        "xml": "<for index='nidx' start='0' end='`$service-data.networks.network_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2072.7152938842773,
+        "y": 1130.4445645213127,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "87c290d7.ffb84"
+            ]
+        ]
+    },
+    {
+        "id": "ffb63116.26d27",
+        "type": "switchNode",
+        "name": "switch service-data.networks.network_length",
+        "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1308.429298400879,
+        "y": 1131.0159149169922,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "87f83d80.0aba7",
+                "94644dd9.fb776"
+            ]
+        ]
+    },
+    {
+        "id": "87f83d80.0aba7",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1597.429298400879,
+        "y": 1133.0159759521484,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "a14b778d.061fa8"
+            ]
+        ]
+    },
+    {
+        "id": "94644dd9.fb776",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1577.429298400879,
+        "y": 1168.0159759521484,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "38fa1da0.7d4562"
+            ]
+        ]
+    },
+    {
+        "id": "5c5cbd2b.585f54",
+        "type": "switchNode",
+        "name": "switch networkid found",
+        "xml": "<switch test=\"`$service-data.networks.network[$nidx].network-id == $contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2517.1439571380615,
+        "y": 1092.694730758667,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "42cfffd1.f91eb"
+            ]
+        ]
+    },
+    {
+        "id": "38fa1da0.7d4562",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1778.699317932129,
+        "y": 1169.570541381836,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "b8bb95ad.9a2df8",
+                "e5b36746.9138e8",
+                "c3a2fe60.10d47"
+            ]
+        ]
+    },
+    {
+        "id": "50061d1e.aa0f94",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1050.7151184082031,
+        "y": 1131.444492340088,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "ffb63116.26d27"
+            ]
+        ]
+    },
+    {
+        "id": "ce51d766.4e8ee8",
+        "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 assigning contrail route.  Source network not found\" />\n",
+        "comments": "",
+        "x": 1066.4041366577148,
+        "y": 1093.0001208782196,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "a14b778d.061fa8",
+        "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 assigning contrail route.  Source network not found\" />\n",
+        "comments": "",
+        "x": 1787.2040939331055,
+        "y": 1131.0001277923584,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "8cb14e0e.cb709",
+        "type": "set",
+        "name": "set tmp vals",
+        "xml": "<set>\n<parameter name='tmp.ar.tenant-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.tenant`' />\n<parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />\n<parameter name='source-network-found' value='true' />\n\n",
+        "comments": "",
+        "x": 3026.2041454315186,
+        "y": 1072.0001201629639,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "c64ef011.65ec9",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2836.2705879211426,
+        "y": 1085.0001316070557,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "8cb14e0e.cb709",
+                "ab273234.3352d"
+            ]
+        ]
+    },
+    {
+        "id": "42cfffd1.f91eb",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2686.8041133880615,
+        "y": 1091.0000038146973,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "c64ef011.65ec9"
+            ]
+        ]
+    },
+    {
+        "id": "d6eb6250.74fe",
+        "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 assigning contrail route.  Source network not found\" />\n",
+        "comments": "",
+        "x": 2401.6038246154785,
+        "y": 1165.0001640319824,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "c2621055.c2754",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get Parent service network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-parentnetwork-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"parent-net\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1516.0039291381836,
+        "y": 1683.0001859664917,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "f806e9f1.0a0b88",
+                "47f327d7.b4ce88"
+            ]
+        ]
+    },
+    {
+        "id": "f806e9f1.0a0b88",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1825.2999839782715,
+        "y": 1683.8080487251282,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "788c3f86.e2829"
+            ]
+        ]
+    },
+    {
+        "id": "788c3f86.e2829",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1994.2999877929688,
+        "y": 1682.3079495429993,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "a8358589.e721f8"
+            ]
+        ]
+    },
+    {
+        "id": "a8358589.e721f8",
+        "type": "switchNode",
+        "name": "switch network length",
+        "xml": "<switch test='`$parent-net.networks.network_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2205.1572303771973,
+        "y": 1681.9270787239075,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "7e646c9f.895f44",
+                "b4b35449.efef08"
+            ]
+        ]
+    },
+    {
+        "id": "7e646c9f.895f44",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2414.4905014038086,
+        "y": 1681.9269938468933,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "7c7775ff.623fcc"
+            ]
+        ]
+    },
+    {
+        "id": "6e8d9ed9.3a19",
+        "type": "comment",
+        "name": "GET dest network from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 1461.299903869629,
+        "y": 1624.307852268219,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "47f327d7.b4ce88",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1817.1517868041992,
+        "y": 1718.8741335868835,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "2c4366b0.10342a"
+            ]
+        ]
+    },
+    {
+        "id": "2c4366b0.10342a",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1997.1517372131348,
+        "y": 1719.540684223175,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "a5487cce.5643f"
+            ]
+        ]
+    },
+    {
+        "id": "4888c4bf.132c3c",
+        "type": "execute",
+        "name": "generate parent-network url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.network`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-parentnetwork-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 552.0040283203125,
+        "y": 429.0000228881836,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a5487cce.5643f",
+        "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: No existing parent netorks\" />\n    \n",
+        "comments": "",
+        "x": 2182.003860473633,
+        "y": 1721.0001629590988,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "b4b35449.efef08",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2416.003734588623,
+        "y": 1717.0000939369202,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "32b9b839.5a1048"
+            ]
+        ]
+    },
+    {
+        "id": "32b9b839.5a1048",
+        "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: Network id not found.  Parent Service should only have one network\" />\n    \n",
+        "comments": "",
+        "x": 2582.3317108154297,
+        "y": 1716.9472088813782,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "7c7775ff.623fcc",
+        "type": "set",
+        "name": "set dest network id",
+        "xml": "<set>\n<parameter name='ar-assignments.dest-network.network-id' value=\"`$parent-net.networks.network[0].network-id` \" />\n\n\n\n",
+        "comments": "",
+        "x": 2592.3535537719727,
+        "y": 1683.0001463890076,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "216c7c53.3511e4",
+        "type": "comment",
+        "name": "Find tenant/cloud region from source network",
+        "info": "",
+        "comments": "",
+        "x": 598.0039672851562,
+        "y": 1099.000024318695,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "e2239d78.dc34",
+        "type": "execute",
+        "name": "generate contrail-applied-service url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vnf`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-contrailappliedsvc-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.contrail-applied-service-instance-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 579.204029083252,
+        "y": 459.0000247955322,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5ddff342.e4df3c",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get vnf",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-contrailappliedsvc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"vnf\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 565.2039566040039,
+        "y": 1814.6668605804443,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "ef846094.0169c",
+                "33a1c4a3.2f55bc"
+            ]
+        ]
+    },
+    {
+        "id": "ef846094.0169c",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 944.5000762939453,
+        "y": 1807.8080350160599,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "2dafc941.bd65e6"
+            ]
+        ]
+    },
+    {
+        "id": "2dafc941.bd65e6",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1113.5000801086426,
+        "y": 1806.307935833931,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "441a5438.6dce1c"
+            ]
+        ]
+    },
+    {
+        "id": "441a5438.6dce1c",
+        "type": "switchNode",
+        "name": "switch vnf length",
+        "xml": "<switch test='`$vnf.vnfs.vnf_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1324.357322692871,
+        "y": 1805.9270650148392,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "55c34485.1a3a6c",
+                "97a3c7a3.cd7a68"
+            ]
+        ]
+    },
+    {
+        "id": "55c34485.1a3a6c",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1515.6908149719238,
+        "y": 1799.9270482063293,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "3f9b4d33.6afa52"
+            ]
+        ]
+    },
+    {
+        "id": "1dfdd5e8.68e2ca",
+        "type": "comment",
+        "name": "GET contrail vnf for contrail applied service  from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 627.8333969116211,
+        "y": 1776.6413373947144,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "33a1c4a3.2f55bc",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 936.351879119873,
+        "y": 1842.8741198778152,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "e82fcfa1.60da4"
+            ]
+        ]
+    },
+    {
+        "id": "e82fcfa1.60da4",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1116.3518295288086,
+        "y": 1843.5406705141068,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "b3f3680a.ed3e28"
+            ]
+        ]
+    },
+    {
+        "id": "b3f3680a.ed3e28",
+        "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: No existing contrail applied service vnfs\" />\n    \n",
+        "comments": "",
+        "x": 1301.2039527893066,
+        "y": 1845.0001492500305,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "97a3c7a3.cd7a68",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1517.2040481567383,
+        "y": 1835.0001482963562,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "9094a451.613fc8"
+            ]
+        ]
+    },
+    {
+        "id": "9094a451.613fc8",
+        "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: vnf id not found.  Contrail applied service should only have one vnf\" />\n    \n",
+        "comments": "",
+        "x": 1681.5319519042969,
+        "y": 1834.94731092453,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "3f9b4d33.6afa52",
+        "type": "set",
+        "name": "set applied service vnf id",
+        "xml": "<set>\n<parameter name='ar-assignments.contrail-applied-service.vnf-id' value=\"`$vnf.vnfs.vnf[0].vnf-id` \" />\n\n\n\n",
+        "comments": "",
+        "x": 1726.8040199279785,
+        "y": 1799.0002388954163,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "4affa6c3.5650c8",
+        "type": "comment",
+        "name": "Generate contrail route name",
+        "info": "",
+        "comments": "",
+        "x": 550.0039520263672,
+        "y": 1223.0000276565552,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "241b0a1a.040746",
+        "type": "comment",
+        "name": "GET contrail fqdn from vnf/vf-module",
+        "info": "",
+        "comments": "",
+        "x": 580.3373031616211,
+        "y": 1917.6669092178345,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "5f1ba758.495008",
+        "type": "switchNode",
+        "name": "switch contrail-route-request-input.constrail-applied-service-info.contrail-fqdn",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.contrail-fqdn`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 686.0040054321289,
+        "y": 1959.0002427101135,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "e8efa7a8.736b38",
+                "b22d9dd3.f64d8"
+            ]
+        ]
+    },
+    {
+        "id": "e8efa7a8.736b38",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1078.0039710998535,
+        "y": 1949.0000647306442,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "b254b3ef.ebc57"
+            ]
+        ]
+    },
+    {
+        "id": "b22d9dd3.f64d8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1061.0038986206055,
+        "y": 1986.0000519752502,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "a058e74f.55aa98"
+            ]
+        ]
+    },
+    {
+        "id": "a058e74f.55aa98",
+        "type": "set",
+        "name": "set applied service fqdn",
+        "xml": "<set>\n<parameter name='ar-assignments.contrail-applied-service.contrail-fqdn' value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.contrail-fqdn` \" />\n\n\n\n",
+        "comments": "",
+        "x": 1252.0039138793945,
+        "y": 1986.0000859498978,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "b254b3ef.ebc57",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1264.0039749145508,
+        "y": 1949.00006377697,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "a0bebd1.5d35d4",
+                "5f68ea4a.6a1ad4"
+            ]
+        ]
+    },
+    {
+        "id": "9ed05f14.02b3a",
+        "type": "comment",
+        "name": "GET dest network from parent service",
+        "info": "",
+        "comments": "",
+        "x": 570.670524597168,
+        "y": 1655.0000686645508,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "3b7ee06a.f8b51",
+        "type": "switchNode",
+        "name": "switch contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-id",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 762.0039825439453,
+        "y": 1683.000023841858,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "8ecd2ff2.b9e9a",
+                "cc62d74c.c1a2e8"
+            ]
+        ]
+    },
+    {
+        "id": "8ecd2ff2.b9e9a",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1204.0038833618164,
+        "y": 1683.0000393390656,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "c2621055.c2754"
+            ]
+        ]
+    },
+    {
+        "id": "cc62d74c.c1a2e8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1186.0038871765137,
+        "y": 1716.0000400543213,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "84dd6a6a.65bf68"
+            ]
+        ]
+    },
+    {
+        "id": "84dd6a6a.65bf68",
+        "type": "set",
+        "name": "set dest network id",
+        "xml": "<set>\n<parameter name='ar-assignments.dest-network.network-id' value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-id` \" />\n\n\n\n",
+        "comments": "",
+        "x": 1378.003849029541,
+        "y": 1718.9999952316284,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "7b646249.f51a2c",
+        "type": "comment",
+        "name": "GET contrail fqdn via AAI",
+        "info": "",
+        "comments": "",
+        "x": 1517.2039642333984,
+        "y": 1912.9999675750732,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "a0bebd1.5d35d4",
+        "type": "get-resource",
+        "name": "get-resource generic-vnf",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $ar-assignments.contrail-applied-service.vnf-id\"\n        pfx='aai.vnf' local-only='false' >\n        \n\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1527.2039642333984,
+        "y": 1948.9999685287476,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "d808221.d92d0e",
+                "5ef4a02a.42306"
+            ]
+        ]
+    },
+    {
+        "id": "5ef4a02a.42306",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1729.8435707092285,
+        "y": 1977.8053374290466,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "82e0cc2c.ce754"
+            ]
+        ]
+    },
+    {
+        "id": "82e0cc2c.ce754",
+        "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 retrieving vnf from AAI\" />\n",
+        "comments": "",
+        "x": 1905.7957954406738,
+        "y": 1981.1386713981628,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "d808221.d92d0e",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1732.3433952331543,
+        "y": 1947.8054151535034,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "8d4eb08.378ca5"
+            ]
+        ]
+    },
+    {
+        "id": "8d4eb08.378ca5",
+        "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 not found in AAI\" />\n",
+        "comments": "",
+        "x": 1900.121280670166,
+        "y": 1947.1108450889587,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "840da30b.94703",
+        "type": "comment",
+        "name": "Loop through vf modeuls looking for contrail fqdn",
+        "info": "",
+        "comments": "",
+        "x": 1600.8706130981445,
+        "y": 2017.3335008621216,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "4c3a7db3.5cd594",
+        "type": "comment",
+        "name": "Update AAI AR",
+        "info": "",
+        "comments": "",
+        "x": 499.20395278930664,
+        "y": 2416.9999961853027,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "5fefa6f9.3a77d8",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Update parent provided service AR",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"parent\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 641.2040672302246,
+        "y": 2549.0002632141113,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "4b453088.13e21",
+                "db902bd9.e2c338",
+                "e615d74a.c6fc18"
+            ]
+        ]
+    },
+    {
+        "id": "4b453088.13e21",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 963.5120849609375,
+        "y": 2593.998480796814,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "b694161e.b1bf88"
+            ]
+        ]
+    },
+    {
+        "id": "db902bd9.e2c338",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 954.512134552002,
+        "y": 2562.4985065460205,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "b694161e.b1bf88"
+            ]
+        ]
+    },
+    {
+        "id": "e615d74a.c6fc18",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 958.2621726989746,
+        "y": 2532.855611421168,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "115a2a7e.d97726"
+            ]
+        ]
+    },
+    {
+        "id": "b694161e.b1bf88",
+        "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 updating md-sal for contrail-route-allotted-resource\" />\n",
+        "comments": "",
+        "x": 1124.2621726989746,
+        "y": 2563.2485303878784,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "115a2a7e.d97726",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1099.918140411377,
+        "y": 2529.047780610621,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "74edca12.815734",
+        "type": "comment",
+        "name": "Put the parent allotted resource in mdsal",
+        "info": "",
+        "comments": "",
+        "x": 568.2040328979492,
+        "y": 2517.0000886917114,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "264a617a.dba88e",
+        "type": "switchNode",
+        "name": "switch tmp.found-cidx",
+        "xml": "<switch test='`$tmp.found-cidx`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1283.2039337158203,
+        "y": 2273.0000586509705,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "93572ecb.afdae"
+            ]
+        ]
+    },
+    {
+        "id": "93572ecb.afdae",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1473.2038879394531,
+        "y": 2272.9999957084656,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "b7b1719a.2b029"
+            ]
+        ]
+    },
+    {
+        "id": "b7b1719a.2b029",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1639.2038879394531,
+        "y": 2272.9999957084656,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "308899ad.18e666"
+            ]
+        ]
+    },
+    {
+        "id": "308899ad.18e666",
+        "type": "set",
+        "name": "set tmp.cidx ",
+        "xml": "<set>\n<parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />\n",
+        "comments": "",
+        "x": 1885.0612163543701,
+        "y": 2273.571469783783,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "40e2c37b.f6506c",
+        "type": "break",
+        "name": "break",
+        "xml": "<break>\n",
+        "comments": "",
+        "x": 2435.203887939453,
+        "y": 2270.9999957084656,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "a348f9e1.479f68",
+        "type": "execute",
+        "name": "generate parent-ar url - replace service-instance-id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.parent-provided-resource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.parent-ar-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 623.2040939331055,
+        "y": 491.0000581741333,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e6b7c56f.4a4108",
+        "type": "execute",
+        "name": "generate parent-ar url - replace allotted-resource-id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.parent-ar-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.parent-ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 628.2039642333984,
+        "y": 526.0000591278076,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4fa30610.874dd8",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Update parent provided service AR",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"parent\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1340.337501525879,
+        "y": 2983.333375930786,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "4d27fc7a.e0a564",
+                "fca9d210.32923",
+                "5baae4aa.9e3f8c"
+            ]
+        ]
+    },
+    {
+        "id": "b4ec98ab.b04568",
+        "type": "comment",
+        "name": "Rollback parent",
+        "info": "",
+        "comments": "",
+        "x": 1184.3374290466309,
+        "y": 2953.0000064373016,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "4b9fa7f1.b30308",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 993.0040321350098,
+        "y": 2982.666679382324,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "4fa30610.874dd8",
+                "676e8a31.aad434"
+            ]
+        ]
+    },
+    {
+        "id": "4d27fc7a.e0a564",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1711.64554977417,
+        "y": 3043.9983422756195,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "7488686d.da8948"
+            ]
+        ]
+    },
+    {
+        "id": "fca9d210.32923",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1702.6455993652344,
+        "y": 3012.498368024826,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "7488686d.da8948"
+            ]
+        ]
+    },
+    {
+        "id": "5baae4aa.9e3f8c",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1706.395637512207,
+        "y": 2982.8554728999734,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "7488686d.da8948"
+            ]
+        ]
+    },
+    {
+        "id": "7488686d.da8948",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1848.0516052246094,
+        "y": 2979.0476420894265,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5182c386.6fc00c",
+        "type": "execute",
+        "name": "generate network-ar url - replace service-instance-id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.network-provided-resource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.network-ar-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 630.0039291381836,
+        "y": 560.9999933242798,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b4d8f0cc.1375d",
+        "type": "execute",
+        "name": "generate network-ar url - replace network-id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.network-ar-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.network-ar-url\"/>\n    <parameter name=\"target\" value=\"{network-id}\"/>\n    <parameter name=\"replacement\" value=\"`$ar-assignments.dest-network.network-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 575.3373336791992,
+        "y": 2736.3331060409546,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d3ab9d9.302806",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Update parent network provided AR",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"net-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 636.0039749145508,
+        "y": 2768.332983016968,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "b126a6ab.fc31a8",
+                "21f26a3d.14b8a6",
+                "58552a71.cf4904"
+            ]
+        ]
+    },
+    {
+        "id": "21f26a3d.14b8a6",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1043.3120384216309,
+        "y": 2769.998592376709,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "d04555d.20f10a8"
+            ]
+        ]
+    },
+    {
+        "id": "58552a71.cf4904",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1035.9787483215332,
+        "y": 2805.165050506592,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "d04555d.20f10a8"
+            ]
+        ]
+    },
+    {
+        "id": "b126a6ab.fc31a8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1038.0620727539062,
+        "y": 2735.52213678509,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "d04555d.20f10a8"
+            ]
+        ]
+    },
+    {
+        "id": "d04555d.20f10a8",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1209.7179679870605,
+        "y": 2740.047920227051,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "70cece64.b0035",
+                "f47586c7.4dd958"
+            ]
+        ]
+    },
+    {
+        "id": "9c8b757d.7ff708",
+        "type": "comment",
+        "name": "Add AR to  parent network allotted resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 604.0038681030273,
+        "y": 2696.666604042053,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "f47586c7.4dd958",
+        "type": "switchNode",
+        "name": "switch net-ar_length",
+        "xml": "<switch test='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1436.3371238708496,
+        "y": 2779.333092689514,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "81789afc.459478",
+                "18863aec.cdfac5"
+            ]
+        ]
+    },
+    {
+        "id": "f3c02a8e.4fd868",
+        "type": "for",
+        "name": "for nidx..net-ar[]",
+        "xml": "<for index='nidx' start='0' end='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2154.6705780029297,
+        "y": 2800.3330993652344,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "aaf9c25b.d0a4e"
+            ]
+        ]
+    },
+    {
+        "id": "81789afc.459478",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1719.1461906433105,
+        "y": 2734.9044456481934,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "a9b1914.36cf07"
+            ]
+        ]
+    },
+    {
+        "id": "18863aec.cdfac5",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1700.8128395080566,
+        "y": 2808.5711641311646,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "400b37af.daefc8"
+            ]
+        ]
+    },
+    {
+        "id": "aaf9c25b.d0a4e",
+        "type": "switchNode",
+        "name": "switch allotted-resource-id",
+        "xml": "<switch test=\"`$net-ar.network-provided-allotted-resources.network-provided-ar-id[$nidx] == $tmp.ar.allotted-resource-id`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2379.765636444092,
+        "y": 2807.3930249214172,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "3f6707e6.536828"
+            ]
+        ]
+    },
+    {
+        "id": "3f6707e6.536828",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2562.909149169922,
+        "y": 2802.8570713996887,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "cf3b236d.afba4"
+            ]
+        ]
+    },
+    {
+        "id": "400b37af.daefc8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1903.2733039855957,
+        "y": 2811.3636326789856,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "f3c02a8e.4fd868",
+                "b5ca1c40.ba898"
+            ]
+        ]
+    },
+    {
+        "id": "cf3b236d.afba4",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2729.6701126098633,
+        "y": 2804.380966901779,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "b9c29337.bffea",
+                "e860e228.44b05"
+            ]
+        ]
+    },
+    {
+        "id": "b9a5525f.e748d",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2333.7217140197754,
+        "y": 2844.0419883728027,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "3c162262.2edd8e"
+            ]
+        ]
+    },
+    {
+        "id": "3c162262.2edd8e",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2503.0548133850098,
+        "y": 2842.375241279602,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "97955dea.94fa8",
+                "b0991330.37b1f",
+                "19342dda.0ed522"
+            ]
+        ]
+    },
+    {
+        "id": "97955dea.94fa8",
+        "type": "set",
+        "name": "set tmp.nidx ",
+        "xml": "<set>\n<parameter name='tmp.nidx' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' />\n",
+        "comments": "",
+        "x": 2708.9120597839355,
+        "y": 2847.946852207184,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "71697d2f.ce67a4",
+        "type": "comment",
+        "name": "allotted resource already exists- no op",
+        "info": "",
+        "comments": "",
+        "x": 2425.003807067871,
+        "y": 2658.3331480026245,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "b5ca1c40.ba898",
+        "type": "switchNode",
+        "name": "switch tmp.found-nidx",
+        "xml": "<switch test='`$tmp.found-nidx`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2163.721622467041,
+        "y": 2842.375159263611,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "b9a5525f.e748d"
+            ]
+        ]
+    },
+    {
+        "id": "b9c29337.bffea",
+        "type": "set",
+        "name": "set tmp.nidx ",
+        "xml": "<set>\n<parameter name='tmp.found-nidx' value='true' />",
+        "comments": "",
+        "x": 2941.6705055236816,
+        "y": 2795.6662425994873,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "e860e228.44b05",
+        "type": "break",
+        "name": "break",
+        "xml": "<break>\n",
+        "comments": "",
+        "x": 2928.864610671997,
+        "y": 2829.0894317626953,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "b0991330.37b1f",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Update parent network provided AR",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"p-network-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2876.0039253234863,
+        "y": 2913.6661825180054,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "d0deebe0.5c10c8",
+                "ce47a3d3.8ea39",
+                "abaaa05a.34376"
+            ]
+        ]
+    },
+    {
+        "id": "abaaa05a.34376",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3219.0038719177246,
+        "y": 2959.9996099472046,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "88cce4e7.5ce3b8"
+            ]
+        ]
+    },
+    {
+        "id": "ce47a3d3.8ea39",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3210.003921508789,
+        "y": 2928.499635696411,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "88cce4e7.5ce3b8"
+            ]
+        ]
+    },
+    {
+        "id": "d0deebe0.5c10c8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3213.7539596557617,
+        "y": 2898.8567405715585,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "88cce4e7.5ce3b8"
+            ]
+        ]
+    },
+    {
+        "id": "88cce4e7.5ce3b8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 3398.743251800537,
+        "y": 2895.048861503601,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "70cece64.b0035",
+        "type": "set",
+        "name": "set tmp.found-nidx = false",
+        "xml": "<set>\n<parameter name='tmp.found-nidx' value='false' />",
+        "comments": "",
+        "x": 1453.0038871765137,
+        "y": 2709.666962623596,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "19342dda.0ed522",
+        "type": "set",
+        "name": "set length",
+        "xml": "<set>\n<parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length + 1`' />\n<parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id[$tmp.nidx]' value=\"`$tmp.ar.allotted-resource-id`\" />\n",
+        "comments": "",
+        "x": 2703.670211791992,
+        "y": 2882.000111103058,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "cf2e9848.75b068",
+        "type": "set",
+        "name": "set new network-provided-ar",
+        "xml": "<set>\n<parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value=\"1\" />\n<parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id[0]' value=\"`$tmp.ar.allotted-resource-id`\" />\n\n\n\n\n",
+        "comments": "",
+        "x": 2220.003257751465,
+        "y": 2738.2850757837296,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "a9b1914.36cf07",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1916.6709251403809,
+        "y": 2734.9993047714233,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "cf2e9848.75b068",
+                "b0991330.37b1f"
+            ]
+        ]
+    },
+    {
+        "id": "532c07a7.4fc418",
+        "type": "comment",
+        "name": "Other Rollbacks? ",
+        "info": "",
+        "comments": "",
+        "x": 1190.003776550293,
+        "y": 3044.9997510910034,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "1a6cf55.8e55d0b",
+        "type": "for",
+        "name": "for each vf-module",
+        "xml": "<for index='idx' start='0' end='`$aai.vnf.vf-modules.vf-module_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1942.1624755859375,
+        "y": 2083.2690420150757,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "f9f855ba.54c4e8"
+            ]
+        ]
+    },
+    {
+        "id": "3073c90c.2b8396",
+        "type": "break",
+        "name": "break",
+        "xml": "<break>\n",
+        "comments": "",
+        "x": 2821.734062194824,
+        "y": 2147.5073776245117,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "f9f855ba.54c4e8",
+        "type": "switchNode",
+        "name": "switch contrail-service-instance-fqdn",
+        "xml": "<switch test='`$aai.vnf.vf-modules.vf-module[$idx].contrail-service-instance-fqdn`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2225.67041015625,
+        "y": 2083.9997549057007,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "16e107d0.dce698",
+                "e20c70a0.0635e"
+            ]
+        ]
+    },
+    {
+        "id": "e93e13c6.51ba8",
+        "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 not found in AAI\" />\n",
+        "comments": "",
+        "x": 1923.61474609375,
+        "y": 2050.9721670150757,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "16e107d0.dce698",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2505.67041015625,
+        "y": 2085.3330068588257,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "75bfef9d.b7113"
+            ]
+        ]
+    },
+    {
+        "id": "e20c70a0.0635e",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2487.6704139709473,
+        "y": 2118.3330075740814,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "6a2486ce.7e5db8"
+            ]
+        ]
+    },
+    {
+        "id": "75bfef9d.b7113",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2662.3373260498047,
+        "y": 2083.666416168213,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6a2486ce.7e5db8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2669.0036544799805,
+        "y": 2115.3330125808716,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "3073c90c.2b8396",
+                "91e70d26.1944f"
+            ]
+        ]
+    },
+    {
+        "id": "91e70d26.1944f",
+        "type": "set",
+        "name": "set applied service fqdn",
+        "xml": "<set>\n<parameter name='ar-assignments.contrail-applied-service.contrail-fqdn' value=\"`$aai.vnf.vf-modules.vf-module[$idx].contrail-service-instance-fqdn` \" />\n\n\n\n",
+        "comments": "",
+        "x": 2880.3369140625,
+        "y": 2114.666625022888,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "50a5d5ae.00038c",
+        "type": "switchNode",
+        "name": "switch ar-assignments.contrail-applied-service.contrail-fqdn",
+        "xml": "<switch test='`$ar-assignments.contrail-applied-service.contrail-fqdn`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 639.0039672851562,
+        "y": 2032.6666250228882,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "7ef88d8c.1753f4"
+            ]
+        ]
+    },
+    {
+        "id": "7ef88d8c.1753f4",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 967.6706504821777,
+        "y": 2033.3331513404846,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "906fc5d.d193b38"
+            ]
+        ]
+    },
+    {
+        "id": "906fc5d.d193b38",
+        "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: No vf-module with contrail-service-instance-fqdn found in AAI\" />\n    \n",
+        "comments": "",
+        "x": 1143.6705322265625,
+        "y": 2031.6665029525757,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "9435780f.70de68",
+        "type": "comment",
+        "name": "MDSal adaptor only saves consuming service so parent service and AR are done by Rest api calls",
+        "info": "",
+        "comments": "",
+        "x": 617.670524597168,
+        "y": 69.99999523162842,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "ab273234.3352d",
+        "type": "get-resource",
+        "name": "get-resource tenant",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"tenant\" \n\t\tkey=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND \n\t\t     cloud-region.cloud-region-id = $tmp.ar.cloud-region-id AND\n\t\t     tenant.tenant-id = $tmp.ar.tenant-id\"\n        pfx='aai.tenant' local-only='false' >\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3048.670690536499,
+        "y": 1107.999815940857,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "1e32de4c.b2c362",
+                "cacc25d0.431aa8",
+                "ffdd0952.ef2388"
+            ]
+        ]
+    },
+    {
+        "id": "1e32de4c.b2c362",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3269.5320796966553,
+        "y": 1100.61093044281,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "84327f8e.42c2a"
+            ]
+        ]
+    },
+    {
+        "id": "cacc25d0.431aa8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3264.8651065826416,
+        "y": 1133.9442443847656,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "84327f8e.42c2a"
+            ]
+        ]
+    },
+    {
+        "id": "84327f8e.42c2a",
+        "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=\"Tenant not found in AAI\" />\n\n",
+        "comments": "",
+        "x": 3439.0410289764404,
+        "y": 1121.9998035430908,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "ffdd0952.ef2388",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3265.0411128997803,
+        "y": 1069.0368947982788,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "5ac31447.f8751c"
+            ]
+        ]
+    },
+    {
+        "id": "5ac31447.f8751c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 3445.0411128997803,
+        "y": 1067.0368947982788,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "7452fdf2.e453e4"
+            ]
+        ]
+    },
+    {
+        "id": "7452fdf2.e453e4",
+        "type": "set",
+        "name": "set tenant name",
+        "xml": "<set>\n<parameter name='tmp.ar.tenant-name' value='`$aai.tenant.tenant-name`' />\n\n\n",
+        "comments": "",
+        "x": 3632.004217147827,
+        "y": 1064.66663646698,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "87c290d7.ffb84",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2311.40380859375,
+        "y": 1094.9999990463257,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "5c5cbd2b.585f54",
+                "cf63926f.05ca8"
+            ]
+        ]
+    },
+    {
+        "id": "cf63926f.05ca8",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"tmp.ar-name=\"/>\n<parameter name=\"field3\" value=\"`$tmp.ar-name`\"/>\n<parameter name=\"field4\" value=\"service-data-network-id\" />\n<parameter name=\"field5\" value=\"`$service-data.networks.network[$nidx].network-id`\" />\n<parameter name=\"field6\" value=\"contrail-route-input-network-id\" />\n<parameter name=\"field7\" value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id`\" />\n<parameter name=\"field8\" value=\"`$nidx`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2476.0039825439453,
+        "y": 1058.000126838684,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e5b36746.9138e8",
+        "type": "set",
+        "name": "set source-network-found",
+        "xml": "<set>\n<parameter name='source-network-found' value='false' />\n\n",
+        "comments": "",
+        "x": 2034.0041046142578,
+        "y": 1099.000039756298,
+        "z": "85f9bda0.40ea6",
+        "wires": []
+    },
+    {
+        "id": "c3a2fe60.10d47",
+        "type": "switchNode",
+        "name": "switch source-network-found",
+        "xml": "<switch test=\"`$source-network-found`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2038.003978729248,
+        "y": 1165.0000324249268,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "dadae59.dcff218"
+            ]
+        ]
+    },
+    {
+        "id": "dadae59.dcff218",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2250.003936767578,
+        "y": 1165.000033378601,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "d6eb6250.74fe"
+            ]
+        ]
+    },
+    {
+        "id": "5f68ea4a.6a1ad4",
+        "type": "switchNode",
+        "name": "switch vf-module_length",
+        "xml": "<switch test='`$aai.vnf.vf-modules.vf-module_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1525.00390625,
+        "y": 2049.9999990463257,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "782bd89.42bc228",
+                "163262d8.631f3d"
+            ]
+        ]
+    },
+    {
+        "id": "782bd89.42bc228",
+        "type": "other",
+        "name": "outcome null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1730.00390625,
+        "y": 2050.9999990463257,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "e93e13c6.51ba8"
+            ]
+        ]
+    },
+    {
+        "id": "163262d8.631f3d",
+        "type": "other",
+        "name": "outcome other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1730.00390625,
+        "y": 2081.9999990463257,
+        "z": "85f9bda0.40ea6",
+        "wires": [
+            [
+                "1a6cf55.8e55d0b"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-create.json
new file mode 100755
index 0000000..db50959
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-create.json
@@ -0,0 +1,1644 @@
+[
+    {
+        "id": "f03bdbde.4579d8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 175.00390625,
+        "y": 104.6666704416275,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "b789d37d.82a2e"
+            ]
+        ]
+    },
+    {
+        "id": "b789d37d.82a2e",
+        "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": 321.2419891357422,
+        "y": 179.61906397342682,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "245879c2.1bf726"
+            ]
+        ]
+    },
+    {
+        "id": "245879c2.1bf726",
+        "type": "method",
+        "name": "contrail-route-topology-operation-create",
+        "xml": "<method rpc='contrail-route-topology-operation-create' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 401.1587562561035,
+        "y": 248.85711252689362,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "cb6febc8.40d7a8"
+            ]
+        ]
+    },
+    {
+        "id": "cb6febc8.40d7a8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 309.4800910949707,
+        "y": 392.1904546022415,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "78592f6d.e5c98",
+                "e3ebac4.ab7145",
+                "b31530da.30339",
+                "ef64ef71.c48f1",
+                "41df4f0b.30a5f",
+                "af3b175.bb7ece8",
+                "478f720.e98ad9",
+                "bc7f0404.80df38",
+                "bc587a66.feda28",
+                "a844f172.05d78",
+                "2c4387c0.bbe4d8",
+                "bd1d7050.2c7d2",
+                "78389040.50c04",
+                "3b7c3ee7.892e02",
+                "9c87964d.1eedd8",
+                "cb3789bb.42da88",
+                "96e58f96.3e0dc",
+                "bd7a20ba.9bf84",
+                "7d144ee0.ee98f",
+                "65bdabe8.142354",
+                "483287bc.c27a28",
+                "29d6c655.17265a",
+                "808bf1b8.60d31",
+                "cf49ae05.2f29"
+            ]
+        ]
+    },
+    {
+        "id": "e3ebac4.ab7145",
+        "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.7183837890625,
+        "y": 2060.3935294486582,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "78592f6d.e5c98",
+        "type": "set",
+        "name": "set output to api handler",
+        "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='contrail-route-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $contrail-route-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+        "comments": "",
+        "x": 536.4722900390625,
+        "y": 2022.8493228293955,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "a844f172.05d78",
+        "type": "set",
+        "name": "set allotted-resource-oper-status",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+        "comments": "",
+        "x": 569.8056755065918,
+        "y": 1895.2302031852305,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "ef64ef71.c48f1",
+        "type": "set",
+        "name": "set tmp.ar.self-link",
+        "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/contrail-route-topology/'` \" />\n\n",
+        "comments": "",
+        "x": 571.7419624328613,
+        "y": 365.9999920129776,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "b31530da.30339",
+        "type": "set",
+        "name": "set tmp.ar.allotted-resource-id,etc",
+        "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n\n",
+        "comments": "",
+        "x": 619.0012359619141,
+        "y": 332.2592588663101,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "41df4f0b.30a5f",
+        "type": "execute",
+        "name": "execute Properties - pull properties file",
+        "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": 633.4258880615234,
+        "y": 401.89820539951324,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "478f720.e98ad9",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 651.8560028076172,
+        "y": 573.4595466852188,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "aebb7490.69e928",
+                "cfd4b50e.a5e6b8"
+            ]
+        ]
+    },
+    {
+        "id": "af3b175.bb7ece8",
+        "type": "execute",
+        "name": "generate allotted-resource url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.cr-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 606.0687713623047,
+        "y": 457.68387281894684,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "aebb7490.69e928",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 893.8187561035156,
+        "y": 570.9339929819107,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "a22ae59.4cc7418"
+            ]
+        ]
+    },
+    {
+        "id": "bc7f0404.80df38",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 587.0809020996094,
+        "y": 1979.755991578102,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "1f0721b.9b811de",
+                "e79eeaaa.e7dcb8",
+                "1d4083e3.1dc26c"
+            ]
+        ]
+    },
+    {
+        "id": "1f0721b.9b811de",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 869.8889007568359,
+        "y": 2015.6111840568483,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "d062f84e.64a6c8"
+            ]
+        ]
+    },
+    {
+        "id": "e79eeaaa.e7dcb8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 860.8889503479004,
+        "y": 1984.1112098060548,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "d062f84e.64a6c8"
+            ]
+        ]
+    },
+    {
+        "id": "1d4083e3.1dc26c",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 864.638988494873,
+        "y": 1954.4683146812022,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "5be66386.866e6c"
+            ]
+        ]
+    },
+    {
+        "id": "d062f84e.64a6c8",
+        "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 updating md-sal for contrail-route-allotted-resource\" />\n",
+        "comments": "",
+        "x": 1030.638988494873,
+        "y": 1984.8612336479127,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "a22ae59.4cc7418",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1062.818759918213,
+        "y": 569.4338937997818,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "3b15ea01.810756"
+            ]
+        ]
+    },
+    {
+        "id": "3b15ea01.810756",
+        "type": "switchNode",
+        "name": "switch cr length",
+        "xml": "<switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1273.6760025024414,
+        "y": 569.05302298069,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "9e98b320.e152c",
+                "8b7088ef.449658"
+            ]
+        ]
+    },
+    {
+        "id": "9e98b320.e152c",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1463.0093078613281,
+        "y": 569.0529810190201,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "a5eacd9b.7855d"
+            ]
+        ]
+    },
+    {
+        "id": "ad98339.532aad",
+        "type": "set",
+        "name": "set ar from get",
+        "xml": "<set>\n<parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />\n",
+        "comments": "",
+        "x": 1886.2001152038574,
+        "y": 600.6245447397232,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "a5eacd9b.7855d",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic='true'>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1647.533197402954,
+        "y": 565.9578148126602,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "ad98339.532aad",
+                "3870bad1.110186"
+            ]
+        ]
+    },
+    {
+        "id": "2d62b33d.718e0c",
+        "type": "comment",
+        "name": "GET contrail-route-allotted-resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 661.8186988830566,
+        "y": 537.43388235569,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "cb3789bb.42da88",
+        "type": "set",
+        "name": "set ar-assignments.contrail-id",
+        "xml": "<set>\n<parameter name='ar-assignments.contrail-id' value=\"`$contrailResp.network-policy.uuid`\" />\n\n\n\n",
+        "comments": "",
+        "x": 591.6760177612305,
+        "y": 1456.2319885492325,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "3870bad1.110186",
+        "type": "set",
+        "name": "save backup copy of mdsal-ar for rollback",
+        "xml": "<set>\n<parameter name='bk-cr-ar' value='$mdsal-ar.' />\n",
+        "comments": "",
+        "x": 1974.0571670532227,
+        "y": 567.4340368509293,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "d436744f.3d37d8",
+        "type": "comment",
+        "name": "Create urls for restapi",
+        "info": "",
+        "comments": "",
+        "x": 576.9615592956543,
+        "y": 431.29102289676666,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "5be66386.866e6c",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1006.2949562072754,
+        "y": 1950.6604838706553,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "bc587a66.feda28",
+        "type": "execute",
+        "name": "execute getTime",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 518.9616737365723,
+        "y": 1928.3269076682627,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ca916db.f325d9",
+        "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=\"Error: Contrail Route not found\" />\n    \n",
+        "comments": "",
+        "x": 1613.3376388549805,
+        "y": 653.6667238473892,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "cfd4b50e.a5e6b8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 885.6705589294434,
+        "y": 606.0000778436661,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "18936b2c.da7865"
+            ]
+        ]
+    },
+    {
+        "id": "18936b2c.da7865",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1065.670509338379,
+        "y": 606.6666284799576,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "ca916db.f325d9"
+            ]
+        ]
+    },
+    {
+        "id": "2c4387c0.bbe4d8",
+        "type": "set",
+        "name": "set ar data",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='ar.allotted-resource-status.action' value=\"`$contrail-route-topology-operation-input.request-information.request-action` \" />\n<parameter name='ar.allotted-resource-status.rpc-name' value=\"contrail-route-topology-operation\" />\n<parameter name='ar.allotted-resource-status.rpc-action' value=\"`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$contrail-route-topology-operation-input.request-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$contrail-route-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$contrail-route-topology-operation-input.service-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$contrail-route-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.` \" />\n",
+        "comments": "",
+        "x": 558.5277328491211,
+        "y": 611.4761854410172,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "8b7088ef.449658",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1451.3372611999512,
+        "y": 606.3333412408829,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "ca916db.f325d9"
+            ]
+        ]
+    },
+    {
+        "id": "bd7a20ba.9bf84",
+        "type": "set",
+        "name": "set cloud-region-id for input to contrail",
+        "xml": "<set>\n<parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />\n",
+        "comments": "",
+        "x": 615.3849792480469,
+        "y": 1262.6431738138199,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "ca1182bc.7b6ef",
+        "type": "comment",
+        "name": "Call contrail api here",
+        "info": "",
+        "comments": "",
+        "x": 559.0516815185547,
+        "y": 1229.3096767663956,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "76519ed6.4be52",
+        "type": "comment",
+        "name": "Rollback - rollback contrail/AAI",
+        "info": "",
+        "comments": "",
+        "x": 1243.8612670898438,
+        "y": 1189.714376091957,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "396c22cf.fd071e",
+        "type": "comment",
+        "name": "Create  network policy in AAI",
+        "info": "",
+        "comments": "",
+        "x": 565.7659301757812,
+        "y": 1664.8929439783096,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "3b7c3ee7.892e02",
+        "type": "save",
+        "name": "save AnAI - network-policy",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"network-policy\" \n\t\tkey=\"network-policy.network-policy-id = $ar-assignments.contrail-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-policy-id\" value=\"`$ar-assignments.contrail-id`\" />\n<parameter name=\"network-policy-fqdn\" value=\"`$ar-assignments.fq-name`\" />\n\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 581.1428146362305,
+        "y": 1701.960508942604,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "178286.09ba5d7b",
+                "916ae281.f5ee2"
+            ]
+        ]
+    },
+    {
+        "id": "6b68050d.217ccc",
+        "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=\"Failed to save network policy in AAI\" />\n",
+        "comments": "",
+        "x": 1053.48832321167,
+        "y": 1692.2421222925186,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "178286.09ba5d7b",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 824.9169311523438,
+        "y": 1691.257859826088,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "6b68050d.217ccc"
+            ]
+        ]
+    },
+    {
+        "id": "916ae281.f5ee2",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 828.7264289855957,
+        "y": 1720.7342764139175,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "6b68050d.217ccc"
+            ]
+        ]
+    },
+    {
+        "id": "13fbc501.526acb",
+        "type": "comment",
+        "name": "MDSal adaptor only saves consuming service so parent service and AR are done by Rest api calls",
+        "info": "",
+        "comments": "",
+        "x": 681.6705322265625,
+        "y": 102.99999868869781,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "9c87964d.1eedd8",
+        "type": "execute",
+        "name": "execute Contrail API create network policy",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='create' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='default-domain' value='default-domain' />\n<parameter name='policy-name' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name`' />\n<parameter name='default-project' value='`$tmp.ar.tenant-name`' /> \n<!-- dummy for dev <parameter name='default-project' value='default-project' /> -->\n<parameter name='vipr-service-instance' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.contrail-applied-service.contrail-fqdn`' />\n<parameter name='dst-virtual-network' value='`$aai.dest-network.contrail-network-fqdn`' />\n<parameter name='src-virtual-network' value='`$aai.src-network.contrail-network-fqdn`' />\n<parameter name='direction' value='&lt;&gt;' />\n<parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 620.0039978027344,
+        "y": 1345.5005213022232,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "2fb2335a.cbd49c",
+                "a5da0427.0c5768"
+            ]
+        ]
+    },
+    {
+        "id": "2fb2335a.cbd49c",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 901.384880065918,
+        "y": 1313.6428172923625,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "1c40ddfb.ac3da2"
+            ]
+        ]
+    },
+    {
+        "id": "a5da0427.0c5768",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 899.4802017211914,
+        "y": 1346.6427570581436,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "a4c8be00.baf52"
+            ]
+        ]
+    },
+    {
+        "id": "bd1d7050.2c7d2",
+        "type": "switchNode",
+        "name": "switch source-network.network-id",
+        "xml": "<switch test='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 622.0039520263672,
+        "y": 817.6667934656143,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "16cf3207.6919ae",
+                "4972ee2e.1e371"
+            ]
+        ]
+    },
+    {
+        "id": "16cf3207.6919ae",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 978.0041694641113,
+        "y": 816.333172917366,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "4d7f64a6.3f3e3c"
+            ]
+        ]
+    },
+    {
+        "id": "4972ee2e.1e371",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 973.6709861755371,
+        "y": 779.3329731225967,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "f8faa309.794be"
+            ]
+        ]
+    },
+    {
+        "id": "7af5889b.368718",
+        "type": "for",
+        "name": "for nidx..service-data.networks.network[]",
+        "xml": "<for index='nidx' start='0' end='`$service-data.networks.network_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2113.448944091797,
+        "y": 856.1109507083893,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "a1094de3.d998d"
+            ]
+        ]
+    },
+    {
+        "id": "e0a0a8a2.ee5b68",
+        "type": "switchNode",
+        "name": "switch service-data.networks.network_length",
+        "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1369.829605102539,
+        "y": 816.3490000963211,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "25b29885.305408",
+                "d2c788cf.79feb8"
+            ]
+        ]
+    },
+    {
+        "id": "25b29885.305408",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1658.829605102539,
+        "y": 818.3490611314774,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "25abf517.021e9a"
+            ]
+        ]
+    },
+    {
+        "id": "d2c788cf.79feb8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1638.829605102539,
+        "y": 853.3490611314774,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "d2c2c0a9.d8b2c"
+            ]
+        ]
+    },
+    {
+        "id": "d2c2c0a9.d8b2c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1843.4329071044922,
+        "y": 857.2369349002838,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "7af5889b.368718"
+            ]
+        ]
+    },
+    {
+        "id": "4d7f64a6.3f3e3c",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1112.1154251098633,
+        "y": 816.7775775194168,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "e0a0a8a2.ee5b68"
+            ]
+        ]
+    },
+    {
+        "id": "f8faa309.794be",
+        "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 assigning contrail route.  Source network not found\" />\n",
+        "comments": "",
+        "x": 1127.8044509887695,
+        "y": 779.999875664711,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "25abf517.021e9a",
+        "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 assigning contrail route.  Source network not found\" />\n",
+        "comments": "",
+        "x": 1851.9376831054688,
+        "y": 818.6665213108063,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "d6797d24.acfca",
+        "type": "comment",
+        "name": "Find tenant id/cloud region from source network",
+        "info": "",
+        "comments": "",
+        "x": 659.4042739868164,
+        "y": 784.333109498024,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "a1094de3.d998d",
+        "type": "switchNode",
+        "name": "switch networkid found",
+        "xml": "<switch test=\"`$service-data.networks.network[$nidx].network-id == $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2406.0037536621094,
+        "y": 853.0000774860382,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "2fc2f6cc.52811a",
+                "bd8b1543.d5feb8"
+            ]
+        ]
+    },
+    {
+        "id": "cf465404.bca108",
+        "type": "set",
+        "name": "set tmp vals",
+        "xml": "<set>\n<parameter name='tmp.ar.tenant-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.tenant`' />\n<parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />\n\n\n",
+        "comments": "",
+        "x": 2945.670425415039,
+        "y": 843.0000545978546,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "18df3dec.3762c2",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2755.736867904663,
+        "y": 856.0000660419464,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "cf465404.bca108",
+                "a77873a9.58a3d"
+            ]
+        ]
+    },
+    {
+        "id": "2fc2f6cc.52811a",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2600.2702445983887,
+        "y": 855.9999287128448,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "18df3dec.3762c2"
+            ]
+        ]
+    },
+    {
+        "id": "bd8b1543.d5feb8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2601.069854736328,
+        "y": 893.9999315738678,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "12777d15.58b793"
+            ]
+        ]
+    },
+    {
+        "id": "12777d15.58b793",
+        "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 assigning contrail route.  Source network not found\" />\n",
+        "comments": "",
+        "x": 2779.070011138916,
+        "y": 893.9999973773956,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "a77873a9.58a3d",
+        "type": "get-resource",
+        "name": "get-resource tenant",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"tenant\" \n\t\tkey=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND \n\t\t     cloud-region.cloud-region-id = $tmp.ar.cloud-region-id AND\n\t\t     tenant.tenant-id = $tmp.ar.tenant-id\"\n        pfx='aai.tenant' local-only='false' >\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2968.1369705200195,
+        "y": 878.9997503757477,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "d053a66e.8a2958",
+                "f2ee2fa9.2bf8d",
+                "d188bc90.da64f"
+            ]
+        ]
+    },
+    {
+        "id": "d053a66e.8a2958",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3188.998359680176,
+        "y": 871.6108648777008,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "fb3363cd.b2365"
+            ]
+        ]
+    },
+    {
+        "id": "f2ee2fa9.2bf8d",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3184.331386566162,
+        "y": 904.9441788196564,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "fb3363cd.b2365"
+            ]
+        ]
+    },
+    {
+        "id": "fb3363cd.b2365",
+        "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=\"Tenant not found in AAI\" />\n\n",
+        "comments": "",
+        "x": 3358.507308959961,
+        "y": 892.9997379779816,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "d188bc90.da64f",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3184.507392883301,
+        "y": 840.0368292331696,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "a5dbc0a1.7ca4b"
+            ]
+        ]
+    },
+    {
+        "id": "a5dbc0a1.7ca4b",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 3364.507392883301,
+        "y": 838.0368292331696,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "3eca1514.f49d8a"
+            ]
+        ]
+    },
+    {
+        "id": "3eca1514.f49d8a",
+        "type": "set",
+        "name": "set tenant name",
+        "xml": "<set>\n<parameter name='tmp.ar.tenant-name' value='`$aai.tenant.tenant-name`' />\n\n\n",
+        "comments": "",
+        "x": 3551.4704971313477,
+        "y": 835.6665709018707,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "78389040.50c04",
+        "type": "update",
+        "name": "update AAI allotted-resource",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-data.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"operational-status\" value=\"out-of-service-path\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 568.4326171875,
+        "y": 1801.274008154869,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "ee05ecac.f85f4",
+                "76238400.885e4c"
+            ]
+        ]
+    },
+    {
+        "id": "ee05ecac.f85f4",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 824.1945114135742,
+        "y": 1778.512227654457,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "9a72cd34.8de84"
+            ]
+        ]
+    },
+    {
+        "id": "76238400.885e4c",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 829.5039405822754,
+        "y": 1814.0836454629898,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "9a72cd34.8de84"
+            ]
+        ]
+    },
+    {
+        "id": "9a72cd34.8de84",
+        "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=\"AAI failed\" />\n",
+        "comments": "",
+        "x": 1039.2897262573242,
+        "y": 1780.1312719583511,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "3ebda3d1.60c63c",
+        "type": "comment",
+        "name": "Update AAI AR",
+        "info": "",
+        "comments": "",
+        "x": 524.6326179504395,
+        "y": 1770.416758980602,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "a4c8be00.baf52",
+        "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=\"`'Failed to create policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `\" />\n",
+        "comments": "",
+        "x": 1059.385009765625,
+        "y": 1345.9762045145035,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "96e58f96.3e0dc",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.contrail-route-topology-operation-create\"/>\n<parameter name='field3' value='network-policy' />\n<parameter name='field4' value='create' />\n<parameter name='field5' value='contrailResp' />\n<parameter name='field6' value='default-domain' />\n<parameter name='field7' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name`' />\n<parameter name='field8' value='`$tmp.ar.tenant-name`' />\n<parameter name='field9' value='`$ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.contrail-applied-service-info.contrail-fqdn`' />\n<parameter name='field10' value='$aai.dest-network.contrail-network-fqdn' />\n<parameter name='field11' value='$aai.src-network.contrail-network-fqdn' />\n<parameter name='field12' value='&lt;&gt;' />\n<parameter name='field13' value='$tmp.ar.cloud-region-id' />\n\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 508.09918212890625,
+        "y": 1315.2619215250015,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f4f87407.7b7138",
+        "type": "not-found",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 904.2896728515625,
+        "y": 895.5955168008804,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "81772977.20deb8"
+            ]
+        ]
+    },
+    {
+        "id": "29d6c655.17265a",
+        "type": "get-resource",
+        "name": "get AnAI - l3-network by network-id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.src-network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 632.9165954589844,
+        "y": 903.1277776956558,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "678eae69.b9714",
+                "f4f87407.7b7138",
+                "5e43af76.092db"
+            ]
+        ]
+    },
+    {
+        "id": "678eae69.b9714",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 897.0117797851562,
+        "y": 930.0801206827164,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "81772977.20deb8"
+            ]
+        ]
+    },
+    {
+        "id": "81772977.20deb8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`\" />",
+        "comments": "",
+        "x": 1049.1227416992188,
+        "y": 926.3023496866226,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "5e43af76.092db",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 902.2897338867188,
+        "y": 961.5955168008804,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "aa41ec1c.71542"
+            ]
+        ]
+    },
+    {
+        "id": "aa41ec1c.71542",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1054.956298828125,
+        "y": 959.9288450479507,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ffbc6d1d.bd87f",
+        "type": "comment",
+        "name": "GET source network from AAI",
+        "info": "",
+        "comments": "",
+        "x": 605.7182312011719,
+        "y": 871.3097540140152,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "a32f696b.7ff868",
+        "type": "not-found",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 908.5753784179688,
+        "y": 1002.7382913827896,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "8a6cd51f.44caa8"
+            ]
+        ]
+    },
+    {
+        "id": "808bf1b8.60d31",
+        "type": "get-resource",
+        "name": "get AnAI - l3-network by network-id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.dest-network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 637.2023162841797,
+        "y": 1013.6038881540298,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "9ad6ea77.f2aad8",
+                "a32f696b.7ff868",
+                "4dcfd8c5.d1f5f8"
+            ]
+        ]
+    },
+    {
+        "id": "9ad6ea77.f2aad8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 901.2974853515625,
+        "y": 1037.2228952646255,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "8a6cd51f.44caa8"
+            ]
+        ]
+    },
+    {
+        "id": "8a6cd51f.44caa8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`\" />",
+        "comments": "",
+        "x": 1053.408447265625,
+        "y": 1033.4451242685318,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "4dcfd8c5.d1f5f8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 901.575439453125,
+        "y": 1073.7382627725601,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "532eb226.00307c"
+            ]
+        ]
+    },
+    {
+        "id": "532eb226.00307c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1054.2420043945312,
+        "y": 1072.0715910196304,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f7c80e16.0bab8",
+        "type": "comment",
+        "name": "GET dest network from AAI",
+        "info": "",
+        "comments": "",
+        "x": 610.0039367675781,
+        "y": 978.4525285959244,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "2a90d119.3eaf9e",
+        "type": "set",
+        "name": "set temp contrail fqdn for input to contrail",
+        "xml": "<set>\n<parameter name='aai.src-network.contrail-network-fqdn' value='`tmpsourcecontrailfqdn`' />\n<parameter name='aai.dest-network.contrail-network-fqdn' value='`tmpdestinationcontrailfqdn`' />",
+        "comments": "",
+        "x": 643.0039710998535,
+        "y": 1160.5954176187515,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "1c40ddfb.ac3da2",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1053.5753631591797,
+        "y": 1314.309542298317,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7d144ee0.ee98f",
+        "type": "set",
+        "name": "set ar-assignments",
+        "xml": "<set>\n<parameter name='ar-assignments.' value=\"`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`\" />\n\n\n\n",
+        "comments": "",
+        "x": 584.2896690368652,
+        "y": 642.2381588220596,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "65bdabe8.142354",
+        "type": "set",
+        "name": "set ar-assignments",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.' value='`$ar-assignments.`' />\n\n\n\n",
+        "comments": "",
+        "x": 531.4326019287109,
+        "y": 1861.2740770578384,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "483287bc.c27a28",
+        "type": "switchNode",
+        "name": "switch contrailResp.resp-code",
+        "xml": "<switch test='`$contrailResp.resp-code`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 586.611083984375,
+        "y": 1410.9167677164078,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "5959bd36.12d064",
+                "f8777e5b.220e7"
+            ]
+        ]
+    },
+    {
+        "id": "5959bd36.12d064",
+        "type": "outcome",
+        "name": "outcome 0",
+        "xml": "<outcome value='0'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 863.7540863752365,
+        "y": 1410.9168983697891,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "ba0eee80.bc27f"
+            ]
+        ]
+    },
+    {
+        "id": "f8777e5b.220e7",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 843.7539978027344,
+        "y": 1438.4168020486832,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "f5b88fb1.136b5"
+            ]
+        ]
+    },
+    {
+        "id": "f5b88fb1.136b5",
+        "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=\"`'Failed to create policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `\" />\n",
+        "comments": "",
+        "x": 1016.2540969848633,
+        "y": 1440.9169002771378,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "ba0eee80.bc27f",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1008.7539978027344,
+        "y": 1410.9168001413345,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6e33a9b5.9b7438",
+        "type": "comment",
+        "name": "Dummy values for dev/dev",
+        "info": "",
+        "comments": "",
+        "x": 590.0039176940918,
+        "y": 1123.666897892952,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "cf49ae05.2f29",
+        "type": "call",
+        "name": "call policy-manager-create-policy",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='policy-manager-create-policy' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 605.1466903686523,
+        "y": 1545.0951210260391,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "eefb278d.613d48",
+                "526e4a66.638b34"
+            ]
+        ]
+    },
+    {
+        "id": "eefb278d.613d48",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 840.7260513305664,
+        "y": 1542.4370886087418,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "f9ba847c.ff2c28"
+            ]
+        ]
+    },
+    {
+        "id": "526e4a66.638b34",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 846.718318939209,
+        "y": 1583.2381640672684,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "7657e814.bd32b8"
+            ]
+        ]
+    },
+    {
+        "id": "7657e814.bd32b8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 999.3848838806152,
+        "y": 1581.5714923143387,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "bc667334.be1b7",
+        "type": "execute",
+        "name": "execute Contrail API delete network policy",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='delete' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1293.7182312011719,
+        "y": 1540.809497475624,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "f2a919a7.bd34a8",
+                "7bf7079a.433c68"
+            ]
+        ]
+    },
+    {
+        "id": "f2a919a7.bd34a8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1570.813377380371,
+        "y": 1510.3803775645792,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "f667916c.8d17b"
+            ]
+        ]
+    },
+    {
+        "id": "7bf7079a.433c68",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1568.9086990356445,
+        "y": 1543.3803173303604,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "bae7bbac.394ad8"
+            ]
+        ]
+    },
+    {
+        "id": "bae7bbac.394ad8",
+        "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=\"`'Failed to create Policy in Policy Mgr.  Rollback failed to delete policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `\" />\n",
+        "comments": "",
+        "x": 1728.8135070800781,
+        "y": 1540.7137647867203,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    },
+    {
+        "id": "f667916c.8d17b",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1723.0038604736328,
+        "y": 1511.0471025705338,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f9ba847c.ff2c28",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 999.4324951171875,
+        "y": 1536.5238481760025,
+        "z": "fbc4119e.39c3b",
+        "wires": [
+            [
+                "bc667334.be1b7",
+                "1ae7d1e2.6be47e"
+            ]
+        ]
+    },
+    {
+        "id": "1ae7d1e2.6be47e",
+        "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=\"`'Failed to create policy in PolicyMgr. '+ $error-message  + 'Contrail network policy rolled back.'`\" />\n",
+        "comments": "",
+        "x": 1198.0038833618164,
+        "y": 1580.8096100091934,
+        "z": "fbc4119e.39c3b",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-deactivate.json
new file mode 100755
index 0000000..2143d86
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-deactivate.json
@@ -0,0 +1,1454 @@
+[
+    {
+        "id": "b815bf6b.f806",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 149.00390625,
+        "y": 66.99999904632568,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "e3536c87.13bbe"
+            ]
+        ]
+    },
+    {
+        "id": "e3536c87.13bbe",
+        "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": 295.2419891357422,
+        "y": 141.952392578125,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "32e23dff.190972"
+            ]
+        ]
+    },
+    {
+        "id": "32e23dff.190972",
+        "type": "method",
+        "name": "contrail-route-topology-operation-deactivate",
+        "xml": "<method rpc='contrail-route-topology-operation-deactivate' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 375.1587562561035,
+        "y": 211.1904411315918,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "c4f5eee9.6967e"
+            ]
+        ]
+    },
+    {
+        "id": "c4f5eee9.6967e",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 283.4800910949707,
+        "y": 354.5237832069397,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "a3036c42.f5314",
+                "86e70516.39d8f8",
+                "600fb8be.00cd98",
+                "e41af924.acac48",
+                "ec5ab69c.960248",
+                "a3185364.e3557",
+                "c2196657.5c5568",
+                "c89d538f.9aa9d",
+                "485d44b.3f22bbc",
+                "df7e9878.bf2438",
+                "cadfd5a3.bfaee8",
+                "58da4328.00307c",
+                "7b764332.cfbc8c",
+                "e7206768.0e4798",
+                "bcbcae69.e41a6",
+                "ac156492.2e6298",
+                "a041f2a.fea5e1",
+                "25a06dee.1913e2",
+                "316bd14d.1e3f7e",
+                "7f032d3b.5762a4",
+                "735dd19a.3e195",
+                "61e59930.9891c8"
+            ]
+        ]
+    },
+    {
+        "id": "86e70516.39d8f8",
+        "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": 546.003978729248,
+        "y": 2280.548007965088,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "a3036c42.f5314",
+        "type": "set",
+        "name": "set output to api handler",
+        "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='contrail-route-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $contrail-route-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+        "comments": "",
+        "x": 574.757884979248,
+        "y": 2243.003801345825,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "df7e9878.bf2438",
+        "type": "set",
+        "name": "set allotted-resource-oper-status",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+        "comments": "",
+        "x": 609.7580490112305,
+        "y": 2103.717960357666,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "e41af924.acac48",
+        "type": "set",
+        "name": "set tmp.ar.self-link",
+        "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/contrail-route-topology/'` \" />\n\n",
+        "comments": "",
+        "x": 545.7419624328613,
+        "y": 328.3333206176758,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "600fb8be.00cd98",
+        "type": "set",
+        "name": "set tmp.ar.allotted-resource-id,etc",
+        "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.ar.sz-vnf-id' value='`$contrail-route-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />\n\n\n",
+        "comments": "",
+        "x": 593.0012245178223,
+        "y": 294.592586517334,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "ec5ab69c.960248",
+        "type": "execute",
+        "name": "execute Properties - pull properties file",
+        "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": 615.9973220825195,
+        "y": 364.2315492630005,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c2196657.5c5568",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 622.5226516723633,
+        "y": 532.4595079421997,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "c4a17fbb.5689e",
+                "18d8cd61.df5a73"
+            ]
+        ]
+    },
+    {
+        "id": "a3185364.e3557",
+        "type": "execute",
+        "name": "generate allotted-resource url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.cr-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 580.0687522888184,
+        "y": 424.0172243118286,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c4a17fbb.5689e",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 867.8187561035156,
+        "y": 533.2673215866089,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "cac5050.acefef8"
+            ]
+        ]
+    },
+    {
+        "id": "c89d538f.9aa9d",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 637.8665161132812,
+        "y": 2177.7674798965454,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "143ba41d.04eb0c",
+                "b003cfcf.73519",
+                "cffa818d.e26b9"
+            ]
+        ]
+    },
+    {
+        "id": "143ba41d.04eb0c",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 908.1745338439941,
+        "y": 2230.76568069309,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "f851a353.e9aa2"
+            ]
+        ]
+    },
+    {
+        "id": "b003cfcf.73519",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 899.1745834350586,
+        "y": 2199.2657064422965,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "f851a353.e9aa2"
+            ]
+        ]
+    },
+    {
+        "id": "cffa818d.e26b9",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 902.9246215820312,
+        "y": 2169.622811317444,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "94b3659a.a43058"
+            ]
+        ]
+    },
+    {
+        "id": "f851a353.e9aa2",
+        "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 updating md-sal for contrail-route-allotted-resource\" />\n",
+        "comments": "",
+        "x": 1068.9246215820312,
+        "y": 2200.0157302841544,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "cac5050.acefef8",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1036.818759918213,
+        "y": 531.76722240448,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "4b3e1791.ede978"
+            ]
+        ]
+    },
+    {
+        "id": "4b3e1791.ede978",
+        "type": "switchNode",
+        "name": "switch cr length",
+        "xml": "<switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1247.6760025024414,
+        "y": 531.3863515853882,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "308a03ed.e1727c",
+                "47b8a1d5.c5ec"
+            ]
+        ]
+    },
+    {
+        "id": "308a03ed.e1727c",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1437.0093078613281,
+        "y": 531.3863096237183,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "c91abe4f.2358d"
+            ]
+        ]
+    },
+    {
+        "id": "e2e2a405.0fa288",
+        "type": "set",
+        "name": "set ar from get",
+        "xml": "<set>\n<parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />\n",
+        "comments": "",
+        "x": 1910.2001266479492,
+        "y": 494.62452507019043,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "c91abe4f.2358d",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic='true'>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1621.533197402954,
+        "y": 528.2911434173584,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "e2e2a405.0fa288",
+                "e450a5fc.4f5528",
+                "a38edad2.503f08"
+            ]
+        ]
+    },
+    {
+        "id": "e450a5fc.4f5528",
+        "type": "set",
+        "name": "set oper-status",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
+        "comments": "",
+        "x": 1918.2000541687012,
+        "y": 558.7196683883667,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "e509658b.31b9c8",
+        "type": "comment",
+        "name": "GET security-zone-allotted-resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 635.8186988830566,
+        "y": 499.7672109603882,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "63c12cc3.289684",
+        "type": "switchNode",
+        "name": "switch order-status",
+        "xml": "<switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1926.199909210205,
+        "y": 525.6244802474976,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "9249324b.98c72",
+                "34ad81d1.e734ae"
+            ]
+        ]
+    },
+    {
+        "id": "9249324b.98c72",
+        "type": "outcome",
+        "name": "outcome Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2161.8475799560547,
+        "y": 540.0531892776489,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "7a2c59b1.1ae928"
+            ]
+        ]
+    },
+    {
+        "id": "7a2c59b1.1ae928",
+        "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\" \n    value=\"`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`\" />\n",
+        "comments": "",
+        "x": 2402.466329574585,
+        "y": 542.9577789306641,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "58da4328.00307c",
+        "type": "set",
+        "name": "unset ar-assignments.vlan-tag",
+        "xml": "<set>\n<parameter name='ar-assignments.vlan-tag' value=\"\" />\n\n\n\n",
+        "comments": "",
+        "x": 583.866325378418,
+        "y": 1641.053183555603,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "a38edad2.503f08",
+        "type": "set",
+        "name": "save backup copy of mdsal-ar for rollback",
+        "xml": "<set>\n<parameter name='bk-cr-ar' value='$mdsal-ar.' />\n",
+        "comments": "",
+        "x": 1998.0571784973145,
+        "y": 461.4340171813965,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "a821712b.17818",
+        "type": "comment",
+        "name": "Create urls for restapi",
+        "info": "",
+        "comments": "",
+        "x": 550.9615592956543,
+        "y": 393.62435150146484,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "94b3659a.a43058",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1044.5805892944336,
+        "y": 2165.814980506897,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "485d44b.3f22bbc",
+        "type": "execute",
+        "name": "execute getTime",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 560.5806350708008,
+        "y": 2070.1481189727783,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "67e85008.65268",
+        "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=\"Error: Contrail Route not found\" />\n    \n",
+        "comments": "",
+        "x": 1620.670904159546,
+        "y": 644.333384513855,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "18d8cd61.df5a73",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 859.6705589294434,
+        "y": 568.3334064483643,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "91ff2ac7.39d1e8"
+            ]
+        ]
+    },
+    {
+        "id": "91ff2ac7.39d1e8",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1039.670509338379,
+        "y": 568.9999570846558,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "67e85008.65268"
+            ]
+        ]
+    },
+    {
+        "id": "cadfd5a3.bfaee8",
+        "type": "set",
+        "name": "set ar data",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='ar.allotted-resource-status.action' value=\"`$contrail-route-topology-operation-input.request-information.request-action` \" />\n<parameter name='ar.allotted-resource-status.rpc-name' value=\"contrail-route-topology-operation\" />\n<parameter name='ar.allotted-resource-status.rpc-action' value=\"`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$contrail-route-topology-operation-input.request-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$contrail-route-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$contrail-route-topology-operation-input.service-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$contrail-route-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.` \" />\n",
+        "comments": "",
+        "x": 531.670524597168,
+        "y": 564.6666212081909,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "47b8a1d5.c5ec",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1425.3372611999512,
+        "y": 568.666669845581,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "67e85008.65268"
+            ]
+        ]
+    },
+    {
+        "id": "54b8535a.8e269c",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2386.337375640869,
+        "y": 508.6666965484619,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "616e5aa8.bace14",
+        "type": "comment",
+        "name": "Call contrail api here",
+        "info": "",
+        "comments": "",
+        "x": 561.8610305786133,
+        "y": 631.2857141494751,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "2c80a456.b1f4cc",
+        "type": "comment",
+        "name": "Need to rollback aai here",
+        "info": "",
+        "comments": "",
+        "x": 1295.0038833618164,
+        "y": 2199.3333253860474,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "46f742ec.a9b84c",
+        "type": "comment",
+        "name": "Create  network policy in AAI",
+        "info": "",
+        "comments": "",
+        "x": 594.337158203125,
+        "y": 2019.333212852478,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "34ad81d1.e734ae",
+        "type": "outcome",
+        "name": "outcome Active",
+        "xml": "<outcome value='Active'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2176.6092224121094,
+        "y": 508.2912006378174,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "54b8535a.8e269c"
+            ]
+        ]
+    },
+    {
+        "id": "7b764332.cfbc8c",
+        "type": "update",
+        "name": "update AAI allotted-resource",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-data.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"operational-status\" value=\"out-of-service-path\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 582.3372192382812,
+        "y": 1797.6666612625122,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "90496b8f.cd3e48",
+                "17738c07.d91474"
+            ]
+        ]
+    },
+    {
+        "id": "90496b8f.cd3e48",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 838.0991516113281,
+        "y": 1774.9048357009888,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "61ddf82d.16ddf8"
+            ]
+        ]
+    },
+    {
+        "id": "17738c07.d91474",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 843.4085807800293,
+        "y": 1810.4762535095215,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "61ddf82d.16ddf8"
+            ]
+        ]
+    },
+    {
+        "id": "61ddf82d.16ddf8",
+        "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=\"AAI failed\" />\n",
+        "comments": "",
+        "x": 1053.1943664550781,
+        "y": 1776.5238800048828,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "f9c0d920.6a3758",
+        "type": "comment",
+        "name": "Update AAI AR",
+        "info": "",
+        "comments": "",
+        "x": 545.6800765991211,
+        "y": 1761.0951051712036,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "e7206768.0e4798",
+        "type": "set",
+        "name": "set ar-assignments",
+        "xml": "<set>\n<parameter name='ar-assignments.' value=\"`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`\" />\n\n\n\n",
+        "comments": "",
+        "x": 560.00390625,
+        "y": 596.9999990463257,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "2ef8c27b.c719fe",
+        "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=\"Error: Contrail Route not found\" />\n    \n",
+        "comments": "",
+        "x": 1606.575590133667,
+        "y": 743.6666250228882,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "895fb59c.cb29c8",
+        "type": "not-found",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 860.1942520141602,
+        "y": 897.0476351976395,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "8e996274.f6a77"
+            ]
+        ]
+    },
+    {
+        "id": "ac156492.2e6298",
+        "type": "get-resource",
+        "name": "get AnAI - l3-network by network-id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.src-network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 583.3925933837891,
+        "y": 908.2941522598267,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "c50e7042.f8b7",
+                "895fb59c.cb29c8",
+                "8bf1acb1.85f35"
+            ]
+        ]
+    },
+    {
+        "id": "c50e7042.f8b7",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 852.9163589477539,
+        "y": 931.5322390794754,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "8e996274.f6a77"
+            ]
+        ]
+    },
+    {
+        "id": "8e996274.f6a77",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`\" />",
+        "comments": "",
+        "x": 1005.0273208618164,
+        "y": 927.7544680833817,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "8bf1acb1.85f35",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 858.1943130493164,
+        "y": 963.0476351976395,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "6b62a765.1e4e88"
+            ]
+        ]
+    },
+    {
+        "id": "6b62a765.1e4e88",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1010.8608779907227,
+        "y": 961.3809634447098,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b5253c8d.7010d",
+        "type": "comment",
+        "name": "GET source network from AAI",
+        "info": "",
+        "comments": "",
+        "x": 561.6228103637695,
+        "y": 877.0476293563843,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "d8c05d1d.86ab3",
+        "type": "not-found",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 877.9085922241211,
+        "y": 1160.7619490623474,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "b6770bb6.5606e8"
+            ]
+        ]
+    },
+    {
+        "id": "7f032d3b.5762a4",
+        "type": "get-resource",
+        "name": "get AnAI - l3-network by network-id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.dest-network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 606.535514831543,
+        "y": 1168.2942099571228,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "ceac0fa8.21cc",
+                "d8c05d1d.86ab3",
+                "db0f5df8.46428"
+            ]
+        ]
+    },
+    {
+        "id": "ceac0fa8.21cc",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 870.6306991577148,
+        "y": 1195.2465529441833,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "b6770bb6.5606e8"
+            ]
+        ]
+    },
+    {
+        "id": "b6770bb6.5606e8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`\" />",
+        "comments": "",
+        "x": 1022.7416610717773,
+        "y": 1191.4687819480896,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "db0f5df8.46428",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 880.4801025390625,
+        "y": 1229.6190176010132,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "7a8602cf.c3ed2c"
+            ]
+        ]
+    },
+    {
+        "id": "7a8602cf.c3ed2c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1033.1466674804688,
+        "y": 1227.9523458480835,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "dc7abd78.211da",
+        "type": "comment",
+        "name": "GET dest network from AAI",
+        "info": "",
+        "comments": "",
+        "x": 579.3371353149414,
+        "y": 1136.4762020111084,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "a041f2a.fea5e1",
+        "type": "set",
+        "name": "set policy fq-name",
+        "xml": "<set>\n<parameter name='tmp.fq-name' value=\"`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name` \" />\n",
+        "comments": "",
+        "x": 532.3372192382812,
+        "y": 954.190390586853,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "25a06dee.1913e2",
+        "type": "set",
+        "name": "set cloud-region-id for input to contrail",
+        "xml": "<set>\n<parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />\n",
+        "comments": "",
+        "x": 594.331901550293,
+        "y": 988.2802381515503,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "316bd14d.1e3f7e",
+        "type": "execute",
+        "name": "execute Contrail API apply network policy to source network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='remove' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n<parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.contrail-fq-name`' />\n<parameter name='contrail-virtual-network-id' value='`$aai.src-network.contrail-network-fqdn`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 670.5224227905273,
+        "y": 1061.280436038971,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "c0fb54dc.a8e1a8",
+                "4b7ba790.40c118"
+            ]
+        ]
+    },
+    {
+        "id": "c0fb54dc.a8e1a8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1026.1889190673828,
+        "y": 1061.7086629867554,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "130dd766.3e4979"
+            ]
+        ]
+    },
+    {
+        "id": "4b7ba790.40c118",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1024.2842407226562,
+        "y": 1094.7086027525365,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "b56db03.6e1275"
+            ]
+        ]
+    },
+    {
+        "id": "b56db03.6e1275",
+        "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=\"Failed to remove policy in Contrail from source network\" />\n",
+        "comments": "",
+        "x": 1184.1890106201172,
+        "y": 1094.0419692993164,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "130dd766.3e4979",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1178.3794021606445,
+        "y": 1062.3753879927099,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "bcbcae69.e41a6",
+        "type": "switchNode",
+        "name": "switch source-network.network-id",
+        "xml": "<switch test='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 586.9085922241211,
+        "y": 833.3332395553589,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "a8cf0dfe.c0676",
+                "b0bcf579.d52d48"
+            ]
+        ]
+    },
+    {
+        "id": "a8cf0dfe.c0676",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 942.9088096618652,
+        "y": 831.9996190071106,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "e4489b27.0ab3d8"
+            ]
+        ]
+    },
+    {
+        "id": "b0bcf579.d52d48",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 938.575626373291,
+        "y": 794.9994192123413,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "e8402b5f.bacaf8"
+            ]
+        ]
+    },
+    {
+        "id": "4a3cc27f.d1207c",
+        "type": "switchNode",
+        "name": "switch service-data.networks.network_length",
+        "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1334.734245300293,
+        "y": 832.0154461860657,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "ced5ea6e.50d148",
+                "4e2e2769.bc7988"
+            ]
+        ]
+    },
+    {
+        "id": "ced5ea6e.50d148",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1623.734245300293,
+        "y": 834.0155072212219,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "7df1b688.54eb98"
+            ]
+        ]
+    },
+    {
+        "id": "4e2e2769.bc7988",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1603.734245300293,
+        "y": 869.0155072212219,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "7f100db9.54a9d4"
+            ]
+        ]
+    },
+    {
+        "id": "e4489b27.0ab3d8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1077.0200653076172,
+        "y": 832.4440236091614,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "4a3cc27f.d1207c"
+            ]
+        ]
+    },
+    {
+        "id": "e8402b5f.bacaf8",
+        "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 activating contrail route.  Source network not found\" />\n",
+        "comments": "",
+        "x": 1092.7090911865234,
+        "y": 795.6663217544556,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "ea7023cf.b9d96",
+        "type": "comment",
+        "name": "Find tenant id/cloud region from source network",
+        "info": "",
+        "comments": "",
+        "x": 624.3089141845703,
+        "y": 799.9995555877686,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "c37f3483.2bbfa8",
+        "type": "for",
+        "name": "for nidx..service-data.networks.network[]",
+        "xml": "<for index='nidx' start='0' end='`$service-data.networks.network_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2066.9086532592773,
+        "y": 869.3332624435425,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "64560a.8f1f79f8"
+            ]
+        ]
+    },
+    {
+        "id": "7f100db9.54a9d4",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1792.892692565918,
+        "y": 869.4592623710632,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "c37f3483.2bbfa8"
+            ]
+        ]
+    },
+    {
+        "id": "7df1b688.54eb98",
+        "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 activating contrail route.  Source network not found\" />\n",
+        "comments": "",
+        "x": 1805.3973922729492,
+        "y": 833.8888330459595,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "64560a.8f1f79f8",
+        "type": "switchNode",
+        "name": "switch networkid found",
+        "xml": "<switch test=\"`$service-data.networks.network[$nidx].network-id == $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2359.46346282959,
+        "y": 866.2223892211914,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "7342e4d1.67d22c",
+                "a2517fec.05268"
+            ]
+        ]
+    },
+    {
+        "id": "6f43e020.46433",
+        "type": "set",
+        "name": "set cloud region id",
+        "xml": "<set>\n<parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />\n\n\n",
+        "comments": "",
+        "x": 2946.130142211914,
+        "y": 868.2223949432373,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "ba9643b0.6b37d",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2709.1965770721436,
+        "y": 869.2223777770996,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "6f43e020.46433"
+            ]
+        ]
+    },
+    {
+        "id": "7342e4d1.67d22c",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2553.729953765869,
+        "y": 869.222240447998,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "ba9643b0.6b37d"
+            ]
+        ]
+    },
+    {
+        "id": "a2517fec.05268",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2554.5295639038086,
+        "y": 907.222243309021,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "b1867f01.f4838"
+            ]
+        ]
+    },
+    {
+        "id": "b1867f01.f4838",
+        "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 activating contrail route.  Source network not found\" />\n",
+        "comments": "",
+        "x": 2732.5297203063965,
+        "y": 907.2223091125488,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "b3a00b12.59bf18",
+        "type": "comment",
+        "name": "Apply the policy to source network",
+        "info": "",
+        "comments": "",
+        "x": 588.9086074829102,
+        "y": 1029.3332681655884,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "735dd19a.3e195",
+        "type": "execute",
+        "name": "execute Contrail API apply network policy to destination network",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='remove' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n<parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.contrail-fq-name`' />\n<parameter name='contrail-virtual-network-id' value='`$aai.dest-network.contrail-network-fqdn`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 694.9086532592773,
+        "y": 1313.333275794983,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "b28c1bec.d5a608",
+                "7421f45.064d50c"
+            ]
+        ]
+    },
+    {
+        "id": "b28c1bec.d5a608",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1030.5750885009766,
+        "y": 1313.7614665031433,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "f586735b.d7b1f"
+            ]
+        ]
+    },
+    {
+        "id": "7421f45.064d50c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1028.67041015625,
+        "y": 1346.7614062689245,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "3ac5d5d2.c2451a"
+            ]
+        ]
+    },
+    {
+        "id": "3ac5d5d2.c2451a",
+        "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=\"Failed to remove policy in Contrail from dest network\" />\n",
+        "comments": "",
+        "x": 1188.575180053711,
+        "y": 1346.0947728157043,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "f586735b.d7b1f",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1182.7655715942383,
+        "y": 1314.4281915090978,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ad4f0026.b8dda",
+        "type": "comment",
+        "name": "Apply the policy to dest network",
+        "info": "",
+        "comments": "",
+        "x": 593.2947769165039,
+        "y": 1281.3860716819763,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "7882567f.5f5408",
+        "type": "comment",
+        "name": "Update network policy in AAI - relationship to networks",
+        "info": "",
+        "comments": "",
+        "x": 656.9086608886719,
+        "y": 1423.3332471847534,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "61e59930.9891c8",
+        "type": "save",
+        "name": "delete AnAI - network-policy relationship to source/dest network",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"network-policy:relationship-list\" \n\tkey=\"network-policy.network-policy-id = $ar-assignments.contrail-id and related-to = 'l3-network' \" >\n\n\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 694.2855682373047,
+        "y": 1456.4009218215942,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "bef2cc41.3ba14",
+                "82796ef8.27467"
+            ]
+        ]
+    },
+    {
+        "id": "c3e7254d.3fafa8",
+        "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=\"Failed to save network policy in AAI\" />\n",
+        "comments": "",
+        "x": 1242.6310081481934,
+        "y": 1450.6824344396591,
+        "z": "1907a3e8.ef01ec",
+        "wires": []
+    },
+    {
+        "id": "bef2cc41.3ba14",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1014.0596160888672,
+        "y": 1453.6981719732285,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "c3e7254d.3fafa8"
+            ]
+        ]
+    },
+    {
+        "id": "82796ef8.27467",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1017.8691139221191,
+        "y": 1483.174588561058,
+        "z": "1907a3e8.ef01ec",
+        "wires": [
+            [
+                "c3e7254d.3fafa8"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-delete.json
new file mode 100755
index 0000000..d6f4986
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-delete.json
@@ -0,0 +1,1194 @@
+[
+    {
+        "id": "c5061897.ed3c88",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 145.00390625,
+        "y": 81.9999988079071,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "d133c187.d5ddc"
+            ]
+        ]
+    },
+    {
+        "id": "d133c187.d5ddc",
+        "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": 291.2419891357422,
+        "y": 156.95239233970642,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "9bd84115.0bcf5"
+            ]
+        ]
+    },
+    {
+        "id": "9bd84115.0bcf5",
+        "type": "method",
+        "name": "contrail-route-topology-operation-delete",
+        "xml": "<method rpc='contrail-route-topology-operation-delete' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 371.1587562561035,
+        "y": 226.19044089317322,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "987d07ed.d93588"
+            ]
+        ]
+    },
+    {
+        "id": "987d07ed.d93588",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 279.4800910949707,
+        "y": 369.5237829685211,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "7f5b06d6.6b7628",
+                "6625fcb1.258284",
+                "44946444.eccd7c",
+                "b01a42c3.cd422",
+                "60f60d5f.c792f4",
+                "de226263.4e383",
+                "8ae65e99.398e4",
+                "a3f2e35f.ed328",
+                "9cedd0a1.cc44e",
+                "8cf7c911.670d88",
+                "b921706b.d44a",
+                "68581ed1.0cd02",
+                "50310cfe.876cb4",
+                "1c0b3eb4.2a1111",
+                "ac1afd99.47658",
+                "3c6fdb59.f8fd14",
+                "d23354a7.464df8"
+            ]
+        ]
+    },
+    {
+        "id": "6625fcb1.258284",
+        "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": 546.7183418273926,
+        "y": 1561.5481803417206,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "7f5b06d6.6b7628",
+        "type": "set",
+        "name": "set output to api handler",
+        "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='contrail-route-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $contrail-route-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+        "comments": "",
+        "x": 575.4722480773926,
+        "y": 1524.0039737224579,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "8cf7c911.670d88",
+        "type": "set",
+        "name": "set allotted-resource-oper-status",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+        "comments": "",
+        "x": 610.4724044799805,
+        "y": 1403.0514628887177,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "b01a42c3.cd422",
+        "type": "set",
+        "name": "set tmp.ar.self-link",
+        "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/contrail-route-topology/'` \" />\n\n",
+        "comments": "",
+        "x": 541.7419624328613,
+        "y": 343.3333203792572,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "44946444.eccd7c",
+        "type": "set",
+        "name": "set tmp.ar.allotted-resource-id,etc",
+        "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.ar.sz-vnf-id' value='`$contrail-route-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />\n\n\n",
+        "comments": "",
+        "x": 589.0012245178223,
+        "y": 309.5925862789154,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "60f60d5f.c792f4",
+        "type": "execute",
+        "name": "execute Properties - pull properties file",
+        "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": 611.9973220825195,
+        "y": 379.2315490245819,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8ae65e99.398e4",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 618.5226516723633,
+        "y": 547.4595077037811,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "5450effe.e31e8",
+                "b254beba.55dd2"
+            ]
+        ]
+    },
+    {
+        "id": "de226263.4e383",
+        "type": "execute",
+        "name": "generate allotted-resource url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.cr-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 576.0687522888184,
+        "y": 439.01722407341003,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5450effe.e31e8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 863.8187561035156,
+        "y": 548.2673213481903,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "f85b6040.a71da"
+            ]
+        ]
+    },
+    {
+        "id": "a3f2e35f.ed328",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 638.5808792114258,
+        "y": 1477.1009557247162,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "f9a00937.0d9618",
+                "730f992c.7587c8",
+                "f3c956c8.bd3aa8"
+            ]
+        ]
+    },
+    {
+        "id": "f9a00937.0d9618",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 908.8888969421387,
+        "y": 1530.0991565212607,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "88fe6f2.744949"
+            ]
+        ]
+    },
+    {
+        "id": "730f992c.7587c8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 899.8889465332031,
+        "y": 1498.5991822704673,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "88fe6f2.744949"
+            ]
+        ]
+    },
+    {
+        "id": "f3c956c8.bd3aa8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 903.6389846801758,
+        "y": 1468.9562871456146,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "871a277.93ca1d8"
+            ]
+        ]
+    },
+    {
+        "id": "88fe6f2.744949",
+        "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 updating md-sal for contrail-route-allotted-resource\" />\n",
+        "comments": "",
+        "x": 1069.6389846801758,
+        "y": 1499.3492061123252,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "f85b6040.a71da",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1032.818759918213,
+        "y": 546.7672221660614,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "5e224962.ffe4e8"
+            ]
+        ]
+    },
+    {
+        "id": "5e224962.ffe4e8",
+        "type": "switchNode",
+        "name": "switch cr length",
+        "xml": "<switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1243.6760025024414,
+        "y": 546.3863513469696,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "65011a08.04a8a4",
+                "7554338.6b121cc"
+            ]
+        ]
+    },
+    {
+        "id": "65011a08.04a8a4",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1433.0093078613281,
+        "y": 546.3863093852997,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "28009d40.8ff902"
+            ]
+        ]
+    },
+    {
+        "id": "73af2ecc.73814",
+        "type": "set",
+        "name": "set ar from get",
+        "xml": "<set>\n<parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />\n",
+        "comments": "",
+        "x": 1906.2001266479492,
+        "y": 509.62452483177185,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "28009d40.8ff902",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic='true'>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1617.533197402954,
+        "y": 543.2911431789398,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "73af2ecc.73814",
+                "444240e9.62dc7",
+                "b6b50cbe.e565d",
+                "a873ed89.11c27"
+            ]
+        ]
+    },
+    {
+        "id": "444240e9.62dc7",
+        "type": "set",
+        "name": "set oper-status",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
+        "comments": "",
+        "x": 1914.2000541687012,
+        "y": 573.7196681499481,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "a55a5912.caf608",
+        "type": "comment",
+        "name": "GET security-zone-allotted-resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 631.8186988830566,
+        "y": 514.7672107219696,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "a873ed89.11c27",
+        "type": "switchNode",
+        "name": "switch order-status",
+        "xml": "<switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1922.199909210205,
+        "y": 540.624480009079,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "8b3ee0f.ac5862",
+                "baabeb4c.f12f78"
+            ]
+        ]
+    },
+    {
+        "id": "8b3ee0f.ac5862",
+        "type": "outcome",
+        "name": "outcome PendingDelete",
+        "xml": "<outcome value='PendingDelete'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2135.4664611816406,
+        "y": 523.2911956310272,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "32a3480b.e12e28"
+            ]
+        ]
+    },
+    {
+        "id": "baabeb4c.f12f78",
+        "type": "outcome",
+        "name": "outcome Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2157.8475799560547,
+        "y": 555.0531890392303,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "155a1c4d.6f5b24"
+            ]
+        ]
+    },
+    {
+        "id": "155a1c4d.6f5b24",
+        "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\" \n    value=\"`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`\" />\n",
+        "comments": "",
+        "x": 2398.466329574585,
+        "y": 557.9577786922455,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "b6b50cbe.e565d",
+        "type": "set",
+        "name": "save backup copy of mdsal-ar for rollback",
+        "xml": "<set>\n<parameter name='bk-cr-ar' value='$mdsal-ar.' />\n",
+        "comments": "",
+        "x": 1994.0571784973145,
+        "y": 476.4340169429779,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "926c38.d1cbf3c8",
+        "type": "comment",
+        "name": "Create urls for restapi",
+        "info": "",
+        "comments": "",
+        "x": 546.9615592956543,
+        "y": 408.62435126304626,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "871a277.93ca1d8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1045.2949523925781,
+        "y": 1465.1484563350677,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9cedd0a1.cc44e",
+        "type": "execute",
+        "name": "execute getTime",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 561.2949981689453,
+        "y": 1369.481594800949,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d7b00e7e.19998",
+        "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=\"Error: Contrail Route not found\" />\n    \n",
+        "comments": "",
+        "x": 1616.670904159546,
+        "y": 659.3333842754364,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "b254beba.55dd2",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 855.6705589294434,
+        "y": 583.3334062099457,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "1e7432bc.b4681d"
+            ]
+        ]
+    },
+    {
+        "id": "1e7432bc.b4681d",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1035.670509338379,
+        "y": 583.9999568462372,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "d7b00e7e.19998"
+            ]
+        ]
+    },
+    {
+        "id": "b921706b.d44a",
+        "type": "set",
+        "name": "set ar data",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='ar.allotted-resource-status.action' value=\"`$contrail-route-topology-operation-input.request-information.request-action` \" />\n<parameter name='ar.allotted-resource-status.rpc-name' value=\"contrail-route-topology-operation\" />\n<parameter name='ar.allotted-resource-status.rpc-action' value=\"`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$contrail-route-topology-operation-input.request-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$contrail-route-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$contrail-route-topology-operation-input.service-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$contrail-route-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.` \" />\n",
+        "comments": "",
+        "x": 525.6704864501953,
+        "y": 577.380893945694,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "7554338.6b121cc",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1421.3372611999512,
+        "y": 583.6666696071625,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "d7b00e7e.19998"
+            ]
+        ]
+    },
+    {
+        "id": "32a3480b.e12e28",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2382.337375640869,
+        "y": 523.6666963100433,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d3399ea0.e3d6b",
+        "type": "comment",
+        "name": "Need to rollback aai here",
+        "info": "",
+        "comments": "",
+        "x": 1295.718246459961,
+        "y": 1498.666801214218,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "e190ac80.23028",
+        "type": "comment",
+        "name": "Create  network policy in AAI",
+        "info": "",
+        "comments": "",
+        "x": 595.0515213012695,
+        "y": 1318.6666886806488,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "68581ed1.0cd02",
+        "type": "update",
+        "name": "update AAI allotted-resource",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-data.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"operational-status\" value=\"null\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 588.7181777954102,
+        "y": 1256.6667726039886,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "d5f2f899.1e05c8",
+                "fb1878e6.e35ec8"
+            ]
+        ]
+    },
+    {
+        "id": "d5f2f899.1e05c8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 844.480110168457,
+        "y": 1233.9049470424652,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "be1256d6.02f548"
+            ]
+        ]
+    },
+    {
+        "id": "fb1878e6.e35ec8",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 849.7895393371582,
+        "y": 1269.476364850998,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "be1256d6.02f548"
+            ]
+        ]
+    },
+    {
+        "id": "be1256d6.02f548",
+        "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=\"AAI failed\" />\n",
+        "comments": "",
+        "x": 1059.575325012207,
+        "y": 1235.5239913463593,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "8f619b62.bdcdb8",
+        "type": "comment",
+        "name": "Update AAI AR",
+        "info": "",
+        "comments": "",
+        "x": 552.06103515625,
+        "y": 1220.09521651268,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "50310cfe.876cb4",
+        "type": "set",
+        "name": "set ar-assignments",
+        "xml": "<set>\n<parameter name='ar-assignments.' value=\"`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`\" />\n\n\n\n",
+        "comments": "",
+        "x": 554.4801483154297,
+        "y": 607.9048221111298,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "1c0b3eb4.2a1111",
+        "type": "switchNode",
+        "name": "switch source-network.network-id",
+        "xml": "<switch test='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 608.0039291381836,
+        "y": 792.5000422000885,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "f32d3627.d60638",
+                "84e18965.3c0918"
+            ]
+        ]
+    },
+    {
+        "id": "f32d3627.d60638",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 956.0041160583496,
+        "y": 789.1665117740631,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "b963a897.df44d8"
+            ]
+        ]
+    },
+    {
+        "id": "84e18965.3c0918",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 966.6709899902344,
+        "y": 737.1663014888763,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "607f0213.4585ec"
+            ]
+        ]
+    },
+    {
+        "id": "de967f6b.a246e",
+        "type": "for",
+        "name": "for nidx..service-data.networks.network[]",
+        "xml": "<for index='nidx' start='0' end='`$service-data.networks.network_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2091.448890686035,
+        "y": 828.9442895650864,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "d5b5a378.f12e8"
+            ]
+        ]
+    },
+    {
+        "id": "cb4d15ad.5b3e08",
+        "type": "switchNode",
+        "name": "switch service-data.networks.network_length",
+        "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1347.8295516967773,
+        "y": 789.1823389530182,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "e7768c09.76407",
+                "ddc2e983.b27498"
+            ]
+        ]
+    },
+    {
+        "id": "e7768c09.76407",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1636.8295516967773,
+        "y": 791.1823999881744,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "86330abf.322018"
+            ]
+        ]
+    },
+    {
+        "id": "ddc2e983.b27498",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1616.8295516967773,
+        "y": 826.1823999881744,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "63dd8cb4.e41794"
+            ]
+        ]
+    },
+    {
+        "id": "63dd8cb4.e41794",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1821.4328536987305,
+        "y": 830.0702737569809,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "de967f6b.a246e"
+            ]
+        ]
+    },
+    {
+        "id": "b963a897.df44d8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1090.1153717041016,
+        "y": 789.6109163761139,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "cb4d15ad.5b3e08"
+            ]
+        ]
+    },
+    {
+        "id": "607f0213.4585ec",
+        "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 assigning contrail route.  Source network not found\" />\n",
+        "comments": "",
+        "x": 1120.8043975830078,
+        "y": 736.1664967536926,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "86330abf.322018",
+        "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 assigning contrail route.  Source network not found\" />\n",
+        "comments": "",
+        "x": 1829.937629699707,
+        "y": 791.4998601675034,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "e72045.3754efb8",
+        "type": "comment",
+        "name": "Find tenant id/cloud region from source network",
+        "info": "",
+        "comments": "",
+        "x": 637.4042205810547,
+        "y": 757.1664483547211,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "d5b5a378.f12e8",
+        "type": "switchNode",
+        "name": "switch networkid found",
+        "xml": "<switch test=\"`$service-data.networks.network[$nidx].network-id == $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2384.0037002563477,
+        "y": 825.8334163427353,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "22ec946b.3bde1c",
+                "2d69773c.9c9fd8"
+            ]
+        ]
+    },
+    {
+        "id": "a942d336.9a02",
+        "type": "set",
+        "name": "set tmp vals",
+        "xml": "<set>\n<parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />\n\n\n",
+        "comments": "",
+        "x": 2925.670669555664,
+        "y": 823.3333702087402,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "95efe68c.15ea68",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2748.737051010132,
+        "y": 826.3333842754364,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "a942d336.9a02"
+            ]
+        ]
+    },
+    {
+        "id": "22ec946b.3bde1c",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2593.2704277038574,
+        "y": 826.3332469463348,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "95efe68c.15ea68"
+            ]
+        ]
+    },
+    {
+        "id": "2d69773c.9c9fd8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2594.070037841797,
+        "y": 864.3332498073578,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "81a644d4.111c68"
+            ]
+        ]
+    },
+    {
+        "id": "81a644d4.111c68",
+        "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 assigning contrail route.  Source network not found\" />\n",
+        "comments": "",
+        "x": 2772.0701942443848,
+        "y": 864.3333156108856,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "b6736797.38e8b8",
+        "type": "comment",
+        "name": "Call contrail api here",
+        "info": "",
+        "comments": "",
+        "x": 564.2895889282227,
+        "y": 848.666722536087,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "ac1afd99.47658",
+        "type": "execute",
+        "name": "execute Contrail API delete network policy",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='delete' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />\n<parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 647.4086608886719,
+        "y": 886.3097550868988,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "711f0aee.ce8ba4",
+                "9b1b549c.7a2818"
+            ]
+        ]
+    },
+    {
+        "id": "711f0aee.ce8ba4",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 928.7895965576172,
+        "y": 854.4521206952631,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "9ce64e2c.ea266"
+            ]
+        ]
+    },
+    {
+        "id": "9b1b549c.7a2818",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 926.8849182128906,
+        "y": 887.4520604610443,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "43c06676.1dbba8"
+            ]
+        ]
+    },
+    {
+        "id": "43c06676.1dbba8",
+        "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=\"Failed to create policy in Contrail\" />\n",
+        "comments": "",
+        "x": 1086.7896881103516,
+        "y": 886.7854270078242,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "9ce64e2c.ea266",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1080.980079650879,
+        "y": 855.1188457012177,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8a766565.291e68",
+        "type": "comment",
+        "name": "Delete network policy in AAI",
+        "info": "",
+        "comments": "",
+        "x": 565.50390625,
+        "y": 1074.999998807907,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "3c6fdb59.f8fd14",
+        "type": "save",
+        "name": "delete AnAI - network-policy",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"network-policy\" \n\t\tkey=\"network-policy.network-policy-id = $ar-assignments.contrail-id\" >\n\n\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 580.8807907104492,
+        "y": 1112.0675637722015,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "8cd17d42.0bcda",
+                "cf16a62d.8c70a8"
+            ]
+        ]
+    },
+    {
+        "id": "8ff84544.9d71e8",
+        "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=\"Failed to save network policy in AAI\" />\n",
+        "comments": "",
+        "x": 1053.2262992858887,
+        "y": 1102.349177122116,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    },
+    {
+        "id": "8cd17d42.0bcda",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 824.6549072265625,
+        "y": 1101.3649146556854,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "8ff84544.9d71e8"
+            ]
+        ]
+    },
+    {
+        "id": "cf16a62d.8c70a8",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 828.4644050598145,
+        "y": 1130.841331243515,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "8ff84544.9d71e8"
+            ]
+        ]
+    },
+    {
+        "id": "d23354a7.464df8",
+        "type": "call",
+        "name": "call policy-manager-delete-policy",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='policy-manager-delete-policy' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 627.9205322265625,
+        "y": 972.8333117961884,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "62a5debd.c203a",
+                "4180c869.1d0ea8"
+            ]
+        ]
+    },
+    {
+        "id": "62a5debd.c203a",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 863.4998931884766,
+        "y": 970.175279378891,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "6e04473c.a254f8"
+            ]
+        ]
+    },
+    {
+        "id": "4180c869.1d0ea8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 869.4921607971191,
+        "y": 1010.9763548374176,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            [
+                "6ad8d723.6b8888"
+            ]
+        ]
+    },
+    {
+        "id": "6ad8d723.6b8888",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1022.1587257385254,
+        "y": 1009.3096830844879,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6e04473c.a254f8",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1022.2063369750977,
+        "y": 964.2620389461517,
+        "z": "9b1f52ae.5be64",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "785a4111.a959a",
+        "type": "comment",
+        "name": "Call policy mgr.  continue on failure",
+        "info": "",
+        "comments": "",
+        "x": 618.5872039794922,
+        "y": 941.166601896286,
+        "z": "9b1f52ae.5be64",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-unassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-unassign.json
new file mode 100755
index 0000000..bc51cc3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation-unassign.json
@@ -0,0 +1,1662 @@
+[
+    {
+        "id": "cf211855.5ed1f8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 168.57142639160156,
+        "y": 75.71428775787354,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "bc882a0e.799dc8"
+            ]
+        ]
+    },
+    {
+        "id": "bc882a0e.799dc8",
+        "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": 314.80950927734375,
+        "y": 150.66668128967285,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "49d2f441.d1158c"
+            ]
+        ]
+    },
+    {
+        "id": "49d2f441.d1158c",
+        "type": "method",
+        "name": "contrail-route-topology-operation-unassign",
+        "xml": "<method rpc='contrail-route-topology-operation-unassign' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 394.7262763977051,
+        "y": 219.90472984313965,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "851e5011.006bf"
+            ]
+        ]
+    },
+    {
+        "id": "851e5011.006bf",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 303.04761123657227,
+        "y": 363.23807191848755,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "7f6e26b0.fa04c8",
+                "e1f61957.040858",
+                "52c8941e.34706c",
+                "9fe9d7fd.07e6d8",
+                "e043065a.680238",
+                "6a751595.cd154c",
+                "e915cfb.5954f3",
+                "216c3eb7.9d46c2",
+                "856fcfb5.c8342",
+                "6247b30a.8bdabc",
+                "250f7992.c6d986",
+                "a787f7d2.22c9c8",
+                "e991aac8.552e48",
+                "36023b8e.b1c6e4",
+                "ba43457f.b66688",
+                "64afab36.0ce6d4",
+                "a5078016.a7585",
+                "9190dbed.f454e8"
+            ]
+        ]
+    },
+    {
+        "id": "e1f61957.040858",
+        "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": 541.1588745117188,
+        "y": 1725.2621965408325,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "7f6e26b0.fa04c8",
+        "type": "set",
+        "name": "set output to api handler",
+        "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $contrail-route-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+        "comments": "",
+        "x": 569.9127807617188,
+        "y": 1687.7179899215698,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "9fe9d7fd.07e6d8",
+        "type": "set",
+        "name": "set tmp.ar.self-link",
+        "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/contrail-route-topology/'` \" />\n\n",
+        "comments": "",
+        "x": 565.3094825744629,
+        "y": 337.04760932922363,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "52c8941e.34706c",
+        "type": "set",
+        "name": "set tmp.ar.allotted-resource-id,etc",
+        "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n",
+        "comments": "",
+        "x": 612.5687446594238,
+        "y": 303.30687522888184,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "e043065a.680238",
+        "type": "execute",
+        "name": "execute Properties - pull properties file",
+        "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": 628.8981494903564,
+        "y": 369.6125030517578,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e915cfb.5954f3",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 629.8679656982422,
+        "y": 683.3960418701172,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "1a91ce88.4d2c91",
+                "bb4b7f07.d9ff6"
+            ]
+        ]
+    },
+    {
+        "id": "6a751595.cd154c",
+        "type": "execute",
+        "name": "generate allotted-resource url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.cr-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 599.6362724304199,
+        "y": 432.73151302337646,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1a91ce88.4d2c91",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 875.1640701293945,
+        "y": 684.2038555145264,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "55fcf194.b47d5"
+            ]
+        ]
+    },
+    {
+        "id": "55fcf194.b47d5",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1044.1640739440918,
+        "y": 682.7037563323975,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "5479fd32.f72504"
+            ]
+        ]
+    },
+    {
+        "id": "5479fd32.f72504",
+        "type": "switchNode",
+        "name": "switch cr length",
+        "xml": "<switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1255.0213165283203,
+        "y": 682.3228855133057,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "9300342b.83b788",
+                "d9b9b305.104fe"
+            ]
+        ]
+    },
+    {
+        "id": "9300342b.83b788",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1444.354621887207,
+        "y": 682.3228435516357,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "8a8034cd.f86478"
+            ]
+        ]
+    },
+    {
+        "id": "81b74a81.710da8",
+        "type": "set",
+        "name": "set ar from get",
+        "xml": "<set>\n<parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />\n",
+        "comments": "",
+        "x": 1839.7677383422852,
+        "y": 711.1165752410889,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "8a8034cd.f86478",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic='true'>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1628.878511428833,
+        "y": 679.2276773452759,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "81b74a81.710da8",
+                "ae3a9c95.9f86f",
+                "1b54a40a.1567fc",
+                "8dd6e424.319b18"
+            ]
+        ]
+    },
+    {
+        "id": "ae3a9c95.9f86f",
+        "type": "set",
+        "name": "set oper-status",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
+        "comments": "",
+        "x": 1847.767665863037,
+        "y": 775.2117185592651,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "6d24bc6e.b432b4",
+        "type": "comment",
+        "name": "GET contrail-route-allotted-resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 643.1640129089355,
+        "y": 650.7037448883057,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "8dd6e424.319b18",
+        "type": "switchNode",
+        "name": "switch order-status",
+        "xml": "<switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1861.4817581176758,
+        "y": 742.1165647506714,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "f8de75cd.7a7528",
+                "395f6853.653ed8"
+            ]
+        ]
+    },
+    {
+        "id": "f8de75cd.7a7528",
+        "type": "outcome",
+        "name": "outcome Created",
+        "xml": "<outcome value='Created'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2094.7487030029297,
+        "y": 730.4975290298462,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "525c5ee0.9d3fa"
+            ]
+        ]
+    },
+    {
+        "id": "395f6853.653ed8",
+        "type": "outcome",
+        "name": "outcome Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2091.415626525879,
+        "y": 769.4023504257202,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "c5891364.a15db"
+            ]
+        ]
+    },
+    {
+        "id": "525c5ee0.9d3fa",
+        "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\" \n    value=\"`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`\" />\n",
+        "comments": "",
+        "x": 2317.748405456543,
+        "y": 729.7355508804321,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "1b54a40a.1567fc",
+        "type": "set",
+        "name": "save backup copy of mdsal-ar for rollback",
+        "xml": "<set>\n<parameter name='bk-cr-ar' value='$mdsal-ar.' />\n",
+        "comments": "",
+        "x": 1927.6247901916504,
+        "y": 677.9260673522949,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "12dc5691.1f3bf9",
+        "type": "comment",
+        "name": "Create urls for restapi",
+        "info": "",
+        "comments": "",
+        "x": 570.5290794372559,
+        "y": 402.3386402130127,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "45ecfa97.8bea64",
+        "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=\"Error: Contrail Route not found\" />\n    \n",
+        "comments": "",
+        "x": 1628.0162181854248,
+        "y": 795.2699184417725,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "bb4b7f07.d9ff6",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 867.0158729553223,
+        "y": 719.2699403762817,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "c4bc3964.e647b8"
+            ]
+        ]
+    },
+    {
+        "id": "c4bc3964.e647b8",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1047.0158233642578,
+        "y": 719.9364910125732,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "45ecfa97.8bea64"
+            ]
+        ]
+    },
+    {
+        "id": "216c3eb7.9d46c2",
+        "type": "set",
+        "name": "set ar data",
+        "xml": "<set>\n<parameter name='ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='ar.allotted-resource-status.action' value=\"`$contrail-route-topology-operation-input.request-information.request-action` \" />\n<parameter name='ar.allotted-resource-status.rpc-name' value=\"contrail-route-topology-operation\" />\n<parameter name='ar.allotted-resource-status.rpc-action' value=\"`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$contrail-route-topology-operation-input.request-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$contrail-route-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$contrail-route-topology-operation-input.service-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$contrail-route-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value=\"`$contrail-route-topology-operation-input.contrail-route-request-input.` \" />\n<parameter name='tmp.dest-network-id' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id`' />\n",
+        "comments": "",
+        "x": 532.5713729858398,
+        "y": 752.0475673675537,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "d9b9b305.104fe",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1432.68257522583,
+        "y": 719.6032037734985,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "45ecfa97.8bea64"
+            ]
+        ]
+    },
+    {
+        "id": "c5891364.a15db",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2295.9051361083984,
+        "y": 769.5873670578003,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "36023b8e.b1c6e4",
+        "type": "execute",
+        "name": "execute RestApiCallNode - DELETE AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 654.1865539550781,
+        "y": 1205.833387374878,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "9feba3d6.f55d3",
+                "8704b793.312ca8",
+                "11ed62bd.b7f16d"
+            ]
+        ]
+    },
+    {
+        "id": "4768fe31.b5a5c",
+        "type": "comment",
+        "name": "Delete AR from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 602.9168090820312,
+        "y": 1176.4682731628418,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "64afab36.0ce6d4",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Delete parent provided service AR",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"parent\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 688.9484634399414,
+        "y": 835.3571434020996,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "dcd0467e.92fe18",
+                "3ff5c872.9a1a18",
+                "b114286b.199858"
+            ]
+        ]
+    },
+    {
+        "id": "dcd0467e.92fe18",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1006.2565650939941,
+        "y": 884.7996797561646,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "38844671.fda6da"
+            ]
+        ]
+    },
+    {
+        "id": "3ff5c872.9a1a18",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1002.2565307617188,
+        "y": 848.8553867340088,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "38844671.fda6da"
+            ]
+        ]
+    },
+    {
+        "id": "b114286b.199858",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1006.0065689086914,
+        "y": 819.2124916091561,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "ac08724a.8c537"
+            ]
+        ]
+    },
+    {
+        "id": "38844671.fda6da",
+        "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 updating md-sal for contrail-route-allotted-resource\" />\n",
+        "comments": "",
+        "x": 1172.0065689086914,
+        "y": 849.6054105758667,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "ac08724a.8c537",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1147.6625366210938,
+        "y": 815.4046607986093,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "470f34a0.7311bc",
+        "type": "comment",
+        "name": "Delete the parent allotted resource from mdsal ",
+        "info": "",
+        "comments": "",
+        "x": 631.5039825439453,
+        "y": 803.3570127487183,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "febec64d.8ef9d8",
+        "type": "comment",
+        "name": "Create urls for restapi",
+        "info": "",
+        "comments": "",
+        "x": 956.8214263916016,
+        "y": 336.21428775787354,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "a5078016.a7585",
+        "type": "execute",
+        "name": "generate parent-network url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.network`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-parentnetwork-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 599.3083038330078,
+        "y": 533.3676280975342,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "856fcfb5.c8342",
+        "type": "execute",
+        "name": "generate parent-ar url - replace service-instance-id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.parent-provided-resource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.parent-ar-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 668.3972930908203,
+        "y": 466.70129585266113,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6247b30a.8bdabc",
+        "type": "execute",
+        "name": "generate parent-ar url - replace allotted-resource-id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.parent-ar-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.parent-ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 672.5991821289062,
+        "y": 498.2142753601074,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "250f7992.c6d986",
+        "type": "execute",
+        "name": "generate network-ar url - replace service-instance-id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.network-provided-resource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.network-ar-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 672.5991668701172,
+        "y": 570.4364900588989,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a787f7d2.22c9c8",
+        "type": "execute",
+        "name": "generate network-ar url - replace network-id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.network-ar-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.network-ar-url\"/>\n    <parameter name=\"target\" value=\"{network-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.dest-network-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 632.3769683837891,
+        "y": 1029.769829750061,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e991aac8.552e48",
+        "type": "execute",
+        "name": "execute RestApiCallNode - GET parent network provided AR",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"net-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 687.9324493408203,
+        "y": 1062.7697076797485,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "b4567206.fa863",
+                "a71a40c5.88def",
+                "554f70e5.d5d85"
+            ]
+        ]
+    },
+    {
+        "id": "a71a40c5.88def",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1099.2405281066895,
+        "y": 1063.4353370666504,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "499ec72d.b02448"
+            ]
+        ]
+    },
+    {
+        "id": "554f70e5.d5d85",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1091.9072380065918,
+        "y": 1098.6017951965332,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "499ec72d.b02448"
+            ]
+        ]
+    },
+    {
+        "id": "b4567206.fa863",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1093.9905624389648,
+        "y": 1028.9588814750314,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "f1a4599b.49b4d8"
+            ]
+        ]
+    },
+    {
+        "id": "499ec72d.b02448",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1273.646499633789,
+        "y": 1063.484673500061,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9c979e8d.9ba31",
+        "type": "comment",
+        "name": "Delete AR from parent network allotted resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 671.0434722900391,
+        "y": 998.9922933578491,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "6c0f7db7.db6b84",
+        "type": "for",
+        "name": "for snidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]",
+        "xml": "<for silentFailure='true' index='snidx' start='`$tmp.sdidx + 1`' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1642.4245147705078,
+        "y": 1583.7696347236633,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "9dfc230a.0b6c1"
+            ]
+        ]
+    },
+    {
+        "id": "e8ab0dfb.30e2a",
+        "type": "comment",
+        "name": "Remove CAR from service data",
+        "info": "",
+        "comments": "",
+        "x": 594.2659225463867,
+        "y": 1416.8652505874634,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "ba43457f.b66688",
+        "type": "switchNode",
+        "name": "switch $service-data.consumed-allotted-resource.length",
+        "xml": "<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 671.0316925048828,
+        "y": 1449.3177938461304,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "883c0f9b.2274b",
+                "7e619691.b53748"
+            ]
+        ]
+    },
+    {
+        "id": "883c0f9b.2274b",
+        "type": "outcome",
+        "name": "1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1027.4125289916992,
+        "y": 1455.9842100143433,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "d2f770e7.24326"
+            ]
+        ]
+    },
+    {
+        "id": "d11a120d.f125a",
+        "type": "set",
+        "name": "Remove AR",
+        "xml": "<set>\n\t<parameter name=\"service-data.consumed-allotted-resources.\" value=\"\"/>\n\n",
+        "comments": "",
+        "x": 1415.5869064331055,
+        "y": 1458.5399341583252,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "7e619691.b53748",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1021.5712547302246,
+        "y": 1582.7619514465332,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "37a9c9fb.ba1086"
+            ]
+        ]
+    },
+    {
+        "id": "e96ed39b.1e002",
+        "type": "set",
+        "name": "set new CAR length",
+        "xml": "<set>\n\t<parameter name=\"service-data.consumed-allotted-resources.consumed-allotted-resource_length\" value=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`\"/>\n\n\t\n",
+        "comments": "",
+        "x": 1448.5500106811523,
+        "y": 1612.7621221542358,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "237fb279.27975e",
+        "type": "set",
+        "name": "Remove CAR",
+        "xml": "<set>\n\t<parameter name=\"service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.new_length].\" value=\"\"/>\n\n",
+        "comments": "",
+        "x": 1430.6186714172363,
+        "y": 1644.0633525848389,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "37a9c9fb.ba1086",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1205.793441772461,
+        "y": 1582.6507930755615,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "6c0f7db7.db6b84",
+                "237fb279.27975e",
+                "e96ed39b.1e002",
+                "b0a56887.03df98"
+            ]
+        ]
+    },
+    {
+        "id": "93c6f0ff.65042",
+        "type": "set",
+        "name": "set new consumed allotted resource length",
+        "xml": "<set>\n\t<parameter name=\"service-data.consumed-allotted-resources.consumed-allotted-resource_length\" value=\"0\"/>\n\n\t\n",
+        "comments": "",
+        "x": 1511.92041015625,
+        "y": 1489.9102430343628,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "d2f770e7.24326",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1206.7458419799805,
+        "y": 1456.688006401062,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "d11a120d.f125a",
+                "93c6f0ff.65042"
+            ]
+        ]
+    },
+    {
+        "id": "446a27f7.923d98",
+        "type": "comment",
+        "name": "If only one remove all networks",
+        "info": "",
+        "comments": "",
+        "x": 1098.7828903198242,
+        "y": 1420.5769834518433,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "b0a56887.03df98",
+        "type": "set",
+        "name": "Set new length",
+        "xml": "<set>\n\t<parameter name=\"tmp.new_length\" value=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`\"/>\n\t\n\t\n",
+        "comments": "",
+        "x": 1432.4970474243164,
+        "y": 1551.2434558868408,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "c78ea6ce.ed3d88",
+        "type": "set",
+        "name": "move CAR to remove one",
+        "xml": "<set>\n\t<parameter name=\"service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.newidx].\" value=\"$service-data.consumed-allotted-resources.consumed-allotted-resource[$snidx].\" />\n\t\n",
+        "comments": "",
+        "x": 2278.154495239258,
+        "y": 1613.7696771621704,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "9dfc230a.0b6c1",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2038.7102508544922,
+        "y": 1583.5473852157593,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "c78ea6ce.ed3d88",
+                "9fa5c66e.e79918"
+            ]
+        ]
+    },
+    {
+        "id": "9fa5c66e.e79918",
+        "type": "set",
+        "name": "Set new index",
+        "xml": "<set>\n\t<parameter name=\"tmp.newidx\" value=\"`$snidx - 1`\"/>\n\t\n\t\n",
+        "comments": "",
+        "x": 2242.3027267456055,
+        "y": 1583.3623399734497,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "95095ce2.63d2c",
+        "type": "switchNode",
+        "name": "switch net-ar_length",
+        "xml": "<switch test='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1527.4880981445312,
+        "y": 1065.2143659591675,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "daff076a.52d9c8",
+                "3e839fd2.eaab4"
+            ]
+        ]
+    },
+    {
+        "id": "b833a46f.312d28",
+        "type": "for",
+        "name": "for nidx..net-ar[]",
+        "xml": "<for index='nidx' start='0' end='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2223.821563720703,
+        "y": 1075.214337348938,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "56f3d41c.41b2ec"
+            ]
+        ]
+    },
+    {
+        "id": "daff076a.52d9c8",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1813.4399795532227,
+        "y": 1059.2143049240112,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "4b792998.db27c8"
+            ]
+        ]
+    },
+    {
+        "id": "3e839fd2.eaab4",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1796.9638061523438,
+        "y": 1092.4524030685425,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "12f12009.d4012"
+            ]
+        ]
+    },
+    {
+        "id": "56f3d41c.41b2ec",
+        "type": "switchNode",
+        "name": "switch allotted-resource-id",
+        "xml": "<switch test=\"`$net-ar.network-provided-allotted-resources.network-provided-ar-id[$nidx] == $tmp.ar.allotted-resource-id`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2452.916534423828,
+        "y": 1074.2742738723755,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "d553befb.edc66"
+            ]
+        ]
+    },
+    {
+        "id": "12f12009.d4012",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2012.852783203125,
+        "y": 1092.673376083374,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "b833a46f.312d28",
+                "63eb735f.7f9c2c"
+            ]
+        ]
+    },
+    {
+        "id": "a142704e.b2dcd",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2422.7298698425293,
+        "y": 1151.3517026901245,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "6f7d4fb7.127fe"
+            ]
+        ]
+    },
+    {
+        "id": "6f7d4fb7.127fe",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2588.0631217956543,
+        "y": 1150.6849546432495,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "33a44101.5b5f8e",
+                "95a9abab.e40798",
+                "b54f3c4c.94e97"
+            ]
+        ]
+    },
+    {
+        "id": "847a6eca.9652",
+        "type": "comment",
+        "name": "allotted resource already exists- remove it",
+        "info": "",
+        "comments": "",
+        "x": 2280.4881286621094,
+        "y": 1117.6428899765015,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "63eb735f.7f9c2c",
+        "type": "switchNode",
+        "name": "switch tmp.found-nidx",
+        "xml": "<switch test='`$tmp.found-nidx`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2235.7298698425293,
+        "y": 1151.684832572937,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "a142704e.b2dcd"
+            ]
+        ]
+    },
+    {
+        "id": "7e3be93c.b00018",
+        "type": "set",
+        "name": "set tmp.found-nidx = false",
+        "xml": "<set>\n<parameter name='tmp.found-nidx' value='false' />",
+        "comments": "",
+        "x": 1544.1548461914062,
+        "y": 1027.548228263855,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "4b792998.db27c8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2006.6790924072266,
+        "y": 1057.880581855774,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8704b793.312ca8",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 944.3928985595703,
+        "y": 1206.0714263916016,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "ee0682c4.4dd54"
+            ]
+        ]
+    },
+    {
+        "id": "11ed62bd.b7f16d",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 937.0596084594727,
+        "y": 1241.2378845214844,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "ee0682c4.4dd54"
+            ]
+        ]
+    },
+    {
+        "id": "9feba3d6.f55d3",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 939.1429328918457,
+        "y": 1171.5949707999825,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "ee0682c4.4dd54"
+            ]
+        ]
+    },
+    {
+        "id": "ee0682c4.4dd54",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1110.798828125,
+        "y": 1176.1207542419434,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d553befb.edc66",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2664.7266120910645,
+        "y": 1074.7383260726929,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "940eba69.169448"
+            ]
+        ]
+    },
+    {
+        "id": "940eba69.169448",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2831.487575531006,
+        "y": 1076.2622215747833,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "5177c11e.0b323",
+                "ddf3d738.471938"
+            ]
+        ]
+    },
+    {
+        "id": "5177c11e.0b323",
+        "type": "set",
+        "name": "set tmp.nidx ",
+        "xml": "<set>\n<parameter name='tmp.found-nidx' value='true' />\n<parameter name='tmp.nidx' value='`$nidx`' />",
+        "comments": "",
+        "x": 3043.487968444824,
+        "y": 1067.5474972724915,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "ddf3d738.471938",
+        "type": "break",
+        "name": "break",
+        "xml": "<break>\n",
+        "comments": "",
+        "x": 3027.824966430664,
+        "y": 1099.5421304702759,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "92537a13.9547c8",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Update parent network provided AR",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"p-network-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3978.821517944336,
+        "y": 1252.261715888977,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "64bea154.8f9d5",
+                "b00d1773.aa42c8",
+                "3e77dced.50ab64"
+            ]
+        ]
+    },
+    {
+        "id": "33a44101.5b5f8e",
+        "type": "set",
+        "name": "set length",
+        "xml": "<set>\n<parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length - 1`' />\n\n",
+        "comments": "",
+        "x": 2834.0590324401855,
+        "y": 1186.7385053634644,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "f1a4599b.49b4d8",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1270.8214263916016,
+        "y": 1030.2142877578735,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "7e3be93c.b00018",
+                "95095ce2.63d2c"
+            ]
+        ]
+    },
+    {
+        "id": "95a9abab.e40798",
+        "type": "for",
+        "name": "for snidx..",
+        "xml": "<for silentFailure='true' index='snidx' start='`$tmp.nidx + 1`' end='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2829.1074752807617,
+        "y": 1153.9285192489624,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "509eacd6.5c68f4"
+            ]
+        ]
+    },
+    {
+        "id": "509eacd6.5c68f4",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 3003.9157524108887,
+        "y": 1154.9764223098755,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "98719d81.af49e",
+                "a96a395d.a9c718"
+            ]
+        ]
+    },
+    {
+        "id": "a96a395d.a9c718",
+        "type": "set",
+        "name": "move ar to remove one",
+        "xml": "<set>\n\t<parameter name=\"$net-ar.network-provided-allotted-resources.network-provided-ar-id[$tmp.newidx]\" value=\"$net-ar.network-provided-allotted-resources.network-provided-ar-id[$snidx]\" />\n\t\n",
+        "comments": "",
+        "x": 3233.3929748535156,
+        "y": 1181.071322441101,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "98719d81.af49e",
+        "type": "set",
+        "name": "Set new index",
+        "xml": "<set>\n\t<parameter name=\"tmp.newidx\" value=\"`$snidx - 1`\"/>\n\t\n\t\n",
+        "comments": "",
+        "x": 3203.0965881347656,
+        "y": 1151.4576597213745,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "b54f3c4c.94e97",
+        "type": "switchNode",
+        "name": "switch net-ar.network-provided-allotted-resources.network-provided-ar-id_length",
+        "xml": "<switch test='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length == 0`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3056.250045776367,
+        "y": 1219.6427507400513,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "ca553a96.f4df98",
+                "db554f7.968feb"
+            ]
+        ]
+    },
+    {
+        "id": "ca553a96.f4df98",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3449.1073150634766,
+        "y": 1218.2142877578735,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "5cf72e29.a46dc"
+            ]
+        ]
+    },
+    {
+        "id": "5cf72e29.a46dc",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 3614.4405670166016,
+        "y": 1217.5475397109985,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "5a4fd640.a50a38"
+            ]
+        ]
+    },
+    {
+        "id": "db554f7.968feb",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3453.3929595947266,
+        "y": 1253.9286432266235,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "86504a83.f25a68"
+            ]
+        ]
+    },
+    {
+        "id": "86504a83.f25a68",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 3618.7262115478516,
+        "y": 1253.2618951797485,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "92537a13.9547c8"
+            ]
+        ]
+    },
+    {
+        "id": "5a4fd640.a50a38",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Delete parent network provided AR",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"p-network-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3980.5357818603516,
+        "y": 1218.500054359436,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "64bea154.8f9d5",
+                "b00d1773.aa42c8",
+                "3e77dced.50ab64"
+            ]
+        ]
+    },
+    {
+        "id": "3e77dced.50ab64",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 4370.535781860352,
+        "y": 1289.642876625061,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "5ab14fa1.280a3"
+            ]
+        ]
+    },
+    {
+        "id": "b00d1773.aa42c8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 4366.535747528076,
+        "y": 1253.6985836029053,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "5ab14fa1.280a3"
+            ]
+        ]
+    },
+    {
+        "id": "64bea154.8f9d5",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 4370.285785675049,
+        "y": 1224.0556884780526,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "5ab14fa1.280a3"
+            ]
+        ]
+    },
+    {
+        "id": "5ab14fa1.280a3",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 4511.941753387451,
+        "y": 1220.2478576675057,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9190dbed.f454e8",
+        "type": "for",
+        "name": "for snidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]",
+        "xml": "<for silentFailure='true' index='snidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 762.857177734375,
+        "y": 1350,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "9666f99.8880108"
+            ]
+        ]
+    },
+    {
+        "id": "9666f99.8880108",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1198.825813293457,
+        "y": 1348.206350326538,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "82b75bd4.03ad58"
+            ]
+        ]
+    },
+    {
+        "id": "82b75bd4.03ad58",
+        "type": "switchNode",
+        "name": "switch AR found",
+        "xml": "<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$sdix].allotted-resource-id == $tmp.ar.allotted-resource-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1401.4285316467285,
+        "y": 1348.5714282989502,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "516d19eb.7811d8"
+            ]
+        ]
+    },
+    {
+        "id": "5240ee4d.031fa",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1778.571434020996,
+        "y": 1347.1429796218872,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "62717720.864aa8",
+                "9074a0fd.53bf6"
+            ]
+        ]
+    },
+    {
+        "id": "62717720.864aa8",
+        "type": "set",
+        "name": "Set sdidx",
+        "xml": "<set>\n\t<parameter name=\"tmp.sdidx\" value=\"`$snidx`\"/>\n\t\n\t\n",
+        "comments": "",
+        "x": 1992.8571434020996,
+        "y": 1311.4287633895874,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "9074a0fd.53bf6",
+        "type": "break",
+        "name": "break",
+        "xml": "<break>\n",
+        "comments": "",
+        "x": 1984.2856636047363,
+        "y": 1345.7144775390625,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "6edc1d83.b18194",
+        "type": "comment",
+        "name": "Find AR idx in consumed allotted resource list",
+        "info": "",
+        "comments": "",
+        "x": 679.9999389648438,
+        "y": 1315.714391708374,
+        "z": "124cd5eb.a6beaa",
+        "wires": []
+    },
+    {
+        "id": "516d19eb.7811d8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1589.999885559082,
+        "y": 1347.142997264862,
+        "z": "124cd5eb.a6beaa",
+        "wires": [
+            [
+                "5240ee4d.031fa"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation.json
new file mode 100755
index 0000000..e1d2a46
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_contrail-route-topology-operation.json
@@ -0,0 +1,441 @@
+[
+    {
+        "id": "c442b16f.7f882",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 170.2777862548828,
+        "y": 139.91365242004395,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "98f0a1a6.9a93a"
+            ]
+        ]
+    },
+    {
+        "id": "98f0a1a6.9a93a",
+        "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": 252.2301483154297,
+        "y": 180.15176486968994,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "c35c8be4.73c8d8"
+            ]
+        ]
+    },
+    {
+        "id": "c35c8be4.73c8d8",
+        "type": "method",
+        "name": "contrail-route-topology-operation",
+        "xml": "<method rpc='contrail-route-topology-operation' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 248.70641326904297,
+        "y": 219.91364669799805,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "3b0a9ea3.867772"
+            ]
+        ]
+    },
+    {
+        "id": "ae59e2f7.cffad",
+        "type": "comment",
+        "name": "CONTRAIL-ROUTE-TOPOLOGY-OPERATION ",
+        "info": "",
+        "comments": "",
+        "x": 564.6226425170898,
+        "y": 87.49999618530273,
+        "z": "e038a3cf.6f74e",
+        "wires": []
+    },
+    {
+        "id": "3b0a9ea3.867772",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 284.27781677246094,
+        "y": 303.3571357727051,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "b58546a9.769258",
+                "e3c64d20.0167",
+                "859df5b4.c0b828",
+                "596d4aa.d9123b4"
+            ]
+        ]
+    },
+    {
+        "id": "b58546a9.769258",
+        "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": 514.3611755371094,
+        "y": 927.1997718811035,
+        "z": "e038a3cf.6f74e",
+        "wires": []
+    },
+    {
+        "id": "e3c64d20.0167",
+        "type": "switchNode",
+        "name": "switch svc-action",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 510.99205017089844,
+        "y": 533.770830154419,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "e264c87c.e335d8",
+                "f727c392.45b37",
+                "e0f08eed.85bd2",
+                "dc2a2461.e96738",
+                "8ce006b.19b83f8",
+                "4cbcfe02.8cfb9",
+                "b62bec75.47383"
+            ]
+        ]
+    },
+    {
+        "id": "e264c87c.e335d8",
+        "type": "other",
+        "name": "assign",
+        "xml": "<outcome value='assign'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 731.4682464599609,
+        "y": 396.05648040771484,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "c21b848b.2208b8"
+            ]
+        ]
+    },
+    {
+        "id": "c21b848b.2208b8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 912.7064056396484,
+        "y": 397.05660247802734,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "bedb7604.0d31b8"
+            ]
+        ]
+    },
+    {
+        "id": "859df5b4.c0b828",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:validate-contrail-route-input",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-contrail-route-input' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 642.2777862548828,
+        "y": 303.91365242004395,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "bedb7604.0d31b8",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:contrail-route-topology-operation-assign",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-assign' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1284.2777557373047,
+        "y": 393.91365814208984,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f727c392.45b37",
+        "type": "other",
+        "name": "activate",
+        "xml": "<outcome value='activate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 733.2777862548828,
+        "y": 483.91365242004395,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "f70dfe77.b10a4"
+            ]
+        ]
+    },
+    {
+        "id": "f70dfe77.b10a4",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 917.5159454345703,
+        "y": 484.91377449035645,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "c4f30d6a.e056c"
+            ]
+        ]
+    },
+    {
+        "id": "e0f08eed.85bd2",
+        "type": "other",
+        "name": "deactivate",
+        "xml": "<outcome value='deactivate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 740.2778091430664,
+        "y": 531.913685798645,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "5e86b7e5.8ae6b8"
+            ]
+        ]
+    },
+    {
+        "id": "5e86b7e5.8ae6b8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 921.5159683227539,
+        "y": 532.9138078689575,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "88cbb733.292b18"
+            ]
+        ]
+    },
+    {
+        "id": "dc2a2461.e96738",
+        "type": "other",
+        "name": "unassign",
+        "xml": "<outcome value='unassign'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 738.27783203125,
+        "y": 650.2470254898071,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "8ecf697b.d4a738"
+            ]
+        ]
+    },
+    {
+        "id": "8ecf697b.d4a738",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 919.5159912109375,
+        "y": 651.2471475601196,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "23da5620.c6cb8a"
+            ]
+        ]
+    },
+    {
+        "id": "8ce006b.19b83f8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 737.611162185669,
+        "y": 710.2470083236694,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "5eae4ec8.4f8b6"
+            ]
+        ]
+    },
+    {
+        "id": "5eae4ec8.4f8b6",
+        "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-action is a required input\" />\n",
+        "comments": "",
+        "x": 919.6111583709717,
+        "y": 709.2470178604126,
+        "z": "e038a3cf.6f74e",
+        "wires": []
+    },
+    {
+        "id": "596d4aa.d9123b4",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "x": 533.3888702392578,
+        "y": 886.3581104278564,
+        "z": "e038a3cf.6f74e",
+        "wires": []
+    },
+    {
+        "id": "4cbcfe02.8cfb9",
+        "type": "other",
+        "name": "create",
+        "xml": "<outcome value='create'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 738.5184936523438,
+        "y": 443.51849365234375,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "3d58b4c3.43262c"
+            ]
+        ]
+    },
+    {
+        "id": "3d58b4c3.43262c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 919.7566528320312,
+        "y": 444.51861572265625,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "b37f997b.66e918"
+            ]
+        ]
+    },
+    {
+        "id": "b37f997b.66e918",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:contrail-route-topology-operation-create",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-create' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1267.3279724121094,
+        "y": 447.3756694793701,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b62bec75.47383",
+        "type": "other",
+        "name": "delete",
+        "xml": "<outcome value='delete'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 734.8518295288086,
+        "y": 593.1851282119751,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "b9a086c9.ed23a8"
+            ]
+        ]
+    },
+    {
+        "id": "b9a086c9.ed23a8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 916.0899887084961,
+        "y": 594.1852502822876,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            [
+                "99d04266.2927b"
+            ]
+        ]
+    },
+    {
+        "id": "c4f30d6a.e056c",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:contrail-route-topology-operation-activate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-activate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1262,
+        "y": 492,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "88cbb733.292b18",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:contrail-route-topology-operation-deactivate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-deactivate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1264,
+        "y": 532,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "99d04266.2927b",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:contrail-route-topology-operation-delete",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-delete' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1262,
+        "y": 596,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "23da5620.c6cb8a",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:contrail-route-topology-operation-unassign",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-unassign' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1270,
+        "y": 648,
+        "z": "e038a3cf.6f74e",
+        "wires": [
+            []
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_create-l3-subnet.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_create-l3-subnet.json
new file mode 100644
index 0000000..3f3864f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_create-l3-subnet.json
@@ -0,0 +1 @@
+[{"id":"3b3edc85.ab1344","type":"dgstart","name":"DGSTART","outputs":1,"x":150.00558471679688,"y":85.7198715209961,"z":"a263af79.79be7","wires":[["429059f7.f33678"]]},{"id":"429059f7.f33678","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":251.29129028320312,"y":139.9579849243164,"z":"a263af79.79be7","wires":[["58648933.aece68"]]},{"id":"58648933.aece68","type":"method","name":"create-l3-subnet","xml":"<method rpc='create-l3-subnet' mode='sync'>\n","comments":"","outputs":1,"x":266.68421936035156,"y":189.4698715209961,"z":"a263af79.79be7","wires":[["cc7d688c.201a78"]]},{"id":"cc7d688c.201a78","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":246.505615234375,"y":322.66337418556213,"z":"a263af79.79be7","wires":[["c94352c5.b5422","65a18c1c.198844","5f314f68.e8147","ad05df62.8a915"]]},{"id":"c94352c5.b5422","type":"set","name":"set subnet-idx","xml":"<set>\n<parameter name='subnet-idx' value='0' />\n","comments":"","x":441.43414306640625,"y":268.0055866241455,"z":"a263af79.79be7","wires":[]},{"id":"41cd298c.322138","type":"comment","name":"These should be set from previous eipam call","info":"<parameter name='v4.entity-id' value='' />\n<parameter name='v4.ip-prefix' value='' />\n<parameter name='v4.mask' value='' />\n<parameter name='v4.pool.pre-existing' value='false' />\n<parameter name='v4.subnet.pre-existing' value='false' />\n<parameter name='v6.entity-id' value='' />\n<parameter name='v6.ip-prefix' value='' />\n<parameter name='v6.mask' value='' />\n<parameter name='v6.pool.pre-existing' value='false' />\n<parameter name='v6.subnet.pre-existing' value='false' />","comments":"","x":534.0055847167969,"y":211.7198715209961,"z":"a263af79.79be7","wires":[]},{"id":"65a18c1c.198844","type":"switchNode","name":"switch entity-id for ipv4","xml":"<switch test='`$v4.entity-id`'>\n","comments":"","outputs":1,"x":460.0055847167969,"y":309.7199020385742,"z":"a263af79.79be7","wires":[["854594c0.16f268","53bfd99f.8ad458"]]},{"id":"854594c0.16f268","type":"other","name":"outcome null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":680.0055847167969,"y":307.7199020385742,"z":"a263af79.79be7","wires":[["51383492.a7dd5c"]]},{"id":"53bfd99f.8ad458","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":668.0055847167969,"y":347.7199020385742,"z":"a263af79.79be7","wires":[["869b294f.c72378"]]},{"id":"869b294f.c72378","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":853.3389434814453,"y":349.71990156173706,"z":"a263af79.79be7","wires":[["d454dc5c.f174f","b4fb0b53.9a3d18","36834eb2.20a752","e5c2c06.c5d234","d1565405.985fa8","ac9925ae.9b6988"]]},{"id":"8b32054f.7f7dc8","type":"set","name":"set dhcp data","xml":"<set>\n<parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-enabled' value='true' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-start' value='`$tmp.return.generate.dhcp-start-address`' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-end' value='`$tmp.return.generate.dhcp-end-address`' />\n\n\n","comments":"","x":1795.862506866455,"y":454.624605178833,"z":"a263af79.79be7","wires":[]},{"id":"d454dc5c.f174f","type":"execute","name":"execute getSubnetAddresses","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool\" method=\"getSubnetAddresses\">\n\t<parameter name=\"ipAddress\" value=\"`$v4.ip-prefix`\" />\n\t<parameter name=\"ipVersion\" value=\"4\" />\n\t<parameter name=\"subnet\" value=\"`$v4.mask`\" />\n\t<parameter name=\"dhcp-enabled\" value=\"`$tmp.ipv4dhcp-enabled`\" />\n\t<parameter name=\"ctxGateway\" value=\"tmp.return.generate.gateway-address\" />\n\t<parameter name=\"ctxDhcpStart\" value=\"tmp.return.generate.dhcp-start-address\" />\n\t<parameter name=\"ctxDhcpEnd\" value=\"tmp.return.generate.dhcp-end-address\" />\n\n","comments":"","outputs":1,"x":1134.7198638916016,"y":350.243691444397,"z":"a263af79.79be7","wires":[["6a705282.6c129c"]]},{"id":"b4fb0b53.9a3d18","type":"switchNode","name":"switch network-model.ipv4-dhcp-enabled","xml":"<switch test='`$network-model.ipv4-dhcp-enabled`'>\n","comments":"","outputs":1,"x":1175.3707695007324,"y":432.65636825561523,"z":"a263af79.79be7","wires":[["c3c067b7.41a638","42a2b2d6.7cf19c"]]},{"id":"c3c067b7.41a638","type":"other","name":"Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1436.0847415924072,"y":455.98967456817627,"z":"a263af79.79be7","wires":[["917e88ed.2b9808"]]},{"id":"917e88ed.2b9808","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1596.560977935791,"y":455.98966121673584,"z":"a263af79.79be7","wires":[["8b32054f.7f7dc8"]]},{"id":"36834eb2.20a752","type":"set","name":"set subnet-idx","xml":"<set>\n<parameter name='subnet-idx' value='`$subnet-idx+1`' />\n\n","comments":"","x":1093.9420585632324,"y":470.2753372192383,"z":"a263af79.79be7","wires":[]},{"id":"5f314f68.e8147","type":"switchNode","name":"switch entity-id for ipv6","xml":"<switch test='`$v6.entity-id`'>\n","comments":"","outputs":1,"x":475.2066345214844,"y":840.0637540817261,"z":"a263af79.79be7","wires":[["a65c0af4.4d70c8","4df74206.a84fdc"]]},{"id":"a65c0af4.4d70c8","type":"other","name":"outcome null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":695.2066345214844,"y":838.0637540817261,"z":"a263af79.79be7","wires":[["ba205c7d.e945b"]]},{"id":"4df74206.a84fdc","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":681.7780532836914,"y":892.7780342102051,"z":"a263af79.79be7","wires":[["727b7844.583018"]]},{"id":"d73bb4d7.941528","type":"set","name":"set l3network.subnet","xml":"<set>\n<parameter name='tmp.l3-network.subnet[$subnet-idx].orchestration-status' value='PendingCreate' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].subnet-id' value='`$v6.entity-id`' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].subnet-name' value=\"`$tmp.l3-network.network-name + '_S' + $subnet-idx`\" />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].gateway-address' value='`$tmp.return.generate.gateway-address`' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].network-start-address' value='`$v6.ip-prefix`' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].cidr-mask' value='`$v6.mask`' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].ip-version' value='`$network-model.ipv6-ip-version`' />\n\n\n","comments":"","x":1118.111442565918,"y":977.349461555481,"z":"a263af79.79be7","wires":[]},{"id":"727b7844.583018","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":876.6352310180664,"y":892.3494882583618,"z":"a263af79.79be7","wires":[["3d53eee1.30e0c2","d73bb4d7.941528","73f6dd4f.81ddf4","27c03eeb.0b85f2","eaee38c8.7b8d88","c92b4c1f.b65ae","c90b76dc.2a1ba8"]]},{"id":"2294d0ee.29409","type":"set","name":"set dhcp data","xml":"<set>\n<parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-enabled' value='true' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-start' value='`$tmp.return.generate.dhcp-start-address`' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-end' value='`$tmp.return.generate.dhcp-end-address`' />\n\n\n","comments":"","x":1792.7303581237793,"y":1012.7780170440674,"z":"a263af79.79be7","wires":[]},{"id":"3d53eee1.30e0c2","type":"execute","name":"execute getSubnetAddresses","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool\" method=\"getSubnetAddresses\">\n\t<parameter name=\"ipAddress\" value=\"`$v6.ip-prefix`\" />\n\t<parameter name=\"ipVersion\" value=\"6\" />\n\t<parameter name=\"subnet\" value=\"`$v6.mask`\" />\n\t<parameter name=\"dhcp-enabled\" value=\"`$tmp.ipv6dhcp-enabled`\" />\n\t<parameter name=\"ctxGateway\" value=\"tmp.return.generate.gateway-address\" />\n\t<parameter name=\"ctxDhcpStart\" value=\"tmp.return.generate.dhcp-start-address\" />\n\t<parameter name=\"ctxDhcpEnd\" value=\"tmp.return.generate.dhcp-end-address\" />\n\n","comments":"","outputs":1,"x":1146.587501525879,"y":939.3970737457275,"z":"a263af79.79be7","wires":[["94b54e56.a0f0e"]]},{"id":"73f6dd4f.81ddf4","type":"switchNode","name":"switch network-model.ipv6-dhcp-enabled","xml":"<switch test='`$network-model.ipv6-dhcp-enabled`'>\n","comments":"","outputs":1,"x":1171.524169921875,"y":1015.5716705322266,"z":"a263af79.79be7","wires":[["fefb428d.1732c","50b93b2a.2e0404"]]},{"id":"fefb428d.1732c","type":"other","name":"Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1432.9525928497314,"y":1014.1430864334106,"z":"a263af79.79be7","wires":[["abcd65a7.f44998"]]},{"id":"abcd65a7.f44998","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1593.4288291931152,"y":1014.1430730819702,"z":"a263af79.79be7","wires":[["2294d0ee.29409"]]},{"id":"6a705282.6c129c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1366.63525390625,"y":350.01617527008057,"z":"a263af79.79be7","wires":[["ec368668.c530d8"]]},{"id":"ec368668.c530d8","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=\"Failed to generate ipv4 addresses using IpAddressTools\" />","comments":"","x":1538.3018035888672,"y":350.01617527008057,"z":"a263af79.79be7","wires":[]},{"id":"94b54e56.a0f0e","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1376.6352005004883,"y":938.825605392456,"z":"a263af79.79be7","wires":[["f413c960.41b028"]]},{"id":"f413c960.41b028","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=\"Failed to generate ipv6 addresses using IpAddressTools\" />","comments":"","x":1548.3017501831055,"y":938.825605392456,"z":"a263af79.79be7","wires":[]},{"id":"ad05df62.8a915","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n<parameter name='' value='' />\n","comments":"","x":423.67224884033203,"y":956.2198286056519,"z":"a263af79.79be7","wires":[]},{"id":"27c03eeb.0b85f2","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.create-l3-subnet:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"v6.entity-id\"/>\n<parameter name=\"field5\" value=\"`$v6.entity-id`\"/>\n\n\n\n","comments":"","outputs":1,"x":1077.656494140625,"y":876.1325225830078,"z":"a263af79.79be7","wires":[[]]},{"id":"ba205c7d.e945b","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":873.5135269165039,"y":837.8467998504639,"z":"a263af79.79be7","wires":[["c6b4d0e6.ce574"]]},{"id":"c6b4d0e6.ce574","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.create-l3-subnet:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"v6.entity-id\"/>\n<parameter name=\"field5\" value=\"null\"/>\n\n\n\n","comments":"","outputs":1,"x":1078.963430404663,"y":837.201283454895,"z":"a263af79.79be7","wires":[[]]},{"id":"e5c2c06.c5d234","type":"set","name":"set l3network.subnet","xml":"<set>\n<parameter name='tmp.l3-network.subnet[$subnet-idx].orchestration-status' value='PendingCreate' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].subnet-id' value='`$v4.entity-id`' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].subnet-name' value=\"`$tmp.l3-network.network-name + '_S' + $subnet-idx`\" />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].gateway-address' value='`$tmp.return.generate.gateway-address`' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].network-start-address' value='`$v4.ip-prefix`' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].cidr-mask' value='`$v4.mask`' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].ip-version' value='`$network-model.ipv4-ip-version`' />\n","comments":"","x":1109.18017578125,"y":392.65635681152344,"z":"a263af79.79be7","wires":[]},{"id":"eaee38c8.7b8d88","type":"set","name":"set subnet-idx","xml":"<set>\n<parameter name='subnet-idx' value='`$subnet-idx+1`' />\n","comments":"","x":1089.894401550293,"y":1048.5610885620117,"z":"a263af79.79be7","wires":[]},{"id":"42a2b2d6.7cf19c","type":"other","name":"N","xml":"<outcome value='N'>\n","comments":"","outputs":1,"x":1438.6245346069336,"y":491.7039556503296,"z":"a263af79.79be7","wires":[["4660a249.73e4fc"]]},{"id":"63f501fc.70fdf","type":"set","name":"set dhcp data","xml":"<set>\n<parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-enabled' value='false' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-start' value='' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-end' value='' />\n\n\n","comments":"","x":1798.6245346069336,"y":490.2753973007202,"z":"a263af79.79be7","wires":[]},{"id":"4660a249.73e4fc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1599.3230056762695,"y":491.64045333862305,"z":"a263af79.79be7","wires":[["63f501fc.70fdf"]]},{"id":"50b93b2a.2e0404","type":"other","name":"N","xml":"<outcome value='N'>\n","comments":"","outputs":1,"x":1431.005485534668,"y":1047.1324996948242,"z":"a263af79.79be7","wires":[["f642cedb.39506"]]},{"id":"d7221dbc.c5717","type":"set","name":"set dhcp data","xml":"<set>\n<parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-enabled' value='false' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-start' value='' />\n<parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-end' value='' />\n\n\n","comments":"","x":1791.005485534668,"y":1045.7039413452148,"z":"a263af79.79be7","wires":[]},{"id":"f642cedb.39506","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1591.703956604004,"y":1047.0689973831177,"z":"a263af79.79be7","wires":[["d7221dbc.c5717"]]},{"id":"51383492.a7dd5c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":862.8627319335938,"y":262.8627166748047,"z":"a263af79.79be7","wires":[["17806f89.41dd2"]]},{"id":"17806f89.41dd2","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.create-l3-subnet:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"v4.entity-id\"/>\n<parameter name=\"field5\" value=\"null\"/>\n\n\n\n","comments":"","outputs":1,"x":1021.2913055419922,"y":261.86271476745605,"z":"a263af79.79be7","wires":[[]]},{"id":"d1565405.985fa8","type":"set","name":"set subnet_length","xml":"<set>\n<parameter name='tmp.l3-network.subnet_length' value='`$subnet-idx`' />\n","comments":"","x":1107.1483154296875,"y":508.1484565734863,"z":"a263af79.79be7","wires":[]},{"id":"c92b4c1f.b65ae","type":"set","name":"set subnet-len","xml":"<set>\n<parameter name='tmp.l3-network.subnet_length' value='`$subnet-idx`' />\n","comments":"","x":1090.243637084961,"y":1081.1960220336914,"z":"a263af79.79be7","wires":[]},{"id":"ac9925ae.9b6988","type":"switchNode","name":"switch network-model.ipv4-dhcp-enabled","xml":"<switch test='`$network-model.ipv4-dhcp-enabled`'>\n","comments":"","outputs":1,"x":1175.11669921875,"y":316.16432189941406,"z":"a263af79.79be7","wires":[["c7113998.526c48","2c3956f7.33089a"]]},{"id":"3f22eec5.648e82","type":"set","name":"set dhcp boolean","xml":"<set>\n<parameter name='tmp.ipv4dhcp-enabled' value='true' />\n\n","comments":"","x":1783.1167545318604,"y":279.1643190383911,"z":"a263af79.79be7","wires":[]},{"id":"c7113998.526c48","type":"other","name":"Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1423.3389892578125,"y":279.5293884277344,"z":"a263af79.79be7","wires":[["72dcdb46.93b294"]]},{"id":"72dcdb46.93b294","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1583.8152256011963,"y":279.52937507629395,"z":"a263af79.79be7","wires":[["3f22eec5.648e82"]]},{"id":"2c3956f7.33089a","type":"other","name":"N","xml":"<outcome value='N'>\n","comments":"","outputs":1,"x":1425.8787822723389,"y":315.2436695098877,"z":"a263af79.79be7","wires":[["8acd180f.9188e8"]]},{"id":"3ff9eec6.bfb552","type":"set","name":"set dhcp boolean","xml":"<set>\n<parameter name='tmp.ipv4dhcp-enabled' value='false' />\n\n\n\n","comments":"","x":1784.8787841796875,"y":315.8151092529297,"z":"a263af79.79be7","wires":[]},{"id":"8acd180f.9188e8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1586.5772533416748,"y":315.18016719818115,"z":"a263af79.79be7","wires":[["3ff9eec6.bfb552"]]},{"id":"c90b76dc.2a1ba8","type":"switchNode","name":"switch network-model.ipv6-dhcp-enabled","xml":"<switch test='`$network-model.ipv6-dhcp-enabled`'>\n","comments":"","outputs":1,"x":1187.11669921875,"y":908.1643218994141,"z":"a263af79.79be7","wires":[["90e6e52a.429f38","c5f1bd14.e6f7b"]]},{"id":"f62dd972.e08ee8","type":"set","name":"set dhcp boolean","xml":"<set>\n<parameter name='tmp.ipv6dhcp-enabled' value='true' />\n\n","comments":"","x":1792.11669921875,"y":864.1643218994141,"z":"a263af79.79be7","wires":[]},{"id":"90e6e52a.429f38","type":"other","name":"Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1432.3389339447021,"y":865.5293912887573,"z":"a263af79.79be7","wires":[["e7d26d70.8c261"]]},{"id":"e7d26d70.8c261","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1592.815170288086,"y":865.5293779373169,"z":"a263af79.79be7","wires":[["f62dd972.e08ee8"]]},{"id":"c5f1bd14.e6f7b","type":"other","name":"N","xml":"<outcome value='N'>\n","comments":"","outputs":1,"x":1434.8787269592285,"y":901.2436723709106,"z":"a263af79.79be7","wires":[["217d22c5.3b376e"]]},{"id":"46544c35.ca6164","type":"set","name":"set dhcp boolean","xml":"<set>\n<parameter name='tmp.ipv6dhcp-enabled' value='false' />\n\n\n\n","comments":"","x":1794.8787269592285,"y":899.8151140213013,"z":"a263af79.79be7","wires":[]},{"id":"217d22c5.3b376e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1595.5771980285645,"y":901.1801700592041,"z":"a263af79.79be7","wires":[["46544c35.ca6164"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_create-route-target-and-vpn-binding.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_create-route-target-and-vpn-binding.json
new file mode 100755
index 0000000..2efa3ab
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_create-route-target-and-vpn-binding.json
@@ -0,0 +1 @@
+[{"id":"606888d7.b4a878","type":"dgstart","name":"DGSTART","outputs":1,"x":147.00390625,"y":95.00390625,"z":"c985e328.7b018","wires":[["50e98f1c.8753c"]]},{"id":"50e98f1c.8753c","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":358.86101722717285,"y":200.4801082611084,"z":"c985e328.7b018","wires":[["3adf4e79.c449f2"]]},{"id":"3adf4e79.c449f2","type":"method","name":"create-route-target-and-vpn-binding","xml":"<method rpc='create-route-target-and-vpn-binding' mode='sync'>\n","comments":"","outputs":1,"x":336.77784729003906,"y":279.9920196533203,"z":"c985e328.7b018","wires":[["64d60645.2cdce8"]]},{"id":"fe204c24.83b","type":"switchNode","name":"switch aic-zone","xml":"<switch test='`$rt.aic-zone`'>\n\n","comments":"","outputs":1,"x":682.5754013061523,"y":250.28968906402588,"z":"c985e328.7b018","wires":[["ad158186.b0d96"]]},{"id":"64d60645.2cdce8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":362.7181854248047,"y":369.2896385192871,"z":"c985e328.7b018","wires":[["fe204c24.83b","54991ae8.541a84","2b1140c1.9ea8b","70ab6f2.b9a8b9","cc4eca53.c15de8","5f5137d2.d8c4e8","95fda830.9b17e8","72d0b7c4.42dea8","fce45cda.6c865","4df978c0.bf9788","3801f652.f2aa5a","3bc0ef9e.76bdf","99021b0f.ba4168","ea9519dc.13b0e8","c922ec7a.ea7b8","38d6d873.d9d7d8","a9c3a473.5d8b58","6e9acffa.e0d5c","894de078.58c28","c40fc4f1.3bc1a8","e5ac76bd.52fb48"]]},{"id":"ad158186.b0d96","type":"other","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":955.7183303833008,"y":328.00395941734314,"z":"c985e328.7b018","wires":[["c1846171.54116"]]},{"id":"c1846171.54116","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"Error missing parameters to create-local-route-target\" />\n","comments":"","x":1167.0040893554688,"y":329.00398445129395,"z":"c985e328.7b018","wires":[]},{"id":"a3124829.2c30d8","type":"comment","name":"Call microservice to allocate route target","info":"","comments":"","x":704.0039749145508,"y":1127.0040884017944,"z":"c985e328.7b018","wires":[]},{"id":"54991ae8.541a84","type":"execute","name":"execute RestApiCallNode - call allocateroutetarget microservice","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.allocateRT`' />\n     <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`\" />\n    <parameter name='restapiUser' value='`$prop.rt.mS.user`' />\n    <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />\n    <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name=\"responsePrefix\" value=\"msRT\" />\n\n","comments":"","outputs":1,"x":783.0039978027344,"y":1159.2542114257812,"z":"c985e328.7b018","wires":[["b0067d02.7f50f","8e0d0ead.f5775"]]},{"id":"b0067d02.7f50f","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1152.003978729248,"y":1161.0041184425354,"z":"c985e328.7b018","wires":[["50a171e0.32d7a"]]},{"id":"50a171e0.32d7a","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1322.0039329528809,"y":1160.5040040016174,"z":"c985e328.7b018","wires":[["462707ff.cb3868"]]},{"id":"8e0d0ead.f5775","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1153.8558082580566,"y":1196.0703372955322,"z":"c985e328.7b018","wires":[["42358325.3f720c"]]},{"id":"462707ff.cb3868","type":"switchNode","name":"switch responseCode","xml":"<switch test='`$msRT.responseCode`'>\n","comments":"","outputs":1,"x":1552.0038986206055,"y":1161.0040969848633,"z":"c985e328.7b018","wires":[["b47bed62.5199e","eb11d901.1b74c8"]]},{"id":"b47bed62.5199e","type":"other","name":"200","xml":"<outcome value='200'>\n","comments":"","outputs":1,"x":1765.0041313171387,"y":1224.0040245056152,"z":"c985e328.7b018","wires":[[]]},{"id":"eb11d901.1b74c8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1766.004306793213,"y":1256.004098892212,"z":"c985e328.7b018","wires":[["e3d98389.5414f"]]},{"id":"2b1140c1.9ea8b","type":"switchNode","name":"switch resource","xml":"<switch test='`$rt.resource`'>\n\n","comments":"","outputs":1,"x":682.0039672851562,"y":280.003942489624,"z":"c985e328.7b018","wires":[["ad158186.b0d96"]]},{"id":"70ab6f2.b9a8b9","type":"switchNode","name":"switch resource-value","xml":"<switch test='`$rt.resource-value`'>\n\n","comments":"","outputs":1,"x":703.0039901733398,"y":312.0039367675781,"z":"c985e328.7b018","wires":[["ad158186.b0d96"]]},{"id":"6b3f48c0.aeaf18","type":"block","name":"block","xml":"<block>","atomic":"false","outputs":1,"x":1083.8968029022217,"y":1617.6404304504395,"z":"c985e328.7b018","wires":[["61df93f5.b8804c","25329b31.482244"]]},{"id":"cc4eca53.c15de8","type":"call","name":"call generate-vpn-binding-id","xml":"<call module='GENERIC-RESOURCE-API' rpc='generate-vpn-binding-id' mode='sync' >\n","comments":"","outputs":1,"x":676.00390625,"y":862.0040884017944,"z":"c985e328.7b018","wires":[[]]},{"id":"5f5137d2.d8c4e8","type":"set","name":"set vpn-binding.vpn-binding-id","xml":"<set>\n<parameter name='vpn-binding.vpn-binding-id' value='`$tmp.return.generate-vpn-binding-id.uuid`' />\n\n\n\n\n","comments":"","x":684.0039215087891,"y":893.0040884017944,"z":"c985e328.7b018","wires":[]},{"id":"72d0b7c4.42dea8","type":"save","name":"save AnAI - vpn-binding","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vpn-binding\" \n\t\tkey=\"vpn-binding.vpn-id = $vpn-binding.vpn-binding-id\" >\n<parameter name=\"vpn-id\" value=\"`$vpn-binding.vpn-binding-id`\" />\n<parameter name=\"vpn-name\" value=\"`$vpn-binding.vpn-name`\" />","comments":"","outputs":1,"x":662.0039138793945,"y":1028.0039520263672,"z":"c985e328.7b018","wires":[["1c658501.de976b","9bb997c9.cdf238"]]},{"id":"95fda830.9b17e8","type":"switchNode","name":"switch network-name","xml":"<switch test='`$rt.network-name`'>\n\n","comments":"","outputs":1,"x":706.0039596557617,"y":348.0039641857147,"z":"c985e328.7b018","wires":[["ad158186.b0d96"]]},{"id":"1c658501.de976b","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":882.0038986206055,"y":1018.0039558410645,"z":"c985e328.7b018","wires":[["c766b965.ded478"]]},{"id":"9bb997c9.cdf238","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":887.813346862793,"y":1046.4802742004395,"z":"c985e328.7b018","wires":[["c766b965.ded478"]]},{"id":"c766b965.ded478","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"Error creating vpn-binding in AAI\" />\n","comments":"","x":1072.004005432129,"y":1025.0040802955627,"z":"c985e328.7b018","wires":[]},{"id":"a3301814.997358","type":"delete","name":"delete vpn-binding","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vpn-binding\" \n\tkey=\"vpn-id = $rt.vpn-id\">","comments":"","outputs":1,"x":1988.0040283203125,"y":1779.0039138793945,"z":"c985e328.7b018","wires":[[]]},{"id":"43b38603.863e48","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Error writing to vpn binding - ' + $tmp.error-message`\"/>","comments":"","x":1972.6083221435547,"y":1895.2001132965088,"z":"c985e328.7b018","wires":[]},{"id":"2a6a140.b0d5bec","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Error: calling allocate resource microservice\"/>","comments":"","x":1553.0040588378906,"y":1194.0041122436523,"z":"c985e328.7b018","wires":[]},{"id":"25329b31.482244","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1777.0040283203125,"y":1780.0039138793945,"z":"c985e328.7b018","wires":[["a3301814.997358","43b38603.863e48","1bf43d58.da22a3","d8854478.161e88"]]},{"id":"4de04652.8832d8","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Error: calling allocate resource microservice - responseCode: ' + $msRT.responseCode + ' responseMsg: ' + $msRT.responseMessage + ' allocateRouteTargetStatus: ' + $msRT.allocateRouteTargetStatus `\"/>","comments":"","x":2126.2542457580566,"y":1255.004135131836,"z":"c985e328.7b018","wires":[]},{"id":"e3d98389.5414f","type":"block","name":"block","xml":"<block>","atomic":"false","outputs":1,"x":1926.2540893554688,"y":1256.004072189331,"z":"c985e328.7b018","wires":[["4de04652.8832d8","25329b31.482244"]]},{"id":"42358325.3f720c","type":"block","name":"block","xml":"<block>","atomic":"false","outputs":1,"x":1300.2539138793945,"y":1193.0040073394775,"z":"c985e328.7b018","wires":[["2a6a140.b0d5bec","25329b31.482244"]]},{"id":"4df978c0.bf9788","type":"set","name":"set: get-data-from-policy-input.policy-instance-name for vpn binding","xml":"<set>\n\t<parameter name=\"get-data-from-policy-input.policy-instance-name\" value=\"`$get-complex-resource-service-model-output.vpn-binding-policy`\" />\n\t","comments":"","x":795.0039749145508,"y":712.0039162635803,"z":"c985e328.7b018","wires":[]},{"id":"3801f652.f2aa5a","type":"call","name":"call get-data-from-policy","xml":"<call module='GENERIC-RESOURCE-API' rpc='get-data-from-policy' mode='sync' >\n","comments":"","outputs":1,"x":658.0038681030273,"y":743.0038180351257,"z":"c985e328.7b018","wires":[[]]},{"id":"2aff268a.886efa","type":"comment","name":"Determine policy vpn binding info","info":"","comments":"","x":686.0039138793945,"y":679.0038523674011,"z":"c985e328.7b018","wires":[]},{"id":"3bc0ef9e.76bdf","type":"set","name":"set: vpn-binding info from policy","xml":"<set>\n\t<parameter name=\"vpn-binding.vpn-name\" value=\"`$rt.network-name`\" />\n\t<parameter name=\"vpn-binding.asn\" value=\"`$get-data-from-policy-output.asn`\" />\n\t<parameter name=\"vpn-binding.route-target-role\" value=\"`$get-data-from-policy-output.route-target-role`\" />\n\t<parameter name=\"vpn-binding.aic-zone\" value=\"`$rt.aic-zone`\" />\n\t<parameter name=\"vpn-binding.route-target-category\" value=\"local\" />\n\t<parameter name=\"vpn-binding.resource\" value=\"`$rt.resource`\" />\n\t<parameter name=\"vpn-binding.resource-value\" value=\"`$rt.resource-value`\" />","comments":"","x":682.5039367675781,"y":775.0038685798645,"z":"c985e328.7b018","wires":[]},{"id":"fce45cda.6c865","type":"set","name":"set: vpn-binding.global-route-target","xml":"<set>\n\t<parameter name=\"vpn-binding.global-route-target\" value=\"`$msRT.routeTargetID`\" />\n","comments":"","x":693.0039978027344,"y":1193.004108428955,"z":"c985e328.7b018","wires":[]},{"id":"361834e3.17ddbc","type":"comment","name":"Generate unique vpn binding id","info":"","comments":"","x":675.2539215087891,"y":827.0040121078491,"z":"c985e328.7b018","wires":[]},{"id":"70f87c50.cd0d94","type":"comment","name":"Save vpn-binding object in AAI","info":"","comments":"","x":675.2539291381836,"y":993.0040020942688,"z":"c985e328.7b018","wires":[]},{"id":"c40fc4f1.3bc1a8","type":"save","name":"save AnAI - vpn-binding.route-target","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"route-target\" \n\t\tkey=\"vpn-binding.vpn-binding-id = $vpn-binding.vpn-binding-id \n\t\t\tAND route-target.global-route-target = $vpn-binding.global-route-target\n\t\t\tAND route-target.route-target-role = $vpn-binding.route-target-role\" >\n<!-- Create route-target object -->\n<parameter name=\"global-route-target\" value=\"`$vpn-binding.global-route-target`\" />\n<parameter name=\"route-target-role\" value=\"`$vpn-binding.route-target-role`\" />\n","comments":"","outputs":1,"x":685.25390625,"y":1618.004186630249,"z":"c985e328.7b018","wires":[["e47dc0e3.9beda","4ca35e1d.0db61"]]},{"id":"e47dc0e3.9beda","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":942.2538757324219,"y":1614.0039720535278,"z":"c985e328.7b018","wires":[["6b3f48c0.aeaf18"]]},{"id":"4ca35e1d.0db61","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":948.0633239746094,"y":1642.4802904129028,"z":"c985e328.7b018","wires":[["6b3f48c0.aeaf18"]]},{"id":"61df93f5.b8804c","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Error: failed to save route target in AAI\"/>","comments":"","x":1295.2538757324219,"y":1619.0039720535278,"z":"c985e328.7b018","wires":[]},{"id":"5291deee.55bce","type":"comment","name":"Validate mandatory parmaeters","info":"","comments":"","x":728.2539520263672,"y":217.00390887260437,"z":"c985e328.7b018","wires":[]},{"id":"d247e1.92be382","type":"execute","name":"execute RestApiCallNode - call releaseroutetarget microservice","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.releaseRT`' />\n     <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`\" />\n    <parameter name='restapiUser' value='`$prop.rt.mS.user`' />\n    <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />\n    <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name=\"responsePrefix\" value=\"msRT\" />\n\n","comments":"","outputs":1,"x":2669.7542114257812,"y":1738.0041303634644,"z":"c985e328.7b018","wires":[[]]},{"id":"1bf43d58.da22a3","type":"switchNode","name":"switch vpn-binding.global-route-target is not null","xml":"<switch test=\"`$vpn-binding.global-route-target != ''`\">\n\n","comments":"","outputs":1,"x":2081.504119873047,"y":1738.004162788391,"z":"c985e328.7b018","wires":[["659d5476.4d1b6c"]]},{"id":"659d5476.4d1b6c","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2347.254051208496,"y":1738.0039501190186,"z":"c985e328.7b018","wires":[["d247e1.92be382"]]},{"id":"e5ac76bd.52fb48","type":"execute","name":"execute RestApiCallNode - PUT vpnbinding by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-vpn-binding\" />\n\n","comments":"","outputs":1,"x":717.0039367675781,"y":1420.0041275024414,"z":"c985e328.7b018","wires":[["99e39f1.4e98f6","9bb382c6.de9d9"]]},{"id":"99e39f1.4e98f6","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":983.9786720275879,"y":1449.6690855026245,"z":"c985e328.7b018","wires":[["eb4e0d1a.59417"]]},{"id":"9bb382c6.de9d9","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":978.3120613098145,"y":1418.168921470642,"z":"c985e328.7b018","wires":[["eb4e0d1a.59417"]]},{"id":"65c82154.a610b","type":"comment","name":"Add VPN Binding to mdsal","info":"","comments":"","x":641.2895660400391,"y":1390.1943273544312,"z":"c985e328.7b018","wires":[]},{"id":"eb4e0d1a.59417","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1130.04594039917,"y":1429.3796319961548,"z":"c985e328.7b018","wires":[["1564c253.b7ef1e","25329b31.482244"]]},{"id":"99021b0f.ba4168","type":"execute","name":"generate vpn-binding url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.network-instance-group-vpn-binding`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vpn-binding-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$rt.service-instance-id`\"/>\n","comments":"","outputs":1,"x":666.0039978027344,"y":552.0040302276611,"z":"c985e328.7b018","wires":[[]]},{"id":"ea9519dc.13b0e8","type":"switchNode","name":"switch service-instance-id","xml":"<switch test='`$rt.service-instance-id`'>\n\n","comments":"","outputs":1,"x":723.0039367675781,"y":380.0039052963257,"z":"c985e328.7b018","wires":[["ad158186.b0d96"]]},{"id":"c922ec7a.ea7b8","type":"execute","name":"generate vpn-binding url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.vpn-binding-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vpn-binding-url\"/>\n    <parameter name=\"target\" value=\"{network-instance-group-id}\"/>\n    <parameter name=\"replacement\" value=\"`$rt.network-instance-group-id`\"/>\n","comments":"","outputs":1,"x":671.0039215087891,"y":591.0039548873901,"z":"c985e328.7b018","wires":[[]]},{"id":"38d6d873.d9d7d8","type":"switchNode","name":"switch network-instance-group-id","xml":"<switch test='`$rt.network-instance-group-id`'>\n\n","comments":"","outputs":1,"x":745.0039367675781,"y":413.0039052963257,"z":"c985e328.7b018","wires":[["ad158186.b0d96"]]},{"id":"a9c3a473.5d8b58","type":"execute","name":"generate vpn-binding url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.vpn-binding-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vpn-binding-url\"/>\n    <parameter name=\"target\" value=\"{network-id}\"/>\n    <parameter name=\"replacement\" value=\"`$rt.network-id`\"/>\n","comments":"","outputs":1,"x":674.0039215087891,"y":624.0039310455322,"z":"c985e328.7b018","wires":[[]]},{"id":"6e9acffa.e0d5c","type":"switchNode","name":"switch network-id","xml":"<switch test='`$rt.network-id`'>\n\n","comments":"","outputs":1,"x":701.0039596557617,"y":444.00392150878906,"z":"c985e328.7b018","wires":[["ad158186.b0d96"]]},{"id":"894de078.58c28","type":"execute","name":"generate vpn-binding url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.vpn-binding-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vpn-binding-url\"/>\n    <parameter name=\"target\" value=\"{vpn-binding-id}\"/>\n    <parameter name=\"replacement\" value=\"`$vpn-binding.vpn-binding-id`\"/>\n","comments":"","outputs":1,"x":670.00390625,"y":943.0039978027344,"z":"c985e328.7b018","wires":[[]]},{"id":"b73f3c40.df242","type":"comment","name":"Need to rollback AAI and Ms","info":"","comments":"","x":1334.0039978027344,"y":1398.004189491272,"z":"c985e328.7b018","wires":[]},{"id":"1564c253.b7ef1e","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Error: failed to save vpn-binding in md-sal\" />","comments":"","x":1325.00390625,"y":1428.004096031189,"z":"c985e328.7b018","wires":[]},{"id":"d8854478.161e88","type":"execute","name":"execute RestApiCallNode - DELETE vpnbinding by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-vpn-binding\" />\n\n","comments":"","outputs":1,"x":2087.253921508789,"y":1859.0040073394775,"z":"c985e328.7b018","wires":[["7174455f.d6f84c","7a010c3f.208a24"]]},{"id":"7174455f.d6f84c","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2384.2287635803223,"y":1885.668996810913,"z":"c985e328.7b018","wires":[["67137964.139e48"]]},{"id":"7a010c3f.208a24","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2378.562152862549,"y":1854.1688327789307,"z":"c985e328.7b018","wires":[["67137964.139e48"]]},{"id":"b0d286cd.289718","type":"comment","name":"Add VPN Binding to mdsal","info":"","comments":"","x":2005.539535522461,"y":1820.1941061019897,"z":"c985e328.7b018","wires":[]},{"id":"67137964.139e48","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2530.2960319519043,"y":1865.3795433044434,"z":"c985e328.7b018","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-activate.json
new file mode 100644
index 0000000..5bba62e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-activate.json
@@ -0,0 +1,2174 @@
+[
+  {
+    "id": "9a2121f0.ab226",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 94.03125,
+    "y": 32.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "28432de4.829522"
+      ]
+    ]
+  },
+  {
+    "id": "28432de4.829522",
+    "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": 310.53125,
+    "y": 94.53125,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "7b6afe55.703bf"
+      ]
+    ]
+  },
+  {
+    "id": "7b6afe55.703bf",
+    "type": "method",
+    "name": "method dci-connects-network-topology-operation-activate",
+    "xml": "<method rpc='dci-connects-network-topology-operation-activate' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 218.53128051757812,
+    "y": 189.53123474121094,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "7aac1d87.9d5a54"
+      ]
+    ]
+  },
+  {
+    "id": "7aac1d87.9d5a54",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 516.3645935058594,
+    "y": 197.3645782470703,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "cb7a0f33.08841",
+        "41001981.644338",
+        "d0276d0c.b633e",
+        "3620f5be.990eda",
+        "2b8696d6.909b7a"
+      ]
+    ]
+  },
+  {
+    "id": "41001981.644338",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:validate-network-input-parameters",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-network-input-parameters' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 906.3645935058594,
+    "y": 62.36457824707031,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "fbe61431.dcd008",
+    "type": "for",
+    "name": "for each network-input-parameters",
+    "xml": "<for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1424.3648834228516,
+    "y": 335.364639043808,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "bde6b624.723588"
+      ]
+    ]
+  },
+  {
+    "id": "bde6b624.723588",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1671.3647918701172,
+    "y": 333.36460852622986,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "98af934f.de5ca",
+        "3f901ccb.13f7e4",
+        "fd071c4f.c5a93",
+        "3bc28b07.5abd24",
+        "d7ef4fd8.01b03",
+        "23f59b17.2b7104",
+        "ac8abe82.f1ed7",
+        "abada83e.899ad8",
+        "8275a286.575d3"
+      ]
+    ]
+  },
+  {
+    "id": "98af934f.de5ca",
+    "type": "switchNode",
+    "name": "switch id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2158.36515045166,
+    "y": 209.36472511291504,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "e685ff47.0f8c6"
+      ]
+    ]
+  },
+  {
+    "id": "3f901ccb.13f7e4",
+    "type": "switchNode",
+    "name": "switch description",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_description'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2186.36515045166,
+    "y": 263.3647108078003,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "92cb9e5c.495d"
+      ]
+    ]
+  },
+  {
+    "id": "fd071c4f.c5a93",
+    "type": "switchNode",
+    "name": "switch routerId",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_routerId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2175.3649368286133,
+    "y": 394.364670753479,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "611f6a53.2c5e34"
+      ]
+    ]
+  },
+  {
+    "id": "3bc28b07.5abd24",
+    "type": "switchNode",
+    "name": "switch importRT1",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_importRT1'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2183.6506729125977,
+    "y": 455.6504240036011,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "375c46a9.18d9fa"
+      ]
+    ]
+  },
+  {
+    "id": "d7ef4fd8.01b03",
+    "type": "switchNode",
+    "name": "switch exportRT1",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_exportRT1'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2184.650733947754,
+    "y": 519.6503947973251,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "7f0820af.096cd"
+      ]
+    ]
+  },
+  {
+    "id": "23f59b17.2b7104",
+    "type": "switchNode",
+    "name": "switch vni",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_vni'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2155.650703430176,
+    "y": 582.650426864624,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "4089b1ef.cda1c"
+      ]
+    ]
+  },
+  {
+    "id": "e685ff47.0f8c6",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2373.36515045166,
+    "y": 208.36472511291504,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "51bd251c.e4250c"
+      ]
+    ]
+  },
+  {
+    "id": "92cb9e5c.495d",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2384.36515045166,
+    "y": 263.3647108078003,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "22a14741.398828"
+      ]
+    ]
+  },
+  {
+    "id": "611f6a53.2c5e34",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2380.3649368286133,
+    "y": 393.364670753479,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "41aaa6a9.d85078"
+      ]
+    ]
+  },
+  {
+    "id": "375c46a9.18d9fa",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2385.6506729125977,
+    "y": 454.6504240036011,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "df1889e8.640458"
+      ]
+    ]
+  },
+  {
+    "id": "7f0820af.096cd",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2380.650733947754,
+    "y": 516.6503947973251,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "c98004ad.61e968"
+      ]
+    ]
+  },
+  {
+    "id": "4089b1ef.cda1c",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2361.650703430176,
+    "y": 582.650426864624,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "66980c68.e238a4"
+      ]
+    ]
+  },
+  {
+    "id": "22a14741.398828",
+    "type": "set",
+    "name": "set description",
+    "xml": "<set>\n<parameter name='prop.dci-connects.description' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2566.36515045166,
+    "y": 256.3647108078003,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "41aaa6a9.d85078",
+    "type": "set",
+    "name": "set router_id",
+    "xml": "<set>\n<parameter name='prop.dci-connects.router_id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2571.3651580810547,
+    "y": 386.3647575378418,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "66980c68.e238a4",
+    "type": "set",
+    "name": "set vni",
+    "xml": "<set>\n<parameter name='prop.dci-connects.vni' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2531.650703430176,
+    "y": 574.650426864624,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "cb7a0f33.08841",
+    "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": 739.6504211425781,
+    "y": 1160.0789794921875,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "ac8abe82.f1ed7",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2169.5316848754883,
+    "y": 150.53135681152344,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "893c0950.32cf08"
+      ]
+    ]
+  },
+  {
+    "id": "893c0950.32cf08",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2367.5316848754883,
+    "y": 150.53135681152344,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "96a16277.d8925"
+      ]
+    ]
+  },
+  {
+    "id": "96a16277.d8925",
+    "type": "set",
+    "name": "set name",
+    "xml": "<set>\n<parameter name='prop.dci-connects.name' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2549.5316848754883,
+    "y": 143.53135681152344,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "abada83e.899ad8",
+    "type": "switchNode",
+    "name": "switch networkName",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_networkName'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2193.0314712524414,
+    "y": 329.5312967300415,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "1782d68.c5bab2a"
+      ]
+    ]
+  },
+  {
+    "id": "1782d68.c5bab2a",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2391.0314712524414,
+    "y": 329.5312967300415,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "c20d9d61.613f4"
+      ]
+    ]
+  },
+  {
+    "id": "d0276d0c.b633e",
+    "type": "block",
+    "name": "block : execute",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 740.0311813354492,
+    "y": 570.5312957763672,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "c757fa0f.e50b68",
+        "72f61efd.b156e",
+        "4214f6f2.3f8798"
+      ]
+    ]
+  },
+  {
+    "id": "c757fa0f.e50b68",
+    "type": "block",
+    "name": "block : executeSite1",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1032.5312423706055,
+    "y": 395.0312719345093,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "fbe61431.dcd008",
+        "5ae98389.5ebcac"
+      ]
+    ]
+  },
+  {
+    "id": "72f61efd.b156e",
+    "type": "block",
+    "name": "block : executeSite2",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1049.5312881469727,
+    "y": 911.0312547683716,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "9f956db.3ed2b9",
+        "5ae98389.5ebcac"
+      ]
+    ]
+  },
+  {
+    "id": "f0009f7e.40e02",
+    "type": "switchNode",
+    "name": "switch id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2144.031494140625,
+    "y": 730.0311889648438,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "f550858e.14e1d8"
+      ]
+    ]
+  },
+  {
+    "id": "5318cc5a.897f04",
+    "type": "switchNode",
+    "name": "switch description",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_description'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2168.0318450927734,
+    "y": 789.031195640564,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "bcd540c3.4e804",
+        "69713a16.fbae84"
+      ]
+    ]
+  },
+  {
+    "id": "3b3ae1d4.d5835e",
+    "type": "switchNode",
+    "name": "switch routerId",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_routerId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2177.031234741211,
+    "y": 985.0311613082886,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "f75e99a8.64ed88"
+      ]
+    ]
+  },
+  {
+    "id": "3ceece62.09ddd2",
+    "type": "switchNode",
+    "name": "switch importRT1",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_importRT1'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2185.3169708251953,
+    "y": 1046.3169145584106,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "2cfb39ee.eacf86"
+      ]
+    ]
+  },
+  {
+    "id": "8c9a50d3.0bead",
+    "type": "switchNode",
+    "name": "switch exportRT1",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_exportRT1'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2186.3170318603516,
+    "y": 1110.3168853521347,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "ff36bc65.60ac5"
+      ]
+    ]
+  },
+  {
+    "id": "db4a0111.c3372",
+    "type": "switchNode",
+    "name": "switch vni",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_vni'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2157.3170013427734,
+    "y": 1173.3169174194336,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "1ba16f6b.433171"
+      ]
+    ]
+  },
+  {
+    "id": "f550858e.14e1d8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2359.031494140625,
+    "y": 729.0311889648438,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "5c56e96c.6b3588"
+      ]
+    ]
+  },
+  {
+    "id": "bcd540c3.4e804",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2366.0318450927734,
+    "y": 789.031195640564,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "cd16655c.572058"
+      ]
+    ]
+  },
+  {
+    "id": "f75e99a8.64ed88",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2382.031234741211,
+    "y": 984.0311613082886,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "b3528ffb.5fd92"
+      ]
+    ]
+  },
+  {
+    "id": "2cfb39ee.eacf86",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2387.3169708251953,
+    "y": 1045.3169145584106,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "d44c3f36.87166"
+      ]
+    ]
+  },
+  {
+    "id": "ff36bc65.60ac5",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2382.3170318603516,
+    "y": 1107.3168853521347,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "84652cfb.a0fe1"
+      ]
+    ]
+  },
+  {
+    "id": "1ba16f6b.433171",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2363.3170013427734,
+    "y": 1173.3169174194336,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "cdec65b1.3e8048"
+      ]
+    ]
+  },
+  {
+    "id": "cd16655c.572058",
+    "type": "set",
+    "name": "set description",
+    "xml": "<set>\n<parameter name='prop.dci-connects.description' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2548.0318450927734,
+    "y": 782.031195640564,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "b3528ffb.5fd92",
+    "type": "set",
+    "name": "set router_id",
+    "xml": "<set>\n<parameter name='prop.dci-connects.router_id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2573.0314559936523,
+    "y": 977.0312480926514,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "cdec65b1.3e8048",
+    "type": "set",
+    "name": "set vni",
+    "xml": "<set>\n<parameter name='prop.dci-connects.vni' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2533.3170013427734,
+    "y": 1165.3169174194336,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "d1df56cb.2256f8",
+    "type": "switchNode",
+    "name": "switch networkName",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_networkName'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2194.697769165039,
+    "y": 920.1977872848511,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "ef73c349.6fa5"
+      ]
+    ]
+  },
+  {
+    "id": "ef73c349.6fa5",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2392.697769165039,
+    "y": 920.1977872848511,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "7381f4dc.54e1ac"
+      ]
+    ]
+  },
+  {
+    "id": "4dae1658.981438",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1663.0309448242188,
+    "y": 852.0311467647552,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "f0009f7e.40e02",
+        "5318cc5a.897f04",
+        "3b3ae1d4.d5835e",
+        "3ceece62.09ddd2",
+        "8c9a50d3.0bead",
+        "db4a0111.c3372",
+        "d1df56cb.2256f8"
+      ]
+    ]
+  },
+  {
+    "id": "9f956db.3ed2b9",
+    "type": "for",
+    "name": "for each network-input-parameters",
+    "xml": "<for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1416.0310363769531,
+    "y": 854.0311772823334,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "4dae1658.981438"
+      ]
+    ]
+  },
+  {
+    "id": "51bd251c.e4250c",
+    "type": "set",
+    "name": "set id",
+    "xml": "<set>\n<parameter name='prop.dci-connects.id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2555.0315322875977,
+    "y": 202.03127479553223,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "8275a286.575d3",
+    "type": "switchNode",
+    "name": "switch tunnelType",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'tunnelType'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2174.53125,
+    "y": 652.0311889648438,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "c5076cc8.20e47"
+      ]
+    ]
+  },
+  {
+    "id": "c5076cc8.20e47",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2380.53125,
+    "y": 652.0311889648438,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "5e2bf82e.5cd788"
+      ]
+    ]
+  },
+  {
+    "id": "5e2bf82e.5cd788",
+    "type": "set",
+    "name": "set tunnelType",
+    "xml": "<set>\n<parameter name='prop.dci-connects.tunnelType' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2550.53125,
+    "y": 644.0311889648438,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "5ae98389.5ebcac",
+    "type": "block",
+    "name": "block : sendRequest",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1328.5312690734863,
+    "y": 1411.5311946868896,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "a53eb6d0.3cb4d8",
+        "e89ebf4b.24d8a",
+        "a95dc9c7.507158",
+        "1c2a13ea.e2fe74"
+      ]
+    ]
+  },
+  {
+    "id": "f8e23e01.428c6",
+    "type": "execute",
+    "name": "execute RestApiCallNode Activate Vxlan Tunnel",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir +'/l3-dci-connects-template.json'`\"/>\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url +'/v2.0/l3-dci-connects'`\"/>\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=\"restapi-result\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2453.531494140625,
+    "y": 1411.5311279296875,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "947732ea.1c0d1",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1815.0312271118164,
+    "y": 1182.530781507492,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "67b5c3a4.c5440c"
+      ]
+    ]
+  },
+  {
+    "id": "cddd83e6.c6954",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1822.0312271118164,
+    "y": 1220.530781507492,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "3ae7115c.f7ed0e"
+      ]
+    ]
+  },
+  {
+    "id": "38e02e05.9540d2",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1814.0312271118164,
+    "y": 1262.530781507492,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "9970d5b0.48c8b8"
+      ]
+    ]
+  },
+  {
+    "id": "3ae7115c.f7ed0e",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",
+    "comments": "",
+    "x": 1979.0312271118164,
+    "y": 1224.530781507492,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "9970d5b0.48c8b8",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",
+    "comments": "",
+    "x": 1972.0312271118164,
+    "y": 1271.530781507492,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "e89ebf4b.24d8a",
+    "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 = $prop.dci-connects.id AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1596.262107849121,
+    "y": 1221.8385467529297,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "947732ea.1c0d1",
+        "cddd83e6.c6954",
+        "38e02e05.9540d2"
+      ]
+    ]
+  },
+  {
+    "id": "67b5c3a4.c5440c",
+    "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<parameter name='prop.sdncRestApi.thirdpartySdnc.vendor' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].vendor`\" />\n\n",
+    "comments": "",
+    "x": 1989.5311584472656,
+    "y": 1179.03076171875,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "720459ea.25c288",
+    "type": "switchNode",
+    "name": "switch tunnelType",
+    "xml": "<switch test=\"`$prop.dci-connects.tunnelType`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1916.5309524536133,
+    "y": 1436.0306386947632,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "2c9d3dbe.0640c2",
+        "d7544d3a.90015"
+      ]
+    ]
+  },
+  {
+    "id": "2c9d3dbe.0640c2",
+    "type": "outcomeTrue",
+    "name": "L3-DCI",
+    "xml": "<outcome value='L3-DCI'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2129.5310821533203,
+    "y": 1416.0306386947632,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "f8e23e01.428c6"
+      ]
+    ]
+  },
+  {
+    "id": "d7544d3a.90015",
+    "type": "outcomeTrue",
+    "name": "L2-DCI",
+    "xml": "<outcome value='L2-DCI'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2127.530902862549,
+    "y": 1488.0306386947632,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "8027a9ed.03b1a8"
+      ]
+    ]
+  },
+  {
+    "id": "5c56e96c.6b3588",
+    "type": "set",
+    "name": "set id",
+    "xml": "<set>\n<parameter name='prop.dci-connects.id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2533.031467437744,
+    "y": 724.0312414169312,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "8027a9ed.03b1a8",
+    "type": "execute",
+    "name": "execute RestApiCallNode Activate Vxlan Tunnel",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir +'/l2-dci-connects-template.json'`\"/>\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url +'/v2.0/l2-dci-connects'`\"/>\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=\"restapi-result\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2447.531448364258,
+    "y": 1488.5310640335083,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "69713a16.fbae84",
+    "type": "outcomeTrue",
+    "name": "false",
+    "xml": "<outcome value='false'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2364.531425476074,
+    "y": 848.0312252044678,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "4372b9a3.950648"
+      ]
+    ]
+  },
+  {
+    "id": "4372b9a3.950648",
+    "type": "set",
+    "name": "set description",
+    "xml": "<set>\n<parameter name='prop.dci-connects.description' value='' />\n",
+    "comments": "",
+    "x": 2545.531494140625,
+    "y": 843.0311660766602,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "df1889e8.640458",
+    "type": "block",
+    "name": "block setEvpnIrts",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2567.531005859375,
+    "y": 456.5468463897705,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "6f2e130.94e59ec",
+        "dd92c777.cb7518"
+      ]
+    ]
+  },
+  {
+    "id": "6f2e130.94e59ec",
+    "type": "set",
+    "name": "set evpn_irts",
+    "xml": "<set>\n<parameter name='tmp.dci-connects.evpn_irts.original' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2813.531005859375,
+    "y": 407.5468463897705,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "dd92c777.cb7518",
+    "type": "execute",
+    "name": "split evpn_irts",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$tmp.dci-connects.evpn_irts.original`'/>\n<parameter name=\"regex\" value=',' />\n<parameter name=\"ctx_memory_result_key\" value=\"tmp.dci-connects.evpn_irts\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2842.531005859375,
+    "y": 459.5468463897705,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "2467a20d.97d24e",
+        "f753e447.178ff8"
+      ]
+    ]
+  },
+  {
+    "id": "f753e447.178ff8",
+    "type": "failure",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3059.531005859375,
+    "y": 385.5468463897705,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "3fe74247.2b4ffe"
+      ]
+    ]
+  },
+  {
+    "id": "2467a20d.97d24e",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3060.531005859375,
+    "y": 451.5468463897705,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "c9fb1d3f.bb93"
+      ]
+    ]
+  },
+  {
+    "id": "c9fb1d3f.bb93",
+    "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": 3241.531005859375,
+    "y": 449.5468463897705,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "2b124117.491c4e",
+    "type": "set",
+    "name": "set evpn_erts",
+    "xml": "<set>\n<parameter name='tmp.dci-connects.evpn_erts.original' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2810.031005859375,
+    "y": 550.0468769073486,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "2298df8c.6d9c9",
+    "type": "execute",
+    "name": "split evpn_erts",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$tmp.dci-connects.evpn_erts.original`'/>\n<parameter name=\"regex\" value=',' />\n<parameter name=\"ctx_memory_result_key\" value=\"tmp.dci-connects.evpn_erts\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2839.031005859375,
+    "y": 602.0468769073486,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "644f6742.689668",
+        "6d20d2f8.9ddb2c"
+      ]
+    ]
+  },
+  {
+    "id": "6d20d2f8.9ddb2c",
+    "type": "failure",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3056.031005859375,
+    "y": 528.0468769073486,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "2e47e496.1bceac"
+      ]
+    ]
+  },
+  {
+    "id": "644f6742.689668",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3057.031005859375,
+    "y": 594.0468769073486,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "6a2fcced.68d914"
+      ]
+    ]
+  },
+  {
+    "id": "6a2fcced.68d914",
+    "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": 3238.031005859375,
+    "y": 592.0468769073486,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "c98004ad.61e968",
+    "type": "block",
+    "name": "block setEvpnErts",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2561.0308990478516,
+    "y": 512.0469341278076,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "2b124117.491c4e",
+        "2298df8c.6d9c9"
+      ]
+    ]
+  },
+  {
+    "id": "3fe74247.2b4ffe",
+    "type": "for",
+    "name": "for each evpn_irts",
+    "xml": "<for index='idx' start='0' end='`$tmp.dci-connects.evpn_irts_length`' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3262.0311698913574,
+    "y": 385.0468864440918,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "c4293a61.68fc98"
+      ]
+    ]
+  },
+  {
+    "id": "c4293a61.68fc98",
+    "type": "set",
+    "name": "set evpn_irt",
+    "xml": "<set>\n<parameter name='prop.dci-connects.evpn_irts[$idx]' value='`$tmp.dci-connects.evpn_irts[$idx]`' />\n",
+    "comments": "",
+    "x": 3474.0316619873047,
+    "y": 385.0470390319824,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "2e47e496.1bceac",
+    "type": "for",
+    "name": "for each evpn_erts",
+    "xml": "<for index='idx' start='0' end='`$tmp.dci-connects.evpn_erts_length`' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3255.531005859375,
+    "y": 524.0468769073486,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "13b1522d.393f1e"
+      ]
+    ]
+  },
+  {
+    "id": "13b1522d.393f1e",
+    "type": "set",
+    "name": "set evpn_ert",
+    "xml": "<set>\n<parameter name='prop.dci-connects.evpn_erts[$idx]' value='`$tmp.dci-connects.evpn_erts[$idx]`' />\n",
+    "comments": "",
+    "x": 3467.5314979553223,
+    "y": 524.0470294952393,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "30d90f98.fb133",
+    "type": "set",
+    "name": "set evpn_irts",
+    "xml": "<set>\n<parameter name='tmp.dci-connects.evpn_irts.original' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2826.531005859375,
+    "y": 990.5468158721924,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "abdf511f.438e3",
+    "type": "execute",
+    "name": "split evpn_irts",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$tmp.dci-connects.evpn_irts.original`'/>\n<parameter name=\"regex\" value=',' />\n<parameter name=\"ctx_memory_result_key\" value=\"tmp.dci-connects.evpn_irts\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2855.531005859375,
+    "y": 1042.5468158721924,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "8434219c.36d76",
+        "ff7f5f04.46946"
+      ]
+    ]
+  },
+  {
+    "id": "ff7f5f04.46946",
+    "type": "failure",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3072.531005859375,
+    "y": 968.5468158721924,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "b7596a0e.6a9b38"
+      ]
+    ]
+  },
+  {
+    "id": "8434219c.36d76",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3073.531005859375,
+    "y": 1034.5468158721924,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "e270c137.7edb"
+      ]
+    ]
+  },
+  {
+    "id": "e270c137.7edb",
+    "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": 3254.531005859375,
+    "y": 1032.5468158721924,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "9085479c.4438e8",
+    "type": "set",
+    "name": "set evpn_erts",
+    "xml": "<set>\n<parameter name='tmp.dci-connects.evpn_erts.original' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2823.031005859375,
+    "y": 1133.0468463897705,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "945a19b0.56e0a8",
+    "type": "execute",
+    "name": "split evpn_erts",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$tmp.dci-connects.evpn_erts.original`'/>\n<parameter name=\"regex\" value=',' />\n<parameter name=\"ctx_memory_result_key\" value=\"tmp.dci-connects.evpn_erts\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2852.031005859375,
+    "y": 1185.0468463897705,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "b9f0a76f.ce7bd8",
+        "993c331f.449f2"
+      ]
+    ]
+  },
+  {
+    "id": "993c331f.449f2",
+    "type": "failure",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3069.031005859375,
+    "y": 1111.0468463897705,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "1e3e4911.a9b5d7"
+      ]
+    ]
+  },
+  {
+    "id": "b9f0a76f.ce7bd8",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3070.031005859375,
+    "y": 1177.0468463897705,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "6a46228c.def50c"
+      ]
+    ]
+  },
+  {
+    "id": "6a46228c.def50c",
+    "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": 3251.031005859375,
+    "y": 1175.0468463897705,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "b7596a0e.6a9b38",
+    "type": "for",
+    "name": "for each evpn_irts",
+    "xml": "<for index='idx' start='0' end='`$tmp.dci-connects.evpn_irts_length`' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3275.0311698913574,
+    "y": 968.0468559265137,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "485e43f2.9860dc"
+      ]
+    ]
+  },
+  {
+    "id": "485e43f2.9860dc",
+    "type": "set",
+    "name": "set evpn_irt",
+    "xml": "<set>\n<parameter name='prop.dci-connects.evpn_irts[$idx]' value='`$tmp.dci-connects.evpn_irts[$idx]`' />\n",
+    "comments": "",
+    "x": 3487.0316619873047,
+    "y": 968.0470085144043,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "1e3e4911.a9b5d7",
+    "type": "for",
+    "name": "for each evpn_erts",
+    "xml": "<for index='idx' start='0' end='`$tmp.dci-connects.evpn_erts_length`' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3268.531005859375,
+    "y": 1107.0468463897705,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "d21b6ff7.014f7"
+      ]
+    ]
+  },
+  {
+    "id": "d21b6ff7.014f7",
+    "type": "set",
+    "name": "set evpn_ert",
+    "xml": "<set>\n<parameter name='prop.dci-connects.evpn_erts[$idx]' value='`$tmp.dci-connects.evpn_erts[$idx]`' />\n",
+    "comments": "",
+    "x": 3480.5314979553223,
+    "y": 1107.0469989776611,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "d44c3f36.87166",
+    "type": "block",
+    "name": "block setEvpnIrts",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2580.531005859375,
+    "y": 1039.5468158721924,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "30d90f98.fb133",
+        "abdf511f.438e3"
+      ]
+    ]
+  },
+  {
+    "id": "84652cfb.a0fe1",
+    "type": "block",
+    "name": "block setEvpnErts",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2574.0308990478516,
+    "y": 1095.0469036102295,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "9085479c.4438e8",
+        "945a19b0.56e0a8"
+      ]
+    ]
+  },
+  {
+    "id": "13bf54d6.a265ab",
+    "type": "execute",
+    "name": "execute generate-overlay-network-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.dci.network-id\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1385.6979598999023,
+    "y": 1575.3646783828735,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "1268eeda.0db0e1",
+    "type": "switchNode",
+    "name": "switch service-data.networks_length",
+    "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1377.6979751586914,
+    "y": 1645.3646847009659,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "625ef991.1b4c98",
+        "2a48f9bb.070696"
+      ]
+    ]
+  },
+  {
+    "id": "625ef991.1b4c98",
+    "type": "other",
+    "name": "Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1651.5075454711914,
+    "y": 1614.3170772790909,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "889ad7c.f2f9c28"
+      ]
+    ]
+  },
+  {
+    "id": "2a48f9bb.070696",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1646.3647232055664,
+    "y": 1660.0313717126846,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "ce12c01b.cd317"
+      ]
+    ]
+  },
+  {
+    "id": "889ad7c.f2f9c28",
+    "type": "set",
+    "name": "set nidx",
+    "xml": "<set>\n<parameter name='nidx' value='0' />\n",
+    "comments": "",
+    "x": 1804.5075454711914,
+    "y": 1613.8884884119034,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "ce12c01b.cd317",
+    "type": "set",
+    "name": "set nidx",
+    "xml": "<set>\n<parameter name='nidx' value='`$service-data.networks.network_length`' />\n",
+    "comments": "",
+    "x": 1805.936134338379,
+    "y": 1658.8885494470596,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "98adcf74.8b144",
+    "type": "set",
+    "name": "set network in service-data",
+    "xml": "<set>\n<parameter name=\"service-data.networks.network[$nidx].network-id\" value='`$prop.dci.network-id`' />\n<parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />\n<parameter name=\"service-data.networks.network_length\" value='`$nidx+1`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />\n\n\n",
+    "comments": "",
+    "x": 1349.6979598999023,
+    "y": 1717.3646869659424,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "4214f6f2.3f8798",
+    "type": "block",
+    "name": "block : saveNetworkData",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1046.0312118530273,
+    "y": 1556.6978778839111,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "13bf54d6.a265ab",
+        "1268eeda.0db0e1",
+        "98adcf74.8b144",
+        "ae6337fc.2f77b8"
+      ]
+    ]
+  },
+  {
+    "id": "ae6337fc.2f77b8",
+    "type": "set",
+    "name": "set networkId and network-object-path",
+    "xml": "<set>\n<parameter name='networkId' value='`$prop.dci.network-id`' />\n<parameter name=\"network-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.dci.network-id  + '/network-data/'` \" />",
+    "comments": "",
+    "x": 1382.0312118530273,
+    "y": 1787.0312519073486,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "a53eb6d0.3cb4d8",
+    "type": "record",
+    "name": "record",
+    "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"dci-network-topology-operation-activate\"/>\n<parameter name=\"field3\" value=\"dci-connects.name\"/>\n<parameter name=\"field4\" value=\"`$prop.dci-connects.name`\" />\n<parameter name=\"field5\" value=\"dci-connects.id\"/>\n<parameter name=\"field6\" value=\"`$prop.dci-connects.id`\"/>\n<parameter name=\"field7\" value=\"dci-connects.tunnelType\" />\n<parameter name=\"field8\" value=\"`$prop.dci-connects.tunnelType`\"/>\n<parameter name=\"field9\" value=\"sdncRestApi.thirdpartySdnc.url\"/>\n<parameter name=\"field10\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url`\"/>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1555.364990234375,
+    "y": 1366.697998046875,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "7f7ca562.d8259c",
+    "type": "comment",
+    "name": "TODO",
+    "info": "Currently activate is done without assignment, later divide in two phases.",
+    "comments": "",
+    "x": 1341.0312118530273,
+    "y": 49.69791603088379,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "7381f4dc.54e1ac",
+    "type": "block",
+    "name": "block setLocalNetworks",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2563.531280517578,
+    "y": 919.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "f13c2833.8ad168",
+        "e68592dd.37654"
+      ]
+    ]
+  },
+  {
+    "id": "f13c2833.8ad168",
+    "type": "set",
+    "name": "set local_networks",
+    "xml": "<set>\n<parameter name='tmp.dci-connects.local_networks.original' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2766.531280517578,
+    "y": 854.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "e68592dd.37654",
+    "type": "execute",
+    "name": "split local_networks",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$tmp.dci-connects.local_networks.original`'/>\n<parameter name=\"regex\" value=',' />\n<parameter name=\"ctx_memory_result_key\" value=\"tmp.dci-connects.local_networks\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2795.531280517578,
+    "y": 906.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "18c32d19.cddf83",
+        "717aba8a.7e5bd4"
+      ]
+    ]
+  },
+  {
+    "id": "18c32d19.cddf83",
+    "type": "failure",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2992.531280517578,
+    "y": 841.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "2bac9803.b022f8"
+      ]
+    ]
+  },
+  {
+    "id": "717aba8a.7e5bd4",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2993.531280517578,
+    "y": 907.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "9f287993.deeca8"
+      ]
+    ]
+  },
+  {
+    "id": "9f287993.deeca8",
+    "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": 3174.531280517578,
+    "y": 905.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "2bac9803.b022f8",
+    "type": "for",
+    "name": "for each local_networks",
+    "xml": "<for index='idx' start='0' end='`$tmp.dci-connects.local_networks_length`' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3195.0314445495605,
+    "y": 840.5312900543213,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "b98f501.86efdb"
+      ]
+    ]
+  },
+  {
+    "id": "b98f501.86efdb",
+    "type": "get-resource",
+    "name": "get-resource l3-network",
+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-name = $tmp.dci-connects.local_networks[$idx] AND \n\t\t     depth = '0'\"\n        pfx='tmp.aai.l3-network' local-only='false' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3467.531280517578,
+    "y": 839.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "ff920bc5.185188",
+        "56d15342.77268c",
+        "718e79ef.506a28"
+      ]
+    ]
+  },
+  {
+    "id": "ff920bc5.185188",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3686.3003997802734,
+    "y": 799.7234847545624,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "2dfe1ab5.29ac36"
+      ]
+    ]
+  },
+  {
+    "id": "56d15342.77268c",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3693.3003997802734,
+    "y": 837.7234847545624,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "c8973361.4dcf1"
+      ]
+    ]
+  },
+  {
+    "id": "718e79ef.506a28",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3685.3003997802734,
+    "y": 879.7234847545624,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "965b4a77.b56118"
+      ]
+    ]
+  },
+  {
+    "id": "c8973361.4dcf1",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",
+    "comments": "",
+    "x": 3850.3003997802734,
+    "y": 841.7234847545624,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "965b4a77.b56118",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",
+    "comments": "",
+    "x": 3843.3003997802734,
+    "y": 888.7234847545624,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "2dfe1ab5.29ac36",
+    "type": "set",
+    "name": "set network-id",
+    "xml": "<set>\n<parameter name='prop.dci-connects.local_networks[$idx]' value=\"`$tmp.aai.l3-network.network-id`\" />\n",
+    "comments": "",
+    "x": 3860.8003311157227,
+    "y": 796.2234649658203,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "3620f5be.990eda",
+    "type": "save",
+    "name": "save overlay configuration in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='configuration' \n      key='configuration.configuration-id = $prop.dci.network-id' >\n<parameter name='configuration-id' value='`$prop.dci.network-id`' />\n<parameter name='configuration-type' value='overlay' />\n<parameter name='configuration-sub-type' value='VPN-DCI' />\n<parameter name='orchestration-status' value='Created' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$prop.dci.network-id`' />\n<parameter name='configuration-selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.dci.network-id  + '/network-data/'` \" />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 845.53125,
+    "y": 993.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "2b8696d6.909b7a",
+    "type": "save",
+    "name": "save service relationship in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \n      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id \n         AND customer.global-customer-id = $service-data.networks.network[$nidx].network-data.service-information.global-customer-id \n         AND service-subscription.service-type = $service-data.networks.network[$nidx].network-data.service-information.subscription-service-type' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"configuration\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/configurations/configuration/' + $prop.dci.network-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"configuration.configuration-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.dci.network-id`\" />",
+    "comments": "",
+    "outputs": 1,
+    "x": 803.5312805175781,
+    "y": 1072.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "c20d9d61.613f4",
+    "type": "block",
+    "name": "block setLocalNetworks",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2594.03125,
+    "y": 326.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "e8def7b2.2fbf88",
+        "8e1e86c2.e5c6e8"
+      ]
+    ]
+  },
+  {
+    "id": "e8def7b2.2fbf88",
+    "type": "set",
+    "name": "set local_networks",
+    "xml": "<set>\n<parameter name='tmp.dci-connects.local_networks.original' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2797.03125,
+    "y": 261.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "8e1e86c2.e5c6e8",
+    "type": "execute",
+    "name": "split local_networks",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$tmp.dci-connects.local_networks.original`'/>\n<parameter name=\"regex\" value=',' />\n<parameter name=\"ctx_memory_result_key\" value=\"tmp.dci-connects.local_networks\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2826.03125,
+    "y": 313.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "79bfda71.3cba44",
+        "385c2789.bb9748"
+      ]
+    ]
+  },
+  {
+    "id": "79bfda71.3cba44",
+    "type": "failure",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3023.03125,
+    "y": 248.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "4e5e1e98.3ee33"
+      ]
+    ]
+  },
+  {
+    "id": "385c2789.bb9748",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3024.03125,
+    "y": 314.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "31b680e7.4204f"
+      ]
+    ]
+  },
+  {
+    "id": "31b680e7.4204f",
+    "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": 3205.03125,
+    "y": 312.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "4e5e1e98.3ee33",
+    "type": "for",
+    "name": "for each local_networks",
+    "xml": "<for index='idx' start='0' end='`$tmp.dci-connects.local_networks_length`' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3225.5314140319824,
+    "y": 247.5312900543213,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "92921b5e.2aea28"
+      ]
+    ]
+  },
+  {
+    "id": "92921b5e.2aea28",
+    "type": "get-resource",
+    "name": "get-resource l3-network",
+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-name = $tmp.dci-connects.local_networks[$idx] AND \n\t\t     depth = '0'\"\n        pfx='tmp.aai.l3-network' local-only='false' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3498.03125,
+    "y": 246.03125,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "7f44a5cd.ed61ec",
+        "94e571af.d5d5a",
+        "396567f.b05f898"
+      ]
+    ]
+  },
+  {
+    "id": "396567f.b05f898",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3715.8003692626953,
+    "y": 286.7234847545624,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "4b36101d.3eb74"
+      ]
+    ]
+  },
+  {
+    "id": "94e571af.d5d5a",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3723.8003692626953,
+    "y": 244.72348475456238,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "4dd39096.a8b53"
+      ]
+    ]
+  },
+  {
+    "id": "7f44a5cd.ed61ec",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3716.8003692626953,
+    "y": 206.72348475456238,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "f52617f1.8bd0b8"
+      ]
+    ]
+  },
+  {
+    "id": "f52617f1.8bd0b8",
+    "type": "set",
+    "name": "set network-id",
+    "xml": "<set>\n<parameter name='prop.dci-connects.local_networks[$idx]' value=\"`$tmp.aai.l3-network.network-id`\" />\n",
+    "comments": "",
+    "x": 3891.3003005981445,
+    "y": 203.2234649658203,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "4dd39096.a8b53",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",
+    "comments": "",
+    "x": 3880.8003692626953,
+    "y": 248.72348475456238,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "4b36101d.3eb74",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",
+    "comments": "",
+    "x": 3873.8003692626953,
+    "y": 295.7234847545624,
+    "z": "da02cf5f.ae6f3",
+    "wires": []
+  },
+  {
+    "id": "a95dc9c7.507158",
+    "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": 1579,
+    "y": 1297,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "1c2a13ea.e2fe74",
+    "type": "switchNode",
+    "name": "switch vendor",
+    "xml": "<switch test=\"`$prop.sdncRestApi.thirdpartySdnc.vendor`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1585,
+    "y": 1436,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "5a0c70a7.9c1048"
+      ]
+    ]
+  },
+  {
+    "id": "5a0c70a7.9c1048",
+    "type": "outcomeTrue",
+    "name": "SPTN",
+    "xml": "<outcome value='SPTN'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1739,
+    "y": 1438,
+    "z": "da02cf5f.ae6f3",
+    "wires": [
+      [
+        "720459ea.25c288"
+      ]
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-deactivate.json
new file mode 100644
index 0000000..df6236c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-deactivate.json
@@ -0,0 +1,814 @@
+[
+  {
+    "id": "afc82ce2.121c78",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 79,
+    "y": 77,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "db617858.b4ddb"
+      ]
+    ]
+  },
+  {
+    "id": "db617858.b4ddb",
+    "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": 340,
+    "y": 148,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "bb132476.9ca4e"
+      ]
+    ]
+  },
+  {
+    "id": "bb132476.9ca4e",
+    "type": "method",
+    "name": "method dci-connects-network-topology-operation-deactivate",
+    "xml": "<method rpc='dci-connects-network-topology-operation-deactivate' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 230,
+    "y": 233,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "2a9be4c6.eb14b4"
+      ]
+    ]
+  },
+  {
+    "id": "2a9be4c6.eb14b4",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 565.0000152587891,
+    "y": 233.00000953674316,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "ab306509.d7099",
+        "d2dfa358.504c58",
+        "a8a63952.1bc7f8",
+        "57931680.a91588",
+        "4204819e.38435",
+        "82e8e8d7.c3425",
+        "c09f45a3.c220d8"
+      ]
+    ]
+  },
+  {
+    "id": "ab306509.d7099",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:validate-network-input-parameters",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-network-input-parameters' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 900,
+    "y": 102,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "d2dfa358.504c58",
+    "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": 774,
+    "y": 995,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "ae004639.5a1a9",
+    "type": "block",
+    "name": "block : sendRequest",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 961.5000305175781,
+    "y": 576.5156650543213,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "ca9f4012.a368f",
+        "6f0aecce.06e20c",
+        "29bbe40.27fea1c",
+        "1ce08181.681226"
+      ]
+    ]
+  },
+  {
+    "id": "4509fe22.e5801",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1493.999927520752,
+    "y": 373.51519107818604,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "fd4a0bd2.51c28"
+      ]
+    ]
+  },
+  {
+    "id": "72b32ace.1dce64",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1500.999927520752,
+    "y": 411.51519107818604,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "6310ff1e.a9757"
+      ]
+    ]
+  },
+  {
+    "id": "3dd8b536.d8d3e2",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1492.999927520752,
+    "y": 453.51519107818604,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "bf2176dd.c8fbf8"
+      ]
+    ]
+  },
+  {
+    "id": "6310ff1e.a9757",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",
+    "comments": "",
+    "x": 1657.999927520752,
+    "y": 415.51519107818604,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "bf2176dd.c8fbf8",
+    "type": "returnFailure",
+    "name": "return failure",
+    "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",
+    "comments": "",
+    "x": 1650.999927520752,
+    "y": 462.51519107818604,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "ca9f4012.a368f",
+    "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 = $prop.dci-connects.id AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1270.000015258789,
+    "y": 420.51519799232483,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "4509fe22.e5801",
+        "72b32ace.1dce64",
+        "3dd8b536.d8d3e2"
+      ]
+    ]
+  },
+  {
+    "id": "fd4a0bd2.51c28",
+    "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<parameter name='prop.sdncRestApi.thirdpartySdnc.vendor' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].vendor`\" />\n\n",
+    "comments": "",
+    "x": 1673.4998779296875,
+    "y": 366.01513671875,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "270eaaaf.6d8a76",
+    "type": "execute",
+    "name": "execute RestApiCallNode De-Activate Vxlan Tunnel",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/v2.0/l3-dci-connects/' + $prop.dci-connects.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=\"delete\"/>\n<parameter name=\"responsePrefix\" value=\"restapi-result\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2097.500289916992,
+    "y": 566.5156259536743,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "108e039c.2a2694",
+    "type": "switchNode",
+    "name": "switch tunnelType",
+    "xml": "<switch test=\"`$prop.dci-connects.tunnelType`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1560.4997482299805,
+    "y": 591.01513671875,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "b27ecfa7.2e204",
+        "70cba102.5a4918"
+      ]
+    ]
+  },
+  {
+    "id": "b27ecfa7.2e204",
+    "type": "outcomeTrue",
+    "name": "L3-DCI",
+    "xml": "<outcome value='L3-DCI'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1773.4998779296875,
+    "y": 571.01513671875,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "270eaaaf.6d8a76"
+      ]
+    ]
+  },
+  {
+    "id": "70cba102.5a4918",
+    "type": "outcomeTrue",
+    "name": "L2-DCI",
+    "xml": "<outcome value='L2-DCI'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1771.499698638916,
+    "y": 643.01513671875,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "a70a8740.35415"
+      ]
+    ]
+  },
+  {
+    "id": "a70a8740.35415",
+    "type": "execute",
+    "name": "execute RestApiCallNode De-Activate Vxlan Tunnel",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/v2.0/l2-dci-connects/' + $prop.dci-connects.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=\"delete\"/>\n<parameter name=\"responsePrefix\" value=\"restapi-result\"/>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2091.500244140625,
+    "y": 643.5155620574951,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "b6e2380b.22053",
+    "type": "for",
+    "name": "for each network-input-parameters",
+    "xml": "<for index='idx' start='0' end='`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length`' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1023.9999847412109,
+    "y": 177.51563167572021,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "93278f1f.6117c"
+      ]
+    ]
+  },
+  {
+    "id": "6f0aecce.06e20c",
+    "type": "record",
+    "name": "record",
+    "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"dci-network-topology-operation-deactivate\"/>\n<parameter name=\"field3\" value=\"dci-connects.id\" />\n<parameter name=\"field4\" value=\"`$prop.dci-connects.id`\"/>\n<parameter name=\"field5\" value=\"dci-connects.tunnelType\" />\n<parameter name=\"field6\" value=\"`$prop.dci-connects.tunnelType`\"/>\n<parameter name=\"field7\" value=\"dci-connects.tunnelType\" />\n<parameter name=\"field8\" value=\"`$prop.dci-connects.tunnelType`\"/>\n<parameter name=\"field9\" value=\"sdncRestApi.thirdpartySdnc.url\"/>\n<parameter name=\"field10\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url`\"/>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1207.3333740234375,
+    "y": 529,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "93278f1f.6117c",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1257.3334274291992,
+    "y": 177.00000762939453,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "98a85984.08bf9",
+        "c01c858f.6535f"
+      ]
+    ]
+  },
+  {
+    "id": "98a85984.08bf9",
+    "type": "switchNode",
+    "name": "switch site1_id",
+    "xml": "<switch test=\"`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'site1_id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1463.6666374206543,
+    "y": 146.00000381469727,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "931a8fd9.57dc4"
+      ]
+    ]
+  },
+  {
+    "id": "931a8fd9.57dc4",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1664.666732788086,
+    "y": 145.00000286102295,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "bf8602b7.a89dd"
+      ]
+    ]
+  },
+  {
+    "id": "bf8602b7.a89dd",
+    "type": "set",
+    "name": "set id",
+    "xml": "<set>\n<parameter name='prop.dci-connects.id' value='`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1838.3330841064453,
+    "y": 144.66654777526855,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "c01c858f.6535f",
+    "type": "switchNode",
+    "name": "switch tunnelType",
+    "xml": "<switch test=\"`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'tunnelType'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1473.6667175292969,
+    "y": 199.00000977516174,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "21e6cd01.99ffda"
+      ]
+    ]
+  },
+  {
+    "id": "21e6cd01.99ffda",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1679.6667175292969,
+    "y": 199.00000977516174,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "4b7be50f.b4ead4"
+      ]
+    ]
+  },
+  {
+    "id": "4b7be50f.b4ead4",
+    "type": "set",
+    "name": "set tunnelType",
+    "xml": "<set>\n<parameter name='prop.dci-connects.tunnelType' value='`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1848.6668167114258,
+    "y": 199.0000250339508,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "a8a63952.1bc7f8",
+    "type": "block",
+    "name": "block : executeSite1",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 753.3333358764648,
+    "y": 178.66666412353516,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "b6e2380b.22053",
+        "ae004639.5a1a9"
+      ]
+    ]
+  },
+  {
+    "id": "e321a5f2.fe2e3",
+    "type": "for",
+    "name": "for each network-input-parameters",
+    "xml": "<for index='idx' start='0' end='`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length`' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1029.0000686645508,
+    "y": 283.66663551330566,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "d37e272b.ea0298"
+      ]
+    ]
+  },
+  {
+    "id": "d37e272b.ea0298",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1257.3334350585938,
+    "y": 286.15101146698,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "d847cda0.0460f"
+      ]
+    ]
+  },
+  {
+    "id": "d847cda0.0460f",
+    "type": "switchNode",
+    "name": "switch site2_id",
+    "xml": "<switch test=\"`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'site2_id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1458.3333854675293,
+    "y": 286.15099716186523,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "7ed96e02.76a578"
+      ]
+    ]
+  },
+  {
+    "id": "7ed96e02.76a578",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1659.333480834961,
+    "y": 285.1509962081909,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "d7f24acd.dc28e"
+      ]
+    ]
+  },
+  {
+    "id": "d7f24acd.dc28e",
+    "type": "set",
+    "name": "set id",
+    "xml": "<set>\n<parameter name='prop.dci-connects.id' value='`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1832.9998321533203,
+    "y": 284.8175411224365,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "57931680.a91588",
+    "type": "block",
+    "name": "block : executeSite1",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 753.3333435058594,
+    "y": 287.8176679611206,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "e321a5f2.fe2e3",
+        "ae004639.5a1a9"
+      ]
+    ]
+  },
+  {
+    "id": "85aea54b.a8d68",
+    "type": "comment",
+    "name": "TODO",
+    "info": "Currently deactivate does deletion too, later divide in two phases.",
+    "comments": "",
+    "x": 687.3333358764648,
+    "y": 41,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "4204819e.38435",
+    "type": "delete",
+    "name": "delete underlay configuration in AAI",
+    "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='configuration' \n        key='configuration.configuration-id = $network-topology-operation-input.network-information.network-id'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 847,
+    "y": 636,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "29bbe40.27fea1c",
+    "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": 1242,
+    "y": 477,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "1ce08181.681226",
+    "type": "switchNode",
+    "name": "switch vendor",
+    "xml": "<switch test=\"`$prop.sdncRestApi.thirdpartySdnc.vendor`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1198,
+    "y": 591,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "d96f0afb.72174"
+      ]
+    ]
+  },
+  {
+    "id": "d96f0afb.72174",
+    "type": "outcomeTrue",
+    "name": "SPTN",
+    "xml": "<outcome value='SPTN'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1373,
+    "y": 591,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "108e039c.2a2694"
+      ]
+    ]
+  },
+  {
+    "id": "b44d2822.3215d8",
+    "type": "comment",
+    "name": "Remove network from service data",
+    "info": "",
+    "comments": "",
+    "x": 863.0000610351562,
+    "y": 696.9999389648438,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "82e8e8d7.c3425",
+    "type": "switchNode",
+    "name": "switch $service-data.networks.network_length",
+    "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 878.7658081054688,
+    "y": 740.0079956054688,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "dba62b53.9a3ec",
+        "57166c95.83901c"
+      ]
+    ]
+  },
+  {
+    "id": "c09f45a3.c220d8",
+    "type": "set",
+    "name": "set output to api handler",
+    "xml": "<set>\n<parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $network-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'` \" />\n \n",
+    "comments": "",
+    "x": 814.7658081054688,
+    "y": 886.0079956054688,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "500bd365.2cd4bc",
+    "type": "comment",
+    "name": "If only one remove all networks",
+    "info": "",
+    "comments": "",
+    "x": 1253.1837692260742,
+    "y": 701.267255783081,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "dba62b53.9a3ec",
+    "type": "outcome",
+    "name": "1",
+    "xml": "<outcome value='1'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1181.8134078979492,
+    "y": 736.674482345581,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "9f9202f3.6e105"
+      ]
+    ]
+  },
+  {
+    "id": "9f9202f3.6e105",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1361.1467208862305,
+    "y": 737.3782787322998,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "f066bd89.a6c2e8",
+        "c6b689fd.992278"
+      ]
+    ]
+  },
+  {
+    "id": "57166c95.83901c",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1148.1943588256836,
+    "y": 889.0078001022339,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "3d590d9a.bcff9a"
+      ]
+    ]
+  },
+  {
+    "id": "3d590d9a.bcff9a",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1370.194236755371,
+    "y": 889.0078001022339,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "5a71292a.6b8408",
+        "d3de161f.966088",
+        "963a7919.b37fb8",
+        "227d053b.c1572a"
+      ]
+    ]
+  },
+  {
+    "id": "f066bd89.a6c2e8",
+    "type": "set",
+    "name": "Remove networks",
+    "xml": "<set>\n\t<parameter name=\"service-data.networks.\" value=\"\"/>\n\n",
+    "comments": "",
+    "x": 1611.432273864746,
+    "y": 740.3413572311401,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "c6b689fd.992278",
+    "type": "set",
+    "name": "set new network length",
+    "xml": "<set>\n\t<parameter name=\"service-data.networks.network_length\" value=\"0\"/>\n\n\t\n",
+    "comments": "",
+    "x": 1627.7656478881836,
+    "y": 775.045015335083,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "227d053b.c1572a",
+    "type": "set",
+    "name": "Set new network length",
+    "xml": "<set>\n\t<parameter name=\"tmp.new_length\" value=\"`$service-data.networks.network_length - 1`\"/>\n\t\n\t\n",
+    "comments": "",
+    "x": 1633.8979721069336,
+    "y": 826.2671995162964,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "5a71292a.6b8408",
+    "type": "for",
+    "name": "for snidx..service-data.networks.network[]",
+    "xml": "<for silentFailure='true' index='snidx' start='`$tmp.nidx + 1`' end='`$service-data.networks.network_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1682.603172302246,
+    "y": 878.5711545944214,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      [
+        "ccdd9c9d.183f1"
+      ]
+    ]
+  },
+  {
+    "id": "963a7919.b37fb8",
+    "type": "set",
+    "name": "set new network length",
+    "xml": "<set>\n\t<parameter name=\"service-data.networks.network_length\" value=\"`$service-data.networks.network_length - 1`\"/>\n\n\t\n",
+    "comments": "",
+    "x": 1641.0620422363281,
+    "y": 922.3414134979248,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "d3de161f.966088",
+    "type": "set",
+    "name": "Remove networks",
+    "xml": "<set>\n\t<parameter name=\"service-data.networks.network[$tmp.new_length].\" value=\"\"/>\n\n",
+    "comments": "",
+    "x": 1620.9085083007812,
+    "y": 960.3093585968018,
+    "z": "5a5462f8.9bc3ac",
+    "wires": []
+  },
+  {
+    "id": "ccdd9c9d.183f1",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1971.1941833496094,
+    "y": 888.007833480835,
+    "z": "5a5462f8.9bc3ac",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_eipam-allocate-generic-subnet.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_eipam-allocate-generic-subnet.json
new file mode 100755
index 0000000..352efc0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_eipam-allocate-generic-subnet.json
@@ -0,0 +1 @@
+[{"id":"8f9fef7.6f3a81","type":"dgstart","name":"DGSTART","outputs":1,"x":96.66665649414062,"y":22.39760112762451,"z":"59d9d15d.d6cec","wires":[["ce1c5240.2f13a"]]},{"id":"ce1c5240.2f13a","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":362.75952911376953,"y":20,"z":"59d9d15d.d6cec","wires":[["6f9cb61b.ee5138"]]},{"id":"71899083.1fb68","type":"comment","name":"ChangeLog","info":"4/16 - initial version","comments":"","x":85.49564361572266,"y":70.15521693229675,"z":"59d9d15d.d6cec","wires":[]},{"id":"6f9cb61b.ee5138","type":"method","name":"eipam-allocate-generic-subnet","xml":"<method rpc='eipam-allocate-generic-subnet' mode='sync'>\n","comments":"","outputs":1,"x":154.21531677246094,"y":111.08245182037354,"z":"59d9d15d.d6cec","wires":[["b5922f7f.64557"]]},{"id":"ab6de05c.4e171","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-generic-subnet\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.plan-name`\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.pools[$l4-idx].key-name`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.pools[$l4-idx].key-value`\"/>\n\n","comments":"","outputs":1,"x":2243.14102935791,"y":646.7808322906494,"z":"59d9d15d.d6cec","wires":[[]]},{"id":"4bb70423.bcb5ec","type":"set","name":"set EIPAM key info at each Level","xml":"<set>\n\t<parameter name=\"eipam-ip-block.pools[$l4-idx].key-name\" value=\"`$v4FQPN-output.pools[$l4-idx].key-name`\"/>\n\t<parameter name=\"eipam-ip-block.pools[$l4-idx].key-value\" value=\"`$v4FQPN-output.pools[$l4-idx].key-value`\"/>\n\t","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2317.9530506134033,"y":602.326545715332,"z":"59d9d15d.d6cec","wires":[]},{"id":"b5922f7f.64557","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":106.35284423828125,"y":161.4576597213745,"z":"59d9d15d.d6cec","wires":[["8d759ec.66d776","e3ade912.f66688","ea9b121a.c4eaf","3b70b322.db11fc","2b4e4aec.1de226"]]},{"id":"a8830696.011d28","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":730.9524345397949,"y":421.8863134384155,"z":"59d9d15d.d6cec","wires":[["ac71dacb.26a0d8"]]},{"id":"8d759ec.66d776","type":"set","name":"set: data initialization","xml":"<set>\n\t<parameter name=\"tmp.eipam-error\" value=\"false\" />\n\t<parameter name=\"tmp.allocate-v4-subnet-flag\" value=\"N\" />\n\t<parameter name=\"tmp.allocate-v6-subnet-flag\" value=\"N\" />\n\t<parameter name='eipam-ip-block.plans_length' value='0' />\n\t<parameter name=\"eipam-pool.v4.pre-existing\" value=\"N\"/>\n\t<parameter name=\"eipam-pool.v6.pre-existing\" value=\"N\"/>\n\t<parameter name=\"tmp.leaf-level\" value=\"N\" />","comments":"","x":363.6958465576172,"y":170.4885025024414,"z":"59d9d15d.d6cec","wires":[]},{"id":"84f45d73.77544","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":773.4203872680664,"y":996.2534217834473,"z":"59d9d15d.d6cec","wires":[["93951379.be7a2"]]},{"id":"ac71dacb.26a0d8","type":"switchNode","name":"test: eipam-ip-block.level","xml":"<switch test=\"`$l-idx`\">","comments":"","outputs":1,"x":938.7808876037598,"y":420.50491523742676,"z":"59d9d15d.d6cec","wires":[["182eb74a.ac9469","b87b3061.052b2","226aca7f.3fbb76"]]},{"id":"182eb74a.ac9469","type":"other","name":"level 1","xml":"<outcome value='1'>","comments":"","outputs":1,"x":1123.0390396118164,"y":418.826434135437,"z":"59d9d15d.d6cec","wires":[["6063e155.3da64"]]},{"id":"b87b3061.052b2","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1125.610450744629,"y":520.6835517883301,"z":"59d9d15d.d6cec","wires":[["9138f223.f2316"]]},{"id":"9138f223.f2316","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Please set the eipam-ip-block.level for appropriate EIPAM request.\" />\n\t","comments":"","x":1252.8603477478027,"y":519.6835770606995,"z":"59d9d15d.d6cec","wires":[]},{"id":"e3ade912.f66688","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />\n","comments":"","x":265.42652130126953,"y":1794.3280906677246,"z":"59d9d15d.d6cec","wires":[]},{"id":"226aca7f.3fbb76","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1120.2782707214355,"y":562.5764150619507,"z":"59d9d15d.d6cec","wires":[["1e9c1897.d2f767"]]},{"id":"f006120d.73e05","type":"comment","name":"Required INPUTS","info":"Pre-requisites: \n\tThe levels are called in sequence starting at level 1,2,...\n\tso that the previous levels are created already.\n\tWorking with current plan: eipam-ip-block.plans[$eipam-ip-block.plans_length]\n\tAssumes generate-FQPN was already called, need its output for key_values\n\t\nOptional INPUTS:\n\ttmp.qip-pool - for level 1 if needed\n\ttmp.activate-subnet-flag - set to Y to have EIPAM activate it, else N(Default to Y)\tapplies to every level\n\ttmp.network-instance-group-id\n\t\nrequired INPUTS:\n\n\tnetwork-model - for Tosca model\n\ttmp.skip-first-level - set to Y if already created in EIPAM\n\teipam-ip-block.level - the level for createPool/allocateSubnet\n\ttmp.network-id\n\nSet the necessary values as inputs for the key_values \nfor 1 to current level as needed for EIPAM operations:\n\nv4FQPN-output.pools[].key-name\nv4FQPN-output.pools[].key-value\nv6FQPN-output.pools[].key-name\nv6FQPN-output.pools[].key-value\n\n(ie - Calling DG should set v[4|6]FQPN-output = generate-FQPN-output)\n\n\n","comments":"","x":650.9523773193359,"y":82.57617473602295,"z":"59d9d15d.d6cec","wires":[]},{"id":"98c2cc84.9a912","type":"for","name":"for l4-idx: eipam-ip-block.level","xml":"<for index=\"l4-idx\" start=\"0\" end=\"`$eipam-ip-block.level`\">","comments":"","outputs":1,"x":1905.4169006347656,"y":617.7549533843994,"z":"59d9d15d.d6cec","wires":[["c39675d.1ac9888"]]},{"id":"c39675d.1ac9888","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2096.865390777588,"y":615.0247287750244,"z":"59d9d15d.d6cec","wires":[["4bb70423.bcb5ec","ab6de05c.4e171"]]},{"id":"e4105395.c1905","type":"switchNode","name":"switch: tmp.skip-first-level","xml":"<switch test=\"`$tmp.skip-first-level`\">","comments":"","outputs":1,"x":1430.2384338378906,"y":417.2192659378052,"z":"59d9d15d.d6cec","wires":[["33bb99d8.2114a6","d82636a5.9a0d38","2f749836.e94048"]]},{"id":"33bb99d8.2114a6","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":1586.5241775512695,"y":447.1835422515869,"z":"59d9d15d.d6cec","wires":[["1e9c1897.d2f767"]]},{"id":"1e9c1897.d2f767","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1707.0242767333984,"y":558.2550249099731,"z":"59d9d15d.d6cec","wires":[["98c2cc84.9a912","fcf076c0.ae1d78","6ffc366b.bfe838","4e03d290.769fac","e16fb56c.0e3e48","fe526422.16f6a8","e34e99ee.7a2268"]]},{"id":"d82636a5.9a0d38","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":1543.5956573486328,"y":483.6948595046997,"z":"59d9d15d.d6cec","wires":[["1e9c1897.d2f767"]]},{"id":"ea9b121a.c4eaf","type":"switchNode","name":"test: tmp.activate-subnet-flag","xml":"<switch test=\"`$tmp.activate-subnet-flag`\">","comments":"","outputs":1,"x":394.7023696899414,"y":217.57617282867432,"z":"59d9d15d.d6cec","wires":[["7ab0cb5c.25fd34","15d3a211.21541e","ab74cc21.2afd2"]]},{"id":"15d3a211.21541e","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":607.9524383544922,"y":186.8262062072754,"z":"59d9d15d.d6cec","wires":[["39a65e43.d68482"]]},{"id":"7ab0cb5c.25fd34","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":603.2025012969971,"y":232.82617664337158,"z":"59d9d15d.d6cec","wires":[[]]},{"id":"39a65e43.d68482","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":759.7024307250977,"y":185.57617664337158,"z":"59d9d15d.d6cec","wires":[["4912f99e.65f368"]]},{"id":"ab74cc21.2afd2","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":607.7024307250977,"y":268.51611042022705,"z":"59d9d15d.d6cec","wires":[[]]},{"id":"4912f99e.65f368","type":"set","name":"set tmp.activate-subnet-flag to Y","xml":"<set>\n\t<parameter name=\"tmp.activate-subnet-flag\" value=\"Y\"/>\t\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":984.7023696899414,"y":187.57617282867432,"z":"59d9d15d.d6cec","wires":[]},{"id":"6063e155.3da64","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1251.3097915649414,"y":419.3621482849121,"z":"59d9d15d.d6cec","wires":[["e4105395.c1905"]]},{"id":"94e6e10b.06072","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-generic-subnet\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.plan-name`\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.pools[$l6-idx].key-name`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.pools[$l6-idx].key-value`\"/>\n<parameter name=\"field7\" value=\"`$l6-idx`\"/>\n","comments":"","outputs":1,"x":2275.1337394714355,"y":1212.0604271888733,"z":"59d9d15d.d6cec","wires":[[]]},{"id":"93951379.be7a2","type":"switchNode","name":"test: eipam-ip-block.level","xml":"<switch test=\"`$l-idx`\">","comments":"","outputs":1,"x":973.9880905151367,"y":995.764778137207,"z":"59d9d15d.d6cec","wires":[["5fca83a8.bf0a3c","f6dd58ad.545418","cac33639.67c088"]]},{"id":"5fca83a8.bf0a3c","type":"other","name":"level 1","xml":"<outcome value='1'>","comments":"","outputs":1,"x":1162.8097305297852,"y":998.55042552948,"z":"59d9d15d.d6cec","wires":[["da3ad60b.40a538"]]},{"id":"f6dd58ad.545418","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1165.3811416625977,"y":1100.407543182373,"z":"59d9d15d.d6cec","wires":[["7316123e.6ee9cc"]]},{"id":"7316123e.6ee9cc","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Please set the eipam-ip-block.level for appropriate EIPAM request.\" />\n\t","comments":"","x":1292.6310386657715,"y":1099.4075684547424,"z":"59d9d15d.d6cec","wires":[]},{"id":"cac33639.67c088","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1160.0489616394043,"y":1142.3004064559937,"z":"59d9d15d.d6cec","wires":[["88faa638.e54cf8"]]},{"id":"3ab54f41.6592e","type":"for","name":"for l6-idx: eipam-ip-block.level","xml":"<for index=\"l6-idx\" start=\"0\" end=\"`$eipam-ip-block.level`\">","comments":"","outputs":1,"x":1945.1875915527344,"y":1197.4789447784424,"z":"59d9d15d.d6cec","wires":[["24cb1d26.b5d7b2"]]},{"id":"24cb1d26.b5d7b2","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2136.6360816955566,"y":1194.7487201690674,"z":"59d9d15d.d6cec","wires":[["94e6e10b.06072","8f172824.4d3c88"]]},{"id":"60b72913.4f8168","type":"switchNode","name":"switch: tmp.skip-first-level","xml":"<switch test=\"`$tmp.skip-first-level`\">","comments":"","outputs":1,"x":1473.759262084961,"y":998.1932592391968,"z":"59d9d15d.d6cec","wires":[["5bb9354.1ebb0cc","680e224e.86676c","9bcfb57.ef89248"]]},{"id":"5bb9354.1ebb0cc","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":1645.7593574523926,"y":1032.443271636963,"z":"59d9d15d.d6cec","wires":[["88faa638.e54cf8"]]},{"id":"88faa638.e54cf8","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1746.7949676513672,"y":1137.979016304016,"z":"59d9d15d.d6cec","wires":[["3ab54f41.6592e","83776b7d.3e2ea8","947c46b.dfcfcb8","fbd44536.a250d8","5f9cddac.d2bb54","7f1fcd55.6f8b64","be19d35a.f6ee9"]]},{"id":"680e224e.86676c","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":1644.6163864135742,"y":1068.9544792175293,"z":"59d9d15d.d6cec","wires":[["88faa638.e54cf8"]]},{"id":"da3ad60b.40a538","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1291.0804824829102,"y":999.0861396789551,"z":"59d9d15d.d6cec","wires":[["60b72913.4f8168"]]},{"id":"9bcfb57.ef89248","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1654.0454273223877,"y":991.3004283905029,"z":"59d9d15d.d6cec","wires":[[]]},{"id":"2f749836.e94048","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1621.4884185791016,"y":413.2906684875488,"z":"59d9d15d.d6cec","wires":[[]]},{"id":"fcf076c0.ae1d78","type":"set","name":"set EIPAM pool info for allocateSubnet","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plan-name\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n\t<parameter name=\"eipam-ip-block.activate-subnet-flag\" value=\"`$tmp.activate-subnet-flag`\"/>\t\n\t<parameter name=\"eipam-ip-block.leaf-level-indicator\" value=\"`$tmp.leaf-level`\"/>\n\t<parameter name=\"tmp.allocate-v4-subnet-flag\" value=\"Y\" />\n\t<!-- Number of Pool Levels -->\n\t<parameter name=\"eipam-ip-block.pools_length\" value=\"`$eipam-ip-block.level`\"/>\n\n\t","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1940.5363006591797,"y":558.7622022628784,"z":"59d9d15d.d6cec","wires":[]},{"id":"f14ae6f0.6b0b68","type":"other","name":"true","xml":"<outcome value='true'>","comments":"","outputs":1,"x":515.7143135070801,"y":330.0000066757202,"z":"59d9d15d.d6cec","wires":[["bcbca98c.14d5c8"]]},{"id":"bcbca98c.14d5c8","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":634.5162162780762,"y":329.81357192993164,"z":"59d9d15d.d6cec","wires":[["9ebcbfc6.15186"]]},{"id":"3b70b322.db11fc","type":"switchNode","name":"switch: leaf level","xml":"<switch test=\"`$eipam-ip-block.level == $eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`\">","comments":"","outputs":1,"x":361.1305847167969,"y":329.23771476745605,"z":"59d9d15d.d6cec","wires":[["f14ae6f0.6b0b68"]]},{"id":"9ebcbfc6.15186","type":"set","name":"set tmp.leaf-level to Y","xml":"<set>\n\t<parameter name=\"tmp.leaf-level\" value=\"Y\" />","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":842.8571166992188,"y":331.4285583496094,"z":"59d9d15d.d6cec","wires":[]},{"id":"83776b7d.3e2ea8","type":"set","name":"set EIPAM pool info for allocateSubnet","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plan-name\" value=\"`$network-model.eipam-v6-address-plan`\"/>\n\t<parameter name=\"eipam-ip-block.activate-subnet-flag\" value=\"`$tmp.activate-subnet-flag`\"/>\t\n\t<parameter name=\"eipam-ip-block.leaf-level-indicator\" value=\"`$tmp.leaf-level`\"/>\n\t<parameter name=\"tmp.allocate-v6-subnet-flag\" value=\"Y\" />\n\t<!-- Number of Pool Levels -->\n\t<parameter name=\"eipam-ip-block.pools_length\" value=\"`$eipam-ip-block.level`\"/>\n\n\t","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1976.083251953125,"y":1136.2498779296875,"z":"59d9d15d.d6cec","wires":[]},{"id":"8f172824.4d3c88","type":"set","name":"set EIPAM pool info at each Level","xml":"<set>\n\t<parameter name=\"eipam-ip-block.pools[$l6-idx].key-name\" value=\"`$v6FQPN-output.pools[$l6-idx].key-name`\"/>\n\t<parameter name=\"eipam-ip-block.pools[$l6-idx].key-value\" value=\"`$v6FQPN-output.pools[$l6-idx].key-value`\"/>\n\t","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2356.083251953125,"y":1177.9166259765625,"z":"59d9d15d.d6cec","wires":[]},{"id":"2b4e4aec.1de226","type":"switchNode","name":"switch: eipam-ip-block.allocate-version","xml":"<switch test=\"`$eipam-ip-block.allocate-version`\">","comments":"Need to know which ipv version to get the plan name from the network-model.","outputs":1,"x":348.7499769181013,"y":482.49998474121094,"z":"59d9d15d.d6cec","wires":[["5f026f8d.26562","821f7cdd.9300d","8bb1e0b.4dd582"]]},{"id":"5f026f8d.26562","type":"other","name":"ipv4","xml":"<outcome value='ipv4'>","comments":"","outputs":1,"x":586.2500761002302,"y":422.499981880188,"z":"59d9d15d.d6cec","wires":[["a8830696.011d28"]]},{"id":"821f7cdd.9300d","type":"other","name":"Null","xml":"<outcome value=''>","comments":"","outputs":1,"x":550.7500991821289,"y":1327.4904613494873,"z":"59d9d15d.d6cec","wires":[["849eba01.737b78"]]},{"id":"8bb1e0b.4dd582","type":"other","name":"ipv6","xml":"<outcome value='ipv6'>","comments":"","outputs":1,"x":599.0217552185059,"y":1000.4002666473389,"z":"59d9d15d.d6cec","wires":[["84f45d73.77544"]]},{"id":"849eba01.737b78","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Please set the eipam-ip-block.allocate-version for appropriate EIPAM request.\" />\n\t","comments":"","x":693.4999771118164,"y":1327.9168949127197,"z":"59d9d15d.d6cec","wires":[]},{"id":"26f3b34b.bf5e3c","type":"set","name":"set EIPAM plan info for allocateSubnet","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plan-name\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n\t<parameter name=\"eipam-ip-block.activate-subnet-flag\" value=\"Y\"/>\t\n\t<parameter name=\"eipam-ip-block.leaf-level-indicator\" value=\"`$tmp.leaf-level`\"/>\n\t<!-- Number of Pool Levels -->\n\t<parameter name=\"eipam-ip-block.pools_length\" value=\"1\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2453.3332328796387,"y":480.8333168029785,"z":"59d9d15d.d6cec","wires":[]},{"id":"739a41cf.6ce14","type":"save","name":"insert EIPAM_IP_SUBNETS for V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNETS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             service_type = $tmp.service-type ,\n             ip_address = $eipam-ip-block.ip-prefix ,\n             prefix_length = $eipam-ip-block.mask ,\n             plan_name = $network-model.eipam-v4-address-plan ,\n             status = 'ACTIVE' ,\n             pool_id = $pfx.eipam-pool-row.pool-id ,\n             address_family = $network-model.ipv4-ip-version ,\n             network_id = $tmp.network-id ,\n             network_instance_group_id = $tmp.network-instance-group-id ; \"\n    force='true'\n        pfx='pfx.eipam-v4subnet-row'>\n","comments":"","outputs":1,"x":2255.7193641662598,"y":806.822883605957,"z":"59d9d15d.d6cec","wires":[["bb00f828.48b688"]]},{"id":"6ffc366b.bfe838","type":"execute","name":"execute EIPAM allocateSubnet","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"allocateSubnet\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":1908.4819793701172,"y":685.3392143249512,"z":"59d9d15d.d6cec","wires":[["97506f50.4a93"]]},{"id":"97506f50.4a93","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2118.4820098876953,"y":686.7295799255371,"z":"59d9d15d.d6cec","wires":[["ce167d53.ecb57"]]},{"id":"ce167d53.ecb57","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating V4 subnet in EIPAM.\" />\n\t","comments":"","x":2282.4820404052734,"y":689.7296104431152,"z":"59d9d15d.d6cec","wires":[]},{"id":"e16fb56c.0e3e48","type":"save","name":"insert EIPAM_IP_SUBNET_KEYS for V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNET_KEYS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             key_name = $key-name ,\n             key_value = $key-value ,\n             level = $eipam-ip-block.level ; \"\n    force='true'\n        pfx='pfx.eipam-v4subnet-key-row'>\n","comments":"","outputs":1,"x":1937.3288345336914,"y":912.4893751144409,"z":"59d9d15d.d6cec","wires":[["54bc5756.107198","7f276b3.f6f6794"]]},{"id":"4e03d290.769fac","type":"get-resource","name":"get-resource V4 - get pool_id","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; \"\n        pfx='pfx.eipam-pool-row'>\n\n","comments":"","outputs":1,"x":1907.5899505615234,"y":731.3392448425293,"z":"59d9d15d.d6cec","wires":[["26bb8cfc.df8fb4","ef851ee3.4729d"]]},{"id":"bb00f828.48b688","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2491.7979621887207,"y":804.1560049057007,"z":"59d9d15d.d6cec","wires":[["8a79d874.143b98"]]},{"id":"7f276b3.f6f6794","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2259.446388244629,"y":957.639552116394,"z":"59d9d15d.d6cec","wires":[[]]},{"id":"5a318a10.b7f824","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 EIPAM_IP_SUBNET_KEYS table.' />\n","comments":"","x":2410.659278869629,"y":908.489405632019,"z":"59d9d15d.d6cec","wires":[]},{"id":"8a79d874.143b98","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 EIPAM_IP_SUBNETS table.' />\n","comments":"","x":2654.1043243408203,"y":803.1559743881226,"z":"59d9d15d.d6cec","wires":[]},{"id":"54bc5756.107198","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2248.659278869629,"y":908.489405632019,"z":"59d9d15d.d6cec","wires":[["5a318a10.b7f824"]]},{"id":"fe526422.16f6a8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-generic-subnet\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$key-value`\"/>\n<parameter name=\"field6\" value=\"`$tmp.eipam-pool-row.pool-id`\"/>\n<parameter name=\"field7\" value=\"`$tmp.network_instance_group_id`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.level`\"/>\n<parameter name=\"field9\" value=\"`$network-model.network-role`\"/>\n<parameter name=\"field10\" value=\"`$tmp.network-id`\"/>\n<parameter name=\"field11\" value=\"subnet saved to DB.\"/>","comments":"","outputs":1,"x":1824.629493713379,"y":954.789698600769,"z":"59d9d15d.d6cec","wires":[[]]},{"id":"26bb8cfc.df8fb4","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2115.1824798583984,"y":718.4749870300293,"z":"59d9d15d.d6cec","wires":[["82b454c3.44a828"]]},{"id":"82b454c3.44a828","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM.\" />\n\t","comments":"","x":2320.1824798583984,"y":732.4750175476074,"z":"59d9d15d.d6cec","wires":[]},{"id":"ef851ee3.4729d","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":2121.4046669006348,"y":752.3637619018555,"z":"59d9d15d.d6cec","wires":[["82b454c3.44a828"]]},{"id":"afc2d16f.1f298","type":"save","name":"insert EIPAM_IP_SUBNETS for V6","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNETS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             service_type = $tmp.service-type ,\n             ip_address = $eipam-ip-block.ip-prefix ,\n             prefix_length = $eipam-ip-block.mask ,\n             plan_name = $network-model.eipam-v6-address-plan ,\n             status = 'ACTIVE' ,\n             pool_id = $pfx.eipam-pool-row.pool-id ,\n             address_family = $network-model.ipv6-ip-version ,\n             network_id = $tmp.network-id ,\n             network_instance_group_id = $tmp.network-instance-group-id ; \"\n    force='true'\n        pfx='pfx.eipam-v6subnet-row'>\n","comments":"","outputs":1,"x":2320.7775955200195,"y":1354.4443311691284,"z":"59d9d15d.d6cec","wires":[["501eb89c.f97d08"]]},{"id":"947c46b.dfcfcb8","type":"execute","name":"execute EIPAM allocateSubnet","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"allocateSubnet\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":1953.5401306152344,"y":1247.4049797058105,"z":"59d9d15d.d6cec","wires":[["ca583d20.3e1f8"]]},{"id":"ca583d20.3e1f8","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2163.5401611328125,"y":1248.7953453063965,"z":"59d9d15d.d6cec","wires":[["6fe68b.5f646974"]]},{"id":"6fe68b.5f646974","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating V6 subnet in EIPAM.\" />\n\t","comments":"","x":2327.5401916503906,"y":1251.7953758239746,"z":"59d9d15d.d6cec","wires":[]},{"id":"5f9cddac.d2bb54","type":"save","name":"insert EIPAM_IP_SUBNET_KEYS for V6","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNET_KEYS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             key_name = $key-name ,\n             key_value = $key-value ,\n             level = $eipam-ip-block.level ; \"\n    force='true'\n        pfx='pfx.eipam-v6subnet-key-row'>\n","comments":"","outputs":1,"x":1991.27587890625,"y":1483.4440479278564,"z":"59d9d15d.d6cec","wires":[["2d0e4e09.d859a2","d8a4a0e7.a664c"]]},{"id":"fbd44536.a250d8","type":"get-resource","name":"get-resource V6 - get pool_id","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; \"\n        pfx='pfx.eipam-pool-row'>\n\n","comments":"","outputs":1,"x":1952.6481018066406,"y":1293.4050102233887,"z":"59d9d15d.d6cec","wires":[["d2f70b00.3b1238","58a4d35f.68dd1c"]]},{"id":"501eb89c.f97d08","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2580.1893730163574,"y":1350.6664409637451,"z":"59d9d15d.d6cec","wires":[["e3b79412.c323c8"]]},{"id":"d8a4a0e7.a664c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2275.615858078003,"y":1531.9274969100952,"z":"59d9d15d.d6cec","wires":[[]]},{"id":"b37ca556.7661f8","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 EIPAM_IP_SUBNET_KEYS table.' />\n","comments":"","x":2426.828748703003,"y":1482.7773504257202,"z":"59d9d15d.d6cec","wires":[]},{"id":"e3b79412.c323c8","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 EIPAM_IP_SUBNETS table.' />\n","comments":"","x":2742.495735168457,"y":1349.666410446167,"z":"59d9d15d.d6cec","wires":[]},{"id":"2d0e4e09.d859a2","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2264.828748703003,"y":1482.7773504257202,"z":"59d9d15d.d6cec","wires":[["b37ca556.7661f8"]]},{"id":"7f1fcd55.6f8b64","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-generic-subnet\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v6-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$key-value`\"/>\n<parameter name=\"field6\" value=\"`$tmp.eipam-pool-row.pool-id`\"/>\n<parameter name=\"field7\" value=\"`$tmp.network_instance_group_id`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.level`\"/>\n<parameter name=\"field9\" value=\"`$network-model.network-role`\"/>\n<parameter name=\"field10\" value=\"`$tmp.network-id`\"/>\n<parameter name=\"field11\" value=\"subnet info are saved to DB.\"/>","comments":"","outputs":1,"x":1877.46577835083,"y":1526.8555946350098,"z":"59d9d15d.d6cec","wires":[[]]},{"id":"d2f70b00.3b1238","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2160.2406311035156,"y":1280.5407524108887,"z":"59d9d15d.d6cec","wires":[["9e6cdba1.687738"]]},{"id":"9e6cdba1.687738","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM.\" />\n\t","comments":"","x":2365.2406311035156,"y":1294.5407829284668,"z":"59d9d15d.d6cec","wires":[]},{"id":"58a4d35f.68dd1c","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":2174.2406311035156,"y":1315.5407524108887,"z":"59d9d15d.d6cec","wires":[["9e6cdba1.687738"]]},{"id":"888201dc.1fd6c","type":"set","name":"set: key-name/key-value","xml":"<set>\n\t<parameter name=\"key-name\" value=\"`$v4FQPN-output.pools[$eipam-ip-block.level - 1].key-name`\" />\t\n\t<parameter name=\"key-value\" value=\"`$v4FQPN-output.pools[$eipam-ip-block.level - 1].key-value`\" />\t","comments":"","x":2203.611068725586,"y":407.2221565246582,"z":"59d9d15d.d6cec","wires":[]},{"id":"4c29fe3a.88239","type":"set","name":"set: key-name/key-value","xml":"<set>\n\t<parameter name=\"key-name\" value=\"`$v6FQPN-output.pools[$eipam-ip-block.level - 1].key-name`\" />\t\n\t<parameter name=\"key-value\" value=\"`$v6FQPN-output.pools[$eipam-ip-block.level - 1].key-value`\" />\t","comments":"","x":2395.000030517578,"y":1072.5000095367432,"z":"59d9d15d.d6cec","wires":[]},{"id":"e34e99ee.7a2268","type":"switchNode","name":"test: subnet-use","xml":"<switch test=\"`$network-instance-group-data.subnet-assignment-policy.subnet-use`\">","comments":"","outputs":1,"x":1859.3629913330078,"y":840.7729730606079,"z":"59d9d15d.d6cec","wires":[["a853166b.b152b8","c0d37208.8f4c6","8a5e791b.815608"]]},{"id":"a853166b.b152b8","type":"other","name":"shared","xml":"<outcome value='shared'>","comments":"","outputs":1,"x":2036.465892791748,"y":807.2015380859375,"z":"59d9d15d.d6cec","wires":[["739a41cf.6ce14"]]},{"id":"c0d37208.8f4c6","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":2036.4658432006836,"y":842.5985565185547,"z":"59d9d15d.d6cec","wires":[["fe5f4f5e.816e8"]]},{"id":"8a5e791b.815608","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2040.4341659545898,"y":877.201623916626,"z":"59d9d15d.d6cec","wires":[["fe5f4f5e.816e8"]]},{"id":"fe5f4f5e.816e8","type":"save","name":"insert EIPAM_IP_SUBNETS for V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNETS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             service_type = $tmp.service-type ,\n             ip_address = $eipam-ip-block.ip-prefix ,\n             prefix_length = $eipam-ip-block.mask ,\n             plan_name = $network-model.eipam-v4-address-plan ,\n             status = 'ACTIVE' ,\n             pool_id = $pfx.eipam-pool-row.pool-id ,\n             address_family = $network-model.ipv4-ip-version ,\n             network_id = $tmp.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-v4subnet-row'>\n","comments":"","outputs":1,"x":2258.680419921875,"y":851.3680419921875,"z":"59d9d15d.d6cec","wires":[["bb00f828.48b688"]]},{"id":"be19d35a.f6ee9","type":"switchNode","name":"test: subnet-use","xml":"<switch test=\"`$network-instance-group-data.subnet-assignment-policy.subnet-use`\">","comments":"","outputs":1,"x":1920.2359619140625,"y":1383.5902099609375,"z":"59d9d15d.d6cec","wires":[["2632d631.52c4aa","1340bc13.064864","1b2d9362.16f21d"]]},{"id":"2632d631.52c4aa","type":"other","name":"shared","xml":"<outcome value='shared'>","comments":"","outputs":1,"x":2097.3388633728027,"y":1350.018774986267,"z":"59d9d15d.d6cec","wires":[["afc2d16f.1f298"]]},{"id":"1340bc13.064864","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":2097.3388137817383,"y":1385.4157934188843,"z":"59d9d15d.d6cec","wires":[["9a6994e7.96b818"]]},{"id":"1b2d9362.16f21d","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2101.3071365356445,"y":1420.0188608169556,"z":"59d9d15d.d6cec","wires":[["9a6994e7.96b818"]]},{"id":"9a6994e7.96b818","type":"save","name":"insert EIPAM_IP_SUBNETS for V6","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNETS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             service_type = $tmp.service-type ,\n             ip_address = $eipam-ip-block.ip-prefix ,\n             prefix_length = $eipam-ip-block.mask ,\n             plan_name = $network-model.eipam-v6-address-plan ,\n             status = 'ACTIVE' ,\n             pool_id = $pfx.eipam-pool-row.pool-id ,\n             address_family = $network-model.ipv6-ip-version ,\n             network_id = $tmp.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-v6subnet-row'>\n","comments":"","outputs":1,"x":2321.34716796875,"y":1405.8123779296875,"z":"59d9d15d.d6cec","wires":[["501eb89c.f97d08"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_eipam-allocate-network-role-subnet.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_eipam-allocate-network-role-subnet.json
new file mode 100644
index 0000000..9f35612
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_eipam-allocate-network-role-subnet.json
@@ -0,0 +1 @@
+[{"id":"1f770d1b.dc38c3","type":"dgstart","name":"DGSTART","outputs":1,"x":95,"y":76.81381225585938,"z":"760a1398.0b459c","wires":[["4fe79f76.5849e"]]},{"id":"371652dd.4cae3e","type":"method","name":"eipam-allocate-network-role-subnet","xml":"<method rpc='eipam-allocate-network-role-subnet' mode='sync'>\n","comments":"","outputs":1,"x":648.8667907714844,"y":79.68048095703125,"z":"760a1398.0b459c","wires":[["9ffb5e9d.17238"]]},{"id":"4fe79f76.5849e","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.95001220703125,"y":80.13049697875977,"z":"760a1398.0b459c","wires":[["371652dd.4cae3e"]]},{"id":"a4900b2a.5dcad8","type":"comment","name":"ChangeLog","info":"1.0.0: Release 1702 - EIPAM only allows allocating one address plan request at a time\n1.0.1: Release 1702 - introduced new input, eipam-ip-block.allocate-version to call EIPAM allocateSubnet individually\n                    - change toplevel block to Atomic, so if subet already exists, then it returns as failure\n                    - Update error msg\n1.0.2: Release 1702 - Remove check for existing subnet so can be called to create multiple subnet with same CLII_ZONE & NETWORK_ROLE, as \n\t\t\t\t\t\tin the autogrowth scenario\n1.0.3: Release 1702 - Req update to change level 1 & 2 key-name & key-values\n\t\t\t\t\t- update status to ACTIVE for level subnet\n\t\t\t\t\t- update service-type from $network-topology-operation-input.service-information.subscription-service-type to $tmp.service-type\n\t\t\t\t\t(cannot use the input field as not always populated in NTO-assign)\n\t\t\t\t\t- check for error when querying for entry in EIPAM_IP_POOLS before inserting to EIPAM_IP_SUBNETS\n1.0.4: Release 1707 - Add eipam-ip-block.subnet-size-override for level 2\n\n5/10 - 1707 - updated pool key-names for AIC_AIM_LANDING_NETWORK_V4\n6/20 - 1710 - change any underscores _  to colon : for all level 1 and level 2 Pool KeyNames\n6/21 - 1710 - Task 403314 - QIP Parent pool consolidation\n\t\t\t- New V6 plans - \n\t\t\t\tAIC_ATM_UNPROTECTED_V6\n\t\t\t\tAIC_ATM_PROTECTED_V6\n\t\t\t\tAIC_AIM_LANDING_V6\n3/8/18 - 1806 - 506678 -Level 1 keyName CLLI:CLOUD_REGION changed to LOCATION_CLLI8:CLOUD_REGION_ID\n","comments":"","x":150.68618774414062,"y":112,"z":"760a1398.0b459c","wires":[]},{"id":"9ffb5e9d.17238","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":117.68618774414062,"y":209.87387084960938,"z":"760a1398.0b459c","wires":[["d16b37cf.489f58","83ecc269.b0307","161f8d7c.8e3a03"]]},{"id":"d16b37cf.489f58","type":"set","name":"set: data initialization","xml":"<set>\n\t<parameter name=\"tmp.eipam-error\" value=\"false\" />\n\t<parameter name=\"eipam-ip-block.ip-prefix\" value='' />\n\t<parameter name=\"eipam-ip-block.mask\" value='' />\n\t<parameter name=\"pfx.eipam-pool-row\" value='' />\n\t<parameter name=\"tmp.level1-key-name\" value=\"LOCATION_CLLI8:CLOUD_REGION_ID\" />\n\t<parameter name=\"tmp.level2-key-name\" value=\"NETWORK_ROLE:NETWORK_ID\" />","comments":"","x":332.1201171875,"y":208.81381225585938,"z":"760a1398.0b459c","wires":[]},{"id":"80fa339c.99e08","type":"set","name":"set EIPAM plan info for Level 2 pool for allocateSubnet","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plan-name\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n\t<parameter name=\"eipam-ip-block.activate-subnet-flag\" value=\"N\"/>\t\n\t<parameter name=\"eipam-ip-block.leaf-level-indicator\" value=\"Y\"/>\n\n\t<!-- Number of Pool Levels -->\n\t<parameter name=\"eipam-ip-block.pools_length\" value=\"2\"/>\n\n\t<!-- Level 1 -->\n\t<parameter name=\"eipam-ip-block.pools[0].key-name\" value=\"`$tmp.level1-key-name`\"/>\n\t<parameter name=\"eipam-ip-block.pools[0].key-value\" value=\"`$tmp.level1-key-value`\"/>\n\n\t<!-- Level 2 -->\n\t<parameter name=\"eipam-ip-block.pools[1].key-name\" value=\"`$tmp.level2-key-name`\"/>\n\t<parameter name=\"eipam-ip-block.pools[1].key-value\" value=\"`$tmp.level2-key-value`\"/>","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2098.9706802368164,"y":505.6710214614868,"z":"760a1398.0b459c","wires":[]},{"id":"83ecc269.b0307","type":"switchNode","name":"switch: eipam-ip-block.allocate-version","xml":"<switch test=\"`$eipam-ip-block.allocate-version`\">","comments":"Need to know which ipv version to get the plan name from the network-model.","outputs":1,"x":337,"y":551.8138084411621,"z":"760a1398.0b459c","wires":[["b722808e.ca0b5","e6300956.825bd8","6137dc86.9b29e4"]]},{"id":"b722808e.ca0b5","type":"other","name":"ipv4","xml":"<outcome value='ipv4'>","comments":"","outputs":1,"x":577.000114440918,"y":411.8138122558594,"z":"760a1398.0b459c","wires":[["916a463e.4fa4a8"]]},{"id":"916a463e.4fa4a8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":731.000057220459,"y":410.81381607055664,"z":"760a1398.0b459c","wires":[["60c65685.a18c18"]]},{"id":"e6300956.825bd8","type":"other","name":"Null","xml":"<outcome value=''>","comments":"","outputs":1,"x":519.0000610351562,"y":1213.0541076660156,"z":"760a1398.0b459c","wires":[["501b79a.71a9088"]]},{"id":"4102ac63.9c8424","type":"set","name":"set EIPAM plan info for Level 1 pool for allocateSubnet","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plan-name\" value=\"`$network-model.eipam-v6-address-plan`\"/>\n\t<parameter name=\"eipam-ip-block.activate-subnet-flag\" value=\"Y\"/>\t\n\t<parameter name=\"eipam-ip-block.leaf-level-indicator\" value=\"N\"/>\n\t<!-- Number of Pool Levels -->\n\t<parameter name=\"eipam-ip-block.pools_length\" value=\"1\"/>\n\n\t<!-- Level 1 -->\n\t<parameter name=\"eipam-ip-block.pools[0].key-name\" value=\"`$tmp.level1-key-name`\"/>\n\t<parameter name=\"eipam-ip-block.pools[0].key-value\" value=\"`$tmp.level1-key-value`\"/>","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2104.736862182617,"y":1018.8138976097107,"z":"760a1398.0b459c","wires":[]},{"id":"66fa4ddd.45c444","type":"set","name":"set EIPAM plan info for Level 2 pool for allocateSubnet","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plan-name\" value=\"`$network-model.eipam-v6-address-plan`\"/>\n\t<parameter name=\"eipam-ip-block.activate-subnet-flag\" value=\"N\"/>\t\n\t<parameter name=\"eipam-ip-block.leaf-level-indicator\" value=\"Y\"/>\n\t\n\t<!-- Number of Pool Levels -->\n\t<parameter name=\"eipam-ip-block.pools_length\" value=\"2\"/>\n\n\t<!-- Level 1 -->\n\t<parameter name=\"eipam-ip-block.pools[0].key-name\" value=\"`$tmp.level1-key-name`\"/>\n\t<parameter name=\"eipam-ip-block.pools[0].key-value\" value=\"`$tmp.level1-key-value`\"/>\n\n\t<!-- Level 2 -->\n\t<parameter name=\"eipam-ip-block.pools[1].key-name\" value=\"`$tmp.level2-key-name`\"/>\n\t<parameter name=\"eipam-ip-block.pools[1].key-value\" value=\"`$tmp.level2-key-value`\"/>","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2155.564437866211,"y":1464.0996627807617,"z":"760a1398.0b459c","wires":[]},{"id":"b74d2d62.394db","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":733.8799324035645,"y":1097.8138160705566,"z":"760a1398.0b459c","wires":[["532f3ab4.c4c164"]]},{"id":"fcde54df.af4438","type":"get-resource","name":"get-resource V4 - validate if level 2 subnet does not exists","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v4-address-plan and s.network_id = $tmp.network-id and s.entity_id = k.entity_id and k.level = 2 and k.key_value = $network-model.network-role ;\"\n        pfx='tmp.eipam-subnet-row'>\n\n","comments":"","outputs":1,"x":2223.999969482422,"y":469.0000305175781,"z":"760a1398.0b459c","wires":[["4830173a.71fe08","80511b7b.e4aab8","a8e746dd.af1b88"]]},{"id":"27347235.930fee","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed.\" />\n\t","comments":"","x":2644.9998626708984,"y":422.0000305175781,"z":"760a1398.0b459c","wires":[]},{"id":"4830173a.71fe08","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2496.999954223633,"y":460.0000305175781,"z":"760a1398.0b459c","wires":[["f92c4af8.d67a58"]]},{"id":"60c65685.a18c18","type":"switchNode","name":"switch: eipam-ip-block.level","xml":"<switch test=\"`$eipam-ip-block.level`\">","comments":"","outputs":1,"x":954.0810928344727,"y":410.99999618530273,"z":"760a1398.0b459c","wires":[["16307416.fc962c","28a54d14.e1ee52","53b183dc.53d50c"]]},{"id":"16307416.fc962c","type":"other","name":"2","xml":"<outcome value='2'>","comments":"","outputs":1,"x":1101.0812072753906,"y":523,"z":"760a1398.0b459c","wires":[["cbaffe8a.989f7"]]},{"id":"28a54d14.e1ee52","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1077.0812072753906,"y":653.0000305175781,"z":"760a1398.0b459c","wires":[["64d28328.b405ac"]]},{"id":"64d28328.b405ac","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Please set the eipam-ip-block.level for appropriate EIPAM request.\" />\n\t","comments":"","x":1237.0811767578125,"y":653.0000610351562,"z":"760a1398.0b459c","wires":[]},{"id":"80511b7b.e4aab8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2495.8617401123047,"y":424.0000305175781,"z":"760a1398.0b459c","wires":[["27347235.930fee"]]},{"id":"a8e746dd.af1b88","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":2499.861770629883,"y":496.0000305175781,"z":"760a1398.0b459c","wires":[[]]},{"id":"2f5a2150.3d3a2e","type":"get-resource","name":"get-resource V4 - validate if level 1 subnet does not exists","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v4-address-plan and s.entity_id = k.entity_id and k.level = 1 and k.key_value = $tmp.level1-key-value ; \"\n        pfx='tmp.eipam-subnet-row'>\n\n","comments":"","outputs":1,"x":2017.4113311767578,"y":67.99999237060547,"z":"760a1398.0b459c","wires":[["fb8aca5.9b7ac38","dec2b328.82d96","8020e208.b0ffd"]]},{"id":"a9dc4db4.779bd","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed.\" />\n\t","comments":"","x":2438.4113159179688,"y":20,"z":"760a1398.0b459c","wires":[]},{"id":"fb8aca5.9b7ac38","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2290.411407470703,"y":58,"z":"760a1398.0b459c","wires":[["64b05dad.2cad44"]]},{"id":"53b183dc.53d50c","type":"other","name":"1","xml":"<outcome value='1'>","comments":"","outputs":1,"x":1094.4925231933594,"y":216,"z":"760a1398.0b459c","wires":[["bcf2b6d6.6d0b38"]]},{"id":"dec2b328.82d96","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2289.273193359375,"y":22,"z":"760a1398.0b459c","wires":[["a9dc4db4.779bd"]]},{"id":"8020e208.b0ffd","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":2293.273223876953,"y":94,"z":"760a1398.0b459c","wires":[[]]},{"id":"edf0f161.9ce66","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n\t<parameter name=\"error-code\" value=\"201\" />\n","comments":"","x":2644.1500549316406,"y":88,"z":"760a1398.0b459c","wires":[]},{"id":"3c25c29c.06ed2e","type":"get-resource","name":"get-resource V6 - validate if level 2 subnet does not exists","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v6-address-plan and s.network_id = $tmp.network-id and s.entity_id = k.entity_id and k.level = 2 and k.key_value = $network-model.network-role ;\"\n        pfx='tmp.eipam-subnet-row'>\n\n","comments":"","outputs":1,"x":1375.636459350586,"y":1386.1141357421875,"z":"760a1398.0b459c","wires":[["8f6400a2.8a791","3fb1139f.29660c","1fae9c1f.e65ea4"]]},{"id":"9d4fc360.e622c","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed.\" />\n\t","comments":"","x":1796.636245727539,"y":1337.1141357421875,"z":"760a1398.0b459c","wires":[]},{"id":"8f6400a2.8a791","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1648.6364440917969,"y":1375.1141357421875,"z":"760a1398.0b459c","wires":[["23a2d3f.911312c"]]},{"id":"532f3ab4.c4c164","type":"switchNode","name":"switch: eipam-ip-block.level","xml":"<switch test=\"`$eipam-ip-block.level`\">","comments":"","outputs":1,"x":940.7175750732422,"y":1094.2569961547852,"z":"760a1398.0b459c","wires":[["e530ea7.cfbe818","77735382.0d846c","c7dea1ce.8f647"]]},{"id":"e530ea7.cfbe818","type":"other","name":"2","xml":"<outcome value='2'>","comments":"","outputs":1,"x":1105.7174987792969,"y":1460.1141357421875,"z":"760a1398.0b459c","wires":[["8f612ba5.2244a8"]]},{"id":"77735382.0d846c","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1102.7174987792969,"y":1505.1141357421875,"z":"760a1398.0b459c","wires":[["e6dd0cef.4bdc"]]},{"id":"e6dd0cef.4bdc","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Please set the eipam-ip-block.level for appropriate EIPAM request.\" />\n\t","comments":"","x":1262.7173767089844,"y":1505.1141357421875,"z":"760a1398.0b459c","wires":[]},{"id":"3fb1139f.29660c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1647.4982299804688,"y":1339.1141357421875,"z":"760a1398.0b459c","wires":[["9d4fc360.e622c"]]},{"id":"1fae9c1f.e65ea4","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1651.4982604980469,"y":1411.1141357421875,"z":"760a1398.0b459c","wires":[[]]},{"id":"c2c1d17f.8dbac","type":"get-resource","name":"get-resource V6 - validate if level 1 subnet does not exists","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v6-address-plan and s.entity_id = k.entity_id and k.level = 1 and k.key_value = $tmp.level1-key-value ;\"\n        pfx='tmp.eipam-subnet-row'>\n\n","comments":"","outputs":1,"x":1957.0480270385742,"y":843.1141834259033,"z":"760a1398.0b459c","wires":[["6f57f784.e5c6e8","ceb7fd70.ab91a","a2b917cc.476cc8"]]},{"id":"f97e66aa.720a58","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed.\" />\n\t","comments":"","x":2378.0480308532715,"y":794.1142139434814,"z":"760a1398.0b459c","wires":[]},{"id":"6f57f784.e5c6e8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2230.048122406006,"y":832.1142139434814,"z":"760a1398.0b459c","wires":[["8133637b.48a57"]]},{"id":"c7dea1ce.8f647","type":"other","name":"1","xml":"<outcome value='1'>","comments":"","outputs":1,"x":1104.1290168762207,"y":988.1141662597656,"z":"760a1398.0b459c","wires":[["c531ead0.40b148"]]},{"id":"ceb7fd70.ab91a","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2228.9099082946777,"y":796.1142139434814,"z":"760a1398.0b459c","wires":[["f97e66aa.720a58"]]},{"id":"a2b917cc.476cc8","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":2232.909938812256,"y":868.1142139434814,"z":"760a1398.0b459c","wires":[[]]},{"id":"9ad7bb73.7983e8","type":"set","name":"set EIPAM plan info for Level 1 pool for allocateSubnet","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plan-name\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n\t<parameter name=\"eipam-ip-block.activate-subnet-flag\" value=\"Y\"/>\t\n\t<parameter name=\"eipam-ip-block.leaf-level-indicator\" value=\"N\"/>\n\t<!-- Number of Pool Levels -->\n\t<parameter name=\"eipam-ip-block.pools_length\" value=\"1\"/>\n\n\t<!-- Level 1 -->\n\t<parameter name=\"eipam-ip-block.pools[0].key-name\" value=\"`$tmp.level1-key-name`\"/>\n\t<parameter name=\"eipam-ip-block.pools[0].key-value\" value=\"`$tmp.level1-key-value`\"/>","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2091.534698486328,"y":180.81381225585938,"z":"760a1398.0b459c","wires":[]},{"id":"eaace9a5.c1ece8","type":"save","name":"insert EIPAM_IP_SUBNETS for level 1 V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNETS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             service_type = $tmp.service-type ,\n             ip_address = $eipam-ip-block.ip-prefix ,\n             prefix_length = $eipam-ip-block.mask ,\n             plan_name = $network-model.eipam-v4-address-plan ,\n             status = 'ACTIVE' ,\n             pool_id = $pfx.eipam-pool-row.pool-id ,\n             address_family = $network-model.ipv4-ip-version ,\n             network_id = $tmp.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-v4subnet-row'>\n","comments":"","outputs":1,"x":2061.540802001953,"y":325.96417236328125,"z":"760a1398.0b459c","wires":[["925aeb70.b22f68","dc8d75b0.09c688"]]},{"id":"bcf2b6d6.6d0b38","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1299.4894104003906,"y":213.96395874023438,"z":"760a1398.0b459c","wires":[["9ad7bb73.7983e8","bc706818.a810c8","eaace9a5.c1ece8","e63ec037.80fba","d6be9577.8252d8","feae1b24.761d88"]]},{"id":"bc706818.a810c8","type":"execute","name":"execute EIPAM allocateSubnet","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"allocateSubnet\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":2022.0812072753906,"y":225.81381225585938,"z":"760a1398.0b459c","wires":[["d7ad882b.fcda68"]]},{"id":"d7ad882b.fcda68","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2232.0812377929688,"y":227.2041778564453,"z":"760a1398.0b459c","wires":[["fa28aaa2.b5a438"]]},{"id":"fa28aaa2.b5a438","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating V4 subnet in EIPAM.\" />\n\t","comments":"","x":2396.081268310547,"y":230.20420837402344,"z":"760a1398.0b459c","wires":[]},{"id":"cbaffe8a.989f7","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1281.5705871582031,"y":524.8138122558594,"z":"760a1398.0b459c","wires":[["80fa339c.99e08","573b6d96.29c894","c01b033c.34cdf","8e8d9559.92e268","5198aecb.d2a32","f0aa1ff6.5d249","106f1e90.287d31","f63c99d8.3b6cb8","d21cbd92.6a426"]]},{"id":"573b6d96.29c894","type":"execute","name":"execute EIPAM allocateSubnet","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"allocateSubnet\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":2026.6126403808594,"y":571.8138122558594,"z":"760a1398.0b459c","wires":[["6599c8ae.5ffcd8"]]},{"id":"6599c8ae.5ffcd8","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2236.6126708984375,"y":573.2041778564453,"z":"760a1398.0b459c","wires":[["3d657ed.846f382"]]},{"id":"3d657ed.846f382","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating V4 subnet in EIPAM.\" />\n\t","comments":"","x":2400.6127014160156,"y":576.2042083740234,"z":"760a1398.0b459c","wires":[]},{"id":"c01b033c.34cdf","type":"save","name":"insert EIPAM_IP_SUBNETS for level 2 V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNETS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             service_type = $tmp.service-type ,\n             ip_address = $eipam-ip-block.ip-prefix ,\n             prefix_length = $eipam-ip-block.mask ,\n             plan_name = $network-model.eipam-v4-address-plan ,\n             status = 'ALLOCATED' ,\n             pool_id = $pfx.eipam-pool-row.pool-id ,\n             address_family = $network-model.ipv4-ip-version ,\n             network_id = $tmp.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-row'>\n","comments":"","outputs":1,"x":2061.612518310547,"y":679.8138732910156,"z":"760a1398.0b459c","wires":[["575acf6f.3712c","2cab8ca3.72baa4"]]},{"id":"8e8d9559.92e268","type":"save","name":"insert EIPAM_IP_SUBNET_KEYS for level 1 V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNET_KEYS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             key_name = $tmp.level1-key-name ,\n             key_value = $tmp.level1-key-value ,\n             level = 1 ; \"\n    force='true'\n        pfx='pfx.eipam-v4subnet-key-row'>\n","comments":"","outputs":1,"x":2076.612335205078,"y":721.8138160705566,"z":"760a1398.0b459c","wires":[["2cab8ca3.72baa4","c5bcb39.d3b4b5"]]},{"id":"5198aecb.d2a32","type":"save","name":"insert EIPAM_IP_SUBNET_KEYS for level 2 V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNET_KEYS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             key_name = $tmp.level2-key-name ,\n             key_value = $tmp.level2-key-value ,\n             level = 2 ; \"\n    force='true'\n        pfx='pfx.eipam-v4subnet-key-row'>\n","comments":"","outputs":1,"x":2075.6124572753906,"y":767.8138465881348,"z":"760a1398.0b459c","wires":[["2cab8ca3.72baa4","c5bcb39.d3b4b5"]]},{"id":"e63ec037.80fba","type":"save","name":"insert EIPAM_IP_SUBNET_KEYS for level 1 V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNET_KEYS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             key_name = $tmp.level1-key-name ,\n             key_value = $tmp.level1-key-value ,\n             level = 1 ; \"\n    force='true'\n        pfx='pfx.eipam-v4subnet-key-row'>\n","comments":"","outputs":1,"x":2079.816864013672,"y":362.9639587402344,"z":"760a1398.0b459c","wires":[["dc8d75b0.09c688","fd392a07.eb9c58"]]},{"id":"d6be9577.8252d8","type":"get-resource","name":"get-resource V4 - get pool_id","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = 1 and key_value = $tmp.level1-key-value ; \"\n        pfx='pfx.eipam-pool-row'>\n\n","comments":"","outputs":1,"x":2021.1892395019531,"y":274.81380462646484,"z":"760a1398.0b459c","wires":[["38251174.1c869e","4e8d064f.fd5d48"]]},{"id":"f0aa1ff6.5d249","type":"get-resource","name":"get-resource V4 - get pool_id","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = 2 and parent_pool = $tmp.level1-key-value AND key_value = $tmp.level2-key-value ; \"\n        pfx='pfx.eipam-pool-row'>\n\n","comments":"","outputs":1,"x":2018.1889953613281,"y":623.8138732910156,"z":"760a1398.0b459c","wires":[["5fa054bd.16e17c","2207199e.08aea6"]]},{"id":"96160911.77add8","type":"save","name":"insert EIPAM_IP_SUBNETS for level 1 V6","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNETS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             service_type = $tmp.service-type ,\n             ip_address = $eipam-ip-block.ip-prefix ,\n             prefix_length = $eipam-ip-block.mask ,\n             plan_name = $network-model.eipam-v6-address-plan ,\n             status = 'ACTIVE' ,\n             pool_id = $pfx.eipam-pool-row.pool-id ,\n             address_family = $network-model.ipv6-ip-version ,\n             network_id = $tmp.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-v6subnet-row'>\n","comments":"","outputs":1,"x":2074.3451232910156,"y":1168.4146118164062,"z":"760a1398.0b459c","wires":[["33c44b3e.966ef4","a40e05cb.6396d8"]]},{"id":"727b36ab.492098","type":"execute","name":"execute EIPAM allocateSubnet","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"allocateSubnet\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":2034.8855895996094,"y":1070.2642517089844,"z":"760a1398.0b459c","wires":[["e68681fb.1b313"]]},{"id":"e68681fb.1b313","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2244.8856201171875,"y":1071.6546173095703,"z":"760a1398.0b459c","wires":[["a1bad217.c4e66"]]},{"id":"a1bad217.c4e66","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating V4 subnet in EIPAM.\" />\n\t","comments":"","x":2408.8856506347656,"y":1074.6546478271484,"z":"760a1398.0b459c","wires":[]},{"id":"411b72f1.d14bac","type":"save","name":"insert EIPAM_IP_SUBNET_KEYS for level 1 V6","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNET_KEYS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             key_name = $tmp.level1-key-name ,\n             key_value = $tmp.level1-key-value ,\n             level = 1 ; \"\n    force='true'\n        pfx='pfx.eipam-v6subnet-key-row'>\n","comments":"","outputs":1,"x":2092.6212463378906,"y":1207.4143981933594,"z":"760a1398.0b459c","wires":[["3fa0173.be07be8","a40e05cb.6396d8"]]},{"id":"6506c176.93235","type":"get-resource","name":"get-resource V6 - get pool_id","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = 1 and key_value = $tmp.level1-key-value ; \"\n        pfx='pfx.eipam-pool-row'>\n\n","comments":"","outputs":1,"x":2033.9935607910156,"y":1116.2642822265625,"z":"760a1398.0b459c","wires":[["6e0864fa.a05b5c","81c3a0cf.8f46b"]]},{"id":"7be2c1b5.c1c77","type":"execute","name":"execute EIPAM allocateSubnet","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"allocateSubnet\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":2089.2672424316406,"y":1542.7146453857422,"z":"760a1398.0b459c","wires":[["e3471665.468d88"]]},{"id":"e3471665.468d88","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2299.2672729492188,"y":1544.1050109863281,"z":"760a1398.0b459c","wires":[["94516d8.b36509"]]},{"id":"94516d8.b36509","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating V4 subnet in EIPAM.\" />\n\t","comments":"","x":2463.2672424316406,"y":1547.10498046875,"z":"760a1398.0b459c","wires":[]},{"id":"e84f11af.afca5","type":"save","name":"insert EIPAM_IP_SUBNETS for level 2 V6","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNETS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             service_type = $tmp.service-type ,\n             ip_address = $eipam-ip-block.ip-prefix ,\n             prefix_length = $eipam-ip-block.mask ,\n             plan_name = $network-model.eipam-v6-address-plan ,\n             status = 'ALLOCATED' ,\n             pool_id = $pfx.eipam-pool-row.pool-id ,\n             address_family = $network-model.ipv6-ip-version ,\n             network_id = $tmp.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-v6subnet-row'>\n","comments":"","outputs":1,"x":2121.267120361328,"y":1650.7147216796875,"z":"760a1398.0b459c","wires":[["7ca10271.cf98dc","da5c64a7.63de18"]]},{"id":"c715c9e8.59d0d8","type":"save","name":"insert EIPAM_IP_SUBNET_KEYS for level 1 V6","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNET_KEYS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             key_name = $tmp.level1-key-name ,\n             key_value = $tmp.level1-key-value ,\n             level = 1 ; \"\n    force='true'\n        pfx='pfx.eipam-v6subnet-key-row'>\n","comments":"","outputs":1,"x":2139.2669372558594,"y":1692.7146492004395,"z":"760a1398.0b459c","wires":[["da5c64a7.63de18","91780b62.d91198"]]},{"id":"f9f33233.1ebf2","type":"save","name":"insert EIPAM_IP_SUBNET_KEYS for level 2 V6","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNET_KEYS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             key_name = $tmp.level2-key-name ,\n             key_value = $tmp.level2-key-value ,\n             level = 2 ; \"\n    force='true'\n        pfx='pfx.eipam-v6subnet-key-row'>\n","comments":"","outputs":1,"x":2138.267059326172,"y":1738.7146797180176,"z":"760a1398.0b459c","wires":[["da5c64a7.63de18","91780b62.d91198"]]},{"id":"e1eb7292.1ec3b","type":"get-resource","name":"get-resource V6 - get pool_id","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = 2 and parent_pool = $tmp.level1-key-value AND key_value = $tmp.level2-key-value ; \"\n        pfx='pfx.eipam-pool-row'>\n\n","comments":"","outputs":1,"x":2085.8436584472656,"y":1596.7147216796875,"z":"760a1398.0b459c","wires":[["a3433e81.f0097","15a4041c.4a70fc"]]},{"id":"c531ead0.40b148","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1272.9460144042969,"y":985.2643127441406,"z":"760a1398.0b459c","wires":[["4102ac63.9c8424","727b36ab.492098","6506c176.93235","96160911.77add8","411b72f1.d14bac","8955333.6563dd"]]},{"id":"8f612ba5.2244a8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1262.6607360839844,"y":1458.7147216796875,"z":"760a1398.0b459c","wires":[["66fa4ddd.45c444","7be2c1b5.c1c77","e1eb7292.1ec3b","e84f11af.afca5","c715c9e8.59d0d8","f9f33233.1ebf2","61ea6fc5.05eee","483c255.04784dc"]]},{"id":"6137dc86.9b29e4","type":"other","name":"ipv6","xml":"<outcome value='ipv6'>","comments":"","outputs":1,"x":549.7717437744141,"y":1095.9640197753906,"z":"760a1398.0b459c","wires":[["b74d2d62.394db"]]},{"id":"161f8d7c.8e3a03","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />\n","comments":"","x":267,"y":684.1141662597656,"z":"760a1398.0b459c","wires":[]},{"id":"9bd357cd.62d6b8","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"V4 Level 2 Subnet already exists.\" />\n\t","comments":"","x":2865.2161560058594,"y":511.8138427734375,"z":"760a1398.0b459c","wires":[]},{"id":"fe30cef2.bc586","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"V6 Level 1 Subnet already exists.\" />\n\t","comments":"","x":2239.216094970703,"y":966.2643127441406,"z":"760a1398.0b459c","wires":[]},{"id":"547e3e18.82a3d","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"V6 Level 2 Subnet already exists.\" />\n\t","comments":"","x":2019.2162780761719,"y":1413.7147216796875,"z":"760a1398.0b459c","wires":[]},{"id":"501b79a.71a9088","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Please set the eipam-ip-block.allocate-version for appropriate EIPAM request.\" />\n\t","comments":"","x":686.1141052246094,"y":1213.5645751953125,"z":"760a1398.0b459c","wires":[]},{"id":"a0b5b6d4.69bf88","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n\t<parameter name=\"error-code\" value=\"201\" />\n","comments":"","x":2581.159355163574,"y":864.4145069122314,"z":"760a1398.0b459c","wires":[]},{"id":"703386c3.364c18","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-network-role-subnet\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.level1-key-value`\"/>\n<parameter name=\"field6\" value=\"Level 1 subnet already exists, SKIP.\"/>\n<parameter name=\"field7\" value=\"`$tmp.eipam-pool-row.pool-id`\"/>\n","comments":"","outputs":1,"x":2619.9159240722656,"y":48.813812255859375,"z":"760a1398.0b459c","wires":[[]]},{"id":"ebaf4e36.bd4bf","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-network-role-subnet\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.level1-key-value`\"/>\n<parameter name=\"field6\" value=\"Level 1 subnet already exists, SKIP.\"/>\n<parameter name=\"field7\" value=\"`$tmp.eipam-pool-row.pool-id`\"/>\n","comments":"","outputs":1,"x":2560.366630554199,"y":833.2642993927002,"z":"760a1398.0b459c","wires":[[]]},{"id":"64b05dad.2cad44","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2441.3663482666016,"y":53.813812255859375,"z":"760a1398.0b459c","wires":[["703386c3.364c18","edf0f161.9ce66"]]},{"id":"f92c4af8.d67a58","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2648.3662719726562,"y":457.96398544311523,"z":"760a1398.0b459c","wires":[["e1ad168c.14d068","9bd357cd.62d6b8"]]},{"id":"a30c2417.c0dfe8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-network-role-subnet\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value`\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value`\"/>\n","comments":"","outputs":1,"x":2487.366241455078,"y":487.8138084411621,"z":"760a1398.0b459c","wires":[[]]},{"id":"e1ad168c.14d068","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-network-role-subnet\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.level1-key-value`\"/>\n<parameter name=\"field6\" value=\"Level 2 subnet already exists, SKIP.\"/>\n\n<!-- Level 2 -->\n\t<parameter name=\"field7\" value=\"NETWORK_ROLE_NETWORK_ID\"/>\n\t<parameter name=\"field8\" value=\"`$tmp.level2-key-value`\"/>\n","comments":"","outputs":1,"x":2844.3663024902344,"y":478.8138427734375,"z":"760a1398.0b459c","wires":[[]]},{"id":"8133637b.48a57","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2376.745048522949,"y":834.2643604278564,"z":"760a1398.0b459c","wires":[["ebaf4e36.bd4bf","a0b5b6d4.69bf88"]]},{"id":"23a2d3f.911312c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1803.744888305664,"y":1372.7147216796875,"z":"760a1398.0b459c","wires":[["46d3087c.7d3818","547e3e18.82a3d"]]},{"id":"46d3087c.7d3818","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-network-role-subnet\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.level1-key-value`\"/>\n<parameter name=\"field6\" value=\"Level 2 subnet already exists, SKIP.\"/>\n\n<!-- Level 2 -->\n\t<parameter name=\"field7\" value=\"NETWORK_ROLE_NETWORK_ID\"/>\n\t<parameter name=\"field8\" value=\"`$tmp.level2-key-value`\"/>\n","comments":"","outputs":1,"x":2005.7447814941406,"y":1374.8648681640625,"z":"760a1398.0b459c","wires":[[]]},{"id":"7e6a6282.f8c56c","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 EIPAM_IP_SUBNETS table.' />\n","comments":"","x":2587.8376426696777,"y":321.96395111083984,"z":"760a1398.0b459c","wires":[]},{"id":"925aeb70.b22f68","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2372.8377990722656,"y":320.8138084411621,"z":"760a1398.0b459c","wires":[["7e6a6282.f8c56c"]]},{"id":"dc8d75b0.09c688","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2368.9305725097656,"y":416.96395111083984,"z":"760a1398.0b459c","wires":[[]]},{"id":"575acf6f.3712c","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2395.6458168029785,"y":695.8138465881348,"z":"760a1398.0b459c","wires":[["681c821a.b300ac"]]},{"id":"2cab8ca3.72baa4","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2397.738800048828,"y":730.9640159606934,"z":"760a1398.0b459c","wires":[[]]},{"id":"33c44b3e.966ef4","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2402.6458168029785,"y":1162.4144325256348,"z":"760a1398.0b459c","wires":[["a8bdda72.805118"]]},{"id":"a40e05cb.6396d8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2414.738800048828,"y":1252.5645751953125,"z":"760a1398.0b459c","wires":[[]]},{"id":"7ca10271.cf98dc","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2469.645538330078,"y":1664.8648681640625,"z":"760a1398.0b459c","wires":[["235ca03c.04ad8"]]},{"id":"da5c64a7.63de18","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2476.738800048828,"y":1759.0150146484375,"z":"760a1398.0b459c","wires":[[]]},{"id":"d669beda.87f5c","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 EIPAM_IP_SUBNET_KEYS table.' />\n","comments":"","x":2587.9515686035156,"y":366.8138122558594,"z":"760a1398.0b459c","wires":[]},{"id":"fd392a07.eb9c58","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2373.9520568847656,"y":367.6636657714844,"z":"760a1398.0b459c","wires":[["d669beda.87f5c"]]},{"id":"2b912804.7b9c68","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 EIPAM_IP_SUBNET_KEYS table.' />\n","comments":"","x":2570.951446533203,"y":766.9640159606934,"z":"760a1398.0b459c","wires":[]},{"id":"c5bcb39.d3b4b5","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2395.951934814453,"y":766.8138694763184,"z":"760a1398.0b459c","wires":[["2b912804.7b9c68"]]},{"id":"681c821a.b300ac","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 EIPAM_IP_SUBNETS table.' />\n","comments":"","x":2563.9518127441406,"y":696.9639892578125,"z":"760a1398.0b459c","wires":[]},{"id":"56dea9f1.3ef0a8","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 EIPAM_IP_SUBNET_KEYS table.' />\n","comments":"","x":2565.951690673828,"y":1203.4144287109375,"z":"760a1398.0b459c","wires":[]},{"id":"a8bdda72.805118","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 EIPAM_IP_SUBNETS table.' />\n","comments":"","x":2564.952178955078,"y":1161.4144020080566,"z":"760a1398.0b459c","wires":[]},{"id":"3fa0173.be07be8","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2403.951690673828,"y":1203.4144287109375,"z":"760a1398.0b459c","wires":[["56dea9f1.3ef0a8"]]},{"id":"489d7861.d07ae8","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 EIPAM_IP_SUBNET_KEYS table.' />\n","comments":"","x":2633.257598876953,"y":1713.0150146484375,"z":"760a1398.0b459c","wires":[]},{"id":"235ca03c.04ad8","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 EIPAM_IP_SUBNETS table.' />\n","comments":"","x":2627.258087158203,"y":1663.0150146484375,"z":"760a1398.0b459c","wires":[]},{"id":"91780b62.d91198","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2471.257598876953,"y":1713.0150146484375,"z":"760a1398.0b459c","wires":[["489d7861.d07ae8"]]},{"id":"8955333.6563dd","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-network-role-subnet\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.level1-key-value`\"/>\n<parameter name=\"field6\" value=\"`$tmp.eipam-pool-row.pool-id`\"/>\n<parameter name=\"field7\" value=\"Level 1 subnet saved to DB.\"/>","comments":"","outputs":1,"x":1979.9219055175781,"y":1249.7147216796875,"z":"760a1398.0b459c","wires":[[]]},{"id":"61ea6fc5.05eee","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-network-role-subnet\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.level1-key-value`\"/>\n\n<!-- Level 2 -->\n\t<parameter name=\"field6\" value=\"NETWORK_ROLE_NETWORK_ID\"/>\n\t<parameter name=\"field7\" value=\"`$tmp.level2-key-value`\"/>\n<parameter name=\"field8\" value=\"Level 2 subnet saved to DB.\"/>","comments":"","outputs":1,"x":2036.9519348144531,"y":1802.3153076171875,"z":"760a1398.0b459c","wires":[[]]},{"id":"106f1e90.287d31","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-network-role-subnet\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.level1-key-value`\"/>\n\n<!-- Level 2 -->\n\t<parameter name=\"field6\" value=\"NETWORK_ROLE_NETWORK_ID\"/>\n\t<parameter name=\"field7\" value=\"`$tmp.level2-key-value`\"/>\n<parameter name=\"field8\" value=\"Level 2 subnet saved to DB.\"/>","comments":"","outputs":1,"x":1956.9519348144531,"y":804.4144287109375,"z":"760a1398.0b459c","wires":[[]]},{"id":"feae1b24.761d88","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-network-role-subnet\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.level1-key-value`\"/>\n<parameter name=\"field6\" value=\"`$tmp.eipam-pool-row.pool-id`\"/>\n<parameter name=\"field7\" value=\"Level 1 subnet saved to DB.\"/>","comments":"","outputs":1,"x":1463.9519348144531,"y":299.9639587402344,"z":"760a1398.0b459c","wires":[[]]},{"id":"38251174.1c869e","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2224.1861877441406,"y":261.39998626708984,"z":"760a1398.0b459c","wires":[["4b3725b3.fcda9c"]]},{"id":"4b3725b3.fcda9c","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM.\" />\n\t","comments":"","x":2429.1861877441406,"y":275.40001678466797,"z":"760a1398.0b459c","wires":[]},{"id":"4e8d064f.fd5d48","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":2238.1861877441406,"y":296.39998626708984,"z":"760a1398.0b459c","wires":[["4b3725b3.fcda9c"]]},{"id":"5fa054bd.16e17c","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2216.2911376953125,"y":618.595832824707,"z":"760a1398.0b459c","wires":[["2ed2ba3f.1c7966"]]},{"id":"2ed2ba3f.1c7966","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM.\" />\n\t","comments":"","x":2421.2911376953125,"y":632.5958633422852,"z":"760a1398.0b459c","wires":[]},{"id":"2207199e.08aea6","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":2230.2911376953125,"y":653.595832824707,"z":"760a1398.0b459c","wires":[["2ed2ba3f.1c7966"]]},{"id":"6e0864fa.a05b5c","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2241.5860900878906,"y":1103.4000244140625,"z":"760a1398.0b459c","wires":[["998553a0.5a009"]]},{"id":"998553a0.5a009","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM.\" />\n\t","comments":"","x":2446.5860900878906,"y":1117.4000549316406,"z":"760a1398.0b459c","wires":[]},{"id":"81c3a0cf.8f46b","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":2255.5860900878906,"y":1138.4000244140625,"z":"760a1398.0b459c","wires":[["998553a0.5a009"]]},{"id":"a3433e81.f0097","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2297.5860900878906,"y":1581.4000244140625,"z":"760a1398.0b459c","wires":[["adf0891f.d1fa18"]]},{"id":"adf0891f.d1fa18","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM.\" />\n\t","comments":"","x":2502.585968017578,"y":1595.4000244140625,"z":"760a1398.0b459c","wires":[]},{"id":"15a4041c.4a70fc","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":2311.5860900878906,"y":1616.4000244140625,"z":"760a1398.0b459c","wires":[["adf0891f.d1fa18"]]},{"id":"2b47b090.d7ef9","type":"switchNode","name":"switch: network-model.eipam-v4-address-plan","xml":"<switch test=\"`$network-model.eipam-v4-address-plan`\">","comments":"","outputs":1,"x":1009.5454330444336,"y":169.84091186523438,"z":"760a1398.0b459c","wires":[["67f46aa1.6bc964"]]},{"id":"67f46aa1.6bc964","type":"other","name":"AIC_AIM_LANDING_NETWORK_V4","xml":"<outcome value=\"AIC_AIM_LANDING_NETWORK_V4\">","comments":"","outputs":1,"x":1348.5454177856445,"y":163.84090614318848,"z":"760a1398.0b459c","wires":[["9f05ca3.3178d38"]]},{"id":"9f05ca3.3178d38","type":"set","name":"set key-names","xml":"<set>\n\t<parameter name=\"tmp.level1-key-name\" value=\"CLLI:CLOUD_REGION\" />\n\t<parameter name=\"tmp.level2-key-name\" value=\"NETWORK_ROLE:NETWORK_ID\" />\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1654.636215209961,"y":158.7499942779541,"z":"760a1398.0b459c","wires":[]},{"id":"2b7ed529.3d43ba","type":"switchNode","name":"switch: network-model.eipam-v6-address-plan","xml":"<switch test=\"`$network-model.eipam-v6-address-plan`\">","comments":"","outputs":1,"x":1000.2366485595703,"y":928.3332672119141,"z":"760a1398.0b459c","wires":[["16cfe3e2.cecd8c","3a6dfd.d01f8204","dee875e0.658cb8","2b8d9210.774eee"]]},{"id":"16cfe3e2.cecd8c","type":"other","name":"AIC_AIM_LANDING_NETWORK_V6","xml":"<outcome value=\"AIC_AIM_LANDING_NETWORK_V6\">","comments":"","outputs":1,"x":1339.2366333007812,"y":922.3332614898682,"z":"760a1398.0b459c","wires":[["30735986.fcf186"]]},{"id":"30735986.fcf186","type":"set","name":"set key-names","xml":"<set>\n\t<parameter name=\"tmp.level1-key-name\" value=\"CLLI:CLOUD_REGION\" />\n\t<parameter name=\"tmp.level2-key-name\" value=\"NETWORK_ROLE:NETWORK_ID\" />\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1645.3274307250977,"y":917.2423496246338,"z":"760a1398.0b459c","wires":[]},{"id":"2b8d9210.774eee","type":"other","name":"AIC_DATA_PLANE_UNPROTECTED_V6","xml":"<outcome value=\"AIC_DATA_PLANE_UNPROTECTED_V6\">","comments":"","outputs":1,"x":1363.2366485595703,"y":808.333309173584,"z":"760a1398.0b459c","wires":[["30735986.fcf186"]]},{"id":"3a6dfd.d01f8204","type":"other","name":"AIC_DATA_PLANE_PROTECTED_V6","xml":"<outcome value=\"AIC_DATA_PLANE_PROTECTED_V6\">","comments":"","outputs":1,"x":1349.9033432006836,"y":884.3333358764648,"z":"760a1398.0b459c","wires":[["30735986.fcf186"]]},{"id":"dee875e0.658cb8","type":"other","name":"AIC_DATA_PLANE_PRIVATE_V6","xml":"<outcome value=\"AIC_DATA_PLANE_PRIVATE_V6\">","comments":"","outputs":1,"x":1338.2367095947266,"y":848.333288192749,"z":"760a1398.0b459c","wires":[["30735986.fcf186"]]},{"id":"f63c99d8.3b6cb8","type":"switchNode","name":"switch: eipam-ip-block.subnet-size-override","xml":"<switch test=\"`$eipam-ip-block.subnet-size-override`\">","comments":"","outputs":1,"x":2060.428695678711,"y":541.428544998169,"z":"760a1398.0b459c","wires":[["a441450b.f19e08"]]},{"id":"17506802.cbb568","type":"set","name":"set subnet override if not set","xml":"<set>\n\t<parameter name=\"eipam-ip-block.subnet-size-override\" value=\"`$network-model.ipv4-cidr-mask`\" />\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2793.2856979370117,"y":570.0001010894775,"z":"760a1398.0b459c","wires":[]},{"id":"a441450b.f19e08","type":"outcome","name":"outcome null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2331.8575019836426,"y":540.0000820159912,"z":"760a1398.0b459c","wires":[["801f369b.171c48"]]},{"id":"517daf80.d2a12","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-network-role-subnet\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.level2-key-value`\"/>\n<parameter name=\"field6\" value=\"Level 2 subnet override not set, default to network model value.\"/>\n\n","comments":"","outputs":1,"x":2723.28564453125,"y":538.4285888671875,"z":"760a1398.0b459c","wires":[[]]},{"id":"801f369b.171c48","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2539.6640625,"y":538.4286499023438,"z":"760a1398.0b459c","wires":[["517daf80.d2a12","17506802.cbb568"]]},{"id":"483c255.04784dc","type":"switchNode","name":"switch: eipam-ip-block.subnet-size-override","xml":"<switch test=\"`$eipam-ip-block.subnet-size-override`\">","comments":"","outputs":1,"x":2114.428466796875,"y":1497.142822265625,"z":"760a1398.0b459c","wires":[["f307ed5.20b8b1"]]},{"id":"f307ed5.20b8b1","type":"outcome","name":"outcome null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2385.8572731018066,"y":1495.7143592834473,"z":"760a1398.0b459c","wires":[["43b37e56.eccae"]]},{"id":"43b37e56.eccae","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2593.663833618164,"y":1494.1429271697998,"z":"760a1398.0b459c","wires":[["40d15cb5.994364","28a43c12.6d6e74"]]},{"id":"28a43c12.6d6e74","type":"set","name":"set subnet override if not set","xml":"<set>\n\t<parameter name=\"eipam-ip-block.subnet-size-override\" value=\"`$network-model.ipv6-cidr-mask`\" />\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2845.0695419311523,"y":1523.9004917144775,"z":"760a1398.0b459c","wires":[]},{"id":"40d15cb5.994364","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-allocate-network-role-subnet\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v6-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.level2-key-value`\"/>\n<parameter name=\"field6\" value=\"Level 2 subnet override not set, default to network model value.\"/>\n\n","comments":"","outputs":1,"x":2775.0694885253906,"y":1492.3289794921875,"z":"760a1398.0b459c","wires":[[]]},{"id":"d21cbd92.6a426","type":"set","name":"unset subnet override ","xml":"<set>\n\t<parameter name=\"eipam-ip-block.subnet-size-override\" value='' />\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1703.7500228881836,"y":777.5000114440918,"z":"760a1398.0b459c","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_eipam-create-generic-pool.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_eipam-create-generic-pool.json
new file mode 100755
index 0000000..23975aa
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_eipam-create-generic-pool.json
@@ -0,0 +1 @@
+[{"id":"e2e3481.5f32db8","type":"dgstart","name":"DGSTART","outputs":1,"x":95.71428680419922,"y":28.571428298950195,"z":"349cd3c6.7ae4ac","wires":[["2b280696.a1533a"]]},{"id":"2b280696.a1533a","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":361.8071594238281,"y":26.173827171325684,"z":"349cd3c6.7ae4ac","wires":[["c5939f21.48bac"]]},{"id":"80ef1851.d2a118","type":"comment","name":"ChangeLog","info":"3/21 - initial version","comments":"","x":84.54327392578125,"y":76.32904410362244,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"c5939f21.48bac","type":"method","name":"eipam-create-generic-pool","xml":"<method rpc='eipam-create-generic-pool' mode='sync'>\n","comments":"","outputs":1,"x":153.26294708251953,"y":117.25627899169922,"z":"349cd3c6.7ae4ac","wires":[["23817fa2.ce037"]]},{"id":"b036d114.4c11","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-create-generic-pool\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value`\"/>\n\n","comments":"","outputs":1,"x":2174.688430786133,"y":741.7044677734375,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"6f8e94f6.a5cbcc","type":"set","name":"set EIPAM pool info at each Level","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name\" value=\"`$v4FQPN-output.pools[$l4-idx].key-name`\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value\" value=\"`$v4FQPN-output.pools[$l4-idx].key-value`\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2249.500452041626,"y":697.2501811981201,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"629efca9.657ab4","type":"execute","name":"execute EIPAM createPool","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"createPool\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":788.7142181396484,"y":1656.3458805084229,"z":"349cd3c6.7ae4ac","wires":[["45e81867.eab068","3b05b3c5.afdfac"]]},{"id":"23817fa2.ce037","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":105.40047454833984,"y":167.6314868927002,"z":"349cd3c6.7ae4ac","wires":[["b9c0b035.a2a53","7e88c71a.3c9f78","d6eff478.7ae598","e937da96.450648","5fcb4629.8fc1a8","c95edad7.418dc8","9b4b3a87.ce0398","d0744c26.6d381"]]},{"id":"b9c0b035.a2a53","type":"switchNode","name":"switch: network-model.use-ipv4","xml":"<switch test=\"`$network-model.use-ipv4`\">","comments":"","outputs":1,"x":370.7142753601074,"y":458.6314868927002,"z":"349cd3c6.7ae4ac","wires":[["f9d87dbe.be8de","d0a1dc79.d23e","f4309371.e6295"]]},{"id":"d0a1dc79.d23e","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":582.7143363952637,"y":471.63151359558105,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"f9d87dbe.be8de","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":581.7143936157227,"y":427.6314868927002,"z":"349cd3c6.7ae4ac","wires":[["26fa525e.93ddde"]]},{"id":"26fa525e.93ddde","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":735.7143363952637,"y":426.63149070739746,"z":"349cd3c6.7ae4ac","wires":[["7ebe02e2.9471bc"]]},{"id":"60344065.a233","type":"set","name":"set: eipam-ip-block.plans[]++","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plans_length\" value=\"`$eipam-ip-block.plans_length + 1`\" />","comments":"","x":1825.1878242492676,"y":795.4603271484375,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"45e81867.eab068","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":998.7142639160156,"y":1657.7362461090088,"z":"349cd3c6.7ae4ac","wires":[["514e1ae1.e90694"]]},{"id":"514e1ae1.e90694","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while creating pool in EIPAM.\" />\n\t","comments":"","x":1162.7142944335938,"y":1660.736276626587,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"7e88c71a.3c9f78","type":"set","name":"set: data initialization","xml":"<set>\n\t<parameter name=\"tmp.eipam-error\" value=\"false\" />\n\t<parameter name=\"tmp.create-v4-pool-flag\" value=\"N\" />\n\t<parameter name=\"tmp.create-v6-pool-flag\" value=\"N\" />\n\t<parameter name='eipam-ip-block.plans_length' value='0' />\n\t<parameter name=\"eipam-pool.v4.pre-existing\" value=\"N\"/>\n\t<parameter name=\"eipam-pool.v6.pre-existing\" value=\"N\"/>\n\t<parameter name=\"level\" value=\"`$eipam-ip-block.level - 1`\" />","comments":"","x":362.7434768676758,"y":176.6623296737671,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"d6eff478.7ae598","type":"switchNode","name":"switch: network-model.use-ipv6","xml":"<switch test=\"`$network-model.use-ipv6`\">","comments":"","outputs":1,"x":347.39631271362305,"y":1004.3200531005859,"z":"349cd3c6.7ae4ac","wires":[["7deae29a.1a055c","2374789e.b074e8","8b66ef6.ad3381"]]},{"id":"2374789e.b074e8","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":618.3963432312012,"y":1048.320053100586,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"7deae29a.1a055c","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":623.3964500427246,"y":1003.3200531005859,"z":"349cd3c6.7ae4ac","wires":[["b663fc8f.61603"]]},{"id":"b663fc8f.61603","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":779.9678726196289,"y":1001.1771831512451,"z":"349cd3c6.7ae4ac","wires":[["8245ad31.919cc"]]},{"id":"f4309371.e6295","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":583.7143363952637,"y":509.57142448425293,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"8b66ef6.ad3381","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":620.2857475280762,"y":1089.714340209961,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"7ebe02e2.9471bc","type":"get-resource","name":"DB - validate if pool exists for level already","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $v4FQPN-output.pools[$level].key-value ;\"\n        pfx='tmp.eipam-pool-row'>\n\n","comments":"","outputs":1,"x":1010.3623199462891,"y":348.10715198516846,"z":"349cd3c6.7ae4ac","wires":[["d99065ab.323ec8","eee028af.a5deb8","1c016b1c.b5d1e5"]]},{"id":"6b13034.09e54fc","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_POOLS failed.\" />\n\t","comments":"","x":1414.5408020019531,"y":342.5714454650879,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"d99065ab.323ec8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1267.790885925293,"y":380.5714454650879,"z":"349cd3c6.7ae4ac","wires":[["2e3df561.44defa"]]},{"id":"c074e0c3.e9003","type":"switchNode","name":"test: eipam-ip-block.level","xml":"<switch test=\"`$l-idx`\">","comments":"","outputs":1,"x":1026.399745941162,"y":443.8215026855469,"z":"349cd3c6.7ae4ac","wires":[["d683f90d.bc3ea8","c3fe815f.6da18","267f5e4a.4aee02"]]},{"id":"d683f90d.bc3ea8","type":"other","name":"level 1","xml":"<outcome value='1'>","comments":"","outputs":1,"x":1054.586441040039,"y":513.7500696182251,"z":"349cd3c6.7ae4ac","wires":[["749d6519.db75ac"]]},{"id":"c3fe815f.6da18","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1057.1578521728516,"y":615.6071872711182,"z":"349cd3c6.7ae4ac","wires":[["162c89d9.7a2f86"]]},{"id":"162c89d9.7a2f86","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Please set the eipam-ip-block.level for appropriate EIPAM request.\" />\n\t","comments":"","x":1184.4077491760254,"y":614.6072125434875,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"e937da96.450648","type":"switchNode","name":"switch: network-model.use-ipv4","xml":"<switch test=\"`$network-model.use-ipv4`\">","comments":"","outputs":1,"x":306.71414947509766,"y":2024.4723377227783,"z":"349cd3c6.7ae4ac","wires":[["79314023.487a9","4cb8a60e.a2c188","b4fe1b28.500a58"]]},{"id":"4cb8a60e.a2c188","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":497.7142105102539,"y":2044.9723205566406,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"79314023.487a9","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":495.46424102783203,"y":2004.9724445343018,"z":"349cd3c6.7ae4ac","wires":[["4342f9af.5328e8"]]},{"id":"9cd666e7.72ced8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1054.2856712341309,"y":1894.0438032150269,"z":"349cd3c6.7ae4ac","wires":[["11ba19d5.d9c756","148249f9.846256","67dc159b.560f4c","d77f382b.bfda98","b9aa3822.9ae098"]]},{"id":"b4fe1b28.500a58","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":501.3536148071289,"y":2090.366728782654,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"11ba19d5.d9c756","type":"switchNode","name":"switch: eipam-ip-block.level","xml":"<switch test=\"`$eipam-ip-block.level`\">","comments":"","outputs":1,"x":1249.9999237060547,"y":1915.4725914001465,"z":"349cd3c6.7ae4ac","wires":[["4da585da.42efcc","ee30d95a.ab8b18"]]},{"id":"4da585da.42efcc","type":"other","name":"1","xml":"<outcome value='1'>","comments":"","outputs":1,"x":1433.6030578613281,"y":1867.544111251831,"z":"349cd3c6.7ae4ac","wires":[["87c2ca4a.4911b8"]]},{"id":"ee30d95a.ab8b18","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1430.9960632324219,"y":1931.7941188812256,"z":"349cd3c6.7ae4ac","wires":[["9f65900e.a4ec6"]]},{"id":"b76edc1c.d7929","type":"save","name":"insert EIPAM_IP_POOLS for V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_POOLS\n             SET\n             key_name = $key-name ,\n             key_value = $key-value ,\n             level = $eipam-ip-block.level ,\n             plan_name = $network-model.eipam-v4-address-plan ,\n             address_family = $network-model.ipv4-ip-version ,\n             parent_pool = $parent_pool ,\n             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,\n             network_id = $tmp.network-id ,\n             network_instance_group_id = $tmp.network-instance-group-id ; \"\n    force='true'\n        pfx='pfx.eipam-v4pool-row'>\n","comments":"","outputs":1,"x":1668.2366638183594,"y":1993.8939743041992,"z":"349cd3c6.7ae4ac","wires":[["5ee60164.3bc0a"]]},{"id":"5fcb4629.8fc1a8","type":"switchNode","name":"switch: network-model.use-ipv6","xml":"<switch test=\"`$network-model.use-ipv6`\">","comments":"","outputs":1,"x":295.90048599243164,"y":2334.9010162353516,"z":"349cd3c6.7ae4ac","wires":[["eb3c98eb.650608","74db2aa6.3483b4","f4b6e870.76a488"]]},{"id":"74db2aa6.3483b4","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":491.9005470275879,"y":2367.9010162353516,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"eb3c98eb.650608","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":490.900577545166,"y":2332.9010009765625,"z":"349cd3c6.7ae4ac","wires":[["515f275f.47d888"]]},{"id":"a9455b72.3c8be8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1095.9361877441406,"y":2344.4011573791504,"z":"349cd3c6.7ae4ac","wires":[["b569280.fe633d8","5d7e9df0.a4b464","a8eaf985.0af738","8aaeaea5.5564","6dead66c.9a7628"]]},{"id":"f4b6e870.76a488","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":491.7899513244629,"y":2398.2953033447266,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"b569280.fe633d8","type":"switchNode","name":"switch: eipam-ip-block.level","xml":"<switch test=\"`$eipam-ip-block.level`\">","comments":"","outputs":1,"x":1311.6146812438965,"y":2335.1869230270386,"z":"349cd3c6.7ae4ac","wires":[["7763293e.d8afb8","57135bde.54d0f4"]]},{"id":"7763293e.d8afb8","type":"other","name":"1","xml":"<outcome value='1'>","comments":"","outputs":1,"x":1502.8248672485352,"y":2312.7581419944763,"z":"349cd3c6.7ae4ac","wires":[["33c3acd0.2d0594"]]},{"id":"57135bde.54d0f4","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1499.110610961914,"y":2354.900963783264,"z":"349cd3c6.7ae4ac","wires":[["90e8ec58.75872"]]},{"id":"c9a24ebf.0b46c","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 EIPAM_IP_POOLS .' />\n","comments":"","x":2427.1304244995117,"y":2001.458854675293,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"9ad840a2.e8024","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":1966.3796501159668,"y":2465.34432220459,"z":"349cd3c6.7ae4ac","wires":[["c9a24ebf.0b46c"]]},{"id":"5ee60164.3bc0a","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":1908.3797798156738,"y":1999.772689819336,"z":"349cd3c6.7ae4ac","wires":[["c9a24ebf.0b46c"]]},{"id":"eee028af.a5deb8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1266.6526718139648,"y":344.5714454650879,"z":"349cd3c6.7ae4ac","wires":[["6b13034.09e54fc"]]},{"id":"1c016b1c.b5d1e5","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1267.295555114746,"y":417.8571844100952,"z":"349cd3c6.7ae4ac","wires":[["c074e0c3.e9003"]]},{"id":"c95edad7.418dc8","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />\n","comments":"","x":234.4741554260254,"y":2420.5018463134766,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"3b05b3c5.afdfac","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1002.0355529785156,"y":1608.4868717193604,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"89b951c4.efe42","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-create-generic-pool\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$v4FQPN-output.pools[$eipam-ip-block.level - 1].key-value`\"/>\n<parameter name=\"field6\" value=\"Level already exists, SKIP.\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.level`\"/>\n<parameter name=\"field8\" value=\"`$tmp.eipam-pool-row.pool-id`\"/>\n","comments":"","outputs":1,"x":1582.7397842407227,"y":375.5714454650879,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"267f5e4a.4aee02","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1051.8256721496582,"y":657.5000505447388,"z":"349cd3c6.7ae4ac","wires":[["1967a14e.6f32ef"]]},{"id":"c0e8aebf.eced3","type":"switchNode","name":"test:eipam-pool.v4.pre-existing","xml":"<switch test=\"`$eipam-pool.v4.pre-existing`\">","comments":"","outputs":1,"x":810.2509269714355,"y":2010.1727600097656,"z":"349cd3c6.7ae4ac","wires":[["d32b5a06.7f43f8","693b4d5b.834e94"]]},{"id":"4342f9af.5328e8","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":616.2509269714355,"y":2013.4228820800781,"z":"349cd3c6.7ae4ac","wires":[["c0e8aebf.eced3"]]},{"id":"515f275f.47d888","type":"block","name":"block ","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":611.6438751220703,"y":2334.3515272140503,"z":"349cd3c6.7ae4ac","wires":[["1fefac22.b6c6f4"]]},{"id":"1fefac22.b6c6f4","type":"switchNode","name":"test: eipam-pool.v6.pre-existing","xml":"<switch test=\"`$eipam-pool.v6.pre-existing`\">","comments":"","outputs":1,"x":813.5010414123535,"y":2333.3514556884766,"z":"349cd3c6.7ae4ac","wires":[["a4d411ea.2edae","f5ce7b34.bcca48"]]},{"id":"d32b5a06.7f43f8","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1031.3610191345215,"y":2055.3943481445312,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"693b4d5b.834e94","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":1035.289463043213,"y":1845.6444931030273,"z":"349cd3c6.7ae4ac","wires":[["9cd666e7.72ced8"]]},{"id":"a4d411ea.2edae","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1066.4322242736816,"y":2454.2872982025146,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"f5ce7b34.bcca48","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":1090.2179489135742,"y":2288.715941429138,"z":"349cd3c6.7ae4ac","wires":[["a9455b72.3c8be8"]]},{"id":"9b4b3a87.ce0398","type":"switchNode","name":"switch: tmp.create-v4-pool-flag","xml":"<switch test=\"`$tmp.create-v4-pool-flag`\">","comments":"","outputs":1,"x":309.80603790283203,"y":1623.3585796356201,"z":"349cd3c6.7ae4ac","wires":[["79659e31.be535","bba0e210.057fc"]]},{"id":"79659e31.be535","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":519.0917472839355,"y":1623.9300775527954,"z":"349cd3c6.7ae4ac","wires":[["629efca9.657ab4"]]},{"id":"ef22703a.ce7a1","type":"switchNode","name":"switch: tmp.create-v6-pool-flag","xml":"<switch test=\"`$tmp.create-v6-pool-flag`\">","comments":"","outputs":1,"x":407.0202827453613,"y":1749.3227548599243,"z":"349cd3c6.7ae4ac","wires":[["fe3d8960.5d3ed8"]]},{"id":"fe3d8960.5d3ed8","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":618.4285621643066,"y":1751.0581455230713,"z":"349cd3c6.7ae4ac","wires":[["629efca9.657ab4"]]},{"id":"148249f9.846256","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-create-generic-pool\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$key-name`\"/>\n<parameter name=\"field6\" value=\"`$key-value`\"/>\n<parameter name=\"field7\" value=\"`$tmp.network_instance_group_id`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.level`\"/>\n<parameter name=\"field9\" value=\"`$network-model.network-role`\"/>\n<parameter name=\"field10\" value=\"`$tmp.network-id`\"/>\n<parameter name=\"field11\" value=\"Saving to EIPAM_IP_POOLS table.\"/>\n","comments":"","outputs":1,"x":1207.8330917358398,"y":1992.5449447631836,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"2e3df561.44defa","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1418.4905166625977,"y":380.5714454650879,"z":"349cd3c6.7ae4ac","wires":[["89b951c4.efe42","802a8043.cc9aa"]]},{"id":"802a8043.cc9aa","type":"set","name":"set eipam-pool.v4.pre-existing to Y","xml":"<set>\n\t<parameter name=\"eipam-pool.v4.pre-existing\" value=\"Y\"/>\n","comments":"","x":1651.4905014038086,"y":415.8214473724365,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"6d156273.b7a25c","type":"set","name":"set EIPAM plan info for createPool","xml":"<set>\n\t<parameter name=\"network-topology-identifier-structure.eipam-v4-address-plan\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length\" value=\"1\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag\" value=\"`$tmp.allocate-subnet-flag`\"/>\t\n\t<!-- Number of Pool Levels -->\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length\" value=\"`$eipam-ip-block.level`\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1847.6786270141602,"y":614.2857093811035,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"99a858ec.71d5a8","type":"comment","name":"Required INPUTS","info":"Pre-requisites: \n\tThe levels are called in sequence starting at level 1,2,...\n\tso that the previous levels are created already.\n\tWorking with current plan: eipam-ip-block.plans[$eipam-ip-block.plans_length]\n\t\nOptional INPUTS:\n\ttmp.qip-pool - for level 1 if needed\n\ttmp.allocate-subnet-flag - set to if EIPAM should allocate subnet automatically or N (Default to Y)\t\n\ttmp.network-instance-group-id\n\t\nrequired INPUTS:\n\n\tnetwork-model - for Tosca model\n\ttmp.skip-first-level - set to Y if already created in EIPAM\n\teipam-ip-block.level - the level for createPool\n\ttmp.network-id\n\nSet the necessary values as inputs for the key_values \nfor 1 to current level as needed for EIPAM operations:\n\nv4FQPN-output.pools[].key-name\nv4FQPN-output.pools[].key-value\nv6FQPN-output.pools[].key-name\nv6FQPN-output.pools[].key-value\n\n(ie - Calling DG should set v[4|6]FQPN-output = generate-FQPN-output)\n\n\n","comments":"","x":650.0000076293945,"y":88.75000190734863,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"cc4c7f39.1f5b3","type":"for","name":"for l4-idx: eipam-ip-block.level","xml":"<for index=\"l4-idx\" start=\"0\" end=\"`$eipam-ip-block.level`\">","comments":"","outputs":1,"x":1836.9643020629883,"y":712.6785888671875,"z":"349cd3c6.7ae4ac","wires":[["12ba335c.d69add"]]},{"id":"12ba335c.d69add","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2028.4127922058105,"y":709.9483642578125,"z":"349cd3c6.7ae4ac","wires":[["6f8e94f6.a5cbcc","b036d114.4c11"]]},{"id":"16f1102a.b3604","type":"set","name":"set create-v4-pool-flag to Y","xml":"<set>\n\t<parameter name=\"tmp.create-v4-pool-flag\" value=\"Y\" />","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1829.4642944335938,"y":652.6786365509033,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"39949545.ce2a6a","type":"switchNode","name":"switch: tmp.skip-first-level","xml":"<switch test=\"`$tmp.skip-first-level`\">","comments":"","outputs":1,"x":1373.0357818603516,"y":559.6428918838501,"z":"349cd3c6.7ae4ac","wires":[["12fbf51.44ff80b","fa9f3f47.e86f6","f9db9f93.178c"]]},{"id":"12fbf51.44ff80b","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":1529.3215255737305,"y":589.6071681976318,"z":"349cd3c6.7ae4ac","wires":[["1967a14e.6f32ef"]]},{"id":"1967a14e.6f32ef","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1638.571678161621,"y":653.1786603927612,"z":"349cd3c6.7ae4ac","wires":[["16f1102a.b3604","cc4c7f39.1f5b3","60344065.a233","6d156273.b7a25c"]]},{"id":"fa9f3f47.e86f6","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":1486.3930053710938,"y":626.1184854507446,"z":"349cd3c6.7ae4ac","wires":[["1967a14e.6f32ef"]]},{"id":"d0744c26.6d381","type":"switchNode","name":"test: tmp.allocate-subnet-flag","xml":"<switch test=\"`$tmp.allocate-subnet-flag`\">","comments":"","outputs":1,"x":393.75,"y":223.75,"z":"349cd3c6.7ae4ac","wires":[["79aa4ca5.9b2464","350961c1.54fbfe","aca7f525.668318"]]},{"id":"350961c1.54fbfe","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":607.0000686645508,"y":193.00003337860107,"z":"349cd3c6.7ae4ac","wires":[["40365c01.9fc214"]]},{"id":"79aa4ca5.9b2464","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":602.2501316070557,"y":239.00000381469727,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"40365c01.9fc214","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":758.7500610351562,"y":191.75000381469727,"z":"349cd3c6.7ae4ac","wires":[["9883bb21.fa3008"]]},{"id":"aca7f525.668318","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":606.7500610351562,"y":274.68993759155273,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"9883bb21.fa3008","type":"set","name":"set tmp.allocate-subnet-flag to Y","xml":"<set>\n\t<parameter name=\"tmp.allocate-subnet-flag\" value=\"Y\"/>\t\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":983.75,"y":193.75,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"749d6519.db75ac","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1182.857192993164,"y":514.2857837677002,"z":"349cd3c6.7ae4ac","wires":[["39949545.ce2a6a","2b778ea.2707c72"]]},{"id":"e579441a.7f47b8","type":"set","name":"set EIPAM parent pool","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool\" value=\"`$tmp.qip-pool`\"/>\n\t<parameter name=\"tmp.v4-qip-pool\" value=\"`$tmp.qip-pool`\" />","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1686.9643859863281,"y":511.07141876220703,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"2b778ea.2707c72","type":"switchNode","name":"test: tmp.qip-pool","xml":"<switch test=\"`$tmp.qip-pool`\">","comments":"","outputs":1,"x":1350.357177734375,"y":504.4642868041992,"z":"349cd3c6.7ae4ac","wires":[["4e871e70.f869b","a9ca5136.ec129"]]},{"id":"4e871e70.f869b","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1511.893211364746,"y":511.8571548461914,"z":"349cd3c6.7ae4ac","wires":[["e579441a.7f47b8"]]},{"id":"6f7e9759.3b93f8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-create-generic-pool\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value`\"/>\n<parameter name=\"field7\" value=\"`$l6-idx`\"/>\n","comments":"","outputs":1,"x":2278.2092895507812,"y":1451.4285888671875,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"5960258c.27786c","type":"set","name":"set EIPAM pool info at each Level","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name\" value=\"`$v6FQPN-output.pools[$l6-idx].key-name`\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value\" value=\"`$v6FQPN-output.pools[$l6-idx].key-value`\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2353.0213108062744,"y":1406.9743022918701,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"8ef01746.1df9e8","type":"set","name":"set: eipam-ip-block.plans[]++","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plans_length\" value=\"`$eipam-ip-block.plans_length + 1`\" />","comments":"","x":1927.280174255371,"y":1468.0415649414062,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"8245ad31.919cc","type":"get-resource","name":"DB - validate if pool exists for level already","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $v6FQPN-output.pools[$level].key-value ;\"\n        pfx='tmp.eipam-pool-row'>\n\n","comments":"","outputs":1,"x":1051.0260543823242,"y":1042.1170129776,"z":"349cd3c6.7ae4ac","wires":[["a035950c.4940f8","6572ecde.eb0774","d68a80a0.6237a"]]},{"id":"99ab26ae.ab8458","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_POOLS failed.\" />\n\t","comments":"","x":1518.0616607666016,"y":1052.295566558838,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"a035950c.4940f8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1371.3117446899414,"y":1090.295566558838,"z":"349cd3c6.7ae4ac","wires":[["43a92726.c8e168"]]},{"id":"b17f7caf.12201","type":"switchNode","name":"test: eipam-ip-block.level","xml":"<switch test=\"`$l-idx`\">","comments":"","outputs":1,"x":969.2856597900391,"y":1220.6885433197021,"z":"349cd3c6.7ae4ac","wires":[["6279ea9f.3b4084","c8dd7ca.3d7fd8","6e576d4d.d27f54"]]},{"id":"6279ea9f.3b4084","type":"other","name":"level 1","xml":"<outcome value='1'>","comments":"","outputs":1,"x":1158.1072998046875,"y":1223.474190711975,"z":"349cd3c6.7ae4ac","wires":[["273ff0a5.5e023"]]},{"id":"c8dd7ca.3d7fd8","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1160.6787109375,"y":1325.3313083648682,"z":"349cd3c6.7ae4ac","wires":[["df65eb6a.a8e218"]]},{"id":"df65eb6a.a8e218","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Please set the eipam-ip-block.level for appropriate EIPAM request.\" />\n\t","comments":"","x":1287.9286079406738,"y":1324.3313336372375,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"6572ecde.eb0774","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1370.1735305786133,"y":1054.295566558838,"z":"349cd3c6.7ae4ac","wires":[["99ab26ae.ab8458"]]},{"id":"d68a80a0.6237a","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1370.8164138793945,"y":1127.5813055038452,"z":"349cd3c6.7ae4ac","wires":[["b17f7caf.12201"]]},{"id":"b25437a6.8dc228","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-create-generic-pool\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v6-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$v6FQPN-output.pools[$eipam-ip-block.level - 1].key-value`\"/>\n<parameter name=\"field6\" value=\"Level already exists, SKIP.\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.level`\"/>\n<parameter name=\"field8\" value=\"`$tmp.eipam-pool-row.pool-id`\"/>\n","comments":"","outputs":1,"x":1686.260643005371,"y":1085.295566558838,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"6e576d4d.d27f54","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1155.3465309143066,"y":1367.2241716384888,"z":"349cd3c6.7ae4ac","wires":[["d64c9608.18e318"]]},{"id":"43a92726.c8e168","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1522.011375427246,"y":1090.295566558838,"z":"349cd3c6.7ae4ac","wires":[["b25437a6.8dc228","27947b52.6e6eb4"]]},{"id":"27947b52.6e6eb4","type":"set","name":"set eipam-pool.v6.pre-existing to Y","xml":"<set>\n\t<parameter name=\"eipam-pool.v6.pre-existing\" value=\"Y\"/>\n","comments":"","x":1755.011360168457,"y":1125.5455684661865,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"ecaefc12.01692","type":"set","name":"set EIPAM v6 plan info for createPool","xml":"<set>\n\t<parameter name=\"network-topology-identifier-structure.eipam-v6-address-plan\" value=\"`$network-model.eipam-v6-address-plan`\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name\" value=\"`$network-model.eipam-v6-address-plan`\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length\" value=\"1\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag\" value=\"`$tmp.allocate-subnet-flag`\"/>\t\n\t<!-- Number of Pool Levels -->\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length\" value=\"`$eipam-ip-block.level`\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1969.7708435058594,"y":1319.7241830825806,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"ca1ca600.0912e8","type":"for","name":"for l6-idx: eipam-ip-block.level","xml":"<for index=\"l6-idx\" start=\"0\" end=\"`$eipam-ip-block.level`\">","comments":"","outputs":1,"x":1940.4851608276367,"y":1422.4027099609375,"z":"349cd3c6.7ae4ac","wires":[["44d24717.ee3398"]]},{"id":"44d24717.ee3398","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2131.933650970459,"y":1419.6724853515625,"z":"349cd3c6.7ae4ac","wires":[["5960258c.27786c","6f7e9759.3b93f8"]]},{"id":"d8e2213f.4e9bf","type":"set","name":"set create-v6-pool-flag to Y","xml":"<set>\n\t<parameter name=\"tmp.create-v6-pool-flag\" value=\"Y\" />","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1932.9851531982422,"y":1362.4027576446533,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"2fe5d369.146c8c","type":"switchNode","name":"switch: tmp.skip-first-level","xml":"<switch test=\"`$tmp.skip-first-level`\">","comments":"","outputs":1,"x":1476.556640625,"y":1269.3670129776,"z":"349cd3c6.7ae4ac","wires":[["3c832833.fedcd8","924a97ca.3aa518","ea85d22d.b1c9"]]},{"id":"3c832833.fedcd8","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":1628.5567169189453,"y":1303.6169919967651,"z":"349cd3c6.7ae4ac","wires":[["d64c9608.18e318"]]},{"id":"d64c9608.18e318","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1742.0925369262695,"y":1362.9027814865112,"z":"349cd3c6.7ae4ac","wires":[["d8e2213f.4e9bf","ca1ca600.0912e8","8ef01746.1df9e8","ecaefc12.01692"]]},{"id":"924a97ca.3aa518","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":1589.913948059082,"y":1340.128291130066,"z":"349cd3c6.7ae4ac","wires":[["d64c9608.18e318"]]},{"id":"273ff0a5.5e023","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1286.3780517578125,"y":1224.0099048614502,"z":"349cd3c6.7ae4ac","wires":[["2fe5d369.146c8c","aa66ddb2.84543"]]},{"id":"f9459ac1.0b5ea8","type":"set","name":"set EIPAM parent pool","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool\" value=\"`$tmp.qip-pool`\"/>\n\t<parameter name=\"tmp.v6-qip-pool\" value=\"`$tmp.qip-pool`\" />","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1790.4852447509766,"y":1220.795539855957,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"aa66ddb2.84543","type":"switchNode","name":"test: tmp.qip-pool","xml":"<switch test=\"`$tmp.qip-pool`\">","comments":"","outputs":1,"x":1453.8780364990234,"y":1214.1884078979492,"z":"349cd3c6.7ae4ac","wires":[["5237408e.f3ce4","8ead477f.65c058"]]},{"id":"ea85d22d.b1c9","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1676.8426780700684,"y":1268.7241878509521,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"5d7e9df0.a4b464","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-create-network-role-pool\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v6-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$v6FQPN-output.pools[$level].key-name`\"/>\n<parameter name=\"field6\" value=\"`$v6FQPN-output.pools[$level].key-value`\"/>\n<parameter name=\"field7\" value=\"`$tmp.network_instance_group_id`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.level`\"/>\n<parameter name=\"field9\" value=\"`$network-model.network-role`\"/>\n<parameter name=\"field10\" value=\"`$tmp.network-id`\"/>\n<parameter name=\"field11\" value=\"Saving to EIPAM_IP_POOLS table.\"/>\n","comments":"","outputs":1,"x":1258.214454650879,"y":2434.642780303955,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"a9ca5136.ec129","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":1511.4285888671875,"y":471.4285888671875,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"f9db9f93.178c","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1564.2857666015625,"y":555.7142944335938,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"8ead477f.65c058","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1611.4285278320312,"y":1225.7143173217773,"z":"349cd3c6.7ae4ac","wires":[["f9459ac1.0b5ea8"]]},{"id":"5237408e.f3ce4","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":1612.3925857543945,"y":1189.5714778900146,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"bba0e210.057fc","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":504.2857131958008,"y":1675.7144141197205,"z":"349cd3c6.7ae4ac","wires":[["ef22703a.ce7a1"]]},{"id":"69e98e43.ccaf","type":"set","name":"set: parent_pool","xml":"<set>\n\t<parameter name=\"parent_pool\" value=\"`$tmp.v4-qip-pool`\" />\n\t<parameter name=\"level\" value=\"`$eipam-ip-block.level - 1`\" />\n","comments":"","x":1718.5716094970703,"y":1860.7147188186646,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"8a435f40.685a8","type":"set","name":"set: parent_pool","xml":"<set>\n\t<parameter name=\"parent_pool\" value=\"`$v4FQPN-output.pools[$eipam-ip-block.level - 2].key-value`\" />\n\t\t<parameter name=\"level\" value=\"`$eipam-ip-block.level - 1`\" />\t","comments":"","x":1721.5279693603516,"y":1932.8572692871094,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"67dc159b.560f4c","type":"switchNode","name":"test: subnet-use","xml":"<switch test=\"`$network-instance-group-data.subnet-assignment-policy.subnet-use`\">","comments":"","outputs":1,"x":1228.0356979370117,"y":2046.6071891784668,"z":"349cd3c6.7ae4ac","wires":[["8e2c4f29.bc129","69384818.7951d8","2232c618.935bda"]]},{"id":"8e2c4f29.bc129","type":"other","name":"shared","xml":"<outcome value='shared'>","comments":"","outputs":1,"x":1428.5715084075928,"y":1992.8571434020996,"z":"349cd3c6.7ae4ac","wires":[["b76edc1c.d7929"]]},{"id":"fcf7941a.f817c8","type":"save","name":"insert EIPAM_IP_POOLS for V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_POOLS\n             SET\n             key_name = $key-name ,\n             key_value = $key-value ,\n             level = $eipam-ip-block.level ,\n             plan_name = $network-model.eipam-v4-address-plan ,\n             address_family = $network-model.ipv4-ip-version ,\n             parent_pool = $parent_pool ,\n             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,\n             network_id = $tmp.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-v4pool-row'>\n","comments":"","outputs":1,"x":1671.4285736083984,"y":2041.428379058838,"z":"349cd3c6.7ae4ac","wires":[["5ee60164.3bc0a"]]},{"id":"69384818.7951d8","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1428.5714111328125,"y":2037.1429443359375,"z":"349cd3c6.7ae4ac","wires":[["fcf7941a.f817c8"]]},{"id":"a8eaf985.0af738","type":"switchNode","name":"test: subnet-use","xml":"<switch test=\"`$network-instance-group-data.subnet-assignment-policy.subnet-use`\">","comments":"","outputs":1,"x":1281.7859420776367,"y":2490.7143983840942,"z":"349cd3c6.7ae4ac","wires":[["c28f894c.7c5c68","11fb77d9.c1dd48","7284f4.36a8db0c"]]},{"id":"45c1f421.d35afc","type":"save","name":"insert EIPAM_IP_POOLS for other level V6","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_POOLS\n             SET\n             key_name = $v6FQPN-output.pools[$level].key-name ,\n             key_value = $v6FQPN-output.pools[$level].key-value ,\n             level = $eipam-ip-block.level ,\n             plan_name = $network-model.eipam-v6-address-plan ,\n             address_family = $network-model.ipv6-ip-version ,\n             parent_pool = $parent_pool ,\n             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,\n             network_id = $tmp.network-id ,\n             network_instance_group_id = $tmp.network-instance-group-id ; \"\n    force='true'\n        pfx='pfx.eipam-v6pool-row'>\n","comments":"","outputs":1,"x":1708.571548461914,"y":2435.7147178649902,"z":"349cd3c6.7ae4ac","wires":[["9ad840a2.e8024"]]},{"id":"c28f894c.7c5c68","type":"other","name":"shared","xml":"<outcome value='shared'>","comments":"","outputs":1,"x":1460.0000610351562,"y":2437.1430492401123,"z":"349cd3c6.7ae4ac","wires":[["45c1f421.d35afc"]]},{"id":"11fb77d9.c1dd48","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1459.999963760376,"y":2481.42885017395,"z":"349cd3c6.7ae4ac","wires":[["d035f4fd.cdd6f8"]]},{"id":"d035f4fd.cdd6f8","type":"save","name":"insert EIPAM_IP_POOLS for other level V6","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_POOLS\n             SET\n             key_name = $v6FQPN-output.pools[$level].key-name ,\n             key_value = $v6FQPN-output.pools[$level].key-value ,\n             level = $eipam-ip-block.level ,\n             plan_name = $network-model.eipam-v6-address-plan ,\n             address_family = $network-model.ipv6-ip-version ,\n             parent_pool = $parent_pool ,\n             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,\n             network_id = $tmp.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-v6pool-row'>\n","comments":"","outputs":1,"x":1702.8571166992188,"y":2480.0002269744873,"z":"349cd3c6.7ae4ac","wires":[["9ad840a2.e8024"]]},{"id":"33c3acd0.2d0594","type":"set","name":"set: parent_pool","xml":"<set>\n\t<parameter name=\"parent_pool\" value=\"`$tmp.v6-qip-pool`\" />\n\t<parameter name=\"level\" value=\"`$eipam-ip-block.level - 1`\" />","comments":"","x":1657.1428833007812,"y":2314.2858715057373,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"90e8ec58.75872","type":"set","name":"set: parent_pool","xml":"<set>\n\t<parameter name=\"parent_pool\" value=\"`$v6FQPN-output.pools[$eipam-ip-block.level - 2].key-value`\" />\n\t<parameter name=\"level\" value=\"`$eipam-ip-block.level - 1`\" />","comments":"","x":1661.4285316467285,"y":2351.428692817688,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"2232c618.935bda","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1428.5714111328125,"y":2080,"z":"349cd3c6.7ae4ac","wires":[["fcf7941a.f817c8"]]},{"id":"7284f4.36a8db0c","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1462.8571166992188,"y":2527.1430492401123,"z":"349cd3c6.7ae4ac","wires":[["d035f4fd.cdd6f8"]]},{"id":"d77f382b.bfda98","type":"set","name":"set: key-name/key-value","xml":"<set>\n\t<parameter name=\"key-name\" value=\"`$v4FQPN-output.pools[$eipam-ip-block.level - 1].key-name`\" />\t\n\t<parameter name=\"key-value\" value=\"`$v4FQPN-output.pools[$eipam-ip-block.level - 1].key-value`\" />\t","comments":"","x":1254.035701751709,"y":1835.1905822753906,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"87c2ca4a.4911b8","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1564.1904888153076,"y":1865.7502603530884,"z":"349cd3c6.7ae4ac","wires":[["69e98e43.ccaf"]]},{"id":"9f65900e.a4ec6","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1562.583309173584,"y":1933.2499752044678,"z":"349cd3c6.7ae4ac","wires":[["8a435f40.685a8"]]},{"id":"8aaeaea5.5564","type":"set","name":"set: key-name/key-value","xml":"<set>\n\t<parameter name=\"key-name\" value=\"`$v6FQPN-output.pools[$eipam-ip-block.level - 1].key-name`\" />\t\n\t<parameter name=\"key-value\" value=\"`$v6FQPN-output.pools[$eipam-ip-block.level - 1].key-value`\" />\t","comments":"","x":1309.2742004394531,"y":2283.4284524917603,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"f6d96e24.6539e","type":"save","name":"insert EIPAM_IP_SUBNETS for V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNETS\n             SET\n             entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,\n             service_type = $tmp.service-type ,\n             ip_address = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IPAddress ,\n             prefix_length = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.Mask ,\n             plan_name = $network-model.eipam-v4-address-plan ,\n             status = 'ALLOCATED' ,\n             pool_id = $tmp.eipam-pool-row.pool-id ,\n             address_family = $network-model.ipv4-ip-version ,\n             network_id = $tmp.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-row'>\n","comments":"","outputs":1,"x":3160.4780883789062,"y":2205.870002746582,"z":"349cd3c6.7ae4ac","wires":[["e9053df.f0604c","6375c043.7adc4"]]},{"id":"cafa4b39.a1af78","type":"save","name":"insert EIPAM_IP_SUBNET_KEYS for V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNET_KEYS\n             SET\n             entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,\n             key_name = $key-name ,\n             key_value = $key-value ,\n             level = $eipam-ip-block.level ; \"\n    force='true'\n        pfx='pfx.eipam-v4subnet-key-row'>\n","comments":"","outputs":1,"x":3177.2042541503906,"y":2268.1323432922363,"z":"349cd3c6.7ae4ac","wires":[["6375c043.7adc4","2487c99c.f9fd46"]]},{"id":"97205152.6b6c3","type":"other","name":"true","xml":"<outcome value='true'>","comments":"","outputs":1,"x":1329.4885482788086,"y":2125.8693132400513,"z":"349cd3c6.7ae4ac","wires":[["8ed89f0a.ac09a"]]},{"id":"a5ab262c.107d28","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1705.968864440918,"y":2143.8970165252686,"z":"349cd3c6.7ae4ac","wires":[["5111f0a2.85eb1","4d28742f.b33f5c"]]},{"id":"b9aa3822.9ae098","type":"switchNode","name":"switch: leaf level","xml":"<switch test=\"`$eipam-ip-block.level == $eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`\">","comments":"","outputs":1,"x":1177.583309173584,"y":2128.4999117851257,"z":"349cd3c6.7ae4ac","wires":[["97205152.6b6c3"]]},{"id":"d0edbeb4.e9de1","type":"save","name":"insert EIPAM_IP_SUBNETS for V6","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNETS\n             SET\n             entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,\n             service_type = $tmp.service-type ,\n             ip_address = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IPAddress ,\n             prefix_length = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.Mask ,\n             plan_name = $network-model.eipam-v6-address-plan ,\n             status = 'ALLOCATED' ,\n             pool_id = $tmp.eipam-pool-row.pool-id ,\n             address_family = $network-model.ipv6-ip-version ,\n             network_id = $tmp.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-row'>\n","comments":"","outputs":1,"x":3173.416717529297,"y":2631.166714668274,"z":"349cd3c6.7ae4ac","wires":[["56144445.a583bc","be66d1a6.069a6"]]},{"id":"2446c5b3.dabaca","type":"save","name":"insert EIPAM_IP_SUBNET_KEYS for V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNET_KEYS\n             SET\n             entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,\n             key_name = $key-name ,\n             key_value = $key-value ,\n             level = $eipam-ip-block.level ; \"\n    force='true'\n        pfx='pfx.eipam-v4subnet-key-row'>\n","comments":"","outputs":1,"x":3190.5595474243164,"y":2672.595308303833,"z":"349cd3c6.7ae4ac","wires":[["941f0eab.7d1d5","be66d1a6.069a6"]]},{"id":"65c9e356.4fdc0c","type":"other","name":"true","xml":"<outcome value='true'>","comments":"","outputs":1,"x":1338.6788482666016,"y":2584.9170866012573,"z":"349cd3c6.7ae4ac","wires":[["13e55d70.ced513"]]},{"id":"a98ff550.c4df58","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1707.6589889526367,"y":2597.9445333480835,"z":"349cd3c6.7ae4ac","wires":[["6f08cc60.c79504","63f21221.7db1cc"]]},{"id":"6dead66c.9a7628","type":"switchNode","name":"switch: leaf level","xml":"<switch test=\"`$eipam-ip-block.level == $eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`\">","comments":"","outputs":1,"x":1188.0235061645508,"y":2585.047540664673,"z":"349cd3c6.7ae4ac","wires":[["65c9e356.4fdc0c"]]},{"id":"5111f0a2.85eb1","type":"for","name":"for i: CreatePoolPlan_length","xml":"<for index=\"i\" start=\"0\" end=\"`$eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan_length`\">","comments":"","outputs":1,"x":1942.583351135254,"y":2097.666543006897,"z":"349cd3c6.7ae4ac","wires":[["65f04afd.675004"]]},{"id":"65f04afd.675004","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2135.2819442749023,"y":2097.436333656311,"z":"349cd3c6.7ae4ac","wires":[["2988e93c.4f05f6"]]},{"id":"2988e93c.4f05f6","type":"switchNode","name":"test: same plan ","xml":"<switch test=\"`$network-model.eipam-v4-address-plan == $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PlanName`\">","comments":"","outputs":1,"x":2315.0837059020996,"y":2095.749746322632,"z":"349cd3c6.7ae4ac","wires":[["8483e388.9e957"]]},{"id":"8483e388.9e957","type":"other","name":"true","xml":"<outcome value='true'>","comments":"","outputs":1,"x":2498.833251953125,"y":2096.999755859375,"z":"349cd3c6.7ae4ac","wires":[["50475eee.83591"]]},{"id":"7d1a8415.9aa22c","type":"returnSuccess","name":"CATCH BREAK","xml":"<return status='success'>","comments":"","x":3169.8330688476562,"y":2416.5836839675903,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"6f08cc60.c79504","type":"for","name":"for i: CreatePoolPlan_length","xml":"<for index=\"i\" start=\"0\" end=\"`$eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan_length`\">","comments":"","outputs":1,"x":1926.9165954589844,"y":2514.833553314209,"z":"349cd3c6.7ae4ac","wires":[["4e4c05cd.ebc9bc"]]},{"id":"4e4c05cd.ebc9bc","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2157.1150970458984,"y":2515.853042602539,"z":"349cd3c6.7ae4ac","wires":[["c96dbc73.d1499"]]},{"id":"c96dbc73.d1499","type":"switchNode","name":"test: same plan ","xml":"<switch test=\"`$network-model.eipam-v6-address-plan == $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PlanName`\">","comments":"","outputs":1,"x":2336.9168586730957,"y":2514.16645526886,"z":"349cd3c6.7ae4ac","wires":[["bd1e309b.c1fb3"]]},{"id":"bd1e309b.c1fb3","type":"other","name":"true","xml":"<outcome value='true'>","comments":"","outputs":1,"x":2520.666404724121,"y":2515.416464805603,"z":"349cd3c6.7ae4ac","wires":[["6469b539.0338cc"]]},{"id":"410f3ee.58550c","type":"returnFailure","name":"BREAK","xml":"<return status='failure'>\n","comments":"","x":3214.999988555908,"y":2455.4165897369385,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"e8f56ba7.3673b8","type":"break","name":"break","xml":"<break>\n","comments":"","x":2753.5843200683594,"y":2093.5837326049805,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"1951f009.0aa1a","type":"set","name":"set: index_found","xml":"<set>\n\t<parameter name=\"index_found\" value=\"true\" />\n\t\t","comments":"","x":2783.166534423828,"y":2056.166675567627,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"4d28742f.b33f5c","type":"switchNode","name":"switch: index_found","xml":"<switch test=\"`$index_found`\">","comments":"","outputs":1,"x":1936.91650390625,"y":2162.833251953125,"z":"349cd3c6.7ae4ac","wires":[["3c39e0a.1258f2","5088803d.d1b25","a544f528.31e728"]]},{"id":"45b355f2.ef833c","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2221.916633605957,"y":2162.8333778381348,"z":"349cd3c6.7ae4ac","wires":[["7ba44dde.a58364"]]},{"id":"3c39e0a.1258f2","type":"other","name":"true","xml":"<outcome value='true'>","comments":"","outputs":1,"x":2096.91650390625,"y":2161.583251953125,"z":"349cd3c6.7ae4ac","wires":[["45b355f2.ef833c"]]},{"id":"379eb126.caccae","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='failed to find plan name in CreatePoolResponse.' />\n","comments":"","x":2266.91650390625,"y":2265.333251953125,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"5088803d.d1b25","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":2100.66650390625,"y":2215.333251953125,"z":"349cd3c6.7ae4ac","wires":[["379eb126.caccae"]]},{"id":"a544f528.31e728","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2099.41650390625,"y":2265.333251953125,"z":"349cd3c6.7ae4ac","wires":[["379eb126.caccae"]]},{"id":"63f21221.7db1cc","type":"switchNode","name":"switch: index_found","xml":"<switch test=\"`$index_found`\">","comments":"","outputs":1,"x":1904.41650390625,"y":2596.083251953125,"z":"349cd3c6.7ae4ac","wires":[["a9b096ed.aa1bb8","dc89ff61.e00bc","c1e32151.92a79"]]},{"id":"963711ae.b1054","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2189.416633605957,"y":2596.0833778381348,"z":"349cd3c6.7ae4ac","wires":[["8ea994ce.0783e8"]]},{"id":"a9b096ed.aa1bb8","type":"other","name":"true","xml":"<outcome value='true'>","comments":"","outputs":1,"x":2064.41650390625,"y":2594.833251953125,"z":"349cd3c6.7ae4ac","wires":[["963711ae.b1054"]]},{"id":"b80008cb.7e7ed8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='failed to find plan name in CreatePoolResponse.' />\n","comments":"","x":2234.41650390625,"y":2698.583251953125,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"dc89ff61.e00bc","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":2068.16650390625,"y":2648.583251953125,"z":"349cd3c6.7ae4ac","wires":[["b80008cb.7e7ed8"]]},{"id":"c1e32151.92a79","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2066.91650390625,"y":2698.583251953125,"z":"349cd3c6.7ae4ac","wires":[["b80008cb.7e7ed8"]]},{"id":"28a4cc6b.177c34","type":"break","name":"break","xml":"<break>\n","comments":"","x":2754.4166107177734,"y":2554.833335876465,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"4cf4a1cd.5e6d3","type":"set","name":"set: index_found","xml":"<set>\n\t<parameter name=\"index_found\" value=\"true\" />\n\t\t","comments":"","x":2785.6662979125977,"y":2519.083209991455,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"50475eee.83591","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2628.6665573120117,"y":2093.583360671997,"z":"349cd3c6.7ae4ac","wires":[["1951f009.0aa1a","e8f56ba7.3673b8"]]},{"id":"6469b539.0338cc","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2638.6665573120117,"y":2519.9165382385254,"z":"349cd3c6.7ae4ac","wires":[["4cf4a1cd.5e6d3","28a4cc6b.177c34"]]},{"id":"7ba44dde.a58364","type":"get-resource","name":"DB - validate if pool exists for level already","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $v4FQPN-output.pools[$level].key-value ;\"\n        pfx='tmp.eipam-pool-row'>\n\n","comments":"","outputs":1,"x":2462.777862548828,"y":2160.3332233428955,"z":"349cd3c6.7ae4ac","wires":[["5780d366.3c2fdc","bddfe5de.08ae38","f3076ad8.20d1a8"]]},{"id":"84ec1768.fb34c8","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_POOLS failed.\" />\n\t","comments":"","x":2929.8134689331055,"y":2170.5117769241333,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"5780d366.3c2fdc","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2783.0635528564453,"y":2208.5117769241333,"z":"349cd3c6.7ae4ac","wires":[["d4ee2001.3b0fa"]]},{"id":"bddfe5de.08ae38","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2781.925338745117,"y":2172.5117769241333,"z":"349cd3c6.7ae4ac","wires":[["84ec1768.fb34c8"]]},{"id":"f3076ad8.20d1a8","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":2782.5682220458984,"y":2245.7975158691406,"z":"349cd3c6.7ae4ac","wires":[["84ec1768.fb34c8"]]},{"id":"d4ee2001.3b0fa","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2933.76318359375,"y":2208.5117769241333,"z":"349cd3c6.7ae4ac","wires":[["f6d96e24.6539e","cafa4b39.a1af78"]]},{"id":"8ea994ce.0783e8","type":"get-resource","name":"DB - validate if pool exists for level already","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $v6FQPN-output.pools[$level].key-value ;\"\n        pfx='tmp.eipam-pool-row'>\n\n","comments":"","outputs":1,"x":2422.555419921875,"y":2595.3330078125,"z":"349cd3c6.7ae4ac","wires":[["b0e89be8.34a638","753e30ac.c3387","71a03662.0cf688"]]},{"id":"4d827f56.0b774","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_POOLS failed.\" />\n\t","comments":"","x":2889.5910263061523,"y":2605.511561393738,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"b0e89be8.34a638","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2742.841110229492,"y":2643.511561393738,"z":"349cd3c6.7ae4ac","wires":[["1f4ce9be.57d4b6"]]},{"id":"753e30ac.c3387","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2741.702896118164,"y":2607.511561393738,"z":"349cd3c6.7ae4ac","wires":[["4d827f56.0b774"]]},{"id":"71a03662.0cf688","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":2742.3457794189453,"y":2680.797300338745,"z":"349cd3c6.7ae4ac","wires":[["4d827f56.0b774"]]},{"id":"1f4ce9be.57d4b6","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2893.540740966797,"y":2643.511561393738,"z":"349cd3c6.7ae4ac","wires":[["d0edbeb4.e9de1","2446c5b3.dabaca"]]},{"id":"61f684a6.11baac","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 EIPAM_IP_SUBNETS .' />\n","comments":"","x":3561.555679321289,"y":2199.7781715393066,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"6375c043.7adc4","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":3426.55558013916,"y":2244.777997970581,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"e9053df.f0604c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3422.084129333496,"y":2200.444318294525,"z":"349cd3c6.7ae4ac","wires":[["61f684a6.11baac"]]},{"id":"e2590f90.0c809","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 EIPAM_IP_SUBNET_KEYS .' />\n","comments":"","x":3566.55517578125,"y":2284.777587890625,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"2487c99c.f9fd46","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3427.083625793457,"y":2285.4437346458435,"z":"349cd3c6.7ae4ac","wires":[["e2590f90.0c809"]]},{"id":"40a9bbf6.a7ac64","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 EIPAM_IP_SUBNETS .' />\n","comments":"","x":3588.221923828125,"y":2604.999755859375,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"be66d1a6.069a6","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":3453.221824645996,"y":2649.9995822906494,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"56144445.a583bc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3448.750373840332,"y":2605.6659026145935,"z":"349cd3c6.7ae4ac","wires":[["40a9bbf6.a7ac64"]]},{"id":"c2355c4a.b14c4","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 EIPAM_IP_SUBNET_KEYS .' />\n","comments":"","x":3593.221420288086,"y":2689.9991722106934,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"941f0eab.7d1d5","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3457.083185195923,"y":2682.3322582244873,"z":"349cd3c6.7ae4ac","wires":[["c2355c4a.b14c4"]]},{"id":"a25e067a.946038","type":"comment","name":"For VLAN Tagging","info":"Network Collection\n\nIf leaf level also insert in EIPAM_IP_SUBNETS &\nEIPAM_IP_SUBNET_KEYS tables, since EIPAM automatically\nallocates subnet when createPool is called.\n(tmp.allocate-subnet-flag=Y)","comments":"","x":1247.4167404174805,"y":2655.416820526123,"z":"349cd3c6.7ae4ac","wires":[]},{"id":"219778d6.5df5d8","type":"switchNode","name":"switch: tmp.allocate-subnet-flag","xml":"<switch test=\"`$tmp.allocate-subnet-flag`\">","comments":"","outputs":1,"x":1559.8333053588867,"y":2657.9165592193604,"z":"349cd3c6.7ae4ac","wires":[["640e63f2.6e77ec","3fe72424.12ba8c"]]},{"id":"13e55d70.ced513","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1458.583417892456,"y":2585.4168252944946,"z":"349cd3c6.7ae4ac","wires":[["219778d6.5df5d8"]]},{"id":"640e63f2.6e77ec","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1764.833251953125,"y":2656.66650390625,"z":"349cd3c6.7ae4ac","wires":[["a98ff550.c4df58"]]},{"id":"3fe72424.12ba8c","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":1762.5273399353027,"y":2705.951202392578,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"b9da493c.a973c8","type":"switchNode","name":"switch: tmp.allocate-subnet-flag","xml":"<switch test=\"`$tmp.allocate-subnet-flag`\">","comments":"","outputs":1,"x":1417.9166259765625,"y":2187.083251953125,"z":"349cd3c6.7ae4ac","wires":[["b711d279.a11f5","cd54b658.f3a078"]]},{"id":"b711d279.a11f5","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1622.9165725708008,"y":2185.8331966400146,"z":"349cd3c6.7ae4ac","wires":[["a5ab262c.107d28"]]},{"id":"cd54b658.f3a078","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":1620.6106605529785,"y":2235.117895126343,"z":"349cd3c6.7ae4ac","wires":[[]]},{"id":"8ed89f0a.ac09a","type":"block","name":"block","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1462.9166259765625,"y":2123.333251953125,"z":"349cd3c6.7ae4ac","wires":[["b9da493c.a973c8"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_eipam-create-network-role-pool.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_eipam-create-network-role-pool.json
new file mode 100644
index 0000000..08374fa
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_eipam-create-network-role-pool.json
@@ -0,0 +1 @@
+[{"id":"b1e35553.e3bfd8","type":"dgstart","name":"DGSTART","outputs":1,"x":93.75,"y":21.25,"z":"671ce86d.8d2c68","wires":[["4a0e5a13.1693c4"]]},{"id":"4a0e5a13.1693c4","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":322.70002365112305,"y":25.99525547027588,"z":"671ce86d.8d2c68","wires":[["33da628b.7f09be"]]},{"id":"465b4154.68803","type":"comment","name":"ChangeLog","info":"1.0.1: Release 1702 - add logic for vIPR & SRIOV address plans\n1.0.2: Release 1702 - Req update to change level 1 & 2 key-name & key-values\n1.0.3: Release 1707 - Add CA to map to ATM-U US/CALA or ATM-P CALA for vIPR & SRIOV\n1.0.4: Release 1702/1707 - SRIOV V6 Data Plane QIP Pool names need to be unique per region due to Regional Registry.\n\t\t\t\t\t\t- Add CA to map to ATM-U US/CALA or ATM-P CALA for V4 vIPR & SRIOV\n1.0.5: Release 1707 - Add AIM V4 Landing Network\n5/10 - 1707 - updated pool key-names for AIC_AIM_LANDING_NETWORK_V4\n6/20 - 1710 - change any underscores _  to colon : for all level 1 and level 2 Pool KeyNames\n6/21 - 1710 - Task 403314 - QIP Parent pool consolidation\n\t\t\t- New V6 plans - \n\t\t\t\tAIC_ATM_UNPROTECTED_V6\n\t\t\t\tAIC_ATM_PROTECTED_V6\n\t\t\t\tAIC_AIM_LANDING_V6\n8/27 - 1710 - QIP parent pool fix:\n\t\t\tqip parent pool initial string is specifying 'AIC-ATM-P-V6 US' instead of 'ATM-P-V6 US'\n \t\tand \n \t\t\tqip parent pool initial string is specifying 'AIC-ATM-U-V6 US' instead of 'ATM-U-V6 US'\n10/16 - 1712 - fix QIP parent pool for AIC_DATA_PLANE_PRIVATE_V6 to\n\t\t\tAIC-DP-Private-V6 \n3/8/18 - 1806 - 506678 -Level 1 keyName CLLI:CLOUD_REGION changed to LOCATION_CLLI8:CLOUD_REGION_ID\n","comments":"","x":82.57898712158203,"y":69.00761580467224,"z":"671ce86d.8d2c68","wires":[]},{"id":"33da628b.7f09be","type":"method","name":"eipam-create-network-role-pool","xml":"<method rpc='eipam-create-network-role-pool' mode='sync'>\n","comments":"","outputs":1,"x":668.7986526489258,"y":24.934850692749023,"z":"671ce86d.8d2c68","wires":[["6fb67e52.127ee"]]},{"id":"72a866ff.265f18","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-create-network-role-pool\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value`\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value`\"/>\n","comments":"","outputs":1,"x":1055.7596435546875,"y":881.7043533325195,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"bfd64303.cba0d","type":"set","name":"set EIPAM plan info for createPool & Level 1 pool","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag\" value=\"N\"/>\t\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool\" value=\"`$tmp.qip-pool`\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length\" value=\"1\"/>\n\t<!-- Number of Pool Levels -->\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length\" value=\"1\"/>\n\n\t<!-- Level 1 -->\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name\" value=\"`$tmp.v4-level1-key-name`\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value\" value=\"`$tmp.level1-key-value`\"/>\n\t<parameter name=\"tmp.create-v4-pool-flag\" value=\"Y\" />\n\t<parameter name=\"tmp.v4-qip-pool\" value=\"`$tmp.qip-pool`\" />","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1165.7501525878906,"y":727.2500381469727,"z":"671ce86d.8d2c68","wires":[]},{"id":"8723628f.ec62d","type":"execute","name":"execute EIPAM createPool","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"createPool\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":786.7499618530273,"y":1843.3102111816406,"z":"671ce86d.8d2c68","wires":[["a2d2b13e.347da","fc4487d2.9973a8"]]},{"id":"6fb67e52.127ee","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":103.43618774414062,"y":160.31005859375,"z":"671ce86d.8d2c68","wires":[["73f190a8.da613","ea69d377.6b346","18428726.6668f9","2d645839.a9da98","9b0dcedf.993d8","cc79dafb.5a0f88","42e9f305.5ad03c","2b5dec5a.82a674"]]},{"id":"73f190a8.da613","type":"switchNode","name":"switch: network-model.use-ipv4","xml":"<switch test=\"`$network-model.use-ipv4`\">","comments":"","outputs":1,"x":368.7499885559082,"y":451.31005859375,"z":"671ce86d.8d2c68","wires":[["a2f0b15e.70ab1","c08fb879.735408","c4f350f4.e1192"]]},{"id":"c08fb879.735408","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":580.7500495910645,"y":464.31008529663086,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"a2f0b15e.70ab1","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":579.7501068115234,"y":420.31005859375,"z":"671ce86d.8d2c68","wires":[["cbecece7.a9df2"]]},{"id":"77b69955.433aa8","type":"set","name":"set EIPAM level 2 pool info for createPool","xml":"<set>\n\t<!-- Number of Pool Levels -->\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length\" value=\"`$eipam-ip-block.level`\"/>\n\n\t<!-- Level 2 -->\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool\" value=\"\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name\" value=\"`$tmp.v4-level2-key-name`\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value\" value=\"`$tmp.level2-key-value`\"/>","comments":"","x":1508.7502517700195,"y":855.3101110458374,"z":"671ce86d.8d2c68","wires":[]},{"id":"47c51d56.d814e4","type":"switchNode","name":"switch: eipam-ip-block.level","xml":"<switch test=\"`$eipam-ip-block.level`\">","comments":"","outputs":1,"x":1077.750114440918,"y":807.3100280761719,"z":"671ce86d.8d2c68","wires":[["98d6658a.f83818","7ebb0f77.f9ebc","f16219cb.07f268"]]},{"id":"98d6658a.f83818","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1277.7502136230469,"y":805.3100357055664,"z":"671ce86d.8d2c68","wires":[["a3017592.1814d8"]]},{"id":"7ebb0f77.f9ebc","type":"other","name":"2","xml":"<outcome value='2'>","comments":"","outputs":1,"x":1281.7502136230469,"y":856.3100357055664,"z":"671ce86d.8d2c68","wires":[["77b69955.433aa8"]]},{"id":"cbecece7.a9df2","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":733.7500495910645,"y":419.31006240844727,"z":"671ce86d.8d2c68","wires":[["2e9ec5c3.95bffa"]]},{"id":"55b8774.03fed88","type":"set","name":"set: eipam-ip-block.plans[]++","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plans_length\" value=\"`$eipam-ip-block.plans_length + 1`\" />","comments":"","x":1078.7591247558594,"y":925.4602432250977,"z":"671ce86d.8d2c68","wires":[]},{"id":"a2d2b13e.347da","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":996.7500076293945,"y":1844.7005767822266,"z":"671ce86d.8d2c68","wires":[["c233274b.46fdb8"]]},{"id":"c233274b.46fdb8","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while creating pool in EIPAM.\" />\n\t","comments":"","x":1160.7500381469727,"y":1847.7006072998047,"z":"671ce86d.8d2c68","wires":[]},{"id":"ea69d377.6b346","type":"set","name":"set: data initialization","xml":"<set>\n\t<parameter name=\"tmp.eipam-error\" value=\"false\" />\n\t<parameter name=\"tmp.create-v4-pool-flag\" value=\"N\" />\n\t<parameter name=\"tmp.create-v6-pool-flag\" value=\"N\" />\n\t<parameter name='eipam-ip-block.plans_length' value='0' />\n\t<parameter name=\"eipam-pool.v4.pre-existing\" value=\"false\"/>\n\t<parameter name=\"eipam-pool.v6.pre-existing\" value=\"false\"/>\n\t<parameter name=\"tmp.v4-level1-key-name\" value=\"LOCATION_CLLI8:CLOUD_REGION_ID\" />\n\t<parameter name=\"tmp.v4-level2-key-name\" value=\"NETWORK_ROLE:NETWORK_ID\" />\n\t<parameter name=\"tmp.v6-level1-key-name\" value=\"LOCATION_CLLI8:CLOUD_REGION_ID\" />\n\t<parameter name=\"tmp.v6-level2-key-name\" value=\"NETWORK_ROLE:NETWORK_ID\" />","comments":"","x":360.77919006347656,"y":169.3409013748169,"z":"671ce86d.8d2c68","wires":[]},{"id":"1370ae94.2ed421","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-create-network-role-pool\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value`\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value`\"/>\n","comments":"","outputs":1,"x":1147.8700790405273,"y":1704.2500305175781,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"c2349a89.e63848","type":"set","name":"set EIPAM plan info for createPool & Level 1 pool","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name\" value=\"`$network-model.eipam-v6-address-plan`\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag\" value=\"N\"/>\t\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool\" value=\"`$tmp.qip-pool`\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length\" value=\"1\"/>\n\t<!-- Number of Pool Levels -->\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length\" value=\"1\"/>\n\n\t<!-- Level 1 -->\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name\" value=\"`$tmp.v6-level1-key-name`\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value\" value=\"`$tmp.level1-key-value`\"/>\n\t<parameter name=\"tmp.create-v6-pool-flag\" value=\"Y\" />\n\t<parameter name=\"tmp.v6-qip-pool\" value=\"`$tmp.qip-pool`\" />","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1274.8608016967773,"y":1549.4953918457031,"z":"671ce86d.8d2c68","wires":[]},{"id":"18428726.6668f9","type":"switchNode","name":"switch: network-model.use-ipv6","xml":"<switch test=\"`$network-model.use-ipv6`\">","comments":"","outputs":1,"x":346.8605728149414,"y":1119.8557434082031,"z":"671ce86d.8d2c68","wires":[["cf170a45.39fbd8","8380962.b71d868","fb92f059.9bf3a"]]},{"id":"8380962.b71d868","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":617.8606033325195,"y":1163.8557434082031,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"cf170a45.39fbd8","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":622.860710144043,"y":1118.8557434082031,"z":"671ce86d.8d2c68","wires":[["a6ca91b1.cd8ec"]]},{"id":"470604f.1f1defc","type":"set","name":"set EIPAM level 2 pool info for createPool","xml":"<set>\n\t<!-- Number of Pool Levels -->\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length\" value=\"`$eipam-ip-block.level`\"/>\n\n\t<!-- Level 2 -->\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool\" value=\"\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name\" value=\"`$tmp.v6-level2-key-name`\"/>\n\t<parameter name=\"eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value\" value=\"`$tmp.level2-key-value`\"/>","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1612.8612670898438,"y":1681.5554504394531,"z":"671ce86d.8d2c68","wires":[]},{"id":"53aa667.0545c98","type":"switchNode","name":"switch: eipam-ip-block.level","xml":"<switch test=\"`$eipam-ip-block.level`\">","comments":"","outputs":1,"x":1199.86083984375,"y":1651.5554504394531,"z":"671ce86d.8d2c68","wires":[["dfd7d84f.278c48","a0dbb883.f07f38","5b58a917.a585a8"]]},{"id":"dfd7d84f.278c48","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1395.8609466552734,"y":1647.5554504394531,"z":"671ce86d.8d2c68","wires":[["111b2725.ddb219"]]},{"id":"a0dbb883.f07f38","type":"other","name":"2","xml":"<outcome value='2'>","comments":"","outputs":1,"x":1397.8609466552734,"y":1680.5554504394531,"z":"671ce86d.8d2c68","wires":[["470604f.1f1defc"]]},{"id":"a6ca91b1.cd8ec","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":770.8606491088867,"y":1123.8557434082031,"z":"671ce86d.8d2c68","wires":[["db7c500e.60761"]]},{"id":"f2ef27ec.8abfc8","type":"set","name":"set: eipam-ip-block.plans[]++","xml":"<set>\n\t<parameter name=\"eipam-ip-block.plans_length\" value=\"`$eipam-ip-block.plans_length + 1`\" />","comments":"","x":1204.8698501586914,"y":1753.7057189941406,"z":"671ce86d.8d2c68","wires":[]},{"id":"c4f350f4.e1192","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":581.7500495910645,"y":502.24999618530273,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"fb92f059.9bf3a","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":619.7500076293945,"y":1205.2500305175781,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"c61ef2de.7d164","type":"switchNode","name":"switch: network-model.eipam-v4-address-plan","xml":"<switch test=\"`$network-model.eipam-v4-address-plan`\">","comments":"","outputs":1,"x":1194.3028869628906,"y":477.25001525878906,"z":"671ce86d.8d2c68","wires":[["67b8e0ba.8ece2","41a91841.64b578","1ba1294a.c4b277","5d54f7b2.33c818","a6c98492.4bd7b8","4492594e.6f6158","f266991e.4d8b98"]]},{"id":"67b8e0ba.8ece2","type":"other","name":"AIC_ATM_UNPROTECTED_V4","xml":"<outcome value=\"AIC_ATM_UNPROTECTED_V4\">","comments":"","outputs":1,"x":1578.3027648925781,"y":339.25,"z":"671ce86d.8d2c68","wires":[["a2f5b410.adfb98"]]},{"id":"4492594e.6f6158","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1447.3025245666504,"y":770.2499532699585,"z":"671ce86d.8d2c68","wires":[["a17b1de9.fbd48"]]},{"id":"41a91841.64b578","type":"other","name":"AIC_ATM_PROTECTED_V4","xml":"<outcome value=\"AIC_ATM_PROTECTED_V4\">","comments":"","outputs":1,"x":1573.3025817871094,"y":597.2500152587891,"z":"671ce86d.8d2c68","wires":[["6f8af5f.5ba2b0c"]]},{"id":"fbb6f7fb.eb9e68","type":"set","name":"set ATM-U US/CALA","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"ATM-U US/CALA\"/>\n","comments":"","x":2768.0527954101562,"y":331.50000381469727,"z":"671ce86d.8d2c68","wires":[]},{"id":"6f8af5f.5ba2b0c","type":"set","name":"set EIPAM ATM-P...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'ATM-P ' + $tmp.region`\"/>\n","comments":"","x":1803.1680908203125,"y":597.5000095367432,"z":"671ce86d.8d2c68","wires":[]},{"id":"97b65909.e41af8","type":"set","name":"set EIPAM DP-U...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'DP-U ' + $tmp.region`\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1882.9183387756348,"y":404.50000762939453,"z":"671ce86d.8d2c68","wires":[]},{"id":"1ba1294a.c4b277","type":"other","name":"AIC_DATA_PLANE_UNPROTECTED_V4","xml":"<outcome value=\"AIC_DATA_PLANE_UNPROTECTED_V4\">","comments":"","outputs":1,"x":1611.9183044433594,"y":403.25001525878906,"z":"671ce86d.8d2c68","wires":[["97b65909.e41af8"]]},{"id":"5d54f7b2.33c818","type":"other","name":"AIC_DATA_PLANE_PROTECTED_V4","xml":"<outcome value=\"AIC_DATA_PLANE_PROTECTED_V4\">","comments":"","outputs":1,"x":1593.9183044433594,"y":664.2499771118164,"z":"671ce86d.8d2c68","wires":[["f12d0d49.6fdfa"]]},{"id":"a6c98492.4bd7b8","type":"other","name":"AIC_DATA_PLANE_PRIVATE_V4","xml":"<outcome value=\"AIC_DATA_PLANE_PRIVATE_V4\">","comments":"","outputs":1,"x":1584.9183044433594,"y":467.25001525878906,"z":"671ce86d.8d2c68","wires":[["6bb7a3b7.e1bc6c"]]},{"id":"f12d0d49.6fdfa","type":"set","name":"set EIPAM DP-P...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'DP-P ' + $tmp.region`\"/>\n","comments":"","x":1845.9183349609375,"y":663.2500114440918,"z":"671ce86d.8d2c68","wires":[]},{"id":"6bb7a3b7.e1bc6c","type":"set","name":"set EIPAM DP-Private...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'DP-Private ' + $tmp.region`\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1852.6683349609375,"y":466.00000953674316,"z":"671ce86d.8d2c68","wires":[]},{"id":"a17b1de9.fbd48","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"EIPAM Address Plan is not valid.\" />\n\t","comments":"","x":1633.918125152588,"y":770.5502767562866,"z":"671ce86d.8d2c68","wires":[]},{"id":"3c34fa66.819b26","type":"get-resource","name":"get-resource V4 - validate if level 1 pool exists already","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v4-address-plan and level = 1 and key_value = $tmp.level1-key-value ;\"\n        pfx='tmp.eipam-pool-row'>\n\n","comments":"","outputs":1,"x":1352.32666015625,"y":145.25000190734863,"z":"671ce86d.8d2c68","wires":[["53145a94.91bb24","f9d620c5.b9fdb","82325a25.6fda68"]]},{"id":"1e38df01.b48511","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_POOLS failed.\" />\n\t","comments":"","x":1851.3264923095703,"y":90.24999618530273,"z":"671ce86d.8d2c68","wires":[]},{"id":"53145a94.91bb24","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1703.3265838623047,"y":128.24999618530273,"z":"671ce86d.8d2c68","wires":[["98e191b0.3245b"]]},{"id":"6ff05864.4e26e8","type":"get-resource","name":"get-resource V6 - validate if level 1 pool does not exists","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v6-address-plan and level = 1 and key_value = $tmp.level1-key-value ;\"\n        pfx='tmp.eipam-pool-row'>\n\n","comments":"","outputs":1,"x":1426.3265380859375,"y":979.7005271911621,"z":"671ce86d.8d2c68","wires":[["98e8c8fd.fc8fc8","43ccd693.540118","29943cc2.4ad614"]]},{"id":"98e8c8fd.fc8fc8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1774.4694900512695,"y":934.7005395889282,"z":"671ce86d.8d2c68","wires":[["b4b080e4.6c3ec"]]},{"id":"b4b080e4.6c3ec","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_POOLS failed.\" />\n\t","comments":"","x":1880.3265399932861,"y":965.7005271911621,"z":"671ce86d.8d2c68","wires":[]},{"id":"43ccd693.540118","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1720.3265399932861,"y":1008.7005271911621,"z":"671ce86d.8d2c68","wires":[["f1991d8d.215cf"]]},{"id":"2e9ec5c3.95bffa","type":"switchNode","name":"switch: eipam-ip-block.level","xml":"<switch test=\"`$eipam-ip-block.level`\">","comments":"","outputs":1,"x":915.4076843261719,"y":145.25,"z":"671ce86d.8d2c68","wires":[["69ce5101.6e09c","21237994.3b7226","8a1e2363.8393d"]]},{"id":"69ce5101.6e09c","type":"other","name":"1","xml":"<outcome value='1'>","comments":"","outputs":1,"x":1094.4077758789062,"y":146.25,"z":"671ce86d.8d2c68","wires":[["3c34fa66.819b26"]]},{"id":"21237994.3b7226","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1098.4078063964844,"y":180.25,"z":"671ce86d.8d2c68","wires":[["ecaaee17.96423"]]},{"id":"ecaaee17.96423","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Please set the eipam-ip-block.level for appropriate EIPAM request.\" />\n\t","comments":"","x":1239.4076843261719,"y":179.25,"z":"671ce86d.8d2c68","wires":[]},{"id":"a3017592.1814d8","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Please set the eipam-ip-block.level for appropriate EIPAM request.\" />\n\t","comments":"","x":1424.40771484375,"y":809.2500152587891,"z":"671ce86d.8d2c68","wires":[]},{"id":"db7c500e.60761","type":"switchNode","name":"switch: eipam-ip-block.level","xml":"<switch test=\"`$eipam-ip-block.level`\">","comments":"","outputs":1,"x":983.4886627197266,"y":979.4002380371094,"z":"671ce86d.8d2c68","wires":[["54d3f13b.69bf3","379a8678.b7d82a","3a748814.f3f638"]]},{"id":"54d3f13b.69bf3","type":"other","name":"1","xml":"<outcome value='1'>","comments":"","outputs":1,"x":1165.4886627197266,"y":980.4002380371094,"z":"671ce86d.8d2c68","wires":[["6ff05864.4e26e8"]]},{"id":"379a8678.b7d82a","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1166.4886627197266,"y":1025.4002380371094,"z":"671ce86d.8d2c68","wires":[["853acb8b.376948"]]},{"id":"853acb8b.376948","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Please set the eipam-ip-block.level for appropriate EIPAM request.\" />\n\t","comments":"","x":1305.4886779785156,"y":1025.4002075195312,"z":"671ce86d.8d2c68","wires":[]},{"id":"2d645839.a9da98","type":"switchNode","name":"switch: tmp.region","xml":"<switch test=\"`$tmp.region`\">","comments":"","outputs":1,"x":347.05332946777344,"y":319.25,"z":"671ce86d.8d2c68","wires":[["b75ffe20.22799"]]},{"id":"b75ffe20.22799","type":"other","name":"USA","xml":"<outcome value=\"USA\">","comments":"","outputs":1,"x":518.053337097168,"y":319.25,"z":"671ce86d.8d2c68","wires":[["deb46eb2.d298e"]]},{"id":"deb46eb2.d298e","type":"set","name":"set: region to US","xml":"<set>\n\t<parameter name=\"tmp.region\" value=\"US\" />\n","comments":"","x":674.053337097168,"y":319.25,"z":"671ce86d.8d2c68","wires":[]},{"id":"2a658604.df3c4a","type":"switchNode","name":"switch: tmp.region","xml":"<switch test=\"`$tmp.region`\">","comments":"","outputs":1,"x":1836.0811767578125,"y":276.0000057220459,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"1a851da0.2e2a02","type":"other","name":"US","xml":"<outcome value=\"US\">","comments":"","outputs":1,"x":2576.581184387207,"y":332.50000381469727,"z":"671ce86d.8d2c68","wires":[["fbb6f7fb.eb9e68"]]},{"id":"bf57b9e0.aef5c8","type":"other","name":"CALA","xml":"<outcome value=\"CALA\">","comments":"","outputs":1,"x":2576.5811767578125,"y":371.50000381469727,"z":"671ce86d.8d2c68","wires":[["fbb6f7fb.eb9e68"]]},{"id":"a2f5b410.adfb98","type":"set","name":"set EIPAM ATM-U...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'ATM-U ' + $tmp.region`\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":1819.8079795837402,"y":341.0000057220459,"z":"671ce86d.8d2c68","wires":[]},{"id":"2639a083.65fc7","type":"other","name":"US","xml":"<outcome value=\"US\">","comments":"","outputs":1,"x":2148.086212158203,"y":405.25,"z":"671ce86d.8d2c68","wires":[["a23342d3.cfdf6"]]},{"id":"f7654b11.b2c948","type":"other","name":"CALA","xml":"<outcome value=\"CALA\">","comments":"","outputs":1,"x":2151.086212158203,"y":437.25,"z":"671ce86d.8d2c68","wires":[["a23342d3.cfdf6"]]},{"id":"f210b1b7.d48a1","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":2152.557891845703,"y":471.25,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"a23342d3.cfdf6","type":"set","name":"set EIPAM DP-U US/CALA","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"DP-U US/CALA\"/>\n","comments":"","x":2340.557891845703,"y":414.25,"z":"671ce86d.8d2c68","wires":[]},{"id":"8f3cf7c7.8f4c88","type":"other","name":"US","xml":"<outcome value=\"US\">","comments":"","outputs":1,"x":2048.557891845703,"y":511.25,"z":"671ce86d.8d2c68","wires":[["73c1924a.55773c"]]},{"id":"ade01a79.6d6c78","type":"other","name":"CALA","xml":"<outcome value=\"CALA\">","comments":"","outputs":1,"x":2051.557891845703,"y":543.25,"z":"671ce86d.8d2c68","wires":[["73c1924a.55773c"]]},{"id":"b38eed2a.dacce","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":2053.029571533203,"y":579.25,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"73c1924a.55773c","type":"set","name":"set EIPAM DP-Private US/CALA","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"DP-Private US/CALA\"/>\n","comments":"","x":2250.5579528808594,"y":525.25,"z":"671ce86d.8d2c68","wires":[]},{"id":"81959022.63ded","type":"save","name":"insert EIPAM_IP_POOLS for level 1 V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_POOLS\n             SET\n             key_name = $tmp.v4-level1-key-name ,\n             key_value = $tmp.level1-key-value ,\n             level = 1 ,\n             plan_name = $network-model.eipam-v4-address-plan ,\n             address_family = $network-model.ipv4-ip-version ,\n             parent_pool = $tmp.v4-qip-pool ,\n             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,\n             network_id = $tmp.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-v4pool-row'>\n","comments":"","outputs":1,"x":1637.7499389648438,"y":2019.1509246826172,"z":"671ce86d.8d2c68","wires":[["65cf4ad7.4cc2a4","609248c0.19a6a8","3dac947.456256c"]]},{"id":"9b0dcedf.993d8","type":"switchNode","name":"switch: network-model.use-ipv4","xml":"<switch test=\"`$network-model.use-ipv4`\">","comments":"","outputs":1,"x":304.74986267089844,"y":2017.1509094238281,"z":"671ce86d.8d2c68","wires":[["5341a052.64f08","b3ed9c2d.01d68","207dd074.0c1d5"]]},{"id":"b3ed9c2d.01d68","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":500.7499237060547,"y":2050.150909423828,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"5341a052.64f08","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":499.7499542236328,"y":2015.150894165039,"z":"671ce86d.8d2c68","wires":[["804e6b04.2bc568"]]},{"id":"39ca9f15.9f913","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1033.7498931884766,"y":2018.1509094238281,"z":"671ce86d.8d2c68","wires":[["925ff02f.4fc06","e91bc24.e1f384"]]},{"id":"207dd074.0c1d5","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":500.6393280029297,"y":2080.545196533203,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"925ff02f.4fc06","type":"switchNode","name":"switch: eipam-ip-block.level","xml":"<switch test=\"`$eipam-ip-block.level`\">","comments":"","outputs":1,"x":1233.7498931884766,"y":2018.1509094238281,"z":"671ce86d.8d2c68","wires":[["5588443c.ce86fc","65c15ebd.8a548"]]},{"id":"5588443c.ce86fc","type":"other","name":"1","xml":"<outcome value='1'>","comments":"","outputs":1,"x":1418.9600982666016,"y":2019.1509246826172,"z":"671ce86d.8d2c68","wires":[["81959022.63ded"]]},{"id":"65c15ebd.8a548","type":"other","name":"2","xml":"<outcome value='2'>","comments":"","outputs":1,"x":1417.9600982666016,"y":2057.150924682617,"z":"671ce86d.8d2c68","wires":[["dbf17772.efa788"]]},{"id":"9e90b4e5.685478","type":"switchNode","name":"switch: network-model.eipam-v6-address-plan","xml":"<switch test=\"`$network-model.eipam-v6-address-plan`\">","comments":"","outputs":1,"x":1298.2966613769531,"y":1234.8506164550781,"z":"671ce86d.8d2c68","wires":[["f2d0c26b.338f4","3dc70407.23e25c","62218dc9.0b03d4","72e82872.457bd8","8da8e954.08a008","29cbf81d.b5b248","ad40b2c0.1fe35"]]},{"id":"f2d0c26b.338f4","type":"other","name":"AIC_ATM_UNPROTECTED_V6","xml":"<outcome value=\"AIC_ATM_UNPROTECTED_V6\">","comments":"","outputs":1,"x":1646.2968168258667,"y":1231.8506164550781,"z":"671ce86d.8d2c68","wires":[["779a2ab3.4dac84"]]},{"id":"29cbf81d.b5b248","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1656.2967834472656,"y":1611.8506469726562,"z":"671ce86d.8d2c68","wires":[["86866e8b.a9ccf"]]},{"id":"3dc70407.23e25c","type":"other","name":"AIC_ATM_PROTECTED_V6","xml":"<outcome value=\"AIC_ATM_PROTECTED_V6\">","comments":"","outputs":1,"x":1647.2967834472656,"y":1353.8506164550781,"z":"671ce86d.8d2c68","wires":[["ba6ba705.792a38"]]},{"id":"b699dfb9.94482","type":"set","name":"set ATM-U US/CALA","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"ATM-U US/CALA\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2914.2972106933594,"y":1124.8506546020508,"z":"671ce86d.8d2c68","wires":[]},{"id":"62218dc9.0b03d4","type":"other","name":"AIC_DATA_PLANE_UNPROTECTED_V6","xml":"<outcome value=\"AIC_DATA_PLANE_UNPROTECTED_V6\">","comments":"","outputs":1,"x":1680.9123229980469,"y":1401.8506546020508,"z":"671ce86d.8d2c68","wires":[["7a13379.3bb03c8"]]},{"id":"72e82872.457bd8","type":"other","name":"AIC_DATA_PLANE_PROTECTED_V6","xml":"<outcome value=\"AIC_DATA_PLANE_PROTECTED_V6\">","comments":"","outputs":1,"x":1675.9123840332031,"y":1572.8506774902344,"z":"671ce86d.8d2c68","wires":[["97a93bf2.b3eaf8"]]},{"id":"8da8e954.08a008","type":"other","name":"AIC_DATA_PLANE_PRIVATE_V6","xml":"<outcome value=\"AIC_DATA_PLANE_PRIVATE_V6\">","comments":"","outputs":1,"x":1660.9123840332031,"y":1506.8506164550781,"z":"671ce86d.8d2c68","wires":[["aa300eae.d1cea"]]},{"id":"d136ac74.c3e72","type":"set","name":"set EIPAM DP-Private...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'DP-Private ' + $tmp.region`\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2968.912322998047,"y":1535.8506546020508,"z":"671ce86d.8d2c68","wires":[]},{"id":"86866e8b.a9ccf","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"EIPAM Address Plan is not valid.\" />\n\t","comments":"","x":1804.9126243591309,"y":1611.1508083343506,"z":"671ce86d.8d2c68","wires":[]},{"id":"b7101009.44c54","type":"other","name":"US","xml":"<outcome value=\"US\">","comments":"","outputs":1,"x":2722.825538635254,"y":1125.8506546020508,"z":"671ce86d.8d2c68","wires":[["b699dfb9.94482"]]},{"id":"5b0fa391.6713ac","type":"other","name":"CALA","xml":"<outcome value=\"CALA\">","comments":"","outputs":1,"x":2722.8255310058594,"y":1164.8506546020508,"z":"671ce86d.8d2c68","wires":[["b699dfb9.94482"]]},{"id":"bd59488.73337b8","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":2725.552215576172,"y":1197.8506927490234,"z":"671ce86d.8d2c68","wires":[["f0128178.bb014"]]},{"id":"f0128178.bb014","type":"set","name":"set EIPAM ATM-U...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'ATM-U ' + $tmp.region`\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2908.552276611328,"y":1201.8506546020508,"z":"671ce86d.8d2c68","wires":[]},{"id":"fd003853.3ab588","type":"other","name":"US","xml":"<outcome value=\"US\">","comments":"","outputs":1,"x":2746.0804138183594,"y":1324.8506546020508,"z":"671ce86d.8d2c68","wires":[["beaef1a.a72731"]]},{"id":"f12c9c3a.f80e4","type":"other","name":"CALA","xml":"<outcome value=\"CALA\">","comments":"","outputs":1,"x":2749.0804138183594,"y":1356.8506546020508,"z":"671ce86d.8d2c68","wires":[["beaef1a.a72731"]]},{"id":"64a12f23.0b3b4","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":2750.5520935058594,"y":1390.8506546020508,"z":"671ce86d.8d2c68","wires":[["35ef16ef.a62d2a"]]},{"id":"8ed5743b.93e438","type":"other","name":"US","xml":"<outcome value=\"US\">","comments":"","outputs":1,"x":2763.551971435547,"y":1474.8506546020508,"z":"671ce86d.8d2c68","wires":[["c789941c.f8b4b8"]]},{"id":"be60672.8d14c98","type":"other","name":"CALA","xml":"<outcome value=\"CALA\">","comments":"","outputs":1,"x":2766.551971435547,"y":1506.8506546020508,"z":"671ce86d.8d2c68","wires":[["c789941c.f8b4b8"]]},{"id":"9e361dca.b20d7","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":2768.023651123047,"y":1542.8506546020508,"z":"671ce86d.8d2c68","wires":[["d136ac74.c3e72"]]},{"id":"c789941c.f8b4b8","type":"set","name":"set EIPAM DP-Private US/CALA","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"DP-Private US/CALA\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2965.552032470703,"y":1488.8506546020508,"z":"671ce86d.8d2c68","wires":[]},{"id":"dbf17772.efa788","type":"save","name":"insert EIPAM_IP_POOLS for level 2 V4","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_POOLS\n             SET\n             key_name = $tmp.v4-level2-key-name ,\n             key_value = $tmp.level2-key-value ,\n             level = 2 ,\n             plan_name = $network-model.eipam-v4-address-plan ,\n             address_family = $network-model.ipv4-ip-version ,\n             parent_pool = $tmp.level1-key-value ,\n             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,\n             network_id = $tmp.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-v4pool-row'>\n","comments":"","outputs":1,"x":1636.2723388671875,"y":2058.0009384155273,"z":"671ce86d.8d2c68","wires":[["65cf4ad7.4cc2a4","609248c0.19a6a8","3dac947.456256c"]]},{"id":"26bca455.2381fc","type":"save","name":"insert EIPAM_IP_POOLS for level 1 V6","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_POOLS\n             SET\n             key_name = $tmp.v6-level1-key-name ,\n             key_value = $tmp.level1-key-value ,\n             level = 1 ,\n             plan_name = $network-model.eipam-v6-address-plan ,\n             address_family = $network-model.ipv6-ip-version ,\n             parent_pool = $tmp.v6-qip-pool ,\n             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,\n             network_id = $tmp.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-v6pool-row'>\n","comments":"","outputs":1,"x":1634.9361572265625,"y":2180.150924682617,"z":"671ce86d.8d2c68","wires":[["49717c3c.d70724","609248c0.19a6a8","3dac947.456256c"]]},{"id":"cc79dafb.5a0f88","type":"switchNode","name":"switch: network-model.use-ipv6","xml":"<switch test=\"`$network-model.use-ipv6`\">","comments":"","outputs":1,"x":303.93609619140625,"y":2176.150909423828,"z":"671ce86d.8d2c68","wires":[["33ed8673.d0dd9a","49ebae55.146d3","1aafb008.85465"]]},{"id":"49ebae55.146d3","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":499.9361572265625,"y":2209.150909423828,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"33ed8673.d0dd9a","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":498.9361877441406,"y":2174.150894165039,"z":"671ce86d.8d2c68","wires":[["3f306f73.9afbd"]]},{"id":"516d0114.fd163","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1050.9361267089844,"y":2178.150909423828,"z":"671ce86d.8d2c68","wires":[["6ed4c33b.ceac6c","7f8993e5.f36f2c"]]},{"id":"1aafb008.85465","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":499.8255615234375,"y":2239.545196533203,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"6ed4c33b.ceac6c","type":"switchNode","name":"switch: eipam-ip-block.level","xml":"<switch test=\"`$eipam-ip-block.level`\">","comments":"","outputs":1,"x":1253.9360961914062,"y":2152.150909423828,"z":"671ce86d.8d2c68","wires":[["93c8848c.8c1588","a2247704.ef23a8"]]},{"id":"93c8848c.8c1588","type":"other","name":"1","xml":"<outcome value='1'>","comments":"","outputs":1,"x":1415.1463775634766,"y":2181.150924682617,"z":"671ce86d.8d2c68","wires":[["26bca455.2381fc"]]},{"id":"a2247704.ef23a8","type":"other","name":"2","xml":"<outcome value='2'>","comments":"","outputs":1,"x":1417.1463165283203,"y":2216.150924682617,"z":"671ce86d.8d2c68","wires":[["9594d2f3.8e517"]]},{"id":"9594d2f3.8e517","type":"save","name":"insert EIPAM_IP_POOLS for level 2 V6","xml":"<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_POOLS\n             SET\n             key_name = $tmp.v6-level2-key-name ,\n             key_value = $tmp.level2-key-value ,\n             level = 2 ,\n             plan_name = $network-model.eipam-v6-address-plan ,\n             address_family = $network-model.ipv6-ip-version ,\n             parent_pool = $tmp.level1-key-value ,\n             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,\n             network_id = $tmp.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-v6pool-row'>\n","comments":"","outputs":1,"x":1635.4586029052734,"y":2217.000778198242,"z":"671ce86d.8d2c68","wires":[["49717c3c.d70724","609248c0.19a6a8","3dac947.456256c"]]},{"id":"75e27eb.4e3088","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 EIPAM_IP_POOLS .' />\n","comments":"","x":2094.272548675537,"y":2103.601348876953,"z":"671ce86d.8d2c68","wires":[]},{"id":"49717c3c.d70724","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":1927.2725830078125,"y":2189.451202392578,"z":"671ce86d.8d2c68","wires":[["75e27eb.4e3088"]]},{"id":"65cf4ad7.4cc2a4","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":1949.2725830078125,"y":2032.4512023925781,"z":"671ce86d.8d2c68","wires":[["75e27eb.4e3088"]]},{"id":"f9d620c5.b9fdb","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1702.1883697509766,"y":92.24999618530273,"z":"671ce86d.8d2c68","wires":[["1e38df01.b48511"]]},{"id":"82325a25.6fda68","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1363.1884460449219,"y":221.24999618530273,"z":"671ce86d.8d2c68","wires":[["c65b15a0.423ce8"]]},{"id":"29943cc2.4ad614","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1485.4106140136719,"y":1069.7004699707031,"z":"671ce86d.8d2c68","wires":[["fba574b9.9c5788"]]},{"id":"d756a69e.9c4548","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />\n","comments":"","x":2279.4107360839844,"y":951.7005004882812,"z":"671ce86d.8d2c68","wires":[]},{"id":"42e9f305.5ad03c","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />\n","comments":"","x":242.509765625,"y":2261.751739501953,"z":"671ce86d.8d2c68","wires":[]},{"id":"fc4487d2.9973a8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1000.0712966918945,"y":1795.4512023925781,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"609248c0.19a6a8","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1927.0714416503906,"y":2129.601348876953,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"3dac947.456256c","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1927.7501525878906,"y":2085.601348876953,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"111b2725.ddb219","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Please set the eipam-ip-block.level for appropriate EIPAM request.\" />\n\t","comments":"","x":1538.7501220703125,"y":1644.8506164550781,"z":"671ce86d.8d2c68","wires":[]},{"id":"f16219cb.07f268","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1281.8371353149414,"y":890.2500381469727,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"5b58a917.a585a8","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1400.837158203125,"y":1717.0007629394531,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"f5ecd53.ee1ca28","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-create-network-role-pool\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.level1-key-value`\"/>\n<parameter name=\"field6\" value=\"Level 1 already exists, SKIP.\"/>\n<parameter name=\"field7\" value=\"`$tmp.eipam-pool-row.pool-id`\"/>\n","comments":"","outputs":1,"x":2018.2754821777344,"y":123.24999618530273,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"c65b15a0.423ce8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":791.8970947265625,"y":606.2500305175781,"z":"671ce86d.8d2c68","wires":[["c61ef2de.7d164","bfd64303.cba0d","47c51d56.d814e4","72a866ff.265f18","55b8774.03fed88"]]},{"id":"8a1e2363.8393d","type":"other","name":"2","xml":"<outcome value='2'>","comments":"","outputs":1,"x":1097.8970642089844,"y":211.25,"z":"671ce86d.8d2c68","wires":[["c65b15a0.423ce8"]]},{"id":"8603a693.0b3078","type":"switchNode","name":"switch: tmp.create-v4-pool-flag","xml":"<switch test=\"`$tmp.create-v4-pool-flag`\">","comments":"","outputs":1,"x":824.5366363525391,"y":2016.6013488769531,"z":"671ce86d.8d2c68","wires":[["3f05b9b9.eb7996","cdd7f409.d7a558"]]},{"id":"804e6b04.2bc568","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":640.5366363525391,"y":2063.601348876953,"z":"671ce86d.8d2c68","wires":[["8603a693.0b3078"]]},{"id":"3f306f73.9afbd","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":642.5366363525391,"y":2205.601348876953,"z":"671ce86d.8d2c68","wires":[["673c772b.a5f748"]]},{"id":"673c772b.a5f748","type":"switchNode","name":"switch: tmp.create-v6-pool-flag","xml":"<switch test=\"`$tmp.create-v6-pool-flag`\">","comments":"","outputs":1,"x":821.5366516113281,"y":2174.601348876953,"z":"671ce86d.8d2c68","wires":[["39c21177.b61cee","5ae38e2b.08254"]]},{"id":"3f05b9b9.eb7996","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1008.5036926269531,"y":1970.7514953613281,"z":"671ce86d.8d2c68","wires":[["39ca9f15.9f913"]]},{"id":"cdd7f409.d7a558","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":1018.5036926269531,"y":2069.751495361328,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"39c21177.b61cee","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1017.5036926269531,"y":2133.751495361328,"z":"671ce86d.8d2c68","wires":[["516d0114.fd163"]]},{"id":"5ae38e2b.08254","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":1019.5036926269531,"y":2231.751495361328,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"b4192532.9ddbc8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-create-network-role-pool\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v6-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.level1-key-value`\"/>\n<parameter name=\"field6\" value=\"Level 1 already exists, SKIP.\"/>\n<parameter name=\"field7\" value=\"`$tmp.eipam-pool-row.pool-id`\"/>","comments":"","outputs":1,"x":2013.4556579589844,"y":1011.7005004882812,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"fba574b9.9c5788","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":961.9452056884766,"y":1388.1509094238281,"z":"671ce86d.8d2c68","wires":[["9e90b4e5.685478","c2349a89.e63848","53aa667.0545c98","f2ef27ec.8abfc8","1370ae94.2ed421"]]},{"id":"3a748814.f3f638","type":"other","name":"2","xml":"<outcome value='2'>","comments":"","outputs":1,"x":1169.2514343261719,"y":1066.7005004882812,"z":"671ce86d.8d2c68","wires":[["fba574b9.9c5788"]]},{"id":"2b5dec5a.82a674","type":"switchNode","name":"switch: tmp.create-v4-pool-flag","xml":"<switch test=\"`$tmp.create-v4-pool-flag`\">","comments":"","outputs":1,"x":310.6988830566406,"y":1651.7514953613281,"z":"671ce86d.8d2c68","wires":[["849ce972.398ce8","f2d274f6.fc2bf8"]]},{"id":"849ce972.398ce8","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":515.6988830566406,"y":1653.7514953613281,"z":"671ce86d.8d2c68","wires":[["8723628f.ec62d"]]},{"id":"f2d274f6.fc2bf8","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":515.6988830566406,"y":1705.7514953613281,"z":"671ce86d.8d2c68","wires":[["5b6e0461.e27b6c"]]},{"id":"5b6e0461.e27b6c","type":"switchNode","name":"switch: tmp.create-v6-pool-flag","xml":"<switch test=\"`$tmp.create-v6-pool-flag`\">","comments":"","outputs":1,"x":379.6988830566406,"y":1815.7514953613281,"z":"671ce86d.8d2c68","wires":[["7f8b524a.0e520c","48a8ea56.191444"]]},{"id":"7f8b524a.0e520c","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":570.75,"y":1819.4512023925781,"z":"671ce86d.8d2c68","wires":[["8723628f.ec62d"]]},{"id":"e91bc24.e1f384","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-create-network-role-pool\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.v4-level1-key-name`\"/>\n<parameter name=\"field6\" value=\"`$tmp.level1-key-value`\"/>\n<parameter name=\"field7\" value=\"`$tmp.v4-level2-key-name`\"/>\n<parameter name=\"field8\" value=\"`$tmp.level2-key-value`\"/>\n<parameter name=\"field9\" value=\"`$network-model.network-role`\"/>\n<parameter name=\"field10\" value=\"`$tmp.network-id`\"/>\n<parameter name=\"field11\" value=\"Saving to EIPAM_IP_POOLS table.\"/>\n","comments":"","outputs":1,"x":1176.0472984313965,"y":2062.9017515182495,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"7f8993e5.f36f2c","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-create-network-role-pool\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v6-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.v6-level1-key-name`\"/>\n<parameter name=\"field6\" value=\"`$tmp.level1-key-value`\"/>\n<parameter name=\"field7\" value=\"`$tmp.v6-level2-key-name`\"/>\n<parameter name=\"field8\" value=\"`$tmp.level2-key-value`\"/>\n<parameter name=\"field9\" value=\"`$network-model.network-role`\"/>\n<parameter name=\"field10\" value=\"`$tmp.network-id`\"/>\n<parameter name=\"field11\" value=\"Saving to EIPAM_IP_POOLS table.\"/>\n","comments":"","outputs":1,"x":1185.0472106933594,"y":2233.9015197753906,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"98e191b0.3245b","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1854.0262145996094,"y":128.24999618530273,"z":"671ce86d.8d2c68","wires":[["f5ecd53.ee1ca28","e553ba19.3496a8"]]},{"id":"e553ba19.3496a8","type":"set","name":"set eipam-pool.v4.pre-existing","xml":"<set>\n\t<parameter name=\"eipam-pool.v4.pre-existing\" value=\"true\"/>\n","comments":"","x":2057.0262145996094,"y":167.24999618530273,"z":"671ce86d.8d2c68","wires":[]},{"id":"93e6da87.be5cd8","type":"set","name":"set eipam-pool.v6.pre-existing","xml":"<set>\n\t<parameter name=\"eipam-pool.v6.pre-existing\" value=\"true\"/>\n","comments":"","x":2077.1253356933594,"y":1057.7005004882812,"z":"671ce86d.8d2c68","wires":[]},{"id":"f1991d8d.215cf","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1870.0232849121094,"y":1007.7004699707031,"z":"671ce86d.8d2c68","wires":[["b4192532.9ddbc8","93e6da87.be5cd8"]]},{"id":"48a8ea56.191444","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":570.0141906738281,"y":1872.6013488769531,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"15967988.1c9cf6","type":"get-resource","name":"get-resource V4 - validate if level 2 pool exists already","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v4-address-plan and parent_pool = $tmp.v4-level1-key-value and level = 2 and key_value = $tmp.v4-level2-key-value ;\"\n        pfx='tmp.eipam-pool-row'>\n\n","comments":"","outputs":1,"x":1770.0711364746094,"y":211.24999618530273,"z":"671ce86d.8d2c68","wires":[["f9d620c5.b9fdb","1db86321.08547d"]]},{"id":"1db86321.08547d","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2088.8968200683594,"y":218.24999618530273,"z":"671ce86d.8d2c68","wires":[["2d02b4d5.5ba0dc"]]},{"id":"bab14d1a.f6e89","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-create-network-role-pool\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v4-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.level1-key-value`\"/>\n<parameter name=\"field6\" value=\"Level 2 already exists, SKIP.\"/>\n<parameter name=\"field7\" value=\"`$tmp.eipam-pool-row.pool-id`\"/>\n<parameter name=\"field8\" value=\"`$tmp.level2-key-value`\"/>","comments":"","outputs":1,"x":2381.8968200683594,"y":196.24999618530273,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"2d02b4d5.5ba0dc","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2236.6475524902344,"y":217.24999618530273,"z":"671ce86d.8d2c68","wires":[["bab14d1a.f6e89","50449dc4.d69064"]]},{"id":"50449dc4.d69064","type":"set","name":"set eipam-pool.v4.pre-existing","xml":"<set>\n\t<parameter name=\"eipam-pool.v4.pre-existing\" value=\"true\"/>\n\t<parameter name=\"tmp.eipam-pool-row.pool-id\" value=\"$tmp.eipam-pool-row\"/>\t\n","comments":"","x":2451.6475524902344,"y":235.24999618530273,"z":"671ce86d.8d2c68","wires":[]},{"id":"69146eb3.a8b72","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2097.224334716797,"y":1126.8506164550781,"z":"671ce86d.8d2c68","wires":[["2b75247d.4ed9cc"]]},{"id":"4fc18a75.aa3724","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"network-topology-operation\"/>\n<parameter name=\"field3\" value=\"eipam-create-network-role-pool\"/>\n<parameter name=\"field4\" value=\"`$network-model.eipam-v6-address-plan`\"/>\n<parameter name=\"field5\" value=\"`$tmp.v6-level1-key-value`\"/>\n<parameter name=\"field6\" value=\"Level 2 already exists, SKIP.\"/>\n<parameter name=\"field7\" value=\"`$tmp.eipam-pool-row.pool-id`\"/>\n<parameter name=\"field8\" value=\"`$tmp.level2-key-value`\"/>","comments":"","outputs":1,"x":2412.224334716797,"y":1107.8506164550781,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"2b75247d.4ed9cc","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2247.975067138672,"y":1112.8506164550781,"z":"671ce86d.8d2c68","wires":[["4fc18a75.aa3724","faa9253b.c41e38"]]},{"id":"faa9253b.c41e38","type":"set","name":"set eipam-pool.v6.pre-existing","xml":"<set>\n\t<parameter name=\"eipam-pool.v6.pre-existing\" value=\"true\"/>\n","comments":"","x":2450.975067138672,"y":1151.8506164550781,"z":"671ce86d.8d2c68","wires":[]},{"id":"ca48c06b.6abbf","type":"get-resource","name":"get-resource V6 - validate if level 2 pool exists already","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v6-address-plan and parent_pool = $tmp.v6-level1-key-value and level = 2 and key_value = $tmp.v6-level2-key-value ;\"\n        pfx='tmp.eipam-pool-row'>\n\n","comments":"","outputs":1,"x":1803.2242126464844,"y":1147.7004699707031,"z":"671ce86d.8d2c68","wires":[["98e8c8fd.fc8fc8","69146eb3.a8b72"]]},{"id":"d28253ff.52d7e","type":"other","name":"CA","xml":"<outcome value=\"CA\">","comments":"","outputs":1,"x":2568.2923583984375,"y":305.5112190246582,"z":"671ce86d.8d2c68","wires":[["fbb6f7fb.eb9e68"]]},{"id":"7fb79ad1.2afa64","type":"other","name":"CA","xml":"<outcome value=\"CA\">","comments":"","outputs":1,"x":2141.5423889160156,"y":376.2611999511719,"z":"671ce86d.8d2c68","wires":[["a23342d3.cfdf6"]]},{"id":"619aba98.f43684","type":"other","name":"CA","xml":"<outcome value=\"CA\">","comments":"","outputs":1,"x":2030.5423889160156,"y":488.2611389160156,"z":"671ce86d.8d2c68","wires":[["73c1924a.55773c"]]},{"id":"f07307d6.211c88","type":"other","name":"CA","xml":"<outcome value=\"CA\">","comments":"","outputs":1,"x":2721.5425720214844,"y":1088.2611770629883,"z":"671ce86d.8d2c68","wires":[["b699dfb9.94482"]]},{"id":"17b0c8e9.e422d7","type":"other","name":"CA","xml":"<outcome value=\"CA\">","comments":"","outputs":1,"x":2728.542449951172,"y":1302.2611770629883,"z":"671ce86d.8d2c68","wires":[["beaef1a.a72731"]]},{"id":"9371014c.72917","type":"other","name":"CA","xml":"<outcome value=\"CA\">","comments":"","outputs":1,"x":2751.5423278808594,"y":1452.2611770629883,"z":"671ce86d.8d2c68","wires":[["c789941c.f8b4b8"]]},{"id":"beaef1a.a72731","type":"set","name":"set EIPAM DP-U US/CALA","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"DP-U US/CALA\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2980.542449951172,"y":1326.2611770629883,"z":"671ce86d.8d2c68","wires":[]},{"id":"35ef16ef.a62d2a","type":"set","name":"set EIPAM DP-U...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'DP-U ' + $tmp.region`\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":2940.542449951172,"y":1392.2611770629883,"z":"671ce86d.8d2c68","wires":[]},{"id":"779a2ab3.4dac84","type":"set","name":"set EIPAM ATM-U-V6...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'ATM-U-V6 ' + $tmp.region`\"/>\n","comments":"","x":1908.9424743652344,"y":1233.2499465942383,"z":"671ce86d.8d2c68","wires":[]},{"id":"ba6ba705.792a38","type":"set","name":"set EIPAM ATM-P-V6...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'ATM-P-V6 ' + $tmp.region`\"/>\n","comments":"","x":1907.9423522949219,"y":1353.2499465942383,"z":"671ce86d.8d2c68","wires":[]},{"id":"7a13379.3bb03c8","type":"set","name":"set EIPAM AIC-DP-U-V6...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'AIC-DP-U-V6 ' + $tmp.region`\"/>\n","comments":"","x":1981.5423278808594,"y":1401.2499465942383,"z":"671ce86d.8d2c68","wires":[]},{"id":"aa300eae.d1cea","type":"set","name":"set EIPAM AIC-DP-PRIVATE-V6...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'AIC-DP-Private-V6 ' + $tmp.region`\"/>\n","comments":"","x":1967.2566146850586,"y":1507.2499558925629,"z":"671ce86d.8d2c68","wires":[]},{"id":"97a93bf2.b3eaf8","type":"set","name":"set EIPAM AIC-DP-P-V6...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'AIC-DP-P-V6 ' + $tmp.region`\"/>\n\n","comments":"","x":1962.5423278808594,"y":1570.2499465942383,"z":"671ce86d.8d2c68","wires":[]},{"id":"e0576429.d09e08","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":2055.5423278808594,"y":732.0500411987305,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"1a9339e8.6fcd06","type":"other","name":"CA","xml":"<outcome value=\"CA\">","comments":"","outputs":1,"x":2053.5423278808594,"y":699.0500335693359,"z":"671ce86d.8d2c68","wires":[["da883746.91be98"]]},{"id":"da883746.91be98","type":"set","name":"set EIPAM DP-P CALA...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"DP-P CALA\"/>\n","comments":"","x":2235.742218017578,"y":696.0500030517578,"z":"671ce86d.8d2c68","wires":[]},{"id":"5e2e2641.3c3c18","type":"other","name":"CA","xml":"<outcome value=\"CA\">","comments":"","outputs":1,"x":2457.9923706054688,"y":604.80002784729,"z":"671ce86d.8d2c68","wires":[["59a4cbd0.c70be4"]]},{"id":"59a4cbd0.c70be4","type":"set","name":"set EIPAM ATM-P CALA...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"ATM-P CALA\"/>\n","comments":"","x":2640.1922607421875,"y":601.7999973297119,"z":"671ce86d.8d2c68","wires":[]},{"id":"a2000837.3fc4c8","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":2462.9923706054688,"y":640.80002784729,"z":"671ce86d.8d2c68","wires":[[]]},{"id":"f266991e.4d8b98","type":"other","name":"AIC_AIM_LANDING_NETWORK_V4","xml":"<outcome value=\"AIC_AIM_LANDING_NETWORK_V4\">","comments":"","outputs":1,"x":1560.9423522949219,"y":719.2500076293945,"z":"671ce86d.8d2c68","wires":[["5fede67.bc7d418"]]},{"id":"5fede67.bc7d418","type":"set","name":"set AIC-AIM-LANDING-V4...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'AIC-AIM-LANDING-V4 ' + $tmp.region`\"/>\n","comments":"","x":1840.4423789978027,"y":719.5000114440918,"z":"671ce86d.8d2c68","wires":[]},{"id":"ad40b2c0.1fe35","type":"other","name":"AIC_AIM_LANDING_NETWORK_V6","xml":"<outcome value=\"AIC_AIM_LANDING_NETWORK_V6\">","comments":"","outputs":1,"x":1668.4361267089844,"y":1286,"z":"671ce86d.8d2c68","wires":[["4023d30e.17618c"]]},{"id":"4023d30e.17618c","type":"set","name":"set AIC-AIM-LANDING-V6...","xml":"<set>\n\t<parameter name=\"tmp.qip-pool\" value=\"`'AIC-AIM-LANDING-V6 ' + $tmp.region`\"/>\n\n","comments":"","x":1947.9361534118652,"y":1286.2500038146973,"z":"671ce86d.8d2c68","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-FQPN.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-FQPN.json
new file mode 100644
index 0000000..dece94e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-FQPN.json
@@ -0,0 +1 @@
+[{"id":"79ba259.c7ba2dc","type":"dgstart","name":"DGSTART","outputs":1,"x":128.75,"y":29.321433067321777,"z":"c652763a.596c58","wires":[["834c6c7c.38e56"]]},{"id":"a766aebf.c7668","type":"method","name":"method generate-FQPN","xml":"<method rpc='generate-FQPN' mode='sync'>\n","comments":"","outputs":1,"x":207.92857360839844,"y":80.55556201934814,"z":"c652763a.596c58","wires":[["48815f52.bf419"]]},{"id":"48815f52.bf419","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":199.14287567138672,"y":129.35717582702637,"z":"c652763a.596c58","wires":[["d06c8acf.1c9578","8a089a57.322c78","e7614998.3c8608","52804378.5be62c","11421c9.063bce3","72bce7b0.c625f8"]]},{"id":"e7614998.3c8608","type":"execute","name":"call EIPAM getPlanTopology","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"getPlanTopology\">","comments":"","outputs":1,"x":486.2739562988281,"y":462.1508502960205,"z":"c652763a.596c58","wires":[["6de13210.1501dc"]]},{"id":"6de13210.1501dc","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":702.6550140380859,"y":461.8774833679199,"z":"c652763a.596c58","wires":[["7bb873e9.96d31c"]]},{"id":"7bb873e9.96d31c","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=\"`'An error occured while getting Keyname and Keyvalue for address plan, '+ $eipam-ip-block.planName + ', from EIPAM'`\" />\n","comments":"","x":858.5477600097656,"y":461.984712600708,"z":"c652763a.596c58","wires":[]},{"id":"52804378.5be62c","type":"switchNode","name":"switch: TopologyDetails_length","xml":"<switch test='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`'>\n","comments":"","outputs":1,"x":494.3255310058594,"y":513.7897052764893,"z":"c652763a.596c58","wires":[["c388a5c.dc49c58"]]},{"id":"c388a5c.dc49c58","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":714.6429138183594,"y":513.7897171974182,"z":"c652763a.596c58","wires":[["bf892896.f0b5f8"]]},{"id":"556322b7.09182c","type":"switchNode","name":"switch: ADDRESS_PLAN_POLICIES.key-value-source","xml":"<switch test='`$db.address-plan-policies.key-value-source`'>\n","comments":"","outputs":1,"x":1627.8692474365234,"y":1339.2140498161316,"z":"c652763a.596c58","wires":[["17619a28.56be46","a36564be.c9d5d8","ac8b9d9a.5938b","faed7e83.a3dec","6922f413.90927c","58efd662.e89bb8","98de2fde.1b752","342731c4.6e7bfe","428d578.e3b2ea8","e3f636d7.501068","c469dc37.0566","7875fd31.d3ddc4"]]},{"id":"5b3b0420.b4d8fc","type":"get-resource","name":"get-resource ADDRESS_PLAN_POLICIES","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT key_value_source from ADDRESS_PLAN_POLICIES WHERE key_name = $tmp.eipam.key-name '\n  pfx='db.address-plan-policies'>\n\n","comments":"","outputs":1,"x":1590.0676879882812,"y":1091.3571662902832,"z":"c652763a.596c58","wires":[["48d5f70.28eab08","77df7ce.be04c84"]]},{"id":"2611123d.4966de","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=\"`'No ADDRESS_PLAN_POLICIES entry found for key_name = ' + $eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$key-index].KeyName`\" />\n","comments":"","x":2031.496109008789,"y":1115.785638809204,"z":"c652763a.596c58","wires":[]},{"id":"48d5f70.28eab08","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1855.8533782958984,"y":1071.7379970550537,"z":"c652763a.596c58","wires":[["12294024.d7218"]]},{"id":"77df7ce.be04c84","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1864.4248085021973,"y":1116.0237102508545,"z":"c652763a.596c58","wires":[["2611123d.4966de"]]},{"id":"12294024.d7218","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 reading ADDRESS_PLAN_POLICIES table\" />\n","comments":"","x":2030.8533096313477,"y":1070.8808975219727,"z":"c652763a.596c58","wires":[]},{"id":"17619a28.56be46","type":"outcome","name":"AddressPlanPolicyDG-Routing_Characteristic","xml":"<outcome value='AddressPlanPolicyDG-Routing_Characteristic'>\n","comments":"","outputs":1,"x":2054.6192169189453,"y":1339.214047908783,"z":"c652763a.596c58","wires":[["bc1689b0.948c28"]]},{"id":"a36564be.c9d5d8","type":"outcome","name":"AddressPlanPolicyDG-Location_Clli8","xml":"<outcome value='AddressPlanPolicyDG-Location_Clli8'>\n","comments":"","outputs":1,"x":2029.8691711425781,"y":1658.8528876304626,"z":"c652763a.596c58","wires":[["91b70338.c7b13"]]},{"id":"58efd662.e89bb8","type":"outcome","name":"AddressPlanPolicyDG-Complex_region","xml":"<outcome value='AddressPlanPolicyDG-Complex_region'>\n","comments":"","outputs":1,"x":2035.3413391113281,"y":1886.4084401130676,"z":"c652763a.596c58","wires":[["6742bcbb.0ddaf4"]]},{"id":"ac8b9d9a.5938b","type":"outcome","name":"AddressPlanPolicyDG-Vrf_Name","xml":"<outcome value='AddressPlanPolicyDG-Vrf_Name'>\n","comments":"","outputs":1,"x":2017.1864700317383,"y":1714.79735994339,"z":"c652763a.596c58","wires":[["532b3408.a7a4ec"]]},{"id":"6922f413.90927c","type":"outcome","name":"AddressPlanPolicyDG-Network_Name","xml":"<outcome value='AddressPlanPolicyDG-Network_Name'>\n","comments":"","outputs":1,"x":2033.3413543701172,"y":1944.6584401130676,"z":"c652763a.596c58","wires":[["5608d152.f0554"]]},{"id":"faed7e83.a3dec","type":"outcome","name":"cloud_region_id","xml":"<outcome value='cloud_region_id'>\n","comments":"","outputs":1,"x":1963.9841918945312,"y":1819.1584076881409,"z":"c652763a.596c58","wires":[["b8165c7b.aaca1"]]},{"id":"92c5a401.157c78","type":"get-resource","name":"get-resource ROUTING_CHARACTERISTIC_MAPPING","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from ROUTING_CHARACTERISTIC_MAPPING WHERE network_role = $generate-FQPN-input.network-role '\n  pfx='db.routing-characteristic_mapping[]'>\n\n","comments":"","outputs":1,"x":1631.2025299072266,"y":1186.380919456482,"z":"c652763a.596c58","wires":[["b458e390.eafb8","673c853f.b4e3fc"]]},{"id":"ae609e11.948b2","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=\"`'No ROUTING_CHARACTERISTIC_MAPPING entry found for network_role = ' + $generate-FQPN-input.network-role`\" />\n","comments":"","x":2113.8809356689453,"y":1209.5593843460083,"z":"c652763a.596c58","wires":[]},{"id":"b458e390.eafb8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1938.2382049560547,"y":1165.511742591858,"z":"c652763a.596c58","wires":[["156061cd.bc051e"]]},{"id":"673c853f.b4e3fc","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1946.8096351623535,"y":1209.7974557876587,"z":"c652763a.596c58","wires":[["ae609e11.948b2"]]},{"id":"156061cd.bc051e","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 reading ROUTING_CHARACTERISTIC_MAPPING table\" />\n","comments":"","x":2113.238136291504,"y":1165.6546430587769,"z":"c652763a.596c58","wires":[]},{"id":"85a0ca28.00cfa8","type":"switchNode","name":"switch: db.routing-characteristic_mapping_length > 1","xml":"<switch test='`$db.routing-characteristic_mapping_length &gt; 1`'>\n","comments":"","outputs":1,"x":2662.952606201172,"y":1413.6306977272034,"z":"c652763a.596c58","wires":[["2e6904ff.ed698c","af330778.3b34e8"]]},{"id":"1cce08c7.fcb087","type":"switchNode","name":"switch: db | input - vrf-name","xml":"<switch test='`$db.routing-characteristic_mapping[$routing-index].vrf-name == $generate-FQPN-input.vrf-name`'>\n","comments":"","outputs":1,"x":3666.952682495117,"y":1414.1307196617126,"z":"c652763a.596c58","wires":[["799cf5ac.b53bbc"]]},{"id":"e0608aa0.6ff978","type":"for","name":"for : db.routing-characteristic_mapping[]","xml":"<for index=\"routing-index\" start=\"0\" end=\"`$db.routing-characteristic_mapping_length`\">","comments":"","outputs":1,"x":3354.7026748657227,"y":1414.3807139396667,"z":"c652763a.596c58","wires":[["1cce08c7.fcb087"]]},{"id":"87ceba81.9e11c8","type":"comment","name":"Required INPUTS","info":"\ngenerate-FQPN-input.plan-name\n","comments":"","x":733.6984329223633,"y":36.2262396812439,"z":"c652763a.596c58","wires":[]},{"id":"2e6904ff.ed698c","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2961.702621459961,"y":1414.130699634552,"z":"c652763a.596c58","wires":[["1b5a8392.ee28fc"]]},{"id":"799cf5ac.b53bbc","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3878.4526596069336,"y":1414.1307120323181,"z":"c652763a.596c58","wires":[["94e0b4be.54b248"]]},{"id":"7d4a759a.d52b0c","type":"set","name":"set tmp.key-value = -1","xml":"<set>\n<parameter name='tmp.key-value' value='-1' />\n","comments":"","x":2567.928855895996,"y":1339.5117325782776,"z":"c652763a.596c58","wires":[]},{"id":"7a552f25.1a804","type":"set","name":"set tmp.key-value","xml":"<set>\n<parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[$routing-index].routing-characteristic`' />\n","comments":"","x":4243.647106170654,"y":1413.630639659034,"z":"c652763a.596c58","wires":[]},{"id":"e29adbda.480b38","type":"switchNode","name":"switch: tmp.key-value","xml":"<switch test='`$tmp.key-value`'>\n","comments":"","outputs":1,"x":2563.4884719848633,"y":1570.7456669807434,"z":"c652763a.596c58","wires":[["34acbd6f.5f5a22"]]},{"id":"34acbd6f.5f5a22","type":"outcomeTrue","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":2786.2384719848633,"y":1570.9956669807434,"z":"c652763a.596c58","wires":[["2ba9ab7a.eb4db4"]]},{"id":"2ba9ab7a.eb4db4","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=\"No matching ROUTING_CHARACTERISTIC_MAPPING.vrf-name found\" />\n","comments":"","x":2945.7384719848633,"y":1570.7456669807434,"z":"c652763a.596c58","wires":[]},{"id":"bc1689b0.948c28","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2333.369354248047,"y":1339.3806958198547,"z":"c652763a.596c58","wires":[["85a0ca28.00cfa8","e29adbda.480b38","7d4a759a.d52b0c"]]},{"id":"bf892896.f0b5f8","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=\"eipam-ip-block.getPlanTopologyResponse.TopologyDetails is null\" />\n","comments":"","x":874.5595855712891,"y":513.9008159637451,"z":"c652763a.596c58","wires":[]},{"id":"7691310e.0f762","type":"set","name":"set pool-index","xml":"<set>\n<parameter name='pool-index'\n   value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$resp-index].Level - 1`' />\n","comments":"","x":938.0118560791016,"y":815.2421541213989,"z":"c652763a.596c58","wires":[]},{"id":"94e0b4be.54b248","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":4042.8414268493652,"y":1414.07519197464,"z":"c652763a.596c58","wires":[["7a552f25.1a804","5a920854.123588"]]},{"id":"28db23f.554f3dc","type":"set","name":"set tmp.key-value","xml":"<set>\n<parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[0].routing-characteristic`' />\n","comments":"","x":3134.337303161621,"y":1514.1942734718323,"z":"c652763a.596c58","wires":[]},{"id":"af330778.3b34e8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2960.253860473633,"y":1513.5990109443665,"z":"c652763a.596c58","wires":[["28db23f.554f3dc"]]},{"id":"91b70338.c7b13","type":"set","name":"set tmp.key-value = input","xml":"<set>\n<parameter name='tmp.key-value' value='`$generate-FQPN-input.location-clli8`' />\n","comments":"","x":2333.2618713378906,"y":1658.8251557350159,"z":"c652763a.596c58","wires":[]},{"id":"8a089a57.322c78","type":"set","name":"set eipam-ip-block.plan-name","xml":"<set>\n<parameter name='eipam-ip-block.plan-name' value='`$generate-FQPN-input.plan-name`' />\n","comments":"","x":492.4484329223633,"y":358.41671562194824,"z":"c652763a.596c58","wires":[]},{"id":"83fd072a.1aa948","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1282.3095703125,"y":1091.119131565094,"z":"c652763a.596c58","wires":[["5b3b0420.b4d8fc","556322b7.09182c","e335771d.ce26a8","92c5a401.157c78"]]},{"id":"bdaefa9a.44bad8","type":"switchNode","name":"switch: Response.planName vs eipam-ip-block..plan-name","xml":"<switch test='`$eipam-ip-block.plan-name == $eipam-ip-block.getPlanTopologyResponse.PlanName`'>\n","comments":"","outputs":1,"x":1075.6270370483398,"y":768.6031675338745,"z":"c652763a.596c58","wires":[["8ab7144b.dc5198"]]},{"id":"8ab7144b.dc5198","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1390.3572578430176,"y":768.8095111846924,"z":"c652763a.596c58","wires":[["7719b06a.805b2"]]},{"id":"7719b06a.805b2","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=\"`'eipam response plan-name ['+ $eipam-ip-block.getPlanTopologyResponse.PlanName + ' is not the same as input '+$eipam-ip-block.planName`\" />\n","comments":"","x":1555.7858123779297,"y":768.8095045089722,"z":"c652763a.596c58","wires":[]},{"id":"7266b10d.a764e","type":"comment","name":"eipam-ip-block.getPlanTopologyResponse.TopologyDetails[]","info":"eipam-ip-block.getPlanTopologyResponse.TopologyDetails[0].KeyName = CLLI_CLOUD_REGION\neipam-ip-block.getPlanTopologyResponse.TopologyDetails[0].Level = 1\neipam-ip-block.getPlanTopologyResponse.TopologyDetails[1].Level = 2\neipam-ip-block.getPlanTopologyResponse.TopologyDetails[1].KeyName = NETWORK_ROLE_NETWORK_ID\n\n","comments":"","x":1166.5238189697266,"y":455.3453063964844,"z":"c652763a.596c58","wires":[]},{"id":"b8165c7b.aaca1","type":"set","name":"set tmp.key-value = input","xml":"<set>\n<parameter name='tmp.key-value' value='`$generate-FQPN-input.aic-cloud-region`' />\n","comments":"","x":2199.011947631836,"y":1819.6306710243225,"z":"c652763a.596c58","wires":[]},{"id":"6742bcbb.0ddaf4","type":"set","name":"set tmp.key-value = complex.region","xml":"<set>\n<parameter name='tmp.key-value' value='`$aai.complex.region`' />\n","comments":"","x":2376.369110107422,"y":1885.8807015419006,"z":"c652763a.596c58","wires":[]},{"id":"5608d152.f0554","type":"set","name":"set tmp.key-value = input","xml":"<set>\n<parameter name='tmp.key-value' value='`$generate-FQPN-input.network-name`' />\n","comments":"","x":2344.2263107299805,"y":1944.8450865745544,"z":"c652763a.596c58","wires":[]},{"id":"98de2fde.1b752","type":"other","name":"Other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1937.6984895978658,"y":2429.8689430100576,"z":"c652763a.596c58","wires":[["732765e4.1228cc"]]},{"id":"732765e4.1228cc","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=\"`'Unknown ADDRESS_PLAN_POLICIES: ' + $db.address-plan-policies.key-value-source`\" />\n","comments":"","x":2106.127113342285,"y":2429.8689255714417,"z":"c652763a.596c58","wires":[]},{"id":"d06c8acf.1c9578","type":"switchNode","name":"switch: generate-FQPN-input.plan-name","xml":"<switch test='`$generate-FQPN-input.plan-name`'>\n","comments":"","outputs":1,"x":526.1429901123047,"y":303.9641819000244,"z":"c652763a.596c58","wires":[["4bc5e326.49bffc"]]},{"id":"5a920854.123588","type":"returnFailure","name":"BREAK","xml":"<return status='failure'>\n","comments":"","x":4215.761917114258,"y":1458.916515827179,"z":"c652763a.596c58","wires":[]},{"id":"456fc76a.e60c68","type":"returnSuccess","name":"CATCH BREAK","xml":"<return status='success'>","comments":"","x":3281.6190338134766,"y":1460.0593342781067,"z":"c652763a.596c58","wires":[]},{"id":"1b5a8392.ee28fc","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3110.6191787719727,"y":1414.0593552589417,"z":"c652763a.596c58","wires":[["e0608aa0.6ff978","456fc76a.e60c68"]]},{"id":"20e9e6c3.d21d5a","type":"set","name":"set generate-FQPN-output.pools[]","xml":"<set>\n<parameter name='generate-FQPN-output.pools[$pool-index].key-name'\n   value='`$tmp.getPlanTopologyResponse.key-name`' />\n<parameter name='generate-FQPN-output.pools[$pool-index].key-value'\n\tvalue='`$tmp.final.key-value`' />","comments":"","x":991.9999160766602,"y":1671.2973651885986,"z":"c652763a.596c58","wires":[]},{"id":"722e807f.31865","type":"switchNode","name":"switch: generate-FQPN-input.aic-cloud-region","xml":"<switch test='`$generate-FQPN-input.aic-cloud-region`'>\n","comments":"","outputs":1,"x":1348.571632385254,"y":68.10711860656738,"z":"c652763a.596c58","wires":[["6d671e0c.0d3ad"]]},{"id":"6d671e0c.0d3ad","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1621.0716400146484,"y":67.60711860656738,"z":"c652763a.596c58","wires":[["3c163883.e92c88"]]},{"id":"3c163883.e92c88","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=\"generate-FQPN-input.aic-cloud-region is null\" />\n","comments":"","x":1782.9883117675781,"y":67.71821737289429,"z":"c652763a.596c58","wires":[]},{"id":"342731c4.6e7bfe","type":"other","name":"AddressPlanPolicyDG-Subnet_Role","xml":"<outcome value='AddressPlanPolicyDG-Subnet_Role'>\n","comments":"","outputs":1,"x":2024.6191101074219,"y":2039.6307015419006,"z":"c652763a.596c58","wires":[["f9fc2911.d11238"]]},{"id":"fdbcf3f7.07358","type":"comment","name":"Change History","info":"iTrack 8790\n- add validation for network-role in input for null\n- change query of ROUTING_CHARATERISTIC table with network-role from input.\n- Return generate-FQPN-output.pools[]\n- set pools_length to .getPlanTopologyResponse.TopologyDetails_length separately at the end of the call.\niTrack 10846\n- node 35, fixed error-message, generate-FQPN-input.network-role\niTrack 11310\n- changed ADDRESS_PLAN_POLICIES  cloud_region_id from using vnfapi nodestring for cloud-region-id\n- added AddressPlanPolicyDG-Network_Role and AddressPlanPolicyDG-Network_Id to ADDRESS_PLAN_POLICIES  query and resolution\n- updated vrf-name resolution to use tosca data if not found in ADDRESS_PLAN_POLICIES\n- support compound key-name\niTrack 11945\n- added network-collection and zone \n- remove validation of all input except plan-name\n","comments":"","x":938.7500152587891,"y":66.4642915725708,"z":"c652763a.596c58","wires":[]},{"id":"882fb87d.50bb98","type":"switchNode","name":"switch: generate-FQPN-input.location-clli8","xml":"<switch test='`$generate-FQPN-input.location-clli8`'>\n","comments":"","outputs":1,"x":1337.3215713500977,"y":117.8928279876709,"z":"c652763a.596c58","wires":[["5745e190.c2fb9"]]},{"id":"5745e190.c2fb9","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1609.8215789794922,"y":117.3928279876709,"z":"c652763a.596c58","wires":[["52a22cfc.08e524"]]},{"id":"52a22cfc.08e524","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=\"generate-FQPN-input.location-clli8 is null\" />\n","comments":"","x":1771.7382507324219,"y":117.5039267539978,"z":"c652763a.596c58","wires":[]},{"id":"e2f939ea.05fa78","type":"switchNode","name":"switch: generate-FQPN-input.complex-region","xml":"<switch test='`$generate-FQPN-input.complex-region`'>\n","comments":"","outputs":1,"x":1346.8930130004883,"y":167.89282417297363,"z":"c652763a.596c58","wires":[["dfe11059.90d46"]]},{"id":"dfe11059.90d46","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1619.3930206298828,"y":167.39282417297363,"z":"c652763a.596c58","wires":[["5a14e8bf.c22d98"]]},{"id":"5a14e8bf.c22d98","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=\"generate-FQPN-input.complex-region is null\" />\n","comments":"","x":1781.3096923828125,"y":167.50392293930054,"z":"c652763a.596c58","wires":[]},{"id":"d362a8cb.2c2918","type":"switchNode","name":"switch: generate-FQPN-input.network-name","xml":"<switch test='`$generate-FQPN-input.network-name`'>\n","comments":"","outputs":1,"x":1343.6073455810547,"y":216.46425247192383,"z":"c652763a.596c58","wires":[["cbc1f670.e78b58"]]},{"id":"cbc1f670.e78b58","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1616.1073532104492,"y":215.96425247192383,"z":"c652763a.596c58","wires":[["35ddce88.fff762"]]},{"id":"35ddce88.fff762","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=\"generate-FQPN-input.network-name is null\" />\n","comments":"","x":1778.024024963379,"y":216.07535123825073,"z":"c652763a.596c58","wires":[]},{"id":"f706cd27.421b7","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=\"generate-FQPN-input.plan-name is null\" />\n","comments":"","x":958.46435546875,"y":303.74999618530273,"z":"c652763a.596c58","wires":[]},{"id":"4bc5e326.49bffc","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":781.8928985595703,"y":303.7500238418579,"z":"c652763a.596c58","wires":[["f706cd27.421b7"]]},{"id":"e335771d.ce26a8","type":"set","name":"set tmp.key-value = null","xml":"<set>\n<parameter name='tmp.key-value' value='' />\n","comments":"","x":1530.6787338256836,"y":1259.7380094528198,"z":"c652763a.596c58","wires":[]},{"id":"55980981.9f2b58","type":"for","name":"for resp-index: getPlanTopologyResponse.TopologyDetails[]","xml":"<for index=\"resp-index\" start=\"0\" end=\"`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`\">","comments":"","outputs":1,"x":567.9880828857422,"y":768.6667146682739,"z":"c652763a.596c58","wires":[["bdaefa9a.44bad8","7691310e.0f762","49723ed6.b5077","fcb3b4d4.db2118","795df082.1ef0e","20e9e6c3.d21d5a","f02298f2.395ed8"]]},{"id":"eccbf901.ff5b08","type":"switchNode","name":"switch: generate-FQPN-input.network-role","xml":"<switch test='`$generate-FQPN-input.network-role`'>\n","comments":"","outputs":1,"x":1335.6072845458984,"y":312.749963760376,"z":"c652763a.596c58","wires":[["26ab2719.de3898"]]},{"id":"26ab2719.de3898","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1608.107292175293,"y":312.249963760376,"z":"c652763a.596c58","wires":[["ade31dc.cd41ce"]]},{"id":"ade31dc.cd41ce","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=\"generate-FQPN-input.network-role is null\" />\n","comments":"","x":1770.0239639282227,"y":312.3610625267029,"z":"c652763a.596c58","wires":[]},{"id":"11421c9.063bce3","type":"set","name":"empty generate-FQPN-output.","xml":"<set>\n<parameter name='generate-FQPN-output.' value='' />\n","comments":"","x":493.1785888671875,"y":410.89291191101074,"z":"c652763a.596c58","wires":[]},{"id":"e337ea2f.a00878","type":"comment","name":"OUTPUT","info":"generate-FQPN-output.pools[]\ngenerate-FQPN-output.pools_length","comments":"","x":673.0356750488281,"y":100.75001049041748,"z":"c652763a.596c58","wires":[]},{"id":"4a7531a7.3f821","type":"set","name":"set generate-FQPN-output.pools_length","xml":"<set>\n<parameter name='generate-FQPN-output.pools_length' \n\tvalue='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`' />\n","comments":"","x":503.6071090698242,"y":884.8572025299072,"z":"c652763a.596c58","wires":[]},{"id":"b89d845e.01b468","type":"set","name":"set tmp.key-value = STATIC","xml":"<set>\n<parameter name='tmp.key-value' value='STATIC' />\n","comments":"","x":2825.6906204223633,"y":2039.0593361854553,"z":"c652763a.596c58","wires":[]},{"id":"f9fc2911.d11238","type":"switchNode","name":"switch generate-FQPN-input.subnet-role","xml":"\n<switch test='`$generate-FQPN-input.subnet-role`' >\n","comments":"","outputs":1,"x":2365.6548385620117,"y":2039.7498326301575,"z":"c652763a.596c58","wires":[["4701e013.e7507","6a3c9bf7.7a0944"]]},{"id":"4701e013.e7507","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2613.5120162963867,"y":2039.3212475776672,"z":"c652763a.596c58","wires":[["b89d845e.01b468"]]},{"id":"6a3c9bf7.7a0944","type":"other","name":"Other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2613.7976608276367,"y":2085.6070103645325,"z":"c652763a.596c58","wires":[["b22212e1.24b38"]]},{"id":"b22212e1.24b38","type":"set","name":"set tmp.key-value = input","xml":"<set>\n<parameter name='tmp.key-value' value='`$generate-FQPN-input.subnet-role`' />\n","comments":"","x":2817.0835494995117,"y":2085.4641880989075,"z":"c652763a.596c58","wires":[]},{"id":"428d578.e3b2ea8","type":"outcome","name":"AddressPlanPolicyDG-Network_Role","xml":"<outcome value='AddressPlanPolicyDG-Network_Role'>\n","comments":"","outputs":1,"x":2030.8610153198242,"y":2152.765600681305,"z":"c652763a.596c58","wires":[["576bc5f5.7d0f5c"]]},{"id":"576bc5f5.7d0f5c","type":"set","name":"set tmp.key-value = input","xml":"<set>\n<parameter name='tmp.key-value' value='`$generate-FQPN-input.network-role`' />\n","comments":"","x":2321.7459716796875,"y":2152.9522471427917,"z":"c652763a.596c58","wires":[]},{"id":"e3f636d7.501068","type":"outcome","name":"AddressPlanPolicyDG-Network_Id","xml":"<outcome value='AddressPlanPolicyDG-Network_Id'>\n","comments":"","outputs":1,"x":2019.7499313354492,"y":2233.8767971992493,"z":"c652763a.596c58","wires":[["50767569.e5490c"]]},{"id":"50767569.e5490c","type":"set","name":"set tmp.key-value = input","xml":"<set>\n<parameter name='tmp.key-value' value='`$generate-FQPN-input.network-id`' />\n","comments":"","x":2310.6348876953125,"y":2234.063443660736,"z":"c652763a.596c58","wires":[]},{"id":"4ca5db34.62be64","type":"switchNode","name":"switch: generate-FQPN-input.network-id","xml":"<switch test='`$generate-FQPN-input.network-id`'>\n","comments":"","outputs":1,"x":1331.321517944336,"y":262.6071357727051,"z":"c652763a.596c58","wires":[["69381626.e9a348"]]},{"id":"69381626.e9a348","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1603.8215255737305,"y":263.1071357727051,"z":"c652763a.596c58","wires":[["2ac78bdc.099524"]]},{"id":"2ac78bdc.099524","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=\"generate-FQPN-input.network-id is null\" />\n","comments":"","x":1765.7381973266602,"y":263.218234539032,"z":"c652763a.596c58","wires":[]},{"id":"834c6c7c.38e56","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":401.6071472167969,"y":28.75,"z":"c652763a.596c58","wires":[["a766aebf.c7668"]]},{"id":"532b3408.a7a4ec","type":"switchNode","name":"switch: generate-FQPN-input.vrf-name","xml":"<switch test='`$generate-FQPN-input.vrf-name`'>\n","comments":"","outputs":1,"x":2340.797737121582,"y":1715.035650730133,"z":"c652763a.596c58","wires":[["ffd2065c.c1c968"]]},{"id":"ffd2065c.c1c968","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2588.512092590332,"y":1715.035650730133,"z":"c652763a.596c58","wires":[["d2bc39c7.5d9538"]]},{"id":"d2bc39c7.5d9538","type":"set","name":"set tmp.key-value = $db.routing-characteristic_mapping[0].vrf-name","xml":"<set>\n<parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[0].vrf-name`' />\n","comments":"","x":2927.0235900878906,"y":1714.6626954078674,"z":"c652763a.596c58","wires":[]},{"id":"49723ed6.b5077","type":"set","name":"set tmp.getPlanTopologyResponse.key-name","xml":"<set>\n<parameter name='tmp.getPlanTopologyResponse.key-name' \n\tvalue='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$resp-index].KeyName`' />\n","comments":"","x":1026.9286193847656,"y":918.0714998245239,"z":"c652763a.596c58","wires":[]},{"id":"fcb3b4d4.db2118","type":"execute","name":"split tmp.getPlanTopologyResponse.key-name","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n\t<parameter name=\"original_string\" value=\"`$tmp.getPlanTopologyResponse.key-name`\" />\n\t<parameter name=\"regex\" value=\":\" />\n\t<parameter name=\"ctx_memory_result_key\" value=\"tmp.split.key-name\" />\n","comments":"","outputs":1,"x":1031.071434020996,"y":971.6429176330566,"z":"c652763a.596c58","wires":[[]]},{"id":"795df082.1ef0e","type":"for","name":"for split-index: tmp.split.key-name","xml":"<for index=\"split-index\" start=\"0\" end=\"`$tmp.split.key-name_length`\">","comments":"","outputs":1,"x":993.2500343322754,"y":1023.7857522964478,"z":"c652763a.596c58","wires":[["b59ccbaa.90d0b8","83fd072a.1aa948","b14a8dd9.6e60d"]]},{"id":"b59ccbaa.90d0b8","type":"set","name":"set tmp.eipam.key-name","xml":"<set>\n<parameter name='tmp.eipam.key-name' \n\tvalue='`$tmp.split.key-name[$split-index]`' />\n","comments":"","x":1314.750015258789,"y":1023.5357351303101,"z":"c652763a.596c58","wires":[]},{"id":"7de6547e.574bfc","type":"set","name":"set tmp.final.key-value","xml":"<set>\n<parameter name='tmp.final.key-value' value=\"`$tmp.key-value`\" />\n","comments":"","x":1687.297378540039,"y":1513.1548833847046,"z":"c652763a.596c58","wires":[]},{"id":"b14a8dd9.6e60d","type":"switchNode","name":"switch: split-index == 0","xml":"<switch test='`$split-index == 0`'>\n","comments":"","outputs":1,"x":1294.297477722168,"y":1513.5834398269653,"z":"c652763a.596c58","wires":[["20c1863e.337c1a","975be642.2ad488"]]},{"id":"20c1863e.337c1a","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1491.0118026733398,"y":1513.5833616256714,"z":"c652763a.596c58","wires":[["7de6547e.574bfc"]]},{"id":"975be642.2ad488","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1492.8688583374023,"y":1565.011950492859,"z":"c652763a.596c58","wires":[["4c706252.b3c0bc"]]},{"id":"4c706252.b3c0bc","type":"set","name":"set tmp.final.key-value with :","xml":"<set>\n<parameter name='tmp.final.key-value' \n\tvalue=\"`$tmp.final.key-value + ':' + $tmp.key-value`\" />\n","comments":"","x":1706.154655456543,"y":1565.20254611969,"z":"c652763a.596c58","wires":[]},{"id":"f02298f2.395ed8","type":"set","name":"set tmp.final.key-value NULL","xml":"<set>\n<parameter name='tmp.final.key-value' value=\"\" />\n","comments":"","x":982.2500228881836,"y":867.5357341766357,"z":"c652763a.596c58","wires":[]},{"id":"c469dc37.0566","type":"outcome","name":"AddressPlanPolicyDG-Network_Collection","xml":"<outcome value='AddressPlanPolicyDG-Network_Collection'>\n","comments":"","outputs":1,"x":2044.6428833007812,"y":2300.357177734375,"z":"c652763a.596c58","wires":[["c8b4a61c.5dc488"]]},{"id":"c8b4a61c.5dc488","type":"set","name":"set tmp.key-value = input","xml":"<set>\n<parameter name='tmp.key-value' value='`$generate-FQPN-input.network-collection`' />\n","comments":"","x":2335.5278396606445,"y":2300.543824195862,"z":"c652763a.596c58","wires":[]},{"id":"7875fd31.d3ddc4","type":"outcome","name":"AddressPlanPolicyDG-Zone","xml":"<outcome value='AddressPlanPolicyDG-Zone'>\n","comments":"","outputs":1,"x":1998.3928833007812,"y":2360.3571796417236,"z":"c652763a.596c58","wires":[["3cd2f123.1a42be"]]},{"id":"3cd2f123.1a42be","type":"set","name":"set tmp.key-value = input","xml":"<set>\n<parameter name='tmp.key-value' value='`$generate-FQPN-input.zone`' />\n","comments":"","x":2289.2778396606445,"y":2360.5438261032104,"z":"c652763a.596c58","wires":[]},{"id":"72bce7b0.c625f8","type":"switchNode","name":"switch: sdnc-generated-cloud-resources","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.sdnc-generated-cloud-resources`'>\n","comments":"","outputs":1,"x":251.42862701416016,"y":571.285698890686,"z":"c652763a.596c58","wires":[["6ad0b534.7aedfc","53e1e9c2.959dc8","dee69902.b8b9c8"]]},{"id":"6ad0b534.7aedfc","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":525.1430282592773,"y":571.4285879135132,"z":"c652763a.596c58","wires":[["cbe4345b.0405f8"]]},{"id":"cbe4345b.0405f8","type":"call","name":"call GENERIC-RESOURCE-API:self-serve-generate-FQPN","xml":"<call module='GENERIC-RESOURCE-API' rpc='self-serve-generate-FQPN' mode='sync' >\n","comments":"","outputs":1,"x":840.0001487731934,"y":571.000002861023,"z":"c652763a.596c58","wires":[[]]},{"id":"53e1e9c2.959dc8","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":523.7143249511719,"y":654.2856321334839,"z":"c652763a.596c58","wires":[["6e3a5ada.ae9324"]]},{"id":"dee69902.b8b9c8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":523.7143249511719,"y":614.2857723236084,"z":"c652763a.596c58","wires":[["6e3a5ada.ae9324"]]},{"id":"6e3a5ada.ae9324","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":224.28572845458984,"y":831.8571043014526,"z":"c652763a.596c58","wires":[["55980981.9f2b58","4a7531a7.3f821"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-allottedresource-id.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-allottedresource-id.json
new file mode 100644
index 0000000..b1ed442
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-allottedresource-id.json
@@ -0,0 +1,398 @@
+[
+    {
+        "id": "4eb410ec.15c8",
+        "type": "execute",
+        "name": "execute: generateUUID",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n\t<parameter name=\"ctx-destination\" value=\"tmp.return.generate-allottedresource-id.id\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 538.3333129882812,
+        "y": 515.8333282470703,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "a4997c46.9d57f"
+            ]
+        ]
+    },
+    {
+        "id": "a4997c46.9d57f",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 734.0833206176758,
+        "y": 515.8333282470703,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "5525e405.5a720c"
+            ]
+        ]
+    },
+    {
+        "id": "5525e405.5a720c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<!-- Used to work around execute node bug -->\n\t<parameter name=\"execute_failure\" value=\"false\" />\n\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-l3network-network-id\" value=\"An error occured while generating a UUID for L3-NETWORK.\" />",
+        "comments": "",
+        "x": 899.0833206176758,
+        "y": 516.0833253860474,
+        "z": "4903bad.edade44",
+        "wires": []
+    },
+    {
+        "id": "66d02173.cfc28",
+        "type": "get-resource",
+        "name": "Query AnAI -  allotted-resource",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n              resource=\"allotted-resource\"\n              key=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\t\t\tservice-subscription.service-type = $cto-api.service-type AND\n\t\t\t\t\tservice-instance.service-instance-id = $cto-api.port-mirror-configuration-instance-id AND\n\t\t\t\t\tallotted-resource.id = $tmp.return.generate-allottedresource-id.id\"\n              local-only=\"false\"\n              pfx=\"tmp.local-variables.generate-allottedresource-id.ALLOTTEDRESOURCE\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 750.2500305175781,
+        "y": 605.4166297912598,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "954e6938.90cb08",
+                "c3f9027.48ad5",
+                "88fbf3ed.1e4ec",
+                "167962db.dfa98d"
+            ]
+        ]
+    },
+    {
+        "id": "5835198f.dc0b38",
+        "type": "for",
+        "name": "for n: true",
+        "xml": "<for atomic=\"true\" index=\"n\" start=\"0\" end=\"1\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 487.5833206176758,
+        "y": 607.0833253860474,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "66d02173.cfc28"
+            ]
+        ]
+    },
+    {
+        "id": "954e6938.90cb08",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1071.416603088379,
+        "y": 603.7499647140503,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "5a93b788.462aa8"
+            ]
+        ]
+    },
+    {
+        "id": "c3f9027.48ad5",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1067.416603088379,
+        "y": 683.7499647140503,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "9a1a9def.d6a4"
+            ]
+        ]
+    },
+    {
+        "id": "88fbf3ed.1e4ec",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1076.416603088379,
+        "y": 643.7499647140503,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "3401c5c.83c4e3a"
+            ]
+        ]
+    },
+    {
+        "id": "9a1a9def.d6a4",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-allottedresource-id\" value=\"`'An error occured while checking if a generated allotted-resource-id was unique. allotted-resource-id = ' + $tmp.local-variables.generate-allottedresource-id.id`\" />",
+        "comments": "",
+        "x": 1233.9166107177734,
+        "y": 708.7499704360962,
+        "z": "4903bad.edade44",
+        "wires": []
+    },
+    {
+        "id": "5a93b788.462aa8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1229.416603088379,
+        "y": 603.7499647140503,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "42f40b02.0f1b64",
+                "a99c317d.5b194"
+            ]
+        ]
+    },
+    {
+        "id": "42f40b02.0f1b64",
+        "type": "set",
+        "name": "set: ...local...is-unique = 0",
+        "xml": "<set>\n\t<parameter name=\"tmp.local-variables.generate-allottedresource-id.is-unique\" value=\"0\" />",
+        "comments": "",
+        "x": 1446.9167022705078,
+        "y": 603.7499361038208,
+        "z": "4903bad.edade44",
+        "wires": []
+    },
+    {
+        "id": "a99c317d.5b194",
+        "type": "execute",
+        "name": "execute: generateUUID",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n\t<parameter name=\"ctx-destination\" value=\"tmp.return.generate-allottedresource-id.id\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1440.416603088379,
+        "y": 643.7499647140503,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "e5672b.69ed28d8"
+            ]
+        ]
+    },
+    {
+        "id": "e5672b.69ed28d8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1627.416603088379,
+        "y": 643.7499647140503,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "d2e9bf0a.cb123"
+            ]
+        ]
+    },
+    {
+        "id": "d2e9bf0a.cb123",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-allottedresource-id\" value=\"An error occured while generating a UUID for ALLOTTED-RESOURCE.\" />",
+        "comments": "",
+        "x": 1779.7499923706055,
+        "y": 643.7499656677246,
+        "z": "4903bad.edade44",
+        "wires": []
+    },
+    {
+        "id": "3401c5c.83c4e3a",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1207.416603088379,
+        "y": 643.7499647140503,
+        "z": "4903bad.edade44",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6a875f8d.73cc2",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 244.58331680297852,
+        "y": 203.33332443237305,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "20c9128.11698ee"
+            ]
+        ]
+    },
+    {
+        "id": "20c9128.11698ee",
+        "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": 268.58331298828125,
+        "y": 249.58332443237305,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "c9e0323.6c392d"
+            ]
+        ]
+    },
+    {
+        "id": "c9e0323.6c392d",
+        "type": "method",
+        "name": "method generate-allottedresource-id",
+        "xml": "<method rpc=\"generate-allottedresource-id\" mode=\"sync\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 354.33331298828125,
+        "y": 302.08332443237305,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "11f29edc.8e12b1"
+            ]
+        ]
+    },
+    {
+        "id": "aa4e1446.234628",
+        "type": "comment",
+        "name": "GENERIC-RESOURCE-API: GENERATE-L3NETWORK-NETWORK-ID",
+        "info": "",
+        "comments": "",
+        "x": 796.0833282470703,
+        "y": 209.5833225250244,
+        "z": "4903bad.edade44",
+        "wires": []
+    },
+    {
+        "id": "11f29edc.8e12b1",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 306.0833206176758,
+        "y": 427.08332538604736,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "4eb410ec.15c8",
+                "5835198f.dc0b38",
+                "96991ff7.0c0e5",
+                "8eb23908.bf31d8"
+            ]
+        ]
+    },
+    {
+        "id": "5be115d7.3547fc",
+        "type": "comment",
+        "name": "LOOP UNTIL GENERATED ALLOTTED-RESOURCE ISN'T FOUND IN A&AI",
+        "info": "",
+        "comments": "",
+        "x": 707.3333129882812,
+        "y": 563.3333292007446,
+        "z": "4903bad.edade44",
+        "wires": []
+    },
+    {
+        "id": "f6ac6a5d.3c4308",
+        "type": "comment",
+        "name": "GENERATE A NETWORK-ID",
+        "info": "",
+        "comments": "",
+        "x": 571.0833129882812,
+        "y": 473.333327293396,
+        "z": "4903bad.edade44",
+        "wires": []
+    },
+    {
+        "id": "96991ff7.0c0e5",
+        "type": "set",
+        "name": "unset: local-variables & return",
+        "xml": "<set>\n\t<parameter name=\"tmp.local-variables.generate-allottedresource-id.\" value=\"\" />\n\t<parameter name=\"tmp.return.generate-allottedresource-id.\" value=\"\" />",
+        "comments": "",
+        "x": 558.7499885559082,
+        "y": 427.083309173584,
+        "z": "4903bad.edade44",
+        "wires": []
+    },
+    {
+        "id": "b4d56db.b9ad09",
+        "type": "comment",
+        "name": "CLEANUP LOCAL VARIABLES TO BE USED",
+        "info": "",
+        "comments": "",
+        "x": 641.3333129882812,
+        "y": 383.3333263397217,
+        "z": "4903bad.edade44",
+        "wires": []
+    },
+    {
+        "id": "1c2f28d9.80ec27",
+        "type": "comment",
+        "name": "GLOBAL VARIABLES USED",
+        "info": "// RETURN VALUES\nerror-message.generate-l3network-network-id\ntmp.return.generate-l3network-network-id.uuid\n\n// LOCAL VARIABLES (erased at beginning & end of DG)\ntmp.local-variables.generate-l3network-network-id.*\ntmp.return.generate-l3network-network-id.*\n",
+        "comments": "",
+        "x": 782.5833435058594,
+        "y": 249.5833225250244,
+        "z": "4903bad.edade44",
+        "wires": []
+    },
+    {
+        "id": "8eb23908.bf31d8",
+        "type": "set",
+        "name": "unset: local-variables & return",
+        "xml": "<set>\n\t<parameter name=\"tmp.local-variables.generate-allottedresource-id.\" value=\"\" />",
+        "comments": "",
+        "x": 557.0833206176758,
+        "y": 707.0833253860474,
+        "z": "4903bad.edade44",
+        "wires": []
+    },
+    {
+        "id": "13e6bec1.8c1fd1",
+        "type": "comment",
+        "name": "CLEANUP LOCAL VARIABLES",
+        "info": "",
+        "comments": "",
+        "x": 598.5833129882812,
+        "y": 664.583330154419,
+        "z": "4903bad.edade44",
+        "wires": []
+    },
+    {
+        "id": "167962db.dfa98d",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value=\"Other\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1067.416603088379,
+        "y": 723.7499647140503,
+        "z": "4903bad.edade44",
+        "wires": [
+            [
+                "9a1a9def.d6a4"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-host-routes-host-route-id.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-host-routes-host-route-id.json
new file mode 100755
index 0000000..9068ce6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-host-routes-host-route-id.json
@@ -0,0 +1 @@
+[{"id":"b46c7669.faf458","type":"execute","name":"execute: generateUUID","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n\t<parameter name=\"ctx-destination\" value=\"tmp.return.generate-host-routes-host-route-id.uuid\" />","comments":"","outputs":1,"x":535.0039138793945,"y":420.83342695236206,"z":"6a6a71ad.8750d","wires":[["ccd2b56.c05d548"]]},{"id":"ccd2b56.c05d548","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":735.7539138793945,"y":420.50007820129395,"z":"6a6a71ad.8750d","wires":[["edbf364.8ce48c8"]]},{"id":"edbf364.8ce48c8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<!-- Used to work around execute node bug -->\n\t<parameter name=\"execute_failure\" value=\"false\" />\n\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-l3network-network-id\" value=\"An error occured while generating a UUID for L3-NETWORK.\" />","comments":"","x":900.7539138793945,"y":420.750075340271,"z":"6a6a71ad.8750d","wires":[]},{"id":"bc391592.12cd58","type":"get-resource","name":"Query AnAI -  host-route","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"subnet\"\n\t\tkey=\"l3-network.network-id = $tmp.local.network-id \n\t\t\tAND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid \n\t\t\tAND host-route.host-route-id = $tmp.return.generate-host-routes-host-route-id.uuid\" \n\t\tlocal-only=\"false\"\n\t\tpfx=\"tmp.local-variables.generate-host-routes-host-route-id.HOST_ROUTE\" >","comments":"","outputs":1,"x":665.2539138793945,"y":511.750075340271,"z":"6a6a71ad.8750d","wires":[["73d58c11.7a5074","1b298f59.abe1a1","a74019fb.6b7638","888b565f.7cd9e8"]]},{"id":"a6e69c08.b975","type":"for","name":"for s: true","xml":"<for atomic=\"true\" index=\"s\" start=\"0\" end=\"1\" >","comments":"","outputs":1,"x":489.25391387939453,"y":511.750075340271,"z":"6a6a71ad.8750d","wires":[["bc391592.12cd58"]]},{"id":"73d58c11.7a5074","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":869.7539138793945,"y":511.750075340271,"z":"6a6a71ad.8750d","wires":[["82631946.34ce68"]]},{"id":"1b298f59.abe1a1","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":865.7539138793945,"y":591.750075340271,"z":"6a6a71ad.8750d","wires":[["8e99ea56.3c3f98"]]},{"id":"a74019fb.6b7638","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":874.7539138793945,"y":551.750075340271,"z":"6a6a71ad.8750d","wires":[["f99aabd0.438828"]]},{"id":"8e99ea56.3c3f98","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-host-routes-host-route-id\" value=\"`'An error occured while checking if a generated host-routes-host-route-id was unique. host-route-id = ' + $tmp.local-variables.generate-host-routes-host-route-id.uuid`\" />","comments":"","x":1032.253921508789,"y":616.7500810623169,"z":"6a6a71ad.8750d","wires":[]},{"id":"82631946.34ce68","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1027.7539138793945,"y":511.750075340271,"z":"6a6a71ad.8750d","wires":[["65b722dd.cc3b2c","b429d230.cec2"]]},{"id":"65b722dd.cc3b2c","type":"set","name":"set: ...local...is-unique = 0","xml":"<set>\n\t<parameter name=\"tmp.local-variables.generate-host-routes-host-route-id.is-unique\" value=\"0\" />","comments":"","x":1245.2539672851562,"y":511.7500810623169,"z":"6a6a71ad.8750d","wires":[]},{"id":"b429d230.cec2","type":"execute","name":"execute: generateUUID","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n\t<parameter name=\"ctx-destination\" value=\"tmp.return.generate-host-routes-host-route-id.uuid\" />","comments":"","outputs":1,"x":1238.7539138793945,"y":551.750075340271,"z":"6a6a71ad.8750d","wires":[["1988b05c.8294a"]]},{"id":"1988b05c.8294a","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1425.7539138793945,"y":551.750075340271,"z":"6a6a71ad.8750d","wires":[["fb704f42.47d16"]]},{"id":"fb704f42.47d16","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-host-routes-host-route-id\" value=\"An error occured while generating a UUID for HOST_ROUTE.\" />","comments":"","x":1578.0873336791992,"y":553.4167652130127,"z":"6a6a71ad.8750d","wires":[]},{"id":"f99aabd0.438828","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":1005.7539138793945,"y":551.750075340271,"z":"6a6a71ad.8750d","wires":[[]]},{"id":"3061b9b4.8398a6","type":"dgstart","name":"DGSTART","outputs":1,"x":246.25391006469727,"y":108.00007438659668,"z":"6a6a71ad.8750d","wires":[["3d685829.268188"]]},{"id":"3d685829.268188","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":270.25390625,"y":154.25007438659668,"z":"6a6a71ad.8750d","wires":[["a93ee3ca.ee07b"]]},{"id":"a93ee3ca.ee07b","type":"method","name":"method generate-host-routes-host-route-id","xml":"<method rpc=\"generate-host-routes-host-route-id\" mode=\"sync\">","comments":"","outputs":1,"x":356.00390625,"y":206.75007438659668,"z":"6a6a71ad.8750d","wires":[["d7498ee5.c88ba"]]},{"id":"d7498ee5.c88ba","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":307.75391387939453,"y":331.750075340271,"z":"6a6a71ad.8750d","wires":[["b46c7669.faf458","cfe8a10b.dbcb8","137705c6.07742a","a6e69c08.b975"]]},{"id":"75e8d152.6f8c4","type":"comment","name":"LOOP UNTIL GENERATED HOST_ROUTE-ID ISN'T FOUND IN A&AI","info":"","comments":"","x":709.00390625,"y":468.00007915496826,"z":"6a6a71ad.8750d","wires":[]},{"id":"d11c9793.21a9d8","type":"comment","name":"GENERATE A HOST-ROUTE-ID","info":"","comments":"","x":572.75390625,"y":378.00007724761963,"z":"6a6a71ad.8750d","wires":[]},{"id":"cfe8a10b.dbcb8","type":"set","name":"unset: local-variables & return","xml":"<set>\n\t<parameter name=\"tmp.local-variables.generate-host-routes-host-route-id.\" value=\"\" />\n\t<parameter name=\"tmp.return.generate-host-routes-host-route-id.\" value=\"\" />","comments":"","x":558.7539138793945,"y":331.750075340271,"z":"6a6a71ad.8750d","wires":[]},{"id":"559b5a57.4342e4","type":"comment","name":"CLEANUP LOCAL VARIABLES TO BE USED","info":"","comments":"","x":643.00390625,"y":288.0000762939453,"z":"6a6a71ad.8750d","wires":[]},{"id":"7626b04.8cb7f5","type":"comment","name":"GLOBAL VARIABLES USED","info":"// RETURN VALUES\nerror-message.generate-host-routes-host-route-id\ntmp.return.generate-host-routes-host-route-id.uuid\n\n// LOCAL VARIABLES (erased at beginning & end of DG)\ntmp.local-variables.generate-host-routes-host-route-id.*\ntmp.local-variables.generate-host-routes-host-route.HOST_ROUTE.*","comments":"","x":784.2539367675781,"y":154.25007247924805,"z":"6a6a71ad.8750d","wires":[]},{"id":"137705c6.07742a","type":"set","name":"unset: local-variables & return","xml":"<set>\n\t<parameter name=\"tmp.local-variables.generate-host-routes-host-route-id.\" value=\"\" />","comments":"","x":558.7539138793945,"y":611.750075340271,"z":"6a6a71ad.8750d","wires":[]},{"id":"490d997f.134258","type":"comment","name":"CLEANUP LOCAL VARIABLES","info":"","comments":"","x":600.25390625,"y":569.2500801086426,"z":"6a6a71ad.8750d","wires":[]},{"id":"888b565f.7cd9e8","type":"other","name":"Other","xml":"<outcome value=\"Other\">","comments":"","outputs":1,"x":865.7539138793945,"y":631.750075340271,"z":"6a6a71ad.8750d","wires":[["8e99ea56.3c3f98"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-l3network-network-id.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-l3network-network-id.json
new file mode 100644
index 0000000..2aecf29
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-l3network-network-id.json
@@ -0,0 +1,398 @@
+[
+    {
+        "id": "e7bd9a65.20fdd8",
+        "type": "execute",
+        "name": "execute: generateUUID",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n\t<parameter name=\"ctx-destination\" value=\"tmp.return.generate-l3network-network-id.uuid\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 545,
+        "y": 418.5,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "bebe20e6.50ef2"
+            ]
+        ]
+    },
+    {
+        "id": "bebe20e6.50ef2",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 744.7500076293945,
+        "y": 416.50000381469727,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "9eddb187.db4bb"
+            ]
+        ]
+    },
+    {
+        "id": "9eddb187.db4bb",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<!-- Used to work around execute node bug -->\n\t<parameter name=\"execute_failure\" value=\"false\" />\n\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-l3network-network-id\" value=\"An error occured while generating a UUID for L3-NETWORK.\" />",
+        "comments": "",
+        "x": 909.7500076293945,
+        "y": 416.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": []
+    },
+    {
+        "id": "31a24297.e15d1e",
+        "type": "get-resource",
+        "name": "Query AnAI -  l3-network",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n              resource=\"l3-network\"\n              key=\"l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid\"\n              local-only=\"false\"\n              pfx=\"tmp.local-variables.generate-l3network-network-id.L3NETWORK\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 674.2500076293945,
+        "y": 507.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "fbe58eaa.4092f",
+                "bf4ce186.fe5b4",
+                "45826101.ef494",
+                "25b3888f.ec6cf8"
+            ]
+        ]
+    },
+    {
+        "id": "7ec5dc21.02fc54",
+        "type": "for",
+        "name": "for n: true",
+        "xml": "<for atomic=\"true\" index=\"n\" start=\"0\" end=\"1\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 498.25000762939453,
+        "y": 507.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "31a24297.e15d1e"
+            ]
+        ]
+    },
+    {
+        "id": "fbe58eaa.4092f",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 878.7500076293945,
+        "y": 507.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "cf545076.3189e"
+            ]
+        ]
+    },
+    {
+        "id": "bf4ce186.fe5b4",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 874.7500076293945,
+        "y": 587.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "d07d9c69.54e1d"
+            ]
+        ]
+    },
+    {
+        "id": "45826101.ef494",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 883.7500076293945,
+        "y": 547.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "f2604c68.2cc79"
+            ]
+        ]
+    },
+    {
+        "id": "d07d9c69.54e1d",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-l3network-network-id\" value=\"`'An error occured while checking if a generated l3network-network-id was unique. network-id = ' + $tmp.local-variables.generate-l3network-network-id.uuid`\" />",
+        "comments": "",
+        "x": 1041.250015258789,
+        "y": 612.7500066757202,
+        "z": "86afe909.dcb228",
+        "wires": []
+    },
+    {
+        "id": "cf545076.3189e",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1036.7500076293945,
+        "y": 507.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "28421263.2994fe",
+                "c44a7adf.25dce8"
+            ]
+        ]
+    },
+    {
+        "id": "28421263.2994fe",
+        "type": "set",
+        "name": "set: ...local...is-unique = 0",
+        "xml": "<set>\n\t<parameter name=\"tmp.local-variables.generate-l3network-network-id.is-unique\" value=\"0\" />",
+        "comments": "",
+        "x": 1254.2500610351562,
+        "y": 507.7500066757202,
+        "z": "86afe909.dcb228",
+        "wires": []
+    },
+    {
+        "id": "c44a7adf.25dce8",
+        "type": "execute",
+        "name": "execute: generateUUID",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n\t<parameter name=\"ctx-destination\" value=\"tmp.return.generate-l3network-network-id.uuid\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1247.7500076293945,
+        "y": 547.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "9de63c0c.60c61"
+            ]
+        ]
+    },
+    {
+        "id": "9de63c0c.60c61",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1434.7500076293945,
+        "y": 547.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "ee927e4f.a8611"
+            ]
+        ]
+    },
+    {
+        "id": "ee927e4f.a8611",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-l3network-network-id\" value=\"An error occured while generating a UUID for L3-NETWORK.\" />",
+        "comments": "",
+        "x": 1588.7500076293945,
+        "y": 547.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": []
+    },
+    {
+        "id": "f2604c68.2cc79",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1014.7500076293945,
+        "y": 547.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d5946e5a.154dc",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 255.25000381469727,
+        "y": 104,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "4ec5f49c.6b21fc"
+            ]
+        ]
+    },
+    {
+        "id": "4ec5f49c.6b21fc",
+        "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": 279.25,
+        "y": 150.25,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "f579c708.74a9d8"
+            ]
+        ]
+    },
+    {
+        "id": "f579c708.74a9d8",
+        "type": "method",
+        "name": "method generate-l3network-network-id",
+        "xml": "<method rpc=\"generate-l3network-network-id\" mode=\"sync\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 365,
+        "y": 202.75,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "71096650.ece918"
+            ]
+        ]
+    },
+    {
+        "id": "3149511f.d3441e",
+        "type": "comment",
+        "name": "GENERIC-RESOURCE-API: GENERATE-L3NETWORK-NETWORK-ID",
+        "info": "",
+        "comments": "",
+        "x": 806.7500152587891,
+        "y": 110.24999809265137,
+        "z": "86afe909.dcb228",
+        "wires": []
+    },
+    {
+        "id": "71096650.ece918",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 316.75000762939453,
+        "y": 327.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "e7bd9a65.20fdd8",
+                "7ec5dc21.02fc54",
+                "29c55a03.c43e16",
+                "d535cedb.29a8b"
+            ]
+        ]
+    },
+    {
+        "id": "3ab649c5.b819f6",
+        "type": "comment",
+        "name": "LOOP UNTIL GENERATED NETWORK-ID ISN'T FOUND IN A&AI",
+        "info": "",
+        "comments": "",
+        "x": 718,
+        "y": 464.0000047683716,
+        "z": "86afe909.dcb228",
+        "wires": []
+    },
+    {
+        "id": "59df6115.cb391",
+        "type": "comment",
+        "name": "GENERATE A NETWORK-ID",
+        "info": "",
+        "comments": "",
+        "x": 581.75,
+        "y": 374.00000286102295,
+        "z": "86afe909.dcb228",
+        "wires": []
+    },
+    {
+        "id": "29c55a03.c43e16",
+        "type": "set",
+        "name": "unset: local-variables & return",
+        "xml": "<set>\n\t<parameter name=\"tmp.local-variables.generate-l3network-network-id.\" value=\"\" />\n\t<parameter name=\"tmp.return.generate-l3network-network-id.\" value=\"\" />",
+        "comments": "",
+        "x": 567.7500076293945,
+        "y": 327.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": []
+    },
+    {
+        "id": "a5a22a52.0df378",
+        "type": "comment",
+        "name": "CLEANUP LOCAL VARIABLES TO BE USED",
+        "info": "",
+        "comments": "",
+        "x": 652,
+        "y": 284.00000190734863,
+        "z": "86afe909.dcb228",
+        "wires": []
+    },
+    {
+        "id": "9f21f02f.9e3ca",
+        "type": "comment",
+        "name": "GLOBAL VARIABLES USED",
+        "info": "// RETURN VALUES\nerror-message.generate-l3network-network-id\ntmp.return.generate-l3network-network-id.uuid\n\n// LOCAL VARIABLES (erased at beginning & end of DG)\ntmp.local-variables.generate-l3network-network-id.*\ntmp.return.generate-l3network-network-id.*\n",
+        "comments": "",
+        "x": 793.2500305175781,
+        "y": 150.24999809265137,
+        "z": "86afe909.dcb228",
+        "wires": []
+    },
+    {
+        "id": "d535cedb.29a8b",
+        "type": "set",
+        "name": "unset: local-variables & return",
+        "xml": "<set>\n\t<parameter name=\"tmp.local-variables.generate-l3network-network-id.\" value=\"\" />",
+        "comments": "",
+        "x": 567.7500076293945,
+        "y": 607.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": []
+    },
+    {
+        "id": "b578cb06.12eea8",
+        "type": "comment",
+        "name": "CLEANUP LOCAL VARIABLES",
+        "info": "",
+        "comments": "",
+        "x": 609.25,
+        "y": 565.2500057220459,
+        "z": "86afe909.dcb228",
+        "wires": []
+    },
+    {
+        "id": "25b3888f.ec6cf8",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value=\"Other\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 874.7500076293945,
+        "y": 627.7500009536743,
+        "z": "86afe909.dcb228",
+        "wires": [
+            [
+                "d07d9c69.54e1d"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-panorama-name.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-panorama-name.json
new file mode 100755
index 0000000..c27eaa9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-panorama-name.json
@@ -0,0 +1,654 @@
+[
+    {
+        "id": "86ab255a.7522f8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 110.23809051513672,
+        "y": 45.23809242248535,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "678d9d6c.30b764"
+            ]
+        ]
+    },
+    {
+        "id": "678d9d6c.30b764",
+        "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": 213.14283752441406,
+        "y": 119.5238208770752,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "b2221892.cef528"
+            ]
+        ]
+    },
+    {
+        "id": "b2221892.cef528",
+        "type": "method",
+        "name": "generate-panorama-name",
+        "xml": "<method rpc='generate-panorama-name' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 203.8215560913086,
+        "y": 205.95234966278076,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "f0364dcb.e5f17"
+            ]
+        ]
+    },
+    {
+        "id": "3d24b231.0488de",
+        "type": "execute",
+        "name": "SliStringUtils - untrusted name length",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='getLength' >\n    <parameter name=\"source\" value=\"`$new-name`\" />\n    <parameter name=\"outputPath\" value=\"tmp.strlen\"/>\n  \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 619.2857666015625,
+        "y": 451.9047336578369,
+        "z": "58bca720.478948",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "209cc858.355be8",
+        "type": "switchNode",
+        "name": "switch strlen > 14",
+        "xml": "<switch test='`$tmp.strlen > 14`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 557.6191902160645,
+        "y": 506.6667060852051,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "5e19e3e9.a31dfc",
+                "f283f234.fff93"
+            ]
+        ]
+    },
+    {
+        "id": "5e19e3e9.a31dfc",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 748.0952911376953,
+        "y": 514.2856960296631,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "cc102d9.0977bd"
+            ]
+        ]
+    },
+    {
+        "id": "f283f234.fff93",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 750.0000343322754,
+        "y": 567.8571586608887,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "237a8ded.5a3e32"
+            ]
+        ]
+    },
+    {
+        "id": "f0364dcb.e5f17",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 221.6666717529297,
+        "y": 288.33328199386597,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "3d24b231.0488de",
+                "209cc858.355be8",
+                "66cd5e7f.c924a",
+                "64e4cd4b.fe6024",
+                "41133073.515b5",
+                "675c7c6.f01b184",
+                "8effe6b3.282828",
+                "67ad6570.58f12c",
+                "a3bbbbad.a464e8",
+                "5b9cfe55.47f8e",
+                "c675a56.6ee6d58",
+                "f88531c9.a42ed",
+                "969e46d2.b374b8",
+                "94f4e81f.b72c58",
+                "1956129b.dcb17d"
+            ]
+        ]
+    },
+    {
+        "id": "64e4cd4b.fe6024",
+        "type": "execute",
+        "name": "SliStringUtils - split after .",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n    <parameter name=\"original_string\" value=\"`$original-name`\" />\n    <parameter name=\"regex\" value=\"\\.\"/>\n    <parameter name=\"limit\" value=\"2\" />\n    <parameter name=\"ctx_memory_result_key\" value=\"splits\" />\n  \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 584.9999237060547,
+        "y": 365.0000514984131,
+        "z": "58bca720.478948",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "cc102d9.0977bd",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 919.9999771118164,
+        "y": 514.9999675750732,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "18e960c5.ed36bf"
+            ]
+        ]
+    },
+    {
+        "id": "237a8ded.5a3e32",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 918.3332824707031,
+        "y": 569.9999866485596,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "433f13a6.865dec"
+            ]
+        ]
+    },
+    {
+        "id": "433f13a6.865dec",
+        "type": "set",
+        "name": "set newname",
+        "xml": "<set>\n<parameter name='new-name' value='`$new-name`' />\n",
+        "comments": "",
+        "x": 1111.666893005371,
+        "y": 568.3333539962769,
+        "z": "58bca720.478948",
+        "wires": []
+    },
+    {
+        "id": "66cd5e7f.c924a",
+        "type": "set",
+        "name": "set original-name",
+        "xml": "<set>\n<parameter name='original-name' value='`$security-zone-topology-operation-input.security-zone-request-input.untrusted-network-role`' />\n",
+        "comments": "",
+        "x": 563.3332672119141,
+        "y": 328.3333225250244,
+        "z": "58bca720.478948",
+        "wires": []
+    },
+    {
+        "id": "ea3b507a.625f2",
+        "type": "set",
+        "name": "set newname",
+        "xml": "<set>\n<parameter name='new-name' value='`$splits[1]`' />\n",
+        "comments": "",
+        "x": 991.666576385498,
+        "y": 380.6666660308838,
+        "z": "58bca720.478948",
+        "wires": []
+    },
+    {
+        "id": "41133073.515b5",
+        "type": "switchNode",
+        "name": "switch splits length",
+        "xml": "<switch test='`$splits_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 566.666633605957,
+        "y": 404.99998664855957,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "f70ab86.5576d48",
+                "a0a0b61d.244a98",
+                "41e61d00.f9cea4"
+            ]
+        ]
+    },
+    {
+        "id": "f70ab86.5576d48",
+        "type": "outcome",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 814.9999961853027,
+        "y": 350.0000400543213,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "d7fc706c.8b686"
+            ]
+        ]
+    },
+    {
+        "id": "a0a0b61d.244a98",
+        "type": "outcome",
+        "name": "outcome 2",
+        "xml": "<outcome value='2'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 814.999927520752,
+        "y": 379.99999809265137,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "ea3b507a.625f2"
+            ]
+        ]
+    },
+    {
+        "id": "d7fc706c.8b686",
+        "type": "set",
+        "name": "set newname",
+        "xml": "<set>\n<parameter name='new-name' value='`$splits[0]`' />\n",
+        "comments": "",
+        "x": 988.3331985473633,
+        "y": 345.00002574920654,
+        "z": "58bca720.478948",
+        "wires": []
+    },
+    {
+        "id": "41e61d00.f9cea4",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 801.6666374206543,
+        "y": 413.3333396911621,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "f60e104a.d022b"
+            ]
+        ]
+    },
+    {
+        "id": "f60e104a.d022b",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Unexpected network role used for panorama naming' />\n",
+        "comments": "",
+        "x": 993.333324432373,
+        "y": 413.3333559036255,
+        "z": "58bca720.478948",
+        "wires": []
+    },
+    {
+        "id": "18e960c5.ed36bf",
+        "type": "execute",
+        "name": "SliStringUtils - 14 len substring",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring' >\n    <parameter name=\"string\" value=\"`$new-name`\" />\n    <parameter name=\"result\" value=\"new-name\"/>\n    <parameter name=\"begin-index\" value=\"0\" />\n    <parameter name=\"end-index\" value=\"14\" />\n  \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1168.3332061767578,
+        "y": 503.33331966400146,
+        "z": "58bca720.478948",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f88531c9.a42ed",
+        "type": "execute",
+        "name": "SliStringUtils - untrusted name length",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='getLength' >\n    <parameter name=\"source\" value=\"`$new-name`\" />\n    <parameter name=\"outputPath\" value=\"tmp.strlen\"/>\n  \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 618.3332824707031,
+        "y": 799.9999866485596,
+        "z": "58bca720.478948",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "969e46d2.b374b8",
+        "type": "switchNode",
+        "name": "switch strlen > 14",
+        "xml": "<switch test='`$tmp.strlen > 14`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 556.6667060852051,
+        "y": 854.7619590759277,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "2eb1e963.8f58a6",
+                "af892ecf.e3fc8"
+            ]
+        ]
+    },
+    {
+        "id": "2eb1e963.8f58a6",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 747.1428070068359,
+        "y": 862.3809490203857,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "22bdc134.447f8e"
+            ]
+        ]
+    },
+    {
+        "id": "af892ecf.e3fc8",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 749.047550201416,
+        "y": 915.9524116516113,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "b9e7b020.1beb"
+            ]
+        ]
+    },
+    {
+        "id": "5b9cfe55.47f8e",
+        "type": "execute",
+        "name": "SliStringUtils - split after .",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n    <parameter name=\"original_string\" value=\"`$original-name`\" />\n    <parameter name=\"regex\" value=\"\\.\"/>\n    <parameter name=\"limit\" value=\"2\" />\n    <parameter name=\"ctx_memory_result_key\" value=\"splits\" />\n  \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 584.0474395751953,
+        "y": 713.0953044891357,
+        "z": "58bca720.478948",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "22bdc134.447f8e",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 919.047492980957,
+        "y": 863.0952205657959,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "4f716d08.83a7d4"
+            ]
+        ]
+    },
+    {
+        "id": "b9e7b020.1beb",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 917.3807983398438,
+        "y": 918.0952396392822,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "b4fb00b0.5d6e"
+            ]
+        ]
+    },
+    {
+        "id": "b4fb00b0.5d6e",
+        "type": "set",
+        "name": "set newname",
+        "xml": "<set>\n<parameter name='new-name' value='`$new-name`' />\n",
+        "comments": "",
+        "x": 1110.7144088745117,
+        "y": 916.4286069869995,
+        "z": "58bca720.478948",
+        "wires": []
+    },
+    {
+        "id": "a3bbbbad.a464e8",
+        "type": "set",
+        "name": "set original-name",
+        "xml": "<set>\n<parameter name='original-name' value='`$security-zone-topology-operation-input.security-zone-request-input.trusted-network-role`' />\n",
+        "comments": "",
+        "x": 562.3807830810547,
+        "y": 676.4285755157471,
+        "z": "58bca720.478948",
+        "wires": []
+    },
+    {
+        "id": "a908f194.577e2",
+        "type": "set",
+        "name": "set newname",
+        "xml": "<set>\n<parameter name='new-name' value='`$splits[1]`' />\n",
+        "comments": "",
+        "x": 990.7140922546387,
+        "y": 728.7619190216064,
+        "z": "58bca720.478948",
+        "wires": []
+    },
+    {
+        "id": "c675a56.6ee6d58",
+        "type": "switchNode",
+        "name": "switch splits length",
+        "xml": "<switch test='`$splits_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 565.7141494750977,
+        "y": 753.0952396392822,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "db39b4ca.681638",
+                "b28e57b5.d7f178",
+                "97c9e8ea.f63768"
+            ]
+        ]
+    },
+    {
+        "id": "db39b4ca.681638",
+        "type": "outcome",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 814.0475120544434,
+        "y": 698.095293045044,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "c17629d6.f61e28"
+            ]
+        ]
+    },
+    {
+        "id": "b28e57b5.d7f178",
+        "type": "outcome",
+        "name": "outcome 2",
+        "xml": "<outcome value='2'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 814.0474433898926,
+        "y": 728.095251083374,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "a908f194.577e2"
+            ]
+        ]
+    },
+    {
+        "id": "c17629d6.f61e28",
+        "type": "set",
+        "name": "set newname",
+        "xml": "<set>\n<parameter name='new-name' value='`$splits[0]`' />\n",
+        "comments": "",
+        "x": 987.3807563781738,
+        "y": 693.0952663421631,
+        "z": "58bca720.478948",
+        "wires": []
+    },
+    {
+        "id": "97c9e8ea.f63768",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 800.7141532897949,
+        "y": 761.4285926818848,
+        "z": "58bca720.478948",
+        "wires": [
+            [
+                "6cb0731e.f3e13c"
+            ]
+        ]
+    },
+    {
+        "id": "6cb0731e.f3e13c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Unexpected network role used for panorama naming' />\n",
+        "comments": "",
+        "x": 992.3808403015137,
+        "y": 761.4286088943481,
+        "z": "58bca720.478948",
+        "wires": []
+    },
+    {
+        "id": "4f716d08.83a7d4",
+        "type": "execute",
+        "name": "SliStringUtils - 14 len substring",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring' >\n    <parameter name=\"string\" value=\"`$new-name`\" />\n    <parameter name=\"result\" value=\"new-name\"/>\n    <parameter name=\"begin-index\" value=\"0\" />\n    <parameter name=\"end-index\" value=\"14\" />\n  \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1167.3807220458984,
+        "y": 851.4285726547241,
+        "z": "58bca720.478948",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "675c7c6.f01b184",
+        "type": "set",
+        "name": "set trust and untrust sz name",
+        "xml": "<set>\n<parameter name='tmp.trust-sz' value='$TenantOAMNetworkRole_$LandingNetworkRole_T' />\n<parameter name='tmp.untrust-sz' value='$TenantOAMNetworkRole_$LandingNetworkRole_U' />\n",
+        "comments": "",
+        "x": 599.9999084472656,
+        "y": 289.999960899353,
+        "z": "58bca720.478948",
+        "wires": []
+    },
+    {
+        "id": "8effe6b3.282828",
+        "type": "execute",
+        "name": "execute SliStringUtils - replace TenantOAMNetworkRole - trust-sz",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.trust-sz`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.trust-sz\"/>\n    <parameter name=\"target\" value=\"$TenantOAMNetworkRole\"/>\n    <parameter name=\"replacement\" value=\"`$new-name`\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 706.9049072265625,
+        "y": 611.1904067993164,
+        "z": "58bca720.478948",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "94f4e81f.b72c58",
+        "type": "execute",
+        "name": "execute SliStringUtils - replace LandingNetworkRole - trust-sz",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.trust-sz`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.trust-sz\"/>\n    <parameter name=\"target\" value=\"$LandingNetworkRole\"/>\n    <parameter name=\"replacement\" value=\"`$new-name`\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 692.5240325927734,
+        "y": 985.7141342163086,
+        "z": "58bca720.478948",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1956129b.dcb17d",
+        "type": "execute",
+        "name": "execute SliStringUtils - replace LandingNetworkRole untrust-sz",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.untrust-sz`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.untrust-sz\"/>\n    <parameter name=\"target\" value=\"$LandingNetworkRole\"/>\n    <parameter name=\"replacement\" value=\"`$new-name`\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 690.6665954589844,
+        "y": 1018.8092594146729,
+        "z": "58bca720.478948",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "67ad6570.58f12c",
+        "type": "execute",
+        "name": "execute SliStringUtils - replace TenantOAMNetworkRole - untrust-sz",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.untrust-sz`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.untrust-sz\"/>\n    <parameter name=\"target\" value=\"$TenantOAMNetworkRole\"/>\n    <parameter name=\"replacement\" value=\"`$new-name`\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 711.6665954589844,
+        "y": 643.3332996368408,
+        "z": "58bca720.478948",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e32a37ab.31d3f8",
+        "type": "outcome",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 814.9999084472656,
+        "y": 316.66665840148926,
+        "z": "58bca720.478948",
+        "wires": [
+            []
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-subnets-subnet-id.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-subnets-subnet-id.json
new file mode 100755
index 0000000..fdfc9f1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-subnets-subnet-id.json
@@ -0,0 +1 @@
+[{"id":"4ebb72d6.ff1bec","type":"execute","name":"execute: generateUUID","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n\t<parameter name=\"ctx-destination\" value=\"tmp.return.generate-subnets-subnet-id.uuid\" />","comments":"","outputs":1,"x":511.00390625,"y":443.50000381469727,"z":"28d7e005.9dc58","wires":[["ccc38b6a.bf2db8"]]},{"id":"ccc38b6a.bf2db8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":706.7539138793945,"y":443.50000381469727,"z":"28d7e005.9dc58","wires":[["80297807.6e63d8"]]},{"id":"80297807.6e63d8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<!-- Used to work around execute node bug -->\n\t<parameter name=\"execute_failure\" value=\"false\" />\n\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-l3network-network-id\" value=\"An error occured while generating a UUID for L3-NETWORK.\" />","comments":"","x":871.7539138793945,"y":443.7500009536743,"z":"28d7e005.9dc58","wires":[]},{"id":"98f4a42f.f0aa68","type":"get-resource","name":"Query AnAI -  subnets","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"subnet\"\n\t\tkey=\"l3-network.network-id = $tmp.local.network-id \n\t\t\tAND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid\"\n\t\tlocal-only=\"false\"\n\t\tpfx=\"tmp.local-variables.generate-subnets-subnet-id.SUBNETS\" >","comments":"","outputs":1,"x":636.2539138793945,"y":534.7500009536743,"z":"28d7e005.9dc58","wires":[["250376fc.66acba","9aa930de.201cb","fabd9e45.fdd79","fcad957.1d68c68"]]},{"id":"39a85d44.1f0ee2","type":"for","name":"for s: true","xml":"<for atomic=\"true\" index=\"s\" start=\"0\" end=\"1\" >","comments":"","outputs":1,"x":460.25391387939453,"y":534.7500009536743,"z":"28d7e005.9dc58","wires":[["98f4a42f.f0aa68"]]},{"id":"250376fc.66acba","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":840.7539138793945,"y":534.7500009536743,"z":"28d7e005.9dc58","wires":[["ab106203.c8209"]]},{"id":"9aa930de.201cb","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":836.7539138793945,"y":614.7500009536743,"z":"28d7e005.9dc58","wires":[["a28b9983.a32208"]]},{"id":"fabd9e45.fdd79","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":845.7539138793945,"y":574.7500009536743,"z":"28d7e005.9dc58","wires":[["6419a706.22a868"]]},{"id":"a28b9983.a32208","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-subnets-subnet-id\" value=\"`'An error occured while checking if a generated subnets-subnet-id was unique. subnet-id = ' + $tmp.local-variables.generate-subnets-subnet-id.uuid`\" />","comments":"","x":1003.2539215087891,"y":639.7500066757202,"z":"28d7e005.9dc58","wires":[]},{"id":"ab106203.c8209","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":998.7539138793945,"y":534.7500009536743,"z":"28d7e005.9dc58","wires":[["7430890a.e8ebd8","32538d2e.99dd82"]]},{"id":"7430890a.e8ebd8","type":"set","name":"set: ...local...is-unique = 0","xml":"<set>\n\t<parameter name=\"tmp.local-variables.generate-subnets-subnet-id.is-unique\" value=\"0\" />","comments":"","x":1216.2539672851562,"y":534.7500066757202,"z":"28d7e005.9dc58","wires":[]},{"id":"32538d2e.99dd82","type":"execute","name":"execute: generateUUID","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n\t<parameter name=\"ctx-destination\" value=\"tmp.return.generate-subnets-subnet-id.uuid\" />","comments":"","outputs":1,"x":1207.2539749145508,"y":574.7500381469727,"z":"28d7e005.9dc58","wires":[["5842cf96.43c34"]]},{"id":"5842cf96.43c34","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1396.7539138793945,"y":574.7500009536743,"z":"28d7e005.9dc58","wires":[["3fc57a3a.796596"]]},{"id":"3fc57a3a.796596","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-subnets-subnet-id\" value=\"An error occured while generating a UUID for SUBNETS.\" />","comments":"","x":1550.7539138793945,"y":574.7500009536743,"z":"28d7e005.9dc58","wires":[]},{"id":"6419a706.22a868","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":976.7539138793945,"y":574.7500009536743,"z":"28d7e005.9dc58","wires":[[]]},{"id":"3fe1a03a.3fae4","type":"dgstart","name":"DGSTART","outputs":1,"x":217.25391006469727,"y":131,"z":"28d7e005.9dc58","wires":[["9f41e76f.77e068"]]},{"id":"9f41e76f.77e068","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":241.25390625,"y":177.25,"z":"28d7e005.9dc58","wires":[["a001ce75.e6d8e"]]},{"id":"a001ce75.e6d8e","type":"method","name":"method generate-subnets-subnet-id","xml":"<method rpc=\"generate-subnets-subnet-id\" mode=\"sync\">","comments":"","outputs":1,"x":327.00390625,"y":229.75,"z":"28d7e005.9dc58","wires":[["71e8f6e6.9eb8a8"]]},{"id":"9e2de549.ffe678","type":"comment","name":"VNF-API: GENERATE-SUBNETS-SUBNET-ID","info":"","comments":"","x":768.7539215087891,"y":137.24999809265137,"z":"28d7e005.9dc58","wires":[]},{"id":"71e8f6e6.9eb8a8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":278.75391387939453,"y":354.7500009536743,"z":"28d7e005.9dc58","wires":[["4ebb72d6.ff1bec","91e0fb46.daf918","7ad9adf7.13cf04","39a85d44.1f0ee2"]]},{"id":"70a1888b.537578","type":"comment","name":"LOOP UNTIL GENERATED NETWORK-ID ISN'T FOUND IN A&AI","info":"","comments":"","x":680.00390625,"y":491.0000047683716,"z":"28d7e005.9dc58","wires":[]},{"id":"60051b45.3530e4","type":"comment","name":"GENERATE A SUBNET-ID","info":"","comments":"","x":543.75390625,"y":401.00000286102295,"z":"28d7e005.9dc58","wires":[]},{"id":"91e0fb46.daf918","type":"set","name":"unset: local-variables & return","xml":"<set>\n\t<parameter name=\"tmp.local-variables.generate-subnets-subnet-id.\" value=\"\" />\n\t<parameter name=\"tmp.return.generate-subnets-subnet-id.\" value=\"\" />","comments":"","x":529.7539138793945,"y":354.7500009536743,"z":"28d7e005.9dc58","wires":[]},{"id":"365f8dfe.0527b2","type":"comment","name":"CLEANUP LOCAL VARIABLES TO BE USED","info":"","comments":"","x":614.00390625,"y":311.00000190734863,"z":"28d7e005.9dc58","wires":[]},{"id":"a3c943fd.bba14","type":"comment","name":"GLOBAL VARIABLES USED","info":"// RETURN VALUES\nerror-message.generate-generic-vnf-id\ntmp.return.generate-generic-vnf-id.uuid\n\n// LOCAL VARIABLES (erased at beginning & end of DG)\ntmp.local-variables.generate-generic-vnf-id.*\ntmp.local-variables.generate-generic-vnf-id.GENERIC_VNF.*","comments":"","x":755.2539367675781,"y":177.24999809265137,"z":"28d7e005.9dc58","wires":[]},{"id":"7ad9adf7.13cf04","type":"set","name":"unset: local-variables & return","xml":"<set>\n\t<parameter name=\"tmp.local-variables.generate-subnets-subnet-id.\" value=\"\" />","comments":"","x":529.7539138793945,"y":634.7500009536743,"z":"28d7e005.9dc58","wires":[]},{"id":"5b3c94ff.b7624c","type":"comment","name":"CLEANUP LOCAL VARIABLES","info":"","comments":"","x":571.25390625,"y":592.2500057220459,"z":"28d7e005.9dc58","wires":[]},{"id":"fcad957.1d68c68","type":"other","name":"Other","xml":"<outcome value=\"Other\">","comments":"","outputs":1,"x":836.7539138793945,"y":654.7500009536743,"z":"28d7e005.9dc58","wires":[["a28b9983.a32208"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-unique-name.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-unique-name.json
new file mode 100755
index 0000000..ee76ebc
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-unique-name.json
@@ -0,0 +1,3695 @@
+[

+    {

+        "id": "15040625.d5f40a",

+        "type": "comment",

+        "name": "Validation of required data",

+        "info": "",

+        "comments": "",

+        "x": 1362.22216796875,

+        "y": 421.29468727111816,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "11c017ed.c4cc98",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 432.9722709655762,

+        "y": 26.69937038421631,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "9f71976e.e5c5f8"

+            ]

+        ]

+    },

+    {

+        "id": "4eedc095.04b8b",

+        "type": "method",

+        "name": "method generate-unique-name",

+        "xml": "<method rpc='generate-unique-name' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 565.8889999389648,

+        "y": 99.044602394104,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "360fc793.866bf8"

+            ]

+        ]

+    },

+    {

+        "id": "23286af8.e7fb96",

+        "type": "comment",

+        "name": "generate-unique-name",

+        "info": "Input arguments:\ngenerate-unique-name-input.index-table-name - name of INDEX table\ngenerate-unique-name-input.index-table-prefix-column - name of prefix column in above table\ngenerate-unique-name-input.name-table-name - name of table holding all generated names\ngenerate-unique-name-input.index-length - non-null digit if index should be fixed length\n\nOutput arguments:\ngenerate-unique-name-output.generated-name - generated name (null if error)\ngenerate-unique-name-output.error-message - error message (non-null if error)\n",

+        "comments": "",

+        "x": 1120.5314331054688,

+        "y": 20,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "d51fb171.df3c3",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 849.9960746765137,

+        "y": 1412.440560749599,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "aeb040b1.610fe",

+                "d5c2022c.eb55c",

+                "6937019b.7d45d",

+                "bcb4efa7.8fb4d",

+                "4d3aaea2.1682c",

+                "6c67d02f.17bf4",

+                "c51e026f.e6689",

+                "2d26f683.ab135a",

+                "f849cb78.2321f8",

+                "59510b56.12c9f4",

+                "3e63e2e.8d66c1e",

+                "c2125c33.cdb9e"

+            ]

+        ]

+    },

+    {

+        "id": "aeb040b1.610fe",

+        "type": "switchNode",

+        "name": "switch generate-unique-name-input.index-table-name",

+        "xml": "<switch test='`$generate-unique-name-input.index-table-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1298.8055572509766,

+        "y": 466.9048252105713,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "1286f8.7a830909"

+            ]

+        ]

+    },

+    {

+        "id": "1286f8.7a830909",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1628.805477142334,

+        "y": 466.9048147201538,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "c3b06eda.624f2"

+            ]

+        ]

+    },

+    {

+        "id": "c3b06eda.624f2",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.index-table-name not supplied' />\n",

+        "comments": "",

+        "x": 1802.1387977600098,

+        "y": 466.90480613708496,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "d5c2022c.eb55c",

+        "type": "switchNode",

+        "name": "switch generate-unique-name-input.index-table-prefix-column",

+        "xml": "<switch test='`$generate-unique-name-input.index-table-prefix-column`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1323.8055267333984,

+        "y": 510.23816108703613,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "8b8a2d3c.650b5"

+            ]

+        ]

+    },

+    {

+        "id": "8b8a2d3c.650b5",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1627.1387901306152,

+        "y": 510.2381401062012,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "2fce40e3.dcb3a"

+            ]

+        ]

+    },

+    {

+        "id": "2fce40e3.dcb3a",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.index-table-prefix-column not supplied' />\n",

+        "comments": "",

+        "x": 1800.4721069335938,

+        "y": 510.57148361206055,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "6937019b.7d45d",

+        "type": "switchNode",

+        "name": "switch generate-unique-name-input.name-table-type",

+        "xml": "<switch test='`$generate-unique-name-input.name-table-type`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1294.805534362793,

+        "y": 555.2381534576416,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "fe8ebb70.f12418"

+            ]

+        ]

+    },

+    {

+        "id": "fe8ebb70.f12418",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1627.1387310028076,

+        "y": 555.2381629943848,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "c450338.ed9f6d"

+            ]

+        ]

+    },

+    {

+        "id": "c450338.ed9f6d",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.name-table-type not supplied' />\n",

+        "comments": "",

+        "x": 1798.805507659912,

+        "y": 555.5714664459229,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "c51e026f.e6689",

+        "type": "get-resource",

+        "name": "get-resource current name index",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.gun.sql`\" pfx='tmp.gun.prefixdb'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1216.829387664795,

+        "y": 1114.0355405807495,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "2161e5d1.539e3a",

+                "b88e0290.6b67d",

+                "a98b0c69.c8ff5"

+            ]

+        ]

+    },

+    {

+        "id": "2161e5d1.539e3a",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1444.5198192596436,

+        "y": 1200.0594501495361,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "d996887b.f8a558"

+            ]

+        ]

+    },

+    {

+        "id": "d996887b.f8a558",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n    <parameter name=\"generate-unique-name-output.error-message\" value=\"`'Error reading the ' + $generate-unique-name-input.index-table-name + ' table'`\" />\n",

+        "comments": "",

+        "x": 1607.1389408111572,

+        "y": 1201.4881782531738,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "b684649d.306688",

+        "type": "for",

+        "name": "for idx from current index to list-end",

+        "xml": "<for index='tmp.gun.idx' start='`$tmp.gun.index-number`' end='`$tmp.gun.list-end`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1371.6627464294434,

+        "y": 1442.8571510314941,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "c4de9305.e3b5f"

+            ]

+        ]

+    },

+    {

+        "id": "bcb4efa7.8fb4d",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1134.2817420959473,

+        "y": 1442.857116154262,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "b684649d.306688",

+                "a13f9156.7cff2",

+                "187251ba.f9a6ce"

+            ]

+        ]

+    },

+    {

+        "id": "a13f9156.7cff2",

+        "type": "returnSuccess",

+        "name": "CATCH BREAK",

+        "xml": "<return status='success'>\n\n",

+        "comments": "",

+        "x": 1327.472242627825,

+        "y": 2467.2858533859253,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "4d3aaea2.1682c",

+        "type": "switchNode",

+        "name": "switch generate-unique-name-input.prefix",

+        "xml": "<switch test='`$generate-unique-name-input.prefix`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1260.4721755981445,

+        "y": 600.2381324768066,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "d42fa470.81ab78"

+            ]

+        ]

+    },

+    {

+        "id": "d42fa470.81ab78",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1627.8053646087646,

+        "y": 600.2381572723389,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "af0a5a6c.8f2da8"

+            ]

+        ]

+    },

+    {

+        "id": "af0a5a6c.8f2da8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.prefix not supplied' />\n",

+        "comments": "",

+        "x": 1800.4721412658691,

+        "y": 600.571460723877,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "6c67d02f.17bf4",

+        "type": "switchNode",

+        "name": "switch generate-unique-name-input.index-length",

+        "xml": "<switch test='`$generate-unique-name-input.index-length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1283.8055419921875,

+        "y": 735.2380743026733,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "185b25b7.55418a",

+                "208a685c.353108",

+                "d9e7f7d8.523f68",

+                "7ee1530f.9a7ebc",

+                "157b96c3.7936e9",

+                "26eda43b.2c3b5c",

+                "59274ef2.cf994"

+            ]

+        ]

+    },

+    {

+        "id": "185b25b7.55418a",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1627.1388549804688,

+        "y": 643.571460723877,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "d94c4d3c.5f17d"

+            ]

+        ]

+    },

+    {

+        "id": "157b96c3.7936e9",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1625.9007606506348,

+        "y": 918.809588432312,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "c70900c9.1665f"

+            ]

+        ]

+    },

+    {

+        "id": "208a685c.353108",

+        "type": "outcome",

+        "name": "1",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1624.0436630249023,

+        "y": 734.2857999801636,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "923d6c6a.e4f8d"

+            ]

+        ]

+    },

+    {

+        "id": "d9e7f7d8.523f68",

+        "type": "outcome",

+        "name": "2",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1624.0436477661133,

+        "y": 779.2857904434204,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "d39e047e.b0fc98"

+            ]

+        ]

+    },

+    {

+        "id": "7ee1530f.9a7ebc",

+        "type": "outcome",

+        "name": "3",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1622.3769836425781,

+        "y": 822.6191263198853,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "70f9e263.445b3c"

+            ]

+        ]

+    },

+    {

+        "id": "923d6c6a.e4f8d",

+        "type": "set",

+        "name": "set list-end = 10",

+        "xml": "<set>\n<parameter name='tmp.gun.list-end' value='10' />\n",

+        "comments": "",

+        "x": 1806.7103996276855,

+        "y": 734.2857885360718,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "d39e047e.b0fc98",

+        "type": "set",

+        "name": "set list-end = 100",

+        "xml": "<set>\n<parameter name='tmp.gun.list-end' value='100' />\n",

+        "comments": "",

+        "x": 1810.043628692627,

+        "y": 779.2857904434204,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "70f9e263.445b3c",

+        "type": "set",

+        "name": "set list-end = 1000",

+        "xml": "<set>\n<parameter name='tmp.gun.list-end' value='1000' />\n",

+        "comments": "",

+        "x": 1812.043628692627,

+        "y": 822.6191034317017,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "c70900c9.1665f",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.prefix not supplied' />\n",

+        "comments": "",

+        "x": 1796.9006843566895,

+        "y": 918.1429586410522,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "80595c6f.d370b",

+        "type": "set",

+        "name": "set new index number to 1",

+        "xml": "<set>\n<parameter name='tmp.gun.index-number' value='1' />\n",

+        "comments": "",

+        "x": 2311.0082054138184,

+        "y": 1163.4288799762726,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "d94c4d3c.5f17d",

+        "type": "set",

+        "name": "set list-end = 100000 (infinity basically)",

+        "xml": "<set>\n<parameter name='tmp.gun.list-end' value='100000' />\n",

+        "comments": "",

+        "x": 1876.1387939453125,

+        "y": 643.9048042297363,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "651d8bf.8378c74",

+        "type": "switchNode",

+        "name": "switch generate-unique-name-input.index-length",

+        "xml": "<switch test='`$generate-unique-name-input.index-length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1933.3293266296387,

+        "y": 1369.5237898145404,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "485a952f.4683ac",

+                "929353b9.9ddf2",

+                "fdae624e.d1e4d",

+                "f1fa6f3d.9cd86",

+                "c12d0b68.b45788"

+            ]

+        ]

+    },

+    {

+        "id": "485a952f.4683ac",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2217.6150703430176,

+        "y": 1220.9523973464966,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "93103f3e.f5587"

+            ]

+        ]

+    },

+    {

+        "id": "929353b9.9ddf2",

+        "type": "outcome",

+        "name": "1",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2215.948417663574,

+        "y": 1265.9524374008179,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "93103f3e.f5587"

+            ]

+        ]

+    },

+    {

+        "id": "fdae624e.d1e4d",

+        "type": "outcome",

+        "name": "2",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2215.948402404785,

+        "y": 1315.0000638961792,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "fe2daf39.916f2"

+            ]

+        ]

+    },

+    {

+        "id": "f1fa6f3d.9cd86",

+        "type": "outcome",

+        "name": "3",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2217.3770751953125,

+        "y": 1417.381145477295,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "9b7d9fc5.77d19"

+            ]

+        ]

+    },

+    {

+        "id": "93103f3e.f5587",

+        "type": "set",

+        "name": "set index-string to idx",

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

+        "comments": "",

+        "x": 2402.615219116211,

+        "y": 1239.285740852356,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "fe2daf39.916f2",

+        "type": "switchNode",

+        "name": "switch idx < 10",

+        "xml": "<switch test='`$tmp.gun.idx &lt; 10`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2382.615032196045,

+        "y": 1314.9999618530273,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "1e14c0e7.34b7bf",

+                "837fdec7.0a022"

+            ]

+        ]

+    },

+    {

+        "id": "1e14c0e7.34b7bf",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2544.281665802002,

+        "y": 1288.3333349227905,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "3fe02145.d703be"

+            ]

+        ]

+    },

+    {

+        "id": "837fdec7.0a022",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2544.281623840332,

+        "y": 1336.6666707992554,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "461425f5.d0f43c"

+            ]

+        ]

+    },

+    {

+        "id": "3fe02145.d703be",

+        "type": "set",

+        "name": "set index-string to '0' + idx",

+        "xml": "<set>\n<parameter name='tmp.gun.index-string' value=\"`'' + '0' + $tmp.gun.idx`\" />\n",

+        "comments": "",

+        "x": 2735.9484252929688,

+        "y": 1287.6665620803833,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "461425f5.d0f43c",

+        "type": "set",

+        "name": "set index-string to idx",

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

+        "comments": "",

+        "x": 2719.2816772460938,

+        "y": 1336.3332777023315,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "9b7d9fc5.77d19",

+        "type": "switchNode",

+        "name": "switch idx < 10",

+        "xml": "<switch test='`$tmp.gun.idx &lt; 10`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2385.7104110717773,

+        "y": 1415.7142734527588,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "e219ec7e.fe57c",

+                "ad55e1a8.b6075"

+            ]

+        ]

+    },

+    {

+        "id": "e219ec7e.fe57c",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2545.7103881835938,

+        "y": 1389.0476512908936,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "22b4d6dc.cf442a"

+            ]

+        ]

+    },

+    {

+        "id": "ad55e1a8.b6075",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2550.2340087890625,

+        "y": 1465.4762334823608,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "dbe69aa8.33eda8"

+            ]

+        ]

+    },

+    {

+        "id": "22b4d6dc.cf442a",

+        "type": "set",

+        "name": "set index-string to '00' + idx",

+        "xml": "<set>\n<parameter name='tmp.gun.index-string' value=\"`'' + '00' + $tmp.gun.idx`\" />\n",

+        "comments": "",

+        "x": 2740.710479736328,

+        "y": 1389.047542163304,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "dbe69aa8.33eda8",

+        "type": "switchNode",

+        "name": "switch idx < 100",

+        "xml": "<switch test='`$tmp.gun.idx &lt; 100`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2706.5673904418945,

+        "y": 1463.809594154358,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "f7ffce1d.63fe1",

+                "67fc8e98.639b9"

+            ]

+        ]

+    },

+    {

+        "id": "f7ffce1d.63fe1",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2863.567367553711,

+        "y": 1437.1429719924927,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "1c294f19.3865c1"

+            ]

+        ]

+    },

+    {

+        "id": "67fc8e98.639b9",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2863.567325592041,

+        "y": 1485.4763078689575,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "3ab4c683.87c0fa"

+            ]

+        ]

+    },

+    {

+        "id": "1c294f19.3865c1",

+        "type": "set",

+        "name": "set index-string to '0' + idx",

+        "xml": "<set>\n<parameter name='tmp.gun.index-string' value=\"`'' + '0' + $tmp.gun.idx`\" />\n",

+        "comments": "",

+        "x": 3056.2341537475586,

+        "y": 1436.8096265792847,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "3ab4c683.87c0fa",

+        "type": "set",

+        "name": "set index-string to idx",

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

+        "comments": "",

+        "x": 3040.2341384887695,

+        "y": 1485.1429300308228,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "c81549dd.4990b8",

+        "type": "set",

+        "name": "set generated-name to prefix + index-string",

+        "xml": "<set>\n<parameter name='tmp.gun.generated-name' value='`$generate-unique-name-input.prefix + $tmp.gun.index-string`' />\n",

+        "comments": "",

+        "x": 1917.329418182373,

+        "y": 1646.1904386792864,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "27f2f9ab.7e2c26",

+        "type": "comment",

+        "name": "First check from the current index to the max index",

+        "info": "",

+        "comments": "",

+        "x": 1334.9960899353027,

+        "y": 1381.1905197416033,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "4eb7a743.5209e8",

+        "type": "comment",

+        "name": "check if we've used this name before",

+        "info": "",

+        "comments": "",

+        "x": 1914.0439414978027,

+        "y": 1730.4765844345093,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "be62e7ae.90b8f8",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2021.662742614746,

+        "y": 1807.8573669706072,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "dfb2aa84.9b4598"

+            ]

+        ]

+    },

+    {

+        "id": "1d6bb1a2.44855e",

+        "type": "set",

+        "name": "set generate-unique-name-output.error-message",

+        "xml": "<set>\n<parameter name='generate-unique-name-output.error-message' value=\"`'Error reading the GENERIC_RESOURCE_NAME table'`\" />\n",

+        "comments": "",

+        "x": 2467.6149940490723,

+        "y": 1781.4286999021258,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "a5f867db.9d9558",

+        "type": "returnFailure",

+        "name": "BREAK",

+        "xml": "<return status='failure'>\n",

+        "comments": "",

+        "x": 2332.853240966797,

+        "y": 1826.428787640163,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "ad173e2b.5c512",

+        "type": "returnFailure",

+        "name": "BREAK",

+        "xml": "<return status='failure'>\n",

+        "comments": "",

+        "x": 2335.710262298584,

+        "y": 1921.3334783826556,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "c15de393.a41e9",

+        "type": "comment",

+        "name": "found one we can use",

+        "info": "",

+        "comments": "",

+        "x": 2153.5677185058594,

+        "y": 1852.381400517055,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "2d26f683.ab135a",

+        "type": "switchNode",

+        "name": "switch generate-unique-name-output.error-message",

+        "xml": "<switch test='`$generate-unique-name-output.error-message`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1209.5437147957937,

+        "y": 2679.2858324050903,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "77705736.9ef7c8",

+                "68085745.a74d48"

+            ]

+        ]

+    },

+    {

+        "id": "77705736.9ef7c8",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1482.8771231515066,

+        "y": 2652.6190843582153,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "bdffcfcf.9486c"

+            ]

+        ]

+    },

+    {

+        "id": "bdffcfcf.9486c",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1617.8771231515066,

+        "y": 2652.6190843582153,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "68085745.a74d48",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1482.8770888192312,

+        "y": 2702.6191053390503,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "2c4c0bf4.4ba724"

+            ]

+        ]

+    },

+    {

+        "id": "2c4c0bf4.4ba724",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n",

+        "comments": "",

+        "x": 1632.8770888192312,

+        "y": 2702.6191053390503,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "f849cb78.2321f8",

+        "type": "switchNode",

+        "name": "switch found-flag",

+        "xml": "<switch test='`$tmp.gun.found-flag`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1101.5437605721609,

+        "y": 3033.571455001831,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "f2e8b24d.e7494",

+                "c4268ba7.916128"

+            ]

+        ]

+    },

+    {

+        "id": "f2e8b24d.e7494",

+        "type": "outcome",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1275.877100263323,

+        "y": 3033.5714559555054,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "db1278f8.147038"

+            ]

+        ]

+    },

+    {

+        "id": "b4aa117c.62303",

+        "type": "set",

+        "name": "set generate-unique-name-output.generated-name",

+        "xml": "<set>\n<parameter name='generate-unique-name-output.generated-name' value='`$tmp.gun.generated-name`' />\n",

+        "comments": "",

+        "x": 1746.5437147957937,

+        "y": 2878.5717420578003,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "144ff8a5.06a137",

+        "type": "returnSuccess",

+        "name": "return success",

+        "xml": "<return status='success'>\n",

+        "comments": "",

+        "x": 1628.591284070696,

+        "y": 3215.952536582947,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "db1278f8.147038",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1427.5437300545827,

+        "y": 3032.904870033264,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "b4aa117c.62303",

+                "58767fb5.799f",

+                "7332878a.b6d298",

+                "144ff8a5.06a137",

+                "b3a55875.754e68"

+            ]

+        ]

+    },

+    {

+        "id": "3d4b23e4.f03d2c",

+        "type": "set",

+        "name": "set index-exists flag to false",

+        "xml": "<set>\n<parameter name='tmp.gun.index-exists' value='false' />\n",

+        "comments": "",

+        "x": 1778.8055992126465,

+        "y": 1080.8929452896118,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "7b63453a.f976cc",

+        "type": "set",

+        "name": "set index-exists flag to true",

+        "xml": "<set>\n<parameter name='tmp.gun.index-exists' value='true' />\n",

+        "comments": "",

+        "x": 1777.448543548584,

+        "y": 984.8214712142944,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "f97c717e.aeece",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1584.1628150939941,

+        "y": 1006.2500772476196,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "7b63453a.f976cc",

+                "dc9a064f.20c918"

+            ]

+        ]

+    },

+    {

+        "id": "58767fb5.799f",

+        "type": "switchNode",

+        "name": "switch index-exists",

+        "xml": "<switch test='`$tmp.gun.index-exists`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1642.3057234627859,

+        "y": 3010.714743614197,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "6a0af996.974498",

+                "6c8e2cbe.78d944"

+            ]

+        ]

+    },

+    {

+        "id": "6a0af996.974498",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1820.8770888192312,

+        "y": 2986.4290113449097,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "87bbd73a.280a98"

+            ]

+        ]

+    },

+    {

+        "id": "6c8e2cbe.78d944",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1820.8771040780202,

+        "y": 3033.571936607361,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "784e1241.16399c"

+            ]

+        ]

+    },

+    {

+        "id": "9bc6db3a.e853b8",

+        "type": "save",

+        "name": "save (update) name index",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.gun.sql`\" pfx='pfx'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2216.591413770403,

+        "y": 2987.857427597046,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "3aaf9849.6999f8"

+            ]

+        ]

+    },

+    {

+        "id": "853b68e5.628e58",

+        "type": "save",

+        "name": "save (insert) name index",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.gun.sql`\" pfx='pfx'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2209.4483931405202,

+        "y": 3082.1428956985474,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "8c884666.ad49c8"

+            ]

+        ]

+    },

+    {

+        "id": "3aaf9849.6999f8",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2409.4486143929616,

+        "y": 2987.857446670532,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "b2adf596.b14dc8"

+            ]

+        ]

+    },

+    {

+        "id": "8c884666.ad49c8",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2406.591184888567,

+        "y": 3080.7144117355347,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "a521b607.e28cf8"

+            ]

+        ]

+    },

+    {

+        "id": "7332878a.b6d298",

+        "type": "save",

+        "name": "save (insert) generated name",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.gun.sql`\" pfx='pfx'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1676.734319959368,

+        "y": 3169.2857179641724,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "ecbc8e26.1fa38"

+            ]

+        ]

+    },

+    {

+        "id": "ecbc8e26.1fa38",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1886.734251294817,

+        "y": 3169.2857694625854,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "1f5bf102.8c12af"

+            ]

+        ]

+    },

+    {

+        "id": "1f5bf102.8c12af",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n    <parameter name=\"generate-unique-name-output.error-message\" value=\"Failed insert into GENERIC_RESOURCE_NAME table\" />\n",

+        "comments": "",

+        "x": 2041.020067487444,

+        "y": 3169.285788536072,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "59510b56.12c9f4",

+        "type": "set",

+        "name": "set sql statement",

+        "xml": "<set>\n<parameter name='tmp.gun.sql' value=\"`'SELECT * from ' + $generate-unique-name-input.index-table-name\n+ ' WHERE ' + $generate-unique-name-input.index-table-prefix-column + ' = '\n+ '$generate-unique-name-input.prefix'`\" />\n",

+        "comments": "",

+        "x": 1172.734218597412,

+        "y": 964.8215706348419,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "c4de9305.e3b5f",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1613.805606842041,

+        "y": 1442.4286302839007,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "651d8bf.8378c74",

+                "c81549dd.4990b8",

+                "5cfa637b.4338bc",

+                "a3abe6b2.a53fb8"

+            ]

+        ]

+    },

+    {

+        "id": "dfb2aa84.9b4598",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2174.0437393188477,

+        "y": 1807.381286076137,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "1d6bb1a2.44855e",

+                "a5f867db.9d9558"

+            ]

+        ]

+    },

+    {

+        "id": "87bbd73a.280a98",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1998.1629011971609,

+        "y": 2963.571539878845,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "5830bf50.31dae",

+                "9bc6db3a.e853b8"

+            ]

+        ]

+    },

+    {

+        "id": "784e1241.16399c",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1995.305753980364,

+        "y": 3059.285858154297,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "853b68e5.628e58",

+                "88572550.cad9b8"

+            ]

+        ]

+    },

+    {

+        "id": "5830bf50.31dae",

+        "type": "set",

+        "name": "set sql statement",

+        "xml": "<set>\n<parameter name='tmp.gun.sql' value=\"`'update ' + $generate-unique-name-input.index-table-name\n+ ' set index_number = ' + $tmp.gun.index-string + ' where '\n+ $generate-unique-name-input.index-table-prefix-column\n+ ' = $generate-unique-name-input.prefix'`\" />\n",

+        "comments": "",

+        "x": 2186.7341826302663,

+        "y": 2939.285511493683,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "88572550.cad9b8",

+        "type": "set",

+        "name": "set sql statement",

+        "xml": "<set>\n<parameter name='tmp.gun.sql' value=\"`'insert into ' + $generate-unique-name-input.index-table-name\n+ '(' + $generate-unique-name-input.index-table-prefix-column + ', index_number) values ('\n+ ' $generate-unique-name-input.prefix , ' + $tmp.gun.index-string + ')'`\" />\n\n",

+        "comments": "",

+        "x": 2185.3057310921804,

+        "y": 3033.571328163147,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "96f6c88d.8b7e38",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2028.3294792175293,

+        "y": 1898.8097624097552,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "41d904c1.515ddc"

+            ]

+        ]

+    },

+    {

+        "id": "bf503344.2453a",

+        "type": "for",

+        "name": "for idx from 1 to current index",

+        "xml": "<for index='tmp.gun.idx' start='1' end='`$tmp.gun.index-number`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1828.1153014046804,

+        "y": 3705.5238943099976,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "d892995.bb30f68"

+            ]

+        ]

+    },

+    {

+        "id": "7c854eaa.cabde",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1614.4485479082377,

+        "y": 3705.523872920445,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "bf503344.2453a",

+                "9ffe82b8.b73ec"

+            ]

+        ]

+    },

+    {

+        "id": "9ffe82b8.b73ec",

+        "type": "returnSuccess",

+        "name": "CATCH BREAK",

+        "xml": "<return status='success'>\n\n",

+        "comments": "",

+        "x": 1779.0676939828054,

+        "y": 4280.524024963379,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "94f9f0ef.6fa0d",

+        "type": "switchNode",

+        "name": "switch generate-unique-name-input.index-length",

+        "xml": "<switch test='`$generate-unique-name-input.index-length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2375.781873975481,

+        "y": 3660.1906385421753,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "266ce65b.b0b66a",

+                "97bab24a.c840c",

+                "3d984119.5f033e",

+                "3e3c8d28.fe1a32"

+            ]

+        ]

+    },

+    {

+        "id": "266ce65b.b0b66a",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2655.781873975481,

+        "y": 3590.1906995773315,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "dfbbc1b8.5e5ce"

+            ]

+        ]

+    },

+    {

+        "id": "97bab24a.c840c",

+        "type": "outcome",

+        "name": "1",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2654.115221296038,

+        "y": 3635.190739631653,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "dfbbc1b8.5e5ce"

+            ]

+        ]

+    },

+    {

+        "id": "3d984119.5f033e",

+        "type": "outcome",

+        "name": "2",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2654.115309034075,

+        "y": 3688.5240869522095,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "deb2ba7e.8c5978"

+            ]

+        ]

+    },

+    {

+        "id": "3e3c8d28.fe1a32",

+        "type": "outcome",

+        "name": "3",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2654.1151869637624,

+        "y": 3785.1908197402954,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "eb7b9bc3.3d21f8"

+            ]

+        ]

+    },

+    {

+        "id": "dfbbc1b8.5e5ce",

+        "type": "set",

+        "name": "set index-string to idx",

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

+        "comments": "",

+        "x": 2840.7820227486745,

+        "y": 3608.524043083191,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "deb2ba7e.8c5978",

+        "type": "switchNode",

+        "name": "switch idx < 10",

+        "xml": "<switch test='`$tmp.gun.idx &lt; 10`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2820.7819388253347,

+        "y": 3688.5239849090576,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "937abb25.5405e8",

+                "5f465025.bda92"

+            ]

+        ]

+    },

+    {

+        "id": "937abb25.5405e8",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2982.4485724312917,

+        "y": 3661.857357978821,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "b0abf2f9.7e53f"

+            ]

+        ]

+    },

+    {

+        "id": "5f465025.bda92",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2982.448530469622,

+        "y": 3710.1906938552856,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "ba4422ab.99ab3"

+            ]

+        ]

+    },

+    {

+        "id": "b0abf2f9.7e53f",

+        "type": "set",

+        "name": "set index-string to '0' + idx",

+        "xml": "<set>\n<parameter name='tmp.gun.index-string' value=\"`'' + '0' + $tmp.gun.idx`\" />\n",

+        "comments": "",

+        "x": 3174.1153319222585,

+        "y": 3661.1905851364136,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "ba4422ab.99ab3",

+        "type": "set",

+        "name": "set index-string to idx",

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

+        "comments": "",

+        "x": 3157.4485838753835,

+        "y": 3709.857300758362,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "eb7b9bc3.3d21f8",

+        "type": "switchNode",

+        "name": "switch idx < 10",

+        "xml": "<switch test='`$tmp.gun.idx &lt; 10`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2822.4485228402273,

+        "y": 3783.5239477157593,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "14d2288c.c6a057",

+                "d8edd84e.af3bc8"

+            ]

+        ]

+    },

+    {

+        "id": "14d2288c.c6a057",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2982.4484999520437,

+        "y": 3756.857325553894,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "62627b5d.5978e4"

+            ]

+        ]

+    },

+    {

+        "id": "d8edd84e.af3bc8",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2984.1151564461843,

+        "y": 3831.857283592224,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "30bfdb15.2f8ad4"

+            ]

+        ]

+    },

+    {

+        "id": "62627b5d.5978e4",

+        "type": "set",

+        "name": "set index-string to '00' + idx",

+        "xml": "<set>\n<parameter name='tmp.gun.index-string' value=\"`'' + '00' + $tmp.gun.idx`\" />\n",

+        "comments": "",

+        "x": 3177.4485838753835,

+        "y": 3756.857300758362,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "30bfdb15.2f8ad4",

+        "type": "switchNode",

+        "name": "switch idx < 100",

+        "xml": "<switch test='`$tmp.gun.idx &lt; 100`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3140.4485380990163,

+        "y": 3830.190644264221,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "440bf02e.68e61",

+                "b8862f98.abf7a"

+            ]

+        ]

+    },

+    {

+        "id": "440bf02e.68e61",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3297.4485152108327,

+        "y": 3803.524022102356,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "ba35148d.b73588"

+            ]

+        ]

+    },

+    {

+        "id": "b8862f98.abf7a",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3297.448473249163,

+        "y": 3851.857357978821,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "e6bfcbc8.332388"

+            ]

+        ]

+    },

+    {

+        "id": "ba35148d.b73588",

+        "type": "set",

+        "name": "set index-string to '0' + idx",

+        "xml": "<set>\n<parameter name='tmp.gun.index-string' value=\"`'' + '0' + $tmp.gun.idx`\" />\n",

+        "comments": "",

+        "x": 3490.1153014046804,

+        "y": 3803.190676689148,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "e6bfcbc8.332388",

+        "type": "set",

+        "name": "set index-string to idx",

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

+        "comments": "",

+        "x": 3474.1152861458913,

+        "y": 3851.523980140686,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "360242d5.db658e",

+        "type": "set",

+        "name": "set generated-name to prefix + index-string",

+        "xml": "<set>\n<parameter name='tmp.gun.generated-name' value='`$generate-unique-name-input.prefix + $tmp.gun.index-string`' />\n",

+        "comments": "",

+        "x": 2373.781957898821,

+        "y": 3908.857216835022,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "b69ff8cc.8d9308",

+        "type": "comment",

+        "name": "Wrapping around - now check from 1 to the original index",

+        "info": "",

+        "comments": "",

+        "x": 1805.4486220223562,

+        "y": 3635.0002088546753,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "47e5b18f.a8b23",

+        "type": "comment",

+        "name": "check if we've used this name before",

+        "info": "",

+        "comments": "",

+        "x": 2360.4964049203054,

+        "y": 4023.857490539551,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "ef79ae3c.17c5f",

+        "type": "get-resource",

+        "name": "get-resource name",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.gun.sql`\" pfx='tmp.gun.namedb'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2298.115221296038,

+        "y": 4164.571560450962,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "5a089be5.cf97a4",

+                "66a1cd31.360d64"

+            ]

+        ]

+    },

+    {

+        "id": "5a089be5.cf97a4",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2476.4486143929616,

+        "y": 4118.857397079468,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "c2df42b8.3c5f6"

+            ]

+        ]

+    },

+    {

+        "id": "abf5ee3d.5d0ca",

+        "type": "set",

+        "name": "set generate-unique-name-output.error-message",

+        "xml": "<set>\n<parameter name='generate-unique-name-output.error-message' value=\"Error reading the GENERIC_RESOURCE_NAME table\" />\n",

+        "comments": "",

+        "x": 2922.400865827288,

+        "y": 4092.4287300109863,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "ee79f6f.5d57b08",

+        "type": "returnFailure",

+        "name": "BREAK",

+        "xml": "<return status='failure'>\n",

+        "comments": "",

+        "x": 2787.6391127450124,

+        "y": 4137.428817749023,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "cbbbd754.515278",

+        "type": "switchNode",

+        "name": "switch generate-unique-name-output.error-message",

+        "xml": "<switch test='`$generate-unique-name-output.error-message`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1760.4961912972585,

+        "y": 4388.381100654602,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "73a8a16e.756ef",

+                "4bea28c3.456028"

+            ]

+        ]

+    },

+    {

+        "id": "73a8a16e.756ef",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2033.8295996529714,

+        "y": 4361.714352607727,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "590a39c2.d91d98"

+            ]

+        ]

+    },

+    {

+        "id": "590a39c2.d91d98",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2168.8295996529714,

+        "y": 4361.714352607727,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4bea28c3.456028",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2033.829565320696,

+        "y": 4411.714373588562,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "8722b32b.fe33e"

+            ]

+        ]

+    },

+    {

+        "id": "8722b32b.fe33e",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n",

+        "comments": "",

+        "x": 2183.829565320696,

+        "y": 4411.714373588562,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "8da20e83.48444",

+        "type": "switchNode",

+        "name": "switch found-flag",

+        "xml": "<switch test='`$tmp.gun.found-flag`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1642.2104704720632,

+        "y": 4567.905009269714,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "f9025718.d4df88"

+            ]

+        ]

+    },

+    {

+        "id": "f8c693e4.938fc",

+        "type": "comment",

+        "name": "if db name is null we found an index we can use",

+        "info": "",

+        "comments": "",

+        "x": 1808.9248106820241,

+        "y": 4517.428784370422,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "f9025718.d4df88",

+        "type": "outcome",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1801.543791089739,

+        "y": 4567.90496635437,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "9c3c38a7.e59808"

+            ]

+        ]

+    },

+    {

+        "id": "8210dd08.26216",

+        "type": "set",

+        "name": "set generate-unique-name-output.generated-name",

+        "xml": "<set>\n<parameter name='generate-unique-name-output.generated-name' value='`$tmp.gun.generated-name`' />\n",

+        "comments": "",

+        "x": 2277.210455213274,

+        "y": 4516.238507270813,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "4dec686e.afd348",

+        "type": "returnSuccess",

+        "name": "return success",

+        "xml": "<return status='success'>\n\n",

+        "comments": "",

+        "x": 2160.6865065438406,

+        "y": 4855.047978401184,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "9c3c38a7.e59808",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1968.2104857308523,

+        "y": 4566.238184928894,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "8210dd08.26216",

+                "9338bb2.be33d48",

+                "b455fb93.d28c68",

+                "4dec686e.afd348",

+                "144fc795.5db808"

+            ]

+        ]

+    },

+    {

+        "id": "9338bb2.be33d48",

+        "type": "switchNode",

+        "name": "switch index-exists",

+        "xml": "<switch test='`$tmp.gun.index-exists`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2172.9724638802663,

+        "y": 4648.3815088272095,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "530cf58c.b30b3c",

+                "997dbf86.ec5ba"

+            ]

+        ]

+    },

+    {

+        "id": "530cf58c.b30b3c",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2351.5438292367116,

+        "y": 4624.095776557922,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "88dfc88f.8aa898"

+            ]

+        ]

+    },

+    {

+        "id": "997dbf86.ec5ba",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2351.5438444955007,

+        "y": 4671.2387018203735,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "ae410bc8.d50898"

+            ]

+        ]

+    },

+    {

+        "id": "66b73d5a.256d54",

+        "type": "save",

+        "name": "save (update) name index",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.gun.sql`\" pfx='pfx'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2747.2581541878835,

+        "y": 4625.524192810059,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "d51a3ac.e56a6c8"

+            ]

+        ]

+    },

+    {

+        "id": "be1fac83.ec839",

+        "type": "save",

+        "name": "save (insert) name index",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.gun.sql`\" pfx='pfx'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2740.1151335580007,

+        "y": 4719.80966091156,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "414271a5.32692"

+            ]

+        ]

+    },

+    {

+        "id": "d51a3ac.e56a6c8",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2940.115354810442,

+        "y": 4625.524211883545,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "9e2a4e5b.2a075"

+            ]

+        ]

+    },

+    {

+        "id": "9e2a4e5b.2a075",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n    <parameter name=\"generate-unique-name-output.error-message\" value=\"`'Failed to update ' + $generate-unique-name-input.index-table-name + ' table'`\" />\n",

+        "comments": "",

+        "x": 3094.401171003069,

+        "y": 4625.524230957031,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "414271a5.32692",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2937.2579253060476,

+        "y": 4718.381176948547,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "3cd4c5c8.3c566a"

+            ]

+        ]

+    },

+    {

+        "id": "3cd4c5c8.3c566a",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n    <parameter name=\"generate-unique-name-output.error-message\" value=\"`'Failed to insert record into ' + $generate-unique-name-input.index-table-name + ' table'`\" />\n",

+        "comments": "",

+        "x": 3091.5437414986745,

+        "y": 4718.381196022034,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "b455fb93.d28c68",

+        "type": "save",

+        "name": "save (insert) generated name",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.gun.sql`\" pfx='pfx'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2207.4010603768484,

+        "y": 4806.952483177185,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "5344afb8.38666"

+            ]

+        ]

+    },

+    {

+        "id": "5344afb8.38666",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2417.4009917122976,

+        "y": 4806.952534675598,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "94a9b8e7.dc94f8"

+            ]

+        ]

+    },

+    {

+        "id": "94a9b8e7.dc94f8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n    <parameter name=\"generate-unique-name-output.error-message\" value=\"Failed insert into GENERIC_RESOURCE_NAME table\" />\n",

+        "comments": "",

+        "x": 2571.6868079049245,

+        "y": 4806.9525537490845,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "d892995.bb30f68",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2070.258146558489,

+        "y": 3704.0954084396362,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "94f9f0ef.6fa0d",

+                "360242d5.db658e",

+                "ef79ae3c.17c5f",

+                "72aa4efd.c0c88",

+                "6dd3f32a.b9635c"

+            ]

+        ]

+    },

+    {

+        "id": "c2df42b8.3c5f6",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2628.829611097063,

+        "y": 4118.381316184998,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "abf5ee3d.5d0ca",

+                "ee79f6f.5d57b08"

+            ]

+        ]

+    },

+    {

+        "id": "88dfc88f.8aa898",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2528.8296416146413,

+        "y": 4601.238305091858,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "947dd966.3194a8",

+                "66b73d5a.256d54"

+            ]

+        ]

+    },

+    {

+        "id": "ae410bc8.d50898",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2525.9724943978445,

+        "y": 4696.95262336731,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "be1fac83.ec839",

+                "6a923ca1.f35424"

+            ]

+        ]

+    },

+    {

+        "id": "947dd966.3194a8",

+        "type": "set",

+        "name": "set sql statement",

+        "xml": "<set>\n<parameter name='tmp.gun.sql' value=\"`'update ' + $generate-unique-name-input.index-table-name\n+ ' set index_number = ' + $tmp.gun.index-string + ' where '\n+ $generate-unique-name-input.index-table-prefix-column\n+ ' = $generate-unique-name-input.prefix'`\" />\n",

+        "comments": "",

+        "x": 2717.400923047747,

+        "y": 4576.952276706696,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "6a923ca1.f35424",

+        "type": "set",

+        "name": "set sql statement",

+        "xml": "<set>\n<parameter name='tmp.gun.sql' value=\"`'insert into ' + $generate-unique-name-input.index-table-name\n+ '(' + $generate-unique-name-input.index-table-prefix-column + ', index_number) values ('\n+ ' $generate-unique-name-input.prefix , ' + $tmp.gun.index-string + ')'`\" />\n\n",

+        "comments": "",

+        "x": 2715.972471509661,

+        "y": 4671.23809337616,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "66a1cd31.360d64",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2483.115350995745,

+        "y": 4209.809792518616,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "8688c71d.6f6348"

+            ]

+        ]

+    },

+    {

+        "id": "72aa4efd.c0c88",

+        "type": "set",

+        "name": "clear namedb.name",

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

+        "comments": "",

+        "x": 2298.829534803118,

+        "y": 3959.8097257614136,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "f36b5bce.ce38d8",

+        "type": "switchNode",

+        "name": "switch generate-unique-name-input.index-length",

+        "xml": "<switch test='`$generate-unique-name-input.index-length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1743.1152479989187,

+        "y": 3538.1906385421753,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "81e22e00.c515a"

+            ]

+        ]

+    },

+    {

+        "id": "81e22e00.c515a",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1998.829580579485,

+        "y": 3539.0955476760864,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "76724a0a.7f9af4"

+            ]

+        ]

+    },

+    {

+        "id": "76724a0a.7f9af4",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n    <parameter name=\"generate-unique-name-output.error-message\" value=\"We have exhausted the naming index count\" />\n",

+        "comments": "",

+        "x": 2155.9724638802663,

+        "y": 3539.0955476760864,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "9b5b9cd9.fbaa6",

+        "type": "comment",

+        "name": "if we get here when there is no index length, then we have used up all 1000",

+        "info": "",

+        "comments": "",

+        "x": 1874.5438444955007,

+        "y": 3494.809862136841,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "8e750ec7.2ae83",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n    <parameter name=\"generate-unique-name-output.error-message\" value=\"We have exhausted the naming index count\" />\n",

+        "comments": "",

+        "x": 1636.543878827776,

+        "y": 4968.095459938049,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "3e63e2e.8d66c1e",

+        "type": "set",

+        "name": "set found-flag=false",

+        "xml": "<set>\n<parameter name='tmp.gun.found-flag' value='false' />\n",

+        "comments": "",

+        "x": 1178.4484672546387,

+        "y": 1258.0357694625854,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "2276b160.a9183e",

+        "type": "set",

+        "name": "set found-flag=true",

+        "xml": "<set>\n<parameter name='tmp.gun.found-flag' value='true' />\n",

+        "comments": "",

+        "x": 2372.6151809692383,

+        "y": 1873.0953306470599,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "41d904c1.515ddc",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2179.7580032348633,

+        "y": 1899.2382749829974,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "2276b160.a9183e",

+                "ad173e2b.5c512"

+            ]

+        ]

+    },

+    {

+        "id": "19972ef5.57be21",

+        "type": "returnFailure",

+        "name": "BREAK",

+        "xml": "<return status='failure'>\n",

+        "comments": "",

+        "x": 2787.972330365862,

+        "y": 4230.952507972717,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "e21c1774.c206a8",

+        "type": "comment",

+        "name": "found one we can use",

+        "info": "",

+        "comments": "",

+        "x": 2605.8297865731374,

+        "y": 4162.000430107117,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "eaee2222.dfde9",

+        "type": "set",

+        "name": "set found-flag=true",

+        "xml": "<set>\n<parameter name='tmp.gun.found-flag' value='true' />\n",

+        "comments": "",

+        "x": 2824.8772490365163,

+        "y": 4182.714360237122,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "8688c71d.6f6348",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2632.0200713021413,

+        "y": 4208.857304573059,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "eaee2222.dfde9",

+                "19972ef5.57be21"

+            ]

+        ]

+    },

+    {

+        "id": "3e4250a5.0ac4c",

+        "type": "switchNode",

+        "name": "switch generate-unique-name-input.supplied-name",

+        "xml": "<switch test='`$generate-unique-name-input.supplied-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 732.7340965270996,

+        "y": 290.7143205915179,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "d25a80d5.4e3b8",

+                "b7f46cb8.21a18"

+            ]

+        ]

+    },

+    {

+        "id": "d25a80d5.4e3b8",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 991.3055953979492,

+        "y": 317.85711615426203,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "d51fb171.df3c3"

+            ]

+        ]

+    },

+    {

+        "id": "b7f46cb8.21a18",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 991.3055725097656,

+        "y": 259.7142862592425,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "12ab5681.ce04d9"

+            ]

+        ]

+    },

+    {

+        "id": "130234ee.46d2ab",

+        "type": "switchNode",

+        "name": "switch generate-unique-name-input.name-table-type",

+        "xml": "<switch test='`$generate-unique-name-input.name-table-type`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1460.5912437438965,

+        "y": 196.42856734139582,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "15992563.c8c55b"

+            ]

+        ]

+    },

+    {

+        "id": "15992563.c8c55b",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1793.9244403839111,

+        "y": 196.42857687813898,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "47420284.6ade7c"

+            ]

+        ]

+    },

+    {

+        "id": "47420284.6ade7c",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.name-table-type not supplied' />\n",

+        "comments": "",

+        "x": 1965.5912170410156,

+        "y": 196.76188032967707,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "12ab5681.ce04d9",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1145.5912971496582,

+        "y": 259.2857164655413,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "130234ee.46d2ab",

+                "aabd4d90.16dd8",

+                "23a0ac.95990f54"

+            ]

+        ]

+    },

+    {

+        "id": "23a0ac.95990f54",

+        "type": "get-resource",

+        "name": "get-resource name",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.gun.sql`\" pfx='tmp.gun.namedb'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1354.1627082824707,

+        "y": 289.2857317243304,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "6d7e1700.805508",

+                "5e3c9b34.a10a74",

+                "65ca162d.6df4c8"

+            ]

+        ]

+    },

+    {

+        "id": "6d7e1700.805508",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1536.7817573547363,

+        "y": 276.42862742287775,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "2d9f6bb3.0fef44"

+            ]

+        ]

+    },

+    {

+        "id": "aabd4d90.16dd8",

+        "type": "set",

+        "name": "set sql statement",

+        "xml": "<set>\n<parameter name='tmp.gun.sql' value=\"`'SELECT * from GENERIC_RESOURCE_NAME WHERE type = $generate-unique-name-input.name-table-type'\n+ ' AND name = $generate-unique-name-input.supplied-name'`\" />\n",

+        "comments": "",

+        "x": 1347.734260559082,

+        "y": 241.6667494092669,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "5e3c9b34.a10a74",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1544.8771133422852,

+        "y": 321.6667379651751,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "ef3f7999.12f238"

+            ]

+        ]

+    },

+    {

+        "id": "2d9f6bb3.0fef44",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='generate-unique-name-output.error-message' value=\"`'Error reading the ' + $generate-unique-name-input.name-table-index + ' table'`\" />\n\n",

+        "comments": "",

+        "x": 1692.7341804504395,

+        "y": 276.00003283364435,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "65ca162d.6df4c8",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1537.0198822021484,

+        "y": 363.57143156869074,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "4d68280b.2d7b18"

+            ]

+        ]

+    },

+    {

+        "id": "4d68280b.2d7b18",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='generate-unique-name-output.error-message' value=\"`'The name ' + $generate-unique-name-input.supplied-name + ' has already been used'`\" />\n\n",

+        "comments": "",

+        "x": 1692.7341194152832,

+        "y": 362.999995640346,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "6ed6588d.7a0f78",

+        "type": "comment",

+        "name": "Caller supplied name - make sure it's not already used",

+        "info": "",

+        "comments": "",

+        "x": 1387.7699127197266,

+        "y": 154.1428575515747,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "ef3f7999.12f238",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1694.1628074645996,

+        "y": 322.1428446088519,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "553234b3.8d5a7c",

+                "be029280.19e4b"

+            ]

+        ]

+    },

+    {

+        "id": "be029280.19e4b",

+        "type": "save",

+        "name": "save (insert) generated name",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.gun.sql`\" pfx='pfx'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1934.1628074645996,

+        "y": 346.42858069283625,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "94aa6f8b.9aaf4"

+            ]

+        ]

+    },

+    {

+        "id": "94aa6f8b.9aaf4",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2144.162738800049,

+        "y": 346.42863219124933,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "98e91b64.eafea8"

+            ]

+        ]

+    },

+    {

+        "id": "98e91b64.eafea8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name=\"generate-unique-name-output.error-message\" value=\"Failed insert into GENERIC_RESOURCE_NAME table\" />\n",

+        "comments": "",

+        "x": 2298.448554992676,

+        "y": 346.42865126473566,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "553234b3.8d5a7c",

+        "type": "set",

+        "name": "set sql statement",

+        "xml": "<set>\n<parameter name='tmp.gun.sql' value=\"`'insert into GENERIC_RESOURCE_NAME values ( '\n+ ' $generate-unique-name-input.name-table-type , $generate-unique-name-input.supplied-name , null , null, $generate-unique-name-input.service-instance-id )'`\" />\n\n",

+        "comments": "",

+        "x": 1894.1627388000488,

+        "y": 296.4287580762591,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "b3a55875.754e68",

+        "type": "set",

+        "name": "set sql statement",

+        "xml": "<set>\n<parameter name='tmp.gun.sql' \n\tvalue=\"`'insert into GENERIC_RESOURCE_NAME values ( $generate-unique-name-input.name-table-type , $tmp.gun.generated-name , $generate-unique-name-input.prefix , ' + $tmp.gun.index-string + ' , $tmp.gun.transient )'`\" />\n\n",

+        "comments": "",

+        "x": 1638.1627791268484,

+        "y": 3122.857078552246,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "6dd3f32a.b9635c",

+        "type": "set",

+        "name": "set sql statement",

+        "xml": "<set>\n<parameter name='tmp.gun.sql' value=\"`'SELECT * from GENERIC_RESOURCE_NAME WHERE type = $generate-unique-name-input.name-table-type'\n+ ' AND name = $tmp.gun.generated-name'`\" />\n",

+        "comments": "",

+        "x": 2292.2581084115163,

+        "y": 4075.2382822036743,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "144fc795.5db808",

+        "type": "set",

+        "name": "set sql statement",

+        "xml": "<set>\n<parameter name='tmp.gun.sql' \n\tvalue=\"`'insert into GENERIC_RESOURCE_NAME values ( $generate-unique-name-input.name-table-type , $tmp.gun.generated-name , $generate-unique-name-input.prefix , ' + $tmp.gun.index-string + ' , $tmp.gun.transient )'`\" />\n\n",

+        "comments": "",

+        "x": 2167.972303662981,

+        "y": 4759.523810386658,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "b2adf596.b14dc8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n    <parameter name=\"generate-unique-name-output.error-message\" value=\"`'Failed to update ' + $generate-unique-name-input.index-table-name + ' table'`\" />\n",

+        "comments": "",

+        "x": 2561.019964490618,

+        "y": 2987.142795562744,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "a521b607.e28cf8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n    <parameter name=\"generate-unique-name-output.error-message\" value=\"`'Failed to insert record into ' + $generate-unique-name-input.index-table-name + ' table'`\" />\n",

+        "comments": "",

+        "x": 2558.1625769478933,

+        "y": 3080.4285764694214,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "c4268ba7.916128",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1280.1151068551198,

+        "y": 3397.8571519851685,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "59148c70.cdee34"

+            ]

+        ]

+    },

+    {

+        "id": "59148c70.cdee34",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1430.9485152108327,

+        "y": 4009.523675918579,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "f36b5bce.ce38d8",

+                "7c854eaa.cabde",

+                "cbbbd754.515278",

+                "8da20e83.48444",

+                "8e750ec7.2ae83",

+                "974e3eea.a57fc"

+            ]

+        ]

+    },

+    {

+        "id": "a98b0c69.c8ff5",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1445.0913696289062,

+        "y": 1005.5357429981232,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "f97c717e.aeece"

+            ]

+        ]

+    },

+    {

+        "id": "b88e0290.6b67d",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1451.6628875732422,

+        "y": 1112.1785898208618,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "4201eca6.c7d3f4"

+            ]

+        ]

+    },

+    {

+        "id": "4201eca6.c7d3f4",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1583.091438293457,

+        "y": 1111.607195854187,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "3d4b23e4.f03d2c",

+                "e19f8c74.cb7de"

+            ]

+        ]

+    },

+    {

+        "id": "a3abe6b2.a53fb8",

+        "type": "set",

+        "name": "set sql statement",

+        "xml": "<set>\n<parameter name='tmp.gun.sql' value=\"`'SELECT * from GENERIC_RESOURCE_NAME WHERE type = $generate-unique-name-input.name-table-type'\n+ ' AND name = $tmp.gun.generated-name'`\" />\n",

+        "comments": "",

+        "x": 1837.9365768432617,

+        "y": 1771.428593635559,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "5cfa637b.4338bc",

+        "type": "get-resource",

+        "name": "get-resource name",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.gun.sql`\" pfx='tmp.gun.namedb'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1839.3651847839355,

+        "y": 1858.5715169906616,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "be62e7ae.90b8f8",

+                "96f6c88d.8b7e38"

+            ]

+        ]

+    },

+    {

+        "id": "360fc793.866bf8",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 431.68655014038086,

+        "y": 265.00000381469727,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "3e4250a5.0ac4c",

+                "dcbeacf.6f2ab5"

+            ]

+        ]

+    },

+    {

+        "id": "dcbeacf.6f2ab5",

+        "type": "set",

+        "name": "clear variables",

+        "xml": "<set>\n<parameter name='generate-unique-name-output.error-message' value='' />\n<parameter name='generate-unique-name-output.generated-name' value='' />\n",

+        "comments": "",

+        "x": 619.0079803466797,

+        "y": 242.8571424484253,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "26eda43b.2c3b5c",

+        "type": "outcome",

+        "name": "0",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1624.1148872375488,

+        "y": 690.3571691513062,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "e3969b91.7deb58"

+            ]

+        ]

+    },

+    {

+        "id": "e3969b91.7deb58",

+        "type": "set",

+        "name": "set list-end = 0",

+        "xml": "<set>\n<parameter name='tmp.gun.list-end' value='0' />\n",

+        "comments": "",

+        "x": 1813.7815322875977,

+        "y": 690.3571462631226,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "187251ba.f9a6ce",

+        "type": "switchNode",

+        "name": "switch tmp.gun.noindex-flag",

+        "xml": "<switch test='`$tmp.gun.noindex-flag`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1388.6150038582937,

+        "y": 2054.000086784363,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "47d30b82.5fa434"

+            ]

+        ]

+    },

+    {

+        "id": "dc9a064f.20c918",

+        "type": "switchNode",

+        "name": "switch generate-unique-name-input.index-length",

+        "xml": "<switch test='`$generate-unique-name-input.index-length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1844.9008140563965,

+        "y": 1030.4285879135132,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "35b6590.63450a8",

+                "7a0d894c.1efd48"

+            ]

+        ]

+    },

+    {

+        "id": "35b6590.63450a8",

+        "type": "outcome",

+        "name": "0",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2111.1508140563965,

+        "y": 1058.6785898208618,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "ca199039.4ea94"

+            ]

+        ]

+    },

+    {

+        "id": "7a0d894c.1efd48",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2112.650810241699,

+        "y": 998.6785879135132,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "5e88e850.5de788"

+            ]

+        ]

+    },

+    {

+        "id": "5e88e850.5de788",

+        "type": "set",

+        "name": "increment index number",

+        "xml": "<set>\n<parameter name='tmp.gun.index-number' value='`$tmp.gun.prefixdb.index-number + 1`' />\n",

+        "comments": "",

+        "x": 2305.150810241699,

+        "y": 998.4285879135132,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "85418744.04a698",

+        "type": "set",

+        "name": "set  index number to 0",

+        "xml": "<set>\n<parameter name='tmp.gun.index-number' value='0' />\n",

+        "comments": "",

+        "x": 2449.1510581970215,

+        "y": 1060.4285879135132,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "e19f8c74.cb7de",

+        "type": "switchNode",

+        "name": "switch generate-unique-name-input.index-length",

+        "xml": "<switch test='`$generate-unique-name-input.index-length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1842.4008140563965,

+        "y": 1141.4285898208618,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "9925306e.7b5d6",

+                "4fb0aa57.8d75b4"

+            ]

+        ]

+    },

+    {

+        "id": "4fb0aa57.8d75b4",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2112.400810241699,

+        "y": 1163.4285898208618,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "80595c6f.d370b"

+            ]

+        ]

+    },

+    {

+        "id": "9925306e.7b5d6",

+        "type": "outcome",

+        "name": "0",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2112.400833129883,

+        "y": 1107.1785457134247,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "ca199039.4ea94"

+            ]

+        ]

+    },

+    {

+        "id": "ca199039.4ea94",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2261.150806427002,

+        "y": 1085.9285879135132,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "85418744.04a698",

+                "c639252a.452078"

+            ]

+        ]

+    },

+    {

+        "id": "c639252a.452078",

+        "type": "set",

+        "name": "set noindex-flag=true",

+        "xml": "<set>\n<parameter name='tmp.gun.noindex-flag' value='true' />\n",

+        "comments": "",

+        "x": 2448.650775909424,

+        "y": 1109.4285726547241,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "4139d69a.f19178",

+        "type": "set",

+        "name": "set generated-name to prefix",

+        "xml": "<set>\n<parameter name='tmp.gun.generated-name' value='`$generate-unique-name-input.prefix`' />\n",

+        "comments": "",

+        "x": 1991.650854383196,

+        "y": 2105.428624153137,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "47d30b82.5fa434",

+        "type": "outcome",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1585.936540876116,

+        "y": 2054.000069618225,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "6400bec6.70c0b"

+            ]

+        ]

+    },

+    {

+        "id": "6400bec6.70c0b",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1737.3648970467702,

+        "y": 2054.0001916885376,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "1d2241eb.be7a9e",

+                "8c4f455f.ad7488",

+                "4139d69a.f19178",

+                "e298800b.28418"

+            ]

+        ]

+    },

+    {

+        "id": "8c4f455f.ad7488",

+        "type": "set",

+        "name": "set sql statement",

+        "xml": "<set>\n<parameter name='tmp.gun.sql' value=\"`'SELECT * from GENERIC_RESOURCE_NAME WHERE type = $generate-unique-name-input.name-table-type'\n+ ' AND name = $tmp.gun.generated-name'`\" />\n",

+        "comments": "",

+        "x": 1958.6389601571218,

+        "y": 2148.286027908325,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "1d2241eb.be7a9e",

+        "type": "get-resource",

+        "name": "get-resource name",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.gun.sql`\" pfx='tmp.gun.namedb'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1965.3533537728445,

+        "y": 2192.4287090301514,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "c3e26aa5.5a6ad8",

+                "f20ea659.abb5d8",

+                "ddda4cb5.69a3c"

+            ]

+        ]

+    },

+    {

+        "id": "c3e26aa5.5a6ad8",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2157.6509650094167,

+        "y": 2191.7145656858174,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "e6b7e26f.94d48"

+            ]

+        ]

+    },

+    {

+        "id": "f20ea659.abb5d8",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2164.3177016122,

+        "y": 2282.6669611249654,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "f1cf4980.556c18"

+            ]

+        ]

+    },

+    {

+        "id": "f1cf4980.556c18",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2347.1746297563823,

+        "y": 2282.0954637527466,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "825e78.6ae53188",

+                "caf8b992.a7b668"

+            ]

+        ]

+    },

+    {

+        "id": "caf8b992.a7b668",

+        "type": "returnFailure",

+        "name": "BREAK",

+        "xml": "<return status='failure'>\n",

+        "comments": "",

+        "x": 2503.126888820103,

+        "y": 2304.190667152405,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "825e78.6ae53188",

+        "type": "set",

+        "name": "set found-flag=true",

+        "xml": "<set>\n<parameter name='tmp.gun.found-flag' value='true' />\n",

+        "comments": "",

+        "x": 2540.0318074907573,

+        "y": 2255.952519416809,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "63ab1b54.3f87f4",

+        "type": "returnFailure",

+        "name": "BREAK",

+        "xml": "<return status='failure'>\n",

+        "comments": "",

+        "x": 2468.8414633614675,

+        "y": 2210.285986355373,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "b2a157a3.5da4b8",

+        "type": "set",

+        "name": "set generate-unique-name-output.error-message",

+        "xml": "<set>\n<parameter name='generate-unique-name-output.error-message' value=\"`'Error reading the GENERIC_RESOURCE_NAME table'`\" />\n",

+        "comments": "",

+        "x": 2603.603216443743,

+        "y": 2165.285898617336,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "e6b7e26f.94d48",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2310.0319617135183,

+        "y": 2191.238484791347,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "b2a157a3.5da4b8",

+                "63ab1b54.3f87f4"

+            ]

+        ]

+    },

+    {

+        "id": "c261792d.2d6c28",

+        "type": "comment",

+        "name": "found one we can use",

+        "info": "",

+        "comments": "",

+        "x": 2320.9843450273784,

+        "y": 2235.238589286804,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "412400cc.a3efa",

+        "type": "comment",

+        "name": "NEW",

+        "info": "",

+        "comments": "",

+        "x": 1517.9363158089773,

+        "y": 697.1428834370204,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "9e0fc23a.f7e51",

+        "type": "comment",

+        "name": "NEW",

+        "info": "",

+        "comments": "",

+        "x": 1387.3651237487793,

+        "y": 2019.7142505645752,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "e7d53672.156128",

+        "type": "comment",

+        "name": "NEW",

+        "info": "",

+        "comments": "",

+        "x": 1987.9365043640137,

+        "y": 997.1428213119507,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "c8a8f3.23f8271",

+        "type": "comment",

+        "name": "NEW",

+        "info": "",

+        "comments": "",

+        "x": 1980.7937278747559,

+        "y": 1111.4285726547241,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "e298800b.28418",

+        "type": "set",

+        "name": "set index-string to 0",

+        "xml": "<set>\n<parameter name='tmp.gun.index-string' value='0' />\n",

+        "comments": "",

+        "x": 1975.9364073617116,

+        "y": 2054.285785675049,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "974e3eea.a57fc",

+        "type": "switchNode",

+        "name": "switch tmp.gun.noindex-flag",

+        "xml": "<switch test='`$tmp.gun.noindex-flag`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1679.3651259286062,

+        "y": 3421.2859582901,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "7a90c21f.11fb9c"

+            ]

+        ]

+    },

+    {

+        "id": "7a90c21f.11fb9c",

+        "type": "outcome",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1885.0794051034109,

+        "y": 3421.285864830017,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "fde97220.7206d"

+            ]

+        ]

+    },

+    {

+        "id": "fde97220.7206d",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n    <parameter name=\"generate-unique-name-output.error-message\" value=\"naming exhausted for input with index-length = 0\" />\n",

+        "comments": "",

+        "x": 2049.3652479989187,

+        "y": 3419.8571424484253,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "ddda4cb5.69a3c",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2159.8293882097514,

+        "y": 2338.14271068573,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "f1cf4980.556c18"

+            ]

+        ]

+    },

+    {

+        "id": "59274ef2.cf994",

+        "type": "outcome",

+        "name": "4",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1623.650779724121,

+        "y": 871.4285898208618,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "2c30bd52.6fca32"

+            ]

+        ]

+    },

+    {

+        "id": "2c30bd52.6fca32",

+        "type": "set",

+        "name": "set list-end = 10000",

+        "xml": "<set>\n<parameter name='tmp.gun.list-end' value='10000' />\n",

+        "comments": "",

+        "x": 1813.31742477417,

+        "y": 871.4285669326782,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "c12d0b68.b45788",

+        "type": "outcome",

+        "name": "4",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2207.9363975524902,

+        "y": 1584.2856855392456,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "6a0e3f0e.bdf0d"

+            ]

+        ]

+    },

+    {

+        "id": "6a0e3f0e.bdf0d",

+        "type": "switchNode",

+        "name": "switch idx < 10",

+        "xml": "<switch test='`$tmp.gun.idx &lt; 10`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2376.269733428955,

+        "y": 1582.6188135147095,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "e077a096.c90b5",

+                "3ba27764.7bb978"

+            ]

+        ]

+    },

+    {

+        "id": "e077a096.c90b5",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2544.8410606384277,

+        "y": 1535.5236520767212,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "6f52ffca.5f968"

+            ]

+        ]

+    },

+    {

+        "id": "3ba27764.7bb978",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2557.936367034912,

+        "y": 1660.9521493911743,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "532853bc.fe84cc"

+            ]

+        ]

+    },

+    {

+        "id": "c2125c33.cdb9e",

+        "type": "set",

+        "name": "set noindex-flag=false",

+        "xml": "<set>\n<parameter name='tmp.gun.noindex-flag' value='false' />\n",

+        "comments": "",

+        "x": 1190.7936058044434,

+        "y": 874.2857313156128,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "1a8e79c7.61ce76",

+        "type": "set",

+        "name": "set index-string to '00' + idx",

+        "xml": "<set>\n<parameter name='tmp.gun.index-string' value=\"`'' + '00' + $tmp.gun.idx`\" />\n",

+        "comments": "",

+        "x": 3100.793617248535,

+        "y": 1616.4285522188459,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "1afc6185.a5540e",

+        "type": "switchNode",

+        "name": "switch idx < 1000",

+        "xml": "<switch test='`$tmp.gun.idx &lt; 1000`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3063.7935638427734,

+        "y": 1695.7619800567627,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "a4f34d49.5db71",

+                "751b1f96.b3bdc"

+            ]

+        ]

+    },

+    {

+        "id": "a4f34d49.5db71",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3220.79354095459,

+        "y": 1669.0953578948975,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "5d36ed1a.607764"

+            ]

+        ]

+    },

+    {

+        "id": "751b1f96.b3bdc",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3220.79349899292,

+        "y": 1717.4286937713623,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "d68323fd.8707c"

+            ]

+        ]

+    },

+    {

+        "id": "5d36ed1a.607764",

+        "type": "set",

+        "name": "set index-string to '0' + idx",

+        "xml": "<set>\n<parameter name='tmp.gun.index-string' value=\"`'' + '0' + $tmp.gun.idx`\" />\n",

+        "comments": "",

+        "x": 3413.4603271484375,

+        "y": 1668.7620124816895,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "d68323fd.8707c",

+        "type": "set",

+        "name": "set index-string to idx",

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

+        "comments": "",

+        "x": 3397.4603118896484,

+        "y": 1717.0953159332275,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "6f52ffca.5f968",

+        "type": "set",

+        "name": "set index-string to '000' + idx",

+        "xml": "<set>\n<parameter name='tmp.gun.index-string' value=\"`'' + '000' + $tmp.gun.idx`\" />\n",

+        "comments": "",

+        "x": 2752.2221069335938,

+        "y": 1535.142939567566,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "532853bc.fe84cc",

+        "type": "switchNode",

+        "name": "switch idx < 100",

+        "xml": "<switch test='`$tmp.gun.idx &lt; 100`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2726.650703430176,

+        "y": 1660.9049066816058,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "26118820.193aa8",

+                "e9a76d39.5370a"

+            ]

+        ]

+    },

+    {

+        "id": "26118820.193aa8",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2883.650680541992,

+        "y": 1616.2382845197405,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "1a8e79c7.61ce76"

+            ]

+        ]

+    },

+    {

+        "id": "e9a76d39.5370a",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2883.6506385803223,

+        "y": 1696.5716203962054,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "1afc6185.a5540e"

+            ]

+        ]

+    },

+    {

+        "id": "909034be.bcdcb8",

+        "type": "comment",

+        "name": "Change History",

+        "info": "iTrack 10767\n- insert new column (index, prefix, info)\niTrack 11252\n- use tmp.gun.index-string as opposed to tmp.gun.idx as prefix for GENERIC_RESOURCE_NAME insert",

+        "comments": "",

+        "x": 463.65077209472656,

+        "y": 401.4285840988159,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "895c17e1.4d8998",

+        "type": "comment",

+        "name": "iTrack 10767",

+        "info": "",

+        "comments": "",

+        "x": 1766.507999420166,

+        "y": 3105.714337348938,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "a16f0f71.a4d2c",

+        "type": "set",

+        "name": "set tmp.gun.transient",

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

+        "comments": "",

+        "x": 1112.2221374511719,

+        "y": 2779.999990940094,

+        "z": "f2af2445.16fe78",

+        "wires": []

+    },

+    {

+        "id": "9f71976e.e5c5f8",

+        "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": 720.8888549804688,

+        "y": 26.66666889190674,

+        "z": "f2af2445.16fe78",

+        "wires": [

+            [

+                "4eedc095.04b8b"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-vpn-binding-id.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-vpn-binding-id.json
new file mode 100755
index 0000000..2c95f3a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generate-vpn-binding-id.json
@@ -0,0 +1 @@
+[{"id":"1a17b23a.398bee","type":"execute","name":"execute: generateUUID","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n\t<parameter name=\"ctx-destination\" value=\"tmp.return.generate-vpn-binding-id.uuid\" />","comments":"","outputs":1,"x":590.00390625,"y":504.00390625,"z":"9bc3cabb.e50c08","wires":[["ac061fd2.f40dc"]]},{"id":"ac061fd2.f40dc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":789.7539138793945,"y":502.00391006469727,"z":"9bc3cabb.e50c08","wires":[["50437676.be3b28"]]},{"id":"50437676.be3b28","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<!-- Used to work around execute node bug -->\n\t<parameter name=\"execute_failure\" value=\"false\" />\n\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-vpn-binding-id\" value=\"An error occured while generating a UUID for VPN-BINDING.\" />","comments":"","x":954.7539138793945,"y":502.2539072036743,"z":"9bc3cabb.e50c08","wires":[]},{"id":"11d9fee1.397451","type":"get-resource","name":"Query AnAI -  vpn-binding","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n              resource=\"vpn-binding\"\n              key=\"vpn-binding.vpn-id = $tmp.return.generate-vpn-binding-id.uuid\"\n              local-only=\"false\"\n              pfx=\"tmp.local-variables.generate-vpn-binding-id.VPNBINDING\" >","comments":"","outputs":1,"x":719.2539138793945,"y":593.2539072036743,"z":"9bc3cabb.e50c08","wires":[["dfc2747e.ba2038","51b22a2f.6bf894","12ade5c4.1b0faa","696eb74c.68c8f8"]]},{"id":"b3abd428.d17188","type":"for","name":"for n: true","xml":"<for atomic=\"true\" index=\"n\" start=\"0\" end=\"1\" >","comments":"","outputs":1,"x":543.2539138793945,"y":593.2539072036743,"z":"9bc3cabb.e50c08","wires":[["11d9fee1.397451"]]},{"id":"dfc2747e.ba2038","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":923.7539138793945,"y":593.2539072036743,"z":"9bc3cabb.e50c08","wires":[["1ede93e1.58a0ac"]]},{"id":"51b22a2f.6bf894","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":919.7539138793945,"y":673.2539072036743,"z":"9bc3cabb.e50c08","wires":[["250b4141.5700fe"]]},{"id":"12ade5c4.1b0faa","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":928.7539138793945,"y":633.2539072036743,"z":"9bc3cabb.e50c08","wires":[["fe51a67a.13b8e8"]]},{"id":"250b4141.5700fe","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-vpn-binding-id\" value=\"`'An error occured while checking if a generated vpn-binding-id was unique. vpn-id = ' + $tmp.local-variables.generate-vpn-binding-id.uuid`\" />","comments":"","x":1086.253921508789,"y":698.2539129257202,"z":"9bc3cabb.e50c08","wires":[]},{"id":"1ede93e1.58a0ac","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1081.7539138793945,"y":593.2539072036743,"z":"9bc3cabb.e50c08","wires":[["18f3303f.51929","84dadf6d.8d15a"]]},{"id":"18f3303f.51929","type":"set","name":"set: ...local...is-unique = 0","xml":"<set>\n\t<parameter name=\"tmp.local-variables.generate-vpn-binding-id.is-unique\" value=\"0\" />","comments":"","x":1299.2539672851562,"y":593.2539129257202,"z":"9bc3cabb.e50c08","wires":[]},{"id":"84dadf6d.8d15a","type":"execute","name":"execute: generateUUID","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n\t<parameter name=\"ctx-destination\" value=\"tmp.return.generate-vpn-binding-id.uuid\" />","comments":"","outputs":1,"x":1292.7539138793945,"y":633.2539072036743,"z":"9bc3cabb.e50c08","wires":[["d9152ade.264048"]]},{"id":"d9152ade.264048","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1479.7539138793945,"y":633.2539072036743,"z":"9bc3cabb.e50c08","wires":[["9921f2ce.1a66b"]]},{"id":"9921f2ce.1a66b","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-vpn-binding-id\" value=\"An error occured while generating a UUID for VPN-BINDING.\" />","comments":"","x":1633.7539138793945,"y":633.2539072036743,"z":"9bc3cabb.e50c08","wires":[]},{"id":"fe51a67a.13b8e8","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":1059.7539138793945,"y":633.2539072036743,"z":"9bc3cabb.e50c08","wires":[[]]},{"id":"9006edb0.5ad67","type":"dgstart","name":"DGSTART","outputs":1,"x":300.25391006469727,"y":189.50390625,"z":"9bc3cabb.e50c08","wires":[["955ef40d.b75168"]]},{"id":"955ef40d.b75168","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.25390625,"y":235.75390625,"z":"9bc3cabb.e50c08","wires":[["1bda7a11.ba70b6"]]},{"id":"1bda7a11.ba70b6","type":"method","name":"method generate-vpn-binding-id","xml":"<method rpc=\"generate-vpn-binding-id\" mode=\"sync\">","comments":"","outputs":1,"x":341.00392150878906,"y":302.25392055511475,"z":"9bc3cabb.e50c08","wires":[["f99e10ed.a3ff1"]]},{"id":"586fb295.3f906c","type":"comment","name":"GENERIC-RESOURCE-API: GENERATE-L3NETWORK-NETWORK-ID","info":"","comments":"","x":851.7539215087891,"y":195.75390434265137,"z":"9bc3cabb.e50c08","wires":[]},{"id":"f99e10ed.a3ff1","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":361.75391387939453,"y":413.2539072036743,"z":"9bc3cabb.e50c08","wires":[["1a17b23a.398bee","b3abd428.d17188","3c008100.ccda4e","ae4c9e12.036ca"]]},{"id":"f9cf86ae.e11878","type":"comment","name":"LOOP UNTIL GENERATED VPN-BINDING-ID ISN'T FOUND IN A&AI","info":"","comments":"","x":763.00390625,"y":549.5039110183716,"z":"9bc3cabb.e50c08","wires":[]},{"id":"b7af4772.fef138","type":"comment","name":"GENERATE A VPN-BINDING-ID","info":"","comments":"","x":626.75390625,"y":459.50390911102295,"z":"9bc3cabb.e50c08","wires":[]},{"id":"3c008100.ccda4e","type":"set","name":"unset: local-variables & return","xml":"<set>\n\t<parameter name=\"tmp.local-variables.generate-vpn-binding-id.\" value=\"\" />\n\t<parameter name=\"tmp.return.generate-vpn-binding-id.\" value=\"\" />","comments":"","x":612.7539138793945,"y":413.2539072036743,"z":"9bc3cabb.e50c08","wires":[]},{"id":"ccbe8c66.d109a","type":"comment","name":"CLEANUP LOCAL VARIABLES TO BE USED","info":"","comments":"","x":697.00390625,"y":369.50390815734863,"z":"9bc3cabb.e50c08","wires":[]},{"id":"83e132e1.812b7","type":"comment","name":"GLOBAL VARIABLES USED","info":"// RETURN VALUES\nerror-message.generate-l3network-network-id\ntmp.return.generate-l3network-network-id.uuid\n\n// LOCAL VARIABLES (erased at beginning & end of DG)\ntmp.local-variables.generate-l3network-network-id.*\ntmp.return.generate-l3network-network-id.*\n","comments":"","x":838.2539367675781,"y":235.75390434265137,"z":"9bc3cabb.e50c08","wires":[]},{"id":"ae4c9e12.036ca","type":"set","name":"unset: local-variables & return","xml":"<set>\n\t<parameter name=\"tmp.local-variables.generate-vpn-binding-id.\" value=\"\" />","comments":"","x":612.7539138793945,"y":693.2539072036743,"z":"9bc3cabb.e50c08","wires":[]},{"id":"6844957a.c26bbc","type":"comment","name":"CLEANUP LOCAL VARIABLES","info":"","comments":"","x":654.25390625,"y":650.7539119720459,"z":"9bc3cabb.e50c08","wires":[]},{"id":"696eb74c.68c8f8","type":"other","name":"Other","xml":"<outcome value=\"Other\">","comments":"","outputs":1,"x":919.7539138793945,"y":713.2539072036743,"z":"9bc3cabb.e50c08","wires":[["250b4141.5700fe"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification-activate.json
new file mode 100755
index 0000000..ff5de61
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification-activate.json
@@ -0,0 +1 @@
+[{"id":"748c5e12.ee05f","type":"dgstart","name":"DGSTART","outputs":1,"x":98.33332824707031,"y":78.33332824707031,"z":"f39a1209.6ec59","wires":[["75ce25e8.a289dc"]]},{"id":"75ce25e8.a289dc","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":213.61902618408203,"y":118.57143688201904,"z":"f39a1209.6ec59","wires":[["752ca0e8.9e0c2"]]},{"id":"752ca0e8.9e0c2","type":"method","name":"method generic-configuration-notification-activate","xml":"<method rpc='generic-configuration-notification-activate' mode='sync'>\n","comments":"","outputs":1,"x":221.76195526123047,"y":159.3333225250244,"z":"f39a1209.6ec59","wires":[["43784d88.bf3334"]]},{"id":"81b84b04.741458","type":"comment","name":"generic-configuration-notification-activate","info":"","comments":"","x":492.67818450927734,"y":25.9196720123291,"z":"f39a1209.6ec59","wires":[]},{"id":"43784d88.bf3334","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":146.6666717529297,"y":528.3333139419556,"z":"f39a1209.6ec59","wires":[["689f4588.4fb38c","6b66e766.d901c8","ecdec83a.0eea48","c0c55ed4.616a4","598a34a2.6f524c","9985c36c.7c9c1","bf385492.e7b548","f0a42717.253648","c53c80e.cc1d68"]]},{"id":"689f4588.4fb38c","type":"execute","name":"execute readProperties","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":396.6666488647461,"y":301.6666784286499,"z":"f39a1209.6ec59","wires":[[]]},{"id":"6b66e766.d901c8","type":"execute","name":"generate gc-configuration url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.gc-configuration`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.gc-url\"/>\n    <parameter name=\"target\" value=\"{configuration-id}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.configuration-information.configuration-id`\"/>\n","comments":"","outputs":1,"x":411.66663360595703,"y":353.3333320617676,"z":"f39a1209.6ec59","wires":[[]]},{"id":"56854966.d5ae88","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":746.6665420532227,"y":404.9998531341553,"z":"f39a1209.6ec59","wires":[["8c7d47d8.35cfc8"]]},{"id":"ecdec83a.0eea48","type":"execute","name":"execute RestApiCallNode - GET gc-configuration","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-gc\" />\n\n","comments":"","outputs":1,"x":475.0000534057617,"y":404.99998664855957,"z":"f39a1209.6ec59","wires":[["56854966.d5ae88"]]},{"id":"8c7d47d8.35cfc8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":874.9998626708984,"y":404.99997901916504,"z":"f39a1209.6ec59","wires":[["6c3e40a9.1ac7d","7e782342.e3086c"]]},{"id":"6c3e40a9.1ac7d","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"Y\" />\n<parameter name=\"input.response-code\"\n  value=\"500\" />\n<parameter name=\"input.response-message\"\n  value=\"`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":1053.3331756591797,"y":373.3333225250244,"z":"f39a1209.6ec59","wires":[[]]},{"id":"7e782342.e3086c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`\" />\n","comments":"","x":1029.9998245239258,"y":425.0000047683716,"z":"f39a1209.6ec59","wires":[]},{"id":"c53c80e.cc1d68","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=\"success\" />\n\n","comments":"","x":370,"y":788.3333129882812,"z":"f39a1209.6ec59","wires":[]},{"id":"f0a42717.253648","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-gcnotify.log' />\n","comments":"","outputs":1,"x":363.3333320617676,"y":742.4135932922363,"z":"f39a1209.6ec59","wires":[[]]},{"id":"bf385492.e7b548","type":"configure","name":"send success to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"`$generic-configuration-notification-input.ack-final-indicator`\" />\n<parameter name=\"input.response-code\"\n  value=\"`$generic-configuration-notification-input.response-code`\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":393.33338928222656,"y":697.4136219024658,"z":"f39a1209.6ec59","wires":[[]]},{"id":"9985c36c.7c9c1","type":"execute","name":"execute RestApiCallNode - PUT port-mirror-configuration","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.genconfig.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-gc\" />\n\n","comments":"","outputs":1,"x":503.33348083496094,"y":624.0802850723267,"z":"f39a1209.6ec59","wires":[["7f4b784c.bb4798","6c51d8f0.b04b08"]]},{"id":"7f4b784c.bb4798","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":803.4033012390137,"y":645.4118404388428,"z":"f39a1209.6ec59","wires":[["41d31794.266388"]]},{"id":"6c51d8f0.b04b08","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":795.8319358825684,"y":603.9118604660034,"z":"f39a1209.6ec59","wires":[["41d31794.266388"]]},{"id":"41d31794.266388","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":958.8214454650879,"y":617.9846868515015,"z":"f39a1209.6ec59","wires":[["9014b16d.c022e"]]},{"id":"9014b16d.c022e","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Error updating md-sal for gc-configuration' />\n","comments":"","x":1131.666835784912,"y":617.4136619567871,"z":"f39a1209.6ec59","wires":[]},{"id":"c0c55ed4.616a4","type":"set","name":"set order-status to Active","xml":"<set>\n<parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.order-status'\n  value='Active' />\n<parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.last-action'\n  value='CreateGenericConfigurationInstance' />\n<parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.last-rpc-action'\n  value='activate' />\n","comments":"","x":410.0001754760742,"y":469.0803680419922,"z":"f39a1209.6ec59","wires":[]},{"id":"598a34a2.6f524c","type":"set","name":"copy mdsal-gc.gc-configuration[0]. to gc.","xml":"<set>\n<parameter name='gc.' value='mdsal-gc.gc-configuration[0].' />\n","comments":"","x":451.6668167114258,"y":550.7471122741699,"z":"f39a1209.6ec59","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification-assign.json
new file mode 100755
index 0000000..517d8f4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification-assign.json
@@ -0,0 +1 @@
+[{"id":"3cc1250e.772baa","type":"dgstart","name":"DGSTART","outputs":1,"x":102.5,"y":81.25,"z":"ae8dc4de.f4dc68","wires":[["3402eab5.73f3c6"]]},{"id":"3402eab5.73f3c6","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":217.78569793701172,"y":121.48810863494873,"z":"ae8dc4de.f4dc68","wires":[["c7e6ed9c.afa8c"]]},{"id":"c7e6ed9c.afa8c","type":"method","name":"method generic-configuration-notification-assign","xml":"<method rpc='generic-configuration-notification-assign' mode='sync'>\n","comments":"","outputs":1,"x":221.92862701416016,"y":162.2499942779541,"z":"ae8dc4de.f4dc68","wires":[["4767442b.f6c4ac"]]},{"id":"f1cc6d3c.1df33","type":"comment","name":"generic-configuration-notification-assign","info":"","comments":"","x":496.84485626220703,"y":28.83634376525879,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"4767442b.f6c4ac","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":134.16668701171875,"y":1781.7530403137207,"z":"ae8dc4de.f4dc68","wires":[["35944643.078a2a","146f698f.4e6226","d50bb092.cd571","8a5cfd84.4d1b4","d95d1950.bfe9f8","d52389db.225f08","7cc00fe8.04bdc","66091730.734bc8","522d7ed3.d05ac","9701d1bb.39173","3e76235a.0128ac","8568c1b1.c067e","84f34e5d.99cf4","da804b8e.c31568","7b830214.43feec","5d7d0687.7531f8","26306c7b.99f5a4","1d596143.fb1def","2f677052.127b9","7751357c.f0a3cc","9ed7f37f.7e0ba","1193a369.1cbf5d","d08c3347.9e6b8","f219dd.0348962","a1de031b.00549","5fb22bd5.354cf4","c4805bf4.e29698","1ddae120.504e2f","2def915d.1e931e","f1d80dd8.29bb8","d36d4389.7f7d9","8ba3a63e.d10ba8","33c48630.2bf5ba","57bab6ea.edaec8","d08f8ccc.1a7f7","1ea13a3.ea552c6","eafe9b0d.7484d8","61dbdcf5.d51804","57b4b7f.10e8948"]]},{"id":"35944643.078a2a","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=\"success\" />\n\n","comments":"","x":379.99983978271484,"y":2749.2528038024902,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"146f698f.4e6226","type":"execute","name":"execute readProperties","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":411.6666488647461,"y":276.6666679382324,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"d50bb092.cd571","type":"execute","name":"generate gc-configuration url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.gc-configuration`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.gc-url\"/>\n    <parameter name=\"target\" value=\"{configuration-id}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.configuration-information.configuration-id`\"/>\n","comments":"","outputs":1,"x":428.33331298828125,"y":335,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"13678d4c.8f5533","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":763.3332214355469,"y":386.6665210723877,"z":"ae8dc4de.f4dc68","wires":[["6d9a2e0a.afa9c"]]},{"id":"8a5cfd84.4d1b4","type":"execute","name":"execute RestApiCallNode - GET gc-configuration","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-gc\" />\n\n","comments":"","outputs":1,"x":495.00003814697266,"y":386.6666717529297,"z":"ae8dc4de.f4dc68","wires":[["13678d4c.8f5533"]]},{"id":"d95d1950.bfe9f8","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-gcnotify.log' />\n","comments":"","outputs":1,"x":373.3331718444824,"y":2703.3330841064453,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"d52389db.225f08","type":"switchNode","name":"switch response-code","xml":"<switch test='`$generic-configuration-notification-input.response-code`'>\n","comments":"","outputs":1,"x":409.9999542236328,"y":495.00000953674316,"z":"ae8dc4de.f4dc68","wires":[["e66bcbd9.adfbd8","8765b92f.58af98"]]},{"id":"e66bcbd9.adfbd8","type":"outcome","name":"200","xml":"<outcome value='200'>\n","comments":"","outputs":1,"x":596.6667327880859,"y":526.6666688919067,"z":"ae8dc4de.f4dc68","wires":[["655312ec.c6ca4c"]]},{"id":"8765b92f.58af98","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":599.9999809265137,"y":466.66667556762695,"z":"ae8dc4de.f4dc68","wires":[["23f6b332.6a269c"]]},{"id":"84b95e52.d26aa","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"`$generic-configuration-notification-input.ack-final-indicator`\" />\n<parameter name=\"input.response-code\"\n  value=\"`$generic-configuration-notification-input.response-code`\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":905.0000381469727,"y":443.3333206176758,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"1ea13a3.ea552c6","type":"configure","name":"send success to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"`$generic-configuration-notification-input.ack-final-indicator`\" />\n<parameter name=\"input.response-code\"\n  value=\"`$generic-configuration-notification-input.response-code`\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":403.3332290649414,"y":2658.333112716675,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"7cc00fe8.04bdc","type":"switchNode","name":"switch provided-configuration_length","xml":"<switch test='`$service-data.provided-configurations.provided-configuration_length`'>\n","comments":"","outputs":1,"x":455.00001525878906,"y":628.3333387374878,"z":"ae8dc4de.f4dc68","wires":[["ba800083.1956e"]]},{"id":"ba800083.1956e","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":678.3333129882812,"y":626.6666259765625,"z":"ae8dc4de.f4dc68","wires":[["89b0cf6a.10519"]]},{"id":"89b0cf6a.10519","type":"set","name":"set provided-configuration_length to 0","xml":"<set>\n<parameter name='service-data.provided-configurations.provided-configuration_length' value='0' />\n","comments":"","x":908.3332824707031,"y":626.666711807251,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"66091730.734bc8","type":"set","name":"set found-provided-configuration to false","xml":"<set>\n<parameter name='found-provided-configuration' value='false' />\n","comments":"","x":465.00001525878906,"y":676.6666965484619,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"522d7ed3.d05ac","type":"for","name":"for each provided-configuration","xml":"<for silentFailure='true' index='pc-index' start='0' end='`$service-data.provided-configurations.provided-configuration_length`' >\n","comments":"","outputs":1,"x":434.99999237060547,"y":780.0000705718994,"z":"ae8dc4de.f4dc68","wires":[["b8acf999.6ad398"]]},{"id":"b8acf999.6ad398","type":"switchNode","name":"switch configuration-ids match?","xml":"<switch test='`$service-data.provided-configurations.provided-configuration[$pc-index].configuration-id\n  == $generic-configuration-notification-input.configuration-information.configuration-id`'>\n","comments":"","outputs":1,"x":715.0000381469727,"y":780.0000305175781,"z":"ae8dc4de.f4dc68","wires":[["77441f9a.3950f"]]},{"id":"77441f9a.3950f","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":928.3333435058594,"y":778.3333225250244,"z":"ae8dc4de.f4dc68","wires":[["53f19e9a.4c592"]]},{"id":"53f19e9a.4c592","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1064.9999313354492,"y":778.3333339691162,"z":"ae8dc4de.f4dc68","wires":[["f80ba273.e518","794072c0.94b0fc"]]},{"id":"655312ec.c6ca4c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":731.6666259765625,"y":525,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"23f6b332.6a269c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":731.6666259765625,"y":466.6666564941406,"z":"ae8dc4de.f4dc68","wires":[["84b95e52.d26aa","2eee38b0.9cc638"]]},{"id":"f80ba273.e518","type":"set","name":"set found-provided-configuration to true","xml":"<set>\n<parameter name='found-provided-configuration' value='true' />\n","comments":"","x":1293.333351135254,"y":748.3332796096802,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"794072c0.94b0fc","type":"break","name":"break","xml":"<break>\n","comments":"","x":1191.6666870117188,"y":796.6666769981384,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"9701d1bb.39173","type":"switchNode","name":"switch found-provided-configuration","xml":"<switch test='`$found-provided-configuration`'>\n","comments":"","outputs":1,"x":448.33335876464844,"y":833.3333644866943,"z":"ae8dc4de.f4dc68","wires":[["3bf36f48.88521"]]},{"id":"3bf36f48.88521","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":663.3333129882812,"y":833.3333435058594,"z":"ae8dc4de.f4dc68","wires":[["e204449a.562808"]]},{"id":"e204449a.562808","type":"set","name":"increment provided-configuration_length","xml":"<set>\n<parameter name='service-data.provided-configurations.provided-configuration_length'\n  value='`$service-data.provided-configurations.provided-configuration_length + 1`' />\n","comments":"","x":894.9999847412109,"y":833.3333225250244,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"3e76235a.0128ac","type":"set","name":"set provided-configuration data","xml":"<set>\n<parameter name='service-data.provided-configurations.provided-configuration[$pc-index].configuration-id'\n  value='`$generic-configuration-notification-input.configuration-information.configuration-id`' />\n<parameter name='service-data.provided-configurations.provided-configuration[$pc-index].configuration-type'\n  value='`$generic-configuration-notification-input.configuration-information.configuration-type`' />\n<parameter name='service-data.provided-configurations.provided-configuration[$pc-index].configuration-sub-type'\n  value='`$generic-configuration-notification-input.configuration-information.configuration-sub-type`' />\n<parameter name='service-data.provided-configurations.provided-configuration[$pc-index].configuration-topology-link'\n  value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n   + $generic-configuration-notification-input.service-information.service-instance-id\n   + '/service-data/provided-configurations/provided-configuration/'\n   + $generic-configuration-notification-input.configuration-information.configuration-id`\" />\n","comments":"","x":431.66666412353516,"y":888.333306312561,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"f496c6ed.5771a8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":813.3332901000977,"y":1181.6666851043701,"z":"ae8dc4de.f4dc68","wires":[["9cb35e05.54f97"]]},{"id":"8568c1b1.c067e","type":"execute","name":"execute RestApiCallNode - GET vnf-sub-interface-group","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vsig-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-vsig\" />\n\n","comments":"","outputs":1,"x":511.6666564941406,"y":1183.3335456848145,"z":"ae8dc4de.f4dc68","wires":[["f496c6ed.5771a8"]]},{"id":"84f34e5d.99cf4","type":"execute","name":"generate vnf-sub-interface-group URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vnf-sub-interface-group`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`\"/>\n","comments":"","outputs":1,"x":454.9999694824219,"y":938.3333206176758,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"da804b8e.c31568","type":"execute","name":"generate vnf-sub-interface-group URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{vnf-id}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.vnf-id`\"/>\n","comments":"","outputs":1,"x":454.9999465942383,"y":988.3333654403687,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"7b830214.43feec","type":"execute","name":"generate vnf-sub-interface-group URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{vnfc-instance-group-function}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.vnfc-instance-group-function`\"/>\n","comments":"","outputs":1,"x":454.99993896484375,"y":1038.3332872390747,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"5d7d0687.7531f8","type":"execute","name":"generate vnf-sub-interface-group URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{network-instance-group-function}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.network-instance-group-function`\"/>\n","comments":"","outputs":1,"x":454.99996185302734,"y":1086.6665840148926,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"26306c7b.99f5a4","type":"execute","name":"generate vnf-sub-interface-group URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vsig-url\"/>\n    <parameter name=\"target\" value=\"{parent-port-role}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.parent-port-role`\"/>\n","comments":"","outputs":1,"x":454.99993896484375,"y":1135.0000438690186,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"ef8bdf4c.8e0fb","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Cannot find vnf-sub-interface-group in service ' + $generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`\" />\n","comments":"","x":1100.0003967285156,"y":1199.9998970031738,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"6d9a2e0a.afa9c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":891.6665420532227,"y":386.66664695739746,"z":"ae8dc4de.f4dc68","wires":[["a8eb0918.9f1948","6dad07ad.23e0c8"]]},{"id":"a8eb0918.9f1948","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"Y\" />\n<parameter name=\"input.response-code\"\n  value=\"500\" />\n<parameter name=\"input.response-message\"\n  value=\"`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":1069.999855041504,"y":354.99999046325684,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"6dad07ad.23e0c8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`\" />\n","comments":"","x":1046.66650390625,"y":406.666672706604,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"2eee38b0.9cc638","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`$generic-configuration-notification-input.response-message`\" />\n","comments":"","x":883.3333129882812,"y":489.9999694824219,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"9cb35e05.54f97","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":953.3332748413086,"y":1181.6666774749756,"z":"ae8dc4de.f4dc68","wires":[["ef8bdf4c.8e0fb","15aaaf48.cec541"]]},{"id":"15aaaf48.cec541","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"Y\" />\n<parameter name=\"input.response-code\"\n  value=\"500\" />\n<parameter name=\"input.response-message\"\n  value=\"`'Cannot find vnf-sub-interface-group in service ' + $generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":1119.999900817871,"y":1154.9999294281006,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"1d596143.fb1def","type":"for","name":"for each vnfc","xml":"<for silentFailure='true' index='vnfc-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc_length`' >\n","comments":"","outputs":1,"x":376.666690826416,"y":1256.6666355133057,"z":"ae8dc4de.f4dc68","wires":[["78c2892b.27f7b8"]]},{"id":"78c2892b.27f7b8","type":"for","name":"for each vnic","xml":"<for silentFailure='true' index='vnic-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic_length`' >\n","comments":"","outputs":1,"x":545,"y":1255,"z":"ae8dc4de.f4dc68","wires":[["71029de0.105574"]]},{"id":"71029de0.105574","type":"for","name":"for each subinterface","xml":"<for silentFailure='true' index='si-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface_length`' >\n","comments":"","outputs":1,"x":736.6666564941406,"y":1255.0000495910645,"z":"ae8dc4de.f4dc68","wires":[["ec687857.094fb8"]]},{"id":"ec687857.094fb8","type":"switchNode","name":"switch lower-tag-ids equal?","xml":"<switch test='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface[$si-index].vlan-tags.lower-tag-id\n  == $generic-configuration-notification-input.vnr-parameters.lower-tag-id`'>\n","comments":"","outputs":1,"x":973.3333053588867,"y":1253.3332614898682,"z":"ae8dc4de.f4dc68","wires":[["a2c19f89.3b803"]]},{"id":"a2c19f89.3b803","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1168.3333435058594,"y":1251.6667175292969,"z":"ae8dc4de.f4dc68","wires":[["52075d54.ad5254"]]},{"id":"52075d54.ad5254","type":"set","name":"set sub-interface-status to 'assigned'","xml":"<set>\n<parameter name='mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface[$si-index].sub-interface-status'\n  value='assigned' />\n","comments":"","x":1393.3331832885742,"y":1249.9998865127563,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"2f677052.127b9","type":"switchNode","name":"switch customer-bonding-request_length","xml":"<switch test='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length`'>\n","comments":"","outputs":1,"x":461.66664123535156,"y":1331.66667842865,"z":"ae8dc4de.f4dc68","wires":[["49eafbd8.217b14"]]},{"id":"49eafbd8.217b14","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":696.6666259765625,"y":1330,"z":"ae8dc4de.f4dc68","wires":[["876b66b2.c44fc8"]]},{"id":"876b66b2.c44fc8","type":"set","name":"set customer-bonding-request_length to 0","xml":"<set>\n<parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length'\n  value='0' />\n","comments":"","x":934.9999694824219,"y":1329.999930381775,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"7751357c.f0a3cc","type":"for","name":"for each customer-bonding-request","xml":"<for index='cbr-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length`' >\n","comments":"","outputs":1,"x":443.3332977294922,"y":1441.6666831970215,"z":"ae8dc4de.f4dc68","wires":[["52b7e9d6.3b8d68"]]},{"id":"52b7e9d6.3b8d68","type":"switchNode","name":"switch configuration-ids equal?","xml":"<switch test='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$cbr-index].configuration-id\n  == $generic-configuration-notification-input.configuration-information.configuration-id`'>\n","comments":"","outputs":1,"x":738.3333206176758,"y":1441.666603088379,"z":"ae8dc4de.f4dc68","wires":[["668d8732.ab0708"]]},{"id":"9ed7f37f.7e0ba","type":"set","name":"set found-customer-bonding-request to false","xml":"<set>\n<parameter name='found-customer-bonding-request' value='false' />\n","comments":"","x":473.3333435058594,"y":1381.6665992736816,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"668d8732.ab0708","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":939.9999389648438,"y":1441.6666259765625,"z":"ae8dc4de.f4dc68","wires":[["18edad9e.582f42"]]},{"id":"18edad9e.582f42","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1076.6665267944336,"y":1441.6666374206543,"z":"ae8dc4de.f4dc68","wires":[["4224a75f.aa5358","ebf48469.47ca38"]]},{"id":"4224a75f.aa5358","type":"set","name":"set found-customer-bonding-request to true","xml":"<set>\n<parameter name='found-customer-bonding-request' value='true' />\n","comments":"","x":1318.3333015441895,"y":1411.6666011810303,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"ebf48469.47ca38","type":"break","name":"break","xml":"<break>\n","comments":"","x":1203.3332824707031,"y":1459.9999804496765,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"1193a369.1cbf5d","type":"switchNode","name":"switch found-customer-bonding-request","xml":"<switch test='`$found-customer-bonding-request`'>\n","comments":"","outputs":1,"x":459.9999809265137,"y":1526.666748046875,"z":"ae8dc4de.f4dc68","wires":[["9422191b.a944a8"]]},{"id":"9422191b.a944a8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":704.9998817443848,"y":1526.666748046875,"z":"ae8dc4de.f4dc68","wires":[["c651b8bd.b62478"]]},{"id":"3b053b7e.793854","type":"set","name":"increment provided-configuration_length","xml":"<set>\n<parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length'\n  value='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length + 1`' />\n","comments":"","x":1068.3331909179688,"y":1548.3332347869873,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"c651b8bd.b62478","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":833.3332862854004,"y":1526.6666870117188,"z":"ae8dc4de.f4dc68","wires":[["3b053b7e.793854","50457e5a.648f3"]]},{"id":"50457e5a.648f3","type":"set","name":"set configuration-id","xml":"<set>\n<parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length].configuration-id'\n  value='`$generic-configuration-notification-input.configuration-information.configuration-id`' />\n","comments":"","x":1003.3332901000977,"y":1500.0001430511475,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"d08c3347.9e6b8","type":"execute","name":"execute RestApiCallNode - PUT vnf-sub-interface-group","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.vnfsubinterfacegroup.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vsig-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-vsig\" />\n\n","comments":"","outputs":1,"x":511.66663360595703,"y":1638.333152770996,"z":"ae8dc4de.f4dc68","wires":[["721a4c33.94a274"]]},{"id":"721a4c33.94a274","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":798.3332901000977,"y":1636.6665267944336,"z":"ae8dc4de.f4dc68","wires":[["a09798f2.5efdb8"]]},{"id":"762136cc.984f68","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Failure writing vnf-sub-interface-group\" />\n","comments":"","x":1083.3331336975098,"y":1653.333194732666,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"a09798f2.5efdb8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":929.9999389648438,"y":1634.9998779296875,"z":"ae8dc4de.f4dc68","wires":[["762136cc.984f68","3ab13842.69d928"]]},{"id":"f219dd.0348962","type":"set","name":"set pc-index to 0","xml":"<set>\n<parameter name='pc-index' value='0' />\n","comments":"","x":389.9999694824219,"y":728.3333873748779,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"a1de031b.00549","type":"execute","name":"generate network-instance-group-network URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.network-instance-group-network`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`\"/>\n","comments":"","outputs":1,"x":484.9999084472656,"y":1716.6664113998413,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"5fb22bd5.354cf4","type":"execute","name":"generate network-instance-group-network URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{network-instance-group-id}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.network-instance-group-id`\"/>\n","comments":"","outputs":1,"x":484.99989318847656,"y":1763.3332405090332,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"c4805bf4.e29698","type":"execute","name":"generate network-instance-group-network URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.nign-url\"/>\n    <parameter name=\"target\" value=\"{network-id}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.network-id`\"/>\n","comments":"","outputs":1,"x":484.9998779296875,"y":1806.6664543151855,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"53f66c5f.db0e04","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":852.0000152587891,"y":1922.6666278839111,"z":"ae8dc4de.f4dc68","wires":[["f74392fc.d0a05"]]},{"id":"1ddae120.504e2f","type":"execute","name":"execute RestApiCallNode - GET network-instance-group-network","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nign-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-nign\" />\n\n","comments":"","outputs":1,"x":541.6666946411133,"y":1923.3334884643555,"z":"ae8dc4de.f4dc68","wires":[["53f66c5f.db0e04"]]},{"id":"511e8517.fc5a2c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Cannot find network-instance-group-network in service ' + $generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`\" />\n","comments":"","x":1128.3337020874023,"y":1949.999834060669,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"f74392fc.d0a05","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":983.3333129882812,"y":1921.6666202545166,"z":"ae8dc4de.f4dc68","wires":[["511e8517.fc5a2c","8ace224e.0988d"]]},{"id":"8ace224e.0988d","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"Y\" />\n<parameter name=\"input.response-code\"\n  value=\"500\" />\n<parameter name=\"input.response-message\"\n  value=\"`'Cannot find network-instance-group-network in service ' + $generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":1148.3332977294922,"y":1899.9998707771301,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"2def915d.1e931e","type":"switchNode","name":"switch customer-bonding-request_length","xml":"<switch test='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length`'>\n","comments":"","outputs":1,"x":463.33331298828125,"y":2019.9998779296875,"z":"ae8dc4de.f4dc68","wires":[["2e033362.ff3efc"]]},{"id":"2e033362.ff3efc","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":698.3332977294922,"y":2018.3331995010376,"z":"ae8dc4de.f4dc68","wires":[["9f1b41b9.a2ee4"]]},{"id":"9f1b41b9.a2ee4","type":"set","name":"set customer-bonding-request_length to 0","xml":"<set>\n<parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length'\n  value='0' />\n","comments":"","x":936.6666412353516,"y":2018.3331298828125,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"8ba3a63e.d10ba8","type":"for","name":"for each customer-bonding-request","xml":"<for index='cbr-index' start='0' end='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length`' >\n","comments":"","outputs":1,"x":444.9999542236328,"y":2170.0000038146973,"z":"ae8dc4de.f4dc68","wires":[["731cd6b2.d705e8"]]},{"id":"731cd6b2.d705e8","type":"switchNode","name":"switch configuration-ids equal?","xml":"<switch test='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$cbr-index].configuration-id\n  == $generic-configuration-notification-input.configuration-information.configuration-id`'>\n","comments":"","outputs":1,"x":739.9999771118164,"y":2169.9999237060547,"z":"ae8dc4de.f4dc68","wires":[["172328ac.80fd77"]]},{"id":"f1d80dd8.29bb8","type":"set","name":"set found-customer-bonding-request to false","xml":"<set>\n<parameter name='found-customer-bonding-request' value='false' />\n","comments":"","x":475.00001525878906,"y":2069.9997987747192,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"172328ac.80fd77","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":941.6665954589844,"y":2169.9999465942383,"z":"ae8dc4de.f4dc68","wires":[["722ff3a4.17f61c"]]},{"id":"722ff3a4.17f61c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1078.3331832885742,"y":2169.99995803833,"z":"ae8dc4de.f4dc68","wires":[["19bd2de.2f9ddd2","deca096b.06e4b8"]]},{"id":"19bd2de.2f9ddd2","type":"set","name":"set found-customer-bonding-request to true","xml":"<set>\n<parameter name='found-customer-bonding-request' value='true' />\n","comments":"","x":1319.99995803833,"y":2139.999921798706,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"deca096b.06e4b8","type":"break","name":"break","xml":"<break>\n","comments":"","x":1204.9999389648438,"y":2188.3333010673523,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"33c48630.2bf5ba","type":"switchNode","name":"switch found-customer-bonding-request","xml":"<switch test='`$found-customer-bonding-request`'>\n","comments":"","outputs":1,"x":461.6666374206543,"y":2255.000068664551,"z":"ae8dc4de.f4dc68","wires":[["5e701dee.5b5824"]]},{"id":"5e701dee.5b5824","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":706.6665382385254,"y":2255.000068664551,"z":"ae8dc4de.f4dc68","wires":[["697b5fb8.beda5"]]},{"id":"e84cf705.8fbbd8","type":"set","name":"increment provided-configuration_length","xml":"<set>\n<parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length'\n  value='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length + 1`' />\n","comments":"","x":1069.9998474121094,"y":2276.666555404663,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"697b5fb8.beda5","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":834.999942779541,"y":2255.0000076293945,"z":"ae8dc4de.f4dc68","wires":[["e84cf705.8fbbd8","f6b7d527.816a38"]]},{"id":"f6b7d527.816a38","type":"set","name":"set configuration-id","xml":"<set>\n<parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length].configuration-id'\n  value='`$generic-configuration-notification-input.configuration-information.configuration-id`' />\n","comments":"","x":1004.9999465942383,"y":2228.3334636688232,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"d36d4389.7f7d9","type":"set","name":"set cbr-index to 0","xml":"<set>\n<parameter name='cbr-index' value='0' />\n","comments":"","x":390.0000228881836,"y":2118.3332557678223,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"57bab6ea.edaec8","type":"set","name":"set network-status to assigned","xml":"<set>\n<parameter name='mdsal-nign.network[0].network-status' value='assigned' />\n","comments":"","x":431.6666717529297,"y":2313.3336696624756,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"b626d1d9.7a40b","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":848.333251953125,"y":2361.6664476394653,"z":"ae8dc4de.f4dc68","wires":[["e67173fb.9bd5b"]]},{"id":"711125b6.dfa3fc","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Failure writing network-instance-group network\" />\n","comments":"","x":1133.333095550537,"y":2378.3331155776978,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"e67173fb.9bd5b","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":979.9999008178711,"y":2359.9997987747192,"z":"ae8dc4de.f4dc68","wires":[["711125b6.dfa3fc","eb1f5008.a5906"]]},{"id":"d08f8ccc.1a7f7","type":"execute","name":"execute RestApiCallNode - PUT network-instance-group-network","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-network.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nign-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-nign\" />\n\n","comments":"","outputs":1,"x":538.3332977294922,"y":2363.333101272583,"z":"ae8dc4de.f4dc68","wires":[["b626d1d9.7a40b"]]},{"id":"eb1f5008.a5906","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"Y\" />\n<parameter name=\"input.response-code\"\n  value=\"500\" />\n<parameter name=\"input.response-message\"\n  value=\"Failure writing network-instance-group network\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":1156.6666259765625,"y":2333.333251953125,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"3ab13842.69d928","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"Y\" />\n<parameter name=\"input.response-code\"\n  value=\"500\" />\n<parameter name=\"input.response-message\"\n  value=\"Failure writing vnf-sub-interface-group\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":1105,"y":1606.6666259765625,"z":"ae8dc4de.f4dc68","wires":[[]]},{"id":"61dbdcf5.d51804","type":"execute","name":"execute RestApiCallNode - PUT port-mirror-configuration","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.genconfig.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-gc\" />\n\n","comments":"","outputs":1,"x":513.3333206176758,"y":2584.9997758865356,"z":"ae8dc4de.f4dc68","wires":[["bfa7d1bb.33253","66bbb3f8.ea0f1c"]]},{"id":"bfa7d1bb.33253","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":813.4031410217285,"y":2606.3313312530518,"z":"ae8dc4de.f4dc68","wires":[["a48c4403.7a82c8"]]},{"id":"66bbb3f8.ea0f1c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":805.8317756652832,"y":2564.8313512802124,"z":"ae8dc4de.f4dc68","wires":[["a48c4403.7a82c8"]]},{"id":"a48c4403.7a82c8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":968.8212852478027,"y":2578.9041776657104,"z":"ae8dc4de.f4dc68","wires":[["264f1cac.56b1a4","f64485c8.232168"]]},{"id":"264f1cac.56b1a4","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Error updating md-sal for gc-configuration' />\n","comments":"","x":1143.3333358764648,"y":2600.000020980835,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"eafe9b0d.7484d8","type":"set","name":"set order-status to Created","xml":"<set>\n<parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.order-status'\n  value='Created' />\n","comments":"","x":420.00001525878906,"y":2429.999858856201,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"57b4b7f.10e8948","type":"set","name":"copy mdsal-gc.gc-configuration[0]. to gc.","xml":"<set>\n<parameter name='gc.' value='mdsal-gc.gc-configuration[0].' />\n","comments":"","x":461.6666564941406,"y":2511.666603088379,"z":"ae8dc4de.f4dc68","wires":[]},{"id":"f64485c8.232168","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"Y\" />\n<parameter name=\"input.response-code\"\n  value=\"500\" />\n<parameter name=\"input.response-message\"\n  value=\"Error updating md-sal for gc-configuration\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":1165,"y":2553.333251953125,"z":"ae8dc4de.f4dc68","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification-deactivate.json
new file mode 100755
index 0000000..0594578
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification-deactivate.json
@@ -0,0 +1 @@
+[{"id":"581097fa.f08428","type":"dgstart","name":"DGSTART","outputs":1,"x":109.99999237060547,"y":85,"z":"556dacae.20cff4","wires":[["d9b9ed23.bda82"]]},{"id":"d9b9ed23.bda82","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":225.2856903076172,"y":125.23810863494873,"z":"556dacae.20cff4","wires":[["bb24c20b.23cad"]]},{"id":"bb24c20b.23cad","type":"method","name":"method generic-configuration-notification-deactivate","xml":"<method rpc='generic-configuration-notification-deactivate' mode='sync'>\n","comments":"","outputs":1,"x":239.42861938476562,"y":165.9999942779541,"z":"556dacae.20cff4","wires":[["4bb7c400.4b7fdc"]]},{"id":"d4b5fa2.03e5108","type":"comment","name":"generic-configuration-notification-deactivate","info":"","comments":"","x":504.3448486328125,"y":32.58634376525879,"z":"556dacae.20cff4","wires":[]},{"id":"4bb7c400.4b7fdc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":158.33333587646484,"y":534.9999856948853,"z":"556dacae.20cff4","wires":[["3c635801.633328","625b4226.ce6f6c","f25f3503.b5e368","250622a8.b0928e","bb670b13.22a4e8","55e6d825.5666e8","23046880.f0a148","defede2a.a7fc2","f97342ec.26eae"]]},{"id":"3c635801.633328","type":"execute","name":"execute readProperties","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":408.33331298828125,"y":308.3333501815796,"z":"556dacae.20cff4","wires":[[]]},{"id":"625b4226.ce6f6c","type":"execute","name":"generate gc-configuration url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.gc-configuration`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.gc-url\"/>\n    <parameter name=\"target\" value=\"{configuration-id}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.configuration-information.configuration-id`\"/>\n","comments":"","outputs":1,"x":423.3332977294922,"y":360.00000381469727,"z":"556dacae.20cff4","wires":[[]]},{"id":"d8184515.19b268","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":758.3332061767578,"y":411.66652488708496,"z":"556dacae.20cff4","wires":[["ee8e0ca5.c303a"]]},{"id":"f25f3503.b5e368","type":"execute","name":"execute RestApiCallNode - GET gc-configuration","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-gc\" />\n\n","comments":"","outputs":1,"x":486.6667175292969,"y":411.66665840148926,"z":"556dacae.20cff4","wires":[["d8184515.19b268"]]},{"id":"ee8e0ca5.c303a","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":886.6665267944336,"y":411.6666507720947,"z":"556dacae.20cff4","wires":[["c1f6c677.83fa88","27d67c5a.263724"]]},{"id":"c1f6c677.83fa88","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"Y\" />\n<parameter name=\"input.response-code\"\n  value=\"500\" />\n<parameter name=\"input.response-message\"\n  value=\"`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":1064.9998397827148,"y":379.9999942779541,"z":"556dacae.20cff4","wires":[[]]},{"id":"27d67c5a.263724","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`\" />\n","comments":"","x":1041.666488647461,"y":431.66667652130127,"z":"556dacae.20cff4","wires":[]},{"id":"f97342ec.26eae","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=\"success\" />\n\n","comments":"","x":381.6666488647461,"y":795.0000114440918,"z":"556dacae.20cff4","wires":[]},{"id":"defede2a.a7fc2","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-gcnotify.log' />\n","comments":"","outputs":1,"x":374.99999618530273,"y":749.080265045166,"z":"556dacae.20cff4","wires":[[]]},{"id":"23046880.f0a148","type":"configure","name":"send success to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"`$generic-configuration-notification-input.ack-final-indicator`\" />\n<parameter name=\"input.response-code\"\n  value=\"`$generic-configuration-notification-input.response-code`\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":405.0000534057617,"y":704.0802936553955,"z":"556dacae.20cff4","wires":[[]]},{"id":"55e6d825.5666e8","type":"execute","name":"execute RestApiCallNode - PUT port-mirror-configuration","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.genconfig.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-gc\" />\n\n","comments":"","outputs":1,"x":515.0001449584961,"y":630.7469568252563,"z":"556dacae.20cff4","wires":[["7ecf2bec.09b4a4","60e9d18f.0ae6a"]]},{"id":"7ecf2bec.09b4a4","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":815.0699653625488,"y":652.0785121917725,"z":"556dacae.20cff4","wires":[["f40a17d9.9878c8"]]},{"id":"60e9d18f.0ae6a","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":807.4986000061035,"y":610.5785322189331,"z":"556dacae.20cff4","wires":[["f40a17d9.9878c8"]]},{"id":"f40a17d9.9878c8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":970.488109588623,"y":624.6513586044312,"z":"556dacae.20cff4","wires":[["2433e521.9188fa"]]},{"id":"2433e521.9188fa","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Error updating md-sal for gc-configuration' />\n","comments":"","x":1143.3334999084473,"y":624.0803337097168,"z":"556dacae.20cff4","wires":[]},{"id":"250622a8.b0928e","type":"set","name":"set order-status to PendingDelete","xml":"<set>\n<parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.order-status'\n  value='PendingDelete' />\n<parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.last-action'\n  value='DeleteGenericConfigurationInstance' />\n<parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.last-rpc-action'\n  value='deactivate' />\n","comments":"","x":438.33349609375,"y":477.4137153625488,"z":"556dacae.20cff4","wires":[]},{"id":"bb670b13.22a4e8","type":"set","name":"copy mdsal-gc.gc-configuration[0]. to gc.","xml":"<set>\n<parameter name='gc.' value='mdsal-gc.gc-configuration[0].' />\n","comments":"","x":463.33348083496094,"y":557.4137840270996,"z":"556dacae.20cff4","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification-unassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification-unassign.json
new file mode 100755
index 0000000..a1464e8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification-unassign.json
@@ -0,0 +1 @@
+[{"id":"201ea6db.6a157a","type":"dgstart","name":"DGSTART","outputs":1,"x":103.33332824707031,"y":83.33332824707031,"z":"462a845d.7a55ec","wires":[["6373faef.9fa8d4"]]},{"id":"6373faef.9fa8d4","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":218.61902618408203,"y":123.57143688201904,"z":"462a845d.7a55ec","wires":[["a586e6ad.c379d8"]]},{"id":"a586e6ad.c379d8","type":"method","name":"method generic-configuration-notification-unassign","xml":"<method rpc='generic-configuration-notification-unassign' mode='sync'>\n","comments":"","outputs":1,"x":232.76195526123047,"y":164.3333225250244,"z":"462a845d.7a55ec","wires":[["5157a50e.bfb98c"]]},{"id":"7182ac18.2a8da4","type":"comment","name":"generic-configuration-notification-unassign","info":"","comments":"","x":497.67818450927734,"y":30.9196720123291,"z":"462a845d.7a55ec","wires":[]},{"id":"5157a50e.bfb98c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":119.99999237060547,"y":896.6666278839111,"z":"462a845d.7a55ec","wires":[["feb106b8.185f08","743bcc3f.3da104","3bc8a57a.fffb6a","15e56521.8bda1b","232ddbdd.dd7dd4","be916a84.c5bca8","7a624451.7c32dc","99aec2bc.e7b95","4283d7ba.9952f8","ebc4f87b.eab5e8","9a8cd3f.4488d3","bcd4a78e.93b5c8","2de89f29.06878","4196df91.f32b6","a5f8fb7a.8abc58","fc495104.33dc3","7139e5d3.00113c","daafa96f.aa2648","18e5598d.08c946","605d38fd.0f4688","e7df9303.b3ed4","aa8c2298.733db","fdcad0e0.6c236"]]},{"id":"feb106b8.185f08","type":"for","name":"for each provided-configuration","xml":"<for silentFailure='true' index='pc-index' start='0' end='`$service-data.provided-configurations.provided-configuration_length`' >\n","comments":"","outputs":1,"x":398.3333168029785,"y":348.33334732055664,"z":"462a845d.7a55ec","wires":[["d390f9b0.7081f8"]]},{"id":"d390f9b0.7081f8","type":"switchNode","name":"switch configuration-ids match?","xml":"<switch test='`$service-data.provided-configurations.provided-configuration[$pc-index].configuration-id\n  == $generic-configuration-notification-input.configuration-information.configuration-id`'>\n","comments":"","outputs":1,"x":678.3333587646484,"y":348.3333168029785,"z":"462a845d.7a55ec","wires":[["d31ad60e.b1f1f8"]]},{"id":"d31ad60e.b1f1f8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":879.9999961853027,"y":347.33325576782227,"z":"462a845d.7a55ec","wires":[["6a4df8fe.70aab8"]]},{"id":"6a4df8fe.70aab8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1001.6665649414062,"y":346.66658878326416,"z":"462a845d.7a55ec","wires":[["af80512.cac3db","70ebbfad.95d07"]]},{"id":"af80512.cac3db","type":"for","name":"for each subsequent provided-configuration","xml":"<for index='pc2-index' start='`$pc-index + 1`' end='`$service-data.provided-configurations.provided-configuration_length`' >\n","comments":"","outputs":1,"x":1244.9999237060547,"y":308.33337593078613,"z":"462a845d.7a55ec","wires":[["4b371501.33929c"]]},{"id":"d89c75f4.daac28","type":"set","name":"copy provided-configuration down 1","xml":"<set>\n<parameter name='service-data.provided-configurations.provided-configuration[$prev-index].'\n  value='`$service-data.provided-configurations.provided-configuration[$pc2-index].`' />\n","comments":"","x":1698.333480834961,"y":329.9999828338623,"z":"462a845d.7a55ec","wires":[]},{"id":"a41927b6.539518","type":"set","name":"set prev-index","xml":"<set>\n<parameter name='prev-index' value='`$pc2-index - 1`' />\n","comments":"","x":1630.0000648498535,"y":283.3333330154419,"z":"462a845d.7a55ec","wires":[]},{"id":"4b371501.33929c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1483.3333129882812,"y":308.33329486846924,"z":"462a845d.7a55ec","wires":[["a41927b6.539518","d89c75f4.daac28"]]},{"id":"70ebbfad.95d07","type":"set","name":"decrement provided-configuration_length","xml":"<set>\n<parameter name='service-data.provided-configurations.provided-configuration_length'\n  value='`$service-data.provided-configurations.provided-configuration_length - 1`' />\n","comments":"","x":1238.3333587646484,"y":369.99998474121094,"z":"462a845d.7a55ec","wires":[]},{"id":"743bcc3f.3da104","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-gcnotify.log' />\n","comments":"","outputs":1,"x":334.9999809265137,"y":1706.6665802001953,"z":"462a845d.7a55ec","wires":[[]]},{"id":"3bc8a57a.fffb6a","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=\"success\" />\n\n","comments":"","x":340.0000114440918,"y":1763.3332171440125,"z":"462a845d.7a55ec","wires":[]},{"id":"15e56521.8bda1b","type":"execute","name":"execute readProperties","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":374.9999771118164,"y":294.9999809265137,"z":"462a845d.7a55ec","wires":[[]]},{"id":"61329315.59089c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":730,"y":461.6666564941406,"z":"462a845d.7a55ec","wires":[["8c8877e4.459b28"]]},{"id":"232ddbdd.dd7dd4","type":"execute","name":"execute RestApiCallNode - GET gc-configuration","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-gc\" />\n\n","comments":"","outputs":1,"x":461.6668167114258,"y":461.6668071746826,"z":"462a845d.7a55ec","wires":[["61329315.59089c"]]},{"id":"be916a84.c5bca8","type":"switchNode","name":"switch response-code","xml":"<switch test='`$generic-configuration-notification-input.response-code`'>\n","comments":"","outputs":1,"x":376.66673278808594,"y":570.0001449584961,"z":"462a845d.7a55ec","wires":[["363cba9.0083046","a644d93e.546118"]]},{"id":"363cba9.0083046","type":"outcome","name":"200","xml":"<outcome value='200'>\n","comments":"","outputs":1,"x":563.3335113525391,"y":601.6668043136597,"z":"462a845d.7a55ec","wires":[["a7987d23.c7534"]]},{"id":"a644d93e.546118","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":566.6667594909668,"y":541.6668109893799,"z":"462a845d.7a55ec","wires":[["60956527.03093c"]]},{"id":"de12b292.1d4d8","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"`$generic-configuration-notification-input.ack-final-indicator`\" />\n<parameter name=\"input.response-code\"\n  value=\"`$generic-configuration-notification-input.response-code`\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":871.6668167114258,"y":518.3334560394287,"z":"462a845d.7a55ec","wires":[[]]},{"id":"a7987d23.c7534","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":698.3334045410156,"y":600.0001354217529,"z":"462a845d.7a55ec","wires":[[]]},{"id":"60956527.03093c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":698.3334045410156,"y":541.6667919158936,"z":"462a845d.7a55ec","wires":[["de12b292.1d4d8","daa831f1.ce526"]]},{"id":"8c8877e4.459b28","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":858.3333206176758,"y":461.6667823791504,"z":"462a845d.7a55ec","wires":[["b12fb0d2.3cd05","82d9f693.6d4228"]]},{"id":"b12fb0d2.3cd05","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"Y\" />\n<parameter name=\"input.response-code\"\n  value=\"500\" />\n<parameter name=\"input.response-message\"\n  value=\"`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":1036.666633605957,"y":430.00012588500977,"z":"462a845d.7a55ec","wires":[[]]},{"id":"82d9f693.6d4228","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`\" />\n","comments":"","x":1013.333251953125,"y":476.66680812835693,"z":"462a845d.7a55ec","wires":[]},{"id":"daa831f1.ce526","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`$generic-configuration-notification-input.response-message`\" />\n","comments":"","x":850.0000915527344,"y":565.0001049041748,"z":"462a845d.7a55ec","wires":[]},{"id":"9d3fc40a.429ad8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":786.6665992736816,"y":891.6666259765625,"z":"462a845d.7a55ec","wires":[["fe1afab9.59d2c8"]]},{"id":"bcd4a78e.93b5c8","type":"execute","name":"execute RestApiCallNode - GET vnf-sub-interface-group","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vsig-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-vsig\" />\n\n","comments":"","outputs":1,"x":484.9999656677246,"y":893.3334865570068,"z":"462a845d.7a55ec","wires":[["9d3fc40a.429ad8"]]},{"id":"7a624451.7c32dc","type":"execute","name":"generate vnf-sub-interface-group URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vnf-sub-interface-group`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`\"/>\n","comments":"","outputs":1,"x":428.33327865600586,"y":648.3332614898682,"z":"462a845d.7a55ec","wires":[[]]},{"id":"99aec2bc.e7b95","type":"execute","name":"generate vnf-sub-interface-group URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{vnf-id}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.vnf-id`\"/>\n","comments":"","outputs":1,"x":428.33325576782227,"y":698.333306312561,"z":"462a845d.7a55ec","wires":[[]]},{"id":"4283d7ba.9952f8","type":"execute","name":"generate vnf-sub-interface-group URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{vnfc-instance-group-function}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.vnfc-instance-group-function`\"/>\n","comments":"","outputs":1,"x":428.33324813842773,"y":748.3332281112671,"z":"462a845d.7a55ec","wires":[[]]},{"id":"ebc4f87b.eab5e8","type":"execute","name":"generate vnf-sub-interface-group URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{network-instance-group-function}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.network-instance-group-function`\"/>\n","comments":"","outputs":1,"x":428.3332710266113,"y":796.666524887085,"z":"462a845d.7a55ec","wires":[[]]},{"id":"9a8cd3f.4488d3","type":"execute","name":"generate vnf-sub-interface-group URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vsig-url\"/>\n    <parameter name=\"target\" value=\"{parent-port-role}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.parent-port-role`\"/>\n","comments":"","outputs":1,"x":428.33324813842773,"y":844.9999847412109,"z":"462a845d.7a55ec","wires":[[]]},{"id":"68d41889.f26408","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Cannot find vnf-sub-interface-group in service ' + $generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`\" />\n","comments":"","x":1073.3337059020996,"y":909.9998378753662,"z":"462a845d.7a55ec","wires":[]},{"id":"fe1afab9.59d2c8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":926.6665840148926,"y":891.666618347168,"z":"462a845d.7a55ec","wires":[["68d41889.f26408","d5349d79.2f912"]]},{"id":"d5349d79.2f912","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"Y\" />\n<parameter name=\"input.response-code\"\n  value=\"500\" />\n<parameter name=\"input.response-message\"\n  value=\"`'Cannot find vnf-sub-interface-group in service ' + $generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":1093.333209991455,"y":864.999870300293,"z":"462a845d.7a55ec","wires":[[]]},{"id":"2de89f29.06878","type":"for","name":"for each vnfc","xml":"<for silentFailure='true' index='vnfc-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc_length`' >\n","comments":"","outputs":1,"x":350,"y":966.666576385498,"z":"462a845d.7a55ec","wires":[["bf4c44a8.d8c458"]]},{"id":"bf4c44a8.d8c458","type":"for","name":"for each vnic","xml":"<for silentFailure='true' index='vnic-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic_length`' >\n","comments":"","outputs":1,"x":518.333309173584,"y":964.9999408721924,"z":"462a845d.7a55ec","wires":[["3bfe2398.75c6ac"]]},{"id":"3bfe2398.75c6ac","type":"for","name":"for each subinterface","xml":"<for silentFailure='true' index='si-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface_length`' >\n","comments":"","outputs":1,"x":709.9999656677246,"y":964.9999904632568,"z":"462a845d.7a55ec","wires":[["a28308b1.7f8368"]]},{"id":"a28308b1.7f8368","type":"switchNode","name":"switch lower-tag-ids equal?","xml":"<switch test='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface[$si-index].vlan-tags.lower-tag-id\n  == $generic-configuration-notification-input.vnr-parameters.lower-tag-id`'>\n","comments":"","outputs":1,"x":946.6666145324707,"y":963.3332023620605,"z":"462a845d.7a55ec","wires":[["eec5958.2c75968"]]},{"id":"eec5958.2c75968","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1141.6666526794434,"y":961.6666584014893,"z":"462a845d.7a55ec","wires":[["67f77c07.c29934"]]},{"id":"67f77c07.c29934","type":"set","name":"set sub-interface-status to 'unassigned'","xml":"<set>\n<parameter name='mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface[$si-index].sub-interface-status'\n  value='unassigned' />\n","comments":"","x":1366.6664924621582,"y":959.9998273849487,"z":"462a845d.7a55ec","wires":[]},{"id":"4196df91.f32b6","type":"for","name":"for each customer-bonding-request","xml":"<for index='cbr-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length`' >\n","comments":"","outputs":1,"x":418.3333168029785,"y":1054.9999599456787,"z":"462a845d.7a55ec","wires":[["2f1abe51.e1c4a2"]]},{"id":"2f1abe51.e1c4a2","type":"switchNode","name":"switch configuration-ids equal?","xml":"<switch test='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$cbr-index].configuration-id\n  == $generic-configuration-notification-input.configuration-information.configuration-id`'>\n","comments":"","outputs":1,"x":713.3333396911621,"y":1054.9998798370361,"z":"462a845d.7a55ec","wires":[["1778fe32.933392"]]},{"id":"1778fe32.933392","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":914.9999580383301,"y":1054.9999027252197,"z":"462a845d.7a55ec","wires":[["b61ca28e.22135"]]},{"id":"b61ca28e.22135","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1051.66654586792,"y":1054.9999141693115,"z":"462a845d.7a55ec","wires":[["29b16af.c298e96","493e3e18.a8299"]]},{"id":"29b16af.c298e96","type":"for","name":"for each subsequent customer-bonding-request","xml":"<for index='cbr2-index' start='`$cbr-index + 1`' end='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length`' >\n","comments":"","outputs":1,"x":1308.3333129882812,"y":1025.0000410079956,"z":"462a845d.7a55ec","wires":[["5e184404.a0005c"]]},{"id":"af6f633f.1bf22","type":"set","name":"copy customer-bonding-request down 1","xml":"<set>\n<parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$cbr-index].[$prev-index].'\n  value='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$cbr-index].[$cbr2-index].`' />\n","comments":"","x":1788.3335647583008,"y":1043.333254814148,"z":"462a845d.7a55ec","wires":[]},{"id":"10512a43.f555c6","type":"set","name":"set prev-index","xml":"<set>\n<parameter name='prev-index' value='`$cbr2-index - 1`' />\n","comments":"","x":1711.666732788086,"y":996.666624546051,"z":"462a845d.7a55ec","wires":[]},{"id":"5e184404.a0005c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1559.9999809265137,"y":1023.3332109451294,"z":"462a845d.7a55ec","wires":[["10512a43.f555c6","af6f633f.1bf22"]]},{"id":"493e3e18.a8299","type":"set","name":"decrement customer-bonding-request_length","xml":"<set>\n<parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length'\n  value='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length - 1`' />\n","comments":"","x":1298.3333435058594,"y":1086.6666278839111,"z":"462a845d.7a55ec","wires":[]},{"id":"a5f8fb7a.8abc58","type":"execute","name":"execute RestApiCallNode - PUT vnf-sub-interface-group","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.vnfsubinterfacegroup.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vsig-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-vsig\" />\n\n","comments":"","outputs":1,"x":481.6666564941406,"y":1163.333251953125,"z":"462a845d.7a55ec","wires":[["5c3a8408.94105c"]]},{"id":"5c3a8408.94105c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":768.3333129882812,"y":1161.6666259765625,"z":"462a845d.7a55ec","wires":[["27b02686.17ee3a"]]},{"id":"3e1f0516.25a45a","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Failure writing vnf-sub-interface-group\" />\n","comments":"","x":1053.3331565856934,"y":1178.333293914795,"z":"462a845d.7a55ec","wires":[]},{"id":"27b02686.17ee3a","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":899.9999618530273,"y":1159.9999771118164,"z":"462a845d.7a55ec","wires":[["3e1f0516.25a45a","a9a8b082.418af"]]},{"id":"a9a8b082.418af","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"Y\" />\n<parameter name=\"input.response-code\"\n  value=\"500\" />\n<parameter name=\"input.response-message\"\n  value=\"Failure writing vnf-sub-interface-group\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":1075.0000228881836,"y":1131.6667251586914,"z":"462a845d.7a55ec","wires":[[]]},{"id":"fc495104.33dc3","type":"execute","name":"generate network-instance-group-network URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.network-instance-group-network`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`\"/>\n","comments":"","outputs":1,"x":449.9999694824219,"y":1225,"z":"462a845d.7a55ec","wires":[[]]},{"id":"7139e5d3.00113c","type":"execute","name":"generate network-instance-group-network URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{network-instance-group-id}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.network-instance-group-id`\"/>\n","comments":"","outputs":1,"x":449.9999542236328,"y":1271.666829109192,"z":"462a845d.7a55ec","wires":[[]]},{"id":"daafa96f.aa2648","type":"execute","name":"generate network-instance-group-network URL","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.nign-url\"/>\n    <parameter name=\"target\" value=\"{network-id}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.vnr-parameters.network-id`\"/>\n","comments":"","outputs":1,"x":449.99993896484375,"y":1315.0000429153442,"z":"462a845d.7a55ec","wires":[[]]},{"id":"b267769a.522148","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":813.666748046875,"y":1387.6669368743896,"z":"462a845d.7a55ec","wires":[["c3a172b7.4a32"]]},{"id":"18e5598d.08c946","type":"execute","name":"execute RestApiCallNode - GET network-instance-group-network","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nign-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-nign\" />\n\n","comments":"","outputs":1,"x":503.3334274291992,"y":1388.333797454834,"z":"462a845d.7a55ec","wires":[["b267769a.522148"]]},{"id":"f9692724.b9c848","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Cannot find network-instance-group-network in service ' + $generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`\" />\n","comments":"","x":1090.000576019287,"y":1411.6668195724487,"z":"462a845d.7a55ec","wires":[]},{"id":"c3a172b7.4a32","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":945.0000457763672,"y":1386.6669292449951,"z":"462a845d.7a55ec","wires":[["f9692724.b9c848","10ebce63.454392"]]},{"id":"10ebce63.454392","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"Y\" />\n<parameter name=\"input.response-code\"\n  value=\"500\" />\n<parameter name=\"input.response-message\"\n  value=\"`'Cannot find network-instance-group-network in service ' + $generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":1111.6666946411133,"y":1365.0002307891846,"z":"462a845d.7a55ec","wires":[[]]},{"id":"605d38fd.0f4688","type":"set","name":"set network-status to unassigned","xml":"<set>\n<parameter name='mdsal-nign.network[0].network-status' value='unassigned' />\n","comments":"","x":404.99996185302734,"y":1451.6666431427002,"z":"462a845d.7a55ec","wires":[]},{"id":"e7df9303.b3ed4","type":"for","name":"for each customer-bonding-request","xml":"<for index='cbr-index' start='0' end='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length`' >\n","comments":"","outputs":1,"x":411.6666564941406,"y":1525,"z":"462a845d.7a55ec","wires":[["bc3a07a0.b0f0a8"]]},{"id":"bc3a07a0.b0f0a8","type":"switchNode","name":"switch configuration-ids equal?","xml":"<switch test='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$cbr-index].configuration-id\n  == $generic-configuration-notification-input.configuration-information.configuration-id`'>\n","comments":"","outputs":1,"x":706.6666793823242,"y":1524.9999198913574,"z":"462a845d.7a55ec","wires":[["e2828627.9da258"]]},{"id":"e2828627.9da258","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":908.3332977294922,"y":1524.999942779541,"z":"462a845d.7a55ec","wires":[["7d6ffcd0.c7d9d4"]]},{"id":"7d6ffcd0.c7d9d4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1044.999885559082,"y":1524.9999542236328,"z":"462a845d.7a55ec","wires":[["e5828168.c3282","c09d77aa.e01ed8"]]},{"id":"e5828168.c3282","type":"for","name":"for each subsequent customer-bonding-request","xml":"<for index='cbr2-index' start='`$cbr-index + 1`' end='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length`' >\n","comments":"","outputs":1,"x":1300,"y":1500,"z":"462a845d.7a55ec","wires":[["574acab7.cf9ec4"]]},{"id":"53bd2896.a56ae8","type":"set","name":"copy customer-bonding-request down 1","xml":"<set>\n<parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$cbr-index].[$prev-index].'\n  value='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$cbr-index].[$cbr2-index].`' />\n","comments":"","x":1785.0002708435059,"y":1518.33323097229,"z":"462a845d.7a55ec","wires":[]},{"id":"d477fb7.3840808","type":"set","name":"set prev-index","xml":"<set>\n<parameter name='prev-index' value='`$cbr2-index - 1`' />\n","comments":"","x":1711.666835784912,"y":1471.666563987732,"z":"462a845d.7a55ec","wires":[]},{"id":"574acab7.cf9ec4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1551.6666679382324,"y":1498.3331699371338,"z":"462a845d.7a55ec","wires":[["d477fb7.3840808","53bd2896.a56ae8"]]},{"id":"c09d77aa.e01ed8","type":"set","name":"decrement customer-bonding-request_length","xml":"<set>\n<parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length'\n  value='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length - 1`' />\n","comments":"","x":1290.0000305175781,"y":1561.6665868759155,"z":"462a845d.7a55ec","wires":[]},{"id":"53f7902d.9645e","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":811.6665802001953,"y":1636.6666259765625,"z":"462a845d.7a55ec","wires":[["be62c173.ab2f6"]]},{"id":"39a45b74.1e8284","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Failure writing network-instance-group network\" />\n","comments":"","x":1096.6664237976074,"y":1653.333293914795,"z":"462a845d.7a55ec","wires":[]},{"id":"be62c173.ab2f6","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":943.3332290649414,"y":1634.9999771118164,"z":"462a845d.7a55ec","wires":[["39a45b74.1e8284","596e5185.7c17a"]]},{"id":"aa8c2298.733db","type":"execute","name":"execute RestApiCallNode - PUT network-instance-group-network","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-network.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nign-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-nign\" />\n\n","comments":"","outputs":1,"x":501.6666259765625,"y":1638.3332796096802,"z":"462a845d.7a55ec","wires":[["53f7902d.9645e"]]},{"id":"596e5185.7c17a","type":"configure","name":"send failure to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\"\n  value=\"`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\"\n  value=\"Y\" />\n<parameter name=\"input.response-code\"\n  value=\"500\" />\n<parameter name=\"input.response-message\"\n  value=\"Failure writing network-instance-group network\" />\n<parameter name=\"input.svc-request-id\"\n  value=\"`$generic-configuration-notification-input.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\"\n  value=\"`$generic-configuration-notification-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\"\n  value=\"`$generic-configuration-notification-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":1119.9999542236328,"y":1608.3334302902222,"z":"462a845d.7a55ec","wires":[[]]},{"id":"fdcad0e0.6c236","type":"execute","name":"generate gc-configuration url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.gc-configuration`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.gc-url\"/>\n    <parameter name=\"target\" value=\"{configuration-id}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-notification-input.configuration-information.configuration-id`\"/>\n","comments":"","outputs":1,"x":398.3333206176758,"y":404.99999618530273,"z":"462a845d.7a55ec","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification.json
new file mode 100755
index 0000000..cd19985
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-notification.json
@@ -0,0 +1 @@
+[{"id":"63b56222.53c10c","type":"dgstart","name":"DGSTART","outputs":1,"x":101.66666412353516,"y":78.33332824707031,"z":"794e08c5.967a38","wires":[["f43fc669.bbb2b8"]]},{"id":"f43fc669.bbb2b8","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":216.95236206054688,"y":118.57143688201904,"z":"794e08c5.967a38","wires":[["d4e42d76.2f865"]]},{"id":"d4e42d76.2f865","type":"method","name":"method generic-configuration-notification","xml":"<method rpc='generic-configuration-notification' mode='sync'>\n","comments":"","outputs":1,"x":200.0952911376953,"y":159.3333225250244,"z":"794e08c5.967a38","wires":[["2d430053.50355"]]},{"id":"663becf9.b215e4","type":"comment","name":"generic-configuration-notification","info":"","comments":"","x":496.0115203857422,"y":25.9196720123291,"z":"794e08c5.967a38","wires":[]},{"id":"eeebbecc.02a6e","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$generic-configuration-notification-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":356.6665802001953,"y":283.3333148956299,"z":"794e08c5.967a38","wires":[["1de83622.ab53ca","7610ca58.648c34","4e280e1f.f8ed5","7a1dd7bf.a0cec8"]]},{"id":"1de83622.ab53ca","type":"outcome","name":"assign","xml":"<outcome value='assign'>\n","comments":"","outputs":1,"x":555.1189101082937,"y":219.52379853384832,"z":"794e08c5.967a38","wires":[["edbdf88d.799378"]]},{"id":"7610ca58.648c34","type":"outcome","name":"activate","xml":"<outcome value='activate'>\n","comments":"","outputs":1,"x":556.3688452584402,"y":266.7767377580915,"z":"794e08c5.967a38","wires":[["69b05b29.692134"]]},{"id":"4e280e1f.f8ed5","type":"outcome","name":"deactivate","xml":"<outcome value='deactivate'>\n","comments":"","outputs":1,"x":563.666593824114,"y":315.7528939928327,"z":"794e08c5.967a38","wires":[["c5f99a0c.f65e08"]]},{"id":"7a1dd7bf.a0cec8","type":"outcome","name":"unassign","xml":"<outcome value='unassign'>\n","comments":"","outputs":1,"x":559.9165137154714,"y":361.00580460684637,"z":"794e08c5.967a38","wires":[["dc40fd05.e761e"]]},{"id":"edbdf88d.799378","type":"call","name":"call GENERIC-RESOURCE-API:generic-configuration-notification-assign","xml":"<call module='GENERIC-RESOURCE-API' rpc='generic-configuration-notification-assign' mode='sync' >\n","comments":"","outputs":1,"x":926.6665496826172,"y":218.3333225250244,"z":"794e08c5.967a38","wires":[["8923dec1.7cfb4"]]},{"id":"2d430053.50355","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":148.33334350585938,"y":356.66668128967285,"z":"794e08c5.967a38","wires":[["eeebbecc.02a6e","174e3f9b.e9865"]]},{"id":"174e3f9b.e9865","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n\n","comments":"","x":343.3333435058594,"y":438.33333015441895,"z":"794e08c5.967a38","wires":[]},{"id":"8923dec1.7cfb4","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1277.3333854675293,"y":216.66667556762695,"z":"794e08c5.967a38","wires":[["5d37cc4a.cbbc24"]]},{"id":"5d37cc4a.cbbc24","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n","comments":"","x":1429.000015258789,"y":214.99999237060547,"z":"794e08c5.967a38","wires":[]},{"id":"69b05b29.692134","type":"call","name":"call GENERIC-RESOURCE-API:generic-configuration-notification-activate","xml":"<call module='GENERIC-RESOURCE-API' rpc='generic-configuration-notification-activate' mode='sync' >\n","comments":"","outputs":1,"x":927.9999389648438,"y":266.6666564941406,"z":"794e08c5.967a38","wires":[["fb975a21.5f50d8"]]},{"id":"fb975a21.5f50d8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1275.6667747497559,"y":265.00000953674316,"z":"794e08c5.967a38","wires":[["522f267f.cb6b28"]]},{"id":"522f267f.cb6b28","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n","comments":"","x":1427.3334045410156,"y":263.3333263397217,"z":"794e08c5.967a38","wires":[]},{"id":"dc40fd05.e761e","type":"call","name":"call GENERIC-RESOURCE-API:generic-configuration-notification-unassign","xml":"<call module='GENERIC-RESOURCE-API' rpc='generic-configuration-notification-unassign' mode='sync' >\n","comments":"","outputs":1,"x":933.9999084472656,"y":359.99998664855957,"z":"794e08c5.967a38","wires":[["8be85800.046918"]]},{"id":"78678a19.d7db04","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1275.6667747497559,"y":313.33335304260254,"z":"794e08c5.967a38","wires":[["3903b8bc.b8d808"]]},{"id":"3903b8bc.b8d808","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n","comments":"","x":1427.3334045410156,"y":311.66666984558105,"z":"794e08c5.967a38","wires":[]},{"id":"c5f99a0c.f65e08","type":"call","name":"call GENERIC-RESOURCE-API:generic-configuration-notification-deactivate","xml":"<call module='GENERIC-RESOURCE-API' rpc='generic-configuration-notification-deactivate' mode='sync' >\n","comments":"","outputs":1,"x":936.6666564941406,"y":314.9999933242798,"z":"794e08c5.967a38","wires":[["78678a19.d7db04"]]},{"id":"8be85800.046918","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1274.0001487731934,"y":358.6666660308838,"z":"794e08c5.967a38","wires":[["783f445d.e96abc"]]},{"id":"783f445d.e96abc","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n","comments":"","x":1425.6667785644531,"y":357.9999828338623,"z":"794e08c5.967a38","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-topology-operation.json
new file mode 100755
index 0000000..c2de555
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_generic-configuration-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"e883356.34111c8","type":"dgstart","name":"DGSTART","outputs":1,"x":112.5,"y":81.25,"z":"82021e0d.6c10f","wires":[["ada3b9c3.42b808"]]},{"id":"ada3b9c3.42b808","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":227.78569793701172,"y":121.48810863494873,"z":"82021e0d.6c10f","wires":[["3899865b.b33ffa"]]},{"id":"3899865b.b33ffa","type":"method","name":"method generic-configuration-topology-operation","xml":"<method rpc='generic-configuration-topology-operation' mode='sync'>\n","comments":"","outputs":1,"x":235.92862701416016,"y":162.2499942779541,"z":"82021e0d.6c10f","wires":[["5086b18d.4ec67"]]},{"id":"547b438e.e416cc","type":"comment","name":"generic-configuration-topology-operation","info":"","comments":"","x":506.84485626220703,"y":28.83634376525879,"z":"82021e0d.6c10f","wires":[]},{"id":"5086b18d.4ec67","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":150.83333587646484,"y":541.7530136108398,"z":"82021e0d.6c10f","wires":[["1b7b7f55.ca75f1","a234c467.3f1f18","4bb61d5b.460ef4","f8173995.43a8a8","25fce84e.946c28","e57bf2bf.a171e","79a2f2.c117fd1","732b206f.3ad56","6b6ce288.401eec"]]},{"id":"1b7b7f55.ca75f1","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"`$bonding-service-response.ackFinalIndicator`\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"success\" />\n\n","comments":"","x":366.6667137145996,"y":889.2529363632202,"z":"82021e0d.6c10f","wires":[]},{"id":"a234c467.3f1f18","type":"call","name":"call GENERIC-RESOURCE-API:validate-generic-configuration-input","xml":"<call module='GENERIC-RESOURCE-API' rpc='validate-generic-configuration-input' mode='sync' >\n","comments":"","outputs":1,"x":533.3333129882812,"y":243.33332920074463,"z":"82021e0d.6c10f","wires":[["c918f524.db0e78"]]},{"id":"c918f524.db0e78","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":843.3334159851074,"y":243.33349132537842,"z":"82021e0d.6c10f","wires":[["c74b0c40.892c5"]]},{"id":"c74b0c40.892c5","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n","comments":"","x":995.0000228881836,"y":241.66668319702148,"z":"82021e0d.6c10f","wires":[]},{"id":"be78a275.a3a47","type":"set","name":"create gc structure and set input data","xml":"<set>\n<parameter name='gc.configuration-id'\n  value='`$generic-configuration-topology-operation-input.configuration-information.configuration-id`' />\n<parameter name='gc.configuration-data.configuration-operation-information.sdnc-request-header.'\n  value='`$generic-configuration-topology-operation-input.sdnc-request-header.`' />\n<parameter name='gc.configuration-data.configuration-operation-information.request-information.'\n  value='`$generic-configuration-topology-operation-input.request-information.`' />\n<parameter name='gc.configuration-data.configuration-operation-information.service-information.'\n  value='`$generic-configuration-topology-operation-input.service-information.`' />\n<parameter name='gc.configuration-data.configuration-operation-information.configuration-information.'\n  value='`$generic-configuration-topology-operation-input.configuration-information.`' />\n<parameter name='gc.configuration-data.configuration-operation-information.gc-request-input.'\n  value='`$generic-configuration-topology-operation-input.gc-request-input.`' />\n","comments":"","x":948.3334121704102,"y":340.00002670288086,"z":"82021e0d.6c10f","wires":[]},{"id":"4bb61d5b.460ef4","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-genconfig.log' />\n","comments":"","outputs":1,"x":360.0000114440918,"y":841.666615486145,"z":"82021e0d.6c10f","wires":[[]]},{"id":"27bbd4ba.ada15c","type":"execute","name":"execute RestApiCallNode - PUT port-mirror-configuration","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.genconfig.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-gc\" />\n\n","comments":"","outputs":1,"x":1009.9999618530273,"y":509.9999656677246,"z":"82021e0d.6c10f","wires":[["944485f3.4bf438","6f7f6f23.f4a3f"]]},{"id":"944485f3.4bf438","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1310.06978225708,"y":531.3315210342407,"z":"82021e0d.6c10f","wires":[["410435ab.f840ec"]]},{"id":"6f7f6f23.f4a3f","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1302.4984169006348,"y":489.83154106140137,"z":"82021e0d.6c10f","wires":[["410435ab.f840ec"]]},{"id":"ff91012.f4d53","type":"execute","name":"generate gc-configuration url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.gc-configuration`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.gc-url\"/>\n    <parameter name=\"target\" value=\"{configuration-id}\"/>\n    <parameter name=\"replacement\" value=\"`$gc.configuration-id`\"/>\n","comments":"","outputs":1,"x":922.9166107177734,"y":443.33325958251953,"z":"82021e0d.6c10f","wires":[[]]},{"id":"410435ab.f840ec","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1465.4879264831543,"y":503.9043674468994,"z":"82021e0d.6c10f","wires":[["c0640b05.6555b8"]]},{"id":"c0640b05.6555b8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Error updating md-sal for gc-configuration' />\n","comments":"","x":1638.3333168029785,"y":503.33334255218506,"z":"82021e0d.6c10f","wires":[]},{"id":"f8173995.43a8a8","type":"execute","name":"execute readProperties","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":394.9999542236328,"y":289.99999046325684,"z":"82021e0d.6c10f","wires":[[]]},{"id":"25fce84e.946c28","type":"execute","name":"generate bonding service url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.bondingservice.server + $prop.bondingservice.uri`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.bs-url\"/>\n    <parameter name=\"target\" value=\"{action}\"/>\n    <parameter name=\"replacement\" value=\"`$generic-configuration-topology-operation-input.sdnc-request-header.svc-action`\"/>\n","comments":"","outputs":1,"x":413.3332977294922,"y":644.9999618530273,"z":"82021e0d.6c10f","wires":[[]]},{"id":"6b6ce288.401eec","type":"execute","name":"execute RestApiCallNode - POST to bonding service","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.bondingservice.templatefile`\" />\n    <parameter name='restapiUrl' value='`$tmp.bs-url`' />\n    <parameter name='restapiUser' value='`$prop.bondingservice.user`' />\n    <parameter name='restapiPassword' value='`$prop.bondingservice.password`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name=\"responsePrefix\" value=\"bonding-service-response\" />\n    <parameter name='customHttpHeaders'\n      value=\"`'Authorization=Basic ' + $prop.bondingservice.authorization`\" />\n","comments":"","outputs":1,"x":488.33331298828125,"y":693.3332386016846,"z":"82021e0d.6c10f","wires":[["242a445f.6d5b3c"]]},{"id":"242a445f.6d5b3c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":760.8317565917969,"y":693.1649036407471,"z":"82021e0d.6c10f","wires":[["81f40e9f.9fbe8"]]},{"id":"81f40e9f.9fbe8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Error calling bonding service; ' + $error-message`\" />\n","comments":"","x":913.3332977294922,"y":692.3333005905151,"z":"82021e0d.6c10f","wires":[]},{"id":"e699d882.2d0db8","type":"set","name":"set order-status, etc","xml":"<set>\n<parameter name='gc.configuration-data.configuration-oper-status.order-status'\n  value='PendingCreate' />\n<parameter name='gc.configuration-data.configuration-oper-status.last-rpc-action'\n  value='assign' />\n<parameter name='gc.configuration-data.configuration-oper-status.last-action'\n  value='CreateGenericConfigurationInstance' />\n","comments":"","x":896.6666641235352,"y":393.3333101272583,"z":"82021e0d.6c10f","wires":[]},{"id":"85748cfd.60ffd","type":"set","name":"dummy set ackFinalIndicator","xml":"<set>\n<parameter name='bonding-service-response.ackFinalIndicator' value='N' />\n","comments":"","x":411.6667137145996,"y":743.3334188461304,"z":"82021e0d.6c10f","wires":[]},{"id":"e57bf2bf.a171e","type":"set","name":"set service-object-path","xml":"<set>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $service-data.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n","comments":"","x":391.6666603088379,"y":793.3332767486572,"z":"82021e0d.6c10f","wires":[]},{"id":"79a2f2.c117fd1","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$generic-configuration-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":376.66666412353516,"y":433.3333320617676,"z":"82021e0d.6c10f","wires":[["c3bb199d.f6e318"]]},{"id":"c3bb199d.f6e318","type":"outcome","name":"assign","xml":"<outcome value='assign'>\n","comments":"","outputs":1,"x":536.6666259765625,"y":431.6666564941406,"z":"82021e0d.6c10f","wires":[["9a06a155.15de7"]]},{"id":"9a06a155.15de7","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":685,"y":429.9999694824219,"z":"82021e0d.6c10f","wires":[["be78a275.a3a47","e699d882.2d0db8","ff91012.f4d53","27bbd4ba.ada15c"]]},{"id":"732b206f.3ad56","type":"set","name":"set notification-url","xml":"<set>\n<parameter name='notification-url'\n  value=\"`$prop.controller.url + '/restconf/operations/GENERIC-RESOURCE-API:generic-configuration-notification'`\" />\n","comments":"","x":379.9999771118164,"y":596.6667308807373,"z":"82021e0d.6c10f","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_get-complex-resource-service-model.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_get-complex-resource-service-model.json
new file mode 100755
index 0000000..f209dcc
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_get-complex-resource-service-model.json
@@ -0,0 +1 @@
+[{"id":"7246862.0315f78","type":"dgstart","name":"DGSTART","outputs":1,"x":167.00390625,"y":95.00390625,"z":"c1342c00.7cc71","wires":[["149dc604.07732a"]]},{"id":"149dc604.07732a","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":378.86101722717285,"y":200.4801082611084,"z":"c1342c00.7cc71","wires":[["8d2d3504.574348"]]},{"id":"8d2d3504.574348","type":"method","name":"get-complex-resource-service-model","xml":"<method rpc='get-complex-resource-service-model' mode='sync'>\n","comments":"","outputs":1,"x":357.7777976989746,"y":281.99200439453125,"z":"c1342c00.7cc71","wires":[["8392c399.34438"]]},{"id":"8392c399.34438","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":382.7181854248047,"y":369.2896385192871,"z":"c1342c00.7cc71","wires":[["af8eb329.85854","fca55797.b483e8","882ed672.708e58","c214de01.d27ed","43f711ff.395f1"]]},{"id":"af8eb329.85854","type":"get-resource","name":"get-resource COMPLEX_RESOURCE","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from COMPLEX_RESOURCE \n  WHERE customization_uuid = $get-complex-resource-service-model-input.customization-uuid'\n  pfx='db.complex-resource'>","comments":"","outputs":1,"x":653.0039367675781,"y":369.00391006469727,"z":"c1342c00.7cc71","wires":[["fb31d15e.ce461","79350b6.fc3eff4"]]},{"id":"9bb1c659.926d78","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=\"`'No complex resource found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`\" />\n","comments":"","x":1104.0873260498047,"y":367.75403690338135,"z":"c1342c00.7cc71","wires":[]},{"id":"fb31d15e.ce461","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":905.3374061584473,"y":363.111252784729,"z":"c1342c00.7cc71","wires":[["9bb1c659.926d78"]]},{"id":"79350b6.fc3eff4","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":899.0874061584473,"y":395.611252784729,"z":"c1342c00.7cc71","wires":[["9bb1c659.926d78"]]},{"id":"3915ef9f.1f9e2","type":"comment","name":"If service model uuid not passed in input, use from service-data","info":"","comments":"","x":748.380859375,"y":329.78454971313477,"z":"c1342c00.7cc71","wires":[]},{"id":"fca55797.b483e8","type":"get-resource","name":"get-resource ATTRIBUTE_VALUE_PAIR","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from ATTRIBUTE_VALUE_PAIR \n  WHERE resource_uuid = $db.complex-resource.uuid\n  and resource_type = $db.complex-resource.type'\n  pfx='db.av-pair'>","comments":"","outputs":1,"x":651.00390625,"y":497.0039234161377,"z":"c1342c00.7cc71","wires":[["c3fdf072.cbc36","bd6efdf4.3a7f1","39121dbd.f60c12"]]},{"id":"fbd9c790.21e678","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=\"`'No attribute found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`\" />\n","comments":"","x":1104.0873260498047,"y":494.7540330886841,"z":"c1342c00.7cc71","wires":[]},{"id":"c3fdf072.cbc36","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":905.3374061584473,"y":490.11124897003174,"z":"c1342c00.7cc71","wires":[["fbd9c790.21e678"]]},{"id":"bd6efdf4.3a7f1","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":899.0874061584473,"y":522.6112489700317,"z":"c1342c00.7cc71","wires":[["fbd9c790.21e678"]]},{"id":"39121dbd.f60c12","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":902.0039329528809,"y":553.0039405822754,"z":"c1342c00.7cc71","wires":[["2c8a69c5.55d806"]]},{"id":"2c8a69c5.55d806","type":"for","name":"for 0..av-pair_length","xml":"<for silentFailure='true' index='idx' start='0' end='`$db.av-pair_length`' >\n","comments":"","outputs":1,"x":1081.0039520263672,"y":553.0039405822754,"z":"c1342c00.7cc71","wires":[["c6cc13a6.0adc5"]]},{"id":"c6cc13a6.0adc5","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1294.00390625,"y":553.00390625,"z":"c1342c00.7cc71","wires":[["17cbace9.1db563","a1a1fd08.f5777","abbe50b8.6f184","941f5f58.ff131","3199b3e1.936edc","9a866943.9112b8"]]},{"id":"17cbace9.1db563","type":"switchNode","name":"switch cr_function","xml":"<switch test=\"`$db.sdn-circuit-req[$idx].attribute-name == 'cr_function' `\">","comments":"","outputs":1,"x":1486.0040283203125,"y":553.003924369812,"z":"c1342c00.7cc71","wires":[["e60bfd5e.02208"]]},{"id":"5e6fa5c7.eecf2c","type":"other","name":"set output cr-function","xml":"<set>\n<parameter name='get-complex-resource-service-model-output.cr-function' value='`$db.sdn-circuit-req[$idx].attribute-value`' />\n","comments":"","outputs":1,"x":1894.504322052002,"y":556.4205236434937,"z":"c1342c00.7cc71","wires":[[]]},{"id":"a1a1fd08.f5777","type":"switchNode","name":"switch cr_role","xml":"<switch test=\"`$db.sdn-circuit-req[$idx].attribute-name == 'cr_role'`\">","comments":"","outputs":1,"x":1478.5041580200195,"y":599.0039749145508,"z":"c1342c00.7cc71","wires":[["f0c30516.5d8e38"]]},{"id":"2b45c282.ff1aee","type":"other","name":"set output cr-role","xml":"<set>\n<parameter name=\"get-complex-resource-service-model-output.cr-role\" value=\"`$db.sdn-circuit-req[$idx].attribute-value`\" />\n","comments":"","outputs":1,"x":1882.0041961669922,"y":602.4205322265625,"z":"c1342c00.7cc71","wires":[[]]},{"id":"abbe50b8.6f184","type":"switchNode","name":"switch cr_type","xml":"<switch test=\"`$db.sdn-circuit-req[$idx].attribute-name == 'cr_type'`\">","comments":"","outputs":1,"x":1482.5039138793945,"y":645.0039110183716,"z":"c1342c00.7cc71","wires":[["b7345862.d6b868"]]},{"id":"f089c8db.52f4a8","type":"other","name":"set output cr-type","xml":"<set>\n<parameter name=\"get-complex-resource-service-model-output.cr-type\" value=\"`$db.sdn-circuit-req[$idx].attribute-value`\" />\n","comments":"","outputs":1,"x":1883.0041666030884,"y":649.4205408096313,"z":"c1342c00.7cc71","wires":[[]]},{"id":"941f5f58.ff131","type":"switchNode","name":"switch network_collection_function","xml":"<switch test=\"`$db.sdn-circuit-req[$idx].attribute-name == 'network_collection_function'`\">","comments":"","outputs":1,"x":1547.5040283203125,"y":694.0039501190186,"z":"c1342c00.7cc71","wires":[["dbfe27cd.9e7158"]]},{"id":"d901122c.d751c","type":"other","name":"set output network_collection_function","xml":"<set>\n<parameter name=\"get-complex-resource-service-model-output.network-collection-function\" value=\"`$db.sdn-circuit-req[$idx].attribute-value`\" />\n","comments":"","outputs":1,"x":2071.004409790039,"y":694.4206619262695,"z":"c1342c00.7cc71","wires":[[]]},{"id":"3199b3e1.936edc","type":"switchNode","name":"switch network_collection_description","xml":"<switch test=\"`$db.sdn-circuit-req[$idx].attribute-name == 'network_collection_description'`\">","comments":"","outputs":1,"x":1552.50390625,"y":746.00390625,"z":"c1342c00.7cc71","wires":[["6522088b.b68998"]]},{"id":"6cec4f8f.bbbde","type":"other","name":"set output network_collection_description","xml":"<set>\n<parameter name=\"get-complex-resource-service-model-output.network-collection-description\" value=\"`$db.sdn-circuit-req[$idx].attribute-value`\" />\n","comments":"","outputs":1,"x":2076.0042877197266,"y":753.420618057251,"z":"c1342c00.7cc71","wires":[[]]},{"id":"9a866943.9112b8","type":"switchNode","name":"switch subinterface_network_quantity","xml":"<switch test=\"`$db.sdn-circuit-req[$idx].attribute-name == 'subinterface_network_quantity'`\">","comments":"","outputs":1,"x":1552.5039367675781,"y":797.0039510726929,"z":"c1342c00.7cc71","wires":[["ceff2e83.44c5e"]]},{"id":"dc61aeab.805fe","type":"other","name":"set output subinterface_network_quantity","xml":"<set>\n<parameter name=\"get-complex-resource-service-model-output.subinterface-network-quantity\" value=\"`$db.sdn-circuit-req[$idx].attribute-value`\" />\n","comments":"","outputs":1,"x":2098.004325866699,"y":799.4206323623657,"z":"c1342c00.7cc71","wires":[[]]},{"id":"882ed672.708e58","type":"get-resource","name":"get-resource NETWORK-MODEL","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from NETWORK_MODEL \n  WHERE complex_resource_uuid = $db.complex-resource.uuid'\n  pfx='db.network-model'>","comments":"","outputs":1,"x":661.50390625,"y":880.0039219856262,"z":"c1342c00.7cc71","wires":[["e0511d98.9cd7d","9be95fd4.166bc"]]},{"id":"5ba01895.439578","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=\"No network model found\" />\n","comments":"","x":1115.5873260498047,"y":877.7540330886841,"z":"c1342c00.7cc71","wires":[]},{"id":"e0511d98.9cd7d","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":916.8374061584473,"y":873.1112489700317,"z":"c1342c00.7cc71","wires":[["5ba01895.439578"]]},{"id":"9be95fd4.166bc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":910.5874061584473,"y":905.6112489700317,"z":"c1342c00.7cc71","wires":[["5ba01895.439578"]]},{"id":"c214de01.d27ed","type":"get-resource","name":"get-resource RESOURCE_POLICY_TO_TARGET_NODE_MAPPING","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from RESOURCE_POLICY_TO_TARGET_NODE_MAPPING\n  WHERE target_node_uuid = $db.network-model.uuid\n  AND target_node_customization_uuid = db.network-model.customization-uuid'\n  pfx='db.respoltargetnodemap' >","comments":"","outputs":1,"x":776.5039367675781,"y":980.0040149688721,"z":"c1342c00.7cc71","wires":[["d87c1534.00efa8","1cad27f0.155218"]]},{"id":"b73674e1.097898","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=\"No resource_policy_to_target_node_mapping found\"  />\n","comments":"","x":1374.5873374938965,"y":985.7540988922119,"z":"c1342c00.7cc71","wires":[]},{"id":"d87c1534.00efa8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1175.837417602539,"y":981.1113147735596,"z":"c1342c00.7cc71","wires":[["b73674e1.097898"]]},{"id":"1cad27f0.155218","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1169.587417602539,"y":1013.6113147735596,"z":"c1342c00.7cc71","wires":[["b73674e1.097898"]]},{"id":"43f711ff.395f1","type":"get-resource","name":"get-resource RESOURCE_POLICY ","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"SELECT * from RESOURCE_POLICY  \n  WHERE policy_uuid = $db.respoltargetnodemap.policy_uuid\n  and policy_type = 'ecomp.policies.External' \"\n  pfx='db.resource-policy'>","comments":"","outputs":1,"x":667.5039215087891,"y":1114.0039138793945,"z":"c1342c00.7cc71","wires":[["163efefb.1f83e1","5d15704a.bf524","d793ba58.2e3dc8"]]},{"id":"dc73836a.6adea","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=\"`'No complex resource found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`\" />\n","comments":"","x":1140.5873260498047,"y":1117.7540159225464,"z":"c1342c00.7cc71","wires":[]},{"id":"163efefb.1f83e1","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":941.8374061584473,"y":1113.111231803894,"z":"c1342c00.7cc71","wires":[["dc73836a.6adea"]]},{"id":"5d15704a.bf524","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":935.5874061584473,"y":1145.611231803894,"z":"c1342c00.7cc71","wires":[["dc73836a.6adea"]]},{"id":"d793ba58.2e3dc8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":938.5039329528809,"y":1176.0039234161377,"z":"c1342c00.7cc71","wires":[["638f63d4.2707dc"]]},{"id":"638f63d4.2707dc","type":"for","name":"for 0..resource-policy_length","xml":"<for silentFailure='true' index='idx' start='0' end='`$db.resource-policy_length`' >\n","comments":"","outputs":1,"x":1146.5039672851562,"y":1176.003978729248,"z":"c1342c00.7cc71","wires":[["b37f473d.ce6b48"]]},{"id":"b37f473d.ce6b48","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1408.5039596557617,"y":1179.0039777755737,"z":"c1342c00.7cc71","wires":[["acd487ad.c295a8","3c1c13d9.4dd6dc","8fde22b4.2e926"]]},{"id":"acd487ad.c295a8","type":"switchNode","name":"switch network naming policy","xml":"<switch test=\"`$db.resource-policy[$idx].property-type == 'Name' and $db.resource-policy[$idx].property-name == 'Network Collection Name'`\">","comments":"","outputs":1,"x":1664.5041809082031,"y":1178.0040845870972,"z":"c1342c00.7cc71","wires":[["5f96620e.7e45dc"]]},{"id":"9e19f5ec.575f78","type":"other","name":"set output network-naming-policy","xml":"<set>\n<parameter name=\"get-complex-resource-service-model-output.network-naming-policy\" value=\"`$db.resource-policy[$idx].policy-name`\" />\n","comments":"","outputs":1,"x":2148.0047454833984,"y":1176.4208145141602,"z":"c1342c00.7cc71","wires":[[]]},{"id":"3c1c13d9.4dd6dc","type":"switchNode","name":"switch subnet-assignment-policy","xml":"<switch test=\"`$db.resource-policy[$idx].property-type == 'subnetwork assignments' and $db.resource-policy[$idx].property-name == 'subnet'`\">","comments":"","outputs":1,"x":1670.00390625,"y":1227.00390625,"z":"c1342c00.7cc71","wires":[["3a98b11c.474f1e"]]},{"id":"a3edcd86.5d9e6","type":"other","name":"set output subnet-assignment-policy","xml":"<set>\n<parameter name=\"get-complex-resource-service-model-output.subnet-assignment-policy\" value=\"`$db.resource-policy[$idx].policy-name`\" />\n","comments":"","outputs":1,"x":2168.5042572021484,"y":1228.4205703735352,"z":"c1342c00.7cc71","wires":[[]]},{"id":"8fde22b4.2e926","type":"switchNode","name":"switch vpn-binding-policy","xml":"<switch test=\"`$db.resource-policy[$idx].property-type == 'network assignments' and $db.resource-policy[$idx].property-name == 'route target'`\">","comments":"","outputs":1,"x":1650.0039596557617,"y":1274.0040826797485,"z":"c1342c00.7cc71","wires":[["b18f5745.6edad8"]]},{"id":"478beed0.6a4bc","type":"other","name":"set output vpn-binding-policy","xml":"<set>\n<parameter name=\"get-complex-resource-service-model-output.vpn-binding-policy\" value=\"`$db.resource-policy[$idx].policy-name`\" />\n","comments":"","outputs":1,"x":2167.5042572021484,"y":1275.4205856323242,"z":"c1342c00.7cc71","wires":[[]]},{"id":"e60bfd5e.02208","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1676.50390625,"y":555.00390625,"z":"c1342c00.7cc71","wires":[["5e6fa5c7.eecf2c"]]},{"id":"f0c30516.5d8e38","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1665.5039176940918,"y":601.00390625,"z":"c1342c00.7cc71","wires":[["2b45c282.ff1aee"]]},{"id":"b7345862.d6b868","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1659.50390625,"y":645.00390625,"z":"c1342c00.7cc71","wires":[["f089c8db.52f4a8"]]},{"id":"dbfe27cd.9e7158","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1809.50390625,"y":696.00390625,"z":"c1342c00.7cc71","wires":[["d901122c.d751c"]]},{"id":"6522088b.b68998","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1816.50390625,"y":754.00390625,"z":"c1342c00.7cc71","wires":[["6cec4f8f.bbbde"]]},{"id":"ceff2e83.44c5e","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1813.50390625,"y":801.00390625,"z":"c1342c00.7cc71","wires":[["dc61aeab.805fe"]]},{"id":"5f96620e.7e45dc","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1907.0039520263672,"y":1179.003958582878,"z":"c1342c00.7cc71","wires":[["9e19f5ec.575f78"]]},{"id":"3a98b11c.474f1e","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1929.0039806365967,"y":1228.0039596557617,"z":"c1342c00.7cc71","wires":[["a3edcd86.5d9e6"]]},{"id":"b18f5745.6edad8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1920.00390625,"y":1275.00390625,"z":"c1342c00.7cc71","wires":[["478beed0.6a4bc"]]},{"id":"a06eb349.3703e","type":"comment","name":"Input/Output","info":"Input:\n\tget-complex-resource-service-model-input.customization-uuid\n\t\nOutput\n\tget-complex-resource-service-model-output.network-naming-policy\n\tget-complex-resource-service-model-output.subnet-assignment-policy\n\tget-complex-resource-service-model-output.vpn-binding-policy\n\tget-complex-resource-service-model-output.cr-function\n\tget-complex-resource-service-model-output.cr-role\n\tget-complex-resource-service-model-output.cr-type\n\tget-complex-resource-service-model-output.network-collection-function\n\tget-complex-resource-service-model-output.network-collection-description\n\tget-complex-resource-service-model-output.subinterface-network-quantity\n\n\t","comments":"","x":365.00390625,"y":108.00391864776611,"z":"c1342c00.7cc71","wires":[]},{"id":"f2e46e54.4cd1a","type":"comment","name":"tosca-vlan-tagging-1030","info":"","comments":"","x":400.00390625,"y":75.00390625,"z":"c1342c00.7cc71","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_get-data-from-policy.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_get-data-from-policy.json
new file mode 100755
index 0000000..c2101f6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_get-data-from-policy.json
@@ -0,0 +1,1026 @@
+[

+    {

+        "id": "b83fc37f.f69e88",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 160,

+        "y": 45,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "78e991f6.6f7c58"

+            ]

+        ]

+    },

+    {

+        "id": "1dd92dc7.5da5d2",

+        "type": "method",

+        "name": "method get-data-from-policy",

+        "xml": "<method rpc='get-data-from-policy' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 750,

+        "y": 45,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "33ec20fb.28aa18"

+            ]

+        ]

+    },

+    {

+        "id": "78e991f6.6f7c58",

+        "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": 427.9403991699219,

+        "y": 45.32145690917969,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "1dd92dc7.5da5d2"

+            ]

+        ]

+    },

+    {

+        "id": "cbf06f1d.725928",

+        "type": "comment",

+        "name": "Call Policy Manager getPolicy",

+        "info": "",

+        "comments": "",

+        "x": 314,

+        "y": 228,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "46375ae1.7b558c",

+        "type": "execute",

+        "name": "execute RestapiCallNode",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.pm.getpolicy.templatefile`\" />\n    <parameter name='restapiUrl' value=\"`$prop.policy-manager.url + '/pdp/api/getConfig'`\" />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />  \n    <parameter name='customHttpHeaders'\n      value=\"`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `\" />\n\t<parameter name=\"responsePrefix\" value=\"tmp.pm-response\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 468,

+        "y": 352,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "a789fff2.8e6668",

+                "f694d7c1.52ec1"

+            ]

+        ]

+    },

+    {

+        "id": "19b66f4d.72dee9",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n<parameter name='tmp.policy-name' value=\"`$get-data-from-policy-input.policy-instance-name`\" />\n",

+        "comments": "",

+        "x": 414,

+        "y": 273,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "4ce19c9e.b25124",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 271,

+        "y": 271,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "19b66f4d.72dee9",

+                "46375ae1.7b558c",

+                "ac19e1c6.8e36a8",

+                "d8d1e5cb.101cc",

+                "f617542d.84f16",

+                "a278ba14.2107c8"

+            ]

+        ]

+    },

+    {

+        "id": "ac19e1c6.8e36a8",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"com.att.sdnctl.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: get-data-from-policy: restapi-call-node Call Policy Manager getPolicy\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 414,

+        "y": 313,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d7e1c7cf.a18d1",

+        "type": "execute",

+        "name": "execute readProperties",

+        "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": 977,

+        "y": 117,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "59fd6138.91c4f8",

+                "d5dccc24.0e693"

+            ]

+        ]

+    },

+    {

+        "id": "59fd6138.91c4f8",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1224,

+        "y": 95,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "b5511e69.3d8618"

+            ]

+        ]

+    },

+    {

+        "id": "d5dccc24.0e693",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1222,

+        "y": 136,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "947a2b69.ec9398"

+            ]

+        ]

+    },

+    {

+        "id": "33ec20fb.28aa18",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 162,

+        "y": 85,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "4ce19c9e.b25124",

+                "a8f9fb15.acf4e"

+            ]

+        ]

+    },

+    {

+        "id": "72af1062.d19fd8",

+        "type": "comment",

+        "name": "Read properties",

+        "info": "",

+        "comments": "",

+        "x": 952,

+        "y": 70,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "f3a9b2ce.918548",

+        "type": "comment",

+        "name": "Process Policy Manager response",

+        "info": "Use the three naming components returned from Policy Manager to build the name\n\nExtract from json response three data components:\n\n1. VNFNAME\n2. CONSTANT_TAG\n3. SEQUENCE",

+        "comments": "",

+        "x": 498,

+        "y": 443,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "d8d1e5cb.101cc",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"jsonStringToCtx\">\n\t<parameter name=\"source\" value=\"policy-config\" />\n\t<parameter name=\"outputPath\" value=\"jsonContextPrefix\" />\n\t<parameter name=\"isEscaped\" value=\"true\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 474,

+        "y": 523,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "9bb879f3.58bda",

+                "8ddbc03f.308d9"

+            ]

+        ]

+    },

+    {

+        "id": "f617542d.84f16",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: get-data-from-policy: call jsonStringToCtx\"/>\n<parameter name='field3' value='`$policy-config`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 419,

+        "y": 481,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a789fff2.8e6668",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 671,

+        "y": 342,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "b2b110f6.fc0288"

+            ]

+        ]

+    },

+    {

+        "id": "9a2680ce.7f8d88",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: get-data-from-policy: Error calling Policy Manager getPolicy\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 932,

+        "y": 303,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f694d7c1.52ec1",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 673,

+        "y": 384,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "4b6fc822.22489"

+            ]

+        ]

+    },

+    {

+        "id": "f53edd55.57cb58",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: get-data-from-policy: getPolicy SUCCESS\"/>\n<parameter name='field3' value='`$tmp.pm-response.type`' />\n<parameter name='field4' value='`$tmp.pm-response.matchingConditions`' />\n<parameter name='field5' value='`$tmp.pm-response.config`' />\n<parameter name='field6' value='`$tmp.pm-response.response-code`' />\n<parameter name='field7' value='`$tmp.pm-response.response-message`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 927,

+        "y": 380,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bf2f9549.b5432",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n<parameter name='policy-config' value=\"`$tmp.pm-response.config`\" />\n",

+        "comments": "",

+        "x": 928,

+        "y": 418,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "9bb879f3.58bda",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 671,

+        "y": 524,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "e4a38d89.8cc9c8"

+            ]

+        ]

+    },

+    {

+        "id": "bb351685.940688",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: get-data-from-policy: Error calling jsonStringToCtx\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 925,

+        "y": 515,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8ddbc03f.308d9",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 491,

+        "y": 573,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "3c75d70f.d3c808"

+            ]

+        ]

+    },

+    {

+        "id": "596244e1.06352c",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: get-data-from-policy: jsonStringToCtx SUCCESS: policyName|policy-data|\"/>\n<parameter name='field3' value='`$jsonContextPrefix.policyName`' />\n<parameter name='field4' value='`$jsonContextPrefix.content.policy-data`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 674,

+        "y": 620,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3c75d70f.d3c808",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 502,

+        "y": 616,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "596244e1.06352c",

+                "dd037e4c.c7bb3",

+                "5c9052.5d187fb",

+                "17b1aaaa.debfa5",

+                "11920eb2.868ba1"

+            ]

+        ]

+    },

+    {

+        "id": "6c8a4a5d.6a7de4",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='502' />\n<parameter name='error-message' value='get-data-from-policy: getPolicy call to Policy Manger failed' />\n",

+        "comments": "",

+        "x": 950,

+        "y": 341,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "f2b6fd24.7801",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='504' />\n<parameter name='error-message' value='get-data-from-policy: failed to parse Policy Manger getPolicy response' />\n",

+        "comments": "",

+        "x": 941,

+        "y": 554,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "b2b110f6.fc0288",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 798,

+        "y": 341,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "9a2680ce.7f8d88",

+                "6c8a4a5d.6a7de4"

+            ]

+        ]

+    },

+    {

+        "id": "e4a38d89.8cc9c8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 799,

+        "y": 524,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "bb351685.940688",

+                "f2b6fd24.7801"

+            ]

+        ]

+    },

+    {

+        "id": "61c23f62.ad7b28",

+        "type": "comment",

+        "name": "Validate inputs",

+        "info": "",

+        "comments": "",

+        "x": 948,

+        "y": 178,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "392811b2.b8197e",

+        "type": "switchNode",

+        "name": "switch input.policy-instance-name",

+        "xml": "<switch test='`$get-data-from-policy-input.policy-instance-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1007,

+        "y": 226,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "71c6380.f2d7cc8"

+            ]

+        ]

+    },

+    {

+        "id": "71c6380.f2d7cc8",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1224,

+        "y": 229,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "ac7758e6.06c038"

+            ]

+        ]

+    },

+    {

+        "id": "a8f9fb15.acf4e",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 270,

+        "y": 178,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "d7e1c7cf.a18d1",

+                "392811b2.b8197e"

+            ]

+        ]

+    },

+    {

+        "id": "d0858194.bb868",

+        "type": "comment",

+        "name": "Read properties and validate inputs",

+        "info": "",

+        "comments": "",

+        "x": 341,

+        "y": 132,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "4b6fc822.22489",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 799,

+        "y": 385,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "f53edd55.57cb58",

+                "bf2f9549.b5432",

+                "9c6a1592.fb19c8"

+            ]

+        ]

+    },

+    {

+        "id": "9c6a1592.fb19c8",

+        "type": "switchNode",

+        "name": "switch response-code",

+        "xml": "<switch test='`$tmp.pm-response.response-code`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 983,

+        "y": 462,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "6e86997d.26955"

+            ]

+        ]

+    },

+    {

+        "id": "6e86997d.26955",

+        "type": "outcome",

+        "name": "500",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1165,

+        "y": 463,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "659860d.dc39e2"

+            ]

+        ]

+    },

+    {

+        "id": "659860d.dc39e2",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1168,

+        "y": 511,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "10b87f4.b81b681",

+                "cb7b17e7.127258"

+            ]

+        ]

+    },

+    {

+        "id": "10b87f4.b81b681",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: get-data-from-policy: Error calling Policy Manager getPolicy\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1316,

+        "y": 489,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "cb7b17e7.127258",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='502' />\n<parameter name='error-message' value='get-data-from-policy: getPolicy call to Policy Manger failed' />\n",

+        "comments": "",

+        "x": 1336,

+        "y": 528,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "b5511e69.3d8618",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1380,

+        "y": 95,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "4f062576.7b6584"

+            ]

+        ]

+    },

+    {

+        "id": "947a2b69.ec9398",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1359,

+        "y": 138,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "24195f46.ca98f8",

+                "566a8d54.f462dc"

+            ]

+        ]

+    },

+    {

+        "id": "4f062576.7b6584",

+        "type": "GenericXML",

+        "name": "record",

+        "xml": "<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: get-data-from-policy: read properties file.\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1527,

+        "y": 95,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "24195f46.ca98f8",

+        "type": "GenericXML",

+        "name": "record",

+        "xml": "<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: get-data-from-policy: Could not read properties file.\"/>\n<parameter name=\"field3\" value='`$prop.restapi.pm.getpolicy.templatefile`'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1528,

+        "y": 135,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "566a8d54.f462dc",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='501' />\n<parameter name='error-message' value='get-data-from-policy: could not read generic-resource-api properties' />\n",

+        "comments": "",

+        "x": 1547,

+        "y": 176,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "ac7758e6.06c038",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1368,

+        "y": 229,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "d28d8a99.9ae948",

+                "3c7d35d5.15560a"

+            ]

+        ]

+    },

+    {

+        "id": "d28d8a99.9ae948",

+        "type": "GenericXML",

+        "name": "record",

+        "xml": "<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: get-data-from-policy: input.policy-instance-name is not set\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1530,

+        "y": 228,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3c7d35d5.15560a",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='507' />\n<parameter name='error-message' value='get-data-from-policy: input.policy-instance-name is not set' />\n",

+        "comments": "",

+        "x": 1545,

+        "y": 264,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "925a65d4.ac3ab8",

+        "type": "comment",

+        "name": "Loop thru policy-data when it is a list",

+        "info": "",

+        "comments": "",

+        "x": 588,

+        "y": 691,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "c1f590f5.8f2c5",

+        "type": "for",

+        "name": "for each policy-data element",

+        "xml": "<for index='policyDataIndex' start='0' end='`$jsonContextPrefix.content.policy-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1014,

+        "y": 737,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "e9c505d9.7641f8",

+                "27b7d1c2.c574de"

+            ]

+        ]

+    },

+    {

+        "id": "56f2caaf.a21404",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 793,

+        "y": 737,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "c1f590f5.8f2c5"

+            ]

+        ]

+    },

+    {

+        "id": "e9c505d9.7641f8",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: get-data-from-policy: policyDataIndex|nf-role|rule-1|rule-2:\"/>\n<parameter name='field3' value='`$policyDataIndex`' />\n<parameter name='field4' value='`$jsonContextPrefix.content.policy-data[$policyDataIndex].nf-role`' />\n<parameter name='field5' value='`$jsonContextPrefix.content.policy-data[$policyDataIndex].rule-1`' />\n<parameter name='field6' value='`$jsonContextPrefix.content.policy-data[$policyDataIndex].rule-2`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 987,

+        "y": 837,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5c9052.5d187fb",

+        "type": "set",

+        "name": "set known policy-data element name and value",

+        "xml": "<set>\n<parameter name='get-data-from-policy-output.' value='`$jsonContextPrefix.content.policy-data.`'  />",

+        "comments": "",

+        "x": 619,

+        "y": 1187,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "3f8ba63d.63076a",

+        "type": "for",

+        "name": "for each nested extended-params element extract name and value",

+        "xml": "<for index='policyDataExtendedParamsIndex' start='0' end='`$jsonContextPrefix.content.policy-data.extended-params_length`' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 1125,

+        "y": 947,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "46e505f4.b9ba4c",

+                "f735acce.c6ff4",

+                "478129ad.d071b8"

+            ]

+        ]

+    },

+    {

+        "id": "a2112800.e14638",

+        "type": "comment",

+        "name": "Get extended-params when policy-data is not a list",

+        "info": "",

+        "comments": "",

+        "x": 627,

+        "y": 893,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "dff4e845.8c2d38",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 792,

+        "y": 947,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "3f8ba63d.63076a"

+            ]

+        ]

+    },

+    {

+        "id": "46e505f4.b9ba4c",

+        "type": "set",

+        "name": "set name and value from extended params element",

+        "xml": "<set>\n<parameter name='output-param-name' value='`$jsonContextPrefix.content.policy-data.extended-params[$policyDataExtendedParamsIndex].param-name`'  />\n<parameter name='output-param-value' value='`$jsonContextPrefix.content.policy-data.extended-params[$policyDataExtendedParamsIndex].param-value`'  />",

+        "comments": "",

+        "x": 1115,

+        "y": 1000,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "dd037e4c.c7bb3",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test='`$jsonContextPrefix.content.policy-data_length > 0`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 505,

+        "y": 737,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "72c5a068.2a844"

+            ]

+        ]

+    },

+    {

+        "id": "72c5a068.2a844",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 634,

+        "y": 737,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "56f2caaf.a21404"

+            ]

+        ]

+    },

+    {

+        "id": "1414756.a77f98b",

+        "type": "comment",

+        "name": "Set known output params",

+        "info": "",

+        "comments": "",

+        "x": 550,

+        "y": 1140,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "17b1aaaa.debfa5",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: get-data-from-policy: get-data-from-policy-output.:\"/>\n<parameter name='field3' value='`$get-data-from-policy-output.`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 499,

+        "y": 1232,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "11920eb2.868ba1",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test='`$jsonContextPrefix.content.policy-data.extended-params_length > 0`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 504,

+        "y": 947,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "6f485d54.b981f4"

+            ]

+        ]

+    },

+    {

+        "id": "6f485d54.b981f4",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 633,

+        "y": 947,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            [

+                "dff4e845.8c2d38"

+            ]

+        ]

+    },

+    {

+        "id": "f7e9500f.a774f",

+        "type": "execute",

+        "name": "printContext",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 516,

+        "y": 1305,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a278ba14.2107c8",

+        "type": "returnSuccess",

+        "name": "return success",

+        "xml": "<return status='success'>",

+        "comments": "",

+        "x": 473,

+        "y": 1413,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "f735acce.c6ff4",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: get-data-from-policy: policyDataExtendedParamsIndex|output-param-name|output-param-value:\"/>\n<parameter name='field3' value='`$policyDataExtendedParamsIndex`' />\n<parameter name='field4' value='`$output-param-name`' />\n<parameter name='field5' value='`$output-param-value`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 977,

+        "y": 1100,

+        "z": "9eef7e7e.8f1058",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "478129ad.d071b8",

+        "type": "set",

+        "name": "set output name and value pair from extended params",

+        "xml": "<set>\n<parameter name=\"`'get-data-from-policy-output.' + $output-param-name`\" value=\"`$output-param-value`\" />",

+        "comments": "",

+        "x": 1119,

+        "y": 1048,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "56f0abfe.71e324",

+        "type": "set",

+        "name": "set output element for name and values",

+        "xml": "<set>\n<parameter name=\"`'get-data-from-policy-output[' + $policyDataIndex + '].nf-role'`\" value= '`$jsonContextPrefix.content.policy-data[$policyDataIndex].nf-role`' />\n<parameter name=\"`'get-data-from-policy-output[' + $policyDataIndex + '].rule-1'`\" value= '`$jsonContextPrefix.content.policy-data[$policyDataIndex].rule-1`' />\n<parameter name=\"`'get-data-from-policy-output[' + $policyDataIndex + '].rule-2'`\" value= '`$jsonContextPrefix.content.policy-data[$policyDataIndex].rule-2`' />",

+        "comments": "",

+        "x": 1350,

+        "y": 737,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    },

+    {

+        "id": "27b7d1c2.c574de",

+        "type": "set",

+        "name": "set known policy-data element name and value",

+        "xml": "<set>\n<parameter name=\"`'get-data-from-policy-output[' + $policyDataIndex + ']'`.\" value= '`$jsonContextPrefix.content.policy-data[$policyDataIndex].`' />",

+        "comments": "",

+        "x": 1107,

+        "y": 789,

+        "z": "9eef7e7e.8f1058",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_get-tunnelxconn-ar.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_get-tunnelxconn-ar.json
new file mode 100644
index 0000000..29e7161
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_get-tunnelxconn-ar.json
@@ -0,0 +1 @@
+[{"id":"7c853e9a.8e493","type":"dgstart","name":"DGSTART","outputs":1,"x":107,"y":102,"z":"58c3c7f.58ec038","wires":[["26c3a6ab.f0995a"]]},{"id":"26c3a6ab.f0995a","type":"service-logic","name":"GENERIC-RESOURCE-API 1.2.0-SNAPSHOT-111502","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":203.23807907104492,"y":162.95239067077637,"z":"58c3c7f.58ec038","wires":[["b685d1e2.1ad7"]]},{"id":"b685d1e2.1ad7","type":"method","name":"get-tunnelxconn-ar","xml":"<method rpc='get-tunnelxconn-ar' mode='sync'>\n","comments":"","outputs":1,"x":224.1548728942871,"y":231.52378940582275,"z":"58c3c7f.58ec038","wires":[["a60c7031.42946"]]},{"id":"a60c7031.42946","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":157.47619247436523,"y":341.5237879753113,"z":"58c3c7f.58ec038","wires":[["9497630e.f7b11","c2ddbd60.23e6b"]]},{"id":"c2ddbd60.23e6b","type":"for","name":"for tmp.tunnel-ar","xml":"<for index='tunnelidx' start='0' end='`$tmp.tunnel-ar.data.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource_length`' >\n\n\n","comments":"","outputs":1,"x":342.00000762939453,"y":350.33327293395996,"z":"58c3c7f.58ec038","wires":[["9d4bdfb6.f48ca"]]},{"id":"9497630e.f7b11","type":"get-resource","name":"get-resource tunnelxconn-ar","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='GENERIC-RESOURCE-API' key='tunnelxconn-allotted-resources' pfx='tmp.tunnel-ar.data' >\n","comments":"","outputs":1,"x":420.3333282470703,"y":291.6666431427002,"z":"58c3c7f.58ec038","wires":[[]]},{"id":"96f8fe76.c2dd","type":"switchNode","name":"switch consuming-service-instance-id match","xml":"<switch test='`$tmp.tunnel-ar.data.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$tunnelidx].allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.consuming-service-instance-id == $tmp.ar.consuming-service-instance-id`'>\n\n\n","comments":"","outputs":1,"x":619.6666870117188,"y":464.33331298828125,"z":"58c3c7f.58ec038","wires":[["747bb764.bbace8"]]},{"id":"747bb764.bbace8","type":"success","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":865.6666870117188,"y":284.3332824707031,"z":"58c3c7f.58ec038","wires":[["d3e839f4.8c4f08"]]},{"id":"d3e839f4.8c4f08","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1045.3332901000977,"y":323.99994945526123,"z":"58c3c7f.58ec038","wires":[["a573ec9b.2c01b"]]},{"id":"a573ec9b.2c01b","type":"set","name":"set tmp.tunnelxconn-ar","xml":"<set>\n<parameter name='tmp.tunnelxconn-ar.' value='`$tmp.tunnel-ar.data.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$tunnelidx].`' />\n","comments":"","x":1231.000156402588,"y":320.66662311553955,"z":"58c3c7f.58ec038","wires":[]},{"id":"7eedec25.00f7f4","type":"set","name":"set","xml":"<set>\n<parameter name='tmp.printout.consuming-service-instance-id' value='`$tmp.tunnel-ar.data.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$tunnelidx].allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.consuming-service-instance-id`' />\n<parameter name='tmp.printout.index' value='`$tunnelidx`' />\n","comments":"","x":682,"y":332,"z":"58c3c7f.58ec038","wires":[]},{"id":"9d4bdfb6.f48ca","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":522,"y":395,"z":"58c3c7f.58ec038","wires":[["7eedec25.00f7f4","96f8fe76.c2dd"]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_get-vnf-api-parent-instance.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_get-vnf-api-parent-instance.json
new file mode 100644
index 0000000..e448157
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_get-vnf-api-parent-instance.json
@@ -0,0 +1 @@
+[{"id":"b8bfabbe.77248","type":"for","name":"for tmp.vnfs","xml":"<for index='vnfidx' start='0' end='`$tmp.vnfdata.vnfs.vnf-list_length`' >\n\n\n","comments":"","outputs":1,"x":527.833251953125,"y":363.3333740234375,"z":"ff9767f5.010a38","wires":[["4776ee38.4ee138"]]},{"id":"bc101beb.ef5ea","type":"dgstart","name":"DGSTART","outputs":1,"x":182.5,"y":96,"z":"ff9767f5.010a38","wires":[["a51bb8c8.d3e1e8"]]},{"id":"a51bb8c8.d3e1e8","type":"service-logic","name":"GENERIC-RESOURCE-API 1.2.0-SNAPSHOT-111701","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":333.7380790710449,"y":163.95239067077637,"z":"ff9767f5.010a38","wires":[["bc6b4b85.047838"]]},{"id":"bc6b4b85.047838","type":"method","name":"get-vnf-api-parent-instance","xml":"<method rpc='get-vnf-api-parent-instance' mode='sync'>\n","comments":"","outputs":1,"x":387.65484619140625,"y":223.19044494628906,"z":"ff9767f5.010a38","wires":[["3935ebce.d82b5c"]]},{"id":"3935ebce.d82b5c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":287.97619247436523,"y":342.5237879753113,"z":"ff9767f5.010a38","wires":[["425453de.b10ae4","b8bfabbe.77248"]]},{"id":"425453de.b10ae4","type":"get-resource","name":"get-resource vnf-api vnfs","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='vnfs' pfx='tmp.vnfdata' >\n","comments":"","outputs":1,"x":575.8333129882812,"y":301,"z":"ff9767f5.010a38","wires":[[]]},{"id":"204813dd.64581c","type":"switchNode","name":"switch parent-service-instance-id matches","xml":"<switch test='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].service-data.service-information.service-instance-id == $tmp.search.parent-service-instance-id`'>\n\n\n","comments":"","outputs":1,"x":864.8333129882812,"y":448.66668701171875,"z":"ff9767f5.010a38","wires":[["bd5f161e.f84a8"]]},{"id":"ec84cb14.e8d89","type":"get-resource","name":"get-resource parent service instance","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='vnfs/vnf-list/$tmp.vnfdata.vnfs.vnf-list[$vnfidx].vnf-id/service-data/' pfx='parent-service-instance' >\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t","comments":"","outputs":1,"x":1374.166648864746,"y":616.6666851043701,"z":"ff9767f5.010a38","wires":[["be638d5d.95cb48"]]},{"id":"be638d5d.95cb48","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1599.4999980926514,"y":616.333366394043,"z":"ff9767f5.010a38","wires":[["4aba0b85.648554"]]},{"id":"bd5f161e.f84a8","type":"success","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1111.833351135254,"y":532.6666946411133,"z":"ff9767f5.010a38","wires":[["ceced407.7170f8"]]},{"id":"ceced407.7170f8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1144.833396911621,"y":619.6667003631592,"z":"ff9767f5.010a38","wires":[["e54aa0de.05e748","ec84cb14.e8d89","ff23046.a29a578","383fa1b1.09842e"]]},{"id":"e54aa0de.05e748","type":"set","name":"set  tmp.old-service-data.vnf-id","xml":"<set>\n<parameter name='tmp.old-service-data.vnf-id' value='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].vnf-id`' />\n","comments":"","x":1359.8333740234375,"y":512.0000305175781,"z":"ff9767f5.010a38","wires":[]},{"id":"4aba0b85.648554","type":"returnFailure","name":"return failure - parent service instance not found","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\" \n    value=\"`'No entry found for parent service instance id ' + $tmp.ar.parent-service-instance-id + '.'`\" />\n","comments":"","x":1868.4999694824219,"y":608.6666564941406,"z":"ff9767f5.010a38","wires":[]},{"id":"6ff4efde.253f28","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":1356,"y":460,"z":"ff9767f5.010a38","wires":[]},{"id":"46071db9.aff5dc","type":"execute","name":"execute printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/get-vnf-parent.log' />\n\n","comments":"","outputs":1,"x":1336,"y":694,"z":"ff9767f5.010a38","wires":[[]]},{"id":"4776ee38.4ee138","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":632,"y":411,"z":"ff9767f5.010a38","wires":[["204813dd.64581c","3e55274e.58fc2"]]},{"id":"ff23046.a29a578","type":"set","name":"set debug","xml":"<set>\n<parameter name='tmp.debug.service-instance.id1' value='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].service-data.service-information.service-instance-id`' />\n<parameter name='tmp.debug.service-instance.id2' value='`$tmp.search.parent-service-instance-id`' />\n<parameter name='tmp.debug.service-instance.id3.vnf-id' value='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].vnf-id`' />\n\n\n\n","comments":"","x":1315,"y":411,"z":"ff9767f5.010a38","wires":[]},{"id":"3e55274e.58fc2","type":"set","name":"set tmp.search.parent-service-instance-id","xml":"<set>\n<parameter name='tmp.debug.tmp.search.parent-service-instance-id' value='`$tmp.search.parent-service-instance-id`' />\n","comments":"","x":860,"y":390,"z":"ff9767f5.010a38","wires":[]},{"id":"383fa1b1.09842e","type":"break","name":"break","xml":"<break>","comments":"","x":1299,"y":769,"z":"ff9767f5.010a38","wires":[]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-composite-match-pair.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-composite-match-pair.json
new file mode 100755
index 0000000..aeebce1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-composite-match-pair.json
@@ -0,0 +1 @@
+[{"id":"60f1051e.51114c","type":"dgstart","name":"DGSTART","outputs":1,"x":108,"y":98,"z":"5cacde28.0dfa3","wires":[["226b7544.1cd84a"]]},{"id":"226b7544.1cd84a","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":223.28570556640625,"y":138.23810577392578,"z":"5cacde28.0dfa3","wires":[["9c9ac68.fd6d738"]]},{"id":"9c9ac68.fd6d738","type":"method","name":"method getpathsegment-composite-match-pair","xml":"<method rpc='getpathsegment-composite-match-pair' mode='sync'>\n","comments":"","outputs":1,"x":224.9286346435547,"y":179.0000114440918,"z":"5cacde28.0dfa3","wires":[["83e11bf8.f3a498"]]},{"id":"9a71b461.101558","type":"comment","name":"getpathsegment-composite-match-pair","info":"","comments":"","x":502.34486389160156,"y":45.58634376525879,"z":"5cacde28.0dfa3","wires":[]},{"id":"83e11bf8.f3a498","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":99.25,"y":391.75001430511475,"z":"5cacde28.0dfa3","wires":[["e727e1ef.1186a","66e90d38.a7bf64","3ef2d82e.d22a58","eec5f9fe.49c248","19a7e137.4341bf","75d577c9.53e138"]]},{"id":"e727e1ef.1186a","type":"for","name":"for each node but the last","xml":"<for index='left-node-index' start='0' end='`$serv-cust_length - 1`' >\n","comments":"","outputs":1,"x":378.5,"y":350.5863494873047,"z":"5cacde28.0dfa3","wires":[["65ea0789.62ae18"]]},{"id":"cf819cdf.14b8a","type":"for","name":"for each service in left node","xml":"<for silentFailure='true' index='left-serv-index' start='0' end='`$serv-cust[$left-node-index].serv-insts_length`' >\n","comments":"","outputs":1,"x":762.25,"y":374.33636474609375,"z":"5cacde28.0dfa3","wires":[["b468d48.edcdb28"]]},{"id":"e1650602.b338c8","type":"for","name":"for each service in right node","xml":"<for silentFailure='true' index='right-serv-index' start='0' end='`$serv-cust[$right-node-index].serv-insts_length`' >\n","comments":"","outputs":1,"x":1147.2498931884766,"y":390.05064392089844,"z":"5cacde28.0dfa3","wires":[["f4ac3454.22ddd8"]]},{"id":"87ef791e.386cd8","type":"switchNode","name":"switch match-type","xml":"<switch test='`$match-type`'>\n","comments":"","outputs":1,"x":329.75001525878906,"y":868.0863962173462,"z":"5cacde28.0dfa3","wires":[["560beca3.cb95c4"]]},{"id":"560beca3.cb95c4","type":"outcome","name":"network-name","xml":"<outcome value='network-name'>\n","comments":"","outputs":1,"x":522.2500152587891,"y":869.3363962173462,"z":"5cacde28.0dfa3","wires":[["7508df39.fbe66"]]},{"id":"7508df39.fbe66","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":691.0000267028809,"y":868.0864028930664,"z":"5cacde28.0dfa3","wires":[["ae0a31f1.db164","be0877c3.8f5bf8"]]},{"id":"65ea0789.62ae18","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":567.25,"y":349.3363437652588,"z":"5cacde28.0dfa3","wires":[["fb53fc76.a42eb","cf819cdf.14b8a"]]},{"id":"fb53fc76.a42eb","type":"set","name":"set right-node-index","xml":"<set>\n<parameter name='right-node-index' value='`$left-node-index + 1`' />\n","comments":"","x":739.3928375244141,"y":326.4792003631592,"z":"5cacde28.0dfa3","wires":[]},{"id":"ae0a31f1.db164","type":"set","name":"set found-match = false","xml":"<set>\n<parameter name='found-match' value='false' />\n","comments":"","x":948.8690185546875,"y":821.9435329437256,"z":"5cacde28.0dfa3","wires":[]},{"id":"2c195116.8a04be","type":"for","name":"for each left vnf-network","xml":"<for silentFailure='true' index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >\n","comments":"","outputs":1,"x":2075.6429595947266,"y":435.8006811141968,"z":"5cacde28.0dfa3","wires":[["85ef7f7.ded368"]]},{"id":"860961af.af4c4","type":"for","name":"for each right vnf-network","xml":"<for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >\n","comments":"","outputs":1,"x":2841.357109069824,"y":409.3720760345459,"z":"5cacde28.0dfa3","wires":[["9877f782.81eab8"]]},{"id":"9877f782.81eab8","type":"switchNode","name":"network-names match?","xml":"<switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name\n  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>\n","comments":"","outputs":1,"x":3086.357109069824,"y":408.1220760345459,"z":"5cacde28.0dfa3","wires":[["a993df3a.e43cb"]]},{"id":"a993df3a.e43cb","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3285.1071166992188,"y":406.8720760345459,"z":"5cacde28.0dfa3","wires":[["11e00112.b1064f"]]},{"id":"85ef7f7.ded368","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2261.5356521606445,"y":434.5506525039673,"z":"5cacde28.0dfa3","wires":[["8974cd6.def433","b680f42.8583a08"]]},{"id":"8974cd6.def433","type":"switchNode","name":"network-name == 'oam'?","xml":"<switch test=\"`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name\n  == 'oam'`\">\n","comments":"","outputs":1,"x":2458.857093811035,"y":411.8720760345459,"z":"5cacde28.0dfa3","wires":[["a157ecc8.bcfdf"]]},{"id":"a157ecc8.bcfdf","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2642.6070976257324,"y":410.6220760345459,"z":"5cacde28.0dfa3","wires":[["860961af.af4c4"]]},{"id":"11e00112.b1064f","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3408.500015258789,"y":406.33636236190796,"z":"5cacde28.0dfa3","wires":[["89a060b2.d5ff","8174835e.b0019","ce80d485.5c26a8","c1ed5d08.86204"]]},{"id":"b468d48.edcdb28","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":956.357177734375,"y":371.6577854156494,"z":"5cacde28.0dfa3","wires":[["36c59b84.446674","e1650602.b338c8"]]},{"id":"36c59b84.446674","type":"set","name":"set path-segments_length to 0","xml":"<set>\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length' value='0' />\n","comments":"","x":1150.9998931884766,"y":347.7292318344116,"z":"5cacde28.0dfa3","wires":[]},{"id":"b680f42.8583a08","type":"switchNode","name":"switch found-match","xml":"<switch test='`$found-match`'>\n","comments":"","outputs":1,"x":2445.9998626708984,"y":465.8006134033203,"z":"5cacde28.0dfa3","wires":[["33eb5f41.dd6cf"]]},{"id":"33eb5f41.dd6cf","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2613.1427154541016,"y":464.37206649780273,"z":"5cacde28.0dfa3","wires":[["f08e8298.4c51"]]},{"id":"f08e8298.4c51","type":"break","name":"break","xml":"<break>\n","comments":"","x":2743.1427841186523,"y":462.94351387023926,"z":"5cacde28.0dfa3","wires":[]},{"id":"f4ac3454.22ddd8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":163.14286041259766,"y":868.0864095687866,"z":"5cacde28.0dfa3","wires":[["87ef791e.386cd8"]]},{"id":"bf180b7c.c25418","type":"comment","name":"First pass: create path segments","info":"","comments":"","x":423.5,"y":281.83634757995605,"z":"5cacde28.0dfa3","wires":[]},{"id":"3f086c1d.66b174","type":"comment","name":"Second pass: create end-to-end paths","info":"","comments":"","x":513.3809242248535,"y":1782.9077297449112,"z":"5cacde28.0dfa3","wires":[]},{"id":"66e90d38.a7bf64","type":"for","name":"for each service instance in the first node","xml":"<for silentFailure='true' index='first-serv-index' start='0' end='`$serv-cust[0].serv-insts_length`' >\n","comments":"","outputs":1,"x":445.166690826416,"y":2026.8363507986069,"z":"5cacde28.0dfa3","wires":[["6efb0085.c861d"]]},{"id":"fefe27b3.5a2c68","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1170.9167251586914,"y":2176.586459994316,"z":"5cacde28.0dfa3","wires":[["2b3ebaca.9cf8e6","1bdd6f16.30ab91","26b15761.3793b8","17e80c1e.4449a4","38807c57.9d8824","5419a18d.9f41f","4f5954be.ca26ac","30084bb6.339224"]]},{"id":"2c60d4e2.0aa0fc","type":"set","name":"add first service to path","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service_length' value='1' />\n<parameter name='service-paths.service-path[$path-index].service[0].service-instance-id'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].service-instance-id`' />\n<parameter name='service-paths.service-path[$path-index].service[0].service-path-sequence-id'\n  value='1' />\n\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vnf-instance-id'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].left-vnf-instance-id`' />\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vnf-path-sequence-id'\n  value='`$cur-vnf-seq`' />\n\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].right-network-name'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-name`' />\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].right-network-role'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-role`' />\n\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vf-module-instance.vf-module-id'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].left-vf-module-id`' />\n\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf_length'\n  value='1' />\n  ","comments":"","x":1877.8812408447266,"y":1802.1214971542358,"z":"5cacde28.0dfa3","wires":[]},{"id":"3ef2d82e.d22a58","type":"set","name":"set path-index to 0","xml":"<set>\n<parameter name='path-index' value='0' />\n","comments":"","x":376.4166679382324,"y":1835.5863132476807,"z":"5cacde28.0dfa3","wires":[]},{"id":"2b3ebaca.9cf8e6","type":"set","name":"increment path-index","xml":"<set>\n<parameter name='path-index' value='`$path-index + 1`' />\n","comments":"","x":1365.9166564941406,"y":3006.586118221283,"z":"5cacde28.0dfa3","wires":[]},{"id":"eec5f9fe.49c248","type":"set","name":"set service-path_length","xml":"<set>\n<parameter name='service-paths.service-path_length' value='`$path-index`' />\n","comments":"","x":378.91674041748047,"y":3110.1697940826416,"z":"5cacde28.0dfa3","wires":[]},{"id":"1bdd6f16.30ab91","type":"for","name":"for each subsequent node","xml":"<for index='node-index' start='1' end='`$serv-cust_length`' >\n","comments":"","outputs":1,"x":1386.3334121704102,"y":2792.836263179779,"z":"5cacde28.0dfa3","wires":[["e3b78719.a70e18"]]},{"id":"7a6e2ea4.84e","type":"for","name":"for each service instance","xml":"<for index='serv-index' start='0' end='`$serv-cust[$node-index].serv-insts_length`' >\n","comments":"","outputs":1,"x":1843.250316619873,"y":2685.336263179779,"z":"5cacde28.0dfa3","wires":[["65851b43.a70314"]]},{"id":"fcbb2eb9.7cc05","type":"set","name":"set found-match to false","xml":"<set>\n<parameter name='found-match' value='false' />\n","comments":"","x":1839.583610534668,"y":2633.836224079132,"z":"5cacde28.0dfa3","wires":[]},{"id":"a3466db9.3197e","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2446.7502670288086,"y":2734.0029430389404,"z":"5cacde28.0dfa3","wires":[["14a2dcd7.47e9d3"]]},{"id":"14a2dcd7.47e9d3","type":"switchNode","name":"service-instance-id match?","xml":"<switch test='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id\n  == $next-service-instance-id`'>\n","comments":"","outputs":1,"x":2644.2502670288086,"y":2731.5029430389404,"z":"5cacde28.0dfa3","wires":[["322a5e0f.988a02"]]},{"id":"4f5954be.ca26ac","type":"set","name":"set prev and next variables","xml":"<set>\n<parameter name='next-service-instance-id' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].right-service-instance-id`' />\n<parameter name='prev-network-name' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-name`' />\n<parameter name='prev-network-role' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-role`' />\n<parameter name='next-vnf-instance-id' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].right-vnf-instance-id`' />\n<parameter name='next-vf-module-id' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].right-vf-module-id`' />\n","comments":"","x":1381.2739562988281,"y":2303.193883895874,"z":"5cacde28.0dfa3","wires":[]},{"id":"322a5e0f.988a02","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2838.0002727508545,"y":2731.5029430389404,"z":"5cacde28.0dfa3","wires":[["d815e001.989e6"]]},{"id":"d815e001.989e6","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2970.500244140625,"y":2730.2529296875,"z":"5cacde28.0dfa3","wires":[["e5a8f57d.59e968","1dc46255.409c3e","cd8dc738.071968"]]},{"id":"e5a8f57d.59e968","type":"set","name":"set found-match to true","xml":"<set>\n<parameter name='found-match' value='true' />\n","comments":"","x":3158.2504692077637,"y":2681.5030102729797,"z":"5cacde28.0dfa3","wires":[]},{"id":"bb3c7e5a.29289","type":"set","name":"add service to path","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service_length'\n  value='`$service-paths.service-path[$path-index].service_length + 1`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'\n  value='`$node-index + 1`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'\n  value='`$cur-vnf-seq`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-name'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-role'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'\n  value='`$prev-network-name`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'\n  value='`$prev-network-role`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'\n  value='1' />\n","comments":"","x":4060.08349609375,"y":2800.7533683776855,"z":"5cacde28.0dfa3","wires":[]},{"id":"1dc46255.409c3e","type":"break","name":"break","xml":"<break>\n","comments":"","x":3100.917190551758,"y":2775.753050327301,"z":"5cacde28.0dfa3","wires":[]},{"id":"1ba49669.9cd81a","type":"switchNode","name":"switch found-match","xml":"<switch test='`$found-match`'>\n","comments":"","outputs":1,"x":1831.7503204345703,"y":2844.0862641334534,"z":"5cacde28.0dfa3","wires":[["7392011e.9a1cc"]]},{"id":"7392011e.9a1cc","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2001.7502975463867,"y":2842.8362498283386,"z":"5cacde28.0dfa3","wires":[["8a419e53.f32ef"]]},{"id":"e475d330.d9506","type":"break","name":"break","xml":"<break>\n","comments":"","x":2271.750328063965,"y":2865.3362641334534,"z":"5cacde28.0dfa3","wires":[]},{"id":"8a419e53.f32ef","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2131.750301361084,"y":2842.8362488746643,"z":"5cacde28.0dfa3","wires":[["e475d330.d9506","b38cde1a.6e7f6"]]},{"id":"b38cde1a.6e7f6","type":"set","name":"clear the service-path-instance-id","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service-path-instance-id' value='' />\n","comments":"","x":2354.250331878662,"y":2820.3362641334534,"z":"5cacde28.0dfa3","wires":[]},{"id":"77e655a4.3d7c2c","type":"comment","name":"no end-to-end path found","info":"","comments":"","x":2343.416923522949,"y":2772.836211204529,"z":"5cacde28.0dfa3","wires":[]},{"id":"99fffdb3.40d12","type":"set","name":"set prev and next variables","xml":"<set>\n<parameter name='next-service-instance-id' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].right-service-instance-id`' />\n<parameter name='prev-network-name' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />\n<parameter name='prev-network-role' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />\n<parameter name='next-vnf-instance-id' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].right-vnf-instance-id`' />\n<parameter name='next-vf-module-id' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].right-vf-module-id`' />\n","comments":"","x":1854.2503128051758,"y":2897.8362650871277,"z":"5cacde28.0dfa3","wires":[]},{"id":"cd8dc738.071968","type":"switchNode","name":"is this the last node in the path","xml":"<switch test='`$node-index == $serv-cust_length - 1`'>\n","comments":"","outputs":1,"x":3178.417064666748,"y":2728.253053665161,"z":"5cacde28.0dfa3","wires":[["4ffe3a4b.975d54","e77e94f1.1dfc58"]]},{"id":"4ffe3a4b.975d54","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":3392.1668586730957,"y":2933.6699318885803,"z":"5cacde28.0dfa3","wires":[["ba56bc8d.c862f"]]},{"id":"e77e94f1.1dfc58","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3394.833713531494,"y":2549.919856071472,"z":"5cacde28.0dfa3","wires":[["665849ce.a4ea48"]]},{"id":"e3b78719.a70e18","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1645.500186920166,"y":2790.336263179779,"z":"5cacde28.0dfa3","wires":[["fcbb2eb9.7cc05","7a6e2ea4.84e","1ba49669.9cd81a","99fffdb3.40d12","7ec23563.44488c"]]},{"id":"3d55caf2.114306","type":"set","name":"add service to path","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service_length'\n  value='`$service-paths.service-path[$path-index].service_length + 1`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'\n  value='`$node-index + 1`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'\n  value='`$next-vnf-instance-id`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'\n  value='`$cur-vnf-seq`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'\n  value='`$prev-network-name`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'\n  value='`$prev-network-role`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'\n  value='`$next-vf-module-id`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'\n  value='1' />\n  ","comments":"","x":4113.916797637939,"y":2415.003628730774,"z":"5cacde28.0dfa3","wires":[]},{"id":"be0877c3.8f5bf8","type":"switchNode","name":"switch left forwarding-path_length","xml":"<switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path_length`'>\n","comments":"","outputs":1,"x":979.7857666015625,"y":937.3721714019775,"z":"5cacde28.0dfa3","wires":[["2c44cb6b.478084","1bfa491a.356307","39ba8072.cabee"]]},{"id":"42b5f17d.fd82c","type":"comment","name":"Left multiple VNF, right single VNF","info":"","comments":"","x":2007.1667098999023,"y":880.6577892303467,"z":"5cacde28.0dfa3","wires":[]},{"id":"9fa977ce.910478","type":"for","name":"for each forwarding-path","xml":"<for index='left-fp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path_length`' >\n","comments":"","outputs":1,"x":1943.4999771118164,"y":938.8005752563477,"z":"5cacde28.0dfa3","wires":[["4d59a622.cabd68"]]},{"id":"4d59a622.cabd68","type":"for","name":"for each service-path","xml":"<for index='left-sp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path_length`' >\n","comments":"","outputs":1,"x":2174.928565979004,"y":938.8006191253662,"z":"5cacde28.0dfa3","wires":[["4ee70df4.6fa794"]]},{"id":"9b1659db.2a50c8","type":"for","name":"for each vnf","xml":"<for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":2519.2141151428223,"y":843.0863399505615,"z":"5cacde28.0dfa3","wires":[["f6787aef.9b6c98"]]},{"id":"4ee70df4.6fa794","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2349.214286804199,"y":936.6577758789062,"z":"5cacde28.0dfa3","wires":[["c3f41d9c.5f189","9b1659db.2a50c8","b938d943.389ee8"]]},{"id":"c3f41d9c.5f189","type":"set","name":"set max-seq to -1","xml":"<set>\n<parameter name='max-seq' value='-1' />\n","comments":"","x":2536.35733795166,"y":796.65797996521,"z":"5cacde28.0dfa3","wires":[]},{"id":"f6787aef.9b6c98","type":"switchNode","name":"switch vnf-path-sequence-id > max-seq?","xml":"<switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id\n  &gt; $max-seq`'>\n","comments":"","outputs":1,"x":2776.357250213623,"y":842.372142791748,"z":"5cacde28.0dfa3","wires":[["1de7ba50.9b1ce6"]]},{"id":"1de7ba50.9b1ce6","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3012.0712814331055,"y":840.9435195922852,"z":"5cacde28.0dfa3","wires":[["31096073.47d98"]]},{"id":"31096073.47d98","type":"set","name":"set max-seq, and left-vnf-instance-id","xml":"<set>\n<parameter name='max-seq'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id`' />\n<parameter name='left-vnf-instance-id'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-instance-id`' />\n","comments":"","x":3234.928352355957,"y":840.9434661865234,"z":"5cacde28.0dfa3","wires":[]},{"id":"4c784489.7ee51c","type":"comment","name":"Now find this vnf in the vnf-list","info":"","comments":"","x":2625.2145614624023,"y":936.6577920913696,"z":"5cacde28.0dfa3","wires":[]},{"id":"b938d943.389ee8","type":"for","name":"for each vnf in vnf-list","xml":"<for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list_length`' >\n","comments":"","outputs":1,"x":2539.2143325805664,"y":985.2291955947876,"z":"5cacde28.0dfa3","wires":[["e9f37080.62fd2"]]},{"id":"1b6bfd94.710e22","type":"switchNode","name":"vnfs match?","xml":"<switch test='`$left-vnf-instance-id\n  == $serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`'>\n","comments":"","outputs":1,"x":2855.6429901123047,"y":947.8482637405396,"z":"5cacde28.0dfa3","wires":[["7e264a36.803214"]]},{"id":"7e264a36.803214","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2996.356803894043,"y":948.0862894058228,"z":"5cacde28.0dfa3","wires":[["719519e4.ea9b48"]]},{"id":"719519e4.ea9b48","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3127.7856941223145,"y":946.6577596664429,"z":"5cacde28.0dfa3","wires":[["f00fea78.2d2b68"]]},{"id":"a668d164.0d54b","type":"comment","name":"Find the right-most vnf in forwarding path","info":"","comments":"","x":2834.928352355957,"y":798.0864534378052,"z":"5cacde28.0dfa3","wires":[]},{"id":"8174835e.b0019","type":"set","name":"set path-segment data","xml":"<set>\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />\n\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />\n\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />\n\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />","comments":"","x":3589.9284439086914,"y":377.2292079925537,"z":"5cacde28.0dfa3","wires":[]},{"id":"89a060b2.d5ff","type":"set","name":"set ps-index","xml":"<set>\n<parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />\n","comments":"","x":3557.6071853637695,"y":331.157751083374,"z":"5cacde28.0dfa3","wires":[]},{"id":"ce80d485.5c26a8","type":"set","name":"set found-match = true","xml":"<set>\n<parameter name='found-match' value='true' />\n","comments":"","x":3590.8213500976562,"y":425.8006534576416,"z":"5cacde28.0dfa3","wires":[]},{"id":"c1ed5d08.86204","type":"break","name":"break","xml":"<break>\n","comments":"","x":3540.8212928771973,"y":472.9434461593628,"z":"5cacde28.0dfa3","wires":[]},{"id":"219c59b4.09fa56","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1890.642822265625,"y":416.5149326324463,"z":"5cacde28.0dfa3","wires":[["2c195116.8a04be","d8c93e92.18c82"]]},{"id":"d8c93e92.18c82","type":"set","name":"set vnf-indeces to 0","xml":"<set>\n<parameter name='vnf-index' value='0' />\n<parameter name='left-vnf-index' value='0' />\n<parameter name='right-vnf-index' value='0' />\n","comments":"","x":2052.0714111328125,"y":379.37208366394043,"z":"5cacde28.0dfa3","wires":[]},{"id":"f00fea78.2d2b68","type":"for","name":"for each rhs vnf","xml":"<for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >\n","comments":"","outputs":1,"x":3284.6904258728027,"y":947.1338777542114,"z":"5cacde28.0dfa3","wires":[["24eb06cb.9f373a"]]},{"id":"e7861a9d.b6d028","type":"comment","name":"Now find this vnf in the right node","info":"","comments":"","x":3399.214641571045,"y":901.6577548980713,"z":"5cacde28.0dfa3","wires":[]},{"id":"79c0acf8.3873a4","type":"for","name":"for each right vnf-network","xml":"<for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >\n","comments":"","outputs":1,"x":3992.071662902832,"y":915.9435241222382,"z":"5cacde28.0dfa3","wires":[["12bba702.4b0819"]]},{"id":"12bba702.4b0819","type":"switchNode","name":"network-names match?","xml":"<switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name\n  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>\n","comments":"","outputs":1,"x":4231.357494354248,"y":914.6935031414032,"z":"5cacde28.0dfa3","wires":[["34c67642.ea5d0a"]]},{"id":"34c67642.ea5d0a","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":4420.107460021973,"y":913.4435908794403,"z":"5cacde28.0dfa3","wires":[["a2f06f03.2bdf7"]]},{"id":"a2f06f03.2bdf7","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4552.071605682373,"y":912.9078605175018,"z":"5cacde28.0dfa3","wires":[["155ad75b.bf5839","c40f4b1.309fab8","f8944206.3f55a","7810a713.0bbc98"]]},{"id":"155ad75b.bf5839","type":"set","name":"set path-segment data","xml":"<set>\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'\n  value='`$left-vnf-instance-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />\n\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />\n\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />\n\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].lhs_vnf.'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />","comments":"","x":4739.214630126953,"y":885.9435908794403,"z":"5cacde28.0dfa3","wires":[]},{"id":"c40f4b1.309fab8","type":"set","name":"set found-match = true","xml":"<set>\n<parameter name='found-match' value='true' />\n","comments":"","x":4740.107536315918,"y":934.5150363445282,"z":"5cacde28.0dfa3","wires":[]},{"id":"f8944206.3f55a","type":"break","name":"break","xml":"<break>\n","comments":"","x":4690.107479095459,"y":981.6578290462494,"z":"5cacde28.0dfa3","wires":[]},{"id":"7810a713.0bbc98","type":"set","name":"set ps-index","xml":"<set>\n<parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />\n","comments":"","x":4707.786163330078,"y":840.2292964458466,"z":"5cacde28.0dfa3","wires":[]},{"id":"24eb06cb.9f373a","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3436.3570137023926,"y":947.3720092773438,"z":"5cacde28.0dfa3","wires":[["ec536573.43e5d8"]]},{"id":"e9f37080.62fd2","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2707.7858657836914,"y":984.5149002075195,"z":"5cacde28.0dfa3","wires":[["1b6bfd94.710e22","f599b952.b87968"]]},{"id":"f599b952.b87968","type":"switchNode","name":"switch found-match","xml":"<switch test='`$found-match`'>\n","comments":"","outputs":1,"x":2877.7856063842773,"y":1005.9434976577759,"z":"5cacde28.0dfa3","wires":[["b08f24b3.3659d8"]]},{"id":"b08f24b3.3659d8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3044.9284591674805,"y":1004.5149507522583,"z":"5cacde28.0dfa3","wires":[["5e5cd5b3.dbe35c"]]},{"id":"5e5cd5b3.dbe35c","type":"break","name":"break","xml":"<break>\n","comments":"","x":3174.9285278320312,"y":1003.0863981246948,"z":"5cacde28.0dfa3","wires":[]},{"id":"ec536573.43e5d8","type":"for","name":"for each left vnf-network","xml":"<for index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >\n","comments":"","outputs":1,"x":3613.5000381469727,"y":947.372035741806,"z":"5cacde28.0dfa3","wires":[["2b1dc672.54540a"]]},{"id":"2b1dc672.54540a","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3793.499858856201,"y":947.3720433712006,"z":"5cacde28.0dfa3","wires":[["79c0acf8.3873a4","c0290b03.20e848"]]},{"id":"c0290b03.20e848","type":"switchNode","name":"switch found-match","xml":"<switch test='`$found-match`'>\n","comments":"","outputs":1,"x":3976.357307434082,"y":978.8006398677826,"z":"5cacde28.0dfa3","wires":[["28c52ee3.509512"]]},{"id":"28c52ee3.509512","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":4143.500160217285,"y":977.372092962265,"z":"5cacde28.0dfa3","wires":[["3dbf69a7.5d9136"]]},{"id":"3dbf69a7.5d9136","type":"break","name":"break","xml":"<break>\n","comments":"","x":4273.500228881836,"y":975.9435403347015,"z":"5cacde28.0dfa3","wires":[]},{"id":"a1c12add.519e08","type":"switchNode","name":"switch right forwarding-path_length","xml":"<switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`'>\n","comments":"","outputs":1,"x":1455.5,"y":727.0863437652588,"z":"5cacde28.0dfa3","wires":[["cee159a7.eb9128","85e9a510.3f5968","21fc7a11.f1c926"]]},{"id":"2c44cb6b.478084","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1218.3572273254395,"y":890.8006563186646,"z":"5cacde28.0dfa3","wires":[["a1c12add.519e08"]]},{"id":"1bfa491a.356307","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1218.0000839233398,"y":973.4792528152466,"z":"5cacde28.0dfa3","wires":[["f7822002.381d1"]]},{"id":"39ba8072.cabee","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1218.357177734375,"y":930.8006992340088,"z":"5cacde28.0dfa3","wires":[["a1c12add.519e08"]]},{"id":"21fc7a11.f1c926","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1681.5,"y":673.0863437652588,"z":"5cacde28.0dfa3","wires":[["219c59b4.09fa56"]]},{"id":"cee159a7.eb9128","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1681.1428565979004,"y":755.7649402618408,"z":"5cacde28.0dfa3","wires":[["93c498a0.876eb8"]]},{"id":"85e9a510.3f5968","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1681.4999504089355,"y":713.086386680603,"z":"5cacde28.0dfa3","wires":[["219c59b4.09fa56"]]},{"id":"c9ec2dad.cdca1","type":"comment","name":"Both sides single VNF","info":"","comments":"","x":1979.5,"y":329.0863437652588,"z":"5cacde28.0dfa3","wires":[]},{"id":"33ecf1df.6d209e","type":"comment","name":"Left single VNF, right multiple VNF","info":"","comments":"","x":2001.5,"y":598.0863437652588,"z":"5cacde28.0dfa3","wires":[]},{"id":"93c498a0.876eb8","type":"for","name":"for each forwarding-path","xml":"<for index='right-fp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`' >\n","comments":"","outputs":1,"x":1955.1666259765625,"y":643.0863437652588,"z":"5cacde28.0dfa3","wires":[["e6d81752.4b29d8"]]},{"id":"e6d81752.4b29d8","type":"for","name":"for each service-path","xml":"<for index='right-sp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path_length`' >\n","comments":"","outputs":1,"x":2186.59521484375,"y":643.0863876342773,"z":"5cacde28.0dfa3","wires":[["3724485d.a496d8"]]},{"id":"3724485d.a496d8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2360.8809356689453,"y":640.9435443878174,"z":"5cacde28.0dfa3","wires":[["c9ccb304.20ed1","1b6170c7.a5397f"]]},{"id":"c9ccb304.20ed1","type":"for","name":"for each vnf","xml":"<for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":2515.16650390625,"y":591.41965675354,"z":"5cacde28.0dfa3","wires":[["c3f46064.3be0e"]]},{"id":"c3f46064.3be0e","type":"switchNode","name":"switch vnf-path-sequence-id == 1?","xml":"<switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-path-sequence-id\n  == 1`'>\n","comments":"","outputs":1,"x":2740.6430130004883,"y":590.7054872512817,"z":"5cacde28.0dfa3","wires":[["ef83ab7.d739d58"]]},{"id":"ef83ab7.d739d58","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2948.0237998962402,"y":590.9435033798218,"z":"5cacde28.0dfa3","wires":[["a91f299f.b4ce68"]]},{"id":"fd227b4b.f0ffb8","type":"set","name":"set right-vnf-instance-id","xml":"<set>\n<parameter name='right-vnf-instance-id'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-instance-id`' />\n","comments":"","x":3250.8805809020996,"y":555.9434623718262,"z":"5cacde28.0dfa3","wires":[]},{"id":"88f1fcc4.b6d8d","type":"comment","name":"Find the left-most vnf in forwarding path","info":"","comments":"","x":2830.8807411193848,"y":546.4197702407837,"z":"5cacde28.0dfa3","wires":[]},{"id":"f0579103.63e6f","type":"comment","name":"Now find this vnf in the vnf-list","info":"","comments":"","x":2626.833251953125,"y":666.41965675354,"z":"5cacde28.0dfa3","wires":[]},{"id":"1b6170c7.a5397f","type":"for","name":"for each vnf in vnf-list","xml":"<for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >\n","comments":"","outputs":1,"x":2540.833023071289,"y":714.991060256958,"z":"5cacde28.0dfa3","wires":[["84364387.271de"]]},{"id":"26927e7c.0ad392","type":"switchNode","name":"vnfs match?","xml":"<switch test='`$right-vnf-instance-id\n  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`'>\n","comments":"","outputs":1,"x":2857.2616806030273,"y":677.61012840271,"z":"5cacde28.0dfa3","wires":[["3ef34f88.aec3"]]},{"id":"3ef34f88.aec3","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2997.9754943847656,"y":677.8481540679932,"z":"5cacde28.0dfa3","wires":[["5a951866.ef1a08"]]},{"id":"5a951866.ef1a08","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3129.404384613037,"y":676.4196243286133,"z":"5cacde28.0dfa3","wires":[["5a32ad77.025d14"]]},{"id":"5a32ad77.025d14","type":"for","name":"for each lhs vnf","xml":"<for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list_length`' >\n","comments":"","outputs":1,"x":3286.3091163635254,"y":676.8957424163818,"z":"5cacde28.0dfa3","wires":[["4da72b93.e078b4"]]},{"id":"821214ed.e38948","type":"comment","name":"Now find this vnf in the left node","info":"","comments":"","x":3400.8333320617676,"y":631.4196195602417,"z":"5cacde28.0dfa3","wires":[]},{"id":"4da72b93.e078b4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3437.9757041931152,"y":677.1338739395142,"z":"5cacde28.0dfa3","wires":[["9ffc8c37.f1005"]]},{"id":"84364387.271de","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2709.404556274414,"y":714.2767648696899,"z":"5cacde28.0dfa3","wires":[["26927e7c.0ad392","9c271353.4b456"]]},{"id":"9c271353.4b456","type":"switchNode","name":"switch found-match","xml":"<switch test='`$found-match`'>\n","comments":"","outputs":1,"x":2879.404296875,"y":735.7053623199463,"z":"5cacde28.0dfa3","wires":[["14e9d7f6.182f08"]]},{"id":"14e9d7f6.182f08","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3046.547149658203,"y":734.2768154144287,"z":"5cacde28.0dfa3","wires":[["91d64a32.a79868"]]},{"id":"91d64a32.a79868","type":"break","name":"break","xml":"<break>\n","comments":"","x":3176.547218322754,"y":732.8482627868652,"z":"5cacde28.0dfa3","wires":[]},{"id":"9ffc8c37.f1005","type":"for","name":"for each right vnf-network","xml":"<for index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >\n","comments":"","outputs":1,"x":3615.1187286376953,"y":677.1339004039764,"z":"5cacde28.0dfa3","wires":[["2fceb42f.674b4c"]]},{"id":"2fceb42f.674b4c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3795.118549346924,"y":677.133908033371,"z":"5cacde28.0dfa3","wires":[["97a00bf4.a5a548","f8216448.631cf8"]]},{"id":"97a00bf4.a5a548","type":"for","name":"for each left vnf-network","xml":"<for silentFailure='true' index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >\n","comments":"","outputs":1,"x":3986.833251953125,"y":648.0863437652588,"z":"5cacde28.0dfa3","wires":[["863ddbac.7582d8"]]},{"id":"863ddbac.7582d8","type":"switchNode","name":"network-names match?","xml":"<switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name\n  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>\n","comments":"","outputs":1,"x":4226.119083404541,"y":646.8363227844238,"z":"5cacde28.0dfa3","wires":[["61c7bd07.eeb014"]]},{"id":"61c7bd07.eeb014","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":4414.869049072266,"y":645.5864105224609,"z":"5cacde28.0dfa3","wires":[["2c697063.4e472"]]},{"id":"2c697063.4e472","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4546.833194732666,"y":645.0506801605225,"z":"5cacde28.0dfa3","wires":[["db397022.a8191","2a65e500.24b97c","6716a7d0.305028","5a3095b9.f209bc"]]},{"id":"db397022.a8191","type":"set","name":"set path-segment data","xml":"<set>\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />\n\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'\n  value='`$right-vnf-instance-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />\n\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />\n\n<parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].rhs_vnf.'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />","comments":"","x":4733.976219177246,"y":618.0864105224609,"z":"5cacde28.0dfa3","wires":[]},{"id":"2a65e500.24b97c","type":"set","name":"set found-match = true","xml":"<set>\n<parameter name='found-match' value='true' />\n","comments":"","x":4734.869125366211,"y":666.6578559875488,"z":"5cacde28.0dfa3","wires":[]},{"id":"6716a7d0.305028","type":"break","name":"break","xml":"<break>\n","comments":"","x":4684.869068145752,"y":713.80064868927,"z":"5cacde28.0dfa3","wires":[]},{"id":"5a3095b9.f209bc","type":"set","name":"set ps-index","xml":"<set>\n<parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />\n","comments":"","x":4702.547752380371,"y":572.3721160888672,"z":"5cacde28.0dfa3","wires":[]},{"id":"f8216448.631cf8","type":"switchNode","name":"switch found-match","xml":"<switch test='`$found-match`'>\n","comments":"","outputs":1,"x":3971.118896484375,"y":710.9434595108032,"z":"5cacde28.0dfa3","wires":[["298800cc.0f842"]]},{"id":"298800cc.0f842","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":4138.261749267578,"y":709.5149126052856,"z":"5cacde28.0dfa3","wires":[["3ccbd9e.9d0ba26"]]},{"id":"3ccbd9e.9d0ba26","type":"break","name":"break","xml":"<break>\n","comments":"","x":4268.261817932129,"y":708.0863599777222,"z":"5cacde28.0dfa3","wires":[]},{"id":"26b15761.3793b8","type":"execute","name":"generate service-path-instance-id","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n<parameter name=\"ctx-destination\" value=\"tmp.service-path-instance-id\" />\n","comments":"","outputs":1,"x":1406.0951919555664,"y":1706.1097946166992,"z":"5cacde28.0dfa3","wires":[[]]},{"id":"17e80c1e.4449a4","type":"set","name":"create service-path","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service-path-instance-id' value='`$tmp.service-path-instance-id`' />\n<parameter name='service-paths.service-path[$path-index].service-path-instance-name'\n  value='`$db.path-segment[0].path-name + $tmp.service-path-instance-id`' />\n","comments":"","x":1361.0951919555664,"y":1751.1097955703735,"z":"5cacde28.0dfa3","wires":[]},{"id":"f7822002.381d1","type":"switchNode","name":"switch right forwarding-path_length","xml":"<switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`'>\n","comments":"","outputs":1,"x":1443.5,"y":973.0862827301025,"z":"5cacde28.0dfa3","wires":[["83725e25.dca23","ab4c94e8.e45218","52c3b6d0.4e7318"]]},{"id":"52c3b6d0.4e7318","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1669.5,"y":919.0862827301025,"z":"5cacde28.0dfa3","wires":[["9fa977ce.910478"]]},{"id":"83725e25.dca23","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1669.1428565979004,"y":1001.7648792266846,"z":"5cacde28.0dfa3","wires":[["d7221d4c.6bab6"]]},{"id":"ab4c94e8.e45218","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1669.4999504089355,"y":959.0863256454468,"z":"5cacde28.0dfa3","wires":[["9fa977ce.910478"]]},{"id":"10dda5a9.3882ba","type":"comment","name":"Both sides multiple VNF","info":"","comments":"","x":1975.16650390625,"y":1074.7530117034912,"z":"5cacde28.0dfa3","wires":[]},{"id":"d7221d4c.6bab6","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1896.8333282470703,"y":1143.0863075256348,"z":"5cacde28.0dfa3","wires":[["d06dd812.7c91f8"]]},{"id":"d06dd812.7c91f8","type":"for","name":"for each lhs forwarding-path","xml":"<for index='left-fp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path_length`' >\n","comments":"","outputs":1,"x":2088.5,"y":1144.7529697418213,"z":"5cacde28.0dfa3","wires":[["f98ae7fd.c071a8"]]},{"id":"f98ae7fd.c071a8","type":"for","name":"for each lhs service-path","xml":"<for index='left-sp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path_length`' >\n","comments":"","outputs":1,"x":2336.5950622558594,"y":1144.7529335021973,"z":"5cacde28.0dfa3","wires":[["a64c1b6f.549e78"]]},{"id":"1bd64c30.3d4fc4","type":"for","name":"for each rhs forwarding-path","xml":"<for index='right-fp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`' >\n","comments":"","outputs":1,"x":3660.166549682617,"y":1148.086290359497,"z":"5cacde28.0dfa3","wires":[["f612535c.5ec86"]]},{"id":"f612535c.5ec86","type":"for","name":"for each rhs service-path","xml":"<for index='right-sp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path_length`' >\n","comments":"","outputs":1,"x":3908.2616119384766,"y":1148.086254119873,"z":"5cacde28.0dfa3","wires":[["88fd6d88.314cc"]]},{"id":"a44d758c.154b18","type":"for","name":"for each vnf","xml":"<for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":2685.166618347168,"y":1096.419692993164,"z":"5cacde28.0dfa3","wires":[["9ed255d8.367bf8"]]},{"id":"5040ed2a.05fa64","type":"set","name":"set max-seq to -1","xml":"<set>\n<parameter name='max-seq' value='-1' />\n","comments":"","x":2702.309841156006,"y":1049.9913330078125,"z":"5cacde28.0dfa3","wires":[]},{"id":"9ed255d8.367bf8","type":"switchNode","name":"switch vnf-path-sequence-id > max-seq?","xml":"<switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id\n  &gt; $max-seq`'>\n","comments":"","outputs":1,"x":2942.3097534179688,"y":1095.7054958343506,"z":"5cacde28.0dfa3","wires":[["3fa87823.7f1638"]]},{"id":"3fa87823.7f1638","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3178.023784637451,"y":1094.2768726348877,"z":"5cacde28.0dfa3","wires":[["1195af19.430441"]]},{"id":"1195af19.430441","type":"set","name":"set max-seq, and left-vnf-instance-id","xml":"<set>\n<parameter name='max-seq'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id`' />\n<parameter name='left-vnf-instance-id'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-instance-id`' />\n","comments":"","x":3400.8808555603027,"y":1094.276819229126,"z":"5cacde28.0dfa3","wires":[]},{"id":"1f39f18f.8e207e","type":"comment","name":"Now find this vnf in the vnf-list","info":"","comments":"","x":2799.5003356933594,"y":1141.6578521728516,"z":"5cacde28.0dfa3","wires":[]},{"id":"d4e77269.a7598","type":"for","name":"for each vnf in vnf-list","xml":"<for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list_length`' >\n","comments":"","outputs":1,"x":2713.5001068115234,"y":1190.2292556762695,"z":"5cacde28.0dfa3","wires":[["2d4d1e45.59cf32"]]},{"id":"a167c9e4.76ed18","type":"switchNode","name":"vnfs match?","xml":"<switch test='`$left-vnf-instance-id\n  == $serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`'>\n","comments":"","outputs":1,"x":3029.9287643432617,"y":1152.8483238220215,"z":"5cacde28.0dfa3","wires":[["3adf76b7.7592ca"]]},{"id":"3adf76b7.7592ca","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3170.642578125,"y":1153.0863494873047,"z":"5cacde28.0dfa3","wires":[["c72bded8.0ca85"]]},{"id":"c72bded8.0ca85","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3302.0714683532715,"y":1151.6578197479248,"z":"5cacde28.0dfa3","wires":[["1bd64c30.3d4fc4"]]},{"id":"d4046575.dc0b88","type":"comment","name":"Find the right-most vnf in forwarding path","info":"","comments":"","x":3000.8808555603027,"y":1051.4198064804077,"z":"5cacde28.0dfa3","wires":[]},{"id":"2d4d1e45.59cf32","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2882.0716400146484,"y":1189.5149602890015,"z":"5cacde28.0dfa3","wires":[["a167c9e4.76ed18","48053036.5b345"]]},{"id":"48053036.5b345","type":"switchNode","name":"switch found-match","xml":"<switch test='`$found-match`'>\n","comments":"","outputs":1,"x":3052.0713806152344,"y":1210.9435577392578,"z":"5cacde28.0dfa3","wires":[["be8ea1c7.44cca"]]},{"id":"be8ea1c7.44cca","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3219.2142333984375,"y":1209.5150108337402,"z":"5cacde28.0dfa3","wires":[["16915549.bd5a3b"]]},{"id":"16915549.bd5a3b","type":"break","name":"break","xml":"<break>\n","comments":"","x":3349.2143020629883,"y":1208.0864582061768,"z":"5cacde28.0dfa3","wires":[]},{"id":"a64c1b6f.549e78","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2523.5,"y":1144.7529697418213,"z":"5cacde28.0dfa3","wires":[["5040ed2a.05fa64","a44d758c.154b18","d4e77269.a7598"]]},{"id":"88fd6d88.314cc","type":"switchNode","name":"switch leftmost-vnf-index","xml":"<switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index`'>\n","comments":"","outputs":1,"x":4153.50048828125,"y":1146.419641494751,"z":"5cacde28.0dfa3","wires":[["50c3fb12.79f4d4","6add4086.46256","fa0ce669.328d08"]]},{"id":"50c3fb12.79f4d4","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":4353.500057220459,"y":1101.4195566177368,"z":"5cacde28.0dfa3","wires":[["47e8e7a7.051148"]]},{"id":"fa0ce669.328d08","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":4353.142753601074,"y":1330.7649030685425,"z":"5cacde28.0dfa3","wires":[["e7902090.6d387"]]},{"id":"6add4086.46256","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":4353.5000076293945,"y":1141.419599533081,"z":"5cacde28.0dfa3","wires":[["47e8e7a7.051148"]]},{"id":"99c029da.06b698","type":"for","name":"for each vnf","xml":"<for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":4640.166721343994,"y":1063.0861825942993,"z":"5cacde28.0dfa3","wires":[["41c3dd64.30b714"]]},{"id":"41c3dd64.30b714","type":"switchNode","name":"switch vnf-path-sequence-id == 1?","xml":"<switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-path-sequence-id\n  == 1`'>\n","comments":"","outputs":1,"x":4865.643230438232,"y":1062.372013092041,"z":"5cacde28.0dfa3","wires":[["8f533f3e.a8518"]]},{"id":"8f533f3e.a8518","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":5073.024017333984,"y":1062.610029220581,"z":"5cacde28.0dfa3","wires":[["738a1d35.c17764"]]},{"id":"4936360a.1906b8","type":"set","name":"set right-vnf-instance-id","xml":"<set>\n<parameter name='right-vnf-instance-id'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-instance-id`' />\n","comments":"","x":5375.881938934326,"y":1032.6100482940674,"z":"5cacde28.0dfa3","wires":[]},{"id":"9fe00645.cf8e88","type":"comment","name":"Find the left-most vnf in forwarding path","info":"","comments":"","x":4939.214065551758,"y":1019.7529678344727,"z":"5cacde28.0dfa3","wires":[]},{"id":"735a79c9.abd408","type":"comment","name":"Now find this vnf in the vnf-list","info":"","comments":"","x":4751.833309173584,"y":1108.0861959457397,"z":"5cacde28.0dfa3","wires":[]},{"id":"2306e699.673b4a","type":"for","name":"for each vnf in vnf-list","xml":"<for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >\n","comments":"","outputs":1,"x":4665.833080291748,"y":1156.6575994491577,"z":"5cacde28.0dfa3","wires":[["700f2062.9e292"]]},{"id":"311a6c1f.09e334","type":"switchNode","name":"vnfs match?","xml":"<switch test='`$right-vnf-instance-id\n  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`'>\n","comments":"","outputs":1,"x":4982.261646270752,"y":1154.276629447937,"z":"5cacde28.0dfa3","wires":[["f1a7e16c.13959"]]},{"id":"f1a7e16c.13959","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":5122.97546005249,"y":1154.5146551132202,"z":"5cacde28.0dfa3","wires":[["2d8eb4e3.5b287c"]]},{"id":"2d8eb4e3.5b287c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":5254.404350280762,"y":1153.0861253738403,"z":"5cacde28.0dfa3","wires":[["5a32b0ce.179b","f1186572.d9a8c8"]]},{"id":"700f2062.9e292","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4834.404613494873,"y":1155.9433040618896,"z":"5cacde28.0dfa3","wires":[["311a6c1f.09e334"]]},{"id":"47e8e7a7.051148","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4500.166576385498,"y":1113.0862674713135,"z":"5cacde28.0dfa3","wires":[["99c029da.06b698","2306e699.673b4a","e7902090.6d387"]]},{"id":"a91f299f.b4ce68","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3075.16650390625,"y":591.41965675354,"z":"5cacde28.0dfa3","wires":[["fd227b4b.f0ffb8","9465a266.5e7c9"]]},{"id":"9465a266.5e7c9","type":"break","name":"break","xml":"<break>\n","comments":"","x":3200.1667137145996,"y":604.7530136108398,"z":"5cacde28.0dfa3","wires":[]},{"id":"738a1d35.c17764","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":5198.500583648682,"y":1061.4196147918701,"z":"5cacde28.0dfa3","wires":[["4936360a.1906b8","a80f9638.465408"]]},{"id":"a80f9638.465408","type":"break","name":"break","xml":"<break>\n","comments":"","x":5326.834087371826,"y":1079.752932548523,"z":"5cacde28.0dfa3","wires":[]},{"id":"5a32b0ce.179b","type":"set","name":"set leftmost-vnf-index","xml":"<set>\n<parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index'\n  value='`$right-vnf-index`' />\n","comments":"","x":5425.168022155762,"y":1123.0863075256348,"z":"5cacde28.0dfa3","wires":[]},{"id":"f1186572.d9a8c8","type":"break","name":"break","xml":"<break>\n","comments":"","x":5380.16650390625,"y":1171.4195957183838,"z":"5cacde28.0dfa3","wires":[]},{"id":"e7902090.6d387","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4498.499622344971,"y":1329.7529735565186,"z":"5cacde28.0dfa3","wires":[["2b5f010a.30118e","cce9425a.efcca"]]},{"id":"41acde0.cf41f24","type":"for","name":"for each right vnf-network","xml":"<for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >\n","comments":"","outputs":1,"x":5093.5,"y":1296.4195957183838,"z":"5cacde28.0dfa3","wires":[["5637518f.594ca"]]},{"id":"5637518f.594ca","type":"switchNode","name":"network-names match?","xml":"<switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name\n  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>\n","comments":"","outputs":1,"x":5332.785831451416,"y":1295.1695747375488,"z":"5cacde28.0dfa3","wires":[["3a7e5ac.2f314a6"]]},{"id":"3a7e5ac.2f314a6","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":5521.535797119141,"y":1293.919662475586,"z":"5cacde28.0dfa3","wires":[["5f1a9f69.2704c"]]},{"id":"5f1a9f69.2704c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":5653.499942779541,"y":1293.3839321136475,"z":"5cacde28.0dfa3","wires":[["fd2ce5af.8c2418","cb258198.3b184","b8b5a8aa.3c9ac8","5c565eda.45665"]]},{"id":"fd2ce5af.8c2418","type":"set","name":"set path-segment data","xml":"<set>\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />\n\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />\n\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />\n\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].lhs_vnf.'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.`' />\n<parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].rhs_vnf.'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.`' />\n<parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'\n  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />","comments":"","x":5840.642967224121,"y":1266.419662475586,"z":"5cacde28.0dfa3","wires":[]},{"id":"cb258198.3b184","type":"set","name":"set found-match = true","xml":"<set>\n<parameter name='found-match' value='true' />\n","comments":"","x":5841.535873413086,"y":1314.9911079406738,"z":"5cacde28.0dfa3","wires":[]},{"id":"b8b5a8aa.3c9ac8","type":"break","name":"break","xml":"<break>\n","comments":"","x":5791.535816192627,"y":1362.133900642395,"z":"5cacde28.0dfa3","wires":[]},{"id":"5c565eda.45665","type":"set","name":"set ps-index","xml":"<set>\n<parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />\n","comments":"","x":5809.214500427246,"y":1220.7053680419922,"z":"5cacde28.0dfa3","wires":[]},{"id":"2b5f010a.30118e","type":"for","name":"for each left vnf-network","xml":"<for index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >\n","comments":"","outputs":1,"x":4714.928375244141,"y":1327.8481073379517,"z":"5cacde28.0dfa3","wires":[["3d4f83d4.47877c"]]},{"id":"3d4f83d4.47877c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4894.928195953369,"y":1327.8481149673462,"z":"5cacde28.0dfa3","wires":[["41acde0.cf41f24","1274d00e.5974a"]]},{"id":"1274d00e.5974a","type":"switchNode","name":"switch found-match","xml":"<switch test='`$found-match`'>\n","comments":"","outputs":1,"x":5077.78564453125,"y":1359.2767114639282,"z":"5cacde28.0dfa3","wires":[["97cc168d.ec6678"]]},{"id":"97cc168d.ec6678","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":5244.928497314453,"y":1357.8481645584106,"z":"5cacde28.0dfa3","wires":[["159334ea.42f55b"]]},{"id":"159334ea.42f55b","type":"break","name":"break","xml":"<break>\n","comments":"","x":5374.928565979004,"y":1356.4196119308472,"z":"5cacde28.0dfa3","wires":[]},{"id":"cce9425a.efcca","type":"set","name":"set right-vnf-index","xml":"<set>\n<parameter name='right-vnf-index'\n  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index`' />\n","comments":"","x":4696.832870483398,"y":1261.4196453094482,"z":"5cacde28.0dfa3","wires":[]},{"id":"19a7e137.4341bf","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/gpsc.log' />\n","comments":"","outputs":1,"x":422.3095245361328,"y":241.89588737487793,"z":"5cacde28.0dfa3","wires":[[]]},{"id":"38807c57.9d8824","type":"set","name":"set cur-vnf-seq to 1","xml":"<set>\n<parameter name='cur-vnf-seq' value='1' />\n","comments":"","x":1360.619026184082,"y":1614.9194040298462,"z":"5cacde28.0dfa3","wires":[]},{"id":"6438b28e.eadbac","type":"set","name":"increment cur-vnf-seq","xml":"<set>\n<parameter name='cur-vnf-seq' value='`$cur-vnf-seq + 1`' />\n","comments":"","x":1871.8094635009766,"y":1851.2291269302368,"z":"5cacde28.0dfa3","wires":[]},{"id":"7ec23563.44488c","type":"set","name":"increment cur-vnf-seq","xml":"<set>\n<parameter name='cur-vnf-seq' value='`$max-vnf-seq + 1`' />\n","comments":"","x":1838.7145156860352,"y":2941.2291647195816,"z":"5cacde28.0dfa3","wires":[]},{"id":"5419a18d.9f41f","type":"switchNode","name":"switch lhs_vnf.vnf_length","xml":"<switch test='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf_length`'>\n","comments":"","outputs":1,"x":1381.4524688720703,"y":1911.9434823989868,"z":"5cacde28.0dfa3","wires":[["4c26778b.8af5f8","80fb7f61.9da61","8a2b1b59.56e818"]]},{"id":"80fb7f61.9da61","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1568.595407485962,"y":1807.6575479507446,"z":"5cacde28.0dfa3","wires":[["e2c61db.dcf04e"]]},{"id":"8a2b1b59.56e818","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1559.6666831970215,"y":2077.4794006347656,"z":"5cacde28.0dfa3","wires":[["e1ab9e3e.6ed7a"]]},{"id":"4c26778b.8af5f8","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1568.5953578948975,"y":1847.6575908660889,"z":"5cacde28.0dfa3","wires":[["e2c61db.dcf04e"]]},{"id":"e1ab9e3e.6ed7a","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1691.4524383544922,"y":2076.2294368743896,"z":"5cacde28.0dfa3","wires":[["9b80a5fb.c28e08","d9d965be.103cd8","8267f9f1.418958","d7943979.2ec028","6861dcd7.f00724","e2e3485b.93dbc8"]]},{"id":"9b80a5fb.c28e08","type":"set","name":"add service data to path","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service_length' value='1' />\n<parameter name='service-paths.service-path[$path-index].service[0].service-instance-id'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].service-instance-id`' />\n<parameter name='service-paths.service-path[$path-index].service[0].service-path-sequence-id'\n  value='1' />\n","comments":"","x":1877.1667861938477,"y":1950.5149097442627,"z":"5cacde28.0dfa3","wires":[]},{"id":"d9d965be.103cd8","type":"for","name":"for each vnf","xml":"<for index='idx' start='0' end='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf_length`' >\n","comments":"","outputs":1,"x":1841.4524955749512,"y":2039.086477279663,"z":"5cacde28.0dfa3","wires":[["8b62b8a0.22dc78"]]},{"id":"8b62b8a0.22dc78","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1984.3095054626465,"y":2039.0864372253418,"z":"5cacde28.0dfa3","wires":[["71a23e89.4a5e5","b73b2b6e.469208","ca476712.61c428"]]},{"id":"71a23e89.4a5e5","type":"set","name":"add service node data to path","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vnf-instance-id'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].vnf-instance-id`' />\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vnf-path-sequence-id'\n  value='`$vnf-seq`' />\n\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].left-network-name'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].left-network-name`' />\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].left-network-role'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].left-network-role`' />\n\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].right-network-name'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].right-network-name`' />\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].right-network-role'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].right-network-role`' />\n\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vf-module-instance.vf-module-id'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />\n","comments":"","x":2183.1191635131836,"y":2040.276720046997,"z":"5cacde28.0dfa3","wires":[]},{"id":"e2c61db.dcf04e","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1698.5953426361084,"y":1824.8003950119019,"z":"5cacde28.0dfa3","wires":[["2c60d4e2.0aa0fc","6438b28e.eadbac"]]},{"id":"8267f9f1.418958","type":"set","name":"set max-vnf-seq and max-vnf-idx to -1","xml":"<set>\n<parameter name='max-vnf-seq' value='-1' />\n<parameter name='max-vnf-idx' value='-1' />\n","comments":"","x":1921.4524993896484,"y":1901.9435405731201,"z":"5cacde28.0dfa3","wires":[]},{"id":"b73b2b6e.469208","type":"switchNode","name":"vnf-path-sequence-id > max-vnf-seq?","xml":"<switch test='`$service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vnf-path-sequence-id\n  &gt; $max-vnf-seq`'>\n","comments":"","outputs":1,"x":2203.3572273254395,"y":2089.0862312316895,"z":"5cacde28.0dfa3","wires":[["f8a2cf80.ca5ee"]]},{"id":"f8a2cf80.ca5ee","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2429.071315765381,"y":2087.6575899124146,"z":"5cacde28.0dfa3","wires":[["86f34b82.a693d8"]]},{"id":"86f34b82.a693d8","type":"set","name":"set max-vnf-seq and max-vnf-idx","xml":"<set>\n<parameter name='max-vnf-seq' value='`$service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vnf-path-sequence-id`' />\n<parameter name='max-vnf-idx' value='`$idx`' />\n","comments":"","x":2640.4999046325684,"y":2086.229331970215,"z":"5cacde28.0dfa3","wires":[]},{"id":"d7943979.2ec028","type":"set","name":"set right network-name and role","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$max-vnf-idx].right-network-name'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-name`' />\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$max-vnf-idx].right-network-role'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-role`' />\n","comments":"","x":1901.9285736083984,"y":2204.8007259368896,"z":"5cacde28.0dfa3","wires":[]},{"id":"ca476712.61c428","type":"set","name":"set vnf-seq","xml":"<set>\n<parameter name='vnf-seq'\n  value='`$cur-vnf-seq + $serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />\n","comments":"","x":2121.928565979004,"y":1993.3721570968628,"z":"5cacde28.0dfa3","wires":[]},{"id":"6861dcd7.f00724","type":"set","name":"increment cur-vnf-seq","xml":"<set>\n<parameter name='cur-vnf-seq'\n  value='`$cur-vnf-seq + $serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf_length`' />\n","comments":"","x":1869.0713958740234,"y":2156.2291927337646,"z":"5cacde28.0dfa3","wires":[]},{"id":"3b40b8ad.c94358","type":"switchNode","name":"switch rhs_vnf.vnf_length","xml":"<switch test='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`'>\n","comments":"","outputs":1,"x":3721.333507537842,"y":2510.7532749176025,"z":"5cacde28.0dfa3","wires":[["96436577.33d848","b7ece20f.a3485","8a8fa4d8.d3ad68"]]},{"id":"b7ece20f.a3485","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":3943.4762783050537,"y":2396.467420578003,"z":"5cacde28.0dfa3","wires":[["3d55caf2.114306"]]},{"id":"8a8fa4d8.d3ad68","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3934.547595977783,"y":2616.289240837097,"z":"5cacde28.0dfa3","wires":[["d100c18b.c21bb"]]},{"id":"96436577.33d848","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":3943.4762287139893,"y":2436.467463493347,"z":"5cacde28.0dfa3","wires":[["3d55caf2.114306"]]},{"id":"d100c18b.c21bb","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4066.333351135254,"y":2615.039277076721,"z":"5cacde28.0dfa3","wires":[["2f0aa309.a7033c","d468123e.c127f","8cd54107.defcf","ca7e7af5.a633b8","c9219926.7bed88"]]},{"id":"d468123e.c127f","type":"set","name":"add service to path","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service_length'\n  value='`$service-paths.service-path[$path-index].service_length + 1`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'\n  value='`$node-index + 1`' />\n","comments":"","x":4244.666717529297,"y":2514.0868034362793,"z":"5cacde28.0dfa3","wires":[]},{"id":"8cd54107.defcf","type":"for","name":"for each vnf","xml":"<for index='idx' start='0' end='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`' >\n","comments":"","outputs":1,"x":4220.619049072266,"y":2599.3249225616455,"z":"5cacde28.0dfa3","wires":[["e84d5b5a.e89418"]]},{"id":"e84d5b5a.e89418","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4363.476058959961,"y":2599.324882507324,"z":"5cacde28.0dfa3","wires":[["98191286.37051","103d9ed6.568e81","2f8ef053.b4912"]]},{"id":"98191286.37051","type":"set","name":"add service node data to path","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-instance-id'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vnf-instance-id`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id'\n  value='`$vnf-seq`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-name'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].left-network-name`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-role'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].left-network-role`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-name'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].right-network-name`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-role'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].right-network-role`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vf-module-instance.vf-module-id'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />\n","comments":"","x":4558.9524574279785,"y":2601.8487701416016,"z":"5cacde28.0dfa3","wires":[]},{"id":"2f0aa309.a7033c","type":"set","name":"set min-vnf-seq and min-vnf-idx to 99","xml":"<set>\n<parameter name='min-vnf-seq' value='99' />\n<parameter name='min-vnf-idx' value='99' />\n","comments":"","x":4298.952365875244,"y":2463.8486824035645,"z":"5cacde28.0dfa3","wires":[]},{"id":"103d9ed6.568e81","type":"switchNode","name":"vnf-path-sequence-id < min-vnf-seq?","xml":"<switch test='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id\n  &lt; $min-vnf-seq`'>\n","comments":"","outputs":1,"x":4582.523780822754,"y":2649.324676513672,"z":"5cacde28.0dfa3","wires":[["a12f6579.3e8208"]]},{"id":"a12f6579.3e8208","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":4808.237869262695,"y":2647.896035194397,"z":"5cacde28.0dfa3","wires":[["dff2f6d9.1c2fd8"]]},{"id":"dff2f6d9.1c2fd8","type":"set","name":"set min-vnf-seq and min-vnf-idx","xml":"<set>\n<parameter name='min-vnf-seq' value='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id`' />\n<parameter name='min-vnf-idx' value='`$idx`' />\n","comments":"","x":5019.666458129883,"y":2646.4677772521973,"z":"5cacde28.0dfa3","wires":[]},{"id":"ca7e7af5.a633b8","type":"set","name":"set left network-name and role","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$min-vnf-idx].left-network-name'\n  value='`$prev-network-name`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$min-vnf-idx].left-network-role'\n  value='`$prev-network-role`' />\n","comments":"","x":4279.428272247314,"y":2700.039125442505,"z":"5cacde28.0dfa3","wires":[]},{"id":"2f8ef053.b4912","type":"set","name":"set vnf-seq","xml":"<set>\n<parameter name='vnf-seq'\n  value='`$cur-vnf-seq + $serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />\n","comments":"","x":4501.095119476318,"y":2553.610602378845,"z":"5cacde28.0dfa3","wires":[]},{"id":"ba56bc8d.c862f","type":"switchNode","name":"switch rhs_vnf.vnf_length","xml":"<switch test='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`'>\n","comments":"","outputs":1,"x":3580.416534423828,"y":2934.8363456726074,"z":"5cacde28.0dfa3","wires":[["6ef740d7.ab8bf","9a871bcd.949e38","97539162.9e32e"]]},{"id":"9a871bcd.949e38","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":3765.892644882202,"y":2810.550322532654,"z":"5cacde28.0dfa3","wires":[["1b8e535d.ea704d"]]},{"id":"97539162.9e32e","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3758.630790710449,"y":3050.3722314834595,"z":"5cacde28.0dfa3","wires":[["56ed4500.5cf57c"]]},{"id":"6ef740d7.ab8bf","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":3765.8925952911377,"y":2850.550365447998,"z":"5cacde28.0dfa3","wires":[["1b8e535d.ea704d"]]},{"id":"56ed4500.5cf57c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3890.41654586792,"y":3049.1222677230835,"z":"5cacde28.0dfa3","wires":[["25c3f34.453890c","6d7ca50f.5c9f5c","7162b8c9.40d708","fa017dc5.4429c","35f9a6cd.14d2ba"]]},{"id":"6d7ca50f.5c9f5c","type":"set","name":"add service to path","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service_length'\n  value='`$service-paths.service-path[$path-index].service_length + 1`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'\n  value='`$node-index + 1`' />\n","comments":"","x":4068.749912261963,"y":2948.1697940826416,"z":"5cacde28.0dfa3","wires":[]},{"id":"7162b8c9.40d708","type":"for","name":"for each vnf","xml":"<for index='idx' start='0' end='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf_length`' >\n","comments":"","outputs":1,"x":4044.7022438049316,"y":3033.407913208008,"z":"5cacde28.0dfa3","wires":[["1108ae21.339162"]]},{"id":"1108ae21.339162","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4187.559253692627,"y":3033.4078731536865,"z":"5cacde28.0dfa3","wires":[["fdd66dd1.e42d9","4eaaffe2.b17c4","a88ed994.87c1c8"]]},{"id":"25c3f34.453890c","type":"set","name":"set max-vnf-seq and max-vnf-idx to -1","xml":"<set>\n<parameter name='max-vnf-seq' value='-1' />\n<parameter name='max-vnf-idx' value='-1' />\n","comments":"","x":4123.03556060791,"y":2897.9316730499268,"z":"5cacde28.0dfa3","wires":[]},{"id":"fdd66dd1.e42d9","type":"switchNode","name":"vnf-path-sequence-id > max-vnf-seq?","xml":"<switch test='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id\n  &gt; $max-vnf-seq`'>\n","comments":"","outputs":1,"x":4406.60697555542,"y":3083.407667160034,"z":"5cacde28.0dfa3","wires":[["5ce7f344.05a40c"]]},{"id":"5ce7f344.05a40c","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":4632.321063995361,"y":3081.9790258407593,"z":"5cacde28.0dfa3","wires":[["c1d8a9c8.833a88"]]},{"id":"c1d8a9c8.833a88","type":"set","name":"set max-vnf-seq and max-vnf-idx","xml":"<set>\n<parameter name='max-vnf-seq' value='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id`' />\n<parameter name='max-vnf-idx' value='`$idx`' />\n","comments":"","x":4843.749652862549,"y":3080.5507678985596,"z":"5cacde28.0dfa3","wires":[]},{"id":"fa017dc5.4429c","type":"set","name":"set right network-name and role","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$max-vnf-idx].right-network-name'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$max-vnf-idx].right-network-role'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />\n","comments":"","x":4103.5114669799805,"y":3134.122116088867,"z":"5cacde28.0dfa3","wires":[]},{"id":"4eaaffe2.b17c4","type":"set","name":"set vnf-seq","xml":"<set>\n<parameter name='vnf-seq'\n  value='`$cur-vnf-seq + $serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />\n","comments":"","x":4325.178314208984,"y":2987.6935930252075,"z":"5cacde28.0dfa3","wires":[]},{"id":"a88ed994.87c1c8","type":"set","name":"add service node data to path","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-instance-id'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vnf-instance-id`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id'\n  value='`$vnf-seq`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-name'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].left-network-name`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-role'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].left-network-role`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-name'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].right-network-name`' />\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-role'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].right-network-role`' />\n\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vf-module-instance.vf-module-id'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />\n","comments":"","x":4382.999977111816,"y":3035.753180503845,"z":"5cacde28.0dfa3","wires":[]},{"id":"30084bb6.339224","type":"set","name":"set end-to-end-path to false","xml":"<set>\n<parameter name='end-to-end-path' value='false' />\n","comments":"","x":1385.5000686645508,"y":1660.7531042099,"z":"5cacde28.0dfa3","wires":[]},{"id":"665849ce.a4ea48","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3524.6670722961426,"y":2549.08647441864,"z":"5cacde28.0dfa3","wires":[["3b40b8ad.c94358","fc25949d.423d38"]]},{"id":"fc25949d.423d38","type":"set","name":"set end-to-end-path to true","xml":"<set>\n<parameter name='end-to-end-path' value='true' />\n","comments":"","x":3723.0002479553223,"y":2572.4198083877563,"z":"5cacde28.0dfa3","wires":[]},{"id":"35f9a6cd.14d2ba","type":"set","name":"set vnf_length","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf_length`' />\n","comments":"","x":4049.6666870117188,"y":3174.324944496155,"z":"5cacde28.0dfa3","wires":[]},{"id":"c9219926.7bed88","type":"set","name":"set vnf_length","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'\n  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`' />\n","comments":"","x":4226.333469390869,"y":2745.753108024597,"z":"5cacde28.0dfa3","wires":[]},{"id":"e2e3485b.93dbc8","type":"set","name":"set vnf_length","xml":"<set>\n<parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf_length'\n  value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf_length`' />\n","comments":"","x":1845.4999694824219,"y":2250.752883911133,"z":"5cacde28.0dfa3","wires":[]},{"id":"75d577c9.53e138","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/gpsd.log' />\n","comments":"","outputs":1,"x":362.8571472167969,"y":1680,"z":"5cacde28.0dfa3","wires":[[]]},{"id":"6efb0085.c861d","type":"switchNode","name":"switch path-segments_length","xml":"<switch test='`$serv-cust[0].serv-insts[$first-serv-index].path-segments_length`'>\n","comments":"","outputs":1,"x":750,"y":2026.5,"z":"5cacde28.0dfa3","wires":[["bcfeaa86.4e3178","885eede8.38c45","3ff4421e.b9316e"]]},{"id":"bcfeaa86.4e3178","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":982,"y":1908,"z":"5cacde28.0dfa3","wires":[["b8f6cf1f.962d4"]]},{"id":"3ff4421e.b9316e","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":973.0712757110596,"y":2177.821852684021,"z":"5cacde28.0dfa3","wires":[["fefe27b3.5a2c68"]]},{"id":"885eede8.38c45","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":981.9999504089355,"y":1948.0000429153442,"z":"5cacde28.0dfa3","wires":[["b8f6cf1f.962d4"]]},{"id":"b8f6cf1f.962d4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1116,"y":1928,"z":"5cacde28.0dfa3","wires":[[]]},{"id":"3ad3e612.c9cc2a","type":"comment","name":"this service has no path to anything","info":"","comments":"","x":1024,"y":1864,"z":"5cacde28.0dfa3","wires":[]},{"id":"65851b43.a70314","type":"switchNode","name":"switch path-segments_length","xml":"<switch test='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments_length`'>\n","comments":"","outputs":1,"x":2098,"y":2685,"z":"5cacde28.0dfa3","wires":[["f41beb6d.61ca38","1f8f0d5.620e6f3","9156e4f0.9225d8"]]},{"id":"f41beb6d.61ca38","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2312,"y":2624,"z":"5cacde28.0dfa3","wires":[["717e9d33.af8904"]]},{"id":"1f8f0d5.620e6f3","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":2311.9999504089355,"y":2664.0000429153442,"z":"5cacde28.0dfa3","wires":[["717e9d33.af8904"]]},{"id":"c54bb090.45a03","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2849.333122253418,"y":2612.333109855652,"z":"5cacde28.0dfa3","wires":[[]]},{"id":"f0275c56.68154","type":"comment","name":"this service has no path to anything","info":"","comments":"","x":2897.333267211914,"y":2566.6666870117188,"z":"5cacde28.0dfa3","wires":[]},{"id":"9156e4f0.9225d8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2314,"y":2734,"z":"5cacde28.0dfa3","wires":[["a3466db9.3197e"]]},{"id":"717e9d33.af8904","type":"switchNode","name":"is this the last node in the path","xml":"<switch test='`$node-index == $serv-cust_length - 1`'>\n","comments":"","outputs":1,"x":2516.66650390625,"y":2641.66650390625,"z":"5cacde28.0dfa3","wires":[["d622c231.39e0e","8d8ed6c3.5ae7b8"]]},{"id":"8d8ed6c3.5ae7b8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2721.66650390625,"y":2666.66650390625,"z":"5cacde28.0dfa3","wires":[["a3466db9.3197e"]]},{"id":"d622c231.39e0e","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2721.66650390625,"y":2613.333251953125,"z":"5cacde28.0dfa3","wires":[["c54bb090.45a03"]]},{"id":"1b8e535d.ea704d","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3894.9995040893555,"y":2830.0000324249268,"z":"5cacde28.0dfa3","wires":[["bb3c7e5a.29289","c91b78fc.c1add8"]]},{"id":"c91b78fc.c1add8","type":"set","name":"set max-vnf-seq","xml":"<set>\n<parameter name='max-vnf-seq' value='`$cur-vnf-seq`' />\n","comments":"","x":4051.6668243408203,"y":2846.6668605804443,"z":"5cacde28.0dfa3","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-create-composite-path.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-create-composite-path.json
new file mode 100755
index 0000000..9faec13
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-create-composite-path.json
@@ -0,0 +1 @@
+[{"id":"38b3fdb6.1bce32","type":"dgstart","name":"DGSTART","outputs":1,"x":101.66666412353516,"y":83.33332824707031,"z":"acdffee6.4646","wires":[["99e272a4.4e9a8"]]},{"id":"99e272a4.4e9a8","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":216.95236206054688,"y":123.5714340209961,"z":"acdffee6.4646","wires":[["1e63d80b.85a448"]]},{"id":"1e63d80b.85a448","type":"method","name":"method getpathsegment-create-composite-path","xml":"<method rpc='getpathsegment-create-composite-path' mode='sync'>\n","comments":"","outputs":1,"x":221.0952911376953,"y":164.3333225250244,"z":"acdffee6.4646","wires":[["df2ed6c2.cce068"]]},{"id":"1c6cd94a.dfdc47","type":"comment","name":"getpathsegment-create-composite-path","info":"","comments":"","x":496.0115203857422,"y":30.9196720123291,"z":"acdffee6.4646","wires":[]},{"id":"df2ed6c2.cce068","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":304.5000534057617,"y":303.46728324890137,"z":"acdffee6.4646","wires":[["fc83ec6a.1d401","d895c970.3dbc78"]]},{"id":"fc83ec6a.1d401","type":"get-resource","name":"get-resource PATH_SEGMENT","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from PATH_SEGMENT WHERE service_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid\n    AND path_name = $db.forwarding-path[$path-index].path-name ORDER BY path_segment_seq'\n  pfx='db.path-segment[]'>\n\n","comments":"","outputs":1,"x":527.6190452575684,"y":373.0952377319336,"z":"acdffee6.4646","wires":[["7ff0a241.207e8c","8b411eeb.03fd7","e62cb2cc.8b1b1"]]},{"id":"c64c7acf.8db458","type":"for","name":"for each path segment","xml":"<for index='path-segment-index' start='0' end='`$db.path-segment_length`' >\n","comments":"","outputs":1,"x":560.7738571166992,"y":557.4404888153076,"z":"acdffee6.4646","wires":[["c804b632.fcc3c8"]]},{"id":"c804b632.fcc3c8","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":758.9286117553711,"y":557.261869430542,"z":"acdffee6.4646","wires":[["4637dda4.0531c4","c55591ca.552ba"]]},{"id":"227d76b8.b8f89a","type":"set","name":"set serv-cust_length to 0","xml":"<set>\n<parameter name='serv-cust_length' value='0' />\n","comments":"","x":569.1667022705078,"y":509.58334255218506,"z":"acdffee6.4646","wires":[]},{"id":"4637dda4.0531c4","type":"set","name":"add source ids to serv-cust[]","xml":"<set>\n<parameter name='serv-cust[$serv-cust_length].id' value='`$db.path-segment[$path-segment-index].source-association-uuid`' />\n<parameter name='serv-cust_length' value='`$serv-cust_length + 1`' />\n","comments":"","x":984.1667098999023,"y":535.8333425521851,"z":"acdffee6.4646","wires":[]},{"id":"c55591ca.552ba","type":"switchNode","name":"is this the last path-segment?","xml":"<switch test='`$path-segment-index == ( $db.path-segment_length - 1) `'>\n","comments":"","outputs":1,"x":987.9167175292969,"y":580.8333435058594,"z":"acdffee6.4646","wires":[["f40592ef.6d056"]]},{"id":"f40592ef.6d056","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1184.1667194366455,"y":580.5833435058594,"z":"acdffee6.4646","wires":[["65efc56f.f80dcc"]]},{"id":"65efc56f.f80dcc","type":"set","name":"add target ids to serv-cust[]","xml":"<set>\n<parameter name='serv-cust[$serv-cust_length].id' value='`$db.path-segment[$path-segment-index].target-association-uuid`' />\n<parameter name='serv-cust_length' value='`$serv-cust_length + 1`' />\n","comments":"","x":1373.1667137145996,"y":579.8333435058594,"z":"acdffee6.4646","wires":[]},{"id":"d6d2ff5a.a38e6","type":"comment","name":"create list of service customization/invariant ids","info":"","comments":"","x":750.0000495910645,"y":460.41664600372314,"z":"acdffee6.4646","wires":[]},{"id":"eba93f08.848f6","type":"get-resource","name":"custom query - get runtime service-instances","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"custom-query\"\n\tkey=\"format = 'resource'\"\n\tforce=\"true\"\n\tlocal-only=\"false\"\n\tpfx=\"aai.service-instances\" >\n\t<parameter name=\"start[0]\" value=\"`'nodes/service-instances?model-invariant-id=' + $serv-cust[$serv-index].inv-id`\" />\n\t<parameter name=\"start_length\" value=\"1\" />\n","comments":"","outputs":1,"x":1164.1666870117188,"y":815.5833110809326,"z":"acdffee6.4646","wires":[["4c07202b.a6ebd","465c9f69.063cf","dc42dfdf.fdb5"]]},{"id":"465c9f69.063cf","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1425.9129028320312,"y":806.4841794967651,"z":"acdffee6.4646","wires":[["e9829c01.c3518"]]},{"id":"4c07202b.a6ebd","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1434.8414993286133,"y":764.7699127197266,"z":"acdffee6.4646","wires":[["22fcdcd6.409e54"]]},{"id":"d895c970.3dbc78","type":"set","name":"set match-type","xml":"<set>\n<parameter name='match-type' value='network-name' />\n","comments":"","x":475.00000762939453,"y":243.33336734771729,"z":"acdffee6.4646","wires":[]},{"id":"3337a2c8.4f2c0e","type":"for","name":"for each service","xml":"<for index='serv-index' start='0' end='`$serv-cust_length`' >\n","comments":"","outputs":1,"x":542.9166564941406,"y":795.8333034515381,"z":"acdffee6.4646","wires":[["ea262156.5bc25"]]},{"id":"ba80debf.cd0aa","type":"for","name":"for each runtime service-instance","xml":"<for index='runtime-index' start='0' end='`$aai.service-instances.results_length`' >\n","comments":"","outputs":1,"x":1787.3809661865234,"y":897.261890411377,"z":"acdffee6.4646","wires":[["f4f23919.fbf798"]]},{"id":"37e396a3.2783fa","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1601.487964630127,"y":1169.583387374878,"z":"acdffee6.4646","wires":[["e16fa584.ce8668","c9267106.d99d1","b7b866f.22cfd98","9f400084.68537","a4663c40.d0b5d"]]},{"id":"22fcdcd6.409e54","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"`'Unable to find runtime service instances for invariant UUID ' + $serv-cust[$serv-index].inv-id`\" />\n","comments":"","x":1639.1667098999023,"y":764.5833187103271,"z":"acdffee6.4646","wires":[]},{"id":"e9829c01.c3518","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"`'System error finding runtime service instances for customization UUID ' + $serv-cust[$serv-index].inv-id`\" />\n","comments":"","x":1637.9166870117188,"y":805.8333110809326,"z":"acdffee6.4646","wires":[]},{"id":"dc42dfdf.fdb5","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1427.5595741271973,"y":895.6547050476074,"z":"acdffee6.4646","wires":[["1a046dd0.664552"]]},{"id":"1a046dd0.664552","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1568.8095741271973,"y":896.9047050476074,"z":"acdffee6.4646","wires":[["ba80debf.cd0aa","5a25eaf8.84c624","2fed2a61.3ba6d6"]]},{"id":"c9267106.d99d1","type":"execute","name":"generate port-mirror-configuration url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.service`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.service-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$serv-inst.service-instance-id`\"/>\n","comments":"","outputs":1,"x":1911.4878692626953,"y":1190.8334407806396,"z":"acdffee6.4646","wires":[[]]},{"id":"b7b866f.22cfd98","type":"execute","name":"execute RestApiCallNode - get service","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-service\" />\n\n","comments":"","outputs":1,"x":1918.8212051391602,"y":1473.9286651611328,"z":"acdffee6.4646","wires":[["44737e00.fd61a","e1d027ae.6e1bf8"]]},{"id":"44737e00.fd61a","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2181.367099761963,"y":1296.1292266845703,"z":"acdffee6.4646","wires":[["73b87896.db1488"]]},{"id":"e1d027ae.6e1bf8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2182.809181213379,"y":1772.3094692230225,"z":"acdffee6.4646","wires":[["e72fa4b8.6bb8f8"]]},{"id":"8d022a9b.038888","type":"comment","name":"Is this service in GENERIC-RESOURCE-API?","info":"","comments":"","x":1925.2497940063477,"y":1426.4286623001099,"z":"acdffee6.4646","wires":[]},{"id":"e16fa584.ce8668","type":"set","name":"clear mdsal-service and serv-inst.api","xml":"<set>\n<parameter name='mdsal-service.' value='' />\n<parameter name='serv-inst.api' value='' />\n","comments":"","x":1907.0712242126465,"y":1139.9405155181885,"z":"acdffee6.4646","wires":[]},{"id":"8786ac57.03e15","type":"set","name":"set serv-inst.service-instance-id","xml":"<set>\n<parameter name='serv-inst.service-instance-id' value='`$aai.service-instances.results[$runtime-index].service-instance.service-instance-id`' />\n","comments":"","x":2592.880962371826,"y":814.6428813934326,"z":"acdffee6.4646","wires":[]},{"id":"73b87896.db1488","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":2335.2379302978516,"y":1295.0833110809326,"z":"acdffee6.4646","wires":[["bae35c98.23485"]]},{"id":"bae35c98.23485","type":"switchNode","name":"switch vnf_length","xml":"<switch test='`$mdsal-service.service[0].service-data.vnfs.vnf_length`'>\n","comments":"","outputs":1,"x":2520.237953186035,"y":1293.8333282470703,"z":"acdffee6.4646","wires":[["5de50820.6365a8","6a33778b.f0d2b8","8b08a0fc.3d573","156859cc.f57d36"]]},{"id":"5de50820.6365a8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2698.988010406494,"y":1145.8333530426025,"z":"acdffee6.4646","wires":[["5d43b7a0.cc8368"]]},{"id":"6a33778b.f0d2b8","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":2700.238010406494,"y":1184.5833530426025,"z":"acdffee6.4646","wires":[["5d43b7a0.cc8368"]]},{"id":"8b08a0fc.3d573","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2700.737949371338,"y":1520.8333282470703,"z":"acdffee6.4646","wires":[["7f9faf98.11444"]]},{"id":"7f9faf98.11444","type":"switchNode","name":"switch forwarding-path_length","xml":"<switch test='`$mdsal-service.service[0].service-data.forwarding-paths.forwarding-path_length`'>\n","comments":"","outputs":1,"x":2916.987953186035,"y":1522.0833282470703,"z":"acdffee6.4646","wires":[["b12a45c2.9c00f8","df779983.f9ee18","efeee58f.366df8"]]},{"id":"156859cc.f57d36","type":"outcome","name":"1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":2703.988010406494,"y":1324.8333549499512,"z":"acdffee6.4646","wires":[["d321c3e5.b08ea"]]},{"id":"b12a45c2.9c00f8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":3128.9879837036133,"y":1458.3333358764648,"z":"acdffee6.4646","wires":[["6574fc05.7aa8d4"]]},{"id":"df779983.f9ee18","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":3130.2379837036133,"y":1497.0833358764648,"z":"acdffee6.4646","wires":[["6574fc05.7aa8d4"]]},{"id":"efeee58f.366df8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3127.3809661865234,"y":1591.7262210845947,"z":"acdffee6.4646","wires":[["cbc2b125.4a032"]]},{"id":"5d43b7a0.cc8368","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='data-error' value=\"`'Service instance ' + $si.service-instance-id + ' has no VNFs, skipping'`\" />\n","comments":"","x":2897.7379837036133,"y":1163.3333358764648,"z":"acdffee6.4646","wires":[]},{"id":"6574fc05.7aa8d4","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='data-error' value=\"`'Service instance ' + $serv-inst.service-instance-id + ' has multiple VNFs but no forwarding paths were found'`\" />\n","comments":"","x":3317.7379837036133,"y":1475.8333358764648,"z":"acdffee6.4646","wires":[]},{"id":"389f4f59.b5385","type":"call","name":"call GENERIC-RESOURCE-API:getpathsegment-populate-from-grapi","xml":"<call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-grapi' mode='sync' >\n","comments":"","outputs":1,"x":3186.737953186035,"y":1274.0833282470703,"z":"acdffee6.4646","wires":[[]]},{"id":"ed8af0c2.a5e1e","type":"call","name":"call GENERIC-RESOURCE-API:getpathsegment-populate-from-vnfapi","xml":"<call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-vnfapi' mode='sync' >\n","comments":"","outputs":1,"x":2647.80948638916,"y":1723.0832061767578,"z":"acdffee6.4646","wires":[[]]},{"id":"a8c16a6d.0d2f18","type":"success","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2661.2022552490234,"y":1910.5475997924805,"z":"acdffee6.4646","wires":[["ac5e9274.a71eb"]]},{"id":"23ce8b1d.277d04","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2658.7022666931152,"y":1776.6310663223267,"z":"acdffee6.4646","wires":[["1300cf7.befc831"]]},{"id":"1300cf7.befc831","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='data-error' value=\"`'Failure finding service instance ' + $si.service-instance-id + ' in either GENERIC-REOURCE-API or VNF-API'`\" />\n","comments":"","x":2872.452236175537,"y":1775.1310510635376,"z":"acdffee6.4646","wires":[]},{"id":"ac5e9274.a71eb","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2812.4525032043457,"y":1909.2975997924805,"z":"acdffee6.4646","wires":[["bab97280.4fcff"]]},{"id":"3f21a433.f89dbc","type":"set","name":"copy serv-inst to serv-insts array","xml":"<set>\n<parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].' value='`$serv-inst.`' />\n","comments":"","x":3074.237953186035,"y":1327.8333282470703,"z":"acdffee6.4646","wires":[]},{"id":"f723823c.14d35","type":"set","name":"increment serv-insts_length","xml":"<set>\n<parameter name='tmp.serv-insts_length' value='`$tmp.serv-insts_length + 1`' />\n","comments":"","x":3055.487922668457,"y":1382.833309173584,"z":"acdffee6.4646","wires":[]},{"id":"d321c3e5.b08ea","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":2853.9879837036133,"y":1324.5833358764648,"z":"acdffee6.4646","wires":[["389f4f59.b5385","3f21a433.f89dbc","f723823c.14d35"]]},{"id":"5a25eaf8.84c624","type":"set","name":"set tmp.serv-insts_length to 0","xml":"<set>\n<parameter name='tmp.serv-insts_length' value='0' />\n","comments":"","x":1781.1309967041016,"y":848.1547393798828,"z":"acdffee6.4646","wires":[]},{"id":"e72fa4b8.6bb8f8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2309.297294616699,"y":1780.047555923462,"z":"acdffee6.4646","wires":[["ed8af0c2.a5e1e","78b047cf.ed86c8"]]},{"id":"78b047cf.ed86c8","type":"switchNode","name":"switch serv-inst.api","xml":"<switch test='`$serv-inst.api`'>\n","comments":"","outputs":1,"x":2492.393165588379,"y":1845.1666173934937,"z":"acdffee6.4646","wires":[["23ce8b1d.277d04","a8c16a6d.0d2f18"]]},{"id":"2de86e6.3962e92","type":"set","name":"copy serv-inst to serv-insts array","xml":"<set>\n<parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].' value='`$serv-inst.`' />\n","comments":"","x":3539.0593872070312,"y":2006.5000267028809,"z":"acdffee6.4646","wires":[]},{"id":"f4f23919.fbf798","type":"switchNode","name":"switch orchestration-status","xml":"<switch test='`$aai.service-instances.results[$runtime-index].service-instance.orchestration-status`'>\n","comments":"","outputs":1,"x":2059.7024688720703,"y":897.0832557678223,"z":"acdffee6.4646","wires":[["83f502d6.2f5a4"]]},{"id":"83f502d6.2f5a4","type":"outcome","name":"Active","xml":"<outcome value='Active'>\n","comments":"","outputs":1,"x":2254.1665954589844,"y":895.8332214355469,"z":"acdffee6.4646","wires":[["442aff0f.a1283"]]},{"id":"1398c294.3f952d","type":"for","name":"for each service","xml":"<for index='serv-index' start='0' end='`$serv-cust_length`' >\n","comments":"","outputs":1,"x":539.583366394043,"y":668.7500200271606,"z":"acdffee6.4646","wires":[["ecfee624.daec78"]]},{"id":"f6adfe96.32d5f","type":"comment","name":"convert customization uuid to invariant uuid","info":"","comments":"","x":668.3334045410156,"y":626.250018119812,"z":"acdffee6.4646","wires":[]},{"id":"15831d68.36e8b3","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1121.2024307250977,"y":625.3093452453613,"z":"acdffee6.4646","wires":[["be78a9fd.371368"]]},{"id":"745ebab0.1a84e4","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1127.2738418579102,"y":666.0950517654419,"z":"acdffee6.4646","wires":[["dfab331.23ebcd"]]},{"id":"ecfee624.daec78","type":"get-resource","name":"get-resource SERVICE_PROXY, SERVICE_MODEL","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='select sm.invariant_uuid\n    from SERVICE_PROXY sp, SERVICE_MODEL sm\n    where sp.source_service_uuid = sm.service_uuid\n    and sp.customization_uuid = $serv-cust[$serv-index].id'\n  pfx='db'>\n","comments":"","outputs":1,"x":844.5238189697266,"y":668.5714359283447,"z":"acdffee6.4646","wires":[["15831d68.36e8b3","745ebab0.1a84e4","577c9bbc.66ccc4"]]},{"id":"577c9bbc.66ccc4","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1122.083351135254,"y":707.5000200271606,"z":"acdffee6.4646","wires":[["1848871c.fbafd9"]]},{"id":"1848871c.fbafd9","type":"set","name":"store invariant id","xml":"<set>\n<parameter name='serv-cust[$serv-index].inv-id' value='`$db.invariant-uuid`' />\n","comments":"","x":1287.0833587646484,"y":707.5000200271606,"z":"acdffee6.4646","wires":[]},{"id":"be78a9fd.371368","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"`'Failure reading SERVICE_PROXY and SERVICE_MODEL for customization uuid ' + $serv-cust[$serv-index].id`\" />\n","comments":"","x":1315.8333549499512,"y":625.0000190734863,"z":"acdffee6.4646","wires":[]},{"id":"dfab331.23ebcd","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"`'Cannot find entries in SERVICE_PROXY and SERVICE_MODEL for customization uuid ' + $serv-cust[$serv-index].id`\" />\n","comments":"","x":1315.8333358764648,"y":665.0000104904175,"z":"acdffee6.4646","wires":[]},{"id":"ea262156.5bc25","type":"switchNode","name":"switch invariant uuid","xml":"<switch test='`$serv-cust[$serv-index].inv-id`'>\n","comments":"","outputs":1,"x":741.6666793823242,"y":794.5833110809326,"z":"acdffee6.4646","wires":[["6e5ea8a8.3f7578","38fd826b.e7840e"]]},{"id":"6e5ea8a8.3f7578","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":907.9166831970215,"y":765.8333110809326,"z":"acdffee6.4646","wires":[["458e60e8.0fa83"]]},{"id":"38fd826b.e7840e","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":908.7381553649902,"y":816.1192016601562,"z":"acdffee6.4646","wires":[["eba93f08.848f6"]]},{"id":"458e60e8.0fa83","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1044.1666831970215,"y":765.0833101272583,"z":"acdffee6.4646","wires":[[]]},{"id":"3b868648.17a23a","type":"call","name":"call GENERIC-RESOURCE-API:getpathsegment-composite-match-pair","xml":"<call module='GENERIC-RESOURCE-API' rpc='getpathsegment-composite-match-pair' mode='sync' >\n","comments":"","outputs":1,"x":687.9287109375,"y":2361.2736377716064,"z":"acdffee6.4646","wires":[[]]},{"id":"cbc2b125.4a032","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":3256.1309661865234,"y":1591.7262210845947,"z":"acdffee6.4646","wires":[["e63540a5.81689","c13e34b7.f42fb8","a14b9b6d.2bbee8","7ace4a44.fb42f4"]]},{"id":"e63540a5.81689","type":"set","name":"copy forwarding-paths to serv-insts array","xml":"<set>\n<parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].forwarding-paths.'\n  value='`$mdsal-service.service[0].service-data.forwarding-paths.`' />\n","comments":"","x":3503.988082885742,"y":1615.2975959777832,"z":"acdffee6.4646","wires":[]},{"id":"c13e34b7.f42fb8","type":"set","name":"increment serv-insts_length","xml":"<set>\n<parameter name='tmp.serv-insts_length' value='`$tmp.serv-insts_length + 1`' />\n","comments":"","x":3462.5592651367188,"y":1662.0834131240845,"z":"acdffee6.4646","wires":[]},{"id":"a14b9b6d.2bbee8","type":"call","name":"call GENERIC-RESOURCE-API:getpathsegment-populate-from-grapi","xml":"<call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-grapi' mode='sync' >\n","comments":"","outputs":1,"x":3588.2736282348633,"y":1527.0833358764648,"z":"acdffee6.4646","wires":[[]]},{"id":"7ace4a44.fb42f4","type":"set","name":"copy serv-inst to serv-insts array","xml":"<set>\n<parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].' value='`$serv-inst.`' />\n","comments":"","x":3475.4166946411133,"y":1568.5119247436523,"z":"acdffee6.4646","wires":[]},{"id":"9f400084.68537","type":"set","name":"clear serv-inst","xml":"<set>\n<parameter name='serv-inst.' value='' />\n","comments":"","x":1837.9879150390625,"y":1518.511981010437,"z":"acdffee6.4646","wires":[]},{"id":"2fed2a61.3ba6d6","type":"set","name":"set final serv-insts_length","xml":"<set>\n<parameter name='serv-cust[$serv-index].serv-insts_length' value='`$tmp.serv-insts_length`' />\n","comments":"","x":1765.4167137145996,"y":942.7975521087646,"z":"acdffee6.4646","wires":[]},{"id":"e2bb1296.6a77f","type":"comment","name":"Create forwarding-path structure","info":"","comments":"","x":1804.2026138305664,"y":2759.249895095825,"z":"acdffee6.4646","wires":[]},{"id":"9c1deb3.fce3a18","type":"switchNode","name":"switch service-paths.service-path_length","xml":"<switch test='`$service-paths.service-path_length`'>\n","comments":"","outputs":1,"x":588.7024993896484,"y":2585.0833568573,"z":"acdffee6.4646","wires":[["c17848c4.7aa328","891625b0.f7b498","2b7b5767.caf788"]]},{"id":"c17848c4.7aa328","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":868.7024803161621,"y":2441.7497968673706,"z":"acdffee6.4646","wires":[["9234ee5.d733b1"]]},{"id":"891625b0.f7b498","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":869.9524803161621,"y":2480.4997968673706,"z":"acdffee6.4646","wires":[["9234ee5.d733b1"]]},{"id":"2b7b5767.caf788","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":865.9524955749512,"y":2712.0001287460327,"z":"acdffee6.4646","wires":[["db0b5e4d.138fb"]]},{"id":"9234ee5.d733b1","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1002.0358390808105,"y":2455.0831298828125,"z":"acdffee6.4646","wires":[[]]},{"id":"9957ee7a.eb839","type":"set","name":"set top-level data","xml":"<set>\n<parameter name='forwarding-path.forwarding-path-name' value='`$db.path-segment[0].path-name`' />\n<parameter name='forwarding-path.forwarding-path-type' value='Service' />\n<parameter name='forwarding-path.onap-model-information.model-name' value='`$db.path-segment[0].path-name`' />\n","comments":"","x":1715.0359230041504,"y":2846.749963760376,"z":"acdffee6.4646","wires":[]},{"id":"2464da2e.bc2576","type":"execute","name":"generate forwarding-path-id","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n<parameter name=\"ctx-destination\" value=\"forwarding-path.forwarding-path-id\" />\n","comments":"","outputs":1,"x":1747.1192169189453,"y":2800.916626930237,"z":"acdffee6.4646","wires":[[]]},{"id":"5d113599.9797dc","type":"set","name":"copy service-path","xml":"<set>\n<parameter name='forwarding-path.service-paths.' value='`$service-paths.`' />\n","comments":"","x":1713.3692474365234,"y":2891.7502098083496,"z":"acdffee6.4646","wires":[]},{"id":"654073a0.8dc7dc","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1525.0359649658203,"y":3155.0832328796387,"z":"acdffee6.4646","wires":[["2464da2e.bc2576","9957ee7a.eb839","5d113599.9797dc","7ecab0fa.15895","76d060fc.5c71a","94003a26.69b068","532dd116.0d3c4"]]},{"id":"a4663c40.d0b5d","type":"switchNode","name":"switch runtime-index","xml":"<switch test='`$runtime-index`'>\n","comments":"","outputs":1,"x":1859.7022666931152,"y":1011.8452968597412,"z":"acdffee6.4646","wires":[["4db5c1dc.9f95c"]]},{"id":"4db5c1dc.9f95c","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":2029.7022972106934,"y":1011.8453140258789,"z":"acdffee6.4646","wires":[["dcb4004e.9356a"]]},{"id":"dcb4004e.9356a","type":"set","name":"save service.service-role","xml":"<set>\n<parameter name='service.service-role' value='`$aai.service-instances.results[0].service-instance.service-role`' />\n","comments":"","x":2208.2736206054688,"y":1011.8452968597412,"z":"acdffee6.4646","wires":[]},{"id":"442aff0f.a1283","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2380.416763305664,"y":895.4166278839111,"z":"acdffee6.4646","wires":[["37e396a3.2783fa","efbbd2cc.0e547","8786ac57.03e15"]]},{"id":"efbbd2cc.0e547","type":"switchNode","name":"switch output-global-customer-id","xml":"<switch test='`$output-global-customer-id`'>\n","comments":"","outputs":1,"x":2595.4166717529297,"y":860.4166126251221,"z":"acdffee6.4646","wires":[["9b84fbe4.e396d8"]]},{"id":"9b84fbe4.e396d8","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2802.0833892822266,"y":858.7499856948853,"z":"acdffee6.4646","wires":[["6b285851.2f4b58"]]},{"id":"30bb031c.093bcc","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":3375.416572570801,"y":855.4166278839111,"z":"acdffee6.4646","wires":[["b34e010d.49543","966e7225.52122"]]},{"id":"6b285851.2f4b58","type":"save","name":"custom query: get service instance","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource_and_url'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.AnAI-data.si\">\n\t<parameter name=\"start[0]\" value=\"`'nodes/service-instance/' + $serv-inst.service-instance-id `\" />\n\t<parameter name=\"start_length\" value=\"1\" />\n","comments":"","outputs":1,"x":3020.416534423828,"y":857.083399772644,"z":"acdffee6.4646","wires":[["5e0c0bf4.dca7b4"]]},{"id":"b34e010d.49543","type":"execute","name":"execute split","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n\t<parameter name=\"original_string\" value=\"`$tmp.AnAI-data.si.results[0].url`\" />\n\t<parameter name=\"regex\" value=\"/\"/>\n\t<parameter name=\"limit\" value=\"11\" />\n\t<parameter name=\"ctx_memory_result_key\" value=\"split\" />\n","comments":"","outputs":1,"x":3528.749973297119,"y":835.4167575836182,"z":"acdffee6.4646","wires":[[]]},{"id":"5e0c0bf4.dca7b4","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":3242.0832595825195,"y":856.7500123977661,"z":"acdffee6.4646","wires":[["30bb031c.093bcc"]]},{"id":"966e7225.52122","type":"set","name":"set output-global-customer-id, etc","xml":"<set>\n<parameter name='output-global-customer-id' value='`$split[6]`' />\n<parameter name='output-service-type' value='`$split[9]`' />\n<parameter name='output-service-role' value='`$tmp.AnAI-data.si.results[0].service-instance.service-role`' />\n","comments":"","x":3595.416763305664,"y":880.4166374206543,"z":"acdffee6.4646","wires":[]},{"id":"7d31078f.efb3d8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2128.60733795166,"y":3068.8931226730347,"z":"acdffee6.4646","wires":[["87ecc4ba.953798","e1f74301.3a592","ea9cb947.2f8788","7177f03.da2611","960587e2.909438"]]},{"id":"87ecc4ba.953798","type":"execute","name":"generate service-instance-id","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n<parameter name=\"ctx-destination\" value=\"tmp.service-instance-id\" />\n","comments":"","outputs":1,"x":2335.274076461792,"y":2968.1788692474365,"z":"acdffee6.4646","wires":[[]]},{"id":"14ba220e.0a427e","type":"comment","name":"Make a new service instance in GR-API","info":"","comments":"","x":2441.5239963531494,"y":2931.0953826904297,"z":"acdffee6.4646","wires":[]},{"id":"7177f03.da2611","type":"save","name":"save service-instance to A&AI","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"service-instance\" \n\tkey=\"customer.global-customer-id = $output-global-customer-id\n\t  AND service-subscription.service-type = $output-service-type\n\t  AND service-instance.service-instance-id = $tmp.service-instance-id\" >\n<parameter name=\"service-instance-id\" value=\"`$tmp.service-instance-id`\" />\n<parameter name=\"global-customer-id\" value=\"`$output-global-customer-id`\" />\n<parameter name=\"service-type\" value=\"`$output-service-type`\" />\n<parameter name=\"service-role\" value=\"`$output-service-role`\" />\n","comments":"","outputs":1,"x":2339.202896118164,"y":3150.0238361358643,"z":"acdffee6.4646","wires":[["2ad23b25.4eac74","8b691431.cc9278"]]},{"id":"83430cdc.a419d","type":"comment","name":"Make a new service instance in A&AI","info":"","comments":"","x":2429.917154312134,"y":3092.16690826416,"z":"acdffee6.4646","wires":[]},{"id":"ea9cb947.2f8788","type":"execute","name":"execute RestApiCallNode - PUT service-instance","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.csm.serviceinstance.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-sr\" />\n\n","comments":"","outputs":1,"x":2400.2742023468018,"y":3054.845375061035,"z":"acdffee6.4646","wires":[["97c9808b.9352c"]]},{"id":"e1f74301.3a592","type":"execute","name":"generate service-instance url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.service`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.service-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.service-instance-id`\"/>\n","comments":"","outputs":1,"x":2336.5242023468018,"y":3012.345374107361,"z":"acdffee6.4646","wires":[[]]},{"id":"7ecab0fa.15895","type":"switchNode","name":"switch output-service-instance-id","xml":"<switch test='`$output-service-instance-id`'>\n","comments":"","outputs":1,"x":1767.4168243408203,"y":3076.5121965408325,"z":"acdffee6.4646","wires":[["6bc7823b.9fccbc","f3d20003.45381"]]},{"id":"7ff0a241.207e8c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":738.7499389648438,"y":328.75,"z":"acdffee6.4646","wires":[["ae348eba.10a95"]]},{"id":"8b411eeb.03fd7","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":747.3213691711426,"y":372.0357131958008,"z":"acdffee6.4646","wires":[["6abf5986.be9818"]]},{"id":"ae348eba.10a95","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":892.0120735168457,"y":327.0715398788452,"z":"acdffee6.4646","wires":[["4a5f6f0b.dcc33"]]},{"id":"6abf5986.be9818","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":892.0120964050293,"y":372.07152938842773,"z":"acdffee6.4646","wires":[["8def3ed6.72da5"]]},{"id":"4a5f6f0b.dcc33","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"`'System error reading PATH_SEGMENT table for uuid '\n  + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid\n  + ' and path '\n  + $db.forwarding-path[$path-index].path-name`\" />\n","comments":"","x":1092.0122184753418,"y":325.4048738479614,"z":"acdffee6.4646","wires":[]},{"id":"8def3ed6.72da5","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"`'No entries in PATH_SEGMENT table for uuid '\n  + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid\n  + ' and path '\n  + $db.forwarding-path[$path-index].path-name`\" />\n","comments":"","x":1092.012035369873,"y":372.07152938842773,"z":"acdffee6.4646","wires":[]},{"id":"e62cb2cc.8b1b1","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":743.6787948608398,"y":415.4048881530762,"z":"acdffee6.4646","wires":[["766a7c4c.6db704"]]},{"id":"766a7c4c.6db704","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":113.6309585571289,"y":1673.2737884521484,"z":"acdffee6.4646","wires":[["227d76b8.b8f89a","c64c7acf.8db458","1398c294.3f952d","3337a2c8.4f2c0e","3b868648.17a23a","9c1deb3.fce3a18","31223e46.c39562"]]},{"id":"6bc7823b.9fccbc","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1988.607292175293,"y":3055.5597352981567,"z":"acdffee6.4646","wires":[["7d31078f.efb3d8"]]},{"id":"f3d20003.45381","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1988.4287033081055,"y":3097.1668796539307,"z":"acdffee6.4646","wires":[["7d31078f.efb3d8"]]},{"id":"960587e2.909438","type":"set","name":"set output-service-instance-id","xml":"<set>\n<parameter name='output-service-instance-id' value='`$tmp.service-instance-id`' />\n","comments":"","x":2334.797737121582,"y":3214.6070919036865,"z":"acdffee6.4646","wires":[]},{"id":"94003a26.69b068","type":"execute","name":"execute RestApiCallNode - PUT forwarding-path","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.forwardingpath.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.fp-url + $forwarding-path.forwarding-path-id`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-fp\" />\n\n","comments":"","outputs":1,"x":1810.0359344482422,"y":3339.3693075180054,"z":"acdffee6.4646","wires":[["e3e2ddf6.f153f","b2430abe.dc8828"]]},{"id":"e3e2ddf6.f153f","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2080.5224685668945,"y":3363.6175785064697,"z":"acdffee6.4646","wires":[["aac11982.8688f8"]]},{"id":"b2430abe.dc8828","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2072.951103210449,"y":3322.1175985336304,"z":"acdffee6.4646","wires":[["aac11982.8688f8"]]},{"id":"aac11982.8688f8","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"Failure writing forwarding-path to MD-SAL\" />\n","comments":"","x":2292.5359420776367,"y":3336.8693075180054,"z":"acdffee6.4646","wires":[]},{"id":"76d060fc.5c71a","type":"execute","name":"generate forwarding-path url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.forwarding-path`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.fp-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$output-service-instance-id`\"/>\n","comments":"","outputs":1,"x":1747.952766418457,"y":3282.285427093506,"z":"acdffee6.4646","wires":[[]]},{"id":"ec6851e3.24d41","type":"save","name":"save forwarding-path to A&AI","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"forwarding-path\" \n\tkey=\"forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id\" >\n<parameter name=\"forwarding-path-id\" value=\"`$forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id`\" />\n<parameter name=\"forwarding-path-name\" value=\"`$forwarding-path.service-paths.service-path[$sp-index].service-path-instance-name`\" />\n<parameter name=\"selflink\" value=\"`'/restconf/config/GENERIC-RESOURCE-API:services/service/'\n  + $output-service-instance-id\n  + '/forwarding-paths/forwarding-path/'\n  + $forwarding-path.forwarding-path-id\n  + '/services-paths/service-path/'\n  + $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id`\" />\n","comments":"","outputs":1,"x":2564.072067260742,"y":3421.226315498352,"z":"acdffee6.4646","wires":[["782723e.d6f5edc","173a4200.c682ae"]]},{"id":"f9f23fe5.c832e","type":"save","name":"save forwarding-path relationship to service-instance","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"forwarding-path:relationship-list\"\n   key=\"forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"service-instance\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/business/customers/customer/'\n        + $output-global-customer-id\n        + '/service-subscriptions/service-subscription/'\n        + $output-service-type\n        + '/service-instances/service-instance/'\n        + $output-service-instance-id`\" />\n","comments":"","outputs":1,"x":2635.73876953125,"y":3501.46435546875,"z":"acdffee6.4646","wires":[["c1b3e443.b892d8","a4072ca.00fd3d"]]},{"id":"2f92c949.4d6476","type":"for","name":"for each vnf","xml":"<for index='vnf-index' start='0' end='`$forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":2725.500457763672,"y":3630.274257659912,"z":"acdffee6.4646","wires":[["d2f257bf.d8fd58"]]},{"id":"d2f257bf.d8fd58","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2870.2624740600586,"y":3629.8454303741455,"z":"acdffee6.4646","wires":[["81a978c4.55a318","1825f2cc.d9255d"]]},{"id":"81a978c4.55a318","type":"save","name":"save forwarder to A&AI","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"forwarder\" \n\tkey=\"forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id\n\t  AND forwarder.sequence = $forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf[$vnf-index].vnf-path-sequence-id\" >\n<parameter name=\"sequence\" value=\"`$forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf[$vnf-index].vnf-path-sequence-id`\" />\n","comments":"","outputs":1,"x":3051.262517929077,"y":3585.750457763672,"z":"acdffee6.4646","wires":[["a8b88931.1b04b8","18196271.6ec47e"]]},{"id":"1825f2cc.d9255d","type":"save","name":"save forwarder relationship to generic-vnf","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"forwarder:relationship-list\"\n   key=\"forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id\n     AND forwarder.sequence = $forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf[$vnf-index].vnf-path-sequence-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"generic-vnf\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/generic-vnfs/generic-vnf/'\n        + $forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf[$vnf-index].vnf-instance-id`\" />\n","comments":"","outputs":1,"x":3105.262519836426,"y":3675.036106109619,"z":"acdffee6.4646","wires":[["9e2d3b55.8e6d18","be4a1ccd.60699"]]},{"id":"31223e46.c39562","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/gpsx.log' />\n","comments":"","outputs":1,"x":507.0833282470703,"y":2412.0832509994507,"z":"acdffee6.4646","wires":[[]]},{"id":"173a4200.c682ae","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2772.750198364258,"y":3441.0832204818726,"z":"acdffee6.4646","wires":[["7abb5ae4.45ef84"]]},{"id":"782723e.d6f5edc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2765.1788330078125,"y":3399.583240509033,"z":"acdffee6.4646","wires":[["7abb5ae4.45ef84"]]},{"id":"7abb5ae4.45ef84","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"Failure writing forwarding-path to AAI\" />\n","comments":"","x":2969.7636108398438,"y":3414.3350400924683,"z":"acdffee6.4646","wires":[]},{"id":"a4072ca.00fd3d","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2917.7501792907715,"y":3524.4164247512817,"z":"acdffee6.4646","wires":[["38f6157.8f1caea"]]},{"id":"c1b3e443.b892d8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2908.5120849609375,"y":3477.916492462158,"z":"acdffee6.4646","wires":[["38f6157.8f1caea"]]},{"id":"38f6157.8f1caea","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"Failure writing forwarding-path relationship to AAI\" />\n","comments":"","x":3113.096908569336,"y":3492.6682138442993,"z":"acdffee6.4646","wires":[]},{"id":"18196271.6ec47e","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3242.7502117156982,"y":3607.749852180481,"z":"acdffee6.4646","wires":[["ede6f0bd.9d33c"]]},{"id":"a8b88931.1b04b8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3235.178846359253,"y":3566.2498722076416,"z":"acdffee6.4646","wires":[["ede6f0bd.9d33c"]]},{"id":"ede6f0bd.9d33c","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"Failure writing forwarder to AAI\" />\n","comments":"","x":3438.0970458984375,"y":3581.001434326172,"z":"acdffee6.4646","wires":[]},{"id":"be4a1ccd.60699","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3347.7501678466797,"y":3699.416358947754,"z":"acdffee6.4646","wires":[["6576c8ed.7d6ce8"]]},{"id":"9e2d3b55.8e6d18","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3340.1788024902344,"y":3657.9163789749146,"z":"acdffee6.4646","wires":[["6576c8ed.7d6ce8"]]},{"id":"6576c8ed.7d6ce8","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"Failure writing forwarder relationship to AAI\" />\n","comments":"","x":3541.4303436279297,"y":3672.667942047119,"z":"acdffee6.4646","wires":[]},{"id":"ee78a452.895eb8","type":"for","name":"for each service","xml":"<for index='service-index' start='0' end='`$service-paths.service-path[$sp-index].service_length`' >\n","comments":"","outputs":1,"x":2534.416831970215,"y":3631.083258628845,"z":"acdffee6.4646","wires":[["2f92c949.4d6476"]]},{"id":"8b691431.cc9278","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2550.0833892822266,"y":3170.4164781570435,"z":"acdffee6.4646","wires":[["28ee0b7.a193cf4"]]},{"id":"2ad23b25.4eac74","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2542.5120239257812,"y":3128.916498184204,"z":"acdffee6.4646","wires":[["28ee0b7.a193cf4"]]},{"id":"28ee0b7.a193cf4","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"Failure creating service instance in AAI\" />\n","comments":"","x":2745.430223464966,"y":3143.6680603027344,"z":"acdffee6.4646","wires":[]},{"id":"97c9808b.9352c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2660.0833892822266,"y":3053.7497301101685,"z":"acdffee6.4646","wires":[["1818ef16.6dc701"]]},{"id":"1818ef16.6dc701","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"Failure creating service instance in MD-SAL\" />\n","comments":"","x":2850.0833892822266,"y":3052.0829820632935,"z":"acdffee6.4646","wires":[]},{"id":"d843bbaa.11f848","type":"set","name":"increment serv-insts_length","xml":"<set>\n<parameter name='tmp.serv-insts_length' value='`$tmp.serv-insts_length + 1`' />\n","comments":"","x":3523.7498168945312,"y":2057.916774749756,"z":"acdffee6.4646","wires":[]},{"id":"532dd116.0d3c4","type":"for","name":"for each service-path","xml":"<for index='sp-index' start='0' end='`$service-paths.service-path_length`' >\n","comments":"","outputs":1,"x":1718.4169311523438,"y":3522.0831785202026,"z":"acdffee6.4646","wires":[["6026a1f0.02df4"]]},{"id":"bab97280.4fcff","type":"switchNode","name":"switch vnf_length","xml":"<switch test='`$serv-inst.vnf-list_length`'>\n","comments":"","outputs":1,"x":2978.809280395508,"y":2006.4284648895264,"z":"acdffee6.4646","wires":[["83930c1.6232af","415745e9.86f9ec","a96c0af7.4076f8","7fb684c8.1e8ddc"]]},{"id":"83930c1.6232af","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":3181.6666107177734,"y":1924.9999256134033,"z":"acdffee6.4646","wires":[["495a7820.28bb28"]]},{"id":"415745e9.86f9ec","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":3182.9166107177734,"y":1963.7499256134033,"z":"acdffee6.4646","wires":[["495a7820.28bb28"]]},{"id":"495a7820.28bb28","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='data-error' value=\"`'Service instance ' + $si.service-instance-id + ' has no VNFs, skipping'`\" />\n","comments":"","x":3380.4165573120117,"y":1942.4998750686646,"z":"acdffee6.4646","wires":[]},{"id":"a96c0af7.4076f8","type":"outcome","name":"1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":3181.666549682617,"y":2032.4999074935913,"z":"acdffee6.4646","wires":[["bff428c8.cc6008"]]},{"id":"bff428c8.cc6008","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":3331.6665229797363,"y":2032.249888420105,"z":"acdffee6.4646","wires":[["2de86e6.3962e92","d843bbaa.11f848"]]},{"id":"7fb684c8.1e8ddc","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3184.166717529297,"y":2166.6664543151855,"z":"acdffee6.4646","wires":[["93bc2b5.8b736d8"]]},{"id":"93bc2b5.8b736d8","type":"get-resource","name":"get-resource SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT forwarding_path_service_instance_id from SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING WHERE simple_service_instance_id = $serv-inst.service-instance-id'\n  pfx='db.mapped-service-instance-id'>\n\n","comments":"","outputs":1,"x":3556.5481567382812,"y":2165.952667236328,"z":"acdffee6.4646","wires":[["30b771e0.9efa2e","ac42250b.451688","9c7d869c.656378"]]},{"id":"30b771e0.9efa2e","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3923.1668853759766,"y":2097.642951965332,"z":"acdffee6.4646","wires":[["3cc43602.d355aa"]]},{"id":"ac42250b.451688","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3931.7383155822754,"y":2141.928665161133,"z":"acdffee6.4646","wires":[["c6af0644.d6e838"]]},{"id":"3cc43602.d355aa","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='data-error' value=\"System error reading SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING table\" />\n","comments":"","x":4140.000244140625,"y":2095.8333253860474,"z":"acdffee6.4646","wires":[]},{"id":"c6af0644.d6e838","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='data-error' value=\"`'No entry in SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING table for service instance ' + $serv-inst.service-instance-id`\" />\n","comments":"","x":4140.000076293945,"y":2142.166621208191,"z":"acdffee6.4646","wires":[]},{"id":"9c7d869c.656378","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":3928.333480834961,"y":2237.500123023987,"z":"acdffee6.4646","wires":[["47635cab.dcb404"]]},{"id":"47635cab.dcb404","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":4064.9997482299805,"y":2235.8332090377808,"z":"acdffee6.4646","wires":[["3ffa27b1.735848","cbac044e.797f28"]]},{"id":"3ffa27b1.735848","type":"execute","name":"generate port-mirror-configuration url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.service`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.service-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$db.mapped-service-instance-id.forwarding-path-service-instance-id`\"/>\n","comments":"","outputs":1,"x":4285.00008392334,"y":2194.166865348816,"z":"acdffee6.4646","wires":[[]]},{"id":"cbac044e.797f28","type":"execute","name":"execute RestApiCallNode - get service","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-service\" />\n\n","comments":"","outputs":1,"x":4288.332931518555,"y":2280.8332109451294,"z":"acdffee6.4646","wires":[["8ee34d45.6e794","f93605ea.7e7b88"]]},{"id":"f93605ea.7e7b88","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":4516.666107177734,"y":2342.499878883362,"z":"acdffee6.4646","wires":[["a4725830.66d628"]]},{"id":"8ee34d45.6e794","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":4516.442153930664,"y":2235.3466358184814,"z":"acdffee6.4646","wires":[["dd9a7f75.ee19c"]]},{"id":"dd9a7f75.ee19c","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='data-error' value=\"`'Cannot find service instance ' + $db.mapped-service-instance-id.forwarding-path-service-instance-id + ' in MD-SAL'`\" />\n","comments":"","x":4710.000076293945,"y":2234.166537284851,"z":"acdffee6.4646","wires":[]},{"id":"a4725830.66d628","type":"switchNode","name":"switch forwarding-path_length","xml":"<switch test='`$mdsal-service.service[0].service-data.forwarding-paths.forwarding-path_length`'>\n","comments":"","outputs":1,"x":4720.000076293945,"y":2342.500033378601,"z":"acdffee6.4646","wires":[["f4cd3b16.9f1b48","e02ba6d7.e68a68","f2da480c.9764c8"]]},{"id":"f4cd3b16.9f1b48","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":4932.000106811523,"y":2278.7500410079956,"z":"acdffee6.4646","wires":[["7f12cf21.a3af1"]]},{"id":"e02ba6d7.e68a68","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":4933.250106811523,"y":2317.5000410079956,"z":"acdffee6.4646","wires":[["7f12cf21.a3af1"]]},{"id":"f2da480c.9764c8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":4930.393089294434,"y":2412.1429262161255,"z":"acdffee6.4646","wires":[["966b6bde.cc8f88"]]},{"id":"7f12cf21.a3af1","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='data-error' value=\"`'Service instance ' + $db.mapped-service-instance-id.forwarding-path-service-instance-id + ' has multiple VNFs but no forwarding paths were found'`\" />\n","comments":"","x":5120.750106811523,"y":2296.2500410079956,"z":"acdffee6.4646","wires":[]},{"id":"966b6bde.cc8f88","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":5059.143089294434,"y":2412.1429262161255,"z":"acdffee6.4646","wires":[["73c62547.358c5c","2c341601.f78f1a","18d9283c.3cd808"]]},{"id":"73c62547.358c5c","type":"set","name":"copy forwarding-paths to serv-insts array","xml":"<set>\n<parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].forwarding-paths.'\n  value='`$mdsal-service.service[0].service-data.forwarding-paths.`' />\n","comments":"","x":5296.666580200195,"y":2412.500033378601,"z":"acdffee6.4646","wires":[]},{"id":"2c341601.f78f1a","type":"set","name":"copy serv-inst to serv-insts array","xml":"<set>\n<parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].' value='`$serv-inst.`' />\n","comments":"","x":5272,"y":2366,"z":"acdffee6.4646","wires":[]},{"id":"18d9283c.3cd808","type":"set","name":"increment serv-insts_length","xml":"<set>\n<parameter name='tmp.serv-insts_length' value='`$tmp.serv-insts_length + 1`' />\n","comments":"","x":5254.6904296875,"y":2459.416748046875,"z":"acdffee6.4646","wires":[]},{"id":"ab273d26.ee67d","type":"switchNode","name":"switch service_length == serv-cust_length","xml":"<switch test='`$service-paths.service-path[$sp-index].service_length == $serv-cust_length`'>\n","comments":"","outputs":1,"x":1463.3333282470703,"y":2587.6667375564575,"z":"acdffee6.4646","wires":[["57af92ff.0a268c"]]},{"id":"432943b9.13704c","type":"for","name":"for each service-path","xml":"<for index='sp-index' start='0' end='`$service-paths.service-path_length`' >\n","comments":"","outputs":1,"x":1183.3333282470703,"y":2588.6667375564575,"z":"acdffee6.4646","wires":[["ab273d26.ee67d"]]},{"id":"db0b5e4d.138fb","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1001.3333282470703,"y":2710.6667375564575,"z":"acdffee6.4646","wires":[["b67f5438.96b3a8","432943b9.13704c","ed2004a7.484e98"]]},{"id":"b67f5438.96b3a8","type":"set","name":"set found-service-path to false","xml":"<set>\n<parameter name='found-service-path' value='false' />\n","comments":"","x":1211.3333282470703,"y":2542.6667375564575,"z":"acdffee6.4646","wires":[]},{"id":"57af92ff.0a268c","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1697.3333282470703,"y":2586.6667375564575,"z":"acdffee6.4646","wires":[["14f78ce9.5e1413"]]},{"id":"14f78ce9.5e1413","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1823.3333282470703,"y":2586.6667375564575,"z":"acdffee6.4646","wires":[["51e6f6dd.41b898","8e5d432a.80844"]]},{"id":"51e6f6dd.41b898","type":"set","name":"set found-service-path to true","xml":"<set>\n<parameter name='found-service-path' value='true' />\n","comments":"","x":2017.3333282470703,"y":2558.6667375564575,"z":"acdffee6.4646","wires":[]},{"id":"8e5d432a.80844","type":"break","name":"break","xml":"<break>\n","comments":"","x":1947.3333282470703,"y":2606.6667375564575,"z":"acdffee6.4646","wires":[]},{"id":"ed2004a7.484e98","type":"switchNode","name":"switch found-service-path","xml":"<switch test='`$found-service-path`'>\n","comments":"","outputs":1,"x":1197.3333282470703,"y":2922.6667375564575,"z":"acdffee6.4646","wires":[["902c3da4.38f8e","cc4f97d7.be3168"]]},{"id":"cc4f97d7.be3168","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1401.3333282470703,"y":3156.6667375564575,"z":"acdffee6.4646","wires":[["654073a0.8dc7dc"]]},{"id":"902c3da4.38f8e","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1383.3333282470703,"y":2702.6667375564575,"z":"acdffee6.4646","wires":[["95ceba9c.126508"]]},{"id":"95ceba9c.126508","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"`'No service paths found for path name '\n  + $db.path-segment[0].path-name`\" />\n","comments":"","x":1573.3333282470703,"y":2702.6667375564575,"z":"acdffee6.4646","wires":[]},{"id":"6026a1f0.02df4","type":"switchNode","name":"switch service_length == serv-cust_length","xml":"<switch test='`$service-paths.service-path[$sp-index].service_length == $serv-cust_length`'>\n","comments":"","outputs":1,"x":2000,"y":3522,"z":"acdffee6.4646","wires":[["ce386471.0c3478"]]},{"id":"ce386471.0c3478","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2234,"y":3521,"z":"acdffee6.4646","wires":[["c64714d6.1fcac8"]]},{"id":"c64714d6.1fcac8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2360,"y":3521,"z":"acdffee6.4646","wires":[["ec6851e3.24d41","f9f23fe5.c832e","ee78a452.895eb8"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-create-simple-path.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-create-simple-path.json
new file mode 100755
index 0000000..3194c18
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-create-simple-path.json
@@ -0,0 +1 @@
+[{"id":"22afe3b6.ac42ec","type":"dgstart","name":"DGSTART","outputs":1,"x":101.42857360839844,"y":85.71428680419922,"z":"5629d16d.2ad96","wires":[["aba57bc5.dd8d18"]]},{"id":"aba57bc5.dd8d18","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":216.71427154541016,"y":125.95239543914795,"z":"5629d16d.2ad96","wires":[["dd9830af.1b7fc"]]},{"id":"dd9830af.1b7fc","type":"method","name":"method getpathsegment-create-simple-path","xml":"<method rpc='getpathsegment-create-simple-path' mode='sync'>\n","comments":"","outputs":1,"x":209.8572006225586,"y":166.71428108215332,"z":"5629d16d.2ad96","wires":[["54f62c1c.ee8494"]]},{"id":"39e0fc73.43bb24","type":"comment","name":"getpathsegment-create-simple-path","info":"","comments":"","x":495.77342987060547,"y":33.30063056945801,"z":"5629d16d.2ad96","wires":[]},{"id":"54f62c1c.ee8494","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":116.09528350830078,"y":290.7412042617798,"z":"5629d16d.2ad96","wires":[["727b4caf.1cdc94","41d349bc.0562d8","a1cc7312.325ce"]]},{"id":"a1cc7312.325ce","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":257.91658782958984,"y":2895.298070907593,"z":"5629d16d.2ad96","wires":[]},{"id":"727b4caf.1cdc94","type":"get-resource","name":"get-resource PATH_SEGMENT","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from PATH_SEGMENT WHERE service_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid\n    AND path_name = $db.forwarding-path[$path-index].path-name ORDER BY path_segment_seq'\n  pfx='db.path-segment[]'>\n\n","comments":"","outputs":1,"x":343.5476188659668,"y":356.4761791229248,"z":"5629d16d.2ad96","wires":[["891f7699.dad768","2e7bfd35.86d932","5581a414.fb2c9c"]]},{"id":"891f7699.dad768","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":572.6663970947266,"y":313.8094177246094,"z":"5629d16d.2ad96","wires":[["a32e6237.6daf3"]]},{"id":"2e7bfd35.86d932","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":581.2378273010254,"y":357.09513092041016,"z":"5629d16d.2ad96","wires":[["39c3eea1.efd8a2"]]},{"id":"6ae56929.26b358","type":"for","name":"for each path segment","xml":"<for index='path-segment-index' start='0' end='`$db.path-segment_length`' >\n","comments":"","outputs":1,"x":508.8691101074219,"y":548.1547451019287,"z":"5629d16d.2ad96","wires":[["544711c4.26d07"]]},{"id":"544711c4.26d07","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":707.0238647460938,"y":547.9761257171631,"z":"5629d16d.2ad96","wires":[["caa83c5c.69383","72870d7a.a57af4"]]},{"id":"1570d296.5420fd","type":"set","name":"set vnf-ids_length to 0","xml":"<set>\n<parameter name='vnf-ids_length' value='0' />\n","comments":"","x":508.51195526123047,"y":500.2975969314575,"z":"5629d16d.2ad96","wires":[]},{"id":"caa83c5c.69383","type":"set","name":"add source vnf to vnf-ids","xml":"<set>\n<parameter name='vnf-ids[$vnf-ids_length]' value='`$db.path-segment[$path-segment-index].source-association-uuid`' />\n<parameter name='vnf-ids_length' value='`$vnf-ids_length + 1`' />\n","comments":"","x":921.0119667053223,"y":526.5475978851318,"z":"5629d16d.2ad96","wires":[]},{"id":"72870d7a.a57af4","type":"switchNode","name":"is this the last path-segment?","xml":"<switch test='`$path-segment-index == ( $db.path-segment_length - 1) `'>\n","comments":"","outputs":1,"x":936.0119705200195,"y":571.5475997924805,"z":"5629d16d.2ad96","wires":[["a92ddc01.5347d"]]},{"id":"a92ddc01.5347d","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1132.2619724273682,"y":571.2975997924805,"z":"5629d16d.2ad96","wires":[["7160408b.72538"]]},{"id":"7160408b.72538","type":"set","name":"add target vnf to vnf-ids","xml":"<set>\n<parameter name='vnf-ids[$vnf-ids_length]' value='`$db.path-segment[$path-segment-index].target-association-uuid`' />\n<parameter name='vnf-ids_length' value='`$vnf-ids_length + 1`' />\n","comments":"","x":1308.761978149414,"y":570.5475997924805,"z":"5629d16d.2ad96","wires":[]},{"id":"c46f5c01.ea23","type":"comment","name":"create list of vnf ids","info":"","comments":"","x":1061.5119667053223,"y":486.46427059173584,"z":"5629d16d.2ad96","wires":[]},{"id":"4e5c686c.598f68","type":"get-resource","name":"custom query - get runtime service-instances","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"custom-query\"\n\tkey=\"format = 'resource'\"\n\tforce=\"true\"\n\tlocal-only=\"false\"\n\tpfx=\"aai.service-instances\" >\n\t<parameter name=\"start[0]\" value=\"`'nodes/service-instances?model-invariant-id=' + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`\" />\n\t<parameter name=\"start_length\" value=\"1\" />\n","comments":"","outputs":1,"x":578.5119247436523,"y":656.5476264953613,"z":"5629d16d.2ad96","wires":[["50c8b7f0.7a0d88","a18652d3.89a29","30dab3b9.4e949c"]]},{"id":"a18652d3.89a29","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":846.5081748962402,"y":658.4484806060791,"z":"5629d16d.2ad96","wires":[["f673ab2c.5baed8"]]},{"id":"50c8b7f0.7a0d88","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":855.4367713928223,"y":616.7342138290405,"z":"5629d16d.2ad96","wires":[["fb8a502b.b988a"]]},{"id":"2cea7227.951c0e","type":"for","name":"for each runtime service-instance","xml":"<for index='runtime-index' start='0' end='`$runtime_length`' >\n","comments":"","outputs":1,"x":700.7143859863281,"y":1168.2143034934998,"z":"5629d16d.2ad96","wires":[["fd97fac0.40b238"]]},{"id":"fd97fac0.40b238","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":939.4643936157227,"y":1168.2143034934998,"z":"5629d16d.2ad96","wires":[["11207a1.3861786","2605dfb2.94c51","507014d7.88ea1c","38a95673.ed10aa","64270aaa.060174"]]},{"id":"11207a1.3861786","type":"execute","name":"generate port-mirror-configuration url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.service`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.service-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$serv-inst.service-instance-id`\"/>\n","comments":"","outputs":1,"x":1210.9525451660156,"y":1253.1548552513123,"z":"5629d16d.2ad96","wires":[[]]},{"id":"2605dfb2.94c51","type":"execute","name":"execute RestApiCallNode - get service","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-service\" />\n\n","comments":"","outputs":1,"x":1215.1191101074219,"y":1319.1666865348816,"z":"5629d16d.2ad96","wires":[["ddfea20f.b1765","25f8aad7.178826"]]},{"id":"ddfea20f.b1765","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1462.4983558654785,"y":1192.5340704917908,"z":"5629d16d.2ad96","wires":[["7d24215a.3f9a"]]},{"id":"25f8aad7.178826","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1456.547752380371,"y":1450.4166073799133,"z":"5629d16d.2ad96","wires":[["fb3d69b8.66a0c8"]]},{"id":"a34a7c52.b74ff","type":"comment","name":"Is this service in GENERIC-RESOURCE-API?","info":"","comments":"","x":1258.2143859863281,"y":1113.750009059906,"z":"5629d16d.2ad96","wires":[]},{"id":"d312f25b.03d12","type":"call","name":"call GENERIC-RESOURCE-API:getpathsegment-populate-from-grapi","xml":"<call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-grapi' mode='sync' >\n","comments":"","outputs":1,"x":2421.7858123779297,"y":1237.5000100135803,"z":"5629d16d.2ad96","wires":[[]]},{"id":"f82d1a28.9d5758","type":"call","name":"call GENERIC-RESOURCE-API:getpathsegment-populate-from-vnfapi","xml":"<call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-vnfapi' mode='sync' >\n","comments":"","outputs":1,"x":2259.464401245117,"y":1437.1428742408752,"z":"5629d16d.2ad96","wires":[[]]},{"id":"41d349bc.0562d8","type":"set","name":"set match-type","xml":"<set>\n<parameter name='match-type' value='network-name' />\n","comments":"","x":293.8452491760254,"y":244.21429347991943,"z":"5629d16d.2ad96","wires":[]},{"id":"d5e62d12.0598","type":"call","name":"call GENERIC-RESOURCE-API:getpathsegment-simple-match-pair","xml":"<call module='GENERIC-RESOURCE-API' rpc='getpathsegment-simple-match-pair' mode='sync' >\n","comments":"","outputs":1,"x":803.0359039306641,"y":1643.3930268287659,"z":"5629d16d.2ad96","wires":[[]]},{"id":"d93608d4.fa2628","type":"set","name":"set serv-insts_length to 0","xml":"<set>\n<parameter name='serv-insts_length' value='0' />\n","comments":"","x":683.6786804199219,"y":906.0715222358704,"z":"5629d16d.2ad96","wires":[]},{"id":"507014d7.88ea1c","type":"set","name":"clear mdsal-service and serv-inst.api","xml":"<set>\n<parameter name='mdsal-service.' value='' />\n<parameter name='serv-inst.api' value='' />\n","comments":"","x":1211.2857971191406,"y":1157.6785979270935,"z":"5629d16d.2ad96","wires":[]},{"id":"38a95673.ed10aa","type":"set","name":"set serv-inst.service-instance-id","xml":"<set>\n<parameter name='serv-inst.service-instance-id' value='`$runtime-ids[$runtime-index]`' />\n","comments":"","x":1202.4286346435547,"y":950.5357565879822,"z":"5629d16d.2ad96","wires":[]},{"id":"1025d445.92700c","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"`'Failure finding service instance ' + $serv-inst.service-instance-id + ' in either GENERIC-REOURCE-API or VNF-API'`\" />\n","comments":"","x":2494.285732269287,"y":1490.357096672058,"z":"5629d16d.2ad96","wires":[]},{"id":"8cb5384e.5fac18","type":"success","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2298.035873413086,"y":1562.0238308906555,"z":"5629d16d.2ad96","wires":[["e596d283.d108"]]},{"id":"36bbfe53.27e322","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2298.0357093811035,"y":1491.6071996688843,"z":"5629d16d.2ad96","wires":[["1025d445.92700c"]]},{"id":"d0b3e656.49f5b8","type":"switchNode","name":"switch serv-inst.api","xml":"<switch test='`$serv-inst.api`'>\n","comments":"","outputs":1,"x":2098.3930053710938,"y":1532.1428451538086,"z":"5629d16d.2ad96","wires":[["36bbfe53.27e322","8cb5384e.5fac18"]]},{"id":"fb3d69b8.66a0c8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1587.678623199463,"y":1453.214307308197,"z":"5629d16d.2ad96","wires":[["63df2c22.43c924"]]},{"id":"36ccefea.23688","type":"set","name":"copy serv-inst to serv-insts array","xml":"<set>\n<parameter name='serv-insts[$serv-insts_length].' value='`$serv-inst.`' />\n","comments":"","x":2685.5358352661133,"y":1536.607204914093,"z":"5629d16d.2ad96","wires":[]},{"id":"b01279d.0b32c88","type":"set","name":"increment serv-insts_length","xml":"<set>\n<parameter name='serv-insts_length' value='`$serv-insts_length + 1`' />\n","comments":"","x":2670.7858123779297,"y":1591.6071934700012,"z":"5629d16d.2ad96","wires":[]},{"id":"848cf29d.edb6a","type":"set","name":"copy serv-inst to serv-insts array","xml":"<set>\n<parameter name='serv-insts[$serv-insts_length].' value='`$serv-inst.`' />\n","comments":"","x":2306.4286346435547,"y":1281.9643054008484,"z":"5629d16d.2ad96","wires":[]},{"id":"50bf0848.ed4ac8","type":"set","name":"increment serv-insts_length","xml":"<set>\n<parameter name='serv-insts_length' value='`$serv-insts_length + 1`' />\n","comments":"","x":2286.6786346435547,"y":1330.7143063545227,"z":"5629d16d.2ad96","wires":[]},{"id":"7d24215a.3f9a","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1593.9286193847656,"y":1191.964292049408,"z":"5629d16d.2ad96","wires":[["2bf6e158.bfceae","d0db37ac.abed08","313a3809.e4ff88"]]},{"id":"e596d283.d108","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2449.285804748535,"y":1561.6071877479553,"z":"5629d16d.2ad96","wires":[["36ccefea.23688","b01279d.0b32c88"]]},{"id":"954eddda.d0e1c","type":"for","name":"for each runtime service-instance from A&AI","xml":"<for index='runtime-index' start='0' end='`$aai.service-instances.results_length`' >\n","comments":"","outputs":1,"x":741.4286499023438,"y":839.4642996788025,"z":"5629d16d.2ad96","wires":[["f18dec3.470431"]]},{"id":"f18dec3.470431","type":"switchNode","name":"switch orchestration-status","xml":"<switch test='`$aai.service-instances.results[$runtime-index].service-instance.orchestration-status`'>\n","comments":"","outputs":1,"x":1050.1786193847656,"y":839.4642987251282,"z":"5629d16d.2ad96","wires":[["bf73912e.28721"]]},{"id":"bf73912e.28721","type":"outcome","name":"Active","xml":"<outcome value='Active'>\n","comments":"","outputs":1,"x":1248.9286041259766,"y":838.214289188385,"z":"5629d16d.2ad96","wires":[["dd9206a2.3c51c8"]]},{"id":"dd9206a2.3c51c8","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1410.1786041259766,"y":835.714289188385,"z":"5629d16d.2ad96","wires":[["b75aacd8.aff2a","7e6d7170.bd2ef"]]},{"id":"b75aacd8.aff2a","type":"set","name":"store service-instance-id","xml":"<set>\n<parameter name='runtime-ids[$runtime_length]' value='`$aai.service-instances.results[$runtime-index].service-instance.service-instance-id`' />\n","comments":"","x":1601.4286193847656,"y":812.7976064682007,"z":"5629d16d.2ad96","wires":[]},{"id":"f1440634.84c218","type":"set","name":"set runtime_length to 0","xml":"<set>\n<parameter name='runtime_length' value='0' />\n","comments":"","x":676.4286041259766,"y":789.464289188385,"z":"5629d16d.2ad96","wires":[]},{"id":"7e6d7170.bd2ef","type":"set","name":"set increment runtime_length","xml":"<set>\n<parameter name='runtime_length' value='`$runtime_length + 1`' />\n","comments":"","x":1616.0119132995605,"y":855.2976288795471,"z":"5629d16d.2ad96","wires":[]},{"id":"2e8ac8c0.7d70a8","type":"for","name":"for each serv-insts","xml":"<for index='serv-index' start='0' end='`$serv-insts_length`' >\n","comments":"","outputs":1,"x":624.1666488647461,"y":2187.2023816108704,"z":"5629d16d.2ad96","wires":[["627c4436.c6363c"]]},{"id":"6a089d93.c561b4","type":"comment","name":"Create forwarding-path structure","info":"","comments":"","x":1850.2380981445312,"y":1713.9880814552307,"z":"5629d16d.2ad96","wires":[]},{"id":"67d6eb5d.aecaf4","type":"set","name":"set top-level data","xml":"<set>\n<parameter name='forwarding-path.forwarding-path-name' value='`$db.path-segment[0].path-name`' />\n<parameter name='forwarding-path.forwarding-path-type' value='VNF' />\n<parameter name='forwarding-path.onap-model-information.model-name' value='`$db.path-segment[0].path-name`' />\n<parameter name='forwarding-path.service-paths.service-path_length' value='1' />\n<parameter name='forwarding-path.service-paths.service-path[0].service-path-instance-name'\n  value='`$db.path-segment[0].path-name + $forwarding-path.service-paths.service-path[0].service-path-instance-id`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service_length' value='1' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].service-instance-id'\n  value='`$serv-insts[$serv-index].service-instance-id`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].service-path-sequence-id' value='1' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length'\n  value='`$serv-insts[$serv-index].path-segments_length`' />\n","comments":"","x":1713.9284362792969,"y":1845.2976641654968,"z":"5629d16d.2ad96","wires":[]},{"id":"df485e3e.9e56d","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1496.2498931884766,"y":2203.452546596527,"z":"5629d16d.2ad96","wires":[["67d6eb5d.aecaf4","6d4773c1.e5744c","214e6fa8.67a2d","11af2729.a769f9","19011bc0.d12e74","d098ba8b.a3df28","f0d2a389.89135","491426c8.70e218","5bdb2ffa.bd158","29c194e4.ffaaec","b4ae1cfc.2d5e8","4177217a.70cc7","9b387be2.dc2b18","1f8a0d2b.888443"]]},{"id":"627c4436.c6363c","type":"switchNode","name":"switch api","xml":"<switch test='`$serv-insts[$serv-index].api`'>\n","comments":"","outputs":1,"x":797.9166488647461,"y":2187.2023816108704,"z":"5629d16d.2ad96","wires":[["426b047f.dbd57c","9059fd9c.5d30b"]]},{"id":"426b047f.dbd57c","type":"outcome","name":"GR","xml":"<outcome value='GR'>\n","comments":"","outputs":1,"x":937.9166526794434,"y":2164.7023816108704,"z":"5629d16d.2ad96","wires":[["c67bb294.bc315"]]},{"id":"9059fd9c.5d30b","type":"outcome","name":"VNF","xml":"<outcome value='VNF'>\n","comments":"","outputs":1,"x":937.9166526794434,"y":2205.952383518219,"z":"5629d16d.2ad96","wires":[["c67bb294.bc315"]]},{"id":"6d4773c1.e5744c","type":"for","name":"for each subsequent path segment","xml":"<for index='ps-index' start='1' end='`$serv-insts[$serv-index].path-segments_length`' >\n","comments":"","outputs":1,"x":1763.9284362792969,"y":1979.0476641654968,"z":"5629d16d.2ad96","wires":[["902c5891.668ab8"]]},{"id":"b6018a90.ab7608","type":"set","name":"set vnf level data","xml":"<set>\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vnf-path-sequence-id'\n  value='`$ps-index + 1`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vnf-instance-id'\n  value='`$serv-insts[$serv-index].path-segments[$ps-index].left-vnf-instance-id`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].left-network-name'\n  value='`$prev-network-name`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].left-network-role'\n  value='`$prev-network-role`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].right-network-name'\n  value='`$serv-insts[$serv-index].path-segments[$ps-index].network-name`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].right-network-role'\n  value='`$serv-insts[$serv-index].path-segments[$ps-index].network-role`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vf-module-instance.vf-module-id'\n  value='`$serv-insts[$serv-index].path-segments[$ps-index].left-vf-module-id`' />\n","comments":"","x":2142.6784439086914,"y":1952.7976660728455,"z":"5629d16d.2ad96","wires":[]},{"id":"214e6fa8.67a2d","type":"set","name":"set first vnf data","xml":"<set>\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vnf-path-sequence-id'\n  value='1' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vnf-instance-id'\n  value='`$serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].right-network-name'\n  value='`$serv-insts[$serv-index].path-segments[0].network-name`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].right-network-role'\n  value='`$serv-insts[$serv-index].path-segments[0].network-role`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vf-module-instance.vf-module-id'\n  value='`$serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />\n","comments":"","x":1710.1784362792969,"y":1887.7976632118225,"z":"5629d16d.2ad96","wires":[]},{"id":"11af2729.a769f9","type":"set","name":"set prev values","xml":"<set>\n<parameter name='prev-network-name' value='`$serv-insts[$serv-index].path-segments[0].network-name`' />\n<parameter name='prev-network-role' value='`$serv-insts[$serv-index].path-segments[0].network-role`' />\n","comments":"","x":1707.6784362792969,"y":1932.7976641654968,"z":"5629d16d.2ad96","wires":[]},{"id":"548baaaf.cc4134","type":"set","name":"set prev values","xml":"<set>\n<parameter name='prev-network-name' value='`$serv-insts[$serv-index].path-segments[$ps-index].network-name`' />\n<parameter name='prev-network-role' value='`$serv-insts[$serv-index].path-segments[$ps-index].network-role`' />\n","comments":"","x":2137.6784439086914,"y":2000.297667980194,"z":"5629d16d.2ad96","wires":[]},{"id":"902c5891.668ab8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1975.1784210205078,"y":1977.7976431846619,"z":"5629d16d.2ad96","wires":[["b6018a90.ab7608","548baaaf.cc4134"]]},{"id":"19011bc0.d12e74","type":"set","name":"set last vnf data","xml":"<set>\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vnf-path-sequence-id'\n  value='`$ps-index + 2`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vnf-instance-id'\n  value='`$serv-insts[$serv-index].path-segments[$ps-index].right-vnf-instance-id`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].left-network-name'\n  value='`$prev-network-name`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].left-network-role'\n  value='`$prev-network-role`' />\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vf-module-instance.vf-module-id'\n  value='`$serv-insts[$serv-index].path-segments[$ps-index].right-vf-module-id`' />\n","comments":"","x":1705.1784362792969,"y":2027.7976660728455,"z":"5629d16d.2ad96","wires":[]},{"id":"d098ba8b.a3df28","type":"set","name":"set vnf_length","xml":"<set>\n<parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length'\n  value='`$serv-insts[$serv-index].path-segments_length + 1`' />\n","comments":"","x":1696.4284362792969,"y":2076.54766702652,"z":"5629d16d.2ad96","wires":[]},{"id":"29c194e4.ffaaec","type":"execute","name":"execute RestApiCallNode - PUT forwarding-path","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.forwardingpath.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.fp-url + $forwarding-path.forwarding-path-id`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-fp\" />\n\n","comments":"","outputs":1,"x":1797.797264099121,"y":2602.5596022605896,"z":"5629d16d.2ad96","wires":[["6b24d135.106e5","6756a9be.3589b8"]]},{"id":"6b24d135.106e5","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2068.2837982177734,"y":2626.807873249054,"z":"5629d16d.2ad96","wires":[["6be686e3.d317a8"]]},{"id":"6756a9be.3589b8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2060.712432861328,"y":2585.3078932762146,"z":"5629d16d.2ad96","wires":[["6be686e3.d317a8"]]},{"id":"6be686e3.d317a8","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"Failure writing forwarding-path to MD-SAL\" />\n","comments":"","x":2280.2972717285156,"y":2600.0596022605896,"z":"5629d16d.2ad96","wires":[]},{"id":"2bf6e158.bfceae","type":"switchNode","name":"for each existing forwarding path","xml":"<for silentFailure='true' index='fp-index' start='0' end='`$mdsal-service.service[0].service-data.forwarding-paths.forwarding-path_length`' >\n","comments":"","outputs":1,"x":1833.9286270141602,"y":1176.9643034934998,"z":"5629d16d.2ad96","wires":[["f7c714ad.2bad38"]]},{"id":"d0db37ac.abed08","type":"set","name":"set found-path = false","xml":"<set>\n<parameter name='found-path' value='false' />\n","comments":"","x":1801.4286270141602,"y":1121.9643034934998,"z":"5629d16d.2ad96","wires":[]},{"id":"f7c714ad.2bad38","type":"switchNode","name":"does the forwarding path name match?","xml":"<switch test='`$mdsal-service.service[0].service-data.forwarding-paths.forwarding-path[$fp-index].forwarding-path-name\n  == $db.path-segment[0].path-name`'>\n","comments":"","outputs":1,"x":2156.42862701416,"y":1175.7143034934998,"z":"5629d16d.2ad96","wires":[["eea9da0f.918148"]]},{"id":"eea9da0f.918148","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2386.4286346435547,"y":1174.4643034934998,"z":"5629d16d.2ad96","wires":[["7cb3f8f1.85eb48"]]},{"id":"7cb3f8f1.85eb48","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2515.178638458252,"y":1173.2143034934998,"z":"5629d16d.2ad96","wires":[["5754527f.58050c","8adff36e.3c1ee"]]},{"id":"5754527f.58050c","type":"set","name":"set found-path = true","xml":"<set>\n<parameter name='found-path' value='true' />\n","comments":"","x":2692.678638458252,"y":1145.7143034934998,"z":"5629d16d.2ad96","wires":[]},{"id":"8adff36e.3c1ee","type":"break","name":"break","xml":"<break>\n","comments":"","x":2645.1786041259766,"y":1193.2142901420593,"z":"5629d16d.2ad96","wires":[]},{"id":"313a3809.e4ff88","type":"switchNode","name":"switch found-path","xml":"<switch test='`$found-path`'>\n","comments":"","outputs":1,"x":1785.1786270141602,"y":1276.9643054008484,"z":"5629d16d.2ad96","wires":[["97b04b5c.cc2cb8"]]},{"id":"97b04b5c.cc2cb8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1952.6786270141602,"y":1275.7143054008484,"z":"5629d16d.2ad96","wires":[["cb6588b3.927c18"]]},{"id":"cb6588b3.927c18","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2083.9286041259766,"y":1274.4642901420593,"z":"5629d16d.2ad96","wires":[["d312f25b.03d12","848cf29d.edb6a","50bf0848.ed4ac8"]]},{"id":"f0d2a389.89135","type":"execute","name":"generate forwarding-path-id","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n<parameter name=\"ctx-destination\" value=\"forwarding-path.forwarding-path-id\" />\n","comments":"","outputs":1,"x":1746.0117454528809,"y":1757.7975754737854,"z":"5629d16d.2ad96","wires":[[]]},{"id":"491426c8.70e218","type":"execute","name":"generate service-path-instance-id","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n<parameter name=\"ctx-destination\" value=\"forwarding-path.service-paths.service-path[0].service-path-instance-id\" />\n","comments":"","outputs":1,"x":1764.3450775146484,"y":1800.2977395057678,"z":"5629d16d.2ad96","wires":[[]]},{"id":"5bdb2ffa.bd158","type":"switchNode","name":"switch api","xml":"<switch test='`$serv-insts[$serv-index].api`'>\n","comments":"","outputs":1,"x":1680.1188850402832,"y":2255.893068790436,"z":"5629d16d.2ad96","wires":[["a1a0cae2.cf1708","7db03a9d.ab68a4"]]},{"id":"a1a0cae2.cf1708","type":"outcome","name":"GR","xml":"<outcome value='GR'>\n","comments":"","outputs":1,"x":1831.7855987548828,"y":2141.7262177467346,"z":"5629d16d.2ad96","wires":[["f2ab2652.039508"]]},{"id":"7db03a9d.ab68a4","type":"outcome","name":"VNF","xml":"<outcome value='VNF'>\n","comments":"","outputs":1,"x":1827.4403438568115,"y":2382.869236469269,"z":"5629d16d.2ad96","wires":[["4b154329.3644ec"]]},{"id":"4b154329.3644ec","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1961.1903285980225,"y":2382.6192116737366,"z":"5629d16d.2ad96","wires":[["f9ae246a.e84cd8","983ef71a.da7d78","4c9a08e9.01d9f8","80ee9321.e385d","ae5db14f.68538"]]},{"id":"f9ae246a.e84cd8","type":"execute","name":"generate service-instance-id","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n<parameter name=\"ctx-destination\" value=\"tmp.service-instance-id\" />\n","comments":"","outputs":1,"x":2167.8570671081543,"y":2281.9049582481384,"z":"5629d16d.2ad96","wires":[[]]},{"id":"1f8a0d2b.888443","type":"execute","name":"generate forwarding-path url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.forwarding-path`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.fp-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.service-instance-id`\"/>\n","comments":"","outputs":1,"x":1735.714096069336,"y":2545.47572183609,"z":"5629d16d.2ad96","wires":[[]]},{"id":"8d090eb7.070a8","type":"comment","name":"Make a new service instance in GR-API","info":"","comments":"","x":2274.1069869995117,"y":2244.8214716911316,"z":"5629d16d.2ad96","wires":[]},{"id":"a46d416f.1a345","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/gps.log' />\n","comments":"","outputs":1,"x":632.2619171142578,"y":1701.964307308197,"z":"5629d16d.2ad96","wires":[[]]},{"id":"c67bb294.bc315","type":"switchNode","name":"switch path-segments_length","xml":"<switch test='`$serv-insts[$serv-index].path-segments_length`'>\n","comments":"","outputs":1,"x":1139.1667098999023,"y":2182.2023825645447,"z":"5629d16d.2ad96","wires":[["85251f33.38b5d","208c3acb.b76f26","eb2e3f83.248d9"]]},{"id":"eb2e3f83.248d9","type":"success","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1352.499927520752,"y":2207.2023844718933,"z":"5629d16d.2ad96","wires":[["df485e3e.9e56d"]]},{"id":"85251f33.38b5d","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1354.999927520752,"y":2110.952624797821,"z":"5629d16d.2ad96","wires":[["b2a1f74e.a0d9f8"]]},{"id":"208c3acb.b76f26","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1354.166675567627,"y":2153.869128704071,"z":"5629d16d.2ad96","wires":[["b2a1f74e.a0d9f8"]]},{"id":"b2a1f74e.a0d9f8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1495.8332252502441,"y":2132.2024211883545,"z":"5629d16d.2ad96","wires":[[]]},{"id":"683c3990.4dec28","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1565.357032775879,"y":1020.8928046226501,"z":"5629d16d.2ad96","wires":[["45c3f393.2082bc","477131b1.1c0c2"]]},{"id":"64270aaa.060174","type":"save","name":"custom query: get service instance","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource_and_url'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.AnAI-data.si\">\n\t<parameter name=\"start[0]\" value=\"`'nodes/service-instance/' + $serv-inst.service-instance-id `\" />\n\t<parameter name=\"start_length\" value=\"1\" />\n","comments":"","outputs":1,"x":1210.3569946289062,"y":1022.559576511383,"z":"5629d16d.2ad96","wires":[["b6eca96f.d32ca8"]]},{"id":"45c3f393.2082bc","type":"execute","name":"execute split","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n\t<parameter name=\"original_string\" value=\"`$tmp.AnAI-data.si.results[0].url`\" />\n\t<parameter name=\"regex\" value=\"/\"/>\n\t<parameter name=\"limit\" value=\"11\" />\n\t<parameter name=\"ctx_memory_result_key\" value=\"split\" />\n","comments":"","outputs":1,"x":1714.4045639038086,"y":996.8453507423401,"z":"5629d16d.2ad96","wires":[[]]},{"id":"b6eca96f.d32ca8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1432.0237197875977,"y":1022.2261891365051,"z":"5629d16d.2ad96","wires":[["683c3990.4dec28"]]},{"id":"477131b1.1c0c2","type":"set","name":"set global-customer-id, etc","xml":"<set>\n<parameter name='output-global-customer-id' value='`$split[6]`' />\n<parameter name='output-service-type' value='`$split[9]`' />\n<parameter name='output-service-role' value='`$tmp.AnAI-data.si.results[0].service-instance.service-role`' />\n","comments":"","x":1758.2141189575195,"y":1047.5595059394836,"z":"5629d16d.2ad96","wires":[]},{"id":"80ee9321.e385d","type":"save","name":"save service-instance to A&AI","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"service-instance\" \n\tkey=\"customer.global-customer-id = $output-global-customer-id\n\t  AND service-subscription.service-type = $output-service-type\n\t  AND service-instance.service-instance-id = $tmp.service-instance-id\" >\n<parameter name=\"service-instance-id\" value=\"`$tmp.service-instance-id`\" />\n<parameter name=\"global-customer-id\" value=\"`$output-global-customer-id`\" />\n<parameter name=\"service-type\" value=\"`$output-service-type`\" />\n<parameter name=\"service-role\" value=\"`$output-service-role`\" />\n","comments":"","outputs":1,"x":2173.452423095703,"y":2455.4165325164795,"z":"5629d16d.2ad96","wires":[["d5fedeb1.c6453","2cc58f82.b2f37"]]},{"id":"b329030f.6943d","type":"comment","name":"Make a new service instance in A&AI","info":"","comments":"","x":2262.500144958496,"y":2405.892997264862,"z":"5629d16d.2ad96","wires":[]},{"id":"b4ae1cfc.2d5e8","type":"save","name":"save forwarding-path to A&AI","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"forwarding-path\" \n\tkey=\"forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id\" >\n<parameter name=\"forwarding-path-id\" value=\"`$forwarding-path.service-paths.service-path[0].service-path-instance-id`\" />\n<parameter name=\"forwarding-path-name\" value=\"`$forwarding-path.service-paths.service-path[0].service-path-instance-name`\" />\n<parameter name=\"selflink\" value=\"`'/restconf/config/GENERIC-RESOURCE-API:services/service/'\n  + $tmp.service-instance-id\n  + '/forwarding-paths/forwarding-path/'\n  + $forwarding-path.forwarding-path-id\n  + '/services-paths/service-path/'\n  + $forwarding-path.service-paths.service-path[0].service-path-instance-id`\" />\n","comments":"","outputs":1,"x":1737.4999694824219,"y":2695.416627883911,"z":"5629d16d.2ad96","wires":[["570c5c1d.a84184","100184f6.a8fcdb"]]},{"id":"4177217a.70cc7","type":"save","name":"save forwarding-path relationship to service-instance","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"forwarding-path:relationship-list\"\n   key=\"forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"service-instance\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/business/customers/customer/'\n        + $output-global-customer-id\n        + '/service-subscriptions/service-subscription/'\n        + $output-service-type\n        + '/service-instances/service-instance/'\n        + $tmp.service-instance-id`\" />\n","comments":"","outputs":1,"x":1807.5000610351562,"y":2777.321086883545,"z":"5629d16d.2ad96","wires":[["e5653651.b903c8","eebbf2de.ab99c"]]},{"id":"9b387be2.dc2b18","type":"for","name":"for each vnf","xml":"<for index='vnf-index' start='0' end='`$forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":1678.9283981323242,"y":2904.464366912842,"z":"5629d16d.2ad96","wires":[["f601972.d913268"]]},{"id":"f601972.d913268","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1830.3570861816406,"y":2904.035620689392,"z":"5629d16d.2ad96","wires":[["ad9f625f.82ae3","86151834.e1db48"]]},{"id":"ad9f625f.82ae3","type":"save","name":"save forwarder to A&AI","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"forwarder\" \n\tkey=\"forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id AND forwarder.sequence = $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id\" >\n<parameter name=\"sequence\" value=\"`$forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id`\" />\n","comments":"","outputs":1,"x":2006.3570861816406,"y":2861.60693359375,"z":"5629d16d.2ad96","wires":[["4bd05c77.8bf2c4","cb4dc21b.d4dc6"]]},{"id":"86151834.e1db48","type":"save","name":"save forwarder relationship to generic-vnf","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"forwarder:relationship-list\"\n   key=\"forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id\n     AND forwarder.sequence = $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"generic-vnf\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/generic-vnfs/generic-vnf/'\n        + $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-instance-id`\" />\n","comments":"","outputs":1,"x":2060.357048034668,"y":2947.55947971344,"z":"5629d16d.2ad96","wires":[["5201ac9b.81d914","cf4a6c9f.ce33c"]]},{"id":"4c9a08e9.01d9f8","type":"execute","name":"execute RestApiCallNode - PUT service-instance","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.csm.serviceinstance.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-sr\" />\n\n","comments":"","outputs":1,"x":2232.857192993164,"y":2368.571464061737,"z":"5629d16d.2ad96","wires":[["67e628d8.b9a9b8"]]},{"id":"983ef71a.da7d78","type":"execute","name":"generate service-instance url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.service`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.service-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.service-instance-id`\"/>\n","comments":"","outputs":1,"x":2169.107192993164,"y":2326.0714631080627,"z":"5629d16d.2ad96","wires":[[]]},{"id":"f2ab2652.039508","type":"set","name":"set tmp.service-instance-id","xml":"<set>\n<parameter name='tmp.service-instance-id' value='`$serv-insts[$serv-index].service-instance-id`' />\n","comments":"","x":2023.9287490844727,"y":2141.1785759925842,"z":"5629d16d.2ad96","wires":[]},{"id":"ae5db14f.68538","type":"save","name":"save SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING ","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\nkey=\"INSERT INTO SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING\n  (simple_service_instance_id, forwarding_path_service_instance_id)\n  VALUES ( $serv-insts[$serv-index].service-instance-id , $tmp.service-instance-id )\" >","comments":"","outputs":1,"x":2297.9761810302734,"y":2511.6070461273193,"z":"5629d16d.2ad96","wires":[[]]},{"id":"83141530.82c518","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2316.785617828369,"y":1379.1786713600159,"z":"5629d16d.2ad96","wires":[["b3cd7e32.1311e"]]},{"id":"63df2c22.43c924","type":"get-resource","name":"get-resource SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='select forwarding_path_service_instance_id\n    from SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING\n    where simple_service_instance_id = $serv-inst.service-instance-id'\n  pfx='db.sitcim'>\n","comments":"","outputs":1,"x":1955.2857208251953,"y":1378.7979912757874,"z":"5629d16d.2ad96","wires":[["83141530.82c518"]]},{"id":"b3cd7e32.1311e","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1929.6429634094238,"y":1485.8929257392883,"z":"5629d16d.2ad96","wires":[["f82d1a28.9d5758","d0b3e656.49f5b8"]]},{"id":"a32e6237.6daf3","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":725.9285316467285,"y":312.1309576034546,"z":"5629d16d.2ad96","wires":[["3e23f4b0.7933cc"]]},{"id":"39c3eea1.efd8a2","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":725.9285545349121,"y":357.1309471130371,"z":"5629d16d.2ad96","wires":[["9ec522bf.66732"]]},{"id":"3e23f4b0.7933cc","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"`'System error reading PATH_SEGMENT table for uuid '\n  + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid\n  + ' and path '\n  + $db.forwarding-path[$path-index].path-name`\" />\n","comments":"","x":925.9286766052246,"y":310.4642915725708,"z":"5629d16d.2ad96","wires":[]},{"id":"9ec522bf.66732","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"`'No entries in PATH_SEGMENT table for uuid '\n  + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid\n  + ' and path '\n  + $db.forwarding-path[$path-index].path-name`\" />\n","comments":"","x":925.9284934997559,"y":357.1309471130371,"z":"5629d16d.2ad96","wires":[]},{"id":"5581a414.fb2c9c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":577.5952529907227,"y":400.46430587768555,"z":"5629d16d.2ad96","wires":[["6ce2ff77.93b44"]]},{"id":"6ce2ff77.93b44","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":312.26190185546875,"y":574.4642467498779,"z":"5629d16d.2ad96","wires":[["1570d296.5420fd","6ae56929.26b358","4e5c686c.598f68"]]},{"id":"fb8a502b.b988a","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":997.2618865966797,"y":616.1309127807617,"z":"5629d16d.2ad96","wires":[["c62d489d.61a668"]]},{"id":"f673ab2c.5baed8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":997.2619094848633,"y":659.1309022903442,"z":"5629d16d.2ad96","wires":[["709cc4e9.5f8a1c"]]},{"id":"709cc4e9.5f8a1c","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"`'System error calling AAI to get run-time service instances for invariant uuid '\n  + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`\" />\n","comments":"","x":1187.2621154785156,"y":659.4642295837402,"z":"5629d16d.2ad96","wires":[]},{"id":"c62d489d.61a668","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"`'No run-time service instances in AAI for invariant uuid '\n  + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`\" />\n","comments":"","x":1185.59525680542,"y":616.1309595108032,"z":"5629d16d.2ad96","wires":[]},{"id":"30dab3b9.4e949c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":848.9285125732422,"y":702.7975997924805,"z":"5629d16d.2ad96","wires":[["cf0a30ca.a8fbb"]]},{"id":"cf0a30ca.a8fbb","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":297.26189041137695,"y":1471.1309490203857,"z":"5629d16d.2ad96","wires":[["f1440634.84c218","954eddda.d0e1c","d93608d4.fa2628","2cea7227.951c0e","d5e62d12.0598","a46d416f.1a345","2e8ac8c0.7d70a8"]]},{"id":"100184f6.a8fcdb","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1945.595199584961,"y":2714.464129447937,"z":"5629d16d.2ad96","wires":[["d60f0907.9fd4d8"]]},{"id":"570c5c1d.a84184","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1938.0238342285156,"y":2672.9641494750977,"z":"5629d16d.2ad96","wires":[["d60f0907.9fd4d8"]]},{"id":"d60f0907.9fd4d8","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"Failure writing forwarding-path to AAI\" />\n","comments":"","x":2157.608673095703,"y":2687.7158584594727,"z":"5629d16d.2ad96","wires":[]},{"id":"eebbf2de.ab99c","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2085.5952072143555,"y":2794.4642028808594,"z":"5629d16d.2ad96","wires":[["bf35846c.fd3a28"]]},{"id":"e5653651.b903c8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2078.02384185791,"y":2752.96422290802,"z":"5629d16d.2ad96","wires":[["bf35846c.fd3a28"]]},{"id":"bf35846c.fd3a28","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"Failure writing forwarding-path relationship to AAI\" />\n","comments":"","x":2297.6086807250977,"y":2767.715931892395,"z":"5629d16d.2ad96","wires":[]},{"id":"cb4dc21b.d4dc6","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2188.928421020508,"y":2881.1309871673584,"z":"5629d16d.2ad96","wires":[["d39c3493.921458"]]},{"id":"4bd05c77.8bf2c4","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2181.3570556640625,"y":2839.631007194519,"z":"5629d16d.2ad96","wires":[["d39c3493.921458"]]},{"id":"d39c3493.921458","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"Failure writing forwarder to AAI\" />\n","comments":"","x":2400.94189453125,"y":2854.382716178894,"z":"5629d16d.2ad96","wires":[]},{"id":"cf4a6c9f.ce33c","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2297.261878967285,"y":2967.7974796295166,"z":"5629d16d.2ad96","wires":[["6613e9ab.9c4918"]]},{"id":"5201ac9b.81d914","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2289.69051361084,"y":2926.2974996566772,"z":"5629d16d.2ad96","wires":[["6613e9ab.9c4918"]]},{"id":"6613e9ab.9c4918","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"Failure writing forwarder relationship to AAI\" />\n","comments":"","x":2509.2753524780273,"y":2941.0492086410522,"z":"5629d16d.2ad96","wires":[]},{"id":"67e628d8.b9a9b8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2495.5950775146484,"y":2367.797538757324,"z":"5629d16d.2ad96","wires":[["d3a89de0.7df88"]]},{"id":"d3a89de0.7df88","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"Failure creating service instance in MD-SAL\" />\n","comments":"","x":2685.5950775146484,"y":2366.130790710449,"z":"5629d16d.2ad96","wires":[]},{"id":"2cc58f82.b2f37","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2383.9285736083984,"y":2472.797538757324,"z":"5629d16d.2ad96","wires":[["36de329d.4c51fe"]]},{"id":"d5fedeb1.c6453","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2376.357208251953,"y":2431.297558784485,"z":"5629d16d.2ad96","wires":[["36de329d.4c51fe"]]},{"id":"36de329d.4c51fe","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"Failure creating service instance in AAI\" />\n","comments":"","x":2579.2754077911377,"y":2446.049120903015,"z":"5629d16d.2ad96","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-populate-from-grapi.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-populate-from-grapi.json
new file mode 100755
index 0000000..203eecb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-populate-from-grapi.json
@@ -0,0 +1 @@
+[{"id":"a66fc7ce.46b378","type":"dgstart","name":"DGSTART","outputs":1,"x":104.99999237060547,"y":85,"z":"6d7f71e.590019","wires":[["18810cab.b01663"]]},{"id":"18810cab.b01663","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.2856903076172,"y":125.23810863494873,"z":"6d7f71e.590019","wires":[["93389fb4.470df"]]},{"id":"93389fb4.470df","type":"method","name":"method getpathsegment-populate-from-grapi","xml":"<method rpc='getpathsegment-populate-from-grapi' mode='sync'>\n","comments":"","outputs":1,"x":215.42861938476562,"y":165.9999942779541,"z":"6d7f71e.590019","wires":[["4035cbaf.322f94"]]},{"id":"d9495938.32cb18","type":"comment","name":"getpathsegment-populate-from-grapi","info":"","comments":"","x":499.3448486328125,"y":32.58634376525879,"z":"6d7f71e.590019","wires":[]},{"id":"4035cbaf.322f94","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":205.57146453857422,"y":406.7411518096924,"z":"6d7f71e.590019","wires":[["f0797342.9c438"]]},{"id":"363c3171.7e0ede","type":"for","name":"for each MD-SAL vnf","xml":"<for silentFailure='true' index='vnf-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":1390.535903930664,"y":482.32140922546387,"z":"6d7f71e.590019","wires":[["2be3d5be.b86e3a"]]},{"id":"17ed646d.5e36fc","type":"set","name":"set vnf-list_length","xml":"<set>\n<parameter name='serv-inst.vnf-list_length'\n  value='`$mdsal-service.service[0].service-data.vnfs.vnf_length`' />\n","comments":"","x":1478.3928718566895,"y":725.1785326004028,"z":"6d7f71e.590019","wires":[]},{"id":"8f05c34f.9a216","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":2101.3096885681152,"y":258.9880962371826,"z":"6d7f71e.590019","wires":[["5a6fb1cb.14dec","d45cb724.9e68e8","ede9f0c5.b1bd2"]]},{"id":"5a6fb1cb.14dec","type":"set","name":"set vnf-id","xml":"<set>\n<parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-id' value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-id`' />\n","comments":"","x":2263.2744140625,"y":210.6547908782959,"z":"6d7f71e.590019","wires":[]},{"id":"d45cb724.9e68e8","type":"for","name":"for each vnf network","xml":"<for silentFailure='true' index='vnf-network-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >\n","comments":"","outputs":1,"x":2297.5004806518555,"y":259.82146310806274,"z":"6d7f71e.590019","wires":[["3f360487.40655c"]]},{"id":"55d9efb3.4b684","type":"set","name":"set api type to GR","xml":"<set>\n<parameter name='serv-inst.api' value='GR' />\n","comments":"","x":1478.928638458252,"y":669.642825126648,"z":"6d7f71e.590019","wires":[]},{"id":"3f360487.40655c","type":"for","name":"for each vf module","xml":"<for silentFailure='true' index='vf-module-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n","comments":"","outputs":1,"x":2508.750545501709,"y":260.2500329017639,"z":"6d7f71e.590019","wires":[["c7aba045.1c34a"]]},{"id":"c7aba045.1c34a","type":"for","name":"for each vm","xml":"<for silentFailure='true' index='vm-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":2689.643611907959,"y":259.64292001724243,"z":"6d7f71e.590019","wires":[["5b48a026.a1a91"]]},{"id":"5b48a026.a1a91","type":"for","name":"for each vm-network","xml":"<for silentFailure='true' index='vm-network-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-index].vm-networks.vm-network_length`' >\n","comments":"","outputs":1,"x":2876.608066558838,"y":259.8214945793152,"z":"6d7f71e.590019","wires":[["1cdc2616.1c24fa"]]},{"id":"a31355db.afe758","type":"for","name":"for each vnf in vnf-ids","xml":"<for silentFailure='true' index='vnf-ids-index' start='0' end='`$vnf-ids_length`' >\n","comments":"","outputs":1,"x":995.0595626831055,"y":502.5595397949219,"z":"6d7f71e.590019","wires":[["e14fa0c6.5ef9"]]},{"id":"2be3d5be.b86e3a","type":"switchNode","name":"customization-uuid matches?","xml":"<switch test='`$vnf-ids[$vnf-ids-index] == $mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.onap-model-information.model-customization-uuid`'>\n","comments":"","outputs":1,"x":1662.6787796020508,"y":480.57142639160156,"z":"6d7f71e.590019","wires":[["aad27c47.88dea"]]},{"id":"aad27c47.88dea","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1885.5357627868652,"y":478.5714750289917,"z":"6d7f71e.590019","wires":[["8f05c34f.9a216"]]},{"id":"e14fa0c6.5ef9","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1192.6786270141602,"y":500.7143154144287,"z":"6d7f71e.590019","wires":[["363c3171.7e0ede","46015960.11afa8","ef9932e5.043a5"]]},{"id":"46015960.11afa8","type":"switchNode","name":"switch vnf-network-list_length == 0","xml":"<switch test='`$vnf-network-list_length == 0`'>\n","comments":"","outputs":1,"x":1431.2501678466797,"y":574.2856636047363,"z":"6d7f71e.590019","wires":[["4996b9c9.495528"]]},{"id":"4996b9c9.495528","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1644.1071548461914,"y":574.2858028411865,"z":"6d7f71e.590019","wires":[["c2d3eb61.cfd728"]]},{"id":"eade6fe6.5700f","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='matching-error' value=\"`'Unable to find VNF with customization UUID of ' + $vnf-ids[vnf-ids-index] + ' for service instance ' + $serv-inst.service-instance-id`\" />\n","comments":"","x":2008.3927974700928,"y":530.000096321106,"z":"6d7f71e.590019","wires":[]},{"id":"c2d3eb61.cfd728","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1795.5358142852783,"y":574.2857704162598,"z":"6d7f71e.590019","wires":[["eade6fe6.5700f","d6048bfa.780a88","6dca1263.4778bc"]]},{"id":"d6048bfa.780a88","type":"break","name":"break","xml":"<break>\n","comments":"","x":1948.392993927002,"y":625.7143640518188,"z":"6d7f71e.590019","wires":[]},{"id":"77e5e709.c714d8","type":"switchNode","name":"switch mismatch","xml":"<switch test='`$mismatch`'>\n","comments":"","outputs":1,"x":970.3571624755859,"y":703.392915725708,"z":"6d7f71e.590019","wires":[["c2d5121.2cea3f"]]},{"id":"c2d5121.2cea3f","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1137.4998664855957,"y":703.3929166793823,"z":"6d7f71e.590019","wires":[["e13c20b2.c80ee"]]},{"id":"e13c20b2.c80ee","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1288.9285430908203,"y":703.3929100036621,"z":"6d7f71e.590019","wires":[["55d9efb3.4b684","17ed646d.5e36fc"]]},{"id":"f0797342.9c438","type":"switchNode","name":"switch vnf-ids_length","xml":"<switch test='`$vnf-ids_length`'>\n","comments":"","outputs":1,"x":408.74999618530273,"y":405.3571491241455,"z":"6d7f71e.590019","wires":[["23fcf718.af2d48","54b8da41.f17a84"]]},{"id":"23fcf718.af2d48","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":607.4999771118164,"y":245.00000381469727,"z":"6d7f71e.590019","wires":[["1ceb28f2.d76047"]]},{"id":"54b8da41.f17a84","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":608.75,"y":598.7500057220459,"z":"6d7f71e.590019","wires":[["9bba02e5.459a"]]},{"id":"9bba02e5.459a","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":772.4999923706055,"y":597.5,"z":"6d7f71e.590019","wires":[["a31355db.afe758","77e5e709.c714d8","25801811.f52908"]]},{"id":"4c7eaa9d.d75e14","type":"comment","name":"Composite path","info":"","comments":"","x":769.8214492797852,"y":188.5714225769043,"z":"6d7f71e.590019","wires":[]},{"id":"1132a175.93984f","type":"comment","name":"Simple path","info":"","comments":"","x":765.8928642272949,"y":542.8571424484253,"z":"6d7f71e.590019","wires":[]},{"id":"1ceb28f2.d76047","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":764.9999694824219,"y":246.24999809265137,"z":"6d7f71e.590019","wires":[["e5138787.60c938","457ab284.4700dc","a11da0e1.fb029"]]},{"id":"457ab284.4700dc","type":"set","name":"set vnf-list_length","xml":"<set>\n<parameter name='serv-inst.vnf-list_length'\n  value='`$mdsal-service.service[0].service-data.vnfs.vnf_length`' />\n","comments":"","x":969.4642639160156,"y":326.42856216430664,"z":"6d7f71e.590019","wires":[]},{"id":"e5138787.60c938","type":"set","name":"set api type to GR","xml":"<set>\n<parameter name='serv-inst.api' value='GR' />\n","comments":"","x":971.785774230957,"y":273.214298248291,"z":"6d7f71e.590019","wires":[]},{"id":"ef9932e5.043a5","type":"set","name":"set vnf-network-list_length to 0","xml":"<set>\n<parameter name='vnf-network-list_length' value='0' />\n","comments":"","x":1421.7859725952148,"y":428.4523859024048,"z":"6d7f71e.590019","wires":[]},{"id":"1cdc2616.1c24fa","type":"switchNode","name":"network-role matches?","xml":"<switch test='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role\n  == $mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-index].vm-networks.vm-network[$vm-network-index].network-role`'>\n","comments":"","outputs":1,"x":3094.6426963806152,"y":259.64286279678345,"z":"6d7f71e.590019","wires":[["7e6e4184.8f829"]]},{"id":"a5bc8518.beefc8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3400.3572845458984,"y":258.2142868041992,"z":"6d7f71e.590019","wires":[["ee23b31b.a6149","bc442b55.010ac8"]]},{"id":"ee23b31b.a6149","type":"set","name":"set network name/role and vf-module-id","xml":"<set>\n<parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].network-name'\n  value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name`' />\n<parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].network-role'\n  value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`' />\n<parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].vf-module-id'\n  value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`' />\n","comments":"","x":3630.357280731201,"y":232.4999704360962,"z":"6d7f71e.590019","wires":[]},{"id":"bc442b55.010ac8","type":"set","name":"increment vnf-network-list_length","xml":"<set>\n<parameter name='vnf-network-list_length' value='`$vnf-network-list_length + 1`' />\n","comments":"","x":3604.6429862976074,"y":281.0714168548584,"z":"6d7f71e.590019","wires":[]},{"id":"ede9f0c5.b1bd2","type":"set","name":"set vnf-network-list_length in serv-inst","xml":"<set>\n<parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list_length' value='`$vnf-network-list_length`' />\n","comments":"","x":2351.785972595215,"y":309.6428451538086,"z":"6d7f71e.590019","wires":[]},{"id":"25801811.f52908","type":"set","name":"set mismatch = false","xml":"<set>\n<parameter name='mismatch' value='false' />\n","comments":"","x":991.7857360839844,"y":449.4047613143921,"z":"6d7f71e.590019","wires":[]},{"id":"6dca1263.4778bc","type":"set","name":"set mismatch = true","xml":"<set>\n<parameter name='mismatch' value='true' />\n","comments":"","x":1990.3571548461914,"y":578.2143392562866,"z":"6d7f71e.590019","wires":[]},{"id":"7e6e4184.8f829","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3271.785789489746,"y":258.21430587768555,"z":"6d7f71e.590019","wires":[["a5bc8518.beefc8"]]},{"id":"a11da0e1.fb029","type":"for","name":"for each vnf in MD-SAL","xml":"<for silentFailure='true' index='vnf-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":986.0713539123535,"y":208.92858123779297,"z":"6d7f71e.590019","wires":[["899f4cb5.f34bb"]]},{"id":"899f4cb5.f34bb","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1174.6427879333496,"y":207.50000381469727,"z":"6d7f71e.590019","wires":[["5a4b7c4.0d65784","8f05c34f.9a216","782de792.75d208"]]},{"id":"5a4b7c4.0d65784","type":"set","name":"set vnf-ids-index to vnf-index","xml":"<set>\n<parameter name='vnf-ids-index' value='`$vnf-index`' />\n","comments":"","x":1384.880874633789,"y":169.64285469055176,"z":"6d7f71e.590019","wires":[]},{"id":"782de792.75d208","type":"set","name":"set vnf-network-list_length to 0","xml":"<set>\n<parameter name='vnf-network-list_length' value='0' />\n","comments":"","x":1391.666633605957,"y":121.66666030883789,"z":"6d7f71e.590019","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-populate-from-vnfapi.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-populate-from-vnfapi.json
new file mode 100755
index 0000000..f21ab79
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-populate-from-vnfapi.json
@@ -0,0 +1 @@
+[{"id":"79886f35.468b2","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":361,"y":33,"z":"13ea1295.46163d","wires":[["6bebd82e.dbb4e8"]]},{"id":"fc9a5aeb.9641b8","type":"dgstart","name":"DGSTART","outputs":1,"x":105,"y":33,"z":"13ea1295.46163d","wires":[["79886f35.468b2"]]},{"id":"6bebd82e.dbb4e8","type":"method","name":"method getpathsegment-populate-from-vnfapi","xml":"<method rpc='getpathsegment-populate-from-vnfapi' mode='sync'>\n","comments":"","outputs":1,"x":737,"y":33,"z":"13ea1295.46163d","wires":[["c815e4d6.935de8"]]},{"id":"c815e4d6.935de8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":172,"y":95,"z":"13ea1295.46163d","wires":[["d9a6b40e.e037e8","bc341c4c.788fc","45f4ec8e.8f54b4","3f5b8bf5.fb4eb4","f22ed2ac.cf7d4","8dce646d.ba9e58","fd97e171.58aa","aecdddc8.b3b0c","73374c07.1b3084","a7f70fe1.122d9","cf9d4004.d81ce"]]},{"id":"398ebb3d.c08964","type":"comment","name":"Validate ctx inputs","info":"","comments":"","x":229,"y":285,"z":"13ea1295.46163d","wires":[]},{"id":"d9a6b40e.e037e8","type":"switchNode","name":"switch input serv-inst.service-instance-id","xml":"<switch test='`$serv-inst.service-instance-id`'>\n","comments":"","outputs":1,"x":305,"y":371,"z":"13ea1295.46163d","wires":[["d44a97a1.a14c48"]]},{"id":"807211c8.250bf","type":"comment","name":"service-instance-id and match-type - REQUIRED","info":"","comments":"","x":326,"y":327,"z":"13ea1295.46163d","wires":[]},{"id":"d44a97a1.a14c48","type":"other","name":"Blank","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":535,"y":371,"z":"13ea1295.46163d","wires":[["19cff64d.9e764a"]]},{"id":"e84a6720.65d5f8","type":"GenericXML","name":"record","xml":"<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: input service-instance-id is not set\"/>","comments":"","outputs":1,"x":781,"y":371,"z":"13ea1295.46163d","wires":[[]]},{"id":"bc341c4c.788fc","type":"switchNode","name":"switch input match-type","xml":"<switch test='`$match-type`'>\n","comments":"","outputs":1,"x":257,"y":456,"z":"13ea1295.46163d","wires":[["359972bf.ebd0ce"]]},{"id":"359972bf.ebd0ce","type":"other","name":"Blank","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":536,"y":456,"z":"13ea1295.46163d","wires":[["5fe8c913.e7db68"]]},{"id":"8e58421f.d9382","type":"GenericXML","name":"record","xml":"<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: input match-type is not set\"/>","comments":"","outputs":1,"x":790,"y":457,"z":"13ea1295.46163d","wires":[[]]},{"id":"dd804e4.b1b1bb","type":"comment","name":"Determine simple or composite path from vnf-ids_length","info":"","comments":"","x":339,"y":577,"z":"13ea1295.46163d","wires":[]},{"id":"45f4ec8e.8f54b4","type":"switchNode","name":"switch input vnf-ids_length","xml":"<switch test='`$vnf-ids_length`'>\n","comments":"","outputs":1,"x":249,"y":622,"z":"13ea1295.46163d","wires":[["7745bc96.282894","4d6a5928.9b39e8"]]},{"id":"7745bc96.282894","type":"other","name":"Blank","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":439,"y":622,"z":"13ea1295.46163d","wires":[["cf606a1a.2b6be8"]]},{"id":"3fdc4223.03b76e","type":"GenericXML","name":"record","xml":"<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: input vnf-ids_length is NOT blank, this is a SIMPLE path\"/>","comments":"","outputs":1,"x":700,"y":743,"z":"13ea1295.46163d","wires":[[]]},{"id":"804d67a4.472cc8","type":"comment","name":"For 1806: will match-type always be \"network-name\", may have other values in the future","info":"","comments":"","x":1153,"y":456,"z":"13ea1295.46163d","wires":[]},{"id":"52e459e3.cc48b8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":566,"y":687,"z":"13ea1295.46163d","wires":[["a7265092.2dcf2","3fdc4223.03b76e"]]},{"id":"a7265092.2dcf2","type":"set","name":"set path-type SIMPLE","xml":"<set>\n<parameter name=\"path-type\" value= \"SIMPLE\"/>","comments":"","x":745,"y":693,"z":"13ea1295.46163d","wires":[]},{"id":"8dce646d.ba9e58","type":"execute","name":"printContext * TEST-ONLY *","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/getpathsegment-populate-from-vnfapi-output.log' />\n","comments":"","outputs":1,"x":252,"y":3650,"z":"13ea1295.46163d","wires":[[]]},{"id":"4d6a5928.9b39e8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":438,"y":687,"z":"13ea1295.46163d","wires":[["52e459e3.cc48b8"]]},{"id":"cf606a1a.2b6be8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":567,"y":622,"z":"13ea1295.46163d","wires":[["bd9f687e.c01fc8","2f9dfd0.57c5b04"]]},{"id":"bd9f687e.c01fc8","type":"set","name":"set path-type COMPOSITE","xml":"<set>\n<parameter name=\"path-type\" value= \"COMPOSITE\"/>","comments":"","x":762,"y":587,"z":"13ea1295.46163d","wires":[]},{"id":"2f9dfd0.57c5b04","type":"GenericXML","name":"record","xml":"<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: input vnf-ids_length is blank, this is a COMPOSITE path\"/>","comments":"","outputs":1,"x":698,"y":641,"z":"13ea1295.46163d","wires":[[]]},{"id":"3f5b8bf5.fb4eb4","type":"returnSuccess","name":"return success","xml":"<return status='success'>","comments":"","x":214,"y":3703,"z":"13ea1295.46163d","wires":[]},{"id":"19cff64d.9e764a","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":655,"y":371,"z":"13ea1295.46163d","wires":[["e84a6720.65d5f8","2146f88b.5fab68"]]},{"id":"5fe8c913.e7db68","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":660,"y":457,"z":"13ea1295.46163d","wires":[["8e58421f.d9382","8228ea75.c55708"]]},{"id":"f22ed2ac.cf7d4","type":"set","name":"set outputs","xml":"<set>\n<parameter name=\"serv-inst.service-instance-id\" value= \"`$serv-inst.service-instance-id`\"/>\n<parameter name=\"serv-inst.vnf-list_length\" value= \"`$vnfListIndex`\"/>","comments":"","x":197,"y":3545,"z":"13ea1295.46163d","wires":[]},{"id":"fd97e171.58aa","type":"switchNode","name":"switch path-type","xml":"<switch test='`$path-type`'>\n","comments":"","outputs":1,"x":226,"y":833,"z":"13ea1295.46163d","wires":[["f27f4e54.99621","c68b280e.127728"]]},{"id":"f27f4e54.99621","type":"other","name":"SIMPLE","xml":"<outcome value='SIMPLE'>\n","comments":"","outputs":1,"x":388,"y":799,"z":"13ea1295.46163d","wires":[["7c6f9037.e4eeb"]]},{"id":"7c6f9037.e4eeb","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":416,"y":847,"z":"13ea1295.46163d","wires":[["ce28ec71.903b2","d3b27ea5.54dc1","839b28.f8b8b4d8","ccb84430.71e918","30f0e2b3.100a5e","cbe26532.112ec8","f4d41db.52befe"]]},{"id":"c68b280e.127728","type":"other","name":"COMPOSITE","xml":"<outcome value='COMPOSITE'>\n","comments":"","outputs":1,"x":359,"y":2429,"z":"13ea1295.46163d","wires":[["b6c1194d.fd2498"]]},{"id":"b6c1194d.fd2498","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":387,"y":2474,"z":"13ea1295.46163d","wires":[["e3148b0a.ca8e38","9edbc24f.7c9ff","223f61e8.f562be"]]},{"id":"2e158271.5031ee","type":"comment","name":"Get vf-module-ids from AAI using custom query vnfs-fromServiceInstance (aai-complex-service-1020)","info":"","comments":"","x":832,"y":800,"z":"13ea1295.46163d","wires":[]},{"id":"ce28ec71.903b2","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: Call AAI custom query vfModule-fromServiceInstance to get vf-module-ids\"/>","comments":"","outputs":1,"x":549,"y":891,"z":"13ea1295.46163d","wires":[[]]},{"id":"d3b27ea5.54dc1","type":"save","name":"AAI custom query: get vf-module-ids","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.AnAI-data.vf-module-ids\">\n<parameter name=\"start[0]\" value=\"`'/nodes/service-instances/service-instance?service-instance-id=' + $serv-inst.service-instance-id `\" />\n<!--<parameter name=\"start[0]\" value=\"`'/business/customers/customer/bgb-customer/service-subscriptions/service-subscription/bgb-service-type/service-instances' `\" />-->\n<!--<parameter name=\"start[0]\" value=\"`'/business/customers/customer/la-customer/service-subscriptions/service-subscription/la-service-type/service-instances' `\" />-->\n<parameter name=\"start_length\" value=\"1\" />\n<parameter name=\"query\" value=\"/query/vfModule-fromServiceInstance\" />\n<!--<parameter name=\"query\" value=\"/query/vnfs-fromServiceInstance\" /> -->","comments":"","outputs":1,"x":642,"y":942,"z":"13ea1295.46163d","wires":[["e082040c.6d4908","5c4292b1.11b9ec","9e260ec9.cf65b"]]},{"id":"e082040c.6d4908","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":877.2380867004395,"y":895.6664667129517,"z":"13ea1295.46163d","wires":[["e3c1e843.25a028"]]},{"id":"e3c1e843.25a028","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":1016.9524154663086,"y":895.3806056976318,"z":"13ea1295.46163d","wires":[["d997efa6.55434"]]},{"id":"d997efa6.55434","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to AAI custom query: vfModule-fromServiceInstance\" />\n<parameter name=\"serv-inst.api\" value= \"\"/>\n<parameter name='tmp.vf-module-ids_length' value='0' />\n<parameter name='tmp.vnf-instances_length' value='0' />\n","comments":"","outputs":1,"x":1197.52392578125,"y":895.0949096679688,"z":"13ea1295.46163d","wires":[[]]},{"id":"5c4292b1.11b9ec","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":878.3809814453125,"y":941.3806762695312,"z":"13ea1295.46163d","wires":[["c08b2b88.a84a68"]]},{"id":"c08b2b88.a84a68","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":1020.666690826416,"y":941.9521732330322,"z":"13ea1295.46163d","wires":[["3734ee52.190de2"]]},{"id":"3734ee52.190de2","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"No vfModules returned from AAI: vfModule-fromService-instance\" />\n<parameter name=\"serv-inst.api\" value= \"\"/>\n","comments":"","outputs":1,"x":1196.2381591796875,"y":941.66650390625,"z":"13ea1295.46163d","wires":[[]]},{"id":"9e260ec9.cf65b","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":879.6190592447915,"y":985.904560724894,"z":"13ea1295.46163d","wires":[["5f4d6161.d1d83"]]},{"id":"2e29cfe9.5fb8d","type":"set","name":"set tmp.vf-module-ids","xml":"<set>\n<parameter name=\"`'tmp.vf-module-ids[' + $vfModuleResultIndex + ']'`\" value='`$tmp.AnAI-data.vf-module-ids.results[$vfModuleResultIndex].vf-module.vf-module-id`' />","comments":"","x":1462.952392578125,"y":986.2379150390625,"z":"13ea1295.46163d","wires":[]},{"id":"298f95cb.b9d00a","type":"execute","name":"execute RestApiCallNode - get vnf info from MDSAL","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vnf-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"vnf-mdsal\" />\n\n","comments":"","outputs":1,"x":730,"y":1276,"z":"13ea1295.46163d","wires":[["8dbbf79d.f608f8","7547ae1e.fdfd8","47f0ddf8.60b2a4"]]},{"id":"8dbbf79d.f608f8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1019.2958984375,"y":1297.2840576171875,"z":"13ea1295.46163d","wires":[["d45a77f7.e93578"]]},{"id":"7547ae1e.fdfd8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1016.4285278320312,"y":1203.333251953125,"z":"13ea1295.46163d","wires":[["6eaa31f.30034d"]]},{"id":"d45a77f7.e93578","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1171.1427612304688,"y":1296.6666345596313,"z":"13ea1295.46163d","wires":[["3b707d7e.5db1d2","3acd5d10.4693f2","8a75505d.5e275","c9f071fb.6503e","4a6aa86e.0c6ee8"]]},{"id":"47f0ddf8.60b2a4","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1023.3332977294922,"y":1246.666660308838,"z":"13ea1295.46163d","wires":[["3c63c905.5585c6"]]},{"id":"6eaa31f.30034d","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":1171.999984741211,"y":1203.3333263397217,"z":"13ea1295.46163d","wires":[["dc6dd3bd.e9878"]]},{"id":"3c63c905.5585c6","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":1170.333236694336,"y":1246.9999828338623,"z":"13ea1295.46163d","wires":[["d8e6fd9b.a0476"]]},{"id":"dc6dd3bd.e9878","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed to read vnf info from MD-SAL\" />\n<parameter name=\"serv-inst.api\" value= \"\"/>\n<parameter name=\"tmp.mdsal-error-encountered\" value= \"true\"/>\n","comments":"","outputs":1,"x":1362,"y":1202.6666259765625,"z":"13ea1295.46163d","wires":[[]]},{"id":"d8e6fd9b.a0476","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Cannot find vnf info in MD-SAL\" />\n<parameter name=\"serv-inst.api\" value= \"\"/>\n<parameter name=\"tmp.mdsal-error-encountered\" value= \"true\"/>\n","comments":"","outputs":1,"x":1358.6666107177734,"y":1246.6666107177734,"z":"13ea1295.46163d","wires":[[]]},{"id":"66b278a1.60b278","type":"comment","name":"vf-module-ids in AAI = vnf-ids in VNF-API","info":"","comments":"","x":652,"y":1018,"z":"13ea1295.46163d","wires":[]},{"id":"ff48aed9.45e91","type":"comment","name":"For each vf-module-id returned from AAI, get vnf-request-information and vnf-topology-information from MDSAL (correlation-simple-service-1050)","info":"","comments":"","x":971,"y":1063,"z":"13ea1295.46163d","wires":[]},{"id":"aecdddc8.b3b0c","type":"execute","name":"execute readProperties","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":249,"y":204,"z":"13ea1295.46163d","wires":[["1a85095b.106d37","83c24e54.cc2ec"]]},{"id":"1a85095b.106d37","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":448,"y":183,"z":"13ea1295.46163d","wires":[["24badd74.50bb32"]]},{"id":"83c24e54.cc2ec","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":446,"y":224,"z":"13ea1295.46163d","wires":[["be153b36.98ee58"]]},{"id":"be153b36.98ee58","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":583,"y":224,"z":"13ea1295.46163d","wires":[["29d5441f.3724bc","6ab4c663.88b828"]]},{"id":"29d5441f.3724bc","type":"GenericXML","name":"record","xml":"<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: Could not read properties file.\"/>\n<parameter name=\"field3\" value='`$prop.restapi.pm.getpolicy.templatefile`'/>","comments":"","outputs":1,"x":714,"y":224,"z":"13ea1295.46163d","wires":[[]]},{"id":"24badd74.50bb32","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":584,"y":183,"z":"13ea1295.46163d","wires":[["dafe4463.f562a8"]]},{"id":"4ff24ed7.c425c","type":"comment","name":"Read properties","info":"","comments":"","x":224,"y":157,"z":"13ea1295.46163d","wires":[]},{"id":"dafe4463.f562a8","type":"GenericXML","name":"record","xml":"<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: read properties file.\"/>","comments":"","outputs":1,"x":715,"y":183,"z":"13ea1295.46163d","wires":[[]]},{"id":"839b28.f8b8b4d8","type":"for","name":"for each vf-module-id","xml":"<for index='vfModuleIndex' start='0' end='`$tmp.vf-module-ids_length`' >\n","comments":"","outputs":1,"x":591,"y":1149,"z":"13ea1295.46163d","wires":[["b1bdd8d2.bfdca8"]]},{"id":"2315cfff.9ba5d","type":"configure","name":"set vnf-url","xml":"<set>\n<parameter name=\"tmp.vnf-url\" value=\"`'/restconf/config/VNF-API:vnfs/vnf-list/' + $tmp.vf-module-ids[$vfModuleIndex]`\" />\n","comments":"","outputs":1,"x":601,"y":1235,"z":"13ea1295.46163d","wires":[[]]},{"id":"b1bdd8d2.bfdca8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":594,"y":1188,"z":"13ea1295.46163d","wires":[["2315cfff.9ba5d","298f95cb.b9d00a"]]},{"id":"a3612e1f.f6e3c","type":"set","name":"set tmp.vf-module-ids * TEST-ONLY *","xml":"<set>\n<!--<parameter name='tmp.vf-module-ids' value='`$tmp.AnAI-data.vf-module-ids.results[0]`' />\n<parameter name=\"error-message\" value=\"AAI custom query: vfModule-fromServiceInstance yielded no data found\" />-->\n<parameter name='tmp.vf-module-ids_length' value='5' />\n<parameter name='tmp.vf-module-ids[0]' value='vf-module-id-1' />\n<parameter name='tmp.vf-module-ids[1]' value='vf-module-id-2' />\n<parameter name='tmp.vf-module-ids[2]' value='vf-module-id-3' />\n<parameter name='tmp.vf-module-ids[3]' value='vf-module-id-4' />\n<parameter name='tmp.vf-module-ids[4]' value='vf-module-id-5' />\n<!--<parameter name='tmp.vf-module-ids[5]' value='vf-module-id-not-in-mdsal' />-->\n<parameter name='tmp.vnf-instances_length' value='5' />","comments":"","x":1512,"y":896,"z":"13ea1295.46163d","wires":[]},{"id":"3b707d7e.5db1d2","type":"configure","name":"set vnf-instances entry","xml":"<set>\n<parameter name=\"`'tmp.vnf-instances[' + $tmp.vnfInstancesIndex + ']'`.\" value= '`$vnf-mdsal.vnf-list[0].`' />\n<parameter name=\"genericVnfIdFound\" value= 'false' />","comments":"","outputs":1,"x":759,"y":1335,"z":"13ea1295.46163d","wires":[[]]},{"id":"30f0e2b3.100a5e","type":"for","name":"for each input vnf-ids","xml":"<for index='vnfIdIndex' start='0' end='`$vnf-ids_length`' >\n","comments":"","outputs":1,"x":579,"y":1876,"z":"13ea1295.46163d","wires":[["bf9cd966.df87b8"]]},{"id":"bf9cd966.df87b8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":587,"y":1915,"z":"13ea1295.46163d","wires":[["eb7c4606.b94158"]]},{"id":"18c296f0.f609b9","type":"comment","name":"For each  input vnf-ids  find match on triplet-list.model-customization-id and add to output.vnf-list","info":"Preserve the order of input vnf-ids for output vf-module-list","comments":"","x":1032,"y":1877,"z":"13ea1295.46163d","wires":[]},{"id":"4df533f1.abe1ac","type":"switchNode","name":"switch tmp.vnf-instances...vnf-id == triplet-list.vf-module-id","xml":"<switch test='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-request-information.vnf-id == $tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'>\n","comments":"","outputs":1,"x":1548,"y":2094,"z":"13ea1295.46163d","wires":[["552bbcfa.05b014","4e1ec540.09ad0c"]]},{"id":"24e48058.7c71","type":"for","name":"for each vnf-instances","xml":"<for index='vnfInstanceIndex' start='0' end='`$tmp.vnf-instances_length`' >\n","comments":"","outputs":1,"x":1403,"y":2006,"z":"13ea1295.46163d","wires":[["ca71b6dd.e84f48"]]},{"id":"552bbcfa.05b014","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1834,"y":2025,"z":"13ea1295.46163d","wires":[["58caa0ea.b51b9"]]},{"id":"4e1ec540.09ad0c","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1835,"y":2088,"z":"13ea1295.46163d","wires":[[]]},{"id":"efef540e.1cc898","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: MATCH for vnf-instances.vnf-id and triplet-list.vf-module-id: \"/>\n<parameter name=\"field3\" value='`$tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'/>","comments":"","outputs":1,"x":2089,"y":2026,"z":"13ea1295.46163d","wires":[[]]},{"id":"4a6aa86e.0c6ee8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: MDSAL vnf-instances vnf-id|generic-vnf-id: \"/>\n<parameter name=\"field3\" value='`$tmp.vnf-instances[$tmp.vnfInstancesIndex].service-data.vnf-request-information.vnf-id`' />\n<parameter name=\"field4\" value='`$tmp.vnf-instances[$tmp.vnfInstancesIndex].service-data.vnf-request-information.generic-vnf-id`' />","comments":"","outputs":1,"x":1017,"y":1336,"z":"13ea1295.46163d","wires":[[]]},{"id":"ca71b6dd.e84f48","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1395,"y":2049,"z":"13ea1295.46163d","wires":[["ad57ec62.5f55b","4df533f1.abe1ac"]]},{"id":"ad57ec62.5f55b","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: vnfIdIndex:id | vnfInstanceIndex:id | : \"/>\n<parameter name=\"field3\" value='`$vnfIdIndex`'/>\n<parameter name=\"field4\" value='`$vnf-ids[$vnfIdIndex]`'/>\n<parameter name=\"field5\" value='`$vnfInstanceIndex`'/>\n<parameter name=\"field6\" value='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-request-information.vnf-id`'/>","comments":"","outputs":1,"x":1524,"y":2049,"z":"13ea1295.46163d","wires":[[]]},{"id":"58caa0ea.b51b9","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1961,"y":2025,"z":"13ea1295.46163d","wires":[["efef540e.1cc898","cd48dddf.0bfc5","e17a07e5.5d80a8","bfb01e4d.428b5"]]},{"id":"a17a3bfc.c25d68","type":"configure","name":"set output serv-inst.vnf-list.vnf-network-list data","xml":"<set>\n<parameter name=\"serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].network-name\" value= \"`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfNetworksIndex].network-name`\"/>\n<parameter name=\"serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].network-role\" value= \"`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfNetworksIndex].network-role`\"/>\n<parameter name=\"serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].vf-module-id\" value= \"`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-request-information.vnf-id`\"/>\n<parameter name=\"serv-inst.vnf-list[$vnfListIndex].vnf-network-list_length\" value= '`$vnfNetworksIndex + 1`'/>","comments":"","outputs":1,"x":2510,"y":2254,"z":"13ea1295.46163d","wires":[[]]},{"id":"4d9d23f1.73fdcc","type":"comment","name":"For each  vnf-networks in service-data.vnf-topology-information.vnf-assignments from MDSAL","info":"","comments":"","x":2348,"y":2081,"z":"13ea1295.46163d","wires":[]},{"id":"1d16c8d7.f918d7","type":"for","name":"for each vnf-networks","xml":"<for index='vnfNetworksIndex' start='0' end='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`' >","comments":"","outputs":1,"x":2387,"y":2136,"z":"13ea1295.46163d","wires":[["645a1c52.50ce74"]]},{"id":"645a1c52.50ce74","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2386,"y":2177,"z":"13ea1295.46163d","wires":[["df93772e.0015b8","a17a3bfc.c25d68"]]},{"id":"df93772e.0015b8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: MATCH for vnf-id and vnf-instances for vnf-id: \"/>\n<parameter name=\"field3\" value='`$vnf-ids[$vnfIdIndex]`'/>\n<parameter name=\"field4\" value='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfnetworksIndex].`'/>","comments":"","outputs":1,"x":2388,"y":2217,"z":"13ea1295.46163d","wires":[[]]},{"id":"9a17f638.85fd98","type":"comment","name":"Don't return failure on error cases, only set error message for calling DG","info":"","comments":"","x":1041,"y":325,"z":"13ea1295.46163d","wires":[]},{"id":"de27074d.c737b8","type":"comment","name":"Get vf-module IDs from AAI using service-instance-id","info":"","comments":"","x":658,"y":2429,"z":"13ea1295.46163d","wires":[]},{"id":"135b7762.c5e859","type":"execute","name":"execute RestApiCallNode - get vnf info","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vnf-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"vnf-mdsal\" />\n\n","comments":"","outputs":1,"x":682,"y":2883,"z":"13ea1295.46163d","wires":[["753b2988.dfef28","99c14378.a3f9","f1f797d0.263348"]]},{"id":"753b2988.dfef28","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1042.2959594726562,"y":2929.283935546875,"z":"13ea1295.46163d","wires":[["b25832e3.7436b"]]},{"id":"99c14378.a3f9","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1036.4285278320312,"y":2841.333251953125,"z":"13ea1295.46163d","wires":[["76686649.41d148"]]},{"id":"b25832e3.7436b","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1196.142822265625,"y":2928.66650390625,"z":"13ea1295.46163d","wires":[["5b7d3312.5bcb0c","7a1e825e.b258bc"]]},{"id":"f1f797d0.263348","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1043.3332977294922,"y":2884.666660308838,"z":"13ea1295.46163d","wires":[["3cc2434b.c5d82c"]]},{"id":"76686649.41d148","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1214.999984741211,"y":2841.3333263397217,"z":"13ea1295.46163d","wires":[["17e2e25d.a6f52e"]]},{"id":"3cc2434b.c5d82c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1213.333236694336,"y":2884.9999828338623,"z":"13ea1295.46163d","wires":[["3795156.dcfd4ea"]]},{"id":"17e2e25d.a6f52e","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed to read vnf info from MD-SAL\" />\n<parameter name=\"serv-inst.api\" value= \"\"/>\n","comments":"","outputs":1,"x":1418.999984741211,"y":2840.666732788086,"z":"13ea1295.46163d","wires":[[]]},{"id":"3795156.dcfd4ea","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Cannot find vnf info in MD-SAL\" />\n<parameter name=\"serv-inst.api\" value= \"\"/>\n","comments":"","outputs":1,"x":1416.6666107177734,"y":2884.6666107177734,"z":"13ea1295.46163d","wires":[[]]},{"id":"53e54934.536148","type":"comment","name":"vf-module-ids in AAI = vnf-ids in VNF-API","info":"","comments":"","x":620,"y":2649,"z":"13ea1295.46163d","wires":[]},{"id":"d34738ff.ce94d8","type":"comment","name":"For only the FIRST vf-module-id returned from AAI, get vnf-request-information and vnf-topology-information from MDSAL","info":"","comments":"","x":871,"y":2688,"z":"13ea1295.46163d","wires":[]},{"id":"b1f6e8e0.9913d8","type":"configure","name":"set vnf-url","xml":"<set>\n<parameter name=\"tmp.vnf-url\" value=\"`'/restconf/config/VNF-API:vnfs/vnf-list/' + $tmp.vf-module-ids[0]`\" />\n","comments":"","outputs":1,"x":784,"y":2731,"z":"13ea1295.46163d","wires":[[]]},{"id":"5b7d3312.5bcb0c","type":"configure","name":"set vnf-instances entry","xml":"<set>\n<parameter name=\"`'tmp.vnf-instances[0]'`.\" value= '`$vnf-mdsal.vnf-list[0].`' />","comments":"","outputs":1,"x":1429,"y":2929,"z":"13ea1295.46163d","wires":[[]]},{"id":"7a1e825e.b258bc","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: MDSAL vnf-instances vnf-id: \"/>\n<parameter name=\"field3\" value='`$tmp.vnf-instances[0].service-data.vnf-request-information.vnf-id`' />","comments":"","outputs":1,"x":1382,"y":2974,"z":"13ea1295.46163d","wires":[[]]},{"id":"375897b0.e3b0d8","type":"configure","name":"set output serv-inst.vnf-list data","xml":"<set>\n<parameter name=\"serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].network-name\" value= \"`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfNetworksIndex].network-name`\"/>\n<parameter name=\"serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].network-role\" value= \"`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfNetworksIndex].network-role`\"/>\n<parameter name=\"serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].vf-module-id\" value= \"`$tmp.vnf-instances[0].service-data.vnf-request-information.vnf-id`\"/>\n<parameter name=\"serv-inst.vnf-list[$vnfListIndex].vnf-network-list_length\" value= '`$vnfNetworksIndex + 1`'/>","comments":"","outputs":1,"x":1310,"y":3172,"z":"13ea1295.46163d","wires":[[]]},{"id":"768bcf6c.1de2e","type":"comment","name":"For each  vnf-networks in service-data.vnf-topology-information.vnf-assignments from MDSAL","info":"","comments":"","x":844,"y":2989,"z":"13ea1295.46163d","wires":[]},{"id":"a36f6533.d1b958","type":"for","name":"for each vnf-networks","xml":"<for index='vnfNetworksIndex' start='0' end='`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`' >","comments":"","outputs":1,"x":1232,"y":3038,"z":"13ea1295.46163d","wires":[["dbf6a49f.116a88"]]},{"id":"dbf6a49f.116a88","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1231,"y":3085,"z":"13ea1295.46163d","wires":[["97414ac7.a86b08","375897b0.e3b0d8"]]},{"id":"97414ac7.a86b08","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: copy vnf-instance data to output: \"/>\n<parameter name=\"field3\" value='`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfnetworksIndex].`'/>","comments":"","outputs":1,"x":1233,"y":3128,"z":"13ea1295.46163d","wires":[[]]},{"id":"746c2073.80207","type":"comment","name":"MATCH for vnf-instances.vnf-id and tripliet-list.vf-module-id","info":"","comments":"","x":1986,"y":1978,"z":"13ea1295.46163d","wires":[]},{"id":"cd48dddf.0bfc5","type":"configure","name":"set serv-inst.vnf-list[$vnfListIndex].vnf-id","xml":"<set>\n<parameter name=\"serv-inst.vnf-list[$vnfListIndex].vnf-id\" value= \"`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`\"/>","comments":"","outputs":1,"x":2181,"y":2371,"z":"13ea1295.46163d","wires":[[]]},{"id":"73374c07.1b3084","type":"set","name":"initialize output serv-inst.api to NULL, set to VNF on success","xml":"<set>\n<parameter name=\"serv-inst.api\" value= \"\"/>","comments":"","x":597,"y":95,"z":"13ea1295.46163d","wires":[]},{"id":"6ab4c663.88b828","type":"set","name":"Set error-message","xml":"<set>\n<parameter name=\"serv-inst.api\" value= \"\"/>\n<parameter name=\"error-message\" value=\"Could not read properties file\" />","comments":"","x":751,"y":265,"z":"13ea1295.46163d","wires":[]},{"id":"2146f88b.5fab68","type":"set","name":"Set error-message","xml":"<set>\n<parameter name=\"serv-inst.api\" value= \"\"/>\n<parameter name=\"error-message\" value=\"serv-inst.service-instance-id is not set\" />","comments":"","x":819,"y":412,"z":"13ea1295.46163d","wires":[]},{"id":"8228ea75.c55708","type":"set","name":"Set error-message","xml":"<set>\n<parameter name=\"serv-inst.api\" value= \"\"/>\n<parameter name=\"error-message\" value=\"input match-type is not set\" />","comments":"","x":827,"y":503,"z":"13ea1295.46163d","wires":[]},{"id":"e3148b0a.ca8e38","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: Call AAI custom query vfModule-fromServiceInstance to get vf-module-ids\"/>","comments":"","outputs":1,"x":528,"y":2521,"z":"13ea1295.46163d","wires":[[]]},{"id":"77ecc850.cc3808","type":"configure","name":"set vnfListIndex to 1","xml":"<set>\n<parameter name=\"vnfListIndex\" value= \"1\"/>","comments":"","outputs":1,"x":656,"y":3214,"z":"13ea1295.46163d","wires":[[]]},{"id":"6a0cc06e.d6de8","type":"configure","name":"set output serv-inst.vnf-list[$vnfListIndex].vnf-id to service-data.vnf-request-information.generic-vnf-id","xml":"<set>\n<parameter name=\"serv-inst.vnf-list[$vnfListIndex].vnf-id\" value= \"`$vnf-mdsal.vnf-list[0].service-data.vnf-request-information.generic-vnf-id`\"/>","comments":"","outputs":1,"x":872,"y":3278,"z":"13ea1295.46163d","wires":[[]]},{"id":"e17a07e5.5d80a8","type":"configure","name":"increment vnfListIndex and set serv-inst.vnf-list[$vnfListIndex].vnf-id","xml":"<set>\n<parameter name=\"vnfListIndex\" value= '`$vnfListIndex + 1`'/>","comments":"","outputs":1,"x":2265,"y":2418,"z":"13ea1295.46163d","wires":[[]]},{"id":"6aac23f6.7f905c","type":"comment","name":"check for vnf-instances_length is null?","info":"","comments":"","x":1641,"y":1940,"z":"13ea1295.46163d","wires":[]},{"id":"1b271514.dafa0b","type":"switchNode","name":"switch - check for networks on this vf-module","xml":"<switch test='`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length > 0`'>","comments":"","outputs":1,"x":704,"y":3043,"z":"13ea1295.46163d","wires":[["d1a68e34.a4ab2","8855592b.6b2398"]]},{"id":"d1a68e34.a4ab2","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1059,"y":3038,"z":"13ea1295.46163d","wires":[["a36f6533.d1b958"]]},{"id":"3e84d391.f3809c","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: No vnf-networks found for vnf-id: \"/>\n<parameter name=\"field3\" value='`$tmp.vnf-instances[0].service-data.vnf-request-information.vnf-id`' />","comments":"","outputs":1,"x":1054,"y":3168,"z":"13ea1295.46163d","wires":[[]]},{"id":"bfb01e4d.428b5","type":"switchNode","name":"switch","xml":"<switch test='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length > 0`'>","comments":"","outputs":1,"x":2082,"y":2136,"z":"13ea1295.46163d","wires":[["ae827f9e.9c43e","ae2d5283.d1e13"]]},{"id":"ae827f9e.9c43e","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2211,"y":2136,"z":"13ea1295.46163d","wires":[["1d16c8d7.f918d7"]]},{"id":"ae2d5283.d1e13","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2211,"y":2176,"z":"13ea1295.46163d","wires":[["465fccd7.347e54"]]},{"id":"682293ae.eb62dc","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: No vnf-networks found for vnf-id: \"/>\n<parameter name=\"field3\" value='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-request-information.vnf-id`' />","comments":"","outputs":1,"x":2214,"y":2256,"z":"13ea1295.46163d","wires":[[]]},{"id":"465fccd7.347e54","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2213,"y":2216,"z":"13ea1295.46163d","wires":[["682293ae.eb62dc","e19e0e13.0e404"]]},{"id":"e19e0e13.0e404","type":"configure","name":"set vnf-networks-list_length to 0","xml":"<set>\n<parameter name='`tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length' value=\"0\" />\n","comments":"","outputs":1,"x":2291,"y":2297,"z":"13ea1295.46163d","wires":[[]]},{"id":"b5aa567b.b40f18","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1058,"y":3123,"z":"13ea1295.46163d","wires":[["c5205e75.d54a2","3e84d391.f3809c"]]},{"id":"c5205e75.d54a2","type":"configure","name":"set vnf-networks-list_length to 0","xml":"<set>\n<parameter name='`tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length' value=\"0\" />\n","comments":"","outputs":1,"x":1134,"y":3213,"z":"13ea1295.46163d","wires":[[]]},{"id":"8855592b.6b2398","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1056,"y":3083,"z":"13ea1295.46163d","wires":[["b5aa567b.b40f18"]]},{"id":"cba2b409.58b7e8","type":"configure","name":"set triplet-list entry","xml":"<set>\n<parameter name=\"`'tmp.triplet-list[' + $tmp.tripletListIndex + '].generic-vnf-id'`\" value= '`$vnf-mdsal.vnf-list[0].service-data.vnf-request-information.generic-vnf-id`' />\n<parameter name=\"`'tmp.triplet-list[' + $tmp.tripletListIndex + '].vf-module-id'`\" value= '`$tmp.vf-module-ids[$vfModuleIndex]`' />\n<parameter name=\"tmp.triplet-list_length\" value= '`$tmp.triplet-list_length + 1`'/>\n<parameter name=\"tmp.tripletListIndex\" value= '`$tmp.tripletListIndex + 1`'/>","comments":"","outputs":1,"x":1575,"y":1472,"z":"13ea1295.46163d","wires":[[]]},{"id":"70e218a1.775218","type":"comment","name":"Put unique generic-vnf-ids in triplet-list","info":"","comments":"","x":802,"y":1377,"z":"13ea1295.46163d","wires":[]},{"id":"ccb84430.71e918","type":"configure","name":"initialize triplet-list_length, tripletListIndex, vnf-instances_length, vnfInstancesIndex","xml":"<set>\n<parameter name=\"tmp.triplet-list_length\" value= \"0\" />\n<parameter name=\"tmp.tripletListIndex\" value= \"0\" />\n<parameter name=\"tmp.vnf-instances_length\" value= \"0\" />\n<parameter name=\"tmp.vnfInstancesIndex\" value= \"0\" />\n<parameter name=\"tmp.mdsal-error-encountered\" value= \"false\"/>","comments":"","outputs":1,"x":779,"y":1106,"z":"13ea1295.46163d","wires":[[]]},{"id":"61ac05e6.c7c46c","type":"switchNode","name":"switch triplet-list.generic-vnf-id == tmp.vnf-instances...generic-vnf-id","xml":"<switch test='`$tmp.triplet-list[$tmp.tripletListIndex2].generic-vnf-id == $tmp.vnf-instances[$tmp.vnfInstancesIndex].service-data.vnf-request-information.generic-vnf-id`'>","comments":"","outputs":1,"x":1100,"y":1424,"z":"13ea1295.46163d","wires":[["9637658b.18c518","dbeec32.fac504"]]},{"id":"3acd5d10.4693f2","type":"for","name":"for each triplet-list","xml":"<for index='tmp.tripletListIndex2' start='0' end='`$tmp.triplet-list_length`' >\n","comments":"","outputs":1,"x":752,"y":1424,"z":"13ea1295.46163d","wires":[["61ac05e6.c7c46c"]]},{"id":"9637658b.18c518","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1412,"y":1424,"z":"13ea1295.46163d","wires":[["304ff5ef.83e86a"]]},{"id":"304ff5ef.83e86a","type":"configure","name":"set genericVnfIdFound to true","xml":"<set>\n<parameter name=\"genericVnfIdFound\" value= 'true' />","comments":"","outputs":1,"x":1613,"y":1424,"z":"13ea1295.46163d","wires":[[]]},{"id":"8a75505d.5e275","type":"switchNode","name":"if generic-vnf-id is not found, add it to the triplet-list","xml":"<switch test='`$genericVnfIdFound`'>","comments":"","outputs":1,"x":850,"y":1472,"z":"13ea1295.46163d","wires":[["3b4269a.ed66a96","79dde64e.97dd98"]]},{"id":"3b4269a.ed66a96","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1122,"y":1472,"z":"13ea1295.46163d","wires":[["f82770da.fca6d"]]},{"id":"e824e92f.414b48","type":"comment","name":"for each unique generic-vnf-id get model-customization-id from AAI (aai-composite-service-1030)","info":"","comments":"","x":812,"y":1612,"z":"13ea1295.46163d","wires":[]},{"id":"6c6e891c.dbd4c8","type":"get-resource","name":"get-resource generic-vnf from AAI","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"generic-vnf\"\n        key=\"generic-vnf.vnf-id = $tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id\"\n        pfx='aai.generic-vnf' local-only='false' >","comments":"","outputs":1,"x":1180.4666137695312,"y":1737.999755859375,"z":"13ea1295.46163d","wires":[["f04edd7e.e23b6","cd278dcc.c2019","1bb880d7.a21fdf"]]},{"id":"1bb880d7.a21fdf","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1408.8369750976562,"y":1698.03662109375,"z":"13ea1295.46163d","wires":[["52d0213a.4be84"]]},{"id":"f04edd7e.e23b6","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1412.3279418945312,"y":1739.61083984375,"z":"13ea1295.46163d","wires":[["79cc9835.c09578"]]},{"id":"cd278dcc.c2019","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1408.6609497070312,"y":1781.944091796875,"z":"13ea1295.46163d","wires":[["db4b07f7.81a198"]]},{"id":"95c1fb6f.8ce458","type":"for","name":"for each triplet-list","xml":"<for index='tmp.tripletListIndex' start='0' end='`$tmp.triplet-list_length`' >\n","comments":"","outputs":1,"x":1104,"y":1652,"z":"13ea1295.46163d","wires":[["8ed8396d.a616d8"]]},{"id":"8ed8396d.a616d8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1098,"y":1697,"z":"13ea1295.46163d","wires":[["6c6e891c.dbd4c8"]]},{"id":"381400.3e580c","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: Set model-customization-id for vf-module-id|generic-vnf-id: \"/>\n<parameter name=\"field3\" value='`$tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'/>\n<parameter name=\"field4\" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>\n<parameter name=\"field5\" value='`$aai.generic-vnf.model-customization-id`'/>","comments":"","outputs":1,"x":1933,"y":1737,"z":"13ea1295.46163d","wires":[[]]},{"id":"e900810b.ad8dc","type":"configure","name":"set model-customization-id in triplet-list","xml":"<set>\n<parameter name=\"`'tmp.triplet-list[' + $tmp.tripletListIndex + '].model-customization-id'`\" value= '`$aai.generic-vnf.model-customization-id`' />","comments":"","outputs":1,"x":2039,"y":1784,"z":"13ea1295.46163d","wires":[[]]},{"id":"eb7c4606.b94158","type":"for","name":"for each triplet-list entry","xml":"<for index='tmp.tripletListIndex' start='0' end='`$tmp.triplet-list_length`' >\n","comments":"","outputs":1,"x":635,"y":1956,"z":"13ea1295.46163d","wires":[["9da49d50.75e35"]]},{"id":"9da49d50.75e35","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":627,"y":1998,"z":"13ea1295.46163d","wires":[["890ce2d0.5b40b","d2ac92ce.821b3"]]},{"id":"890ce2d0.5b40b","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: vnfIdIndex:id | tripletListIndex:model-customization-id | : \"/>\n<parameter name=\"field3\" value='`$vnfIdIndex`'/>\n<parameter name=\"field4\" value='`$vnf-ids[$vnfIdIndex]`'/>\n<parameter name=\"field5\" value='`$tmp.tripletListIndex`'/>\n<parameter name=\"field6\" value='`$tmp.triplet-list[$tmp.tripletListIndex].model-customization-id`'/>","comments":"","outputs":1,"x":757,"y":1998,"z":"13ea1295.46163d","wires":[[]]},{"id":"d2ac92ce.821b3","type":"switchNode","name":"switch input vnf-ids == tmp.triplet-list.model-customization-id","xml":"<switch test='`$vnf-ids[$vnfIdIndex] == $tmp.triplet-list[$tmp.tripletListIndex].model-customization-id`'>\n","comments":"","outputs":1,"x":801,"y":2038,"z":"13ea1295.46163d","wires":[["1cb90b9d.0e11f4","9cc55fa1.79208"]]},{"id":"1cb90b9d.0e11f4","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1104,"y":2006,"z":"13ea1295.46163d","wires":[["bb8ca97b.bc0b28"]]},{"id":"9cc55fa1.79208","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1105,"y":2069,"z":"13ea1295.46163d","wires":[[]]},{"id":"bb8ca97b.bc0b28","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1231,"y":2006,"z":"13ea1295.46163d","wires":[["24e48058.7c71","7829c9e3.21a538"]]},{"id":"e5c521c1.28bbc","type":"comment","name":"MATCH for input.vnf-id and triplet-list.model-customizaiton-id","info":"","comments":"","x":1271,"y":1962,"z":"13ea1295.46163d","wires":[]},{"id":"79cc9835.c09578","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: generic-vnf not found in AAI for generic-vnf-id: \"/>\n<parameter name=\"field4\" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>","comments":"","outputs":1,"x":1545,"y":1740,"z":"13ea1295.46163d","wires":[[]]},{"id":"a7f70fe1.122d9","type":"configure","name":"initialize vnfListIndex to 0","xml":"<set>\n<parameter name=\"vnfListIndex\" value= \"0\"/>","comments":"","outputs":1,"x":246,"y":737,"z":"13ea1295.46163d","wires":[[]]},{"id":"52d0213a.4be84","type":"switchNode","name":"switch","xml":"<switch test='`$aai.generic-vnf.model-customization-id`'>","comments":"","outputs":1,"x":1546,"y":1698,"z":"13ea1295.46163d","wires":[["cf59adeb.87937","7a2c4466.a8136c"]]},{"id":"cf59adeb.87937","type":"other","name":"Blank","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1683,"y":1699,"z":"13ea1295.46163d","wires":[["94c3e99.5c6af18"]]},{"id":"7ab1a203.dde39c","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: model-customization-id is BLANK for vf-module-id|generic-vnf-id: \"/>\n<parameter name=\"field3\" value='`$tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'/>\n<parameter name=\"field4\" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>","comments":"","outputs":1,"x":1933,"y":1699,"z":"13ea1295.46163d","wires":[[]]},{"id":"7a2c4466.a8136c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1685,"y":1736,"z":"13ea1295.46163d","wires":[["d338b448.935f88"]]},{"id":"d338b448.935f88","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1804,"y":1737,"z":"13ea1295.46163d","wires":[["381400.3e580c","e900810b.ad8dc"]]},{"id":"79dde64e.97dd98","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1120,"y":1514,"z":"13ea1295.46163d","wires":[["c46507d8.82beb8"]]},{"id":"56d7b2ac.773fdc","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: generic-vnf-id is already in triplet-list, don't add it\"/>","comments":"","outputs":1,"x":1412,"y":1514,"z":"13ea1295.46163d","wires":[[]]},{"id":"c46507d8.82beb8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1262,"y":1514,"z":"13ea1295.46163d","wires":[["56d7b2ac.773fdc"]]},{"id":"f82770da.fca6d","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1264,"y":1472,"z":"13ea1295.46163d","wires":[["604f4fcd.1f225","cba2b409.58b7e8"]]},{"id":"604f4fcd.1f225","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: generic-vnf-id in NOT found in triplet-list, add it\"/>","comments":"","outputs":1,"x":1411,"y":1474,"z":"13ea1295.46163d","wires":[[]]},{"id":"a665647f.954468","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":552,"y":1558,"z":"13ea1295.46163d","wires":[["d1da650.11e1998"]]},{"id":"d1da650.11e1998","type":"for","name":"for each triplet-list entry","xml":"<for index='tmp.tripletListIndex' start='0' end='`$tmp.triplet-list_length`' >\n","comments":"","outputs":1,"x":728,"y":1558,"z":"13ea1295.46163d","wires":[["a2d8b75a.7ab8c8"]]},{"id":"a2d8b75a.7ab8c8","type":"record","name":"PRINT triplet-list","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: PRINT triplet-list BEFORE AAI | vf-module-id:generic-vnf-id:model-customization-id | \"/>\n<parameter name=\"field3\" value='`$tmp.tripletListIndex`'/>\n<parameter name=\"field4\" value='`$tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'/>\n<parameter name=\"field5\" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>\n<parameter name=\"field6\" value='`$tmp.triplet-list[$tmp.tripletListIndex].model-customization-id`'/>","comments":"","outputs":1,"x":939,"y":1558,"z":"13ea1295.46163d","wires":[[]]},{"id":"94c3e99.5c6af18","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1805,"y":1699,"z":"13ea1295.46163d","wires":[["7ab1a203.dde39c"]]},{"id":"d124590b.f69c68","type":"configure","name":"set model-customization-id in triplet-list  * TEST-ONLY *","xml":"<set>\n<parameter name=\"`'tmp.triplet-list[' + $tmp.tripletListIndex + '].model-customization-id'`\" value= \"`model-cusomization-uuid-$tmp.tripletListIndex`\" />","comments":"","outputs":1,"x":2209,"y":1699,"z":"13ea1295.46163d","wires":[[]]},{"id":"c9f071fb.6503e","type":"configure","name":"increment tmp.vnfInstancesIndex and tmp.vnf-instances_length","xml":"<set>\n<parameter name=\"tmp.vnfInstancesIndex\" value= '`$tmp.vnfInstancesIndex + 1`'/>\n<parameter name=\"tmp.vnf-instances_length\" value= '`$tmp.vnf-instances_length + 1`'/>","comments":"","outputs":1,"x":781,"y":1516,"z":"13ea1295.46163d","wires":[[]]},{"id":"dbeec32.fac504","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1413,"y":1384,"z":"13ea1295.46163d","wires":[[]]},{"id":"cbe26532.112ec8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":549,"y":1827,"z":"13ea1295.46163d","wires":[["4e6cd927.66b648"]]},{"id":"4e6cd927.66b648","type":"for","name":"for each triplet-list entry","xml":"<for index='tmp.tripletListIndex' start='0' end='`$tmp.triplet-list_length`' >\n","comments":"","outputs":1,"x":725,"y":1827,"z":"13ea1295.46163d","wires":[["94e42015.54dfc"]]},{"id":"94e42015.54dfc","type":"record","name":"PRINT triplet-list","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: PRINT triplet-list | vf-module-id:generic-vnf-id:model-customization-id | \"/>\n<parameter name=\"field3\" value='`$tmp.tripletListIndex`'/>\n<parameter name=\"field4\" value='`$tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'/>\n<parameter name=\"field5\" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>\n<parameter name=\"field6\" value='`$tmp.triplet-list[$tmp.tripletListIndex].model-customization-id`'/>","comments":"","outputs":1,"x":937,"y":1827,"z":"13ea1295.46163d","wires":[[]]},{"id":"7829c9e3.21a538","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: MATCH for input vnf-id and triplet-list.model-customizaiton-id: \"/>\n<parameter name=\"field3\" value='`$vnf-ids[$vnfIdIndex]`'/>","comments":"","outputs":1,"x":1232,"y":2044,"z":"13ea1295.46163d","wires":[[]]},{"id":"db4b07f7.81a198","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: getpathsegment-populate-from-vnfapi: unable to access AAI for generic-vnf-id: \"/>\n<parameter name=\"field4\" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>","comments":"","outputs":1,"x":1546,"y":1782,"z":"13ea1295.46163d","wires":[[]]},{"id":"e4f6f713.40c298","type":"for","name":"for each vf-module-id","xml":"<for index='vfModuleResultIndex' start='0' end='`$tmp.AnAI-data.vf-module-ids.results_length`' >\n","comments":"","outputs":1,"x":1205,"y":986,"z":"13ea1295.46163d","wires":[["2e29cfe9.5fb8d"]]},{"id":"5f4d6161.d1d83","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1020,"y":986,"z":"13ea1295.46163d","wires":[["e4f6f713.40c298","94dc95d3.e5de88"]]},{"id":"94dc95d3.e5de88","type":"set","name":"set tmp.vf-module-ids_length","xml":"<set>\n<parameter name='tmp.vf-module-ids_length' value='`$tmp.AnAI-data.vf-module-ids.results_length`' />","comments":"","x":1229,"y":1021,"z":"13ea1295.46163d","wires":[]},{"id":"568d4dc9.681e44","type":"set","name":"set invalid vf-module-id that won't resolve in MDSAL  * TEST-ONLY *","xml":"<set>\n<parameter name=\"`'tmp.vf-module-ids[' + $vf-module-ids_length + ']'`\" value='invalid-vf-module-id' />\n<parameter name='tmp.vf-module-ids_length' value='`$tmp.vf-module-ids_length + 1`' />","comments":"","x":1608,"y":1024,"z":"13ea1295.46163d","wires":[]},{"id":"9edbc24f.7c9ff","type":"save","name":"AAI custom query: get vf-module-ids","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.AnAI-data.vf-module-ids\">\n<parameter name=\"start[0]\" value=\"`'/nodes/service-instances/service-instance?service-instance-id=' + $serv-inst.service-instance-id `\" />\n<!--<parameter name=\"start[0]\" value=\"`'/business/customers/customer/bgb-customer/service-subscriptions/service-subscription/bgb-service-type/service-instances' `\" />-->\n<!--<parameter name=\"start[0]\" value=\"`'/business/customers/customer/la-customer/service-subscriptions/service-subscription/la-service-type/service-instances' `\" />-->\n<parameter name=\"start_length\" value=\"1\" />\n<parameter name=\"query\" value=\"/query/vfModule-fromServiceInstance\" />\n<!--<parameter name=\"query\" value=\"/query/vnfs-fromServiceInstance\" /> -->","comments":"","outputs":1,"x":620,"y":2564,"z":"13ea1295.46163d","wires":[["d8164ad7.bb02b8","212d7195.b42b2e","2da2f7c7.6a31c8"]]},{"id":"d8164ad7.bb02b8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":855.2380867004395,"y":2517.6664667129517,"z":"13ea1295.46163d","wires":[["d68c739a.44959"]]},{"id":"212d7195.b42b2e","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":856.3809814453125,"y":2563.3806762695312,"z":"13ea1295.46163d","wires":[["1e8358ef.3ee4d7"]]},{"id":"2da2f7c7.6a31c8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":857.6190592447915,"y":2607.904560724894,"z":"13ea1295.46163d","wires":[["c4d6e68e.266f18"]]},{"id":"d68c739a.44959","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":994.9524154663086,"y":2517.380605697632,"z":"13ea1295.46163d","wires":[["f7584659.74a708"]]},{"id":"1e8358ef.3ee4d7","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":998.666690826416,"y":2563.952173233032,"z":"13ea1295.46163d","wires":[["c8a6f155.75ce8"]]},{"id":"c4d6e68e.266f18","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":998,"y":2608,"z":"13ea1295.46163d","wires":[["ec349c31.3499e","e0c57ef.cbd068"]]},{"id":"f7584659.74a708","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to AAI custom query: vfModule-fromServiceInstance\" />\n<parameter name=\"serv-inst.api\" value= \"\"/>\n<parameter name='tmp.vf-module-ids_length' value='0' />\n<parameter name='tmp.vnf-instances_length' value='0' />\n","comments":"","outputs":1,"x":1175.52392578125,"y":2517.0949096679688,"z":"13ea1295.46163d","wires":[[]]},{"id":"c8a6f155.75ce8","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"No vfModules returned from AAI: vfModule-fromService-instance\" />\n<parameter name=\"serv-inst.api\" value= \"\"/>\n","comments":"","outputs":1,"x":1174.2381591796875,"y":2563.66650390625,"z":"13ea1295.46163d","wires":[[]]},{"id":"ec349c31.3499e","type":"for","name":"for each vf-module-id","xml":"<for index='vfModuleResultIndex' start='0' end='`$tmp.AnAI-data.vf-module-ids.results_length`' >\n","comments":"","outputs":1,"x":1183,"y":2608,"z":"13ea1295.46163d","wires":[["daa52c98.70291"]]},{"id":"e0c57ef.cbd068","type":"set","name":"set tmp.vf-module-ids_length","xml":"<set>\n<parameter name='tmp.vf-module-ids_length' value='`$tmp.AnAI-data.vf-module-ids.results_length`' />","comments":"","x":1207,"y":2643,"z":"13ea1295.46163d","wires":[]},{"id":"daa52c98.70291","type":"set","name":"set tmp.vf-module-ids","xml":"<set>\n<parameter name=\"`'tmp.vf-module-ids[' + $vfModuleResultIndex + ']'`\" value='`$tmp.AnAI-data.vf-module-ids.results[$vfModuleResultIndex].vf-module.vf-module-id`' />","comments":"","x":1440.952392578125,"y":2608.2379150390625,"z":"13ea1295.46163d","wires":[]},{"id":"cf9d4004.d81ce","type":"switchNode","name":"switch - check vnf-list length and set output.api if > 0","xml":"<switch test='`$serv-inst.vnf-list_length > 0`'>","comments":"","outputs":1,"x":325,"y":3592,"z":"13ea1295.46163d","wires":[["d27c75c1.526558"]]},{"id":"d27c75c1.526558","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":608,"y":3592,"z":"13ea1295.46163d","wires":[["f583b3e8.6485f"]]},{"id":"f583b3e8.6485f","type":"set","name":"set output serv-inst.api to VNF","xml":"<set>\n<parameter name=\"serv-inst.api\" value= \"VNF\"/>","comments":"","x":821,"y":3592,"z":"13ea1295.46163d","wires":[]},{"id":"f4d41db.52befe","type":"switchNode","name":"switch mdsal-error-encountered","xml":"<switch test='`$tmp.mdsal-error-encountered`'>\n","comments":"","outputs":1,"x":614,"y":1653,"z":"13ea1295.46163d","wires":[["88d062e4.05329","b1c6724.fe0e59"]]},{"id":"88d062e4.05329","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":830,"y":1652,"z":"13ea1295.46163d","wires":[["2684df46.e012f"]]},{"id":"b1c6724.fe0e59","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":584,"y":1741,"z":"13ea1295.46163d","wires":[["f58428cf.3a6858"]]},{"id":"2684df46.e012f","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":950,"y":1652,"z":"13ea1295.46163d","wires":[["95c1fb6f.8ce458"]]},{"id":"f58428cf.3a6858","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":726,"y":1741,"z":"13ea1295.46163d","wires":[[]]},{"id":"223f61e8.f562be","type":"for","name":"for each vf-module-id","xml":"<for index='vfModuleIndex' start='0' end='`$tmp.vf-module-ids_length`' >\n","comments":"","outputs":1,"x":564,"y":2729,"z":"13ea1295.46163d","wires":[["b8281b3d.23f5e8"]]},{"id":"b8281b3d.23f5e8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":567,"y":2768,"z":"13ea1295.46163d","wires":[["857f142a.fb6238","135b7762.c5e859","1b271514.dafa0b","6a0cc06e.d6de8","97812196.a3549"]]},{"id":"857f142a.fb6238","type":"configure","name":"set vnf-url","xml":"<set>\n<parameter name=\"tmp.vnf-url\" value=\"`'/restconf/config/VNF-API:vnfs/vnf-list/' + $tmp.vf-module-ids[$vfModuleIndex]`\" />\n","comments":"","outputs":1,"x":597,"y":2832,"z":"13ea1295.46163d","wires":[[]]},{"id":"97812196.a3549","type":"configure","name":"increment vnfListIndex and set serv-inst.vnf-list[$vnfListIndex].vnf-id","xml":"<set>\n<parameter name=\"vnfListIndex\" value= '`$vnfListIndex + 1`'/>","comments":"","outputs":1,"x":774,"y":3326,"z":"13ea1295.46163d","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-simple-match-pair.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-simple-match-pair.json
new file mode 100755
index 0000000..a8766a4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-simple-match-pair.json
@@ -0,0 +1 @@
+[{"id":"65bda5c2.5bc90c","type":"for","name":"for each runtime service-instance","xml":"<for index='serv-insts-index' start='0' end='`$serv-insts_length`' >\n","comments":"","outputs":1,"x":278.57142639160156,"y":284.82143783569336,"z":"7d72073d.c2be58","wires":[["2741d174.e3e39e"]]},{"id":"e27a3b8e.9d4848","type":"for","name":"for each vnf but the last one","xml":"<for index='left-vnf-index' start='0' end='`$serv-insts[$serv-insts-index].vnf-list_length - 1`' >\n","comments":"","outputs":1,"x":445.0000305175781,"y":617.5000095367432,"z":"7d72073d.c2be58","wires":[["f7190ea5.7406"]]},{"id":"af0525fe.01c668","type":"dgstart","name":"DGSTART","outputs":1,"x":101.25,"y":86.25,"z":"7d72073d.c2be58","wires":[["b785ba5d.087d48"]]},{"id":"b785ba5d.087d48","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":216.53569793701172,"y":126.48810863494873,"z":"7d72073d.c2be58","wires":[["42d9dbae.fd2824"]]},{"id":"42d9dbae.fd2824","type":"method","name":"method getpathsegment-simple-match-pair","xml":"<method rpc='getpathsegment-simple-match-pair' mode='sync'>\n","comments":"","outputs":1,"x":205.6786346435547,"y":167.25000190734863,"z":"7d72073d.c2be58","wires":[["65bda5c2.5bc90c"]]},{"id":"134072eb.4d70cd","type":"comment","name":"getpathsegment-simple-match-pair","info":"","comments":"","x":495.59486389160156,"y":33.83634376525879,"z":"7d72073d.c2be58","wires":[]},{"id":"f7190ea5.7406","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":659.4642868041992,"y":617.3214569091797,"z":"7d72073d.c2be58","wires":[["bedc3e3.3f436c","c72f4182.3ea57","16e18f51.a5cdc1","f28953e4.78107"]]},{"id":"bedc3e3.3f436c","type":"switchNode","name":"switch match-type","xml":"<switch test='`$match-type`'>\n","comments":"","outputs":1,"x":877.5000114440918,"y":553.7500095367432,"z":"7d72073d.c2be58","wires":[["56645880.605d18"]]},{"id":"56645880.605d18","type":"outcome","name":"network-name","xml":"<outcome value='network-name'>\n","comments":"","outputs":1,"x":1070.0000114440918,"y":555.0000095367432,"z":"7d72073d.c2be58","wires":[["20871697.ba0c8a"]]},{"id":"c72f4182.3ea57","type":"set","name":"set found-match = false","xml":"<set>\n<parameter name='found-match' value='false' />\n","comments":"","x":895.0000152587891,"y":452.50000858306885,"z":"7d72073d.c2be58","wires":[]},{"id":"20871697.ba0c8a","type":"for","name":"for each lhs vnf network","xml":"<for index='left-vnf-network-index' start='0' end='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >\n","comments":"","outputs":1,"x":1290.000015258789,"y":555.0000095367432,"z":"7d72073d.c2be58","wires":[["c688db15.cf4bf8"]]},{"id":"c688db15.cf4bf8","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1468.0357780456543,"y":555.5357418060303,"z":"7d72073d.c2be58","wires":[["c51eb642.8d9d78","a1b0332d.018ac"]]},{"id":"c51eb642.8d9d78","type":"for","name":"for each rhs vnf network","xml":"<for index='right-vnf-network-index' start='0' end='`$serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >\n","comments":"","outputs":1,"x":1652.8570938110352,"y":525.7142925262451,"z":"7d72073d.c2be58","wires":[["60372cc9.260b04"]]},{"id":"60372cc9.260b04","type":"switchNode","name":"network-names/roles match?","xml":"<switch test='`( $serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name\n    == $serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name )\n   and \n    ( $serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role\n    == $serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-role )`'>\n","comments":"","outputs":1,"x":1903.9284286499023,"y":524.4643106460571,"z":"7d72073d.c2be58","wires":[["baf9e646.2f27b8"]]},{"id":"baf9e646.2f27b8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2105.1784324645996,"y":521.9642992019653,"z":"7d72073d.c2be58","wires":[["6baf6eae.deb5f"]]},{"id":"2b6b02a5.0e6cae","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":2647.321174621582,"y":522.5000257492065,"z":"7d72073d.c2be58","wires":[["311780c.d093a8","483d3cbb.308c24","65d54fc2.e487b","cfd816dc.41df48"]]},{"id":"6baf6eae.deb5f","type":"switchNode","name":"network-names == oam?","xml":"<switch test=\"`$serv-insts[$serv-insts-index].vnf-list[$vnf-index].vnf-network-list[$vnf-network-index].network-name == 'oam'`\">\n","comments":"","outputs":1,"x":2293.928436279297,"y":521.9643106460571,"z":"7d72073d.c2be58","wires":[["3f7129fa.21d586"]]},{"id":"3f7129fa.21d586","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2488.214069366455,"y":523.392879486084,"z":"7d72073d.c2be58","wires":[["2b6b02a5.0e6cae"]]},{"id":"a1b0332d.018ac","type":"switchNode","name":"switch found-match","xml":"<switch test=\"`$found-match`\">\n","comments":"","outputs":1,"x":1637.1430740356445,"y":592.8571701049805,"z":"7d72073d.c2be58","wires":[["dd6922bb.4a566"]]},{"id":"dd6922bb.4a566","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1800.3573036193848,"y":593.0357055664062,"z":"7d72073d.c2be58","wires":[["273d1c5e.207544"]]},{"id":"273d1c5e.207544","type":"break","name":"break","xml":"<break>\n","comments":"","x":1932.8573055267334,"y":590.5357065200806,"z":"7d72073d.c2be58","wires":[]},{"id":"c7ba692a.446638","type":"set","name":"set matched-all-vnfs to true","xml":"<set>\n<parameter name='matched-all-vnfs' value='true' />\n","comments":"","x":441.0714874267578,"y":493.0357255935669,"z":"7d72073d.c2be58","wires":[]},{"id":"4b547fc5.d7ec3","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":177.50000762939453,"y":538.7500057220459,"z":"7d72073d.c2be58","wires":[["e27a3b8e.9d4848","c7ba692a.446638","68a46600.c1e868","92d75459.42edc8"]]},{"id":"16e18f51.a5cdc1","type":"switchNode","name":"switch found-match","xml":"<switch test=\"`$found-match`\">\n","comments":"","outputs":1,"x":878.7500114440918,"y":691.2500114440918,"z":"7d72073d.c2be58","wires":[["5180297f.41e0e8"]]},{"id":"5180297f.41e0e8","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1036.2500305175781,"y":690.000020980835,"z":"7d72073d.c2be58","wires":[["5c5e5241.00469c"]]},{"id":"5c5e5241.00469c","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1177.500015258789,"y":690.0000114440918,"z":"7d72073d.c2be58","wires":[["35609637.6d8bea","9e9c668f.01c1e8"]]},{"id":"35609637.6d8bea","type":"break","name":"break","xml":"<break>\n","comments":"","x":1340,"y":717.5000019073486,"z":"7d72073d.c2be58","wires":[]},{"id":"9e9c668f.01c1e8","type":"set","name":"set matched-all-vnfs to false","xml":"<set>\n<parameter name='matched-all-vnfs' value='false' />\n","comments":"","x":1397.5,"y":667.5000019073486,"z":"7d72073d.c2be58","wires":[]},{"id":"68a46600.c1e868","type":"switchNode","name":"switch matched-all-vnfs","xml":"<switch test=\"`$matched-all-vnfs`\">\n","comments":"","outputs":1,"x":428.75000762939453,"y":810.0000152587891,"z":"7d72073d.c2be58","wires":[["7516cad8.6f6904"]]},{"id":"7516cad8.6f6904","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":623.7500076293945,"y":810.0000143051147,"z":"7d72073d.c2be58","wires":[["b699b05b.3896f"]]},{"id":"b699b05b.3896f","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":783.7500076293945,"y":808.7500133514404,"z":"7d72073d.c2be58","wires":[["23f612b8.71dc7e","692960e.2996fa"]]},{"id":"92d75459.42edc8","type":"set","name":"set path-segments_length to 0","xml":"<set>\n<parameter name='serv-insts[$serv-insts-index].path-segments_length' value='0' />\n","comments":"","x":448.75000762939453,"y":541.2500095367432,"z":"7d72073d.c2be58","wires":[]},{"id":"483d3cbb.308c24","type":"set","name":"set path-segment data","xml":"<set>\n<parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />\n<parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].left-service-instance-id'\n  value='`$serv-insts[$serv-insts-index].service-instance-id`' />\n<parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].left-vnf-instance-id'\n  value='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-id`' />\n<parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].left-vf-module-id'\n  value='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />\n\n<parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].right-service-instance-id'\n  value='`$serv-insts[$serv-insts-index].service-instance-id`' />\n<parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].right-vnf-instance-id'\n  value='`$serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-id`' />\n<parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].right-vf-module-id'\n  value='`$serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />\n\n<parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].network-name'\n  value='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />\n<parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].network-role'\n  value='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />\n\n<parameter name='serv-insts[$serv-insts-index].path-segments_length'\n  value='`$serv-insts[$serv-insts-index].path-segments_length + 1`' />","comments":"","x":2860.892692565918,"y":501.7857475280762,"z":"7d72073d.c2be58","wires":[]},{"id":"692960e.2996fa","type":"set","name":"clear partial path-segments","xml":"<set>\n<parameter name='serv-insts[$serv-insts-index].path-segments.' value='' />\n","comments":"","x":1001.2500152587891,"y":837.5000133514404,"z":"7d72073d.c2be58","wires":[]},{"id":"23f612b8.71dc7e","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='matching-error' value=\"`'Not able to find matches for all vnfs of service instance ' + $serv-insts[$serv-insts-index].service-instance-id`\" />\n","comments":"","x":997.5,"y":778.7500019073486,"z":"7d72073d.c2be58","wires":[]},{"id":"311780c.d093a8","type":"set","name":"set ps-index","xml":"<set>\n<parameter name='ps-index' value='`$serv-insts[$serv-insts-index].path-segments_length`' />\n","comments":"","x":2828.571434020996,"y":455.7142906188965,"z":"7d72073d.c2be58","wires":[]},{"id":"f28953e4.78107","type":"set","name":"set right-vnf-index","xml":"<set>\n<parameter name='right-vnf-index' value='`$left-vnf-index + 1`' />\n","comments":"","x":876.2500114440918,"y":503.75000953674316,"z":"7d72073d.c2be58","wires":[]},{"id":"65d54fc2.e487b","type":"set","name":"set found-match = true","xml":"<set>\n<parameter name='found-match' value='true' />\n","comments":"","x":2861.785598754883,"y":550.3571929931641,"z":"7d72073d.c2be58","wires":[]},{"id":"cfd816dc.41df48","type":"break","name":"break","xml":"<break>\n","comments":"","x":2811.785541534424,"y":597.4999856948853,"z":"7d72073d.c2be58","wires":[]},{"id":"2741d174.e3e39e","type":"switchNode","name":"switch vnf-list_length","xml":"<switch test='`$serv-insts[$serv-insts-index].vnf-list_length`'>\n","comments":"","outputs":1,"x":532.8571968078613,"y":284.2857360839844,"z":"7d72073d.c2be58","wires":[["5def9137.1bee2","49f84e56.0d51b","72219dd0.2d9e34"]]},{"id":"5def9137.1bee2","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":711.4286117553711,"y":241.4285888671875,"z":"7d72073d.c2be58","wires":[["24321c55.9ac6c4"]]},{"id":"49f84e56.0d51b","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":710.5953598022461,"y":284.3450927734375,"z":"7d72073d.c2be58","wires":[["24321c55.9ac6c4"]]},{"id":"72219dd0.2d9e34","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":711.4285774230957,"y":327.1428337097168,"z":"7d72073d.c2be58","wires":[["4b547fc5.d7ec3"]]},{"id":"24321c55.9ac6c4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":842.8571472167969,"y":261.4285888671875,"z":"7d72073d.c2be58","wires":[["3d3e1aeb.ba6446"]]},{"id":"3d3e1aeb.ba6446","type":"set","name":"set error (for logging only)","xml":"<set>\n<parameter name='error-message' value=\"`'Matching VNFs were not found in service instance '\n  + $serv-insts[$serv-insts-index].service-instance-id`\" />\n","comments":"","x":1029.999984741211,"y":261.4285888671875,"z":"7d72073d.c2be58","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-topology-operation-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-topology-operation-create.json
new file mode 100755
index 0000000..4ec9ce0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-topology-operation-create.json
@@ -0,0 +1 @@
+[{"id":"261905ae.34eeea","type":"dgstart","name":"DGSTART","outputs":1,"x":107.14286041259766,"y":87.14286041259766,"z":"d2d67543.531a18","wires":[["169d4e88.009d51"]]},{"id":"169d4e88.009d51","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.42855834960938,"y":127.38096904754639,"z":"d2d67543.531a18","wires":[["38b07d77.4433d2"]]},{"id":"38b07d77.4433d2","type":"method","name":"method getpathsegment-topology-operation-create","xml":"<method rpc='getpathsegment-topology-operation-create' mode='sync'>\n","comments":"","outputs":1,"x":235.5714874267578,"y":168.14285469055176,"z":"d2d67543.531a18","wires":[["31ba1293.5cf0ee"]]},{"id":"e8a1dd7.47fde2","type":"comment","name":"getpathsegment-topology-operation-create","info":"","comments":"","x":501.4877166748047,"y":34.729204177856445,"z":"d2d67543.531a18","wires":[]},{"id":"31ba1293.5cf0ee","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":200.2143325805664,"y":445.3125629425049,"z":"d2d67543.531a18","wires":[["54c14222.af95ac"]]},{"id":"6ae3e475.6b9c5c","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":954.5237159729004,"y":757.0838375091553,"z":"d2d67543.531a18","wires":[]},{"id":"54c14222.af95ac","type":"get-resource","name":"get-resource FORWARDING_PATH","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from FORWARDING_PATH WHERE service_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid'\n  pfx='db.forwarding-path[]'>\n","comments":"","outputs":1,"x":419.7619209289551,"y":445.2380895614624,"z":"d2d67543.531a18","wires":[["d1e373d.5f3839","e66bd439.bc6018","8e5c1bb8.9dad08"]]},{"id":"414d5c6.00494a4","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=\"`'No paths found for service UUID ' + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid + ' in FORWARDING_PATH table'`\" />\n","comments":"","x":810.7139854431152,"y":447.7141571044922,"z":"d2d67543.531a18","wires":[]},{"id":"d1e373d.5f3839","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":637.2140197753906,"y":404.2379722595215,"z":"d2d67543.531a18","wires":[["2f9208aa.104648"]]},{"id":"e66bd439.bc6018","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":645.7854499816895,"y":447.52368545532227,"z":"d2d67543.531a18","wires":[["414d5c6.00494a4"]]},{"id":"2f9208aa.104648","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=\"System error reading FORWARDING_PATH table\" />\n","comments":"","x":810.0711860656738,"y":402.80941581726074,"z":"d2d67543.531a18","wires":[]},{"id":"a6b2786.3d17d88","type":"for","name":"for each path","xml":"<for index='path-index' start='0' end='`$db.forwarding-path_length`' >\n","comments":"","outputs":1,"x":955.8332901000977,"y":536.3690814971924,"z":"d2d67543.531a18","wires":[["bcf842fd.4c17e"]]},{"id":"4f0fc7df.0716b8","type":"call","name":"call GENERIC-RESOURCE-API:getpathsegment-create-simple-path","xml":"<call module='GENERIC-RESOURCE-API' rpc='getpathsegment-create-simple-path' mode='sync' >\n","comments":"","outputs":1,"x":1685.8332977294922,"y":490.1190814971924,"z":"d2d67543.531a18","wires":[[]]},{"id":"bcf842fd.4c17e","type":"switchNode","name":"switch path-type","xml":"<switch test='`$db.forwarding-path[$path-index].path-type`'>\n","comments":"","outputs":1,"x":1153.3332901000977,"y":535.1190814971924,"z":"d2d67543.531a18","wires":[["4db3b138.6f891","4d238377.ee1bec","c3b6216a.e9e8"]]},{"id":"4db3b138.6f891","type":"outcome","name":"VF","xml":"<outcome value='VF'>\n","comments":"","outputs":1,"x":1328.333293914795,"y":490.1190814971924,"z":"d2d67543.531a18","wires":[["4f0fc7df.0716b8"]]},{"id":"4d238377.ee1bec","type":"outcome","name":"Service Proxy","xml":"<outcome value='Service Proxy'>\n","comments":"","outputs":1,"x":1350.833293914795,"y":533.8690814971924,"z":"d2d67543.531a18","wires":[["d90f5716.b26838"]]},{"id":"c3b6216a.e9e8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1328.333293914795,"y":577.619083404541,"z":"d2d67543.531a18","wires":[["5ddfc378.55765c"]]},{"id":"d90f5716.b26838","type":"call","name":"call GENERIC-RESOURCE-API:getpathsegment-create-composite-path","xml":"<call module='GENERIC-RESOURCE-API' rpc='getpathsegment-create-composite-path' mode='sync' >\n","comments":"","outputs":1,"x":1695.5833129882812,"y":533.8690814971924,"z":"d2d67543.531a18","wires":[[]]},{"id":"5ddfc378.55765c","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 path type ' + $db.forwarding-path[$path-index].path-type + ' in FORWARDING_PATH table'`\" />\n","comments":"","x":1512.0832824707031,"y":577.6190757751465,"z":"d2d67543.531a18","wires":[]},{"id":"a367f3bf.d8f46","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/gps.log' />\n","comments":"","outputs":1,"x":948.3332710266113,"y":668.6905355453491,"z":"d2d67543.531a18","wires":[[]]},{"id":"8e5c1bb8.9dad08","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":644.9999999999999,"y":644.9999999999999,"z":"d2d67543.531a18","wires":[["9eb49ed6.de179"]]},{"id":"9eb49ed6.de179","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":781.6666793823242,"y":643.3333377838135,"z":"d2d67543.531a18","wires":[["a6b2786.3d17d88","a367f3bf.d8f46","6ae3e475.6b9c5c"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-topology-operation.json
new file mode 100755
index 0000000..305c1ca
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_getpathsegment-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"9f4cb006.78489","type":"dgstart","name":"DGSTART","outputs":1,"x":136.66665649414062,"y":91.66666412353516,"z":"f6554d5.b9be6b","wires":[["d44d8277.807cd"]]},{"id":"d44d8277.807cd","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":251.95235443115234,"y":131.9047727584839,"z":"f6554d5.b9be6b","wires":[["57c0c2b8.d3025c"]]},{"id":"57c0c2b8.d3025c","type":"method","name":"method getpathsegment-topology-operation","xml":"<method rpc='getpathsegment-topology-operation' mode='sync'>\n","comments":"","outputs":1,"x":244.09528350830078,"y":172.66665840148926,"z":"f6554d5.b9be6b","wires":[["7264d4fd.05ecac"]]},{"id":"139e2920.5be4e7","type":"comment","name":"getpathsegment-topology-operation","info":"","comments":"","x":531.0115127563477,"y":39.253007888793945,"z":"f6554d5.b9be6b","wires":[]},{"id":"7264d4fd.05ecac","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":211.1667022705078,"y":372.6935157775879,"z":"f6554d5.b9be6b","wires":[["f679b52f.6094a8","5a3f3c96.853714","e07db8c0.e91ee8","1c7f9a22.a9f146","3422629c.5018ae"]]},{"id":"f679b52f.6094a8","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":487.3808937072754,"y":511.66707706451416,"z":"f6554d5.b9be6b","wires":[]},{"id":"e07db8c0.e91ee8","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$getpathsegment-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":495.52373123168945,"y":427.3332853317261,"z":"f6554d5.b9be6b","wires":[["db1223e.1febbe","1f8af9a6.ee9b36"]]},{"id":"db1223e.1febbe","type":"outcome","name":"create","xml":"<outcome value='create'>\n","comments":"","outputs":1,"x":670.6189613342285,"y":399.7619504928589,"z":"f6554d5.b9be6b","wires":[["586901e6.f7371"]]},{"id":"1f8af9a6.ee9b36","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":669.0475082397461,"y":453.14276027679443,"z":"f6554d5.b9be6b","wires":[["cd11482c.6aabd8"]]},{"id":"5a3f3c96.853714","type":"set","name":"copy input to service-data","xml":"<set>\n<parameter name='service-data.sdnc-request-header.' value='`$getpathsegment-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.request-information.' value='`$getpathsegment-topology-operation-input.request-information.`' />\n<parameter name='service-data.service-information.' value='`$getpathsegment-topology-operation-input.service-information.`' />\n<parameter name='service-data.service-request-input.' value='`$getpathsegment-topology-operation-input.service-request-input.`' />\n","comments":"","x":526.4880561828613,"y":347.8929252624512,"z":"f6554d5.b9be6b","wires":[]},{"id":"cd11482c.6aabd8","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=\"`$getpathsegment-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n","comments":"","x":845.2379531860352,"y":453.14282512664795,"z":"f6554d5.b9be6b","wires":[]},{"id":"1c7f9a22.a9f146","type":"call","name":"call GENERIC-RESOURCE-API:validate-getpathsegment-input","xml":"<call module='GENERIC-RESOURCE-API' rpc='validate-getpathsegment-input' mode='sync' >\n","comments":"","outputs":1,"x":642.416633605957,"y":299.7143449783325,"z":"f6554d5.b9be6b","wires":[[]]},{"id":"586901e6.f7371","type":"call","name":"call GENERIC-RESOURCE-API:getpathsegment-topology-operation-create","xml":"<call module='GENERIC-RESOURCE-API' rpc='getpathsegment-topology-operation-create' mode='sync' >\n","comments":"","outputs":1,"x":1039.7618141174316,"y":399.33341121673584,"z":"f6554d5.b9be6b","wires":[[]]},{"id":"3422629c.5018ae","type":"execute","name":"execute readProperties","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":518.3333282470703,"y":249.99998664855957,"z":"f6554d5.b9be6b","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_gw-vfmodule-update.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_gw-vfmodule-update.json
new file mode 100644
index 0000000..4732ab3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_gw-vfmodule-update.json
@@ -0,0 +1 @@
+[{"id":"3806658c.26497a","type":"dgstart","name":"DGSTART","outputs":1,"x":147.88333129882812,"y":88.88333129882812,"z":"bc96058f.0be17","wires":[["45fcd240.2d898c"]]},{"id":"45fcd240.2d898c","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":244.12141036987305,"y":149.8357219696045,"z":"bc96058f.0be17","wires":[["40e26cd9.3c35a4"]]},{"id":"40e26cd9.3c35a4","type":"method","name":"gw-vfmodule-update","xml":"<method rpc='gw-vfmodule-update' mode='sync'>\n","comments":"","outputs":1,"x":128.0382194519043,"y":243.07376194000244,"z":"bc96058f.0be17","wires":[["5bd01702.fa9438"]]},{"id":"5bd01702.fa9438","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":244.8833122253418,"y":342.88333225250244,"z":"bc96058f.0be17","wires":[["d48c04fa.2c4798","624df7c1.860c6","882c4631.3dd488","b22dc7b6.0678d"]]},{"id":"77492a71.217b24","type":"execute","name":"generate vnf service-info url - vnf-d","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.vnf-api-url1`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vnf-api-url2\"/>\n    <parameter name=\"target\" value=\"{vnf-id}\"/>\n    <parameter name=\"replacement\" value=\"`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.gw-vnf-id`\"/>\n\n","comments":"","outputs":1,"x":2004.1333923339844,"y":1512.883544921875,"z":"bc96058f.0be17","wires":[[]]},{"id":"9c97aad1.b5c07","type":"execute","name":"execute RestApiCallNode - PUT service into service","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.services.vnf.vfmodule.templatefile`\" />\n   <!--\n   <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vnf-api-url3`' />\n   -->\n   <parameter name='restapiUrl' value='`$tmp.vf-module-object-path`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-vfmodule-vgw\" />\n\n","comments":"","outputs":1,"x":1590.8832702636719,"y":2043.8835144042969,"z":"bc96058f.0be17","wires":[["b5a49632.9fe928"]]},{"id":"5d685b37.cddc0c","type":"execute","name":"generate vnf service-info url - service-instance-id","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.service.vnf.vfmodule-resource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vnf-api-url1\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.service-data.service-information.service-instance-id`\"/>\n","comments":"","outputs":1,"x":2049.6333923339844,"y":1470.133544921875,"z":"bc96058f.0be17","wires":[[]]},{"id":"492fb368.715544","type":"execute","name":"generate vnf service-info url - vf-module-id","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.vnf-api-url2`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vnf-api-url3\"/>\n    <parameter name=\"target\" value=\"{vf-module-id}\"/>\n    <parameter name=\"replacement\" value=\"`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.gw-vfmodule-id`\"/>\n\n","comments":"","outputs":1,"x":2028.3833923339844,"y":1553.883544921875,"z":"bc96058f.0be17","wires":[[]]},{"id":"52ea6240.b2f2dc","type":"set","name":"set tmp.vgw.vg_mux_tunnel.vni","xml":"<set>\n<!--\n<parameter name='tmp.service.vnf.vf-module.vg-mux-tunnel-vni' value='`$input.vni`' />\n-->\n<parameter name='tmp.service.vnf.vf-module.vg-mux-tunnel-vni' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[0].allotted-resource-data[0].tunnelxconn-topology[0].tunnelxconn-assignments[0].vni`' />\n<parameter name='tmp.service.vnf.vf-module.vg-lan-ip' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[0].allotted-resource-data[0].tunnelxconn-topology[0].tunnelxconn-assignments[0].vg-ip`' />\n\n\n\n","comments":"","x":1582.1333923339844,"y":1631.383544921875,"z":"bc96058f.0be17","wires":[]},{"id":"77b6a8fb.175e6","type":"set","name":"set tmp.service.vnf.vf-module-id","xml":"<set>\n<parameter name='tmp.service.vnf.vf-module.vf-module-id' value='9aa4ede4-c639-48c4-9386-74c9ff87f8e3' />\n<parameter name='brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.gw-vfmodule-id' value='9aa4ede4-c639-48c4-9386-74c9ff87f8e3' />","comments":"","x":2044.6333312988281,"y":1310.9667358398438,"z":"bc96058f.0be17","wires":[]},{"id":"4601a28d.aedf2c","type":"set","name":"set tmp.service-data.vnf-information.vnf-id","xml":"<set>\n<parameter name='tmp.service-data.vnf-information.vnf-id' value='3a3332d1-12ad-4709-ac81-ba32b304a462' />\n<parameter name='brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.gw-vnf-id' value='3a3332d1-12ad-4709-ac81-ba32b304a462' />\n","comments":"","x":2010.8833312988281,"y":1270.9667358398438,"z":"bc96058f.0be17","wires":[]},{"id":"5b7201c1.a4887","type":"set","name":"set tmp.service-data.service-information.service-instance-id","xml":"<set>\n<parameter name='tmp.service-data.service-information.service-instance-id' value='6e34b9fb-9ec1-4c95-9e12-0326c434c623' />\n","comments":"","x":2059.633270263672,"y":1215.9665832519531,"z":"bc96058f.0be17","wires":[]},{"id":"5bbba697.75684","type":"set","name":"set tmp.service.vnf.vf-module-id","xml":"<set>\n<parameter name='tmp.restapi.service.vnf.vfmodule-resource' value='`$prop.restapi.service.vnf.vfmodule-resource`' />\n","comments":"","x":1564.6333312988281,"y":1349.7166748046875,"z":"bc96058f.0be17","wires":[]},{"id":"dfa8d8c7.ea1108","type":"execute","name":"execute Propertis gen-res-api-dg","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":1572.1332092285156,"y":1140.9667358398438,"z":"bc96058f.0be17","wires":[[]]},{"id":"b5a49632.9fe928","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1872.1332702636719,"y":2095.133514404297,"z":"bc96058f.0be17","wires":[["80ab6de6.18d81"]]},{"id":"80ab6de6.18d81","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Failed on PUT vf-module parameters to MD0SAL' />\n","comments":"","x":2062.133270263672,"y":2103.883514404297,"z":"bc96058f.0be17","wires":[]},{"id":"b22dc7b6.0678d","type":"set","name":"set  consuming service-instance","xml":"<set>\n<!--\n<parameter name='tmp.brg-macaddress' value='fa:16:3e:8f:ea:68' />\n\n\n<parameter name='tmp.consuming-service-instance-id' value='b3cb7040-f7a5-4beb-ad2f-2a893b7d374b' />\nservice-data.service-topology.service-topology-identifier.service-instance-id\n\n-->\n<parameter name='tmp.brg-mac-address-match' value=\"`'VGW2BRG-' + $tmp.brg-macaddress`\"/>\n<parameter name='tmp.consuming-service-instance-id' value='`$service-data.service-topology.service-topology-identifier.service-instance-id`' />\n","comments":"","x":512.8833923339844,"y":352.9667663574219,"z":"bc96058f.0be17","wires":[]},{"id":"237b9de9.473f7a","type":"get-resource","name":"get-resource vnfs","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='preload-vnfs' pfx='tmp.preloadvnfdata' >\n","comments":"","outputs":1,"x":781.1888732910156,"y":686.63330078125,"z":"bc96058f.0be17","wires":[[]]},{"id":"dc53e24a.603c38","type":"for","name":"for tmp.vnfs","xml":"<for index='vnfidx' start='0' end='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list_length`' >\n\n\n","comments":"","outputs":1,"x":753.0777587890625,"y":773.855712890625,"z":"bc96058f.0be17","wires":[["4ae6c68e.7a2a08"]]},{"id":"acf3fd29.776b08","type":"switchNode","name":"switch parameter name","xml":"<switch test='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].vnf-name == $tmp.brg-mac-address-match`'>\n\n\n","comments":"","outputs":1,"x":1063.0776062011719,"y":804.2444152832031,"z":"bc96058f.0be17","wires":[["f475d495.514cd"]]},{"id":"f475d495.514cd","type":"success","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1221.7998352050781,"y":950.3833312988281,"z":"bc96058f.0be17","wires":[["de288eb6.69fc3"]]},{"id":"de288eb6.69fc3","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1136.8833312988281,"y":1410.3833312988281,"z":"bc96058f.0be17","wires":[["a6b3e3e9.90a84","dfa8d8c7.ea1108","5bbba697.75684","d86083dc.da76d","a38f37f9.e78618","b822a12f.b44248","68a4fb65.a2c4c4","a19da93c.73dc5","52ea6240.b2f2dc","7c3272df.84a3ac"]]},{"id":"36f176a8.742e0a","type":"comment","name":"vnfidx ","info":"","comments":"","x":1383.1332702636719,"y":824.1333618164062,"z":"bc96058f.0be17","wires":[]},{"id":"a6b3e3e9.90a84","type":"for","name":"for each vnf parameter copy to vf_module_parameter","xml":"<for index='preloadIdx' start='0' end='`$tmp.endLoop1`'>\n<!--\n\n     \"preload-data\": {\n          \"vnf-topology-information\": {\n            \"vnf-parameters\": [\n            \n            -->\n","comments":"","outputs":1,"x":1639.3832702636719,"y":1019.1333312988281,"z":"bc96058f.0be17","wires":[["140e457f.d81f6b"]]},{"id":"a69e097b.7c0ed8","type":"set","name":"set name/values","xml":"<set>\n<parameter name='tmp.vfmodule.param[$preloadIdx].name'  value='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters[$preloadIdx].vnf-parameter-name`' />\n<parameter name='tmp.vfmodule.param[$preloadIdx].value' value='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters[$preloadIdx].vnf-parameter-value`' />","comments":"","x":2144.5223083496094,"y":1088.8555908203125,"z":"bc96058f.0be17","wires":[]},{"id":"d48c04fa.2c4798","type":"get-resource","name":"get-resource tunnelxcon-allotted-resources","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='GENERIC-RESOURCE-API'    \n         key='tunnelxconn-allotted-resources/' pfx='tmp.txconns' >\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t","comments":"","outputs":1,"x":561.2468872070312,"y":455.7015380859375,"z":"bc96058f.0be17","wires":[["12acbf73.3ab131"]]},{"id":"5b0bb137.e67718","type":"for","name":"for tmp.xconns.tunnelxconn-allotted-resoruces.tunnelxonn-alloted-resource[]","xml":"<for index='txidx' start='0' end='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource_length`' >\n\n\n","comments":"","outputs":1,"x":1032.3378295898438,"y":478.7923889160156,"z":"bc96058f.0be17","wires":[["34d79c6a.7822fc"]]},{"id":"e278c805.0d6108","type":"switchNode","name":"switch consuming-service-instance-id","xml":"<switch test='`$tmp.test1 == $tmp.consuming-service-instance-id`'>","comments":"","outputs":1,"x":1417.8833312988281,"y":610.6257019042969,"z":"bc96058f.0be17","wires":[["f19bb37c.7732c8"]]},{"id":"f19bb37c.7732c8","type":"success","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1586.3833312988281,"y":680.9438781738281,"z":"bc96058f.0be17","wires":[["2ce4d935.c2c536"]]},{"id":"14ac448b.1e69bb","type":"set","name":"set thisIsVGW","xml":"<set>\n<parameter name='tmp.thisIsVGW' value='true' />\n","comments":"","x":1933.70166015625,"y":835.4288330078125,"z":"bc96058f.0be17","wires":[]},{"id":"624df7c1.860c6","type":"set","name":"set thisIsVGW false","xml":"<set>\n<parameter name='tmp.thisIsVGW' value='false' />\n","comments":"","x":481.7015075683594,"y":405.7015075683594,"z":"bc96058f.0be17","wires":[]},{"id":"882c4631.3dd488","type":"switchNode","name":"switch thsIsVGW","xml":"<switch test='`$tmp.thisIsVGW`'>\n","comments":"","outputs":1,"x":293.2469787597656,"y":514.2470397949219,"z":"bc96058f.0be17","wires":[["471004f2.b1042c","410482e7.5c2ae4"]]},{"id":"471004f2.b1042c","type":"other","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":315.97424038973713,"y":596.0651494806463,"z":"bc96058f.0be17","wires":[["18c6a218.701ff6"]]},{"id":"18c6a218.701ff6","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":497.5580749511719,"y":784.1770324707031,"z":"bc96058f.0be17","wires":[["237b9de9.473f7a","dc53e24a.603c38"]]},{"id":"4ae6c68e.7a2a08","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":853.5500793457031,"y":838.9945373535156,"z":"bc96058f.0be17","wires":[["acf3fd29.776b08","f1bf508c.bd629"]]},{"id":"34d79c6a.7822fc","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1186.8833312988281,"y":542.3277893066406,"z":"bc96058f.0be17","wires":[["e278c805.0d6108","bb4386f8.ea48b8"]]},{"id":"140e457f.d81f6b","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1942.2999572753906,"y":1051.0778198242188,"z":"bc96058f.0be17","wires":[["a69e097b.7c0ed8"]]},{"id":"12acbf73.3ab131","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":646.5499979654946,"y":506.1055535210503,"z":"bc96058f.0be17","wires":[["5b0bb137.e67718"]]},{"id":"bb4386f8.ea48b8","type":"set","name":"set test consuming service id tunnelxconn-allotted-resource-identifiers.consuming-service-instance-id","xml":"<set>\n<parameter name='tmp.test1' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$txidx].allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.consuming-service-instance-id`' />\n<!--\nthis is null\n<parameter name='tmp.test2' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource-data[$txidx].tunnelxconn-topology[0].allotted-resource-identifiers[0].consuming-service-instance-id`' />\n-->","comments":"","x":1654.88330078125,"y":543.8832702636719,"z":"bc96058f.0be17","wires":[]},{"id":"f1bf508c.bd629","type":"set","name":"set test3","xml":"<set>\n<parameter name='tmp.test3' value='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].vnf-name`' />\n<parameter name='tmp.test4' value='`$tmp.brg-mac-address-match`'/>\n\n\n","comments":"","x":1014.8833312988281,"y":729.8833312988281,"z":"bc96058f.0be17","wires":[]},{"id":"d86083dc.da76d","type":"set","name":"set length of for  endLoop1","xml":"<set>\n<parameter name='tmp.endLoop1' value='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters_length`' />","comments":"","x":1553.1333312988281,"y":945.3833312988281,"z":"bc96058f.0be17","wires":[]},{"id":"a38f37f9.e78618","type":"set","name":"set vf-module-object-path","xml":"<set>\n<parameter name='tmp.vf-module-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $service-data.service-topology.service-topology-identifier.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 + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id \n + '/'`\"/>\n","comments":"","x":1489.3833312988281,"y":1410.3833312988281,"z":"bc96058f.0be17","wires":[]},{"id":"b822a12f.b44248","type":"set","name":"copy  vf-module-parameters","xml":"<set>\n<!--\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param.'\n\n                 service-data.vnfs.vnf\\[0\\].       vnf-data.vf-modules.vf-module\\[0\\]             .vf-module-data.vf-module-topology.vf-module-parameters.param.\n   value='$tmp.vfmodule.' />\n-->\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.'\n   value='$tmp.vfmodule.' />","comments":"","x":1526.8833923339844,"y":1816.1332702636719,"z":"bc96058f.0be17","wires":[]},{"id":"a429838.1a19f","type":"execute","name":"execute print context","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bdf-gw-vfmodule.log' />\n","comments":"","outputs":1,"x":1463.1333923339844,"y":1871.6332702636719,"z":"bc96058f.0be17","wires":[[]]},{"id":"68a4fb65.a2c4c4","type":"set","name":"set tmp.vfmodule.param_length","xml":"<set>\n<parameter name='tmp.vfmodule.param_length' value='`$tmp.endLoop1`' />\n","comments":"","x":1573.1335144042969,"y":1082.8833312988281,"z":"bc96058f.0be17","wires":[]},{"id":"42e73536.d72f4c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":1214.3833312988281,"y":1630.3833312988281,"z":"bc96058f.0be17","wires":[]},{"id":"a19da93c.73dc5","type":"for","name":"for paramIdx to set VNI","xml":"<for index='paramIdx' start='0' end='`$tmp.vfmodule.param_length`' >\n","comments":"","outputs":1,"x":1561.8833312988281,"y":1730.3833312988281,"z":"bc96058f.0be17","wires":[["7d547fc4.1adf08"]]},{"id":"82836bf9.38d2b","type":"switchNode","name":"switch parameter name vg-mux-tunnel-vni","xml":"<switch test='`$tmp.vfmodule.param[$paramIdx].name == $tmp.vg-mux-tunnel-vni-match`'>","comments":"","outputs":1,"x":2059.383331298828,"y":1799.1333312988281,"z":"bc96058f.0be17","wires":[["45b12bfc.a4b0c4"]]},{"id":"45b12bfc.a4b0c4","type":"success","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2376.883331298828,"y":1826.6333312988281,"z":"bc96058f.0be17","wires":[["c13aaa81.4af1"]]},{"id":"c13aaa81.4af1","type":"set","name":"set vni in tmp.vfmodule.param","xml":"<set>\n<parameter name='$tmp.vfmodule.param[$paramIdx].value' value='`$tmp.vg-vgmux-tunnel-vni`' />\n\n<!--\n<parameter name='$tmp.vfmodule.param[$paramIdx].value' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vni`' />\n-->","comments":"","x":2589.383331298828,"y":1864.1333312988281,"z":"bc96058f.0be17","wires":[]},{"id":"7c3272df.84a3ac","type":"set","name":"set switch test string","xml":"<set>\n<!--\n<parameter name='tmp.service.vnf.vf-module.vg-mux-tunnel-vni' value='`$input.vni`' />\n-->\n<parameter name='tmp.vg-mux-tunnel-vni-match' value='vg_vgmux_tunnel_vni' />\n<parameter name='tmp.vg-lan-ip-match' value='vgw_private_ip_0' />\n\n\n\n\n","comments":"","x":1551.8833312988281,"y":1680.3833312988281,"z":"bc96058f.0be17","wires":[]},{"id":"7d547fc4.1adf08","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1768.1333312988281,"y":1725.3833312988281,"z":"bc96058f.0be17","wires":[["82836bf9.38d2b","3a91d5b1.ed18e2"]]},{"id":"93a3aef6.595498","type":"set","name":"set to see tmpvfmodule.param[].name","xml":"<set>\n<!--\n<parameter name='tmp.service.vnf.vf-module.vg-mux-tunnel-vni' value='`$input.vni`' />\n-->\n<parameter name='tmp.test.param[$paramIdx].name' value='`$tmp.vfmodule.param[$paramIdx].name`' />\n\n\n\n","comments":"","x":2046.8833923339844,"y":1717.8833312988281,"z":"bc96058f.0be17","wires":[]},{"id":"32d9e6bc.6b7b1a","type":"comment","name":"let md-sal helper save data so no need for the RESTAPICAll Node","info":"","comments":"","x":1559.3832397460938,"y":1970.3833312988281,"z":"bc96058f.0be17","wires":[]},{"id":"255c43c1.03152c","type":"comment","name":" using path from calling DG - these nodes for testing","info":"","comments":"","x":2041.8833312988281,"y":1421.6333312988281,"z":"bc96058f.0be17","wires":[]},{"id":"d31c84e2.95ef98","type":"set","name":"set MACADDRESS fa:16:3e:8f:ea:68 ","xml":"<set>\n<parameter name='tmp.brg-macaddress' value='fa:16:3e:8f:ea:68' />\n\n","comments":"","x":538.88330078125,"y":253.88333129882812,"z":"bc96058f.0be17","wires":[]},{"id":"90adc253.a591d","type":"set","name":"set VGW2BRG-MACADDRESs & consuming service-instance","xml":"<set>\n<parameter name='tmp.brg-mac-address-match' value=\"`'VGW2BRG-' + $tmp.brg-macaddress`\"/>\n<parameter name='tmp.consuming-service-instance-id' value='`$service-data.service-topology.service-topology-identifier.service-instance-id`' />\n\n<!--\n<parameter name='tmp.brg-macaddress' value='fa:16:3e:8f:ea:68' />\n<parameter name='tmp.brg-mac-address-match' value=\"`'VGW2BRG-' + $tmp.brg-macaddress`\"/>\n-->\n<!--\n<parameter name='tmp.consuming-service-instance-id' value='b3cb7040-f7a5-4beb-ad2f-2a893b7d374b' />\nservice-data.service-topology.service-topology-identifier.service-instance-id\n\n-->\n","comments":"","x":2075.88330078125,"y":726.88330078125,"z":"bc96058f.0be17","wires":[]},{"id":"2ce4d935.c2c536","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1731.8833312988281,"y":710.8833312988281,"z":"bc96058f.0be17","wires":[["14ac448b.1e69bb","90adc253.a591d","c883d2d4.0b377","7e472b82.55e40c"]]},{"id":"c883d2d4.0b377","type":"set","name":"set MACADDRESS tmp.txconcs...brg-wan-mac-address","xml":"<set>\n<parameter name='tmp.brg-macaddress' \n      value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.brg-wan-mac-address`' />\n\n","comments":"","x":2049.883331298828,"y":664.8833312988281,"z":"bc96058f.0be17","wires":[]},{"id":"410482e7.5c2ae4","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":255.88333129882812,"y":754.8833312988281,"z":"bc96058f.0be17","wires":[["c0e9ce09.8d6c28"]]},{"id":"90cc4165.e57f28","type":"returnFailure","name":"return failure Did not find vGW Preload","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Did not find vGW Preload' />\n","comments":"","x":513.8833312988281,"y":920.8833312988281,"z":"bc96058f.0be17","wires":[]},{"id":"c0e9ce09.8d6c28","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":267.8833312988281,"y":832.8833312988281,"z":"bc96058f.0be17","wires":[["90cc4165.e57f28"]]},{"id":"ffcaa277.9c9268","type":"execute","name":"execute print context","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bdf-gw-vfmodule.failure.log' />\n","comments":"","outputs":1,"x":463.8833312988281,"y":869.8833312988281,"z":"bc96058f.0be17","wires":[[]]},{"id":"3a91d5b1.ed18e2","type":"switchNode","name":"switch parameter name vg-mux-tunnel-vni","xml":"<switch test='`$tmp.vfmodule.param[$paramIdx].name == $tmp.vg-lan-ip-match`'>","comments":"","outputs":1,"x":2052.883331298828,"y":1863.8833312988281,"z":"bc96058f.0be17","wires":[["84f06b0c.c3c108"]]},{"id":"84f06b0c.c3c108","type":"success","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2370.383331298828,"y":1891.3833312988281,"z":"bc96058f.0be17","wires":[["646b48f6.2f6d28"]]},{"id":"646b48f6.2f6d28","type":"set","name":"set lan-ip[ in tmp.vfmodule.param","xml":"<set>\n<parameter name='$tmp.vfmodule.param[$paramIdx].value' value='`$tmp.vg-ip`' />\n<!--\n<parameter name='$tmp.vfmodule.param[$paramIdx].value' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip`' />\n-->","comments":"","x":2582.883331298828,"y":1928.8833312988281,"z":"bc96058f.0be17","wires":[]},{"id":"5231bd00.7e3c04","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":1804.8833312988281,"y":1865.8833312988281,"z":"bc96058f.0be17","wires":[]},{"id":"7e472b82.55e40c","type":"set","name":"set VNI and VG-IP","xml":"<set>\n<parameter name='tmp.vg-vgmux-tunnel-vni' \n    value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$txidx].allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vni`' />\n<parameter name='tmp.vg-ip' \n    value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$txidx].allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip`' />\n","comments":"","x":1941.716796875,"y":785.88330078125,"z":"bc96058f.0be17","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_manage-ipaddr-assignment.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_manage-ipaddr-assignment.json
new file mode 100644
index 0000000..952535f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_manage-ipaddr-assignment.json
@@ -0,0 +1,211 @@
+[
+  {
+    "id":"d81e50c6.10867",
+    "type":"dgstart",
+    "name":"DGSTART",
+    "outputs":1,
+    "x":186,
+    "y":168,
+    "z":"ee2bc85b.58f498",
+    "wires":[
+      [
+        "794b3924.54ea18"
+      ]
+    ]
+  },
+  {
+    "id":"794b3924.54ea18",
+    "type":"service-logic",
+    "name":"GENERIC-RESOURCE-API ${project.version}",
+    "module":"GENERIC-RESOURCE-API",
+    "version":"${project.version}",
+    "comments":"Reserve/release IP",
+    "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":369,
+    "y":257,
+    "z":"ee2bc85b.58f498",
+    "wires":[
+      [
+        "3876df34.9cbea"
+      ]
+    ]
+  },
+  {
+    "id":"3876df34.9cbea",
+    "type":"method",
+    "name":"manage-ipaddr-assignment",
+    "xml":"<method rpc='manage-ipaddr-assignment' mode='sync'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":471,
+    "y":329,
+    "z":"ee2bc85b.58f498",
+    "wires":[
+      [
+        "255e6973.efa936"
+      ]
+    ]
+  },
+  {
+    "id":"eac5864f.de8f18",
+    "type":"switchNode",
+    "name":"switch $tmp.manageIpaddr.action",
+    "xml":"<switch test='`$tmp.manageIpaddr.action`'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":945,
+    "y":362,
+    "z":"ee2bc85b.58f498",
+    "wires":[
+      [
+        "980f17d0.c10a28",
+        "2fb21d9f.e9b6e2"
+      ]
+    ]
+  },
+  {
+    "id":"980f17d0.c10a28",
+    "type":"outcome",
+    "name":"reserve",
+    "xml":"<outcome value='reserve'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1227,
+    "y":361,
+    "z":"ee2bc85b.58f498",
+    "wires":[
+      [
+        "ab295c0b.78142"
+      ]
+    ]
+  },
+  {
+    "id":"ab295c0b.78142",
+    "type":"block",
+    "name":"block : atomic",
+    "xml":"<block atomic='true'>",
+    "atomic":"true",
+    "comments":"",
+    "outputs":1,
+    "x":1399,
+    "y":363,
+    "z":"ee2bc85b.58f498",
+    "wires":[
+      [
+        "8fd400db.0432d"
+      ]
+    ]
+  },
+  {
+    "id":"8fd400db.0432d",
+    "type":"get-resource",
+    "name":"get-resource IPADDR from IPV4_ADDRESS_POOL",
+    "xml":"<get-resource plugin='`$tmp.sql.plugin`' resource='IPADDR' key=\"SELECT min(ipv4_addr) ip from IPV4_ADDRESS_POOL where universe = $tmp.manageIpaddr.pool and status='AVAILABLE'\" pfx=\"tmp.manageIpaddr\" >\n",
+    "comments":"",
+    "outputs":1,
+    "x":1680,
+    "y":364,
+    "z":"ee2bc85b.58f498",
+    "wires":[
+      [
+        "7fb7948a.ed39dc"
+      ]
+    ]
+  },
+  {
+    "id":"255e6973.efa936",
+    "type":"block",
+    "name":"block : atomic",
+    "xml":"<block atomic='true'>",
+    "atomic":"true",
+    "comments":"",
+    "outputs":1,
+    "x":703,
+    "y":328,
+    "z":"ee2bc85b.58f498",
+    "wires":[
+      [
+        "d5fece9.ea5c63",
+        "eac5864f.de8f18"
+      ]
+    ]
+  },
+  {
+    "id":"d5fece9.ea5c63",
+    "type":"set",
+    "name":"set sql plugin name",
+    "xml":"<set>\n<parameter name='tmp.sql.plugin' value='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' />\n",
+    "comments":"",
+    "x":910,
+    "y":287,
+    "z":"ee2bc85b.58f498",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"7fb7948a.ed39dc",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1952,
+    "y":362,
+    "z":"ee2bc85b.58f498",
+    "wires":[
+      [
+        "7a9dcfdb.a10f9"
+      ]
+    ]
+  },
+  {
+    "id":"7a9dcfdb.a10f9",
+    "type":"save",
+    "name":"Mark ip address reserved",
+    "xml":"<save plugin='`$tmp.sql.plugin`' resource='IPADDR' key=\"UPDATE IPV4_ADDRESS_POOL set status='RESERVED' where universe='VGW' and ipv4_addr = $tmp.manageIpaddr.ip\" force='false'>\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":2169,
+    "y":364,
+    "z":"ee2bc85b.58f498",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"2fb21d9f.e9b6e2",
+    "type":"outcome",
+    "name":"release",
+    "xml":"<outcome value='release'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1225,
+    "y":428,
+    "z":"ee2bc85b.58f498",
+    "wires":[
+      [
+        "a8f883cf.1ee52"
+      ]
+    ]
+  },
+  {
+    "id":"a8f883cf.1ee52",
+    "type":"save",
+    "name":"Mark ipaddress available",
+    "xml":"<save plugin='`$tmp.sql.plugin`' resource='IPADDR' key=\"UPDATE IPV4_ADDRESS_POOL set status='AVAILABLE' where universe='VGW' and ipv4_addr = $tmp.manageIpaddr.ip\" force='false'>\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":1411,
+    "y":431,
+    "z":"ee2bc85b.58f498",
+    "wires":[
+      [
+
+      ]
+    ]
+  }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_manage-vni-assignment.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_manage-vni-assignment.json
new file mode 100644
index 0000000..8d176d4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_manage-vni-assignment.json
@@ -0,0 +1 @@
+[{"id":"afcb1bdd.0a5d5","type":"dgstart","name":"DGSTART","outputs":1,"x":157,"y":64,"z":"53860ef1.ddc3b8","wires":[["f5eef8dc.e02d38"]]},{"id":"f5eef8dc.e02d38","type":"service-logic","name":"GENERIC-RESOURCE-API ${project.version}","module":"GENERIC-RESOURCE-API","version":"${project.version}","comments":"Reserve/release VNI","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":340,"y":153,"z":"53860ef1.ddc3b8","wires":[["59290e08.4765c"]]},{"id":"59290e08.4765c","type":"method","name":"manage-vni-assignment","xml":"<method rpc='manage-vni-assignment' mode='sync'>\n","comments":"","outputs":1,"x":442,"y":225,"z":"53860ef1.ddc3b8","wires":[["82801607.2fe58"]]},{"id":"c6177ede.bbfd7","type":"switchNode","name":"switch $tmp.manageVni.action","xml":"<switch test='`$tmp.manageVni.action`'>\n","comments":"","outputs":1,"x":916,"y":258,"z":"53860ef1.ddc3b8","wires":[["652560e0.4b8448","962baf42.39bb9"]]},{"id":"652560e0.4b8448","type":"outcome","name":"reserve","xml":"<outcome value='reserve'>\n","comments":"","outputs":1,"x":1198,"y":257,"z":"53860ef1.ddc3b8","wires":[["525e1ab8.dd8ed4"]]},{"id":"525e1ab8.dd8ed4","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1370,"y":259,"z":"53860ef1.ddc3b8","wires":[["f1ee91fd.542a6"]]},{"id":"f1ee91fd.542a6","type":"get-resource","name":"get-resource VNI from VLAN_ID_POOL","xml":"<get-resource plugin='`$tmp.sql.plugin`' resource='VNI' key=\"SELECT min(vlan_id) vni from VLAN_ID_POOL where purpose = $tmp.manageVni.pool and status='AVAILABLE'\" pfx=\"tmp.manageVni\" >\n","comments":"","outputs":1,"x":1651,"y":260,"z":"53860ef1.ddc3b8","wires":[["4142f9d2.e06a9"]]},{"id":"82801607.2fe58","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":674,"y":224,"z":"53860ef1.ddc3b8","wires":[["93060fb5.07fc8","c6177ede.bbfd7"]]},{"id":"93060fb5.07fc8","type":"set","name":"set sql plugin name","xml":"<set>\n<parameter name='tmp.sql.plugin' value='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' />\n","comments":"","x":881,"y":183,"z":"53860ef1.ddc3b8","wires":[]},{"id":"4142f9d2.e06a9","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1923,"y":258,"z":"53860ef1.ddc3b8","wires":[["ccc94438.589708"]]},{"id":"ccc94438.589708","type":"save","name":"Mark vni reserved","xml":"<save plugin='`$tmp.sql.plugin`' resource='VNI' key=\"UPDATE VLAN_ID_POOL set status='RESERVED' where purpose='VNI' and vlan_id = $tmp.manageVni.vni\" force='false'>\n\n","comments":"","outputs":1,"x":2105,"y":259,"z":"53860ef1.ddc3b8","wires":[[]]},{"id":"962baf42.39bb9","type":"outcome","name":"release","xml":"<outcome value='release'>\n","comments":"","outputs":1,"x":1196,"y":324,"z":"53860ef1.ddc3b8","wires":[["3b51720c.663216"]]},{"id":"3b51720c.663216","type":"save","name":"Mark vni available","xml":"<save plugin='`$tmp.sql.plugin`' resource='VNI' key=\"UPDATE VLAN_ID_POOL set status='AVAILABLE' where purpose='VNI' and vlan_id=$tmp.manage-vni.vni\" force='false'>\n\n","comments":"","outputs":1,"x":1382,"y":327,"z":"53860ef1.ddc3b8","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_naming-policy-generate-name.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_naming-policy-generate-name.json
new file mode 100755
index 0000000..1ddef4d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_naming-policy-generate-name.json
@@ -0,0 +1,4441 @@
+[

+    {

+        "id": "75a34d0b.bb7574",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 118,

+        "y": 51,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "70404768.1ea1c8"

+            ]

+        ]

+    },

+    {

+        "id": "6492a0ff.445ef",

+        "type": "method",

+        "name": "method naming-policy-generate-name",

+        "xml": "<method rpc='naming-policy-generate-name' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 722,

+        "y": 52,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "ba99c4a1.1c0018"

+            ]

+        ]

+    },

+    {

+        "id": "70404768.1ea1c8",

+        "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": 376.9403991699219,

+        "y": 51.32145690917969,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "6492a0ff.445ef"

+            ]

+        ]

+    },

+    {

+        "id": "6edde0fc.72ccc",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 283,

+        "y": 2249,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "2c51c155.dc3526",

+                "9fa570e4.d047d8",

+                "3e4fd70d.b8b488"

+            ]

+        ]

+    },

+    {

+        "id": "2c51c155.dc3526",

+        "type": "set",

+        "name": "set variables for generating unique name",

+        "xml": "<set>\n<!--<parameter name='generate-unique-name-input.index-table-name' value='VM_NAME_INDEX' />-->\n<parameter name='generate-unique-name-input.index-table-name' value=\"`$table-name`\" />\n<parameter name='generate-unique-name-input.index-table-prefix-column' value=\"`$table-prefix-column`\" />\n<!--<parameter name='generate-unique-name-input.name-table-type' value='VNFAPI_VM_INSTANCE' />-->\n<parameter name='generate-unique-name-input.name-table-type' value=\"`$table-type`\" />\n<!--<parameter name='generate-unique-name-input.prefix' value=\"`$naming-policy-generate-name-input.nfc-naming-code`\" />\n<parameter name='generate-unique-name-input.index-length' value='003' />-->\n<parameter name='generate-unique-name-input.prefix' value=\"`$constructed-name`\" />\n<parameter name='generate-unique-name-input.index-length' value=\"`$seq-length`\" />\n<parameter name='generate-unique-name-input.action' value=\"`$naming-policy-generate-name-input.action`\" />\n<parameter name='generate-unique-name-input.context-id' value=\"`$naming-policy-generate-name-input.context-id`\" />",

+        "comments": "",

+        "x": 421.6904296875,

+        "y": 2353.3095703125,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "3e4fd70d.b8b488",

+        "type": "call",

+        "name": "call GR-API:naming-policy-generate-unique-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-unique-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 454.023681640625,

+        "y": 2398.976318359375,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "ddb98dbf.d86528",

+                "56f09382.d52994"

+            ]

+        ]

+    },

+    {

+        "id": "ddb98dbf.d86528",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 757.7379760742188,

+        "y": 2375.83349609375,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "f4297935.f9f37"

+            ]

+        ]

+    },

+    {

+        "id": "56f09382.d52994",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 761.0713259379067,

+        "y": 2427.50013923645,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "8322f6bc.4995f"

+            ]

+        ]

+    },

+    {

+        "id": "9a53573e.453378",

+        "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=\"`$generate-unique-name-output.error-message`\" />\n",

+        "comments": "",

+        "x": 1048.5950927734375,

+        "y": 2375.261962890625,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "8185858d.9e0a08",

+        "type": "set",

+        "name": "set generated vm-name",

+        "xml": "<set>\n<parameter name='naming-policy-generate-name-output.vm-name' value='`$generate-unique-name-output.generated-name`' />\n<parameter name='constructed-name' value='' />\n<parameter name='seq-length' value='' />",

+        "comments": "",

+        "x": 1264.5950953165689,

+        "y": 2520.9760637283325,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "4535c483.19cc2c",

+        "type": "comment",

+        "name": "Call Policy Manager getPolicy",

+        "info": "",

+        "comments": "",

+        "x": 271,

+        "y": 274,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "8fb3313.00e47d",

+        "type": "execute",

+        "name": "execute RestapiCallNode",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.pm.getpolicy.templatefile`\" />\n    <parameter name='restapiUrl' value=\"`$prop.policy-manager.url + '/pdp/api/getConfig'`\" />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />  \n    <parameter name='customHttpHeaders'\n      value=\"`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `\" />\n\t<parameter name=\"responsePrefix\" value=\"tmp.pm-response\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 432,

+        "y": 397,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "55f4b148.256098",

+                "d7e7421a.85577"

+            ]

+        ]

+    },

+    {

+        "id": "fac278.cbdfd588",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n<parameter name='tmp.policy-name' value=\"`$naming-policy-generate-name-input.policy-instance-name`\" />\n",

+        "comments": "",

+        "x": 377,

+        "y": 318,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "5d83b069.18ee5",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 234,

+        "y": 316,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "fac278.cbdfd588",

+                "8fb3313.00e47d",

+                "a0a20ae8.85051",

+                "a2215e38.ce28e",

+                "15537c0b.057ca4",

+                "73f403b2.c4d354"

+            ]

+        ]

+    },

+    {

+        "id": "a0a20ae8.85051",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"com.att.sdnctl.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: restapi-call-node Call Policy Manager getPolicy\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 377,

+        "y": 358,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d145dda.fd66aa",

+        "type": "execute",

+        "name": "execute readProperties",

+        "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": 1366,

+        "y": 123,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "df488a42.d2de8",

+                "e9591d07.9c2818"

+            ]

+        ]

+    },

+    {

+        "id": "df488a42.d2de8",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1565,

+        "y": 102,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "b544100e.489ef8"

+            ]

+        ]

+    },

+    {

+        "id": "e9591d07.9c2818",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1563,

+        "y": 143,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "aa4103e3.cd9c68"

+            ]

+        ]

+    },

+    {

+        "id": "aa4103e3.cd9c68",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1700,

+        "y": 145,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "4e4e1cae.459c7c",

+                "68d25eab.cfdcb"

+            ]

+        ]

+    },

+    {

+        "id": "4e4e1cae.459c7c",

+        "type": "GenericXML",

+        "name": "record",

+        "xml": "<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: Could not read properties file.\"/>\n<parameter name=\"field3\" value='`$prop.restapi.pm.getpolicy.templatefile`'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1871,

+        "y": 142,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b544100e.489ef8",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1721,

+        "y": 102,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "311b8744.7f9128"

+            ]

+        ]

+    },

+    {

+        "id": "ba99c4a1.1c0018",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 120,

+        "y": 91,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "23484a65.1e44ce",

+                "80631453.603ea8"

+            ]

+        ]

+    },

+    {

+        "id": "b463feb.8663e",

+        "type": "comment",

+        "name": "Read properties",

+        "info": "",

+        "comments": "",

+        "x": 1341,

+        "y": 76,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "a0550124.60527",

+        "type": "comment",

+        "name": "Generate unique name with constructed-name based on naming-recipe",

+        "info": "",

+        "comments": "",

+        "x": 462,

+        "y": 2199,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "5bd249c1.943ee8",

+        "type": "comment",

+        "name": "Process Policy Manager response",

+        "info": "Use the three naming components returned from Policy Manager to build the name\n\nExtract from json response three data components:\n\n1. VNFNAME\n2. CONSTANT_TAG\n3. SEQUENCE",

+        "comments": "",

+        "x": 462,

+        "y": 500,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "311b8744.7f9128",

+        "type": "GenericXML",

+        "name": "record",

+        "xml": "<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: read properties file.\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1868,

+        "y": 102,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "73f403b2.c4d354",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n<parameter name='vnf-name' value=\"`$naming-policy-generate-name-input.generic-vnf-name`\" />\n<parameter name='constant-tag' value=\"`$naming-policy-generate-name-input.constant-tag`\" />\n<parameter name='sequence' value=\"`$naming-policy-generate-name-input.sequence`\" />\n",

+        "comments": "",

+        "x": 379,

+        "y": 443,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "a2215e38.ce28e",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"jsonStringToCtx\">\n\t<parameter name=\"source\" value=\"naming-policy-config\" />\n\t<parameter name=\"outputPath\" value=\"jsonContextPrefix\" />\n\t<parameter name=\"isEscaped\" value=\"true\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 438,

+        "y": 580,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "875018c2.d50af8",

+                "202858.a5bcf7a8"

+            ]

+        ]

+    },

+    {

+        "id": "15537c0b.057ca4",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: call jsonStringToCtx\"/>\n<parameter name='field3' value='`$naming-policy-config`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 383,

+        "y": 538,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "55f4b148.256098",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 634,

+        "y": 387,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "20a0ada2.86197a"

+            ]

+        ]

+    },

+    {

+        "id": "4cd2ac34.0a838c",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: Error calling Policy Manager getPolicy\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 975,

+        "y": 341,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d7e7421a.85577",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 636,

+        "y": 429,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "1101599b.ecff1e"

+            ]

+        ]

+    },

+    {

+        "id": "af00ee16.fb8b7",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: getPolicy SUCCESS\"/>\n<parameter name='field3' value='`$tmp.pm-response.type`' />\n<parameter name='field4' value='`$tmp.pm-response.matchingConditions`' />\n<parameter name='field5' value='`$tmp.pm-response.config`' />\n<parameter name='field6' value='`$tmp.pm-response.response-code`' />\n<parameter name='field7' value='`$tmp.pm-response.response-message`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 975,

+        "y": 421,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2e2bf07f.6bef",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n<parameter name='naming-policy-config' value=\"`$tmp.pm-response.config`\" />\n",

+        "comments": "",

+        "x": 976,

+        "y": 459,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "875018c2.d50af8",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 637,

+        "y": 575,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "6d355400.a200e4"

+            ]

+        ]

+    },

+    {

+        "id": "2427b7f2.f78918",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: Error calling jsonStringToCtx\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 898,

+        "y": 566,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "202858.a5bcf7a8",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 643,

+        "y": 622,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "fe35d17a.708da"

+            ]

+        ]

+    },

+    {

+        "id": "e6f1d650.5a9f2",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: jsonStringToCtx SUCCESS: policy-instance-name|naming-models_length|constructed-name:\"/>\n<parameter name='field3' value='`$jsonContextPrefix.content.policy-instance-name`' />\n<parameter name='field4' value='`$jsonContextPrefix.content.naming-models_length`' />\n<parameter name='field5' value='`$constructed-name`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 425,

+        "y": 727,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f0ff2011.6ffb6",

+        "type": "for",

+        "name": "for each namig-model",

+        "xml": "<for index='modelsIndex' start='0' end='`$jsonContextPrefix.content.naming-models_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 466,

+        "y": 771,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "f383011c.bcb46"

+            ]

+        ]

+    },

+    {

+        "id": "fe35d17a.708da",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 443,

+        "y": 685,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "e6f1d650.5a9f2",

+                "f0ff2011.6ffb6",

+                "f8a0b8fd.ddc3a",

+                "14834b6c.ad004d"

+            ]

+        ]

+    },

+    {

+        "id": "2129c70.608263a",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: propertiesIndex|source-endpoint|source-system|property-name:\"/>\n<parameter name='field3' value='`$propertiesIndex`' />\n<parameter name='field4' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].source-endpoint`' />\n<parameter name='field5' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].source-system`' />\n<parameter name='field6' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1347,

+        "y": 1608,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "42841b11.aad434",

+        "type": "comment",

+        "name": "Resolve the value of the naming-property",

+        "info": "For each naming-property, get the value using the source-endpoinr and the source-system if the property-name is part of the naming-recipe.",

+        "comments": "",

+        "x": 1330,

+        "y": 1563,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "9565a666.a66ff",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1225,

+        "y": 1609,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "2129c70.608263a",

+                "bb618182.7a5348",

+                "4bd119b3.f9c08"

+            ]

+        ]

+    },

+    {

+        "id": "dbc48e79.680fe8",

+        "type": "switchNode",

+        "name": "switch source-system",

+        "xml": "<switch test='`$source-system`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1794,

+        "y": 1743,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "a209ce6a.66539",

+                "674dfafd.50cfc4",

+                "68a415fe.a3c6f4",

+                "27ec5b13.c3b8d4",

+                "f43244a3.fe4528"

+            ]

+        ]

+    },

+    {

+        "id": "bb618182.7a5348",

+        "type": "set",

+        "name": "set naming-property vars",

+        "xml": "<set>\n<parameter name='source-system' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].source-system`'  />\n<parameter name='source-endpoint' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].source-endpoint`'  />\n<parameter name='property-name' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`'  />\n<parameter name='property-value' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-value`'  />\n",

+        "comments": "",

+        "x": 1399,

+        "y": 1646,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "a209ce6a.66539",

+        "type": "outcome",

+        "name": "outcome: MD-SAL",

+        "xml": "<outcome value=\"MD-SAL\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1823,

+        "y": 1787,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "5914689f.c6128"

+            ]

+        ]

+    },

+    {

+        "id": "27ec5b13.c3b8d4",

+        "type": "outcome",

+        "name": "outcome: TOSCA",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1832,

+        "y": 2366,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "f1b8b11f.c6e268"

+            ]

+        ]

+    },

+    {

+        "id": "f43244a3.fe4528",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1789,

+        "y": 3865,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "b6b75232.0ce81"

+            ]

+        ]

+    },

+    {

+        "id": "33427119.67b63e",

+        "type": "get-resource",

+        "name": "get-resource: using source-enpoint",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' method='parameterizedQuery' emitsOutcome='true' >\n<parameter name='query' value='nfc_naming_code from VFC_MODEL where customization_uuid = ?' />\n<parameter name='prefix' value='queryPfx' />\n<parameter name='param1' value=\"`$naming-policy-generate-name-input.vfc-customization-uuid`\" />\n\n<!--<get-resource \n\tplugin='org.openecomp.sdnc.sli.resource.sql.SqlResource' \n    resource='SQL'\n\tkey=\"SELECT nfc_naming_code from VFC_MODEL where customization_uuid = $naming-policy-generate-name-input.customization-uuid ; \"\n\tpfx='queryPfx'>\n\t\n-- Use parameterized query\nRead\n<execute plugin='com.att.sdnctl.sli.resource.sql.SqlResource' method='parameterizedQuery' emitsOutcome='true' >\n<parameter name='query' value='select version from SVC_LOGIC where module = ?' />\n<parameter name='prefix' value='query1' />\n<parameter name='param1' value=\"`$vfcCustomizationUuid`  (passed in from calling DG)\" />\n-->\t\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3158,

+        "y": 2436,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6e47d8a0.889f3",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2708,

+        "y": 2422,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "b0046580.4d276"

+            ]

+        ]

+    },

+    {

+        "id": "b0046580.4d276",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='514' />\n<parameter name='error-message' value='naming-policy-generate-name query-parameter not found in DB table'/>\n",

+        "comments": "",

+        "x": 2849,

+        "y": 2422,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "50737887.589db",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2700,

+        "y": 2458,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "df3b5efb.ab02a"

+            ]

+        ]

+    },

+    {

+        "id": "df3b5efb.ab02a",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='515' />\n<parameter name='error-message' value='naming-policy-generate-name database access failure'/>\n",

+        "comments": "",

+        "x": 2849,

+        "y": 2458,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "4bf394e2.0c215c",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2312,

+        "y": 2472,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "18bd0a36.98e46e"

+            ]

+        ]

+    },

+    {

+        "id": "f71e5755.3b8be8",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: source-system TOSCA name-value pair|new-part|constructed-name:\"/>\n<parameter name=\"field3\" value=\"`$name-var`\" />\n<parameter name=\"field4\" value=\"`$value-var`\" />\n<parameter name=\"field5\" value=\"`$new-part`\" />\n<parameter name=\"field6\" value=\"`$constructed-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 2627,

+        "y": 2912,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "18bd0a36.98e46e",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2311,

+        "y": 2517,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "f71e5755.3b8be8",

+                "1f38982a.fd3db8",

+                "8dfa3cf2.977b5",

+                "74241d5c.4f5c4c",

+                "c6e9efbe.0a3b9",

+                "5a0ecd08.97aca4",

+                "e48db706.321a18",

+                "ff7274bf.81bd7",

+                "4f4d8a88.0ea29c"

+            ]

+        ]

+    },

+    {

+        "id": "8dfa3cf2.977b5",

+        "type": "set",

+        "name": "set new-part",

+        "xml": "<set>\n<parameter name=\"name-var\" value=\"`$propertiesIndex + '-naming-property-value'`\" />\n<parameter name=\"value-var\" value=\"`$property-name + '-' + $resolved-query-parameter`\" />\n<parameter name=\"new-part\" value=\"`$resolved-query-parameter` \" />",

+        "comments": "",

+        "x": 2641,

+        "y": 2819,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "559d0190.b9a298",

+        "type": "set",

+        "name": "set new-part",

+        "xml": "<set>\n<parameter name=\"name-var\" value=\"`$propertiesIndex + '-naming-property-value'`\" />\n<parameter name=\"value-var\" value=\"`$property-name + '-' + $naming-policy-generate-name-input.test-source-endpoint-resolved-value` \" />\n<parameter name=\"new-part\" value=\"`$resolved-source-endpoint` \" />\n<!--<parameter name=\"new-part\" value=\"`$naming-policy-generate-name-input.test-source-endpoint-resolved-value` \" />-->",

+        "comments": "",

+        "x": 2132,

+        "y": 1901,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "5cf92254.7a3a2c",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: source-system MD-SAL name-value pair|new-part|constructed-name:\"/>\n<parameter name=\"field3\" value=\"`$name-var`\" />\n<parameter name=\"field4\" value=\"`$value-var`\" />\n<parameter name=\"field5\" value=\"`$new-part`\" />\n<parameter name=\"field6\" value=\"`$constructed-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 2116,

+        "y": 1989,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bd92dfcd.c08348",

+        "type": "execute",

+        "name": "SliStringUtils - split after |",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n    <parameter name=\"original_string\" value=\"`$original-name`\" />\n    <parameter name=\"regex\" value=\"\\|\"/>\n    <parameter name=\"limit\" value=\"10\" />\n    <parameter name=\"ctx_memory_result_key\" value=\"namingRecipeSplits\" />\n  \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 897,

+        "y": 1118,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b2ecc5f0.43531",

+        "type": "set",

+        "name": "set original-name",

+        "xml": "<set>\n<parameter name='original-name' value='`$naming-recipe`' />\n",

+        "comments": "",

+        "x": 871.3333740234375,

+        "y": 1077.333251953125,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "2d28b1ee.0d253e",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 665,

+        "y": 1077,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "b2ecc5f0.43531",

+                "bd92dfcd.c08348",

+                "6f8b5246.912494",

+                "6edde0fc.72ccc"

+            ]

+        ]

+    },

+    {

+        "id": "6f8b5246.912494",

+        "type": "for",

+        "name": "for each naming-recipe section",

+        "xml": "<for index='sectionIndex' start='0' end='`$namingRecipeSplits_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 921,

+        "y": 1158,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "42632c44.901de4",

+                "50857c42.42adcc"

+            ]

+        ]

+    },

+    {

+        "id": "50857c42.42adcc",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: Split naming-recipe sectionIndex|section value\"/>\n<parameter name=\"field3\" value=\"`$sectionIndex`\" />\n<parameter name=\"field4\" value=\"`$namingRecipeSplits[$sectionIndex]`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1144,

+        "y": 1158,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "42632c44.901de4",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 872,

+        "y": 1208,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "4f6f9e3d.d93e98",

+                "dbb6c8bd.b9d85"

+            ]

+        ]

+    },

+    {

+        "id": "4f6f9e3d.d93e98",

+        "type": "for",

+        "name": "for each naming-property",

+        "xml": "<for index='propertiesIndex' start='0' end='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1048,

+        "y": 1249,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "8c4f2aa1.47e8f8"

+            ]

+        ]

+    },

+    {

+        "id": "4ca738a3.1fe0f8",

+        "type": "switchNode",

+        "name": "switch property-name == section-value",

+        "xml": "<switch test='`$property-name == $section-value`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1153,

+        "y": 1428,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "5ef228d5.03a9c"

+            ]

+        ]

+    },

+    {

+        "id": "5ef228d5.03a9c",

+        "type": "outcome",

+        "name": "outcome: recipe section match",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1197,

+        "y": 1470,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "7bf7454d.cb5eac"

+            ]

+        ]

+    },

+    {

+        "id": "9fa570e4.d047d8",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: call generate-unique-name: constructed-name\"/>\n<parameter name=\"field6\" value=\"`$constructed-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 310,

+        "y": 2308,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dbb6c8bd.b9d85",

+        "type": "set",

+        "name": "set section-value",

+        "xml": "<set>\n<parameter name='section-value' value=\"`$namingRecipeSplits[$sectionIndex]`\"  />\n",

+        "comments": "",

+        "x": 1031,

+        "y": 1209,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "cc00f157.dcdd08",

+        "type": "set",

+        "name": "set property-name",

+        "xml": "<set>\n<!--<parameter name='property-name' value=\"`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`\"  />-->\n<parameter name='property-name' value=\"`$property-name-trimmed`\"  />\n",

+        "comments": "",

+        "x": 1097,

+        "y": 1385,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "8c4f2aa1.47e8f8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1018,

+        "y": 1294,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "4ca738a3.1fe0f8",

+                "3a8d4560.940002",

+                "cc00f157.dcdd08"

+            ]

+        ]

+    },

+    {

+        "id": "37b3dd6b.37aaa2",

+        "type": "set",

+        "name": "set constructed-name",

+        "xml": "<set>\n<!--<parameter name='constructed-name' value=\"`'init-constructed-name'`\"  />-->\n<parameter name='constructed-name' value=\"`''`\"  />",

+        "comments": "",

+        "x": 665,

+        "y": 678,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "7bf7454d.cb5eac",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1174,

+        "y": 1513,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "9565a666.a66ff",

+                "edd08f5b.e85f58"

+            ]

+        ]

+    },

+    {

+        "id": "ff95881b.e519c",

+        "type": "set",

+        "name": "set SEQUENCE info for this naming-property",

+        "xml": "<set>\n<!-- until PM is passing the correct source-endpoint for memory value, \n     use one passed via executeDG test\n\n<parameter name=\"`$propertiesIndex` + '-naming-property-value'\" value=\"` $property-name + '-' + $source-endpoint `\"  />\n-->\n<parameter name=\"seq-scope\" value=\"`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].increment-sequence.scope`\" />\n<parameter name=\"seq-start-value\" value=\"`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].increment-sequence.start-value` \" />\n<parameter name=\"seq-length\" value=\"`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].increment-sequence.length` \" />\n<parameter name=\"seq-increment\" value=\"`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].increment-sequence.increment` \" />\n",

+        "comments": "",

+        "x": 2194,

+        "y": 3903,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "28763b06.0da9d4",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: SDN-GC SEQUENCE info: scope|start-value|length|increment|constructed-name:\"/>\n<parameter name=\"field3\" value=\"`$seq-scope`\" />\n<parameter name=\"field4\" value=\"`$seq-start-value`\" />\n<parameter name=\"field5\" value=\"`$seq-length`\" />\n<parameter name=\"field6\" value=\"`$seq-increment`\" />\n<parameter name=\"field7\" value=\"`$constructed-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 2071,

+        "y": 3943,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5914689f.c6128",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2118,

+        "y": 1853,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "559d0190.b9a298",

+                "5cf92254.7a3a2c",

+                "465cf13e.01d79",

+                "5c07edd9.938f7c"

+            ]

+        ]

+    },

+    {

+        "id": "b6b75232.0ce81",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2070,

+        "y": 3865,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "ff95881b.e519c",

+                "28763b06.0da9d4"

+            ]

+        ]

+    },

+    {

+        "id": "8db0d286.7fa708",

+        "type": "execute",

+        "name": "execute parameterized query using source-endpoint",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' method='parameterizedQuery' emitsOutcome='true' >\n<!--<parameter name='query' value='select nfc_naming_code from VFC_MODEL where customization_uuid = ?' />-->\n<parameter name='query' value=\"`$source-endpoint`\" />\n<parameter name='prefix' value='queryPfx' />\n<parameter name='param1' value=\"`$naming-policy-generate-name-input.query-parameter`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 2432,

+        "y": 2422,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "6e47d8a0.889f3",

+                "50737887.589db",

+                "4bf394e2.0c215c"

+            ]

+        ]

+    },

+    {

+        "id": "edd08f5b.e85f58",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: recipe section match: section-value|property-name:\"/>\n<parameter name=\"field3\" value=\"`$section-value`\" />\n<parameter name=\"field4\" value=\"`$property-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1301,

+        "y": 1513,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1f38982a.fd3db8",

+        "type": "set",

+        "name": "add new-part to constructed-value",

+        "xml": "<set>\n<parameter name=\"constructed-name\" value=\"`$constructed-name + $new-part` \"  />\n",

+        "comments": "",

+        "x": 2707,

+        "y": 2863,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "465cf13e.01d79",

+        "type": "set",

+        "name": "add new-part to constructed-value",

+        "xml": "<set>\n<parameter name=\"constructed-name\" value=\"`$constructed-name + $new-part` \"  />",

+        "comments": "",

+        "x": 2201,

+        "y": 1939,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "8322f6bc.4995f",

+        "type": "switchNode",

+        "name": "switch naming-type (VM | VNFC | VNF)",

+        "xml": "<switch test='`$naming-type`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 978.0000025431314,

+        "y": 2425.9999895095825,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "9d532e22.50b1b8",

+                "78aa50c5.9e78e",

+                "64bf3864.33ff38",

+                "6d8b2a02.46fe54",

+                "81a52062.6b654"

+            ]

+        ]

+    },

+    {

+        "id": "9d532e22.50b1b8",

+        "type": "outcome",

+        "name": "outcome: VM",

+        "xml": "<outcome value=\"VM\">\n<!-- <outcome value=\"MD-SAL\"> -->\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1007,

+        "y": 2478,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "518d8ec2.33b29"

+            ]

+        ]

+    },

+    {

+        "id": "78aa50c5.9e78e",

+        "type": "outcome",

+        "name": "outcome: VNFC",

+        "xml": "<outcome value=\"VNFC\">\n<!-- <outcome value=\"MD-SAL\"> -->\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1017,

+        "y": 2609,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "e889ec83.003b58"

+            ]

+        ]

+    },

+    {

+        "id": "cbbec45b.5e0258",

+        "type": "set",

+        "name": "set generated vnfc-name",

+        "xml": "<set>\n<parameter name='naming-policy-generate-name-output.vnfc-name' value='`$generate-unique-name-output.generated-name`' />\n<parameter name='constructed-name' value='' />\n<parameter name='seq-length' value='' />",

+        "comments": "",

+        "x": 1258.5950927734375,

+        "y": 2688.97607421875,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "f3b3cf11.bcec9",

+        "type": "record",

+        "name": "record generated vm-name",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: generated vm-name|generate-unique-name-output.generated-name:\"/>\n<parameter name=\"field5\" value=\"`$naming-policy-generate-name-output.vm-name`\" />\n<parameter name=\"field6\" value=\"`$generate-unique-name-output.generated-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1275.0000025431314,

+        "y": 2561.9999895095825,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "518d8ec2.33b29",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1209,

+        "y": 2477,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "f3b3cf11.bcec9",

+                "8185858d.9e0a08"

+            ]

+        ]

+    },

+    {

+        "id": "e889ec83.003b58",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1200,

+        "y": 2648,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "7741602e.23feb",

+                "cbbec45b.5e0258"

+            ]

+        ]

+    },

+    {

+        "id": "7741602e.23feb",

+        "type": "record",

+        "name": "record generated vnfc-name",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: generated vnfc-name|generate-unique-name-output.generated-name:\"/>\n<parameter name=\"field5\" value=\"`$naming-policy-generate-name-output.vnfc-name`\" />\n<parameter name=\"field6\" value=\"`$generate-unique-name-output.generated-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1269,

+        "y": 2727,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4bd119b3.f9c08",

+        "type": "switchNode",

+        "name": "switch property-value",

+        "xml": "<switch test='`$property-value`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1390,

+        "y": 1688,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "eb25d531.93517",

+                "a13023cc.efc698"

+            ]

+        ]

+    },

+    {

+        "id": "eb25d531.93517",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1585,

+        "y": 1689,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "b7c93ceb.1810d8"

+            ]

+        ]

+    },

+    {

+        "id": "b7c93ceb.1810d8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1621,

+        "y": 1742,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "dbc48e79.680fe8"

+            ]

+        ]

+    },

+    {

+        "id": "a13023cc.efc698",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1296,

+        "y": 1875,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "5ed3e30e.accf14"

+            ]

+        ]

+    },

+    {

+        "id": "5ed3e30e.accf14",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1326,

+        "y": 1917,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "992c18a9.120f3",

+                "b2e909c3.17d858",

+                "b5b4a205.b0a848"

+            ]

+        ]

+    },

+    {

+        "id": "992c18a9.120f3",

+        "type": "set",

+        "name": "set new-part",

+        "xml": "<set>\n<!-- until PM is passing the correct source-endpoint for memory value, \n     use one passed via executeDG test\n\n<parameter name=\"`$propertiesIndex` + '-naming-property-value'\" value=\"` $property-name + '-' + $source-endpoint `\"  />\n-->\n<parameter name=\"name-var\" value=\"`$propertiesIndex + '-naming-property-value'`\" />\n<parameter name=\"value-var\" value=\"`$property-name + '-' + $property-value` \" />\n<parameter name=\"new-part\" value=\"`$property-value` \" />",

+        "comments": "",

+        "x": 1344,

+        "y": 1954,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "b5b4a205.b0a848",

+        "type": "set",

+        "name": "add new-part to constructed-value",

+        "xml": "<set>\n<parameter name=\"constructed-name\" value=\"`$constructed-name + $new-part` \"  />",

+        "comments": "",

+        "x": 1413,

+        "y": 1992,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "b2e909c3.17d858",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: property-value name-value pair|new-part|constructed-name:\"/>\n<parameter name=\"field3\" value=\"`$name-var`\" />\n<parameter name=\"field4\" value=\"`$value-var`\" />\n<parameter name=\"field5\" value=\"`$new-part`\" />\n<parameter name=\"field6\" value=\"`$constructed-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1325,

+        "y": 2030,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f8a0b8fd.ddc3a",

+        "type": "returnSuccess",

+        "name": "return success",

+        "xml": "<return status='success'>\n<parameter name='naming-policy-generate-name-output.vm-name' value=\"`$naming-policy-generate-name-output.vm-name`\" />\n<parameter name='naming-policy-generate-name-output.vnfc-name' value=\"`$naming-policy-generate-name-output.vnfc-name`\" />\n",

+        "comments": "",

+        "x": 202,

+        "y": 3275,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "68d25eab.cfdcb",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='501' />\n<parameter name='error-message' value='naming-policy-generate-name: could not read generic-resource-api properties' />\n",

+        "comments": "",

+        "x": 1883,

+        "y": 185,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "f5405176.e50ca",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='502' />\n<parameter name='error-message' value='naming-policy-generate-name: getPolicy call to Policy Manger failed' />\n",

+        "comments": "",

+        "x": 991,

+        "y": 380,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "4dfee0c8.38978",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='504' />\n<parameter name='error-message' value='naming-policy-generate-name: failed to parse Policy Manger getPolicy response' />\n",

+        "comments": "",

+        "x": 914,

+        "y": 605,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "20a0ada2.86197a",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 761,

+        "y": 386,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "4cd2ac34.0a838c",

+                "f5405176.e50ca"

+            ]

+        ]

+    },

+    {

+        "id": "6d355400.a200e4",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 772,

+        "y": 575,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "2427b7f2.f78918",

+                "4dfee0c8.38978"

+            ]

+        ]

+    },

+    {

+        "id": "3a8d4560.940002",

+        "type": "execute",

+        "name": "SliStringUtils - trim property-name",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >\n    <parameter name=\"source\" value=\"`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`\" />\n    <parameter name=\"outputPath\" value=\"property-name-trimmed\" />\n  \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1143,

+        "y": 1343,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "cf295ecd.ac6bb",

+        "type": "execute",

+        "name": "SliPluginUtils - getArrtibuteValue for source-endpoint",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue' >\n\t<parameter name=\"source\" value=\"`$source-endpoint`\" />\n\t<!--<parameter name=\"source\" value=\"`$naming-policy-generate-name-input.test-source-endpoint-path`\" />-->\n\t<parameter name=\"outputPath\" value=\"resolved-source-endpoint\" />\n\t",

+        "comments": "",

+        "outputs": 1,

+        "x": 2742,

+        "y": 2075,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "85860723.7cbb78",

+        "type": "set",

+        "name": "set ctx-memory-path * TEST ONLY *",

+        "xml": "<set>\n<parameter name=\"ctx-memory-path\" value='test-source-endpoint-resolved-value' />",

+        "comments": "",

+        "x": 2209,

+        "y": 1791,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "5c07edd9.938f7c",

+        "type": "switchNode",

+        "name": "switch property-name (VMNAME | VNFNAME | Other)",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2577,

+        "y": 1852,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "7a67ffd2.e19ed",

+                "2dcf567f.4b8eb2",

+                "fcbf6f2f.6c2558"

+            ]

+        ]

+    },

+    {

+        "id": "7a67ffd2.e19ed",

+        "type": "outcome",

+        "name": "outcome: VMNAME",

+        "xml": "<outcome value=\"VMNAME\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 2510,

+        "y": 1905,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "aba0d492.8c0b78"

+            ]

+        ]

+    },

+    {

+        "id": "2dcf567f.4b8eb2",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2470,

+        "y": 2075,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "cf295ecd.ac6bb"

+            ]

+        ]

+    },

+    {

+        "id": "aa207226.ec6ef8",

+        "type": "set",

+        "name": "set resolved-source-endpoint to input vm-name",

+        "xml": "<set>\n<parameter name=\"resolved-source-endpoint\" value=\"`$naming-policy-generate-name-input.vm-name`\" />",

+        "comments": "",

+        "x": 3167,

+        "y": 1925,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "be2a29d3.e3246",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: Error calling generate-unique-name\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1034,

+        "y": 2329,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2a176147.86e4a6",

+        "type": "comment",

+        "name": "If property-value was set use it instead of constructing a value",

+        "info": "",

+        "comments": "",

+        "x": 1465,

+        "y": 1836,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "3ffbeb15.ee1a1c",

+        "type": "comment",

+        "name": "construct a name only if the naming-type matches input.  Valid types: VNF | VM | VNFC | NETWORK | SERVICE",

+        "info": "",

+        "comments": "",

+        "x": 738,

+        "y": 812,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "f383011c.bcb46",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 473,

+        "y": 853,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "4d70248f.886584",

+                "af65c0f0.1d9608",

+                "c68c5be6.cd663",

+                "53c5a10b.b8eb28",

+                "153c4ae9.a6de65"

+            ]

+        ]

+    },

+    {

+        "id": "4d70248f.886584",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: modelsIndex|naming-type|naming-recipe:\"/>\n<parameter name='field3' value='`$modelsIndex`' />\n<parameter name='field4' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-type`' />\n<parameter name='field5' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-recipe`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 790,

+        "y": 849,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c68c5be6.cd663",

+        "type": "set",

+        "name": "set naming-model vars (naming-recipe and naming-type)",

+        "xml": "<set>\n<parameter name='naming-recipe' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-recipe`'  />\n<parameter name='naming-type' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-type`'  />\n",

+        "comments": "",

+        "x": 944,

+        "y": 888,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "af65c0f0.1d9608",

+        "type": "switchNode",

+        "name": "switch naming-type == input.naming-type",

+        "xml": "<switch test='`$naming-type == $naming-policy-generate-name-input.naming-type`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 524,

+        "y": 992,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "f5ba895b.cd8e4",

+                "be0c5c6c.f15a2"

+            ]

+        ]

+    },

+    {

+        "id": "f5ba895b.cd8e4",

+        "type": "outcome",

+        "name": "outcome:naming-type match",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 529,

+        "y": 1032,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "2d28b1ee.0d253e"

+            ]

+        ]

+    },

+    {

+        "id": "be0c5c6c.f15a2",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 465,

+        "y": 1074,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "1697accc.44d5c3"

+            ]

+        ]

+    },

+    {

+        "id": "1697accc.44d5c3",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: naming-type from returned policy does not match input.naming-type.  Do not construct name for: \"/>\n<parameter name=\"field3\" value=\"`$naming-type`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 458,

+        "y": 1121,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6e4783ce.b43dc4",

+        "type": "comment",

+        "name": "Validate inputs",

+        "info": "",

+        "comments": "",

+        "x": 1331,

+        "y": 234,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "f4297935.f9f37",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 897,

+        "y": 2376,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "be2a29d3.e3246",

+                "9a53573e.453378"

+            ]

+        ]

+    },

+    {

+        "id": "a810ba97.bc966",

+        "type": "switchNode",

+        "name": "switch input.naming-type",

+        "xml": "<switch test='`$naming-policy-generate-name-input.naming-type`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1374,

+        "y": 328,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "29894a6d.fcfd2e",

+                "2ea8e223.bf22fe",

+                "f89e5c46.be5898",

+                "f92989b4.f2bcb8",

+                "2da294ed.7f325c",

+                "11a9f6da.c807c1"

+            ]

+        ]

+    },

+    {

+        "id": "29894a6d.fcfd2e",

+        "type": "outcome",

+        "name": "VM",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1622,

+        "y": 330,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "f2326745.eeb0b8"

+            ]

+        ]

+    },

+    {

+        "id": "c9cc7fee.430e7",

+        "type": "set",

+        "name": "set table-name NAMING_POLICY_VNFC_NAME",

+        "xml": "<set>\n<parameter name='table-name' value=\"NAMING_POLICY_VNFC_NAME_INDEX\" />\n<parameter name='table-type' value=\"VNFC_INSTANCE\" />\n<parameter name='table-prefix-column' value=\"vnfc_name_prefix\" />\n<parameter name='seq-length' value=\"0\" />",

+        "comments": "",

+        "x": 2254,

+        "y": 446,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "f2326745.eeb0b8",

+        "type": "set",

+        "name": "set table-name NAMING_POLICY_VM_NAME",

+        "xml": "<set>\n<parameter name='table-name' value=\"NAMING_POLICY_VM_NAME_INDEX\" />\n<parameter name='table-type' value=\"VM_INSTANCE\" />\n<parameter name='table-prefix-column' value=\"vm_name_prefix\" />",

+        "comments": "",

+        "x": 1904,

+        "y": 330,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "2ea8e223.bf22fe",

+        "type": "outcome",

+        "name": "VNFC",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1622,

+        "y": 385,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "171caa16.1ed2d6"

+            ]

+        ]

+    },

+    {

+        "id": "f89e5c46.be5898",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1623,

+        "y": 630,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "d7a00f6d.c4ee1"

+            ]

+        ]

+    },

+    {

+        "id": "d7a00f6d.c4ee1",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1777,

+        "y": 630,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "39f8d8b0.a7e64",

+                "2c701ccb.01509c"

+            ]

+        ]

+    },

+    {

+        "id": "39f8d8b0.a7e64",

+        "type": "GenericXML",

+        "name": "record",

+        "xml": "<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: invalid input.naming-type.\"/>\n<parameter name=\"field3\" value='`$naming-policy-generate-name-input.naming-type`'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1904,

+        "y": 632,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2c701ccb.01509c",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='503' />\n<parameter name='error-message' value='naming-policy-generate-name: Invalid input.naming-type' />\n",

+        "comments": "",

+        "x": 1921,

+        "y": 672,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "171caa16.1ed2d6",

+        "type": "switchNode",

+        "name": "switch input.vm-name",

+        "xml": "<switch test='`$naming-policy-generate-name-input.vm-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1825,

+        "y": 385,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "467b9870.7570f8",

+                "36a2c7ec.0127c8"

+            ]

+        ]

+    },

+    {

+        "id": "467b9870.7570f8",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2003,

+        "y": 385,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "4a78e468.b7611c"

+            ]

+        ]

+    },

+    {

+        "id": "36a2c7ec.0127c8",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2003,

+        "y": 428,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "c9cc7fee.430e7"

+            ]

+        ]

+    },

+    {

+        "id": "a805a9b0.7607b8",

+        "type": "GenericXML",

+        "name": "record",

+        "xml": "<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: input.naming-type is VNFC but input.vm-name is not set\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2266,

+        "y": 361,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "88ca34e0.05a1c8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='505' />\n<parameter name='error-message' value='naming-policy-generate-name: input.naming-type is VNFC but input.vm-name is not set' />\n",

+        "comments": "",

+        "x": 2281,

+        "y": 401,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "1625cae3.0e96cd",

+        "type": "switchNode",

+        "name": "switch input.policy-instance-name",

+        "xml": "<switch test='`$naming-policy-generate-name-input.policy-instance-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1391,

+        "y": 755,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "fcc1b469.2a97a8"

+            ]

+        ]

+    },

+    {

+        "id": "fcc1b469.2a97a8",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1619,

+        "y": 755,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "7051a8cf.38c55"

+            ]

+        ]

+    },

+    {

+        "id": "7051a8cf.38c55",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1778,

+        "y": 755,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "d16b1533.2821c8"

+            ]

+        ]

+    },

+    {

+        "id": "3a5e7060.07154",

+        "type": "GenericXML",

+        "name": "record",

+        "xml": "<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: input.policy-instance-name is not set and input.policy is ASSIGN\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2371,

+        "y": 736,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2e5670a7.e2838",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='507' />\n<parameter name='error-message' value='naming-policy-generate-name: input.policy-instance-name is not set and input.policy is ASSIGN' />\n",

+        "comments": "",

+        "x": 2388,

+        "y": 776,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "23484a65.1e44ce",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 228,

+        "y": 184,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "d145dda.fd66aa",

+                "a810ba97.bc966",

+                "1625cae3.0e96cd",

+                "bc02137f.30d418",

+                "7aabbb44.838e4c"

+            ]

+        ]

+    },

+    {

+        "id": "76dc7da.840bc04",

+        "type": "comment",

+        "name": "Read properties and validate inputs",

+        "info": "",

+        "comments": "",

+        "x": 299,

+        "y": 138,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "1101599b.ecff1e",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 762,

+        "y": 430,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "af00ee16.fb8b7",

+                "2e2bf07f.6bef",

+                "f786b61d.eeb208"

+            ]

+        ]

+    },

+    {

+        "id": "f786b61d.eeb208",

+        "type": "switchNode",

+        "name": "switch response-code",

+        "xml": "<switch test='`$tmp.pm-response.response-code`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1027,

+        "y": 506,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "f97aad60.54393"

+            ]

+        ]

+    },

+    {

+        "id": "f97aad60.54393",

+        "type": "outcome",

+        "name": "500",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1202,

+        "y": 503,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "d4f772ea.5bf2c8"

+            ]

+        ]

+    },

+    {

+        "id": "d4f772ea.5bf2c8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1209,

+        "y": 548,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "d477517.4c3263",

+                "b1981638.99cb8"

+            ]

+        ]

+    },

+    {

+        "id": "d477517.4c3263",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: Error calling Policy Manager getPolicy\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1348,

+        "y": 524,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b1981638.99cb8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='502' />\n<parameter name='error-message' value='naming-policy-generate-name: getPolicy call to Policy Manger failed' />\n",

+        "comments": "",

+        "x": 1366,

+        "y": 567,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "f92989b4.f2bcb8",

+        "type": "outcome",

+        "name": "VNF",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1624,

+        "y": 462,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "6d2ea0b7.f76398"

+            ]

+        ]

+    },

+    {

+        "id": "2da294ed.7f325c",

+        "type": "outcome",

+        "name": "NETWORK",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1637,

+        "y": 513,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "da7c6991.7af078"

+            ]

+        ]

+    },

+    {

+        "id": "11a9f6da.c807c1",

+        "type": "outcome",

+        "name": "SERVICE",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1633,

+        "y": 564,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "7625c54.c368d3c"

+            ]

+        ]

+    },

+    {

+        "id": "6d2ea0b7.f76398",

+        "type": "set",

+        "name": "set table-name VNF_NAME_INDEX",

+        "xml": "<set>\n<parameter name='table-name' value=\"VNF_NAME_INDEX\" />\n<parameter name='table-type' value=\"VNF_INSTANCE\" />\n<parameter name='table-prefix-column' value=\"vnf_name_prefix\" />",

+        "comments": "",

+        "x": 1862,

+        "y": 462,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "da7c6991.7af078",

+        "type": "set",

+        "name": "set table-name NETWORK_INSTANCE_NAME_INDEX",

+        "xml": "<set>\n<parameter name='table-name' value=\"NETWORK_INSTANCE_NAME_INDEX\" />\n<parameter name='table-type' value=\"NETWORK_INSTANCE\" />\n<parameter name='table-prefix-column' value=\"network_instance_name_prefix\" />",

+        "comments": "",

+        "x": 1923,

+        "y": 513,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "7625c54.c368d3c",

+        "type": "set",

+        "name": "set table-name SERVICE_INSTANCE_NAME_INDEX",

+        "xml": "<set>\n<parameter name='table-name' value=\"SERVICE_INSTANCE_NAME_INDEX\" />\n<parameter name='table-type' value=\"SERVICE_INSTANCE\" />\n<parameter name='table-prefix-column' value=\"service_instance_name_prefix\" />",

+        "comments": "",

+        "x": 1924,

+        "y": 564,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "67447001.3edbd",

+        "type": "comment",

+        "name": "naming-type (VNF | VM | VNFC | NETWORK | SERVICE) - REQUIRED",

+        "info": "",

+        "comments": "",

+        "x": 1510,

+        "y": 284,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "bc02137f.30d418",

+        "type": "switchNode",

+        "name": "switch input.query-parameter",

+        "xml": "<switch test='`$naming-policy-generate-name-input.query-parameter`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1380,

+        "y": 858,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "57a3a6a1.fbd058"

+            ]

+        ]

+    },

+    {

+        "id": "545b6fb8.22f54",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1781,

+        "y": 858,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "5bd4377d.585d08"

+            ]

+        ]

+    },

+    {

+        "id": "5bd4377d.585d08",

+        "type": "GenericXML",

+        "name": "record",

+        "xml": "<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: input.vfc-customization-uuid is not set\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1914,

+        "y": 834,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7358b18c.329d48",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='506' />\n<parameter name='error-message' value='naming-policy-generate-name: input.vfc-customization-uuid is not set' />\n",

+        "comments": "",

+        "x": 1931,

+        "y": 874,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "57a3a6a1.fbd058",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1622,

+        "y": 858,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "545b6fb8.22f54"

+            ]

+        ]

+    },

+    {

+        "id": "a01e1ff9.50b64",

+        "type": "comment",

+        "name": "Don't return failure for missing query-parameter in 1806",

+        "info": "",

+        "comments": "",

+        "x": 2180,

+        "y": 836,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "fb18471f.a2fe8",

+        "type": "comment",

+        "name": "input.policy-instance-name - REQUIRED for ASSIGN action but not for DELETE action",

+        "info": "",

+        "comments": "",

+        "x": 1549,

+        "y": 706,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "53c5a10b.b8eb28",

+        "type": "switchNode",

+        "name": "switch naming-type",

+        "xml": "<switch test='`$naming-type`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 832,

+        "y": 930,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "5e549bb.3050be4"

+            ]

+        ]

+    },

+    {

+        "id": "5e549bb.3050be4",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 999,

+        "y": 930,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "fb9e37ef.f54ef"

+            ]

+        ]

+    },

+    {

+        "id": "fb9e37ef.f54ef",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='504' />\n<parameter name='error-message' value='naming-policy-generate-name: naming-type in policy is blank' />\n",

+        "comments": "",

+        "x": 1144,

+        "y": 930,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "153c4ae9.a6de65",

+        "type": "switchNode",

+        "name": "switch naming-recipe",

+        "xml": "<switch test='`$naming-recipe`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 835,

+        "y": 974,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "2a71d2b.18e0aae"

+            ]

+        ]

+    },

+    {

+        "id": "2a71d2b.18e0aae",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1002,

+        "y": 974,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "79ed9b39.4e2aa4"

+            ]

+        ]

+    },

+    {

+        "id": "79ed9b39.4e2aa4",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='504' />\n<parameter name='error-message' value='naming-policy-generate-name: naming-recipe in policy is blank' />\n",

+        "comments": "",

+        "x": 1147,

+        "y": 974,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "f1b8b11f.c6e268",

+        "type": "switchNode",

+        "name": "switch input.query-parameter",

+        "xml": "<switch test='`$naming-policy-generate-name-input.query-parameter`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2174,

+        "y": 2366,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "d7aabc69.a2e3e8",

+                "c9e519ef.a46d88"

+            ]

+        ]

+    },

+    {

+        "id": "d7aabc69.a2e3e8",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2375,

+        "y": 2367,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "7616f046.770668"

+            ]

+        ]

+    },

+    {

+        "id": "7616f046.770668",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2503,

+        "y": 2367,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "4cf573c7.4b348c",

+                "fada7118.239f3"

+            ]

+        ]

+    },

+    {

+        "id": "4cf573c7.4b348c",

+        "type": "GenericXML",

+        "name": "record",

+        "xml": "<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: input.query-parameter is not set\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2665,

+        "y": 2342,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fada7118.239f3",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='506' />\n<parameter name='error-message' value='naming-policy-generate-name: input.query-parameter is not set' />\n",

+        "comments": "",

+        "x": 2682,

+        "y": 2383,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "c9e519ef.a46d88",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2146,

+        "y": 2421,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "8db0d286.7fa708"

+            ]

+        ]

+    },

+    {

+        "id": "14834b6c.ad004d",

+        "type": "execute",

+        "name": "printContext",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 195,

+        "y": 3220,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "447be3a7.f54764",

+        "type": "comment",

+        "name": "Process naming-property based on source-system (MD-SAL | CONTEXT | TOSCA | AAI | BLANK)",

+        "info": "",

+        "comments": "",

+        "x": 2009,

+        "y": 1704,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "68a415fe.a3c6f4",

+        "type": "outcome",

+        "name": "outcome: CONTEXT",

+        "xml": "<outcome value=\"CONTEXT\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1833,

+        "y": 2134,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "6e965022.fe956"

+            ]

+        ]

+    },

+    {

+        "id": "309ed755.487e78",

+        "type": "set",

+        "name": "set new-part",

+        "xml": "<set>\n<parameter name=\"name-var\" value=\"`$propertiesIndex + '-naming-property-value'`\" />\n<parameter name=\"value-var\" value=\"`$property-name + '-' + $naming-policy-generate-name-input.test-source-endpoint-resolved-value` \" />\n<parameter name=\"new-part\" value=\"`$resolved-source-endpoint` \" />\n<!--<parameter name=\"new-part\" value=\"`$naming-policy-generate-name-input.test-source-endpoint-resolved-value` \" />-->",

+        "comments": "",

+        "x": 2129,

+        "y": 2225,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "c8d251a7.aea628",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: source-system CONTEXT name-value pair|new-part|constructed-name:\"/>\n<parameter name=\"field3\" value=\"`$name-var`\" />\n<parameter name=\"field4\" value=\"`$value-var`\" />\n<parameter name=\"field5\" value=\"`$new-part`\" />\n<parameter name=\"field6\" value=\"`$constructed-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 2113,

+        "y": 2309,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6e965022.fe956",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2108,

+        "y": 2134,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "309ed755.487e78",

+                "c8d251a7.aea628",

+                "5950ef04.ed81f",

+                "bfb38316.2b9e8"

+            ]

+        ]

+    },

+    {

+        "id": "5950ef04.ed81f",

+        "type": "set",

+        "name": "add new-part to constructed-value",

+        "xml": "<set>\n<parameter name=\"constructed-name\" value=\"`$constructed-name + $new-part` \"  />",

+        "comments": "",

+        "x": 2197,

+        "y": 2268,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "fcbf6f2f.6c2558",

+        "type": "outcome",

+        "name": "outcome: VNFNAME",

+        "xml": "<outcome value=\"VNFNAME\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 2515,

+        "y": 1988,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "d915ca2c.562cd8"

+            ]

+        ]

+    },

+    {

+        "id": "235c56b6.8b4c4a",

+        "type": "set",

+        "name": "set resolved-source-endpoint to input vm-name",

+        "xml": "<set>\n<parameter name=\"resolved-source-endpoint\" value=\"`$naming-policy-generate-name-input.vnf-name`\" />",

+        "comments": "",

+        "x": 3169,

+        "y": 2053,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "bfb38316.2b9e8",

+        "type": "execute",

+        "name": "SliPluginUtils - getArrtibuteValue for source-endpoint",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue' >\n\t<parameter name=\"source\" value=\"`$source-endpoint`\" />\n\t<parameter name=\"outputPath\" value=\"resolved-source-endpoint\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 2253,

+        "y": 2181,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c0a08bde.73447",

+        "type": "set",

+        "name": "set source-endpoint context value  * TEST ONLY *",

+        "xml": "<set>\n<parameter name=\"vnf-topology-operation-input.vnf-request-input.aic-cloud-region\" value=\"some-cloud-region\" />",

+        "comments": "",

+        "x": 2396,

+        "y": 2134,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "74241d5c.4f5c4c",

+        "type": "set",

+        "name": "set original-name",

+        "xml": "<set>\n<parameter name='original-name' value='`$source-endpoint`' />\n",

+        "comments": "",

+        "x": 2656,

+        "y": 2569,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "c6e9efbe.0a3b9",

+        "type": "execute",

+        "name": "SliStringUtils - split after ' '",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n    <parameter name=\"original_string\" value=\"`$original-name`\" />\n    <parameter name=\"regex\" value=\" \"/>\n    <parameter name=\"limit\" value=\"10\" />\n    <parameter name=\"ctx_memory_result_key\" value=\"sourceEndpointSplits\" />\n  \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2679.6666564941406,

+        "y": 2609.6667289733887,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "184d741.514f70c",

+        "type": "comment",

+        "name": "determime queryPrefix parameter by parsing query",

+        "info": "",

+        "comments": "",

+        "x": 2751,

+        "y": 2523,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "5a0ecd08.97aca4",

+        "type": "set",

+        "name": "set query-parameter-name",

+        "xml": "<set>\n<parameter name=\"query-parameter-name-underbars\" value=\"`$sourceEndpointSplits[1]`\"  />",

+        "comments": "",

+        "x": 2682,

+        "y": 2657,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "3b69d8e3.8663e8",

+        "type": "set",

+        "name": "set new-part (test)",

+        "xml": "<set>\n<parameter name=\"name-var\" value=\"`$propertiesIndex + '-naming-property-value'`\" />\n<parameter name=\"value-var\" value=\"`$property-name + '-' + $queryPfx.$query-parameter-name`\" />\n<parameter name=\"new-part\" value=\"`$queryPfx.$query-parameter-name` \" />",

+        "comments": "",

+        "x": 2974,

+        "y": 2629,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "64bf3864.33ff38",

+        "type": "outcome",

+        "name": "outcome: VNF",

+        "xml": "<outcome value=\"VNF\">\n<!-- <outcome value=\"MD-SAL\"> -->\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1018,

+        "y": 2765,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "a1e31157.0c5708"

+            ]

+        ]

+    },

+    {

+        "id": "b61eb81e.8bfd8",

+        "type": "set",

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

+        "xml": "<set>\n<parameter name='naming-policy-generate-name-output.vnf-name' value='`$generate-unique-name-output.generated-name`' />\n<parameter name='constructed-name' value='' />\n<parameter name='seq-length' value='' />",

+        "comments": "",

+        "x": 1259.5950927734375,

+        "y": 2844.97607421875,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "a1e31157.0c5708",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1201,

+        "y": 2804,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "fa59e379.19e768",

+                "b61eb81e.8bfd8"

+            ]

+        ]

+    },

+    {

+        "id": "fa59e379.19e768",

+        "type": "record",

+        "name": "record generated vnf-name",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: generated vnf-name|generate-unique-name-output.generated-name:\"/>\n<parameter name=\"field5\" value=\"`$naming-policy-generate-name-output.vnf-name`\" />\n<parameter name=\"field6\" value=\"`$generate-unique-name-output.generated-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1270,

+        "y": 2883,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a17c7654.15ff",

+        "type": "set",

+        "name": "set new-part (test)",

+        "xml": "<set>\n<parameter name=\"name-var\" value=\"`$propertiesIndex + '-naming-property-value'`\" />\n<parameter name='value-var' value=\"`$property-name + '-' + $queryPfx.`\" />\n<parameter name='new-part' value='`$queryPrefix.`' />\n<!--<parameter name='get-data-from-policy-output.' value='`$jsonContextPrefix.content.policy-data.`'  />-->",

+        "comments": "",

+        "x": 2976,

+        "y": 2669,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "e48db706.321a18",

+        "type": "execute",

+        "name": "SliStringUtils - replace \"_\" with \"-\"",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n\t<parameter name=\"source\" value=\"`$query-parameter-name-underbars`\"/>\n\t<parameter name=\"outputPath\" value=\"tmp.query-parameter-name-dashes\"/>\n\t<parameter name=\"target\" value=\"_\"/>\n\t<parameter name=\"replacement\" value=\"-\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2701,

+        "y": 2696,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4f4d8a88.0ea29c",

+        "type": "execute",

+        "name": "SliPluginUtils - getArrtibuteValue for query-parameter",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue' >\n\t<parameter name=\"source\" value=\"`$full-query-param-name`\" />\n\t<parameter name=\"outputPath\" value=\"resolved-query-parameter\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 2763,

+        "y": 2781,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ff7274bf.81bd7",

+        "type": "set",

+        "name": "set full-query-param-name",

+        "xml": "<set>\n<parameter name=\"full-query-param-name\" value=\"`'queryPfx.' + $tmp.query-parameter-name-dashes`\" />",

+        "comments": "",

+        "x": 2679,

+        "y": 2738,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "674dfafd.50cfc4",

+        "type": "outcome",

+        "name": "outcome: AAI",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1801,

+        "y": 2954,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "5d880e46.1dde38"

+            ]

+        ]

+    },

+    {

+        "id": "4a78e468.b7611c",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2133,

+        "y": 385,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "a805a9b0.7607b8",

+                "88ca34e0.05a1c8"

+            ]

+        ]

+    },

+    {

+        "id": "7aa39627.b38648",

+        "type": "comment",

+        "name": "if source-system is blank expect an increment-sequence block",

+        "info": "Example:\n\n{\n\t\"property-name\": \"NETWORK_NUMBER\",\n\t\"increment-sequence\": {\n\t\t\"scope\": \"PRECEEDING\",\n\t\t\"start-value\": \"001\",\n\t\t\"length\": \"3\",\n\t\t\"increment\": \"1\"\n\t}\n},",

+        "comments": "",

+        "x": 2238,

+        "y": 3819,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "5edd068d.04c6b",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2069.0001220703125,

+        "y": 3333,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "17d9f03b.1b77a",

+                "e40ef10a.685198",

+                "bd8141e4.6613a8",

+                "7796fb8b.f063fc",

+                "9505e5aa.984de8",

+                "d8b1bd71.3f958",

+                "2b8edb09.8ecbd4"

+            ]

+        ]

+    },

+    {

+        "id": "17d9f03b.1b77a",

+        "type": "set",

+        "name": "set tenant id, cloud region id and aaiQueryKey",

+        "xml": "<set>\n<parameter name=\"`'tmp.' + $aaiSourceEndpointKeySplits[0]`\" value= \"`$aaiQueryKeySplits[0]`\"/>\n<parameter name=\"`'tmp.' + $aaiSourceEndpointKeySplits[1]`\" value=\"`$aaiQueryKeySplits[1]`\" />\n<parameter name=\"`'tmp.' + $aaiSourceEndpointKeySplits[2]`\" value=\"`$aaiQueryKeySplits[2]`\" />\n<!--<parameter name=\"aaiQueryKeyPart1\" value=\"cloud-region.cloud-owner = 'att-aic' AND \" />-->\n<parameter name=\"aaiQueryKeyPart1\" value=\"`$aaiSourceEndpointKeySplits[0]`\"/>\n<parameter name=\"aaiQueryKeyPart2\" value=\" = '\" />\n<parameter name=\"aaiQueryKeyPart3\" value=\"`$aaiQueryKeySplits[0]`\" />\n<parameter name=\"aaiQueryKeyPart4\" value=\"' AND \" />\n<parameter name=\"aaiQueryKeyPart5\" value=\"`$aaiSourceEndpointKeySplits[1]`\"/>\n<parameter name=\"aaiQueryKeyPart6\" value=\" = '\" />\n<parameter name=\"aaiQueryKeyPart7\" value=\"`$aaiQueryKeySplits[1]`\" />\n<parameter name=\"aaiQueryKeyPart8\" value=\"' AND \" />\n<parameter name=\"aaiQueryKeyPart9\" value=\"`$aaiSourceEndpointKeySplits[2]`\"/>\n<parameter name=\"aaiQueryKeyPart10\" value=\" = '\" />\n<parameter name=\"aaiQueryKeyPart11\" value=\"`$aaiQueryKeySplits[2]`\" />\n<parameter name=\"aaiQueryKeyPart12\" value=\"'\" />\n<parameter name=\"aaiQueryKey\" value=\"`$aaiQueryKeyPart1 + $aaiQueryKeyPart2 + $aaiQueryKeyPart3 + $aaiQueryKeyPart4 + $aaiQueryKeyPart5 + $aaiQueryKeyPart6 + $aaiQueryKeyPart7 + $aaiQueryKeyPart8 + $aaiQueryKeyPart9 + $aaiQueryKeyPart10 + $aaiQueryKeyPart11 + $aaiQueryKeyPart12 `\" />\n<!-- works without single quotes <parameter name=\"aaiQueryKey\" value=\"`'cloud-region.cloud-owner = att-aic AND ' + $aaiSourceEndpointKeySplits[0] + ' = ' + $aaiQueryKeySplits[0] + ' AND ' + $aaiSourceEndpointKeySplits[1] + ' = ' + $aaiQueryKeySplits[1]`\" />-->\n<!-- key=\"cloud-region.cloud-owner = '$a' AND cloud-region.cloud-region-id = '$b' AND tenant.tenant-id = '$c' AND vserver.vserver-id = '$d'\" -->\n<!--<parameter name=\"`'get-data-from-policy-output[' + $policyDataIndex + ']'`.\" value= '`$jsonContextPrefix.content.policy-data[$policyDataIndex].`' />-->",

+        "comments": "",

+        "x": 2194.93359375,

+        "y": 3430,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "7796fb8b.f063fc",

+        "type": "get-resource",

+        "name": "get-resource tenant",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource='`$resource`'\n        key='`$aaiQueryKey`'\n        pfx=\"`'aai.' + $resource`\" local-only='true' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 2113.40025138855,

+        "y": 3530.9997606277466,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "8148fec6.090f8",

+                "4411aef4.94b2b",

+                "35eaa816.c441c8"

+            ]

+        ]

+    },

+    {

+        "id": "35eaa816.c441c8",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2356.770612716675,

+        "y": 3514.0366258621216,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "64d5dd16.9a8ecc"

+            ]

+        ]

+    },

+    {

+        "id": "8148fec6.090f8",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2360.26157951355,

+        "y": 3555.6108446121216,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "aa9f0cfa.cd152"

+            ]

+        ]

+    },

+    {

+        "id": "4411aef4.94b2b",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2356.59458732605,

+        "y": 3597.9440965652466,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "aa9f0cfa.cd152"

+            ]

+        ]

+    },

+    {

+        "id": "64d5dd16.9a8ecc",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2536.7705688476562,

+        "y": 3514.036745071411,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "f9523f93.ccc208"

+            ]

+        ]

+    },

+    {

+        "id": "aa9f0cfa.cd152",

+        "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=\"Tenant not found in AAI\" />\n\n",

+        "comments": "",

+        "x": 2530.7704849243164,

+        "y": 3562.999653816223,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "f9523f93.ccc208",

+        "type": "set",

+        "name": "set tenant name",

+        "xml": "<set>\n<parameter name='tmp.tenant-name' value='`$aai.tenant.tenant-name`' />\n\n\n",

+        "comments": "",

+        "x": 2723.733673095703,

+        "y": 3514.6664867401123,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "d01a537b.d728b",

+        "type": "comment",

+        "name": "determime resource and keys for AAI query by parsing source-endpoint",

+        "info": "",

+        "comments": "",

+        "x": 2259,

+        "y": 2913,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "aba0d492.8c0b78",

+        "type": "switchNode",

+        "name": "switch input.vm-name",

+        "xml": "<switch test='`$naming-policy-generate-name-input.vm-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2733,

+        "y": 1905,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "9b3bb802.d44d88",

+                "47f2fc25.56e6ec"

+            ]

+        ]

+    },

+    {

+        "id": "9b3bb802.d44d88",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2916,

+        "y": 1880,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "5cbde5c1.5dd7e4"

+            ]

+        ]

+    },

+    {

+        "id": "5cbde5c1.5dd7e4",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3044,

+        "y": 1880,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "74010697.452c08",

+                "f7c0210e.b94548"

+            ]

+        ]

+    },

+    {

+        "id": "74010697.452c08",

+        "type": "GenericXML",

+        "name": "record",

+        "xml": "<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: required input.vm-name is not set\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 3193,

+        "y": 1839,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f7c0210e.b94548",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='506' />\n<parameter name='error-message' value='naming-policy-generate-name: required input.vm-name is not set' />\n",

+        "comments": "",

+        "x": 3210,

+        "y": 1880,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "47f2fc25.56e6ec",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2916,

+        "y": 1925,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "aa207226.ec6ef8"

+            ]

+        ]

+    },

+    {

+        "id": "d915ca2c.562cd8",

+        "type": "switchNode",

+        "name": "switch input.vnf-name",

+        "xml": "<switch test='`$naming-policy-generate-name-input.vnf-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2734,

+        "y": 1988,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "b2f3958f.8a23a8",

+                "a2914e1f.70d8"

+            ]

+        ]

+    },

+    {

+        "id": "a2914e1f.70d8",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2917,

+        "y": 2013,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "235c56b6.8b4c4a"

+            ]

+        ]

+    },

+    {

+        "id": "b2f3958f.8a23a8",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2917,

+        "y": 1968,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "7f0313.e1800cec"

+            ]

+        ]

+    },

+    {

+        "id": "7f0313.e1800cec",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3045,

+        "y": 1968,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "17dc3fdc.7a4138",

+                "7ba2023a.2b314c"

+            ]

+        ]

+    },

+    {

+        "id": "17dc3fdc.7a4138",

+        "type": "GenericXML",

+        "name": "record",

+        "xml": "<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: required input.vnf-name is not set\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 3193,

+        "y": 1969,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7ba2023a.2b314c",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='506' />\n<parameter name='error-message' value='naming-policy-generate-name: required input.vnf-name is not set' />\n",

+        "comments": "",

+        "x": 3210,

+        "y": 2010,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "6d8b2a02.46fe54",

+        "type": "outcome",

+        "name": "outcome: NETWORK",

+        "xml": "<outcome value=\"NETWORK\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1033,

+        "y": 2921,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "d8f62d02.0b7c68"

+            ]

+        ]

+    },

+    {

+        "id": "d8f62d02.0b7c68",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1216,

+        "y": 2960,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "111d7b38.aff69d",

+                "6a27ae77.c59aa8"

+            ]

+        ]

+    },

+    {

+        "id": "6a27ae77.c59aa8",

+        "type": "set",

+        "name": "set generated network-name",

+        "xml": "<set>\n<parameter name='naming-policy-generate-name-output.network-name' value='`$generate-unique-name-output.generated-name`' />\n<parameter name='constructed-name' value='' />\n<parameter name='seq-length' value='' />",

+        "comments": "",

+        "x": 1274.5950927734375,

+        "y": 3000.97607421875,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "111d7b38.aff69d",

+        "type": "record",

+        "name": "record generated network-name",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: generated network-name|generate-unique-name-output.generated-name:\"/>\n<parameter name=\"field5\" value=\"`$naming-policy-generate-name-output.network-name`\" />\n<parameter name=\"field6\" value=\"`$generate-unique-name-output.generated-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1285,

+        "y": 3039,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6c6e0868.85ff6",

+        "type": "for",

+        "name": "for each naming-property",

+        "xml": "<for index='propIndex' start='0' end='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2665,

+        "y": 3177,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "f6e46bdd.b61188"

+            ]

+        ]

+    },

+    {

+        "id": "f6e46bdd.b61188",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2926,

+        "y": 3178,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "5529c6a3.6c9ba",

+                "4707cc40.cacf7c",

+                "bf26bf2f.b9fbd8"

+            ]

+        ]

+    },

+    {

+        "id": "4707cc40.cacf7c",

+        "type": "execute",

+        "name": "SliStringUtils - trim property-name",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >\n    <parameter name=\"source\" value=\"`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].property-name`\" />\n    <parameter name=\"outputPath\" value=\"property-name-trimmed\" />\n  \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3051,

+        "y": 3227,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bf26bf2f.b9fbd8",

+        "type": "set",

+        "name": "set property-name",

+        "xml": "<set>\n<!--<parameter name='property-name' value=\"`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`\"  />-->\n<parameter name='property-name' value=\"`$property-name-trimmed`\"  />\n",

+        "comments": "",

+        "x": 3005,

+        "y": 3269,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "5529c6a3.6c9ba",

+        "type": "switchNode",

+        "name": "switch property-name == key-value",

+        "xml": "<switch test='`$property-name == $key-value`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3061,

+        "y": 3312,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "ef6f30a6.fb9468"

+            ]

+        ]

+    },

+    {

+        "id": "ef6f30a6.fb9468",

+        "type": "outcome",

+        "name": "outcome: key match",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3105,

+        "y": 3354,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "65bb9041.eadd68"

+            ]

+        ]

+    },

+    {

+        "id": "65bb9041.eadd68",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3082,

+        "y": 3397,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "c6d6d4f8.dd3a9",

+                "4950a758.f5058"

+            ]

+        ]

+    },

+    {

+        "id": "4950a758.f5058",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: key match: key-value|property-name:\"/>\n<parameter name=\"field3\" value=\"`$key-value`\" />\n<parameter name=\"field4\" value=\"`$property-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 3209,

+        "y": 3397,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c6d6d4f8.dd3a9",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3133,

+        "y": 3493,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "4b9e0e4c.6cb3e",

+                "7cab5b4.a2dad24",

+                "abedb075.44d8"

+            ]

+        ]

+    },

+    {

+        "id": "4b9e0e4c.6cb3e",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: propertiesIndex|source-endpoint|source-system|property-name:\"/>\n<parameter name='field3' value='`$propertiesIndex`' />\n<parameter name='field4' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].source-endpoint`' />\n<parameter name='field5' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].source-system`' />\n<parameter name='field6' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].property-name`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 3255,

+        "y": 3492,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7cab5b4.a2dad24",

+        "type": "set",

+        "name": "set naming-property vars",

+        "xml": "<set>\n<parameter name='source-system' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].source-system`'  />\n<parameter name='source-endpoint' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].source-endpoint`'  />\n<parameter name='property-name' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].property-name`'  />\n<parameter name='property-value' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].property-value`'  />\n",

+        "comments": "",

+        "x": 3307,

+        "y": 3530,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "abedb075.44d8",

+        "type": "switchNode",

+        "name": "switch property-value",

+        "xml": "<switch test='`$property-value`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3298,

+        "y": 3572,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "9d508caf.68d6b8",

+                "168b952e.fa12c3"

+            ]

+        ]

+    },

+    {

+        "id": "9d508caf.68d6b8",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3493,

+        "y": 3573,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "aa999573.c5828"

+            ]

+        ]

+    },

+    {

+        "id": "aa999573.c5828",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3529,

+        "y": 3626,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "88afe8a0.740cb"

+            ]

+        ]

+    },

+    {

+        "id": "88afe8a0.740cb",

+        "type": "switchNode",

+        "name": "switch source-system",

+        "xml": "<switch test='`$source-system`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3702,

+        "y": 3627,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "fbfee537.2b391"

+            ]

+        ]

+    },

+    {

+        "id": "364b9242.460e2e",

+        "type": "comment",

+        "name": "Resolve the value of the naming-property",

+        "info": "For each naming-property, get the value using the source-endpoinr and the source-system if the property-name is part of the naming-recipe.",

+        "comments": "",

+        "x": 3238,

+        "y": 3447,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "fbfee537.2b391",

+        "type": "outcome",

+        "name": "outcome: CONTEXT",

+        "xml": "<outcome value=\"CONTEXT\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 3751,

+        "y": 3692,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "4148c29c.d5dd14"

+            ]

+        ]

+    },

+    {

+        "id": "a72fd538.10a5c8",

+        "type": "set",

+        "name": "set key-value",

+        "xml": "<set>\n<parameter name='key-value' value=\"`$aaiSourceEndpointKeySplits[$keyIndex]`\"  />",

+        "comments": "",

+        "x": 2625,

+        "y": 3131,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "4148c29c.d5dd14",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 4026,

+        "y": 3692,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "bfdc7cc7.350b88",

+                "5ccbff14.99e5d8",

+                "76cfcc8f.f93ec4",

+                "df11b04c.5256d8"

+            ]

+        ]

+    },

+    {

+        "id": "fbae139a.467f08",

+        "type": "set",

+        "name": "set source-endpoint context value  * TEST ONLY *",

+        "xml": "<set>\n<parameter name=\"network-topology-operation-input.network-request-input.aic-cloud-region\" value=\"CR-rwan670\" />\n<parameter name=\"network-topology-operation-input.network-request-input.tenant\" value=\"s6709b7252b6484d89432611cfb2491b\" />",

+        "comments": "",

+        "x": 4314,

+        "y": 3692,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "76cfcc8f.f93ec4",

+        "type": "execute",

+        "name": "SliPluginUtils - getArrtibuteValue for source-endpoint",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue' >\n\t<parameter name=\"source\" value=\"`$source-endpoint`\" />\n\t<parameter name=\"outputPath\" value=\"resolved-source-endpoint\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 4171,

+        "y": 3739,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bfdc7cc7.350b88",

+        "type": "set",

+        "name": "set new-part",

+        "xml": "<set>\n<parameter name=\"aai-name-var\" value=\"`$propertiesIndex + '-naming-property-value'`\" />\n<parameter name=\"aai-value-var\" value=\"`$property-name + '-' + $naming-policy-generate-name-input.test-source-endpoint-resolved-value` \" />\n<parameter name=\"aai-new-part\" value=\"`$resolved-source-endpoint` \" />\n<!--<parameter name=\"new-part\" value=\"`$naming-policy-generate-name-input.test-source-endpoint-resolved-value` \" />-->",

+        "comments": "",

+        "x": 4047,

+        "y": 3783,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "8124b794.18f208",

+        "type": "set",

+        "name": "add new-part to constructed-value",

+        "xml": "<set>\n<parameter name=\"aai-constructed-name\" value=\"`$aai-new-part `\"  />",

+        "comments": "",

+        "x": 4498,

+        "y": 3802,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "5ccbff14.99e5d8",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: source-system CONTEXT name-value pair|aai-new-part|aai-constructed-name:\"/>\n<parameter name=\"field3\" value=\"`$aai-name-var`\" />\n<parameter name=\"field4\" value=\"`$aai-value-var`\" />\n<parameter name=\"field5\" value=\"`$aai-new-part`\" />\n<parameter name=\"field6\" value=\"`$aai-constructed-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 4030,

+        "y": 3882,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a450f8b5.62efe",

+        "type": "comment",

+        "name": "Parse AAI keys out of the source-endpoint",

+        "info": "",

+        "comments": "",

+        "x": 2485,

+        "y": 2998,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "c258ae47.3a09b8",

+        "type": "comment",

+        "name": "Resolve the value for each key",

+        "info": "",

+        "comments": "",

+        "x": 2452,

+        "y": 3035,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "c19923a4.8cc7d8",

+        "type": "execute",

+        "name": "execute - Kevin test split",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' > \n    <parameter name=\"original_string\" value='Hello:World,Hello\\\\Universe' /> \n    <parameter name=\"regex\" value='\\\\\\\\|:'/> \n    <parameter name=\"limit\" value=\"10\" /> \n    <parameter name=\"ctx_memory_result_key\" value=\"aaiSourceEndpointSplits\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 2432,

+        "y": 2963,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5d880e46.1dde38",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2063,

+        "y": 2954,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "2b3f82f2.0915c6",

+                "eff13281.c06a2",

+                "4cf33561.8a3154",

+                "9ef01647.feb57",

+                "b7da91f.e2c397",

+                "5edd068d.04c6b"

+            ]

+        ]

+    },

+    {

+        "id": "2b3f82f2.0915c6",

+        "type": "execute",

+        "name": "SliStringUtils - split after |",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n    <parameter name=\"original_string\" value=\"`$original-name`\" />\n    <parameter name=\"regex\" value=\"\\|\"/>\n    <parameter name=\"limit\" value=\"10\" />\n    <parameter name=\"ctx_memory_result_key\" value=\"aaiSourceEndpointRegionKeySplits\" />\n  \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2126.6666259765625,

+        "y": 3037.666748046875,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "eff13281.c06a2",

+        "type": "set",

+        "name": "set resource and keys; initialize aai-constructed-name",

+        "xml": "<set>\n<parameter name=\"resource\" value=\"`$aaiSourceEndpointRegionKeySplits[0]`\"  />\n<parameter name=\"keys\" value=\"`$aaiSourceEndpointRegionKeySplits[1]`\"  />\n<parameter name='aai-constructed-name' value=\"\"  />",

+        "comments": "",

+        "x": 2204,

+        "y": 3078,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "4cf33561.8a3154",

+        "type": "set",

+        "name": "set original-name",

+        "xml": "<set>\n<parameter name='original-name' value='`$source-endpoint`' />\n",

+        "comments": "",

+        "x": 2098,

+        "y": 2998,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "9ef01647.feb57",

+        "type": "for",

+        "name": "for each AAI key (not the initial split which is region)",

+        "xml": "<for index='keyIndex' start='0' end='`$aaiSourceEndpointKeySplits_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2203,

+        "y": 3162,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "e160f4e5.a06f4"

+            ]

+        ]

+    },

+    {

+        "id": "e160f4e5.a06f4",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2471,

+        "y": 3162,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "a72fd538.10a5c8",

+                "6c6e0868.85ff6"

+            ]

+        ]

+    },

+    {

+        "id": "5de7ccf1.828bdc",

+        "type": "comment",

+        "name": "After aai-constructed-value is resolved from keys use the resolved values in AAi query",

+        "info": "",

+        "comments": "",

+        "x": 2302.0001220703125,

+        "y": 3289,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "b7da91f.e2c397",

+        "type": "execute",

+        "name": "SliStringUtils - split after :",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2122,

+        "y": 3120,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "392390c1.f6aa4",

+        "type": "comment",

+        "name": "use same modelsIndex but reset propIndex",

+        "info": "",

+        "comments": "",

+        "x": 2717,

+        "y": 3220,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "bd8141e4.6613a8",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: Call AAI query for keys aai-constructed-name|region|aaiQueryKey:\"/>\n<parameter name=\"field3\" value=\"`$aai-constructed-name`\" />\n<parameter name=\"field4\" value=\"`$resource`\" />\n<parameter name=\"field5\" value=\"`$aaiQueryKey`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 2075,

+        "y": 3479,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e40ef10a.685198",

+        "type": "execute",

+        "name": "SliStringUtils - split after |",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n    <parameter name=\"original_string\" value=\"`$aai-constructed-name`\" />\n    <parameter name=\"regex\" value=\"\\|\"/>\n    <parameter name=\"limit\" value=\"10\" />\n    <parameter name=\"ctx_memory_result_key\" value=\"aaiQueryKeySplits\" />\n  \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2131,

+        "y": 3378,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "36bb1e3a.83fb22",

+        "type": "set",

+        "name": "add new-part to constructed-value",

+        "xml": "<set>\n<parameter name=\"aai-constructed-name\" value=\"`$aai-constructed-name + '|' + $aai-new-part`\"  />",

+        "comments": "",

+        "x": 4500,

+        "y": 3848,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "df11b04c.5256d8",

+        "type": "switchNode",

+        "name": "switch aai-constructed-name",

+        "xml": "<switch test='`$aai-constructed-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4099,

+        "y": 3836,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "cb771f61.bc0538",

+                "2fe999f0.5f7d26"

+            ]

+        ]

+    },

+    {

+        "id": "cb771f61.bc0538",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 4291,

+        "y": 3803,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "8124b794.18f208"

+            ]

+        ]

+    },

+    {

+        "id": "2fe999f0.5f7d26",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 4291,

+        "y": 3848,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "36bb1e3a.83fb22"

+            ]

+        ]

+    },

+    {

+        "id": "168b952e.fa12c3",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3498,

+        "y": 4166,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "fc710544.23ca4"

+            ]

+        ]

+    },

+    {

+        "id": "fc710544.23ca4",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3528,

+        "y": 4208,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "4e54e664.6ea89",

+                "8c40d3d7.3ec928",

+                "ef94dfef.3cd2f8"

+            ]

+        ]

+    },

+    {

+        "id": "4e54e664.6ea89",

+        "type": "set",

+        "name": "set new-part",

+        "xml": "<set>\n<!-- until PM is passing the correct source-endpoint for memory value, \n     use one passed via executeDG test\n\n<parameter name=\"`$propertiesIndex` + '-naming-property-value'\" value=\"` $property-name + '-' + $source-endpoint `\"  />\n-->\n<parameter name=\"aai-name-var\" value=\"`$propertiesIndex + '-naming-property-value'`\" />\n<parameter name=\"aai-value-var\" value=\"`$property-name + '-' + $property-value` \" />\n<parameter name=\"aai-new-part\" value=\"`$property-value` \" />",

+        "comments": "",

+        "x": 3546,

+        "y": 4245,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "af1ad1df.d33788",

+        "type": "comment",

+        "name": "If property-value was set use it instead of constructing a value",

+        "info": "",

+        "comments": "",

+        "x": 3667,

+        "y": 4127,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "8c40d3d7.3ec928",

+        "type": "switchNode",

+        "name": "switch aai-constructed-name",

+        "xml": "<switch test='`$aai-constructed-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3600,

+        "y": 4289,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "c6bf903.2b1727",

+                "add4aaee.f672f8"

+            ]

+        ]

+    },

+    {

+        "id": "c6bf903.2b1727",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3789,

+        "y": 4270,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "16a761fa.44425e"

+            ]

+        ]

+    },

+    {

+        "id": "add4aaee.f672f8",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3789,

+        "y": 4315,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "1e1ef54.4364e8b"

+            ]

+        ]

+    },

+    {

+        "id": "16a761fa.44425e",

+        "type": "set",

+        "name": "add new-part to constructed-value",

+        "xml": "<set>\n<parameter name=\"aai-constructed-name\" value=\"`$aai-new-part `\"  />",

+        "comments": "",

+        "x": 3996,

+        "y": 4269,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "1e1ef54.4364e8b",

+        "type": "set",

+        "name": "add new-part to constructed-value",

+        "xml": "<set>\n<parameter name=\"aai-constructed-name\" value=\"`$aai-constructed-name + '|' + $aai-new-part`\"  />",

+        "comments": "",

+        "x": 3998,

+        "y": 4315,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "ef94dfef.3cd2f8",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: source-system CONTEXT name-value pair|aai-new-part|aai-constructed-name:\"/>\n<parameter name=\"field3\" value=\"`$aai-name-var`\" />\n<parameter name=\"field4\" value=\"`$aai-value-var`\" />\n<parameter name=\"field5\" value=\"`$aai-new-part`\" />\n<parameter name=\"field6\" value=\"`$aai-constructed-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 3535,

+        "y": 4329,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "81a52062.6b654",

+        "type": "outcome",

+        "name": "outcome: SERVICE",

+        "xml": "<outcome value=\"SERVICE\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1040,

+        "y": 3089,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "c968ece2.e861b8"

+            ]

+        ]

+    },

+    {

+        "id": "c968ece2.e861b8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1214,

+        "y": 3131,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "5961d44e.b60844",

+                "b4a18786.5a349"

+            ]

+        ]

+    },

+    {

+        "id": "b4a18786.5a349",

+        "type": "set",

+        "name": "set generated service-name",

+        "xml": "<set>\n<parameter name='naming-policy-generate-name-output.service-name' value='`$generate-unique-name-output.generated-name`' />\n<parameter name='constructed-name' value='' />\n<parameter name='seq-length' value='' />",

+        "comments": "",

+        "x": 1281.5950927734375,

+        "y": 3168.97607421875,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "5961d44e.b60844",

+        "type": "record",

+        "name": "record generated service-name",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: generated service-name|generate-unique-name-output.generated-name:\"/>\n<parameter name=\"field5\" value=\"`$naming-policy-generate-name-output.service-name`\" />\n<parameter name=\"field6\" value=\"`$generate-unique-name-output.generated-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1292,

+        "y": 3207,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "643f91a1.6e381",

+        "type": "set",

+        "name": "set tenant name  * TEST ONLY *",

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

+        "comments": "",

+        "x": 2590,

+        "y": 3609,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "2b8edb09.8ecbd4",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: source-system AAI name-value pair|new-part|constructed-name:\"/>\n<parameter name=\"field3\" value=\"`$name-var`\" />\n<parameter name=\"field4\" value=\"`$value-var`\" />\n<parameter name=\"field5\" value=\"`$new-part`\" />\n<parameter name=\"field6\" value=\"`$constructed-name`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 2080,

+        "y": 3679,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9505e5aa.984de8",

+        "type": "set",

+        "name": "set new-part",

+        "xml": "<set>\n<parameter name=\"name-var\" value=\"`$propertiesIndex + '-naming-property-value'`\" />\n<parameter name=\"value-var\" value=\"`$property-name + '-' + $tmp.tenant-name`\" />\n<parameter name=\"new-part\" value=\"`$tmp.tenant-name` \" />",

+        "comments": "",

+        "x": 2094,

+        "y": 3586,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "d8b1bd71.3f958",

+        "type": "set",

+        "name": "add new-part to constructed-value",

+        "xml": "<set>\n<parameter name=\"constructed-name\" value=\"`$constructed-name + $new-part` \"  />\n",

+        "comments": "",

+        "x": 2160,

+        "y": 3630,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "1c27c208.07cec6",

+        "type": "comment",

+        "name": "TO DO: Add other valid source-systems",

+        "info": "",

+        "comments": "",

+        "x": 3804,

+        "y": 3956,

+        "z": "5fbfaf64.570368",

+        "wires": []

+    },

+    {

+        "id": "7aabbb44.838e4c",

+        "type": "switchNode",

+        "name": "switch input.action",

+        "xml": "<switch test='`$naming-policy-generate-name-input.action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1352,

+        "y": 949,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "65801471.a8cfe4",

+                "dd90ae76.d8d0a",

+                "a5ab2eba.d8837"

+            ]

+        ]

+    },

+    {

+        "id": "65801471.a8cfe4",

+        "type": "other",

+        "name": "Blank",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1610,

+        "y": 949,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "8efa90f2.cfd8a"

+            ]

+        ]

+    },

+    {

+        "id": "8efa90f2.cfd8a",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1741,

+        "y": 948,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "e3dff93c.c00fa8"

+            ]

+        ]

+    },

+    {

+        "id": "e3dff93c.c00fa8",

+        "type": "GenericXML",

+        "name": "record",

+        "xml": "<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: input.action is not set or invalid\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1878,

+        "y": 948,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dd90ae76.d8d0a",

+        "type": "outcome",

+        "name": "ASSIGN | DELETE",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1642,

+        "y": 1032,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a5ab2eba.d8837",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1607,

+        "y": 990,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "8efa90f2.cfd8a"

+            ]

+        ]

+    },

+    {

+        "id": "80631453.603ea8",

+        "type": "switchNode",

+        "name": "switch input.action",

+        "xml": "<switch test='`$naming-policy-generate-name-input.action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 236.5,

+        "y": 233,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "751cad23.e2ffa4",

+                "d9b96b5c.478e6"

+            ]

+        ]

+    },

+    {

+        "id": "751cad23.e2ffa4",

+        "type": "other",

+        "name": "ASSIGN",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 399,

+        "y": 233,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "5d83b069.18ee5"

+            ]

+        ]

+    },

+    {

+        "id": "d9b96b5c.478e6",

+        "type": "other",

+        "name": "DELETE",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 210,

+        "y": 368,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "6edde0fc.72ccc"

+            ]

+        ]

+    },

+    {

+        "id": "d16b1533.2821c8",

+        "type": "switchNode",

+        "name": "switch input.action",

+        "xml": "<switch test='`$naming-policy-generate-name-input.action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1944,

+        "y": 755,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "a7458e5b.9b3d2",

+                "ee1bf64b.2c78b"

+            ]

+        ]

+    },

+    {

+        "id": "a7458e5b.9b3d2",

+        "type": "outcome",

+        "name": "ASSIGN",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2113,

+        "y": 755,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "47b7d396.98efbc"

+            ]

+        ]

+    },

+    {

+        "id": "47b7d396.98efbc",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2248,

+        "y": 755,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "3a5e7060.07154",

+                "2e5670a7.e2838"

+            ]

+        ]

+    },

+    {

+        "id": "ee1bf64b.2c78b",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2116,

+        "y": 710,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            [

+                "fbe9f97c.69471"

+            ]

+        ]

+    },

+    {

+        "id": "fbe9f97c.69471",

+        "type": "GenericXML",

+        "name": "record",

+        "xml": "<record  plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"LAINA: naming-policy-generate-name: input.policy-instance-name is not set but input.policy is not ASSIGN\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2250,

+        "y": 710,

+        "z": "5fbfaf64.570368",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_naming-policy-generate-unique-name.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_naming-policy-generate-unique-name.json
new file mode 100644
index 0000000..05af1c1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_naming-policy-generate-unique-name.json
@@ -0,0 +1 @@
+[{"id":"9694d6d1.d85758","type":"dgstart","name":"DGSTART","outputs":1,"x":104.99999237060547,"y":43.36603832244873,"z":"7cae5554.a7c84c","wires":[["6d0e8921.574e78"]]},{"id":"6d0e8921.574e78","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":395.67856216430664,"y":43.17558670043945,"z":"7cae5554.a7c84c","wires":[["8ce3613a.00883"]]},{"id":"8ce3613a.00883","type":"method","name":"method naming-policy-generate-unique-name","xml":"<method rpc='naming-policy-generate-unique-name' mode='sync'>\n","comments":"","outputs":1,"x":237.91672134399414,"y":115.71127033233643,"z":"7cae5554.a7c84c","wires":[["e55fe329.e072d"]]},{"id":"3063c4c.990bf3c","type":"comment","name":"naming-policy-generate-unique-name","info":"Input arguments:\ngenerate-unique-name-input.index-table-name - name of INDEX table\ngenerate-unique-name-input.index-table-prefix-column - name of prefix column in above table\ngenerate-unique-name-input.name-table-name - name of table holding all generated names\ngenerate-unique-name-input.index-length - non-null digit if index should be fixed length\n\nOutput arguments:\ngenerate-unique-name-output.generated-name - generated name (null if error)\ngenerate-unique-name-output.error-message - error message (non-null if error)\n","comments":"","x":792.559154510498,"y":36.66666793823242,"z":"7cae5554.a7c84c","wires":[]},{"id":"e55fe329.e072d","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":179.99999237060547,"y":189.61603832244873,"z":"7cae5554.a7c84c","wires":[["4e5a9b52.d59394"]]},{"id":"4e5a9b52.d59394","type":"switchNode","name":"switch generate-unique-name-input.action","xml":"<switch test='`$generate-unique-name-input.action`'>\n","comments":"","outputs":1,"x":285.0000228881836,"y":254.61604118347168,"z":"7cae5554.a7c84c","wires":[["c79681c5.c85a6","f782c2fe.b50f8","34e598cd.547d08","5f9e5e0c.20be2"]]},{"id":"c79681c5.c85a6","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":556.8332252502441,"y":254.8660774230957,"z":"7cae5554.a7c84c","wires":[["629ca82f.7cdc88"]]},{"id":"629ca82f.7cdc88","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.action not supplied' />\n","comments":"","x":727.5000019073486,"y":254.1993808746338,"z":"7cae5554.a7c84c","wires":[]},{"id":"f782c2fe.b50f8","type":"outcome","name":"ASSIGN","xml":"<outcome value='ASSIGN'>","comments":"","outputs":1,"x":561.2500610351562,"y":308.3660726547241,"z":"7cae5554.a7c84c","wires":[["826b2865.7e0898"]]},{"id":"34e598cd.547d08","type":"outcome","name":"DELETE","xml":"<outcome value='DELETE'>","comments":"","outputs":1,"x":564.2619934082031,"y":1548.4612164497375,"z":"7cae5554.a7c84c","wires":[["66b3b9cb.e29ee8"]]},{"id":"1e2c4141.71b96f","type":"call","name":"call generate-unique-name","xml":"<call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\n","comments":"","outputs":1,"x":1385.2381629943848,"y":926.4256224632263,"z":"7cae5554.a7c84c","wires":[["da75856f.16a8f8"]]},{"id":"826b2865.7e0898","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":730.7500648498535,"y":308.3660430908203,"z":"7cae5554.a7c84c","wires":[["810613ad.81995","8621dfc4.da743","42af3be3.1c7914","413b7679.6a9c48","915b6cf6.6a091","1f764a1a.a7d3f6","bb2b984e.06a468"]]},{"id":"b4913758.6d64d8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-message' \n\tvalue=\"`'Encountered error in naming-policy-generate-unique-name: ' + \n\t\t$generate-unique-name-output.error-message`\" />\n","comments":"","x":2001.4760627746582,"y":977.4612526893616,"z":"7cae5554.a7c84c","wires":[]},{"id":"6df1aa76.b53b44","type":"save","name":"query AAI: GET /nodes/object?key","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"custom-query\"\n      key=\"format = 'resource'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.nodes-query\">\n      <parameter name=\"start[0]\" value=\"`$tmp.gname.custom-query-string + \n\t\t\t$encoded-name`\" />\n      <parameter name=\"start_length\" value=\"1\" />","comments":"","outputs":1,"x":1409.202579498291,"y":1072.6279282569885,"z":"7cae5554.a7c84c","wires":[["a660d7e9.046738","e8a90561.64a3d8","c66c84fb.d66958"]]},{"id":"a660d7e9.046738","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1679.881202697754,"y":1136.1993236541748,"z":"7cae5554.a7c84c","wires":[["16f60ff4.382ec"]]},{"id":"e8a90561.64a3d8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1685.8095321655273,"y":1073.0208578109741,"z":"7cae5554.a7c84c","wires":[["8903b08f.7c326"]]},{"id":"c66c84fb.d66958","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1683.8095989227295,"y":1192.9136219024658,"z":"7cae5554.a7c84c","wires":[["a135dc4a.61d9d"]]},{"id":"810613ad.81995","type":"switchNode","name":"switch input.name-table-type","xml":"<switch test='`$generate-unique-name-input.name-table-type`'>\n","comments":"","outputs":1,"x":999.3928718566895,"y":398.1160683631897,"z":"7cae5554.a7c84c","wires":[["762e8292.fbea4c","7f7fd3dd.6f823c","6e8ab2c3.fc6bbc","bcdcb322.c1d22","c075a83f.5cee08","4e878c64.66aaf4"]]},{"id":"762e8292.fbea4c","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1242.8928565979004,"y":398.36606454849243,"z":"7cae5554.a7c84c","wires":[["2c273d9d.ca4f82"]]},{"id":"2c273d9d.ca4f82","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.name-table-type not supplied' />\n","comments":"","x":1414.5596332550049,"y":398.6993680000305,"z":"7cae5554.a7c84c","wires":[]},{"id":"4bc10430.8db0ac","type":"set","name":"set tmp.gname.custom-query-string: vnf-name","xml":"<set>\n<parameter name='tmp.gname.custom-query-string' value='nodes/generic-vnfs?vnf-name=' />\n","comments":"","x":1649.6786155700684,"y":450.68747758865356,"z":"7cae5554.a7c84c","wires":[]},{"id":"56c695a.0de4a6c","type":"set","name":"set tmp.gname.custom-query-string: vm-name","xml":"<set>\n<parameter name='tmp.gname.custom-query-string' value='nodes/vservers?vserver-name=' />\n","comments":"","x":1649.6786079406738,"y":503.54462480545044,"z":"7cae5554.a7c84c","wires":[]},{"id":"8c811a9e.3e2958","type":"set","name":"set tmp.gname.custom-query-string: network-name","xml":"<set>\n<parameter name='tmp.gname.custom-query-string' value='nodes/l3-networks?network-name=' />\n","comments":"","x":1665.3927421569824,"y":560.1160521507263,"z":"7cae5554.a7c84c","wires":[]},{"id":"1fbce4c6.d6002b","type":"set","name":"set tmp.gname.custom-query-string: vnfc-name","xml":"<set>\n<parameter name='tmp.gname.custom-query-string' value='nodes/vnfcs?vnfc-name=' />\n","comments":"","x":1655.571475982666,"y":668.4732518196106,"z":"7cae5554.a7c84c","wires":[]},{"id":"9bef47ef.8e3858","type":"set","name":"set tmp.gname.custom-query-string: service-instance-name","xml":"<set>\n<parameter name='tmp.gname.custom-query-string' value='nodes/service-instances?service-instance-name=' />\n","comments":"","x":1691.642894744873,"y":616.1160740852356,"z":"7cae5554.a7c84c","wires":[]},{"id":"a135dc4a.61d9d","type":"get-resource","name":"Update context_id = NON-ONAP","xml":"<update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n\tkey=\"update GENERIC_RESOURCE_NAME set context_id = $tmp.gun.nononap  \n\t\tWHERE type = $generate-unique-name-input.name-table-type \n\t\tAND context_id = $tmp.gun.transient\">\n","comments":"","outputs":1,"x":1934.131046295166,"y":1192.1993341445923,"z":"7cae5554.a7c84c","wires":[["c2b6ccc5.17585","279b65b0.b767da"]]},{"id":"40711a8f.0be9c4","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-message' \n\tvalue=\"`'Error updating GENERIC_RESOURCE_NAME.context_id from TRANSIENT to ' \n\t\t+ $tmp.context-id.nononap`\" />\n\n","comments":"","x":2362.4170112609863,"y":1192.2232828140259,"z":"7cae5554.a7c84c","wires":[]},{"id":"c2b6ccc5.17585","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2179.9884071350098,"y":1192.1518774032593,"z":"7cae5554.a7c84c","wires":[["40711a8f.0be9c4"]]},{"id":"279b65b0.b767da","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2186.833808898926,"y":1238.640019416809,"z":"7cae5554.a7c84c","wires":[["9d767c72.52e7e"]]},{"id":"9d767c72.52e7e","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-message' \n\tvalue=\"`'No GENERIC_RESOURCE_NAME found with context_id = TRANSIENT and type = ' \n\t\t+ $generate-unique-name-input.name-table-type`\"/>\n","comments":"","x":2358.2740058898926,"y":1237.9135656356812,"z":"7cae5554.a7c84c","wires":[]},{"id":"42af3be3.1c7914","type":"set","name":"set tmp.gun.nononap","xml":"<set>\n<parameter name='tmp.gun.nononap' value='NON-ONAP' />\n","comments":"","x":977.3333625793457,"y":755.7708230018616,"z":"7cae5554.a7c84c","wires":[]},{"id":"8621dfc4.da743","type":"set","name":"set tmp.grn.loop.flag = true","xml":"<set>\n<parameter name='tmp.grn.loop.flag' value='true' />\n","comments":"","x":994.8094825744629,"y":867.627902507782,"z":"7cae5554.a7c84c","wires":[]},{"id":"8903b08f.7c326","type":"set","name":"set tmp.grn.loop.flag = false","xml":"<set>\n<parameter name='tmp.grn.loop.flag' value='false' />\n","comments":"","x":2120.2023849487305,"y":1072.592128753662,"z":"7cae5554.a7c84c","wires":[]},{"id":"413b7679.6a9c48","type":"whileNode","name":"while true","xml":"<while test='`$tmp.grn.loop.flag`'>\n","comments":"","outputs":1,"x":941.0594367980957,"y":925.7826733589172,"z":"7cae5554.a7c84c","wires":[["e0ac3aa7.fde448"]]},{"id":"e0ac3aa7.fde448","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1135.3094215393066,"y":925.7826685905457,"z":"7cae5554.a7c84c","wires":[["1e2c4141.71b96f","6df1aa76.b53b44","866eef8d.d7b6d"]]},{"id":"bb2b984e.06a468","type":"get-resource","name":"Update GENERIC_RESOURCE_NAME.context_id with input","xml":"<update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n\tkey=\"update GENERIC_RESOURCE_NAME set context_id = $generate-unique-name-input.context-id   \n\t\tWHERE type = $generate-unique-name-input.name-table-type \n\t\tAND name = $generate-unique-name-output.generated-name \n\t\tAND context_id = $tmp.gun.transient\">\n","comments":"","outputs":1,"x":1096.5833930969238,"y":1393.532684803009,"z":"7cae5554.a7c84c","wires":[["168a0b59.e0dcc5","c5ad2e49.84e42"]]},{"id":"36cfa474.ccd78c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-message' \n\tvalue=\"`'Error updating GENERIC_RESOURCE_NAME.context_id from TRANSIENT to ' \n\t\t+ $tmp.context-id.nononap`\" />\n\n","comments":"","x":1610.8693656921387,"y":1392.413718700409,"z":"7cae5554.a7c84c","wires":[]},{"id":"168a0b59.e0dcc5","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1428.4407539367676,"y":1392.485228061676,"z":"7cae5554.a7c84c","wires":[["36cfa474.ccd78c"]]},{"id":"c5ad2e49.84e42","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1435.2861557006836,"y":1438.9733700752258,"z":"7cae5554.a7c84c","wires":[["33fab0ff.1fc5c"]]},{"id":"33fab0ff.1fc5c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-message' \n\tvalue=\"`'No GENERIC_RESOURCE_NAME found with context_id = TRANSIENT and type = ' \n\t\t+ $generate-unique-name-input.name-table-type`\"/>\n","comments":"","x":1606.7263526916504,"y":1439.246916294098,"z":"7cae5554.a7c84c","wires":[]},{"id":"b95702ae.c6c2a","type":"call","name":"call rollback-generated-names","xml":"<call module='GENERIC-RESOURCE-API' rpc='rollback-generated-names' mode='sync' >\n","comments":"","outputs":1,"x":1027.0715293884277,"y":1654.63982629776,"z":"7cae5554.a7c84c","wires":[["28eb2083.a87d6"]]},{"id":"6d3be253.3ab7ec","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-message' \n\tvalue=\"`'Encountered error in rollback-generated-names: ' + \n\t\t$error-message`\" />\n","comments":"","x":1415.5000114440918,"y":1654.8184065818787,"z":"7cae5554.a7c84c","wires":[]},{"id":"da75856f.16a8f8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1601.5952262878418,"y":925.7826342582703,"z":"7cae5554.a7c84c","wires":[["85b23c8b.82154"]]},{"id":"28eb2083.a87d6","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1252.9286613464355,"y":1655.068374156952,"z":"7cae5554.a7c84c","wires":[["6d3be253.3ab7ec"]]},{"id":"7da21ee3.54f6f","type":"set","name":"set rollback-generated-names-input.naming-type","xml":"<set>\n<parameter name='rollback-generated-names-input.naming-type' value='`$generate-unique-name-input.name-table-type`' />\n","comments":"","x":1077.7859121050155,"y":1549.4017415046692,"z":"7cae5554.a7c84c","wires":[]},{"id":"66b3b9cb.e29ee8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":746.5001258850098,"y":1548.973156452179,"z":"7cae5554.a7c84c","wires":[["7da21ee3.54f6f","b95702ae.c6c2a","62fb838.4f6867c"]]},{"id":"62fb838.4f6867c","type":"set","name":"set rollback-generated-names-input.context-id","xml":"<set>\n<parameter name='rollback-generated-names-input.context-id' value='`$generate-unique-name-input.context-id`' />\n","comments":"","x":1072.30961227417,"y":1600.3064441680908,"z":"7cae5554.a7c84c","wires":[]},{"id":"d26b556.09bcda8","type":"set","name":"set tmp.grn.loop.flag = false","xml":"<set>\n<parameter name='tmp.grn.loop.flag' value='false' />\n","comments":"","x":2042.4998588562012,"y":926.1159682273865,"z":"7cae5554.a7c84c","wires":[]},{"id":"85b23c8b.82154","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1775.166576385498,"y":925.4492945671082,"z":"7cae5554.a7c84c","wires":[["d26b556.09bcda8","b4913758.6d64d8"]]},{"id":"915b6cf6.6a091","type":"set","name":"set tmp.gun.transient","xml":"<set>\n<parameter name='tmp.gun.transient' value='TRANSIENT' />\n","comments":"","x":975.3094749450684,"y":810.7826447486877,"z":"7cae5554.a7c84c","wires":[]},{"id":"6e8ab2c3.fc6bbc","type":"outcome","name":"VM_INSTANCE","xml":"<outcome value='VM_INSTANCE'>","comments":"","outputs":1,"x":1272.3571472167969,"y":503.5446434020996,"z":"7cae5554.a7c84c","wires":[["56c695a.0de4a6c"]]},{"id":"c075a83f.5cee08","type":"outcome","name":"VNFC_INSTANCE","xml":"<outcome value='VNFC_INSTANCE'>","comments":"","outputs":1,"x":1279.7499389648438,"y":668.1875047683716,"z":"7cae5554.a7c84c","wires":[["1fbce4c6.d6002b"]]},{"id":"bcdcb322.c1d22","type":"outcome","name":"NETWORK_INSTANCE","xml":"<outcome value='NETWORK_INSTANCE'>","comments":"","outputs":1,"x":1296.8491439819336,"y":559.8700408935547,"z":"7cae5554.a7c84c","wires":[["8c811a9e.3e2958"]]},{"id":"4e878c64.66aaf4","type":"outcome","name":"SERVICE_INSTANCE","xml":"<outcome value='SERVICE_INSTANCE'>","comments":"","outputs":1,"x":1290.6745681762695,"y":616.0129070281982,"z":"7cae5554.a7c84c","wires":[["9bef47ef.8e3858"]]},{"id":"7f7fd3dd.6f823c","type":"outcome","name":"VNF_INSTANCE","xml":"<outcome value='VNF_INSTANCE'>","comments":"","outputs":1,"x":1274.5633926391602,"y":450.58431243896484,"z":"7cae5554.a7c84c","wires":[["4bc10430.8db0ac"]]},{"id":"1f764a1a.a7d3f6","type":"switchNode","name":"switch generate-unique-name-input.context-id","xml":"<switch test='`$generate-unique-name-input.context-id`'>\n","comments":"","outputs":1,"x":1053.6428718566895,"y":308.2588601112366,"z":"7cae5554.a7c84c","wires":[["e200ce82.9543e"]]},{"id":"e200ce82.9543e","type":"not-found","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1337.214199066162,"y":308.4970564842224,"z":"7cae5554.a7c84c","wires":[["33eb7c94.df9724"]]},{"id":"33eb7c94.df9724","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-message' \n\tvalue=\"generate-unique-name-input.context-id cannot be null for ASSIGN action\" />\n\n","comments":"","x":1516.7857551574707,"y":307.92557668685913,"z":"7cae5554.a7c84c","wires":[]},{"id":"5f9e5e0c.20be2","type":"outcome","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":549.6428833007812,"y":1747.8303608894348,"z":"7cae5554.a7c84c","wires":[["75703775.1f4058"]]},{"id":"75703775.1f4058","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='generate-unique-name-output.error-message' value='Invalid generate-unique-name-input.action. Valid values are ASSIGN or DELETE' />\n","comments":"","x":720.3096599578857,"y":1747.163664340973,"z":"7cae5554.a7c84c","wires":[]},{"id":"16f60ff4.382ec","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1870.7143478393555,"y":1136.2231798171997,"z":"7cae5554.a7c84c","wires":[["8903b08f.7c326","57783c58.a3f884"]]},{"id":"57783c58.a3f884","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-message' \n\tvalue=\"`'Error updating GENERIC_RESOURCE_NAME.context_id from TRANSIENT to ' \n\t\t+ $tmp.context-id.nononap`\" />\n\n","comments":"","x":2075.142951965332,"y":1135.6517171859741,"z":"7cae5554.a7c84c","wires":[]},{"id":"866eef8d.d7b6d","type":"execute","name":"encode generate-unique-name-output.generated-name","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"urlEncode\">\n\t<parameter name=\"source\" value='`$generate-unique-name-output.generated-name`'/>\n\t<parameter name=\"outputPath\" value=\"encoded-name\" />\n\n","comments":"","outputs":1,"x":1475.7142791748047,"y":999.9999923706055,"z":"7cae5554.a7c84c","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-activate.json
new file mode 100644
index 0000000..43bae8f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-activate.json
@@ -0,0 +1 @@
+[{"id":"aad8b671.6c92a8","type":"dgstart","name":"DGSTART","outputs":1,"x":171.75,"y":129.5,"z":"31276fa5.74ef8","wires":[["fc1afe3.c14518"]]},{"id":"fc1afe3.c14518","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":247.03570556640625,"y":169.73811149597168,"z":"31276fa5.74ef8","wires":[["8bb44f8f.960958"]]},{"id":"8bb44f8f.960958","type":"method","name":"network-topology-operation-activate","xml":"<method rpc='network-topology-operation-activate' mode='sync'>\n","comments":"","outputs":1,"x":288.4286346435547,"y":213.2499942779541,"z":"31276fa5.74ef8","wires":[["6a980331.36ce2c"]]},{"id":"6a980331.36ce2c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":287.7500305175781,"y":307.9434814453125,"z":"31276fa5.74ef8","wires":[["347a2bc6.901ffc","7c8b3998.1a0b68","70e85b23.8d3054","4a68fc12.7927f4","280acaa8.006566","afca1cc9.37ef2","f95d52a7.cfe038","1dc0ccd9.62a26b"]]},{"id":"f8ffe16f.6d2ce8","type":"not-found","name":"not found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":818.75,"y":301.50001525878906,"z":"31276fa5.74ef8","wires":[["e493f260.987388"]]},{"id":"e493f260.987388","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"network-id not found in AAI\" />","comments":"","x":981.9443969726562,"y":301.6112365722656,"z":"31276fa5.74ef8","wires":[]},{"id":"347a2bc6.901ffc","type":"get-resource","name":"get AnAI - l3-network by network-id","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $network-topology-operation-input.network-information.network-id AND \n                     depth = 'all'\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.l3-network\">\n","comments":"","outputs":1,"x":583.4721069335938,"y":305.984619140625,"z":"31276fa5.74ef8","wires":[["f8ffe16f.6d2ce8","7fd1cc43.5cbeac"]]},{"id":"7fd1cc43.5cbeac","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":811.4721069335938,"y":339.984619140625,"z":"31276fa5.74ef8","wires":[["695fe527.9c94ac"]]},{"id":"695fe527.9c94ac","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + 'from AnAI'\" />","comments":"","x":963.5831909179688,"y":340.20684814453125,"z":"31276fa5.74ef8","wires":[]},{"id":"ca70884c.912a78","type":"set","name":"set entity-id and plan-name","xml":"<set>\n\t<parameter name=\"eipam-ip-block.entity-id\" value=\"`$aai.l3-network.subnets.subnet[$sidx].subnet-id`\"/>\n\t<parameter name=\"eipam-ip-block.plans[0].plan-name\" value=\"`$tmp.eipam-subnet-row.plan-name`\"/>\n","comments":"","x":1016.8294677734375,"y":1121.5794067382812,"z":"31276fa5.74ef8","wires":[]},{"id":"e4a7e0a0.e6b8a8","type":"for","name":"for 0..subnet_length","xml":"<for index='sidx' start='0' end='`$aai.l3-network.subnets.subnet_length`' >\n","comments":"","outputs":1,"x":954.1151123046875,"y":836.7222900390625,"z":"31276fa5.74ef8","wires":[["ffba001b.9779c"]]},{"id":"ffba001b.9779c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1158.1151123046875,"y":835.8651123046875,"z":"31276fa5.74ef8","wires":[["caf9a917.b8b4b"]]},{"id":"caf9a917.b8b4b","type":"get-resource","name":"get eipam-ip-subnet by subnet-id","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS where entity_id = $aai.l3-network.subnets.subnet[$sidx].subnet-id ; \"\n        pfx='tmp.eipam-subnet-row'>\n\n","comments":"","outputs":1,"x":1113.2580261230469,"y":973.7222194671631,"z":"31276fa5.74ef8","wires":[["82c93d87.3c4cd8","8afed5a1.3d3c5","4c63e33f.93a614"]]},{"id":"b9d0e076.a549f","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_SUBNETS failed to find subnet matching aai subnet.\" />\n\t","comments":"","x":1521.4007873535156,"y":921.4365007579327,"z":"31276fa5.74ef8","wires":[]},{"id":"82c93d87.3c4cd8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1371.9723815917969,"y":989.4364711940289,"z":"31276fa5.74ef8","wires":[["9227ef6b.5a4c5"]]},{"id":"8afed5a1.3d3c5","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1372.2626647949219,"y":923.4365007579327,"z":"31276fa5.74ef8","wires":[["b9d0e076.a549f"]]},{"id":"4c63e33f.93a614","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1373.119773864746,"y":957.7222213745117,"z":"31276fa5.74ef8","wires":[["a33338bb.a90c68"]]},{"id":"9227ef6b.5a4c5","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1524.6864700317383,"y":990.8650915324688,"z":"31276fa5.74ef8","wires":[["ca70884c.912a78","e84c68d7.f3801","56f420bb.33bc5"]]},{"id":"a33338bb.a90c68","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Subnet not found in EIPAM_IP_SUBNETS - activate failed.\" />\n\t","comments":"","x":1520.4006271362305,"y":953.7222518920898,"z":"31276fa5.74ef8","wires":[]},{"id":"e84c68d7.f3801","type":"execute","name":"execute EIPAM activateSubnet","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"activateSubnet\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":1029.686508178711,"y":1164.4364957809448,"z":"31276fa5.74ef8","wires":[["a48dd3e1.d2aa28"]]},{"id":"a48dd3e1.d2aa28","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":1239.686538696289,"y":1165.8268613815308,"z":"31276fa5.74ef8","wires":[["9055635.fe4ed2"]]},{"id":"9055635.fe4ed2","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while activating subnet in EIPAM.\" />\n\t","comments":"","x":1403.6865196228027,"y":1164.5411539077759,"z":"31276fa5.74ef8","wires":[]},{"id":"56f420bb.33bc5","type":"save","name":"Update subnet to Active in DB","xml":"<save \n\tplugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' \n\tresource='SQL'\n\tkey=\"UPDATE EIPAM_IP_SUBNETS\n             SET status = 'ACTIVE'\n             WHERE entity_id = $eipam-ip-block.entity-id ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-row'>\n","comments":"","outputs":1,"x":1028.2580108642578,"y":1204.436442375183,"z":"31276fa5.74ef8","wires":[["10829540.6646b3","5cb79e38.5ce198","f0c9957e.af2a88"]]},{"id":"e78db626.6538f8","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while updating subnet to active in mysql.\" />\n\t","comments":"","x":1396.8293914794922,"y":1211.5793180465698,"z":"31276fa5.74ef8","wires":[]},{"id":"f0c9957e.af2a88","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1247.4009857177734,"y":1279.579288482666,"z":"31276fa5.74ef8","wires":[["ea1492ee.0f56a"]]},{"id":"10829540.6646b3","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1247.6912689208984,"y":1213.5793180465698,"z":"31276fa5.74ef8","wires":[["e78db626.6538f8"]]},{"id":"5cb79e38.5ce198","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1248.5483779907227,"y":1247.8650386631489,"z":"31276fa5.74ef8","wires":[["6bd5881a.8cae5"]]},{"id":"ea1492ee.0f56a","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1400.1150741577148,"y":1281.007908821106,"z":"31276fa5.74ef8","wires":[["71f89e7.9397de"]]},{"id":"6bd5881a.8cae5","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while updating subnet to active in mysql.\" />\n\t","comments":"","x":1395.829231262207,"y":1243.865069180727,"z":"31276fa5.74ef8","wires":[]},{"id":"71f89e7.9397de","type":"save","name":"update AnAI - subnet","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $aai.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $eipam-ip-block.entity-id\" >\n<parameter name=\"orchestration-status\" value=\"Active\" />\n\t\t","comments":"","outputs":1,"x":1625.4007263183594,"y":1281.738073348999,"z":"31276fa5.74ef8","wires":[["dd793cd5.2b12d","3fbf7056.3305c8"]]},{"id":"7d340cb2.4be154","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Failure updating orchestration-status in AAI for subnet.\" />\n\t","comments":"","x":2000.1469802856445,"y":1274.5793916881084,"z":"31276fa5.74ef8","wires":[]},{"id":"8130f435.f558f8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1850.7185745239258,"y":1342.5793621242046,"z":"31276fa5.74ef8","wires":[["f3e4ac3e.a58ab8"]]},{"id":"dd793cd5.2b12d","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1839.5802211761475,"y":1280.865122050047,"z":"31276fa5.74ef8","wires":[["7d340cb2.4be154"]]},{"id":"3fbf7056.3305c8","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1851.865966796875,"y":1310.8651123046875,"z":"31276fa5.74ef8","wires":[["9e49b5c9.859b6"]]},{"id":"f3e4ac3e.a58ab8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2003.4326629638672,"y":1344.0079824626446,"z":"31276fa5.74ef8","wires":[[]]},{"id":"9e49b5c9.859b6","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Failure updating orchestration-status in AAI for subnet.  Subnet not found.\" />\n\t","comments":"","x":1999.1468200683594,"y":1306.8651428222656,"z":"31276fa5.74ef8","wires":[]},{"id":"4a68fc12.7927f4","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":585.5436668395996,"y":1596.8650207519531,"z":"31276fa5.74ef8","wires":[]},{"id":"afca1cc9.37ef2","type":"set","name":"set object-path","xml":"<set>\n<parameter name='network-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $network-topology-operation-input.service-information.service-instance-id\n + '/service-data/networks/network/'\n + $networkId\n + '/network-data/network-topology/'` \" />\n \n","comments":"","x":585.5476112365723,"y":1517.0590629577637,"z":"31276fa5.74ef8","wires":[]},{"id":"7c8b3998.1a0b68","type":"set","name":"set networkId","xml":"<set>\n<parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\n","comments":"","x":579.8332443237305,"y":1479.9161710739136,"z":"31276fa5.74ef8","wires":[]},{"id":"70e85b23.8d3054","type":"set","name":"set network-level-oper-status","xml":"<set>\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />\n","comments":"","x":627.8333053588867,"y":1562.487536430359,"z":"31276fa5.74ef8","wires":[]},{"id":"280acaa8.006566","type":"switchNode","name":"switch $aai.l3-network.subnets.subnet_length","xml":"<switch test='`$aai.l3-network.subnets.subnet_length`'>\n","comments":"","outputs":1,"x":612.75,"y":393.5,"z":"31276fa5.74ef8","wires":[["8347d939.5620b8","f2abfa4c.005c3"]]},{"id":"8347d939.5620b8","type":"other","name":"outcome Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":932.75,"y":393.5,"z":"31276fa5.74ef8","wires":[["b1e0408b.8fcf88"]]},{"id":"b1e0408b.8fcf88","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=\"no networks found\" />\n","comments":"","x":1154.5275268554688,"y":391.38897705078125,"z":"31276fa5.74ef8","wires":[]},{"id":"f2abfa4c.005c3","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":914.75,"y":427.5,"z":"31276fa5.74ef8","wires":[["a4f63900.f19bf"]]},{"id":"f95d52a7.cfe038","type":"save","name":"update AnAI - network","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $aai.l3-network.network-id\" >\n<parameter name=\"orchestration-status\" value=\"Active\" />\t","comments":"","outputs":1,"x":617.4166564941406,"y":1359.8331890106201,"z":"31276fa5.74ef8","wires":[["e1f780e.72e668","a6992d57.d1b588"]]},{"id":"f0cbc86c.4834d","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Failure updating orchestration-status in AAI for l3-network\" />\n\t","comments":"","x":1030.4961624145508,"y":1345.3411407470703,"z":"31276fa5.74ef8","wires":[]},{"id":"c5f332ba.4d0fc8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":881.067756652832,"y":1413.3411111831665,"z":"31276fa5.74ef8","wires":[["a30e496c.388428"]]},{"id":"e1f780e.72e668","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":869.9294033050537,"y":1351.6268711090088,"z":"31276fa5.74ef8","wires":[["f0cbc86c.4834d"]]},{"id":"a6992d57.d1b588","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":882.2151489257812,"y":1381.6268613636494,"z":"31276fa5.74ef8","wires":[["89e9fe8c.80a52"]]},{"id":"a30e496c.388428","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1033.7818450927734,"y":1414.7697315216064,"z":"31276fa5.74ef8","wires":[[]]},{"id":"89e9fe8c.80a52","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Failure updating orchestration-status in AAI for l3-network.  Network not found.\" />\n\t","comments":"","x":1029.4960021972656,"y":1377.6268918812275,"z":"31276fa5.74ef8","wires":[]},{"id":"1dc0ccd9.62a26b","type":"set","name":"copy input to service-data","xml":"<set>\n<parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n","comments":"","x":621.2617797851562,"y":1439.9161376953125,"z":"31276fa5.74ef8","wires":[]},{"id":"e7f076b.7293d08","type":"switchNode","name":"switch from-preload","xml":"<switch test='`$service-data.networks.network[$nidx].network-data.network-information.from-preload`'>\n","comments":"","outputs":1,"x":550.49609375,"y":701.74609375,"z":"31276fa5.74ef8","wires":[["5be403fb.f6e604","935c32f2.5c477"]]},{"id":"5be403fb.f6e604","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":538.49609375,"y":780.24609375,"z":"31276fa5.74ef8","wires":[["a5d42667.baffc"]]},{"id":"935c32f2.5c477","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":526.49609375,"y":837.24609375,"z":"31276fa5.74ef8","wires":[["7e645dee.196a5c"]]},{"id":"354a953d.970fea","type":"for","name":"for 0..subnet_length","xml":"<for index='sidx' start='0' end='`$aai.l3-network.subnets.subnet_length`' >\n","comments":"","outputs":1,"x":930.49609375,"y":779.24609375,"z":"31276fa5.74ef8","wires":[["1834de34.aa66ca"]]},{"id":"1834de34.aa66ca","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1130.49609375,"y":779.388916015625,"z":"31276fa5.74ef8","wires":[["4e5f455.9e01cbc"]]},{"id":"4e5f455.9e01cbc","type":"save","name":"update AnAI - subnet","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $aai.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $aai.l3-network.subnets.subnet[$sidx].subnet-id\" >\n<parameter name=\"orchestration-status\" value=\"Active\" />\n\t\t","comments":"","outputs":1,"x":1351.74609375,"y":778.74609375,"z":"31276fa5.74ef8","wires":[["ea2ce0fa.cbaf78","e5c37082.c5e4a"]]},{"id":"ca81daa8.aa2b88","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Failure updating orchestration-status in AAI for subnet.\" />\n\t","comments":"","x":1736.492317199707,"y":772.5873872935772,"z":"31276fa5.74ef8","wires":[]},{"id":"186b63eb.ee1064","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1587.0639114379883,"y":840.5873577296734,"z":"31276fa5.74ef8","wires":[["7fc8a15e.ded2e"]]},{"id":"ea2ce0fa.cbaf78","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1575.92555809021,"y":778.8731176555157,"z":"31276fa5.74ef8","wires":[["ca81daa8.aa2b88"]]},{"id":"e5c37082.c5e4a","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1588.2113037109375,"y":808.8731079101562,"z":"31276fa5.74ef8","wires":[["591f495d.08622"]]},{"id":"7fc8a15e.ded2e","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1739.7779998779297,"y":842.0159780681133,"z":"31276fa5.74ef8","wires":[[]]},{"id":"591f495d.08622","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Failure updating orchestration-status in AAI for subnet.  Subnet not found.\" />\n\t","comments":"","x":1735.4921569824219,"y":804.8731384277344,"z":"31276fa5.74ef8","wires":[]},{"id":"a5d42667.baffc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":724.74609375,"y":781.24609375,"z":"31276fa5.74ef8","wires":[["354a953d.970fea"]]},{"id":"7e645dee.196a5c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":738.74609375,"y":837.24609375,"z":"31276fa5.74ef8","wires":[["e4a7e0a0.e6b8a8"]]},{"id":"a4f63900.f19bf","type":"switchNode","name":"switch network-instance-group-id","xml":"<switch test='`$network-data.network-topology.network-topology-identifier-structure.network-instance-group-id`'>\n","comments":"","outputs":1,"x":581.49609375,"y":507.24609375,"z":"31276fa5.74ef8","wires":[["37463523.271202","1363245c.95b004"]]},{"id":"37463523.271202","type":"other","name":"outcome Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":874.49609375,"y":505.74609375,"z":"31276fa5.74ef8","wires":[["e7f076b.7293d08"]]},{"id":"1363245c.95b004","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":865.49609375,"y":536.74609375,"z":"31276fa5.74ef8","wires":[["3f8c9bce.2fbecc"]]},{"id":"3f8c9bce.2fbecc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1060.49609375,"y":535.74609375,"z":"31276fa5.74ef8","wires":[["7ba3c6f1.8a0f7"]]},{"id":"7ba3c6f1.8a0f7","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 collection activate failed\" />\n","comments":"","x":1261.49609375,"y":530.74609375,"z":"31276fa5.74ef8","wires":[]},{"id":"54e043ce.c9819c","type":"comment","name":"need to implement this","info":"","comments":"","x":1291.49609375,"y":499.24609375,"z":"31276fa5.74ef8","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-assign-automated.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-assign-automated.json
new file mode 100755
index 0000000..2e0c8e8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-assign-automated.json
@@ -0,0 +1 @@
+[{"id":"ddaa8377.fa22a8","type":"dgstart","name":"DGSTART","outputs":1,"x":162.74999809265137,"y":128.33333349227905,"z":"293895e6.5ef0e2","wires":[["bee866d7.34a87"]]},{"id":"bee866d7.34a87","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":356.03568267822266,"y":188.09525346755981,"z":"293895e6.5ef0e2","wires":[["a4b64377.84e858"]]},{"id":"a4b64377.84e858","type":"method","name":"network-topology-operation-assign-automated","xml":"<method rpc='network-topology-operation-assign-automated' mode='sync'>\n","comments":"","outputs":1,"x":366.38106536865234,"y":293.8928370475769,"z":"293895e6.5ef0e2","wires":[["52e034b0.745ae4"]]},{"id":"32bd1ba1.6415a4","type":"comment","name":"Called from assign when network name is NOT passed in from mso","info":"","comments":"","x":546.6071319580078,"y":126.00000143051147,"z":"293895e6.5ef0e2","wires":[]},{"id":"52e034b0.745ae4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":278.74996185302734,"y":434.9999842643738,"z":"293895e6.5ef0e2","wires":[["f1fc9d62.38b5c","2966d0e0.8b25e8","e8da6f16.71f9b8","ad4ff9.5fa67008","2c27032c.5e2204","f827107c.d87818","2c6c62c8.5a4c2e","3d53982a.567ae","5768ac10.171294","3420d2a4.657bee","fd6db351.edfb","4db8414c.fd2348","c87d3fb.61607c","fe0c8615.109c78","67411a15.4513fc","16bcfe02.a78002","4acd25ef.ab1094","78d9149.661776c","6fc56656.d3bba","f387ea7a.cb332","74426281.f93a14","6c88ef63.8cc9","b853c9fb.a4b158","2688708b.68097","22bd05cf.445f7a","44cca957.3504a8","ece618e.04a51e8","ddf2d1ad.9086d","7852b58.654cd4c","31213429.ff2f4c","4c3863ea.780a64","f43b1f67.085098","88aa0e0f.278a3","c6bc7f3a.1e281","cb4086d2.f6774"]]},{"id":"f1fc9d62.38b5c","type":"set","name":"set tmp.l3-network","xml":"<set>\n<parameter name='tmp.l3-network.network-id' value=\"`$tmp.return.generate-l3network-network-id.uuid`\" />\n<parameter name='tmp.l3-network.network-name' value=\"`$tmp.network-instance-name`\" />\n<parameter name='tmp.l3-network.network-type' value=\"`$network-model.network-type`\" />\n<parameter name='tmp.l3-network.network-role' value=\"`$network-model.network-role`\" />\n<parameter name='tmp.l3-network.network-technology' value=\"`$network-model.network-technology`\" />\n<parameter name='tmp.l3-network.is-bound-to-vpn' value=\"`$network-model.is-bound-to-vpn`\" />\n<parameter name='tmp.l3-network.orchestration-status' value=\"PendingCreate\" />\n<parameter name='tmp.l3-network.model-invariant-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`\" />\n<parameter name='tmp.l3-network.model-version-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-version`\" />\n<parameter name='tmp.l3-network.model-customization-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`\" />\n<parameter name='tmp.l3-network.is-provider-network' value=\"`$network-model.is-provider-network`\" />\n<parameter name='tmp.l3-network.is-shared-network' value=\"`$network-model.is-shared-network`\" />\n<parameter name='tmp.l3-network.is-external-network' value=\"`$network-model.is-external-network`\" />\n<parameter name='tmp.l3-network.eipam-v6-address-plan' value=\"`$network-model.eipam-v6-address-plan`\" />\n<parameter name='tmp.l3-network.eipam-v4-address-plan' value=\"`$network-model.eipam-v4-address-plan`\" />\n<parameter name='tmp.l3-network.service-id' value=\"`$service-data.service-information.service-id`\" />\n<parameter name='tmp.l3-network.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $network-topology-operation-input.service-information.service-instance-id\n + '/service-data/networks/network/'\n + $tmp.l3-network.network-id\n + '/network-data/network-topology/'` \" />\n","comments":"","x":781.7499313354492,"y":815.9999651908875,"z":"293895e6.5ef0e2","wires":[]},{"id":"2966d0e0.8b25e8","type":"switchNode","name":"switch network--model.is-provider-network","xml":"<switch test='`$network-model.is-provider-network`'>\n","comments":"","outputs":1,"x":859.2410736083984,"y":910.285710811615,"z":"293895e6.5ef0e2","wires":[["e7b008a0.418ec","d5dd32b7.555628"]]},{"id":"e7b008a0.418ec","type":"other","name":"outcome Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1164.3842239379883,"y":890.1111559867859,"z":"293895e6.5ef0e2","wires":[["2dfcff6c.e57a48"]]},{"id":"2dfcff6c.e57a48","type":"set","name":"set tmp.l3-network.physical-network-name","xml":"<set>\n<parameter name='tmp.l3-network.physical-network-name' value=\"`$network-model.physical-network-name`\" />\n<parameter name='tmp.l3-network.is-provider-network-boolean' value='true' />","comments":"","x":1432.3840789794922,"y":887.1111216545105,"z":"293895e6.5ef0e2","wires":[]},{"id":"d5dd32b7.555628","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1151.749282836914,"y":920.9841771125793,"z":"293895e6.5ef0e2","wires":[["642fce71.9bd878"]]},{"id":"642fce71.9bd878","type":"set","name":"set tmp.l3-network.physical-network-name","xml":"<set>\n<parameter name='tmp.l3-network.physical-network-name' value=\"\" />\n<parameter name='tmp.l3-network.is-provider-network-boolean' value='false' />","comments":"","x":1436.0352401733398,"y":919.5556082725525,"z":"293895e6.5ef0e2","wires":[]},{"id":"e8da6f16.71f9b8","type":"switchNode","name":"switch network--model.is-shared-network","xml":"<switch test='`$network-model.is-shared-network`'>\n","comments":"","outputs":1,"x":856.9075927734375,"y":955.9205183982849,"z":"293895e6.5ef0e2","wires":[["c85002b3.dfee48","73fec284.227f6c"]]},{"id":"c85002b3.dfee48","type":"other","name":"outcome Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1162.5267944335938,"y":955.9841294288635,"z":"293895e6.5ef0e2","wires":[["72e5d36e.94fdfc"]]},{"id":"72e5d36e.94fdfc","type":"set","name":"set tmp.l3-network.is-shared-network-boolean","xml":"<set>\n<parameter name='tmp.l3-network.is-shared-network-boolean' value='true' />","comments":"","x":1454.8125076293945,"y":955.9839768409729,"z":"293895e6.5ef0e2","wires":[]},{"id":"73fec284.227f6c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1151.3208198547363,"y":991.2856364250183,"z":"293895e6.5ef0e2","wires":[["2a0962ea.47f27e"]]},{"id":"2a0962ea.47f27e","type":"set","name":"set tmp.l3-network.is-shared-network-boolean","xml":"<set>\n<parameter name='tmp.l3-network.is-shared-network-boolean' value='false' />","comments":"","x":1455.6067390441895,"y":991.1428141593933,"z":"293895e6.5ef0e2","wires":[]},{"id":"ad4ff9.5fa67008","type":"switchNode","name":"switch network--model.is-external-network","xml":"<switch test='`$network-model.is-external-network`'>\n","comments":"","outputs":1,"x":865.5908966064453,"y":1027.968159198761,"z":"293895e6.5ef0e2","wires":[["644c8ab8.07217c","5d3c03a7.b87cbc"]]},{"id":"644c8ab8.07217c","type":"other","name":"outcome Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1164.5433616638184,"y":1034.698477268219,"z":"293895e6.5ef0e2","wires":[["5ede0098.42a888"]]},{"id":"5ede0098.42a888","type":"set","name":"set tmp.l3-network.is-external-network-boolean","xml":"<set>\n<parameter name='tmp.l3-network.is-external-network-boolean' value='true' />","comments":"","x":1456.8290748596191,"y":1034.6983246803284,"z":"293895e6.5ef0e2","wires":[]},{"id":"5d3c03a7.b87cbc","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1153.337387084961,"y":1069.9999842643738,"z":"293895e6.5ef0e2","wires":[["73e4d14e.10bed"]]},{"id":"73e4d14e.10bed","type":"set","name":"set tmp.l3-network.is-external-network-boolean","xml":"<set>\n<parameter name='tmp.l3-network.is-external-network-boolean' value='false' />","comments":"","x":1457.623306274414,"y":1069.8571619987488,"z":"293895e6.5ef0e2","wires":[]},{"id":"f827107c.d87818","type":"set","name":"set tmp.complex-found","xml":"<set>\n<parameter name='tmp.complex-found' value='false' />\n\n","comments":"","x":811.0614624023438,"y":1165.5421195030212,"z":"293895e6.5ef0e2","wires":[]},{"id":"2c27032c.5e2204","type":"switchNode","name":"switch network--model.is-bound-to-vpn","xml":"<switch test='`$network-model.is-bound-to-vpn`'>\n","comments":"","outputs":1,"x":857.1724243164062,"y":1104.0422587394714,"z":"293895e6.5ef0e2","wires":[["f59632be.ab57","e3b1b631.14c4b8"]]},{"id":"f59632be.ab57","type":"other","name":"outcome Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1162.7916221618652,"y":1109.1058259010315,"z":"293895e6.5ef0e2","wires":[["3a84d6bc.f116aa"]]},{"id":"3a84d6bc.f116aa","type":"set","name":"set tmp.l3-network.is-bound-to-vpn-boolean","xml":"<set>\n<parameter name='tmp.l3-network.is-bound-to-vpn-boolean' value='true' />","comments":"","x":1455.077335357666,"y":1109.1056733131409,"z":"293895e6.5ef0e2","wires":[]},{"id":"e3b1b631.14c4b8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1151.5856475830078,"y":1144.4073328971863,"z":"293895e6.5ef0e2","wires":[["30af655.b903c9a"]]},{"id":"30af655.b903c9a","type":"set","name":"set tmp.l3-network.is-bound-to-vpn-boolean","xml":"<set>\n<parameter name='tmp.l3-network.is-bound-to-vpn-boolean' value='false' />","comments":"","x":1455.871566772461,"y":1144.2645106315613,"z":"293895e6.5ef0e2","wires":[]},{"id":"16bcfe02.a78002","type":"set","name":"set tmp.network-topology","xml":"<set>\n<parameter name='tmp.network-topology.network-topology-identifier-structure.network-id' value=\"`$tmp.l3-network.network-name`\" />\n<parameter name='tmp.network-topology.network-topology-identifier-structure.network-name' value=\"`$tmp.l3-network.network-name`\" />\n<parameter name='tmp.network-topology.network-topology-identifier-structure.network-type' value=\"`$tmp.l3-network.network-type`\" />\n<parameter name='tmp.network-topology.network-topology-identifier-structure.network-role' value=\"`$tmp.l3-network.network-role`\" />\n<parameter name='tmp.network-topology.network-topology-identifier-structure.network-technology' value=\"`$tmp.l3-network.network-technology`\" />\n<parameter name='tmp.network-topology.network-topology-identifier-structure.eipam-v4-address-plan' value=\"`$network-model.eipam-v4-address-plan`\" />\n<parameter name='tmp.network-topology.network-topology-identifier-structure.eipam-v6-address-plan' value=\"`$network-model.eipam-v6-address-plan`\" />\n<parameter name='tmp.network-topology.region-identifier.tenant' value=\"`$network-topology-operation-input.network-request-input.tenant`\" />\n<parameter name='tmp.network-topology.region-identifier.aic-cloud-region' value=\"`$network-topology-operation-input.network-request-input.aic-cloud-region`\" />\n<parameter name='tmp.network-topology.region-identifier.aic-clli' value=\"`$network-topology-operation-input.network-request-input.aic-clli`\" />\n<parameter name='tmp.network-topology.onap-model-information.' value=\"`$network-topology-operation-input.network-information.onap-model-information.`\" />\n<parameter name='tmp.network-topology.network-parameters.' value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.`\" />\n","comments":"","x":828.5831727981567,"y":2704.2797265052795,"z":"293895e6.5ef0e2","wires":[]},{"id":"f7696e6a.52691","type":"switchNode","name":"switch network-model.eipam-v4-address-plan (VIPR)","xml":"<switch test='`$network-model.eipam-v4-address-plan`'>\n","comments":"","outputs":1,"x":2312.4011001586914,"y":1729.882297039032,"z":"293895e6.5ef0e2","wires":[["dae3b0b5.b40e7","2be63d31.a0fc1a","ec03d835.f8721","51656656.ba094"]]},{"id":"dae3b0b5.b40e7","type":"other","name":"AIC_ATM_UNPROTECTED_V4","xml":"<outcome value='AIC_ATM_UNPROTECTED_V4'>","comments":"","outputs":1,"x":2772.400520324707,"y":1698.8821139335632,"z":"293895e6.5ef0e2","wires":[["1f720674.eca1b2"]]},{"id":"2be63d31.a0fc1a","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2696.067485809326,"y":1814.2157225608826,"z":"293895e6.5ef0e2","wires":[["a31343ec.e76f08"]]},{"id":"ec03d835.f8721","type":"other","name":"AIC_ATM_PROTECTED_V4","xml":"<outcome value='AIC_ATM_PROTECTED_V4'>","comments":"","outputs":1,"x":2762.289131164551,"y":1736.4379525184631,"z":"293895e6.5ef0e2","wires":[["1f720674.eca1b2"]]},{"id":"71eecbd.b148b34","type":"switchNode","name":"switch network-model.eipam-v4-address-plan (SRIOV)","xml":"<switch test='`$network-model.eipam-v4-address-plan`'>\n","comments":"","outputs":1,"x":2348.1351013183594,"y":2078.4893565177917,"z":"293895e6.5ef0e2","wires":[["af18a1b8.3f9da","48638a1d.044944","bcb2da26.868168","b190ce.c871bf3"]]},{"id":"af18a1b8.3f9da","type":"other","name":"AIC_DATA_PLANE_UNPROTECTED_V4","xml":"<outcome value='AIC_DATA_PLANE_UNPROTECTED_V4'>","comments":"","outputs":1,"x":2815.385040283203,"y":2077.7392830848694,"z":"293895e6.5ef0e2","wires":[["25845c0e.13752c"]]},{"id":"48638a1d.044944","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2707.992322921753,"y":2192.560908317566,"z":"293895e6.5ef0e2","wires":[["cc9dd635.98df68"]]},{"id":"bcb2da26.868168","type":"other","name":"AIC_DATA_PLANE_PROTECTED_V4","xml":"<outcome value='AIC_DATA_PLANE_PROTECTED_V4'>","comments":"","outputs":1,"x":2811.773712158203,"y":2114.544826030731,"z":"293895e6.5ef0e2","wires":[["25845c0e.13752c"]]},{"id":"b190ce.c871bf3","type":"other","name":"AIC_DATA_PLANE_PRIVATE_V4","xml":"<outcome value='AIC_DATA_PLANE_PRIVATE_V4'>","comments":"","outputs":1,"x":2793.9923248291016,"y":2153.3107810020447,"z":"293895e6.5ef0e2","wires":[["25845c0e.13752c"]]},{"id":"34c49751.1e7d6","type":"switchNode","name":"switch network-model.eipam-v6-address-plan","xml":"<switch test='`$network-model.eipam-v6-address-plan`'>\n","comments":"","outputs":1,"x":2292.3330612182617,"y":1897.4740328788757,"z":"293895e6.5ef0e2","wires":[["2321c9f0.8a0d9e","82367816.ed7db8","16e5d844.ab3f38","a6bdf612.22b0f8"]]},{"id":"da0609b1.dd66e","type":"switchNode","name":"switch network-model.eipam-v6-address-plan (SRIOV)","xml":"<switch test='`$network-model.eipam-v6-address-plan`'>\n","comments":"","outputs":1,"x":2384.1824951171875,"y":2296.680191516876,"z":"293895e6.5ef0e2","wires":[["2c5a63b9.3f81d4","6f253e2d.578688","66a6717f.0e464","12e3c9ff.f116ee","d57691f9.5e2ff","eb0937db.b0b998"]]},{"id":"2c5a63b9.3f81d4","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2718.8966121673584,"y":2486.1807163357735,"z":"293895e6.5ef0e2","wires":[["418a0270.b2cdfc"]]},{"id":"6f253e2d.578688","type":"other","name":"AIC_ATM_UNPROTECTED_V6","xml":"<outcome value=\"AIC_ATM_UNPROTECTED_V6\">","comments":"","outputs":1,"x":2787.448028564453,"y":2297.8825373649597,"z":"293895e6.5ef0e2","wires":[["ba3daf8e.1a127"]]},{"id":"66a6717f.0e464","type":"other","name":"AIC_ATM_PROTECTED_V6","xml":"<outcome value=\"AIC_ATM_PROTECTED_V6\">","comments":"","outputs":1,"x":2782.733383178711,"y":2339.8825602531433,"z":"293895e6.5ef0e2","wires":[["ba3daf8e.1a127"]]},{"id":"12e3c9ff.f116ee","type":"other","name":"AIC_DATA_PLANE_UNPROTECTED_V6","xml":"<outcome value=\"AIC_DATA_PLANE_UNPROTECTED_V6\">","comments":"","outputs":1,"x":2822.6350326538086,"y":2378.025414943695,"z":"293895e6.5ef0e2","wires":[["ba3daf8e.1a127"]]},{"id":"eb0937db.b0b998","type":"other","name":"AIC_DATA_PLANE_PROTECTED_V6","xml":"<outcome value=\"AIC_DATA_PLANE_PROTECTED_V6\">","comments":"","outputs":1,"x":2811.6356048583984,"y":2440.0256450772285,"z":"293895e6.5ef0e2","wires":[["ba3daf8e.1a127"]]},{"id":"d57691f9.5e2ff","type":"other","name":"AIC_DATA_PLANE_PRIVATE_V6","xml":"<outcome value=\"AIC_DATA_PLANE_PRIVATE_V6\">","comments":"","outputs":1,"x":2799.9211807250977,"y":2407.4543509483337,"z":"293895e6.5ef0e2","wires":[["ba3daf8e.1a127"]]},{"id":"fd6db351.edfb","type":"switchNode","name":"switch network-technology","xml":"<switch test='`$network-model.network-technology`'>\n","comments":"","outputs":1,"x":829.9508438110352,"y":1730.4166598320007,"z":"293895e6.5ef0e2","wires":[["bc99eab5.63fc78","98ca247b.003d6","878c8d61.5c11c"]]},{"id":"2c6c62c8.5a4c2e","type":"get-resource","name":"get-resource cloud region","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"cloud-region\" \n\t\tkey=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND \n\t\t     cloud-region.cloud-region-id = $network-topology-operation-input.network-request-input.aic-cloud-region AND \n\t\t     depth = '0'\"\n        pfx='aai.cloud-region' local-only='false' >\n\n","comments":"","outputs":1,"x":827.2842483520508,"y":1323.4166903495789,"z":"293895e6.5ef0e2","wires":[["ac17137c.6c1968","364976ad.55413a"]]},{"id":"364976ad.55413a","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1049.673355102539,"y":1360.1388583183289,"z":"293895e6.5ef0e2","wires":[["cdcb6a66.a11cf"]]},{"id":"ac17137c.6c1968","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1056.1733512878418,"y":1324.138919353485,"z":"293895e6.5ef0e2","wires":[["48995ae5.67c19c"]]},{"id":"106bd669.56604a","type":"comment","name":"Per test failure in IT, need to throw error if relationships don't exist","info":"","comments":"","x":945.5344848632812,"y":1280.4999976158142,"z":"293895e6.5ef0e2","wires":[]},{"id":"a4857175.d87198","type":"get-resource","name":"get-resource complex","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"complex\" \n\t\tkey=\"complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value\"\n        pfx='aai.complex' local-only='false' >\n        \n\n\n","comments":"","outputs":1,"x":1917.7286224365234,"y":1544.527916431427,"z":"293895e6.5ef0e2","wires":[["635ae7ba.6c555","4c24ef82.82de3","586982ec.1e8c34"]]},{"id":"4c24ef82.82de3","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2150.4789810180664,"y":1602.88871717453,"z":"293895e6.5ef0e2","wires":[["54196261.94e404"]]},{"id":"635ae7ba.6c555","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2152.978977203369,"y":1562.8887782096863,"z":"293895e6.5ef0e2","wires":[["cffd5f4a.151d08"]]},{"id":"5768ac10.171294","type":"for","name":"for relationship list","xml":"<for silentFailure='false' index='ridx' start='0' end=\"`$aai.cloud-region.relationship-list.relationship_length`\" >\n","comments":"","outputs":1,"x":793.7013320922852,"y":1499.6470789909363,"z":"293895e6.5ef0e2","wires":[["798003f7.3d8904"]]},{"id":"ca236a12.216ce","type":"switchNode","name":"switch","xml":"<switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>\n","comments":"","outputs":1,"x":1199.2009963989258,"y":1503.3611903190613,"z":"293895e6.5ef0e2","wires":[["977e56b3.9b15b"]]},{"id":"798003f7.3d8904","type":"for","name":"for relationship data","xml":"<for silentFailure='false' index='rdidx' start='0' end=\"`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`\" >\n","comments":"","outputs":1,"x":1016.6177749633789,"y":1500.6113123893738,"z":"293895e6.5ef0e2","wires":[["ca236a12.216ce"]]},{"id":"977e56b3.9b15b","type":"other","name":"complex.physical-location-id","xml":"<outcome value='complex.physical-location-id'>\n","comments":"","outputs":1,"x":1421.701057434082,"y":1501.7778162956238,"z":"293895e6.5ef0e2","wires":[["16d6abf6.083fac"]]},{"id":"16d6abf6.083fac","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1661.1173782348633,"y":1499.5279383659363,"z":"293895e6.5ef0e2","wires":[["a4857175.d87198","53e77c9e.f7a794","d6907b4c.cf3028"]]},{"id":"586982ec.1e8c34","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2145.506773206922,"y":1516.9444912274676,"z":"293895e6.5ef0e2","wires":[["33454633.eca53a"]]},{"id":"33454633.eca53a","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2322.649642944336,"y":1518.194444179535,"z":"293895e6.5ef0e2","wires":[["47e7c181.61d528"]]},{"id":"53e77c9e.f7a794","type":"set","name":"set aic-clli","xml":"<set>\n<parameter name='service-data.network-request-input.aic-clli' value='`$aai.complex.physical-location-id`' />\n\n","comments":"","x":1885.617935180664,"y":1506.4723238945007,"z":"293895e6.5ef0e2","wires":[]},{"id":"3d53982a.567ae","type":"switchNode","name":"switch relationship_length","xml":"<switch test='`$aai.cloud-region.relationship-list.relationship_length`'>\n","comments":"","outputs":1,"x":823.7287673950195,"y":1422.6945033073425,"z":"293895e6.5ef0e2","wires":[["184aa09c.2e8457","a9b6a010.eba4d8"]]},{"id":"184aa09c.2e8457","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1017.7288394504121,"y":1421.6945921050178,"z":"293895e6.5ef0e2","wires":[["6c249175.f5d028"]]},{"id":"a9b6a010.eba4d8","type":"other","name":"null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1019.7288360595703,"y":1460.6946234703064,"z":"293895e6.5ef0e2","wires":[["6c249175.f5d028"]]},{"id":"d6907b4c.cf3028","type":"set","name":"set tmp.complex-found","xml":"<set>\n<parameter name='tmp.complex-found' value='true' />\n\n","comments":"","x":1923.950942993164,"y":1474.8056979179382,"z":"293895e6.5ef0e2","wires":[]},{"id":"3420d2a4.657bee","type":"switchNode","name":"switch tmp.complex-found","xml":"<switch test='`$tmp.complex-found`'>\n","comments":"","outputs":1,"x":821.728889465332,"y":1582.9167323112488,"z":"293895e6.5ef0e2","wires":[["c4def4b4.63fea"]]},{"id":"c4def4b4.63fea","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1039.228889465332,"y":1582.2778162956238,"z":"293895e6.5ef0e2","wires":[["62b19f9d.67a67"]]},{"id":"bc99eab5.63fc78","type":"outcome","name":"outcome Contrail","xml":"<outcome value='Contrail'>\n","comments":"","outputs":1,"x":1072.8397598266602,"y":1730.8609957695007,"z":"293895e6.5ef0e2","wires":[["ad2de5e.0feaf98"]]},{"id":"98ca247b.003d6","type":"outcome","name":"outcome AIC_SR_IOV","xml":"<outcome value='AIC_SR_IOV'>\n","comments":"","outputs":1,"x":1106.8397903442383,"y":2073.8611178398132,"z":"293895e6.5ef0e2","wires":[["f42f3f68.8503f8"]]},{"id":"47e7c181.61d528","type":"switchNode","name":"switch region","xml":"<switch test='`$aai.complex.region`'>\n","comments":"","outputs":1,"x":2519.7289123535156,"y":1517.8609776496887,"z":"293895e6.5ef0e2","wires":[["eeb7c55f.544058","e483bf22.b6c018","6194657.fd9b99c","bd683dd1.b3f298","88a51647.0a80d8","d24339dd.e70008","78064e5a.452108","fa0d0769.128ad8"]]},{"id":"eeb7c55f.544058","type":"other","name":"CA","xml":"<outcome value='CA'>\n","comments":"","outputs":1,"x":2762.9591522216797,"y":1458.8888869285583,"z":"293895e6.5ef0e2","wires":[["6b7a7bfb.ed67c4"]]},{"id":"e483bf22.b6c018","type":"other","name":"US","xml":"<outcome value='US'>\n","comments":"","outputs":1,"x":2761.0343704223633,"y":1490.932584285736,"z":"293895e6.5ef0e2","wires":[["6b7a7bfb.ed67c4"]]},{"id":"6194657.fd9b99c","type":"other","name":"LA","xml":"<outcome value='LA'>\n","comments":"","outputs":1,"x":2759.605728149414,"y":1524.8611035346985,"z":"293895e6.5ef0e2","wires":[["6b7a7bfb.ed67c4"]]},{"id":"bd683dd1.b3f298","type":"other","name":"EMEA","xml":"<outcome value='EMEA'>\n","comments":"","outputs":1,"x":2759.7844581604004,"y":1556.1111493110657,"z":"293895e6.5ef0e2","wires":[["6b7a7bfb.ed67c4"]]},{"id":"88a51647.0a80d8","type":"other","name":"AP","xml":"<outcome value='AP'>\n","comments":"","outputs":1,"x":2759.605796813965,"y":1589.8611550331116,"z":"293895e6.5ef0e2","wires":[["6b7a7bfb.ed67c4"]]},{"id":"d24339dd.e70008","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2761.0343132019043,"y":1621.1110577583313,"z":"293895e6.5ef0e2","wires":[["de868ff7.e2f398"]]},{"id":"6b7a7bfb.ed67c4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2918.7285770840117,"y":1486.3612209426033,"z":"293895e6.5ef0e2","wires":[[]]},{"id":"878c8d61.5c11c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1056.8398056030273,"y":2360.3060030937195,"z":"293895e6.5ef0e2","wires":[["964d0759.ba21c"]]},{"id":"1f720674.eca1b2","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3029.839500427246,"y":1706.0834078788757,"z":"293895e6.5ef0e2","wires":[[]]},{"id":"25845c0e.13752c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3086.840057373047,"y":2086.083400249481,"z":"293895e6.5ef0e2","wires":[[]]},{"id":"ba3daf8e.1a127","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3128.8395919799805,"y":2344.083531200886,"z":"293895e6.5ef0e2","wires":[[]]},{"id":"c87d3fb.61607c","type":"call","name":"call process-eipam-pools","xml":"<call module='GENERIC-RESOURCE-API' rpc='process-eipam-pools' mode='sync' >\n","comments":"tmp.level should be set to 1","outputs":1,"x":817.4753398895264,"y":2476.4619154930115,"z":"293895e6.5ef0e2","wires":[[]]},{"id":"67411a15.4513fc","type":"call","name":"call GENERIC-RESOURCE-API:create-l3-subnet","xml":"<call module='GENERIC-RESOURCE-API' rpc='create-l3-subnet' mode='sync' >\n","comments":"tmp.level should be set to 1","outputs":1,"x":904.6861925125122,"y":2648.2196526527405,"z":"293895e6.5ef0e2","wires":[[]]},{"id":"4db8414c.fd2348","type":"set","name":"set process-eipam-action","xml":"<set>\n<parameter name='tmp.process-eipam-action' value='assign' />\n","comments":"","x":820.9407939910889,"y":2437.4621596336365,"z":"293895e6.5ef0e2","wires":[]},{"id":"fe0c8615.109c78","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Values after process-eipam\"/>\n<parameter name=\"field5\" value=\"`level1-v4-mask`\"/>\n<parameter name=\"field6\" value=\"`$tmp.l3-network.level1.v4.mask`\"/>\n<parameter name=\"field7\" value=\"`level1-v4-ipprefix`\"/>\n<parameter name=\"field8\" value=\"`$tmp.l3-network.level1.v4.ip-prefix`\"/>\n<parameter name=\"field9\" value=\"`level1-v4-entity-id`\"/>\n<parameter name=\"field10\" value=\"`$tmp.l3-network.level1.v4.entity-id`\"/>\n<parameter name=\"field11\" value=\"`level2-v4-mask`\"/>\n<parameter name=\"field12\" value=\"`$tmp.l3-network.level2.v4.mask`\"/>\n<parameter name=\"field13\" value=\"`level2-v4-ipprefix`\"/>\n<parameter name=\"field14\" value=\"`$tmp.l3-network.level2.v4.ip-prefix`\"/>\n<parameter name=\"field15\" value=\"`level2-v4-entity-id`\"/>\n<parameter name=\"field16\" value=\"`$tmp.l3-network.level2.v4.entity-id`\"/>\n\n\n","comments":"","outputs":1,"x":767.5917949676514,"y":2512.2438979148865,"z":"293895e6.5ef0e2","wires":[[]]},{"id":"ad2de5e.0feaf98","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1284.8397903442383,"y":1729.8611178398132,"z":"293895e6.5ef0e2","wires":[["e335a0be.901ca","bbedd6ee.89d8b8"]]},{"id":"f42f3f68.8503f8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1332.839729309082,"y":2073.8611178398132,"z":"293895e6.5ef0e2","wires":[["1581aae3.4fadd5","18d89bc5.ccc5bc"]]},{"id":"e335a0be.901ca","type":"switchNode","name":"switch: network-model.use-ipv4","xml":"<switch test=\"`$network-model.use-ipv4`\">","comments":"","outputs":1,"x":1540.8396682739258,"y":1728.4169039726257,"z":"293895e6.5ef0e2","wires":[["8105ec47.183e"]]},{"id":"8105ec47.183e","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1795.8397941589355,"y":1728.8454604148865,"z":"293895e6.5ef0e2","wires":[["3c8a3bf6.f3d274"]]},{"id":"3c8a3bf6.f3d274","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1968.4111137390137,"y":1729.274064540863,"z":"293895e6.5ef0e2","wires":[["f7696e6a.52691"]]},{"id":"1581aae3.4fadd5","type":"switchNode","name":"switch: network-model.use-ipv4","xml":"<switch test=\"`$network-model.use-ipv4`\">","comments":"","outputs":1,"x":1607.9509735107422,"y":2074.4169363975525,"z":"293895e6.5ef0e2","wires":[["d961b200.afc68"]]},{"id":"d961b200.afc68","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1862.951099395752,"y":2077.8454928398132,"z":"293895e6.5ef0e2","wires":[["f24844ce.f2b368"]]},{"id":"f24844ce.f2b368","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2035.52241897583,"y":2078.27409696579,"z":"293895e6.5ef0e2","wires":[["71eecbd.b148b34"]]},{"id":"18d89bc5.ccc5bc","type":"switchNode","name":"switch: network-model.use-ipv6","xml":"<switch test=\"`$network-model.use-ipv6`\">","comments":"","outputs":1,"x":1627.9509353637695,"y":2295.4168429374695,"z":"293895e6.5ef0e2","wires":[["8e75cddf.18434"]]},{"id":"8e75cddf.18434","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1882.9510612487793,"y":2298.84539937973,"z":"293895e6.5ef0e2","wires":[["587f23be.ee01f4"]]},{"id":"587f23be.ee01f4","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2079.522392272949,"y":2297.2740817070007,"z":"293895e6.5ef0e2","wires":[["da0609b1.dd66e"]]},{"id":"bbedd6ee.89d8b8","type":"switchNode","name":"switch: network-model.use-ipv6","xml":"<switch test=\"`$network-model.use-ipv6`\">","comments":"","outputs":1,"x":1549.9509353637695,"y":1897.4168429374695,"z":"293895e6.5ef0e2","wires":[["3d360ef.f0501f2"]]},{"id":"3d360ef.f0501f2","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1804.9510612487793,"y":1900.8453993797302,"z":"293895e6.5ef0e2","wires":[["cd4df9ff.6b5c6"]]},{"id":"cd4df9ff.6b5c6","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2001.5223922729492,"y":1899.2740817070007,"z":"293895e6.5ef0e2","wires":[["34c49751.1e7d6"]]},{"id":"51656656.ba094","type":"other","name":"AIC_AIM_LANDING_NETWORK_V4","xml":"<outcome value='AIC_AIM_LANDING_NETWORK_V4'>","comments":"","outputs":1,"x":2786.8396224975586,"y":1770.9722323417664,"z":"293895e6.5ef0e2","wires":[["1f720674.eca1b2"]]},{"id":"82367816.ed7db8","type":"other","name":"AIC_ATM_UNPROTECTED_V6","xml":"<outcome value='AIC_ATM_UNPROTECTED_V6'>","comments":"","outputs":1,"x":2777.639846801758,"y":1875.972312450409,"z":"293895e6.5ef0e2","wires":[["9d1ac85b.f8dfc"]]},{"id":"16e5d844.ab3f38","type":"other","name":"AIC_ATM_PROTECTED_V6","xml":"<outcome value='AIC_ATM_PROTECTED_V6'>","comments":"","outputs":1,"x":2767.5284576416016,"y":1913.5281510353088,"z":"293895e6.5ef0e2","wires":[["9d1ac85b.f8dfc"]]},{"id":"9d1ac85b.f8dfc","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3035.078826904297,"y":1883.1736063957214,"z":"293895e6.5ef0e2","wires":[[]]},{"id":"a6bdf612.22b0f8","type":"other","name":"AIC_AIM_LANDING_NETWORK_V6","xml":"<outcome value='AIC_AIM_LANDING_NETWORK_V6'>","comments":"","outputs":1,"x":2792.0789489746094,"y":1948.062430858612,"z":"293895e6.5ef0e2","wires":[["9d1ac85b.f8dfc"]]},{"id":"2321c9f0.8a0d9e","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2698.083278656006,"y":1985.6404280662537,"z":"293895e6.5ef0e2","wires":[["f448e026.7558"]]},{"id":"78064e5a.452108","type":"other","name":"USA","xml":"<outcome value='USA'>\n","comments":"","outputs":1,"x":2760.823974609375,"y":1375.0516905784607,"z":"293895e6.5ef0e2","wires":[["4c37cf50.e01f5"]]},{"id":"4c37cf50.e01f5","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2921.617383956909,"y":1375.5278687477112,"z":"293895e6.5ef0e2","wires":[["8c6aee9f.d4174"]]},{"id":"8c6aee9f.d4174","type":"set","name":"set USA to US as work around","xml":"<set>\n<parameter name='aai.complex.region' value='US' />\n","comments":"","x":3134.951187133789,"y":1375.527936220169,"z":"293895e6.5ef0e2","wires":[]},{"id":"fa0d0769.128ad8","type":"other","name":"CALA","xml":"<outcome value='CALA'>\n","comments":"","outputs":1,"x":2759.839797973633,"y":1406.972312450409,"z":"293895e6.5ef0e2","wires":[["fd734913.d51d4"]]},{"id":"fd734913.d51d4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2920.633207321167,"y":1407.4484906196594,"z":"293895e6.5ef0e2","wires":[["343172b0.f8f56e"]]},{"id":"343172b0.f8f56e","type":"set","name":"set CALA to LA as work around","xml":"<set>\n<parameter name='aai.complex.region' value='LA' />\n","comments":"","x":3133.967010498047,"y":1407.4485580921173,"z":"293895e6.5ef0e2","wires":[]},{"id":"ece618e.04a51e8","type":"set","name":"set object-path","xml":"<set>\n<parameter name='network-object-path'\n value=\"`$tmp.l3-network.self-link`\"/>\n \n","comments":"","x":657.9166507720947,"y":3737.571755886078,"z":"293895e6.5ef0e2","wires":[]},{"id":"44cca957.3504a8","type":"set","name":"set networkId","xml":"<set>\n<parameter name='networkId' value='`$tmp.l3-network.network-id`' />\n","comments":"","x":659.3451709747314,"y":3691.8573746681213,"z":"293895e6.5ef0e2","wires":[]},{"id":"ddf2d1ad.9086d","type":"set","name":"set network-level-oper-status","xml":"<set>\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='PendingCreate' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />\n","comments":"","x":705.6308841705322,"y":3783.2860283851624,"z":"293895e6.5ef0e2","wires":[]},{"id":"2688708b.68097","type":"set","name":"set network in service-data","xml":"<set>\n<parameter name=\"service-data.networks.network[$nidx].network-id\" value='`$tmp.l3-network.network-id`' />\n<parameter name=\"service-data.networks.network[$nidx].network-data.network-topology.\" value='$network-topology.' />\n<parameter name=\"service-data.networks.network[$nidx].network-data.network-request-input.\" value='$x.' />\n<parameter name=\"service-data.networks.network_length\" value='`$nidx_len`' />\n\n","comments":"","x":729.1667032241821,"y":3611.6787384450436,"z":"293895e6.5ef0e2","wires":[]},{"id":"22bd05cf.445f7a","type":"set","name":"copy input to service-data","xml":"<set>\n<parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />\n","comments":"","x":808.0120086669922,"y":617.4404835700989,"z":"293895e6.5ef0e2","wires":[]},{"id":"b853c9fb.a4b158","type":"set","name":"set network-topology-identifier-structure in service-data","xml":"<set>\n<parameter name='network-topology.network-topology-identifier-structure.' value='`$tmp.l3-network.`' />\n<parameter name='network-topology.tenant' value='`$network-topology-operation-input.network-request-input.tenant`' />\n<parameter name='network-topology.onap-model-information.' value='`$network-topology-operation-input.network-information.onap-model-information.`' />\n<parameter name='network-topology.network-parameters.' value='`$network-topology-operation-input.network-request-input.network-parameters.`' />\n<parameter name='network-topology.aic-cloud-region' value='`$network-topology-operation-input.network-request-input.aic-cloud-region`' />","comments":"","x":833.9524354934692,"y":3475.4297680854797,"z":"293895e6.5ef0e2","wires":[]},{"id":"f387ea7a.cb332","type":"save","name":"save relationship: service-instance","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"service-instance\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"customer.global-customer-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$service-data.service-information.global-customer-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-key\" value=\"service-subscription.service-type\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-value\" value=\"`$service-data.service-information.subscription-service-type`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-key\" value=\"service-instance.service-instance-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-value\" value=\"`$service-data.service-information.service-instance-id`\" />","comments":"","outputs":1,"x":845.3147430419922,"y":3082.7002577781677,"z":"293895e6.5ef0e2","wires":[["7eb3a40a.7e9414","d1dfe3a9.bb9198"]]},{"id":"39ae8d85.6e5642","type":"save","name":"save AnAI - l3-network","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"network-name\" value=\"`$tmp.l3-network.network-name`\" />\n<parameter name=\"network-type\" value=\"`$tmp.l3-network.network-type`\" />\n<parameter name=\"network-role\" value=\"`$tmp.l3-network.network-role`\" />\n<parameter name=\"network-technology\" value=\"`$tmp.l3-network.network-technology`\" />\n<parameter name=\"is-bound-to-vpn\" value=\"`$tmp.l3-network.is-bound-to-vpn-boolean`\" />\n<parameter name=\"service-id\" value=\"`$tmp.l3-network.service-id`\" />\n<parameter name=\"tenant-id\" value=\"`$network-topology-operation-input.network-request-information.tenant`\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />\n<parameter name=\"persona-model-id\" value=\"`$tmp.l3-network.persona-model-id`\" />\n<parameter name=\"persona-model-version\" value=\"`$tmp.l3-network.persona-model-version`\" />\n<parameter name=\"persona-model-customization-id\" value=\"`$tmp.l3-network.persona-model-customization-id`\" />\n<parameter name=\"physical-network-name\" value=\"`$tmp.l3-network.physical-network-name`\" />\n<parameter name=\"is-provider-network\" value=\"`$tmp.l3-network.is-provider-network-boolean`\" />\n<parameter name=\"is-shared-network\" value=\"`$tmp.l3-network.is-shared-network-boolean`\" />\n<parameter name=\"is-external-network\" value=\"`$tmp.l3-network.is-external-network-boolean`\" />\n<parameter name=\"selflink\" value=\"`$tmp.l3-network.self-link`\" />\n","comments":"","outputs":1,"x":1171.1640014648438,"y":2786.46630859375,"z":"293895e6.5ef0e2","wires":[["17d2413.1f4be3f","eb5b34d1.4537b8"]]},{"id":"79a2f133.fd6f08","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=\"`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`\" />\n","comments":"","x":1856.84326171875,"y":2660.759765625,"z":"293895e6.5ef0e2","wires":[]},{"id":"17d2413.1f4be3f","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1414.271484375,"y":2751.525390625,"z":"293895e6.5ef0e2","wires":[["6fed3d50.bda79c"]]},{"id":"efd11375.9b214","type":"save","name":"save AnAI - l3-network.subnets","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.subnet-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"subnet-id\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-id`\" />\n<parameter name=\"subnet-name\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-name`\" />\n<parameter name=\"gateway-address\" value=\"`$tmp.l3-network.subnet[$sidx].gateway-address`\" />\n<parameter name=\"network-start-address\" value=\"`$tmp.l3-network.subnet[$sidx].network-start-address`\" />\n<parameter name=\"cidr-mask\" value=\"`$tmp.l3-network.subnet[$sidx].cidr-mask`\" />\n<parameter name=\"ip-version\" value=\"`$tmp.l3-network.subnet[$sidx].ip-version`\" />\n<parameter name=\"dhcp-enabled\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-enabled`\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />","comments":"","outputs":1,"x":2641.6993265151978,"y":2963.048982143402,"z":"293895e6.5ef0e2","wires":[["3828c6d6.552ef2","94c217d1.df75c8"]]},{"id":"78d9149.661776c","type":"for","name":"for 0..subnet_length","xml":"<for index='sidx' start='0' end='`$tmp.l3-network.subnet_length`' >\n","comments":"","outputs":1,"x":790.2557344436646,"y":2941.525412082672,"z":"293895e6.5ef0e2","wires":[["5be49735.084798"]]},{"id":"5be49735.084798","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1017.3984146118164,"y":2940.414363384247,"z":"293895e6.5ef0e2","wires":[["fcd830c9.2b335","aa132056.6dc0b8"]]},{"id":"3828c6d6.552ef2","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2993.254143714905,"y":2922.381850719452,"z":"293895e6.5ef0e2","wires":[["cfb1639.9c505a"]]},{"id":"74426281.f93a14","type":"save","name":"save relationship: tenant and cloud-region","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" \n\tforce=\"true\" \n\tlocal-only=\"false\">\n\t<!-- create relationship-list -->\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"tenant\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"cloud-region.cloud-owner\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.cloud-region.cloud-owner`\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-key\" value=\"cloud-region.cloud-region-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-value\" value=\"`$network-topology-operation-input.network-request-input.aic-cloud-region`\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-key\" value=\"tenant.tenant-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-value\" value=\"`$network-topology-operation-input.network-request-input.tenant`\" />\n\t<parameter name=\"relationship-list.relationship[1].related-to\" value=\"cloud-region\" />\n\t<parameter name=\"relationship-list.relationship[1].relationship-data[0].relationship-key\" value=\"cloud-region.cloud-owner\" />\n\t<parameter name=\"relationship-list.relationship[1].relationship-data[0].relationship-value\" value=\"`$prop.cloud-region.cloud-owner`\" />\n\t<parameter name=\"relationship-list.relationship[1].relationship-data[1].relationship-key\" value=\"cloud-region.cloud-region-id\" />\n\t<parameter name=\"relationship-list.relationship[1].relationship-data[1].relationship-value\" value=\"`$network-topology-operation-input.network-request-input.aic-cloud-region`\" />\n\t\n\t","comments":"","outputs":1,"x":819.3033876419067,"y":3221.0969166755676,"z":"293895e6.5ef0e2","wires":[["a91d8420.27c3d","ff3870a3.9a1f6"]]},{"id":"a91d8420.27c3d","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1067.3033609390259,"y":3223.0968651771545,"z":"293895e6.5ef0e2","wires":[["f1d931a1.d7cc9"]]},{"id":"f1d931a1.d7cc9","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1255.6961889266968,"y":3222.732983112335,"z":"293895e6.5ef0e2","wires":[["567e8b7c.83f8bc","cd23b00b.cf80e"]]},{"id":"567e8b7c.83f8bc","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving tenant and cloud-region relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`\"/>","comments":"","x":1536.6843843460083,"y":3185.5465258061886,"z":"293895e6.5ef0e2","wires":[]},{"id":"94c217d1.df75c8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3001.977288246155,"y":2960.0250391960144,"z":"293895e6.5ef0e2","wires":[["cfb1639.9c505a"]]},{"id":"ff3870a3.9a1f6","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1075.311203956604,"y":3264.930187702179,"z":"293895e6.5ef0e2","wires":[["f1d931a1.d7cc9"]]},{"id":"7eb3a40a.7e9414","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1081.4617080688477,"y":3081.8426909446716,"z":"293895e6.5ef0e2","wires":[["84965dc9.8283b"]]},{"id":"d1dfe3a9.bb9198","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1197.1847200393677,"y":3122.1523509025574,"z":"293895e6.5ef0e2","wires":[["84965dc9.8283b"]]},{"id":"718d3d64.92a56c","type":"delete","name":"delete l3-network","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\">","comments":"","outputs":1,"x":2147.7791681289673,"y":3789.731879711151,"z":"293895e6.5ef0e2","wires":[[]]},{"id":"c44d21c.69791e","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Error writing to l3-network - ' + $tmp.error-message`\"/>","comments":"","x":2136.3833017349243,"y":3832.9278903007507,"z":"293895e6.5ef0e2","wires":[]},{"id":"cd23b00b.cf80e","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1839.2055559158325,"y":3793.733643054962,"z":"293895e6.5ef0e2","wires":[["718d3d64.92a56c","c44d21c.69791e","8a3142fd.49439","bccef547.3b91c"]]},{"id":"d329b682.7e474","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`\"/>","comments":"","x":3433.127190589905,"y":2937.239272594452,"z":"293895e6.5ef0e2","wires":[]},{"id":"cfb1639.9c505a","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3177.9844484329224,"y":2936.6677346229553,"z":"293895e6.5ef0e2","wires":[["d329b682.7e474","cd23b00b.cf80e"]]},{"id":"eb5b34d1.4537b8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1420.0809326171875,"y":2780.001708984375,"z":"293895e6.5ef0e2","wires":[["6fed3d50.bda79c"]]},{"id":"fcd830c9.2b335","type":"set","name":"set: tmp.subnet-id","xml":"<set>\n<parameter name=\"tmp.subnet-id\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-id`\"/>\n\t","comments":"","x":1239.1763610839844,"y":2909.239589214325,"z":"293895e6.5ef0e2","wires":[]},{"id":"aa132056.6dc0b8","type":"switchNode","name":"switch dhcp-enabled","xml":"<switch test='`$tmp.l3-network.subnet[$sidx].dhcp-enabled`'>\n","comments":"","outputs":1,"x":1246.8110847473145,"y":2945.5369839668274,"z":"293895e6.5ef0e2","wires":[["46412666.490af","71945c2.83a5c24"]]},{"id":"71945c2.83a5c24","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1482.9538803100586,"y":2875.3940329551697,"z":"293895e6.5ef0e2","wires":[["25aa1229.98f47e"]]},{"id":"46412666.490af","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1478.8110847473145,"y":2957.53710603714,"z":"293895e6.5ef0e2","wires":[["7387a680.64d7c8"]]},{"id":"603e3edd.83a648","type":"save","name":"save AnAI - l3-network.subnets","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.subnet-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"subnet-id\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-id`\" />\n<parameter name=\"subnet-name\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-name`\" />\n<parameter name=\"gateway-address\" value=\"`$tmp.l3-network.subnet[$sidx].gateway-address`\" />\n<parameter name=\"network-start-address\" value=\"`$tmp.l3-network.subnet[$sidx].network-start-address`\" />\n<parameter name=\"cidr-mask\" value=\"`$tmp.l3-network.subnet[$sidx].cidr-mask`\" />\n<parameter name=\"ip-version\" value=\"`$tmp.l3-network.subnet[$sidx].ip-version`\" />\n<parameter name=\"dhcp-start\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-start`\" />\n<parameter name=\"dhcp-end\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-end`\" />\n<parameter name=\"dhcp-enabled\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-enabled`\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />","comments":"","outputs":1,"x":2678.9533462524414,"y":2884.7750086784363,"z":"293895e6.5ef0e2","wires":[["94c217d1.df75c8","3828c6d6.552ef2"]]},{"id":"25aa1229.98f47e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1673.8423080444336,"y":2875.6163840293884,"z":"293895e6.5ef0e2","wires":[["e9475920.9956e8"]]},{"id":"7387a680.64d7c8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1671.6997566223145,"y":2961.7594571113586,"z":"293895e6.5ef0e2","wires":[["2086000.752238"]]},{"id":"21dcdad4.c9af16","type":"for","name":"for 0..vpn-bindings_length","xml":"<for index='vidx' start='0' end='`$vpn-bindings_length`' >\n","comments":"","outputs":1,"x":1372.9954986572266,"y":3021.0925307273865,"z":"293895e6.5ef0e2","wires":[["64ff0d18.410094"]]},{"id":"6fc56656.d3bba","type":"switchNode","name":"switch hasVpnBindings","xml":"<switch test='`$hasVpnBindings`'>\n","comments":"","outputs":1,"x":813.6626319885254,"y":3022.0559372901917,"z":"293895e6.5ef0e2","wires":[["aae2ae89.17beb8"]]},{"id":"a022b704.0f945","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1174.329360961914,"y":3023.3889174461365,"z":"293895e6.5ef0e2","wires":[["21dcdad4.c9af16"]]},{"id":"44d0134d.af865c","type":"save","name":"save relationship: vpn_bindings","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"vpn-binding\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"vpn-binding.vpn-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$vpn-bindings[$vidx].binding-uuid`\" />","comments":"","outputs":1,"x":1834.329116821289,"y":3021.0556654930115,"z":"293895e6.5ef0e2","wires":[["26719dab.73de8a","359616a1.9e9092"]]},{"id":"26719dab.73de8a","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2171.0686922073364,"y":3026.5311121940613,"z":"293895e6.5ef0e2","wires":[["86119166.1b5a6"]]},{"id":"86119166.1b5a6","type":"block","name":"block","xml":"<block>","atomic":"false","outputs":1,"x":2327.9615716934204,"y":3026.1672196388245,"z":"293895e6.5ef0e2","wires":[["cd23b00b.cf80e","f91a0178.d1d88"]]},{"id":"359616a1.9e9092","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2180.099091529846,"y":3060.8095412254333,"z":"293895e6.5ef0e2","wires":[["86119166.1b5a6"]]},{"id":"64ff0d18.410094","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1590.6622467041016,"y":3023.0554213523865,"z":"293895e6.5ef0e2","wires":[["44d0134d.af865c"]]},{"id":"84965dc9.8283b","type":"block","name":"block","xml":"<block>","atomic":"false","outputs":1,"x":1273.6255340576172,"y":3081.389070034027,"z":"293895e6.5ef0e2","wires":[["cd23b00b.cf80e","aab89d3a.4c2d68"]]},{"id":"aab89d3a.4c2d68","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving service instance relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`\"/>","comments":"","x":1498.6255340576172,"y":3080.0556960105896,"z":"293895e6.5ef0e2","wires":[]},{"id":"f91a0178.d1d88","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving vpn binding relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`\"/>","comments":"","x":2555.6254663467407,"y":3025.388970851898,"z":"293895e6.5ef0e2","wires":[]},{"id":"aae2ae89.17beb8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1007.0435943603516,"y":3022.8532729148865,"z":"293895e6.5ef0e2","wires":[["a022b704.0f945"]]},{"id":"6c88ef63.8cc9","type":"switchNode","name":"switch network-technology","xml":"<switch test='`$network-model.network-technology`'>\n","comments":"","outputs":1,"x":776.376935005188,"y":3304.8531613349915,"z":"293895e6.5ef0e2","wires":[["748972ed.d13a4c"]]},{"id":"748972ed.d13a4c","type":"outcome","name":"outcome AIC_SR_IOV","xml":"<outcome value='AIC_SR_IOV'>\n","comments":"","outputs":1,"x":1079.2659120559692,"y":3306.2974972724915,"z":"293895e6.5ef0e2","wires":[["57356804.69abb"]]},{"id":"57356804.69abb","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1297.2656679153442,"y":3304.297619342804,"z":"293895e6.5ef0e2","wires":[["5b36388c.88f4b8","bf9ed5a9.b8b25"]]},{"id":"5b36388c.88f4b8","type":"save","name":"save AnAI - segmentation-assignment","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"segmentation-assignment\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id \n\t\t\tAND segmentation-assignment.segmentation-id = $tmp.l3-network.segmentation-id\" >\n<!-- Create segmentation-assignment object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"segmentation-id\" value=\"`$tmp.l3-network.segmentation-id`\" />\n","comments":"","outputs":1,"x":1576.3768129348755,"y":3360.631115436554,"z":"293895e6.5ef0e2","wires":[["a98c5ab8.58a478","940d5b93.11a8e8"]]},{"id":"a98c5ab8.58a478","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1845.3768129348755,"y":3337.6312375068665,"z":"293895e6.5ef0e2","wires":[["fd0ca65b.b97618"]]},{"id":"940d5b93.11a8e8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1854.0999574661255,"y":3375.274425983429,"z":"293895e6.5ef0e2","wires":[["fd0ca65b.b97618"]]},{"id":"4829eae1.9d750c","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving segmentation-assignment for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`\"/>","comments":"","x":2416.91649723053,"y":3354.1553416252136,"z":"293895e6.5ef0e2","wires":[]},{"id":"fd0ca65b.b97618","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2161.77391910553,"y":3353.5838084220886,"z":"293895e6.5ef0e2","wires":[["4829eae1.9d750c","cd23b00b.cf80e"]]},{"id":"449b0da0.8a9ffc","type":"execute","name":"execute readProperties","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties'>\n                  <parameter name='contextPrefix' value='prop'/>\n                  <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api.properties'/>\n","comments":"","outputs":1,"x":1551.3770570755005,"y":3254.519915431738,"z":"293895e6.5ef0e2","wires":[["25ce2041.ac8048","d0a813d7.fa3ff"]]},{"id":"25ce2041.ac8048","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1752.3769273757935,"y":3225.5199093818665,"z":"293895e6.5ef0e2","wires":[["1ae3834b.4454e5"]]},{"id":"d0a813d7.fa3ff","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1746.3769273757935,"y":3261.5199093818665,"z":"293895e6.5ef0e2","wires":[["2ca720cb.3108a8"]]},{"id":"e9c5ff44.a1485","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while reading default segmentation-assignment for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`\"/>","comments":"","x":2286.0435724258423,"y":3247.1863474845886,"z":"293895e6.5ef0e2","wires":[]},{"id":"2ca720cb.3108a8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2054.9009866714478,"y":3262.6150584220886,"z":"293895e6.5ef0e2","wires":[["e9c5ff44.a1485","cd23b00b.cf80e"]]},{"id":"e34c5712.24c058","type":"set","name":"set: tmp.l3-network.segmentation-id","xml":"<set>\n\t<parameter name=\"tmp.l3-network.segmentation-id\" value=\"`$prop.default.segmentation-assignment`\"/>","comments":"","x":2318.0435724258423,"y":3215.1863474845886,"z":"293895e6.5ef0e2","wires":[]},{"id":"1ae3834b.4454e5","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2060.9009866714478,"y":3226.6150584220886,"z":"293895e6.5ef0e2","wires":[["e34c5712.24c058"]]},{"id":"bf9ed5a9.b8b25","type":"set","name":"set: segmentionat-d=1","xml":"<set>\n\t<parameter name=\"tmp.l3-network.segmentation-id\" value=\"1\"/>","comments":"","x":1531.3611116409302,"y":3327.7104182243347,"z":"293895e6.5ef0e2","wires":[]},{"id":"7fa6dac9.08cd2c","type":"comment","name":"future if need from property","info":"","comments":"","x":1549.9327211380005,"y":3219.853167384863,"z":"293895e6.5ef0e2","wires":[]},{"id":"e9475920.9956e8","type":"switchNode","name":"switch gateway-address","xml":"<switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>\n","comments":"","outputs":1,"x":1893.8055953979492,"y":2875.9485545158386,"z":"293895e6.5ef0e2","wires":[["d00c210f.09e218","73807347.1a078c"]]},{"id":"d00c210f.09e218","type":"outcome","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2220.2341089248657,"y":2848.3294129371643,"z":"293895e6.5ef0e2","wires":[["cc593137.6c9098"]]},{"id":"73807347.1a078c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2195.9483766555786,"y":2884.0438027381897,"z":"293895e6.5ef0e2","wires":[["293cfd18.c5497a"]]},{"id":"293cfd18.c5497a","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2432.376754760742,"y":2884.472623348236,"z":"293895e6.5ef0e2","wires":[["603e3edd.83a648"]]},{"id":"6aed81c2.0cf788","type":"save","name":"save AnAI - l3-network.subnets","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.subnet-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"subnet-id\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-id`\" />\n<parameter name=\"subnet-name\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-name`\" />\n<parameter name=\"network-start-address\" value=\"`$tmp.l3-network.subnet[$sidx].network-start-address`\" />\n<parameter name=\"cidr-mask\" value=\"`$tmp.l3-network.subnet[$sidx].cidr-mask`\" />\n<parameter name=\"ip-version\" value=\"`$tmp.l3-network.subnet[$sidx].ip-version`\" />\n<parameter name=\"dhcp-start\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-start`\" />\n<parameter name=\"dhcp-end\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-end`\" />\n<parameter name=\"dhcp-enabled\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-enabled`\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />","comments":"","outputs":1,"x":2676.662612915039,"y":2849.329619884491,"z":"293895e6.5ef0e2","wires":[["3828c6d6.552ef2","94c217d1.df75c8"]]},{"id":"cc593137.6c9098","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2445.8001747131348,"y":2850.5987181663513,"z":"293895e6.5ef0e2","wires":[["6aed81c2.0cf788"]]},{"id":"2086000.752238","type":"switchNode","name":"switch gateway-address","xml":"<switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>\n","comments":"","outputs":1,"x":1903.091323852539,"y":2960.663068294525,"z":"293895e6.5ef0e2","wires":[["9af99333.562788","9a5f4664.851838"]]},{"id":"9af99333.562788","type":"outcome","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2229.519814491272,"y":2927.329685688019,"z":"293895e6.5ef0e2","wires":[["2d9e9ce0.f017a4"]]},{"id":"9a5f4664.851838","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2205.234082221985,"y":2963.044075489044,"z":"293895e6.5ef0e2","wires":[["98a4ceda.f14d78"]]},{"id":"98a4ceda.f14d78","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2406.6626710891724,"y":2964.4727396965027,"z":"293895e6.5ef0e2","wires":[["efd11375.9b214"]]},{"id":"2d9e9ce0.f017a4","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2414.3718156814575,"y":2927.7416338920593,"z":"293895e6.5ef0e2","wires":[["acec681.34a3c18"]]},{"id":"acec681.34a3c18","type":"save","name":"save AnAI - l3-network.subnets","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.subnet-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"subnet-id\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-id`\" />\n<parameter name=\"subnet-name\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-name`\" />\n<parameter name=\"network-start-address\" value=\"`$tmp.l3-network.subnet[$sidx].network-start-address`\" />\n<parameter name=\"cidr-mask\" value=\"`$tmp.l3-network.subnet[$sidx].cidr-mask`\" />\n<parameter name=\"ip-version\" value=\"`$tmp.l3-network.subnet[$sidx].ip-version`\" />\n<parameter name=\"dhcp-enabled\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-enabled`\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />","comments":"","outputs":1,"x":2639.5196352005005,"y":2924.472321987152,"z":"293895e6.5ef0e2","wires":[["3828c6d6.552ef2","94c217d1.df75c8"]]},{"id":"4acd25ef.ab1094","type":"switchNode","name":"switch service-id","xml":"<switch test='`$tmp.l3-network.service-id`'>\n","comments":"","outputs":1,"x":781.0436401367188,"y":2772.853515625,"z":"293895e6.5ef0e2","wires":[["7f021e9b.a5c1c8","3b389f88.ce9ab8"]]},{"id":"7f021e9b.a5c1c8","type":"outcome","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":970.0436401367188,"y":2751.853515625,"z":"293895e6.5ef0e2","wires":[["eb4c65af.abd668"]]},{"id":"3b389f88.ce9ab8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":945.0436401367188,"y":2786.853515625,"z":"293895e6.5ef0e2","wires":[["39ae8d85.6e5642"]]},{"id":"eb4c65af.abd668","type":"save","name":"save AnAI - l3-network","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"network-name\" value=\"`$tmp.l3-network.network-name`\" />\n<parameter name=\"network-type\" value=\"`$tmp.l3-network.network-type`\" />\n<parameter name=\"network-role\" value=\"`$tmp.l3-network.network-role`\" />\n<parameter name=\"network-technology\" value=\"`$tmp.l3-network.network-technology`\" />\n<parameter name=\"is-bound-to-vpn\" value=\"`$tmp.l3-network.is-bound-to-vpn-boolean`\" />\n<parameter name=\"tenant-id\" value=\"`$network-topology-operation-input.network-request-information.tenant`\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />\n<parameter name=\"persona-model-id\" value=\"`$tmp.l3-network.persona-model-id`\" />\n<parameter name=\"persona-model-version\" value=\"`$tmp.l3-network.persona-model-version`\" />\n<parameter name=\"persona-model-customization-id\" value=\"`$tmp.l3-network.persona-model-customization-id`\" />\n<parameter name=\"physical-network-name\" value=\"`$tmp.l3-network.physical-network-name`\" />\n<parameter name=\"is-provider-network\" value=\"`$tmp.l3-network.is-provider-network-boolean`\" />\n<parameter name=\"is-shared-network\" value=\"`$tmp.l3-network.is-shared-network-boolean`\" />\n<parameter name=\"is-external-network\" value=\"`$tmp.l3-network.is-external-network-boolean`\" />\n<parameter name=\"selflink\" value=\"`$tmp.l3-network.self-link`\" />\n","comments":"","outputs":1,"x":1177.0436401367188,"y":2751.853515625,"z":"293895e6.5ef0e2","wires":[["17d2413.1f4be3f","eb5b34d1.4537b8"]]},{"id":"7852b58.654cd4c","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n<parameter name='' value='' />\n","comments":"","x":658.7499485015869,"y":3850.904838413,"z":"293895e6.5ef0e2","wires":[]},{"id":"31213429.ff2f4c","type":"switchNode","name":"switch network-model.is-bound-to-vpn","xml":"<switch test='`$network-model.is-bound-to-vpn`'>\n","comments":"","outputs":1,"x":842.7500457763672,"y":756.000009059906,"z":"293895e6.5ef0e2","wires":[["61668342.b78f24"]]},{"id":"61668342.b78f24","type":"other","name":"outcome Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1107.7500495910645,"y":756.0000100135803,"z":"293895e6.5ef0e2","wires":[["6143b1fe.e94e"]]},{"id":"6143b1fe.e94e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">\n","atomic":"true","comments":"","outputs":1,"x":1270.5000915527344,"y":756.4999985694885,"z":"293895e6.5ef0e2","wires":[["4068bc26.c234d4"]]},{"id":"a2810608.412cb","type":"get-resource","name":"get-resource vpn-binding","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"vpn-binding\" \n\t\tkey=\"vpn-binding.vpn-id = $vpn-bindings[$vidx].binding-uuid\"\n        pfx='aai.vpnBinding' local-only='false' >\n\n","comments":"","outputs":1,"x":2552.0715866088867,"y":804.2738480567932,"z":"293895e6.5ef0e2","wires":[["3ec769c5.3b69b6","95bdee60.3a7e48","43fc7f1b.eab248"]]},{"id":"3ec769c5.3b69b6","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2788.027919769287,"y":776.0278038978577,"z":"293895e6.5ef0e2","wires":[["c81ef1d0.c56528"]]},{"id":"95bdee60.3a7e48","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2779.7779846191406,"y":810.6111693382263,"z":"293895e6.5ef0e2","wires":[["c81ef1d0.c56528"]]},{"id":"43fc7f1b.eab248","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2784.1388664245605,"y":740.3889183998108,"z":"293895e6.5ef0e2","wires":[["fcfdef84.8935f"]]},{"id":"fcfdef84.8935f","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2949.1388664245605,"y":740.3889183998108,"z":"293895e6.5ef0e2","wires":[[]]},{"id":"426bb16f.c9bb2","type":"comment","name":"pull vpn binding from db table vs field","info":"","comments":"","x":2150.212989807129,"y":733.9232773780823,"z":"293895e6.5ef0e2","wires":[]},{"id":"613afd9.7dfc984","type":"for","name":"for 0..vpn-bindings_length","xml":"<for index='vidx' start='0' end='`$vpn-bindings_length`' >\n","comments":"","outputs":1,"x":2124.578311920166,"y":802.7328181266785,"z":"293895e6.5ef0e2","wires":[["7f145964.210d18"]]},{"id":"7f145964.210d18","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2333.053966522217,"y":804.812225818634,"z":"293895e6.5ef0e2","wires":[["a2810608.412cb"]]},{"id":"8c080bcb.479bc","type":"set","name":"set hasVpnBindings=true","xml":"<set>\n<parameter name='hasVpnBindings' value='true' />\n","comments":"","x":2122.752670288086,"y":771.3042178153992,"z":"293895e6.5ef0e2","wires":[]},{"id":"4068bc26.c234d4","type":"get-resource","name":"get-resource VPN_BINDINGS","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VPN_BINDINGS WHERE network_customization_uuid = $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid'\n  pfx='vpn-bindings[]'>\n\n","comments":"","outputs":1,"x":1511.2817916870117,"y":756.6746144294739,"z":"293895e6.5ef0e2","wires":[["c7f6e79c.4ad44","cebe8d92.34fa78","60da40f1.463e18"]]},{"id":"cebe8d92.34fa78","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1733.710334777832,"y":849.3888840675354,"z":"293895e6.5ef0e2","wires":[["a3070615.94f568"]]},{"id":"60da40f1.463e18","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1729.0433616638184,"y":888.722198009491,"z":"293895e6.5ef0e2","wires":[["afdf36e1.3edc88"]]},{"id":"c7f6e79c.4ad44","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1729.219367980957,"y":810.8148484230042,"z":"293895e6.5ef0e2","wires":[["ded06bb2.f6b7e8"]]},{"id":"ded06bb2.f6b7e8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1899.424690246582,"y":810.3888840675354,"z":"293895e6.5ef0e2","wires":[["8c080bcb.479bc","613afd9.7dfc984"]]},{"id":"4c3863ea.780a64","type":"set","name":"set onap-model-info","xml":"<set>\n<parameter name='tmp.l3-network.model-invariant-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`\" />\n<parameter name='tmp.l3-network.model-version-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-version`\" />\n<parameter name='tmp.l3-network.model-customization-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`\" />\n<parameter name='s-onap-model-information.model-invariant-uuid' value='`$service-model.invariant-uuid`' />\n<parameter name='s-onap-model-information.model-version' value='`$service-model.version`' />\n<parameter name='s-onap-model-information.model-uuid' value='`$service-model.service-uuid`' />\n<parameter name='s-onap-model-information.model-name' value='`$service-model.name`' />\n<parameter name='n-onap-model-information.model-invariant-uuid' value='`$network-model.invariant-uuid`' />\n<parameter name='n-onap-model-information.model-version' value='`$network-model.version`' />\n<parameter name='n-onap-model-information.model-uuid' value='`$network-model.uuid`' />\n<parameter name='n-onap-model-information.model-name' value='`$network-model.name`' />","comments":"","x":790.75390625,"y":680.00390625,"z":"293895e6.5ef0e2","wires":[]},{"id":"f43b1f67.085098","type":"set","name":"set onap-model-info with mysql data","xml":"<set>\n<parameter name='network-data.service-information.ecomp-model-information.' value=\"`$s-onap-model-information.`\" />\n<parameter name='network-data.network-information.ecomp-model-information.' value=\"`$n-onap-model-information.`\" />\n","comments":"","x":840.0039215087891,"y":713.0039143562317,"z":"293895e6.5ef0e2","wires":[]},{"id":"bccef547.3b91c","type":"call","name":"call naming-policy-generate-name to rollback name","xml":"<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n","comments":"","outputs":1,"x":2259.3800477981567,"y":3746.5046286582947,"z":"293895e6.5ef0e2","wires":[[]]},{"id":"8a3142fd.49439","type":"set","name":"set parameters for generate-unique-name","xml":"<set>\n<parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />\n<parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n\n\n","comments":"","x":2219.630108833313,"y":3702.5046887397766,"z":"293895e6.5ef0e2","wires":[]},{"id":"23833e07.99958a","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2802.681553840637,"y":3751.7563996315002,"z":"293895e6.5ef0e2","wires":[["ef665ef5.eb2a98","1521636d.390f25","f96be9ed.5e0508"]]},{"id":"1521636d.390f25","type":"call","name":"call naming-policy-generate-name to rollback name","xml":"<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n","comments":"","outputs":1,"x":3109.1060609817505,"y":3754.5275464057922,"z":"293895e6.5ef0e2","wires":[[]]},{"id":"ef665ef5.eb2a98","type":"set","name":"set parameters for generate-unique-name","xml":"<set>\n<parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />\n<parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n\n\n","comments":"","x":3081.8562364578247,"y":3716.777464389801,"z":"293895e6.5ef0e2","wires":[]},{"id":"48995ae5.67c19c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1261.505012512207,"y":1320.5048537254333,"z":"293895e6.5ef0e2","wires":[["f8c096c7.aac118","23833e07.99958a"]]},{"id":"cdcb6a66.a11cf","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1257.755012512207,"y":1360.5048537254333,"z":"293895e6.5ef0e2","wires":[["9eef74f0.a1e1b","23833e07.99958a"]]},{"id":"f8c096c7.aac118","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Cloud region not found in AAI\"/>","comments":"","x":1495.2551574707031,"y":1319.2548823356628,"z":"293895e6.5ef0e2","wires":[]},{"id":"f96be9ed.5e0508","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Error writing to l3-network - ' + $tmp.error-message`\"/>","comments":"","x":2988.75519657135,"y":3790.2547554969788,"z":"293895e6.5ef0e2","wires":[]},{"id":"9eef74f0.a1e1b","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Error retrieving cloud region from AAI\"/>","comments":"","x":1495.2551651000977,"y":1360.5047507286072,"z":"293895e6.5ef0e2","wires":[]},{"id":"6c249175.f5d028","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1212.754867553711,"y":1439.2548804283142,"z":"293895e6.5ef0e2","wires":[["7597524b.c05c54","23833e07.99958a"]]},{"id":"7597524b.c05c54","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Cloud region missing relationships in AAI\"/>","comments":"","x":1445.2550048828125,"y":1438.004909992218,"z":"293895e6.5ef0e2","wires":[]},{"id":"62b19f9d.67a67","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1227.754867553711,"y":1581.7548804283142,"z":"293895e6.5ef0e2","wires":[["16974f9.b28683","23833e07.99958a"]]},{"id":"16974f9.b28683","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Complex not found in AAI\"/>","comments":"","x":1460.255012512207,"y":1581.7549214363098,"z":"293895e6.5ef0e2","wires":[]},{"id":"cffd5f4a.151d08","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2320.254867553711,"y":1562.7548804283142,"z":"293895e6.5ef0e2","wires":[["debc7aba.29c54","23833e07.99958a"]]},{"id":"54196261.94e404","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2316.504867553711,"y":1603.7548804283142,"z":"293895e6.5ef0e2","wires":[["5cd4560a.256b98","23833e07.99958a"]]},{"id":"debc7aba.29c54","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Complex not found in AAI\"/>","comments":"","x":2550.505195617676,"y":1565.5049233436584,"z":"293895e6.5ef0e2","wires":[]},{"id":"5cd4560a.256b98","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Error retrieving complex from AA\"/>","comments":"","x":2550.0050201416016,"y":1606.754777431488,"z":"293895e6.5ef0e2","wires":[]},{"id":"de868ff7.e2f398","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2934.9424209594727,"y":1621.5049204826355,"z":"293895e6.5ef0e2","wires":[["7e5580d1.9fcf78","23833e07.99958a"]]},{"id":"7e5580d1.9fcf78","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Complex.region unknown\"/>","comments":"","x":3155.4425735473633,"y":1621.5048174858093,"z":"293895e6.5ef0e2","wires":[]},{"id":"a31343ec.e76f08","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2871.192367553711,"y":1813.0048804283142,"z":"293895e6.5ef0e2","wires":[["7107b96e.fe9278","23833e07.99958a"]]},{"id":"7107b96e.fe9278","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Invalid address plan for VIPR\"/>","comments":"","x":3091.6925201416016,"y":1813.004777431488,"z":"293895e6.5ef0e2","wires":[]},{"id":"f448e026.7558","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2893.692367553711,"y":1985.5048804283142,"z":"293895e6.5ef0e2","wires":[["dbb7226b.0953e","23833e07.99958a"]]},{"id":"dbb7226b.0953e","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"EIPAM V6 Address plan should be null\"/>","comments":"","x":3114.1925201416016,"y":1985.504777431488,"z":"293895e6.5ef0e2","wires":[]},{"id":"cc9dd635.98df68","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2881.192367553711,"y":2189.254880428314,"z":"293895e6.5ef0e2","wires":[["13bc9b22.80b915","23833e07.99958a"]]},{"id":"13bc9b22.80b915","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Invalid address plan for SRIOV\"/>","comments":"","x":3101.6925201416016,"y":2189.254777431488,"z":"293895e6.5ef0e2","wires":[]},{"id":"418a0270.b2cdfc","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2882.7283096313477,"y":2487.5765719413757,"z":"293895e6.5ef0e2","wires":[["9e54712b.194c98","23833e07.99958a"]]},{"id":"9e54712b.194c98","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Invalid ipv6 address plan for SRIOV\"/>","comments":"","x":3103.2284622192383,"y":2487.5764689445496,"z":"293895e6.5ef0e2","wires":[]},{"id":"964d0759.ba21c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1256.5049285888672,"y":2361.7546763420105,"z":"293895e6.5ef0e2","wires":[["8d799b4e.f02948","23833e07.99958a"]]},{"id":"8d799b4e.f02948","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Invalid network-technology.  Only AIC_SR_IOV and Contrail are supported for network automated flow\"/>","comments":"","x":1489.0050735473633,"y":2361.754717350006,"z":"293895e6.5ef0e2","wires":[]},{"id":"a3070615.94f568","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1907.4422454833984,"y":849.2548804283142,"z":"293895e6.5ef0e2","wires":[["21bdae32.51c022","23833e07.99958a"]]},{"id":"afdf36e1.3edc88","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1903.6922454833984,"y":889.2548804283142,"z":"293895e6.5ef0e2","wires":[["743cb5.96e0034c","23833e07.99958a"]]},{"id":"21bdae32.51c022","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Network model is_bound_to_vpn=true but no vpn_binding is present\"/>","comments":"","x":2141.1923904418945,"y":848.0049090385437,"z":"293895e6.5ef0e2","wires":[]},{"id":"743cb5.96e0034c","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Unexpected error retrieving vpn binding\"/>","comments":"","x":2141.192398071289,"y":889.254777431488,"z":"293895e6.5ef0e2","wires":[]},{"id":"c81ef1d0.c56528","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2971.1924209594727,"y":795.504891872406,"z":"293895e6.5ef0e2","wires":[["ea8a27d2.4dd83","23833e07.99958a"]]},{"id":"ea8a27d2.4dd83","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'No vpn binding found for network-model.vpn-binding=' \n    + $vpn-bindings[$vidx].binding-uuid`\"/>","comments":"","x":3208.6925735473633,"y":795.5047888755798,"z":"293895e6.5ef0e2","wires":[]},{"id":"88aa0e0f.278a3","type":"set","name":"set: tmp.error-message to \"\"","xml":"<set>\n\t<parameter name=\"tmp.error-message\" value=\"\"/>","comments":"","x":812.2191925048828,"y":561.9334692955017,"z":"293895e6.5ef0e2","wires":[]},{"id":"c6bc7f3a.1e281","type":"switchNode","name":"switch tmp.nidx ","xml":"<switch test=\"`$tmp.nidx`\">\n\n","comments":"","outputs":1,"x":772.0412635803223,"y":444.2912917137146,"z":"293895e6.5ef0e2","wires":[["4352bf81.36bca8","2ea25c4b.e9b804"]]},{"id":"4352bf81.36bca8","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":960.6126480102539,"y":442.8626751899719,"z":"293895e6.5ef0e2","wires":[["56d49ab9.18493c"]]},{"id":"56d49ab9.18493c","type":"switchNode","name":"switch service-data.networks_length","xml":"<switch test='`$service-data.networks.network_length`'>\n","comments":"","outputs":1,"x":1209.8387413024902,"y":444.0535922050476,"z":"293895e6.5ef0e2","wires":[["d27193d0.539848","ee3cafd7.3c4058"]]},{"id":"d27193d0.539848","type":"other","name":"Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1502.934063911438,"y":442.86290073394775,"z":"293895e6.5ef0e2","wires":[["d8ac678b.d3417"]]},{"id":"d8ac678b.d3417","type":"set","name":"set nidx","xml":"<set>\n<parameter name='nidx' value='0' />\n<parameter name='nidx_len' value='1'/>\n","comments":"","x":1682.934105873108,"y":440.43431663513184,"z":"293895e6.5ef0e2","wires":[]},{"id":"ee3cafd7.3c4058","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1505.791226387024,"y":468.5771732330322,"z":"293895e6.5ef0e2","wires":[["2d29b63f.71cd2a"]]},{"id":"2d29b63f.71cd2a","type":"set","name":"set nidx","xml":"<set>\n<parameter name='nidx' value='`$service-data.networks.network_length`' />\n<parameter name='nidx_len' value='`$service-data.networks.network_length + 1`' />\n","comments":"","x":1684.3626565933228,"y":477.4343738555908,"z":"293895e6.5ef0e2","wires":[]},{"id":"2ea25c4b.e9b804","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":962.0412826538086,"y":481.4341473579407,"z":"293895e6.5ef0e2","wires":[["e1048edf.258b38"]]},{"id":"e1048edf.258b38","type":"set","name":"set nidx","xml":"<set>\n<parameter name='nidx' value='`$tmp.nidx`' />\n<parameter name='nidx_len' value='`$service-data.networks.network_length`' />\n","comments":"","x":1124.8984069824219,"y":481.4341731071472,"z":"293895e6.5ef0e2","wires":[]},{"id":"cb4086d2.f6774","type":"set","name":"set rename for call to create-l3-subnet","xml":"<set>\n<parameter name='v4.entity-id' value='`$tmp.l3-network.level2.v4.entity-id`' />\n<parameter name='v4.ip-prefix' value='`$tmp.l3-network.level2.v4.ip-prefix`' />\n<parameter name='v4.mask' value='`$tmp.l3-network.level2.v4.mask`' />\n<parameter name='v6.entity-id' value='`$tmp.l3-network.level2.v6.entity-id`' />\n<parameter name='v6.ip-prefix' value='`$tmp.l3-network.level2.v6.ip-prefix`' />\n<parameter name='v6.mask' value='`$tmp.l3-network.level2.v6.mask`' />\n\n","comments":"","x":868.7499980926514,"y":2563.5000014305115,"z":"293895e6.5ef0e2","wires":[]},{"id":"6fed3d50.bda79c","type":"block","name":"block","xml":"<block>","atomic":"false","outputs":1,"x":1595.5,"y":2752.25,"z":"293895e6.5ef0e2","wires":[["de7043fa.21dad","cd23b00b.cf80e"]]},{"id":"de7043fa.21dad","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`\"/>","comments":"","x":1823.1638946533203,"y":2751.4717512130737,"z":"293895e6.5ef0e2","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-assign-from-preload.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-assign-from-preload.json
new file mode 100755
index 0000000..5c7f93d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-assign-from-preload.json
@@ -0,0 +1 @@
+[{"id":"7d592922.381a98","type":"dgstart","name":"DGSTART","outputs":1,"x":234.75,"y":114,"z":"904f855.2f5e8f8","wires":[["2231b9ae.40730e"]]},{"id":"2231b9ae.40730e","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":371.0356903076172,"y":181.09526014328003,"z":"904f855.2f5e8f8","wires":[["5597044c.d58a04"]]},{"id":"5597044c.d58a04","type":"method","name":"network-topology-operation-assign-from-preload","xml":"<method rpc='network-topology-operation-assign-from-preload' mode='sync'>\n","comments":"","outputs":1,"x":373.71439361572266,"y":248.89284801483154,"z":"904f855.2f5e8f8","wires":[["eeff1f58.674cb"]]},{"id":"275965de.197eca","type":"comment","name":"Called from assign when network name passed in from mso","info":"","comments":"","x":571.6071395874023,"y":142.00000476837158,"z":"904f855.2f5e8f8","wires":[]},{"id":"eeff1f58.674cb","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":353.74999237060547,"y":380.9999933242798,"z":"904f855.2f5e8f8","wires":[["9c2238aa.67ea08","8255a2a9.5c5808","f9dafdce.3c8a3","685cc7cd.396018","899c4fe3.7f9af8","a4c0d0b4.fb2228","e3f5293b.03dee","cc0b4bd9.424d18","d792a084.fab23","fbeedbdb.9915b","9af57339.b5c73","cae6b67f.073328","1fa70774.12d5c1","ad534b95.44473","6fca91a9.21355","27110277.784596","e618d649.0c64a8","1375dc08.d1881c","98f1afcd.7f17e","31fdd3c0.8004c4","ae3f6cc0.f931c","c33e48fe.f40f2","1edbf6d.7460609","d7a7e7e8.a8b248","6820b570.d2fcf4","2475aec8.3301ca","9d88f2e8.48f3e","75c470c.1b64c1","d03a4655.11876","250c1ed0.7ac68a"]]},{"id":"9c2238aa.67ea08","type":"get-resource","name":"get AnAI - l3-network by network-name","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-name = $tmp.network-instance-name\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.l3-network\">\n","comments":"","outputs":1,"x":739.3293075561523,"y":694.7704095840454,"z":"904f855.2f5e8f8","wires":[["47b81159.539aa","88c61ad0.d333f"]]},{"id":"47b81159.539aa","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1006.3293495178223,"y":694.7703790664673,"z":"904f855.2f5e8f8","wires":[["849fecc5.099258"]]},{"id":"849fecc5.099258","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"'Error searching for l3-network with network-name =' + $tmp.network-instance-name + 'from AnAI'\" />","comments":"","x":1158.4404335021973,"y":694.9926080703735,"z":"904f855.2f5e8f8","wires":[]},{"id":"88c61ad0.d333f","type":"other","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1008.6072845458984,"y":732.2858028411865,"z":"904f855.2f5e8f8","wires":[["a3a611b6.7e9f98"]]},{"id":"a3a611b6.7e9f98","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"'Error l3-network with network-name =' + $tmp.network-instance-name + ' already exists in AnAI'\" />","comments":"","x":1159.6072425842285,"y":731.2857751846313,"z":"904f855.2f5e8f8","wires":[]},{"id":"8255a2a9.5c5808","type":"execute","name":"generate preload network url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.preload-network`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.pn-url\"/>\n    <parameter name=\"target\" value=\"{network-name}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.network-instance-name`\"/>\n","comments":"","outputs":1,"x":700.6071548461914,"y":534.2857880592346,"z":"904f855.2f5e8f8","wires":[[]]},{"id":"f9dafdce.3c8a3","type":"execute","name":"execute RestApiCallNode - Get preload-network by network-name","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pn-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"preload-data\" />\n\n","comments":"","outputs":1,"x":815.6072158813477,"y":569.5358800888062,"z":"904f855.2f5e8f8","wires":[["1a8fb816.080118","de38a578.c54d28"]]},{"id":"1a8fb816.080118","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1181.6072273254395,"y":574.2858438491821,"z":"904f855.2f5e8f8","wires":[["f2b3d346.87f28"]]},{"id":"f2b3d346.87f28","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1351.6071815490723,"y":573.7857294082642,"z":"904f855.2f5e8f8","wires":[[]]},{"id":"de38a578.c54d28","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1177.4589881896973,"y":606.3519020080566,"z":"904f855.2f5e8f8","wires":[["86b0c28f.440d28"]]},{"id":"86b0c28f.440d28","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"'Error: No preload-network found with network-name =' + $tmp.network-instance-name + ' in md-sal'\" />","comments":"","x":1355.6071853637695,"y":606.2858171463013,"z":"904f855.2f5e8f8","wires":[]},{"id":"d97278fc.3053e","type":"comment","name":"preload found in md-sal, aai network doesn't exist.  Proceed to create.","info":"","comments":"","x":834.6071243286133,"y":629.2859487533569,"z":"904f855.2f5e8f8","wires":[]},{"id":"16662914.1e81f7","type":"save","name":"save AnAI - l3-network","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"network-name\" value=\"`$tmp.network-instance-name`\" />\n<parameter name='network-type' value=\"`$network-model.network-type`\" />\n<parameter name='network-role' value=\"`$network-model.network-role`\" />\n<parameter name='network-technology' value=\"`$network-model.network-technology`\" />\n<parameter name='is-bound-to-vpn' value=\"`$network-model.is-bound-to-vpn`\" />\n<parameter name=\"service-id\" value=\"`$network-topology-operation-input.service-information.service-id`\" />\n<parameter name=\"tenant-id\" value=\"`$network-topology-operation-input.network-request-input.tenant`\" />\n<parameter name=\"network-role-instance\" value=\"0\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />\n<parameter name=\"physical-network-name\" value=\"`$preload-data.preload-network-topology-information.physical-network-name`\" />\n<parameter name=\"is-provider-network\" value=\"`$preload-data.preload-network-topology-information.is-provider-network`\" />\n<parameter name=\"is-shared-network\" value=\"`$preload-data.preload-network-topology-information.is-shared-network`\" />\n<parameter name=\"is-external-network\" value=\"`$preload-data.preload-network-topology-information.is-external-network`\" />\n<parameter name=\"selflink\" value=\"`$tmp.l3-network.self-link`\" />\n","comments":"","outputs":1,"x":1087.6789321899414,"y":862.4647035598755,"z":"904f855.2f5e8f8","wires":[["ae985daf.cc194","4833e133.eaab"]]},{"id":"ae985daf.cc194","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1291.4620971679688,"y":825.9800109863281,"z":"904f855.2f5e8f8","wires":[["f037d2da.e2da78"]]},{"id":"f037d2da.e2da78","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Failed to save l3-network in AnAI with network-id = ' + $tmp.return.generate-l3network-network-id.uuid`\"/>","comments":"","x":1484.239646911621,"y":846.7577819824219,"z":"904f855.2f5e8f8","wires":[]},{"id":"685cc7cd.396018","type":"set","name":"set: tmp.error-message to \"\"","xml":"<set>\n\t<parameter name=\"tmp.error-message\" value=\"\"/>","comments":"","x":704.9851989746094,"y":658.7666625976562,"z":"904f855.2f5e8f8","wires":[]},{"id":"4833e133.eaab","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1301.5569381713867,"y":867.3384561538696,"z":"904f855.2f5e8f8","wires":[["f037d2da.e2da78"]]},{"id":"899c4fe3.7f9af8","type":"switchNode","name":"switch ... PRELOAD subnets_length","xml":"<switch test=\"`$preload-data.preload-network-topology-information.subnets_length`\">","comments":"","outputs":1,"x":733.3571853637695,"y":995.4285650253296,"z":"904f855.2f5e8f8","wires":[["b535960c.037"]]},{"id":"b535960c.037","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":994.8016357421875,"y":995.2063007354736,"z":"904f855.2f5e8f8","wires":[["20af37fa.7e239"]]},{"id":"20af37fa.7e239","type":"set","name":"set PRELOAD subnets[] = 0","xml":"<set>\n<parameter name=\"preload-data.preload-network-topology-information.subnets_length\" value=\"0\" />\n","comments":"","x":1228.3572447035049,"y":995.206321398417,"z":"904f855.2f5e8f8","wires":[]},{"id":"a4c0d0b4.fb2228","type":"for","name":"for loop i - PRELOAD subnets","xml":"<for index=\"i\" start=\"0\" end=\"`$preload-data.preload-network-topology-information.subnets_length`\">\n","comments":"","outputs":1,"x":714.1072463989258,"y":1087.4287095069885,"z":"904f855.2f5e8f8","wires":[["8602f731.72b7c8"]]},{"id":"8602f731.72b7c8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":971.1058654785156,"y":1087.4377207756042,"z":"904f855.2f5e8f8","wires":[["c7ed8c75.f11108","e7ad3a60.ccf05","75e2306b.a71d6","ca97996a.85c7f","3239fd87.45740a","fe762cff.ee4918","45e19eff.8708","18e3cafb.f22a2d","2d9b4f3.65a3a3"]]},{"id":"8bb52697.fd8018","type":"set","name":"set tmp.dhcpEnabled.boolean=false","xml":"<set>\n<parameter name=\"tmp.dhcpEnabled.boolean\" value=\"false\" />\n","comments":"","x":1745.1072463989258,"y":1127.4287095069885,"z":"904f855.2f5e8f8","wires":[]},{"id":"9dd6b81f.8e0e5","type":"set","name":"set tmp.dhcpEnabled.boolean=true","xml":"<set>\n<parameter name=\"tmp.dhcpEnabled.boolean\" value=\"true\" />\n","comments":"","x":1743.4247512817383,"y":1085.365159034729,"z":"904f855.2f5e8f8","wires":[]},{"id":"c7ed8c75.f11108","type":"switchNode","name":"switch: PRELOAD dhcp-enabled","xml":"<switch test=\"`$preload-data.preload-network-topology-information.subnets[$i].dhcp-enabled`\">","comments":"","outputs":1,"x":1235.4247512817383,"y":1084.8713846206665,"z":"904f855.2f5e8f8","wires":[["19d4b935.0a36c7","854d9609.d675e"]]},{"id":"19d4b935.0a36c7","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1492.6470947265625,"y":1085.0937051773071,"z":"904f855.2f5e8f8","wires":[["9dd6b81f.8e0e5"]]},{"id":"854d9609.d675e","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":1492.5517654418945,"y":1126.9349265098572,"z":"904f855.2f5e8f8","wires":[["8bb52697.fd8018"]]},{"id":"e7ad3a60.ccf05","type":"switchNode","name":"switch: PRELOAD addr-from-start","xml":"<switch test=\"`$preload-data.preload-network-topology-information.subnets[$i].addr-from-start`\">","comments":"","outputs":1,"x":1241.675163269043,"y":1241.6893377304077,"z":"904f855.2f5e8f8","wires":[["5ececd95.cb981c","c803a7a5.ad9e38","4d4043ed.bbe3f4"]]},{"id":"5ececd95.cb981c","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1495.8974914550781,"y":1199.6259698867798,"z":"904f855.2f5e8f8","wires":[["c8aeb545.ec2978"]]},{"id":"c803a7a5.ad9e38","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":1495.8021545410156,"y":1284.181456565857,"z":"904f855.2f5e8f8","wires":[["7c696201.cb9d54"]]},{"id":"7c696201.cb9d54","type":"set","name":"set tmp.addrFromStart.boolean=false","xml":"<set>\n<parameter name=\"tmp.addrFromStart.boolean\" value=\"false\" />\n","comments":"","x":1741.5004806518555,"y":1284.6751956939697,"z":"904f855.2f5e8f8","wires":[]},{"id":"c8aeb545.ec2978","type":"set","name":"set tmp.addrFromStart.boolean=true","xml":"<set>\n<parameter name=\"tmp.addrFromStart.boolean\" value=\"true\" />\n","comments":"","x":1746.675148010254,"y":1199.8974237442017,"z":"904f855.2f5e8f8","wires":[]},{"id":"4d4043ed.bbe3f4","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1494.9608612060547,"y":1241.260908126831,"z":"904f855.2f5e8f8","wires":[["c8aeb545.ec2978"]]},{"id":"24c96fdf.aba0e","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1479.1072463989258,"y":1550.4287095069885,"z":"904f855.2f5e8f8","wires":[["393be07f.91e3"]]},{"id":"ca97996a.85c7f","type":"switchNode","name":"switch test: PRELOAD gateway-address","xml":"<switch test=\"`$preload-data.preload-network-topology-information.subnets[$i].gateway-address`\">","comments":"","outputs":1,"x":1255.5000762939453,"y":1398.231457233429,"z":"904f855.2f5e8f8","wires":[["95fd72a7.7afd08"]]},{"id":"95fd72a7.7afd08","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1495.9999828338623,"y":1398.2314133644104,"z":"904f855.2f5e8f8","wires":[["6e1d3211.0bee04"]]},{"id":"a1773e6f.77a1e","type":"GenericXML","name":"Execute: generate gateway-address","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool\" method=\"getGatewayAddress\">\n\t<parameter name=\"ipAddress\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].start-address`\" />\n\t<parameter name=\"ipVersion\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].ip-version`\" />\n\t<parameter name=\"subnet\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].cidr-mask`\" />\n\t<parameter name=\"ctxVariable\" value=\"tmp.return.generate.gateway-address\" />","comments":"","outputs":1,"x":1921.2499980926514,"y":1397.981420993805,"z":"904f855.2f5e8f8","wires":[["cbbe4a5f.1e968"]]},{"id":"6e1d3211.0bee04","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1646.7499904632568,"y":1398.2314238548279,"z":"904f855.2f5e8f8","wires":[["a1773e6f.77a1e","bd82e01.b8a6ea"]]},{"id":"75e2306b.a71d6","type":"set","name":"set tmp.gateway-address","xml":"<set>\n<parameter name=\"tmp.gateway-address\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].gateway-address`\" />\n","comments":"","x":1205.9999980926514,"y":1343.4814200401306,"z":"904f855.2f5e8f8","wires":[]},{"id":"bd82e01.b8a6ea","type":"set","name":"set tmp.gateway-address","xml":"<set>\n<parameter name=\"tmp.gateway-address\" value=\"`$tmp.return.generate.gateway-address`\" />\n","comments":"","x":1892.7499980926514,"y":1458.9814229011536,"z":"904f855.2f5e8f8","wires":[]},{"id":"393be07f.91e3","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":1678.5000743865967,"y":1550.0648274421692,"z":"904f855.2f5e8f8","wires":[["2e1587e6.6e5ca","10c680f7.aeae4f"]]},{"id":"2e1587e6.6e5ca","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving subnet in AnAI where subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`\"/>","comments":"","x":1917.599615097046,"y":1549.8147263526917,"z":"904f855.2f5e8f8","wires":[]},{"id":"3239fd87.45740a","type":"call","name":"call: generate-subnets-subnet-id","xml":"<call module=\"VNF-API\" rpc=\"generate-subnets-subnet-id\" mode=\"sync\" >\n","comments":"","outputs":1,"x":1230.614938735962,"y":1498.088562488556,"z":"904f855.2f5e8f8","wires":[["e7942995.6198b8"]]},{"id":"e7942995.6198b8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1480.3649234771729,"y":1498.3385529518127,"z":"904f855.2f5e8f8","wires":[["10c680f7.aeae4f"]]},{"id":"fe762cff.ee4918","type":"save","name":"save AnAI - l3-network.subnets","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid\" >\n<!-- Create subnet object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"subnet-id\" value=\"`$tmp.return.generate-subnets-subnet-id.uuid`\" />\n<parameter name=\"subnet-name\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].subnet-name`\" />\n<parameter name=\"subnet-role\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].subnet-role`\" />\n<parameter name=\"gateway-address\" value=\"`$tmp.gateway-address`\" />\n<parameter name=\"network-start-address\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].start-address`\" />\n<parameter name=\"cidr-mask\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].cidr-mask`\" />\n<parameter name=\"ip-version\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].ip-version`\" />\n<parameter name=\"dhcp-start\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].dhcp-start-address`\" />\n<parameter name=\"dhcp-end\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].dhcp-end-address`\" />\n<parameter name=\"dhcp-enabled\" value=\"`$tmp.dhcpEnabled.boolean`\" />\n<parameter name=\"ip-assignment-direction\" value=\"`$tmp.addrFromStart.boolean`\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />","comments":"","outputs":1,"x":1229.490972518921,"y":1550.0802063941956,"z":"904f855.2f5e8f8","wires":[["24c96fdf.aba0e","49a6098a.a5c0b"]]},{"id":"49a6098a.a5c0b","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1486.4244785308838,"y":1597.1480813026428,"z":"904f855.2f5e8f8","wires":[["393be07f.91e3"]]},{"id":"cbbe4a5f.1e968","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2167.5434856414795,"y":1398.5052399635315,"z":"904f855.2f5e8f8","wires":[["10c680f7.aeae4f"]]},{"id":"45e19eff.8708","type":"switchNode","name":"switch host-routes_length","xml":"<switch test='`$preload-data.preload-network-topology-information.host-routes_length`'>\n","comments":"","outputs":1,"x":1224.107276916504,"y":1643.4287152290344,"z":"904f855.2f5e8f8","wires":[["c81c1b79.1b13c"]]},{"id":"c81c1b79.1b13c","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1464.678695678711,"y":1643.0001244544983,"z":"904f855.2f5e8f8","wires":[["b6cc66.b6850b98"]]},{"id":"b6cc66.b6850b98","type":"set","name":"set host-routes_length to 0","xml":"<set>\n<parameter name='preload-data.preload-network-topology-information.host-routes_length' value='0' />\n","comments":"","x":1691.821662902832,"y":1643.4285683631897,"z":"904f855.2f5e8f8","wires":[]},{"id":"77358c60.78d16c","type":"call","name":"call: generate-host-routes-host-route-id","xml":"<call module=\"GENERIC-RESOURCE-API\" rpc=\"generate-host-routes-host-route-id\" mode=\"sync\" >\n","comments":"","outputs":1,"x":1810.0160446166992,"y":1766.4289870262146,"z":"904f855.2f5e8f8","wires":[["413368b1.e1c6c"]]},{"id":"413368b1.e1c6c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2074.76602935791,"y":1766.6789774894714,"z":"904f855.2f5e8f8","wires":[["10c680f7.aeae4f"]]},{"id":"18e3cafb.f22a2d","type":"for","name":"for loop h - PRELOAD host-routes","xml":"<for index=\"h\" start=\"0\" end=\"`$preload-data.preload-network-topology-information.host-routes_length`\">\n","comments":"","outputs":1,"x":1229.7225723266602,"y":1769.5429739952087,"z":"904f855.2f5e8f8","wires":[["6f86d096.5b7ca"]]},{"id":"6f86d096.5b7ca","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1509.9606628417969,"y":1765.9713797569275,"z":"904f855.2f5e8f8","wires":[["77358c60.78d16c","d816e769.eaa37","f9fba56f.8a299"]]},{"id":"d816e769.eaa37","type":"set","name":"set tmp.local.subnet-id","xml":"<set>\n<parameter name=\"tmp.local.subnet-id\" value=\"`$tmp.return.generate-subnets-subnet-id.uuid`\" />\n","comments":"","x":1759.960563659668,"y":1702.971405506134,"z":"904f855.2f5e8f8","wires":[]},{"id":"dd067dea.d7e48","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2079.1073322296143,"y":1824.4288630485535,"z":"904f855.2f5e8f8","wires":[["b769acb0.ddfd88"]]},{"id":"b769acb0.ddfd88","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":2278.500160217285,"y":1824.0649809837341,"z":"904f855.2f5e8f8","wires":[["d96697d3.24a928","10c680f7.aeae4f"]]},{"id":"d96697d3.24a928","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`\"/>","comments":"","x":2487.099769592285,"y":1823.8146152496338,"z":"904f855.2f5e8f8","wires":[]},{"id":"f9fba56f.8a299","type":"save","name":"save AnAI - host-routes.host-route","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"host-route\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid  \n\t\t\tAND host-route.host-route-id = $tmp.return.generate-host-routes-host-route-id.uuid\" >\n<!-- Create host-route object -->\n<parameter name=\"host-route-id\" value=\"`$tmp.return.generate-host-routes-host-route-id.uuid`\" />\n<parameter name=\"route-prefix\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].host-routes[$h].route-prefix`\" />\n<parameter name=\"next-hop\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].host-routes[$h].next-hop`\" />","comments":"","outputs":1,"x":1803.4910583496094,"y":1824.0803599357605,"z":"904f855.2f5e8f8","wires":[["dd067dea.d7e48","25e6c104.427846"]]},{"id":"25e6c104.427846","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2087.6744651794434,"y":1872.3981447219849,"z":"904f855.2f5e8f8","wires":[["b769acb0.ddfd88"]]},{"id":"e3f5293b.03dee","type":"switchNode","name":"switch service-id","xml":"<switch test='`$tmp.l3-network.service-id`'>\n","comments":"","outputs":1,"x":680.9287490844727,"y":848.4644546508789,"z":"904f855.2f5e8f8","wires":[["3e11851a.61719a","be4f6ec9.f5675"]]},{"id":"3e11851a.61719a","type":"outcome","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":869.9287490844727,"y":827.4644546508789,"z":"904f855.2f5e8f8","wires":[["f1b4df9f.d8d0e"]]},{"id":"be4f6ec9.f5675","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":844.9287490844727,"y":862.4644546508789,"z":"904f855.2f5e8f8","wires":[["16662914.1e81f7"]]},{"id":"f1b4df9f.d8d0e","type":"save","name":"save AnAI - l3-network","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"network-name\" value=\"`$tmp.network-instance-name`\" />\n<parameter name='network-type' value=\"`$tmp.l3-network.network-type`\" />\n<parameter name='network-role' value=\"`$tmp.l3-network.network-role`\" />\n<parameter name='network-technology' value=\"`$network-model.network-technology`\" />\n<parameter name=\"is-bound-to-vpn\" value=\"`$tmp.l3-network.is-bound-to-vpn-boolean`\" />\n<parameter name=\"tenant-id\" value=\"`$network-topology-operation-input.network-request-input.tenant`\" />\n<parameter name=\"network-role-instance\" value=\"0\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />\n<parameter name=\"physical-network-name\" value=\"`$preload-data.preload-network-topology-information.physical-network-name`\" />\n<parameter name=\"is-provider-network\" value=\"`$preload-data.preload-network-topology-information.is-provider-network`\" />\n<parameter name=\"is-shared-network\" value=\"`$preload-data.preload-network-topology-information.is-shared-network`\" />\n<parameter name=\"is-external-network\" value=\"`$preload-data.preload-network-topology-information.is-external-network`\" />\n<parameter name=\"selflink\" value=\"`$tmp.l3-network.self-link`\" />\n","comments":"","outputs":1,"x":1089.6786575317383,"y":829.9645071029663,"z":"904f855.2f5e8f8","wires":[["ae985daf.cc194","4833e133.eaab"]]},{"id":"d792a084.fab23","type":"save","name":"save relationship: tenant and cloud-region","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" \n\tforce=\"true\" \n\tlocal-only=\"false\">\n\t<!-- create relationship-list -->\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"tenant\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"cloud-region.cloud-owner\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.cloud-region.cloud-owner`\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-key\" value=\"cloud-region.cloud-region-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-value\" value=\"`$network-topology-operation-input.network-request-input.aic-cloud-region`\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-key\" value=\"tenant.tenant-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-value\" value=\"`$network-topology-operation-input.network-request-input.tenant`\" />\n\t<parameter name=\"relationship-list.relationship[1].related-to\" value=\"cloud-region\" />\n\t<parameter name=\"relationship-list.relationship[1].relationship-data[0].relationship-key\" value=\"cloud-region.cloud-owner\" />\n\t<parameter name=\"relationship-list.relationship[1].relationship-data[0].relationship-value\" value=\"`$prop.cloud-region.cloud-owner`\" />\n\t<parameter name=\"relationship-list.relationship[1].relationship-data[1].relationship-key\" value=\"cloud-region.cloud-region-id\" />\n\t<parameter name=\"relationship-list.relationship[1].relationship-data[1].relationship-value\" value=\"`$network-topology-operation-input.network-request-input.aic-cloud-region`\" />\n\t\n\t","comments":"","outputs":1,"x":741.3571853637695,"y":2109.179002761841,"z":"904f855.2f5e8f8","wires":[["16175e24.e2a11a","34c93d4a.ebf89a"]]},{"id":"16175e24.e2a11a","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":989.3571891784668,"y":2109.1789932250977,"z":"904f855.2f5e8f8","wires":[["71f7c6e5.f11fd"]]},{"id":"71f7c6e5.f11fd","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1177.7500171661377,"y":2108.8151111602783,"z":"904f855.2f5e8f8","wires":[["28674d86.03d222","10c680f7.aeae4f"]]},{"id":"28674d86.03d222","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving tenant and cloud-region relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`\"/>","comments":"","x":1387.7381744384766,"y":2106.628755569458,"z":"904f855.2f5e8f8","wires":[]},{"id":"34c93d4a.ebf89a","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":997.3650321960449,"y":2151.012315750122,"z":"904f855.2f5e8f8","wires":[["71f7c6e5.f11fd"]]},{"id":"cc0b4bd9.424d18","type":"set","name":"set l3-network","xml":"<set>\n<parameter name='tmp.l3-network.network-name' value=\"`$tmp.network-instance-name`\" />\n<parameter name='tmp.l3-network.network-type' value=\"`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-type`\" />\n<parameter name=\"tmp.l3-network.physical-network-name\" value=\"`$preload-data.preload-network-topology-information.physical-network-name`\" />\n<parameter name=\"tmp.l3-network.is-provider-network\" value=\"`$preload-data.preload-network-topology-information.is-provider-network`\" />\n<parameter name=\"tmp.l3-network.is-shared-network\" value=\"`$preload-data.preload-network-topology-information.is-shared-network`\" />\n<parameter name=\"tmp.l3-network.is-external-network\" value=\"`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-type`\" />\n<parameter name='tmp.l3-network.network-role' value=\"`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-role`\" />\n<parameter name='tmp.l3-network.network-technology' value=\"`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-technology`\" />\n<parameter name='tmp.l3-network.is-bound-to-vpn' value=\"`$network-model.is-bound-to-vpn`\" />\n<parameter name=\"tmp.l3-network.tenant-id\" value=\"`$network-topology-operation-input.network-request-input.tenant`\" />\n<parameter name=\"tmp.l3-network.network-role-instance\" value=\"0\" />\n<parameter name='tmp.l3-network.orchestration-status' value=\"PendingCreate\" />\n<parameter name='tmp.l3-network.model-invariant-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`\" />\n<parameter name='tmp.l3-network.model-version-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-version`\" />\n<parameter name='tmp.l3-network.model-customization-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`\" />\n<parameter name='tmp.l3-network.eipam-v6-address-plan' value=\"`$network-model.eipam-v6-address-plan`\" />\n<parameter name='tmp.l3-network.eipam-v4-address-plan' value=\"`$network-model.eipam-v4-address-plan`\" />\n<parameter name='tmp.l3-network.service-id' value=\"`$service-data.service-information.service-id`\" />\n<parameter name='tmp.l3-network.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $service-data.service-information.service-instance-id\n + '/service-data/networks/network/'\n + $tmp.l3-network.network-id\n + '/network-data/network-topology/'` \" />\n","comments":"","x":677.9287719726562,"y":758.2145385742188,"z":"904f855.2f5e8f8","wires":[]},{"id":"fbeedbdb.9915b","type":"set","name":"copy input to service-data","xml":"<set>\n<parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />\n","comments":"","x":691.4642944335938,"y":390.00001096725464,"z":"904f855.2f5e8f8","wires":[]},{"id":"9af57339.b5c73","type":"set","name":"set onap-model-info","xml":"<set>\n<parameter name='tmp.l3-network.model-invariant-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`\" />\n<parameter name='tmp.l3-network.model-version-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-version`\" />\n<parameter name='tmp.l3-network.model-customization-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`\" />\n<parameter name='s-onap-model-information.model-invariant-uuid' value='`$service-model.invariant-uuid`' />\n<parameter name='s-onap-model-information.model-version' value='`$service-model.version`' />\n<parameter name='s-onap-model-information.model-uuid' value='`$service-model.service-uuid`' />\n<parameter name='s-onap-model-information.model-name' value='`$service-model.name`' />\n<parameter name='n-onap-model-information.model-invariant-uuid' value='`$network-model.invariant-uuid`' />\n<parameter name='n-onap-model-information.model-version' value='`$network-model.version`' />\n<parameter name='n-onap-model-information.model-uuid' value='`$network-model.uuid`' />\n<parameter name='n-onap-model-information.model-name' value='`$network-model.name`' />","comments":"","x":675.6347427368164,"y":420.0634126663208,"z":"904f855.2f5e8f8","wires":[]},{"id":"cae6b67f.073328","type":"set","name":"set onap-model-info with mysql data","xml":"<set>\n<parameter name='service-data.networks.network[$nidx].network-data.service-information.ecomp-model-information.' value=\"`$s-onap-model-information.`\" />\n<parameter name='service-data.networks.network[$nidx].network-data.network-information.ecomp-model-information.' value=\"`$n-onap-model-information.`\" />\n","comments":"","x":724.8847312927246,"y":450.563410282135,"z":"904f855.2f5e8f8","wires":[]},{"id":"ad534b95.44473","type":"set","name":"set object-path","xml":"<set>\n<parameter name='network-object-path'\n value=\"`$tmp.l3-network.self-link`\"/>\n \n","comments":"","x":660.0010604858398,"y":3678.7512464523315,"z":"904f855.2f5e8f8","wires":[]},{"id":"1fa70774.12d5c1","type":"set","name":"set networkId","xml":"<set>\n<parameter name='networkId' value='`$tmp.l3-network.network-id`' />\n","comments":"","x":656.429557800293,"y":3635.036647796631,"z":"904f855.2f5e8f8","wires":[]},{"id":"27110277.784596","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n<parameter name='' value='' />\n","comments":"","x":656.0010375976562,"y":3809.7509765625,"z":"904f855.2f5e8f8","wires":[]},{"id":"cd67760d.3b296","type":"delete","name":"delete l3-network","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\tkey=\"l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid\">","comments":"","outputs":1,"x":2557.2512741088867,"y":3742.7511587142944,"z":"904f855.2f5e8f8","wires":[[]]},{"id":"e1d80a1a.7969e8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Error writing to l3-netework - ' + $tmp.error-message`\"/>","comments":"","x":2544.188606262207,"y":3785.947202682495,"z":"904f855.2f5e8f8","wires":[]},{"id":"10c680f7.aeae4f","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2367.427536010742,"y":3743.0027475357056,"z":"904f855.2f5e8f8","wires":[["cd67760d.3b296","e1d80a1a.7969e8"]]},{"id":"2d9b4f3.65a3a3","type":"set","name":"set tmp.local.network-id","xml":"<set>\n<parameter name=\"tmp.local.network-id\" value=\"`$tmp.l3-network.network-id`\" />\n","comments":"","x":1204.2101726531982,"y":1448.8384919166565,"z":"904f855.2f5e8f8","wires":[]},{"id":"6fca91a9.21355","type":"set","name":"set network-level-oper-status","xml":"<set>\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='PendingCreate' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />\n","comments":"","x":701.2500610351562,"y":3725.2502098083496,"z":"904f855.2f5e8f8","wires":[]},{"id":"1375dc08.d1881c","type":"for","name":"for loop i - PRELOAD vpn-bindings","xml":"<for index=\"i\" start=\"0\" end=\"`$preload-data.preload-network-topology-information.vpn-bindings_length`\">\n","comments":"","outputs":1,"x":731.001091003418,"y":2297.751326560974,"z":"904f855.2f5e8f8","wires":[["574d1c0a.691b24"]]},{"id":"574d1c0a.691b24","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":972.7788696289062,"y":2298.0013284683228,"z":"904f855.2f5e8f8","wires":[["fa2bbaf6.dd3228","200741d1.dc8a7e","a65f567d.8acfe8"]]},{"id":"41a8cddd.36fdfc","type":"save","name":"save relationship: vpn_bindings","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" \n\tforce=\"true\" \n\tlocal-only=\"false\">\n\t\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"vpn-binding\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"vpn-binding.vpn-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.vpn-binding-id`\" />","comments":"","outputs":1,"x":1677.1637802124023,"y":2575.8306770324707,"z":"904f855.2f5e8f8","wires":[["8d07f24a.1fe3a8","4a84f29d.fed7ac","ea15ac27.f9401"]]},{"id":"e618d649.0c64a8","type":"switchNode","name":"switch ... PRELOAD vpn-bindings[]","xml":"<switch test=\"`$preload-data.preload-network-topology-information.vpn-bindings_length`\">","comments":"","outputs":1,"x":731.3785341050889,"y":2246.3326400121055,"z":"904f855.2f5e8f8","wires":[["74b70b65.70671c"]]},{"id":"74b70b65.70671c","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":951.8229844835068,"y":2246.1103757222495,"z":"904f855.2f5e8f8","wires":[["73ec0d7b.d3f2a4"]]},{"id":"73ec0d7b.d3f2a4","type":"set","name":"set vpn-bindings[] = 0","xml":"<set>\n<parameter name=\"preload-data.preload-network-topology-information.vpn-bindings_length\" value=\"0\" />\n","comments":"","x":1146.3785934448242,"y":2246.110396385193,"z":"904f855.2f5e8f8","wires":[]},{"id":"ac65277d.2e0e68","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1915.2632484436035,"y":2481.6006326675415,"z":"904f855.2f5e8f8","wires":[["69a18f95.bb6bb"]]},{"id":"d2cfe57b.a35e58","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1922.7632522583008,"y":2434.100631713867,"z":"904f855.2f5e8f8","wires":[["69a18f95.bb6bb"]]},{"id":"69a18f95.bb6bb","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2098.263252258301,"y":2481.350633621216,"z":"904f855.2f5e8f8","wires":[["d6496602.bf5e48","10c680f7.aeae4f"]]},{"id":"d6496602.bf5e48","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query vpn-bindings from AnAI where vpn-binding-id = ' + $preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`\"/>","comments":"","x":2320.36279296875,"y":2481.1005325317383,"z":"904f855.2f5e8f8","wires":[]},{"id":"fa2bbaf6.dd3228","type":"switchNode","name":"switch: PRELOAD vpn-binding-id","xml":"<switch test=\"`$preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`\">","comments":"","outputs":1,"x":1251.263256072998,"y":2344.850570678711,"z":"904f855.2f5e8f8","wires":[["30879991.8d2a86"]]},{"id":"30879991.8d2a86","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1464.7632637023926,"y":2344.6005716323853,"z":"904f855.2f5e8f8","wires":[["bcd7dc4e.537ee8"]]},{"id":"bcd7dc4e.537ee8","type":"set","name":"set tmp.vpn-binding-id","xml":"<set>\n<parameter name=\"tmp.vpn-binding-id\" value=\"`$preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`\" />\n","comments":"","x":1647.2632637023926,"y":2344.6005725860596,"z":"904f855.2f5e8f8","wires":[]},{"id":"14075edf.8f17f1","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1918.2632484436035,"y":2389.350631713867,"z":"904f855.2f5e8f8","wires":[["411a0ec1.9a0e68"]]},{"id":"8d07f24a.1fe3a8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1902.2366561889648,"y":2575.306263923645,"z":"904f855.2f5e8f8","wires":[["ec08a067.d71d18"]]},{"id":"ec08a067.d71d18","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2090.129535675049,"y":2574.942371368408,"z":"904f855.2f5e8f8","wires":[["417f4c1f.354f84","10c680f7.aeae4f"]]},{"id":"417f4c1f.354f84","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving vpn-binding relationship for l3-network in AnAI where vpn-id = ' + $tmp.vpn-binding-id`\"/>","comments":"","x":2303.229076385498,"y":2575.6922702789307,"z":"904f855.2f5e8f8","wires":[]},{"id":"200741d1.dc8a7e","type":"switchNode","name":"switch: tmp.vpn-binding-id != NULL","xml":"<switch test=\"`$tmp.vpn-binding-id != ''`\">","comments":"","outputs":1,"x":1000.2633056640625,"y":2403.26708984375,"z":"904f855.2f5e8f8","wires":[["ce353cf6.29839"]]},{"id":"ce353cf6.29839","type":"other","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1234.01318359375,"y":2403.26708984375,"z":"904f855.2f5e8f8","wires":[["d5c07d00.bbbf9"]]},{"id":"a65f567d.8acfe8","type":"set","name":"unset tmp.vpn-binding-id","xml":"<set>\n<parameter name=\"tmp.vpn-binding-id\" value=\"\" />\n","comments":"","x":1225.3385620117188,"y":2298.544904232025,"z":"904f855.2f5e8f8","wires":[]},{"id":"4a84f29d.fed7ac","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1905.8941268920898,"y":2662.16392993927,"z":"904f855.2f5e8f8","wires":[["e2bb2c87.3d244"]]},{"id":"e2bb2c87.3d244","type":"set","name":"set tmp.is-bound-to-vpn","xml":"<set>\n<parameter name=\"tmp.is-bound-to-vpn\" value=\"true\" />\n","comments":"","x":2096.39412689209,"y":2662.16392993927,"z":"904f855.2f5e8f8","wires":[]},{"id":"ea15ac27.f9401","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1910.3225936889648,"y":2617.9575357437134,"z":"904f855.2f5e8f8","wires":[["ec08a067.d71d18"]]},{"id":"411a0ec1.9a0e68","type":"switchNode","name":"switch: tmp.AnAI.vpn-binding.vpn-id","xml":"<switch test=\"`$tmp.AnAI.vpn-binding.vpn-id`\" >","comments":"","outputs":1,"x":2134.2711181640625,"y":2388.850341796875,"z":"904f855.2f5e8f8","wires":[["c1c55f5c.7e6848"]]},{"id":"c1c55f5c.7e6848","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2376.0211181640625,"y":2389.3504695892334,"z":"904f855.2f5e8f8","wires":[["9a952383.71055"]]},{"id":"9a952383.71055","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2555.1337890625,"y":2389.750732421875,"z":"904f855.2f5e8f8","wires":[["6f76fb55.547514","10c680f7.aeae4f"]]},{"id":"6f76fb55.547514","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query vpn-bindings from AnAI where vpn-binding-id  = ' + $tmp.vpn-binding-id + '.'`\"/>","comments":"","x":2770.633758544922,"y":2389.7507152557373,"z":"904f855.2f5e8f8","wires":[]},{"id":"98f1afcd.7f17e","type":"switchNode","name":"switch ... PRELOAD network-policy[]","xml":"<switch test=\"`$preload-data.preload-network-topology-information.network-policy_length`\">","comments":"","outputs":1,"x":739.7509689331055,"y":2681.50096988678,"z":"904f855.2f5e8f8","wires":[["fe947295.cc353"]]},{"id":"fe947295.cc353","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":969.1954193115234,"y":2681.278705596924,"z":"904f855.2f5e8f8","wires":[["7d31c197.0306e8"]]},{"id":"7d31c197.0306e8","type":"set","name":"set network-policy[] = 0","xml":"<set>\n<parameter name='preload-data.preload-network-topology-information.network-policy_length' value='0' />\n","comments":"","x":1163.7510282728408,"y":2681.278726259867,"z":"904f855.2f5e8f8","wires":[]},{"id":"31fdd3c0.8004c4","type":"for","name":"for loop i - PRELOAD network-policy","xml":"<for index=\"i\" start=\"0\" end=\"`$preload-data.preload-network-topology-information.network-policy_length`\">\n","comments":"","outputs":1,"x":739.1082305908203,"y":2727.0723609924316,"z":"904f855.2f5e8f8","wires":[["816cabff.5b8288"]]},{"id":"816cabff.5b8288","type":"switchNode","name":"switch: PRELOAD network-policy-fqdn != NULL","xml":"<switch test=\"`$preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn != ''`\">","comments":"","outputs":1,"x":1095.3704893324111,"y":2727.4216190973916,"z":"904f855.2f5e8f8","wires":[["6c21593a.79f8c8"]]},{"id":"6c21593a.79f8c8","type":"other","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1361.1204893324111,"y":2727.6716190973916,"z":"904f855.2f5e8f8","wires":[["ebc6ee05.37034"]]},{"id":"ebc6ee05.37034","type":"save","name":"query AnAI - network-policy","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"network-policy\" \n\t\tkey=\"network-policy.network-policy-fqdn = $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.network-policy\">","comments":"","outputs":1,"x":1570.3704931471084,"y":2727.6716190973916,"z":"904f855.2f5e8f8","wires":[["fd584772.5251c8","107c735d.16382d","6dd4ddb8.3db9bc"]]},{"id":"fd584772.5251c8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1778.3705770704482,"y":2768.671628634135,"z":"904f855.2f5e8f8","wires":[["5a78ea1e.a9aff4"]]},{"id":"107c735d.16382d","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1783.8705808851455,"y":2727.1716276804605,"z":"904f855.2f5e8f8","wires":[["5a78ea1e.a9aff4"]]},{"id":"5a78ea1e.a9aff4","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1948.3705808851455,"y":2768.421629587809,"z":"904f855.2f5e8f8","wires":[["e4f69cc5.48bbb","10c680f7.aeae4f"]]},{"id":"e4f69cc5.48bbb","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`\"/>","comments":"","x":2157.4701215955947,"y":2768.1715284983316,"z":"904f855.2f5e8f8","wires":[]},{"id":"6dd4ddb8.3db9bc","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1780.9017851087783,"y":2813.0007015864053,"z":"904f855.2f5e8f8","wires":[["2573614f.5ccd5e"]]},{"id":"2573614f.5ccd5e","type":"switchNode","name":"switch: tmp.AnAI.network-policy.network-policy-id","xml":"<switch test=\"`$tmp.AnAI.network-policy.network-policy-id`\" >","comments":"","outputs":1,"x":2058.981056213379,"y":2812.5005588531494,"z":"904f855.2f5e8f8","wires":[["d95b3655.f3c99","3bf15b8c.2b4dec"]]},{"id":"d95b3655.f3c99","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2332.731056213379,"y":2812.0005588531494,"z":"904f855.2f5e8f8","wires":[["a6733916.0987f"]]},{"id":"3bf15b8c.2b4dec","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2332.223213195801,"y":2859.250657081604,"z":"904f855.2f5e8f8","wires":[["c4ba6c4d.50611"]]},{"id":"ae3f6cc0.f931c","type":"switchNode","name":"switch ... PRELOAD route-table-reference[]","xml":"<switch test=\"`$preload-data.preload-network-topology-information.route-table-reference_length`\">","comments":"","outputs":1,"x":757.4017868041992,"y":2880.0006036758423,"z":"904f855.2f5e8f8","wires":[["39c5aea5.9800ea"]]},{"id":"39c5aea5.9800ea","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1012.8462371826172,"y":2879.7783393859863,"z":"904f855.2f5e8f8","wires":[["ac917dd3.d158b"]]},{"id":"ac917dd3.d158b","type":"set","name":"set route-table-reference[] = 0","xml":"<set>\n<parameter name='preload-data.preload-network-topology-information.route-table-reference_length' value='0' />\n","comments":"","x":1217.1519088745117,"y":2878.528371810913,"z":"904f855.2f5e8f8","wires":[]},{"id":"c33e48fe.f40f2","type":"for","name":"for loop i - PRELOAD route-table-reference","xml":"<for index=\"i\" start=\"0\" end=\"`$preload-data.preload-network-topology-information.route-table-reference_length`\">\n","comments":"","outputs":1,"x":755.7590484619141,"y":2927.571994781494,"z":"904f855.2f5e8f8","wires":[["1d90a206.a94ee6"]]},{"id":"1d90a206.a94ee6","type":"switchNode","name":"switch: PRELOAD route-table-reference-fqdn != NULL","xml":"<switch test=\"`$preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn != ''`\">","comments":"","outputs":1,"x":1141.354637145996,"y":2927.2545766830444,"z":"904f855.2f5e8f8","wires":[["d931b196.bb13c8"]]},{"id":"d931b196.bb13c8","type":"other","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1407.104637145996,"y":2927.5045766830444,"z":"904f855.2f5e8f8","wires":[["c0151afe.ccf7d"]]},{"id":"c0151afe.ccf7d","type":"save","name":"query AnAI - route-table-reference","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"route-table-reference\" \n\t\tkey=\"route-table-reference.route-table-reference-fqdn = $preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn\" \n\t\tpfx=\"tmp.AnAI.route-table-reference\">","comments":"","outputs":1,"x":1636.3546409606934,"y":2927.5045766830444,"z":"904f855.2f5e8f8","wires":[["1b0d4ab1.0fe45d","da9c4c3f.55e8f8","173ff66c.769472"]]},{"id":"1b0d4ab1.0fe45d","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1862.3547248840332,"y":2968.5045862197876,"z":"904f855.2f5e8f8","wires":[["1a466fe2.b5678"]]},{"id":"da9c4c3f.55e8f8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1867.8547286987305,"y":2927.0045852661133,"z":"904f855.2f5e8f8","wires":[["1a466fe2.b5678"]]},{"id":"1a466fe2.b5678","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2032.3547286987305,"y":2968.254587173462,"z":"904f855.2f5e8f8","wires":[["20cd2a36.de0a3e","10c680f7.aeae4f"]]},{"id":"20cd2a36.de0a3e","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`\"/>","comments":"","x":2241.4542694091797,"y":2968.0044860839844,"z":"904f855.2f5e8f8","wires":[]},{"id":"173ff66c.769472","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1864.8859329223633,"y":3012.833659172058,"z":"904f855.2f5e8f8","wires":[["2f54d5ed.3e6bf2"]]},{"id":"2f54d5ed.3e6bf2","type":"switchNode","name":"switch: tmp.AnAI.route-table-reference.route-table-reference-id","xml":"<switch test=\"`$tmp.AnAI.route-table-reference.route-table-reference-id`\" >","comments":"","outputs":1,"x":2182.965204026964,"y":3012.3335164388022,"z":"904f855.2f5e8f8","wires":[["a030e283.5654b8","bcbd20c4.9a6c98"]]},{"id":"c4ba6c4d.50611","type":"save","name":"save relationship: network-policy","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"network-policy\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"network-policy.network-policy-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.network-policy.network-policy-id`\" />","comments":"","outputs":1,"x":2562.2509689331055,"y":2859.00096988678,"z":"904f855.2f5e8f8","wires":[["a7e93fe1.c4cfa","e5d2edf9.e5817"]]},{"id":"a7e93fe1.c4cfa","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2785.323844909668,"y":2858.476556777954,"z":"904f855.2f5e8f8","wires":[["fe22bb02.ebcb9"]]},{"id":"fe22bb02.ebcb9","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2965.216724395752,"y":2858.1126642227173,"z":"904f855.2f5e8f8","wires":[["66d9ed51.cfd7e4","10c680f7.aeae4f"]]},{"id":"66d9ed51.cfd7e4","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving network-policy relationship for l3-network in AnAI where network-policy-id = ' + $tmp.AnAI.network-policy.network-policy-id`\"/>","comments":"","x":3188.316265106201,"y":2858.8625631332397,"z":"904f855.2f5e8f8","wires":[]},{"id":"e5d2edf9.e5817","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2793.0602968004014,"y":2900.957081158956,"z":"904f855.2f5e8f8","wires":[["fe22bb02.ebcb9"]]},{"id":"a6733916.0987f","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2504.3181076049805,"y":2810.9569025039673,"z":"904f855.2f5e8f8","wires":[["c4ae766a.d2c618","10c680f7.aeae4f"]]},{"id":"c4ae766a.d2c618","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query newtork-policy from AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn + '. It is likely that the same network-policy-fqdn points to more than one network-policy objects in AnAI.'`\"/>","comments":"","x":2749.468818664551,"y":2810.45645904541,"z":"904f855.2f5e8f8","wires":[]},{"id":"94618525.84434","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query route-table-reference from AnAI where route-table-reference-fqdn = ' + $preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn + '. It is likely that the same route-table-reference-fqdn points to more than one route-table-reference objects in AnAI.'`\"/>","comments":"","x":2934.7509689331055,"y":3001.500725746155,"z":"904f855.2f5e8f8","wires":[]},{"id":"857a389b.9483f","type":"save","name":"save relationship: route-table-reference","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"route-table-reference\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"route-table-reference.route-table-reference-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.route-table-reference.route-table-reference-id`\" />","comments":"","outputs":1,"x":2752.834571838379,"y":3051.0445041656494,"z":"904f855.2f5e8f8","wires":[["640cf074.779e4","f83c3398.a3e3c8"]]},{"id":"640cf074.779e4","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3007.9074478149414,"y":3050.5200910568237,"z":"904f855.2f5e8f8","wires":[["4f94a64b.a935a8"]]},{"id":"4f94a64b.a935a8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3187.8003273010254,"y":3050.156198501587,"z":"904f855.2f5e8f8","wires":[["320aaa6d.7cc736","10c680f7.aeae4f"]]},{"id":"320aaa6d.7cc736","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving route-table-reference relationship for l3-network in AnAI where route-table-reference-id = ' + $tmp.AnAI.route-table-reference.route-table-reference-id`\"/>","comments":"","x":3411.8998947143555,"y":3049.9061212539673,"z":"904f855.2f5e8f8","wires":[]},{"id":"f83c3398.a3e3c8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3015.643899705675,"y":3093.0006154378257,"z":"904f855.2f5e8f8","wires":[["4f94a64b.a935a8"]]},{"id":"a030e283.5654b8","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2519.901710510254,"y":3003.500436782837,"z":"904f855.2f5e8f8","wires":[["9c548e59.9b55e"]]},{"id":"9c548e59.9b55e","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2684.901710510254,"y":3003.000436782837,"z":"904f855.2f5e8f8","wires":[["94618525.84434","10c680f7.aeae4f"]]},{"id":"bcbd20c4.9a6c98","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2519.393867492676,"y":3050.7505350112915,"z":"904f855.2f5e8f8","wires":[["857a389b.9483f"]]},{"id":"4ed44f0b.2faec8","type":"save","name":"update AnAI - l3-network","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" >\n<parameter name=\"is-bound-to-vpn\" value=\"true\" />","comments":"","outputs":1,"x":1147.8759689331055,"y":3049.000725746155,"z":"904f855.2f5e8f8","wires":[["b5e3d12a.6f35a8","fcaa4883.a338b8"]]},{"id":"b5e3d12a.6f35a8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1344.1591262817383,"y":3049.016043663025,"z":"904f855.2f5e8f8","wires":[["f4cb6f65.8fc2b"]]},{"id":"1edbf6d.7460609","type":"switchNode","name":"switch ... tmp.is-bound-to-vpn","xml":"<switch test=\"`$tmp.is-bound-to-vpn`\">","comments":"","outputs":1,"x":710.0188674926758,"y":3049.1436138153076,"z":"904f855.2f5e8f8","wires":[["b8c162bf.bfffb8"]]},{"id":"b8c162bf.bfffb8","type":"outcome","name":"true","xml":"<outcome value=\"true\">","comments":"","outputs":1,"x":929.4633178710938,"y":3048.9213495254517,"z":"904f855.2f5e8f8","wires":[["4ed44f0b.2faec8"]]},{"id":"f4cb6f65.8fc2b","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1556.2688064575195,"y":3049.393569946289,"z":"904f855.2f5e8f8","wires":[["9f9ea316.b821c8","10c680f7.aeae4f"]]},{"id":"9f9ea316.b821c8","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while updating l3-network is-bound-to-vpn in AnAI where network-id = ' + $tmp.return.generate-l3network-network-id.uuid`\"/>","comments":"","x":1774.7687911987305,"y":3049.14354801178,"z":"904f855.2f5e8f8","wires":[]},{"id":"fcaa4883.a338b8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1351.6457595825195,"y":3090.115693092346,"z":"904f855.2f5e8f8","wires":[["f4cb6f65.8fc2b"]]},{"id":"c9e16987.b4c4a8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":990.3972854614258,"y":3199.8412466049194,"z":"904f855.2f5e8f8","wires":[["e48c4af.29ae6b8"]]},{"id":"e48c4af.29ae6b8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1170.2901649475098,"y":3199.4773540496826,"z":"904f855.2f5e8f8","wires":[["815fdd3b.9aa418","10c680f7.aeae4f"]]},{"id":"815fdd3b.9aa418","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving service-instance relationship for l3-network in AnAI where service-instance-id = ' + $network-topology-operation-input.service-information.service-instance-id`\"/>","comments":"","x":1408.3897323608398,"y":3199.227276802063,"z":"904f855.2f5e8f8","wires":[]},{"id":"27c04aed.76d49e","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":998.1337373521592,"y":3242.321770985922,"z":"904f855.2f5e8f8","wires":[["e48c4af.29ae6b8"]]},{"id":"d7a7e7e8.a8b248","type":"save","name":"save relationship: service-instance","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"service-instance\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"customer.global-customer-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$service-data.service-information.global-customer-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-key\" value=\"service-subscription.service-type\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-value\" value=\"`$service-data.service-information.subscription-service-type`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-key\" value=\"service-instance.service-instance-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-value\" value=\"`$service-data.service-information.service-instance-id`\" />","comments":"","outputs":1,"x":733.3760604858398,"y":3198.250744819641,"z":"904f855.2f5e8f8","wires":[["c9e16987.b4c4a8","27c04aed.76d49e"]]},{"id":"2475aec8.3301ca","type":"set","name":"set network in service-data","xml":"<set>\n<parameter name=\"service-data.networks.network[$nidx].network-id\" value='`$tmp.l3-network.network-id`' />\n<parameter name=\"service-data.networks.network[$nidx].network-data.network-information.from-preload\" value='true' />\n<parameter name=\"service-data.networks.network[$nidx].network-data.network-topology.\" value='$network-topology.' />\n<parameter name=\"service-data.networks.network_length\" value='`$nidx_len`' />\n\n","comments":"","x":719.7509689331055,"y":3486.500725746155,"z":"904f855.2f5e8f8","wires":[]},{"id":"6820b570.d2fcf4","type":"set","name":"set network-topology-identifier-structure in service-data","xml":"<set>\n<parameter name='network-topology.network-topology-identifier-structure.' value='`$tmp.l3-network.`' />\n<parameter name='network-topology.tenant' value='`$network-topology-operation-input.network-request-input.tenant`' />\n<parameter name='network-topology.onap-model-information.' value='`$network-topology-operation-input.network-information.onap-model-information.`' />\n<parameter name='network-topology.network-parameters.' value='`$network-topology-operation-input.network-request-input.network-parameters.`' />\n<parameter name='network-topology.aic-cloud-region' value='`$network-topology-operation-input.network-request-input.aic-cloud-region`' />","comments":"","x":803.5009498596191,"y":3379.358116298914,"z":"904f855.2f5e8f8","wires":[]},{"id":"9d88f2e8.48f3e","type":"switchNode","name":"switch tmp.nidx ","xml":"<switch test=\"`$tmp.nidx`\">\n\n","comments":"","outputs":1,"x":672.6088180541992,"y":319.00167179107666,"z":"904f855.2f5e8f8","wires":[["fc452003.28b968","f6026195.195f2"]]},{"id":"fc452003.28b968","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":861.1802024841309,"y":317.573055267334,"z":"904f855.2f5e8f8","wires":[["e37c065b.540c88"]]},{"id":"e37c065b.540c88","type":"switchNode","name":"switch service-data.networks_length","xml":"<switch test='`$service-data.networks.network_length`'>\n","comments":"","outputs":1,"x":1110.4062957763672,"y":318.76397228240967,"z":"904f855.2f5e8f8","wires":[["e663db13.5a4698","c5159555.fdb15"]]},{"id":"e663db13.5a4698","type":"other","name":"Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1403.501618385315,"y":317.5732808113098,"z":"904f855.2f5e8f8","wires":[["25d54d17.2b7a32"]]},{"id":"25d54d17.2b7a32","type":"set","name":"set nidx","xml":"<set>\n<parameter name='nidx' value='0' />\n<parameter name='nidx_len' value='1'/>\n","comments":"","x":1583.5016603469849,"y":315.1446967124939,"z":"904f855.2f5e8f8","wires":[]},{"id":"c5159555.fdb15","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1406.3587808609009,"y":343.2875533103943,"z":"904f855.2f5e8f8","wires":[["92920675.a1a7e"]]},{"id":"92920675.a1a7e","type":"set","name":"set nidx","xml":"<set>\n<parameter name='nidx' value='`$service-data.networks.network_length`' />\n<parameter name='nidx_len' value='`$service-data.networks.network_length + 1`' />\n","comments":"","x":1584.9302110671997,"y":352.1447539329529,"z":"904f855.2f5e8f8","wires":[]},{"id":"f6026195.195f2","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":862.6088371276855,"y":356.14452743530273,"z":"904f855.2f5e8f8","wires":[["27be96dc.4200d2"]]},{"id":"27be96dc.4200d2","type":"set","name":"set nidx","xml":"<set>\n<parameter name='nidx' value='`$tmp.nidx`' />\n<parameter name='nidx_len' value='`$service-data.networks.network_length`' />\n","comments":"","x":1025.4659614562988,"y":356.1445531845093,"z":"904f855.2f5e8f8","wires":[]},{"id":"75c470c.1b64c1","type":"execute","name":"execute printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/lmr-nto.log' />","comments":"","outputs":1,"x":676.75,"y":605,"z":"904f855.2f5e8f8","wires":[[]]},{"id":"d03a4655.11876","type":"execute","name":"execute printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/lmr-nto2.log' />","comments":"","outputs":1,"x":694.75,"y":3528.5,"z":"904f855.2f5e8f8","wires":[[]]},{"id":"250c1ed0.7ac68a","type":"set","name":"set network-information in service-data","xml":"<set>\n<parameter name=\"service-data.networks.network[$nidx].network-data.network-information.network-id\" value='`$tmp.l3-network.network-id`' />\n<parameter name=\"service-data.networks.network[$nidx].network-data.network-information.from-preload\" value='true' />\n<parameter name=\"service-data.networks.network[$nidx].network-data.network-information.network-type\" value='`$tmp.l3-network.network-type`' />\n\n","comments":"","x":751,"y":806.25,"z":"904f855.2f5e8f8","wires":[]},{"id":"7d4ea1ca.77ea4","type":"save","name":"query AnAI - vpn-bindings","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vpn-binding\" \n\t\tkey=\"vpn-binding.vpn-id = $tmp.vpn-binding-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.vpn-binding\">","comments":"","outputs":1,"x":1706,"y":2403.25,"z":"904f855.2f5e8f8","wires":[["14075edf.8f17f1","d2cfe57b.a35e58","ac65277d.2e0e68"]]},{"id":"d5c07d00.bbbf9","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1463.5,"y":2403.5,"z":"904f855.2f5e8f8","wires":[["7d4ea1ca.77ea4","41a8cddd.36fdfc"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-assign-vlantagging-instancegroup.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-assign-vlantagging-instancegroup.json
new file mode 100755
index 0000000..22d17e6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-assign-vlantagging-instancegroup.json
@@ -0,0 +1 @@
+[{"id":"67a53f15.ab9b6","type":"dgstart","name":"DGSTART","outputs":1,"x":133.57701110839844,"y":62.1484432220459,"z":"d5178f42.44976","wires":[["b0d5fc31.8c038"]]},{"id":"b0d5fc31.8c038","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":290.4341335296631,"y":175.6246566772461,"z":"d5178f42.44976","wires":[["366ff52e.33c5ca"]]},{"id":"366ff52e.33c5ca","type":"method","name":"network-topology-operation-assign-vlantagging-instancegroup","xml":"<method rpc='network-topology-operation-assign-vlantagging-instancegroup' mode='sync'>\n","comments":"","outputs":1,"x":336.2080764770508,"y":279.27935695648193,"z":"d5178f42.44976","wires":[["830a3a63.0a3188"]]},{"id":"23048cc0.43a9d4","type":"comment","name":"Called from assign when network instance group passed in from mso","info":"","comments":"","x":368.71986389160156,"y":139.95797157287598,"z":"d5178f42.44976","wires":[]},{"id":"830a3a63.0a3188","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":235.86273193359375,"y":576.67236328125,"z":"d5178f42.44976","wires":[["a3dcfb29.be3be8","44bed9f5.f8a198","6b6b467e.e2b328","6e7beecb.c5df7","a8edbe94.39dac","d4e2ddfb.452e","352b0634.a770ea","c0d1166f.f33bd","3e6da276.1b9876","39ea7531.083dba","985b6687.301738","b1ce3134.3e591","e090256e.e635b8","22e7595d.96a916","93ad9038.590b3","b93d2eef.37f8c","58f3035b.c67d9c","c8f94428.c0f5e8","85da8119.1634e","f05d6459.4c0c08","1eee48d9.dde947","47106adb.c7b994","f241bc6f.abe91","fe4bedce.dccf4","36134ff2.81826","ad080ed7.e2805","83f50832.31bf28","92dee517.041028","ce90a809.365528","4d821497.3ac9ac","bb175352.d3a6d","1868f533.5d5d1b","c535d1b3.3325f","43ee4152.fab5d","1618d258.7486ae","c252ed05.9b99f","307054cf.25730c","8576e473.d1f3e8","9695c264.9ae04","94083d5a.ebf56","48826944.8a8cc8"]]},{"id":"bb175352.d3a6d","type":"set","name":"set nig.vpn-bindings","xml":"<set>\n<parameter name='nig.vpn-bindings.id' value=\"`$vpn-binding.vpn-binding-id`\" />\n<parameter name='nig.vpn-bindings.global-route-target' value=\"`$vpn-binding.global-route-target`\" />\n<parameter name='nig.vpn-bindings.aic-zone' value=\"`$aaiapi.output.cloud-zone`\" />\n<parameter name='nig.vpn-bindings.route-target-role' value=\"`$vpn-binding.route-target-role`\" />\n\n","comments":"","x":755.2925186157227,"y":1952.6742695571156,"z":"d5178f42.44976","wires":[]},{"id":"6e7beecb.c5df7","type":"set","name":"copy input to service-data","xml":"<set>\n<parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />\n<parameter name='service-data.networks.network[$nidx].network-id' value='`$tmp.l3-network.network-id`' />","comments":"","x":906.2679061889648,"y":338.28430461883545,"z":"d5178f42.44976","wires":[]},{"id":"a8edbe94.39dac","type":"set","name":"set onap-model-info","xml":"<set>\n<parameter name='tmp.l3-network.model-invariant-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`\" />\n<parameter name='tmp.l3-network.model-version-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-version`\" />\n<parameter name='tmp.l3-network.model-customization-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`\" />\n<parameter name='s-onap-model-information.model-invariant-uuid' value='`$service-model.invariant-uuid`' />\n<parameter name='s-onap-model-information.model-version' value='`$service-model.version`' />\n<parameter name='s-onap-model-information.model-uuid' value='`$service-model.service-uuid`' />\n<parameter name='s-onap-model-information.model-name' value='`$service-model.name`' />\n<parameter name='n-onap-model-information.model-invariant-uuid' value='`$network-model.invariant-uuid`' />\n<parameter name='n-onap-model-information.model-version' value='`$network-model.version`' />\n<parameter name='n-onap-model-information.model-uuid' value='`$network-model.uuid`' />\n<parameter name='n-onap-model-information.model-name' value='`$network-model.name`' />","comments":"","x":892.8668212890625,"y":372.7048645019531,"z":"d5178f42.44976","wires":[]},{"id":"d4e2ddfb.452e","type":"set","name":"set onap-model-info with mysql data","xml":"<set>\n<parameter name='service-data.networks.network[$nidx]..network-data.service-information.onap-model-information.' value=\"`$s-onap-model-information.`\" />\n<parameter name='service-data.networks.network[$nidx]..network-data.network-information.onap-model-information.' value=\"`$n-onap-model-information.`\" />\n","comments":"","x":946.2596778869629,"y":409.13341426849365,"z":"d5178f42.44976","wires":[]},{"id":"6b6b467e.e2b328","type":"set","name":"set: tmp.error-message to \"\", set tmp.l3-network","xml":"<set>\n\t<parameter name=\"tmp.error-message\" value=\"\"/>\n\t<parameter name=\"tmp.l3-network.network-instance-group-id\" value=\"`$network-topology-operation-input.network-request-input.network-instance-group-id`\" />\n\t<parameter name='tmp.l3-network.network-type' value=\"`$network-model.network-type`\" />\n\t<parameter name='tmp.l3-network.network-role' value=\"`$network-model.network-role`\" />\n\t<parameter name='tmp.l3-network.network-technology' value=\"`$network-model.network-technology`\" />","comments":"","x":981.4751014709473,"y":298.4915442466736,"z":"d5178f42.44976","wires":[]},{"id":"93ad9038.590b3","type":"set","name":"set: get-complex-resource-service-model-input.customization-uuid","xml":"<set>\n\t<parameter name=\"get-complex-resource-service-model-input.customization-uuid\" value=\"`$aaiapi.output.collection-customization-uuid`\"/>","comments":"","x":908.3611755371094,"y":1220.3469247817993,"z":"d5178f42.44976","wires":[]},{"id":"22e7595d.96a916","type":"call","name":"call aai-get-network-instance-group","xml":"<call module='GENERIC-RESOURCE-API' rpc='aai-get-network-instance-group' mode='sync' >\n","comments":"","outputs":1,"x":834.7896575927734,"y":1046.6325091720792,"z":"d5178f42.44976","wires":[[]]},{"id":"85da8119.1634e","type":"set","name":"set: get-data-from-policy-input.policy-instance-name for subnet assignment","xml":"<set>\n\t<parameter name=\"get-data-from-policy-input.policy-instance-name\" value=\"`$get-complex-resource-service-model-output.subnet-assignment-policy`\" />\n\t","comments":"","x":953.1470718383789,"y":1405.6041303275852,"z":"d5178f42.44976","wires":[]},{"id":"f05d6459.4c0c08","type":"call","name":"call get-data-from-policy","xml":"<call module='GENERIC-RESOURCE-API' rpc='get-data-from-policy' mode='sync' >\n","comments":"","outputs":1,"x":789.1469879150391,"y":1444.6040411590366,"z":"d5178f42.44976","wires":[[]]},{"id":"7a297c31.4a0a24","type":"comment","name":"Determine if subnet use is unique or shared","info":"","comments":"","x":856.1469192504883,"y":1374.604030191782,"z":"d5178f42.44976","wires":[]},{"id":"1eee48d9.dde947","type":"set","name":"set: nig.subnet-assignment-policy.subnet-use","xml":"<set>\n\t<parameter name=\"nig.subnet-assignment-policy.subnet-use\" value=\"`$get-data-from-policy-output.ip-assignment`\" />\n\t","comments":"","x":858.6469116210938,"y":1480.6040077804355,"z":"d5178f42.44976","wires":[]},{"id":"ad080ed7.e2805","type":"set","name":"set: cloud owner/region","xml":"<set>\n\t<parameter name=\"aaiapi.input.cloud-owner\" value=\"`$prop.cloud-region.cloud-owner`\" />\n\t<parameter name=\"aaiapi.input.cloud-region-id\" value=\"`$network-topology-operation-input.network-request-input.aic-cloud-region`\" />\n\n\t","comments":"","x":773.7544403076172,"y":1794.0051078796387,"z":"d5178f42.44976","wires":[]},{"id":"83f50832.31bf28","type":"call","name":"call aai-get-aic-zone","xml":"<call module='GENERIC-RESOURCE-API' rpc='aai-get-aic-zone' mode='sync' >\n","comments":"","outputs":1,"x":760.7544021606445,"y":1825.005069732666,"z":"d5178f42.44976","wires":[[]]},{"id":"ce90a809.365528","type":"set","name":"set params for mS","xml":"<set>\n\t<parameter name=\"nig.cloud-zone\" value=\"`$aaiapi.output.cloud-zone`\" />\n\t<parameter name=\"rt.aic-zone\" value=\"`$aaiapi.output.cloud-zone`\" />\n\t<parameter name=\"rt.resource\" value=\"NetworkID\" />\n\t<parameter name=\"rt.resource-value\" value=\"`$tmp.l3-network.network-id`\" />\n\t<parameter name=\"rt.network-name\" value=\"`$tmp.l3-network.network-name`\" />\n\t<parameter name=\"rt.service-instance-id\" value=\"`$network-topology-operation-input.service-information.service-instance-id`\" />\n\t<parameter name=\"rt.network-instance-group-id\" value=\"`$tmp.l3-network.network-instance-group-id`\" />","comments":"","x":751.2543869018555,"y":1886.0055103302002,"z":"d5178f42.44976","wires":[]},{"id":"eef385b1.a41f98","type":"comment","name":"Get aic zone","info":"","comments":"","x":742.0043296813965,"y":1760.0050220489502,"z":"d5178f42.44976","wires":[]},{"id":"4d821497.3ac9ac","type":"call","name":"call create-route-target-and-vpn-binding","xml":"<call module='GENERIC-RESOURCE-API' rpc='create-route-target-and-vpn-binding' mode='sync' >\n","comments":"","outputs":1,"x":818.0046463012695,"y":1922.005283355713,"z":"d5178f42.44976","wires":[[]]},{"id":"b1ce3134.3e591","type":"get-resource","name":"get AnAI - l3-network by network-id","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.l3-network\">\n","comments":"","outputs":1,"x":826.1826171875,"y":936.2040013672085,"z":"d5178f42.44976","wires":[["cd276bd4.4ec2d8","1fb23d1f.248fb3"]]},{"id":"cd276bd4.4ec2d8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1106.1826133728027,"y":936.203972756979,"z":"d5178f42.44976","wires":[["c9ac2f78.68a14"]]},{"id":"1fb23d1f.248fb3","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1109.1825408935547,"y":972.2040061355801,"z":"d5178f42.44976","wires":[[]]},{"id":"c9ac2f78.68a14","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"'Error searching for l3-network with network-id =' + $tmp.l3-network.network-id + 'from AnAI.  Network should be created by MSO'\" />","comments":"","x":1258.2936973571777,"y":936.4262017608853,"z":"d5178f42.44976","wires":[]},{"id":"8417006f.508b2","type":"comment","name":"Verify the network exists in AAI, else throw error","info":"","comments":"","x":856.1826019287109,"y":892.2040490509244,"z":"d5178f42.44976","wires":[]},{"id":"fd2df853.9f51c8","type":"execute","name":"execute RestApiCallNode - Get network instance group by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nig-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-nig\" />\n\n","comments":"","outputs":1,"x":2543.5757904052734,"y":3081.1475110054016,"z":"d5178f42.44976","wires":[["b1af37b5.b16318","1d58b7d3.9f05e8"]]},{"id":"b1af37b5.b16318","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2882.371627807617,"y":3044.455379009247,"z":"d5178f42.44976","wires":[["851e27ab.fc1778"]]},{"id":"851e27ab.fc1778","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":3061.3716926574707,"y":3044.955325603485,"z":"d5178f42.44976","wires":[[]]},{"id":"7aa290b9.dbfb","type":"comment","name":"Delete network-instance-group from mdsal on rollback","info":"","comments":"","x":2518.979106903076,"y":3048.0269055366516,"z":"d5178f42.44976","wires":[]},{"id":"1d58b7d3.9f05e8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2880.223400115967,"y":3124.5214619636536,"z":"d5178f42.44976","wires":[["64bdc280.770b8c"]]},{"id":"64bdc280.770b8c","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":3060.2233505249023,"y":3125.188012599945,"z":"d5178f42.44976","wires":[[]]},{"id":"c535d1b3.3325f","type":"save","name":"save relationship: l3-network to instance group","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" \n\tforce=\"true\" \n\tlocal-only=\"false\">\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"instance-group\" />\n\t<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/aai/v$/network/instance-groups/instance-group/'+ $tmp.network-instance-group-id`\" />\n","comments":"","outputs":1,"x":833.0040893554688,"y":2601.004062652588,"z":"d5178f42.44976","wires":[["3203a1dc.f1b18e","b974bb76.717a98"]]},{"id":"3203a1dc.f1b18e","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1118.077003479004,"y":2596.479751586914,"z":"d5178f42.44976","wires":[["e5a724d0.277648"]]},{"id":"e5a724d0.277648","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1305.969882965088,"y":2596.1158590316772,"z":"d5178f42.44976","wires":[["e6189e22.f13c9"]]},{"id":"e6189e22.f13c9","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving instance-group relationship for l3-network in AnAI where instance-group-id = ' + $tmp.network-instance-group-id`\"/>","comments":"","x":1519.069423675537,"y":2596.8657579421997,"z":"d5178f42.44976","wires":[]},{"id":"b974bb76.717a98","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1126.162940979004,"y":2639.1310234069824,"z":"d5178f42.44976","wires":[["e5a724d0.277648"]]},{"id":"750843e0.4ef3ac","type":"comment","name":"Save relationship to Network instance group","info":"","comments":"","x":825.0040893554688,"y":2566.004069328308,"z":"d5178f42.44976","wires":[]},{"id":"9695c264.9ae04","type":"set","name":"set object-path","xml":"<set>\n<parameter name='network-object-path'\n value=\"`$tmp.l3-network.self-link`\"/>\n \n","comments":"","x":749.0040817260742,"y":3179.004289627075,"z":"d5178f42.44976","wires":[]},{"id":"8576e473.d1f3e8","type":"set","name":"set networkId","xml":"<set>\n<parameter name='networkId' value='`$tmp.l3-network.network-id`' />\n","comments":"","x":745.4325790405273,"y":3135.2896909713745,"z":"d5178f42.44976","wires":[]},{"id":"48826944.8a8cc8","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n<parameter name='' value='' />\n","comments":"","x":755.0040283203125,"y":3378.7184524536133,"z":"d5178f42.44976","wires":[]},{"id":"94083d5a.ebf56","type":"set","name":"set network-level-oper-status","xml":"<set>\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='PendingCreate' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />\n","comments":"","x":790.2530822753906,"y":3225.5032529830933,"z":"d5178f42.44976","wires":[]},{"id":"8a263bc3.22e118","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1057.4002418518066,"y":2768.094113200903,"z":"d5178f42.44976","wires":[["8567ebd6.a38748"]]},{"id":"8567ebd6.a38748","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1237.2931213378906,"y":2767.730220645666,"z":"d5178f42.44976","wires":[["4fa520ad.fc33e"]]},{"id":"4fa520ad.fc33e","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving service-instance relationship for l3-network in AnAI where service-instance-id = ' + $network-topology-operation-input.service-information.service-instance-id`\"/>","comments":"","x":1475.3926887512207,"y":2767.4801433980465,"z":"d5178f42.44976","wires":[]},{"id":"3d5a9b10.7d0c54","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1065.13669374254,"y":2810.5746375819053,"z":"d5178f42.44976","wires":[["8567ebd6.a38748"]]},{"id":"43ee4152.fab5d","type":"save","name":"save relationship: service-instance","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"service-instance\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"customer.global-customer-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$service-data.service-information.global-customer-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-key\" value=\"service-subscription.service-type\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-value\" value=\"`$service-data.service-information.subscription-service-type`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-key\" value=\"service-instance.service-instance-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-value\" value=\"`$service-data.service-information.service-instance-id`\" />","comments":"","outputs":1,"x":800.3790168762207,"y":2766.5036114156246,"z":"d5178f42.44976","wires":[["8a263bc3.22e118","3d5a9b10.7d0c54"]]},{"id":"307054cf.25730c","type":"set","name":"set network in service-data","xml":"<set>\n<parameter name=\"service-data.networks.network[$nidx].network-id\" value='`$tmp.l3-network.network-id`' />\n<parameter name=\"service-data.networks.network[$nidx].network-data.network-topology.\" value='$network-topology.' />\n<parameter name=\"service-data.networks.network_length\" value='`$nidx_len`' />\n\n","comments":"","x":786.7539253234863,"y":3054.7535923421383,"z":"d5178f42.44976","wires":[]},{"id":"1618d258.7486ae","type":"set","name":"set network-topology-identifier-structure in service-data","xml":"<set>\n<parameter name='network-topology.network-topology-identifier-structure.' value='`$tmp.l3-network.`' />\n<parameter name='network-topology.tenant' value='`$network-topology-operation-input.network-request-input.tenant`' />\n<parameter name='network-topology.onap-model-information.' value='`$network-topology-operation-input.network-information.onap-model-information.`' />\n<parameter name='network-topology.network-parameters.' value='`$network-topology-operation-input.network-request-input.network-parameters.`' />\n<parameter name='network-topology.aic-cloud-region' value='`$network-topology-operation-input.network-request-input.aic-cloud-region`' />","comments":"","x":870.50390625,"y":2947.6109828948975,"z":"d5178f42.44976","wires":[]},{"id":"b93d2eef.37f8c","type":"call","name":"call get-complex-resource-service-model","xml":"<call module='GENERIC-RESOURCE-API' rpc='get-complex-resource-service-model' mode='sync' >\n","comments":"","outputs":1,"x":833.57568359375,"y":1256.3110961914062,"z":"d5178f42.44976","wires":[[]]},{"id":"a7165e9f.1f2c4","type":"comment","name":"Get complex service model info","info":"","comments":"","x":796.8969650268555,"y":1181.6325550079346,"z":"d5178f42.44976","wires":[]},{"id":"e090256e.e635b8","type":"set","name":"set aaiapi.input.network-instance-group-id","xml":"<set>\n<parameter name='aaiapi.input.network-instance-group-id' value=\"`$tmp.l3-network.network-instance-group-id`\" />","comments":"","x":854.2896728515625,"y":1011.6324462890625,"z":"d5178f42.44976","wires":[]},{"id":"1868f533.5d5d1b","type":"switchNode","name":"switch nig.subnet-assignment-policy.subnet-use","xml":"<switch test='`$nig.subnet-assignment-policy.subnet-use`'>\n","comments":"","outputs":1,"x":853.7540588378906,"y":2008.0041007995605,"z":"d5178f42.44976","wires":[["80ea04d2.713458","bb4bfbdc.3ac068","5d5a651b.69c2fc"]]},{"id":"80ea04d2.713458","type":"other","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1188.7540283203125,"y":2010.004098892212,"z":"d5178f42.44976","wires":[["c40792bd.8000b"]]},{"id":"e259f887.453e58","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1395.0397911071777,"y":2082.5756874084473,"z":"d5178f42.44976","wires":[["da09529c.7bd81"]]},{"id":"bb4bfbdc.3ac068","type":"other","name":"outcome unique","xml":"<outcome value='unique'>\n","comments":"","outputs":1,"x":1191.7541580200195,"y":2046.0042152404785,"z":"d5178f42.44976","wires":[["e8c6568f.40eef8"]]},{"id":"5d5a651b.69c2fc","type":"other","name":"outcome shared","xml":"<outcome value='shared'>\n","comments":"","outputs":1,"x":1189.7540283203125,"y":2083.004098892212,"z":"d5178f42.44976","wires":[["e259f887.453e58"]]},{"id":"da09529c.7bd81","type":"switchNode","name":"switch first-network","xml":"<switch test='`$tmp.first-network`'>\n","comments":"","outputs":1,"x":1622.7540283203125,"y":2083.0041546821594,"z":"d5178f42.44976","wires":[["fab5e305.08848","a54c9af5.901b08"]]},{"id":"fab5e305.08848","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1864.754020690918,"y":1802.0040340423584,"z":"d5178f42.44976","wires":[["e8c6568f.40eef8"]]},{"id":"a54c9af5.901b08","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1885.7541704177856,"y":2639.0047483444214,"z":"d5178f42.44976","wires":[["5c068cfe.3f07a4"]]},{"id":"40a6453b.1fd08c","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"Subnet use not set\"/>","comments":"","x":1614.7540664672852,"y":2010.0044298171997,"z":"d5178f42.44976","wires":[]},{"id":"c1d9c0b7.72207","type":"switchNode","name":"switch tmp.nig-preexists","xml":"<switch test='`$tmp.nig-preexists`'>\n","comments":"","outputs":1,"x":1782.0039978027344,"y":3047.0039596557617,"z":"d5178f42.44976","wires":[["d00ae7b1.1e2958","b8eeae0.6645e5"]]},{"id":"d00ae7b1.1e2958","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1995.0040817260742,"y":3015.4327602386475,"z":"d5178f42.44976","wires":[["36213aaa.5381f6"]]},{"id":"b8eeae0.6645e5","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1994.004056930542,"y":3079.0040760040283,"z":"d5178f42.44976","wires":[["3ed49ae5.86c5a6"]]},{"id":"3ed49ae5.86c5a6","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2180.4326934814453,"y":3079.2900104522705,"z":"d5178f42.44976","wires":[["fd2df853.9f51c8"]]},{"id":"36213aaa.5381f6","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2177.7897987365723,"y":3013.8610706329346,"z":"d5178f42.44976","wires":[[]]},{"id":"c40792bd.8000b","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1383.5040283203125,"y":2011.004098892212,"z":"d5178f42.44976","wires":[["40a6453b.1fd08c","c1d9c0b7.72207"]]},{"id":"35159ac5.660f16","type":"comment","name":"Need to add more thorough rollback","info":"","comments":"","x":1789.1827850341797,"y":2985.0042428970337,"z":"d5178f42.44976","wires":[]},{"id":"f241bc6f.abe91","type":"call","name":"call naming-policy-generate-name","xml":"<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n","comments":"","outputs":1,"x":821.6469955444336,"y":1620.6043549178867,"z":"d5178f42.44976","wires":[[]]},{"id":"47106adb.c7b994","type":"set","name":"set parameters for generate-unique-name","xml":"<set>\n<parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$get-complex-resource-service-model-output.network-naming-policy`' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />\n<parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />\n<parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />\n<parameter name='naming-policy-generate-name-input.query-parameter' value='`$network-model.customization-uuid`' />\n\n\n","comments":"","x":842.3971710205078,"y":1583.6043979524402,"z":"d5178f42.44976","wires":[]},{"id":"fe4bedce.dccf4","type":"set","name":"set network name","xml":"<set>\n<parameter name='tmp.l3-network.network-name' value='`$naming-policy-generate-name-output.network-name`' />\n\n\n\n","comments":"","x":770.8970489501953,"y":1655.604353010538,"z":"d5178f42.44976","wires":[]},{"id":"49a4db31.f771e4","type":"comment","name":"Generate a name","info":"","comments":"","x":764.64697265625,"y":1543.6043673156528,"z":"d5178f42.44976","wires":[]},{"id":"36134ff2.81826","type":"set","name":"set tmp.network-topology","xml":"<set>\n<parameter name='network-topology.network-topology-identifier-structure.network-id' value=\"`$tmp.l3-network.network-id`\" />\n<parameter name='network-topology.network-topology-identifier-structure.network-name' value=\"`$tmp.l3-network.network-name`\" />\n<parameter name='network-topology.network-topology-identifier-structure.network-instance-group-id' value=\"`$tmp.l3-network.network-instance-group-id`\" />\n<parameter name='network-topology.network-topology-identifier-structure.network-type' value=\"`$tmp.l3-network.network-type`\" />\n<parameter name='network-topology.network-topology-identifier-structure.network-role' value=\"`$tmp.l3-network.network-role`\" />\n<parameter name='network-topology.network-topology-identifier-structure.network-technology' value=\"`$tmp.l3-network.network-technology`\" />\n<parameter name='network-topology.region-identifier.tenant' value=\"`$network-topology-operation-input.network-request-input.tenant`\" />\n<parameter name='network-topology.region-identifier.aic-cloud-region' value=\"`$network-topology-operation-input.network-request-input.aic-cloud-region`\" />\n<parameter name='network-topology.region-identifier.aic-clli' value=\"`$network-topology-operation-input.network-request-input.aic-clli`\" />\n<parameter name='network-topology.onap-model-information.' value=\"`$network-topology-operation-input.network-information.onap-model-information.`\" />\n<parameter name='network-topology.network-parameters.' value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.`\" />\n<parameter name='nig.network.network-id' value=\"`$tmp.l3-network.network-id`\" />","comments":"","x":795.3969892263412,"y":1690.604379713419,"z":"d5178f42.44976","wires":[]},{"id":"58f3035b.c67d9c","type":"set","name":"set: nig identifier data","xml":"<set>\n\t<parameter name=\"nig.network-instance-group-id\" value=\"`$tmp.l3-network.network-instance-group-id`\"/>\n\t<parameter name=\"nig.network-instance-group-function\" value=\"`$aaiapi.output.collection-function`\"/>\n\t<parameter name=\"nig.service-instance-id\" value=\"`$network-topology-operation-input.service-information.service-instance-id`\"/>\n","comments":"","x":770.9164733886719,"y":1301.3838511108188,"z":"d5178f42.44976","wires":[]},{"id":"c8f94428.c0f5e8","type":"set","name":"set network-id","xml":"<set>\n<parameter name='nig.networks.network[$ngnidx].network-id' value=\"`$tmp.l3-network.network-id`\" />","comments":"","x":751.8531799316406,"y":1332.3834181426791,"z":"d5178f42.44976","wires":[]},{"id":"a3dcfb29.be3be8","type":"switchNode","name":"switch tmp.nidx ","xml":"<switch test=\"`$tmp.nidx`\">\n\n","comments":"","outputs":1,"x":892.2912139892578,"y":117.14844608306885,"z":"d5178f42.44976","wires":[["30c9e880.3ebc78","7464fb80.2dd3b4"]]},{"id":"30c9e880.3ebc78","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1118.5768585205078,"y":117.14839267730713,"z":"d5178f42.44976","wires":[["9337c637.20ec98"]]},{"id":"9337c637.20ec98","type":"switchNode","name":"switch service-data.networks_length","xml":"<switch test='`$service-data.networks.network_length`'>\n","comments":"","outputs":1,"x":1367.8029518127441,"y":118.33930969238281,"z":"d5178f42.44976","wires":[["b0241fa7.69347","6cbf8a0c.d761d4"]]},{"id":"b0241fa7.69347","type":"other","name":"Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1665.898292541504,"y":102.14861726760864,"z":"d5178f42.44976","wires":[["173ed7db.4f7aa8"]]},{"id":"173ed7db.4f7aa8","type":"set","name":"set nidx","xml":"<set>\n<parameter name='nidx' value='0' />\n<parameter name='nidx_len' value='1'/>\n","comments":"","x":1836.6127471923828,"y":102.7200288772583,"z":"d5178f42.44976","wires":[]},{"id":"6cbf8a0c.d761d4","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1663.7554368972778,"y":142.86289072036743,"z":"d5178f42.44976","wires":[["254ad291.d12d8e"]]},{"id":"254ad291.d12d8e","type":"set","name":"set nidx","xml":"<set>\n<parameter name='nidx' value='`$service-data.networks.network_length`' />\n<parameter name='nidx_len' value='`$service-data.networks.network_length + 1`' />\n","comments":"","x":1836.3268671035767,"y":143.72009134292603,"z":"d5178f42.44976","wires":[]},{"id":"7464fb80.2dd3b4","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1120.0054931640625,"y":155.71986484527588,"z":"d5178f42.44976","wires":[["5b261be0.07e9c4"]]},{"id":"5b261be0.07e9c4","type":"set","name":"set nidx","xml":"<set>\n<parameter name='nidx' value='`$tmp.nidx`' />\n<parameter name='nidx_len' value='`$service-data.networks.network_length`' />\n","comments":"","x":1282.8626174926758,"y":155.71989059448242,"z":"d5178f42.44976","wires":[]},{"id":"44bed9f5.f8a198","type":"switchNode","name":"switch tmp.ngidx ","xml":"<switch test=\"`$tmp.ngidx`\">\n\n","comments":"","outputs":1,"x":892.8627777099609,"y":204.29132843017578,"z":"d5178f42.44976","wires":[["d6e4ec1a.e6e93","8751a27d.a5675"]]},{"id":"d6e4ec1a.e6e93","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1134.291275024414,"y":202.86267757415771,"z":"d5178f42.44976","wires":[["b03031bc.a8721"]]},{"id":"b03031bc.a8721","type":"switchNode","name":"switch service-data.network-instance-groups.network-instance-group_len","xml":"<switch test='`$service-data.network-instance-groups.network-instance-group_len`'>\n","comments":"","outputs":1,"x":1499.231704711914,"y":204.05360412597656,"z":"d5178f42.44976","wires":[["f57cf34f.7619f","d6ea05bc.20b178"]]},{"id":"f57cf34f.7619f","type":"other","name":"Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1913.7556266784668,"y":204.29148191213608,"z":"d5178f42.44976","wires":[["b0c63751.bc3848"]]},{"id":"b0c63751.bc3848","type":"set","name":"set ngidx","xml":"<set>\n<parameter name='ngidx' value='0' />\n<parameter name='ngidx_len' value='1'/>\n<parameter name=\"ngnidx\" value='0' />\n<parameter name=\"nig.preexists\" value=\"false\"/>\n<parameter name=\"nig.first-network\" value=\"true\"/>\n<parameter name=\"nig.networks.network_len\" value=\"1\" />\n\n","comments":"","x":2086.612817764282,"y":202.14860528707504,"z":"d5178f42.44976","wires":[]},{"id":"d6ea05bc.20b178","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1912.3271217346191,"y":238.57717990875244,"z":"d5178f42.44976","wires":[["9b5fbee6.21443"]]},{"id":"9b5fbee6.21443","type":"set","name":"set ngidx","xml":"<set>\n<parameter name='ngidx' value='`$service-data.network-instance-groups.network-instance-group_length`' />\n<parameter name='ngidx_len' value='`$service-data.network-instance-groups.network-instance-group_length + 1`' />\n<parameter name=\"nig.preexists\" value=\"false\"/>\n<parameter name=\"ngnidx\" value='0' />\n<parameter name=\"nig.first-network\" value=\"true\"/>\n<parameter name=\"nig.networks.network_len\" value=\"1\" />","comments":"","x":2088.041379928589,"y":237.72010797262192,"z":"d5178f42.44976","wires":[]},{"id":"8751a27d.a5675","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1135.7199096679688,"y":241.43414974212646,"z":"d5178f42.44976","wires":[["8415c5ef.359e28"]]},{"id":"16fb0168.14aadf","type":"set","name":"set ngidx","xml":"<set>\n<parameter name='ngidx' value='`$tmp.ngidx`' />\n<parameter name='ngidx_len' value='`$service-data.network-instance-groups.network-instance-group_length`' />\n<parameter name=\"nig.preexists\" value=\"false\"/>","comments":"","x":1504.2913513183594,"y":240.00561666488647,"z":"d5178f42.44976","wires":[]},{"id":"8415c5ef.359e28","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1308.5770263671875,"y":241.4341583251953,"z":"d5178f42.44976","wires":[["16fb0168.14aadf","ce6e4cc2.462f2"]]},{"id":"ce6e4cc2.462f2","type":"switchNode","name":"switch networks.network_len","xml":"<switch test='`$ctx.network-instance-group-data.networks.network_len`'>\n","comments":"","outputs":1,"x":1574.2918243408203,"y":275.71987533569336,"z":"d5178f42.44976","wires":[["4e750736.532bf8","d95056d5.924ce8","c969201f.52f67"]]},{"id":"4e750736.532bf8","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1831.1484718322754,"y":308.8269855976105,"z":"d5178f42.44976","wires":[["c10f69b8.9aebd8"]]},{"id":"d95056d5.924ce8","type":"other","name":"null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1829.148582458496,"y":277.8270561695099,"z":"d5178f42.44976","wires":[["c10f69b8.9aebd8"]]},{"id":"c10f69b8.9aebd8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2026.1744999355742,"y":308.38727392090686,"z":"d5178f42.44976","wires":[["763b73e5.e9fa9c"]]},{"id":"763b73e5.e9fa9c","type":"set","name":"set: first-network = true","xml":"<set>\n<parameter name=\"nig.first-network\" value=\"true\" />\n<parameter name=\"ngnidx\" value=\"0\" />\n<parameter name=\"nig.networks.network_len\" value=\"1\" />","comments":"","x":2258.6746372646758,"y":307.1373034848107,"z":"d5178f42.44976","wires":[]},{"id":"c969201f.52f67","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1831.8184700012207,"y":344.0778257846832,"z":"d5178f42.44976","wires":[["4933902d.618d4"]]},{"id":"4933902d.618d4","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2027.711441040039,"y":344.07779335975647,"z":"d5178f42.44976","wires":[["cdb6a15a.3212a","798af161.c715b"]]},{"id":"cdb6a15a.3212a","type":"set","name":"set: first-network = false","xml":"<set>\n<parameter name=\"nig.first-network\" value=\"false\" />\n<parameter name=\"ngnidx\" value=\"`$ctx.network-instance-group-data.networks.network_length`\" />\n<parameter name=\"nig.networks.network_len\" value=\"`$ctx.network-instance-group-data.networks.network_length + 1`\" />\n<parameter name=\"nig.\" value=\"`$ctx.network-instance-group-data.`\" />","comments":"","x":2259.2117652893066,"y":375.8278331756592,"z":"d5178f42.44976","wires":[]},{"id":"798af161.c715b","type":"set","name":"set: nig data","xml":"<set>\n<parameter name=\"nig.\" value=\"`$ctx.network-instance-group-data.`\" />","comments":"","x":2227.503879547119,"y":342.0039052963257,"z":"d5178f42.44976","wires":[]},{"id":"5c068cfe.3f07a4","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2097.004189491272,"y":2639.004349708557,"z":"d5178f42.44976","wires":[["48c61180.635eb"]]},{"id":"48c61180.635eb","type":"switchNode","name":"switch ngnidx","xml":"<switch test='`$ngnidx`'>\n","comments":"","outputs":1,"x":2291.0042581558228,"y":2639.004288673401,"z":"d5178f42.44976","wires":[["aa783e80.a6c83","554f9fef.e514d"]]},{"id":"aa783e80.a6c83","type":"outcome","name":"0","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2482.004204750061,"y":2613.004267692566,"z":"d5178f42.44976","wires":[["2a71e575.36750a"]]},{"id":"554f9fef.e514d","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2483.004288673401,"y":2644.004319190979,"z":"d5178f42.44976","wires":[[]]},{"id":"2a71e575.36750a","type":"for","name":"for 0..subnet_length","xml":"<for index='sidx' start='0' end='`$tmp.l3-network.subnet_length`' >\n","comments":"","outputs":1,"x":2677.254292488098,"y":2612.0042600631714,"z":"d5178f42.44976","wires":[["46adadcf.b10ea4"]]},{"id":"46adadcf.b10ea4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2877.396858215332,"y":2616.8931579589844,"z":"d5178f42.44976","wires":[["fae75c2d.25c5c","896df025.a1fea"]]},{"id":"fae75c2d.25c5c","type":"set","name":"set: tmp.subnet-id","xml":"<set>\n<parameter name=\"tmp.subnet-id\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-id`\"/>\n\t","comments":"","x":3099.1748046875,"y":2585.7183837890625,"z":"d5178f42.44976","wires":[]},{"id":"896df025.a1fea","type":"switchNode","name":"switch dhcp-enabled","xml":"<switch test='`$tmp.l3-network.subnet[$sidx].dhcp-enabled`'>\n","comments":"","outputs":1,"x":3106.80952835083,"y":2622.015778541565,"z":"d5178f42.44976","wires":[[]]},{"id":"e8c6568f.40eef8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2041.0041122436523,"y":1624.0039863586426,"z":"d5178f42.44976","wires":[["e65e043c.0d83c8","9ab51d6.254d9e","727e503e.e99e1","76567230.ae29cc","2c47409f.cb9c7","1451a72d.c96e71","6d06e17a.7f1a2","95e4e3b2.775858"]]},{"id":"e65e043c.0d83c8","type":"set","name":"set: input for process-generic-eipam-pools","xml":"<set>\n<parameter name=\"tmp.skip-first-level\" value=\"Y\"/>\n<parameter name=\"tmp.allocate-subnet-flag\" value=\"Y\"/>\n<parameter name=\"generate-FQPN-input.aic-cloud-region\" value=\"`$aai.cloud-region.cloud-region-id`\" />\n<parameter name=\"generate-FQPN-input.network-name\" value=\"`$network-topology.network-topology-identifier-structure.network-name`\" />\n<parameter name=\"generate-FQPN-input.network-role\" value=\"`$network-topology.network-topology-identifier-structure.network-role`\" />\n<parameter name=\"generate-FQPN-input.network-collection\" value=\"`$aaiapi.output.collection-name`\" />\n<parameter name=\"generate-FQPN-input.network-id\" value=\"`$network-topology.network-topology-identifier-structure.network-id`\" />\n<parameter name=\"tmp.network-id\" value=\"`network-topology.network-topology-identifier-structure.network-id`\" />\n<parameter name=\"tmp.network-instance-group-id\" value=\"`$network-topology.network-topology-identifier-structure.network-instance-group-id`\" />\n\n<!-- the following are not set by calling dg\ngenerate-FQPN-input.subnet-role\ngenerate-FQPN-input.zone\ngenerate-FQPN-input.equipment\n-->\n<!-- network model is already in contect memory -->\n<!-- aai.cloud-region.cloud-region-id  is already in contect memory -->\n\n\t","comments":"","x":2347.2537841796875,"y":1606.0040283203125,"z":"d5178f42.44976","wires":[]},{"id":"9ab51d6.254d9e","type":"switchNode","name":"switch $network-model.eipam-v4-address-plan is not null","xml":"<switch test=\"`$network-model.eipam-v4-address-plan != ''`\">\n","comments":"","outputs":1,"x":2394.25390625,"y":1723.00390625,"z":"d5178f42.44976","wires":[["c9d4cba4.24fff8"]]},{"id":"42389da4.7eb2c4","type":"comment","name":"Process v4 plan","info":"","comments":"","x":2260.254005432129,"y":1691.0040283203125,"z":"d5178f42.44976","wires":[]},{"id":"c9d4cba4.24fff8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2701.253890991211,"y":1691.0039176940918,"z":"d5178f42.44976","wires":[["1e20a4e2.74b9eb"]]},{"id":"1e20a4e2.74b9eb","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2865.2539138793945,"y":1691.0039367675781,"z":"d5178f42.44976","wires":[["8a474f48.9398f","11cb7113.5402d7"]]},{"id":"727e503e.e99e1","type":"switchNode","name":"switch $network-model.eipam-v6-address-plan is not null","xml":"<switch test=\"`$network-model.eipam-v6-address-plan != ''`\">\n","comments":"","outputs":1,"x":2394.2537841796875,"y":1816.00390625,"z":"d5178f42.44976","wires":[["e81185af.c04448"]]},{"id":"2765b6a2.a89dfa","type":"comment","name":"Process v6 plan","info":"","comments":"","x":2265.2538452148438,"y":1784.0040893554688,"z":"d5178f42.44976","wires":[]},{"id":"e81185af.c04448","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2709.253776550293,"y":1816.0038986206055,"z":"d5178f42.44976","wires":[["6635ad54.167cd4"]]},{"id":"6635ad54.167cd4","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2873.2537994384766,"y":1816.0039176940918,"z":"d5178f42.44976","wires":[["3e402883.aa4e28","31489f02.5d1d88"]]},{"id":"8a474f48.9398f","type":"set","name":"set: v4plan in mdsal","xml":"<set>\n<parameter name=\"network-topology.network-identifier-structure.eipam-v4-address-plan\" value=\"`$network-model.eipam-v4-address-plan`\" />\n\t","comments":"","x":3061.254035949707,"y":1691.0039672851562,"z":"d5178f42.44976","wires":[]},{"id":"3e402883.aa4e28","type":"set","name":"set: v6plan in mdsal","xml":"<set>\n<parameter name=\"network-topology.network-identifier-structure.eipam-v6-address-plan\" value=\"`$network-model.eipam-v4-address-plan`\" />\n\t","comments":"","x":3076.2538146972656,"y":1815.0039367675781,"z":"d5178f42.44976","wires":[]},{"id":"92dee517.041028","type":"set","name":"set tmp.network-topology","xml":"<set>\n<parameter name='network-topology.region-identifier.aic-clli' value=\"`$aaiapi.output.aic-clli`\" />\n","comments":"","x":775.25390625,"y":1853.0040283203125,"z":"d5178f42.44976","wires":[]},{"id":"76567230.ae29cc","type":"call","name":"call process-generic-eipam-pools","xml":"<call module='GENERIC-RESOURCE-API' rpc='process-generic-eipam-pools' mode='sync' >\n","comments":"","outputs":1,"x":2314.8831787109375,"y":1640.88330078125,"z":"d5178f42.44976","wires":[["3ee93bff.44a3fc"]]},{"id":"3ee93bff.44a3fc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2543.41650390625,"y":1640.4832763671875,"z":"d5178f42.44976","wires":[["f0d7d581.591998"]]},{"id":"f0d7d581.591998","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=\"`'Error from process-generic-eipam-pools, ' + $error-message`\" />\n","comments":"","x":2702.1664848327637,"y":1640.4832725524902,"z":"d5178f42.44976","wires":[]},{"id":"11cb7113.5402d7","type":"for","name":"for 0..CreatePoolPlans_length","xml":"<for silentFailure='true' index='eidx' start='0' end='`$eipam-ip-block.createPoolResponse.CreatePoolPlans_length`' >\n","comments":"","outputs":1,"x":3093.88330078125,"y":1735.88330078125,"z":"d5178f42.44976","wires":[["32ce7747.c70768"]]},{"id":"32ce7747.c70768","type":"switchNode","name":"switch PlanName == network-model.eipam-v4-address-plan","xml":"<switch test=\"`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.PlanName == $network-model.eipam-v4-address-plan`\">\n","comments":"","outputs":1,"x":3476.88330078125,"y":1735.88330078125,"z":"d5178f42.44976","wires":[["73515ea5.55cd5"]]},{"id":"31489f02.5d1d88","type":"for","name":"for 0..CreatePoolPlans_length","xml":"<for silentFailure='true' index='eidx' start='0' end='`$eipam-ip-block.createPoolResponse.CreatePoolPlans_length`' >\n","comments":"","outputs":1,"x":3111.88330078125,"y":1853.88330078125,"z":"d5178f42.44976","wires":[["39f88f1c.91ea8"]]},{"id":"39f88f1c.91ea8","type":"switchNode","name":"switch PlanName == network-model.eipam-v6-address-plan","xml":"<switch test=\"`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.PlanName == $network-model.eipam-v6-address-plan`\">\n","comments":"","outputs":1,"x":3502.88330078125,"y":1853.88330078125,"z":"d5178f42.44976","wires":[["cff6d3ae.f1aa3"]]},{"id":"73515ea5.55cd5","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3813.883331298828,"y":1735.8833312988281,"z":"d5178f42.44976","wires":[["b96644be.0dbc98"]]},{"id":"cff6d3ae.f1aa3","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3827.88330078125,"y":1853.4832763671875,"z":"d5178f42.44976","wires":[["746695da.4b9b9c"]]},{"id":"b96644be.0dbc98","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3973.316650390625,"y":1736.0833740234375,"z":"d5178f42.44976","wires":[["5cbea0a0.58604"]]},{"id":"746695da.4b9b9c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3984.316650390625,"y":1853.0833740234375,"z":"d5178f42.44976","wires":[["31f3e12f.a943de"]]},{"id":"5cbea0a0.58604","type":"set","name":"set: v4 ip info","xml":"<set>\n<parameter name=\"v4.ip-prefix\" value=\"`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IPAddress`\"/>\n<parameter name=\"v4.mask\" value=\"`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.Mask`\"/>\n<parameter name=\"v4.entity-id\" value=\"`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IpamPoolAllocId`\"/>","comments":"","x":4164.2666015625,"y":1736.0833740234375,"z":"d5178f42.44976","wires":[]},{"id":"31f3e12f.a943de","type":"set","name":"set: v6 ip info","xml":"<set>\n<parameter name=\"v6.ip-prefix\" value=\"`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IPAddress`\"/>\n<parameter name=\"v6.mask\" value=\"`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.Mask`\"/>\n<parameter name=\"v6.entity-id\" value=\"`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IpamPoolAllocId`\"/>","comments":"","x":4177.88330078125,"y":1853.0833740234375,"z":"d5178f42.44976","wires":[]},{"id":"2c47409f.cb9c7","type":"call","name":"call GENERIC-RESOURCE-API:create-l3-subnet","xml":"<call module='GENERIC-RESOURCE-API' rpc='create-l3-subnet' mode='sync' >\n","comments":"tmp.level should be set to 1","outputs":1,"x":2373.0864181518555,"y":1868.0233001708984,"z":"d5178f42.44976","wires":[[]]},{"id":"889334d4.ee512","type":"save","name":"save AnAI - l3-network","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"network-name\" value=\"`$tmp.l3-network.network-name`\" />\n<parameter name=\"network-type\" value=\"`$network-model.network-type`\" />\n<parameter name=\"network-role\" value=\"`$network-model.network-role`\" />\n<parameter name=\"network-technology\" value=\"`$network-model.network-technology`\" />\n<parameter name=\"is-bound-to-vpn\" value=\"`$tmp.l3-network.is-bound-to-vpn-boolean`\" />\n<parameter name=\"tenant-id\" value=\"`$network-topology-operation-input.network-request-information.tenant`\" />\n<parameter name=\"model-invariant-id\" value=\"`$network-model.invariant_uuid`\" />\n<parameter name=\"model-version\" value=\"`$network-model.version`\" />\n<parameter name=\"model-customization-id\" value=\"`$network-model.customization-id`\" />\n<parameter name=\"physical-network-name\" value=\"`$network-model.physical-network-name`\" />\n<parameter name=\"is-provider-network\" value=\"`$tmp.l3-network.is-provider-network-boolean`\" />\n<parameter name=\"is-shared-network\" value=\"`$tmp.l3-network.is-shared-network-boolean`\" />\n<parameter name=\"is-external-network\" value=\"`$tmp.l3-network.is-external-network-boolean`\" />\n<parameter name=\"selflink\" value=\"`$tmp.l3-network.self-link`\" />\n<parameter name=\"service-id\" value=\"`$tmp.l3-network.service-id`\" />\n<parameter name=\"operational-status\" value=\"out-of-service-path\" />\n\n","comments":"","outputs":1,"x":2659.050048828125,"y":1966.2833251953125,"z":"d5178f42.44976","wires":[["fd2dffb4.626d88","166d7fb.02683"]]},{"id":"bc8ed07.0e83cb","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=\"`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`\" />\n","comments":"","x":3148.7292909622192,"y":1931.5768394470215,"z":"d5178f42.44976","wires":[]},{"id":"fd2dffb4.626d88","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2902.1575317382812,"y":1931.3424072265625,"z":"d5178f42.44976","wires":[["bc8ed07.0e83cb"]]},{"id":"6d06e17a.7f1a2","type":"for","name":"for 0..subnet_length","xml":"<for index='sidx' start='0' end='`$tmp.l3-network.subnet_length`' >\n","comments":"","outputs":1,"x":2277.1418199539185,"y":2072.342499732971,"z":"d5178f42.44976","wires":[["b25f750f.5ab41"]]},{"id":"b25f750f.5ab41","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2504.2845001220703,"y":2071.231451034546,"z":"d5178f42.44976","wires":[["d4bb25ae.3ce62","c577661b.70d328","b6bec758.f11a5","bedb778a.035b4"]]},{"id":"166d7fb.02683","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2907.9669799804688,"y":1959.8187255859375,"z":"d5178f42.44976","wires":[["bc8ed07.0e83cb"]]},{"id":"d4bb25ae.3ce62","type":"set","name":"set: tmp.subnet-id","xml":"<set>\n<parameter name=\"tmp.subnet-id\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-id`\"/>\n\t","comments":"","x":2726.0624465942383,"y":2040.056676864624,"z":"d5178f42.44976","wires":[]},{"id":"c577661b.70d328","type":"switchNode","name":"switch dhcp-enabled","xml":"<switch test='`$tmp.l3-network.subnet[$sidx].dhcp-enabled`'>\n","comments":"","outputs":1,"x":2733.6971702575684,"y":2076.3540716171265,"z":"d5178f42.44976","wires":[["50789132.4385b8","615683d.86d5bfc"]]},{"id":"615683d.86d5bfc","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2969.8399658203125,"y":2006.2111206054688,"z":"d5178f42.44976","wires":[["282d91de.f05ee6"]]},{"id":"50789132.4385b8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2965.6971702575684,"y":2088.354193687439,"z":"d5178f42.44976","wires":[["6ee6838a.ca20ac"]]},{"id":"282d91de.f05ee6","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3160.7283935546875,"y":2006.4334716796875,"z":"d5178f42.44976","wires":[["7c2c5c81.31cfa4"]]},{"id":"6ee6838a.ca20ac","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3158.5858421325684,"y":2092.5765447616577,"z":"d5178f42.44976","wires":[["506e8049.8f6fc8"]]},{"id":"7c2c5c81.31cfa4","type":"switchNode","name":"switch gateway-address","xml":"<switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>\n","comments":"","outputs":1,"x":3380.691680908203,"y":2006.7656421661377,"z":"d5178f42.44976","wires":[["72eb0aff.498254","b992c40a.e3fc88"]]},{"id":"506e8049.8f6fc8","type":"switchNode","name":"switch gateway-address","xml":"<switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>\n","comments":"","outputs":1,"x":3389.977409362793,"y":2091.480155944824,"z":"d5178f42.44976","wires":[["f9389512.87fe1","d915319.95e925"]]},{"id":"1451a72d.c96e71","type":"switchNode","name":"switch service-id","xml":"<switch test='`$tmp.l3-network.service-id`'>\n","comments":"","outputs":1,"x":2268.9296875,"y":1952.6705322265625,"z":"d5178f42.44976","wires":[["b6d98b6a.61fe58","3902684f.6009f8"]]},{"id":"b6d98b6a.61fe58","type":"outcome","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2457.9296875,"y":1931.6705322265625,"z":"d5178f42.44976","wires":[["54a47008.56e48"]]},{"id":"3902684f.6009f8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2432.9296875,"y":1966.6705322265625,"z":"d5178f42.44976","wires":[["889334d4.ee512"]]},{"id":"54a47008.56e48","type":"save","name":"save AnAI - l3-network","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"network-name\" value=\"`$tmp.l3-network.network-name`\" />\n<parameter name=\"network-type\" value=\"`$network-model.network-type`\" />\n<parameter name=\"network-role\" value=\"`$network-model.network-role`\" />\n<parameter name=\"network-technology\" value=\"`$network-model.network-technology`\" />\n<parameter name=\"is-bound-to-vpn\" value=\"`$tmp.l3-network.is-bound-to-vpn-boolean`\" />\n<parameter name=\"tenant-id\" value=\"`$network-topology-operation-input.network-request-information.tenant`\" />\n<parameter name=\"model-invariant-id\" value=\"`$network-model.invariant_uuid`\" />\n<parameter name=\"model-version\" value=\"`$network-model.version`\" />\n<parameter name=\"model-customization-id\" value=\"`$network-model.customization-id`\" />\n<parameter name=\"physical-network-name\" value=\"`$network-model.physical-network-name`\" />\n<parameter name=\"is-provider-network\" value=\"`$tmp.l3-network.is-provider-network-boolean`\" />\n<parameter name=\"is-shared-network\" value=\"`$tmp.l3-network.is-shared-network-boolean`\" />\n<parameter name=\"is-external-network\" value=\"`$tmp.l3-network.is-external-network-boolean`\" />\n<parameter name=\"selflink\" value=\"`$tmp.l3-network.self-link`\" />\n<parameter name=\"operational-status\" value=\"out-of-service-path\" />","comments":"","outputs":1,"x":2664.9296875,"y":1931.6705322265625,"z":"d5178f42.44976","wires":[["fd2dffb4.626d88","166d7fb.02683"]]},{"id":"352b0634.a770ea","type":"set","name":"set tmp.l3-network","xml":"<set>\n<parameter name='tmp.l3-network.network-type' value=\"`$network-model.network-type`\" />\n<parameter name='tmp.l3-network.network-role' value=\"`$network-model.network-role`\" />\n<parameter name='tmp.l3-network.network-technology' value=\"`$network-model.network-technology`\" />\n<parameter name='tmp.l3-network.is-bound-to-vpn' value=\"`$network-model.is-bound-to-vpn`\" />\n<parameter name='tmp.l3-network.orchestration-status' value=\"PendingCreate\" />\n<parameter name='tmp.l3-network.model-invariant-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`\" />\n<parameter name='tmp.l3-network.model-version-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-version`\" />\n<parameter name='tmp.l3-network.model-customization-id' value=\"`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`\" />\n<parameter name='tmp.l3-network.is-provider-network' value=\"`$network-model.is-provider-network`\" />\n<parameter name='tmp.l3-network.is-shared-network' value=\"`$network-model.is-shared-network`\" />\n<parameter name='tmp.l3-network.is-external-network' value=\"`$network-model.is-external-network`\" />\n<parameter name='tmp.l3-network.eipam-v6-address-plan' value=\"`$network-model.eipam-v6-address-plan`\" />\n<parameter name='tmp.l3-network.eipam-v4-address-plan' value=\"`$network-model.eipam-v4-address-plan`\" />\n<parameter name='tmp.l3-network.service-id' value=\"`$service-data.service-information.service-id`\" />\n<parameter name='tmp.l3-network.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $network-topology-operation-input.service-information.service-instance-id\n + '/service-data/networks/network/'\n + $tmp.l3-network.network-id\n + '/network-data/network-topology/'` \" />\n","comments":"","x":886.88330078125,"y":451.4833068847656,"z":"d5178f42.44976","wires":[]},{"id":"c252ed05.9b99f","type":"set","name":"set network instance group in service-data","xml":"<set>\n<parameter name=\"service-data.network-instance-groups.network-instance-group[$ngidx].\" value='`$nig.`' />\n\n\n","comments":"","x":828.88330078125,"y":2999.4833984375,"z":"d5178f42.44976","wires":[]},{"id":"c0d1166f.f33bd","type":"switchNode","name":"switch network--model.is-provider-network","xml":"<switch test='`$network-model.is-provider-network`'>\n","comments":"","outputs":1,"x":943.6000061035156,"y":517.8833475112915,"z":"d5178f42.44976","wires":[["2d70e649.07ae42","3835b478.0b1234"]]},{"id":"2d70e649.07ae42","type":"other","name":"outcome Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1248.7431564331055,"y":497.7087926864624,"z":"d5178f42.44976","wires":[["9294abcc.7f7ec8"]]},{"id":"9294abcc.7f7ec8","type":"set","name":"set tmp.l3-network.physical-network-name","xml":"<set>\n<parameter name='tmp.l3-network.physical-network-name' value=\"`$network-model.physical-network-name`\" />\n<parameter name='tmp.l3-network.is-provider-network-boolean' value='true' />","comments":"","x":1516.7430114746094,"y":494.708758354187,"z":"d5178f42.44976","wires":[]},{"id":"3835b478.0b1234","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1236.1082153320312,"y":528.5818138122559,"z":"d5178f42.44976","wires":[["4cb8c1ac.228e38"]]},{"id":"4cb8c1ac.228e38","type":"set","name":"set tmp.l3-network.physical-network-name","xml":"<set>\n<parameter name='tmp.l3-network.physical-network-name' value=\"\" />\n<parameter name='tmp.l3-network.is-provider-network-boolean' value='false' />","comments":"","x":1520.394172668457,"y":527.153244972229,"z":"d5178f42.44976","wires":[]},{"id":"3e6da276.1b9876","type":"switchNode","name":"switch network--model.is-shared-network","xml":"<switch test='`$network-model.is-shared-network`'>\n","comments":"","outputs":1,"x":941.2665252685547,"y":563.5181550979614,"z":"d5178f42.44976","wires":[["9f3ffa9d.8179c","76801177.35bc58"]]},{"id":"9f3ffa9d.8179c","type":"other","name":"outcome Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1246.885726928711,"y":563.58176612854,"z":"d5178f42.44976","wires":[["26f53153.826cbe"]]},{"id":"26f53153.826cbe","type":"set","name":"set tmp.l3-network.is-shared-network-boolean","xml":"<set>\n<parameter name='tmp.l3-network.is-shared-network-boolean' value='true' />","comments":"","x":1539.1714401245117,"y":563.5816135406494,"z":"d5178f42.44976","wires":[]},{"id":"76801177.35bc58","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1235.6797523498535,"y":598.8832731246948,"z":"d5178f42.44976","wires":[["f9000a6c.baff6"]]},{"id":"f9000a6c.baff6","type":"set","name":"set tmp.l3-network.is-shared-network-boolean","xml":"<set>\n<parameter name='tmp.l3-network.is-shared-network-boolean' value='false' />","comments":"","x":1539.9656715393066,"y":598.7404508590698,"z":"d5178f42.44976","wires":[]},{"id":"39ea7531.083dba","type":"switchNode","name":"switch network--model.is-external-network","xml":"<switch test='`$network-model.is-external-network`'>\n","comments":"","outputs":1,"x":949.9498291015625,"y":635.5657958984375,"z":"d5178f42.44976","wires":[["7aba3265.5fa204","c956eb87.42b64"]]},{"id":"7aba3265.5fa204","type":"other","name":"outcome Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1248.9022941589355,"y":642.2961139678955,"z":"d5178f42.44976","wires":[["d8231d31.87054"]]},{"id":"d8231d31.87054","type":"set","name":"set tmp.l3-network.is-external-network-boolean","xml":"<set>\n<parameter name='tmp.l3-network.is-external-network-boolean' value='true' />","comments":"","x":1541.1880073547363,"y":642.2959613800049,"z":"d5178f42.44976","wires":[]},{"id":"c956eb87.42b64","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1237.6963195800781,"y":677.5976209640503,"z":"d5178f42.44976","wires":[["df2c956f.5ebb7"]]},{"id":"df2c956f.5ebb7","type":"set","name":"set tmp.l3-network.is-external-network-boolean","xml":"<set>\n<parameter name='tmp.l3-network.is-external-network-boolean' value='false' />","comments":"","x":1541.9822387695312,"y":677.4547986984253,"z":"d5178f42.44976","wires":[]},{"id":"985b6687.301738","type":"switchNode","name":"switch network--model.is-bound-to-vpn","xml":"<switch test='`$network-model.is-bound-to-vpn`'>\n","comments":"","outputs":1,"x":935.5313415527344,"y":748.6398734451504,"z":"d5178f42.44976","wires":[["841de692.8816c8","92021a98.fb2718"]]},{"id":"841de692.8816c8","type":"other","name":"outcome Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1247.1505546569824,"y":716.703462600708,"z":"d5178f42.44976","wires":[["ae32e0dd.54349"]]},{"id":"ae32e0dd.54349","type":"set","name":"set tmp.l3-network.is-bound-to-vpn-boolean","xml":"<set>\n<parameter name='tmp.l3-network.is-bound-to-vpn-boolean' value='true' />","comments":"","x":1539.4362678527832,"y":716.7033100128174,"z":"d5178f42.44976","wires":[]},{"id":"92021a98.fb2718","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1235.944580078125,"y":752.0049695968628,"z":"d5178f42.44976","wires":[["53abbcde.c1e354"]]},{"id":"53abbcde.c1e354","type":"set","name":"set tmp.l3-network.is-bound-to-vpn-boolean","xml":"<set>\n<parameter name='tmp.l3-network.is-bound-to-vpn-boolean' value='false' />","comments":"","x":1540.2304992675781,"y":751.8621473312378,"z":"d5178f42.44976","wires":[]},{"id":"4e2d72ac.a20f14","type":"save","name":"save AnAI - l3-network.subnets","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.subnet-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"subnet-id\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-id`\" />\n<parameter name=\"subnet-name\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-name`\" />\n<parameter name=\"gateway-address\" value=\"`$tmp.l3-network.subnet[$sidx].gateway-address`\" />\n<parameter name=\"network-start-address\" value=\"`$tmp.l3-network.subnet[$sidx].network-start-address`\" />\n<parameter name=\"cidr-mask\" value=\"`$tmp.l3-network.subnet[$sidx].cidr-mask`\" />\n<parameter name=\"ip-version\" value=\"`$tmp.l3-network.subnet[$sidx].ip-version`\" />\n<parameter name=\"dhcp-enabled\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-enabled`\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />","comments":"","outputs":1,"x":4070.083251953125,"y":2100.4833984375,"z":"d5178f42.44976","wires":[["c0ceef0e.0078a","1e9136c3.87ee69"]]},{"id":"c0ceef0e.0078a","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":4421.638069152832,"y":2059.81626701355,"z":"d5178f42.44976","wires":[["15650c05.6d1314"]]},{"id":"1e9136c3.87ee69","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":4430.361213684082,"y":2097.4594554901123,"z":"d5178f42.44976","wires":[["15650c05.6d1314"]]},{"id":"d752adcc.20017","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`\"/>","comments":"","x":4861.511116027832,"y":2074.67368888855,"z":"d5178f42.44976","wires":[]},{"id":"15650c05.6d1314","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":4606.36837387085,"y":2074.102150917053,"z":"d5178f42.44976","wires":[["d752adcc.20017"]]},{"id":"461634d9.663cc4","type":"save","name":"save AnAI - l3-network.subnets","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.subnet-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"subnet-id\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-id`\" />\n<parameter name=\"subnet-name\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-name`\" />\n<parameter name=\"gateway-address\" value=\"`$tmp.l3-network.subnet[$sidx].gateway-address`\" />\n<parameter name=\"network-start-address\" value=\"`$tmp.l3-network.subnet[$sidx].network-start-address`\" />\n<parameter name=\"cidr-mask\" value=\"`$tmp.l3-network.subnet[$sidx].cidr-mask`\" />\n<parameter name=\"ip-version\" value=\"`$tmp.l3-network.subnet[$sidx].ip-version`\" />\n<parameter name=\"dhcp-start\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-start`\" />\n<parameter name=\"dhcp-end\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-end`\" />\n<parameter name=\"dhcp-enabled\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-enabled`\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />","comments":"","outputs":1,"x":4107.337271690369,"y":2022.2094249725342,"z":"d5178f42.44976","wires":[["1e9136c3.87ee69","c0ceef0e.0078a"]]},{"id":"72eb0aff.498254","type":"outcome","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":3648.618034362793,"y":1985.7638292312622,"z":"d5178f42.44976","wires":[["94f52050.d9fb1"]]},{"id":"b992c40a.e3fc88","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3624.332302093506,"y":2021.4782190322876,"z":"d5178f42.44976","wires":[["c9204b2d.3b077"]]},{"id":"c9204b2d.3b077","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3860.7606801986694,"y":2021.907039642334,"z":"d5178f42.44976","wires":[["461634d9.663cc4"]]},{"id":"f531428e.13ed98","type":"save","name":"save AnAI - l3-network.subnets","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.subnet-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"subnet-id\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-id`\" />\n<parameter name=\"subnet-name\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-name`\" />\n<parameter name=\"network-start-address\" value=\"`$tmp.l3-network.subnet[$sidx].network-start-address`\" />\n<parameter name=\"cidr-mask\" value=\"`$tmp.l3-network.subnet[$sidx].cidr-mask`\" />\n<parameter name=\"ip-version\" value=\"`$tmp.l3-network.subnet[$sidx].ip-version`\" />\n<parameter name=\"dhcp-start\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-start`\" />\n<parameter name=\"dhcp-end\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-end`\" />\n<parameter name=\"dhcp-enabled\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-enabled`\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />","comments":"","outputs":1,"x":4105.046538352966,"y":1986.7640361785889,"z":"d5178f42.44976","wires":[["c0ceef0e.0078a","1e9136c3.87ee69"]]},{"id":"94f52050.d9fb1","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3874.184100151062,"y":1988.0331344604492,"z":"d5178f42.44976","wires":[["f531428e.13ed98"]]},{"id":"f9389512.87fe1","type":"outcome","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":3657.903739929199,"y":2064.7641019821167,"z":"d5178f42.44976","wires":[["ecdbbdf9.e0987"]]},{"id":"d915319.95e925","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3633.618007659912,"y":2100.478491783142,"z":"d5178f42.44976","wires":[["2d8feac9.f46f5e"]]},{"id":"2d8feac9.f46f5e","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3835.0465965270996,"y":2101.9071559906006,"z":"d5178f42.44976","wires":[["4e2d72ac.a20f14"]]},{"id":"ecdbbdf9.e0987","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3842.7557411193848,"y":2065.176050186157,"z":"d5178f42.44976","wires":[["57002b51.96ccbc"]]},{"id":"57002b51.96ccbc","type":"save","name":"save AnAI - l3-network.subnets","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.subnet-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"subnet-id\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-id`\" />\n<parameter name=\"subnet-name\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-name`\" />\n<parameter name=\"network-start-address\" value=\"`$tmp.l3-network.subnet[$sidx].network-start-address`\" />\n<parameter name=\"cidr-mask\" value=\"`$tmp.l3-network.subnet[$sidx].cidr-mask`\" />\n<parameter name=\"ip-version\" value=\"`$tmp.l3-network.subnet[$sidx].ip-version`\" />\n<parameter name=\"dhcp-enabled\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-enabled`\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />","comments":"","outputs":1,"x":4067.9035606384277,"y":2061.90673828125,"z":"d5178f42.44976","wires":[["c0ceef0e.0078a","1e9136c3.87ee69"]]},{"id":"b6bec758.f11a5","type":"set","name":"set: subnet in mdsal","xml":"<set>\n<parameter name=\"nig.subnets[$msidx].start-address\" value=\"`$tmp.l3-network.subnet[$sidx].network-start-address`\" />\n<parameter name=\"nig.subnets[$msidx].subnet-id\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-id`\" />\n<parameter name=\"nig.subnets[$msidx].subnet-name\" value=\"`$tmp.l3-network.subnet[$sidx].subnet-name`\" />\n<parameter name=\"nig.subnets[$msidx].gateway-address\" value=\"`$tmp.l3-network.subnet[$sidx].gateway-address`\" />\n<parameter name=\"nig.subnets[$msidx].cidr-mask\" value=\"`$tmp.l3-network.subnet[$sidx].cidr-mask`\" />\n<parameter name=\"nig.subnets[$msidx].ip-version\" value=\"`$tmp.l3-network.subnet[$sidx].ip-version`\" />\n<parameter name=\"nig.subnets[$msidx].dhcp-start-address\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-start`\" />\n<parameter name=\"nig.subnets[$msidx].dhcp-end-address\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-end`\" />\n<parameter name=\"nig.subnets[$msidx].dhcp-enabled\" value=\"`$tmp.l3-network.subnet[$sidx].dhcp-enabled`\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />\n\t","comments":"","x":2732.283203125,"y":2114.4833984375,"z":"d5178f42.44976","wires":[]},{"id":"95e4e3b2.775858","type":"set","name":"set: msidx","xml":"<set>\n<parameter name=\"msidx\" value=\"`$nig.subnets_length`\" />\n\t","comments":"","x":2252.2830810546875,"y":2033.4832763671875,"z":"d5178f42.44976","wires":[]},{"id":"bedb778a.035b4","type":"set","name":"set: increment msidx","xml":"<set>\n<parameter name=\"msidx\" value=\"`$msidx + 1`\" />\n<parameter name=\"nig.subnets_length\" value=\"`$nig.subnets_length + 1`\" />\n\t","comments":"","x":2729.283203125,"y":2151.4833984375,"z":"d5178f42.44976","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-assign.json
new file mode 100644
index 0000000..887976b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-assign.json
@@ -0,0 +1 @@
+[{"id":"35351cd8.e49b6c","type":"dgstart","name":"DGSTART","outputs":1,"x":163.75,"y":130,"z":"a4ab5e6a.05da68","wires":[["c488ab18.813ac"]]},{"id":"c488ab18.813ac","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.0356903076172,"y":193.09525775909424,"z":"a4ab5e6a.05da68","wires":[["fd3bd3dd.2fc7e"]]},{"id":"fd3bd3dd.2fc7e","type":"method","name":"network-topology-operation-assign","xml":"<method rpc='network-topology-operation-assign' mode='sync'>\n","comments":"","outputs":1,"x":282.71437072753906,"y":270.892840385437,"z":"a4ab5e6a.05da68","wires":[["a504ce7b.f4be1"]]},{"id":"a504ce7b.f4be1","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":242.03572845458984,"y":455.1578025817871,"z":"a4ab5e6a.05da68","wires":[["7a78b4c3.1d1704","6f978d59.65e2a4","e6aea972.81fa58","c105f712.43feb","2065d316.e3c6b4","435263ad.548d94"]]},{"id":"7a78b4c3.1d1704","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":531.0953216552734,"y":838.428908675909,"z":"a4ab5e6a.05da68","wires":[]},{"id":"9407b227.b5aac","type":"switchNode","name":"switch network-request-information.network-name","xml":"<switch test='`$network-topology-operation-input.network-request-input.network-name`'>\n","comments":"","outputs":1,"x":1393.3293914794922,"y":758.2224534451962,"z":"a4ab5e6a.05da68","wires":[["26796752.d0dcf","b2889a92.f25fa"]]},{"id":"8d83af5b.faf8e","type":"comment","name":"if network-name not populated, generate and call automated flow","info":"","comments":"","x":1979.7104797363281,"y":681.281824439764,"z":"a4ab5e6a.05da68","wires":[]},{"id":"26796752.d0dcf","type":"other","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1824.7344284057617,"y":724.4007714688778,"z":"a4ab5e6a.05da68","wires":[["2bd3b459.1b62a4"]]},{"id":"2bd3b459.1b62a4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2018.067626953125,"y":721.7341164052486,"z":"a4ab5e6a.05da68","wires":[["ad0c5cfa.c98228"]]},{"id":"ad0c5cfa.c98228","type":"switchNode","name":"switch network-model.onap-generated-naming","xml":"<switch test='`$network-model.ecomp-generated-naming`'>\n","comments":"","outputs":1,"x":2318.01993560791,"y":720.734105437994,"z":"a4ab5e6a.05da68","wires":[["ae485efb.76a4e8","ac9117f1.1932"]]},{"id":"ae485efb.76a4e8","type":"other","name":"outcome Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":2637.0200386047363,"y":708.7340984344482,"z":"a4ab5e6a.05da68","wires":[["dca1d141.97d82"]]},{"id":"dca1d141.97d82","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">\n","atomic":"true","comments":"","outputs":1,"x":2805.7700805664062,"y":709.2340869903564,"z":"a4ab5e6a.05da68","wires":[["d12936a3.5fdc98","819f29fe.58f36","56735c9d.4e8e44","2a9c33ec.5e77dc"]]},{"id":"ac9117f1.1932","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2628.242328643799,"y":741.7340984344482,"z":"a4ab5e6a.05da68","wires":[["7163c04e.950f4"]]},{"id":"7163c04e.950f4","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 name is required if onap naming is false\" />\n\n","comments":"","x":2809.742515563965,"y":745.7342141568661,"z":"a4ab5e6a.05da68","wires":[]},{"id":"cb324a53.198fb8","type":"switchNode","name":"switch network-model.onap-generated-naming","xml":"<switch test='`$network-model.naming-policy`'>\n","comments":"","outputs":1,"x":2797.792922973633,"y":1273.127024024725,"z":"a4ab5e6a.05da68","wires":[["75edc6c0.f99408","d438a51e.a26e5","534c46ca.643cc8","113fc1c8.4946c6","90e61ae1.f9a06","9b9f98f0.979af"]]},{"id":"d438a51e.a26e5","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3115.7932891845703,"y":1493.1270688474178,"z":"a4ab5e6a.05da68","wires":[["30260c5a.e9ea44"]]},{"id":"75edc6c0.f99408","type":"other","name":"outcome org.openecomp.policy.naming.SriovProvider.SriovProviderNetwork","xml":"<outcome value='org.openecomp.policy.naming.SriovProvider.SriovProviderNetwork'>\n","comments":"","outputs":1,"x":3314.904739379883,"y":1419.1271246373653,"z":"a4ab5e6a.05da68","wires":[["9056cce6.58fbd"]]},{"id":"30260c5a.e9ea44","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=\"`'Unknown naming policy = ' \n    + $network-model.naming-policy`\" />\n\n","comments":"","x":3276.2375507354736,"y":1492.793745368719,"z":"a4ab5e6a.05da68","wires":[]},{"id":"9be184e1.57cef8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3830.8228454589844,"y":1180.210465848446,"z":"a4ab5e6a.05da68","wires":[["39a69556.129652","f43c5a5f.3f54a8","85714f6b.fb864","5ebec644.0ccd68","a8167cc8.a0a54","b9ae426.3e3c74"]]},{"id":"39a69556.129652","type":"set","name":"set nameformat","xml":"<set>\n<parameter name='tmp.network-name-prefix' value='$TenantName_int_$role_net' />\n","comments":"","x":4343.297813415527,"y":1074.5436511933804,"z":"a4ab5e6a.05da68","wires":[]},{"id":"2c4f1662.4b4d3a","type":"set","name":"set nameformat","xml":"<set>\n<parameter name='tmp.network-name-prefix' value='$TenantName_$role_net' />\n","comments":"","x":4341.107772827148,"y":1116.40079459548,"z":"a4ab5e6a.05da68","wires":[]},{"id":"9056cce6.58fbd","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3726.393653869629,"y":1404.8771620690823,"z":"a4ab5e6a.05da68","wires":[["2c4f1662.4b4d3a","f43c5a5f.3f54a8","85714f6b.fb864","5ebec644.0ccd68","a8167cc8.a0a54","b9ae426.3e3c74"]]},{"id":"534c46ca.643cc8","type":"other","name":"outcome org.openecomp.policy.naming.ViprProtectedOam.ViprOamProtectedNetwork","xml":"<outcome value='org.openecomp.policy.naming.ViprProtectedOam.ViprOamProtectedNetwork'>\n","comments":"","outputs":1,"x":3353.6828384399414,"y":1164.460464477539,"z":"a4ab5e6a.05da68","wires":[["9be184e1.57cef8"]]},{"id":"f43c5a5f.3f54a8","type":"execute","name":"execute SliStringUtils - replace tenantname","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.network-name-prefix`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.network-name-prefix\"/>\n    <parameter name=\"target\" value=\"$TenantName\"/>\n    <parameter name=\"replacement\" value=\"`$aai.tenant.tenant-name`\"/>\n\n","comments":"","outputs":1,"x":4417.552307128906,"y":1240.067470163107,"z":"a4ab5e6a.05da68","wires":[[]]},{"id":"85714f6b.fb864","type":"execute","name":"execute SliStringUtils - replace role","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.network-name-prefix`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.network-name-prefix\"/>\n    <parameter name=\"target\" value=\"$role\"/>\n    <parameter name=\"replacement\" value=\"`$network-model.network-role`\"/>\n\n","comments":"","outputs":1,"x":4390.552307128906,"y":1275.067470163107,"z":"a4ab5e6a.05da68","wires":[[]]},{"id":"5ebec644.0ccd68","type":"get-resource","name":"get-resource NETWORK_INSTANCE_NAME_INDEX","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from NETWORK_INSTANCE_NAME_INDEX WHERE network_instance_name_prefix\n    = $tmp.network-name-prefix'\n  pfx='db.network-name-prefix'>\n\n","comments":"","outputs":1,"x":4440.219055175781,"y":1311.067470163107,"z":"a4ab5e6a.05da68","wires":[["5140a76f.251638"]]},{"id":"a8167cc8.a0a54","type":"switchNode","name":"switch index-number","xml":"<switch test='`$db.network-name-prefix.index-number`'>\n","comments":"","outputs":1,"x":4345.933395385742,"y":1415.353054612875,"z":"a4ab5e6a.05da68","wires":[["1ecccb29.20b9dd","6a4c6ddb.dc419c"]]},{"id":"6a4c6ddb.dc419c","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":4528.790435791016,"y":1456.7815681397915,"z":"a4ab5e6a.05da68","wires":[["6510627a.0b6c54"]]},{"id":"1ecccb29.20b9dd","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":4530.2189865112305,"y":1372.4958969056606,"z":"a4ab5e6a.05da68","wires":[["c1c17349.e7014"]]},{"id":"c5d52aa5.50e6e","type":"save","name":"save (insert) name index","xml":"<save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"insert into NETWORK_INSTANCE_NAME_INDEX values ( $tmp.network-name-prefix , 1)\"\n  force='false' pfx='pfx'>\n","comments":"","outputs":1,"x":4902.005027770996,"y":1479.281955331564,"z":"a4ab5e6a.05da68","wires":[["814eff24.4c754"]]},{"id":"7afcc751.2cd6a","type":"set","name":"increment index number","xml":"<set>\n<parameter name='tmp.index-number' value='`$db.network-name-prefix.index-number+1`' />\n","comments":"","x":4901.647624969482,"y":1349.6389118134975,"z":"a4ab5e6a.05da68","wires":[]},{"id":"6510627a.0b6c54","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":4687.361980438232,"y":1455.3532119691372,"z":"a4ab5e6a.05da68","wires":[["9e67cd6.09d453","c5d52aa5.50e6e"]]},{"id":"5140a76f.251638","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":4714.504695892334,"y":1309.6388812959194,"z":"a4ab5e6a.05da68","wires":[["a58dedfa.823ee"]]},{"id":"a58dedfa.823ee","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 reading the NETWORK_INSTANCE_NAME_INDEX table\" />\n","comments":"","x":4868.790512084961,"y":1309.6389003694057,"z":"a4ab5e6a.05da68","wires":[]},{"id":"9e67cd6.09d453","type":"set","name":"set new index number to 1","xml":"<set>\n<parameter name='tmp.index-number' value='1' />\n","comments":"","x":4910.219207763672,"y":1433.9245296418667,"z":"a4ab5e6a.05da68","wires":[]},{"id":"61fdf122.30c6d","type":"save","name":"save (update) name index","xml":"<save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"update NETWORK_INSTANCE_NAME_INDEX\n       set index_number = $tmp.index-number\n       where network_instance_name_prefix = $db.network-name-prefix.network-instance-name-prefix \"\n  force='false' pfx='pfx'>\n","comments":"","outputs":1,"x":4908.79056930542,"y":1391.067464441061,"z":"a4ab5e6a.05da68","wires":[["ee2bd7a9.0d103"]]},{"id":"c1c17349.e7014","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":4687.361877441406,"y":1371.0673442780972,"z":"a4ab5e6a.05da68","wires":[["7afcc751.2cd6a","61fdf122.30c6d"]]},{"id":"ee2bd7a9.0d103","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":5131.647624969482,"y":1391.067464441061,"z":"a4ab5e6a.05da68","wires":[["c54eb549.7b55c"]]},{"id":"c54eb549.7b55c","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=\"Failed to update SERVICE_INSTANCE_NAME_INDEX table\" />\n","comments":"","x":5285.933441162109,"y":1391.0674835145473,"z":"a4ab5e6a.05da68","wires":[]},{"id":"814eff24.4c754","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":5130.218925476074,"y":1476.7816768586636,"z":"a4ab5e6a.05da68","wires":[["1d6e678c.ed74c8"]]},{"id":"1d6e678c.ed74c8","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=\"Failed to insert record into SERVICE_INSTANCE_NAME_INDEX table\" />\n","comments":"","x":5284.504741668701,"y":1476.78169593215,"z":"a4ab5e6a.05da68","wires":[]},{"id":"b9ae426.3e3c74","type":"set","name":"set tmp.network-instance-name","xml":"<set>\n<parameter name='tmp.network-instance-name' value=\"`$tmp.network-name-prefix + '_' + $tmp.index-number`\" />\n","comments":"","x":4383.504192352295,"y":1494.4959779679775,"z":"a4ab5e6a.05da68","wires":[]},{"id":"b2889a92.f25fa","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1805.3638343811035,"y":777.7248501777649,"z":"a4ab5e6a.05da68","wires":[["a9470efa.ce6fb8"]]},{"id":"6f978d59.65e2a4","type":"get-resource","name":"get-resource tenant","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"tenant\" \n\t\tkey=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND \n\t\t     cloud-region.cloud-region-id = $network-topology-operation-input.network-request-input.aic-cloud-region AND\n\t\t     tenant.tenant-id = $network-topology-operation-input.network-request-input.tenant\"\n        pfx='aai.tenant' local-only='false' >\n\n","comments":"","outputs":1,"x":578.9153747558594,"y":451.46299585700035,"z":"a4ab5e6a.05da68","wires":[["510eff14.764978","e2757e9.6ede2","723bb3a4.0a6514"]]},{"id":"510eff14.764978","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":814.5267105102539,"y":455.5740579068661,"z":"a4ab5e6a.05da68","wires":[["32cf849b.47605c"]]},{"id":"e2757e9.6ede2","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":809.8597373962402,"y":488.90737184882164,"z":"a4ab5e6a.05da68","wires":[["32cf849b.47605c"]]},{"id":"32cf849b.47605c","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=\"Tenant not found in AAI\" />\n\n","comments":"","x":1010.7023849487305,"y":463.62962278723717,"z":"a4ab5e6a.05da68","wires":[]},{"id":"b95af8cf.640458","type":"set","name":"set tmp.network-instance-name","xml":"<set>\n<parameter name='tmp.network-instance-name' value=\"`$network-topology-operation-input.network-request-input.network-name`\" />\n<parameter name='tmp.l3-network.network-name' value=\"`$network-topology-operation-input.network-request-input.network-name`\" />\n","comments":"","x":2273.835075378418,"y":770.7248662412167,"z":"a4ab5e6a.05da68","wires":[]},{"id":"a9470efa.ce6fb8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2003.882396697998,"y":777.7248196601868,"z":"a4ab5e6a.05da68","wires":[["b95af8cf.640458","d5f7e16b.7cecb"]]},{"id":"994ffad3.0ba89","type":"call","name":"call generate-l3network-network-id","xml":"<call module='GENERIC-RESOURCE-API' rpc='generate-l3network-network-id' mode='sync' >\n","comments":"","outputs":1,"x":1233.0295639038086,"y":542.5410922467709,"z":"a4ab5e6a.05da68","wires":[[]]},{"id":"723bb3a4.0a6514","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":810.0357437133789,"y":424.0000222623348,"z":"a4ab5e6a.05da68","wires":[["2d78cce8.fc4c2c"]]},{"id":"2d78cce8.fc4c2c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1002.5357437133789,"y":424.75003084540367,"z":"a4ab5e6a.05da68","wires":[[]]},{"id":"113fc1c8.4946c6","type":"other","name":"outcome oam_vipr_protected_network","xml":"<outcome value='oam_vipr_protected_network'>\n","comments":"","outputs":1,"x":3208.126640319824,"y":1201.324143409729,"z":"a4ab5e6a.05da68","wires":[["9be184e1.57cef8"]]},{"id":"90e61ae1.f9a06","type":"other","name":"outcome network_without_route_tags_naming_default","xml":"<outcome value='network_without_route_tags_naming_default'>\n","comments":"","outputs":1,"x":3254.793312072754,"y":1237.9908113479614,"z":"a4ab5e6a.05da68","wires":[["9be184e1.57cef8"]]},{"id":"9b9f98f0.979af","type":"other","name":"outcome sriov_provider_network","xml":"<outcome value='sriov_provider_network'>\n","comments":"","outputs":1,"x":3187.460159301758,"y":1452.657508701086,"z":"a4ab5e6a.05da68","wires":[["9056cce6.58fbd"]]},{"id":"99f811c1.c71dc","type":"other","name":"outcome oam_atm_u_landing_network","xml":"<outcome value='oam_atm_u_landing_network'>\n","comments":"","outputs":1,"x":3201.459831237793,"y":1279.657470703125,"z":"a4ab5e6a.05da68","wires":[["9056cce6.58fbd"]]},{"id":"87fe61ea.a414a","type":"other","name":"outcome oam_atm_p_landing_network","xml":"<outcome value='oam_atm_p_landing_network'>\n","comments":"","outputs":1,"x":3199.7930068969727,"y":1314.6574726104736,"z":"a4ab5e6a.05da68","wires":[["9056cce6.58fbd"]]},{"id":"8e28dbe.70ebe28","type":"other","name":"outcome oam_aim_landing_network","xml":"<outcome value='oam_aim_landing_network'>\n","comments":"","outputs":1,"x":3193.1268463134766,"y":1346.3241415023804,"z":"a4ab5e6a.05da68","wires":[["9056cce6.58fbd"]]},{"id":"774e8da3.9580cc","type":"other","name":"outcome network_with_route_tags_naming_default","xml":"<outcome value='network_with_route_tags_naming_default'>\n","comments":"","outputs":1,"x":3238.1269302368164,"y":1379.6574659347534,"z":"a4ab5e6a.05da68","wires":[["9056cce6.58fbd"]]},{"id":"8e167533.9d1438","type":"comment","name":"Changelog","info":"1707: Change vpn binding from field to table selection\n1710: Add ipv6 vipr flows\n1806: Separate out to automated vs preload vs vlan tagging","comments":"","x":376.6071472167969,"y":130.00000667572021,"z":"a4ab5e6a.05da68","wires":[]},{"id":"e6aea972.81fa58","type":"execute","name":"execute Properties - pull properties file","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":642.3214950561523,"y":362.7181886136532,"z":"a4ab5e6a.05da68","wires":[[]]},{"id":"71ac9cb8.c11e3c","type":"comment","name":"Pre-1806 naming logic","info":"","comments":"","x":2718.8212890625,"y":1240.8254249989986,"z":"a4ab5e6a.05da68","wires":[]},{"id":"d12936a3.5fdc98","type":"call","name":"call naming-policy-generate-name","xml":"<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n","comments":"","outputs":1,"x":3083.9288177490234,"y":747.0039323270321,"z":"a4ab5e6a.05da68","wires":[[]]},{"id":"819f29fe.58f36","type":"set","name":"set parameters for generate-unique-name","xml":"<set>\n<parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$network-model.naming-policy`' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />\n<parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />\n<parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />\n<parameter name='naming-policy-generate-name-input.query-parameter' value='`$network-model.customization-uuid`' />\n\n\n","comments":"","x":3106.6791076660156,"y":709.004013389349,"z":"a4ab5e6a.05da68","wires":[]},{"id":"56735c9d.4e8e44","type":"set","name":"set network name","xml":"<set>\n<parameter name='tmp.network-instance-name' value='`$naming-policy-generate-name-output.network-name`' />\n<parameter name='tmp.l3-network.network-name' value='`$naming-policy-generate-name-output.network-name`' />\n\n\n\n","comments":"","x":3033.178871154785,"y":782.0039304196835,"z":"a4ab5e6a.05da68","wires":[]},{"id":"d5f7e16b.7cecb","type":"call","name":"call network-topology-operation-assign-from-preload","xml":"<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-assign-from-preload' mode='sync' >\n","comments":"","outputs":1,"x":2337.9648056030273,"y":805.4324515759945,"z":"a4ab5e6a.05da68","wires":[[]]},{"id":"2a9c33ec.5e77dc","type":"call","name":"call network-topology-operation-assign-automated","xml":"<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-assign-automated' mode='sync' >\n","comments":"","outputs":1,"x":3137.091377258301,"y":819.5833495557308,"z":"a4ab5e6a.05da68","wires":[[]]},{"id":"c105f712.43feb","type":"set","name":"set tmp.l3-network.network-id","xml":"<set>\n<parameter name='tmp.l3-network.network-id' value='`$tmp.return.generate-l3network-network-id.uuid`' />\n<parameter name='network-topology-operation-input.network-information.network-id' value='`$tmp.return.generate-l3network-network-id.uuid`' />","comments":"","x":581.4961700439453,"y":627.2500842511654,"z":"a4ab5e6a.05da68","wires":[]},{"id":"2065d316.e3c6b4","type":"switchNode","name":"switch network-request-information.network-id","xml":"<switch test='`$network-topology-operation-input.network-information.network-id`'>\n","comments":"","outputs":1,"x":631.0000610351562,"y":581.0039370954037,"z":"a4ab5e6a.05da68","wires":[["d4168914.09272","40ee795c.063838"]]},{"id":"d4168914.09272","type":"other","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":960,"y":544.0039218366146,"z":"a4ab5e6a.05da68","wires":[["994ffad3.0ba89"]]},{"id":"40ee795c.063838","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":940.6294059753418,"y":583.3280005455017,"z":"a4ab5e6a.05da68","wires":[["e717894c.aca1a"]]},{"id":"e717894c.aca1a","type":"set","name":"set network-id","xml":"<set>\n<parameter name='tmp.return.generate-l3network-network-id.uuid' value='`$network-topology-operation-input.network-information.network-id`' />\n\n\n\n","comments":"","x":1163,"y":582.7540283203125,"z":"a4ab5e6a.05da68","wires":[]},{"id":"52111bb9.bd57fc","type":"comment","name":"if network-instance-group-id populated, follow vlan tagging flow","info":"","comments":"","x":685.8945465087891,"y":727.2913134992123,"z":"a4ab5e6a.05da68","wires":[]},{"id":"435263ad.548d94","type":"switchNode","name":"switch network-request-information.network-instance-group-id","xml":"<switch test='`$network-topology-operation-input.network-information.network-instance-group-id`'>\n","comments":"","outputs":1,"x":684.6127166748047,"y":762.1563418805599,"z":"a4ab5e6a.05da68","wires":[["e25525d.3b75958","b57f4a07.8cd1e8"]]},{"id":"e25525d.3b75958","type":"other","name":"outcome NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1067.3232421875,"y":760.148541778326,"z":"a4ab5e6a.05da68","wires":[["9407b227.b5aac"]]},{"id":"b57f4a07.8cd1e8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1047.9526481628418,"y":799.4726204872131,"z":"a4ab5e6a.05da68","wires":[["d8ce728c.6ea7b8"]]},{"id":"d8ce728c.6ea7b8","type":"call","name":"call network-topology-operation-assign-vlantagging-instancegroup","xml":"<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-assign-vlantagging-instancegroup' mode='sync' >\n","comments":"","outputs":1,"x":1448.8237915039062,"y":801.2916396558285,"z":"a4ab5e6a.05da68","wires":[[]]},{"id":"210258e5.7e72f","type":"comment","name":"if network-name not populated, generate and call automated flow","info":"","comments":"","x":1995.8810729980469,"y":872.3133433759212,"z":"a4ab5e6a.05da68","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-changeassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-changeassign.json
new file mode 100755
index 0000000..94de3de
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-changeassign.json
@@ -0,0 +1 @@
+[{"id":"78cb8595.ca2464","type":"dgstart","name":"DGSTART","outputs":1,"x":147.5,"y":112,"z":"99faf548.31fd3","wires":[["8cb2b66b.81bcd8"]]},{"id":"8cb2b66b.81bcd8","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":290.7856903076172,"y":175.09525775909424,"z":"99faf548.31fd3","wires":[["4040c418.7fc174"]]},{"id":"4040c418.7fc174","type":"method","name":"network-topology-operation-changeassign","xml":"<method rpc='network-topology-operation-changeassign' mode='sync'>\n","comments":"","outputs":1,"x":264.46437072753906,"y":250.89285469055176,"z":"99faf548.31fd3","wires":[["fdca899b.1c557"]]},{"id":"fdca899b.1c557","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":163.2857437133789,"y":430.9078121185303,"z":"99faf548.31fd3","wires":[["84b36df2.25e65","84ee1670.5f0a7","aeb06755.a7872","fd434a74.035768","5872c2e1.fd902c","151d8dc1.30e372","4cf6fa1f.47b03c","203bed4.3354e12","f2c572bd.81ebb","1011fe25.8dc6ca","3fed421d.e63e86","b8e99272.6fe8b","3991c105.213bc6","f7643660.4bcd8","95446770.fe01d8","ee3e375d.3ff768","2a9c6277.2cb43e","af7b04ae.883c9","d6bd7579.410f98","5606ead2.76c2b4"]]},{"id":"b3e6283f.d4bc","type":"comment","name":"Changelog","info":"1806: new DG for changeassign for preload","comments":"","x":360.3571472167969,"y":112.00000667572021,"z":"99faf548.31fd3","wires":[]},{"id":"84b36df2.25e65","type":"execute","name":"execute Properties - pull properties file","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":602.678596496582,"y":443.2896785736084,"z":"99faf548.31fd3","wires":[[]]},{"id":"aeb06755.a7872","type":"get-resource","name":"get AnAI - l3-network","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $network-topology-operation-input.network-request-information.network-id\n\t\t\tAND depth='all'\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.l3network\">\n","comments":"","outputs":1,"x":542.1846008300781,"y":694.247106552124,"z":"99faf548.31fd3","wires":[["a46bd08e.5da5a","5c1a94fd.e35f64"]]},{"id":"151d8dc1.30e372","type":"switchNode","name":"switch: AnAI == PRELOAD - network-name","xml":"<switch test=\"`$tmp.AnAI.l3network.network-name == $preload-data.preload-network-topology-information.network-topology-identifier.network-name`\">","comments":"","outputs":1,"x":611.8473815917969,"y":926.4177303314209,"z":"99faf548.31fd3","wires":[["a8efc187.30f838"]]},{"id":"1011fe25.8dc6ca","type":"for","name":"for loop k - tmp.AnAI.l3network.subnets.subnet","xml":"<for index=\"k\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">\n","comments":"","outputs":1,"x":621.8988800048828,"y":1186.4765882492065,"z":"99faf548.31fd3","wires":[["b0f7d04e.f6228"]]},{"id":"5c01494c.b5ff3","type":"for","name":"for loop i - PRELOAD subnets","xml":"<for index=\"i\" start=\"0\" end=\"`$preload-data.preload-network-topology-information.subnets_length`\">\n","comments":"","outputs":1,"x":1004.8394660949707,"y":2504.9333333969116,"z":"99faf548.31fd3","wires":[["c8f11916.cc498"]]},{"id":"5f010c7f.3fb644","type":"returnSuccess","name":"return success","xml":"<return status=\"success\">\n\t<parameter name=\"networkId\" value=\"`$network-topology-operation-input.network-request-information.network-id`\" />\n\t<parameter name=\"error-code\" value=\"200\" />","comments":"","x":490.6006507873535,"y":7526.331782341003,"z":"99faf548.31fd3","wires":[]},{"id":"a46bd08e.5da5a","type":"not-found","name":"not found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":729.0895500183105,"y":735.4414100646973,"z":"99faf548.31fd3","wires":[["577c5c6.eef4ea4"]]},{"id":"577c5c6.eef4ea4","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"`'network-id: ' + $network-topology-operation-input.network-request-information.network-id + 'not found in AnAI'`\" />","comments":"","x":891.7283248901367,"y":735.330397605896,"z":"99faf548.31fd3","wires":[]},{"id":"2c0b312d.fcb97e","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":764.2245063781738,"y":1342.4961166381836,"z":"99faf548.31fd3","wires":[["9abbbbfa.53807","f2815bd8.a2a3e8"]]},{"id":"8097d12.27e8db","type":"set","name":"initialize tmp.start-address-match = 0","xml":"<set>\n<parameter name='tmp.start-address-match' value='0' />\n","comments":"","x":836.7513465881348,"y":1234.0304651260376,"z":"99faf548.31fd3","wires":[]},{"id":"318783fb.42fd1c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1459.8359107971191,"y":2569.1835403442383,"z":"99faf548.31fd3","wires":[["284ced49.664fa2","c7a5fe9e.78c0c"]]},{"id":"c233c3d1.d2adc","type":"set","name":"initialize tmp.start-address-match = 0","xml":"<set>\n<parameter name=\"tmp.start-address-match\" value=\"0\" />\n","comments":"","x":1527.651569366455,"y":2505.419786453247,"z":"99faf548.31fd3","wires":[]},{"id":"9abbbbfa.53807","type":"for","name":"for loop n PRELOAD subnets","xml":"<for index=\"n\" start=\"0\" end=\"`$preload-data.preload-network-topology-information.subnets_length`\">\n","comments":"","outputs":1,"x":996.955078125,"y":1343.0199851989746,"z":"99faf548.31fd3","wires":[["fa146218.ec01a8"]]},{"id":"be029b56.cf1df","type":"switchNode","name":"switch: tmp.start-address-match = 0","xml":"<switch test=\"`$tmp.start-address-match == 0`\">","comments":"","outputs":1,"x":1403.3373908996582,"y":2038.0627098083496,"z":"99faf548.31fd3","wires":[["de23edc2.3b0c28"]]},{"id":"284ced49.664fa2","type":"for","name":"for loop j - AnAI l3subnet","xml":"<for index=\"j\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">\n","comments":"","outputs":1,"x":1681.0319175720215,"y":2569.5992250442505,"z":"99faf548.31fd3","wires":[["afdd26c6.cae418"]]},{"id":"de23edc2.3b0c28","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1640.7497215270996,"y":2037.6302165985107,"z":"99faf548.31fd3","wires":[["5ee496da.7cbdc8"]]},{"id":"37fb1c35.831964","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1955.8168830871582,"y":2623.7336387634277,"z":"99faf548.31fd3","wires":[["a9319a23.6cb84"]]},{"id":"fa146218.ec01a8","type":"switchNode","name":"switch: AnAI-k == PRELOAD-n start-address","xml":"<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].network-start-address == $preload-data.preload-network-topology-information.subnets[$n].start-address`\">","comments":"","outputs":1,"x":1333.034423828125,"y":1342.8733177185059,"z":"99faf548.31fd3","wires":[["53d9bc33.649454"]]},{"id":"afdd26c6.cae418","type":"switchNode","name":"switch: PRELOAD-i == AnAI-j start-address","xml":"<switch test=\"`$preload-data.preload-network-topology-information.subnets[$i].start-address == $tmp.AnAI.l3network.subnets.subnet[$j].network-start-address`\">","comments":"","outputs":1,"x":1995.0833473205566,"y":2570.1826963424683,"z":"99faf548.31fd3","wires":[["b36ddf7d.2b52b8"]]},{"id":"a9319a23.6cb84","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2135.956226348877,"y":2624.2042837142944,"z":"99faf548.31fd3","wires":[["1b52fec9.004729","4a073530.673444","b69dabd1.9cf9c8","6e6f182b.08ba18","b941f229.313c28","9fa0a0b1.0a386","6499a1da.9e778"]]},{"id":"53d9bc33.649454","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1617.6036109924316,"y":1015.5789260864258,"z":"99faf548.31fd3","wires":[["f2efaecb.a4c288"]]},{"id":"5ee496da.7cbdc8","type":"save","name":"update AnAI - subnet","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id\" >\n<parameter name=\"orchestration-status\" value=\"PendingDelete\" />\n\t\t","comments":"","outputs":1,"x":1824.2445945739746,"y":2037.0247611999512,"z":"99faf548.31fd3","wires":[["c11c2553.d05c4","d170de98.954d98","791db7cd.110f5"]]},{"id":"b36ddf7d.2b52b8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2246.285015106201,"y":2569.6224908828735,"z":"99faf548.31fd3","wires":[["84c63af2.77852"]]},{"id":"c11c2553.d05c4","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2061.2204360961914,"y":2036.905517578125,"z":"99faf548.31fd3","wires":[["85718701.a91ff"]]},{"id":"cad3b8b9.df2fb8","type":"comment","name":"foreach AnAI l3subnet not found in PRELOAD, set pending-delete","info":"","comments":"","x":1116.9951782226562,"y":1991.508466720581,"z":"99faf548.31fd3","wires":[]},{"id":"a6a0b46e.ea3b68","type":"comment","name":"foreach PRELOAD subnet not found in AnAI l3subnet, create subnet in AnAI","info":"","comments":"","x":738.895751953125,"y":2457.522095680237,"z":"99faf548.31fd3","wires":[]},{"id":"7ba20b9c.bf119c","type":"comment","name":"start-addr matched, compare other subnet attrs","info":"","comments":"","x":1324.1495208740234,"y":1294.1844925880432,"z":"99faf548.31fd3","wires":[]},{"id":"8a28bf8a.ec8a78","type":"comment","name":"foreach AnAI subnet attr different from PRELOAD, update AnAI and set pending-update","info":"","comments":"","x":2017.4664039611816,"y":616.4829177856445,"z":"99faf548.31fd3","wires":[]},{"id":"1b52fec9.004729","type":"switchNode","name":"switch : PRELOAD dhcp-enabled","xml":"<switch test=\"`$preload-data.preload-network-topology-information.subnets[$i].dhcp-enabled`\">","comments":"","outputs":1,"x":2441.034351348877,"y":2623.851176261902,"z":"99faf548.31fd3","wires":[["9bb2de7a.c88328","55d656da.00646"]]},{"id":"55d656da.00646","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":2688.5899085998535,"y":2624.77188205719,"z":"99faf548.31fd3","wires":[["517d00af.9ef16"]]},{"id":"9bb2de7a.c88328","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":2689.256649017334,"y":2671.2163791656494,"z":"99faf548.31fd3","wires":[["4fd23755.392b2"]]},{"id":"b0f7d04e.f6228","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":575.0187950134277,"y":1234.314980506897,"z":"99faf548.31fd3","wires":[["8097d12.27e8db","2c0b312d.fcb97e","62ed2b02.abed04"]]},{"id":"62ed2b02.abed04","type":"set","name":"initialize tmp.subnetUpdate = 0","xml":"<set>\n<parameter name='tmp.subnetUpdate' value='0' />\n","comments":"","x":817.5111503601074,"y":1279.6883325576782,"z":"99faf548.31fd3","wires":[]},{"id":"c8f11916.cc498","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1265.625675201416,"y":2505.3988723754883,"z":"99faf548.31fd3","wires":[["c233c3d1.d2adc","318783fb.42fd1c"]]},{"id":"d170de98.954d98","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2067.9432945251465,"y":2190.7074871063232,"z":"99faf548.31fd3","wires":[["27921b9c.80f68c"]]},{"id":"9e85f245.d4b0e","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2736.5464935302734,"y":3193.0616664886475,"z":"99faf548.31fd3","wires":[["51b0e536.da0e8c"]]},{"id":"f89e3ebf.b351","type":"set","name":"set tmp.subnetRollback: orchestraton-status","xml":"<set>\n  <parameter name=\"tmp.subnetRollback[$x].subnet-id\" value= \"`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`\"/>\n  <parameter name=\"tmp.subnetRollback[$x].orchestration-status\" value= \"`$tmp.AnAI.l3network.subnets.subnet[$k].orchestration-status`\" />\n  <parameter name=\"tmp.subnetRollback[$x].type\" value = \"delete\"  />\n  \n\n\n","comments":"","x":2511.9457664489746,"y":2189.898748397827,"z":"99faf548.31fd3","wires":[]},{"id":"27921b9c.80f68c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2204.8030548095703,"y":2190.470316886902,"z":"99faf548.31fd3","wires":[["f89e3ebf.b351","72749e8c.4d3648","b21b63dd.91c4d"]]},{"id":"51b0e536.da0e8c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2878.9909286499023,"y":3193.107374191284,"z":"99faf548.31fd3","wires":[["5c1d7222.a0c1a4","6a26699.aef9d18","6b5d4ec3.3c3e58","5348546b.a906bc"]]},{"id":"5c1d7222.a0c1a4","type":"set","name":"set tmp.subnetRollback for create","xml":"<set>\n  <parameter name=\"tmp.subnetRollback[$x].subnet-id\" value= \"`$tmp.return.generate-subnets-subnet-id.uuid`\" />\n  <parameter name=\"tmp.subnetRollback[$x].type\" value = \"create\"  />","comments":"","x":3149.2768363952637,"y":3193.8219709396362,"z":"99faf548.31fd3","wires":[]},{"id":"72749e8c.4d3648","type":"set","name":"$x++","xml":"<set>\n  <parameter name=\"x\" value = \"`$x + 1`\"  />\n\n","comments":"","x":2395.650722503662,"y":2235.94939994812,"z":"99faf548.31fd3","wires":[]},{"id":"6a26699.aef9d18","type":"set","name":"$x++","xml":"<set>\n  <parameter name=\"x\" value = \"`$x + 1`\"  />\n\n","comments":"","x":3066.2131156921387,"y":3239.386336326599,"z":"99faf548.31fd3","wires":[]},{"id":"5c1a94fd.e35f64","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":722.045768737793,"y":694.6399879455566,"z":"99faf548.31fd3","wires":[["805f4ce3.7858f8"]]},{"id":"805f4ce3.7858f8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + ' from AnAI'`\" />","comments":"","x":881.156852722168,"y":694.8622169494629,"z":"99faf548.31fd3","wires":[]},{"id":"a8efc187.30f838","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":866.0973815917969,"y":926.421727180481,"z":"99faf548.31fd3","wires":[["bb3c93c4.2f3f6"]]},{"id":"bb3c93c4.2f3f6","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"`'No preload network found with network-name = ' + $tmp.AnAI.l3network.network-name + ' in SDNC'`\" />","comments":"","x":1028.736156463623,"y":926.3107147216797,"z":"99faf548.31fd3","wires":[]},{"id":"ce72f11c.50bff8","type":"returnSuccess","name":"set execute_failure = true","xml":"<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n","comments":"","x":2497.061740875244,"y":2123.707365989685,"z":"99faf548.31fd3","wires":[]},{"id":"b941f229.313c28","type":"save","name":"save AnAI - l3-network.subnets.subnet","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid\" >\n\t<!-- Create l3-network object -->\n\t<parameter name=\"network-id\" value=\"`$tmp.AnAI.l3network.network-id`\" />\n\t<parameter name=\"subnet-id\" value=\"`$tmp.return.generate-subnets-subnet-id.uuid`\" />\n\t<parameter name=\"gateway-address\" value=\"`$tmp.gateway-address`\" />\n\t<parameter name=\"subnet-name\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].subnet-name`\" />\t\t\n\t<parameter name=\"network-start-address\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].start-address`\" />\n\t<parameter name=\"cidr-mask\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].cidr-mask`\" />\n\t<parameter name=\"ip-version\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].ip-version`\" />\n\t<parameter name=\"dhcp-start\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].dhcp-start-address`\" />\n\t<parameter name=\"dhcp-end\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].dhcp-end-address`\" />\n\t<parameter name=\"dhcp-enabled\" value=\"`$tmp.dhcpEnabled.boolean`\" />\n\t<parameter name=\"ip-assignment-direction\" value=\"`$tmp.addrFromStart.boolean`\" />\n\t<parameter name=\"orchestration-status\" value=\"PendingCreate\" />","comments":"","outputs":1,"x":2453.2047595977783,"y":3053.3509311676025,"z":"99faf548.31fd3","wires":[["5cbf09b9.68eac8","9e85f245.d4b0e","48e77510.8d6f74"]]},{"id":"5cbf09b9.68eac8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2730.821033477783,"y":3053.6994342803955,"z":"99faf548.31fd3","wires":[["7ed587ce.58bb7"]]},{"id":"b69dabd1.9cf9c8","type":"switchNode","name":"switch : PRELOAD gateway-address","xml":"<switch test=\"`$preload-data.preload-network-topology-information.subnets[$i].gateway-address`\">","comments":"","outputs":1,"x":2452.0707359313965,"y":2918.6447286605835,"z":"99faf548.31fd3","wires":[["fd829caf.94df28"]]},{"id":"fd829caf.94df28","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":2675.5707359313965,"y":2918.6447286605835,"z":"99faf548.31fd3","wires":[["ca740c1.333a3f"]]},{"id":"5df53d20.23f0d4","type":"GenericXML","name":"Execute: generate gateway-address","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool\" method=\"getGatewayAddress\">\n\t<parameter name=\"ipAddress\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].start-address`\" />\n\t<parameter name=\"ipVersion\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].ip-version`\" />\n\t<parameter name=\"subnet\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].cidr-mask`\" />\n\t<parameter name=\"ctxVariable\" value=\"tmp.return.generate.gateway-address\" />","comments":"","outputs":1,"x":3048.8207511901855,"y":2918.394736289978,"z":"99faf548.31fd3","wires":[[]]},{"id":"ca740c1.333a3f","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2817.320743560791,"y":2918.644739151001,"z":"99faf548.31fd3","wires":[["5df53d20.23f0d4","5d6ff69d.f979f8"]]},{"id":"4a073530.673444","type":"set","name":"set tmp.gateway-address","xml":"<set>\n<parameter name='tmp.gateway-address' value='`$preload-data.preload-network-topology-information.subnets[$i].gateway-address`' />\n","comments":"","x":2414.5707511901855,"y":2874.8947353363037,"z":"99faf548.31fd3","wires":[]},{"id":"5d6ff69d.f979f8","type":"set","name":"set tmp.gateway-address","xml":"<set>\n<parameter name=\"tmp.gateway-address\" value=\"`$tmp.return.generate.gateway-address`\" />\n","comments":"","x":3015.3207511901855,"y":2960.3947381973267,"z":"99faf548.31fd3","wires":[]},{"id":"6e6f182b.08ba18","type":"call","name":"call generate-subnets-subnet-id","xml":"<call module=\"VNF-API\" rpc=\"generate-subnets-subnet-id\" mode=\"sync\" >\n","comments":"","outputs":1,"x":2432.1857147216797,"y":3006.501851081848,"z":"99faf548.31fd3","wires":[["df1c94ad.d58c2"]]},{"id":"df1c94ad.d58c2","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2695.9356994628906,"y":3006.751841545105,"z":"99faf548.31fd3","wires":[["7ed587ce.58bb7"]]},{"id":"85718701.a91ff","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2265.5258407592773,"y":2037.171579360962,"z":"99faf548.31fd3","wires":[["ce72f11c.50bff8","7539d8e7.6520d8","c1e8109.33219f"]]},{"id":"517d00af.9ef16","type":"set","name":"set tmp.dhcpEnabled.bolean=false","xml":"<set>\n<parameter name=\"tmp.dhcpEnabled.boolean\" value=\"false\" />\n","comments":"","x":2944.7283668518066,"y":2624.3148374557495,"z":"99faf548.31fd3","wires":[]},{"id":"4fd23755.392b2","type":"set","name":"set tmp.dhcpEnabled.boolean=true","xml":"<set>\n<parameter name=\"tmp.dhcpEnabled.boolean\" value=\"true\" />\n","comments":"","x":2946.5101585388184,"y":2670.929913520813,"z":"99faf548.31fd3","wires":[]},{"id":"53eb3226.6cd5d4","type":"returnSuccess","name":"set execute_failure = true","xml":"<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n","comments":"","x":3175.343620300293,"y":3142.5335903167725,"z":"99faf548.31fd3","wires":[]},{"id":"7ed587ce.58bb7","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2930.5578079223633,"y":3053.3907718658447,"z":"99faf548.31fd3","wires":[["53eb3226.6cd5d4","3ff5481d.28183","3060e5d9.8b532a"]]},{"id":"3ff5481d.28183","type":"set","name":"set i, j max + 1","xml":"<set>\n\t<parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />\n\t<parameter name='i' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />","comments":"","x":3139.057846069336,"y":3053.3907890319824,"z":"99faf548.31fd3","wires":[]},{"id":"d982bcdf.e05c5","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Error updating l3-network in AnAI with network-id = ' + $tmp.AnAI.l3network.network-id + ' - ' + $tmp.error-message + ' - ' + $tmp.rollback.error-message`\"/>","comments":"","x":1116.36665725708,"y":7374.491377830505,"z":"99faf548.31fd3","wires":[]},{"id":"d6bd7579.410f98","type":"set","name":"Set final indicator to Y","xml":"<set>\n<parameter name=\"ack-final\" value=\"Y\"/>","comments":"","x":503.46631622314453,"y":7430.028269767761,"z":"99faf548.31fd3","wires":[]},{"id":"6b5d4ec3.3c3e58","type":"set","name":"set tmp.l3networkUpdate = 1","xml":"<set>\n<parameter name='tmp.l3networkUpdate' value='1' />\n","comments":"","x":3135.60945892334,"y":3285.910446166992,"z":"99faf548.31fd3","wires":[]},{"id":"d20488b7.54f5f8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1737.8528366088867,"y":6141.0212779045105,"z":"99faf548.31fd3","wires":[["f5491b15.8a826"]]},{"id":"c9a6b2f7.6419f","type":"switchNode","name":"switch : tmp.l3networkUpdate = 1","xml":"<switch test=\"`$tmp.l3networkUpdate == 1`\">\n","comments":"","outputs":1,"x":977.0615577697754,"y":6141.137383937836,"z":"99faf548.31fd3","wires":[["53f56d25.6348ac"]]},{"id":"53f56d25.6348ac","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1190.7282218933105,"y":6140.914918422699,"z":"99faf548.31fd3","wires":[["f5387c8b.6ac678"]]},{"id":"f5387c8b.6ac678","type":"save","name":"update AnAI - l3-network.orchestration-status","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"orchestration-status\" value=\"PendingUpdate\" />","comments":"","outputs":1,"x":1445.77592086792,"y":6141.0418581962585,"z":"99faf548.31fd3","wires":[["d20488b7.54f5f8","6832d8a7.75e9e8","46e1f204.12633c"]]},{"id":"f5491b15.8a826","type":"block","name":"block","xml":"<block>","atomic":"false","outputs":1,"x":1912.9187965393066,"y":6141.327346324921,"z":"99faf548.31fd3","wires":[["97748f15.931678","3e0459f9.200e1e"]]},{"id":"97748f15.931678","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"An error occurred while updating l3-network.orchestration-status in AnAI\"/>","comments":"","x":2160.0628776550293,"y":6141.129821300507,"z":"99faf548.31fd3","wires":[]},{"id":"36a15b72.a0658c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":610.5582847595215,"y":3710.5745153427124,"z":"99faf548.31fd3","wires":[["6b5eeaf8.68d51c","dbd29e8d.9dd118"]]},{"id":"f3afb4a0.398f6","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":564.033878326416,"y":4565.322596788406,"z":"99faf548.31fd3","wires":[["4222d324.4898b4","461742ab.1d3484"]]},{"id":"f59af4d8.685088","type":"save","name":"Rollback AnAI - l3-network.orchestration-status","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"orchestration-status\" value=\"`$tmp.AnAI.l3network.orchestration-status`\" />","comments":"","outputs":1,"x":1727.0260772705078,"y":7277.312352180481,"z":"99faf548.31fd3","wires":[["a00f453a.858988","ff448016.b11eb8"]]},{"id":"b21b63dd.91c4d","type":"set","name":"set tmp.l3networkUpdate = 1","xml":"<set>\n<parameter name=\"tmp.l3networkUpdate\" value=\"1\" />\n","comments":"","x":2463.418788909912,"y":2281.064504623413,"z":"99faf548.31fd3","wires":[]},{"id":"c7a5fe9e.78c0c","type":"switchNode","name":"switch: tmp.start-address-match = 0","xml":"<switch test=\"`$tmp.start-address-match == 0`\">","comments":"","outputs":1,"x":1716.2402076721191,"y":2624.0289993286133,"z":"99faf548.31fd3","wires":[["37fb1c35.831964"]]},{"id":"84c63af2.77852","type":"set","name":"set tmp.start-address-match = 1","xml":"<set>\n<parameter name='tmp.start-address-match' value='1' />\n","comments":"","x":2467.7402305603027,"y":2569.279040336609,"z":"99faf548.31fd3","wires":[]},{"id":"6b5eeaf8.68d51c","type":"save","name":"delete relationship: vpn_binding","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\tAND related-to = vpn-binding\" >","comments":"","outputs":1,"x":882.1806716918945,"y":3710.862449645996,"z":"99faf548.31fd3","wires":[["e3e61d44.abb2f"]]},{"id":"5dfb8fb6.f3579","type":"for","name":"for loop i - PRELOAD vpn-bindings","xml":"<for index=\"i\" start=\"0\" end=\"`$preload-data.preload-network-topology-information.vpn-bindings_length`\">\n","comments":"","outputs":1,"x":1534.9068624708389,"y":3856.0290934244786,"z":"99faf548.31fd3","wires":[["76217cb4.f91a3c"]]},{"id":"76217cb4.f91a3c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1773.6846410963271,"y":3856.279095331827,"z":"99faf548.31fd3","wires":[["95a5f85e.7040b","2ccf674.f327f98","4f6f9141.e4ee6","49ced0c0.0d0a6"]]},{"id":"3a17d689.c8bcea","type":"save","name":"save relationship: vpn_bindings","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"vpn-binding\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"vpn-binding.vpn-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.vpn-binding-id`\" />","comments":"","outputs":1,"x":2924.879108428955,"y":4204.251133918762,"z":"99faf548.31fd3","wires":[["23d5f47a.fc9304","66ece968.e2a5f","980e97ec.e3025"]]},{"id":"5cfc33fd.ad0c9c","type":"switchNode","name":"switch ... PRELOAD vpn-bindings[]","xml":"<switch test=\"`$preload-data.preload-network-topology-information.vpn-bindings_length`\">","comments":"","outputs":1,"x":1535.2843055725098,"y":3812.6104068756104,"z":"99faf548.31fd3","wires":[["6446b344.0b3694"]]},{"id":"6446b344.0b3694","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1761.7287559509277,"y":3812.3881425857544,"z":"99faf548.31fd3","wires":[["7ee8f2a.3360e8c"]]},{"id":"7ee8f2a.3360e8c","type":"set","name":"set vpn-bindings[] = 0","xml":"<set>\n<parameter name=\"preload-data.preload-network-topology-information.vpn-bindings_length\" value=\"0\" />\n","comments":"","x":1950.284364912245,"y":3812.3881632486973,"z":"99faf548.31fd3","wires":[]},{"id":"eff4b893.59d03","type":"other","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2326.4190237257217,"y":3949.8783976236973,"z":"99faf548.31fd3","wires":[["4fe98a6a.aca81c"]]},{"id":"4fe98a6a.aca81c","type":"save","name":"query AnAI - vpn-bindings","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vpn-binding\" \n\t\tkey=\"vpn-binding.global-route-target = $preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target\" \n\t\tpfx=\"tmp.AnAI.vpn-binding\">","comments":"","outputs":1,"x":2530.9190199110244,"y":3949.6283985773716,"z":"99faf548.31fd3","wires":[["b501292d.6ed1d8","965ac69e.2f8b68","5693a5ae.52f284"]]},{"id":"b501292d.6ed1d8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2772.669058057997,"y":3997.128366152445,"z":"99faf548.31fd3","wires":[["6d1eda91.2e6a1c"]]},{"id":"965ac69e.2f8b68","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2778.1690618726943,"y":3949.6283651987706,"z":"99faf548.31fd3","wires":[["6d1eda91.2e6a1c"]]},{"id":"6d1eda91.2e6a1c","type":"block","name":"block","xml":"<block>","atomic":"false","outputs":1,"x":2925.6690618726943,"y":3996.878367106119,"z":"99faf548.31fd3","wires":[["6b6c53ae.e7e78c","85345bb9.7023d8"]]},{"id":"6b6c53ae.e7e78c","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query vpn-bindings n AnAI where global-route-target = ' + $preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target`\"/>","comments":"","x":3166.7686025831435,"y":3996.6282660166416,"z":"99faf548.31fd3","wires":[]},{"id":"95a5f85e.7040b","type":"switchNode","name":"switch: PRELOAD vpn-binding-id","xml":"<switch test=\"`$preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`\">","comments":"","outputs":1,"x":2069.169027540419,"y":3904.1283375422154,"z":"99faf548.31fd3","wires":[["1d812b6.bb0a9d5"]]},{"id":"1d812b6.bb0a9d5","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2289.6690351698135,"y":3903.8783384958897,"z":"99faf548.31fd3","wires":[["3d5e08d1.854308"]]},{"id":"3d5e08d1.854308","type":"set","name":"set tmp.vpn-binding-id","xml":"<set>\n<parameter name=\"tmp.vpn-binding-id\" value=\"`$preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`\" />\n","comments":"","x":2485.1690351698135,"y":3903.878339449564,"z":"99faf548.31fd3","wires":[]},{"id":"5693a5ae.52f284","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2778.0859031677246,"y":4098.294943809509,"z":"99faf548.31fd3","wires":[["a1289d1c.ed3668"]]},{"id":"a1289d1c.ed3668","type":"set","name":"set tmp.vpn-binding-id","xml":"<set>\n<parameter name=\"tmp.vpn-binding-id\" value=\"`$tmp.AnAI.vpn-binding.vpn-id`\" />\n","comments":"","x":2968.5859031677246,"y":4098.294943809509,"z":"99faf548.31fd3","wires":[]},{"id":"23d5f47a.fc9304","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3184.9519844055176,"y":4203.7267208099365,"z":"99faf548.31fd3","wires":[["122ef45b.214554"]]},{"id":"122ef45b.214554","type":"block","name":"block","xml":"<block>","atomic":"false","outputs":1,"x":3341.8448638916016,"y":4203.3628282547,"z":"99faf548.31fd3","wires":[["d0dbeeeb.6ef02","fb4e9cd8.b15bc","3651c046.062be"]]},{"id":"d0dbeeeb.6ef02","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.vpn-binding-id`\"/>","comments":"","x":3561.944404602051,"y":4203.112727165222,"z":"99faf548.31fd3","wires":[]},{"id":"94c7a9eb.736488","type":"switchNode","name":"switch: tmp.vpn-binding-id != NULL","xml":"<switch test=\"`$tmp.vpn-binding-id != ''`\">","comments":"","outputs":1,"x":2482.419101715088,"y":4204.294880867004,"z":"99faf548.31fd3","wires":[["5ec692d1.023e34"]]},{"id":"5ec692d1.023e34","type":"other","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2704.669105529785,"y":4204.294880867004,"z":"99faf548.31fd3","wires":[["3a17d689.c8bcea"]]},{"id":"d0a5b457.98849","type":"switchNode","name":"switch ... PRELOAD network-policy[]","xml":"<switch test=\"`$preload-data.preload-network-topology-information.network-policy_length`\">","comments":"","outputs":1,"x":1480.0854606628418,"y":4703.695333242416,"z":"99faf548.31fd3","wires":[["89fe2912.b7d1c"]]},{"id":"89fe2912.b7d1c","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1709.5299110412598,"y":4703.47306895256,"z":"99faf548.31fd3","wires":[["a56ffb2b.b423e8"]]},{"id":"a56ffb2b.b423e8","type":"set","name":"set network-policy[] = 0","xml":"<set>\n<parameter name='preload-data.preload-network-topology-information.network-policy_length' value='0' />\n","comments":"","x":1904.0855200025771,"y":4703.473089615503,"z":"99faf548.31fd3","wires":[]},{"id":"aeefcea0.4d5f5","type":"for","name":"for loop i - PRELOAD network-policy","xml":"<for index=\"i\" start=\"0\" end=\"`$preload-data.preload-network-topology-information.network-policy_length`\">\n","comments":"","outputs":1,"x":1479.4427223205566,"y":4749.266724348068,"z":"99faf548.31fd3","wires":[["b24a775e.99b738"]]},{"id":"91e9b173.465ed","type":"save","name":"save relationship: network-policy","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"network-policy\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"network-policy.network-policy-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.network-policy.network-policy-id`\" />","comments":"","outputs":1,"x":2812.8556327819824,"y":4948.453424215317,"z":"99faf548.31fd3","wires":[["a1914926.c0666","71f2c219.19753c","e8b59d42.c0eab8"]]},{"id":"b24a775e.99b738","type":"switchNode","name":"switch: PRELOAD network-policy-fqdn != NULL","xml":"<switch test=\"`$preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn != NULL`\">","comments":"","outputs":1,"x":1837.9549200269912,"y":4749.3659786383305,"z":"99faf548.31fd3","wires":[["671f99c0.ad63b"]]},{"id":"671f99c0.ad63b","type":"other","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2118.704920026991,"y":4749.6159786383305,"z":"99faf548.31fd3","wires":[["8729b44c.2d0be8"]]},{"id":"8729b44c.2d0be8","type":"save","name":"query AnAI - network-policy","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"network-policy\" \n\t\tkey=\"network-policy.network-policy-fqdn = $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn\"  \n\t\tpfx=\"tmp.AnAI.network-policy\" >","comments":"","outputs":1,"x":2318.7049560546875,"y":4749.61589884758,"z":"99faf548.31fd3","wires":[["3ffbea82.fd9536","12ae7a61.8768ee","ca38600c.0020d8"]]},{"id":"3ffbea82.fd9536","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2582.7049882676865,"y":4790.365820964178,"z":"99faf548.31fd3","wires":[["9457d779.d039a8"]]},{"id":"12ae7a61.8768ee","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2588.204992082384,"y":4749.865820010504,"z":"99faf548.31fd3","wires":[["9457d779.d039a8"]]},{"id":"9457d779.d039a8","type":"block","name":"block","xml":"<block>","atomic":"false","outputs":1,"x":2737.704992082384,"y":4790.115821917852,"z":"99faf548.31fd3","wires":[["9163a003.11c3a","1d9e30c4.0c4247"]]},{"id":"9163a003.11c3a","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`\"/>","comments":"","x":2953.804532792833,"y":4789.865720828375,"z":"99faf548.31fd3","wires":[]},{"id":"a1914926.c0666","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3055.928508758545,"y":4947.929011106491,"z":"99faf548.31fd3","wires":[["f21e8ec.4a2e97"]]},{"id":"f21e8ec.4a2e97","type":"block","name":"block","xml":"<block>","atomic":"false","outputs":1,"x":3196.821388244629,"y":4947.565118551254,"z":"99faf548.31fd3","wires":[["d905fa8b.6faa88","113e310a.374617"]]},{"id":"d905fa8b.6faa88","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.network-policy.network-policy-id`\"/>","comments":"","x":3427.920928955078,"y":4947.315017461777,"z":"99faf548.31fd3","wires":[]},{"id":"4222d324.4898b4","type":"save","name":"delete relationship: network-policy","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t AND related-to = network-policy\" >","comments":"","outputs":1,"x":852.2481575012207,"y":4565.131925106049,"z":"99faf548.31fd3","wires":[["f621a0f6.517d5"]]},{"id":"9fa0a0b1.0a386","type":"set","name":"set tmp.local.network-id","xml":"<set>\n<parameter name=\"tmp.local.network-id\" value=\"`$tmp.AnAI.l3network.network-id`\" />\n","comments":"","x":2411.7919311523438,"y":2961.6719512939453,"z":"99faf548.31fd3","wires":[]},{"id":"9e765f6.18a54a","type":"comment","name":"query l3-network gets all the subnets and relationships for free","info":"","comments":"","x":668.3274421691895,"y":652.7670316696167,"z":"99faf548.31fd3","wires":[]},{"id":"2ccf674.f327f98","type":"switchNode","name":"switch: PRELOAD route-target != NULL","xml":"<switch test=\"`$preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target != ''`\" >","comments":"","outputs":1,"x":2090.506101820204,"y":3949.4339024225865,"z":"99faf548.31fd3","wires":[["eff4b893.59d03"]]},{"id":"203bed4.3354e12","type":"set","name":"initialize tmp variables, x, tmp.error-message, tmp.l3networkUpdate, execute_failure","xml":"<set>\n\t<parameter name='x' value='0' />\n\t<parameter name='tmp.error-message' value='' />\n\t<parameter name='execute_failure' value='false' />\n\t<parameter name='tmp.l3networkUpdate' value='0' />","comments":"","x":735.9704895019531,"y":1014.6836652755737,"z":"99faf548.31fd3","wires":[]},{"id":"ca38600c.0020d8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2587.4705848693848,"y":4947.957292318344,"z":"99faf548.31fd3","wires":[["91e9b173.465ed"]]},{"id":"4f6f9141.e4ee6","type":"set","name":"unset tmp.vpn-binding-id","xml":"<set>\n<parameter name=\"tmp.vpn-binding-id\" value=\"\" />\n","comments":"","x":2043.2918379041885,"y":3856.362458864847,"z":"99faf548.31fd3","wires":[]},{"id":"e3e61d44.abb2f","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1113.4584884643555,"y":3710.445677757263,"z":"99faf548.31fd3","wires":[["350799e9.fe8dae"]]},{"id":"350799e9.fe8dae","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1273.1952629089355,"y":3711.1370153427124,"z":"99faf548.31fd3","wires":[["33acc231.92afd6","3695e1f7.f39ba6"]]},{"id":"33acc231.92afd6","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"An error occurred while deleting l3-network vpn-binding relationship from AnAI\"/>","comments":"","x":1491.8752326965332,"y":3711.445852279663,"z":"99faf548.31fd3","wires":[]},{"id":"f621a0f6.517d5","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1076.383129119873,"y":4564.715136051178,"z":"99faf548.31fd3","wires":[["8b976e5b.81b298"]]},{"id":"8b976e5b.81b298","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1253.1199035644531,"y":4564.406473636627,"z":"99faf548.31fd3","wires":[["1802fcbe.a809bb","ab2d703d.ad753"]]},{"id":"1802fcbe.a809bb","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"An error occurred while deleting l3-network network-policy relationship from AnAI in preparation to regenerate the network-policy relationship from PRELOAD.\"/>","comments":"","x":1477.133129119873,"y":4564.715136051178,"z":"99faf548.31fd3","wires":[]},{"id":"a17c212d.6d8c98","type":"switchNode","name":"switch : tmp.l3network.status.updated = 1","xml":"<switch test=\"`$tmp.l3network.status.updated == 1`\">\n","comments":"","outputs":1,"x":1210.9943389892578,"y":7277.22934627533,"z":"99faf548.31fd3","wires":[["e944b625.a0c928"]]},{"id":"e944b625.a0c928","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1463.6609725952148,"y":7277.506934165955,"z":"99faf548.31fd3","wires":[["f59af4d8.685088"]]},{"id":"602e376c.c4711","type":"set","name":"set tmp.l3network.status.updated = 1","xml":"<set>\n<parameter name='tmp.l3network.status.updated' value='1' />\n","comments":"","x":1994.0300331115723,"y":6244.672054767609,"z":"99faf548.31fd3","wires":[]},{"id":"6832d8a7.75e9e8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1741.958667755127,"y":6244.945868015289,"z":"99faf548.31fd3","wires":[["602e376c.c4711"]]},{"id":"76253b37.b24f94","type":"for","name":"for loop z - tmp.AnAI.l3network.relationship-list.relationship[]","xml":"<for index=\"z\" start=\"0\" end=\"`$tmp.AnAI.l3network.relationship-list.relationship_length`\">\n","comments":"","outputs":1,"x":1264.92280960083,"y":6370.695941925049,"z":"99faf548.31fd3","wires":[["c1e34c4f.182718"]]},{"id":"c1e34c4f.182718","type":"switchNode","name":"switch: relationship[].related-to","xml":"<switch test=\"`$tmp.AnAI.l3network.relationship-list.relationship[$z].related-to`\">","comments":"","outputs":1,"x":1689.1727485656738,"y":6370.4459409713745,"z":"99faf548.31fd3","wires":[["b3135a2c.45dc","e3320fe5.f246","56bfd6a9.df74c8"]]},{"id":"b3135a2c.45dc","type":"other","name":"vpn-binding","xml":"<outcome value='vpn-binding'>\n","comments":"","outputs":1,"x":1964.6727485656738,"y":6370.6959409713745,"z":"99faf548.31fd3","wires":[["edb8cf05.bcac58"]]},{"id":"cb67a904.b6e338","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":931.9227409362793,"y":6370.195941925049,"z":"99faf548.31fd3","wires":[["76253b37.b24f94","1397b2f8.aa246d","a17c212d.6d8c98","d982bcdf.e05c5","ccdc8502.0da05"]]},{"id":"338ee831.4b10d8","type":"save","name":"Rollback to save relationship: vpn_binding","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"vpn-binding\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"vpn-binding.vpn-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`\" />","comments":"","outputs":1,"x":2721.7561378479004,"y":6370.6959409713745,"z":"99faf548.31fd3","wires":[["e47e5a64.5dd5b8","c8eb5da8.a0d2f8"]]},{"id":"e47e5a64.5dd5b8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2974.829013824463,"y":6370.171527862549,"z":"99faf548.31fd3","wires":[["c9b0d245.a678c8"]]},{"id":"c9b0d245.a678c8","type":"set","name":"set: tmp.rollback.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.rollback.error-message\" value=\"`'An error occurred during rollback of l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`\"/>","comments":"","x":3214.8214149475098,"y":6369.557363510132,"z":"99faf548.31fd3","wires":[]},{"id":"15d373be.656d44","type":"set","name":"set tmp.network-policy.updated = 1","xml":"<set>\n<parameter name='tmp.network-policy.updated' value='1' />\n","comments":"","x":3301.2560691833496,"y":5038.136010885239,"z":"99faf548.31fd3","wires":[]},{"id":"6b825d42.c37bfc","type":"set","name":"set tmp.vpn-binding.updated = 1","xml":"<set>\n<parameter name='tmp.vpn-binding.updated' value='1' />\n","comments":"","x":3411.803798675537,"y":4346.278992652893,"z":"99faf548.31fd3","wires":[]},{"id":"71f2c219.19753c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":3062.5060691833496,"y":5038.386010885239,"z":"99faf548.31fd3","wires":[["15d373be.656d44"]]},{"id":"66ece968.e2a5f","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":3188.0537910461426,"y":4346.278992652893,"z":"99faf548.31fd3","wires":[["6b825d42.c37bfc"]]},{"id":"e3320fe5.f246","type":"other","name":"network-policy","xml":"<outcome value='network-policy'>\n","comments":"","outputs":1,"x":1975.6250190734863,"y":6519.51709651947,"z":"99faf548.31fd3","wires":[["380a603e.477d1"]]},{"id":"87fc3a57.8fef78","type":"save","name":"Rollback to save relationship: network-policy","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"network-policy\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"network-policy.network-policy-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`\" />","comments":"","outputs":1,"x":2770.7082862854004,"y":6518.85072851181,"z":"99faf548.31fd3","wires":[["9087c57b.d4e668","8d4f07c3.f8ed6"]]},{"id":"9087c57b.d4e668","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3030.781162261963,"y":6518.326315402985,"z":"99faf548.31fd3","wires":[["15f4af6d.bab1f9"]]},{"id":"15f4af6d.bab1f9","type":"set","name":"tmp.rollback.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.rollback.error-message\" value=\"`'An error occurred during rollback of l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`\"/>","comments":"","x":3246.7734870910645,"y":6518.71190404892,"z":"99faf548.31fd3","wires":[]},{"id":"380a603e.477d1","type":"switchNode","name":"switch:  tmp.network-policy.updated == 1","xml":"<switch test=\"`$tmp.network-policy.updated == 1`\">","comments":"","outputs":1,"x":2246.958507537842,"y":6519.517298698425,"z":"99faf548.31fd3","wires":[["518200d0.33825"]]},{"id":"edb8cf05.bcac58","type":"switchNode","name":"switch:  tmp.vpn-binding.updated == 1","xml":"<switch test=\"`$tmp.vpn-binding.updated == 1`\">","comments":"","outputs":1,"x":2206.9585151672363,"y":6370.517340660095,"z":"99faf548.31fd3","wires":[["c05563d0.07e468"]]},{"id":"c05563d0.07e468","type":"other","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2440.9585151672363,"y":6370.517340660095,"z":"99faf548.31fd3","wires":[["338ee831.4b10d8"]]},{"id":"518200d0.33825","type":"other","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2491.9585151672363,"y":6519.517340660095,"z":"99faf548.31fd3","wires":[["87fc3a57.8fef78"]]},{"id":"acaf4bf.d8e9e38","type":"for","name":"for loop i - tmp.AnAI.l3network.subnets.subnet[]","xml":"<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">\n","comments":"","outputs":1,"x":1770.934658050537,"y":6874.695291519165,"z":"99faf548.31fd3","wires":[["4c0539c1.07c51"]]},{"id":"3e3f642b.b4579c","type":"switchNode","name":"switch: tmp.subnetRollback[].type","xml":"<switch test=\"`$tmp.subnetRollback[$j].type`\">","comments":"","outputs":1,"x":3087.7078819274902,"y":6874.983587265015,"z":"99faf548.31fd3","wires":[["51c12107.579138","4b1b03f5.a74b4c"]]},{"id":"51c12107.579138","type":"outcomeTrue","name":"delete","xml":"<outcome value='delete'>\n","comments":"","outputs":1,"x":3326.4223594665527,"y":6874.832225799561,"z":"99faf548.31fd3","wires":[["6d2c5b80.49b5ac"]]},{"id":"4b1b03f5.a74b4c","type":"outcomeTrue","name":"update","xml":"<outcome value='update'>\n","comments":"","outputs":1,"x":3327.9936866760254,"y":6920.404623031616,"z":"99faf548.31fd3","wires":[["4783b0f7.1268"]]},{"id":"6d2c5b80.49b5ac","type":"save","name":"Rollback AnAI delete - l3network.subnets.subnet","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.subnetRollback[$j].subnet-id\" >\n<parameter name=\"orchestration-status\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`\" />\n\t\t","comments":"","outputs":1,"x":3608.8510246276855,"y":6874.4051876068115,"z":"99faf548.31fd3","wires":[["7c973dca.78763c","d960b59c.11f63"]]},{"id":"1e801387.42aacc","type":"outcomeTrue","name":"create","xml":"<outcome value='create'>\n","comments":"","outputs":1,"x":2409.4002265930176,"y":7107.0330419540405,"z":"99faf548.31fd3","wires":[["f1fa3232.1abd7"]]},{"id":"f1fa3232.1abd7","type":"delete","name":"Rollback AnAI create -  l3-network.subnets.subnet","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.subnetRollback[$j].subnet-id\" >","comments":"","outputs":1,"x":2695.685634613037,"y":7106.010865211487,"z":"99faf548.31fd3","wires":[["9271cba0.7e82a8","ddfcf45f.b6b89"]]},{"id":"1397b2f8.aa246d","type":"for","name":"for loop j - subnetRollback[]","xml":"<for index=\"j\" start=\"0\" end=\"`$x`\">\n","comments":"","outputs":1,"x":1175.220417022705,"y":6825.765031814575,"z":"99faf548.31fd3","wires":[["882aa706.c87ac"]]},{"id":"4c0539c1.07c51","type":"switchNode","name":"switch: subnet-id  tmp.AnAI.l3network.subnets.subnet[] == tmp.subnetRollback[]","xml":"<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-id == $tmp.subnetRollback[$j].subnet-id`\">","comments":"","outputs":1,"x":2273.934825897217,"y":6874.98072719574,"z":"99faf548.31fd3","wires":[["b72f3ec7.5c0c58"]]},{"id":"b72f3ec7.5c0c58","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2651.6492233276367,"y":6875.40908908844,"z":"99faf548.31fd3","wires":[["f921cbd2.fc183"]]},{"id":"4783b0f7.1268","type":"save","name":"rollback AnAI update - l3-network.subnets.subnet ","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$j].subnet-id\" >\n<parameter name=\"subnet-name\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name`\"/>\n<parameter name=\"gateway-address\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].gateway-address`\"/>\n<parameter name=\"cidr-mask\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].cidr-mask`\"/>\n<parameter name=\"dhcp-start\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-start`\"/>\n<parameter name=\"dhcp-end\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-end`\"/>\n<parameter name=\"dhcp-enabled\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-enabled`\"/>\n<parameter name=\"orchestration-status\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`\" />\n\t\t","comments":"","outputs":1,"x":3610.6495933532715,"y":6919.765399932861,"z":"99faf548.31fd3","wires":[["59a58bb0.48d64c","88059f52.82953"]]},{"id":"3e0459f9.200e1e","type":"returnSuccess","name":"set execute_failure = true","xml":"<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n","comments":"","x":2169.5656242370605,"y":6184.648462772369,"z":"99faf548.31fd3","wires":[]},{"id":"7c735817.29606","type":"outcomeTrue","name":"true","xml":"<outcome value=\"true\">","outputs":1,"x":720.5178565979004,"y":6370.183808326721,"z":"99faf548.31fd3","wires":[["cb67a904.b6e338"]]},{"id":"3991c105.213bc6","type":"switchNode","name":"switch: execute_failure","xml":"<switch test=\"`$execute_failure`\">","comments":"","outputs":1,"x":577.9109382629395,"y":2504.4221019744873,"z":"99faf548.31fd3","wires":[["102e2893.d19faf"]]},{"id":"102e2893.d19faf","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":780.625186920166,"y":2504.422124862671,"z":"99faf548.31fd3","wires":[["5c01494c.b5ff3"]]},{"id":"f2815bd8.a2a3e8","type":"switchNode","name":"switch: execute_failure","xml":"<switch test=\"`$execute_failure`\">","comments":"","outputs":1,"x":978.9467010498047,"y":2038.136121749878,"z":"99faf548.31fd3","wires":[["7ad92bd4.cef314"]]},{"id":"7ad92bd4.cef314","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1175.9108619689941,"y":2038.3860549926758,"z":"99faf548.31fd3","wires":[["be029b56.cf1df"]]},{"id":"7539d8e7.6520d8","type":"set","name":"set k, n max + 1","xml":"<set>\n\t<parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />\n\t<parameter name='n' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />","comments":"","x":2466.911075592041,"y":2036.386194229126,"z":"99faf548.31fd3","wires":[]},{"id":"f7643660.4bcd8","type":"switchNode","name":"switch: execute_failure","xml":"<switch test=\"`$execute_failure`\">","comments":"","outputs":1,"x":534.875186920166,"y":3648.529046058655,"z":"99faf548.31fd3","wires":[["f692f6df.50d63"]]},{"id":"f692f6df.50d63","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":737.5894355773926,"y":3648.5290689468384,"z":"99faf548.31fd3","wires":[["36a15b72.a0658c"]]},{"id":"af7b04ae.883c9","type":"switchNode","name":"switch: execute_failure","xml":"<switch test=\"`$execute_failure`\">","comments":"","outputs":1,"x":513.9584999084473,"y":6370.612001419067,"z":"99faf548.31fd3","wires":[["7c735817.29606"]]},{"id":"2a9c6277.2cb43e","type":"switchNode","name":"switch: execute_failure","xml":"<switch test=\"`$execute_failure`\">","comments":"","outputs":1,"x":520.8871040344238,"y":6140.076347351074,"z":"99faf548.31fd3","wires":[["8525e190.d98848"]]},{"id":"8525e190.d98848","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":723.6013526916504,"y":6140.076370239258,"z":"99faf548.31fd3","wires":[["c9a6b2f7.6419f"]]},{"id":"95446770.fe01d8","type":"switchNode","name":"switch: texecute_failure","xml":"<switch test=\"`$execute_failure`\">","comments":"","outputs":1,"x":546.680736541748,"y":4488.695550203323,"z":"99faf548.31fd3","wires":[["b7a849c7.6c009"]]},{"id":"b7a849c7.6c009","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":749.3949851989746,"y":4488.695573091507,"z":"99faf548.31fd3","wires":[["f3afb4a0.398f6"]]},{"id":"dbd29e8d.9dd118","type":"switchNode","name":"switch: execute_failure","xml":"<switch test=\"`$execute_failure`\">","comments":"","outputs":1,"x":866.1252174377441,"y":3812.6955308914185,"z":"99faf548.31fd3","wires":[["286dd957.a2c98e"]]},{"id":"286dd957.a2c98e","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1068.8394660949707,"y":3812.695553779602,"z":"99faf548.31fd3","wires":[["12b40a45.433596"]]},{"id":"12b40a45.433596","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1247.7918434143066,"y":3812.529022216797,"z":"99faf548.31fd3","wires":[["5cfc33fd.ad0c9c","5dfb8fb6.f3579"]]},{"id":"3695e1f7.f39ba6","type":"returnSuccess","name":"set execute_failure = true","xml":"<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n","comments":"","x":1496.696475982666,"y":3753.6480884552,"z":"99faf548.31fd3","wires":[]},{"id":"85345bb9.7023d8","type":"returnSuccess","name":"set execute_failure = true","xml":"<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n","comments":"","x":3172.458599090576,"y":4040.8621883392334,"z":"99faf548.31fd3","wires":[]},{"id":"49ced0c0.0d0a6","type":"switchNode","name":"switch: execute_failure","xml":"<switch test=\"`$execute_failure`\">","comments":"","outputs":1,"x":2036.6253547668457,"y":4203.029056549072,"z":"99faf548.31fd3","wires":[["62af2ab9.276e04"]]},{"id":"62af2ab9.276e04","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2239.3396034240723,"y":4203.029079437256,"z":"99faf548.31fd3","wires":[["94c7a9eb.736488"]]},{"id":"fb4e9cd8.b15bc","type":"returnSuccess","name":"set execute_failure = true","xml":"<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n","comments":"","x":3568.5535316467285,"y":4288.909888267517,"z":"99faf548.31fd3","wires":[]},{"id":"3651c046.062be","type":"set","name":"set i = max + 1","xml":"<set>\n  <parameter name=\"i\" value = \"`$preload-data.preload-network-topology-information.vpn-bindings_length + 1`\"  />\n\n","comments":"","x":3535.696491241455,"y":4245.814639091492,"z":"99faf548.31fd3","wires":[]},{"id":"461742ab.1d3484","type":"switchNode","name":"switch: execute_failure","xml":"<switch test=\"`$execute_failure`\">","comments":"","outputs":1,"x":827.5140342712402,"y":4705.084690332413,"z":"99faf548.31fd3","wires":[["30bb23db.ab8e5c"]]},{"id":"30bb23db.ab8e5c","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1030.2282829284668,"y":4705.084713220596,"z":"99faf548.31fd3","wires":[["f76e423b.ce48b"]]},{"id":"f76e423b.ce48b","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1216.4029350280762,"y":4704.0288207530975,"z":"99faf548.31fd3","wires":[["d0a5b457.98849","aeefcea0.4d5f5"]]},{"id":"ab2d703d.ad753","type":"returnSuccess","name":"set execute_failure = true","xml":"<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n","comments":"","x":1482.7360343933105,"y":4610.877638101578,"z":"99faf548.31fd3","wires":[]},{"id":"1d9e30c4.0c4247","type":"returnSuccess","name":"set execute_failure = true","xml":"<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n","comments":"","x":2962.291820526123,"y":4834.029151678085,"z":"99faf548.31fd3","wires":[]},{"id":"113e310a.374617","type":"returnSuccess","name":"set execute_failure = true","xml":"<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n","comments":"","x":3438.5779151916504,"y":4991.3148629665375,"z":"99faf548.31fd3","wires":[]},{"id":"882aa706.c87ac","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1434.8396949768066,"y":6824.0276737213135,"z":"99faf548.31fd3","wires":[["acaf4bf.d8e9e38","d4f31adc.46316","c9de33ed.33cd18"]]},{"id":"1ed364f.3bfd91b","type":"set","name":"set: tmp.rollbck.match = 1","xml":"<set>\n\t<parameter name=\"tmp.rollback.match\" value=\"1\"/>","comments":"","x":3069.9826698303223,"y":6999.813808441162,"z":"99faf548.31fd3","wires":[]},{"id":"f921cbd2.fc183","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2818.9824028015137,"y":6874.813808441162,"z":"99faf548.31fd3","wires":[["3e3f642b.b4579c","1ed364f.3bfd91b"]]},{"id":"d4f31adc.46316","type":"switchNode","name":"switch: tmp.rollback.match == 0","xml":"<switch test=\"`$tmp.rollback.match == 0`\">","comments":"","outputs":1,"x":1723.2680702209473,"y":7107.600283622742,"z":"99faf548.31fd3","wires":[["ab4ed8f.d749728"]]},{"id":"c53e5930.c23958","type":"switchNode","name":"switch: tmp.subnetRollback[].type","xml":"<switch test=\"`$tmp.subnetRollback[$j].type`\">","comments":"","outputs":1,"x":2175.982410430908,"y":7106.885443687439,"z":"99faf548.31fd3","wires":[["1e801387.42aacc"]]},{"id":"7c973dca.78763c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3898.6967964172363,"y":6874.67115688324,"z":"99faf548.31fd3","wires":[["21f8d2e6.30fa16"]]},{"id":"21f8d2e6.30fa16","type":"set","name":"set: tmp.rollback.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.rollback.error-message\" value=\"`'failed to rollback the subnet.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`\"/>","comments":"","x":4163.689208984375,"y":6874.056761741638,"z":"99faf548.31fd3","wires":[]},{"id":"bfc1e7fc.7a9658","type":"set","name":"set: tmp.rollback.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.rollback.error-message\" value=\"`'failed to rollback the subnet attributes update in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`\"/>","comments":"","x":4166.554096221924,"y":6919.528549194336,"z":"99faf548.31fd3","wires":[]},{"id":"12a29993.21784e","type":"set","name":"set: tmp.rollback.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.rollback.error-message\" value=\"`'failed to rollback to delete subnet from AnAI where subnet-id = ' + $tmp.subnetRollback[$j].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`\"/>","comments":"","x":3214.696720123291,"y":7106.170809745789,"z":"99faf548.31fd3","wires":[]},{"id":"59a58bb0.48d64c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3898.6966133117676,"y":6919.813876152039,"z":"99faf548.31fd3","wires":[["bfc1e7fc.7a9658"]]},{"id":"9271cba0.7e82a8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2983.8396492004395,"y":7105.599450111389,"z":"99faf548.31fd3","wires":[["12a29993.21784e"]]},{"id":"34cb7d8.6b99182","type":"set","name":"set: tmp.rollback.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.rollback.error-message\" value=\"`'failed to rollback l3network.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`\"/>","comments":"","x":2240.839527130127,"y":7276.099722862244,"z":"99faf548.31fd3","wires":[]},{"id":"a00f453a.858988","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2002.9824562072754,"y":7276.528363227844,"z":"99faf548.31fd3","wires":[["34cb7d8.6b99182"]]},{"id":"72b3fa21.56287c","type":"comment","name":"----  ROLLBACK STARTS HERE  ----","info":"","comments":"","x":578.1489372253418,"y":6323.409649848938,"z":"99faf548.31fd3","wires":[]},{"id":"3060e5d9.8b532a","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving new subnet in AnAI with subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`\"/>","comments":"","x":3167.220527648926,"y":3095.624238014221,"z":"99faf548.31fd3","wires":[]},{"id":"c1e8109.33219f","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while updating subnet status to PendingDelete in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`\"/>","comments":"","x":2488.1965522766113,"y":2079.1003017425537,"z":"99faf548.31fd3","wires":[]},{"id":"c9de33ed.33cd18","type":"set","name":"set: tmp.rollbck.match = 0","xml":"<set>\n\t<parameter name=\"tmp.rollback.match\" value=\"0\"/>","comments":"","x":1703.2681007385254,"y":6824.314642906189,"z":"99faf548.31fd3","wires":[]},{"id":"48e77510.8d6f74","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2739.0777473449707,"y":3098.957498550415,"z":"99faf548.31fd3","wires":[["7ed587ce.58bb7"]]},{"id":"791db7cd.110f5","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2070.0537147521973,"y":2080.719367980957,"z":"99faf548.31fd3","wires":[["85718701.a91ff"]]},{"id":"980e97ec.e3025","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3193.982349395752,"y":4246.576512336731,"z":"99faf548.31fd3","wires":[["122ef45b.214554"]]},{"id":"e8b59d42.c0eab8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3064.4823265075684,"y":4993.933755636215,"z":"99faf548.31fd3","wires":[[]]},{"id":"46e1f204.12633c","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1746.1489906311035,"y":6183.100154399872,"z":"99faf548.31fd3","wires":[["f5491b15.8a826"]]},{"id":"fd434a74.035768","type":"switchNode","name":"switch: AnAI == INPUT - network-name","xml":"<switch test=\"`$tmp.AnAI.l3network.network-name == $network-data.network-topology.network-topology-identifier-structure.network-name`\">","comments":"","outputs":1,"x":600.8037414550781,"y":836.7987289428711,"z":"99faf548.31fd3","wires":[["b58edb46.eb0908"]]},{"id":"b58edb46.eb0908","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":848.0537414550781,"y":836.8027257919312,"z":"99faf548.31fd3","wires":[["f18b0c90.7bbd6"]]},{"id":"f18b0c90.7bbd6","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"`'The input network-name,' + network-topology-operation-input.network-request-information.network-name + ', does not match what is returned from AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`\" />","comments":"","x":1010.6925163269043,"y":836.6917133331299,"z":"99faf548.31fd3","wires":[]},{"id":"5872c2e1.fd902c","type":"switchNode","name":"switch: AnAI == INPUT - network-type","xml":"<switch test=\"`$tmp.AnAI.l3network.network-type == $network-data.network-topology.network-topology-identifier-structure.network-type`\">","comments":"","outputs":1,"x":594.517993927002,"y":880.0844306945801,"z":"99faf548.31fd3","wires":[["2e62ccf9.7369f4"]]},{"id":"2e62ccf9.7369f4","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":848.767993927002,"y":880.0884275436401,"z":"99faf548.31fd3","wires":[["86d72b8.7dd3d58"]]},{"id":"86d72b8.7dd3d58","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"`'The input network-type,' + network-topology-operation-input.network-request-information.network-type + ', does not match what is returned from AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`\" />","comments":"","x":1011.4067687988281,"y":879.9774150848389,"z":"99faf548.31fd3","wires":[]},{"id":"4cf6fa1f.47b03c","type":"switchNode","name":"switch: AnAI == PRELOAD - network-type","xml":"<switch test=\"`$tmp.AnAI.l3network.network-type == $preload-data.preload-network-topology-information.network-topology-identifier.network-type`\">","comments":"","outputs":1,"x":609.6609191894531,"y":970.0844240188599,"z":"99faf548.31fd3","wires":[["f0a901b3.35778"]]},{"id":"f0a901b3.35778","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":865.9109191894531,"y":970.0884208679199,"z":"99faf548.31fd3","wires":[["b4a265e7.43d6b8"]]},{"id":"b4a265e7.43d6b8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"`'No preload network found with network-type = ' + $tmp.AnAI.l3network.network-type + ' in SDNC'`\" />","comments":"","x":1028.5496940612793,"y":969.9774084091187,"z":"99faf548.31fd3","wires":[]},{"id":"ab4ed8f.d749728","type":"other","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1943.0896186828613,"y":7107.655534744263,"z":"99faf548.31fd3","wires":[["c53e5930.c23958"]]},{"id":"8d4f07c3.f8ed6","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3039.041706085205,"y":6557.945352077484,"z":"99faf548.31fd3","wires":[["15f4af6d.bab1f9"]]},{"id":"c8eb5da8.a0d2f8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2982.041706085205,"y":6410.611609458923,"z":"99faf548.31fd3","wires":[["c9b0d245.a678c8"]]},{"id":"d960b59c.11f63","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3906.708564758301,"y":6829.4445104599,"z":"99faf548.31fd3","wires":[["21f8d2e6.30fa16"]]},{"id":"88059f52.82953","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3906.3751907348633,"y":6964.77800655365,"z":"99faf548.31fd3","wires":[["bfc1e7fc.7a9658"]]},{"id":"ddfcf45f.b6b89","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2992.3752784729004,"y":7147.944578170776,"z":"99faf548.31fd3","wires":[["12a29993.21784e"]]},{"id":"ff448016.b11eb8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2010.7084999084473,"y":7318.777847290039,"z":"99faf548.31fd3","wires":[["34cb7d8.6b99182"]]},{"id":"f2c572bd.81ebb","type":"switchNode","name":"switch ... tmp.AnAI.l3network.subnets.subnet[]","xml":"<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">","comments":"","outputs":1,"x":617.8037414550781,"y":1056.219388961792,"z":"99faf548.31fd3","wires":[["fb903b2f.603ee8"]]},{"id":"fb903b2f.603ee8","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":888.2481918334961,"y":1055.997124671936,"z":"99faf548.31fd3","wires":[["a45e56d9.99242"]]},{"id":"a45e56d9.99242","type":"set","name":"set tmp.AnAI.l3network.subnets.subnet[] = 0","xml":"<set>\n<parameter name=\"tmp.AnAI.l3network.subnets.subnet_length\" value=\"0\" />\n","comments":"","x":1145.8038007948135,"y":1055.9971453348794,"z":"99faf548.31fd3","wires":[]},{"id":"c14d77b1.f2f7c8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":557.9108467102051,"y":5487.767111301422,"z":"99faf548.31fd3","wires":[["3956dd79.c084b2","425f0d8c.c1ee44"]]},{"id":"aedd7d7d.b1ce78","type":"switchNode","name":"switch ... PRELOAD route-table-reference[]","xml":"<switch test=\"`$preload-data.preload-network-topology-information.route-table-reference_length`\">","comments":"","outputs":1,"x":1505.2124519348145,"y":5626.140190601349,"z":"99faf548.31fd3","wires":[["17dc8ddf.09e272"]]},{"id":"17dc8ddf.09e272","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1761.9068794250488,"y":5625.917680263519,"z":"99faf548.31fd3","wires":[["aacd6fd8.a16c2"]]},{"id":"aacd6fd8.a16c2","type":"set","name":"set route-table-reference[] = 0","xml":"<set>\n<parameter name='preload-data.preload-network-topology-information.route-table-reference_length' value='0' />\n","comments":"","x":1976.4624883863662,"y":5625.917700926462,"z":"99faf548.31fd3","wires":[]},{"id":"e0f430f6.63b6a8","type":"for","name":"for loop i - PRELOAD route-table-reference","xml":"<for index=\"i\" start=\"0\" end=\"`$preload-data.preload-network-topology-information.route-table-reference_length`\">\n","comments":"","outputs":1,"x":1504.8197059631348,"y":5671.711480617523,"z":"99faf548.31fd3","wires":[["a8fb8dec.01b2c"]]},{"id":"b7c9330.00b54d","type":"save","name":"save relationship: network-policy","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"route-table-reference\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"route-table-reference.route-table-reference-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.route-table-reference.route-table-reference-id`\" />","comments":"","outputs":1,"x":2937.2326011657715,"y":5870.898035526276,"z":"99faf548.31fd3","wires":[["eb723736.ee1f9","48189378.2e324c","2bcbf9cd.81d636"]]},{"id":"a8fb8dec.01b2c","type":"switchNode","name":"switch: PRELOAD route-table-reference-fqdn != NULL","xml":"<switch test=\"`$preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn != NULL`\">","comments":"","outputs":1,"x":1915.5819129943848,"y":5671.810601711273,"z":"99faf548.31fd3","wires":[["76fa4efe.1b099"]]},{"id":"76fa4efe.1b099","type":"other","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2201.3319206237793,"y":5672.060601711273,"z":"99faf548.31fd3","wires":[["e2be0c8c.4da208"]]},{"id":"e2be0c8c.4da208","type":"save","name":"query AnAI - route-table-reference","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"route-table-reference\" \n\t\tkey=\"route-table-reference.route-table-reference-fqdn = $preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn\" \n\t\tpfx=\"tmp.AnAI.route-table-reference\">","comments":"","outputs":1,"x":2419.510711669922,"y":5672.060549736023,"z":"99faf548.31fd3","wires":[["eea7c76d.c86c","73b0557f.a6c464","37524b00.463986"]]},{"id":"eea7c76d.c86c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2707.0819566514756,"y":5712.810432275137,"z":"99faf548.31fd3","wires":[["4d042141.6192b"]]},{"id":"73b0557f.a6c464","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2712.581960466173,"y":5672.310431321463,"z":"99faf548.31fd3","wires":[["4d042141.6192b"]]},{"id":"4d042141.6192b","type":"block","name":"block","xml":"<block>","atomic":"false","outputs":1,"x":2862.081960466173,"y":5712.560433228811,"z":"99faf548.31fd3","wires":[["9c651ed9.3c54e8","d4bd34a1.1cbc28"]]},{"id":"9c651ed9.3c54e8","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`\"/>","comments":"","x":3078.181501176622,"y":5712.310332139334,"z":"99faf548.31fd3","wires":[]},{"id":"eb723736.ee1f9","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3198.305477142334,"y":5870.37362241745,"z":"99faf548.31fd3","wires":[["faac9695.a14ad"]]},{"id":"faac9695.a14ad","type":"block","name":"block","xml":"<block>","atomic":"false","outputs":1,"x":3339.198356628418,"y":5870.009729862213,"z":"99faf548.31fd3","wires":[["6adb7f2c.ca6ff","71ef52d7.590ce4"]]},{"id":"6adb7f2c.ca6ff","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.route-table-reference.route-table-reference-id`\"/>","comments":"","x":3570.297897338867,"y":5869.759628772736,"z":"99faf548.31fd3","wires":[]},{"id":"3956dd79.c084b2","type":"save","name":"delete relationship: route-table-reference","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t AND related-to = route-table-reference\" >","comments":"","outputs":1,"x":846.1251258850098,"y":5487.576439619064,"z":"99faf548.31fd3","wires":[["ba84caf1.b95928"]]},{"id":"37524b00.463986","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2711.847553253174,"y":5870.401903629303,"z":"99faf548.31fd3","wires":[["b7c9330.00b54d"]]},{"id":"ba84caf1.b95928","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1139.260097503662,"y":5487.159650564194,"z":"99faf548.31fd3","wires":[["1b8ed9c.0dd75a6"]]},{"id":"1b8ed9c.0dd75a6","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1315.9968719482422,"y":5486.850988149643,"z":"99faf548.31fd3","wires":[["d0eb7413.c21e8","d5b9f2ce.b30ff8"]]},{"id":"d0eb7413.c21e8","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"An error occurred while deleting l3-network route-table-reference relationship from AnAI prior to regenerate the route-table-reference relationship from PRELOAD.\"/>","comments":"","x":1540.010097503662,"y":5487.159650564194,"z":"99faf548.31fd3","wires":[]},{"id":"dc67c501.47d9d8","type":"set","name":"set tmp.route-table-reference.updated = 1","xml":"<set>\n<parameter name='tmp.route-table-reference.updated' value='1' />\n","comments":"","x":3443.6330375671387,"y":5960.5806221961975,"z":"99faf548.31fd3","wires":[]},{"id":"48189378.2e324c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":3204.8830375671387,"y":5960.8306221961975,"z":"99faf548.31fd3","wires":[["dc67c501.47d9d8"]]},{"id":"ee3e375d.3ff768","type":"switchNode","name":"switch: texecute_failure","xml":"<switch test=\"`$execute_failure`\">","comments":"","outputs":1,"x":536.5576972961426,"y":5411.140158176422,"z":"99faf548.31fd3","wires":[["e116631a.73ac68"]]},{"id":"e116631a.73ac68","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":743.2719535827637,"y":5411.140087604523,"z":"99faf548.31fd3","wires":[["c14d77b1.f2f7c8"]]},{"id":"425f0d8c.c1ee44","type":"switchNode","name":"switch: execute_failure","xml":"<switch test=\"`$execute_failure`\">","comments":"","outputs":1,"x":821.3910026550293,"y":5627.5292048454285,"z":"99faf548.31fd3","wires":[["ed5dc0c0.0ccf8"]]},{"id":"ed5dc0c0.0ccf8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1024.1052513122559,"y":5627.529227733612,"z":"99faf548.31fd3","wires":[["65de5abb.394444"]]},{"id":"65de5abb.394444","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1222.7799034118652,"y":5626.473432064056,"z":"99faf548.31fd3","wires":[["aedd7d7d.b1ce78","e0f430f6.63b6a8"]]},{"id":"d5b9f2ce.b30ff8","type":"returnSuccess","name":"set execute_failure = true","xml":"<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n","comments":"","x":1545.6130027770996,"y":5533.3221526145935,"z":"99faf548.31fd3","wires":[]},{"id":"d4bd34a1.1cbc28","type":"returnSuccess","name":"set execute_failure = true","xml":"<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n","comments":"","x":3086.668788909912,"y":5756.473762989044,"z":"99faf548.31fd3","wires":[]},{"id":"71ef52d7.590ce4","type":"returnSuccess","name":"set execute_failure = true","xml":"<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n","comments":"","x":3580.9548835754395,"y":5913.759474277496,"z":"99faf548.31fd3","wires":[]},{"id":"2bcbf9cd.81d636","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3206.8592948913574,"y":5916.378366947174,"z":"99faf548.31fd3","wires":[[]]},{"id":"56bfd6a9.df74c8","type":"other","name":"route-table-reference","xml":"<outcome value='route-table-reference'>\n","comments":"","outputs":1,"x":1990.8275451660156,"y":6671.933737754822,"z":"99faf548.31fd3","wires":[["36b863a.f55881c"]]},{"id":"14f6d939.1ddf87","type":"save","name":"Rollback to save relationship: route-table-reference","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"route-table-reference\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"route-table-reference.route-table-reference-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`\" />","comments":"","outputs":1,"x":2805.910820007324,"y":6671.267318725586,"z":"99faf548.31fd3","wires":[["4636255c.b23d6c","d1aa7b77.e97c2"]]},{"id":"4636255c.b23d6c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3065.9836959838867,"y":6670.74290561676,"z":"99faf548.31fd3","wires":[["1d67e3e9.81fba4"]]},{"id":"1d67e3e9.81fba4","type":"set","name":"tmp.rollback.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.rollback.error-message\" value=\"`'An error occurred during rollback of l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`\"/>","comments":"","x":3281.9760208129883,"y":6671.128494262695,"z":"99faf548.31fd3","wires":[]},{"id":"36b863a.f55881c","type":"switchNode","name":"switch:  tmp.route-table-reference.updated == 1","xml":"<switch test=\"`$tmp.route-table-reference.updated == 1`\">","comments":"","outputs":1,"x":2262.161033630371,"y":6671.933939933777,"z":"99faf548.31fd3","wires":[["f9643ab8.53c508"]]},{"id":"f9643ab8.53c508","type":"other","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2507.1610412597656,"y":6671.933981895447,"z":"99faf548.31fd3","wires":[["14f6d939.1ddf87"]]},{"id":"d1aa7b77.e97c2","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3074.244239807129,"y":6710.36194229126,"z":"99faf548.31fd3","wires":[["1d67e3e9.81fba4"]]},{"id":"41a365fc.f77acc","type":"switchNode","name":"switch: AnAI-k == PRELOAD-n cidr-mask","xml":"<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].cidr-mask == $preload-data.preload-network-topology-information.subnets[$n].cidr-mask`\">","comments":"","outputs":1,"x":2129.291877746582,"y":737.5843949317932,"z":"99faf548.31fd3","wires":[["ff7eb4dc.c16978"]]},{"id":"3ba5a771.321f1","type":"set","name":"set tmp.start-address-match = 1","xml":"<set>\n<parameter name='tmp.start-address-match' value='1' />\n","comments":"","x":2101.5798416137695,"y":689.059859752655,"z":"99faf548.31fd3","wires":[]},{"id":"f2efaecb.a4c288","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1798.5235328674316,"y":1015.5294876098633,"z":"99faf548.31fd3","wires":[["3ba5a771.321f1","41a365fc.f77acc","101a7415.05b704","8fb775eb.d0728","84204b69.12019","39a0fd5.09c1302","9cfdad47.74479","358d7a72.66f4b6","fed208d7.282448","d65c60ca.e54b08","7d24ad9b.e9cd44","601da03.e985be"]]},{"id":"ff7eb4dc.c16978","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2375.872570037842,"y":738.038284778595,"z":"99faf548.31fd3","wires":[["3f393593.252182"]]},{"id":"a4ef9b17.97de1","type":"save","name":"update AnAI - subnet","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id\" >\n\t<!-- Update l3network.subnet -->\n\t<parameter name=\"gateway-address\" value=\"`$tmp.gateway-address`\"/>\n\t<parameter name=\"subnet-name\" value=\"`$preload-data.preload-network-topology-information.subnets[$n].subnet-name`\"/>\n\t<parameter name=\"cidr-mask\" value=\"`$preload-data.preload-network-topology-information.subnets[$n].cidr-mask`\"/>\n\t<parameter name=\"dhcp-start\" value=\"`$preload-data.preload-network-topology-information.subnets[$n].dhcp-start-address`\"/>\n\t<parameter name=\"dhcp-end\" value=\"`$preload-data.preload-network-topology-information.subnets[$n].dhcp-end-address`\"/>\n\t<parameter name=\"dhcp-enabled\" value=\"`$tmp.dhcpEnabled.boolean`\"/>\n\t<parameter name=\"ip-assignment-direction\" value=\"`$tmp.addrFromStart.boolean`\" />\n\t<parameter name=\"orchestration-status\" value=\"PendingUpdate\" />\n\t\t","comments":"","outputs":1,"x":2525.152286529541,"y":1588.4918403625488,"z":"99faf548.31fd3","wires":[["b9906b65.eab918","de2a40b4.84aaa","3cdc30fb.83fab"]]},{"id":"358d7a72.66f4b6","type":"switchNode","name":"switch: AnAI-k == PRELOAD-n dhcp-enabled.boolean","xml":"<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-enabled == $tmp.dhcpEnabled.boolean`\">","comments":"","outputs":1,"x":2174.1975631713867,"y":1265.7128739356995,"z":"99faf548.31fd3","wires":[["1dc403ed.214874"]]},{"id":"1dc403ed.214874","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2457.031467437744,"y":1265.6850504875183,"z":"99faf548.31fd3","wires":[["de20db38.3b0d1"]]},{"id":"af40b8ec.a37c18","type":"set","name":"set tmp.dhcpEnabled.bolean=false","xml":"<set>\n<parameter name=\"tmp.dhcpEnabled.boolean\" value=\"false\" />\n","comments":"","x":2569.852550506592,"y":1014.8456635475159,"z":"99faf548.31fd3","wires":[]},{"id":"be7dcc15.da6e","type":"set","name":"set tmp.dhcpEnabled.boolean=true","xml":"<set>\n<parameter name=\"tmp.dhcpEnabled.boolean\" value=\"true\" />\n","comments":"","x":2571.4915885925293,"y":1056.3178334236145,"z":"99faf548.31fd3","wires":[]},{"id":"9cfdad47.74479","type":"switchNode","name":"switch : PRELOAD-n dhcp-enabled","xml":"<switch test=\"`$preload-data.preload-network-topology-information.subnets[$n].dhcp-enabled`\">","comments":"","outputs":1,"x":2120.759777069092,"y":1014.6109833717346,"z":"99faf548.31fd3","wires":[["d840bbd8.c5951","da2f001f.887f6"]]},{"id":"da2f001f.887f6","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":2350.815441131592,"y":1014.8888154029846,"z":"99faf548.31fd3","wires":[["af40b8ec.a37c18"]]},{"id":"d840bbd8.c5951","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":2350.2322425842285,"y":1056.0833287239075,"z":"99faf548.31fd3","wires":[["be7dcc15.da6e"]]},{"id":"101a7415.05b704","type":"switchNode","name":"switch: tmp.subnetUpdate = 1","xml":"<switch test=\"`$tmp.subnetUpdate == 1`\">","comments":"","outputs":1,"x":2095.6028785705566,"y":1589.8112993240356,"z":"99faf548.31fd3","wires":[["28ca435b.4d4e2c"]]},{"id":"28ca435b.4d4e2c","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2322.031482696533,"y":1589.478144645691,"z":"99faf548.31fd3","wires":[["a4ef9b17.97de1"]]},{"id":"1c47a89d.311727","type":"set","name":"set tmp.l3networkUpdate = 1","xml":"<set>\n<parameter name=\"tmp.l3networkUpdate\" value=\"1\" />\n","comments":"","x":3132.9122314453125,"y":1833.2711534500122,"z":"99faf548.31fd3","wires":[]},{"id":"8fb775eb.d0728","type":"switchNode","name":"switch: l3subnet[k] == PRELOAD subnets[n] dhcp-start","xml":"<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-start == $preload-data.preload-network-topology-information.subnets[$n].dhcp-start-address`\">","comments":"","outputs":1,"x":2175.833984375,"y":1313.736750125885,"z":"99faf548.31fd3","wires":[["28752c5a.b879bc"]]},{"id":"28752c5a.b879bc","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2456.7504920959473,"y":1313.4589648246765,"z":"99faf548.31fd3","wires":[["29ebe2f8.a64166"]]},{"id":"84204b69.12019","type":"switchNode","name":"switch: l3subnet[k] == PRELOAD subnets[n] dhcp-end","xml":"<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-end == $preload-data.preload-network-topology-information.subnets[$n].dhcp-end-address`\">","comments":"","outputs":1,"x":2173.05615234375,"y":1361.0701241493225,"z":"99faf548.31fd3","wires":[["48afca80.0eb22c"]]},{"id":"48afca80.0eb22c","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2455.9726600646973,"y":1360.792338848114,"z":"99faf548.31fd3","wires":[["f6b46141.4699d8"]]},{"id":"b086b6c5.b9fd08","type":"GenericXML","name":"Execute: generate gateway-address","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool\" method=\"getGatewayAddress\">\n\t<parameter name=\"ipAddress\" value=\"`$preload-data.preload-network-topology-information.subnets[$n].start-address`\" />\n\t<parameter name=\"ipVersion\" value=\"`$preload-data.preload-network-topology-information.subnets[$n].ip-version`\" />\n\t<parameter name=\"subnet\" value=\"`$preload-data.preload-network-topology-information.subnets[$n].cidr-mask`\" />\n\t<parameter name=\"ctxVariable\" value=\"tmp.return.generate.gateway-address\" />","comments":"","outputs":1,"x":2731.4072036743164,"y":796.3979897499084,"z":"99faf548.31fd3","wires":[[]]},{"id":"28b52dd3.7082f2","type":"set","name":"set tmp.gateway-address","xml":"<set>\n<parameter name=\"tmp.gateway-address\" value=\"`$tmp.return.generate.gateway-address`\" />\n","comments":"","x":3442.157329559326,"y":859.3979907035828,"z":"99faf548.31fd3","wires":[]},{"id":"39a0fd5.09c1302","type":"switchNode","name":"switch : PRELOAD gateway-address","xml":"<switch test=\"`$preload-data.preload-network-topology-information.subnets[$n].gateway-address`\">","comments":"","outputs":1,"x":2116.6572036743164,"y":796.3979897499084,"z":"99faf548.31fd3","wires":[["e677bc38.dc3a58","d7d19f20.309a6"]]},{"id":"e677bc38.dc3a58","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":2350.6572036743164,"y":796.3979897499084,"z":"99faf548.31fd3","wires":[["699bee75.d526c"]]},{"id":"d7d19f20.309a6","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2352.6572036743164,"y":840.3979897499084,"z":"99faf548.31fd3","wires":[["952d7c82.288e9"]]},{"id":"952d7c82.288e9","type":"switchNode","name":"switch: AnAI-k == PRELOAD-n gateway-address","xml":"<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].gateway-address == $preload-data.preload-network-topology-information.subnets[$n].gateway-address`\">","comments":"","outputs":1,"x":2585.6573600769043,"y":919.1122632026672,"z":"99faf548.31fd3","wires":[["4c118380.ad6dd4","19576292.7c9aad"]]},{"id":"4c118380.ad6dd4","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2862.1573600769043,"y":919.3622632026672,"z":"99faf548.31fd3","wires":[["cbfa742a.a43be"]]},{"id":"f62c0289.88fe68","type":"set","name":"set tmp.gateway-address","xml":"<set>\n<parameter name=\"tmp.gateway-address\" value=\"`$preload-data.preload-network-topology-information.subnets[$n].gateway-address`\" />\n","comments":"","x":3349.1573219299316,"y":917.5051140785217,"z":"99faf548.31fd3","wires":[]},{"id":"699bee75.d526c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2490.6572036743164,"y":796.3979897499084,"z":"99faf548.31fd3","wires":[["b086b6c5.b9fd08","87eadea7.8d4478"]]},{"id":"cbfa742a.a43be","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3001.1573600769043,"y":919.3622632026672,"z":"99faf548.31fd3","wires":[["f62c0289.88fe68","b181244c.b92ee8"]]},{"id":"9c428746.5e9d98","type":"returnSuccess","name":"set execute_failure = true","xml":"<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n","comments":"","x":3148.0461463928223,"y":1675.3703269958496,"z":"99faf548.31fd3","wires":[]},{"id":"f12386c9.7995d8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2915.7527389526367,"y":1588.5290937423706,"z":"99faf548.31fd3","wires":[["9c428746.5e9d98","27f12fa3.0e7c5","d3a3c9df.e66c78"]]},{"id":"b9906b65.eab918","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2748.215518951416,"y":1588.241662979126,"z":"99faf548.31fd3","wires":[["f12386c9.7995d8"]]},{"id":"de2a40b4.84aaa","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2755.7772789001465,"y":1743.1879358291626,"z":"99faf548.31fd3","wires":[["f666d70f.2e613"]]},{"id":"6eb2f489.97fe34","type":"set","name":"set tmp.subnetRollback: keys","xml":"<set>\n  <parameter name=\"tmp.subnetRollback[$x].subnet-id\" value= \"`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`\"/>\n  <parameter name=\"tmp.subnetRollback[$x].type\" value = \"update\"/>\n  \n\n\n","comments":"","x":3132.0407905578613,"y":1743.4227285385132,"z":"99faf548.31fd3","wires":[]},{"id":"f666d70f.2e613","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2894.2762298583984,"y":1743.1731042861938,"z":"99faf548.31fd3","wires":[["6eb2f489.97fe34","54f8f3cb.add09c","1c47a89d.311727"]]},{"id":"54f8f3cb.add09c","type":"set","name":"$x++","xml":"<set>\n  <parameter name=\"x\" value = \"`$x + 1`\"  />\n\n","comments":"","x":3061.7309761047363,"y":1788.9733877182007,"z":"99faf548.31fd3","wires":[]},{"id":"f7d88440.0483e8","type":"set","name":"set tmp.subnetUpdate = 1","xml":"<set>\n<parameter name=\"tmp.subnetUpdate\" value=\"1\" />\n","comments":"","x":2868.157611846924,"y":1312.6838030815125,"z":"99faf548.31fd3","wires":[]},{"id":"87eadea7.8d4478","type":"switchNode","name":"switch: AnAI-k == tmp.return.generate.gateway-address","xml":"<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].gateway-address == $tmp.return.generate.gateway-address`\">","comments":"","outputs":1,"x":2790.8635063171387,"y":859.2670702934265,"z":"99faf548.31fd3","wires":[["72052273.e10864"]]},{"id":"72052273.e10864","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":3075.435199737549,"y":858.7313723564148,"z":"99faf548.31fd3","wires":[["9773e5bb.fc3d8"]]},{"id":"9773e5bb.fc3d8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3220.113666534424,"y":859.1678652763367,"z":"99faf548.31fd3","wires":[["28b52dd3.7082f2","b181244c.b92ee8"]]},{"id":"de20db38.3b0d1","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2594.3638801574707,"y":1265.9178347587585,"z":"99faf548.31fd3","wires":[["f7d88440.0483e8"]]},{"id":"29ebe2f8.a64166","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2593.6138801574707,"y":1312.9178366661072,"z":"99faf548.31fd3","wires":[["f7d88440.0483e8"]]},{"id":"f6b46141.4699d8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2593.1138801574707,"y":1361.1678376197815,"z":"99faf548.31fd3","wires":[["f7d88440.0483e8"]]},{"id":"3f393593.252182","type":"set","name":"set tmp.subnetUpdate = 1","xml":"<set>\n<parameter name=\"tmp.subnetUpdate\" value=\"1\" />\n","comments":"","x":2580.863628387451,"y":737.7551808357239,"z":"99faf548.31fd3","wires":[]},{"id":"27f12fa3.0e7c5","type":"set","name":"set k, n max + 1","xml":"<set>\n\t<parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />\n\t<parameter name='n' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />","comments":"","x":3115.863956451416,"y":1588.3505306243896,"z":"99faf548.31fd3","wires":[]},{"id":"b181244c.b92ee8","type":"set","name":"set tmp.subnetUpdate = 1","xml":"<set>\n<parameter name=\"tmp.subnetUpdate\" value=\"1\" />\n","comments":"","x":3353.5778312683105,"y":968.0408978462219,"z":"99faf548.31fd3","wires":[]},{"id":"19576292.7c9aad","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2863.292339324951,"y":964.1837391853333,"z":"99faf548.31fd3","wires":[["9504cc02.0a1f58"]]},{"id":"9504cc02.0a1f58","type":"set","name":"set tmp.gateway-address","xml":"<set>\n<parameter name=\"tmp.gateway-address\" value=\"`$preload-data.preload-network-topology-information.subnets[$n].gateway-address`\" />\n","comments":"","x":3059.149272918701,"y":964.3266224861145,"z":"99faf548.31fd3","wires":[]},{"id":"d3a3c9df.e66c78","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while updating subnet attributes in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`\"/>","comments":"","x":3140.0782737731934,"y":1631.8148107528687,"z":"99faf548.31fd3","wires":[]},{"id":"3cdc30fb.83fab","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2756.5067100524902,"y":1631.8624181747437,"z":"99faf548.31fd3","wires":[["f12386c9.7995d8"]]},{"id":"fed208d7.282448","type":"switchNode","name":"switch: l3subnet[k] == PRELOAD subnets[n] subnet-name","xml":"<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-name == $preload-data.preload-network-topology-information.subnets[$n].subnet-name`\">","comments":"","outputs":1,"x":2185.8994369506836,"y":1407.7670607566833,"z":"99faf548.31fd3","wires":[["442ff957.20bbc"]]},{"id":"442ff957.20bbc","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2485.815944671631,"y":1407.4892754554749,"z":"99faf548.31fd3","wires":[["d042dd24.3307a"]]},{"id":"d042dd24.3307a","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2623.9571647644043,"y":1407.8647742271423,"z":"99faf548.31fd3","wires":[["f7d88440.0483e8"]]},{"id":"3f952973.3c3546","type":"set","name":"set tmp.addrFromStart.bolean=false","xml":"<set>\n<parameter name=\"tmp.addrFromStart.boolean\" value=\"false\" />\n","comments":"","x":2572.3636894226074,"y":1113.9178748130798,"z":"99faf548.31fd3","wires":[]},{"id":"59f14f10.d6082","type":"set","name":"set tmp.addrFromStart.boolean=true","xml":"<set>\n<parameter name=\"tmp.addrFromStart.boolean\" value=\"true\" />\n","comments":"","x":2574.002727508545,"y":1155.3900446891785,"z":"99faf548.31fd3","wires":[]},{"id":"d65c60ca.e54b08","type":"switchNode","name":"switch : PRELOAD-n addr-from-start","xml":"<switch test=\"`$preload-data.preload-network-topology-information.subnets[$n].addr-from-start`\">","comments":"","outputs":1,"x":2123.2709159851074,"y":1113.6831946372986,"z":"99faf548.31fd3","wires":[["adbeda1f.3083d","e1d75a89.8723d8"]]},{"id":"e1d75a89.8723d8","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":2353.3265800476074,"y":1113.9610266685486,"z":"99faf548.31fd3","wires":[["3f952973.3c3546"]]},{"id":"adbeda1f.3083d","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":2352.743381500244,"y":1155.1555399894714,"z":"99faf548.31fd3","wires":[["59f14f10.d6082"]]},{"id":"601da03.e985be","type":"switchNode","name":"switch: AnAI-k == PRELOAD-n addrFromStart.boolean","xml":"<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].ip-assignment-direction == $tmp.addrFromStart.boolean`\">","comments":"","outputs":1,"x":2174.363628387451,"y":1220.1678576469421,"z":"99faf548.31fd3","wires":[["45a8e12f.45c57"]]},{"id":"45a8e12f.45c57","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2457.1975326538086,"y":1220.140034198761,"z":"99faf548.31fd3","wires":[["4a363391.8e9414"]]},{"id":"4a363391.8e9414","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2594.529945373535,"y":1220.3728184700012,"z":"99faf548.31fd3","wires":[["f7d88440.0483e8"]]},{"id":"7d24ad9b.e9cd44","type":"switchNode","name":"switch: l3subnet[k] == PRELOAD subnets[n] subnet-role","xml":"<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-role == $preload-data.preload-network-topology-information.subnets[$n].subnet-role`\">","comments":"","outputs":1,"x":2184.363628387451,"y":1452.6678576469421,"z":"99faf548.31fd3","wires":[["786164e5.30fc9c"]]},{"id":"786164e5.30fc9c","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2484.2801361083984,"y":1452.3900723457336,"z":"99faf548.31fd3","wires":[["4d54dd31.720a7c"]]},{"id":"4d54dd31.720a7c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2622.421356201172,"y":1452.7655711174011,"z":"99faf548.31fd3","wires":[["f7d88440.0483e8"]]},{"id":"6d27754.91a1f8c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3271.577642440796,"y":3516.822518348694,"z":"99faf548.31fd3","wires":[["5110cf67.6403a"]]},{"id":"5110cf67.6403a","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":3470.970470428467,"y":3516.4586362838745,"z":"99faf548.31fd3","wires":[["3ecf3010.00d5b","1180ab4e.80b135"]]},{"id":"3ecf3010.00d5b","type":"set","name":"set: tmp.error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`\"/>","comments":"","x":3691.070011138916,"y":3516.208535194397,"z":"99faf548.31fd3","wires":[]},{"id":"2282ff54.aaa3e8","type":"call","name":"call: generate-host-routes-host-route-id","xml":"<call module=\"VNF-API\" rpc=\"generate-host-routes-host-route-id\" mode=\"sync\" >\n","comments":"","outputs":1,"x":3011.085334777832,"y":3470.4823713302612,"z":"99faf548.31fd3","wires":[["1b1e2a5e.1081a6"]]},{"id":"1b1e2a5e.1081a6","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3272.835319519043,"y":3470.732361793518,"z":"99faf548.31fd3","wires":[["5110cf67.6403a"]]},{"id":"5621b71d.945c98","type":"save","name":"save AnAI - host-routes.host-route","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"host-route\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id  \n\t\t\tAND subnet.subnet-id = $tmp.local.subnet-id  \n\t\t\tAND host-route.host-route-id = $tmp.return.generate-host-routes-host-route-id.uuid\" >\n<!-- Create host-route object -->\n<parameter name=\"host-route-id\" value=\"`$tmp.return.generate-host-routes-host-route-id.uuid`\" />\n<parameter name=\"route-prefix\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].host-routes[$h].route-prefix`\" />\n<parameter name=\"next-hop\" value=\"`$preload-data.preload-network-topology-information.subnets[$i].host-routes[$h].next-hop`\" />","comments":"","outputs":1,"x":2995.961368560791,"y":3516.474015235901,"z":"99faf548.31fd3","wires":[["6d27754.91a1f8c","6cd11b79.ec678c"]]},{"id":"6cd11b79.ec678c","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3279.894874572754,"y":3563.541890144348,"z":"99faf548.31fd3","wires":[["5110cf67.6403a"]]},{"id":"c45dc5f3.c229a","type":"for","name":"for loop h - PRELOAD host-routes","xml":"<for index=\"h\" start=\"0\" end=\"`$preload-data.preload-network-topology-information.subnets[$i].host-routes_length`\">\n","comments":"","outputs":1,"x":2438.791831970215,"y":3470.596242904663,"z":"99faf548.31fd3","wires":[["24f6dc0c.3cc6dc"]]},{"id":"24f6dc0c.3cc6dc","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2708.0299530029297,"y":3470.024764060974,"z":"99faf548.31fd3","wires":[["2282ff54.aaa3e8","5621b71d.945c98"]]},{"id":"6814d148.b02918","type":"set","name":"set tmp.local.subnet-id","xml":"<set>\n<parameter name=\"tmp.local.subnet-id\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$j].subnet-id`\" />\n","comments":"","x":2403.6252250671387,"y":3319.9176931381226,"z":"99faf548.31fd3","wires":[]},{"id":"6fca63db.36a404","type":"set","name":"set tmp.addrFromStart.bolean=false","xml":"<set>\n<parameter name=\"tmp.addrFromStart.boolean\" value=\"false\" />\n","comments":"","x":2961.2917671203613,"y":2744.9177532196045,"z":"99faf548.31fd3","wires":[]},{"id":"c4e49471.506be","type":"set","name":"set tmp.addrFromStart.boolean=true","xml":"<set>\n<parameter name=\"tmp.addrFromStart.boolean\" value=\"true\" />\n","comments":"","x":2962.930805206299,"y":2786.389923095703,"z":"99faf548.31fd3","wires":[]},{"id":"6499a1da.9e778","type":"switchNode","name":"switch : PRELOAD-n addr-from-start","xml":"<switch test=\"`$preload-data.preload-network-topology-information.subnets[$n].addr-from-start`\">","comments":"","outputs":1,"x":2447.0562171936035,"y":2786.2545099258423,"z":"99faf548.31fd3","wires":[["f7756088.8ee018","67a5b3ff.025a6c","69cb5ef.fd054a"]]},{"id":"67a5b3ff.025a6c","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":2710.2546577453613,"y":2744.9609050750732,"z":"99faf548.31fd3","wires":[["6fca63db.36a404"]]},{"id":"f7756088.8ee018","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":2709.671459197998,"y":2786.155418395996,"z":"99faf548.31fd3","wires":[["c4e49471.506be"]]},{"id":"916f68b3.411ab8","type":"switchNode","name":"switch host-routes_length","xml":"<switch test='`$preload-data.preload-network-topology-information.subnets[$i].host-routes_length`'>\n","comments":"","outputs":1,"x":2415.0537757873535,"y":3398.0131301879883,"z":"99faf548.31fd3","wires":[["555795d9.7a1144"]]},{"id":"555795d9.7a1144","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2655.6251945495605,"y":3397.584539413452,"z":"99faf548.31fd3","wires":[["1c07b0ec.e8eaa7"]]},{"id":"1c07b0ec.e8eaa7","type":"set","name":"set host-routes_length to 0","xml":"<set>\n<parameter name='preload-data.preload-network-topology-information.subnets[$i].host-routes_length' value='0' />\n","comments":"","x":2882.7681617736816,"y":3398.0129833221436,"z":"99faf548.31fd3","wires":[]},{"id":"1180ab4e.80b135","type":"returnSuccess","name":"set execute_failure = true","xml":"<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n","comments":"","x":3695.0540657043457,"y":3559.441717147827,"z":"99faf548.31fd3","wires":[]},{"id":"ccdc8502.0da05","type":"set","name":"set ROLLBACK_START","xml":"<set>\n<parameter name='ROLLBACK_START' value='NETWORK_TOPOLOGY_CHANGEASSIGN' />\n","comments":"","x":1157.9109077453613,"y":6318.01323890686,"z":"99faf548.31fd3","wires":[]},{"id":"5348546b.a906bc","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2187.196475982666,"y":3319.9176712036133,"z":"99faf548.31fd3","wires":[["6814d148.b02918","916f68b3.411ab8","c45dc5f3.c229a"]]},{"id":"69cb5ef.fd054a","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":2711.1965675354004,"y":2829.4415969848633,"z":"99faf548.31fd3","wires":[["c4e49471.506be"]]},{"id":"84ee1670.5f0a7","type":"switchNode","name":"switch from-preload","xml":"<switch test='`$service-data.networks.network[$nidx].network-data.network-information.from-preload`'>\n","comments":"","outputs":1,"x":553.4346008300781,"y":357.9970827102661,"z":"99faf548.31fd3","wires":[["88ba72dc.ce70d","bd813794.8f96e"]]},{"id":"88ba72dc.ce70d","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":778.8506660461426,"y":339.5521297454834,"z":"99faf548.31fd3","wires":[["cb30e47b.b67808"]]},{"id":"bd813794.8f96e","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":773.2951049804688,"y":388.3298616409302,"z":"99faf548.31fd3","wires":[["d0bf808b.d6a33"]]},{"id":"d0bf808b.d6a33","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"Error: changeassign only allowed for networks with from-preload set to true\" />","comments":"","x":938.4346466064453,"y":387.99708461761475,"z":"99faf548.31fd3","wires":[]},{"id":"cb30e47b.b67808","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":920.9345703125,"y":339.9970703125,"z":"99faf548.31fd3","wires":[[]]},{"id":"3fed421d.e63e86","type":"execute","name":"generate preload network url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.preload-network`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.pn-url\"/>\n    <parameter name=\"target\" value=\"{network-name}\"/>\n    <parameter name=\"replacement\" value=\"`$network-topology-operation-input.network-request-information.network-name`\"/>\n","comments":"","outputs":1,"x":569.9971313476562,"y":554.2471661567688,"z":"99faf548.31fd3","wires":[[]]},{"id":"b8e99272.6fe8b","type":"execute","name":"execute RestApiCallNode - Get preload-network by network-name","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pn-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"preload-data\" />\n\n","comments":"","outputs":1,"x":686.2471771240234,"y":586.9972295761108,"z":"99faf548.31fd3","wires":[["8b1aab55.e51f78","4ae4c873.f968"]]},{"id":"8b1aab55.e51f78","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1052.2471885681152,"y":591.7471933364868,"z":"99faf548.31fd3","wires":[["ab206880.cc5468"]]},{"id":"ab206880.cc5468","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1222.247142791748,"y":591.2470788955688,"z":"99faf548.31fd3","wires":[[]]},{"id":"4ae4c873.f968","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1048.098949432373,"y":623.8132514953613,"z":"99faf548.31fd3","wires":[["de5c4732.58bba"]]},{"id":"de5c4732.58bba","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"'Error: No preload-network found with network-name =' + $tmp.network-instance-name + ' in md-sal'\" />","comments":"","x":1226.2471466064453,"y":623.747166633606,"z":"99faf548.31fd3","wires":[]},{"id":"592b5af8.983664","type":"comment","name":"Error if from-preload is not true","info":"","comments":"","x":573.7500305175781,"y":322.00000762939453,"z":"99faf548.31fd3","wires":[]},{"id":"a118b584.13b3f8","type":"comment","name":"Read properties","info":"","comments":"","x":530.0000152587891,"y":407.0000104904175,"z":"99faf548.31fd3","wires":[]},{"id":"c39d640f.75ab2","type":"comment","name":"Read preload data from mdsal","info":"","comments":"","x":571.2500152587891,"y":515.7500143051147,"z":"99faf548.31fd3","wires":[]},{"id":"e5d8e3fb.d16cd","type":"comment","name":"Validate network name and type match","info":"","comments":"","x":590.0000305175781,"y":797.0000228881836,"z":"99faf548.31fd3","wires":[]},{"id":"26fe5b3e.c1646c","type":"comment","name":"Loop through subnets from AAI and compare to preload data","info":"","comments":"","x":656.2500305175781,"y":1140.75004196167,"z":"99faf548.31fd3","wires":[]},{"id":"5606ead2.76c2b4","type":"returnSuccess","name":"return success","xml":"<return status=\"success\">\n\t<parameter name=\"networkId\" value=\"`$network-topology-operation-input.network-request-information.network-id`\" />\n\t<parameter name=\"error-code\" value=\"200\" />","comments":"","x":475.7149658203125,"y":7478.7861328125,"z":"99faf548.31fd3","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-create.json
new file mode 100644
index 0000000..a952299
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-create.json
@@ -0,0 +1,2333 @@
+[
+  {
+    "id": "334bd25e.3b958e",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 88,
+    "y": 62.999969482421875,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "46c76be0.4ae1ec"
+      ]
+    ]
+  },
+  {
+    "id": "46c76be0.4ae1ec",
+    "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": 300.00000381469727,
+    "y": 134.99998664855957,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "6216646e.335424"
+      ]
+    ]
+  },
+  {
+    "id": "6216646e.335424",
+    "type": "method",
+    "name": "method network-topology-operation-create",
+    "xml": "<method rpc='network-topology-operation-create' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 288.0001220703125,
+    "y": 222.99996948242188,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "ea50b732.2ea01"
+      ]
+    ]
+  },
+  {
+    "id": "ea50b732.2ea01",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 364,
+    "y": 621,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "3f70abff.f62544",
+        "1db363a4.5e5bdc",
+        "675b0828.5f3f38",
+        "a0cacee0.a7a5a8",
+        "efc2210e.acb0a",
+        "3e3972fa.77b7f6",
+        "d43bb648.453b08",
+        "4946b4b6.2645f4",
+        "3c09007b.15e098",
+        "6c6c2617.940e5",
+        "68a6c57e.f14dec",
+        "26e0b74.7b173c8",
+        "d899adb0.900798",
+        "8e08cbd2.d417e8",
+        "5c73bbe5.1df864",
+        "387886dd.77b922",
+        "60cb5057.fb4318",
+        "a2104e27.ed674",
+        "c690b1cd.2300e8",
+        "b676786f.1bea58",
+        "d8859d72.093c7"
+      ]
+    ]
+  },
+  {
+    "id": "4a98e8a7.30e56",
+    "type": "execute",
+    "name": "execute RestApiCallNode Create IPWAN L3VPN",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/l3smvpntemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services'`\" />\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": 1111.0001831054688,
+    "y": 993.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "a7b0af3.7ac715",
+        "ced00609.d81b48"
+      ]
+    ]
+  },
+  {
+    "id": "76f264c.7ba0a9c",
+    "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": 1265.0000610351562,
+    "y": 267.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "675b0828.5f3f38",
+    "type": "for",
+    "name": "for each network-input-parameters",
+    "xml": "<for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 806.6666259765625,
+    "y": 183.6666259765625,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "fdabde17.5c847"
+      ]
+    ]
+  },
+  {
+    "id": "89285d57.29b5c8",
+    "type": "execute",
+    "name": "execute RestApiCallNode Create SPTN L3VPN",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir +'/sptn-l3vpn-template.xml'`\"/>\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/sptn-service-l3vpn:service/snc-l3vpns'`\"/>\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\"/>\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\"/>\n<parameter name=\"format\" value=\"xml\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"restapi-result\"/>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1043.6668701171875,
+    "y": 1255.6667175292969,
+    "z": "b1905c0.2226628",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "1db363a4.5e5bdc",
+    "type": "execute",
+    "name": "execute vpn-policy1-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.l3vpn.vpn-policy1-id\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 809.6666259765625,
+    "y": 456.6666564941406,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "fd6478e7.b7b91"
+      ]
+    ]
+  },
+  {
+    "id": "fd6478e7.b7b91",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1034.6666259765625,
+    "y": 459.6666259765625,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "afc1b363.b7a39"
+      ]
+    ]
+  },
+  {
+    "id": "afc1b363.b7a39",
+    "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 generation vpn policy ID\" />\n",
+    "comments": "",
+    "x": 1215.6666259765625,
+    "y": 457.6666259765625,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "3f70abff.f62544",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:validate-network-input-parameters",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-network-input-parameters' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 861.5,
+    "y": 99.99996948242188,
+    "z": "b1905c0.2226628",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "5c73bbe5.1df864",
+    "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 = $tmp.thirdparty-sdnc-id AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 822.5,
+    "y": 333.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "1b55c06c.3411f",
+        "ae5faeba.f046c",
+        "df5eda3d.a15fe"
+      ]
+    ]
+  },
+  {
+    "id": "1b55c06c.3411f",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1067.5,
+    "y": 279.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "76f264c.7ba0a9c"
+      ]
+    ]
+  },
+  {
+    "id": "ae5faeba.f046c",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1070.990966796875,
+    "y": 327.5740051269531,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "943fc2bc.e3e328"
+      ]
+    ]
+  },
+  {
+    "id": "df5eda3d.a15fe",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1066.323974609375,
+    "y": 368.9073181152344,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "92e8f917.b6ec08"
+      ]
+    ]
+  },
+  {
+    "id": "943fc2bc.e3e328",
+    "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": 1247.5623779296875,
+    "y": 315.8597412109375,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "92e8f917.b6ec08",
+    "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": 1254.0965309143066,
+    "y": 364.346510887146,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "a016ef4c.00b8d8",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1599.5,
+    "y": 34,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "7823b220.68af5c"
+      ]
+    ]
+  },
+  {
+    "id": "42d21e94.8794d",
+    "type": "switchNode",
+    "name": "switch service-type",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'serviceType'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1603.4999389648438,
+    "y": 91.5999755859375,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "fba273ef.824e7"
+      ]
+    ]
+  },
+  {
+    "id": "7823b220.68af5c",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1786.5,
+    "y": 30,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "73def40f.26af94"
+      ]
+    ]
+  },
+  {
+    "id": "fba273ef.824e7",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1788.4999389648438,
+    "y": 89.5999755859375,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "8f3c7f01.3f5cd8"
+      ]
+    ]
+  },
+  {
+    "id": "73def40f.26af94",
+    "type": "set",
+    "name": "set name",
+    "xml": "<set>\n<parameter name='prop.l3vpn.name' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1954.5,
+    "y": 30.600006103515625,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "8f3c7f01.3f5cd8",
+    "type": "set",
+    "name": "set service-type",
+    "xml": "<set>\n<parameter name='prop.l3vpn.service-type' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1957.4999389648438,
+    "y": 87.5999755859375,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "141c3d3d.ab7053",
+    "type": "switchNode",
+    "name": "switch topology",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'topology'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1602.5,
+    "y": 152.99996948242188,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "646edb42.22d774"
+      ]
+    ]
+  },
+  {
+    "id": "4ee7a07.d59c26",
+    "type": "switchNode",
+    "name": "switch technology",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'technology'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1605.5,
+    "y": 205.99996948242188,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "1d562a47.bcc43e"
+      ]
+    ]
+  },
+  {
+    "id": "5c63bd35.850224",
+    "type": "switchNode",
+    "name": "switch site1_name",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1610.5,
+    "y": 267.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "5c2dde3b.616048"
+      ]
+    ]
+  },
+  {
+    "id": "58f3e289.2a7e64",
+    "type": "switchNode",
+    "name": "switch site2_name",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1605.5,
+    "y": 330.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "62672aa9.ed61fc"
+      ]
+    ]
+  },
+  {
+    "id": "95375fe3.44bc28",
+    "type": "switchNode",
+    "name": "switch sna1_name",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'sna1_name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1610.5,
+    "y": 390.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "34588a45.0b76ce"
+      ]
+    ]
+  },
+  {
+    "id": "fe0b88f6.f80e9",
+    "type": "switchNode",
+    "name": "switch sna2_name",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'sna2_name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1605.5,
+    "y": 454.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "a6fb987c.7f515"
+      ]
+    ]
+  },
+  {
+    "id": "7a18b8ce.d5dc",
+    "type": "switchNode",
+    "name": "switch pe1_id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'pe1_id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1610.5,
+    "y": 516.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "92e2ca99.658f38"
+      ]
+    ]
+  },
+  {
+    "id": "13b6f73a.13b789",
+    "type": "switchNode",
+    "name": "switch pe2_id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'pe2_id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1625.5,
+    "y": 576.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "b1abbb19.2fcad"
+      ]
+    ]
+  },
+  {
+    "id": "fd7f4144.b3829",
+    "type": "switchNode",
+    "name": "switch ac1_id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1620.5,
+    "y": 648.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "b2c23108.34249"
+      ]
+    ]
+  },
+  {
+    "id": "45ea1a7b.99de84",
+    "type": "switchNode",
+    "name": "switch ac2_id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1619.5,
+    "y": 707.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "cefcde62.39a058"
+      ]
+    ]
+  },
+  {
+    "id": "2d742a69.fb645e",
+    "type": "switchNode",
+    "name": "switch ac1_ip",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_ip'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1596.5,
+    "y": 770.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "97b77413.58ee48"
+      ]
+    ]
+  },
+  {
+    "id": "a750a836.67c46",
+    "type": "switchNode",
+    "name": "switch ac2_ip",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_ip'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1599.5,
+    "y": 827.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "d85c061f.502f68"
+      ]
+    ]
+  },
+  {
+    "id": "32c3f1e3.30689e",
+    "type": "switchNode",
+    "name": "switch ac1_peer_ip",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_peer_ip'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1605.5,
+    "y": 879.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "2968f925.7ca646"
+      ]
+    ]
+  },
+  {
+    "id": "e951ad31.5ca928",
+    "type": "switchNode",
+    "name": "switch ac2_peer_ip",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_peer_ip'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1606.5,
+    "y": 934.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "601aa678.9a67f8"
+      ]
+    ]
+  },
+  {
+    "id": "e3393629.af0d3",
+    "type": "switchNode",
+    "name": "switch ac1_svlan",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_svlan'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1618.5,
+    "y": 983.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "a2f05df5.918ee"
+      ]
+    ]
+  },
+  {
+    "id": "62f6947f.61850c",
+    "type": "switchNode",
+    "name": "switch ac2_svlan",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_svlan'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1611.5,
+    "y": 1034.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "81528be0.14be3"
+      ]
+    ]
+  },
+  {
+    "id": "746e4da0.8ed054",
+    "type": "switchNode",
+    "name": "switch ac1_protocol",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_protocol'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1604.5,
+    "y": 1092.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "e4005648.dfa27"
+      ]
+    ]
+  },
+  {
+    "id": "ce1e821a.8edd98",
+    "type": "switchNode",
+    "name": "switch ac2_protocol",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_protocol'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1605.5,
+    "y": 1152.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "302c5dc1.424eaa"
+      ]
+    ]
+  },
+  {
+    "id": "ac3cc96e.e8c948",
+    "type": "switchNode",
+    "name": "switch ac1_protocol_bgp_as",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_protocol_bgp_as'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1599.5,
+    "y": 1338.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "b346bc87.20f83"
+      ]
+    ]
+  },
+  {
+    "id": "baf40051.ee5bc",
+    "type": "switchNode",
+    "name": "switch ac2_protocol_bgp_as",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_protocol_bgp_as'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1605.5,
+    "y": 1389.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "a31fc214.1ca9f"
+      ]
+    ]
+  },
+  {
+    "id": "c4c0db18.879888",
+    "type": "switchNode",
+    "name": "switch af_type",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'af_type'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1572.5,
+    "y": 1480.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "abf52cdc.20fb88"
+      ]
+    ]
+  },
+  {
+    "id": "646edb42.22d774",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1777.5,
+    "y": 148.99996948242188,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "107b061b.7f16b2"
+      ]
+    ]
+  },
+  {
+    "id": "1d562a47.bcc43e",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1783.5,
+    "y": 201.99996948242188,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "fb1300d0.70aa88"
+      ]
+    ]
+  },
+  {
+    "id": "5c2dde3b.616048",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1792.5,
+    "y": 263.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "e77b09fa.d7d64"
+      ]
+    ]
+  },
+  {
+    "id": "62672aa9.ed61fc",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1790.5,
+    "y": 326.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "93f053bd.02a548"
+      ]
+    ]
+  },
+  {
+    "id": "34588a45.0b76ce",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1795.5,
+    "y": 388.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "a884a526.618c28"
+      ]
+    ]
+  },
+  {
+    "id": "a6fb987c.7f515",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1787.5,
+    "y": 446.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "f7ce6bb9.9a7a9"
+      ]
+    ]
+  },
+  {
+    "id": "92e2ca99.658f38",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1788.5,
+    "y": 509.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "6aec4eb8.f320e"
+      ]
+    ]
+  },
+  {
+    "id": "b1abbb19.2fcad",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1787.5,
+    "y": 578.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "51e03a88.5af60c"
+      ]
+    ]
+  },
+  {
+    "id": "b2c23108.34249",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1784.5,
+    "y": 646.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "517deb3b.1a11bc"
+      ]
+    ]
+  },
+  {
+    "id": "cefcde62.39a058",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1783.5,
+    "y": 710.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "c4018004.404be"
+      ]
+    ]
+  },
+  {
+    "id": "97b77413.58ee48",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1756.5,
+    "y": 768.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "d3532521.bb7d38"
+      ]
+    ]
+  },
+  {
+    "id": "d85c061f.502f68",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1758.5,
+    "y": 825.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "e79e82f8.255518"
+      ]
+    ]
+  },
+  {
+    "id": "2968f925.7ca646",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1794.5,
+    "y": 876.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "c560a215.f29018"
+      ]
+    ]
+  },
+  {
+    "id": "601aa678.9a67f8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1799.5,
+    "y": 939.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "73c88606.5381e"
+      ]
+    ]
+  },
+  {
+    "id": "a2f05df5.918ee",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1795.5,
+    "y": 988.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "b6e32aaf.1d4358"
+      ]
+    ]
+  },
+  {
+    "id": "81528be0.14be3",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1779.5,
+    "y": 1037.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "3da3bd09.271e42"
+      ]
+    ]
+  },
+  {
+    "id": "e4005648.dfa27",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1776.5,
+    "y": 1090.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "3008b334.6e0ccc"
+      ]
+    ]
+  },
+  {
+    "id": "302c5dc1.424eaa",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1789.5,
+    "y": 1149.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "8e9dab50.3a0e28"
+      ]
+    ]
+  },
+  {
+    "id": "b346bc87.20f83",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1807.5,
+    "y": 1335.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "b8ec5e66.c0da4"
+      ]
+    ]
+  },
+  {
+    "id": "a31fc214.1ca9f",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1814.5,
+    "y": 1385.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "d3572336.1890c"
+      ]
+    ]
+  },
+  {
+    "id": "abf52cdc.20fb88",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1776.5,
+    "y": 1489.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "11091e74.b17202"
+      ]
+    ]
+  },
+  {
+    "id": "107b061b.7f16b2",
+    "type": "set",
+    "name": "set topology",
+    "xml": "<set>\n<parameter name='prop.l3vpn.topology' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1972.5,
+    "y": 149.99996948242188,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "fb1300d0.70aa88",
+    "type": "set",
+    "name": "set technology",
+    "xml": "<set>\n<parameter name='prop.l3vpn.technology' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1962.5,
+    "y": 203.99996948242188,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "e77b09fa.d7d64",
+    "type": "set",
+    "name": "set site1_name",
+    "xml": "<set>\n<parameter name='prop.l3vpn.site1_name' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1966.5,
+    "y": 260.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "93f053bd.02a548",
+    "type": "set",
+    "name": "set site2_name",
+    "xml": "<set>\n<parameter name='prop.l3vpn.site2_name' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1969.5,
+    "y": 319.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "a884a526.618c28",
+    "type": "set",
+    "name": "set sna1_name",
+    "xml": "<set>\n<parameter name='prop.l3vpn.sna1_name' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1977.5,
+    "y": 381.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "f7ce6bb9.9a7a9",
+    "type": "set",
+    "name": "set sna2_name",
+    "xml": "<set>\n<parameter name='prop.l3vpn.sna2_name' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1969.5,
+    "y": 441.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "6aec4eb8.f320e",
+    "type": "set",
+    "name": "set pe1_id",
+    "xml": "<set>\n<parameter name='prop.l3vpn.pe1_id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1966.5,
+    "y": 501.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "51e03a88.5af60c",
+    "type": "set",
+    "name": "set pe2_id",
+    "xml": "<set>\n<parameter name='prop.l3vpn.pe2_id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1962.5,
+    "y": 572.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "517deb3b.1a11bc",
+    "type": "set",
+    "name": "set ac1_id",
+    "xml": "<set>\n<parameter name='prop.l3vpn.ac1_id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1955.5,
+    "y": 638.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "c4018004.404be",
+    "type": "set",
+    "name": "set ac2_id",
+    "xml": "<set>\n<parameter name='prop.l3vpn.ac2_id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1958.5,
+    "y": 705.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "d3532521.bb7d38",
+    "type": "set",
+    "name": "set ac1_ip",
+    "xml": "<set>\n<parameter name='prop.l3vpn.ac1_ip' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1934.5,
+    "y": 771.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "e79e82f8.255518",
+    "type": "set",
+    "name": "set ac2_ip",
+    "xml": "<set>\n<parameter name='prop.l3vpn.ac2_ip' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1938.5,
+    "y": 825.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "c560a215.f29018",
+    "type": "set",
+    "name": "set ac1_peer_ip",
+    "xml": "<set>\n<parameter name='prop.l3vpn.ac1_peer_ip' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1986.5,
+    "y": 880.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "73c88606.5381e",
+    "type": "set",
+    "name": "set ac2_peer_ip",
+    "xml": "<set>\n<parameter name='prop.l3vpn.ac2_peer_ip' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1982.5,
+    "y": 935.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "b6e32aaf.1d4358",
+    "type": "set",
+    "name": "set ac1_svlan",
+    "xml": "<set>\n<parameter name='prop.l3vpn.ac1_svlan' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1976.5,
+    "y": 990.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "3da3bd09.271e42",
+    "type": "set",
+    "name": "set ac2_svlan",
+    "xml": "<set>\n<parameter name='prop.l3vpn.ac2_svlan' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1973.5,
+    "y": 1043.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "3008b334.6e0ccc",
+    "type": "set",
+    "name": "set ac1_protocol",
+    "xml": "<set>\n<parameter name='prop.l3vpn.ac1_protocol' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1971.5,
+    "y": 1100.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "8e9dab50.3a0e28",
+    "type": "set",
+    "name": "set ac2_protocol",
+    "xml": "<set>\n<parameter name='prop.l3vpn.ac2_protocol' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1980.5,
+    "y": 1152.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "b8ec5e66.c0da4",
+    "type": "set",
+    "name": "set ac1_protocol_bgp_as",
+    "xml": "<set>\n<parameter name='prop.l3vpn.ac1_protocol_bgp_as' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n<parameter name='prop.l3vpn.peer1-ip' value='`$prop.l3vpn.ac1_ip`' />\n",
+    "comments": "",
+    "x": 2074.5,
+    "y": 1356.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "d3572336.1890c",
+    "type": "set",
+    "name": "set ac2_protocol_bgp_as",
+    "xml": "<set>\n<parameter name='prop.l3vpn.ac2_protocol_bgp_as' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n<parameter name='prop.l3vpn.peer2-ip' value='`$prop.l3vpn.ac2_ip`' />\n",
+    "comments": "",
+    "x": 2086.5,
+    "y": 1405.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "11091e74.b17202",
+    "type": "set",
+    "name": "set af_type",
+    "xml": "<set>\n<parameter name='prop.l3vpn.af_type' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1970.5,
+    "y": 1499.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "a0cacee0.a7a5a8",
+    "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=\"network-topology-operation-create\"/>\n<parameter name=\"field3\" value=\"L3VPN-Config\"/>\n<parameter name=\"field4\" value=\"`l3vpn.name`\"/>\n<parameter name=\"field5\" value=\"`$prop.l3vpn.name`\"/>\n<parameter name=\"field6\" value=\"`l3vpn.topology`\"/>\n<parameter name=\"field7\" value=\"`$prop.l3vpn.topology`\"/>\n<parameter name=\"field8\" value=\"`l3vpn.site1_name`\"/>\n<parameter name=\"field9\" value=\"`$prop.l3vpn.site1_name`\"/>\n<parameter name=\"field10\" value=\"`l3vpn.vpn-policy1-id`\"/>\n<parameter name=\"field11\" value=\"`$prop.l3vpn.vpn-policy1-id`\"/>\n<parameter name=\"field12\" value=\"`l3vpn.entry1-id`\"/>\n<parameter name=\"field13\" value=\"`$prop.l3vpn.entry1-id`\"/>\n<parameter name=\"field14\" value=\"`l3vpn.sna1_name`\"/>\n<parameter name=\"field15\" value=\"`$prop.l3vpn.sna1_name`\"/>\n<parameter name=\"field16\" value=\"`l3vpn.pe1_id`\"/>\n<parameter name=\"field17\" value=\"`$prop.l3vpn.pe1_id`\"/>\n<parameter name=\"field18\" value=\"`l3vpn.ac1_id`\"/>\n<parameter name=\"field19\" value=\"`$prop.l3vpn.ac1_id`\"/>\n<parameter name=\"field20\" value=\"`l3vpn.ac1_svlan`\"/>\n<parameter name=\"field21\" value=\"`$prop.l3vpn.ac1_svlan`\"/>\n<parameter name=\"field22\" value=\"`l3vpn.ac1_peer_ip`\"/>\n<parameter name=\"field23\" value=\"`$prop.l3vpn.ac1_peer_ip`\"/>\n<parameter name=\"field24\" value=\"`l3vpn.ac1_ip`\"/>\n<parameter name=\"field25\" value=\"`$prop.l3vpn.ac1_ip`\"/>\n<parameter name=\"field26\" value=\"`l3vpn.ac1_protocol`\"/>\n<parameter name=\"field27\" value=\"`$prop.l3vpn.ac1_protocol`\"/>\n<parameter name=\"field28\" value=\"`l3vpn.sna1-route-ip-prefix`\"/>\n<parameter name=\"field29\" value=\"`$prop.l3vpn.sna1-route-ip-prefix`\"/>\n<parameter name=\"field30\" value=\"`l3vpn.sna1-route-next-hop`\"/>\n<parameter name=\"field31\" value=\"`$prop.l3vpn.sna1-route-next-hop`\"/>\n<parameter name=\"field32\" value=\"`l3vpn.peer1_ip`\"/>\n<parameter name=\"field33\" value=\"`$prop.l3vpn.peer1_ip`\"/>\n<parameter name=\"field34\" value=\"`l3vpn.ac1_protocol_bgp_as`\"/>\n<parameter name=\"field35\" value=\"`$prop.l3vpn.ac1_protocol_bgp_as`\"/>\n<parameter name=\"field36\" value=\"`l3vpn.vrf1-id`\"/>\n<parameter name=\"field37\" value=\"`$prop.l3vpn.vrf1-id`\"/>\n<parameter name=\"field38\" value=\"`l3vpn.site2_name`\"/>\n<parameter name=\"field39\" value=\"`$prop.l3vpn.site2_name`\"/>\n<parameter name=\"field40\" value=\"`l3vpn.vpn-policy2-id`\"/>\n<parameter name=\"field41\" value=\"`$prop.l3vpn.vpn-policy2-id`\"/>\n<parameter name=\"field42\" value=\"`l3vpn.entry2-id`\"/>\n<parameter name=\"field43\" value=\"`$prop.l3vpn.entry2-id`\"/>\n<parameter name=\"field44\" value=\"`l3vpn.sna2_name`\"/>\n<parameter name=\"field45\" value=\"`$prop.l3vpn.sna2_name`\"/>\n<parameter name=\"field46\" value=\"`l3vpn.pe2_id`\"/>\n<parameter name=\"field47\" value=\"`$prop.l3vpn.pe2_id`\"/>\n<parameter name=\"field48\" value=\"`l3vpn.ac2_id`\"/>\n<parameter name=\"field49\" value=\"`$prop.l3vpn.ac2_id`\"/>\n<parameter name=\"field50\" value=\"`l3vpn.ac2_svlan`\"/>\n<parameter name=\"field51\" value=\"`$prop.l3vpn.ac2_svlan`\"/>\n<parameter name=\"field52\" value=\"`l3vpn.ac2_peer_ip`\"/>\n<parameter name=\"field53\" value=\"`$prop.l3vpn.ac2_peer_ip`\"/>\n<parameter name=\"field54\" value=\"`l3vpn.ac2_ip`\"/>\n<parameter name=\"field55\" value=\"`$prop.l3vpn.ac2_ip`\"/>\n<parameter name=\"field56\" value=\"`l3vpn.ac2_protocol`\"/>\n<parameter name=\"field57\" value=\"`$prop.l3vpn.ac2_protocol`\"/>\n<parameter name=\"field58\" value=\"`l3vpn.sna2-route-ip-prefix`\"/>\n<parameter name=\"field59\" value=\"`$prop.l3vpn.sna2-route-ip-prefix`\"/>\n<parameter name=\"field60\" value=\"`l3vpn.sna2-route-next-hop`\"/>\n<parameter name=\"field61\" value=\"`$prop.l3vpn.sna2-route-next-hop`\"/>\n<parameter name=\"field62\" value=\"`l3vpn.peer2_ip`\"/>\n<parameter name=\"field63\" value=\"`$prop.l3vpn.peer2_ip`\"/>\n<parameter name=\"field64\" value=\"`l3vpn.ac2_protocol_bgp_as`\"/>\n<parameter name=\"field65\" value=\"`$prop.l3vpn.ac2_protocol_bgp_as`\"/>\n<parameter name=\"field66\" value=\"`l3vpn.vrf2-id`\"/>\n<parameter name=\"field67\" value=\"`$prop.l3vpn.vrf2-id`\"/>\n<parameter name=\"field68\" value=\"`l3vpn.af_type`\"/>\n<parameter name=\"field69\" value=\"`$prop.l3vpn.af_type`\"/>",
+    "comments": "",
+    "outputs": 1,
+    "x": 716,
+    "y": 923,
+    "z": "b1905c0.2226628",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "d8859d72.093c7",
+    "type": "switchNode",
+    "name": "switch service-type",
+    "xml": "<switch test=\"`$prop.l3vpn.service-type`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 601,
+    "y": 1136.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "aa6051d7.d8472",
+        "6a9ebade.f8d4c4",
+        "a797d228.5ea9d"
+      ]
+    ]
+  },
+  {
+    "id": "aa6051d7.d8472",
+    "type": "outcomeTrue",
+    "name": "l3vpn-ipwan",
+    "xml": "<outcome value='l3vpn-ipwan'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 695,
+    "y": 1063.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "19938969.979a37"
+      ]
+    ]
+  },
+  {
+    "id": "6a9ebade.f8d4c4",
+    "type": "outcomeTrue",
+    "name": "l3vpn-sptn",
+    "xml": "<outcome value='l3vpn-sptn'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 776,
+    "y": 1251.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "89285d57.29b5c8"
+      ]
+    ]
+  },
+  {
+    "id": "a797d228.5ea9d",
+    "type": "outcomeTrue",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 769,
+    "y": 1297.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "a197c78b.b2ba1"
+      ]
+    ]
+  },
+  {
+    "id": "a197c78b.b2ba1",
+    "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 retrieving vpn binding\" />\n\n",
+    "comments": "",
+    "x": 932,
+    "y": 1301.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "efc2210e.acb0a",
+    "type": "execute",
+    "name": "execute vpn-policy1 entry id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.l3vpn.entry1-id\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 810,
+    "y": 514.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "a3ce796c.5c1d3"
+      ]
+    ]
+  },
+  {
+    "id": "a3ce796c.5c1d3",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1035,
+    "y": 517.9999389648438,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "2b0059a7.529b16"
+      ]
+    ]
+  },
+  {
+    "id": "2b0059a7.529b16",
+    "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 generation vpn policy ID\" />\n",
+    "comments": "",
+    "x": 1216,
+    "y": 515.9999389648438,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "1c90c17d.548b0f",
+    "type": "execute",
+    "name": "execute split ac1-route",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.l3vpn.ac1_route`'/>\n<parameter name=\"regex\" value=\" ## \"/>\n<parameter name=\"ctx_memory_result_key\" value=\"route1\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2200,
+    "y": 1212.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "49c2f0ca.cf2d3",
+        "f5ea72ca.f5ae4"
+      ]
+    ]
+  },
+  {
+    "id": "3fb5f0ac.682b3",
+    "type": "switchNode",
+    "name": "switch ac2_route",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_route'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1601,
+    "y": 1260.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "3283940e.8ab4c4"
+      ]
+    ]
+  },
+  {
+    "id": "e8fa40d3.8412",
+    "type": "switchNode",
+    "name": "switch ac1_route",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_route'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1602,
+    "y": 1211.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "841f9419.015d28"
+      ]
+    ]
+  },
+  {
+    "id": "841f9419.015d28",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1774,
+    "y": 1209.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "20b6ae7f.722c42"
+      ]
+    ]
+  },
+  {
+    "id": "3283940e.8ab4c4",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1787,
+    "y": 1268.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "1ced6183.ccd51e"
+      ]
+    ]
+  },
+  {
+    "id": "ac124744.03bff8",
+    "type": "set",
+    "name": "set ac1_route",
+    "xml": "<set>\n<parameter name='prop.l3vpn.ac1_route' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2171,
+    "y": 1160.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "81cb8cda.6d1ac8",
+    "type": "set",
+    "name": "set ac2_route",
+    "xml": "<set>\n<parameter name='prop.l3vpn.ac2_route' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2169,
+    "y": 1260.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "31d73427.5a24d4",
+    "type": "execute",
+    "name": "execute split ac2-route",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.l3vpn.ac2_route`'/>\n<parameter name=\"regex\" value=\" ## \"/>\n<parameter name=\"ctx_memory_result_key\" value=\"route2\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2193,
+    "y": 1305.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "79ee27c0.1560d",
+        "1e716ed9.5862f1"
+      ]
+    ]
+  },
+  {
+    "id": "20b6ae7f.722c42",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1925,
+    "y": 1209.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "ac124744.03bff8",
+        "1c90c17d.548b0f"
+      ]
+    ]
+  },
+  {
+    "id": "1ced6183.ccd51e",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1926,
+    "y": 1268.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "81cb8cda.6d1ac8",
+        "31d73427.5a24d4"
+      ]
+    ]
+  },
+  {
+    "id": "3e3972fa.77b7f6",
+    "type": "execute",
+    "name": "execute vrf1-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.l3vpn.vrf1-id\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 795,
+    "y": 616,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "634f24b4.8e0cd4"
+      ]
+    ]
+  },
+  {
+    "id": "d43bb648.453b08",
+    "type": "execute",
+    "name": "execute vrf2-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.l3vpn.vrf2-id\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 792.3333740234375,
+    "y": 673.333251953125,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "134b1747.a1ed89"
+      ]
+    ]
+  },
+  {
+    "id": "134b1747.a1ed89",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1042.3333740234375,
+    "y": 679.333251953125,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "e6e1ba3d.211b3"
+      ]
+    ]
+  },
+  {
+    "id": "634f24b4.8e0cd4",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1042,
+    "y": 620.9999389648438,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "f08db05b.65ee68"
+      ]
+    ]
+  },
+  {
+    "id": "f08db05b.65ee68",
+    "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 generation vpn policy ID\" />\n",
+    "comments": "",
+    "x": 1223,
+    "y": 618.9999389648438,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "e6e1ba3d.211b3",
+    "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 generation vpn policy ID\" />\n",
+    "comments": "",
+    "x": 1223.3333740234375,
+    "y": 677.333251953125,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "19938969.979a37",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 828,
+    "y": 1128.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "4a98e8a7.30e56",
+        "45ed0ae2.aa3684",
+        "d76dde.a5a8222",
+        "873707de.4b4938"
+      ]
+    ]
+  },
+  {
+    "id": "45ed0ae2.aa3684",
+    "type": "execute",
+    "name": "execute RestApiCallNode IPWAN Site Config",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir +'/l3smsitetemplate.json'`\"/>\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url +'/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/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": 1096,
+    "y": 1212.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "a7b0af3.7ac715",
+        "5b1c0e49.45a8a8"
+      ]
+    ]
+  },
+  {
+    "id": "d76dde.a5a8222",
+    "type": "execute",
+    "name": "execute RestApiCallNode IPWAN VRF Config",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir +'/l3smvrftemplate.json'`\"/>\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url +'/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/huawei-ac-net-l3vpn-svc-vfi:vrf-attributes'`\"/>\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=\"vrf-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": 1110,
+    "y": 1115.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "a7b0af3.7ac715",
+        "a1139f25.6746c"
+      ]
+    ]
+  },
+  {
+    "id": "49c2f0ca.cf2d3",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2418,
+    "y": 1204.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "3810cf64.b01548"
+      ]
+    ]
+  },
+  {
+    "id": "3810cf64.b01548",
+    "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": 2599,
+    "y": 1202.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "79ee27c0.1560d",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2416,
+    "y": 1306.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "92d0c467.dd3bc8"
+      ]
+    ]
+  },
+  {
+    "id": "92d0c467.dd3bc8",
+    "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": 2597,
+    "y": 1304.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "f5ea72ca.f5ae4",
+    "type": "failure",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2417,
+    "y": 1138.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "842cbe45.ff51d8"
+      ]
+    ]
+  },
+  {
+    "id": "1e716ed9.5862f1",
+    "type": "failure",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2413,
+    "y": 1258.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "f22dbcb6.0cf78"
+      ]
+    ]
+  },
+  {
+    "id": "842cbe45.ff51d8",
+    "type": "set",
+    "name": "set route1 ip-prefix next-hop",
+    "xml": "<set>\n<parameter name='prop.l3vpn.sna1-route.ip-prefix' value='`$route1[0]`' />\n<parameter name='prop.l3vpn.sna1-route.next-hop' value='`$route1[1]`' />\n",
+    "comments": "",
+    "x": 2624,
+    "y": 1132.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "f22dbcb6.0cf78",
+    "type": "set",
+    "name": "set route2 ip-prefix next-hop",
+    "xml": "<set>\n<parameter name='prop.l3vpn.sna2-route.ip-prefix' value='`$route2[0]`' />\n<parameter name='prop.l3vpn.sna2-route.next-hop' value='`$route2[1]`' />",
+    "comments": "",
+    "x": 2624,
+    "y": 1251.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "4946b4b6.2645f4",
+    "type": "execute",
+    "name": "execute generate-underlay-network-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.l3vpn.network-id\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 851,
+    "y": 767,
+    "z": "b1905c0.2226628",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "3c09007b.15e098",
+    "type": "switchNode",
+    "name": "switch service-data.networks_length",
+    "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 809,
+    "y": 848,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "e6d49c8.04a73e",
+        "928abf9d.17e3a8"
+      ]
+    ]
+  },
+  {
+    "id": "e6d49c8.04a73e",
+    "type": "other",
+    "name": "Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1082.8095703125,
+    "y": 816.952392578125,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "a786c98a.f21ac"
+      ]
+    ]
+  },
+  {
+    "id": "928abf9d.17e3a8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1077.666748046875,
+    "y": 862.6666870117188,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "58a5992a.3c5588"
+      ]
+    ]
+  },
+  {
+    "id": "a786c98a.f21ac",
+    "type": "set",
+    "name": "set nidx",
+    "xml": "<set>\n<parameter name='nidx' value='0' />\n",
+    "comments": "",
+    "x": 1235.8095703125,
+    "y": 816.5238037109375,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "58a5992a.3c5588",
+    "type": "set",
+    "name": "set nidx",
+    "xml": "<set>\n<parameter name='nidx' value='`$service-data.networks.network_length`' />\n",
+    "comments": "",
+    "x": 1237.2381591796875,
+    "y": 861.5238647460938,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "6c6c2617.940e5",
+    "type": "set",
+    "name": "set network in service-data",
+    "xml": "<set>\n<parameter name='service-data.networks.network[$nidx].network-id' value='`$prop.l3vpn.network-id`' />\n<parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />\n<parameter name='service-data.networks.network_length' value='`$nidx+1`' />\n\n",
+    "comments": "",
+    "x": 723,
+    "y": 1336,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "68a6c57e.f14dec",
+    "type": "set",
+    "name": "set networkId and network-object-path",
+    "xml": "<set>\n<parameter name='networkId' value='`$prop.l3vpn.network-id`' />\n<parameter name=\"network-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.l3vpn.network-id  + '/network-data/'` \" />",
+    "comments": "",
+    "x": 754,
+    "y": 1482,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "26e0b74.7b173c8",
+    "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": 678,
+    "y": 1696,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "d899adb0.900798",
+    "type": "set",
+    "name": "set network-level-oper-status",
+    "xml": "<set>\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />",
+    "comments": "",
+    "x": 722,
+    "y": 1531,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "8e08cbd2.d417e8",
+    "type": "get-resource",
+    "name": "get-resource pnf",
+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"pnf\" \n\t\tkey=\"pnf.pnf-name = $prop.l3vpn.pe1_id AND \n\t\t     depth = '0'\"\n        pfx='tmp.aai.pnf' local-only='false' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 800,
+    "y": 254,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "df2735fd.61f1e8",
+        "63fc7927.79a528",
+        "81648fb3.dcd7d8"
+      ]
+    ]
+  },
+  {
+    "id": "df2735fd.61f1e8",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1122,
+    "y": 144,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "9d008f77.afdad"
+      ]
+    ]
+  },
+  {
+    "id": "63fc7927.79a528",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1125.490966796875,
+    "y": 191.57403564453125,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "91ed21e1.d136e"
+      ]
+    ]
+  },
+  {
+    "id": "81648fb3.dcd7d8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1120.823974609375,
+    "y": 232.9073486328125,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "5af66dea.2e7014"
+      ]
+    ]
+  },
+  {
+    "id": "91ed21e1.d136e",
+    "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 pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`\" />\n\n",
+    "comments": "",
+    "x": 1302.0623779296875,
+    "y": 179.85977172851562,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "5af66dea.2e7014",
+    "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 pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`\" />\n\n",
+    "comments": "",
+    "x": 1308.5965309143066,
+    "y": 228.34654140472412,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "9d008f77.afdad",
+    "type": "set",
+    "name": "set tmp.thirdparty-sdnc-id",
+    "xml": "<set>\n<parameter name='tmp.thirdparty-sdnc-id' value=\"`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`\" />\n",
+    "comments": "",
+    "x": 1326,
+    "y": 131,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "387886dd.77b922",
+    "type": "save",
+    "name": "save underlay configuration in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='configuration' \n      key='configuration.configuration-id = $prop.l3vpn.network-id' >\n<parameter name='configuration-id' value='`$prop.l3vpn.network-id`' />\n<parameter name='configuration-type' value='underlay' />\n<parameter name='configuration-sub-type' value='l3vpn' />\n<parameter name='orchestration-status' value='Created' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$prop.l3vpn.network-id`' />\n<parameter name='configuration-selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.l3vpn.network-id  + '/network-data/'` \" />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 733,
+    "y": 1590,
+    "z": "b1905c0.2226628",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "60cb5057.fb4318",
+    "type": "save",
+    "name": "save service relationship in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \n      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id \n         AND customer.global-customer-id = $service-data.networks.network[$nidx].network-data.service-information.global-customer-id \n         AND service-subscription.service-type = $service-data.networks.network[$nidx].network-data.service-information.subscription-service-type' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"configuration\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/configurations/configuration/' + $prop.l3vpn.network-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"configuration.configuration-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.l3vpn.network-id`\" />",
+    "comments": "",
+    "outputs": 1,
+    "x": 726,
+    "y": 1646,
+    "z": "b1905c0.2226628",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "fdabde17.5c847",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1248.5,
+    "y": 405.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "a016ef4c.00b8d8",
+        "42d21e94.8794d",
+        "141c3d3d.ab7053",
+        "4ee7a07.d59c26",
+        "5c63bd35.850224",
+        "58f3e289.2a7e64",
+        "95375fe3.44bc28",
+        "fe0b88f6.f80e9",
+        "7a18b8ce.d5dc",
+        "13b6f73a.13b789",
+        "fd7f4144.b3829",
+        "45ea1a7b.99de84",
+        "2d742a69.fb645e",
+        "a750a836.67c46",
+        "32c3f1e3.30689e",
+        "e951ad31.5ca928",
+        "e3393629.af0d3",
+        "62f6947f.61850c",
+        "746e4da0.8ed054",
+        "ce1e821a.8edd98",
+        "ac3cc96e.e8c948",
+        "baf40051.ee5bc",
+        "c4c0db18.879888",
+        "e8fa40d3.8412",
+        "3fb5f0ac.682b3"
+      ]
+    ]
+  },
+  {
+    "id": "873707de.4b4938",
+    "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": 969,
+    "y": 920.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "7ec3a0d9.74ab38",
+        "d68f58c.e668e28"
+      ]
+    ]
+  },
+  {
+    "id": "7ec3a0d9.74ab38",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1204,
+    "y": 898.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "1169f76b.30c241"
+      ]
+    ]
+  },
+  {
+    "id": "d68f58c.e668e28",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1196.25,
+    "y": 952.6428527832031,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "f88bda1b.6ed7c8"
+      ]
+    ]
+  },
+  {
+    "id": "f88bda1b.6ed7c8",
+    "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": 1349,
+    "y": 952.3929138183594,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "1169f76b.30c241",
+    "type": "set",
+    "name": "set token-id",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+    "comments": "",
+    "x": 1358,
+    "y": 899.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "a7b0af3.7ac715",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1384,
+    "y": 1071.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "18af9724.8ec0e1"
+      ]
+    ]
+  },
+  {
+    "id": "a1139f25.6746c",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1391.25,
+    "y": 1166.6427917480469,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "d91cb09e.e11ad8"
+      ]
+    ]
+  },
+  {
+    "id": "d91cb09e.e11ad8",
+    "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 vrf rest api\" />\n",
+    "comments": "",
+    "x": 1363,
+    "y": 1351.3929138183594,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "a2104e27.ed674",
+    "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": 692.96875,
+    "y": 992,
+    "z": "b1905c0.2226628",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "18af9724.8ec0e1",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1224,
+    "y": 1402.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "5b1c0e49.45a8a8",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1314,
+    "y": 1466.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "b1419921.c878d"
+      ]
+    ]
+  },
+  {
+    "id": "b1419921.c878d",
+    "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 site rest api\" />\n",
+    "comments": "",
+    "x": 1343.75,
+    "y": 1524.7500915527344,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "b1d48b0e.d19db",
+    "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": 1200,
+    "y": 1054.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "ced00609.d81b48",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1055,
+    "y": 1051.9999694824219,
+    "z": "b1905c0.2226628",
+    "wires": [
+      [
+        "b1d48b0e.d19db"
+      ]
+    ]
+  },
+  {
+    "id": "b676786f.1bea58",
+    "type": "set",
+    "name": "set vrf in network-data",
+    "xml": "<set>\n<parameter name='service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx].name' value='vrf1_id' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx].value' value='`$prop.l3vpn.vrf1-id`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx+1].name' value='vrf2_id' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx+1].value' value='`$prop.l3vpn.vrf2-id`d' />\n<parameter name='service-data.networks.network[$nidx].network_data.network-request-input.network-input-parameters.param_length' value='`$pidx+2`' />",
+    "comments": "",
+    "x": 705,
+    "y": 1420,
+    "z": "b1905c0.2226628",
+    "wires": []
+  },
+  {
+    "id": "c690b1cd.2300e8",
+    "type": "set",
+    "name": "set pidx",
+    "xml": "<set>\n<parameter name='pidx' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' />",
+    "comments": "",
+    "x": 704,
+    "y": 1377,
+    "z": "b1905c0.2226628",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-deactivate.json
new file mode 100644
index 0000000..e8251b4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-deactivate.json
@@ -0,0 +1 @@
+[{"id":"14daaafb.cfb32d","type":"dgstart","name":"DGSTART","outputs":1,"x":173.75,"y":129,"z":"77025d4d.14b56c","wires":[["f4bbcde0.af09e"]]},{"id":"f4bbcde0.af09e","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.03570556640625,"y":169.23811149597168,"z":"77025d4d.14b56c","wires":[["5fbb453b.4759ec"]]},{"id":"5fbb453b.4759ec","type":"method","name":"network-topology-operation-deactivate","xml":"<method rpc='network-topology-operation-deactivate' mode='sync'>\n","comments":"","outputs":1,"x":290.4286346435547,"y":212.7499942779541,"z":"77025d4d.14b56c","wires":[["7d0cac4e.a012bc"]]},{"id":"7d0cac4e.a012bc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":289.7500305175781,"y":307.4434814453125,"z":"77025d4d.14b56c","wires":[["56f1ffc8.cfe08","3307fea0.093582","1815769f.84fee9","70d42023.37ca2","ca5854c8.77f3e8","b18b10b3.ba84","fca0b4.8ea8575","52526c97.38f26c"]]},{"id":"892f2ad9.7eb3d","type":"not-found","name":"not found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":809.75,"y":303,"z":"77025d4d.14b56c","wires":[["f4ddd25b.a09008"]]},{"id":"f4ddd25b.a09008","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"network-id not found in AAI\" />","comments":"","x":972.9443969726562,"y":303.11122131347656,"z":"77025d4d.14b56c","wires":[]},{"id":"56f1ffc8.cfe08","type":"get-resource","name":"get AnAI - l3-network by network-id","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $network-topology-operation-input.network-information.network-id\n\t\tAND depth='all'\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.l3-network\">\n","comments":"","outputs":1,"x":574.4721069335938,"y":307.48460388183594,"z":"77025d4d.14b56c","wires":[["892f2ad9.7eb3d","5598ef33.7bef78"]]},{"id":"5598ef33.7bef78","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":802.4721069335938,"y":341.48460388183594,"z":"77025d4d.14b56c","wires":[["aa29118b.944c18"]]},{"id":"aa29118b.944c18","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + 'from AnAI'\" />","comments":"","x":954.5831909179688,"y":341.7068328857422,"z":"77025d4d.14b56c","wires":[]},{"id":"c78c5de.c563b2","type":"set","name":"set entity-id and plan-name","xml":"<set>\n\t<parameter name=\"eipam-ip-block.entity-id\" value=\"`$aai.l3-network.subnets.subnet[$sidx].subnet-id`\"/>\n\t<parameter name=\"eipam-ip-block.plans[0].plan-name\" value=\"$tmp.eipam-subnet-row.plan-name\"/>\n","comments":"","x":1811.8294677734375,"y":1034.0794677734375,"z":"77025d4d.14b56c","wires":[]},{"id":"a643faf5.fe499","type":"for","name":"for 0..subnet_length","xml":"<for index='sidx' start='0' end='`$aai.l3-network.subnets.subnet_length`' >\n","comments":"","outputs":1,"x":1010.1151733398438,"y":889.2223434448242,"z":"77025d4d.14b56c","wires":[["68c43f3c.00c098"]]},{"id":"68c43f3c.00c098","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1216.1151733398438,"y":889.3651733398438,"z":"77025d4d.14b56c","wires":[["f980e441.a4f0e8","4742308d.adb84"]]},{"id":"4742308d.adb84","type":"get-resource","name":"get eipam-ip-subnet by subnet-id","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS where entity_id = $aai.l3-network.subnets.subnet[$sidx].subnet-id ; \"\n        pfx='tmp.eipam-subnet-row'>\n\n","comments":"","outputs":1,"x":1169.258056640625,"y":1017.2222900390625,"z":"77025d4d.14b56c","wires":[["ef2c2ad7.25d89","da139eef.0a22f8","4e6832fa.59be34"]]},{"id":"7e87eaef.56d814","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_SUBNETS failed to find subnet matching aai subnet.\" />\n\t","comments":"","x":1577.4008483886719,"y":964.9365541636944,"z":"77025d4d.14b56c","wires":[]},{"id":"ef2c2ad7.25d89","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1427.9724426269531,"y":1032.9365245997906,"z":"77025d4d.14b56c","wires":[["dde7fe1d.76f4e8"]]},{"id":"da139eef.0a22f8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1428.2627258300781,"y":966.9365541636944,"z":"77025d4d.14b56c","wires":[["7e87eaef.56d814"]]},{"id":"4e6832fa.59be34","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1429.1198348999023,"y":1001.2222747802734,"z":"77025d4d.14b56c","wires":[["c1fa360.29f75c8"]]},{"id":"dde7fe1d.76f4e8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1580.6865310668945,"y":1034.3651449382305,"z":"77025d4d.14b56c","wires":[["c78c5de.c563b2"]]},{"id":"c1fa360.29f75c8","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Subnet not found in EIPAM_IP_SUBNETS - deactivate failed.\" />\n\t","comments":"","x":1578.0673828125,"y":1000.5556392669678,"z":"77025d4d.14b56c","wires":[]},{"id":"f980e441.a4f0e8","type":"save","name":"update AnAI - subnet","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $aai.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $eipam-ip-block.entity-id\" >\n<parameter name=\"orchestration-status\" value=\"PendingDelete\" />\n\t\t","comments":"","outputs":1,"x":1122.4007568359375,"y":1072.2380981445312,"z":"77025d4d.14b56c","wires":[["4a6d988.b322be8","840ca69.87f17d8"]]},{"id":"3e773e43.8c9882","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Failure updating orchestration-status in AAI for subnet.\" />\n\t","comments":"","x":1582.1469192504883,"y":1076.0793306529522,"z":"77025d4d.14b56c","wires":[]},{"id":"237731b2.80bc3e","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1432.7185134887695,"y":1144.0793010890484,"z":"77025d4d.14b56c","wires":[["2dc84f58.c960e"]]},{"id":"4a6d988.b322be8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1421.5801601409912,"y":1082.3650610148907,"z":"77025d4d.14b56c","wires":[["3e773e43.8c9882"]]},{"id":"840ca69.87f17d8","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1433.8659057617188,"y":1112.3650512695312,"z":"77025d4d.14b56c","wires":[["7462188c.17d9a"]]},{"id":"2dc84f58.c960e","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1585.432601928711,"y":1145.5079214274883,"z":"77025d4d.14b56c","wires":[[]]},{"id":"7462188c.17d9a","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Failure updating orchestration-status in AAI for subnet.  Subnet not found.\" />\n\t","comments":"","x":1581.1467590332031,"y":1108.3650817871094,"z":"77025d4d.14b56c","wires":[]},{"id":"70d42023.37ca2","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":565.5436744689941,"y":1408.3650598526,"z":"77025d4d.14b56c","wires":[]},{"id":"b18b10b3.ba84","type":"set","name":"set object-path","xml":"<set>\n<parameter name='network-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $network-topology-operation-input.service-information.service-instance-id\n + '/service-data/networks/network/'\n + $networkId\n + '/network-data/network-topology/'` \" />\n \n","comments":"","x":565.5476188659668,"y":1328.5591020584106,"z":"77025d4d.14b56c","wires":[]},{"id":"3307fea0.093582","type":"set","name":"set networkId","xml":"<set>\n<parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\n","comments":"","x":559.833251953125,"y":1291.4162101745605,"z":"77025d4d.14b56c","wires":[]},{"id":"1815769f.84fee9","type":"set","name":"set network-level-oper-status","xml":"<set>\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />\n","comments":"","x":607.8333129882812,"y":1367.987564086914,"z":"77025d4d.14b56c","wires":[]},{"id":"52526c97.38f26c","type":"set","name":"copy input to service-data","xml":"<set>\n<parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n","comments":"","x":601.2617874145508,"y":1254.7494916915894,"z":"77025d4d.14b56c","wires":[]},{"id":"ca5854c8.77f3e8","type":"switchNode","name":"switch $aai.l3-network.subnets.subnet_length","xml":"<switch test='`$aai.l3-network.subnets.subnet_length`'>\n","comments":"","outputs":1,"x":609.75,"y":403.0000343322754,"z":"77025d4d.14b56c","wires":[["232b1d63.e94362","6a5ead37.eada7c"]]},{"id":"232b1d63.e94362","type":"other","name":"outcome Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":905.75,"y":403.0000343322754,"z":"77025d4d.14b56c","wires":[["bc99db97.911"]]},{"id":"bc99db97.911","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=\"no networks found\" />\n","comments":"","x":1097.527587890625,"y":402.88901138305664,"z":"77025d4d.14b56c","wires":[]},{"id":"6a5ead37.eada7c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":891.75,"y":433.00006103515625,"z":"77025d4d.14b56c","wires":[["cdc25fad.e85d48"]]},{"id":"fca0b4.8ea8575","type":"save","name":"update AnAI - network","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $aai.l3-network.network-id\" >\n<parameter name=\"orchestration-status\" value=\"PendingDelete\" />\n\t\t","comments":"","outputs":1,"x":606.75,"y":1166.9998931884766,"z":"77025d4d.14b56c","wires":[["e31687c4.b37f78","c340787e.1371"]]},{"id":"fb75aff2.792f48","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Failure updating orchestration-status in AAI for l3-network\" />\n\t","comments":"","x":1010.4961700439453,"y":1156.8411798477173,"z":"77025d4d.14b56c","wires":[]},{"id":"d509e915.753cd","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":861.0677642822266,"y":1224.8411502838135,"z":"77025d4d.14b56c","wires":[["fd8de859.5c0a58"]]},{"id":"e31687c4.b37f78","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":849.9294109344482,"y":1163.1269102096558,"z":"77025d4d.14b56c","wires":[["fb75aff2.792f48"]]},{"id":"c340787e.1371","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":862.2151565551758,"y":1193.1269004642963,"z":"77025d4d.14b56c","wires":[["fc060a13.6445d"]]},{"id":"fd8de859.5c0a58","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1013.781852722168,"y":1226.2697706222534,"z":"77025d4d.14b56c","wires":[[]]},{"id":"fc060a13.6445d","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Failure updating orchestration-status in AAI for l3-network.  Network not found.\" />\n\t","comments":"","x":1009.4960098266602,"y":1189.1269309818745,"z":"77025d4d.14b56c","wires":[]},{"id":"cdc25fad.e85d48","type":"switchNode","name":"switch network-instance-group-id","xml":"<switch test='`$network-data.network-topology.network-topology-identifier-structure.network-instance-group-id`'>\n","comments":"","outputs":1,"x":592.49609375,"y":497.74609375,"z":"77025d4d.14b56c","wires":[["18fc8322.dd2f4d","2194454c.3682ca"]]},{"id":"18fc8322.dd2f4d","type":"other","name":"outcome Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":885.49609375,"y":496.24609375,"z":"77025d4d.14b56c","wires":[["86679cd0.c293d8"]]},{"id":"2194454c.3682ca","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":876.49609375,"y":527.24609375,"z":"77025d4d.14b56c","wires":[["994f705c.0c442"]]},{"id":"994f705c.0c442","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1071.49609375,"y":526.24609375,"z":"77025d4d.14b56c","wires":[["acafc97.3adb1b8"]]},{"id":"acafc97.3adb1b8","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 collection activate failed\" />\n","comments":"","x":1272.49609375,"y":521.24609375,"z":"77025d4d.14b56c","wires":[]},{"id":"1e224df6.f166ba","type":"comment","name":"need to implement this","info":"","comments":"","x":1302.49609375,"y":489.74609375,"z":"77025d4d.14b56c","wires":[]},{"id":"86679cd0.c293d8","type":"switchNode","name":"switch from-preload","xml":"<switch test='`$service-data.networks.network[$nidx].network-data.network-information.from-preload`'>\n","comments":"","outputs":1,"x":558.49609375,"y":591.74609375,"z":"77025d4d.14b56c","wires":[["6131428b.0d8d6c","b1a3cb6c.9a95f8"]]},{"id":"6131428b.0d8d6c","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":546.49609375,"y":670.24609375,"z":"77025d4d.14b56c","wires":[["aa34043d.dac1c8"]]},{"id":"b1a3cb6c.9a95f8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":568.4961547851562,"y":888.24609375,"z":"77025d4d.14b56c","wires":[["32048c62.298084"]]},{"id":"aa34043d.dac1c8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":732.74609375,"y":671.24609375,"z":"77025d4d.14b56c","wires":[["aa5a777f.f5c22"]]},{"id":"32048c62.298084","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":780.7461547851562,"y":888.24609375,"z":"77025d4d.14b56c","wires":[["a643faf5.fe499"]]},{"id":"aa5a777f.f5c22","type":"for","name":"for 0..subnet_length","xml":"<for index='sidx' start='0' end='`$aai.l3-network.subnets.subnet_length`' >\n","comments":"","outputs":1,"x":939.49609375,"y":671.74609375,"z":"77025d4d.14b56c","wires":[["aa6f6d68.9a1f58"]]},{"id":"aa6f6d68.9a1f58","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1145.49609375,"y":671.8889236450195,"z":"77025d4d.14b56c","wires":[["3f1cbdf1.3ab7ca"]]},{"id":"3f1cbdf1.3ab7ca","type":"save","name":"update AnAI - subnet","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $aai.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $aai.l3-network.subnets.subnet[$sidx].subnet-id\" >\n<parameter name=\"orchestration-status\" value=\"PendingDelete\" />\n\t\t","comments":"","outputs":1,"x":1374.49609375,"y":670.74609375,"z":"77025d4d.14b56c","wires":[["566ebc6d.9edeac","39776162.ed9356"]]},{"id":"63d5a91e.32272","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Failure updating orchestration-status in AAI for subnet.\" />\n\t","comments":"","x":1759.242317199707,"y":664.5873872935772,"z":"77025d4d.14b56c","wires":[]},{"id":"2c140bc5.40cc2c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1609.8139114379883,"y":732.5873577296734,"z":"77025d4d.14b56c","wires":[["1a86f56d.e7b24b"]]},{"id":"566ebc6d.9edeac","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1598.67555809021,"y":670.8731176555157,"z":"77025d4d.14b56c","wires":[["63d5a91e.32272"]]},{"id":"39776162.ed9356","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1610.9613037109375,"y":700.8731079101562,"z":"77025d4d.14b56c","wires":[["f099c00a.ba535"]]},{"id":"1a86f56d.e7b24b","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1762.5279998779297,"y":734.0159780681133,"z":"77025d4d.14b56c","wires":[[]]},{"id":"f099c00a.ba535","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Failure updating orchestration-status in AAI for subnet.  Subnet not found.\" />\n\t","comments":"","x":1758.2421569824219,"y":696.8731384277344,"z":"77025d4d.14b56c","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-delete.json
new file mode 100644
index 0000000..232fa5e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-delete.json
@@ -0,0 +1,1355 @@
+[
+  {
+    "id": "ba06c89a.024e98",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 113.03125,
+    "y": 95.03125,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "35e8925f.3178be"
+      ]
+    ]
+  },
+  {
+    "id": "35e8925f.3178be",
+    "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": 325.03125381469727,
+    "y": 167.0312671661377,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "f972abf0.8e2ed8"
+      ]
+    ]
+  },
+  {
+    "id": "f972abf0.8e2ed8",
+    "type": "method",
+    "name": "method network-topology-operation-delete",
+    "xml": "<method rpc='network-topology-operation-delete' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 313.0313720703125,
+    "y": 255.03125,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "61264142.433c9"
+      ]
+    ]
+  },
+  {
+    "id": "61264142.433c9",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 589.0312805175781,
+    "y": 263.03126335144043,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "6c17c5f9.a1c91c",
+        "17a845f7.81ad5a",
+        "1c470b8.4988df5",
+        "ae6fca7d.b3be38",
+        "30cf8a2a.4aa6d6",
+        "3287501.60ecab",
+        "19bbbbde.0c4ee4",
+        "99fa60a9.97d56",
+        "c820d47.424eda8",
+        "68e3068e.972fd8",
+        "6c64d01.a0fff3"
+      ]
+    ]
+  },
+  {
+    "id": "6c17c5f9.a1c91c",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:validate-network-input-parameters",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-network-input-parameters' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 910.03125,
+    "y": 46.03125,
+    "z": "b1a89180.b5141",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "17a845f7.81ad5a",
+    "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 = $tmp.thirdparty-sdnc-id AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 854.03125,
+    "y": 491.0312194824219,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "f27f6e92.d1699",
+        "2cd26321.b8d7fc",
+        "207daa4b.421516"
+      ]
+    ]
+  },
+  {
+    "id": "f27f6e92.d1699",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1092.03125,
+    "y": 447.03125,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "4f5e00fc.7741e"
+      ]
+    ]
+  },
+  {
+    "id": "2cd26321.b8d7fc",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1096.522216796875,
+    "y": 488.6053161621094,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "2d398a89.807716"
+      ]
+    ]
+  },
+  {
+    "id": "207daa4b.421516",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1089.855224609375,
+    "y": 539.9385681152344,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "8e9c4cf9.162de"
+      ]
+    ]
+  },
+  {
+    "id": "2d398a89.807716",
+    "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 model is_bound_to_vpn=true but no vpn_binding is present\" />\n\n",
+    "comments": "",
+    "x": 1272.0936279296875,
+    "y": 486.8910217285156,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "8e9c4cf9.162de",
+    "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 retrieving vpn binding\" />\n\n",
+    "comments": "",
+    "x": 1250.6278076171875,
+    "y": 538.3777770996094,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "1c470b8.4988df5",
+    "type": "for",
+    "name": "for each network-input-parameters",
+    "xml": "<for index='idx' start='0' end='`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 872.03125,
+    "y": 224.03125,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "c4d07fe0.ade9b"
+      ]
+    ]
+  },
+  {
+    "id": "c4d07fe0.ade9b",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1153.8646240234375,
+    "y": 202.36459350585938,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "c0182537.1ffaf8",
+        "ce9d1ad8.d1f0c8",
+        "ae7fca3e.07e458",
+        "e1b9eee0.2059b8",
+        "f7a24587.ec9238",
+        "a35f5ef6.a6cd28"
+      ]
+    ]
+  },
+  {
+    "id": "c0182537.1ffaf8",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1362.03125,
+    "y": 163.03125,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "c674745c.2d98c8"
+      ]
+    ]
+  },
+  {
+    "id": "c674745c.2d98c8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1549.03125,
+    "y": 163.03125,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "ff72bcee.d766c"
+      ]
+    ]
+  },
+  {
+    "id": "ff72bcee.d766c",
+    "type": "set",
+    "name": "set name",
+    "xml": "<set>\n<parameter name='prop.l3vpn.name' value='`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1717.03125,
+    "y": 163.63125610351562,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "ce9d1ad8.d1f0c8",
+    "type": "switchNode",
+    "name": "switch service-type",
+    "xml": "<switch test=\"`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'serviceType'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1367.03125,
+    "y": 217.6312255859375,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "7439fd72.4e49b4"
+      ]
+    ]
+  },
+  {
+    "id": "7439fd72.4e49b4",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1551.0311889648438,
+    "y": 222.6312255859375,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "4c0474c2.96c4ac"
+      ]
+    ]
+  },
+  {
+    "id": "4c0474c2.96c4ac",
+    "type": "set",
+    "name": "set service-type",
+    "xml": "<set>\n<parameter name='prop.l3vpn.service-type' value='`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1720.0311889648438,
+    "y": 220.6312255859375,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "4f5e00fc.7741e",
+    "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].serviceUrl`\" />\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": 1278.03125,
+    "y": 444.0312194824219,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "d58d3bad.af4188",
+    "type": "execute",
+    "name": "execute REST DELETE VPN",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services/vpnservice=' + $prop.l3vpn.name`\" />\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": 1604.03125,
+    "y": 925.03125,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "a48f9d80.400a6",
+        "17b55d13.d0f583"
+      ]
+    ]
+  },
+  {
+    "id": "6c64d01.a0fff3",
+    "type": "switchNode",
+    "name": "switch service-type",
+    "xml": "<switch test=\"`$prop.l3vpn.service-type`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 813.03125,
+    "y": 595.03125,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "f5f24c7e.c89f9"
+      ]
+    ]
+  },
+  {
+    "id": "f5f24c7e.c89f9",
+    "type": "outcomeTrue",
+    "name": "l3vpn-ipwan",
+    "xml": "<outcome value='l3vpn-ipwan'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1070.03125,
+    "y": 596.0312271118164,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "730f31fc.13307"
+      ]
+    ]
+  },
+  {
+    "id": "ae6fca7d.b3be38",
+    "type": "switchNode",
+    "name": "switch service-data.networks.network_length",
+    "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 852.03125,
+    "y": 119.03125,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "520c693e.a9d358",
+        "655f0893.61f278",
+        "4cb232f8.ebf31c"
+      ]
+    ]
+  },
+  {
+    "id": "520c693e.a9d358",
+    "type": "other",
+    "name": "Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1269.03125,
+    "y": 56.03131103515625,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "55192e25.8885f"
+      ]
+    ]
+  },
+  {
+    "id": "55192e25.8885f",
+    "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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n",
+    "comments": "",
+    "x": 1487.8087158203125,
+    "y": 31.920257568359375,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "655f0893.61f278",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1181.0316162109375,
+    "y": 110.03132629394531,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "f1d97fd4.8fa63"
+      ]
+    ]
+  },
+  {
+    "id": "f1d97fd4.8fa63",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1352.3011474609375,
+    "y": 93.58586120605469,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "e876eb36.5c4d68",
+        "34cad983.d68aa6"
+      ]
+    ]
+  },
+  {
+    "id": "e876eb36.5c4d68",
+    "type": "for",
+    "name": "for nidx..service-data.networks.network[]",
+    "xml": "<for index='nidx' start='0' end='`$service-data.networks.network_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1650.317138671875,
+    "y": 74.45986938476562,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "5659c979.043e78"
+      ]
+    ]
+  },
+  {
+    "id": "34cad983.d68aa6",
+    "type": "switchNode",
+    "name": "switch tmp.nidx ",
+    "xml": "<switch test=\"`$tmp.nidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1571.6185302734375,
+    "y": 117.44305419921875,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "42b4cc11.e782c4"
+      ]
+    ]
+  },
+  {
+    "id": "42b4cc11.e782c4",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1772.047119140625,
+    "y": 123.01446533203125,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "fffba6d3.fe8418"
+      ]
+    ]
+  },
+  {
+    "id": "5659c979.043e78",
+    "type": "switchNode",
+    "name": "switch networkid found",
+    "xml": "<switch test=\"`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1960.7457275390625,
+    "y": 72.7099609375,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "c95e7fc4.b303b"
+      ]
+    ]
+  },
+  {
+    "id": "fffba6d3.fe8418",
+    "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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n",
+    "comments": "",
+    "x": 1943.4755859375,
+    "y": 123.15731811523438,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "c95e7fc4.b303b",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2166.697998046875,
+    "y": 71.60269165039062,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "6b863b90.836d94"
+      ]
+    ]
+  },
+  {
+    "id": "6b863b90.836d94",
+    "type": "set",
+    "name": "set tmp.nidx and ctx.network-data",
+    "xml": "<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='ctx.network-data.' value='`$service-data.networks.network[$nidx].`' />\n",
+    "comments": "",
+    "x": 2405.229736328125,
+    "y": 67.35269165039062,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "30cf8a2a.4aa6d6",
+    "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": 789.6978149414062,
+    "y": 1201.364501953125,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "3287501.60ecab",
+    "type": "get-resource",
+    "name": "get-resource pnf",
+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"pnf\" \n\t\tkey=\"pnf.pnf-name = $prop.l3vpn.pe1_id AND \n\t\t     depth = '0'\"\n        pfx='tmp.aai.pnf' local-only='false' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 810.03125,
+    "y": 368.9202575683594,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "c2bd93d4.a50d6",
+        "50eb06db.534748",
+        "a9ca7e11.e6b52"
+      ]
+    ]
+  },
+  {
+    "id": "c2bd93d4.a50d6",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1004.03125,
+    "y": 306.9202575683594,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "70989a52.14a154"
+      ]
+    ]
+  },
+  {
+    "id": "50eb06db.534748",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1013.522216796875,
+    "y": 349.4942932128906,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "a043bfd1.99253"
+      ]
+    ]
+  },
+  {
+    "id": "a9ca7e11.e6b52",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1006.855224609375,
+    "y": 397.8276062011719,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "a1cb98a2.af1948"
+      ]
+    ]
+  },
+  {
+    "id": "a043bfd1.99253",
+    "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": 1199.0936279296875,
+    "y": 350.780029296875,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "a1cb98a2.af1948",
+    "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": 1195.6278076171875,
+    "y": 401.26678466796875,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "70989a52.14a154",
+    "type": "set",
+    "name": "set tmp.thirdparty-sdnc-id",
+    "xml": "<set>\n<parameter name='tmp.thirdparty-sdnc-id' value=\"`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`\" />\n",
+    "comments": "",
+    "x": 1218.03125,
+    "y": 302.9202575683594,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "ae7fca3e.07e458",
+    "type": "switchNode",
+    "name": "switch pe1_id",
+    "xml": "<switch test=\"`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'pe1_id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1369.03125,
+    "y": 263.9202575683594,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "7fbf4ad7.4e3104"
+      ]
+    ]
+  },
+  {
+    "id": "7fbf4ad7.4e3104",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1555.03125,
+    "y": 272.9202575683594,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "63b25ae1.3cec14"
+      ]
+    ]
+  },
+  {
+    "id": "63b25ae1.3cec14",
+    "type": "set",
+    "name": "set pe1_id",
+    "xml": "<set>\n<parameter name='prop.l3vpn.pe1_id' value='`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1738.03125,
+    "y": 276.9202575683594,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "19bbbbde.0c4ee4",
+    "type": "delete",
+    "name": "delete underlay configuration in AAI",
+    "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='configuration' \n        key='configuration.configuration-id = $network-topology-operation-input.network-information.network-id'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 872.03125,
+    "y": 686.9202880859375,
+    "z": "b1a89180.b5141",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "1f654f28.833041",
+    "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": 1623.03125,
+    "y": 586.6979141235352,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "ca41c77.6b99238",
+        "b6f946b3.5d1538"
+      ]
+    ]
+  },
+  {
+    "id": "ca41c77.6b99238",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1863.03125,
+    "y": 549.6979141235352,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "fb54fc36.0391d"
+      ]
+    ]
+  },
+  {
+    "id": "b6f946b3.5d1538",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1870.28125,
+    "y": 616.3407974243164,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "987fca22.525748"
+      ]
+    ]
+  },
+  {
+    "id": "987fca22.525748",
+    "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": 2051.03125,
+    "y": 615.0908584594727,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "fb54fc36.0391d",
+    "type": "set",
+    "name": "set token-id",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='$token-result.data.token_id' />\n",
+    "comments": "",
+    "x": 2048.03125,
+    "y": 546.6979141235352,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "a48f9d80.400a6",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1899.03125,
+    "y": 737.6979370117188,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "c960eb18.e0632"
+      ]
+    ]
+  },
+  {
+    "id": "17b55d13.d0f583",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1851.28125,
+    "y": 978.3407592773438,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "896de823.531688"
+      ]
+    ]
+  },
+  {
+    "id": "896de823.531688",
+    "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 Delete VPN rest api\" />\n",
+    "comments": "",
+    "x": 2040.03125,
+    "y": 981.0908813476562,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "730f31fc.13307",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic='true'>",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1294.03125,
+    "y": 597.6979141235352,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "d58d3bad.af4188",
+        "e2203ccc.e2252",
+        "d01694ec.b6d578",
+        "1f654f28.833041",
+        "298989a7.60397e"
+      ]
+    ]
+  },
+  {
+    "id": "99fa60a9.97d56",
+    "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": 824.03125,
+    "y": 544.9202575683594,
+    "z": "b1a89180.b5141",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "298989a7.60397e",
+    "type": "execute",
+    "name": "execute REST DELETE Site",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/sites/site=' + $prop.l3vpn.site1_name`\" />\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=\"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": 1604,
+    "y": 668,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "a48f9d80.400a6",
+        "22e4152.0989b6a"
+      ]
+    ]
+  },
+  {
+    "id": "e2203ccc.e2252",
+    "type": "execute",
+    "name": "execute REST DELETE VRF1",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/huawei-ac-net-l3vpn-svc-vfi:vrf-attributes/vrf-attribute=' + $prop.l3vpn.vrf1-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=\"delete\"/>\n<parameter name=\"responsePrefix\" value=\"vrf1-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": 1604,
+    "y": 760,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "a48f9d80.400a6",
+        "ab599bb0.a4be38"
+      ]
+    ]
+  },
+  {
+    "id": "d01694ec.b6d578",
+    "type": "execute",
+    "name": "execute REST DELETE VRF2",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/huawei-ac-net-l3vpn-svc-vfi:vrf-attributes/vrf-attribute=' + $prop.l3vpn.vrf2-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=\"delete\"/>\n<parameter name=\"responsePrefix\" value=\"vrf2-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": 1611,
+    "y": 846,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "a48f9d80.400a6",
+        "a7e72531.ac08f"
+      ]
+    ]
+  },
+  {
+    "id": "c960eb18.e0632",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2056,
+    "y": 734,
+    "z": "b1a89180.b5141",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "22e4152.0989b6a",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1877,
+    "y": 673,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "c62b7174.0cde6"
+      ]
+    ]
+  },
+  {
+    "id": "c62b7174.0cde6",
+    "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 Delete Site rest api\" />\n",
+    "comments": "",
+    "x": 2057.75,
+    "y": 671.7500610351562,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "ab599bb0.a4be38",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1896,
+    "y": 805,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "fd500d75.5f667"
+      ]
+    ]
+  },
+  {
+    "id": "fd500d75.5f667",
+    "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 Delete VRF1 rest api\" />\n",
+    "comments": "",
+    "x": 2076.75,
+    "y": 803.7500610351562,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "a7e72531.ac08f",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1894,
+    "y": 879,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "6fdfb503.fe47a4"
+      ]
+    ]
+  },
+  {
+    "id": "6fdfb503.fe47a4",
+    "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 Delete VRF2 rest api\" />\n",
+    "comments": "",
+    "x": 2074.75,
+    "y": 877.7500610351562,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "e1b9eee0.2059b8",
+    "type": "switchNode",
+    "name": "switch site1_name",
+    "xml": "<switch test=\"`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'site1_name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1472,
+    "y": 326,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "dfa9e32d.91d8d8"
+      ]
+    ]
+  },
+  {
+    "id": "f7a24587.ec9238",
+    "type": "switchNode",
+    "name": "switch vrf1_id",
+    "xml": "<switch test=\"`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'vrf1_id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1477,
+    "y": 380.5999755859375,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "c15e7dfb.74d14"
+      ]
+    ]
+  },
+  {
+    "id": "a35f5ef6.a6cd28",
+    "type": "switchNode",
+    "name": "switch vrf2_id",
+    "xml": "<switch test=\"`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'vrf2_id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1479,
+    "y": 426.8890075683594,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "ca400331.dc161"
+      ]
+    ]
+  },
+  {
+    "id": "dfa9e32d.91d8d8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1659,
+    "y": 326,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "9e12816.9f59e"
+      ]
+    ]
+  },
+  {
+    "id": "c15e7dfb.74d14",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1660.9999389648438,
+    "y": 385.5999755859375,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "b6297fef.ebefb"
+      ]
+    ]
+  },
+  {
+    "id": "ca400331.dc161",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1665,
+    "y": 435.8890075683594,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "b6b8b28d.368718"
+      ]
+    ]
+  },
+  {
+    "id": "9e12816.9f59e",
+    "type": "set",
+    "name": "set site1_name",
+    "xml": "<set>\n<parameter name='prop.l3vpn.site1_name' value='`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1827,
+    "y": 326.6000061035156,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "b6297fef.ebefb",
+    "type": "set",
+    "name": "set vrf1_id",
+    "xml": "<set>\n<parameter name='prop.l3vpn.vrf1-id' value='`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1829.9999389648438,
+    "y": 383.5999755859375,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "b6b8b28d.368718",
+    "type": "set",
+    "name": "set vrf2_id",
+    "xml": "<set>\n<parameter name='prop.l3vpn.vrf2-id' value='`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1848,
+    "y": 439.8890075683594,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "4cb232f8.ebf31c",
+    "type": "outcome",
+    "name": "0",
+    "xml": "<outcome value='0'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1263,
+    "y": 20,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "55192e25.8885f"
+      ]
+    ]
+  },
+  {
+    "id": "c820d47.424eda8",
+    "type": "set",
+    "name": "set output to api handler",
+    "xml": "<set>\n<parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $network-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'` \" />\n \n",
+    "comments": "",
+    "x": 831,
+    "y": 1126,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "68e3068e.972fd8",
+    "type": "switchNode",
+    "name": "switch $service-data.networks.network_length",
+    "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 895,
+    "y": 980,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "cabb40c6.f63f28",
+        "d81def66.527288"
+      ]
+    ]
+  },
+  {
+    "id": "bb92afab.51f5a",
+    "type": "comment",
+    "name": "Remove network from service data",
+    "info": "",
+    "comments": "",
+    "x": 879.2342529296875,
+    "y": 936.991943359375,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "9977e826.19c58",
+    "type": "comment",
+    "name": "If only one remove all networks",
+    "info": "",
+    "comments": "",
+    "x": 1269.4179611206055,
+    "y": 941.2592601776123,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "cabb40c6.f63f28",
+    "type": "outcome",
+    "name": "1",
+    "xml": "<outcome value='1'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1198.0475997924805,
+    "y": 976.6664867401123,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "fbcf7a1e.85d56"
+      ]
+    ]
+  },
+  {
+    "id": "fbcf7a1e.85d56",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1377.3809127807617,
+    "y": 977.370283126831,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "2a5e806c.406808",
+        "4e176ca1.1f7854"
+      ]
+    ]
+  },
+  {
+    "id": "d81def66.527288",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1164.4285507202148,
+    "y": 1128.9998044967651,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "eec0d25e.96de08"
+      ]
+    ]
+  },
+  {
+    "id": "eec0d25e.96de08",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1386.4284286499023,
+    "y": 1128.9998044967651,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "30d886fb.de580a",
+        "4f8e70aa.dbe688",
+        "1413b75.f99b949",
+        "ec576987.8b044"
+      ]
+    ]
+  },
+  {
+    "id": "2a5e806c.406808",
+    "type": "set",
+    "name": "Remove networks",
+    "xml": "<set>\n\t<parameter name=\"service-data.networks.\" value=\"\"/>\n\n",
+    "comments": "",
+    "x": 1630.66650390625,
+    "y": 980.3333129882812,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "4e176ca1.1f7854",
+    "type": "set",
+    "name": "set new network length",
+    "xml": "<set>\n\t<parameter name=\"service-data.networks.network_length\" value=\"0\"/>\n\n\t\n",
+    "comments": "",
+    "x": 1646.9998779296875,
+    "y": 1015.0369710922241,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "ec576987.8b044",
+    "type": "set",
+    "name": "Set new network length",
+    "xml": "<set>\n\t<parameter name=\"tmp.new_length\" value=\"`$service-data.networks.network_length - 1`\"/>\n\t\n\t\n",
+    "comments": "",
+    "x": 1653.1322021484375,
+    "y": 1066.2591552734375,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "30d886fb.de580a",
+    "type": "for",
+    "name": "for snidx..service-data.networks.network[]",
+    "xml": "<for silentFailure='true' index='snidx' start='`$tmp.nidx + 1`' end='`$service-data.networks.network_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1701.83740234375,
+    "y": 1118.5631103515625,
+    "z": "b1a89180.b5141",
+    "wires": [
+      [
+        "161f519b.8ac7e6"
+      ]
+    ]
+  },
+  {
+    "id": "1413b75.f99b949",
+    "type": "set",
+    "name": "set new network length",
+    "xml": "<set>\n\t<parameter name=\"service-data.networks.network_length\" value=\"`$service-data.networks.network_length - 1`\"/>\n\n\t\n",
+    "comments": "",
+    "x": 1660.296272277832,
+    "y": 1162.333369255066,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "4f8e70aa.dbe688",
+    "type": "set",
+    "name": "Remove networks",
+    "xml": "<set>\n\t<parameter name=\"service-data.networks.network[$tmp.new_length].\" value=\"\"/>\n\n",
+    "comments": "",
+    "x": 1640.1427383422852,
+    "y": 1200.3013143539429,
+    "z": "b1a89180.b5141",
+    "wires": []
+  },
+  {
+    "id": "161f519b.8ac7e6",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1990.4284133911133,
+    "y": 1127.999789237976,
+    "z": "b1a89180.b5141",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-unassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-unassign.json
new file mode 100644
index 0000000..5e4576a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation-unassign.json
@@ -0,0 +1 @@
+[{"id":"dc1fd9f7.e545a","type":"dgstart","name":"DGSTART","outputs":1,"x":139.75,"y":101,"z":"43f4c62f.1fd828","wires":[["29d91179.d10066"]]},{"id":"29d91179.d10066","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":262.81348419189453,"y":170.1269941329956,"z":"43f4c62f.1fd828","wires":[["49549099.2e383"]]},{"id":"49549099.2e383","type":"method","name":"network-topology-operation-unassign","xml":"<method rpc='network-topology-operation-unassign' mode='sync'>\n","comments":"","outputs":1,"x":271.9841995239258,"y":240.30553722381592,"z":"43f4c62f.1fd828","wires":[["6e94f27d.431264"]]},{"id":"db751f4b.8bc6f","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":692.3612060546875,"y":603.6102905273438,"z":"43f4c62f.1fd828","wires":[["b5959608.819dc","a9cd0431.02027","b831e5ee.39b4b","d4cc2b91.b17998","b49913b8.cc5d68","a0bc945f.3b13","159c2061.38289","fc63ae25.4fe498","20e1b7e2.ee7b28","d7820e90.66544","64ac2528.ce87c4"]]},{"id":"bb84b390.807d6","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":357.5635795593262,"y":2815.964029312134,"z":"43f4c62f.1fd828","wires":[]},{"id":"b5959608.819dc","type":"delete","name":"delete l3-network","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\tkey=\"l3-network.network-id = $network-topology-operation-input.network-information.network-id\">","comments":"","outputs":1,"x":918.9087104797363,"y":1814.4601831436157,"z":"43f4c62f.1fd828","wires":[["39138b.122efc76"]]},{"id":"c4c50a60.6fe508","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while deleting network from AAI\" />\n\t","comments":"","x":1313.2420196533203,"y":1816.4601831436157,"z":"43f4c62f.1fd828","wires":[]},{"id":"39138b.122efc76","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1129.1039123535156,"y":1816.7935161590576,"z":"43f4c62f.1fd828","wires":[["c4c50a60.6fe508"]]},{"id":"c1b46a5.3ad0698","type":"for","name":"for snidx..service-data.networks.network[]","xml":"<for silentFailure='true' index='snidx' start='`$tmp.nidx + 1`' end='`$service-data.networks.network_length`' >\n","comments":"","outputs":1,"x":1840.6984901428223,"y":1677.6427574157715,"z":"43f4c62f.1fd828","wires":[["f1368ca.0c41e7"]]},{"id":"52743f74.cd7f88","type":"comment","name":"Remove network from service data","info":"","comments":"","x":1008.0953178405762,"y":1584.0715770721436,"z":"43f4c62f.1fd828","wires":[]},{"id":"91f7b863.62686","type":"set","name":"move network to remove one","xml":"<set>\n\t<parameter name=\"service-data.networks.network[$tmp.newidx].\" value=\"$service-data.networks.network[$snidx].\" />\n\t\n","comments":"","x":2375.289478302002,"y":1713.5238809585571,"z":"43f4c62f.1fd828","wires":[]},{"id":"64ac2528.ce87c4","type":"switchNode","name":"switch $service-data.networks.network_length","xml":"<switch test='`$service-data.networks.network_length`'>\n","comments":"","outputs":1,"x":1014.8610496520996,"y":1532.0796184539795,"z":"43f4c62f.1fd828","wires":[["877ea6c5.d00cc8","491f62c3.47b664"]]},{"id":"877ea6c5.d00cc8","type":"outcome","name":"1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1317.90864944458,"y":1528.7461051940918,"z":"43f4c62f.1fd828","wires":[["77c99a31.b5dc74"]]},{"id":"b14d5cee.e40bf","type":"set","name":"Remove networks","xml":"<set>\n\t<parameter name=\"service-data.networks.\" value=\"\"/>\n\n","comments":"","x":1750.5275535583496,"y":1532.4129314422607,"z":"43f4c62f.1fd828","wires":[]},{"id":"491f62c3.47b664","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1284.2896003723145,"y":1681.0794229507446,"z":"43f4c62f.1fd828","wires":[["34b7d009.cae53"]]},{"id":"f1368ca.0c41e7","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2110.289463043213,"y":1680.0794076919556,"z":"43f4c62f.1fd828","wires":[["91f7b863.62686","4e5d0ca9.9cff1c"]]},{"id":"6287f892.a7d6e8","type":"set","name":"set new network length","xml":"<set>\n\t<parameter name=\"service-data.networks.network_length\" value=\"`$service-data.networks.network_length - 1`\"/>\n\n\t\n","comments":"","x":1780.1573219299316,"y":1714.4129877090454,"z":"43f4c62f.1fd828","wires":[]},{"id":"b831e5ee.39b4b","type":"execute","name":"execute EIPAM deallocateAllSubnets","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"deallocateAllSubnets\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":1015.8241157531738,"y":1021.5186309814453,"z":"43f4c62f.1fd828","wires":[["fe7dd50e.50b1b8"]]},{"id":"fe7dd50e.50b1b8","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":1247.8242378234863,"y":1022.2421417236328,"z":"43f4c62f.1fd828","wires":[["3dc54850.44d7e"]]},{"id":"3dc54850.44d7e","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while deallocating subnets in EIPAM.\" />\n\t","comments":"","x":1403.8242378234863,"y":1022.2421417236328,"z":"43f4c62f.1fd828","wires":[]},{"id":"a9cd0431.02027","type":"set","name":"set: network-id to deallocate level 2 subnets","xml":"<set>\n\t<parameter name=\"eipam-ip-block.network-id\" value=\"`$network-topology-operation-input.network-information.network-id`\" />\n\t<parameter name=\"eipam-ip-block.level\" value='2' />\n\t<parameter name=\"eipam-ip-block.entity-id\" value='' />","comments":"","x":1033.2525901794434,"y":986.1777033805847,"z":"43f4c62f.1fd828","wires":[]},{"id":"d4cc2b91.b17998","type":"execute","name":"execute deletePoolByNetworkLevel for level 2 by network id","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"deletePoolByNetworkLevel\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":1082.8240699768066,"y":1057.703872680664,"z":"43f4c62f.1fd828","wires":[["431c3027.950d4"]]},{"id":"431c3027.950d4","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":1382.4907722473145,"y":1057.4272079467773,"z":"43f4c62f.1fd828","wires":[["7766f8e4.72bcf"]]},{"id":"7766f8e4.72bcf","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while deleting level 2 plans in EIPAM.\" />\n\t","comments":"","x":1540.8242073059082,"y":1057.7605895996094,"z":"43f4c62f.1fd828","wires":[]},{"id":"202f4938.e9bb06","type":"set","name":"Remove networks","xml":"<set>\n\t<parameter name=\"service-data.networks.network[$tmp.new_length].\" value=\"\"/>\n\n","comments":"","x":1760.0037879943848,"y":1752.3809328079224,"z":"43f4c62f.1fd828","wires":[]},{"id":"34b7d009.cae53","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1506.289478302002,"y":1681.0794229507446,"z":"43f4c62f.1fd828","wires":[["c1b46a5.3ad0698","202f4938.e9bb06","6287f892.a7d6e8","be2bd733.43ad18"]]},{"id":"b1c24f6a.90d3b8","type":"set","name":"set new network length","xml":"<set>\n\t<parameter name=\"service-data.networks.network_length\" value=\"0\"/>\n\n\t\n","comments":"","x":1766.860927581787,"y":1567.1165895462036,"z":"43f4c62f.1fd828","wires":[]},{"id":"77c99a31.b5dc74","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1497.2419624328613,"y":1529.4499015808105,"z":"43f4c62f.1fd828","wires":[["b14d5cee.e40bf","b1c24f6a.90d3b8"]]},{"id":"11c9fd9f.70f48a","type":"comment","name":"deallocate level 2 subnet and pool","info":"","comments":"","x":999.898136138916,"y":947.2595596313477,"z":"43f4c62f.1fd828","wires":[]},{"id":"b49913b8.cc5d68","type":"get-resource","name":"get-resource - Get all subnet/subnet keys for networkid ","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.network_id = $network-topology-operation-input.network-information.network-id and s.entity_id = k.entity_id ; \"\n        pfx='tmp.eipam-subnet-row[]'>\n\n","comments":"","outputs":1,"x":1093.4100799560547,"y":749.7119550704956,"z":"43f4c62f.1fd828","wires":[["609405ca.620c74","d8933947.ba4db8","63b4e541.5c11d4"]]},{"id":"4fddabef.34ea4c","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed.\" />\n\t","comments":"","x":1637.064998626709,"y":705.2594738006592,"z":"43f4c62f.1fd828","wires":[]},{"id":"609405ca.620c74","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1489.0651512145996,"y":739.2594757080078,"z":"43f4c62f.1fd828","wires":[["1f55d1ef.bd829e"]]},{"id":"d8933947.ba4db8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1487.9269561767578,"y":704.9261655807495,"z":"43f4c62f.1fd828","wires":[["4fddabef.34ea4c"]]},{"id":"63b4e541.5c11d4","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1491.9269828796387,"y":772.7595510482788,"z":"43f4c62f.1fd828","wires":[["2bbe7112.620d8e"]]},{"id":"1f55d1ef.bd829e","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1636.6867637634277,"y":739.4066362380981,"z":"43f4c62f.1fd828","wires":[["c65a88e5.41739"]]},{"id":"54f0e170.71356","type":"comment","name":"Get all subnets for network","info":"","comments":"","x":1007.1706466674805,"y":703.1271800994873,"z":"43f4c62f.1fd828","wires":[]},{"id":"4e5d0ca9.9cff1c","type":"set","name":"Set new index","xml":"<set>\n\t<parameter name=\"tmp.newidx\" value=\"`$snidx - 1`\"/>\n\t\n\t\n","comments":"","x":2324.9931983947754,"y":1675.338749885559,"z":"43f4c62f.1fd828","wires":[]},{"id":"a014a1fe.f199a","type":"comment","name":"If only one remove all networks","info":"","comments":"","x":1389.279010772705,"y":1493.3388786315918,"z":"43f4c62f.1fd828","wires":[]},{"id":"be2bd733.43ad18","type":"set","name":"Set new network length","xml":"<set>\n\t<parameter name=\"tmp.new_length\" value=\"`$service-data.networks.network_length - 1`\"/>\n\t\n\t\n","comments":"","x":1782.9931983947754,"y":1647.338807106018,"z":"43f4c62f.1fd828","wires":[]},{"id":"1ab45d14.8c0033","type":"get-resource","name":"get-resource - Determine if level 1 in use in other level 2 subnets","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_POOLS p, EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k \n        WHERE p.level = 2 \n        and p.plan_name = $tmp.plan-name\n        and k.level = 1 \n        and p.pool_id = s.pool_id and s.entity_id = k.entity_id \n        and k.key_value = $tmp.level1-key-value  ; \"\n        pfx='tmp.level2pool[]'>\n\n\n\n","comments":"","outputs":1,"x":3378.337146759033,"y":1459.4131045341492,"z":"43f4c62f.1fd828","wires":[["12bcde76.3cbb42","96958e60.5e2e","ae137af0.c6bed"]]},{"id":"7550ea17.f11994","type":"comment","name":"Determine if any other level 2 pool is using level 1 pool","info":"","comments":"","x":1056.5754127502441,"y":1230.7462005615234,"z":"43f4c62f.1fd828","wires":[]},{"id":"c4d31580.52b668","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed.\" />\n\t","comments":"","x":3856.5751304626465,"y":1456.8415656089783,"z":"43f4c62f.1fd828","wires":[]},{"id":"96958e60.5e2e","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":3708.575222015381,"y":1490.8415656089783,"z":"43f4c62f.1fd828","wires":[["521167e9.af1568"]]},{"id":"12bcde76.3cbb42","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3707.437026977539,"y":1456.50825548172,"z":"43f4c62f.1fd828","wires":[["c4d31580.52b668"]]},{"id":"ae137af0.c6bed","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":3713.1036987304688,"y":1523.5082211494446,"z":"43f4c62f.1fd828","wires":[["21d00080.5d0aa8"]]},{"id":"521167e9.af1568","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3870.482795715332,"y":1489.5603427886963,"z":"43f4c62f.1fd828","wires":[["f2b691d4.b440f"]]},{"id":"2bbe7112.620d8e","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1640.6946754455566,"y":773.3891286849976,"z":"43f4c62f.1fd828","wires":[[]]},{"id":"d14d4fa5.24ff3","type":"switchNode","name":"switch level1poolkeyvalue","xml":"<switch test='`$tmp.level1-key-value`'>\n","comments":"","outputs":1,"x":1402.2897987365723,"y":1302.6034870147705,"z":"43f4c62f.1fd828","wires":[["3f7110a3.27c0f","1ea7f701.55ede1"]]},{"id":"1ea7f701.55ede1","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1657.1944961547852,"y":1308.5558414459229,"z":"43f4c62f.1fd828","wires":[["440a027.2d0cffc"]]},{"id":"3f7110a3.27c0f","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1660.527976989746,"y":1351.651081085205,"z":"43f4c62f.1fd828","wires":[["9213f8b5.3fb228"]]},{"id":"a0bc945f.3b13","type":"set","name":"set prerequisites","xml":"<set>\n\t<parameter name=\"tmp.level1-key-value\" value=\"\"/>\n\t<parameter name=\"tmp.level1inuse\" value=\"false\" />\n\t<parameter name=\"pidx\" value=\"0\" />\n\t<parameter name=\"pidx-len\" value=\"0\" />\n\t\n","comments":"","x":973.02783203125,"y":629.3890380859375,"z":"43f4c62f.1fd828","wires":[]},{"id":"9213f8b5.3fb228","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1823.2422536214194,"y":1352.0320173899333,"z":"43f4c62f.1fd828","wires":[["ee89ef7d.859c6"]]},{"id":"21d00080.5d0aa8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3866.2417373657227,"y":1522.8415637016296,"z":"43f4c62f.1fd828","wires":[["92cb3670.2c1918"]]},{"id":"f2b691d4.b440f","type":"set","name":"set level1inuse = true","xml":"<set>\n\t<parameter name=\"tmp.level1inuse\" value=\"true\" />\n\t\n","comments":"","x":4106.955982208252,"y":1489.4129467010498,"z":"43f4c62f.1fd828","wires":[]},{"id":"92cb3670.2c1918","type":"get-resource","name":"get-resource - Get level 1 pool and subnet","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_POOLS p, EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k \n        WHERE p.level = 1 \n        and p.plan_name = $tmp.plan-name\n        and k.level = 1 \n        and p.pool_id = s.pool_id and s.entity_id = k.entity_id \n        and k.key_value = $tmp.level1-key-value  ; \"\n        pfx='tmp.level1pool[]'>\n\n","comments":"","outputs":1,"x":4174.696678161621,"y":1548.0795965194702,"z":"43f4c62f.1fd828","wires":[["211ddee7.6afc7a","2a705d08.95934a","b65babea.9af9e8"]]},{"id":"b7ebad3c.fdff58","type":"comment","name":"Try to clean up the level 1 pool","info":"","comments":"","x":4133.955848693848,"y":1519.0426225662231,"z":"43f4c62f.1fd828","wires":[]},{"id":"800c78ee.3f475","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed.\" />\n\t","comments":"","x":4620.384841918945,"y":1513.8044242858887,"z":"43f4c62f.1fd828","wires":[]},{"id":"2a705d08.95934a","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":4472.38493347168,"y":1547.8044242858887,"z":"43f4c62f.1fd828","wires":[["194ffcf4.22c8cb"]]},{"id":"211ddee7.6afc7a","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":4468.246738433838,"y":1516.4711141586304,"z":"43f4c62f.1fd828","wires":[["800c78ee.3f475"]]},{"id":"b65babea.9af9e8","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":4475.24674987793,"y":1583.8044242858887,"z":"43f4c62f.1fd828","wires":[["5aa36081.447ee"]]},{"id":"194ffcf4.22c8cb","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":4620.006546020508,"y":1547.951584815979,"z":"43f4c62f.1fd828","wires":[["cb941085.f5e398"]]},{"id":"5aa36081.447ee","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":4631.384803771973,"y":1583.1377506256104,"z":"43f4c62f.1fd828","wires":[[]]},{"id":"ce0bf737.56534","type":"execute","name":"execute EIPAM deallocateSubnet","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"deallocateSubnet\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":5336.760761260986,"y":1580.4447450637817,"z":"43f4c62f.1fd828","wires":[["3491152b.cc5692"]]},{"id":"3491152b.cc5692","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":5570.760688781738,"y":1579.835147857666,"z":"43f4c62f.1fd828","wires":[["c1d0112a.1c407"]]},{"id":"c1d0112a.1c407","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while deallocating subnet in EIPAM.\" />\n\t","comments":"","x":5739.760719299316,"y":1579.8351783752441,"z":"43f4c62f.1fd828","wires":[]},{"id":"f5f8ebf2.ab7f08","type":"set","name":"set","xml":"<set>\n<parameter name='eipam-ip-block.entity-id' value='`$tmp.level1pool[$lidx].entity-id`' />\n<parameter name='eipam-ip-block.ip-address' value='`$tmp.level1pool[$lidx].ip-address`' />\n<parameter name='eipam-ip-block.mask' value='`$tmp.level1pool[$lidx].prefix-length`' />\n<parameter name=\"eipam-ip-block.network-id\" value=\"`$tmp.level1pool[$lidx].network-id`\" />\n<parameter name=\"eipam-ip-block.pool-id\" value=\"`$tmp.level1pool[$lidx].pool-id`\" />\n<parameter name=\"eipam-ip-block.level\" value='1' />\n\n","comments":"","x":5256.760597229004,"y":1550.444764137268,"z":"43f4c62f.1fd828","wires":[]},{"id":"cb941085.f5e398","type":"for","name":"for lidx .. level1pool_length","xml":"<for silentFailure='true' index='lidx' start='0' end='`$tmp.level1pool_length`' >\n","comments":"","outputs":1,"x":4829.776371002197,"y":1549.1588859558105,"z":"43f4c62f.1fd828","wires":[["f16231fb.4b1f3"]]},{"id":"eebfb239.346a08","type":"execute","name":"execute EIPAM deletePoolByNetworkLevel","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"deletePoolByNetworkLevel\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":5365.226657867432,"y":1679.7305278778076,"z":"43f4c62f.1fd828","wires":[["68f38914.d2e988"]]},{"id":"68f38914.d2e988","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":5637.797691345215,"y":1669.4541721343994,"z":"43f4c62f.1fd828","wires":[["9f70667e.99cb78"]]},{"id":"9f70667e.99cb78","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while deleting pool in EIPAM.\" />\n\t","comments":"","x":5780.6074867248535,"y":1667.263780593872,"z":"43f4c62f.1fd828","wires":[]},{"id":"f16231fb.4b1f3","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":5052.443256378174,"y":1549.269947052002,"z":"43f4c62f.1fd828","wires":[["f5f8ebf2.ab7f08","ce0bf737.56534","d3591315.886188"]]},{"id":"902b0baa.add328","type":"switchNode","name":"switch: network-model.use-ipv4","xml":"<switch test=\"`$network-model.use-ipv4`\">","comments":"","outputs":1,"x":2654.7236976623535,"y":1385.497787475586,"z":"43f4c62f.1fd828","wires":[["9ca2c4c3.60ee2"]]},{"id":"9ca2c4c3.60ee2","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":2861.4380531311035,"y":1385.9262943267822,"z":"43f4c62f.1fd828","wires":[["65be9681.293558"]]},{"id":"fc3d633d.a705b8","type":"switchNode","name":"switch: network-model.use-ipv6","xml":"<switch test=\"`$network-model.use-ipv6`\">","comments":"","outputs":1,"x":2657.6602668762207,"y":1424.7834587097168,"z":"43f4c62f.1fd828","wires":[["feb0dea0.adbff"]]},{"id":"feb0dea0.adbff","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":2869.612663269043,"y":1423.5452375411987,"z":"43f4c62f.1fd828","wires":[["3c2a3e53.94df92"]]},{"id":"5f18e2e5.85f2bc","type":"set","name":"set tmp.plan-name v4","xml":"<set>\n<parameter name='tmp.plan-name' value='`$network-model.eipam-v4-address-plan`' />\n\n","comments":"","x":3247.2159690856934,"y":1388.2595772743225,"z":"43f4c62f.1fd828","wires":[]},{"id":"52b1683d.fe8c8","type":"set","name":"set tmp.plan-name v6","xml":"<set>\n<parameter name='tmp.plan-name' value='`$network-model.eipam-v6-address-plan`' />\n\n","comments":"","x":3246.152416229248,"y":1424.5453777313232,"z":"43f4c62f.1fd828","wires":[]},{"id":"65be9681.293558","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3022.8190727233887,"y":1388.1961398124695,"z":"43f4c62f.1fd828","wires":[["5f18e2e5.85f2bc","1ab45d14.8c0033"]]},{"id":"3c2a3e53.94df92","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3030.2793006896973,"y":1429.6247062683105,"z":"43f4c62f.1fd828","wires":[["52b1683d.fe8c8","1ab45d14.8c0033"]]},{"id":"159c2061.38289","type":"get-resource","name":"get-resource NETWORK_MODEL","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from NETWORK_MODEL WHERE customization_uuid = $service-data.networks.network[$nidx].network-data.network-information.onap-model-information.model-customization-uuid\n  and service_uuid = $service-data.networks.network[$nidx].network-data.service-information.onap-model-information.model-uuid'\n  pfx='network-model'>\n\n","comments":"","outputs":1,"x":1029.6943817138672,"y":599.7223243713379,"z":"43f4c62f.1fd828","wires":[[]]},{"id":"ee89ef7d.859c6","type":"switchNode","name":"switch network-model","xml":"<switch test='`$network-model`'>\n","comments":"","outputs":1,"x":2036.2315266927085,"y":1352.317742029826,"z":"43f4c62f.1fd828","wires":[["c633bb67.5d953","88f3bac5.fb0368"]]},{"id":"c633bb67.5d953","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2234.2317403157554,"y":1339.9844280878704,"z":"43f4c62f.1fd828","wires":[[]]},{"id":"88f3bac5.fb0368","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2232.564915974935,"y":1374.984348932902,"z":"43f4c62f.1fd828","wires":[["f4cbd9d5.7261f8"]]},{"id":"f4cbd9d5.7261f8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2400.8982276916504,"y":1383.5558633804321,"z":"43f4c62f.1fd828","wires":[["902b0baa.add328","fc3d633d.a705b8"]]},{"id":"440a027.2d0cffc","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1831.8241577148438,"y":1307.8891334533691,"z":"43f4c62f.1fd828","wires":[[]]},{"id":"f0bee7cd.c50298","type":"comment","name":"Get tosca network data","info":"","comments":"","x":996.5499458312988,"y":560.4444608688354,"z":"43f4c62f.1fd828","wires":[]},{"id":"e014c799.ccb71","type":"comment","name":"1707 - remove call to AAI for subnets","info":"","comments":"","x":1035.8515014648438,"y":660.9366149902344,"z":"43f4c62f.1fd828","wires":[]},{"id":"c65a88e5.41739","type":"for","name":"for 0..subnet-row-length","xml":"<for silentFailure='true' index='esidx' start='0' end='`$tmp.eipam-subnet-row_length`' >\n","comments":"","outputs":1,"x":1061.9943504333496,"y":859.2224187850952,"z":"43f4c62f.1fd828","wires":[["168f4319.51ff0d"]]},{"id":"168f4319.51ff0d","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1286.6610527038574,"y":859.3651790618896,"z":"43f4c62f.1fd828","wires":[["c6d87522.f557d8"]]},{"id":"c6d87522.f557d8","type":"switchNode","name":"switch level","xml":"<switch test='`$tmp.eipam-subnet-row[$esidx].level`'>\n","comments":"","outputs":1,"x":1480.661060333252,"y":860.7038640975952,"z":"43f4c62f.1fd828","wires":[["2b8c5d52.7c0d12","d04a0c95.ae503"]]},{"id":"2b8c5d52.7c0d12","type":"outcome","name":"outcome 1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1652.32767868042,"y":858.7038621902466,"z":"43f4c62f.1fd828","wires":[["f50b81a6.8be318"]]},{"id":"f50b81a6.8be318","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1835.6611442565918,"y":857.0371780395508,"z":"43f4c62f.1fd828","wires":[["1490f72f.590771","9e34d962.11b0b","bb837925.a8523","427058e5.b0cc9"]]},{"id":"1490f72f.590771","type":"set","name":"set level 1 key value","xml":"<set>\n\t<parameter name=\"tmp.level1-key-value[$pidx]\" value=\"`$tmp.eipam-subnet-row[$esidx].key-value`\"/>\n\n\t\n","comments":"","x":2051.565605163574,"y":798.1800594329834,"z":"43f4c62f.1fd828","wires":[]},{"id":"d04a0c95.ae503","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1643.9944648742676,"y":893.7038440704346,"z":"43f4c62f.1fd828","wires":[["42298e3b.bebd78"]]},{"id":"42298e3b.bebd78","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1835.6611442565918,"y":892.0371780395508,"z":"43f4c62f.1fd828","wires":[[]]},{"id":"9e34d962.11b0b","type":"set","name":"increment pidx_len","xml":"<set>\n\t<parameter name=\"pidx\" value=\"`$pidx + 1`\"/>\n\n\t\n","comments":"","x":2048.56595993042,"y":856.0794496536255,"z":"43f4c62f.1fd828","wires":[]},{"id":"fc63ae25.4fe498","type":"for","name":"for 0 ... level 1 length","xml":"<for silentFailure='true' index='npidx' start='0' end='`$pidx-len`' >\n","comments":"","outputs":1,"x":962.0515632629395,"y":1273.2222967147827,"z":"43f4c62f.1fd828","wires":[["b14859a5.c61ce8"]]},{"id":"b14859a5.c61ce8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1180.0515689849854,"y":1274.2222967147827,"z":"43f4c62f.1fd828","wires":[["d14d4fa5.24ff3","be1e294d.7bca7"]]},{"id":"be1e294d.7bca7","type":"set","name":"set level 1 key value/plan name","xml":"<set>\n\t<parameter name=\"tmp.level1-key-value\" value=\"`$tmp.level1-key-value[$npidx]`\" />\n\t<parameter name=\"tmp.plan-name\" value=\"`$tmp.plan-name[$npidx]`\" />\n\t\n","comments":"","x":1418.0515480041504,"y":1271.2222633361816,"z":"43f4c62f.1fd828","wires":[]},{"id":"bb837925.a8523","type":"set","name":"set level 1 plan_name","xml":"<set>\n\t<parameter name=\"tmp.plan-name[$pidx]\" value=\"`$tmp.eipam-subnet-row[$esidx].plan-name`\"/>\n\n\t\n","comments":"","x":2055.765914916992,"y":824.6508331298828,"z":"43f4c62f.1fd828","wires":[]},{"id":"d3591315.886188","type":"execute","name":"execute EIPAM deletePoolByPoolId","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"deletePoolByPoolId\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":5320.908679962158,"y":1614.650899887085,"z":"43f4c62f.1fd828","wires":[["ea0e131c.2a0418"]]},{"id":"ea0e131c.2a0418","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":5566.337005615234,"y":1614.3744983673096,"z":"43f4c62f.1fd828","wires":[["a2997071.0f0458"]]},{"id":"a2997071.0f0458","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while deleting pool in EIPAM.\" />\n\t","comments":"","x":5762.004039764404,"y":1616.4697823524475,"z":"43f4c62f.1fd828","wires":[]},{"id":"427058e5.b0cc9","type":"set","name":"set length","xml":"<set>\n\t<parameter name=\"pidx-len\" value=\"`$pidx`\"/>\n\n\t\n","comments":"","x":2019.1944770812988,"y":879.2223215103149,"z":"43f4c62f.1fd828","wires":[]},{"id":"d7820e90.66544","type":"call","name":"call naming-policy-generate-name to rollback name","xml":"<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n","comments":"","outputs":1,"x":1021.8612060546875,"y":1917.7220458984375,"z":"43f4c62f.1fd828","wires":[[]]},{"id":"20e1b7e2.ee7b28","type":"set","name":"set parameters for generate-unique-name","xml":"<set>\n<parameter name='naming-policy-generate-name-input.context-id' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n\n\n","comments":"","x":999.8612022399902,"y":1874.2222995758057,"z":"43f4c62f.1fd828","wires":[]},{"id":"7ed7aafc.2d4d04","type":"switchNode","name":"switch from-preload","xml":"<switch test='`$service-data.networks.network[$nidx].network-data.network-information.from-preload`'>\n","comments":"","outputs":1,"x":213.0833740234375,"y":493.1666555404663,"z":"43f4c62f.1fd828","wires":[["743d13a6.d23e0c","edfdb890.827c18"]]},{"id":"6e94f27d.431264","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":199.6127471923828,"y":355.72381114959717,"z":"43f4c62f.1fd828","wires":[["7ed7aafc.2d4d04","bb84b390.807d6","ad06e8e8.f15fe8"]]},{"id":"743d13a6.d23e0c","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":438.49943923950195,"y":474.7217025756836,"z":"43f4c62f.1fd828","wires":[["776634c2.52d27c"]]},{"id":"c070a6d7.f5a95","type":"for","name":"for snidx..service-data.networks.network[]","xml":"<for silentFailure='true' index='snidx' start='`$tmp.nidx + 1`' end='`$service-data.networks.network_length`' >\n","comments":"","outputs":1,"x":1301.6454162597656,"y":2659.5203886032104,"z":"43f4c62f.1fd828","wires":[["b05e875c.477a8"]]},{"id":"fb6c5bbf.641c8","type":"comment","name":"Remove network from service data","info":"","comments":"","x":469.04224395751953,"y":2565.9492082595825,"z":"43f4c62f.1fd828","wires":[]},{"id":"c8bec92c.539b98","type":"set","name":"move network to remove one","xml":"<set>\n\t<parameter name=\"service-data.networks.network[$tmp.newidx].\" value=\"$service-data.networks.network[$snidx].\" />\n\t\n","comments":"","x":1836.2364044189453,"y":2695.401512145996,"z":"43f4c62f.1fd828","wires":[]},{"id":"ad06e8e8.f15fe8","type":"switchNode","name":"switch $service-data.networks.network_length","xml":"<switch test='`$service-data.networks.network_length`'>\n","comments":"","outputs":1,"x":475.8079833984375,"y":2517.290771484375,"z":"43f4c62f.1fd828","wires":[["b81c15f1.52213","b6141ea3.f4683"]]},{"id":"b81c15f1.52213","type":"outcome","name":"1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":778.8555755615234,"y":2510.6237363815308,"z":"43f4c62f.1fd828","wires":[["ec37c587.0d4f6"]]},{"id":"773c6cdf.b55564","type":"set","name":"Remove networks","xml":"<set>\n\t<parameter name=\"service-data.networks.\" value=\"\"/>\n\n","comments":"","x":1211.474479675293,"y":2514.2905626296997,"z":"43f4c62f.1fd828","wires":[]},{"id":"b6141ea3.f4683","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":745.2365264892578,"y":2662.9570541381836,"z":"43f4c62f.1fd828","wires":[["aafb7b4b.b69678"]]},{"id":"b05e875c.477a8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1571.2363891601562,"y":2661.9570388793945,"z":"43f4c62f.1fd828","wires":[["c8bec92c.539b98","cd3d04c6.2597"]]},{"id":"588894e.b52e46c","type":"set","name":"set new network length","xml":"<set>\n\t<parameter name=\"service-data.networks.network_length\" value=\"`$service-data.networks.network_length - 1`\"/>\n\n\t\n","comments":"","x":1241.104248046875,"y":2696.2906188964844,"z":"43f4c62f.1fd828","wires":[]},{"id":"68cbbbc.67fe2c4","type":"set","name":"Remove networks","xml":"<set>\n\t<parameter name=\"service-data.networks.network[$tmp.new_length].\" value=\"\"/>\n\n","comments":"","x":1220.9507141113281,"y":2734.2585639953613,"z":"43f4c62f.1fd828","wires":[]},{"id":"aafb7b4b.b69678","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":967.2364044189453,"y":2662.9570541381836,"z":"43f4c62f.1fd828","wires":[["c070a6d7.f5a95","68cbbbc.67fe2c4","588894e.b52e46c","32319d17.9bbc5a"]]},{"id":"38f99654.0d5802","type":"set","name":"set new network length","xml":"<set>\n\t<parameter name=\"service-data.networks.network_length\" value=\"0\"/>\n\n\t\n","comments":"","x":1227.8078536987305,"y":2548.9942207336426,"z":"43f4c62f.1fd828","wires":[]},{"id":"ec37c587.0d4f6","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":958.1888885498047,"y":2511.3275327682495,"z":"43f4c62f.1fd828","wires":[["773c6cdf.b55564","38f99654.0d5802"]]},{"id":"cd3d04c6.2597","type":"set","name":"Set new index","xml":"<set>\n\t<parameter name=\"tmp.newidx\" value=\"`$snidx - 1`\"/>\n\t\n\t\n","comments":"","x":1785.9401245117188,"y":2657.216381072998,"z":"43f4c62f.1fd828","wires":[]},{"id":"a033816e.cf4cc","type":"comment","name":"If only one remove all networks","info":"","comments":"","x":850.2259368896484,"y":2475.2165098190308,"z":"43f4c62f.1fd828","wires":[]},{"id":"32319d17.9bbc5a","type":"set","name":"Set new network length","xml":"<set>\n\t<parameter name=\"tmp.new_length\" value=\"`$service-data.networks.network_length - 1`\"/>\n\t\n\t\n","comments":"","x":1243.9401245117188,"y":2629.216438293457,"z":"43f4c62f.1fd828","wires":[]},{"id":"776634c2.52d27c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":618.4994430541992,"y":473.27720069885254,"z":"43f4c62f.1fd828","wires":[["7782efc5.34f988"]]},{"id":"ceb870dc.083b6","type":"not-found","name":"not found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1121.4961547851562,"y":469.74610900878906,"z":"43f4c62f.1fd828","wires":[[]]},{"id":"7782efc5.34f988","type":"get-resource","name":"get AnAI - l3-network by network-id","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $network-topology-operation-input.network-information.network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.l3-network\">\n","comments":"","outputs":1,"x":886.21826171875,"y":474.230712890625,"z":"43f4c62f.1fd828","wires":[["ceb870dc.083b6","98125954.779138","7bfdf529.fba05c"]]},{"id":"98125954.779138","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1116.2181396484375,"y":505.230712890625,"z":"43f4c62f.1fd828","wires":[["3ef86cb1.56946c"]]},{"id":"3ef86cb1.56946c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + 'from AnAI'\" />","comments":"","x":1270.3292236328125,"y":504.45294189453125,"z":"43f4c62f.1fd828","wires":[]},{"id":"7bfdf529.fba05c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1118.4961547851562,"y":436.74610900878906,"z":"43f4c62f.1fd828","wires":[["d829c8ae.d057e8"]]},{"id":"e67658da.9f76c8","type":"delete","name":"delete l3-network","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\tkey=\"l3-network.network-id = $network-topology-operation-input.network-information.network-id\">","comments":"","outputs":1,"x":1553.4961547851562,"y":435.74610900878906,"z":"43f4c62f.1fd828","wires":[["ace37b9c.4aec"]]},{"id":"3e3025c.a0524da","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while deleting network from AAI\" />\n\t","comments":"","x":1947.8294639587402,"y":437.74610900878906,"z":"43f4c62f.1fd828","wires":[]},{"id":"ace37b9c.4aec","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1763.6913566589355,"y":438.07944202423096,"z":"43f4c62f.1fd828","wires":[["3e3025c.a0524da"]]},{"id":"d829c8ae.d057e8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1310.1627807617188,"y":436.7402296066284,"z":"43f4c62f.1fd828","wires":[["e67658da.9f76c8"]]},{"id":"1cd97ae8.5c530d","type":"comment","name":"18.06 - add logic for preload","info":"","comments":"","x":498.49609375,"y":436.74609375,"z":"43f4c62f.1fd828","wires":[]},{"id":"aceab2fb.526c8","type":"switchNode","name":"switch network-instance-group-id","xml":"<switch test='`$network-data.network-topology.network-topology-identifier-structure.network-instance-group-id`'>\n","comments":"","outputs":1,"x":253.49609375,"y":606.74609375,"z":"43f4c62f.1fd828","wires":[["f4412ab1.02ebf8","c7d61085.9ff83"]]},{"id":"f4412ab1.02ebf8","type":"other","name":"outcome Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":487.49609375,"y":605.24609375,"z":"43f4c62f.1fd828","wires":[["db751f4b.8bc6f"]]},{"id":"c7d61085.9ff83","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":387.49609375,"y":2035.24609375,"z":"43f4c62f.1fd828","wires":[["2778d41a.5e846c"]]},{"id":"2778d41a.5e846c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":577.49609375,"y":2033.24609375,"z":"43f4c62f.1fd828","wires":[["9ab09f4f.71df98"]]},{"id":"9ab09f4f.71df98","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 collection activate failed\" />\n","comments":"","x":785.49609375,"y":2033.24609375,"z":"43f4c62f.1fd828","wires":[]},{"id":"6f0fe7b4.c62b08","type":"comment","name":"need to implement this","info":"","comments":"","x":812.49609375,"y":2000.24609375,"z":"43f4c62f.1fd828","wires":[]},{"id":"edfdb890.827c18","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":438.49609375,"y":517.74609375,"z":"43f4c62f.1fd828","wires":[["aceab2fb.526c8"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation.json
new file mode 100644
index 0000000..2440c43
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_network-topology-operation.json
@@ -0,0 +1,2743 @@
+[
+    {
+        "id": "1e27a7c7.a2c0e8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 136.54763793945312,
+        "y": 74.77775239944458,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "f9f6328.32a5bd"
+            ]
+        ]
+    },
+    {
+        "id": "f9f6328.32a5bd",
+        "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.5,
+        "y": 115.01585865020752,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "9142b902.63a7b8"
+            ]
+        ]
+    },
+    {
+        "id": "9142b902.63a7b8",
+        "type": "method",
+        "name": "network-topology-operation",
+        "xml": "<method rpc='network-topology-operation' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 156.9762725830078,
+        "y": 165.77775192260742,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "7da65c0d.1905f4"
+            ]
+        ]
+    },
+    {
+        "id": "eaaf8ee8.f9877",
+        "type": "comment",
+        "name": " NETWORK-TOPOLOGY-OPERATION ",
+        "info": "",
+        "comments": "",
+        "x": 489.89249420166016,
+        "y": 22.364089965820312,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "7da65c0d.1905f4",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 209.54766845703125,
+        "y": 238.22122955322266,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "c46d40a7.05467",
+                "a800b823.efeff8",
+                "1b7cacb4.3eb843",
+                "c653bf24.72f6f"
+            ]
+        ]
+    },
+    {
+        "id": "c46d40a7.05467",
+        "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": 413.63104248046875,
+        "y": 1264.3138828277588,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "a800b823.efeff8",
+        "type": "switchNode",
+        "name": "switch svc-action",
+        "xml": "<switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 436.26190185546875,
+        "y": 468.6349239349365,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "579ade78.9686f",
+                "90ee633e.22142",
+                "1c22494b.adce57",
+                "b2a49821.7d4d28",
+                "1b830aa8.7a2e35",
+                "e65a5795.2aa7e8",
+                "cddace48.d73d5",
+                "33ae8b87.cdb6f4",
+                "c9c439a4.644948",
+                "f1964d76.299a5"
+            ]
+        ]
+    },
+    {
+        "id": "579ade78.9686f",
+        "type": "other",
+        "name": "assign",
+        "xml": "<outcome value='assign'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 650.7381401062012,
+        "y": 240.9206027984619,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "154b49d6.8d5566"
+            ]
+        ]
+    },
+    {
+        "id": "154b49d6.8d5566",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 822.9763107299805,
+        "y": 238.92073154449463,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "41bdfec0.46d4c"
+            ]
+        ]
+    },
+    {
+        "id": "1b7cacb4.3eb843",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:validate-network-input",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-network-input' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 546.5476264953613,
+        "y": 178.77775311470032,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "90ee633e.22142",
+        "type": "other",
+        "name": "activate",
+        "xml": "<outcome value='activate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 653.547679901123,
+        "y": 330.7777404785156,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "b4a2c51c.9bf118"
+            ]
+        ]
+    },
+    {
+        "id": "660cc5db.d692ac",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1108.7859954833984,
+        "y": 415.77799224853516,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "153b5df3.1aa3b2",
+                "861a03d4.b6c46",
+                "4d5d1a6.1ffe7e4"
+            ]
+        ]
+    },
+    {
+        "id": "df4a2853.72a188",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:network-topology-operation-activate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-activate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2300.607566833496,
+        "y": 919.38498878479,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1c22494b.adce57",
+        "type": "other",
+        "name": "deactivate",
+        "xml": "<outcome value='deactivate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 647.5476722717285,
+        "y": 562.777738571167,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "3ba10e57.029e32"
+            ]
+        ]
+    },
+    {
+        "id": "9519eead.4ec21",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1084.7859725952148,
+        "y": 802.7780523300171,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "153b5df3.1aa3b2",
+                "372adf7c.eb4d6",
+                "4d5d1a6.1ffe7e4"
+            ]
+        ]
+    },
+    {
+        "id": "372adf7c.eb4d6",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:network-topology-operation-deactivate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-deactivate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1628.774169921875,
+        "y": 1007.6350364685059,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b2a49821.7d4d28",
+        "type": "other",
+        "name": "unassign",
+        "xml": "<outcome value='unassign'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 644.5476913452148,
+        "y": 814.7777881622314,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "6b94ffdc.ca5fd"
+            ]
+        ]
+    },
+    {
+        "id": "6b94ffdc.ca5fd",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 825.7858505249023,
+        "y": 815.777910232544,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "153b5df3.1aa3b2",
+                "ff44806e.c3ac7",
+                "4d5d1a6.1ffe7e4"
+            ]
+        ]
+    },
+    {
+        "id": "23dd09f6.b62806",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:network-topology-operation-unassign",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-unassign' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2296.3574295043945,
+        "y": 1112.884958267212,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1b830aa8.7a2e35",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 589.5477180480957,
+        "y": 2568.777879714966,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "4fcc3aef.d47ee4"
+            ]
+        ]
+    },
+    {
+        "id": "4fcc3aef.d47ee4",
+        "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-action is a required input\" />\n",
+        "comments": "",
+        "x": 771.5477142333984,
+        "y": 2567.777889251709,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "c653bf24.72f6f",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "x": 432.6587371826172,
+        "y": 1223.4722213745117,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "2a7f7b48.96f564",
+        "type": "for",
+        "name": "for nidx..service-data.networks.network[]",
+        "xml": "<for index='nidx' start='0' end='`$service-data.networks.network_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2165.2780952453613,
+        "y": 457.5396976470947,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "fc661165.b5a09"
+            ]
+        ]
+    },
+    {
+        "id": "153b5df3.1aa3b2",
+        "type": "switchNode",
+        "name": "switch service-data.networks.network_length",
+        "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1442.7422523498535,
+        "y": 425.8610897064209,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "c17a83fc.bbfb5",
+                "8fc5b6b7.783f98"
+            ]
+        ]
+    },
+    {
+        "id": "c17a83fc.bbfb5",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1741.992130279541,
+        "y": 424.11108779907227,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "5486cd52.37da04"
+            ]
+        ]
+    },
+    {
+        "id": "8fc5b6b7.783f98",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1695.9921607971191,
+        "y": 457.1111087799072,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "a18e3ac0.fbf2a8"
+            ]
+        ]
+    },
+    {
+        "id": "fc661165.b5a09",
+        "type": "switchNode",
+        "name": "switch networkid found",
+        "xml": "<switch test=\"`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2455.706645965576,
+        "y": 456.78978157043457,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "bed52f1.91ac3d"
+            ]
+        ]
+    },
+    {
+        "id": "bed52f1.91ac3d",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2644.6590003967285,
+        "y": 457.6825199127197,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "779dc900.b644d8"
+            ]
+        ]
+    },
+    {
+        "id": "779dc900.b644d8",
+        "type": "set",
+        "name": "set tmp.nidx and network-data",
+        "xml": "<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='network-data.' value='`$service-data.networks.network[$nidx].`' />\n",
+        "comments": "",
+        "x": 2878.1907691955566,
+        "y": 456.43252754211426,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "6906d42b.83dd1c",
+        "type": "comment",
+        "name": "Find the index to service data for this network - save id in tmp.nidx, save service-data",
+        "info": "",
+        "comments": "",
+        "x": 1593.1035461425781,
+        "y": 391.11110973358154,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "95465718.254478",
+        "type": "comment",
+        "name": "service-data  will not be stored until we have a network-id",
+        "info": "",
+        "comments": "",
+        "x": 1161.2144317626953,
+        "y": 20,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "5486cd52.37da04",
+        "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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n",
+        "comments": "",
+        "x": 1933.769687652588,
+        "y": 422.0000858306885,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "a18e3ac0.fbf2a8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1863.2621269226074,
+        "y": 456.6656856536865,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "2a7f7b48.96f564",
+                "6c047532.adeb9c"
+            ]
+        ]
+    },
+    {
+        "id": "6c047532.adeb9c",
+        "type": "switchNode",
+        "name": "switch tmp.nidx ",
+        "xml": "<switch test=\"`$tmp.nidx`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2092.3296394348145,
+        "y": 507.0228967666626,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "c8b50e00.37e21",
+                "2459b978.6eeb96"
+            ]
+        ]
+    },
+    {
+        "id": "a4b154d2.d24a98",
+        "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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n",
+        "comments": "",
+        "x": 2445.186622619629,
+        "y": 502.73713874816895,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "c8b50e00.37e21",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2263.7581748962402,
+        "y": 505.59428215026855,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "a4b154d2.d24a98"
+            ]
+        ]
+    },
+    {
+        "id": "861a03d4.b6c46",
+        "type": "switchNode",
+        "name": "switch network-level-oper-status",
+        "xml": "<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1513.575798034668,
+        "y": 919.336389541626,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "35d066f7.c8c83a",
+                "5db6e1dd.9c034"
+            ]
+        ]
+    },
+    {
+        "id": "35d066f7.c8c83a",
+        "type": "outcome",
+        "name": "outcome PendingCreate",
+        "xml": "<outcome value='PendingCreate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1878.5757776896153,
+        "y": 919.3363742828369,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "df4a2853.72a188"
+            ]
+        ]
+    },
+    {
+        "id": "5db6e1dd.9c034",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1828.5758247375488,
+        "y": 959.336404800415,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "95937dfc.560a6"
+            ]
+        ]
+    },
+    {
+        "id": "95937dfc.560a6",
+        "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 is not in appropriate state for activate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />",
+        "comments": "",
+        "x": 1998.5758247375488,
+        "y": 959.336404800415,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "ff44806e.c3ac7",
+        "type": "switchNode",
+        "name": "switch network-level-oper-status",
+        "xml": "<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1503.178810119629,
+        "y": 1114.4891605377197,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "6af81e00.f4b56",
+                "36399347.d4563c",
+                "63cca36.d07f25c"
+            ]
+        ]
+    },
+    {
+        "id": "6af81e00.f4b56",
+        "type": "outcome",
+        "name": "outcome PendingCreate",
+        "xml": "<outcome value='PendingCreate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1863.1787796020508,
+        "y": 1114.4891910552979,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "23dd09f6.b62806"
+            ]
+        ]
+    },
+    {
+        "id": "36399347.d4563c",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1818.9287033081055,
+        "y": 1185.9892539978027,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "2aee0aed.346576"
+            ]
+        ]
+    },
+    {
+        "id": "2aee0aed.346576",
+        "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 is not in appropriate state for unassign. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />",
+        "comments": "",
+        "x": 2010.2621231079102,
+        "y": 1184.6558828353882,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "63cca36.d07f25c",
+        "type": "outcome",
+        "name": "outcome PendingDelete",
+        "xml": "<outcome value='PendingDelete'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1866.4090042114258,
+        "y": 1152.3363590240479,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "23dd09f6.b62806"
+            ]
+        ]
+    },
+    {
+        "id": "e65a5795.2aa7e8",
+        "type": "other",
+        "name": "changeassign",
+        "xml": "<outcome value='changeassign'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 655.5477104187012,
+        "y": 465.77777099609375,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "651cd10b.8f5c7"
+            ]
+        ]
+    },
+    {
+        "id": "651cd10b.8f5c7",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1027.797649383545,
+        "y": 462.7777624130249,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "153b5df3.1aa3b2",
+                "33a32095.1d0ca"
+            ]
+        ]
+    },
+    {
+        "id": "7b6569f0.cbf838",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:network-topology-operation-assign",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-assign' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1796.5478324890137,
+        "y": 160.77776336669922,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "41bdfec0.46d4c",
+        "type": "switchNode",
+        "name": "switch network-level-oper-status",
+        "xml": "<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1092.5158882141113,
+        "y": 98.72915458679199,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "6d381eb0.53f11",
+                "209a7a19.1e7e26",
+                "e5e4f036.48102",
+                "9c6fbbbd.33ee08"
+            ]
+        ]
+    },
+    {
+        "id": "6d381eb0.53f11",
+        "type": "outcome",
+        "name": "outcome PendingCreate",
+        "xml": "<outcome value='PendingCreate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1478.5159339904785,
+        "y": 118.72913646697998,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "629dce5f.1c7a9"
+            ]
+        ]
+    },
+    {
+        "id": "209a7a19.1e7e26",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1426.5159301757812,
+        "y": 160.72916793823242,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "7b6569f0.cbf838"
+            ]
+        ]
+    },
+    {
+        "id": "629dce5f.1c7a9",
+        "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 is not in appropriate state for assign. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />",
+        "comments": "",
+        "x": 1753.51615524292,
+        "y": 114.72918510437012,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "9c6fbbbd.33ee08",
+        "type": "outcome",
+        "name": "outcome PendingDelete",
+        "xml": "<outcome value='PendingDelete'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1476.5476722717285,
+        "y": 83.77775192260742,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "629dce5f.1c7a9"
+            ]
+        ]
+    },
+    {
+        "id": "e5e4f036.48102",
+        "type": "outcome",
+        "name": "outcome Created",
+        "xml": "<outcome value='Created'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1456.5477104187012,
+        "y": 48.777753829956055,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "629dce5f.1c7a9"
+            ]
+        ]
+    },
+    {
+        "id": "33a32095.1d0ca",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:network-topology-operation-changeassign",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-changeassign' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1605.794044494629,
+        "y": 851.2738800048828,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4d5d1a6.1ffe7e4",
+        "type": "switchNode",
+        "name": "switch network-information.network-instance-group-id",
+        "xml": "<switch test='`$network-topology-operation-input.network-information.network-instance-group-id`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1517.98628616333,
+        "y": 683.2787666320801,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "eb364fb8.96141",
+                "a1559a9d.cb90f8"
+            ]
+        ]
+    },
+    {
+        "id": "eb364fb8.96141",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1804.7361679077148,
+        "y": 721.4454336166382,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "ce978c0d.77ec9"
+            ]
+        ]
+    },
+    {
+        "id": "a1559a9d.cb90f8",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1802.4030647277832,
+        "y": 688.4453077316284,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "49ad5a08.53a714"
+            ]
+        ]
+    },
+    {
+        "id": "49ad5a08.53a714",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n",
+        "comments": "",
+        "x": 1962.7362937927246,
+        "y": 685.4453649520874,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "12e43bf5.2639c4",
+        "type": "switchNode",
+        "name": "service-data.network-instance-groups.network-instance-group_length",
+        "xml": "<switch test='`$service-data.network-instance-groups.network-instance-group_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2297.811908721924,
+        "y": 714.7111825942993,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "2728faf9.9c4456",
+                "d59945c0.d5a2f8"
+            ]
+        ]
+    },
+    {
+        "id": "2728faf9.9c4456",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2657.0615997314453,
+        "y": 671.7111854553223,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "554c5dd5.7e8644"
+            ]
+        ]
+    },
+    {
+        "id": "d59945c0.d5a2f8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2637.0615997314453,
+        "y": 706.7111854553223,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "cadc09d7.9813e8"
+            ]
+        ]
+    },
+    {
+        "id": "ce978c0d.77ec9",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1938.8474235534668,
+        "y": 721.889838218689,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "12e43bf5.2639c4"
+            ]
+        ]
+    },
+    {
+        "id": "72580ae5.e78014",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 4061.0554161071777,
+        "y": 649.9217891693115,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "5bc3963b.959598"
+            ]
+        ]
+    },
+    {
+        "id": "34e31311.24b3ec",
+        "type": "set",
+        "name": "set tmp.ngidx and ctx.network-instance-group-data",
+        "xml": "<set>\n<parameter name='tmp.ngidx' value='`$ngidx`' />\n<parameter name='ctx.network-instance-group-data.' value='`$service-data.network-instance-groups.network-instance-group[$ngidx].`' />\n",
+        "comments": "",
+        "x": 4503.587383270264,
+        "y": 649.6718139648438,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "5bc3963b.959598",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 4209.673854827881,
+        "y": 649.778974533081,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "34e31311.24b3ec"
+            ]
+        ]
+    },
+    {
+        "id": "54948c78.13e924",
+        "type": "for",
+        "name": "for ngidx..service-data.network-instance-groups.network-instance-group[]",
+        "xml": "<for index='ngidx' start='0' end='`$service-data.network-instance-groups.network-instance-_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3243.9238204956055,
+        "y": 710.0287618637085,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "75f9e2f5.e8041c"
+            ]
+        ]
+    },
+    {
+        "id": "75f9e2f5.e8041c",
+        "type": "switchNode",
+        "name": "switch network-instance-group-id found",
+        "xml": "<switch test=\"`$service-data.network-instance-groups.network-instance-group[$nidx].network-instance-group-id == $network-topology-operation-input.network-information.network-instance-group-id`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3689.3524169921875,
+        "y": 709.7789306640625,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "72580ae5.e78014"
+            ]
+        ]
+    },
+    {
+        "id": "cadc09d7.9813e8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2855.907699584961,
+        "y": 707.9046869277954,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "54948c78.13e924"
+            ]
+        ]
+    },
+    {
+        "id": "554c5dd5.7e8644",
+        "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-topology-operation-input.network-request-input.network-instance-group-id not found in service-data\" />\n",
+        "comments": "",
+        "x": 2848.6112518310547,
+        "y": 671.2787523269653,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "2459b978.6eeb96",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2263.2938270568848,
+        "y": 536.5238647460938,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "1ed328e0.6f16c7"
+            ]
+        ]
+    },
+    {
+        "id": "1ed328e0.6f16c7",
+        "type": "set",
+        "name": "set nidx",
+        "xml": "<set>\n<parameter name='nidx' value='`$tmp.nidx`' />\n",
+        "comments": "",
+        "x": 2420.2938270568848,
+        "y": 537.5238647460938,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "b4a2c51c.9bf118",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 844.6588249206543,
+        "y": 323.2326765060425,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "d150a8f6.70cf98",
+                "6fd60384.6df67c",
+                "bf7ed4ea.d9a8d8",
+                "861169d6.7df5d8"
+            ]
+        ]
+    },
+    {
+        "id": "d150a8f6.70cf98",
+        "type": "outcome",
+        "name": "ActivateDCINetworkInstance",
+        "xml": "<outcome value='ActivateDCINetworkInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1140.9920501708984,
+        "y": 268.23250579833984,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "7f681a35.b52204"
+            ]
+        ]
+    },
+    {
+        "id": "7f681a35.b52204",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:dci-connects-network-topology-operation-activate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='dci-connects-network-topology-operation-activate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1655.9921264648438,
+        "y": 267.8993377685547,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6fd60384.6df67c",
+        "type": "outcome",
+        "name": "other",
+        "xml": "<outcome value='other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 977.9921684265137,
+        "y": 372.8992614746094,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "434dbd2e.fa1f54"
+            ]
+        ]
+    },
+    {
+        "id": "3ba10e57.029e32",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 849.2143745422363,
+        "y": 564.6770572662354,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "a1c407eb.c47c08",
+                "91991218.67145",
+                "b71277b2.22fdf8",
+                "ebbb06dc.f2bfa8"
+            ]
+        ]
+    },
+    {
+        "id": "a1c407eb.c47c08",
+        "type": "outcome",
+        "name": "DeactivateSOTNConnectivityInstance",
+        "xml": "<outcome value='DeactivateSOTNConnectivityInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1138.9922523498535,
+        "y": 508.8991947174072,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "78112491.20419c"
+            ]
+        ]
+    },
+    {
+        "id": "91991218.67145",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 998.4373397827148,
+        "y": 655.5908031463623,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "abc50963.ab6478"
+            ]
+        ]
+    },
+    {
+        "id": "78112491.20419c",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:sotn-network-topology-operation-deactivate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-deactivate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1630.3495178222656,
+        "y": 507.18256759643555,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "cddace48.d73d5",
+        "type": "other",
+        "name": "create",
+        "xml": "<outcome value='create'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 645.8812637329102,
+        "y": 1678.0111122131348,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "3df48f11.4089a"
+            ]
+        ]
+    },
+    {
+        "id": "3df48f11.4089a",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 882.1951904296875,
+        "y": 1679.788782119751,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "5c4c45b6.3e8bec",
+                "e597f8fd.b63538",
+                "89c5bd67.beb3d",
+                "b245425a.5411b",
+                "6fa2e05d.13256"
+            ]
+        ]
+    },
+    {
+        "id": "33ae8b87.cdb6f4",
+        "type": "other",
+        "name": "delete",
+        "xml": "<outcome value='delete'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 616.8812217712402,
+        "y": 2161.0111112594604,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "5367f2bb.287a1c"
+            ]
+        ]
+    },
+    {
+        "id": "5367f2bb.287a1c",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 924.1696014404297,
+        "y": 2164.071994781494,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "3bf00019.dedb6",
+                "c6bf5c14.5523d",
+                "91ce26b2.4e44a8",
+                "aaa99683.0e1448",
+                "d0e5186c.eb1d88"
+            ]
+        ]
+    },
+    {
+        "id": "a8bc2791.422188",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2023.9927444458008,
+        "y": 1605.8997869491577,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "41977cb1.c3a6a4"
+            ]
+        ]
+    },
+    {
+        "id": "b1a9c895.331728",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1999.437068939209,
+        "y": 2117.4554653167725,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "c716166e.8a9e68"
+            ]
+        ]
+    },
+    {
+        "id": "41977cb1.c3a6a4",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:network-topology-operation-create",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-create' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2448.6592559814453,
+        "y": 1605.3442859649658,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c716166e.8a9e68",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:network-topology-operation-delete",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-delete' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2412.4369163513184,
+        "y": 2118.455466270447,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5c4c45b6.3e8bec",
+        "type": "outcome",
+        "name": "other",
+        "xml": "<outcome value='other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1369.195026397705,
+        "y": 1572.6771278381348,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "185d380.33372c8"
+            ]
+        ]
+    },
+    {
+        "id": "e597f8fd.b63538",
+        "type": "outcome",
+        "name": "CreateSOTNConnectivityInstance",
+        "xml": "<outcome value='CreateSOTNConnectivityInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1472.8617095947266,
+        "y": 1433.45497955475,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "29253322.d4803c"
+            ]
+        ]
+    },
+    {
+        "id": "29253322.d4803c",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:sotn-network-topology-operation-create",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-create' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1951.7505264282227,
+        "y": 1435.6771618286148,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c6bf5c14.5523d",
+        "type": "outcome",
+        "name": "DeleteSOTNConnectivityInstance",
+        "xml": "<outcome value='DeleteSOTNConnectivityInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1438.28076171875,
+        "y": 1931.627236366272,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "f1c2223c.beb3c"
+            ]
+        ]
+    },
+    {
+        "id": "f1c2223c.beb3c",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:sotn-network-topology-operation-delete",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-delete' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1905.169578552246,
+        "y": 1933.8494186401367,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3bf00019.dedb6",
+        "type": "outcome",
+        "name": "other",
+        "xml": "<outcome value='other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1330.6140060424805,
+        "y": 2079.8494815826416,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "37973a6d.201656"
+            ]
+        ]
+    },
+    {
+        "id": "bf7ed4ea.d9a8d8",
+        "type": "outcome",
+        "name": "ActivateSOTNConnectivityInstance",
+        "xml": "<outcome value='ActivateSOTNConnectivityInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1160.9921417236328,
+        "y": 219.01041412353516,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "d0819ca8.4d92c"
+            ]
+        ]
+    },
+    {
+        "id": "d0819ca8.4d92c",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:sotn-network-topology-operation-activate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-activate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1615.21435546875,
+        "y": 220.24494552612305,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b71277b2.22fdf8",
+        "type": "outcome",
+        "name": "DeActivateDCINetworkInstance",
+        "xml": "<outcome value='DeActivateDCINetworkInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1119.0927925109863,
+        "y": 551.9999942779541,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "da012b7b.4be5d8"
+            ]
+        ]
+    },
+    {
+        "id": "da012b7b.4be5d8",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:dci-connects-network-topology-operation-deactivate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='dci-connects-network-topology-operation-deactivate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1659.0931701660156,
+        "y": 555.666805267334,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "861169d6.7df5d8",
+        "type": "outcome",
+        "name": "ActivateSDWANConnectivityInstance",
+        "xml": "<outcome value='ActivateSDWANConnectivityInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1162.5372772216797,
+        "y": 319.0000190734863,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "3c510c0.a7335f4"
+            ]
+        ]
+    },
+    {
+        "id": "3c510c0.a7335f4",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:sdwan-network-topology-operation-activate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-network-topology-operation-activate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1682.5374755859375,
+        "y": 313.66687393188477,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ebbb06dc.f2bfa8",
+        "type": "outcome",
+        "name": "DeactivateSDWANConnectivityInstance",
+        "xml": "<outcome value='DeactivateSDWANConnectivityInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1136.5372314453125,
+        "y": 605,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "d1da9a73.781588"
+            ]
+        ]
+    },
+    {
+        "id": "d1da9a73.781588",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:sdwan-network-topology-operation-deactivate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-network-topology-operation-deactivate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1650.5375061035156,
+        "y": 602.6668519973755,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "89c5bd67.beb3d",
+        "type": "outcome",
+        "name": "CreateSDWANConnectivityInstance",
+        "xml": "<outcome value='CreateSDWANConnectivityInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1478.537265777588,
+        "y": 1482.0000762939453,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "40fbf632.88fe18"
+            ]
+        ]
+    },
+    {
+        "id": "40fbf632.88fe18",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:sdwan-network-topology-operation-create",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-network-topology-operation-create' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1921.5374565124512,
+        "y": 1479.6669049263,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "91ce26b2.4e44a8",
+        "type": "outcome",
+        "name": "DeleteSDWANConnectivityInstance",
+        "xml": "<outcome value='DeleteSDWANConnectivityInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1439.5372200012207,
+        "y": 1982.0002837181091,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "459d472a.0c60d8"
+            ]
+        ]
+    },
+    {
+        "id": "459d472a.0c60d8",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:sdwan-network-topology-operation-delete",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-network-topology-operation-delete' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1906.4260368347168,
+        "y": 1984.2224659919739,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "434dbd2e.fa1f54",
+        "type": "execute",
+        "name": "contains wan-connection",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.service-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"wan-connection\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1168.4430770874023,
+        "y": 358.0065197944641,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "5f6618b4.0e5d78",
+                "821088b.093c578"
+            ]
+        ]
+    },
+    {
+        "id": "5f6618b4.0e5d78",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1374.443130493164,
+        "y": 353.11759185791016,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "124f981d.b61768"
+            ]
+        ]
+    },
+    {
+        "id": "124f981d.b61768",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:wan-connection-topology-operation-activate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='wan-connection-topology-operation-activate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1759.443229675293,
+        "y": 355.1176052093506,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "821088b.093c578",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 946.6652526855469,
+        "y": 420.0064754486084,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "660cc5db.d692ac"
+            ]
+        ]
+    },
+    {
+        "id": "abc50963.ab6478",
+        "type": "execute",
+        "name": "contains wan-connection",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.service-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"wan-connection\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1184.2208404541016,
+        "y": 646.2287330627441,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "2465070f.de4968",
+                "c9d29535.2c2568"
+            ]
+        ]
+    },
+    {
+        "id": "2465070f.de4968",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1385.2209968566895,
+        "y": 645.339765548706,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "77cd47f1.624f38"
+            ]
+        ]
+    },
+    {
+        "id": "77cd47f1.624f38",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:wan-connection-topology-operation-deactivate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='wan-connection-topology-operation-deactivate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1751.220962524414,
+        "y": 642.3397808074951,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c9d29535.2c2568",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1031.220890045166,
+        "y": 709.1176118850708,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "9519eead.4ec21"
+            ]
+        ]
+    },
+    {
+        "id": "185d380.33372c8",
+        "type": "execute",
+        "name": "contains wan-connection",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.service-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"wan-connection\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1583.4430770874023,
+        "y": 1571.6732215881348,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "3b7bff63.4b1b4",
+                "8bbd2288.4844a"
+            ]
+        ]
+    },
+    {
+        "id": "8bbd2288.4844a",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1816.4430847167969,
+        "y": 1604.5622215270996,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "a8bc2791.422188"
+            ]
+        ]
+    },
+    {
+        "id": "3b7bff63.4b1b4",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1822.4432487487793,
+        "y": 1535.784550666809,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "3ac71314.c8661c"
+            ]
+        ]
+    },
+    {
+        "id": "3ac71314.c8661c",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:wan-connection-topology-operation-create",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='wan-connection-topology-operation-create' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2229.443084716797,
+        "y": 1531.784387588501,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "37973a6d.201656",
+        "type": "execute",
+        "name": "contains wan-connection",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.service-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"wan-connection\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1547.109619140625,
+        "y": 2080.006546020508,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "cad9a24f.96c87",
+                "dafe3faf.8122a"
+            ]
+        ]
+    },
+    {
+        "id": "dafe3faf.8122a",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1765.109951019287,
+        "y": 2117.8958702087402,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "b1a9c895.331728"
+            ]
+        ]
+    },
+    {
+        "id": "cad9a24f.96c87",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1776.1097526550293,
+        "y": 2043.117735862732,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "421b10a5.36efb"
+            ]
+        ]
+    },
+    {
+        "id": "421b10a5.36efb",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:wan-connection-topology-operation-deactivate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='wan-connection-topology-operation-deactivate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2223.109664916992,
+        "y": 2044.1177101135254,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a6f9e65c.cf2798",
+        "type": "set",
+        "name": "set network-level-oper-status",
+        "xml": "<set>\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />\n",
+        "comments": "",
+        "x": 484.3343086242676,
+        "y": 1174.9571886062622,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "1ee985f4.f7191a",
+        "type": "set",
+        "name": "set object-path",
+        "xml": "<set>\n<parameter name='network-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $network-topology-operation-input.service-information.service-instance-id\n + '/service-data/networks/network/'\n + $networkId\n + '/network-data/network-topology/'` \" />\n \n",
+        "comments": "",
+        "x": 442.0486145019531,
+        "y": 1129.528715133667,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "53ab77b.4fd6f88",
+        "type": "set",
+        "name": "set networkId",
+        "xml": "<set>\n<parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\n",
+        "comments": "",
+        "x": 436.3342475891113,
+        "y": 1092.385823249817,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "c9c439a4.644948",
+        "type": "other",
+        "name": "reoptimize",
+        "xml": "<outcome value='reoptimize'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 613.5477676391602,
+        "y": 2399.0000400543213,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "c2ec08b5.baf898"
+            ]
+        ]
+    },
+    {
+        "id": "c2ec08b5.baf898",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 808.5477676391602,
+        "y": 2403.0000400543213,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "9516703a.f0424"
+            ]
+        ]
+    },
+    {
+        "id": "9516703a.f0424",
+        "type": "outcome",
+        "name": "ReoptimizeSOTNInstance",
+        "xml": "<outcome value='ReoptimizeSOTNInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1416.54789352417,
+        "y": 2563.0000762939453,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "a5056bc.49bb798"
+            ]
+        ]
+    },
+    {
+        "id": "a5056bc.49bb798",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:sotn-network-topology-operation-reoptimize",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-reoptimize' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1982.5479011535645,
+        "y": 2559.0000762939453,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b245425a.5411b",
+        "type": "outcome",
+        "name": "CreateAccessConnectivityInstance",
+        "xml": "<outcome value='CreateAccessConnectivityInstance'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1436.6775550842285,
+        "y": 1824.0107040405273,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "3c846975.cd4d66"
+            ]
+        ]
+    },
+    {
+        "id": "59b0ffc3.f1bd",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:bbs-access-connectivity-network-topology-operation-create-huawei",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='bbs-access-connectivity-network-topology-operation-create-huawei' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3201.6779022216797,
+        "y": 1796.0109305381775,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "aaa99683.0e1448",
+        "type": "outcome",
+        "name": "DeleteAccessConnectivityInstance",
+        "xml": "<outcome value='DeleteAccessConnectivityInstance'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1402.5100364685059,
+        "y": 2269.0106382369995,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "96e7eafa.2dbc88"
+            ]
+        ]
+    },
+    {
+        "id": "eb4a3230.bafb7",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:bbs-access-connectivity-network-topology-operation-delete-huawei",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='bbs-access-connectivity-network-topology-operation-delete-huawei' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3301.5108337402344,
+        "y": 2189.011200904846,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6fa2e05d.13256",
+        "type": "outcome",
+        "name": "CreateInternetProfileInstance",
+        "xml": "<outcome value='CreateInternetProfileInstance'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1434.5104866027832,
+        "y": 1703.0105381011963,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "114697cf.26bbe8"
+            ]
+        ]
+    },
+    {
+        "id": "89198a1c.591aa8",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:bbs-internet-profile-network-topology-operation-create-huawei",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-create-huawei' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3139.510673522949,
+        "y": 1666.010917186737,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d0e5186c.eb1d88",
+        "type": "outcome",
+        "name": "DeleteInternetProfileInstance",
+        "xml": "<outcome value='DeleteInternetProfileInstance'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1396.5101318359375,
+        "y": 2390.010486602783,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "f9740169.a8e11"
+            ]
+        ]
+    },
+    {
+        "id": "8096a9b3.539768",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:bbs-internet-profile-network-topology-operation-delete-huawei",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-delete-huawei' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3231.510498046875,
+        "y": 2339.010486602783,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f54feb4a.839528",
+        "type": "outcome",
+        "name": "ChangeInternetProfileInstance",
+        "xml": "<outcome value='ChangeInternetProfileInstance'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1242.5105171203613,
+        "y": 1339.0106048583984,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "8d49145e.10dd78"
+            ]
+        ]
+    },
+    {
+        "id": "3cb12a93.93f446",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:bbs-internet-profile-network-topology-operation-change-huawei",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-change-huawei' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2928.5113372802734,
+        "y": 1267.0107669830322,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3c846975.cd4d66",
+        "type": "for",
+        "name": "for:network-input-paramters",
+        "xml": "<for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1785.3337440490723,
+        "y": 1825.0007762908936,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "2daf54e0.ce83cc"
+            ]
+        ]
+    },
+    {
+        "id": "2daf54e0.ce83cc",
+        "type": "switchNode",
+        "name": "switch:manufacturer",
+        "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2033.5001487731934,
+        "y": 1827.0006608963013,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "7f439058.f48ce"
+            ]
+        ]
+    },
+    {
+        "id": "7f439058.f48ce",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2221.5000343322754,
+        "y": 1829.000823020935,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "b35e15c3.b29238"
+            ]
+        ]
+    },
+    {
+        "id": "b35e15c3.b29238",
+        "type": "switchNode",
+        "name": "switch:manufacturer value",
+        "xml": "<switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2432.500675201416,
+        "y": 1829.001148223877,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "62efdf5e.8189e",
+                "b2bc4ac6.6914e8",
+                "81f5fb4.8cd9808"
+            ]
+        ]
+    },
+    {
+        "id": "62efdf5e.8189e",
+        "type": "outcomeTrue",
+        "name": "HUAWEI",
+        "xml": "<outcome value='HUAWEI'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2707.3338508605957,
+        "y": 1797.000850200653,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "59b0ffc3.f1bd"
+            ]
+        ]
+    },
+    {
+        "id": "b2bc4ac6.6914e8",
+        "type": "outcomeTrue",
+        "name": "NOKIA",
+        "xml": "<outcome value='NOKIA'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2705.3338508605957,
+        "y": 1872.0008521080017,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "58b98712.7c3b88"
+            ]
+        ]
+    },
+    {
+        "id": "58b98712.7c3b88",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:bbs-access-connectivity-network-topology-operation-create-nokia",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='bbs-access-connectivity-network-topology-operation-create-nokia' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3198.0009765625,
+        "y": 1870.001187801361,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "96e7eafa.2dbc88",
+        "type": "for",
+        "name": "for:network-input-paramters",
+        "xml": "<for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1815.3332290649414,
+        "y": 2267.000326156616,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "1fcee7a4.020b98"
+            ]
+        ]
+    },
+    {
+        "id": "1fcee7a4.020b98",
+        "type": "switchNode",
+        "name": "switch:manufacturer",
+        "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2062.4994201660156,
+        "y": 2265.000326156616,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "9c3c582a.8de768"
+            ]
+        ]
+    },
+    {
+        "id": "9c3c582a.8de768",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2242.499608039856,
+        "y": 2264.0002365112305,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "949f9c2f.46255"
+            ]
+        ]
+    },
+    {
+        "id": "949f9c2f.46255",
+        "type": "switchNode",
+        "name": "switch:manufacturer value",
+        "xml": "<switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2453.4999351501465,
+        "y": 2262.0003995895386,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "39ae5c62.e189c4",
+                "4d832448.f75fec",
+                "81f5fb4.8cd9808"
+            ]
+        ]
+    },
+    {
+        "id": "39ae5c62.e189c4",
+        "type": "outcomeTrue",
+        "name": "HUAWEI",
+        "xml": "<outcome value='HUAWEI'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2829.333309173584,
+        "y": 2188.0002784729004,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "eb4a3230.bafb7"
+            ]
+        ]
+    },
+    {
+        "id": "4d832448.f75fec",
+        "type": "outcomeTrue",
+        "name": "NOKIA",
+        "xml": "<outcome value='NOKIA'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2827.333309173584,
+        "y": 2263.000280380249,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "de93b523.307248"
+            ]
+        ]
+    },
+    {
+        "id": "81f5fb4.8cd9808",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2850.3338165283203,
+        "y": 2027.0003852844238,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "247872c4.a3df6e"
+            ]
+        ]
+    },
+    {
+        "id": "247872c4.a3df6e",
+        "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-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name+' is invalid manufacturer,please check!'`\" />",
+        "comments": "",
+        "x": 3051.666831970215,
+        "y": 2025.6670513153076,
+        "z": "8219a869.858648",
+        "wires": []
+    },
+    {
+        "id": "8d49145e.10dd78",
+        "type": "for",
+        "name": "for:network-input-paramters",
+        "xml": "<for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1566.666732788086,
+        "y": 1338.0002670288086,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "94d7db37.7a3d78"
+            ]
+        ]
+    },
+    {
+        "id": "94d7db37.7a3d78",
+        "type": "switchNode",
+        "name": "switch:manufacturer",
+        "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1813.833023071289,
+        "y": 1338.0002841949463,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "83ef8135.5e95e"
+            ]
+        ]
+    },
+    {
+        "id": "83ef8135.5e95e",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2001.832908630371,
+        "y": 1340.00044631958,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "30948650.291b5a"
+            ]
+        ]
+    },
+    {
+        "id": "30948650.291b5a",
+        "type": "switchNode",
+        "name": "switch:manufacturer value",
+        "xml": "<switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2212.8335494995117,
+        "y": 1340.000771522522,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "569be9cc.6ad218",
+                "1b3ee4fb.4831eb",
+                "81f5fb4.8cd9808"
+            ]
+        ]
+    },
+    {
+        "id": "569be9cc.6ad218",
+        "type": "outcomeTrue",
+        "name": "HUAWEI",
+        "xml": "<outcome value='HUAWEI'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2464.6667823791504,
+        "y": 1266.0004348754883,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "3cb12a93.93f446"
+            ]
+        ]
+    },
+    {
+        "id": "1b3ee4fb.4831eb",
+        "type": "outcomeTrue",
+        "name": "NOKIA",
+        "xml": "<outcome value='NOKIA'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2462.6667823791504,
+        "y": 1341.000436782837,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "f5c766f7.632b38"
+            ]
+        ]
+    },
+    {
+        "id": "f9740169.a8e11",
+        "type": "for",
+        "name": "for:network-input-paramters",
+        "xml": "<for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1785.6667175292969,
+        "y": 2395.0000705718994,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "da232470.f93ec8"
+            ]
+        ]
+    },
+    {
+        "id": "da232470.f93ec8",
+        "type": "switchNode",
+        "name": "switch:manufacturer",
+        "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2058.832878112793,
+        "y": 2397.000023841858,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "9033ab67.390c18"
+            ]
+        ]
+    },
+    {
+        "id": "9033ab67.390c18",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2246.832763671875,
+        "y": 2399.0001859664917,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "247f3edd.baaa82"
+            ]
+        ]
+    },
+    {
+        "id": "247f3edd.baaa82",
+        "type": "switchNode",
+        "name": "switch:manufacturer value",
+        "xml": "<switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2457.8334045410156,
+        "y": 2399.0005111694336,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "bcef4611.8a23b8",
+                "4ab5aba5.008864",
+                "81f5fb4.8cd9808"
+            ]
+        ]
+    },
+    {
+        "id": "bcef4611.8a23b8",
+        "type": "outcomeTrue",
+        "name": "HUAWEI",
+        "xml": "<outcome value='HUAWEI'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2752.666748046875,
+        "y": 2338.000557899475,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "8096a9b3.539768"
+            ]
+        ]
+    },
+    {
+        "id": "4ab5aba5.008864",
+        "type": "outcomeTrue",
+        "name": "NOKIA",
+        "xml": "<outcome value='NOKIA'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2747.666748046875,
+        "y": 2396.0003967285156,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "bad37761.4aea08"
+            ]
+        ]
+    },
+    {
+        "id": "114697cf.26bbe8",
+        "type": "for",
+        "name": "for:network-input-paramters",
+        "xml": "<for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1783.6667747497559,
+        "y": 1704.0000638961792,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "3c9fb8cf.9cb2f8"
+            ]
+        ]
+    },
+    {
+        "id": "3c9fb8cf.9cb2f8",
+        "type": "switchNode",
+        "name": "switch:manufacturer",
+        "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2030.833065032959,
+        "y": 1704.000081062317,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "3500de32.7ecec2"
+            ]
+        ]
+    },
+    {
+        "id": "3500de32.7ecec2",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2218.832950592041,
+        "y": 1706.0002431869507,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "2f27817.d741d7e"
+            ]
+        ]
+    },
+    {
+        "id": "2f27817.d741d7e",
+        "type": "switchNode",
+        "name": "switch:manufacturer value",
+        "xml": "<switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2429.8335914611816,
+        "y": 1706.0005683898926,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "747fb887.a58af8",
+                "e6c3e120.b571f",
+                "81f5fb4.8cd9808"
+            ]
+        ]
+    },
+    {
+        "id": "747fb887.a58af8",
+        "type": "outcomeTrue",
+        "name": "HUAWEI",
+        "xml": "<outcome value='HUAWEI'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2704.6667671203613,
+        "y": 1674.0002703666687,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "89198a1c.591aa8"
+            ]
+        ]
+    },
+    {
+        "id": "e6c3e120.b571f",
+        "type": "outcomeTrue",
+        "name": "NOKIA",
+        "xml": "<outcome value='NOKIA'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2702.6667671203613,
+        "y": 1749.0002722740173,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "3ee98359.6c3dac"
+            ]
+        ]
+    },
+    {
+        "id": "3ee98359.6c3dac",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:bbs-internet-profile-network-topology-operation-create-nokia",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-create-nokia' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3141.6669311523438,
+        "y": 1739.000180721283,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "bad37761.4aea08",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:bbs-internet-profile-network-topology-operation-delete-nokia",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-delete-nokia' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3221.666748046875,
+        "y": 2402.0000705718994,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f5c766f7.632b38",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:bbs-internet-profile-network-topology-operation-change-nokia",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-change-nokia' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2923.6668548583984,
+        "y": 1338.0002670288086,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "de93b523.307248",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:bbs-access-connectivity-network-topology-operation-delete-nokia",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='bbs-access-connectivity-network-topology-operation-delete-nokia' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3297.666748046875,
+        "y": 2262.000555038452,
+        "z": "8219a869.858648",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f1964d76.299a5",
+        "type": "other",
+        "name": "update",
+        "xml": "<outcome value='update'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 641.0000152587891,
+        "y": 1336.0000400543213,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "e4d29c5d.bd523"
+            ]
+        ]
+    },
+    {
+        "id": "e4d29c5d.bd523",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 873.0000152587891,
+        "y": 1337.00004196167,
+        "z": "8219a869.858648",
+        "wires": [
+            [
+                "f54feb4a.839528"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation-activate.json
new file mode 100644
index 0000000..c2637b4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation-activate.json
@@ -0,0 +1,408 @@
+[

+    {

+        "id": "c1cda377.e6968",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 158.75,

+        "y": 92.5,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "58dce5c3.307dcc"

+            ]

+        ]

+    },

+    {

+        "id": "58dce5c3.307dcc",

+        "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": 272.3690414428711,

+        "y": 132.73811054229736,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "9667d3fe.1b151"

+            ]

+        ]

+    },

+    {

+        "id": "9667d3fe.1b151",

+        "type": "method",

+        "name": "method pnf-topology-operation-activate",

+        "xml": "<method rpc='pnf-topology-operation-activate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 250.1786346435547,

+        "y": 173.166654586792,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "af3e8af.a61e978"

+            ]

+        ]

+    },

+    {

+        "id": "49fe6017.3a4b5",

+        "type": "comment",

+        "name": "pnf-topology-operation-activate",

+        "info": "",

+        "comments": "",

+        "x": 553.094856262207,

+        "y": 40.08634376525879,

+        "z": "decb865e.560cf8",

+        "wires": []

+    },

+    {

+        "id": "490a17e0.43a998",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 562.273811340332,

+        "y": 271.3571376800537,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "f5055a1f.74b9c8",

+                "707a8e66.03ca9"

+            ]

+        ]

+    },

+    {

+        "id": "f5055a1f.74b9c8",

+        "type": "outcome",

+        "name": "CreatePnfInstance",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 780.6547737121582,

+        "y": 248.50002193450928,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "92dc7585.b94628"

+            ]

+        ]

+    },

+    {

+        "id": "707a8e66.03ca9",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 744.6547393798828,

+        "y": 294.2143497467041,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "e8067f7e.1e237"

+            ]

+        ]

+    },

+    {

+        "id": "92dc7585.b94628",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 967.5119018554688,

+        "y": 248.5000514984131,

+        "z": "decb865e.560cf8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e8067f7e.1e237",

+        "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=\"If svc-action is 'activate' then request-action must be 'CreatePnfInstance'\" />\n",

+        "comments": "",

+        "x": 984.6547470092773,

+        "y": 294.2143077850342,

+        "z": "decb865e.560cf8",

+        "wires": []

+    },

+    {

+        "id": "af3e8af.a61e978",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 240.41666412353516,

+        "y": 481.6666622161865,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "490a17e0.43a998",

+                "5bf28db1.61b564",

+                "5b09bd46.5c0574",

+                "a8e6104b.8eaab",

+                "5ddadd37.238e54",

+                "653d68c6.7140b8",

+                "9b19e105.b2e98",

+                "7bd93c51.6f0374"

+            ]

+        ]

+    },

+    {

+        "id": "5bf28db1.61b564",

+        "type": "switchNode",

+        "name": "switch pnf_length",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 548.7499847412109,

+        "y": 340.83336353302,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "89467472.09d148"

+            ]

+        ]

+    },

+    {

+        "id": "89467472.09d148",

+        "type": "other",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 735.4166641235352,

+        "y": 340.1666612625122,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "7e601764.405ac8"

+            ]

+        ]

+    },

+    {

+        "id": "7e601764.405ac8",

+        "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 PNFs in MD-SAL\" />\n",

+        "comments": "",

+        "x": 917.0832901000977,

+        "y": 340.1666612625122,

+        "z": "decb865e.560cf8",

+        "wires": []

+    },

+    {

+        "id": "5b09bd46.5c0574",

+        "type": "for",

+        "name": "for each pnf",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 530.4166641235352,

+        "y": 389.16668128967285,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "4e154697.d6fc28"

+            ]

+        ]

+    },

+    {

+        "id": "4e154697.d6fc28",

+        "type": "switchNode",

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

+        "xml": "<switch test='`$service-data.pnfs.pnf[$idx].pnf-id == $pnf-topology-operation-input.pnf-details.pnf-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 785.4167518615723,

+        "y": 387.8333492279053,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "e7691b1.8180fe8"

+            ]

+        ]

+    },

+    {

+        "id": "e7691b1.8180fe8",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1023.7500381469727,

+        "y": 386.833327293396,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "cc442217.f25db"

+            ]

+        ]

+    },

+    {

+        "id": "cc442217.f25db",

+        "type": "set",

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

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

+        "comments": "",

+        "x": 1192.0832328796387,

+        "y": 386.8333492279053,

+        "z": "decb865e.560cf8",

+        "wires": []

+    },

+    {

+        "id": "a8e6104b.8eaab",

+        "type": "switchNode",

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

+        "xml": "<switch test='`$pnf-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 542.0833282470703,

+        "y": 435.8333511352539,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "f4e58e32.9147f"

+            ]

+        ]

+    },

+    {

+        "id": "f4e58e32.9147f",

+        "type": "other",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 723.7499465942383,

+        "y": 435.16668128967285,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "1460f65f.17708a"

+            ]

+        ]

+    },

+    {

+        "id": "1460f65f.17708a",

+        "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=\"'Could not find PNF ' + $pnf-topology-operation-input.pnf-details.pnf-id + ' in MD-SAL'\" />\n",

+        "comments": "",

+        "x": 890.416633605957,

+        "y": 434.83330726623535,

+        "z": "decb865e.560cf8",

+        "wires": []

+    },

+    {

+        "id": "9b19e105.b2e98",

+        "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": 530.8332901000977,

+        "y": 788.7500114440918,

+        "z": "decb865e.560cf8",

+        "wires": []

+    },

+    {

+        "id": "653d68c6.7140b8",

+        "type": "set",

+        "name": "set pnf-level-oper-status to Created",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-rpc-action' value='`$pnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-action' value='`$pnf-topology-operation-input.request-information.request-action`' />\n",

+        "comments": "",

+        "x": 594.5633964538574,

+        "y": 739.8371295928955,

+        "z": "decb865e.560cf8",

+        "wires": []

+    },

+    {

+        "id": "5ddadd37.238e54",

+        "type": "set",

+        "name": "copy input data",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.' value='$pnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.' value='$pnf-topology-operation-input.request-information.' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.' value='$pnf-topology-operation-input.service-information.' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.' value='$pnf-topology-operation-input.pnf-details.' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.' value='$pnf-topology-operation-input.pnf-request-input.' />\n\n",

+        "comments": "",

+        "x": 535.4165382385254,

+        "y": 695.8333110809326,

+        "z": "decb865e.560cf8",

+        "wires": []

+    },

+    {

+        "id": "cb0c3cab.3e7f9",

+        "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=\"`'No pnf found in AAI with pnf-id = ' + $service-data.pnfs.pnf[$pnf-index].pnf-id`\" />\n",

+        "comments": "",

+        "x": 1053.7500190734863,

+        "y": 581.4999418258667,

+        "z": "decb865e.560cf8",

+        "wires": []

+    },

+    {

+        "id": "7ccf7c78.770534",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 884.7739181518555,

+        "y": 537.7857532501221,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "bb23b26b.3439a"

+            ]

+        ]

+    },

+    {

+        "id": "877c806f.dc481",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 893.3453483581543,

+        "y": 582.0714664459229,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "cb0c3cab.3e7f9"

+            ]

+        ]

+    },

+    {

+        "id": "bb23b26b.3439a",

+        "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 updating pnf in AAI\" />\n",

+        "comments": "",

+        "x": 1056.4406127929688,

+        "y": 538.2621469497681,

+        "z": "decb865e.560cf8",

+        "wires": []

+    },

+    {

+        "id": "7bd93c51.6f0374",

+        "type": "save",

+        "name": "update generic-pnf prov-status to NVTPROV",

+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"pnf\"\n   key=\"pnf.pnf-id = $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"prov-status\" value=\"NVTPROV\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 632.0833435058594,

+        "y": 557.5000095367432,

+        "z": "decb865e.560cf8",

+        "wires": [

+            [

+                "7ccf7c78.770534",

+                "877c806f.dc481"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation-assign.json
new file mode 100644
index 0000000..2e3a1c2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation-assign.json
@@ -0,0 +1,424 @@
+[

+    {

+        "id": "d3b3a7ea.d04d08",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 133.3333282470703,

+        "y": 79.63588523864746,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "46bb10f7.5c3fb"

+            ]

+        ]

+    },

+    {

+        "id": "46bb10f7.5c3fb",

+        "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": 248.61903381347656,

+        "y": 121.54066467285156,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "11b944cd.c96c5b"

+            ]

+        ]

+    },

+    {

+        "id": "11b944cd.c96c5b",

+        "type": "method",

+        "name": "method pnf-topology-operation-assign",

+        "xml": "<method rpc='pnf-topology-operation-assign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 243.92864990234375,

+        "y": 165.55255317687988,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "ce6b8a58.b8d3e8"

+            ]

+        ]

+    },

+    {

+        "id": "7e923496.314c4c",

+        "type": "comment",

+        "name": "pnf-topology-operation-assign",

+        "info": "",

+        "comments": "",

+        "x": 535.5948638916016,

+        "y": 41.38888931274414,

+        "z": "6dfe2c1.a0003d4",

+        "wires": []

+    },

+    {

+        "id": "2c8dd484.c334bc",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 627.2143096923828,

+        "y": 309.0287160873413,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "e97259d0.1af158",

+                "413f5d48.571fc4"

+            ]

+        ]

+    },

+    {

+        "id": "e97259d0.1af158",

+        "type": "outcome",

+        "name": "CreatePnfInstance",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 880.9286041259766,

+        "y": 286.1715974807739,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "f6bc9eb4.5cc37"

+            ]

+        ]

+    },

+    {

+        "id": "413f5d48.571fc4",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 842.9285697937012,

+        "y": 331.88592529296875,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "514d78e9.baa838"

+            ]

+        ]

+    },

+    {

+        "id": "f6bc9eb4.5cc37",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1065.785732269287,

+        "y": 286.17162704467773,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "514d78e9.baa838",

+        "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=\"If svc-action is 'assign' then request-action must be 'CreatePnfInstance'\" />\n",

+        "comments": "",

+        "x": 1082.9285774230957,

+        "y": 331.8858833312988,

+        "z": "6dfe2c1.a0003d4",

+        "wires": []

+    },

+    {

+        "id": "4388ff9d.ce7d6",

+        "type": "get-resource",

+        "name": "get-resource VF_MODEL",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODEL WHERE customization_uuid = $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid'\n  pfx='db.vf-model'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 639.5476150512695,

+        "y": 400.17158603668213,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "512ab575.220ccc",

+                "3a1614d2.3eacec"

+            ]

+        ]

+    },

+    {

+        "id": "6dc29919.0f2208",

+        "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=\"`'No model found for VF customization UUID ' + $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid`\" />\n",

+        "comments": "",

+        "x": 1080.9760932922363,

+        "y": 423.60007190704346,

+        "z": "6dfe2c1.a0003d4",

+        "wires": []

+    },

+    {

+        "id": "512ab575.220ccc",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 840.3333129882812,

+        "y": 380.55242347717285,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "d5d2d14c.f67aa"

+            ]

+        ]

+    },

+    {

+        "id": "3a1614d2.3eacec",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 848.9047431945801,

+        "y": 424.83813667297363,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "6dc29919.0f2208"

+            ]

+        ]

+    },

+    {

+        "id": "d5d2d14c.f67aa",

+        "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 reading VF_MODEL table\" />\n",

+        "comments": "",

+        "x": 1080.333293914795,

+        "y": 378.695330619812,

+        "z": "6dfe2c1.a0003d4",

+        "wires": []

+    },

+    {

+        "id": "95465986.653a28",

+        "type": "execute",

+        "name": "execute PropertiesNode",

+        "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": 635.1190948486328,

+        "y": 182.314471244812,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ce6b8a58.b8d3e8",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 353.41272735595703,

+        "y": 309.5079708099365,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "2c8dd484.c334bc",

+                "4388ff9d.ce7d6",

+                "95465986.653a28",

+                "6cdfcbff.124fe4",

+                "4f7127f2.481f58"

+            ]

+        ]

+    },

+    {

+        "id": "6cdfcbff.124fe4",

+        "type": "switchNode",

+        "name": "switch input cloud-owner",

+        "xml": "<switch test='`$pnf-topology-operation-input.pnf-request-input.cloud-owner`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 635.8333511352539,

+        "y": 237.55254077911377,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "fbe3ca5c.624b78",

+                "12f9e0f5.d15d1f"

+            ]

+        ]

+    },

+    {

+        "id": "fbe3ca5c.624b78",

+        "type": "other",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 819.1667251586914,

+        "y": 207.55252933502197,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "c50e0e6c.80923"

+            ]

+        ]

+    },

+    {

+        "id": "12f9e0f5.d15d1f",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 818.9286308288574,

+        "y": 248.5050230026245,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "6843bdbc.1eb674"

+            ]

+        ]

+    },

+    {

+        "id": "c50e0e6c.80923",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 954.1666793823242,

+        "y": 205.88586902618408,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6843bdbc.1eb674",

+        "type": "set",

+        "name": "set prop.cloud-region.cloud-owner",

+        "xml": "<set>\n<parameter name='prop.cloud-region.cloud-owner' value='`$pnf-topology-operation-input.pnf-request-input.cloud-owner`' />\n",

+        "comments": "",

+        "x": 1035.8333358764648,

+        "y": 247.55255031585693,

+        "z": "6dfe2c1.a0003d4",

+        "wires": []

+    },

+    {

+        "id": "940a3bec.b79db8",

+        "type": "call",

+        "name": "call self-serve-pnf-assign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-pnf-assign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 848.5553359985352,

+        "y": 596.4128832817078,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "ee11637d.64cc5"

+            ]

+        ]

+    },

+    {

+        "id": "22ef4f33.3ca9c",

+        "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=\"`'Failed to create self-serve assignment for pnf with pnf-id=' + $pnf-topology-operation-input.pnf-details.pnf-id + ' with error: ' + $error-message`\" />\n",

+        "comments": "",

+        "x": 1232.6267127990723,

+        "y": 596.4128336906433,

+        "z": "6dfe2c1.a0003d4",

+        "wires": []

+    },

+    {

+        "id": "d7499e88.a3c54",

+        "type": "comment",

+        "name": "SELF-SERVE FORK",

+        "info": "",

+        "comments": "",

+        "x": 758.174690246582,

+        "y": 547.6151220798492,

+        "z": "6dfe2c1.a0003d4",

+        "wires": []

+    },

+    {

+        "id": "ee11637d.64cc5",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1053.8529167175293,

+        "y": 595.9009146690369,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "22ef4f33.3ca9c"

+            ]

+        ]

+    },

+    {

+        "id": "8085154e.65e6a8",

+        "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": 820.9642715454102,

+        "y": 750.5674510002136,

+        "z": "6dfe2c1.a0003d4",

+        "wires": []

+    },

+    {

+        "id": "4326ce02.3a255",

+        "type": "set",

+        "name": "set pnf-level-oper-status to PendingCreate",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.order-status' value='PendingCreate' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-rpc-action' value='`$pnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-action' value='`$pnf-topology-operation-input.request-information.request-action`' />",

+        "comments": "",

+        "x": 959.0277328491211,

+        "y": 649.15491771698,

+        "z": "6dfe2c1.a0003d4",

+        "wires": []

+    },

+    {

+        "id": "b05b3263.f3526",

+        "type": "execute",

+        "name": "printContext",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 810.8689994812012,

+        "y": 698.3447003364563,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4f7127f2.481f58",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 599.535530090332,

+        "y": 667.8531589508057,

+        "z": "6dfe2c1.a0003d4",

+        "wires": [

+            [

+                "940a3bec.b79db8",

+                "8085154e.65e6a8",

+                "b05b3263.f3526"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation-deactivate.json
new file mode 100644
index 0000000..f02e15d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation-deactivate.json
@@ -0,0 +1,408 @@
+[

+    {

+        "id": "8506af40.5640e",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 182.5,

+        "y": 152.4136562347412,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "8720000f.3622"

+            ]

+        ]

+    },

+    {

+        "id": "8720000f.3622",

+        "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": 296.78570556640625,

+        "y": 192.6517677307129,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "35837ff.2b64c8"

+            ]

+        ]

+    },

+    {

+        "id": "35837ff.2b64c8",

+        "type": "method",

+        "name": "method pnf-topology-operation-deactivate",

+        "xml": "<method rpc='pnf-topology-operation-deactivate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 282.92862701416016,

+        "y": 232.4136562347412,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "5faec448.e83a7c"

+            ]

+        ]

+    },

+    {

+        "id": "988f9bfd.746e88",

+        "type": "comment",

+        "name": "pnf-topology-operation-deactivate",

+        "info": "",

+        "comments": "",

+        "x": 576.844856262207,

+        "y": 100,

+        "z": "e258b0aa.62b08",

+        "wires": []

+    },

+    {

+        "id": "f4c58140.97edc",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 586.023811340332,

+        "y": 331.2707939147949,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "726a3e0d.32be6",

+                "1cb14b3d.d899b5"

+            ]

+        ]

+    },

+    {

+        "id": "726a3e0d.32be6",

+        "type": "outcome",

+        "name": "DeletePnfInstance",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 812.7380867004395,

+        "y": 306.74701023101807,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "a3bbd2.65d8743"

+            ]

+        ]

+    },

+    {

+        "id": "1cb14b3d.d899b5",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 776.7380523681641,

+        "y": 352.4613380432129,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "4344bfcd.bedc2"

+            ]

+        ]

+    },

+    {

+        "id": "a3bbd2.65d8743",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 999.59521484375,

+        "y": 306.7470397949219,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4344bfcd.bedc2",

+        "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=\"If svc-action is 'deactivate' then request-action must be 'DeletePnfInstance'\" />\n",

+        "comments": "",

+        "x": 1016.7380599975586,

+        "y": 352.46129608154297,

+        "z": "e258b0aa.62b08",

+        "wires": []

+    },

+    {

+        "id": "5faec448.e83a7c",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 259.16666412353516,

+        "y": 454.0803279876709,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "f4c58140.97edc",

+                "12e91417.a114bc",

+                "de22c438.12dd88",

+                "8ecfe532.9e7b28",

+                "abfda14e.5c5ef",

+                "33eac0f7.3cb6e",

+                "3a413756.ae65c8",

+                "391576a4.28d9fa"

+            ]

+        ]

+    },

+    {

+        "id": "12e91417.a114bc",

+        "type": "switchNode",

+        "name": "switch pnf_length",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 572.4999847412109,

+        "y": 400.74701976776123,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "65a7dfe.70d192"

+            ]

+        ]

+    },

+    {

+        "id": "65a7dfe.70d192",

+        "type": "other",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 759.1666641235352,

+        "y": 400.0803174972534,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "72a5bc7.446c444"

+            ]

+        ]

+    },

+    {

+        "id": "72a5bc7.446c444",

+        "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 PNFs in MD-SAL\" />\n",

+        "comments": "",

+        "x": 940.8332901000977,

+        "y": 400.0803174972534,

+        "z": "e258b0aa.62b08",

+        "wires": []

+    },

+    {

+        "id": "de22c438.12dd88",

+        "type": "for",

+        "name": "for each pnf",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 554.1666641235352,

+        "y": 449.08033752441406,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "20aebd62.e37282"

+            ]

+        ]

+    },

+    {

+        "id": "20aebd62.e37282",

+        "type": "switchNode",

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

+        "xml": "<switch test='`$service-data.pnfs.pnf[$idx].pnf-id == $pnf-topology-operation-input.pnf-details.pnf-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 809.1667518615723,

+        "y": 447.7470054626465,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "ea9be52a.cc9c48"

+            ]

+        ]

+    },

+    {

+        "id": "ea9be52a.cc9c48",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1047.5000381469727,

+        "y": 446.7469835281372,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "f14f1154.64ba2"

+            ]

+        ]

+    },

+    {

+        "id": "f14f1154.64ba2",

+        "type": "set",

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

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

+        "comments": "",

+        "x": 1215.8332328796387,

+        "y": 446.7470054626465,

+        "z": "e258b0aa.62b08",

+        "wires": []

+    },

+    {

+        "id": "8ecfe532.9e7b28",

+        "type": "switchNode",

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

+        "xml": "<switch test='`$pnf-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 565.8333206176758,

+        "y": 495.74700689315796,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "9637a20a.14e2a"

+            ]

+        ]

+    },

+    {

+        "id": "9637a20a.14e2a",

+        "type": "other",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 747.4999465942383,

+        "y": 495.08033752441406,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "f6ea119e.d9b2b"

+            ]

+        ]

+    },

+    {

+        "id": "f6ea119e.d9b2b",

+        "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=\"'Could not find PNF with pnf-id = ' + $pnf-topology-operation-input.pnf-details.pnf-id + ' in MD-SAL'\" />\n",

+        "comments": "",

+        "x": 914.166633605957,

+        "y": 494.74696350097656,

+        "z": "e258b0aa.62b08",

+        "wires": []

+    },

+    {

+        "id": "abfda14e.5c5ef",

+        "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": 559.1666488647461,

+        "y": 715.7469959259033,

+        "z": "e258b0aa.62b08",

+        "wires": []

+    },

+    {

+        "id": "33eac0f7.3cb6e",

+        "type": "set",

+        "name": "set pnf-level-oper-status to PendingDelete",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-rpc-action' value='`$pnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-action' value='`$pnf-topology-operation-input.request-information.request-action`' />\n",

+        "comments": "",

+        "x": 646.646728515625,

+        "y": 671.4174251556396,

+        "z": "e258b0aa.62b08",

+        "wires": []

+    },

+    {

+        "id": "3a413756.ae65c8",

+        "type": "set",

+        "name": "copy input data",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.' value='$pnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.' value='$pnf-topology-operation-input.request-information.' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.' value='$pnf-topology-operation-input.service-information.' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.' value='$pnf-topology-operation-input.pnf-details.' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.' value='$pnf-topology-operation-input.pnf-request-input.' />\n\n",

+        "comments": "",

+        "x": 560.8332290649414,

+        "y": 629.0803050994873,

+        "z": "e258b0aa.62b08",

+        "wires": []

+    },

+    {

+        "id": "e04691b0.11c04",

+        "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=\"`'No pnf found in AAI with pnf-id =  ' + $service-data.pnfs.pnf[$pnf-index].pnf-id`\" />\n",

+        "comments": "",

+        "x": 1112.499942779541,

+        "y": 581.6666793823242,

+        "z": "e258b0aa.62b08",

+        "wires": []

+    },

+    {

+        "id": "cbdddd32.ce5af",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 943.5238418579102,

+        "y": 537.9524908065796,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "1f3441b2.bf159e"

+            ]

+        ]

+    },

+    {

+        "id": "156cb32c.728abd",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 952.095272064209,

+        "y": 582.2382040023804,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "e04691b0.11c04"

+            ]

+        ]

+    },

+    {

+        "id": "1f3441b2.bf159e",

+        "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 updating pnf in AAI\" />\n",

+        "comments": "",

+        "x": 1115.1905364990234,

+        "y": 538.4288845062256,

+        "z": "e258b0aa.62b08",

+        "wires": []

+    },

+    {

+        "id": "391576a4.28d9fa",

+        "type": "save",

+        "name": "update pnf orch-status to PendingDelete",

+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"pnf\"\n   key=\"pnf.pnf-id = $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"orchestration-status\" value=\"PendingDelete\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 667.4999084472656,

+        "y": 557.6667184829712,

+        "z": "e258b0aa.62b08",

+        "wires": [

+            [

+                "cbdddd32.ce5af",

+                "156cb32c.728abd"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation-unassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation-unassign.json
new file mode 100644
index 0000000..7a24446
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation-unassign.json
@@ -0,0 +1,605 @@
+[

+    {

+        "id": "44848463.9c03cc",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 142.85713958740234,

+        "y": 84.91365146636963,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "f14302be.ebaf1"

+            ]

+        ]

+    },

+    {

+        "id": "f14302be.ebaf1",

+        "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": 257.1428451538086,

+        "y": 125.15176296234131,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "153fc0f1.cb87df"

+            ]

+        ]

+    },

+    {

+        "id": "153fc0f1.cb87df",

+        "type": "method",

+        "name": "method pnf-topology-operation-unassign",

+        "xml": "<method rpc='pnf-topology-operation-unassign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 265.00006103515625,

+        "y": 177.7707920074463,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "b956be40.069de"

+            ]

+        ]

+    },

+    {

+        "id": "99b1e8a8.435958",

+        "type": "comment",

+        "name": "pnf-topology-operation-unassign",

+        "info": "",

+        "comments": "",

+        "x": 618.6305541992188,

+        "y": 65.35713768005371,

+        "z": "f1a3b581.3496c8",

+        "wires": []

+    },

+    {

+        "id": "b8803272.ab828",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 547.2738151550293,

+        "y": 312.52079010009766,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "dc693389.c0655",

+                "1ad46da6.a11c82"

+            ]

+        ]

+    },

+    {

+        "id": "dc693389.c0655",

+        "type": "outcome",

+        "name": "DeletePnfInstance",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 767.6547508239746,

+        "y": 287.99699878692627,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "67e9ef57.3e2e3"

+            ]

+        ]

+    },

+    {

+        "id": "1ad46da6.a11c82",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 729.6547164916992,

+        "y": 333.7113265991211,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "3d7b589b.6788d8"

+            ]

+        ]

+    },

+    {

+        "id": "67e9ef57.3e2e3",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 952.5118789672852,

+        "y": 287.9970283508301,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3d7b589b.6788d8",

+        "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=\"If svc-action is 'unassign' then request-action must be 'DeletePnfInstance'\" />\n",

+        "comments": "",

+        "x": 969.6547241210938,

+        "y": 333.7112846374512,

+        "z": "f1a3b581.3496c8",

+        "wires": []

+    },

+    {

+        "id": "b956be40.069de",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 307.0833511352539,

+        "y": 375.7470169067383,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "b8803272.ab828",

+                "472a3863.cadb08"

+            ]

+        ]

+    },

+    {

+        "id": "472a3863.cadb08",

+        "type": "switchNode",

+        "name": "switch pnf_length",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 535.8333053588867,

+        "y": 431.99701499938965,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "30e6e945.388c56",

+                "db658b73.14d608"

+            ]

+        ]

+    },

+    {

+        "id": "30e6e945.388c56",

+        "type": "other",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 720.4166679382324,

+        "y": 381.33031368255615,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "4eb21415.9f088c"

+            ]

+        ]

+    },

+    {

+        "id": "ac223b7b.327ae8",

+        "type": "for",

+        "name": "for each pnf",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1058.7499885559082,

+        "y": 460.99698543548584,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "863b8b5d.b74bd8"

+            ]

+        ]

+    },

+    {

+        "id": "863b8b5d.b74bd8",

+        "type": "switchNode",

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

+        "xml": "<switch test='`$service-data.pnfs.pnf[$idx].pnf-id == $pnf-topology-operation-input.pnf-details.pnf-id`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1313.7500762939453,

+        "y": 460.66365337371826,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "1a869d86.029822"

+            ]

+        ]

+    },

+    {

+        "id": "1a869d86.029822",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1552.0833625793457,

+        "y": 459.663631439209,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "89db8fa1.fbfb7"

+            ]

+        ]

+    },

+    {

+        "id": "89db8fa1.fbfb7",

+        "type": "set",

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

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

+        "comments": "",

+        "x": 1720.4165573120117,

+        "y": 459.66365337371826,

+        "z": "f1a3b581.3496c8",

+        "wires": []

+    },

+    {

+        "id": "91f7c5d2.aec7c8",

+        "type": "switchNode",

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

+        "xml": "<switch test='`$pnf-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1068.7499961853027,

+        "y": 528.6636762619019,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "a73b88c1.d4a938",

+                "61ae7a9f.6fa4c4"

+            ]

+        ]

+    },

+    {

+        "id": "a73b88c1.d4a938",

+        "type": "other",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1252.0832710266113,

+        "y": 507.99698543548584,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "3f8e107f.398f6"

+            ]

+        ]

+    },

+    {

+        "id": "2f8817c9.6ff968",

+        "type": "for",

+        "name": "for each pnf",

+        "xml": "<for index='idx' start='`$pnf-index + 1`' end='`$service-data.pnfs.pnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1840.7474479675293,

+        "y": 816.2073278427124,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "fbaab91f.ad4ac8"

+            ]

+        ]

+    },

+    {

+        "id": "ffb94216.e342d",

+        "type": "comment",

+        "name": "Remove PNF from service data",

+        "info": "",

+        "comments": "",

+        "x": 1192.5489654541016,

+        "y": 874.8146324157715,

+        "z": "f1a3b581.3496c8",

+        "wires": []

+    },

+    {

+        "id": "1e58255a.651e5b",

+        "type": "set",

+        "name": "move pnf to remove one",

+        "xml": "<set>\n<parameter name=\"service-data.pnfs.pnf[$tmpidx].\" value=\"$service-data.pnfs.pnf[$idx].\" />\n\t\n",

+        "comments": "",

+        "x": 2229.576835632324,

+        "y": 874.1359367370605,

+        "z": "f1a3b581.3496c8",

+        "wires": []

+    },

+    {

+        "id": "360a75d1.d30c7a",

+        "type": "switchNode",

+        "name": "switch pnf_length",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1269.5051574707031,

+        "y": 823.5368947982788,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "aaa45fd.40e56a",

+                "1dac6983.f86bf6"

+            ]

+        ]

+    },

+    {

+        "id": "aaa45fd.40e56a",

+        "type": "outcome",

+        "name": "1",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1457.9338836669922,

+        "y": 752.7748603820801,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "5f59c80c.833558"

+            ]

+        ]

+    },

+    {

+        "id": "5f59c80c.833558",

+        "type": "set",

+        "name": "Remove pnfs",

+        "xml": "<set>\n\t<parameter name=\"service-data.pnfs.\" value=\"\"/>\n\n",

+        "comments": "",

+        "x": 1621.6003799438477,

+        "y": 752.774959564209,

+        "z": "f1a3b581.3496c8",

+        "wires": []

+    },

+    {

+        "id": "1dac6983.f86bf6",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1458.0290985107422,

+        "y": 898.6796436309814,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "52f2f529.abde7c"

+            ]

+        ]

+    },

+    {

+        "id": "4e1f1b16.7137e4",

+        "type": "set",

+        "name": "set new pnf length",

+        "xml": "<set>\n\t<parameter name=\"service-data.pnfs.pnf_length\" value=\"`$service-data.pnfs.pnf_length - 1`\"/>\n\n\t\n",

+        "comments": "",

+        "x": 1863.1589050292969,

+        "y": 988.548994064331,

+        "z": "f1a3b581.3496c8",

+        "wires": []

+    },

+    {

+        "id": "30dd49ff.6bcb66",

+        "type": "set",

+        "name": "Remove the last pnf in the list",

+        "xml": "<set>\n\t<parameter name=\"service-data.pnfs.pnf[$service-data.pnfs.pnf_length - 1].\" value=\"\"/>\n\n",

+        "comments": "",

+        "x": 1900.291259765625,

+        "y": 930.8027439117432,

+        "z": "f1a3b581.3496c8",

+        "wires": []

+    },

+    {

+        "id": "52f2f529.abde7c",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1623.8384399414062,

+        "y": 898.2034244537354,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "2f8817c9.6ff968",

+                "30dd49ff.6bcb66",

+                "4e1f1b16.7137e4"

+            ]

+        ]

+    },

+    {

+        "id": "13e0a554.21a0db",

+        "type": "call",

+        "name": "call self-serve-pnf-unassign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-pnf-unassign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 825.9999084472656,

+        "y": 940.059440612793,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "3f91ac2d.0f5594",

+                "a584b92f.61d548"

+            ]

+        ]

+    },

+    {

+        "id": "3f91ac2d.0f5594",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1065.1784286499023,

+        "y": 1058.88090133667,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "35976213.e5e2de"

+            ]

+        ]

+    },

+    {

+        "id": "35976213.e5e2de",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Encountered error while unassigning self-serve  pnf resources with error: '+ $error-message`\" />\n",

+        "comments": "",

+        "x": 1230.749855041504,

+        "y": 1058.523796081543,

+        "z": "f1a3b581.3496c8",

+        "wires": []

+    },

+    {

+        "id": "a584b92f.61d548",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1079.7855987548828,

+        "y": 823.7221164703369,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "360a75d1.d30c7a"

+            ]

+        ]

+    },

+    {

+        "id": "3f8e107f.398f6",

+        "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",

+        "comments": "",

+        "x": 1408.7499732971191,

+        "y": 506.99694538116455,

+        "z": "f1a3b581.3496c8",

+        "wires": []

+    },

+    {

+        "id": "4eb21415.9f088c",

+        "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",

+        "comments": "",

+        "x": 873.7499656677246,

+        "y": 380.33032417297363,

+        "z": "f1a3b581.3496c8",

+        "wires": []

+    },

+    {

+        "id": "db658b73.14d608",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 717.0833854675293,

+        "y": 490.33028984069824,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "417ce772.8c6608"

+            ]

+        ]

+    },

+    {

+        "id": "417ce772.8c6608",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 875.4166221618652,

+        "y": 490.3302993774414,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "ac223b7b.327ae8",

+                "91f7c5d2.aec7c8"

+            ]

+        ]

+    },

+    {

+        "id": "d339953b.0b9398",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 580.773738861084,

+        "y": 940.4612274169922,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "13e0a554.21a0db"

+            ]

+        ]

+    },

+    {

+        "id": "61ae7a9f.6fa4c4",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1248.7500686645508,

+        "y": 553.6636695861816,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "d339953b.0b9398"

+            ]

+        ]

+    },

+    {

+        "id": "fbaab91f.ad4ac8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2006.1906929016113,

+        "y": 815.7470827102661,

+        "z": "f1a3b581.3496c8",

+        "wires": [

+            [

+                "dcefa387.6f6e2",

+                "1e58255a.651e5b",

+                "1b980290.5651ad"

+            ]

+        ]

+    },

+    {

+        "id": "dcefa387.6f6e2",

+        "type": "set",

+        "name": "set tmpidx",

+        "xml": "<set>\n<parameter name=\"$tmpidx\" value=\"`$idx - 1`\"/>\n",

+        "comments": "",

+        "x": 2180.190361022949,

+        "y": 756.2707481384277,

+        "z": "f1a3b581.3496c8",

+        "wires": []

+    },

+    {

+        "id": "1b980290.5651ad",

+        "type": "set",

+        "name": "erase entry at tmpidx",

+        "xml": "<set>\n<parameter name=\"service-data.pnfs.pnf[$tmpidx].\" value=\"\" />\n\t\n",

+        "comments": "",

+        "x": 2218.333023071289,

+        "y": 814.0803489685059,

+        "z": "f1a3b581.3496c8",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation.json
new file mode 100644
index 0000000..9559965
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_pnf-topology-operation.json
@@ -0,0 +1,302 @@
+[

+    {

+        "id": "a75a636d.6f381",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 151.42859649658203,

+        "y": 90.00000190734863,

+        "z": "304db441.66b4dc",

+        "wires": [

+            [

+                "bc77da8a.d3eb38"

+            ]

+        ]

+    },

+    {

+        "id": "bc77da8a.d3eb38",

+        "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.7143020629883,

+        "y": 130.2381134033203,

+        "z": "304db441.66b4dc",

+        "wires": [

+            [

+                "5d578276.4bfefc"

+            ]

+        ]

+    },

+    {

+        "id": "5d578276.4bfefc",

+        "type": "method",

+        "name": "method pnf-topology-operation",

+        "xml": "<method rpc='pnf-topology-operation' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 217.8572235107422,

+        "y": 169.99999618530273,

+        "z": "304db441.66b4dc",

+        "wires": [

+            [

+                "8685d57b.911a08"

+            ]

+        ]

+    },

+    {

+        "id": "24fd3171.4300ae",

+        "type": "comment",

+        "name": "pnf-topology-operation",

+        "info": "",

+        "comments": "",

+        "x": 545.7734527587891,

+        "y": 37.58634567260742,

+        "z": "304db441.66b4dc",

+        "wires": []

+    },

+    {

+        "id": "8685d57b.911a08",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 234.02387237548828,

+        "y": 376.26495265960693,

+        "z": "304db441.66b4dc",

+        "wires": [

+            [

+                "53481fdc.accfe",

+                "142ac2ac.46ecad",

+                "1bd90137.06db9f"

+            ]

+        ]

+    },

+    {

+        "id": "53481fdc.accfe",

+        "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": 519.380973815918,

+        "y": 530.7146434783936,

+        "z": "304db441.66b4dc",

+        "wires": []

+    },

+    {

+        "id": "142ac2ac.46ecad",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 529.4285430908203,

+        "y": 374.4761962890625,

+        "z": "304db441.66b4dc",

+        "wires": [

+            [

+                "19927cce.f2a7f3",

+                "9c8ad773.ef9d68",

+                "a0c10c00.06af18",

+                "4205ab8c.75bdf4",

+                "5cc63376.4006fc",

+                "bec05d4a.4c7b6"

+            ]

+        ]

+    },

+    {

+        "id": "19927cce.f2a7f3",

+        "type": "outcome",

+        "name": "assign",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 726.8094863891602,

+        "y": 268.5239009857178,

+        "z": "304db441.66b4dc",

+        "wires": [

+            [

+                "ff0b4bca.7ccaa8"

+            ]

+        ]

+    },

+    {

+        "id": "9c8ad773.ef9d68",

+        "type": "outcome",

+        "name": "unassign",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 730.8571090698242,

+        "y": 398.7146244049072,

+        "z": "304db441.66b4dc",

+        "wires": [

+            [

+                "34401634.f821aa"

+            ]

+        ]

+    },

+    {

+        "id": "4205ab8c.75bdf4",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 724.142744064331,

+        "y": 484.3332748413086,

+        "z": "304db441.66b4dc",

+        "wires": [

+            [

+                "fa0f4334.3fb5"

+            ]

+        ]

+    },

+    {

+        "id": "fa0f4334.3fb5",

+        "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=\"`$pnf-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n",

+        "comments": "",

+        "x": 910.3331890106201,

+        "y": 484.3333396911621,

+        "z": "304db441.66b4dc",

+        "wires": []

+    },

+    {

+        "id": "1bd90137.06db9f",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:validate-pnf-input",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-pnf-input' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 633.8452301025391,

+        "y": 227.38104057312012,

+        "z": "304db441.66b4dc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ff0b4bca.7ccaa8",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:pnf-topology-operation-assign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-assign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1068.9523391723633,

+        "y": 268.0953617095947,

+        "z": "304db441.66b4dc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "90a49ca8.b5074",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:pnf-topology-operation-deactivate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-deactivate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1080.2856063842773,

+        "y": 352.4287099838257,

+        "z": "304db441.66b4dc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "34401634.f821aa",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:pnf-topology-operation-unassign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-unassign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1075.952205657959,

+        "y": 398.42875576019287,

+        "z": "304db441.66b4dc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a0c10c00.06af18",

+        "type": "outcome",

+        "name": "deactivate",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 735.9522476196289,

+        "y": 353.09538555145264,

+        "z": "304db441.66b4dc",

+        "wires": [

+            [

+                "90a49ca8.b5074"

+            ]

+        ]

+    },

+    {

+        "id": "38e4cbe2.ef1884",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:pnf-topology-operation-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-activate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1073.0951843261719,

+        "y": 309.9999933242798,

+        "z": "304db441.66b4dc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5cc63376.4006fc",

+        "type": "outcome",

+        "name": "activate",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 729.7618255615234,

+        "y": 310.66666889190674,

+        "z": "304db441.66b4dc",

+        "wires": [

+            [

+                "38e4cbe2.ef1884"

+            ]

+        ]

+    },

+    {

+        "id": "bec05d4a.4c7b6",

+        "type": "outcome",

+        "name": "changeassign",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 745.7143363952637,

+        "y": 441.42855644226074,

+        "z": "304db441.66b4dc",

+        "wires": [

+            [

+                "27aa457b.765b8a"

+            ]

+        ]

+    },

+    {

+        "id": "27aa457b.765b8a",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:pnf-topology-operation-changeassign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-changeassign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1086.5237045288086,

+        "y": 441.1427230834961,

+        "z": "304db441.66b4dc",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_policy-manager-create-policy.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_policy-manager-create-policy.json
new file mode 100755
index 0000000..06127c8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_policy-manager-create-policy.json
@@ -0,0 +1,242 @@
+[
+    {
+        "id": "5ea66244.2043ac",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 101.42857360839844,
+        "y": 82.85714721679688,
+        "z": "2f4e466a.a72c1a",
+        "wires": [
+            [
+                "1488d42d.2b4bec"
+            ]
+        ]
+    },
+    {
+        "id": "1488d42d.2b4bec",
+        "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.04759979248047,
+        "y": 123.09526062011719,
+        "z": "2f4e466a.a72c1a",
+        "wires": [
+            [
+                "accb6834.19e2e8"
+            ]
+        ]
+    },
+    {
+        "id": "accb6834.19e2e8",
+        "type": "method",
+        "name": "method policy-manager-create-policy",
+        "xml": "<method rpc='policy-manager-create-policy' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 186.8572006225586,
+        "y": 162.85714721679688,
+        "z": "2f4e466a.a72c1a",
+        "wires": [
+            [
+                "4c2a088b.3e0ba8"
+            ]
+        ]
+    },
+    {
+        "id": "dfa928b6.5c06b8",
+        "type": "comment",
+        "name": "policy-manager-create-policy",
+        "info": "",
+        "comments": "",
+        "x": 495.77342987060547,
+        "y": 30.443490982055664,
+        "z": "2f4e466a.a72c1a",
+        "wires": []
+    },
+    {
+        "id": "4c2a088b.3e0ba8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 217.1428680419922,
+        "y": 324.28570556640625,
+        "z": "2f4e466a.a72c1a",
+        "wires": [
+            [
+                "189efe08.1f8952",
+                "e0ad431.613cbc"
+            ]
+        ]
+    },
+    {
+        "id": "189efe08.1f8952",
+        "type": "execute",
+        "name": "RestapiCallnode createPolicy",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.pm.createpolicy.templatefile`\" />\n    <parameter name='restapiUrl' value=\"`$prop.policy-manager.url + '/pdp/api/createPolicy'`\" />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name='convertResponse' value=\"false\" />\n    <parameter name='customHttpHeaders'\n      value=\"`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 472.8571548461914,
+        "y": 284.2857074737549,
+        "z": "2f4e466a.a72c1a",
+        "wires": [
+            [
+                "1edc5a5e.259046",
+                "ac8ecfcb.7d84c"
+            ]
+        ]
+    },
+    {
+        "id": "1edc5a5e.259046",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 685.7142562866211,
+        "y": 258.5714349746704,
+        "z": "2f4e466a.a72c1a",
+        "wires": [
+            [
+                "c0e63f5a.e0d5e"
+            ]
+        ]
+    },
+    {
+        "id": "c0e63f5a.e0d5e",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 849.428581237793,
+        "y": 258.4999108314514,
+        "z": "2f4e466a.a72c1a",
+        "wires": [
+            [
+                "8a75b361.99d53"
+            ]
+        ]
+    },
+    {
+        "id": "ac8ecfcb.7d84c",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 681.8517951965332,
+        "y": 306.4946479797363,
+        "z": "2f4e466a.a72c1a",
+        "wires": [
+            [
+                "3c3c68db.b16138"
+            ]
+        ]
+    },
+    {
+        "id": "8a75b361.99d53",
+        "type": "execute",
+        "name": "RestapiCallnode pushPolicy",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.pm.pushpolicy.templatefile`\" />\n    <parameter name='restapiUrl' value=\"`$prop.policy-manager.url + '/pdp/api/pushPolicy'`\" />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name='convertResponse' value=\"false\" />\n    <parameter name='customHttpHeaders'\n      value=\"`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1084.2857666015625,
+        "y": 222.85716438293457,
+        "z": "2f4e466a.a72c1a",
+        "wires": [
+            [
+                "dd3bc8bc.e85af8",
+                "5808b3a9.1ba37c"
+            ]
+        ]
+    },
+    {
+        "id": "dd3bc8bc.e85af8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1290,
+        "y": 195.71431159973145,
+        "z": "2f4e466a.a72c1a",
+        "wires": [
+            [
+                "fe10eb1e.6c23a8"
+            ]
+        ]
+    },
+    {
+        "id": "fe10eb1e.6c23a8",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1453.7143249511719,
+        "y": 195.64278745651245,
+        "z": "2f4e466a.a72c1a",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5808b3a9.1ba37c",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1286.137538909912,
+        "y": 243.63752460479736,
+        "z": "2f4e466a.a72c1a",
+        "wires": [
+            [
+                "731c4238.4b27ac"
+            ]
+        ]
+    },
+    {
+        "id": "3c3c68db.b16138",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Failed to create policy in Policy Manager' />\n",
+        "comments": "",
+        "x": 847.1428680419922,
+        "y": 306.5714521408081,
+        "z": "2f4e466a.a72c1a",
+        "wires": []
+    },
+    {
+        "id": "731c4238.4b27ac",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Failed to push policy in Policy Manager' />\n",
+        "comments": "",
+        "x": 1450.5714225769043,
+        "y": 243.28573417663574,
+        "z": "2f4e466a.a72c1a",
+        "wires": []
+    },
+    {
+        "id": "e0ad431.613cbc",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n",
+        "comments": "",
+        "x": 425.71429443359375,
+        "y": 362.857138633728,
+        "z": "2f4e466a.a72c1a",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_policy-manager-delete-policy.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_policy-manager-delete-policy.json
new file mode 100755
index 0000000..974dd10
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_policy-manager-delete-policy.json
@@ -0,0 +1,242 @@
+[
+    {
+        "id": "d581c562.c43188",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 105.71428680419922,
+        "y": 82.85714721679688,
+        "z": "3db8bf99.514be",
+        "wires": [
+            [
+                "fe2cb5ef.9a8118"
+            ]
+        ]
+    },
+    {
+        "id": "fe2cb5ef.9a8118",
+        "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": 219.33331298828125,
+        "y": 123.09526062011719,
+        "z": "3db8bf99.514be",
+        "wires": [
+            [
+                "afb77106.81ec6"
+            ]
+        ]
+    },
+    {
+        "id": "afb77106.81ec6",
+        "type": "method",
+        "name": "method policy-manager-delete-policy",
+        "xml": "<method rpc='policy-manager-delete-policy' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 191.14291381835938,
+        "y": 162.85714721679688,
+        "z": "3db8bf99.514be",
+        "wires": [
+            [
+                "fac4023.3e872"
+            ]
+        ]
+    },
+    {
+        "id": "7456b083.f5c67",
+        "type": "comment",
+        "name": "policy-manager-delete-policy",
+        "info": "",
+        "comments": "",
+        "x": 500.05914306640625,
+        "y": 30.443490982055664,
+        "z": "3db8bf99.514be",
+        "wires": []
+    },
+    {
+        "id": "fac4023.3e872",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 221.42858123779297,
+        "y": 324.28570556640625,
+        "z": "3db8bf99.514be",
+        "wires": [
+            [
+                "e7322979.b0b9c8",
+                "fbc41199.2cc44"
+            ]
+        ]
+    },
+    {
+        "id": "e7322979.b0b9c8",
+        "type": "execute",
+        "name": "RestapiCallnode deletePolicy PDP",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.pm.deletepolicypdp.templatefile`\" />\n    <parameter name='restapiUrl' value=\"`$prop.policy-manager.url + '/pdp/api/deletePolicy'`\" />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name='convertResponse' value=\"false\" />\n    <parameter name='customHttpHeaders'\n      value=\"`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 499.99998474121094,
+        "y": 284.28571224212646,
+        "z": "3db8bf99.514be",
+        "wires": [
+            [
+                "47d31b8a.83ea94",
+                "fef211f6.ec11e"
+            ]
+        ]
+    },
+    {
+        "id": "47d31b8a.83ea94",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 728.5714263916016,
+        "y": 260.0000009536743,
+        "z": "3db8bf99.514be",
+        "wires": [
+            [
+                "3d158249.ff10fe"
+            ]
+        ]
+    },
+    {
+        "id": "3d158249.ff10fe",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 892.2857513427734,
+        "y": 259.9284768104553,
+        "z": "3db8bf99.514be",
+        "wires": [
+            [
+                "56e0237b.2129ac"
+            ]
+        ]
+    },
+    {
+        "id": "fef211f6.ec11e",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 724.7089653015137,
+        "y": 307.92321395874023,
+        "z": "3db8bf99.514be",
+        "wires": [
+            [
+                "2cb54eeb.c893e2"
+            ]
+        ]
+    },
+    {
+        "id": "f1cdea53.99d408",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1370.0000076293945,
+        "y": 233.5714454650879,
+        "z": "3db8bf99.514be",
+        "wires": [
+            [
+                "37d77ceb.7b75b4"
+            ]
+        ]
+    },
+    {
+        "id": "37d77ceb.7b75b4",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1533.7143325805664,
+        "y": 233.4999213218689,
+        "z": "3db8bf99.514be",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e6cf96c3.b55948",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1366.1375465393066,
+        "y": 281.4946584701538,
+        "z": "3db8bf99.514be",
+        "wires": [
+            [
+                "898e79aa.dcca08"
+            ]
+        ]
+    },
+    {
+        "id": "2cb54eeb.c893e2",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Failed to delete policy from Policy Manager (PDP)' />\n",
+        "comments": "",
+        "x": 890.0000381469727,
+        "y": 308.000018119812,
+        "z": "3db8bf99.514be",
+        "wires": []
+    },
+    {
+        "id": "fbc41199.2cc44",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n",
+        "comments": "",
+        "x": 438.5714111328125,
+        "y": 362.85710525512695,
+        "z": "3db8bf99.514be",
+        "wires": []
+    },
+    {
+        "id": "56e0237b.2129ac",
+        "type": "execute",
+        "name": "RestapiCallnode deletePolicy PAP",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.pm.deletepolicypap.templatefile`\" />\n    <parameter name='restapiUrl' value=\"`$prop.policy-manager.url + '/pdp/api/deletePolicy'`\" />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name='convertResponse' value=\"false\" />\n    <parameter name='customHttpHeaders'\n      value=\"`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1131.4286193847656,
+        "y": 259.14286613464355,
+        "z": "3db8bf99.514be",
+        "wires": [
+            [
+                "f1cdea53.99d408",
+                "e6cf96c3.b55948"
+            ]
+        ]
+    },
+    {
+        "id": "898e79aa.dcca08",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Failed to delete policy from Policy Manager (PAP)' />\n",
+        "comments": "",
+        "x": 1529.1429328918457,
+        "y": 282.2857246398926,
+        "z": "3db8bf99.514be",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_policy-update-notify-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_policy-update-notify-operation.json
new file mode 100755
index 0000000..318584d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_policy-update-notify-operation.json
@@ -0,0 +1,445 @@
+[
+    {
+        "id": "2b8f0645.8e4dda",
+        "type": "comment",
+        "name": "POLICY-UPDATE-NOTIFY-OPERATION",
+        "info": "",
+        "comments": "",
+        "x": 538.3928527832031,
+        "y": 34.28571319580078,
+        "z": "c4ddb531.504de8",
+        "wires": []
+    },
+    {
+        "id": "640c5bf2.e2b254",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 110.14285278320312,
+        "y": 85.03571319580078,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "6371d353.9eabbc"
+            ]
+        ]
+    },
+    {
+        "id": "6371d353.9eabbc",
+        "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.46426391601562,
+        "y": 124.7023868560791,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "af806a5c.37c7f8"
+            ]
+        ]
+    },
+    {
+        "id": "af806a5c.37c7f8",
+        "type": "method",
+        "name": "method policy-update-notify-operation",
+        "xml": "<method rpc='policy-update-notify-operation' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 201,
+        "y": 165.0357151031494,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "59ff8d7a.32d3d4"
+            ]
+        ]
+    },
+    {
+        "id": "d17a989.54e5868",
+        "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=\"success\" />\n",
+        "comments": "",
+        "x": 325.04773712158203,
+        "y": 783.9882183074951,
+        "z": "c4ddb531.504de8",
+        "wires": []
+    },
+    {
+        "id": "3cfb5438.adb59c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 665.2977752685547,
+        "y": 443.8095178604126,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "bbad0a81.e6a3e8",
+                "dadfe54.591ea18",
+                "5210aeb1.e5ac2",
+                "7d21e501.763d7c",
+                "4ca8d575.f2c99c",
+                "5d81f8f2.13ee78",
+                "9cb05511.ecfcc8",
+                "5bf6f09a.aa2a",
+                "4c9eba0e.d56fd4"
+            ]
+        ]
+    },
+    {
+        "id": "4c9eba0e.d56fd4",
+        "type": "execute",
+        "name": "RestapiCallnode getConfig",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.pm.getpolicy.templatefile`\" />\n    <parameter name='restapiUrl' value=\"`$prop.policy-manager.url + '/pdp/api/getConfig'`\" />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name='responsePrefix' value=\"policy\" />    \n    <parameter name='customHttpHeaders'\n      value=\"`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 936.9048233032227,
+        "y": 420.7142581939697,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "371b8aa7.b584d6",
+                "eb8e6d2.61e729"
+            ]
+        ]
+    },
+    {
+        "id": "bbad0a81.e6a3e8",
+        "type": "execute",
+        "name": "readProperties",
+        "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": 904.285774230957,
+        "y": 198.57144355773926,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "371b8aa7.b584d6",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1144.0476684570312,
+        "y": 397.857141494751,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "bc023fa9.fe4ae"
+            ]
+        ]
+    },
+    {
+        "id": "bc023fa9.fe4ae",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1307.7619934082031,
+        "y": 397.785617351532,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "eb8e6d2.61e729",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1140.1852073669434,
+        "y": 445.7803544998169,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "c447c4e0.dd61f8"
+            ]
+        ]
+    },
+    {
+        "id": "c447c4e0.dd61f8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Failed to get policy from Policy Manager' />\n",
+        "comments": "",
+        "x": 1304.6190910339355,
+        "y": 445.4285640716553,
+        "z": "c4ddb531.504de8",
+        "wires": []
+    },
+    {
+        "id": "5bf6f09a.aa2a",
+        "type": "execute",
+        "name": "execute Contrail API update network policy",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='network-policy' />\n<parameter name='api-action' value='update' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='cloud-region-id' value='`$policy-splits[1]`' />\n<parameter name='update-network-policy-json' value='`$policy.config`' />",
+        "comments": "",
+        "outputs": 1,
+        "x": 973.8094635009766,
+        "y": 725.4761505126953,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "fca9fae0.1cd838",
+                "cadf6d1d.e304e"
+            ]
+        ]
+    },
+    {
+        "id": "fca9fae0.1cd838",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1226.6666412353516,
+        "y": 702.6189994812012,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "9b561741.693e18"
+            ]
+        ]
+    },
+    {
+        "id": "9b561741.693e18",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1390.3809661865234,
+        "y": 702.5474753379822,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "cadf6d1d.e304e",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1222.8041801452637,
+        "y": 750.5422124862671,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "bc7e3f77.a2464"
+            ]
+        ]
+    },
+    {
+        "id": "bc7e3f77.a2464",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Error updating Contrail: ' + $contrailResp.resp-message`\" />\n",
+        "comments": "",
+        "x": 1385.809440612793,
+        "y": 751.6189785003662,
+        "z": "c4ddb531.504de8",
+        "wires": []
+    },
+    {
+        "id": "50b08b49.336914",
+        "type": "switchNode",
+        "name": "switch update-type",
+        "xml": "<switch test='`$policy-update-notify-operation-input.update-type`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 334.99998474121094,
+        "y": 444.28569412231445,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "8100e6ab.3c2318"
+            ]
+        ]
+    },
+    {
+        "id": "59ff8d7a.32d3d4",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 123.33332824707031,
+        "y": 614.0476264953613,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "50b08b49.336914",
+                "d17a989.54e5868"
+            ]
+        ]
+    },
+    {
+        "id": "8100e6ab.3c2318",
+        "type": "outcome",
+        "name": "Update",
+        "xml": "<outcome value='Update'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 508.5714530944824,
+        "y": 443.8571300506592,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "3cfb5438.adb59c"
+            ]
+        ]
+    },
+    {
+        "id": "dadfe54.591ea18",
+        "type": "save",
+        "name": "insert to POLICY_UPDATE_NOTIFICATION",
+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.sql`\" pfx='pfx'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 992.8572158813477,
+        "y": 294.28569889068604,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5210aeb1.e5ac2",
+        "type": "set",
+        "name": "set sql statement",
+        "xml": "<set>\n<parameter name='tmp.sql' value=\"`'insert into POLICY_UPDATE_NOTIFICATION (policy_name,version_id,update_type) values ( '\n+ ' $policy-update-notify-operation-input.policy-name , $policy-update-notify-operation-input.version-id , $policy-update-notify-operation-input.update-type )'`\" />\n\n",
+        "comments": "",
+        "x": 909.9999465942383,
+        "y": 245.71427249908447,
+        "z": "c4ddb531.504de8",
+        "wires": []
+    },
+    {
+        "id": "7d21e501.763d7c",
+        "type": "set",
+        "name": "set tmp.policy-name",
+        "xml": "<set>\n<parameter name='tmp.policy-name' value='`$policy-update-notify-operation-input.policy-name`' />\n",
+        "comments": "",
+        "x": 916.6665954589844,
+        "y": 343.33336639404297,
+        "z": "c4ddb531.504de8",
+        "wires": []
+    },
+    {
+        "id": "4ca8d575.f2c99c",
+        "type": "execute",
+        "name": "convert json config to variables",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx' >\n    <parameter name='source' value=\"policy.config\" />\n    <parameter name='outputPath' value=\"tmp.config-ctx\" />\n    <parameter name='isEscaped' value='false' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 938.3333129882812,
+        "y": 520,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "215a8f00.3a1142",
+                "bf040853.679c08"
+            ]
+        ]
+    },
+    {
+        "id": "215a8f00.3a1142",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1145.4761581420898,
+        "y": 497.14288330078125,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "dc65e70.190b018"
+            ]
+        ]
+    },
+    {
+        "id": "dc65e70.190b018",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1309.1904830932617,
+        "y": 497.07135915756226,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "bf040853.679c08",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1141.613697052002,
+        "y": 545.0660963058472,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            [
+                "c3c3e9d5.9be4c8"
+            ]
+        ]
+    },
+    {
+        "id": "c3c3e9d5.9be4c8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Failed to convert config variable from PolicyManager' />\n",
+        "comments": "",
+        "x": 1306.0475807189941,
+        "y": 544.7143058776855,
+        "z": "c4ddb531.504de8",
+        "wires": []
+    },
+    {
+        "id": "5d81f8f2.13ee78",
+        "type": "set",
+        "name": "set policy-name",
+        "xml": "<set>\n<parameter name='policy-name' value='`$tmp.config-ctx.content.fq_name[2]`' />\n",
+        "comments": "",
+        "x": 888.3333282470703,
+        "y": 608.3333606719971,
+        "z": "c4ddb531.504de8",
+        "wires": []
+    },
+    {
+        "id": "9cb05511.ecfcc8",
+        "type": "execute",
+        "name": "execute split",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n    <parameter name=\"original_string\" value=\"`$policy-name`\" />\n    <parameter name=\"regex\" value=\"_\"/>\n    <parameter name=\"limit\" value=\"3\" />\n    <parameter name=\"ctx_memory_result_key\" value=\"policy-splits\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 876.9047546386719,
+        "y": 657.6190423965454,
+        "z": "c4ddb531.504de8",
+        "wires": [
+            []
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-get-policy.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-get-policy.json
new file mode 100644
index 0000000..486f0a9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-get-policy.json
@@ -0,0 +1,623 @@
+[
+    {
+        "id": "7c240df1.6781c4",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 110,
+        "y": 91.42857360839844,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "dedc83da.c4349"
+            ]
+        ]
+    },
+    {
+        "id": "dedc83da.c4349",
+        "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": 223.85713577270508,
+        "y": 131.23811149597168,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "dfb24d0c.2db3f"
+            ]
+        ]
+    },
+    {
+        "id": "dfb24d0c.2db3f",
+        "type": "method",
+        "name": "method port-mirror-get-policy",
+        "xml": "<method rpc='port-mirror-get-policy' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 172.42862701416016,
+        "y": 172.42857360839844,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "4883d77b.032d28"
+            ]
+        ]
+    },
+    {
+        "id": "684506ac.6795f8",
+        "type": "comment",
+        "name": "port-mirror-get-policy",
+        "info": "",
+        "comments": "",
+        "x": 515.3210983276367,
+        "y": 34.40427303314209,
+        "z": "aabede20.89a51",
+        "wires": []
+    },
+    {
+        "id": "4883d77b.032d28",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 153.3333511352539,
+        "y": 478.09523010253906,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "f7d9a896.cf5de8",
+                "fb8923b4.bd56c",
+                "7801d204.937cbc",
+                "8913e0a1.253a",
+                "47b76e8a.2929c",
+                "2c07a59d.60025a",
+                "aa12e112.2f8bd"
+            ]
+        ]
+    },
+    {
+        "id": "fb8923b4.bd56c",
+        "type": "execute",
+        "name": "RestapiCallnode getConfig",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.pm.getpolicy.templatefile`\" />\n    <parameter name='restapiUrl' value=\"`$prop.policy-manager.url + '/pdp/api/getConfig'`\" />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name='responsePrefix' value=\"policy\" />    \n    <parameter name='customHttpHeaders'\n      value=\"`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 446.66664123535156,
+        "y": 298.09522438049316,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "827dce65.48224",
+                "9effab4f.242cd8"
+            ]
+        ]
+    },
+    {
+        "id": "827dce65.48224",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 653.8094863891602,
+        "y": 275.2381076812744,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "fb7ccb16.ee0298"
+            ]
+        ]
+    },
+    {
+        "id": "fb7ccb16.ee0298",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 817.523811340332,
+        "y": 275.1665835380554,
+        "z": "aabede20.89a51",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9effab4f.242cd8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 649.9470252990723,
+        "y": 323.16132068634033,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "17302ca7.ec4b13"
+            ]
+        ]
+    },
+    {
+        "id": "17302ca7.ec4b13",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Failed to get policy from Policy Manager' />\n",
+        "comments": "",
+        "x": 814.3809089660645,
+        "y": 322.8095302581787,
+        "z": "aabede20.89a51",
+        "wires": []
+    },
+    {
+        "id": "7801d204.937cbc",
+        "type": "execute",
+        "name": "convert json config to variables",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx' >\n    <parameter name='source' value=\"policy.config\" />\n    <parameter name='outputPath' value=\"tmp.config-ctx\" />\n    <parameter name='isEscaped' value='false' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 453.0951156616211,
+        "y": 397.38094329833984,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "849bff9a.446d3",
+                "c6ca48ae.e5cc58"
+            ]
+        ]
+    },
+    {
+        "id": "849bff9a.446d3",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 660.2379608154297,
+        "y": 374.5238265991211,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "a0c3cf22.714c7"
+            ]
+        ]
+    },
+    {
+        "id": "a0c3cf22.714c7",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 823.9522857666016,
+        "y": 374.4523024559021,
+        "z": "aabede20.89a51",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c6ca48ae.e5cc58",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 656.3754997253418,
+        "y": 422.447039604187,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "e9ddad6b.d165b"
+            ]
+        ]
+    },
+    {
+        "id": "e9ddad6b.d165b",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Failed to convert config variable from PolicyManager' />\n",
+        "comments": "",
+        "x": 820.809383392334,
+        "y": 422.0952491760254,
+        "z": "aabede20.89a51",
+        "wires": []
+    },
+    {
+        "id": "f7d9a896.cf5de8",
+        "type": "set",
+        "name": "set tmp.policy-name",
+        "xml": "<set>\n<parameter name='tmp.policy-name' value='`$db.cap[0].policy-name`' />\n",
+        "comments": "",
+        "x": 426.66667429606105,
+        "y": 223.09524281819654,
+        "z": "aabede20.89a51",
+        "wires": []
+    },
+    {
+        "id": "f823c40b.99b648",
+        "type": "set",
+        "name": "set tmp.dest-p-interface from productionContext",
+        "xml": "<set>\n<parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.productionContext`' />\n",
+        "comments": "",
+        "x": 1268.750015258789,
+        "y": 578.4285373687744,
+        "z": "aabede20.89a51",
+        "wires": []
+    },
+    {
+        "id": "2c07a59d.60025a",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n",
+        "comments": "",
+        "x": 407.5000991821289,
+        "y": 850.1786298751831,
+        "z": "aabede20.89a51",
+        "wires": []
+    },
+    {
+        "id": "8913e0a1.253a",
+        "type": "switchNode",
+        "name": "switch lc-tenant-context",
+        "xml": "<switch test='`$tmp.lc-tenant-context`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 434.166690826416,
+        "y": 574.7618494033813,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "883f5bc7.851688",
+                "89d18dfc.fe3f9"
+            ]
+        ]
+    },
+    {
+        "id": "c7d91e4f.cd2b2",
+        "type": "set",
+        "name": "set tmp.dest-p-interface from testContext",
+        "xml": "<set>\n<parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.testContext`' />\n",
+        "comments": "",
+        "x": 1605.833396911621,
+        "y": 622.4285373687744,
+        "z": "aabede20.89a51",
+        "wires": []
+    },
+    {
+        "id": "6f1dcecb.0bf3e",
+        "type": "set",
+        "name": "set tmp.dest-p-interface from developmentContext",
+        "xml": "<set>\n<parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.developmentContext`' />\n",
+        "comments": "",
+        "x": 1999.1666564941406,
+        "y": 663.9285373687744,
+        "z": "aabede20.89a51",
+        "wires": []
+    },
+    {
+        "id": "d0335872.4a8e58",
+        "type": "set",
+        "name": "set tmp.dest-p-interface",
+        "xml": "<set>\n<parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.defaultContext`' />\n",
+        "comments": "",
+        "x": 2283.333282470703,
+        "y": 703.9286003112793,
+        "z": "aabede20.89a51",
+        "wires": []
+    },
+    {
+        "id": "e3391f9f.5f004",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Unexpected tenant-context value of ' + $tmp.tenant-context`\" />\n",
+        "comments": "",
+        "x": 2252.0834007263184,
+        "y": 768.9285402297974,
+        "z": "aabede20.89a51",
+        "wires": []
+    },
+    {
+        "id": "47b76e8a.2929c",
+        "type": "switchNode",
+        "name": "switch tmp.dest-p-interface",
+        "xml": "<switch test='`$tmp.dest-p-interface`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 447.50000762939453,
+        "y": 791.8453493118286,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "fe95b2b0.257d8"
+            ]
+        ]
+    },
+    {
+        "id": "fe95b2b0.257d8",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 647.5000228881836,
+        "y": 791.8452577590942,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "a6b2a82a.01ec88"
+            ]
+        ]
+    },
+    {
+        "id": "a6b2a82a.01ec88",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Unable to find p-interface in policy ' + tmp.policy-name`\" />\n",
+        "comments": "",
+        "x": 807.4999542236328,
+        "y": 791.8452672958374,
+        "z": "aabede20.89a51",
+        "wires": []
+    },
+    {
+        "id": "883f5bc7.851688",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 638.7500076293945,
+        "y": 533.9286003112793,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "5b6d06f7.787ce8"
+            ]
+        ]
+    },
+    {
+        "id": "5b6d06f7.787ce8",
+        "type": "set",
+        "name": "set tmp.dest-p-interface from defaultContext",
+        "xml": "<set>\n<parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.defaultContext`' />\n",
+        "comments": "",
+        "x": 881.25,
+        "y": 533.9285869598389,
+        "z": "aabede20.89a51",
+        "wires": []
+    },
+    {
+        "id": "aa12e112.2f8bd",
+        "type": "execute",
+        "name": "convert tenant-context to lower case",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"toLower\">\n\t<parameter name=\"source\" value=\"`$tmp.tenant-context`\" />\n\t<parameter name=\"outputPath\" value=\"tmp.lc-tenant-context\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 470.00000762939453,
+        "y": 475.00000762939453,
+        "z": "aabede20.89a51",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "89d18dfc.fe3f9",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 640.0000076293945,
+        "y": 617.5000095367432,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "d320e4c3.2e4e58"
+            ]
+        ]
+    },
+    {
+        "id": "d320e4c3.2e4e58",
+        "type": "execute",
+        "name": "lc-tenant-contains 'prod'",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"contains\" emitsOutcome='true'>\n\t<parameter name=\"source\" value=\"`$tmp.lc-tenant-context`\" />\n\t<parameter name=\"target\" value=\"prod\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 818.75,
+        "y": 617.5,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "92d9b5db.979da8",
+                "a5418501.6535b8"
+            ]
+        ]
+    },
+    {
+        "id": "92d9b5db.979da8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1012.5,
+        "y": 578.75,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "f823c40b.99b648"
+            ]
+        ]
+    },
+    {
+        "id": "a5418501.6535b8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1012.5000152587891,
+        "y": 657.5000095367432,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "21ec97e6.1cc748"
+            ]
+        ]
+    },
+    {
+        "id": "21ec97e6.1cc748",
+        "type": "execute",
+        "name": "lc-tenant-contains 'test'",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"contains\" emitsOutcome='true'>\n\t<parameter name=\"source\" value=\"`$tmp.lc-tenant-context`\" />\n\t<parameter name=\"target\" value=\"test\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1192.750015258789,
+        "y": 657.5000095367432,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "b12ce223.87118",
+                "17e1a4f2.79a74b"
+            ]
+        ]
+    },
+    {
+        "id": "b12ce223.87118",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1373.75,
+        "y": 622.5,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "c7d91e4f.cd2b2"
+            ]
+        ]
+    },
+    {
+        "id": "17e1a4f2.79a74b",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1375.0000190734863,
+        "y": 701.2500095367432,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "db100bb2.6b8818"
+            ]
+        ]
+    },
+    {
+        "id": "db100bb2.6b8818",
+        "type": "execute",
+        "name": "lc-tenant-contains 'dev'",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"contains\" emitsOutcome='true'>\n\t<parameter name=\"source\" value=\"`$tmp.lc-tenant-context`\" />\n\t<parameter name=\"target\" value=\"dev\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1550.666618347168,
+        "y": 701.3214712142944,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "6c48c803.9e2048",
+                "b666f52e.6438e8"
+            ]
+        ]
+    },
+    {
+        "id": "6c48c803.9e2048",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1731.666603088379,
+        "y": 665.0714626312256,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "6f1dcecb.0bf3e"
+            ]
+        ]
+    },
+    {
+        "id": "b666f52e.6438e8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1732.9166526794434,
+        "y": 740.0714836120605,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "b7ae12df.bfc5b"
+            ]
+        ]
+    },
+    {
+        "id": "b7ae12df.bfc5b",
+        "type": "execute",
+        "name": "lc-tenant-contains 'default'",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"contains\" emitsOutcome='true'>\n\t<parameter name=\"source\" value=\"`$tmp.lc-tenant-context`\" />\n\t<parameter name=\"target\" value=\"default\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1915,
+        "y": 737.5,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "d449adab.fe626",
+                "e9137b95.e207f8"
+            ]
+        ]
+    },
+    {
+        "id": "d449adab.fe626",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2104.7499809265137,
+        "y": 706.2499914169312,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "d0335872.4a8e58"
+            ]
+        ]
+    },
+    {
+        "id": "e9137b95.e207f8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2103.4999961853027,
+        "y": 771.2500009536743,
+        "z": "aabede20.89a51",
+        "wires": [
+            [
+                "e3391f9f.5f004"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-rollback-capacity-db.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-rollback-capacity-db.json
new file mode 100644
index 0000000..bccbc55
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-rollback-capacity-db.json
@@ -0,0 +1,279 @@
+[
+    {
+        "id": "3b7d475e.717be8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 102.85714721679688,
+        "y": 92.85714721679688,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            [
+                "d74e703a.20613"
+            ]
+        ]
+    },
+    {
+        "id": "d74e703a.20613",
+        "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": 216.71428298950195,
+        "y": 132.66668510437012,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            [
+                "cb52845f.272378"
+            ]
+        ]
+    },
+    {
+        "id": "cb52845f.272378",
+        "type": "method",
+        "name": "method port-mirror-rollback-capacity-db",
+        "xml": "<method rpc='port-mirror-rollback-capacity-db' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 196.28577423095703,
+        "y": 173.85714721679688,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            [
+                "f6902b28.e39428"
+            ]
+        ]
+    },
+    {
+        "id": "4ca6c070.6907e",
+        "type": "comment",
+        "name": "port-mirror-rollback-capacity-db",
+        "info": "",
+        "comments": "",
+        "x": 508.1782455444336,
+        "y": 35.83284664154053,
+        "z": "41e68dff.7b4254",
+        "wires": []
+    },
+    {
+        "id": "f6902b28.e39428",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 203.9523696899414,
+        "y": 338.4761772155762,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            [
+                "923db1f2.d4148",
+                "3ee9cda9.644ed2",
+                "19e81c3c.942fa4"
+            ]
+        ]
+    },
+    {
+        "id": "9f4506c7.640918",
+        "type": "update",
+        "name": "update VNICS_CAPACITY",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\nkey=\"update VNICS_CAPACITY\n     set available_capacity = $tmp.avail-capacity\n     where vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id\n     and vnic_port_name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name\n\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1524.6665267944336,
+        "y": 286.3333053588867,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f24a7712.96c968",
+        "type": "get-resource",
+        "name": "get-resource VNICS_CAPACITY",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='select available_capacity\n    from VNICS_CAPACITY\n    where vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id\n    and vnic_port_name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name'\n  pfx='db.vnics-capacity'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 909.6664810180664,
+        "y": 263.000093460083,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            [
+                "b048d9ab.c070f8"
+            ]
+        ]
+    },
+    {
+        "id": "cf81b663.384118",
+        "type": "set",
+        "name": "add source capacity back",
+        "xml": "<set>\n<parameter name='tmp.avail-capacity' value='`$db.vnics-capacity.available-capacity + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-capacity`' />\n",
+        "comments": "",
+        "x": 1522.9998588562012,
+        "y": 234.6667184829712,
+        "z": "41e68dff.7b4254",
+        "wires": []
+    },
+    {
+        "id": "b048d9ab.c070f8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1157.999885559082,
+        "y": 261.333345413208,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            [
+                "cd281a51.6ede38"
+            ]
+        ]
+    },
+    {
+        "id": "cd281a51.6ede38",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1318.0000457763672,
+        "y": 261.333327293396,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            [
+                "cf81b663.384118",
+                "9f4506c7.640918"
+            ]
+        ]
+    },
+    {
+        "id": "923db1f2.d4148",
+        "type": "delete",
+        "name": "delete VNICS_CONFIGURATION_ID record",
+        "xml": "<delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='delete from VNICS_CONFIGURATION_ID\n  \twhere configuration_id = $tmp.configuration-id\n    and vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 482.9999694824219,
+        "y": 341.33331298828125,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3ee9cda9.644ed2",
+        "type": "get-resource",
+        "name": "get-resource VNICS_CONFIGURATION_ID for vnics-group-id",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='select configuration_id\n    from VNICS_CONFIGURATION_ID\n    where vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id'\n  pfx='db.vnics-confid'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 540.666618347168,
+        "y": 427.9999084472656,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            [
+                "374e0adc.26a606"
+            ]
+        ]
+    },
+    {
+        "id": "374e0adc.26a606",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 855.6666030883789,
+        "y": 426.33338356018066,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            [
+                "8af09ab.de69f68"
+            ]
+        ]
+    },
+    {
+        "id": "35222c7a.050654",
+        "type": "delete",
+        "name": "delete VNICS_CAPACITY records",
+        "xml": "<delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='delete from VNICS_CAPACITY\n  \twhere vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1222.3333854675293,
+        "y": 392.99996757507324,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8af09ab.de69f68",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1000.6665878295898,
+        "y": 424.6666736602783,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            [
+                "35222c7a.050654",
+                "338f14c9.07a05c"
+            ]
+        ]
+    },
+    {
+        "id": "338f14c9.07a05c",
+        "type": "delete",
+        "name": "delete VNICS_CAPACITY_GROUP record",
+        "xml": "<delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='delete from VNICS_CAPACITY_GROUP\n  \twhere vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1247.3332633972168,
+        "y": 452.9999294281006,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "19e81c3c.942fa4",
+        "type": "for",
+        "name": "for each mapped source port",
+        "xml": "<for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 437.3333053588867,
+        "y": 263.6666564941406,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            [
+                "547c6970.9036e8"
+            ]
+        ]
+    },
+    {
+        "id": "547c6970.9036e8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 660.666633605957,
+        "y": 263.33308029174805,
+        "z": "41e68dff.7b4254",
+        "wires": [
+            [
+                "f24a7712.96c968"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-async.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-async.json
new file mode 100644
index 0000000..350234d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-async.json
@@ -0,0 +1,1487 @@
+[
+    {
+        "id": "5b66f619.481ca8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 102.5,
+        "y": 87.41365623474121,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "9093334f.03cc8"
+            ]
+        ]
+    },
+    {
+        "id": "9093334f.03cc8",
+        "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": 216.11902618408203,
+        "y": 127.65176963806152,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "46eaf795.4ef9e8"
+            ]
+        ]
+    },
+    {
+        "id": "46eaf795.4ef9e8",
+        "type": "method",
+        "name": "method port-mirror-topology-operation-activate-async",
+        "xml": "<method rpc='port-mirror-topology-operation-activate-async' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 237.78578186035156,
+        "y": 168.84222412109375,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "4baa79f1.773a78"
+            ]
+        ]
+    },
+    {
+        "id": "5ade5695.4e98b8",
+        "type": "comment",
+        "name": "port-mirror-topology-operation-activate-async",
+        "info": "",
+        "comments": "",
+        "x": 496.84485626220703,
+        "y": 35,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "9dfceaea.eb6098",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n<parameter name='error-code' value='200' />\n",
+        "comments": "",
+        "x": 426.19053649902344,
+        "y": 1876.2829875946045,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "4baa79f1.773a78",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 130.11906051635742,
+        "y": 919.7945442199707,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "9dfceaea.eb6098",
+                "9d7c2f24.883c3",
+                "c318a2df.7e96a",
+                "20309f96.3358a",
+                "1c40385c.325dd8",
+                "cf922003.19ed6",
+                "42b72587.aeabfc",
+                "cc56f026.30c05",
+                "2720d8dd.1d2888",
+                "1a03c81f.4db2c8",
+                "2301271e.b9e618",
+                "76f4edeb.848074",
+                "4a2861ff.8c4dd",
+                "66b97c5c.100cc4"
+            ]
+        ]
+    },
+    {
+        "id": "9d7c2f24.883c3",
+        "type": "set",
+        "name": "set tmp variables",
+        "xml": "<set>\n<parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />\n\n\n",
+        "comments": "",
+        "x": 438.4523506164551,
+        "y": 258.12796211242676,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "c318a2df.7e96a",
+        "type": "set",
+        "name": "set port-mirror-configuration data from input",
+        "xml": "<set>\n<parameter name='pm.configuration-data.configuration-operation-information.sdnc-request-header.'\n  value='`$port-mirror-topology-operation-input.sdnc-request-header.`' />\n",
+        "comments": "",
+        "x": 517.2619323730469,
+        "y": 593.3659725189209,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "1a03c81f.4db2c8",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT port-mirror-configuration",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.portmirrorconfig.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-pmc\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 559.9405288696289,
+        "y": 1737.2946586608887,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "20d19532.83d93a",
+                "46b3d868.4e0598",
+                "c179bec7.58ec"
+            ]
+        ]
+    },
+    {
+        "id": "20309f96.3358a",
+        "type": "execute",
+        "name": "execute readProperties",
+        "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": 457.7381057739258,
+        "y": 306.2231864929199,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1c40385c.325dd8",
+        "type": "execute",
+        "name": "generate port-mirror-configuration url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.pm-configuration`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.pmc-url\"/>\n    <parameter name=\"target\" value=\"{configuration-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.configuration-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 499.40484619140625,
+        "y": 354.37803649902344,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "669414b9.13962c",
+        "type": "comment",
+        "name": "rpc-port-mirror 1070",
+        "info": "",
+        "comments": "",
+        "x": 427.0238342285156,
+        "y": 690.508918762207,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "518cb61a.5d7d28",
+        "type": "comment",
+        "name": "step 4 - for each source port:",
+        "info": "",
+        "comments": "",
+        "x": 477.0238800048828,
+        "y": 845.2708034515381,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "36ffd2a4.3fef6e",
+        "type": "comment",
+        "name": "1. turn on packet mirroring in contrail (see input parameters spreadsheet)",
+        "info": "",
+        "comments": "",
+        "x": 822.7381591796875,
+        "y": 938.127875328064,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "3743c99d.19d286",
+        "type": "comment",
+        "name": "2. set is-port-mirrored in A&AI (aai-port-mirror-1040) ",
+        "info": "",
+        "comments": "",
+        "x": 625.8334121704102,
+        "y": 1294.0804176330566,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "84422f16.c64f1",
+        "type": "comment",
+        "name": "step 5 - update configuration object (aai-port-mirror-1070)",
+        "info": "",
+        "comments": "",
+        "x": 560.3573226928711,
+        "y": 1421.4613437652588,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "1e115862.718808",
+        "type": "comment",
+        "name": "step 6 - update oper status",
+        "info": "",
+        "comments": "",
+        "x": 554.642936706543,
+        "y": 1591.4613199234009,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "cf922003.19ed6",
+        "type": "set",
+        "name": "set oper-status",
+        "xml": "<set>\n<parameter name='pm.configuration-data.configuration-oper-status.order-status'\n  value='Active' />\n<parameter name='pm.configuration-data.configuration-oper-status.last-action'\n  value='`$port-mirror-topology-operation-input.request-information.request-action`' />\n<parameter name='pm.configuration-data.configuration-oper-status.last-rpc-action'\n  value='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`' />\n",
+        "comments": "",
+        "x": 431.07147216796875,
+        "y": 1635.747018814087,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "b5f3f5f0.9a29c8",
+        "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-message'`\" />\n",
+        "comments": "",
+        "x": 1636.3096771240234,
+        "y": 2031.9372997283936,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "a94cb68e.ce8ec8",
+        "type": "configure",
+        "name": "send error to MSO",
+        "xml": "<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\" value=\"`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\" value=\"Y\" />\n<parameter name=\"input.response-code\" value=\"500\" />\n<parameter name=\"input.response-message\" value=\"`$error-message`\" />\n<parameter name=\"input.svc-request-id\" value=\"`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\" value=\"`$port-mirror-topology-operation-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\" value=\"`$port-mirror-topology-operation-input.service-information.service-instance-id`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1654.001766204834,
+        "y": 1985.4032258987427,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "cb2b8a7c.9946e8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1446.3096771240234,
+        "y": 2004.7944774627686,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "a94cb68e.ce8ec8",
+                "b5f3f5f0.9a29c8"
+            ]
+        ]
+    },
+    {
+        "id": "c179bec7.58ec",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 867.2618789672852,
+        "y": 1776.6993389129639,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "46404dc.0055ab4"
+            ]
+        ]
+    },
+    {
+        "id": "46b3d868.4e0598",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 859.6905136108398,
+        "y": 1735.1993589401245,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "46404dc.0055ab4"
+            ]
+        ]
+    },
+    {
+        "id": "20d19532.83d93a",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 863.4405059814453,
+        "y": 1695.556456565857,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "43655533.51c43c"
+            ]
+        ]
+    },
+    {
+        "id": "43655533.51c43c",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1000.8107757568359,
+        "y": 1694.6057996749878,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "52a144a4.16f3bc",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error updating md-sal for port-mirror-configuration\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1226.6801223754883,
+        "y": 1743.2721109390259,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "46404dc.0055ab4",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1022.6800231933594,
+        "y": 1749.2721853256226,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "52a144a4.16f3bc",
+                "17d97b45.54b115"
+            ]
+        ]
+    },
+    {
+        "id": "2301271e.b9e618",
+        "type": "execute",
+        "name": "execute RestApiCallNode - get port-mirror-configuration",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"pm-mdsal\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 552.5,
+        "y": 442.17554473876953,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "87629ab5.d3e158",
+                "b1aab94e.c85a18",
+                "62a4327.1f6e7cc"
+            ]
+        ]
+    },
+    {
+        "id": "87629ab5.d3e158",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 857.7959594726562,
+        "y": 398.4595613479614,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "25dfdff8.aaf1a"
+            ]
+        ]
+    },
+    {
+        "id": "b1aab94e.c85a18",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 853.9285430908203,
+        "y": 440.5088119506836,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "907e66e7.8ae6a8"
+            ]
+        ]
+    },
+    {
+        "id": "25dfdff8.aaf1a",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1009.6427993774414,
+        "y": 398.8420944213867,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "62a4327.1f6e7cc",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 860.8333129882812,
+        "y": 483.8422203063965,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "83c77205.8a342"
+            ]
+        ]
+    },
+    {
+        "id": "907e66e7.8ae6a8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1032.5,
+        "y": 440.5088863372803,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "af67f274.d2307",
+                "cb2b8a7c.9946e8"
+            ]
+        ]
+    },
+    {
+        "id": "83c77205.8a342",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1030.833251953125,
+        "y": 482.1755428314209,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "36634427.23548c",
+                "cb2b8a7c.9946e8"
+            ]
+        ]
+    },
+    {
+        "id": "af67f274.d2307",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Failed to read port-mirror-configuration from MD-SAL\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1237.5,
+        "y": 438.8421993255615,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "36634427.23548c",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Cannot find port-mirror-configuration in MD-SAL\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1234.1666259765625,
+        "y": 483.8421993255615,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "42b72587.aeabfc",
+        "type": "set",
+        "name": "set pm",
+        "xml": "<set>\n<parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />\n<parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />\n",
+        "comments": "",
+        "x": 404.16667556762695,
+        "y": 545.5088768005371,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "5f135d1f.6da3d4",
+        "type": "comment",
+        "name": "step 3 - call DG to apply route policy",
+        "info": "",
+        "comments": "",
+        "x": 497.50000762939453,
+        "y": 737.1755886077881,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "33f08c48.ac39c4",
+        "type": "call",
+        "name": "call api-contrail-route-topology-operation-activate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-activate' mode='sync' >\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1112.0236740112305,
+        "y": 802.8891315460205,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "409f455d.7e97cc"
+            ]
+        ]
+    },
+    {
+        "id": "409f455d.7e97cc",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1403.2142181396484,
+        "y": 801.4604616165161,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "cb2b8a7c.9946e8"
+            ]
+        ]
+    },
+    {
+        "id": "1f339ae1.7e9945",
+        "type": "set",
+        "name": "set parameters",
+        "xml": "<set>\n<parameter name='cto-api.default-domain' value='default-domain' />\n<parameter name='cto-api.default-project'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />\n<parameter name='cto-api.cloud-region-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />\n<parameter name='cto-api.contrail-route-allotted-resource-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.route-allotted-resource-id`' />\n<parameter name='cto-api.src-contrail-network-fqdn'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-network-fqdn`' />\n<parameter name='cto-api.collector-contrail-network-fqdn'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />\n<parameter name='cto-api.owning-entity'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.owning-entity`' />\n",
+        "comments": "",
+        "x": 1007.0236892700195,
+        "y": 759.555980682373,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "cc56f026.30c05",
+        "type": "for",
+        "name": "for each mapped source port",
+        "xml": "<for silentFailure='true' index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 466.0712890625,
+        "y": 893.1271686553955,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "d2de6b9.c85cf98"
+            ]
+        ]
+    },
+    {
+        "id": "d2de6b9.c85cf98",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 454.1664810180664,
+        "y": 1166.221978187561,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "156f04a3.ab4e6b",
+                "8c26df81.34a5a",
+                "f887cdd.0a0d33"
+            ]
+        ]
+    },
+    {
+        "id": "2c2fabce.b42c34",
+        "type": "execute",
+        "name": "execute ContrailAdaptor to enable port mirroring",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='port-mirroring' />\n<parameter name='api-action' value='enable' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='display-name'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />\n<parameter name='contrail-virtual-machine-interface-name'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />\n<parameter name='contrail-virtual-machine-interface-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />\n<parameter name='default-domain' value='default-domain' />\n<parameter name='default-project'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />\n<parameter name='traffic-direction' value='both' />\n<parameter name='analyzer-ip-address'\n  value='`$tmp.analyzer.ip-address`' />\n<parameter name='udp-port' value='8099' />\n<parameter name='routing-instance'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />\n<parameter name='local-preference' value='1' />\n<parameter name='cloud-region-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />\n<parameter name='cloud-owner'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1174.6428909301758,
+        "y": 1194.5563316345215,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "8e6a90d8.54e6d",
+                "9bb8036f.2b542"
+            ]
+        ]
+    },
+    {
+        "id": "8e6a90d8.54e6d",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1463.9284362792969,
+        "y": 1245.2707290649414,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "ecf4f173.580a"
+            ]
+        ]
+    },
+    {
+        "id": "b9f3fac3.bb5568",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"`'Failed to update policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1796.7857818603516,
+        "y": 1245.270746231079,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ecf4f173.580a",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1609.6427917480469,
+        "y": 1245.2707290649414,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "b9f3fac3.bb5568",
+                "cb2b8a7c.9946e8"
+            ]
+        ]
+    },
+    {
+        "id": "156f04a3.ab4e6b",
+        "type": "switchNode",
+        "name": "switch ipv4-address",
+        "xml": "<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 685.1190872192383,
+        "y": 982.4136581420898,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "9ca91e45.69dae",
+                "d44612d6.5899b"
+            ]
+        ]
+    },
+    {
+        "id": "d44612d6.5899b",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 850.8332824707031,
+        "y": 1023.8422298431396,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "c8d71660.7cd7f8"
+            ]
+        ]
+    },
+    {
+        "id": "9ca91e45.69dae",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 853.6904296875,
+        "y": 980.9851217269897,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "166a986c.b15718"
+            ]
+        ]
+    },
+    {
+        "id": "166a986c.b15718",
+        "type": "set",
+        "name": "set tmp.analyzer.ip-address",
+        "xml": "<set>\n<parameter name='tmp.analyzer.ip-address'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`' />\n",
+        "comments": "",
+        "x": 1045.1191177368164,
+        "y": 979.5565509796143,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "c8d71660.7cd7f8",
+        "type": "switchNode",
+        "name": "switch ipv6-address",
+        "xml": "<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1022.2619476318359,
+        "y": 1023.8421955108643,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "2e56fc40.6f6d44",
+                "d6835a48.98f2c8"
+            ]
+        ]
+    },
+    {
+        "id": "d6835a48.98f2c8",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1183.6905364990234,
+        "y": 1066.6993732452393,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "672a9034.4db54"
+            ]
+        ]
+    },
+    {
+        "id": "2e56fc40.6f6d44",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1186.5476837158203,
+        "y": 1023.8422651290894,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "934fa49b.ab4b48"
+            ]
+        ]
+    },
+    {
+        "id": "934fa49b.ab4b48",
+        "type": "set",
+        "name": "set tmp.analyzer.ip-address",
+        "xml": "<set>\n<parameter name='tmp.analyzer.ip-address'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`' />\n",
+        "comments": "",
+        "x": 1377.9763717651367,
+        "y": 1022.4136943817139,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "672a9034.4db54",
+        "type": "switchNode",
+        "name": "switch vipv4-address",
+        "xml": "<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1355.1192016601562,
+        "y": 1066.6993389129639,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "71ee4607.c8dec8",
+                "d7e38600.c720f8"
+            ]
+        ]
+    },
+    {
+        "id": "d7e38600.c720f8",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1517.9761810302734,
+        "y": 1106.6993732452393,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "5d222c5f.7e8574"
+            ]
+        ]
+    },
+    {
+        "id": "71ee4607.c8dec8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1519.40474319458,
+        "y": 1065.2709398269653,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "5973e388.4447dc"
+            ]
+        ]
+    },
+    {
+        "id": "5973e388.4447dc",
+        "type": "set",
+        "name": "set tmp.analyzer.ip-address",
+        "xml": "<set>\n<parameter name='tmp.analyzer.ip-address'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`' />\n",
+        "comments": "",
+        "x": 1712.2620162963867,
+        "y": 1062.4136943817139,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "5d222c5f.7e8574",
+        "type": "switchNode",
+        "name": "switch vipv6-address",
+        "xml": "<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1689.4048461914062,
+        "y": 1106.6993389129639,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "37537bc8.5de5c4",
+                "141ebb8.809aa45"
+            ]
+        ]
+    },
+    {
+        "id": "141ebb8.809aa45",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1859.8810005187988,
+        "y": 1149.7947750091553,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "ff1880e.8c26e8"
+            ]
+        ]
+    },
+    {
+        "id": "37537bc8.5de5c4",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1857.976276397705,
+        "y": 1106.6995286941528,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "2b3161dd.2d635e"
+            ]
+        ]
+    },
+    {
+        "id": "2b3161dd.2d635e",
+        "type": "set",
+        "name": "set tmp.analyzer.ip-address",
+        "xml": "<set>\n<parameter name='tmp.analyzer.ip-address'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`' />\n",
+        "comments": "",
+        "x": 2050.8335494995117,
+        "y": 1103.8422832489014,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "c1b0625d.b0c22",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"`'No dest addresses stored for source port ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2193.6905364990234,
+        "y": 1148.1279621124268,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ff1880e.8c26e8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2006.5475463867188,
+        "y": 1148.127944946289,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "c1b0625d.b0c22",
+                "17d97b45.54b115"
+            ]
+        ]
+    },
+    {
+        "id": "8c26df81.34a5a",
+        "type": "save",
+        "name": "update l-interface object",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"l-interface\"\n   key=\"cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id\n     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner\n     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id\n     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id\n     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"is-port-mirrored\" value=\"true\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 688.9286422729492,
+        "y": 1335.50901222229,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "2ac43ee8.92b012",
+                "423c6134.c60e6",
+                "e4b0b593.a44888"
+            ]
+        ]
+    },
+    {
+        "id": "2ac43ee8.92b012",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 909.9525451660156,
+        "y": 1336.2710342407227,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "642dae65.a043d"
+            ]
+        ]
+    },
+    {
+        "id": "423c6134.c60e6",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 918.5239944458008,
+        "y": 1291.2712287902832,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "642dae65.a043d"
+            ]
+        ]
+    },
+    {
+        "id": "642dae65.a043d",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1087.976173400879,
+        "y": 1311.6993608474731,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "a5024b1c.62a428",
+                "17d97b45.54b115"
+            ]
+        ]
+    },
+    {
+        "id": "a5024b1c.62a428",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1284.642707824707,
+        "y": 1310.0325956344604,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2720d8dd.1d2888",
+        "type": "save",
+        "name": "update configuration object",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"configuration\"\n   key=\"configuration.configuration-id = $tmp.configuration-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"operational-status\" value=\"in-service-path\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 468.4524154663086,
+        "y": 1491.4614448547363,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "4a933093.ed2b5",
+                "baf9eee7.66408"
+            ]
+        ]
+    },
+    {
+        "id": "4a933093.ed2b5",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 672.8097343444824,
+        "y": 1515.0807542800903,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "d1df8438.f8a798"
+            ]
+        ]
+    },
+    {
+        "id": "baf9eee7.66408",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 681.3811492919922,
+        "y": 1464.3665571212769,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "a3982d20.86c2c"
+            ]
+        ]
+    },
+    {
+        "id": "d1df8438.f8a798",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 855.1190795898438,
+        "y": 1516.4610977172852,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "f7fc2fc5.e0c0e",
+                "17d97b45.54b115"
+            ]
+        ]
+    },
+    {
+        "id": "a3982d20.86c2c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 855.1190567016602,
+        "y": 1464.7947645187378,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "f1da12be.e4fe3",
+                "17d97b45.54b115"
+            ]
+        ]
+    },
+    {
+        "id": "f7fc2fc5.e0c0e",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Failure updating configuration object in AAI\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1041.7857055664062,
+        "y": 1516.4610977172852,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f1da12be.e4fe3",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Unable to find configuration object in AAI\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1051.7856674194336,
+        "y": 1463.1280298233032,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9bb8036f.2b542",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1466.7856521606445,
+        "y": 1193.1278247833252,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "b6bccbf6.e923e8"
+            ]
+        ]
+    },
+    {
+        "id": "b6bccbf6.e923e8",
+        "type": "set",
+        "name": "set contrail-set[]",
+        "xml": "<set>\n<parameter name='contrail-set[$src-idx]' value='true' />\n",
+        "comments": "",
+        "x": 1622.4998588562012,
+        "y": 1191.6993570327759,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "e4b0b593.a44888",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 914.1666717529297,
+        "y": 1378.3661165237427,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "9d1cdd1b.d4fd9"
+            ]
+        ]
+    },
+    {
+        "id": "9d1cdd1b.d4fd9",
+        "type": "set",
+        "name": "set l-interface-set[]",
+        "xml": "<set>\n<parameter name='l-interface-set[$src-idx]' value='true' />\n",
+        "comments": "",
+        "x": 1077.0237274169922,
+        "y": 1379.7948369979858,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "44a2f705.4029d8",
+        "type": "for",
+        "name": "for each mapped source port",
+        "xml": "<for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1694.1667556762695,
+        "y": 1875.746953010559,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "2ef18cf0.f0c604"
+            ]
+        ]
+    },
+    {
+        "id": "2ef18cf0.f0c604",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1927.0239334106445,
+        "y": 1874.318242073059,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "6fb5c952.c67498",
+                "f71edbf2.13f818"
+            ]
+        ]
+    },
+    {
+        "id": "f71edbf2.13f818",
+        "type": "switchNode",
+        "name": "switch contrail-set[] == 'true'",
+        "xml": "<switch test=\"`$contrail-set[$src-idx] == 'true'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2154.166961669922,
+        "y": 1831.4612035751343,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "2e40dd2d.cbff82"
+            ]
+        ]
+    },
+    {
+        "id": "6fb5c952.c67498",
+        "type": "switchNode",
+        "name": "switch l-interface-set[] == 'true'",
+        "xml": "<switch test=\"`$l-interface-set[$src-idx] == 'true'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2155.5954666137695,
+        "y": 1904.318242073059,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "d5a055d6.de8358"
+            ]
+        ]
+    },
+    {
+        "id": "17d97b45.54b115",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1461.309700012207,
+        "y": 1878.604130744934,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "cb2b8a7c.9946e8",
+                "44a2f705.4029d8"
+            ]
+        ]
+    },
+    {
+        "id": "89fa86c4.b77bd8",
+        "type": "execute",
+        "name": "execute ContrailAdaptor to disable port mirroring",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='port-mirroring' />\n<parameter name='api-action' value='disable' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='display-name'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />\n<parameter name='default-domain' value='default-domain' />\n<parameter name='default-project'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />\n<parameter name='cloud-region-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />\n<parameter name='cloud-owner'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2612.500228881836,
+        "y": 1830.1275453567505,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7096d601.0c9028",
+        "type": "save",
+        "name": "update l-interface object",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"l-interface\"\n   key=\"cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id\n     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner\n     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id\n     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id\n     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"is-port-mirrored\" value=\"false\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2533.6907081604004,
+        "y": 1903.556529045105,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2e40dd2d.cbff82",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2349.1668586730957,
+        "y": 1830.5089178085327,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "89fa86c4.b77bd8"
+            ]
+        ]
+    },
+    {
+        "id": "d5a055d6.de8358",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2350.8332595825195,
+        "y": 1903.841923713684,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "7096d601.0c9028"
+            ]
+        ]
+    },
+    {
+        "id": "76f4edeb.848074",
+        "type": "configure",
+        "name": "send success to MSO",
+        "xml": "<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\" value=\"`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\" value=\"Y\" />\n<parameter name=\"input.response-code\" value=\"200\" />\n<parameter name=\"input.svc-request-id\" value=\"`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\" value=\"`$port-mirror-topology-operation-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\" value=\"`$port-mirror-topology-operation-input.service-information.service-instance-id`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 449.16666412353516,
+        "y": 1825.5088558197021,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "66b97c5c.100cc4",
+        "type": "switchNode",
+        "name": "switch configuration-sub-type",
+        "xml": "<switch test='`$tmp.configuration-sub-type`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 472.49999237060547,
+        "y": 781.6666774749756,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "80efab22.bce288"
+            ]
+        ]
+    },
+    {
+        "id": "80efab22.bce288",
+        "type": "outcome",
+        "name": "vprobe",
+        "xml": "<outcome value='vprobe'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 670.4999923706055,
+        "y": 781.6666774749756,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "c8f11099.9fc8f"
+            ]
+        ]
+    },
+    {
+        "id": "c8f11099.9fc8f",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 829.166618347168,
+        "y": 781.6667079925537,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "1f339ae1.7e9945",
+                "33f08c48.ac39c4"
+            ]
+        ]
+    },
+    {
+        "id": "4a2861ff.8c4dd",
+        "type": "set",
+        "name": "set tmp.configuration-sub-type",
+        "xml": "<set>\n<parameter name='tmp.configuration-sub-type' value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type`' />\n",
+        "comments": "",
+        "x": 475.83333587646484,
+        "y": 643.3333606719971,
+        "z": "a7f7f582.4f3378",
+        "wires": []
+    },
+    {
+        "id": "f887cdd.0a0d33",
+        "type": "switchNode",
+        "name": "switch configuration-sub-type",
+        "xml": "<switch test='`$tmp.configuration-sub-type`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 710.8333358764648,
+        "y": 1221.6666021347046,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "67100eb7.3ecce",
+                "d0476eef.c40b5"
+            ]
+        ]
+    },
+    {
+        "id": "67100eb7.3ecce",
+        "type": "outcome",
+        "name": "vprobe",
+        "xml": "<outcome value='vprobe'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 912.1666450500488,
+        "y": 1194.9999055862427,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "2c2fabce.b42c34"
+            ]
+        ]
+    },
+    {
+        "id": "d0476eef.c40b5",
+        "type": "outcome",
+        "name": "pprobe",
+        "xml": "<outcome value='pprobe'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 912.5000228881836,
+        "y": 1244.9998540878296,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "4c074c9.6a81eb4"
+            ]
+        ]
+    },
+    {
+        "id": "4c074c9.6a81eb4",
+        "type": "execute",
+        "name": "execute ContrailAdaptor to enable port mirroring",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='port-mirroring' />\n<parameter name='api-action' value='enable' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='display-name'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />\n<parameter name='contrail-virtual-machine-interface-name'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />\n<parameter name='contrail-virtual-machine-interface-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />\n<parameter name='default-domain' value='default-domain' />\n<parameter name='default-project'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />\n<parameter name='traffic-direction' value='both' />\n<parameter name='analyzer-ip-address'\n  value='`$tmp.analyzer.ip-address`' />\n<parameter name='vni' value='1000' />\n<parameter name='udp-port' value='8099' />\n<parameter name='routing-instance'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />\n<parameter name='local-preference' value='1' />\n<parameter name='juniper-header' value='false' />\n<parameter name='cloud-region-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />\n<parameter name='cloud-owner'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1174.1666946411133,
+        "y": 1244.9999256134033,
+        "z": "a7f7f582.4f3378",
+        "wires": [
+            [
+                "9bb8036f.2b542",
+                "8e6a90d8.54e6d"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-sync.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-sync.json
new file mode 100644
index 0000000..272d376
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-sync.json
@@ -0,0 +1,267 @@
+[
+    {
+        "id": "b1a78d2.95bac7",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 104.28571319580078,
+        "y": 78.57142639160156,
+        "z": "21d5a75b.fa4438",
+        "wires": [
+            [
+                "2d041c0a.32a7e4"
+            ]
+        ]
+    },
+    {
+        "id": "2d041c0a.32a7e4",
+        "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": 217.9047393798828,
+        "y": 118.80953979492188,
+        "z": "21d5a75b.fa4438",
+        "wires": [
+            [
+                "f48fa1da.b76f"
+            ]
+        ]
+    },
+    {
+        "id": "f48fa1da.b76f",
+        "type": "method",
+        "name": "method port-mirror-topology-operation-activate-sync",
+        "xml": "<method rpc='port-mirror-topology-operation-activate-sync' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 235.71434020996094,
+        "y": 158.57142639160156,
+        "z": "21d5a75b.fa4438",
+        "wires": [
+            [
+                "55d92ce4.69af94"
+            ]
+        ]
+    },
+    {
+        "id": "b87df25d.ff00a",
+        "type": "comment",
+        "name": "port-mirror-topology-operation-activate-sync",
+        "info": "",
+        "comments": "",
+        "x": 498.6305694580078,
+        "y": 26.15777015686035,
+        "z": "21d5a75b.fa4438",
+        "wires": []
+    },
+    {
+        "id": "55d92ce4.69af94",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 164.28571319580078,
+        "y": 522.8571376800537,
+        "z": "21d5a75b.fa4438",
+        "wires": [
+            [
+                "e29417e9.9cde38",
+                "cb9d11d0.bb9c2",
+                "5b3c2fe0.47a87",
+                "ea14f2c2.9d79",
+                "a488fc13.57e4a",
+                "a7d56d93.aa1e"
+            ]
+        ]
+    },
+    {
+        "id": "e29417e9.9cde38",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n<parameter name='error-code' value='200' />\n<parameter name='ack-final' value='N' />",
+        "comments": "",
+        "x": 438.28570556640625,
+        "y": 624.2856521606445,
+        "z": "21d5a75b.fa4438",
+        "wires": []
+    },
+    {
+        "id": "cb9d11d0.bb9c2",
+        "type": "set",
+        "name": "set tmp.pm.configuration-id",
+        "xml": "<set>\n<parameter name='tmp.pm.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />\n\n",
+        "comments": "",
+        "x": 479.00000762939453,
+        "y": 335.71427154541016,
+        "z": "21d5a75b.fa4438",
+        "wires": []
+    },
+    {
+        "id": "5b3c2fe0.47a87",
+        "type": "execute",
+        "name": "execute readProperties",
+        "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": 467.1428527832031,
+        "y": 384.28569984436035,
+        "z": "21d5a75b.fa4438",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ea14f2c2.9d79",
+        "type": "execute",
+        "name": "generate port-mirror-configuration url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.pm-configuration`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.pmc-url\"/>\n    <parameter name=\"target\" value=\"{configuration-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.pm.configuration-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 510.00001525878906,
+        "y": 431.4285469055176,
+        "z": "21d5a75b.fa4438",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a488fc13.57e4a",
+        "type": "execute",
+        "name": "execute RestApiCallNode - get port-mirror-configuration",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-pmc\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 570,
+        "y": 478.5714817047119,
+        "z": "21d5a75b.fa4438",
+        "wires": [
+            [
+                "cceb4831.7bdd98",
+                "d2976e97.2a3bc"
+            ]
+        ]
+    },
+    {
+        "id": "cceb4831.7bdd98",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 868.1531219482422,
+        "y": 449.3793306350708,
+        "z": "21d5a75b.fa4438",
+        "wires": [
+            [
+                "62e52870.2bf728"
+            ]
+        ]
+    },
+    {
+        "id": "d2976e97.2a3bc",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 865.7142601013184,
+        "y": 498.571424484253,
+        "z": "21d5a75b.fa4438",
+        "wires": [
+            [
+                "eb26a4d1.4a8278"
+            ]
+        ]
+    },
+    {
+        "id": "eb26a4d1.4a8278",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Cannot find port-mirror-configuration ' + $tmp.pm.configuration-id`\" />\n",
+        "comments": "",
+        "x": 1379.9999389648438,
+        "y": 495.7142868041992,
+        "z": "21d5a75b.fa4438",
+        "wires": []
+    },
+    {
+        "id": "a7d56d93.aa1e",
+        "type": "switchNode",
+        "name": "switch order-status == 'Created'",
+        "xml": "<switch test=\"`$mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Created'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 492.857177734375,
+        "y": 552.8570899963379,
+        "z": "21d5a75b.fa4438",
+        "wires": [
+            [
+                "eaf2afe9.4f1b8"
+            ]
+        ]
+    },
+    {
+        "id": "62e52870.2bf728",
+        "type": "switchNode",
+        "name": "switch length == 1",
+        "xml": "<switch test='`$mdsal-pmc.port-mirror-configuration_length == 1`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1047.142822265625,
+        "y": 448.5714387893677,
+        "z": "21d5a75b.fa4438",
+        "wires": [
+            [
+                "6938e65d.459fb8"
+            ]
+        ]
+    },
+    {
+        "id": "6938e65d.459fb8",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1217.1428527832031,
+        "y": 448.5714302062988,
+        "z": "21d5a75b.fa4438",
+        "wires": [
+            [
+                "eb26a4d1.4a8278"
+            ]
+        ]
+    },
+    {
+        "id": "eaf2afe9.4f1b8",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 721.4285888671875,
+        "y": 552.857177734375,
+        "z": "21d5a75b.fa4438",
+        "wires": [
+            [
+                "4d8be81c.2b6ce8"
+            ]
+        ]
+    },
+    {
+        "id": "4d8be81c.2b6ce8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Created'`\" />\n",
+        "comments": "",
+        "x": 882.857177734375,
+        "y": 551.4285888671875,
+        "z": "21d5a75b.fa4438",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-async.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-async.json
new file mode 100755
index 0000000..f7f79b1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-async.json
@@ -0,0 +1 @@
+[{"id":"bb268559.fd3938","type":"dgstart","name":"DGSTART","outputs":1,"x":101.66666412353516,"y":87.41365623474121,"z":"ad46ffb1.59044","wires":[["a124bed3.35031"]]},{"id":"a124bed3.35031","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.6190414428711,"y":127.65177726745605,"z":"ad46ffb1.59044","wires":[["db524fe9.5dfcc"]]},{"id":"db524fe9.5dfcc","type":"method","name":"method port-mirror-topology-operation-assign-async","xml":"<method rpc='port-mirror-topology-operation-assign-async' mode='sync'>\n","comments":"","outputs":1,"x":232.95244598388672,"y":168.84222412109375,"z":"ad46ffb1.59044","wires":[["ac3d53ca.aefc2"]]},{"id":"19977dc1.9b6832","type":"comment","name":"port-mirror-topology-operation-assign-async","info":"","comments":"","x":496.0115203857422,"y":35,"z":"ad46ffb1.59044","wires":[]},{"id":"e5fd1f58.74f01","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n<parameter name='error-code' value='200' />\n","comments":"","x":410.2144241333008,"y":5452.700392484665,"z":"ad46ffb1.59044","wires":[]},{"id":"ac3d53ca.aefc2","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":156.15477752685547,"y":2545.485157728195,"z":"ad46ffb1.59044","wires":[["e5fd1f58.74f01","ced2d211.53467","f9889d49.6fbf5","ce052c1a.cbe7c","8b585d79.bc124","4847ddc2.32a804","94761f86.c5ad2","bae20099.07b1f","17bc986f.814148","ac2e3332.29b9f","b4b42190.25a09","94e068c9.523098","b7f41d13.6fd4c","1b63f2c6.c9c3cd","3278f6bc.28dd4a","b0683757.70acd8","fc4ca4c9.69e018","59373ca.423e2c4","c1689047.89198","d3bec9cf.937968","39eab347.ba000c","b40e2769.9b66e8","8854e0fa.60ed8","e53b0107.99046","53a52a6c.d1cd64","1bbc7787.e7f1b8","a92de2b4.d0018","6aa6e65.77d1a18","72ac5c76.c8ab14","6e6309e.a9b13f8","ba91d904.ffefc8","7ee1327.81d79cc","b4aa58d9.1a6638","7c523201.d63ddc","6c94d29e.c7544c","f3bec0f8.38123","569bdf72.3da37","43966c.cbf36994","b26e3f0d.1d7c8","fb861ac2.aeb8b8","497d568b.0f1998","1bc76bf3.eeff44","34f89d01.613262","a44e08eb.db9948","fa51468e.921388"]]},{"id":"ced2d211.53467","type":"set","name":"set tmp variables","xml":"<set>\n<parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />\n<parameter name='tmp.src-vnf-id' value='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.vnf-information.vnf-id`' />\n<parameter name='tmp.dest-vnf-id' value='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.dest-port.vnf-information.vnf-id`' />\n<parameter name='tmp.dest-pnf-name' value='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.dest-port.pnf-information.pnf-name`' />\n<parameter name='tmp.service-instance-id' value='`$port-mirror-topology-operation-input.service-information.service-instance-id`' />\n<parameter name='tmp.configuration-sub-type' value='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`' />\n","comments":"","x":434.23812103271484,"y":219.31843376159668,"z":"ad46ffb1.59044","wires":[]},{"id":"f9889d49.6fbf5","type":"set","name":"set port-mirror-configuration data","xml":"<set>\n<parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />\n<parameter name='pm.configuration-data.configuration-operation-information.sdnc-request-header.'\n  value='`$port-mirror-topology-operation-input.sdnc-request-header.`' />\n<parameter name='pm.configuration-data.configuration-operation-information.request-information.'\n  value='`$port-mirror-topology-operation-input.request-information.`' />\n<parameter name='pm.configuration-data.configuration-operation-information.service-information.'\n  value='`$port-mirror-topology-operation-input.service-information.`' />\n<parameter name='pm.configuration-data.configuration-operation-information.configuration-information.'\n  value='`$port-mirror-topology-operation-input.configuration-information.`' />\n<parameter name='pm.configuration-data.configuration-operation-information.port-mirror-configuration-request-input.'\n  value='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.`' />\n","comments":"","x":483.38097381591797,"y":265.8898448944092,"z":"ad46ffb1.59044","wires":[]},{"id":"4847ddc2.32a804","type":"execute","name":"execute RestApiCallNode - PUT port-mirror-configuration","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.portmirrorconfig.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-pmc\" />\n\n","comments":"","outputs":1,"x":541.8215942382812,"y":5323.652531385422,"z":"ad46ffb1.59044","wires":[["a3f19e94.a6218","a7b211de.53d8b","a4821754.dac1f8"]]},{"id":"a3f19e94.a6218","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":943.5581283569336,"y":5366.650751829147,"z":"ad46ffb1.59044","wires":[["df3069ed.4ad628"]]},{"id":"a7b211de.53d8b","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":935.9867630004883,"y":5325.150771856308,"z":"ad46ffb1.59044","wires":[["df3069ed.4ad628"]]},{"id":"a4821754.dac1f8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":939.7367553710938,"y":5285.50786948204,"z":"ad46ffb1.59044","wires":[["803a5100.a0eb2"]]},{"id":"803a5100.a0eb2","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1077.1070251464844,"y":5284.557212591171,"z":"ad46ffb1.59044","wires":[[]]},{"id":"ce052c1a.cbe7c","type":"execute","name":"execute readProperties","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":454.5238723754883,"y":312.41370940208435,"z":"ad46ffb1.59044","wires":[[]]},{"id":"8b585d79.bc124","type":"execute","name":"generate port-mirror-configuration url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.pm-configuration`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.pmc-url\"/>\n    <parameter name=\"target\" value=\"{configuration-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.configuration-id`\"/>\n","comments":"","outputs":1,"x":478.07159423828125,"y":5273.652478933334,"z":"ad46ffb1.59044","wires":[[]]},{"id":"ab26b1cb.6c458","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":773.642858505249,"y":350.2230501174927,"z":"ad46ffb1.59044","wires":[["c1e2010f.8bc8a"]]},{"id":"853dd343.7ef44","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":782.2142944335938,"y":393.50876331329346,"z":"ad46ffb1.59044","wires":[["c1e2010f.8bc8a"]]},{"id":"54196f0f.b7bed","type":"set","name":"set src TOSCA data","xml":"<set>\n<parameter name='tmp.src-pps' value='`$db.cap[$cap-idx].pps-capacity`' />\n<parameter name='tmp.src-nfc-naming-code' value='`$db.cap[$cap-idx].nfc-naming-code`' />\n<parameter name='tmp.src-network-role' value='`$db.cap[$cap-idx].network-role`' />\n","comments":"","x":1080.3809967041016,"y":428.8422772884369,"z":"ad46ffb1.59044","wires":[]},{"id":"94761f86.c5ad2","type":"for","name":"for each capability row","xml":"<for index='cap-idx' start='0' end='`$db.cap_length`' >\n","comments":"","outputs":1,"x":453.23809814453125,"y":455.9851453304291,"z":"ad46ffb1.59044","wires":[["5484d230.220e0c"]]},{"id":"5484d230.220e0c","type":"switchNode","name":"switch role","xml":"<switch test='`$db.cap[$cap-idx].role`'>\n","comments":"","outputs":1,"x":678.9523124694824,"y":455.9851453304291,"z":"ad46ffb1.59044","wires":[["d2c1922a.92cad","43255d7c.a2b224"]]},{"id":"d2c1922a.92cad","type":"outcome","name":"source","xml":"<outcome value='source'>\n","comments":"","outputs":1,"x":883.2380627223424,"y":428.84227674347994,"z":"ad46ffb1.59044","wires":[["54196f0f.b7bed"]]},{"id":"43255d7c.a2b224","type":"outcome","name":"collector","xml":"<outcome value='collector'>\n","comments":"","outputs":1,"x":886.5714073181152,"y":474.55655813217163,"z":"ad46ffb1.59044","wires":[["1912da.1a473d27"]]},{"id":"1912da.1a473d27","type":"set","name":"set dest TOSCA data","xml":"<set>\n<parameter name='tmp.dest-pps' value='`$db.cap[$cap-idx].pps-capacity`' />\n<parameter name='tmp.dest-nfc-naming-code' value='`$db.cap[$cap-idx].nfc-naming-code`' />\n<parameter name='tmp.dest-network-role' value='`$db.cap[$cap-idx].network-role`' />\n","comments":"","x":1086.5714569091797,"y":473.1279969215393,"z":"ad46ffb1.59044","wires":[]},{"id":"465844f2.75eb6c","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Error reading PORT_MIRROR_CONFIGURATION table\" />\n","comments":"","outputs":1,"x":1106.9777603149414,"y":343.73672008514404,"z":"ad46ffb1.59044","wires":[[]]},{"id":"48ebd9fd.1aa898","type":"comment","name":"Save data in port-mirror-configurations","info":"","comments":"","x":530.9287261962891,"y":5226.50967001915,"z":"ad46ffb1.59044","wires":[]},{"id":"b08e4195.35b89","type":"for","name":"for each vnfc-instance-group","xml":"<for index='vnfc-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group_length`' >\n","comments":"","outputs":1,"x":1086.1905822753906,"y":764.8422791957855,"z":"ad46ffb1.59044","wires":[["cfce73db.444a"]]},{"id":"bae20099.07b1f","type":"switchNode","name":"switch vnfc-instance-group length","xml":"<switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group_length`'>\n","comments":"","outputs":1,"x":484.19061279296875,"y":727.1279656887054,"z":"ad46ffb1.59044","wires":[["83784130.f9a6d","3bc49b20.bc69d4"]]},{"id":"83784130.f9a6d","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":715.4762191772461,"y":626.6994416713715,"z":"ad46ffb1.59044","wires":[["ef26b095.af478"]]},{"id":"3bc49b20.bc69d4","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":715.0476684570312,"y":831.9853875637054,"z":"ad46ffb1.59044","wires":[["c196ee7a.ca01e"]]},{"id":"4e1f1d25.97bcc4","type":"set","name":"set src and dest vnfc-instance-group indexes to 0 and 1","xml":"<set>\n<parameter name='tmp.src-vnfc-idx' value='0' />\n<parameter name='tmp.dest-vnfc-idx' value='1' />\n","comments":"","x":1426.666763305664,"y":596.937522649765,"z":"ad46ffb1.59044","wires":[]},{"id":"85ad272a.3311b8","type":"switchNode","name":"switch nfc-naming-code== src-nfc-naming-code","xml":"<switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].nfc-naming-code == $tmp.src-nfc-naming-code`'>\n","comments":"","outputs":1,"x":2114.9048080444336,"y":711.0326793193817,"z":"ad46ffb1.59044","wires":[["904cff55.541c6"]]},{"id":"904cff55.541c6","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2365.952476501465,"y":709.3660762310028,"z":"ad46ffb1.59044","wires":[["d3793fdc.0a2ff"]]},{"id":"826084d1.080b38","type":"switchNode","name":"switch nfc-naming-code== dest-nfc-naming-code","xml":"<switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].nfc-naming-code == $tmp.dest-nfc-naming-code`'>\n","comments":"","outputs":1,"x":2079.4290466308594,"y":810.0803000926971,"z":"ad46ffb1.59044","wires":[["76df0afb.11e574"]]},{"id":"76df0afb.11e574","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2363.8099822998047,"y":810.0803306102753,"z":"ad46ffb1.59044","wires":[["c21bf8.eab03408"]]},{"id":"f9f6a40c.995e38","type":"set","name":"set src and dest vnfc-instance-group indexes","xml":"<set>\n<parameter name='tmp.src-vnfc-idx' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length`' />\n<parameter name='tmp.dest-vnfc-idx' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length + 1`' />\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group_length' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length + 2`'/>\n","comments":"","x":1557.33349609375,"y":869.1279656887054,"z":"ad46ffb1.59044","wires":[]},{"id":"5497462d.218008","type":"switchNode","name":"switch instance-group-role == source network role","xml":"<switch test=\"`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].instance-group-role == $tmp.src-network-role`\">\n","comments":"","outputs":1,"x":1599.76220703125,"y":713.1755731105804,"z":"ad46ffb1.59044","wires":[["25d48494.893ccc"]]},{"id":"25d48494.893ccc","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1858.5714683532715,"y":711.7470281124115,"z":"ad46ffb1.59044","wires":[["85ad272a.3311b8"]]},{"id":"7b66815b.00988","type":"set","name":"set vnfc-instance-group data","xml":"<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].instance-group-role'\n  value='`$tmp.src-network-role`'/>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].nfc-naming-code'\n  value='`$tmp.src-nfc-naming-code`'/>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].group-type'\n  value='port-mirror-source'/>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].configuration-id'\n  value='`$tmp.configuration-id`'/>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].instance-group-role'\n  value='`$tmp.dest-network-role`'/>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].nfc-naming-code'\n  value='`$tmp.dest-nfc-naming-code`'/>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].group-type'\n  value='port-mirror-dest'/>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].configuration-id'\n  value='`$tmp.configuration-id`'/>\n","comments":"","x":884.9523620605469,"y":2888.985690832138,"z":"ad46ffb1.59044","wires":[]},{"id":"a92de2b4.d0018","type":"save","name":"custom query: get owning entity","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.AnAI-data.oe\">\n<parameter name=\"start[0]\" value=\"`'nodes/service-instances/service-instance?service-instance-id=' + $tmp.service-instance-id `\" />\n<parameter name=\"start_length\" value=\"1\" />\n<parameter name=\"query\" value=\"/query/owning-entity-fromService-instance\" /> \n","comments":"","outputs":1,"x":481.7143249511719,"y":1060.0568101406097,"z":"ad46ffb1.59044","wires":[["6b2910fe.e6dcc","d5b1a37.27eef6","2b7916ba.345d0a"]]},{"id":"cf8b1744.047588","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":749.6190490722656,"y":1272.1042115688324,"z":"ad46ffb1.59044","wires":[["49093ad5.e171a4"]]},{"id":"59373ca.423e2c4","type":"save","name":"custom query: get source network data","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.AnAI-data.src-network\">\n      <parameter name=\"start[0]\" value=\"`'/cloud-infrastructure/cloud-regions/cloud-region/' + $tmp.cloud-owner + '/'  + $tmp.cloud-region-id`\" />\n      <parameter name=\"start_length\" value=\"1\" /> \n      <parameter name=\"query\" value=\"`'/query/network-name-fromNetwork-role?networkRole='  + $tmp.src-network-role`\" /> \n","comments":"","outputs":1,"x":510.4286651611328,"y":2466.6520936489105,"z":"ad46ffb1.59044","wires":[["12ac31cc.1492fe","7f7fb5ed.db5a5c"]]},{"id":"12ac31cc.1492fe","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":782.5715141296387,"y":2436.652218580246,"z":"ad46ffb1.59044","wires":[["b2ddda36.d1a248"]]},{"id":"8854e0fa.60ed8","type":"set","name":"copy A&AI data to topology","xml":"<set>\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner'\n  value='`$tmp.cloud-owner`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id'\n  value='`$tmp.cloud-region-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant'\n  value='`$tmp.tenant`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id'\n  value='`$tmp.tenant-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-tenant'\n  value='`$tmp.dest-tenant`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-tenant-id'\n  value='`$tmp.dest-tenant-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-context'\n  value='`$tmp.tenant-context`' />\n","comments":"","x":476.90464782714844,"y":2320.6756768226624,"z":"ad46ffb1.59044","wires":[]},{"id":"ad263b73.9e1128","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3049.762275695801,"y":707.699319601059,"z":"ad46ffb1.59044","wires":[["e719dfbc.122c1","63c03f51.fc305"]]},{"id":"a08aecf8.1164d","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3050.4767150878906,"y":806.9849908351898,"z":"ad46ffb1.59044","wires":[["ddbbed4c.69b25","63c03f51.fc305"]]},{"id":"c196ee7a.ca01e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":864.476318359375,"y":829.9851434230804,"z":"ad46ffb1.59044","wires":[["b08e4195.35b89","3f2e31c8.06f08e"]]},{"id":"c1e2010f.8bc8a","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":927.8571548461914,"y":368.8422498703003,"z":"ad46ffb1.59044","wires":[["465844f2.75eb6c","63c03f51.fc305"]]},{"id":"cf05af60.13994","type":"comment","name":"rpc-port-mirror-1040","info":"","comments":"","x":414.0476379394531,"y":613.8422734737396,"z":"ad46ffb1.59044","wires":[]},{"id":"df46f124.b18a4","type":"comment","name":"step 2 - create vnfc-instance-group (done)","info":"","comments":"","x":484.0476531982422,"y":653.8422296047211,"z":"ad46ffb1.59044","wires":[]},{"id":"569cc477.0c727c","type":"comment","name":"step 3 - get owning entity (aai-port-mirror-1140)","info":"","comments":"","x":494.9524230957031,"y":973.7233216762543,"z":"ad46ffb1.59044","wires":[]},{"id":"4c7a8bad.448c34","type":"comment","name":"step 4 - get cloud-owner, cloud-region-id, and tenant (aai-port-mirror-1150)","info":"","comments":"","x":576.7618713378906,"y":1231.53280043602,"z":"ad46ffb1.59044","wires":[]},{"id":"a38b575c.8e5978","type":"comment","name":"step 5 - get network data (aai-port-mirror-1120)","info":"","comments":"","x":540.4286079406738,"y":2419.5092465877533,"z":"ad46ffb1.59044","wires":[]},{"id":"ec7724b4.2efb38","type":"comment","name":"step 6/7 - get vservers, l-interfaces, etc (aai-port-mirror-1130)","info":"","comments":"","x":577.1905212402344,"y":2627.937910795212,"z":"ad46ffb1.59044","wires":[]},{"id":"93550f20.12036","type":"comment","name":"step 8 - write data to vnfc-instance-groups","info":"","comments":"","x":511.6190185546875,"y":2848.6046578884125,"z":"ad46ffb1.59044","wires":[]},{"id":"730bd1a2.6e1bc","type":"comment","name":"step 9/10 - write instance group variables and vnf-ids to assignments","info":"","comments":"","x":591.5238265991211,"y":2987.9374301433563,"z":"ad46ffb1.59044","wires":[]},{"id":"7c9558cd.b82ff8","type":"comment","name":"rpc-port-mirror-1030","info":"","comments":"","x":431.5476760864258,"y":3526.819870710373,"z":"ad46ffb1.59044","wires":[]},{"id":"c0a00a8e.d159f8","type":"comment","name":"step 4 - write configuration identifiers to topology (done)","info":"","comments":"","x":536.5239105224609,"y":4850.438508749008,"z":"ad46ffb1.59044","wires":[]},{"id":"2578aa22.458d06","type":"comment","name":"step 5 - map source to dest (rpc-port-mirror-1050)","info":"","comments":"","x":563.6191253662109,"y":3573.604864835739,"z":"ad46ffb1.59044","wires":[]},{"id":"5307699d.4d8ca8","type":"comment","name":"step 6 - call DG to create network policy","info":"","comments":"","x":497.5001411437988,"y":3768.4856355190277,"z":"ad46ffb1.59044","wires":[]},{"id":"ddc35f62.7f936","type":"comment","name":"step 7 - create logical links (aai-port-mirror-1030)","info":"","comments":"","x":543.690616607666,"y":4180.390530347824,"z":"ad46ffb1.59044","wires":[]},{"id":"9382bde2.bd7ce","type":"comment","name":"step 8 - update configuration object (aai-port-mirror-1020) (done)","info":"","comments":"","x":564.4286499023438,"y":4651.151960134506,"z":"ad46ffb1.59044","wires":[]},{"id":"3f064715.dd5548","type":"comment","name":"step 9 - update references to configuration object (done)","info":"","comments":"","x":539.6668701171875,"y":4934.818518400192,"z":"ad46ffb1.59044","wires":[]},{"id":"5a1791a8.eaa3c","type":"comment","name":"step 10  - update oper status (done)","info":"","comments":"","x":471.6192321777344,"y":5138.676261663437,"z":"ad46ffb1.59044","wires":[]},{"id":"dda98e98.66fdf","type":"set","name":"set assignments high-level data","xml":"<set>\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.nfc-naming-code'\n  value='`$tmp.src-nfc-naming-code`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.instance-group-role'\n  value='`$tmp.src-network-role`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.service-instance-id'\n  value='`$tmp.service-instance-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.configuration-id'\n  value='`$tmp.configuration-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnf-id'\n  value='`$tmp.src-vnf-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-capacity'\n  value='`$tmp.src-pps`' />\n  \n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnfc-instance-group-id.nfc-naming-code'\n  value='`$tmp.dest-nfc-naming-code`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnfc-instance-group-id.instance-group-role'\n  value='`$tmp.dest-network-role`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnfc-instance-group-id.service-instance-id'\n  value='`$tmp.service-instance-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnfc-instance-group-id.configuration-id'\n  value='`$tmp.configuration-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnf-id'\n  value='`$tmp.dest-vnf-id`' />\n  \n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type'\n  value='vprobe' />\n  \n","comments":"","x":884.0475997924805,"y":3027.5565707683563,"z":"ad46ffb1.59044","wires":[]},{"id":"ac2e3332.29b9f","type":"set","name":"write configuration identifiers to topology","xml":"<set>\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.configuration-id'\n  value='`$tmp.configuration-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.configuration-type'\n  value='`$port-mirror-topology-operation-input.configuration-information.configuration-type`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.configuration-sub-type'\n  value='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.parent-service-instance-id'\n  value='`$tmp.service-instance-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.configuration-name'\n  value='`$tmp.configuration-name`' />\n","comments":"","x":497.4762268066406,"y":4894.724291563034,"z":"ad46ffb1.59044","wires":[]},{"id":"17bc986f.814148","type":"set","name":"copy A&AI data to topology","xml":"<set>\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.owning-entity' value='`$tmp.owning-entity`' />","comments":"","x":466.90484873453806,"y":1191.294898112615,"z":"ad46ffb1.59044","wires":[]},{"id":"b4b42190.25a09","type":"get-resource","name":"get-resource PORT_MIRROR_CAPABILITY","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='select role,nfc_naming_code,pps_capacity,network_role,policy_name\n    from PORT_MIRROR_CAPABILITY cap, PORT_MIRROR_CONFIGURATION conf, SERVICE_PROXY sp\n    where cap.port_mirror_capability_name=conf.port_mirror_capability_name\n     and cap.port_mirror_service_uuid=conf.port_mirror_service_uuid\n     and cap.service_proxy_name=conf.service_proxy_name\n     and cap.service_proxy_name=sp.service_proxy_name\n     and cap.port_mirror_service_uuid=sp.parent_service_uuid\n     and conf.customization_uuid = $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid\n     and conf.port_mirror_service_uuid = $service-data.service-information.onap-model-information.model-uuid\n    order by role'\n  pfx='db.cap[]'>\n","comments":"","outputs":1,"x":520.7143173217773,"y":375.98510932922363,"z":"ad46ffb1.59044","wires":[["ab26b1cb.6c458","853dd343.7ef44"]]},{"id":"fc4ca4c9.69e018","type":"save","name":"custom query: get source interface data","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.AnAI-data.src-li\">\n\t<parameter value=\"`'/network/generic-vnfs/generic-vnf/' + $tmp.src-vnf-id`\" name=\"start[0]\"/>\n\t<parameter value=\"1\" name=\"start_length\"/>\n\t<parameter value=\"`'/query/vserver-fromVnf?nfcNamingCode=' + $tmp.encoded-src-nfc-naming-code`\" name=\"query\"/>\n","comments":"","outputs":1,"x":512.2381591796875,"y":2681.937666654587,"z":"ad46ffb1.59044","wires":[["c71cf508.fbd108","bd71f446.ad9978"]]},{"id":"c71cf508.fbd108","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":783.4285697937012,"y":2662.4139783382416,"z":"ad46ffb1.59044","wires":[["864b2f27.10409"]]},{"id":"3673b9cb.5e0016","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-message`\" />\n","comments":"","x":1953.5473327636719,"y":6067.818812131882,"z":"ad46ffb1.59044","wires":[]},{"id":"96200486.022548","type":"configure","name":"send error to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\" value=\"`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\" value=\"Y\" />\n<parameter name=\"input.response-code\" value=\"500\" />\n<parameter name=\"input.response-message\" value=\"`$error-message`\" />\n<parameter name=\"input.svc-request-id\" value=\"`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\" value=\"`$port-mirror-topology-operation-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\" value=\"`$port-mirror-topology-operation-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":1972.906379699707,"y":6019.618288755417,"z":"ad46ffb1.59044","wires":[[]]},{"id":"63c03f51.fc305","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1800.2141189575195,"y":6040.676154851913,"z":"ad46ffb1.59044","wires":[["96200486.022548","3673b9cb.5e0016"]]},{"id":"e719dfbc.122c1","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"`'Source nfc-naming-code of ' + $tmp.src-nfc-naming-code + ' already exists in vnfc-instance-groups for this configuration-id'`\" />\n","comments":"","outputs":1,"x":3274.0480422973633,"y":679.1278855800629,"z":"ad46ffb1.59044","wires":[[]]},{"id":"ddbbed4c.69b25","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"`'Dest nfc-naming-code of ' + $tmp.dest-nfc-naming-code + ' already exists in vnfc-instance-groups for this configuration-id'`\" />\n","comments":"","outputs":1,"x":3271.0480346679688,"y":776.127916097641,"z":"ad46ffb1.59044","wires":[[]]},{"id":"49093ad5.e171a4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":922.1904983520508,"y":1273.056488752365,"z":"ad46ffb1.59044","wires":[["4b208346.335cec","63c03f51.fc305"]]},{"id":"4b208346.335cec","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to AAI custom query: cloud-region-fromVnf\" />\n","comments":"","outputs":1,"x":1135.190528869629,"y":1273.0565965175629,"z":"ad46ffb1.59044","wires":[[]]},{"id":"539e08.2cbc11f8","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to AAI custom query: network-name-fromNetwork-role\" />\n","comments":"","outputs":1,"x":1156.1429634094238,"y":2429.7950398921967,"z":"ad46ffb1.59044","wires":[[]]},{"id":"3cbceaf3.21fa26","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to AAI custom query vserver-fromVnf for source vnf\" />\n","comments":"","outputs":1,"x":1172.6190490722656,"y":2662.794835805893,"z":"ad46ffb1.59044","wires":[[]]},{"id":"b2ddda36.d1a248","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":951.8096046447754,"y":2430.4615848064423,"z":"ad46ffb1.59044","wires":[["539e08.2cbc11f8","63c03f51.fc305"]]},{"id":"864b2f27.10409","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":942.9524192810059,"y":2662.128130197525,"z":"ad46ffb1.59044","wires":[["3cbceaf3.21fa26","63c03f51.fc305"]]},{"id":"39eab347.ba000c","type":"save","name":"custom query: get cloud region from vnf","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource&amp;nodesOnly=true'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.AnAI-data.vnf\">\n<parameter name=\"start[0]\" value=\"`'/network/generic-vnfs/generic-vnf/' + $tmp.src-vnf-id `\" />\n<parameter name=\"start_length\" value=\"1\" />\n<parameter name=\"query\" value=\"query/cloud-region-fromVnf\" /> \n","comments":"","outputs":1,"x":505.0476379394531,"y":1294.10408949852,"z":"ad46ffb1.59044","wires":[["cf8b1744.047588","d0e9d16b.5ac0d"]]},{"id":"6b2910fe.e6dcc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":731.9524116516113,"y":1013.7232768535614,"z":"ad46ffb1.59044","wires":[["3d2afe64.53a9e2"]]},{"id":"3d2afe64.53a9e2","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":899.6667404174805,"y":1013.4374158382416,"z":"ad46ffb1.59044","wires":[["6b3fecc6.167694","63c03f51.fc305"]]},{"id":"6b3fecc6.167694","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to AAI custom query: owning-entity-fromService-instance\" />\n","comments":"","outputs":1,"x":1100.2382011413574,"y":1013.1517369747162,"z":"ad46ffb1.59044","wires":[[]]},{"id":"d5b1a37.27eef6","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":739.0953063964844,"y":1059.43750166893,"z":"ad46ffb1.59044","wires":[["498bf269.3bee4c"]]},{"id":"498bf269.3bee4c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":903.3810157775879,"y":1058.008983373642,"z":"ad46ffb1.59044","wires":[["ee857f71.e7279","63c03f51.fc305"]]},{"id":"ee857f71.e7279","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"No owning entity returned from AAI: owning-entity-fromService-instance\" />\n","comments":"","outputs":1,"x":1103.9524765014648,"y":1057.7233045101166,"z":"ad46ffb1.59044","wires":[[]]},{"id":"d0e9d16b.5ac0d","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":763.3333435058594,"y":1322.961267232895,"z":"ad46ffb1.59044","wires":[["7f9ea47.0a4d75c"]]},{"id":"7f9ea47.0a4d75c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":927.6190528869629,"y":1321.5327489376068,"z":"ad46ffb1.59044","wires":[["84c17964.af8038","63c03f51.fc305"]]},{"id":"84c17964.af8038","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"No cloud region returned from AAI: cloud-region-fromVnf\" />\n","comments":"","outputs":1,"x":1128.1905136108398,"y":1321.2470700740814,"z":"ad46ffb1.59044","wires":[[]]},{"id":"7f7fb5ed.db5a5c","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":791.8571510314941,"y":2485.4616515636444,"z":"ad46ffb1.59044","wires":[["5d211eb.2a894e"]]},{"id":"5d211eb.2a894e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":956.1428604125977,"y":2484.0331332683563,"z":"ad46ffb1.59044","wires":[["a2e4d3b6.99b26","63c03f51.fc305"]]},{"id":"a2e4d3b6.99b26","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"No network information returned from AAI: network-name-fromNetwork-role\" />\n","comments":"","outputs":1,"x":1155.0475883483887,"y":2482.0807683467865,"z":"ad46ffb1.59044","wires":[[]]},{"id":"bd71f446.ad9978","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":791.9999694824219,"y":2716.461442708969,"z":"ad46ffb1.59044","wires":[["3ea31ed7.03df92"]]},{"id":"3ea31ed7.03df92","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":956.2856788635254,"y":2715.032924413681,"z":"ad46ffb1.59044","wires":[["7dbff819.5bfbe8","63c03f51.fc305"]]},{"id":"7dbff819.5bfbe8","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"No interface data returned from AAI vserver-fromVnf for source vnf\" />\n","comments":"","outputs":1,"x":1155.1904067993164,"y":2713.080559492111,"z":"ad46ffb1.59044","wires":[[]]},{"id":"b7f41d13.6fd4c","type":"set","name":"set provided-configuration references","xml":"<set>\n<parameter name='service-data.provided-configurations.provided-configuration[$tmp.provided-conf-idx].configuration-id'\n  value='`$tmp.configuration-id`' />\n<parameter name='service-data.provided-configurations.provided-configuration[$tmp.provided-conf-idx].configuration-type'\n  value='`$port-mirror-topology-operation-input.configuration-information.configuration-type`' />\n<parameter name='service-data.provided-configurations.provided-configuration[$tmp.provided-conf-idx].configuration-sub-type'\n  value='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`' />\n<parameter name='service-data.provided-configurations.provided-configuration[$tmp.provided-conf-idx].configuration-topology-link'\n  value=\"`'restconf/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/' + $tmp.configuration-id + '/configuration-data/port-mirror-configuration-topology'`\" />\n","comments":"","x":485.0953826904297,"y":5088.533381223679,"z":"ad46ffb1.59044","wires":[]},{"id":"6e0f32b2.2cbbfc","type":"set","name":"set tmp.provided-conf-idx to 0","xml":"<set>\n<parameter name='tmp.provided-conf-idx' value='0' />\n","comments":"","x":935.0953140258789,"y":4983.533135175705,"z":"ad46ffb1.59044","wires":[]},{"id":"94e068c9.523098","type":"switchNode","name":"switch provided-configuration_length","xml":"<switch test='`$service-data.provided-configurations.provided-configuration_length`'>\n","comments":"","outputs":1,"x":485.0954284667969,"y":5016.866305112839,"z":"ad46ffb1.59044","wires":[["9b5988f1.682ef8","fd407f90.6b97d"]]},{"id":"9b5988f1.682ef8","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":720.0953674316406,"y":4985.199560880661,"z":"ad46ffb1.59044","wires":[["6e0f32b2.2cbbfc"]]},{"id":"fd407f90.6b97d","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":720.3334655761719,"y":5042.818625211716,"z":"ad46ffb1.59044","wires":[["b5bce153.d8e4b"]]},{"id":"b5bce153.d8e4b","type":"set","name":"set tmp.provided-conf-idx to current length","xml":"<set>\n<parameter name='tmp.provided-conf-idx' value='`$service-data.provided-configurations.provided-configuration_length`' />\n<parameter name='service-data.provided-configurations.provided-configuration_length' value='`$tmp.provided-conf-idx + 1`' />\n","comments":"","x":973.4286880493164,"y":5043.532810926437,"z":"ad46ffb1.59044","wires":[]},{"id":"1b63f2c6.c9c3cd","type":"set","name":"set oper-status","xml":"<set>\n<parameter name='pm.configuration-data.configuration-oper-status.order-status'\n  value='Created' />\n<parameter name='pm.configuration-data.configuration-oper-status.last-action'\n  value='`$port-mirror-topology-operation-input.request-information.request-action`' />\n<parameter name='pm.configuration-data.configuration-oper-status.last-rpc-action'\n  value='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`' />\n","comments":"","x":413.0954284667969,"y":5183.199943304062,"z":"ad46ffb1.59044","wires":[]},{"id":"7c21534.f0151ac","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Error updating md-sal for port-mirror-configuration\" />\n","comments":"","outputs":1,"x":1292.9762725830078,"y":5313.223598241806,"z":"ad46ffb1.59044","wires":[[]]},{"id":"df3069ed.4ad628","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1098.9762725830078,"y":5339.223598241806,"z":"ad46ffb1.59044","wires":[["7c21534.f0151ac","b9471f80.beb4f"]]},{"id":"3278f6bc.28dd4a","type":"save","name":"update configuration object","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"configuration\"\n   key=\"configuration.configuration-id = $tmp.configuration-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"configuration-name\" value=\"`$tmp.configuration-name`\" />\n<parameter name=\"operational-status\" value=\"out-of-service-path\" />\n<parameter name=\"configuration-selflink\" value=\"`'/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/'\n  + $port-mirror-topology-operation-input.configuration-information.configuration-id + '/configuration-data/port-mirror-configuration-topology'`\" />\n","comments":"","outputs":1,"x":458.2381057739258,"y":4726.151884794235,"z":"ad46ffb1.59044","wires":[["5afb000a.4d7de","5869bf9c.0fe5a"]]},{"id":"5afb000a.4d7de","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":662.5954246520996,"y":4749.771194219589,"z":"ad46ffb1.59044","wires":[["69096410.56db8c"]]},{"id":"5869bf9c.0fe5a","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":671.1668395996094,"y":4699.056997060776,"z":"ad46ffb1.59044","wires":[["db67428e.c1fa4"]]},{"id":"69096410.56db8c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":844.9047698974609,"y":4751.151537656784,"z":"ad46ffb1.59044","wires":[["f4035afd.1eff48","b9471f80.beb4f"]]},{"id":"db67428e.c1fa4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":844.9047470092773,"y":4699.485204458237,"z":"ad46ffb1.59044","wires":[["37f18fcb.abe9a","b9471f80.beb4f"]]},{"id":"f4035afd.1eff48","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failure updating configuration object in AAI\" />\n","comments":"","outputs":1,"x":1031.5713958740234,"y":4751.151537656784,"z":"ad46ffb1.59044","wires":[[]]},{"id":"37f18fcb.abe9a","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Unable to find configuration object in AAI\" />\n","comments":"","outputs":1,"x":1041.5713577270508,"y":4697.818469762802,"z":"ad46ffb1.59044","wires":[[]]},{"id":"b0683757.70acd8","type":"switchNode","name":"switch input configuration-name","xml":"<switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-name`'>\n","comments":"","outputs":1,"x":478.0001220703125,"y":3948.6045615673065,"z":"ad46ffb1.59044","wires":[["9aad7446.82ff88","7fbcc8b1.312ee8"]]},{"id":"9aad7446.82ff88","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":716.3334503173828,"y":3926.9377343654633,"z":"ad46ffb1.59044","wires":[["f4b25a9.9b490a8"]]},{"id":"7fbcc8b1.312ee8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":716.5715103149414,"y":3971.223790884018,"z":"ad46ffb1.59044","wires":[["1cfb2e4.fae17d2"]]},{"id":"f4b25a9.9b490a8","type":"set","name":"generate name","xml":"<set>\n<parameter name='tmp.configuration-name' value=\"`'PMC_' + $tmp.tenant + '_' + $tmp.cloud-region-id + '_' + $port-mirror-topology-operation-input.configuration-information.configuration-type + '_' + $tmp.configuration-id`\" />\n","comments":"","x":894.6667861938477,"y":3926.937853574753,"z":"ad46ffb1.59044","wires":[]},{"id":"1cfb2e4.fae17d2","type":"set","name":"copy name to tmp.configuration-name","xml":"<set>\n<parameter name='tmp.configuration-name' value='`$port-mirror-topology-operation-input.configuration-information.configuration-name`' />\n","comments":"","x":963.0000610351562,"y":3970.2711083889008,"z":"ad46ffb1.59044","wires":[]},{"id":"3f4d2f6e.a6f3f","type":"save","name":"custom query: get dest interface data","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.AnAI-data.dest-li\">\n\t<parameter value=\"`'/network/generic-vnfs/generic-vnf/' + $tmp.dest-vnf-id`\" name=\"start[0]\"/>\n\t<parameter value=\"1\" name=\"start_length\"/>\n\t<parameter value=\"`'/query/vserver-fromVnf?nfcNamingCode=' + $tmp.encoded-dest-nfc-naming-code`\" name=\"query\"/>\n","comments":"","outputs":1,"x":900.0000152587891,"y":2779.794685125351,"z":"ad46ffb1.59044","wires":[["eabfaba8.1a1b58","e8fa0fb9.d067f"]]},{"id":"eabfaba8.1a1b58","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1171.1904258728027,"y":2760.2709968090057,"z":"ad46ffb1.59044","wires":[["645c5606.f95b48"]]},{"id":"5934b8dd.233468","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to AAI custom query vserver-fromVnf for dest vnf\" />\n","comments":"","outputs":1,"x":1560.3809051513672,"y":2760.651854276657,"z":"ad46ffb1.59044","wires":[[]]},{"id":"645c5606.f95b48","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1330.7142753601074,"y":2759.985148668289,"z":"ad46ffb1.59044","wires":[["5934b8dd.233468","63c03f51.fc305"]]},{"id":"e8fa0fb9.d067f","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1179.7618255615234,"y":2814.3184611797333,"z":"ad46ffb1.59044","wires":[["bfca4c81.3f76"]]},{"id":"bfca4c81.3f76","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1344.047534942627,"y":2812.889942884445,"z":"ad46ffb1.59044","wires":[["f19b293.d210ed8","63c03f51.fc305"]]},{"id":"f19b293.d210ed8","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"No interface data returned from AAI vserver-fromVnf for dest vnf\" />\n","comments":"","outputs":1,"x":1542.952262878418,"y":2810.9375779628754,"z":"ad46ffb1.59044","wires":[[]]},{"id":"bccb28e8.16a9b8","type":"save","name":"custom query: get dest network data","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.AnAI-data.dest-network\">\n      <parameter name=\"start[0]\" value=\"`'/cloud-infrastructure/cloud-regions/cloud-region/' + $tmp.cloud-owner + '/'  + $tmp.cloud-region-id`\" />\n      <parameter name=\"start_length\" value=\"1\" /> \n      <parameter name=\"query\" value=\"`'/query/network-name-fromNetwork-role?networkRole='  + $tmp.dest-network-role`\" /> \n","comments":"","outputs":1,"x":905.0000457763672,"y":2559.794838666916,"z":"ad46ffb1.59044","wires":[["ee6bb08a.94728","53108b40.4bfeb4"]]},{"id":"ee6bb08a.94728","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1177.142894744873,"y":2529.7949635982513,"z":"ad46ffb1.59044","wires":[["17c66940.45d1c7"]]},{"id":"65f00856.6009c8","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to AAI custom query: network-name-fromNetwork-role\" />\n","comments":"","outputs":1,"x":1550.7143440246582,"y":2522.937784910202,"z":"ad46ffb1.59044","wires":[[]]},{"id":"17c66940.45d1c7","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1346.3809852600098,"y":2523.6043298244476,"z":"ad46ffb1.59044","wires":[["65f00856.6009c8","63c03f51.fc305"]]},{"id":"53108b40.4bfeb4","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1186.4285316467285,"y":2578.60439658165,"z":"ad46ffb1.59044","wires":[["60989e30.be117"]]},{"id":"60989e30.be117","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1350.714241027832,"y":2577.1758782863617,"z":"ad46ffb1.59044","wires":[["92a79ef5.fa3e","63c03f51.fc305"]]},{"id":"92a79ef5.fa3e","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"No network information returned from AAI: network-name-fromNetwork-role\" />\n","comments":"","outputs":1,"x":1549.618968963623,"y":2575.223513364792,"z":"ad46ffb1.59044","wires":[[]]},{"id":"30c54a00.afa5d6","type":"comment","name":"walk through the data returned from A&AI","info":"","comments":"","x":212.3333854675293,"y":3317.4135043621063,"z":"ad46ffb1.59044","wires":[]},{"id":"c1689047.89198","type":"for","name":"for each src network","xml":"<for index='src-nw-idx' start='0' end='`$tmp.AnAI-data.src-network.results_length`' >\n","comments":"","outputs":1,"x":443.0000648498535,"y":3169.4611241817474,"z":"ad46ffb1.59044","wires":[["2cd007ca.1929a8"]]},{"id":"2cd007ca.1929a8","type":"switchNode","name":"switch network-name","xml":"<switch test='`$tmp.AnAI-data.src-network.results[$src-nw-idx].l3-network.network-name`'>\n","comments":"","outputs":1,"x":671.3334274291992,"y":3166.12770819664,"z":"ad46ffb1.59044","wires":[["d7919be.53eda68","c29693c7.fb429"]]},{"id":"d7919be.53eda68","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":856.3333625793457,"y":3139.461038351059,"z":"ad46ffb1.59044","wires":[["362c8304.4cbdfc"]]},{"id":"c29693c7.fb429","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":856.3332939147949,"y":3190.8897111415863,"z":"ad46ffb1.59044","wires":[["a4a87364.b0d06"]]},{"id":"362c8304.4cbdfc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1018.0000267028809,"y":3140.1753146648407,"z":"ad46ffb1.59044","wires":[[]]},{"id":"a4a87364.b0d06","type":"switchNode","name":"switch tmp.src-network-name","xml":"<switch test='`$tmp.src-network-name`'>\n","comments":"","outputs":1,"x":1061.3334617614746,"y":3189.46128821373,"z":"ad46ffb1.59044","wires":[["605de0a1.ea25b","1fd130aa.f375ff"]]},{"id":"605de0a1.ea25b","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1267.9999885559082,"y":3162.794290304184,"z":"ad46ffb1.59044","wires":[["9fdf6659.2008e8"]]},{"id":"1fd130aa.f375ff","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1267.9999198913574,"y":3214.2229630947113,"z":"ad46ffb1.59044","wires":[["ae6d4e1c.b688b"]]},{"id":"ae6d4e1c.b688b","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1426.3333625793457,"y":3212.794290304184,"z":"ad46ffb1.59044","wires":[["8adf8a07.c692b8","63c03f51.fc305"]]},{"id":"8adf8a07.c692b8","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"`'More than one l3-network returned from AAI for network-role ' + $tmp.src-network-role`\" />\n","comments":"","outputs":1,"x":1628.5715026855469,"y":3210.841985464096,"z":"ad46ffb1.59044","wires":[[]]},{"id":"625b85e.683ee7c","type":"for","name":"for each dest network","xml":"<for index='dest-nw-idx' start='0' end='`$tmp.AnAI-data.dest-network.results_length`' >\n","comments":"","outputs":1,"x":1014.3333587646484,"y":3317.461047887802,"z":"ad46ffb1.59044","wires":[["f3dfbef3.6ed35"]]},{"id":"f3dfbef3.6ed35","type":"switchNode","name":"switch network-name","xml":"<switch test='`$tmp.AnAI-data.dest-network.results[$dest-nw-idx].l3-network.network-name`'>\n","comments":"","outputs":1,"x":1242.6667213439941,"y":3314.1276319026947,"z":"ad46ffb1.59044","wires":[["678c96f2.cc4388","ec3b96ff.47f7a8"]]},{"id":"678c96f2.cc4388","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1427.6666564941406,"y":3287.4609620571136,"z":"ad46ffb1.59044","wires":[["587cf5c6.ba63ec"]]},{"id":"ec3b96ff.47f7a8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1427.6665878295898,"y":3338.889634847641,"z":"ad46ffb1.59044","wires":[["9c35b414.e31698"]]},{"id":"587cf5c6.ba63ec","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1589.3333206176758,"y":3288.1752383708954,"z":"ad46ffb1.59044","wires":[[]]},{"id":"9c35b414.e31698","type":"switchNode","name":"switch tmp.dest-network-name","xml":"<switch test='`$tmp.dest-network-name`'>\n","comments":"","outputs":1,"x":1632.6667556762695,"y":3337.4612119197845,"z":"ad46ffb1.59044","wires":[["aba201a4.051ba","7a095d13.048ae4"]]},{"id":"aba201a4.051ba","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1839.3332824707031,"y":3310.7942140102386,"z":"ad46ffb1.59044","wires":[["9d76aa87.81e4e8"]]},{"id":"7a095d13.048ae4","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1839.3332138061523,"y":3362.222886800766,"z":"ad46ffb1.59044","wires":[["2a5e35ab.cdec4a"]]},{"id":"2a5e35ab.cdec4a","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1997.6666564941406,"y":3360.7942140102386,"z":"ad46ffb1.59044","wires":[["8bfc73ed.fc9f","63c03f51.fc305"]]},{"id":"8bfc73ed.fc9f","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"`'More than one l3-network returned from AAI for network-role ' + $tmp.dest-network-role`\" />\n","comments":"","outputs":1,"x":2199.904796600342,"y":3358.8419091701508,"z":"ad46ffb1.59044","wires":[[]]},{"id":"43220e3c.7f04b","type":"comment","name":"determine src and dest network names","info":"","comments":"","x":536.3333778381348,"y":3122.794374227524,"z":"ad46ffb1.59044","wires":[]},{"id":"d3bec9cf.937968","type":"switchNode","name":"switch tmp.src-network-name","xml":"<switch test='`$tmp.src-network-name`'>\n","comments":"","outputs":1,"x":468.6666717529297,"y":3249.461126089096,"z":"ad46ffb1.59044","wires":[["abaf7b95.e9d2a8"]]},{"id":"abaf7b95.e9d2a8","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":677.0000190734863,"y":3248.7944705486298,"z":"ad46ffb1.59044","wires":[["6e9098e0.3b0088"]]},{"id":"6e9098e0.3b0088","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":830.3333282470703,"y":3248.127874135971,"z":"ad46ffb1.59044","wires":[["4f6fc74.a7c5038","63c03f51.fc305"]]},{"id":"4f6fc74.a7c5038","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Cannot determine source network name from AAI data\" />\n","comments":"","outputs":1,"x":1021.9999542236328,"y":3247.794378042221,"z":"ad46ffb1.59044","wires":[[]]},{"id":"6e2daa52.cd5594","type":"switchNode","name":"switch tmp.dest-network-name","xml":"<switch test='`$tmp.dest-network-name`'>\n","comments":"","outputs":1,"x":1038.0000381469727,"y":3423.1277639865875,"z":"ad46ffb1.59044","wires":[["4c56824a.8a235c"]]},{"id":"4c56824a.8a235c","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1246.3333854675293,"y":3421.461108446121,"z":"ad46ffb1.59044","wires":[["8d7d1967.e0a578"]]},{"id":"8d7d1967.e0a578","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1399.6666946411133,"y":3419.7945120334625,"z":"ad46ffb1.59044","wires":[["fde3a27f.3918f","63c03f51.fc305"]]},{"id":"fde3a27f.3918f","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Cannot determine dest network name from AAI data\" />\n","comments":"","outputs":1,"x":1591.3333206176758,"y":3416.4610159397125,"z":"ad46ffb1.59044","wires":[[]]},{"id":"b40e2769.9b66e8","type":"for","name":"for each returned result","xml":"<for index='result-idx' start='0' end='`$tmp.AnAI-data.vnf.results_length`' >\n","comments":"","outputs":1,"x":452.0000457763672,"y":1553.294564962387,"z":"ad46ffb1.59044","wires":[["ccbe45ed.d09b58"]]},{"id":"ccbe45ed.d09b58","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":660.3333435058594,"y":1553.294564962387,"z":"ad46ffb1.59044","wires":[["a5ce191e.435038","78aa9e8c.548e","524fa73b.dde868","4dee36e.58e6bc8","7f533d3d.edc374"]]},{"id":"a5ce191e.435038","type":"switchNode","name":"switch tenant-name","xml":"<switch test='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-name`'>\n","comments":"","outputs":1,"x":893.6667098999023,"y":1383.294781446457,"z":"ad46ffb1.59044","wires":[["98836081.83ee2","49da7d2e.a5da44"]]},{"id":"98836081.83ee2","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1093.6666145324707,"y":1364.961406469345,"z":"ad46ffb1.59044","wires":[["c542e7ec.b41f78"]]},{"id":"49da7d2e.a5da44","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1091.999885559082,"y":1404.72345328331,"z":"ad46ffb1.59044","wires":[["7963162e.49a188"]]},{"id":"c542e7ec.b41f78","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1235.333288192749,"y":1364.9614474773407,"z":"ad46ffb1.59044","wires":[[]]},{"id":"7963162e.49a188","type":"set","name":"set tmp.tenant from tenant-name","xml":"<set>\n<parameter name='tmp.tenant' value='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-name`' />\n","comments":"","x":1315.333366394043,"y":1404.961490392685,"z":"ad46ffb1.59044","wires":[]},{"id":"78aa9e8c.548e","type":"switchNode","name":"switch cloud-owner","xml":"<switch test='`$tmp.AnAI-data.vnf.results[$result-idx].cloud-region.cloud-owner`'>\n","comments":"","outputs":1,"x":887.0002746582031,"y":1628.2948701381683,"z":"ad46ffb1.59044","wires":[["71f1efb2.58789","a0f74502.c40b78"]]},{"id":"71f1efb2.58789","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1087.0001792907715,"y":1609.9614951610565,"z":"ad46ffb1.59044","wires":[["51b8c84b.a15a58"]]},{"id":"a0f74502.c40b78","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1085.3334503173828,"y":1649.7235419750214,"z":"ad46ffb1.59044","wires":[["c5078c32.1a81b"]]},{"id":"51b8c84b.a15a58","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1228.6668529510498,"y":1609.9615361690521,"z":"ad46ffb1.59044","wires":[[]]},{"id":"c5078c32.1a81b","type":"set","name":"set tmp.cloud-owner","xml":"<set>\n<parameter name='tmp.cloud-owner' value='`$tmp.AnAI-data.vnf.results[$result-idx].cloud-region.cloud-owner`' />\n","comments":"","x":1265.3336791992188,"y":1653.2949311733246,"z":"ad46ffb1.59044","wires":[]},{"id":"524fa73b.dde868","type":"switchNode","name":"switch cloud-region-id","xml":"<switch test='`$tmp.AnAI-data.vnf.results[$result-idx].cloud-region.cloud-region-id`'>\n","comments":"","outputs":1,"x":895.3336181640625,"y":1716.6279618740082,"z":"ad46ffb1.59044","wires":[["4cd41d77.62d1d4","fd25effc.e7aca"]]},{"id":"4cd41d77.62d1d4","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1087.000186920166,"y":1696.6279199123383,"z":"ad46ffb1.59044","wires":[["99f0220c.25b96"]]},{"id":"fd25effc.e7aca","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1085.3334579467773,"y":1736.389966726303,"z":"ad46ffb1.59044","wires":[["fa8958ae.e93378"]]},{"id":"99f0220c.25b96","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1228.6668605804443,"y":1696.6279609203339,"z":"ad46ffb1.59044","wires":[[]]},{"id":"fa8958ae.e93378","type":"set","name":"set tmp.cloud-region-id","xml":"<set>\n<parameter name='tmp.cloud-region-id' value='`$tmp.AnAI-data.vnf.results[$result-idx].cloud-region.cloud-region-id`' />\n","comments":"","x":1275.3335418701172,"y":1736.627985715866,"z":"ad46ffb1.59044","wires":[]},{"id":"e53b0107.99046","type":"switchNode","name":"switch tmp.tenant","xml":"<switch test='`$tmp.tenant`'>\n","comments":"","outputs":1,"x":440.0000686645508,"y":1781.9614572525024,"z":"ad46ffb1.59044","wires":[["871be54d.651f78"]]},{"id":"871be54d.651f78","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":675.0000330607099,"y":1778.627943356832,"z":"ad46ffb1.59044","wires":[["9e59cffc.17c17"]]},{"id":"9e59cffc.17c17","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":833.3333460489912,"y":1778.627943356832,"z":"ad46ffb1.59044","wires":[["2fae4fcd.563b7","63c03f51.fc305"]]},{"id":"2fae4fcd.563b7","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to retrieve source tenant from AAI\" />\n","comments":"","outputs":1,"x":1033.9048067728681,"y":1778.3422644933066,"z":"ad46ffb1.59044","wires":[[]]},{"id":"53a52a6c.d1cd64","type":"switchNode","name":"switch tmp.cloud-region-id","xml":"<switch test='`$tmp.cloud-region-id`'>\n","comments":"","outputs":1,"x":466.00001525878906,"y":1876.9612882137299,"z":"ad46ffb1.59044","wires":[["7e86423b.eb811c"]]},{"id":"7e86423b.eb811c","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":672.6666361490888,"y":1876.961163600286,"z":"ad46ffb1.59044","wires":[["82a1ad5f.91c0a"]]},{"id":"82a1ad5f.91c0a","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":830.9999491373701,"y":1876.961163600286,"z":"ad46ffb1.59044","wires":[["da9fb459.35a968","63c03f51.fc305"]]},{"id":"da9fb459.35a968","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to retrieve tenant from AAI\" />\n","comments":"","outputs":1,"x":1031.571409861247,"y":1876.6754847367606,"z":"ad46ffb1.59044","wires":[[]]},{"id":"1bbc7787.e7f1b8","type":"switchNode","name":"switch tmp.cloud-owner","xml":"<switch test='`$tmp.cloud-owner`'>\n","comments":"","outputs":1,"x":458,"y":1921.9612500667572,"z":"ad46ffb1.59044","wires":[["6d6681d5.c0eda"]]},{"id":"6d6681d5.c0eda","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":674.6666361490888,"y":1923.6277895768485,"z":"ad46ffb1.59044","wires":[["752bd23f.167a0c"]]},{"id":"752bd23f.167a0c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":832.9999491373701,"y":1923.6277895768485,"z":"ad46ffb1.59044","wires":[["9eae290b.710ba8","63c03f51.fc305"]]},{"id":"9eae290b.710ba8","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to retrieve tenant from AAI\" />\n","comments":"","outputs":1,"x":1033.571409861247,"y":1923.342110713323,"z":"ad46ffb1.59044","wires":[[]]},{"id":"6aa8217a.be7a8","type":"call","name":"call api-contrail-route-topology-operation-create","xml":"<call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-create' mode='sync' >\n\n","comments":"","outputs":1,"x":1091.3572235107422,"y":3827.5327785015106,"z":"ad46ffb1.59044","wires":[["45726510.62287c"]]},{"id":"45726510.62287c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1362.5477600097656,"y":3826.103891134262,"z":"ad46ffb1.59044","wires":[["db838c10.6d034"]]},{"id":"cf530372.3cdf2","type":"set","name":"set parameters","xml":"<set>\n<parameter name='cto-api.parent-service-instance-id' value='`$tmp.service-instance-id`' />\n<parameter name='cto-api.port-mirror-configuration-instance-id' value='`$tmp.configuration-id`' />\n<parameter name='cto-api.source-network-role' value='`$tmp.src-network-role`' />\n<parameter name='cto-api.collector-network-role' value='`$tmp.dest-network-role`' />\n<parameter name='cto-api.default-domain' value='default-domain' />\n<parameter name='cto-api.default-project' value='`$tmp.tenant`' />\n<parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />\n<parameter name='cto-api.cloud-owner' value='`$tmp.cloud-owner`' />\n<parameter name='cto-api.service-type' value='`$port-mirror-topology-operation-input.service-information.subscription-service-type`' />\n<parameter name='cto-api.owning-entity' value='`$tmp.owning-entity`' />\n","comments":"","x":993.6905212402344,"y":3780.866028547287,"z":"ad46ffb1.59044","wires":[]},{"id":"2b7916ba.345d0a","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":734.3333841959634,"y":1103.9613708655038,"z":"ad46ffb1.59044","wires":[["e03fa6c8.93c8e8"]]},{"id":"e03fa6c8.93c8e8","type":"set","name":"set tmp.owning-entity","xml":"<set>\n<parameter name='tmp.owning-entity' value='`$tmp.AnAI-data.oe.results[0].owning-entity.owning-entity-id`' />\n","comments":"","x":922.6666717529297,"y":1102.2947480678558,"z":"ad46ffb1.59044","wires":[]},{"id":"6aa6e65.77d1a18","type":"switchNode","name":"switch tmp.owning-entity","xml":"<switch test='`$tmp.owning-entity`'>\n","comments":"","outputs":1,"x":460.66676330566406,"y":1143.9613778591156,"z":"ad46ffb1.59044","wires":[["a1f43b.6baa9bc8"]]},{"id":"a1f43b.6baa9bc8","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":697.3334376017256,"y":1150.627945025762,"z":"ad46ffb1.59044","wires":[["89c6a8e0.6ffd88"]]},{"id":"89c6a8e0.6ffd88","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":862.3333803812666,"y":1150.6278639634452,"z":"ad46ffb1.59044","wires":[["6cf20a3f.e1e824","63c03f51.fc305"]]},{"id":"6cf20a3f.e1e824","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to retrieve owning-entity from AAI\" />\n","comments":"","outputs":1,"x":1059.5715071360273,"y":1148.6754713853202,"z":"ad46ffb1.59044","wires":[[]]},{"id":"333d39df.29c386","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1049.0000305175781,"y":4139.832871198654,"z":"ad46ffb1.59044","wires":[["92eadb34.b09bc8"]]},{"id":"2899e13d.c0f5ae","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1057.571460723877,"y":4184.118584394455,"z":"ad46ffb1.59044","wires":[["92eadb34.b09bc8"]]},{"id":"6e6309e.a9b13f8","type":"for","name":"for each mapped source port","xml":"<for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >\n","comments":"","outputs":1,"x":464.16675186157227,"y":4325.86591219902,"z":"ad46ffb1.59044","wires":[["d1f3d5d3.3b9cf8"]]},{"id":"d1f3d5d3.3b9cf8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":687.5000801086426,"y":4327.532335996628,"z":"ad46ffb1.59044","wires":[["a717ffcc.3b10e","9f479696.018ee8","c0c9e1a0.c1dd8","a249b3c4.30176","dbd95e4a.02811"]]},{"id":"a249b3c4.30176","type":"save","name":"save logical-link","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"logical-link\" \n\tkey=\"logical-link.link-name = $tmp.link-name\" >\n<parameter name=\"link-name\" value=\"`$tmp.link-name`\" />\n<parameter name=\"in-maint\" value=\"false\" />\n<parameter name=\"link-type\" value=\"port-mirror-configuration\" />\n","comments":"","outputs":1,"x":884.1666946411133,"y":4158.961284399033,"z":"ad46ffb1.59044","wires":[["333d39df.29c386","2899e13d.c0f5ae"]]},{"id":"a717ffcc.3b10e","type":"set","name":"set tmp.link-name","xml":"<set>\n<parameter name='tmp.link-name' value=\"`'PMC_' + $tmp.configuration-id\n  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name\n  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`\" />\n","comments":"","x":887.5001068115234,"y":4047.293805837631,"z":"ad46ffb1.59044","wires":[]},{"id":"a5acd743.ffb818","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"`'Failed to create logical link ' + $tmp.link-name\n  + ' in AAI'`\" />\n","comments":"","outputs":1,"x":1405.8334426879883,"y":4153.961203336716,"z":"ad46ffb1.59044","wires":[[]]},{"id":"92eadb34.b09bc8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1217.5000534057617,"y":4153.96112704277,"z":"ad46ffb1.59044","wires":[["a5acd743.ffb818","ade54b7b.1c2f78"]]},{"id":"ade54b7b.1c2f78","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1886.952075958252,"y":5729.55632185936,"z":"ad46ffb1.59044","wires":[["4014d89b.66e348","8ab7174a.76f6c8","4877f4d7.9e8e3c","db838c10.6d034"]]},{"id":"f5553e43.be0e4","type":"comment","name":"rollback network policy","info":"","comments":"","x":2192.666328430176,"y":5643.365671873093,"z":"ad46ffb1.59044","wires":[]},{"id":"8753137e.a72be","type":"save","name":"save vprobe logical-link relationships","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"logical-link:relationship-list\"\n   key=\"logical-link.link-name = $tmp.link-name\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"l-interface\" />\n    <parameter name=\"relationship-list.relationship[0].relationship-label\" value=\"org.onap.relationships.inventory.Source\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/cloud-infrastructure/cloud-regions/cloud-region/'\n        + $tmp.cloud-owner + '/' + $tmp.cloud-region-id + '/tenants/tenant/'\n        + $tmp.tenant-id + '/vservers/vserver/' \n        + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id\n        + '/l-interfaces/l-interface/'\n        + $tmp.encoded-source-port-name`\" />\n    <parameter name=\"relationship-list.relationship[1].related-to\" value=\"l-interface\" />\n    <parameter name=\"relationship-list.relationship[1].relationship-label\" value=\"org.onap.relationships.inventory.Destination\" />\n    <parameter name=\"relationship-list.relationship[1].related-link\"\n      value=\"`'/aai/v$/cloud-infrastructure/cloud-regions/cloud-region/'\n        + $tmp.cloud-owner + '/' + $tmp.cloud-region-id + '/tenants/tenant/'\n        + $tmp.dest-tenant-id + '/vservers/vserver/' \n        + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-vserver-id\n        + '/l-interfaces/l-interface/'\n        + $tmp.encoded-dest-port-name`\" />\n","comments":"","outputs":1,"x":1626.3094787597656,"y":4375.86571764946,"z":"ad46ffb1.59044","wires":[["aca151d2.78cad","dbe217c5.2519a8"]]},{"id":"aca151d2.78cad","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1905.5952415466309,"y":4375.627018690109,"z":"ad46ffb1.59044","wires":[["81fec963.f0c378"]]},{"id":"60444368.d2d1cc","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"`'Failed creating relationships for logical link ' + $tmp.link-name\n  + ' in AAI'`\" />\n","comments":"","outputs":1,"x":2267.4285621643066,"y":4396.422187566757,"z":"ad46ffb1.59044","wires":[[]]},{"id":"81fec963.f0c378","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2070.761848449707,"y":4396.421943426132,"z":"ad46ffb1.59044","wires":[["60444368.d2d1cc","b9471f80.beb4f"]]},{"id":"60456976.e6ca48","type":"comment","name":"delete logical links","info":"","comments":"","x":2184.3328399658203,"y":5493.365961790085,"z":"ad46ffb1.59044","wires":[]},{"id":"302fb759.f86fc8","type":"for","name":"for each mapped source port","xml":"<for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >\n","comments":"","outputs":1,"x":2173.856689453125,"y":5537.88894534111,"z":"ad46ffb1.59044","wires":[["cdbe21d2.0c705"]]},{"id":"cdbe21d2.0c705","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":2397.1900177001953,"y":5539.555369138718,"z":"ad46ffb1.59044","wires":[["89353571.082fa8","fff62f5.45f62d"]]},{"id":"fff62f5.45f62d","type":"save","name":"delete logical-link","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"logical-link\" \n\tkey=\"logical-link.link-name = $tmp.link-name\" >\n","comments":"","outputs":1,"x":2578.6187286376953,"y":5566.222370862961,"z":"ad46ffb1.59044","wires":[[]]},{"id":"89353571.082fa8","type":"set","name":"set tmp.link-name","xml":"<set>\n<parameter name='tmp.link-name' value=\"`'PMC_' + $tmp.configuration-id\n  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name\n  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`\" />\n","comments":"","x":2582.1901092529297,"y":5514.555414915085,"z":"ad46ffb1.59044","wires":[]},{"id":"b9471f80.beb4f","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1945.9996948242188,"y":5540.032742261887,"z":"ad46ffb1.59044","wires":[["302fb759.f86fc8","ade54b7b.1c2f78"]]},{"id":"72ac5c76.c8ab14","type":"configure","name":"send success to MSO","xml":"<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\" value=\"`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\" value=\"Y\" />\n<parameter name=\"input.response-code\" value=\"200\" />\n<parameter name=\"input.svc-request-id\" value=\"`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\" value=\"`$port-mirror-topology-operation-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\" value=\"`$port-mirror-topology-operation-input.service-information.service-instance-id`\" />\n","comments":"","outputs":1,"x":433.3095016479492,"y":5402.223337888718,"z":"ad46ffb1.59044","wires":[[]]},{"id":"4dee36e.58e6bc8","type":"switchNode","name":"switch tenant-id","xml":"<switch test='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-id`'>\n","comments":"","outputs":1,"x":886.9999923706055,"y":1466.6281173229218,"z":"ad46ffb1.59044","wires":[["cf05309.dfe44d","9c4d114c.68b9b"]]},{"id":"cf05309.dfe44d","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1086.9998970031738,"y":1448.29474234581,"z":"ad46ffb1.59044","wires":[["b95b05a3.f39c58"]]},{"id":"9c4d114c.68b9b","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1085.3331680297852,"y":1488.0567891597748,"z":"ad46ffb1.59044","wires":[["b197215.06e19e"]]},{"id":"b95b05a3.f39c58","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1228.6665706634521,"y":1448.2947833538055,"z":"ad46ffb1.59044","wires":[[]]},{"id":"b197215.06e19e","type":"set","name":"set tmp.tenant-id from tenant-id","xml":"<set>\n<parameter name='tmp.tenant-id' value='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-id`' />\n","comments":"","x":1308.666648864746,"y":1488.2948262691498,"z":"ad46ffb1.59044","wires":[]},{"id":"9f479696.018ee8","type":"save","name":"save configuration relationship to logical-link","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"configuration:relationship-list\"\n   key=\"configuration.configuration-id = $tmp.configuration-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"logical-link\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/logical-links/logical-link/' + $tmp.encoded-link-name`\" />\n","comments":"","outputs":1,"x":962.9286804199219,"y":4532.532779455185,"z":"ad46ffb1.59044","wires":[["790263b6.af947c","47af693f.8cd828"]]},{"id":"790263b6.af947c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1225.8333625793457,"y":4509.675470352173,"z":"ad46ffb1.59044","wires":[["bbdabb63.782468"]]},{"id":"e22d9d06.89265","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"`'Failed creating logical-link relationship for configuration ' + $tmp.configuration-id\n  + ' in AAI'`\" />\n","comments":"","outputs":1,"x":1598.6191215515137,"y":4530.23245215416,"z":"ad46ffb1.59044","wires":[[]]},{"id":"bbdabb63.782468","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1401.952407836914,"y":4530.232208013535,"z":"ad46ffb1.59044","wires":[["e22d9d06.89265","b9471f80.beb4f"]]},{"id":"76baa0fa.2967c","type":"save","name":"save configuration relationship to allotted-resource","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"configuration:relationship-list\"\n   key=\"configuration.configuration-id = $tmp.configuration-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"allotted-resource\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/business/customers/customer/' + $service-data.service-information.global-customer-id\n      + '/service-subscriptions/service-subscription/' + $port-mirror-topology-operation-input.service-information.subscription-service-type\n      + '/service-instances/service-instance/' + $tmp.service-instance-id\n\t  + '/allotted-resources/allotted-resource/' + $cto-api.contrail-route-allotted-instance-id`\" />\n","comments":"","outputs":1,"x":957.8332977294922,"y":4801.508413076401,"z":"ad46ffb1.59044","wires":[["fbb7f484.ef58f8"]]},{"id":"fbb7f484.ef58f8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1217.595142364502,"y":4801.508203268051,"z":"ad46ffb1.59044","wires":[["d530397.7d127c8"]]},{"id":"fa746551.40b958","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"`'Failed creating logical-link relationship for configuration ' + $tmp.configuration-id\n  + ' in AAI'`\" />\n","comments":"","outputs":1,"x":1586.0951538085938,"y":4800.63653922081,"z":"ad46ffb1.59044","wires":[[]]},{"id":"d530397.7d127c8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1389.4284400939941,"y":4800.636295080185,"z":"ad46ffb1.59044","wires":[["fa746551.40b958","b9471f80.beb4f"]]},{"id":"c31b80a8.b4288","type":"set","name":"set allotted-resource-id","xml":"<set>\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.route-allotted-resource-id'\n  value='`$cto-api.contrail-route-allotted-instance-id`' />\n","comments":"","x":1017.0238265991211,"y":3879.199120283127,"z":"ad46ffb1.59044","wires":[]},{"id":"d3793fdc.0a2ff","type":"switchNode","name":"switch configuration-id = input configuration-id","xml":"<switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].configuration-id == $tmp.configuration-id`'>\n","comments":"","outputs":1,"x":2627.3808822631836,"y":709.1279284954071,"z":"ad46ffb1.59044","wires":[["f850adb4.3d4cc"]]},{"id":"f850adb4.3d4cc","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2894.047882080078,"y":709.1279418468475,"z":"ad46ffb1.59044","wires":[["ad263b73.9e1128"]]},{"id":"e1f68e84.fcd0a","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2891.905387878418,"y":809.84219622612,"z":"ad46ffb1.59044","wires":[["a08aecf8.1164d"]]},{"id":"8ab7174a.76f6c8","type":"call","name":"call api-contrail-route-topology-operation-delete","xml":"<call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' >\n\n","comments":"","outputs":1,"x":2158.49991607666,"y":5728.604483366013,"z":"ad46ffb1.59044","wires":[[]]},{"id":"4014d89b.66e348","type":"set","name":"set parameters","xml":"<set>\n<parameter name='cto-api.default-domain' value='default-domain' />\n<parameter name='cto-api.default-project' value='`$tmp.tenant`' />\n<parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />\n<parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />\n<parameter name='cto-api.rollback-flag' value='true' />\n<parameter name='tmp.saved-error-message' value='`$error-message`' />\n","comments":"","x":2061.3569564819336,"y":5682.17448592186,"z":"ad46ffb1.59044","wires":[]},{"id":"4877f4d7.9e8e3c","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value='`$tmp.saved-error-message`' />\n","comments":"","x":2069.3329849243164,"y":5776.223969221115,"z":"ad46ffb1.59044","wires":[]},{"id":"c21bf8.eab03408","type":"switchNode","name":"switch configuration-id = input configuration-id","xml":"<switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].configuration-id == $tmp.configuration-id`'>\n","comments":"","outputs":1,"x":2619.0476837158203,"y":809.1279685497284,"z":"ad46ffb1.59044","wires":[["e1f68e84.fcd0a"]]},{"id":"cfce73db.444a","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1305.0000610351562,"y":764.1279561519623,"z":"ad46ffb1.59044","wires":[["5497462d.218008","d391bbf3.6fb278"]]},{"id":"d391bbf3.6fb278","type":"switchNode","name":"switch instance-group-role == dest network role","xml":"<switch test=\"`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].instance-group-role == $tmp.dest-network-role`\">\n","comments":"","outputs":1,"x":1585.000144958496,"y":812.4613530635834,"z":"ad46ffb1.59044","wires":[["ae1da850.aa5c38"]]},{"id":"ae1da850.aa5c38","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1845.0000839233398,"y":810.7946927547455,"z":"ad46ffb1.59044","wires":[["826084d1.080b38"]]},{"id":"ef26b095.af478","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$tmp.configuration-sub-type`'>\n","comments":"","outputs":1,"x":926.6667404174805,"y":625.7469708919525,"z":"ad46ffb1.59044","wires":[["366c2bd1.d0f054","e2a4a4ac.7745d8"]]},{"id":"366c2bd1.d0f054","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":1133.3333358764648,"y":597.4137017726898,"z":"ad46ffb1.59044","wires":[["4e1f1d25.97bcc4"]]},{"id":"e2a4a4ac.7745d8","type":"outcome","name":"pprobe","xml":"<outcome value='pprobe'>\n","comments":"","outputs":1,"x":1131.6665077209473,"y":650.7469975948334,"z":"ad46ffb1.59044","wires":[["fdd5e4da.854ea8"]]},{"id":"fdd5e4da.854ea8","type":"set","name":"set src vnfc-instance-group indexes to 0","xml":"<set>\n<parameter name='tmp.src-vnfc-idx' value='0' />\n","comments":"","x":1380.000015258789,"y":650.7469937801361,"z":"ad46ffb1.59044","wires":[]},{"id":"3f2e31c8.06f08e","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$tmp.configuration-sub-type`'>\n","comments":"","outputs":1,"x":1090.3333740234375,"y":898.0803582668304,"z":"ad46ffb1.59044","wires":[["46551bfb.574f74","3d428c98.dd8054"]]},{"id":"46551bfb.574f74","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":1296.9999694824219,"y":869.7470891475677,"z":"ad46ffb1.59044","wires":[["f9f6a40c.995e38"]]},{"id":"3d428c98.dd8054","type":"outcome","name":"pprobe","xml":"<outcome value='pprobe'>\n","comments":"","outputs":1,"x":1295.333137512207,"y":928.0803475379944,"z":"ad46ffb1.59044","wires":[["74f9ecf9.aaa254"]]},{"id":"74f9ecf9.aaa254","type":"set","name":"set src vnfc-instance-group index","xml":"<set>\n<parameter name='tmp.src-vnfc-idx' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length`' />\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group_length' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length + 1`'/>\n","comments":"","x":1520.3333740234375,"y":922.0803582668304,"z":"ad46ffb1.59044","wires":[]},{"id":"ba91d904.ffefc8","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$tmp.configuration-sub-type`'>\n","comments":"","outputs":1,"x":481.33335876464844,"y":2562.080483198166,"z":"ad46ffb1.59044","wires":[["a7a79641.236e88"]]},{"id":"a7a79641.236e88","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":679.3333587646484,"y":2562.080483198166,"z":"ad46ffb1.59044","wires":[["bccb28e8.16a9b8"]]},{"id":"7ee1327.81d79cc","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$tmp.configuration-sub-type`'>\n","comments":"","outputs":1,"x":480.3333282470703,"y":2781.413825750351,"z":"ad46ffb1.59044","wires":[["c029ac7.4e95f5"]]},{"id":"c029ac7.4e95f5","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":678.3333282470703,"y":2781.413825750351,"z":"ad46ffb1.59044","wires":[["3f4d2f6e.a6f3f"]]},{"id":"b4aa58d9.1a6638","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$tmp.configuration-sub-type`'>\n","comments":"","outputs":1,"x":475.3333435058594,"y":2917.747165441513,"z":"ad46ffb1.59044","wires":[["779de296.e05f0c","1c0d42a5.c3ea0d"]]},{"id":"779de296.e05f0c","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":681.9999389648438,"y":2889.4138963222504,"z":"ad46ffb1.59044","wires":[["7b66815b.00988"]]},{"id":"1c0d42a5.c3ea0d","type":"outcome","name":"pprobe","xml":"<outcome value='pprobe'>\n","comments":"","outputs":1,"x":680.3331108093262,"y":2942.747192144394,"z":"ad46ffb1.59044","wires":[["9a90328a.f8f3f"]]},{"id":"9a90328a.f8f3f","type":"set","name":"set vnfc-instance-group data","xml":"<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].instance-group-role'\n  value='`$tmp.src-network-role`'/>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].nfc-naming-code'\n  value='`$tmp.src-nfc-naming-code`'/>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].group-type'\n  value='port-mirror-source'/>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].configuration-id'\n  value='`$tmp.configuration-id`'/>\n","comments":"","x":887.3333435058594,"y":2941.747165441513,"z":"ad46ffb1.59044","wires":[]},{"id":"7c523201.d63ddc","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$tmp.configuration-sub-type`'>\n","comments":"","outputs":1,"x":470.3333053588867,"y":3056.7470004558563,"z":"ad46ffb1.59044","wires":[["c96eb82f.f93d98","2c14fac4.bb6a36"]]},{"id":"c96eb82f.f93d98","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":676.9999008178711,"y":3028.4137313365936,"z":"ad46ffb1.59044","wires":[["dda98e98.66fdf"]]},{"id":"2c14fac4.bb6a36","type":"outcome","name":"pprobe","xml":"<outcome value='pprobe'>\n","comments":"","outputs":1,"x":675.3330726623535,"y":3081.747027158737,"z":"ad46ffb1.59044","wires":[["4c1abfdf.199e8"]]},{"id":"4c1abfdf.199e8","type":"set","name":"set assignments high-level data","xml":"<set>\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.nfc-naming-code'\n  value='`$tmp.src-nfc-naming-code`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.instance-group-role'\n  value='`$tmp.src-network-role`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.service-instance-id'\n  value='`$tmp.service-instance-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.configuration-id'\n  value='`$tmp.configuration-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnf-id'\n  value='`$tmp.src-vnf-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-capacity'\n  value='`$tmp.src-pps`' />\n\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-pnf-name'\n  value='`$tmp.dest-pnf-name`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-p-interface'\n  value='`$tmp.dest-p-interface`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-pnf-port-policy-name'\n  value='`$db.cap[0].policy-name`' />\n\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type'\n  value='pprobe' />\n","comments":"","x":886.3332901000977,"y":3080.746999502182,"z":"ad46ffb1.59044","wires":[]},{"id":"6c94d29e.c7544c","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$tmp.configuration-sub-type`'>\n","comments":"","outputs":1,"x":469.33334732055664,"y":3370.7470166683197,"z":"ad46ffb1.59044","wires":[["1c67b9f0.492966"]]},{"id":"1c67b9f0.492966","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":667.3333473205566,"y":3370.7470166683197,"z":"ad46ffb1.59044","wires":[["ae6055fe.670a38"]]},{"id":"ae6055fe.670a38","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":811.3333473205566,"y":3370.7470166683197,"z":"ad46ffb1.59044","wires":[["625b85e.683ee7c","6e2daa52.cd5594"]]},{"id":"eef77adb.8474d8","type":"call","name":"call port-mirror-topology-operation-mapping-vprobe","xml":"<call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-mapping-vprobe' mode='sync' >\n","comments":"","outputs":1,"x":953.9999542236328,"y":3615.0802524089813,"z":"ad46ffb1.59044","wires":[["627e8543.3e36bc"]]},{"id":"627e8543.3e36bc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1222.333236694336,"y":3635.0804545879364,"z":"ad46ffb1.59044","wires":[["63c03f51.fc305"]]},{"id":"f3bec0f8.38123","type":"call","name":"call port-mirror-topology-operation-create-vnfcs","xml":"<call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-create-vnfcs' mode='sync' >\n","comments":"","outputs":1,"x":523.6666641235352,"y":3477.4136922359467,"z":"ad46ffb1.59044","wires":[["dfead08.322943"]]},{"id":"dfead08.322943","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":781.6666641235352,"y":3477.4136922359467,"z":"ad46ffb1.59044","wires":[["63c03f51.fc305"]]},{"id":"569bdf72.3da37","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$tmp.configuration-sub-type`'>\n","comments":"","outputs":1,"x":469.9999237060547,"y":3642.413380384445,"z":"ad46ffb1.59044","wires":[["7741ec73.021014","368bf59f.c05efa"]]},{"id":"7741ec73.021014","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":682.9999389648438,"y":3615.7467544078827,"z":"ad46ffb1.59044","wires":[["eef77adb.8474d8"]]},{"id":"368bf59f.c05efa","type":"outcome","name":"pprobe","xml":"<outcome value='pprobe'>\n","comments":"","outputs":1,"x":683.6665802001953,"y":3664.079884290695,"z":"ad46ffb1.59044","wires":[["2a760035.fd29a"]]},{"id":"2a760035.fd29a","type":"call","name":"call port-mirror-topology-operation-mapping-pprobe","xml":"<call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-mapping-pprobe' mode='sync' >\n","comments":"","outputs":1,"x":952.9999389648438,"y":3664.0798423290253,"z":"ad46ffb1.59044","wires":[["627e8543.3e36bc"]]},{"id":"db838c10.6d034","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1851.1187477111816,"y":5889.080706357956,"z":"ad46ffb1.59044","wires":[["63c03f51.fc305","fc45d5c3.cb8368"]]},{"id":"a420df.c0984f2","type":"call","name":"call port-mirror-rollback-capacity-db","xml":"<call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' >\n\n","comments":"","outputs":1,"x":2485.16609954834,"y":5887.413600683212,"z":"ad46ffb1.59044","wires":[[]]},{"id":"36218a22.f604d6","type":"call","name":"call port-mirror-get-policy","xml":"<call module='GENERIC-RESOURCE-API' rpc='port-mirror-get-policy' mode='sync' >\n","comments":"","outputs":1,"x":1113.6902923583984,"y":2369.91375041008,"z":"ad46ffb1.59044","wires":[["8ebef83f.b47318"]]},{"id":"8ebef83f.b47318","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1306.690315246582,"y":2369.91375041008,"z":"ad46ffb1.59044","wires":[["63c03f51.fc305"]]},{"id":"43966c.cbf36994","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$tmp.configuration-sub-type`'>\n","comments":"","outputs":1,"x":482.0237731933594,"y":2371.5804069042206,"z":"ad46ffb1.59044","wires":[["e3d46d1c.4449f"]]},{"id":"e3d46d1c.4449f","type":"outcome","name":"pprobe","xml":"<outcome value='pprobe'>\n","comments":"","outputs":1,"x":681.6904029846191,"y":2370.913699865341,"z":"ad46ffb1.59044","wires":[["3b89a5ce.4bc88a"]]},{"id":"7f533d3d.edc374","type":"switchNode","name":"switch tenant-context","xml":"<switch test='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-context`'>\n","comments":"","outputs":1,"x":886.6666030883789,"y":1548.2469975948334,"z":"ad46ffb1.59044","wires":[["87286e2c.30f99","d66314a3.a8eb78"]]},{"id":"87286e2c.30f99","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1086.6665077209473,"y":1529.9136226177216,"z":"ad46ffb1.59044","wires":[["ecc298c.8fc9b68"]]},{"id":"d66314a3.a8eb78","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1084.9997787475586,"y":1569.6756694316864,"z":"ad46ffb1.59044","wires":[["4cf523d9.55ff7c"]]},{"id":"ecc298c.8fc9b68","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1228.3331813812256,"y":1529.9136636257172,"z":"ad46ffb1.59044","wires":[[]]},{"id":"4cf523d9.55ff7c","type":"set","name":"set tmp.tenant-context from tenant-context","xml":"<set>\n<parameter name='tmp.tenant-context' value='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-context`' />\n","comments":"","x":1338.3332595825195,"y":1569.913804769516,"z":"ad46ffb1.59044","wires":[]},{"id":"b26e3f0d.1d7c8","type":"switchNode","name":"switch tmp.tenant-id","xml":"<switch test='`$tmp.tenant-id`'>\n","comments":"","outputs":1,"x":448.3333206176758,"y":1828.2468166351318,"z":"ad46ffb1.59044","wires":[["f0ddd506.47fa28"]]},{"id":"f0ddd506.47fa28","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":674.9999415079756,"y":1826.5800231297812,"z":"ad46ffb1.59044","wires":[["fceefe81.bdc8e"]]},{"id":"fceefe81.bdc8e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":833.3332544962568,"y":1826.5800231297812,"z":"ad46ffb1.59044","wires":[["df6b4834.202878","63c03f51.fc305"]]},{"id":"df6b4834.202878","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to retrieve source tenant-id from AAI\" />\n","comments":"","outputs":1,"x":1033.9047152201338,"y":1826.2943442662558,"z":"ad46ffb1.59044","wires":[[]]},{"id":"3b89a5ce.4bc88a","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":831.1904144287109,"y":2370.7468860149384,"z":"ad46ffb1.59044","wires":[["36218a22.f604d6"]]},{"id":"fc45d5c3.cb8368","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$tmp.configuration-sub-type`'>\n","comments":"","outputs":1,"x":2063.4996643066406,"y":5888.7467267513275,"z":"ad46ffb1.59044","wires":[["4b208ae1.40adb4"]]},{"id":"4b208ae1.40adb4","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":2261.4996643066406,"y":5888.7467267513275,"z":"ad46ffb1.59044","wires":[["a420df.c0984f2"]]},{"id":"c0c9e1a0.c1dd8","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$tmp.configuration-sub-type`'>\n","comments":"","outputs":1,"x":918.5715026855469,"y":4324.318286657333,"z":"ad46ffb1.59044","wires":[["336ce22b.42a1ae","ee09a4eb.1fe158"]]},{"id":"336ce22b.42a1ae","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":1134.4285507202148,"y":4243.365930318832,"z":"ad46ffb1.59044","wires":[["18535f5.1200da1"]]},{"id":"ee09a4eb.1fe158","type":"outcome","name":"pprobe","xml":"<outcome value='pprobe'>\n","comments":"","outputs":1,"x":1135.0952835083008,"y":4395.984510183334,"z":"ad46ffb1.59044","wires":[["6c233b94.0bcdc4"]]},{"id":"c3f6701a.7032f","type":"save","name":"save pprobe logical-link relationships","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"logical-link:relationship-list\"\n   key=\"logical-link.link-name = $tmp.link-name\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"l-interface\" />\n    <parameter name=\"relationship-list.relationship[0].relationship-label\" value=\"org.onap.relationships.inventory.Source\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/cloud-infrastructure/cloud-regions/cloud-region/'\n        + $tmp.cloud-owner + '/' + $tmp.cloud-region-id + '/tenants/tenant/'\n        + $tmp.tenant-id + '/vservers/vserver/' \n        + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id\n        + '/l-interfaces/l-interface/'\n        + $tmp.encoded-source-port-name`\" />\n    <parameter name=\"relationship-list.relationship[1].related-to\" value=\"l-interface\" />\n    <parameter name=\"relationship-list.relationship[1].relationship-label\" value=\"org.onap.relationships.inventory.Destination\" />\n    <parameter name=\"relationship-list.relationship[1].related-link\"\n      value=\"`'/aai/v$/network/pnfs/pnf/'\n        + $tmp.dest-pnf-name + '/p-interfaces/p-interface/'\n        + $tmp.encoded-dest-p-interface + '/l-interfaces/l-interface/' \n        + $tmp.encoded-dest-port-name`\" />\n","comments":"","outputs":1,"x":1626.9047546386719,"y":4424.556483030319,"z":"ad46ffb1.59044","wires":[["aca151d2.78cad","dbe217c5.2519a8"]]},{"id":"fb861ac2.aeb8b8","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$tmp.configuration-sub-type`'>\n","comments":"","outputs":1,"x":471.6667175292969,"y":3834.0801408290863,"z":"ad46ffb1.59044","wires":[["ea2b6c9c.21d7f"]]},{"id":"ea2b6c9c.21d7f","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":669.6667175292969,"y":3834.0801408290863,"z":"ad46ffb1.59044","wires":[["6c7aeb00.1010d4"]]},{"id":"6c7aeb00.1010d4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":816.6666412353516,"y":3834.080167531967,"z":"ad46ffb1.59044","wires":[["6aa8217a.be7a8","c31b80a8.b4288","cf530372.3cdf2"]]},{"id":"497d568b.0f1998","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$tmp.configuration-sub-type`'>\n","comments":"","outputs":1,"x":463.1903839111328,"y":4800.794217824936,"z":"ad46ffb1.59044","wires":[["650f3d05.c7b2c4"]]},{"id":"650f3d05.c7b2c4","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":661.1903839111328,"y":4800.794217824936,"z":"ad46ffb1.59044","wires":[["76baa0fa.2967c"]]},{"id":"1bc76bf3.eeff44","type":"execute","name":"encode spaces in src-nfc-naming-code","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"replace\">\n\t<parameter name=\"source\" value=\"`$tmp.src-nfc-naming-code`\" />\n\t<parameter name=\"target\" value=\" \" />\n\t<parameter name=\"replacement\" value=\"%20\" />\n\t<parameter name=\"outputPath\" value=\"tmp.encoded-src-nfc-naming-code\" />\n","comments":"","outputs":1,"x":502.85723876953125,"y":515.9523913860321,"z":"ad46ffb1.59044","wires":[[]]},{"id":"34f89d01.613262","type":"execute","name":"encode spaces in dest-nfc-naming-code","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"replace\">\n\t<parameter name=\"source\" value=\"`$tmp.dest-nfc-naming-code`\" />\n\t<parameter name=\"target\" value=\" \" />\n\t<parameter name=\"replacement\" value=\"%20\" />\n\t<parameter name=\"outputPath\" value=\"tmp.encoded-dest-nfc-naming-code\" />\n","comments":"","outputs":1,"x":507.85709381103516,"y":564.2857167720795,"z":"ad46ffb1.59044","wires":[[]]},{"id":"a44e08eb.db9948","type":"switchNode","name":"switch source-to-dest-map_length","xml":"<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`'>\n","comments":"","outputs":1,"x":482.8571319580078,"y":3722.6186966896057,"z":"ad46ffb1.59044","wires":[["f7202318.a956f","868aa975.671c78"]]},{"id":"f7202318.a956f","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":707.8571395874023,"y":3699.285307407379,"z":"ad46ffb1.59044","wires":[["e98cc52b.20adf8"]]},{"id":"868aa975.671c78","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":706.1904525756836,"y":3739.285307407379,"z":"ad46ffb1.59044","wires":[["e98cc52b.20adf8"]]},{"id":"e98cc52b.20adf8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":859.5237655639648,"y":3720.952055454254,"z":"ad46ffb1.59044","wires":[["51295bdc.47f6c4","63c03f51.fc305"]]},{"id":"51295bdc.47f6c4","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"No usable source l-interfaces found in AAI data\" />\n","comments":"","outputs":1,"x":1056.1903915405273,"y":3719.285307407379,"z":"ad46ffb1.59044","wires":[[]]},{"id":"47af693f.8cd828","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1234.2856826782227,"y":4553.571910619736,"z":"ad46ffb1.59044","wires":[["bbdabb63.782468"]]},{"id":"4573744a.834e0c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1392.999870300293,"y":1951.2380549907684,"z":"ad46ffb1.59044","wires":[["b375f194.02676"]]},{"id":"b375f194.02676","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1565.5713195800781,"y":1952.1903321743011,"z":"ad46ffb1.59044","wires":[["437bd1a1.f2c9d","63c03f51.fc305"]]},{"id":"437bd1a1.f2c9d","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to AAI custom query: cloud-region-fromVnf, for destination vnf\" />\n","comments":"","outputs":1,"x":1778.5713500976562,"y":1952.190439939499,"z":"ad46ffb1.59044","wires":[[]]},{"id":"e6609e5f.34d39","type":"save","name":"custom query: get cloud region from dest vnf","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource&amp;nodesOnly=true'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.AnAI-data.dest-vnf\">\n<parameter name=\"start[0]\" value=\"`'/network/generic-vnfs/generic-vnf/' + $tmp.dest-vnf-id `\" />\n<parameter name=\"start_length\" value=\"1\" />\n<parameter name=\"query\" value=\"query/cloud-region-fromVnf\" /> \n","comments":"","outputs":1,"x":1138.428466796875,"y":1977.523785352707,"z":"ad46ffb1.59044","wires":[["4573744a.834e0c","154faeaa.368d41"]]},{"id":"154faeaa.368d41","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1406.7141647338867,"y":2002.095110654831,"z":"ad46ffb1.59044","wires":[["a89eaf11.7e0b1"]]},{"id":"a89eaf11.7e0b1","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1570.9998741149902,"y":2000.6665923595428,"z":"ad46ffb1.59044","wires":[["eb95e0ab.146cb","63c03f51.fc305"]]},{"id":"eb95e0ab.146cb","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"No cloud region returned from AAI: cloud-region-fromVnf, for destination vnf\" />\n","comments":"","outputs":1,"x":1771.5713348388672,"y":2000.3809134960175,"z":"ad46ffb1.59044","wires":[[]]},{"id":"fa51468e.921388","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$tmp.configuration-sub-type`'>\n","comments":"","outputs":1,"x":477.28565979003906,"y":2119.809517621994,"z":"ad46ffb1.59044","wires":[["ed9d1841.db2a08"]]},{"id":"ed9d1841.db2a08","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":676.9522895812988,"y":2119.1428105831146,"z":"ad46ffb1.59044","wires":[["ff18461b.76ee58"]]},{"id":"ff18461b.76ee58","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":828.7142486572266,"y":2118.3809287548065,"z":"ad46ffb1.59044","wires":[["e6609e5f.34d39","faf4a613.ee5ff8","f6377325.42056","cc1ea987.81d3e8"]]},{"id":"faf4a613.ee5ff8","type":"for","name":"for each returned result","xml":"<for index='result-idx' start='0' end='`$tmp.AnAI-data.dest-vnf.results_length`' >\n","comments":"","outputs":1,"x":1065.8570861816406,"y":2109.8095004558563,"z":"ad46ffb1.59044","wires":[["a9bff298.d99cf","38457a45.bbc4b6"]]},{"id":"a9bff298.d99cf","type":"switchNode","name":"switch tenant-name","xml":"<switch test='`$tmp.AnAI-data.dest-vnf.results[$result-idx].tenant.tenant-name`'>\n","comments":"","outputs":1,"x":1299.1903610229492,"y":2062.6665506362915,"z":"ad46ffb1.59044","wires":[["4ad4e6b8.e0e368","e71b1e71.f9183"]]},{"id":"4ad4e6b8.e0e368","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1485.8569679260254,"y":2044.3332135677338,"z":"ad46ffb1.59044","wires":[["9f17745d.6422c8"]]},{"id":"e71b1e71.f9183","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1484.1902389526367,"y":2084.0952603816986,"z":"ad46ffb1.59044","wires":[["e0c49a34.d24088"]]},{"id":"9f17745d.6422c8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1627.5236415863037,"y":2044.3332545757294,"z":"ad46ffb1.59044","wires":[[]]},{"id":"e0c49a34.d24088","type":"set","name":"set tmp.dest-tenant from tenant-name","xml":"<set>\n<parameter name='tmp.dest-tenant' value='`$tmp.AnAI-data.dest-vnf.results[$result-idx].tenant.tenant-name`' />\n","comments":"","x":1723.3808517456055,"y":2082.66651058197,"z":"ad46ffb1.59044","wires":[]},{"id":"f6377325.42056","type":"switchNode","name":"switch tmp.dest-tenant","xml":"<switch test='`$tmp.dest-tenant`'>\n","comments":"","outputs":1,"x":1059.8571166992188,"y":2221.238068342209,"z":"ad46ffb1.59044","wires":[["18391ea.86616e1"]]},{"id":"18391ea.86616e1","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1259.4284744262695,"y":2220.3329684734344,"z":"ad46ffb1.59044","wires":[["76e5f52c.7c1e9c"]]},{"id":"76e5f52c.7c1e9c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1412.0475234985352,"y":2219.904328107834,"z":"ad46ffb1.59044","wires":[["3f92a68b.6bc4fa","63c03f51.fc305"]]},{"id":"3f92a68b.6bc4fa","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to retrieve destination tenant from AAI\" />\n","comments":"","outputs":1,"x":1599.7618713378906,"y":2219.0472552776337,"z":"ad46ffb1.59044","wires":[[]]},{"id":"9fdf6659.2008e8","type":"set","name":"set tmp.src-network-name and contrail fqdn","xml":"<set>\n<parameter name='tmp.src-network-name' value='`$tmp.AnAI-data.src-network.results[$src-nw-idx].l3-network.network-name`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-network-fqdn'\n  value='`$tmp.AnAI-data.src-network.results[$src-nw-idx].l3-network.contrail-network-fqdn`' />\n","comments":"","x":1516.1903686523438,"y":3162.6187646389008,"z":"ad46ffb1.59044","wires":[]},{"id":"9d76aa87.81e4e8","type":"set","name":"set tmp.dest-network-name and contrail fqdn","xml":"<set>\n<parameter name='tmp.dest-network-name' value='`$tmp.AnAI-data.dest-network.results[$dest-nw-idx].l3-network.network-name`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn'\n  value='`$tmp.AnAI-data.dest-network.results[$dest-nw-idx].l3-network.contrail-network-fqdn`' />\n","comments":"","x":2094.5237197875977,"y":3309.6187703609467,"z":"ad46ffb1.59044","wires":[]},{"id":"dbe217c5.2519a8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1909.047695159912,"y":4424.523663282394,"z":"ad46ffb1.59044","wires":[["81fec963.f0c378"]]},{"id":"dbd95e4a.02811","type":"execute","name":"urlEncode tmp.encoded-link-name","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"urlEncode\">\n\t<parameter name=\"source\" value=\"`$tmp.link-name`\" />\n\t<parameter name=\"outputPath\" value=\"tmp.encoded-link-name\" />\n","comments":"","outputs":1,"x":940.2381286621094,"y":4094.9998967647552,"z":"ad46ffb1.59044","wires":[[]]},{"id":"18535f5.1200da1","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1284.5238037109375,"y":4243.571359395981,"z":"ad46ffb1.59044","wires":[["c7ea99b1.29bf58","1ad1135d.a56a9d","8753137e.a72be"]]},{"id":"6c233b94.0bcdc4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1284.523754119873,"y":4396.428431272507,"z":"ad46ffb1.59044","wires":[["c7ea99b1.29bf58","dc67e39d.28897","c3f6701a.7032f","1ad1135d.a56a9d"]]},{"id":"1ad1135d.a56a9d","type":"execute","name":"urlEncode tmp.encoded-dest-port-name","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"urlEncode\">\n\t<parameter name=\"source\" value=\"`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`\" />\n\t<parameter name=\"outputPath\" value=\"tmp.encoded-dest-port-name\" />\n","comments":"","outputs":1,"x":1633.0952606201172,"y":4276.428080320358,"z":"ad46ffb1.59044","wires":[[]]},{"id":"c7ea99b1.29bf58","type":"execute","name":"urlEncode tmp.encoded-source-port-name","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"urlEncode\">\n\t<parameter name=\"source\" value=\"`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`\" />\n\t<parameter name=\"outputPath\" value=\"tmp.encoded-source-port-name\" />\n","comments":"","outputs":1,"x":1638.8096389770508,"y":4226.428150892258,"z":"ad46ffb1.59044","wires":[[]]},{"id":"dc67e39d.28897","type":"execute","name":"urlEncode tmp.encoded-dest-p-interface","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"urlEncode\">\n\t<parameter name=\"source\" value=\"`$tmp.dest-p-interface`\" />\n\t<parameter name=\"outputPath\" value=\"tmp.encoded-dest-p-interface\" />\n","comments":"","outputs":1,"x":1633.0952377319336,"y":4324.999651670456,"z":"ad46ffb1.59044","wires":[[]]},{"id":"38457a45.bbc4b6","type":"switchNode","name":"switch tenant-id","xml":"<switch test='`$tmp.AnAI-data.dest-vnf.results[$result-idx].tenant.tenant-id`'>\n","comments":"","outputs":1,"x":1287.3809661865234,"y":2140.7142856121063,"z":"ad46ffb1.59044","wires":[["8241f9f.db88c08","b6dabfd4.14d6f"]]},{"id":"8241f9f.db88c08","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1487.3808708190918,"y":2122.3809106349945,"z":"ad46ffb1.59044","wires":[["3d4e5fe7.561ce"]]},{"id":"b6dabfd4.14d6f","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1485.7141418457031,"y":2162.1429574489594,"z":"ad46ffb1.59044","wires":[["d1261b6b.8c1048"]]},{"id":"3d4e5fe7.561ce","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1629.0475444793701,"y":2122.38095164299,"z":"ad46ffb1.59044","wires":[[]]},{"id":"d1261b6b.8c1048","type":"set","name":"set tmp.dest-tenant-id from tenant-id","xml":"<set>\n<parameter name='tmp.dest-tenant-id' value='`$tmp.AnAI-data.dest-vnf.results[$result-idx].tenant.tenant-id`' />\n","comments":"","x":1721.9047088623047,"y":2162.3809468746185,"z":"ad46ffb1.59044","wires":[]},{"id":"cc1ea987.81d3e8","type":"switchNode","name":"switch tmp.dest-tenant-id","xml":"<switch test='`$tmp.dest-tenant-id`'>\n","comments":"","outputs":1,"x":1065.952377319336,"y":2267.8571078777313,"z":"ad46ffb1.59044","wires":[["8bb3d822.e12b08"]]},{"id":"8bb3d822.e12b08","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1259.5237350463867,"y":2266.952008008957,"z":"ad46ffb1.59044","wires":[["1a002ab2.dc1e45"]]},{"id":"1a002ab2.dc1e45","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1412.1427841186523,"y":2266.5233676433563,"z":"ad46ffb1.59044","wires":[["f1e988bd.457508"]]},{"id":"f1e988bd.457508","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to retrieve destination tenant-id from AAI\" />\n","comments":"","outputs":1,"x":1599.8571319580078,"y":2265.666294813156,"z":"ad46ffb1.59044","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-sync.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-sync.json
new file mode 100755
index 0000000..905f33d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-sync.json
@@ -0,0 +1 @@
+[{"id":"d4981d0d.a6054","type":"dgstart","name":"DGSTART","outputs":1,"x":99.99999237060547,"y":89.080322265625,"z":"28d78a5d.e3aa46","wires":[["c6e9bc29.d4914"]]},{"id":"c6e9bc29.d4914","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":213.6190185546875,"y":129.3184356689453,"z":"28d78a5d.e3aa46","wires":[["4a5a9c6b.fcbe14"]]},{"id":"4a5a9c6b.fcbe14","type":"method","name":"method port-mirror-topology-operation-assign-sync","xml":"<method rpc='port-mirror-topology-operation-assign-sync' mode='sync'>\n","comments":"","outputs":1,"x":227.42861938476562,"y":169.080322265625,"z":"28d78a5d.e3aa46","wires":[["2b414eef.f2d3e2"]]},{"id":"f0e95717.55e158","type":"comment","name":"port-mirror-topology-operation-assign-sync","info":"","comments":"","x":494.3448486328125,"y":36.66666603088379,"z":"28d78a5d.e3aa46","wires":[]},{"id":"2b414eef.f2d3e2","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":156.6666488647461,"y":590.0326976776123,"z":"28d78a5d.e3aa46","wires":[["e97a4616.1a2ef8","8e922c1f.6598e","b93a573d.91e578","c18afb65.324068","6eddde34.9dcbb","22301bc.8523de4","712d0a9f.ac38b4"]]},{"id":"8e922c1f.6598e","type":"get-resource","name":"get-resource PORT_MIRROR_CAPABILITY","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='select role,nfc_naming_code,pps_capacity\n    from PORT_MIRROR_CAPABILITY cap, PORT_MIRROR_CONFIGURATION conf, SERVICE_PROXY sp\n    where cap.port_mirror_capability_name=conf.port_mirror_capability_name\n     and cap.port_mirror_service_uuid=conf.port_mirror_service_uuid\n     and cap.service_proxy_name=conf.service_proxy_name\n     and cap.service_proxy_name=sp.service_proxy_name\n     and cap.port_mirror_service_uuid=sp.parent_service_uuid\n     and conf.customization_uuid = $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid\n     and conf.port_mirror_service_uuid = $service-data.service-information.onap-model-information.model-uuid\n    order by role'\n  pfx='db.cap[]'>\n\n","comments":"","outputs":1,"x":512.6190032958984,"y":321.69937896728516,"z":"28d78a5d.e3aa46","wires":[["faec1832.428eb8","86f1b9bb.986ec8"]]},{"id":"97d0df89.5c5ac","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=\"`'Unable to find PORT_MIRROR_CONFIGURATION entry for ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`\" />\n","comments":"","x":936.1904029846191,"y":340.84213638305664,"z":"28d78a5d.e3aa46","wires":[]},{"id":"faec1832.428eb8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":766.9761638641357,"y":297.3659191131592,"z":"28d78a5d.e3aa46","wires":[["675d5840.c6f238"]]},{"id":"86f1b9bb.986ec8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":775.5475997924805,"y":340.65163230895996,"z":"28d78a5d.e3aa46","wires":[["97d0df89.5c5ac"]]},{"id":"675d5840.c6f238","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 reading PORT_MIRROR_CONFIGURATION and PORT_MIRROR_CAPABILITY tables\" />\n","comments":"","x":938.4047431945801,"y":297.36595344543457,"z":"28d78a5d.e3aa46","wires":[]},{"id":"e97a4616.1a2ef8","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n<parameter name='error-code' value='200' />\n<parameter name='ack-final' value='N' />","comments":"","x":407.09517669677734,"y":926.222993850708,"z":"28d78a5d.e3aa46","wires":[]},{"id":"c3686485.05b8a8","type":"switchNode","name":"switch db.cap_length == 2","xml":"<switch test='`$db.cap_length == 2`'>\n","comments":"","outputs":1,"x":1117.618911743164,"y":394.080379486084,"z":"28d78a5d.e3aa46","wires":[["b55ad9a0.811a08"]]},{"id":"4169e23c.9e0dbc","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=\"`'PORT_MIRROR_CONFIGURATION does not contain exactly 2 entries for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`\" />\n","comments":"","x":1527.618902206421,"y":393.41372871398926,"z":"28d78a5d.e3aa46","wires":[]},{"id":"b55ad9a0.811a08","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1356.1903400421143,"y":393.84223556518555,"z":"28d78a5d.e3aa46","wires":[["4169e23c.9e0dbc"]]},{"id":"2077d65b.fd2b8a","type":"switchNode","name":"switch db.cap[0].role == collector","xml":"<switch test=\"`$db.cap[0].role == 'collector'`\">\n","comments":"","outputs":1,"x":1136.1903381347656,"y":442.65181159973145,"z":"28d78a5d.e3aa46","wires":[["4f6a0ac5.2a7bd4"]]},{"id":"4f6a0ac5.2a7bd4","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1354.7618255615234,"y":440.9851703643799,"z":"28d78a5d.e3aa46","wires":[["e9504b90.1d6868"]]},{"id":"e9504b90.1d6868","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=\"`'No collector capability_role found for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`\" />\n","comments":"","x":1527.618902206421,"y":440.98517417907715,"z":"28d78a5d.e3aa46","wires":[]},{"id":"3fcce2c4.a741de","type":"switchNode","name":"switch db.cap[1].role == source","xml":"<switch test=\"`$db.cap[1].role == 'source'`\">\n","comments":"","outputs":1,"x":1127.6189498901367,"y":491.2232313156128,"z":"28d78a5d.e3aa46","wires":[["25db0d53.1bf8b2"]]},{"id":"25db0d53.1bf8b2","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1354.761754989624,"y":489.55668449401855,"z":"28d78a5d.e3aa46","wires":[["24be1582.7b80ea"]]},{"id":"24be1582.7b80ea","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=\"`'No source capability_role found for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`\" />\n","comments":"","x":1526.1903324127197,"y":489.55660247802734,"z":"28d78a5d.e3aa46","wires":[]},{"id":"b93a573d.91e578","type":"set","name":"set tmp.pm.configuration-id","xml":"<set>\n<parameter name='tmp.pm.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />\n\n","comments":"","x":445.1904754638672,"y":681.4612274169922,"z":"28d78a5d.e3aa46","wires":[]},{"id":"c18afb65.324068","type":"execute","name":"execute readProperties","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":433.3333206176758,"y":730.0326557159424,"z":"28d78a5d.e3aa46","wires":[[]]},{"id":"6eddde34.9dcbb","type":"execute","name":"generate port-mirror-configuration url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.pm-configuration`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.pmc-url\"/>\n    <parameter name=\"target\" value=\"{configuration-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.pm.configuration-id`\"/>\n","comments":"","outputs":1,"x":476.1904830932617,"y":777.1755027770996,"z":"28d78a5d.e3aa46","wires":[[]]},{"id":"22301bc.8523de4","type":"execute","name":"execute RestApiCallNode - get port-mirror-configuration","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-pmc\" />\n\n","comments":"","outputs":1,"x":534.7619247436523,"y":845.7470531463623,"z":"28d78a5d.e3aa46","wires":[["94cba7d6.3f7d18","49892716.4419a8"]]},{"id":"94cba7d6.3f7d18","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":840.0578842163086,"y":823.697735786438,"z":"28d78a5d.e3aa46","wires":[["77af0812.11c6a8"]]},{"id":"77af0812.11c6a8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Port mirror configuration ' + $tmp.pm.configuration-id + ' already exists'`\" />\n","comments":"","x":999.0475578308105,"y":822.8898220062256,"z":"28d78a5d.e3aa46","wires":[]},{"id":"49892716.4419a8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":836.1904678344727,"y":865.7469863891602,"z":"28d78a5d.e3aa46","wires":[["2df08cc1.2a79c4"]]},{"id":"2df08cc1.2a79c4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":981.9047431945801,"y":865.7469387054443,"z":"28d78a5d.e3aa46","wires":[[]]},{"id":"712d0a9f.ac38b4","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`'>\n","comments":"","outputs":1,"x":458.09519958496094,"y":504.3184242248535,"z":"28d78a5d.e3aa46","wires":[["ac124ecb.f843c","1484ba45.65af16"]]},{"id":"ac124ecb.f843c","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":699.7618789672852,"y":442.651704788208,"z":"28d78a5d.e3aa46","wires":[["f8f05771.ef2d68"]]},{"id":"1484ba45.65af16","type":"outcome","name":"pprobe","xml":"<outcome value='pprobe'>\n","comments":"","outputs":1,"x":694.761791229248,"y":574.3183403015137,"z":"28d78a5d.e3aa46","wires":[["c6d75ff9.ed799"]]},{"id":"f8f05771.ef2d68","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":884.7618255615234,"y":442.6517143249512,"z":"28d78a5d.e3aa46","wires":[["c3686485.05b8a8","2077d65b.fd2b8a","3fcce2c4.a741de"]]},{"id":"693d48ed.60ed18","type":"switchNode","name":"switch db.cap_length == 1","xml":"<switch test='`$db.cap_length == 1`'>\n","comments":"","outputs":1,"x":1114.7618103027344,"y":545.9850616455078,"z":"28d78a5d.e3aa46","wires":[["e6747547.7c68a8"]]},{"id":"fb6bfd1e.507c7","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=\"`'PORT_MIRROR_CONFIGURATION does not contain exactly 1 entry for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`\" />\n","comments":"","x":1524.7618007659912,"y":545.3184108734131,"z":"28d78a5d.e3aa46","wires":[]},{"id":"e6747547.7c68a8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1353.3332386016846,"y":545.7469177246094,"z":"28d78a5d.e3aa46","wires":[["fb6bfd1e.507c7"]]},{"id":"47f223e.0467cdc","type":"switchNode","name":"switch db.cap[0].role == source","xml":"<switch test=\"`$db.cap[0].role == 'source'`\">\n","comments":"","outputs":1,"x":1128.09521484375,"y":599.7945365905762,"z":"28d78a5d.e3aa46","wires":[["26b4180c.cd13a8"]]},{"id":"26b4180c.cd13a8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1355.2380199432373,"y":598.1279897689819,"z":"28d78a5d.e3aa46","wires":[["f2d50dd4.2e465"]]},{"id":"f2d50dd4.2e465","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=\"`'No source capability_role found for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`\" />\n","comments":"","x":1526.666597366333,"y":598.1279077529907,"z":"28d78a5d.e3aa46","wires":[]},{"id":"c6d75ff9.ed799","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":884.7618865966797,"y":572.6517314910889,"z":"28d78a5d.e3aa46","wires":[["693d48ed.60ed18","47f223e.0467cdc"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-async.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-async.json
new file mode 100644
index 0000000..7baac07
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-async.json
@@ -0,0 +1,540 @@
+[
+    {
+        "id": "a92b87d1.18ec78",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 101.66666412353516,
+        "y": 86.66666412353516,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "b4d6454f.2dd218"
+            ]
+        ]
+    },
+    {
+        "id": "b4d6454f.2dd218",
+        "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.2856903076172,
+        "y": 126.90477752685547,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "ae4c47c5.756b08"
+            ]
+        ]
+    },
+    {
+        "id": "ae4c47c5.756b08",
+        "type": "method",
+        "name": "method port-mirror-topology-operation-async",
+        "xml": "<method rpc='port-mirror-topology-operation-async' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 210.0952911376953,
+        "y": 166.66666412353516,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "9ce29364.07fb2"
+            ]
+        ]
+    },
+    {
+        "id": "4790a30.c63705c",
+        "type": "comment",
+        "name": "port-mirror-topology-operation-async",
+        "info": "",
+        "comments": "",
+        "x": 496.0115203857422,
+        "y": 34.253007888793945,
+        "z": "998e256c.383a68",
+        "wires": []
+    },
+    {
+        "id": "ebececd6.1026b",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n<parameter name='ack-final' value='Y' />\n",
+        "comments": "",
+        "x": 437.14292907714844,
+        "y": 719.7619762420654,
+        "z": "998e256c.383a68",
+        "wires": []
+    },
+    {
+        "id": "9ce29364.07fb2",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 210.4761962890625,
+        "y": 460.47620010375977,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "ebececd6.1026b",
+                "54acb947.6d1b38",
+                "bfee9804.6c0148"
+            ]
+        ]
+    },
+    {
+        "id": "54acb947.6d1b38",
+        "type": "switchNode",
+        "name": "switch svc-action",
+        "xml": "<switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 441.6072006225586,
+        "y": 554.1666126251221,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "9f0b8dfc.816dd",
+                "82c23d93.b7d7",
+                "e505f3f7.aa204"
+            ]
+        ]
+    },
+    {
+        "id": "9f0b8dfc.816dd",
+        "type": "outcome",
+        "name": "assign",
+        "xml": "<outcome value='assign'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 668.5120277404785,
+        "y": 458.27380752563477,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "2ad1988f.1143d8"
+            ]
+        ]
+    },
+    {
+        "id": "82c23d93.b7d7",
+        "type": "outcome",
+        "name": "activate",
+        "xml": "<outcome value='activate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 670.8929710388184,
+        "y": 554.1071853637695,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "466d0a0d.e04164"
+            ]
+        ]
+    },
+    {
+        "id": "e505f3f7.aa204",
+        "type": "outcome",
+        "name": "deactivate",
+        "xml": "<outcome value='deactivate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 681.0119705200195,
+        "y": 662.38099193573,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "96380117.be36b"
+            ]
+        ]
+    },
+    {
+        "id": "2ad1988f.1143d8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 830.5952682495117,
+        "y": 456.60713958740234,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "177e7ab7.0ce115"
+            ]
+        ]
+    },
+    {
+        "id": "466d0a0d.e04164",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 832.1429786682129,
+        "y": 554.1071720123291,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "7f516513.455d1c"
+            ]
+        ]
+    },
+    {
+        "id": "96380117.be36b",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 831.8452835083008,
+        "y": 661.1309719085693,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "13957fa3.88e25"
+            ]
+        ]
+    },
+    {
+        "id": "177e7ab7.0ce115",
+        "type": "call",
+        "name": "call port-mirror-topology-operation-assign-async",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-assign-async' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1120.464241027832,
+        "y": 457.59524154663086,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "1a4cc975.1b2247",
+                "b35c3cc9.bb03f"
+            ]
+        ]
+    },
+    {
+        "id": "1a4cc975.1b2247",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1399.464298248291,
+        "y": 431.16667556762695,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "16832c61.62f464"
+            ]
+        ]
+    },
+    {
+        "id": "16832c61.62f464",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\n",
+        "comments": "",
+        "x": 1569.4642753601074,
+        "y": 430.2738227844238,
+        "z": "998e256c.383a68",
+        "wires": []
+    },
+    {
+        "id": "7f516513.455d1c",
+        "type": "call",
+        "name": "call port-mirror-topology-operation-activate-async",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-activate-async' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1123.0356483459473,
+        "y": 552.4999494552612,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "7f417dcf.734f54",
+                "fca0cc7f.bd36a"
+            ]
+        ]
+    },
+    {
+        "id": "7f417dcf.734f54",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1398.0357055664062,
+        "y": 532.7380599975586,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "a3e8a6c3.07ff68"
+            ]
+        ]
+    },
+    {
+        "id": "a3e8a6c3.07ff68",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\n",
+        "comments": "",
+        "x": 1571.3688049316406,
+        "y": 533.5118827819824,
+        "z": "998e256c.383a68",
+        "wires": []
+    },
+    {
+        "id": "13957fa3.88e25",
+        "type": "call",
+        "name": "call port-mirror-topology-operation-deactivate-async",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-deactivate-async' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1118.2737312316895,
+        "y": 659.8809108734131,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "7add57e7.9fb0f8",
+                "4139181f.e48488"
+            ]
+        ]
+    },
+    {
+        "id": "7add57e7.9fb0f8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1396.6070365905762,
+        "y": 633.4523601531982,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "8660da39.e0eb58"
+            ]
+        ]
+    },
+    {
+        "id": "8660da39.e0eb58",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\n",
+        "comments": "",
+        "x": 1566.6070137023926,
+        "y": 632.5595073699951,
+        "z": "998e256c.383a68",
+        "wires": []
+    },
+    {
+        "id": "b35c3cc9.bb03f",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1407.0833587646484,
+        "y": 482.4999809265137,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "f1dd6375.9f61a"
+            ]
+        ]
+    },
+    {
+        "id": "f1dd6375.9f61a",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Cannot find assign async DG\" />\n<parameter name='ack-final' value='Y' />\n",
+        "comments": "",
+        "x": 1568.749885559082,
+        "y": 480.8333110809326,
+        "z": "998e256c.383a68",
+        "wires": []
+    },
+    {
+        "id": "fca0cc7f.bd36a",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1403.7499809265137,
+        "y": 582.4999647140503,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "27ae87c4.a7ddf8"
+            ]
+        ]
+    },
+    {
+        "id": "27ae87c4.a7ddf8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Cannot find activate async DG\" />\n<parameter name='ack-final' value='Y' />\n",
+        "comments": "",
+        "x": 1565.4165077209473,
+        "y": 580.8332948684692,
+        "z": "998e256c.383a68",
+        "wires": []
+    },
+    {
+        "id": "4139181f.e48488",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1407.0833206176758,
+        "y": 682.4999656677246,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "e88f3c47.44e4a"
+            ]
+        ]
+    },
+    {
+        "id": "e88f3c47.44e4a",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Cannot find deactivate async DG\" />\n<parameter name='ack-final' value='Y' />\n",
+        "comments": "",
+        "x": 1568.7498474121094,
+        "y": 680.8332958221436,
+        "z": "998e256c.383a68",
+        "wires": []
+    },
+    {
+        "id": "128027e6.192c18",
+        "type": "outcome",
+        "name": "VPROBE",
+        "xml": "<outcome value='VPROBE'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 698.6666946411133,
+        "y": 322.6190576553345,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "cd4c0b74.504af8"
+            ]
+        ]
+    },
+    {
+        "id": "1eb71011.f8c4a",
+        "type": "outcome",
+        "name": "vprobe",
+        "xml": "<outcome value='vprobe'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 691.9999847412109,
+        "y": 275.95241832733154,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "cd4c0b74.504af8"
+            ]
+        ]
+    },
+    {
+        "id": "a5cbc01.2308c4",
+        "type": "outcome",
+        "name": "PPROBE",
+        "xml": "<outcome value='PPROBE'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 698.3333168029785,
+        "y": 227.61908435821533,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "a2746b29.559da8"
+            ]
+        ]
+    },
+    {
+        "id": "2aa25b78.6a9eb4",
+        "type": "outcome",
+        "name": "pprobe",
+        "xml": "<outcome value='pprobe'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 691.6666488647461,
+        "y": 182.61909198760986,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "a2746b29.559da8"
+            ]
+        ]
+    },
+    {
+        "id": "a2746b29.559da8",
+        "type": "set",
+        "name": "set to pprobe",
+        "xml": "<set>\n<parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='pprobe' />\n",
+        "comments": "",
+        "x": 884.9999542236328,
+        "y": 197.6190938949585,
+        "z": "998e256c.383a68",
+        "wires": []
+    },
+    {
+        "id": "d46212f.e1543f",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 692.0000038146973,
+        "y": 369.28574657440186,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "cd4c0b74.504af8"
+            ]
+        ]
+    },
+    {
+        "id": "cd4c0b74.504af8",
+        "type": "set",
+        "name": "set to vprobe",
+        "xml": "<set>\n<parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='vprobe' />\n",
+        "comments": "",
+        "x": 884.9999313354492,
+        "y": 310.952431678772,
+        "z": "998e256c.383a68",
+        "wires": []
+    },
+    {
+        "id": "bfee9804.6c0148",
+        "type": "switchNode",
+        "name": "switch configuration-sub-type",
+        "xml": "<switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 478.3333206176758,
+        "y": 275.95237731933594,
+        "z": "998e256c.383a68",
+        "wires": [
+            [
+                "2aa25b78.6a9eb4",
+                "a5cbc01.2308c4",
+                "1eb71011.f8c4a",
+                "128027e6.192c18",
+                "d46212f.e1543f"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-create-vnfcs.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-create-vnfcs.json
new file mode 100644
index 0000000..5947286
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-create-vnfcs.json
@@ -0,0 +1,1807 @@
+[
+    {
+        "id": "5824ca69.20e9b4",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 147.14285278320312,
+        "y": 91.42857360839844,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "2cdc778b.c440a8"
+            ]
+        ]
+    },
+    {
+        "id": "2cdc778b.c440a8",
+        "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.09523010253906,
+        "y": 131.66669464111328,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "46a31529.575a3c"
+            ]
+        ]
+    },
+    {
+        "id": "46a31529.575a3c",
+        "type": "method",
+        "name": "method port-mirror-topology-operation-create-vnfc",
+        "xml": "<method rpc='port-mirror-topology-operation-create-vnfcs' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 271.4286346435547,
+        "y": 172.85714149475098,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "8349530a.566aa"
+            ]
+        ]
+    },
+    {
+        "id": "43c833c6.cbafdc",
+        "type": "comment",
+        "name": "port-mirror-topology-operation-create-vnfcs",
+        "info": "",
+        "comments": "",
+        "x": 541.4877090454102,
+        "y": 39.01491737365723,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "3348c9a8.a257a6",
+        "type": "set",
+        "name": "set vnfc data",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnfc-key'\n  value='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.vnfc-name`' />\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnfc-name'\n  value='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.vnfc-name`' />\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnf-id'\n  value='`$tmp.src-vnf-id`' />\n",
+        "comments": "",
+        "x": 1304.6427917480469,
+        "y": 147.76191902160645,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "82331627.da0c38",
+        "type": "comment",
+        "name": "look through relationships looking for the related vserver",
+        "info": "",
+        "comments": "",
+        "x": 1433.2144088745117,
+        "y": 192.04788208007812,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "606fe9e4.7d4348",
+        "type": "for",
+        "name": "for each relationship",
+        "xml": "<for index='rel-idx' start='0' end='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1324.642807006836,
+        "y": 276.3334903717041,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "9e428281.f398e"
+            ]
+        ]
+    },
+    {
+        "id": "9e428281.f398e",
+        "type": "switchNode",
+        "name": "switch related-to == vserver",
+        "xml": "<switch test=\"`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship[$rel-idx].related-to == 'vserver'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1576.0715980529785,
+        "y": 276.3334560394287,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "5e09ce32.afc1a"
+            ]
+        ]
+    },
+    {
+        "id": "5e09ce32.afc1a",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1780.3572387695312,
+        "y": 274.9052333831787,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "dd66f351.b4287"
+            ]
+        ]
+    },
+    {
+        "id": "e0bfd49.2991328",
+        "type": "set",
+        "name": "set tmp.vserver-id = 0",
+        "xml": "<set>\n<parameter name='tmp.vserver-id' value='0' />\n",
+        "comments": "",
+        "x": 1331.785789489746,
+        "y": 233.47638320922852,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "dd66f351.b4287",
+        "type": "for",
+        "name": "for each relationship-data",
+        "xml": "<for index='reldata-idx' start='0' end='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1977.4999923706055,
+        "y": 273.4764881134033,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "b5847bc5.de5478"
+            ]
+        ]
+    },
+    {
+        "id": "b5847bc5.de5478",
+        "type": "switchNode",
+        "name": "switch relationship-key == 'vserver.vserver-id'",
+        "xml": "<switch test=\"`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data[$reldata-idx].relationship-key == 'vserver.vserver-id'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2297.499885559082,
+        "y": 273.4763126373291,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "a19eabb8.56abc8"
+            ]
+        ]
+    },
+    {
+        "id": "a19eabb8.56abc8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2546.0715713500977,
+        "y": 272.0476760864258,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "d675e632.b382f8"
+            ]
+        ]
+    },
+    {
+        "id": "d675e632.b382f8",
+        "type": "set",
+        "name": "set tmp.vserver-id",
+        "xml": "<set>\n<parameter name='tmp.vserver-id' value='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data[$reldata-idx].relationship-value`' />\n",
+        "comments": "",
+        "x": 2734.6432876586914,
+        "y": 270.6192045211792,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "54051de.b4315e4",
+        "type": "switchNode",
+        "name": "switch tmp.vserver-id == 0",
+        "xml": "<switch test='`$tmp.vserver-id == 0`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1346.0716094970703,
+        "y": 322.0478801727295,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "e73429c1.6d4a38"
+            ]
+        ]
+    },
+    {
+        "id": "e73429c1.6d4a38",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1546.0715713500977,
+        "y": 322.0476760864258,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "eb7b19a6.882228"
+            ]
+        ]
+    },
+    {
+        "id": "eb7b19a6.882228",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1693.2143936157227,
+        "y": 320.6192092895508,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "1c2292f9.558f2d"
+            ]
+        ]
+    },
+    {
+        "id": "987182b5.70dc7",
+        "type": "set",
+        "name": "set vserver data",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vserver-name'\n  value='`$tmp.AnAI-data.src-li.results[$src-vs-idx].vserver.vserver-name`' />\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vserver-id'\n  value='`$tmp.AnAI-data.src-li.results[$src-vs-idx].vserver.vserver-id`' />\n<parameter name='tmp.vs-idx' value='`$src-vs-idx`' />\n",
+        "comments": "",
+        "x": 2027.023666381836,
+        "y": 414.90478897094727,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "f30054d5.526208",
+        "type": "comment",
+        "name": "loop through the results array for this vserver",
+        "info": "",
+        "comments": "",
+        "x": 1395.3572463989258,
+        "y": 374.90478706359863,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "6ca675d9.0abacc",
+        "type": "for",
+        "name": "for each src result",
+        "xml": "<for index='src-vs-idx' start='0' end='`$tmp.AnAI-data.src-li.results_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1317.0238418579102,
+        "y": 416.5713577270508,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "6e5a5a11.67dc84"
+            ]
+        ]
+    },
+    {
+        "id": "6e5a5a11.67dc84",
+        "type": "switchNode",
+        "name": "is this our vserver?",
+        "xml": "<switch test='`$tmp.AnAI-data.src-li.results[$src-vs-idx].vserver.vserver-id == $tmp.vserver-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1513.6904678344727,
+        "y": 414.9048538208008,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "8c36a0ad.63b1a"
+            ]
+        ]
+    },
+    {
+        "id": "8c36a0ad.63b1a",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1683.690315246582,
+        "y": 414.90478801727295,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "4a784e6b.1a374"
+            ]
+        ]
+    },
+    {
+        "id": "4a784e6b.1a374",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1835.3572158813477,
+        "y": 414.9048538208008,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "987182b5.70dc7"
+            ]
+        ]
+    },
+    {
+        "id": "8ac121a2.f054f",
+        "type": "set",
+        "name": "increment tmp.vnfc-objects-idx",
+        "xml": "<set>\n<parameter name='tmp.vnfc-objects-idx' value='`$tmp.vnfc-objects-idx + 1`' />\n",
+        "comments": "",
+        "x": 1345.3574295043945,
+        "y": 833.9048900604248,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "d7d96f12.ed2bc",
+        "type": "comment",
+        "name": "now process l-interfaces for this vserver",
+        "info": "",
+        "comments": "",
+        "x": 1373.690486907959,
+        "y": 518.238260269165,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "41c41df3.5764a4",
+        "type": "for",
+        "name": "for each l-interface in this vserver",
+        "xml": "<for silentFailure='true' index='src-vli-idx' start='0' end='`$tmp.AnAI-data.src-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1355.357105255127,
+        "y": 563.2381811141968,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "a318be8d.ca848"
+            ]
+        ]
+    },
+    {
+        "id": "a318be8d.ca848",
+        "type": "switchNode",
+        "name": "does network-name match?",
+        "xml": "<switch test='`$tmp.AnAI-data.src-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface[$src-vli-idx].network-name == $tmp.src-network-name`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1650.3572807312012,
+        "y": 563.2381000518799,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "5f6d71fd.e48f9"
+            ]
+        ]
+    },
+    {
+        "id": "5f6d71fd.e48f9",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1860.3571891784668,
+        "y": 561.5714912414551,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "1d86856b.8c8b0b"
+            ]
+        ]
+    },
+    {
+        "id": "c8b08bf3.2a97f8",
+        "type": "set",
+        "name": "set tmp.interface-ids_length to 0",
+        "xml": "<set>\n<parameter name='tmp.interface-ids_length' value='0' />\n",
+        "comments": "",
+        "x": 1368.6905250549316,
+        "y": 469.90484523773193,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "1d86856b.8c8b0b",
+        "type": "set",
+        "name": "save interface-id",
+        "xml": "<set>\n<parameter name='tmp.interface-ids[$tmp.interface-ids_length].interface-id' value='`$tmp.AnAI-data.src-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface[$src-vli-idx].interface-id`' />\n<parameter name='tmp.interface-ids_length' value='`$tmp.interface-ids_length + 1`' />\n",
+        "comments": "",
+        "x": 2037.0235176086426,
+        "y": 561.5718421936035,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "e8c47337.194cc",
+        "type": "for",
+        "name": "for each src result",
+        "xml": "<for silentFailure='true' index='src-rs-idx' start='0' end='`$tmp.AnAI-data.src-li.results_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1310.357265472412,
+        "y": 704.9046611785889,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "2add2962.c47056"
+            ]
+        ]
+    },
+    {
+        "id": "a0fd84a6.22f688",
+        "type": "comment",
+        "name": "loop through the results array for these l-interfaces",
+        "info": "",
+        "comments": "",
+        "x": 1400.357349395752,
+        "y": 663.2381839752197,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "ec2249aa.7fa5a8",
+        "type": "for",
+        "name": "for each saved interface-id",
+        "xml": "<for index='in-idx' start='0' end='`$tmp.interface-ids_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1907.024326324463,
+        "y": 734.9050178527832,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "eb709142.f8f52"
+            ]
+        ]
+    },
+    {
+        "id": "eb709142.f8f52",
+        "type": "switchNode",
+        "name": "interface-ids match?",
+        "xml": "<switch test='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.interface-id == $tmp.interface-ids[$in-idx].interface-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2183.690845489502,
+        "y": 734.9047737121582,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "222ad245.d91fbe"
+            ]
+        ]
+    },
+    {
+        "id": "222ad245.d91fbe",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2372.024158477783,
+        "y": 733.2382411956787,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "d9617935.c2d7f8"
+            ]
+        ]
+    },
+    {
+        "id": "5c58f241.abac8c",
+        "type": "set",
+        "name": "set tmp.vnic-idx to 0",
+        "xml": "<set>\n<parameter name='tmp.vnic-idx' value='0' />\n",
+        "comments": "",
+        "x": 1315.3572273254395,
+        "y": 614.9049320220947,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "d9617935.c2d7f8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2535.3572959899902,
+        "y": 733.2382411956787,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "13a3172d.4d7459",
+                "1f0a54c0.094a5b",
+                "3cf0366f.7afeaa",
+                "f2c3d29e.c6f01"
+            ]
+        ]
+    },
+    {
+        "id": "13a3172d.4d7459",
+        "type": "set",
+        "name": "set vnic-data",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-port-id'\n  value='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.interface-id`' />\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-port-name'\n  value='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.interface-name`' />\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].capacity.vnic-capacity'\n  value='`$tmp.src-pps`' />\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].capacity.used-capacity'\n  value='0' />\n",
+        "comments": "",
+        "x": 2727.023914337158,
+        "y": 618.2382650375366,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "1f0a54c0.094a5b",
+        "type": "switchNode",
+        "name": "is there an ipv4 address?",
+        "xml": "<switch test='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2757.02388381958,
+        "y": 688.2382698059082,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "1f50864b.beb8da",
+                "3c7d317d.fb47fe"
+            ]
+        ]
+    },
+    {
+        "id": "1f50864b.beb8da",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2947.0236778259277,
+        "y": 663.2379951477051,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "2dbc1fdd.4e4df"
+            ]
+        ]
+    },
+    {
+        "id": "3c7d317d.fb47fe",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2947.023609161377,
+        "y": 714.6666679382324,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "aaeab78b.c2f038"
+            ]
+        ]
+    },
+    {
+        "id": "2dbc1fdd.4e4df",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 3077.0238151550293,
+        "y": 659.9048557281494,
+        "z": "f19c7219.1794b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "aaeab78b.c2f038",
+        "type": "set",
+        "name": "set ipv4-address",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-ip-addresses.ip-addresses.ipv4-address'\n  value='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`' />\n",
+        "comments": "",
+        "x": 3108.690399169922,
+        "y": 713.2381896972656,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "2add2962.c47056",
+        "type": "switchNode",
+        "name": "is this an l-interface?",
+        "xml": "<switch test='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.interface-name`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1517.0239067077637,
+        "y": 704.9048557281494,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "46e0a50b.cf81bc",
+                "4585ec47.df3ff4"
+            ]
+        ]
+    },
+    {
+        "id": "46e0a50b.cf81bc",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1688.6904029846191,
+        "y": 681.5714092254639,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "3af66484.84461c"
+            ]
+        ]
+    },
+    {
+        "id": "4585ec47.df3ff4",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1688.6903343200684,
+        "y": 733.0000820159912,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "ec2249aa.7fa5a8"
+            ]
+        ]
+    },
+    {
+        "id": "3af66484.84461c",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1825.357250213623,
+        "y": 679.9051780700684,
+        "z": "f19c7219.1794b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3cf0366f.7afeaa",
+        "type": "switchNode",
+        "name": "is there an ipv6 address?",
+        "xml": "<switch test='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2765.3567848205566,
+        "y": 783.2379112243652,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "be4e4b7c.467a88",
+                "804b95fe.663f68"
+            ]
+        ]
+    },
+    {
+        "id": "be4e4b7c.467a88",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2955.3565788269043,
+        "y": 758.2376365661621,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "631ba8b4.ea1db8"
+            ]
+        ]
+    },
+    {
+        "id": "804b95fe.663f68",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2955.3565101623535,
+        "y": 809.6663093566895,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "a7e10969.2b8498"
+            ]
+        ]
+    },
+    {
+        "id": "631ba8b4.ea1db8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 3085.356716156006,
+        "y": 754.9044971466064,
+        "z": "f19c7219.1794b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a7e10969.2b8498",
+        "type": "set",
+        "name": "set ipv6-address",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-ip-addresses.ip-addresses.ipv6-address'\n  value='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`' />\n",
+        "comments": "",
+        "x": 3117.0233001708984,
+        "y": 808.2378311157227,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "f2c3d29e.c6f01",
+        "type": "set",
+        "name": "increment tmp.vnic-idx",
+        "xml": "<set>\n<parameter name='tmp.vnic-idx' value='`$tmp.vnic-idx + 1`' />\n",
+        "comments": "",
+        "x": 2757.023723602295,
+        "y": 851.5715255737305,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "91cc5b8b.aca088",
+        "type": "set",
+        "name": "set vnic_length",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic_length' value='`$tmp.vnic-idx`' />\n",
+        "comments": "",
+        "x": 1299.0240173339844,
+        "y": 782.5716171264648,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "123870ef.b3952f",
+        "type": "set",
+        "name": "set vnfc data",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnfc-key'\n  value='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.vnfc-name`' />\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnfc-name'\n  value='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.vnfc-name`' />\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnf-id'\n  value='`$tmp.dest-vnf-id`' />\n",
+        "comments": "",
+        "x": 1310.0238456726074,
+        "y": 1004.9048719406128,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "e4346cd6.97483",
+        "type": "comment",
+        "name": "look through relationships looking for the related vserver",
+        "info": "",
+        "comments": "",
+        "x": 1438.5953941345215,
+        "y": 1049.190830230713,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "83d150b1.f8db",
+        "type": "for",
+        "name": "for each relationship",
+        "xml": "<for index='rel-idx' start='0' end='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1330.0237922668457,
+        "y": 1133.4764385223389,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "209db54.cb09b4a"
+            ]
+        ]
+    },
+    {
+        "id": "209db54.cb09b4a",
+        "type": "switchNode",
+        "name": "switch related-to == vserver",
+        "xml": "<switch test=\"`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship[$rel-idx].related-to == 'vserver'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1581.4525833129883,
+        "y": 1133.4764041900635,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "7c552a03.fc7b14"
+            ]
+        ]
+    },
+    {
+        "id": "7c552a03.fc7b14",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1785.738224029541,
+        "y": 1132.0481815338135,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "a8fd7c1c.969c7"
+            ]
+        ]
+    },
+    {
+        "id": "235462a5.9f39ae",
+        "type": "set",
+        "name": "set tmp.vserver-id = 0",
+        "xml": "<set>\n<parameter name='tmp.vserver-id' value='0' />\n",
+        "comments": "",
+        "x": 1337.1667747497559,
+        "y": 1090.6193313598633,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "a8fd7c1c.969c7",
+        "type": "for",
+        "name": "for each relationship-data",
+        "xml": "<for index='reldata-idx' start='0' end='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1982.8809776306152,
+        "y": 1130.619436264038,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "43d73b86.214fd4"
+            ]
+        ]
+    },
+    {
+        "id": "43d73b86.214fd4",
+        "type": "switchNode",
+        "name": "switch relationship-key == 'vserver.vserver-id'",
+        "xml": "<switch test=\"`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data[$reldata-idx].relationship-key == 'vserver.vserver-id'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2302.880870819092,
+        "y": 1130.6192607879639,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "231a2bce.bcbb84"
+            ]
+        ]
+    },
+    {
+        "id": "231a2bce.bcbb84",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2551.4525566101074,
+        "y": 1129.1906242370605,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "9fe17967.f5b968"
+            ]
+        ]
+    },
+    {
+        "id": "9fe17967.f5b968",
+        "type": "set",
+        "name": "set tmp.vserver-id",
+        "xml": "<set>\n<parameter name='tmp.vserver-id' value='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data[$reldata-idx].relationship-value`' />\n",
+        "comments": "",
+        "x": 2740.024272918701,
+        "y": 1127.762152671814,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "76d4ab8c.770d64",
+        "type": "switchNode",
+        "name": "switch tmp.vserver-id == 0",
+        "xml": "<switch test='`$tmp.vserver-id == 0`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1351.45259475708,
+        "y": 1179.1908283233643,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "9c3b827c.e3eb"
+            ]
+        ]
+    },
+    {
+        "id": "9c3b827c.e3eb",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1551.4525566101074,
+        "y": 1179.1906242370605,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "8034f537.34d3d8"
+            ]
+        ]
+    },
+    {
+        "id": "8034f537.34d3d8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1698.5953788757324,
+        "y": 1177.7621574401855,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "cad58465.15d0d8"
+            ]
+        ]
+    },
+    {
+        "id": "ac94da67.d26988",
+        "type": "set",
+        "name": "set vserver data",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vserver-name'\n  value='`$tmp.AnAI-data.dest-li.results[$dest-vs-idx].vserver.vserver-name`' />\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vserver-id'\n  value='`$tmp.AnAI-data.dest-li.results[$dest-vs-idx].vserver.vserver-id`' />\n<parameter name='tmp.vs-idx' value='`$dest-vs-idx`' />\n",
+        "comments": "",
+        "x": 2032.4046516418457,
+        "y": 1272.047737121582,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "e4b70ec5.8f2a9",
+        "type": "comment",
+        "name": "loop through the results array for this vserver",
+        "info": "",
+        "comments": "",
+        "x": 1400.7382316589355,
+        "y": 1232.0477352142334,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "e2a88998.378818",
+        "type": "for",
+        "name": "for each dest result",
+        "xml": "<for index='dest-vs-idx' start='0' end='`$tmp.AnAI-data.dest-li.results_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1322.40482711792,
+        "y": 1273.7143058776855,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "df314dbf.690b8"
+            ]
+        ]
+    },
+    {
+        "id": "df314dbf.690b8",
+        "type": "switchNode",
+        "name": "is this our vserver?",
+        "xml": "<switch test='`$tmp.AnAI-data.dest-li.results[$dest-vs-idx].vserver.vserver-id == $tmp.vserver-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1519.0714530944824,
+        "y": 1272.0478019714355,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "86a1a4ed.2cf098"
+            ]
+        ]
+    },
+    {
+        "id": "86a1a4ed.2cf098",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1689.0713005065918,
+        "y": 1272.0477361679077,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "8b6fc22f.3dcc3"
+            ]
+        ]
+    },
+    {
+        "id": "8b6fc22f.3dcc3",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1840.7382011413574,
+        "y": 1272.0478019714355,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "ac94da67.d26988"
+            ]
+        ]
+    },
+    {
+        "id": "90d21ad7.30c428",
+        "type": "set",
+        "name": "increment tmp.vnfc-objects-idx",
+        "xml": "<set>\n<parameter name='tmp.vnfc-objects-idx' value='`$tmp.vnfc-objects-idx + 1`' />\n",
+        "comments": "",
+        "x": 1346.4526303609218,
+        "y": 1707.0479326248173,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "3e132354.6c030c",
+        "type": "comment",
+        "name": "now process l-interfaces for this vserver",
+        "info": "",
+        "comments": "",
+        "x": 1379.0714721679688,
+        "y": 1375.3812084197998,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "c6a1bfd5.14d78",
+        "type": "for",
+        "name": "for each l-interface in this vserver",
+        "xml": "<for silentFailure='true' index='dest-vli-idx' start='0' end='`$tmp.AnAI-data.dest-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1360.7380905151367,
+        "y": 1420.3811292648315,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "4c51257f.df2efc"
+            ]
+        ]
+    },
+    {
+        "id": "4c51257f.df2efc",
+        "type": "switchNode",
+        "name": "does network-name match?",
+        "xml": "<switch test='`$tmp.AnAI-data.dest-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface[$dest-vli-idx].network-name == $tmp.dest-network-name`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1655.738265991211,
+        "y": 1420.3810482025146,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "5abbe265.18948c"
+            ]
+        ]
+    },
+    {
+        "id": "5abbe265.18948c",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1865.7381744384766,
+        "y": 1418.7144393920898,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "e4f63421.b0c1a8"
+            ]
+        ]
+    },
+    {
+        "id": "2d541d29.d0a102",
+        "type": "set",
+        "name": "set tmp.interface-ids_length to 0",
+        "xml": "<set>\n<parameter name='tmp.interface-ids_length' value='0' />\n",
+        "comments": "",
+        "x": 1374.0715103149414,
+        "y": 1327.0477933883667,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "e4f63421.b0c1a8",
+        "type": "set",
+        "name": "save interface-id",
+        "xml": "<set>\n<parameter name='tmp.interface-ids[$tmp.interface-ids_length].interface-id' value='`$tmp.AnAI-data.dest-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface[$dest-vli-idx].interface-id`' />\n<parameter name='tmp.interface-ids_length' value='`$tmp.interface-ids_length + 1`' />\n",
+        "comments": "",
+        "x": 2042.4045028686523,
+        "y": 1418.7147903442383,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "e9f4a063.9d98c",
+        "type": "for",
+        "name": "for each dest result",
+        "xml": "<for silentFailure='true' index='dest-rs-idx' start='0' end='`$tmp.AnAI-data.dest-li.results_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1315.7382507324219,
+        "y": 1562.0476093292236,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "fed6b918.7cd968"
+            ]
+        ]
+    },
+    {
+        "id": "610cc2be.f926dc",
+        "type": "comment",
+        "name": "loop through the results array for these l-interfaces",
+        "info": "",
+        "comments": "",
+        "x": 1405.7383346557617,
+        "y": 1520.3811321258545,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "48a3cd64.041674",
+        "type": "for",
+        "name": "for each saved interface-id",
+        "xml": "<for index='in-idx' start='0' end='`$tmp.interface-ids_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1912.4053115844727,
+        "y": 1592.047966003418,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "92f98492.7ed328"
+            ]
+        ]
+    },
+    {
+        "id": "92f98492.7ed328",
+        "type": "switchNode",
+        "name": "interface-ids match?",
+        "xml": "<switch test='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.interface-id == $tmp.interface-ids[$in-idx].interface-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2189.0718307495117,
+        "y": 1592.047721862793,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "517f85ec.ab91fc"
+            ]
+        ]
+    },
+    {
+        "id": "517f85ec.ab91fc",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2377.405143737793,
+        "y": 1590.3811893463135,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "39165758.03b178"
+            ]
+        ]
+    },
+    {
+        "id": "39165758.03b178",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2540.73828125,
+        "y": 1590.3811893463135,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "842c074b.07ce18",
+                "2c325a45.833636",
+                "5fbe9dd2.e72d64",
+                "793b650b.9d653c"
+            ]
+        ]
+    },
+    {
+        "id": "842c074b.07ce18",
+        "type": "set",
+        "name": "set vnic-data",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-port-id'\n  value='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.interface-id`' />\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-port-name'\n  value='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.interface-name`' />\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].capacity.vnic-capacity'\n  value='`$tmp.dest-pps`' />\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].capacity.used-capacity'\n  value='0' />\n",
+        "comments": "",
+        "x": 2732.404899597168,
+        "y": 1475.3812131881714,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "2c325a45.833636",
+        "type": "switchNode",
+        "name": "is there an ipv4 address?",
+        "xml": "<switch test='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2762.40486907959,
+        "y": 1545.381217956543,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "bdca0e16.8e21d",
+                "8c69d401.782458"
+            ]
+        ]
+    },
+    {
+        "id": "bdca0e16.8e21d",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2952.4046630859375,
+        "y": 1520.3809432983398,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "5426f8f.a078708"
+            ]
+        ]
+    },
+    {
+        "id": "8c69d401.782458",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2952.4045944213867,
+        "y": 1571.8096160888672,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "8fc8ec37.c8388"
+            ]
+        ]
+    },
+    {
+        "id": "5426f8f.a078708",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 3082.404800415039,
+        "y": 1517.0478038787842,
+        "z": "f19c7219.1794b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8fc8ec37.c8388",
+        "type": "set",
+        "name": "set ipv4-address",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-ip-addresses.ip-addresses.ipv4-address'\n  value='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`' />\n",
+        "comments": "",
+        "x": 3114.0713844299316,
+        "y": 1570.3811378479004,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "fed6b918.7cd968",
+        "type": "switchNode",
+        "name": "is this an l-interface?",
+        "xml": "<switch test='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.interface-name`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1522.4048919677734,
+        "y": 1562.0478038787842,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "152788ba.9abfd7",
+                "3e5cc15c.dfb35e"
+            ]
+        ]
+    },
+    {
+        "id": "152788ba.9abfd7",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1694.071388244629,
+        "y": 1538.7143573760986,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "76c2fc68.9b0ac4"
+            ]
+        ]
+    },
+    {
+        "id": "3e5cc15c.dfb35e",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1694.0713195800781,
+        "y": 1590.143030166626,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "48a3cd64.041674"
+            ]
+        ]
+    },
+    {
+        "id": "76c2fc68.9b0ac4",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1830.7382354736328,
+        "y": 1537.0481262207031,
+        "z": "f19c7219.1794b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5fbe9dd2.e72d64",
+        "type": "switchNode",
+        "name": "is there an ipv6 address?",
+        "xml": "<switch test='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2770.7377700805664,
+        "y": 1640.380859375,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "325f4269.cf67ce",
+                "73b0bf40.e62ed"
+            ]
+        ]
+    },
+    {
+        "id": "325f4269.cf67ce",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2960.737564086914,
+        "y": 1615.3805847167969,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "c084c706.7c4328"
+            ]
+        ]
+    },
+    {
+        "id": "73b0bf40.e62ed",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2960.7374954223633,
+        "y": 1666.8092575073242,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "c275e616.f80bb8"
+            ]
+        ]
+    },
+    {
+        "id": "c084c706.7c4328",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 3090.7377014160156,
+        "y": 1612.0474452972412,
+        "z": "f19c7219.1794b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c275e616.f80bb8",
+        "type": "set",
+        "name": "set ipv6-address",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-ip-addresses.ip-addresses.ipv6-address'\n  value='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`' />\n",
+        "comments": "",
+        "x": 3122.404285430908,
+        "y": 1665.3807792663574,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "793b650b.9d653c",
+        "type": "set",
+        "name": "increment tmp.vnic-idx",
+        "xml": "<set>\n<parameter name='tmp.vnic-idx' value='`$tmp.vnic-idx + 1`' />\n",
+        "comments": "",
+        "x": 2762.4047088623047,
+        "y": 1708.7144737243652,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "5c44dcd5.f007e4",
+        "type": "set",
+        "name": "set vnic_length",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic_length' value='`$tmp.vnic-idx`' />\n",
+        "comments": "",
+        "x": 1299.7858390808105,
+        "y": 1652.0479745864868,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "20ef598e.0d7d96",
+        "type": "set",
+        "name": "set tmp.vnic-idx to 0",
+        "xml": "<set>\n<parameter name='tmp.vnic-idx' value='0' />\n",
+        "comments": "",
+        "x": 1319.1903495788574,
+        "y": 1470.7381238937378,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "7b6db590.0533bc",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1094.6428413391113,
+        "y": 422.7619466781616,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "3348c9a8.a257a6",
+                "e0bfd49.2991328",
+                "606fe9e4.7d4348",
+                "54051de.b4315e4",
+                "6ca675d9.0abacc",
+                "c8b08bf3.2a97f8",
+                "41c41df3.5764a4",
+                "5c58f241.abac8c",
+                "e8c47337.194cc",
+                "91cc5b8b.aca088",
+                "8ac121a2.f054f"
+            ]
+        ]
+    },
+    {
+        "id": "58a52a03.d31b64",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1114.6429290771484,
+        "y": 1339.2619905471802,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "123870ef.b3952f",
+                "235462a5.9f39ae",
+                "83d150b1.f8db",
+                "76d4ab8c.770d64",
+                "e2a88998.378818",
+                "2d541d29.d0a102",
+                "c6a1bfd5.14d78",
+                "20ef598e.0d7d96",
+                "e9f4a063.9d98c",
+                "5c44dcd5.f007e4",
+                "90d21ad7.30c428"
+            ]
+        ]
+    },
+    {
+        "id": "2f5a40e3.2a003",
+        "type": "for",
+        "name": "for each src result",
+        "xml": "<for silentFailure='true' index='src-li-idx' start='0' end='`$tmp.AnAI-data.src-li.results_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 367.14287240164595,
+        "y": 399.7619879586355,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "c366477a.0cdbb8"
+            ]
+        ]
+    },
+    {
+        "id": "c366477a.0cdbb8",
+        "type": "switchNode",
+        "name": "is this a vnfc?",
+        "xml": "<switch test='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.vnfc-name`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 564.2857295445033,
+        "y": 399.7619879586355,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "ddc5007b.1b588",
+                "a608af5f.6fd5"
+            ]
+        ]
+    },
+    {
+        "id": "ddc5007b.1b588",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 721.4286155700684,
+        "y": 374.04780673980713,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "7c63c4a2.9d900c"
+            ]
+        ]
+    },
+    {
+        "id": "a608af5f.6fd5",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 721.4285469055176,
+        "y": 425.4764795303345,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "7b6db590.0533bc"
+            ]
+        ]
+    },
+    {
+        "id": "4f639cf7.58b774",
+        "type": "set",
+        "name": "set tmp.vnfc-objects-idx to 0",
+        "xml": "<set>\n<parameter name='tmp.vnfc-objects-idx' value='0' />\n",
+        "comments": "",
+        "x": 398.1904830932617,
+        "y": 333.1906509399414,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "7c63c4a2.9d900c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 881.4285888671875,
+        "y": 373.76209259033203,
+        "z": "f19c7219.1794b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "efc92c11.ec21f",
+        "type": "set",
+        "name": "set vnfc-object length",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object_length' value='`$tmp.vnfc-objects-idx`' />\n",
+        "comments": "",
+        "x": 374.04761505126953,
+        "y": 462.1432113647461,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "34852a80.944a56",
+        "type": "for",
+        "name": "for each dest result",
+        "xml": "<for silentFailure='true' index='dest-li-idx' start='0' end='`$tmp.AnAI-data.dest-li.results_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 372.38092041015625,
+        "y": 608.8096408843994,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "a2bdd99.cd4bc28"
+            ]
+        ]
+    },
+    {
+        "id": "a2bdd99.cd4bc28",
+        "type": "switchNode",
+        "name": "is this a vnfc?",
+        "xml": "<switch test='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.vnfc-name`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 569.5237775530131,
+        "y": 608.8096408843994,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "419dcae6.90f094",
+                "5e261990.4e7538"
+            ]
+        ]
+    },
+    {
+        "id": "419dcae6.90f094",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 726.6666635785787,
+        "y": 583.0954596655711,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "ced72b08.7bdc78"
+            ]
+        ]
+    },
+    {
+        "id": "5e261990.4e7538",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 726.6665949140279,
+        "y": 634.5241324560984,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "58a52a03.d31b64"
+            ]
+        ]
+    },
+    {
+        "id": "ced72b08.7bdc78",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 886.6666368756978,
+        "y": 582.809745516096,
+        "z": "f19c7219.1794b",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "304aeb73.a329f4",
+        "type": "set",
+        "name": "set tmp.vnfc-objects-idx to 0",
+        "xml": "<set>\n<parameter name='tmp.vnfc-objects-idx' value='0' />\n",
+        "comments": "",
+        "x": 399.04759216308594,
+        "y": 548.809534072876,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "38365fcd.6fd41",
+        "type": "set",
+        "name": "set vnfc-object length",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object_length' value='`$tmp.vnfc-objects-idx`' />\n",
+        "comments": "",
+        "x": 379.04759979248047,
+        "y": 680.4761505126953,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "8349530a.566aa",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 149.6428680419922,
+        "y": 517.2620086669922,
+        "z": "f19c7219.1794b",
+        "wires": [
+            [
+                "4f639cf7.58b774",
+                "2f5a40e3.2a003",
+                "efc92c11.ec21f",
+                "304aeb73.a329f4",
+                "34852a80.944a56",
+                "38365fcd.6fd41",
+                "5befb22a.30546c"
+            ]
+        ]
+    },
+    {
+        "id": "5befb22a.30546c",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n",
+        "comments": "",
+        "x": 357.1428680419922,
+        "y": 742.2619209289551,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "1c2292f9.558f2d",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Unable to find vserver related to vnfc ' + $tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.vnfc-name`\" />\n",
+        "comments": "",
+        "x": 1864.1428604125977,
+        "y": 319.7619094848633,
+        "z": "f19c7219.1794b",
+        "wires": []
+    },
+    {
+        "id": "cad58465.15d0d8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Unable to find vserver related to vnfc ' + $tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.vnfc-name`\" />\n",
+        "comments": "",
+        "x": 1871.1428909301758,
+        "y": 1177.761926651001,
+        "z": "f19c7219.1794b",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-async.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-async.json
new file mode 100644
index 0000000..3b9f393
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-async.json
@@ -0,0 +1,1007 @@
+[
+    {
+        "id": "acf1df7b.c0642",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 136.25,
+        "y": 92.5,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "d107ddee.41386"
+            ]
+        ]
+    },
+    {
+        "id": "d107ddee.41386",
+        "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.86902618408203,
+        "y": 132.7381134033203,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "7daffa47.44d444"
+            ]
+        ]
+    },
+    {
+        "id": "7daffa47.44d444",
+        "type": "method",
+        "name": "method port-mirror-topology-operation-deactivate-async",
+        "xml": "<method rpc='port-mirror-topology-operation-deactivate-async' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 277.53578186035156,
+        "y": 173.92856788635254,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "da29a24f.7f3f2"
+            ]
+        ]
+    },
+    {
+        "id": "d6997faa.63095",
+        "type": "comment",
+        "name": "port-mirror-topology-operation-deactivate-async",
+        "info": "",
+        "comments": "",
+        "x": 530.594856262207,
+        "y": 40.08634376525879,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "9ef6714.8e61a9",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n<parameter name='error-code' value='200' />\n",
+        "comments": "",
+        "x": 480.4882011413574,
+        "y": 1612.8809957504272,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "da29a24f.7f3f2",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 183.86904907226562,
+        "y": 871.5475997924805,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "9ef6714.8e61a9",
+                "ae8a46bd.17c5a8",
+                "ed8e386e.d66588",
+                "33edf927.ccd256",
+                "88b52684.3c1198",
+                "b602cd37.9d966",
+                "51ec1a7c.c67334",
+                "e2a5b4bd.e39bb8",
+                "54a5dead.83a5",
+                "c553e730.5e7f68",
+                "423946eb.24ca18",
+                "914f3421.b83cc8",
+                "3cc26a33.d0cde6",
+                "5b4713f1.7dfb5c"
+            ]
+        ]
+    },
+    {
+        "id": "23544362.1928ac",
+        "type": "comment",
+        "name": "rpc-port-mirror-1090",
+        "info": "",
+        "comments": "",
+        "x": 483.86902618408203,
+        "y": 642.9761972427368,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "2d55bfb8.84d25",
+        "type": "comment",
+        "name": "step 3 - for each source port:",
+        "info": "",
+        "comments": "",
+        "x": 545.8690490722656,
+        "y": 684.1189880371094,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "9221cb49.d93a28",
+        "type": "comment",
+        "name": "1. turn off packet mirroring in contrail (see input parameters spreadsheet)",
+        "info": "",
+        "comments": "",
+        "x": 1131.0594940185547,
+        "y": 719.1189775466919,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "20a97346.cfa9dc",
+        "type": "comment",
+        "name": "2. set is-port-mirrored in A&AI (aai-port-mirror-1040)",
+        "info": "",
+        "comments": "",
+        "x": 1073.1547470092773,
+        "y": 855.4999237060547,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "c4a61894.c3e478",
+        "type": "comment",
+        "name": "step 4 - call DG to deactivate route policy",
+        "info": "",
+        "comments": "",
+        "x": 570.4405059814453,
+        "y": 1034.738042831421,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "4f611f9c.f3b72",
+        "type": "comment",
+        "name": "step 5 - update configuration object (aai-port-mirror-1070)",
+        "info": "",
+        "comments": "",
+        "x": 621.4881134033203,
+        "y": 1183.0236949920654,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "23dd8717.0e3808",
+        "type": "comment",
+        "name": "step 6 - update oper status",
+        "info": "",
+        "comments": "",
+        "x": 521.7737579345703,
+        "y": 1343.7856578826904,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "ae8a46bd.17c5a8",
+        "type": "set",
+        "name": "set tmp variables",
+        "xml": "<set>\n<parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />\n\n\n",
+        "comments": "",
+        "x": 496.2500228881836,
+        "y": 241.30948638916016,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "51ec1a7c.c67334",
+        "type": "set",
+        "name": "set port-mirror-configuration data from input",
+        "xml": "<set>\n<parameter name='pm.configuration-data.configuration-operation-information.sdnc-request-header.'\n  value='`$port-mirror-topology-operation-input.sdnc-request-header.`' />\n",
+        "comments": "",
+        "x": 574.8215141296387,
+        "y": 600.3570823669434,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "ed8e386e.d66588",
+        "type": "execute",
+        "name": "execute readProperties",
+        "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": 515.5357818603516,
+        "y": 287.7380418777466,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "33edf927.ccd256",
+        "type": "execute",
+        "name": "generate port-mirror-configuration url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.pm-configuration`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.pmc-url\"/>\n    <parameter name=\"target\" value=\"{configuration-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.configuration-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 555.5358505249023,
+        "y": 334.22620391845703,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "88b52684.3c1198",
+        "type": "execute",
+        "name": "execute RestApiCallNode - get port-mirror-configuration",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"pm-mdsal\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 610.2976531982422,
+        "y": 420.3570556640625,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "441543d6.71cf8c",
+                "e792a4af.424e18",
+                "27e5f04e.c2091"
+            ]
+        ]
+    },
+    {
+        "id": "441543d6.71cf8c",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 915.5936126708984,
+        "y": 376.6410722732544,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "637ff647.06cdb8"
+            ]
+        ]
+    },
+    {
+        "id": "e792a4af.424e18",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 911.7261962890625,
+        "y": 418.69032287597656,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "9f402faa.52bcb"
+            ]
+        ]
+    },
+    {
+        "id": "637ff647.06cdb8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1067.4404525756836,
+        "y": 377.0236053466797,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "27e5f04e.c2091",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 918.6309661865234,
+        "y": 462.02373123168945,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "3bc0bb76.118314"
+            ]
+        ]
+    },
+    {
+        "id": "9f402faa.52bcb",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1090.2976531982422,
+        "y": 418.69039726257324,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "a1ca8a01.0e3cf8",
+                "1489c2f8.2f085d"
+            ]
+        ]
+    },
+    {
+        "id": "3bc0bb76.118314",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1088.6309051513672,
+        "y": 460.35705375671387,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "fc24245d.cf0bc8",
+                "1489c2f8.2f085d"
+            ]
+        ]
+    },
+    {
+        "id": "a1ca8a01.0e3cf8",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Failed to read port-mirror-configuration from MD-SAL\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1295.2976531982422,
+        "y": 417.0237102508545,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "fc24245d.cf0bc8",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Cannot find port-mirror-configuration in MD-SAL\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1291.9642791748047,
+        "y": 462.0237102508545,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b602cd37.9d966",
+        "type": "set",
+        "name": "set pm",
+        "xml": "<set>\n<parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />\n<parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />\n",
+        "comments": "",
+        "x": 460.29769134521484,
+        "y": 503.6903820037842,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "d10e2194.104e6",
+        "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-message'`\" />\n",
+        "comments": "",
+        "x": 1728.1070671081543,
+        "y": 1601.4285154342651,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "699eaa77.1cb434",
+        "type": "configure",
+        "name": "send error to MSO",
+        "xml": "<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\" value=\"`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\" value=\"Y\" />\n<parameter name=\"input.response-code\" value=\"500\" />\n<parameter name=\"input.response-message\" value=\"`$error-message`\" />\n<parameter name=\"input.svc-request-id\" value=\"`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\" value=\"`$port-mirror-topology-operation-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\" value=\"`$port-mirror-topology-operation-input.service-information.service-instance-id`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1745.7991561889648,
+        "y": 1554.8944416046143,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1489c2f8.2f085d",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1559.5355911254883,
+        "y": 1578.5714435577393,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "699eaa77.1cb434",
+                "d10e2194.104e6"
+            ]
+        ]
+    },
+    {
+        "id": "54a5dead.83a5",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT port-mirror-configuration",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.portmirrorconfig.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-pmc\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 617.2738494873047,
+        "y": 1468.833387374878,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "1ab1ec64.c45d84",
+                "2b0c94ba.0fbf0c",
+                "1f4272e7.b9a5bd"
+            ]
+        ]
+    },
+    {
+        "id": "e2a5b4bd.e39bb8",
+        "type": "set",
+        "name": "set oper-status",
+        "xml": "<set>\n<parameter name='pm.configuration-data.configuration-oper-status.order-status'\n  value='Created' />\n<parameter name='pm.configuration-data.configuration-oper-status.last-action'\n  value='`$port-mirror-topology-operation-input.request-information.request-action`' />\n<parameter name='pm.configuration-data.configuration-oper-status.last-rpc-action'\n  value='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`' />\n",
+        "comments": "",
+        "x": 488.59523010253906,
+        "y": 1389.5713024139404,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "1f4272e7.b9a5bd",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 924.5951995849609,
+        "y": 1508.2380676269531,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "b00ed1fd.f89da"
+            ]
+        ]
+    },
+    {
+        "id": "2b0c94ba.0fbf0c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 917.0238342285156,
+        "y": 1466.7380876541138,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "b00ed1fd.f89da"
+            ]
+        ]
+    },
+    {
+        "id": "1ab1ec64.c45d84",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 920.7738265991211,
+        "y": 1427.0951852798462,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "97768d46.52f58"
+            ]
+        ]
+    },
+    {
+        "id": "97768d46.52f58",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1058.1440963745117,
+        "y": 1426.144528388977,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3f39b480.961f1c",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error updating md-sal for port-mirror-configuration\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1277.3468208312988,
+        "y": 1479.810827255249,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b00ed1fd.f89da",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1080.0133438110352,
+        "y": 1480.8109140396118,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "3f39b480.961f1c",
+                "1489c2f8.2f085d"
+            ]
+        ]
+    },
+    {
+        "id": "3810a57d.14236a",
+        "type": "call",
+        "name": "call api-contrail-route-topology-operation-deactivate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-deactivate' mode='sync' >\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1181.940444946289,
+        "y": 1122.285041809082,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "cb28e685.257d38"
+            ]
+        ]
+    },
+    {
+        "id": "cb28e685.257d38",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1449.797664642334,
+        "y": 1122.5230445861816,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "1489c2f8.2f085d"
+            ]
+        ]
+    },
+    {
+        "id": "e62ab65d.b91da8",
+        "type": "set",
+        "name": "set parameters",
+        "xml": "<set>\n<parameter name='cto-api.default-domain' value='default-domain' />\n<parameter name='cto-api.default-project'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />\n<parameter name='cto-api.cloud-region-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />\n<parameter name='cto-api.contrail-route-allotted-resource-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.route-allotted-resource-id`' />\n<parameter name='cto-api.src-contrail-network-fqdn'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-network-fqdn`' />\n<parameter name='cto-api.collector-contrail-network-fqdn'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />\n<parameter name='cto-api.rollback-flag' value='false' />\n<parameter name='cto-api.owning-entity'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.owning-entity`' />\n",
+        "comments": "",
+        "x": 1069.0833206176758,
+        "y": 1069.4281883239746,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "c553e730.5e7f68",
+        "type": "for",
+        "name": "for each mapped source port",
+        "xml": "<for silentFailure='true' index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 522.7973785400391,
+        "y": 862.6658306121826,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "c54ab73a.ae8e68"
+            ]
+        ]
+    },
+    {
+        "id": "c54ab73a.ae8e68",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 761.5592880249023,
+        "y": 862.7607879638672,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "ce7381ff.88548",
+                "3fbcac7e.c1a1a4"
+            ]
+        ]
+    },
+    {
+        "id": "3fbcac7e.c1a1a4",
+        "type": "execute",
+        "name": "execute ContrailAdaptor to disable port mirroring",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='port-mirroring' />\n<parameter name='api-action' value='disable' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='display-name'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />\n<parameter name='contrail-virtual-machine-interface-name'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />\n<parameter name='contrail-virtual-machine-interface-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />\n<parameter name='policy-name'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />\n<parameter name='default-domain' value='default-domain' />\n<parameter name='default-project'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />\n<parameter name='cloud-region-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />\n<parameter name='cloud-owner'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1067.1785430908203,
+        "y": 782.0000114440918,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "82848df0.947b5",
+                "8c26f93.26d3a08"
+            ]
+        ]
+    },
+    {
+        "id": "82848df0.947b5",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1341.4641380310059,
+        "y": 807.7143030166626,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "8e1dcd4b.eddea"
+            ]
+        ]
+    },
+    {
+        "id": "ba3b50e4.8fcda",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"`'Failed to update policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1674.3214836120605,
+        "y": 807.7143201828003,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8e1dcd4b.eddea",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1487.1784934997559,
+        "y": 807.7143030166626,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "ba3b50e4.8fcda",
+                "1489c2f8.2f085d"
+            ]
+        ]
+    },
+    {
+        "id": "ce7381ff.88548",
+        "type": "save",
+        "name": "update l-interface object",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"l-interface\"\n   key=\"cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id\n     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner\n     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id\n     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id\n     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"is-port-mirrored\" value=\"false\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 992.130973815918,
+        "y": 940.9523162841797,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "49f37918.005438",
+                "38be4e8.a16eab2",
+                "b68b2de2.f0136"
+            ]
+        ]
+    },
+    {
+        "id": "49f37918.005438",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1196.4882431030273,
+        "y": 941.7144365310669,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "1c203915.556647"
+            ]
+        ]
+    },
+    {
+        "id": "38be4e8.a16eab2",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1205.0596923828125,
+        "y": 896.7146310806274,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "1c203915.556647"
+            ]
+        ]
+    },
+    {
+        "id": "1c203915.556647",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1374.5118713378906,
+        "y": 917.1427631378174,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "a3cef666.7d5688",
+                "1489c2f8.2f085d"
+            ]
+        ]
+    },
+    {
+        "id": "a3cef666.7d5688",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1571.1784057617188,
+        "y": 915.4759979248047,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "423946eb.24ca18",
+        "type": "save",
+        "name": "update configuration object",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"configuration\"\n   key=\"configuration.configuration-id = $tmp.configuration-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"operational-status\" value=\"out-of-service-path\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 523.0357208251953,
+        "y": 1252.1904430389404,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "8eeeba15.39dbd8",
+                "eea0877.1531578"
+            ]
+        ]
+    },
+    {
+        "id": "8eeeba15.39dbd8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 727.3930397033691,
+        "y": 1275.8097524642944,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "d4efc164.c970a"
+            ]
+        ]
+    },
+    {
+        "id": "eea0877.1531578",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 735.9644546508789,
+        "y": 1225.095555305481,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "1ba8ef22.aa7851"
+            ]
+        ]
+    },
+    {
+        "id": "d4efc164.c970a",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 909.7023849487305,
+        "y": 1277.1900959014893,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "ce2dc4f8.8f4c78",
+                "1489c2f8.2f085d"
+            ]
+        ]
+    },
+    {
+        "id": "1ba8ef22.aa7851",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 908.2738151550293,
+        "y": 1226.9523420333862,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "b12f8aa.29d1678",
+                "1489c2f8.2f085d"
+            ]
+        ]
+    },
+    {
+        "id": "ce2dc4f8.8f4c78",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Failure updating configuration object in AAI\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1096.369010925293,
+        "y": 1277.1900959014893,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b12f8aa.29d1678",
+        "type": "configure",
+        "name": "set error-message",
+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Unable to find configuration object in AAI\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1106.3689727783203,
+        "y": 1223.8570280075073,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8c26f93.26d3a08",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1344.3213157653809,
+        "y": 760.5713777542114,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "cdd281aa.3c357"
+            ]
+        ]
+    },
+    {
+        "id": "cdd281aa.3c357",
+        "type": "set",
+        "name": "set contrail-set[]",
+        "xml": "<set>\n<parameter name='contrail-set[$src-idx]' value='true' />\n",
+        "comments": "",
+        "x": 1500.0355224609375,
+        "y": 759.1429100036621,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "b68b2de2.f0136",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1200.7023696899414,
+        "y": 983.8095188140869,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "7abe579c.fe99a8"
+            ]
+        ]
+    },
+    {
+        "id": "7abe579c.fe99a8",
+        "type": "set",
+        "name": "set l-interface-set[]",
+        "xml": "<set>\n<parameter name='l-interface-set[$src-idx]' value='true' />\n",
+        "comments": "",
+        "x": 1363.559425354004,
+        "y": 985.2382392883301,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "914f3421.b83cc8",
+        "type": "configure",
+        "name": "send success to MSO",
+        "xml": "<configure activate=\"true\" adaptor=\"com.att.sdnctl.sli.adaptor.mso.MSOAdaptor\" key=\"__READ_FROM_PARAMETERS__\">\n<parameter name=\"notification-url\" value=\"`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"input.ack-final-indicator\" value=\"Y\" />\n<parameter name=\"input.response-code\" value=\"200\" />\n<parameter name=\"input.svc-request-id\" value=\"`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`\" />\n<parameter name=\"input.service-information.service-type\" value=\"`$port-mirror-topology-operation-input.service-information.subscription-service-type`\" />\n<parameter name=\"input.service-information.service-instance-id\" value=\"`$port-mirror-topology-operation-input.service-information.service-instance-id`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 506.25000381469727,
+        "y": 1552.976061820984,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3cc26a33.d0cde6",
+        "type": "set",
+        "name": "set tmp.configuration-sub-type",
+        "xml": "<set>\n<parameter name='tmp.configuration-sub-type' value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type`' />\n",
+        "comments": "",
+        "x": 531.2499847412109,
+        "y": 550.8333358764648,
+        "z": "e45b58ea.d3c7a8",
+        "wires": []
+    },
+    {
+        "id": "af216003.25212",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 889.5833358764648,
+        "y": 1097.4999256134033,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "e62ab65d.b91da8",
+                "3810a57d.14236a"
+            ]
+        ]
+    },
+    {
+        "id": "5b4713f1.7dfb5c",
+        "type": "switchNode",
+        "name": "switch configuration-sub-type",
+        "xml": "<switch test='`$tmp.configuration-sub-type`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 531.2499847412109,
+        "y": 1097.4999618530273,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "81bae171.b37e6"
+            ]
+        ]
+    },
+    {
+        "id": "81bae171.b37e6",
+        "type": "outcome",
+        "name": "vprobe",
+        "xml": "<outcome value='vprobe'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 729.2499847412109,
+        "y": 1097.4999618530273,
+        "z": "e45b58ea.d3c7a8",
+        "wires": [
+            [
+                "af216003.25212"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-sync.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-sync.json
new file mode 100644
index 0000000..000fe43
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-sync.json
@@ -0,0 +1,267 @@
+[
+    {
+        "id": "da0f0eae.d6e6",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 101.42857360839844,
+        "y": 80,
+        "z": "64e470a6.f1c2",
+        "wires": [
+            [
+                "bf3f1e52.b503c"
+            ]
+        ]
+    },
+    {
+        "id": "bf3f1e52.b503c",
+        "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.04759979248047,
+        "y": 120.23811340332031,
+        "z": "64e470a6.f1c2",
+        "wires": [
+            [
+                "113ca55d.9f806b"
+            ]
+        ]
+    },
+    {
+        "id": "113ca55d.9f806b",
+        "type": "method",
+        "name": "method port-mirror-topology-operation-deactivate-sync",
+        "xml": "<method rpc='port-mirror-topology-operation-deactivate-sync' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 239.8572006225586,
+        "y": 160,
+        "z": "64e470a6.f1c2",
+        "wires": [
+            [
+                "291f858d.e8a8da"
+            ]
+        ]
+    },
+    {
+        "id": "f3e36ac1.5fde88",
+        "type": "comment",
+        "name": "port-mirror-topology-operation-deactivate-sync",
+        "info": "",
+        "comments": "",
+        "x": 495.77342987060547,
+        "y": 27.58634376525879,
+        "z": "64e470a6.f1c2",
+        "wires": []
+    },
+    {
+        "id": "291f858d.e8a8da",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 161.42857360839844,
+        "y": 524.2857112884521,
+        "z": "64e470a6.f1c2",
+        "wires": [
+            [
+                "44bf4c29.2ac2b4",
+                "18f8a407.260c1c",
+                "b325942e.c008a8",
+                "e8420d4.e95eaf",
+                "dfd22f0a.d304b",
+                "58c32a6.c5959d4"
+            ]
+        ]
+    },
+    {
+        "id": "44bf4c29.2ac2b4",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n<parameter name='error-code' value='200' />\n<parameter name='ack-final' value='N' />",
+        "comments": "",
+        "x": 436.8571472167969,
+        "y": 624.2856426239014,
+        "z": "64e470a6.f1c2",
+        "wires": []
+    },
+    {
+        "id": "18f8a407.260c1c",
+        "type": "set",
+        "name": "set tmp.pm.configuration-id",
+        "xml": "<set>\n<parameter name='tmp.pm.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />\n\n",
+        "comments": "",
+        "x": 476.1428680419922,
+        "y": 337.1428451538086,
+        "z": "64e470a6.f1c2",
+        "wires": []
+    },
+    {
+        "id": "b325942e.c008a8",
+        "type": "execute",
+        "name": "execute readProperties",
+        "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": 464.2857131958008,
+        "y": 385.7142734527588,
+        "z": "64e470a6.f1c2",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e8420d4.e95eaf",
+        "type": "execute",
+        "name": "generate port-mirror-configuration url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.pm-configuration`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.pmc-url\"/>\n    <parameter name=\"target\" value=\"{configuration-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.pm.configuration-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 507.1428756713867,
+        "y": 432.857120513916,
+        "z": "64e470a6.f1c2",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "dfd22f0a.d304b",
+        "type": "execute",
+        "name": "execute RestApiCallNode - get port-mirror-configuration",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-pmc\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 567.1428604125977,
+        "y": 480.00005531311035,
+        "z": "64e470a6.f1c2",
+        "wires": [
+            [
+                "c4ace799.8ee718",
+                "4908b83c.f73098"
+            ]
+        ]
+    },
+    {
+        "id": "c4ace799.8ee718",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 865.2959823608398,
+        "y": 450.80790424346924,
+        "z": "64e470a6.f1c2",
+        "wires": [
+            [
+                "fe1d6d18.fd8e7"
+            ]
+        ]
+    },
+    {
+        "id": "4908b83c.f73098",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 862.857120513916,
+        "y": 499.99999809265137,
+        "z": "64e470a6.f1c2",
+        "wires": [
+            [
+                "757e722e.e4749c"
+            ]
+        ]
+    },
+    {
+        "id": "757e722e.e4749c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Cannot find port-mirror-configuration ' + $tmp.pm.configuration-id`\" />\n",
+        "comments": "",
+        "x": 1377.1427993774414,
+        "y": 497.14286041259766,
+        "z": "64e470a6.f1c2",
+        "wires": []
+    },
+    {
+        "id": "58c32a6.c5959d4",
+        "type": "switchNode",
+        "name": "switch order-status == 'Active'",
+        "xml": "<switch test=\"`$mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Active'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 490.00003814697266,
+        "y": 554.2856636047363,
+        "z": "64e470a6.f1c2",
+        "wires": [
+            [
+                "d5ac79e0.1c9168"
+            ]
+        ]
+    },
+    {
+        "id": "fe1d6d18.fd8e7",
+        "type": "switchNode",
+        "name": "switch length == 1",
+        "xml": "<switch test='`$mdsal-pmc.port-mirror-configuration_length == 1`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1044.2856826782227,
+        "y": 450.0000123977661,
+        "z": "64e470a6.f1c2",
+        "wires": [
+            [
+                "a174e8a2.7a8d78"
+            ]
+        ]
+    },
+    {
+        "id": "a174e8a2.7a8d78",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1214.2857131958008,
+        "y": 450.00000381469727,
+        "z": "64e470a6.f1c2",
+        "wires": [
+            [
+                "757e722e.e4749c"
+            ]
+        ]
+    },
+    {
+        "id": "d5ac79e0.1c9168",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 718.5714492797852,
+        "y": 554.2857513427734,
+        "z": "64e470a6.f1c2",
+        "wires": [
+            [
+                "11d549bd.b63176"
+            ]
+        ]
+    },
+    {
+        "id": "11d549bd.b63176",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Active'`\" />\n",
+        "comments": "",
+        "x": 880.0000381469727,
+        "y": 552.8571624755859,
+        "z": "64e470a6.f1c2",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-disable.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-disable.json
new file mode 100644
index 0000000..5684bc0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-disable.json
@@ -0,0 +1,840 @@
+[
+    {
+        "id": "afa5c42a.a2ebf8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 128.75,
+        "y": 86.25,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "cf1c9dc9.bb2d2"
+            ]
+        ]
+    },
+    {
+        "id": "cf1c9dc9.bb2d2",
+        "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": 242.36902618408203,
+        "y": 126.48811340332031,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "6b44ec68.545204"
+            ]
+        ]
+    },
+    {
+        "id": "6b44ec68.545204",
+        "type": "method",
+        "name": "method port-mirror-topology-operation-disable",
+        "xml": "<method rpc='port-mirror-topology-operation-disable' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 240.17862701416016,
+        "y": 166.25,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "7aa285f3.503f3c"
+            ]
+        ]
+    },
+    {
+        "id": "de981556.6c92f8",
+        "type": "comment",
+        "name": "port-mirror-topology-operation-disable",
+        "info": "",
+        "comments": "",
+        "x": 523.094856262207,
+        "y": 33.83634376525879,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "7aa285f3.503f3c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 173.75,
+        "y": 765.5357189178467,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "5e62ea77.c8eff4",
+                "1f8e4075.61402",
+                "cc6aae5f.3a8c5",
+                "186fa0f2.58675f",
+                "81aa6fa5.1e0db",
+                "3bcc9f6e.a7792",
+                "c7696869.d71998",
+                "2ba101b7.37177e",
+                "303f390e.c7fa26",
+                "3cd84440.1100cc",
+                "8e3809f5.0badf8",
+                "327c0b68.fb42d4"
+            ]
+        ]
+    },
+    {
+        "id": "5e62ea77.c8eff4",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n<parameter name='error-code' value='200' />\n<parameter name='ack-final' value='Y' />",
+        "comments": "",
+        "x": 455.60711669921875,
+        "y": 1303.8689861297607,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "1f8e4075.61402",
+        "type": "set",
+        "name": "set tmp.configuration-id",
+        "xml": "<set>\n<parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />\n\n",
+        "comments": "",
+        "x": 481.5594940185547,
+        "y": 231.01191997528076,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "cc6aae5f.3a8c5",
+        "type": "execute",
+        "name": "execute readProperties",
+        "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": 483.2738037109375,
+        "y": 273.86901473999023,
+        "z": "dca5409f.4b488",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "186fa0f2.58675f",
+        "type": "execute",
+        "name": "generate port-mirror-configuration url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.pm-configuration`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.pmc-url\"/>\n    <parameter name=\"target\" value=\"{configuration-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.configuration-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 523.273811340332,
+        "y": 315.2975902557373,
+        "z": "dca5409f.4b488",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "81aa6fa5.1e0db",
+        "type": "execute",
+        "name": "execute RestApiCallNode - get port-mirror-configuration",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"pm-mdsal\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 581.8452758789062,
+        "y": 379.5833988189697,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "5160c826.6574f8",
+                "58ec2f2e.df96f"
+            ]
+        ]
+    },
+    {
+        "id": "5160c826.6574f8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 879.9983978271484,
+        "y": 350.3912477493286,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "e5e068e4.dd8428"
+            ]
+        ]
+    },
+    {
+        "id": "58ec2f2e.df96f",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 877.5595359802246,
+        "y": 399.58334159851074,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "41f30bac.7dc954"
+            ]
+        ]
+    },
+    {
+        "id": "41f30bac.7dc954",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`\" />\n",
+        "comments": "",
+        "x": 1391.84521484375,
+        "y": 396.72620391845703,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "3bcc9f6e.a7792",
+        "type": "switchNode",
+        "name": "switch order-status == 'Active'",
+        "xml": "<switch test=\"`$pm-mdsal.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Active'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 505.8928909301758,
+        "y": 503.3928031921387,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "3fc32962.070946"
+            ]
+        ]
+    },
+    {
+        "id": "e5e068e4.dd8428",
+        "type": "switchNode",
+        "name": "switch length == 1",
+        "xml": "<switch test='`$pm-mdsal.port-mirror-configuration_length == 1`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1058.9880981445312,
+        "y": 349.5833559036255,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "f5f6996c.652fe8"
+            ]
+        ]
+    },
+    {
+        "id": "f5f6996c.652fe8",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1228.9881286621094,
+        "y": 349.58334732055664,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "41f30bac.7dc954"
+            ]
+        ]
+    },
+    {
+        "id": "3fc32962.070946",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 734.4643020629883,
+        "y": 503.3928909301758,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "db0e50e6.2c8ce"
+            ]
+        ]
+    },
+    {
+        "id": "db0e50e6.2c8ce",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Active'`\" />\n",
+        "comments": "",
+        "x": 895.8928909301758,
+        "y": 501.9643020629883,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "49639130.bcbb1",
+        "type": "comment",
+        "name": "rpc-port-mirror-1130",
+        "info": "",
+        "comments": "",
+        "x": 443.75,
+        "y": 560.2976331710815,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "5bedfddc.e597c4",
+        "type": "comment",
+        "name": "step 1 - call contrail to turn off packet mirroring",
+        "info": "",
+        "comments": "",
+        "x": 551.3690643310547,
+        "y": 758.869083404541,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "640a7569.398d7c",
+        "type": "comment",
+        "name": "step 2 - set is-port-mirroring in A&AI ",
+        "info": "",
+        "comments": "",
+        "x": 502.79759216308594,
+        "y": 1148.5834102630615,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "219abf57.0c159",
+        "type": "comment",
+        "name": "Find the source port",
+        "info": "",
+        "comments": "",
+        "x": 459.9404231480189,
+        "y": 601.7262674059186,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "c7696869.d71998",
+        "type": "for",
+        "name": "for each mapped source port",
+        "xml": "<for index='idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 504.2261505126953,
+        "y": 641.7262935638428,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "d3eaa14b.aea04"
+            ]
+        ]
+    },
+    {
+        "id": "d3eaa14b.aea04",
+        "type": "switchNode",
+        "name": "switch mapped source port id == input source port id",
+        "xml": "<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$idx].source-port-id\n  == $port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 857.0833282470703,
+        "y": 640.2976245880127,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "c2e13495.7d0978"
+            ]
+        ]
+    },
+    {
+        "id": "c2e13495.7d0978",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1132.797565460205,
+        "y": 638.8691053390503,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "e115b87b.36f0f8"
+            ]
+        ]
+    },
+    {
+        "id": "640f5b27.a577f4",
+        "type": "set",
+        "name": "set src-idx",
+        "xml": "<set>\n<parameter name='src-idx' value='`$idx`' />\n",
+        "comments": "",
+        "x": 1482.797492980957,
+        "y": 614.5833559036255,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "e115b87b.36f0f8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1285.6547088623047,
+        "y": 637.4405879974365,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "640f5b27.a577f4",
+                "a7ee3026.a6e8"
+            ]
+        ]
+    },
+    {
+        "id": "a7ee3026.a6e8",
+        "type": "break",
+        "name": "break",
+        "xml": "<break>\n",
+        "comments": "",
+        "x": 1455.6546821594238,
+        "y": 660.2977313995361,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "2ba101b7.37177e",
+        "type": "switchNode",
+        "name": "switch src-idx",
+        "xml": "<switch test='`$src-idx`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 454.46424102783203,
+        "y": 708.8691101074219,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "58ac3aae.bc8044"
+            ]
+        ]
+    },
+    {
+        "id": "58ac3aae.bc8044",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 672.7975921630859,
+        "y": 707.4405879974365,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "d5822713.a71b88"
+            ]
+        ]
+    },
+    {
+        "id": "d5822713.a71b88",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Unable to find source port ' + $port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id + ' in MD-SAL'`\" />\n",
+        "comments": "",
+        "x": 827.0832977294922,
+        "y": 706.011999130249,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "327c0b68.fb42d4",
+        "type": "execute",
+        "name": "execute ContrailAdaptor to disable port mirroring",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='port-mirroring' />\n<parameter name='api-action' value='disable' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='display-name'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />\n<parameter name='contrail-virtual-machine-interface-name'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />\n<parameter name='contrail-virtual-machine-interface-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />\n<parameter name='default-domain' value='default-domain' />\n<parameter name='default-project'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />\n<parameter name='traffic-direction' value='both' />\n<parameter name='analyzer-ip-address'\n  value='`$tmp.analyzer.ip-address`' />\n<parameter name='udp-port' value='8099' />\n<parameter name='routing-instance'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />\n<parameter name='local-preference' value='1' />\n<parameter name='cloud-region-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />\n<parameter name='cloud-owner'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 564.7978134155273,
+        "y": 1069.9178819656372,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "eaf862d4.043dd",
+                "c50ee7c7.395c58"
+            ]
+        ]
+    },
+    {
+        "id": "eaf862d4.043dd",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 839.083438873291,
+        "y": 1095.6321649551392,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "b5b4127.7ba46f"
+            ]
+        ]
+    },
+    {
+        "id": "303f390e.c7fa26",
+        "type": "switchNode",
+        "name": "switch ipv4-address",
+        "xml": "<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 471.94065856933594,
+        "y": 812.7750616073608,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "8298b662.2d9938",
+                "87756d33.8ea47"
+            ]
+        ]
+    },
+    {
+        "id": "87756d33.8ea47",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 637.6548538208008,
+        "y": 854.2036333084106,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "1bac5e62.5c03a2"
+            ]
+        ]
+    },
+    {
+        "id": "8298b662.2d9938",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 640.5120010375977,
+        "y": 811.3465251922607,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "9156cd31.843db"
+            ]
+        ]
+    },
+    {
+        "id": "9156cd31.843db",
+        "type": "set",
+        "name": "set tmp.analyzer.ip-address",
+        "xml": "<set>\n<parameter name='tmp.analyzer.ip-address'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`' />\n",
+        "comments": "",
+        "x": 831.9406890869141,
+        "y": 809.9179544448853,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "1bac5e62.5c03a2",
+        "type": "switchNode",
+        "name": "switch ipv6-address",
+        "xml": "<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 809.0835189819336,
+        "y": 854.2035989761353,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "fa2aeb48.7c5db8",
+                "b61120a5.93b57"
+            ]
+        ]
+    },
+    {
+        "id": "b61120a5.93b57",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 970.5121078491211,
+        "y": 897.0607767105103,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "9b289fea.447ed"
+            ]
+        ]
+    },
+    {
+        "id": "fa2aeb48.7c5db8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 973.369255065918,
+        "y": 854.2036685943604,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "9a995b34.8ffdf8"
+            ]
+        ]
+    },
+    {
+        "id": "9a995b34.8ffdf8",
+        "type": "set",
+        "name": "set tmp.analyzer.ip-address",
+        "xml": "<set>\n<parameter name='tmp.analyzer.ip-address'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`' />\n",
+        "comments": "",
+        "x": 1164.7979431152344,
+        "y": 852.7750978469849,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "9b289fea.447ed",
+        "type": "switchNode",
+        "name": "switch vipv4-address",
+        "xml": "<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1141.940773010254,
+        "y": 897.0607423782349,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "b626a219.807f2",
+                "62515cbb.2125a4"
+            ]
+        ]
+    },
+    {
+        "id": "62515cbb.2125a4",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1304.797752380371,
+        "y": 937.0607767105103,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "2e6d6d0b.171e12"
+            ]
+        ]
+    },
+    {
+        "id": "b626a219.807f2",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1306.2263145446777,
+        "y": 895.6323432922363,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "71b7c0e4.601d3"
+            ]
+        ]
+    },
+    {
+        "id": "71b7c0e4.601d3",
+        "type": "set",
+        "name": "set tmp.analyzer.ip-address",
+        "xml": "<set>\n<parameter name='tmp.analyzer.ip-address'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`' />\n",
+        "comments": "",
+        "x": 1499.0835876464844,
+        "y": 892.7750978469849,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "2e6d6d0b.171e12",
+        "type": "switchNode",
+        "name": "switch vipv6-address",
+        "xml": "<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1476.226417541504,
+        "y": 937.0607423782349,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "c630f236.09afb",
+                "d62a09ce.06cd18"
+            ]
+        ]
+    },
+    {
+        "id": "d62a09ce.06cd18",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1643.369285583496,
+        "y": 978.4893655776978,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "cf52a216.7bcba"
+            ]
+        ]
+    },
+    {
+        "id": "c630f236.09afb",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1644.7978477478027,
+        "y": 937.0609321594238,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "a5b80d6a.ee8af"
+            ]
+        ]
+    },
+    {
+        "id": "a5b80d6a.ee8af",
+        "type": "set",
+        "name": "set tmp.analyzer.ip-address",
+        "xml": "<set>\n<parameter name='tmp.analyzer.ip-address'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`' />\n",
+        "comments": "",
+        "x": 1837.6551208496094,
+        "y": 934.2036867141724,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "c50ee7c7.395c58",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 841.940616607666,
+        "y": 1048.489239692688,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "e0872973.76a968"
+            ]
+        ]
+    },
+    {
+        "id": "e0872973.76a968",
+        "type": "set",
+        "name": "set contrail-set[]",
+        "xml": "<set>\n<parameter name='contrail-set[$src-idx]' value='true' />\n",
+        "comments": "",
+        "x": 997.6548233032227,
+        "y": 1047.0607719421387,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "3cd84440.1100cc",
+        "type": "save",
+        "name": "update l-interface object",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"l-interface\"\n   key=\"cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id\n     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner\n     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id\n     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id\n     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"is-port-mirrored\" value=\"false\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 489.3213806152344,
+        "y": 1215.5833673477173,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "8a4455b4.e26628",
+                "6a76abbb.425c24"
+            ]
+        ]
+    },
+    {
+        "id": "8a4455b4.e26628",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 692.0119781494141,
+        "y": 1241.3455305099487,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "ae976edd.7993e"
+            ]
+        ]
+    },
+    {
+        "id": "6a76abbb.425c24",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 700.5834274291992,
+        "y": 1196.3457250595093,
+        "z": "dca5409f.4b488",
+        "wires": [
+            [
+                "ae976edd.7993e"
+            ]
+        ]
+    },
+    {
+        "id": "cf52a216.7bcba",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'No dest addresses stored for source port ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`\" />\n",
+        "comments": "",
+        "x": 1787.3213348388672,
+        "y": 981.250036239624,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "b5b4127.7ba46f",
+        "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 policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `\" />\n",
+        "comments": "",
+        "x": 985.6546478271484,
+        "y": 1094.5834102630615,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "ae976edd.7993e",
+        "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 l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`\" />\n",
+        "comments": "",
+        "x": 855.6546478271484,
+        "y": 1217.9166622161865,
+        "z": "dca5409f.4b488",
+        "wires": []
+    },
+    {
+        "id": "8e3809f5.0badf8",
+        "type": "set",
+        "name": "set pm",
+        "xml": "<set>\n<parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />\n<parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />\n",
+        "comments": "",
+        "x": 432.55950927734375,
+        "y": 439.1071090698242,
+        "z": "dca5409f.4b488",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-enable.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-enable.json
new file mode 100644
index 0000000..20e5801
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-enable.json
@@ -0,0 +1,918 @@
+[
+    {
+        "id": "5adde416.25d82c",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 151.25,
+        "y": 82.5,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "f0d6c1e7.e9754"
+            ]
+        ]
+    },
+    {
+        "id": "f0d6c1e7.e9754",
+        "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": 264.86902618408203,
+        "y": 122.73811340332031,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "1bb8c706.86cf19"
+            ]
+        ]
+    },
+    {
+        "id": "1bb8c706.86cf19",
+        "type": "method",
+        "name": "method port-mirror-topology-operation-enable",
+        "xml": "<method rpc='port-mirror-topology-operation-enable' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 262.67862701416016,
+        "y": 162.5,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "3f0e699d.ee6b26"
+            ]
+        ]
+    },
+    {
+        "id": "ca18bf42.ec464",
+        "type": "comment",
+        "name": "port-mirror-topology-operation-enable",
+        "info": "",
+        "comments": "",
+        "x": 545.594856262207,
+        "y": 30.08634376525879,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "3f0e699d.ee6b26",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 171.25,
+        "y": 838.7857360839844,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "619ea22e.2d4c6c",
+                "220efff8.59bd1",
+                "e9a1e227.a59d4",
+                "9e05525a.a9d25",
+                "ec899d65.1b6fe",
+                "1136c5cf.986f4a",
+                "15dfeaaf.517f25",
+                "2719e30.6219c1e",
+                "342ea105.23807e",
+                "804aef34.90cfa",
+                "baf0ce69.2f35f",
+                "32680418.d56afc",
+                "bfcb7fe0.37cd9"
+            ]
+        ]
+    },
+    {
+        "id": "619ea22e.2d4c6c",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n<parameter name='error-code' value='200' />\n<parameter name='ack-final' value='Y' />",
+        "comments": "",
+        "x": 473.44041442871094,
+        "y": 1300.4524230957031,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "220efff8.59bd1",
+        "type": "set",
+        "name": "set tmp.configuration-id",
+        "xml": "<set>\n<parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />\n\n",
+        "comments": "",
+        "x": 507.3928527832031,
+        "y": 247.26190280914307,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "e9a1e227.a59d4",
+        "type": "execute",
+        "name": "execute readProperties",
+        "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": 507.44049072265625,
+        "y": 291.7856664657593,
+        "z": "58cb31c4.064af",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9e05525a.a9d25",
+        "type": "execute",
+        "name": "generate port-mirror-configuration url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.pm-configuration`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.pmc-url\"/>\n    <parameter name=\"target\" value=\"{configuration-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.configuration-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 547.4404983520508,
+        "y": 333.21424198150635,
+        "z": "58cb31c4.064af",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ec899d65.1b6fe",
+        "type": "execute",
+        "name": "execute RestApiCallNode - get port-mirror-configuration",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"pm-mdsal\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 606.011962890625,
+        "y": 397.50005054473877,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "a3fb8257.281cc",
+                "1dbed5b9.b3c47a"
+            ]
+        ]
+    },
+    {
+        "id": "a3fb8257.281cc",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 904.1650848388672,
+        "y": 368.30789947509766,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "13e2119a.dafb2e"
+            ]
+        ]
+    },
+    {
+        "id": "1dbed5b9.b3c47a",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 901.7262229919434,
+        "y": 417.4999933242798,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "500538ee.2c9348"
+            ]
+        ]
+    },
+    {
+        "id": "500538ee.2c9348",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`\" />\n",
+        "comments": "",
+        "x": 1416.0119018554688,
+        "y": 414.6428556442261,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "1136c5cf.986f4a",
+        "type": "switchNode",
+        "name": "switch order-status == 'Active'",
+        "xml": "<switch test=\"`$pm-mdsal.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Active'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 525.5357437133789,
+        "y": 566.7856979370117,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "9f9c8654.9f2f48"
+            ]
+        ]
+    },
+    {
+        "id": "13e2119a.dafb2e",
+        "type": "switchNode",
+        "name": "switch length == 1",
+        "xml": "<switch test='`$pm-mdsal.port-mirror-configuration_length == 1`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1083.15478515625,
+        "y": 367.50000762939453,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "aaef652d.b8a2b8"
+            ]
+        ]
+    },
+    {
+        "id": "aaef652d.b8a2b8",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1253.1548156738281,
+        "y": 367.4999990463257,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "500538ee.2c9348"
+            ]
+        ]
+    },
+    {
+        "id": "9f9c8654.9f2f48",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 754.1071548461914,
+        "y": 566.7857856750488,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "eeb6441b.99eeb8"
+            ]
+        ]
+    },
+    {
+        "id": "eeb6441b.99eeb8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Active'`\" />\n",
+        "comments": "",
+        "x": 915.5357437133789,
+        "y": 565.3571968078613,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "71c64fbf.2aa49",
+        "type": "comment",
+        "name": "rpc-port-mirror-1140",
+        "info": "",
+        "comments": "",
+        "x": 466.9642769949776,
+        "y": 618.2142756325857,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "3cb4a473.b4c24c",
+        "type": "comment",
+        "name": "step 1 - call contrail to turn on packet mirroring",
+        "info": "",
+        "comments": "",
+        "x": 569.8214721679688,
+        "y": 812.4998941421509,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "76580da3.d4bdd4",
+        "type": "comment",
+        "name": "step 2 - set is-port-mirroring in A&AI ",
+        "info": "",
+        "comments": "",
+        "x": 519.8214111328125,
+        "y": 1176.4999980926514,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "96ce9bb9.e4f948",
+        "type": "comment",
+        "name": "Find the source port",
+        "info": "",
+        "comments": "",
+        "x": 482.67856706891735,
+        "y": 663.9286046709333,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "15dfeaaf.517f25",
+        "type": "for",
+        "name": "for each mapped source port",
+        "xml": "<for index='idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 526.9642944335938,
+        "y": 703.9286308288574,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "6cf3769.0801388"
+            ]
+        ]
+    },
+    {
+        "id": "6cf3769.0801388",
+        "type": "switchNode",
+        "name": "switch mapped source port id == input source port id",
+        "xml": "<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$idx].source-port-id\n  == $port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 879.8214721679688,
+        "y": 702.4999618530273,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "eb6b3019.5e8e4"
+            ]
+        ]
+    },
+    {
+        "id": "eb6b3019.5e8e4",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1155.5357093811035,
+        "y": 701.0714426040649,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "e307c639.39c108"
+            ]
+        ]
+    },
+    {
+        "id": "a285427e.78e49",
+        "type": "set",
+        "name": "set src-idx",
+        "xml": "<set>\n<parameter name='src-idx' value='`$idx`' />\n",
+        "comments": "",
+        "x": 1505.5356369018555,
+        "y": 676.7856931686401,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "e307c639.39c108",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1308.3928527832031,
+        "y": 699.6429252624512,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "a285427e.78e49",
+                "8c48a72.1c7bd58"
+            ]
+        ]
+    },
+    {
+        "id": "8c48a72.1c7bd58",
+        "type": "break",
+        "name": "break",
+        "xml": "<break>\n",
+        "comments": "",
+        "x": 1478.3928260803223,
+        "y": 722.5000686645508,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "2719e30.6219c1e",
+        "type": "switchNode",
+        "name": "switch src-idx",
+        "xml": "<switch test='`$src-idx`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 508.3928680419922,
+        "y": 763.9285545349121,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "c3e50276.b25e1"
+            ]
+        ]
+    },
+    {
+        "id": "c3e50276.b25e1",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 698.3928985595703,
+        "y": 762.5000295639038,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "9124ab61.7a5818"
+            ]
+        ]
+    },
+    {
+        "id": "9124ab61.7a5818",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Unable to find source port ' + $port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id + ' in MD-SAL'`\" />\n",
+        "comments": "",
+        "x": 852.6786041259766,
+        "y": 761.0714406967163,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "543e2aaa.e10284",
+        "type": "execute",
+        "name": "execute ContrailAdaptor to enable port mirroring",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='port-mirroring' />\n<parameter name='api-action' value='enable' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='display-name'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />\n<parameter name='contrail-virtual-machine-interface-name'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />\n<parameter name='contrail-virtual-machine-interface-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />\n<parameter name='default-domain' value='default-domain' />\n<parameter name='default-project'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />\n<parameter name='traffic-direction' value='both' />\n<parameter name='analyzer-ip-address'\n  value='`$tmp.analyzer.ip-address`' />\n<parameter name='udp-port' value='8099' />\n<parameter name='routing-instance'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />\n<parameter name='local-preference' value='1' />\n<parameter name='cloud-region-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />\n<parameter name='cloud-owner'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1020.39306640625,
+        "y": 1089.2631912231445,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "b52df8e.2158508",
+                "37e68f52.b8c84"
+            ]
+        ]
+    },
+    {
+        "id": "b52df8e.2158508",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1306.107292175293,
+        "y": 1136.4061088562012,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "6f92bbb5.4e7174"
+            ]
+        ]
+    },
+    {
+        "id": "342ea105.23807e",
+        "type": "switchNode",
+        "name": "switch ipv4-address",
+        "xml": "<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 497.5359649658203,
+        "y": 867.8345031738281,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "709a0a15.610554",
+                "1919fbe0.da0d04"
+            ]
+        ]
+    },
+    {
+        "id": "1919fbe0.da0d04",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 663.2501602172852,
+        "y": 909.2630748748779,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "dc45b2dd.76525"
+            ]
+        ]
+    },
+    {
+        "id": "709a0a15.610554",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 666.107307434082,
+        "y": 866.405966758728,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "ce9f0ed3.39cb8"
+            ]
+        ]
+    },
+    {
+        "id": "ce9f0ed3.39cb8",
+        "type": "set",
+        "name": "set tmp.analyzer.ip-address",
+        "xml": "<set>\n<parameter name='tmp.analyzer.ip-address'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`' />\n",
+        "comments": "",
+        "x": 857.5359954833984,
+        "y": 864.9773960113525,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "dc45b2dd.76525",
+        "type": "switchNode",
+        "name": "switch ipv6-address",
+        "xml": "<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 834.678825378418,
+        "y": 909.2630405426025,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "6b47b7ee.d11718",
+                "6bac94c0.a1f64c"
+            ]
+        ]
+    },
+    {
+        "id": "6bac94c0.a1f64c",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 996.1074142456055,
+        "y": 952.1202182769775,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "34101e3d.38c422"
+            ]
+        ]
+    },
+    {
+        "id": "6b47b7ee.d11718",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 998.9645614624023,
+        "y": 909.2631101608276,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "bc0a7eb3.66ceb"
+            ]
+        ]
+    },
+    {
+        "id": "bc0a7eb3.66ceb",
+        "type": "set",
+        "name": "set tmp.analyzer.ip-address",
+        "xml": "<set>\n<parameter name='tmp.analyzer.ip-address'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`' />\n",
+        "comments": "",
+        "x": 1190.3932495117188,
+        "y": 907.8345394134521,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "34101e3d.38c422",
+        "type": "switchNode",
+        "name": "switch vipv4-address",
+        "xml": "<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1167.5360794067383,
+        "y": 952.1201839447021,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "54296b64.cd6a24",
+                "b7e8467a.afd798"
+            ]
+        ]
+    },
+    {
+        "id": "b7e8467a.afd798",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1330.3930587768555,
+        "y": 992.1202182769775,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "22cb5011.f1c79"
+            ]
+        ]
+    },
+    {
+        "id": "54296b64.cd6a24",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1331.821620941162,
+        "y": 950.6917848587036,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "81a229c4.e7cc48"
+            ]
+        ]
+    },
+    {
+        "id": "81a229c4.e7cc48",
+        "type": "set",
+        "name": "set tmp.analyzer.ip-address",
+        "xml": "<set>\n<parameter name='tmp.analyzer.ip-address'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`' />\n",
+        "comments": "",
+        "x": 1524.6788940429688,
+        "y": 947.8345394134521,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "22cb5011.f1c79",
+        "type": "switchNode",
+        "name": "switch vipv6-address",
+        "xml": "<switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1501.8217239379883,
+        "y": 992.1201839447021,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "17fa6ffd.4aef",
+                "3594874e.b52a08"
+            ]
+        ]
+    },
+    {
+        "id": "3594874e.b52a08",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1668.9645919799805,
+        "y": 1033.548807144165,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "9f23c2c.e727c4"
+            ]
+        ]
+    },
+    {
+        "id": "17fa6ffd.4aef",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1670.393154144287,
+        "y": 992.1203737258911,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "e6dded52.b823a"
+            ]
+        ]
+    },
+    {
+        "id": "e6dded52.b823a",
+        "type": "set",
+        "name": "set tmp.analyzer.ip-address",
+        "xml": "<set>\n<parameter name='tmp.analyzer.ip-address'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`' />\n",
+        "comments": "",
+        "x": 1863.2504272460938,
+        "y": 989.2631282806396,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "37e68f52.b8c84",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1308.964469909668,
+        "y": 1089.26318359375,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "b43df042.63f3f"
+            ]
+        ]
+    },
+    {
+        "id": "b43df042.63f3f",
+        "type": "set",
+        "name": "set contrail-set[]",
+        "xml": "<set>\n<parameter name='contrail-set[$src-idx]' value='true' />\n",
+        "comments": "",
+        "x": 1464.6786766052246,
+        "y": 1087.8347158432007,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "804aef34.90cfa",
+        "type": "save",
+        "name": "update l-interface object",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"l-interface\"\n   key=\"cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id\n     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner\n     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id\n     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id\n     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"is-port-mirrored\" value=\"true\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 504.9165954589844,
+        "y": 1232.0713911056519,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "31db754b.638e9a",
+                "73dc8185.75918"
+            ]
+        ]
+    },
+    {
+        "id": "31db754b.638e9a",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 707.6072006225586,
+        "y": 1257.8335437774658,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "73c149a8.37a3b8"
+            ]
+        ]
+    },
+    {
+        "id": "73dc8185.75918",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 716.1786499023438,
+        "y": 1212.8337383270264,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "73c149a8.37a3b8"
+            ]
+        ]
+    },
+    {
+        "id": "9f23c2c.e727c4",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'No dest addresses stored for source port ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`\" />\n",
+        "comments": "",
+        "x": 1812.9166412353516,
+        "y": 1036.3094778060913,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "6f92bbb5.4e7174",
+        "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 policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `\" />\n",
+        "comments": "",
+        "x": 1452.6785011291504,
+        "y": 1135.3573541641235,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "73c149a8.37a3b8",
+        "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 l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`\" />\n",
+        "comments": "",
+        "x": 871.249870300293,
+        "y": 1234.4046754837036,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "baf0ce69.2f35f",
+        "type": "set",
+        "name": "set pm",
+        "xml": "<set>\n<parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />\n<parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />\n",
+        "comments": "",
+        "x": 457.9166564941406,
+        "y": 447.9761657714844,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "32680418.d56afc",
+        "type": "switchNode",
+        "name": "switch tmp.configuration-sub-type",
+        "xml": "<switch test='`$tmp.configuration-sub-type`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 539.8214263916016,
+        "y": 1115.3572463989258,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "8606aede.0e8d7",
+                "b942b8d4.db5818"
+            ]
+        ]
+    },
+    {
+        "id": "8606aede.0e8d7",
+        "type": "outcome",
+        "name": "vprobe",
+        "xml": "<outcome value='vprobe'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 755.6785888671875,
+        "y": 1091.0715599060059,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "543e2aaa.e10284"
+            ]
+        ]
+    },
+    {
+        "id": "b942b8d4.db5818",
+        "type": "outcome",
+        "name": "pprobe",
+        "xml": "<outcome value='pprobe'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 756.9642791748047,
+        "y": 1138.2144260406494,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "f80f3420.bfae08"
+            ]
+        ]
+    },
+    {
+        "id": "bfcb7fe0.37cd9",
+        "type": "set",
+        "name": "set tmp.configuration-sub-type",
+        "xml": "<set>\n<parameter name='tmp.configuration-sub-type' value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type`' />\n",
+        "comments": "",
+        "x": 529.8214416503906,
+        "y": 508.2143306732178,
+        "z": "58cb31c4.064af",
+        "wires": []
+    },
+    {
+        "id": "f80f3420.bfae08",
+        "type": "execute",
+        "name": "execute ContrailAdaptor to enable port mirroring",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='port-mirroring' />\n<parameter name='api-action' value='enable' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='display-name'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />\n<parameter name='contrail-virtual-machine-interface-name'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />\n<parameter name='contrail-virtual-machine-interface-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />\n<parameter name='default-domain' value='default-domain' />\n<parameter name='default-project'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />\n<parameter name='traffic-direction' value='both' />\n<parameter name='analyzer-ip-address'\n  value='`$tmp.analyzer.ip-address`' />\n<parameter name='vni' value='1000' />\n<parameter name='udp-port' value='8099' />\n<parameter name='routing-instance'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />\n<parameter name='local-preference' value='1' />\n<parameter name='juniper-header' value='false' />\n<parameter name='cloud-region-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />\n<parameter name='cloud-owner'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1018.3928833007812,
+        "y": 1136.7857656478882,
+        "z": "58cb31c4.064af",
+        "wires": [
+            [
+                "37e68f52.b8c84",
+                "b52df8e.2158508"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-pprobe.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-pprobe.json
new file mode 100644
index 0000000..1d56f1b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-pprobe.json
@@ -0,0 +1,564 @@
+[
+    {
+        "id": "de11a95f.852ac8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 106.66664123535156,
+        "y": 84.99999523162842,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "a6b03503.57f968"
+            ]
+        ]
+    },
+    {
+        "id": "a6b03503.57f968",
+        "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.6190185546875,
+        "y": 125.23811626434326,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "e999d03f.3a56d"
+            ]
+        ]
+    },
+    {
+        "id": "e999d03f.3a56d",
+        "type": "method",
+        "name": "method port-mirror-topology-operation-mapping-pprobe",
+        "xml": "<method rpc='port-mirror-topology-operation-mapping-pprobe' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 247.95243072509766,
+        "y": 166.42856884002686,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "d54a5c4.3df72a"
+            ]
+        ]
+    },
+    {
+        "id": "9baf7ef3.09748",
+        "type": "comment",
+        "name": "port-mirror-topology-operation-mapping-pprobe",
+        "info": "",
+        "comments": "",
+        "x": 501.0114974975586,
+        "y": 32.58633899688721,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "d54a5c4.3df72a",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 123.33333587646484,
+        "y": 659.9999465942383,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "c44a1b6c.6ee0e8",
+                "f3a203c9.954a3",
+                "e0b23aa2.a3c348",
+                "b278293c.4f9588",
+                "5b676e8b.e1385",
+                "9c57370e.4caf68",
+                "8cb804df.babd98",
+                "b04d986.600fc68",
+                "12cb160c.65893a"
+            ]
+        ]
+    },
+    {
+        "id": "c44a1b6c.6ee0e8",
+        "type": "get-resource",
+        "name": "get-resource l-interface",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"l-interfaces\" \n\t\tkey=\"pnf.pnf-name = $tmp.dest-pnf-name AND \n\t\t     p-interface.interface-name = $tmp.dest-p-interface AND depth='all'\"\n        pfx='aai.pnf.p-interface' local-only='false' >\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 423.3333206176758,
+        "y": 378.3333511352539,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "60c80e24.84bd3",
+                "b6d325fc.465448"
+            ]
+        ]
+    },
+    {
+        "id": "b6d325fc.465448",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 637.5795135498047,
+        "y": 396.4842071533203,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "224dbadd.8b3fd6"
+            ]
+        ]
+    },
+    {
+        "id": "224dbadd.8b3fd6",
+        "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 retrieving l-interfaces from AAI\" />\n",
+        "comments": "",
+        "x": 812.5794868469238,
+        "y": 396.48424339294434,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "60c80e24.84bd3",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 646.5081100463867,
+        "y": 354.76994037628174,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "73dbd598.33544c"
+            ]
+        ]
+    },
+    {
+        "id": "73dbd598.33544c",
+        "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=\"Destination L-Interfaces are not set for the Destination PNF\" />\n",
+        "comments": "",
+        "x": 812.8573875427246,
+        "y": 354.07551765441895,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "f3a203c9.954a3",
+        "type": "switchNode",
+        "name": "switch l-interface_length > 0",
+        "xml": "<switch test='`$aai.pnf.p-interface.l-interface_length &gt; 0`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 436.6666793823242,
+        "y": 445.0000305175781,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "1a36b2b3.1d74ed"
+            ]
+        ]
+    },
+    {
+        "id": "1a36b2b3.1d74ed",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 648.3333702087402,
+        "y": 443.3333435058594,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "cb4e30bc.89d64"
+            ]
+        ]
+    },
+    {
+        "id": "cb4e30bc.89d64",
+        "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=\"Destination L-Interface is not set for the Destination PNF\" />\n",
+        "comments": "",
+        "x": 811.666618347168,
+        "y": 441.66665744781494,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "e0b23aa2.a3c348",
+        "type": "for",
+        "name": "for each l-interface",
+        "xml": "<for index='idx' start='0' end='`$aai.pnf.p-interface.l-interface_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 403.3332977294922,
+        "y": 604.9999256134033,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "4f93bc13.888424"
+            ]
+        ]
+    },
+    {
+        "id": "4f93bc13.888424",
+        "type": "switchNode",
+        "name": "switch ipv4-address",
+        "xml": "<switch test='`$aai.pnf.p-interface.l-interface[$idx].l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 608.3333282470703,
+        "y": 605.0000076293945,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "e8c160d6.30e49",
+                "87df81a2.3bf67"
+            ]
+        ]
+    },
+    {
+        "id": "e8c160d6.30e49",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 786.6665878295898,
+        "y": 556.6665945053101,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "8ccdea1a.97e9d8"
+            ]
+        ]
+    },
+    {
+        "id": "87df81a2.3bf67",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 786.238037109375,
+        "y": 675.2859592437744,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "8affe25c.62539"
+            ]
+        ]
+    },
+    {
+        "id": "8ccdea1a.97e9d8",
+        "type": "switchNode",
+        "name": "switch ipv6-address",
+        "xml": "<switch test='`$aai.pnf.p-interface.l-interface[$idx].l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 979.9999237060547,
+        "y": 554.999942779541,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "85f2249f.93aab8",
+                "deb53a82.0016d8"
+            ]
+        ]
+    },
+    {
+        "id": "85f2249f.93aab8",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1153.3333358764648,
+        "y": 529.9999618530273,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "50b58898.682778"
+            ]
+        ]
+    },
+    {
+        "id": "deb53a82.0016d8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1151.238151550293,
+        "y": 581.9526376724243,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "f1c94d40.8d93d"
+            ]
+        ]
+    },
+    {
+        "id": "ee128f1d.83c73",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Destination Port IP Address is not set for the Destination PNF' />\n",
+        "comments": "",
+        "x": 740.0000228881836,
+        "y": 756.6667022705078,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "68c4a0ec.b8bfe",
+        "type": "break",
+        "name": "break",
+        "xml": "<break>\n",
+        "comments": "",
+        "x": 1106.6666946411133,
+        "y": 699.9999504089355,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "50b58898.682778",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1306.6666450500488,
+        "y": 528.3333024978638,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b278293c.4f9588",
+        "type": "set",
+        "name": "set tmp.found-one to false",
+        "xml": "<set>\n<parameter name='tmp.found-one' value='false' />\n",
+        "comments": "",
+        "x": 428.3332977294922,
+        "y": 491.6666488647461,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "8affe25c.62539",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 953.333324432373,
+        "y": 676.666615486145,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "98c4128d.4f2a3",
+                "68c4a0ec.b8bfe"
+            ]
+        ]
+    },
+    {
+        "id": "98c4128d.4f2a3",
+        "type": "set",
+        "name": "set tmp.found-one to true",
+        "xml": "<set>\n<parameter name='tmp.found-one' value='true' />\n",
+        "comments": "",
+        "x": 1164.999927520752,
+        "y": 651.6666278839111,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "a9b64a4f.527c28",
+        "type": "break",
+        "name": "break",
+        "xml": "<break>\n",
+        "comments": "",
+        "x": 1463.3333473205566,
+        "y": 601.6666526794434,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "f1c94d40.8d93d",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1309.9999771118164,
+        "y": 578.3333177566528,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "a8e91133.3c04",
+                "a9b64a4f.527c28"
+            ]
+        ]
+    },
+    {
+        "id": "a8e91133.3c04",
+        "type": "set",
+        "name": "set tmp.found-one to true",
+        "xml": "<set>\n<parameter name='tmp.found-one' value='true' />\n",
+        "comments": "",
+        "x": 1521.6665802001953,
+        "y": 553.333330154419,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "5b676e8b.e1385",
+        "type": "switchNode",
+        "name": "switch tmp.found-one",
+        "xml": "<switch test='`$tmp.found-one`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 406.6666717529297,
+        "y": 758.333345413208,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "5a39c52e.e2842c"
+            ]
+        ]
+    },
+    {
+        "id": "5a39c52e.e2842c",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 585,
+        "y": 756.6666469573975,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "ee128f1d.83c73"
+            ]
+        ]
+    },
+    {
+        "id": "8cb804df.babd98",
+        "type": "for",
+        "name": "for each source vnfc-object",
+        "xml": "<for silentFailure='true' index='vnfc-so-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 423.33326721191406,
+        "y": 854.9999198913574,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "9172f540.14fc68"
+            ]
+        ]
+    },
+    {
+        "id": "9172f540.14fc68",
+        "type": "for",
+        "name": "for each source vnic",
+        "xml": "<for silentFailure='true' index='vnic-s-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 664.9999313354492,
+        "y": 854.4270343780518,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "453bf3e8.000eac"
+            ]
+        ]
+    },
+    {
+        "id": "9c57370e.4caf68",
+        "type": "set",
+        "name": "set map-idx to 0",
+        "xml": "<set>\n<parameter name='map-idx' value='0' />\n",
+        "comments": "",
+        "x": 390.4284973144531,
+        "y": 808.3320236206055,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "12cb160c.65893a",
+        "type": "set",
+        "name": "set source-to-dest-map_length",
+        "xml": "<set>\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length'\n  value='`$map-idx`' />\n",
+        "comments": "",
+        "x": 433.3330726623535,
+        "y": 925,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "6c80f24a.f38ccc",
+        "type": "set",
+        "name": "set source-to-dest-map",
+        "xml": "<set>\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-port-id'\n  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-port-name'\n  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-name`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-vserver-id'\n  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vserver-id`' />\n\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-port-id'\n  value='`$aai.pnf.p-interface.l-interface[$idx].interface-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-port-name'\n  value='`$aai.pnf.p-interface.l-interface[$idx].interface-name`' />\n\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-ip-addresses.ip-addresses.ipv4-address'\n  value='`$aai.pnf.p-interface.l-interface[$idx].l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-ip-addresses.ip-addresses.ipv6-address'\n  value='`$aai.pnf.p-interface.l-interface[$idx].l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`' />\n",
+        "comments": "",
+        "x": 1074.9999542236328,
+        "y": 831.6666221618652,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "bcb038b9.b6a1a8",
+        "type": "set",
+        "name": "increment map-idx",
+        "xml": "<set>\n<parameter name='map-idx' value='`$map-idx + 1`' />\n",
+        "comments": "",
+        "x": 1058.999885559082,
+        "y": 877.6667728424072,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "b04d986.600fc68",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n",
+        "comments": "",
+        "x": 383.3333549499512,
+        "y": 973.3333053588867,
+        "z": "b6bc16fc.df4e08",
+        "wires": []
+    },
+    {
+        "id": "453bf3e8.000eac",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 863.3333129882812,
+        "y": 853.3333129882812,
+        "z": "b6bc16fc.df4e08",
+        "wires": [
+            [
+                "6c80f24a.f38ccc",
+                "bcb038b9.b6a1a8"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-vprobe.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-vprobe.json
new file mode 100644
index 0000000..5a692a4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-vprobe.json
@@ -0,0 +1,1028 @@
+[
+    {
+        "id": "d865558f.8efaa8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 117.14286041259766,
+        "y": 84.28571319580078,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "846785d8.683638"
+            ]
+        ]
+    },
+    {
+        "id": "846785d8.683638",
+        "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": 231.0952377319336,
+        "y": 124.52383422851562,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "d2d2a3b0.5e5cf"
+            ]
+        ]
+    },
+    {
+        "id": "d2d2a3b0.5e5cf",
+        "type": "method",
+        "name": "method port-mirror-topology-operation-mapping-vprobe",
+        "xml": "<method rpc='port-mirror-topology-operation-mapping-vprobe' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 258.42864990234375,
+        "y": 165.71428680419922,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "67b4d64c.e399f8"
+            ]
+        ]
+    },
+    {
+        "id": "95f0422f.b3d2c",
+        "type": "comment",
+        "name": "port-mirror-topology-operation-mapping-vprobe",
+        "info": "",
+        "comments": "",
+        "x": 511.4877166748047,
+        "y": 31.87205696105957,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "aa8038f.fd261c8",
+        "type": "for",
+        "name": "for each source vnfc-object",
+        "xml": "<for silentFailure='true' index='vnfc-so-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 412.14302825927734,
+        "y": 834.618974685669,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "3837ea89.85c4d6"
+            ]
+        ]
+    },
+    {
+        "id": "3837ea89.85c4d6",
+        "type": "for",
+        "name": "for each source vnic",
+        "xml": "<for silentFailure='true' index='vnic-s-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 653.8096923828125,
+        "y": 834.0460891723633,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "833c3032.ce493"
+            ]
+        ]
+    },
+    {
+        "id": "8cb72a4d.cda468",
+        "type": "for",
+        "name": "for each dest vnfc-object",
+        "xml": "<for silentFailure='true' index='vnfc-do-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1092.33349609375,
+        "y": 733.9510021209717,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "5e36f7e6.7d7318"
+            ]
+        ]
+    },
+    {
+        "id": "5e36f7e6.7d7318",
+        "type": "for",
+        "name": "for each dest vnic",
+        "xml": "<for silentFailure='true' index='vnic-d-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1314.7146072387695,
+        "y": 733.3326072692871,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "13722054.5e929"
+            ]
+        ]
+    },
+    {
+        "id": "9c27bf76.2cc07",
+        "type": "switchNode",
+        "name": "enough capacity?",
+        "xml": "<switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].capacity.vnic-capacity\n  &lt;= $tmp.rem-cap`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1693.048080444336,
+        "y": 758.2370805740356,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "50e739ed.9ece08"
+            ]
+        ]
+    },
+    {
+        "id": "13722054.5e929",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1504.0004272460938,
+        "y": 732.5232133865356,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "5ec61bd2.c386d4",
+                "9c27bf76.2cc07"
+            ]
+        ]
+    },
+    {
+        "id": "5ec61bd2.c386d4",
+        "type": "set",
+        "name": "set remaining capacity",
+        "xml": "<set>\n<parameter name='tmp.rem-cap' value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.vnic-capacity\n  - $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.used-capacity`' />\n",
+        "comments": "",
+        "x": 1706.6194534301758,
+        "y": 705.8562164306641,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "50e739ed.9ece08",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1860.4287872314453,
+        "y": 757.6658725738525,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "ee37c9ea.374c38"
+            ]
+        ]
+    },
+    {
+        "id": "80910918.dbf9d8",
+        "type": "set",
+        "name": "add to used-capacity",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].capacity.used-capacity'\n  value='`$tmp.src-pps + $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].capacity.used-capacity`' />\n",
+        "comments": "",
+        "x": 1082.3334579467773,
+        "y": 914.6179370880127,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "2a8d0015.ea3c6",
+        "type": "set",
+        "name": "set source-to-dest-map",
+        "xml": "<set>\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-port-id'\n  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-port-name'\n  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-name`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-vserver-id'\n  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vserver-id`' />\n\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-port-id'\n  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].vnic-port-id`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-port-name'\n  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].vnic-port-name`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-vserver-id'\n  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vserver-id`' />\n\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-ip-addresses.ip-addresses.ipv4-address'\n  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].vnic-ip-addresses.ip-addresses.ipv4-address`' />\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-ip-addresses.ip-addresses.ipv6-address'\n  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].vnic-ip-addresses.ip-addresses.ipv6-address`' />\n",
+        "comments": "",
+        "x": 1089.0001525878906,
+        "y": 957.9512882232666,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "342ed31a.7fb37c",
+        "type": "set",
+        "name": "set tmp.found-capacity=N",
+        "xml": "<set>\n<parameter name='tmp.found-capacity' value='N' />\n<parameter name='tmp.save-rem-cap' value='0' />\n",
+        "comments": "",
+        "x": 1097.0956268310547,
+        "y": 684.903995513916,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "d265eabd.0ec438",
+        "type": "switchNode",
+        "name": "switch found-capacity == N?",
+        "xml": "<switch test=\"`$tmp.found-capacity == 'N'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1100.428955078125,
+        "y": 799.9037551879883,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "16e3151a.db68db"
+            ]
+        ]
+    },
+    {
+        "id": "16e3151a.db68db",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1297.5717010498047,
+        "y": 800.2611198425293,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "78769168.05467"
+            ]
+        ]
+    },
+    {
+        "id": "833c3032.ce493",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 854.476448059082,
+        "y": 834.1895208358765,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "342ed31a.7fb37c",
+                "8cb72a4d.cda468",
+                "d265eabd.0ec438",
+                "80910918.dbf9d8",
+                "2a8d0015.ea3c6",
+                "7030b73e.7416d8"
+            ]
+        ]
+    },
+    {
+        "id": "9021e5af.5cc618",
+        "type": "set",
+        "name": "set map-idx to 0",
+        "xml": "<set>\n<parameter name='map-idx' value='0' />\n",
+        "comments": "",
+        "x": 379.2382507324219,
+        "y": 620.6177444458008,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "7030b73e.7416d8",
+        "type": "set",
+        "name": "increment map-idx",
+        "xml": "<set>\n<parameter name='map-idx' value='`$map-idx + 1`' />\n",
+        "comments": "",
+        "x": 1073.0000839233398,
+        "y": 1003.9514389038086,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "ee37c9ea.374c38",
+        "type": "switchNode",
+        "name": "is there an ipv4-address?",
+        "xml": "<switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-ip-addresses.ip-addresses.ipv4-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2050.3812103271484,
+        "y": 758.2372093200684,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "42d3f046.6533e",
+                "3e7e4f38.7c3b3"
+            ]
+        ]
+    },
+    {
+        "id": "42d3f046.6533e",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2250.381191253662,
+        "y": 756.8089141845703,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "9898c47b.17dc68"
+            ]
+        ]
+    },
+    {
+        "id": "9898c47b.17dc68",
+        "type": "switchNode",
+        "name": "is there an ipv6-address?",
+        "xml": "<switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-ip-addresses.ip-addresses.ipv6-address`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2444.6669692993164,
+        "y": 755.380163192749,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "7758eb3f.b453a4",
+                "bbcfc415.922a78"
+            ]
+        ]
+    },
+    {
+        "id": "7758eb3f.b453a4",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2637.524269104004,
+        "y": 753.951696395874,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "d7f88536.7fca88"
+            ]
+        ]
+    },
+    {
+        "id": "3e7e4f38.7c3b3",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2247.5240478515625,
+        "y": 803.9515285491943,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "2648638f.48dc3c"
+            ]
+        ]
+    },
+    {
+        "id": "bbcfc415.922a78",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2634.667018890381,
+        "y": 799.6659545898438,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "2648638f.48dc3c"
+            ]
+        ]
+    },
+    {
+        "id": "d7f88536.7fca88",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2794.667091369629,
+        "y": 751.094518661499,
+        "z": "660eb50b.12658c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "194fd5ff.1b122a",
+        "type": "comment",
+        "name": "Found a usable destination port",
+        "info": "",
+        "comments": "",
+        "x": 1118.4765014648438,
+        "y": 867.9990339279175,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "67b4d64c.e399f8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 137.14286041259766,
+        "y": 805.9523487091064,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "9021e5af.5cc618",
+                "aa8038f.fd261c8",
+                "3812658a.229d9a",
+                "d45ff25c.78723",
+                "aba11878.3d0528",
+                "7f4adf17.47b08",
+                "e3e68421.71a8b8",
+                "a97afc7d.c209b",
+                "3600f5af.f19cca"
+            ]
+        ]
+    },
+    {
+        "id": "78769168.05467",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'No capacity for source interface '\n  + $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-id`\" />\n",
+        "comments": "",
+        "x": 1482.8097114562988,
+        "y": 801.4523735046387,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "3812658a.229d9a",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n<parameter name='' value='' />\n",
+        "comments": "",
+        "x": 373.1429748535156,
+        "y": 1290.6190147399902,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "60f2dbb9.ae8cd4",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 712.142822265625,
+        "y": 289.2857131958008,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "8cddc4c2.57a498"
+            ]
+        ]
+    },
+    {
+        "id": "639eed7b.da1bd4",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 720.7142581939697,
+        "y": 332.57142639160156,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "608970aa.edcc1"
+            ]
+        ]
+    },
+    {
+        "id": "d45ff25c.78723",
+        "type": "get-resource",
+        "name": "get-resource VNICS_CAPACITY_GROUP",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='select vnics_group_id\n    from VNICS_CAPACITY_GROUP\n    where service_instance_id = $tmp.service-instance-id\n    and nfc_naming_code = $tmp.dest-nfc-naming-code\n    and vnf_id = $tmp.dest-vnf-id'\n  pfx='db'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 459.21429443359375,
+        "y": 315.0477695465088,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "60f2dbb9.ae8cd4",
+                "639eed7b.da1bd4"
+            ]
+        ]
+    },
+    {
+        "id": "8cddc4c2.57a498",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Failure reading VNICS_CAPACITY_GROUP table\" />\n",
+        "comments": "",
+        "x": 880.4761505126953,
+        "y": 287.61901664733887,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "608970aa.edcc1",
+        "type": "save",
+        "name": "save VNICS_CAPACITY_GROUP",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\n\tkey=\"insert into VNICS_CAPACITY_GROUP \n\t  (service_instance_id, nfc_naming_code, vnf_id)\n\t  VALUES ( $tmp.service-instance-id , $tmp.dest-nfc-naming-code , $tmp.dest-vnf-id )\"\n\tpfx='pfx' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 938.8094787597656,
+        "y": 330.95237255096436,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "94fe9e7b.6e187",
+                "a7412aee.970778"
+            ]
+        ]
+    },
+    {
+        "id": "94fe9e7b.6e187",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1170.4759979248047,
+        "y": 309.28586769104004,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "dae1ca1a.80ef58"
+            ]
+        ]
+    },
+    {
+        "id": "7f8c369a.933558",
+        "type": "execute",
+        "name": "printContext",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-vnics.log' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 364.4762268066406,
+        "y": 359.2857437133789,
+        "z": "660eb50b.12658c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "dae1ca1a.80ef58",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Failure to insert record into VNICS_CAPACITY_GROUP table\" />\n",
+        "comments": "",
+        "x": 1322.1427421569824,
+        "y": 308.61905574798584,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "a7412aee.970778",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1173.8094940185547,
+        "y": 355.95239448547363,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "746962c4.c67a7c"
+            ]
+        ]
+    },
+    {
+        "id": "746962c4.c67a7c",
+        "type": "get-resource",
+        "name": "get-resource VNICS_CAPACITY_GROUP",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='select vnics_group_id\n    from VNICS_CAPACITY_GROUP\n    where service_instance_id = $tmp.service-instance-id\n    and nfc_naming_code = $tmp.dest-nfc-naming-code\n    and vnf_id = $tmp.dest-vnf-id'\n  pfx='db'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1413.8095397949219,
+        "y": 354.2856864929199,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "5f3550c3.13f43"
+            ]
+        ]
+    },
+    {
+        "id": "5f3550c3.13f43",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1655.4761009216309,
+        "y": 352.6190195083618,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "c948a7c1.8a3228"
+            ]
+        ]
+    },
+    {
+        "id": "c948a7c1.8a3228",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Failure reading VNICS_CAPACITY_GROUP table\" />\n",
+        "comments": "",
+        "x": 1823.8094291687012,
+        "y": 350.9523229598999,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "aba11878.3d0528",
+        "type": "for",
+        "name": "for each dest vnfc-object",
+        "xml": "<for silentFailure='true' index='vnfc-do-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 407.14293670654297,
+        "y": 520.6189937591553,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "ba61fc56.2bff3"
+            ]
+        ]
+    },
+    {
+        "id": "ba61fc56.2bff3",
+        "type": "for",
+        "name": "for each dest vnic",
+        "xml": "<for silentFailure='true' index='vnic-d-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 637.1430130004883,
+        "y": 520.6189823150635,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "3429f2b4.06a52e"
+            ]
+        ]
+    },
+    {
+        "id": "3429f2b4.06a52e",
+        "type": "get-resource",
+        "name": "get-resource VNICS_CAPACITY",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='select available_capacity, vnic_capacity\n    from VNICS_CAPACITY\n    where vnics_group_id = $db.vnics-group-id\n    and vnic_port_name = $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-port-name'\n  pfx='db.vnics-capacity'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 883.8098297119141,
+        "y": 520.6189737319946,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "363cb986.7e0746",
+                "fda3755.4ca4688",
+                "6169bfbf.6fa9c"
+            ]
+        ]
+    },
+    {
+        "id": "363cb986.7e0746",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1107.1429595947266,
+        "y": 470.61901473999023,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "ce11a3a3.c1403"
+            ]
+        ]
+    },
+    {
+        "id": "ce11a3a3.c1403",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Failure reading VNICS_CAPACITY_GROUP table\" />\n",
+        "comments": "",
+        "x": 1275.4762878417969,
+        "y": 468.9523181915283,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "fda3755.4ca4688",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1115.4762954711914,
+        "y": 523.9523372650146,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "41079a08.942214"
+            ]
+        ]
+    },
+    {
+        "id": "41079a08.942214",
+        "type": "save",
+        "name": "save VNICS_CAPACITY",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\n\tkey=\"insert into VNICS_CAPACITY \n\t  (vnics_group_id, vnic_port_name, available_capacity, vnic_capacity)\n\t  VALUES ( $db.vnics-group-id ,\n\t    $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-port-name ,\n\t    $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.vnic-capacity ,\n\t    $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.vnic-capacity\n\t    )\"\n\tpfx='pfx' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1312.1430053710938,
+        "y": 523.9523277282715,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "6a32b892.8f68f8"
+            ]
+        ]
+    },
+    {
+        "id": "6a32b892.8f68f8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1510.476276397705,
+        "y": 522.2856945991516,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "a8fbb0ff.039e6"
+            ]
+        ]
+    },
+    {
+        "id": "a8fbb0ff.039e6",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Failure to insert record into VNICS_CAPACITY table\" />\n",
+        "comments": "",
+        "x": 1662.1430206298828,
+        "y": 521.6188826560974,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "6169bfbf.6fa9c",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1115.476417541504,
+        "y": 580.6189975738525,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "91c7d1c5.6a47a"
+            ]
+        ]
+    },
+    {
+        "id": "91c7d1c5.6a47a",
+        "type": "set",
+        "name": "set vnic-capacity",
+        "xml": "<set>\n<parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.vnic-capacity'\n  value='`$db.vnics-capacity.available-capacity`' />\n",
+        "comments": "",
+        "x": 1285.4762573242188,
+        "y": 580.6189765930176,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "7f4adf17.47b08",
+        "type": "set",
+        "name": "set source-to-dest-map_length",
+        "xml": "<set>\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length'\n  value='`$map-idx`' />\n",
+        "comments": "",
+        "x": 426.47618865966797,
+        "y": 1052.2857131958008,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "2648638f.48dc3c",
+        "type": "switchNode",
+        "name": "is this is most remaining capacity so far?",
+        "xml": "<switch test='`$tmp.rem-cap &gt; $tmp.save-rem-cap`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2254.47664642334,
+        "y": 880.6190948486328,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "813e25b7.580f58"
+            ]
+        ]
+    },
+    {
+        "id": "813e25b7.580f58",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2501.1432189941406,
+        "y": 878.9523334503174,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "56ba6414.9f4ccc"
+            ]
+        ]
+    },
+    {
+        "id": "56ba6414.9f4ccc",
+        "type": "set",
+        "name": "set found-capacity and save vnic",
+        "xml": "<set>\n<parameter name='tmp.found-capacity' value='Y' />\n<parameter name='tmp.save-vnfc-do-idx' value='`$vnfc-do-idx`' />\n<parameter name='tmp.save-vnic-d-idx' value='`$vnic-d-idx`' />\n<parameter name='tmp.save-rem-cap' value='`$tmp.rem-cap`' />\n",
+        "comments": "",
+        "x": 2757.8097610473633,
+        "y": 878.9523677825928,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "e3e68421.71a8b8",
+        "type": "for",
+        "name": "for each dest vnfc-object",
+        "xml": "<for silentFailure='true' index='vnfc-do-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 409.80950927734375,
+        "y": 1112.2857131958008,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "e42814ea.b0ea28"
+            ]
+        ]
+    },
+    {
+        "id": "e42814ea.b0ea28",
+        "type": "for",
+        "name": "for each dest vnic",
+        "xml": "<for silentFailure='true' index='vnic-d-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 639.8096008300781,
+        "y": 1112.285701751709,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "999a9dbf.6d329"
+            ]
+        ]
+    },
+    {
+        "id": "e98ed9b2.d66598",
+        "type": "update",
+        "name": "update VNICS_CAPACITY",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\nkey=\"update VNICS_CAPACITY\n     set available_capacity = $tmp.avail-capacity\n     where vnics_group_id = $db.vnics-group-id\n     and vnic_port_name = $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-port-name\n\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1063.142837524414,
+        "y": 1163.9522199630737,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "e37dddbd.93743"
+            ]
+        ]
+    },
+    {
+        "id": "e37dddbd.93743",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1279.809413909912,
+        "y": 1162.2856788635254,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "9a4f7649.32e9d8"
+            ]
+        ]
+    },
+    {
+        "id": "9a4f7649.32e9d8",
+        "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=\"Failure updating VNICS_CAPACITY table\" />\n",
+        "comments": "",
+        "x": 1448.1427536010742,
+        "y": 1160.4287452697754,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "999a9dbf.6d329",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 826.4761505126953,
+        "y": 1110.6189651489258,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "59c4c4cf.8c1e7c",
+                "61833831.c63cb8",
+                "e98ed9b2.d66598"
+            ]
+        ]
+    },
+    {
+        "id": "59c4c4cf.8c1e7c",
+        "type": "get-resource",
+        "name": "get-resource VNICS_CAPACITY",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='select available_capacity\n    from VNICS_CAPACITY\n    where vnics_group_id = $db.vnics-group-id\n    and vnic_port_name = $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-port-name'\n  pfx='db.vnics-capacity'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1081.4761085510254,
+        "y": 1060.618984222412,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "bcb1f86a.023148"
+            ]
+        ]
+    },
+    {
+        "id": "61833831.c63cb8",
+        "type": "set",
+        "name": "set new available capacity",
+        "xml": "<set>\n<parameter name='tmp.original-avail-capacity' value='`$db.vnics-capacity.available-capacity`' />\n<parameter name='tmp.original-used-capacity' value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.used-capacity`' />\n<parameter name='tmp.avail-capacity' value='`$db.vnics-capacity.available-capacity - $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.used-capacity`' />\n",
+        "comments": "",
+        "x": 1061.4761695861816,
+        "y": 1112.2856330871582,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "bcb1f86a.023148",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1304.8094635009766,
+        "y": 1058.9523391723633,
+        "z": "660eb50b.12658c",
+        "wires": [
+            [
+                "a87c2664.36e398"
+            ]
+        ]
+    },
+    {
+        "id": "a87c2664.36e398",
+        "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=\"Failure reading VNICS_CAPACITY table\" />\n",
+        "comments": "",
+        "x": 1473.1428031921387,
+        "y": 1057.0954055786133,
+        "z": "660eb50b.12658c",
+        "wires": []
+    },
+    {
+        "id": "a97afc7d.c209b",
+        "type": "save",
+        "name": "save VNICS_CONFIGURATION_ID",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\n\tkey=\"insert into VNICS_CONFIGURATION_ID\n\t(configuration_id, vnics_group_id)\n\tvalues ( $tmp.configuration-id , $db.vnics-group-id )\"\n\tpfx='pfx' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 439.8095245361328,
+        "y": 1223.9523391723633,
+        "z": "660eb50b.12658c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3600f5af.f19cca",
+        "type": "set",
+        "name": "set vnics-group-id",
+        "xml": "<set>\n<parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id'\n  value='`$db.vnics-group-id`' />\n",
+        "comments": "",
+        "x": 383.4761962890625,
+        "y": 424.2857131958008,
+        "z": "660eb50b.12658c",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-unassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-unassign.json
new file mode 100644
index 0000000..e2529a9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-unassign.json
@@ -0,0 +1,788 @@
+[
+    {
+        "id": "8bbb7374.4b98a",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 116,
+        "y": 90,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "772f4378.64823c"
+            ]
+        ]
+    },
+    {
+        "id": "772f4378.64823c",
+        "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": 229.61902618408203,
+        "y": 130.2381134033203,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "58997f12.7afb3"
+            ]
+        ]
+    },
+    {
+        "id": "58997f12.7afb3",
+        "type": "method",
+        "name": "method port-mirror-topology-operation-unassign",
+        "xml": "<method rpc='port-mirror-topology-operation-unassign' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 234.09529876708984,
+        "y": 171.66666793823242,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "5c090ffc.79e3e"
+            ]
+        ]
+    },
+    {
+        "id": "b44412dc.e6821",
+        "type": "comment",
+        "name": "port-mirror-topology-operation-unassign",
+        "info": "",
+        "comments": "",
+        "x": 510.34485626220703,
+        "y": 37.58634376525879,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "5c090ffc.79e3e",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 168.85714721679688,
+        "y": 687.1428813934326,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "a00881e6.27503",
+                "3cd15e0b.8a9242",
+                "c02c29b9.8c7e88",
+                "6dad1b2d.44e274",
+                "970129e3.7b30e8",
+                "9bbcaeed.5bcb1",
+                "b0105555.232da8",
+                "af3a37ae.9c69a8",
+                "a3b37ff7.c3c35",
+                "fb90193b.a54318",
+                "6cdc1207.ebd5dc",
+                "942856b4.633be8"
+            ]
+        ]
+    },
+    {
+        "id": "a00881e6.27503",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n<parameter name='error-code' value='200' />\n<parameter name='ack-final' value='Y' />",
+        "comments": "",
+        "x": 440.4762268066406,
+        "y": 1303.5712909698486,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "3cd15e0b.8a9242",
+        "type": "set",
+        "name": "set tmp.configuration-id",
+        "xml": "<set>\n<parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />\n<parameter name='tmp.service-instance-id' value='`$port-mirror-topology-operation-input.service-information.service-instance-id`' />\n",
+        "comments": "",
+        "x": 477.8571548461914,
+        "y": 288.57142639160156,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "c02c29b9.8c7e88",
+        "type": "execute",
+        "name": "execute readProperties",
+        "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": 478.8571472167969,
+        "y": 334.28567695617676,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6dad1b2d.44e274",
+        "type": "execute",
+        "name": "generate port-mirror-configuration url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.pm-configuration`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.pmc-url\"/>\n    <parameter name=\"target\" value=\"{configuration-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.configuration-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 518.8571548461914,
+        "y": 375.7142524719238,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "970129e3.7b30e8",
+        "type": "execute",
+        "name": "execute RestApiCallNode - get port-mirror-configuration",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"pm-mdsal\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 577.4286193847656,
+        "y": 440.00006103515625,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "3dcfdbe4.afb2f4",
+                "8f7d6134.c5be7"
+            ]
+        ]
+    },
+    {
+        "id": "3dcfdbe4.afb2f4",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 875.5817413330078,
+        "y": 410.80790996551514,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "75cc3cfd.cbd064"
+            ]
+        ]
+    },
+    {
+        "id": "8f7d6134.c5be7",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 873.142879486084,
+        "y": 460.00000381469727,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "a00d5b26.695c08"
+            ]
+        ]
+    },
+    {
+        "id": "a00d5b26.695c08",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`\" />\n",
+        "comments": "",
+        "x": 1387.4285583496094,
+        "y": 457.14286613464355,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "9bbcaeed.5bcb1",
+        "type": "switchNode",
+        "name": "switch order-status == 'Created'",
+        "xml": "<switch test=\"`$pm-mdsal.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Created'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 503.1428909301758,
+        "y": 507.1428031921387,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "3c7b307b.3b6f6"
+            ]
+        ]
+    },
+    {
+        "id": "75cc3cfd.cbd064",
+        "type": "switchNode",
+        "name": "switch length == 1",
+        "xml": "<switch test='`$pm-mdsal.port-mirror-configuration_length == 1`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1054.5714416503906,
+        "y": 410.000018119812,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "edc73da3.d8892"
+            ]
+        ]
+    },
+    {
+        "id": "edc73da3.d8892",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1224.5714721679688,
+        "y": 410.00000953674316,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "a00d5b26.695c08"
+            ]
+        ]
+    },
+    {
+        "id": "3c7b307b.3b6f6",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 721.7143020629883,
+        "y": 507.1428909301758,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "8e30c079.587fb"
+            ]
+        ]
+    },
+    {
+        "id": "8e30c079.587fb",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Created'`\" />\n",
+        "comments": "",
+        "x": 883.1428909301758,
+        "y": 505.7143020629883,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "91831f7f.9b292",
+        "type": "comment",
+        "name": "rpc-port-mirror-1100",
+        "info": "",
+        "comments": "",
+        "x": 428.142822265625,
+        "y": 679.2856960296631,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "60c9f952.f4f188",
+        "type": "comment",
+        "name": "step 2 - call DG to delete route policy",
+        "info": "",
+        "comments": "",
+        "x": 509.3332977294922,
+        "y": 730.238130569458,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "fc0ac42c.952338",
+        "type": "comment",
+        "name": "step 4 - delete logical-link objects (aai-port-mirror-1080)",
+        "info": "",
+        "comments": "",
+        "x": 565.0477142333984,
+        "y": 864.5237045288086,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "7d49d03a.924b7",
+        "type": "comment",
+        "name": "step 5 - update configuration object (aai-port-mirror-1070)",
+        "info": "",
+        "comments": "",
+        "x": 569.333366394043,
+        "y": 1027.1428117752075,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "decb832b.7756e",
+        "type": "comment",
+        "name": "step 6 - remove port mirror configuration instance ",
+        "info": "",
+        "comments": "",
+        "x": 544.8094940185547,
+        "y": 1160.9523677825928,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "b0105555.232da8",
+        "type": "execute",
+        "name": "execute RestApiCallNode - get port-mirror-configuration",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-pmc\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 569.0952301025391,
+        "y": 1217.3809337615967,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "e5926e1f.9d417",
+                "a0df149e.9ba658"
+            ]
+        ]
+    },
+    {
+        "id": "e5926e1f.9d417",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 890.1055297851562,
+        "y": 1192.474473953247,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "ddd7e984.1b33f8"
+            ]
+        ]
+    },
+    {
+        "id": "a0df149e.9ba658",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 887.6666679382324,
+        "y": 1241.6665678024292,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "bfee39f8.3ed2a8"
+            ]
+        ]
+    },
+    {
+        "id": "bfee39f8.3ed2a8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Failed to delete port-mirror-configuration object in MD-SAL\" />\n",
+        "comments": "",
+        "x": 1050.2856979370117,
+        "y": 1242.1427536010742,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "ddd7e984.1b33f8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1031.9524269104004,
+        "y": 1191.66667842865,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f67563da.36229",
+        "type": "call",
+        "name": "call api-contrail-route-topology-operation-delete",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' >\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1155.7617301940918,
+        "y": 767.3809356689453,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "88c7692a.dfbb88"
+            ]
+        ]
+    },
+    {
+        "id": "88c7692a.dfbb88",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1419.5714073181152,
+        "y": 767.618992805481,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "e130765d.952908"
+            ]
+        ]
+    },
+    {
+        "id": "dd3beea5.003a",
+        "type": "set",
+        "name": "set parameters",
+        "xml": "<set>\n<parameter name='cto-api.default-domain' value='default-domain' />\n<parameter name='cto-api.default-project'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />\n<parameter name='cto-api.cloud-region-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />\n<parameter name='cto-api.contrail-route-allotted-resource-id'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.route-allotted-resource-id`' />\n<parameter name='cto-api.rollback-flag' value='false' />\n<parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />\n<parameter name='cto-api.owning-entity'\n  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.owning-entity`' />\n",
+        "comments": "",
+        "x": 1053.8571815490723,
+        "y": 717.8573741912842,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "e130765d.952908",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n",
+        "comments": "",
+        "x": 1592.6666374206543,
+        "y": 766.1904449462891,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "a3ed1438.144d08",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1067.0237274169922,
+        "y": 946.3470678329468,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "25107429.8cfe6c"
+            ]
+        ]
+    },
+    {
+        "id": "71dc471a.140258",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1075.595157623291,
+        "y": 990.6327810287476,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "71960fd3.a6f9d"
+            ]
+        ]
+    },
+    {
+        "id": "af3a37ae.9c69a8",
+        "type": "for",
+        "name": "for each mapped source port",
+        "xml": "<for silentFailure='true' index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 493.6189651489258,
+        "y": 932.3801527023315,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "f9221a0.27240e8"
+            ]
+        ]
+    },
+    {
+        "id": "f9221a0.27240e8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 714.0951461791992,
+        "y": 932.6180410385132,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "1b255416.32a90c",
+                "29114eb1.e42792"
+            ]
+        ]
+    },
+    {
+        "id": "29114eb1.e42792",
+        "type": "save",
+        "name": "delete logical-link",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"logical-link\" \n\tkey=\"logical-link.link-name = $tmp.link-name\" >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 902.1903915405273,
+        "y": 965.4754810333252,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "a3ed1438.144d08",
+                "71dc471a.140258"
+            ]
+        ]
+    },
+    {
+        "id": "1b255416.32a90c",
+        "type": "set",
+        "name": "set tmp.link-name",
+        "xml": "<set>\n<parameter name='tmp.link-name' value=\"`'PMC_' + $tmp.configuration-id\n  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name\n  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`\" />\n",
+        "comments": "",
+        "x": 905.5237846374512,
+        "y": 903.8086490631104,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "25107429.8cfe6c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1235.5236892700195,
+        "y": 945.4752893447876,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "d47baa6a.fa3238"
+            ]
+        ]
+    },
+    {
+        "id": "d47baa6a.fa3238",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to delete logical-link in AAI: ' + $tmp.link-name`\" />\n",
+        "comments": "",
+        "x": 1411.7143325805664,
+        "y": 944.7618818283081,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "a3b37ff7.c3c35",
+        "type": "save",
+        "name": "update configuration object",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"configuration\"\n   key=\"configuration.configuration-id = $tmp.configuration-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"operational-status\" value=\"out-of-service-path\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 482.19054412841797,
+        "y": 1090.000015258789,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "6d22e53b.f9793c",
+                "5df9b73.caf0d48"
+            ]
+        ]
+    },
+    {
+        "id": "6d22e53b.f9793c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 686.5478630065918,
+        "y": 1113.619324684143,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "b4115912.041598"
+            ]
+        ]
+    },
+    {
+        "id": "5df9b73.caf0d48",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 695.1192779541016,
+        "y": 1062.9051275253296,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "44175244.a650bc"
+            ]
+        ]
+    },
+    {
+        "id": "44175244.a650bc",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Unable to find configuration object in AAI\" />\n",
+        "comments": "",
+        "x": 855.0476608276367,
+        "y": 1062.8571319580078,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "b4115912.041598",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Failure updating configuration object in AAI\" />\n",
+        "comments": "",
+        "x": 853.6191329956055,
+        "y": 1114.285659790039,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "fb90193b.a54318",
+        "type": "set",
+        "name": "set pm",
+        "xml": "<set>\n<parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />\n<parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />\n",
+        "comments": "",
+        "x": 425.76184844970703,
+        "y": 550.9523181915283,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "71960fd3.a6f9d",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1239.0952529907227,
+        "y": 989.2856588363647,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6cdc1207.ebd5dc",
+        "type": "switchNode",
+        "name": "switch tmp.configuration-sub-type",
+        "xml": "<switch test='`$tmp.configuration-sub-type`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 507.6667175292969,
+        "y": 789.9999523162842,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "5808e94d.02aa98"
+            ]
+        ]
+    },
+    {
+        "id": "5808e94d.02aa98",
+        "type": "outcome",
+        "name": "vprobe",
+        "xml": "<outcome value='vprobe'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 720.6667251586914,
+        "y": 789.9999370574951,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "2d69de80.1eff82"
+            ]
+        ]
+    },
+    {
+        "id": "2d69de80.1eff82",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 865.9999847412109,
+        "y": 789.9999885559082,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "93d9487f.f05578",
+                "dd3beea5.003a",
+                "f67563da.36229"
+            ]
+        ]
+    },
+    {
+        "id": "93d9487f.f05578",
+        "type": "call",
+        "name": "call port-mirror-rollback-capacity-db",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' >\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1114.333236694336,
+        "y": 851.6666440963745,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "ff59022f.79e16"
+            ]
+        ]
+    },
+    {
+        "id": "639e5c15.feeb14",
+        "type": "comment",
+        "name": "step 3 - undo DB capacity data",
+        "info": "",
+        "comments": "",
+        "x": 1114.3332748413086,
+        "y": 810.000036239624,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "ff59022f.79e16",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1344.3333129882812,
+        "y": 849.9999876022339,
+        "z": "57b283d9.2c73ac",
+        "wires": [
+            [
+                "64c8888e.67e758"
+            ]
+        ]
+    },
+    {
+        "id": "64c8888e.67e758",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n",
+        "comments": "",
+        "x": 1517.4285430908203,
+        "y": 848.571439743042,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    },
+    {
+        "id": "942856b4.633be8",
+        "type": "set",
+        "name": "set tmp.configuration-sub-type",
+        "xml": "<set>\n<parameter name='tmp.configuration-sub-type' value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type`' />\n",
+        "comments": "",
+        "x": 497.6666717529297,
+        "y": 596.666633605957,
+        "z": "57b283d9.2c73ac",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-validation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-validation.json
new file mode 100755
index 0000000..9d59797
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation-validation.json
@@ -0,0 +1 @@
+[{"id":"937e2678.de7bd8","type":"dgstart","name":"DGSTART","outputs":1,"x":106.66666412353516,"y":87.4136552810669,"z":"4b49c6e4.fe3048","wires":[["1b70aaac.e18bc5"]]},{"id":"1b70aaac.e18bc5","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.2856903076172,"y":127.6517686843872,"z":"4b49c6e4.fe3048","wires":[["6bcf44ce.589bac"]]},{"id":"6bcf44ce.589bac","type":"method","name":"method port-mirror-topology-operation-validation","xml":"<method rpc='port-mirror-topology-operation-validation' mode='sync'>\n","comments":"","outputs":1,"x":225.0952911376953,"y":167.4136552810669,"z":"4b49c6e4.fe3048","wires":[["36b909f6.73cb66"]]},{"id":"f1fba941.92b308","type":"comment","name":"port-mirror-topology-operation-validation","info":"","comments":"","x":501.0115203857422,"y":34.999999046325684,"z":"4b49c6e4.fe3048","wires":[]},{"id":"2619e935.995346","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n","comments":"","x":416.2500991821289,"y":1565.1518993377686,"z":"4b49c6e4.fe3048","wires":[]},{"id":"36b909f6.73cb66","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":209.52381134033203,"y":333.1279344558716,"z":"4b49c6e4.fe3048","wires":[["2619e935.995346","f9f21e89.7956e","ddc786f6.b87d48","3e22ced3.993ad2","ec829e8c.5b84a"]]},{"id":"f9f21e89.7956e","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":429.4643096923828,"y":1211.0447816848755,"z":"4b49c6e4.fe3048","wires":[["52455406.f27e4c","b969f141.ea07e","4d535fd8.fecd9","bdce53a.e85beb","e59dd1ca.f9ba9","4b42cd2a.a91bb4"]]},{"id":"52455406.f27e4c","type":"outcome","name":"assign","xml":"<outcome value='assign'>\n","comments":"","outputs":1,"x":669.2262058258057,"y":780.1518878936768,"z":"4b49c6e4.fe3048","wires":[["2b4034cc.bd8e1c"]]},{"id":"b969f141.ea07e","type":"outcome","name":"activate","xml":"<outcome value='activate'>\n","comments":"","outputs":1,"x":667.3214721679688,"y":1076.9376935958862,"z":"4b49c6e4.fe3048","wires":[["b20062c7.68f33"]]},{"id":"4d535fd8.fecd9","type":"outcome","name":"unassign","xml":"<outcome value='unassign'>\n","comments":"","outputs":1,"x":669.1071891784668,"y":1174.0805578231812,"z":"4b49c6e4.fe3048","wires":[["9e6a5efe.3186"]]},{"id":"bdce53a.e85beb","type":"outcome","name":"deactivate","xml":"<outcome value='deactivate'>\n","comments":"","outputs":1,"x":672.6786098480225,"y":1269.259165763855,"z":"4b49c6e4.fe3048","wires":[["ea8a89c9.e8c648"]]},{"id":"e59dd1ca.f9ba9","type":"outcome","name":"enable","xml":"<outcome value='enable'>\n","comments":"","outputs":1,"x":661.4286613464355,"y":1380.1520357131958,"z":"4b49c6e4.fe3048","wires":[["8a6db9fd.e2b678"]]},{"id":"4b42cd2a.a91bb4","type":"outcome","name":"disable","xml":"<outcome value='disable'>\n","comments":"","outputs":1,"x":652.6787376403809,"y":1489.4376859664917,"z":"4b49c6e4.fe3048","wires":[["e18f42ef.5f8e1"]]},{"id":"ddc786f6.b87d48","type":"switchNode","name":"switch service-information.subscription-service-type","xml":"<switch test='`$service-data.service-information.subscription-service-type`'>\n","comments":"","outputs":1,"x":542.9166412353516,"y":268.30652713775635,"z":"4b49c6e4.fe3048","wires":[["27028266.63249e"]]},{"id":"27028266.63249e","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":811.4881248474121,"y":267.66365909576416,"z":"4b49c6e4.fe3048","wires":[["71dc5896.72bb98"]]},{"id":"71dc5896.72bb98","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'No service exists for service instance ' + $port-mirror-topology-operation-input.service-information.service-instance-id`\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":961.4881286621094,"y":267.66365909576416,"z":"4b49c6e4.fe3048","wires":[]},{"id":"34225637.7fe37a","type":"comment","name":"common validations","info":"","comments":"","x":603.4523696899414,"y":220.6279420852661,"z":"4b49c6e4.fe3048","wires":[]},{"id":"3e22ced3.993ad2","type":"switchNode","name":"switch configuration-information.configuration-id","xml":"<switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-id`'>\n","comments":"","outputs":1,"x":528.9881134033203,"y":315.09221363067627,"z":"4b49c6e4.fe3048","wires":[["f52397cc.074718"]]},{"id":"f52397cc.074718","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":811.4881172180176,"y":315.9136552810669,"z":"4b49c6e4.fe3048","wires":[["fd84a975.169f78"]]},{"id":"fd84a975.169f78","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"No configuration-id supplied in input\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":961.4881210327148,"y":315.9136552810669,"z":"4b49c6e4.fe3048","wires":[]},{"id":"daeed855.f65228","type":"comment","name":"action-specific validations","info":"","comments":"","x":694.2261772155762,"y":730.8661651611328,"z":"4b49c6e4.fe3048","wires":[]},{"id":"2b4034cc.bd8e1c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":817.9761943817139,"y":780.1518821716309,"z":"4b49c6e4.fe3048","wires":[["fdb2b4ca.fd9468","6d59591f.ef4c98","eda5afb3.f630f","b44e8a2a.37d798","793d5df3.b19c44","8cfba049.9ab71"]]},{"id":"fdb2b4ca.fd9468","type":"switchNode","name":"switch svc-notification-url","xml":"<switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`'>\n","comments":"","outputs":1,"x":1053.333339691162,"y":656.5804595947266,"z":"4b49c6e4.fe3048","wires":[["96080e51.d5f5c"]]},{"id":"96080e51.d5f5c","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1370.8333473205566,"y":655.3304595947266,"z":"4b49c6e4.fe3048","wires":[["a423e75c.6555b8"]]},{"id":"a423e75c.6555b8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"svc-notification-url is required for assign\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1520.833351135254,"y":655.3304595947266,"z":"4b49c6e4.fe3048","wires":[]},{"id":"b20062c7.68f33","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":818.5714721679688,"y":1076.9376935958862,"z":"4b49c6e4.fe3048","wires":[["abcfc8c5.f7caa8","dca53974.0698c8"]]},{"id":"abcfc8c5.f7caa8","type":"switchNode","name":"switch svc-notification-url","xml":"<switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`'>\n","comments":"","outputs":1,"x":1049.4643211364746,"y":1051.7590856552124,"z":"4b49c6e4.fe3048","wires":[["97f7ec47.04288"]]},{"id":"97f7ec47.04288","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1366.9643287658691,"y":1050.5090856552124,"z":"4b49c6e4.fe3048","wires":[["5915d14f.c072a"]]},{"id":"5915d14f.c072a","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"svc-notification-url is required for activate\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1516.9643325805664,"y":1050.5090856552124,"z":"4b49c6e4.fe3048","wires":[]},{"id":"ea8a89c9.e8c648","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":820.1786098480225,"y":1268.0091667175293,"z":"4b49c6e4.fe3048","wires":[["61d3d15f.ca091","8624276.49c5bd8"]]},{"id":"61d3d15f.ca091","type":"switchNode","name":"switch svc-notification-url","xml":"<switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`'>\n","comments":"","outputs":1,"x":1052.85719871521,"y":1240.3305521011353,"z":"4b49c6e4.fe3048","wires":[["eb91689d.347218"]]},{"id":"eb91689d.347218","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1370.3572063446045,"y":1239.0805521011353,"z":"4b49c6e4.fe3048","wires":[["c611ae80.8f1df"]]},{"id":"c611ae80.8f1df","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"svc-notification-url is required for deactivate\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1520.3572101593018,"y":1239.0805521011353,"z":"4b49c6e4.fe3048","wires":[]},{"id":"6d59591f.ef4c98","type":"switchNode","name":"switch request-action='CreatePortMirrorConfigurationInstance'","xml":"<switch test=\"`$port-mirror-topology-operation-input.request-information.request-action == 'CreatePortMirrorConfigurationInstance'`\">\n","comments":"","outputs":1,"x":1164.583339691162,"y":709.0804605484009,"z":"4b49c6e4.fe3048","wires":[["f5beef9f.34adb"]]},{"id":"f5beef9f.34adb","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1470.8333473205566,"y":709.0804595947266,"z":"4b49c6e4.fe3048","wires":[["13771525.e3f82b"]]},{"id":"13771525.e3f82b","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"request-action must be CreatePortMirrorConfigurationInstance for assign\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1622.0833473205566,"y":709.0804615020752,"z":"4b49c6e4.fe3048","wires":[]},{"id":"9e6a5efe.3186","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":819.1071891784668,"y":1174.0805568695068,"z":"4b49c6e4.fe3048","wires":[["78601c3c.46ee54"]]},{"id":"8a6db9fd.e2b678","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":820.1786613464355,"y":1380.1520376205444,"z":"4b49c6e4.fe3048","wires":[["5f2b82e4.5647cc","de8812d9.defb9"]]},{"id":"e18f42ef.5f8e1","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":810.1787376403809,"y":1489.4376878738403,"z":"4b49c6e4.fe3048","wires":[["e87a4a95.a74d28","49e544be.a01fcc"]]},{"id":"dca53974.0698c8","type":"switchNode","name":"switch request-action='CreatePortMirrorConfigurationInstance'","xml":"<switch test=\"`$port-mirror-topology-operation-input.request-information.request-action == 'CreatePortMirrorConfigurationInstance'`\">\n","comments":"","outputs":1,"x":1164.4643058776855,"y":1105.5090799331665,"z":"4b49c6e4.fe3048","wires":[["5db674c6.f192ec"]]},{"id":"5db674c6.f192ec","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1470.71431350708,"y":1105.5090789794922,"z":"4b49c6e4.fe3048","wires":[["ebddce7.738fb3"]]},{"id":"ebddce7.738fb3","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"request-action must be CreatePortMirrorConfigurationInstance for activate\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1621.96431350708,"y":1105.5090808868408,"z":"4b49c6e4.fe3048","wires":[]},{"id":"78601c3c.46ee54","type":"switchNode","name":"switch request-action='DeletePortMirrorConfigurationInstance'","xml":"<switch test=\"`$port-mirror-topology-operation-input.request-information.request-action == 'DeletePortMirrorConfigurationInstance'`\">\n","comments":"","outputs":1,"x":1162.321548461914,"y":1174.080584526062,"z":"4b49c6e4.fe3048","wires":[["189fafd.d538a5"]]},{"id":"189fafd.d538a5","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1468.5715560913086,"y":1174.0805835723877,"z":"4b49c6e4.fe3048","wires":[["c2927195.691fe"]]},{"id":"c2927195.691fe","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"request-action must be DeletePortMirrorConfigurationInstance for unassign\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1619.8215560913086,"y":1174.0805854797363,"z":"4b49c6e4.fe3048","wires":[]},{"id":"8624276.49c5bd8","type":"switchNode","name":"switch request-action='DeletePortMirrorConfigurationInstance'","xml":"<switch test=\"`$port-mirror-topology-operation-input.request-information.request-action == 'DeletePortMirrorConfigurationInstance'`\">\n","comments":"","outputs":1,"x":1165.3571796417236,"y":1296.5805463790894,"z":"4b49c6e4.fe3048","wires":[["52576a21.d04bc4"]]},{"id":"52576a21.d04bc4","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1471.6071872711182,"y":1296.580545425415,"z":"4b49c6e4.fe3048","wires":[["43bf1df3.a10684"]]},{"id":"43bf1df3.a10684","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"request-action must be DeletePortMirrorConfigurationInstance for deactivate\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1622.8571872711182,"y":1296.5805473327637,"z":"4b49c6e4.fe3048","wires":[]},{"id":"5f2b82e4.5647cc","type":"switchNode","name":"switch request-action='ChangePortMirrorConfigurationInstance'","xml":"<switch test=\"`$port-mirror-topology-operation-input.request-information.request-action == 'ChangePortMirrorConfigurationInstance'`\">\n","comments":"","outputs":1,"x":1169.1071891784668,"y":1356.4019956588745,"z":"4b49c6e4.fe3048","wires":[["80cbf3a5.e6cb2"]]},{"id":"80cbf3a5.e6cb2","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1475.3571968078613,"y":1356.4019947052002,"z":"4b49c6e4.fe3048","wires":[["507e85a0.81b15c"]]},{"id":"507e85a0.81b15c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"request-action must be ChangePortMirrorConfigurationInstance for enable\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1626.6071968078613,"y":1356.4019966125488,"z":"4b49c6e4.fe3048","wires":[]},{"id":"e87a4a95.a74d28","type":"switchNode","name":"switch request-action='ChangePortMirrorConfigurationInstance'","xml":"<switch test=\"`$port-mirror-topology-operation-input.request-information.request-action == 'ChangePortMirrorConfigurationInstance'`\">\n","comments":"","outputs":1,"x":1165.7144107818604,"y":1466.937762260437,"z":"4b49c6e4.fe3048","wires":[["5d058a4d.1488f4"]]},{"id":"5d058a4d.1488f4","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1471.9644184112549,"y":1466.9377613067627,"z":"4b49c6e4.fe3048","wires":[["67c3e397.0aab2c"]]},{"id":"67c3e397.0aab2c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"request-action must be ChangePortMirrorConfigurationInstance for disable\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1623.2144184112549,"y":1466.9377632141113,"z":"4b49c6e4.fe3048","wires":[]},{"id":"eda5afb3.f630f","type":"switchNode","name":"switch configuration-type","xml":"<switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-type`'>\n","comments":"","outputs":1,"x":1049.583324432373,"y":756.5804538726807,"z":"4b49c6e4.fe3048","wires":[["f187e6e1.d294a8"]]},{"id":"f187e6e1.d294a8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1367.0833320617676,"y":755.3304538726807,"z":"4b49c6e4.fe3048","wires":[["c8846487.c0f2c8"]]},{"id":"c8846487.c0f2c8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"configuration-type is required for assign\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1517.0833358764648,"y":755.3304538726807,"z":"4b49c6e4.fe3048","wires":[]},{"id":"b44e8a2a.37d798","type":"switchNode","name":"switch model-customization-uuid","xml":"<switch test='`$port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`'>\n","comments":"","outputs":1,"x":1070.833339691162,"y":804.0804615020752,"z":"4b49c6e4.fe3048","wires":[["8e2355b8.217348"]]},{"id":"8e2355b8.217348","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1367.0833320617676,"y":802.8304538726807,"z":"4b49c6e4.fe3048","wires":[["1a1a1278.0a12ce"]]},{"id":"1a1a1278.0a12ce","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"configuration-information.onap-model-information.model-customization-uuid is required for assign\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1517.0833358764648,"y":802.8304538726807,"z":"4b49c6e4.fe3048","wires":[]},{"id":"de8812d9.defb9","type":"switchNode","name":"switch source-port-id","xml":"<switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id`'>\n","comments":"","outputs":1,"x":1036.6072044372559,"y":1405.152009010315,"z":"4b49c6e4.fe3048","wires":[["89436a82.aada88"]]},{"id":"89436a82.aada88","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1370.3571815490723,"y":1403.9019861221313,"z":"4b49c6e4.fe3048","wires":[["2c34d503.4c6dba"]]},{"id":"2c34d503.4c6dba","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"port-mirror-configuration-request-input.source-port.source-port-id is required for enable\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1520.3571853637695,"y":1403.9019861221313,"z":"4b49c6e4.fe3048","wires":[]},{"id":"793d5df3.b19c44","type":"switchNode","name":"switch source vnf-id","xml":"<switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.vnf-information.vnf-id`'>\n","comments":"","outputs":1,"x":1030.4761199951172,"y":850.1518898010254,"z":"4b49c6e4.fe3048","wires":[["d375e10f.ae4c8"]]},{"id":"d375e10f.ae4c8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1366.7261390686035,"y":848.9018573760986,"z":"4b49c6e4.fe3048","wires":[["bc3cc9c4.5aa0d8"]]},{"id":"bc3cc9c4.5aa0d8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"source vnf-id is required for assign\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1516.7261428833008,"y":848.9018573760986,"z":"4b49c6e4.fe3048","wires":[]},{"id":"fec456da.d6b3f8","type":"switchNode","name":"switch dest pnf-name","xml":"<switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.dest-port.pnf-information.pnf-name`'>\n","comments":"","outputs":1,"x":1491.6666259765625,"y":952.2947626113892,"z":"4b49c6e4.fe3048","wires":[["732c3da4.c574b4"]]},{"id":"732c3da4.c574b4","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1673.6310234069824,"y":951.0447587966919,"z":"4b49c6e4.fe3048","wires":[["b43ad89.d207228"]]},{"id":"b43ad89.d207228","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"dest pnf-name is required for pprobe assign\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1823.6310272216797,"y":951.0447587966919,"z":"4b49c6e4.fe3048","wires":[]},{"id":"49e544be.a01fcc","type":"switchNode","name":"switch source-port-id","xml":"<switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id`'>\n","comments":"","outputs":1,"x":1032.1429996490479,"y":1513.7234201431274,"z":"4b49c6e4.fe3048","wires":[["b4119b4e.eed6a8"]]},{"id":"b4119b4e.eed6a8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1365.8929767608643,"y":1512.4733972549438,"z":"4b49c6e4.fe3048","wires":[["585839e5.1385c8"]]},{"id":"585839e5.1385c8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"port-mirror-configuration-request-input.source-port.source-port-id is required for disable\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1515.8929805755615,"y":1512.4733972549438,"z":"4b49c6e4.fe3048","wires":[]},{"id":"ec829e8c.5b84a","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`'>\n","comments":"","outputs":1,"x":466.4285430908203,"y":472.17556858062744,"z":"4b49c6e4.fe3048","wires":[["b51a834.9bdb88","6259a83f.1f75d8","832bb128.6d0fa","58eec95.5f22138","b542d001.82978","3ff65082.0031"]]},{"id":"58eec95.5f22138","type":"outcome","name":"VPROBE","xml":"<outcome value='VPROBE'>\n","comments":"","outputs":1,"x":708.0952606201172,"y":500.50885486602783,"z":"4b49c6e4.fe3048","wires":[["b52e118a.5df2d"]]},{"id":"832bb128.6d0fa","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":701.4285507202148,"y":453.8422155380249,"z":"4b49c6e4.fe3048","wires":[["b52e118a.5df2d"]]},{"id":"6259a83f.1f75d8","type":"outcome","name":"PPROBE","xml":"<outcome value='PPROBE'>\n","comments":"","outputs":1,"x":704.7618827819824,"y":405.5088815689087,"z":"4b49c6e4.fe3048","wires":[["c0d71baf.d40d78"]]},{"id":"b51a834.9bdb88","type":"outcome","name":"pprobe","xml":"<outcome value='pprobe'>\n","comments":"","outputs":1,"x":698.09521484375,"y":360.5088891983032,"z":"4b49c6e4.fe3048","wires":[["c0d71baf.d40d78"]]},{"id":"c0d71baf.d40d78","type":"set","name":"set to pprobe","xml":"<set>\n<parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='pprobe' />\n","comments":"","x":891.4285202026367,"y":375.50889110565186,"z":"4b49c6e4.fe3048","wires":[]},{"id":"b542d001.82978","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":701.4285697937012,"y":547.1755437850952,"z":"4b49c6e4.fe3048","wires":[["b52e118a.5df2d"]]},{"id":"b52e118a.5df2d","type":"set","name":"set to vprobe","xml":"<set>\n<parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='vprobe' />\n","comments":"","x":891.4284973144531,"y":488.84222888946533,"z":"4b49c6e4.fe3048","wires":[]},{"id":"3ff65082.0031","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":701.4285697937012,"y":593.8422327041626,"z":"4b49c6e4.fe3048","wires":[["b11a56b2.2dcac8"]]},{"id":"b11a56b2.2dcac8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"configuration-sub-type must be pprobe or vprobe\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":893.095142364502,"y":591.842191696167,"z":"4b49c6e4.fe3048","wires":[]},{"id":"8cfba049.9ab71","type":"switchNode","name":"switch configuration-sub-type","xml":"<switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`'>\n","comments":"","outputs":1,"x":1059.7620239257812,"y":925.5089731216431,"z":"4b49c6e4.fe3048","wires":[["401ded48.31abf4","6007a19d.b22a1"]]},{"id":"401ded48.31abf4","type":"outcome","name":"vprobe","xml":"<outcome value='vprobe'>\n","comments":"","outputs":1,"x":1293.095230102539,"y":902.1755418777466,"z":"4b49c6e4.fe3048","wires":[["ed474658.d36fd8"]]},{"id":"6007a19d.b22a1","type":"outcome","name":"pprobe","xml":"<outcome value='pprobe'>\n","comments":"","outputs":1,"x":1291.428482055664,"y":952.1755418777466,"z":"4b49c6e4.fe3048","wires":[["fec456da.d6b3f8"]]},{"id":"ed474658.d36fd8","type":"switchNode","name":"switch dest vnf-id","xml":"<switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.dest-port.vnf-information.vnf-id`'>\n","comments":"","outputs":1,"x":1491.4285049438477,"y":900.8422040939331,"z":"4b49c6e4.fe3048","wires":[["fbf78ab6.0f0da8"]]},{"id":"fbf78ab6.0f0da8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1673.3929023742676,"y":899.5922002792358,"z":"4b49c6e4.fe3048","wires":[["c8a8b281.e471a"]]},{"id":"c8a8b281.e471a","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"dest vnf-id is required for vprobe assign\" />\n<parameter name='ack-final' value='Y' />\n","comments":"","x":1823.3929061889648,"y":899.5922002792358,"z":"4b49c6e4.fe3048","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation.json
new file mode 100644
index 0000000..cf675fb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_port-mirror-topology-operation.json
@@ -0,0 +1,638 @@
+[
+    {
+        "id": "4a3915c6.05f4cc",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 101.42857360839844,
+        "y": 81.42857360839844,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "4b88506.9e22db"
+            ]
+        ]
+    },
+    {
+        "id": "4b88506.9e22db",
+        "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.04759979248047,
+        "y": 121.66668701171875,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "3d36d704.8162c8"
+            ]
+        ]
+    },
+    {
+        "id": "3d36d704.8162c8",
+        "type": "method",
+        "name": "method port-mirror-topology-operation",
+        "xml": "<method rpc='port-mirror-topology-operation' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 189.8572006225586,
+        "y": 161.42857360839844,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "e6e242da.69fe6"
+            ]
+        ]
+    },
+    {
+        "id": "be456109.bd24e",
+        "type": "comment",
+        "name": "port-mirror-topology-operation",
+        "info": "",
+        "comments": "",
+        "x": 495.77342987060547,
+        "y": 29.014917373657227,
+        "z": "ccb80365.d73f6",
+        "wires": []
+    },
+    {
+        "id": "355dd75e.24ec18",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\n",
+        "comments": "",
+        "x": 518.869068145752,
+        "y": 721.7260837554932,
+        "z": "ccb80365.d73f6",
+        "wires": []
+    },
+    {
+        "id": "e6e242da.69fe6",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 224.28571319580078,
+        "y": 459.99999237060547,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "355dd75e.24ec18",
+                "f0cb07d6.0e4048",
+                "508bb8bf.ae93d8",
+                "f41c1b7a.2417f8"
+            ]
+        ]
+    },
+    {
+        "id": "f0cb07d6.0e4048",
+        "type": "call",
+        "name": "call port-mirror-topology-operation-validation",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-validation' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 615,
+        "y": 251.25000381469727,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "f20f67c8.480108"
+            ]
+        ]
+    },
+    {
+        "id": "f20f67c8.480108",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 899.9999847412109,
+        "y": 251.6071434020996,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "28729372.5d8d4c"
+            ]
+        ]
+    },
+    {
+        "id": "28729372.5d8d4c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y' />\n",
+        "comments": "",
+        "x": 1069.9999237060547,
+        "y": 250.71429443359375,
+        "z": "ccb80365.d73f6",
+        "wires": []
+    },
+    {
+        "id": "508bb8bf.ae93d8",
+        "type": "switchNode",
+        "name": "switch svc-action",
+        "xml": "<switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 532.857177734375,
+        "y": 480.0000228881836,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "911e3654.4628b8",
+                "9cf51ec1.5a687",
+                "240d0258.67162e",
+                "13c3af67.47b1b1",
+                "dcac8be4.96c918",
+                "d7879d5c.1b4cb"
+            ]
+        ]
+    },
+    {
+        "id": "911e3654.4628b8",
+        "type": "outcome",
+        "name": "assign",
+        "xml": "<outcome value='assign'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 758.5714855194092,
+        "y": 371.2500286102295,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "be83b6f4.dba758"
+            ]
+        ]
+    },
+    {
+        "id": "9cf51ec1.5a687",
+        "type": "outcome",
+        "name": "activate",
+        "xml": "<outcome value='activate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 759.2858085632324,
+        "y": 418.7500829696655,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "26db655a.45972a"
+            ]
+        ]
+    },
+    {
+        "id": "240d0258.67162e",
+        "type": "outcome",
+        "name": "unassign",
+        "xml": "<outcome value='unassign'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 759.642894744873,
+        "y": 465.8929195404053,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "4c2b1545.e2559c"
+            ]
+        ]
+    },
+    {
+        "id": "13c3af67.47b1b1",
+        "type": "outcome",
+        "name": "deactivate",
+        "xml": "<outcome value='deactivate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 764.6428985595703,
+        "y": 513.9286460876465,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "1489bb5a.cc2a45"
+            ]
+        ]
+    },
+    {
+        "id": "dcac8be4.96c918",
+        "type": "outcome",
+        "name": "enable",
+        "xml": "<outcome value='enable'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 753.3929290771484,
+        "y": 560.535810470581,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "1ab8a43d.1a186c"
+            ]
+        ]
+    },
+    {
+        "id": "d7879d5c.1b4cb",
+        "type": "outcome",
+        "name": "disable",
+        "xml": "<outcome value='disable'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 753.2144660949707,
+        "y": 605.5357418060303,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "1b07a08e.6bf74f"
+            ]
+        ]
+    },
+    {
+        "id": "be83b6f4.dba758",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 907.3214740753174,
+        "y": 371.2500228881836,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "99c6d930.0a8418"
+            ]
+        ]
+    },
+    {
+        "id": "26db655a.45972a",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 910.5358085632324,
+        "y": 418.7500829696655,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "a48c837b.3ad64"
+            ]
+        ]
+    },
+    {
+        "id": "1489bb5a.cc2a45",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 912.1428985595703,
+        "y": 512.6786470413208,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "f5118913.72f998"
+            ]
+        ]
+    },
+    {
+        "id": "4c2b1545.e2559c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 911.0714645385742,
+        "y": 465.89294624328613,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "8cb75768.8a7f38"
+            ]
+        ]
+    },
+    {
+        "id": "1ab8a43d.1a186c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 912.1429290771484,
+        "y": 560.5358123779297,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "c455fe19.109ac"
+            ]
+        ]
+    },
+    {
+        "id": "1b07a08e.6bf74f",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 910.7144660949707,
+        "y": 605.5357437133789,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "38bd81a6.85a1ce"
+            ]
+        ]
+    },
+    {
+        "id": "99c6d930.0a8418",
+        "type": "call",
+        "name": "call port-mirror-topology-operation-assign-sync",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-assign-sync' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1198.5714111328125,
+        "y": 370,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "dacaa4a6.19a198"
+            ]
+        ]
+    },
+    {
+        "id": "dacaa4a6.19a198",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1461.4285888671875,
+        "y": 368.5714416503906,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "a38116c0.2bc5a8"
+            ]
+        ]
+    },
+    {
+        "id": "a38116c0.2bc5a8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y' />\n\n",
+        "comments": "",
+        "x": 1631.428565979004,
+        "y": 367.6785888671875,
+        "z": "ccb80365.d73f6",
+        "wires": []
+    },
+    {
+        "id": "a48c837b.3ad64",
+        "type": "call",
+        "name": "call port-mirror-topology-operation-activate-sync",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-activate-sync' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1200.000171661377,
+        "y": 419.0000190734863,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "24ad15be.750daa"
+            ]
+        ]
+    },
+    {
+        "id": "24ad15be.750daa",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1464.2858963012695,
+        "y": 419.00004482269287,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "c812919a.e4b99"
+            ]
+        ]
+    },
+    {
+        "id": "c812919a.e4b99",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y' />\n\n",
+        "comments": "",
+        "x": 1632.8573379516602,
+        "y": 418.6785898208618,
+        "z": "ccb80365.d73f6",
+        "wires": []
+    },
+    {
+        "id": "47b534cc.71ecec",
+        "type": "comment",
+        "name": "More involved validations",
+        "info": "",
+        "comments": "",
+        "x": 890.0000305175781,
+        "y": 322.85713291168213,
+        "z": "ccb80365.d73f6",
+        "wires": []
+    },
+    {
+        "id": "fb527534.27e138",
+        "type": "comment",
+        "name": "Input validations",
+        "info": "",
+        "comments": "",
+        "x": 575.7142944335938,
+        "y": 202.85715293884277,
+        "z": "ccb80365.d73f6",
+        "wires": []
+    },
+    {
+        "id": "f5118913.72f998",
+        "type": "call",
+        "name": "call port-mirror-topology-operation-deactivate-sync",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-deactivate-sync' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1205.142822265625,
+        "y": 512.2857055664062,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "3532cc9e.66ec14"
+            ]
+        ]
+    },
+    {
+        "id": "3532cc9e.66ec14",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1461.4285469055176,
+        "y": 512.2857313156128,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "a6fa834e.abd31"
+            ]
+        ]
+    },
+    {
+        "id": "a6fa834e.abd31",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y' />\n\n",
+        "comments": "",
+        "x": 1629.9999885559082,
+        "y": 511.96427631378174,
+        "z": "ccb80365.d73f6",
+        "wires": []
+    },
+    {
+        "id": "c455fe19.109ac",
+        "type": "call",
+        "name": "call port-mirror-topology-operation-enable",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-enable' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1177.2857666015625,
+        "y": 560,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "c5988a87.bbad38"
+            ]
+        ]
+    },
+    {
+        "id": "c5988a87.bbad38",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1458.571491241455,
+        "y": 560.0000257492065,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "4844c077.62ae3"
+            ]
+        ]
+    },
+    {
+        "id": "4844c077.62ae3",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y' />\n\n",
+        "comments": "",
+        "x": 1627.1429328918457,
+        "y": 559.6785707473755,
+        "z": "ccb80365.d73f6",
+        "wires": []
+    },
+    {
+        "id": "38bd81a6.85a1ce",
+        "type": "call",
+        "name": "call port-mirror-topology-operation-disable",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-disable' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1176.2857666015625,
+        "y": 607.1428833007812,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "fd672617.26d768"
+            ]
+        ]
+    },
+    {
+        "id": "fd672617.26d768",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1458.571491241455,
+        "y": 607.1429090499878,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "b751d818.e76978"
+            ]
+        ]
+    },
+    {
+        "id": "b751d818.e76978",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y' />\n\n",
+        "comments": "",
+        "x": 1627.1429328918457,
+        "y": 606.8214540481567,
+        "z": "ccb80365.d73f6",
+        "wires": []
+    },
+    {
+        "id": "8cb75768.8a7f38",
+        "type": "call",
+        "name": "call port-mirror-topology-operation-unassign",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-unassign' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1184.2857131958008,
+        "y": 464.2857189178467,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "72e7e63a.f45948"
+            ]
+        ]
+    },
+    {
+        "id": "72e7e63a.f45948",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1462.857135772705,
+        "y": 462.8571729660034,
+        "z": "ccb80365.d73f6",
+        "wires": [
+            [
+                "8b2dcc51.346be"
+            ]
+        ]
+    },
+    {
+        "id": "8b2dcc51.346be",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y' />\n\n",
+        "comments": "",
+        "x": 1631.4285774230957,
+        "y": 462.53571796417236,
+        "z": "ccb80365.d73f6",
+        "wires": []
+    },
+    {
+        "id": "f41c1b7a.2417f8",
+        "type": "set",
+        "name": "set response paths",
+        "xml": "<set>\n<parameter name='service-object-path' value=\"`'/config/GENERIC-RESOURCE-API:services/service/'\n  + $port-mirror-topology-operation-input.service-information.service-instance-id + '/service-data/service-topology'`\" />\n<parameter name='port-mirror-object-path' value=\"`'/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/'\n  + $port-mirror-topology-operation-input.configuration-information.configuration-id + '/configuration-data/port-mirror-configuration-topology'`\" />\n",
+        "comments": "",
+        "x": 533.3333206176758,
+        "y": 668.3333396911621,
+        "z": "ccb80365.d73f6",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_preload-network-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_preload-network-topology-operation.json
new file mode 100755
index 0000000..4c47dd0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_preload-network-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"744a6ac.bc88a94","type":"dgstart","name":"DGSTART","outputs":1,"x":107.5,"y":82.41365623474121,"z":"b919fa6d.b41f58","wires":[["94e1fb79.426e68"]]},{"id":"94e1fb79.426e68","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.78569793701172,"y":122.65176486968994,"z":"b919fa6d.b41f58","wires":[["81a2afe9.da7f7"]]},{"id":"81a2afe9.da7f7","type":"method","name":"method preload-network-topology-operation","xml":"<method rpc='preload-network-topology-operation' mode='sync'>\n","comments":"","outputs":1,"x":214.92862701416016,"y":163.4136505126953,"z":"b919fa6d.b41f58","wires":[["a5be5d1b.75fe3"]]},{"id":"925c66c0.4b0608","type":"comment","name":"preload-network-topology-operation","info":"","comments":"","x":501.84485626220703,"y":30,"z":"b919fa6d.b41f58","wires":[]},{"id":"a5be5d1b.75fe3","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":161.25000381469727,"y":340.0000047683716,"z":"b919fa6d.b41f58","wires":[["5017b57b.bf597c","fb27e21a.5c19d","c79cfdcd.6bd95","3eb928de.152f08","f67c8a3c.6f4628"]]},{"id":"5017b57b.bf597c","type":"set","name":"set preload-data.preload-network-topology-information from input","xml":"<set>\n<parameter name='preload-data.preload-network-topology-information.'\n  value='`$preload-network-topology-operation-input.preload-network-topology-information.`' />\n","comments":"","x":533.7500076293945,"y":326.2500057220459,"z":"b919fa6d.b41f58","wires":[]},{"id":"fb27e21a.5c19d","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=\"success\" />\n\n","comments":"","x":378.75000762939453,"y":458.75000762939453,"z":"b919fa6d.b41f58","wires":[]},{"id":"c79cfdcd.6bd95","type":"switchNode","name":"switch existing network-name","xml":"<switch test='`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-name`'>\n","comments":"","outputs":1,"x":420.00000762939453,"y":253.75000381469727,"z":"b919fa6d.b41f58","wires":[["779ca3b8.5c073c","df17eea8.b29a6"]]},{"id":"df17eea8.b29a6","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":641.2500076293945,"y":275.00000381469727,"z":"b919fa6d.b41f58","wires":[["3befdf53.d36d3"]]},{"id":"779ca3b8.5c073c","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":642.5000114440918,"y":227.50000286102295,"z":"b919fa6d.b41f58","wires":[["89a17c1e.38fd6"]]},{"id":"89a17c1e.38fd6","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":772.5000114440918,"y":227.50000286102295,"z":"b919fa6d.b41f58","wires":[[]]},{"id":"3befdf53.d36d3","type":"set","name":"clear preload-data","xml":"<set>\n<parameter name='preload-data.' value='' />\n","comments":"","x":805.0000076293945,"y":273.75000381469727,"z":"b919fa6d.b41f58","wires":[]},{"id":"3eb928de.152f08","type":"set","name":"set order-status and create-timestamp","xml":"<set>\n<parameter name='preload-data.preload-oper-status.order-status' value='PendingAssignment' />\n<parameter name='preload-data.preload-oper-status.create-timestamp' value='`$tmp.current-time`' />\n","comments":"","x":451.25003814697266,"y":412.5000066757202,"z":"b919fa6d.b41f58","wires":[]},{"id":"f67c8a3c.6f4628","type":"execute","name":"execute tmp.current-time","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n\t<parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n","comments":"","outputs":1,"x":410.00000762939453,"y":370.0000057220459,"z":"b919fa6d.b41f58","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_preload-vf-module-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_preload-vf-module-topology-operation.json
new file mode 100755
index 0000000..feb537a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_preload-vf-module-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"f27fa912.589538","type":"dgstart","name":"DGSTART","outputs":1,"x":105,"y":82.5,"z":"c07f05da.c7e1c8","wires":[["9146a9a6.f7edf8"]]},{"id":"9146a9a6.f7edf8","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.28569793701172,"y":122.73810863494873,"z":"c07f05da.c7e1c8","wires":[["bdf5c3ba.ee152"]]},{"id":"bdf5c3ba.ee152","type":"method","name":"method preload-vf-module-topology-operation","xml":"<method rpc='preload-vf-module-topology-operation' mode='sync'>\n","comments":"","outputs":1,"x":218.42862701416016,"y":163.4999942779541,"z":"c07f05da.c7e1c8","wires":[["882ef2af.667e5"]]},{"id":"a89316f9.b21838","type":"comment","name":"preload-vf-module-topology-operation","info":"","comments":"","x":499.34485626220703,"y":30.08634376525879,"z":"c07f05da.c7e1c8","wires":[]},{"id":"882ef2af.667e5","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":170,"y":346.3363389968872,"z":"c07f05da.c7e1c8","wires":[["7047801c.8951","6d62d0a8.c977c","a6ab8e75.08063","ca14bd3c.d82cc","43661128.1df3b"]]},{"id":"7047801c.8951","type":"set","name":"set preload-data.preload-vf-module-topology-information from input","xml":"<set>\n<parameter name='preload-data.preload-vf-module-topology-information.'\n  value='`$preload-vf-module-topology-operation-input.preload-vf-module-topology-information.`' />\n","comments":"","x":540.0000076293945,"y":326.33637046813965,"z":"c07f05da.c7e1c8","wires":[]},{"id":"6d62d0a8.c977c","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=\"success\" />\n\n","comments":"","x":377.50000381469727,"y":458.8363723754883,"z":"c07f05da.c7e1c8","wires":[]},{"id":"a6ab8e75.08063","type":"switchNode","name":"switch existing vf-module-name","xml":"<switch test='`$preload-data.preload-vf-module-topology-information.vf-module-topology.vf-module-topology-identifier.vf-module-name`'>\n","comments":"","outputs":1,"x":430.3571472167969,"y":255.08635139465332,"z":"c07f05da.c7e1c8","wires":[["d05889b1.634f78","706d3e7c.d22d"]]},{"id":"706d3e7c.d22d","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":632.3214263916016,"y":276.15777015686035,"z":"c07f05da.c7e1c8","wires":[["a6459d44.6e54f"]]},{"id":"d05889b1.634f78","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":633.5714302062988,"y":228.65776920318604,"z":"c07f05da.c7e1c8","wires":[["d8daaf0e.c6f17"]]},{"id":"d8daaf0e.c6f17","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":763.5714302062988,"y":228.65776920318604,"z":"c07f05da.c7e1c8","wires":[[]]},{"id":"a6459d44.6e54f","type":"set","name":"clear preload-data","xml":"<set>\n<parameter name='preload-data.' value='' />\n","comments":"","x":796.0714263916016,"y":274.90777015686035,"z":"c07f05da.c7e1c8","wires":[]},{"id":"43661128.1df3b","type":"set","name":"set order-status and create-timestamp","xml":"<set>\n<parameter name='preload-data.preload-oper-status.order-status' value='PendingAssignment' />\n<parameter name='preload-data.preload-oper-status.create-timestamp' value='`$tmp.current-time`' />\n","comments":"","x":450,"y":412.5,"z":"c07f05da.c7e1c8","wires":[]},{"id":"ca14bd3c.d82cc","type":"execute","name":"execute tmp.current-time","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n\t<parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n","comments":"","outputs":1,"x":408.7499694824219,"y":369.9999990463257,"z":"c07f05da.c7e1c8","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_process-eipam-pools.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_process-eipam-pools.json
new file mode 100644
index 0000000..8147d64
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_process-eipam-pools.json
@@ -0,0 +1 @@
+[{"id":"26a5ca6.1c01336","type":"dgstart","name":"DGSTART","outputs":1,"x":330.0048828125,"y":106.2548828125,"z":"13273219.a2462e","wires":[["74e1a712.f43b48"]]},{"id":"74e1a712.f43b48","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":392.5763130187988,"y":158.21916675567627,"z":"13273219.a2462e","wires":[["a13ee1a0.aff3b"]]},{"id":"a13ee1a0.aff3b","type":"method","name":"process-eipam-pools","xml":"<method rpc=\"process-eipam-pools\" mode=\"sync\">","comments":"","outputs":1,"x":326.90962982177734,"y":249.63584804534912,"z":"13273219.a2462e","wires":[["decca8b7.d137d8"]]},{"id":"ca8cc337.0ec27","type":"comment","name":"GENERIC-RESOURCE-API: PROCESS-EIPAM-POOLS","info":"","comments":"","x":788.4096832275391,"y":99.88583183288574,"z":"13273219.a2462e","wires":[]},{"id":"9e716ee7.6d1a","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":518.6596641540527,"y":408.4692497253418,"z":"13273219.a2462e","wires":[["8835f153.a604c","a0c28b8c.701b58","971f07f1.cc61b8","510fe372.d8df2c","4cc7733a.da8a4c","bbb3baa4.d38678","49a676db.497248","5efc09b8.c40c58","b43df66.6f46008","5af4e899.fd1ad8","41091a95.2f2404","40348bbc.184364"]]},{"id":"929b8679.970fa8","type":"comment","name":"CLEANUP LOCAL VARIABLES TO BE USED","info":"","comments":"","x":859.0167236328125,"y":132.23112392425537,"z":"13273219.a2462e","wires":[]},{"id":"510fe372.d8df2c","type":"set","name":"set values needed for eipam","xml":"<set>\n<parameter name='tmp.region' value='`$aai.complex.region`' />\n<parameter name='tmp.cloud-region-id' value=\"`$aai.cloud-region.cloud-region-id`\" />\n<parameter name='tmp.physical-location-id' value=\"`$aai.complex.physical-location-id`\" />\n<parameter name=\"tmp.clli\" value=\"`$aai.complex.physical-location-id`\" />\n<parameter name=\"tmp.zone\" value=\"`$aai.cloud-region.cloud-zone`\" />\n<parameter name=\"tmp.network-id\" value=\"`$tmp.l3-network.network-id`\" />\n<parameter name=\"tmp.service-type\" value=\"`$network-topology-operation-input.service-information.subscription-service-type`\" />\n<parameter name=\"eipam-ip-block.level\" value='1' />\n<parameter name='eipam-ip-block.plans_length' value='0' />\n<parameter name='eipam-pool.v4.pre-existing' value='false' />\n<parameter name='eipam-pool.v6.pre-existing' value='false' />\n<parameter name=\"tmp.level1-key-value\" value=\"`$tmp.location8 + ':' + $aai.cloud-region.cloud-region-id`\" />\n<parameter name=\"tmp.level2-key-value\" value=\"`$network-model.network-role + ':' + $tmp.l3-network.network-id`\" />\n<parameter name=\"tmp.ipv4-cidr-mask\" value=\"`$network-model.ipv4-cidr-mask`\" />\n<parameter name=\"tmp.ipv6-cidr-mask\" value=\"`$network-model.ipv6-cidr-mask`\" />","comments":"","x":810.9639434814453,"y":260.13062715530396,"z":"13273219.a2462e","wires":[]},{"id":"81093b35.926608","type":"comment","name":"Process level 1 pool - works v4 and v6","info":"","comments":"","x":833.9006652832031,"y":450.4877738952637,"z":"13273219.a2462e","wires":[]},{"id":"8835f153.a604c","type":"call","name":"call eipam-create-network-role-pool for level 1 pool","xml":"<call module='GENERIC-RESOURCE-API' rpc='eipam-create-network-role-pool' mode='sync' >\n","comments":"tmp.level should be set to 1","outputs":1,"x":881.5196380615234,"y":490.0591506958008,"z":"13273219.a2462e","wires":[["be0f5d3d.999be","bf64d71a.01b678"]]},{"id":"821df4f7.68f4b8","type":"call","name":"call eipam-allocate-network-role-subnet for level 1 pool","xml":"<call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-network-role-subnet' mode='sync' >\n","comments":"","outputs":1,"x":2383.4125022888184,"y":640.6783409118652,"z":"13273219.a2462e","wires":[["a0a2c0af.38716","578b6235.e398bc"]]},{"id":"a0a2c0af.38716","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2804.972099304199,"y":714.7213172912598,"z":"13273219.a2462e","wires":[["bbd0b56.6f62848"]]},{"id":"be0f5d3d.999be","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":1170.1978797912598,"y":491.387882232666,"z":"13273219.a2462e","wires":[["cf338f9d.20013"]]},{"id":"cf338f9d.20013","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"`'An error occured while allocating subnet in EIPAM.  Error creating level 1 pool. ' + $error-message`\" />\n\t","comments":"","x":1343.4479904174805,"y":490.59021377563477,"z":"13273219.a2462e","wires":[]},{"id":"f2592640.3b1438","type":"execute","name":"execute deletePoolByNetworkLevel for level 1 by network id ","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"deletePoolByNetworkLevel\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":4376.399833679199,"y":800.2379503250122,"z":"13273219.a2462e","wires":[["e8553677.862948","c29653be.ac7cc"]]},{"id":"e8553677.862948","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":4649.566822052002,"y":797.8780546188354,"z":"13273219.a2462e","wires":[["113aa130.3128ff"]]},{"id":"113aa130.3128ff","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating subnet in EIPAM.  Error rolling back EIPAM level 1 pool.\" />\n\t","comments":"","x":4823.816337585449,"y":796.294680595398,"z":"13273219.a2462e","wires":[]},{"id":"ec60a377.0783b","type":"comment","name":"Rollback level 1 pool","info":"","comments":"","x":4248.344123840332,"y":726.3490304946899,"z":"13273219.a2462e","wires":[]},{"id":"bbd0b56.6f62848","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2994.7151412963867,"y":712.8581581115723,"z":"13273219.a2462e","wires":[["a4b3682.cadc198","ee5fcb95.7a1fc8"]]},{"id":"2bc2eb0b.32d0c4","type":"set","name":"set: network-id to deallocate level 1 subnets","xml":"<set>\n\t<parameter name=\"eipam-ip-block.network-id\" value=\"`$tmp.l3-network.network-id`\" />\n\t<parameter name=\"eipam-ip-block.level\" value='1' />\n","comments":"","x":4326.186592102051,"y":763.5805978775024,"z":"13273219.a2462e","wires":[]},{"id":"e1ed1cc.fbec7e","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating subnet in EIPAM. Rollback complete.\" />\n\t","comments":"","x":4822.936416625977,"y":837.8305807113647,"z":"13273219.a2462e","wires":[]},{"id":"c29653be.ac7cc","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":4654.186408996582,"y":837.8306169509888,"z":"13273219.a2462e","wires":[["e1ed1cc.fbec7e"]]},{"id":"decca8b7.d137d8","type":"switchNode","name":"switch","xml":"<switch test='`$tmp.process-eipam-action`'>\n","comments":"","outputs":1,"x":282.18747329711914,"y":330.5802879333496,"z":"13273219.a2462e","wires":[["a516bf77.c80e8","d5fbf628.c1c488","f67aa8de.8c0578"]]},{"id":"a516bf77.c80e8","type":"other","name":"assign","xml":"<outcome value='assign'>\n","comments":"","outputs":1,"x":339.1041069030762,"y":409.4136161804199,"z":"13273219.a2462e","wires":[["9e716ee7.6d1a"]]},{"id":"d5fbf628.c1c488","type":"other","name":"delete","xml":"<outcome value='delete'>\n","comments":"","outputs":1,"x":298.4281692504883,"y":2748.895079135895,"z":"13273219.a2462e","wires":[["1c42d9e6.7b1b46"]]},{"id":"f67aa8de.8c0578","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":288.428186416626,"y":2818.895172595978,"z":"13273219.a2462e","wires":[["1e63660f.426e7a"]]},{"id":"1e63660f.426e7a","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Invalid option to process-eipam\" />\n\t","comments":"","x":498.4281692504883,"y":2818.895079135895,"z":"13273219.a2462e","wires":[]},{"id":"4cc7733a.da8a4c","type":"set","name":"clean up local variables","xml":"<set>\n<parameter name='eipam-ip-block.entity-id' value='' />\n<parameter name='eipam-ip-block.ip-prefix' value='' />\n<parameter name='eipam-ip-block.mask' value='' />\n<parameter name='tmp.location8' value='' />\n<parameter name='tmp.l3-network.level1.v4.entity-id' value='' />\n<parameter name='tmp.l3-network.level1.v4.ip-prefix' value='' />\n<parameter name='tmp.l3-network.level1.v4.mask' value='' />\n<parameter name='tmp.l3-network.level1.v4.pool.pre-existing' value='false' />\n<parameter name='tmp.l3-network.level1.v4.subnet.pre-existing' value='false' />\n<parameter name='tmp.l3-network.level1.v6.entity-id' value='' />\n<parameter name='tmp.l3-network.level1.v6.ip-prefix' value='' />\n<parameter name='tmp.l3-network.level1.v6.mask' value='' />\n<parameter name='tmp.l3-network.level1.v6.pool.pre-existing' value='false' />\n<parameter name='tmp.l3-network.level1.v6.subnet.pre-existing' value='false' />\n<parameter name='tmp.l3-network.level2.v4.entity-id' value='' />\n<parameter name='tmp.l3-network.level2.v4.ip-prefix' value='' />\n<parameter name='tmp.l3-network.level2.v4.mask' value='' />\n<parameter name='tmp.l3-network.level2.v4.pool.pre-existing' value='false' />\n<parameter name='tmp.l3-network.level2.v4.subnet.pre-existing' value='false' />\n<parameter name='tmp.l3-network.level2.v6.entity-id' value='' />\n<parameter name='tmp.l3-network.level2.v6.ip-prefix' value='' />\n<parameter name='tmp.l3-network.level2.v6.mask' value='' />\n<parameter name='tmp.l3-network.level2.v6.pool.pre-existing' value='false' />\n<parameter name='tmp.l3-network.level2.v6.subnet.pre-existing' value='false' />\n\n","comments":"","x":798.1304626464844,"y":195.9162826538086,"z":"13273219.a2462e","wires":[]},{"id":"1c42d9e6.7b1b46","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Invalid option to process-eipam\" />\n\t","comments":"","x":496.76151275634766,"y":2738.895079135895,"z":"13273219.a2462e","wires":[]},{"id":"51f43cfc.dddeb4","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"eipam-pool.v4.pre-existing\"/>\n<parameter name=\"field5\" value=\"`$eipam-pool.v4.pre-existing`\"/>\n<parameter name=\"field6\" value=\"eipam-pool.v4.pre-existing\"/>\n<parameter name=\"field7\" value=\"`$eipam-pool.v6.pre-existing`\"/>\n<parameter name=\"field8\" value=\"tmp.create-v4-pool-flag\" />\n<parameter name=\"field9\" value=\"`$tmp.create-v4-pool-flag`\" />\n<parameter name=\"field10\" value=\"tmp.create-v6-pool-flag\" />\n<parameter name=\"field11\" value=\"`$tmp.create-v6-pool-flag`\" />\n\n","comments":"","outputs":1,"x":1524.2109756469727,"y":494.28662490844727,"z":"13273219.a2462e","wires":[[]]},{"id":"bf64d71a.01b678","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1173.3538856506348,"y":525.6040992736816,"z":"13273219.a2462e","wires":[["9ea6458b.4ba778"]]},{"id":"578b6235.e398bc","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2800.401710510254,"y":630.8898906707764,"z":"13273219.a2462e","wires":[["97b6ef9c.ea63"]]},{"id":"bf91aa56.8eb818","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"eipam-ip-block.ip-prefix for level1\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.ip-prefix`\"/>\n<parameter name=\"field6\" value=\"eipam-ip-block.mask for level1\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.mask`\"/>\n<parameter name=\"field8\" value=\"ipv4\"/>\n\n\n","comments":"","outputs":1,"x":3168.5921173095703,"y":630.0327854156494,"z":"13273219.a2462e","wires":[[]]},{"id":"a0c28b8c.701b58","type":"switchNode","name":"switch: network-model.use-ipv4","xml":"<switch test=\"`$network-model.use-ipv4`\">","comments":"","outputs":1,"x":824.6873512268066,"y":603.8105621337891,"z":"13273219.a2462e","wires":[["ae3d966a.c9c648"]]},{"id":"ae3d966a.c9c648","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1039.687484741211,"y":602.5724363327026,"z":"13273219.a2462e","wires":[["43bbc76a.c3f6b8"]]},{"id":"43bbc76a.c3f6b8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1220.5920791625977,"y":603.0010662078857,"z":"13273219.a2462e","wires":[["af7f6527.edb5c8"]]},{"id":"8825b922.356dc8","type":"set","name":"set values needed for eipam","xml":"<set>\n<parameter name='eipam-ip-block.entity-id' value='' />\n<parameter name='eipam-ip-block.ip-prefix' value='' />\n<parameter name='eipam-ip-block.mask' value='' />\n<parameter name=\"eipam-ip-block.allocate-version\" value='ipv4' />\n<parameter name=\"eipam-ip-block.level\" value='1' />\n<parameter name='eipam-ip-block.plans_length' value='0' />\n\n","comments":"","x":2307.973171234131,"y":600.6677207946777,"z":"13273219.a2462e","wires":[]},{"id":"fc1d4e.48cd62b","type":"set","name":"set values needed for eipam","xml":"<set>\n<parameter name='tmp.l3-network.level1.v4.subnet.pre-existing' value='' />\n<parameter name='tmp.l3-network.level1.v4.entity-id' value='`$eipam-ip-block.entity-id`' />\n<parameter name='tmp.l3-network.level1.v4.ip-prefix' value='`$eipam-ip-block.ip-prefix`' />\n<parameter name='tmp.l3-network.level1.v4.mask' value='`$eipam-ip-block.mask`' />\n","comments":"","x":3236.3058471679688,"y":669.3344402313232,"z":"13273219.a2462e","wires":[]},{"id":"97b6ef9c.ea63","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2965.4278869628906,"y":629.4878120422363,"z":"13273219.a2462e","wires":[["bf91aa56.8eb818","fc1d4e.48cd62b"]]},{"id":"9ea6458b.4ba778","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1344.7980880737305,"y":525.5247535705566,"z":"13273219.a2462e","wires":[["51f43cfc.dddeb4","3ba64f1d.b8549"]]},{"id":"3ba64f1d.b8549","type":"set","name":"Save return values from eipam level 1 pool","xml":"<set>\n<parameter name='tmp.l3-network.level1.v4.pool.pre-existing' value='`$eipam-pool.v4.pre-existing`'/>\n<parameter name='tmp.l3-network.level1.v6.pool.pre-existing' value='`$eipam-pool.v6.pre-existing`'/>\n","comments":"","x":1627.1314697265625,"y":524.1914081573486,"z":"13273219.a2462e","wires":[]},{"id":"c10611d3.6d382","type":"call","name":"call eipam-allocate-network-role-subnet for level 1 pool","xml":"<call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-network-role-subnet' mode='sync' >\n","comments":"","outputs":1,"x":2438.1317138671875,"y":880.7469024658203,"z":"13273219.a2462e","wires":[["3443f1a6.7f03ce","d27f450.b62b6b8"]]},{"id":"3443f1a6.7f03ce","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2765.358070373535,"y":946.789813041687,"z":"13273219.a2462e","wires":[["4f6f9cb9.a07924"]]},{"id":"37233d85.e67162","type":"execute","name":"execute deletePoolByNetworkLevel for level 1 by network id ","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"deletePoolByNetworkLevel\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":4295.453617095947,"y":1000.6396789550781,"z":"13273219.a2462e","wires":[["57b5862f.1058c8","ea103017.440e8"]]},{"id":"57b5862f.1058c8","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":4605.287010192871,"y":1006.6131494045258,"z":"13273219.a2462e","wires":[["68b2fca.6643404"]]},{"id":"68b2fca.6643404","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating subnet in EIPAM.  Error rolling back EIPAM level 1 pool.\" />\n\t","comments":"","x":4759.536365509033,"y":1006.0297954082489,"z":"13273219.a2462e","wires":[]},{"id":"4f6f9cb9.a07924","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2955.1011123657227,"y":944.9266538619995,"z":"13273219.a2462e","wires":[["9390a183.d5941","e26666fa.6a5278"]]},{"id":"c2e2769.3bad588","type":"set","name":"set: network-id to deallocate level 1 subnets","xml":"<set>\n\t<parameter name=\"eipam-ip-block.network-id\" value=\"`$tmp.l3-network.network-id`\" />\n\t<parameter name=\"eipam-ip-block.level\" value='1' />\n","comments":"","x":4243.573734283447,"y":957.3155810832977,"z":"13273219.a2462e","wires":[]},{"id":"4770b69.349e548","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating subnet in EIPAM. Rollback complete.\" />\n\t","comments":"","x":4758.657272338867,"y":974.5656020641327,"z":"13273219.a2462e","wires":[]},{"id":"ea103017.440e8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":4604.906940460205,"y":974.8990371227264,"z":"13273219.a2462e","wires":[["4770b69.349e548"]]},{"id":"d27f450.b62b6b8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2776.1210403442383,"y":880.2918062210083,"z":"13273219.a2462e","wires":[["9d36a9ac.fef518"]]},{"id":"8a97ab57.38cf98","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"eipam-ip-block.ip-prefix for level1\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.ip-prefix`\"/>\n<parameter name=\"field6\" value=\"eipam-ip-block.mask for level1\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.mask`\"/>\n<parameter name=\"field8\" value=\"ipv6\"/>\n\n\n","comments":"","outputs":1,"x":3119.3113975524902,"y":841.1013469696045,"z":"13273219.a2462e","wires":[[]]},{"id":"971f07f1.cc61b8","type":"switchNode","name":"switch: network-model.use-ipv6","xml":"<switch test=\"`$network-model.use-ipv6`\">","comments":"","outputs":1,"x":827.4069366455078,"y":803.8791933059692,"z":"13273219.a2462e","wires":[["f3e1324c.6612e"]]},{"id":"f3e1324c.6612e","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1122.5497970581055,"y":803.6410779953003,"z":"13273219.a2462e","wires":[["12147367.4a8bdd"]]},{"id":"12147367.4a8bdd","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1281.5498428344727,"y":804.3077039718628,"z":"13273219.a2462e","wires":[["2ff782e5.e2ab0e"]]},{"id":"a6235f03.e315","type":"set","name":"set values needed for eipam","xml":"<set>\n<parameter name='eipam-ip-block.entity-id' value='' />\n<parameter name='eipam-ip-block.ip-prefix' value='' />\n<parameter name='eipam-ip-block.mask' value='' />\n<parameter name=\"eipam-ip-block.allocate-version\" value='ipv6' />\n<parameter name=\"eipam-ip-block.level\" value='1' />\n<parameter name='eipam-ip-block.plans_length' value='0' />\n\n","comments":"","x":2354.6925048828125,"y":845.7362957000732,"z":"13273219.a2462e","wires":[]},{"id":"62308253.bd37fc","type":"set","name":"set values needed for eipam","xml":"<set>\n<parameter name='tmp.l3-network.level1.v6.subnet.pre-existing' value='' />\n<parameter name='tmp.l3-network.level1.v6.entity-id' value='`$eipam-ip-block.entity-id`' />\n<parameter name='tmp.l3-network.level1.v6.ip-prefix' value='`$eipam-ip-block.ip-prefix`' />\n<parameter name='tmp.l3-network.level1.v6.mask' value='`$eipam-ip-block.mask`' />\n","comments":"","x":3187.0252647399902,"y":878.4030437469482,"z":"13273219.a2462e","wires":[]},{"id":"9d36a9ac.fef518","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2941.147216796875,"y":878.8897275924683,"z":"13273219.a2462e","wires":[["8a97ab57.38cf98","62308253.bd37fc"]]},{"id":"af7f6527.edb5c8","type":"get-resource","name":"get-resource V4 - validate if level 1 subnet does not exists","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v4-address-plan and s.entity_id = k.entity_id and k.level = 1 and k.key_value = $tmp.level1-key-value ; \"\n        pfx='tmp.eipam-subnet-row'>\n\n","comments":"","outputs":1,"x":1556.7508544921875,"y":602.5565061569214,"z":"13273219.a2462e","wires":[["f8f9d373.532b","72e91999.024938"]]},{"id":"f8f9d373.532b","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1874.7508544921875,"y":572.9730968475342,"z":"13273219.a2462e","wires":[["ef161a9c.0d0c68"]]},{"id":"72e91999.024938","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1874.8629150390625,"y":602.7231283187866,"z":"13273219.a2462e","wires":[["b674f36a.1a068"]]},{"id":"b674f36a.1a068","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2031.3291053771973,"y":599.4370555877686,"z":"13273219.a2462e","wires":[["8825b922.356dc8","821df4f7.68f4b8"]]},{"id":"ef161a9c.0d0c68","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2031.7230262756348,"y":573.4731271266937,"z":"13273219.a2462e","wires":[["bc822129.93202","5d6a12e4.f7367c"]]},{"id":"bc822129.93202","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Existing eipam-ip-block.ip-prefix for level1\"/>\n<parameter name=\"field5\" value=\"`$tmp.eipam-subnet-row.ip-address`\"/>\n<parameter name=\"field6\" value=\"Existing eipam-ip-block.mask for level1\"/>\n<parameter name=\"field7\" value=\"`$tmp.eipam-subnet-row.prefix-length`\"/>\n<parameter name=\"field8\" value=\"ipv4\"/>\n\n\n","comments":"","outputs":1,"x":2242.1395416259766,"y":532.8898344039917,"z":"13273219.a2462e","wires":[[]]},{"id":"5d6a12e4.f7367c","type":"set","name":"set pre-existing for l3subnet for level1","xml":"<set>\n<parameter name='tmp.l3-network.level1.v4.subnet.pre-existing' value='true' />\n<parameter name='tmp.l3-network.level1.v4.entity-id' value='`$tmp.eipam-row.entity-id`' />\n<parameter name='tmp.l3-network.level1.v4.ip-prefix' value='`$tmp.eipam-row.ip-address`' />\n<parameter name='tmp.l3-network.level1.v4.mask' value='`$tmp.eipam-row.prefix-length`' />\n\n\n","comments":"","x":2335.6036529541016,"y":565.6915016174316,"z":"13273219.a2462e","wires":[]},{"id":"2ff782e5.e2ab0e","type":"get-resource","name":"get-resource V6 - validate if level 1 subnet does not exists","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v6-address-plan and s.entity_id = k.entity_id and k.level = 1 and k.key_value = $tmp.level1-key-value ; \"\n        pfx='tmp.eipam-subnet-row'>\n\n","comments":"","outputs":1,"x":1598.6874694824219,"y":803.9689569473267,"z":"13273219.a2462e","wires":[["73286b3d.7c3de4","b9f2f0d3.63cbb"]]},{"id":"73286b3d.7c3de4","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1920.020523071289,"y":807.3023300170898,"z":"13273219.a2462e","wires":[["f45581d4.512d6"]]},{"id":"b9f2f0d3.63cbb","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1928.8826522827148,"y":853.3023607730865,"z":"13273219.a2462e","wires":[["e7b8d744.8ea788"]]},{"id":"e7b8d744.8ea788","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2079.0988235473633,"y":851.2663195133209,"z":"13273219.a2462e","wires":[["a6235f03.e315","c10611d3.6d382"]]},{"id":"36abb80c.f7d488","type":"comment","name":"Check if level1 ipv6 subnet exists","info":"","comments":"","x":1514.0525512695312,"y":772.3023738861084,"z":"13273219.a2462e","wires":[]},{"id":"f45581d4.512d6","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2103.242691040039,"y":807.3023300170898,"z":"13273219.a2462e","wires":[["5e1dfaca.7d1de4","8692643b.73b088"]]},{"id":"5e1dfaca.7d1de4","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Existing eipam-ip-block.ip-prefix for level1\"/>\n<parameter name=\"field5\" value=\"`$tmp.eipam-subnet-row.ip-address`\"/>\n<parameter name=\"field6\" value=\"Existing eipam-ip-block.mask for level1\"/>\n<parameter name=\"field7\" value=\"`$tmp.eipam-subnet-row.prefix-length`\"/>\n<parameter name=\"field8\" value=\"ipv6\"/>\n\n\n","comments":"","outputs":1,"x":2301.242607116699,"y":765.3024101257324,"z":"13273219.a2462e","wires":[[]]},{"id":"8692643b.73b088","type":"set","name":"set pre-existing for l3subnet for level1","xml":"<set>\n<parameter name='tmp.l3-network.level1.v6.subnet.pre-existing' value='true' />\n<parameter name='tmp.l3-network.level1.v6.entity-id' value='`$tmp.eipam-row.entity-id`' />\n<parameter name='tmp.l3-network.level1.v6.ip-prefix' value='`$tmp.eipam-row.ip-address`' />\n<parameter name='tmp.l3-network.level1.v6.mask' value='`$tmp.eipam-row.prefix-length`' />\n\n","comments":"","x":2392.956558227539,"y":804.6040267944336,"z":"13273219.a2462e","wires":[]},{"id":"bbb3baa4.d38678","type":"set","name":"set values needed for eipam","xml":"<set>\n<parameter name='eipam-ip-block.entity-id' value='' />\n<parameter name='eipam-ip-block.ip-prefix' value='' />\n<parameter name='eipam-ip-block.mask' value='' />\n<parameter name=\"eipam-ip-block.level\" value='2' />\n<parameter name='eipam-ip-block.plans_length' value='0' />\n<parameter name='eipam-pool.v4.pre-existing' value='false' />\n<parameter name='eipam-pool.v6.pre-existing' value='false' />\n","comments":"","x":825.4560546875,"y":942.9322824478149,"z":"13273219.a2462e","wires":[]},{"id":"84167862.8d4608","type":"comment","name":"Process level 2 pool - works v4 and v6","info":"","comments":"","x":926.0118179321289,"y":1050.7655863761902,"z":"13273219.a2462e","wires":[]},{"id":"49a676db.497248","type":"call","name":"call eipam-create-network-role-pool for level 2 pool","xml":"<call module='GENERIC-RESOURCE-API' rpc='eipam-create-network-role-pool' mode='sync' >\n","comments":"tmp.level should be set to 1","outputs":1,"x":889.6308135986328,"y":978.1941261291504,"z":"13273219.a2462e","wires":[["e2699b39.b4f1b8","855112f1.7ac38"]]},{"id":"b8a9a3d0.bcc68","type":"call","name":"call eipam-allocate-network-role-subnet for level 2 pool","xml":"<call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-network-role-subnet' mode='sync' >\n","comments":"","outputs":1,"x":2570.6066856384277,"y":1403.7337074279785,"z":"13273219.a2462e","wires":[["3a4d7362.3951cc","daecaf42.f4517"]]},{"id":"3a4d7362.3951cc","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2915.8329849243164,"y":1449.7767696380615,"z":"13273219.a2462e","wires":[["2aa7a17.8253c5e"]]},{"id":"e2699b39.b4f1b8","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":1192.392448425293,"y":978.9988918304443,"z":"13273219.a2462e","wires":[["d1bdae81.46c86"]]},{"id":"d3bdbb5f.8fad18","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating subnet in EIPAM.  Error creating level 2 pool\" />\n\t","comments":"","x":1555.4522323608398,"y":975.6773777008057,"z":"13273219.a2462e","wires":[]},{"id":"b390984b.905dc8","type":"execute","name":"execute deletePoolByNetworkLevel for level 2 by network id ","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"deletePoolByNetworkLevel\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":4367.261474609375,"y":1478.848892211914,"z":"13273219.a2462e","wires":[["367c3d33.3aa6f2","e03da82.9460b58"]]},{"id":"367c3d33.3aa6f2","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":4672.4288330078125,"y":1474.488925933838,"z":"13273219.a2462e","wires":[[]]},{"id":"308acba1.d8b8e4","type":"comment","name":"Rollback level 1 pool","info":"","comments":"","x":4239.205749511719,"y":1402.959903717041,"z":"13273219.a2462e","wires":[]},{"id":"2aa7a17.8253c5e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":3105.576026916504,"y":1447.913610458374,"z":"13273219.a2462e","wires":[["83fbd2ff.3f684","f7621f6a.bcfcd"]]},{"id":"d38997f6.9e0988","type":"set","name":"set: network-id to deallocate level 2 subnets","xml":"<set>\n\t<parameter name=\"eipam-ip-block.network-id\" value=\"`$tmp.l3-network.network-id`\" />\n\t<parameter name=\"eipam-ip-block.level\" value='2' />\n","comments":"","x":4317.0482177734375,"y":1440.1914710998535,"z":"13273219.a2462e","wires":[]},{"id":"e03da82.9460b58","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":4673.0484619140625,"y":1512.441562652588,"z":"13273219.a2462e","wires":[[]]},{"id":"ac8fe90.639de18","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"eipam-pool.v4.pre-existing\"/>\n<parameter name=\"field5\" value=\"`$eipam-pool.v4.pre-existing`\"/>\n<parameter name=\"field6\" value=\"eipam-pool.v4.pre-existing\"/>\n<parameter name=\"field7\" value=\"`$eipam-pool.v6.pre-existing`\"/>\n<parameter name=\"field8\" value=\"tmp.create-v4-pool-flag\" />\n<parameter name=\"field9\" value=\"`$tmp.create-v4-pool-flag`\" />\n<parameter name=\"field10\" value=\"tmp.create-v6-pool-flag\" />\n<parameter name=\"field11\" value=\"`$tmp.create-v6-pool-flag`\" />\n\n","comments":"","outputs":1,"x":1544.0722274780273,"y":1010.8976554870605,"z":"13273219.a2462e","wires":[[]]},{"id":"855112f1.7ac38","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1192.2149963378906,"y":1010.5483727455139,"z":"13273219.a2462e","wires":[["699ee235.f1dbfc"]]},{"id":"daecaf42.f4517","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2924.5960083007812,"y":1399.2786293029785,"z":"13273219.a2462e","wires":[["715d357a.98f3ac"]]},{"id":"59c01406.8fcf5c","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"eipam-ip-block.ip-prefix for level2\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.ip-prefix`\"/>\n<parameter name=\"field6\" value=\"eipam-ip-block.mask for level2\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.mask`\"/>\n<parameter name=\"field8\" value=\"ipv4\"/>\n\n\n","comments":"","outputs":1,"x":3369.1201171875,"y":1340.4214515686035,"z":"13273219.a2462e","wires":[[]]},{"id":"5efc09b8.c40c58","type":"switchNode","name":"switch: network-model.use-ipv4","xml":"<switch test=\"`$network-model.use-ipv4`\">","comments":"","outputs":1,"x":825.2150840759277,"y":1328.199465751648,"z":"13273219.a2462e","wires":[["c72f2288.0a2f5"]]},{"id":"c72f2288.0a2f5","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1169.0248069763184,"y":1325.2946891784668,"z":"13273219.a2462e","wires":[["a9493ce.e3e59c"]]},{"id":"a9493ce.e3e59c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1323.0247497558594,"y":1324.294692993164,"z":"13273219.a2462e","wires":[["25d3a2dc.2588ce"]]},{"id":"b98d84fb.d73f78","type":"set","name":"set values needed for eipam","xml":"<set>\n<parameter name='eipam-ip-block.entity-id' value='' />\n<parameter name='eipam-ip-block.ip-prefix' value='' />\n<parameter name='eipam-ip-block.mask' value='' />\n<parameter name=\"eipam-ip-block.allocate-version\" value='ipv4' />\n<parameter name=\"eipam-ip-block.level\" value='2' />\n<parameter name='eipam-ip-block.plans_length' value='0' />\n<parameter name=\"eipam-ip-block.subnet-size-override\" value=\"`$eipam-ip-block.subnet-size-override-v4`\" />\n","comments":"","x":2485.1673851013184,"y":1361.7229652404785,"z":"13273219.a2462e","wires":[]},{"id":"ea0e7273.2d7a1","type":"set","name":"set values needed for eipam","xml":"<set>\n<parameter name='tmp.l3-network.level2.v4.subnet.pre-existing' value='' />\n<parameter name='tmp.l3-network.level2.v4.entity-id' value='`$eipam-ip-block.entity-id`' />\n<parameter name='tmp.l3-network.level2.v4.ip-prefix' value='`$eipam-ip-block.ip-prefix`' />\n<parameter name='tmp.l3-network.level2.v4.mask' value='`$eipam-ip-block.mask`' />\n","comments":"","x":3438.833740234375,"y":1375.723331451416,"z":"13273219.a2462e","wires":[]},{"id":"715d357a.98f3ac","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":3089.622184753418,"y":1397.8765506744385,"z":"13273219.a2462e","wires":[["59c01406.8fcf5c","ea0e7273.2d7a1"]]},{"id":"699ee235.f1dbfc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1361.326084136963,"y":1009.802442073822,"z":"13273219.a2462e","wires":[["ac8fe90.639de18","e8050219.af8cb"]]},{"id":"e8050219.af8cb","type":"set","name":"Save return values from eipam level 2 pool","xml":"<set>\n<parameter name='tmp.l3-network.level2.v4.pre-existing' value='`$eipam-pool.v4.pre-existing`'/>\n<parameter name='tmp.l3-network.level2.v6.pre-existing' value='`$eipam-pool.v6.pre-existing`'/>\n","comments":"","x":1650.326099395752,"y":1042.802372932434,"z":"13273219.a2462e","wires":[]},{"id":"a8bd6055.9077c","type":"call","name":"call eipam-allocate-network-role-subnet for level 2 pool","xml":"<call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-network-role-subnet' mode='sync' >\n","comments":"","outputs":1,"x":2814.9930419921875,"y":1877.598331451416,"z":"13273219.a2462e","wires":[["d5830192.64037","dd267a76.2bed88"]]},{"id":"d5830192.64037","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":3192.8861083984375,"y":1906.141544342041,"z":"13273219.a2462e","wires":[["2f7196d8.47f47a"]]},{"id":"e89c3ffe.854bc","type":"execute","name":"execute deletePoolByNetworkLevel for level 2 by network id ","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"deletePoolByNetworkLevel\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":4570.31494140625,"y":1987.2136268615723,"z":"13273219.a2462e","wires":[["fe4065e1.db6d38","40ff689.0e45898"]]},{"id":"fe4065e1.db6d38","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":4885.481731414795,"y":1944.853796005249,"z":"13273219.a2462e","wires":[[]]},{"id":"9fc036f4.3c53b8","type":"comment","name":"Rollback level 1 pool","info":"","comments":"","x":3678.2588806152344,"y":1881.3248128890991,"z":"13273219.a2462e","wires":[]},{"id":"2f7196d8.47f47a","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":3352.6292724609375,"y":1902.2783851623535,"z":"13273219.a2462e","wires":[["433c3e71.52ba2","4d0efd6c.1776a4"]]},{"id":"ee3babc0.1cd638","type":"set","name":"set: network-id to deallocate level 2 subnets","xml":"<set>\n\t<parameter name=\"eipam-ip-block.network-id\" value=\"`$tmp.l3-network.network-id`\" />\n\t<parameter name=\"eipam-ip-block.level\" value='2' />\n","comments":"","x":4520.101715087891,"y":1950.556308746338,"z":"13273219.a2462e","wires":[]},{"id":"40ff689.0e45898","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":4890.10147857666,"y":1984.8063716888428,"z":"13273219.a2462e","wires":[[]]},{"id":"dd267a76.2bed88","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":3191.649124145508,"y":1869.6435928344727,"z":"13273219.a2462e","wires":[["f64cf0d3.40786"]]},{"id":"8a91df5f.08d47","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"eipam-ip-block.ip-prefix for level1\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.ip-prefix`\"/>\n<parameter name=\"field6\" value=\"eipam-ip-block.mask for level1\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.mask`\"/>\n<parameter name=\"field8\" value=\"ipv6\"/>\n\n\n","comments":"","outputs":1,"x":3556.172737121582,"y":1806.7865581512451,"z":"13273219.a2462e","wires":[[]]},{"id":"b43df66.6f46008","type":"switchNode","name":"switch: network-model.use-ipv6","xml":"<switch test=\"`$network-model.use-ipv6`\">","comments":"","outputs":1,"x":594.6013793945312,"y":1886.2311353683472,"z":"13273219.a2462e","wires":[["d4112f60.f8379"]]},{"id":"d4112f60.f8379","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1408.0775871276855,"y":1887.6596183776855,"z":"13273219.a2462e","wires":[["eea0303a.7f9a5"]]},{"id":"eea0303a.7f9a5","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1575.4108848571777,"y":1884.9930171966553,"z":"13273219.a2462e","wires":[["98edb47c.7103a8"]]},{"id":"15c0f5d5.df77ea","type":"set","name":"set values needed for eipam","xml":"<set>\n<parameter name='eipam-ip-block.entity-id' value='' />\n<parameter name='eipam-ip-block.ip-prefix' value='' />\n<parameter name='eipam-ip-block.mask' value='' />\n<parameter name=\"eipam-ip-block.allocate-version\" value='ipv6' />\n<parameter name=\"eipam-ip-block.level\" value='2' />\n<parameter name='eipam-ip-block.plans_length' value='0' />\n<parameter name=\"eipam-ip-block.subnet-size-override\" value=\"`$eipam-ip-block.subnet-size-override-v6`\" />\n\n","comments":"","x":2738.2203369140625,"y":1842.0879554748535,"z":"13273219.a2462e","wires":[]},{"id":"280c41ff.c8bfee","type":"set","name":"set values needed for eipam","xml":"<set>\n<parameter name='tmp.l3-network.level2.v6.subnet.pre-existing' value='' />\n<parameter name='tmp.l3-network.level2.v6.entity-id' value='`$eipam-ip-block.entity-id`' />\n<parameter name='tmp.l3-network.level2.v6.ip-prefix' value='`$eipam-ip-block.ip-prefix`' />\n<parameter name='tmp.l3-network.level2.v6.mask' value='`$eipam-ip-block.mask`' />\n","comments":"","x":3623.8865966796875,"y":1840.0881996154785,"z":"13273219.a2462e","wires":[]},{"id":"f64cf0d3.40786","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":3356.6753005981445,"y":1868.2415142059326,"z":"13273219.a2462e","wires":[["8a91df5f.08d47","280c41ff.c8bfee"]]},{"id":"279b22b8.18538e","type":"comment","name":"Allocate ipv4 subnet for level 2","info":"","comments":"","x":936.6597595214844,"y":1264.1358460320366,"z":"13273219.a2462e","wires":[]},{"id":"c2cddcdc.fdb41","type":"comment","name":"Allocate ipv6 subnet for level 1","info":"","comments":"","x":1097.6596069335938,"y":1836.0988311767578,"z":"13273219.a2462e","wires":[]},{"id":"25d3a2dc.2588ce","type":"get-resource","name":"get-resource V4 - validate if level 2 subnet does not exists","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v4-address-plan and s.entity_id = k.entity_id and k.level = 2 and k.key_value = $tmp.level2-key-value ; \"\n        pfx='tmp.eipam-subnet-row'>\n\n","comments":"","outputs":1,"x":1701.3263854980469,"y":1324.802568435669,"z":"13273219.a2462e","wires":[["1952016e.3f672f","3db8dd8.554bc22"]]},{"id":"1952016e.3f672f","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2043.6595878601074,"y":1322.135806798935,"z":"13273219.a2462e","wires":[["dc729d74.3017e"]]},{"id":"3db8dd8.554bc22","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":2052.521717071533,"y":1368.1358375549316,"z":"13273219.a2462e","wires":[["ad57044b.6c28a8"]]},{"id":"ad57044b.6c28a8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2202.7378883361816,"y":1366.099796295166,"z":"13273219.a2462e","wires":[["b98d84fb.d73f78","b8a9a3d0.bcc68"]]},{"id":"b228f721.dfa6d8","type":"comment","name":"Check if level2 ipv4 subnet exists","info":"","comments":"","x":1670.8819046020508,"y":1228.1358184814453,"z":"13273219.a2462e","wires":[]},{"id":"dc729d74.3017e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2226.8817558288574,"y":1322.135806798935,"z":"13273219.a2462e","wires":[["b0532c9.9f729d","63d7e576.ad29ec"]]},{"id":"b0532c9.9f729d","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Existing eipam-ip-block.ip-prefix for level2\"/>\n<parameter name=\"field5\" value=\"`$tmp.eipam-subnet-row.ip-address`\"/>\n<parameter name=\"field6\" value=\"Existing eipam-ip-block.mask for level2\"/>\n<parameter name=\"field7\" value=\"`$tmp.eipam-subnet-row.prefix-length`\"/>\n<parameter name=\"field8\" value=\"ipv4\"/>\n\n\n","comments":"","outputs":1,"x":2426.8817558288574,"y":1274.135806798935,"z":"13273219.a2462e","wires":[[]]},{"id":"63d7e576.ad29ec","type":"set","name":"set pre-existing for l3subnet for level2","xml":"<set>\n<parameter name='tmp.l3-network.level2.v4.subnet.pre-existing' value='true' />\n<parameter name='tmp.l3-network.level2.v4.entity-id' value='`$tmp.eipam-row.entity-id`' />\n<parameter name='tmp.l3-network.level2.v4.ip-prefix' value='`$tmp.eipam-row.ip-address`' />\n<parameter name='tmp.l3-network.level2.v4.mask' value='`$tmp.eipam-row.prefix-length`' />\n\n","comments":"","x":2516.5956230163574,"y":1319.4375035762787,"z":"13273219.a2462e","wires":[]},{"id":"98edb47c.7103a8","type":"get-resource","name":"get-resource V6 - validate if level 2 subnet does not exists","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v6-address-plan and s.entity_id = k.entity_id and k.level = 2 and k.key_value = $tmp.level2-key-value ; \"\n        pfx='tmp.eipam-subnet-row'>\n\n","comments":"","outputs":1,"x":1915.8818130493164,"y":1846.3209190368652,"z":"13273219.a2462e","wires":[["4d9abe6f.03723","5fa34d71.41e264"]]},{"id":"4d9abe6f.03723","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2338.881690979004,"y":1796.3209190368652,"z":"13273219.a2462e","wires":[["6d74200f.9a21b"]]},{"id":"5fa34d71.41e264","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":2347.7438201904297,"y":1842.320949792862,"z":"13273219.a2462e","wires":[["2355885b.84f818"]]},{"id":"2355885b.84f818","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2497.959991455078,"y":1840.2849085330963,"z":"13273219.a2462e","wires":[["15c0f5d5.df77ea","a8bd6055.9077c"]]},{"id":"67fe0d24.77b704","type":"comment","name":"Check if level2 ipv6 subnet exists","info":"","comments":"","x":1834.1040649414062,"y":1806.3208770751953,"z":"13273219.a2462e","wires":[]},{"id":"6d74200f.9a21b","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2522.103858947754,"y":1796.3209190368652,"z":"13273219.a2462e","wires":[["723b2abc.e7dcd4","bca9455b.dabdc8"]]},{"id":"723b2abc.e7dcd4","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Existing eipam-ip-block.ip-prefix for level1\"/>\n<parameter name=\"field5\" value=\"`$tmp.eipam-subnet-row.ip-address`\"/>\n<parameter name=\"field6\" value=\"Existing eipam-ip-block.mask for level1\"/>\n<parameter name=\"field7\" value=\"`$tmp.eipam-subnet-row.prefix-length`\"/>\n<parameter name=\"field8\" value=\"ipv6\"/>\n\n\n","comments":"","outputs":1,"x":2682.1037979125977,"y":1756.3208847045898,"z":"13273219.a2462e","wires":[[]]},{"id":"bca9455b.dabdc8","type":"set","name":"set pre-existing for l3subnet for level2","xml":"<set>\n<parameter name='tmp.l3-network.level2.v6.subnet.pre-existing' value='true' />\n<parameter name='tmp.l3-network.level2.v6.entity-id' value='`$tmp.eipam-row.entity-id`' />\n<parameter name='tmp.l3-network.level2.v6.ip-prefix' value='`$tmp.eipam-row.ip-address`' />\n<parameter name='tmp.l3-network.level2.v6.mask' value='`$tmp.eipam-row.prefix-length`' />\n\n","comments":"","x":2773.8177490234375,"y":1795.622501373291,"z":"13273219.a2462e","wires":[]},{"id":"a4b3682.cadc198","type":"switchNode","name":"switch: tmp.l3-network.level1.v4.pool.pre-existing","xml":"<switch test=\"`$tmp.l3-network.level1.v4.pool.pre-existing`\">","comments":"","outputs":1,"x":3296.7508544921875,"y":744.493106842041,"z":"13273219.a2462e","wires":[["e499cd71.43c93","587fff8a.27e9e","cb4647b0.201b38"]]},{"id":"9390a183.d5941","type":"switchNode","name":"switch: tmp.l3-network.level1.v6.pool.pre-existing","xml":"<switch test=\"`$tmp.l3-network.level1.v6.pool.pre-existing`\">","comments":"","outputs":1,"x":3250.909580230713,"y":977.4134929180145,"z":"13273219.a2462e","wires":[["97cce460.b59978","c45d0ade.64a628","bcaf0131.0c991"]]},{"id":"8effc3ff.6e142","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":4045.7982177734375,"y":762.9694671630859,"z":"13273219.a2462e","wires":[["2bc2eb0b.32d0c4","f2592640.3b1438"]]},{"id":"83fbd2ff.3f684","type":"switchNode","name":"switch: tmp.l3-network.level2.v4.pool.pre-existing","xml":"<switch test=\"`$tmp.l3-network.level2.v4.pool.pre-existing`\">","comments":"","outputs":1,"x":3502.687255859375,"y":1448.746768951416,"z":"13273219.a2462e","wires":[["8cb10eb0.1e01d","75013018.c42ca","e9669fbd.776b7"]]},{"id":"8cb10eb0.1e01d","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":3871.020778656006,"y":1439.4136905670166,"z":"13273219.a2462e","wires":[["b1fb1e2.c5d5de"]]},{"id":"b1fb1e2.c5d5de","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":4021.909698486328,"y":1439.635980606079,"z":"13273219.a2462e","wires":[["d38997f6.9e0988","b390984b.905dc8","53cff857.660688"]]},{"id":"433c3e71.52ba2","type":"switchNode","name":"switch: tmp.l3-network.level2.v6.pool.pre-existing","xml":"<switch test=\"`$tmp.l3-network.level2.v6.pool.pre-existing`\">","comments":"","outputs":1,"x":3687.6876220703125,"y":1932.709903717041,"z":"13273219.a2462e","wires":[["29ecf01a.181cd","e27e2625.ab3528","988b417d.71bc"]]},{"id":"aa9ed2f7.49cc6","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":4177.909870147705,"y":1966.932188987732,"z":"13273219.a2462e","wires":[["ee3babc0.1cd638","e89c3ffe.854bc","8fc0591a.42f498"]]},{"id":"75013018.c42ca","type":"other","name":"null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":3870.7984924316406,"y":1470.7469425201416,"z":"13273219.a2462e","wires":[["b1fb1e2.c5d5de"]]},{"id":"97cce460.b59978","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":3558.1319580078125,"y":1010.7467079162598,"z":"13273219.a2462e","wires":[["29338655.3bb4aa"]]},{"id":"29338655.3bb4aa","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":3972.354404449463,"y":989.9690234661102,"z":"13273219.a2462e","wires":[["c2e2769.3bad588","37233d85.e67162"]]},{"id":"c45d0ade.64a628","type":"other","name":"null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":3561.2430419921875,"y":1048.7465875148773,"z":"13273219.a2462e","wires":[["29338655.3bb4aa"]]},{"id":"e499cd71.43c93","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":3654.1317138671875,"y":761.524845123291,"z":"13273219.a2462e","wires":[["8effc3ff.6e142"]]},{"id":"587fff8a.27e9e","type":"other","name":"null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":3653.9094276428223,"y":792.858097076416,"z":"13273219.a2462e","wires":[["8effc3ff.6e142"]]},{"id":"29ecf01a.181cd","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":3986.1319904327393,"y":1965.3766059875488,"z":"13273219.a2462e","wires":[["aa9ed2f7.49cc6"]]},{"id":"e27e2625.ab3528","type":"other","name":"null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":3985.909704208374,"y":1996.7098579406738,"z":"13273219.a2462e","wires":[["aa9ed2f7.49cc6"]]},{"id":"ee5fcb95.7a1fc8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Failed to allocate level1 ipv4 subnet - failure from eipam-allocate-network-role-subnet\"/>\n\n\n\n","comments":"","outputs":1,"x":3172.06831741333,"y":709.350076675415,"z":"13273219.a2462e","wires":[[]]},{"id":"d1bdae81.46c86","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1361.0842208862305,"y":971.016815662384,"z":"13273219.a2462e","wires":[["d3bdbb5f.8fad18","3568caa1.e24ec6"]]},{"id":"3568caa1.e24ec6","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Error creating level 2 pool, need to attempt rollback\"/>\n\n\n","comments":"","outputs":1,"x":1538.7032890319824,"y":941.4136028289795,"z":"13273219.a2462e","wires":[[]]},{"id":"e26666fa.6a5278","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Failed to allocate level1 ipv6 subnet - failure from eipam-allocate-network-role-subnet\"/>\n\n\n\n","comments":"","outputs":1,"x":3126.27490234375,"y":944.7150917053223,"z":"13273219.a2462e","wires":[[]]},{"id":"f7621f6a.bcfcd","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Failed to allocate level2 ipv4 subnet - failure from eipam-allocate-network-role-subnet\"/>\n\n\n\n","comments":"","outputs":1,"x":3376.2109985351562,"y":1410.207218170166,"z":"13273219.a2462e","wires":[[]]},{"id":"4d0efd6c.1776a4","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Failed to allocate level2 ipv6 subnet - failure from eipam-allocate-network-role-subnet\"/>\n\n\n\n","comments":"","outputs":1,"x":3554.100341796875,"y":1900.074893951416,"z":"13273219.a2462e","wires":[[]]},{"id":"bcaf0131.0c991","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3556.4120197296143,"y":975.7733252048492,"z":"13273219.a2462e","wires":[["9ebe1aa6.192e88"]]},{"id":"9ebe1aa6.192e88","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback.\" />\n\t","comments":"","x":3721.745372772217,"y":976.1064937114716,"z":"13273219.a2462e","wires":[]},{"id":"cb4647b0.201b38","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3648.7453842163086,"y":729.2919425964355,"z":"13273219.a2462e","wires":[["92f5bb4d.61dfd8"]]},{"id":"92f5bb4d.61dfd8","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback.\" />\n\t","comments":"","x":3818.4121170043945,"y":731.2917356491089,"z":"13273219.a2462e","wires":[]},{"id":"e9669fbd.776b7","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3870.7455291748047,"y":1407.6621828079224,"z":"13273219.a2462e","wires":[["c4d26b8d.b092f8"]]},{"id":"c4d26b8d.b092f8","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback.\" />\n\t","comments":"","x":4034.078868865967,"y":1405.9953527450562,"z":"13273219.a2462e","wires":[]},{"id":"988b417d.71bc","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3991.7457427978516,"y":1931.6622495651245,"z":"13273219.a2462e","wires":[["6cd0f2c.47b5c0c"]]},{"id":"6cd0f2c.47b5c0c","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback.\" />\n\t","comments":"","x":4155.079082489014,"y":1929.9954195022583,"z":"13273219.a2462e","wires":[]},{"id":"5c72eb0.0aed714","type":"comment","name":"If preexisting, check to see if there are any level 2 pools whose parent is the level 1, if not remove level 1 pool","info":"","comments":"","x":5343.523345947266,"y":578.106746673584,"z":"13273219.a2462e","wires":[]},{"id":"a1079cc2.e2ee8","type":"execute","name":"execute deletePoolByNetworkLevel for level 1 by network id ","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"deletePoolByNetworkLevel\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":5049.9312744140625,"y":1636.958652496338,"z":"13273219.a2462e","wires":[["6f04d1d5.5f9ba","540060d6.b2021"]]},{"id":"6f04d1d5.5f9ba","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":5359.764667510986,"y":1642.9321229457855,"z":"13273219.a2462e","wires":[["c2ca0fa.2bdc5f"]]},{"id":"d889ce3a.e9edb","type":"set","name":"set: network-id to deallocate level 1 subnets","xml":"<set>\n\t<parameter name=\"eipam-ip-block.network-id\" value=\"`$tmp.l3-network.network-id`\" />\n\t<parameter name=\"eipam-ip-block.level\" value='1' />\n","comments":"","x":4994.0516357421875,"y":1601.6345863342285,"z":"13273219.a2462e","wires":[]},{"id":"540060d6.b2021","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":5359.38459777832,"y":1611.2180106639862,"z":"13273219.a2462e","wires":[["18bef9ee.c4f286"]]},{"id":"53cff857.660688","type":"switchNode","name":"switch: v4 or v6 is preexisting","xml":"<switch test=\"`$tmp.l3-network.level1.v4.pool.pre-existing == true or $tmp.l3-network.level1.v4.pool.pre-existing == true`\">","comments":"","outputs":1,"x":4277.3870849609375,"y":1573.7324562072754,"z":"13273219.a2462e","wires":[["63318349.4d837c","a5cfa2e1.d93ab","b3a7b935.51bae8"]]},{"id":"63318349.4d837c","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":4538.6090087890625,"y":1609.0657081604004,"z":"13273219.a2462e","wires":[["94a98109.1a794"]]},{"id":"94a98109.1a794","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":4726.832061767578,"y":1626.28799700737,"z":"13273219.a2462e","wires":[["d889ce3a.e9edb","a1079cc2.e2ee8"]]},{"id":"a5cfa2e1.d93ab","type":"other","name":"null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":4541.7200927734375,"y":1647.065587759018,"z":"13273219.a2462e","wires":[["94a98109.1a794"]]},{"id":"b3a7b935.51bae8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":4536.8892822265625,"y":1574.0923194885254,"z":"13273219.a2462e","wires":[["b0d1a533.811538"]]},{"id":"b0d1a533.811538","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback.\" />\n\t","comments":"","x":4684.2227783203125,"y":1572.425449371338,"z":"13273219.a2462e","wires":[]},{"id":"47a8f869.cbdf48","type":"execute","name":"execute deletePoolByNetworkLevel for level 1 by network id ","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"deletePoolByNetworkLevel\">\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","outputs":1,"x":5253.2640380859375,"y":2091.6252479553223,"z":"13273219.a2462e","wires":[["9ca9efd1.dd319","e255d0e.1574d3"]]},{"id":"9ca9efd1.dd319","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":5563.097431182861,"y":2097.59871840477,"z":"13273219.a2462e","wires":[["b12f56c1.f36bb8"]]},{"id":"b12f56c1.f36bb8","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating level 2 ipv6 subnet in EIPAM.  Error rolling back EIPAM level 1 pool.\" />\n\t","comments":"","x":5717.346786499023,"y":2097.015364408493,"z":"13273219.a2462e","wires":[]},{"id":"76aa1a43.f7cbd4","type":"set","name":"set: network-id to deallocate level 1 subnets","xml":"<set>\n\t<parameter name=\"eipam-ip-block.network-id\" value=\"`$tmp.l3-network.network-id`\" />\n\t<parameter name=\"eipam-ip-block.level\" value='1' />\n","comments":"","x":5197.3843994140625,"y":2056.301181793213,"z":"13273219.a2462e","wires":[]},{"id":"10018766.0764c9","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating level 2 ipv6 subnet in EIPAM. Rollback complete.\" />\n\t","comments":"","x":5716.467693328857,"y":2065.551171064377,"z":"13273219.a2462e","wires":[]},{"id":"e255d0e.1574d3","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":5562.717361450195,"y":2065.8846061229706,"z":"13273219.a2462e","wires":[["10018766.0764c9"]]},{"id":"8fc0591a.42f498","type":"switchNode","name":"switch: v4 or v6 is preexisting","xml":"<switch test=\"`$tmp.l3-network.level1.v4.pool.pre-existing == true or $tmp.l3-network.level1.v4.pool.pre-existing == true`\">","comments":"","outputs":1,"x":4480.7198486328125,"y":2028.3990516662598,"z":"13273219.a2462e","wires":[["51a738a5.eb4508","5cd9bf93.11988","5afc75b4.b63d4c"]]},{"id":"51a738a5.eb4508","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":4741.9417724609375,"y":2063.7323036193848,"z":"13273219.a2462e","wires":[["ea2401f0.93e87"]]},{"id":"ea2401f0.93e87","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":4930.164825439453,"y":2080.9545924663544,"z":"13273219.a2462e","wires":[["76aa1a43.f7cbd4","47a8f869.cbdf48"]]},{"id":"5cd9bf93.11988","type":"other","name":"null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":4745.0528564453125,"y":2101.7321832180023,"z":"13273219.a2462e","wires":[["ea2401f0.93e87"]]},{"id":"5afc75b4.b63d4c","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":4740.2220458984375,"y":2028.7589149475098,"z":"13273219.a2462e","wires":[["e9ecf5a6.862ab8"]]},{"id":"e9ecf5a6.862ab8","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback.\" />\n\t","comments":"","x":4887.5555419921875,"y":2027.0920448303223,"z":"13273219.a2462e","wires":[]},{"id":"c2ca0fa.2bdc5f","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating level 2 ipv4 subnet in EIPAM.  Error rolling back EIPAM level 1 pool.\" />\n\t","comments":"","x":5514.014022827148,"y":1642.3487689495087,"z":"13273219.a2462e","wires":[]},{"id":"18bef9ee.c4f286","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating level 2 ipv4 subnet in EIPAM. Rollback complete.\" />\n\t","comments":"","x":5513.134929656982,"y":1610.8845756053925,"z":"13273219.a2462e","wires":[]},{"id":"cc4b6f7a.b133f","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while allocating level 2 ipv4 subnet in EIPAM.  Error rolling back EIPAM level 1 pool.\" />\n\t","comments":"","x":4236.3753662109375,"y":1717.1807899475098,"z":"13273219.a2462e","wires":[]},{"id":"1b1b39d.6e1f5c6","type":"comment","name":"Check for mask override","info":"","comments":"","x":801.4335174560547,"y":317.6834487915039,"z":"13273219.a2462e","wires":[]},{"id":"53d875b9.e25a0c","type":"for","name":"for pidx..$network-topology-operation-input.network-request-input.network-input-parameters[]","xml":"<for index='pidx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >\n","comments":"","outputs":1,"x":2014.290756225586,"y":383.25492811203003,"z":"13273219.a2462e","wires":[["12b86022.9f3c9"]]},{"id":"5af4e899.fd1ad8","type":"switchNode","name":"network-topology-operation-input.network-request-input.network-input-parameters.param_length","xml":"<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`\">","comments":"","outputs":1,"x":1027.1477813720703,"y":350.5405864715576,"z":"13273219.a2462e","wires":[["b56e9929.0631f8","77d0882a.eba8a8"]]},{"id":"b56e9929.0631f8","type":"outcome","name":"outcome null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1458.5762538909912,"y":350.9691696166992,"z":"13273219.a2462e","wires":[["98af4284.40a5d"]]},{"id":"98af4284.40a5d","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1624.0048849923269,"y":351.11202730451305,"z":"13273219.a2462e","wires":[[]]},{"id":"77d0882a.eba8a8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1442.8619270324707,"y":383.39773750305176,"z":"13273219.a2462e","wires":[["9e36687d.b7bc78"]]},{"id":"9e36687d.b7bc78","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1614.8620376586914,"y":383.3977298736572,"z":"13273219.a2462e","wires":[["53d875b9.e25a0c"]]},{"id":"12b86022.9f3c9","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2449.4332122802734,"y":383.49296951293945,"z":"13273219.a2462e","wires":[["d16ce2be.ed367","9e089bc0.790198"]]},{"id":"d16ce2be.ed367","type":"execute","name":"SliStringUtils - check v4 override","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].name`\" />\n    <parameter name=\"target\" value=\"network_assignments_ipv4_subnet_default_assignment_cidr_mask\"/>\n  \n","comments":"","outputs":1,"x":2713.7665405273438,"y":383.159610748291,"z":"13273219.a2462e","wires":[["2ed358db.e30918"]]},{"id":"2ed358db.e30918","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2941.100109100342,"y":383.15965461730957,"z":"13273219.a2462e","wires":[["2e214c0e.51b7d4"]]},{"id":"2e214c0e.51b7d4","type":"set","name":"set subnet override for v4","xml":"<set>\n<parameter name='eipam-ip-block.subnet-size-override-v4' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].value`' />\n\n","comments":"","x":3147.4334564208984,"y":383.15959548950195,"z":"13273219.a2462e","wires":[]},{"id":"9e089bc0.790198","type":"execute","name":"SliStringUtils - check v6 override","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].name`\" />\n    <parameter name=\"target\" value=\"network_assignments_ipv6_subnet_default_assignment_cidr_mask\"/>\n  \n","comments":"","outputs":1,"x":2712.0167541503906,"y":426.32629013061523,"z":"13273219.a2462e","wires":[["ce2eaebf.051b"]]},{"id":"ce2eaebf.051b","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2941.3503227233887,"y":427.3263339996338,"z":"13273219.a2462e","wires":[["d902235b.05114"]]},{"id":"d902235b.05114","type":"set","name":"set subnet override for v6","xml":"<set>\n<parameter name='eipam-ip-block.subnet-size-override-v6' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].value`' />\n\n","comments":"","x":3147.183547973633,"y":427.32629680633545,"z":"13273219.a2462e","wires":[]},{"id":"41091a95.2f2404","type":"set","name":"set subnet override if not set","xml":"<set>\n\t<parameter name=\"eipam-ip-block.subnet-size-override-v4\" value=\"`$network-model.ipv4-cidr-mask`\" />\n\t<parameter name=\"eipam-ip-block.subnet-size-override-v6\" value=\"`$network-model.ipv6-cidr-mask`\" />","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":808.4333419799805,"y":293.15962982177734,"z":"13273219.a2462e","wires":[]},{"id":"40348bbc.184364","type":"execute","name":"SliStringUtils - substring clli","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>\n    <parameter name=\"string\" value=\"`$aai.complex.physical-location-id`\" />\n    <parameter name=\"result\" value=\"tmp.location8\"/>\n    <parameter name=\"begin-index\" value=\"0\" />\n    <parameter name=\"end-index\" value=\"8\" />\n","comments":"","outputs":1,"x":809.0049133300781,"y":229.88975143432617,"z":"13273219.a2462e","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_process-generic-eipam-pools.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_process-generic-eipam-pools.json
new file mode 100755
index 0000000..c9e8cd4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_process-generic-eipam-pools.json
@@ -0,0 +1 @@
+[{"id":"6639e046.20571","type":"comment","name":"Required INPUTS","info":"required INPUTS:\n\n$aai.cloud-region.cloud-region-id from AAI, vf-module-topology-operation-input or RA\nnetwork-model - from Tosca model or RA\ntmp.skip-first-level - set to Y if already created in EIPAM\ntmp.allocate-subnet-flag - Y if EIPAM should allocate automatically, \n       else N in which case eipam-allocate-generic-subnet will be called \n       to allocate subnet using same key_names & key_values as the createPool \n       based on generate-FQPN outputs.\nif driven by capabilities input, set following accordingly\n\t\t\tnetwork-model.eipam-v4-address-plan\n\t\t\tnetwork-model.eipam-v6-address-plan\n\t\t\tnetwork-model.use-ipv4\n\t\t\tnetwork-model.use-ipv6\n\nSet the necessary values as inputs for all the key_values as needed\n for the specific Address Plans based on generate-FQPN DG required inputs:\n\ngenerate-FQPN-input.aic-cloud-region\ngenerate-FQPN-input.location-clli8\ngenerate-FQPN-input.complex-region\ngenerate-FQPN-input.network-name\ngenerate-FQPN-input.network-role\ngenerate-FQPN-input.vrf-name\ngenerate-FQPN-input.network-collection\ngenerate-FQPN-input.network-id\ngenerate-FQPN-input.subnet-role\ngenerate-FQPN-input.zone\ngenerate-FQPN-input.equipment\n\nOptional Inputs\n\t\ntmp.activate-subnet-flag - set to Y or N to have EIPAM activate it(Default to Y)\t\n(If for shared network)\nnetwork-topology-operation-input.network-request-input.network-instance-group-id\n","comments":"","x":637.7777709960938,"y":99.99999809265137,"z":"5699c5cb.963a7c","wires":[]},{"id":"fbf3c5c8.de5c78","type":"dgstart","name":"DGSTART","outputs":1,"x":145.8730239868164,"y":25.55555534362793,"z":"5699c5cb.963a7c","wires":[["c869b773.2f8a58"]]},{"id":"c869b773.2f8a58","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":208.44445419311523,"y":77.5198392868042,"z":"5699c5cb.963a7c","wires":[["2dc4b3d0.17207c"]]},{"id":"2dc4b3d0.17207c","type":"method","name":"process-generic-eipam-pools","xml":"<method rpc=\"process-generic-eipam-pools\" mode=\"sync\">","comments":"This DG relys on generate-FQPN to determine the key_names & key_values for all levels for the specified plan-name.","outputs":1,"x":177.2222137451172,"y":157.8254165649414,"z":"5699c5cb.963a7c","wires":[["f85abacd.8c5448"]]},{"id":"4020be51.23848","type":"comment","name":"GENERIC-RESOURCE-API: process-generic-eipam-pools","info":"1806 - Used by VLAN-Tagging for network-collection. This can be reused by adding \nother key-values as needed by other Address Plans.","comments":"","x":509.9999694824219,"y":27.77777671813965,"z":"5699c5cb.963a7c","wires":[]},{"id":"7ef17b38.7db444","type":"for","name":"for l-idx: getPlanTopologyResponse.TopologyDetails[]","xml":"<for index=\"l-idx\" start=\"1\" end=\"`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length + 1`\">","comments":"","outputs":1,"x":384.3253059387207,"y":2139.920602798462,"z":"5699c5cb.963a7c","wires":[["fc1b7d2e.0283"]]},{"id":"f85abacd.8c5448","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":117.77777099609375,"y":264.4444408416748,"z":"5699c5cb.963a7c","wires":[["9b260fd6.396cf","8ca80066.09737","a6616785.d520f8","7ef17b38.7db444","801abe02.e2e1b","72c6fa14.eb5414","4f1fda53.55bbe4","9b3275bb.0d36d8","b17da27b.64d35","b8e79a11.50fec8","adf823e9.02928","98682fc4.05c22","a551348.af4dac8","e85e7565.d76da8","5e9374f6.85274c"]]},{"id":"9b260fd6.396cf","type":"set","name":"set: data initialization","xml":"<set>\n\t<parameter name=\"tmp.eipam-error\" value=\"false\" />\n\t<parameter name=\"tmp.create-v4-pool-flag\" value=\"N\" />\n\t<parameter name=\"tmp.create-v6-pool-flag\" value=\"N\" />\n\t<parameter name='eipam-ip-block.plans_length' value='0' />\n\t<parameter name=\"eipam-pool.v4.pre-existing\" value=\"false\"/>\n\t<parameter name=\"eipam-pool.v6.pre-existing\" value=\"false\"/>\n<!-- <parameter name=\"tmp.network-id\" value=\"`$tmp.l3-network.network-id`\" /> -->\n\t<parameter name=\"tmp.network-id\" value=\"`$network-topology-operation-input.network-information.network-id`\" />\n\n","comments":"","x":378.0159149169922,"y":201.1111421585083,"z":"5699c5cb.963a7c","wires":[]},{"id":"dc240e90.7c143","type":"call","name":"call: generate-FQPN","xml":"<call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >","comments":"","outputs":1,"x":884.0478057861328,"y":1528.511996269226,"z":"5699c5cb.963a7c","wires":[["d7b5dc50.66bae"]]},{"id":"d7b5dc50.66bae","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":1057.1430835723877,"y":1527.7025480270386,"z":"5699c5cb.963a7c","wires":[["c8e18c62.f671c"]]},{"id":"c8e18c62.f671c","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=\"`'An error occured while generating FQPN: '+ $error-message`\" />\n","comments":"","x":1203.1430854797363,"y":1527.7025480270386,"z":"5699c5cb.963a7c","wires":[]},{"id":"acef8d81.05eac","type":"set","name":"set generate-FQPN-input.plan-name v4","xml":"<set>\n<parameter name='generate-FQPN-input.plan-name' value='`$network-model.eipam-v4-address-plan`' />\n","comments":"","x":958.4131126403809,"y":1449.742238998413,"z":"5699c5cb.963a7c","wires":[]},{"id":"8ca80066.09737","type":"switchNode","name":"switch: network-model.use-ipv4","xml":"<switch test=\"`$network-model.use-ipv4`\">","comments":"","outputs":1,"x":312.36134338378906,"y":1563.7501077651978,"z":"5699c5cb.963a7c","wires":[["cb7c8c1c.091c9","5ff70d5e.fcb184","90712d6.6f872d"]]},{"id":"5ff70d5e.fcb184","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":521.8614349365234,"y":1616.750150680542,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"cb7c8c1c.091c9","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":520.8614921569824,"y":1569.0000972747803,"z":"5699c5cb.963a7c","wires":[["be3bd336.71a94"]]},{"id":"be3bd336.71a94","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":678.3335800170898,"y":1527.7223300933838,"z":"5699c5cb.963a7c","wires":[["dc240e90.7c143","3e7b82c9.2f3e8e","acef8d81.05eac"]]},{"id":"90712d6.6f872d","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":517.8613967895508,"y":1525.9400367736816,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"fc1b7d2e.0283","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":664.722110748291,"y":2143.0636167526245,"z":"5699c5cb.963a7c","wires":[["e878ceff.dd9e7","4fdc7750.bee6d8","a5b75182.1e4e"]]},{"id":"4f1fda53.55bbe4","type":"switchNode","name":"switch: generate-FQPN-input.zone","xml":"<switch test='`$generate-FQPN-input.zone`'>\n","comments":"","outputs":1,"x":403.7500057220459,"y":430.0000114440918,"z":"5699c5cb.963a7c","wires":[["7d09f53.0ec530c"]]},{"id":"7d09f53.0ec530c","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":615.0000114440918,"y":429.5000066757202,"z":"5699c5cb.963a7c","wires":[["2c36f082.69714"]]},{"id":"138dbc4b.50e054","type":"comment","name":"go thru each level in topology","info":"Level 1 is special case, since if EIPAM already created it, \nthen just skip.","comments":"","x":310.0596046447754,"y":2064.0476608276367,"z":"5699c5cb.963a7c","wires":[]},{"id":"e878ceff.dd9e7","type":"set","name":"set values needed for eipam","xml":"<set>\n<parameter name='eipam-ip-block.entity-id' value='' />\n<parameter name='eipam-ip-block.ip-prefix' value='' />\n<parameter name='eipam-ip-block.mask' value='' />\n<parameter name=\"eipam-ip-block.level\" value='`$l-idx`' />\n<parameter name='eipam-pool.v4.pre-existing' value='false' />\n<parameter name='eipam-pool.v6.pre-existing' value='false' />\n","comments":"","x":874.8808746337891,"y":2141.8332347869873,"z":"5699c5cb.963a7c","wires":[]},{"id":"23866667.fbee0a","type":"comment","name":"Create pools for each level - includes v4 and v6","info":"","comments":"","x":368.2938117980957,"y":2101.095058441162,"z":"5699c5cb.963a7c","wires":[]},{"id":"4fdc7750.bee6d8","type":"call","name":"call eipam-create-generic-pool for l-idx level","xml":"<call module='GENERIC-RESOURCE-API' rpc='eipam-create-generic-pool' mode='sync' >\n","comments":"tmp.level should be set to 1","outputs":1,"x":921.9128074645996,"y":2178.5236492156982,"z":"5699c5cb.963a7c","wires":[["40f29997.00db98","af688d4d.bea39"]]},{"id":"40f29997.00db98","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":1224.6744422912598,"y":2179.328414916992,"z":"5699c5cb.963a7c","wires":[["61dca39.09b5f5c"]]},{"id":"64182e18.d54fa","type":"returnFailure","name":"return failure","xml":"<return status=\"failure\">\n\t<parameter name=\"tmp.eipam-error\" value=\"true\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while creating pool\" />\n\t","comments":"","x":1587.7342262268066,"y":2176.0069007873535,"z":"5699c5cb.963a7c","wires":[]},{"id":"67b6f066.f59d3","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-generic-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"`$l-idx`\"/>\n<parameter name=\"field5\" value=\"`$eipam-pool.v4.pre-existing`\"/>\n<parameter name=\"field6\" value=\"eipam-pool.v4.pre-existing\"/>\n<parameter name=\"field7\" value=\"`$eipam-pool.v6.pre-existing`\"/>\n<parameter name=\"field8\" value=\"tmp.create-v4-pool-flag\" />\n<parameter name=\"field9\" value=\"`$tmp.create-v4-pool-flag`\" />\n<parameter name=\"field10\" value=\"tmp.create-v6-pool-flag\" />\n<parameter name=\"field11\" value=\"`$tmp.create-v6-pool-flag`\" />\n<parameter name=\"field12\" value=\"Successful\" />\n","comments":"","outputs":1,"x":1576.3542213439941,"y":2211.2271785736084,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"af688d4d.bea39","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1224.4969902038574,"y":2210.8778958320618,"z":"5699c5cb.963a7c","wires":[["cd684d36.53dbb"]]},{"id":"cd684d36.53dbb","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1393.6080780029297,"y":2210.13196516037,"z":"5699c5cb.963a7c","wires":[["67b6f066.f59d3"]]},{"id":"61dca39.09b5f5c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1392.1162338256836,"y":2156.3464679718018,"z":"5699c5cb.963a7c","wires":[["64182e18.d54fa","a8738c2a.45fc"]]},{"id":"a8738c2a.45fc","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-generic-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Error creating pool for level\"/>\n<parameter name=\"field5\" value=\"`$l-idx`\"/>\n\n","comments":"","outputs":1,"x":1570.985252380371,"y":2131.7431964874268,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"3e7b82c9.2f3e8e","type":"set","name":"set v4FQPN-output","xml":"<set>\n\t<parameter name=\"v4FQPN-output.\" value=\"generate-FQPN-output.\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":883.1549301147461,"y":1594.166742324829,"z":"5699c5cb.963a7c","wires":[]},{"id":"e6178867.650b28","type":"call","name":"call: generate-FQPN","xml":"<call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >","comments":"","outputs":1,"x":891.2699584960938,"y":1732.916711807251,"z":"5699c5cb.963a7c","wires":[["51c1bf8e.d4ee8"]]},{"id":"51c1bf8e.d4ee8","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":1064.3652362823486,"y":1732.1072635650635,"z":"5699c5cb.963a7c","wires":[["1b67d960.c217c7"]]},{"id":"1b67d960.c217c7","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=\"`'An error occured while generating FQPN: '+ $error-message`\" />\n","comments":"","x":1210.3652381896973,"y":1732.1072635650635,"z":"5699c5cb.963a7c","wires":[]},{"id":"96ff74dd.aeb058","type":"set","name":"set generate-FQPN-input.plan-name v6","xml":"<set>\n<parameter name='generate-FQPN-input.plan-name' value='`$network-model.eipam-v6-address-plan`' />\n","comments":"","x":944.2064781188965,"y":1680.7541151046753,"z":"5699c5cb.963a7c","wires":[]},{"id":"a6616785.d520f8","type":"switchNode","name":"switch: network-model.use-ipv6","xml":"<switch test=\"`$network-model.use-ipv6`\">","comments":"","outputs":1,"x":319.58349609375,"y":1768.1548233032227,"z":"5699c5cb.963a7c","wires":[["4f012967.c289a8","cf85cf74.c416b","e049d83c.4571c8"]]},{"id":"cf85cf74.c416b","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":529.0835876464844,"y":1821.154866218567,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"4f012967.c289a8","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":528.0836448669434,"y":1773.4048128128052,"z":"5699c5cb.963a7c","wires":[["da6bc1e.6da914"]]},{"id":"da6bc1e.6da914","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":680.0201263427734,"y":1772.1271743774414,"z":"5699c5cb.963a7c","wires":[["e6178867.650b28","f5a220bc.5210c","96ff74dd.aeb058"]]},{"id":"e049d83c.4571c8","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":525.0835494995117,"y":1730.3447523117065,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"f5a220bc.5210c","type":"set","name":"set v6FQPN-output","xml":"<set>\n\t<parameter name=\"v6FQPN-output.\" value=\"generate-FQPN-output.\"/>\n","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":890.3771286010742,"y":1798.5714092254639,"z":"5699c5cb.963a7c","wires":[]},{"id":"9dff2817.fe14a8","type":"comment","name":"Check for mask override","info":"Only needed for allocateSubnet","comments":"","x":308.8663635253906,"y":1915.8623867034912,"z":"5699c5cb.963a7c","wires":[]},{"id":"44d80ecf.eafed","type":"for","name":"for pidx..$network-topology-operation-input.network-request-input.network-input-parameters[]","xml":"<for index='pidx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >\n","comments":"","outputs":1,"x":1521.7236022949219,"y":1981.4338660240173,"z":"5699c5cb.963a7c","wires":[["bcee52bc.a960d"]]},{"id":"72c6fa14.eb5414","type":"switchNode","name":"network-topology-operation-input.network-request-input.network-input-parameters.param_length","xml":"<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`\">","comments":"","outputs":1,"x":534.5806274414062,"y":1948.719524383545,"z":"5699c5cb.963a7c","wires":[["9b1de44.065e618","bb217635.69a128"]]},{"id":"9b1de44.065e618","type":"outcome","name":"outcome null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":966.0090999603271,"y":1949.1481075286865,"z":"5699c5cb.963a7c","wires":[["dd0b8cb9.090d4"]]},{"id":"dd0b8cb9.090d4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1131.4377310616628,"y":1949.2909652165004,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"bb217635.69a128","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":950.2947731018066,"y":1981.576675415039,"z":"5699c5cb.963a7c","wires":[["1532ecad.3b8f83"]]},{"id":"1532ecad.3b8f83","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1122.2948837280273,"y":1981.5766677856445,"z":"5699c5cb.963a7c","wires":[["44d80ecf.eafed"]]},{"id":"bcee52bc.a960d","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1956.8660583496094,"y":1981.6719074249268,"z":"5699c5cb.963a7c","wires":[["434f2ab8.2dbe94","b8d20e27.f4ff8"]]},{"id":"434f2ab8.2dbe94","type":"execute","name":"SliStringUtils - check v4 override","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].name`\" />\n    <parameter name=\"target\" value=\"network_assignments_ipv4_subnet_default_assignment_cidr_mask\"/>\n  \n","comments":"","outputs":1,"x":2221.1993865966797,"y":1981.3385486602783,"z":"5699c5cb.963a7c","wires":[["40772195.8256f"]]},{"id":"40772195.8256f","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2448.5329551696777,"y":1981.3385925292969,"z":"5699c5cb.963a7c","wires":[["ed6c781b.a3ac38"]]},{"id":"ed6c781b.a3ac38","type":"set","name":"set subnet override for v4","xml":"<set>\n<parameter name='eipam-ip-block.subnet-size-override-v4' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].value`' />\n\n","comments":"","x":2654.8663024902344,"y":1981.3385334014893,"z":"5699c5cb.963a7c","wires":[]},{"id":"b8d20e27.f4ff8","type":"execute","name":"SliStringUtils - check v6 override","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].name`\" />\n    <parameter name=\"target\" value=\"network_assignments_ipv6_subnet_default_assignment_cidr_mask\"/>\n  \n","comments":"","outputs":1,"x":2219.4496002197266,"y":2024.5052280426025,"z":"5699c5cb.963a7c","wires":[["71f73fc7.4a33a"]]},{"id":"71f73fc7.4a33a","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2448.7831687927246,"y":2025.505271911621,"z":"5699c5cb.963a7c","wires":[["eda6c591.c61198"]]},{"id":"eda6c591.c61198","type":"set","name":"set subnet override for v6","xml":"<set>\n<parameter name='eipam-ip-block.subnet-size-override-v6' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].value`' />\n\n","comments":"","x":2654.6163940429688,"y":2025.5052347183228,"z":"5699c5cb.963a7c","wires":[]},{"id":"801abe02.e2e1b","type":"set","name":"set subnet override if not set","xml":"<set>\n\t<parameter name=\"eipam-ip-block.subnet-size-override-v4\" value=\"`$network-model.ipv4-cidr-mask`\" />\n\t<parameter name=\"eipam-ip-block.subnet-size-override-v6\" value=\"`$network-model.ipv6-cidr-mask`\" />","comments":"subnet and subnet_keys are deleted in the EIPAMPlugin","x":315.8661880493164,"y":1891.3385677337646,"z":"5699c5cb.963a7c","wires":[]},{"id":"b00c44bd.c95888","type":"set","name":"set: data initialization","xml":"<set>\n<parameter name=\"generate-FQPN-input.zone\" value=\"`$aai.cloud-region.cloud-zone`\" />\n","comments":"","x":963.7500152587891,"y":427.5000057220459,"z":"5699c5cb.963a7c","wires":[]},{"id":"2c36f082.69714","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":771.2500114440918,"y":427.5000057220459,"z":"5699c5cb.963a7c","wires":[["b00c44bd.c95888"]]},{"id":"9b3275bb.0d36d8","type":"switchNode","name":"switch: tmp.service-type","xml":"<switch test='`$tmp.service-type`'>\n","comments":"","outputs":1,"x":384.04766845703125,"y":256.1905059814453,"z":"5699c5cb.963a7c","wires":[["956294d5.bcf718"]]},{"id":"956294d5.bcf718","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":594.1071624755859,"y":254.73813247680664,"z":"5699c5cb.963a7c","wires":[["25f5220c.ae8cde"]]},{"id":"b4de5ae6.712548","type":"set","name":"set: data initialization","xml":"<set>\n<parameter name=\"tmp.service-type\" value=\"`$service-data.service-information.subscription-service-type`\" />","comments":"","x":984.0476474761963,"y":253.69050407409668,"z":"5699c5cb.963a7c","wires":[]},{"id":"25f5220c.ae8cde","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":753.21435546875,"y":253.6905059814453,"z":"5699c5cb.963a7c","wires":[["b4de5ae6.712548"]]},{"id":"b17da27b.64d35","type":"switchNode","name":"switch: generate-FQPN-input.network-collection","xml":"<switch test='`$generate-FQPN-input.network-collection`'>\n","comments":"","outputs":1,"x":438.57142639160156,"y":498.5714416503906,"z":"5699c5cb.963a7c","wires":[["b8f3f8e4.6c2538"]]},{"id":"b8f3f8e4.6c2538","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":671.2500534057617,"y":496.6428699493408,"z":"5699c5cb.963a7c","wires":[["f3de6cc4.41db3"]]},{"id":"545e806.2fb928","type":"set","name":"set: aai-network-collection.collection-name","xml":"<set>\n<parameter name=\"generate-FQPN-input.network-collection\" value=\"`$aai-network-collection.collection-name`\" />\n","comments":"","x":1061.4285583496094,"y":496.0714511871338,"z":"5699c5cb.963a7c","wires":[]},{"id":"f3de6cc4.41db3","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":806.0714321136475,"y":496.0714359283447,"z":"5699c5cb.963a7c","wires":[["545e806.2fb928"]]},{"id":"86ca1ebb.981a9","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1165.031940460205,"y":765.4999933242798,"z":"5699c5cb.963a7c","wires":[["9d2d3fba.a2a9d"]]},{"id":"9d2d3fba.a2a9d","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 retrieving cloud region from AAI\" />\n","comments":"","x":1340.0319137573242,"y":765.5000295639038,"z":"5699c5cb.963a7c","wires":[]},{"id":"da212f7d.7dcf1","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1173.960536956787,"y":716.7857265472412,"z":"5699c5cb.963a7c","wires":[["381c75fc.e73bea"]]},{"id":"381c75fc.e73bea","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=\"`'aic-cloud-region, '+ $generate-fqpn-input.aic-cloud-region + ' not found in AAI'`\" />\n","comments":"","x":1340.309814453125,"y":716.0913038253784,"z":"5699c5cb.963a7c","wires":[]},{"id":"ca932ed8.9d846","type":"for","name":"for relationship list","xml":"<for index='ridx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >\n","comments":"","outputs":1,"x":905.7619552612305,"y":956.6062526702881,"z":"5699c5cb.963a7c","wires":[["efe6069a.2b0288"]]},{"id":"9717a9fb.4c8bf8","type":"get-resource","name":"get-resource: AAI cloud region","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"cloud-region\" \n\t\tkey=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND \n\t\t     cloud-region.cloud-region-id = $aai.cloud-region.cloud-region-id AND\n\t\t     depth = '0'\"\n        pfx='aai.cloud-region' >\n\n","comments":"","outputs":1,"x":945.5357322692871,"y":739.5991458892822,"z":"5699c5cb.963a7c","wires":[["da212f7d.7dcf1","86ca1ebb.981a9"]]},{"id":"fb22d8a.f128c28","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2278.230480194092,"y":1152.3372926712036,"z":"5699c5cb.963a7c","wires":[["301f2e89.56c8c2"]]},{"id":"301f2e89.56c8c2","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 retrieving complex from AAI\" />\n","comments":"","x":2444.766124725342,"y":1151.837332725525,"z":"5699c5cb.963a7c","wires":[]},{"id":"1bdd0a0a.ab33f6","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2284.7304763793945,"y":1108.3373537063599,"z":"5699c5cb.963a7c","wires":[["f024720e.f09cf"]]},{"id":"f024720e.f09cf","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=\"Complex not found in AAI\" />\n","comments":"","x":2452.508403778076,"y":1108.6427011489868,"z":"5699c5cb.963a7c","wires":[]},{"id":"28bc7ee.8785882","type":"get-resource","name":"get-resource complex","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"complex\" \n\t\tkey=\"complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value\"\n    pfx='aai.complex' >\n        \n\n\n","comments":"","outputs":1,"x":2076.876953125,"y":1108.2938966751099,"z":"5699c5cb.963a7c","wires":[["1bdd0a0a.ab33f6","fb22d8a.f128c28"]]},{"id":"d739427d.15e62","type":"switchNode","name":"switch: relationship-key","xml":"<switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>\n","comments":"","outputs":1,"x":1355.6786727905273,"y":956.3931171894073,"z":"5699c5cb.963a7c","wires":[["98a7bb6b.95b5d8"]]},{"id":"98a7bb6b.95b5d8","type":"other","name":"complex.physical-location-id","xml":"<outcome value='complex.physical-location-id'>\n","comments":"","outputs":1,"x":1611.6074142456055,"y":956.666912317276,"z":"5699c5cb.963a7c","wires":[["b87b5e4d.10389"]]},{"id":"9475a09a.394d","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":2023.9759368896484,"y":956.3218030929565,"z":"5699c5cb.963a7c","wires":[["8d249718.6ab0b8","9b601edb.f09cc","c9a7d699.c01ec8"]]},{"id":"8d249718.6ab0b8","type":"set","name":"set tmp.aic-clli","xml":"<set>\n<parameter name='tmp.aic-clli' value='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`' />\n\n","comments":"","x":2228.952850341797,"y":954.6828660964966,"z":"5699c5cb.963a7c","wires":[]},{"id":"fbc819eb.798958","type":"switchNode","name":"switch cloud-region.relationship_length","xml":"<switch test='`$aai.cloud-region.relationship-list.relationship_length`'>\n","comments":"","outputs":1,"x":970.3690147399902,"y":843.0991458892822,"z":"5699c5cb.963a7c","wires":[["ab469986.4e2c88","da9bb44.0e72648"]]},{"id":"ab469986.4e2c88","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1220.6190867953828,"y":819.5992327796089,"z":"5699c5cb.963a7c","wires":[["7374cc22.079c84"]]},{"id":"da9bb44.0e72648","type":"other","name":"null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1223.869083404541,"y":868.5992679595947,"z":"5699c5cb.963a7c","wires":[["7374cc22.079c84"]]},{"id":"7374cc22.079c84","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=\"cloud-region missing relationships in AAI\" />\n","comments":"","x":1395.3690910339355,"y":839.5992670059204,"z":"5699c5cb.963a7c","wires":[]},{"id":"efe6069a.2b0288","type":"for","name":"for relationship data","xml":"<for silentFailure='false' index='rdidx' start='0' end=\"`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`\" >\n","comments":"","outputs":1,"x":1130.583351135254,"y":956.5158245563507,"z":"5699c5cb.963a7c","wires":[["d739427d.15e62"]]},{"id":"1803ac81.8f2153","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":669.5,"y":740.0991821289062,"z":"5699c5cb.963a7c","wires":[["9717a9fb.4c8bf8","fbc819eb.798958","ca932ed8.9d846","4aa2f647.930768","e039c810.d4c378"]]},{"id":"9b601edb.f09cc","type":"execute","name":"substring aic-clli to 8 chars","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>\n   <parameter name='result' value='tmp.truncated.clli8' />\n   <parameter name='string' value='`$tmp.aic-clli`' />\n   <parameter name='begin-index' value='0' />\n   <parameter name='end-index' value='8' />\n","comments":"","outputs":1,"x":2269.4998092651367,"y":1002.833295583725,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"c9a7d699.c01ec8","type":"set","name":"set generate-FQPN-input.location-clli8","xml":"<set>\n<parameter name='generate-FQPN-input.location-clli8' value='`$tmp.truncated.clli8`' />\n","comments":"","x":2306.888832092285,"y":1050.1664941310883,"z":"5699c5cb.963a7c","wires":[]},{"id":"98340d5a.0362c","type":"set","name":"set generate-FQPN-input.complex-region","xml":"<set>\n<parameter name='generate-FQPN-input.complex-region' value='`$aai.complex.region`' />\n","comments":"","x":2136.8333740234375,"y":1201.8332271575928,"z":"5699c5cb.963a7c","wires":[]},{"id":"b87b5e4d.10389","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1844.4999046325684,"y":956.4999418258667,"z":"5699c5cb.963a7c","wires":[["9475a09a.394d","28bc7ee.8785882","98340d5a.0362c"]]},{"id":"4aa2f647.930768","type":"set","name":"set generate-FQPN-input.aic-cloud-region","xml":"<set>\n<parameter name='generate-FQPN-input.aic-cloud-region' \n\tvalue='`$aai.cloud-region.cloud-region-id`' />\n","comments":"","x":972.3094863891602,"y":1029.4998931884766,"z":"5699c5cb.963a7c","wires":[]},{"id":"7db1b35.ac8294c","type":"comment","name":"generate-FQPN-input","info":"","comments":"","x":382.07144927978516,"y":720.9285545349121,"z":"5699c5cb.963a7c","wires":[]},{"id":"ed117b9f.a2e7e8","type":"comment","name":"generate-FQPN-input","info":"","comments":"","x":2539.214080810547,"y":1024.0237035751343,"z":"5699c5cb.963a7c","wires":[]},{"id":"96f4e3b.c6c072","type":"comment","name":"generate-FQPN-input","info":"","comments":"","x":2236.8331985473633,"y":1226.166579246521,"z":"5699c5cb.963a7c","wires":[]},{"id":"491cd8eb.eb1878","type":"comment","name":"generate-FQPN calls getPlanTopology","info":"also sets all the key_values for the FQPN in \ncontext memory, generate-FQPN-output.","comments":"","x":962.5,"y":1490,"z":"5699c5cb.963a7c","wires":[]},{"id":"1822dfed.b1cc9","type":"comment","name":"generate-FQPN calls getPlanTopology","info":"also sets all the key_values for the FQPN in \ncontext memory, generate-FQPN-output.","comments":"","x":995,"y":1766.25,"z":"5699c5cb.963a7c","wires":[]},{"id":"b8e79a11.50fec8","type":"switchNode","name":"switch: generate-FQPN-input.aic-cloud-region","xml":"<switch test='`$generate-FQPN-input.aic-cloud-region`'>\n","comments":"","outputs":1,"x":434,"y":556,"z":"5699c5cb.963a7c","wires":[["59f6597b.6ffc58"]]},{"id":"59f6597b.6ffc58","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":666.6786270141602,"y":554.0714282989502,"z":"5699c5cb.963a7c","wires":[["1803ac81.8f2153"]]},{"id":"adf823e9.02928","type":"switchNode","name":"switch: generate-FQPN-input.location-clli8","xml":"<switch test='`$generate-FQPN-input.location-clli8`'>\n","comments":"","outputs":1,"x":436,"y":608,"z":"5699c5cb.963a7c","wires":[["67c0821f.539b8c"]]},{"id":"67c0821f.539b8c","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":668.6786270141602,"y":606.0714282989502,"z":"5699c5cb.963a7c","wires":[["1803ac81.8f2153"]]},{"id":"98682fc4.05c22","type":"switchNode","name":"switch: generate-FQPN-input.complex-region","xml":"<switch test='`$generate-FQPN-input.complex-region`'>\n","comments":"","outputs":1,"x":450,"y":654,"z":"5699c5cb.963a7c","wires":[["82e9c9a2.d20dc8"]]},{"id":"82e9c9a2.d20dc8","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":682.6786270141602,"y":652.0714282989502,"z":"5699c5cb.963a7c","wires":[["1803ac81.8f2153"]]},{"id":"a551348.af4dac8","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />\n","comments":"","x":263.0357360839844,"y":3660.2740812301636,"z":"5699c5cb.963a7c","wires":[]},{"id":"d1765fc3.935b1","type":"call","name":"call eipam-allocate-generic-subnet for pool","xml":"<call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-generic-subnet' mode='sync' >\n","comments":"","outputs":1,"x":2356.666793823242,"y":3254.841824531555,"z":"5699c5cb.963a7c","wires":[["3b3626f5.f162fa","42cbb94.17a6648"]]},{"id":"3b3626f5.f162fa","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2663.8931198120117,"y":3306.598602771759,"z":"5699c5cb.963a7c","wires":[["2310bb6.a2a2d44"]]},{"id":"2310bb6.a2a2d44","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2853.636161804199,"y":3304.7354435920715,"z":"5699c5cb.963a7c","wires":[["e18dd490.2c0658"]]},{"id":"42cbb94.17a6648","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2674.656089782715,"y":3240.1005959510803,"z":"5699c5cb.963a7c","wires":[["35f38429.2717ec"]]},{"id":"5057c561.1fec3c","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"eipam-ip-block.ip-prefix\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.ip-prefix`\"/>\n<parameter name=\"field6\" value=\"eipam-ip-block.mask\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.v6.allocateSubnetResponse.Mask`\"/>\n<parameter name=\"field8\" value=\"ipv6\"/>\n<parameter name=\"field9\" value=\"`$l-idx`\" />\n\n","comments":"","outputs":1,"x":3000.346607208252,"y":3244.6600856781006,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"aaa362d4.f1a14","type":"set","name":"set values needed for eipam","xml":"<set>\n<parameter name='eipam-ip-block.entity-id' value='' />\n<parameter name='eipam-ip-block.ip-prefix' value='' />\n<parameter name='eipam-ip-block.mask' value='' />\n<parameter name=\"eipam-ip-block.allocate-version\" value='ipv6' />\n<parameter name='eipam-ip-block.plans_length' value='0' />\n\n","comments":"","x":2320.9418411254883,"y":3214.5453169345856,"z":"5699c5cb.963a7c","wires":[]},{"id":"d64954e8.a03148","type":"set","name":"set l3-network","xml":"<set>\n<parameter name='tmp.l3-network.level1.v6.subnet.pre-existing' value='' />\n<parameter name='tmp.l3-network.level1.v6.entity-id' value='`$eipam-ip-block.entity-id`' />\n<parameter name='tmp.l3-network.level1.v6.ip-prefix' value='`$eipam-ip-block.ip-prefix`' />\n<parameter name='tmp.l3-network.level1.v6.mask' value='`$eipam-ip-block.mask`' />\n","comments":"","x":3210.2033157348633,"y":3119.461950302124,"z":"5699c5cb.963a7c","wires":[]},{"id":"35f38429.2717ec","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2839.6822662353516,"y":3238.6985173225403,"z":"5699c5cb.963a7c","wires":[["5057c561.1fec3c","2d3968a5.a9c078"]]},{"id":"650f65f9.50eb5c","type":"get-resource","name":"get-resource V6 - validate if subnet does not exists","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v6-address-plan and s.entity_id = k.entity_id and k.level = $l-idx and k.key_value = $key-value ; \"\n        pfx='tmp.eipam-subnet-row'>\n\n","comments":"","outputs":1,"x":1680.0796661376953,"y":3170.920791864395,"z":"5699c5cb.963a7c","wires":[["8f2a02b7.9ab9","386387b5.398a38"]]},{"id":"8f2a02b7.9ab9","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1935.6986198425293,"y":3161.3971016407013,"z":"5699c5cb.963a7c","wires":[["605fd1e9.217db"]]},{"id":"386387b5.398a38","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1944.560749053955,"y":3207.397132396698,"z":"5699c5cb.963a7c","wires":[["1d82ae2a.4003d2"]]},{"id":"1d82ae2a.4003d2","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2094.7769203186035,"y":3205.3610911369324,"z":"5699c5cb.963a7c","wires":[["aaa362d4.f1a14","d1765fc3.935b1"]]},{"id":"86a8580d.287a38","type":"comment","name":"Check if ipv6 subnet exists","info":"","comments":"","x":1595.4447479248047,"y":3139.254208803177,"z":"5699c5cb.963a7c","wires":[]},{"id":"605fd1e9.217db","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2118.9207878112793,"y":3161.3971016407013,"z":"5699c5cb.963a7c","wires":[["c57058d3.2193a8","5a07c5f5.d6169c"]]},{"id":"c57058d3.2193a8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Existing eipam-ip-block.ip-prefix for level:\" />\n<parameter name=\"field5\" value=\"`$l-idx`\" />\n<parameter name=\"field6\" value=\"Existing eipam-ip-block.mask for level:\" />\n<parameter name=\"field7\" value=\"`$tmp.eipam-subnet-row.prefix-length`\"/>\n<parameter name=\"field8\" value=\"ipv6\"/>\n<parameter name=\"field9\" value=\"`$tmp.eipam-subnet-row.ip-address`\"/>\n","comments":"","outputs":1,"x":2265.492088317871,"y":3135.1115028858185,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"5a07c5f5.d6169c","type":"set","name":"set pre-existing for l3subnet for level1","xml":"<set>\n<parameter name='tmp.l3-network.level1.v6.subnet.pre-existing' value='true' />\n<parameter name='tmp.l3-network.level1.v6.entity-id' value='`$tmp.eipam-row.entity-id`' />\n<parameter name='tmp.l3-network.level1.v6.ip-prefix' value='`$tmp.eipam-row.ip-address`' />\n<parameter name='tmp.l3-network.level1.v6.mask' value='`$tmp.eipam-row.prefix-length`' />\n\n","comments":"","x":2341.4918212890625,"y":3175.841957092285,"z":"5699c5cb.963a7c","wires":[]},{"id":"e18dd490.2c0658","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Failed to allocate ipv6 subnet - failure from eipam-allocate-network-role-subnet\"/>\n<parameter name=\"field9\" value=\"`$l-idx`\" />\n\n\n","comments":"","outputs":1,"x":3024.8099517822266,"y":3304.5238814353943,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"a5b75182.1e4e","type":"switchNode","name":"switch: tmp.allocate-subnet-flag","xml":"<switch test=\"`$tmp.allocate-subnet-flag`\">","comments":"","outputs":1,"x":886.6665802001953,"y":2265.3331823349,"z":"5699c5cb.963a7c","wires":[["3e556ee3.331412","d2460beb.20a458","ca0d59da.ac99f8"]]},{"id":"d2460beb.20a458","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":1091.6667938232422,"y":2260.8889875411987,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"ca0d59da.ac99f8","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1037.0953903198242,"y":3348.853012084961,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"8239630d.c2116","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1122.425054550171,"y":2319.7187461853027,"z":"5699c5cb.963a7c","wires":[["6b70862c.498308","4a1da2fb.b241dc"]]},{"id":"3e556ee3.331412","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":973.6192321777344,"y":2319.6030082702637,"z":"5699c5cb.963a7c","wires":[["8239630d.c2116"]]},{"id":"3f20acf7.1dafa4","type":"comment","name":"Check if need to allocateSubnet","info":" tmp.allocate-subnet-flag = 'Y', \n \tif EIPAM should create subnet\n \n tmp.allocate-subnet-flag = 'N', \n \twe need to explicitly call allocateSubnet","comments":"","x":902.8412017822266,"y":2358.984079360962,"z":"5699c5cb.963a7c","wires":[]},{"id":"3ff3fe7e.90a822","type":"call","name":"call eipam-allocate-generic-subnet for pool","xml":"<call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-generic-subnet' mode='sync' >\n","comments":"","outputs":1,"x":2354.5716094970703,"y":2513.5078859329224,"z":"5699c5cb.963a7c","wires":[["e1bdb83c.a688b8","f3e9c5a5.d9a7a8"]]},{"id":"e1bdb83c.a688b8","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2597.559352874756,"y":2563.2649002075195,"z":"5699c5cb.963a7c","wires":[["3c8c2b49.ef4c44"]]},{"id":"3c8c2b49.ef4c44","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2751.0524711608887,"y":2563.901786804199,"z":"5699c5cb.963a7c","wires":[["1f76867c.edc97a"]]},{"id":"f3e9c5a5.d9a7a8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2592.9889640808105,"y":2479.433473587036,"z":"5699c5cb.963a7c","wires":[["29886065.7b87a"]]},{"id":"6b7a605a.82a84","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"eipam-ip-block.ip-prefix\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.ip-prefix`\"/>\n<parameter name=\"field6\" value=\"eipam-ip-block.mask\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.v4.allocateSubnetResponse.Mask`\"/>\n<parameter name=\"field8\" value=\"ipv4\"/>\n<parameter name=\"field9\" value=\"`$l-idx`\" />\n\n","comments":"","outputs":1,"x":2921.179618835449,"y":2484.826536178589,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"1d0d24bf.20366b","type":"set","name":"set values needed for eipam","xml":"<set>\n<parameter name='eipam-ip-block.entity-id' value='' />\n<parameter name='eipam-ip-block.ip-prefix' value='' />\n<parameter name='eipam-ip-block.mask' value='' />\n<parameter name=\"eipam-ip-block.allocate-version\" value='ipv4' />\n<parameter name='eipam-ip-block.plans_length' value='0' />\n\n","comments":"","x":2324.8463745117188,"y":2470.6400938034058,"z":"5699c5cb.963a7c","wires":[]},{"id":"8a808da6.c949c","type":"set","name":"set allocateSubnetResponse","xml":"<set>\n<parameter name='eipam-ip-block.v4.allocateSubnetResponse.' value='eipam-ip-block.allocateSubnetResponse.' />\n","comments":"","x":2983.179039001465,"y":2445.735324859619,"z":"5699c5cb.963a7c","wires":[]},{"id":"29886065.7b87a","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2758.0151405334473,"y":2478.031394958496,"z":"5699c5cb.963a7c","wires":[["6b7a605a.82a84","8a808da6.c949c"]]},{"id":"54544b58.e03b54","type":"get-resource","name":"get-resource V4 - validate if subnet does not exists","xml":"<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v4-address-plan and s.entity_id = k.entity_id and k.level = $l-idx and k.key_value = $key-value ; \"\n        pfx='tmp.eipam-subnet-row'>\n\n","comments":"","outputs":1,"x":1626.4810829162598,"y":2451.1004180908203,"z":"5699c5cb.963a7c","wires":[["8187134c.209d9","647284d.c22dc7c"]]},{"id":"8187134c.209d9","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1891.6240577697754,"y":2442.945469856262,"z":"5699c5cb.963a7c","wires":[["36963d61.1dcad2"]]},{"id":"647284d.c22dc7c","type":"not-found","name":"not-found","xml":"<outcome value=\"not-found\">","comments":"","outputs":1,"x":1891.7361183166504,"y":2472.6955013275146,"z":"5699c5cb.963a7c","wires":[["8f13420f.962d7"]]},{"id":"8f13420f.962d7","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2048.202308654785,"y":2469.4094285964966,"z":"5699c5cb.963a7c","wires":[["1d0d24bf.20366b","3ff3fe7e.90a822"]]},{"id":"36963d61.1dcad2","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":2045.7393035888672,"y":2433.4455308914185,"z":"5699c5cb.963a7c","wires":[["314e158d.d4258a","1284868e.f212b9"]]},{"id":"314e158d.d4258a","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Existing eipam-ip-block.ip-prefix for level:\" />\n<parameter name=\"field5\" value=\"`$l-idx`\" />\n<parameter name=\"field6\" value=\"Existing eipam-ip-block.mask for level:\" />\n<parameter name=\"field7\" value=\"`$tmp.eipam-subnet-row.prefix-length`\"/>\n<parameter name=\"field8\" value=\"ipv4\"/>\n<parameter name=\"field9\" value=\"`$tmp.eipam-subnet-row.ip-address`\"/>\n\n","comments":"","outputs":1,"x":2245.2626991271973,"y":2396.6121950149536,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"1284868e.f212b9","type":"set","name":"set pre-existing for l3subnet for level","xml":"<set>\n<parameter name='tmp.l3-network.level1.v4.subnet.pre-existing' value='true' />\n<parameter name='tmp.l3-network.level1.v4.entity-id' value='`$tmp.eipam-row.entity-id`' />\n<parameter name='tmp.l3-network.level1.v4.ip-prefix' value='`$tmp.eipam-row.ip-address`' />\n<parameter name='tmp.l3-network.level1.v4.mask' value='`$tmp.eipam-row.prefix-length`' />\n\n\n","comments":"","x":2337.0009002685547,"y":2439.2357625961304,"z":"5699c5cb.963a7c","wires":[]},{"id":"1f76867c.edc97a","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.process-eipam-pools:REQID\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Failed to allocate ipv4 subnet - failure from eipam-allocate-network-role-subnet\"/>\n<parameter name=\"field5\" value=\"`$l-idx`\" />\n\n\n","comments":"","outputs":1,"x":2900.905590057373,"y":2564.1433877944946,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"7da7a71d.1d7828","type":"comment","name":"Check if ipv4 subnet exists","info":"","comments":"","x":1723.9205627441406,"y":2411.444664955139,"z":"5699c5cb.963a7c","wires":[]},{"id":"6b70862c.498308","type":"switchNode","name":"switch: network-model.use-ipv4","xml":"<switch test=\"`$network-model.use-ipv4`\">","comments":"","outputs":1,"x":1340.0001068115234,"y":2321.7145385742188,"z":"5699c5cb.963a7c","wires":[["c212db95.eddde8","53f30b08.a1b714","2727e599.65d53a"]]},{"id":"53f30b08.a1b714","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":1558.0716514587402,"y":2360.4288005828857,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"c212db95.eddde8","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1557.0719757080078,"y":2319.8218784332275,"z":"5699c5cb.963a7c","wires":[["eebf3959.20d158"]]},{"id":"2727e599.65d53a","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":1555.5000534057617,"y":2276.7615671157837,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"eebf3959.20d158","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1350.0000457763672,"y":2451.2383489608765,"z":"5699c5cb.963a7c","wires":[["54544b58.e03b54"]]},{"id":"4a1da2fb.b241dc","type":"switchNode","name":"switch: network-model.use-ipv6","xml":"<switch test=\"`$network-model.use-ipv6`\">","comments":"","outputs":1,"x":1259.523796081543,"y":3030.7622203826904,"z":"5699c5cb.963a7c","wires":[["f2572e73.48074","867a323f.a6147","127b2530.ff579b"]]},{"id":"867a323f.a6147","type":"other","name":"NULL","xml":"<outcome value=\"\">","comments":"","outputs":1,"x":1469.0238876342773,"y":3083.7622632980347,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"f2572e73.48074","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":1465.1668853759766,"y":3038.8696851730347,"z":"5699c5cb.963a7c","wires":[["8ddbfb35.fa6be8"]]},{"id":"127b2530.ff579b","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":1465.0238494873047,"y":2992.9521493911743,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"8ddbfb35.fa6be8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1398.5715637207031,"y":3170.7620363235474,"z":"5699c5cb.963a7c","wires":[["650f65f9.50eb5c"]]},{"id":"e85e7565.d76da8","type":"switchNode","name":"switch: generate-FQPN-input.network-name","xml":"<switch test='`$generate-FQPN-input.network-name`'>\n","comments":"","outputs":1,"x":428.33331298828125,"y":368.33331298828125,"z":"5699c5cb.963a7c","wires":[["579a6475.72ab8c"]]},{"id":"579a6475.72ab8c","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":656.7261581420898,"y":363.5476026535034,"z":"5699c5cb.963a7c","wires":[["196e4862.4a59a8"]]},{"id":"377485c2.ec409a","type":"set","name":"set: data initialization","xml":"<set>\n<parameter name=\"generate-FQPN-input.network-name\" value=\"`$network-topology-identifier-structure.network-name`\" />\n","comments":"","x":988.3333225250244,"y":365.83330726623535,"z":"5699c5cb.963a7c","wires":[]},{"id":"196e4862.4a59a8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":795.8333187103271,"y":365.83330726623535,"z":"5699c5cb.963a7c","wires":[["377485c2.ec409a"]]},{"id":"5e9374f6.85274c","type":"switchNode","name":"switch: tmp.network-instance-group-id","xml":"<switch test='`$tmp.network-instance-group-id`'>\n","comments":"","outputs":1,"x":383.33331298828125,"y":298.33331298828125,"z":"5699c5cb.963a7c","wires":[["7636bd97.fe7f74"]]},{"id":"7636bd97.fe7f74","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":593.3928070068359,"y":296.8809394836426,"z":"5699c5cb.963a7c","wires":[["3812c68b.d31d3a"]]},{"id":"6cc90794.819c48","type":"set","name":"set: data initialization","xml":"<set>\n<parameter name=\"tmp.network-instance-group-id\" value=\"`$network-topology-operation-input.network-request-input.network-instance-group-id`\" />","comments":"","x":983.3332920074463,"y":295.8333110809326,"z":"5699c5cb.963a7c","wires":[]},{"id":"3812c68b.d31d3a","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":752.5,"y":295.83331298828125,"z":"5699c5cb.963a7c","wires":[["6cc90794.819c48"]]},{"id":"e039c810.d4c378","type":"execute","name":"get prop","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' />","comments":"","outputs":1,"x":878.9027913411458,"y":668.9236195882162,"z":"5699c5cb.963a7c","wires":[[]]},{"id":"91fc65fd.117318","type":"set","name":"set l3-network","xml":"<set>\n<parameter name='tmp.l3-network.level1.v4.subnet.pre-existing' value='' />\n<parameter name='tmp.l3-network.level1.v4.entity-id' value='`$eipam-ip-block.entity-id`' />\n<parameter name='tmp.l3-network.level1.v4.ip-prefix' value='`$eipam-ip-block.ip-prefix`' />\n<parameter name='tmp.l3-network.level1.v4.mask' value='`$eipam-ip-block.mask`' />\n","comments":"","x":3064.265625,"y":2372.5390625,"z":"5699c5cb.963a7c","wires":[]},{"id":"2d3968a5.a9c078","type":"set","name":"set allocateSubnetResponse","xml":"<set>\n<parameter name='eipam-ip-block.v6.allocateSubnetResponse.' value='eipam-ip-block.allocateSubnetResponse.' />\n","comments":"","x":3062.5157508850098,"y":3202.538601875305,"z":"5699c5cb.963a7c","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_query-aai-l3-network-by-network-role.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_query-aai-l3-network-by-network-role.json
new file mode 100644
index 0000000..ea2fc9a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_query-aai-l3-network-by-network-role.json
@@ -0,0 +1 @@
+[{"id":"bf3334ad.aa95c8","type":"for","name":"for each l3-network","xml":"<for index='network-index' start='0' end='`$tmp.aai.l3-networks.l3-network_length`' >\n","comments":"","outputs":1,"x":954,"y":926.4010419845581,"z":"feb1c694.520168","wires":[["4424c7b4.c59f48"]]},{"id":"119ee255.4a85ae","type":"switchNode","name":"switch : aic-cloud-region - relationship-value == input","xml":"<switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value == $query-aai-l3-network-by-network-role-input.aic-cloud-region`'>\n","comments":"","outputs":1,"x":2333.6945724487305,"y":1135.9482860565186,"z":"feb1c694.520168","wires":[["91405384.4ade9"]]},{"id":"91405384.4ade9","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2614.6946029663086,"y":1136.0912313461304,"z":"feb1c694.520168","wires":[["e38015d.73828e8"]]},{"id":"e38015d.73828e8","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":2748.5275802612305,"y":1135.5673398971558,"z":"feb1c694.520168","wires":[["95b3e438.5935d8","1ef86d14.11e0f3"]]},{"id":"95b3e438.5935d8","type":"set","name":"set cloud.matched.l3-networks[]","xml":"<set>\n<parameter name='cloud.matched.l3-networks[$cloud.matched.l3-networks_length].' \n\tvalue='$tmp.aai.l3-networks.l3-network[$network-index].' />","comments":"","x":2974.416374206543,"y":1135.5672016143799,"z":"feb1c694.520168","wires":[]},{"id":"c177097b.58dea8","type":"dgstart","name":"DGSTART","outputs":1,"x":100.61910247802734,"y":47.99999713897705,"z":"feb1c694.520168","wires":[["608f149b.34f30c"]]},{"id":"608f149b.34f30c","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":362.90482330322266,"y":48.17857074737549,"z":"feb1c694.520168","wires":[["e9648dda.ccd68"]]},{"id":"e9648dda.ccd68","type":"method","name":"method: query-aai-l3-network-by-network-role","xml":"<method rpc='query-aai-l3-network-by-network-role' mode='sync'>\n","comments":"","outputs":1,"x":225.94051361083984,"y":110.37698078155518,"z":"feb1c694.520168","wires":[["2ee88c19.4df2e4"]]},{"id":"12517b26.0dc7b5","type":"comment","name":"Required INPUTS","info":"query-aai-l3-network-by-network-role-input.filter\n - Either filter=[aic-cloud-region|service-instance-id|Other]\n   - Other: match on aic-cloud-region first; if more than 1 match, \n     then match against service-instance-id\n   - aic-cloud-region: match on 1st occurance of cloud region id\n   - service-instance-id: match on 1st occurance of service-instance-id\n\nquery-aai-l3-network-by-network-role-input.aic-cloud-region\n - filter multiple l3-networks with same network-role\n\nquery-aai-l3-network-by-network-role-input.service-instance-id\n - filter multiple l3-networks with same network-role and\n   aic-cloud-region, \n   \nquery-aai-l3-network-by-network-role-input.network-role\n - key for l3-network from AAI query\n ","comments":"","x":742.4405517578125,"y":47,"z":"feb1c694.520168","wires":[]},{"id":"93c2ab0e.7958f8","type":"get-resource","name":"get-resource l3-networks by network-role","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-networks\" \n\t\tkey=\"l3-network.network-role = $query-aai-l3-network-by-network-role-input.network-role\" \n\tpfx='tmp.aai.l3-networks' >","comments":"","outputs":1,"x":503.6429138183594,"y":463.210355758667,"z":"feb1c694.520168","wires":[["5cbbeab8.150404","52bcd52.4d21e2c"]]},{"id":"52bcd52.4d21e2c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":755.6906280517578,"y":485.3531951904297,"z":"feb1c694.520168","wires":[["3d7eccad.709ca4"]]},{"id":"3d7eccad.709ca4","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 retrieving l3-network from AAI with network-role = ' + $query-aai-l3-network-by-network-role-input.network-role`\" />\n","comments":"","x":930.690601348877,"y":485.3532314300537,"z":"feb1c694.520168","wires":[]},{"id":"5cbbeab8.150404","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":764.6192245483398,"y":443.6389284133911,"z":"feb1c694.520168","wires":[["251e6c77.f17114"]]},{"id":"251e6c77.f17114","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=\"`'No active l3-network found in AAI with cloud_region_id '\n          + $vnf-topology-operation-input.vnf-request-information.aic-cloud-region + ' and network_role '\n          + $query-aai-l3-network-by-network-role-input.network-role`\" />\n","comments":"","x":930.9685020446777,"y":442.9445056915283,"z":"feb1c694.520168","wires":[]},{"id":"2a1dd340.f0380c","type":"comment","name":"Returns tmp.aai.l3-networks[]","info":"","comments":"","x":1128.0079862806533,"y":458.06749153137207,"z":"feb1c694.520168","wires":[]},{"id":"48a24709.984178","type":"switchNode","name":"switch: input.aic-cloud-region","xml":"<switch test='`$query-aai-l3-network-by-network-role-input.aic-cloud-region`'>\n","comments":"","outputs":1,"x":468.5476837158203,"y":182.9285659790039,"z":"feb1c694.520168","wires":[["6a12f78b.c08e18"]]},{"id":"6a12f78b.c08e18","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":694.797664642334,"y":183.1785659790039,"z":"feb1c694.520168","wires":[["4b61b754.ab7388"]]},{"id":"4b61b754.ab7388","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=\"query-aai-l3-network-by-network-role-input.aic-cloud-region is null\" />\n","comments":"","x":856.7143363952637,"y":183.2896647453308,"z":"feb1c694.520168","wires":[]},{"id":"87170b50.c8b308","type":"switchNode","name":"switch: input.service-instance-id","xml":"<switch test='`$query-aai-l3-network-by-network-role-input.service-instance-id`'>\n","comments":"","outputs":1,"x":476.29766845703125,"y":230.9285659790039,"z":"feb1c694.520168","wires":[["f2134453.11a5e8"]]},{"id":"f2134453.11a5e8","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":709.7976760864258,"y":230.4285659790039,"z":"feb1c694.520168","wires":[["32323a30.adcc96"]]},{"id":"32323a30.adcc96","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=\"query-aai-l3-network-by-network-role-input.service-instance-id is null\" />\n","comments":"","x":871.7143478393555,"y":230.5396647453308,"z":"feb1c694.520168","wires":[]},{"id":"e6e4ed73.68284","type":"switchNode","name":"switch: input.network-role","xml":"<switch test='`$query-aai-l3-network-by-network-role-input.network-role`'>\n","comments":"","outputs":1,"x":457.04766845703125,"y":279.6785697937012,"z":"feb1c694.520168","wires":[["39cb02ff.11c3de"]]},{"id":"39cb02ff.11c3de","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":663.5476760864258,"y":279.1785697937012,"z":"feb1c694.520168","wires":[["6eccddc7.ef39a4"]]},{"id":"6eccddc7.ef39a4","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=\"query-aai-l3-network-by-network-role-input.network-role is null\" />\n","comments":"","x":825.4643478393555,"y":279.2896685600281,"z":"feb1c694.520168","wires":[]},{"id":"2ee88c19.4df2e4","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":188.86910247802734,"y":183.24999713897705,"z":"feb1c694.520168","wires":[["48a24709.984178","e6e4ed73.68284","93c2ab0e.7958f8","8c3ad4c3.1173b8","762f5443.53124c","36e9d5a6.c6e93a","87170b50.c8b308"]]},{"id":"d12e8629.e48a78","type":"comment","name":"Change History","info":"9/20/17\n- added otpion to match on aic-cloud-region only, service-instance-id only, or both\n9555\n- added set node to empty query-aai-l3-network-by-network-role-output and tmp.aai.l3-networks.\n9675\n- return error when no l3-network found with the given cloud-region instead of picking the first network found in the list\n- return error when no l3-network found with the given cloud-region and service-instance-id\n- removed filter option to query only by cloud-region or service-instance-id; i.e. query must be by cloud-region and then service-instance-id\n10846\n- node 11, 12 fixed network-role variable in error-message","comments":"","x":114.94052124023438,"y":300.0357093811035,"z":"feb1c694.520168","wires":[]},{"id":"f84da69.6e03a58","type":"for","name":"for relationship list","xml":"<for index='ridx' start='0' end='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length`' >\n","comments":"","outputs":1,"x":1352.0358123779297,"y":987.0596609115601,"z":"feb1c694.520168","wires":[["3dd4f64f.d4b96a"]]},{"id":"41f1c1ff.38c4a","type":"switchNode","name":"switch: relationship-key","xml":"<switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>\n","comments":"","outputs":1,"x":1745.7977600097656,"y":1135.3148355484009,"z":"feb1c694.520168","wires":[["63768c9a.07fbc4"]]},{"id":"63768c9a.07fbc4","type":"other","name":"cloud-region.cloud-region-id","xml":"<outcome value='cloud-region.cloud-region-id'>\n","comments":"","outputs":1,"x":1992.7265014648438,"y":1135.5886306762695,"z":"feb1c694.520168","wires":[["119ee255.4a85ae"]]},{"id":"f7a5b0c6.f93ab","type":"for","name":"for relationship data","xml":"<for silentFailure='false' index='rdidx' start='0' end=\"`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship[$ridx].relationship-data_length`\" >\n","comments":"","outputs":1,"x":1525.2024383544922,"y":1135.4375448226929,"z":"feb1c694.520168","wires":[["41f1c1ff.38c4a"]]},{"id":"1ef86d14.11e0f3","type":"set","name":"set cloud.matched.l3-networks_length++","xml":"<set>\n<parameter name='cloud.matched.l3-networks_length' value='`$cloud.matched.l3-networks_length + 1`' />","comments":"","x":3002.797737121582,"y":1182.3612508773804,"z":"feb1c694.520168","wires":[]},{"id":"8c3ad4c3.1173b8","type":"switchNode","name":"switch : $tmp.aai.l3-networks.l3-network_length","xml":"<switch test='`$tmp.aai.l3-networks.l3-network_length`'>\n","comments":"","outputs":1,"x":518.0476760864258,"y":552.8928813934326,"z":"feb1c694.520168","wires":[["7b296b5.86add94","902a8730.77e468"]]},{"id":"7b296b5.86add94","type":"outcomeTrue","name":"1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":788.5476760864258,"y":552.8928813934326,"z":"feb1c694.520168","wires":[["ece02720.817ac8"]]},{"id":"ece02720.817ac8","type":"set","name":"set query-aai-l3-network-by-network-role-output","xml":"<set>\n<parameter name='query-aai-l3-network-by-network-role-output.l3-network.' \n\tvalue='`$tmp.aai.l3-networks.l3-network[0].`' />\n\t\n<!--\n<parameter name='query-aai-l3-network-by-network-role-output.network-id' \n\tvalue='`$tmp.aai.l3-networks.l3-network[0].network-id`' />\n<parameter name='query-aai-l3-network-by-network-role-output.network-name' \n\tvalue='`$tmp.aai.l3-networks.l3-network[0].network-name`' />\n-->","comments":"","x":1054.0476608276367,"y":553.1428718566895,"z":"feb1c694.520168","wires":[]},{"id":"902a8730.77e468","type":"outcomeTrue","name":"Other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":789.4405860900879,"y":604.857141494751,"z":"feb1c694.520168","wires":[["bd59e54d.eed458"]]},{"id":"a4529200.80a9d","type":"for","name":"for each cloud.matched.l3-networks","xml":"<for index='cidx' start='0' end='`$cloud.matched.l3-networks_length`' >\n","comments":"","outputs":1,"x":1687.7738723754883,"y":1583.9166793823242,"z":"feb1c694.520168","wires":[["e8437766.bb91b8"]]},{"id":"4a250290.cbbefc","type":"switchNode","name":"switch : $cloud.matched.l3-networks_length","xml":"<switch test='`$cloud.matched.l3-networks_length`'>\n","comments":"","outputs":1,"x":1014.7501373291016,"y":1319.2738027572632,"z":"feb1c694.520168","wires":[["ff85c7a5.83cff8","20d04cd7.e412a4","1317425a.01096e"]]},{"id":"ff85c7a5.83cff8","type":"outcomeTrue","name":"1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1282.2501373291016,"y":1319.2738027572632,"z":"feb1c694.520168","wires":[["af038e06.b9472"]]},{"id":"af038e06.b9472","type":"set","name":"set query-aai-l3-network-by-network-role-output","xml":"<set>\n<parameter name='query-aai-l3-network-by-network-role-output.l3-network.' \n\tvalue='`$cloud.matched.l3-networks[0].`' />\n\t\t\n<!--\t\t\n\t<parameter name='query-aai-l3-network-by-network-role-output.network-id' \n\t\tvalue='`$cloud.matched.l3-networks[0].network-id`' />\n\t<parameter name='query-aai-l3-network-by-network-role-output.network-name' \n\t\tvalue='`$cloud.matched.l3-networks[0].network-name`' />\n-->","comments":"","x":1552.7501220703125,"y":1319.52379322052,"z":"feb1c694.520168","wires":[]},{"id":"20d04cd7.e412a4","type":"outcomeTrue","name":"Other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1282.4286575317383,"y":1370.809497833252,"z":"feb1c694.520168","wires":[["13260e8c.efd691"]]},{"id":"2a7ed906.631a66","type":"switchNode","name":"switch : service-instance-id - relationship-value == input","xml":"<switch test='`$cloud.matched.l3-networks[$cidx].relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value == $query-aai-l3-network-by-network-role-input.service-instance-id`'>\n","comments":"","outputs":1,"x":2914.254077911377,"y":1886.9523391723633,"z":"feb1c694.520168","wires":[["89c568f6.31c118"]]},{"id":"89c568f6.31c118","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3195.254108428955,"y":1887.095284461975,"z":"feb1c694.520168","wires":[["173f8ae2.0d3ce5"]]},{"id":"99cd11af.d390b","type":"for","name":"for relationship list","xml":"<for index='ridx' start='0' end='`$cloud.matched.l3-networks[$cidx].relationship-list.relationship_length`' >\n","comments":"","outputs":1,"x":1876.750057220459,"y":1725.389310836792,"z":"feb1c694.520168","wires":[["d26b52e6.a3e06"]]},{"id":"ca9edd76.63442","type":"switchNode","name":"switch: relationship-key","xml":"<switch test='`$cloud.matched.l3-networks[$cidx].relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>\n","comments":"","outputs":1,"x":2258.357265472412,"y":1886.3188886642456,"z":"feb1c694.520168","wires":[["574bc8cd.72dad8"]]},{"id":"574bc8cd.72dad8","type":"other","name":"service-instance.service-instance-id","xml":"<outcome value='service-instance.service-instance-id'>\n","comments":"","outputs":1,"x":2544.2860069274902,"y":1886.5926837921143,"z":"feb1c694.520168","wires":[["2a7ed906.631a66"]]},{"id":"8de595fc.242118","type":"for","name":"for relationship data","xml":"<for silentFailure='false' index='rdidx' start='0' end=\"`$cloud.matched.l3-networks[$cidx].relationship-list.relationship[$ridx].relationship-data_length`\" >\n","comments":"","outputs":1,"x":2005.797679901123,"y":1885.8702383041382,"z":"feb1c694.520168","wires":[["ca9edd76.63442"]]},{"id":"3111a04c.69592","type":"set","name":"set query-aai-l3-network-by-network-role-output","xml":"<set>\n<parameter name='query-aai-l3-network-by-network-role-output.l3-network.' \n\tvalue='`$cloud.matched.l3-networks[$cidx].`' />\n\n<!--\n<parameter name='query-aai-l3-network-by-network-role-output.network-id' \n\tvalue='`$cloud.matched.l3-networks[$cidx].network-id`' />\n<parameter name='query-aai-l3-network-by-network-role-output.network-name' \n\tvalue='`$cloud.matched.l3-networks[$cidx].network-name`' />\n-->","comments":"","x":3666.404548100063,"y":1887.5712970324926,"z":"feb1c694.520168","wires":[]},{"id":"953777cf.56def8","type":"set","name":"set input for testing","xml":"<set>\n<parameter name='query-aai-l3-network-by-network-role-input.aic-cloud-region' \n\tvalue='mtn6' />\n<parameter name='query-aai-l3-network-by-network-role-input.service-instance-id' \n\tvalue='bogus' />\n<parameter name='query-aai-l3-network-by-network-role-input.network-role' \n\tvalue='GN_EVPN_direct' />\n<parameter name='query-aai-l3-network-by-network-role-input.filter' \n\tvalue='service-instance-id' />\n<!--\n<parameter name='query-aai-l3-network-by-network-role-input.filter' \n\tvalue='aic-cloud-region' />\n<parameter name='query-aai-l3-network-by-network-role-input.service-instance-id' \n\tvalue='e87fa574-6826-4dba-aad0-bf862a586ad3' />\n<parameter name='query-aai-l3-network-by-network-role-input.filter' \n\tvalue='Other' />\n-->","comments":"","x":875.6548385620117,"y":96.64285850524902,"z":"feb1c694.520168","wires":[]},{"id":"173f8ae2.0d3ce5","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3353.9286308288574,"y":1887.5237760543823,"z":"feb1c694.520168","wires":[["3111a04c.69592","f2203553.f05ce8","b10af6ab.da4238"]]},{"id":"f2203553.f05ce8","type":"returnFailure","name":"BREAK","xml":"<return status='failure'>","comments":"","x":3547.4050369262695,"y":1990.6190071105957,"z":"feb1c694.520168","wires":[]},{"id":"1f5b3666.f39caa","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1439.738037109375,"y":1583.6667308807373,"z":"feb1c694.520168","wires":[["a4529200.80a9d","8869134c.cdc45"]]},{"id":"8869134c.cdc45","type":"returnSuccess","name":"CATCH BREAK","xml":"<return status='success'>\n","comments":"","x":1638.4523620605469,"y":1987.9522705078125,"z":"feb1c694.520168","wires":[]},{"id":"c8096fa6.4cf5","type":"comment","name":"OUTPUT","info":"query-aai-l3-network-by-network-role-output.l3-network.","comments":"","x":676.0477294921875,"y":92.57142639160156,"z":"feb1c694.520168","wires":[]},{"id":"3dd4f64f.d4b96a","type":"switchNode","name":"switch: relationship-list.relationship[].related-to","xml":"<switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship[$ridx].related-to`'>\n","comments":"","outputs":1,"x":1504.2857666015625,"y":1053.5239171981812,"z":"feb1c694.520168","wires":[["828ee5fa.b8d688"]]},{"id":"828ee5fa.b8d688","type":"other","name":"cloud-region","xml":"<outcome value='cloud-region'>\n","comments":"","outputs":1,"x":1791.7857818603516,"y":1054.023928642273,"z":"feb1c694.520168","wires":[["f7a5b0c6.f93ab"]]},{"id":"d26b52e6.a3e06","type":"switchNode","name":"switch: relationship-list.relationship[].related-to","xml":"<switch test='`$cloud.matched.l3-networks[$cidx].relationship-list.relationship[$ridx].related-to`'>\n","comments":"","outputs":1,"x":2014.0952949523926,"y":1800.7501153945923,"z":"feb1c694.520168","wires":[["ff875f64.7bfc9"]]},{"id":"ff875f64.7bfc9","type":"other","name":"service-instance","xml":"<outcome value='service-instance'>\n","comments":"","outputs":1,"x":2301.5953102111816,"y":1801.250126838684,"z":"feb1c694.520168","wires":[["8de595fc.242118"]]},{"id":"77958b76.344254","type":"switchNode","name":"switch: relationship-list.relationship_length","xml":"<switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length`'>","comments":"","outputs":1,"x":1427.7500457763672,"y":926.9525861740112,"z":"feb1c694.520168","wires":[["5b4e99c5.c9b4e8"]]},{"id":"5b4e99c5.c9b4e8","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1687.0832977294922,"y":926.3692121505737,"z":"feb1c694.520168","wires":[["b52a5ba3.5bcee8"]]},{"id":"b52a5ba3.5bcee8","type":"switchNode","name":"set relationship-list.relationship_length = 0","xml":"<set>\n<parameter name ='tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length' value = '0' />\n","comments":"","outputs":1,"x":1954.7500457763672,"y":926.3692121505737,"z":"feb1c694.520168","wires":[[]]},{"id":"4424c7b4.c59f48","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1144.7143249511719,"y":927.0597143173218,"z":"feb1c694.520168","wires":[["77958b76.344254","f84da69.6e03a58"]]},{"id":"5a454f73.cdbdd","type":"switchNode","name":"switch: relationship-list.relationship_length","xml":"<switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length`'>\n","comments":"","outputs":1,"x":1949.6310653686523,"y":1657.9644203186035,"z":"feb1c694.520168","wires":[["a5fe2f1c.8d41a"]]},{"id":"a5fe2f1c.8d41a","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":2206.3929138183594,"y":1657.9524097442627,"z":"feb1c694.520168","wires":[["bb489d22.7e4d1"]]},{"id":"bb489d22.7e4d1","type":"switchNode","name":"set relationship-list.relationship_length = 0","xml":"<set>\n<parameter name ='tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length' value = '0' />\n","comments":"","outputs":1,"x":2448.0596618652344,"y":1657.9524097442627,"z":"feb1c694.520168","wires":[[]]},{"id":"e8437766.bb91b8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1669.2500915527344,"y":1657.7261791229248,"z":"feb1c694.520168","wires":[["5a454f73.cdbdd","99cd11af.d390b"]]},{"id":"1317425a.01096e","type":"outcomeTrue","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1282.8215637207031,"y":1265.345209121704,"z":"feb1c694.520168","wires":[["d7044fae.8418"]]},{"id":"e693088d.236668","type":"set","name":"set query-aai-l3-network-by-network-role-output = FIRST l3-network","xml":"<set>\n<parameter name='query-aai-l3-network-by-network-role-output.l3-network.' \n\tvalue='`$tmp.aai.l3-networks.l3-network[0].`' />\n\t\t\n<!--\t\t\n\t<parameter name='query-aai-l3-network-by-network-role-output.network-id' \n\t\tvalue='`$cloud.matched.l3-networks[0].network-id`' />\n\t<parameter name='query-aai-l3-network-by-network-role-output.network-name' \n\t\tvalue='`$cloud.matched.l3-networks[0].network-name`' />\n-->","comments":"","x":1866.6073608398438,"y":1267.0237998962402,"z":"feb1c694.520168","wires":[]},{"id":"13260e8c.efd691","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1230.2501411437988,"y":1505.059398651123,"z":"feb1c694.520168","wires":[["1f5b3666.f39caa","2a53cc04.197444"]]},{"id":"2a53cc04.197444","type":"switchNode","name":"switch : tmp.l3-network-found","xml":"<switch test='`$tmp.l3-network-found`'>\n","comments":"","outputs":1,"x":1502.3454132080078,"y":2082.2500467300415,"z":"feb1c694.520168","wires":[["97a102aa.624f2"]]},{"id":"562dfc81.f13814","type":"set","name":"set query-aai-l3-network-by-network-role-output","xml":"<set>\n<parameter name='query-aai-l3-network-by-network-role-output.l3-network.' \n\tvalue='`$cloud.matched.l3-networks[0].`' />\n\t\t\n<!--\t\t\n\t<parameter name='query-aai-l3-network-by-network-role-output.network-id' \n\t\tvalue='`$cloud.matched.l3-networks[0].network-id`' />\n\t<parameter name='query-aai-l3-network-by-network-role-output.network-name' \n\t\tvalue='`$cloud.matched.l3-networks[0].network-name`' />\n-->","comments":"","x":2043.2026062011719,"y":2163.2619552612305,"z":"feb1c694.520168","wires":[]},{"id":"97a102aa.624f2","type":"outcomeTrue","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1738.4167938232422,"y":2081.988163948059,"z":"feb1c694.520168","wires":[["ae3a485b.36e298"]]},{"id":"b10af6ab.da4238","type":"set","name":"set tmp.l3-network-found = 1","xml":"<set>\n<parameter name='tmp.l3-network-found' value='1' />\n\t","comments":"","x":3610.3450622558594,"y":1937.2498664855957,"z":"feb1c694.520168","wires":[]},{"id":"bd59e54d.eed458","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":722.7381591796875,"y":806.1905012130737,"z":"feb1c694.520168","wires":[["fa71b5e1.12aad8","162f00a4.dbf4df","bf3334ad.aa95c8","4a250290.cbbefc"]]},{"id":"fa71b5e1.12aad8","type":"set","name":"set tmp.l3-network-found = 0","xml":"<set>\n<parameter name='tmp.l3-network-found' value='0' />","comments":"","x":981.5953674316406,"y":805.6190900802612,"z":"feb1c694.520168","wires":[]},{"id":"162f00a4.dbf4df","type":"set","name":"initialize cloud.matched.l3-networks_length","xml":"<set>\n<parameter name='cloud.matched.l3-networks_length' value='0' />","comments":"","x":1026.4048156738281,"y":856.8571882247925,"z":"feb1c694.520168","wires":[]},{"id":"6d4d6798.2bc218","type":"comment","name":"match both cloud-region and then service-instance-id","info":"","comments":"","x":815.2380676269531,"y":1114.8573160171509,"z":"feb1c694.520168","wires":[]},{"id":"762f5443.53124c","type":"set","name":"Empty query-aai-l3-network-by-network-role-output.","xml":"<set>\n<parameter name='query-aai-l3-network-by-network-role-output.' value='' />","comments":"","x":537.7380676269531,"y":337.4285488128662,"z":"feb1c694.520168","wires":[]},{"id":"36e9d5a6.c6e93a","type":"set","name":"Empty tmp.aai.l3-networks.","xml":"<set>\n<parameter name='tmp.aai.l3-networks.' value='' />","comments":"","x":461.8809509277344,"y":391.7143154144287,"z":"feb1c694.520168","wires":[]},{"id":"d7044fae.8418","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=\"`'No l3-network with network-role=' + $query-aai-l3-network-by-network-role-input.network-role + ' and cloud-region=' + $query-aai-l3-network-by-network-role-input.aic-cloud-region + ' found in AAI'`\" />\n","comments":"","x":1441.9285430908203,"y":1265.5000114440918,"z":"feb1c694.520168","wires":[]},{"id":"ae3a485b.36e298","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=\"`'No l3-network with network-role=' + $query-aai-l3-network-by-network-role-input.network-role + ' and cloud-region=' + $query-aai-l3-network-by-network-role-input.aic-cloud-region + ' and service-instance-id=' + $query-aai-l3-network-by-network-role-input.service-instance-id + ' found in AAI'`\" />\n","comments":"","x":1921.9285430908203,"y":2081.071544647217,"z":"feb1c694.520168","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_rollback-eipam-ip-assignment.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_rollback-eipam-ip-assignment.json
new file mode 100644
index 0000000..652fd6e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_rollback-eipam-ip-assignment.json
@@ -0,0 +1 @@
+[{"id":"ea815a18.2dbc38","type":"dgstart","name":"DGSTART","outputs":1,"x":175.71429443359375,"y":71.42857360839844,"z":"efce3e2c.92e5a","wires":[["75f09495.0b88ec"]]},{"id":"4f7a2aae.d22154","type":"method","name":"method rollback-eipam-ip-assignment","xml":"<method rpc='rollback-eipam-ip-assignment' mode='sync'>\n","comments":"","outputs":1,"x":343.2142791748047,"y":232.3650894165039,"z":"efce3e2c.92e5a","wires":[["df537867.a583e8"]]},{"id":"54dcc02b.74032","type":"update","name":"update EIPAM_IP_ASSIGNMENTS to PENDING_DELETE...","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\n\tkey=\"UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status \n\t\tWHERE info = $vnf-topology-operation-input.vnf-request-information.vnf-id\" >","comments":"","outputs":1,"x":1366.7619132995605,"y":415.7142610549927,"z":"efce3e2c.92e5a","wires":[["b0907e6c.84fac"]]},{"id":"ccc5977b.048f08","type":"set","name":"set status variable","xml":"<set>\n<parameter name='tmp.status' \n\tvalue=\"`'PENDING_DELETE_' + $vnf-topology-operation-input.vnf-request-information.vnf-id`\" />\n<parameter name='service-data.service-information.service-type' \n\tvalue='NOT_APPLICABLE' />\n\t\n","comments":"","x":1236.761875152588,"y":369.04763317108154,"z":"efce3e2c.92e5a","wires":[]},{"id":"b0907e6c.84fac","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1672.7618217468262,"y":415.0475606918335,"z":"efce3e2c.92e5a","wires":[["2819fc9.528a104"]]},{"id":"2819fc9.528a104","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 updating EIPAM_IP_ASSIGNMENTS table on rollback.\" />\n","comments":"","x":1831.761848449707,"y":414.85729598999023,"z":"efce3e2c.92e5a","wires":[]},{"id":"3b4fac15.b93614","type":"execute","name":"execute EIPAM unassign IP addresses","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"unassignIPAddress\">\n<parameter name=\"deleteEIPAM_status\" value=\"`$tmp.status`\" />\n","comments":"","outputs":1,"x":1301.7618827819824,"y":460.71430492401123,"z":"efce3e2c.92e5a","wires":[["ab8d1507.dd66a8"]]},{"id":"ab8d1507.dd66a8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1538.428508758545,"y":460.71424770355225,"z":"efce3e2c.92e5a","wires":[["972f63af.2272a"]]},{"id":"972f63af.2272a","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 in EIPAM unassign IP address on rollback.\" />\n","comments":"","x":1728.4285354614258,"y":460.523983001709,"z":"efce3e2c.92e5a","wires":[]},{"id":"33111690.4e393a","type":"comment","name":"rollback-eipam-ip-assignment","info":"","comments":"","x":699.7619781494141,"y":82.14334297180176,"z":"efce3e2c.92e5a","wires":[]},{"id":"df537867.a583e8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":315.5714416503906,"y":322.33350372314453,"z":"efce3e2c.92e5a","wires":[["bbf0c063.177bf"]]},{"id":"bbf0c063.177bf","type":"update","name":"get-resource EIPAM_IP_ASSIGNMENTS","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from EIPAM_IP_ASSIGNMENTS \n  WHERE info = $vnf-topology-operation-input.vnf-request-information.vnf-id'>","comments":"","outputs":1,"x":591.7143402099609,"y":322.71427726745605,"z":"efce3e2c.92e5a","wires":[["76dfc5db.6c084c","fab0816a.ac00c"]]},{"id":"76dfc5db.6c084c","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":853.2857780456543,"y":322.28571581840515,"z":"efce3e2c.92e5a","wires":[["e49469d9.9c7228"]]},{"id":"e49469d9.9c7228","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":996.4285866873606,"y":321.71429361615856,"z":"efce3e2c.92e5a","wires":[[]]},{"id":"fab0816a.ac00c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":849.9999237060547,"y":370.0000286102295,"z":"efce3e2c.92e5a","wires":[["deacba9b.7d81d8"]]},{"id":"deacba9b.7d81d8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1017.285701751709,"y":369.42856216430664,"z":"efce3e2c.92e5a","wires":[["ccc5977b.048f08","54dcc02b.74032","3b4fac15.b93614"]]},{"id":"75f09495.0b88ec","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":308.5714416503906,"y":148.5714225769043,"z":"efce3e2c.92e5a","wires":[["4f7a2aae.d22154"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_rollback-generated-names.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_rollback-generated-names.json
new file mode 100644
index 0000000..756b5a0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_rollback-generated-names.json
@@ -0,0 +1,1646 @@
+[

+    {

+        "id": "29cb883a.884228",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 1334.4443359375,

+        "y": 20.416664123535156,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "888a84ae.33c888"

+            ]

+        ]

+    },

+    {

+        "id": "ed968adc.8ee998",

+        "type": "method",

+        "name": "method rollback-generated-names",

+        "xml": "<method rpc='rollback-generated-names' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1459.5157623291016,

+        "y": 91.84523582458496,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "75650b62.fb7214"

+            ]

+        ]

+    },

+    {

+        "id": "75650b62.fb7214",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1458.7300567626953,

+        "y": 173.2738151550293,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "5556f19b.f5219",

+                "19ce5e74.e19aa2",

+                "d35c0a8.e055af8",

+                "37f63bc9.9d3f04",

+                "b6ebcdec.0165b"

+            ]

+        ]

+    },

+    {

+        "id": "5556f19b.f5219",

+        "type": "switchNode",

+        "name": "switch rollback-generated-names-input.context-id",

+        "xml": "<switch test='`$rollback-generated-names-input.context-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1780.2776489257812,

+        "y": 172.33332443237305,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "49e2a20b.aa74ac"

+            ]

+        ]

+    },

+    {

+        "id": "19ce5e74.e19aa2",

+        "type": "switchNode",

+        "name": "switch rollback-generated-names-input.naming-type",

+        "xml": "<switch test='`$rollback-generated-names-input.naming-type`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1787.444351196289,

+        "y": 232.16666793823242,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "19ba8656.ba40ea",

+                "fbafb911.c1a228",

+                "aaaeba77.eb1d38",

+                "c6b37ac7.e80618",

+                "1516480b.27b978",

+                "943b3579.515908",

+                "ffdb86fd.ed9ae8",

+                "f9d65524.73d078"

+            ]

+        ]

+    },

+    {

+        "id": "49e2a20b.aa74ac",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2058.694351196289,

+        "y": 172.91666793823242,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "7ab1c055.bf769"

+            ]

+        ]

+    },

+    {

+        "id": "7ab1c055.bf769",

+        "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=\"rollback-generated-names-input.context-id can not be null\" />\n",

+        "comments": "",

+        "x": 2225.3486518859863,

+        "y": 172.31190013885498,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "19ba8656.ba40ea",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2102.1943359375,

+        "y": 231.91666412353516,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "6acbae14.16e77"

+            ]

+        ]

+    },

+    {

+        "id": "6acbae14.16e77",

+        "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=\"rollback-generated-names-input.naming-type can not be null\" />\n",

+        "comments": "",

+        "x": 2268.4443550109863,

+        "y": 231.91666793823242,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "fbafb911.c1a228",

+        "type": "outcome",

+        "name": "VM_INSTANCE",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2130.1943740844727,

+        "y": 279.52380752563477,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "14f5428c.d3dd3d"

+            ]

+        ]

+    },

+    {

+        "id": "aaaeba77.eb1d38",

+        "type": "outcome",

+        "name": "VNFC_INSTANCE",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2140.444366455078,

+        "y": 327.0238094329834,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "b191361f.e39258"

+            ]

+        ]

+    },

+    {

+        "id": "14f5428c.d3dd3d",

+        "type": "set",

+        "name": "set tmp.rb.naming-index-table-name and prefix column, grn.type",

+        "xml": "<set>\n<parameter name='rollback-generated-names.index-table-name' value='NAMING_POLICY_VM_NAME_INDEX' />\n<parameter name='rollback-generated-names.index-table.name-prefix-column' value='vm_name_prefix' />\n",

+        "comments": "",

+        "x": 2551.694351196289,

+        "y": 279.66666984558105,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "b191361f.e39258",

+        "type": "set",

+        "name": "set tmp.rb.naming-index-table-name and prefix column, grn.type",

+        "xml": "<set>\n<parameter name='rollback-generated-names.index-table-name' value='NAMING_POLICY_VNFC_NAME_INDEX' />\n<parameter name='rollback-generated-names.index-table.name-prefix-column' value='vnfc_name_prefix' />\n\n",

+        "comments": "",

+        "x": 2553.944351196289,

+        "y": 326.9166717529297,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "c6b37ac7.e80618",

+        "type": "outcome",

+        "name": "Other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2107.6943359375,

+        "y": 571.1666641235352,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "f1c08b0d.d43858"

+            ]

+        ]

+    },

+    {

+        "id": "f1c08b0d.d43858",

+        "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=\"`'Unknown rollbck-generated-name-input.naming-type: ' + $rollback-generated-names-input.naming-type`\" />\n",

+        "comments": "",

+        "x": 2273.9443550109863,

+        "y": 571.1666679382324,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "1f6886e.08cdb79",

+        "type": "set",

+        "name": "set tmp.rb.sql",

+        "xml": "<set>\n<parameter name='tmp.rb.sql' \n\tvalue=\"`'SELECT * from ' + $rollback-generated-names.index-table-name \n\t\t+ ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \n\t\t+ ' = $tmp.rb.grn.prefix'`\" />",

+        "comments": "",

+        "x": 2301.110996246338,

+        "y": 1108.2499651908875,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "9103eac2.da1f88",

+        "type": "get-resource",

+        "name": "GET INDEX TABLE.index_number",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.rb.sql`\" pfx='db.grn.index-table'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2369.78946685791,

+        "y": 1156.1190004348755,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "4bac1a75.3bf994",

+                "9830d2f4.14e32"

+            ]

+        ]

+    },

+    {

+        "id": "bf055860.21dff8",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2110.1109924316406,

+        "y": 1108.7499656677246,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "1f6886e.08cdb79",

+                "9103eac2.da1f88"

+            ]

+        ]

+    },

+    {

+        "id": "dba5c1eb.6b22f",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-message' value=\"`'Error reading the '\n\t+ $rollback-generated-names.index-table-name \n\t+ ' table with ' + $rollback-generated-names.name-prefix-column\n\t+ ' = ' + $tmp.rb.grn.prefix \n\t+ '. MANUAL clean up is required!'`\" />\n\n",

+        "comments": "",

+        "x": 2786.361000061035,

+        "y": 1157.0000743865967,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "aa4a319e.2aea6",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-message' value=\"`'No entries found in ' \n\t+ $rollback-generated-names.index-table-name \n\t+ ' with ' \n\t+ $rollback-generated-names.name-prefix-column \n\t+ ' = ' \n\t+ $tmp.rb.grn.prefix `\" />\n\n",

+        "comments": "",

+        "x": 2786.03946685791,

+        "y": 1202.7857494354248,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "4bac1a75.3bf994",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2613.361000061035,

+        "y": 1156.5000743865967,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "dba5c1eb.6b22f"

+            ]

+        ]

+    },

+    {

+        "id": "9830d2f4.14e32",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2620.206401824951,

+        "y": 1202.9882164001465,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "aa4a319e.2aea6"

+            ]

+        ]

+    },

+    {

+        "id": "37f63bc9.9d3f04",

+        "type": "get-resource",

+        "name": "GET GENERIC_RESOURCE_NAME distinct prefix",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n\tkey='SELECT distinct prefix from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type  \n\t\tAND context_id = $rollback-generated-names-input.context-id'\n  pfx='db.grn.distinct-prefix[]'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1778.1109619140625,

+        "y": 692.9999885559082,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "6cb3df87.7e0ec",

+                "727c9c85.dfe244"

+            ]

+        ]

+    },

+    {

+        "id": "6cb3df87.7e0ec",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2057.8609619140625,

+        "y": 692.9999809265137,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "5c66740e.eb157c"

+            ]

+        ]

+    },

+    {

+        "id": "5c66740e.eb157c",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"Encountered error reading GENERIC_RESOURCE_NAME table to retrieve distinct prefix\"/>",

+        "comments": "",

+        "x": 2227.3609619140625,

+        "y": 692.9999809265137,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "727c9c85.dfe244",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2065.860939025879,

+        "y": 739.4999742507935,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "1fa487d3.8ad6e8"

+            ]

+        ]

+    },

+    {

+        "id": "314b583f.7203e8",

+        "type": "comment",

+        "name": "pfx = db.grn.distinct-prefix[]",

+        "info": "",

+        "comments": "",

+        "x": 1770.3610076904297,

+        "y": 730.4999885559082,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "b6ebcdec.0165b",

+        "type": "for",

+        "name": "for each distinct prefix",

+        "xml": "<for index='prefix-index' start='0' end='`$db.grn.distinct-prefix_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1682.6109924316406,

+        "y": 855.4999713897705,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "615652ba.fc923c"

+            ]

+        ]

+    },

+    {

+        "id": "e5feeac4.d67ae8",

+        "type": "get-resource",

+        "name": "GET GENERIC_RESOURCE_NAME  (name_index)",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n\tkey='SELECT * from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type   \n\t\tAND context_id = $rollback-generated-names-input.context-id \n\t\tAND prefix = $tmp.rb.grn.prefix order by name_index'\n  pfx='db.grn.subset[]'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2227.6109886169434,

+        "y": 995.2499618530273,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "3b74e0d1.8867b",

+                "cd385c50.732c1"

+            ]

+        ]

+    },

+    {

+        "id": "3b74e0d1.8867b",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2545.3609886169434,

+        "y": 995.2499542236328,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "de6cfc01.eec5b"

+            ]

+        ]

+    },

+    {

+        "id": "de6cfc01.eec5b",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"Encountered error reading GENERIC_RESOURCE_NAME table\"/>",

+        "comments": "",

+        "x": 2714.8609886169434,

+        "y": 995.2499542236328,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "cd385c50.732c1",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2553.3609657287598,

+        "y": 1041.7499475479126,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "92b03b04.367558"

+            ]

+        ]

+    },

+    {

+        "id": "92b03b04.367558",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'No entry found in GENERIC_RESOURCE_NAME where context_id = ' + $rollback-generated-names-input.context-id + ' and type = ' + $rollback-generated-names-input.naming-type + ' and prefix = ' + $db.grn.distinct-prefix[$prefix-index].prefix`\"/>",

+        "comments": "",

+        "x": 2716.6110038757324,

+        "y": 1041.499963760376,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "aec883e2.d2ce2",

+        "type": "comment",

+        "name": "pfx = db.grn.subset[]",

+        "info": "",

+        "comments": "",

+        "x": 2298.6110038757324,

+        "y": 1032.7499713897705,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "615652ba.fc923c",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1892.860984802246,

+        "y": 855.2499618530273,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "e5feeac4.d67ae8",

+                "d73de031.6f6f9",

+                "bf055860.21dff8",

+                "5b7f4beb.293b54",

+                "5bc6188.f631ce8",

+                "71d6da4f.c71d64",

+                "1bd95123.da921f",

+                "300df04b.286a1",

+                "c3fa064.1eee4f8",

+                "6647f1a8.2eba5",

+                "5693c8f8.d296b8"

+            ]

+        ]

+    },

+    {

+        "id": "d73de031.6f6f9",

+        "type": "set",

+        "name": "set tmp.rb.grn.prefix",

+        "xml": "<set>\n<parameter name='tmp.rb.grn.prefix' value='`$db.grn.distinct-prefix[$prefix-index].prefix`' />\n",

+        "comments": "",

+        "x": 2130.1109733581543,

+        "y": 945.9999675750732,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "6dc0d5b7.e8b79c",

+        "type": "switchNode",

+        "name": "switch: tmp.rb.net-index == 0",

+        "xml": "<switch test=\"`$tmp.rb.net-index == 0`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 2589.027786254883,

+        "y": 1406.0832901000977,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "ae547b4c.5ee188",

+                "de514521.1f6668"

+            ]

+        ]

+    },

+    {

+        "id": "ab812023.4d106",

+        "type": "comment",

+        "name": "pfx = db.grn.index-table",

+        "info": "",

+        "comments": "",

+        "x": 2405.8609771728516,

+        "y": 1192.7499542236328,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "5bc6188.f631ce8",

+        "type": "set",

+        "name": "set tmp.rb.grn.max-index",

+        "xml": "<set>\n<parameter name='tmp.rb.grn.max-index' \n\tvalue='`$db.grn.subset[$db.grn.subset_length - 1].name-index`' />\n",

+        "comments": "",

+        "x": 2138.6109924316406,

+        "y": 1262.7499685287476,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "5b7f4beb.293b54",

+        "type": "set",

+        "name": "clear tmp.rb.",

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

+        "comments": "",

+        "x": 2105.1109580993652,

+        "y": 899.2499523162842,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "d35c0a8.e055af8",

+        "type": "set",

+        "name": "clear db.grn.",

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

+        "comments": "",

+        "x": 1661.249885559082,

+        "y": 639.4444446563721,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "71d6da4f.c71d64",

+        "type": "set",

+        "name": "clear db.grn.subset.",

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

+        "comments": "",

+        "x": 2126.1109924316406,

+        "y": 855.499960899353,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "f019211a.03f21",

+        "type": "set",

+        "name": "set tmp.rb.sql for delete",

+        "xml": "<set>\n<parameter name='tmp.rb.sql' \n\tvalue=\"`'DELETE from ' + $rollback-generated-names.index-table-name \n\t\t+ ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \n\t\t+ ' = $tmp.rb.grn.prefix'`\" />\n\t\t\n<!--\n+ ' = $tmp.rb.grn.prefix AND index_number = $db.grn.index-table.index-number'`\" />\n-->\t\t\t\t",

+        "comments": "",

+        "x": 3201.777618408203,

+        "y": 1406.08327293396,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "28704354.57816c",

+        "type": "get-resource",

+        "name": "DELETE from INDEX TABLE",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.rb.sql`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3217.9561462402344,

+        "y": 1451.7023067474365,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "2a3eafed.800b2",

+                "9929948e.80baa8"

+            ]

+        ]

+    },

+    {

+        "id": "f41ba658.f134a8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-message' value=\"`'Error deleting '\n\t+ $rollback-generated-names.index-table-name \n\t+ ' WHERE ' + $rollback-generated-names.name-prefix-column \n\t+ ' = ' + $tmp.rb.grn.prefix \n\t+ ' AND index_number = ' + $db.index-table.index-number\n\t+ '. MANUAL clean up is required!'`\" />\n\n",

+        "comments": "",

+        "x": 3626.5276794433594,

+        "y": 1451.5833806991577,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "2a3eafed.800b2",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3453.5276794433594,

+        "y": 1452.0833806991577,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "f41ba658.f134a8"

+            ]

+        ]

+    },

+    {

+        "id": "9929948e.80baa8",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3460.3730812072754,

+        "y": 1498.5715227127075,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "ce9cb4be.d8f5e8"

+            ]

+        ]

+    },

+    {

+        "id": "138bb542.26235b",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2969.277671813965,

+        "y": 1405.8332901000977,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "f019211a.03f21",

+                "28704354.57816c"

+            ]

+        ]

+    },

+    {

+        "id": "1bd95123.da921f",

+        "type": "set",

+        "name": "set tmp.rb.delta-index = index-number - max-index",

+        "xml": "<set>\n<parameter name='tmp.rb.delta-index' \n\tvalue='`$db.grn.index-table.index-number - $tmp.rb.grn.max-index`' />\n",

+        "comments": "",

+        "x": 2216.6109924316406,

+        "y": 1307.9999675750732,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "ae547b4c.5ee188",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2802.7776489257812,

+        "y": 1406.0832710266113,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "138bb542.26235b"

+            ]

+        ]

+    },

+    {

+        "id": "6647f1a8.2eba5",

+        "type": "get-resource",

+        "name": "DELETE from GENERIC_RESOURCE_NAME",

+        "xml": "<delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n\tkey='DELETE from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type  \n\t\tAND context_id = $rollback-generated-names-input.context-id \n\t\tAND prefix = $tmp.rb.grn.prefix'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2199.4562072753906,

+        "y": 1743.9523639678955,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "c5dfbac3.eb7ac8",

+                "d5e547a5.1eafc8"

+            ]

+        ]

+    },

+    {

+        "id": "c240b414.e47518",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-message' value=\"`'Error deleting GENERIC_RESOURCE_NAME WHERE type = '\n\t+ $rollback-generated-names-input.naming-type  \n\t+ ' AND context_id = ' + $rollback-generated-names-input.context-id \n\t+ ' AND prefix = '+ $tmp.rb.grn.prefix\n\t+ '. MANUAL clean up is required!'`\" />\n\n",

+        "comments": "",

+        "x": 2651.0277404785156,

+        "y": 1744.8334379196167,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "c5dfbac3.eb7ac8",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2478.0277404785156,

+        "y": 1744.3334379196167,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "c240b414.e47518"

+            ]

+        ]

+    },

+    {

+        "id": "d5e547a5.1eafc8",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2484.8730850219727,

+        "y": 1790.8216247558594,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "a4121e26.ea489"

+            ]

+        ]

+    },

+    {

+        "id": "c25429a5.1b65a8",

+        "type": "comment",

+        "name": "Delete prefix from INDEX TABLE",

+        "info": "",

+        "comments": "",

+        "x": 3472.0277557373047,

+        "y": 1408.0833444595337,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "4b654cba.5ced54",

+        "type": "comment",

+        "name": "Silence SUCCESS",

+        "info": "",

+        "comments": "",

+        "x": 3717.027687072754,

+        "y": 1510.083288192749,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "ce9cb4be.d8f5e8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3609.2776832580566,

+        "y": 1498.3332901000977,

+        "z": "aa630329.50a53",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "de514521.1f6668",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2801.777732849121,

+        "y": 1591.3333129882812,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "e961bcf0.f03cb"

+            ]

+        ]

+    },

+    {

+        "id": "666b02e.502d0fc",

+        "type": "comment",

+        "name": "index_number > $db.grn.subset_length; i.e hole in the middle. DO NOTHING",

+        "info": "",

+        "comments": "",

+        "x": 2392.5277557373047,

+        "y": 1530.083345413208,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "b133d8d2.574fa8",

+        "type": "comment",

+        "name": "Silence SUCCESS",

+        "info": "",

+        "comments": "",

+        "x": 2741.027587890625,

+        "y": 1802.3333225250244,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "a4121e26.ea489",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2633.2775840759277,

+        "y": 1790.583324432373,

+        "z": "aa630329.50a53",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "300df04b.286a1",

+        "type": "switchNode",

+        "name": "switch: tmp.rb.delta-index == 0",

+        "xml": "<switch test=\"`$tmp.rb.delta-index == 0`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 2155.0276641845703,

+        "y": 1406.333288192749,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "ebc810ff.c3a11",

+                "cc537a09.f92948"

+            ]

+        ]

+    },

+    {

+        "id": "ebc810ff.c3a11",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2382.2776489257812,

+        "y": 1406.3332710266113,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "6dc0d5b7.e8b79c"

+            ]

+        ]

+    },

+    {

+        "id": "9160dc95.b9431",

+        "type": "set",

+        "name": "set tmp.rb.sql for update",

+        "xml": "<set>\n<parameter name='tmp.rb.sql' \n\tvalue=\"`'UPDATE ' + $rollback-generated-names.index-table-name \n\t\t+ ' set index_number = ' + $tmp.rb.net-index\n\t\t+ ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \n\t\t+ ' = $tmp.rb.grn.prefix'`\" />",

+        "comments": "",

+        "x": 3208.527687072754,

+        "y": 1591.3332977294922,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "d2204951.3f5048",

+        "type": "get-resource",

+        "name": "Update INDEX TABLE",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.rb.sql`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3204.706214904785,

+        "y": 1636.9523315429688,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "e86d1619.af6ed8",

+                "79602d4f.9dc9b4"

+            ]

+        ]

+    },

+    {

+        "id": "3686c0ec.5662b",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-message' value=\"`'Error updating  '\n\t+ $rollback-generated-names.index-table-name + '.index_number = ' \n\t+ $tmp.rb.net-index\n\t+ ' WHERE ' + $rollback-generated-names.name-prefix-column \n\t+ ' = ' + $tmp.rb.grn.prefix\n\t+ '. MANUAL clean up is required!'`\" />\n\n",

+        "comments": "",

+        "x": 3610.27774810791,

+        "y": 1636.83340549469,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "e86d1619.af6ed8",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3418.27774810791,

+        "y": 1637.33340549469,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "3686c0ec.5662b"

+            ]

+        ]

+    },

+    {

+        "id": "79602d4f.9dc9b4",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3425.123149871826,

+        "y": 1683.8215475082397,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "3686c0ec.5662b"

+            ]

+        ]

+    },

+    {

+        "id": "e961bcf0.f03cb",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2969.0277404785156,

+        "y": 1591.0833148956299,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "9160dc95.b9431",

+                "d2204951.3f5048"

+            ]

+        ]

+    },

+    {

+        "id": "d4cb9489.bfce78",

+        "type": "comment",

+        "name": "Update prefix from INDEX TABLE",

+        "info": "",

+        "comments": "",

+        "x": 3160.52774810791,

+        "y": 1669.5833106040955,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "c3fa064.1eee4f8",

+        "type": "set",

+        "name": "set tmp.rb.net-index = index-number - $db.grn.subset_length",

+        "xml": "<set>\n<parameter name='tmp.rb.net-index' \n\tvalue='`$db.grn.index-table.index-number - $db.grn.subset_length`' />\n",

+        "comments": "",

+        "x": 2247.3609771728516,

+        "y": 1355.4999523162842,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "1fda938f.3dbb9c",

+        "type": "comment",

+        "name": "index_number == max index",

+        "info": "",

+        "comments": "",

+        "x": 2032.8609924316406,

+        "y": 1449.2499694824219,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "d76b3389.44a7f",

+        "type": "comment",

+        "name": "index_number == $db.grn.subset_length",

+        "info": "",

+        "comments": "",

+        "x": 2660.3609924316406,

+        "y": 1366.7499694824219,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "cc537a09.f92948",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2390.3609924316406,

+        "y": 1575.4999685287476,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "a8f99767.daacf8"

+            ]

+        ]

+    },

+    {

+        "id": "a8f99767.daacf8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2534.111000061035,

+        "y": 1575.7499713897705,

+        "z": "aa630329.50a53",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2d578494.cd5f7c",

+        "type": "comment",

+        "name": "Change History",

+        "info": "iTrack SDNGC-10767\n- new DG to rollback generated-names",

+        "comments": "",

+        "x": 1813.1943435668945,

+        "y": 65.41666603088379,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "3d5fa372.a6850c",

+        "type": "set",

+        "name": "set tmp.rb.naming-index-table-name, index-table.prefix column, grn.type",

+        "xml": "<set>\n<parameter name='rollback-generated-names.index-table-name' value='EIPAM_CLIENT_KEY_INDEX' />\n<parameter name='rollback-generated-names.index-table.name-prefix-column' value='vnf_name_prefix' />\n",

+        "comments": "",

+        "x": 2579.4443359375,

+        "y": 377.41666412353516,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "1516480b.27b978",

+        "type": "outcome",

+        "name": "CLIENT_KEY",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2127.194351196289,

+        "y": 377.0238037109375,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "3d5fa372.a6850c"

+            ]

+        ]

+    },

+    {

+        "id": "943b3579.515908",

+        "type": "outcome",

+        "name": "NETWORK_INSTANCE",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2158.972099304199,

+        "y": 427.2777690887451,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "83af09d2.c65ec8"

+            ]

+        ]

+    },

+    {

+        "id": "ffdb86fd.ed9ae8",

+        "type": "outcome",

+        "name": "SERVICE_INSTANCE",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2157.083236694336,

+        "y": 476.2777853012085,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "1c77760e.ecb7ea"

+            ]

+        ]

+    },

+    {

+        "id": "f9d65524.73d078",

+        "type": "outcome",

+        "name": "VNF_INSTANCE",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2140.972099304199,

+        "y": 522.2777843475342,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "e200beea.7beb8"

+            ]

+        ]

+    },

+    {

+        "id": "2e594a51.7adc16",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2481.4800338745117,

+        "y": 1888.095199584961,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "dc507a17.e1ccd8"

+            ]

+        ]

+    },

+    {

+        "id": "dc507a17.e1ccd8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"Encountered error reading GENERIC_RESOURCE_NAME table\"/>",

+        "comments": "",

+        "x": 2650.9800338745117,

+        "y": 1888.095199584961,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "72a18f01.deeb5",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2489.480010986328,

+        "y": 1934.5951929092407,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "43bd72cf.d1989c"

+            ]

+        ]

+    },

+    {

+        "id": "5826c7ee.56a468",

+        "type": "comment",

+        "name": "pfx = db.grn.prefix[]",

+        "info": "",

+        "comments": "",

+        "x": 2214.730049133301,

+        "y": 1925.5952167510986,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "5693c8f8.d296b8",

+        "type": "get-resource",

+        "name": "GET GENERIC_RESOURCE_NAME  (prefix)",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n\tkey='SELECT * from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type    \n\t\tAND prefix = $tmp.rb.grn.prefix order by name_index'\n  pfx='db.grn.prefix[]'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2193.730026245117,

+        "y": 1887.845220565796,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "2e594a51.7adc16",

+                "72a18f01.deeb5",

+                "97a75732.8d1778"

+            ]

+        ]

+    },

+    {

+        "id": "97a75732.8d1778",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2483.015769958496,

+        "y": 2077.5595169067383,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "af5d42dd.241e1"

+            ]

+        ]

+    },

+    {

+        "id": "af5d42dd.241e1",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2632.6587142944336,

+        "y": 2077.702341079712,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "255e4edf.8d20f2",

+                "46080842.900648"

+            ]

+        ]

+    },

+    {

+        "id": "ad49ad2b.b9ff7",

+        "type": "comment",

+        "name": "Clean up holes in INDEX TABLE",

+        "info": "",

+        "comments": "",

+        "x": 1951.694351196289,

+        "y": 1831.6666927337646,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "f4c9b7ed.c5e8b8",

+        "type": "set",

+        "name": "set tmp.rb.sql for delete",

+        "xml": "<set>\n<parameter name='tmp.rb.sql' \n\tvalue=\"`'DELETE from ' + $rollback-generated-names.index-table-name \n\t\t+ ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \n\t\t+ ' = $tmp.rb.grn.prefix'`\" />\n\t\t\n<!--\n+ ' = $tmp.rb.grn.prefix AND index_number = $db.grn.index-table.index-number'`\" />\n-->\t\t\t\t",

+        "comments": "",

+        "x": 2890.4800720214844,

+        "y": 1934.5952682495117,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "9004f393.79866",

+        "type": "get-resource",

+        "name": "DELETE from INDEX TABLE",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.rb.sql`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2906.6585998535156,

+        "y": 1980.2143020629883,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "e6d51ffb.da5ef",

+                "e74e9d15.6e515"

+            ]

+        ]

+    },

+    {

+        "id": "8b317be0.6cea48",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-message' value=\"`'Error deleting '\n\t+ $rollback-generated-names.index-table-name \n\t+ ' WHERE ' + $rollback-generated-names.name-prefix-column \n\t+ ' = ' + $tmp.rb.grn.prefix \n\t+ ' AND index_number = ' + $db.index-table.index-number`\" />\n\n",

+        "comments": "",

+        "x": 3297.2301330566406,

+        "y": 1980.0953760147095,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "e6d51ffb.da5ef",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3124.2301330566406,

+        "y": 1980.5953760147095,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "8b317be0.6cea48"

+            ]

+        ]

+    },

+    {

+        "id": "e74e9d15.6e515",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3131.0755348205566,

+        "y": 2027.0835180282593,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "9ba26a8.310e298"

+            ]

+        ]

+    },

+    {

+        "id": "77aa82ec.ea575c",

+        "type": "comment",

+        "name": "Delete prefix from INDEX TABLE",

+        "info": "",

+        "comments": "",

+        "x": 3160.730209350586,

+        "y": 1936.5953397750854,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "2d8ded7b.a5e7e2",

+        "type": "comment",

+        "name": "Silence SUCCESS",

+        "info": "",

+        "comments": "",

+        "x": 3387.730140686035,

+        "y": 2038.5952835083008,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "9ba26a8.310e298",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3279.980136871338,

+        "y": 2026.8452854156494,

+        "z": "aa630329.50a53",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "43bd72cf.d1989c",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2637.1943588256836,

+        "y": 1934.9166927337646,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "f4c9b7ed.c5e8b8",

+                "9004f393.79866"

+            ]

+        ]

+    },

+    {

+        "id": "255e4edf.8d20f2",

+        "type": "set",

+        "name": "set tmp.rb.grn.last-max-index",

+        "xml": "<set>\n<parameter name='tmp.rb.grn.last-max-index' \n\tvalue='`$db.grn.prefix[$db.grn.prefix_length - 1].name-index`' />\n",

+        "comments": "",

+        "x": 2855.6943588256836,

+        "y": 2077.916696548462,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "46080842.900648",

+        "type": "switchNode",

+        "name": "switch: index_number > last-max-index",

+        "xml": "<switch test=\"`$tmp.rb.net-index > $tmp.rb.grn.last-max-index`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 2884.944366455078,

+        "y": 2121.916696548462,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "88ac47d8.6bb598"

+            ]

+        ]

+    },

+    {

+        "id": "88ac47d8.6bb598",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3124.9443359375,

+        "y": 2121.416664123535,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "c1f045de.3e28c8"

+            ]

+        ]

+    },

+    {

+        "id": "ee302e41.39dd1",

+        "type": "set",

+        "name": "set tmp.rb.sql for update",

+        "xml": "<set>\n<parameter name='tmp.rb.sql' \n\tvalue=\"`'UPDATE ' + $rollback-generated-names.index-table-name \n\t\t+ ' set index_number = ' + $tmp.rb.grn.last-max-index\n\t\t+ ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column \n\t\t+ ' = $tmp.rb.grn.prefix'`\" />",

+        "comments": "",

+        "x": 3473.194366455078,

+        "y": 2121.416696548462,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "b61cd1a1.4af9b",

+        "type": "get-resource",

+        "name": "Update  INDEX TABLE",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"`$tmp.rb.sql`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3469.3728942871094,

+        "y": 2166.0357303619385,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "5241d984.6b2458",

+                "19f1dadd.4da2c5"

+            ]

+        ]

+    },

+    {

+        "id": "2583f2fc.38be4e",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-message' value=\"`'Error updating  '\n\t+ $rollback-generated-names.index-table-name + '.index_number = ' \n\t+ $tmp.rb.grn.last-max-index\n\t+ ' WHERE ' + $rollback-generated-names.name-prefix-column \n\t+ ' = ' + $tmp.rb.grn.prefix`\" />\n\n",

+        "comments": "",

+        "x": 3851.9443740844727,

+        "y": 2166.9169409275055,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "5241d984.6b2458",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3678.9444274902344,

+        "y": 2166.4168043136597,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "2583f2fc.38be4e"

+            ]

+        ]

+    },

+    {

+        "id": "19f1dadd.4da2c5",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 3685.7898292541504,

+        "y": 2212.9049463272095,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "2583f2fc.38be4e"

+            ]

+        ]

+    },

+    {

+        "id": "370184fa.2c436c",

+        "type": "comment",

+        "name": "Update prefix from INDEX TABLE",

+        "info": "",

+        "comments": "",

+        "x": 3425.1944274902344,

+        "y": 2198.666709423065,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "c1f045de.3e28c8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3274.4443359375,

+        "y": 2121.666664123535,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "ee302e41.39dd1",

+                "b61cd1a1.4af9b"

+            ]

+        ]

+    },

+    {

+        "id": "1fa487d3.8ad6e8",

+        "type": "set",

+        "name": "set db.grn.distinct-prefix_length = 0",

+        "xml": "<set>\n<parameter name='db.grn.distinct-prefix_length' value='0' />\n",

+        "comments": "",

+        "x": 2298.194351196289,

+        "y": 739.6666774749756,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "888a84ae.33c888",

+        "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": 1609.0277099609375,

+        "y": 20,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "ed968adc.8ee998"

+            ]

+        ]

+    },

+    {

+        "id": "e200beea.7beb8",

+        "type": "set",

+        "name": "set tmp.rb.naming-index-table-name and prefix column, grn.type",

+        "xml": "<set>\n<parameter name='rollback-generated-names.index-table-name' value='VNF_NAME_INDEX' />\n<parameter name='rollback-generated-names.index-table.name-prefix-column' \n\tvalue='vnf_name_prefix' />\n\n",

+        "comments": "",

+        "x": 2671.805435180664,

+        "y": 555.3333234786987,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "83af09d2.c65ec8",

+        "type": "set",

+        "name": "set tmp.rb.naming-index-table-name and prefix column, grn.type",

+        "xml": "<set>\n<parameter name='rollback-generated-names.index-table-name' \n\tvalue='NETWORK_INSTANCE_NAME_INDEX' />\n<parameter name='rollback-generated-names.index-table.name-prefix-column' \n\tvalue='network_instance_name_prefix' />\n\n",

+        "comments": "",

+        "x": 2557.6943359375,

+        "y": 426.66666412353516,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "98dce5f3.4de788",

+        "type": "set",

+        "name": "set tmp.rb.naming-index-table-name and prefix column, grn.type",

+        "xml": "<set>\n<parameter name='rollback-generated-names.index-table-name' \n\tvalue='SERVICE_INSTANCE_NAME_INDEX' />\n<parameter name='rollback-generated-names.index-table.name-prefix-column' \n\tvalue='service_instance_name_prefix' />\n\n",

+        "comments": "",

+        "x": 2741.027633666992,

+        "y": 474.4444389343262,

+        "z": "aa630329.50a53",

+        "wires": []

+    },

+    {

+        "id": "1c77760e.ecb7ea",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2356.6666666666665,

+        "y": 474.44444444444446,

+        "z": "aa630329.50a53",

+        "wires": [

+            [

+                "98dce5f3.4de788",

+                "3647a166.a299ee"

+            ]

+        ]

+    },

+    {

+        "id": "3647a166.a299ee",

+        "type": "get-resource",

+        "name": "DELETE service instance name",

+        "xml": "<delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n\tkey='DELETE from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type  \n\t\tAND context_id = $rollback-generated-names-input.context-id AND prefix IS NULL AND name_index IS NULL'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2582.2221870422363,

+        "y": 512.222222328186,

+        "z": "aa630329.50a53",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7a0ecea1.020ae",

+        "type": "comment",

+        "name": "quick path to delete instance name",

+        "info": "If no prefix and name_index involved, it can be deleted now",

+        "comments": "",

+        "x": 2838.888832092285,

+        "y": 518.8889126777649,

+        "z": "aa630329.50a53",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-activate.json
new file mode 100755
index 0000000..bdba9fe
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-activate.json
@@ -0,0 +1,612 @@
+[
+    {
+        "id": "f4d06dda.30316",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 167.14285278320312,
+        "y": 61.42856979370117,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "7f7c6af3.215f74"
+            ]
+        ]
+    },
+    {
+        "id": "7f7c6af3.215f74",
+        "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": 263.38093185424805,
+        "y": 122.38096046447754,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "5a1c2468.67872c"
+            ]
+        ]
+    },
+    {
+        "id": "5a1c2468.67872c",
+        "type": "method",
+        "name": "security-zone-topology-operation-activate",
+        "xml": "<method rpc='security-zone-topology-operation-activate' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 309.2977104187012,
+        "y": 157.61901569366455,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "dfe1dc14.5964"
+            ]
+        ]
+    },
+    {
+        "id": "dfe1dc14.5964",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 217.61904525756836,
+        "y": 300.95235776901245,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "3dde4199.1c9e2e",
+                "d411dae1.fde8d8",
+                "30cc1a1b.8e88e6",
+                "6861327d.73bc7c",
+                "add0f6b0.d7fa28",
+                "b3f7a9f5.747648",
+                "5c57b0ca.b25a6",
+                "b6f5439f.b0624",
+                "fc0c4385.ee3a5",
+                "66ef7002.abb7e",
+                "56345297.bc34dc",
+                "62744ec2.dbf8"
+            ]
+        ]
+    },
+    {
+        "id": "d411dae1.fde8d8",
+        "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": 484.1429634094238,
+        "y": 970.6430778503418,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "3dde4199.1c9e2e",
+        "type": "set",
+        "name": "set output to api handler",
+        "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='security-zone-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $security-zone-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+        "comments": "",
+        "x": 512.8968772888184,
+        "y": 934.7656240463257,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "66ef7002.abb7e",
+        "type": "set",
+        "name": "set allotted-resource-oper-status",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+        "comments": "",
+        "x": 523.8970718383789,
+        "y": 681.4799699783325,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "6861327d.73bc7c",
+        "type": "set",
+        "name": "set tmp.ar.self-link",
+        "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/security-zone-topology/'` \" />\n\n",
+        "comments": "",
+        "x": 479.880916595459,
+        "y": 274.76189517974854,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "30cc1a1b.8e88e6",
+        "type": "set",
+        "name": "set tmp.ar.allotted-resource-id,etc",
+        "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />\n\n\n",
+        "comments": "",
+        "x": 527.1401786804199,
+        "y": 241.02116107940674,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "add0f6b0.d7fa28",
+        "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": 486.1362724304199,
+        "y": 310.66009426116943,
+        "z": "d029d2a.974963",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5c57b0ca.b25a6",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 548.6616058349609,
+        "y": 471.8880615234375,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "bcc2124f.d53a2",
+                "f31fdf96.9d6cc"
+            ]
+        ]
+    },
+    {
+        "id": "b3f7a9f5.747648",
+        "type": "execute",
+        "name": "generate allotted-resource url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.sz-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 514.207706451416,
+        "y": 370.44579887390137,
+        "z": "d029d2a.974963",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "bcc2124f.d53a2",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 805.9577445983887,
+        "y": 470.69582200050354,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "f78da3bd.a0afd"
+            ]
+        ]
+    },
+    {
+        "id": "b6f5439f.b0624",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 556.6721649169922,
+        "y": 824.8627014160156,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "f821a3fb.c285e",
+                "f757d471.7dc7d8",
+                "49853f9a.93d68"
+            ]
+        ]
+    },
+    {
+        "id": "f821a3fb.c285e",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 826.9801826477051,
+        "y": 877.8609022125602,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "630debdb.168f04"
+            ]
+        ]
+    },
+    {
+        "id": "f757d471.7dc7d8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 817.9802322387695,
+        "y": 846.3609279617667,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "630debdb.168f04"
+            ]
+        ]
+    },
+    {
+        "id": "49853f9a.93d68",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 821.7302703857422,
+        "y": 816.7180328369141,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "fb95f526.14ff08"
+            ]
+        ]
+    },
+    {
+        "id": "630debdb.168f04",
+        "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 updating md-sal for security-zone-allotted-resource\" />\n",
+        "comments": "",
+        "x": 987.7302703857422,
+        "y": 847.1109518036246,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "f78da3bd.a0afd",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 986.9576988220215,
+        "y": 471.19577145576477,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "a88d57e7.ea7b68",
+                "874276d9.71a568"
+            ]
+        ]
+    },
+    {
+        "id": "a88d57e7.ea7b68",
+        "type": "switchNode",
+        "name": "switch sz length",
+        "xml": "<switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1232.8149452209473,
+        "y": 505.48153471946716,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "b5653c05.23ac6"
+            ]
+        ]
+    },
+    {
+        "id": "b5653c05.23ac6",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1423.8149490356445,
+        "y": 505.4815323352814,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "750425c0.df6c0c"
+            ]
+        ]
+    },
+    {
+        "id": "803be05.23d262",
+        "type": "set",
+        "name": "set sz-ar from get",
+        "xml": "<set>\n<parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />\n",
+        "comments": "",
+        "x": 1823.6720848083496,
+        "y": 506.0529565811157,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "750425c0.df6c0c",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic='true'>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1594.671932220459,
+        "y": 506.0530014038086,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "803be05.23d262",
+                "86d2d032.ec9c7",
+                "1fd599c8.bea286"
+            ]
+        ]
+    },
+    {
+        "id": "86d2d032.ec9c7",
+        "type": "set",
+        "name": "set oper-status",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
+        "comments": "",
+        "x": 1821.6723289489746,
+        "y": 573.481520652771,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "ae3be0c3.a3ad4",
+        "type": "comment",
+        "name": "GET security-zone-allotted-resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 573.9576683044434,
+        "y": 435.19576239585876,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "1fd599c8.bea286",
+        "type": "switchNode",
+        "name": "switch order-status",
+        "xml": "<switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1831.6721076965332,
+        "y": 539.0529546737671,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "ea7abf8a.d6c0e",
+                "88378d84.e1337"
+            ]
+        ]
+    },
+    {
+        "id": "ea7abf8a.d6c0e",
+        "type": "outcome",
+        "name": "outcome Created",
+        "xml": "<outcome value='Created'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2043.2720642089844,
+        "y": 500.0529546737671,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "c95729c.38426d8"
+            ]
+        ]
+    },
+    {
+        "id": "88378d84.e1337",
+        "type": "outcome",
+        "name": "outcome Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2068.9864387512207,
+        "y": 535.4815454483032,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "c95729c.38426d8"
+            ]
+        ]
+    },
+    {
+        "id": "81dbbc42.6cf3b",
+        "type": "comment",
+        "name": "Set allotted-resource-identifiers",
+        "info": "",
+        "comments": "",
+        "x": 529.4814910888672,
+        "y": 525.7672157287598,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "874276d9.71a568",
+        "type": "set",
+        "name": "save backup copy of mdsal-ar for rollback",
+        "xml": "<set>\n<parameter name='bk-sz-ar' value='$mdsal-ar.' />\n",
+        "comments": "",
+        "x": 1312.5292778015137,
+        "y": 471.1958634853363,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "ef3a6e4c.51d76",
+        "type": "comment",
+        "name": "Create urls for restapi",
+        "info": "",
+        "comments": "",
+        "x": 485.10051345825195,
+        "y": 340.0529260635376,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "fb95f526.14ff08",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 963.3862380981445,
+        "y": 812.9102020263672,
+        "z": "d029d2a.974963",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "369a0f6a.c9ad8",
+        "type": "comment",
+        "name": "TO DO: vnf/put parent",
+        "info": "",
+        "comments": "",
+        "x": 487.38623046875,
+        "y": 713.5767650604248,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "fc0c4385.ee3a5",
+        "type": "execute",
+        "name": "execute getTime",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 471.38623428344727,
+        "y": 642.9101247787476,
+        "z": "d029d2a.974963",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f31fdf96.9d6cc",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 805.719539642334,
+        "y": 506.90999484062195,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "19da75c4.bf509a"
+            ]
+        ]
+    },
+    {
+        "id": "19da75c4.bf509a",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 985.7194900512695,
+        "y": 507.57654547691345,
+        "z": "d029d2a.974963",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "56345297.bc34dc",
+        "type": "set",
+        "name": "set id",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='sz-ar.allotted-resource-status.action' value=\"`$security-zone-topology-operation-input.request-information.request-action` \" />\n<parameter name='sz-ar.allotted-resource-status.rpc-name' value=\"security-zone-topology-operation\" />\n<parameter name='sz-ar.allotted-resource-status.rpc-action' value=\"`$security-zone-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$security-zone-topology-operation-input.request-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$security-zone-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$security-zone-topology-operation-input.service-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$security-zone-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value=\"`$security-zone-topology-operation-input.security-zone-request-input.` \" />",
+        "comments": "",
+        "x": 454.3862762451172,
+        "y": 562.5767364501953,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "c95729c.38426d8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2257.7425804138184,
+        "y": 501.4285888671875,
+        "z": "d029d2a.974963",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "62744ec2.dbf8",
+        "type": "update",
+        "name": "update AAI allotted-resource",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-data.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"operational-status\" value=\"in-service-path\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 515.0000152587891,
+        "y": 746.6666326522827,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "5211695c.bb63d8",
+                "6077137b.90cddc"
+            ]
+        ]
+    },
+    {
+        "id": "5211695c.bb63d8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 770.7619094848633,
+        "y": 729.6191296577454,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "fa37c9f8.eb9288"
+            ]
+        ]
+    },
+    {
+        "id": "fa37c9f8.eb9288",
+        "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=\"AAI failed\" />\n",
+        "comments": "",
+        "x": 937.2857894897461,
+        "y": 741.2382006645203,
+        "z": "d029d2a.974963",
+        "wires": []
+    },
+    {
+        "id": "6077137b.90cddc",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 777.8571968078613,
+        "y": 762.381097316742,
+        "z": "d029d2a.974963",
+        "wires": [
+            [
+                "fa37c9f8.eb9288"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-assign.json
new file mode 100755
index 0000000..740e7ed
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-assign.json
@@ -0,0 +1,1593 @@
+[
+    {
+        "id": "3aa7dd53.c23282",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 113.75662612915039,
+        "y": 48.518513679504395,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "d95c10eb.dc1d4"
+            ]
+        ]
+    },
+    {
+        "id": "d95c10eb.dc1d4",
+        "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": 209.9947052001953,
+        "y": 109.47090435028076,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "9ec57dff.79a3e"
+            ]
+        ]
+    },
+    {
+        "id": "9ec57dff.79a3e",
+        "type": "method",
+        "name": "security-zone-topology-operation-assign",
+        "xml": "<method rpc='security-zone-topology-operation-assign' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 255.91148376464844,
+        "y": 144.70895957946777,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "b469237.21f31e"
+            ]
+        ]
+    },
+    {
+        "id": "b469237.21f31e",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 164.23281860351562,
+        "y": 288.0423016548157,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "da8bc6b3.f36008",
+                "dd46184f.c5ad68",
+                "19bd4a95.82d635",
+                "7ff7d11f.c2ff8",
+                "5082e4fd.fb398c",
+                "44a8ff0c.4ea4",
+                "3f7399d.1a38166",
+                "df2b47bc.dad938",
+                "29f6546e.b6ab2c",
+                "cd2238ce.a361f8",
+                "f37960af.a307",
+                "676f8458.1ceddc",
+                "41c3e1d7.688b9",
+                "bf0c5aa1.d23018",
+                "bb728435.7fabc8",
+                "db115202.e2393",
+                "773fe048.c730b",
+                "995418ca.5fe778",
+                "422fade5.4f8814",
+                "83f71044.bcea7",
+                "4f2b0053.cbdf5",
+                "14e2f5f2.92d2fa",
+                "121f5121.c5ff2f",
+                "a4891e73.c917",
+                "a62f34b1.dd5738",
+                "87ceb4de.ec7128",
+                "c025c3c9.338f6"
+            ]
+        ]
+    },
+    {
+        "id": "dd46184f.c5ad68",
+        "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": 380.75672149658203,
+        "y": 2301.73295211792,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "da8bc6b3.f36008",
+        "type": "set",
+        "name": "set output to api handler",
+        "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='security-zone-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $security-zone-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+        "comments": "",
+        "x": 409.51063537597656,
+        "y": 2265.855498313904,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "a62f34b1.dd5738",
+        "type": "set",
+        "name": "set allotted-resource-oper-status",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingCreate' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+        "comments": "",
+        "x": 469.0821876525879,
+        "y": 1642.569899559021,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "7ff7d11f.c2ff8",
+        "type": "set",
+        "name": "set tmp.ar.self-link",
+        "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/security-zone-topology/'` \" />\n\n",
+        "comments": "",
+        "x": 426.49468994140625,
+        "y": 261.85183906555176,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "19bd4a95.82d635",
+        "type": "set",
+        "name": "set tmp.ar.allotted-resource-id,etc",
+        "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />\n\n\n",
+        "comments": "",
+        "x": 473.7539520263672,
+        "y": 228.11110496520996,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "5082e4fd.fb398c",
+        "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": 432.7500457763672,
+        "y": 297.75003814697266,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3f7399d.1a38166",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 513.2753753662109,
+        "y": 520.9779777526855,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "5afe88e8.32e0a8",
+                "4a737d1.caa4e84"
+            ]
+        ]
+    },
+    {
+        "id": "44a8ff0c.4ea4",
+        "type": "execute",
+        "name": "generate allotted-resource url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.sz-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 460.8214797973633,
+        "y": 357.5357427597046,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5afe88e8.32e0a8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 758.5715179443359,
+        "y": 523.7857661247253,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "b6853767.ffe678"
+            ]
+        ]
+    },
+    {
+        "id": "14e2f5f2.92d2fa",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 487.61922454833984,
+        "y": 1847.2859721183777,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "975af54b.31fe88",
+                "615e377.16035c8",
+                "3777cc93.f26b94"
+            ]
+        ]
+    },
+    {
+        "id": "975af54b.31fe88",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 756.2606010437012,
+        "y": 1898.6173838600516,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "a456aa59.071ed8"
+            ]
+        ]
+    },
+    {
+        "id": "615e377.16035c8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 747.2606506347656,
+        "y": 1867.1174096092582,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "a456aa59.071ed8"
+            ]
+        ]
+    },
+    {
+        "id": "3777cc93.f26b94",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 751.0106887817383,
+        "y": 1837.4745144844055,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "4593956d.d1f3ec"
+            ]
+        ]
+    },
+    {
+        "id": "a456aa59.071ed8",
+        "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 updating md-sal for security-zone-allotted-resource\" />\n",
+        "comments": "",
+        "x": 917.0106887817383,
+        "y": 1867.867433451116,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "b6853767.ffe678",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 939.5714721679688,
+        "y": 524.2857155799866,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "f8ae24aa.f00bb8",
+                "a0673b92.f4f7c8"
+            ]
+        ]
+    },
+    {
+        "id": "f8ae24aa.f00bb8",
+        "type": "switchNode",
+        "name": "switch sz length",
+        "xml": "<switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1185.4287185668945,
+        "y": 558.571478843689,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "b691cae6.eefd08"
+            ]
+        ]
+    },
+    {
+        "id": "b691cae6.eefd08",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1376.4287223815918,
+        "y": 558.5714764595032,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "c71c7fc0.fb074"
+            ]
+        ]
+    },
+    {
+        "id": "9e2ca7ca.004578",
+        "type": "set",
+        "name": "set sz-ar from get",
+        "xml": "<set>\n<parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />\n",
+        "comments": "",
+        "x": 1770.286018371582,
+        "y": 493.14292335510254,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "c71c7fc0.fb074",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic='true'>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1563.2858505249023,
+        "y": 527.1428961753845,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "9e2ca7ca.004578",
+                "577032f2.5c728c",
+                "f6f446f7.eb6e38"
+            ]
+        ]
+    },
+    {
+        "id": "577032f2.5c728c",
+        "type": "set",
+        "name": "set oper-status",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
+        "comments": "",
+        "x": 1770.286018371582,
+        "y": 572.5714111328125,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "b73d4268.63b59",
+        "type": "comment",
+        "name": "Save consumed-allotted-resources to mdsal",
+        "info": "",
+        "comments": "",
+        "x": 491.0000915527344,
+        "y": 1490.238136291504,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "9c87c693.6b7aa8",
+        "type": "comment",
+        "name": "GET security-zone-allotted-resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 526.5714416503906,
+        "y": 488.28570652008057,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "f6f446f7.eb6e38",
+        "type": "switchNode",
+        "name": "switch order-status",
+        "xml": "<switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1778.2858810424805,
+        "y": 526.1428985595703,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "1ba18b9c.c66c64",
+                "e561c273.b01c"
+            ]
+        ]
+    },
+    {
+        "id": "1ba18b9c.c66c64",
+        "type": "outcome",
+        "name": "outcome Created",
+        "xml": "<outcome value='Created'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1989.8858375549316,
+        "y": 487.1428985595703,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "ace0f78a.8c4198"
+            ]
+        ]
+    },
+    {
+        "id": "e561c273.b01c",
+        "type": "outcome",
+        "name": "outcome PendingDelete",
+        "xml": "<outcome value='PendingDelete'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2015.600212097168,
+        "y": 522.5714893341064,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "ace0f78a.8c4198"
+            ]
+        ]
+    },
+    {
+        "id": "ace0f78a.8c4198",
+        "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\" \n    value=\"`'Existing security-zone-allotted-resource with order status of ' + $sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`\" />\n",
+        "comments": "",
+        "x": 2277.885810852051,
+        "y": 495.14288544654846,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "df2b47bc.dad938",
+        "type": "set",
+        "name": "set sz-ar-identifiers",
+        "xml": "<set>\n<parameter name='sz-ar-identifiers.consuming-service-instance-id' value=\"`$security-zone-topology-operation-input.service-information.service-instance-id` \" />\n<parameter name='sz-ar-identifiers.parent-service-instance-id' value=\"`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n<parameter name='sz-ar-identifiers.allotted-resource-type' value=\"`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-type` \" />\n<parameter name='sz-ar-identifiers.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n\n",
+        "comments": "",
+        "x": 437.1429138183594,
+        "y": 677.1428809165955,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "c09b6648.7720b8",
+        "type": "comment",
+        "name": "Set allotted-resource-identifiers",
+        "info": "",
+        "comments": "",
+        "x": 478.0952682495117,
+        "y": 622.8571615219116,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "29f6546e.b6ab2c",
+        "type": "set",
+        "name": "set identifiers in overal structure",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.security-zone-topology.allotted-resource-identifiers.' \nvalue=\"`$sz-ar-identifiers.`\" />\n\n\n",
+        "comments": "",
+        "x": 474.1428756713867,
+        "y": 951.428858757019,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "cd2238ce.a361f8",
+        "type": "set",
+        "name": "set ecomp model information from input",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.' \nvalue=\"`$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.`\" />\n\n\n",
+        "comments": "",
+        "x": 505.7143325805664,
+        "y": 711.4285831451416,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "f37960af.a307",
+        "type": "switchNode",
+        "name": "switch model-invariant-uuid is null",
+        "xml": "<switch test='$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 488.5714416503906,
+        "y": 745.714301109314,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "cdaca375.86687"
+            ]
+        ]
+    },
+    {
+        "id": "cdaca375.86687",
+        "type": "outcome",
+        "name": "outcome null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 715.7143211364746,
+        "y": 747.1428184509277,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "ca95e15f.7a282"
+            ]
+        ]
+    },
+    {
+        "id": "ca95e15f.7a282",
+        "type": "set",
+        "name": "set model-invariant-uuid",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.model-invariant-uuid' \nvalue=\"`$ar-model.invariant-uuid`\" />\n\n\n",
+        "comments": "",
+        "x": 917.142894744873,
+        "y": 746.5713710784912,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "676f8458.1ceddc",
+        "type": "switchNode",
+        "name": "switch model-uuid is null",
+        "xml": "<switch test='$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 460.00003814697266,
+        "y": 780.0000019073486,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "c051003f.4d255"
+            ]
+        ]
+    },
+    {
+        "id": "c051003f.4d255",
+        "type": "outcome",
+        "name": "outcome null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 661.4286041259766,
+        "y": 780.5714235305786,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "17a9ad79.daf043"
+            ]
+        ]
+    },
+    {
+        "id": "17a9ad79.daf043",
+        "type": "set",
+        "name": "set model-uuid",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.model-uuid' \nvalue=\"`$ar-model.uuid`\" />\n\n\n",
+        "comments": "",
+        "x": 854.2857627868652,
+        "y": 780.5713453292847,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "41c3e1d7.688b9",
+        "type": "switchNode",
+        "name": "switch model-version is null",
+        "xml": "<switch test='$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-version'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 468.5714416503906,
+        "y": 812.8571290969849,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "834cdb5d.a611a8"
+            ]
+        ]
+    },
+    {
+        "id": "834cdb5d.a611a8",
+        "type": "outcome",
+        "name": "outcome null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 718.5714225769043,
+        "y": 812.8571138381958,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "6df03ba1.da4d84"
+            ]
+        ]
+    },
+    {
+        "id": "6df03ba1.da4d84",
+        "type": "set",
+        "name": "set model-version",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.model-version' \nvalue=\"`$ar-model.version`\" />\n\n\n",
+        "comments": "",
+        "x": 911.428581237793,
+        "y": 812.8570356369019,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "bf0c5aa1.d23018",
+        "type": "switchNode",
+        "name": "switch ar-model.ecomp-generated-naming",
+        "xml": "<switch test='`$ar-model.ecomp-generated-naming`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 507.1428413391113,
+        "y": 914.2858047485352,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "8263bea9.21776",
+                "31dce175.8172ce"
+            ]
+        ]
+    },
+    {
+        "id": "8263bea9.21776",
+        "type": "other",
+        "name": "outcome Y",
+        "xml": "<outcome value='Y'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 857.1429061889648,
+        "y": 913.7143549919128,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "6d3862a4.def2cc"
+            ]
+        ]
+    },
+    {
+        "id": "6d3862a4.def2cc",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1025.8929481506348,
+        "y": 914.214343547821,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "340cfc26.1a1d64"
+            ]
+        ]
+    },
+    {
+        "id": "31dce175.8172ce",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 848.3651962280273,
+        "y": 946.7143549919128,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "79411f72.37cc4"
+            ]
+        ]
+    },
+    {
+        "id": "79411f72.37cc4",
+        "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 in allotted-resource-model data.  Ecomp-generated-naming should be true\" />\n\n",
+        "comments": "",
+        "x": 1026.3651962280273,
+        "y": 945.7143549919128,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "340cfc26.1a1d64",
+        "type": "switchNode",
+        "name": "switch ar-model.ecomp-generated-naming",
+        "xml": "<switch test='`$ar-model.naming-policy`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1327.1428527832031,
+        "y": 914.2858171463013,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "c60923e3.e3226",
+                "5fb6c973.79b708"
+            ]
+        ]
+    },
+    {
+        "id": "c60923e3.e3226",
+        "type": "other",
+        "name": "outcome oam_security_zone_name",
+        "xml": "<outcome value='oam_security_zone_name'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1668.000617980957,
+        "y": 914.8638672828674,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "64919905.bc8708"
+            ]
+        ]
+    },
+    {
+        "id": "5fb6c973.79b708",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1579.4285507202148,
+        "y": 945.714367389679,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "64919905.bc8708"
+            ]
+        ]
+    },
+    {
+        "id": "47d880dc.e5c98",
+        "type": "set",
+        "name": "set ar_name",
+        "xml": "<set>\n<parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />\n",
+        "comments": "",
+        "x": 2108.8573417663574,
+        "y": 914.2857584953308,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "e616a9fb.2ba0a8",
+        "type": "execute",
+        "name": "execute SliStringUtils - replace TenantOAMNetworkRole",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ar-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-name\"/>\n    <parameter name=\"target\" value=\"$TenantOAMNetworkRole\"/>\n    <parameter name=\"replacement\" value=\"`$security-zone-topology-operation-input.security-zone-request-input.untrusted-network-role`\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2246.0004119873047,
+        "y": 947.1429333686829,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c3a0064f.e2bfc8",
+        "type": "execute",
+        "name": "execute SliStringUtils - replace LandingNetworkRole",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ar-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-name\"/>\n    <parameter name=\"target\" value=\"$LandingNetworkRole\"/>\n    <parameter name=\"replacement\" value=\"`$security-zone-topology-operation-input.security-zone-request-input.trusted-network-role`\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2229.0004272460938,
+        "y": 979.2858099937439,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "64919905.bc8708",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic='true'>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1910.2858276367188,
+        "y": 942.8572659492493,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "47d880dc.e5c98",
+                "e616a9fb.2ba0a8",
+                "c3a0064f.e2bfc8",
+                "3ea93d43.94b532"
+            ]
+        ]
+    },
+    {
+        "id": "3ea93d43.94b532",
+        "type": "set",
+        "name": "set identifiers.allotted-resource-name",
+        "xml": "<set>\n<parameter name='sz-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />\n",
+        "comments": "",
+        "x": 2178.8573150634766,
+        "y": 1008.571485042572,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "db115202.e2393",
+        "type": "set",
+        "name": "set assignments in overal structure",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.security-zone-topology.security-zone-assignments.' \nvalue=\"`$sz-ar-assignments.`\" />\n\n\n",
+        "comments": "",
+        "x": 482.61910247802734,
+        "y": 1117.1431503295898,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "bb728435.7fabc8",
+        "type": "set",
+        "name": "set sz-ar-assignments",
+        "xml": "<set>\n<parameter name='sz-ar-assignments.vlan-tag' value=\"`$security-zone-topology-operation-input.security-zone-request-input.vlan-tag` \" />\n<parameter name='sz-ar-assignments.trusted-network-role' value=\"`$security-zone-topology-operation-input.security-zone-request-input.trusted-network-role` \" />\n<parameter name='sz-ar-assignments.untrusted-network-role' value=\"`$security-zone-topology-operation-input.security-zone-request-input.untrusted-network-role` \" />\n<parameter name='sz-ar-assignments.security-zone-service-instance-id' value=\"`$tmp.ar.parent-service-instance-id` \" />\n\n",
+        "comments": "",
+        "x": 444.28570556640625,
+        "y": 988.5715227127075,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "cae22b42.18c468",
+        "type": "for",
+        "name": "for cidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]",
+        "xml": "<for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1360.572135925293,
+        "y": 1564.8096537590027,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "7553ad4e.ad7d94"
+            ]
+        ]
+    },
+    {
+        "id": "773fe048.c730b",
+        "type": "switchNode",
+        "name": "switch service-data.consumed-allotted-resources_length",
+        "xml": "<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 534.5714721679688,
+        "y": 1524.5236463546753,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "38c33f23.a99c8",
+                "61a487f.6f30978"
+            ]
+        ]
+    },
+    {
+        "id": "38c33f23.a99c8",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 840.7143859863281,
+        "y": 1529.3809938430786,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "3413dfa5.ea0b8"
+            ]
+        ]
+    },
+    {
+        "id": "61a487f.6f30978",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 820.7143859863281,
+        "y": 1564.3809938430786,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "a9ef602f.19524"
+            ]
+        ]
+    },
+    {
+        "id": "7553ad4e.ad7d94",
+        "type": "switchNode",
+        "name": "switch allotted-resource-id",
+        "xml": "<switch test=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1812.6673278808594,
+        "y": 1562.869366645813,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "2bfef68b.19fdca"
+            ]
+        ]
+    },
+    {
+        "id": "2bfef68b.19fdca",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2004.4769649505615,
+        "y": 1562.3335065841675,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "2e1ed2f6.15d1fe"
+            ]
+        ]
+    },
+    {
+        "id": "a9ef602f.19524",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 974.8415298461914,
+        "y": 1564.5069856643677,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "cae22b42.18c468",
+                "91a87775.758588"
+            ]
+        ]
+    },
+    {
+        "id": "2e1ed2f6.15d1fe",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2160.238296508789,
+        "y": 1562.1907081604004,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "e679b033.de33f",
+                "4d5ec78f.74ab88"
+            ]
+        ]
+    },
+    {
+        "id": "3413dfa5.ea0b8",
+        "type": "set",
+        "name": "set cidx",
+        "xml": "<set>\n<parameter name='tmp.cidx' value=\"`0`\" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value=\"1\" />\n\n\n",
+        "comments": "",
+        "x": 999.5713996887207,
+        "y": 1529.0952253341675,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "e679b033.de33f",
+        "type": "set",
+        "name": "set tmp.cidx and ctx.consumed-ar",
+        "xml": "<set>\n<parameter name='tmp.cidx' value='`$cidx`' />\n<parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />\n<parameter name='tmp.found-cidx' value='true' />",
+        "comments": "",
+        "x": 2406.0957565307617,
+        "y": 1556.7621870040894,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "995418ca.5fe778",
+        "type": "set",
+        "name": "set consumed allotted resources",
+        "xml": "<set>\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value=\"`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-type` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value=\"`$tmp.ar.self-link` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />\n\n",
+        "comments": "",
+        "x": 462.42862701416016,
+        "y": 1565.0951986312866,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "59610fb0.0a244",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT SZ VNF Provided Allotted Resource",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vnf-p-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-prov-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 575.9049606323242,
+        "y": 2049.0955414772034,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "ae04f7b.eed3208",
+                "5027b5f7.e37cbc"
+            ]
+        ]
+    },
+    {
+        "id": "a0673b92.f4f7c8",
+        "type": "set",
+        "name": "save backup copy of mdsal-ar for rollback",
+        "xml": "<set>\n<parameter name='bk-sz-ar' value='$mdsal-ar.' />\n",
+        "comments": "",
+        "x": 1265.143051147461,
+        "y": 524.2858076095581,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "422fade5.4f8814",
+        "type": "execute",
+        "name": "generate vnf provided ar url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vnf-provided-allottedresource`\" />\n    <parameter name=\"outputPath\" value=\"tmp.vnf-p-ar-url\" />\n    <parameter name=\"target\" value=\"{service-instance-id}\" />\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 452.8571472167969,
+        "y": 388.57141876220703,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "83f71044.bcea7",
+        "type": "execute",
+        "name": "execute SliStringUtils",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.vnf-p-ar-url`\" />\n    <parameter name=\"outputPath\" value=\"tmp.vnf-p-ar-url\" />\n    <parameter name=\"target\" value=\"{vnf-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.sz-vnf-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 443.1428985595703,
+        "y": 419.99999809265137,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ec9be6aa.494588",
+        "type": "comment",
+        "name": "Create urls for restapi",
+        "info": "",
+        "comments": "",
+        "x": 431.7142868041992,
+        "y": 327.1428699493408,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "ae04f7b.eed3208",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 934.4763298034668,
+        "y": 2049.666941165924,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "f9fdf5f9.8e4668"
+            ]
+        ]
+    },
+    {
+        "id": "f9fdf5f9.8e4668",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1144.047706604004,
+        "y": 2048.738305568695,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "3eccb358.12c2dc",
+                "968252db.ccc84"
+            ]
+        ]
+    },
+    {
+        "id": "3eccb358.12c2dc",
+        "type": "switchNode",
+        "name": "switch sz length",
+        "xml": "<switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1389.9049530029297,
+        "y": 2083.0240688323975,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "452ba5e6.956fcc"
+            ]
+        ]
+    },
+    {
+        "id": "452ba5e6.956fcc",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1580.904956817627,
+        "y": 2083.0240664482117,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "968252db.ccc84",
+        "type": "set",
+        "name": "save backup copy of mdsal-ar for rollback",
+        "xml": "<set>\n<parameter name='bk-sz-ar' value='$mdsal-ar.' />\n",
+        "comments": "",
+        "x": 1469.619285583496,
+        "y": 2048.7383975982666,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "5027b5f7.e37cbc",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 933.047721862793,
+        "y": 2139.6668133735657,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "ce01090.f9b9af8"
+            ]
+        ]
+    },
+    {
+        "id": "f1ea7873.944388",
+        "type": "comment",
+        "name": "Need to rollback?",
+        "info": "",
+        "comments": "",
+        "x": 935.9049758911133,
+        "y": 2088.238205432892,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "e06b36.87ea84c8",
+        "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 updating md-sal for security-zone-allotted-resource\" />\n",
+        "comments": "",
+        "x": 1310.1905517578125,
+        "y": 2181.0956473350525,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "eeb0dfbd.307f7",
+        "type": "execute",
+        "name": "execute RestApiCallNode - DELETE AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1411.6191864013672,
+        "y": 2142.5242981910706,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ce01090.f9b9af8",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1107.3334274291992,
+        "y": 2142.523895740509,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "eeb0dfbd.307f7",
+                "e06b36.87ea84c8"
+            ]
+        ]
+    },
+    {
+        "id": "bde153f5.6a65",
+        "type": "comment",
+        "name": "Generate Security zone Panorama names",
+        "info": "",
+        "comments": "",
+        "x": 494.8095932006836,
+        "y": 1016.1907386779785,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "4f2b0053.cbdf5",
+        "type": "set",
+        "name": "set sz-ar-assignments",
+        "xml": "<set>\n<parameter name='sz-ar-assignments.security-zone-name-untrusted' value=\"`$tmp.untrust-sz` \" />\n<parameter name='sz-ar-assignments.security-zone-name-trusted' value=\"`$tmp.trust-sz` \" />\n\n\n",
+        "comments": "",
+        "x": 444.0953140258789,
+        "y": 1080.7148094177246,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "c28eabf9.0410c8",
+        "type": "execute",
+        "name": "execute SliStringUtils",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.vnf-p-ar-url`\" />\n    <parameter name=\"outputPath\" value=\"tmp.vnf-p-ar-url\" />\n    <parameter name=\"target\" value=\"{vnf-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.sz-vnf-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 444.28570556640625,
+        "y": 451.4285583496094,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "121f5121.c5ff2f",
+        "type": "call",
+        "name": "call generate-panorama-name",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='generate-panorama-name' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 465.00001525878906,
+        "y": 1046.66672706604,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4593956d.d1f3ec",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 892.6666564941406,
+        "y": 1833.6666836738586,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "297e2310.b99eec"
+            ]
+        ]
+    },
+    {
+        "id": "a64508aa.c4e898",
+        "type": "comment",
+        "name": "Add SZ AR to mdsal",
+        "info": "",
+        "comments": "",
+        "x": 416.9048080444336,
+        "y": 1808.3808569908142,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "a4891e73.c917",
+        "type": "execute",
+        "name": "execute getTime",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 424.66665840148926,
+        "y": 1602.3333406448364,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4a737d1.caa4e84",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 758.3333129882812,
+        "y": 559.9999389648438,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "f20f59c0.b02038"
+            ]
+        ]
+    },
+    {
+        "id": "f20f59c0.b02038",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 938.3332633972168,
+        "y": 560.6664896011353,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "87ceb4de.ec7128",
+        "type": "set",
+        "name": "set id",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='sz-ar.allotted-resource-status.action' value=\"`$security-zone-topology-operation-input.request-information.request-action` \" />\n<parameter name='sz-ar.allotted-resource-status.rpc-name' value=\"security-zone-topology-operation\" />\n<parameter name='sz-ar.allotted-resource-status.rpc-action' value=\"`$security-zone-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$security-zone-topology-operation-input.request-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$security-zone-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$security-zone-topology-operation-input.service-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$security-zone-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value=\"`$security-zone-topology-operation-input.security-zone-request-input.` \" />",
+        "comments": "",
+        "x": 405.000057220459,
+        "y": 585.9523229598999,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "c025c3c9.338f6",
+        "type": "update",
+        "name": "update AAI allotted-resource",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-data.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"description\" value=\"`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-type`\" />\n\t<parameter name=\"selflink\" value=\"`$tmp.ar.self-link`\" />\n\t<parameter name=\"model-invariant-id\" value=\"`$ar-model.invariant-uuid`\" />\n\t<parameter name=\"model-version-id\" value=\"`$ar-model.uuid`\" />\n\t<parameter name=\"operational-status\" value=\"null\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 446.66668701171875,
+        "y": 1730.238124847412,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "78f280c9.aa658",
+                "3206f266.94f28e"
+            ]
+        ]
+    },
+    {
+        "id": "78f280c9.aa658",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 702.428596496582,
+        "y": 1713.190628528595,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "e21aa9c5.4ebb08"
+            ]
+        ]
+    },
+    {
+        "id": "e21aa9c5.4ebb08",
+        "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=\"AAI failed\" />\n",
+        "comments": "",
+        "x": 868.9524765014648,
+        "y": 1724.8096995353699,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "3206f266.94f28e",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 709.5238838195801,
+        "y": 1745.9525961875916,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "e21aa9c5.4ebb08"
+            ]
+        ]
+    },
+    {
+        "id": "91a87775.758588",
+        "type": "switchNode",
+        "name": "switch tmp.found-cidx",
+        "xml": "<switch test='`$tmp.found-cidx`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1177.999984741211,
+        "y": 1596.0000410079956,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "f9327230.fb919"
+            ]
+        ]
+    },
+    {
+        "id": "f9327230.fb919",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1367.9999389648438,
+        "y": 1595.9999780654907,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "fde4a6ad.8b8798"
+            ]
+        ]
+    },
+    {
+        "id": "fde4a6ad.8b8798",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1533.9999389648438,
+        "y": 1595.9999780654907,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "f243be1.0d9664"
+            ]
+        ]
+    },
+    {
+        "id": "f243be1.0d9664",
+        "type": "set",
+        "name": "set tmp.cidx ",
+        "xml": "<set>\n<parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />\n",
+        "comments": "",
+        "x": 1779.8572673797607,
+        "y": 1596.571452140808,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "4d5ec78f.74ab88",
+        "type": "break",
+        "name": "break",
+        "xml": "<break>\n",
+        "comments": "",
+        "x": 2324.000057220459,
+        "y": 1588.0000791549683,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "297e2310.b99eec",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Update parent provided service AR",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"parent\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1243.708797454834,
+        "y": 1833.3755688667297,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "90eb7941.4e6d28",
+                "529b5fcc.fe782",
+                "5dd2303d.8c34d"
+            ]
+        ]
+    },
+    {
+        "id": "c07fd6c.a7d3c28",
+        "type": "comment",
+        "name": "Rollback parent",
+        "info": "",
+        "comments": "",
+        "x": 1087.708724975586,
+        "y": 1803.0421993732452,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    },
+    {
+        "id": "90eb7941.4e6d28",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1615.016845703125,
+        "y": 1894.040535211563,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "f889d017.68c21"
+            ]
+        ]
+    },
+    {
+        "id": "529b5fcc.fe782",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1606.0168952941895,
+        "y": 1862.5405609607697,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "f889d017.68c21"
+            ]
+        ]
+    },
+    {
+        "id": "5dd2303d.8c34d",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1609.766933441162,
+        "y": 1832.897665835917,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            [
+                "f889d017.68c21"
+            ]
+        ]
+    },
+    {
+        "id": "f889d017.68c21",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1751.4229011535645,
+        "y": 1829.0898350253701,
+        "z": "d9f8bc54.6ca48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d41e8d9f.684df",
+        "type": "comment",
+        "name": "Generate naming",
+        "info": "",
+        "comments": "",
+        "x": 438.00001525878906,
+        "y": 876.0000257492065,
+        "z": "d9f8bc54.6ca48",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-create.json
new file mode 100755
index 0000000..e11de44
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-create.json
@@ -0,0 +1,551 @@
+[
+    {
+        "id": "b6f76cf0.bed9d",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 295,
+        "y": 190,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "ff3a2e96.20279"
+            ]
+        ]
+    },
+    {
+        "id": "ff3a2e96.20279",
+        "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": 391.2380790710449,
+        "y": 250.95239067077637,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "b753df27.1ee1e"
+            ]
+        ]
+    },
+    {
+        "id": "b753df27.1ee1e",
+        "type": "method",
+        "name": "security-zone-topology-operation-create",
+        "xml": "<method rpc='security-zone-topology-operation-create' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 437.15485763549805,
+        "y": 286.1904458999634,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "3d5f9815.bb72d8"
+            ]
+        ]
+    },
+    {
+        "id": "3d5f9815.bb72d8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 345.47619247436523,
+        "y": 429.5237879753113,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "bd924d4b.6ac3d",
+                "58426f57.d9671",
+                "87dd9628.4b8e08",
+                "24e1c2bf.f38e3e",
+                "56c65e21.0c536",
+                "42ea3bdc.05eb14",
+                "ad98be46.853ca",
+                "9549d5d.4d0ae28",
+                "7db0224a.ddf40c",
+                "c1426d52.6c3f3",
+                "8fad2375.b2e97"
+            ]
+        ]
+    },
+    {
+        "id": "58426f57.d9671",
+        "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": 612.0001106262207,
+        "y": 1099.2145080566406,
+        "z": "1afa105.0a3f0f",
+        "wires": []
+    },
+    {
+        "id": "bd924d4b.6ac3d",
+        "type": "set",
+        "name": "set output to api handler",
+        "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='security-zone-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $security-zone-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+        "comments": "",
+        "x": 640.7540245056152,
+        "y": 1063.3370542526245,
+        "z": "1afa105.0a3f0f",
+        "wires": []
+    },
+    {
+        "id": "c1426d52.6c3f3",
+        "type": "set",
+        "name": "set allotted-resource-oper-status",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+        "comments": "",
+        "x": 651.7542190551758,
+        "y": 810.0514001846313,
+        "z": "1afa105.0a3f0f",
+        "wires": []
+    },
+    {
+        "id": "24e1c2bf.f38e3e",
+        "type": "set",
+        "name": "set tmp.ar.self-link",
+        "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/security-zone-topology/'` \" />\n\n",
+        "comments": "",
+        "x": 607.7380638122559,
+        "y": 403.33332538604736,
+        "z": "1afa105.0a3f0f",
+        "wires": []
+    },
+    {
+        "id": "87dd9628.4b8e08",
+        "type": "set",
+        "name": "set tmp.ar.allotted-resource-id,etc",
+        "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />\n\n\n",
+        "comments": "",
+        "x": 654.9973258972168,
+        "y": 369.59259128570557,
+        "z": "1afa105.0a3f0f",
+        "wires": []
+    },
+    {
+        "id": "56c65e21.0c536",
+        "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": 613.9934196472168,
+        "y": 439.23152446746826,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ad98be46.853ca",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 676.5187530517578,
+        "y": 600.4594917297363,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "26a7a122.8ca35e",
+                "eef0e4d0.faeba8"
+            ]
+        ]
+    },
+    {
+        "id": "42ea3bdc.05eb14",
+        "type": "execute",
+        "name": "generate allotted-resource url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.sz-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 642.0648536682129,
+        "y": 499.0172290802002,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "26a7a122.8ca35e",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 933.8148918151855,
+        "y": 599.2672522068024,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "ba2d298f.ee9da8"
+            ]
+        ]
+    },
+    {
+        "id": "9549d5d.4d0ae28",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 684.5293121337891,
+        "y": 953.4341316223145,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "c81ee454.030d28",
+                "6308f6ba.6c5ee8",
+                "f6e148d1.5bbbc8"
+            ]
+        ]
+    },
+    {
+        "id": "c81ee454.030d28",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 954.837329864502,
+        "y": 1006.432332418859,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "a2f954df.7d6a08"
+            ]
+        ]
+    },
+    {
+        "id": "6308f6ba.6c5ee8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 945.8373794555664,
+        "y": 974.9323581680655,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "a2f954df.7d6a08"
+            ]
+        ]
+    },
+    {
+        "id": "f6e148d1.5bbbc8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 949.5874176025391,
+        "y": 945.2894630432129,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "956bdde7.54a34"
+            ]
+        ]
+    },
+    {
+        "id": "a2f954df.7d6a08",
+        "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 updating md-sal for security-zone-allotted-resource\" />\n",
+        "comments": "",
+        "x": 1115.587417602539,
+        "y": 975.6823820099235,
+        "z": "1afa105.0a3f0f",
+        "wires": []
+    },
+    {
+        "id": "ba2d298f.ee9da8",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1114.8148460388184,
+        "y": 599.7672016620636,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "f6b8a443.ce37c8",
+                "7f9a9607.9deb78"
+            ]
+        ]
+    },
+    {
+        "id": "f6b8a443.ce37c8",
+        "type": "switchNode",
+        "name": "switch sz length",
+        "xml": "<switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1360.6720924377441,
+        "y": 634.052964925766,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "c19598d2.19bd88"
+            ]
+        ]
+    },
+    {
+        "id": "c19598d2.19bd88",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1551.6720962524414,
+        "y": 634.0529625415802,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "852776b8.720618"
+            ]
+        ]
+    },
+    {
+        "id": "20c1fba5.738554",
+        "type": "set",
+        "name": "set sz-ar from get",
+        "xml": "<set>\n<parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />\n",
+        "comments": "",
+        "x": 1951.5292320251465,
+        "y": 634.6243867874146,
+        "z": "1afa105.0a3f0f",
+        "wires": []
+    },
+    {
+        "id": "852776b8.720618",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic='true'>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1722.5290794372559,
+        "y": 634.6244316101074,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "20c1fba5.738554",
+                "37c4ecf.ab37e14",
+                "b8ed9202.62a45"
+            ]
+        ]
+    },
+    {
+        "id": "37c4ecf.ab37e14",
+        "type": "set",
+        "name": "set oper-status",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
+        "comments": "",
+        "x": 1949.5294761657715,
+        "y": 702.0529508590698,
+        "z": "1afa105.0a3f0f",
+        "wires": []
+    },
+    {
+        "id": "a2659467.3372c8",
+        "type": "comment",
+        "name": "GET security-zone-allotted-resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 701.8148155212402,
+        "y": 563.7671926021576,
+        "z": "1afa105.0a3f0f",
+        "wires": []
+    },
+    {
+        "id": "b8ed9202.62a45",
+        "type": "switchNode",
+        "name": "switch order-status",
+        "xml": "<switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1959.52925491333,
+        "y": 667.6243848800659,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "994a7d02.f776",
+                "c6432d89.74604"
+            ]
+        ]
+    },
+    {
+        "id": "994a7d02.f776",
+        "type": "outcome",
+        "name": "outcome PendingCreate",
+        "xml": "<outcome value='PendingCreate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2171.1292114257812,
+        "y": 628.6243848800659,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "edf3836c.7ac5a"
+            ]
+        ]
+    },
+    {
+        "id": "c6432d89.74604",
+        "type": "outcome",
+        "name": "outcome Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2196.8435859680176,
+        "y": 664.052975654602,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "edf3836c.7ac5a"
+            ]
+        ]
+    },
+    {
+        "id": "242cf515.aebfea",
+        "type": "comment",
+        "name": "Set allotted-resource-identifiers",
+        "info": "",
+        "comments": "",
+        "x": 657.3386383056641,
+        "y": 654.3386459350586,
+        "z": "1afa105.0a3f0f",
+        "wires": []
+    },
+    {
+        "id": "7f9a9607.9deb78",
+        "type": "set",
+        "name": "save backup copy of mdsal-ar for rollback",
+        "xml": "<set>\n<parameter name='bk-sz-ar' value='$mdsal-ar.' />\n",
+        "comments": "",
+        "x": 1440.3864250183105,
+        "y": 599.7672936916351,
+        "z": "1afa105.0a3f0f",
+        "wires": []
+    },
+    {
+        "id": "1ab1e0dc.601f6f",
+        "type": "comment",
+        "name": "Create urls for restapi",
+        "info": "",
+        "comments": "",
+        "x": 612.9576606750488,
+        "y": 468.6243562698364,
+        "z": "1afa105.0a3f0f",
+        "wires": []
+    },
+    {
+        "id": "956bdde7.54a34",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1091.2433853149414,
+        "y": 941.481632232666,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2ad43a51.cbb826",
+        "type": "comment",
+        "name": "TO DO: vnf/put parent",
+        "info": "",
+        "comments": "",
+        "x": 625.2433776855468,
+        "y": 875.4815540313718,
+        "z": "1afa105.0a3f0f",
+        "wires": []
+    },
+    {
+        "id": "7db0224a.ddf40c",
+        "type": "execute",
+        "name": "execute getTime",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 599.2433815002441,
+        "y": 771.4815549850464,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "eef0e4d0.faeba8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 933.5766868591309,
+        "y": 635.4814250469208,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            [
+                "c1d6759.acebc88"
+            ]
+        ]
+    },
+    {
+        "id": "c1d6759.acebc88",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1113.5766372680664,
+        "y": 636.1479756832123,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8fad2375.b2e97",
+        "type": "set",
+        "name": "set id",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='sz-ar.allotted-resource-status.action' value=\"`$security-zone-topology-operation-input.request-information.request-action` \" />\n<parameter name='sz-ar.allotted-resource-status.rpc-name' value=\"security-zone-topology-operation\" />\n<parameter name='sz-ar.allotted-resource-status.rpc-action' value=\"`$security-zone-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$security-zone-topology-operation-input.request-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$security-zone-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$security-zone-topology-operation-input.service-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$security-zone-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value=\"`$security-zone-topology-operation-input.security-zone-request-input.` \" />",
+        "comments": "",
+        "x": 582.2434234619141,
+        "y": 691.1481666564941,
+        "z": "1afa105.0a3f0f",
+        "wires": []
+    },
+    {
+        "id": "edf3836c.7ac5a",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2385.5997276306152,
+        "y": 630.0000190734863,
+        "z": "1afa105.0a3f0f",
+        "wires": [
+            []
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-deactivate.json
new file mode 100755
index 0000000..f6358bf
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-deactivate.json
@@ -0,0 +1,612 @@
+[
+    {
+        "id": "284e27db.b7e5d8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 184.2857208251953,
+        "y": 55.71428680419922,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "21dc623f.cc352e"
+            ]
+        ]
+    },
+    {
+        "id": "21dc623f.cc352e",
+        "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": 280.52379989624023,
+        "y": 116.66667747497559,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "eacf77e9.837ad8"
+            ]
+        ]
+    },
+    {
+        "id": "eacf77e9.837ad8",
+        "type": "method",
+        "name": "security-zone-topology-operation-deactivate",
+        "xml": "<method rpc='security-zone-topology-operation-deactivate' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 326.44057846069336,
+        "y": 151.9047327041626,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "509784b4.18024c"
+            ]
+        ]
+    },
+    {
+        "id": "509784b4.18024c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 234.76191329956055,
+        "y": 295.2380747795105,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "e886f0a3.d1a26",
+                "29d9b6af.98a21a",
+                "8e5a9b8c.613e38",
+                "32c0247b.626e1c",
+                "de1f88fd.80fcb8",
+                "b9651040.0d909",
+                "36f9c9aa.1518a6",
+                "91736aaa.410ef8",
+                "fe89c5c7.b078a8",
+                "5c2248b0.cff7c8",
+                "f23600d4.282d8",
+                "3eb0bb84.9332a4"
+            ]
+        ]
+    },
+    {
+        "id": "29d9b6af.98a21a",
+        "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": 501.285831451416,
+        "y": 964.9287948608398,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "e886f0a3.d1a26",
+        "type": "set",
+        "name": "set output to api handler",
+        "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='security-zone-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $security-zone-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+        "comments": "",
+        "x": 530.0397453308105,
+        "y": 929.0513410568237,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "5c2248b0.cff7c8",
+        "type": "set",
+        "name": "set allotted-resource-oper-status",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+        "comments": "",
+        "x": 541.0399627685547,
+        "y": 675.7657089233398,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "32c0247b.626e1c",
+        "type": "set",
+        "name": "set tmp.ar.self-link",
+        "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/security-zone-topology/'` \" />\n\n",
+        "comments": "",
+        "x": 497.0237846374512,
+        "y": 269.0476121902466,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "8e5a9b8c.613e38",
+        "type": "set",
+        "name": "set tmp.ar.allotted-resource-id,etc",
+        "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />\n\n\n",
+        "comments": "",
+        "x": 544.2830467224121,
+        "y": 235.30687808990479,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "de1f88fd.80fcb8",
+        "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": 503.2791404724121,
+        "y": 304.9458112716675,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "36f9c9aa.1518a6",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 565.8044738769531,
+        "y": 466.17377853393555,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "e544ca46.98ecd8",
+                "e932d850.0e3608"
+            ]
+        ]
+    },
+    {
+        "id": "b9651040.0d909",
+        "type": "execute",
+        "name": "generate allotted-resource url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.sz-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 531.3505744934082,
+        "y": 364.7315158843994,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e544ca46.98ecd8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 823.1006126403809,
+        "y": 464.9815390110016,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "4acc39b.9104dc8"
+            ]
+        ]
+    },
+    {
+        "id": "91736aaa.410ef8",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 573.8150329589844,
+        "y": 819.1484184265137,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "c7834590.fcdd68",
+                "7bc04e80.8eb95",
+                "a95d7c62.d143f"
+            ]
+        ]
+    },
+    {
+        "id": "c7834590.fcdd68",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 844.1230506896973,
+        "y": 872.1466192230582,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "7bf6e2d9.60f5ec"
+            ]
+        ]
+    },
+    {
+        "id": "7bc04e80.8eb95",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 835.1231002807617,
+        "y": 840.6466449722648,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "7bf6e2d9.60f5ec"
+            ]
+        ]
+    },
+    {
+        "id": "a95d7c62.d143f",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 838.8731384277344,
+        "y": 811.0037498474121,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "50148bc2.55e4c4"
+            ]
+        ]
+    },
+    {
+        "id": "7bf6e2d9.60f5ec",
+        "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 updating md-sal for security-zone-allotted-resource\" />\n",
+        "comments": "",
+        "x": 1004.8731384277344,
+        "y": 841.3966688141227,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "4acc39b.9104dc8",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1004.1005668640137,
+        "y": 465.4814884662628,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "524c404c.c6e87",
+                "712583b3.96568c"
+            ]
+        ]
+    },
+    {
+        "id": "524c404c.c6e87",
+        "type": "switchNode",
+        "name": "switch sz length",
+        "xml": "<switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1249.9578132629395,
+        "y": 499.7672517299652,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "3ad43779.db66e8"
+            ]
+        ]
+    },
+    {
+        "id": "3ad43779.db66e8",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1440.9578170776367,
+        "y": 499.7672493457794,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "4a46e9c4.f9d128"
+            ]
+        ]
+    },
+    {
+        "id": "a70a2794.6d9408",
+        "type": "set",
+        "name": "set sz-ar from get",
+        "xml": "<set>\n<parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />\n",
+        "comments": "",
+        "x": 1840.8149528503418,
+        "y": 500.33867359161377,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "4a46e9c4.f9d128",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic='true'>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1611.8148002624512,
+        "y": 500.33871841430664,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "a70a2794.6d9408",
+                "b61c60b8.7a4ec",
+                "66e00065.03ca4"
+            ]
+        ]
+    },
+    {
+        "id": "b61c60b8.7a4ec",
+        "type": "set",
+        "name": "set oper-status",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
+        "comments": "",
+        "x": 1838.8151969909668,
+        "y": 567.767237663269,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "ae8a5e82.01315",
+        "type": "comment",
+        "name": "GET security-zone-allotted-resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 591.1005363464355,
+        "y": 429.4814794063568,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "66e00065.03ca4",
+        "type": "switchNode",
+        "name": "switch order-status",
+        "xml": "<switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1848.8149757385254,
+        "y": 533.3386716842651,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "65fba3ae.02978c",
+                "709a0f22.b2207"
+            ]
+        ]
+    },
+    {
+        "id": "65fba3ae.02978c",
+        "type": "outcome",
+        "name": "outcome Created",
+        "xml": "<outcome value='Created'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2060.4149322509766,
+        "y": 494.33867168426514,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "389e0eec.32fdf2"
+            ]
+        ]
+    },
+    {
+        "id": "709a0f22.b2207",
+        "type": "outcome",
+        "name": "outcome Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2086.129306793213,
+        "y": 529.7672624588013,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "389e0eec.32fdf2"
+            ]
+        ]
+    },
+    {
+        "id": "c232dfd.abca22",
+        "type": "comment",
+        "name": "Set allotted-resource-identifiers",
+        "info": "",
+        "comments": "",
+        "x": 546.6243591308594,
+        "y": 520.0529327392578,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "712583b3.96568c",
+        "type": "set",
+        "name": "save backup copy of mdsal-ar for rollback",
+        "xml": "<set>\n<parameter name='bk-sz-ar' value='$mdsal-ar.' />\n",
+        "comments": "",
+        "x": 1329.6721458435059,
+        "y": 465.48158049583435,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "dd477519.74e698",
+        "type": "comment",
+        "name": "Create urls for restapi",
+        "info": "",
+        "comments": "",
+        "x": 502.24338150024414,
+        "y": 334.33864307403564,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "50148bc2.55e4c4",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 980.5291061401367,
+        "y": 807.1959190368652,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f27feeff.247c1",
+        "type": "comment",
+        "name": "TO DO: vnf/put parent",
+        "info": "",
+        "comments": "",
+        "x": 508.81481170654297,
+        "y": 712.6244564056396,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "fe89c5c7.b078a8",
+        "type": "execute",
+        "name": "execute getTime",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 488.52910232543945,
+        "y": 637.1958417892456,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e932d850.0e3608",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 822.8624076843262,
+        "y": 501.19571185112,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "44f65ab4.13daa4"
+            ]
+        ]
+    },
+    {
+        "id": "44f65ab4.13daa4",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1002.8623580932617,
+        "y": 501.8622624874115,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f23600d4.282d8",
+        "type": "set",
+        "name": "set id",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='sz-ar.allotted-resource-status.action' value=\"`$security-zone-topology-operation-input.request-information.request-action` \" />\n<parameter name='sz-ar.allotted-resource-status.rpc-name' value=\"security-zone-topology-operation\" />\n<parameter name='sz-ar.allotted-resource-status.rpc-action' value=\"`$security-zone-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$security-zone-topology-operation-input.request-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$security-zone-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$security-zone-topology-operation-input.service-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$security-zone-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value=\"`$security-zone-topology-operation-input.security-zone-request-input.` \" />",
+        "comments": "",
+        "x": 471.5291442871094,
+        "y": 556.8624534606934,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "389e0eec.32fdf2",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2274.8854484558105,
+        "y": 495.71430587768555,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3eb0bb84.9332a4",
+        "type": "update",
+        "name": "update AAI allotted-resource",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-data.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"operational-status\" value=\"out-of-service-path\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 535.7142944335938,
+        "y": 754.2857055664062,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "a77d093e.701398",
+                "a0e58ee0.5d11b"
+            ]
+        ]
+    },
+    {
+        "id": "a77d093e.701398",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 791.476203918457,
+        "y": 737.2382092475891,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "dce668a3.1b94f8"
+            ]
+        ]
+    },
+    {
+        "id": "dce668a3.1b94f8",
+        "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=\"AAI failed\" />\n",
+        "comments": "",
+        "x": 958.0000839233398,
+        "y": 748.857280254364,
+        "z": "65a9f6a1.13f7b8",
+        "wires": []
+    },
+    {
+        "id": "a0e58ee0.5d11b",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 798.5714912414551,
+        "y": 770.0001769065857,
+        "z": "65a9f6a1.13f7b8",
+        "wires": [
+            [
+                "dce668a3.1b94f8"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-delete.json
new file mode 100755
index 0000000..65acd70
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-delete.json
@@ -0,0 +1,563 @@
+[
+    {
+        "id": "6b945847.1c8628",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 187,
+        "y": 84,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "46c9c550.08ddbc"
+            ]
+        ]
+    },
+    {
+        "id": "46c9c550.08ddbc",
+        "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": 283.2380790710449,
+        "y": 144.95239067077637,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "33033a6c.777e46"
+            ]
+        ]
+    },
+    {
+        "id": "33033a6c.777e46",
+        "type": "method",
+        "name": "security-zone-topology-operation-delete",
+        "xml": "<method rpc='security-zone-topology-operation-delete' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 329.15485763549805,
+        "y": 180.19044589996338,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "71a136f2.4a6ae8"
+            ]
+        ]
+    },
+    {
+        "id": "71a136f2.4a6ae8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 237.47619247436523,
+        "y": 323.5237879753113,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "d473982e.2073e8",
+                "21b535a4.6f3cfa",
+                "58735763.200388",
+                "67dca0c.5203f6",
+                "d4bebd02.2ac6",
+                "ed3aea18.ac56a8",
+                "ce33759f.7f8848",
+                "af4ea7a7.5e99e8",
+                "dd978c58.19189",
+                "a078b88c.279298",
+                "1469e91d.b421d7",
+                "4a2606ec.007d08"
+            ]
+        ]
+    },
+    {
+        "id": "21b535a4.6f3cfa",
+        "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.0001106262207,
+        "y": 993.2145080566406,
+        "z": "cab86701.408c88",
+        "wires": []
+    },
+    {
+        "id": "d473982e.2073e8",
+        "type": "set",
+        "name": "set output to api handler",
+        "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='security-zone-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $security-zone-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+        "comments": "",
+        "x": 532.7540245056152,
+        "y": 957.3370542526245,
+        "z": "cab86701.408c88",
+        "wires": []
+    },
+    {
+        "id": "dd978c58.19189",
+        "type": "set",
+        "name": "set allotted-resource-oper-status",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+        "comments": "",
+        "x": 543.7542190551758,
+        "y": 704.0514001846313,
+        "z": "cab86701.408c88",
+        "wires": []
+    },
+    {
+        "id": "67dca0c.5203f6",
+        "type": "set",
+        "name": "set tmp.ar.self-link",
+        "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/security-zone-topology/'` \" />\n\n",
+        "comments": "",
+        "x": 499.73806381225586,
+        "y": 297.33332538604736,
+        "z": "cab86701.408c88",
+        "wires": []
+    },
+    {
+        "id": "58735763.200388",
+        "type": "set",
+        "name": "set tmp.ar.allotted-resource-id,etc",
+        "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />\n\n\n",
+        "comments": "",
+        "x": 546.9973258972168,
+        "y": 263.59259128570557,
+        "z": "cab86701.408c88",
+        "wires": []
+    },
+    {
+        "id": "d4bebd02.2ac6",
+        "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": 505.9934196472168,
+        "y": 333.23152446746826,
+        "z": "cab86701.408c88",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ce33759f.7f8848",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 568.5187530517578,
+        "y": 494.4594917297363,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "3d6ff871.1b6728",
+                "c68f9183.6fe9"
+            ]
+        ]
+    },
+    {
+        "id": "ed3aea18.ac56a8",
+        "type": "execute",
+        "name": "generate allotted-resource url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.sz-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 534.0648536682129,
+        "y": 393.0172290802002,
+        "z": "cab86701.408c88",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3d6ff871.1b6728",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 825.8148918151855,
+        "y": 493.26725220680237,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "cae924d0.c91d68"
+            ]
+        ]
+    },
+    {
+        "id": "e3d80d76.f38b6",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 846.837329864502,
+        "y": 900.432332418859,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "e5182ef1.2930a"
+            ]
+        ]
+    },
+    {
+        "id": "408d7749.7bfef8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 837.8373794555664,
+        "y": 868.9323581680655,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "e5182ef1.2930a"
+            ]
+        ]
+    },
+    {
+        "id": "a26d7c72.44fcc",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 841.5874176025391,
+        "y": 839.2894630432129,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "e6e17eb6.e762c"
+            ]
+        ]
+    },
+    {
+        "id": "e5182ef1.2930a",
+        "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 updating md-sal for security-zone-allotted-resource\" />\n",
+        "comments": "",
+        "x": 1007.5874176025391,
+        "y": 869.6823820099235,
+        "z": "cab86701.408c88",
+        "wires": []
+    },
+    {
+        "id": "cae924d0.c91d68",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1006.8148460388184,
+        "y": 493.7672016620636,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "a06def86.57a78",
+                "2d0ecbe9.d56c34"
+            ]
+        ]
+    },
+    {
+        "id": "a06def86.57a78",
+        "type": "switchNode",
+        "name": "switch sz length",
+        "xml": "<switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1252.6720924377441,
+        "y": 528.052964925766,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "ef02f832.92b468"
+            ]
+        ]
+    },
+    {
+        "id": "ef02f832.92b468",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1443.6720962524414,
+        "y": 528.0529625415802,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "6ff8e752.374018"
+            ]
+        ]
+    },
+    {
+        "id": "b7d42ce2.9a481",
+        "type": "set",
+        "name": "set sz-ar from get",
+        "xml": "<set>\n<parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />\n",
+        "comments": "",
+        "x": 1843.5292320251465,
+        "y": 528.6243867874146,
+        "z": "cab86701.408c88",
+        "wires": []
+    },
+    {
+        "id": "6ff8e752.374018",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic='true'>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1614.5290794372559,
+        "y": 528.6244316101074,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "b7d42ce2.9a481",
+                "63e31730.e27918",
+                "d8d35b13.b628f8"
+            ]
+        ]
+    },
+    {
+        "id": "63e31730.e27918",
+        "type": "set",
+        "name": "set oper-status",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
+        "comments": "",
+        "x": 1841.5294761657715,
+        "y": 596.0529508590698,
+        "z": "cab86701.408c88",
+        "wires": []
+    },
+    {
+        "id": "bed5b961.bd6788",
+        "type": "comment",
+        "name": "GET security-zone-allotted-resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 593.8148155212402,
+        "y": 457.7671926021576,
+        "z": "cab86701.408c88",
+        "wires": []
+    },
+    {
+        "id": "d8d35b13.b628f8",
+        "type": "switchNode",
+        "name": "switch order-status",
+        "xml": "<switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1851.52925491333,
+        "y": 561.6243848800659,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "55b36fbc.52943",
+                "19d63441.492dec"
+            ]
+        ]
+    },
+    {
+        "id": "55b36fbc.52943",
+        "type": "outcome",
+        "name": "outcome Created",
+        "xml": "<outcome value='Created'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2063.1292114257812,
+        "y": 522.6243848800659,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "27c47993.316bb6"
+            ]
+        ]
+    },
+    {
+        "id": "19d63441.492dec",
+        "type": "outcome",
+        "name": "outcome Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2088.8435859680176,
+        "y": 558.052975654602,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "27c47993.316bb6"
+            ]
+        ]
+    },
+    {
+        "id": "f3aeefda.cd911",
+        "type": "comment",
+        "name": "Set allotted-resource-identifiers",
+        "info": "",
+        "comments": "",
+        "x": 549.3386383056641,
+        "y": 548.3386459350586,
+        "z": "cab86701.408c88",
+        "wires": []
+    },
+    {
+        "id": "2d0ecbe9.d56c34",
+        "type": "set",
+        "name": "save backup copy of mdsal-ar for rollback",
+        "xml": "<set>\n<parameter name='bk-sz-ar' value='$mdsal-ar.' />\n",
+        "comments": "",
+        "x": 1332.3864250183105,
+        "y": 493.76729369163513,
+        "z": "cab86701.408c88",
+        "wires": []
+    },
+    {
+        "id": "33868ac7.abca26",
+        "type": "comment",
+        "name": "Create urls for restapi",
+        "info": "",
+        "comments": "",
+        "x": 504.9576606750488,
+        "y": 362.6243562698364,
+        "z": "cab86701.408c88",
+        "wires": []
+    },
+    {
+        "id": "e6e17eb6.e762c",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 983.2433853149414,
+        "y": 835.481632232666,
+        "z": "cab86701.408c88",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2b3604ae.317ccc",
+        "type": "comment",
+        "name": "TO DO: vnf/put parent",
+        "info": "",
+        "comments": "",
+        "x": 517.2433776855468,
+        "y": 769.4815540313718,
+        "z": "cab86701.408c88",
+        "wires": []
+    },
+    {
+        "id": "af4ea7a7.5e99e8",
+        "type": "execute",
+        "name": "execute getTime",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 491.24338150024414,
+        "y": 665.4815549850464,
+        "z": "cab86701.408c88",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c68f9183.6fe9",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 825.5766868591309,
+        "y": 529.4814250469208,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "336a662a.c1025a"
+            ]
+        ]
+    },
+    {
+        "id": "336a662a.c1025a",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1005.5766372680664,
+        "y": 530.1479756832123,
+        "z": "cab86701.408c88",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a078b88c.279298",
+        "type": "set",
+        "name": "set id",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='sz-ar.allotted-resource-status.action' value=\"`$security-zone-topology-operation-input.request-information.request-action` \" />\n<parameter name='sz-ar.allotted-resource-status.rpc-name' value=\"security-zone-topology-operation\" />\n<parameter name='sz-ar.allotted-resource-status.rpc-action' value=\"`$security-zone-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$security-zone-topology-operation-input.request-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$security-zone-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$security-zone-topology-operation-input.service-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$security-zone-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value=\"`$security-zone-topology-operation-input.security-zone-request-input.` \" />",
+        "comments": "",
+        "x": 474.24342346191406,
+        "y": 585.1481666564941,
+        "z": "cab86701.408c88",
+        "wires": []
+    },
+    {
+        "id": "27c47993.316bb6",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2277.5997276306152,
+        "y": 524.0000190734863,
+        "z": "cab86701.408c88",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1469e91d.b421d7",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 574.0000152587891,
+        "y": 850.0000247955322,
+        "z": "cab86701.408c88",
+        "wires": [
+            [
+                "a26d7c72.44fcc",
+                "408d7749.7bfef8",
+                "e3d80d76.f38b6"
+            ]
+        ]
+    },
+    {
+        "id": "4a2606ec.007d08",
+        "type": "set",
+        "name": "clear sz-ar-assignments",
+        "xml": "<set>\n<parameter name='sz-ar-assignments.' value=\"\" />\n\n\n\n",
+        "comments": "",
+        "x": 518,
+        "y": 736,
+        "z": "cab86701.408c88",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-unassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-unassign.json
new file mode 100755
index 0000000..1edf25f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation-unassign.json
@@ -0,0 +1,490 @@
+[
+    {
+        "id": "8f1f2ad4.1b2628",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 185,
+        "y": 110,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "aef28f38.d3ad2"
+            ]
+        ]
+    },
+    {
+        "id": "aef28f38.d3ad2",
+        "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": 281.2380790710449,
+        "y": 170.95239067077637,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "d541214e.1421c"
+            ]
+        ]
+    },
+    {
+        "id": "d541214e.1421c",
+        "type": "method",
+        "name": "security-zone-topology-operation-unassign",
+        "xml": "<method rpc='security-zone-topology-operation-unassign' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 325.15489196777344,
+        "y": 210.190447807312,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "3d909232.be8cbe"
+            ]
+        ]
+    },
+    {
+        "id": "3d909232.be8cbe",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 235.47619247436523,
+        "y": 349.5237879753113,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "ac546d04.a44e3",
+                "65b7ebff.45ef54",
+                "887af0a1.cfd5a",
+                "16719562.f89cfb",
+                "921e5db9.a3742",
+                "ae6a6800.748f18",
+                "4585bd6c.db3454",
+                "a30a4193.dc67c"
+            ]
+        ]
+    },
+    {
+        "id": "65b7ebff.45ef54",
+        "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": 502.0001106262207,
+        "y": 1019.2145080566406,
+        "z": "892de9cf.a3e7e8",
+        "wires": []
+    },
+    {
+        "id": "ac546d04.a44e3",
+        "type": "set",
+        "name": "set output to api handler",
+        "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='security-zone-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $security-zone-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+        "comments": "",
+        "x": 530.7540245056152,
+        "y": 983.3370542526245,
+        "z": "892de9cf.a3e7e8",
+        "wires": []
+    },
+    {
+        "id": "16719562.f89cfb",
+        "type": "set",
+        "name": "set tmp.ar.self-link",
+        "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/security-zone-topology/'` \" />\n\n",
+        "comments": "",
+        "x": 497.73806381225586,
+        "y": 323.33332538604736,
+        "z": "892de9cf.a3e7e8",
+        "wires": []
+    },
+    {
+        "id": "887af0a1.cfd5a",
+        "type": "set",
+        "name": "set tmp.ar.allotted-resource-id,etc",
+        "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />\n\n\n",
+        "comments": "",
+        "x": 544.9973258972168,
+        "y": 289.59259128570557,
+        "z": "892de9cf.a3e7e8",
+        "wires": []
+    },
+    {
+        "id": "921e5db9.a3742",
+        "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": 503.9934196472168,
+        "y": 359.23152446746826,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4585bd6c.db3454",
+        "type": "execute",
+        "name": "execute RestApiCallNode - Get AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 566.5187530517578,
+        "y": 520.4594917297363,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "39c78959.7ed206",
+                "f4ec9c65.dbf1a"
+            ]
+        ]
+    },
+    {
+        "id": "ae6a6800.748f18",
+        "type": "execute",
+        "name": "generate allotted-resource url",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.sz-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 532.0648536682129,
+        "y": 419.0172290802002,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "39c78959.7ed206",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 823.8148918151855,
+        "y": 519.2672522068024,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "aa4578bf.e01898"
+            ]
+        ]
+    },
+    {
+        "id": "cf288e81.867c",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 844.837329864502,
+        "y": 926.432332418859,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "562e732f.776e5c"
+            ]
+        ]
+    },
+    {
+        "id": "8f1f61fb.4c4c9",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 835.8373794555664,
+        "y": 894.9323581680655,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "562e732f.776e5c"
+            ]
+        ]
+    },
+    {
+        "id": "48115134.9ae56",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 839.5874176025391,
+        "y": 865.2894630432129,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "9c761fba.db0c3"
+            ]
+        ]
+    },
+    {
+        "id": "562e732f.776e5c",
+        "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 updating md-sal for security-zone-allotted-resource\" />\n",
+        "comments": "",
+        "x": 1005.5874176025391,
+        "y": 895.6823820099235,
+        "z": "892de9cf.a3e7e8",
+        "wires": []
+    },
+    {
+        "id": "aa4578bf.e01898",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1004.8148460388184,
+        "y": 519.7672016620636,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "d17cf2f0.cec85",
+                "dae16c74.e3b7c"
+            ]
+        ]
+    },
+    {
+        "id": "d17cf2f0.cec85",
+        "type": "switchNode",
+        "name": "switch sz length",
+        "xml": "<switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1250.6720924377441,
+        "y": 554.052964925766,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "9eb758cd.982008"
+            ]
+        ]
+    },
+    {
+        "id": "9eb758cd.982008",
+        "type": "other",
+        "name": "outcome 1",
+        "xml": "<outcome value='1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1441.6720962524414,
+        "y": 554.0529625415802,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "e43335e7.a2b4b8"
+            ]
+        ]
+    },
+    {
+        "id": "90a7fa85.7e06d8",
+        "type": "set",
+        "name": "set sz-ar from get",
+        "xml": "<set>\n<parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />\n",
+        "comments": "",
+        "x": 1841.5292320251465,
+        "y": 554.6243867874146,
+        "z": "892de9cf.a3e7e8",
+        "wires": []
+    },
+    {
+        "id": "e43335e7.a2b4b8",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic='true'>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1612.5290794372559,
+        "y": 554.6244316101074,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "90a7fa85.7e06d8",
+                "82e79827.7b2528",
+                "e9d4c55b.3b68e8"
+            ]
+        ]
+    },
+    {
+        "id": "82e79827.7b2528",
+        "type": "set",
+        "name": "set oper-status",
+        "xml": "<set>\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />\n<parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
+        "comments": "",
+        "x": 1839.5294761657715,
+        "y": 622.0529508590698,
+        "z": "892de9cf.a3e7e8",
+        "wires": []
+    },
+    {
+        "id": "dceff592.9c16a8",
+        "type": "comment",
+        "name": "GET security-zone-allotted-resource from mdsal",
+        "info": "",
+        "comments": "",
+        "x": 591.8148155212402,
+        "y": 483.7671926021576,
+        "z": "892de9cf.a3e7e8",
+        "wires": []
+    },
+    {
+        "id": "e9d4c55b.3b68e8",
+        "type": "switchNode",
+        "name": "switch order-status",
+        "xml": "<switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1849.52925491333,
+        "y": 587.6243848800659,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "ee32ca42.029ac8",
+                "f44f15e1.8ed938"
+            ]
+        ]
+    },
+    {
+        "id": "ee32ca42.029ac8",
+        "type": "outcome",
+        "name": "outcome Created",
+        "xml": "<outcome value='Created'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2061.1292114257812,
+        "y": 548.6243848800659,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "74e489f7.35eb68"
+            ]
+        ]
+    },
+    {
+        "id": "f44f15e1.8ed938",
+        "type": "outcome",
+        "name": "outcome Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2086.8435859680176,
+        "y": 584.052975654602,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "74e489f7.35eb68"
+            ]
+        ]
+    },
+    {
+        "id": "dae16c74.e3b7c",
+        "type": "set",
+        "name": "save backup copy of mdsal-ar for rollback",
+        "xml": "<set>\n<parameter name='bk-sz-ar' value='$mdsal-ar.' />\n",
+        "comments": "",
+        "x": 1330.3864250183105,
+        "y": 519.7672936916351,
+        "z": "892de9cf.a3e7e8",
+        "wires": []
+    },
+    {
+        "id": "972a22dc.b7b85",
+        "type": "comment",
+        "name": "Create urls for restapi",
+        "info": "",
+        "comments": "",
+        "x": 502.9576606750488,
+        "y": 388.6243562698364,
+        "z": "892de9cf.a3e7e8",
+        "wires": []
+    },
+    {
+        "id": "9c761fba.db0c3",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 981.2433853149414,
+        "y": 861.481632232666,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f4ec9c65.dbf1a",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 823.5766868591309,
+        "y": 555.4814250469208,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "8c932988.c6f7a8"
+            ]
+        ]
+    },
+    {
+        "id": "8c932988.c6f7a8",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1003.5766372680664,
+        "y": 556.1479756832123,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "74e489f7.35eb68",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2275.5997276306152,
+        "y": 550.0000190734863,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a30a4193.dc67c",
+        "type": "execute",
+        "name": "execute RestApiCallNode - PUT AR by id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 568.0000610351562,
+        "y": 878.0000267028809,
+        "z": "892de9cf.a3e7e8",
+        "wires": [
+            [
+                "48115134.9ae56",
+                "8f1f61fb.4c4c9",
+                "cf288e81.867c"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation.json
new file mode 100755
index 0000000..917ff1c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_security-zone-topology-operation.json
@@ -0,0 +1,881 @@
+[
+    {
+        "id": "e4ebdff3.230ac",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 153.7037124633789,
+        "y": 150.37034606933594,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "b4010019.28c11"
+            ]
+        ]
+    },
+    {
+        "id": "b4010019.28c11",
+        "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": 232.32273864746094,
+        "y": 190.60845851898193,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "d0b7800c.ff6ae"
+            ]
+        ]
+    },
+    {
+        "id": "d0b7800c.ff6ae",
+        "type": "method",
+        "name": "security-zone-topology-operation",
+        "xml": "<method rpc='security-zone-topology-operation' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 216.79901123046875,
+        "y": 250.3703441619873,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "5cabda26.cb2e34"
+            ]
+        ]
+    },
+    {
+        "id": "1d74440d.0be21c",
+        "type": "comment",
+        "name": "SECURITY-ZONE-TOPOLOGY-OPERATION ",
+        "info": "",
+        "comments": "",
+        "x": 544.7152328491211,
+        "y": 97.95668983459473,
+        "z": "38cff129.fc152e",
+        "wires": []
+    },
+    {
+        "id": "5cabda26.cb2e34",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 270.084716796875,
+        "y": 333.81380558013916,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "8572d942.568b08",
+                "a4dc8e17.f43eb",
+                "8f606133.785f7",
+                "b962e00e.873c9"
+            ]
+        ]
+    },
+    {
+        "id": "8572d942.568b08",
+        "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": 494.4537658691406,
+        "y": 937.6564655303955,
+        "z": "38cff129.fc152e",
+        "wires": []
+    },
+    {
+        "id": "a4dc8e17.f43eb",
+        "type": "switchNode",
+        "name": "switch svc-action",
+        "xml": "<switch test='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 491.0846405029297,
+        "y": 544.2275238037109,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "3b96ffc6.57b1a",
+                "2254507e.315a2",
+                "e31135d3.dc53d8",
+                "f3af2581.6384d8",
+                "928514d5.296ba8",
+                "5ec79a58.8d5414",
+                "fd3e4e18.0df77"
+            ]
+        ]
+    },
+    {
+        "id": "3b96ffc6.57b1a",
+        "type": "other",
+        "name": "assign",
+        "xml": "<outcome value='assign'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 712.9894676208496,
+        "y": 405.0846047401428,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "aa516bcc.267f38"
+            ]
+        ]
+    },
+    {
+        "id": "aa516bcc.267f38",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 892.7989959716797,
+        "y": 407.51329612731934,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "f56f040a.9ba298"
+            ]
+        ]
+    },
+    {
+        "id": "8f606133.785f7",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:validate-security-zone-input",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-security-zone-input' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 625.6560668945312,
+        "y": 325.7989387512207,
+        "z": "38cff129.fc152e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f56f040a.9ba298",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:security-zone-topology-operation-assign",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-assign' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1264.3702926635742,
+        "y": 407.37035179138184,
+        "z": "38cff129.fc152e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2254507e.315a2",
+        "type": "other",
+        "name": "activate",
+        "xml": "<outcome value='activate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 713.3703765869141,
+        "y": 494.37034606933594,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "2b87dbfe.7ba6e4"
+            ]
+        ]
+    },
+    {
+        "id": "2b87dbfe.7ba6e4",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 897.6085357666016,
+        "y": 495.37046813964844,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "49265f59.4181d"
+            ]
+        ]
+    },
+    {
+        "id": "e8d2423f.a9142",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:network-topology-operation-activate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-activate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1830.1800549825039,
+        "y": 1470.5608215332031,
+        "z": "38cff129.fc152e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e31135d3.dc53d8",
+        "type": "other",
+        "name": "deactivate",
+        "xml": "<outcome value='deactivate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 722.3704166412354,
+        "y": 554.3704042434692,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "39e52589.68fa0a"
+            ]
+        ]
+    },
+    {
+        "id": "39e52589.68fa0a",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 903.6085758209229,
+        "y": 555.3705263137817,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "430726d9.dbdaa8"
+            ]
+        ]
+    },
+    {
+        "id": "ed015722.b22218",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:network-topology-operation-deactivate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-deactivate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1836.6799634297695,
+        "y": 1586.3108215332031,
+        "z": "38cff129.fc152e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f3af2581.6384d8",
+        "type": "other",
+        "name": "unassign",
+        "xml": "<outcome value='unassign'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 720.370439529419,
+        "y": 672.7037439346313,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "5b1c51a7.e6aa7"
+            ]
+        ]
+    },
+    {
+        "id": "5b1c51a7.e6aa7",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 901.6085987091064,
+        "y": 673.7038660049438,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "5bc27941.d4f4f8"
+            ]
+        ]
+    },
+    {
+        "id": "1d34f9a1.037d66",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:network-topology-operation-unassign",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-unassign' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1843.4299634297695,
+        "y": 1699.0608215332031,
+        "z": "38cff129.fc152e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "928514d5.296ba8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 719.7037696838379,
+        "y": 732.7037267684937,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "4e2016c4.9e9208"
+            ]
+        ]
+    },
+    {
+        "id": "4e2016c4.9e9208",
+        "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-action is a required input\" />\n",
+        "comments": "",
+        "x": 901.7037658691406,
+        "y": 731.7037363052368,
+        "z": "38cff129.fc152e",
+        "wires": []
+    },
+    {
+        "id": "b962e00e.873c9",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "x": 513.4814605712891,
+        "y": 896.8148040771484,
+        "z": "38cff129.fc152e",
+        "wires": []
+    },
+    {
+        "id": "970980ab.4166",
+        "type": "for",
+        "name": "for nidx..service-data.networks.network[]",
+        "xml": "<for index='nidx' start='0' end='`$service-data.networks.network_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1732.1008466084804,
+        "y": 1364.465576171875,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "7c375e30.6abc8"
+            ]
+        ]
+    },
+    {
+        "id": "cec76c20.78cb4",
+        "type": "switchNode",
+        "name": "switch service-data.networks.network_length",
+        "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1065.8149426778164,
+        "y": 1329.0369567871094,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "5fff2a9.d7e8dd4",
+                "94eadb3a.e3a458"
+            ]
+        ]
+    },
+    {
+        "id": "5fff2a9.d7e8dd4",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1308.81488164266,
+        "y": 1331.0369663238525,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "a0ca271a.2df248"
+            ]
+        ]
+    },
+    {
+        "id": "94eadb3a.e3a458",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1262.8149121602382,
+        "y": 1364.0369873046875,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "955a1867.ed1ea8"
+            ]
+        ]
+    },
+    {
+        "id": "7c375e30.6abc8",
+        "type": "switchNode",
+        "name": "switch networkid found",
+        "xml": "<switch test=\"`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2022.5293973286953,
+        "y": 1363.7156600952148,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "43582bb0.126264"
+            ]
+        ]
+    },
+    {
+        "id": "43582bb0.126264",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2211.4817517598476,
+        "y": 1364.6083984375,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "e72ed2b6.760d4"
+            ]
+        ]
+    },
+    {
+        "id": "e72ed2b6.760d4",
+        "type": "set",
+        "name": "set tmp.nidx and ctx.network-data",
+        "xml": "<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='ctx.network-data.' value='`$service-data.networks.network[$nidx].`' />\n",
+        "comments": "",
+        "x": 2445.0135205586757,
+        "y": 1363.3584060668945,
+        "z": "38cff129.fc152e",
+        "wires": []
+    },
+    {
+        "id": "1533495c.2f7d47",
+        "type": "comment",
+        "name": "Find the index to service data for this network - save id in tmp.nidx, save service-data",
+        "info": "",
+        "comments": "",
+        "x": 1188.9260266621914,
+        "y": 1298.036979675293,
+        "z": "38cff129.fc152e",
+        "wires": []
+    },
+    {
+        "id": "a0ca271a.2df248",
+        "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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n",
+        "comments": "",
+        "x": 1500.592439015707,
+        "y": 1328.9259643554688,
+        "z": "38cff129.fc152e",
+        "wires": []
+    },
+    {
+        "id": "955a1867.ed1ea8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1430.0848782857265,
+        "y": 1363.5915641784668,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "970980ab.4166",
+                "a77bcb8b.e65188"
+            ]
+        ]
+    },
+    {
+        "id": "a77bcb8b.e65188",
+        "type": "switchNode",
+        "name": "switch tmp.nidx ",
+        "xml": "<switch test=\"`$tmp.nidx`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1650.4022763570156,
+        "y": 1406.4487829208374,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "4037e2b3.df5d0c"
+            ]
+        ]
+    },
+    {
+        "id": "bbb7bbcb.e9d3e8",
+        "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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n",
+        "comments": "",
+        "x": 2003.25925954183,
+        "y": 1402.1630249023438,
+        "z": "38cff129.fc152e",
+        "wires": []
+    },
+    {
+        "id": "4037e2b3.df5d0c",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1821.8308118184414,
+        "y": 1405.0201683044434,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "bbb7bbcb.e9d3e8"
+            ]
+        ]
+    },
+    {
+        "id": "14c198e5.1cc677",
+        "type": "switchNode",
+        "name": "switch network-level-oper-status",
+        "xml": "<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1043.1482861836757,
+        "y": 1470.512222290039,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "3c6c6eae.28e612",
+                "103089d1.c81916"
+            ]
+        ]
+    },
+    {
+        "id": "3c6c6eae.28e612",
+        "type": "outcome",
+        "name": "outcome PendingCreate",
+        "xml": "<outcome value='PendingCreate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1408.148265838623,
+        "y": 1470.51220703125,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "e8d2423f.a9142"
+            ]
+        ]
+    },
+    {
+        "id": "103089d1.c81916",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1358.1483128865566,
+        "y": 1510.5122375488281,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "e490ae22.d5bde"
+            ]
+        ]
+    },
+    {
+        "id": "e490ae22.d5bde",
+        "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 is not in appropriate state for activate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />",
+        "comments": "",
+        "x": 1528.1483128865566,
+        "y": 1510.5122375488281,
+        "z": "38cff129.fc152e",
+        "wires": []
+    },
+    {
+        "id": "ab179e35.550b2",
+        "type": "switchNode",
+        "name": "switch network-level-oper-status",
+        "xml": "<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1050.4497693379726,
+        "y": 1586.463623046875,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "9d407a50.6f42b8",
+                "50a066bd.db29b8"
+            ]
+        ]
+    },
+    {
+        "id": "9d407a50.6f42b8",
+        "type": "outcome",
+        "name": "outcome Created",
+        "xml": "<outcome value='Created'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1413.4497388203945,
+        "y": 1586.4636535644531,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "ed015722.b22218"
+            ]
+        ]
+    },
+    {
+        "id": "50a066bd.db29b8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1383.4497388203945,
+        "y": 1626.4636535644531,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "a5c499d0.8c9ba8"
+            ]
+        ]
+    },
+    {
+        "id": "a5c499d0.8c9ba8",
+        "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 is not in appropriate state for deactivate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />",
+        "comments": "",
+        "x": 1549.4497388203945,
+        "y": 1628.4636535644531,
+        "z": "38cff129.fc152e",
+        "wires": []
+    },
+    {
+        "id": "5487a9fc.903868",
+        "type": "switchNode",
+        "name": "switch network-level-oper-status",
+        "xml": "<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1050.2513440450039,
+        "y": 1700.665023803711,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "774c458d.4976ec",
+                "ff4fd639.391848",
+                "9d8f3da4.83f8"
+            ]
+        ]
+    },
+    {
+        "id": "774c458d.4976ec",
+        "type": "outcome",
+        "name": "outcome PendingCreate",
+        "xml": "<outcome value='PendingCreate'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1410.2513135274257,
+        "y": 1700.665054321289,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "1d34f9a1.037d66"
+            ]
+        ]
+    },
+    {
+        "id": "ff4fd639.391848",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1367.2512524922695,
+        "y": 1784.6650695800781,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "8f2347ed.c81b08"
+            ]
+        ]
+    },
+    {
+        "id": "8f2347ed.c81b08",
+        "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 is not in appropriate state for unassign. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />",
+        "comments": "",
+        "x": 1558.5846722920742,
+        "y": 1783.3316984176636,
+        "z": "38cff129.fc152e",
+        "wires": []
+    },
+    {
+        "id": "9d8f3da4.83f8",
+        "type": "outcome",
+        "name": "outcome PendingDelete",
+        "xml": "<outcome value='PendingDelete'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1413.4815381368007,
+        "y": 1738.512222290039,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "1d34f9a1.037d66"
+            ]
+        ]
+    },
+    {
+        "id": "5ec79a58.8d5414",
+        "type": "other",
+        "name": "create",
+        "xml": "<outcome value='create'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 718.611083984375,
+        "y": 453.97518730163574,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "5936e2cd.b6288c"
+            ]
+        ]
+    },
+    {
+        "id": "5936e2cd.b6288c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 899.8492431640625,
+        "y": 454.97530937194824,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "4a78d52c.c3db4c"
+            ]
+        ]
+    },
+    {
+        "id": "4a78d52c.c3db4c",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:security-zone-topology-operation-create",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-create' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1265.7539520263672,
+        "y": 454.49903106689453,
+        "z": "38cff129.fc152e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "fd3e4e18.0df77",
+        "type": "other",
+        "name": "delete",
+        "xml": "<outcome value='delete'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 716.9444370269775,
+        "y": 615.6418466567993,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "d1afc7c1.5f5188"
+            ]
+        ]
+    },
+    {
+        "id": "d1afc7c1.5f5188",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 898.182596206665,
+        "y": 616.6419687271118,
+        "z": "38cff129.fc152e",
+        "wires": [
+            [
+                "c0792090.5b78d"
+            ]
+        ]
+    },
+    {
+        "id": "430726d9.dbdaa8",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:security-zone-topology-operation-deactivate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-deactivate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1285.5184936523438,
+        "y": 554.851884841919,
+        "z": "38cff129.fc152e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c0792090.5b78d",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:security-zone-topology-operation-delete",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-delete' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1275.1853427886963,
+        "y": 616.5185136795044,
+        "z": "38cff129.fc152e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5bc27941.d4f4f8",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:security-zone-topology-operation-unassign",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-unassign' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1280.8518466949463,
+        "y": 673.8518400192261,
+        "z": "38cff129.fc152e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "49265f59.4181d",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:security-zone-topology-operation-activate",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-activate' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1275.1851806640625,
+        "y": 495.851806640625,
+        "z": "38cff129.fc152e",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ef47642e.ee9758",
+        "type": "set",
+        "name": "copy input to service-data",
+        "xml": "<set>\n<parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />\n",
+        "comments": "",
+        "x": 524.4444580078125,
+        "y": 855.873046875,
+        "z": "38cff129.fc152e",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.json b/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-aai-vf-module-put.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-aai-vf-module-put.json
new file mode 100644
index 0000000..d8bec7e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-aai-vf-module-put.json
@@ -0,0 +1 @@
+[{"id":"544113b5.3263fc","type":"dgstart","name":"DGSTART","outputs":1,"x":104.99999237060547,"y":48.33333206176758,"z":"8068ded9.ccc26","wires":[["1404c879.0f3058"]]},{"id":"d2b6c403.dde578","type":"method","name":"method self-serve-aai-vf-module-put","xml":"<method rpc='self-serve-aai-vf-module-put' mode='sync'>\n","comments":"","outputs":1,"x":237.21428680419922,"y":99.50794315338135,"z":"8068ded9.ccc26","wires":[["28d4af4a.f0cdb"]]},{"id":"28d4af4a.f0cdb","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":124.89287567138672,"y":174.8571548461914,"z":"8068ded9.ccc26","wires":[["f217d7f2.7c62d8","d7b740fc.6831a","9669e0ca.90c8f","3b0adeb0.0eb082"]]},{"id":"1404c879.0f3058","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":377.85713958740234,"y":47.7618989944458,"z":"8068ded9.ccc26","wires":[["d2b6c403.dde578"]]},{"id":"f217d7f2.7c62d8","type":"switchNode","name":"switch: ss.capability-action","xml":"<switch test='`$ss.capability-action`'>\n","comments":"","outputs":1,"x":362.8571662902832,"y":227.08332681655884,"z":"8068ded9.ccc26","wires":[["2cbb79a9.c1eea6","d1160c49.4176","43c0a50b.639d9c"]]},{"id":"2cbb79a9.c1eea6","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":571.3571624755859,"y":227.33332681655884,"z":"8068ded9.ccc26","wires":[["5ae95a45.5debe4"]]},{"id":"5ae95a45.5debe4","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":727.2738342285156,"y":227.44442558288574,"z":"8068ded9.ccc26","wires":[]},{"id":"d1160c49.4176","type":"outcome","name":"assign","xml":"<outcome value='assign'>","comments":"","outputs":1,"x":571.1071586608887,"y":276.33333015441895,"z":"8068ded9.ccc26","wires":[["a7cac65d.e914d8"]]},{"id":"d7b740fc.6831a","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-vfput.log' />\n","comments":"","outputs":1,"x":319.8214340209961,"y":1210.9523258209229,"z":"8068ded9.ccc26","wires":[[]]},{"id":"27de274a.88c098","type":"save","name":"update generic-vnf","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \" >\n<parameter name=\"ipv4-loopback0-address\" value='`$ss.param.ipv4-loopback0-address`' />\n","comments":"","outputs":1,"x":2390.6071739196777,"y":1895.2024598121643,"z":"8068ded9.ccc26","wires":[["3979b1d5.6677ee","7a101d16.ff8574","d5eb2c25.f7bf1"]]},{"id":"3979b1d5.6677ee","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2590.857204437256,"y":1895.559506893158,"z":"8068ded9.ccc26","wires":[["d2c445d.5b0a2b8"]]},{"id":"7a101d16.ff8574","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2597.1072158813477,"y":1946.3095412254333,"z":"8068ded9.ccc26","wires":[["b17925c2.0a32d8"]]},{"id":"d2c445d.5b0a2b8","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 generic-vnf.ipv4-loopback0-address in AnAI with ipv4-loopback0-address=' + $ss.param.ipv4-loopback0-address + '; ' + $error-message`\" />\n","comments":"","x":2768.726161956787,"y":1895.34521150589,"z":"8068ded9.ccc26","wires":[]},{"id":"b17925c2.0a32d8","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 generic-vnf because vnf-id =' + $ss.param.vnf-id + ' is not found in AAI. ' + $error-message`\" />\n","comments":"","x":2769.297679901123,"y":1945.583387851715,"z":"8068ded9.ccc26","wires":[]},{"id":"2bb84732.4581c8","type":"save","name":"update volume-group","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"volume-group\"\n\t\tkey=\"cloud-region.cloud-owner = $prop.cloud-owner  \n\t\t\tAND cloud-region.cloud-region-id = $ss.param.aic-cloud-region \n\t\t\tAND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner \n\t\t\tAND volume-group-id = $ss.param.volume-group-id\" >\n<parameter name=\"volume-group-name\" value='`$ss.param.volume-group-name`' />\n<parameter name=\"volume-group-id\" value='`$ss.param.volume-group-id`' />\n","comments":"","outputs":1,"x":1675.523941040039,"y":4008.690396785736,"z":"8068ded9.ccc26","wires":[["990ce64e.9c6758","603a3397.22016c"]]},{"id":"990ce64e.9c6758","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1883.523941040039,"y":4008.690396785736,"z":"8068ded9.ccc26","wires":[["4c1c1d74.1517f4"]]},{"id":"5f17c4a8.0dac0c","type":"save","name":"Rollback generic-vnf update","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \" >\n<parameter name=\"ipv4-loopback0-address\" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />\n<parameter name=\"ipv4-oam-address\" value='`$tmp.aai.vnf.ipv4-oam-address`' />\n<parameter name=\"as-number\" value='`$tmp.aai.vnf.as-number`' />\n<parameter name=\"vlan-id-outer\" value='`$tmp.aai.vnf.vlan-id-outer`' />","comments":"","outputs":1,"x":6086.120388031006,"y":3156.1444816589355,"z":"8068ded9.ccc26","wires":[["cd5787f3.1adc68","11863adb.b84605","a0326122.57c02"]]},{"id":"cd5787f3.1adc68","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":6324.370372772217,"y":3155.644426345825,"z":"8068ded9.ccc26","wires":[["2f247634.a3188a"]]},{"id":"11863adb.b84605","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":6330.620384216309,"y":3207.3944606781006,"z":"8068ded9.ccc26","wires":[["d35c334f.7cfba"]]},{"id":"cdbfc33f.d52a7","type":"save","name":"get generic-vnf","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \"\n\tpfx=\"tmp.aai.vnf\" >\n\n","comments":"","outputs":1,"x":1271.607234954834,"y":1643.833396911621,"z":"8068ded9.ccc26","wires":[["7c2ec187.5782e","d05d85c0.e9b768"]]},{"id":"7c2ec187.5782e","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1480.1428680419922,"y":1643.3333177566528,"z":"8068ded9.ccc26","wires":[["83c73051.c3a32"]]},{"id":"d05d85c0.e9b768","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1486.3927879333496,"y":1742.2262258529663,"z":"8068ded9.ccc26","wires":[["486062c6.b9a65c"]]},{"id":"3a748bec.06c474","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 generic-vnf with vnf-id=' + $ss.param.vnf-id + ' from AnAI'`\" />\n","comments":"","x":1922.5830726623535,"y":1688.8333368301392,"z":"8068ded9.ccc26","wires":[]},{"id":"f79a10de.f96ed","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'generic-vnf.vnf-name with vnf-id=' + $ss.param.vnf-id + ' not found in AAI. '`\" />\n","comments":"","x":1924.2975463867188,"y":1742.785894393921,"z":"8068ded9.ccc26","wires":[]},{"id":"fd633781.1bf9c8","type":"save","name":"update volume-group","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"volume-group\"\n\t\tkey=\"cloud-region.cloud-owner = $prop.cloud-owner  \n\t\t\tAND cloud-region.cloud-region-id = $ss.param.aic-cloud-region \n\t\t\tAND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner \n\t\t\tAND volume-group-id = $ss.param.volume-group-id\" >\n<parameter name=\"volume-group-name\" value='`$tmp.aai.volume-group.volume-group-name`' />","comments":"","outputs":1,"x":5744.548473358154,"y":3776.048948287964,"z":"8068ded9.ccc26","wires":[["e4fa8909.4dd298","e6cf9e60.36c21","1a42d1bd.7e06ae"]]},{"id":"4c1c1d74.1517f4","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2078.2739334106445,"y":4008.690370082855,"z":"8068ded9.ccc26","wires":[["c1b8579b.771458","5baa82ec.dffecc"]]},{"id":"a7cac65d.e914d8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":724.8571548461914,"y":276.5833263397217,"z":"8068ded9.ccc26","wires":[["d16edcfb.a2216","81d44ce6.28309","1e19f844.9c0ec8","a393fb3d.925a18","c0feb185.c5348","f10164da.04f358","40f8f017.2403a","4fcc988.d1ea868","310596e2.42bc4a"]]},{"id":"d16edcfb.a2216","type":"set","name":"set resource-resolution-data.status, parm[].value = SUCCESS","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' \n\tvalue='SUCCESS' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].value' \n\tvalue='SUCCESS' />\n","comments":"","x":1096.2739639282227,"y":6504.09578037262,"z":"8068ded9.ccc26","wires":[]},{"id":"83c73051.c3a32","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1651.714454650879,"y":1643.3691110610962,"z":"8068ded9.ccc26","wires":[["531e351c.fe55bc","3a748bec.06c474"]]},{"id":"486062c6.b9a65c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1652.571533203125,"y":1742.3691110610962,"z":"8068ded9.ccc26","wires":[["531e351c.fe55bc","f79a10de.f96ed"]]},{"id":"531e351c.fe55bc","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":2019.2858428955078,"y":1643.0834226608276,"z":"8068ded9.ccc26","wires":[]},{"id":"32c37498.d5047c","type":"for","name":"for bidx in param_length (VF-MODULE)","xml":"<for silentFailure='true' index=\"bidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`\" >\n","comments":"","outputs":1,"x":1288.7617721557617,"y":360.57139682769775,"z":"8068ded9.ccc26","wires":[["930c302f.87d9a"]]},{"id":"a1dc9b53.b001a8","type":"switchNode","name":"switch param[].name","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`'>\n","comments":"","outputs":1,"x":2028.1904602050781,"y":881.0000171661377,"z":"8068ded9.ccc26","wires":[["eda336f5.cd2b28","7e8f8098.f3aac","82245a01.d9d5d8","9a172f5.4d216d","1635f3c2.d64ecc","7b910270.aa145c","a7a813a9.685fe","4a38191a.665008","68af07a3.16ce88","91d6d0e4.e2cc2","8f404e48.285a6","133a1544.17dc0b","ec83fc2d.1db1b","ca7c357a.02aee8","f5541fce.c9fc9","2b83386b.477738","593dcc0e.8e3134","26c08944.595276","982628c3.cc5ec8","b7a3bc44.8c264","10ef55c1.e5abda"]]},{"id":"eda336f5.cd2b28","type":"outcome","name":"vf_module_id","xml":"<outcome value='vf_module_id'>\n","comments":"","outputs":1,"x":2322.1904525756836,"y":451.8571300506592,"z":"8068ded9.ccc26","wires":[["45675dfb.d48574"]]},{"id":"45675dfb.d48574","type":"set","name":"set ss.param.vf-module-id","xml":"<set>\n<parameter name='ss.param.vf-module-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n","comments":"","x":2660.619083404541,"y":452.7142939567566,"z":"8068ded9.ccc26","wires":[]},{"id":"7e8f8098.f3aac","type":"outcome","name":"vf-module-name","xml":"<outcome value='vf-module-name'>\n","comments":"","outputs":1,"x":2333.6189918518066,"y":494.7142791748047,"z":"8068ded9.ccc26","wires":[["4f7b07c.b10dcf8"]]},{"id":"4f7b07c.b10dcf8","type":"set","name":"set ss.param.vf-module-name","xml":"<set>\n<parameter name='ss.param.vf-module-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n","comments":"","x":2671.9047470092773,"y":495.28573751449585,"z":"8068ded9.ccc26","wires":[]},{"id":"82245a01.d9d5d8","type":"outcome","name":"volume-group-name","xml":"<outcome value='volume-group-name'>\n","comments":"","outputs":1,"x":2342.9047241210938,"y":579.5714559555054,"z":"8068ded9.ccc26","wires":[["f508bd0c.d0dc8"]]},{"id":"f508bd0c.d0dc8","type":"set","name":"set ss.param.volume-group-name","xml":"<set>\n<parameter name='ss.param.volume-group-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n","comments":"","x":2685.9047470092773,"y":580.2857375144958,"z":"8068ded9.ccc26","wires":[]},{"id":"9a172f5.4d216d","type":"outcome","name":"aic-cloud-region","xml":"<outcome value='aic-cloud-region'>\n","comments":"","outputs":1,"x":2328.904773712158,"y":621.5714359283447,"z":"8068ded9.ccc26","wires":[["ffb319f8.7a0188"]]},{"id":"ffb319f8.7a0188","type":"set","name":"set ss.param.aic-cloud-region","xml":"<set>\n<parameter name='ss.param.aic-cloud-region' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n","comments":"","x":2674.190528869629,"y":622.1428942680359,"z":"8068ded9.ccc26","wires":[]},{"id":"1635f3c2.d64ecc","type":"outcome","name":"volume-group-id","xml":"<outcome value='volume-group-id'>\n","comments":"","outputs":1,"x":2334.1904678344727,"y":536.8571701049805,"z":"8068ded9.ccc26","wires":[["3675b335.dbe54c"]]},{"id":"3675b335.dbe54c","type":"set","name":"set ss.param.volume-group-id","xml":"<set>\n<parameter name='ss.param.volume-group-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n","comments":"","x":2672.4762229919434,"y":537.4286284446716,"z":"8068ded9.ccc26","wires":[]},{"id":"e53f3779.d51718","type":"save","name":"update vf-module","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"vf-module\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \n\t\t\tAND vf-module.vf-module-id = $ss.param.vf-module-id \" >\n<parameter name=\"vf-module-name\" value='`$ss.param.vf-module-name`' />\n<parameter name=\"selflink\" value='`$ss.selflink`' />\n","comments":"","outputs":1,"x":1680.0717315673828,"y":3563.9885816574097,"z":"8068ded9.ccc26","wires":[["afb215fc.55dad8","656edb50.29a904"]]},{"id":"afb215fc.55dad8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1873.3217163085938,"y":3563.4885263442993,"z":"8068ded9.ccc26","wires":[["a40c159f.2d73b8"]]},{"id":"656edb50.29a904","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1879.5717277526855,"y":3615.2385606765747,"z":"8068ded9.ccc26","wires":[["f18e9019.bd386"]]},{"id":"b02b7bf8.605ee8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'vf-module not found in AnAI with vf-module-id=' + $ss.param.vf-module-id + $error-message`\" />\n","comments":"","x":2223.7383728027344,"y":3453.857497215271,"z":"8068ded9.ccc26","wires":[]},{"id":"fff7178f.f6b028","type":"save","name":"get vf-module","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"vf-module\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \n\t\t\tAND vf-module.vf-module-id = $ss.param.vf-module-id \"\n\tpfx=\"tmp.aai.vfmdoule\" >\n\n","comments":"","outputs":1,"x":1666.3218803405762,"y":3363.5716791152954,"z":"8068ded9.ccc26","wires":[["33df8cfd.d9e204","7ca5615.b5bdba"]]},{"id":"33df8cfd.d9e204","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1855.571865081787,"y":3363.071623802185,"z":"8068ded9.ccc26","wires":[["3a7cd486.8bb8bc"]]},{"id":"7ca5615.b5bdba","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1863.2503471374512,"y":3419.1073150634766,"z":"8068ded9.ccc26","wires":[["946f5847.827928"]]},{"id":"a40c159f.2d73b8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2070.7502822875977,"y":3563.5600509643555,"z":"8068ded9.ccc26","wires":[["fb61694.f0eee98","e9ef052a.050278"]]},{"id":"f18e9019.bd386","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2073.6074981689453,"y":3614.4171924591064,"z":"8068ded9.ccc26","wires":[["8d0b8b24.ceee48","e9ef052a.050278"]]},{"id":"1fa7644b.ffce9c","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":6137.54887008667,"y":3110.5131034851074,"z":"8068ded9.ccc26","wires":[]},{"id":"a0326122.57c02","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":6328.441631317139,"y":3255.656030654907,"z":"8068ded9.ccc26","wires":[["16cfd259.a82d8e"]]},{"id":"1c8efb54.0d2e25","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":5828.72732925415,"y":3066.906047821045,"z":"8068ded9.ccc26","wires":[["1fa7644b.ffce9c","5f17c4a8.0dac0c","c5a30c47.4e84c"]]},{"id":"d11853ad.952b6","type":"save","name":"Rollback vf-module update","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"vf-module\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \n\t\t\tAND vf-module.vf-module-id = $ss.param.vf-module-id \" >\n<parameter name=\"vf-module-name\" value='`$tmp.aai.vfmdoule.vf-module-name`' />\n<parameter name=\"selflink\" value='`$tmp.aai.vfmdoule.selflink`' />","comments":"","outputs":1,"x":5913.00138092041,"y":3500.2506856918335,"z":"8068ded9.ccc26","wires":[["900b7985.d88088","d5f6460b.1a20b8","98d622a6.0af76"]]},{"id":"900b7985.d88088","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":6151.251365661621,"y":3499.750630378723,"z":"8068ded9.ccc26","wires":[["dfd2d7b3.3404f8"]]},{"id":"d5f6460b.1a20b8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":6159.501377105713,"y":3542.5006647109985,"z":"8068ded9.ccc26","wires":[["c4a7132d.b535c"]]},{"id":"98d622a6.0af76","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":6156.322624206543,"y":3585.762234687805,"z":"8068ded9.ccc26","wires":[["a9be3e4a.97414"]]},{"id":"7b910270.aa145c","type":"outcome","name":"vnfc-name","xml":"<outcome value='vnfc-name'>","comments":"","outputs":1,"x":2312.238136291504,"y":666.6665997505188,"z":"8068ded9.ccc26","wires":[["71eabe9b.2eb27"]]},{"id":"71eabe9b.2eb27","type":"set","name":"set ss.param.vnfc-name, index","xml":"<set>\n<parameter name='ss.param.vnfc-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.vnfc-name-index' value='`$bidx`' />","comments":"","x":2678.3453636169434,"y":667.416672706604,"z":"8068ded9.ccc26","wires":[]},{"id":"87beb09a.09ea7","type":"comment","name":"vf-module params","info":"","comments":"","x":1945.9046783447266,"y":543.9523286819458,"z":"8068ded9.ccc26","wires":[]},{"id":"22799e1.3c96862","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to get vf-module in AnAI with vf-module-id = ' + $ss.param.vf-module-id  + '; ' + $error-message`\" />\n","comments":"","x":2223.869354248047,"y":3399.0717306137085,"z":"8068ded9.ccc26","wires":[]},{"id":"3a7cd486.8bb8bc","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2027.5361137390137,"y":3363.5717878341675,"z":"8068ded9.ccc26","wires":[["22799e1.3c96862","e9ef052a.050278"]]},{"id":"946f5847.827928","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2027.7860946655273,"y":3419.0717668533325,"z":"8068ded9.ccc26","wires":[["b02b7bf8.605ee8","e9ef052a.050278"]]},{"id":"2f247634.a3188a","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":6507.191570281982,"y":3155.7631006240845,"z":"8068ded9.ccc26","wires":[]},{"id":"d35c334f.7cfba","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":6509.691570281982,"y":3207.013102531433,"z":"8068ded9.ccc26","wires":[]},{"id":"16cfd259.a82d8e","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback of generic-vnf update completed. '`\" />\n","comments":"","x":6512.191570281982,"y":3256.0131006240845,"z":"8068ded9.ccc26","wires":[]},{"id":"fb61694.f0eee98","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 vf-module-name with vf-module-id = ' + $ss.param.vf-module-id + ' in AnAI; ' + $error-message`\" />\n","comments":"","x":2263.631217956543,"y":3588.881335258484,"z":"8068ded9.ccc26","wires":[]},{"id":"8d0b8b24.ceee48","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 vf-module-name with vf-module-id =' + $ss.param.vf-module-id + ' because vf-module is not found in AAI' + $error-message`\" />\n","comments":"","x":2264.881217956543,"y":3639.6313371658325,"z":"8068ded9.ccc26","wires":[]},{"id":"c1b8579b.771458","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 volume-group with volume-group-id =' + $ss.param.volume-group-id + ' and volume-group-name = ' + $ss.param.volume-group-name + ' in AnAI.' + $error-message`\" />\n","comments":"","x":2271.4525833129883,"y":4009.0239968299866,"z":"8068ded9.ccc26","wires":[]},{"id":"dfd2d7b3.3404f8","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`\" />\n","comments":"","x":6332.679847717285,"y":3499.215039253235,"z":"8068ded9.ccc26","wires":[]},{"id":"c4a7132d.b535c","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`\" />\n","comments":"","x":6351.679847717285,"y":3541.715039253235,"z":"8068ded9.ccc26","wires":[]},{"id":"c5a30c47.4e84c","type":"record","name":"record generic-vnf ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK generic-vnf update\"/>","comments":"","outputs":1,"x":6091.691570281982,"y":3066.013101577759,"z":"8068ded9.ccc26","wires":[[]]},{"id":"68e7f351.24dd5c","type":"record","name":"record vf-module ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK vf-module update\"/>","comments":"","outputs":1,"x":5920.929847717285,"y":3455.7150382995605,"z":"8068ded9.ccc26","wires":[[]]},{"id":"3d611339.da18cc","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":5676.929817199707,"y":3455.965012550354,"z":"8068ded9.ccc26","wires":[["68e7f351.24dd5c","d11853ad.952b6"]]},{"id":"a9be3e4a.97414","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback of vf-module update completed.'`\" />\n","comments":"","x":6339.42985534668,"y":3585.2150373458862,"z":"8068ded9.ccc26","wires":[]},{"id":"e4fa8909.4dd298","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":5951.6198387146,"y":3776.524684906006,"z":"8068ded9.ccc26","wires":[["599748a7.318d38"]]},{"id":"e6cf9e60.36c21","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":5959.869850158691,"y":3819.2747192382812,"z":"8068ded9.ccc26","wires":[["f362ddc.8a3be2"]]},{"id":"1a42d1bd.7e06ae","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":5956.6910972595215,"y":3862.536289215088,"z":"8068ded9.ccc26","wires":[["a0127c63.8e7e9"]]},{"id":"599748a7.318d38","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":6133.048320770264,"y":3775.9890937805176,"z":"8068ded9.ccc26","wires":[]},{"id":"f362ddc.8a3be2","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`\" />\n","comments":"","x":6152.048320770264,"y":3819.4890937805176,"z":"8068ded9.ccc26","wires":[]},{"id":"eb495056.566df","type":"record","name":"record volume-group ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK volume-group update\"/>","comments":"","outputs":1,"x":5783.298320770264,"y":3732.4890928268433,"z":"8068ded9.ccc26","wires":[[]]},{"id":"5688630b.c730bc","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":5528.298290252686,"y":3732.7390670776367,"z":"8068ded9.ccc26","wires":[["eb495056.566df","fd633781.1bf9c8"]]},{"id":"a0127c63.8e7e9","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback of volume_group completed.'`\" />\n","comments":"","x":6139.798328399658,"y":3862.989091873169,"z":"8068ded9.ccc26","wires":[]},{"id":"6e76a93a.5e0588","type":"save","name":"save VNFC","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"vnfc\"\n\t\tkey=\"vnfc.vnfc-name = $ss.param.vnfc-name\" >\n<parameter name=\"nfc-naming-code\" value='`$ss.param.nfc-naming-code`' />\n<parameter name=\"nfc-function\" value='`$ss.param.nfc-function`' />\n<parameter name=\"model-customization-id\" value='`$ss.param.vnfc-model-customization-uuid`' />\n<parameter name=\"model-invariant-id\" value='`$ss.param.vnfc-model-invariant-uuid`' />\n<parameter name=\"model-version-id\" value='`$ss.param.vnfc-model-version`' />\n","comments":"","outputs":1,"x":1367.1668243408203,"y":4289.833667755127,"z":"8068ded9.ccc26","wires":[["d8805021.0b8d1","1a8d278c.ff1d48"]]},{"id":"d8805021.0b8d1","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1556.1668243408203,"y":4289.833667755127,"z":"8068ded9.ccc26","wires":[["95d6f18e.5f4b6"]]},{"id":"95d6f18e.5f4b6","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1758.9168167114258,"y":4289.833641052246,"z":"8068ded9.ccc26","wires":[["6b1f5790.4f6e98","4c4f8f77.4d5e8"]]},{"id":"6b1f5790.4f6e98","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`' Failed to create vnfc with vnfc-name =' + $ss.param.vnfc-name + ' in AnAI. ' + $error-message`\" />\n","comments":"","x":1969.9526290893555,"y":4333.024550437927,"z":"8068ded9.ccc26","wires":[]},{"id":"a48e88aa.092058","type":"save","name":"delete vnfc","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"vnfc\"\n\t\tkey=\"vnfc.vnfc-name = $ss.param.vnfc-name\" >","comments":"","outputs":1,"x":5535.810607910156,"y":4058.9404010772705,"z":"8068ded9.ccc26","wires":[["59027b46.55df94","f9986c81.947e2","e0dbfb82.72b598"]]},{"id":"59027b46.55df94","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":5742.881973266602,"y":4059.4161376953125,"z":"8068ded9.ccc26","wires":[["6a891b2f.3bef34"]]},{"id":"f9986c81.947e2","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":5751.131984710693,"y":4102.166172027588,"z":"8068ded9.ccc26","wires":[["56f5e4c5.27919c"]]},{"id":"e0dbfb82.72b598","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":5747.953231811523,"y":4145.4277420043945,"z":"8068ded9.ccc26","wires":[["f4aa6356.d4417"]]},{"id":"d76a7da6.218ec","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":6180.310455322266,"y":4058.880546569824,"z":"8068ded9.ccc26","wires":[]},{"id":"56f5e4c5.27919c","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`\" />\n","comments":"","x":5943.310455322266,"y":4102.380546569824,"z":"8068ded9.ccc26","wires":[]},{"id":"eac4f91c.88d308","type":"record","name":"record vnfc ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK vnfc save\"/>","comments":"","outputs":1,"x":5573.560455322266,"y":4010.38054561615,"z":"8068ded9.ccc26","wires":[[]]},{"id":"35fbb6bd.1fe98a","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":5330.560405731201,"y":4010.0591592788696,"z":"8068ded9.ccc26","wires":[["eac4f91c.88d308","a48e88aa.092058"]]},{"id":"f4aa6356.d4417","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`\" />\n","comments":"","x":5931.06046295166,"y":4145.880544662476,"z":"8068ded9.ccc26","wires":[]},{"id":"507e9295.282f3c","type":"save","name":"save connection-point","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"cp\"\n\t\tkey=\"cp.cp-instance-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.connection-point-id \n\t\tAND vnfc.vnfc-name = $ss.param.vnfc-name\" >\n<parameter name=\"cp-instance-id\" \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.connection-point-id`' />","comments":"","outputs":1,"x":1392.6549758911133,"y":4722.262181758881,"z":"8068ded9.ccc26","wires":[["8ed5705c.d927b","97aa540.9690fb","bd216744.2e7838"]]},{"id":"8ed5705c.d927b","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1613.6549758911133,"y":4722.262181758881,"z":"8068ded9.ccc26","wires":[["f28efc5d.8666"]]},{"id":"f28efc5d.8666","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1807.4049682617188,"y":4722.262155056,"z":"8068ded9.ccc26","wires":[["faf8768d.f51cd8","f742ee1.12f671"]]},{"id":"faf8768d.f51cd8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`' Failed to create connection-point with cp-instance-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.connection-point-id + ' in AnAI. ' + $error-message`\" />\n","comments":"","x":1991.5836181640625,"y":4722.595781803131,"z":"8068ded9.ccc26","wires":[]},{"id":"b7dc825b.8fad","type":"for","name":"for i in vnfc-network-data_length","xml":"<for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >\n","comments":"","outputs":1,"x":1111.3691940307617,"y":4721.762137889862,"z":"8068ded9.ccc26","wires":[["507e9295.282f3c"]]},{"id":"896eec17.9592f","type":"save","name":"save vlan-tag","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"vlan-tag\"\n\t\tkey=\"vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid\" >\n<parameter name=\"vlan-tag-id\" \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid`' />\n<parameter name=\"vlan-tag-role\" \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-tag-description`' />\n<parameter name=\"vlan-id-outer\" \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-tag-id`' />\n","comments":"","outputs":1,"x":2053.964241027832,"y":4818.345309019089,"z":"8068ded9.ccc26","wires":[["90f51779.f5ecd8","c0d3b01c.95c65","d246ced9.39264"]]},{"id":"90f51779.f5ecd8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2245.9643630981445,"y":4970.012247085571,"z":"8068ded9.ccc26","wires":[["1a95aa75.a66626"]]},{"id":"1a95aa75.a66626","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2437.71435546875,"y":4970.01222038269,"z":"8068ded9.ccc26","wires":[["8c5a2a75.a586c8","42ba330d.da466c"]]},{"id":"8c5a2a75.a586c8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`' Failed to create vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' in AnAI. ' + $error-message`\" />\n","comments":"","x":2617.8930053710938,"y":4970.345847129822,"z":"8068ded9.ccc26","wires":[]},{"id":"4fa2d7bb.85da48","type":"save","name":"save l-interface","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"l-interface\"\n\t\tkey=\"l-interface.interface-name = $ss.param.oam-interface-name\n\t\tAND generic-vnf.vnf-id = $ss.param.vnf-id\" >\n<parameter name=\"interface-name\" value='`$ss.param.oam-interface-name`' />\n<parameter name=\"interface-role\" value='OAM' />\n","comments":"","outputs":1,"x":2010.8334274291992,"y":5397.713664054871,"z":"8068ded9.ccc26","wires":[["224508bf.eb67c8","3ac567fb.ca3628"]]},{"id":"224508bf.eb67c8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2183.833427429199,"y":5397.713664054871,"z":"8068ded9.ccc26","wires":[["438d491f.6bf318"]]},{"id":"438d491f.6bf318","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2353.5834197998047,"y":5397.71363735199,"z":"8068ded9.ccc26","wires":[["1dcac7c7.528ac8","42ba330d.da466c"]]},{"id":"1dcac7c7.528ac8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`' Failed to create l-interface with interface-name = ' + $ss.param.oam-interface-name + ' in AnAI. ' + $error-message`\" />\n","comments":"","x":2537.7620697021484,"y":5398.047264099121,"z":"8068ded9.ccc26","wires":[]},{"id":"8b4528ae.6e6858","type":"for","name":"for j in in vlan-data_length","xml":"<for silentFailure='true' index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >\n","comments":"","outputs":1,"x":1831.9284744262695,"y":4818.095413923264,"z":"8068ded9.ccc26","wires":[["896eec17.9592f"]]},{"id":"97aa540.9690fb","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1622.1192169189453,"y":4767.762180805206,"z":"8068ded9.ccc26","wires":[["f28efc5d.8666"]]},{"id":"9d96ee38.6074","type":"save","name":"delete vlan-tag","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"vlan-tag\"\n\t\tkey=\"vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid\" >","comments":"","outputs":1,"x":5547.858245849609,"y":4404.714177131653,"z":"8068ded9.ccc26","wires":[["7d9dc434.97b09c","dffb9406.38c898","9773800c.66ae6"]]},{"id":"7d9dc434.97b09c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":5754.929611206055,"y":4405.189913749695,"z":"8068ded9.ccc26","wires":[["395726ee.6fab7a"]]},{"id":"dffb9406.38c898","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":5763.1796226501465,"y":4447.93994808197,"z":"8068ded9.ccc26","wires":[["b21b98a6.1ff6e8"]]},{"id":"9773800c.66ae6","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":5760.000869750977,"y":4491.201518058777,"z":"8068ded9.ccc26","wires":[["386810b6.14634"]]},{"id":"f8e8b37a.dee57","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":6193.02498626709,"y":4403.987699985504,"z":"8068ded9.ccc26","wires":[]},{"id":"b21b98a6.1ff6e8","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`\" />\n","comments":"","x":5955.358093261719,"y":4448.1543226242065,"z":"8068ded9.ccc26","wires":[]},{"id":"a26d40b4.008af","type":"record","name":"record vlan-tag ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK vlan-tag save\"/>","comments":"","outputs":1,"x":5008.322776794434,"y":4355.43992805481,"z":"8068ded9.ccc26","wires":[[]]},{"id":"470ddb4b.ffbda4","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":4746.3227462768555,"y":4355.689902305603,"z":"8068ded9.ccc26","wires":[["a26d40b4.008af","c9166e05.d9ebc"]]},{"id":"386810b6.14634","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`\" />\n","comments":"","x":5943.108100891113,"y":4491.654320716858,"z":"8068ded9.ccc26","wires":[]},{"id":"f488880c.8a9458","type":"comment","name":"Deleting vnfc will delete connection-point (cp)","info":"","comments":"","x":1916.6429901123047,"y":4669.309711933136,"z":"8068ded9.ccc26","wires":[]},{"id":"c0d3b01c.95c65","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2254.285804748535,"y":5016.333622932434,"z":"8068ded9.ccc26","wires":[["1a95aa75.a66626"]]},{"id":"c9166e05.d9ebc","type":"for","name":"for i in vnfc-network-data_len","xml":"<for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >\n","comments":"","outputs":1,"x":5013.429954528809,"y":4405.285639762878,"z":"8068ded9.ccc26","wires":[["6be8fd40.579294"]]},{"id":"6be8fd40.579294","type":"for","name":"for j in in vlan-data_length","xml":"<for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >\n","comments":"","outputs":1,"x":5309.858543395996,"y":4405.142817497253,"z":"8068ded9.ccc26","wires":[["9d96ee38.6074"]]},{"id":"2f9cf95b.a79726","type":"save","name":"save cp relationship","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"vlan-tag:relationship-list\"\n\t\tkey=\"vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"cp\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`$ss.cp.related-link`\" />","comments":"","outputs":1,"x":2627.2376022338867,"y":4866.238368272781,"z":"8068ded9.ccc26","wires":[["6ec967b.2c20298","11ee6506.d86e0b"]]},{"id":"6ec967b.2c20298","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2836.5233764648438,"y":4865.809748888016,"z":"8068ded9.ccc26","wires":[["a92d33a0.72b72"]]},{"id":"a92d33a0.72b72","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3028.5589179992676,"y":4865.809715509415,"z":"8068ded9.ccc26","wires":[["c5386653.0ce498","42ba330d.da466c"]]},{"id":"c5386653.0ce498","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`' Failed to create cp relationship for vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' in AnAI. ' + $error-message`\" />\n","comments":"","x":3208.7375679016113,"y":4866.143342256546,"z":"8068ded9.ccc26","wires":[]},{"id":"bd216744.2e7838","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1618.9524230957031,"y":4818.1908004283905,"z":"8068ded9.ccc26","wires":[["8b4528ae.6e6858"]]},{"id":"a7a813a9.685fe","type":"outcome","name":"oam-interface-name","xml":"<outcome value='oam-interface-name'>","comments":"","outputs":1,"x":2343.238121032715,"y":709.476101398468,"z":"8068ded9.ccc26","wires":[["82258c34.cd46e"]]},{"id":"82258c34.cd46e","type":"set","name":"set ss.param.oam-interface-name, index","xml":"<set>\n<parameter name='ss.param.oam-interface-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.oam-interface-name-index' value='`$bidx`' />","comments":"","x":2706.3453483581543,"y":710.2261743545532,"z":"8068ded9.ccc26","wires":[]},{"id":"4a38191a.665008","type":"outcome","name":"lo0-interface-name","xml":"<outcome value='=”lo0-interface-name'>","comments":"","outputs":1,"x":2339.952323913574,"y":752.19047498703,"z":"8068ded9.ccc26","wires":[["d1e11e09.3c6"]]},{"id":"d1e11e09.3c6","type":"set","name":"set ss.param.lo0-interface-name, index","xml":"<set>\n<parameter name='ss.param.lo0-interface-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.lo0-interface-name-index' value='`$bidx`' />","comments":"","x":2701.0595512390137,"y":752.9405479431152,"z":"8068ded9.ccc26","wires":[]},{"id":"4c4f8f77.4d5e8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4858.048778533936,"y":3553.6912155151367,"z":"8068ded9.ccc26","wires":[["1dadc5fe.f7b3aa","5baa82ec.dffecc"]]},{"id":"f742ee1.12f671","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":4703.0722579956055,"y":3806.166953086853,"z":"8068ded9.ccc26","wires":[["4c4f8f77.4d5e8","b6293e2c.6351f"]]},{"id":"42ba330d.da466c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4545.6201095581055,"y":4096.262167930603,"z":"8068ded9.ccc26","wires":[["f742ee1.12f671","470ddb4b.ffbda4"]]},{"id":"d246ced9.39264","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2244.618579864502,"y":4818.047558784485,"z":"8068ded9.ccc26","wires":[["998e8a86.fc6368"]]},{"id":"75214bc4.1bbaa4","type":"switchNode","name":"switch: ss.param.oam-interface-name != NULL","xml":"<switch test=\"`$ss.param.oam-interface-name != ''`\">\n","comments":"","outputs":1,"x":1358.1906280517578,"y":5397.285633087158,"z":"8068ded9.ccc26","wires":[["ccf9556c.f89178"]]},{"id":"ccf9556c.f89178","type":"outcome","name":"true","xml":"<outcome value='true'>","comments":"","outputs":1,"x":1621.1906509399414,"y":5397.785631656647,"z":"8068ded9.ccc26","wires":[["e90d4fd9.29402"]]},{"id":"c64f4bcd.8c05f8","type":"save","name":"save l-interface","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"l-interface\"\n\t\tkey=\"l-interface.interface-name = $ss.param.lo0-interface-name\n\t\tAND generic-vnf.vnf-id = $ss.param.vnf-id\" >\n<parameter name=\"interface-name\" value='`$ss.param.lo0-interface-name`' />\n<parameter name=\"interface-role\" value='loopback' />\n","comments":"","outputs":1,"x":1990.7620086669922,"y":5735.571220397949,"z":"8068ded9.ccc26","wires":[["4e5bd967.48b608","3510ef13.90d34"]]},{"id":"4e5bd967.48b608","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2163.762008666992,"y":5735.571220397949,"z":"8068ded9.ccc26","wires":[["c67b407c.73c1a"]]},{"id":"c67b407c.73c1a","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2333.5120010375977,"y":5735.571193695068,"z":"8068ded9.ccc26","wires":[["f0cb5410.f03658","75ee05f7.6473bc"]]},{"id":"f0cb5410.f03658","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`' Failed to create l-interface with interface-name = ' + $ss.param.lo0-interface-name + ' in AnAI. ' + $error-message`\" />\n","comments":"","x":2517.6906509399414,"y":5735.9048204422,"z":"8068ded9.ccc26","wires":[]},{"id":"3d7d185.baa90e8","type":"switchNode","name":"switch: ss.param.lo0-interface-name != NULL","xml":"<switch test=\"`$ss.param.lo0-interface-name != ''`\">\n","comments":"","outputs":1,"x":1335.5476608276367,"y":5735.571606636047,"z":"8068ded9.ccc26","wires":[["9e2c16cf.876d78"]]},{"id":"9e2c16cf.876d78","type":"outcome","name":"true","xml":"<outcome value='true'>","comments":"","outputs":1,"x":1598.5476837158203,"y":5736.071605205536,"z":"8068ded9.ccc26","wires":[["4852b9cd.b1f178"]]},{"id":"dbc07084.be7f5","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1060.9048385620117,"y":5397.714184761047,"z":"8068ded9.ccc26","wires":[["75214bc4.1bbaa4","3d7d185.baa90e8"]]},{"id":"68af07a3.16ce88","type":"outcome","name":"ipv4-oam-address","xml":"<outcome value='ipv4-oam-address'>","comments":"","outputs":1,"x":2335.7143173217773,"y":796.3809504508972,"z":"8068ded9.ccc26","wires":[["999cc01d.893d6"]]},{"id":"999cc01d.893d6","type":"set","name":"set ss.param.ipv4-oam-address, index","xml":"<set>\n<parameter name='ss.param.ipv4-oam-address' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.ipv4-oam-address-index' value='`$bidx`' />","comments":"","x":2699.678642272949,"y":797.1309986114502,"z":"8068ded9.ccc26","wires":[]},{"id":"10ef55c1.e5abda","type":"outcome","name":"loopback0_ipv4_address","xml":"<outcome value='loopback0_ipv4_address'>","comments":"","outputs":1,"x":2358.1428451538086,"y":880.6666750907898,"z":"8068ded9.ccc26","wires":[["2d6cf27a.9e02fe"]]},{"id":"2d6cf27a.9e02fe","type":"set","name":"set ss.param.loopback0-ipv4-address, index","xml":"<set>\n<parameter name='ss.param.loopback0-ipv4-address' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.loopback0-ipv4-address-index' value='`$bidx`' />","comments":"","x":2719.3930130004883,"y":880.2738108634949,"z":"8068ded9.ccc26","wires":[]},{"id":"ae3cb914.642ab8","type":"save","name":"delete l-interface (oam)","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"l-interface\"\n\t\tkey=\"l-interface.interface-name = $ss.param.oam-interface-name\n\t\tAND generic-vnf.vnf-id = $ss.param.vnf-id\" >","comments":"","outputs":1,"x":5804.525096893311,"y":4807.285605430603,"z":"8068ded9.ccc26","wires":[["88e8efea.35169","99eafa73.541068","3d9cbb53.db7764"]]},{"id":"88e8efea.35169","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":6012.596462249756,"y":4807.761342048645,"z":"8068ded9.ccc26","wires":[["ba1b62f2.0c98"]]},{"id":"99eafa73.541068","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":6020.846473693848,"y":4850.51137638092,"z":"8068ded9.ccc26","wires":[["46d515d3.0378ac"]]},{"id":"3d9cbb53.db7764","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":6017.667720794678,"y":4893.772946357727,"z":"8068ded9.ccc26","wires":[["f05862ba.8abb5"]]},{"id":"8c6a392a.c8ded8","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":6455.692127227783,"y":4808.225975036621,"z":"8068ded9.ccc26","wires":[]},{"id":"46d515d3.0378ac","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`\" />\n","comments":"","x":6213.02494430542,"y":4850.725750923157,"z":"8068ded9.ccc26","wires":[]},{"id":"cf73d4b9.868fc8","type":"record","name":"record OAM l-interface ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK l-interface (oam) save\"/>","comments":"","outputs":1,"x":5321.274875640869,"y":4758.868654251099,"z":"8068ded9.ccc26","wires":[[]]},{"id":"5de01092.e1692","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":5061.274826049805,"y":4758.547267913818,"z":"8068ded9.ccc26","wires":[["cf73d4b9.868fc8","8981860f.667448"]]},{"id":"f05862ba.8abb5","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + '  completed.'`\" />\n","comments":"","x":6200.774951934814,"y":4894.225749015808,"z":"8068ded9.ccc26","wires":[]},{"id":"8981860f.667448","type":"switchNode","name":"switch: ss.param.oam-interface-name != NULL","xml":"<switch test=\"`$ss.param.oam-interface-name != ''`\">\n","comments":"","outputs":1,"x":5356.525089263916,"y":4808.142771720886,"z":"8068ded9.ccc26","wires":[["48c1dee3.50f7f"]]},{"id":"48c1dee3.50f7f","type":"outcome","name":"true","xml":"<outcome value='true'>","comments":"","outputs":1,"x":5615.382266998291,"y":4807.142771720886,"z":"8068ded9.ccc26","wires":[["ae3cb914.642ab8"]]},{"id":"6fca57ea.3397e8","type":"save","name":"delete l-interface (oam)","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"l-interface\"\n\t\tkey=\"l-interface.interface-name = $ss.param.lo0-interface-name\n\t\tAND generic-vnf.vnf-id = $ss.param.vnf-id\" >","comments":"","outputs":1,"x":5709.619335174561,"y":5214.714804649353,"z":"8068ded9.ccc26","wires":[["3fbb9856.3afac8","21a87462.f4342c","d4c7d7a5.d0fbd8"]]},{"id":"3fbb9856.3afac8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":5917.690700531006,"y":5215.190541267395,"z":"8068ded9.ccc26","wires":[["e857a6e0.098918"]]},{"id":"21a87462.f4342c","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":5925.940711975098,"y":5257.94057559967,"z":"8068ded9.ccc26","wires":[["cc064c02.22a01"]]},{"id":"d4c7d7a5.d0fbd8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":5922.761959075928,"y":5301.202145576477,"z":"8068ded9.ccc26","wires":[["1e79dbee.93e174"]]},{"id":"9c8d41ed.27a7c","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":6372.4523277282715,"y":5213.321630477905,"z":"8068ded9.ccc26","wires":[]},{"id":"cc064c02.22a01","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' not found in AAI. Consider silent success!'`\" />\n","comments":"","x":6118.11918258667,"y":5258.154950141907,"z":"8068ded9.ccc26","wires":[]},{"id":"a5d6d0ff.1e13d","type":"record","name":"record LOOPBACK l-interface ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK l-interface (oam) save\"/>","comments":"","outputs":1,"x":5250.369113922119,"y":5166.297853469849,"z":"8068ded9.ccc26","wires":[[]]},{"id":"3199093e.07e6f6","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":4966.369064331055,"y":5165.976467132568,"z":"8068ded9.ccc26","wires":[["a5d6d0ff.1e13d","3475a838.9659a8"]]},{"id":"1e79dbee.93e174","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.lo0-interface-name + '  completed.'`\" />\n","comments":"","x":6105.869190216064,"y":5301.654948234558,"z":"8068ded9.ccc26","wires":[]},{"id":"b614f632.2d7158","type":"outcome","name":"true","xml":"<outcome value='true'>","comments":"","outputs":1,"x":5520.476505279541,"y":5214.571970939636,"z":"8068ded9.ccc26","wires":[["6fca57ea.3397e8"]]},{"id":"3475a838.9659a8","type":"switchNode","name":"switch: ss.param.lo0-interface-name != NULL","xml":"<switch test=\"`$ss.param.lo0-interface-name != ''`\">\n","comments":"","outputs":1,"x":5259.619167327881,"y":5215.14351940155,"z":"8068ded9.ccc26","wires":[["b614f632.2d7158"]]},{"id":"75ee05f7.6473bc","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4416.81022644043,"y":4415.476540565491,"z":"8068ded9.ccc26","wires":[["42ba330d.da466c","47592f63.65ff8"]]},{"id":"3ac567fb.ca3628","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2191.9047927856445,"y":5439.999988555908,"z":"8068ded9.ccc26","wires":[["438d491f.6bf318"]]},{"id":"3510ef13.90d34","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2170.7619094848633,"y":5778.142643928528,"z":"8068ded9.ccc26","wires":[["c67b407c.73c1a"]]},{"id":"5713a33e.10386c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4285.38126373291,"y":4891.666825294495,"z":"8068ded9.ccc26","wires":[["75ee05f7.6473bc","16cd30f3.c7e79f"]]},{"id":"91d6d0e4.e2cc2","type":"outcome","name":"ipv4-oam-address-prefix","xml":"<outcome value='ipv4-oam-address-prefix'>","comments":"","outputs":1,"x":2355.7143173217773,"y":838.3810153007507,"z":"8068ded9.ccc26","wires":[["8eb30e9d.19d4b"]]},{"id":"8eb30e9d.19d4b","type":"set","name":"set ss.param.ipv4-oam-address-prefix, index","xml":"<set>\n<parameter name='ss.param.ipv4-oam-address-prefix' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.ipv4-oam-address-prefix-index' value='`$bidx`' />","comments":"","x":2718.3928871154785,"y":838.5596051216125,"z":"8068ded9.ccc26","wires":[]},{"id":"e90d4fd9.29402","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1781.0476303100586,"y":5397.285304069519,"z":"8068ded9.ccc26","wires":[["4fa2d7bb.85da48","f10bbb20.7f4fc8"]]},{"id":"4852b9cd.b1f178","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1760.1904983520508,"y":5736.142643928528,"z":"8068ded9.ccc26","wires":[["c64f4bcd.8c05f8","e8551427.6b64e8"]]},{"id":"f10bbb20.7f4fc8","type":"save","name":"save l3-interface-ipv4-address","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"l3-interface-ipv4-address-list\"\n\t\tkey=\"l3-interface-ipv4-address-list.l3-interface-ipv4-address = $ss.param.ipv4-oam-address \n\t\tAND generic-vnf.vnf-id = $ss.param.vnf-id \n\t\tAND l-interface.interface-name = $ss.param.oam-interface-name\" >\n<parameter name=\"l3-interface-ipv4-address\" value='`$ss.param.ipv4-oam-address`' />\n<parameter name=\"l3-interface-ipv4-prefix-length\" value='`$ss.param.ipv4-oam-address-prefix`' />\n","comments":"","outputs":1,"x":2057.619125366211,"y":5542.999936103821,"z":"8068ded9.ccc26","wires":[["a8aab5fb.8eca68","93c4ee1c.dd6d6"]]},{"id":"a8aab5fb.8eca68","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2278.619125366211,"y":5542.999936103821,"z":"8068ded9.ccc26","wires":[["402e134b.ab039c"]]},{"id":"402e134b.ab039c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2448.3691177368164,"y":5542.99990940094,"z":"8068ded9.ccc26","wires":[["c292c4a4.2a1388","75ee05f7.6473bc"]]},{"id":"c292c4a4.2a1388","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`' Failed to create l3-interface-ipv4-address-list with l3-interface-ipv4-address = ' + $ss.param.ipv4-oam-address + ' in AnAI. ' + $error-message`\" />\n","comments":"","x":2632.54776763916,"y":5543.333536148071,"z":"8068ded9.ccc26","wires":[]},{"id":"93c4ee1c.dd6d6","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2286.6904907226562,"y":5585.286260604858,"z":"8068ded9.ccc26","wires":[["402e134b.ab039c"]]},{"id":"e8551427.6b64e8","type":"save","name":"save l3-interface-ipv4-address","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"l3-interface-ipv4-address-list\"\n\t\tkey=\"l3-interface-ipv4-address-list.l3-interface-ipv4-address = $ss.param.ipv4-loopback0-address \n\t\tAND generic-vnf.vnf-id = $ss.param.vnf-id \n\t\tAND l-interface.interface-name = $ss.param.lo0-interface-name\" >\n<parameter name=\"l3-interface-ipv4-address\" value='`$ss.param.ipv4-loopback0-address`' />\n<parameter name=\"l3-interface-ipv4-prefix-length\" value='32' />\n","comments":"","outputs":1,"x":2034.6191024780273,"y":5852.713961601257,"z":"8068ded9.ccc26","wires":[["2cfc8fb5.b92c4","a3b0bac1.66c468"]]},{"id":"2cfc8fb5.b92c4","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2255.6191024780273,"y":5852.713961601257,"z":"8068ded9.ccc26","wires":[["7b9df773.727b78"]]},{"id":"7b9df773.727b78","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2425.369094848633,"y":5852.7139348983765,"z":"8068ded9.ccc26","wires":[["7a983387.d8620c","5713a33e.10386c"]]},{"id":"7a983387.d8620c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`' Failed to create l3-interface-ipv4-address-list with l3-interface-ipv4-address = ' + $ss.param.loopback0-ipv4-address + ' in AnAI. ' + $error-message`\" />\n","comments":"","x":2609.5477447509766,"y":5853.047561645508,"z":"8068ded9.ccc26","wires":[]},{"id":"a3b0bac1.66c468","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2263.6904678344727,"y":5895.000286102295,"z":"8068ded9.ccc26","wires":[["7b9df773.727b78"]]},{"id":"1bae6e26.b48422","type":"comment","name":"Delete l-interface will delete l3-interface-ipv4-address-list","info":"","comments":"","x":4662.333908081055,"y":4894.429103851318,"z":"8068ded9.ccc26","wires":[]},{"id":"930c302f.87d9a","type":"execute","name":"param[].name startsWith 'sriov'","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`\" />\n\t<parameter name=\"target\" value=\"sriov\"/>\n","comments":"","outputs":1,"x":1611.0475387573242,"y":360.666711807251,"z":"8068ded9.ccc26","wires":[["d36b238f.c2eeb","136cf5dd.278b9a"]]},{"id":"d36b238f.c2eeb","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1821.2975387573242,"y":360.916711807251,"z":"8068ded9.ccc26","wires":[["71ba3468.524d5c"]]},{"id":"71ba3468.524d5c","type":"execute","name":"param[].name endsWith 'sriov'","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='endsWith' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`\" />\n\t<parameter name=\"target\" value=\"_net_id\"/>\n","comments":"","outputs":1,"x":2038.1903686523438,"y":360.6667175292969,"z":"8068ded9.ccc26","wires":[["f28d4124.551b2"]]},{"id":"f28d4124.551b2","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2248.1902389526367,"y":360.2381229400635,"z":"8068ded9.ccc26","wires":[["892a94df.748008"]]},{"id":"b1277757.3b3778","type":"set","name":"set ss.network[$nidx].netid","xml":"<set>\n<parameter name='ss.network[$nidx].netid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n","comments":"","x":2599.618574142456,"y":359.66666984558105,"z":"8068ded9.ccc26","wires":[]},{"id":"8447582e.713cf8","type":"set","name":"nidx++","xml":"<set>\n<parameter name='nidx' value='`$nidx + 1`' />\n","comments":"","x":2539.618682861328,"y":403.09529304504395,"z":"8068ded9.ccc26","wires":[]},{"id":"823c2354.c6c5","type":"set","name":"set nidx = 0","xml":"<set>\n<parameter name='nidx' value='0' />\n","comments":"","x":1208.190185546875,"y":277.2380828857422,"z":"8068ded9.ccc26","wires":[]},{"id":"892a94df.748008","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2386.761890411377,"y":360.52386569976807,"z":"8068ded9.ccc26","wires":[["b1277757.3b3778","8447582e.713cf8"]]},{"id":"136cf5dd.278b9a","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1822.4762840270996,"y":403.80954360961914,"z":"8068ded9.ccc26","wires":[["a1dc9b53.b001a8"]]},{"id":"b307f248.13b72","type":"for","name":"for n in nidx","xml":"<for silentFailure='true' index='n' start='0' end='`$nidx`' >\n","comments":"","outputs":1,"x":1454.952407836914,"y":6171.667496681213,"z":"8068ded9.ccc26","wires":[["2dbbe18d.9f749e"]]},{"id":"4933575b.c49bc8","type":"save","name":"save l3-network relationships for VNF","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf:relationship-list\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`$ss.l3-network.related-link`\" />\n<!--\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"l3-network.network-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$ss.network[$n].netid`\" />\n-->","comments":"","outputs":1,"x":1898.1426467895508,"y":6219.333839416504,"z":"8068ded9.ccc26","wires":[["5f1ee172.8d495","f18a8eef.b86b4"]]},{"id":"11ee6506.d86e0b","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2845.761329650879,"y":4910.857924699783,"z":"8068ded9.ccc26","wires":[["a92d33a0.72b72"]]},{"id":"5f1ee172.8d495","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2173.857063293457,"y":6220.048072814941,"z":"8068ded9.ccc26","wires":[["61369a55.267e34"]]},{"id":"61369a55.267e34","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2370.6070556640625,"y":6220.048046112061,"z":"8068ded9.ccc26","wires":[["b7e15b92.6b9328","a7686c4c.48a2b"]]},{"id":"b7e15b92.6b9328","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`' Failed to create generic-vnf releationship for l3-network with network-id =' + $ss.network[$n].netid + ' in AnAI. ' + $error-message`\" />\n","comments":"","x":2550.7857055664062,"y":6220.381672859192,"z":"8068ded9.ccc26","wires":[]},{"id":"f18a8eef.b86b4","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2183.095016479492,"y":6265.096248626709,"z":"8068ded9.ccc26","wires":[["61369a55.267e34"]]},{"id":"48809820.da73e8","type":"save","name":"delete VNF l3-network relationships","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf:relationship-list\" \n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \n\t\tAND related-to = l3-network \n\t\tAND relationship.related-link = $tmp.related-link\" >","comments":"","outputs":1,"x":5329.524971008301,"y":5635.285350322723,"z":"8068ded9.ccc26","wires":[["88a59c9a.2b00b","de38bac1.0b21e8","71f6c03f.9af32"]]},{"id":"88a59c9a.2b00b","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":5592.596336364746,"y":5635.761086940765,"z":"8068ded9.ccc26","wires":[["7d871113.d9d1b"]]},{"id":"de38bac1.0b21e8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":5600.846347808838,"y":5678.511121273041,"z":"8068ded9.ccc26","wires":[["ea95c949.66b368"]]},{"id":"71f6c03f.9af32","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":5597.667594909668,"y":5721.772691249847,"z":"8068ded9.ccc26","wires":[["ad0bb67e.3bf9b8"]]},{"id":"ffea8954.bee348","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to delete VNF l3-network relationship for generic-vnf.vnfid = ' + $ss.param.vnf-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":6059.02445602417,"y":5634.891801357269,"z":"8068ded9.ccc26","wires":[]},{"id":"ea95c949.66b368","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' l3-network relationship with related-path = ' + $tmp.related-path  + ' not found in AAI. Consider silent success!'`\" />\n","comments":"","x":5793.02481842041,"y":5678.725495815277,"z":"8068ded9.ccc26","wires":[]},{"id":"fc646437.90d098","type":"record","name":"record VNF l3-network relationship ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK VNF l3-network relationship\"/>","comments":"","outputs":1,"x":5173.512390136719,"y":5526.345165252686,"z":"8068ded9.ccc26","wires":[[]]},{"id":"e665f06b.96f35","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":4855.9888916015625,"y":5527.166730880737,"z":"8068ded9.ccc26","wires":[["fc646437.90d098","2f789ede.6f8722"]]},{"id":"ad0bb67e.3bf9b8","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback (delete) of generic-vnf l3-network relationships completed.'`\" />\n","comments":"","x":5780.774826049805,"y":5722.2254939079285,"z":"8068ded9.ccc26","wires":[]},{"id":"2f789ede.6f8722","type":"for","name":"for n in nidx","xml":"<for silentFailure='true' index='n' start='0' end='`$nidx`' >\n","comments":"","outputs":1,"x":5061.143711090088,"y":5587.381254673004,"z":"8068ded9.ccc26","wires":[["48809820.da73e8","4faa8555.6c3d7c"]]},{"id":"a7686c4c.48a2b","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4141.334602355957,"y":5268.095029830933,"z":"8068ded9.ccc26","wires":[["5713a33e.10386c","ecb6efb1.19ad9"]]},{"id":"603a3397.22016c","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1893.3812103271484,"y":4058.47643327713,"z":"8068ded9.ccc26","wires":[["5819b51f.e401ec"]]},{"id":"8f404e48.285a6","type":"outcome","name":"aai-vf-module-put","xml":"<outcome value='aai-vf-module-put'>\n","comments":"","outputs":1,"x":2342.5713500976562,"y":1310.7143058776855,"z":"8068ded9.ccc26","wires":[["11703c8e.d0e733"]]},{"id":"51b14fbd.75b3e","type":"set","name":"set ss.param.aai-vf-module-put-index","xml":"<set>\n<parameter name='ss.param.aai-vf-module-put-index' value='`$bidx`' />\n","comments":"","x":2784.714401245117,"y":1310.5714855194092,"z":"8068ded9.ccc26","wires":[]},{"id":"43c0a50b.639d9c","type":"outcome","name":"unassign","xml":"<outcome value='unassign'>","comments":"","outputs":1,"x":469.1074523925781,"y":798.2615756988525,"z":"8068ded9.ccc26","wires":[["255c7c9f.01ed14"]]},{"id":"81d44ce6.28309","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":1025.5951538085938,"y":276.8809232711792,"z":"8068ded9.ccc26","wires":[["823c2354.c6c5","32c37498.d5047c","385ba57a.8df6da"]]},{"id":"11ac6461.2c5e7c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3352.3096084594727,"y":2988.3092212677,"z":"8068ded9.ccc26","wires":[["b6293e2c.6351f","470ddb4b.ffbda4","ecb6efb1.19ad9","47592f63.65ff8","16cd30f3.c7e79f"]]},{"id":"255c7c9f.01ed14","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":632.1905670166016,"y":797.7618198394775,"z":"8068ded9.ccc26","wires":[["11ac6461.2c5e7c","81d44ce6.28309","15d745ea.7fb6ba","b07947b2.6ba8c8"]]},{"id":"15d745ea.7fb6ba","type":"set","name":"set tmp.return-failure = true","xml":"<set>\n<parameter name='tmp.return-failure' value ='true' />","comments":"","x":1116.047607421875,"y":796.3332469463348,"z":"8068ded9.ccc26","wires":[]},{"id":"19fd6e4b.a54a02","type":"switchNode","name":"switch tmp.return-failure","xml":"<switch test='`$tmp.return-failure`'>\n","comments":"","outputs":1,"x":6194.024250030518,"y":4233.785830497742,"z":"8068ded9.ccc26","wires":[["e9f416b9.bf4c78"]]},{"id":"6a891b2f.3bef34","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":5944.691295623779,"y":4058.7855892181396,"z":"8068ded9.ccc26","wires":[["d76a7da6.218ec","19fd6e4b.a54a02"]]},{"id":"e9f416b9.bf4c78","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":6387.691581726074,"y":4233.7856702804565,"z":"8068ded9.ccc26","wires":[["bcf9460c.c83dd8"]]},{"id":"db5e8538.a78a48","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='`$error-message`' />\n","comments":"","x":6762.691753387451,"y":4285.1189222335815,"z":"8068ded9.ccc26","wires":[]},{"id":"395726ee.6fab7a","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":5954.024467468262,"y":4404.7858057022095,"z":"8068ded9.ccc26","wires":[["4031474c.e3e268","f8e8b37a.dee57"]]},{"id":"4031474c.e3e268","type":"switchNode","name":"switch tmp.return-failure","xml":"<switch test='`$tmp.return-failure`'>\n","comments":"","outputs":1,"x":6203.357421875,"y":4579.7860469818115,"z":"8068ded9.ccc26","wires":[["f7d354b0.a531b8"]]},{"id":"ba1b62f2.0c98","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":6237.691120147705,"y":4808.1190395355225,"z":"8068ded9.ccc26","wires":[["d37f00eb.31762","8c6a392a.c8ded8"]]},{"id":"d37f00eb.31762","type":"switchNode","name":"switch tmp.return-failure","xml":"<switch test='`$tmp.return-failure`'>\n","comments":"","outputs":1,"x":6487.024074554443,"y":4979.1192808151245,"z":"8068ded9.ccc26","wires":[["9c9b56a.2f3efa8"]]},{"id":"9c9b56a.2f3efa8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":6680.69140625,"y":4979.119120597839,"z":"8068ded9.ccc26","wires":[["6aab8121.6a61f"]]},{"id":"e857a6e0.098918","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":6149.690906524658,"y":5213.785968780518,"z":"8068ded9.ccc26","wires":[["63a5e50e.8c1fac","9c8d41ed.27a7c"]]},{"id":"63a5e50e.8c1fac","type":"switchNode","name":"switch tmp.return-failure","xml":"<switch test='`$tmp.return-failure`'>\n","comments":"","outputs":1,"x":6399.0238609313965,"y":5388.78621006012,"z":"8068ded9.ccc26","wires":[["2a23691a.d2dc36"]]},{"id":"2a23691a.d2dc36","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":6592.691192626953,"y":5388.7860498428345,"z":"8068ded9.ccc26","wires":[["303089b7.8759a6"]]},{"id":"7d871113.d9d1b","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":5828.2629737854,"y":5634.880418300629,"z":"8068ded9.ccc26","wires":[["9f47089c.1b3508","ffea8954.bee348"]]},{"id":"9f47089c.1b3508","type":"switchNode","name":"switch tmp.return-failure","xml":"<switch test='`$tmp.return-failure`'>\n","comments":"","outputs":1,"x":6077.595928192139,"y":5809.880659580231,"z":"8068ded9.ccc26","wires":[["5173c626.5e8d58"]]},{"id":"5173c626.5e8d58","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":6271.263259887695,"y":5809.880499362946,"z":"8068ded9.ccc26","wires":[["d589e67a.08f778"]]},{"id":"b07947b2.6ba8c8","type":"set","name":"set resource-resolution-data.status = DELETED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' \n\tvalue='DELETED' />\n","comments":"","x":966.9048004150391,"y":6656.333566665649,"z":"8068ded9.ccc26","wires":[]},{"id":"72952054.933dc","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":6860.024913787842,"y":4232.785665035248,"z":"8068ded9.ccc26","wires":[]},{"id":"bcf9460c.c83dd8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":6548.691387176514,"y":4233.118878364563,"z":"8068ded9.ccc26","wires":[["72952054.933dc","db5e8538.a78a48"]]},{"id":"f7d354b0.a531b8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":6397.024753570557,"y":4579.785886764526,"z":"8068ded9.ccc26","wires":[["eca1d6d8.eda8c8"]]},{"id":"20de2c42.a3d634","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='`$error-message`' />\n","comments":"","x":6775.691108703613,"y":4631.452404975891,"z":"8068ded9.ccc26","wires":[]},{"id":"7c8af4c6.8e0ccc","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":6873.024269104004,"y":4579.119147777557,"z":"8068ded9.ccc26","wires":[]},{"id":"eca1d6d8.eda8c8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":6561.690742492676,"y":4579.452361106873,"z":"8068ded9.ccc26","wires":[["7c8af4c6.8e0ccc","20de2c42.a3d634"]]},{"id":"935f61e6.451d4","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='`$error-message`' />\n","comments":"","x":7069.357624053955,"y":5031.1190395355225,"z":"8068ded9.ccc26","wires":[]},{"id":"6d4ca687.6e4358","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":7166.690784454346,"y":4978.785782337189,"z":"8068ded9.ccc26","wires":[]},{"id":"6aab8121.6a61f","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":6855.357257843018,"y":4979.118995666504,"z":"8068ded9.ccc26","wires":[["6d4ca687.6e4358","935f61e6.451d4"]]},{"id":"40d75454.77644c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='`$error-message`' />\n","comments":"","x":6976.357410430908,"y":5441.119464874268,"z":"8068ded9.ccc26","wires":[]},{"id":"51fd880c.bcbaf8","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":7073.690570831299,"y":5388.786207675934,"z":"8068ded9.ccc26","wires":[]},{"id":"303089b7.8759a6","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":6762.357044219971,"y":5389.119421005249,"z":"8068ded9.ccc26","wires":[["51fd880c.bcbaf8","40d75454.77644c"]]},{"id":"cafc31da.005e7","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='`$error-message`' />\n","comments":"","x":6661.596378326416,"y":5861.214030742645,"z":"8068ded9.ccc26","wires":[]},{"id":"dfaf7e7b.49ee9","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":6758.929538726807,"y":5808.8807735443115,"z":"8068ded9.ccc26","wires":[]},{"id":"d589e67a.08f778","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":6447.5960121154785,"y":5809.213986873627,"z":"8068ded9.ccc26","wires":[["dfaf7e7b.49ee9","cafc31da.005e7"]]},{"id":"133a1544.17dc0b","type":"outcome","name":"nfc-naming-code","xml":"<outcome value='nfc-naming-code'>","comments":"","outputs":1,"x":2334.3572387695312,"y":968.976146697998,"z":"8068ded9.ccc26","wires":[["25e3fff7.35115"]]},{"id":"25e3fff7.35115","type":"set","name":"set ss.param.vnfc-name, indexnfc-naming-code","xml":"<set>\n<parameter name='ss.param.nfc-naming-code' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.nfc-naming-code-index' value='`$bidx`' />","comments":"","x":2731.1787109375,"y":969.1547613143921,"z":"8068ded9.ccc26","wires":[]},{"id":"ec83fc2d.1db1b","type":"outcome","name":"nfc-function","xml":"<outcome value='nfc-function'>","comments":"","outputs":1,"x":2319.071521759033,"y":1010.4047336578369,"z":"8068ded9.ccc26","wires":[["79ed605a.86905"]]},{"id":"79ed605a.86905","type":"set","name":"set ss.param.nfc-function, index","xml":"<set>\n<parameter name='ss.param.nfc-function' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.nfc-function-index' value='`$bidx`' />","comments":"","x":2681.3215522766113,"y":1010.4405193328857,"z":"8068ded9.ccc26","wires":[]},{"id":"ca7c357a.02aee8","type":"outcome","name":"vnfc-model-customization-uuid","xml":"<outcome value='vnfc-model-customization-uuid'>","comments":"","outputs":1,"x":2378.500198364258,"y":1050.4047679901123,"z":"8068ded9.ccc26","wires":[["94c3f286.c2c34"]]},{"id":"94c3f286.c2c34","type":"set","name":"set ss.param.vnfc-model-customization-uuid, index","xml":"<set>\n<parameter name='ss.param.vnfc-model-customization-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.vnfc-model-customization-uuid-index' value='`$bidx`' />","comments":"","x":2738.750228881836,"y":1050.4405536651611,"z":"8068ded9.ccc26","wires":[]},{"id":"f5541fce.c9fc9","type":"outcome","name":"vnfc-model-invariant-uuid","xml":"<outcome value='vnfc-model-invariant-uuid'>","comments":"","outputs":1,"x":2363.2144508361816,"y":1091.8333730697632,"z":"8068ded9.ccc26","wires":[["dbebcefd.68335"]]},{"id":"dbebcefd.68335","type":"set","name":"set ss.param.vnfc-model-invariant-uuid, index","xml":"<set>\n<parameter name='ss.param.vnfc-model-invariant-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.vnfc-model-invariant-uuid-index' value='`$bidx`' />","comments":"","x":2722.4644813537598,"y":1091.869158744812,"z":"8068ded9.ccc26","wires":[]},{"id":"2b83386b.477738","type":"outcome","name":"vnfc-model-version","xml":"<outcome value='vnfc-model-version'>","comments":"","outputs":1,"x":2343.643020629883,"y":1133.261926651001,"z":"8068ded9.ccc26","wires":[["dfca8723.2b1448"]]},{"id":"dfca8723.2b1448","type":"set","name":"set ss.param.vnfc-model-version, index","xml":"<set>\n<parameter name='ss.param.vnfc-model-version' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.vnfc-model-version-index' value='`$bidx`' />","comments":"","x":2703.893051147461,"y":1133.2977123260498,"z":"8068ded9.ccc26","wires":[]},{"id":"43435160.6954c","type":"set","name":"set TEST DATA","xml":"<set>\n<parameter name='vnf-index' value='0' />\n<parameter name='vf-module-index' value='0' />\n<parameter name='ss.capability-name' value='aai-vf-module-put' />\n<parameter name='ss.capability-action' value='unassign' />\n<parameter name='service-data.vnfs.vnf[0].vnf-id' value = '7324200933' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vnf-topology.vnf-parameters-data.param[0].name' value = 'vnf_id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vnf-topology.vnf-parameters-data.param[0].value' value = '7324200933' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vnf-topology.sdnc-generated-cloud-resources' value='true' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.service-information.service-instance-id' value='11' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vnf-information.vnf-id' value='7324200933' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-topology.sdnc-generated-cloud-resources' value = 'true' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param_length' value = '36' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].name' value = 'vlan-tag-1' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].value' value = '${vlan-tag-1v}' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[0].name' value = 'policy-instance-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[0].value' value = 'JQIN1810SRIOV.Config_MS_SRIOV_VlanTag_1810_ADIOD_VPE.*' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[1].name' value = 'resource-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[1].value' value = 'vlan-tag-1' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[2].name' value = 'resource-value' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[2].value' value = '' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[3].name' value = 'scope-id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[3].value' value = 'MTCLL2238F' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[4].name' value = 'vlan-tag-key' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[4].value' value = 'dvncom4003' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[5].name' value = 'vlan-type' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[5].value' value = 'vlan-id-outer' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[6].name' value = 'vnfc-network-role' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[6].value' value = 'network-role-1' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key_length' value = '7' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.status' value = 'SUCCESS' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.capability-name' value = 'mS-vlan-tag-assign' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].name' value = 'vlan-tag-2' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].value' value = 'manually-assigned-vlan-tag-2v' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[0].name' value = 'policy-instance-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[0].value' value = 'JQIN1810SRIOV.Config_MS_SRIOV_VlanTag_1810_ADIOD_VPE.*' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[1].name' value = 'resource-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[1].value' value = 'vlan-tag-2' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[2].name' value = 'resource-value' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[2].value' value = 'manually-assigned-vlan-tag-2v' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[3].name' value = 'scope-id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[3].value' value = 'MTCLL2238F' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[4].name' value = 'vlan-tag-key' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[4].value' value = 'dvncom4003' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[5].name' value = 'vlan-type' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[5].value' value = 'vlan-id-filter' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[6].name' value = 'vnfc-network-role' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[6].value' value = 'network-role-2' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key_length' value = '7' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.status' value = 'SUCCESS' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.capability-name' value = 'INPUT' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[2].name' value = 'bogus1' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[2].value' value = 'bogus1' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[3].name' value = 'bogus2' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[3].value' value = 'bogus2' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[4].name' value = 'bogus3' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[4].value' value = 'bogus3' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[5].name' value = 'bogus4' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[5].value' value = 'bogus4' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[6].name' value = 'bogus5' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[6].value' value = 'bogus5' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[7].name' value = 'aic-cloud-region' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[7].value' value = 'mtn6' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[8].name' value = 'ipv4-loopback0-address' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[8].value' value = '1.1.1.1' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].name' value = 'ipv4-oam-address' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].value' value = '2.2.2.2' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].name' value = 'as-number' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].value' value = '11' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[11].name' value = 'vlan-id-outer' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[11].value' value = '[999]' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[12].name' value = 'bad_vnf_id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[12].value' value = '7324200933' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[13].name' value = 'vf_module_name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[13].value' value = 'NEW_SELF_SERVE_VF_MODULE_TEST_1' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[14].name' value = 'volume-group-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[14].value' value = 'dummyvolumegroupname' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[15].name' value = 'volume_group_id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[15].value' value = 'vg-1-999' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[16].name' value = 'vf_module_id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[16].value' value = '7323683661' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[17].name' value = 'vf_module_id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[17].value' value = '7323683661' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[18].name' value = 'vnfc-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[18].value' value = 'bogus-vnfc-name' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[19].name' value = 'vm_name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[19].value' value = 'bogus-vnfc-name' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[20].name' value = 'vm-type' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[20].value' value = 'oam' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[21].name' value = 'nfc-function' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[21].value' value = 'data' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[22].name' value = 'nfc-naming-code' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[22].value' value = 'dummy-naming-code' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[23].name' value = 'vnfc-model-customization-uuid' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[23].value' value = 'bbbb-99999' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[24].name' value = 'vnfc-model-invariant-uuid' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[24].value' value = 'aaaaa-10000' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[25].name' value = 'vnfc-model-version' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[25].value' value = 'model1' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[26].name' value = 'oam-interface-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[26].value' value = 'oamintfname' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[27].name' value = 'lo0-interface-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[27].value' value = 'lo0intfname' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[28].name' value = 'sriov41_net_id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[28].value' value = '4141414141' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[29].name' value = 'sriov42_net_id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[29].value' value = '4242424242' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[30].name' value = 'sriov43_net_id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[30].value' value = '4343434343' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[31].name' value = 'sriov44_net_id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[31].value' value = '4444444444' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[32].name' value = 'sriov21_net_id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[32].value' value = '2121212121' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[33].name' value = 'sriov22_net_id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[33].value' value = '2222222222' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].name' value = 'aai-vf-module-put' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].value' value = '${status}' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key[0].name' value = 'generic-vnf' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key[0].value' value = 'generic-vnf' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key[1].name' value = 'vf-module' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key[1].value' value = 'vf-module' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key[2].name' value = 'volume-group' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key[2].value' value = 'volume-group' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key[3].name' value = 'vnfc' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key[3].value' value = 'vnfc' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key[4].name' value = 'connection-points' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key[4].value' value = 'connection-points' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key[5].name' value = 'l-interface' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key[5].value' value = 'l-interface' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key[6].name' value = 'l3-network' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key[6].value' value = 'l3-network' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.resource-key_length' value = '7' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[34].resource-resolution-data.status' value = 'PENDING' />\n\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[35].name' value = 'availability_zone_0' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[35].value' value = 'nova0' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-customization-uuid' value = 'bbbb-99999' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-invariant-uuid' value = 'aaaaa-10000' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-version' value = 'model1' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-type' value = 'oam' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-name' value = 'bogus-vnfc-name' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length' value = '2' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-network-role' value = 'network-role-1' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].connection-point.connection-point-id' value = '789cddfa-58ba-4095-addc-8f7181186380' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].connection-point.vlan-data[0].vlan-role' value = '' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].connection-point.vlan-data[0].vlan-tag-description' value = 'VPE-Cust' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].connection-point.vlan-data[0].vlan-tag-id' value = '3553' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].connection-point.vlan-data[0].vlan-uuid' value = '56034624-9296-426c-8103-79a09c23e872' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-network-role' value = 'network-role-2' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].connection-point.connection-point-id' value = 'd1bdc1ae-4e67-42c3-ad25-2051ddae65a7' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].connection-point.vlan-data[0].vlan-role' value = 'outer-tag' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].connection-point.vlan-data[0].vlan-tag-description' value = 'VPE-Cust-Outer' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].connection-point.vlan-data[0].vlan-tag-id' value = '3503' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].connection-point.vlan-data[0].vlan-uuid' value = 'fdc089af-0c00-41c0-a403-1501fb06909f' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].connection-point.vlan-data[1].vlan-role' value = 'outer-tag' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].connection-point.vlan-data[1].vlan-tag-description' value = 'VPE-Core1' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].connection-point.vlan-data[1].vlan-tag-id' value = '4001' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].connection-point.vlan-data[1].vlan-uuid' value = 'f48473ff-fc11-4c38-bcf7-7dec483d81da' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].connection-point.vlan-data[2].vlan-role' value = 'outer-tag' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].connection-point.vlan-data[2].vlan-tag-description' value = 'VPE-Core2' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].connection-point.vlan-data[2].vlan-tag-id' value = '4002' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].connection-point.vlan-data[2].vlan-uuid' value = '147afe9e-81d3-4872-a298-f470999ba915' />","comments":"","x":953.2142868041992,"y":92.40475368499756,"z":"8068ded9.ccc26","wires":[]},{"id":"593dcc0e.8e3134","type":"outcome","name":"ipv4-loopback0-address","xml":"<outcome value='ipv4-loopback0-address'>","comments":"","outputs":1,"x":2355.3572692871094,"y":925.2618856430054,"z":"8068ded9.ccc26","wires":[["ef23ff6.9991e"]]},{"id":"ef23ff6.9991e","type":"set","name":"set ss.param.ipv4-loopback0-address, index","xml":"<set>\n<parameter name='ss.param.ipv4-loopback0-address' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.ipv4-loopback0-address-index' value='`bidx`' />","comments":"","x":2715.607292175293,"y":925.0119018554688,"z":"8068ded9.ccc26","wires":[]},{"id":"982628c3.cc5ec8","type":"outcome","name":"vlan-id-outer","xml":"<outcome value='vlan-id-outer'>","comments":"","outputs":1,"x":2324.8928451538086,"y":1220.0476179122925,"z":"8068ded9.ccc26","wires":[["bf23dba.cbde728"]]},{"id":"26c08944.595276","type":"outcome","name":"as-number","xml":"<outcome value='as-number'>","comments":"","outputs":1,"x":2319.678535461426,"y":1177.869029045105,"z":"8068ded9.ccc26","wires":[["104fad01.672133"]]},{"id":"104fad01.672133","type":"set","name":"set ss.param.as-number, index","xml":"<set>\n<parameter name='ss.param.as-number' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.as-number-index' value='`$bidx`' />","comments":"","x":2679.178512573242,"y":1178.3690299987793,"z":"8068ded9.ccc26","wires":[]},{"id":"bf23dba.cbde728","type":"set","name":"set vlan-id-outer, indexss.param.","xml":"<set>\n<parameter name='ss.param.vlan-id-outer' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.vlan-id-outer-index' value='`$bidx`' />","comments":"","x":2687.392822265625,"y":1219.7976169586182,"z":"8068ded9.ccc26","wires":[]},{"id":"385ba57a.8df6da","type":"set","name":"set ss.param.vnf-id","xml":"<set>\n<parameter name='ss.param.vnf-id' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-id`' />","comments":"","x":1228.6903991699219,"y":464.7856855392456,"z":"8068ded9.ccc26","wires":[]},{"id":"90cb9541.006378","type":"execute","name":"execute PropertiesNode","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":975.3570785522461,"y":141.4523696899414,"z":"8068ded9.ccc26","wires":[[]]},{"id":"369fedc4.640742","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":738.6903991699219,"y":114.78570365905762,"z":"8068ded9.ccc26","wires":[["43435160.6954c","90cb9541.006378"]]},{"id":"b3dc72d7.6c11b","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'volume-group not found in AnAI with volume-group-id=' + $ss.param.volume-group-id  + '; ' + $error-message`\" />\n","comments":"","x":2223.5953254699707,"y":3915.5000128746033,"z":"8068ded9.ccc26","wires":[]},{"id":"be71747e.761fd8","type":"save","name":"get volume-group","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"volume-group\"\n\t\tkey=\"cloud-region.cloud-owner = $prop.cloud-owner  \n\t\t\tAND cloud-region.cloud-region-id = $ss.param.aic-cloud-region \n\t\t\tAND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner \n\t\t\tAND volume-group-id = $ss.param.volume-group-id\" \n\tpfx=\"tmp.aai.volume-group\" >\n","comments":"","outputs":1,"x":1666.1788330078125,"y":3825.2141947746277,"z":"8068ded9.ccc26","wires":[["ab7cc2ae.b3122","491c18b8.279c08"]]},{"id":"ab7cc2ae.b3122","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1855.4288177490234,"y":3824.7141394615173,"z":"8068ded9.ccc26","wires":[["dd469fcd.ed1f6"]]},{"id":"491c18b8.279c08","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1863.1072998046875,"y":3880.749830722809,"z":"8068ded9.ccc26","wires":[["5df59ce5.ec4624"]]},{"id":"f712058.ba8fdf8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to get volume-group in AnAI with volume-group-id = ' + $ss.param.volume-group-id  + '; ' + $error-message`\" />\n","comments":"","x":2223.726306915283,"y":3860.7142462730408,"z":"8068ded9.ccc26","wires":[]},{"id":"dd469fcd.ed1f6","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2027.39306640625,"y":3825.2143034934998,"z":"8068ded9.ccc26","wires":[["f712058.ba8fdf8","5baa82ec.dffecc"]]},{"id":"5df59ce5.ec4624","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2027.6430473327637,"y":3880.714282512665,"z":"8068ded9.ccc26","wires":[["b3dc72d7.6c11b","5baa82ec.dffecc"]]},{"id":"4faa8555.6c3d7c","type":"set","name":"set tmp.related-link","xml":"<set>\n<parameter name='tmp.related-link' value=\"`'/aai/v$/network/l3-networks/l3-network/' + $ss.network[$n].netid`\" />\n<!--\n<parameter name='tmp.related-link' value=\"`'/aai/' + $prop.aai.version + '/network/l3-networks/l3-network/' + $ss.network[$n].netid`\" />\n-->","comments":"","x":5282.429328918457,"y":5587.7142329216,"z":"8068ded9.ccc26","wires":[]},{"id":"9669e0ca.90c8f","type":"switchNode","name":"switch: ss.capability-name","xml":"<switch test='`$ss.capability-name`'>\n","comments":"","outputs":1,"x":363.5715103149414,"y":176.33332633972168,"z":"8068ded9.ccc26","wires":[["e32786de.9df318"]]},{"id":"e32786de.9df318","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":570.571533203125,"y":176.8333249092102,"z":"8068ded9.ccc26","wires":[["7197124b.04b54c"]]},{"id":"7197124b.04b54c","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":730.4882049560547,"y":176.9444236755371,"z":"8068ded9.ccc26","wires":[]},{"id":"3b0adeb0.0eb082","type":"set","name":"set param[$ss.param.aai-vnf-put-index].value = SUCCESS","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].value' \n\tvalue='SUCCESS' />\n","comments":"","x":467.5714569091797,"y":1141.8094778060913,"z":"8068ded9.ccc26","wires":[]},{"id":"b9bf0de4.48018","type":"switchNode","name":"ss.param.ipv4-loopback0-address != NULL","xml":"<switch test=\"`$ss.param.ipv4-loopback0-address != ''`\">\n\n\n","comments":"","outputs":1,"x":1357.5237159729004,"y":1846.4284987449646,"z":"8068ded9.ccc26","wires":[["ceaf4524.23f4d8"]]},{"id":"ceaf4524.23f4d8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1625.9520988464355,"y":1845.8570322990417,"z":"8068ded9.ccc26","wires":[["43f75d58.570a74"]]},{"id":"43f75d58.570a74","type":"execute","name":"ss.param.ipv4-loopback0-address contains $","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name='source' value='`$ss.param.ipv4-loopback0-address`' />\n    <parameter name='target' value='$' />\n","comments":"","outputs":1,"x":1897.761646270752,"y":1846.2380146980286,"z":"8068ded9.ccc26","wires":[["38011e7f.dd8f82","dcbb8012.d1394"]]},{"id":"38011e7f.dd8f82","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2184.7615852355957,"y":1845.5235419273376,"z":"8068ded9.ccc26","wires":[["1622e59b.0a538a"]]},{"id":"dcbb8012.d1394","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2185.2384243011475,"y":1894.380756855011,"z":"8068ded9.ccc26","wires":[["27de274a.88c098"]]},{"id":"1622e59b.0a538a","type":"record","name":"record ipv4-loopback0-address","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"`'ss.param.ipv4-loopback0-address = ' + $ss.param.ipv4-loopback0-address`\"/>\n<parameter name=\"field3\" value=\"__SKIP ipv4-loopback0-address update for generic-vnf in AnAI__\"/>","comments":"","outputs":1,"x":2427.285556793213,"y":1845.9524359703064,"z":"8068ded9.ccc26","wires":[[]]},{"id":"7327e39b.b7381c","type":"save","name":"update generic-vnf","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \" >\n<parameter name=\"ipv4-oam-address\" value='`$ss.param.ipv4-oam-address`' />\n","comments":"","outputs":1,"x":2275.5120964050293,"y":2121.7620272636414,"z":"8068ded9.ccc26","wires":[["7a590d98.438b34","45273777.668128","a8611fe4.861fc"]]},{"id":"7a590d98.438b34","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2475.7621269226074,"y":2122.119074344635,"z":"8068ded9.ccc26","wires":[["ecf0ba29.86e7a8"]]},{"id":"45273777.668128","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2482.012138366699,"y":2172.8691086769104,"z":"8068ded9.ccc26","wires":[["bdb288a7.c9e8f8"]]},{"id":"276849b.b8825b6","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 generic-vnf.ipv4-oam-address in AnAI with ipv4-oam-address=' + $ss.param.ipv4-oam-address + '; ' + $error-message`\" />\n","comments":"","x":2851.6310844421387,"y":2121.904778957367,"z":"8068ded9.ccc26","wires":[]},{"id":"ff10d38d.f4ef5","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 generic-vnf because vnf-id =' + $ss.param.vnf-id + ' is not found in AAI' + '; ' + $error-message`\" />\n","comments":"","x":2852.2026023864746,"y":2172.142955303192,"z":"8068ded9.ccc26","wires":[]},{"id":"ecf0ba29.86e7a8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2649.1906929016113,"y":2122.190598964691,"z":"8068ded9.ccc26","wires":[["276849b.b8825b6","71faeb89.83a694"]]},{"id":"bdb288a7.c9e8f8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2652.047908782959,"y":2173.047740459442,"z":"8068ded9.ccc26","wires":[["ff10d38d.f4ef5","71faeb89.83a694"]]},{"id":"26afdd51.b0c082","type":"switchNode","name":"ss.param.ipv4-oam-address != NULL","xml":"<switch test=\"`$ss.param.ipv4-oam-address != ''`\">\n\n\n","comments":"","outputs":1,"x":1333.428638458252,"y":2071.9880661964417,"z":"8068ded9.ccc26","wires":[["1b81e3ed.85387c"]]},{"id":"1b81e3ed.85387c","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1569.857021331787,"y":2072.416599750519,"z":"8068ded9.ccc26","wires":[["6a5b7911.12efb8"]]},{"id":"6a5b7911.12efb8","type":"execute","name":"ss.param.ipv4-oam-address contains $","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name='source' value='`$ss.param.ipv4-oam-address`' />\n    <parameter name='target' value='$' />\n","comments":"","outputs":1,"x":1813.6665687561035,"y":2072.7975821495056,"z":"8068ded9.ccc26","wires":[["e4511a53.c7e968","c52ae99f.811838"]]},{"id":"e4511a53.c7e968","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2069.6665077209473,"y":2072.0831093788147,"z":"8068ded9.ccc26","wires":[["cf116e57.4d2d6"]]},{"id":"c52ae99f.811838","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2070.143346786499,"y":2120.940324306488,"z":"8068ded9.ccc26","wires":[["7327e39b.b7381c"]]},{"id":"cf116e57.4d2d6","type":"record","name":"record ipv4-oam-address","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"`'ss.param.ipv4-oam-address = ' + $ss.param.ipv4-oam-address`\"/>\n<parameter name=\"field3\" value=\"__SKIP ipv4-oam-address update for generic-vnf in AnAI__\"/>","comments":"","outputs":1,"x":2293.1904792785645,"y":2072.5120034217834,"z":"8068ded9.ccc26","wires":[[]]},{"id":"e5889051.c0258","type":"save","name":"Rollback generic-vnf update","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \" >\n<parameter name=\"ipv4-loopback0-address\" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />","comments":"","outputs":1,"x":5601.476459503174,"y":1553.7621817588806,"z":"8068ded9.ccc26","wires":[["22af1de1.3fb9e2","8bf8665b.1437d8","c2c65d3e.5dfc2"]]},{"id":"22af1de1.3fb9e2","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":5839.726444244385,"y":1553.2621264457703,"z":"8068ded9.ccc26","wires":[["5e63f4b2.4ac3cc"]]},{"id":"8bf8665b.1437d8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":5845.976455688477,"y":1605.0121607780457,"z":"8068ded9.ccc26","wires":[["ad206450.c1ee18"]]},{"id":"2d67b279.3df1de","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":5652.904941558838,"y":1508.1308035850525,"z":"8068ded9.ccc26","wires":[]},{"id":"c2c65d3e.5dfc2","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":5843.797702789307,"y":1653.2737307548523,"z":"8068ded9.ccc26","wires":[["ec787945.492e18"]]},{"id":"47e8bd96.8ba9d4","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":5331.226184844971,"y":1463.5237832069397,"z":"8068ded9.ccc26","wires":[["2d67b279.3df1de","e5889051.c0258","384189da.b5f976"]]},{"id":"5e63f4b2.4ac3cc","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":6022.54764175415,"y":1553.3808007240295,"z":"8068ded9.ccc26","wires":[]},{"id":"ad206450.c1ee18","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":6025.04764175415,"y":1604.6308026313782,"z":"8068ded9.ccc26","wires":[]},{"id":"ec787945.492e18","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`\" />\n","comments":"","x":6027.54764175415,"y":1653.6308007240295,"z":"8068ded9.ccc26","wires":[]},{"id":"384189da.b5f976","type":"record","name":"record generic-vnf ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK generic-vnf.ipv4-loopback0-address update\"/>","comments":"","outputs":1,"x":5607.04764175415,"y":1463.6308016777039,"z":"8068ded9.ccc26","wires":[[]]},{"id":"da76951d.afdea8","type":"comment","name":"ROLLBACK STARET HERE","info":"","comments":"","x":4691.0475997924805,"y":1417.7256727218628,"z":"8068ded9.ccc26","wires":[]},{"id":"bb524829.b73d08","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4512.619209289551,"y":1588.9048280715942,"z":"8068ded9.ccc26","wires":[["e2e1d228.1cac","71faeb89.83a694"]]},{"id":"e4a213fe.1cb","type":"save","name":"update generic-vnf","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \" >\n<parameter name=\"as-number\" value='`$ss.param.as-number`' />","comments":"","outputs":1,"x":2249.000072479248,"y":2371.190616130829,"z":"8068ded9.ccc26","wires":[["4efbae39.8c274","da35a4e3.507258","4bc8cbf7.d420c4"]]},{"id":"4efbae39.8c274","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2449.250102996826,"y":2371.5476632118225,"z":"8068ded9.ccc26","wires":[["a1700ab5.e0ada8"]]},{"id":"da35a4e3.507258","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2455.500114440918,"y":2422.297697544098,"z":"8068ded9.ccc26","wires":[["cd623d9e.bad95"]]},{"id":"2c15727.a84458e","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 generic-vnf.as-number in AnAI with as-number=' + $ss.param.as-number + '; ' + $error-message`\" />\n","comments":"","x":2825.1190605163574,"y":2371.3333678245544,"z":"8068ded9.ccc26","wires":[]},{"id":"41bc64c.41bf29c","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 generic-vnf because vnf-id =' + $ss.param.vnf-id + ' is not found in AAI. ' + $error-message`\" />\n","comments":"","x":2825.6905784606934,"y":2421.5715441703796,"z":"8068ded9.ccc26","wires":[]},{"id":"a1700ab5.e0ada8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2622.67866897583,"y":2371.6191878318787,"z":"8068ded9.ccc26","wires":[["2c15727.a84458e","bb524829.b73d08"]]},{"id":"cd623d9e.bad95","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2625.5358848571777,"y":2422.4763293266296,"z":"8068ded9.ccc26","wires":[["41bc64c.41bf29c","bb524829.b73d08"]]},{"id":"908814ee.d3c7b8","type":"switchNode","name":"ss.param.as-number != NULL","xml":"<switch test=\"`$ss.param.as-number != ''`\">\n\n\n","comments":"","outputs":1,"x":1306.9166145324707,"y":2321.416655063629,"z":"8068ded9.ccc26","wires":[["737e972.985f168"]]},{"id":"737e972.985f168","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1543.3449974060059,"y":2321.8451886177063,"z":"8068ded9.ccc26","wires":[["1c5589e.b307676"]]},{"id":"1c5589e.b307676","type":"execute","name":"ss.param.as-number contains $","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name='source' value='`$ss.param.as-number`' />\n    <parameter name='target' value='$' />\n","comments":"","outputs":1,"x":1787.1545448303223,"y":2322.226171016693,"z":"8068ded9.ccc26","wires":[["497ff762.9d1748","992db45d.438d38"]]},{"id":"497ff762.9d1748","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2043.154483795166,"y":2321.511698246002,"z":"8068ded9.ccc26","wires":[["deaa07b.61227f8"]]},{"id":"992db45d.438d38","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2043.6313228607178,"y":2370.3689131736755,"z":"8068ded9.ccc26","wires":[["e4a213fe.1cb"]]},{"id":"deaa07b.61227f8","type":"record","name":"record as-number","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"`'ss.param.as-number = ' + $ss.param.as-number`\"/>\n<parameter name=\"field3\" value=\"__SKIP as-number update for generic-vnf in AnAI__\"/>","comments":"","outputs":1,"x":2246.678455352783,"y":2321.940543651581,"z":"8068ded9.ccc26","wires":[[]]},{"id":"74f743f6.6c2a9c","type":"save","name":"Rollback generic-vnf update","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \" >\n<parameter name=\"ipv4-oam-address\" value='`$tmp.aai.vnf.ipv4-oam-address`' />","comments":"","outputs":1,"x":5424.047866821289,"y":1822.1906266212463,"z":"8068ded9.ccc26","wires":[["8ab667c6.6dc778","127a91f5.5edaee","6dc5a4c1.0050bc"]]},{"id":"8ab667c6.6dc778","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":5662.2978515625,"y":1821.690571308136,"z":"8068ded9.ccc26","wires":[["ca5f07de.46aa38"]]},{"id":"127a91f5.5edaee","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":5668.547863006592,"y":1873.4406056404114,"z":"8068ded9.ccc26","wires":[["7d6b1b6d.e73344"]]},{"id":"a407c233.f5534","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":5475.476348876953,"y":1776.5592484474182,"z":"8068ded9.ccc26","wires":[]},{"id":"6dc5a4c1.0050bc","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":5666.369110107422,"y":1921.702175617218,"z":"8068ded9.ccc26","wires":[["79516859.473258"]]},{"id":"768b08a.664faf8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":5166.654808044434,"y":1732.9521927833557,"z":"8068ded9.ccc26","wires":[["a407c233.f5534","74f743f6.6c2a9c","9082c4e7.fb2758"]]},{"id":"ca5f07de.46aa38","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback generic-vnf.ipv4-oam-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":5845.119049072266,"y":1821.8092455863953,"z":"8068ded9.ccc26","wires":[]},{"id":"7d6b1b6d.e73344","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":5847.619049072266,"y":1873.059247493744,"z":"8068ded9.ccc26","wires":[]},{"id":"79516859.473258","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback of generic-vnf.ipv4-oam-address update completed. '`\" />\n","comments":"","x":5850.119049072266,"y":1922.0592455863953,"z":"8068ded9.ccc26","wires":[]},{"id":"9082c4e7.fb2758","type":"record","name":"record generic-vnf ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK generic-vnf.ipv4-oam-address update\"/>","comments":"","outputs":1,"x":5429.619049072266,"y":1732.0592465400696,"z":"8068ded9.ccc26","wires":[[]]},{"id":"cb879e8.7659c6","type":"save","name":"update generic-vnf","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \" >\n<parameter name=\"vlan-id-outer\" value='`$ss.param.vlan-id-outer`' />","comments":"","outputs":1,"x":2255.2262687683105,"y":2602.619082927704,"z":"8068ded9.ccc26","wires":[["6f7ecbf3.9e2ac4","747eeb7.c55af14","39d08edc.6b6b42"]]},{"id":"6f7ecbf3.9e2ac4","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2455.4762992858887,"y":2602.9761300086975,"z":"8068ded9.ccc26","wires":[["2c7b95a3.b6cfda"]]},{"id":"747eeb7.c55af14","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2461.7263107299805,"y":2653.726164340973,"z":"8068ded9.ccc26","wires":[["e8fe8375.a7f86"]]},{"id":"22896c5.57d9394","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 generic-vnf.vlan-id-outer in AnAI with as-number=' + $ss.param.as-number  + '; ' + $error-message`\" />\n","comments":"","x":2831.34525680542,"y":2602.7618346214294,"z":"8068ded9.ccc26","wires":[]},{"id":"1bdd53be.37f77c","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 generic-vnf because vnf-id =' + $ss.param.vnf-id + ' is not found in AAI. ' + $error-message`\" />\n","comments":"","x":2831.916774749756,"y":2653.0000109672546,"z":"8068ded9.ccc26","wires":[]},{"id":"2c7b95a3.b6cfda","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2628.9048652648926,"y":2603.0476546287537,"z":"8068ded9.ccc26","wires":[["22896c5.57d9394","d65ee09f.37cd9"]]},{"id":"e8fe8375.a7f86","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2631.7620811462402,"y":2653.9047961235046,"z":"8068ded9.ccc26","wires":[["1bdd53be.37f77c","d65ee09f.37cd9"]]},{"id":"c975e01d.234e2","type":"switchNode","name":"ss.param.vlan-id-outer != NULL","xml":"<switch test=\"`$ss.param.vlan-id-outer != ''`\">\n\n\n","comments":"","outputs":1,"x":1313.1428108215332,"y":2552.845121860504,"z":"8068ded9.ccc26","wires":[["93830daa.215c2"]]},{"id":"93830daa.215c2","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1549.5711936950684,"y":2553.2736554145813,"z":"8068ded9.ccc26","wires":[["27539cc9.080cc4"]]},{"id":"27539cc9.080cc4","type":"execute","name":"ss.param.vlan-id-outer contains $","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name='source' value='`$ss.param.vlan-id-outer`' />\n    <parameter name='target' value='$' />\n","comments":"","outputs":1,"x":1793.3807411193848,"y":2553.654637813568,"z":"8068ded9.ccc26","wires":[["105606fa.800439","2247889c.578818"]]},{"id":"105606fa.800439","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2049.3806800842285,"y":2552.940165042877,"z":"8068ded9.ccc26","wires":[["531a6486.a6295c"]]},{"id":"2247889c.578818","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2049.8575191497803,"y":2601.7973799705505,"z":"8068ded9.ccc26","wires":[["cb879e8.7659c6"]]},{"id":"531a6486.a6295c","type":"record","name":"record vlan-id-outer","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"`'ss.param.vlan-id-outer = ' + $ss.param.vlan-id-outer`\"/>\n<parameter name=\"field3\" value=\"__SKIP vlan-id-outer update for generic-vnf in AnAI__\"/>","comments":"","outputs":1,"x":2255.761905670166,"y":2552.7977175712585,"z":"8068ded9.ccc26","wires":[[]]},{"id":"e5473ddc.047be","type":"save","name":"Rollback generic-vnf update","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \" >\n<parameter name=\"as-number\" value='`$tmp.aai.vnf.as-number`' />","comments":"","outputs":1,"x":5173.047737121582,"y":2097.0475330352783,"z":"8068ded9.ccc26","wires":[["285f2e24.1586f2","83023384.2b811","8076ba5d.d50338"]]},{"id":"285f2e24.1586f2","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":5411.297721862793,"y":2096.547477722168,"z":"8068ded9.ccc26","wires":[["fa907b6a.b7f9e8"]]},{"id":"83023384.2b811","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":5417.547733306885,"y":2148.2975120544434,"z":"8068ded9.ccc26","wires":[["f07a54b8.00eae8"]]},{"id":"e1190313.df098","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":5224.476219177246,"y":2051.41615486145,"z":"8068ded9.ccc26","wires":[]},{"id":"8076ba5d.d50338","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":5415.368980407715,"y":2196.55908203125,"z":"8068ded9.ccc26","wires":[["ebf1b213.e06bf"]]},{"id":"b0942bbb.c31398","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":4922.226112365723,"y":2002.9517307281494,"z":"8068ded9.ccc26","wires":[["e1190313.df098","e5473ddc.047be","25ff6863.c55cb8"]]},{"id":"fa907b6a.b7f9e8","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback generic-vnf.as-number update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":5594.118919372559,"y":2096.6661520004272,"z":"8068ded9.ccc26","wires":[]},{"id":"f07a54b8.00eae8","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":5596.618919372559,"y":2147.916153907776,"z":"8068ded9.ccc26","wires":[]},{"id":"ebf1b213.e06bf","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback of generic-vnf.as-number update completed. '`\" />\n","comments":"","x":5599.118919372559,"y":2196.9161520004272,"z":"8068ded9.ccc26","wires":[]},{"id":"25ff6863.c55cb8","type":"record","name":"record generic-vnf ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK generic-vnf.as-number update\"/>","comments":"","outputs":1,"x":5177.190353393555,"y":2002.0587844848633,"z":"8068ded9.ccc26","wires":[[]]},{"id":"34d61ff5.579e6","type":"save","name":"Rollback generic-vnf update","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \" >\n<parameter name=\"vlan-id-outer\" value='`$tmp.aai.vnf.vlan-id-outer`' />","comments":"","outputs":1,"x":5037.905044555664,"y":2414.761951446533,"z":"8068ded9.ccc26","wires":[["629cce5b.29146","7a205153.d31fb","a1d97f77.5519b"]]},{"id":"629cce5b.29146","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":5276.155029296875,"y":2414.261896133423,"z":"8068ded9.ccc26","wires":[["89392aae.d68578"]]},{"id":"7a205153.d31fb","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":5282.405040740967,"y":2466.0119304656982,"z":"8068ded9.ccc26","wires":[["6d7e4c44.4dfcc4"]]},{"id":"5195e96f.8c0d38","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":5089.333526611328,"y":2369.130573272705,"z":"8068ded9.ccc26","wires":[]},{"id":"a1d97f77.5519b","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":5279.226287841797,"y":2514.273500442505,"z":"8068ded9.ccc26","wires":[["9a615e51.2921d"]]},{"id":"d49362f8.a641c","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":4786.511985778809,"y":2325.5235176086426,"z":"8068ded9.ccc26","wires":[["5195e96f.8c0d38","34d61ff5.579e6","502f025d.7ed22c"]]},{"id":"89392aae.d68578","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback generic-vnf.vlan-id-outer update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":5458.976226806641,"y":2414.380570411682,"z":"8068ded9.ccc26","wires":[]},{"id":"6d7e4c44.4dfcc4","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":5461.476226806641,"y":2465.6305723190308,"z":"8068ded9.ccc26","wires":[]},{"id":"9a615e51.2921d","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback of generic-vnf.vlan-id-outer update completed. '`\" />\n","comments":"","x":5462.976226806641,"y":2514.630570411682,"z":"8068ded9.ccc26","wires":[]},{"id":"502f025d.7ed22c","type":"record","name":"record generic-vnf ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK generic-vnf.vlan-id-outer update\"/>","comments":"","outputs":1,"x":5043.476226806641,"y":2324.6305713653564,"z":"8068ded9.ccc26","wires":[[]]},{"id":"a8611fe4.861fc","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2479.8570671081543,"y":2224.6192326545715,"z":"8068ded9.ccc26","wires":[["9662e07e.fc4a8"]]},{"id":"9662e07e.fc4a8","type":"set","name":"set ss.ipv4-oam-address-updated = true","xml":"<set>\n<parameter name='ss.ipv4-oam-address-updated' value='true' />\n","comments":"","x":2734.9998893737793,"y":2224.0476994514465,"z":"8068ded9.ccc26","wires":[]},{"id":"39d08edc.6b6b42","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2460.999927520752,"y":2706.904727458954,"z":"8068ded9.ccc26","wires":[["e4253280.219b1"]]},{"id":"e4253280.219b1","type":"set","name":"set ss.vlan-id-outer-updated = true","xml":"<set>\n<parameter name='ss.vlan-id-outer-updated' value='true' />\n","comments":"","x":2697.142749786377,"y":2706.333194255829,"z":"8068ded9.ccc26","wires":[]},{"id":"d5eb2c25.f7bf1","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2594.428638458252,"y":1994.0476365089417,"z":"8068ded9.ccc26","wires":[["25b6966a.a2a8ca"]]},{"id":"25b6966a.a2a8ca","type":"set","name":"set ss.ipv4-loopback0-address-updated = true","xml":"<set>\n<parameter name='ss.ipv4-loopback0-address-updated' value='true' />\n","comments":"","x":2867.571460723877,"y":1993.4761033058167,"z":"8068ded9.ccc26","wires":[]},{"id":"4bc8cbf7.d420c4","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2451.4286613464355,"y":2474.047793865204,"z":"8068ded9.ccc26","wires":[["f06d656f.af5598"]]},{"id":"f06d656f.af5598","type":"set","name":"set ss.as-number-updated = true","xml":"<set>\n<parameter name='ss.as-number-updated' value='true' />\n","comments":"","x":2686.5714836120605,"y":2473.476260662079,"z":"8068ded9.ccc26","wires":[]},{"id":"1efb2ace.960c85","type":"switchNode","name":"ss.ipv4-loopback0-address-updated","xml":"<switch test=\"`$ss.ipv4-loopback0-address-updated`\">\n\n\n","comments":"","outputs":1,"x":4926.33345413208,"y":1463.4764018058777,"z":"8068ded9.ccc26","wires":[["30f66413.98e80c"]]},{"id":"30f66413.98e80c","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":5161.47624206543,"y":1463.0478825569153,"z":"8068ded9.ccc26","wires":[["47e8bd96.8ba9d4"]]},{"id":"e2e1d228.1cac","type":"switchNode","name":"ss.ipv4-oam-address-updated","xml":"<switch test=\"`$ss.ipv4-oam-address-updated`\">\n\n\n","comments":"","outputs":1,"x":4762.619338989258,"y":1733.4761872291565,"z":"8068ded9.ccc26","wires":[["161a1549.8e506b"]]},{"id":"161a1549.8e506b","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":4991.190628051758,"y":1732.904776096344,"z":"8068ded9.ccc26","wires":[["768b08a.664faf8"]]},{"id":"6e213c89.99cdc4","type":"switchNode","name":"ss.as-number-updated","xml":"<switch test=\"`$ss.as-number-updated`\">\n\n\n","comments":"","outputs":1,"x":4573.190734863281,"y":2002.0476455688477,"z":"8068ded9.ccc26","wires":[["c40b28e0.f8bd18"]]},{"id":"c40b28e0.f8bd18","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":4764.762023925781,"y":2002.4762344360352,"z":"8068ded9.ccc26","wires":[["b0942bbb.c31398"]]},{"id":"dab326d4.4c5188","type":"switchNode","name":"ss.vlan-id-outer-updated","xml":"<switch test=\"`$ss.vlan-id-outer-updated`\">\n\n\n","comments":"","outputs":1,"x":4435.619369506836,"y":2325.47625541687,"z":"8068ded9.ccc26","wires":[["615d0461.0886fc"]]},{"id":"615d0461.0886fc","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":4622.190658569336,"y":2325.9048442840576,"z":"8068ded9.ccc26","wires":[["d49362f8.a641c"]]},{"id":"d65ee09f.37cd9","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4358.333808898926,"y":1811.3334674835205,"z":"8068ded9.ccc26","wires":[["bb524829.b73d08","6e213c89.99cdc4"]]},{"id":"7102730.01d478c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4204.905014038086,"y":2084.76189994812,"z":"8068ded9.ccc26","wires":[["d65ee09f.37cd9","dab326d4.4c5188"]]},{"id":"71faeb89.83a694","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4691.762203216553,"y":1463.7620449066162,"z":"8068ded9.ccc26","wires":[["1efb2ace.960c85"]]},{"id":"11703c8e.d0e733","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2534.9999504089355,"y":1310.4761638641357,"z":"8068ded9.ccc26","wires":[["51b14fbd.75b3e","812c36d9.0a3ac8"]]},{"id":"e9f498df.26a9b8","type":"switchNode","name":"switch: resource-key[].name","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].name`'>\n","comments":"","outputs":1,"x":3044.4289016723633,"y":1386.4762229919434,"z":"8068ded9.ccc26","wires":[["1f45c3a7.b75a7c","51073227.b22b1c","289fcfcb.8ee7","3c596d6c.b48dd2","b9f013b2.25b3f","3565db8d.625714","be2c548e.1c4a58"]]},{"id":"1f45c3a7.b75a7c","type":"outcome","name":"vf-module","xml":"<outcome value='vf-module'>\n","comments":"","outputs":1,"x":3305.448585510254,"y":1296.6546630859375,"z":"8068ded9.ccc26","wires":[["ca74e487.dcffc8"]]},{"id":"812c36d9.0a3ac8","type":"for","name":"for kidx in resource-key_length","xml":"<for silentFailure='true' index=\"kidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key_length`\">","comments":"","outputs":1,"x":2765.2899780273438,"y":1386.3373336791992,"z":"8068ded9.ccc26","wires":[["e9f498df.26a9b8"]]},{"id":"51073227.b22b1c","type":"outcome","name":"generic-vnf","xml":"<outcome value='generic-vnf'>\n","comments":"","outputs":1,"x":3306.9087677001953,"y":1250.6903667449951,"z":"8068ded9.ccc26","wires":[["a2bddea8.fee28"]]},{"id":"a2bddea8.fee28","type":"set","name":"set ss.resource-key.generic-vnf","xml":"<set>\n<parameter name='ss.resource-key.generic-vnf' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":3609.4126205444336,"y":1250.944284439087,"z":"8068ded9.ccc26","wires":[]},{"id":"289fcfcb.8ee7","type":"outcome","name":"volume-group","xml":"<outcome value='volume-group'>\n","comments":"","outputs":1,"x":3320.571662902832,"y":1341.1905689239502,"z":"8068ded9.ccc26","wires":[["532ce28c.3776ac"]]},{"id":"3c596d6c.b48dd2","type":"outcome","name":"vnfc","xml":"<outcome value='vnfc'>\n","comments":"","outputs":1,"x":3300.000442504883,"y":1385.4763507843018,"z":"8068ded9.ccc26","wires":[["c4bd3f7e.1c8b5"]]},{"id":"b9f013b2.25b3f","type":"outcome","name":"connection-points","xml":"<outcome value='connection-points'>\n","comments":"","outputs":1,"x":3334.7143173217773,"y":1429.7620134353638,"z":"8068ded9.ccc26","wires":[["5e1b7935.47e818"]]},{"id":"3565db8d.625714","type":"outcome","name":"l-interface","xml":"<outcome value='l-interface'>\n","comments":"","outputs":1,"x":3311.2858123779297,"y":1475.333511352539,"z":"8068ded9.ccc26","wires":[["8c93fc68.5c60f"]]},{"id":"be2c548e.1c4a58","type":"outcome","name":"l3-network","xml":"<outcome value='l3-netework'>\n","comments":"","outputs":1,"x":3314.1430587768555,"y":1519.761960029602,"z":"8068ded9.ccc26","wires":[["c92bdf18.2a6ef"]]},{"id":"ca74e487.dcffc8","type":"set","name":"set ss.resource-key.vf-module","xml":"<set>\n<parameter name='ss.resource-key.vf-module' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":3607.000015258789,"y":1296.6191234588623,"z":"8068ded9.ccc26","wires":[]},{"id":"c4bd3f7e.1c8b5","type":"set","name":"set ss.resource-key.vnfc","xml":"<set>\n<parameter name='ss.resource-key.vnfc' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":3593.0003051757812,"y":1385.6191215515137,"z":"8068ded9.ccc26","wires":[]},{"id":"5e1b7935.47e818","type":"set","name":"set ss.resource-key.connection-points","xml":"<set>\n<parameter name='ss.resource-key.connection-points' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":3635.143081665039,"y":1429.9048519134521,"z":"8068ded9.ccc26","wires":[]},{"id":"532ce28c.3776ac","type":"set","name":"set ss.resource-key.volume-group","xml":"<set>\n<parameter name='ss.resource-key.volume-group' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":3622.428939819336,"y":1341.1904468536377,"z":"8068ded9.ccc26","wires":[]},{"id":"8c93fc68.5c60f","type":"set","name":"set ss.resource-key.l-interface","xml":"<set>\n<parameter name='ss.resource-key.l-interface' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":3611.5715560913086,"y":1474.0477256774902,"z":"8068ded9.ccc26","wires":[]},{"id":"c92bdf18.2a6ef","type":"set","name":"set ss.resource-key.l3-network","xml":"<set>\n<parameter name='ss.resource-key.l3-network' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":3614.143165588379,"y":1520.9047985076904,"z":"8068ded9.ccc26","wires":[]},{"id":"1e19f844.9c0ec8","type":"switchNode","name":"switch: ss.resource-key.generic-vnf","xml":"<switch test=\"`$ss.resource-key.generic-vnf`\">\n\n\n","comments":"","outputs":1,"x":1004.285888671875,"y":1415.8333263397217,"z":"8068ded9.ccc26","wires":[["22799027.e77b3"]]},{"id":"22799027.e77b3","type":"outcome","name":"generic-vnf","xml":"<outcome value='generic-vnf'>\n","comments":"","outputs":1,"x":1258.3174285888672,"y":1415.5832529067993,"z":"8068ded9.ccc26","wires":[["e09c2dd9.09452"]]},{"id":"8d88acea.3f4ec","type":"outcome","name":"volume-group","xml":"<outcome value='volume-group'>\n","comments":"","outputs":1,"x":1275.2182846069336,"y":3825.154559135437,"z":"8068ded9.ccc26","wires":[["2d857037.91483"]]},{"id":"6b9d6bf5.bbd334","type":"outcome","name":"vnfc","xml":"<outcome value='vnfc'>\n","comments":"","outputs":1,"x":1189.9327087402344,"y":4289.536512374878,"z":"8068ded9.ccc26","wires":[["6e76a93a.5e0588"]]},{"id":"6caebe95.cbe41","type":"outcome","name":"connection-points","xml":"<outcome value='connection-points'>\n","comments":"","outputs":1,"x":1308.7895584106445,"y":4614.012176275253,"z":"8068ded9.ccc26","wires":[["b7dc825b.8fad"]]},{"id":"7b7e9ace.8bcdd4","type":"outcome","name":"l-interface","xml":"<outcome value='l-interface'>\n","comments":"","outputs":1,"x":1249.0278244018555,"y":5281.91733455658,"z":"8068ded9.ccc26","wires":[["dbc07084.be7f5"]]},{"id":"4c582c8b.e26454","type":"outcome","name":"l3-network","xml":"<outcome value='l3-netework'>\n","comments":"","outputs":1,"x":1267.741928100586,"y":6171.630530357361,"z":"8068ded9.ccc26","wires":[["b307f248.13b72"]]},{"id":"e09c2dd9.09452","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1043.74995803833,"y":1644.6191158294678,"z":"8068ded9.ccc26","wires":[["cdbfc33f.d52a7","b9bf0de4.48018","26afdd51.b0c082","908814ee.d3c7b8","c975e01d.234e2","70689778.84aa08"]]},{"id":"b7a3bc44.8c264","type":"outcome","name":"availability_zone_0","xml":"<outcome value='availability_zone_0'>","comments":"","outputs":1,"x":2346.4286346435547,"y":1263.6190452575684,"z":"8068ded9.ccc26","wires":[["edac9821.fddc48"]]},{"id":"edac9821.fddc48","type":"set","name":"set ss.param.availability-zone-0, index","xml":"<set>\n<parameter name='ss.param.availability-zone-0' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />\n<parameter name='ss.param.availability-zone-0-index' value='`$bidx`' />","comments":"","x":2702.928611755371,"y":1263.369044303894,"z":"8068ded9.ccc26","wires":[]},{"id":"b6529101.23526","type":"save","name":"save availability-zone relationship","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf:relationship-list\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"availability-zone\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`$ss.availability-zone.related-link`\" />\n<!--\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"availability-zone\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"cloud-region.cloud-owner\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.cloud-region.cloud-owner`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-key\" value=\"cloud-region.cloud-region-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-value\" value=\"`$ss.param.aic-cloud-region`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-key\" value=\"availability-zone.availability-zone-name\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-value\" value=\"`$ss.param.availability-zone-0`\" />\n-->","comments":"","outputs":1,"x":2502.2857818603516,"y":2878.3335857391357,"z":"8068ded9.ccc26","wires":[["eff6042e.114c48","d6c66a3.e397a98","d3081601.d09528"]]},{"id":"eff6042e.114c48","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2751.5358123779297,"y":2878.6906328201294,"z":"8068ded9.ccc26","wires":[["7582c90f.6e1e58"]]},{"id":"d6c66a3.e397a98","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2757.7858238220215,"y":2929.440667152405,"z":"8068ded9.ccc26","wires":[["285dd4bf.b8919c"]]},{"id":"f35164aa.6c0648","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to save availability-zone relationship for generic-vnf in AnAI with availability-zone-name =' + $ss.param.as-number + '; ' + $error-message`\" />\n","comments":"","x":3127.404769897461,"y":2878.4763374328613,"z":"8068ded9.ccc26","wires":[]},{"id":"ef238623.db9c18","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to create availability-zone relationship because generic-vnf with vnf-id =' + $ss.param.vnf-id + ' is not found in AAI. ' + $error-message`\" />\n","comments":"","x":3127.976287841797,"y":2928.7145137786865,"z":"8068ded9.ccc26","wires":[]},{"id":"7582c90f.6e1e58","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2924.9643783569336,"y":2878.7621574401855,"z":"8068ded9.ccc26","wires":[["f35164aa.6c0648","7102730.01d478c"]]},{"id":"285dd4bf.b8919c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2927.8215942382812,"y":2929.6192989349365,"z":"8068ded9.ccc26","wires":[["ef238623.db9c18","7102730.01d478c"]]},{"id":"70689778.84aa08","type":"switchNode","name":"ss.param.availability-zone-0 != NULL","xml":"<switch test=\"`$ss.param.availability-zone-0 != ''`\">\n\n\n","comments":"","outputs":1,"x":1326.7736320495605,"y":2782.845057487488,"z":"8068ded9.ccc26","wires":[["2be7ec40.58f454"]]},{"id":"2be7ec40.58f454","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1563.2020149230957,"y":2783.273591041565,"z":"8068ded9.ccc26","wires":[["8780edee.3bd45"]]},{"id":"8780edee.3bd45","type":"execute","name":"ss.param.availability-zone-0 contains $","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name='source' value='`$ss.param.availability-zone-0`' />\n    <parameter name='target' value='$' />\n","comments":"","outputs":1,"x":1807.011562347412,"y":2783.6545734405518,"z":"8068ded9.ccc26","wires":[["4bde0e1f.c32f9","bf9059c2.977898"]]},{"id":"4bde0e1f.c32f9","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2063.011501312256,"y":2782.940100669861,"z":"8068ded9.ccc26","wires":[["95fe6fb0.516f"]]},{"id":"bf9059c2.977898","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2063.4883403778076,"y":2831.797315597534,"z":"8068ded9.ccc26","wires":[["f23554a3.c0f0c8"]]},{"id":"95fe6fb0.516f","type":"record","name":"availability_zone_0","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"`'ss.param.availability-zone-0 = ' + $ss.param.availability-zone-0`\"/>\n<parameter name=\"field3\" value=\"__SKIP availability-zone-0 update for generic-vnf in AnAI__\"/>","comments":"","outputs":1,"x":2253.535655975342,"y":2783.2263259887695,"z":"8068ded9.ccc26","wires":[[]]},{"id":"d3081601.d09528","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2759.0594635009766,"y":2981.6192302703857,"z":"8068ded9.ccc26","wires":[["abfe1557.59faf8"]]},{"id":"abfe1557.59faf8","type":"set","name":"set availability-zone-0-updated = true","xml":"<set>\n<parameter name='ss.availability-zone-0-updated' value='true' />\n","comments":"","x":3001.2022857666016,"y":2981.0476970672607,"z":"8068ded9.ccc26","wires":[]},{"id":"96bf497d.7c0b58","type":"save","name":"Rollback generic-vnf update","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf:relationship-list\" \n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \n\t\tAND related-to = availability-zone \n\t\tAND relationship.related-link = $tmp.related-link\" >","comments":"","outputs":1,"x":4930.714065551758,"y":2756.9527320861816,"z":"8068ded9.ccc26","wires":[["518876d5.324a98","4baf9d28.7def04","d702b2c2.0eebd"]]},{"id":"518876d5.324a98","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":5167.964050292969,"y":2756.4526767730713,"z":"8068ded9.ccc26","wires":[["97aeb615.ee80a8"]]},{"id":"4baf9d28.7def04","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":5174.214061737061,"y":2808.2027111053467,"z":"8068ded9.ccc26","wires":[["6bbd2d7b.4fd744"]]},{"id":"84056dd2.6ed0f","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":4981.142532348633,"y":2659.6545724868774,"z":"8068ded9.ccc26","wires":[]},{"id":"d702b2c2.0eebd","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":5172.035308837891,"y":2856.4642810821533,"z":"8068ded9.ccc26","wires":[["5d7ab32b.2f0aac"]]},{"id":"e5f99cea.bb11a","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":4678.320991516113,"y":2616.047516822815,"z":"8068ded9.ccc26","wires":[["84056dd2.6ed0f","96bf497d.7c0b58","b1f6477e.336b08","49a4a067.9c036"]]},{"id":"97aeb615.ee80a8","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback generic-vnf availability-zone relationship from AnAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":5350.785247802734,"y":2756.5713510513306,"z":"8068ded9.ccc26","wires":[]},{"id":"6bbd2d7b.4fd744","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback generic-vnf availability-zone relationship because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":5353.285247802734,"y":2807.821352958679,"z":"8068ded9.ccc26","wires":[]},{"id":"5d7ab32b.2f0aac","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback of generic-vnf availability-zone relationship completed. '`\" />\n","comments":"","x":5355.785247802734,"y":2856.8213510513306,"z":"8068ded9.ccc26","wires":[]},{"id":"b1f6477e.336b08","type":"record","name":"record generic-vnf relationship ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK availability-zone relationship\"/>","comments":"","outputs":1,"x":4973.285232543945,"y":2615.154570579529,"z":"8068ded9.ccc26","wires":[[]]},{"id":"48bbb5d3.ee15fc","type":"switchNode","name":"ss.availability-zone-0-updated","xml":"<switch test=\"`$ss.availability-zone-0-updated`\">\n\n\n","comments":"","outputs":1,"x":4297.428375244141,"y":2616.0002546310425,"z":"8068ded9.ccc26","wires":[["caa3d3a3.6b923"]]},{"id":"caa3d3a3.6b923","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":4513.999664306641,"y":2616.42884349823,"z":"8068ded9.ccc26","wires":[["e5f99cea.bb11a"]]},{"id":"40e8fb80.4fe434","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4059.0478286743164,"y":2410.9524269104004,"z":"8068ded9.ccc26","wires":[["48bbb5d3.ee15fc","7102730.01d478c"]]},{"id":"49a4a067.9c036","type":"set","name":"set tmp.related-link","xml":"<set>\n<parameter name='tmp.related-link' \n\tvalue=\"`'/aai/v$/cloud-infrastructure/cloud-regions/cloud-region/' + \n\t$prop.cloud-region.cloud-owner + \n\t'/' + \n\t$ss.param.aic-cloud-region + \n\t'/availability-zones/availability-zone/' + \n\t$ss.param.availability-zone-0`\" /> ","comments":"","x":4901.380401611328,"y":2708.6194067001343,"z":"8068ded9.ccc26","wires":[]},{"id":"a393fb3d.925a18","type":"switchNode","name":"switch: ss.resource-key.vf-module","xml":"<switch test=\"`$ss.resource-key.vf-module`\">\n\n\n","comments":"","outputs":1,"x":993.0477256774902,"y":3363.7859120368958,"z":"8068ded9.ccc26","wires":[["212cb7fa.9054e8"]]},{"id":"212cb7fa.9054e8","type":"outcome","name":"vf-module","xml":"<outcome value='vf-module'>\n","comments":"","outputs":1,"x":1246.8410301208496,"y":3363.4166798591614,"z":"8068ded9.ccc26","wires":[["f0e5f31a.7af32"]]},{"id":"f0e5f31a.7af32","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1438.7499465942383,"y":3363.9762563705444,"z":"8068ded9.ccc26","wires":[["fff7178f.f6b028","e53f3779.d51718","61212051.1f615"]]},{"id":"12288572.4b441b","type":"switchNode","name":"switch: ss.resource-key.generic-vnf","xml":"<switch test=\"`$ss.resource-key.generic-vnf`\">\n\n\n","comments":"","outputs":1,"x":5412.858173370361,"y":3067.3337631225586,"z":"8068ded9.ccc26","wires":[["2de67d2d.eaa8c2"]]},{"id":"2de67d2d.eaa8c2","type":"outcome","name":"generic-vnf","xml":"<outcome value='generic-vnf'>\n","comments":"","outputs":1,"x":5666.8897132873535,"y":3067.0836896896362,"z":"8068ded9.ccc26","wires":[["1c8efb54.0d2e25"]]},{"id":"e9ef052a.050278","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":5172.8579177856445,"y":3067.762412071228,"z":"8068ded9.ccc26","wires":[["12288572.4b441b"]]},{"id":"310596e2.42bc4a","type":"switchNode","name":"switch: ss.resource-key.volume-group","xml":"<switch test=\"`$ss.resource-key.volume-group`\">\n\n\n","comments":"","outputs":1,"x":1000.2382659912109,"y":3824.571523666382,"z":"8068ded9.ccc26","wires":[["8d88acea.3f4ec"]]},{"id":"2d857037.91483","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1464.368953704834,"y":3825.5235500335693,"z":"8068ded9.ccc26","wires":[["be71747e.761fd8","2bb84732.4581c8"]]},{"id":"5a1044bf.9a5c0c","type":"switchNode","name":"switch: ss.resource-key.vf-module","xml":"<switch test=\"`$ss.resource-key.vf-module`\">\n\n\n","comments":"","outputs":1,"x":5263.715049743652,"y":3456.6194343566895,"z":"8068ded9.ccc26","wires":[["2202a5e9.5bf9ba"]]},{"id":"2202a5e9.5bf9ba","type":"outcome","name":"vf-module","xml":"<outcome value='vf-module'>\n","comments":"","outputs":1,"x":5507.508354187012,"y":3456.250202178955,"z":"8068ded9.ccc26","wires":[["3d611339.da18cc"]]},{"id":"5baa82ec.dffecc","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":5016.715049743652,"y":3282.6194343566895,"z":"8068ded9.ccc26","wires":[["e9ef052a.050278","5a1044bf.9a5c0c"]]},{"id":"61212051.1f615","type":"set","name":"set ss.selflink","xml":"<set>\n<parameter name='ss.selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/' + \n$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.service-instance-id + \n'/service-data/vnfs/vnf/' + \n$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.vnf-id + \n'/vnf-data/vf-modules/vf-module/' + \n$ss.param.vf-module-id + \n'/vf-module-data/vf-module-topology/'`\" />\n","comments":"","x":1667.333381652832,"y":3496.237877845764,"z":"8068ded9.ccc26","wires":[]},{"id":"c0feb185.c5348","type":"switchNode","name":"switch: ss.resource-key.vnfc","xml":"<switch test=\"`$ss.resource-key.vnfc`\">\n\n\n","comments":"","outputs":1,"x":967.3056488037109,"y":4289.608148574829,"z":"8068ded9.ccc26","wires":[["6b9d6bf5.bbd334"]]},{"id":"f10164da.04f358","type":"switchNode","name":"switch: ss.resource-key.connection-points","xml":"<switch test=\"`$ss.resource-key.connection-points`\">\n\n\n","comments":"","outputs":1,"x":1014.3810577392578,"y":4614.28610253334,"z":"8068ded9.ccc26","wires":[["6caebe95.cbe41"]]},{"id":"40f8f017.2403a","type":"switchNode","name":"switch: ss.resource-key.l-interface","xml":"<switch test=\"`$ss.resource-key.l-interface`\">\n\n\n","comments":"","outputs":1,"x":995.7143478393555,"y":5281.61899471283,"z":"8068ded9.ccc26","wires":[["7b7e9ace.8bcdd4"]]},{"id":"4fcc988.d1ea868","type":"switchNode","name":"switch: ss.resource-key.l3-network","xml":"<switch test=\"`$ss.resource-key.l3-network`\">\n\n\n","comments":"","outputs":1,"x":1004.9998321533203,"y":6172.333167076111,"z":"8068ded9.ccc26","wires":[["4c582c8b.e26454"]]},{"id":"5819b51f.e401ec","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2080.2382049560547,"y":4058.3332056999207,"z":"8068ded9.ccc26","wires":[["270b03e3.958a6c","5baa82ec.dffecc"]]},{"id":"270b03e3.958a6c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'volume-group not found in AnAI with volume-group-id=' + $ss.param.volume-group-id  + '; ' + $error-message`\" />\n","comments":"","x":2271.9048805236816,"y":4057.4047617912292,"z":"8068ded9.ccc26","wires":[]},{"id":"2da1393.d2f90c6","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1758.4762687683105,"y":4334.190864562988,"z":"8068ded9.ccc26","wires":[["6b1f5790.4f6e98","4c4f8f77.4d5e8"]]},{"id":"1a8d278c.ff1d48","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1567.6667938232422,"y":4334.476434707642,"z":"8068ded9.ccc26","wires":[["2da1393.d2f90c6"]]},{"id":"1dadc5fe.f7b3aa","type":"switchNode","name":"switch: ss.resource-key.volume-group","xml":"<switch test=\"`$ss.resource-key.volume-group`\">\n\n\n","comments":"","outputs":1,"x":5108.714794158936,"y":3733.9529342651367,"z":"8068ded9.ccc26","wires":[["e0077fc8.8ce35"]]},{"id":"e0077fc8.8ce35","type":"outcome","name":"volume-group","xml":"<outcome value='volume-group'>\n","comments":"","outputs":1,"x":5365.508098602295,"y":3733.5837020874023,"z":"8068ded9.ccc26","wires":[["5688630b.c730bc"]]},{"id":"8bd683f0.0ff8a","type":"outcome","name":"vnfc","xml":"<outcome value='vnfc'>\n","comments":"","outputs":1,"x":5170.715019226074,"y":4010.6193017959595,"z":"8068ded9.ccc26","wires":[["35fbb6bd.1fe98a"]]},{"id":"b6293e2c.6351f","type":"switchNode","name":"switch: ss.resource-key.vnfc","xml":"<switch test=\"`$ss.resource-key.vnfc`\">\n\n\n","comments":"","outputs":1,"x":4948.087959289551,"y":4010.6909379959106,"z":"8068ded9.ccc26","wires":[["8bd683f0.0ff8a"]]},{"id":"6686e089.e3643","type":"comment","name":"UNASSIGN","info":"","comments":"","x":3334.7619705200195,"y":2942.61895942688,"z":"8068ded9.ccc26","wires":[]},{"id":"db46c464.eb3478","type":"outcome","name":"l-interface","xml":"<outcome value='l-interface'>\n","comments":"","outputs":1,"x":4883.857345581055,"y":4758.047756195068,"z":"8068ded9.ccc26","wires":[["5de01092.e1692"]]},{"id":"47592f63.65ff8","type":"switchNode","name":"switch: ss.resource-key.l-interface","xml":"<switch test=\"`$ss.resource-key.l-interface`\">\n\n\n","comments":"","outputs":1,"x":4650.543869018555,"y":4757.749416351318,"z":"8068ded9.ccc26","wires":[["db46c464.eb3478"]]},{"id":"1c0b6aa6.c62445","type":"outcome","name":"l3-network","xml":"<outcome value='l3-netework'>\n","comments":"","outputs":1,"x":4667.61856842041,"y":5527.523387908936,"z":"8068ded9.ccc26","wires":[["e665f06b.96f35"]]},{"id":"ecb6efb1.19ad9","type":"switchNode","name":"switch: ss.resource-key.l3-network","xml":"<switch test=\"`$ss.resource-key.l3-network`\">\n","comments":"","outputs":1,"x":4404.8764724731445,"y":5528.226024627686,"z":"8068ded9.ccc26","wires":[["1c0b6aa6.c62445"]]},{"id":"3b70420c.dc52de","type":"outcome","name":"l-interface","xml":"<outcome value='l-interface'>\n","comments":"","outputs":1,"x":4778.714279174805,"y":5166.619045257568,"z":"8068ded9.ccc26","wires":[["3199093e.07e6f6"]]},{"id":"16cd30f3.c7e79f","type":"switchNode","name":"switch: ss.resource-key.l-interface","xml":"<switch test=\"`$ss.resource-key.l-interface`\">\n\n\n","comments":"","outputs":1,"x":4545.400802612305,"y":5166.320705413818,"z":"8068ded9.ccc26","wires":[["3b70420c.dc52de"]]},{"id":"408e0f2b.32827","type":"set","name":"set ss.cp.related-link","xml":"<set>\n<parameter name='ss.cp.related-link' \n\tvalue=\"`'/aai/v$/network/vnfcs/vnfc/' + \n\t$ss.param.vnfc-name + \n\t'/cps/cp/' + \n\t$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.connection-point-id`\" />","comments":"","x":2628.666618347168,"y":4817.666753053665,"z":"8068ded9.ccc26","wires":[]},{"id":"998e8a86.fc6368","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2416.666435241699,"y":4817.999890565872,"z":"8068ded9.ccc26","wires":[["408e0f2b.32827","2f9cf95b.a79726"]]},{"id":"8725d510.792668","type":"set","name":"set ss.l3-network.related-link","xml":"<set>\n<parameter name='ss.l3-network.related-link' \n\tvalue=\"`'/aai/v$/network/l3-networks/l3-network/' + $ss.network[$n].netid`\" />","comments":"","x":1869.9998779296875,"y":6171.000082015991,"z":"8068ded9.ccc26","wires":[]},{"id":"2dbbe18d.9f749e","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1631.666618347168,"y":6171.333102226257,"z":"8068ded9.ccc26","wires":[["8725d510.792668","4933575b.c49bc8"]]},{"id":"ed90b580.692598","type":"set","name":"set ss.availability-zone.related-link","xml":"<set>\n<parameter name='ss.availability-zone.related-link' \n\tvalue=\"`'/aai/v$/cloud-infrastructure/cloud-regions/cloud-region/' + \n\t$prop.cloud-region.cloud-owner + '/' + $ss.param.aic-cloud-region + \n\t'/availability-zones/availability-zone/' + \n\t$ss.param.availability-zone-0`\" />\n","comments":"","x":2502.7144470214844,"y":2831.857195854187,"z":"8068ded9.ccc26","wires":[]},{"id":"f23554a3.c0f0c8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2240.571601867676,"y":2832.2856311798096,"z":"8068ded9.ccc26","wires":[["ed90b580.692598","b6529101.23526"]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-aai-vnf-put.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-aai-vnf-put.json
new file mode 100644
index 0000000..044dac7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-aai-vnf-put.json
@@ -0,0 +1 @@
+[{"id":"55d0537a.aad9ac","type":"dgstart","name":"DGSTART","outputs":1,"x":140,"y":37.14285659790039,"z":"85bef54a.63a4f8","wires":[["d3d5c485.a4c258"]]},{"id":"3fcd67d7.8f74e8","type":"method","name":"method self-serve-aai-vnf-put","xml":"<method rpc='self-serve-aai-vnf-put' mode='sync'>\n","comments":"","outputs":1,"x":270.7857208251953,"y":112.60317993164062,"z":"85bef54a.63a4f8","wires":[["dfd5ae04.f32e3"]]},{"id":"dfd5ae04.f32e3","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":159.46430206298828,"y":259.09527111053467,"z":"85bef54a.63a4f8","wires":[["1ef56451.f805fc","c307398e.690a88","43d1bc2b.422f64","ac85cbde.bc5418"]]},{"id":"d3d5c485.a4c258","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":412.8571472167969,"y":36.57142353057861,"z":"85bef54a.63a4f8","wires":[["3fcd67d7.8f74e8"]]},{"id":"1ef56451.f805fc","type":"switchNode","name":"switch: ss.capability-action","xml":"<switch test='`$ss.capability-action`'>\n","comments":"","outputs":1,"x":402.5000305175781,"y":313.03571128845215,"z":"85bef54a.63a4f8","wires":[["f78a5ca3.c9ff1","545c7cf1.7eb664"]]},{"id":"f78a5ca3.c9ff1","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":626.0000267028809,"y":313.28571128845215,"z":"85bef54a.63a4f8","wires":[["d3b4d1fc.2a362"]]},{"id":"d3b4d1fc.2a362","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":785.9166984558105,"y":313.39681005477905,"z":"85bef54a.63a4f8","wires":[]},{"id":"545c7cf1.7eb664","type":"outcome","name":"assign","xml":"<outcome value='assign'>","comments":"","outputs":1,"x":625.7500228881836,"y":362.28571462631226,"z":"85bef54a.63a4f8","wires":[["72205822.388d68"]]},{"id":"df1f48c5.e7d9e8","type":"for","name":"for aidx in param_length (VNF)","xml":"<for silentFailure='true' index=\"aidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`\">","comments":"","outputs":1,"x":1047.7420234680176,"y":362.2460980415344,"z":"85bef54a.63a4f8","wires":[["37dfb14b.c1f7be"]]},{"id":"c307398e.690a88","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-vnfput.log' />\n","comments":"","outputs":1,"x":358.9880828857422,"y":544.523811340332,"z":"85bef54a.63a4f8","wires":[[]]},{"id":"37dfb14b.c1f7be","type":"switchNode","name":"switch: param[].name","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].name`'>\n","comments":"","outputs":1,"x":1310.2857093811035,"y":362.5000042915344,"z":"85bef54a.63a4f8","wires":[["c5a32a56.cd5118","c689826d.88f7f","58892a1d.521944","b4a84036.4788c","29e202.a7a62dfe","d7859900.1cb0d8","5c6dfc03.287a34"]]},{"id":"c5a32a56.cd5118","type":"outcome","name":"vnf_name","xml":"<outcome value='vnf_name'>","comments":"","outputs":1,"x":1531.3215599060059,"y":362.28569984436035,"z":"85bef54a.63a4f8","wires":[["55a24330.b52acc"]]},{"id":"c689826d.88f7f","type":"outcome","name":"vnf_id","xml":"<outcome value='vnf_id'>","comments":"","outputs":1,"x":1523.9645042419434,"y":404.1071581840515,"z":"85bef54a.63a4f8","wires":[["aa844c30.45db1"]]},{"id":"55a24330.b52acc","type":"set","name":"set vnf-name, index","xml":"<set>\n<parameter name='ss.param.vnf-name' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.vnf-name-index' value='`$aidx`' />","comments":"","x":1722.3215675354004,"y":362.7857155799866,"z":"85bef54a.63a4f8","wires":[]},{"id":"aa844c30.45db1","type":"set","name":"set vnf-id, index","xml":"<set>\n<parameter name='ss.param.vnf-id' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.vnf-id-index' value='`$aidx`' />","comments":"","x":1699.4645156860352,"y":403.85715913772583,"z":"85bef54a.63a4f8","wires":[]},{"id":"86241a75.30e1b8","type":"save","name":"update generic-vnf","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \" >\n<parameter name=\"vnf-name\" value=\"`$ss.param.vnf-name`\" />\n<parameter name=\"prov-status\" value=\"PREPROV\" />\n<parameter name=\"operational-status\" value=\"out-of-service-path\" />\n<parameter name=\"selflink\" value=\"`$ss.selflink`\" />\n<parameter name=\"model-customization-id\" \n\tvalue=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-customization-uuid`\" />\n<parameter name=\"model-invariant-id\" \n\tvalue=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-invariant-uuid`\" />\n<parameter name=\"model-version-id\" \n\tvalue=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-uuid`\" />","comments":"","outputs":1,"x":1012.1784973144531,"y":963.1072387695312,"z":"85bef54a.63a4f8","wires":[["4c5244df.ce970c","7dd9e5a8.f30c7c"]]},{"id":"4c5244df.ce970c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1212.4285278320312,"y":963.4642858505249,"z":"85bef54a.63a4f8","wires":[["e6a6591.117aea8"]]},{"id":"7dd9e5a8.f30c7c","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1218.678539276123,"y":1015.2143201828003,"z":"85bef54a.63a4f8","wires":[["684c9c20.1ac634"]]},{"id":"80d924b7.aface8","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 generic-vnf.vnf-name in AnAI with vnf-name=' + $ss.param.vnf-name`\" />\n","comments":"","x":1650.2974853515625,"y":963.2499904632568,"z":"85bef54a.63a4f8","wires":[]},{"id":"facbfa08.015888","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'generic-vnf with vnf-id =' + $ss.param.vnf-id + ' is not found in AAI'`\" />\n","comments":"","x":1650.8690032958984,"y":1013.488166809082,"z":"85bef54a.63a4f8","wires":[]},{"id":"8157040a.eb58e8","type":"save","name":"get generic-vnf","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \"\n\tpfx=\"tmp.aai.vnf\" >\n\n","comments":"","outputs":1,"x":1003.4642219543457,"y":748.0000066757202,"z":"85bef54a.63a4f8","wires":[["ef982b26.77f938","75c917ec.7702b8"]]},{"id":"ef982b26.77f938","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1211.999855041504,"y":747.499927520752,"z":"85bef54a.63a4f8","wires":[["b75ef25a.515e5"]]},{"id":"75c917ec.7702b8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1220.2497749328613,"y":846.3928356170654,"z":"85bef54a.63a4f8","wires":[["63c26544.05168c"]]},{"id":"a4abae3c.5acf","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 generic-vnf with vnf-id=' + $ss.param.vnf-id + ' from AnAI'`\" />\n","comments":"","x":1656.4400596618652,"y":792.9999465942383,"z":"85bef54a.63a4f8","wires":[]},{"id":"e95a3d2d.d5c19","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'generic-vnf.vnf-name with vnf-id=' + $ss.param.vnf-id + ' not found in AAI'`\" />\n","comments":"","x":1658.1545333862305,"y":846.95250415802,"z":"85bef54a.63a4f8","wires":[]},{"id":"72205822.388d68","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":783.5000190734863,"y":362.535710811615,"z":"85bef54a.63a4f8","wires":[["df1f48c5.e7d9e8","8157040a.eb58e8","86241a75.30e1b8","47acecfe.290644","3d3628a4.f5f868","110e04e.b280ffb","c62e5711.65deb8"]]},{"id":"b75ef25a.515e5","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1383.5714416503906,"y":747.5357208251953,"z":"85bef54a.63a4f8","wires":[["8eb3ba4a.2df338","a4abae3c.5acf"]]},{"id":"e6a6591.117aea8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1385.8570938110352,"y":963.535810470581,"z":"85bef54a.63a4f8","wires":[["8eb3ba4a.2df338","80d924b7.aface8"]]},{"id":"684c9c20.1ac634","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1388.7143096923828,"y":1014.392951965332,"z":"85bef54a.63a4f8","wires":[["8eb3ba4a.2df338","facbfa08.015888"]]},{"id":"63c26544.05168c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1386.4285202026367,"y":846.5357208251953,"z":"85bef54a.63a4f8","wires":[["8eb3ba4a.2df338","e95a3d2d.d5c19"]]},{"id":"8eb3ba4a.2df338","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":1753.1428298950195,"y":747.2500324249268,"z":"85bef54a.63a4f8","wires":[]},{"id":"56dac433.4ebe4c","type":"comment","name":"VNF params","info":"","comments":"","x":1021.785717010498,"y":312.6190495491028,"z":"85bef54a.63a4f8","wires":[]},{"id":"58892a1d.521944","type":"outcome","name":"license-assignment-group-uuid","xml":"<outcome value='license-assignment-group-uuid'>","comments":"","outputs":1,"x":1601.0000267028809,"y":447.1428647041321,"z":"85bef54a.63a4f8","wires":[["33858d6f.c508c2"]]},{"id":"33858d6f.c508c2","type":"set","name":"set license-assignment-group-uuid, index","xml":"<set>\n<parameter name='ss.param.license-assignment-group-uuid' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.license-assignment-group-uuid-index' value='`$aidx`' />","comments":"","x":1944.5000381469727,"y":446.8928656578064,"z":"85bef54a.63a4f8","wires":[]},{"id":"b4a84036.4788c","type":"outcome","name":"entitlement-assignment-group-uuid","xml":"<outcome value='entitlement-assignment-group-uuid'>","comments":"","outputs":1,"x":1616.0000267028809,"y":489.6428647041321,"z":"85bef54a.63a4f8","wires":[["6b87d852.7227f8"]]},{"id":"6b87d852.7227f8","type":"set","name":"set entitlement-assignment-group-uuid, index","xml":"<set>\n<parameter name='ss.param.entitlement-assignment-group-uuid' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.entitlement-assignment-group-uuid-index' value='`$aidx`' />","comments":"","x":1959.5000381469727,"y":489.3928656578064,"z":"85bef54a.63a4f8","wires":[]},{"id":"c6893659.48b0a8","type":"save","name":"Rollback generic-vnf update","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf\"\n\t\tkey=\"generic-vnf.vnf-id = $ss.param.vnf-id \" >\n<parameter name=\"vnf-name\" value='`$tmp.aai.vnf.vnf-anme`' />","comments":"","outputs":1,"x":3439.0000076293945,"y":978.928617477417,"z":"85bef54a.63a4f8","wires":[["5b3c33f6.ebd2cc","5d1a7d88.ced424","c0606087.f6dec"]]},{"id":"5b3c33f6.ebd2cc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3677.2499923706055,"y":978.4285621643066,"z":"85bef54a.63a4f8","wires":[["19c115b9.1a8d5a"]]},{"id":"5d1a7d88.ced424","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3687.250045776367,"y":1018.928632736206,"z":"85bef54a.63a4f8","wires":[["9038539f.5722d"]]},{"id":"d601c3d4.6d50b","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":3490.4284896850586,"y":933.2972393035889,"z":"85bef54a.63a4f8","wires":[]},{"id":"c0606087.f6dec","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":3685.071334838867,"y":1059.6902294158936,"z":"85bef54a.63a4f8","wires":[["7acb4638.07b6a8"]]},{"id":"c470bf3f.ce10b","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":3189.606948852539,"y":889.6901836395264,"z":"85bef54a.63a4f8","wires":[["d601c3d4.6d50b","c6893659.48b0a8","7f2cc0f0.2fb8"]]},{"id":"19c115b9.1a8d5a","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":3860.071189880371,"y":978.5472364425659,"z":"85bef54a.63a4f8","wires":[]},{"id":"9038539f.5722d","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id = ' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`\" />\n","comments":"","x":3866.321231842041,"y":1018.5472745895386,"z":"85bef54a.63a4f8","wires":[]},{"id":"7acb4638.07b6a8","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback of generic-vnf update completed. '`\" />\n","comments":"","x":3868.821273803711,"y":1060.0472993850708,"z":"85bef54a.63a4f8","wires":[]},{"id":"7f2cc0f0.2fb8","type":"record","name":"record generic-vnf ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK generic-vnf update\"/>","comments":"","outputs":1,"x":3444.571189880371,"y":888.7972373962402,"z":"85bef54a.63a4f8","wires":[[]]},{"id":"b21660af.9463e","type":"comment","name":"ROLLBACK STARET HERE","info":"","comments":"","x":3213.14266204834,"y":834.7495536804199,"z":"85bef54a.63a4f8","wires":[]},{"id":"c68671d5.40c25","type":"save","name":"save license","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"license\"\n\t\tkey=\"license.group-uuid = $ss.param.license-assignment-group-uuid \n\t\tAND license.resource-uuid = $ss.param.license-key\n\t\tAND generic-vnf.vnf-id = $ss.param.vnf-id\" >\n<parameter name=\"group-uuid\" value='`$ss.param.license-assignment-group-uuid`' />\n<parameter name=\"resource-uuid\" value='`$ss.param.license-key`' />","comments":"","outputs":1,"x":2126.321647644043,"y":1164.821494102478,"z":"85bef54a.63a4f8","wires":[["596f2794.29bd08","3babeea8.206f12","d8ad3e8c.2f704"]]},{"id":"596f2794.29bd08","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2326.571678161621,"y":1165.1785411834717,"z":"85bef54a.63a4f8","wires":[["d5f43627.b5ce68"]]},{"id":"3babeea8.206f12","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2332.821689605713,"y":1216.928575515747,"z":"85bef54a.63a4f8","wires":[["379e1f2a.c8bb6"]]},{"id":"ba258248.c8735","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to save license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' in AA. ' + $error-message`\" />\n","comments":"","x":2701.4406356811523,"y":1164.9642457962036,"z":"85bef54a.63a4f8","wires":[]},{"id":"37505579.aeb93a","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' is not found in AAI. ' + $error-message`\" />\n","comments":"","x":2702.0121536254883,"y":1215.2024221420288,"z":"85bef54a.63a4f8","wires":[]},{"id":"d5f43627.b5ce68","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2500.000244140625,"y":1165.2500658035278,"z":"85bef54a.63a4f8","wires":[["ba258248.c8735","c470bf3f.ce10b"]]},{"id":"379e1f2a.c8bb6","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2502.8574600219727,"y":1216.1072072982788,"z":"85bef54a.63a4f8","wires":[["37505579.aeb93a","c470bf3f.ce10b"]]},{"id":"25fd194b.69a846","type":"save","name":"save entitlement","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"entitlement\"\n\t\tkey=\"entitlement.group-uuid = $ss.param.entitlement-assignment-group-uuid \n\t\tAND entitlement.resource-uuid = $ss.param.entitlement-key\n\t\tAND generic-vnf.vnf-id = $ss.param.vnf-id\" >\n<parameter name=\"group-uuid\" value='`$ss.param.entitlement-assignment-group-uuid`' />\n<parameter name=\"resource-uuid\" value='`$ss.param.entitlement-key`' />","comments":"","outputs":1,"x":2148.583366394043,"y":1518.2499980926514,"z":"85bef54a.63a4f8","wires":[["6aa55b3.95b14a4","c6d02bd0.b0edd8"]]},{"id":"6aa55b3.95b14a4","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2348.833396911621,"y":1518.607045173645,"z":"85bef54a.63a4f8","wires":[["71ccf768.2c3b38"]]},{"id":"c6d02bd0.b0edd8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2355.083408355713,"y":1570.3570795059204,"z":"85bef54a.63a4f8","wires":[["67dfc015.a0271"]]},{"id":"d3bfd616.246fd8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to save entitlement with group-uuid = ' + $ss.param.entitlement-assignment-group-uuid + ' AND entitlement.resource-uuid = ' + $ss.param.entitlement-key + ' in AAI. ' + $error-message`\" />\n","comments":"","x":2717.98819732666,"y":1518.3926372528076,"z":"85bef54a.63a4f8","wires":[]},{"id":"18dde61b.aca13a","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'entitlement with group-uuid = ' + $ss.param.entitlement-assignment-group-uuid + ' AND entitlement.resource-uuid = ' + $ss.param.entitlement-key + ' is not found in AAI. ' + $error-message`\" />\n","comments":"","x":2724.2738723754883,"y":1568.6309261322021,"z":"85bef54a.63a4f8","wires":[]},{"id":"71ccf768.2c3b38","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2522.261962890625,"y":1518.6785697937012,"z":"85bef54a.63a4f8","wires":[["d3bfd616.246fd8","479bbe95.38113"]]},{"id":"67dfc015.a0271","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2525.1191787719727,"y":1569.5357112884521,"z":"85bef54a.63a4f8","wires":[["18dde61b.aca13a","479bbe95.38113"]]},{"id":"85eb871.2640978","type":"save","name":"Rollback license save","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"license\"\n\t\tkey=\"license.group-uuid = $ss.param.license-assignment-group-uuid \n\t\tAND license.resource-uuid = $ss.param.license-key\" >","comments":"","outputs":1,"x":3809.3573417663574,"y":1243.6072721481323,"z":"85bef54a.63a4f8","wires":[["6ce1b45f.4ed2bc","93d8b7a8.2141d8","d4c04554.422618"]]},{"id":"6ce1b45f.4ed2bc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":4047.6073265075684,"y":1243.107216835022,"z":"85bef54a.63a4f8","wires":[["1e973b6a.3ecc25"]]},{"id":"93d8b7a8.2141d8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":4056.3573417663574,"y":1282.3572721481323,"z":"85bef54a.63a4f8","wires":[["d0cb4d6e.6f6cf"]]},{"id":"d4c04554.422618","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":4054.1786346435547,"y":1320.6188688278198,"z":"85bef54a.63a4f8","wires":[["dae35973.8abc38"]]},{"id":"d86b3e46.6b4fb","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":3573.2142448425293,"y":1201.8688192367554,"z":"85bef54a.63a4f8","wires":[["85eb871.2640978","7905671f.4688f8"]]},{"id":"1e973b6a.3ecc25","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' in AAI. MANUAL ROLLBACK IS REQUIRED!'`\" />\n","comments":"","x":4230.428524017334,"y":1243.2258911132812,"z":"85bef54a.63a4f8","wires":[]},{"id":"d0cb4d6e.6f6cf","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Failed to rollback license because license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' NOT FOUND in AAI. SILENT SUCCESS! '`\" />\n","comments":"","x":4235.428527832031,"y":1281.9759140014648,"z":"85bef54a.63a4f8","wires":[]},{"id":"dae35973.8abc38","type":"set","name":"set error-message","xml":"<set>\n<parameter name='error-message' value=\"`$error-message + ' Rollback of license completed. '`\" />\n","comments":"","x":4237.928573608398,"y":1320.975938796997,"z":"85bef54a.63a4f8","wires":[]},{"id":"7905671f.4688f8","type":"record","name":"record license ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK license\"/>","comments":"","outputs":1,"x":3824.1784858703613,"y":1200.9758729934692,"z":"85bef54a.63a4f8","wires":[[]]},{"id":"479bbe95.38113","type":"block","name":"block","xml":"<block>","atomic":"false","comments":"","outputs":1,"x":3030.428451538086,"y":1063.9285678863525,"z":"85bef54a.63a4f8","wires":[["c470bf3f.ce10b","b081f7f0.a01508"]]},{"id":"47acecfe.290644","type":"set","name":"set resource-resolution-data.status = SUCCESS","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].resource-resolution-data.status' \n\tvalue='SUCCESS' />\n","comments":"","x":1090.845458984375,"y":1695.5354652404785,"z":"85bef54a.63a4f8","wires":[]},{"id":"29e202.a7a62dfe","type":"outcome","name":"aai-vnf-put","xml":"<outcome value='aai-vnf-put'>","comments":"","outputs":1,"x":1543.2500038146973,"y":533.3928589820862,"z":"85bef54a.63a4f8","wires":[["5d6926ab.0be6e8"]]},{"id":"5d6926ab.0be6e8","type":"set","name":"set ss.param.aai-vnf-put-index","xml":"<set>\n<parameter name='ss.param.aai-vnf-put-index' value='`$aidx`' />","comments":"","x":1776.750015258789,"y":533.1428599357605,"z":"85bef54a.63a4f8","wires":[]},{"id":"43d1bc2b.422f64","type":"switchNode","name":"switch: ss.capability-name","xml":"<switch test='`$ss.capability-name`'>\n","comments":"","outputs":1,"x":400.8928451538086,"y":258.75000953674316,"z":"85bef54a.63a4f8","wires":[["760bd716.8d2598"]]},{"id":"760bd716.8d2598","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":625.8928680419922,"y":259.2500081062317,"z":"85bef54a.63a4f8","wires":[["53678390.0ec93c"]]},{"id":"53678390.0ec93c","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":785.8095397949219,"y":259.3611068725586,"z":"85bef54a.63a4f8","wires":[]},{"id":"ac85cbde.bc5418","type":"set","name":"set param[$ss.param.aai-vnf-put-index].value = SUCCESS","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].value' \n\tvalue='SUCCESS' />\n","comments":"","x":505.6071472167969,"y":483.0357093811035,"z":"85bef54a.63a4f8","wires":[]},{"id":"d7859900.1cb0d8","type":"outcome","name":"license-key","xml":"<outcome value='license-key'>","comments":"","outputs":1,"x":1545.71439743042,"y":579.999979019165,"z":"85bef54a.63a4f8","wires":[["ef0d6945.2d36b8"]]},{"id":"ef0d6945.2d36b8","type":"set","name":"set license-key, index","xml":"<set>\n<parameter name='ss.param.license-key' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.license-key-index' value='`$aidx`' />","comments":"","x":1781.2144088745117,"y":579.7499799728394,"z":"85bef54a.63a4f8","wires":[]},{"id":"5c6dfc03.287a34","type":"outcome","name":"entitlement-key","xml":"<outcome value='entitlement-key'>","comments":"","outputs":1,"x":1558.71439743042,"y":622.499979019165,"z":"85bef54a.63a4f8","wires":[["27af300f.e5eac"]]},{"id":"27af300f.e5eac","type":"set","name":"set entitlement-key, index","xml":"<set>\n<parameter name='ss.param.entitlement-key' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.entitlement-key-index' value='`$aidx`' />","comments":"","x":1796.2144088745117,"y":622.2499799728394,"z":"85bef54a.63a4f8","wires":[]},{"id":"3d3628a4.f5f868","type":"switchNode","name":"ss.param.license-assignment-group-uuid != NULL","xml":"<switch test=\"`$ss.param.license-assignment-group-uuid != ''`\">\n","comments":"","outputs":1,"x":1107.1427612304688,"y":1118.428671836853,"z":"85bef54a.63a4f8","wires":[["70116375.debe9c"]]},{"id":"bea6d364.081b4","type":"execute","name":"ss.param.license-assignment-group-uuid contains $","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name='source' value='`$ss.param.license-assignment-group-uuid`' />\n    <parameter name='target' value='$' />\n","comments":"","outputs":1,"x":1677.5238494873047,"y":1117.8572483062744,"z":"85bef54a.63a4f8","wires":[["535af96b.aeb4e8","970650fa.244cd"]]},{"id":"535af96b.aeb4e8","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1972.5237884521484,"y":1117.1427755355835,"z":"85bef54a.63a4f8","wires":[["3ca8f5ac.1ddeda"]]},{"id":"70116375.debe9c","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1398.8095016479492,"y":1117.857219696045,"z":"85bef54a.63a4f8","wires":[["bea6d364.081b4"]]},{"id":"970650fa.244cd","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1973.0006275177002,"y":1164.9999904632568,"z":"85bef54a.63a4f8","wires":[["c68671d5.40c25"]]},{"id":"3ca8f5ac.1ddeda","type":"record","name":"record ss.param.license-assignment-group-uuid","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"`'ss.param.license-assignment-group-uuid = ' + $ss.param.license-assignment-group-uuid`\"/>\n<parameter name=\"field3\" value=\"__SKIP saving license object in AnAI__\"/>","comments":"","outputs":1,"x":2235.952377319336,"y":1116.4285945892334,"z":"85bef54a.63a4f8","wires":[[]]},{"id":"110e04e.b280ffb","type":"switchNode","name":"ss.param.entitlement-assignment-group-uuid NULL","xml":"<switch test=\"`$ss.param.entitlement-assignment-group-uuid != ''`\">\n","comments":"","outputs":1,"x":1108.0952453613281,"y":1469.4286861419678,"z":"85bef54a.63a4f8","wires":[["f6c3383e.93cd68"]]},{"id":"99866447.2f71e8","type":"execute","name":"ss.param.license-assignment-group-uuid contains $","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name='source' value='`$ss.param.entitlement-assignment-group-uuid`' />\n    <parameter name='target' value='$' />\n","comments":"","outputs":1,"x":1680.1428680419922,"y":1469.1905555725098,"z":"85bef54a.63a4f8","wires":[["723da42a.d12fec","285fe0d2.3ca42"]]},{"id":"723da42a.d12fec","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1975.142807006836,"y":1468.4760828018188,"z":"85bef54a.63a4f8","wires":[["cecb74d6.760fe8"]]},{"id":"f6c3383e.93cd68","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1401.4285202026367,"y":1469.1905269622803,"z":"85bef54a.63a4f8","wires":[["99866447.2f71e8"]]},{"id":"285fe0d2.3ca42","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1975.6195335388184,"y":1518.3333625793457,"z":"85bef54a.63a4f8","wires":[["25fd194b.69a846"]]},{"id":"cecb74d6.760fe8","type":"record","name":"record ss.param.entitlement-assignment-group-uuid","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"`'ss.param.entitlement-assignment-group-uuid = ' + $ss.param.entitlement-assignment-group-uuid`\"/>\n<parameter name=\"field3\" value=\"__SKIP saving entitlement object in AnAI__\"/>","comments":"","outputs":1,"x":2259.5713958740234,"y":1467.7619018554688,"z":"85bef54a.63a4f8","wires":[[]]},{"id":"d8ad3e8c.2f704","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2330,"y":1265.7143535614014,"z":"85bef54a.63a4f8","wires":[["7e08d129.12734"]]},{"id":"7e08d129.12734","type":"set","name":"set ss.license-updated = true","xml":"<set>\n<parameter name='ss.license-updated' value='true' />\n","comments":"","x":2550.142822265625,"y":1265.1428203582764,"z":"85bef54a.63a4f8","wires":[]},{"id":"b081f7f0.a01508","type":"switchNode","name":"ss.ss.license-updated","xml":"<switch test=\"`$ss.license-updated`\">\n\n\n","comments":"","outputs":1,"x":3238.5715103149414,"y":1202.4286546707153,"z":"85bef54a.63a4f8","wires":[["eaef5990.271bf8"]]},{"id":"eaef5990.271bf8","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3430.1427993774414,"y":1201.8572435379028,"z":"85bef54a.63a4f8","wires":[["d86b3e46.6b4fb"]]},{"id":"c62e5711.65deb8","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.vnfs.vnf[$vnf-index].vnf-data.service-information.service-instance-id + \n\t'/service-data/vnfs/vnf/' + \n\t$ss.param.vnf-id + \n\t'/vnf-data/vnf-topology/'`\" />\n","comments":"","x":995.9999771118164,"y":892.8571701049805,"z":"85bef54a.63a4f8","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-capability-param-resolution.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-capability-param-resolution.json
new file mode 100644
index 0000000..e356ae7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-capability-param-resolution.json
@@ -0,0 +1,1597 @@
+[

+    {

+        "id": "64991a60.2d1874",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 121.42857360839844,

+        "y": 52.85714340209961,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "eca08f9.7f2997"

+            ]

+        ]

+    },

+    {

+        "id": "f314ed03.56fff",

+        "type": "method",

+        "name": "self-serve-capability-param-resolution",

+        "xml": "<method rpc='self-serve-capability-param-resolution' mode='sync'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 230.42855834960938,

+        "y": 117.14286518096924,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "e4f17cb2.8e032"

+            ]

+        ]

+    },

+    {

+        "id": "eca08f9.7f2997",

+        "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": 429.42857360839844,

+        "y": 52.85714340209961,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "f314ed03.56fff"

+            ]

+        ]

+    },

+    {

+        "id": "e4f17cb2.8e032",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 152.14285278320312,

+        "y": 181.00000381469727,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "da983adc.a4dab8",

+                "1880a83d.625878"

+            ]

+        ]

+    },

+    {

+        "id": "308f02bb.a6ac6e",

+        "type": "for",

+        "name": "for i in vnf-parameters-data.param[]",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 931.3809967041016,

+        "y": 305.8571586608887,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "8b3b6388.bab3d"

+            ]

+        ]

+    },

+    {

+        "id": "8b3b6388.bab3d",

+        "type": "switchNode",

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

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1212.5238609313965,

+        "y": 306.4285817146301,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "401fd60f.a4aab8"

+            ]

+        ]

+    },

+    {

+        "id": "401fd60f.a4aab8",

+        "type": "not-found",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1417.523811340332,

+        "y": 305.8571619987488,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "38610be3.409204"

+            ]

+        ]

+    },

+    {

+        "id": "bff9b5e8.ac81a8",

+        "type": "for",

+        "name": "for j in resource-key[]",

+        "xml": "<for silentFailure='true' index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1028.8094635009766,

+        "y": 446.0000114440918,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "1f895dbf.62d692"

+            ]

+        ]

+    },

+    {

+        "id": "1f895dbf.62d692",

+        "type": "execute",

+        "name": "slistringUtils - check value for $",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`\" />\n    <parameter name=\"target\" value=\"$\"/>\n  \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1306.3809509277344,

+        "y": 445.00002002716064,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "3f1ef9ba.a53286"

+            ]

+        ]

+    },

+    {

+        "id": "3f1ef9ba.a53286",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1535.8094635009766,

+        "y": 444.0000114440918,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "2711da37.da2c26"

+            ]

+        ]

+    },

+    {

+        "id": "76ebcd43.544104",

+        "type": "execute",

+        "name": "split resource-resolution-data",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='resource-resolution-split' />\n   <parameter name='original_string' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`' />\n   <parameter name='regex' value='\\$\\{' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1372.5238647460938,

+        "y": 566.5714683532715,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "215c2247.4e93fe",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name=\"tmp.s1\" value='`$resource-resolution-split[0]`'/>\n   <parameter name=\"tmp.s2.s2\" value=''/>\n   <parameter name=\"tmp.resolved.var.value\" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`'/>\n   \n\n",

+        "comments": "",

+        "x": 1309.8095932006836,

+        "y": 638.2857360839844,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "b7c90b7.2536ef8",

+        "type": "execute",

+        "name": "split s2",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='s2' />\n   <parameter name='original_string' value='`$resource-resolution-split[1]`' />\n   <parameter name='regex' value='\\}' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1311.8095932006836,

+        "y": 709.2857360839844,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "879deeb3.5b9a3",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1691.8095932006836,

+        "y": 801.2857360839844,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "7f970ab0.e55384",

+                "48cc5a8d.76a2d4"

+            ]

+        ]

+    },

+    {

+        "id": "48cc5a8d.76a2d4",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name=\"tmp.s2.s2\" value='`$s2[1]`'/>\n   \n\n",

+        "comments": "",

+        "x": 1860.8095932006836,

+        "y": 835.2857360839844,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "d686a5b2.3e33b8",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name=\"tmp.s2.s1\" value='`$s2[0]`'/>\n   \n\n",

+        "comments": "",

+        "x": 1685.8095932006836,

+        "y": 731.2857360839844,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "222c512e.2cc11e",

+        "type": "execute",

+        "name": "concat",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>\n   <parameter name='source' value='`$tmp.s1`' />\n   <parameter name='target' value='`$tmp.resolved.var.value`' />\n   <parameter name='outputPath' value='tmp.result' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1303.6666564941406,

+        "y": 960.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c576f4f1.73b2a8",

+        "type": "switchNode",

+        "name": "switch s2 length",

+        "xml": "<switch test='`$s2_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1339.8095932006836,

+        "y": 773.2857360839844,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "2289e106.41aefe",

+                "b4881a2.fcff7e8"

+            ]

+        ]

+    },

+    {

+        "id": "2289e106.41aefe",

+        "type": "outcome",

+        "name": "1",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1525.8095932006836,

+        "y": 731.2857360839844,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "d686a5b2.3e33b8"

+            ]

+        ]

+    },

+    {

+        "id": "b4881a2.fcff7e8",

+        "type": "outcome",

+        "name": "2",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1528.8095932006836,

+        "y": 802.2857360839844,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "879deeb3.5b9a3"

+            ]

+        ]

+    },

+    {

+        "id": "7f970ab0.e55384",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name=\"tmp.s2.s1\" value='`$s2[0]`'/>\n   \n\n",

+        "comments": "",

+        "x": 1856.8095932006836,

+        "y": 766.2857360839844,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "a9f317a7.fd2d38",

+        "type": "execute",

+        "name": "concat",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>\n   <parameter name='source' value='`$tmp.result`' />\n   <parameter name='target' value='`$tmp.s2.s2`' />\n   <parameter name='outputPath' value='tmp.result' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1707.6666564941406,

+        "y": 1083.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f52f4d94.0c562",

+        "type": "switchNode",

+        "name": "switch tmp.s2.s2 null",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1350.6666564941406,

+        "y": 1052.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "e42a1a4a.7d1618",

+                "b1453a81.b9cec8"

+            ]

+        ]

+    },

+    {

+        "id": "e42a1a4a.7d1618",

+        "type": "outcome",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1552.6666564941406,

+        "y": 1019.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b1453a81.b9cec8",

+        "type": "other",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1555.6666564941406,

+        "y": 1082.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "a9f317a7.fd2d38"

+            ]

+        ]

+    },

+    {

+        "id": "48203350.d17c8c",

+        "type": "set",

+        "name": "set result of resolution",

+        "xml": "<set>\n   <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`' value='`$tmp.result`'/>\n   \n\n",

+        "comments": "",

+        "x": 1351.6666564941406,

+        "y": 1113.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "fabed139.91b78",

+        "type": "for",

+        "name": "for cn in vnf-parameters-data.param[]",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1397.6666564941406,

+        "y": 893.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "4ca4012e.a615d"

+            ]

+        ]

+    },

+    {

+        "id": "4ca4012e.a615d",

+        "type": "switchNode",

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

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$cn].name == $tmp.s2.s1`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1679.3809967041016,

+        "y": 893.2857570648193,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "fd9449cc.ebeff8"

+            ]

+        ]

+    },

+    {

+        "id": "fd9449cc.ebeff8",

+        "type": "not-found",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1874.3809967041016,

+        "y": 893.2857570648193,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "c3b0581a.7fc368"

+            ]

+        ]

+    },

+    {

+        "id": "c3b0581a.7fc368",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name='tmp.resolved.var.value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$cn].value`'/>\n   \n\n",

+        "comments": "",

+        "x": 2024.3809967041016,

+        "y": 893.2857570648193,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "2711da37.da2c26",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1078.6666564941406,

+        "y": 505.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "76ebcd43.544104",

+                "215c2247.4e93fe",

+                "b7c90b7.2536ef8",

+                "c576f4f1.73b2a8",

+                "fabed139.91b78",

+                "222c512e.2cc11e",

+                "f52f4d94.0c562",

+                "48203350.d17c8c",

+                "44a12bc5.2a4724"

+            ]

+        ]

+    },

+    {

+        "id": "da983adc.a4dab8",

+        "type": "switchNode",

+        "name": "switch capability-type",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 405.3809356689453,

+        "y": 248.1428680419922,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "3e7d85e.1498e7a",

+                "3bd615d5.c2e45a",

+                "de8eda93.8e0018"

+            ]

+        ]

+    },

+    {

+        "id": "3e7d85e.1498e7a",

+        "type": "not-found",

+        "name": "vnf",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 596.0951995849609,

+        "y": 247.57148361206055,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "dad124ab.d34ff8"

+            ]

+        ]

+    },

+    {

+        "id": "3bd615d5.c2e45a",

+        "type": "not-found",

+        "name": "vf-module",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 615.5237884521484,

+        "y": 1273.1429252624512,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "233e14a6.1568bc"

+            ]

+        ]

+    },

+    {

+        "id": "52358824.3b6ec8",

+        "type": "for",

+        "name": "for i in vf-parameters-data.param[]",

+        "xml": "<for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 970.9523620605469,

+        "y": 1327.7141799926758,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "23475e1e.924562"

+            ]

+        ]

+    },

+    {

+        "id": "23475e1e.924562",

+        "type": "switchNode",

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

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1252.9523620605469,

+        "y": 1327.7141799926758,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "62d41158.e379"

+            ]

+        ]

+    },

+    {

+        "id": "62d41158.e379",

+        "type": "not-found",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1459.9523620605469,

+        "y": 1327.7141799926758,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "fe64eb49.f3acc8"

+            ]

+        ]

+    },

+    {

+        "id": "3aa96efe.6c9112",

+        "type": "for",

+        "name": "for j in respurce-key[]",

+        "xml": "<for silentFailure='true' index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1098.809585571289,

+        "y": 1415.7143363952637,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "9b02a76.de22f58"

+            ]

+        ]

+    },

+    {

+        "id": "9b02a76.de22f58",

+        "type": "execute",

+        "name": "slistringUtils - check value for $",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`\" />\n    <parameter name=\"target\" value=\"$\"/>\n  \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1375.809585571289,

+        "y": 1414.7143363952637,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "36cd78d3.ee1f58"

+            ]

+        ]

+    },

+    {

+        "id": "36cd78d3.ee1f58",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1605.809585571289,

+        "y": 1414.7143363952637,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "650f24d8.fdc18c"

+            ]

+        ]

+    },

+    {

+        "id": "fb80bd4c.52e33",

+        "type": "execute",

+        "name": "split resource-resolution-data",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='resource-resolution-split' />\n   <parameter name='original_string' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`' />\n   <parameter name='regex' value='\\$\\{' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1412.0952758789062,

+        "y": 1553.5714702606201,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "aa1a7c09.5620e",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name=\"tmp.s1\" value='`$resource-resolution-split[0]`'/>\n   <parameter name=\"tmp.s2.s2\" value=''/>\n   <parameter name=\"tmp.resolved.var.value\" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`'/>\n   \n\n",

+        "comments": "",

+        "x": 1349.3809661865234,

+        "y": 1614.1428089141846,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "e1379e60.5888",

+        "type": "execute",

+        "name": "split s2",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='s2' />\n   <parameter name='original_string' value='`$resource-resolution-split[1]`' />\n   <parameter name='regex' value='\\}' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1351.3809661865234,

+        "y": 1685.1428089141846,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5292c959.51edc8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1731.3809661865234,

+        "y": 1777.1428089141846,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "1b5d17c5.b538b8",

+                "bcd431b6.01a15"

+            ]

+        ]

+    },

+    {

+        "id": "bcd431b6.01a15",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name=\"tmp.s2.s2\" value='`$s2[1]`'/>\n   \n\n",

+        "comments": "",

+        "x": 1900.3809661865234,

+        "y": 1811.1428089141846,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "6a891607.f38828",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name=\"tmp.s2.s1\" value='`$s2[0]`'/>\n   \n\n",

+        "comments": "",

+        "x": 1725.3809661865234,

+        "y": 1707.1428089141846,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "b39f4a16.e83c48",

+        "type": "execute",

+        "name": "concat",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>\n   <parameter name='source' value='`$tmp.s1`' />\n   <parameter name='target' value='`$tmp.resolved.var.value`' />\n   <parameter name='outputPath' value='tmp.result' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1354.6666564941406,

+        "y": 1933.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "737f578a.7489e8",

+        "type": "switchNode",

+        "name": "switch s2 length",

+        "xml": "<switch test='`$s2_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1379.3809661865234,

+        "y": 1749.1428089141846,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "1ab58139.e5f24f",

+                "5a7ee896.24ee58"

+            ]

+        ]

+    },

+    {

+        "id": "1ab58139.e5f24f",

+        "type": "outcome",

+        "name": "1",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1565.3809661865234,

+        "y": 1707.1428089141846,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "6a891607.f38828"

+            ]

+        ]

+    },

+    {

+        "id": "5a7ee896.24ee58",

+        "type": "outcome",

+        "name": "2",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1568.3809661865234,

+        "y": 1778.1428089141846,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "5292c959.51edc8"

+            ]

+        ]

+    },

+    {

+        "id": "1b5d17c5.b538b8",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name=\"tmp.s2.s1\" value='`$s2[0]`'/>\n   \n\n",

+        "comments": "",

+        "x": 1896.3809661865234,

+        "y": 1742.1428089141846,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "25e9d73.ea72528",

+        "type": "execute",

+        "name": "concat",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>\n   <parameter name='source' value='`$tmp.result`' />\n   <parameter name='target' value='`$tmp.s2.s2`' />\n   <parameter name='outputPath' value='tmp.result' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1757.2381439208984,

+        "y": 2054.5714778900146,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "796dc8b8.7909c8",

+        "type": "switchNode",

+        "name": "switch tmp.s2.s2 null",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1401.6666564941406,

+        "y": 2025.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "ca725550.cf8348",

+                "1074ef78.1b1671"

+            ]

+        ]

+    },

+    {

+        "id": "ca725550.cf8348",

+        "type": "outcome",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1602.2381439208984,

+        "y": 1991.5714778900146,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1074ef78.1b1671",

+        "type": "other",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1606.2381439208984,

+        "y": 2054.5714778900146,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "25e9d73.ea72528"

+            ]

+        ]

+    },

+    {

+        "id": "95c5599c.45bd78",

+        "type": "set",

+        "name": "set result of resolution",

+        "xml": "<set>\n   <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`' value='`$tmp.result`'/>\n   \n\n",

+        "comments": "",

+        "x": 1402.6666564941406,

+        "y": 2086.857157230377,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "306f0267.5482de",

+        "type": "for",

+        "name": "for cn in vf-parameters-data.param[]",

+        "xml": "<for silentFailure='true' index='cn' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1442.6666564941406,

+        "y": 1866.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "2aa6c8a8.7fc5d8"

+            ]

+        ]

+    },

+    {

+        "id": "2aa6c8a8.7fc5d8",

+        "type": "switchNode",

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

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].name == $tmp.s2.s1`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1731.6666564941406,

+        "y": 1865.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "c5eb5a8.478d7a8"

+            ]

+        ]

+    },

+    {

+        "id": "c5eb5a8.478d7a8",

+        "type": "not-found",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1937.6666564941406,

+        "y": 1865.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "34f5f75.a74d308"

+            ]

+        ]

+    },

+    {

+        "id": "34f5f75.a74d308",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name='tmp.resolved.var.value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].value`'/>\n   \n\n",

+        "comments": "",

+        "x": 2090.6666564941406,

+        "y": 1865.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "650f24d8.fdc18c",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1129.6666564941406,

+        "y": 1478.8571572303772,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "fb80bd4c.52e33",

+                "aa1a7c09.5620e",

+                "e1379e60.5888",

+                "737f578a.7489e8",

+                "306f0267.5482de",

+                "b39f4a16.e83c48",

+                "796dc8b8.7909c8",

+                "95c5599c.45bd78",

+                "d05339df.4c2038"

+            ]

+        ]

+    },

+    {

+        "id": "44a12bc5.2a4724",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"`'SS: param[].value with leading $: ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1302.3808670043945,

+        "y": 505.2857766151428,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d05339df.4c2038",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"`'SS: param[].value with leading $: ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1339.5238037109375,

+        "y": 1478.8571662902832,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dad124ab.d34ff8",

+        "type": "switchNode",

+        "name": "switch param_length null",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 785.0952301025391,

+        "y": 247.85715866088867,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "c76f0689.dd2ec8"

+            ]

+        ]

+    },

+    {

+        "id": "c76f0689.dd2ec8",

+        "type": "outcome",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1004.0952301025391,

+        "y": 246.85715866088867,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "308f02bb.a6ac6e"

+            ]

+        ]

+    },

+    {

+        "id": "233e14a6.1568bc",

+        "type": "switchNode",

+        "name": "switch param_length null",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 847.0952301025391,

+        "y": 1271.8571586608887,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "53ad520c.5dbc8c"

+            ]

+        ]

+    },

+    {

+        "id": "53ad520c.5dbc8c",

+        "type": "outcome",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1048.095230102539,

+        "y": 1270.8571586608887,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "52358824.3b6ec8"

+            ]

+        ]

+    },

+    {

+        "id": "38610be3.409204",

+        "type": "switchNode",

+        "name": "switch resource-key_length null",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key_length == ''`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 965.0952301025391,

+        "y": 374.8571586608887,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "961b4f5c.7ee6b"

+            ]

+        ]

+    },

+    {

+        "id": "961b4f5c.7ee6b",

+        "type": "outcome",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1184.095230102539,

+        "y": 373.8571586608887,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "bff9b5e8.ac81a8"

+            ]

+        ]

+    },

+    {

+        "id": "fe64eb49.f3acc8",

+        "type": "switchNode",

+        "name": "switch resource-key_length null",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key_length == ''`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1033.095230102539,

+        "y": 1373.8571586608887,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "f04736fc.959cd8"

+            ]

+        ]

+    },

+    {

+        "id": "f04736fc.959cd8",

+        "type": "outcome",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1252.095230102539,

+        "y": 1372.8571586608887,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "3aa96efe.6c9112"

+            ]

+        ]

+    },

+    {

+        "id": "1880a83d.625878",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"DONE: self-serve-capability-param-resolution\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 314.76189041137695,

+        "y": 1492.8570384979248,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "57975b44.aeea74",

+        "type": "for",

+        "name": "for i in pnf-parameters-data.param[]",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 938.7142944335938,

+        "y": 2378.571533203125,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "484630de.2f8b2"

+            ]

+        ]

+    },

+    {

+        "id": "484630de.2f8b2",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1219.8571586608887,

+        "y": 2379.1429562568665,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "cb0b2f54.9c535"

+            ]

+        ]

+    },

+    {

+        "id": "cb0b2f54.9c535",

+        "type": "not-found",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1424.8571090698242,

+        "y": 2378.571536540985,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "4013c370.7dd30c"

+            ]

+        ]

+    },

+    {

+        "id": "3e1aa09f.ad09a",

+        "type": "for",

+        "name": "for j in resource-key[]",

+        "xml": "<for silentFailure='true' index='j' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1036.1427612304688,

+        "y": 2518.714385986328,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "4ce3a043.0d1c8"

+            ]

+        ]

+    },

+    {

+        "id": "4ce3a043.0d1c8",

+        "type": "execute",

+        "name": "slistringUtils - check value for $",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`\" />\n    <parameter name=\"target\" value=\"$\"/>\n  \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1313.7142486572266,

+        "y": 2517.714394569397,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "c7ffbd4c.6d892"

+            ]

+        ]

+    },

+    {

+        "id": "c7ffbd4c.6d892",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1543.1427612304688,

+        "y": 2516.714385986328,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "ee693b4d.892a08"

+            ]

+        ]

+    },

+    {

+        "id": "f71ce8f1.bc0e68",

+        "type": "execute",

+        "name": "split resource-resolution-data",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='resource-resolution-split' />\n   <parameter name='original_string' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`' />\n   <parameter name='regex' value='\\$\\{' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1379.857162475586,

+        "y": 2639.285842895508,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "880d8f3f.18d9d",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name=\"tmp.s1\" value='`$resource-resolution-split[0]`'/>\n   <parameter name=\"tmp.s2.s2\" value=''/>\n   <parameter name=\"tmp.resolved.var.value\" value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`'/>\n   \n\n",

+        "comments": "",

+        "x": 1317.1428909301758,

+        "y": 2711.0001106262207,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "27d0611d.c3273e",

+        "type": "execute",

+        "name": "split s2",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='s2' />\n   <parameter name='original_string' value='`$resource-resolution-split[1]`' />\n   <parameter name='regex' value='\\}' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1319.1428909301758,

+        "y": 2782.0001106262207,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d159b662.1c3418",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1699.1428909301758,

+        "y": 2874.0001106262207,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "1cad1041.9bc56",

+                "117b4ef5.d4be51"

+            ]

+        ]

+    },

+    {

+        "id": "117b4ef5.d4be51",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name=\"tmp.s2.s2\" value='`$s2[1]`'/>\n   \n\n",

+        "comments": "",

+        "x": 1868.1428909301758,

+        "y": 2908.0001106262207,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "ab656b8.7358498",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name=\"tmp.s2.s1\" value='`$s2[0]`'/>\n   \n\n",

+        "comments": "",

+        "x": 1693.1428909301758,

+        "y": 2804.0001106262207,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "2dcb9176.9538be",

+        "type": "execute",

+        "name": "concat",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>\n   <parameter name='source' value='`$tmp.s1`' />\n   <parameter name='target' value='`$tmp.resolved.var.value`' />\n   <parameter name='outputPath' value='tmp.result' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1310.9999542236328,

+        "y": 3033.5715317726135,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ec69a32e.de88a",

+        "type": "switchNode",

+        "name": "switch s2 length",

+        "xml": "<switch test='`$s2_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1347.1428909301758,

+        "y": 2846.0001106262207,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "9faf5c42.32213",

+                "a0833425.948ca8"

+            ]

+        ]

+    },

+    {

+        "id": "9faf5c42.32213",

+        "type": "outcome",

+        "name": "1",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1533.1428909301758,

+        "y": 2804.0001106262207,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "ab656b8.7358498"

+            ]

+        ]

+    },

+    {

+        "id": "a0833425.948ca8",

+        "type": "outcome",

+        "name": "2",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1536.1428909301758,

+        "y": 2875.0001106262207,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "d159b662.1c3418"

+            ]

+        ]

+    },

+    {

+        "id": "1cad1041.9bc56",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name=\"tmp.s2.s1\" value='`$s2[0]`'/>\n   \n\n",

+        "comments": "",

+        "x": 1864.1428909301758,

+        "y": 2839.0001106262207,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "4877ec67.f93394",

+        "type": "execute",

+        "name": "concat",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>\n   <parameter name='source' value='`$tmp.result`' />\n   <parameter name='target' value='`$tmp.s2.s2`' />\n   <parameter name='outputPath' value='tmp.result' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1714.9999542236328,

+        "y": 3156.5715317726135,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a98626fd.34ab98",

+        "type": "switchNode",

+        "name": "switch tmp.s2.s2 null",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1357.9999542236328,

+        "y": 3125.5715317726135,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "d13c76a2.4d4038",

+                "d23a01b0.32246"

+            ]

+        ]

+    },

+    {

+        "id": "d13c76a2.4d4038",

+        "type": "outcome",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1559.9999542236328,

+        "y": 3092.5715317726135,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d23a01b0.32246",

+        "type": "other",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1562.9999542236328,

+        "y": 3155.5715317726135,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "4877ec67.f93394"

+            ]

+        ]

+    },

+    {

+        "id": "22ce76c6.095f5a",

+        "type": "set",

+        "name": "set result of resolution",

+        "xml": "<set>\n   <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`' value='`$tmp.result`'/>\n   \n\n",

+        "comments": "",

+        "x": 1358.9999542236328,

+        "y": 3186.5715317726135,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "d2b51d09.31bec",

+        "type": "for",

+        "name": "for cn in pnf-parameters-data.param[]",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1404.9999542236328,

+        "y": 2966.5715317726135,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "c5c22c14.716aa"

+            ]

+        ]

+    },

+    {

+        "id": "c5c22c14.716aa",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1686.7142944335938,

+        "y": 2966.0001316070557,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "c2232c60.14d6f"

+            ]

+        ]

+    },

+    {

+        "id": "c2232c60.14d6f",

+        "type": "not-found",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1881.7142944335938,

+        "y": 2966.0001316070557,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "5b165344.b8577c"

+            ]

+        ]

+    },

+    {

+        "id": "5b165344.b8577c",

+        "type": "set",

+        "name": "set",

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

+        "comments": "",

+        "x": 2031.7142944335938,

+        "y": 2966.0001316070557,

+        "z": "f2a4469f.b36fa8",

+        "wires": []

+    },

+    {

+        "id": "ee693b4d.892a08",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1085.9999542236328,

+        "y": 2578.5715317726135,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "f71ce8f1.bc0e68",

+                "880d8f3f.18d9d",

+                "27d0611d.c3273e",

+                "ec69a32e.de88a",

+                "d2b51d09.31bec",

+                "2dcb9176.9538be",

+                "a98626fd.34ab98",

+                "22ce76c6.095f5a",

+                "f0d643f8.6b8dd"

+            ]

+        ]

+    },

+    {

+        "id": "de8eda93.8e0018",

+        "type": "not-found",

+        "name": "pnf",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 574.7141265869141,

+        "y": 2320.7145318984985,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "185021f0.20918e"

+            ]

+        ]

+    },

+    {

+        "id": "f0d643f8.6b8dd",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"`'SS: param[].value with leading $: ' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1309.7141647338867,

+        "y": 2578.000151157379,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "185021f0.20918e",

+        "type": "switchNode",

+        "name": "switch param_length null",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 792.4285278320312,

+        "y": 2320.571533203125,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "df505d4.bc14da"

+            ]

+        ]

+    },

+    {

+        "id": "df505d4.bc14da",

+        "type": "outcome",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1011.4285278320312,

+        "y": 2319.571533203125,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "57975b44.aeea74"

+            ]

+        ]

+    },

+    {

+        "id": "4013c370.7dd30c",

+        "type": "switchNode",

+        "name": "switch resource-key_length null",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 972.4285278320312,

+        "y": 2447.571533203125,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "28f3362.c405dca"

+            ]

+        ]

+    },

+    {

+        "id": "28f3362.c405dca",

+        "type": "outcome",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1191.4285278320312,

+        "y": 2446.571533203125,

+        "z": "f2a4469f.b36fa8",

+        "wires": [

+            [

+                "3e1aa09f.ad09a"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-generate-name-changeassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-generate-name-changeassign.json
new file mode 100644
index 0000000..8464629
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-generate-name-changeassign.json
@@ -0,0 +1,352 @@
+[

+    {

+        "id": "214635e7.c9d7da",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 162.85714721679688,

+        "y": 60,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "7c170e6c.b1f92"

+            ]

+        ]

+    },

+    {

+        "id": "7c170e6c.b1f92",

+        "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": 438.8571472167969,

+        "y": 61,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "bc54c92c.6660c8"

+            ]

+        ]

+    },

+    {

+        "id": "bc54c92c.6660c8",

+        "type": "method",

+        "name": "self-serve-generate-name-changeassign",

+        "xml": "<method rpc='self-serve-generate-name-changeassign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 287.71429443359375,

+        "y": 118.57143115997314,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "2a24a725.3d8af8"

+            ]

+        ]

+    },

+    {

+        "id": "2a24a725.3d8af8",

+        "type": "block",

+        "name": "block atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 345.64286041259766,

+        "y": 292.9999942779541,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "cfd035fd.908608",

+                "16504b6.9600db5",

+                "6ee2e5ff.d456bc",

+                "9f6c60d6.c01e8",

+                "7e866415.d5162c"

+            ]

+        ]

+    },

+    {

+        "id": "6ee2e5ff.d456bc",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 621.1428527832031,

+        "y": 645.5397043228149,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "d6d95309.fd728",

+                "89c92bcf.b9bd18",

+                "18b4c130.7fafcf"

+            ]

+        ]

+    },

+    {

+        "id": "d6d95309.fd728",

+        "type": "outcome",

+        "name": "vnf",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 857.5715103149414,

+        "y": 558.000018119812,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "da068899.c4fcc8"

+            ]

+        ]

+    },

+    {

+        "id": "89c92bcf.b9bd18",

+        "type": "outcome",

+        "name": "vf-module",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 869.3015823364258,

+        "y": 616.2061395645142,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "79055137.e90c6"

+            ]

+        ]

+    },

+    {

+        "id": "cfd035fd.908608",

+        "type": "switchNode",

+        "name": "switch ss.input.param.index",

+        "xml": "<switch test='`$ss.input.param.index`'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 638.1428680419922,

+        "y": 390.28570652008057,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "b355a907.8b4998"

+            ]

+        ]

+    },

+    {

+        "id": "16504b6.9600db5",

+        "type": "switchNode",

+        "name": "switch ss.service-data.param.index",

+        "xml": "<switch test='`$ss.service-data.param.index`'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 665.8571624755859,

+        "y": 463.71426486968994,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "212a16ee.89cc4a"

+            ]

+        ]

+    },

+    {

+        "id": "b355a907.8b4998",

+        "type": "outcome",

+        "name": "null",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 871.1429214477539,

+        "y": 390.7142767906189,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "e955c510.269908"

+            ]

+        ]

+    },

+    {

+        "id": "212a16ee.89cc4a",

+        "type": "outcome",

+        "name": "null",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 908.4286270141602,

+        "y": 463.71426916122437,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "2955cf32.c355c"

+            ]

+        ]

+    },

+    {

+        "id": "e955c510.269908",

+        "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=\"ss.input.param.index is null\" />\n",

+        "comments": "",

+        "x": 1060.142921447754,

+        "y": 390.7142767906189,

+        "z": "5d6511ad.296e1",

+        "wires": []

+    },

+    {

+        "id": "2955cf32.c355c",

+        "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=\"ss.service-data.param.index is null\" />\n",

+        "comments": "",

+        "x": 1095.4286270141602,

+        "y": 463.71426916122437,

+        "z": "5d6511ad.296e1",

+        "wires": []

+    },

+    {

+        "id": "c215d7d9.0f6ee8",

+        "type": "outcome",

+        "name": "pnf",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 852.8571586608887,

+        "y": 674.2857217788696,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "5357c55f.7049cc"

+            ]

+        ]

+    },

+    {

+        "id": "18b4c130.7fafcf",

+        "type": "outcome",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 852.8254013061523,

+        "y": 729.2698307037354,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "1774b158.13d70f"

+            ]

+        ]

+    },

+    {

+        "id": "1774b158.13d70f",

+        "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=\"`'Unknown capability-type [' + $ss.capability-type + '], valid value are: vnf, pnf, vf-module'`\" />\n",

+        "comments": "",

+        "x": 1039.3967819213867,

+        "y": 729.2698259353638,

+        "z": "5d6511ad.296e1",

+        "wires": []

+    },

+    {

+        "id": "da068899.c4fcc8",

+        "type": "call",

+        "name": "call self-serve-vnf-generate-name-changeassign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-generate-name-changeassign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1154.2858581542969,

+        "y": 558.1428499221802,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "79055137.e90c6",

+        "type": "call",

+        "name": "call self-serve-vf-module-generate-name-changeassign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-generate-name-changeassign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1203.3930702209473,

+        "y": 615.9285726547241,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5357c55f.7049cc",

+        "type": "call",

+        "name": "call self-serve-pnf-generate-name-changeassign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-pnf-generate-name-changeassign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1155.0001258850098,

+        "y": 673.7143020629883,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7e866415.d5162c",

+        "type": "call",

+        "name": "call capability-param-resolution",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 651.4284973144531,

+        "y": 320.00001335144043,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "84c93cbb.6b991",

+        "type": "execute",

+        "name": "execute PropertiesNode",

+        "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": 1042.1070763724192,

+        "y": 250.28571564810636,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9f6c60d6.c01e8",

+        "type": "switchNode",

+        "name": "switch prop.controller.user",

+        "xml": "<switch test='`$prop.controller.user`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 630.8213119506836,

+        "y": 250.71433639526367,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "beb3f038.e55c8"

+            ]

+        ]

+    },

+    {

+        "id": "beb3f038.e55c8",

+        "type": "failure",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 830.6784073965891,

+        "y": 250.28575093405607,

+        "z": "5d6511ad.296e1",

+        "wires": [

+            [

+                "84c93cbb.6b991"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-generate-name.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-generate-name.json
new file mode 100644
index 0000000..6c59217
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-generate-name.json
@@ -0,0 +1,263 @@
+[

+    {

+        "id": "e733d3b3.88487",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 156.42857360839844,

+        "y": 56.28571701049805,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            [

+                "5099214f.ff319"

+            ]

+        ]

+    },

+    {

+        "id": "5099214f.ff319",

+        "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": 293.74993896484375,

+        "y": 101.71427631378174,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            [

+                "9032d171.479ce"

+            ]

+        ]

+    },

+    {

+        "id": "9032d171.479ce",

+        "type": "method",

+        "name": "self-serve-generate-name",

+        "xml": "<method rpc='self-serve-generate-name' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 284.2856903076172,

+        "y": 148.50000190734863,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            [

+                "f89a758d.f2d688"

+            ]

+        ]

+    },

+    {

+        "id": "f89a758d.f2d688",

+        "type": "block",

+        "name": "block atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 324.71427154541016,

+        "y": 204.3214168548584,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            [

+                "7a192e4.9f28dd",

+                "62de1a2e.d966a4",

+                "ac6c94b3.d6b0d8",

+                "c8dd1dbe.9238c"

+            ]

+        ]

+    },

+    {

+        "id": "7a192e4.9f28dd",

+        "type": "call",

+        "name": "call capability-param-resolution",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 612.1785354614258,

+        "y": 328.28571128845215,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "62de1a2e.d966a4",

+        "type": "switchNode",

+        "name": "switch capability-type",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 576.571418762207,

+        "y": 456.21424102783203,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            [

+                "77ff4341.7d270c",

+                "efdb53b3.8a016",

+                "c9749fd.9fd3e6"

+            ]

+        ]

+    },

+    {

+        "id": "77ff4341.7d270c",

+        "type": "not-found",

+        "name": "vnf",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 792.8570251464844,

+        "y": 386.9285945892334,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            [

+                "929d479d.ee2d38"

+            ]

+        ]

+    },

+    {

+        "id": "52d699f7.aeb4b8",

+        "type": "comment",

+        "name": "For Generate Name DG Capability ",

+        "info": "Support Bulk assign and single delete\nAlso calls Naming gen mS for assign/un-assign\n\nAdded by Ajay Singh(as396y)",

+        "comments": "",

+        "x": 842.2500152587891,

+        "y": 47.82143592834473,

+        "z": "3fe07db1.f5a992",

+        "wires": []

+    },

+    {

+        "id": "cb16a161.c8808",

+        "type": "execute",

+        "name": "execute PropertiesNode",

+        "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": 1002.8571145193919,

+        "y": 258.5714135851181,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ac6c94b3.d6b0d8",

+        "type": "switchNode",

+        "name": "switch prop.controller.user",

+        "xml": "<switch test='`$prop.controller.user`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 591.5713500976562,

+        "y": 259.0000343322754,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            [

+                "6148eeff.8135c"

+            ]

+        ]

+    },

+    {

+        "id": "6148eeff.8135c",

+        "type": "failure",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 791.4284455435618,

+        "y": 258.5714488710678,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            [

+                "cb16a161.c8808"

+            ]

+        ]

+    },

+    {

+        "id": "929d479d.ee2d38",

+        "type": "call",

+        "name": "call self-serve-vnf-generate-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-generate-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1026.4285125732422,

+        "y": 388.214319229126,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "efdb53b3.8a016",

+        "type": "not-found",

+        "name": "vf-module",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 805.0000076293945,

+        "y": 456.7857322692871,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            [

+                "fa5e8ac7.51e088"

+            ]

+        ]

+    },

+    {

+        "id": "fa5e8ac7.51e088",

+        "type": "call",

+        "name": "call self-serve-vf-module-generate-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-generate-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1069.8215026855469,

+        "y": 455.5714797973633,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c9749fd.9fd3e6",

+        "type": "not-found",

+        "name": "pnf",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 792.1428756713867,

+        "y": 524.5000152587891,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            [

+                "4a09f790.f1dc68"

+            ]

+        ]

+    },

+    {

+        "id": "4a09f790.f1dc68",

+        "type": "call",

+        "name": "call self-serve-pnf-generate-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-pnf-generate-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1025.7143630981445,

+        "y": 523.7857398986816,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c8dd1dbe.9238c",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='`$pathname`' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 537.5000152587891,

+        "y": 694.6428542137146,

+        "z": "3fe07db1.f5a992",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-mS-mac-address-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-mS-mac-address-assign.json
new file mode 100644
index 0000000..9cf0bf4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-mS-mac-address-assign.json
@@ -0,0 +1 @@
+[{"id":"7bf4d1a4.19d72","type":"dgstart","name":"DGSTART","outputs":1,"x":120,"y":36,"z":"49f11553.28c29c","wires":[["4d0677c6.367138"]]},{"id":"4d0677c6.367138","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":378.9403991699219,"y":36.32145690917969,"z":"49f11553.28c29c","wires":[["41de3cd3.931d34"]]},{"id":"ce021d20.bb75e","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":120,"y":91,"z":"49f11553.28c29c","wires":[["3a55a76e.5fcb98","ea86d577.27bfa8","c740ee24.70b1c","8de816b3.3b10d8","4cffbb79.37f154","937a5b68.3f7018","1517a6d1.e2b0c9"]]},{"id":"b97b03f1.6a8c","type":"comment","name":"Validate inputs","info":"ss.capability-action should be \"ASSIGN\" or \"\"UNASSIGN\"","comments":"","x":249,"y":130,"z":"49f11553.28c29c","wires":[]},{"id":"1517a6d1.e2b0c9","type":"switchNode","name":"switch ss.capability-action (assign| unassign)","xml":"<switch test='`$ss.capability-action`'>\n","comments":"","outputs":1,"x":321,"y":3096,"z":"49f11553.28c29c","wires":[["97880e7a.706b9","6e59c5de.77ff3c"]]},{"id":"97880e7a.706b9","type":"outcome","name":"assign","xml":"<outcome value='assign'>","comments":"","outputs":1,"x":284.25006103515625,"y":3164.75,"z":"49f11553.28c29c","wires":[["6466676a.e4e518"]]},{"id":"6e59c5de.77ff3c","type":"outcome","name":"unassign","xml":"<outcome value='unassign'>","comments":"","outputs":1,"x":324,"y":3778,"z":"49f11553.28c29c","wires":[["9890fe8e.13a7a"]]},{"id":"c66abc48.0cf27","type":"comment","name":"Call self-serve-capability-param-resolution DG to resolve all resource-keys","info":"","comments":"","x":432,"y":493,"z":"49f11553.28c29c","wires":[]},{"id":"3a55a76e.5fcb98","type":"switchNode","name":"switch ss.capability-name","xml":"<switch test=\"`$ss.capability-name`\">\n","comments":"","outputs":1,"x":286,"y":173,"z":"49f11553.28c29c","wires":[["88e6e51d.69fea8","3285fa47.677276","51c348b8.5400f8","98462d6a.386e1"]]},{"id":"88e6e51d.69fea8","type":"not-found","name":"not-found","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":560,"y":146,"z":"49f11553.28c29c","wires":[["f8ba93eb.3b672"]]},{"id":"3285fa47.677276","type":"outcome","name":"null","xml":"<outcome value='null'>\n","comments":"","outputs":1,"x":550,"y":186,"z":"49f11553.28c29c","wires":[["f8ba93eb.3b672"]]},{"id":"51c348b8.5400f8","type":"other","name":"mS-mac-address-assign ","xml":"<outcome value='mS-mac-address-assign'>\n","comments":"","outputs":1,"x":603,"y":227,"z":"49f11553.28c29c","wires":[["cbe46562.045fc8"]]},{"id":"6164f080.f1d8d","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='401' />\n<parameter name='error-message' value='ss.capability-name is not set' />\n","comments":"","x":862,"y":182,"z":"49f11553.28c29c","wires":[]},{"id":"98462d6a.386e1","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":553,"y":106,"z":"49f11553.28c29c","wires":[["f8ba93eb.3b672"]]},{"id":"cbe46562.045fc8","type":"record","name":"record","xml":"<record plugin=\"com.att.sdnctl.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: ss.capability-name is mS-mac-address-assign\"/>","comments":"","outputs":1,"x":845,"y":227,"z":"49f11553.28c29c","wires":[[]]},{"id":"ea86d577.27bfa8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":244,"y":539,"z":"49f11553.28c29c","wires":[["a108bc30.a26be","a1865f04.1684b","e6533a36.caa458"]]},{"id":"a1865f04.1684b","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: call self-serve-capability-param-resolution DG\"/>","comments":"","outputs":1,"x":271,"y":597,"z":"49f11553.28c29c","wires":[[]]},{"id":"a108bc30.a26be","type":"set","name":"set variables for calling capability-param-resolution","xml":"<set>\n<!--<parameter name='name' value='value' />-->","comments":"","x":407.6904296875,"y":642.3095703125,"z":"49f11553.28c29c","wires":[]},{"id":"e6533a36.caa458","type":"call","name":"call GR-API:self-serve-capability-param-resolution","xml":"<call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' >\n","comments":"","outputs":1,"x":404.023681640625,"y":688.976318359375,"z":"49f11553.28c29c","wires":[["b5b8fd64.0f6ed","1d8c4d61.457f73"]]},{"id":"b5b8fd64.0f6ed","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":718.7379760742188,"y":665.83349609375,"z":"49f11553.28c29c","wires":[["3284ee31.dbd392"]]},{"id":"1d8c4d61.457f73","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":722.0713259379067,"y":717.5001392364502,"z":"49f11553.28c29c","wires":[[]]},{"id":"adf382f0.6b643","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='402' />\n<parameter name='error-message' value='Failure calling self-serve-capability-param-resolution' />\n","comments":"","x":1005,"y":688,"z":"49f11553.28c29c","wires":[]},{"id":"81f4dee7.0c2ed","type":"comment","name":"Loop thru vf-module-params for ALL matches with ss.capability-name","info":"","comments":"","x":411,"y":758,"z":"49f11553.28c29c","wires":[]},{"id":"557b99b5.739db8","type":"for","name":"for each vf-module-parameters","xml":"<for index='vf-module-param-index' start='0' end='`$tmp.vf-module-parameters-length`' >\n","comments":"","outputs":1,"x":373,"y":942,"z":"49f11553.28c29c","wires":[["d0ca161f.60d4d8","18493294.3b694d"]]},{"id":"18493294.3b694d","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: vf-module-param-index\"/>\n<parameter name=\"field3\" value='`$vf-module-param-index`'/>","comments":"","outputs":1,"x":586,"y":942,"z":"49f11553.28c29c","wires":[[]]},{"id":"d0ca161f.60d4d8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":355,"y":991,"z":"49f11553.28c29c","wires":[["15a20296.9654bd","ff0ba945.2b7078"]]},{"id":"c740ee24.70b1c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":244,"y":804,"z":"49f11553.28c29c","wires":[["35627889.198308","557b99b5.739db8","f76a923e.1777d"]]},{"id":"35627889.198308","type":"set","name":"set vf-module-parameters-length","xml":"<set>\n<parameter name='tmp.vf-module-parameters-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' />\n","comments":"","x":380,"y":898,"z":"49f11553.28c29c","wires":[]},{"id":"15a20296.9654bd","type":"set","name":"set vfModuleParamsCapabilityName and intiailize tmp.* mS input params","xml":"<set>\n<parameter name='vfModuleParamsCapabilityName' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.capability-name`'  />\n<parameter name='tmp.vnfHostName' value=''  />\n<parameter name='tmp.policyInstanceName' value=''  />\n<parameter name='tmp.cloudParamName' value=''  />\n<parameter name='tmp.swName' value=''  />\n<parameter name='tmp.resourceValue' value=''  />","comments":"","x":579,"y":1080,"z":"49f11553.28c29c","wires":[]},{"id":"ff0ba945.2b7078","type":"switchNode","name":"switch compare vfModuleParamsCapabilityName and ss.capability-name","xml":"<switch test=\"`$ss.capability-name == $vfModuleParamsCapabilityName`\">","comments":"","outputs":1,"x":578,"y":1125,"z":"49f11553.28c29c","wires":[["64a2b02f.091b6","5b2a978e.33ad68"]]},{"id":"8de816b3.3b10d8","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/self-serve-mS-mac-address-assign.log' />\n","comments":"","outputs":1,"x":214,"y":4795,"z":"49f11553.28c29c","wires":[[]]},{"id":"4cffbb79.37f154","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n<parameter name=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-parameters-index].resource-resolution-data.status`\" value='SUCCESS'  />","comments":"","x":221,"y":4850,"z":"49f11553.28c29c","wires":[]},{"id":"64a2b02f.091b6","type":"outcome","name":"outcome:ss.capability-name match","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":477,"y":1173,"z":"49f11553.28c29c","wires":[["a5d9689a.f6d4b8"]]},{"id":"5b2a978e.33ad68","type":"other","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":387,"y":1214,"z":"49f11553.28c29c","wires":[[]]},{"id":"b765058d.012728","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: Found ss.capability-name MATCH\"/>","comments":"","outputs":1,"x":823,"y":1173,"z":"49f11553.28c29c","wires":[[]]},{"id":"a5d9689a.f6d4b8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":691,"y":1173,"z":"49f11553.28c29c","wires":[["b765058d.012728","f8298f45.6dd8f","e795d2b2.de9ea"]]},{"id":"b833668a.32a2e8","type":"set","name":"set resource-resolution-data","xml":"<set>\n<parameter name='tmp.resource-resolution-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.`'  />\n","comments":"","x":814,"y":1483,"z":"49f11553.28c29c","wires":[]},{"id":"f8298f45.6dd8f","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":729,"y":1708,"z":"49f11553.28c29c","wires":[["d8a79021.ada8a","efb6904c.0b132","32ffaea4.ebf822","3f4780f3.5b1af","fc695bea.55efa8","7ee831e2.82547","98494924.3c42c8","b1f621f4.2d574","dcd2ceec.8e369","7c75bd8a.d2b754"]]},{"id":"f192106f.aba0a","type":"comment","name":"Resolve hostname, policy-instance-name, cloud-param-name and sw-name from resource-resolution-data","info":"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters[$vf-module-params-index].param.resource-resolution-data.resource-key[$key-index].value \nwhere its corresponding resource-key[$key-index].name=vnf-name","comments":"","x":997,"y":1662,"z":"49f11553.28c29c","wires":[]},{"id":"d8a79021.ada8a","type":"set","name":"set resource-key-length","xml":"<set>\n<parameter name='tmp.resource-key-length' value='`$tmp.resource-resolution-data.resource-key_length`' />\n","comments":"","x":803,"y":1768,"z":"49f11553.28c29c","wires":[]},{"id":"efb6904c.0b132","type":"for","name":"for each resource-resolution-data.resource-key","xml":"<for index='key-index' start='0' end='`$tmp.resource-resolution-data.resource-key_length`' >\n","comments":"","outputs":1,"x":878,"y":1813,"z":"49f11553.28c29c","wires":[["45cc14c2.4d9acc","529acf7f.f236"]]},{"id":"529acf7f.f236","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: key-index\"/>\n<parameter name=\"field3\" value='`$key-index`'/>","comments":"","outputs":1,"x":1145,"y":1813,"z":"49f11553.28c29c","wires":[[]]},{"id":"45cc14c2.4d9acc","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":808,"y":1862,"z":"49f11553.28c29c","wires":[["a9f4ffa9.145ae"]]},{"id":"a9f4ffa9.145ae","type":"switchNode","name":"switch compare resource-key.name","xml":"<switch test=\"`$tmp.resource-resolution-data.resource-key[$key-index].name`\">","comments":"","outputs":1,"x":904,"y":1909,"z":"49f11553.28c29c","wires":[["e48f84f.8010178","3365afc0.b8aeb","77756d7a.b7d954"]]},{"id":"e48f84f.8010178","type":"outcome","name":"key resource key","xml":"<outcome value='key'>\n","comments":"","outputs":1,"x":910,"y":1995,"z":"49f11553.28c29c","wires":[["74c1a54.475825c"]]},{"id":"74c1a54.475825c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1180,"y":1995,"z":"49f11553.28c29c","wires":[["16486832.4d3a98","5950731f.f665bc","956ecb72.c0aa28"]]},{"id":"16486832.4d3a98","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: Found resource-resolution-data.name = vnf-name\"/>","comments":"","outputs":1,"x":1312,"y":1994,"z":"49f11553.28c29c","wires":[[]]},{"id":"5950731f.f665bc","type":"set","name":"set vnfHostName","xml":"<set>\n<parameter name='tmp.vnfHostName' value='`$tmp.resource-resolution-data.resource-key[$key-index].value`'  />\n","comments":"","x":1215,"y":2043,"z":"49f11553.28c29c","wires":[]},{"id":"32ffaea4.ebf822","type":"switchNode","name":"switch validate resolved vnfHostNamne","xml":"<switch test=\"`$tmp.vnfHostName`\">\n","comments":"","outputs":1,"x":863,"y":2290,"z":"49f11553.28c29c","wires":[["1e03d899.4d5c37","b455d9e7.cd4de8"]]},{"id":"1e03d899.4d5c37","type":"outcome","name":"null","xml":"<outcome value='null'>\n","comments":"","outputs":1,"x":1153,"y":2264,"z":"49f11553.28c29c","wires":[["13ad3ae1.dd3895"]]},{"id":"b455d9e7.cd4de8","type":"other","name":"blank","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1152,"y":2310,"z":"49f11553.28c29c","wires":[["13ad3ae1.dd3895"]]},{"id":"31e2f8be.f33c18","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='403' />\n<parameter name='error-message' value='vnfHostName is not set' />\n","comments":"","x":1446,"y":2330,"z":"49f11553.28c29c","wires":[]},{"id":"df14baa.538b448","type":"set","name":"set resource-resolution-data.status to SUCCESS","xml":"<set>\n<parameter name=\"`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status`\" value='SUCCESS'  />\n","comments":"","x":738,"y":3618,"z":"49f11553.28c29c","wires":[]},{"id":"83429548.44e578","type":"for","name":"for each vf-module-parameters","xml":"<for index='vf-module-param-index' start='0' end='`$tmp.vf-module-parameters-length`' >\n","comments":"","outputs":1,"x":620,"y":3473,"z":"49f11553.28c29c","wires":[["5dc9240c.a731ac","e32c2884.0da7f8"]]},{"id":"e32c2884.0da7f8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: vf-module-param-index\"/>\n<parameter name=\"field3\" value='`$vf-module-param-index`'/>","comments":"","outputs":1,"x":832,"y":3473,"z":"49f11553.28c29c","wires":[[]]},{"id":"5dc9240c.a731ac","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":604,"y":3522,"z":"49f11553.28c29c","wires":[["e0e1ff6c.f9e59","df14baa.538b448"]]},{"id":"d7a94ac5.4ee0d8","type":"set","name":"set mac-address-assign test data","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length' value='4' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].name' value='vmxvpfe_sriov41_0_port_mac' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].value' value='${vmxvpfe_sriov41_0_port_mac}' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.status' value='PENDING' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.capability-name' value='mS-mac-address-assign' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key_length' value='3' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[0].name' value='key' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[0].value' value='host-laina1' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[1].name' value='policy-instance-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[1].value' value='JQIN1810SRIOV.Config_MS_macAddressAssignmentPolicy.*' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[2].name' value='sw-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[2].value' value='JUNOS' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].name' value='vmxvpfe_sriov42_0_port_mac' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].value' value='somevalue-already-assigned' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.status' value='PENDING' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.capability-name' value='mS-mac-address-assign' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key_length' value='3' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[0].name' value='key' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[0].value' value='host-laina1' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[1].name' value='policy-instance-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[1].value' value='JQIN1810SRIOV.Config_MS_macAddressAssignmentPolicy.*' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[2].name' value='sw-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[2].value' value='JUNOS' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].name' value='vmxvpfe_sriov43_0_port_mac' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].value' value='${vmxvpfe_sriov43_0_port_mac}' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.status' value='PENDING' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.capability-name' value='mS-mac-address-assign' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.resource-key_length' value='3' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.resource-key[0].name' value='key' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.resource-key[0].value' value='host-laina1' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.resource-key[1].name' value='policy-instance-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.resource-key[1].value' value='JQIN1810SRIOV.Config_MS_macAddressAssignmentPolicy.*' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.resource-key[2].name' value='sw-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.resource-key[2].value' value='JUNOS' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].name' value='vmxvpfe_sriov44_0_port_mac' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].value' value='${vmxvpfe_sriov44_0_port_mac}' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.status' value='PENDING' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.capability-name' value='mS-mac-address-assign' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.resource-key_length' value='3' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.resource-key[0].name' value='key' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.resource-key[0].value' value='host-laina1' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.resource-key[1].name' value='policy-instance-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.resource-key[1].value' value='JQIN1810SRIOV.Config_MS_macAddressAssignmentPolicy.*' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.resource-key[2].name' value='sw-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.resource-key[2].value' value='JUNOS' />","comments":"","x":1113,"y":533,"z":"49f11553.28c29c","wires":[]},{"id":"83d65996.c3dca8","type":"comment","name":"Set temporary test data * TEST-ONLY *","info":"","comments":"","x":552,"y":528,"z":"49f11553.28c29c","wires":[]},{"id":"956ecb72.c0aa28","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: resolved vnfHostName: \"/>\n<parameter name=\"field3\" value='`$tmp.vnfHostName`'/>","comments":"","outputs":1,"x":1184,"y":2089,"z":"49f11553.28c29c","wires":[[]]},{"id":"937a5b68.3f7018","type":"switchNode","name":"switch ss.capability-action","xml":"<switch test=\"`$ss.capability-action`\">\n","comments":"","outputs":1,"x":283,"y":292,"z":"49f11553.28c29c","wires":[["4762a00.1cbdf6","d346113b.662b8","ae2cd0b9.c0e3f","2a86c91f.d1ce56","48302673.00a098"]]},{"id":"4762a00.1cbdf6","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":549,"y":275,"z":"49f11553.28c29c","wires":[[]]},{"id":"d346113b.662b8","type":"not-found","name":"not-found","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":556,"y":315,"z":"49f11553.28c29c","wires":[["c6c42ae2.eff988"]]},{"id":"ae2cd0b9.c0e3f","type":"outcome","name":"null","xml":"<outcome value='null'>\n","comments":"","outputs":1,"x":546,"y":355,"z":"49f11553.28c29c","wires":[[]]},{"id":"2a86c91f.d1ce56","type":"other","name":"assign","xml":"<outcome value='assign'>\n","comments":"","outputs":1,"x":547,"y":396,"z":"49f11553.28c29c","wires":[["a6ed29e1.6f6f38"]]},{"id":"2a58f163.5019be","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='401' />\n<parameter name='error-message' value='ss.capability-action is not set' />\n","comments":"","x":865,"y":351,"z":"49f11553.28c29c","wires":[]},{"id":"48302673.00a098","type":"other","name":"unassign","xml":"<outcome value='unassign'>\n","comments":"","outputs":1,"x":556,"y":439,"z":"49f11553.28c29c","wires":[["bd0f2ac4.457a68"]]},{"id":"a6ed29e1.6f6f38","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: ss.capability-action is assign\"/>","comments":"","outputs":1,"x":706,"y":396,"z":"49f11553.28c29c","wires":[[]]},{"id":"bd0f2ac4.457a68","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: ss.capability-action is unassign\"/>","comments":"","outputs":1,"x":707,"y":439,"z":"49f11553.28c29c","wires":[[]]},{"id":"e0e1ff6c.f9e59","type":"switchNode","name":"switch vf-module-parameters.param.name == mac-address-list[].name","xml":"<switch test=\"`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].name == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].name`\">\n","comments":"","outputs":1,"x":802,"y":3571,"z":"49f11553.28c29c","wires":[["1fd668f7.cdc337"]]},{"id":"d7bf35d6.132f58","type":"set","name":"set vf-module-parameters.param.value to assigned mac address","xml":"<set>\n<parameter name=\"`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].value`\" value=\"`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].value`\"  />\n","comments":"","x":2013,"y":3735,"z":"49f11553.28c29c","wires":[]},{"id":"9890fe8e.13a7a","type":"block","name":"block:atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":360,"y":3827,"z":"49f11553.28c29c","wires":[["d6b2bdc8.28f4b","e3815c89.19818","c0e224f4.f2ee48"]]},{"id":"dabad6df.ca2188","type":"comment","name":"Call Unassign MAC address microService","info":"","comments":"","x":605.5,"y":3782,"z":"49f11553.28c29c","wires":[]},{"id":"3635e0e6.833f8","type":"set","name":"set vf-module-parameters.param.value to assigned mac address","xml":"<set>\n<parameter name=\"`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status`\" value=\"DELETED\"  />\n","comments":"","x":1777,"y":4081,"z":"49f11553.28c29c","wires":[]},{"id":"395c40c2.33595","type":"comment","name":"Check that resource-resolution-data.status is PENDING","info":"","comments":"","x":902,"y":1536,"z":"49f11553.28c29c","wires":[]},{"id":"f8ba93eb.3b672","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":705,"y":145,"z":"49f11553.28c29c","wires":[["5bbceeb9.b1833","6164f080.f1d8d"]]},{"id":"5bbceeb9.b1833","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: ss.capability-name is not mS-mac-address-assign or it is not set\"/>","comments":"","outputs":1,"x":845,"y":104,"z":"49f11553.28c29c","wires":[[]]},{"id":"cd1dd0a6.2ac37","type":"set","name":"set status to FAILED","xml":"<set>\n<parameter name='resource-resolution-data.status' value='FAILED'  />","comments":"","x":886,"y":142,"z":"49f11553.28c29c","wires":[]},{"id":"9880892.85f7378","type":"comment","name":"resrouce-resolution-data is not yet set","info":"","comments":"","x":1144,"y":140,"z":"49f11553.28c29c","wires":[]},{"id":"c6c42ae2.eff988","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":705,"y":315,"z":"49f11553.28c29c","wires":[["ad4fd223.b06a1","2a58f163.5019be"]]},{"id":"ad4fd223.b06a1","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: ss.capability-action is not set\"/>","comments":"","outputs":1,"x":849,"y":273,"z":"49f11553.28c29c","wires":[[]]},{"id":"ca0033cc.33011","type":"set","name":"set status to FAILED","xml":"<set>\n<parameter name='resource-resolution-data.status' value='FAILURE'  />","comments":"","x":891,"y":311,"z":"49f11553.28c29c","wires":[]},{"id":"3284ee31.dbd392","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":845,"y":666,"z":"49f11553.28c29c","wires":[["adbb65ad.0b7198","adf382f0.6b643"]]},{"id":"adbb65ad.0b7198","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: Failure calling self-serve-capability-param-resolution\"/>","comments":"","outputs":1,"x":988,"y":645,"z":"49f11553.28c29c","wires":[[]]},{"id":"d9e6bdbc.90de5","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: vnfHostName is not set\"/>","comments":"","outputs":1,"x":1410,"y":2242,"z":"49f11553.28c29c","wires":[[]]},{"id":"5e8ee822.4540e8","type":"set","name":"set status to FAILED","xml":"<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />","comments":"","x":1469,"y":2287,"z":"49f11553.28c29c","wires":[]},{"id":"13ad3ae1.dd3895","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1288,"y":2287,"z":"49f11553.28c29c","wires":[["d9e6bdbc.90de5","5e8ee822.4540e8","31e2f8be.f33c18"]]},{"id":"d04355c3.417358","type":"switchNode","name":"switch tmp.resource-resolution-data = PENDING","xml":"<switch test=\"`$tmp.resource-resolution-data.status == 'PENDING'`\">","comments":"","outputs":1,"x":884,"y":1587,"z":"49f11553.28c29c","wires":[["be95e99c.b7bd58"]]},{"id":"d82a8b0.25d6a78","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1352,"y":1587,"z":"49f11553.28c29c","wires":[["67a991be.14e2b","e51475f0.abd628","5a02f00e.359d7"]]},{"id":"67a991be.14e2b","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: reseouce-resolution-data.status is not PENDING\"/>","comments":"","outputs":1,"x":1492,"y":1547,"z":"49f11553.28c29c","wires":[[]]},{"id":"5a02f00e.359d7","type":"set","name":"set status to FAILED","xml":"<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />","comments":"","x":1533,"y":1586,"z":"49f11553.28c29c","wires":[]},{"id":"e51475f0.abd628","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='401' />\n<parameter name='error-message' value='reseouce-resolution-data.status is not PENDING' />\n","comments":"","x":1504,"y":1627,"z":"49f11553.28c29c","wires":[]},{"id":"be95e99c.b7bd58","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1188,"y":1587,"z":"49f11553.28c29c","wires":[["d82a8b0.25d6a78"]]},{"id":"b747603e.9f9c","type":"comment","name":"Call Assign MAC address microService","info":"","comments":"","x":562,"y":3166,"z":"49f11553.28c29c","wires":[]},{"id":"fc695bea.55efa8","type":"switchNode","name":"switch validate resolved policyInstanceName","xml":"<switch test=\"`$tmp.policyInstanceName`\">\n","comments":"","outputs":1,"x":884,"y":2561,"z":"49f11553.28c29c","wires":[["1d99c3b4.89ca5c","28aa41f0.c83cce"]]},{"id":"1d99c3b4.89ca5c","type":"outcome","name":"null","xml":"<outcome value='null'>\n","comments":"","outputs":1,"x":1149,"y":2541,"z":"49f11553.28c29c","wires":[["1612f486.989c8b"]]},{"id":"28aa41f0.c83cce","type":"other","name":"blank","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1151,"y":2581,"z":"49f11553.28c29c","wires":[["1612f486.989c8b"]]},{"id":"af7d3f12.8fe2f","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='403' />\n<parameter name='error-message' value='policyInstanceName is not set and action is assign' />\n","comments":"","x":1883,"y":2603,"z":"49f11553.28c29c","wires":[]},{"id":"9c72660f.c666b8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: policyInstanceName is not set and action is assign\"/>","comments":"","outputs":1,"x":1864,"y":2521,"z":"49f11553.28c29c","wires":[[]]},{"id":"479b53da.22197c","type":"set","name":"set status to FAILED","xml":"<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />","comments":"","x":1906,"y":2560,"z":"49f11553.28c29c","wires":[]},{"id":"9cfb0a8c.350bb8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1728,"y":2560,"z":"49f11553.28c29c","wires":[["9c72660f.c666b8","479b53da.22197c","af7d3f12.8fe2f"]]},{"id":"3365afc0.b8aeb","type":"outcome","name":"policy-instance-name resource key","xml":"<outcome value='policy-instance-name'>\n","comments":"","outputs":1,"x":1553,"y":1997,"z":"49f11553.28c29c","wires":[["529fe780.466c98"]]},{"id":"529fe780.466c98","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1776,"y":1997,"z":"49f11553.28c29c","wires":[["88aa0755.dfbfb8","5f9db5b0.14c1dc","913d0484.6580f8"]]},{"id":"88aa0755.dfbfb8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: Found resource-resolution-data.name = policy-instance-name-name\"/>","comments":"","outputs":1,"x":1908,"y":1997,"z":"49f11553.28c29c","wires":[[]]},{"id":"5f9db5b0.14c1dc","type":"set","name":"set policyInstanceName","xml":"<set>\n<parameter name='tmp.policyInstanceName' value='`$tmp.resource-resolution-data.resource-key[$key-index].value`'  />\n","comments":"","x":1828,"y":2045,"z":"49f11553.28c29c","wires":[]},{"id":"913d0484.6580f8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: resolved policyInstanceName: \"/>\n<parameter name=\"field3\" value='`$tmp.policyInstanceName`'/>","comments":"","outputs":1,"x":1780,"y":2091,"z":"49f11553.28c29c","wires":[[]]},{"id":"77756d7a.b7d954","type":"outcome","name":"sw-name resource key","xml":"<outcome value='sw-name'>\n","comments":"","outputs":1,"x":1527,"y":2143,"z":"49f11553.28c29c","wires":[["dee6e77e.a38548"]]},{"id":"dee6e77e.a38548","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1778,"y":2143,"z":"49f11553.28c29c","wires":[["4c52afb7.937f1","b41afc4d.35241","62817552.215acc"]]},{"id":"4c52afb7.937f1","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: Found resource-resolution-data.name = sw-name\"/>","comments":"","outputs":1,"x":1910,"y":2143,"z":"49f11553.28c29c","wires":[[]]},{"id":"b41afc4d.35241","type":"set","name":"set swName","xml":"<set>\n<parameter name='tmp.swName' value='`$tmp.resource-resolution-data.resource-key[$key-index].value`'  />\n","comments":"","x":1799,"y":2191,"z":"49f11553.28c29c","wires":[]},{"id":"62817552.215acc","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: resolved swName: \"/>\n<parameter name=\"field3\" value='`$tmp.swName`'/>","comments":"","outputs":1,"x":1784,"y":2235,"z":"49f11553.28c29c","wires":[[]]},{"id":"7ee831e2.82547","type":"switchNode","name":"switch validate resolved cloudParamName","xml":"<switch test=\"`$tmp.cloudParamName`\">\n","comments":"","outputs":1,"x":880,"y":2424,"z":"49f11553.28c29c","wires":[["c91692b6.65ce8","32988ed5.054c82"]]},{"id":"c91692b6.65ce8","type":"outcome","name":"null","xml":"<outcome value='null'>\n","comments":"","outputs":1,"x":1156,"y":2404,"z":"49f11553.28c29c","wires":[["1039fc6f.eb7844"]]},{"id":"32988ed5.054c82","type":"other","name":"blank","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1158,"y":2444,"z":"49f11553.28c29c","wires":[["1039fc6f.eb7844"]]},{"id":"ed9695ad.3bae68","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='403' />\n<parameter name='error-message' value='cloudParamName is not set' />\n","comments":"","x":1443,"y":2464,"z":"49f11553.28c29c","wires":[]},{"id":"67575869.37b978","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: cloudParamName is not set\"/>","comments":"","outputs":1,"x":1424,"y":2382,"z":"49f11553.28c29c","wires":[[]]},{"id":"5523be2f.8450e","type":"set","name":"set status to FAILED","xml":"<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />","comments":"","x":1466,"y":2421,"z":"49f11553.28c29c","wires":[]},{"id":"1039fc6f.eb7844","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1288,"y":2421,"z":"49f11553.28c29c","wires":[["67575869.37b978","5523be2f.8450e","ed9695ad.3bae68"]]},{"id":"3f4780f3.5b1af","type":"switchNode","name":"switch validate resolved swName","xml":"<switch test=\"`$tmp.swName`\">\n","comments":"","outputs":1,"x":854,"y":2689,"z":"49f11553.28c29c","wires":[["28d80c07.9c9e04","e6ec0202.21c26"]]},{"id":"28d80c07.9c9e04","type":"outcome","name":"null","xml":"<outcome value='null'>\n","comments":"","outputs":1,"x":1151,"y":2669,"z":"49f11553.28c29c","wires":[["52391bf3.425114"]]},{"id":"e6ec0202.21c26","type":"other","name":"blank","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1153,"y":2709,"z":"49f11553.28c29c","wires":[["52391bf3.425114"]]},{"id":"36d970ba.f973a","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='403' />\n<parameter name='error-message' value='swName is not set and action is assign' />\n","comments":"","x":1887,"y":2734,"z":"49f11553.28c29c","wires":[]},{"id":"ec8f9748.d8d1b8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: swName is not set and action is assign\"/>","comments":"","outputs":1,"x":1868,"y":2652,"z":"49f11553.28c29c","wires":[[]]},{"id":"9b41bab.5d2c148","type":"set","name":"set status to FAILED","xml":"<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />","comments":"","x":1910,"y":2691,"z":"49f11553.28c29c","wires":[]},{"id":"a293551e.0dbae8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1735,"y":2689,"z":"49f11553.28c29c","wires":[["ec8f9748.d8d1b8","9b41bab.5d2c148","36d970ba.f973a"]]},{"id":"a3d2b1ea.3e7ad","type":"comment","name":"set vnfHostName","info":"","comments":"","x":903,"y":1953,"z":"49f11553.28c29c","wires":[]},{"id":"7180d3e5.b6623c","type":"comment","name":"set policyInstanceName","info":"","comments":"","x":1518,"y":1953,"z":"49f11553.28c29c","wires":[]},{"id":"4be5943a.af143c","type":"comment","name":"set swName","info":"","comments":"","x":1492,"y":2104,"z":"49f11553.28c29c","wires":[]},{"id":"1b6f227f.8f62fe","type":"execute","name":"execute RestapiCallNode","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/mac-address-assign.json'`\" />\n    <parameter name='restapiUrl' value=\"`$prop.mac-address-microserivice.url + '/macaddress/service/assign'`\" />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />  \n    <parameter name='customHttpHeaders'\n      value=\"Authorization=Basic YWRtaW46YWRtaW4=\" />\n\t<parameter name=\"responsePrefix\" value=\"tmp.mac-address-resp.prefix\" />","comments":"","outputs":1,"x":525,"y":3291,"z":"49f11553.28c29c","wires":[["fb57b9db.6a1d88","2210de9c.a974e2"]]},{"id":"d2857a0f.9c83f8","type":"set","name":"set","xml":"<set>\n<parameter name='prop.restapi.templateDir' value=\"/opt/lsc/restapi/templates\" />\n<parameter name='prop.mac-address-microserivice.url' value=\"http://mtanjv9sdlg51-eth1-0.aic.cip.att.com:8989\" />","comments":"","x":470,"y":3210,"z":"49f11553.28c29c","wires":[]},{"id":"6466676a.e4e518","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":320,"y":3209,"z":"49f11553.28c29c","wires":[["d2857a0f.9c83f8","1b6f227f.8f62fe","c0119016.c8f5b","75b77747.853018"]]},{"id":"c0119016.c8f5b","type":"record","name":"record","xml":"<record plugin=\"com.att.sdnctl.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: restapi-call-node Call MAC Address microService assign\"/>","comments":"","outputs":1,"x":470,"y":3252,"z":"49f11553.28c29c","wires":[[]]},{"id":"fb57b9db.6a1d88","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":720,"y":3281,"z":"49f11553.28c29c","wires":[["5e381348.a46f6c"]]},{"id":"cd970bc5.886488","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: Error calling MAC Address Micro Service assign\"/>\n","comments":"","outputs":1,"x":1062,"y":3204,"z":"49f11553.28c29c","wires":[[]]},{"id":"2210de9c.a974e2","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":722,"y":3323,"z":"49f11553.28c29c","wires":[["6c9579c4.cc79e8"]]},{"id":"5cbbae13.9307d","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: assign SUCCESS\"/>","comments":"","outputs":1,"x":1061,"y":3324,"z":"49f11553.28c29c","wires":[[]]},{"id":"7e55e2a5.9fbb1c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='502' />\n<parameter name='error-message' value='self-serve-mS-mac-address-assign: Error calling MAC Address Micro Service assign' />\n","comments":"","x":1076,"y":3282,"z":"49f11553.28c29c","wires":[]},{"id":"5e381348.a46f6c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":847,"y":3280,"z":"49f11553.28c29c","wires":[["cd970bc5.886488","7e55e2a5.9fbb1c","b6a624d5.1cf8e8"]]},{"id":"6c9579c4.cc79e8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":848,"y":3324,"z":"49f11553.28c29c","wires":[["5cbbae13.9307d"]]},{"id":"e5f3a8f2.389b18","type":"switchNode","name":"switch response-code","xml":"<switch test='`$tmp.pm-response.response-code`'>\n","comments":"","outputs":1,"x":1113,"y":3409,"z":"49f11553.28c29c","wires":[["dcfaaabe.0296b8"]]},{"id":"dcfaaabe.0296b8","type":"outcome","name":"500","xml":"<outcome value='500'>\n","comments":"","outputs":1,"x":1289,"y":3409,"z":"49f11553.28c29c","wires":[["df67c991.658888"]]},{"id":"df67c991.658888","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1295,"y":3451,"z":"49f11553.28c29c","wires":[["30b9131e.63a09c","67447020.0f752","bb43975e.4e1618"]]},{"id":"30b9131e.63a09c","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: Error calling Policy Manager getPolicy\"/>\n","comments":"","outputs":1,"x":1440,"y":3408,"z":"49f11553.28c29c","wires":[[]]},{"id":"67447020.0f752","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='502' />\n<parameter name='error-message' value='self-serve-mS-mac-address-assign: getPolicy call to Policy Manger failed' />\n","comments":"","x":1459,"y":3493,"z":"49f11553.28c29c","wires":[]},{"id":"41de3cd3.931d34","type":"method","name":"method self-serve-mS-mac-address-assign","xml":"<method rpc='self-serve-mS-mac-address-assign' mode='sync'>\n","comments":"","outputs":1,"x":767,"y":36,"z":"49f11553.28c29c","wires":[["ce021d20.bb75e"]]},{"id":"e1fda82f.16b798","type":"set","name":"set","xml":"<set>\n<parameter name='tmp.mac-address-list.' value=\"`$tmp.mac-address-resp.prefix.mac-address-list.`\" />\n","comments":"","x":1062,"y":3362,"z":"49f11553.28c29c","wires":[]},{"id":"75b77747.853018","type":"for","name":"for each address in mac-address-list","xml":"<for index='mac-address-list-index' start='0' end='`$tmp.mac-address-resp.prefix.mac-address-list_length`' >\n","comments":"","outputs":1,"x":562,"y":3384,"z":"49f11553.28c29c","wires":[["2545934f.e62d9c"]]},{"id":"a15833b7.c0517","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: mac-address-list-index|name|value \"/>\n<parameter name=\"field3\" value='`$mac-address-list-index`'/>\n<parameter name=\"field4\" value='`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].name`'/>\n<parameter name=\"field5\" value='`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].value`'/>","comments":"","outputs":1,"x":671,"y":3424,"z":"49f11553.28c29c","wires":[[]]},{"id":"2545934f.e62d9c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":544,"y":3424,"z":"49f11553.28c29c","wires":[["a15833b7.c0517","83429548.44e578"]]},{"id":"4c58c71c.b3c6c8","type":"comment","name":"vnf-name and could-param-name required for assign and unassign","info":"","comments":"","x":937,"y":2226,"z":"49f11553.28c29c","wires":[]},{"id":"d5fbb2b6.accb2","type":"comment","name":"policy-instance-name and sw-name required for assign","info":"","comments":"","x":911,"y":2504,"z":"49f11553.28c29c","wires":[]},{"id":"1612f486.989c8b","type":"switchNode","name":"switch ss.capability-action == assign","xml":"<switch test=\"`$ss.capability-action` == 'assign'\">","comments":"","outputs":1,"x":1377,"y":2560,"z":"49f11553.28c29c","wires":[["6b7c9a0b.7497b4"]]},{"id":"6b7c9a0b.7497b4","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1597,"y":2560,"z":"49f11553.28c29c","wires":[["9cfb0a8c.350bb8"]]},{"id":"52391bf3.425114","type":"switchNode","name":"switch ss.capability-action == assign","xml":"<switch test=\"`$ss.capability-action` == 'assign'\">","comments":"","outputs":1,"x":1376,"y":2689,"z":"49f11553.28c29c","wires":[["e220d9fd.f96838"]]},{"id":"e220d9fd.f96838","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1601,"y":2689,"z":"49f11553.28c29c","wires":[["a293551e.0dbae8"]]},{"id":"c0e224f4.f2ee48","type":"execute","name":"execute RestapiCallNode","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/mac-address-unassign.json'`\" />\n    <parameter name='restapiUrl' value=\"`$prop.mac-address-microserivice.url + '/macaddress/service/unassign'`\" />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />  \n    <parameter name='customHttpHeaders'\n      value=\"Authorization=Basic YWRtaW46YWRtaW4=\" />\n\t<parameter name=\"responsePrefix\" value=\"tmp.mac-address-resp.prefix\" />","comments":"","outputs":1,"x":559,"y":3909,"z":"49f11553.28c29c","wires":[["90394e75.7983e","7f04a5b9.03d47c"]]},{"id":"d6b2bdc8.28f4b","type":"set","name":"set","xml":"<set>\n<parameter name='prop.restapi.templateDir' value=\"/opt/lsc/restapi/templates\" />\n<parameter name='prop.mac-address-microserivice.url' value=\"http://mtanjv9sdlg51-eth1-0.aic.cip.att.com:8989\" />","comments":"","x":504,"y":3828,"z":"49f11553.28c29c","wires":[]},{"id":"e3815c89.19818","type":"record","name":"record","xml":"<record plugin=\"com.att.sdnctl.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: restapi-call-node Call MAC Address microService unassign\"/>","comments":"","outputs":1,"x":504,"y":3870,"z":"49f11553.28c29c","wires":[[]]},{"id":"90394e75.7983e","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":754,"y":3899,"z":"49f11553.28c29c","wires":[["7d22364a.00ccd8"]]},{"id":"e985ac86.2be1c","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: Error calling MAC Address Micro Service unassign\"/>\n","comments":"","outputs":1,"x":1047,"y":3817,"z":"49f11553.28c29c","wires":[[]]},{"id":"7f04a5b9.03d47c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":756,"y":3941,"z":"49f11553.28c29c","wires":[["c8fd6afc.857bc8"]]},{"id":"a29f47d1.1990b8","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: unassign SUCCESS: response: \"/>\n<parameter name='field3' value='`$tmp.mac-address-resp.prefix.status`' />","comments":"","outputs":1,"x":1050,"y":3942,"z":"49f11553.28c29c","wires":[[]]},{"id":"35449a42.cd0cb6","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='502' />\n<parameter name='error-message' value='self-serve-mS-mac-address-assign: Error calling MAC Address Micro Service unassign' />\n","comments":"","x":1066,"y":3898,"z":"49f11553.28c29c","wires":[]},{"id":"7d22364a.00ccd8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":881,"y":3898,"z":"49f11553.28c29c","wires":[["e985ac86.2be1c","35449a42.cd0cb6","b3df94aa.38dd88"]]},{"id":"c8fd6afc.857bc8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":882,"y":3942,"z":"49f11553.28c29c","wires":[["a29f47d1.1990b8","32eb5385.0caa4c"]]},{"id":"b6a624d5.1cf8e8","type":"set","name":"set status to FAILED","xml":"<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />","comments":"","x":1100,"y":3244,"z":"49f11553.28c29c","wires":[]},{"id":"bb43975e.4e1618","type":"set","name":"set status to FAILED","xml":"<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />","comments":"","x":1482,"y":3451,"z":"49f11553.28c29c","wires":[]},{"id":"b3df94aa.38dd88","type":"set","name":"set status to FAILED","xml":"<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />","comments":"","x":1089,"y":3858,"z":"49f11553.28c29c","wires":[]},{"id":"32eb5385.0caa4c","type":"switchNode","name":"switch status","xml":"<switch test=\"`$tmp.mac-address-resp.prefix.status == 'deleted successfully'`\">","comments":"","outputs":1,"x":1104,"y":3990,"z":"49f11553.28c29c","wires":[["c57baf20.c1ffd","533327bb.094ae8"]]},{"id":"533327bb.094ae8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1292,"y":4034,"z":"49f11553.28c29c","wires":[["d2de149f.a9ef08"]]},{"id":"c57baf20.c1ffd","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1290,"y":3990,"z":"49f11553.28c29c","wires":[["7f0fc0f0.fd344"]]},{"id":"c64ba45b.712a88","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: Address Micro Service unassign did not return: deleted successfully\"/>\n","comments":"","outputs":1,"x":1553,"y":3907,"z":"49f11553.28c29c","wires":[[]]},{"id":"452a2683.28b6c8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='502' />\n<parameter name='error-message' value='self-serve-mS-mac-address-assign: Address Micro Service unassign did not return: deleted successfully' />\n","comments":"","x":1571,"y":3990,"z":"49f11553.28c29c","wires":[]},{"id":"83050dff.db737","type":"set","name":"set status to FAILED","xml":"<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />","comments":"","x":1594,"y":3948,"z":"49f11553.28c29c","wires":[]},{"id":"d2de149f.a9ef08","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1409,"y":4034,"z":"49f11553.28c29c","wires":[["a75ab013.74fb6"]]},{"id":"7f0fc0f0.fd344","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1409,"y":3990,"z":"49f11553.28c29c","wires":[["c64ba45b.712a88","83050dff.db737","452a2683.28b6c8"]]},{"id":"a75ab013.74fb6","type":"for","name":"for each vf-module-parameters","xml":"<for index='vf-module-param-index' start='0' end='`$tmp.vf-module-parameters-length`' >\n","comments":"","outputs":1,"x":1626,"y":4034,"z":"49f11553.28c29c","wires":[["3635e0e6.833f8"]]},{"id":"4fd6d670.f4dc08","type":"comment","name":"If capability-name matches, add resource data to miroservice request element","info":"","comments":"","x":585,"y":1039,"z":"49f11553.28c29c","wires":[]},{"id":"d771e1cd.ffe8b","type":"set","name":"set cloudParamName ","xml":"<set>\n<parameter name='tmp.cloudParamName' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].name`'  />","comments":"","x":798,"y":1389,"z":"49f11553.28c29c","wires":[]},{"id":"292c2783.39cc08","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: resolved cloudParamName: | resourceValue: \"/>\n<parameter name=\"field3\" value='`$tmp.cloudParamName`'/>\n<parameter name=\"field4\" value='`$tmp.resourceValue`'/>","comments":"","outputs":1,"x":750,"y":1432,"z":"49f11553.28c29c","wires":[[]]},{"id":"f76a923e.1777d","type":"set","name":"initialize microService request elements length","xml":"<set>\n<parameter name='ma.elements.element_length' value='0' />","comments":"","x":422,"y":853,"z":"49f11553.28c29c","wires":[]},{"id":"321881ae.e1707e","type":"comment","name":"If resource-value is NOT already resolved, add this vf-module-parameters.param to the microService assign request","info":"","comments":"","x":1094,"y":2820,"z":"49f11553.28c29c","wires":[]},{"id":"fb516b25.0acb58","type":"comment","name":"Check for $ in vf-module-parameters.param[].value","info":"","comments":"","x":817,"y":1239,"z":"49f11553.28c29c","wires":[]},{"id":"8e89e7e1.f69898","type":"execute","name":"slistringUtils - check param.value for $","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].value`\" />\n    <parameter name=\"target\" value=\"$\"/>","comments":"","outputs":1,"x":852,"y":1332,"z":"49f11553.28c29c","wires":[["f7ddc41d.042728"]]},{"id":"f7ddc41d.042728","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1084,"y":1332,"z":"49f11553.28c29c","wires":[["f25744a9.dc9668"]]},{"id":"dea1481d.7ad108","type":"set","name":"set resourceValue to param.value","xml":"<set>\n<parameter name='tmp.resourceValue' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].value`'  />","comments":"","x":1428,"y":1332,"z":"49f11553.28c29c","wires":[]},{"id":"f25744a9.dc9668","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1212,"y":1332,"z":"49f11553.28c29c","wires":[["dea1481d.7ad108"]]},{"id":"1fd668f7.cdc337","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1128,"y":3571,"z":"49f11553.28c29c","wires":[["69646180.d517c"]]},{"id":"69646180.d517c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1244,"y":3650,"z":"49f11553.28c29c","wires":[["f65630a2.13cba","4cc2a6a2.1745e8"]]},{"id":"f65630a2.13cba","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: mac-address-list MATCH with param.value: \"/>\n<parameter name=\"field3\" value=\"`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].name`\"/>","comments":"","outputs":1,"x":1396,"y":3650,"z":"49f11553.28c29c","wires":[[]]},{"id":"e795d2b2.de9ea","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":720,"y":1281,"z":"49f11553.28c29c","wires":[["8e89e7e1.f69898","d771e1cd.ffe8b","b833668a.32a2e8","d04355c3.417358"]]},{"id":"aabbd0a7.8406b","type":"comment","name":"Unassign request will never execute this logic because capbility-name will be INPUT","info":"","comments":"","x":995,"y":2776,"z":"49f11553.28c29c","wires":[]},{"id":"ba23f780.7e0bf8","type":"comment","name":"Additional check for if resourceValue already resolved set capability-name to INPUT","info":"","comments":"","x":1481,"y":3532,"z":"49f11553.28c29c","wires":[]},{"id":"298e3073.ab37a","type":"comment","name":"If param.value does have $ (not already resolved) set param.value mS output","info":"","comments":"","x":1461,"y":3572,"z":"49f11553.28c29c","wires":[]},{"id":"f20a56f9.f4d278","type":"comment","name":"If param.value does NOT have $ (already resolved) don't set param.value but set capanility-name to INPUT","info":"","comments":"","x":1556,"y":3612,"z":"49f11553.28c29c","wires":[]},{"id":"1ae02e9e.613b31","type":"set","name":"set mac-address-unassign test data","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length' value='4' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].name' value='vmxvpfe_sriov41_0_port_mac' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].value' value='${vmxvpfe_sriov41_0_port_mac}' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.status' value='PENDING' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.capability-name' value='mS-mac-address-assign' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key_length' value='3' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[0].name' value='key' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[0].value' value='host-laina1' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[1].name' value='policy-instance-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[1].value' value='JQIN1810SRIOV.Config_MS_macAddressAssignmentPolicy.*' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[2].name' value='sw-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[0].resource-resolution-data.resource-key[2].value' value='JUNOS' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].name' value='vmxvpfe_sriov42_0_port_mac' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].value' value='somevalue-already-assigned' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.status' value='PENDING' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.capability-name' value='INPUT' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key_length' value='3' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[0].name' value='key' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[0].value' value='host-laina1' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[1].name' value='policy-instance-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[1].value' value='JQIN1810SRIOV.Config_MS_macAddressAssignmentPolicy.*' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[2].name' value='sw-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[1].resource-resolution-data.resource-key[2].value' value='JUNOS' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].name' value='vmxvpfe_sriov43_0_port_mac' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].value' value='${vmxvpfe_sriov43_0_port_mac}' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.status' value='PENDING' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.capability-name' value='mS-mac-address-assign' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.resource-key_length' value='3' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.resource-key[0].name' value='key' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.resource-key[0].value' value='host-laina1' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.resource-key[1].name' value='policy-instance-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.resource-key[1].value' value='JQIN1810SRIOV.Config_MS_macAddressAssignmentPolicy.*' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.resource-key[2].name' value='sw-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[2].resource-resolution-data.resource-key[2].value' value='JUNOS' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].name' value='vmxvpfe_sriov44_0_port_mac' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].value' value='${vmxvpfe_sriov44_0_port_mac}' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.status' value='PENDING' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.capability-name' value='mS-mac-address-assign' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.resource-key_length' value='3' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.resource-key[0].name' value='key' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.resource-key[0].value' value='host-laina1' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.resource-key[1].name' value='policy-instance-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.resource-key[1].value' value='JQIN1810SRIOV.Config_MS_macAddressAssignmentPolicy.*' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.resource-key[2].name' value='sw-name' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[3].resource-resolution-data.resource-key[2].value' value='JUNOS' />","comments":"","x":1122,"y":574,"z":"49f11553.28c29c","wires":[]},{"id":"31e3420e.c637ee","type":"comment","name":"Set temporary test ASSIGN data * TEST-ONLY *","info":"","comments":"","x":1441,"y":534,"z":"49f11553.28c29c","wires":[]},{"id":"69c27aa5.4c6a54","type":"comment","name":"Set temporary test UNASSIGN data * TEST-ONLY *","info":"","comments":"","x":1455,"y":572,"z":"49f11553.28c29c","wires":[]},{"id":"98494924.3c42c8","type":"set","name":"set ma.elements.element to this vf-module-parameters.param","xml":"<set>\n<parameter name='ma.elements.element[$ma.elements.element_length].policy-instance-name' value='`$tmp.policyInstanceName`' />\n<parameter name='ma.elements.element[$ma.elements.element_length].vnf-host-name' value='`$tmp.vnfHostName`' />\n<parameter name='ma.elements.element[$ma.elements.element_length].cloud-param-name' value='`$tmp.cloudParamName`' />\n<parameter name='ma.elements.element[$ma.elements.element_length].sw-name' value='`$tmp.swName`' />","comments":"","x":933,"y":2870,"z":"49f11553.28c29c","wires":[]},{"id":"dcd2ceec.8e369","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"self-serve-mS-mac-address-assign: Adding this vf-module-parameters.param to ma.elements \"/>\n<parameter name=\"field3\" value='`$ma.elements.element_length`'/>\n<parameter name=\"field4\" value='`$ma.elements.element[$ma.elements.element_length].policy-instance-name`'/>\n<parameter name=\"field5\" value='`$ma.elements.element[$ma.elements.element_length].vnf-host-name`'/>\n<parameter name=\"field6\" value='`$ma.elements.element[$ma.elements.element_length].cloud-param-name`'/>\n<parameter name=\"field7\" value='`$ma.elements.element[$ma.elements.element_length].sw-name`'/>\n<parameter name=\"field8\" value='`$ma.elements.element[$ma.elements.element_length].resource-value`'/>","comments":"","outputs":1,"x":762,"y":2991,"z":"49f11553.28c29c","wires":[[]]},{"id":"7c75bd8a.d2b754","type":"set","name":"increment ma.elements.element_length","xml":"<set>\n<parameter name='ma.elements.element_length' value='`$ma.elements.element_length + 1`' />","comments":"","x":863,"y":3036,"z":"49f11553.28c29c","wires":[]},{"id":"b1f621f4.2d574","type":"switchNode","name":"check if resourceValue is set","xml":"<switch test=\"`$tmp.resourceValue`\">\n","comments":"","outputs":1,"x":833,"y":2918,"z":"49f11553.28c29c","wires":[["f25a8484.98ce68","8213e478.c84b68","42938aae.ae5904"]]},{"id":"f25a8484.98ce68","type":"outcome","name":"null","xml":"<outcome value='null'>\n","comments":"","outputs":1,"x":1019,"y":2951,"z":"49f11553.28c29c","wires":[[]]},{"id":"8213e478.c84b68","type":"other","name":"blank","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1019,"y":2992,"z":"49f11553.28c29c","wires":[[]]},{"id":"42938aae.ae5904","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1018,"y":2911,"z":"49f11553.28c29c","wires":[["2d01ba1c.f838c6"]]},{"id":"2d01ba1c.f838c6","type":"set","name":"set ma.elements.element.resource-value to this vf-module-parameters.param","xml":"<set>\n<parameter name='ma.elements.element[$ma.elements.element_length].resource-value' value='`$tmp.resourceValue`' />","comments":"","x":1375,"y":2911,"z":"49f11553.28c29c","wires":[]},{"id":"4cc2a6a2.1745e8","type":"execute","name":"slistringUtils - check param.value for $","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].value`\" />\n    <parameter name=\"target\" value=\"$\"/>","comments":"","outputs":1,"x":1343,"y":3695,"z":"49f11553.28c29c","wires":[["9d5a40fc.aed04","9f1e7092.0ada8"]]},{"id":"9d5a40fc.aed04","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1575,"y":3695,"z":"49f11553.28c29c","wires":[["82426b14.9463e8"]]},{"id":"8ec62283.b9675","type":"set","name":"set param[].resource-resolution-data.capability-name to INPUT","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.capability-name' value='INPUT'  />","comments":"","x":2005,"y":3695,"z":"49f11553.28c29c","wires":[]},{"id":"82426b14.9463e8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1703,"y":3695,"z":"49f11553.28c29c","wires":[["8ec62283.b9675"]]},{"id":"9f1e7092.0ada8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1577,"y":3735,"z":"49f11553.28c29c","wires":[["4a3bf9a3.c32a58"]]},{"id":"4a3bf9a3.c32a58","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1704,"y":3735,"z":"49f11553.28c29c","wires":[["d7bf35d6.132f58"]]},{"id":"d637c667.949db8","type":"switchNode","name":"switch ss.capability-action (assign| unassign)","xml":"<switch test='`$ss.capability-action`'>\n","comments":"","outputs":1,"x":575,"y":562,"z":"49f11553.28c29c","wires":[["cb233a84.84f258","5caf02ea.cb608c"]]},{"id":"cb233a84.84f258","type":"outcome","name":"assign","xml":"<outcome value='assign'>","comments":"","outputs":1,"x":856,"y":533,"z":"49f11553.28c29c","wires":[["d7a94ac5.4ee0d8"]]},{"id":"5caf02ea.cb608c","type":"outcome","name":"unassign","xml":"<outcome value='unassign'>","comments":"","outputs":1,"x":862,"y":573,"z":"49f11553.28c29c","wires":[["1ae02e9e.613b31"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-mS-vlan-tag-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-mS-vlan-tag-assign.json
new file mode 100644
index 0000000..3085219
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-mS-vlan-tag-assign.json
@@ -0,0 +1 @@
+[{"id":"c5ef4a1c.e71d88","type":"dgstart","name":"DGSTART","outputs":1,"x":116.66666412353516,"y":40.571431159973145,"z":"c5a1df11.bcdf6","wires":[["bafa9db1.1c9be"]]},{"id":"bdb76f74.d12d7","type":"method","name":"method self-serve-mS-vlan-tag-assign","xml":"<method rpc='self-serve-mS-vlan-tag-assign' mode='sync'>\n","comments":"","outputs":1,"x":252.45238494873047,"y":97.69841957092285,"z":"c5a1df11.bcdf6","wires":[["a4f14c9d.58ef2"]]},{"id":"a4f14c9d.58ef2","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":145.98810577392578,"y":185.00003814697266,"z":"c5a1df11.bcdf6","wires":[["127e5415.30fb2c","9447f661.3f15d8","cc153b29.abed98","98412ecc.da23c","c502d79c.b06078"]]},{"id":"bafa9db1.1c9be","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":389.52381134033203,"y":39.99999809265137,"z":"c5a1df11.bcdf6","wires":[["bdb76f74.d12d7"]]},{"id":"127e5415.30fb2c","type":"switchNode","name":"switch: ss.capability-name","xml":"<switch test='`$ss.capability-name`'>\n","comments":"","outputs":1,"x":380.4166717529297,"y":185.32143592834473,"z":"c5a1df11.bcdf6","wires":[["f0555549.640038"]]},{"id":"f0555549.640038","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":605.4166946411133,"y":185.82143449783325,"z":"c5a1df11.bcdf6","wires":[["4fd344e9.faf30c"]]},{"id":"4fd344e9.faf30c","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":765.333366394043,"y":185.93253326416016,"z":"c5a1df11.bcdf6","wires":[]},{"id":"9447f661.3f15d8","type":"switchNode","name":"switch: ss.capability-action","xml":"<switch test='`$ss.capability-action`'>\n","comments":"","outputs":1,"x":381.666690826416,"y":235.32143640518188,"z":"c5a1df11.bcdf6","wires":[["9d55e5c1.3da008","68837491.e9f6dc","9a7468b9.51f858"]]},{"id":"9d55e5c1.3da008","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":605.1666870117188,"y":235.57143640518188,"z":"c5a1df11.bcdf6","wires":[["29c3584d.5da538"]]},{"id":"29c3584d.5da538","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":765.0833587646484,"y":235.6825351715088,"z":"c5a1df11.bcdf6","wires":[]},{"id":"68837491.e9f6dc","type":"outcome","name":"assign","xml":"<outcome value='assign'>","comments":"","outputs":1,"x":603.9166831970215,"y":290.571439743042,"z":"c5a1df11.bcdf6","wires":[["10c136ed.d07269"]]},{"id":"9a9a98b7.18dd78","type":"call","name":"call self-serve-capability-param-resolution","xml":"<call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' >\n","comments":"","outputs":1,"x":1076.333351135254,"y":290.82144355773926,"z":"c5a1df11.bcdf6","wires":[["875fcbab.991238"]]},{"id":"875fcbab.991238","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1332.3333320617676,"y":290.821439743042,"z":"c5a1df11.bcdf6","wires":[["b78cda8f.8dbe98"]]},{"id":"b78cda8f.8dbe98","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=\"`'Not all assignments are resolved' + $error-message`\" />\n","comments":"","x":1491.0833129882812,"y":290.8214359283447,"z":"c5a1df11.bcdf6","wires":[]},{"id":"d1c0d946.9ec218","type":"set","name":"set tmp.ss.param.capability-name","xml":"<set>\n<parameter name='tmp.ss.param.capability-name' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />\n","comments":"","x":1336.0873336791992,"y":395.17460918426514,"z":"c5a1df11.bcdf6","wires":[]},{"id":"a41a6ef3.c5f19","type":"for","name":"for pidx in param_length","xml":"<for silentFailure='true' index=\"pidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`\">","comments":"","outputs":1,"x":1024.3015594482422,"y":395.24607944488525,"z":"c5a1df11.bcdf6","wires":[["a12ffc63.ffc1a","d1c0d946.9ec218"]]},{"id":"a12ffc63.ffc1a","type":"switchNode","name":"switch: capability-name - ss vs param","xml":"<switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>\n","comments":"","outputs":1,"x":1349.0158615112305,"y":441.60325145721436,"z":"c5a1df11.bcdf6","wires":[["e789debe.6b525"]]},{"id":"e789debe.6b525","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1590.6230239868164,"y":440.9246826171875,"z":"c5a1df11.bcdf6","wires":[["e6113344.7f529"]]},{"id":"96ca14a1.e245e8","type":"switchNode","name":"switch: resource-key[].name","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>\n","comments":"","outputs":1,"x":1701.3057670593262,"y":652.1231122016907,"z":"c5a1df11.bcdf6","wires":[["55ded108.90884","3d143f12.9a0fc","894afc22.6c1c","fd09cd3.fdd223","fcf2da49.9d2578","48f38f0c.3b234"]]},{"id":"55ded108.90884","type":"outcome","name":"resource-name","xml":"<outcome value='resource-name'>\n","comments":"","outputs":1,"x":1969.6114082336426,"y":691.8731007575989,"z":"c5a1df11.bcdf6","wires":[["f3f0ea6c.e03218"]]},{"id":"f3f0ea6c.e03218","type":"set","name":"set vt.request[].resource-name","xml":"<set>\n<parameter name='vt.request[$qidx].resource-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":2285.1113624572754,"y":691.6230969429016,"z":"c5a1df11.bcdf6","wires":[]},{"id":"894afc22.6c1c","type":"outcome","name":"resource-value","xml":"<outcome value='resource-value'>\n","comments":"","outputs":1,"x":1971.6946830749512,"y":857.5953712463379,"z":"c5a1df11.bcdf6","wires":[["4d3a96f8.e92e68"]]},{"id":"64924fa7.7e266","type":"set","name":"set vt.request[].resource-value","xml":"<set>\n<parameter name='vt.request[$qidx].resource-value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":2673.6946907043457,"y":856.3453693389893,"z":"c5a1df11.bcdf6","wires":[]},{"id":"3d143f12.9a0fc","type":"outcome","name":"vlan-tag-key","xml":"<outcome value='vlan-tag-key'>\n","comments":"","outputs":1,"x":1961.2067070007324,"y":774.9841747283936,"z":"c5a1df11.bcdf6","wires":[["c9ff3410.8119d8"]]},{"id":"c9ff3410.8119d8","type":"set","name":"set vt.request[].vlan-tag-key","xml":"<set>\n<parameter name='vt.request[$qidx].vlan-tag-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":2280.2067070007324,"y":773.7341747283936,"z":"c5a1df11.bcdf6","wires":[]},{"id":"10c136ed.d07269","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":776.6666946411133,"y":290.8214406967163,"z":"c5a1df11.bcdf6","wires":[["a41a6ef3.c5f19","566911e.ec7c0f","9a9a98b7.18dd78","a86eaad7.3ed688","ef89d686.bbf968"]]},{"id":"33cf25d7.f48cda","type":"for","name":"for kidx in resource-key_length","xml":"<for silentFailure='true' index=\"kidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key_length`\">","comments":"","outputs":1,"x":1422.1668434143066,"y":651.9842228889465,"z":"c5a1df11.bcdf6","wires":[["96ca14a1.e245e8"]]},{"id":"cc153b29.abed98","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='`$pathname`' />\n","comments":"","outputs":1,"x":362.91666412353516,"y":3670.5713291168213,"z":"c5a1df11.bcdf6","wires":[[]]},{"id":"48f38f0c.3b234","type":"outcome","name":"policy-instance-name","xml":"<outcome value='policy-instance-name'>\n","comments":"","outputs":1,"x":1988.5000267028809,"y":651.6230244636536,"z":"c5a1df11.bcdf6","wires":[["c93a305c.2fa4c"]]},{"id":"c93a305c.2fa4c","type":"set","name":"set vt.request[].policy-instance-name","xml":"<set>\n<parameter name='vt.request[$qidx].policy-instance-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":2302.860980987549,"y":651.7341361045837,"z":"c5a1df11.bcdf6","wires":[]},{"id":"fd09cd3.fdd223","type":"outcome","name":"scope-id","xml":"<outcome value='scope-id'>\n","comments":"","outputs":1,"x":1950.4842338562012,"y":732.5952472686768,"z":"c5a1df11.bcdf6","wires":[["933df36c.8496"]]},{"id":"933df36c.8496","type":"set","name":"set vt.request[].scope-id","xml":"<set>\n<parameter name='vt.request[$qidx].scope-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":2268.734172821045,"y":732.59521484375,"z":"c5a1df11.bcdf6","wires":[]},{"id":"e6113344.7f529","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1183.0474700927734,"y":604.5238580703735,"z":"c5a1df11.bcdf6","wires":[["33cf25d7.f48cda","38d23bcd.0c65d4","376c2003.77b22","3ca06662.a2a23a","a60f294f.fe8c58"]]},{"id":"566911e.ec7c0f","type":"set","name":"set qidx = 0, ss.vt. = null","xml":"<set>\n<parameter name='qidx' value='0' />\n<parameter name='ss.vt.' value='' />\n","comments":"","x":1024.952392578125,"y":344.4285650253296,"z":"c5a1df11.bcdf6","wires":[]},{"id":"38d23bcd.0c65d4","type":"set","name":"qidx++","xml":"<set>\n<parameter name='qidx' value='`$qidx + 1`' />\n","comments":"","x":1345.6547546386719,"y":873.131016254425,"z":"c5a1df11.bcdf6","wires":[]},{"id":"376c2003.77b22","type":"set","name":"set vt.request_length = qidx","xml":"<set>\n<parameter name='vt.request_length' value='`$qidx`' />\n","comments":"","x":1410.654685974121,"y":920.131062567234,"z":"c5a1df11.bcdf6","wires":[]},{"id":"a60f294f.fe8c58","type":"set","name":"set ss.vt.param[].index","xml":"<set>\n<parameter name='ss.vt.param[$qidx].index' value='`$pidx`' />\n","comments":"","x":1395.9047241210938,"y":604.8095788955688,"z":"c5a1df11.bcdf6","wires":[]},{"id":"3ca06662.a2a23a","type":"set","name":"set ss.vt.param_length = qidx","xml":"<set>\n<parameter name='ss.vt.param_length' value='`$qidx`' />\n","comments":"","x":1415.3689498901367,"y":967.416708946228,"z":"c5a1df11.bcdf6","wires":[]},{"id":"64bef960.780cb8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Failed to get vlan-tag assisgnment from mS\" />\n","comments":"","x":1668.1782302856445,"y":1149.2737274169922,"z":"c5a1df11.bcdf6","wires":[]},{"id":"ef89d686.bbf968","type":"execute","name":"execute RestApiCallNode","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.ss.mS.vlan.tag.assign.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.vt.mS.url + $tmp.ss-vlan-tag-url`' />\n    <parameter name='restapiUser' value='`$prop.vt.mS.user`' />\n    <parameter name='restapiPassword' value='`$prop.vt.mS.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name=\"responsePrefix\" value=\"vtResp\" />","comments":"","outputs":1,"x":1041.4165878295898,"y":1143.6593780517578,"z":"c5a1df11.bcdf6","wires":[["11961f29.a94ae1","d6afc59.dcb7338","10db5421.58885c"]]},{"id":"11961f29.a94ae1","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1274.4387245178223,"y":1144.2289943695068,"z":"c5a1df11.bcdf6","wires":[["d44f309f.f63a1"]]},{"id":"d6afc59.dcb7338","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1265.4388122558594,"y":1057.014744758606,"z":"c5a1df11.bcdf6","wires":[["d44f309f.f63a1"]]},{"id":"10db5421.58885c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1270.6174621582031,"y":1244.8003120422363,"z":"c5a1df11.bcdf6","wires":[["a72a549f.b9c508"]]},{"id":"d44f309f.f63a1","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1465.1425857543945,"y":1056.6589431762695,"z":"c5a1df11.bcdf6","wires":[["64bef960.780cb8","18d5e86c.5dcdd8"]]},{"id":"a212f83c.df2cb8","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":2413.6667556762695,"y":1100.5595350265503,"z":"c5a1df11.bcdf6","wires":[]},{"id":"18d5e86c.5dcdd8","type":"for","name":"for i in ss.vt.param_length","xml":"<for index=\"i\" start=\"0\" end=\"`$ss.vt.param_length`\">","comments":"","outputs":1,"x":2075.738105773926,"y":1056.3097324371338,"z":"c5a1df11.bcdf6","wires":[["a212f83c.df2cb8","dafa8995.1e9368"]]},{"id":"717779a8.2aaf68","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1853.0952911376953,"y":1245.5715370178223,"z":"c5a1df11.bcdf6","wires":[["35740486.f18a7c","18d5e86c.5dcdd8"]]},{"id":"a72a549f.b9c508","type":"switchNode","name":"switch: vtResp.error-code","xml":"<switch test='`$vtResp.error-code`'>\n","comments":"","outputs":1,"x":1480.2975387573242,"y":1244.9641914367676,"z":"c5a1df11.bcdf6","wires":[["52bcb445.96891c","ee88877a.c2d038"]]},{"id":"52bcb445.96891c","type":"outcomeTrue","name":"500","xml":"<outcome value='500'>\n","comments":"","outputs":1,"x":1692.547534942627,"y":1244.7141914367676,"z":"c5a1df11.bcdf6","wires":[["717779a8.2aaf68"]]},{"id":"ee88877a.c2d038","type":"outcomeTrue","name":"200","xml":"<outcome value='200'>\n","comments":"","outputs":1,"x":1694.0475387573242,"y":1287.4641914367676,"z":"c5a1df11.bcdf6","wires":[["772d58d9.bfa278"]]},{"id":"35740486.f18a7c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500'/>\n<parameter name='error-message' value=\"`'Encountered error from mS-vlan-tag-assign with error-code = ' + $vtResp.error-code + ' and error-message = ' + $vtResp.error-message`\" />\n","comments":"","x":2039.4642181396484,"y":1245.1308870315552,"z":"c5a1df11.bcdf6","wires":[]},{"id":"dafa8995.1e9368","type":"set","name":"set vt-index","xml":"<set>\n<parameter name='vt-index' value='`$ss.vt.param[$i].index`' />\n","comments":"","x":2309.1308670043945,"y":1055.3809442520142,"z":"c5a1df11.bcdf6","wires":[]},{"id":"b8d40c25.c4dd9","type":"for","name":"for vtidx in ss.vt.param_length","xml":"<for silentFailure='true' index=\"vtidx\" start=\"0\" end=\"`$ss.vt.param_length`\">","comments":"","outputs":1,"x":1270.9286804199219,"y":2016.2978057861328,"z":"c5a1df11.bcdf6","wires":[["e9dea048.e97a1","c4d40bb4.303788"]]},{"id":"495d7152.4efb9","type":"call","name":"call generate-cp-instance-id","xml":"<call module=\"GENERIC-RESOURCE-API\" rpc=\"generate-cp-instance-id\" mode=\"sync\" >\n","comments":"","outputs":1,"x":2846.6789512634277,"y":2470.0120401382446,"z":"c5a1df11.bcdf6","wires":[["11690908.93f117"]]},{"id":"11690908.93f117","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3055.2503449576243,"y":2470.1550019127985,"z":"c5a1df11.bcdf6","wires":[["2d993438.c09e0c"]]},{"id":"8b5bee81.6266f","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Error in generating cp-instance-id in SDNC; ' + $error-message.generate-cp-instance-id + $error-message`\" />\n","comments":"","x":3406.0955123901367,"y":2503.8219566345215,"z":"c5a1df11.bcdf6","wires":[]},{"id":"7ed21610.a53f78","type":"execute","name":"param[$vt-index].value contains $","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name='source' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].value`' />\n    <parameter name='target' value='$' />\n","comments":"","outputs":1,"x":1249.7500381469727,"y":2258.726761817932,"z":"c5a1df11.bcdf6","wires":[["466d8758.a7b688","ee492c8b.fbf1c"]]},{"id":"97fa42c5.a3d32","type":"set","name":"set capability-name = INPUT","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.capability-name' \n\tvalue='INPUT' />\n","comments":"","x":1914.655387878418,"y":2601.726538658142,"z":"c5a1df11.bcdf6","wires":[]},{"id":"466d8758.a7b688","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1496.798110961914,"y":2600.869469642639,"z":"c5a1df11.bcdf6","wires":[["c238ab9f.a2f118"]]},{"id":"ee492c8b.fbf1c","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1503.4643249511719,"y":2258.01242351532,"z":"c5a1df11.bcdf6","wires":[["1c9a359e.8341da"]]},{"id":"fdccd3a0.01719","type":"set","name":"set param[].value","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].value' \n\tvalue='`$vtResp.output[$oidx].resource-value`' />\n","comments":"","x":2093.8212356567383,"y":2260.3692808151245,"z":"c5a1df11.bcdf6","wires":[]},{"id":"c7cab06d.300ff","type":"for","name":"for oidx in vtResp.output_length","xml":"<for silentFailure='true' index=\"oidx\" start=\"0\" end=\"`$vtResp.output_length`\">","comments":"","outputs":1,"x":981.4642086029053,"y":2016.5119230747223,"z":"c5a1df11.bcdf6","wires":[["b8d40c25.c4dd9"]]},{"id":"e9dea048.e97a1","type":"switchNode","name":"switch: resource-name = param[].name","xml":"<switch test='`$vtResp.output[$oidx].resource-name == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].name`'>\n","comments":"","outputs":1,"x":1585.464210510254,"y":2069.0119199752808,"z":"c5a1df11.bcdf6","wires":[["59284168.90b7c"]]},{"id":"59284168.90b7c","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1832.214210510254,"y":2069.0119199752808,"z":"c5a1df11.bcdf6","wires":[["7ed21610.a53f78"]]},{"id":"c4d40bb4.303788","type":"set","name":"set vt-index","xml":"<set>\n<parameter name='vt-index' value='`$ss.vt.param[$vtidx].index`' />\n","comments":"","x":1501.714210510254,"y":2016.5119199752808,"z":"c5a1df11.bcdf6","wires":[]},{"id":"1c9a359e.8341da","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1873.5711975097656,"y":2260.3692541122437,"z":"c5a1df11.bcdf6","wires":[["fdccd3a0.01719","740ff69b.385498","b0852bbf.7b6948"]]},{"id":"99bf5b7d.b52968","type":"for","name":"for sidx in stored-elements_length","xml":"<for silentFailure='true' index=\"sidx\" start=\"0\" end=\"`$vtResp.output[$oidx].stored-elements_length`\">","comments":"","outputs":1,"x":2866.107204437256,"y":2541.0119276046753,"z":"c5a1df11.bcdf6","wires":[["a838c69c.5f85d8"]]},{"id":"e0dd47c2.5e32c8","type":"set","name":"set vnfc-network-data[$idx].vnfc-network-role","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].vnfc-network-role' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":2898.107421875,"y":2425.0120391845703,"z":"c5a1df11.bcdf6","wires":[]},{"id":"ea768341.52b6a","type":"switchNode","name":"switch: resource-key[].name","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key[$kidx].name`'>\n","comments":"","outputs":1,"x":2418.8929138183594,"y":2355.2261867523193,"z":"c5a1df11.bcdf6","wires":[["cbc3487d.ad3498"]]},{"id":"740ff69b.385498","type":"for","name":"for kidx in resource-key_length","xml":"<for silentFailure='true' index=\"kidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key_length`\">","comments":"","outputs":1,"x":2139.75399017334,"y":2355.087297439575,"z":"c5a1df11.bcdf6","wires":[["ea768341.52b6a"]]},{"id":"cbc3487d.ad3498","type":"outcome","name":"vnfc-network-role","xml":"<outcome value='vnfc-network-role'>\n","comments":"","outputs":1,"x":2666.087173461914,"y":2354.726099014282,"z":"c5a1df11.bcdf6","wires":[["2dac7293.22fd2e"]]},{"id":"a838c69c.5f85d8","type":"set","name":"set vlan-data[]","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.connection-point-id' \n\tvalue='`$tmp.return.generate-cp-instance-id.id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-uuid' \n\tvalue='`$vtResp.output[$oidx].stored-elements[$sidx].vlan-uuid`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-tag-id' \n\tvalue='`$vtResp.output[$oidx].stored-elements[$sidx].vlantag-value`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-tag-description' \n\tvalue='`$vtResp.output[$oidx].stored-elements[$sidx].vlantag-name`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-role' \n\tvalue='`$vtResp.output[$oidx].stored-elements[$sidx].element-vlan-role`' />\n","comments":"","x":3124.8572998046875,"y":2541.0121421813965,"z":"c5a1df11.bcdf6","wires":[]},{"id":"fcf2da49.9d2578","type":"outcome","name":"vlan-type","xml":"<outcome value='vlan-type'>\n","comments":"","outputs":1,"x":1954.6190328598022,"y":815.5952258110046,"z":"c5a1df11.bcdf6","wires":[["cb98390c.0c83b8"]]},{"id":"cb98390c.0c83b8","type":"set","name":"set vt.request[].vlan-type","xml":"<set>\n<parameter name='vt.request[$qidx].vlan-type' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":2272.6190328598022,"y":815.3452258110046,"z":"c5a1df11.bcdf6","wires":[]},{"id":"4d3a96f8.e92e68","type":"execute","name":"resource-key[$sidx].value contains $","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name='source' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n    <parameter name='target' value='$' />\n","comments":"","outputs":1,"x":2231.368999481201,"y":857.095251083374,"z":"c5a1df11.bcdf6","wires":[["a8167a34.9f7498","fce37b40.737b98"]]},{"id":"a8167a34.9f7498","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2466.7262115478516,"y":856.3809108734131,"z":"c5a1df11.bcdf6","wires":[["64924fa7.7e266"]]},{"id":"fce37b40.737b98","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2467.618968963623,"y":898.095235824585,"z":"c5a1df11.bcdf6","wires":[["cf84b8fb.496658"]]},{"id":"cf84b8fb.496658","type":"set","name":"set vt.request[].resource-value = NULL","xml":"<set>\n<parameter name='vt.request[$qidx].resource-value' value='' />\n","comments":"","x":2702.118968963623,"y":898.345235824585,"z":"c5a1df11.bcdf6","wires":[]},{"id":"c62fc75a.bc4718","type":"comment","name":"Manually ASSIGNED","info":"","comments":"","x":2667.618968963623,"y":819.345235824585,"z":"c5a1df11.bcdf6","wires":[]},{"id":"9a7468b9.51f858","type":"outcome","name":"unassign","xml":"<outcome value='unassign'>","comments":"","outputs":1,"x":616.9047355651855,"y":2706.237874984741,"z":"c5a1df11.bcdf6","wires":[["9e8c530e.faa71"]]},{"id":"649308e2.aa56f8","type":"set","name":"set tmp.ss.param.capability-name","xml":"<set>\n<parameter name='tmp.ss.param.capability-name' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />\n","comments":"","x":1318.7420043945312,"y":2758.1745371818542,"z":"c5a1df11.bcdf6","wires":[]},{"id":"bbd10fa5.f1ee3","type":"for","name":"for pidx in param_length","xml":"<for silentFailure='true' index=\"pidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`\">","comments":"","outputs":1,"x":1028.9562301635742,"y":2758.2460074424744,"z":"c5a1df11.bcdf6","wires":[["3d6e53cd.d0980c","649308e2.aa56f8"]]},{"id":"3d6e53cd.d0980c","type":"switchNode","name":"switch: capability-name - ss vs param","xml":"<switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>\n","comments":"","outputs":1,"x":1330.7062301635742,"y":2801.7460112571716,"z":"c5a1df11.bcdf6","wires":[["56632159.314ea"]]},{"id":"56632159.314ea","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1572.3133926391602,"y":2801.067442417145,"z":"c5a1df11.bcdf6","wires":[["8011d731.b29368"]]},{"id":"9e8c530e.faa71","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":789.3213691711426,"y":2706.488046646118,"z":"c5a1df11.bcdf6","wires":[["bbd10fa5.f1ee3","fd931792.3a1838","ea689bee.78fbb8","6a23991a.0d4c58"]]},{"id":"fd931792.3a1838","type":"set","name":"set qidx = 0, ss.vt. = null","xml":"<set>\n<parameter name='qidx' value='0' />\n<parameter name='ss.vt.' value='' />\n","comments":"","x":1029.607063293457,"y":2707.4284930229187,"z":"c5a1df11.bcdf6","wires":[]},{"id":"6ef575e9.05dc2c","type":"switchNode","name":"switch: resource-key[].name","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>\n","comments":"","outputs":1,"x":1730.2380027770996,"y":2975.238130569458,"z":"c5a1df11.bcdf6","wires":[["aa88d40.920433","4e8f979d.ebee18","a3b371c5.833c9"]]},{"id":"aa88d40.920433","type":"outcome","name":"vlan-tag-key","xml":"<outcome value='vlan-tag-key'>\n","comments":"","outputs":1,"x":1991.1388702392578,"y":3056.0993270874023,"z":"c5a1df11.bcdf6","wires":[["94618202.f200a"]]},{"id":"94618202.f200a","type":"set","name":"set vt.request[].vlan-tag-key","xml":"<set>\n<parameter name='vt.request[$qidx].vlan-tag-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":2283.138870239258,"y":3055.8493270874023,"z":"c5a1df11.bcdf6","wires":[]},{"id":"2254e5a4.e4004a","type":"for","name":"for kidx in resource-key_length","xml":"<for silentFailure='true' index=\"kidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key_length`\">","comments":"","outputs":1,"x":1451.09907913208,"y":2975.099241256714,"z":"c5a1df11.bcdf6","wires":[["6ef575e9.05dc2c"]]},{"id":"a3b371c5.833c9","type":"outcome","name":"policy-instance-name","xml":"<outcome value='policy-instance-name'>\n","comments":"","outputs":1,"x":2017.4322624206543,"y":2974.738042831421,"z":"c5a1df11.bcdf6","wires":[["bd22d47b.263df8"]]},{"id":"bd22d47b.263df8","type":"set","name":"set vt.request[].policy-instance-name","xml":"<set>\n<parameter name='vt.request[$qidx].policy-instance-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":2309.7932167053223,"y":2974.849154472351,"z":"c5a1df11.bcdf6","wires":[]},{"id":"8011d731.b29368","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1212.9797058105469,"y":2931.638876438141,"z":"c5a1df11.bcdf6","wires":[["2254e5a4.e4004a","51b124df.524a0c","5cacb530.16a2ac","b19132a.31666d","d2f81f9.4c4e3e"]]},{"id":"51b124df.524a0c","type":"set","name":"qidx++","xml":"<set>\n<parameter name='qidx' value='`$qidx + 1`' />\n","comments":"","x":1374.5870475769043,"y":3134.579393386841,"z":"c5a1df11.bcdf6","wires":[]},{"id":"5cacb530.16a2ac","type":"set","name":"set vt.request_length = qidx","xml":"<set>\n<parameter name='vt.request_length' value='`$qidx`' />\n","comments":"","x":1439.5869789123535,"y":3181.57943969965,"z":"c5a1df11.bcdf6","wires":[]},{"id":"d2f81f9.4c4e3e","type":"set","name":"set ss.vt.param[].index","xml":"<set>\n<parameter name='ss.vt.param[$qidx].index' value='`$pidx`' />\n","comments":"","x":1425.8369598388672,"y":2931.924597263336,"z":"c5a1df11.bcdf6","wires":[]},{"id":"b19132a.31666d","type":"set","name":"set ss.vt.param_length = qidx","xml":"<set>\n<parameter name='ss.vt.param_length' value='`$qidx`' />\n","comments":"","x":1445.134578704834,"y":3225.531784057617,"z":"c5a1df11.bcdf6","wires":[]},{"id":"4e8f979d.ebee18","type":"outcome","name":"vlan-type","xml":"<outcome value='vlan-type'>\n","comments":"","outputs":1,"x":1979.5512237548828,"y":3015.376998901367,"z":"c5a1df11.bcdf6","wires":[["65b697c8.ea5298"]]},{"id":"65b697c8.ea5298","type":"set","name":"set vt.request[].vlan-type","xml":"<set>\n<parameter name='vt.request[$qidx].vlan-type' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n","comments":"","x":2273.551223754883,"y":3015.126998901367,"z":"c5a1df11.bcdf6","wires":[]},{"id":"4dbfd277.cce03c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"Failed to unassign vlan-tag from mS\" />\n","comments":"","x":1660.047264099121,"y":3382.380973815918,"z":"c5a1df11.bcdf6","wires":[]},{"id":"ea689bee.78fbb8","type":"execute","name":"execute RestApiCallNode","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.ss.mS.vlan.tag.unassign.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.vt.mS.url + $tmp.ss-vlan-tag-url`' />\n    <parameter name='restapiUser' value='`$prop.vt.mS.user`' />\n    <parameter name='restapiPassword' value='`$prop.vt.mS.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name=\"responsePrefix\" value=\"vtResp\" />\n\n","comments":"","outputs":1,"x":1039.7142906188965,"y":3410.194941520691,"z":"c5a1df11.bcdf6","wires":[["c130c3b2.9e2b5","4b48cefb.6c48b","747e901.de66d7"]]},{"id":"c130c3b2.9e2b5","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1287.7363662719727,"y":3410.193181037903,"z":"c5a1df11.bcdf6","wires":[["3d004106.9a5e4e"]]},{"id":"4b48cefb.6c48b","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1278.7364540100098,"y":3322.978931427002,"z":"c5a1df11.bcdf6","wires":[["3d004106.9a5e4e"]]},{"id":"747e901.de66d7","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1283.9151039123535,"y":3510.7644987106323,"z":"c5a1df11.bcdf6","wires":[["c2e9d6a5.7c8678"]]},{"id":"3d004106.9a5e4e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1478.440227508545,"y":3322.6231298446655,"z":"c5a1df11.bcdf6","wires":[["4dbfd277.cce03c","dcdb3baa.a1d1f8"]]},{"id":"26166c21.e5b684","type":"set","name":"set resource-resolution-data.status = FAILED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n","comments":"","x":2463.297779083252,"y":3366.5236797332764,"z":"c5a1df11.bcdf6","wires":[]},{"id":"dcdb3baa.a1d1f8","type":"for","name":"for i in ss.vt.param_length","xml":"<for index=\"i\" start=\"0\" end=\"`$ss.vt.param_length`\">","comments":"","outputs":1,"x":2090.369129180908,"y":3322.27387714386,"z":"c5a1df11.bcdf6","wires":[["26166c21.e5b684","566901e3.08c93"]]},{"id":"c2e9d6a5.7c8678","type":"switchNode","name":"switch: vtResp.error-code","xml":"<switch test='`$vtResp.error-code`'>\n","comments":"","outputs":1,"x":1488.595272064209,"y":3510.261589050293,"z":"c5a1df11.bcdf6","wires":[["fd32fdd5.c3b37","5a7175c1.4c464c"]]},{"id":"fd32fdd5.c3b37","type":"outcomeTrue","name":"500","xml":"<outcome value='500'>\n","comments":"","outputs":1,"x":1700.8452682495117,"y":3510.011589050293,"z":"c5a1df11.bcdf6","wires":[["2fd3d5cd.f9c07a"]]},{"id":"5a7175c1.4c464c","type":"outcomeTrue","name":"200","xml":"<outcome value='200'>\n","comments":"","outputs":1,"x":1702.345272064209,"y":3552.761589050293,"z":"c5a1df11.bcdf6","wires":[["8aa29f04.ea608"]]},{"id":"c17e5f2d.afefc","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500'/>\n<parameter name='error-message' value=\"`'Encountered error while unassigning mS-vlan-tag with error-code = ' + $vtResp.error-code + ' and error-message = ' + $vtResp.error-message`\" />\n","comments":"","x":2037.7618598937988,"y":3509.428256034851,"z":"c5a1df11.bcdf6","wires":[]},{"id":"566901e3.08c93","type":"set","name":"set vt-index","xml":"<set>\n<parameter name='vt-index' value='`$ss.vt.param[$i].index`' />\n","comments":"","x":2358.761890411377,"y":3321.3450889587402,"z":"c5a1df11.bcdf6","wires":[]},{"id":"7b02b008.a930e","type":"for","name":"for i in ss.vt.param_length","xml":"<for silentFailure='true' index=\"i\" start=\"0\" end=\"`$ss.vt.param_length`\">","comments":"","outputs":1,"x":2142.0359325408936,"y":3552.6903836727142,"z":"c5a1df11.bcdf6","wires":[["d4af1b82.d2a138","1dd207a0.07b2f8"]]},{"id":"8aa29f04.ea608","type":"for","name":"for oidx in output_length","xml":"<for silentFailure='true' index=\"oidx\" start=\"0\" end=\"`$vtResp.output_length`\">","comments":"","outputs":1,"x":1891.571460723877,"y":3552.9045009613037,"z":"c5a1df11.bcdf6","wires":[["7b02b008.a930e"]]},{"id":"d4af1b82.d2a138","type":"set","name":"set vt-index","xml":"<set>\n<parameter name='vt-index' value='`$ss.vt.param[$i].index`' />\n","comments":"","x":2372.8214626312256,"y":3552.904497861862,"z":"c5a1df11.bcdf6","wires":[]},{"id":"1dd207a0.07b2f8","type":"set","name":"set resource-resolution-data.status = DELETED","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' \n\tvalue='DELETED' />\n","comments":"","x":2478.2380714416504,"y":3607.571020126343,"z":"c5a1df11.bcdf6","wires":[]},{"id":"2fd3d5cd.f9c07a","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1860.2379417419434,"y":3509.904607772827,"z":"c5a1df11.bcdf6","wires":[["c17e5f2d.afefc","dcdb3baa.a1d1f8"]]},{"id":"2dac7293.22fd2e","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2597.4406356811523,"y":2425.845259666443,"z":"c5a1df11.bcdf6","wires":[["e0dd47c2.5e32c8","99bf5b7d.b52968","495d7152.4efb9"]]},{"id":"becd6b79.0916e8","type":"set","name":"set Test vtResp","xml":"<set>\n<parameter name='vtResp.output_length' value='2' />\n<parameter name='vtResp.output[0].resource-name' value='vlan-tag-1' />\n<parameter name='vtResp.output[0].resource-value' value='[3553]' />\n<parameter name='vtResp.output[0].resource-vlan-role' value='outer-tag' />\n<parameter name='vtResp.output[0].stored-elements_length' value='1' />\n<parameter name='vtResp.output[0].stored-elements[0].vlan-uuid' value='vlan-uuid-0' />\n<parameter name='vtResp.output[0].stored-elements[0].vlantag-name' value='VPE-Cust' />\n<parameter name='vtResp.output[0].stored-elements[0].vlantag-value' value='3553' />\n<parameter name='vtResp.output[0].stored-elements[0].element-vlan-role' value='' />\n\n<parameter name='vtResp.output[1].resource-name' value='vlan-tag-2' />\n<parameter name='vtResp.output[1].resource-value' value='[  3503, 4001, 4002 ]' />\n<parameter name='vtResp.output[1].resource-vlan-role' value='' />\n<parameter name='vtResp.output[1].stored-elements_length' value='3' />\n<parameter name='vtResp.output[1].stored-elements[0].vlan-uuid' value='vlan-uuid-1' />\n<parameter name='vtResp.output[1].stored-elements[0].vlantag-name' value='VPE-Cust-Outer' />\n<parameter name='vtResp.output[1].stored-elements[0].vlantag-value' value='3503' />\n<parameter name='vtResp.output[1].stored-elements[0].element-vlan-role' value='outer-tag' />\n<parameter name='vtResp.output[1].stored-elements[1].vlan-uuid' value='vlan-uuid-2' />\n<parameter name='vtResp.output[1].stored-elements[1].vlantag-name' value='VPE-Core1' />\n<parameter name='vtResp.output[1].stored-elements[1].vlantag-value' value='4001' />\n<parameter name='vtResp.output[1].stored-elements[1].element-vlan-role' value='outer-tag' />\n<parameter name='vtResp.output[1].stored-elements[2].vlan-uuid' value='vlan-uuid-3' />\n<parameter name='vtResp.output[1].stored-elements[2].vlantag-name' value='VPE-Core2' />\n<parameter name='vtResp.output[1].stored-elements[2].vlantag-value' value='4002' />\n<parameter name='vtResp.output[1].stored-elements[2].element-vlan-role' value='outer-tag' />\n<parameter name='vtResp.error-code' value='200' />\n<parameter name='vtResp.error-message' value='Success' />","comments":"","x":1015.2380676269531,"y":150.23808002471924,"z":"c5a1df11.bcdf6","wires":[]},{"id":"b0852bbf.7b6948","type":"set","name":"set status = SUCCESS","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' \n\tvalue='SUCCESS' />\n","comments":"","x":2113.3334579467773,"y":2304.5245084762573,"z":"c5a1df11.bcdf6","wires":[]},{"id":"c238ab9f.a2f118","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1662.3810806274414,"y":2601.666923522949,"z":"c5a1df11.bcdf6","wires":[["97fa42c5.a3d32","1c9a359e.8341da"]]},{"id":"f7250d31.18475","type":"set","name":"set vf-module-assignments.vms.vm[0]","xml":"<set>\n<parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-type' value = '`$ss.param.vm-type`' />\n<parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-invariant-uuid' value = '`$ss.param.vnfc-model-invariant-uuid`' />\n<parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-customization-uuid' value = '`$ss.param.vnfc-model-customization-uuid`' />\n<parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-version' value = '`$ss.param.vnfc-model-version`' />\n<parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-name' value = '`$ss.param.vnfc-name`' />\n","comments":"","x":999.2862014770508,"y":1904.0472078323364,"z":"c5a1df11.bcdf6","wires":[]},{"id":"e714249e.620908","type":"switchNode","name":"switch: param[].name","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name`'>\n","comments":"","outputs":1,"x":1189.285846710205,"y":1425.6186981201172,"z":"c5a1df11.bcdf6","wires":[["879b8523.4eaea8","ce6e3eb8.4afc","245b8001.a3dd6","1ad04a05.608986","325e60bd.d904","dc7c3752.f236c8","6a9c840e.71ad0c"]]},{"id":"879b8523.4eaea8","type":"outcome","name":"nfc-function","xml":"<outcome value='nfc-function'>\n","comments":"","outputs":1,"x":1425.035846710205,"y":1425.8686981201172,"z":"c5a1df11.bcdf6","wires":[["8cf3e85f.233268"]]},{"id":"8cf3e85f.233268","type":"set","name":"set ss.param.nfc-function, index","xml":"<set>\n<parameter name='ss.param.nfc-function' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />\n<parameter name='ss.param.nfc-function-index' value='`$pidx`' />\n","comments":"","x":1667.2858543395996,"y":1426.1186666488647,"z":"c5a1df11.bcdf6","wires":[]},{"id":"ce6e3eb8.4afc","type":"outcome","name":"nfc-naming-code","xml":"<outcome value='nfc-naming-code'>\n","comments":"","outputs":1,"x":1442.535846710205,"y":1468.6186971664429,"z":"c5a1df11.bcdf6","wires":[["f4ed93e9.d8179"]]},{"id":"f4ed93e9.d8179","type":"set","name":"set ss.param.nfc-naming-code, index","xml":"<set>\n<parameter name='ss.param.nfc-naming-code' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />\n<parameter name='ss.param.nfc-naming-code-index' value='`$pidx`' />\n","comments":"","x":1729.7857856750488,"y":1468.618664741516,"z":"c5a1df11.bcdf6","wires":[]},{"id":"245b8001.a3dd6","type":"outcome","name":"vnfc-model-customization-uuid","xml":"<outcome value='vnfc-model-customization-uuid'>\n","comments":"","outputs":1,"x":1486.2858543395996,"y":1508.6186981201172,"z":"c5a1df11.bcdf6","wires":[["43ab1dd5.9e0374"]]},{"id":"43ab1dd5.9e0374","type":"set","name":"set ss.param.vnfc-model-customization-uuid, index","xml":"<set>\n<parameter name='ss.param.vnfc-model-customization-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />\n<parameter name='ss.param.vnfc-model-customization-uuid-index' value='`$pidx`' />\n","comments":"","x":1840.5357933044434,"y":1508.6186656951904,"z":"c5a1df11.bcdf6","wires":[]},{"id":"1ad04a05.608986","type":"outcome","name":"vnfc-model-invariant-uuid","xml":"<outcome value='vnfc-model-invariant-uuid'>\n","comments":"","outputs":1,"x":1471.285846710205,"y":1549.8686990737915,"z":"c5a1df11.bcdf6","wires":[["67ac6095.3d349"]]},{"id":"67ac6095.3d349","type":"set","name":"set ss.param.vnfc-model-invariant-uuid, index","xml":"<set>\n<parameter name='ss.param.vnfc-model-invariant-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />\n<parameter name='ss.param.vnfc-model-invariant-uuid-index' value='`$pidx`' />\n","comments":"","x":1789.5357856750488,"y":1549.8686666488647,"z":"c5a1df11.bcdf6","wires":[]},{"id":"325e60bd.d904","type":"outcome","name":"vnfc-model-version","xml":"<outcome value='vnfc-model-version'>\n","comments":"","outputs":1,"x":1453.785846710205,"y":1592.3687000274658,"z":"c5a1df11.bcdf6","wires":[["53a9b2f0.34f35c"]]},{"id":"53a9b2f0.34f35c","type":"set","name":"set ss.param.vnfc-model-version, index","xml":"<set>\n<parameter name='ss.param.vnfc-model-version' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />\n<parameter name='ss.param.vnfc-model-version-index' value='`$pidx`' />\n","comments":"","x":1772.0357856750488,"y":1592.368667602539,"z":"c5a1df11.bcdf6","wires":[]},{"id":"dc7c3752.f236c8","type":"outcome","name":"vm-type","xml":"<outcome value='vm-type'>\n","comments":"","outputs":1,"x":1422.535846710205,"y":1634.8687000274658,"z":"c5a1df11.bcdf6","wires":[["da4944ab.6faa28"]]},{"id":"da4944ab.6faa28","type":"set","name":"set ss.param.vm-type, index","xml":"<set>\n<parameter name='ss.param.vm-type' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />\n<parameter name='ss.param.vm-type-index' value='`$pidx`' />\n","comments":"","x":1664.7858543395996,"y":1635.1186685562134,"z":"c5a1df11.bcdf6","wires":[]},{"id":"6b63ece1.01f564","type":"for","name":"for pidx in param_length","xml":"<for silentFailure='true' index=\"pidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`\">","comments":"","outputs":1,"x":960.563549041748,"y":1425.9005603790283,"z":"c5a1df11.bcdf6","wires":[["e714249e.620908"]]},{"id":"6a9c840e.71ad0c","type":"outcome","name":"vnfc-name","xml":"<outcome value='vnfc-name'>\n","comments":"","outputs":1,"x":1429.285987854004,"y":1679.7613897323608,"z":"c5a1df11.bcdf6","wires":[["77f5369e.b54a78"]]},{"id":"772d58d9.bfa278","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":720.3808670043945,"y":1425.7142057418823,"z":"c5a1df11.bcdf6","wires":[["6b63ece1.01f564","f7250d31.18475","c7cab06d.300ff","4b2c3442.0d70dc","53308e13.c73d9","b1d88b31.cd6c28"]]},{"id":"e4de9630.6cfdf8","type":"switchNode","name":"switch: param[].name == ss.param.vnfc-name-unresolved-value","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$x].name == $ss.param.vnfc-name-unresolved-value`'>\n","comments":"","outputs":1,"x":2373.8095703125,"y":1863.857084274292,"z":"c5a1df11.bcdf6","wires":[["b987183c.4d8708"]]},{"id":"4b825eb3.66c09","type":"for","name":"for x in param_length","xml":"<for silentFailure='true' index=\"x\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`\">","comments":"","outputs":1,"x":2015.087272644043,"y":1864.1389465332031,"z":"c5a1df11.bcdf6","wires":[["e4de9630.6cfdf8"]]},{"id":"77f5369e.b54a78","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1621.8095016479492,"y":1679.7143697738647,"z":"c5a1df11.bcdf6","wires":[["73213585.8579fc","ba34447d.975e58","4e440a8e.caaf44","a71d9c7c.53704","fdcea11c.d13c2","5d43be49.ec94"]]},{"id":"73213585.8579fc","type":"execute","name":"replace ${ with \"\"","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$ss.param.vnfc-name-unresolved-value`\" />\n\t<parameter name=\"target\" value=\"${\"/>\n\t<parameter name=\"replacement\" value=\"\"/>\n\t<parameter name=\"outputPath\" value=\"ss.param.vnfc-name-unresolved-value\"/>\n","comments":"","outputs":1,"x":1839.5238571166992,"y":1724.7143049240112,"z":"c5a1df11.bcdf6","wires":[[]]},{"id":"ba34447d.975e58","type":"set","name":"set ss.param.vnfc-name-unresolved-value","xml":"<set>\n<parameter name='ss.param.vnfc-name-unresolved-value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />\n","comments":"","x":1915.238166809082,"y":1679.4285221099854,"z":"c5a1df11.bcdf6","wires":[]},{"id":"4e440a8e.caaf44","type":"execute","name":"replace } with \"\"","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$ss.param.vnfc-name-unresolved-value`\" />\n\t<parameter name=\"target\" value=\"}\"/>\n\t<parameter name=\"replacement\" value=\"\"/>\n\t<parameter name=\"outputPath\" value=\"ss.param.vnfc-name-unresolved-value\"/>\n","comments":"","outputs":1,"x":1838.0953216552734,"y":1770.0001058578491,"z":"c5a1df11.bcdf6","wires":[[]]},{"id":"b987183c.4d8708","type":"outcomeFalse","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2685.2379837036133,"y":1863.9999923706055,"z":"c5a1df11.bcdf6","wires":[["593a5054.42dfe"]]},{"id":"a71d9c7c.53704","type":"record","name":"record ss.param.vnfc-name-unresolved-value","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"`'ss.param.vnfc-name-unresolved-value = ' + $ss.param.vnfc-name-unresolved-value`\"/>","comments":"","outputs":1,"x":1932.380958557129,"y":1818.5714979171753,"z":"c5a1df11.bcdf6","wires":[[]]},{"id":"fdcea11c.d13c2","type":"switchNode","name":"switch: ss.param.vnfc-name","xml":"<switch test='`$ss.param.vnfc-name`'>\n","comments":"","outputs":1,"x":1879.5236892700195,"y":1971.4284772872925,"z":"c5a1df11.bcdf6","wires":[["4d66af.3c90395"]]},{"id":"4d66af.3c90395","type":"outcomeFalse","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2089.5237426757812,"y":1971.8570470809937,"z":"c5a1df11.bcdf6","wires":[["d5c360c7.652b6"]]},{"id":"3f723980.eed846","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Unable to resolve vnfc-name; ' + $error-message`\" />\n","comments":"","x":2458.440383911133,"y":2034.0713176727295,"z":"c5a1df11.bcdf6","wires":[]},{"id":"34a5c812.fd5a58","type":"set","name":"set ss.param.vnfc-name, index","xml":"<set>\n<parameter name='ss.param.vnfc-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$x].value`' />\n<parameter name='ss.param.vnfc-name-index' value='`$x`' />\n","comments":"","x":3092.952362060547,"y":1863.4760303497314,"z":"c5a1df11.bcdf6","wires":[]},{"id":"593a5054.42dfe","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2833.2738189697266,"y":1863.6075477600098,"z":"c5a1df11.bcdf6","wires":[["34a5c812.fd5a58","e2e18b0e.d74708"]]},{"id":"a86eaad7.3ed688","type":"execute","name":"generate vlan-tag url, replace action","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.ss-mS-vlan-tag-assign`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-vlan-tag-url\"/>\n    <parameter name=\"target\" value=\"{action}\"/>\n    <parameter name=\"replacement\" value=\"`$ss.capability-action`\"/>\n","comments":"","outputs":1,"x":1072.1428756713867,"y":998.5714044570923,"z":"c5a1df11.bcdf6","wires":[[]]},{"id":"6a23991a.0d4c58","type":"execute","name":"generate vlan-tag url, replace action","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.ss-mS-vlan-tag-assign`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-vlan-tag-url\"/>\n    <parameter name=\"target\" value=\"{action}\"/>\n    <parameter name=\"replacement\" value=\"`$ss.capability-action`\"/>\n","comments":"","outputs":1,"x":1070.2380905151367,"y":3260.2379293441772,"z":"c5a1df11.bcdf6","wires":[[]]},{"id":"5d43be49.ec94","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1814.523826599121,"y":1864.095332145691,"z":"c5a1df11.bcdf6","wires":[["4b825eb3.66c09","b42d5881.2b1ed8"]]},{"id":"b42d5881.2b1ed8","type":"returnSuccess","name":"CATCH BREAK","xml":"<return status='success'>\n","comments":"","x":1971.6667175292969,"y":1910.8095293045044,"z":"c5a1df11.bcdf6","wires":[]},{"id":"e2e18b0e.d74708","type":"returnFailure","name":"BREAK","xml":"<return status='failure'>","comments":"","x":3020.6666107177734,"y":1905.095191001892,"z":"c5a1df11.bcdf6","wires":[]},{"id":"4b2c3442.0d70dc","type":"set","name":"set vm_length, vnfc-names_length = 1","xml":"<set>\n<parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length' value = '1' />\n<parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names_length' value = '1' />\n","comments":"","x":1000.8095779418945,"y":1950.8095979690552,"z":"c5a1df11.bcdf6","wires":[]},{"id":"53308e13.c73d9","type":"set","name":"set vnfc-network-data_length","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length' \n\tvalue='`$ss.vt.param_length`' />\n","comments":"","x":970.238208770752,"y":2375.0953760147095,"z":"c5a1df11.bcdf6","wires":[]},{"id":"b1d88b31.cd6c28","type":"set","name":"set vlan-data_length","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data_length' \n\tvalue='`$vtResp.output[$oidx].stored-elements_length`' />\n","comments":"","x":944.0951843261719,"y":2423.6667308807373,"z":"c5a1df11.bcdf6","wires":[]},{"id":"d5c360c7.652b6","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":2266.666702270508,"y":1972.2500305175781,"z":"c5a1df11.bcdf6","wires":[["3f723980.eed846","b7656843.f345a8"]]},{"id":"358d341e.d20a2c","type":"execute","name":"execute RestApiCallNode","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.ss.mS.vlan.tag.unassign.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.vt.mS.url + $tmp.ss-vlan-tag-url`' />\n    <parameter name='restapiUser' value='`$prop.vt.mS.user`' />\n    <parameter name='restapiPassword' value='`$prop.vt.mS.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name=\"responsePrefix\" value=\"vtResp\" />\n\n","comments":"","outputs":1,"x":2699.8339614868164,"y":1591.564058303833,"z":"c5a1df11.bcdf6","wires":[["9cb28e84.afd0b","3e7513cc.71a9ec","39f0c9cb.7d6346"]]},{"id":"9cb28e84.afd0b","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2941.5699005126953,"y":1591.9910078048706,"z":"c5a1df11.bcdf6","wires":[["b0ad69bc.7aa678"]]},{"id":"3e7513cc.71a9ec","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2935.427074432373,"y":1543.348123550415,"z":"c5a1df11.bcdf6","wires":[["b0ad69bc.7aa678"]]},{"id":"39f0c9cb.7d6346","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2938.320037841797,"y":1643.5623474121094,"z":"c5a1df11.bcdf6","wires":[["7b2bc102.0d47c"]]},{"id":"7b2bc102.0d47c","type":"switchNode","name":"switch: vtResp.error-code","xml":"<switch test='`$vtResp.error-code`'>\n","comments":"","outputs":1,"x":3143.0002059936523,"y":1643.05943775177,"z":"c5a1df11.bcdf6","wires":[["cbc24f0c.5e675","d9f9770e.b72c18"]]},{"id":"cbc24f0c.5e675","type":"outcomeTrue","name":"500","xml":"<outcome value='500'>\n","comments":"","outputs":1,"x":3355.250202178955,"y":1642.80943775177,"z":"c5a1df11.bcdf6","wires":[["eb229cf3.8888"]]},{"id":"d9f9770e.b72c18","type":"outcomeTrue","name":"200","xml":"<outcome value='200'>\n","comments":"","outputs":1,"x":3358.1788444519043,"y":1692.702341079712,"z":"c5a1df11.bcdf6","wires":[["732f338c.72a28c"]]},{"id":"83274cf5.9d455","type":"for","name":"for i in ss.vt.param_length","xml":"<for silentFailure='true' index=\"i\" start=\"0\" end=\"`$ss.vt.param_length`\">","comments":"","outputs":1,"x":3966.4409503936768,"y":1691.6311852931976,"z":"c5a1df11.bcdf6","wires":[["a7dedcdc.318b7","fb4ccfe4.96e73"]]},{"id":"9bf5c017.a8787","type":"for","name":"for oidx in output_length","xml":"<for silentFailure='true' index=\"oidx\" start=\"0\" end=\"`$vtResp.output_length`\">","comments":"","outputs":1,"x":3715.97647857666,"y":1691.845302581787,"z":"c5a1df11.bcdf6","wires":[["83274cf5.9d455"]]},{"id":"a7dedcdc.318b7","type":"set","name":"set vt-index","xml":"<set>\n<parameter name='vt-index' value='`$ss.vt.param[$i].index`' />\n","comments":"","x":4197.226480484009,"y":1691.8452994823456,"z":"c5a1df11.bcdf6","wires":[]},{"id":"fb4ccfe4.96e73","type":"set","name":"set resource-resolution-data.status = PENDING","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' \n\tvalue='PENDING' />\n","comments":"","x":4302.643089294434,"y":1746.5118217468262,"z":"c5a1df11.bcdf6","wires":[]},{"id":"10a2e287.6a5c1d","type":"execute","name":"generate vlan-tag url, replace action","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.ss-mS-vlan-tag-assign`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-vlan-tag-url\"/>\n    <parameter name=\"target\" value=\"{action}\"/>\n    <parameter name=\"replacement\" value=\"unassign\"/>\n","comments":"","outputs":1,"x":2726.928882598877,"y":1458.7500133514404,"z":"c5a1df11.bcdf6","wires":[[]]},{"id":"b7656843.f345a8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2456.155227661133,"y":1396.5000190734863,"z":"c5a1df11.bcdf6","wires":[["10a2e287.6a5c1d","358d341e.d20a2c","5c38977d.268248"]]},{"id":"d386544e.9b0ca8","type":"comment","name":"ROLLBACK vlan-tags","info":"","comments":"","x":2402.9166946411133,"y":1352.5000190734863,"z":"c5a1df11.bcdf6","wires":[]},{"id":"5c38977d.268248","type":"record","name":"record ROLLBACK","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"ROLLBACK: self-serve-mS-vlan-tag-assign\"/>","comments":"","outputs":1,"x":2672.916702270508,"y":1396.7500185966492,"z":"c5a1df11.bcdf6","wires":[[]]},{"id":"2d993438.c09e0c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":3221.6667137145996,"y":2470.7500343322754,"z":"c5a1df11.bcdf6","wires":[["b7656843.f345a8","8b5bee81.6266f"]]},{"id":"b0ad69bc.7aa678","type":"set","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" \n\tvalue=\"Failed to rollback vlan-tag from mS. vlan-tag MUST BE ROLLBACK MANUALLY!!!\" />\n","comments":"","x":3160.380832672119,"y":1543.4643268585205,"z":"c5a1df11.bcdf6","wires":[]},{"id":"eb229cf3.8888","type":"set","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" \n\tvalue=\"`'Received error from mS with error-code = ' + $vtResp.error-code + ' and error-message = ' + $vtResp.error-message + '; vlan-tag MUST BE ROLLBACK MANUALLY!!!'`\" />\n","comments":"","x":3537.8093795776367,"y":1642.1785907745361,"z":"c5a1df11.bcdf6","wires":[]},{"id":"732f338c.72a28c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3506.666633605957,"y":1692.3214302062988,"z":"c5a1df11.bcdf6","wires":[["9bf5c017.a8787","833b0ff7.9e5fe"]]},{"id":"833b0ff7.9e5fe","type":"set","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" \n\tvalue=\"vlan tags were rolled back from mS successfully.\" />\n","comments":"","x":3705.238166809082,"y":1774.464406967163,"z":"c5a1df11.bcdf6","wires":[]},{"id":"2b906d3f.26afd2","type":"set","name":"set Test Inputs","xml":"<!--\n<set>\n<parameter name='vnf-index' value='0' />\n<parameter name='vf-module-index' value='0' />\n<parameter name='ss.capability-name' value='mS-vlan-tag-assign' />\n<parameter name='ss.capability-action' value='assign' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vnf-topology.sdnc-generated-cloud-resources' value='true' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-topology.sdnc-generated-cloud-resources' value = 'true' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param_length' value = '11' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].name' value = 'vmxvpfe_name_0' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].value' value = 'bogus-vnfc-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].name' value = 'vnfc-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].value' value = '${vmxvpfe_name_0}' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[2].name' value = 'vm_name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[2].value' value = 'bogus-vnfc-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[3].name' value = 'vm-type' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[3].value' value = 'oam' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[4].name' value = 'nfc-function' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[4].value' value = 'data' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[5].name' value = 'nfc-naming-code' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[5].value' value = 'dummy-naming-code' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[6].name' value = 'vnfc-model-customization-uuid' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[6].value' value = 'bbbb-99999' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[7].name' value = 'vnfc-model-invariant-uuid' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[7].value' value = 'aaaaa-10000' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[8].name' value = 'vnfc-model-version' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[8].value' value = 'model1' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].name' value = 'vlan-tag-1' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].value' value = '${vlan-tag-1v}' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[0].name' value = 'policy-instance-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[0].value' value = 'JQIN1810SRIOV.Config_MS_SRIOV_VlanTag_1810_ADIOD_VPE.*' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[1].name' value = 'resource-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[1].value' value = 'vlan-tag-1' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[2].name' value = 'resource-value' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[2].value' value = '' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[3].name' value = 'scope-id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[3].value' value = 'MTCLL2238F' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[4].name' value = 'vlan-tag-key' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[4].value' value = 'dvncom4003' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[5].name' value = 'vlan-type' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[5].value' value = 'vlan-id-outer' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[6].name' value = 'vnfc-network-role' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[6].value' value = 'network-role-1' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key_length' value = '7' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.status' value = 'PENDING' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.capability-name' value = 'mS-vlan-tag-assign' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].name' value = 'vlan-tag-2' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].value' value = '[3503, 4001, 4002]' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[0].name' value = 'policy-instance-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[0].value' value = 'JQIN1810SRIOV.Config_MS_SRIOV_VlanTag_1810_ADIOD_VPE.*' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[1].name' value = 'resource-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[1].value' value = 'vlan-tag-2' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[2].name' value = 'resource-value' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[2].value' value = '[3503, 4001, 4002]' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[3].name' value = 'scope-id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[3].value' value = 'MTCLL2238F' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[4].name' value = 'vlan-tag-key' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[4].value' value = 'dvncom4003' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[5].name' value = 'vlan-type' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[5].value' value = 'vlan-id-filter' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[6].name' value = 'vnfc-network-role' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[6].value' value = 'network-role-2' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key_length' value = '7' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.status' value = 'PENDING' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.capability-name' value = 'mS-vlan-tag-assign' />\n-->\n<set>\n<parameter name='vnf-index' value='0' />\n<parameter name='vf-module-index' value='0' />\n<parameter name='ss.capability-name' value='mS-vlan-tag-assign' />\n<parameter name='ss.capability-action' value='assign' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vnf-topology.sdnc-generated-cloud-resources' value='true' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-topology.sdnc-generated-cloud-resources' value = 'true' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param_length' value = '11' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].name' value = 'vmxvpfe_name_0' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[0].value' value = 'bogus-vnfc-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].name' value = 'vnfc-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[1].value' value = '${vmxvpfe_name_0}' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[2].name' value = 'vm_name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[2].value' value = 'bogus-vnfc-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[3].name' value = 'vm-type' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[3].value' value = 'oam' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[4].name' value = 'nfc-function' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[4].value' value = 'data' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[5].name' value = 'nfc-naming-code' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[5].value' value = 'dummy-naming-code' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[6].name' value = 'vnfc-model-customization-uuid' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[6].value' value = 'bbbb-99999' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[7].name' value = 'vnfc-model-invariant-uuid' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[7].value' value = 'aaaaa-10000' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[8].name' value = 'vnfc-model-version' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[8].value' value = 'model1' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].name' value = 'att_vf_vlan_filter_vce_sriov2_0' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].value' value = '${att_vf_vlan_filter_vce_sriov2_0}' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[0].name' value = 'policy-instance-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[0].value' value = 'SDNC_Policy.Config_MS_SRIOV_VlanTag_1810_VNAT.5.xml' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[1].name' value = 'resource-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[1].value' value = 'att_vf_vlan_filter_vce_sriov2_0' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[2].name' value = 'resource-value' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[2].value' value = '${att_vf_vlan_filter_vce_sriov2_0}' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[3].name' value = 'scope-id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[3].value' value = '${aic-clli}-att_vf_vlan_filter_vce_sriov2_0-att_vf_vlan_filter_vce_sriov2_0' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[4].name' value = 'vlan-tag-key' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[4].value' value = 'mtsnj046vn2001vce-att_vf_vlan_filter_vce_sriov2_0' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[5].name' value = 'vlan-type' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[5].value' value = 'vlan-id-filter' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[6].name' value = 'vnfc-network-role' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key[6].value' value = 'VnatSriovProviderNetwork.SR_IOV_Provider2_2' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.resource-key_length' value = '7' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.status' value = 'PENDING' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[9].resource-resolution-data.capability-name' value = 'mS-vlan-tag-assign' />\n\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].name' value = 'att_vf_vlan_filter_vce_sriov1_0\"' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].value' value = '${att_vf_vlan_filter_vce_sriov1_0}' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[0].name' value = 'policy-instance-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[0].value' value = 'SDNC_Policy.Config_MS_SRIOV_VlanTag_1810_VNAT.5.xml' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[1].name' value = 'resource-name' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[1].value' value = 'att_vf_vlan_filter_vce_sriov1_0' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[2].name' value = 'resource-value' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[2].value' value = '${att_vf_vlan_filter_vce_sriov1_0}' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[3].name' value = 'scope-id' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[3].value' value = '${aic-clli}-att_vf_vlan_filter_vce_sriov1_0-att_vf_vlan_filter_vce_sriov1_0' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[4].name' value = 'vlan-tag-key' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[4].value' value = 'mtsnj046vn2001vce-att_vf_vlan_filter_vce_sriov1_0' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[5].name' value = 'vlan-type' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[5].value' value = 'vlan-id-filter' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[6].name' value = 'vnfc-network-role' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key[6].value' value = 'VnatSriovProviderNetwork.SR_IOV_Provider2_1' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.resource-key_length' value = '7' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.status' value = 'PENDING' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.param[10].resource-resolution-data.capability-name' value = 'mS-vlan-tag-assign' />","comments":"","x":1009.7619400024414,"y":46.84523963928223,"z":"c5a1df11.bcdf6","wires":[]},{"id":"da1b0e5e.d95f1","type":"execute","name":"execute PropertiesNode","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":1040.1429290771484,"y":86.60715103149414,"z":"c5a1df11.bcdf6","wires":[[]]},{"id":"4ec63b3c.59f254","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":840.2380981445312,"y":85.79762268066406,"z":"c5a1df11.bcdf6","wires":[["2b906d3f.26afd2","da1b0e5e.d95f1"]]},{"id":"98412ecc.da23c","type":"set","name":"set pathname for context logging","xml":"<set>\n<parameter name='pathname' \n\tvalue=\"`'/var/tmp/ss-mS-vlan-tag-' + $ss.capability-action + '-' + \n\t$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.vf-module-id + '.log'`\" />\n","comments":"","x":424.9999542236328,"y":3593.3330698013306,"z":"c5a1df11.bcdf6","wires":[]},{"id":"c502d79c.b06078","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"DONE: mS-vlan-tag-assign\"/>\n\n","comments":"","outputs":1,"x":346.6666717529297,"y":3744.9997911453247,"z":"c5a1df11.bcdf6","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-netbox-ip-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-netbox-ip-assign.json
new file mode 100644
index 0000000..b83f7f5
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-netbox-ip-assign.json
@@ -0,0 +1,1849 @@
+[
+    {
+        "id": "39b306a6.ed3522",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 100,
+        "y": 63.57143306732178,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "79f0b111.72d778"
+            ]
+        ]
+    },
+    {
+        "id": "1b629c80.7881d4",
+        "type": "method",
+        "name": "method self-serve-netbox-ip-assign",
+        "xml": "<method rpc='self-serve-netbox-ip-assign' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 235.7857208251953,
+        "y": 120.69842147827148,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "56a052c7.058c9c"
+            ]
+        ]
+    },
+    {
+        "id": "56a052c7.058c9c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 129.32144165039062,
+        "y": 207.0000400543213,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "90086e75.cd6fc",
+                "3efa365b.993a9a",
+                "7e104793.732a5",
+                "f91de1d4.ae1798",
+                "2734c8ea.c23828"
+            ]
+        ]
+    },
+    {
+        "id": "79f0b111.72d778",
+        "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": 372.8571472167969,
+        "y": 63,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "1b629c80.7881d4"
+            ]
+        ]
+    },
+    {
+        "id": "90086e75.cd6fc",
+        "type": "switchNode",
+        "name": "switch: ss.capability-name",
+        "xml": "<switch test='`$ss.capability-name`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 387.4999694824219,
+        "y": 210.82144165039062,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "b10180d1.330c9"
+            ]
+        ]
+    },
+    {
+        "id": "b10180d1.330c9",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 612.4999923706055,
+        "y": 211.32144021987915,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "66f17fa3.bde278"
+            ]
+        ]
+    },
+    {
+        "id": "66f17fa3.bde278",
+        "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": 772.4166641235352,
+        "y": 211.43253898620605,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "3efa365b.993a9a",
+        "type": "switchNode",
+        "name": "switch: ss.capability-action",
+        "xml": "<switch test='`$ss.capability-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 390.74996185302734,
+        "y": 286.82143688201904,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "8acb2cf7.4ff328"
+            ]
+        ]
+    },
+    {
+        "id": "8acb2cf7.4ff328",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 614.2499618530273,
+        "y": 287.07143688201904,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "307ed0c1.fb7998"
+            ]
+        ]
+    },
+    {
+        "id": "307ed0c1.fb7998",
+        "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": 774.166633605957,
+        "y": 287.18253564834595,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "7e104793.732a5",
+        "type": "call",
+        "name": "call self-serve-capability-param-resolution",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 441.41680908203125,
+        "y": 361.82147216796875,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "47c181e5.fedda"
+            ]
+        ]
+    },
+    {
+        "id": "47c181e5.fedda",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 745.6667060852051,
+        "y": 363.821475982666,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "fe0e4241.5b80e8"
+            ]
+        ]
+    },
+    {
+        "id": "fe0e4241.5b80e8",
+        "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=\"`'Not all assignments are resolved' + $error-message`\" />\n",
+        "comments": "",
+        "x": 904.4166870117188,
+        "y": 363.82147216796875,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "a92c49b1.faf6c",
+        "type": "set",
+        "name": "set tmp.ss.param.capability-name",
+        "xml": "<set>\n<parameter name='tmp.ss.param.capability-name' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />\n",
+        "comments": "",
+        "x": 1187.0635833740234,
+        "y": 1973.7697825431824,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "ca92a840.cb9a5",
+        "type": "for",
+        "name": "for pidx in param_length",
+        "xml": "<for index=\"pidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 897.2778091430664,
+        "y": 1973.8412528038025,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "864a8266.73cc7",
+                "b15a003.31b4b",
+                "a92c49b1.faf6c"
+            ]
+        ]
+    },
+    {
+        "id": "b15a003.31b4b",
+        "type": "switchNode",
+        "name": "switch: capability-name - ss vs param",
+        "xml": "<switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1200.139045715332,
+        "y": 2055.119035243988,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "5f27f686.c72e78"
+            ]
+        ]
+    },
+    {
+        "id": "5f27f686.c72e78",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1438.8890533447266,
+        "y": 2054.869035243988,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "b6e45a86.008848"
+            ]
+        ]
+    },
+    {
+        "id": "52a3fa95.c6446c",
+        "type": "switchNode",
+        "name": "switch: resource-key[].name",
+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1688.7783126831055,
+        "y": 2305.1630301475525,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "12d1fbad.020824",
+                "31df3307.8fd214",
+                "8556b639.07cc4",
+                "32ab7f7f.33dea",
+                "28ed7d99.2fd922"
+            ]
+        ]
+    },
+    {
+        "id": "31df3307.8fd214",
+        "type": "outcome",
+        "name": "service-instance-id",
+        "xml": "<outcome value='service-instance-id'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1960.167221069336,
+        "y": 2304.6352486610413,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "15e0f6f3.464d99"
+            ]
+        ]
+    },
+    {
+        "id": "15e0f6f3.464d99",
+        "type": "set",
+        "name": "set tmp.ss.service-instance-id",
+        "xml": "<set>\n<parameter name='tmp.ss.service-instance-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n",
+        "comments": "",
+        "x": 2226.417221069336,
+        "y": 2304.3852486610413,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "702f24b8.ab2b14",
+        "type": "set",
+        "name": "set service-data...param[].value = ip-address",
+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value' \n\tvalue='`$ip[0]`' />\n",
+        "comments": "",
+        "x": 3014.388885498047,
+        "y": 2875.3416357040405,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "daef3d9b.976aa",
+        "type": "update",
+        "name": "get-resource IPAM_IP_ASSIGNEMENT",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n\tkey='SELECT * from IPAM_IP_ASSIGNEMENT \n\t\tWHERE external_key = $tmp.ss.external-key\n\t\tAND service_instance_id = $tmp.ss.service-instance-id' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 2188.472640991211,
+        "y": 2976.2020263671875,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "c57f67d2.fa9d8",
+                "b7a6dad5.6dc8c"
+            ]
+        ]
+    },
+    {
+        "id": "c57f67d2.fa9d8",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2483.0599784851074,
+        "y": 2977.20205950737,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "e5ae09f3.4e9b7"
+            ]
+        ]
+    },
+    {
+        "id": "9e365126.584608",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1882.3099365234375,
+        "y": 2977.844970703125,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "daef3d9b.976aa"
+            ]
+        ]
+    },
+    {
+        "id": "b0815fb0.6c8c58",
+        "type": "for",
+        "name": "for kidx in resource-key_length",
+        "xml": "<for index=\"kidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1405.6393966674805,
+        "y": 2303.0241141319275,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "52a3fa95.c6446c"
+            ]
+        ]
+    },
+    {
+        "id": "9d646260.b0f88",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 613.5358581542969,
+        "y": 1971.9642333984375,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "ca92a840.cb9a5",
+                "dddd3293.e9766"
+            ]
+        ]
+    },
+    {
+        "id": "12508de3.d24ce2",
+        "type": "update",
+        "name": "update IPAM_IP_ASSIGNEMENT to PENDING_DELETE...",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\n\tkey=\"UPDATE IPAM_IP_ASSIGNEMENT set ip_status = $tmp.status \n\t\tWHERE external_key = $tmp.ss.external-key\n\t\tAND service_instance_id = $tmp.ss.service-instance-id\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 3011.369613647461,
+        "y": 3067.8807373046875,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "e08179b3.30edc"
+            ]
+        ]
+    },
+    {
+        "id": "86f22edb.c1e37",
+        "type": "set",
+        "name": "set status = PENDING_DELETE",
+        "xml": "<set>\n<parameter name='tmp.status' value=\"PENDING_DELETE\" />\n",
+        "comments": "",
+        "x": 2921.286117553711,
+        "y": 3026.2139892578125,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "e08179b3.30edc",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3319.0360717773438,
+        "y": 3068.4640607833862,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "a80cdb69.81f35"
+            ]
+        ]
+    },
+    {
+        "id": "a80cdb69.81f35",
+        "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 updating NETBOX_IP_ASSIGNMENTS table to unassign ip with external_key=' + $tmp.ss.external-key + ' and service_instance_id=' + $tmp.ss.service-instance-id`\" />\n",
+        "comments": "",
+        "x": 3498.036361694336,
+        "y": 3068.273681640625,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "2ba87204.72c89e",
+        "type": "execute",
+        "name": "execute Netbox unassign IP addresses",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient\" method=\"unassignIpAddress\">\n<parameter name=\"service_instance_id\" value=\"`$tmp.ss.service-instance-id`\" />\n<parameter name=\"external_key\" value=\"`$tmp.ss.external-key`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2941.3694915771484,
+        "y": 3114.1307983398438,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "d761dd7d.5daac",
+                "70a92bf3.d01214"
+            ]
+        ]
+    },
+    {
+        "id": "d761dd7d.5daac",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3184.7027587890625,
+        "y": 3114.130747795105,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "ac3185a3.0297d8"
+            ]
+        ]
+    },
+    {
+        "id": "ac3185a3.0297d8",
+        "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 in NetboxClient#unassignIPAddress with external-key='+ $tmp.ss.external-key`\" />\n",
+        "comments": "",
+        "x": 3346.7027854919434,
+        "y": 3113.9404830932617,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "9487046d.9fad68",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2661.988525390625,
+        "y": 3025.6306171417236,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "86f22edb.c1e37",
+                "12508de3.d24ce2",
+                "2ba87204.72c89e"
+            ]
+        ]
+    },
+    {
+        "id": "dddd3293.e9766",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"`'SS: pidx: ' + $pidx`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 849.3414611816406,
+        "y": 2028.9087219238281,
+        "z": "1e0169fe.460196",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "12d1fbad.020824",
+        "type": "outcome",
+        "name": "vf-module-id",
+        "xml": "<outcome value='vf-module-id'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1942.000228881836,
+        "y": 2350.885187625885,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "e91a4a82.52be28"
+            ]
+        ]
+    },
+    {
+        "id": "e91a4a82.52be28",
+        "type": "set",
+        "name": "set tmp.ss.vf-module-id",
+        "xml": "<set>\n<parameter name='tmp.ss.vf-module-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n",
+        "comments": "",
+        "x": 2208.0003509521484,
+        "y": 2350.885187625885,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "ae56d16c.edce5",
+        "type": "set",
+        "name": "set resource-resolution-data.status = DELETED",
+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' \n\tvalue='DELETED' />\n",
+        "comments": "",
+        "x": 3451.595443725586,
+        "y": 3169.4514989852905,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "8556b639.07cc4",
+        "type": "outcome",
+        "name": "prefix-id",
+        "xml": "<outcome value='prefix-id'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1931.055892944336,
+        "y": 2395.135218143463,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "246a1d6a.080fa2"
+            ]
+        ]
+    },
+    {
+        "id": "246a1d6a.080fa2",
+        "type": "set",
+        "name": "set prefix-id",
+        "xml": "<set>\n<parameter name='tmp.ss.prefix-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n",
+        "comments": "",
+        "x": 2177.555892944336,
+        "y": 2395.385187625885,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "d994622b.100b98",
+        "type": "execute",
+        "name": "execute NetboxClient assignIpAddress",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient\" method=\"assignIpAddress\">\n<parameter name=\"service_instance_id\" value=\"`$tmp.ss.service-instance-id`\" />\n<parameter name=\"vf_module_id\" value=\"`$tmp.ss.vf-module-id`\" />\n<parameter name=\"prefix_id\" value=\"`$tmp.ss.prefix-id`\" />\n<parameter name=\"resource_name\" value=\"`$tmp.ss.param.name`\" />\n<parameter name=\"external_key\" value=\"`$tmp.ss.external-key`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2204.38134765625,
+        "y": 2695.3692626953125,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "5fcd5073.23e8c8",
+                "1a67a440.ccf65c"
+            ]
+        ]
+    },
+    {
+        "id": "5fcd5073.23e8c8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2521.38134765625,
+        "y": 2697.3692016601562,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "b53fc0c4.6e6db"
+            ]
+        ]
+    },
+    {
+        "id": "b53fc0c4.6e6db",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 2729.38134765625,
+        "y": 2701.3692016601562,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "aefd9233.639b38",
+                "5924f9f1.b07eb"
+            ]
+        ]
+    },
+    {
+        "id": "aefd9233.639b38",
+        "type": "set",
+        "name": "set resource-resolution-data.status = FAILED",
+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' value='FAILED' />\n",
+        "comments": "",
+        "x": 3046.3814086914062,
+        "y": 2705.369171142578,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "5924f9f1.b07eb",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",
+        "comments": "",
+        "x": 2943.7622680664062,
+        "y": 2754.9724340438843,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "8459943a.0741",
+        "type": "set",
+        "name": "set resource-resolution-data.status = SUCCESS",
+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' \n\tvalue='SUCCESS' />\n",
+        "comments": "",
+        "x": 3031.4644470214844,
+        "y": 2926.059958457947,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "32ab7f7f.33dea",
+        "type": "outcome",
+        "name": "ip-address-id",
+        "xml": "<outcome value='ip-address-id'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1944.9370422363281,
+        "y": 2439.9922919273376,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "1be9a0f0.cb1137"
+            ]
+        ]
+    },
+    {
+        "id": "1be9a0f0.cb1137",
+        "type": "set",
+        "name": "ip-address-id",
+        "xml": "<set>\n<parameter name='tmp.ss.ip-address-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n",
+        "comments": "",
+        "x": 2179.9369201660156,
+        "y": 2439.992352962494,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "28ed7d99.2fd922",
+        "type": "outcome",
+        "name": "external_key",
+        "xml": "<outcome value='external_key'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1932.5560607910156,
+        "y": 2485.7065863609314,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "e3062b19.33e69"
+            ]
+        ]
+    },
+    {
+        "id": "e3062b19.33e69",
+        "type": "set",
+        "name": "set external-key",
+        "xml": "<set>\n<parameter name='tmp.ss.external-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n",
+        "comments": "",
+        "x": 2181.127471923828,
+        "y": 2485.7066473960876,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "864a8266.73cc7",
+        "type": "set",
+        "name": "set tmp.ss.param.name",
+        "xml": "<set>\n<parameter name='tmp.ss.param.name' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name`' />\n",
+        "comments": "",
+        "x": 1158.8495254516602,
+        "y": 2013.9602675437927,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "b6e45a86.008848",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1154.1429138183594,
+        "y": 2299.9287719726562,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "b0815fb0.6c8c58",
+                "ea11f211.eef478"
+            ]
+        ]
+    },
+    {
+        "id": "ea11f211.eef478",
+        "type": "switchNode",
+        "name": "switch: ss.capability-action",
+        "xml": "<switch test='`$ss.capability-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 976.0000305175781,
+        "y": 2705.738320350647,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "398f1da9.7fc262",
+                "c615cc08.6cc77"
+            ]
+        ]
+    },
+    {
+        "id": "b4174ab1.8632e",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1878.8573608398438,
+        "y": 2694.3097534179688,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "d994622b.100b98"
+            ]
+        ]
+    },
+    {
+        "id": "b7a6dad5.6dc8c",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2479.774124145508,
+        "y": 3024.9163722991943,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "9487046d.9fad68"
+            ]
+        ]
+    },
+    {
+        "id": "1a67a440.ccf65c",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2529.4287719726562,
+        "y": 2760.880820274353,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "6b7d48cd.fe82"
+            ]
+        ]
+    },
+    {
+        "id": "e5ae09f3.4e9b7",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2653.2027871268137,
+        "y": 2977.6306373051234,
+        "z": "1e0169fe.460196",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6b7d48cd.fe82",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2723.7144165039062,
+        "y": 2840.8809423446655,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "8459943a.0741",
+                "702f24b8.ab2b14",
+                "722fee02.ac2218"
+            ]
+        ]
+    },
+    {
+        "id": "70a92bf3.d01214",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3189.667465209961,
+        "y": 3168.023398399353,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "ae56d16c.edce5"
+            ]
+        ]
+    },
+    {
+        "id": "612ded0b.7aa5c4",
+        "type": "not-found",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 588.4285583496094,
+        "y": 451.4284896850586,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "c436ca39.dad55"
+            ]
+        ]
+    },
+    {
+        "id": "f91de1d4.ae1798",
+        "type": "switchNode",
+        "name": "switch capability-type. vnf",
+        "xml": "<switch test=\"`$ss.capability-type == 'vnf'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 385,
+        "y": 452.14276123046875,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "612ded0b.7aa5c4"
+            ]
+        ]
+    },
+    {
+        "id": "2734c8ea.c23828",
+        "type": "switchNode",
+        "name": "switch capability-type vf-module",
+        "xml": "<switch test=\"`$ss.capability-type == 'vf-module'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 407.28582763671875,
+        "y": 1837.6666259765625,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "76727ba.3b8bb04"
+            ]
+        ]
+    },
+    {
+        "id": "76727ba.3b8bb04",
+        "type": "not-found",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 626.2858276367188,
+        "y": 1838.6666870117188,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "9d646260.b0f88"
+            ]
+        ]
+    },
+    {
+        "id": "74139423.e17614",
+        "type": "outcome",
+        "name": "unassign",
+        "xml": "<outcome value='unassign'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1177.5833129882812,
+        "y": 1389.8692016601562,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "e51b7888.989928"
+            ]
+        ]
+    },
+    {
+        "id": "b8362705.36557",
+        "type": "set",
+        "name": "set tmp.ss.param.capability-name",
+        "xml": "<set>\n<parameter name='tmp.ss.param.capability-name' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />\n",
+        "comments": "",
+        "x": 1210.1705474853516,
+        "y": 547.4722971916199,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "37af35ce.c8f9aa",
+        "type": "for",
+        "name": "for pidx in param_length",
+        "xml": "<for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 920.3847732543945,
+        "y": 547.54376745224,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "f4266bba.68463",
+                "ea3f1334.a266f8",
+                "b8362705.36557"
+            ]
+        ]
+    },
+    {
+        "id": "ea3f1334.a266f8",
+        "type": "switchNode",
+        "name": "switch: capability-name - ss vs param",
+        "xml": "<switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1223.2460098266602,
+        "y": 628.8215498924255,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "d7993c29.a6c5f8"
+            ]
+        ]
+    },
+    {
+        "id": "d7993c29.a6c5f8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1461.9960174560547,
+        "y": 628.5715498924255,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "35313136.60f71e"
+            ]
+        ]
+    },
+    {
+        "id": "85af5a4b.a2187",
+        "type": "switchNode",
+        "name": "switch: resource-key[].name",
+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1650.2185287475586,
+        "y": 820.8654227256775,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "6c06e68b.da7eb8",
+                "8b40c4df.047c2",
+                "5bcfaea0.c0c0f8",
+                "714a9ad3.25a814"
+            ]
+        ]
+    },
+    {
+        "id": "8b40c4df.047c2",
+        "type": "outcome",
+        "name": "service-instance-id",
+        "xml": "<outcome value='service-instance-id'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1921.607437133789,
+        "y": 820.3376412391663,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "ee744de2.8b10f8"
+            ]
+        ]
+    },
+    {
+        "id": "ee744de2.8b10f8",
+        "type": "set",
+        "name": "set tmp.ss.service-instance-id",
+        "xml": "<set>\n<parameter name='tmp.ss.service-instance-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n",
+        "comments": "",
+        "x": 2187.857437133789,
+        "y": 820.0876412391663,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "53877355.ae41ac",
+        "type": "update",
+        "name": "get-resource IPAM_IP_ASSIGNEMENT",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n\tkey='SELECT * from IPAM_IP_ASSIGNEMENT \n\t\tWHERE external_key = $tmp.ss.external-key\n\t\tAND service_instance_id = $tmp.ss.service-instance-id' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 2175.3888549804688,
+        "y": 1491.9048852920532,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "1455e2db.491d8d",
+                "f61d39ca.54246"
+            ]
+        ]
+    },
+    {
+        "id": "1455e2db.491d8d",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2469.9761924743652,
+        "y": 1492.9049184322357,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "4d3d930a.c74edc"
+            ]
+        ]
+    },
+    {
+        "id": "2e96e14a.d8a666",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1872.9761352539062,
+        "y": 1408.5477905273438,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "53877355.ae41ac"
+            ]
+        ]
+    },
+    {
+        "id": "8b797c86.449c88",
+        "type": "for",
+        "name": "for kidx in resource-key_length",
+        "xml": "<for index=\"kidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1367.0796127319336,
+        "y": 818.7265067100525,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "85af5a4b.a2187"
+            ]
+        ]
+    },
+    {
+        "id": "c436ca39.dad55",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 636.642822265625,
+        "y": 545.666748046875,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "37af35ce.c8f9aa",
+                "419443bc.89754c"
+            ]
+        ]
+    },
+    {
+        "id": "7d36e25f.6ea3f4",
+        "type": "update",
+        "name": "update IPAM_IP_ASSIGNEMENT to PENDING_DELETE...",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\n\tkey=\"UPDATE IPAM_IP_ASSIGNEMENT set ip_status = $tmp.status \n\t\tWHERE external_key = $tmp.ss.external-key\n\t\tAND service_instance_id = $tmp.ss.service-instance-id\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 2998.2858276367188,
+        "y": 1583.5835962295532,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "ca94a980.5b06e"
+            ]
+        ]
+    },
+    {
+        "id": "954b1950.33da8",
+        "type": "set",
+        "name": "set status = PENDING_DELETE",
+        "xml": "<set>\n<parameter name='tmp.status' value=\"PENDING_DELETE\" />\n",
+        "comments": "",
+        "x": 2908.2023315429688,
+        "y": 1541.9168481826782,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "ca94a980.5b06e",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3305.9522857666016,
+        "y": 1584.166919708252,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "ddd93d50.c85558"
+            ]
+        ]
+    },
+    {
+        "id": "ddd93d50.c85558",
+        "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 updating NETBOX_IP_ASSIGNMENTS table to unassign ip with external_key=' + $tmp.ss.external-key + ' and service_instance_id=' + $tmp.ss.service-instance-id`\" />\n",
+        "comments": "",
+        "x": 3484.9525756835938,
+        "y": 1583.9765405654907,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "d3428a19.b74a38",
+        "type": "execute",
+        "name": "execute Netbox unassign IP addresses",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient\" method=\"unassignIpAddress\">\n<parameter name=\"service_instance_id\" value=\"`$tmp.ss.service-instance-id`\" />\n<parameter name=\"external_key\" value=\"`$tmp.ss.external-key`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2928.2857055664062,
+        "y": 1629.8336572647095,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "a11ee488.c69c1",
+                "bacc37f5.251158"
+            ]
+        ]
+    },
+    {
+        "id": "a11ee488.c69c1",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3171.6189727783203,
+        "y": 1629.8336067199707,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "727fae.421bc054"
+            ]
+        ]
+    },
+    {
+        "id": "727fae.421bc054",
+        "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 in NetboxClient#unassignIPAddress with external-key='+ $tmp.ss.external-key`\" />\n",
+        "comments": "",
+        "x": 3333.618999481201,
+        "y": 1629.6433420181274,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "199cb084.41994f",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2648.904739379883,
+        "y": 1541.3334760665894,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "954b1950.33da8",
+                "7d36e25f.6ea3f4",
+                "d3428a19.b74a38"
+            ]
+        ]
+    },
+    {
+        "id": "419443bc.89754c",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"`'SS: pidx: ' + $pidx`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 872.4484252929688,
+        "y": 602.6112365722656,
+        "z": "1e0169fe.460196",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6c06e68b.da7eb8",
+        "type": "outcome",
+        "name": "vnf-id",
+        "xml": "<outcome value='vnf-id'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1903.440444946289,
+        "y": 866.58758020401,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "48b45ebc.19189"
+            ]
+        ]
+    },
+    {
+        "id": "48b45ebc.19189",
+        "type": "set",
+        "name": "set tmp.ss.vnf-id",
+        "xml": "<set>\n<parameter name='tmp.ss.vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n",
+        "comments": "",
+        "x": 2169.4405670166016,
+        "y": 866.58758020401,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "4c0830f.966f55",
+        "type": "set",
+        "name": "set resource-resolution-data.status = DELETED",
+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' \n\tvalue='DELETED' />\n",
+        "comments": "",
+        "x": 3438.5116577148438,
+        "y": 1685.1543579101562,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "5bcfaea0.c0c0f8",
+        "type": "outcome",
+        "name": "prefix-id",
+        "xml": "<outcome value='prefix-id'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1892.496109008789,
+        "y": 910.8376107215881,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "dd169952.c2ddc8"
+            ]
+        ]
+    },
+    {
+        "id": "dd169952.c2ddc8",
+        "type": "set",
+        "name": "set prefix-id",
+        "xml": "<set>\n<parameter name='tmp.ss.prefix-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n",
+        "comments": "",
+        "x": 2138.996109008789,
+        "y": 911.08758020401,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "3246d2cf.e446ce",
+        "type": "execute",
+        "name": "execute NetboxClient assignIpAddress",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient\" method=\"assignIpAddress\">\n<parameter name=\"service_instance_id\" value=\"`$tmp.ss.service-instance-id`\" />\n<parameter name=\"vf_module_id\" value=\"`$tmp.ss.vnf-id`\" />\n<parameter name=\"prefix_id\" value=\"`$tmp.ss.prefix-id`\" />\n<parameter name=\"resource_name\" value=\"`$tmp.ss.param.name`\" />\n<parameter name=\"external_key\" value=\"`$tmp.ss.external-key`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2200.1068725585938,
+        "y": 1209.6432886123657,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "bc02f9c5.d3009",
+                "5a42ccdf.863d7c"
+            ]
+        ]
+    },
+    {
+        "id": "bc02f9c5.d3009",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2517.1068725585938,
+        "y": 1211.6432275772095,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "9be2285f.3688f8"
+            ]
+        ]
+    },
+    {
+        "id": "9be2285f.3688f8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 2725.1068725585938,
+        "y": 1215.6432275772095,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "be8fa4c5.70a7a",
+                "742a806a.1c8b48"
+            ]
+        ]
+    },
+    {
+        "id": "be8fa4c5.70a7a",
+        "type": "set",
+        "name": "set resource-resolution-data.status = FAILED",
+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' value='FAILED' />\n",
+        "comments": "",
+        "x": 3042.10693359375,
+        "y": 1219.6431970596313,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "742a806a.1c8b48",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",
+        "comments": "",
+        "x": 2939.48779296875,
+        "y": 1269.2464599609375,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "291a0f5b.065428",
+        "type": "set",
+        "name": "set resource-resolution-data.status = SUCCESS",
+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' \n\tvalue='SUCCESS' />\n",
+        "comments": "",
+        "x": 3019.1900634765625,
+        "y": 1414.3340454101562,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "714a9ad3.25a814",
+        "type": "outcome",
+        "name": "external_key",
+        "xml": "<outcome value='external_key'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1915.246337890625,
+        "y": 961.4089965820312,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "bc0a0828.40d9d8"
+            ]
+        ]
+    },
+    {
+        "id": "bc0a0828.40d9d8",
+        "type": "set",
+        "name": "set external-key",
+        "xml": "<set>\n<parameter name='tmp.ss.external-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />\n",
+        "comments": "",
+        "x": 2163.8177490234375,
+        "y": 961.4090576171875,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "f4266bba.68463",
+        "type": "set",
+        "name": "set tmp.ss.param.name",
+        "xml": "<set>\n<parameter name='tmp.ss.param.name' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].name`' />\n",
+        "comments": "",
+        "x": 1181.9564895629883,
+        "y": 587.6627821922302,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "35313136.60f71e",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1115.5831298828125,
+        "y": 815.6311645507812,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "8b797c86.449c88",
+                "f17ee439.871ec"
+            ]
+        ]
+    },
+    {
+        "id": "3ab742ab.07506e",
+        "type": "outcome",
+        "name": "assign",
+        "xml": "<outcome value='assign'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1172.190185546875,
+        "y": 1227.190673828125,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "ac9eaafc.1d31a"
+            ]
+        ]
+    },
+    {
+        "id": "f17ee439.871ec",
+        "type": "switchNode",
+        "name": "switch: ss.capability-action",
+        "xml": "<switch test='`$ss.capability-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 934.9402770996094,
+        "y": 1232.690673828125,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "3ab742ab.07506e",
+                "74139423.e17614"
+            ]
+        ]
+    },
+    {
+        "id": "26e5147.b2e3b6c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1920.8328857421875,
+        "y": 1214.8339233398438,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "3246d2cf.e446ce"
+            ]
+        ]
+    },
+    {
+        "id": "f61d39ca.54246",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2466.6903381347656,
+        "y": 1540.61923122406,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "199cb084.41994f"
+            ]
+        ]
+    },
+    {
+        "id": "5a42ccdf.863d7c",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2525.154296875,
+        "y": 1275.154846191406,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "82bf193e.1c3e9"
+            ]
+        ]
+    },
+    {
+        "id": "4d3d930a.c74edc",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2640.1190011160716,
+        "y": 1493.3334962299891,
+        "z": "1e0169fe.460196",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "82bf193e.1c3e9",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2719.43994140625,
+        "y": 1355.1549682617188,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "291a0f5b.065428",
+                "ddc0044e.197a88",
+                "96318d27.c30ac8"
+            ]
+        ]
+    },
+    {
+        "id": "bacc37f5.251158",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3176.5836791992188,
+        "y": 1683.7262573242188,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "4c0830f.966f55"
+            ]
+        ]
+    },
+    {
+        "id": "96318d27.c30ac8",
+        "type": "set",
+        "name": "set service-data...param[].value = ip-address",
+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].value' \n\tvalue='`$ip[0]`' />\n",
+        "comments": "",
+        "x": 3008.7139892578125,
+        "y": 1374.2858276367188,
+        "z": "1e0169fe.460196",
+        "wires": []
+    },
+    {
+        "id": "ddc0044e.197a88",
+        "type": "execute",
+        "name": "SliStringUtils - split subnet",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n    <parameter name=\"original_string\" value=\"`$self_serve_netbox_ip_assignement.ip-address`\" />\n    <parameter name=\"regex\" value=\"/\"/>\n    <parameter name=\"ctx_memory_result_key\" value=\"ip\" />\n  \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2952.7139892578125,
+        "y": 1334.2858276367188,
+        "z": "1e0169fe.460196",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "722fee02.ac2218",
+        "type": "execute",
+        "name": "SliStringUtils - split subnet",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n    <parameter name=\"original_string\" value=\"`$self_serve_netbox_ip_assignement.ip-address`\" />\n    <parameter name=\"regex\" value=\"/\"/>\n    <parameter name=\"ctx_memory_result_key\" value=\"ip\" />\n  \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2960.428680419922,
+        "y": 2824.7141942977905,
+        "z": "1e0169fe.460196",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ac9eaafc.1d31a",
+        "type": "switchNode",
+        "name": "switch: resource-resolution-data.status",
+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1408.392822265625,
+        "y": 1221.9642944335938,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "e91661da.3b8608",
+                "bf37d131.8b2478"
+            ]
+        ]
+    },
+    {
+        "id": "e91661da.3b8608",
+        "type": "not-found",
+        "name": "FAILED",
+        "xml": "<outcome value='FAILED'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1694.643310546875,
+        "y": 1191.53564453125,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "26e5147.b2e3b6c"
+            ]
+        ]
+    },
+    {
+        "id": "bf37d131.8b2478",
+        "type": "success",
+        "name": "PENDING",
+        "xml": "<outcome value='PENDING'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1693.678466796875,
+        "y": 1235.3931274414062,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "26e5147.b2e3b6c"
+            ]
+        ]
+    },
+    {
+        "id": "e51b7888.989928",
+        "type": "switchNode",
+        "name": "switch: resource-resolution-data.status",
+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1431.249755859375,
+        "y": 1393.750244140625,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "26889fb2.5ce19"
+            ]
+        ]
+    },
+    {
+        "id": "26889fb2.5ce19",
+        "type": "success",
+        "name": "SUCCESS",
+        "xml": "<outcome value='SUCCESS'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1688.678466796875,
+        "y": 1393.9644775390625,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "2e96e14a.d8a666"
+            ]
+        ]
+    },
+    {
+        "id": "c615cc08.6cc77",
+        "type": "outcome",
+        "name": "unassign",
+        "xml": "<outcome value='unassign'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1181.428466796875,
+        "y": 2975.71435546875,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "5bd2efc8.0cc53"
+            ]
+        ]
+    },
+    {
+        "id": "398f1da9.7fc262",
+        "type": "outcome",
+        "name": "assign",
+        "xml": "<outcome value='assign'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1181.749755859375,
+        "y": 2705.8930053710938,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "71585e8c.8a959"
+            ]
+        ]
+    },
+    {
+        "id": "71585e8c.8a959",
+        "type": "switchNode",
+        "name": "switch: resource-resolution-data.status",
+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1417.952392578125,
+        "y": 2700.6666259765625,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "83c2a9a4.58aa98",
+                "bd2c6000.241588"
+            ]
+        ]
+    },
+    {
+        "id": "83c2a9a4.58aa98",
+        "type": "not-found",
+        "name": "FAILED",
+        "xml": "<outcome value='FAILED'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1704.202880859375,
+        "y": 2670.2379760742188,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "b4174ab1.8632e"
+            ]
+        ]
+    },
+    {
+        "id": "bd2c6000.241588",
+        "type": "success",
+        "name": "PENDING",
+        "xml": "<outcome value='PENDING'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1703.238037109375,
+        "y": 2714.095458984375,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "b4174ab1.8632e"
+            ]
+        ]
+    },
+    {
+        "id": "5bd2efc8.0cc53",
+        "type": "switchNode",
+        "name": "switch: resource-resolution-data.status",
+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1435.0949096679688,
+        "y": 2979.5953979492188,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "9c7404ad.aa898"
+            ]
+        ]
+    },
+    {
+        "id": "9c7404ad.aa898",
+        "type": "success",
+        "name": "SUCCESS",
+        "xml": "<outcome value='SUCCESS'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1692.5236206054688,
+        "y": 2979.8096313476562,
+        "z": "1e0169fe.460196",
+        "wires": [
+            [
+                "9e365126.584608"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-pnf-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-pnf-assign.json
new file mode 100644
index 0000000..2c57c17
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-pnf-assign.json
@@ -0,0 +1,1375 @@
+[

+    {

+        "id": "ecff213c.e8aaa",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 137.5,

+        "y": 90,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "23b17adc.1c80e6"

+            ]

+        ]

+    },

+    {

+        "id": "e6160663.8edf48",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 167.9761962890625,

+        "y": 212.2777862548828,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "f97d0f53.e9029",

+                "2d2db8c6.748ba8",

+                "ff2d06ee.623348",

+                "ca8257f6.464808",

+                "b9417a96.c89598",

+                "97cbe59f.102fe8",

+                "71acdeef.4b572",

+                "b26b3f10.8cd93",

+                "2c0f97dd.67d808",

+                "192a8a0a.311bd6"

+            ]

+        ]

+    },

+    {

+        "id": "7bdd8af6.d4d404",

+        "type": "method",

+        "name": "method self-serve-pnf-assign",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 254.26190948486328,

+        "y": 144.70635509490967,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "e6160663.8edf48"

+            ]

+        ]

+    },

+    {

+        "id": "23b17adc.1c80e6",

+        "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": 412.73819732666016,

+        "y": 90.19049263000488,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "7bdd8af6.d4d404"

+            ]

+        ]

+    },

+    {

+        "id": "2d2db8c6.748ba8",

+        "type": "switchNode",

+        "name": "switch pnf-parameters-data.param_length",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 449.0357971191406,

+        "y": 1492.5120153427124,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "eb4e37ba.25e208"

+            ]

+        ]

+    },

+    {

+        "id": "eb4e37ba.25e208",

+        "type": "other",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 711.0358276367188,

+        "y": 1492.5120153427124,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "ed282b71.ede0f8"

+            ]

+        ]

+    },

+    {

+        "id": "21ad94d1.be148c",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:self-serve-pnf-ra-assignment",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-pnf-ra-assignment' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1226.3214874267578,

+        "y": 1542.0834465026855,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "ffcba76.e3a6658"

+            ]

+        ]

+    },

+    {

+        "id": "afb8d713.9ea788",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to get RA assignments: ' + $error-message`\" />\n",

+        "comments": "",

+        "x": 1698.0357284545898,

+        "y": 1541.6548500061035,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "6f90ee45.cde4f",

+        "type": "for",

+        "name": "foreach pnf-parameters-data.param[]",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 681.3574600219727,

+        "y": 1800.0120840072632,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "c123dce6.984a6",

+                "a008f4ce.816ac8"

+            ]

+        ]

+    },

+    {

+        "id": "f97d0f53.e9029",

+        "type": "set",

+        "name": "set ss.capability.execution-order[]",

+        "xml": "<set>\n<parameter name='ss.capability.execution-order[0]' value='aai-get' />\n<parameter name='ss.capability.execution-order[1]' value='generate-name' />\n<parameter name='ss.capability.execution-order[2]' value='alts-entitlement-assign' />\n<parameter name='ss.capability.execution-order[3]' value='alts-license-assign' />\n<parameter name='ss.capability.execution-order[4]' value='vlan-tag-assign' />\n<parameter name='ss.capability.execution-order[5]' value='mS-vlan-tag-assign' />\n<parameter name='ss.capability.execution-order[6]' value='eipam-ip-assignment' />\n<parameter name='ss.capability.execution-order[7]' value='eipam-create-pool' />\n<parameter name='ss.capability.execution-order[8]' value='netbox-ip-assign' />\n<parameter name='ss.capability.execution-order[9]' value='mac-address-assign' />\n<parameter name='ss.capability.execution-order[10]' value='mS-mac-address-assign' />\n<parameter name='ss.capability.execution-order[11]' value='create-vpe-pool' />\n<parameter name='ss.capability.execution-order[12]' value='unresolved-composite-data' />\n<parameter name='ss.capability.execution-order[13]' value='aai-pnf-put' />\n<parameter name='ss.capability.execution-order_length' value='14' />\n",

+        "comments": "",

+        "x": 430.02384185791016,

+        "y": 1271.0001401901245,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "ff2d06ee.623348",

+        "type": "for",

+        "name": "foreach capability[]",

+        "xml": "<for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 381.14300537109375,

+        "y": 1644.4049034118652,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "34d7033c.1d850c",

+                "bcdcac9e.1dcf8",

+                "6f90ee45.cde4f",

+                "7e8acf11.757ce"

+            ]

+        ]

+    },

+    {

+        "id": "a008f4ce.816ac8",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 985.7502822875977,

+        "y": 1845.6548767089844,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "fbc7d0d6.d0f9a"

+            ]

+        ]

+    },

+    {

+        "id": "fbc7d0d6.d0f9a",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1176.2502822875977,

+        "y": 1845.9048767089844,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "1d5ac87a.53fd58"

+            ]

+        ]

+    },

+    {

+        "id": "ffcba76.e3a6658",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1543.8928337097168,

+        "y": 1541.5120401382446,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "afb8d713.9ea788"

+            ]

+        ]

+    },

+    {

+        "id": "34d7033c.1d850c",

+        "type": "set",

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

+        "xml": "<set>\n<parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />\n<!--\nss.capability.execution-order[]\n-->",

+        "comments": "",

+        "x": 637.5000610351562,

+        "y": 1644.3573551177979,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "c123dce6.984a6",

+        "type": "set",

+        "name": "tmp.param.capability-name",

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

+        "comments": "",

+        "x": 997.107307434082,

+        "y": 1800.2620868682861,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "bcdcac9e.1dcf8",

+        "type": "set",

+        "name": "set ss.capability-action = assign",

+        "xml": "<set>\n<parameter name='ss.capability-action' value='assign' />\n",

+        "comments": "",

+        "x": 666.2142028808594,

+        "y": 1691.2739391326904,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "7e8acf11.757ce",

+        "type": "set",

+        "name": "set capability-dg with 'self-serve-' + capability-name",

+        "xml": "<set>\n<parameter name='ss.capability-dg' value=\"`'self-serve-' + $ss.capability.execution-order[$cidx]`\" />\n",

+        "comments": "",

+        "x": 728.7262954711914,

+        "y": 1744.7501831054688,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "ca8257f6.464808",

+        "type": "set",

+        "name": "set sdnc-generated-cloud-resources = true",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.sdnc-generated-cloud-resources' value='true' />\n",

+        "comments": "",

+        "x": 458.9881362915039,

+        "y": 1324.7501487731934,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "9217be7a.bbdb1",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 715.428539276123,

+        "y": 605.4643030166626,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "3723f166.b9d03e",

+                "74858ef1.51481",

+                "a4d6abfb.adbf88",

+                "7c366e89.adcd7",

+                "16c17b92.58b8f4",

+                "2ef35e2.ce87ea2",

+                "25981633.c7dc4a",

+                "152546f0.c6dac9",

+                "6f7c97df.b99708"

+            ]

+        ]

+    },

+    {

+        "id": "3723f166.b9d03e",

+        "type": "set",

+        "name": "set pnf-topology data",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-id'\n value='`$pnf-topology-operation-input.pnf-details.pnf-id`' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-type'\n value='`$pnf-topology-operation-input.pnf-details.pnf-type`' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.tenant'\n value='`$pnf-topology-operation-input.pnf-request-input.tenant`' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.aic-cloud-region'\n value='`$pnf-topology-operation-input.pnf-request-input.aic-cloud-region`' />",

+        "comments": "",

+        "x": 930.9284820556641,

+        "y": 606.523811340332,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "ca44a755.ad1c68",

+        "type": "set",

+        "name": "set pnf-parameters-data",

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

+        "comments": "",

+        "x": 1117.3217163085938,

+        "y": 1492.380844116211,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "a4d6abfb.adbf88",

+        "type": "set",

+        "name": "set pnf-level-oper-status to PendingCreate",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.order-status' value='PendingCreate' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-rpc-action' value='`$pnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-action' value='`$pnf-topology-operation-input.request-information.request-action`' />\n",

+        "comments": "",

+        "x": 996.2184371948242,

+        "y": 1180.504020690918,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "74858ef1.51481",

+        "type": "set",

+        "name": "copy input data",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.'\n        value='$pnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.'\n        value='$pnf-topology-operation-input.request-information.' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.'\n        value='$pnf-topology-operation-input.service-information.' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.'\n        value='$pnf-topology-operation-input.pnf-details.' />\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.'\n        value='$pnf-topology-operation-input.pnf-request-input.' />",

+        "comments": "",

+        "x": 913.5953521728516,

+        "y": 1130.3096599578857,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "b0cbcbbb.b2c498",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-invariant-uuid'\n  value='`$db.pnf-model.invariant-uuid`' />",

+        "comments": "",

+        "x": 1327.9286727905273,

+        "y": 718.8810405731201,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "7c366e89.adcd7",

+        "type": "switchNode",

+        "name": "switch input model-invariant-uuid",

+        "xml": "<switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-invariant-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 968.7857475280762,

+        "y": 741.7054843902588,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "ae90c040.3cc39",

+                "5f2c6ed0.29635"

+            ]

+        ]

+    },

+    {

+        "id": "ae90c040.3cc39",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1177.4524192810059,

+        "y": 718.8484477996826,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "b0cbcbbb.b2c498"

+            ]

+        ]

+    },

+    {

+        "id": "5f2c6ed0.29635",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1178.881015777588,

+        "y": 763.1340389251709,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "f383b18b.bfab9"

+            ]

+        ]

+    },

+    {

+        "id": "f383b18b.bfab9",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-invariant-uuid'\n  value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-invariant-uuid`' />",

+        "comments": "",

+        "x": 1333.1667518615723,

+        "y": 762.5626111030579,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "4d3a329b.f2f90c",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-uuid'\n  value='`$db.pnf-model.uuid`' />",

+        "comments": "",

+        "x": 1328.8809432983398,

+        "y": 807.419716835022,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "16c17b92.58b8f4",

+        "type": "switchNode",

+        "name": "switch input model-uuid",

+        "xml": "<switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 938.4047660827637,

+        "y": 830.2442216873169,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "59c0725a.54805c",

+                "bfa95def.afc74"

+            ]

+        ]

+    },

+    {

+        "id": "59c0725a.54805c",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1178.4047393798828,

+        "y": 807.3871536254883,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "4d3a329b.f2f90c"

+            ]

+        ]

+    },

+    {

+        "id": "bfa95def.afc74",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1179.8333358764648,

+        "y": 851.6727447509766,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "f2189dfb.909da"

+            ]

+        ]

+    },

+    {

+        "id": "f2189dfb.909da",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-uuid'\n  value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-uuid`' />",

+        "comments": "",

+        "x": 1334.1190719604492,

+        "y": 851.1013169288635,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "24e86468.e8cd5c",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-version'\n  value='`$db.pnf-model.version`' />",

+        "comments": "",

+        "x": 1326.0238761901855,

+        "y": 896.2769241333008,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "2ef35e2.ce87ea2",

+        "type": "switchNode",

+        "name": "switch input model-version",

+        "xml": "<switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-version`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 949.5476379394531,

+        "y": 919.1013689041138,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "9b0d0090.c86a6",

+                "43470848.9d99c8"

+            ]

+        ]

+    },

+    {

+        "id": "9b0d0090.c86a6",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1175.547622680664,

+        "y": 896.2443313598633,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "24e86468.e8cd5c"

+            ]

+        ]

+    },

+    {

+        "id": "43470848.9d99c8",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1176.976219177246,

+        "y": 940.5299224853516,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "1db4f705.93ccc9"

+            ]

+        ]

+    },

+    {

+        "id": "1db4f705.93ccc9",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-version'\n  value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-version`' />\n",

+        "comments": "",

+        "x": 1331.2619552612305,

+        "y": 939.9584946632385,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "1dc78c79.a450c4",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-name'\n  value='`$db.pnf-model.name`' />\n",

+        "comments": "",

+        "x": 1326.0238761901855,

+        "y": 983.4197463989258,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "25981633.c7dc4a",

+        "type": "switchNode",

+        "name": "switch input model-name",

+        "xml": "<switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 944.5476379394531,

+        "y": 1006.2441911697388,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "443be686.54dde8",

+                "f6a73c6d.1c44a"

+            ]

+        ]

+    },

+    {

+        "id": "443be686.54dde8",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1175.547622680664,

+        "y": 983.3871536254883,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "1dc78c79.a450c4"

+            ]

+        ]

+    },

+    {

+        "id": "f6a73c6d.1c44a",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1176.976219177246,

+        "y": 1027.6727447509766,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "963f984e.4e1598"

+            ]

+        ]

+    },

+    {

+        "id": "963f984e.4e1598",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-name'\n  value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-name`' />\n",

+        "comments": "",

+        "x": 1331.2619552612305,

+        "y": 1027.1013169288635,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "152546f0.c6dac9",

+        "type": "set",

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

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

+        "comments": "",

+        "x": 894.9047088623047,

+        "y": 658.0388488769531,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "6f7c97df.b99708",

+        "type": "set",

+        "name": "set model-customization-uuid",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-customization-uuid' \n  value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid`' />\n",

+        "comments": "",

+        "x": 957.3332252502441,

+        "y": 1079.0863952636719,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "b26b3f10.8cd93",

+        "type": "switchNode",

+        "name": "switch service-data.pnfs.pnf_length",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 441.58329010009766,

+        "y": 292.4285001754761,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "548784a8.6fc1bc",

+                "97bdaa3b.0e9cb8",

+                "f611eac6.477cc8"

+            ]

+        ]

+    },

+    {

+        "id": "548784a8.6fc1bc",

+        "type": "other",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 683.7976760864258,

+        "y": 230.98793125152588,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "d33ee57f.a3ecb8"

+            ]

+        ]

+    },

+    {

+        "id": "1c98dcd.f3b3f23",

+        "type": "set",

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

+        "xml": "<set>\n<parameter name='pnf-index' value='0' />\n",

+        "comments": "",

+        "x": 1019.083381652832,

+        "y": 230.48800563812256,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "97bdaa3b.0e9cb8",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 684.976203918457,

+        "y": 352.607120513916,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "231e0e98.80a622"

+            ]

+        ]

+    },

+    {

+        "id": "6ac25c2c.af1c14",

+        "type": "switchNode",

+        "name": "switch resource-resolution-data.status",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 843.3693580627441,

+        "y": 2105.3293199539185,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "3502dbdf.32a874",

+                "cc3acc09.1c768"

+            ]

+        ]

+    },

+    {

+        "id": "3502dbdf.32a874",

+        "type": "other",

+        "name": "PENDING",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1112.7265739440918,

+        "y": 2105.3292760849,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "829e3fb9.d93a7"

+            ]

+        ]

+    },

+    {

+        "id": "cc3acc09.1c768",

+        "type": "other",

+        "name": "FAILED",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1106.2623901367188,

+        "y": 2156.2936067581177,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "829e3fb9.d93a7"

+            ]

+        ]

+    },

+    {

+        "id": "829e3fb9.d93a7",

+        "type": "call",

+        "name": "call ss.capability-dg",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1321.3811225891113,

+        "y": 2157.0554580688477,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "3962ddfe.4c5df2",

+                "3e772b22.e1c734"

+            ]

+        ]

+    },

+    {

+        "id": "bdafebf6.f2fbb8",

+        "type": "returnFailure",

+        "name": "return failure",

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

+        "comments": "",

+        "x": 1888.9286193847656,

+        "y": 2413.532018661499,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "3962ddfe.4c5df2",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1506.2736320495605,

+        "y": 2157.055519104004,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "c929724.d0d769"

+            ]

+        ]

+    },

+    {

+        "id": "c929724.d0d769",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1669.5477485656738,

+        "y": 2156.3650598526,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "bdafebf6.f2fbb8",

+                "b6818d14.aad68",

+                "ae39be90.d76b7",

+                "60ef7bf2.fa7a14",

+                "e7c0edc.af4641"

+            ]

+        ]

+    },

+    {

+        "id": "ae39be90.d76b7",

+        "type": "execute",

+        "name": "generate ss-pnf url replace service-instance-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.ss-pnf-assignments`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-pnf-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.service-instance-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1992.8808403015137,

+        "y": 2209.88161945343,

+        "z": "37882b3b.b21224",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e7c0edc.af4641",

+        "type": "execute",

+        "name": "execute RestApiCallNode - PUT pnf",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.ss.pnf.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-pnf-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ss-pnf\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1962.3451347351074,

+        "y": 2312.7388410568237,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "2aae309b.44db4",

+                "6c63be99.6e9df"

+            ]

+        ]

+    },

+    {

+        "id": "2aae309b.44db4",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2236.9388008117676,

+        "y": 2366.736994743347,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "47b71a3e.97bf84"

+            ]

+        ]

+    },

+    {

+        "id": "6c63be99.6e9df",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2229.3674354553223,

+        "y": 2313.237014770508,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "47b71a3e.97bf84"

+            ]

+        ]

+    },

+    {

+        "id": "b6818d14.aad68",

+        "type": "set",

+        "name": "set pf data for restapi-call-node",

+        "xml": "<set>\n<parameter name='pf.pnf-id'\n    value='`$service-data.pnfs.pnf[$pnf-index].pnf-id`' />\n<parameter name='pf.pnf-data.sdnc-request-header.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.`' />\n<parameter name='pf.pnf-data.request-information.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.`' />\n<parameter name='pf.pnf-data.service-information.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.`' />\n<parameter name='pf.pnf-data.pnf-details.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.`' />\n<parameter name='pf.pnf-data.pnf-topology.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.`' />\n<parameter name='pf.pnf-data.pnf-level-oper-status.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.`' />\n<parameter name='pf.pnf-data.pnf-request-input.pnf-input-parameters.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.pnf-input-parameters.`' />\n<parameter name='pf.pnf-data.pnf-request-input.request-version'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.request-version`' />\n<parameter name='pf.pnf-data.pnf-request-input.pnf-name'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.pnf-name`' />\n<parameter name='pf.pnf-data.pnf-request-input.tenant'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.tenant`' />\n<parameter name='pf.pnf-data.pnf-request-input.aic-cloud-region'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.aic-cloud-region`' />\n<parameter name='pf.pnf-data.pnf-request-input.aic-clli'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.aic-clli`' />",

+        "comments": "",

+        "x": 1945.3331413269043,

+        "y": 2155.976131439209,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "60ef7bf2.fa7a14",

+        "type": "execute",

+        "name": "generate ss-pnf url - replace pnf-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ss-pnf-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-pnf-url\"/>\n    <parameter name=\"target\" value=\"{pnf-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1957.16654586792,

+        "y": 2260.69038772583,

+        "z": "37882b3b.b21224",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "97cbe59f.102fe8",

+        "type": "execute",

+        "name": "printContext",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 344.42456817626953,

+        "y": 2600.920820236206,

+        "z": "37882b3b.b21224",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b9417a96.c89598",

+        "type": "set",

+        "name": "set ss.capability-type = pnf",

+        "xml": "<set>\n<parameter name='ss.capability-type' value='pnf' />\n",

+        "comments": "",

+        "x": 409.89292907714844,

+        "y": 1375.5357942581177,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "ed282b71.ede0f8",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 875.8927993774414,

+        "y": 1492.892912864685,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "ca44a755.ad1c68",

+                "21ad94d1.be148c",

+                "31272402.ad905c"

+            ]

+        ]

+    },

+    {

+        "id": "b109eefc.1d872",

+        "type": "for",

+        "name": "for each existing PNF",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1032.0357284545898,

+        "y": 352.78579807281494,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "b986a80e.96c248"

+            ]

+        ]

+    },

+    {

+        "id": "b986a80e.96c248",

+        "type": "switchNode",

+        "name": "switch pnf-id: input vs service-data",

+        "xml": "<switch test='`$pf-topology-operation-input.pnf-details.pnf-id == $service-data.pnfs.pnf[$idx].pnf-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1309.321434020996,

+        "y": 352.85728549957275,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "cb09cf77.62df4"

+            ]

+        ]

+    },

+    {

+        "id": "cb09cf77.62df4",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1532.1072006225586,

+        "y": 352.4287576675415,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "747e7c3c.174b44"

+            ]

+        ]

+    },

+    {

+        "id": "747e7c3c.174b44",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1664.5714530944824,

+        "y": 352.46431827545166,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "2a95ccf.7794434",

+                "8c6ecdd5.9e28b",

+                "4b25e8bd.e53158"

+            ]

+        ]

+    },

+    {

+        "id": "2a95ccf.7794434",

+        "type": "break",

+        "name": "break",

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

+        "comments": "",

+        "x": 1832.464241027832,

+        "y": 438.4642963409424,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "923b1ffd.af18b",

+        "type": "set",

+        "name": "set new pnf_length = 1",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf_length' value='1' />\n",

+        "comments": "",

+        "x": 1042.642951965332,

+        "y": 275.82148838043213,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "8c6ecdd5.9e28b",

+        "type": "set",

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

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

+        "comments": "",

+        "x": 1863.0357971191406,

+        "y": 395.2499752044678,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "71acdeef.4b572",

+        "type": "set",

+        "name": "set is-new-pnf = true",

+        "xml": "<set>\n<parameter name='is-new-pnf' value='true' />\n",

+        "comments": "",

+        "x": 395.8929214477539,

+        "y": 212.32144355773926,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "4b25e8bd.e53158",

+        "type": "set",

+        "name": "set is-new-pnf = false",

+        "xml": "<set>\n<parameter name='is-new-pnf' value='false' />\n",

+        "comments": "",

+        "x": 1871.0714836120605,

+        "y": 351.9643201828003,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "231e0e98.80a622",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 822.2500228881836,

+        "y": 352.2500162124634,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "b109eefc.1d872",

+                "12659093.1463bf"

+            ]

+        ]

+    },

+    {

+        "id": "12659093.1463bf",

+        "type": "switchNode",

+        "name": "switch is-new-pnf",

+        "xml": "<switch test='`$is-new-pnf`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1019.7500152587891,

+        "y": 438.8214178085327,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "273b5e8f.735eb2"

+            ]

+        ]

+    },

+    {

+        "id": "273b5e8f.735eb2",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1199.6071701049805,

+        "y": 438.39286518096924,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "35d2b6f5.5b532a"

+            ]

+        ]

+    },

+    {

+        "id": "d33ee57f.a3ecb8",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 837.7499923706055,

+        "y": 230.99999713897705,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "1c98dcd.f3b3f23",

+                "923b1ffd.af18b"

+            ]

+        ]

+    },

+    {

+        "id": "f611eac6.477cc8",

+        "type": "other",

+        "name": "0",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 682.2499923706055,

+        "y": 290.7499990463257,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "d33ee57f.a3ecb8"

+            ]

+        ]

+    },

+    {

+        "id": "2c0f97dd.67d808",

+        "type": "switchNode",

+        "name": "switch is-new-pnf",

+        "xml": "<switch test='`$is-new-pnf`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 383.75000381469727,

+        "y": 606.2500057220459,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "a0d4e067.649e6"

+            ]

+        ]

+    },

+    {

+        "id": "a0d4e067.649e6",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 563.6071586608887,

+        "y": 605.8214530944824,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "9217be7a.bbdb1"

+            ]

+        ]

+    },

+    {

+        "id": "42f65de7.c91174",

+        "type": "set",

+        "name": "set new pnf_length++",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf_length' value='`$service-data.pnfs.pnf_length + 1`' />\n",

+        "comments": "",

+        "x": 1547.5,

+        "y": 485,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "35d2b6f5.5b532a",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1345.4999771118164,

+        "y": 437.99996185302734,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "42f65de7.c91174",

+                "5e6b2c5e.23b7b4"

+            ]

+        ]

+    },

+    {

+        "id": "5e6b2c5e.23b7b4",

+        "type": "set",

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

+        "xml": "<set>\n<parameter name='pnf-index' value='`$service-data.pnfs.pnf_length`' />\n",

+        "comments": "",

+        "x": 1556.9999809265137,

+        "y": 437.49996185302734,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "47b71a3e.97bf84",

+        "type": "set",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Failed to persist self-serve pnf assignments during assign in MD-SAL\" />",

+        "comments": "",

+        "x": 2449.285758972168,

+        "y": 2312.107021331787,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "1d5ac87a.53fd58",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 577.5000228881836,

+        "y": 2105.142770767212,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "6ac25c2c.af1c14",

+                "cb3f6813.5ca268"

+            ]

+        ]

+    },

+    {

+        "id": "cb3f6813.5ca268",

+        "type": "break",

+        "name": "break",

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

+        "comments": "",

+        "x": 741.7857627868652,

+        "y": 2481.4284267425537,

+        "z": "37882b3b.b21224",

+        "wires": []

+    },

+    {

+        "id": "3e772b22.e1c734",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1517.5000228881836,

+        "y": 2277.5000324249268,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "7440700b.da7e"

+            ]

+        ]

+    },

+    {

+        "id": "7440700b.da7e",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"`'EXECUTION DONE: ' + $ss.capability-dg`\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1661.2500228881836,

+        "y": 2276.2500324249268,

+        "z": "37882b3b.b21224",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "31272402.ad905c",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"DONE with pnf-ra-assigment\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1054.1071319580078,

+        "y": 1592.5000228881836,

+        "z": "37882b3b.b21224",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "45a102ef.9c38fc",

+        "type": "execute",

+        "name": "execute PropertiesNode",

+        "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": 817.5000381469727,

+        "y": 1432.4286422729492,

+        "z": "37882b3b.b21224",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "192a8a0a.311bd6",

+        "type": "switchNode",

+        "name": "switch prop.controller.user",

+        "xml": "<switch test='`$prop.controller.user`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 406.21427372523704,

+        "y": 1432.8572630201065,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "98f24d4.445dfb"

+            ]

+        ]

+    },

+    {

+        "id": "98f24d4.445dfb",

+        "type": "failure",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 606.0713691711426,

+        "y": 1432.428677558899,

+        "z": "37882b3b.b21224",

+        "wires": [

+            [

+                "45a102ef.9c38fc"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-pnf-generate-name.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-pnf-generate-name.json
new file mode 100644
index 0000000..8edc592
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-pnf-generate-name.json
@@ -0,0 +1,1012 @@
+[

+    {

+        "id": "b88c5216.b5736",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 95,

+        "y": 40,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "7457afc.e7b5c5"

+            ]

+        ]

+    },

+    {

+        "id": "7457afc.e7b5c5",

+        "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": 347.5713806152344,

+        "y": 39.428558349609375,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "b2acf94b.e7a798"

+            ]

+        ]

+    },

+    {

+        "id": "b2acf94b.e7a798",

+        "type": "method",

+        "name": "self-serve-pnf-generate-name",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 217.80955505371094,

+        "y": 101.333327293396,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "507f9399.9a0afc"

+            ]

+        ]

+    },

+    {

+        "id": "50605a38.ff24c4",

+        "type": "comment",

+        "name": "For Generate Name PNF DG Capability ",

+        "info": "Support Bulk assign and single delete\nAlso calls Naming gen mS for assign/un-assign\n\nAdded by Ajay Singh(as396y)",

+        "comments": "",

+        "x": 1049.1269989013672,

+        "y": 49.84126853942871,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "a6a6a55.0a5fa58",

+        "type": "execute",

+        "name": "execute replace extra comma",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>\n   <parameter name='outputPath' value='tmp.naming-data-payload' />\n   <parameter name='source' value='`$tmp.naming-data-payload`' />\n   <parameter name='target' value=',}' />\n   <parameter name='replacement' value='}' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1210.412742614746,

+        "y": 729.587236404419,

+        "z": "47663f64.733c6",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ff8aed88.224a1",

+        "type": "for",

+        "name": "for pnf-parameters-data",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 910.6152496337891,

+        "y": 316.2301368713379,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "ae413e8b.ac2d2"

+            ]

+        ]

+    },

+    {

+        "id": "ae413e8b.ac2d2",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1153.4723052978516,

+        "y": 316.2301368713379,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "6fb54d77.d6b6b4"

+            ]

+        ]

+    },

+    {

+        "id": "6fb54d77.d6b6b4",

+        "type": "not-found",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1334.1866607666016,

+        "y": 316.2301216125488,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "ced67690.032b88"

+            ]

+        ]

+    },

+    {

+        "id": "e2604fbb.8e465",

+        "type": "for",

+        "name": "for pnf-parameters-data",

+        "xml": "<for index='j' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1179.912742614746,

+        "y": 530.587236404419,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "cd134dba.3cd6c"

+            ]

+        ]

+    },

+    {

+        "id": "9b5b4bb4.5f0f08",

+        "type": "set",

+        "name": "set payload data",

+        "xml": "<set>\n<parameter name=\"tmp.naming-data-payload\" value=\"`$tmp.naming-data-payload + '&quot;' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`\"/>\n<parameter name=\"`tmp.gen-name[0].element[$j].name`\" value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name`\"/>\n<parameter name=\"`tmp.gen-name[0].element[$j].value`\" value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`\"/>\n<parameter name=\"`tmp.gen-name[0].element_length`\" value='`$j + 1`' />",

+        "comments": "",

+        "x": 1782.412742614746,

+        "y": 528.587236404419,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "9f5057ce.521a68",

+        "type": "set",

+        "name": "set set payload data",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + '{'`\" />\n<parameter name='tmp.gen-name_length' value='1' />",

+        "comments": "",

+        "x": 1177.4128952026367,

+        "y": 456.4443302154541,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "58b5a659.b08f18",

+        "type": "set",

+        "name": "set payload data",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + '},'`\" />",

+        "comments": "",

+        "x": 1177.412742614746,

+        "y": 592.587236404419,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "d74076ad.786678",

+        "type": "set",

+        "name": "set close payload list",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + ']}'`\" />",

+        "comments": "",

+        "x": 1183.412742614746,

+        "y": 657.587236404419,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "9fd916b4.e81f98",

+        "type": "execute",

+        "name": "execute replace extra comma",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>\n   <parameter name='outputPath' value='tmp.naming-data-payload' />\n   <parameter name='source' value='`$tmp.naming-data-payload`' />\n   <parameter name='target' value=',]' />\n   <parameter name='replacement' value=']' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1213.412742614746,

+        "y": 783.587236404419,

+        "z": "47663f64.733c6",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "98250f74.201ec",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1559.4127349853516,

+        "y": 884.3372316360474,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "d417379f.ef0008"

+            ]

+        ]

+    },

+    {

+        "id": "69da5ad9.488e64",

+        "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 from NameGenerationNode Unassign\" />\n",

+        "comments": "",

+        "x": 1939.4127349853516,

+        "y": 984.3372316360474,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "a0a83a6.20135c8",

+        "type": "failure",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1564.4127349853516,

+        "y": 983.3372316360474,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "d417379f.ef0008"

+            ]

+        ]

+    },

+    {

+        "id": "d417379f.ef0008",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1737.4127349853516,

+        "y": 928.3372316360474,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "69da5ad9.488e64",

+                "c07c288.2dea2d8"

+            ]

+        ]

+    },

+    {

+        "id": "c07c288.2dea2d8",

+        "type": "set",

+        "name": "set status as FAILED",

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

+        "comments": "",

+        "x": 1953.4127349853516,

+        "y": 875.3372316360474,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "c5ce270d.60a958",

+        "type": "not-found",

+        "name": "assign",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 495.85315704345703,

+        "y": 1509.535545349121,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "641435f5.d1d47c"

+            ]

+        ]

+    },

+    {

+        "id": "23a07f7c.2da06",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"jsonStringToCtx\">\n\t<parameter name=\"source\" value=\"nameGenResponse.httpResponse\" />\n\t<parameter name=\"outputPath\" value=\"jsonContextPrefix\" />\n\t<parameter name=\"isEscaped\" value=\"false\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1186.912857055664,

+        "y": 1178.5872964859009,

+        "z": "47663f64.733c6",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ced67690.032b88",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 927.6627349853516,

+        "y": 456.5872564315796,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "a6a6a55.0a5fa58",

+                "e2604fbb.8e465",

+                "9f5057ce.521a68",

+                "58b5a659.b08f18",

+                "d74076ad.786678",

+                "9fd916b4.e81f98",

+                "23a07f7c.2da06",

+                "5154be9.24fa74",

+                "6f100298.62962c",

+                "6f4f57aa.3a7948",

+                "da93067c.a8af58",

+                "aea4c7b4.f8ea78"

+            ]

+        ]

+    },

+    {

+        "id": "2c460df5.c700d2",

+        "type": "execute",

+        "name": "execute replace extra comma",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>\n   <parameter name='outputPath' value='tmp.naming-data-payload' />\n   <parameter name='source' value='`$tmp.naming-data-payload`' />\n   <parameter name='target' value=',}' />\n   <parameter name='replacement' value='}' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1269.7815170288086,

+        "y": 1969.7180500030518,

+        "z": "47663f64.733c6",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "76d73cab.455524",

+        "type": "for",

+        "name": "for pnf-parameters-data",

+        "xml": "<for index='j' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1742.2815570831299,

+        "y": 1591.9681177139282,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "af974742.1d3188"

+            ]

+        ]

+    },

+    {

+        "id": "af974742.1d3188",

+        "type": "set",

+        "name": "set payload data",

+        "xml": "<set>\n<parameter name=\"tmp.naming-data-payload\" value=\"`$tmp.naming-data-payload + '&quot;' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`\"/>\n<parameter name=\"`tmp.gen-name[$tmp.gen-name_length].element[$j].name`\" value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name`\"/>\n<parameter name=\"`tmp.gen-name[$tmp.gen-name_length].element[$j].value`\" value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`\"/>\n<parameter name=\"`tmp.gen-name[$tmp.gen-name_length].element_length`\" value='`$j + 1`' />",

+        "comments": "",

+        "x": 1994.7815570831299,

+        "y": 1591.9681177139282,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "4a7d165d.01a3c8",

+        "type": "set",

+        "name": "set payload data",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + '{'`\" />\n",

+        "comments": "",

+        "x": 1723.2100238800049,

+        "y": 1530.6825342178345,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "e5d92c85.9a213",

+        "type": "set",

+        "name": "set payload data",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + '},'`\" />\n<parameter name='tmp.gen-name_length' value='`$tmp.gen-name_length + 1`' />",

+        "comments": "",

+        "x": 1724.7815570831299,

+        "y": 1647.9681177139282,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "dcae6674.38adc8",

+        "type": "set",

+        "name": "set close payload list",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + ']}'`\" />",

+        "comments": "",

+        "x": 1244.7815170288086,

+        "y": 1926.7179889678955,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "608efea4.198bb",

+        "type": "execute",

+        "name": "execute replace extra comma",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>\n   <parameter name='outputPath' value='tmp.naming-data-payload' />\n   <parameter name='source' value='`$tmp.naming-data-payload`' />\n   <parameter name='target' value=',]' />\n   <parameter name='replacement' value=']' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1270.7815170288086,

+        "y": 2020.7180500030518,

+        "z": "47663f64.733c6",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4665057f.84ae0c",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1616.7816314697266,

+        "y": 2108.468292236328,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "4e7bf830.d0c718"

+            ]

+        ]

+    },

+    {

+        "id": "96fca7a2.79f9b8",

+        "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 from NameGenerationNode Assign\" />\n",

+        "comments": "",

+        "x": 1981.7816314697266,

+        "y": 2208.468292236328,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "9dc3547.3d8b5a8",

+        "type": "failure",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1621.7816314697266,

+        "y": 2207.468292236328,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "4e7bf830.d0c718"

+            ]

+        ]

+    },

+    {

+        "id": "4e7bf830.d0c718",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1779.7816314697266,

+        "y": 2152.468292236328,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "96fca7a2.79f9b8",

+                "ff3d6552.aec5c8"

+            ]

+        ]

+    },

+    {

+        "id": "ff3d6552.aec5c8",

+        "type": "set",

+        "name": "set status as FAILED",

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

+        "comments": "",

+        "x": 1995.7816314697266,

+        "y": 2099.468292236328,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "75547aec.d75bf4",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"jsonStringToCtx\">\n\t<parameter name=\"source\" value=\"nameGenResponse.httpResponse\" />\n\t<parameter name=\"outputPath\" value=\"jsonContextPrefix\" />\n\t<parameter name=\"isEscaped\" value=\"false\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1253.031509399414,

+        "y": 2333.4680500030518,

+        "z": "47663f64.733c6",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a5c01350.45acf",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1497.4246158599854,

+        "y": 1592.753761291504,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "76d73cab.455524",

+                "4a7d165d.01a3c8",

+                "e5d92c85.9a213"

+            ]

+        ]

+    },

+    {

+        "id": "cd134dba.3cd6c",

+        "type": "switchNode",

+        "name": "switch external-key",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1418.412742614746,

+        "y": 529.587236404419,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "2f01bbf8.70ce94"

+            ]

+        ]

+    },

+    {

+        "id": "2f01bbf8.70ce94",

+        "type": "not-found",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1602.412742614746,

+        "y": 529.587236404419,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "9b5b4bb4.5f0f08"

+            ]

+        ]

+    },

+    {

+        "id": "96c91f0b.6c04b",

+        "type": "switchNode",

+        "name": "switch capability action",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 289.2142028808594,

+        "y": 897.2262077331543,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "1777cc80.a758a4",

+                "c5ce270d.60a958"

+            ]

+        ]

+    },

+    {

+        "id": "1777cc80.a758a4",

+        "type": "not-found",

+        "name": "unassign",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 510.7619094848633,

+        "y": 255.73809051513672,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "1e39e688.436eb9"

+            ]

+        ]

+    },

+    {

+        "id": "507f9399.9a0afc",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 198.93649291992188,

+        "y": 167.206392288208,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "96c91f0b.6c04b",

+                "72e5d646.4b96d8"

+            ]

+        ]

+    },

+    {

+        "id": "632468e.d02eb98",

+        "type": "for",

+        "name": "for pnf-parameters-data",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 913.8295440673828,

+        "y": 1590.968406677246,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "d8ff59ce.2da9b8"

+            ]

+        ]

+    },

+    {

+        "id": "d8ff59ce.2da9b8",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1155.4365997314453,

+        "y": 1590.968406677246,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "326c3f39.df9cc"

+            ]

+        ]

+    },

+    {

+        "id": "326c3f39.df9cc",

+        "type": "not-found",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1336.1509552001953,

+        "y": 1590.968406677246,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "a5c01350.45acf"

+            ]

+        ]

+    },

+    {

+        "id": "641435f5.d1d47c",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 662.8650588989258,

+        "y": 1510.1230688095093,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "632468e.d02eb98",

+                "2ad6999a.91aec6",

+                "cc8c7404.a672b8"

+            ]

+        ]

+    },

+    {

+        "id": "2ad6999a.91aec6",

+        "type": "set",

+        "name": "set tmp.naming-data-payload",

+        "xml": "<set>\n\t<parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />\n\t<parameter name='tmp.gen-name_length' value='0' />",

+        "comments": "",

+        "x": 933.1150646209717,

+        "y": 1509.8730697631836,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "cc8c7404.a672b8",

+        "type": "switchNode",

+        "name": "switch tmp.naming-data-payload is null",

+        "xml": "<switch test=\"`$tmp.naming-data-payload == ''`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 969.8650665283203,

+        "y": 1788.8730735778809,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "579267aa.8a65f8"

+            ]

+        ]

+    },

+    {

+        "id": "579267aa.8a65f8",

+        "type": "not-found",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1233.1150093078613,

+        "y": 1789.8730735778809,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "95c16a04.014c18"

+            ]

+        ]

+    },

+    {

+        "id": "95c16a04.014c18",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1006.1150131225586,

+        "y": 1926.6230792999268,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "2c460df5.c700d2",

+                "dcae6674.38adc8",

+                "608efea4.198bb",

+                "75547aec.d75bf4",

+                "8bc3b38c.d0c4",

+                "4973abae.6e2f54",

+                "5be1d14c.05009",

+                "cc104486.f0b7b8"

+            ]

+        ]

+    },

+    {

+        "id": "8bc3b38c.d0c4",

+        "type": "execute",

+        "name": "execute RestApiCallNode - POST gen-name",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >    \n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />\n    <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />\n    <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name=\"responsePrefix\" value=\"nameGenResponse\" />\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1321.2579498291016,

+        "y": 2152.801788330078,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "4665057f.84ae0c",

+                "9dc3547.3d8b5a8"

+            ]

+        ]

+    },

+    {

+        "id": "5154be9.24fa74",

+        "type": "execute",

+        "name": "execute RestApiCallNode - DELETE gen-name",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >    \n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />\n    <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />\n    <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"nameGenResponse\" />\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1260.5555572509766,

+        "y": 931.1944704055786,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "98250f74.201ec",

+                "a0a83a6.20135c8"

+            ]

+        ]

+    },

+    {

+        "id": "afb35f21.b905a",

+        "type": "set",

+        "name": "set tmp.naming-data-payload",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />\n",

+        "comments": "",

+        "x": 932.5000076293945,

+        "y": 257.50000063702464,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "1e39e688.436eb9",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 681.2500076293945,

+        "y": 256.25000190734863,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "afb35f21.b905a",

+                "ff8aed88.224a1"

+            ]

+        ]

+    },

+    {

+        "id": "6f100298.62962c",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"BEFORE namegeneration.node.UnAssignNameNode\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1128.7500381469727,

+        "y": 857.5000114440918,

+        "z": "47663f64.733c6",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6f4f57aa.3a7948",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"AFTER namegeneration.node.UnAssignNameNode\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1127.9167861938477,

+        "y": 1018.7500133514404,

+        "z": "47663f64.733c6",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "43f8c16b.8381",

+        "type": "switchNode",

+        "name": "switch resource-name",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1430.000015258789,

+        "y": 1310.0000267028809,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "743bf2b5.4af42c"

+            ]

+        ]

+    },

+    {

+        "id": "743bf2b5.4af42c",

+        "type": "not-found",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1622.000015258789,

+        "y": 1309.0000267028809,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "a9563ae6.976b98"

+            ]

+        ]

+    },

+    {

+        "id": "a9563ae6.976b98",

+        "type": "set",

+        "name": "set set payload data",

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

+        "comments": "",

+        "x": 1808.500015258789,

+        "y": 1309.0000267028809,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "aea4c7b4.f8ea78",

+        "type": "for",

+        "name": "for response elements",

+        "xml": "<for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1182.0000076293945,

+        "y": 1309.0000190734863,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "43f8c16b.8381"

+            ]

+        ]

+    },

+    {

+        "id": "da93067c.a8af58",

+        "type": "set",

+        "name": "set status as DELETED",

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

+        "comments": "",

+        "x": 1183.250015258789,

+        "y": 1250.5000171661377,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "4973abae.6e2f54",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"BEFORE namegeneration.node.AssignNameNode\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1191.2500267028809,

+        "y": 2081.2500343322754,

+        "z": "47663f64.733c6",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5be1d14c.05009",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"AFTER namegeneration.node.AssignNameNode\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1187.9166946411133,

+        "y": 2236.25004196167,

+        "z": "47663f64.733c6",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e5fa05b3.04f778",

+        "type": "for",

+        "name": "for pnf-parameters-data",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1494.4403839111328,

+        "y": 2438.83305311203,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "cbff9132.cfa58"

+            ]

+        ]

+    },

+    {

+        "id": "cc104486.f0b7b8",

+        "type": "for",

+        "name": "for response elements",

+        "xml": "<for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1247.4403839111328,

+        "y": 2437.83305311203,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "e5fa05b3.04f778"

+            ]

+        ]

+    },

+    {

+        "id": "cbff9132.cfa58",

+        "type": "switchNode",

+        "name": "switch resource-name",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1741.5356369018555,

+        "y": 2438.595028221607,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "ba666656.113a78"

+            ]

+        ]

+    },

+    {

+        "id": "6b42ec5e.e82174",

+        "type": "set",

+        "name": "set param value and status",

+        "xml": "<set>\n<parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$l].value`' value=\"`$jsonContextPrefix.elements[$n].resource-value`\" />\n<parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$l].resource-resolution-data.status`' value='SUCCESS' />",

+        "comments": "",

+        "x": 2129.059555053711,

+        "y": 2437.3223574757576,

+        "z": "47663f64.733c6",

+        "wires": []

+    },

+    {

+        "id": "ba666656.113a78",

+        "type": "not-found",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1925.8212394714355,

+        "y": 2438.166490852833,

+        "z": "47663f64.733c6",

+        "wires": [

+            [

+                "6b42ec5e.e82174"

+            ]

+        ]

+    },

+    {

+        "id": "72e5d646.4b96d8",

+        "type": "set",

+        "name": "set pathname for context logging",

+        "xml": "<set>\n<parameter name='pathname' \n\tvalue=\"`'/var/tmp/ss-gen-name-' + \n\t$ss.capability-type + '-' + $ss.capability-action + '-' + \n\t$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.pnf-id + '.log'`\" />\n",

+        "comments": "",

+        "x": 497.50003814697266,

+        "y": 167.500018119812,

+        "z": "47663f64.733c6",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-pnf-ra-assignment.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-pnf-ra-assignment.json
new file mode 100644
index 0000000..a02cdc9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-pnf-ra-assignment.json
@@ -0,0 +1,1086 @@
+[

+    {

+        "id": "6e7dfa88.0b63a4",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 113,

+        "y": 115,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "ef8026b7.3aed68"

+            ]

+        ]

+    },

+    {

+        "id": "ef8026b7.3aed68",

+        "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": 389,

+        "y": 116,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "501d9d26.bee994"

+            ]

+        ]

+    },

+    {

+        "id": "501d9d26.bee994",

+        "type": "method",

+        "name": "self-serve-pnf-ra-assignment",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 245,

+        "y": 166,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "197fccd4.459f43"

+            ]

+        ]

+    },

+    {

+        "id": "197fccd4.459f43",

+        "type": "block",

+        "name": "block atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 208.16664123535156,

+        "y": 217.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "7426a829.e11b58",

+                "620a96bb.b8f688",

+                "3cdb0db8.762952",

+                "36172836.56b358",

+                "e2b19a30.529508",

+                "2598fbe5.d5c5f4",

+                "37b2123.535f6ee",

+                "e2f03825.a87998",

+                "b0595425.3a0188",

+                "cc933ad3.514df8",

+                "4d6dae.f7535254",

+                "20179f5d.5c224",

+                "4a91f214.3421ac",

+                "7a5f6ac8.a537a4",

+                "94bb3392.15fed",

+                "791d57a6.77d138"

+            ]

+        ]

+    },

+    {

+        "id": "620a96bb.b8f688",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name=\"cds\" value=\"execution-service_process.\"/>    \n   <parameter name=\"`$cds + 'commonHeader.requestId'`\" value=\"`$tmp.return.generate.pnf-se-serv-uuid`\"/>\n   <parameter name=\"resource-type\" value=\"`$pnf-topology-operation-input.pnf-details.pnf-type`\" />  \n   <parameter name=\"`$cds + 'commonHeader.subRequestId'`\" value=\"`$pnf-topology-operation-input.pnf-details.pnf-id`\" />   \n   <parameter name=\"`$cds + 'actionIdentifiers.actionName'`\" value=\"resource-assignment\"/> \n   <parameter name=\"responsePrefix\" value=\"raAssign\" />\n   <parameter name=\"`$cds + 'isNonAppend'`\" value=\"true\"/>\n   <parameter name=\"`$cds + 'commonHeader.originatorId'`\" value=\"SDNC_DG\"/>\n   <parameter name=\"`$cds + 'actionIdentifiers.mode'`\" value=\"sync\"/>\n",

+        "comments": "",

+        "x": 393.9166603088379,

+        "y": 262.08333015441895,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "d40fa708.653618",

+        "type": "get-resource",

+        "name": "get-resource VF_MODEL",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODEL WHERE customization_uuid = $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid'\n  pfx='db1.vf-model'>\n  \n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 932.8094635009766,

+        "y": 653.6189861297607,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "9b84f245.766fb",

+                "7d2bf88b.328138",

+                "389573c6.6a65bc"

+            ]

+        ]

+    },

+    {

+        "id": "9b84f245.766fb",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1177.8095626831055,

+        "y": 602.904709815979,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "1a0cb80.0f69248"

+            ]

+        ]

+    },

+    {

+        "id": "1a0cb80.0f69248",

+        "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 reading VF_MODEL table\" />\n",

+        "comments": "",

+        "x": 1350.8095626831055,

+        "y": 601.904709815979,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "cab43d3d.ed3fd",

+        "type": "set",

+        "name": "set tmp.sdnc-model-name, tmp.sdnc-model-version, tmp.sdnc-artifact-name",

+        "xml": "<set>\n<parameter name='tmp.sdnc-model-name' value='`$db1.vf-model.sdnc-model-name`' />\n<parameter name='tmp.sdnc-model-version' value='`$db1.vf-model.sdnc-model-version`' />\n<parameter name='tmp.sdnc-artifact-name' value='`$db1.vf-model.sdnc-artifact-name`' />\n\n\n\n\n",

+        "comments": "",

+        "x": 1553.2380638122559,

+        "y": 703.047513961792,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "a9fa6546.1f0d38",

+        "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=\"`'No VF_MODEL found where customization_uuid = ' + $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid`\" />\n",

+        "comments": "",

+        "x": 1352.8095626831055,

+        "y": 650.904709815979,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "e2b19a30.529508",

+        "type": "switchNode",

+        "name": "switch: model info == NULL",

+        "xml": "<switch test=\"`$tmp.sdnc-model-name == '' or $tmp.sdnc-model-version == '' or $tmp.sdnc-artifact-name == ''`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 453.80946350097656,

+        "y": 654.6189861297607,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "9243d005.83d72"

+            ]

+        ]

+    },

+    {

+        "id": "7d2bf88b.328138",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1183.8095626831055,

+        "y": 651.904709815979,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "a9fa6546.1f0d38"

+            ]

+        ]

+    },

+    {

+        "id": "9243d005.83d72",

+        "type": "outcome",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 702.8094635009766,

+        "y": 654.6189861297607,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "d40fa708.653618"

+            ]

+        ]

+    },

+    {

+        "id": "36172836.56b358",

+        "type": "for",

+        "name": "for pnf-topology-operation-input",

+        "xml": "<for silentFailure='true' index='i' start='0' end='`$pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param_length`' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 469.66664123535156,

+        "y": 454.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "3124c1a0.424eee"

+            ]

+        ]

+    },

+    {

+        "id": "3124c1a0.424eee",

+        "type": "block",

+        "name": "block atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 691.6666412353516,

+        "y": 453.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "403c833.890537c"

+            ]

+        ]

+    },

+    {

+        "id": "ae35475f.7b1f68",

+        "type": "set",

+        "name": "set tmp.sdnc-model-name",

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

+        "comments": "",

+        "x": 1342.6666412353516,

+        "y": 386.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "1ba5fa8a.63d565",

+        "type": "outcome",

+        "name": "sdnc_model_name",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1088.6666412353516,

+        "y": 386.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "ae35475f.7b1f68"

+            ]

+        ]

+    },

+    {

+        "id": "403c833.890537c",

+        "type": "switchNode",

+        "name": "switch",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 850.6666412353516,

+        "y": 453.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "1ba5fa8a.63d565",

+                "7c0fa2e7.67b91c",

+                "1bdfaec5.b5c291",

+                "4faad0fb.85c13"

+            ]

+        ]

+    },

+    {

+        "id": "7c0fa2e7.67b91c",

+        "type": "outcome",

+        "name": "sdnc_model_version",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1091.6666412353516,

+        "y": 432.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "18be0bb.98eb3f4"

+            ]

+        ]

+    },

+    {

+        "id": "1bdfaec5.b5c291",

+        "type": "outcome",

+        "name": "sdnc_artifact_name",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1090.6666412353516,

+        "y": 481.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "53837331.158fac"

+            ]

+        ]

+    },

+    {

+        "id": "18be0bb.98eb3f4",

+        "type": "set",

+        "name": "set tmp.sdnc-model-version",

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

+        "comments": "",

+        "x": 1346.6666412353516,

+        "y": 432.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "53837331.158fac",

+        "type": "set",

+        "name": "set tmp.sdnc-artifact-name",

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

+        "comments": "",

+        "x": 1342.6666412353516,

+        "y": 481.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "1fd42ea3.2e4e71",

+        "type": "set",

+        "name": "set name-value other JsonString",

+        "xml": "<set>\n<parameter name=\"tmp.config-name-value-other-payload\" value=\"`$tmp.config-name-value-other-payload + '&quot;' + $pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param[$i].name + '&quot;:&quot;' + $pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param[$i].value + '&quot;,'`\"/>\n\n",

+        "comments": "",

+        "x": 1259.916648864746,

+        "y": 532.8333504199982,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "4faad0fb.85c13",

+        "type": "outcome",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1050.666648864746,

+        "y": 530.9047546386719,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "1fd42ea3.2e4e71"

+            ]

+        ]

+    },

+    {

+        "id": "2598fbe5.d5c5f4",

+        "type": "set",

+        "name": "set configAssignment JsonString",

+        "xml": "<set>\n<parameter name=\"tmp.config-name-value-payload4\" value=\"`$tmp.config-name-value-other-payload + '&quot;service-instance-id&quot;:&quot;' + $pnf-topology-operation-input.service-information.service-instance-id   + '&quot;,'`\"/>\n<parameter name=\"tmp.config-name-value-payload5\" value=\"`$tmp.config-name-value-payload4 + '&quot;pnf-model-customization-uuid&quot;:&quot;' + $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid + '&quot;,'`\"/>\n<parameter name=\"tmp.config-name-value-payload6\" value=\"`$tmp.config-name-value-payload5 + '&quot;pnf-id&quot;:&quot;' + $pnf-topology-operation-input.pnf-details.pnf-id + '&quot;,'`\"/>\n<parameter name=\"tmp.config-name-value-payload7\" value=\"`$tmp.config-name-value-payload6 + '&quot;aic-cloud-region&quot;:&quot;' + $pnf-topology-operation-input.pnf-request-input.aic-cloud-region + '&quot;'`\"/>\n",

+        "comments": "",

+        "x": 470,

+        "y": 720,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "37b2123.535f6ee",

+        "type": "execute",

+        "name": "execute BlueprintProcessingClient",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value=\"`$prop.cds.url + '/api/v1/execution-service/process'`\" />\n    <parameter name='restapiUser' value='`$prop.cds.user`' />\n    <parameter name='restapiPassword' value='`$prop.cds.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name='dirPath' value=\"/opt/onap/sdnc/restconfapi/yang\" />\n    <parameter name=\"responsePrefix\" value=\"`$responsePrefix`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 471.33331298828125,

+        "y": 928,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "9094229e.6fb6f",

+                "77fe21f0.7024"

+            ]

+        ]

+    },

+    {

+        "id": "9094229e.6fb6f",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 711.3333129882812,

+        "y": 902,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "34639eb4.1a62c2"

+            ]

+        ]

+    },

+    {

+        "id": "34639eb4.1a62c2",

+        "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 from BlueprintProcessingClient\" />\n",

+        "comments": "",

+        "x": 893.3333129882812,

+        "y": 923,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "b0595425.3a0188",

+        "type": "for",

+        "name": "for resource-accumulator-resolved-data loop",

+        "xml": "<for silentFailure='true'  index='i' start='0' end='`$jsonContextPrefix.resource-accumulator-resolved-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 495.66664123535156,

+        "y": 1145.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "144b214e.ee862f"

+            ]

+        ]

+    },

+    {

+        "id": "d7374bb0.605eb8",

+        "type": "set",

+        "name": "set from resource-accumulator-resolved-data",

+        "xml": "<set>\n\t<parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].name`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'/>\n\t<parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>\n\t<parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.capability-name`' value='RA Resolved'/>\n\t<parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.status`' value='SUCCESS'/>\n",

+        "comments": "",

+        "x": 1725.6666412353516,

+        "y": 1197.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "cc933ad3.514df8",

+        "type": "for",

+        "name": "for capability-data",

+        "xml": "<for silentFailure='true' index='i' start='0' end='`$jsonContextPrefix.capability-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 420.66664123535156,

+        "y": 1487.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "99781cdc.7c44d"

+            ]

+        ]

+    },

+    {

+        "id": "99781cdc.7c44d",

+        "type": "for",

+        "name": "for key-mapping",

+        "xml": "<for silentFailure='true' index='j' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping_length`' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 629.6666412353516,

+        "y": 1487.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "bf322fce.e592c"

+            ]

+        ]

+    },

+    {

+        "id": "e2f03825.a87998",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"jsonStringToCtx\">\n\t<parameter name=\"source\" value=\"`'raAssign.payload.resource-assignment-response.meshed-template.' + $tmp.sdnc-artifact-name`\" />\n\t<parameter name=\"outputPath\" value=\"jsonContextPrefix\" />\n\t<parameter name=\"isEscaped\" value=\"false\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 439.66664123535156,

+        "y": 1066.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7426a829.e11b58",

+        "type": "execute",

+        "name": "execute generateUUID",

+        "xml": " <execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" > \n <parameter name=\"ctx-destination\" value=\"tmp.return.generate.pnf-se-serv-uuid\" /> \n ",

+        "comments": "",

+        "outputs": 1,

+        "x": 445.66664123535156,

+        "y": 217.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "bd169e2e.cd056"

+            ]

+        ]

+    },

+    {

+        "id": "bd169e2e.cd056",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 623.6666412353516,

+        "y": 215.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "8d37998c.c31cd8"

+            ]

+        ]

+    },

+    {

+        "id": "8d37998c.c31cd8",

+        "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=\"generateUUID is failed\" />\n",

+        "comments": "",

+        "x": 770.6666412353516,

+        "y": 216.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "b62ba659.caf4e8",

+        "type": "for",

+        "name": "for pnf-parameters-data.param[]",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1468.6666412353516,

+        "y": 1146.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "f680ed9a.93d9a"

+            ]

+        ]

+    },

+    {

+        "id": "144b214e.ee862f",

+        "type": "block",

+        "name": "block atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 774.6666412353516,

+        "y": 1146.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "c4e18a04.cc5ad8",

+                "39301a70.a551a6",

+                "a5d3dcbb.7d89b"

+            ]

+        ]

+    },

+    {

+        "id": "3cdb0db8.762952",

+        "type": "switchNode",

+        "name": "switch pnf-parameters-data.param_length",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 497.66664123535156,

+        "y": 315.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "692693e.6482a6c",

+                "b4ce064e.134fb8"

+            ]

+        ]

+    },

+    {

+        "id": "692693e.6482a6c",

+        "type": "outcome",

+        "name": "null",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 735.6666412353516,

+        "y": 283.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "b469ec33.a0de6"

+            ]

+        ]

+    },

+    {

+        "id": "b4ce064e.134fb8",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 734.6666412353516,

+        "y": 347.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "dc74d8db.deeb98"

+            ]

+        ]

+    },

+    {

+        "id": "b469ec33.a0de6",

+        "type": "set",

+        "name": "set pre service param len as 0",

+        "xml": "<set>\n   <parameter name='highnum' value='0' />\n   <parameter name='prehighnum' value='0'/>\n",

+        "comments": "",

+        "x": 948.6666412353516,

+        "y": 283.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "dc74d8db.deeb98",

+        "type": "set",

+        "name": "set pre service param len",

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

+        "comments": "",

+        "x": 933.6666412353516,

+        "y": 347.3333339691162,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "f680ed9a.93d9a",

+        "type": "switchNode",

+        "name": "switch param[].name - input vs. jsonContextPrefix",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1847.6666412353516,

+        "y": 1146.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "51787a.defa3788"

+            ]

+        ]

+    },

+    {

+        "id": "51787a.defa3788",

+        "type": "not-found",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2131.6666412353516,

+        "y": 1146.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "8e02c19.7396e4"

+            ]

+        ]

+    },

+    {

+        "id": "8e02c19.7396e4",

+        "type": "set",

+        "name": "set for existing param name",

+        "xml": "<set>\n<parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$cnt].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>\n<parameter name='tmp.mso.param.found' value='true' />\n",

+        "comments": "",

+        "x": 2341.6666412353516,

+        "y": 1146.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "a5d3dcbb.7d89b",

+        "type": "switchNode",

+        "name": "switch tmp.mso.param.found",

+        "xml": "<switch test='`$tmp.mso.param.found`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1016.6666412353516,

+        "y": 1198.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "68059366.a0145c"

+            ]

+        ]

+    },

+    {

+        "id": "68059366.a0145c",

+        "type": "not-found",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1250.6666412353516,

+        "y": 1197.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "94a4430.4bf41c"

+            ]

+        ]

+    },

+    {

+        "id": "c4e18a04.cc5ad8",

+        "type": "set",

+        "name": "set for existing param name",

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

+        "comments": "",

+        "x": 998.1666412353516,

+        "y": 1084.8333282470703,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "39301a70.a551a6",

+        "type": "switchNode",

+        "name": "switch check length > 0",

+        "xml": "<switch test='`$prehighnum &gt; 0`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 993.1666412353516,

+        "y": 1146.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "ba53f08d.0d8b9"

+            ]

+        ]

+    },

+    {

+        "id": "ba53f08d.0d8b9",

+        "type": "not-found",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1240.1666412353516,

+        "y": 1146.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "b62ba659.caf4e8"

+            ]

+        ]

+    },

+    {

+        "id": "4f8e5f1e.3457a",

+        "type": "for",

+        "name": "for payload",

+        "xml": "<for silentFailure='true' index='k' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length`' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 1811.6666412353516,

+        "y": 1505.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "2d47ebc7.829284"

+            ]

+        ]

+    },

+    {

+        "id": "5427e182.75617",

+        "type": "set",

+        "name": "set resource-key",

+        "xml": "<set>\n<parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.resource-key[$num].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-name`'/>\n<parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.resource-key[$num].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-value`'/>\n\n",

+        "comments": "",

+        "x": 2160.6666412353516,

+        "y": 1441.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "f997b839.44f4f8",

+        "type": "set",

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

+        "xml": "<set>\n<parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-name`'/>\n<parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-value`'/>\n<parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.capability-name`' value='`$jsonContextPrefix.capability-data[$i].capability-name`'/>\n<parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.status`' value='PENDING'/>\n<parameter name='num' value='0' />",

+        "comments": "",

+        "x": 1384.6666412353516,

+        "y": 1385.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "bf322fce.e592c",

+        "type": "for",

+        "name": "for output-key-mapping",

+        "xml": "<for silentFailure='true' index='l' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping_length`' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 852.6666412353516,

+        "y": 1487.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "4d04f0e8.c62b1"

+            ]

+        ]

+    },

+    {

+        "id": "4d04f0e8.c62b1",

+        "type": "block",

+        "name": "block atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1103.6666412353516,

+        "y": 1487.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "f997b839.44f4f8",

+                "cb027477.fd3288",

+                "9865bc19.a7a",

+                "fe1b0e57.bb09a"

+            ]

+        ]

+    },

+    {

+        "id": "cb027477.fd3288",

+        "type": "set",

+        "name": "set length",

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

+        "comments": "",

+        "x": 1372.6666412353516,

+        "y": 1523.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "77fe21f0.7024",

+        "type": "failure",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 716.3333129882812,

+        "y": 964,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "34639eb4.1a62c2"

+            ]

+        ]

+    },

+    {

+        "id": "9865bc19.a7a",

+        "type": "switchNode",

+        "name": "switch payload_length",

+        "xml": "<switch test=\"`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length == ''`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1408.6666412353516,

+        "y": 1456.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "675eb90.9fdfb48",

+                "5bbeffdc.356"

+            ]

+        ]

+    },

+    {

+        "id": "675eb90.9fdfb48",

+        "type": "outcome",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1629.6666412353516,

+        "y": 1387.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5bbeffdc.356",

+        "type": "other",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1636.6666412353516,

+        "y": 1505.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "4f8e5f1e.3457a"

+            ]

+        ]

+    },

+    {

+        "id": "389573c6.6a65bc",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1179.9523658752441,

+        "y": 702.9046821594238,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "cab43d3d.ed3fd"

+            ]

+        ]

+    },

+    {

+        "id": "2ab626a8.e030da",

+        "type": "set",

+        "name": "set length",

+        "xml": "<set>\n\t<parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.resource-key_length`' value='`$num + 1`'/>\n",

+        "comments": "",

+        "x": 2149.6666412353516,

+        "y": 1505.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "d8d964ff.e455e8",

+        "type": "set",

+        "name": "increment length",

+        "xml": "<set>\n\t<parameter name='num' value='`$num + 1`' />\n",

+        "comments": "",

+        "x": 2167.6666412353516,

+        "y": 1579.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "fe1b0e57.bb09a",

+        "type": "set",

+        "name": "increment length",

+        "xml": "<set>\n\t<parameter name='highnum' value='`$highnum + 1`' />\n\n",

+        "comments": "",

+        "x": 1393.6666412353516,

+        "y": 1590.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "94a4430.4bf41c",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1427.6666412353516,

+        "y": 1196.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "d7374bb0.605eb8",

+                "14df53e7.f86e2c"

+            ]

+        ]

+    },

+    {

+        "id": "14df53e7.f86e2c",

+        "type": "set",

+        "name": "increment length",

+        "xml": "<set>\n\t<parameter name='highnum' value='`$highnum + 1`' />\n",

+        "comments": "",

+        "x": 1642.6666412353516,

+        "y": 1256.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "2d47ebc7.829284",

+        "type": "block",

+        "name": "block atomic",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1967.6666412353516,

+        "y": 1506.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            [

+                "5427e182.75617",

+                "2ab626a8.e030da",

+                "d8d964ff.e455e8"

+            ]

+        ]

+    },

+    {

+        "id": "4d6dae.f7535254",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"BEFORE BlueprintProcessingClient\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 393.9999809265137,

+        "y": 849.333324432373,

+        "z": "3e07b032.f312e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "20179f5d.5c224",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"AFTER BlueprintProcessingClient\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 390.6666488647461,

+        "y": 1004.3333320617676,

+        "z": "3e07b032.f312e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7a5f6ac8.a537a4",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='`$pathname`' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 399.00000762939453,

+        "y": 1808.5000267028809,

+        "z": "3e07b032.f312e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4a91f214.3421ac",

+        "type": "set",

+        "name": "set pathname",

+        "xml": "<set>\n<parameter name='pathname' \n\tvalue=\"`'/var/tmp/ss-pnf-ra-assignment-' + \n\t$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.pnf-id + '.log'`\" />\n",

+        "comments": "",

+        "x": 405.25000762939453,

+        "y": 1756.0000247955322,

+        "z": "3e07b032.f312e",

+        "wires": []

+    },

+    {

+        "id": "94bb3392.15fed",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"DONE: pnf-ra-assignment\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 382.75000381469727,

+        "y": 1709.7500247955322,

+        "z": "3e07b032.f312e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "791d57a6.77d138",

+        "type": "set",

+        "name": "set updateJsonPayload",

+        "xml": "<set>\n<parameter name=\"tmp.json-payload\" value=\"`'{' + $tmp.config-name-value-payload7 + '}'`\" />\n<parameter name=\"`$cds + 'actionIdentifiers.blueprintName'`\" value='`$tmp.sdnc-model-name`' />\n<parameter name=\"`$cds + 'actionIdentifiers.blueprintVersion'`\" value='`$tmp.sdnc-model-version`' />\n<parameter name=\"`$cds + 'payload.resource-assignment-request.template-prefix[0]'`\" value='`$tmp.sdnc-artifact-name`' />\n<parameter name=\"`$cds + 'payload.resource-assignment-request.resource-assignment-properties'`\" value='`$tmp.json-payload`' />",

+        "comments": "",

+        "x": 441,

+        "y": 780,

+        "z": "3e07b032.f312e",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-pnf-unassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-pnf-unassign.json
new file mode 100644
index 0000000..5ff86f4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-pnf-unassign.json
@@ -0,0 +1,570 @@
+[

+    {

+        "id": "e84a6e75.7c345",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 132.85714721679688,

+        "y": 68.57142639160156,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "4527f9c9.e3cd68"

+            ]

+        ]

+    },

+    {

+        "id": "6453a3c7.280b9c",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 176.5833511352539,

+        "y": 187.34921646118164,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "fc2411fd.005e",

+                "872fa153.cd35d",

+                "f5aecca9.cfab2",

+                "4c8375f7.09675c",

+                "22afbf75.056c9"

+            ]

+        ]

+    },

+    {

+        "id": "b25c9a05.1ca608",

+        "type": "method",

+        "name": "method self-serve-pnf-unassign",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 249.61905670166016,

+        "y": 123.27778148651123,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "6453a3c7.280b9c"

+            ]

+        ]

+    },

+    {

+        "id": "4527f9c9.e3cd68",

+        "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": 408.09534454345703,

+        "y": 68.76191902160645,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "b25c9a05.1ca608"

+            ]

+        ]

+    },

+    {

+        "id": "faba8e11.68d2e",

+        "type": "for",

+        "name": "foreach pnf-parameters-data.param[]",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 759.6074600219727,

+        "y": 466.13098526000977,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "68408564.24a50c",

+                "cd2b5b6f.2c7078"

+            ]

+        ]

+    },

+    {

+        "id": "e627cf9e.6ca29",

+        "type": "switchNode",

+        "name": "switch resource-resolution-data.status",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1058.702751159668,

+        "y": 688.4048819541931,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "e6eea7fe.4b8c68",

+                "3be3a692.94995a"

+            ]

+        ]

+    },

+    {

+        "id": "e6eea7fe.4b8c68",

+        "type": "other",

+        "name": "SUCCESS",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1334.0957527160645,

+        "y": 689.1191372871399,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "cf5d615a.583c3"

+            ]

+        ]

+    },

+    {

+        "id": "fc2411fd.005e",

+        "type": "for",

+        "name": "foreach capability-order[]",

+        "xml": "<for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 423.75013732910156,

+        "y": 394.89280796051025,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "6774b97f.65aee8",

+                "18fcc384.942cfc",

+                "faba8e11.68d2e",

+                "c928b244.dc93e"

+            ]

+        ]

+    },

+    {

+        "id": "68408564.24a50c",

+        "type": "switchNode",

+        "name": "switch param capability-name == execution",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1115.500373840332,

+        "y": 509.8571147918701,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "a9b07f86.fdf0f"

+            ]

+        ]

+    },

+    {

+        "id": "a9b07f86.fdf0f",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1379.000373840332,

+        "y": 510.1071147918701,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "11abb6d0.a113e9"

+            ]

+        ]

+    },

+    {

+        "id": "cf5d615a.583c3",

+        "type": "call",

+        "name": "call ss.capability-dg",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1539.214485168457,

+        "y": 688.8809885978699,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "5b6648e.97c05b8",

+                "45f1640.54b3e9c"

+            ]

+        ]

+    },

+    {

+        "id": "6774b97f.65aee8",

+        "type": "set",

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

+        "xml": "<set>\n<parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />\n\n<!--\nss.capability.execution-order[]\n-->\n",

+        "comments": "",

+        "x": 696.9643096923828,

+        "y": 326.9881229400635,

+        "z": "90deaa5f.ba0df8",

+        "wires": []

+    },

+    {

+        "id": "cd2b5b6f.2c7078",

+        "type": "set",

+        "name": "tmp.param.capability-name",

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

+        "comments": "",

+        "x": 1064.8573989868164,

+        "y": 464.4643249511719,

+        "z": "90deaa5f.ba0df8",

+        "wires": []

+    },

+    {

+        "id": "18fcc384.942cfc",

+        "type": "set",

+        "name": "set ss.capability.action = unassign",

+        "xml": "<set>\n<parameter name='ss.capability-action' value='unassign' />\n",

+        "comments": "",

+        "x": 752.2498931884766,

+        "y": 368.19042587280273,

+        "z": "90deaa5f.ba0df8",

+        "wires": []

+    },

+    {

+        "id": "5b6648e.97c05b8",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1724.1069946289062,

+        "y": 688.8810496330261,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "46832d95.2ea054"

+            ]

+        ]

+    },

+    {

+        "id": "c928b244.dc93e",

+        "type": "set",

+        "name": "set capability-dg",

+        "xml": "<set>\n<parameter name='ss.capability-dg' value=\"`'self-serve-' + $ss.capability.execution-order[$cidx]`\" />\n",

+        "comments": "",

+        "x": 696.678581237793,

+        "y": 417.0833396911621,

+        "z": "90deaa5f.ba0df8",

+        "wires": []

+    },

+    {

+        "id": "86e9d18c.321b6",

+        "type": "execute",

+        "name": "generate ss-pnf url replace service-instance-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.ss-pnf-assignments`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-pnf-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.service-instance-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2206.9643783569336,

+        "y": 742.7627749443054,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "39d788f3.585018",

+        "type": "execute",

+        "name": "execute RestApiCallNode - PUT pnf",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.ss.pnf.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-pnf-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ss-pnf\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2176.4286727905273,

+        "y": 845.619996547699,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "deb7d997.4e8ea8",

+                "bc2a882f.2a5f98"

+            ]

+        ]

+    },

+    {

+        "id": "deb7d997.4e8ea8",

+        "type": "not-found",

+        "name": "not-found",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2451.0223388671875,

+        "y": 899.6181502342224,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "829e8ec3.e8ef3"

+            ]

+        ]

+    },

+    {

+        "id": "bc2a882f.2a5f98",

+        "type": "failure",

+        "name": "failure",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2443.450973510742,

+        "y": 846.118170261383,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "829e8ec3.e8ef3"

+            ]

+        ]

+    },

+    {

+        "id": "829e8ec3.e8ef3",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2645.583297729492,

+        "y": 845.7624249458313,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "1ed7e952.806f17"

+            ]

+        ]

+    },

+    {

+        "id": "1ed7e952.806f17",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error persisting self-serve pnf assignments in MD-SAL during unassign\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2863.8690643310547,

+        "y": 845.9052882194519,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "485950a5.fe099",

+        "type": "set",

+        "name": "set vf data for restapi-call-node",

+        "xml": "<set>\n<parameter name='vf.pnf-id'\n    value='`$service-data.pnfs.pnf[$pnf-index].pnf-id`' />\n<parameter name='vf.pnf-data.sdnc-request-header.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.`' />\n<parameter name='vf.pnf-data.request-information.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.`' />\n<parameter name='vf.pnf-data.service-information.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.`' />\n<parameter name='vf.pnf-data.pnf-information.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.`' />\n<parameter name='vf.pnf-data.pnf-request-input.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.`' />\n<parameter name='vf.pnf-data.pnf-request-input.pnf-input-parameters.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.pnf-input-parameters.`' />\n<parameter name='vf.pnf-data.pnf-topology.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.`' />\n<parameter name='vf.pnf-data.pnf-level-oper-status.'\n  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.`' />",

+        "comments": "",

+        "x": 2159.416679382324,

+        "y": 688.8572869300842,

+        "z": "90deaa5f.ba0df8",

+        "wires": []

+    },

+    {

+        "id": "c967833c.6fc58",

+        "type": "execute",

+        "name": "generate ss-pnf url - replace pnf-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ss-pnf-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-pnf-url\"/>\n    <parameter name=\"target\" value=\"{pnf-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2171.25008392334,

+        "y": 793.5715432167053,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "46832d95.2ea054",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1885.059669494629,

+        "y": 688.6191611289978,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "86e9d18c.321b6",

+                "39d788f3.585018",

+                "485950a5.fe099",

+                "c967833c.6fc58",

+                "9293681d.2140f8"

+            ]

+        ]

+    },

+    {

+        "id": "9293681d.2140f8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to unassign self-serve pnf assignments for ' + $ss.capability-dg + ' with error: ' + $error-message`\" />\n",

+        "comments": "",

+        "x": 2105.9646377563477,

+        "y": 973.3929445743561,

+        "z": "90deaa5f.ba0df8",

+        "wires": []

+    },

+    {

+        "id": "4c8375f7.09675c",

+        "type": "execute",

+        "name": "printContext",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 373.4050750732422,

+        "y": 1227.4882678985596,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "872fa153.cd35d",

+        "type": "set",

+        "name": "set ss.capability.execution-order[]",

+        "xml": "<set>\n<parameter name='ss.capability.execution-order[0]' value='mS-mac-address-assign' />\n<parameter name='ss.capability.execution-order[1]' value='mac-address-assign' />\n<parameter name='ss.capability.execution-order[2]' value='netbox-ip-assign' />\n<parameter name='ss.capability.execution-order[3]' value='eipam-ip-assignment' />\n<parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />\n<parameter name='ss.capability.execution-order[5]' value='vlan-tag-assign' />\n<parameter name='ss.capability.execution-order[6]' value='alts-license-assign' />\n<parameter name='ss.capability.execution-order[7]' value='alts-entitlement-assign' />\n<parameter name='ss.capability.execution-order[8]' value='generate-name' />\n<parameter name='ss.capability.execution-order_length' value='9' />",

+        "comments": "",

+        "x": 456.10718536376953,

+        "y": 187.57143020629883,

+        "z": "90deaa5f.ba0df8",

+        "wires": []

+    },

+    {

+        "id": "f5aecca9.cfab2",

+        "type": "set",

+        "name": "set ss.capability-type = pnf",

+        "xml": "<set>\n<parameter name='ss.capability-type' value='pnf' />\n",

+        "comments": "",

+        "x": 435.7142868041992,

+        "y": 227.14286041259766,

+        "z": "90deaa5f.ba0df8",

+        "wires": []

+    },

+    {

+        "id": "3be3a692.94995a",

+        "type": "other",

+        "name": "other",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1324.4166145324707,

+        "y": 756.3690571784973,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "d0d9cea4.27793"

+            ]

+        ]

+    },

+    {

+        "id": "d0d9cea4.27793",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"`'SS: resource-resolution-data.status: ' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$pidx].resource-resolution-data.status`\"/>\n<parameter name=\"field2\" value=\"`'SS: ss.capability-name: ' + $ss.capability-name`\"/>\n<parameter name=\"field3\" value=\"`'SS: tmp.param.capability-name: ' + $tmp.param.capability-name`\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1472.523796081543,

+        "y": 756.4047627449036,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "11abb6d0.a113e9",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 774.2856826782227,

+        "y": 688.5237755775452,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "b6cd64d4.f1fee8",

+                "e627cf9e.6ca29"

+            ]

+        ]

+    },

+    {

+        "id": "b6cd64d4.f1fee8",

+        "type": "break",

+        "name": "break",

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

+        "comments": "",

+        "x": 952.7143249511719,

+        "y": 1121.095314025879,

+        "z": "90deaa5f.ba0df8",

+        "wires": []

+    },

+    {

+        "id": "45f1640.54b3e9c",

+        "type": "success",

+        "name": "success",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1751.607177734375,

+        "y": 874.8214378356934,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "7721b9be.729b18"

+            ]

+        ]

+    },

+    {

+        "id": "7721b9be.729b18",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"`'DONE: ' + $ss.capability-dg`\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1895.357177734375,

+        "y": 873.5714378356934,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d136ccb4.7926b",

+        "type": "execute",

+        "name": "execute PropertiesNode",

+        "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": 844.8572213309153,

+        "y": 273.85714394705644,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "22afbf75.056c9",

+        "type": "switchNode",

+        "name": "switch prop.controller.user",

+        "xml": "<switch test='`$prop.controller.user`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 433.5714569091797,

+        "y": 274.28576469421387,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "720caa44.b3ae14"

+            ]

+        ]

+    },

+    {

+        "id": "720caa44.b3ae14",

+        "type": "failure",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 633.4285523550852,

+        "y": 273.85717923300615,

+        "z": "90deaa5f.ba0df8",

+        "wires": [

+            [

+                "d136ccb4.7926b"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-unresolved-composite-data.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-unresolved-composite-data.json
new file mode 100644
index 0000000..9e12693
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-unresolved-composite-data.json
@@ -0,0 +1,1663 @@
+[

+    {

+        "id": "4b0d055c.68aa0c",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 130,

+        "y": 41.57143306732178,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "6fe80a35.d4a0e4"

+            ]

+        ]

+    },

+    {

+        "id": "d4ad1fb3.91fa7",

+        "type": "method",

+        "name": "method self-serve-unresolved-composite-data",

+        "xml": "<method rpc='self-serve-unresolved-composite-data' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 265.7857208251953,

+        "y": 98.69842147827148,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "28d097ba.735fe8"

+            ]

+        ]

+    },

+    {

+        "id": "28d097ba.735fe8",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 212.41665649414062,

+        "y": 163.82145309448242,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "bf0ffd46.39c0c",

+                "ebbf3af7.ad26b8",

+                "ac30caaa.8ede48",

+                "35ba3647.9ad75a"

+            ]

+        ]

+    },

+    {

+        "id": "6fe80a35.d4a0e4",

+        "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": 402.8571472167969,

+        "y": 41,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "d4ad1fb3.91fa7"

+            ]

+        ]

+    },

+    {

+        "id": "bf0ffd46.39c0c",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 469.1785545349121,

+        "y": 163.89286088943481,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "39dbf433.97900c"

+            ]

+        ]

+    },

+    {

+        "id": "39dbf433.97900c",

+        "type": "outcome",

+        "name": "NULL",

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

+        "outputs": 1,

+        "x": 694.1785774230957,

+        "y": 164.39285945892334,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "a70a3263.bddb7"

+            ]

+        ]

+    },

+    {

+        "id": "a70a3263.bddb7",

+        "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": 854.0952491760254,

+        "y": 164.50395822525024,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "ebbf3af7.ad26b8",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 470.42857360839844,

+        "y": 213.89286136627197,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "a0fe9191.db076"

+            ]

+        ]

+    },

+    {

+        "id": "a0fe9191.db076",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 693.9285697937012,

+        "y": 214.14286136627197,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "8b8a7dda.8b933"

+            ]

+        ]

+    },

+    {

+        "id": "8b8a7dda.8b933",

+        "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": 853.8452415466309,

+        "y": 214.25396013259888,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "be515033.50a43",

+        "type": "set",

+        "name": "set tmp.ss.param.capability-name",

+        "xml": "<set>\n<parameter name='tmp.ss.param.capability-name' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />\n",

+        "comments": "",

+        "x": 1205.2500839233398,

+        "y": 414.50004386901855,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "479519e4.1d2158",

+        "type": "for",

+        "name": "for pidx in param_length",

+        "xml": "<for silentFailure='true' index=\"pidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 904.0356063842773,

+        "y": 451.71436882019043,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "266461cb.32272e",

+                "be515033.50a43"

+            ]

+        ]

+    },

+    {

+        "id": "266461cb.32272e",

+        "type": "switchNode",

+        "name": "switch: capability-name - ss vs param",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1217.2141189575195,

+        "y": 485.21436882019043,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "2a6a36a8.323f4a"

+            ]

+        ]

+    },

+    {

+        "id": "2a6a36a8.323f4a",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1455.964126586914,

+        "y": 484.96436882019043,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "3aeb0755.270578"

+            ]

+        ]

+    },

+    {

+        "id": "dd9767d5.d8d868",

+        "type": "set",

+        "name": "set tmp.ss.composite",

+        "xml": "<set>\n<parameter name='tmp.ss.composite' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />\n",

+        "comments": "",

+        "x": 1859.7499732971191,

+        "y": 484.071464151144,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "35ba3647.9ad75a",

+        "type": "execute",

+        "name": "printContext",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 421.4285583496094,

+        "y": 598.4761943817139,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ac30caaa.8ede48",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 463.1785583496094,

+        "y": 338.2857036590576,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "3dbe19f7.5d97c6",

+                "257181ac.34630e",

+                "1188738.93dc28d"

+            ]

+        ]

+    },

+    {

+        "id": "3dbe19f7.5d97c6",

+        "type": "outcome",

+        "name": "NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 694.2857093811035,

+        "y": 264.85714626312256,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "568e0177.c5296"

+            ]

+        ]

+    },

+    {

+        "id": "568e0177.c5296",

+        "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-type is null\" />\n",

+        "comments": "",

+        "x": 848.2023811340332,

+        "y": 264.96824502944946,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "257181ac.34630e",

+        "type": "outcome",

+        "name": "vnf",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 693.0357246398926,

+        "y": 337.10715103149414,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "9fe3ca4c.04c278"

+            ]

+        ]

+    },

+    {

+        "id": "1188738.93dc28d",

+        "type": "outcome",

+        "name": "vf-module",

+        "xml": "<outcome value='vf-module'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 699.7499542236328,

+        "y": 451.9285945892334,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "479519e4.1d2158"

+            ]

+        ]

+    },

+    {

+        "id": "4080015a.a990d",

+        "type": "set",

+        "name": "set tmp.ss.param.capability-name",

+        "xml": "<set>\n<parameter name='tmp.ss.param.capability-name' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />\n",

+        "comments": "",

+        "x": 1207.5357666015625,

+        "y": 307.1071472167969,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "9fe3ca4c.04c278",

+        "type": "for",

+        "name": "for pidx in param_length",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 905.7499618530273,

+        "y": 337.1786231994629,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "8fb99318.61de4",

+                "4080015a.a990d"

+            ]

+        ]

+    },

+    {

+        "id": "8fb99318.61de4",

+        "type": "switchNode",

+        "name": "switch: capability-name - ss vs param",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1219.5,

+        "y": 362.6786193847656,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "2e83cf85.4ce7b"

+            ]

+        ]

+    },

+    {

+        "id": "2e83cf85.4ce7b",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1458.2500076293945,

+        "y": 362.4286193847656,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "9b7842e7.dcafe"

+            ]

+        ]

+    },

+    {

+        "id": "3aeb0755.270578",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1618.5356140136719,

+        "y": 484.2500225007534,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "dd9767d5.d8d868",

+                "54bf06cb.1eddd8"

+            ]

+        ]

+    },

+    {

+        "id": "9b7842e7.dcafe",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1622.8928833007812,

+        "y": 362.17856845259666,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "372415b1.41963a",

+                "54bf06cb.1eddd8"

+            ]

+        ]

+    },

+    {

+        "id": "372415b1.41963a",

+        "type": "set",

+        "name": "set tmp.ss.composite",

+        "xml": "<set>\n<parameter name='tmp.ss.composite' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].value`' />\n",

+        "comments": "",

+        "x": 1851.3928833007812,

+        "y": 362.17856845259666,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "54bf06cb.1eddd8",

+        "type": "switchNode",

+        "name": "switch: tmp.ss.composite = NULL",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1912.821273803711,

+        "y": 560.4285793304443,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "9637472d.b83938"

+            ]

+        ]

+    },

+    {

+        "id": "9637472d.b83938",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2150.321273803711,

+        "y": 560.9285793304443,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "6f2f56da.4076d8"

+            ]

+        ]

+    },

+    {

+        "id": "2986f51f.8169aa",

+        "type": "execute",

+        "name": "replace [ in param[].value with \"\"",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ss.composite`\" />\n\t<parameter name=\"target\" value=\"[\"/>\n\t<parameter name=\"replacement\" value=\"\"/>\n\t<parameter name=\"outputPath\" value=\"tmp.ss.composite\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 835,

+        "y": 935,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9f28c774.c29e48",

+        "type": "execute",

+        "name": "replace ] in param[].value with \"\"",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ss.composite`\" />\n\t<parameter name=\"target\" value=\"]\"/>\n\t<parameter name=\"replacement\" value=\"\"/>\n\t<parameter name=\"outputPath\" value=\"tmp.ss.composite\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 835,

+        "y": 975,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3414f583.421e4a",

+        "type": "execute",

+        "name": "split , input=tmp.ss.composite, output=comma-splits",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n    <parameter name=\"original_string\" value=\"`$tmp.ss.composite`\" />\n\t<parameter name=\"regex\" value=\",\"/>\n\t<parameter name=\"ctx_memory_result_key\" value=\"comma-splits\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 902.0834274291992,

+        "y": 1119.722222328186,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "11e41505.70a37b",

+        "type": "for",

+        "name": "for comma-splits-index in comma-splits",

+        "xml": "<for silentFailure='true' index=\"comma-splits-index\" start=\"0\" end=\"`$comma-splits_length`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 798.0952758789062,

+        "y": 2097.5357830524445,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "14fb1f48.061531",

+                "7913b6bd.286258",

+                "c46c2b5f.3479c8",

+                "98d61d8c.13b75"

+            ]

+        ]

+    },

+    {

+        "id": "d438c878.743048",

+        "type": "set",

+        "name": "set tmp.ss.final.resolved-value (end) = NULL",

+        "xml": "<set>\n<parameter name='tmp.ss.final.resolved-value' value=\"\" />\n<parameter name='tmp.ss.final.resolved-value.end' value=\"\" />\n\n",

+        "comments": "",

+        "x": 874.7222442626953,

+        "y": 831.3333072662354,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "875e338e.0755e",

+        "type": "set",

+        "name": "set tmp.ss.final.resolved-value",

+        "xml": "<set>\n<parameter name='tmp.ss.final.resolved-value' \n\tvalue=\"`$tmp.ss.final.resolved-value + $tmp.ss.final.composite-resolved-value`\" />\n",

+        "comments": "",

+        "x": 1680.9483261108398,

+        "y": 2879.282089471817,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "14fb1f48.061531",

+        "type": "switchNode",

+        "name": "switch: comma-splits-index == 0",

+        "xml": "<switch test='`$comma-splits-index == 0`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1215.4484100341797,

+        "y": 2903.7106459140778,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "c37a0965.40f4e8",

+                "4c97a2ba.411cec"

+            ]

+        ]

+    },

+    {

+        "id": "c37a0965.40f4e8",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1463.4127502441406,

+        "y": 2879.960567712784,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "875e338e.0755e"

+            ]

+        ]

+    },

+    {

+        "id": "4c97a2ba.411cec",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1465.2698059082031,

+        "y": 2931.3891565799713,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "d1354873.137ef8"

+            ]

+        ]

+    },

+    {

+        "id": "d1354873.137ef8",

+        "type": "set",

+        "name": "set tmp.ss.final.resolved-value ,",

+        "xml": "<set>\n<parameter name='tmp.ss.final.resolved-value' \n\tvalue=\"`$tmp.ss.final.resolved-value + ',' + $tmp.ss.final.composite-resolved-value`\" />\n",

+        "comments": "",

+        "x": 1688.5555725097656,

+        "y": 2931.5797379016876,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "c6b28a85.33bac8",

+        "type": "for",

+        "name": "for i in param_length",

+        "xml": "<for silentFailure='true' index=\"i\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 2226.484230041504,

+        "y": 2474.782074689865,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "f93b6484.d3f7b8",

+                "376701fe.8ae90e"

+            ]

+        ]

+    },

+    {

+        "id": "f6bb65fc.de63f8",

+        "type": "set",

+        "name": "set tmp.ss.partial.resolved-value",

+        "xml": "<set>\n<parameter name='tmp.ss.partial.resolved-value' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].value`' />\n",

+        "comments": "",

+        "x": 3311.817825317383,

+        "y": 2531.865434885025,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "376701fe.8ae90e",

+        "type": "switchNode",

+        "name": "switch: tmp.ss.partial.composite-value  vs tmp.ss.param-name",

+        "xml": "<switch test='`$tmp.ss.partial.composite-value == $tmp.ss.param-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2629.7343521118164,

+        "y": 2532.532074213028,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "9446f827.111228"

+            ]

+        ]

+    },

+    {

+        "id": "9446f827.111228",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2945.067741394043,

+        "y": 2532.1153881549835,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "4725b295.04970c"

+            ]

+        ]

+    },

+    {

+        "id": "522e33dd.387fcc",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"`'SS: tmp.ss.composite: ' + $tmp.ss.composite`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 736.8055725097656,

+        "y": 1065.210319519043,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f93b6484.d3f7b8",

+        "type": "set",

+        "name": "set tmp.ss.param-name",

+        "xml": "<set>\n<parameter name='tmp.ss.param-name' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].name`' />\n",

+        "comments": "",

+        "x": 2492.9843521118164,

+        "y": 2474.460661172867,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "18bb9723.7a8649",

+        "type": "execute",

+        "name": "trim",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >\n    <parameter name=\"source\" value=\"`$tmp.ss.composite`\" />\n\t<parameter name=\"outputPath\" value=\"tmp.ss.composite\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 739.3055725097656,

+        "y": 1018.0555944442749,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4725b295.04970c",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3079.484329223633,

+        "y": 2532.4606516361237,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "f6bb65fc.de63f8",

+                "60c9e560.1139fc"

+            ]

+        ]

+    },

+    {

+        "id": "60c9e560.1139fc",

+        "type": "break",

+        "name": "break",

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

+        "comments": "",

+        "x": 3223.067596435547,

+        "y": 2582.043966293335,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "6f2f56da.4076d8",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 479.9484329223633,

+        "y": 764.4841327667236,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "2986f51f.8169aa",

+                "9f28c774.c29e48",

+                "18bb9723.7a8649",

+                "522e33dd.387fcc",

+                "3414f583.421e4a",

+                "d438c878.743048",

+                "11e41505.70a37b",

+                "603a1eaa.07e95",

+                "a7a5d35f.f14d3",

+                "f7dab346.7519f"

+            ]

+        ]

+    },

+    {

+        "id": "603a1eaa.07e95",

+        "type": "set",

+        "name": "concat tmp.ss.final.resolved-value.end",

+        "xml": "<set>\n<parameter name='tmp.ss.final.resolved-value' \n\tvalue='`$tmp.ss.final.resolved-value + $tmp.ss.final.resolved-value.end`' />\n\t\n",

+        "comments": "",

+        "x": 793.4127807617188,

+        "y": 3023.47220826149,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "7913b6bd.286258",

+        "type": "execute",

+        "name": "trim comma-splits[$comma-splits-index] to tmp.ss.composite.trim",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >\n    <parameter name=\"source\" value=\"`$comma-splits[$comma-splits-index]`\" />\n\t<parameter name=\"outputPath\" value=\"tmp.ss.composite.trim\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1353.8411865234375,

+        "y": 1199.0556259155273,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ef080b61.e6ec58",

+        "type": "record",

+        "name": "record tmp.ss.partial.composite-value",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"`'SS: tmp.ss.partial.composite-value: ' + $tmp.ss.partial.composite-value`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1848.682716369629,

+        "y": 2251.420620203018,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a7a5d35f.f14d3",

+        "type": "execute",

+        "name": "tmp.ss.composite startsWith [",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$tmp.ss.composite`\" />\n\t<parameter name=\"target\" value=\"[\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 824.8055725097656,

+        "y": 882.8055725097656,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "6a9f0f57.f5292"

+            ]

+        ]

+    },

+    {

+        "id": "6a9f0f57.f5292",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1035.0555725097656,

+        "y": 883.0555725097656,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "602af10.b8dee1"

+            ]

+        ]

+    },

+    {

+        "id": "602af10.b8dee1",

+        "type": "set",

+        "name": "set tmp.ss.final.resolved-value (end) = [ ]",

+        "xml": "<set>\n<parameter name='tmp.ss.final.resolved-value' value=\"[\" />\n<parameter name='tmp.ss.final.resolved-value.end' value=\"]\" />\n",

+        "comments": "",

+        "x": 1288.3055725097656,

+        "y": 883.0555725097656,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "ca858d5e.7a7ca",

+        "type": "set",

+        "name": "set param[].value = tmp.ss.final.resolved-value and status = SUCCESS",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value' \n\tvalue='`$tmp.ss.final.resolved-value`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' \n\tvalue='SUCCESS' />\t\n",

+        "comments": "",

+        "x": 1876.1628189086914,

+        "y": 3454.889662027359,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "5cb0c8f.a7f5c38",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1802.9126892089844,

+        "y": 2394.3533594608307,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "7e83e40.8ccba1c",

+                "ea9d6ca4.4354e"

+            ]

+        ]

+    },

+    {

+        "id": "ea9d6ca4.4354e",

+        "type": "outcome",

+        "name": "vnf",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2028.662696838379,

+        "y": 2311.3533618450165,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "c57ccad1.d3eed8"

+            ]

+        ]

+    },

+    {

+        "id": "7e83e40.8ccba1c",

+        "type": "outcome",

+        "name": "vf-module",

+        "xml": "<outcome value='vf-module'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2038.162696838379,

+        "y": 2475.103363752365,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "c6b28a85.33bac8"

+            ]

+        ]

+    },

+    {

+        "id": "c57ccad1.d3eed8",

+        "type": "for",

+        "name": "for i in param_length",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2219.16268157959,

+        "y": 2311.3533351421356,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "c665791f.b35948",

+                "ce39afeb.b2dc2"

+            ]

+        ]

+    },

+    {

+        "id": "8442db95.bbe838",

+        "type": "set",

+        "name": "set tmp.ss.partial.resolved-value",

+        "xml": "<set>\n<parameter name='tmp.ss.partial.resolved-value' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].value`' />\n",

+        "comments": "",

+        "x": 3303.2462997436523,

+        "y": 2360.9367220401764,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "ce39afeb.b2dc2",

+        "type": "switchNode",

+        "name": "switch: tmp.ss.partial.composite-value  vs tmp.ss.param-name",

+        "xml": "<switch test='`$tmp.ss.partial.composite-value == $tmp.ss.param-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2621.162826538086,

+        "y": 2361.6033613681793,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "6840187.9f6cce8"

+            ]

+        ]

+    },

+    {

+        "id": "6840187.9f6cce8",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2936.4962158203125,

+        "y": 2361.186675310135,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "130052a0.a3473d"

+            ]

+        ]

+    },

+    {

+        "id": "c665791f.b35948",

+        "type": "set",

+        "name": "set tmp.ss.param-name",

+        "xml": "<set>\n<parameter name='tmp.ss.param-name' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].name`' />\n",

+        "comments": "",

+        "x": 2485.6628036499023,

+        "y": 2311.0319216251373,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "130052a0.a3473d",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3070.9128036499023,

+        "y": 2361.531938791275,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "8442db95.bbe838",

+                "6a3f4fc2.91028"

+            ]

+        ]

+    },

+    {

+        "id": "6a3f4fc2.91028",

+        "type": "break",

+        "name": "break",

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

+        "comments": "",

+        "x": 3216.162887573242,

+        "y": 2409.448663711548,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "f7dab346.7519f",

+        "type": "switchNode",

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

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

+        "comments": "",

+        "outputs": 1,

+        "x": 739.0794067382812,

+        "y": 3276.7701513767242,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "4cff3fa3.203c2",

+                "339d88c3.db3e38"

+            ]

+        ]

+    },

+    {

+        "id": "339d88c3.db3e38",

+        "type": "outcome",

+        "name": "vnf",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 987.1627502441406,

+        "y": 3143.6035273075104,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "561d72ab.51388c"

+            ]

+        ]

+    },

+    {

+        "id": "4cff3fa3.203c2",

+        "type": "outcome",

+        "name": "vf-module",

+        "xml": "<outcome value='vf-module'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 995.4127960205078,

+        "y": 3404.3535273075104,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "6eb8b3b2.deb88c"

+            ]

+        ]

+    },

+    {

+        "id": "36c93a4b.810646",

+        "type": "set",

+        "name": "set param[].value = tmp.ss.final.resolved-value, status = SUCCESS",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].value' \n\tvalue='`$tmp.ss.final.resolved-value`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' \n\tvalue='SUCCESS' />",

+        "comments": "",

+        "x": 1841.912956237793,

+        "y": 3193.6035273075104,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "f344f7d0.1313d8",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1681.8770446777344,

+        "y": 3089.8178808689117,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "b906ce72.d4c5c",

+                "4779852a.a8ae2c"

+            ]

+        ]

+    },

+    {

+        "id": "561d72ab.51388c",

+        "type": "execute",

+        "name": "tmp.ss.final.resolved-value contains $",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$tmp.ss.final.resolved-value`\" />\n    <parameter name=\"target\" value=\"$\"/>\n  \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1236.1270370483398,

+        "y": 3143.31760430336,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "c6bda48e.4b1c68",

+                "8a9352b1.59e38"

+            ]

+        ]

+    },

+    {

+        "id": "c6bda48e.4b1c68",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1508.377052307129,

+        "y": 3089.567634820938,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "f344f7d0.1313d8"

+            ]

+        ]

+    },

+    {

+        "id": "4779852a.a8ae2c",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].name + ' was not resolved by ' + $ss.capability + ' with value = '+ $tmp.ss.final.resolved-value`\" />\n",

+        "comments": "",

+        "x": 1878.8770599365234,

+        "y": 3138.0676367282867,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "b906ce72.d4c5c",

+        "type": "set",

+        "name": "set status as FAILED",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' value='FAILED' />",

+        "comments": "",

+        "x": 1901.3770599365234,

+        "y": 3089.317634820938,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "8a9352b1.59e38",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1506.8770561218262,

+        "y": 3193.8176367282867,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "36c93a4b.810646"

+            ]

+        ]

+    },

+    {

+        "id": "f4040c3d.49094",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1698.1270217895508,

+        "y": 3349.5676062107086,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "bbed183e.4c7418",

+                "5694f7bc.92abb8"

+            ]

+        ]

+    },

+    {

+        "id": "6eb8b3b2.deb88c",

+        "type": "execute",

+        "name": "tmp.ss.final.resolved-value contains $",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$tmp.ss.final.resolved-value`\" />\n    <parameter name=\"target\" value=\"$\"/>\n  \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1252.3770141601562,

+        "y": 3404.067329645157,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "6013ac3c.fbb844",

+                "77dd6339.8c7f4c"

+            ]

+        ]

+    },

+    {

+        "id": "6013ac3c.fbb844",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1524.6270294189453,

+        "y": 3349.317360162735,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "f4040c3d.49094"

+            ]

+        ]

+    },

+    {

+        "id": "5694f7bc.92abb8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name + ' was not resolved by ' + $ss.capability + ' with value = '+ $tmp.ss.final.resolved-value`\" />\n",

+        "comments": "",

+        "x": 1895.1270370483398,

+        "y": 3397.8173620700836,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "bbed183e.4c7418",

+        "type": "set",

+        "name": "set status as FAILED",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' value='FAILED' />",

+        "comments": "",

+        "x": 1917.6270370483398,

+        "y": 3349.067360162735,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "77dd6339.8c7f4c",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1523.1270332336426,

+        "y": 3455.5673620700836,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "ca858d5e.7a7ca"

+            ]

+        ]

+    },

+    {

+        "id": "7383361.5b9fcc8",

+        "type": "execute",

+        "name": "split $ input=tmp.ss.composite.trim, output=dollar-splits",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n    <parameter name=\"original_string\" value=\"`$tmp.ss.composite.trim`\" />\n\t<parameter name=\"regex\" value=\"\\$\"/>\n\t<parameter name=\"ctx_memory_result_key\" value=\"dollar-splits\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1510.4127960205078,

+        "y": 1346.5676770210266,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "98d61d8c.13b75",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1138.0793075561523,

+        "y": 1722.234281539917,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "7383361.5b9fcc8",

+                "ad112075.1b0c",

+                "f7a7a777.24f918",

+                "86e1f5e3.9f55f8",

+                "af31548e.6e63b8",

+                "2c09e36.35f9b1c"

+            ]

+        ]

+    },

+    {

+        "id": "86e1f5e3.9f55f8",

+        "type": "set",

+        "name": "set $dollar-splits[0] to tmp.ss.param-prefix",

+        "xml": "<set>\n<parameter name='tmp.ss.param-prefix' value='`$dollar-splits[0]`' />\n",

+        "comments": "",

+        "x": 1460.9127960205078,

+        "y": 1400.5677371025085,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "ad112075.1b0c",

+        "type": "execute",

+        "name": "trim - tmp.ss.param-prefix",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >\n    <parameter name=\"source\" value=\"`$tmp.ss.param-prefix`\" />\n\t<parameter name=\"outputPath\" value=\"tmp.ss.param-prefix\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1399.6626586914062,

+        "y": 1503.8176789283752,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "49717bbe.1b5764",

+        "type": "execute",

+        "name": "trim to tmp.ss.param-suffix",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >\n    <parameter name=\"source\" value=\"`$tmp.ss.param-suffix`\" />\n\t<parameter name=\"outputPath\" value=\"tmp.ss.param-suffix\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2495.2939376831055,

+        "y": 2150.079555749893,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d6ef9c86.79f4d",

+        "type": "execute",

+        "name": "trim to tmp.ss.partial.composite-value",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >\n    <parameter name=\"source\" value=\"`$tmp.ss.partial.composite-value`\" />\n\t<parameter name=\"outputPath\" value=\"tmp.ss.partial.composite-value\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2530.6272048950195,

+        "y": 2053.9961359500885,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c8981c6c.44221",

+        "type": "set",

+        "name": "Append prefix and suffix to tmp.ss.partial.resolved-value",

+        "xml": "<set>\n<parameter name='tmp.ss.partial.resolved-value' \n\tvalue=\"`$tmp.ss.param-prefix + $tmp.ss.partial.resolved-value + $tmp.ss.param-suffix`\" />\n",

+        "comments": "",

+        "x": 1914.2105407714844,

+        "y": 2615.246285676956,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "c46c2b5f.3479c8",

+        "type": "set",

+        "name": "set tmp.ss.param-prefix, tmp.ss.param-suffix to NULL",

+        "xml": "<set>\n<parameter name='tmp.ss.param-prefix' value='' />\n<parameter name='tmp.ss.param-suffix' value='' />\n",

+        "comments": "",

+        "x": 1313.1983032226562,

+        "y": 1250.8413562774658,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "d1e65934.a54498",

+        "type": "execute",

+        "name": "dollar-splits[$dollar-splits-index] startsWith {",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$dollar-splits[$dollar-splits-index]`\" />\n\t<parameter name=\"target\" value=\"{\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1875.8769836425781,

+        "y": 1778.7457945346832,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "7fd43ee7.32e96",

+                "49a36736.efc988"

+            ]

+        ]

+    },

+    {

+        "id": "7fd43ee7.32e96",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2156.1269912719727,

+        "y": 1733.2457945346832,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "e7c36d29.2772e"

+            ]

+        ]

+    },

+    {

+        "id": "f7a7a777.24f918",

+        "type": "for",

+        "name": "for dollar-splits-index in dollar-splits start=1",

+        "xml": "<for silentFailure='true' index=\"dollar-splits-index\" start=\"1\" end=\"`$dollar-splits_length`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1437.6627349853516,

+        "y": 2113.567544937134,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "d1e65934.a54498",

+                "3af93e96.3d3842",

+                "ef080b61.e6ec58",

+                "5cb0c8f.a7f5c38",

+                "c8981c6c.44221",

+                "4a84d406.7772ac",

+                "a8074bd2.dec858",

+                "5e1a944f.4174cc"

+            ]

+        ]

+    },

+    {

+        "id": "e7c36d29.2772e",

+        "type": "execute",

+        "name": "replace { in dollar-splits[$dollar-splits-index] with \"\"",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$dollar-splits[$dollar-splits-index]`\" />\n\t<parameter name=\"target\" value=\"{\"/>\n\t<parameter name=\"replacement\" value=\"\"/>\n\t<parameter name=\"outputPath\" value=\"tmp.ss.partial.composite-value\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2459.3769912719727,

+        "y": 1732.9957945346832,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3af93e96.3d3842",

+        "type": "execute",

+        "name": "tmp.ss.partial.composite-value endsWith }",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='endsWith' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$tmp.ss.partial.composite-value`\" />\n\t<parameter name=\"target\" value=\"}\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1862.5436782836914,

+        "y": 1915.8293058872223,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "46a4b920.af4108",

+                "886617b5.bc3bb8"

+            ]

+        ]

+    },

+    {

+        "id": "46a4b920.af4108",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2122.793804168701,

+        "y": 1884.0793697834015,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "a183e0d2.2d984"

+            ]

+        ]

+    },

+    {

+        "id": "a183e0d2.2d984",

+        "type": "execute",

+        "name": "replace } in tmp.ss.partial.composite-value with \"\"",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ss.partial.composite-value`\" />\n\t<parameter name=\"target\" value=\"}\"/>\n\t<parameter name=\"replacement\" value=\"\"/>\n\t<parameter name=\"outputPath\" value=\"tmp.ss.partial.composite-value\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2423.543773651123,

+        "y": 1883.8293583393097,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "886617b5.bc3bb8",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2118.793918609619,

+        "y": 1943.8294279575348,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "bc0d881d.0abc78"

+            ]

+        ]

+    },

+    {

+        "id": "72c91310.31612c",

+        "type": "execute",

+        "name": "split } input=tmp.ss.partial.composite-value, output=end-curly-splits",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n    <parameter name=\"original_string\" value=\"`$tmp.ss.partial.composite-value`\" />\n\t<parameter name=\"regex\" value=\"\\}\"/>\n\t<parameter name=\"ctx_memory_result_key\" value=\"end-curly-splits\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2637.0438842773438,

+        "y": 1944.0793993473053,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bc0d881d.0abc78",

+        "type": "block",

+        "name": "block",

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

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2268.7938385009766,

+        "y": 1943.5793840885162,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "72c91310.31612c",

+                "c81f8903.c631f8",

+                "1958e2e2.8d348d",

+                "49717bbe.1b5764",

+                "d6ef9c86.79f4d",

+                "2537a8bf.67e188"

+            ]

+        ]

+    },

+    {

+        "id": "c81f8903.c631f8",

+        "type": "set",

+        "name": "set $end-curly-splits[0] to tmp.ss.partial.composite-value",

+        "xml": "<set>\n<parameter name='tmp.ss.partial.composite-value' value='`$end-curly-splits[0]`' />\n",

+        "comments": "",

+        "x": 2597.293846130371,

+        "y": 2000.3293840885162,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "1958e2e2.8d348d",

+        "type": "set",

+        "name": "set $end-curly-splits[1] to tmp.ss.param-suffix",

+        "xml": "<set>\n<parameter name='tmp.ss.param-suffix' value='`$end-curly-splits[1]`' />\n",

+        "comments": "",

+        "x": 2558.293846130371,

+        "y": 2101.5794451236725,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "4a84d406.7772ac",

+        "type": "record",

+        "name": "record tmp.ss.partial.resolved-value",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"`'SS: tmp.ss.partial.resolved-value: ' + $tmp.ss.partial.resolved-value`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1841.7105407714844,

+        "y": 2681.2462866306305,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "49a36736.efc988",

+        "type": "outcomeFalse",

+        "name": "false",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 2155.8769912719727,

+        "y": 1816.4957945346832,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "1c2fb743.362af9"

+            ]

+        ]

+    },

+    {

+        "id": "1c2fb743.362af9",

+        "type": "set",

+        "name": "set tmp.ss.partial.composite-value to $dollar-splits[$dollar-splits-index]",

+        "xml": "<set>\n<parameter name='tmp.ss.partial.composite-value' value='`$dollar-splits[$dollar-splits-index]`' />\n",

+        "comments": "",

+        "x": 2525.3769607543945,

+        "y": 1816.2457792758942,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "a8074bd2.dec858",

+        "type": "set",

+        "name": "set tmp.ss.final.composite-resolved-value",

+        "xml": "<set>\n<parameter name='tmp.ss.final.composite-resolved-value' \n\tvalue=\"`$tmp.ss.final.composite-resolved-value + $tmp.ss.partial.resolved-value`\" />\n",

+        "comments": "",

+        "x": 1860.4605407714844,

+        "y": 2751.246287584305,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "af31548e.6e63b8",

+        "type": "set",

+        "name": "set tmp.ss.final.composite-resolved-value NULL",

+        "xml": "<set>\n<parameter name='tmp.ss.final.composite-resolved-value' value='' />\n",

+        "comments": "",

+        "x": 1475.1626586914062,

+        "y": 1448.5674958229065,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "2537a8bf.67e188",

+        "type": "set",

+        "name": "set tmp.ss.partial.resolved-value to ${+ tmp.ss.partial.composite-value +}",

+        "xml": "<set>\n<parameter name='tmp.ss.partial.resolved-value' value=\"`'${' + $tmp.ss.partial.composite-value + '}'`\" />\n",

+        "comments": "",

+        "x": 2665.0436782836914,

+        "y": 2202.079310655594,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "5e1a944f.4174cc",

+        "type": "set",

+        "name": "set tmp.ss.partial.resolved-value to $+ dollar-splits[$dollar-splits-index]",

+        "xml": "<set>\n<parameter name='tmp.ss.partial.resolved-value' value=\"`'$' + $dollar-splits[$dollar-splits-index]`\" />\n",

+        "comments": "",

+        "x": 1967.5436096191406,

+        "y": 1672.0792047977448,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    },

+    {

+        "id": "2c09e36.35f9b1c",

+        "type": "switchNode",

+        "name": "switch: dollar-splits_length == 1",

+        "xml": "<switch test='`$dollar-splits_length == 1`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1421.6666717529297,

+        "y": 1558.3333954811096,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "62bff10c.fb3f"

+            ]

+        ]

+    },

+    {

+        "id": "62bff10c.fb3f",

+        "type": "outcomeTrue",

+        "name": "true",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 1658.8094482421875,

+        "y": 1557.9048261642456,

+        "z": "20c31fe8.214bd",

+        "wires": [

+            [

+                "bc6dfdd7.6272f"

+            ]

+        ]

+    },

+    {

+        "id": "bc6dfdd7.6272f",

+        "type": "set",

+        "name": "set tmp.ss.final.composite-resolved-value",

+        "xml": "<set>\n<parameter name='tmp.ss.final.composite-resolved-value' \n\tvalue=\"`$tmp.ss.param-prefix`\" />\n",

+        "comments": "",

+        "x": 1927.8095703125,

+        "y": 1557.7619428634644,

+        "z": "20c31fe8.214bd",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-assign.json
new file mode 100644
index 0000000..e9f6907
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-assign.json
@@ -0,0 +1,1314 @@
+[

+    {

+        "id": "ac4672ac.5506d",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 188.5863037109375,

+        "y": 82.87202453613281,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "317db8fd.6a2138"

+            ]

+        ]

+    },

+    {

+        "id": "5ad093b4.b05f9c",

+        "type": "block",

+        "name": "block : atomic",

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

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 211.77679443359375,

+        "y": 197.72124099731445,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "1da7f042.70418",

+                "cd953152.81acb",

+                "96a7ad27.1cb38",

+                "78d86895.250bc8",

+                "7d46526.17c5aac",

+                "beeecd6c.915e8",

+                "cdf4ff1.5e539",

+                "d2d53277.c8e3b",

+                "4d9da943.9b5318",

+                "74e369b1.130768"

+            ]

+        ]

+    },

+    {

+        "id": "f1172be.64de4d8",

+        "type": "method",

+        "name": "method self-serve-vf-module-assign",

+        "xml": "<method rpc='self-serve-vf-module-assign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 292.3482131958008,

+        "y": 137.57837963104248,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "5ad093b4.b05f9c"

+            ]

+        ]

+    },

+    {

+        "id": "317db8fd.6a2138",

+        "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": 450.82450103759766,

+        "y": 83.0625171661377,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "f1172be.64de4d8"

+            ]

+        ]

+    },

+    {

+        "id": "cd953152.81acb",

+        "type": "switchNode",

+        "name": "switch vf-module-parameters.param_length",

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

+        "comments": "",

+        "outputs": 1,

+        "x": 526.8363342285156,

+        "y": 1400.2411880493164,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "1cade304.1c3bbd"

+            ]

+        ]

+    },

+    {

+        "id": "1cade304.1c3bbd",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 786.8363647460938,

+        "y": 1400.2411880493164,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "da6ecb81.86ff58"

+            ]

+        ]

+    },

+    {

+        "id": "55d6d80f.981a78",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:self-serve-vfmodule-ra-assignment",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vfmodule-ra-assignment' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1328.5506134033203,

+        "y": 1447.5269384384155,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "b1e02e63.0273f"

+            ]

+        ]

+    },

+    {

+        "id": "bd16b308.30dcd",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to get RA assignments: ' + $error-message`\" />\n",

+        "comments": "",

+        "x": 1809.2648544311523,

+        "y": 1447.0983419418335,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "f6c740a2.a923e",

+        "type": "for",

+        "name": "foreach vf-module-parameters.param[]",

+        "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 812.1222991943359,

+        "y": 1710.4197750091553,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "7eddc009.26c91",

+                "d8e56ff1.4693a"

+            ]

+        ]

+    },

+    {

+        "id": "1da7f042.70418",

+        "type": "set",

+        "name": "set ss.capability.execution-order[]",

+        "xml": "<set>\n<parameter name='ss.capability.execution-order[0]' value='generate-name' />\n<parameter name='ss.capability.execution-order[1]' value='alts-entitlement-assign' />\n<parameter name='ss.capability.execution-order[2]' value='alts-license-assign' />\n<parameter name='ss.capability.execution-order[3]' value='vlan-tag-assign' />\n<parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />\n<parameter name='ss.capability.execution-order[5]' value='eipam-ip-assignment' />\n<parameter name='ss.capability.execution-order[6]' value='eipam-create-pool' />\n<parameter name='ss.capability.execution-order[7]' value='netbox-ip-assign' />\n<parameter name='ss.capability.execution-order[8]' value='mac-address-assign' />\n<parameter name='ss.capability.execution-order[9]' value='mS-mac-address-assign' />\n<parameter name='ss.capability.execution-order[10]' value='create-vpe-pool' />\n<parameter name='ss.capability.execution-order[11]' value='unresolved-composite-data' />\n<parameter name='ss.capability.execution-order[12]' value='aai-vf-module-put' />\n<parameter name='ss.capability.execution-order_length' value='13' />\n",

+        "comments": "",

+        "x": 499.00296783447266,

+        "y": 1262.3006677627563,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "96a7ad27.1cb38",

+        "type": "for",

+        "name": "foreach capability-order[]",

+        "xml": "<for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 467.7649230957031,

+        "y": 1566.2410678863525,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "7e687860.5de498",

+                "baaad7ca.98ffc8",

+                "f6c740a2.a923e",

+                "dc8699f7.88cd38"

+            ]

+        ]

+    },

+    {

+        "id": "7eddc009.26c91",

+        "type": "switchNode",

+        "name": "switch capability-name param vs. execution",

+        "xml": "<switch test='`$ss.capability-name == $tmp.param.capability-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1178.515121459961,

+        "y": 1756.0625677108765,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "24ac9f8a.76969"

+            ]

+        ]

+    },

+    {

+        "id": "24ac9f8a.76969",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1442.015121459961,

+        "y": 1756.3125677108765,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "2b650c7a.d8a5d4"

+            ]

+        ]

+    },

+    {

+        "id": "b1e02e63.0273f",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1655.1219596862793,

+        "y": 1446.9555320739746,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "bd16b308.30dcd"

+            ]

+        ]

+    },

+    {

+        "id": "7e687860.5de498",

+        "type": "set",

+        "name": "set ss.capability-name",

+        "xml": "<set>\n<parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />\n\n<!--\nss.capability.execution-order\n-->",

+        "comments": "",

+        "x": 759.1219787597656,

+        "y": 1566.1935195922852,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "d8e56ff1.4693a",

+        "type": "set",

+        "name": "tmp.param.capability-name",

+        "xml": "<set>\n<parameter name='tmp.param.capability-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />\n",

+        "comments": "",

+        "x": 1127.8721466064453,

+        "y": 1710.6697778701782,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "baaad7ca.98ffc8",

+        "type": "set",

+        "name": "set ss.capability-action = assign",

+        "xml": "<set>\n<parameter name='ss.capability-action' value='assign' />\n",

+        "comments": "",

+        "x": 789.8361206054688,

+        "y": 1613.1101036071777,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "dc8699f7.88cd38",

+        "type": "set",

+        "name": "set capability-dg with 'self-serve-' + capability-name",

+        "xml": "<set>\n<parameter name='ss.capability-dg' value=\"`'self-serve-' + $ss.capability.execution-order[$cidx]`\" />\n",

+        "comments": "",

+        "x": 852.1695861816406,

+        "y": 1661.7649745941162,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "27bec64f.ffd41a",

+        "type": "set",

+        "name": "set sdnc-generated-cloud-resources = true",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.sdnc-generated-cloud-resources' \n\tvalue='true' />\n",

+        "comments": "",

+        "x": 1114.5386962890625,

+        "y": 1148.7293434143066,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "f04ab0bc.e42dc",

+        "type": "switchNode",

+        "name": "switch resource-resolution-data.status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 893.0984791346959,

+        "y": 2241.511119570051,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "c5e63e10.a3093",

+                "1f165162.67ec4f"

+            ]

+        ]

+    },

+    {

+        "id": "c5e63e10.a3093",

+        "type": "other",

+        "name": "PENDING",

+        "xml": "<outcome value='PENDING'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1162.455695016044,

+        "y": 2241.5110757010325,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "61a1d33.b88882c"

+            ]

+        ]

+    },

+    {

+        "id": "1f165162.67ec4f",

+        "type": "other",

+        "name": "FAILED",

+        "xml": "<outcome value='FAILED'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1155.991511208671,

+        "y": 2292.4754063742503,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "61a1d33.b88882c"

+            ]

+        ]

+    },

+    {

+        "id": "61a1d33.b88882c",

+        "type": "call",

+        "name": "call ss.capability-dg",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1371.1102436610636,

+        "y": 2293.2372576849802,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "e5879237.9e628",

+                "2526c489.eb217c"

+            ]

+        ]

+    },

+    {

+        "id": "e5879237.9e628",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1564.1455944606241,

+        "y": 2292.9515359061106,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "d2b0c64f.697d78"

+            ]

+        ]

+    },

+    {

+        "id": "beeecd6c.915e8",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/ss-vf-assign.log' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 413.2013931274414,

+        "y": 2755.56672000885,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "78d86895.250bc8",

+        "type": "switchNode",

+        "name": "switch vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 464.7885932922363,

+        "y": 317.1340227127075,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "94c0784a.4efbd8",

+                "2302720.f948a8e",

+                "4dc65b88.c7c4c4"

+            ]

+        ]

+    },

+    {

+        "id": "94c0784a.4efbd8",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 677.419563293457,

+        "y": 246.52681350708008,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "c1ab19e3.a09b38"

+            ]

+        ]

+    },

+    {

+        "id": "c98eda13.6cb768",

+        "type": "set",

+        "name": "set vf-module-index=0",

+        "xml": "<set>\n<parameter name='vf-module-index' value='0' />\n",

+        "comments": "",

+        "x": 1016.5385932922363,

+        "y": 257.4435987472534,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "2302720.f948a8e",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 676.5981559753418,

+        "y": 385.3126735687256,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "e441c1f2.c0ad1"

+            ]

+        ]

+    },

+    {

+        "id": "f5150a81.100538",

+        "type": "set",

+        "name": "set vf-module-id",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id'\n   value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n",

+        "comments": "",

+        "x": 1032.824234008789,

+        "y": 539.5536422729492,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "fe3a9a0d.f3a558",

+        "type": "set",

+        "name": "set vf-module-parameters",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.'\n  value='vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.' />\n",

+        "comments": "",

+        "x": 1197.5148315429688,

+        "y": 1399.3964304924011,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "3c0e578a.5d7b08",

+        "type": "set",

+        "name": "set order-status to PendingCreate",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'\n  value='PendingCreate' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'\n  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-module-index].vf-module-data.vf-module-level-oper-status.last-action'\n  value='`$vf-module-topology-operation-input.request-information.request-action`' />",

+        "comments": "",

+        "x": 1087.098403930664,

+        "y": 1101.416841506958,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "7d46526.17c5aac",

+        "type": "set",

+        "name": "set ss.capability-type = vf-module",

+        "xml": "<set>\n<parameter name='ss.capability-type' value='vf-module' />\n",

+        "comments": "",

+        "x": 499.9077606201172,

+        "y": 1219.3006258010864,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "da6ecb81.86ff58",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 962.1934574672159,

+        "y": 1400.1220000130788,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "fe3a9a0d.f3a558",

+                "55d6d80f.981a78",

+                "dfb33174.f2c9c"

+            ]

+        ]

+    },

+    {

+        "id": "cdf4ff1.5e539",

+        "type": "set",

+        "name": "set is-new-vfmodule = true",

+        "xml": "<set>\n<parameter name='is-new-vfmodule' value='true' />\n",

+        "comments": "",

+        "x": 471.6102752685547,

+        "y": 197.55074501037598,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "f6595347.aba9",

+        "type": "for",

+        "name": "for each existing VF module",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1035.4315338134766,

+        "y": 385.0030117034912,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "cb80b6c2.f7f7a8"

+            ]

+        ]

+    },

+    {

+        "id": "cb80b6c2.f7f7a8",

+        "type": "switchNode",

+        "name": "switch vf-module-id: input vs service-data",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-information.vf-module-id == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1346.550666809082,

+        "y": 385.574426651001,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "cb23fa3d.38db08"

+            ]

+        ]

+    },

+    {

+        "id": "cb23fa3d.38db08",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1600.4196968078613,

+        "y": 385.39588356018066,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "25cbd14.1ae082e"

+            ]

+        ]

+    },

+    {

+        "id": "5f9f2341.7aeedc",

+        "type": "set",

+        "name": "set is-new-vfmodule = false",

+        "xml": "<set>\n<parameter name='is-new-vfmodule' value='false' />\n",

+        "comments": "",

+        "x": 1972.5864372253418,

+        "y": 384.657772064209,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "25cbd14.1ae082e",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1741.836441040039,

+        "y": 384.9077682495117,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "5f9f2341.7aeedc",

+                "b086c015.9686a",

+                "539e0d93.0e4764"

+            ]

+        ]

+    },

+    {

+        "id": "b086c015.9686a",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 1909.7292289733887,

+        "y": 470.90774631500244,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "539e0d93.0e4764",

+        "type": "set",

+        "name": "set vf-module-index = idx",

+        "xml": "<set>\n<parameter name='vf-module-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1965.5507507324219,

+        "y": 427.94342708587646,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "470bd393.8815fc",

+        "type": "set",

+        "name": "set new vf-module_length = vf-module-index + 1",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-module-index + 1`' />\n",

+        "comments": "",

+        "x": 1097.8960151672363,

+        "y": 298.7650270462036,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "e441c1f2.c0ad1",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 813.7530708312988,

+        "y": 385.69353580474854,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "9c5458e2.63ba88",

+                "f6595347.aba9"

+            ]

+        ]

+    },

+    {

+        "id": "f2ad673d.c9d758",

+        "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' \n\tvalue='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length + 1`' />\n",

+        "comments": "",

+        "x": 1583.0030937194824,

+        "y": 497.4435405731201,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "9c5458e2.63ba88",

+        "type": "switchNode",

+        "name": "switch is-new-vfmodule",

+        "xml": "<switch test='`$is-new-vfmodule`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1021.2530670166016,

+        "y": 455.2649154663086,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "328de05d.d7c21"

+            ]

+        ]

+    },

+    {

+        "id": "328de05d.d7c21",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1219.110221862793,

+        "y": 454.8363628387451,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "b1cc1eae.576a8"

+            ]

+        ]

+    },

+    {

+        "id": "c1ab19e3.a09b38",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 820.2530670166016,

+        "y": 278.19353008270264,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "470bd393.8815fc",

+                "c98eda13.6cb768"

+            ]

+        ]

+    },

+    {

+        "id": "4dc65b88.c7c4c4",

+        "type": "other",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 678.5863037109375,

+        "y": 316.6220245361328,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "c1ab19e3.a09b38"

+            ]

+        ]

+    },

+    {

+        "id": "d2d53277.c8e3b",

+        "type": "switchNode",

+        "name": "switch is-new-vfmodule",

+        "xml": "<switch test='`$is-new-vfmodule`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 464.3363037109375,

+        "y": 540.3720245361328,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "228816c9.7d6b7a"

+            ]

+        ]

+    },

+    {

+        "id": "228816c9.7d6b7a",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 662.1934585571289,

+        "y": 539.9434719085693,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "160cf147.59b4af"

+            ]

+        ]

+    },

+    {

+        "id": "9660a91.81f1358",

+        "type": "set",

+        "name": "Copy vf-module-topology data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id' \n    value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-name' \n    value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-name`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-type' \n    value='`$vf-module-topology-operation-input.vf-module-information.vf-module-type`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.tenant' \n    value='`$vf-module-topology-operation-input.vf-module-request-input.tenant`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.aic-cloud-region' \n    value='`$vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.aic-clli'\n    value='`$vf-module-topology-operation-input.vf-module-request-input.aic-clli`' />",

+        "comments": "",

+        "x": 1078.0863189697266,

+        "y": 585.3720941543579,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "d0c524cc.997e98",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-invariant-uuid'\n  value='`$db.vf-module-model.invariant-uuid`' />\n",

+        "comments": "",

+        "x": 1443.0980796813965,

+        "y": 637.8155345916748,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "9632b3a5.151f7",

+        "type": "switchNode",

+        "name": "switch input model-invariant-uuid",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1086.9551544189453,

+        "y": 660.6399784088135,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "d993041d.727fe8",

+                "7b777471.7e5a6c"

+            ]

+        ]

+    },

+    {

+        "id": "d993041d.727fe8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1292.621826171875,

+        "y": 637.7829418182373,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "d0c524cc.997e98"

+            ]

+        ]

+    },

+    {

+        "id": "7b777471.7e5a6c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1294.050422668457,

+        "y": 682.0685329437256,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "23246502.21d58a"

+            ]

+        ]

+    },

+    {

+        "id": "23246502.21d58a",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-invariant-uuid'\n  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\n",

+        "comments": "",

+        "x": 1448.3361587524414,

+        "y": 681.4971051216125,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "9b1fd622.5ea208",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-uuid'\n  value='`$db.vf-module-model.uuid`' />\n",

+        "comments": "",

+        "x": 1444.050350189209,

+        "y": 726.3542108535767,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "a9b9767.d0f3d88",

+        "type": "switchNode",

+        "name": "switch input model-uuid",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1059.5741729736328,

+        "y": 749.1787157058716,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "95b67445.582658",

+                "f28422f1.a8a5a"

+            ]

+        ]

+    },

+    {

+        "id": "95b67445.582658",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1293.574146270752,

+        "y": 726.321647644043,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "9b1fd622.5ea208"

+            ]

+        ]

+    },

+    {

+        "id": "f28422f1.a8a5a",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1295.002742767334,

+        "y": 770.6072387695312,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "5b080c13.af5d04"

+            ]

+        ]

+    },

+    {

+        "id": "5b080c13.af5d04",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-uuid'\n  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`' />\n",

+        "comments": "",

+        "x": 1449.2884788513184,

+        "y": 770.0358109474182,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "3e2787e5.70ce38",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-version'\n  value='`$db.vf-module-model.version`' />\n",

+        "comments": "",

+        "x": 1435.1932830810547,

+        "y": 815.2114181518555,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "d072296.6aca9d8",

+        "type": "switchNode",

+        "name": "switch input model-version",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1061.7170448303223,

+        "y": 838.0358629226685,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "ae7bcfb3.5f0d2",

+                "153e40d6.cb774f"

+            ]

+        ]

+    },

+    {

+        "id": "ae7bcfb3.5f0d2",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1284.7170295715332,

+        "y": 815.178825378418,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "3e2787e5.70ce38"

+            ]

+        ]

+    },

+    {

+        "id": "153e40d6.cb774f",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1286.1456260681152,

+        "y": 859.4644165039062,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "ab4b217e.693c2"

+            ]

+        ]

+    },

+    {

+        "id": "ab4b217e.693c2",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-version'\n  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\n",

+        "comments": "",

+        "x": 1440.4313621520996,

+        "y": 858.8929886817932,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "59cb1887.519c68",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-name'\n  value='`$db.vf-module-model.name`' />\n",

+        "comments": "",

+        "x": 1435.1932830810547,

+        "y": 902.3542404174805,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "e085243.3e05cd8",

+        "type": "switchNode",

+        "name": "switch input model-name",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1058.7170448303223,

+        "y": 925.1786851882935,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "4f31d90c.74c998",

+                "84e2607f.f6a01"

+            ]

+        ]

+    },

+    {

+        "id": "4f31d90c.74c998",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1284.7170295715332,

+        "y": 902.321647644043,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "59cb1887.519c68"

+            ]

+        ]

+    },

+    {

+        "id": "84e2607f.f6a01",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1286.1456260681152,

+        "y": 946.6072387695312,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "6e518b97.0cd334"

+            ]

+        ]

+    },

+    {

+        "id": "6e518b97.0cd334",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-name'\n  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`' />\n",

+        "comments": "",

+        "x": 1440.4313621520996,

+        "y": 946.0358109474182,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "ec7b65fb.fc6018",

+        "type": "set",

+        "name": "set model-customization-uuid",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-customization-uuid'\n  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\n",

+        "comments": "",

+        "x": 1072.1694030761719,

+        "y": 999.1161699295044,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "63af0c3d.77f934",

+        "type": "set",

+        "name": "copy input data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.'\n   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-module-index].vf-module-data.request-information.'\n   value='$vf-module-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.'\n   value='$vf-module-topology-operation-input.service-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.'\n   value='$vf-module-topology-operation-input.vnf-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.'\n   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-module-index].vf-module-data.vf-module-request-input.' \n    value='$vf-module-topology-operation-input.vf-module-request-input.' />",

+        "comments": "",

+        "x": 1028.824478149414,

+        "y": 1053.8008728027344,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "160cf147.59b4af",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 818.2887191772461,

+        "y": 539.7212162017822,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "9632b3a5.151f7",

+                "a9b9767.d0f3d88",

+                "d072296.6aca9d8",

+                "e085243.3e05cd8",

+                "ec7b65fb.fc6018",

+                "63af0c3d.77f934",

+                "9660a91.81f1358",

+                "f5150a81.100538",

+                "3c0e578a.5d7b08",

+                "27bec64f.ffd41a"

+            ]

+        ]

+    },

+    {

+        "id": "dd621f57.8792a",

+        "type": "set",

+        "name": "set vf-module-index = vf-module_length",

+        "xml": "<set>\n<parameter name='vf-module-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n",

+        "comments": "",

+        "x": 1615.5863227844238,

+        "y": 453.62203216552734,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "b1cc1eae.576a8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1362.0863227844238,

+        "y": 454.37203216552734,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "dd621f57.8792a",

+                "f2ad673d.c9d758"

+            ]

+        ]

+    },

+    {

+        "id": "2b650c7a.d8a5d4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 618.0148696899414,

+        "y": 2241.538803100586,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "f04ab0bc.e42dc",

+                "9691a52d.6666b8"

+            ]

+        ]

+    },

+    {

+        "id": "9691a52d.6666b8",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 796.4434356689453,

+        "y": 2510.9673385620117,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "2526c489.eb217c",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1588.4076690673828,

+        "y": 2438.943384170532,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "3c2b90e5.13698"

+            ]

+        ]

+    },

+    {

+        "id": "3c2b90e5.13698",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"`'DONE: ' + $ss.capability-dg`\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1732.1576690673828,

+        "y": 2437.693384170532,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dfb33174.f2c9c",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"DONE with vfmodule-ra-assignment\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1142.3363037109375,

+        "y": 1495.3720245361328,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8f918c25.18662",

+        "type": "execute",

+        "name": "execute PropertiesNode",

+        "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": 890.5863167898997,

+        "y": 1308.5862832750595,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4d9da943.9b5318",

+        "type": "switchNode",

+        "name": "switch prop.controller.user",

+        "xml": "<switch test='`$prop.controller.user`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 479.30055236816406,

+        "y": 1309.0149040222168,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "7e82a787.ebfeb8"

+            ]

+        ]

+    },

+    {

+        "id": "7e82a787.ebfeb8",

+        "type": "failure",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 679.1576478140696,

+        "y": 1308.5863185610092,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "8f918c25.18662"

+            ]

+        ]

+    },

+    {

+        "id": "74e369b1.130768",

+        "type": "call",

+        "name": "call self-serve-vf-module-mdsal-put",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-mdsal-put' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 496.5741882324219,

+        "y": 2650.58260345459,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "72e787c4.788818",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 1958.5863037109375,

+        "y": 2376.507080078125,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    },

+    {

+        "id": "d2b0c64f.697d78",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1734.0270718165812,

+        "y": 2292.0185897009715,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            [

+                "72e787c4.788818",

+                "245c83ad.8fed6c",

+                "c9140ce7.8a308"

+            ]

+        ]

+    },

+    {

+        "id": "245c83ad.8fed6c",

+        "type": "call",

+        "name": "call self-serve-vf-module-mdsal-put",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-mdsal-put' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2033.2294006347656,

+        "y": 2334.0579681396484,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c9140ce7.8a308",

+        "type": "set",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name='error-message' value=\"`'Encountered error from ' + $ss.capability-dg + ' with error: ' + $error-message`\" />",

+        "comments": "",

+        "x": 1971.4439086914062,

+        "y": 2291.5579509735107,

+        "z": "6a89d3e3.fb4ddc",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-forking-logic.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-forking-logic.json
new file mode 100644
index 0000000..df489bd
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-forking-logic.json
@@ -0,0 +1,457 @@
+[
+    {
+        "id": "8aa8ea11.740be",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 100,
+        "y": 50,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "69365dae.668034"
+            ]
+        ]
+    },
+    {
+        "id": "69365dae.668034",
+        "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": 214.28570556640625,
+        "y": 90.23811149597168,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "f7dcbe91.e46188"
+            ]
+        ]
+    },
+    {
+        "id": "f7dcbe91.e46188",
+        "type": "method",
+        "name": "method self-serve-vf-module-forking-logic",
+        "xml": "<method rpc='self-serve-vf-module-forking-logic' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 237.85719299316406,
+        "y": 138.57143211364746,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "8ac3a01b.fa2a38"
+            ]
+        ]
+    },
+    {
+        "id": "66ba1bad.63f02c",
+        "type": "switchNode",
+        "name": "switch: param[].name",
+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$p].name`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 757.5833282470703,
+        "y": 395.1428565979004,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "f1b12470.776ec8",
+                "540a60cc.25f5f8"
+            ]
+        ]
+    },
+    {
+        "id": "e59ddfff.f29228",
+        "type": "for",
+        "name": "for p in vf-module-input-parameters.param[]",
+        "xml": "<for silentFailure='true' index='p' start='0' end='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 463.6904754638672,
+        "y": 395.64288902282715,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "66ba1bad.63f02c"
+            ]
+        ]
+    },
+    {
+        "id": "736b235f.f41374",
+        "type": "set",
+        "name": "set tmp.exist.vf_module_label = true",
+        "xml": "<set>\n<parameter name='tmp.exist.vf_module_label' value='true' />",
+        "comments": "",
+        "x": 1299.4762573242188,
+        "y": 444.00002670288086,
+        "z": "8316db2b.abe9a",
+        "wires": []
+    },
+    {
+        "id": "8f743c14.96209",
+        "type": "set",
+        "name": "set tmp.exist.sdnc-model-name = true",
+        "xml": "<set>\n<parameter name='tmp.exist.sdnc-model-name' value='true' />\n",
+        "comments": "",
+        "x": 1302.1903648376465,
+        "y": 395.0000419616699,
+        "z": "8316db2b.abe9a",
+        "wires": []
+    },
+    {
+        "id": "8ac3a01b.fa2a38",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 143,
+        "y": 289.9523696899414,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "e59ddfff.f29228",
+                "968d6f83.1e8cb8",
+                "87abb41.4b21fc8",
+                "71f24135.a396b8"
+            ]
+        ]
+    },
+    {
+        "id": "f1b12470.776ec8",
+        "type": "outcome",
+        "name": "sdnc_model_name",
+        "xml": "<outcome value='sdnc_model_name'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1013.7619040352956,
+        "y": 395.0476510184151,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "8f743c14.96209"
+            ]
+        ]
+    },
+    {
+        "id": "540a60cc.25f5f8",
+        "type": "outcome",
+        "name": "vf_module_label",
+        "xml": "<outcome value='vf_module_label'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1016.619026184082,
+        "y": 444.47622299194336,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "736b235f.f41374"
+            ]
+        ]
+    },
+    {
+        "id": "18b84933.21068f",
+        "type": "get-resource",
+        "name": "get VF_MODEL.sdnc_model_name",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT sdnc_model_name from VF_MODEL \n  \tWHERE customization_uuid = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-customization-uuid \n  \tAND sdnc_model_name is not null'\n  pfx='db.vf-model-name'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1169.8572235107422,
+        "y": 676.2616033554077,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "d95cfab.cfa8f08",
+                "91b70953.025358",
+                "e5e4f7b1.a891f"
+            ]
+        ]
+    },
+    {
+        "id": "d95cfab.cfa8f08",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1420.2143478393555,
+        "y": 586.6425437927246,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "4d1797d1.55ba98"
+            ]
+        ]
+    },
+    {
+        "id": "91b70953.025358",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1425.928596496582,
+        "y": 773.7854557037354,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "cdc75221.415348"
+            ]
+        ]
+    },
+    {
+        "id": "4d1797d1.55ba98",
+        "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 reading VF_MODEL table to determine self-serve forking criteria\" />\n",
+        "comments": "",
+        "x": 1601.2143287658691,
+        "y": 586.7854509353638,
+        "z": "8316db2b.abe9a",
+        "wires": []
+    },
+    {
+        "id": "da046f4e.feca88",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 921.7026138305664,
+        "y": 676.4518804550171,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "18b84933.21068f"
+            ]
+        ]
+    },
+    {
+        "id": "71f24135.a396b8",
+        "type": "switchNode",
+        "name": "switch: tmp.exist.sdnc-model-name && tmp.exist.vf_module_label == true",
+        "xml": "<switch test=\"`$tmp.exist.sdnc-model-name == 'true' and $tmp.exist.vf_module_label == 'true'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 552.0594329833984,
+        "y": 589.7141094207764,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "da046f4e.feca88",
+                "af375362.061b2"
+            ]
+        ]
+    },
+    {
+        "id": "af375362.061b2",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 924.6668395996094,
+        "y": 510.0712013244629,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "b5bbd060.67f058"
+            ]
+        ]
+    },
+    {
+        "id": "c6dbcf48.080eb8",
+        "type": "get-resource",
+        "name": "get VF_MODULE_MODEL.vf-module-label",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT vf_module_label from VF_MODULE_MODEL \n  \tWHERE vf_customization_uuid = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-customization-uuid\n  \tAND vf_module_label is not null '\n  pfx='db.vf-module-label'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1698.0953903198242,
+        "y": 676.4998636245728,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "89568209.e5f728",
+                "2dda5e9d.c9b972",
+                "cbe36505.a168d8"
+            ]
+        ]
+    },
+    {
+        "id": "89568209.e5f728",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1973.4526138305664,
+        "y": 676.5949945449829,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "aa612980.7b237"
+            ]
+        ]
+    },
+    {
+        "id": "2dda5e9d.c9b972",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1984.0239715576172,
+        "y": 724.3092603683472,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "2bea618b.553156"
+            ]
+        ]
+    },
+    {
+        "id": "aa612980.7b237",
+        "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 reading VF_MODULE_MODEL table to determine self-serve forking criteria\" />\n",
+        "comments": "",
+        "x": 2147.5951232910156,
+        "y": 677.1664400100708,
+        "z": "8316db2b.abe9a",
+        "wires": []
+    },
+    {
+        "id": "cbe36505.a168d8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1977.809684753418,
+        "y": 627.4999189376831,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "69e505b7.70a894"
+            ]
+        ]
+    },
+    {
+        "id": "e5e4f7b1.a891f",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1423.8691101074219,
+        "y": 676.2616682052612,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "c6dbcf48.080eb8"
+            ]
+        ]
+    },
+    {
+        "id": "968d6f83.1e8cb8",
+        "type": "set",
+        "name": "initialize tmp.exist.sdnc-model-name && tmp.exist.vf_module_label = false",
+        "xml": "<set>\n<parameter name='tmp.exist.sdnc-model-name' value='false' />\n<parameter name='tmp.exist.vf_module_label' value='false' />\n",
+        "comments": "",
+        "x": 555.5833053588867,
+        "y": 290.22603130340576,
+        "z": "8316db2b.abe9a",
+        "wires": []
+    },
+    {
+        "id": "87abb41.4b21fc8",
+        "type": "switchNode",
+        "name": "switch: vf-module-input-parameters.param_length",
+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 483.4404830932617,
+        "y": 338.70231533050537,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "afd3db14.e78eb"
+            ]
+        ]
+    },
+    {
+        "id": "afd3db14.e78eb",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 747.0119018554688,
+        "y": 338.988055229187,
+        "z": "8316db2b.abe9a",
+        "wires": [
+            [
+                "460cb6a0.e01ee8"
+            ]
+        ]
+    },
+    {
+        "id": "460cb6a0.e01ee8",
+        "type": "set",
+        "name": "set vf-module-input-parameters.param_length = 0",
+        "xml": "<set>\n<parameter name='vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length' value='0' />\n",
+        "comments": "",
+        "x": 1020.7261428833008,
+        "y": 338.84521675109863,
+        "z": "8316db2b.abe9a",
+        "wires": []
+    },
+    {
+        "id": "2bea618b.553156",
+        "type": "set",
+        "name": "set ss.self-serve-flag = false",
+        "xml": "<set>\n<parameter name='ss.self-serve-flag' value='false' />\n",
+        "comments": "",
+        "x": 2199.999801635742,
+        "y": 724.2857275009155,
+        "z": "8316db2b.abe9a",
+        "wires": []
+    },
+    {
+        "id": "b5bbd060.67f058",
+        "type": "set",
+        "name": "set ss.self-serve-flag = true",
+        "xml": "<set>\n<parameter name='ss.self-serve-flag' value='true' />\n",
+        "comments": "",
+        "x": 1143.5,
+        "y": 508.32147216796875,
+        "z": "8316db2b.abe9a",
+        "wires": []
+    },
+    {
+        "id": "cdc75221.415348",
+        "type": "set",
+        "name": "set ss.self-serve-flag = false",
+        "xml": "<set>\n<parameter name='ss.self-serve-flag' value='false' />\n",
+        "comments": "",
+        "x": 1652.857192993164,
+        "y": 773.2857007980347,
+        "z": "8316db2b.abe9a",
+        "wires": []
+    },
+    {
+        "id": "69e505b7.70a894",
+        "type": "set",
+        "name": "set ss.self-serve-flag = true",
+        "xml": "<set>\n<parameter name='ss.self-serve-flag' value='true' />\n",
+        "comments": "",
+        "x": 2196.07177734375,
+        "y": 624.7857666015625,
+        "z": "8316db2b.abe9a",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name-changeassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name-changeassign.json
new file mode 100644
index 0000000..42ff2a9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name-changeassign.json
@@ -0,0 +1,386 @@
+[

+    {

+        "id": "ca0478b8.252088",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 142.85714721679688,

+        "y": 72.85714721679688,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "7c71ac58.1f4244"

+            ]

+        ]

+    },

+    {

+        "id": "7c71ac58.1f4244",

+        "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": 418.8571472167969,

+        "y": 73.85714721679688,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "a2678c16.8e1eb"

+            ]

+        ]

+    },

+    {

+        "id": "a2678c16.8e1eb",

+        "type": "method",

+        "name": "self-serve-vf-module-generate-name-changeassign",

+        "xml": "<method rpc='self-serve-vf-module-generate-name-changeassign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 323.4285583496094,

+        "y": 125.71429061889648,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "afbcafe4.6d848"

+            ]

+        ]

+    },

+    {

+        "id": "570da090.941e5",

+        "type": "execute",

+        "name": "execute NameGenerationNode-changeassign",

+        "xml": "<execute plugin='org.openecomp.sdnc.prov.namegeneration.node.AssignNameNode' method='process'>\n   <parameter name='payload' value='`$tmp.vf-module.changeassign.naming-data-payload`' />\n   <parameter name=\"prifix\" value=\"vf-module.changeassign.nameGenResponse\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 671.4285888671875,

+        "y": 659.2857213020325,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "551cdc4a.e86e94",

+                "ba2f7c73.31a28"

+            ]

+        ]

+    },

+    {

+        "id": "551cdc4a.e86e94",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 959.4285888671875,

+        "y": 613.2857213020325,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "7dfc16bc.be2d18"

+            ]

+        ]

+    },

+    {

+        "id": "ba2f7c73.31a28",

+        "type": "failure",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 965.4285888671875,

+        "y": 713.2857213020325,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "7dfc16bc.be2d18"

+            ]

+        ]

+    },

+    {

+        "id": "7dfc16bc.be2d18",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1165.4285888671875,

+        "y": 655.2857213020325,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "56db66db.f751e8",

+                "2a9c646.dc70e9c"

+            ]

+        ]

+    },

+    {

+        "id": "56db66db.f751e8",

+        "type": "set",

+        "name": "set status as FAILED",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />",

+        "comments": "",

+        "x": 1374.4285888671875,

+        "y": 604.2857213020325,

+        "z": "7da44d34.41b8e4",

+        "wires": []

+    },

+    {

+        "id": "2a9c646.dc70e9c",

+        "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 from NameGenerationNode ChangeAssign vf-module ' + $error-message`\" />\n",

+        "comments": "",

+        "x": 1360.4285888671875,

+        "y": 713.2857213020325,

+        "z": "7da44d34.41b8e4",

+        "wires": []

+    },

+    {

+        "id": "afbcafe4.6d848",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 224.71428680419922,

+        "y": 562.8571300506592,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "b979f5f1.ad8358",

+                "ab950644.7d58a8",

+                "975f7bc0.f4f5d8",

+                "570da090.941e5",

+                "f212bbb9.76a8b8",

+                "1a352eb2.e4d9b1",

+                "14d9ecdc.aff013"

+            ]

+        ]

+    },

+    {

+        "id": "b979f5f1.ad8358",

+        "type": "for",

+        "name": "for service-data...vf-module...resource-key",

+        "xml": "<for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.resource-key_length`' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 667.0000076293945,

+        "y": 375.00000858306885,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "56f43f1.46959c"

+            ]

+        ]

+    },

+    {

+        "id": "56f43f1.46959c",

+        "type": "switchNode",

+        "name": "switch resource-key[].name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.resource-key[$i].name`'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1004.8571624755859,

+        "y": 374.9999942779541,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "db5132dc.231e6"

+            ]

+        ]

+    },

+    {

+        "id": "db5132dc.231e6",

+        "type": "outcome",

+        "name": "external-key",

+        "xml": "<outcome value='external-key'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1245.857162475586,

+        "y": 374.9999942779541,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "eace8af.3827778"

+            ]

+        ]

+    },

+    {

+        "id": "eace8af.3827778",

+        "type": "set",

+        "name": "set tmp.external-key.value",

+        "xml": "<set>\n<parameter name='tmp.external-key.value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.resource-key[$i].value`' />\n",

+        "comments": "",

+        "x": 1475.857162475586,

+        "y": 374.9999942779541,

+        "z": "7da44d34.41b8e4",

+        "wires": []

+    },

+    {

+        "id": "975f7bc0.f4f5d8",

+        "type": "set",

+        "name": "set tmp.vf-module.changeassign.naming-data-payload",

+        "xml": "<set>\n<parameter name=\"tmp.vf-module.changeassign.naming-data-payload\" value=\"`'{&quot;elements&quot;:[{' + '&quot;resource-name&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].name + '&quot;,&quot;resource-value&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].value + '&quot;,&quot;external-key&quot;:&quot;' + $tmp.external-key.value + '&quot;}]}'`\"/>",

+        "comments": "",

+        "x": 710.2856903076172,

+        "y": 559.0000162124634,

+        "z": "7da44d34.41b8e4",

+        "wires": []

+    },

+    {

+        "id": "ab950644.7d58a8",

+        "type": "switchNode",

+        "name": "switch tmp.external-key.value",

+        "xml": "<switch test='`$tmp.external-key.value`'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 619.0000076293945,

+        "y": 502.00000858306885,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "f0dcf6b8.eaab28"

+            ]

+        ]

+    },

+    {

+        "id": "f0dcf6b8.eaab28",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 846.0000076293945,

+        "y": 502.00000858306885,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "a8701ab3.e308f8"

+            ]

+        ]

+    },

+    {

+        "id": "a8701ab3.e308f8",

+        "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=\"self-service-vf-module-generate-name-changeassign error : external-key is null for vf-module\" />\n",

+        "comments": "",

+        "x": 1007.0000076293945,

+        "y": 502.00000858306885,

+        "z": "7da44d34.41b8e4",

+        "wires": []

+    },

+    {

+        "id": "fe3c1b72.b16ba8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 795.9523773193359,

+        "y": 796.0475826263428,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "a8ee0931.de9688"

+            ]

+        ]

+    },

+    {

+        "id": "a8ee0931.de9688",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 977.8571929931641,

+        "y": 834.5714569091797,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "73245796.36c418",

+                "b4c5b7d.9734d48"

+            ]

+        ]

+    },

+    {

+        "id": "73245796.36c418",

+        "type": "set",

+        "name": "set status as FAILED",

+        "xml": "<set>\n\t<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />",

+        "comments": "",

+        "x": 1192.857192993164,

+        "y": 794.5714569091797,

+        "z": "7da44d34.41b8e4",

+        "wires": []

+    },

+    {

+        "id": "b4c5b7d.9734d48",

+        "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=\"`'Failed to update vf-module.vf-module-name to ' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].value + ' in AnAI'`\" />\n",

+        "comments": "",

+        "x": 1180.857192993164,

+        "y": 882.5714569091797,

+        "z": "7da44d34.41b8e4",

+        "wires": []

+    },

+    {

+        "id": "1a352eb2.e4d9b1",

+        "type": "set",

+        "name": "set param[].value and status",

+        "xml": "<set>\n\t <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].value`' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].value`'/>\n\t <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.status`' value='SUCCESS' />",

+        "comments": "",

+        "x": 629.5714416503906,

+        "y": 1023.1428661346436,

+        "z": "7da44d34.41b8e4",

+        "wires": []

+    },

+    {

+        "id": "f212bbb9.76a8b8",

+        "type": "save",

+        "name": "update vf-module",

+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module\" key=\"generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id AND vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id \" > \n<parameter name=\"vf-module-name\" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].value`' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 598.2698364257812,

+        "y": 835.0161256790161,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "fe3c1b72.b16ba8",

+                "658b3ee2.d2b67"

+            ]

+        ]

+    },

+    {

+        "id": "658b3ee2.d2b67",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 793.5079803466797,

+        "y": 882.1586666107178,

+        "z": "7da44d34.41b8e4",

+        "wires": [

+            [

+                "a8ee0931.de9688"

+            ]

+        ]

+    },

+    {

+        "id": "14d9ecdc.aff013",

+        "type": "set",

+        "name": "set tmp.external-key.value = NULL",

+        "xml": "<set>\n<parameter name='tmp.external-key.value' value='' />\n",

+        "comments": "",

+        "x": 638.5714263916016,

+        "y": 321.42858600616455,

+        "z": "7da44d34.41b8e4",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name.json
new file mode 100644
index 0000000..715b273
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name.json
@@ -0,0 +1,1642 @@
+[

+    {

+        "id": "e84bfbbb.718608",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 141.25,

+        "y": 45,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "27327715.bee628"

+            ]

+        ]

+    },

+    {

+        "id": "27327715.bee628",

+        "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": 393.8213806152344,

+        "y": 44.428558349609375,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "46690c35.cecfd4"

+            ]

+        ]

+    },

+    {

+        "id": "46690c35.cecfd4",

+        "type": "method",

+        "name": "self-serve-vf-module-generate-name",

+        "xml": "<method rpc='self-serve-vf-module-generate-name' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 264.05955505371094,

+        "y": 106.333327293396,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "6114d73f.423e38"

+            ]

+        ]

+    },

+    {

+        "id": "a146bb83.82a0b8",

+        "type": "switchNode",

+        "name": "switch capability action",

+        "xml": "<switch test=\"`$ss.capability-action`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 331.7142028808594,

+        "y": 880.9762096405029,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "e24bc2f2.db491",

+                "94253430.072878"

+            ]

+        ]

+    },

+    {

+        "id": "e24bc2f2.db491",

+        "type": "not-found",

+        "name": "unassign",

+        "xml": "<outcome value='unassign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 557.0119094848633,

+        "y": 260.7380905151367,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "e82d9fdf.5f262"

+            ]

+        ]

+    },

+    {

+        "id": "6114d73f.423e38",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 245.18649291992188,

+        "y": 172.206392288208,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "a146bb83.82a0b8",

+                "4d017d4c.7600e4"

+            ]

+        ]

+    },

+    {

+        "id": "94253430.072878",

+        "type": "not-found",

+        "name": "assign",

+        "xml": "<outcome value='assign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 529.603157043457,

+        "y": 1514.535545349121,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "4aed50aa.bd34b"

+            ]

+        ]

+    },

+    {

+        "id": "f3054564.8dee78",

+        "type": "execute",

+        "name": "execute replace extra comma",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>\n   <parameter name='outputPath' value='tmp.naming-data-payload' />\n   <parameter name='source' value='`$tmp.naming-data-payload`' />\n   <parameter name='target' value=',}' />\n   <parameter name='replacement' value='}' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1283.3334274291992,

+        "y": 728.3333501815796,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a545ef92.a752",

+        "type": "for",

+        "name": "for vf-module-parameters",

+        "xml": "<for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 975.1665954589844,

+        "y": 318.6671676635742,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "ae9b45ff.13aa28"

+            ]

+        ]

+    },

+    {

+        "id": "ae9b45ff.13aa28",

+        "type": "switchNode",

+        "name": "switch capability-name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1255.1665954589844,

+        "y": 318.6671676635742,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "b9e1ae63.38de5"

+            ]

+        ]

+    },

+    {

+        "id": "b9e1ae63.38de5",

+        "type": "not-found",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1464.1667175292969,

+        "y": 318.6671676635742,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "d5db7c2d.5d5de"

+            ]

+        ]

+    },

+    {

+        "id": "1e50adf4.9b4d42",

+        "type": "for",

+        "name": "for vf-module-parameters",

+        "xml": "<for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1274.5000534057617,

+        "y": 521.0000610351562,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "c1e0ef7d.fceca"

+            ]

+        ]

+    },

+    {

+        "id": "b94b4eca.42c3a",

+        "type": "set",

+        "name": "set payload data",

+        "xml": "<set>\n<parameter name=\"tmp.naming-data-payload\" value=\"`$tmp.naming-data-payload + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`\"/>\n<parameter name=\"`tmp.gen-name[0].element[$j].name`\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name`\"/>\n<parameter name=\"`tmp.gen-name[0].element[$j].value`\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`\"/>\n<parameter name=\"`tmp.gen-name[0].element_length`\" value='`$j + 1`' />",

+        "comments": "",

+        "x": 1877.0000534057617,

+        "y": 519.0000610351562,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "6105637d.c28fdc",

+        "type": "set",

+        "name": "set tmp.naming-data-payload",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + '{'`\" />\n<parameter name='tmp.gen-name_length' value='1' />",

+        "comments": "",

+        "x": 1292.0000457763672,

+        "y": 454.0000286102295,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "a7b567fa.b60c18",

+        "type": "set",

+        "name": "set payload data",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + '},'`\" />",

+        "comments": "",

+        "x": 1250.3334274291992,

+        "y": 591.3333501815796,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "f42c069c.3234d8",

+        "type": "set",

+        "name": "set close payload list",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + ']}'`\" />",

+        "comments": "",

+        "x": 1256.3334274291992,

+        "y": 656.3333501815796,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "c16b7168.9953c",

+        "type": "execute",

+        "name": "execute replace extra comma",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>\n   <parameter name='outputPath' value='tmp.naming-data-payload' />\n   <parameter name='source' value='`$tmp.naming-data-payload`' />\n   <parameter name='target' value=',]' />\n   <parameter name='replacement' value=']' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1286.3334274291992,

+        "y": 782.3333501815796,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "69dc08d7.120c38",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1626.3335571289062,

+        "y": 886.0001163482666,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "8db09167.c1c35"

+            ]

+        ]

+    },

+    {

+        "id": "70f1338a.4429cc",

+        "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 from NameGenerationNode Unassign\" />\n",

+        "comments": "",

+        "x": 2020.3335571289062,

+        "y": 986.0001163482666,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "4892f279.12f7dc",

+        "type": "failure",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1631.3335571289062,

+        "y": 985.0001163482666,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "8db09167.c1c35"

+            ]

+        ]

+    },

+    {

+        "id": "8db09167.c1c35",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1807.9049835205078,

+        "y": 932.8572578430176,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "e77f3b3e.260848",

+                "70f1338a.4429cc"

+            ]

+        ]

+    },

+    {

+        "id": "e77f3b3e.260848",

+        "type": "set",

+        "name": "set status as FAILED",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.status`' value='FAILED' />",

+        "comments": "",

+        "x": 2034.3335571289062,

+        "y": 877.0001163482666,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "4f4ff4c3.3fdccc",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"jsonStringToCtx\">\n\t<parameter name=\"source\" value=\"nameGenResponse.httpResponse\" />\n\t<parameter name=\"outputPath\" value=\"jsonContextPrefix\" />\n\t<parameter name=\"isEscaped\" value=\"false\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1262.3335494995117,

+        "y": 1120.6666717529297,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d5db7c2d.5d5de",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 995.0001029968262,

+        "y": 452.00000762939453,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "6105637d.c28fdc",

+                "1e50adf4.9b4d42",

+                "a7b567fa.b60c18",

+                "f42c069c.3234d8",

+                "f3054564.8dee78",

+                "4f4ff4c3.3fdccc",

+                "c16b7168.9953c",

+                "59d89928.757ce8",

+                "750564ef.62aaac",

+                "a905c3e.9b98b4",

+                "42f87bad.5e21a4",

+                "1378d748.6067b9"

+            ]

+        ]

+    },

+    {

+        "id": "c1e0ef7d.fceca",

+        "type": "switchNode",

+        "name": "switch external-key",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name == 'external-key'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1513.0000534057617,

+        "y": 520.0000610351562,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "5f8e2924.139af8"

+            ]

+        ]

+    },

+    {

+        "id": "5f8e2924.139af8",

+        "type": "not-found",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1697.0000534057617,

+        "y": 520.0000610351562,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "b94b4eca.42c3a"

+            ]

+        ]

+    },

+    {

+        "id": "a49850b9.7de62",

+        "type": "execute",

+        "name": "execute replace extra comma",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>\n   <parameter name='outputPath' value='tmp.naming-data-payload' />\n   <parameter name='source' value='`$tmp.naming-data-payload`' />\n   <parameter name='target' value=',}' />\n   <parameter name='replacement' value='}' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1410.4999694824219,

+        "y": 1877.918339729309,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e350cd4f.89128",

+        "type": "for",

+        "name": "for vf-module-parameters",

+        "xml": "<for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1895.4165344238281,

+        "y": 1582.3345394134521,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "461f7009.31252"

+            ]

+        ]

+    },

+    {

+        "id": "461f7009.31252",

+        "type": "set",

+        "name": "set payload data",

+        "xml": "<set>\n<parameter name=\"tmp.naming-data-payload\" value=\"`$tmp.naming-data-payload + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`\"/>\n<parameter name=\"`tmp.gen-name[$tmp.gen-name_length].element[$j].name`\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name`\"/>\n<parameter name=\"`tmp.gen-name[$tmp.gen-name_length].element[$j].value`\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`\"/>\n<parameter name=\"`tmp.gen-name[$tmp.gen-name_length].element_length`\" value='`$j + 1`' />",

+        "comments": "",

+        "x": 2151.916534423828,

+        "y": 1582.3345394134521,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "77ed14f0.1e50fc",

+        "type": "set",

+        "name": "set set payload data",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + '{'`\" />",

+        "comments": "",

+        "x": 1877.9165344238281,

+        "y": 1528.3345394134521,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "dfcb1ceb.9bec1",

+        "type": "set",

+        "name": "set payload data",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + '},'`\" />\n<parameter name='tmp.gen-name_length' value='`$tmp.gen-name_length + 1`' />",

+        "comments": "",

+        "x": 1870.5831604003906,

+        "y": 1642.6679525375366,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "7a57066b.2add18",

+        "type": "set",

+        "name": "set close payload list",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + ']}'`\" />",

+        "comments": "",

+        "x": 1380.500099182129,

+        "y": 1810.2515354156494,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "c76f71d.3fbea9",

+        "type": "execute",

+        "name": "execute replace extra comma",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>\n   <parameter name='outputPath' value='tmp.naming-data-payload' />\n   <parameter name='source' value='`$tmp.naming-data-payload`' />\n   <parameter name='target' value=',]' />\n   <parameter name='replacement' value=']' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1413.4999694824219,

+        "y": 1931.918339729309,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a5e78811.2ff3a8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1726.4999771118164,

+        "y": 2057.5850505828857,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "d25aa272.8015c"

+            ]

+        ]

+    },

+    {

+        "id": "e2d27def.fb7c8",

+        "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 from NameGenerationNode Assign\" />\n",

+        "comments": "",

+        "x": 2091.4999771118164,

+        "y": 2157.5850505828857,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "ec9a39ae.283a08",

+        "type": "failure",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1731.4999771118164,

+        "y": 2156.5850505828857,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "d25aa272.8015c"

+            ]

+        ]

+    },

+    {

+        "id": "d25aa272.8015c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1889.4999771118164,

+        "y": 2101.5850505828857,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "e2d27def.fb7c8",

+                "276a7d7f.ba8d72"

+            ]

+        ]

+    },

+    {

+        "id": "276a7d7f.ba8d72",

+        "type": "set",

+        "name": "set status as FAILED",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.status`' value='FAILED' />",

+        "comments": "",

+        "x": 2105.4999771118164,

+        "y": 2048.5850505828857,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "a3966104.f08e7",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"jsonStringToCtx\">\n\t<parameter name=\"source\" value=\"nameGenResponse.httpResponse\" />\n\t<parameter name=\"outputPath\" value=\"jsonContextPrefix\" />\n\t<parameter name=\"isEscaped\" value=\"false\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1386.1667175292969,

+        "y": 2283.2520456314087,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3971e600.d8d9fa",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1642.5833129882812,

+        "y": 1581.3345775604248,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "e350cd4f.89128",

+                "77ed14f0.1e50fc",

+                "dfcb1ceb.9bec1"

+            ]

+        ]

+    },

+    {

+        "id": "eaf1cf2e.82906",

+        "type": "set",

+        "name": "set status as SUCCESS",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.status`' value='SUCCESS' />",

+        "comments": "",

+        "x": 3197.2139434814453,

+        "y": 2205.4898414611816,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "ebdc7fff.ef0a3",

+        "type": "for",

+        "name": "for vnf-parameters data",

+        "xml": "<for index='cn' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2448.1666412353516,

+        "y": 2292.918468475342,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "fab36c9c.cfd6"

+            ]

+        ]

+    },

+    {

+        "id": "fab36c9c.cfd6",

+        "type": "switchNode",

+        "name": "switch param[] name",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].name == 'vnfc-name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2701.6666412353516,

+        "y": 2293.9188346862793,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "2b9649be.3888a6"

+            ]

+        ]

+    },

+    {

+        "id": "2b9649be.3888a6",

+        "type": "success",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2894.6666412353516,

+        "y": 2294.418712615967,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "bf73571d.0cab48"

+            ]

+        ]

+    },

+    {

+        "id": "bf73571d.0cab48",

+        "type": "for",

+        "name": "for j in resource key",

+        "xml": "<for silentFailure='true' index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3070.214267730713,

+        "y": 2294.871190071106,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "65cb4145.fef09"

+            ]

+        ]

+    },

+    {

+        "id": "65cb4145.fef09",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3267.452404022217,

+        "y": 2296.5850582122803,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "dc43b4ed.4a3188",

+                "74bd7b58.2c4ec4",

+                "ef6ac3b9.1f0ac",

+                "c45ccc74.2757f",

+                "2bb85a57.97bc86",

+                "94d99538.8a9d28",

+                "b788ec8b.95acd"

+            ]

+        ]

+    },

+    {

+        "id": "74bd7b58.2c4ec4",

+        "type": "switchNode",

+        "name": "switch model-invariant-uuid",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key[$j].name == 'model-invariant-uuid'`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3558.3094024658203,

+        "y": 2161.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "b7662f86.cab36"

+            ]

+        ]

+    },

+    {

+        "id": "ef6ac3b9.1f0ac",

+        "type": "switchNode",

+        "name": "switch model-customization-uuid",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key[$j].name == 'model-customization-uuid'`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3526.3094024658203,

+        "y": 2219.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "29f21450.554fdc"

+            ]

+        ]

+    },

+    {

+        "id": "c45ccc74.2757f",

+        "type": "switchNode",

+        "name": "switch model-uuid",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key[$j].name == 'model-uuid'`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3524.3094024658203,

+        "y": 2281.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "525fa047.26849"

+            ]

+        ]

+    },

+    {

+        "id": "2bb85a57.97bc86",

+        "type": "switchNode",

+        "name": "switch model-version",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key[$j].name == 'model-version'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3532.3094024658203,

+        "y": 2343.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "764617a1.0f59f8"

+            ]

+        ]

+    },

+    {

+        "id": "dc43b4ed.4a3188",

+        "type": "switchNode",

+        "name": "switch vm-type",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key[$j].name == 'vm-type'`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3548.3094024658203,

+        "y": 2089.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "51eeee44.62fc3"

+            ]

+        ]

+    },

+    {

+        "id": "51eeee44.62fc3",

+        "type": "success",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3752.3094024658203,

+        "y": 2085.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "3fb4c41.cc64a3c"

+            ]

+        ]

+    },

+    {

+        "id": "b7662f86.cab36",

+        "type": "success",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3752.3094024658203,

+        "y": 2159.4063816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "6c1e2846.ea8778"

+            ]

+        ]

+    },

+    {

+        "id": "29f21450.554fdc",

+        "type": "success",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3758.3094024658203,

+        "y": 2215.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "25ee6281.39852e"

+            ]

+        ]

+    },

+    {

+        "id": "525fa047.26849",

+        "type": "success",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3762.3094024658203,

+        "y": 2273.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "b82557fc.5077f8"

+            ]

+        ]

+    },

+    {

+        "id": "764617a1.0f59f8",

+        "type": "success",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3768.3094024658203,

+        "y": 2339.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "b6c3468b.b83238"

+            ]

+        ]

+    },

+    {

+        "id": "3fb4c41.cc64a3c",

+        "type": "set",

+        "name": "set vm-type",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-type`' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key[$j].value`' />\n",

+        "comments": "",

+        "x": 3916.3094024658203,

+        "y": 2087.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "6c1e2846.ea8778",

+        "type": "set",

+        "name": "set model-invariant-uuid",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-invariant-uuid`' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key[$j].value`' />\n",

+        "comments": "",

+        "x": 3962.3094024658203,

+        "y": 2153.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "25ee6281.39852e",

+        "type": "set",

+        "name": "set model-customization-uuid",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-customization-uuid`' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key[$j].value`' />\n",

+        "comments": "",

+        "x": 4006.3094024658203,

+        "y": 2217.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "b82557fc.5077f8",

+        "type": "set",

+        "name": "set model-uuid",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-uuid`' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key[$j].value`' />\n",

+        "comments": "",

+        "x": 3982.3094024658203,

+        "y": 2271.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "b6c3468b.b83238",

+        "type": "set",

+        "name": "set model-version",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-version`' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key[j].value`' />\n",

+        "comments": "",

+        "x": 3928.3094024658203,

+        "y": 2337.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "1de73fc.a7c00c",

+        "type": "set",

+        "name": "set model-name",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-name`' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key[$j].value`' />\n",

+        "comments": "",

+        "x": 3934.3094024658203,

+        "y": 2393.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "348bf42b.21ddbc",

+        "type": "set",

+        "name": "set  vnfc-name",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-name`' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key[$j].value`' />\n",

+        "comments": "",

+        "x": 3952.3094024658203,

+        "y": 2449.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "94d99538.8a9d28",

+        "type": "switchNode",

+        "name": "switch model-name",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key[$j].name == 'model-name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3532.3094024658203,

+        "y": 2395.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "b9ea57b4.6ce108"

+            ]

+        ]

+    },

+    {

+        "id": "b788ec8b.95acd",

+        "type": "switchNode",

+        "name": "switch vnfc-name",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].resource-resolution-data.resource-key[$j].name == 'vnfc-name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3530.3094024658203,

+        "y": 2449.1563816070557,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "434a8283.7cea2c"

+            ]

+        ]

+    },

+    {

+        "id": "b9ea57b4.6ce108",

+        "type": "success",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3766.3094024658203,

+        "y": 2393.1563816070548,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "1de73fc.a7c00c"

+            ]

+        ]

+    },

+    {

+        "id": "434a8283.7cea2c",

+        "type": "success",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3760.3094024658203,

+        "y": 2447.1563816070548,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "348bf42b.21ddbc"

+            ]

+        ]

+    },

+    {

+        "id": "ed9a3855.ee7828",

+        "type": "for",

+        "name": "for vf-module-parameters",

+        "xml": "<for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 947.0475769042969,

+        "y": 1580.9055223464966,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "d5d54e6c.65aa3"

+            ]

+        ]

+    },

+    {

+        "id": "d5d54e6c.65aa3",

+        "type": "switchNode",

+        "name": "switch capability-name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1227.0475769042969,

+        "y": 1580.9055223464966,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "a7e6af82.f996b"

+            ]

+        ]

+    },

+    {

+        "id": "a7e6af82.f996b",

+        "type": "not-found",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1436.0476989746094,

+        "y": 1580.9055223464966,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "3971e600.d8d9fa"

+            ]

+        ]

+    },

+    {

+        "id": "4aed50aa.bd34b",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 698.0475769042969,

+        "y": 1513.9052782058716,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "23e78efe.1e9da2",

+                "ed9a3855.ee7828",

+                "3dd1b4b3.2a22fc"

+            ]

+        ]

+    },

+    {

+        "id": "23e78efe.1e9da2",

+        "type": "set",

+        "name": "set tmp.naming-data-payload",

+        "xml": "<set>\n\t<parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />\n\t<parameter name='tmp.gen-name_length' value='0' />",

+        "comments": "",

+        "x": 968.3809356689453,

+        "y": 1512.9052925109863,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "3dd1b4b3.2a22fc",

+        "type": "switchNode",

+        "name": "switch tmp.naming-data-payload is null",

+        "xml": "<switch test=\"`$tmp.naming-data-payload == ''`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 977.297607421875,

+        "y": 1703.405400276184,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "a82bc6f5.75a5f8"

+            ]

+        ]

+    },

+    {

+        "id": "a82bc6f5.75a5f8",

+        "type": "not-found",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1211.0476379394531,

+        "y": 1703.155156135559,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "601f05f5.bbe91c"

+            ]

+        ]

+    },

+    {

+        "id": "601f05f5.bbe91c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 992.1309661865234,

+        "y": 1820.4055080413818,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "7a57066b.2add18",

+                "a49850b9.7de62",

+                "c76f71d.3fbea9",

+                "a3966104.f08e7",

+                "29b82897.e9cf48",

+                "571c0bc8.cea834",

+                "9b679da3.35f9b",

+                "5470ee78.282f2"

+            ]

+        ]

+    },

+    {

+        "id": "29b82897.e9cf48",

+        "type": "execute",

+        "name": "execute RestApiCallNode - POST gen-name",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >    \n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />\n    <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />\n    <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name=\"responsePrefix\" value=\"nameGenResponse\" />\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1449.1904907226562,

+        "y": 2105.000608444214,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "a5e78811.2ff3a8",

+                "ec9a39ae.283a08"

+            ]

+        ]

+    },

+    {

+        "id": "59d89928.757ce8",

+        "type": "execute",

+        "name": "execute RestApiCallNode - DELETE gen-name",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >    \n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />\n    <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />\n    <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"nameGenResponse\" />\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1335.8572387695312,

+        "y": 933.6671085357666,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "69dc08d7.120c38",

+                "4892f279.12f7dc"

+            ]

+        ]

+    },

+    {

+        "id": "4d017d4c.7600e4",

+        "type": "set",

+        "name": "set vf-module pathname for context logging",

+        "xml": "<set>\n<parameter name='pathname' \n\tvalue=\"`'/var/tmp/ss-gen-name-' + \n\t$ss.capability-type + '-' + $ss.capability-action + '-' + \n\t$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.vf-module-id + '.log'`\" />\n",

+        "comments": "",

+        "x": 591.6666107177734,

+        "y": 171.6666660308838,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "e82d9fdf.5f262",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 745,

+        "y": 260,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "478998aa.bb7da8",

+                "a545ef92.a752"

+            ]

+        ]

+    },

+    {

+        "id": "478998aa.bb7da8",

+        "type": "set",

+        "name": "set tmp.naming-data-payload",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />\n",

+        "comments": "",

+        "x": 996.25,

+        "y": 261.249998729676,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "750564ef.62aaac",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"BEFORE namegeneration.node.UnAssignNameNode\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1208.3333587646484,

+        "y": 846.666618347168,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a905c3e.9b98b4",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"AFTER namegeneration.node.UnAssignNameNode\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1203.3335037231445,

+        "y": 1046.9999990463257,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fcce16b2.b965d8",

+        "type": "switchNode",

+        "name": "switch resource-name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].name == $jsonContextPrefix.elements[$n].resource-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1484.4765548706055,

+        "y": 1254.9998054504395,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "85bc6cce.ab7f4"

+            ]

+        ]

+    },

+    {

+        "id": "85bc6cce.ab7f4",

+        "type": "not-found",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1684.4765548706055,

+        "y": 1254.9998054504395,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "b81fd5a3.92d438"

+            ]

+        ]

+    },

+    {

+        "id": "b81fd5a3.92d438",

+        "type": "set",

+        "name": "set set payload data",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].value`' value=\"`$jsonContextPrefix.elements[$n].resource-value`\" />\n",

+        "comments": "",

+        "x": 1868.9765548706055,

+        "y": 1253.9998054504395,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "1378d748.6067b9",

+        "type": "for",

+        "name": "for response elements",

+        "xml": "<for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1246.4766387939453,

+        "y": 1255.9996490478516,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "fcce16b2.b965d8"

+            ]

+        ]

+    },

+    {

+        "id": "42f87bad.5e21a4",

+        "type": "set",

+        "name": "set status as DELETED",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.status`' value='DELETED' />",

+        "comments": "",

+        "x": 1253.143295288086,

+        "y": 1184.9996395111084,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "85df345.38740c8",

+        "type": "for",

+        "name": "for vf-module-parameters",

+        "xml": "<for index='l' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1613.3333740234375,

+        "y": 2413.333212852478,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "64f8f6b9.a1feb8"

+            ]

+        ]

+    },

+    {

+        "id": "853ff87a.09eed8",

+        "type": "set",

+        "name": "set param value and status",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].value`' value=\"`$jsonContextPrefix.elements[$n].resource-value`\" />\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].resource-resolution-data.status`' value='SUCCESS' />",

+        "comments": "",

+        "x": 2252.404800415039,

+        "y": 2412.3328819274902,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "5470ee78.282f2",

+        "type": "for",

+        "name": "for response elements",

+        "xml": "<for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1372.3333740234375,

+        "y": 2413.333212852478,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "85df345.38740c8"

+            ]

+        ]

+    },

+    {

+        "id": "64f8f6b9.a1feb8",

+        "type": "switchNode",

+        "name": "switch resource-name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].name == $jsonContextPrefix.elements[$n].resource-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1860.5953216552734,

+        "y": 2413.748378753662,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "6af1485d.34fc68"

+            ]

+        ]

+    },

+    {

+        "id": "6af1485d.34fc68",

+        "type": "not-found",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2050.595230102539,

+        "y": 2412.7484092712402,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "853ff87a.09eed8"

+            ]

+        ]

+    },

+    {

+        "id": "dd551169.136f",

+        "type": "for",

+        "name": "for vf-module-parameters",

+        "xml": "<for index='l' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2874.8333129882812,

+        "y": 2656.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "b700081f.a5af38"

+            ]

+        ]

+    },

+    {

+        "id": "9a9af9bb.35f3a8",

+        "type": "switchNode",

+        "name": "switch capability-name",

+        "xml": "<switch test='`$s2[0] == $jsonContextPrefix.elements[$n].resource-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3045.8333129882812,

+        "y": 2814.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "fa7a3c8b.7c266"

+            ]

+        ]

+    },

+    {

+        "id": "fa7a3c8b.7c266",

+        "type": "not-found",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3249.8333129882812,

+        "y": 2812.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "1ecffe89.85c4b1"

+            ]

+        ]

+    },

+    {

+        "id": "1ecffe89.85c4b1",

+        "type": "set",

+        "name": "set set payload data",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].value`' value=\"`$jsonContextPrefix.elements[$n].resource-value`\" />\n",

+        "comments": "",

+        "x": 3444.3333129882812,

+        "y": 2745.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "488888f7.9630a8",

+        "type": "for",

+        "name": "for response elements",

+        "xml": "<for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2606.8333129882812,

+        "y": 2657.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "dd551169.136f"

+            ]

+        ]

+    },

+    {

+        "id": "b700081f.a5af38",

+        "type": "execute",

+        "name": "slistringUtils - check value for $",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].value`\" />\n    <parameter name=\"target\" value=\"$\"/>\n  \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3158.8333129882812,

+        "y": 2660.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "9924b99e.500128"

+            ]

+        ]

+    },

+    {

+        "id": "9924b99e.500128",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3386.8333129882812,

+        "y": 2657.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "29b06b2c.c02b94"

+            ]

+        ]

+    },

+    {

+        "id": "1143f2e4.dc38ad",

+        "type": "execute",

+        "name": "split resource-resolution-data",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='resource-resolution-split' />\n   <parameter name='original_string' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].value`' />\n   <parameter name='regex' value='\\$\\{' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3053.8333129882812,

+        "y": 2710.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ef40c4de.fc57e8",

+        "type": "execute",

+        "name": "split resource-resolution-split-1",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='s2' />\n   <parameter name='original_string' value='`$resource-resolution-split[1]`' />\n   <parameter name='regex' value='\\}' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3066.8333129882812,

+        "y": 2769.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "29b06b2c.c02b94",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2813.8333129882812,

+        "y": 2736.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "9a9af9bb.35f3a8",

+                "1143f2e4.dc38ad",

+                "ef40c4de.fc57e8"

+            ]

+        ]

+    },

+    {

+        "id": "f015a67f.2123d8",

+        "type": "for",

+        "name": "for vnf parameters data",

+        "xml": "<for index='l' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2601.8333129882812,

+        "y": 2879.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "db9bf599.422b48"

+            ]

+        ]

+    },

+    {

+        "id": "db9bf599.422b48",

+        "type": "execute",

+        "name": "slistringUtils - check value for $",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].value`\" />\n    <parameter name=\"target\" value=\"$\"/>\n  \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2907.8333129882812,

+        "y": 2877.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "b6fbb194.9aa76"

+            ]

+        ]

+    },

+    {

+        "id": "b6fbb194.9aa76",

+        "type": "failure",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3145.8333129882812,

+        "y": 2877.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "f09b7610.befed8"

+            ]

+        ]

+    },

+    {

+        "id": "f09b7610.befed8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 3307.8333129882812,

+        "y": 2871.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            [

+                "d0008718.c841e8",

+                "c01ede3a.c48f6"

+            ]

+        ]

+    },

+    {

+        "id": "d0008718.c841e8",

+        "type": "set",

+        "name": "set capability name",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].resource-resolution-data.capability-name`' value='INPUT' />\n",

+        "comments": "",

+        "x": 3531.8333129882812,

+        "y": 2837.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "c01ede3a.c48f6",

+        "type": "set",

+        "name": "set status SUCCESS",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].resource-resolution-data.status`' value='SUCCESS' />\n\t",

+        "comments": "",

+        "x": 3519.8333129882812,

+        "y": 2937.918480873108,

+        "z": "4b1f76da.0625d8",

+        "wires": []

+    },

+    {

+        "id": "571c0bc8.cea834",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"BEFORE namegeneration.node.AssignNameNode\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1333.333251953125,

+        "y": 2021.6666259765625,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9b679da3.35f9b",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"AFTER namegeneration.node.AssignNameNode\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1334.9996719360352,

+        "y": 2181.666796684265,

+        "z": "4b1f76da.0625d8",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-mdsal-put.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-mdsal-put.json
new file mode 100644
index 0000000..a71fa06
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-mdsal-put.json
@@ -0,0 +1,184 @@
+[

+    {

+        "id": "3bf8c671.7f376a",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 212.8720245361328,

+        "y": 81.44345092773438,

+        "z": "52d92258.1c8e7c",

+        "wires": [

+            [

+                "dfbef821.00c2d8"

+            ]

+        ]

+    },

+    {

+        "id": "4b80a72e.2a60b8",

+        "type": "method",

+        "name": "method self-serve-vf-module-mdsal-put",

+        "xml": "<method rpc='self-serve-vf-module-mdsal-put' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 357.8839416503906,

+        "y": 146.14980506896973,

+        "z": "52d92258.1c8e7c",

+        "wires": [

+            [

+                "3703bd36.764b22"

+            ]

+        ]

+    },

+    {

+        "id": "dfbef821.00c2d8",

+        "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": 475.11022186279297,

+        "y": 81.63394355773926,

+        "z": "52d92258.1c8e7c",

+        "wires": [

+            [

+                "4b80a72e.2a60b8"

+            ]

+        ]

+    },

+    {

+        "id": "3703bd36.764b22",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 636.6220474243164,

+        "y": 291.443452835083,

+        "z": "52d92258.1c8e7c",

+        "wires": [

+            [

+                "fa0889c9.30fd08",

+                "7f28b6cc.262928",

+                "bba1c88d.c97208",

+                "8ce26831.f031e8",

+                "e45f0d28.1cec2"

+            ]

+        ]

+    },

+    {

+        "id": "fa0889c9.30fd08",

+        "type": "execute",

+        "name": "execute RestApiCallNode - PUT vf-module",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.ss.vfmodule.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-vfmodule-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ss-vfmodule\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1027.1694793701172,

+        "y": 409.067419052124,

+        "z": "52d92258.1c8e7c",

+        "wires": [

+            [

+                "9648b461.f14b68",

+                "7d59a7d6.4df008"

+            ]

+        ]

+    },

+    {

+        "id": "9648b461.f14b68",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1310.5131568908691,

+        "y": 438.06558895111084,

+        "z": "52d92258.1c8e7c",

+        "wires": [

+            [

+                "318b6c3c.6a17d4"

+            ]

+        ]

+    },

+    {

+        "id": "7d59a7d6.4df008",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1299.6917686462402,

+        "y": 384.5655927658081,

+        "z": "52d92258.1c8e7c",

+        "wires": [

+            [

+                "318b6c3c.6a17d4"

+            ]

+        ]

+    },

+    {

+        "id": "7f28b6cc.262928",

+        "type": "set",

+        "name": "set vf data for restapi-call-node",

+        "xml": "<set>\n<parameter name='vf.vf-module-id'\n    value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`' />\n<parameter name='vf.vf-module-data.sdnc-request-header.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.`' />\n<parameter name='vf.vf-module-data.request-information.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.request-information.`' />\n<parameter name='vf.vf-module-data.service-information.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.`' />\n<parameter name='vf.vf-module-data.vnf-information.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.`' />\n<parameter name='vf.vf-module-data.vf-module-information.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.`' />\n<parameter name='vf.vf-module-data.vf-module-topology.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.`' />\n<parameter name='vf.vf-module-data.vf-module-level-oper-status.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.`' />\n<parameter name='vf.vf-module-data.vf-module-request-input.vf-module-input-parameters.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.vf-module-input-parameters.`' />\n<parameter name='vf.vf-module-data.vf-module-request-input.request-version'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.request-version`' />\n<parameter name='vf.vf-module-data.vf-module-request-input.vf-module-name'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.vf-module-name`' />\n<parameter name='vf.vf-module-data.vf-module-request-input.tenant'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.tenant`' />\n<parameter name='vf.vf-module-data.vf-module-request-input.aic-cloud-region'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.aic-cloud-region`' />\n<parameter name='vf.vf-module-data.vf-module-request-input.aic-clli'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.aic-clli`' />",

+        "comments": "",

+        "x": 993.6815032958984,

+        "y": 193.18542575836182,

+        "z": "52d92258.1c8e7c",

+        "wires": []

+    },

+    {

+        "id": "bba1c88d.c97208",

+        "type": "execute",

+        "name": "generate ss-vfmodule url replace service-instance-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.ss-vfmodule-assignments`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-vfmodule-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.service-instance-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1063.6814422607422,

+        "y": 239.93548774719238,

+        "z": "52d92258.1c8e7c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8ce26831.f031e8",

+        "type": "execute",

+        "name": "generate ss-vfmodule url - replace vnf-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ss-vfmodule-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-vfmodule-url\"/>\n    <parameter name=\"target\" value=\"{vnf-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.vnf-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1024.2171478271484,

+        "y": 289.24438762664795,

+        "z": "52d92258.1c8e7c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e45f0d28.1cec2",

+        "type": "execute",

+        "name": "generate ss-vfmodule url - replace vf-module-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ss-vfmodule-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-vfmodule-url\"/>\n    <parameter name=\"target\" value=\"{vf-module-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1046.1578216552734,

+        "y": 339.1608877182007,

+        "z": "52d92258.1c8e7c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "318b6c3c.6a17d4",

+        "type": "set",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Failed to persist self-serve vf-module assignments during assign in MD-SAL. ' + $error-message`\" />",

+        "comments": "",

+        "x": 1501.0029106140137,

+        "y": 384.39960289001465,

+        "z": "52d92258.1c8e7c",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-unassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-unassign.json
new file mode 100644
index 0000000..3b3cbb2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vf-module-unassign.json
@@ -0,0 +1,585 @@
+[

+    {

+        "id": "f4eaa017.b9ee4",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 178.57142639160156,

+        "y": 112.85714721679688,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "2d27338b.de495c"

+            ]

+        ]

+    },

+    {

+        "id": "afdc6297.d95d7",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 222.2976303100586,

+        "y": 225.63493728637695,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "63928540.2e035c",

+                "152fb44f.398a1c",

+                "7e8b2d63.3d0eb4",

+                "66438caf.b1a744",

+                "a9448525.0bfff8"

+            ]

+        ]

+    },

+    {

+        "id": "9785e3bb.501df",

+        "type": "method",

+        "name": "method self-serve-vf-module-unassign",

+        "xml": "<method rpc='self-serve-vf-module-unassign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 295.33333587646484,

+        "y": 167.56350231170654,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "afdc6297.d95d7"

+            ]

+        ]

+    },

+    {

+        "id": "2d27338b.de495c",

+        "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": 453.8096237182617,

+        "y": 113.04763984680176,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "9785e3bb.501df"

+            ]

+        ]

+    },

+    {

+        "id": "63bc9da4.98ff04",

+        "type": "switchNode",

+        "name": "switch resource-resolution-data.status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1050.4407969883505,

+        "y": 728.8692181450979,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "28267bea.6aece4",

+                "9ea4d273.b523b"

+            ]

+        ]

+    },

+    {

+        "id": "28267bea.6aece4",

+        "type": "other",

+        "name": "SUCCESS",

+        "xml": "<outcome value='SUCCESS'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1328.1433383396688,

+        "y": 729.238181386675,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "403ed1e6.64a47"

+            ]

+        ]

+    },

+    {

+        "id": "63928540.2e035c",

+        "type": "for",

+        "name": "foreach capability-order[]",

+        "xml": "<for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 472.32149505615234,

+        "y": 352.892822265625,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "9a52858d.de8a98",

+                "5dd7ca05.5c7154",

+                "49b42a30.241904",

+                "389a0c55.fb0c94"

+            ]

+        ]

+    },

+    {

+        "id": "403ed1e6.64a47",

+        "type": "call",

+        "name": "call ss.capability-dg",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1533.2620707920614,

+        "y": 729.000032697405,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "6c757b17.2c3204",

+                "c9a54438.9d50a8"

+            ]

+        ]

+    },

+    {

+        "id": "9a52858d.de8a98",

+        "type": "set",

+        "name": "ss.capability-name",

+        "xml": "<set>\n<parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />\n\n<!--\nss.capability.execution-order\n-->",

+        "comments": "",

+        "x": 740.6785507202148,

+        "y": 352.8452739715576,

+        "z": "f6d2fe28.17718",

+        "wires": []

+    },

+    {

+        "id": "5dd7ca05.5c7154",

+        "type": "set",

+        "name": "set ss.capability.action = unassign",

+        "xml": "<set>\n<parameter name='ss.capability-action' value='unassign' />\n",

+        "comments": "",

+        "x": 789.392692565918,

+        "y": 399.7618579864502,

+        "z": "f6d2fe28.17718",

+        "wires": []

+    },

+    {

+        "id": "6c757b17.2c3204",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1718.1545802525106,

+        "y": 729.0000937325613,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "1e50a1c0.ca957e"

+            ]

+        ]

+    },

+    {

+        "id": "389a0c55.fb0c94",

+        "type": "set",

+        "name": "set capability-dg",

+        "xml": "<set>\n<parameter name='ss.capability-dg' value=\"`'self-serve-' + $ss.capability.execution-order[$cidx]`\" />\n",

+        "comments": "",

+        "x": 738.1548004150391,

+        "y": 446.9881134033203,

+        "z": "f6d2fe28.17718",

+        "wires": []

+    },

+    {

+        "id": "66438caf.b1a744",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/ss-vf-unassign.log' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 459.25020599365234,

+        "y": 1311.773832321167,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "152fb44f.398a1c",

+        "type": "set",

+        "name": "set ss.capability.execution-order[]",

+        "xml": "<set>\n<parameter name='ss.capability.execution-order[0]' value='mS-mac-address-assign' />\n<parameter name='ss.capability.execution-order[1]' value='mac-address-assign' />\n<parameter name='ss.capability.execution-order[2]' value='netbox-ip-assign' />\n<parameter name='ss.capability.execution-order[3]' value='eipam-ip-assignment' />\n<parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />\n<parameter name='ss.capability.execution-order[5]' value='vlan-tag-assign' />\n<parameter name='ss.capability.execution-order[6]' value='alts-license-assign' />\n<parameter name='ss.capability.execution-order[7]' value='alts-entitlement-assign' />\n<parameter name='ss.capability.execution-order[8]' value='generate-name' />\n<parameter name='ss.capability.execution-order_length' value='9' />",

+        "comments": "",

+        "x": 497.8214645385742,

+        "y": 225.85715103149414,

+        "z": "f6d2fe28.17718",

+        "wires": []

+    },

+    {

+        "id": "57b30e91.cce25",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Encountered error from capability: '+ $ss.capability-dg + ', with error: '+ $error-message`\" />\n",

+        "comments": "",

+        "x": 2100.6546946934286,

+        "y": 1084.190519605364,

+        "z": "f6d2fe28.17718",

+        "wires": []

+    },

+    {

+        "id": "1e50a1c0.ca957e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1882.273827689034,

+        "y": 729.5234873635427,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "57b30e91.cce25",

+                "42fe0aff.60ba94",

+                "17081e14.468d22",

+                "8dd9156e.18bf28",

+                "e4eb9ed4.4d1cf",

+                "9aa77744.b645d8"

+            ]

+        ]

+    },

+    {

+        "id": "42fe0aff.60ba94",

+        "type": "execute",

+        "name": "execute RestApiCallNode - PUT vf-module",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.ss.vfmodule.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-vfmodule-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ss-vfmodule\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2197.8212672642294,

+        "y": 985.8974469048635,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "3f7bc9ac.1f6ae6",

+                "b9b97982.05b048"

+            ]

+        ]

+    },

+    {

+        "id": "3f7bc9ac.1f6ae6",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2472.4149333408895,

+        "y": 1039.895600591387,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "c10fe69a.3e62c8"

+            ]

+        ]

+    },

+    {

+        "id": "b9b97982.05b048",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2464.8435679844442,

+        "y": 986.3956206185476,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "c10fe69a.3e62c8"

+            ]

+        ]

+    },

+    {

+        "id": "c10fe69a.3e62c8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2666.9758922031942,

+        "y": 986.0398753029958,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "e1be1552.1aebd8"

+            ]

+        ]

+    },

+    {

+        "id": "e1be1552.1aebd8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Failed to persist self-serve vf-module assignments during unassign in MD-SAL\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2885.2616588047567,

+        "y": 986.1827385766164,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "17081e14.468d22",

+        "type": "set",

+        "name": "set vf data for restapi-call-node",

+        "xml": "<set>\n<parameter name='vf.vf-module-id'\n    value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`' />\n<parameter name='vf.vf-module-data.sdnc-request-header.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.`' />\n<parameter name='vf.vf-module-data.request-information.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.request-information.`' />\n<parameter name='vf.vf-module-data.service-information.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.`' />\n<parameter name='vf.vf-module-data.vnf-information.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.`' />\n<parameter name='vf.vf-module-data.vf-module-information.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.`' />\n<parameter name='vf.vf-module-data.vf-module-topology.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.`' />\n<parameter name='vf.vf-module-data.vf-module-level-oper-status.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.`' />\n<parameter name='vf.vf-module-data.vf-module-request-input.vf-module-input-parameters.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.vf-module-input-parameters.`' />\n<parameter name='vf.vf-module-data.vf-module-request-input.request-version'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.request-version`' />\n<parameter name='vf.vf-module-data.vf-module-request-input.vf-module-name'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.vf-module-name`' />\n<parameter name='vf.vf-module-data.vf-module-request-input.tenant'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.tenant`' />\n<parameter name='vf.vf-module-data.vf-module-request-input.aic-cloud-region'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.aic-cloud-region`' />\n<parameter name='vf.vf-module-data.vf-module-request-input.aic-clli'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.aic-clli`' />",

+        "comments": "",

+        "x": 2159.3332911900106,

+        "y": 730.0154641015188,

+        "z": "f6d2fe28.17718",

+        "wires": []

+    },

+    {

+        "id": "8dd9156e.18bf28",

+        "type": "execute",

+        "name": "generate ss-vfmodule url replace service-instance-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.ss-vfmodule-assignments`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-vfmodule-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.service-instance-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2225.583237784249,

+        "y": 778.0155089242116,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e4eb9ed4.4d1cf",

+        "type": "execute",

+        "name": "generate ss-vfmodule url - replace vnf-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ss-vfmodule-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-vfmodule-url\"/>\n    <parameter name=\"target\" value=\"{vnf-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.vnf-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2189.8689357212606,

+        "y": 826.0744259698049,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9aa77744.b645d8",

+        "type": "execute",

+        "name": "generate ss-vfmodule url - replace vf-module-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ss-vfmodule-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-vfmodule-url\"/>\n    <parameter name=\"target\" value=\"{vf-module-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2211.8096095493856,

+        "y": 875.9909260613576,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7e8b2d63.3d0eb4",

+        "type": "set",

+        "name": "set ss.capability-type = vf-module",

+        "xml": "<set>\n<parameter name='ss.capability-type' value='vf-module' />\n",

+        "comments": "",

+        "x": 498.4285583496094,

+        "y": 268.85715770721436,

+        "z": "f6d2fe28.17718",

+        "wires": []

+    },

+    {

+        "id": "9ea4d273.b523b",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1315.7261159739319,

+        "y": 781.7977116448537,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "fd5a91b8.f7a29"

+            ]

+        ]

+    },

+    {

+        "id": "fd5a91b8.f7a29",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"`'SS: resource-resolution-data.status: ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`\"/>\n<parameter name=\"field2\" value=\"`'SS: ss.capability-name: ' + $ss.capability-name`\"/>\n<parameter name=\"field3\" value=\"`'SS: tmp.param.capability-name: ' + $tmp.param.capability-name`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1464.7619741282288,

+        "y": 782.1310923440114,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "49b42a30.241904",

+        "type": "for",

+        "name": "foreach vf-module-parameters.param[]",

+        "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 807.1427993774414,

+        "y": 498.45239067077637,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "ff16d805.d2f948",

+                "d94d2835.4b35b8"

+            ]

+        ]

+    },

+    {

+        "id": "ff16d805.d2f948",

+        "type": "switchNode",

+        "name": "switch capability-name param vs. execution",

+        "xml": "<switch test='`$ss.capability-name == $tmp.param.capability-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1179.5356216430664,

+        "y": 544.0951833724976,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "f1afd266.1d837"

+            ]

+        ]

+    },

+    {

+        "id": "f1afd266.1d837",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1443.0356216430664,

+        "y": 544.3451833724976,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "14a0144f.03fb3c"

+            ]

+        ]

+    },

+    {

+        "id": "d94d2835.4b35b8",

+        "type": "set",

+        "name": "tmp.param.capability-name",

+        "xml": "<set>\n<parameter name='tmp.param.capability-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />\n",

+        "comments": "",

+        "x": 1128.8926467895508,

+        "y": 498.7023935317993,

+        "z": "f6d2fe28.17718",

+        "wires": []

+    },

+    {

+        "id": "14a0144f.03fb3c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 748.0951625279017,

+        "y": 728.0952647072927,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "f49db851.8e73b8",

+                "63bc9da4.98ff04"

+            ]

+        ]

+    },

+    {

+        "id": "f49db851.8e73b8",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 943.428539276123,

+        "y": 1162.047595024109,

+        "z": "f6d2fe28.17718",

+        "wires": []

+    },

+    {

+        "id": "c9a54438.9d50a8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1738.5714530944824,

+        "y": 934.1071586608887,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "ec71a1e5.73bd2"

+            ]

+        ]

+    },

+    {

+        "id": "ec71a1e5.73bd2",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"`'DONE: ' + $ss.capability-dg`\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1882.3214530944824,

+        "y": 932.8571586608887,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fd2f49e7.d02308",

+        "type": "execute",

+        "name": "execute PropertiesNode",

+        "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": 887.7143456595286,

+        "y": 309.99998337881925,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a9448525.0bfff8",

+        "type": "switchNode",

+        "name": "switch prop.controller.user",

+        "xml": "<switch test='`$prop.controller.user`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 476.42858123779297,

+        "y": 310.42860412597656,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "b256cdf4.5509e"

+            ]

+        ]

+    },

+    {

+        "id": "b256cdf4.5509e",

+        "type": "failure",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 676.2856766836985,

+        "y": 310.00001866476896,

+        "z": "f6d2fe28.17718",

+        "wires": [

+            [

+                "fd2f49e7.d02308"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vfmodule-changeassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vfmodule-changeassign.json
new file mode 100644
index 0000000..368cd69
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vfmodule-changeassign.json
@@ -0,0 +1,381 @@
+[

+    {

+        "id": "db5642bb.db1e5",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 121.42855834960938,

+        "y": 57.14285659790039,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "57e37eb4.944e6"

+            ]

+        ]

+    },

+    {

+        "id": "57e37eb4.944e6",

+        "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": 397.4285583496094,

+        "y": 58.14285659790039,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "f841c0f6.c5f5b"

+            ]

+        ]

+    },

+    {

+        "id": "f841c0f6.c5f5b",

+        "type": "method",

+        "name": "self-serve-vfmodule-changeassign ",

+        "xml": "<method rpc='self-serve-vfmodule-changeassign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 314.7143249511719,

+        "y": 102.00000286102295,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "d9f3cb74.bcc858"

+            ]

+        ]

+    },

+    {

+        "id": "d9f3cb74.bcc858",

+        "type": "block",

+        "name": "block atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 258.5,

+        "y": 161.5714225769043,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "cfddaee8.3580a",

+                "dfdf0e15.940d8"

+            ]

+        ]

+    },

+    {

+        "id": "1e86b28e.b1457d",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$j].resource-resolution-data.status`' value='PENDING'/>\n   <parameter name='ss.input.param.index' value='`$i`' />\n   <parameter name='ss.service-data.param.index' value='`$j`' />\n   <parameter name='ss.input.param.found.in.service.param' value='true' />\n   <parameter name='ss.capability-type' value='vf-module' />\n   <parameter name='ss.capability-action' value='changeassign' />",

+        "comments": "",

+        "x": 1777.0000457763672,

+        "y": 570.0000133514404,

+        "z": "2d052f87.5609f",

+        "wires": []

+    },

+    {

+        "id": "cfddaee8.3580a",

+        "type": "switchNode",

+        "name": "switch vf-module-input-parameters",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 533.8571472167969,

+        "y": 208.8571367263794,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "6098f169.8c4d9"

+            ]

+        ]

+    },

+    {

+        "id": "6098f169.8c4d9",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 764.0000305175781,

+        "y": 208.71428394317627,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "39cfb934.d0b286"

+            ]

+        ]

+    },

+    {

+        "id": "39cfb934.d0b286",

+        "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=\"no param name/value provided in vf-module-request-input\" />\n",

+        "comments": "",

+        "x": 936.8571472167969,

+        "y": 208.8571367263794,

+        "z": "2d052f87.5609f",

+        "wires": []

+    },

+    {

+        "id": "dfdf0e15.940d8",

+        "type": "for",

+        "name": "for vf-module-input-parameters.param index i",

+        "xml": "<for index='i' start='0' end='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 566.8571472167969,

+        "y": 278.8571367263794,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "60302596.50a3ac"

+            ]

+        ]

+    },

+    {

+        "id": "60302596.50a3ac",

+        "type": "switchNode",

+        "name": "switch service param length null",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length == ''`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 922.8571472167969,

+        "y": 278.8571367263794,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "fd980afc.22cc08"

+            ]

+        ]

+    },

+    {

+        "id": "fd980afc.22cc08",

+        "type": "other",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1156.8571472167969,

+        "y": 278.8571367263794,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "2de6b8a9.5ab508"

+            ]

+        ]

+    },

+    {

+        "id": "2396d4ed.eaa96c",

+        "type": "for",

+        "name": "for service-data.vnf-parameters-data.param index j",

+        "xml": "<for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 879.4286499023438,

+        "y": 569.0000162124634,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "90ff1c3.259f4e"

+            ]

+        ]

+    },

+    {

+        "id": "90ff1c3.259f4e",

+        "type": "switchNode",

+        "name": "switch match for vnf-name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$j].name == $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1229.0000457763672,

+        "y": 570.0000133514404,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "164a17a8.3d4a38"

+            ]

+        ]

+    },

+    {

+        "id": "164a17a8.3d4a38",

+        "type": "not-found",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1424.0000457763672,

+        "y": 569.0000133514404,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "459bcced.4174b4"

+            ]

+        ]

+    },

+    {

+        "id": "f4c49db0.aa1a",

+        "type": "not-found",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1131.285758972168,

+        "y": 859.4285659790039,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "67f318f2.47e6a8"

+            ]

+        ]

+    },

+    {

+        "id": "67f318f2.47e6a8",

+        "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=\"No vf-module-request-input.vf-module-input-parameters.param[].name found in service-data.\" />\n",

+        "comments": "",

+        "x": 1278.8572082519531,

+        "y": 857.0000019073486,

+        "z": "2d052f87.5609f",

+        "wires": []

+    },

+    {

+        "id": "459bcced.4174b4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1580.0000457763672,

+        "y": 570.0000133514404,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "1e86b28e.b1457d",

+                "c4c15254.21d5f",

+                "894750cd.34691"

+            ]

+        ]

+    },

+    {

+        "id": "c4c15254.21d5f",

+        "type": "call",

+        "name": "call self-serve-generate-name-changeassign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-generate-name-changeassign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1917.4285278320312,

+        "y": 641.5714178085327,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "6693964c.555518",

+                "6b9a9290.f4c99c"

+            ]

+        ]

+    },

+    {

+        "id": "6693964c.555518",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2244.857208251953,

+        "y": 609.8572025299072,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "3db94b2d.c6d2b4"

+            ]

+        ]

+    },

+    {

+        "id": "6b9a9290.f4c99c",

+        "type": "failure",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2252.5714721679688,

+        "y": 676.4286041259766,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "3db94b2d.c6d2b4"

+            ]

+        ]

+    },

+    {

+        "id": "3db94b2d.c6d2b4",

+        "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 from self-service-generate-name-changeassign\" />\n",

+        "comments": "",

+        "x": 2440.5714721679688,

+        "y": 638.4286041259766,

+        "z": "2d052f87.5609f",

+        "wires": []

+    },

+    {

+        "id": "2de6b8a9.5ab508",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 519.7143096923828,

+        "y": 530.857120513916,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "b4ae1ea.8e047e",

+                "2396d4ed.eaa96c",

+                "85402c0f.e3301"

+            ]

+        ]

+    },

+    {

+        "id": "b4ae1ea.8e047e",

+        "type": "set",

+        "name": "set ss.input.param.found.in.service.param to false",

+        "xml": "<set>\n   <parameter name='ss.input.param.found.in.service.param' value='false' />",

+        "comments": "",

+        "x": 882.1428833007812,

+        "y": 492.28572845458984,

+        "z": "2d052f87.5609f",

+        "wires": []

+    },

+    {

+        "id": "894750cd.34691",

+        "type": "returnSuccess",

+        "name": "return success",

+        "xml": "<return status='success'>\n",

+        "comments": "",

+        "x": 1807.0000457763672,

+        "y": 710.0000133514404,

+        "z": "2d052f87.5609f",

+        "wires": []

+    },

+    {

+        "id": "85402c0f.e3301",

+        "type": "switchNode",

+        "name": "switch ss.input.param.found.in.service.param",

+        "xml": "<switch test='`$ss.input.param.found.in.service.param`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 862.7143249511719,

+        "y": 859.4285907745361,

+        "z": "2d052f87.5609f",

+        "wires": [

+            [

+                "f4c49db0.aa1a"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vfmodule-ra-assignment.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vfmodule-ra-assignment.json
new file mode 100644
index 0000000..efe8ee6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vfmodule-ra-assignment.json
@@ -0,0 +1,1185 @@
+[
+    {
+        "id": "a497f564.a4f098",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 177,
+        "y": 84,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "86c9c962.7342a8"
+            ]
+        ]
+    },
+    {
+        "id": "86c9c962.7342a8",
+        "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": 453,
+        "y": 85,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "d7517e20.9dcd5"
+            ]
+        ]
+    },
+    {
+        "id": "d7517e20.9dcd5",
+        "type": "method",
+        "name": "self-serve-vfmodule-ra-assignment",
+        "xml": "<method rpc='self-serve-vfmodule-ra-assignment' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 804,
+        "y": 85,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "ed8eb912.b3b758"
+            ]
+        ]
+    },
+    {
+        "id": "ed8eb912.b3b758",
+        "type": "block",
+        "name": "block atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 189.5,
+        "y": 167,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "aa1b1c80.cc44a",
+                "ad94d45c.b42738",
+                "be3cc63c.1364a8",
+                "d22ed1cc.a3d2",
+                "3b2d4411.81821c",
+                "e9f32b69.e2f1b8",
+                "d975d3e7.41559",
+                "2129120f.4c214e",
+                "c3a30796.aceda8",
+                "9175398d.c04fa8",
+                "11b406c0.22da09",
+                "bbab380e.910a58",
+                "8e0f6b.25999098",
+                "873ccf3b.1d408",
+                "5989d23c.c4816c",
+                "f15b2532.ed6cd8"
+            ]
+        ]
+    },
+    {
+        "id": "ad94d45c.b42738",
+        "type": "set",
+        "name": "set",
+        "xml": "<set>\n   <parameter name=\"cds\" value=\"execution-service_process.\"/>\n   <parameter name=\"`$cds + 'commonHeader.requestId'`\" value=\"`$tmp.return.generate.vnf-se-serv-uuid`\"/>\n   <parameter name=\"resource-type\" value=\"`$vf-module-topology-operation-input.vf-module-information.vf-module-type`\" />  \n   <parameter name=\"`$cds + 'commonHeader.subRequestId'`\" value=\"`$vf-module-topology-operation-input.vf-module-information.vf-module-id`\" />   \n   <parameter name=\"`$cds + 'actionIdentifiers.actionName'`\" value=\"resource-assignment\"/> \n   <parameter name=\"responsePrefix\" value=\"raAssign\" />\n   <parameter name=\"`$cds + 'isNonAppend'`\" value=\"true\"/>\n   <parameter name=\"`$cds + 'commonHeader.originatorId'`\" value=\"SDNC_DG\"/>\n   <parameter name=\"`$cds + 'actionIdentifiers.mode'`\" value=\"sync\"/>\n",
+        "comments": "",
+        "x": 370,
+        "y": 220,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "64e2173c.958b58",
+        "type": "outcome",
+        "name": "true",
+        "xml": "<outcome value='true'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 650.2142486572266,
+        "y": 565.4642963409424,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "545277b4.e0bb38"
+            ]
+        ]
+    },
+    {
+        "id": "d22ed1cc.a3d2",
+        "type": "for",
+        "name": "for vf-module-topology-operation-input",
+        "xml": "<for silentFailure='true' index='i' start='0' end='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 473.71431732177734,
+        "y": 430.7143135070801,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "4bf3e8f8.745bd8"
+            ]
+        ]
+    },
+    {
+        "id": "70a829fa.30fea8",
+        "type": "set",
+        "name": "set tmp.sdnc-model-name",
+        "xml": "<set>\n<parameter name='tmp.sdnc-model-name' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`' />\n",
+        "comments": "",
+        "x": 1220.428565979004,
+        "y": 363.1428813934326,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "3153b11f.bf66de",
+        "type": "outcome",
+        "name": "sdnc_model_name",
+        "xml": "<outcome value='sdnc_model_name'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 966.4285659790039,
+        "y": 363.1428813934326,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "70a829fa.30fea8"
+            ]
+        ]
+    },
+    {
+        "id": "4bf3e8f8.745bd8",
+        "type": "switchNode",
+        "name": "switch",
+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 728.4285659790039,
+        "y": 430.1428813934326,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "3153b11f.bf66de",
+                "2f8525ae.fd272a",
+                "49db862e.217b58",
+                "ba2667e.2988e98"
+            ]
+        ]
+    },
+    {
+        "id": "2f8525ae.fd272a",
+        "type": "outcome",
+        "name": "sdnc_model_version",
+        "xml": "<outcome value='sdnc_model_version'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 969.4285659790039,
+        "y": 409.1428813934326,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "1585d1d8.a9e64e"
+            ]
+        ]
+    },
+    {
+        "id": "49db862e.217b58",
+        "type": "outcome",
+        "name": "vf_module_label",
+        "xml": "<outcome value='vf_module_label'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 954.4285659790039,
+        "y": 458.1428813934326,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "4fdf7f0e.99111"
+            ]
+        ]
+    },
+    {
+        "id": "1585d1d8.a9e64e",
+        "type": "set",
+        "name": "set tmp.sdnc-model-version",
+        "xml": "<set>\n<parameter name='tmp.sdnc-model-version' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`' />\n\n",
+        "comments": "",
+        "x": 1224.428565979004,
+        "y": 409.1428813934326,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "4fdf7f0e.99111",
+        "type": "set",
+        "name": "set tmp.vf-module-label",
+        "xml": "<set>\n<parameter name='tmp.vf-module-label' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`' />\n\n",
+        "comments": "",
+        "x": 1206.428565979004,
+        "y": 458.1428813934326,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "99a874b2.f5f858",
+        "type": "set",
+        "name": "set name-value other JsonString",
+        "xml": "<set>\n<parameter name=\"tmp.config-name-value-other-payload\" value=\"`$tmp.config-name-value-other-payload + '&quot;' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name + '&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value + '&quot;,'`\"/>\n\n",
+        "comments": "",
+        "x": 1224.428565979004,
+        "y": 509.1428813934326,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "ba2667e.2988e98",
+        "type": "outcome",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 926.4285659790039,
+        "y": 509.1428813934326,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "99a874b2.f5f858"
+            ]
+        ]
+    },
+    {
+        "id": "3b2d4411.81821c",
+        "type": "set",
+        "name": "set configAssignment JsonString",
+        "xml": "<set>\n<parameter name=\"tmp.config-name-value-payload4\" value=\"`$tmp.config-name-value-other-payload + '&quot;service-instance-id&quot;:&quot;' + $vf-module-topology-operation-input.service-information.service-instance-id + '&quot;,'`\"/>\n<parameter name=\"tmp.config-name-value-payload5\" value=\"`$tmp.config-name-value-payload4 + '&quot;vnf-id&quot;:&quot;' + $vf-module-topology-operation-input.vnf-information.vnf-id + '&quot;,'`\"/>\n<parameter name=\"tmp.config-name-value-payload6\" value=\"`$tmp.config-name-value-payload5 + '&quot;vf-module-model-customization-uuid&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid + '&quot;,'`\"/>\n<parameter name=\"tmp.config-name-value-payload7\" value=\"`$tmp.config-name-value-payload6 + '&quot;vnf-model-customization-uuid&quot;:&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-customization-uuid + '&quot;,'`\"/>\n<parameter name=\"tmp.config-name-value-payload8\" value=\"`$tmp.config-name-value-payload7 + '&quot;vf-module-id&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + '&quot;,'`\"/>\n<parameter name=\"tmp.config-name-value-payload9\" value=\"`$tmp.config-name-value-payload8 + '&quot;aic-cloud-region&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region + '&quot;'`\"/>",
+        "comments": "",
+        "x": 450,
+        "y": 660,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "e9f32b69.e2f1b8",
+        "type": "execute",
+        "name": "execute BlueprintProcessingClient",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value=\"`$prop.cds.url + '/api/v1/execution-service/process'`\" />\n    <parameter name='restapiUser' value='`$prop.cds.user`' />\n    <parameter name='restapiPassword' value='`$prop.cds.pwd`' />\n    <parameter name='dirPath' value=\"/opt/onap/sdnc/restconfapi/yang\" />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name=\"responsePrefix\" value=\"`$responsePrefix`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 459.33331298828125,
+        "y": 900,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "110f9145.d77fff",
+                "356e5968.733e76"
+            ]
+        ]
+    },
+    {
+        "id": "110f9145.d77fff",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 683.3333129882812,
+        "y": 866,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "48054045.e69da"
+            ]
+        ]
+    },
+    {
+        "id": "48054045.e69da",
+        "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 from ConfigAssignmentNode\" />\n",
+        "comments": "",
+        "x": 881.3333129882812,
+        "y": 866,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "2129120f.4c214e",
+        "type": "for",
+        "name": "for resource-accumulator-resolved-data loop",
+        "xml": "<for silentFailure='true' index='i' start='0' end='`$jsonContextPrefix.resource-accumulator-resolved-data_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 492.00001525878906,
+        "y": 1168.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "cb710ae6.5a4038"
+            ]
+        ]
+    },
+    {
+        "id": "9c282888.202138",
+        "type": "set",
+        "name": "set from resource-accumulator-resolved-data",
+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].name`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'/>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.capability-name`' value='RA Resolved'/>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.status`' value='SUCCESS'/>\n\n",
+        "comments": "",
+        "x": 1706.000015258789,
+        "y": 1219.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "c3a30796.aceda8",
+        "type": "for",
+        "name": "for capability-data",
+        "xml": "<for silentFailure='true' index='i' start='0' end='`$jsonContextPrefix.capability-data_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 411.00001525878906,
+        "y": 1431.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "74b1206d.0fed1"
+            ]
+        ]
+    },
+    {
+        "id": "74b1206d.0fed1",
+        "type": "for",
+        "name": "for key-mapping",
+        "xml": "<for silentFailure='true' index='j' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping_length`' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 634.0000152587891,
+        "y": 1431.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "acaea466.cd4ab8"
+            ]
+        ]
+    },
+    {
+        "id": "d975d3e7.41559",
+        "type": "execute",
+        "name": "execute jsonStringToCtx",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"jsonStringToCtx\">\n\t<parameter name=\"source\" value=\"`'raAssign.payload.resource-assignment-response.meshed-template.' + $tmp.vf-module-label`\" />\n\t<parameter name=\"outputPath\" value=\"jsonContextPrefix\" />\n\t<parameter name=\"isEscaped\" value=\"false\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 436.00001525878906,
+        "y": 1089.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "aa1b1c80.cc44a",
+        "type": "execute",
+        "name": "execute generateUUID",
+        "xml": " <execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" > \n <parameter name=\"ctx-destination\" value=\"tmp.return.generate.vnf-se-serv-uuid\" /> \n ",
+        "comments": "",
+        "outputs": 1,
+        "x": 419,
+        "y": 167,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "322955c2.67bfda"
+            ]
+        ]
+    },
+    {
+        "id": "322955c2.67bfda",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 624,
+        "y": 167,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "eedef31.1f0501"
+            ]
+        ]
+    },
+    {
+        "id": "eedef31.1f0501",
+        "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=\"generateUUID is failed\" />\n",
+        "comments": "",
+        "x": 788,
+        "y": 166,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "ee67402d.5d28e",
+        "type": "for",
+        "name": "for vnf-parameters-data.param",
+        "xml": "<for silentFailure='true' index='cnt' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1465.000015258789,
+        "y": 1168.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "7f19057e.59cacc"
+            ]
+        ]
+    },
+    {
+        "id": "cb710ae6.5a4038",
+        "type": "block",
+        "name": "block atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 771.0000152587891,
+        "y": 1169.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "e2f0cba4.654da8",
+                "bd5d211c.f590f",
+                "69e4eac9.bfa664"
+            ]
+        ]
+    },
+    {
+        "id": "be3cc63c.1364a8",
+        "type": "switchNode",
+        "name": "switch vf-parameters-data.param_length",
+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 491,
+        "y": 268,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "dcf68c0.5595078",
+                "212315d0.254f0a"
+            ]
+        ]
+    },
+    {
+        "id": "dcf68c0.5595078",
+        "type": "outcome",
+        "name": "null",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 754.1428833007812,
+        "y": 235.85715293884277,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "2fd156a6.7f84aa"
+            ]
+        ]
+    },
+    {
+        "id": "212315d0.254f0a",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 753.1428833007812,
+        "y": 299.8571529388428,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "704076e8.db1178"
+            ]
+        ]
+    },
+    {
+        "id": "2fd156a6.7f84aa",
+        "type": "set",
+        "name": "set pre service param len as 0",
+        "xml": "<set>\n   <parameter name='highnum' value='0' />\n   <parameter name='prehighnum' value='0'/>\n",
+        "comments": "",
+        "x": 967.1428833007812,
+        "y": 235.85715293884277,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "704076e8.db1178",
+        "type": "set",
+        "name": "set pre service param len",
+        "xml": "<set>\n   <parameter name='highnum' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' />\n   <parameter name='prehighnum' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' />",
+        "comments": "",
+        "x": 952.1428833007812,
+        "y": 299.8571529388428,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "7f19057e.59cacc",
+        "type": "switchNode",
+        "name": "switch input vnf-name",
+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cnt].name == $jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1723.000015258789,
+        "y": 1168.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "249e69e0.c58706"
+            ]
+        ]
+    },
+    {
+        "id": "249e69e0.c58706",
+        "type": "not-found",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1903.000015258789,
+        "y": 1168.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "ed76b6f6.2b9568"
+            ]
+        ]
+    },
+    {
+        "id": "ed76b6f6.2b9568",
+        "type": "set",
+        "name": "set for existing param name",
+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cnt].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>\n<parameter name='tmp.mso.param.found' value='true' />\n",
+        "comments": "",
+        "x": 2113.000015258789,
+        "y": 1169.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "69e4eac9.bfa664",
+        "type": "switchNode",
+        "name": "switch tmp.mso.param.not-found",
+        "xml": "<switch test='`$tmp.mso.param.found`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1013.0000152587891,
+        "y": 1221.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "9a1a87b5.132028"
+            ]
+        ]
+    },
+    {
+        "id": "9a1a87b5.132028",
+        "type": "not-found",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1247.000015258789,
+        "y": 1220.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "60cb391a.7088d8"
+            ]
+        ]
+    },
+    {
+        "id": "e2f0cba4.654da8",
+        "type": "set",
+        "name": "set for existing param name",
+        "xml": "<set>\n<parameter name='tmp.mso.param.found' value='false' />\n",
+        "comments": "",
+        "x": 997.0000152587891,
+        "y": 1110.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "bd5d211c.f590f",
+        "type": "switchNode",
+        "name": "switch check length > 0",
+        "xml": "<switch test='`$prehighnum &gt; 0`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 989.5000152587891,
+        "y": 1169.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "a9041b72.5fd4e8"
+            ]
+        ]
+    },
+    {
+        "id": "a9041b72.5fd4e8",
+        "type": "not-found",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1236.500015258789,
+        "y": 1169.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "ee67402d.5d28e"
+            ]
+        ]
+    },
+    {
+        "id": "a8fb4875.424878",
+        "type": "for",
+        "name": "for payload",
+        "xml": "<for index='k' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length`' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1683.000015258789,
+        "y": 1483.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "d1581b7a.307818"
+            ]
+        ]
+    },
+    {
+        "id": "c34d628a.5ba25",
+        "type": "set",
+        "name": "set resource-key",
+        "xml": "<set>\n\t<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.resource-key[$num].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-name`'/>\n\t<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.resource-key[$num].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-value`'/>\n\t\n",
+        "comments": "",
+        "x": 2082.000015258789,
+        "y": 1424.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "8aa1345a.8ddd28",
+        "type": "set",
+        "name": "set output-data ",
+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-name`'/>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-value`'/>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.capability-name`' value='`$jsonContextPrefix.capability-data[$i].capability-name`'/>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.status`' value='PENDING'/>\n<parameter name='num' value='0' />",
+        "comments": "",
+        "x": 1261.000015258789,
+        "y": 1385.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "acaea466.cd4ab8",
+        "type": "for",
+        "name": "for output-key-mapping",
+        "xml": "<for silentFailure='true' index='l' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping_length`' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 869.0000152587891,
+        "y": 1432.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "44eeef6b.763aa"
+            ]
+        ]
+    },
+    {
+        "id": "44eeef6b.763aa",
+        "type": "block",
+        "name": "block atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1064.000015258789,
+        "y": 1431.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "8aa1345a.8ddd28",
+                "859dcf36.75878",
+                "7a25862.9293b78",
+                "cf8679e9.4fafd8"
+            ]
+        ]
+    },
+    {
+        "id": "7a25862.9293b78",
+        "type": "set",
+        "name": "set length",
+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' value='`$highnum + 1`'/>\n\n",
+        "comments": "",
+        "x": 1260.000015258789,
+        "y": 1483.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "356e5968.733e76",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 688.3333129882812,
+        "y": 928,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "48054045.e69da"
+            ]
+        ]
+    },
+    {
+        "id": "859dcf36.75878",
+        "type": "switchNode",
+        "name": "switch payload_length",
+        "xml": "<switch test=\"`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length == ''`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1290.000015258789,
+        "y": 1432.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "4c86e71b.d68c88",
+                "24678540.a0541a"
+            ]
+        ]
+    },
+    {
+        "id": "4c86e71b.d68c88",
+        "type": "outcome",
+        "name": "true",
+        "xml": "<outcome value='true'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1505.000015258789,
+        "y": 1364.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "24678540.a0541a",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1514.000015258789,
+        "y": 1483.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "a8fb4875.424878"
+            ]
+        ]
+    },
+    {
+        "id": "9175398d.c04fa8",
+        "type": "switchNode",
+        "name": "switch: model info == NULL",
+        "xml": "<switch test=\"`$tmp.sdnc-model-name == '' or $tmp.sdnc-model-version == '' or $tmp.vf-module-label == ''`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 438.78570556640625,
+        "y": 565.6071863174438,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "64e2173c.958b58"
+            ]
+        ]
+    },
+    {
+        "id": "d294acc7.bd931",
+        "type": "get-resource",
+        "name": "get VF_MODEL.sdnc_model_name",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'\n  pfx='db1.vf-model'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1116.9285354614258,
+        "y": 566.464297413826,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "10c023aa.5d4fbc",
+                "dedcf4a6.d6ca18",
+                "2f6f6c84.413364"
+            ]
+        ]
+    },
+    {
+        "id": "10c023aa.5d4fbc",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1360.1427536010742,
+        "y": 566.8451566696167,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "2b521b7.20a39e4"
+            ]
+        ]
+    },
+    {
+        "id": "2b521b7.20a39e4",
+        "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 reading VF_MODEL table\" />\n",
+        "comments": "",
+        "x": 1541.142734527588,
+        "y": 566.9880638122559,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "64e226e0.1a2c48",
+        "type": "get-resource",
+        "name": "get VF_MODULE_MODEL.vf-module-label",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT vf_module_label from VF_MODULE_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid \n  \tAND vf_module_label is not null'\n  pfx='db1.vf-module-model'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1138.380874633789,
+        "y": 695.3095798492432,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "8ea00362.3b8f7",
+                "cf82827d.c0abe",
+                "78e0a6e.6498258"
+            ]
+        ]
+    },
+    {
+        "id": "8ea00362.3b8f7",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1417.1664581298828,
+        "y": 695.6904038190842,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "9c3a2915.d4bae8"
+            ]
+        ]
+    },
+    {
+        "id": "9c3a2915.d4bae8",
+        "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 reading VF_MODULE_MODEL table\" />\n",
+        "comments": "",
+        "x": 1592.166389465332,
+        "y": 695.8333042860031,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "cf82827d.c0abe",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1427.3808822631836,
+        "y": 775.095287322998,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "726ff5db.17542c"
+            ]
+        ]
+    },
+    {
+        "id": "545277b4.e0bb38",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 825.7380294799805,
+        "y": 565.8452922105789,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "d294acc7.bd931",
+                "64e226e0.1a2c48"
+            ]
+        ]
+    },
+    {
+        "id": "7bffb405.6623ac",
+        "type": "set",
+        "name": "set sdnc-model-name, sdnc-model-version",
+        "xml": "<set>\n<parameter name='tmp.sdnc-model-name' value='`$db1.vf-model.sdnc-model-name`' />\n<parameter name='tmp.sdnc-model-version' value='`$db1.vf-model.sdnc-model-version`' />\n\n\n\n",
+        "comments": "",
+        "x": 1639.42866897583,
+        "y": 646.964334487915,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "dedcf4a6.d6ca18",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1368.0001411437988,
+        "y": 647.2500095367432,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "7bffb405.6623ac"
+            ]
+        ]
+    },
+    {
+        "id": "726ff5db.17542c",
+        "type": "set",
+        "name": "set vf-module-label",
+        "xml": "<set>\n<parameter name='tmp.vf-module-label' value='`$db1.vf-module-model.vf-module-label`' />\n\n\n\n",
+        "comments": "",
+        "x": 1631.821434020996,
+        "y": 776.6786003112793,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "d1581b7a.307818",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1860.000015258789,
+        "y": 1482.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "c34d628a.5ba25",
+                "c56e214a.a3f38",
+                "57886653.e3ab98"
+            ]
+        ]
+    },
+    {
+        "id": "c56e214a.a3f38",
+        "type": "set",
+        "name": "set length",
+        "xml": "<set>\n\t<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.resource-key_length`' value='`$num + 1`'/>\n",
+        "comments": "",
+        "x": 2071.000015258789,
+        "y": 1482.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "2f6f6c84.413364",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1370.7500190734863,
+        "y": 606.5000076293945,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "6ec44df1.26ebd4"
+            ]
+        ]
+    },
+    {
+        "id": "6ec44df1.26ebd4",
+        "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=\"`'No VF_MODEL found with customization_uuid = ' + $vf-module-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`\" />",
+        "comments": "",
+        "x": 1542.0000228881836,
+        "y": 605.2500085830688,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "78e0a6e.6498258",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1428.25,
+        "y": 736.5,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "b55099bd.544558"
+            ]
+        ]
+    },
+    {
+        "id": "b55099bd.544558",
+        "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_label not found in VF_MODULE_MODEL WHERE customization_uuid = ' + $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`\" />",
+        "comments": "",
+        "x": 1599.5000038146973,
+        "y": 735.2500009536743,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "57886653.e3ab98",
+        "type": "set",
+        "name": "increment length",
+        "xml": "<set>\n\t<parameter name='num' value='`$num + 1`' />\n",
+        "comments": "",
+        "x": 2084.000015258789,
+        "y": 1548.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "cf8679e9.4fafd8",
+        "type": "set",
+        "name": "increment length",
+        "xml": "<set>\n\t<parameter name='highnum' value='`$highnum + 1`' />\n",
+        "comments": "",
+        "x": 1277.000015258789,
+        "y": 1554.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "a939f9eb.ae83b8",
+        "type": "set",
+        "name": "increment length",
+        "xml": "<set>\n\t<parameter name='highnum' value='`$highnum + 1`' />\n",
+        "comments": "",
+        "x": 1624.000015258789,
+        "y": 1279.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "60cb391a.7088d8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1418.000015258789,
+        "y": 1219.3333473205566,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            [
+                "9c282888.202138",
+                "a939f9eb.ae83b8"
+            ]
+        ]
+    },
+    {
+        "id": "11b406c0.22da09",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"BEFORE BlueprintProcessingClient\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 370,
+        "y": 820,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "bbab380e.910a58",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"AFTER BlueprintProcessingClient\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 380.3333282470703,
+        "y": 984.000018119812,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "873ccf3b.1d408",
+        "type": "execute",
+        "name": "printContext",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='`$pathname`' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 393.25,
+        "y": 1706.5000133514404,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8e0f6b.25999098",
+        "type": "set",
+        "name": "set pathname",
+        "xml": "<set>\n<parameter name='pathname' \n\tvalue=\"`'/var/tmp/ss-vfmodule-ra-assignment-' + \n\t$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.vf-module-id + '.log'`\" />\n",
+        "comments": "",
+        "x": 399.5,
+        "y": 1654.0000114440918,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    },
+    {
+        "id": "5989d23c.c4816c",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"DONE: vfmodule-ra-assignment\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 378.00000381469727,
+        "y": 1605.2500190734863,
+        "z": "2e17456e.1fa78a",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f15b2532.ed6cd8",
+        "type": "set",
+        "name": "set updateJsonPayload",
+        "xml": "<set>\n\t<parameter name=\"tmp.json-payload\" value=\"`'{' + $tmp.config-name-value-payload9 + '}'`\" />\n    <parameter name=\"`$cds + 'actionIdentifiers.blueprintName'`\" value='`$tmp.sdnc-model-name`' />\n    <parameter name=\"`$cds + 'actionIdentifiers.blueprintVersion'`\" value='`$tmp.sdnc-model-version`' />\n    <parameter name=\"`$cds + 'payload.resource-assignment-request.template-prefix[0]'`\" value='`$tmp.vf-module-label`' />\n    <parameter name=\"`$cds + 'payload.resource-assignment-request.resource-assignment-properties'`\" value='`$tmp.json-payload`' />",
+        "comments": "",
+        "x": 421,
+        "y": 740,
+        "z": "2e17456e.1fa78a",
+        "wires": []
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-assign.json
new file mode 100644
index 0000000..f8c91c7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-assign.json
@@ -0,0 +1,1252 @@
+[

+    {

+        "id": "9fc60e39.2b377",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 210,

+        "y": 88.57142639160156,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "2ec6867b.df375a"

+            ]

+        ]

+    },

+    {

+        "id": "20969099.af02a",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 240.4761962890625,

+        "y": 210.84921264648438,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "3fd5632d.c7de6c",

+                "6a0b0f74.17f38",

+                "2672585d.78d398",

+                "26b42539.e67b6a",

+                "dfc91ed9.e8c0a",

+                "5bbfbcf3.457464",

+                "9d35ffb1.ce2cb",

+                "737aa51.ec59a5c",

+                "bc77197c.29eef8",

+                "ec9923c5.9922b"

+            ]

+        ]

+    },

+    {

+        "id": "8e70b457.6790f8",

+        "type": "method",

+        "name": "method self-serve-vnf-assign",

+        "xml": "<method rpc='self-serve-vnf-assign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 326.7619094848633,

+        "y": 143.27778148651123,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "20969099.af02a"

+            ]

+        ]

+    },

+    {

+        "id": "2ec6867b.df375a",

+        "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": 485.23819732666016,

+        "y": 88.76191902160645,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "8e70b457.6790f8"

+            ]

+        ]

+    },

+    {

+        "id": "6a0b0f74.17f38",

+        "type": "switchNode",

+        "name": "switch vnf-parameters-data.param_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 528.6786575317383,

+        "y": 1431.0834321975708,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "4da27237.0f806c"

+            ]

+        ]

+    },

+    {

+        "id": "4da27237.0f806c",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 790.6786880493164,

+        "y": 1431.0834321975708,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "726f4a1f.8ea164"

+            ]

+        ]

+    },

+    {

+        "id": "888aa7c6.ce34c8",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:self-serve-ra-assignment",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-ra-assignment' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1305.9643478393555,

+        "y": 1480.654863357544,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "a974df23.821a7"

+            ]

+        ]

+    },

+    {

+        "id": "c16c3113.bc7e5",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to get RA assignments: ' + $error-message`\" />\n",

+        "comments": "",

+        "x": 1777.6785888671875,

+        "y": 1480.226266860962,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "64f35599.f950ac",

+        "type": "for",

+        "name": "foreach vnf-parameters-data.param[]",

+        "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 753.8574600219727,

+        "y": 1798.5835103988647,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "11b25862.2716d8",

+                "523b1459.d48b5c"

+            ]

+        ]

+    },

+    {

+        "id": "3fd5632d.c7de6c",

+        "type": "set",

+        "name": "set ss.capability.execution-order[]",

+        "xml": "<set>\n<parameter name='ss.capability.execution-order[0]' value='generate-name' />\n<parameter name='ss.capability.execution-order[1]' value='alts-entitlement-assign' />\n<parameter name='ss.capability.execution-order[2]' value='alts-license-assign' />\n<parameter name='ss.capability.execution-order[3]' value='vlan-tag-assign' />\n<parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />\n<parameter name='ss.capability.execution-order[5]' value='eipam-ip-assignment' />\n<parameter name='ss.capability.execution-order[6]' value='eipam-create-pool' />\n<parameter name='ss.capability.execution-order[7]' value='netbox-ip-assign' />\n<parameter name='ss.capability.execution-order[8]' value='mac-address-assign' />\n<parameter name='ss.capability.execution-order[9]' value='mS-mac-address-assign' />\n<parameter name='ss.capability.execution-order[10]' value='create-vpe-pool' />\n<parameter name='ss.capability.execution-order[11]' value='unresolved-composite-data' />\n<parameter name='ss.capability.execution-order[12]' value='aai-vnf-put' />\n<parameter name='ss.capability.execution-order_length' value='13' />\n",

+        "comments": "",

+        "x": 502.52384185791016,

+        "y": 1269.571566581726,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "2672585d.78d398",

+        "type": "for",

+        "name": "foreach capability[]",

+        "xml": "<for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 446.50011444091797,

+        "y": 1610.1190719604492,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "6c6b042c.d3a64c",

+                "aedbdfe7.8e8a4",

+                "64f35599.f950ac",

+                "34e1c505.10d7ea"

+            ]

+        ]

+    },

+    {

+        "id": "523b1459.d48b5c",

+        "type": "switchNode",

+        "name": "switch capability-name",

+        "xml": "<switch test='`$ss.capability-name == $tmp.param.capability-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1058.2502822875977,

+        "y": 1844.226303100586,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "6c805c7a.8fba94"

+            ]

+        ]

+    },

+    {

+        "id": "6c805c7a.8fba94",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1260.321647644043,

+        "y": 1843.9049158096313,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "87e7082f.14d0a8"

+            ]

+        ]

+    },

+    {

+        "id": "a974df23.821a7",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1623.5356941223145,

+        "y": 1480.083456993103,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "c16c3113.bc7e5"

+            ]

+        ]

+    },

+    {

+        "id": "6c6b042c.d3a64c",

+        "type": "set",

+        "name": "set ss.capability-name",

+        "xml": "<set>\n<parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />\n<!--\nss.capability.execution-order[]\n-->",

+        "comments": "",

+        "x": 714.2857437133789,

+        "y": 1538.642978668213,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "11b25862.2716d8",

+        "type": "set",

+        "name": "tmp.param.capability-name",

+        "xml": "<set>\n<parameter name='tmp.param.capability-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />\n",

+        "comments": "",

+        "x": 1069.607307434082,

+        "y": 1798.8335132598877,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "aedbdfe7.8e8a4",

+        "type": "set",

+        "name": "set ss.capability-action = assign",

+        "xml": "<set>\n<parameter name='ss.capability-action' value='assign' />\n",

+        "comments": "",

+        "x": 742.999885559082,

+        "y": 1585.5595626831055,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "34e1c505.10d7ea",

+        "type": "set",

+        "name": "set capability-dg with 'self-serve-' + capability-name",

+        "xml": "<set>\n<parameter name='ss.capability-dg' value=\"`'self-serve-' + $ss.capability.execution-order[$cidx]`\" />\n",

+        "comments": "",

+        "x": 805.5119781494141,

+        "y": 1639.0358066558838,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "26b42539.e67b6a",

+        "type": "set",

+        "name": "set sdnc-generated-cloud-resources = true",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.sdnc-generated-cloud-resources' value='true' />\n",

+        "comments": "",

+        "x": 531.4881362915039,

+        "y": 1323.321575164795,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "e67789aa.f9ccd8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 787.928539276123,

+        "y": 604.0357294082642,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "bf597400.464cb8",

+                "21e596be.e5d4aa",

+                "5fcbd71.1253c28",

+                "934cd4a8.dc5ce8",

+                "ce4ca7fe.3e7cb8",

+                "7c33a884.ca3c58",

+                "edeb06d4.5eecf8",

+                "faebe95e.4f34b8",

+                "3872041e.a052dc"

+            ]

+        ]

+    },

+    {

+        "id": "bf597400.464cb8",

+        "type": "set",

+        "name": "set vnf-topology data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id'\n value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-type'\n value='`$vnf-topology-operation-input.vnf-information.vnf-type`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-type'\n value='`$db.vf-model.nf-type`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role'\n value='`$db.vf-model.nf-role`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-function'\n value='`$db.vf-model.nf-function`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-code'\n value='`$db.vf-model.nf-code`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.tenant'\n value='`$vnf-topology-operation-input.vnf-request-input.tenant`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-cloud-region'\n value='`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`' />\n \n",

+        "comments": "",

+        "x": 1003.4284820556641,

+        "y": 605.0952377319336,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "8f03299d.ca8b58",

+        "type": "set",

+        "name": "set vnf-parameters-data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.'\n  value='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.' />\n",

+        "comments": "",

+        "x": 1196.9645767211914,

+        "y": 1430.9522609710693,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "5fcbd71.1253c28",

+        "type": "set",

+        "name": "set vnf-level-oper-status to PendingCreate",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",

+        "comments": "",

+        "x": 1068.7184371948242,

+        "y": 1179.0754470825195,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "21e596be.e5d4aa",

+        "type": "set",

+        "name": "copy input data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' \n\tvalue='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' \n\tvalue='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' \n\tvalue='$vnf-topology-operation-input.service-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' \n\tvalue='$vnf-topology-operation-input.vnf-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' \n\tvalue='$vnf-topology-operation-input.vnf-request-input.' />\n",

+        "comments": "",

+        "x": 986.0953521728516,

+        "y": 1128.8810863494873,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "fb2cfdce.8b138",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'\n  value='`$db.vf-model.invariant-uuid`' />\n",

+        "comments": "",

+        "x": 1400.4286727905273,

+        "y": 717.4524669647217,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "934cd4a8.dc5ce8",

+        "type": "switchNode",

+        "name": "switch input model-invariant-uuid",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1041.2857475280762,

+        "y": 740.2769107818604,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "6f767e4d.a5b3a",

+                "30cc2f98.3568c"

+            ]

+        ]

+    },

+    {

+        "id": "6f767e4d.a5b3a",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1249.9524192810059,

+        "y": 717.4198741912842,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "fb2cfdce.8b138"

+            ]

+        ]

+    },

+    {

+        "id": "30cc2f98.3568c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1251.381015777588,

+        "y": 761.7054653167725,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "943c3d93.373b6"

+            ]

+        ]

+    },

+    {

+        "id": "943c3d93.373b6",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'\n  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n",

+        "comments": "",

+        "x": 1405.6667518615723,

+        "y": 761.1340374946594,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "e7f84327.84a63",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'\n  value='`$db.vf-model.uuid`' />\n",

+        "comments": "",

+        "x": 1401.3809432983398,

+        "y": 805.9911432266235,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "ce4ca7fe.3e7cb8",

+        "type": "switchNode",

+        "name": "switch input model-uuid",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1010.9047660827637,

+        "y": 828.8156480789185,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "129c283a.58a938",

+                "f388a15f.e6114"

+            ]

+        ]

+    },

+    {

+        "id": "129c283a.58a938",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1250.9047393798828,

+        "y": 805.9585800170898,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "e7f84327.84a63"

+            ]

+        ]

+    },

+    {

+        "id": "f388a15f.e6114",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1252.3333358764648,

+        "y": 850.2441711425781,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "f7cc5fcf.99787"

+            ]

+        ]

+    },

+    {

+        "id": "f7cc5fcf.99787",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'\n  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n",

+        "comments": "",

+        "x": 1406.6190719604492,

+        "y": 849.6727433204651,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "35b76f99.a7dea",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'\n  value='`$db.vf-model.version`' />\n",

+        "comments": "",

+        "x": 1398.5238761901855,

+        "y": 894.8483505249023,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "7c33a884.ca3c58",

+        "type": "switchNode",

+        "name": "switch input model-version",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1022.0476379394531,

+        "y": 917.6727952957153,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "58b3abed.100754",

+                "caf817e5.49f0e8"

+            ]

+        ]

+    },

+    {

+        "id": "58b3abed.100754",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1248.047622680664,

+        "y": 894.8157577514648,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "35b76f99.a7dea"

+            ]

+        ]

+    },

+    {

+        "id": "caf817e5.49f0e8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1249.476219177246,

+        "y": 939.1013488769531,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "ac9f727b.ef4a8"

+            ]

+        ]

+    },

+    {

+        "id": "ac9f727b.ef4a8",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'\n  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`' />\n",

+        "comments": "",

+        "x": 1403.7619552612305,

+        "y": 938.5299210548401,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "28c79e76.10a892",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'\n  value='`$db.vf-model.name`' />\n",

+        "comments": "",

+        "x": 1398.5238761901855,

+        "y": 981.9911727905273,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "edeb06d4.5eecf8",

+        "type": "switchNode",

+        "name": "switch input model-name",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1017.0476379394531,

+        "y": 1004.8156175613403,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "21506f3d.981f2",

+                "aa8a9329.da852"

+            ]

+        ]

+    },

+    {

+        "id": "21506f3d.981f2",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1248.047622680664,

+        "y": 981.9585800170898,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "28c79e76.10a892"

+            ]

+        ]

+    },

+    {

+        "id": "aa8a9329.da852",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1249.476219177246,

+        "y": 1026.2441711425781,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "b6027793.3313e8"

+            ]

+        ]

+    },

+    {

+        "id": "b6027793.3313e8",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'\n  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`' />\n",

+        "comments": "",

+        "x": 1403.7619552612305,

+        "y": 1025.672743320465,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "faebe95e.4f34b8",

+        "type": "set",

+        "name": "set vnf-id",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id'\n   value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n",

+        "comments": "",

+        "x": 967.4047088623047,

+        "y": 656.6102752685547,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "3872041e.a052dc",

+        "type": "set",

+        "name": "set model-customization-uuid",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'\n  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n",

+        "comments": "",

+        "x": 1029.8332252502441,

+        "y": 1077.6578216552734,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "737aa51.ec59a5c",

+        "type": "switchNode",

+        "name": "switch service-data.vnfs.vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 514.0832901000977,

+        "y": 290.99992656707764,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "c740abf8.58e428",

+                "5c2c7ae5.9ba064",

+                "1f42e923.85e837"

+            ]

+        ]

+    },

+    {

+        "id": "c740abf8.58e428",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 756.2976760864258,

+        "y": 229.55935764312744,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "22af1633.9116da"

+            ]

+        ]

+    },

+    {

+        "id": "ddc7e93e.966958",

+        "type": "set",

+        "name": "set vnf-index=0",

+        "xml": "<set>\n<parameter name='vnf-index' value='0' />\n",

+        "comments": "",

+        "x": 1091.583381652832,

+        "y": 229.05943202972412,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "5c2c7ae5.9ba064",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 757.476203918457,

+        "y": 351.1785469055176,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "75a231aa.1493a"

+            ]

+        ]

+    },

+    {

+        "id": "5bbfbcf3.457464",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/ss-vnf-assign.log' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 406.92457580566406,

+        "y": 2612.3495638668537,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dfc91ed9.e8c0a",

+        "type": "set",

+        "name": "set ss.capability-type = vnf",

+        "xml": "<set>\n<parameter name='ss.capability-type' value='vnf' />\n",

+        "comments": "",

+        "x": 482.39292907714844,

+        "y": 1374.1072206497192,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "726f4a1f.8ea164",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 955.5356597900391,

+        "y": 1431.4643297195435,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "8f03299d.ca8b58",

+                "888aa7c6.ce34c8"

+            ]

+        ]

+    },

+    {

+        "id": "d4c51d8c.3fd83",

+        "type": "for",

+        "name": "for each existing VNF",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1104.5357284545898,

+        "y": 351.3572244644165,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "d88cbd0e.fb318"

+            ]

+        ]

+    },

+    {

+        "id": "d88cbd0e.fb318",

+        "type": "switchNode",

+        "name": "switch vnf-id: input vs service-data",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1381.821434020996,

+        "y": 351.4287118911743,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "613296f0.c41d88"

+            ]

+        ]

+    },

+    {

+        "id": "613296f0.c41d88",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1604.6072006225586,

+        "y": 351.00018405914307,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "f07dff31.8a8c5"

+            ]

+        ]

+    },

+    {

+        "id": "f07dff31.8a8c5",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1737.0714530944824,

+        "y": 351.0357446670532,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "71df4665.735218",

+                "e54095c.a974a68",

+                "2cb82547.83089a"

+            ]

+        ]

+    },

+    {

+        "id": "71df4665.735218",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 1904.964241027832,

+        "y": 437.03572273254395,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "35c0989a.5d1028",

+        "type": "set",

+        "name": "set new vnf_length = 1",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf_length' value='1' />\n",

+        "comments": "",

+        "x": 1115.142951965332,

+        "y": 274.3929147720337,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "e54095c.a974a68",

+        "type": "set",

+        "name": "set vnf-index = idx",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1935.5357971191406,

+        "y": 393.82140159606934,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "9d35ffb1.ce2cb",

+        "type": "set",

+        "name": "set is-new-vnf = true",

+        "xml": "<set>\n<parameter name='is-new-vnf' value='true' />\n",

+        "comments": "",

+        "x": 468.3929214477539,

+        "y": 210.89286994934082,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "2cb82547.83089a",

+        "type": "set",

+        "name": "set is-new-vnf = false",

+        "xml": "<set>\n<parameter name='is-new-vnf' value='false' />\n",

+        "comments": "",

+        "x": 1943.5714836120605,

+        "y": 350.53574657440186,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "75a231aa.1493a",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 894.7500228881836,

+        "y": 350.82144260406494,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "d4c51d8c.3fd83",

+                "a9dae2bf.27c9d"

+            ]

+        ]

+    },

+    {

+        "id": "a9dae2bf.27c9d",

+        "type": "switchNode",

+        "name": "switch is-new-vnf",

+        "xml": "<switch test='`$is-new-vnf`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1092.250015258789,

+        "y": 437.3928442001343,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "aafe48b1.4e7ba8"

+            ]

+        ]

+    },

+    {

+        "id": "aafe48b1.4e7ba8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1272.1071701049805,

+        "y": 436.9642915725708,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "8895a3c6.dce4e"

+            ]

+        ]

+    },

+    {

+        "id": "22af1633.9116da",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 910.2499923706055,

+        "y": 229.5714235305786,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "ddc7e93e.966958",

+                "35c0989a.5d1028"

+            ]

+        ]

+    },

+    {

+        "id": "1f42e923.85e837",

+        "type": "other",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 754.7499923706055,

+        "y": 289.32142543792725,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "22af1633.9116da"

+            ]

+        ]

+    },

+    {

+        "id": "bc77197c.29eef8",

+        "type": "switchNode",

+        "name": "switch is-new-vnf",

+        "xml": "<switch test='`$is-new-vnf`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 456.25000381469727,

+        "y": 604.8214321136475,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "6a808e60.77a37"

+            ]

+        ]

+    },

+    {

+        "id": "6a808e60.77a37",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 636.1071586608887,

+        "y": 604.392879486084,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "e67789aa.f9ccd8"

+            ]

+        ]

+    },

+    {

+        "id": "204b0359.b69b9c",

+        "type": "set",

+        "name": "set new vnf_length++",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf_length' value='`$service-data.vnfs.vnf_length + 1`' />\n",

+        "comments": "",

+        "x": 1620,

+        "y": 483.57142639160156,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "8895a3c6.dce4e",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1417.9999771118164,

+        "y": 436.5713882446289,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "204b0359.b69b9c",

+                "5e9aebe.a0a8114"

+            ]

+        ]

+    },

+    {

+        "id": "5e9aebe.a0a8114",

+        "type": "set",

+        "name": "set vnf-index = vnf_length",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\n",

+        "comments": "",

+        "x": 1629.4999809265137,

+        "y": 436.0713882446289,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "71d531a5.f9c57",

+        "type": "switchNode",

+        "name": "switch resource-resolution-data.status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1017.1429252624512,

+        "y": 2015.7144899368286,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "95915292.b1cbe",

+                "8847833b.7e141"

+            ]

+        ]

+    },

+    {

+        "id": "95915292.b1cbe",

+        "type": "other",

+        "name": "PENDING",

+        "xml": "<outcome value='PENDING'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1286.5001411437988,

+        "y": 2015.71444606781,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "a8f748b4.9f28e8"

+            ]

+        ]

+    },

+    {

+        "id": "8847833b.7e141",

+        "type": "other",

+        "name": "FAILED",

+        "xml": "<outcome value='FAILED'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1280.0359573364258,

+        "y": 2066.678776741028,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "a8f748b4.9f28e8"

+            ]

+        ]

+    },

+    {

+        "id": "a8f748b4.9f28e8",

+        "type": "call",

+        "name": "call ss.capability-dg",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1495.1546897888184,

+        "y": 2067.440628051758,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "2dd36be3.cf5d44",

+                "d2b8fc6a.176c9"

+            ]

+        ]

+    },

+    {

+        "id": "2dd36be3.cf5d44",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1700.04732131958,

+        "y": 2067.4406547546387,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "8dbc33f.2629cd"

+            ]

+        ]

+    },

+    {

+        "id": "87e7082f.14d0a8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 751.2735900878906,

+        "y": 2015.527940750122,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "71d531a5.f9c57",

+                "90286397.09b08"

+            ]

+        ]

+    },

+    {

+        "id": "90286397.09b08",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 915.5593299865723,

+        "y": 2391.813596725464,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "d2b8fc6a.176c9",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1709.844985961914,

+        "y": 2240.7424488067627,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "3117d1e3.ae428e"

+            ]

+        ]

+    },

+    {

+        "id": "3117d1e3.ae428e",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"`'EXECUTION DONE: ' + $ss.capability-dg`\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1853.594985961914,

+        "y": 2239.4924488067627,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9525749b.e0a2a8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 2113.952507019043,

+        "y": 2156.206455230713,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "8dbc33f.2629cd",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1889.3931884765625,

+        "y": 2067.4322185516357,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            [

+                "9525749b.e0a2a8",

+                "54bc9834.e72248",

+                "175c4397.c22a6c"

+            ]

+        ]

+    },

+    {

+        "id": "54bc9834.e72248",

+        "type": "call",

+        "name": "call self-serve-vnf-mdsal-put",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-mdsal-put' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2162.8811264038086,

+        "y": 2112.328701019287,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "175c4397.c22a6c",

+        "type": "set",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name='error-message' value=\"`'Encountered error from ' + $ss.capability-dg + ' with error: ' + $error-message`\" />",

+        "comments": "",

+        "x": 2126.8100253513876,

+        "y": 2066.971579824175,

+        "z": "2d409653.5d1eca",

+        "wires": []

+    },

+    {

+        "id": "ec9923c5.9922b",

+        "type": "call",

+        "name": "call self-serve-vnf-mdsal-put",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-mdsal-put' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 463.95216369628906,

+        "y": 2499.492456436157,

+        "z": "2d409653.5d1eca",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-changeassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-changeassign.json
new file mode 100644
index 0000000..80c55d8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-changeassign.json
@@ -0,0 +1,381 @@
+[

+    {

+        "id": "d7b04ee5.646b",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 151.42852783203125,

+        "y": 47.142860412597656,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "d90f8810.ec0b98"

+            ]

+        ]

+    },

+    {

+        "id": "d90f8810.ec0b98",

+        "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": 427.42852783203125,

+        "y": 48.142860412597656,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "ceeb919a.85f53"

+            ]

+        ]

+    },

+    {

+        "id": "ceeb919a.85f53",

+        "type": "method",

+        "name": "self-serve-vnf-changeassign ",

+        "xml": "<method rpc='self-serve-vnf-changeassign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 270.14283752441406,

+        "y": 106.71429443359375,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "94a807c3.18e1f8"

+            ]

+        ]

+    },

+    {

+        "id": "94a807c3.18e1f8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 295.64286041259766,

+        "y": 171.5714225769043,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "686eb002.8272c",

+                "e14e8d9d.455fb"

+            ]

+        ]

+    },

+    {

+        "id": "fcf2582e.807218",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n   <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.status`' value='PENDING'/>\n   <parameter name='ss.input.param.index' value='`$i`' />\n   <parameter name='ss.service-data.param.index' value='`$j`' />\n   <parameter name='ss.input.param.found.in.service.param' value='true' />\n   <parameter name='ss.capability-type' value='vnf' />\n   <parameter name='ss.capability-action' value='changeassign' />",

+        "comments": "",

+        "x": 1965.142677307129,

+        "y": 584.1428298950195,

+        "z": "d97c316.162bed",

+        "wires": []

+    },

+    {

+        "id": "686eb002.8272c",

+        "type": "switchNode",

+        "name": "switch vnf-input-parameters",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 575.2857055664062,

+        "y": 224.5714340209961,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "cb121cc3.86892"

+            ]

+        ]

+    },

+    {

+        "id": "cb121cc3.86892",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 805.4285888671875,

+        "y": 224.42858123779297,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "8065a7c1.8e9ab8"

+            ]

+        ]

+    },

+    {

+        "id": "8065a7c1.8e9ab8",

+        "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=\"no param name/value provided in vnf-request-input\" />\n",

+        "comments": "",

+        "x": 978.2857055664062,

+        "y": 224.5714340209961,

+        "z": "d97c316.162bed",

+        "wires": []

+    },

+    {

+        "id": "e14e8d9d.455fb",

+        "type": "for",

+        "name": "for vnf-input-parameters.param index i",

+        "xml": "<for index='i' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 602.2857055664062,

+        "y": 348.5714340209961,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "533d1a61.0ffb54"

+            ]

+        ]

+    },

+    {

+        "id": "533d1a61.0ffb54",

+        "type": "switchNode",

+        "name": "switch service param length null",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length == ''`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 949.5713806152344,

+        "y": 348.14287757873535,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "6fd8cd13.aa94d4"

+            ]

+        ]

+    },

+    {

+        "id": "deca9f28.6ee9c",

+        "type": "for",

+        "name": "for service-data.vnf-parameters-data.param index j",

+        "xml": "<for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 1040.4284057617188,

+        "y": 586.5713920593262,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "fda41515.3cb6c8"

+            ]

+        ]

+    },

+    {

+        "id": "fda41515.3cb6c8",

+        "type": "switchNode",

+        "name": "switch match for vnf-name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$j].name == $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1427.142677307129,

+        "y": 585.1428298950195,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "1021041f.bc041c"

+            ]

+        ]

+    },

+    {

+        "id": "1021041f.bc041c",

+        "type": "not-found",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1617.142677307129,

+        "y": 585.1428298950195,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "987e92d3.7d94f"

+            ]

+        ]

+    },

+    {

+        "id": "75e8b33d.ad968c",

+        "type": "not-found",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1291.142677307129,

+        "y": 830.5714149475098,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "d1376de5.42ab3"

+            ]

+        ]

+    },

+    {

+        "id": "d1376de5.42ab3",

+        "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=\"No vnf-request-input.vnf-input-parameters.param[].name found in service-data.\" />\n",

+        "comments": "",

+        "x": 1464.285530090332,

+        "y": 829.1428279876709,

+        "z": "d97c316.162bed",

+        "wires": []

+    },

+    {

+        "id": "987e92d3.7d94f",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1772.142677307129,

+        "y": 583.1428298950195,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "fcf2582e.807218",

+                "8426aa6a.8cf0a8",

+                "543dede3.b39004"

+            ]

+        ]

+    },

+    {

+        "id": "8426aa6a.8cf0a8",

+        "type": "call",

+        "name": "call self-serve-generate-name-changeassign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-generate-name-changeassign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2108.999755859375,

+        "y": 653.1428198814392,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "32fc0971.1c0146",

+                "21d46561.3c7f6a"

+            ]

+        ]

+    },

+    {

+        "id": "32fc0971.1c0146",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2398.9996490478516,

+        "y": 616.5713996887207,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "2151c897.b7d8f8"

+            ]

+        ]

+    },

+    {

+        "id": "21d46561.3c7f6a",

+        "type": "failure",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2408.9996490478516,

+        "y": 684.5713996887207,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "2151c897.b7d8f8"

+            ]

+        ]

+    },

+    {

+        "id": "2151c897.b7d8f8",

+        "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 from self-service-generate-name-changeassign\" />\n",

+        "comments": "",

+        "x": 2592.9996490478516,

+        "y": 645.5713996887207,

+        "z": "d97c316.162bed",

+        "wires": []

+    },

+    {

+        "id": "6fd8cd13.aa94d4",

+        "type": "other",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1164.5713806152344,

+        "y": 348.14287757873535,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "988b476b.b275c8"

+            ]

+        ]

+    },

+    {

+        "id": "3d53f85d.e87578",

+        "type": "set",

+        "name": "set ss.input.param.found.in.service.param = false",

+        "xml": "<set>\n   <parameter name='ss.input.param.found.in.service.param' value='false' />",

+        "comments": "",

+        "x": 1031.7141418457031,

+        "y": 520.4285628795624,

+        "z": "d97c316.162bed",

+        "wires": []

+    },

+    {

+        "id": "84dc5d99.83e5",

+        "type": "switchNode",

+        "name": "switch ss.input.param.found.in.service.param",

+        "xml": "<switch test='`$ss.input.param.found.in.service.param`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1010.1427307128906,

+        "y": 829.1428279876709,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "75e8b33d.ad968c"

+            ]

+        ]

+    },

+    {

+        "id": "543dede3.b39004",

+        "type": "returnSuccess",

+        "name": "return success",

+        "xml": "<return status='success'>\n",

+        "comments": "",

+        "x": 1992.4283828735352,

+        "y": 726.1428184509277,

+        "z": "d97c316.162bed",

+        "wires": []

+    },

+    {

+        "id": "988b476b.b275c8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 641.9999389648438,

+        "y": 584.7142848968506,

+        "z": "d97c316.162bed",

+        "wires": [

+            [

+                "3d53f85d.e87578",

+                "deca9f28.6ee9c",

+                "84dc5d99.83e5"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-forking-logic.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-forking-logic.json
new file mode 100644
index 0000000..01ed9eb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-forking-logic.json
@@ -0,0 +1 @@
+[{"id":"1284ed23.657453","type":"switchNode","name":"switch: sdnc-model-name && sdnc-artifact-name != null","xml":"<switch test=\"`$db.vf-model.sdnc-model-name != '' and $db.vf-model.sdnc-artifact-name != ''`\">","comments":"","outputs":1,"x":1243.9763069152832,"y":603.8054723739624,"z":"1f61e7a0.144808","wires":[["f8ddee41.0e7e9","b3830959.6c1f78"]]},{"id":"f8ddee41.0e7e9","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1547.047695159912,"y":576.4841375350952,"z":"1f61e7a0.144808","wires":[["67417dab.a05484"]]},{"id":"d74e30f4.07f07","type":"switchNode","name":"switch: param[].name","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$p].name`\">\n","comments":"","outputs":1,"x":764.1071166992188,"y":353.2936897277832,"z":"1f61e7a0.144808","wires":[["7e74cdbe.43af14","f5f8dd62.12aac"]]},{"id":"bfad4ea.c0e0db","type":"for","name":"for p in vnf-input-parameters,param[]","xml":"<for silentFailure='true' index='p' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >\n","comments":"","outputs":1,"x":470.2142639160156,"y":353.79372215270996,"z":"1f61e7a0.144808","wires":[["d74e30f4.07f07"]]},{"id":"ccf8b71d.f158e8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":954.416862487793,"y":603.7577362060547,"z":"1f61e7a0.144808","wires":[["1284ed23.657453"]]},{"id":"b3830959.6c1f78","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1549.9404411315918,"y":633.0911417007446,"z":"1f61e7a0.144808","wires":[["76d063d3.bd38dc"]]},{"id":"c530e9c7.3514e8","type":"set","name":"set tmp.exist.sdnc-artifact-name = true","xml":"<set>\n<parameter name='tmp.exist.sdnc-artifact-name' value='true' />","comments":"","x":1306.0000457763672,"y":403.1508598327637,"z":"1f61e7a0.144808","wires":[]},{"id":"6c2c6644.286868","type":"set","name":"set tmp.exist.sdnc-model-name = true","xml":"<set>\n<parameter name='tmp.exist.sdnc-model-name' value='true' />\n","comments":"","x":1302.714153289795,"y":353.15087509155273,"z":"1f61e7a0.144808","wires":[]},{"id":"95a85864.4bde28","type":"switchNode","name":"switch: tmp.exist.sdnc-model-name && tmp.exist.sdnc-artifact-name == true","xml":"<switch test=\"`$tmp.exist.sdnc-model-name == 'true' and $tmp.exist.sdnc-artifact-name == 'true'`\">\n","comments":"","outputs":1,"x":581.4880447387695,"y":556.1625738143921,"z":"1f61e7a0.144808","wires":[["8f4db6d4.0793f8","ccf8b71d.f158e8"]]},{"id":"8f4db6d4.0793f8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":956.6667366027832,"y":514.2815885543823,"z":"1f61e7a0.144808","wires":[["1477797b.423117"]]},{"id":"f659dbff.526c88","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":177.14282989501953,"y":385.9604301452637,"z":"1f61e7a0.144808","wires":[["bfad4ea.c0e0db","95a85864.4bde28","503c0074.2ea6c","8abdee5f.b8151"]]},{"id":"d4d93dda.eeb53","type":"comment","name":"SELF-SERVE FORK","info":"","comments":"","x":170.71427154541016,"y":338.1032781600952,"z":"1f61e7a0.144808","wires":[]},{"id":"7e74cdbe.43af14","type":"outcome","name":"sdnc_model_name","xml":"<outcome value='sdnc_model_name'>\n","comments":"","outputs":1,"x":1020.2856924874441,"y":353.1984841482979,"z":"1f61e7a0.144808","wires":[["6c2c6644.286868"]]},{"id":"f5f8dd62.12aac","type":"outcome","name":"sdnc_artifact_name","xml":"<outcome value='sdnc_artifact_name'>\n","comments":"","outputs":1,"x":1023.1428146362305,"y":402.6270561218262,"z":"1f61e7a0.144808","wires":[["c530e9c7.3514e8"]]},{"id":"503c0074.2ea6c","type":"set","name":"initialize tmp.exist.sdnc-model-name && tmp.exist.sdnc-artifact-name = false","xml":"<set>\n<parameter name='tmp.exist.sdnc-model-name' value='false' />\n<parameter name='tmp.exist.sdnc-artifact-name' value='false' />","comments":"","x":590.3016204833984,"y":256.4245910644531,"z":"1f61e7a0.144808","wires":[]},{"id":"8abdee5f.b8151","type":"switchNode","name":"switch: vnf-input-parameters.param_length","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`\">\n","comments":"","outputs":1,"x":488.7301788330078,"y":302.2340955734253,"z":"1f61e7a0.144808","wires":[["eb13f669.fdd2b8"]]},{"id":"eb13f669.fdd2b8","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":752.3015975952148,"y":302.51983547210693,"z":"1f61e7a0.144808","wires":[["6b92f9f0.29faf8"]]},{"id":"6b92f9f0.29faf8","type":"set","name":"set vnf-input-parameters.param_length = 0","xml":"<set>\n<parameter name='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length' value='0' />\n","comments":"","x":1026.0158386230469,"y":302.37699699401855,"z":"1f61e7a0.144808","wires":[]},{"id":"324af5b7.ccc2ba","type":"dgstart","name":"DGSTART","outputs":1,"x":147.14285278320312,"y":48.57143020629883,"z":"1f61e7a0.144808","wires":[["70b66976.7d2788"]]},{"id":"70b66976.7d2788","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.4285583496094,"y":88.80954170227051,"z":"1f61e7a0.144808","wires":[["75b34d55.69f444"]]},{"id":"75b34d55.69f444","type":"method","name":"method self-serve-vnf-forking-logic","xml":"<method rpc='self-serve-vnf-forking-logic' mode='sync'>\n","comments":"","outputs":1,"x":243.57147979736328,"y":128.57143020629883,"z":"1f61e7a0.144808","wires":[["f659dbff.526c88"]]},{"id":"76d063d3.bd38dc","type":"set","name":"set ss.self-serve-flag = false","xml":"<set>\n<parameter name='ss.self-serve-flag' value='false' />\n","comments":"","x":1766.8572006225586,"y":633.1428499221802,"z":"1f61e7a0.144808","wires":[]},{"id":"1477797b.423117","type":"set","name":"set ss.self-serve-flag = true","xml":"<set>\n<parameter name='ss.self-serve-flag' value='true' />\n","comments":"","x":1170.8570938110352,"y":514.5714168548584,"z":"1f61e7a0.144808","wires":[]},{"id":"67417dab.a05484","type":"set","name":"set ss.self-serve-flag = true","xml":"<set>\n<parameter name='ss.self-serve-flag' value='true' />\n","comments":"","x":1761.1429443359375,"y":576.4285888671875,"z":"1f61e7a0.144808","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-generate-name-changeassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-generate-name-changeassign.json
new file mode 100644
index 0000000..b41c0f9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-generate-name-changeassign.json
@@ -0,0 +1,386 @@
+[

+    {

+        "id": "9937778e.f87d58",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 175.71429443359375,

+        "y": 62.85714340209961,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "4892fa18.531f64"

+            ]

+        ]

+    },

+    {

+        "id": "4892fa18.531f64",

+        "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": 451.71429443359375,

+        "y": 63.85714340209961,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "35d27316.1b81fc"

+            ]

+        ]

+    },

+    {

+        "id": "35d27316.1b81fc",

+        "type": "method",

+        "name": "self-serve-vnf-generate-name-changeassign",

+        "xml": "<method rpc='self-serve-vnf-generate-name-changeassign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 356.28570556640625,

+        "y": 115.71428680419922,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "685554a6.20595c"

+            ]

+        ]

+    },

+    {

+        "id": "37b606aa.d2592a",

+        "type": "execute",

+        "name": "execute NameGenerationNode-changeassign",

+        "xml": "<execute plugin='org.openecomp.sdnc.prov.namegeneration.node.AssignNameNode' method='process'>\n   <parameter name='payload' value='`$tmp.vnf.changeassign.naming-data-payload`' />\n   <parameter name=\"prifix\" value=\"vnf.changeassign.nameGenResponse\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 759.9999389648438,

+        "y": 584.2856769561768,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "7c08819e.60f86",

+                "88e7bf8c.88a75"

+            ]

+        ]

+    },

+    {

+        "id": "7c08819e.60f86",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1039.571388244629,

+        "y": 532.1428203582764,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "b64a72c8.635e1"

+            ]

+        ]

+    },

+    {

+        "id": "88e7bf8c.88a75",

+        "type": "failure",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1044.571388244629,

+        "y": 630.1428203582764,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "b64a72c8.635e1"

+            ]

+        ]

+    },

+    {

+        "id": "b64a72c8.635e1",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1230.8571014404297,

+        "y": 572.7142314910889,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "6ffcdc87.53bfe4",

+                "705ae050.4e8b2"

+            ]

+        ]

+    },

+    {

+        "id": "6ffcdc87.53bfe4",

+        "type": "set",

+        "name": "set status as FAILED",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />",

+        "comments": "",

+        "x": 1453.2856369018555,

+        "y": 519.2856426239014,

+        "z": "23014bb9.2ef1e4",

+        "wires": []

+    },

+    {

+        "id": "705ae050.4e8b2",

+        "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 from NameGenerationNode ChangeAssign vnf ' + $error-message`\" />\n",

+        "comments": "",

+        "x": 1439.2856369018555,

+        "y": 628.2856426239014,

+        "z": "23014bb9.2ef1e4",

+        "wires": []

+    },

+    {

+        "id": "685554a6.20595c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 348.9999771118164,

+        "y": 493.5714178085327,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "518b70ab.3a899",

+                "4a63a9c6.d7c168",

+                "37b606aa.d2592a",

+                "f16a6afe.5463e8",

+                "1ecdeb4b.5e0395",

+                "53c8ae4e.799bb",

+                "7e97819c.97305"

+            ]

+        ]

+    },

+    {

+        "id": "518b70ab.3a899",

+        "type": "for",

+        "name": "for service-data.vnf-parameters-data.param index i",

+        "xml": "<for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.resource-key_length`' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 791.2857246398926,

+        "y": 339.4285259246826,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "a63b3e76.ee0f7"

+            ]

+        ]

+    },

+    {

+        "id": "a63b3e76.ee0f7",

+        "type": "switchNode",

+        "name": "switch resource-key[].name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.resource-key[$i].name`'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1162.428560256958,

+        "y": 339.57139015197754,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "d5c6eaf9.2a5d88"

+            ]

+        ]

+    },

+    {

+        "id": "d5c6eaf9.2a5d88",

+        "type": "outcome",

+        "name": "external-key",

+        "xml": "<outcome value='external-key'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1400.428560256958,

+        "y": 339.57139015197754,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "486ff831.7e3c08"

+            ]

+        ]

+    },

+    {

+        "id": "486ff831.7e3c08",

+        "type": "set",

+        "name": "set tmp.external-key.value",

+        "xml": "<set>\n<parameter name='tmp.external-key.value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.resource-key[$i].value`' />\n",

+        "comments": "",

+        "x": 1632.428560256958,

+        "y": 339.57139015197754,

+        "z": "23014bb9.2ef1e4",

+        "wires": []

+    },

+    {

+        "id": "4a63a9c6.d7c168",

+        "type": "switchNode",

+        "name": "switch tmp.external-key.value",

+        "xml": "<switch test='`$tmp.external-key.value`'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 714.1428756713867,

+        "y": 414.1427888870239,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "a90891b7.fff2b"

+            ]

+        ]

+    },

+    {

+        "id": "a90891b7.fff2b",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 930.0000076293945,

+        "y": 414.5713424682617,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "370ccd0f.c72bf2"

+            ]

+        ]

+    },

+    {

+        "id": "370ccd0f.c72bf2",

+        "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=\"self-service-vnf-generate-name-changeassign error : external-key is null for vnf\" />\n",

+        "comments": "",

+        "x": 1091.0000076293945,

+        "y": 414.5713424682617,

+        "z": "23014bb9.2ef1e4",

+        "wires": []

+    },

+    {

+        "id": "16a4f29b.4a90ad",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 856.2855949401855,

+        "y": 727.0316724777222,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "fbc4873f.c1f5c8"

+            ]

+        ]

+    },

+    {

+        "id": "fbc4873f.c1f5c8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1064.6985092163086,

+        "y": 780.1586875915527,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "d296203b.a4db",

+                "adedc513.a0a9e8"

+            ]

+        ]

+    },

+    {

+        "id": "d296203b.a4db",

+        "type": "set",

+        "name": "set status as FAILED",

+        "xml": "<set>\n\t<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />",

+        "comments": "",

+        "x": 1289.8570594787598,

+        "y": 728.5713958740234,

+        "z": "23014bb9.2ef1e4",

+        "wires": []

+    },

+    {

+        "id": "adedc513.a0a9e8",

+        "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=\"`'Failed to update generic-vnf.vnf-name to ' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].value + ' in AnAI'`\" />\n",

+        "comments": "",

+        "x": 1262.1428451538086,

+        "y": 823.7142448425293,

+        "z": "23014bb9.2ef1e4",

+        "wires": []

+    },

+    {

+        "id": "1ecdeb4b.5e0395",

+        "type": "set",

+        "name": "set param[].value and status",

+        "xml": "<set>\n\t <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].value`' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].value`'/>\n\t <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.status`' value='SUCCESS' />",

+        "comments": "",

+        "x": 681.9683074951172,

+        "y": 927.4602336883545,

+        "z": "23014bb9.2ef1e4",

+        "wires": []

+    },

+    {

+        "id": "f16a6afe.5463e8",

+        "type": "save",

+        "name": "update generic-vnf",

+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"generic-vnf\"\n\t\tkey=\"generic-vnf.vnf-id =  $service-data.vnfs.vnf[$vnf-index].vnf-id \" >\n<parameter name=\"vnf-name\" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].value`' />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 661.7936096191406,

+        "y": 775.5079565048218,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "16a4f29b.4a90ad",

+                "70a5ecf7.6d4b54"

+            ]

+        ]

+    },

+    {

+        "id": "70a5ecf7.6d4b54",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 861.1588363647461,

+        "y": 824.3967752456665,

+        "z": "23014bb9.2ef1e4",

+        "wires": [

+            [

+                "fbc4873f.c1f5c8"

+            ]

+        ]

+    },

+    {

+        "id": "53c8ae4e.799bb",

+        "type": "set",

+        "name": "set tmp.external-key.value = NULL",

+        "xml": "<set>\n<parameter name='tmp.external-key.value' value='' />\n",

+        "comments": "",

+        "x": 725.7143173217773,

+        "y": 281.42848014831543,

+        "z": "23014bb9.2ef1e4",

+        "wires": []

+    },

+    {

+        "id": "7e97819c.97305",

+        "type": "set",

+        "name": "set tmp.vnf.changeassign.naming-data-payload",

+        "xml": "<set>\n<parameter name=\"tmp.vnf.changeassign.naming-data-payload\" \n\tvalue=\"`'{&quot;elements&quot;:[{' + '&quot;resource-name&quot;:&quot;' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].name + '&quot;,&quot;resource-value&quot;:&quot;' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].value + '&quot;,&quot;external-key&quot;:&quot;' + $tmp.external-key.value + '&quot;}]}'`\"/>",

+        "comments": "",

+        "x": 775.8571166992188,

+        "y": 491.14282608032227,

+        "z": "23014bb9.2ef1e4",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-generate-name.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-generate-name.json
new file mode 100644
index 0000000..ccb80da
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-generate-name.json
@@ -0,0 +1,1001 @@
+[

+    {

+        "id": "af3e34db.feb098",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 126.25,

+        "y": 45,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "ca83e5f.ab90a18"

+            ]

+        ]

+    },

+    {

+        "id": "ca83e5f.ab90a18",

+        "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": 378.8213806152344,

+        "y": 44.428558349609375,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "6274efd5.b2315"

+            ]

+        ]

+    },

+    {

+        "id": "6274efd5.b2315",

+        "type": "method",

+        "name": "self-serve-vnf-generate-name",

+        "xml": "<method rpc='self-serve-vnf-generate-name' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 249.05955505371094,

+        "y": 106.333327293396,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "a81678e9.2da388"

+            ]

+        ]

+    },

+    {

+        "id": "2ec3454f.2d328a",

+        "type": "switchNode",

+        "name": "switch capability action",

+        "xml": "<switch test=\"`$ss.capability-action`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 316.7142028808594,

+        "y": 880.9762096405029,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "47b5b6d4.177928",

+                "29572028.8c0e7"

+            ]

+        ]

+    },

+    {

+        "id": "47b5b6d4.177928",

+        "type": "not-found",

+        "name": "unassign",

+        "xml": "<outcome value='unassign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 542.0119094848633,

+        "y": 260.7380905151367,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "97f6ac39.db8e9"

+            ]

+        ]

+    },

+    {

+        "id": "a81678e9.2da388",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 230.18649291992188,

+        "y": 172.206392288208,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "2ec3454f.2d328a",

+                "19085dd6.206392"

+            ]

+        ]

+    },

+    {

+        "id": "97f6ac39.db8e9",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 712.5000076293945,

+        "y": 261.25000190734863,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "ae293e85.fab67",

+                "4d44790c.037178"

+            ]

+        ]

+    },

+    {

+        "id": "ae293e85.fab67",

+        "type": "set",

+        "name": "set tmp.naming-data-payload",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />\n",

+        "comments": "",

+        "x": 963.7500076293945,

+        "y": 262.50000063702464,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "29572028.8c0e7",

+        "type": "not-found",

+        "name": "assign",

+        "xml": "<outcome value='assign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 514.603157043457,

+        "y": 1514.535545349121,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "c78ccdba.af20a"

+            ]

+        ]

+    },

+    {

+        "id": "7a858a5e.cd7834",

+        "type": "set",

+        "name": "set tmp.naming-data-payload",

+        "xml": "<set>\n\t<parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />\n\t<parameter name='tmp.gen-name_length' value='0' />",

+        "comments": "",

+        "x": 964.3650646209717,

+        "y": 1514.8730697631836,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "316f0a4f.16ee26",

+        "type": "execute",

+        "name": "execute replace extra comma",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>\n   <parameter name='outputPath' value='tmp.naming-data-payload' />\n   <parameter name='source' value='`$tmp.naming-data-payload`' />\n   <parameter name='target' value=',}' />\n   <parameter name='replacement' value='}' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1120.0000228881836,

+        "y": 754.9642696380615,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4d44790c.037178",

+        "type": "for",

+        "name": "for vnf-parameters-data",

+        "xml": "<for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 943.7857971191406,

+        "y": 326.25001525878906,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "c4c0d2ab.b2585"

+            ]

+        ]

+    },

+    {

+        "id": "c4c0d2ab.b2585",

+        "type": "switchNode",

+        "name": "switch capability-name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1186.6428527832031,

+        "y": 326.25001525878906,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "e657dc1b.40e9b"

+            ]

+        ]

+    },

+    {

+        "id": "e657dc1b.40e9b",

+        "type": "not-found",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1367.3572082519531,

+        "y": 326.25,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "31a5002f.e6918"

+            ]

+        ]

+    },

+    {

+        "id": "4504c048.2c22f",

+        "type": "for",

+        "name": "for vnf-parameters-data",

+        "xml": "<for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1089.5000228881836,

+        "y": 555.9642696380615,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "57bc2b62.0fd734"

+            ]

+        ]

+    },

+    {

+        "id": "21846577.931eda",

+        "type": "set",

+        "name": "set payload data",

+        "xml": "<set>\n<parameter name=\"tmp.naming-data-payload\" value=\"`$tmp.naming-data-payload + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`\"/>\n<parameter name=\"`tmp.gen-name[0].element[$j].name`\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name`\"/>\n<parameter name=\"`tmp.gen-name[0].element[$j].value`\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`\"/>\n<parameter name=\"`tmp.gen-name[0].element_length`\" value='`$j + 1`' />",

+        "comments": "",

+        "x": 1692.0000228881836,

+        "y": 553.9642696380615,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "f773ea3a.971e88",

+        "type": "set",

+        "name": "set set payload data",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + '{'`\" />\n<parameter name='tmp.gen-name_length' value='1' />",

+        "comments": "",

+        "x": 1087.0001754760742,

+        "y": 481.8213634490967,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "e286d1e2.22f7f",

+        "type": "set",

+        "name": "set payload data",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + '},'`\" />",

+        "comments": "",

+        "x": 1087.0000228881836,

+        "y": 617.9642696380615,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "2f0e6f87.4aa69",

+        "type": "set",

+        "name": "set close payload list",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + ']}'`\" />",

+        "comments": "",

+        "x": 1093.0000228881836,

+        "y": 682.9642696380615,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "6a04c3c2.d8353c",

+        "type": "execute",

+        "name": "execute replace extra comma",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>\n   <parameter name='outputPath' value='tmp.naming-data-payload' />\n   <parameter name='source' value='`$tmp.naming-data-payload`' />\n   <parameter name='target' value=',]' />\n   <parameter name='replacement' value=']' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1123.0000228881836,

+        "y": 808.9642696380615,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "91a5a0b9.28b1d",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1482.7500305175781,

+        "y": 884.7142467498779,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "c44601cf.e3781"

+            ]

+        ]

+    },

+    {

+        "id": "2391c5d1.fd861a",

+        "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 from NameGenerationNode Unassign\" />\n",

+        "comments": "",

+        "x": 1847.7500305175781,

+        "y": 984.7142467498779,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "ffa6ef8.c99991",

+        "type": "failure",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1487.7500305175781,

+        "y": 983.7142467498779,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "c44601cf.e3781"

+            ]

+        ]

+    },

+    {

+        "id": "c44601cf.e3781",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1645.7500305175781,

+        "y": 928.7142467498779,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "122596ab.6c3209",

+                "2391c5d1.fd861a"

+            ]

+        ]

+    },

+    {

+        "id": "122596ab.6c3209",

+        "type": "set",

+        "name": "set status as FAILED",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />",

+        "comments": "",

+        "x": 1861.7500305175781,

+        "y": 875.7142467498779,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "acdd082c.0a4988",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"jsonStringToCtx\">\n\t<parameter name=\"source\" value=\"nameGenResponse.httpResponse\" />\n\t<parameter name=\"outputPath\" value=\"jsonContextPrefix\" />\n\t<parameter name=\"isEscaped\" value=\"false\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1096.500015258789,

+        "y": 1083.9643726348877,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "31a5002f.e6918",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 816.2500114440918,

+        "y": 483.21427154541016,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "f773ea3a.971e88",

+                "4504c048.2c22f",

+                "e286d1e2.22f7f",

+                "2f0e6f87.4aa69",

+                "316f0a4f.16ee26",

+                "acdd082c.0a4988",

+                "6a04c3c2.d8353c",

+                "7281ab1.108d054",

+                "7190fc5.2e53204",

+                "b700fe4f.6ea67",

+                "82081d21.8af89",

+                "4b9fd950.22bda8"

+            ]

+        ]

+    },

+    {

+        "id": "57bc2b62.0fd734",

+        "type": "switchNode",

+        "name": "switch external-key",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name == 'external-key'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1328.0000228881836,

+        "y": 554.9642696380615,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "e7102f7d.d31b6"

+            ]

+        ]

+    },

+    {

+        "id": "e7102f7d.d31b6",

+        "type": "not-found",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1512.0000228881836,

+        "y": 554.9642696380615,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "21846577.931eda"

+            ]

+        ]

+    },

+    {

+        "id": "7281ab1.108d054",

+        "type": "execute",

+        "name": "execute RestApiCallNode - DELETE gen-name",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >    \n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />\n    <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />\n    <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"nameGenResponse\" />\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1168.8928527832031,

+        "y": 931.5714855194092,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "91a5a0b9.28b1d",

+                "ffa6ef8.c99991"

+            ]

+        ]

+    },

+    {

+        "id": "7190fc5.2e53204",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"BEFORE namegeneration.node.UnAssignNameNode\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1041.25,

+        "y": 865,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b700fe4f.6ea67",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"AFTER namegeneration.node.UnAssignNameNode\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1037.916763305664,

+        "y": 1015.0000152587891,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "de5ed672.9504b8",

+        "type": "switchNode",

+        "name": "switch resource-name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].name == $jsonContextPrefix.elements[$n].resource-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1333.7500228881836,

+        "y": 1203.7500171661377,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "6f5ecb0e.d83724"

+            ]

+        ]

+    },

+    {

+        "id": "6f5ecb0e.d83724",

+        "type": "not-found",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1525.7500228881836,

+        "y": 1202.7500171661377,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "1a582734.1c4b39"

+            ]

+        ]

+    },

+    {

+        "id": "1a582734.1c4b39",

+        "type": "set",

+        "name": "set set payload data",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].value`' value=\"`$jsonContextPrefix.elements[$n].resource-value`\" />\n",

+        "comments": "",

+        "x": 1712.2500228881836,

+        "y": 1202.7500171661377,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "4b9fd950.22bda8",

+        "type": "for",

+        "name": "for response elements",

+        "xml": "<for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1085.750015258789,

+        "y": 1202.7500095367432,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "de5ed672.9504b8"

+            ]

+        ]

+    },

+    {

+        "id": "82081d21.8af89",

+        "type": "set",

+        "name": "set status as DELETED",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.status`' value='DELETED' />",

+        "comments": "",

+        "x": 1085.7499923706055,

+        "y": 1147.9999923706055,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "46d41de0.7a0cc4",

+        "type": "execute",

+        "name": "execute replace extra comma",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>\n   <parameter name='outputPath' value='tmp.naming-data-payload' />\n   <parameter name='source' value='`$tmp.naming-data-payload`' />\n   <parameter name='target' value=',}' />\n   <parameter name='replacement' value='}' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1173.166519165039,

+        "y": 1980.0000286102295,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "200ba840.7f1278",

+        "type": "for",

+        "name": "for vnf-parameters-data",

+        "xml": "<for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1770.6665344238281,

+        "y": 1590.2500267028809,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "1a217f86.3ebd2"

+            ]

+        ]

+    },

+    {

+        "id": "1a217f86.3ebd2",

+        "type": "set",

+        "name": "set payload data",

+        "xml": "<set>\n<parameter name=\"tmp.naming-data-payload\" value=\"`$tmp.naming-data-payload + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`\"/>\n<parameter name=\"`tmp.gen-name[$tmp.gen-name_length].element[$j].name`\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name`\"/>\n<parameter name=\"`tmp.gen-name[$tmp.gen-name_length].element[$j].value`\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`\"/>\n<parameter name=\"`tmp.gen-name[$tmp.gen-name_length].element_length`\" value='`$j + 1`' />",

+        "comments": "",

+        "x": 2023.1665344238281,

+        "y": 1590.2500267028809,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "c73e069c.8a2e28",

+        "type": "set",

+        "name": "set payload data",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + '{'`\" />\n",

+        "comments": "",

+        "x": 1751.5950012207031,

+        "y": 1528.964443206787,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "10b3ff3c.77cba1",

+        "type": "set",

+        "name": "set payload data",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + '},'`\" />\n<parameter name='tmp.gen-name_length' value='`$tmp.gen-name_length + 1`' />",

+        "comments": "",

+        "x": 1753.1665344238281,

+        "y": 1646.2500267028809,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "f44eb178.31eaa",

+        "type": "set",

+        "name": "set close payload list",

+        "xml": "<set>\n<parameter name='tmp.naming-data-payload' value=\"`$tmp.naming-data-payload + ']}'`\" />",

+        "comments": "",

+        "x": 1148.166519165039,

+        "y": 1936.9999675750732,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "2368778a.9a1ae8",

+        "type": "execute",

+        "name": "execute replace extra comma",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>\n   <parameter name='outputPath' value='tmp.naming-data-payload' />\n   <parameter name='source' value='`$tmp.naming-data-payload`' />\n   <parameter name='target' value=',]' />\n   <parameter name='replacement' value=']' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1174.166519165039,

+        "y": 2031.0000286102295,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "25410bf3.d5fd84",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1516.416648864746,

+        "y": 2150.000274658203,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "d82a7d30.19ff5"

+            ]

+        ]

+    },

+    {

+        "id": "338c365d.e7c04a",

+        "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 from NameGenerationNode Assign\" />\n",

+        "comments": "",

+        "x": 1881.4166412353516,

+        "y": 2247.5002765655518,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "5ff247d0.61e018",

+        "type": "failure",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1521.4166412353516,

+        "y": 2246.5002765655518,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "d82a7d30.19ff5"

+            ]

+        ]

+    },

+    {

+        "id": "d82a7d30.19ff5",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1679.4166412353516,

+        "y": 2191.5002765655518,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "e3f624d0.095ed8",

+                "338c365d.e7c04a"

+            ]

+        ]

+    },

+    {

+        "id": "e3f624d0.095ed8",

+        "type": "set",

+        "name": "set status as FAILED",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />",

+        "comments": "",

+        "x": 1895.4166412353516,

+        "y": 2138.5002765655518,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "9337d2c9.9435b",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"jsonStringToCtx\">\n\t<parameter name=\"source\" value=\"nameGenResponse.httpResponse\" />\n\t<parameter name=\"outputPath\" value=\"jsonContextPrefix\" />\n\t<parameter name=\"isEscaped\" value=\"false\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1160.166519165039,

+        "y": 2380.000036239624,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "49ed3077.f85e7",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1532.0595932006836,

+        "y": 1591.0356693267822,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "c73e069c.8a2e28",

+                "200ba840.7f1278",

+                "10b3ff3c.77cba1"

+            ]

+        ]

+    },

+    {

+        "id": "f4b8a1b1.39296",

+        "type": "for",

+        "name": "for vnf-parameters-data",

+        "xml": "<for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 945.9644927978516,

+        "y": 1591.2503910064697,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "bc8d77f9.febd58"

+            ]

+        ]

+    },

+    {

+        "id": "bc8d77f9.febd58",

+        "type": "switchNode",

+        "name": "switch capability-name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1187.571548461914,

+        "y": 1591.2503910064697,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "aa52a53d.d90d78"

+            ]

+        ]

+    },

+    {

+        "id": "aa52a53d.d90d78",

+        "type": "not-found",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1368.285903930664,

+        "y": 1591.2503910064697,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "49ed3077.f85e7"

+            ]

+        ]

+    },

+    {

+        "id": "c78ccdba.af20a",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 686.2500076293945,

+        "y": 1514.155053138733,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "f4b8a1b1.39296",

+                "f39b937c.aa4b9",

+                "7a858a5e.cd7834"

+            ]

+        ]

+    },

+    {

+        "id": "f39b937c.aa4b9",

+        "type": "switchNode",

+        "name": "switch tmp.naming-data-payload is null",

+        "xml": "<switch test=\"`$tmp.naming-data-payload == ''`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 995.7500152587891,

+        "y": 1714.1550579071045,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "62b243b0.214edc"

+            ]

+        ]

+    },

+    {

+        "id": "62b243b0.214edc",

+        "type": "not-found",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1232.750015258789,

+        "y": 1715.1550579071045,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "5e87a197.3645b"

+            ]

+        ]

+    },

+    {

+        "id": "5e87a197.3645b",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 909.5000152587891,

+        "y": 1936.9050579071045,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "f44eb178.31eaa",

+                "46d41de0.7a0cc4",

+                "2368778a.9a1ae8",

+                "9337d2c9.9435b",

+                "570d2cbf.e15644",

+                "3bb91c6d.095be4",

+                "af9341c5.9475e",

+                "55954cc9.700ec4"

+            ]

+        ]

+    },

+    {

+        "id": "570d2cbf.e15644",

+        "type": "execute",

+        "name": "execute RestApiCallNode - POST gen-name",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >    \n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />\n    <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />\n    <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name=\"responsePrefix\" value=\"nameGenResponse\" />\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1220.8929595947266,

+        "y": 2191.8337726593018,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "25410bf3.d5fd84",

+                "5ff247d0.61e018"

+            ]

+        ]

+    },

+    {

+        "id": "3bb91c6d.095be4",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"BEFORE namegeneration.node.AssignNameNode\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1096.25,

+        "y": 2101.25,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "af9341c5.9475e",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"AFTER namegeneration.node.AssignNameNode\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1097.9166412353516,

+        "y": 2306.2500343322754,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2879ca51.fb1d86",

+        "type": "for",

+        "name": "for vnf-parameters-data",

+        "xml": "<for index='l' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1401.9403228759766,

+        "y": 2460.083044052124,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "b4bf8116.4b95f"

+            ]

+        ]

+    },

+    {

+        "id": "55954cc9.700ec4",

+        "type": "for",

+        "name": "for response elements",

+        "xml": "<for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1154.9403228759766,

+        "y": 2459.083044052124,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "2879ca51.fb1d86"

+            ]

+        ]

+    },

+    {

+        "id": "b4bf8116.4b95f",

+        "type": "switchNode",

+        "name": "switch resource-name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$l].name == $jsonContextPrefix.elements[$n].resource-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1649.0355758666992,

+        "y": 2459.845019161701,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "314e7b92.2eb284"

+            ]

+        ]

+    },

+    {

+        "id": "b64275d.5c7fb88",

+        "type": "set",

+        "name": "set param value and status",

+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$l].value`' value=\"`$jsonContextPrefix.elements[$n].resource-value`\" />\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$l].resource-resolution-data.status`' value='SUCCESS' />",

+        "comments": "",

+        "x": 2036.5594940185547,

+        "y": 2458.5723484158516,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    },

+    {

+        "id": "314e7b92.2eb284",

+        "type": "not-found",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1833.3211784362793,

+        "y": 2459.416481792927,

+        "z": "d9ed52e6.dc44c",

+        "wires": [

+            [

+                "b64275d.5c7fb88"

+            ]

+        ]

+    },

+    {

+        "id": "19085dd6.206392",

+        "type": "set",

+        "name": "set pathname for context logging",

+        "xml": "<set>\n<parameter name='pathname' \n\tvalue=\"`'/var/tmp/ss-gen-name-' + \n\t$ss.capability-type + '-' + $ss.capability-action + '-' + \n\t$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.vnf-id + '.log'`\" />\n",

+        "comments": "",

+        "x": 537.5000152587891,

+        "y": 172.50000286102295,

+        "z": "d9ed52e6.dc44c",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-mdsal-put.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-mdsal-put.json
new file mode 100644
index 0000000..2124ccf
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-mdsal-put.json
@@ -0,0 +1,169 @@
+[

+    {

+        "id": "56afbbe7.ef1b04",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 192.8720245361328,

+        "y": 121.44345092773438,

+        "z": "3ce368a2.78f878",

+        "wires": [

+            [

+                "4cb200e9.a9147"

+            ]

+        ]

+    },

+    {

+        "id": "1e0bb80b.2c8618",

+        "type": "method",

+        "name": "method self-serve-vnf-mdsal-put",

+        "xml": "<method rpc='self-serve-vnf-mdsal-put' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 340.7410888671875,

+        "y": 213.29266166687012,

+        "z": "3ce368a2.78f878",

+        "wires": [

+            [

+                "54b0d2ab.4cd77c"

+            ]

+        ]

+    },

+    {

+        "id": "4cb200e9.a9147",

+        "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": 455.11022186279297,

+        "y": 121.63394355773926,

+        "z": "3ce368a2.78f878",

+        "wires": [

+            [

+                "1e0bb80b.2c8618"

+            ]

+        ]

+    },

+    {

+        "id": "54b0d2ab.4cd77c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 593.7769775390625,

+        "y": 394.4038600921631,

+        "z": "3ce368a2.78f878",

+        "wires": [

+            [

+                "fc67bb15.636f18",

+                "ed1a2851.984f28",

+                "5dff0dd.b9c11f4",

+                "f0753190.147fa"

+            ]

+        ]

+    },

+    {

+        "id": "ed1a2851.984f28",

+        "type": "execute",

+        "name": "generate ss-vnf url replace service-instance-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.ss-vnf-assignments`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-vnf-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.service-instance-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 952.8243865966797,

+        "y": 353.6346740722656,

+        "z": "3ce368a2.78f878",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f0753190.147fa",

+        "type": "execute",

+        "name": "execute RestApiCallNode - PUT vnf",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.ss.vnf.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-vnf-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ss-vnf\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 908.0029144287109,

+        "y": 542.2061910629272,

+        "z": "3ce368a2.78f878",

+        "wires": [

+            [

+                "f8cd63cc.a44ab",

+                "843810fe.b2d4e"

+            ]

+        ]

+    },

+    {

+        "id": "f8cd63cc.a44ab",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1185.453758239746,

+        "y": 569.0614757537842,

+        "z": "3ce368a2.78f878",

+        "wires": [

+            [

+                "b45b5260.c22ef"

+            ]

+        ]

+    },

+    {

+        "id": "843810fe.b2d4e",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1177.8823928833008,

+        "y": 515.5614957809448,

+        "z": "3ce368a2.78f878",

+        "wires": [

+            [

+                "b45b5260.c22ef"

+            ]

+        ]

+    },

+    {

+        "id": "fc67bb15.636f18",

+        "type": "set",

+        "name": "set vf data for restapi-call-node",

+        "xml": "<set>\n<parameter name='vf.vnf-id'\n    value='`$service-data.vnfs.vnf[$vnf-index].vnf-id`' />\n<parameter name='vf.vnf-data.sdnc-request-header.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.`' />\n<parameter name='vf.vnf-data.request-information.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.`' />\n<parameter name='vf.vnf-data.service-information.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.`' />\n<parameter name='vf.vnf-data.vnf-information.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.`' />\n<parameter name='vf.vnf-data.vnf-topology.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.`' />\n<parameter name='vf.vnf-data.vnf-level-oper-status.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.`' />\n<parameter name='vf.vnf-data.vnf-request-input.vnf-input-parameters.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.`' />\n<parameter name='vf.vnf-data.vnf-request-input.request-version'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.request-version`' />\n<parameter name='vf.vnf-data.vnf-request-input.vnf-name'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-name`' />\n<parameter name='vf.vnf-data.vnf-request-input.tenant'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.tenant`' />\n<parameter name='vf.vnf-data.vnf-request-input.aic-cloud-region'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.aic-cloud-region`' />\n<parameter name='vf.vnf-data.vnf-request-input.aic-clli'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.aic-clli`' />",

+        "comments": "",

+        "x": 902.4194869995117,

+        "y": 284.01490211486816,

+        "z": "3ce368a2.78f878",

+        "wires": []

+    },

+    {

+        "id": "5dff0dd.b9c11f4",

+        "type": "execute",

+        "name": "generate ss-vnf url - replace vnf-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ss-vnf-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-vnf-url\"/>\n    <parameter name=\"target\" value=\"{vnf-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 911.3957901000977,

+        "y": 438.7291421890259,

+        "z": "3ce368a2.78f878",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b45b5260.c22ef",

+        "type": "set",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Failed to persist self-serve vnf assignments during assign in MD-SAL. ' + $error-message`\" />",

+        "comments": "",

+        "x": 1397.8007164001465,

+        "y": 514.4315023422241,

+        "z": "3ce368a2.78f878",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-ra-assignment.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-ra-assignment.json
new file mode 100644
index 0000000..61c880f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-ra-assignment.json
@@ -0,0 +1,1086 @@
+[
+    {
+        "id": "1e918461.063a3c",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 125,
+        "y": 42,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "7b65fd49.93ba14"
+            ]
+        ]
+    },
+    {
+        "id": "7b65fd49.93ba14",
+        "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": 401,
+        "y": 43,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "96f203b4.cb4d1"
+            ]
+        ]
+    },
+    {
+        "id": "96f203b4.cb4d1",
+        "type": "method",
+        "name": "self-serve-vnf-ra-assignment",
+        "xml": "<method rpc='self-serve-vnf-ra-assignment' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 718,
+        "y": 43,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "38f3f9c9.28a466"
+            ]
+        ]
+    },
+    {
+        "id": "38f3f9c9.28a466",
+        "type": "block",
+        "name": "block atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 214.16664123535156,
+        "y": 123.33333396911621,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "5a42798d.9a03d8",
+                "94e52d4.07895d",
+                "f709c437.029758",
+                "ef8d7a.8b1ad288",
+                "bdb13e3c.e9de2",
+                "dd0c4879.786768",
+                "654c303d.bc966",
+                "41ae2337.afe27c",
+                "8e50b155.95aaa",
+                "4b3da748.094068",
+                "72e48172.d53ce",
+                "4471abbd.a27dc4",
+                "40bf0919.577208",
+                "fa837cb4.36bad",
+                "c9addd0a.302f8",
+                "d351ac36.10e8b"
+            ]
+        ]
+    },
+    {
+        "id": "94e52d4.07895d",
+        "type": "set",
+        "name": "set",
+        "xml": "<set>\n   <parameter name=\"cds\" value=\"execution-service_process.\"/>\n   <parameter name=\"`$cds + 'commonHeader.requestId'`\" value=\"`$tmp.return.generate.vnf-se-serv-uuid`\"/>\n   <parameter name=\"resource-type\" value=\"`$vnf-topology-operation-input.vnf-information.vnf-type`\" />  \n   <parameter name=\"`$cds + 'commonHeader.subRequestId'`\" value=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\" />   \n   <parameter name=\"`$cds + 'actionIdentifiers.actionName'`\" value=\"resource-assignment\"/> \n   <parameter name=\"responsePrefix\" value=\"raAssign\" />\n   <parameter name=\"`$cds + 'isNonAppend'`\" value=\"true\"/>\n   <parameter name=\"`$cds + 'commonHeader.originatorId'`\" value=\"SDNC_DG\"/>\n   <parameter name=\"`$cds + 'actionIdentifiers.mode'`\" value=\"sync\"/>\n",
+        "comments": "",
+        "x": 399.9166603088379,
+        "y": 168.08333015441895,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "1f52d973.dc6427",
+        "type": "get-resource",
+        "name": "get-resource VF_MODEL",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'\n  pfx='db1.vf-model'>\n  \n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 938.8094635009766,
+        "y": 559.6189861297607,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "ef8bd7bf.770928",
+                "785d91f7.04973",
+                "7c972f3e.f0f83"
+            ]
+        ]
+    },
+    {
+        "id": "ef8bd7bf.770928",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1183.8095626831055,
+        "y": 508.904709815979,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "a279ec52.aab4c"
+            ]
+        ]
+    },
+    {
+        "id": "a279ec52.aab4c",
+        "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 reading VF_MODULE_MODEL table\" />\n",
+        "comments": "",
+        "x": 1356.8095626831055,
+        "y": 507.904709815979,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "a6be3be4.1bdc08",
+        "type": "set",
+        "name": "set tmp.sdnc-model-name, tmp.sdnc-model-version, tmp.sdnc-artifact-name",
+        "xml": "<set>\n<parameter name='tmp.sdnc-model-name' value='`$db1.vf-model.sdnc-model-name`' />\n<parameter name='tmp.sdnc-model-version' value='`$db1.vf-model.sdnc-model-version`' />\n<parameter name='tmp.sdnc-artifact-name' value='`$db1.vf-model.sdnc-artifact-name`' />\n\n\n\n\n",
+        "comments": "",
+        "x": 1559.2380638122559,
+        "y": 609.047513961792,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "46a2ef10.633e8",
+        "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 reading VF_MODULE_MODEL table\" />\n",
+        "comments": "",
+        "x": 1358.8095626831055,
+        "y": 556.904709815979,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "bdb13e3c.e9de2",
+        "type": "switchNode",
+        "name": "switch: model info == NULL",
+        "xml": "<switch test=\"`$tmp.sdnc-model-name == '' or $tmp.sdnc-model-version == '' or $tmp.sdnc-artifact-name == ''`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 459.80946350097656,
+        "y": 560.6189861297607,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "25045ee0.e3d5c2"
+            ]
+        ]
+    },
+    {
+        "id": "785d91f7.04973",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1189.8095626831055,
+        "y": 557.904709815979,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "46a2ef10.633e8"
+            ]
+        ]
+    },
+    {
+        "id": "25045ee0.e3d5c2",
+        "type": "outcome",
+        "name": "true",
+        "xml": "<outcome value='true'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 708.8094635009766,
+        "y": 560.6189861297607,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "1f52d973.dc6427"
+            ]
+        ]
+    },
+    {
+        "id": "ef8d7a.8b1ad288",
+        "type": "for",
+        "name": "for vnf-topology-operation-input",
+        "xml": "<for silentFailure='true' index='i' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 475.66664123535156,
+        "y": 360.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "51f6fdb.4dce504"
+            ]
+        ]
+    },
+    {
+        "id": "51f6fdb.4dce504",
+        "type": "block",
+        "name": "block atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 697.6666412353516,
+        "y": 359.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "58dbc6ed.e4fb78"
+            ]
+        ]
+    },
+    {
+        "id": "3eef3f7d.acf9e",
+        "type": "set",
+        "name": "set tmp.sdnc-model-name",
+        "xml": "<set>\n<parameter name='tmp.sdnc-model-name' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].value`' />\n",
+        "comments": "",
+        "x": 1348.6666412353516,
+        "y": 292.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "28936220.7676ce",
+        "type": "outcome",
+        "name": "sdnc_model_name",
+        "xml": "<outcome value='sdnc_model_name'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1094.6666412353516,
+        "y": 292.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "3eef3f7d.acf9e"
+            ]
+        ]
+    },
+    {
+        "id": "58dbc6ed.e4fb78",
+        "type": "switchNode",
+        "name": "switch",
+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].name`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 856.6666412353516,
+        "y": 359.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "28936220.7676ce",
+                "41a51be4.e2de84",
+                "97a885a0.8b08e8",
+                "95df12c3.3ce8e"
+            ]
+        ]
+    },
+    {
+        "id": "41a51be4.e2de84",
+        "type": "outcome",
+        "name": "sdnc_model_version",
+        "xml": "<outcome value='sdnc_model_version'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1097.6666412353516,
+        "y": 338.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "50619bed.59bcf4"
+            ]
+        ]
+    },
+    {
+        "id": "97a885a0.8b08e8",
+        "type": "outcome",
+        "name": "sdnc_artifact_name",
+        "xml": "<outcome value='sdnc_artifact_name'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1096.6666412353516,
+        "y": 387.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "82133366.c0bff"
+            ]
+        ]
+    },
+    {
+        "id": "50619bed.59bcf4",
+        "type": "set",
+        "name": "set tmp.sdnc-model-version",
+        "xml": "<set>\n<parameter name='tmp.sdnc-model-version' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].value`' />\n\n",
+        "comments": "",
+        "x": 1352.6666412353516,
+        "y": 338.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "82133366.c0bff",
+        "type": "set",
+        "name": "set tmp.sdnc-artifact-name",
+        "xml": "<set>\n<parameter name='tmp.sdnc-artifact-name' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].value`' />\n\n",
+        "comments": "",
+        "x": 1348.6666412353516,
+        "y": 387.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "77c6656f.94e17c",
+        "type": "set",
+        "name": "set name-value other JsonString",
+        "xml": "<set>\n<parameter name=\"tmp.config-name-value-other-payload\" value=\"`$tmp.config-name-value-other-payload + '&quot;' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].name + '&quot;:&quot;' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].value + '&quot;,'`\"/>\n\n",
+        "comments": "",
+        "x": 1364.6666412353516,
+        "y": 436.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "95df12c3.3ce8e",
+        "type": "outcome",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1056.666648864746,
+        "y": 436.9047546386719,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "77c6656f.94e17c"
+            ]
+        ]
+    },
+    {
+        "id": "dd0c4879.786768",
+        "type": "set",
+        "name": "set configAssignment JsonString",
+        "xml": "<set>\n<parameter name=\"tmp.config-name-value-payload4\" value=\"`$tmp.config-name-value-other-payload + '&quot;service-instance-id&quot;:&quot;' + $vnf-topology-operation-input.service-information.service-instance-id   + '&quot;,'`\"/>\n<parameter name=\"tmp.config-name-value-payload5\" value=\"`$tmp.config-name-value-payload4 + '&quot;vnf-model-customization-uuid&quot;:&quot;' + $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid + '&quot;,'`\"/>\n<parameter name=\"tmp.config-name-value-payload6\" value=\"`$tmp.config-name-value-payload5 + '&quot;vnf-id&quot;:&quot;' + $vnf-topology-operation-input.vnf-information.vnf-id + '&quot;,'`\"/>\n<parameter name=\"tmp.config-name-value-payload7\" value=\"`$tmp.config-name-value-payload6 + '&quot;aic-cloud-region&quot;:&quot;' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region + '&quot;'`\"/>\n",
+        "comments": "",
+        "x": 470,
+        "y": 620,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "654c303d.bc966",
+        "type": "execute",
+        "name": "execute BlueprintProcessingClient",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value=\"`$prop.cds.url + '/api/v1/execution-service/process'`\" />\n    <parameter name='restapiUser' value='`$prop.cds.user`' />\n    <parameter name='restapiPassword' value='`$prop.cds.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name='dirPath' value=\"/opt/onap/sdnc/restconfapi/yang\" />\n    <parameter name=\"responsePrefix\" value=\"`$responsePrefix`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 477.33331298828125,
+        "y": 834,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "d37d9ea0.c12ad",
+                "e8698b70.c431d8"
+            ]
+        ]
+    },
+    {
+        "id": "d37d9ea0.c12ad",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 717.3333129882812,
+        "y": 808,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "cb6982c3.5d096"
+            ]
+        ]
+    },
+    {
+        "id": "cb6982c3.5d096",
+        "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 from ConfigAssignmentNode\" />\n",
+        "comments": "",
+        "x": 899.3333129882812,
+        "y": 829,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "8e50b155.95aaa",
+        "type": "for",
+        "name": "for resource-accumulator-resolved-data loop",
+        "xml": "<for silentFailure='true'  index='i' start='0' end='`$jsonContextPrefix.resource-accumulator-resolved-data_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 501.66664123535156,
+        "y": 1051.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "76ae92fe.97658c"
+            ]
+        ]
+    },
+    {
+        "id": "edaf4d66.0e603",
+        "type": "set",
+        "name": "set from resource-accumulator-resolved-data",
+        "xml": "<set>\n\t<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].name`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'/>\n\t<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>\n\t<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.capability-name`' value='RA Resolved'/>\n\t<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.status`' value='SUCCESS'/>\n",
+        "comments": "",
+        "x": 1731.6666412353516,
+        "y": 1103.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "4b3da748.094068",
+        "type": "for",
+        "name": "for capability-data",
+        "xml": "<for silentFailure='true' index='i' start='0' end='`$jsonContextPrefix.capability-data_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 426.66664123535156,
+        "y": 1393.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "afcca100.08442"
+            ]
+        ]
+    },
+    {
+        "id": "afcca100.08442",
+        "type": "for",
+        "name": "for key-mapping",
+        "xml": "<for silentFailure='true' index='j' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping_length`' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 635.6666412353516,
+        "y": 1393.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "f22e79d3.9fa598"
+            ]
+        ]
+    },
+    {
+        "id": "41ae2337.afe27c",
+        "type": "execute",
+        "name": "execute jsonStringToCtx",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"jsonStringToCtx\">\n\t<parameter name=\"source\" value=\"`'raAssign.payload.resource-assignment-response.meshed-template.' + $tmp.sdnc-artifact-name`\" />\n\t<parameter name=\"outputPath\" value=\"jsonContextPrefix\" />\n\t<parameter name=\"isEscaped\" value=\"false\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 445.66664123535156,
+        "y": 972.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5a42798d.9a03d8",
+        "type": "execute",
+        "name": "execute generateUUID",
+        "xml": " <execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" > \n <parameter name=\"ctx-destination\" value=\"tmp.return.generate.vnf-se-serv-uuid\" /> \n ",
+        "comments": "",
+        "outputs": 1,
+        "x": 451.66664123535156,
+        "y": 123.33333396911621,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "90850917.831e78"
+            ]
+        ]
+    },
+    {
+        "id": "90850917.831e78",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 629.6666412353516,
+        "y": 121.33333396911621,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "5b293973.a44fd8"
+            ]
+        ]
+    },
+    {
+        "id": "5b293973.a44fd8",
+        "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=\"generateUUID is failed\" />\n",
+        "comments": "",
+        "x": 776.6666412353516,
+        "y": 122.33333396911621,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "55dc72e4.040a6c",
+        "type": "for",
+        "name": "for vnf-parameters-data.param",
+        "xml": "<for silentFailure='true' index='cnt' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1474.6666412353516,
+        "y": 1051.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "ef8bc14b.ccbff"
+            ]
+        ]
+    },
+    {
+        "id": "76ae92fe.97658c",
+        "type": "block",
+        "name": "block atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 780.6666412353516,
+        "y": 1052.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "824fa75d.391fc8",
+                "2c5ebadc.773bc6",
+                "f84c1bca.bb7958"
+            ]
+        ]
+    },
+    {
+        "id": "f709c437.029758",
+        "type": "switchNode",
+        "name": "switch vnf-parameters-data.param_length",
+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 503.66664123535156,
+        "y": 221.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "23708a8a.213166",
+                "80282891.85c258"
+            ]
+        ]
+    },
+    {
+        "id": "23708a8a.213166",
+        "type": "outcome",
+        "name": "null",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 741.6666412353516,
+        "y": 189.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "dc5b10f3.283cb"
+            ]
+        ]
+    },
+    {
+        "id": "80282891.85c258",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 740.6666412353516,
+        "y": 253.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "9174046b.b8b7d8"
+            ]
+        ]
+    },
+    {
+        "id": "dc5b10f3.283cb",
+        "type": "set",
+        "name": "set pre service param len as 0",
+        "xml": "<set>\n   <parameter name='highnum' value='0' />\n   <parameter name='prehighnum' value='0'/>\n",
+        "comments": "",
+        "x": 954.6666412353516,
+        "y": 189.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "9174046b.b8b7d8",
+        "type": "set",
+        "name": "set pre service param len",
+        "xml": "<set>\n   <parameter name='highnum' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' />\n   <parameter name='prehighnum' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' />",
+        "comments": "",
+        "x": 939.6666412353516,
+        "y": 253.3333339691162,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "ef8bc14b.ccbff",
+        "type": "switchNode",
+        "name": "switch input vnf-name",
+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$cnt].name == $jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1732.6666412353516,
+        "y": 1051.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "ee6ccc97.25efa"
+            ]
+        ]
+    },
+    {
+        "id": "ee6ccc97.25efa",
+        "type": "not-found",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1912.6666412353516,
+        "y": 1051.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "ed52e9db.e0c808"
+            ]
+        ]
+    },
+    {
+        "id": "ed52e9db.e0c808",
+        "type": "set",
+        "name": "set for existing param name",
+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$cnt].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>\n<parameter name='tmp.mso.param.found' value='true' />\n",
+        "comments": "",
+        "x": 2122.6666412353516,
+        "y": 1052.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "f84c1bca.bb7958",
+        "type": "switchNode",
+        "name": "switch tmp.mso.param.not-found",
+        "xml": "<switch test='`$tmp.mso.param.found`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1022.6666412353516,
+        "y": 1104.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "eb181e3d.05137"
+            ]
+        ]
+    },
+    {
+        "id": "eb181e3d.05137",
+        "type": "not-found",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1256.6666412353516,
+        "y": 1103.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "f72b62.fb42f4a"
+            ]
+        ]
+    },
+    {
+        "id": "824fa75d.391fc8",
+        "type": "set",
+        "name": "set for existing param name",
+        "xml": "<set>\n<parameter name='tmp.mso.param.found' value='false' />\n",
+        "comments": "",
+        "x": 1006.6666412353516,
+        "y": 993.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "2c5ebadc.773bc6",
+        "type": "switchNode",
+        "name": "switch check length > 0",
+        "xml": "<switch test='`$prehighnum &gt; 0`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 999.1666412353516,
+        "y": 1052.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "6aca2d7e.39e184"
+            ]
+        ]
+    },
+    {
+        "id": "6aca2d7e.39e184",
+        "type": "not-found",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1246.1666412353516,
+        "y": 1052.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "55dc72e4.040a6c"
+            ]
+        ]
+    },
+    {
+        "id": "32788be4.48e304",
+        "type": "for",
+        "name": "for payload",
+        "xml": "<for silentFailure='true' index='k' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length`' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1817.6666412353516,
+        "y": 1411.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "52ca6e98.bf065"
+            ]
+        ]
+    },
+    {
+        "id": "778c089.bfab7f8",
+        "type": "set",
+        "name": "set resource-key",
+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.resource-key[$num].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-name`'/>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.resource-key[$num].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-value`'/>\n\n",
+        "comments": "",
+        "x": 2166.6666412353516,
+        "y": 1347.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "1eb3f359.e179fd",
+        "type": "set",
+        "name": "set output-data ",
+        "xml": "<set>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-name`'/>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-value`'/>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.capability-name`' value='`$jsonContextPrefix.capability-data[$i].capability-name`'/>\n<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.status`' value='PENDING'/>\n<parameter name='num' value='0' />",
+        "comments": "",
+        "x": 1390.6666412353516,
+        "y": 1291.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "f22e79d3.9fa598",
+        "type": "for",
+        "name": "for output-key-mapping",
+        "xml": "<for silentFailure='true' index='l' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping_length`' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 858.6666412353516,
+        "y": 1393.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "b6e3c033.d365e"
+            ]
+        ]
+    },
+    {
+        "id": "b6e3c033.d365e",
+        "type": "block",
+        "name": "block atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1109.6666412353516,
+        "y": 1393.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "1eb3f359.e179fd",
+                "c8871600.cda7b8",
+                "31cafe60.c858c2",
+                "d883e8b5.c87cd8"
+            ]
+        ]
+    },
+    {
+        "id": "c8871600.cda7b8",
+        "type": "set",
+        "name": "set length",
+        "xml": "<set>\n\t<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' value='`$highnum + 1`'/>\n",
+        "comments": "",
+        "x": 1378.6666412353516,
+        "y": 1429.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "e8698b70.c431d8",
+        "type": "failure",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 722.3333129882812,
+        "y": 870,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "cb6982c3.5d096"
+            ]
+        ]
+    },
+    {
+        "id": "31cafe60.c858c2",
+        "type": "switchNode",
+        "name": "switch payload_length",
+        "xml": "<switch test=\"`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length == ''`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1414.6666412353516,
+        "y": 1362.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "35a0c321.c01b8c",
+                "4c60a062.02cd4"
+            ]
+        ]
+    },
+    {
+        "id": "35a0c321.c01b8c",
+        "type": "outcome",
+        "name": "true",
+        "xml": "<outcome value='true'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1635.6666412353516,
+        "y": 1293.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4c60a062.02cd4",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1642.6666412353516,
+        "y": 1411.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "32788be4.48e304"
+            ]
+        ]
+    },
+    {
+        "id": "7c972f3e.f0f83",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1185.9523658752441,
+        "y": 608.9046821594238,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "a6be3be4.1bdc08"
+            ]
+        ]
+    },
+    {
+        "id": "b887f515.962a38",
+        "type": "set",
+        "name": "set length",
+        "xml": "<set>\n\t<parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.resource-key_length`' value='`$num + 1`'/>\n",
+        "comments": "",
+        "x": 2155.6666412353516,
+        "y": 1411.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "30950fde.196f6",
+        "type": "set",
+        "name": "increment length",
+        "xml": "<set>\n\t<parameter name='num' value='`$num + 1`' />\n",
+        "comments": "",
+        "x": 2173.6666412353516,
+        "y": 1485.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "d883e8b5.c87cd8",
+        "type": "set",
+        "name": "increment length",
+        "xml": "<set>\n\t<parameter name='highnum' value='`$highnum + 1`' />\n\n",
+        "comments": "",
+        "x": 1399.6666412353516,
+        "y": 1496.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "f72b62.fb42f4a",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1433.6666412353516,
+        "y": 1102.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "edaf4d66.0e603",
+                "aba36cfb.938af"
+            ]
+        ]
+    },
+    {
+        "id": "aba36cfb.938af",
+        "type": "set",
+        "name": "increment length",
+        "xml": "<set>\n\t<parameter name='highnum' value='`$highnum + 1`' />\n",
+        "comments": "",
+        "x": 1648.6666412353516,
+        "y": 1162.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "52ca6e98.bf065",
+        "type": "block",
+        "name": "block atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1973.6666412353516,
+        "y": 1412.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            [
+                "778c089.bfab7f8",
+                "b887f515.962a38",
+                "30950fde.196f6"
+            ]
+        ]
+    },
+    {
+        "id": "72e48172.d53ce",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"BEFORE BlueprintProcessingClient\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 399.9999809265137,
+        "y": 755.333324432373,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4471abbd.a27dc4",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"AFTER BlueprintProcessingClient\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 396.6666488647461,
+        "y": 910.3333320617676,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "fa837cb4.36bad",
+        "type": "execute",
+        "name": "printContext",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='`$pathname`' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 405.00000762939453,
+        "y": 1714.5000267028809,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "40bf0919.577208",
+        "type": "set",
+        "name": "set pathname",
+        "xml": "<set>\n<parameter name='pathname' \n\tvalue=\"`'/var/tmp/ss-vnf-ra-assignment-' + \n\t$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.vnf-id + '.log'`\" />\n",
+        "comments": "",
+        "x": 411.25000762939453,
+        "y": 1662.0000247955322,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    },
+    {
+        "id": "c9addd0a.302f8",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"DONE: vnf-ra-assignment\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 388.75000381469727,
+        "y": 1615.7500247955322,
+        "z": "3ef876bf.78b1fa",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d351ac36.10e8b",
+        "type": "set",
+        "name": "set updateJsonPayload",
+        "xml": "<set>\n<parameter name=\"tmp.json-payload\" value=\"`'{' + $tmp.config-name-value-payload7 + '}'`\" />\n<parameter name=\"`$cds + 'actionIdentifiers.blueprintName'`\" value='`$tmp.sdnc-model-name`' />\n<parameter name=\"`$cds + 'actionIdentifiers.blueprintVersion'`\" value='`$tmp.sdnc-model-version`' />\n<parameter name=\"`$cds + 'payload.resource-assignment-request.template-prefix[0]'`\" value='`$tmp.sdnc-artifact-name`' />\n<parameter name=\"`$cds + 'payload.resource-assignment-request.resource-assignment-properties'`\" value='`$tmp.json-payload`' />",
+        "comments": "",
+        "x": 441,
+        "y": 680,
+        "z": "3ef876bf.78b1fa",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-unassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-unassign.json
new file mode 100644
index 0000000..6b5b878
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-vnf-unassign.json
@@ -0,0 +1,570 @@
+[

+    {

+        "id": "c5b593f.de0997",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 161.42857360839844,

+        "y": 48.57143020629883,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "61eab8c6.809638"

+            ]

+        ]

+    },

+    {

+        "id": "476ba12e.72d0b",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 205.15477752685547,

+        "y": 167.3492202758789,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "52ececda.9e0f84",

+                "716b81a4.0f5df",

+                "138a6bf3.2831e4",

+                "434ab0d7.7891",

+                "af88c68d.542008"

+            ]

+        ]

+    },

+    {

+        "id": "f111d369.224dc",

+        "type": "method",

+        "name": "method self-serve-vnf-unassign",

+        "xml": "<method rpc='self-serve-vnf-unassign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 278.1904830932617,

+        "y": 103.2777853012085,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "476ba12e.72d0b"

+            ]

+        ]

+    },

+    {

+        "id": "61eab8c6.809638",

+        "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": 436.6667709350586,

+        "y": 48.76192283630371,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "f111d369.224dc"

+            ]

+        ]

+    },

+    {

+        "id": "9b53fa35.2106f8",

+        "type": "for",

+        "name": "foreach vnf-parameters-data.param[]",

+        "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 788.1788864135742,

+        "y": 446.13098907470703,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "13b713a3.91f76c",

+                "eb9f0d00.5c804"

+            ]

+        ]

+    },

+    {

+        "id": "73638f7e.a5e31",

+        "type": "switchNode",

+        "name": "switch resource-resolution-data.status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1087.2741775512695,

+        "y": 668.4048857688904,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "15033255.82a12e",

+                "beee7743.7ea5e8"

+            ]

+        ]

+    },

+    {

+        "id": "15033255.82a12e",

+        "type": "other",

+        "name": "SUCCESS",

+        "xml": "<outcome value='SUCCESS'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1362.667179107666,

+        "y": 669.1191411018372,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "2bd33584.bf077a"

+            ]

+        ]

+    },

+    {

+        "id": "52ececda.9e0f84",

+        "type": "for",

+        "name": "foreach capability-order[]",

+        "xml": "<for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 453.7501220703125,

+        "y": 301.3213939666748,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "975deb30.c1c768",

+                "62184d5d.c851c4",

+                "9b53fa35.2106f8",

+                "1c990616.a2478a"

+            ]

+        ]

+    },

+    {

+        "id": "13b713a3.91f76c",

+        "type": "switchNode",

+        "name": "switch param capability-name == execution",

+        "xml": "<switch test='`$ss.capability-name == $tmp.param.capability-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1144.0718002319336,

+        "y": 489.8571186065674,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "9add8e.52bc827"

+            ]

+        ]

+    },

+    {

+        "id": "9add8e.52bc827",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1407.5718002319336,

+        "y": 490.1071186065674,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "31a0dcaa.e444d4"

+            ]

+        ]

+    },

+    {

+        "id": "2bd33584.bf077a",

+        "type": "call",

+        "name": "call ss.capability-dg",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1567.7859115600586,

+        "y": 668.8809924125671,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "77db13fe.aefb4c",

+                "9f0aca9e.506ad8"

+            ]

+        ]

+    },

+    {

+        "id": "975deb30.c1c768",

+        "type": "set",

+        "name": "ss.capability-name",

+        "xml": "<set>\n<parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />\n\n<!--\nss.capability.execution-order[]\n-->\n",

+        "comments": "",

+        "x": 734.107177734375,

+        "y": 301.2738456726074,

+        "z": "2e6e6d50.2c5192",

+        "wires": []

+    },

+    {

+        "id": "eb9f0d00.5c804",

+        "type": "set",

+        "name": "tmp.param.capability-name",

+        "xml": "<set>\n<parameter name='tmp.param.capability-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />\n",

+        "comments": "",

+        "x": 1093.428825378418,

+        "y": 444.46432876586914,

+        "z": "2e6e6d50.2c5192",

+        "wires": []

+    },

+    {

+        "id": "62184d5d.c851c4",

+        "type": "set",

+        "name": "set ss.capability.action = unassign",

+        "xml": "<set>\n<parameter name='ss.capability-action' value='unassign' />\n",

+        "comments": "",

+        "x": 780.8213195800781,

+        "y": 348.1904296875,

+        "z": "2e6e6d50.2c5192",

+        "wires": []

+    },

+    {

+        "id": "77db13fe.aefb4c",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1752.6784210205078,

+        "y": 668.8810534477234,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "54d35865.3f3408"

+            ]

+        ]

+    },

+    {

+        "id": "1c990616.a2478a",

+        "type": "set",

+        "name": "set capability-dg",

+        "xml": "<set>\n<parameter name='ss.capability-dg' value=\"`'self-serve-' + $ss.capability.execution-order[$cidx]`\" />\n",

+        "comments": "",

+        "x": 725.2500076293945,

+        "y": 397.0833435058594,

+        "z": "2e6e6d50.2c5192",

+        "wires": []

+    },

+    {

+        "id": "c5498b4d.da47d8",

+        "type": "execute",

+        "name": "generate ss-vnf url replace service-instance-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.ss-vnf-assignments`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-vnf-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.service-instance-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2235.535804748535,

+        "y": 722.7627787590027,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c17c35b8.41b0c8",

+        "type": "execute",

+        "name": "execute RestApiCallNode - PUT vnf",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.ss.vnf.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-vnf-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ss-vnf\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2205.000099182129,

+        "y": 825.6200003623962,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "f2f91617.d6bf78",

+                "8fd41743.fdec58"

+            ]

+        ]

+    },

+    {

+        "id": "f2f91617.d6bf78",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2479.593765258789,

+        "y": 879.6181540489197,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "39855d48.9c0d72"

+            ]

+        ]

+    },

+    {

+        "id": "8fd41743.fdec58",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2472.0223999023438,

+        "y": 826.1181740760803,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "39855d48.9c0d72"

+            ]

+        ]

+    },

+    {

+        "id": "39855d48.9c0d72",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2674.1547241210938,

+        "y": 825.7624287605286,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "86aab38.e72235"

+            ]

+        ]

+    },

+    {

+        "id": "86aab38.e72235",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error persisting self-serve vnf assignments in MD-SAL during unassign\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2892.4404907226562,

+        "y": 825.9052920341492,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "662286b2.d6b178",

+        "type": "set",

+        "name": "set vf data for restapi-call-node",

+        "xml": "<set>\n<parameter name='vf.vnf-id'\n    value='`$service-data.vnfs.vnf[$vnf-index].vnf-id`' />\n<parameter name='vf.vnf-data.sdnc-request-header.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.`' />\n<parameter name='vf.vnf-data.request-information.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.`' />\n<parameter name='vf.vnf-data.service-information.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.`' />\n<parameter name='vf.vnf-data.vnf-information.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.`' />\n<parameter name='vf.vnf-data.vnf-request-input.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.`' />\n<parameter name='vf.vnf-data.vnf-request-input.vnf-input-parameters.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.`' />\n<parameter name='vf.vnf-data.vnf-topology.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.`' />\n<parameter name='vf.vnf-data.vnf-level-oper-status.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.`' />",

+        "comments": "",

+        "x": 2187.988105773926,

+        "y": 668.8572907447815,

+        "z": "2e6e6d50.2c5192",

+        "wires": []

+    },

+    {

+        "id": "4e2b6ad5.c5c984",

+        "type": "execute",

+        "name": "generate ss-vnf url - replace vnf-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ss-vnf-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ss-vnf-url\"/>\n    <parameter name=\"target\" value=\"{vnf-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2199.8215103149414,

+        "y": 773.5715470314026,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "54d35865.3f3408",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1913.6310958862305,

+        "y": 668.6191649436951,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "c5498b4d.da47d8",

+                "c17c35b8.41b0c8",

+                "662286b2.d6b178",

+                "4e2b6ad5.c5c984",

+                "25354232.f6ff7e"

+            ]

+        ]

+    },

+    {

+        "id": "25354232.f6ff7e",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to unassign self-serve vnf assignments for ' + $ss.capability-dg + ' with error: ' + $error-message`\" />\n",

+        "comments": "",

+        "x": 2134.536064147949,

+        "y": 953.3929483890533,

+        "z": "2e6e6d50.2c5192",

+        "wires": []

+    },

+    {

+        "id": "434ab0d7.7891",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/ss-vnf-unassign.log' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 401.97650146484375,

+        "y": 1207.4882717132568,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "716b81a4.0f5df",

+        "type": "set",

+        "name": "set ss.capability.execution-order[]",

+        "xml": "<set>\n<parameter name='ss.capability.execution-order[0]' value='mS-mac-address-assign' />\n<parameter name='ss.capability.execution-order[1]' value='mac-address-assign' />\n<parameter name='ss.capability.execution-order[2]' value='netbox-ip-assign' />\n<parameter name='ss.capability.execution-order[3]' value='eipam-ip-assignment' />\n<parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />\n<parameter name='ss.capability.execution-order[5]' value='vlan-tag-assign' />\n<parameter name='ss.capability.execution-order[6]' value='alts-license-assign' />\n<parameter name='ss.capability.execution-order[7]' value='alts-entitlement-assign' />\n<parameter name='ss.capability.execution-order[8]' value='generate-name' />\n<parameter name='ss.capability.execution-order_length' value='9' />",

+        "comments": "",

+        "x": 484.6786117553711,

+        "y": 167.5714340209961,

+        "z": "2e6e6d50.2c5192",

+        "wires": []

+    },

+    {

+        "id": "138a6bf3.2831e4",

+        "type": "set",

+        "name": "set ss.capability-type = vnf",

+        "xml": "<set>\n<parameter name='ss.capability-type' value='vnf' />\n",

+        "comments": "",

+        "x": 464.2857131958008,

+        "y": 207.14286422729492,

+        "z": "2e6e6d50.2c5192",

+        "wires": []

+    },

+    {

+        "id": "beee7743.7ea5e8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1352.9880409240723,

+        "y": 736.3690609931946,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "c149b7eb.e0bad8"

+            ]

+        ]

+    },

+    {

+        "id": "c149b7eb.e0bad8",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"`'SS: resource-resolution-data.status: ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`\"/>\n<parameter name=\"field2\" value=\"`'SS: ss.capability-name: ' + $ss.capability-name`\"/>\n<parameter name=\"field3\" value=\"`'SS: tmp.param.capability-name: ' + $tmp.param.capability-name`\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1501.0952224731445,

+        "y": 736.4047665596008,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "31a0dcaa.e444d4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 802.8571090698242,

+        "y": 668.5237793922424,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "a44b8cdb.fe5b2",

+                "73638f7e.a5e31"

+            ]

+        ]

+    },

+    {

+        "id": "a44b8cdb.fe5b2",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 981.2857513427734,

+        "y": 1101.0953178405762,

+        "z": "2e6e6d50.2c5192",

+        "wires": []

+    },

+    {

+        "id": "9f0aca9e.506ad8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1780.1786041259766,

+        "y": 854.8214416503906,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "88d0c6a.b2d2838"

+            ]

+        ]

+    },

+    {

+        "id": "88d0c6a.b2d2838",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"`'DONE: ' + $ss.capability-dg`\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1923.9286041259766,

+        "y": 853.5714416503906,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fbe1b133.89212",

+        "type": "execute",

+        "name": "execute PropertiesNode",

+        "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": 873.4286477225169,

+        "y": 253.85714776175382,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "af88c68d.542008",

+        "type": "switchNode",

+        "name": "switch prop.controller.user",

+        "xml": "<switch test='`$prop.controller.user`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 462.14288330078125,

+        "y": 254.28576850891113,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "609ed85f.bc0518"

+            ]

+        ]

+    },

+    {

+        "id": "609ed85f.bc0518",

+        "type": "failure",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 661.9999787466868,

+        "y": 253.85718304770353,

+        "z": "2e6e6d50.2c5192",

+        "wires": [

+            [

+                "fbe1b133.89212"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_send-so-response.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_send-so-response.json
new file mode 100644
index 0000000..1a8e85c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_send-so-response.json
@@ -0,0 +1,180 @@
+[

+    {

+        "id": "1be7c5d.ad3cd3a",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 186.2630157470703,

+        "y": 83.76301574707031,

+        "z": "9c4d3573.f087a8",

+        "wires": [

+            [

+                "7fd0368c.d911a8"

+            ]

+        ]

+    },

+    {

+        "id": "3bd2ce4a.136122",

+        "type": "method",

+        "name": "method send-so-response",

+        "xml": "<method rpc='send-so-response' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 331.2749328613281,

+        "y": 148.46936988830566,

+        "z": "9c4d3573.f087a8",

+        "wires": [

+            [

+                "10c7b604.2a55ba"

+            ]

+        ]

+    },

+    {

+        "id": "7fd0368c.d911a8",

+        "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": 448.50121307373047,

+        "y": 83.9535083770752,

+        "z": "9c4d3573.f087a8",

+        "wires": [

+            [

+                "3bd2ce4a.136122"

+            ]

+        ]

+    },

+    {

+        "id": "af9d7c89.15796",

+        "type": "execute",

+        "name": "execute RestApiCallNode - POST ack-final to SO",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + 'so-response.json'`\" />\n    <parameter name='restapiUrl' value=\"`$so.notification-url`\" />\n    <parameter name='restapiUser' value='`$prop.so.user`' />\n    <parameter name='restapiPassword' value='`$prop.so.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name=\"responsePrefix\" value=\"soResponse-vnf-assign\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 788.8093566894531,

+        "y": 293.73350286483765,

+        "z": "9c4d3573.f087a8",

+        "wires": [

+            [

+                "d61676da.12fe28",

+                "87d46700.e01758"

+            ]

+        ]

+    },

+    {

+        "id": "d61676da.12fe28",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1075.700740814209,

+        "y": 270.31422758102417,

+        "z": "9c4d3573.f087a8",

+        "wires": [

+            [

+                "7e23e4c2.43ac6c"

+            ]

+        ]

+    },

+    {

+        "id": "deb0a632.ae9ed8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Error sending SO response. ' + $error-message`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1529.511962890625,

+        "y": 247.45922470092773,

+        "z": "9c4d3573.f087a8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "87d46700.e01758",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1087.0593032836914,

+        "y": 317.4833388328552,

+        "z": "9c4d3573.f087a8",

+        "wires": [

+            [

+                "7e23e4c2.43ac6c"

+            ]

+        ]

+    },

+    {

+        "id": "10c7b604.2a55ba",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 469.0129928588867,

+        "y": 263.7629699707031,

+        "z": "9c4d3573.f087a8",

+        "wires": [

+            [

+                "af9d7c89.15796",

+                "aa7b88f3.7101b8"

+            ]

+        ]

+    },

+    {

+        "id": "aa7b88f3.7101b8",

+        "type": "set",

+        "name": "set so.response-message",

+        "xml": "<set>\n<parameter name=\"so.response-message\" value=\"`$error-message`\" />",

+        "comments": "",

+        "x": 715.0130081176758,

+        "y": 243.7629656791687,

+        "z": "9c4d3573.f087a8",

+        "wires": []

+    },

+    {

+        "id": "5b71151b.49bd3c",

+        "type": "comment",

+        "name": "Caller must set all the params required for SO response",

+        "info": "so.ack-final-indicator\nso.notification-url\nso.response-code\nso.response-message\nso.svc-request-id\nso.service-instance-id\nso.service-type",

+        "comments": "",

+        "x": 937.5130081176758,

+        "y": 152.51301765441895,

+        "z": "9c4d3573.f087a8",

+        "wires": []

+    },

+    {

+        "id": "535d0ddc.6a9ff4",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 1510.096477508545,

+        "y": 317.67168045043945,

+        "z": "9c4d3573.f087a8",

+        "wires": []

+    },

+    {

+        "id": "7e23e4c2.43ac6c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1303.762939453125,

+        "y": 288.76298904418945,

+        "z": "9c4d3573.f087a8",

+        "wires": [

+            [

+                "deb0a632.ae9ed8",

+                "535d0ddc.6a9ff4"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation-assign.json
new file mode 100644
index 0000000..15639e1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation-assign.json
@@ -0,0 +1,1157 @@
+[

+    {

+        "id": "ed114b7a.f75b18",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 1352.22216796875,

+        "y": 72.41365623474121,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "983246b.2a205b8"

+            ]

+        ]

+    },

+    {

+        "id": "983246b.2a205b8",

+        "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": 1464.6507263183594,

+        "y": 112.65176677703857,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "823dc8cd.dd6d58"

+            ]

+        ]

+    },

+    {

+        "id": "823dc8cd.dd6d58",

+        "type": "method",

+        "name": "method service-topology-operation-assign",

+        "xml": "<method rpc='service-topology-operation-assign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1452.3650741577148,

+        "y": 152.41365432739258,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "f7c5ffc6.e6b88"

+            ]

+        ]

+    },

+    {

+        "id": "9697023a.bcbfc",

+        "type": "comment",

+        "name": "service-topology-operation-assign",

+        "info": "",

+        "comments": "",

+        "x": 1746.567024230957,

+        "y": 20,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "f7c5ffc6.e6b88",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1469.0792922973633,

+        "y": 743.1756019592285,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "3b97fcb6.4ecbb4",

+                "4deb90b3.ddf1b",

+                "4cc6f60e.e6e328",

+                "a6b363c6.539e",

+                "7331194a.880a78",

+                "cf878be6.433098",

+                "116637a7.bf8608",

+                "be564011.84b1f",

+                "1f9303e8.465f3c",

+                "155d1e57.3f9452"

+            ]

+        ]

+    },

+    {

+        "id": "3b97fcb6.4ecbb4",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$service-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1751.4602813720703,

+        "y": 254.127947807312,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "7361817e.f466d",

+                "f1851772.f51898"

+            ]

+        ]

+    },

+    {

+        "id": "7361817e.f466d",

+        "type": "outcome",

+        "name": "CreateServiceInstance",

+        "xml": "<outcome value='CreateServiceInstance'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1988.6030960083008,

+        "y": 228.4136562347412,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "7ff4cffa.a03ca"

+            ]

+        ]

+    },

+    {

+        "id": "f1851772.f51898",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1938.6031188964844,

+        "y": 272.46129512786865,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "6b8abbcc.8abe04"

+            ]

+        ]

+    },

+    {

+        "id": "7ff4cffa.a03ca",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2167.1745529174805,

+        "y": 228.41369152069092,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6b8abbcc.8abe04",

+        "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=\"If svc-action is 'assign' then request-action must be 'CreateServiceInstance'\" />\n",

+        "comments": "",

+        "x": 2145.9840660095215,

+        "y": 272.46130657196045,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "4deb90b3.ddf1b",

+        "type": "get-resource",

+        "name": "get-resource SERVICE_MODEL",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from SERVICE_MODEL WHERE service_uuid = $service-topology-operation-input.service-information.onap-model-information.model-uuid'\n  pfx='db.service-model'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1788.007797241211,

+        "y": 477.2232360839844,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "10dea27a.48091e",

+                "d11d8917.44be58"

+            ]

+        ]

+    },

+    {

+        "id": "6349641.a52799c",

+        "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=\"`'No model found for service UUID ' + $service-topology-operation-input.service-information.onap-model-information.model-uuid`\" />\n",

+        "comments": "",

+        "x": 2178.0077476501465,

+        "y": 500.65173530578613,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "4cc6f60e.e6e328",

+        "type": "switchNode",

+        "name": "switch input service-instance-name",

+        "xml": "<switch test='`$service-topology-operation-input.service-request-input.service-instance-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1783.9839706420898,

+        "y": 876.3898258209229,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "ad3069cf.d72968",

+                "928867c5.6bc8b8"

+            ]

+        ]

+    },

+    {

+        "id": "ad3069cf.d72968",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2018.0076293945312,

+        "y": 688.8898077011108,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "39cb4b5a.a62424"

+            ]

+        ]

+    },

+    {

+        "id": "38149fb4.8ccca",

+        "type": "switchNode",

+        "name": "switch ecomp-naming",

+        "xml": "<switch test='`$db.service-model.ecomp-naming`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2395.86515045166,

+        "y": 591.2708940505981,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "5712a731.e45c98",

+                "4c3eb89c.769a68",

+                "66aec164.b4d93"

+            ]

+        ]

+    },

+    {

+        "id": "39cb4b5a.a62424",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2163.7221298217773,

+        "y": 688.8899250030518,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "38149fb4.8ccca",

+                "2de9537d.ce5a3c"

+            ]

+        ]

+    },

+    {

+        "id": "4c3eb89c.769a68",

+        "type": "outcome",

+        "name": "N",

+        "xml": "<outcome value='N'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2582.2935371398926,

+        "y": 591.7470207214355,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "83b1cfed.045bb"

+            ]

+        ]

+    },

+    {

+        "id": "83b1cfed.045bb",

+        "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=\"No service-instance-name was received but ecomp-naming is not Y\" />\n",

+        "comments": "",

+        "x": 2736.5793228149414,

+        "y": 610.3184652328491,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "5712a731.e45c98",

+        "type": "outcome",

+        "name": "Y",

+        "xml": "<outcome value='Y'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2582.293529510498,

+        "y": 550.3184747695923,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "1659b650.b537fa"

+            ]

+        ]

+    },

+    {

+        "id": "66aec164.b4d93",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2582.2934761047363,

+        "y": 634.6041526794434,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "83b1cfed.045bb"

+            ]

+        ]

+    },

+    {

+        "id": "1659b650.b537fa",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2719.4364471435547,

+        "y": 550.4613418579102,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "928867c5.6bc8b8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2000.5793342590332,

+        "y": 1085.1755352020264,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "a4b27acf.1f5e18"

+            ]

+        ]

+    },

+    {

+        "id": "d6c60ea4.5874b",

+        "type": "set",

+        "name": "set tmp.service-instance-name",

+        "xml": "<set>\n<parameter name='tmp.service-instance-name' value=\"`$service-topology-operation-input.service-request-input.service-instance-name`\" />\n",

+        "comments": "",

+        "x": 2953.7221908569336,

+        "y": 1134.0327558517456,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "a6b363c6.539e",

+        "type": "update",

+        "name": "update AAI service instance",

+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"service-instance\" \n\t\tkey=\"customer.global-customer-id = $service-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-topology-operation-input.service-information.service-instance-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"service-instance-name\" value=\"`$tmp.service-instance-name`\" />\n\t<parameter name=\"selflink\" value=\"`$service-object-path`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1762.531753540039,

+        "y": 1341.3660259246826,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "4545106b.1b452",

+                "96982434.ffc468"

+            ]

+        ]

+    },

+    {

+        "id": "4545106b.1b452",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1974.2936210632324,

+        "y": 1316.6041803359985,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "454a1467.66c43c"

+            ]

+        ]

+    },

+    {

+        "id": "a9649c95.7bd9",

+        "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=\"Failure calling AAI to update the service instance\" />\n",

+        "comments": "",

+        "x": 2321.4364166259766,

+        "y": 1315.175682067871,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "1f9303e8.465f3c",

+        "type": "set",

+        "name": "set service-level-oper-status to Created",

+        "xml": "<set>\n<parameter name='service-data.service-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.service-level-oper-status.last-rpc-action' value='assign' />\n<parameter name='service-data.service-level-oper-status.last-action' value='CreateServiceInstance' />\n",

+        "comments": "",

+        "x": 1796.3888473510742,

+        "y": 1622.91353225708,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "be564011.84b1f",

+        "type": "set",

+        "name": "set service-object-path",

+        "xml": "<set>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $service-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 1748.4839096069336,

+        "y": 1177.318284034729,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "c4d228ca.69a5b8",

+        "type": "switchNode",

+        "name": "switch order-status",

+        "xml": "<switch test='`$service-data.service-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1744.6030769348145,

+        "y": 365.0804195404053,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "db73c544.13ae08",

+                "53c75a45.113554",

+                "b305520d.c4aaf"

+            ]

+        ]

+    },

+    {

+        "id": "db73c544.13ae08",

+        "type": "outcome",

+        "name": "Created",

+        "xml": "<outcome value='Created'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1940.5555267333984,

+        "y": 364.74701595306396,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "cbf2a27.30d166"

+            ]

+        ]

+    },

+    {

+        "id": "cbf2a27.30d166",

+        "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=\"The requested service already exists\" />\n",

+        "comments": "",

+        "x": 2142.698356628418,

+        "y": 364.3185501098633,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "7331194a.880a78",

+        "type": "set",

+        "name": "set service-topology identifiers",

+        "xml": "<set>\n<parameter name='service-data.service-topology.service-topology-identifier.service-instance-id'\n  value='`$service-topology-operation-input.service-information.service-instance-id`' />\n<parameter name='service-data.service-topology.service-topology-identifier.service-type'\n  value='`$service-topology-operation-input.service-information.subscription-service-type`' />\n<parameter name='service-data.service-topology.service-topology-identifier.service-instance-name'\n  value='`$tmp.service-instance-name`' />\n<parameter name='service-data.service-topology.service-topology-identifier.global-customer-id'\n  value='`$service-topology-operation-input.service-information.global-customer-id`' />\n",

+        "comments": "",

+        "x": 1769.507968902588,

+        "y": 1433.9849061965942,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "f0cb971e.9a6bb8",

+        "type": "for",

+        "name": "for each service-input-parameters",

+        "xml": "<for index='idx' start='0' end='`$service-topology-operation-input.service-request-input.service-input-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2202.174503326416,

+        "y": 1580.6519136428833,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "cc455e9f.b2dcb"

+            ]

+        ]

+    },

+    {

+        "id": "cc455e9f.b2dcb",

+        "type": "set",

+        "name": "set parameter name/value",

+        "xml": "<set>\n<parameter name='service-data.service-topology.service-parameters[$idx].service-parameter-name'\n  value='`$service-topology-operation-input.service-request-input.service-input-parameters.param[$idx].name`' />\n<parameter name='service-data.service-topology.service-parameters[$idx].service-parameter-value'\n  value='`$service-topology-operation-input.service-request-input.service-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 2483.6029663085938,

+        "y": 1580.6518602371216,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "cf878be6.433098",

+        "type": "switchNode",

+        "name": "switch input parameter length",

+        "xml": "<switch test='`$service-topology-operation-input.service-request-input.service-input-parameters.param_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1766.9840774536133,

+        "y": 1553.032633781433,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "19f64235.4f36ee",

+                "9db57bb8.52cdc8"

+            ]

+        ]

+    },

+    {

+        "id": "19f64235.4f36ee",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1979.888656616211,

+        "y": 1529.2232675552368,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "5fbb5b14.363894"

+            ]

+        ]

+    },

+    {

+        "id": "5fbb5b14.363894",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2118.460048675537,

+        "y": 1529.2232503890991,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9db57bb8.52cdc8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1978.4600677490234,

+        "y": 1580.6518564224243,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "f0cb971e.9a6bb8"

+            ]

+        ]

+    },

+    {

+        "id": "116637a7.bf8608",

+        "type": "set",

+        "name": "set service-topology onap-model-information",

+        "xml": "<set>\n<parameter name='service-data.service-topology.onap-model-information.'\n  value='`$service-topology-operation-input.service-information.onap-model-information.`' />\n",

+        "comments": "",

+        "x": 1812.365089416504,

+        "y": 1482.5563163757324,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "96982434.ffc468",

+        "type": "failure",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1980.6030502319336,

+        "y": 1365.1755981445312,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "e3f492c3.6e0a5"

+            ]

+        ]

+    },

+    {

+        "id": "cc899e97.23141",

+        "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=\"The service instance does not exist in AAI\" />\n",

+        "comments": "",

+        "x": 2319.650577545166,

+        "y": 1363.651912689209,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "69ce2ba.144d5d4",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:generate-unique-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3054.269729614258,

+        "y": 740.3183941841125,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "1766b7bb.cff678",

+                "29d42e71.3312e2"

+            ]

+        ]

+    },

+    {

+        "id": "1766b7bb.cff678",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3331.4125328063965,

+        "y": 713.8899273872375,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "8e4917db.c56bf8"

+            ]

+        ]

+    },

+    {

+        "id": "29d42e71.3312e2",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3336.1742782592773,

+        "y": 759.2708382606506,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "4d990495.1c092c"

+            ]

+        ]

+    },

+    {

+        "id": "2e79f822.688378",

+        "type": "set",

+        "name": "set variables for generating unique name",

+        "xml": "<set>\n<parameter name='generate-unique-name-input.action' value='ASSIGN' />\n<parameter name='generate-unique-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />\n<parameter name='generate-unique-name-input.index-table-name' value='SERVICE_INSTANCE_NAME_INDEX' />\n<parameter name='generate-unique-name-input.index-table-prefix-column' value='service_instance_name_prefix' />\n<parameter name='generate-unique-name-input.name-table-type' value='SERVICE_INSTANCE' />\n<parameter name='generate-unique-name-input.prefix' value=\"`$db.service-model.service-instance-name-prefix + '_'`\" />\n",

+        "comments": "",

+        "x": 3009.2699813842773,

+        "y": 691.4137139320374,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "4d990495.1c092c",

+        "type": "set",

+        "name": "set tmp.service-instance-name to generated name",

+        "xml": "<set>\n<parameter name='tmp.service-instance-name' value='`$generate-unique-name-output.generated-name`' />\n",

+        "comments": "",

+        "x": 3603.0786743164062,

+        "y": 759.746913433075,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "8e4917db.c56bf8",

+        "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=\"`$generate-unique-name-output.error-message`\" />\n",

+        "comments": "",

+        "x": 3484.9839935302734,

+        "y": 713.3184370994568,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "a4b27acf.1f5e18",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2148.5078620910645,

+        "y": 1083.8422222137451,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "663b2c60.a3fbe4",

+                "e58b759e.fa9038"

+            ]

+        ]

+    },

+    {

+        "id": "e58b759e.fa9038",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:generate-unique-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2448.5079498291016,

+        "y": 1108.5088710784912,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "92c339a8.616968",

+                "c4fd2567.a5a888"

+            ]

+        ]

+    },

+    {

+        "id": "92c339a8.616968",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2729.936420440674,

+        "y": 1083.2708559036255,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "4a49ebd1.d51d64"

+            ]

+        ]

+    },

+    {

+        "id": "c4fd2567.a5a888",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2732.9840545654297,

+        "y": 1134.937665939331,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "d6c60ea4.5874b"

+            ]

+        ]

+    },

+    {

+        "id": "663b2c60.a3fbe4",

+        "type": "set",

+        "name": "set variables for generating unique name",

+        "xml": "<set>\n<parameter name='generate-unique-name-input.name-table-type' value='SERVICE_INSTANCE' />\n<parameter name='generate-unique-name-input.supplied-name' value='`$service-topology-operation-input.service-request-input.service-instance-name`' />\n<parameter name='generate-unique-name-input.service-instance-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />",

+        "comments": "",

+        "x": 2406.841323852539,

+        "y": 1060.1755771636963,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "4a49ebd1.d51d64",

+        "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=\"`$generate-unique-name-output.error-message`\" />\n",

+        "comments": "",

+        "x": 2897.7935333251953,

+        "y": 1082.6993675231934,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "10dea27a.48091e",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2004.5077819824219,

+        "y": 457.17555046081543,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "e6798aa7.071568"

+            ]

+        ]

+    },

+    {

+        "id": "d11d8917.44be58",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2013.0792121887207,

+        "y": 500.4612636566162,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "6349641.a52799c"

+            ]

+        ]

+    },

+    {

+        "id": "e6798aa7.071568",

+        "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 reading SERVICE_MODEL table\" />\n",

+        "comments": "",

+        "x": 2177.364948272705,

+        "y": 455.7469940185547,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "53c75a45.113554",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1938.5554504394531,

+        "y": 320.08033752441406,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "f1200e41.32e3"

+            ]

+        ]

+    },

+    {

+        "id": "b305520d.c4aaf",

+        "type": "other",

+        "name": "PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1961.2221794128418,

+        "y": 408.7469959259033,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "62b73505.87e2cc"

+            ]

+        ]

+    },

+    {

+        "id": "62b73505.87e2cc",

+        "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=\"The requested service is pending deletion\" />\n",

+        "comments": "",

+        "x": 2143.555477142334,

+        "y": 408.7470064163208,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "f1200e41.32e3",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2125.2221603393555,

+        "y": 319.0803565979004,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2de9537d.ce5a3c",

+        "type": "switchNode",

+        "name": "switch naming-policy",

+        "xml": "<switch test='`$db.service-model.naming-policy`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2395.079200744629,

+        "y": 786.6993713378906,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "2684edf5.753852",

+                "18f39428.236a8c"

+            ]

+        ]

+    },

+    {

+        "id": "2684edf5.753852",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2583.650665283203,

+        "y": 720.9850654602051,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "26dd020.844b9fe"

+            ]

+        ]

+    },

+    {

+        "id": "18f39428.236a8c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2583.6508350372314,

+        "y": 852.4137172698975,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "555fed1d.539e64"

+            ]

+        ]

+    },

+    {

+        "id": "155d1e57.3f9452",

+        "type": "set",

+        "name": "set tmp.service-instance-name to NULL",

+        "xml": "<set>\n<parameter name='tmp.service-instance-name' value='' />\n",

+        "comments": "",

+        "x": 1807.9364624023438,

+        "y": 588.1279144287109,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "26dd020.844b9fe",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2736.5079345703125,

+        "y": 719.5565319061279,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "2e79f822.688378",

+                "69ce2ba.144d5d4"

+            ]

+        ]

+    },

+    {

+        "id": "d9662f9c.d46e6",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:naming-policy-generate-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3072.222442626953,

+        "y": 892.4137988090515,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "a9acf59.3d9a608",

+                "ab2b1e84.df443"

+            ]

+        ]

+    },

+    {

+        "id": "555fed1d.539e64",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2736.507957458496,

+        "y": 852.4137344360352,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "9be34e30.19b1f",

+                "d9662f9c.d46e6",

+                "ff3c0c0e.8833f"

+            ]

+        ]

+    },

+    {

+        "id": "9be34e30.19b1f",

+        "type": "set",

+        "name": "set variables for generating name",

+        "xml": "<set>\n<parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.service-model.naming-policy`' />\n<parameter name='naming-policy-generate-name-input.naming-type' value='SERVICE' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />\n<parameter name='naming-policy-generate-name-input.query-parameter' value='`$db.service-model.service-uuid`' />\n<parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />\n",

+        "comments": "",

+        "x": 2982.2223587036133,

+        "y": 846.6994528770447,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "bc6ccae5.e3b088",

+        "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=\"Unable to generate service name\" />\n",

+        "comments": "",

+        "x": 3530.793434688023,

+        "y": 868.2707086290632,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "441302c7.f518bc",

+        "type": "set",

+        "name": "set tmp.service-instance-name to generated name",

+        "xml": "<set>\n<parameter name='tmp.service-instance-name' value='`$naming-policy-generate-name-output.service-name`' />\n",

+        "comments": "",

+        "x": 3646.650796890259,

+        "y": 915.4135360717773,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "ff3c0c0e.8833f",

+        "type": "set",

+        "name": "set generated-via-policy to true",

+        "xml": "<set>\n<parameter name='generated-via-policy' value='true' />\n",

+        "comments": "",

+        "x": 2973.6509399414062,

+        "y": 800.9851069450378,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "3a82772.0b3ff88",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2326.5079345703125,

+        "y": 1247.270830154419,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "c71638eb.a196b8",

+                "b10a109b.8b814"

+            ]

+        ]

+    },

+    {

+        "id": "b10a109b.8b814",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:naming-policy-generate-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2650.7936401367188,

+        "y": 1273.8423614501953,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c71638eb.a196b8",

+        "type": "set",

+        "name": "set variables for deleting name",

+        "xml": "<set>\n<parameter name='naming-policy-generate-name-input.naming-type' value='SERVICE' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n",

+        "comments": "",

+        "x": 2552.2222595214844,

+        "y": 1226.6994323730469,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    },

+    {

+        "id": "454a1467.66c43c",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2133.650749206543,

+        "y": 1316.699363708496,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "a9649c95.7bd9",

+                "3a82772.0b3ff88"

+            ]

+        ]

+    },

+    {

+        "id": "e3f492c3.6e0a5",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2132.2221603393555,

+        "y": 1365.270746231079,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "cc899e97.23141",

+                "3a82772.0b3ff88"

+            ]

+        ]

+    },

+    {

+        "id": "a9acf59.3d9a608",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3376.031801223755,

+        "y": 915.7469577789307,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "441302c7.f518bc"

+            ]

+        ]

+    },

+    {

+        "id": "ab2b1e84.df443",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3373.17427444458,

+        "y": 868.17555809021,

+        "z": "7a783ca6.163ee4",

+        "wires": [

+            [

+                "bc6ccae5.e3b088"

+            ]

+        ]

+    },

+    {

+        "id": "9f9d847c.b86d18",

+        "type": "comment",

+        "name": "check removed with US622450",

+        "info": "",

+        "comments": "",

+        "x": 1623.8888397216797,

+        "y": 317.4136587778727,

+        "z": "7a783ca6.163ee4",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation-changeassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation-changeassign.json
new file mode 100755
index 0000000..748630e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation-changeassign.json
@@ -0,0 +1 @@
+[{"id":"1f9dbb81.bd6b84","type":"dgstart","name":"DGSTART","outputs":1,"x":102.85714721679688,"y":86.69937062263489,"z":"9aaf200d.92f26","wires":[["633701bf.7e227"]]},{"id":"633701bf.7e227","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.28570556640625,"y":126.93748116493225,"z":"9aaf200d.92f26","wires":[["eda99e12.c4db9"]]},{"id":"eda99e12.c4db9","type":"method","name":"method service-topology-operation-changeassign","xml":"<method rpc='service-topology-operation-changeassign' mode='sync'>\n","comments":"","outputs":1,"x":225.00005340576172,"y":166.69936871528625,"z":"9aaf200d.92f26","wires":[["c174c97e.d13f68"]]},{"id":"b3b27563.3aac08","type":"comment","name":"service-topology-operation-changeassign","info":"","comments":"","x":497.2020034790039,"y":34.28571438789368,"z":"9aaf200d.92f26","wires":[]},{"id":"90ec9992.f85358","type":"switchNode","name":"switch request-action","xml":"<switch test='`$service-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":502.0952606201172,"y":268.4136621952057,"z":"9aaf200d.92f26","wires":[["6050b73d.61ab98","86976390.b2c"]]},{"id":"6050b73d.61ab98","type":"outcome","name":"CreateServiceInstance","xml":"<outcome value='CreateServiceInstance'>\n","comments":"","outputs":1,"x":739.2380752563477,"y":242.6993706226349,"z":"9aaf200d.92f26","wires":[["a56cc43.e39ad38"]]},{"id":"86976390.b2c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":689.2380981445312,"y":286.74700951576233,"z":"9aaf200d.92f26","wires":[["f64c64f0.f401b8"]]},{"id":"a56cc43.e39ad38","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":917.8095321655273,"y":242.6994059085846,"z":"9aaf200d.92f26","wires":[[]]},{"id":"f64c64f0.f401b8","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=\"If svc-action is 'changeassign' then request-action must be 'CreateServiceInstance'\" />\n","comments":"","x":896.6190452575684,"y":286.7470209598541,"z":"9aaf200d.92f26","wires":[]},{"id":"7d55c8d3.17c188","type":"switchNode","name":"switch order-status","xml":"<switch test='`$service-data.service-level-oper-status.order-status`'>\n","comments":"","outputs":1,"x":491.5237731933594,"y":372.22328305244446,"z":"9aaf200d.92f26","wires":[["1522dee0.b2ff41","864651dc.ec881"]]},{"id":"1522dee0.b2ff41","type":"other","name":"PendingDelete","xml":"<outcome value='PendingDelete'>\n","comments":"","outputs":1,"x":711.8571548461914,"y":401.60411953926086,"z":"9aaf200d.92f26","wires":[["df498389.23c5"]]},{"id":"bdf58d56.1da1b","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=\"The requested service must be pending deletion\" />\n","comments":"","x":879.6666412353516,"y":354.9374897480011,"z":"9aaf200d.92f26","wires":[]},{"id":"df498389.23c5","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":861.0952320098877,"y":401.4612829685211,"z":"9aaf200d.92f26","wires":[[]]},{"id":"c174c97e.d13f68","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":218.5714340209961,"y":498.1279442310333,"z":"9aaf200d.92f26","wires":[["90ec9992.f85358","43f598e8.2f76a8","64240d58.77b674","6aa8a1e3.471d2","564d8b67.29a674","d4393bc9.1da258","b59d8a67.f68d98"]]},{"id":"43f598e8.2f76a8","type":"switchNode","name":"switch service-data service-instance-id","xml":"<switch test='`$service-data.service-topology.service-topology-identifier.service-instance-id`'>\n","comments":"","outputs":1,"x":557.1428451538086,"y":468.1279442310333,"z":"9aaf200d.92f26","wires":[["317bcd9d.d17c42"]]},{"id":"317bcd9d.d17c42","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":786.9047508239746,"y":468.12796425819397,"z":"9aaf200d.92f26","wires":[["86266550.a49cb8"]]},{"id":"86266550.a49cb8","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=\"`'Service ' + $service-topology-operation-input.service-information.service-instance-id + ' is not found'`\" />\n","comments":"","x":942.6189956665039,"y":468.1279594898224,"z":"9aaf200d.92f26","wires":[]},{"id":"864651dc.ec881","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":690.0000038146973,"y":355.2707989215851,"z":"9aaf200d.92f26","wires":[["bdf58d56.1da1b"]]},{"id":"64240d58.77b674","type":"get-resource","name":"get-resource SERVICE_MODEL","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from SERVICE_MODEL WHERE service_uuid = $service-topology-operation-input.service-information.onap-model-information.model-uuid'\n  pfx='db.service-model'>\n\n","comments":"","outputs":1,"x":538.5714340209961,"y":535.2707970142365,"z":"9aaf200d.92f26","wires":[["259cb40b.e98c0c","9746c605.856688"]]},{"id":"8c3f516c.ce487","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=\"`'No model found for service UUID ' + $service-topology-operation-input.service-information.onap-model-information.model-uuid`\" />\n","comments":"","x":952.8571014404297,"y":560.127846956253,"z":"9aaf200d.92f26","wires":[]},{"id":"259cb40b.e98c0c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":779.3571357727051,"y":516.6516621112823,"z":"9aaf200d.92f26","wires":[["ac9e8e69.ada9e"]]},{"id":"9746c605.856688","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":787.9285659790039,"y":559.9373753070831,"z":"9aaf200d.92f26","wires":[["8c3f516c.ce487"]]},{"id":"ac9e8e69.ada9e","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 reading SERVICE_MODEL table\" />\n","comments":"","x":952.2143020629883,"y":515.2231056690216,"z":"9aaf200d.92f26","wires":[]},{"id":"6aa8a1e3.471d2","type":"set","name":"set service-topology onap-model-information","xml":"<set>\n<parameter name='service-data.service-topology.onap-model-information.'\n  value='`$service-topology-operation-input.service-information.onap-model-information.`' />\n","comments":"","x":574.2857284545898,"y":602.4136803150177,"z":"9aaf200d.92f26","wires":[]},{"id":"564d8b67.29a674","type":"set","name":"set service-level-oper-status to Created","xml":"<set>\n<parameter name='service-data.service-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.service-level-oper-status.last-rpc-action' value='changeassign' />\n<parameter name='service-data.service-level-oper-status.last-action' value='CreateServiceInstance' />\n","comments":"","x":558.5714340209961,"y":646.699385881424,"z":"9aaf200d.92f26","wires":[]},{"id":"d4393bc9.1da258","type":"set","name":"set service-object-path","xml":"<set>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $service-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n","comments":"","x":508.5714340209961,"y":690.9850914478302,"z":"9aaf200d.92f26","wires":[]},{"id":"b59d8a67.f68d98","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n","comments":"","x":482.8571357727051,"y":733.8422300815582,"z":"9aaf200d.92f26","wires":[]},{"id":"8fc79b5e.b3f178","type":"comment","name":"check removed with US622450","info":"","comments":"","x":354.2857208251953,"y":334.28571701049805,"z":"9aaf200d.92f26","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation-deactivate.json
new file mode 100644
index 0000000..7bc480c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation-deactivate.json
@@ -0,0 +1 @@
+[{"id":"ac6c9328.cb9de","type":"switchNode","name":"switch request-action","xml":"<switch test='`$service-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":561.4285888671875,"y":313.8422031402588,"z":"e671ca2.5776e38","wires":[["d328c35a.3c021","ae874303.d6a1c"]]},{"id":"d328c35a.3c021","type":"outcome","name":"DeleteServiceInstance","xml":"<outcome value='DeleteServiceInstance'>\n","comments":"","outputs":1,"x":798.571403503418,"y":288.127911567688,"z":"e671ca2.5776e38","wires":[["bba20dc8.38088"]]},{"id":"ae874303.d6a1c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":748.5713691711426,"y":333.8422393798828,"z":"e671ca2.5776e38","wires":[["ee86807.3fe678"]]},{"id":"bba20dc8.38088","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":977.1428604125977,"y":288.1279468536377,"z":"e671ca2.5776e38","wires":[[]]},{"id":"ee86807.3fe678","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=\"If svc-action is 'deactivate' then request-action must be 'DeleteServiceInstance'\" />\n","comments":"","x":994.2857055664062,"y":333.8422031402588,"z":"e671ca2.5776e38","wires":[]},{"id":"88fbe75d.9b3ff8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":287.380916595459,"y":404.5564498901367,"z":"e671ca2.5776e38","wires":[["ac6c9328.cb9de","27cf51a4.0a0a4e","83ae40b9.3c13f","e15b18de.b91818","833124b5.3b61f8"]]},{"id":"958fbc28.f9e47","type":"dgstart","name":"DGSTART","outputs":1,"x":125.23812103271484,"y":80.98508262634277,"z":"e671ca2.5776e38","wires":[["f771cbe7.3f9578"]]},{"id":"f771cbe7.3f9578","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.52383422851562,"y":121.2231912612915,"z":"e671ca2.5776e38","wires":[["7176e99f.147988"]]},{"id":"7176e99f.147988","type":"method","name":"method service-topology-operation-deactivate","xml":"<method rpc='service-topology-operation-deactivate' mode='sync'>\n","comments":"","outputs":1,"x":238.47626495361328,"y":162.65175247192383,"z":"e671ca2.5776e38","wires":[["88fbe75d.9b3ff8"]]},{"id":"e4213136.1b25d","type":"comment","name":"service-topology-operation-deactivate","info":"","comments":"","x":519.5829772949219,"y":28.571426391601562,"z":"e671ca2.5776e38","wires":[]},{"id":"27cf51a4.0a0a4e","type":"switchNode","name":"switch service-data service-instance-id","xml":"<switch test='`$service-data.service-topology.service-topology-identifier.service-instance-id`'>\n","comments":"","outputs":1,"x":616.90478515625,"y":239.0803050994873,"z":"e671ca2.5776e38","wires":[["8551717b.ecca3"]]},{"id":"8551717b.ecca3","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":846.666690826416,"y":239.08032512664795,"z":"e671ca2.5776e38","wires":[["ad471b62.9ef058"]]},{"id":"ad471b62.9ef058","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=\"`'Service ' + $service-topology-operation-input.service-information.service-instance-id + ' is not found'`\" />\n","comments":"","x":1002.3809356689453,"y":239.08032035827637,"z":"e671ca2.5776e38","wires":[]},{"id":"83ae40b9.3c13f","type":"update","name":"update AAI service instance","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"service-instance\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-topology.service-topology-identifier.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-topology.service-topology-identifier.service-type AND\n\t\t\tservice-instance.service-instance-id = $service-topology-operation-input.service-information.service-instance-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"orchestration-status\" value=\"PendingDelete\" />\n","comments":"","outputs":1,"x":583.1904907226562,"y":524.080322265625,"z":"e671ca2.5776e38","wires":[["1ab67983.459ba6","d889670b.278868"]]},{"id":"1ab67983.459ba6","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":795.9523582458496,"y":499.3184766769409,"z":"e671ca2.5776e38","wires":[["655cf69a.4a38f8"]]},{"id":"655cf69a.4a38f8","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=\"AAI failed\" />\n","comments":"","x":945.9523239135742,"y":499.31855487823486,"z":"e671ca2.5776e38","wires":[]},{"id":"d889670b.278868","type":"failure","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":802.2617874145508,"y":547.8898944854736,"z":"e671ca2.5776e38","wires":[["186fbfe4.0478f"]]},{"id":"e15b18de.b91818","type":"set","name":"set service-level-oper-status to PendingDelete","xml":"<set>\n<parameter name='service-data.service-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.service-level-oper-status.last-rpc-action' value='deactivate' />\n<parameter name='service-data.service-level-oper-status.last-action' value='DeleteServiceInstance' />\n","comments":"","x":639.1904525756836,"y":593.8422164916992,"z":"e671ca2.5776e38","wires":[]},{"id":"186fbfe4.0478f","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":930.2380867004395,"y":547.6517562866211,"z":"e671ca2.5776e38","wires":[[]]},{"id":"fc587782.b233d8","type":"comment","name":"Don't treat this as an error","info":"","comments":"","x":1105.2381744384766,"y":547.6517362594604,"z":"e671ca2.5776e38","wires":[]},{"id":"833124b5.3b61f8","type":"switchNode","name":"switch provided-allotted-resource length","xml":"<switch test='`$service-data.provided-allotted-resources.provided-allotted-resource_length`'>\n","comments":"","outputs":1,"x":621.9048385620117,"y":407.6517581939697,"z":"e671ca2.5776e38","wires":[["d9b91153.f78a","9958b478.578c18","5aa73c44.d94584"]]},{"id":"d9b91153.f78a","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":861.9047050476074,"y":409.3183937072754,"z":"e671ca2.5776e38","wires":[["8979ce23.11d1"]]},{"id":"9958b478.578c18","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":861.9048080444336,"y":450.98505210876465,"z":"e671ca2.5776e38","wires":[["10934b9e.fead24"]]},{"id":"10934b9e.fead24","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=\"Cannot deactivate this service because there are provided allotted resources\" />\n","comments":"","x":1014.0476341247559,"y":450.03265953063965,"z":"e671ca2.5776e38","wires":[]},{"id":"8979ce23.11d1","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":998.5713996887207,"y":385.9850597381592,"z":"e671ca2.5776e38","wires":[[]]},{"id":"5aa73c44.d94584","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":861.9047050476074,"y":367.6517057418823,"z":"e671ca2.5776e38","wires":[["8979ce23.11d1"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation-delete.json
new file mode 100644
index 0000000..b366398
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation-delete.json
@@ -0,0 +1 @@
+[{"id":"478463f2.df6acc","type":"switchNode","name":"switch request-action","xml":"<switch test='`$service-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":474.2857360839844,"y":311.4285888671875,"z":"7c29bc30.d765f4","wires":[["6a903bca.fe0bc4","15a624e5.c765ab"]]},{"id":"6a903bca.fe0bc4","type":"outcome","name":"DeleteServiceInstance","xml":"<outcome value='DeleteServiceInstance'>\n","comments":"","outputs":1,"x":711.4285507202148,"y":285.7142972946167,"z":"7c29bc30.d765f4","wires":[["ee5fd97d.592188"]]},{"id":"15a624e5.c765ab","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":661.4285163879395,"y":331.4286251068115,"z":"7c29bc30.d765f4","wires":[["53deb4ea.0abeac"]]},{"id":"ee5fd97d.592188","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":890.0000076293945,"y":285.7143325805664,"z":"7c29bc30.d765f4","wires":[[]]},{"id":"53deb4ea.0abeac","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=\"If svc-action is 'delete' then request-action must be 'DeleteServiceInstance'\" />\n","comments":"","x":907.1428527832031,"y":331.4285888671875,"z":"7c29bc30.d765f4","wires":[]},{"id":"aef46672.32e008","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":169.99998474121094,"y":639.9999740123749,"z":"7c29bc30.d765f4","wires":[["478463f2.df6acc","68858bf1.c01af4","d0da9c0a.17ef8","b92a5b71.d162a8","259c5f9d.50c88","1695e7ba.b35d28","c99ede40.d4217","892c2ebc.f2f41","defd6c35.e8fab"]]},{"id":"68858bf1.c01af4","type":"switchNode","name":"switch network_length","xml":"<switch test='`$service-data.networks.network_length`'>\n","comments":"","outputs":1,"x":475.7142868041992,"y":501.42855167388916,"z":"7c29bc30.d765f4","wires":[["4cd10559.b0cb6c","6fa72ddd.b467e4","da4bcbd2.83ceb8"]]},{"id":"4cd10559.b0cb6c","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":659.9999465942383,"y":459.99991035461426,"z":"7c29bc30.d765f4","wires":[["4ceb25ac.f6bd4c"]]},{"id":"6fa72ddd.b467e4","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":658.5713577270508,"y":501.42856788635254,"z":"7c29bc30.d765f4","wires":[["4ceb25ac.f6bd4c"]]},{"id":"4ceb25ac.f6bd4c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":807.1428718566895,"y":481.42856884002686,"z":"7c29bc30.d765f4","wires":[[]]},{"id":"da4bcbd2.83ceb8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":658.5714073181152,"y":542.8571557998657,"z":"7c29bc30.d765f4","wires":[["a8c29d46.4823a"]]},{"id":"a8c29d46.4823a","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=\"Cannot delete the service because there are networks defined\" />\n","comments":"","x":825.7143020629883,"y":541.4285440444946,"z":"7c29bc30.d765f4","wires":[]},{"id":"d0da9c0a.17ef8","type":"switchNode","name":"switch vnf_length","xml":"<switch test='`$service-data.vnfs.vnf_length`'>\n","comments":"","outputs":1,"x":464.28572845458984,"y":628.5713357925415,"z":"7c29bc30.d765f4","wires":[["ecf76781.cbaeb8","c9a4b953.c3df58","296eb244.ba1b6e"]]},{"id":"ecf76781.cbaeb8","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":657.1427841186523,"y":587.1427249908447,"z":"7c29bc30.d765f4","wires":[["d6f93db.83137c"]]},{"id":"c9a4b953.c3df58","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":655.7141952514648,"y":628.571382522583,"z":"7c29bc30.d765f4","wires":[["d6f93db.83137c"]]},{"id":"d6f93db.83137c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":804.2857093811035,"y":608.5713834762573,"z":"7c29bc30.d765f4","wires":[[]]},{"id":"296eb244.ba1b6e","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":655.7142448425293,"y":669.9999704360962,"z":"7c29bc30.d765f4","wires":[["8a884ea5.ec393"]]},{"id":"8a884ea5.ec393","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=\"Cannot delete the service because there are VNFs defined\" />\n","comments":"","x":822.8571395874023,"y":668.5713586807251,"z":"7c29bc30.d765f4","wires":[]},{"id":"b92a5b71.d162a8","type":"set","name":"clear service-data and service-status","xml":"<set>\n<parameter name='service-data.' value='' />\n<parameter name='service-status.' value='' />\n","comments":"","x":517.142936706543,"y":1061.9048373699188,"z":"7c29bc30.d765f4","wires":[]},{"id":"9e32e2cd.2f93f","type":"dgstart","name":"DGSTART","outputs":1,"x":102.38098907470703,"y":81.66665744781494,"z":"7c29bc30.d765f4","wires":[["fe0ea62e.59c648"]]},{"id":"fe0ea62e.59c648","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":216.23812866210938,"y":123.33334136009216,"z":"7c29bc30.d765f4","wires":[["799e4a2f.a2d2e4"]]},{"id":"799e4a2f.a2d2e4","type":"method","name":"method service-topology-operation-delete","xml":"<method rpc='service-topology-operation-delete' mode='sync'>\n","comments":"","outputs":1,"x":202.5239028930664,"y":164.5237967967987,"z":"7c29bc30.d765f4","wires":[["aef46672.32e008"]]},{"id":"21b88544.c785ba","type":"comment","name":"service-topology-operation-delete","info":"","comments":"","x":496.72584533691406,"y":29.25300121307373,"z":"7c29bc30.d765f4","wires":[]},{"id":"259c5f9d.50c88","type":"switchNode","name":"switch service-data.service-topology.service-topology-identifier.service-instance-id","xml":"<switch test='`$service-data.service-topology.service-topology-identifier.service-instance-id`'>\n","comments":"","outputs":1,"x":666.1904983520508,"y":239.52381801605225,"z":"7c29bc30.d765f4","wires":[["e29856c8.930a48"]]},{"id":"e29856c8.930a48","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1037.6191177368164,"y":239.5238344669342,"z":"7c29bc30.d765f4","wires":[["34341e27.4dbad2"]]},{"id":"1d1760c1.03d87f","type":"switchNode","name":"switch service-data.service-level-oper-status.order-status","xml":"<switch test='`$service-data.service-level-oper-status.order-status`'>\n","comments":"","outputs":1,"x":586.1904907226562,"y":395.23810863494873,"z":"7c29bc30.d765f4","wires":[["28371aab.9efba6","29a52a3a.2e43b6"]]},{"id":"28371aab.9efba6","type":"outcome","name":"PendingDelete","xml":"<outcome value='PendingDelete'>\n","comments":"","outputs":1,"x":907.6190512520925,"y":379.52380793435236,"z":"7c29bc30.d765f4","wires":[["35f0b1e7.1a890e"]]},{"id":"29a52a3a.2e43b6","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":881.9047584533691,"y":423.8095369338989,"z":"7c29bc30.d765f4","wires":[["49ade992.379b48"]]},{"id":"49ade992.379b48","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=\"`'Order status is ' + $service-data.service-level-oper-status.order-status\n       + ' but must be PendingDelete'`\" />\n","comments":"","x":1081.904800415039,"y":422.3809595108032,"z":"7c29bc30.d765f4","wires":[]},{"id":"35f0b1e7.1a890e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1084.761978149414,"y":378.095253944397,"z":"7c29bc30.d765f4","wires":[[]]},{"id":"1695e7ba.b35d28","type":"switchNode","name":"switch provided-allotted-resource length","xml":"<switch test='`$service-data.provided-allotted-resources.provided-allotted-resource_length`'>\n","comments":"","outputs":1,"x":530.7143096923828,"y":754.999927520752,"z":"7c29bc30.d765f4","wires":[["bfa901c7.15423","f2c37277.09bbc","e598c481.9b2198"]]},{"id":"bfa901c7.15423","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":772.380802154541,"y":754.9999074935913,"z":"7c29bc30.d765f4","wires":[["7a223dc8.1e6394"]]},{"id":"f2c37277.09bbc","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":772.3808250427246,"y":796.666615486145,"z":"7c29bc30.d765f4","wires":[["8d60d37d.d73d7"]]},{"id":"8d60d37d.d73d7","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=\"Cannot deactivate this service because there are provided allotted resources\" />\n","comments":"","x":920.714225769043,"y":796.6665353775024,"z":"7c29bc30.d765f4","wires":[]},{"id":"7a223dc8.1e6394","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":902.3808288574219,"y":733.3332815170288,"z":"7c29bc30.d765f4","wires":[[]]},{"id":"c99ede40.d4217","type":"switchNode","name":"switch consumed-allotted-resource length","xml":"<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\n","comments":"","outputs":1,"x":535.7142791748047,"y":878.3332653045654,"z":"7c29bc30.d765f4","wires":[["731f21d2.cec17","aa38afff.d1e8e","3ae07b30.2e4444"]]},{"id":"731f21d2.cec17","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":770.7141189575195,"y":878.3332443237305,"z":"7c29bc30.d765f4","wires":[["5628499e.e4eda8"]]},{"id":"aa38afff.d1e8e","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":770.7141571044922,"y":918.3332662582397,"z":"7c29bc30.d765f4","wires":[["b08801cb.37837"]]},{"id":"b08801cb.37837","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=\"Cannot deactivate this service because there are consumed allotted resources\" />\n","comments":"","x":920.7141647338867,"y":919.999852180481,"z":"7c29bc30.d765f4","wires":[]},{"id":"5628499e.e4eda8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":899.0474548339844,"y":854.9999303817749,"z":"7c29bc30.d765f4","wires":[[]]},{"id":"e598c481.9b2198","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":774.0475616455078,"y":713.333291053772,"z":"7c29bc30.d765f4","wires":[["7a223dc8.1e6394"]]},{"id":"3ae07b30.2e4444","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":772.3808631896973,"y":838.3333044052124,"z":"7c29bc30.d765f4","wires":[["5628499e.e4eda8"]]},{"id":"34341e27.4dbad2","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=\"`'Service ' + $service-topology-operation-input.service-information.service-instance-id + ' is not found'`\" />\n","comments":"","x":1189.0476303100586,"y":239.99997997283936,"z":"7c29bc30.d765f4","wires":[]},{"id":"defd6c35.e8fab","type":"call","name":"call GENERIC-RESOURCE-API:naming-policy-generate-name","xml":"<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n","comments":"","outputs":1,"x":601.4285583496094,"y":1015.8245198726654,"z":"7c29bc30.d765f4","wires":[[]]},{"id":"892c2ebc.f2f41","type":"set","name":"set variables for deleting name","xml":"<set>\n<parameter name='naming-policy-generate-name-input.naming-type' value='SERVICE' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />\n<parameter name='naming-policy-generate-name-input.query-parameter' value='`$service-data.service-topology.onap-model-information.model-uuid`' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n","comments":"","x":502.857177734375,"y":968.681590795517,"z":"7c29bc30.d765f4","wires":[]},{"id":"3511dc91.30aac4","type":"comment","name":"check removed with US622450","info":"","comments":"","x":334.28570556640625,"y":357.1428680419922,"z":"7c29bc30.d765f4","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation.json
new file mode 100644
index 0000000..a07e9ab
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_service-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"6a14a468.da6abc","type":"dgstart","name":"DGSTART","outputs":1,"x":135.71429443359375,"y":81.42857360839844,"z":"4ed90c4.07509f4","wires":[["f10ec926.823838"]]},{"id":"f10ec926.823838","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,"y":121.66668510437012,"z":"4ed90c4.07509f4","wires":[["ad418b5c.6c5988"]]},{"id":"ad418b5c.6c5988","type":"method","name":"method service-topology-operation","xml":"<method rpc='service-topology-operation' mode='sync'>\n","comments":"","outputs":1,"x":214.1429214477539,"y":161.42856788635254,"z":"4ed90c4.07509f4","wires":[["3239b298.10498e"]]},{"id":"13ec5291.0d0a1d","type":"comment","name":"service-topology-operation","info":"","comments":"","x":530.0591506958008,"y":29.014917373657227,"z":"4ed90c4.07509f4","wires":[]},{"id":"3239b298.10498e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":210.21434020996094,"y":362.4554252624512,"z":"4ed90c4.07509f4","wires":[["3668554a.700daa","7a3674ed.cf323c","7019824c.3382bc","49db98f4.253db8"]]},{"id":"3668554a.700daa","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":496.9047393798828,"y":579.2861328125,"z":"4ed90c4.07509f4","wires":[]},{"id":"7019824c.3382bc","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$service-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":502.1904067993164,"y":434.95235443115234,"z":"4ed90c4.07509f4","wires":[["e48cbaf7.20aff8","f0e2050b.47c8a8","89b14c02.f1afb","f4505bba.852cc8","14d6da3a.b4b4e6"]]},{"id":"e48cbaf7.20aff8","type":"outcome","name":"assign","xml":"<outcome value='assign'>\n","comments":"","outputs":1,"x":711.5713729858398,"y":340.2381706237793,"z":"4ed90c4.07509f4","wires":[["f3ba7edd.6a6a5"]]},{"id":"f0e2050b.47c8a8","type":"outcome","name":"delete","xml":"<outcome value='delete'>\n","comments":"","outputs":1,"x":710.9523544311523,"y":434.7622137069702,"z":"4ed90c4.07509f4","wires":[["840fa306.5e88c"]]},{"id":"f4505bba.852cc8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":709.9998474121094,"y":532.1904163360596,"z":"4ed90c4.07509f4","wires":[["48ed0991.193568"]]},{"id":"7a3674ed.cf323c","type":"set","name":"copy input to service-data","xml":"<set>\n<parameter name='service-data.sdnc-request-header.' value='`$service-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.request-information.' value='`$service-topology-operation-input.request-information.`' />\n<parameter name='service-data.service-information.' value='`$service-topology-operation-input.service-information.`' />\n<parameter name='service-data.service-request-input.' value='`$service-topology-operation-input.service-request-input.`' />\n","comments":"","x":528.869026184082,"y":282.6548128128052,"z":"4ed90c4.07509f4","wires":[]},{"id":"48ed0991.193568","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-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n","comments":"","x":897.6187934875488,"y":531.6190710067749,"z":"4ed90c4.07509f4","wires":[]},{"id":"49db98f4.253db8","type":"call","name":"call GENERIC-RESOURCE-API:validate-service-input","xml":"<call module='GENERIC-RESOURCE-API' rpc='validate-service-input' mode='sync' >\n","comments":"","outputs":1,"x":616.1309280395508,"y":234.4762725830078,"z":"4ed90c4.07509f4","wires":[[]]},{"id":"f3ba7edd.6a6a5","type":"call","name":"call GENERIC-RESOURCE-API:service-topology-operation-assign","xml":"<call module='GENERIC-RESOURCE-API' rpc='service-topology-operation-assign' mode='sync' >\n","comments":"","outputs":1,"x":1064.1427268981934,"y":341.23822116851807,"z":"4ed90c4.07509f4","wires":[[]]},{"id":"f7d9dd61.75bc9","type":"call","name":"call GENERIC-RESOURCE-API:service-topology-operation-deactivate","xml":"<call module='GENERIC-RESOURCE-API' rpc='service-topology-operation-deactivate' mode='sync' >\n","comments":"","outputs":1,"x":1077.1426811218262,"y":388.23821544647217,"z":"4ed90c4.07509f4","wires":[[]]},{"id":"840fa306.5e88c","type":"call","name":"call GENERIC-RESOURCE-API:service-topology-operation-delete","xml":"<call module='GENERIC-RESOURCE-API' rpc='service-topology-operation-delete' mode='sync' >\n","comments":"","outputs":1,"x":1065.4759521484375,"y":434.9049348831177,"z":"4ed90c4.07509f4","wires":[[]]},{"id":"89b14c02.f1afb","type":"outcome","name":"deactivate","xml":"<outcome value='deactivate'>\n","comments":"","outputs":1,"x":722.3808212280273,"y":388.4763011932373,"z":"4ed90c4.07509f4","wires":[["f7d9dd61.75bc9"]]},{"id":"14d6da3a.b4b4e6","type":"outcome","name":"changeassign","xml":"<outcome value='changeassign'>\n","comments":"","outputs":1,"x":730.0000152587891,"y":482.85716915130615,"z":"4ed90c4.07509f4","wires":[["95a4460e.7a1f68"]]},{"id":"95a4460e.7a1f68","type":"call","name":"call GENERIC-RESOURCE-API:service-topology-operation-changeassign","xml":"<call module='GENERIC-RESOURCE-API' rpc='service-topology-operation-changeassign' mode='sync' >\n","comments":"","outputs":1,"x":1087.9521865844727,"y":482.42845726013184,"z":"4ed90c4.07509f4","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-activate.json
new file mode 100644
index 0000000..dc299bb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-activate.json
@@ -0,0 +1 @@
+[{"id":"981e056f.00e92","type":"dgstart","name":"DGSTART","outputs":1,"x":144,"y":93,"z":"58a990e2.9c1408","wires":[["cd88fdf4.d26cb8"]]},{"id":"cd88fdf4.d26cb8","type":"service-logic","name":"GENERIC-RESOURCE-API 1.1.0-SNAPSHOT-111701","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.23807907104492,"y":153.95239067077637,"z":"58a990e2.9c1408","wires":[["deb4f99a.917d9"]]},{"id":"deb4f99a.917d9","type":"method","name":"tunnelxconn-topology-operation-activate","xml":"<method rpc='tunnelxconn-topology-operation-activate' mode='sync'>\n","comments":"","outputs":1,"x":286.15485763549805,"y":189.19044589996338,"z":"58a990e2.9c1408","wires":[["1b3faaa6.b124c5"]]},{"id":"1b3faaa6.b124c5","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":194.47619247436523,"y":332.5237879753113,"z":"58a990e2.9c1408","wires":[["1307f869.2b6cd8","809972ef.32aa68","abd5e0c.9a04a2","3a16a190.19236e","7c15294.f6d20d8","a59e6cd5.d18278","4659a1a.641356","5581c8c3.58ae58","a8fc0526.9f7d6","a061c39.68b194","e19d9646.79311","a072200f.8e7178"]]},{"id":"809972ef.32aa68","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":461.0001106262207,"y":1002.2145080566406,"z":"58a990e2.9c1408","wires":[]},{"id":"1307f869.2b6cd8","type":"set","name":"set output to api handler","xml":"<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='tunnelxconn-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $tunnelxconn-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n","comments":"","x":489.75402450561523,"y":966.3370542526245,"z":"58a990e2.9c1408","wires":[]},{"id":"a061c39.68b194","type":"set","name":"set allotted-resource-oper-status","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n","comments":"","x":500.7542190551758,"y":713.0514001846313,"z":"58a990e2.9c1408","wires":[]},{"id":"3a16a190.19236e","type":"set","name":"set tmp.ar.self-link","xml":"<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/tunnelxconn-topology/'` \" />\n\n","comments":"","x":453.73805236816406,"y":324.33332443237305,"z":"58a990e2.9c1408","wires":[]},{"id":"abd5e0c.9a04a2","type":"set","name":"set tmp.ar.allotted-resource-id,etc","xml":"<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.ar.brg-vnf-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.tunnelxconn-vnf-id`' />\n\n\n","comments":"","x":500.997314453125,"y":290.59259033203125,"z":"58a990e2.9c1408","wires":[]},{"id":"7c15294.f6d20d8","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":459.993408203125,"y":360.23152351379395,"z":"58a990e2.9c1408","wires":[[]]},{"id":"4659a1a.641356","type":"execute","name":"execute RestApiCallNode - Get AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":525.5187530517578,"y":503.4594917297363,"z":"58a990e2.9c1408","wires":[["d5420c75.e1a068","8c63e091.1c25a"]]},{"id":"a59e6cd5.d18278","type":"execute","name":"generate allotted-resource url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.tx-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n","comments":"","outputs":1,"x":488.0648422241211,"y":420.0172281265259,"z":"58a990e2.9c1408","wires":[[]]},{"id":"d5420c75.e1a068","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":782.8148918151855,"y":502.26725220680237,"z":"58a990e2.9c1408","wires":[["35fdf191.06bf8e"]]},{"id":"5581c8c3.58ae58","type":"execute","name":"execute RestApiCallNode - PUT AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":533.5293121337891,"y":856.4341316223145,"z":"58a990e2.9c1408","wires":[["777acde7.9ef674","20c6b40.7c54d4c","933655b0.cd72e8"]]},{"id":"777acde7.9ef674","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":803.837329864502,"y":909.432332418859,"z":"58a990e2.9c1408","wires":[["b19ae1f0.49793"]]},{"id":"20c6b40.7c54d4c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":794.8373794555664,"y":877.9323581680655,"z":"58a990e2.9c1408","wires":[["b19ae1f0.49793"]]},{"id":"933655b0.cd72e8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":798.5874176025391,"y":848.2894630432129,"z":"58a990e2.9c1408","wires":[["5ddd3ee.6ad194"]]},{"id":"b19ae1f0.49793","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 updating md-sal for tunnelxconn-allotted-resource\" />\n","comments":"","x":964.5874176025391,"y":878.6823820099235,"z":"58a990e2.9c1408","wires":[]},{"id":"35fdf191.06bf8e","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":963.8148460388184,"y":502.7672016620636,"z":"58a990e2.9c1408","wires":[["7b5dcd10.39bc8c","e690203.d87676"]]},{"id":"7b5dcd10.39bc8c","type":"switchNode","name":"switch tx length","xml":"<switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>\n","comments":"","outputs":1,"x":1209.6720924377441,"y":537.052964925766,"z":"58a990e2.9c1408","wires":[["6c133fab.55436"]]},{"id":"6c133fab.55436","type":"other","name":"outcome 1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1400.6720962524414,"y":537.0529625415802,"z":"58a990e2.9c1408","wires":[["29b0d828.00bad"]]},{"id":"77bfd621.2d5df8","type":"set","name":"set tx-ar from get","xml":"<set>\n<parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />\n","comments":"","x":1800.5292320251465,"y":537.6243867874146,"z":"58a990e2.9c1408","wires":[]},{"id":"29b0d828.00bad","type":"block","name":"block: atomic","xml":"<block atomic='true'>\n","atomic":"false","comments":"","outputs":1,"x":1571.5290794372559,"y":537.6244316101074,"z":"58a990e2.9c1408","wires":[["77bfd621.2d5df8","c0f2542e.da588","9bfcca3f.570378"]]},{"id":"c0f2542e.da588","type":"set","name":"set oper-status","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n","comments":"","x":1798.5294761657715,"y":605.0529508590698,"z":"58a990e2.9c1408","wires":[]},{"id":"81df98f1.37d4d","type":"comment","name":"GET tunnelxconn-allotted-resource from mdsal","info":"","comments":"","x":550.8148155212402,"y":466.7671926021576,"z":"58a990e2.9c1408","wires":[]},{"id":"9bfcca3f.570378","type":"switchNode","name":"switch order-status","xml":"<switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1808.52925491333,"y":570.6243848800659,"z":"58a990e2.9c1408","wires":[["a1591402.ef402","263fbca1.ee9e44"]]},{"id":"a1591402.ef402","type":"outcome","name":"outcome Created","xml":"<outcome value='Created'>\n","comments":"","outputs":1,"x":2020.1292114257812,"y":531.6243848800659,"z":"58a990e2.9c1408","wires":[["dcaba266.f2c058"]]},{"id":"263fbca1.ee9e44","type":"outcome","name":"outcome Other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2045.8435859680176,"y":567.052975654602,"z":"58a990e2.9c1408","wires":[["dcaba266.f2c058"]]},{"id":"868474a4.fe42d","type":"comment","name":"Set allotted-resource-identifiers","info":"","comments":"","x":506.33863830566406,"y":557.3386459350586,"z":"58a990e2.9c1408","wires":[]},{"id":"e690203.d87676","type":"set","name":"save backup copy of mdsal-ar for rollback","xml":"<set>\n<parameter name='bk-tx-ar' value='$mdsal-ar.' />\n","comments":"","x":1289.3864250183105,"y":502.76729369163513,"z":"58a990e2.9c1408","wires":[]},{"id":"15b321eb.5032de","type":"comment","name":"Create urls for restapi","info":"","comments":"","x":458.95764923095703,"y":389.6243553161621,"z":"58a990e2.9c1408","wires":[]},{"id":"5ddd3ee.6ad194","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":940.2433853149414,"y":844.481632232666,"z":"58a990e2.9c1408","wires":[[]]},{"id":"dc646785.b390d","type":"comment","name":"TO DO: vnf/put parent","info":"","comments":"","x":464.2433776855469,"y":745.1481952667236,"z":"58a990e2.9c1408","wires":[]},{"id":"a8fc0526.9f7d6","type":"execute","name":"execute getTime","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n","comments":"","outputs":1,"x":448.24338150024414,"y":674.4815549850464,"z":"58a990e2.9c1408","wires":[[]]},{"id":"8c63e091.1c25a","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":782.5766868591309,"y":538.4814250469208,"z":"58a990e2.9c1408","wires":[["55d3815f.d40af8"]]},{"id":"55d3815f.d40af8","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":962.5766372680664,"y":539.1479756832123,"z":"58a990e2.9c1408","wires":[[]]},{"id":"e19d9646.79311","type":"set","name":"set id","xml":"<set>\n<parameter name='tx-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='tx-ar.allotted-resource-status.action' value=\"`$tunnelxconn-topology-operation-input.request-information.request-action` \" />\n<parameter name='tx-ar.allotted-resource-status.rpc-name' value=\"tunnelxconn-topology-operation\" />\n<parameter name='tx-ar.allotted-resource-status.rpc-action' value=\"`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$tunnelxconn-topology-operation-input.request-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$tunnelxconn-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$tunnelxconn-topology-operation-input.service-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$tunnelxconn-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value=\"`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` \" />","comments":"","x":431.24342346191406,"y":594.1481666564941,"z":"58a990e2.9c1408","wires":[]},{"id":"dcaba266.f2c058","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2234.5997276306152,"y":533.0000190734863,"z":"58a990e2.9c1408","wires":[[]]},{"id":"a072200f.8e7178","type":"update","name":"update AAI allotted-resource","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $tunnelxconn-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $tunnelxconn-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"operational-status\" value=\"in-service-path\" />\n\n\n<!--\n\n<set>\n$tunnelxconn-topology-operation-input.service-information.global-customer-id\n$tunnelxconn-topology-operation-input.service-information.subscription-service-type\n\n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-data.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n\t\t\t\n\t\t\t$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id\n\t\t\t\n-->","comments":"","outputs":1,"x":491.85716247558594,"y":778.2380628585815,"z":"58a990e2.9c1408","wires":[["d29c55c2.14d6","287d76d.31b2f0a"]]},{"id":"d29c55c2.14d6","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":747.6190567016602,"y":761.1905598640442,"z":"58a990e2.9c1408","wires":[["2918b200.d40266"]]},{"id":"2918b200.d40266","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=\"AAI failed\" />\n","comments":"","x":914.142936706543,"y":772.8096308708191,"z":"58a990e2.9c1408","wires":[]},{"id":"287d76d.31b2f0a","type":"failure","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":754.7143440246582,"y":793.9525275230408,"z":"58a990e2.9c1408","wires":[["2918b200.d40266"]]},{"id":"be5072e4.33f558","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":236,"y":785,"z":"58a990e2.9c1408","wires":[]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-assign.json
new file mode 100644
index 0000000..534d0c5
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-assign.json
@@ -0,0 +1 @@
+[{"id":"7d9b54af.272da4","type":"dgstart","name":"DGSTART","outputs":1,"x":263.8833312988281,"y":143,"z":"7fadb4ab.c53bec","wires":[["919a0a7b.5333b"]]},{"id":"919a0a7b.5333b","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":360.12141036987305,"y":203.95239067077637,"z":"7fadb4ab.c53bec","wires":[["7f78c9a2.2df718"]]},{"id":"7f78c9a2.2df718","type":"method","name":"tunnelxconn-topology-operation-assign","xml":"<method rpc='tunnelxconn-topology-operation-assign' mode='sync'>\n","comments":"","outputs":1,"x":411.0381889343262,"y":239.19044589996338,"z":"7fadb4ab.c53bec","wires":[["ae21d4fb.c30b38"]]},{"id":"ae21d4fb.c30b38","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":314.35952377319336,"y":382.5237879753113,"z":"7fadb4ab.c53bec","wires":[["83f83b2b.016708","767a3049.d08f1","af2f1a45.adbd08","9f48afd3.f6e63","d28ebab3.9126c"]]},{"id":"13ab7d5.78d2b03","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":1157.5499877929688,"y":2309.5477046966553,"z":"7fadb4ab.c53bec","wires":[]},{"id":"dab5dce8.609ec8","type":"set","name":"set output to api handler","xml":"<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='tunnelxconn-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $tunnelxconn-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n","comments":"","x":1194.6373863220215,"y":2188.432439804077,"z":"7fadb4ab.c53bec","wires":[]},{"id":"3cee9d90.ad9fb2","type":"set","name":"set allotted-resource-oper-status","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingCreate' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n","comments":"","x":1283.7961730957031,"y":1536.0673828125,"z":"7fadb4ab.c53bec","wires":[]},{"id":"767a3049.d08f1","type":"set","name":"set tmp.ar.self-link","xml":"<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/tunnelxconn-topology/'` \" />\n\n","comments":"","x":760.6213684082031,"y":250.33331298828125,"z":"7fadb4ab.c53bec","wires":[]},{"id":"83f83b2b.016708","type":"set","name":"set tmp.ar.allotted-resource-id,etc","xml":"<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n<parameter name='tmp.search.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n\n","comments":"","x":808.8806457519531,"y":206.59259033203125,"z":"7fadb4ab.c53bec","wires":[]},{"id":"e45cb65d.492d9","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":947.6982116699219,"y":422.26727294921875,"z":"7fadb4ab.c53bec","wires":[["66a3f98d.ffa7d8"]]},{"id":"c7e2e195.80b4c","type":"execute","name":"execute RestApiCallNode - PUT AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":1287.7459564208984,"y":1830.1008231639862,"z":"7fadb4ab.c53bec","wires":[["160f416c.c5ff07","798a20bf.db2ba","9b6cbfce.dded58"]]},{"id":"160f416c.c5ff07","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1556.3873329162598,"y":1881.4322349056602,"z":"7fadb4ab.c53bec","wires":[["81b5b1b4.388b98"]]},{"id":"798a20bf.db2ba","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1547.3873825073242,"y":1849.9322606548667,"z":"7fadb4ab.c53bec","wires":[["81b5b1b4.388b98"]]},{"id":"9b6cbfce.dded58","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1551.1374206542969,"y":1820.289365530014,"z":"7fadb4ab.c53bec","wires":[["a48fe088.c8a28"]]},{"id":"81b5b1b4.388b98","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 updating md-sal for tunnelxconn-allotted-resource\" />\n","comments":"","x":1713.1374816894531,"y":1877.6822509765625,"z":"7fadb4ab.c53bec","wires":[]},{"id":"fd7f6b9b.715c08","type":"set","name":"set oper-status","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n","comments":"","x":1295.4127197265625,"y":539.0529174804688,"z":"7fadb4ab.c53bec","wires":[]},{"id":"9e693e8b.6d829","type":"comment","name":"Save consumed-allotted-resources to mdsal","info":"","comments":"","x":1324.1268615722656,"y":1345.7196044921875,"z":"7fadb4ab.c53bec","wires":[]},{"id":"4f968092.a4f4e8","type":"comment","name":"GET tunnelxconn-allotted-resource from mdsal","info":"","comments":"","x":670.6981506347656,"y":392.7672119140625,"z":"7fadb4ab.c53bec","wires":[]},{"id":"66a3f98d.ffa7d8","type":"returnFailure","name":"return failure - tunnelxconn already exists","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\" \n    value=\"`'Existing tunnelxconn-allotted-resource with order status of ' + $mdsal-ar.tunnelxconn-allotted-resource.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`\" />\n","comments":"","x":1257.0124816894531,"y":417.6243896484375,"z":"7fadb4ab.c53bec","wires":[]},{"id":"a9cf7967.8dc92","type":"set","name":"set tx-ar-identifiers","xml":"<set>\n<parameter name='tx-ar-identifiers.consuming-service-instance-id' value=\"`$tunnelxconn-topology-operation-input.service-information.service-instance-id` \" />\n<parameter name='tx-ar-identifiers.parent-service-instance-id' value=\"`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n<parameter name='tx-ar-identifiers.allotted-resource-type' value=\"`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type` \" />\n<parameter name='tx-ar-identifiers.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n\n","comments":"","x":1307.2695617675781,"y":616.6243896484375,"z":"7fadb4ab.c53bec","wires":[]},{"id":"ca14b507.29986","type":"comment","name":"Set allotted-resource-identifiers","info":"","comments":"","x":1334.2219543457031,"y":575.338623046875,"z":"7fadb4ab.c53bec","wires":[]},{"id":"535c6ca9.04b234","type":"set","name":"set identifiers in overall structure","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.' value=\"`$tx-ar-identifiers.`\" />\n\n\n","comments":"","x":1324.2695617675781,"y":924.910400390625,"z":"7fadb4ab.c53bec","wires":[]},{"id":"cc85212.a969c6","type":"set","name":"set ecomp model information from input","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.' \nvalue=\"`$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.`\" />\n\n\n","comments":"","x":1352.8410949707031,"y":659.9100952148438,"z":"7fadb4ab.c53bec","wires":[]},{"id":"6ca7d4e3.5c66dc","type":"switchNode","name":"switch model-invariant-uuid is null","xml":"<switch test='$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid'>\n","comments":"","outputs":1,"x":1333.6981506347656,"y":699.195809841156,"z":"7fadb4ab.c53bec","wires":[["67ca668d.30b6d"]]},{"id":"67ca668d.30b6d","type":"outcome","name":"outcome null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1560.8410301208496,"y":700.6243271827698,"z":"7fadb4ab.c53bec","wires":[["89650115.f7bf4"]]},{"id":"89650115.f7bf4","type":"set","name":"set model-invariant-uuid","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-invariant-uuid' \nvalue=\"`$ar-model.invariant-uuid`\" />\n\n\n","comments":"","x":1762.269603729248,"y":700.0528798103333,"z":"7fadb4ab.c53bec","wires":[]},{"id":"bab20b2d.5ec94","type":"switchNode","name":"switch model-uuid is null","xml":"<switch test='$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid'>\n","comments":"","outputs":1,"x":1305.1267471313477,"y":733.4815106391907,"z":"7fadb4ab.c53bec","wires":[["1e018b1c.8ec1b5"]]},{"id":"1e018b1c.8ec1b5","type":"outcome","name":"outcome null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1506.5553131103516,"y":734.0529322624207,"z":"7fadb4ab.c53bec","wires":[["85a72f0b.6be43"]]},{"id":"85a72f0b.6be43","type":"set","name":"set model-uuid","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-uuid' \nvalue=\"`$ar-model.uuid`\" />\n\n\n","comments":"","x":1699.4124717712402,"y":734.0528540611267,"z":"7fadb4ab.c53bec","wires":[]},{"id":"b22d9542.13c138","type":"switchNode","name":"switch model-version is null","xml":"<switch test='$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-version'>\n","comments":"","outputs":1,"x":1313.6981506347656,"y":775.338623046875,"z":"7fadb4ab.c53bec","wires":[["12fa49ff.c356ce"]]},{"id":"12fa49ff.c356ce","type":"outcome","name":"outcome null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1563.6981315612793,"y":766.3386225700378,"z":"7fadb4ab.c53bec","wires":[["8190eb5d.8dacd"]]},{"id":"8190eb5d.8dacd","type":"set","name":"set model-version","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-version' \nvalue=\"`$ar-model.version`\" />\n\n\n","comments":"","x":1756.555290222168,"y":766.3385443687439,"z":"7fadb4ab.c53bec","wires":[]},{"id":"6bf23401.01e8ac","type":"switchNode","name":"switch ar-model.ecomp-generated-naming","xml":"<switch test='`$ar-model.ecomp-generated-naming`'>\n","comments":"","outputs":1,"x":1377.2695617675781,"y":868.7672729492188,"z":"7fadb4ab.c53bec","wires":[["3a7c67cc.e92438","4f05c4e2.66085c"]]},{"id":"3a7c67cc.e92438","type":"other","name":"outcome Y","xml":"<outcome value='Y'>\n","comments":"","outputs":1,"x":1663.2696228027344,"y":868.1958618164062,"z":"7fadb4ab.c53bec","wires":[["d04b0076.d8ee"]]},{"id":"d04b0076.d8ee","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">\n","atomic":"true","comments":"","outputs":1,"x":1817.0196838378906,"y":870.69580078125,"z":"7fadb4ab.c53bec","wires":[["1e20163.4688aea"]]},{"id":"4f05c4e2.66085c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1682.4919738769531,"y":957.1958618164062,"z":"7fadb4ab.c53bec","wires":[["c0aa79c6.3f38"]]},{"id":"c0aa79c6.3f38","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 in allotted-resource-model data.  Ecomp-generated-naming should be true\" />\n\n","comments":"","x":1865.4919738769531,"y":962.1958618164062,"z":"7fadb4ab.c53bec","wires":[]},{"id":"1e20163.4688aea","type":"switchNode","name":"switch ar-model.ecomp-generated-naming","xml":"<switch test='`$ar-model.naming-policy`'>\n","comments":"","outputs":1,"x":1953.2695617675781,"y":919.767333984375,"z":"7fadb4ab.c53bec","wires":[["605d4ebf.646cc","ecc0b48f.93f14"]]},{"id":"605d4ebf.646cc","type":"other","name":"outcome oam_network_policy","xml":"<outcome value='oam_network_policy'>\n","comments":"","outputs":1,"x":2328.127471923828,"y":923.3453369140625,"z":"7fadb4ab.c53bec","wires":[["1401e9bb.56aa2e"]]},{"id":"ecc0b48f.93f14","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2242.555206298828,"y":1000.1958618164062,"z":"7fadb4ab.c53bec","wires":[["1401e9bb.56aa2e"]]},{"id":"2b53ceb6.6d45a2","type":"set","name":"set ar_name","xml":"<set>\n<parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />\n","comments":"","x":2633.984161376953,"y":958.7672729492188,"z":"7fadb4ab.c53bec","wires":[]},{"id":"772444e4.c57dbc","type":"execute","name":"execute SliStringUtils - replace TenantOAMNetworkRole","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ar-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-name\"/>\n    <parameter name=\"target\" value=\"$TenantOAMNetworkRole\"/>\n    <parameter name=\"replacement\" value=\"`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.untrusted-network-role`\"/>\n\n","comments":"","outputs":1,"x":2778.1271171569824,"y":1002.6244196891785,"z":"7fadb4ab.c53bec","wires":[[]]},{"id":"fe7b7b65.196628","type":"execute","name":"execute SliStringUtils - replace LandingNetworkRole","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.ar-name`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-name\"/>\n    <parameter name=\"target\" value=\"$LandingNetworkRole\"/>\n    <parameter name=\"replacement\" value=\"`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.trusted-network-role`\"/>\n\n","comments":"","outputs":1,"x":2765.127227783203,"y":1042.7672729492188,"z":"7fadb4ab.c53bec","wires":[[]]},{"id":"1401e9bb.56aa2e","type":"block","name":"block: atomic","xml":"<block atomic='true'>\n","atomic":"false","comments":"","outputs":1,"x":2442.4125328063965,"y":998.3387522697449,"z":"7fadb4ab.c53bec","wires":[["2b53ceb6.6d45a2","772444e4.c57dbc","fe7b7b65.196628","c9f08b8c.4541c"]]},{"id":"c9f08b8c.4541c","type":"set","name":"set identifiers.allotted-resource-name","xml":"<set>\n<parameter name='tx-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />\n","comments":"","x":2722.983917236328,"y":1093.052978515625,"z":"7fadb4ab.c53bec","wires":[]},{"id":"53be8c2a.7ac224","type":"set","name":"set assignments in overall structure","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.' \nvalue=\"`$tx-ar-assignments.`\" />\n\n\n","comments":"","x":1299.7457580566406,"y":1301.6246337890625,"z":"7fadb4ab.c53bec","wires":[]},{"id":"218ac52a.07c662","type":"set","name":"Handle tx-ar-assignments","xml":"<set>\n<parameter name='tx-ar-assignments.vni' value='`$tmp.manageVni.vni`'/>\n<parameter name='tx-ar-assignments.vgmux-bearer-ip' value='`$tmp.vgmux-bearer-ip`'/>\n<parameter name='tx-ar-assignments.vgmux-lan-ip' value='`$tmp.vgmux-lan-ip`'/>\n<parameter name='tx-ar-assignments.vg-ip' value='`$tmp.manageIpaddr.ip`'/>\n\n","comments":"","x":1277.4123840332031,"y":1204.052978515625,"z":"7fadb4ab.c53bec","wires":[]},{"id":"2dd46ad.0c3ba16","type":"for","name":"for cidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]","xml":"<for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n","comments":"","outputs":1,"x":2350.6989135742188,"y":1403.0411586761475,"z":"7fadb4ab.c53bec","wires":[["c650df17.95a668"]]},{"id":"542e8fbf.9a4fc8","type":"switchNode","name":"switch service-data.consumed-allotted-resources_length","xml":"<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\n","comments":"","outputs":1,"x":1356.6981506347656,"y":1396.505126953125,"z":"7fadb4ab.c53bec","wires":[["76a078bc.3ec0c","82bdee16.337b7"]]},{"id":"76a078bc.3ec0c","type":"other","name":"outcome Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1757.0910949707031,"y":1375.1124267578125,"z":"7fadb4ab.c53bec","wires":[["351b39ac.6117b6"]]},{"id":"82bdee16.337b7","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1749.8410949707031,"y":1456.1124267578125,"z":"7fadb4ab.c53bec","wires":[["c7cbb99.60f3748"]]},{"id":"c650df17.95a668","type":"switchNode","name":"switch allotted-resource-id","xml":"<switch test=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n","comments":"","outputs":1,"x":2785.294013977051,"y":1404.85085105896,"z":"7fadb4ab.c53bec","wires":[["4ad63d89.544fbc"]]},{"id":"4ad63d89.544fbc","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2992.1037063598633,"y":1408.064962387085,"z":"7fadb4ab.c53bec","wires":[["3a240ab.9d348f6"]]},{"id":"c7cbb99.60f3748","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1916.7182922363281,"y":1450.488525390625,"z":"7fadb4ab.c53bec","wires":[["2dd46ad.0c3ba16","6f8a4fa6.cf948"]]},{"id":"3a240ab.9d348f6","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3160.365058898926,"y":1412.9222631454468,"z":"7fadb4ab.c53bec","wires":[["85ecd49e.fdba4"]]},{"id":"351b39ac.6117b6","type":"set","name":"set cidx","xml":"<set>\n<parameter name='tmp.cidx' value=\"`0`\" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value=\"1\" />\n\n\n","comments":"","x":1941.9481506347656,"y":1378.32666015625,"z":"7fadb4ab.c53bec","wires":[]},{"id":"85ecd49e.fdba4","type":"set","name":"set tmp.cidx and ctx.consumed-ar","xml":"<set>\n<parameter name='tmp.cidx' value='`$cidx`' />\n<parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />\n<parameter name='tmp.found-cidx' value='true' />","comments":"","x":3406.2225189208984,"y":1407.4937419891357,"z":"7fadb4ab.c53bec","wires":[]},{"id":"774f0d4b.22566c","type":"set","name":"set consumed allotted resources","xml":"<set>\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value=\"`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value=\"`$tmp.ar.self-link` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />\n\n","comments":"","x":1292.5553436279297,"y":1455.826681137085,"z":"7fadb4ab.c53bec","wires":[]},{"id":"a48fe088.c8a28","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1692.7933883666992,"y":1816.4815347194672,"z":"7fadb4ab.c53bec","wires":[[]]},{"id":"10b88a1b.e65316","type":"comment","name":"Add SZ AR to mdsal","info":"","comments":"","x":1219.0315246582031,"y":1766.1956787109375,"z":"7fadb4ab.c53bec","wires":[]},{"id":"28f2d6f4.76e162","type":"execute","name":"execute getTime","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n","comments":"","outputs":1,"x":1236.4758605957031,"y":1497.2275390625,"z":"7fadb4ab.c53bec","wires":[[]]},{"id":"fdad46b0.e22b48","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":953.4599914550781,"y":473.4814453125,"z":"7fadb4ab.c53bec","wires":[["11866c15.7f8684"]]},{"id":"5d145909.4e99d","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":901.4599914550781,"y":969.2908325195312,"z":"7fadb4ab.c53bec","wires":[["774f0d4b.22566c","28f2d6f4.76e162","3cee9d90.ad9fb2","c7e2e195.80b4c","dab5dce8.609ec8","13ab7d5.78d2b03","47bc1534.f83334","fd7f6b9b.715c08","a9cf7967.8dc92","cc85212.a969c6","6ca7d4e3.5c66dc","bab20b2d.5ec94","b22d9542.13c138","6bf23401.01e8ac","535c6ca9.04b234","ba744afc.3e2d2","cea14761.18e528","648b662c.092ab","218ac52a.07c662","53be8c2a.7ac224","542e8fbf.9a4fc8","f5672e19.d9acf8","883befdb.8069d","c7292ce.87518d","66b81cf7.857b44","364d0b19.d4c844"]]},{"id":"47bc1534.f83334","type":"set","name":"set id","xml":"<set>\n<parameter name='tx-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='tx-ar.allotted-resource-status.action' value=\"`$tunnelxconn-topology-operation-input.request-information.request-action` \" />\n<parameter name='tx-ar.allotted-resource-status.rpc-name' value=\"tunnelxconn-topology-operation\" />\n<parameter name='tx-ar.allotted-resource-status.rpc-action' value=\"`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$tunnelxconn-topology-operation-input.request-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$tunnelxconn-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$tunnelxconn-topology-operation-input.service-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$tunnelxconn-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value=\"`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` \" />","comments":"","x":1270.1267395019531,"y":495.433837890625,"z":"7fadb4ab.c53bec","wires":[]},{"id":"66b81cf7.857b44","type":"update","name":"update AAI allotted-resource","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-data.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"description\" value=\"`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type`\" />\n\t<parameter name=\"selflink\" value=\"`$tmp.ar.self-link`\" />\n\t<parameter name=\"model-invariant-id\" value=\"`$ar-model.invariant-uuid`\" />\n\t<parameter name=\"model-version-id\" value=\"`$ar-model.uuid`\" />\n\t<parameter name=\"operational-status\" value=\"null\" />","comments":"","outputs":1,"x":1259.2695617675781,"y":1693.799072265625,"z":"7fadb4ab.c53bec","wires":[["d58aab1e.918b38","9847d7ac.37a148"]]},{"id":"d58aab1e.918b38","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1509.6981735229492,"y":1680.5292553901672,"z":"7fadb4ab.c53bec","wires":[["e8d78986.f604c8"]]},{"id":"e8d78986.f604c8","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=\"AAI failed\" />\n","comments":"","x":1678.2220764160156,"y":1682.1483154296875,"z":"7fadb4ab.c53bec","wires":[]},{"id":"9847d7ac.37a148","type":"failure","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1520.7934875488281,"y":1735.291259765625,"z":"7fadb4ab.c53bec","wires":[["e8d78986.f604c8"]]},{"id":"6f8a4fa6.cf948","type":"switchNode","name":"switch tmp.found-cidx","xml":"<switch test='`$tmp.found-cidx`'>\n","comments":"","outputs":1,"x":2165.626754760742,"y":1649.2315921783447,"z":"7fadb4ab.c53bec","wires":[["2eecb5f.b469fca"]]},{"id":"2eecb5f.b469fca","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2355.626708984375,"y":1649.2315292358398,"z":"7fadb4ab.c53bec","wires":[["b6b35321.fd9c3"]]},{"id":"b6b35321.fd9c3","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2521.626708984375,"y":1649.2315292358398,"z":"7fadb4ab.c53bec","wires":[["644bef93.9b3f2"]]},{"id":"644bef93.9b3f2","type":"set","name":"set tmp.cidx ","xml":"<set>\n<parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />\n","comments":"","x":2767.484037399292,"y":1649.8030033111572,"z":"7fadb4ab.c53bec","wires":[]},{"id":"dbbca874.430ae","type":"break","name":"break","xml":"<break/>\n","comments":"","x":3325.126739501953,"y":1452.731689453125,"z":"7fadb4ab.c53bec","wires":[]},{"id":"6ca0741e.7e7cf4","type":"execute","name":"execute RestApiCallNode - Update parent provided service AR","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"parent\" />\n\n","comments":"","outputs":1,"x":2043.8355293273926,"y":1816.1904199123383,"z":"7fadb4ab.c53bec","wires":[["fb20c3bf.cc2948","c8aded03.c3dc58","ec52b720.3f0e88"]]},{"id":"5a078a4b.dbcdac","type":"comment","name":"Rollback parent","info":"","comments":"","x":1887.8354568481445,"y":1785.8570504188538,"z":"7fadb4ab.c53bec","wires":[]},{"id":"fb20c3bf.cc2948","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2415.1435775756836,"y":1876.8553862571716,"z":"7fadb4ab.c53bec","wires":[["a380b8a1.d6156"]]},{"id":"c8aded03.c3dc58","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2406.143627166748,"y":1845.3554120063782,"z":"7fadb4ab.c53bec","wires":[["a380b8a1.d6156"]]},{"id":"ec52b720.3f0e88","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":2409.8936653137207,"y":1815.7125168815255,"z":"7fadb4ab.c53bec","wires":[["a380b8a1.d6156"]]},{"id":"a380b8a1.d6156","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2551.549633026123,"y":1811.9046860709786,"z":"7fadb4ab.c53bec","wires":[[]]},{"id":"87327a3.b272b08","type":"comment","name":"Generate naming","info":"","comments":"","x":1308.2696075439453,"y":826.7672252655029,"z":"7fadb4ab.c53bec","wires":[]},{"id":"af2f1a45.adbd08","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":752.8833312988281,"y":295,"z":"7fadb4ab.c53bec","wires":[[]]},{"id":"319efc36.8b7e94","type":"get-resource","name":"get-resource parent service instance","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='vnfs/vnf-list/$tmp.ar.parent-service-instance-id/service-data/' pfx='parent-service-instance' >\n","comments":"","outputs":1,"x":509.8833312988281,"y":634,"z":"7fadb4ab.c53bec","wires":[[]]},{"id":"64cce46e.263344","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1028.8833312988281,"y":570,"z":"7fadb4ab.c53bec","wires":[["5d145909.4e99d"]]},{"id":"24d078da.a6c4b8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":841.8833312988281,"y":671,"z":"7fadb4ab.c53bec","wires":[["d574aab6.f0cbf8"]]},{"id":"d574aab6.f0cbf8","type":"returnFailure","name":"return failure - parent service instance not found","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\" \n    value=\"`'No entry found for parent service instance id ' + $tmp.ar.parent-service-instance-id + '.'`\" />\n","comments":"","x":768.8833312988281,"y":732,"z":"7fadb4ab.c53bec","wires":[]},{"id":"212a1f09.95555","type":"for","name":"for parent vnf parameters","xml":"<for index='curidx' start='0' end='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters_length`' >\n","comments":"","outputs":1,"x":1818.8833312988281,"y":1016,"z":"7fadb4ab.c53bec","wires":[["b1789936.524ea8"]]},{"id":"b1789936.524ea8","type":"switchNode","name":"switch parameter name","xml":"<switch test='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$curidx].vnf-parameter-name`'>\n","comments":"","outputs":1,"x":1940.8833312988281,"y":1108,"z":"7fadb4ab.c53bec","wires":[["127e3224.65c8ae","e9081b35.fae1"]]},{"id":"127e3224.65c8ae","type":"other","name":"vgmux_private_ip_0","xml":"<outcome value='vgmux_private_ip_0'>\n","comments":"","outputs":1,"x":2166.883331298828,"y":1112,"z":"7fadb4ab.c53bec","wires":[["bd74febf.bbf42"]]},{"id":"eb282786.5e9aa","type":"set","name":"set tmp.vgmux-bearer-ip","xml":"<set>\n<parameter name='tmp.vgmux-bearer-ip' value='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$curidx].vnf-parameter-value`'/>\n\n","comments":"","x":2399.8833084106445,"y":1173.0000400543213,"z":"7fadb4ab.c53bec","wires":[]},{"id":"e9081b35.fae1","type":"other","name":"vgmux_private_ip_2","xml":"<outcome value='vgmux_private_ip_2'>\n","comments":"","outputs":1,"x":2168.883331298828,"y":1172,"z":"7fadb4ab.c53bec","wires":[["eb282786.5e9aa"]]},{"id":"bd74febf.bbf42","type":"set","name":"set tmp.vgmux-lan-ip","xml":"<set>\n<parameter name='tmp.vgmux-lan-ip' value='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$curidx].vnf-parameter-value`'/>\n\n","comments":"","x":2389.8833084106445,"y":1115.0000381469727,"z":"7fadb4ab.c53bec","wires":[]},{"id":"ba744afc.3e2d2","type":"set","name":"set default assignments","xml":"<set>\n<parameter name='tmp.vni' value='123' />\n<parameter name='tmp.vgmux-bearer-ip' value='127.0.0.1' />\n<parameter name='tmp.vgmux-lan-ip' value='127.0.0.1' />","comments":"","x":1298.8833312988281,"y":970,"z":"7fadb4ab.c53bec","wires":[]},{"id":"9f48afd3.f6e63","type":"execute","name":"generate allotted-resource url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.tx-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n","comments":"","outputs":1,"x":748.8833312988281,"y":338,"z":"7fadb4ab.c53bec","wires":[[]]},{"id":"648b662c.092ab","type":"call","name":"call GENERIC-RESOURCE-API:manage-vni-assignment","xml":"<call module='GENERIC-RESOURCE-API' rpc='manage-vni-assignment' mode='sync' >\n","comments":"","outputs":1,"x":1364.8833312988281,"y":1091,"z":"7fadb4ab.c53bec","wires":[[]]},{"id":"cea14761.18e528","type":"set","name":"set actions = reserve, pools = VNI, VGW","xml":"<set>\n<parameter name='tmp.manageVni.action' value='reserve' />\n<parameter name='tmp.manageIpaddr.action' value='reserve' />\n<parameter name='tmp.manageVni.pool' value='VNI'/>\n<parameter name='tmp.manageIpaddr.pool' value='VGW'/>","comments":"","x":1317.8833312988281,"y":1054,"z":"7fadb4ab.c53bec","wires":[]},{"id":"d28ebab3.9126c","type":"execute","name":"execute RestApiCallNode - Get AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":672.8833312988281,"y":473,"z":"7fadb4ab.c53bec","wires":[["fdad46b0.e22b48"]]},{"id":"f5672e19.d9acf8","type":"switchNode","name":"Does parent service instance have vnf parameters?","xml":"<switch test=\"`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters_length != ''`\">\n","comments":"","outputs":1,"x":1365.8833312988281,"y":1011,"z":"7fadb4ab.c53bec","wires":[["7a68d005.89872"]]},{"id":"7a68d005.89872","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1627.8833312988281,"y":1013,"z":"7fadb4ab.c53bec","wires":[["212a1f09.95555"]]},{"id":"883befdb.8069d","type":"call","name":"call GENERIC-RESOURCE-API:manage-ipaddr-assignment","xml":"<call module='GENERIC-RESOURCE-API' rpc='manage-ipaddr-assignment' mode='sync' >\n","comments":"","outputs":1,"x":1376.8833312988281,"y":1132,"z":"7fadb4ab.c53bec","wires":[[]]},{"id":"c7292ce.87518d","type":"set","name":"Handle tx parameters","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[0].name' value='VNI'/>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[0].value' value='`$tmp.manageVni.vni`'/>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[1].name' value='vgmux_private_ip_2'/>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[1].value' value='`$tmp.vgmux-bearer-ip`'/>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[2].name' value='vgmux_private_ip_0'/>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[2].value' value='`$tmp.vgmux-lan-ip`'/>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[3].name' value='vgw_private_ip_0'/>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[3].value' value='`$tmp.manageIpaddr.ip`'/>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters_length' value='4'/>\n\n","comments":"","x":1263.8833312988281,"y":1261,"z":"7fadb4ab.c53bec","wires":[]},{"id":"74818acd.58d15c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":371.8833312988281,"y":551,"z":"7fadb4ab.c53bec","wires":[]},{"id":"11866c15.7f8684","type":"call","name":"call  get-vnf-api-parent-instance","xml":"\n<call module='GENERIC-RESOURCE-API' rpc='get-vnf-api-parent-instance' mode='sync' >\n","comments":"","outputs":1,"x":768.8833312988281,"y":570,"z":"7fadb4ab.c53bec","wires":[["64cce46e.263344","24d078da.a6c4b8"]]},{"id":"364d0b19.d4c844","type":"set","name":"setservice data custid, svc instance, svc type","xml":"<set>\n<parameter name='service-data.service-information.global-customer-id' value='`$tunnelxconn-topology-operation-input.service-information.global-customer-id`' />\n<parameter name='service-data.service-information.subscription-service-type' value='`$tunnelxconn-topology-operation-input.service-information.subscription-service-type`' />\n<!--\n<parameter name='service-data.service-information.service-instance-id' value='`$tunnelxconn-topology-operation-input.service-information.service-instance-id`' />\n-->\n<parameter name='service-data.service-information.service-instance-id' value=\"`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`\"/>","comments":"","x":1313.3277282714844,"y":1628.666748046875,"z":"7fadb4ab.c53bec","wires":[]},{"id":"2fde6d00.c59b54","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":918.772220187717,"y":1631.3333333333333,"z":"7fadb4ab.c53bec","wires":[]},{"id":"907398df.8f102","type":"comment","name":"map input to service-data request info","info":"","comments":"","x":1593.2167663574219,"y":1606.888671875,"z":"7fadb4ab.c53bec","wires":[]},{"id":"e263ec19.259ad8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":912.8833312988281,"y":1216,"z":"7fadb4ab.c53bec","wires":[]},{"id":"dfb35317.cfab08","type":"comment","name":"404 is mapping to success ?","info":"","comments":"","x":1018.8833312988281,"y":381,"z":"7fadb4ab.c53bec","wires":[]},{"id":"318d5bd3.5fa6a4","type":"set","name":"set SDN-ETHERNET-INTERNET/VCPE work around","xml":"<set>\n<parameter name='tunnelxconn-topology-operation-input.service-information.global-customer-id' value = 'SDN-ETHERNET-INTERNET' />\n<parameter name='tunnelxconn-topology-operation-input.service-information.subscription-service-type' value = \"vCPE\" />\n","comments":"","x":1410.8833312988281,"y":458,"z":"7fadb4ab.c53bec","wires":[]},{"id":"df19f205.8b091","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":1632.8833312988281,"y":434,"z":"7fadb4ab.c53bec","wires":[]},{"id":"84103406.7c3b2","type":"comment","name":"took out link on RestAPICall","info":"","comments":"","x":1116.8833312988281,"y":162,"z":"7fadb4ab.c53bec","wires":[]},{"id":"a25cbec5.783d2","type":"comment","name":"Added SDN-E-I and vCPE ot INPUT","info":"","comments":"","x":1146.8833312988281,"y":198,"z":"7fadb4ab.c53bec","wires":[]},{"id":"1d3e9851.fc557","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":1130.8833312988281,"y":128,"z":"7fadb4ab.c53bec","wires":[]},{"id":"dc66d348.388cb8","type":"execute","name":"execute printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/tx-conn-assign.log' />\n\n","comments":"","outputs":1,"x":1495.8833312988281,"y":1170,"z":"7fadb4ab.c53bec","wires":[[]]},{"id":"e725812a.6fd338","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n","comments":"","x":1094.8833312988281,"y":997,"z":"7fadb4ab.c53bec","wires":[]},{"id":"ae525f08.510b6","type":"comment","name":"vnf-parameters_lenght is null","info":"parent-service-instance.service-data.vnf-topology-information.vnf-parameters_length","comments":"","x":1037.8833312988281,"y":1025,"z":"7fadb4ab.c53bec","wires":[]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-create.json
new file mode 100644
index 0000000..07b4875
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-create.json
@@ -0,0 +1,1323 @@
+[
+  {
+    "id":"4bd5bd37.f86d04",
+    "type":"dgstart",
+    "name":"DGSTART",
+    "outputs":1,
+    "x":127,
+    "y":66,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "f4ab63ca.eb92a"
+      ]
+    ]
+  },
+  {
+    "id":"f4ab63ca.eb92a",
+    "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":223.23807907104492,
+    "y":126.95239067077637,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "426678bd.cf9e68"
+      ]
+    ]
+  },
+  {
+    "id":"426678bd.cf9e68",
+    "type":"method",
+    "name":"tunnelxconn-topology-operation-create",
+    "xml":"<method rpc='tunnelxconn-topology-operation-create' mode='sync'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":269.15485763549805,
+    "y":162.19044589996338,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "2ec1984d.225ac8"
+      ]
+    ]
+  },
+  {
+    "id":"2ec1984d.225ac8",
+    "type":"block",
+    "name":"block : atomic",
+    "xml":"<block atomic=\"true\">",
+    "atomic":"true",
+    "comments":"",
+    "outputs":1,
+    "x":129.97619247436523,
+    "y":898.0238044261932,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "32cfcb41.379404",
+        "10ef459.468ceba",
+        "b51a0259.f39a2",
+        "488f5b92.19e194",
+        "787b91d3.6f1fe",
+        "2b0e5257.490a3e",
+        "9b64b236.89e9f",
+        "9da96735.692f78",
+        "15d54a99.c0a1e5",
+        "c2739924.e1f078",
+        "1f4eaef5.3277a1",
+        "a7ed4806.925918",
+        "8bba30cc.fe5ba",
+        "32eb1163.d516be",
+        "8f7dd07f.e05c5",
+        "cfb5feab.0f438",
+        "5842add0.278be4",
+        "ea47a00.0f61f6",
+        "d034836c.ceb1a",
+        "4c2c728.25a0a8c",
+        "6e72d3ba.6430bc",
+        "5cb177b5.36c428",
+        "2a44f1bf.b73b4e",
+        "791a374c.f3ff58",
+        "9d5f28a5.d56c08",
+        "4524025f.df47bc",
+        "88eb2c2f.53683",
+        "1621ed9e.9cfd52",
+        "af6234fd.552b38",
+        "33869022.a4f21"
+      ]
+    ]
+  },
+  {
+    "id":"10ef459.468ceba",
+    "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":398.6669921875,
+    "y":2528.548095703125,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"32cfcb41.379404",
+    "type":"set",
+    "name":"set output to api handler",
+    "xml":"<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='tunnelxconn-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $tunnelxconn-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+    "comments":"",
+    "x":433.4208984375,
+    "y":2449.670654296875,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"c2739924.e1f078",
+    "type":"set",
+    "name":"set allotted-resource-oper-status",
+    "xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+    "comments":"",
+    "x":483.7542190551758,
+    "y":686.0514001846313,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"488f5b92.19e194",
+    "type":"set",
+    "name":"set tmp.ar.self-link",
+    "xml":"<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/tunnelxconn-topology/'` \" />\n\n",
+    "comments":"",
+    "x":439.73806381225586,
+    "y":279.33332538604736,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"b51a0259.f39a2",
+    "type":"set",
+    "name":"set tmp.ar.allotted-resource-id,etc",
+    "xml":"<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n",
+    "comments":"",
+    "x":486.9973258972168,
+    "y":245.59259128570557,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"787b91d3.6f1fe",
+    "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":441.9934387207031,
+    "y":315.231538772583,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"9b64b236.89e9f",
+    "type":"execute",
+    "name":"execute RestApiCallNode - Get AR by id",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":508.5187530517578,
+    "y":476.4594917297363,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "5fdfdba3.dcaa04",
+        "157b26bb.b56649"
+      ]
+    ]
+  },
+  {
+    "id":"2b0e5257.490a3e",
+    "type":"execute",
+    "name":"generate allotted-resource url",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.tx-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":474.0648536682129,
+    "y":375.0172290802002,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"5fdfdba3.dcaa04",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":765.8148918151855,
+    "y":475.26725220680237,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "54ce9aad.792d54"
+      ]
+    ]
+  },
+  {
+    "id":"9da96735.692f78",
+    "type":"execute",
+    "name":"execute RestApiCallNode - PUT AR by id",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":506.5293273925781,
+    "y":812.7675542831421,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "78834b98.051174",
+        "38f6f73f.0e20a8",
+        "1a175827.1c4498"
+      ]
+    ]
+  },
+  {
+    "id":"78834b98.051174",
+    "type":"not-found",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":814.8373680114746,
+    "y":817.0991821289062,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "94d3b068.ac6cf"
+      ]
+    ]
+  },
+  {
+    "id":"38f6f73f.0e20a8",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":807.8373947143555,
+    "y":777.5990890488029,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "94d3b068.ac6cf"
+      ]
+    ]
+  },
+  {
+    "id":"1a175827.1c4498",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":811.5874328613281,
+    "y":747.9561939239502,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "bf19aea.7bd1f5"
+      ]
+    ]
+  },
+  {
+    "id":"94d3b068.ac6cf",
+    "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 updating md-sal for tunnelxconn-allotted-resource\" />\n",
+    "comments":"",
+    "x":977.5874328613281,
+    "y":778.3491128906608,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"54ce9aad.792d54",
+    "type":"block",
+    "name":"block: atomic",
+    "xml":"<block atomic=\"true\">\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":946.8148460388184,
+    "y":475.7672016620636,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "c3db8bf6.53bff8",
+        "e928ef80.4dbaf"
+      ]
+    ]
+  },
+  {
+    "id":"c3db8bf6.53bff8",
+    "type":"switchNode",
+    "name":"switch tx length",
+    "xml":"<switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1192.6720924377441,
+    "y":510.052964925766,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "7b9c79d1.b19188"
+      ]
+    ]
+  },
+  {
+    "id":"7b9c79d1.b19188",
+    "type":"other",
+    "name":"outcome 1",
+    "xml":"<outcome value='1'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1383.6720962524414,
+    "y":510.0529625415802,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "af9a1a72.a82fe8"
+      ]
+    ]
+  },
+  {
+    "id":"e04e6dca.76365",
+    "type":"set",
+    "name":"set tx-ar from get",
+    "xml":"<set>\n<parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />\n",
+    "comments":"",
+    "x":1783.5292320251465,
+    "y":510.62438678741455,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"af9a1a72.a82fe8",
+    "type":"block",
+    "name":"block: atomic",
+    "xml":"<block atomic='true'>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1554.5290794372559,
+    "y":510.6244316101074,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "e04e6dca.76365",
+        "1983376a.f9c999",
+        "d7aed103.b9628"
+      ]
+    ]
+  },
+  {
+    "id":"1983376a.f9c999",
+    "type":"set",
+    "name":"set oper-status",
+    "xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
+    "comments":"",
+    "x":1781.5294761657715,
+    "y":578.0529508590698,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"6a1ab1f4.45b32",
+    "type":"comment",
+    "name":"GET tunnelxconn-allotted-resource from mdsal",
+    "info":"",
+    "comments":"",
+    "x":533.8148155212402,
+    "y":439.7671926021576,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"d7aed103.b9628",
+    "type":"switchNode",
+    "name":"switch order-status",
+    "xml":"<switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1791.52925491333,
+    "y":543.6243848800659,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "c21bad97.2b01b",
+        "139070ae.43418f"
+      ]
+    ]
+  },
+  {
+    "id":"c21bad97.2b01b",
+    "type":"outcome",
+    "name":"outcome PendingCreate",
+    "xml":"<outcome value='PendingCreate'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":2003.1292114257812,
+    "y":504.6243848800659,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "ebb3aaed.f79098"
+      ]
+    ]
+  },
+  {
+    "id":"139070ae.43418f",
+    "type":"outcome",
+    "name":"outcome Other",
+    "xml":"<outcome value='Other'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":2028.8435859680176,
+    "y":540.052975654602,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "ebb3aaed.f79098"
+      ]
+    ]
+  },
+  {
+    "id":"36945235.7bd9de",
+    "type":"comment",
+    "name":"Set allotted-resource-identifiers",
+    "info":"",
+    "comments":"",
+    "x":489.33863830566406,
+    "y":530.3386459350586,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"e928ef80.4dbaf",
+    "type":"set",
+    "name":"save backup copy of mdsal-ar for rollback",
+    "xml":"<set>\n<parameter name='bk-tx-ar' value='$mdsal-ar.' />\n",
+    "comments":"",
+    "x":1272.3864250183105,
+    "y":475.76729369163513,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"bea8560a.48f358",
+    "type":"comment",
+    "name":"Create urls for restapi",
+    "info":"",
+    "comments":"",
+    "x":444.9576606750488,
+    "y":344.6243562698364,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"bf19aea.7bd1f5",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":953.2434005737305,
+    "y":744.1483631134033,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"d7acef0d.1766d",
+    "type":"comment",
+    "name":"TO DO: vnf/put parent",
+    "info":"",
+    "comments":"",
+    "x":457.2433776855469,
+    "y":751.4815540313718,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"15d54a99.c0a1e5",
+    "type":"execute",
+    "name":"execute getTime",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":431.24338150024414,
+    "y":647.4815549850464,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"157b26bb.b56649",
+    "type":"other",
+    "name":"other",
+    "xml":"<outcome value='Other'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":765.5766868591309,
+    "y":511.4814250469208,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "b6c600ed.7d738"
+      ]
+    ]
+  },
+  {
+    "id":"b6c600ed.7d738",
+    "type":"block",
+    "name":"block: atomic",
+    "xml":"<block atomic=\"true\">\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":945.5766372680664,
+    "y":512.1479756832123,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"1f4eaef5.3277a1",
+    "type":"set",
+    "name":"set id",
+    "xml":"<set>\n<parameter name='tx-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='tx-ar.allotted-resource-status.action' value=\"`$tunnelxconn-topology-operation-input.request-information.request-action` \" />\n<parameter name='tx-ar.allotted-resource-status.rpc-name' value=\"tunnelxconn-topology-operation\" />\n<parameter name='tx-ar.allotted-resource-status.rpc-action' value=\"`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$tunnelxconn-topology-operation-input.request-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$tunnelxconn-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$tunnelxconn-topology-operation-input.service-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$tunnelxconn-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value=\"`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` \" />",
+    "comments":"",
+    "x":406.24343490600586,
+    "y":569.1481971740723,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"ebb3aaed.f79098",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":2217.5997276306152,
+    "y":506.0000190734863,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"8f7dd07f.e05c5",
+    "type":"execute",
+    "name":"execute RestApiCallNode - setup vgMUX-vG vxlan tunnel port",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.vxlan-tunnel.templatefile`\" />\n    <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />\n    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />\n    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"honeycomb-vnf\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":568.8331909179688,
+    "y":1527.4521162509918,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "a14dc204.8d341",
+        "284ca85d.512f28",
+        "b3f6249b.426088"
+      ]
+    ]
+  },
+  {
+    "id":"a14dc204.8d341",
+    "type":"not-found",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":933.1413116455078,
+    "y":1569.783754967153,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "e808154c.2623e8"
+      ]
+    ]
+  },
+  {
+    "id":"284ca85d.512f28",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":924.1413612365723,
+    "y":1538.2837807163596,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "e808154c.2623e8"
+      ]
+    ]
+  },
+  {
+    "id":"b3f6249b.426088",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":927.8913993835449,
+    "y":1508.640885591507,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "9406225.ddaf0e"
+      ]
+    ]
+  },
+  {
+    "id":"e808154c.2623e8",
+    "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 updating md-sal for tunnelxconn-allotted-resource\" />\n",
+    "comments":"",
+    "x":1093.891399383545,
+    "y":1539.0338045582175,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"9406225.ddaf0e",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1069.5473670959473,
+    "y":1504.83305478096,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"8bba30cc.fe5ba",
+    "type":"set",
+    "name":"set vgMUX-vG VXLAN Tunnel Port Props",
+    "xml":"<set>\n<parameter name='tmp.tunnel-name' value=\"`$tmp.tunnel-vgMUX-vG-name` \" />\n<parameter name='tmp.tunnel-dest-ip' value=\"`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip` \" />\n<parameter name='tmp.tunnel-src-ip' value=\"`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-bearer-ip` \" />\n<parameter name='tmp.tunnel-vni' value=\"`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vni` \" />",
+    "comments":"",
+    "x":503.9443817138672,
+    "y":1419.7860252857208,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"32eb1163.d516be",
+    "type":"execute",
+    "name":"generate full vgMUX-vG vpp-honeycomb url",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vpp-honeycomb`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vpp-honeycomb-url\"/>\n    <parameter name=\"target\" value=\"{tunnel-name}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.tunnel-name`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":507.9443817138672,
+    "y":1486.4522392749786,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"a7ed4806.925918",
+    "type":"execute",
+    "name":"generate honeycomb-url to vgMUX",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.honeycomb.url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.honeycomb.url\"/>\n    <parameter name=\"target\" value=\"{honeycomb-instance-ip}\"/>\n    <parameter name=\"replacement\" value=\"`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":487.2776794433594,
+    "y":1358.119027376175,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"cfb5feab.0f438",
+    "type":"execute",
+    "name":"execute RestApiCallNode - setup vgMUX-vBRG vxlan tunnel xconnect",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.xconnect.templatefile`\" />\n    <parameter name='restapiUrl' value=\"`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `\" />\n    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />\n    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"honeycomb-vnf\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":584.5001220703125,
+    "y":1945.000272989273,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "37d8112.512f9ee",
+        "d9dbd6bb.b6c748",
+        "e43b621a.00f7a"
+      ]
+    ]
+  },
+  {
+    "id":"37d8112.512f9ee",
+    "type":"not-found",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":914.8082027435303,
+    "y":1983.331808231771,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "de2f1fde.22f26"
+      ]
+    ]
+  },
+  {
+    "id":"d9dbd6bb.b6c748",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":905.8082523345947,
+    "y":1951.8318339809775,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "de2f1fde.22f26"
+      ]
+    ]
+  },
+  {
+    "id":"e43b621a.00f7a",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":909.5582904815674,
+    "y":1922.1889388561249,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "4a171ada.482344"
+      ]
+    ]
+  },
+  {
+    "id":"de2f1fde.22f26",
+    "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 updating md-sal for tunnelxconn-allotted-resource\" />\n",
+    "comments":"",
+    "x":1075.5582904815674,
+    "y":1952.5818578228354,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"4a171ada.482344",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1051.2142581939697,
+    "y":1918.381108045578,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"5842add0.278be4",
+    "type":"set",
+    "name":"set vgMUX to vG and vgMUX to vBRG VXLAN Tunnel Name",
+    "xml":"<set>\n<parameter name='tmp.tunnel-vgMUX-vG-name' value=\"`'vxlanTun' + $tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip` \" />\n<parameter name='tmp.tunnel-vgMUX-vBRG-name' value=\"`'vxlanTun' + $tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip` \" />\n",
+    "comments":"",
+    "x":561.0001220703125,
+    "y":1003.6667947769165,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"ea47a00.0f61f6",
+    "type":"set",
+    "name":"set vgMUX-vBRG VXLAN Tunnel Port Props",
+    "xml":"<set>\n<parameter name='tmp.tunnel-name' value=\"`$tmp.tunnel-vgMUX-vBRG-name` \" />\n<parameter name='tmp.tunnel-dest-ip' value=\"`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip` \" />\n<parameter name='tmp.tunnel-src-ip' value=\"`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-lan-ip` \" />\n<parameter name='tmp.tunnel-vni' value=\"`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vni` \" />",
+    "comments":"",
+    "x":516.0001220703125,
+    "y":1625.3334667682648,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"4c2c728.25a0a8c",
+    "type":"execute",
+    "name":"execute RestApiCallNode - setup vgMUX-vBRG vxlan tunnel port",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.vxlan-tunnel.templatefile`\" />\n    <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />\n    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />\n    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"honeycomb-vnf\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":568.0000915527344,
+    "y":1785.3334696292877,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "996a3cce.097c6",
+        "c1448167.bb548",
+        "9df5070b.8acf98"
+      ]
+    ]
+  },
+  {
+    "id":"996a3cce.097c6",
+    "type":"not-found",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":934.3081817626953,
+    "y":1767.6650616154075,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "91cb2799.fe3cb8"
+      ]
+    ]
+  },
+  {
+    "id":"c1448167.bb548",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":925.3082313537598,
+    "y":1736.165087364614,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "91cb2799.fe3cb8"
+      ]
+    ]
+  },
+  {
+    "id":"9df5070b.8acf98",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":929.0582695007324,
+    "y":1706.5221922397614,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "1ec51b4d.a24c65"
+      ]
+    ]
+  },
+  {
+    "id":"91cb2799.fe3cb8",
+    "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 updating md-sal for tunnelxconn-allotted-resource\" />\n",
+    "comments":"",
+    "x":1095.0582695007324,
+    "y":1736.915111206472,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"1ec51b4d.a24c65",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1070.7142372131348,
+    "y":1702.7143614292145,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"d034836c.ceb1a",
+    "type":"execute",
+    "name":"generate full vgMUX-vBRG vpp-honeycomb url",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vpp-honeycomb`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vpp-honeycomb-url\"/>\n    <parameter name=\"target\" value=\"{tunnel-name}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.tunnel-name`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":520.0000610351562,
+    "y":1677.3334228992462,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"5cb177b5.36c428",
+    "type":"set",
+    "name":"set vgMUX-vBG xconnect url",
+    "xml":"<set>\n<parameter name='tmp.tunnel-name' value=\"`$tmp.tunnel-vgMUX-vG-name` \" />",
+    "comments":"",
+    "x":454.0000801086426,
+    "y":2013.3334791660309,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"2a44f1bf.b73b4e",
+    "type":"execute",
+    "name":"generate full vgMUX-vG xconnect url",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vpp-honeycomb`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vpp-honeycomb-url\"/>\n    <parameter name=\"target\" value=\"{tunnel-name}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.tunnel-name`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":482.0000305175781,
+    "y":2075.333482027054,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"791a374c.f3ff58",
+    "type":"set",
+    "name":"set xconnect Tunnel target",
+    "xml":"<set>\n<parameter name='tmp.tunnel-name' value=\"`$tmp.tunnel-vgMUX-vBRG-name` \" />\n",
+    "comments":"",
+    "x":450.0000762939453,
+    "y":2143.3334839344025,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"6e72d3ba.6430bc",
+    "type":"set",
+    "name":"set xconnect Tunnel target",
+    "xml":"<set>\n<parameter name='tmp.tunnel-name' value=\"`$tmp.tunnel-vgMUX-vG-name` \" />\n",
+    "comments":"",
+    "x":442.00012969970703,
+    "y":1849.3334696292877,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"9d5f28a5.d56c08",
+    "type":"execute",
+    "name":"execute RestApiCallNode - setup vgMUX-vG vxlan tunnel xconnect",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.xconnect.templatefile`\" />\n    <parameter name='restapiUrl' value=\"`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `\" />\n    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />\n    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"honeycomb-vnf\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":578.0000915527344,
+    "y":2231.333485841751,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "22ae7c19.cc9fd4",
+        "3156119c.9e4b7e",
+        "6862ce93.4351f"
+      ]
+    ]
+  },
+  {
+    "id":"22ae7c19.cc9fd4",
+    "type":"not-found",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":908.3081722259521,
+    "y":2269.665021084249,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "681e50ab.c45c"
+      ]
+    ]
+  },
+  {
+    "id":"3156119c.9e4b7e",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":899.3082218170166,
+    "y":2238.1650468334556,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "681e50ab.c45c"
+      ]
+    ]
+  },
+  {
+    "id":"6862ce93.4351f",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":903.0582599639893,
+    "y":2208.522151708603,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "62f4ced7.a4af3"
+      ]
+    ]
+  },
+  {
+    "id":"681e50ab.c45c",
+    "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 updating md-sal for tunnelxconn-allotted-resource\" />\n",
+    "comments":"",
+    "x":1067.0583305358887,
+    "y":2238.9151890277863,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"62f4ced7.a4af3",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1044.7142276763916,
+    "y":2204.714320898056,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"88c3d8e8.fd9bf8",
+    "type":"comment",
+    "name":"Get vgmux-mgmt-ip",
+    "info":"",
+    "comments":"",
+    "x":251.33342742919922,
+    "y":1052.0002641677856,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"af6234fd.552b38",
+    "type":"get-resource",
+    "name":"get-resource IPADDR from dmaap DHCP_MAP ",
+    "xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='IPADDR' key=\"SELECT min(ip_addr) ip from DHCP_MAP where mac_addr = $tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.brg-wan-mac-address\" pfx=\"tmp.brg-wan-ip\" >\n",
+    "comments":"",
+    "outputs":1,
+    "x":522.0000152587891,
+    "y":892.6666488647461,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"33869022.a4f21",
+    "type":"set",
+    "name":"set tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip",
+    "xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip' value='`$tmp.brg-wan-ip.ip`' />\n",
+    "comments":"",
+    "x":693.597412109375,
+    "y":948.5832824707031,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"88eb2c2f.53683",
+    "type":"call",
+    "name":"call GENERIC-RESOURCE-API:get-vnf-api-parent-instance",
+    "xml":"<call module='GENERIC-RESOURCE-API' rpc='get-vnf-api-parent-instance' mode='sync' >\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":558.8182067871094,
+    "y":1158.8786926269531,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"4524025f.df47bc",
+    "type":"set",
+    "name":"set tmp.search.parent-service-instance-id to find vgmux-mgmt-ip",
+    "xml":"<set>\n<parameter name='tmp.search.parent-service-instance-id' value='`$tmp.ar.parent-service-instance-id`' />\n",
+    "comments":"",
+    "x":567.8485412597656,
+    "y":1102.9696044921875,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"95dae94.88e3f18",
+    "type":"set",
+    "name":"set vgmux-mgmt-ip",
+    "xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip' value='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-value`' />\n<!--\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip' value='`$parent-service-instance.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-value`' />\n\n-->",
+    "comments":"",
+    "x":1313.666488647461,
+    "y":1266.000111579895,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"1621ed9e.9cfd52",
+    "type":"for",
+    "name":"for vnf-parameters in parent-service-instance",
+    "xml":"<for index='paramidx' start='0' end='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters_length`' >\n<!--\n<for index='paramidx' start='0' end='`$parent-service-instance.vnf-topology-information.vnf-parameters_length`' >\n-->",
+    "comments":"",
+    "outputs":1,
+    "x":513.666633605957,
+    "y":1270.9997749328613,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "ee03e253.4d7d6"
+      ]
+    ]
+  },
+  {
+    "id":"ee03e253.4d7d6",
+    "type":"switchNode",
+    "name":"switch parameter matches vgmux_private_ip_1",
+    "xml":"<switch test='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-name == vgmux_private_ip_1`'>\n<!--\n<switch test='`$parent-service-instance.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-name == vgmux_private_ip_1`'>\n-->\n\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":885.000114440918,
+    "y":1269.9997787475586,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "18221f86.51e54"
+      ]
+    ]
+  },
+  {
+    "id":"18221f86.51e54",
+    "type":"success",
+    "name":"true",
+    "xml":"<outcome value='true'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1143.66646194458,
+    "y":1267.6665105819702,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+        "95dae94.88e3f18"
+      ]
+    ]
+  },
+  {
+    "id":"df4b5b2a.cf7c58",
+    "type":"returnFailure",
+    "name":"return failure",
+    "xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",
+    "comments":"",
+    "x":149,
+    "y":1269,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"16bf3f62.43de21",
+    "type":"execute",
+    "name":"execute printContext",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/tunnel-xconn-create.log' />\n",
+    "comments":"",
+    "outputs":1,
+    "x":490.3796691894531,
+    "y":1569.8198165893555,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"af2cb6d9.632eb8",
+    "type":"returnFailure",
+    "name":"return failure",
+    "xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",
+    "comments":"",
+    "x":194.7272491455078,
+    "y":1625,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"31198a25.789e76",
+    "type":"returnFailure",
+    "name":"return failure",
+    "xml":"<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value='' />\n",
+    "comments":"",
+    "x":1079.272705078125,
+    "y":916.8181915283203,
+    "z":"b012a4c9.78c2f8",
+    "wires":[
+
+    ]
+  }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-deactivate.json
new file mode 100644
index 0000000..403c1ff
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-deactivate.json
@@ -0,0 +1 @@
+[{"id":"77e7c41f.d39b2c","type":"dgstart","name":"DGSTART","outputs":1,"x":129,"y":77,"z":"2b82a97f.11e4ee","wires":[["eb62acdc.bba158"]]},{"id":"eb62acdc.bba158","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":225.23807907104492,"y":137.95239067077637,"z":"2b82a97f.11e4ee","wires":[["6dbf8ba8.4b789c"]]},{"id":"6dbf8ba8.4b789c","type":"method","name":"tunnelxconn-topology-operation-deactivate","xml":"<method rpc='tunnelxconn-topology-operation-deactivate' mode='sync'>\n","comments":"","outputs":1,"x":271.15485763549805,"y":173.19044589996338,"z":"2b82a97f.11e4ee","wires":[["12e90cec.9889bb"]]},{"id":"12e90cec.9889bb","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":179.47619247436523,"y":316.5237879753113,"z":"2b82a97f.11e4ee","wires":[["bfde80e.cd9818","a9f3bbe1.8e6458","2ebe5fb6.6deef","a139db86.7c9fb","50a44a6b.6f304c","f5391cda.7ebb38","7dc1b11b.7bf04","4e75d792.04ff58","5fcf2002.dc2648","6bad160a.61f6c8","63f6549a.034eec","17f54773.35cae9"]]},{"id":"a9f3bbe1.8e6458","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":446.0001106262207,"y":986.2145080566406,"z":"2b82a97f.11e4ee","wires":[]},{"id":"bfde80e.cd9818","type":"set","name":"set output to api handler","xml":"<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='tunnelxconn-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $tunnelxconn-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n","comments":"","x":474.7540283203125,"y":949.3370361328125,"z":"2b82a97f.11e4ee","wires":[]},{"id":"6bad160a.61f6c8","type":"set","name":"set allotted-resource-oper-status","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n","comments":"","x":485.7542419433594,"y":697.0514221191406,"z":"2b82a97f.11e4ee","wires":[]},{"id":"a139db86.7c9fb","type":"set","name":"set tmp.ar.self-link","xml":"<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/tunnelxconn-topology/'` \" />\n\n","comments":"","x":441.73806381225586,"y":290.33332538604736,"z":"2b82a97f.11e4ee","wires":[]},{"id":"2ebe5fb6.6deef","type":"set","name":"set tmp.ar.allotted-resource-id,etc","xml":"<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n","comments":"","x":488.9973258972168,"y":256.59259128570557,"z":"2b82a97f.11e4ee","wires":[]},{"id":"50a44a6b.6f304c","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":447.9934196472168,"y":326.23152446746826,"z":"2b82a97f.11e4ee","wires":[[]]},{"id":"7dc1b11b.7bf04","type":"execute","name":"execute RestApiCallNode - Get AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":510.5187530517578,"y":487.4594917297363,"z":"2b82a97f.11e4ee","wires":[["a6b8e311.5d4ba","ed37dff8.8e4478"]]},{"id":"f5391cda.7ebb38","type":"execute","name":"generate allotted-resource url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.tx-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n","comments":"","outputs":1,"x":476.0648536682129,"y":386.0172290802002,"z":"2b82a97f.11e4ee","wires":[[]]},{"id":"a6b8e311.5d4ba","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":767.8148918151855,"y":486.26725220680237,"z":"2b82a97f.11e4ee","wires":[["78a50574.e49954"]]},{"id":"4e75d792.04ff58","type":"execute","name":"execute RestApiCallNode - PUT AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":518.5293121337891,"y":840.4341316223145,"z":"2b82a97f.11e4ee","wires":[["2ed02149.4dd00e","a6a159ad.147bc","820e27ec.2ca21"]]},{"id":"2ed02149.4dd00e","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":788.837329864502,"y":893.432332418859,"z":"2b82a97f.11e4ee","wires":[["275cb7a4.5d6a28"]]},{"id":"a6a159ad.147bc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":779.8373794555664,"y":861.9323581680655,"z":"2b82a97f.11e4ee","wires":[["275cb7a4.5d6a28"]]},{"id":"820e27ec.2ca21","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":783.5874176025391,"y":832.2894630432129,"z":"2b82a97f.11e4ee","wires":[["e3974867.1ad8f8"]]},{"id":"275cb7a4.5d6a28","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 updating md-sal for tunnelxconn-allotted-resource\" />\n","comments":"","x":949.5874176025391,"y":862.6823820099235,"z":"2b82a97f.11e4ee","wires":[]},{"id":"78a50574.e49954","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":948.8148460388184,"y":486.7672016620636,"z":"2b82a97f.11e4ee","wires":[["495c50c0.877d7","15865c28.4b50bc"]]},{"id":"495c50c0.877d7","type":"switchNode","name":"switch tx length","xml":"<switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>\n","comments":"","outputs":1,"x":1194.6720924377441,"y":521.052964925766,"z":"2b82a97f.11e4ee","wires":[["17c51ecf.7cd569"]]},{"id":"17c51ecf.7cd569","type":"other","name":"outcome 1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1385.6720962524414,"y":521.0529625415802,"z":"2b82a97f.11e4ee","wires":[["68fb786b.6c9068"]]},{"id":"f91188db.7ca6","type":"set","name":"set tx-ar from get","xml":"<set>\n<parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />\n","comments":"","x":1785.5292320251465,"y":521.6243867874146,"z":"2b82a97f.11e4ee","wires":[]},{"id":"68fb786b.6c9068","type":"block","name":"block: atomic","xml":"<block atomic='true'>\n","atomic":"false","comments":"","outputs":1,"x":1556.5290794372559,"y":521.6244316101074,"z":"2b82a97f.11e4ee","wires":[["f91188db.7ca6","24a63c38.36bad4","ed06370.898bd48"]]},{"id":"24a63c38.36bad4","type":"set","name":"set oper-status","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n","comments":"","x":1783.5294761657715,"y":589.0529508590698,"z":"2b82a97f.11e4ee","wires":[]},{"id":"480b8187.423d28","type":"comment","name":"GET tunnelxconn-allotted-resource from mdsal","info":"","comments":"","x":535.8148155212402,"y":450.7671926021576,"z":"2b82a97f.11e4ee","wires":[]},{"id":"ed06370.898bd48","type":"switchNode","name":"switch order-status","xml":"<switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1793.52925491333,"y":554.6243848800659,"z":"2b82a97f.11e4ee","wires":[["8b637658.dc76d","523ac249.9cee14"]]},{"id":"8b637658.dc76d","type":"outcome","name":"outcome Created","xml":"<outcome value='Created'>\n","comments":"","outputs":1,"x":2005.1292114257812,"y":515.6243848800659,"z":"2b82a97f.11e4ee","wires":[["ae90d88c.f247e"]]},{"id":"523ac249.9cee14","type":"outcome","name":"outcome Other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2030.8435859680176,"y":551.052975654602,"z":"2b82a97f.11e4ee","wires":[["ae90d88c.f247e"]]},{"id":"8ab3497c.81651","type":"comment","name":"Set allotted-resource-identifiers","info":"","comments":"","x":491.33863830566406,"y":541.3386459350586,"z":"2b82a97f.11e4ee","wires":[]},{"id":"15865c28.4b50bc","type":"set","name":"save backup copy of mdsal-ar for rollback","xml":"<set>\n<parameter name='bk-tx-ar' value='$mdsal-ar.' />\n","comments":"","x":1274.3864250183105,"y":486.76729369163513,"z":"2b82a97f.11e4ee","wires":[]},{"id":"667a59da.7e3228","type":"comment","name":"Create urls for restapi","info":"","comments":"","x":446.9576606750488,"y":355.6243562698364,"z":"2b82a97f.11e4ee","wires":[]},{"id":"e3974867.1ad8f8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":925.2433853149414,"y":828.481632232666,"z":"2b82a97f.11e4ee","wires":[[]]},{"id":"877979d2.d0cc48","type":"comment","name":"TO DO: vnf/put parent","info":"","comments":"","x":453.52909088134766,"y":733.9101696014404,"z":"2b82a97f.11e4ee","wires":[]},{"id":"5fcf2002.dc2648","type":"execute","name":"execute getTime","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n","comments":"","outputs":1,"x":433.24338150024414,"y":658.4815549850464,"z":"2b82a97f.11e4ee","wires":[[]]},{"id":"ed37dff8.8e4478","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":767.5766868591309,"y":522.4814250469208,"z":"2b82a97f.11e4ee","wires":[["4ddae737.3112d"]]},{"id":"4ddae737.3112d","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":947.5766372680664,"y":523.1479756832123,"z":"2b82a97f.11e4ee","wires":[[]]},{"id":"63f6549a.034eec","type":"set","name":"set id","xml":"<set>\n<parameter name='tx-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='tx-ar.allotted-resource-status.action' value=\"`$tunnelxconn-topology-operation-input.request-information.request-action` \" />\n<parameter name='tx-ar.allotted-resource-status.rpc-name' value=\"tunnelxconn-topology-operation\" />\n<parameter name='tx-ar.allotted-resource-status.rpc-action' value=\"`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$tunnelxconn-topology-operation-input.request-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$tunnelxconn-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$tunnelxconn-topology-operation-input.service-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$tunnelxconn-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value=\"`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` \" />","comments":"","x":416.24342346191406,"y":578.1481666564941,"z":"2b82a97f.11e4ee","wires":[]},{"id":"ae90d88c.f247e","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2219.5997276306152,"y":517.0000190734863,"z":"2b82a97f.11e4ee","wires":[[]]},{"id":"17f54773.35cae9","type":"update","name":"update AAI allotted-resource","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $service-data.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $service-data.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $service-data.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"operational-status\" value=\"out-of-service-path\" />\n","comments":"","outputs":1,"x":480.42857360839844,"y":775.571418762207,"z":"2b82a97f.11e4ee","wires":[["5bc14f2f.834cb","dcde8ae.d8a6c78"]]},{"id":"5bc14f2f.834cb","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":736.1904830932617,"y":758.5239224433899,"z":"2b82a97f.11e4ee","wires":[["11d358d.8f25ba7"]]},{"id":"11d358d.8f25ba7","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=\"AAI failed\" />\n","comments":"","x":902.7143630981445,"y":770.1429934501648,"z":"2b82a97f.11e4ee","wires":[]},{"id":"dcde8ae.d8a6c78","type":"failure","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":743.2857704162598,"y":791.2858901023865,"z":"2b82a97f.11e4ee","wires":[["11d358d.8f25ba7"]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-delete.json
new file mode 100644
index 0000000..6030e9e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-delete.json
@@ -0,0 +1,1225 @@
+[
+  {
+    "id":"825ca84c.445e48",
+    "type":"dgstart",
+    "name":"DGSTART",
+    "outputs":1,
+    "x":128,
+    "y":116,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "cf18f6a3.a7c1d8"
+      ]
+    ]
+  },
+  {
+    "id":"cf18f6a3.a7c1d8",
+    "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.23807907104492,
+    "y":176.95239067077637,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "6f43722e.e1375c"
+      ]
+    ]
+  },
+  {
+    "id":"6f43722e.e1375c",
+    "type":"method",
+    "name":"tunnelxconn-topology-operation-delete",
+    "xml":"<method rpc='tunnelxconn-topology-operation-delete' mode='sync'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":270.15485763549805,
+    "y":212.19044589996338,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "9223e1d9.9d3d5"
+      ]
+    ]
+  },
+  {
+    "id":"9223e1d9.9d3d5",
+    "type":"block",
+    "name":"block : atomic",
+    "xml":"<block atomic=\"true\">",
+    "atomic":"true",
+    "comments":"",
+    "outputs":1,
+    "x":156.47621154785156,
+    "y":1191.523856163025,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "57095392.42df9c",
+        "928254df.b8f1b8",
+        "78ce1588.233b4c",
+        "b1b79d47.5b712",
+        "bcbc27ec.51c808",
+        "14dcb243.87919e",
+        "f375d1a2.57ce",
+        "f6543328.c0463",
+        "4fa81b0c.d25c04",
+        "e12d04d1.e4c6f8",
+        "4b2a2744.b37d78",
+        "509b7252.07649c",
+        "67c6c537.098aac",
+        "ac80ef88.64417",
+        "d6a9b477.b43e58",
+        "3c1eab50.8ab6e4",
+        "a6c06bf0.9acdf8",
+        "fd3c881.1134678",
+        "eccfefb.8a8691",
+        "cadbc326.95747",
+        "d6edf81e.59db08",
+        "9e3a6d03.74879",
+        "ec194f5.ff3e8b",
+        "a35bc5f0.41f1a8",
+        "6017aedf.2d3db",
+        "6a140f25.dc1a2"
+      ]
+    ]
+  },
+  {
+    "id":"928254df.b8f1b8",
+    "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":432.0001564025879,
+    "y":2202.8811111450195,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"57095392.42df9c",
+    "type":"set",
+    "name":"set output to api handler",
+    "xml":"<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='tunnelxconn-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $tunnelxconn-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+    "comments":"",
+    "x":460.7540702819824,
+    "y":2167.0036573410034,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"4fa81b0c.d25c04",
+    "type":"set",
+    "name":"set allotted-resource-oper-status",
+    "xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+    "comments":"",
+    "x":484.7542190551758,
+    "y":736.0514001846313,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"b1b79d47.5b712",
+    "type":"set",
+    "name":"set tmp.ar.self-link",
+    "xml":"<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/tunnelxconn-topology/'` \" />\n\n",
+    "comments":"",
+    "x":440.73806381225586,
+    "y":329.33332538604736,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"78ce1588.233b4c",
+    "type":"set",
+    "name":"set tmp.ar.allotted-resource-id,etc",
+    "xml":"<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n",
+    "comments":"",
+    "x":487.9973258972168,
+    "y":295.59259128570557,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"bcbc27ec.51c808",
+    "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":446.9934196472168,
+    "y":365.23152446746826,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"f375d1a2.57ce",
+    "type":"execute",
+    "name":"execute RestApiCallNode - Get AR by id",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":509.5187530517578,
+    "y":526.4594917297363,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "f6518fb0.ce253",
+        "356ea1a.9b58a5e"
+      ]
+    ]
+  },
+  {
+    "id":"14dcb243.87919e",
+    "type":"execute",
+    "name":"generate allotted-resource url",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.tx-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":475.0648536682129,
+    "y":425.0172290802002,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"f6518fb0.ce253",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":766.8148918151855,
+    "y":525.2672522068024,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "629610f3.9604d"
+      ]
+    ]
+  },
+  {
+    "id":"b0337e65.8f372",
+    "type":"not-found",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":787.837329864502,
+    "y":932.432332418859,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "840b1c1.394d0e"
+      ]
+    ]
+  },
+  {
+    "id":"fc786288.11187",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":778.8373794555664,
+    "y":900.9323581680655,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "840b1c1.394d0e"
+      ]
+    ]
+  },
+  {
+    "id":"2102e230.72a77e",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":782.5874176025391,
+    "y":871.2894630432129,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "6f565745.8303b8"
+      ]
+    ]
+  },
+  {
+    "id":"840b1c1.394d0e",
+    "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 updating md-sal for tunnelxconn-allotted-resource\" />\n",
+    "comments":"",
+    "x":948.5874176025391,
+    "y":901.6823820099235,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"629610f3.9604d",
+    "type":"block",
+    "name":"block: atomic",
+    "xml":"<block atomic=\"true\">\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":947.8148460388184,
+    "y":525.7672016620636,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "db6398fb.5393b8",
+        "5570421f.b1cd1c"
+      ]
+    ]
+  },
+  {
+    "id":"db6398fb.5393b8",
+    "type":"switchNode",
+    "name":"switch tx length",
+    "xml":"<switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1193.6720924377441,
+    "y":560.052964925766,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "6fdf29e8.2e0f38"
+      ]
+    ]
+  },
+  {
+    "id":"6fdf29e8.2e0f38",
+    "type":"other",
+    "name":"outcome 1",
+    "xml":"<outcome value='1'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1384.6720962524414,
+    "y":560.0529625415802,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "a18ae609.19d3c8"
+      ]
+    ]
+  },
+  {
+    "id":"6f978da.693bf74",
+    "type":"set",
+    "name":"set tx-ar from get",
+    "xml":"<set>\n<parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />\n",
+    "comments":"",
+    "x":1784.5292320251465,
+    "y":560.6243867874146,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"a18ae609.19d3c8",
+    "type":"block",
+    "name":"block: atomic",
+    "xml":"<block atomic='true'>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1555.5290794372559,
+    "y":560.6244316101074,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "6f978da.693bf74",
+        "66b9fbd6.4d38a4",
+        "7b6d747a.efbadc"
+      ]
+    ]
+  },
+  {
+    "id":"66b9fbd6.4d38a4",
+    "type":"set",
+    "name":"set oper-status",
+    "xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
+    "comments":"",
+    "x":1782.5294761657715,
+    "y":628.0529508590698,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"a62aafbc.fe6bb",
+    "type":"comment",
+    "name":"GET tunnelxconn-allotted-resource from mdsal",
+    "info":"",
+    "comments":"",
+    "x":534.8148155212402,
+    "y":489.7671926021576,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"7b6d747a.efbadc",
+    "type":"switchNode",
+    "name":"switch order-status",
+    "xml":"<switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1792.52925491333,
+    "y":593.6243848800659,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "d5b999f8.8cb468",
+        "f4d4f6e9.cf0858"
+      ]
+    ]
+  },
+  {
+    "id":"d5b999f8.8cb468",
+    "type":"outcome",
+    "name":"outcome Created",
+    "xml":"<outcome value='Created'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":2004.1292114257812,
+    "y":554.6243848800659,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "48576b51.340d84"
+      ]
+    ]
+  },
+  {
+    "id":"f4d4f6e9.cf0858",
+    "type":"outcome",
+    "name":"outcome Other",
+    "xml":"<outcome value='Other'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":2029.8435859680176,
+    "y":590.052975654602,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "48576b51.340d84"
+      ]
+    ]
+  },
+  {
+    "id":"83b8f4eb.666af8",
+    "type":"comment",
+    "name":"Set allotted-resource-identifiers",
+    "info":"",
+    "comments":"",
+    "x":490.33863830566406,
+    "y":580.3386459350586,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"5570421f.b1cd1c",
+    "type":"set",
+    "name":"save backup copy of mdsal-ar for rollback",
+    "xml":"<set>\n<parameter name='bk-tx-ar' value='$mdsal-ar.' />\n",
+    "comments":"",
+    "x":1273.3864250183105,
+    "y":525.7672936916351,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"26dce256.9f5d0e",
+    "type":"comment",
+    "name":"Create urls for restapi",
+    "info":"",
+    "comments":"",
+    "x":445.9576606750488,
+    "y":394.6243562698364,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"6f565745.8303b8",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":924.2433853149414,
+    "y":867.481632232666,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"fcabb34d.45a2a",
+    "type":"comment",
+    "name":"TO DO: vnf/put parent",
+    "info":"",
+    "comments":"",
+    "x":458.2433776855469,
+    "y":801.4815540313718,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"f6543328.c0463",
+    "type":"execute",
+    "name":"execute getTime",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":432.24338150024414,
+    "y":697.4815549850464,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"356ea1a.9b58a5e",
+    "type":"other",
+    "name":"other",
+    "xml":"<outcome value='Other'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":766.5766868591309,
+    "y":561.4814250469208,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "413a7bac.d6ab24"
+      ]
+    ]
+  },
+  {
+    "id":"413a7bac.d6ab24",
+    "type":"block",
+    "name":"block: atomic",
+    "xml":"<block atomic=\"true\">\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":946.5766372680664,
+    "y":562.1479756832123,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"e12d04d1.e4c6f8",
+    "type":"set",
+    "name":"set id",
+    "xml":"<set>\n<parameter name='tx-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='tx-ar.allotted-resource-status.action' value=\"`$tunnelxconn-topology-operation-input.request-information.request-action` \" />\n<parameter name='tx-ar.allotted-resource-status.rpc-name' value=\"tunnelxconn-topology-operation\" />\n<parameter name='tx-ar.allotted-resource-status.rpc-action' value=\"`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$tunnelxconn-topology-operation-input.request-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$tunnelxconn-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$tunnelxconn-topology-operation-input.service-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$tunnelxconn-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value=\"`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` \" />",
+    "comments":"",
+    "x":415.24342346191406,
+    "y":617.1481666564941,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"48576b51.340d84",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":2218.5997276306152,
+    "y":556.0000190734863,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"4b2a2744.b37d78",
+    "type":"execute",
+    "name":"execute RestApiCallNode - PUT AR by id",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":515.0000152587891,
+    "y":882.0000247955322,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "2102e230.72a77e",
+        "fc786288.11187",
+        "b0337e65.8f372"
+      ]
+    ]
+  },
+  {
+    "id":"509b7252.07649c",
+    "type":"set",
+    "name":"clear tx-ar-assignments",
+    "xml":"<set>\n<parameter name='tx-ar-assignments.' value=\"\" />\n\n\n\n",
+    "comments":"",
+    "x":459,
+    "y":768,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"d6edf81e.59db08",
+    "type":"execute",
+    "name":"execute RestApiCallNode - delete vgMUX to vG vxlan tunnel port",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n  <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />\n    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />\n    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"honeycomb-vnf\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":593.6668548583984,
+    "y":2109.3331184387207,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "5a2ca87c.542c08",
+        "ab819131.dd45",
+        "63ff344a.e380fc"
+      ]
+    ]
+  },
+  {
+    "id":"5a2ca87c.542c08",
+    "type":"not-found",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1162.6414413452148,
+    "y":2149.331505201757,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "f6c1b57a.e80c28"
+      ]
+    ]
+  },
+  {
+    "id":"ab819131.dd45",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1153.6414909362793,
+    "y":2117.8315309509635,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "f6c1b57a.e80c28"
+      ]
+    ]
+  },
+  {
+    "id":"63ff344a.e380fc",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1157.391529083252,
+    "y":2088.188635826111,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "14140cfc.718ec3"
+      ]
+    ]
+  },
+  {
+    "id":"f6c1b57a.e80c28",
+    "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 updating md-sal for tunnelxconn-allotted-resource\" />\n",
+    "comments":"",
+    "x":1323.391529083252,
+    "y":2118.5815547928214,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"14140cfc.718ec3",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1299.0474967956543,
+    "y":2084.380805015564,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"d6a9b477.b43e58",
+    "type":"execute",
+    "name":"generate full vgMUX-vG vpp-honeycomb url",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vpp-honeycomb`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vpp-honeycomb-url\"/>\n    <parameter name=\"target\" value=\"{tunnel-name}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.tunnel-vgMUX-vG-name`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":521.1111145019531,
+    "y":1617.6667919158936,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"67c6c537.098aac",
+    "type":"execute",
+    "name":"generate honeycomb-url to vgMUX",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.honeycomb.url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.honeycomb.url\"/>\n    <parameter name=\"target\" value=\"{honeycomb-instance-ip}\"/>\n    <parameter name=\"replacement\" value=\"`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":486.7778778076172,
+    "y":1328.333438873291,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"3c1eab50.8ab6e4",
+    "type":"execute",
+    "name":"execute RestApiCallNode - delete vG-vgMUX xconnect",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value=\"`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `\" />\n    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />\n    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"honeycomb-vnf\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":557.6670074462891,
+    "y":1696.881510734558,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "133ecf83.ed702",
+        "2da75da5.50c6e2",
+        "f90f3fc7.0dbc5"
+      ]
+    ]
+  },
+  {
+    "id":"133ecf83.ed702",
+    "type":"not-found",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1166.3083801269531,
+    "y":1676.8796142563224,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "7f5777a.bc39688"
+      ]
+    ]
+  },
+  {
+    "id":"2da75da5.50c6e2",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1157.3084297180176,
+    "y":1645.379640005529,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "7f5777a.bc39688"
+      ]
+    ]
+  },
+  {
+    "id":"f90f3fc7.0dbc5",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1161.0584678649902,
+    "y":1615.7367448806763,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "9aa4cd15.2e381"
+      ]
+    ]
+  },
+  {
+    "id":"7f5777a.bc39688",
+    "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 updating md-sal for tunnelxconn-allotted-resource\" />\n",
+    "comments":"",
+    "x":1327.0584678649902,
+    "y":1646.1296638473868,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"9aa4cd15.2e381",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1302.7144355773926,
+    "y":1611.9289140701294,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"eccfefb.8a8691",
+    "type":"execute",
+    "name":"execute RestApiCallNode - delete vgMUX to vBRG vxlan tunnel port",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n  <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />\n    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />\n    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"honeycomb-vnf\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":598.666690826416,
+    "y":1946.0000019073486,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "4db8b84d.b2ecd8",
+        "ac063462.f4ca28",
+        "5e7c8c01.42d984"
+      ]
+    ]
+  },
+  {
+    "id":"4db8b84d.b2ecd8",
+    "type":"not-found",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1165.9746704101562,
+    "y":1995.9981521591544,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "66bd1389.36824c"
+      ]
+    ]
+  },
+  {
+    "id":"ac063462.f4ca28",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1156.9747200012207,
+    "y":1964.498177908361,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "66bd1389.36824c"
+      ]
+    ]
+  },
+  {
+    "id":"5e7c8c01.42d984",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1160.7247581481934,
+    "y":1934.8552827835083,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "dae96ea2.d0433"
+      ]
+    ]
+  },
+  {
+    "id":"66bd1389.36824c",
+    "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 updating md-sal for tunnelxconn-allotted-resource\" />\n",
+    "comments":"",
+    "x":1326.7247581481934,
+    "y":1965.2482017502189,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"dae96ea2.d0433",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1302.3807258605957,
+    "y":1931.0474519729614,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"ac80ef88.64417",
+    "type":"set",
+    "name":"set vgMUX to vG and vgMUX to vBRG VXLAN Tunnel Name",
+    "xml":"<set>\n<parameter name='tmp.tunnel-vgMUX-vG-name' value=\"`'vxlanTun' + $tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip` \" />\n<parameter name='tmp.tunnel-vgMUX-vBRG-name' value=\"`'vxlanTun' + $tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip` \" />\n",
+    "comments":"",
+    "x":571.3333129882812,
+    "y":1552.3332386016846,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"fd3c881.1134678",
+    "type":"execute",
+    "name":"execute RestApiCallNode - delete vBRG-vgMUX xconnect",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value=\"`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `\" />\n    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />\n    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"honeycomb-vnf\" />\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":568.666675567627,
+    "y":1849.3331651687622,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "66d058c6.066908",
+        "8879fdd0.457de",
+        "82ba2dc0.22ad1"
+      ]
+    ]
+  },
+  {
+    "id":"82ba2dc0.22ad1",
+    "type":"not-found",
+    "name":"not-found",
+    "xml":"<outcome value='not-found'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1160.3333892822266,
+    "y":1842.6665658950806,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "700450a1.c41fd"
+      ]
+    ]
+  },
+  {
+    "id":"8879fdd0.457de",
+    "type":"failure",
+    "name":"failure",
+    "xml":"<outcome value='failure'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1151.333438873291,
+    "y":1811.166591644287,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "700450a1.c41fd"
+      ]
+    ]
+  },
+  {
+    "id":"66d058c6.066908",
+    "type":"success",
+    "name":"success",
+    "xml":"<outcome value='success'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1153.4169692993164,
+    "y":1773.1904611587524,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "2e7fb96e.6c49e6"
+      ]
+    ]
+  },
+  {
+    "id":"700450a1.c41fd",
+    "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 updating md-sal for tunnelxconn-allotted-resource\" />\n",
+    "comments":"",
+    "x":1321.0834770202637,
+    "y":1811.916615486145,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"2e7fb96e.6c49e6",
+    "type":"block",
+    "name":"block",
+    "xml":"<block>\n",
+    "atomic":"false",
+    "comments":"",
+    "outputs":1,
+    "x":1296.739444732666,
+    "y":1777.7158657088876,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"a6c06bf0.9acdf8",
+    "type":"execute",
+    "name":"generate full vgMUX-vBRG vpp-honeycomb url",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vpp-honeycomb`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vpp-honeycomb-url\"/>\n    <parameter name=\"target\" value=\"{tunnel-name}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.tunnel-vgMUX-vBRG-name`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":532.0000114440918,
+    "y":1767.6665334701538,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"cadbc326.95747",
+    "type":"execute",
+    "name":"generate full vgMUX-vG vpp-honeycomb url",
+    "xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vpp-honeycomb`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vpp-honeycomb-url\"/>\n    <parameter name=\"target\" value=\"{tunnel-name}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.tunnel-vgMUX-vG-name`\"/>\n",
+    "comments":"",
+    "outputs":1,
+    "x":523.6666603088379,
+    "y":2034.3332509994507,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"6017aedf.2d3db",
+    "type":"get-resource",
+    "name":"get-resource IPADDR from dmaap DHCP_MAP ",
+    "xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='IPADDR' key=\"SELECT min(ip_addr) ip from DHCP_MAP where mac_addr = $tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.brg-wan-mac-address\" pfx=\"tmp.brg-wan-ip\" >\n",
+    "comments":"",
+    "outputs":1,
+    "x":529.5001373291016,
+    "y":1428.0001401901245,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"6a140f25.dc1a2",
+    "type":"set",
+    "name":"set tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip",
+    "xml":"<set>\n<parameter name='tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip' value='`$tmp.brg-wan-ip.ip`' />\n",
+    "comments":"",
+    "x":694.1428833007812,
+    "y":1479.9166345596313,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"ef15c78a.710b88",
+    "type":"comment",
+    "name":"Get vgmux-mgmt-ip",
+    "info":"",
+    "comments":"",
+    "x":271.0000114440918,
+    "y":1009.5001254081726,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"ec194f5.ff3e8b",
+    "type":"call",
+    "name":"call GENERIC-RESOURCE-API:get-vnf-api-parent-instance",
+    "xml":"<call module='GENERIC-RESOURCE-API' rpc='get-vnf-api-parent-instance' mode='sync' >\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":572.666633605957,
+    "y":1125.8331098556519,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+
+      ]
+    ]
+  },
+  {
+    "id":"9e3a6d03.74879",
+    "type":"set",
+    "name":"set tmp.search.parent-service-instance-id to find vgmux-mgmt-ip",
+    "xml":"<set>\n<parameter name='tmp.search.parent-service-instance-id' value='`$tmp.ar.parent-service-instance-id`' />\n",
+    "comments":"",
+    "x":585.3332901000977,
+    "y":1060.8331365585327,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"3ac2ce1c.2c1862",
+    "type":"set",
+    "name":"set vgmux-mgmt-ip",
+    "xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip' value='`$parent-service-instance.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-value`' />\n",
+    "comments":"",
+    "x":1329.3330459594727,
+    "y":1187.4999752044678,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  },
+  {
+    "id":"a35bc5f0.41f1a8",
+    "type":"for",
+    "name":"for vnf-parameters in parent-service-instance",
+    "xml":"<for index='paramidx' start='0' end='`$parent-service-instance.vnf-topology-information.vnf-parameters_length`' >\n\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":529.3331909179688,
+    "y":1192.499638557434,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "cce1cb0f.707e78"
+      ]
+    ]
+  },
+  {
+    "id":"cce1cb0f.707e78",
+    "type":"switchNode",
+    "name":"switch parameter matches vgmux_private_ip_1",
+    "xml":"<switch test='`$parent-service-instance.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-name == vgmux_private_ip_1`'>\n\n\n",
+    "comments":"",
+    "outputs":1,
+    "x":900.6666717529297,
+    "y":1191.4996423721313,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "9d32fcca.bd388"
+      ]
+    ]
+  },
+  {
+    "id":"9d32fcca.bd388",
+    "type":"success",
+    "name":"true",
+    "xml":"<outcome value='true'>\n",
+    "comments":"",
+    "outputs":1,
+    "x":1159.3330192565918,
+    "y":1189.166374206543,
+    "z":"613ada42.e46534",
+    "wires":[
+      [
+        "3ac2ce1c.2c1862"
+      ]
+    ]
+  },
+  {
+    "id":"d65683ee.c2f16",
+    "type":"comment",
+    "name":"Get brg-wan-ip",
+    "info":"",
+    "comments":"",
+    "x":264.0000190734863,
+    "y":1384.00004196167,
+    "z":"613ada42.e46534",
+    "wires":[
+
+    ]
+  }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-unassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-unassign.json
new file mode 100644
index 0000000..d1895cf
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-unassign.json
@@ -0,0 +1 @@
+[{"id":"d0df0900.4fcd5","type":"dgstart","name":"DGSTART","outputs":1,"x":133,"y":56,"z":"7c97bedb.1d31f","wires":[["c6ff669a.26cce"]]},{"id":"c6ff669a.26cce","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":229.23807907104492,"y":116.95239067077637,"z":"7c97bedb.1d31f","wires":[["a36cb8ff.96247"]]},{"id":"a36cb8ff.96247","type":"method","name":"tunnelxconn-topology-operation-unassign","xml":"<method rpc='tunnelxconn-topology-operation-unassign' mode='sync'>\n","comments":"","outputs":1,"x":273.15489196777344,"y":156.190447807312,"z":"7c97bedb.1d31f","wires":[["80d4d61f.2e5f5"]]},{"id":"80d4d61f.2e5f5","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":183.47619247436523,"y":295.5237879753113,"z":"7c97bedb.1d31f","wires":[["f43956d6.a61ab","78019473.89211c","56e75d3b.d9027c","399e93b8.1efa3c","87471e8d.32c7a8","b069670d.e3fd9","8def1fff.634bf","763bc49e.756a84"]]},{"id":"78019473.89211c","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":450.0001106262207,"y":965.2145080566406,"z":"7c97bedb.1d31f","wires":[]},{"id":"f43956d6.a61ab","type":"set","name":"set output to api handler","xml":"<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='tunnelxconn-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $tunnelxconn-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n","comments":"","x":478.75402450561523,"y":929.3370542526245,"z":"7c97bedb.1d31f","wires":[]},{"id":"399e93b8.1efa3c","type":"set","name":"set tmp.ar.self-link","xml":"<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/tunnelxconn-topology/'` \" />\n\n","comments":"","x":445.73806381225586,"y":269.33332538604736,"z":"7c97bedb.1d31f","wires":[]},{"id":"56e75d3b.d9027c","type":"set","name":"set tmp.ar.allotted-resource-id,etc","xml":"<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n","comments":"","x":492.9973258972168,"y":235.59259128570557,"z":"7c97bedb.1d31f","wires":[]},{"id":"87471e8d.32c7a8","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":451.9934196472168,"y":305.23152446746826,"z":"7c97bedb.1d31f","wires":[[]]},{"id":"8def1fff.634bf","type":"execute","name":"execute RestApiCallNode - Get AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":514.5187530517578,"y":466.4594917297363,"z":"7c97bedb.1d31f","wires":[["2879f807.c2d608","c9414c31.18699"]]},{"id":"b069670d.e3fd9","type":"execute","name":"generate allotted-resource url","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.tx-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n","comments":"","outputs":1,"x":480.0648536682129,"y":365.0172290802002,"z":"7c97bedb.1d31f","wires":[[]]},{"id":"2879f807.c2d608","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":771.8148918151855,"y":465.26725220680237,"z":"7c97bedb.1d31f","wires":[["f4855ff6.0b3b"]]},{"id":"14a648.1d9f09b9","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":792.837329864502,"y":872.432332418859,"z":"7c97bedb.1d31f","wires":[["c4ba90bf.2de4a"]]},{"id":"d473f1de.148fe8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":783.8373794555664,"y":840.9323581680655,"z":"7c97bedb.1d31f","wires":[["c4ba90bf.2de4a"]]},{"id":"a8e7182f.312998","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":787.5874176025391,"y":811.2894630432129,"z":"7c97bedb.1d31f","wires":[["4057dc1e.4aac64"]]},{"id":"c4ba90bf.2de4a","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 updating md-sal for tunnelxconn-allotted-resource\" />\n","comments":"","x":953.5874176025391,"y":841.6823820099235,"z":"7c97bedb.1d31f","wires":[]},{"id":"f4855ff6.0b3b","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":952.8148460388184,"y":465.7672016620636,"z":"7c97bedb.1d31f","wires":[["cffd4ec6.6adda","db8e227c.028b78"]]},{"id":"cffd4ec6.6adda","type":"switchNode","name":"switch tx length","xml":"<switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>\n","comments":"","outputs":1,"x":1198.6720924377441,"y":500.052964925766,"z":"7c97bedb.1d31f","wires":[["5cecfc03.3b3404"]]},{"id":"5cecfc03.3b3404","type":"other","name":"outcome 1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1389.6720962524414,"y":500.0529625415802,"z":"7c97bedb.1d31f","wires":[["51b6d859.ea7e28"]]},{"id":"a96ddd82.3a31d","type":"set","name":"set tx-ar from get","xml":"<set>\n<parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />\n","comments":"","x":1789.5292320251465,"y":500.62438678741455,"z":"7c97bedb.1d31f","wires":[]},{"id":"51b6d859.ea7e28","type":"block","name":"block: atomic","xml":"<block atomic='true'>\n","atomic":"false","comments":"","outputs":1,"x":1560.5290794372559,"y":500.6244316101074,"z":"7c97bedb.1d31f","wires":[["a96ddd82.3a31d","ec99f86c.00d618","23d29c1b.fb536c"]]},{"id":"ec99f86c.00d618","type":"set","name":"set oper-status","xml":"<set>\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />\n<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n","comments":"","x":1787.5294761657715,"y":568.0529508590698,"z":"7c97bedb.1d31f","wires":[]},{"id":"6c17e931.0e29b","type":"comment","name":"GET tunnelxconn-allotted-resource from mdsal","info":"","comments":"","x":539.8148155212402,"y":429.7671926021576,"z":"7c97bedb.1d31f","wires":[]},{"id":"23d29c1b.fb536c","type":"switchNode","name":"switch order-status","xml":"<switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1797.52925491333,"y":533.6243848800659,"z":"7c97bedb.1d31f","wires":[["5f932a1c.5e9fdc","72c9269a.8f042"]]},{"id":"5f932a1c.5e9fdc","type":"outcome","name":"outcome Created","xml":"<outcome value='Created'>\n","comments":"","outputs":1,"x":2009.1292114257812,"y":494.6243848800659,"z":"7c97bedb.1d31f","wires":[["44c6766b.392c3"]]},{"id":"72c9269a.8f042","type":"outcome","name":"outcome Other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2034.8435859680176,"y":530.052975654602,"z":"7c97bedb.1d31f","wires":[["44c6766b.392c3"]]},{"id":"db8e227c.028b78","type":"set","name":"save backup copy of mdsal-ar for rollback","xml":"<set>\n<parameter name='bk-tx-ar' value='$mdsal-ar.' />\n","comments":"","x":1278.3864250183105,"y":465.76729369163513,"z":"7c97bedb.1d31f","wires":[]},{"id":"547d4cb2.bc5df4","type":"comment","name":"Create urls for restapi","info":"","comments":"","x":450.9576606750488,"y":334.6243562698364,"z":"7c97bedb.1d31f","wires":[]},{"id":"4057dc1e.4aac64","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":929.2433853149414,"y":807.481632232666,"z":"7c97bedb.1d31f","wires":[[]]},{"id":"c9414c31.18699","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":771.5766868591309,"y":501.4814250469208,"z":"7c97bedb.1d31f","wires":[["98283d92.bd116"]]},{"id":"98283d92.bd116","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":951.5766372680664,"y":502.1479756832123,"z":"7c97bedb.1d31f","wires":[[]]},{"id":"44c6766b.392c3","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2223.5997276306152,"y":496.0000190734863,"z":"7c97bedb.1d31f","wires":[[]]},{"id":"763bc49e.756a84","type":"execute","name":"execute RestApiCallNode - PUT AR by id","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n","comments":"","outputs":1,"x":516.0000610351562,"y":824.0000267028809,"z":"7c97bedb.1d31f","wires":[["a8e7182f.312998","d473f1de.148fe8","14a648.1d9f09b9"]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation.json
new file mode 100644
index 0000000..6bbcf81
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_tunnelxconn-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"c5997008.353ab8","type":"dgstart","name":"DGSTART","outputs":1,"x":142,"y":105.41365623474121,"z":"8e01e90d.03c0b8","wires":[["abdbe8b6.e08a78"]]},{"id":"abdbe8b6.e08a78","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.61902618408203,"y":145.6517686843872,"z":"8e01e90d.03c0b8","wires":[["e8a7f372.22de48"]]},{"id":"e8a7f372.22de48","type":"method","name":"tunnelxconn-topology-operation","xml":"<method rpc='tunnelxconn-topology-operation' mode='sync'>\n","comments":"","outputs":1,"x":205.09529876708984,"y":205.41365432739258,"z":"8e01e90d.03c0b8","wires":[["e6702a55.7cc68"]]},{"id":"9720859a.3c0db8","type":"comment","name":"TUNNELXCONN-TOPOLOGY-OPERATION ","info":"","comments":"","x":533.0115203857422,"y":53,"z":"8e01e90d.03c0b8","wires":[]},{"id":"e6702a55.7cc68","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":258.3810043334961,"y":288.85711574554443,"z":"8e01e90d.03c0b8","wires":[["ebc169f5.8ce6c","40354611.158cb8","28ec1192.5202fe","13fd24ca.9b546b"]]},{"id":"ebc169f5.8ce6c","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":482.7500534057617,"y":892.6997756958008,"z":"8e01e90d.03c0b8","wires":[]},{"id":"40354611.158cb8","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":479.3809280395508,"y":499.2708339691162,"z":"8e01e90d.03c0b8","wires":[["e110537f.9e824","a004aa52.e35ad8","c9089335.4b04a","b3ca7c02.e6d98","7444ae44.dcba3","48fe654.5987c1c","960a1a9f.a78d88"]]},{"id":"e110537f.9e824","type":"other","name":"assign","xml":"<outcome value='assign'>\n","comments":"","outputs":1,"x":701.2857551574707,"y":360.1279149055481,"z":"8e01e90d.03c0b8","wires":[["99909182.dd328"]]},{"id":"99909182.dd328","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":881.0952835083008,"y":362.5566062927246,"z":"8e01e90d.03c0b8","wires":[["e1de8938.61cb48"]]},{"id":"28ec1192.5202fe","type":"call","name":"call GENERIC-RESOURCE-API:validate-tunnelxconn-input","xml":"<call module='GENERIC-RESOURCE-API' rpc='validate-tunnelxconn-input' mode='sync' >\n","comments":"","outputs":1,"x":613.9523544311523,"y":280.842248916626,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"e1de8938.61cb48","type":"call","name":"call GENERIC-RESOURCE-API:tunnelxconn-topology-operation-assign","xml":"<call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-assign' mode='sync' >\n","comments":"","outputs":1,"x":1252.6665802001953,"y":362.4136619567871,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"a004aa52.e35ad8","type":"other","name":"activate","xml":"<outcome value='activate'>\n","comments":"","outputs":1,"x":701.6666641235352,"y":449.4136562347412,"z":"8e01e90d.03c0b8","wires":[["cc6a8db0.4795b"]]},{"id":"cc6a8db0.4795b","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":885.9048233032227,"y":450.4137783050537,"z":"8e01e90d.03c0b8","wires":[["7c9f0c5c.511f44"]]},{"id":"bee54d8b.c96af8","type":"call","name":"call GENERIC-RESOURCE-API:network-topology-operation-activate","xml":"<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-activate' mode='sync' >\n","comments":"","outputs":1,"x":1818.476342519125,"y":1425.6041316986084,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"c9089335.4b04a","type":"other","name":"deactivate","xml":"<outcome value='deactivate'>\n","comments":"","outputs":1,"x":710.6667041778564,"y":509.4137144088745,"z":"8e01e90d.03c0b8","wires":[["4a034527.24b8dc"]]},{"id":"4a034527.24b8dc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":891.904863357544,"y":510.413836479187,"z":"8e01e90d.03c0b8","wires":[["a75e1598.4bbc68"]]},{"id":"9b4b1506.0bc638","type":"call","name":"call GENERIC-RESOURCE-API:network-topology-operation-deactivate","xml":"<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-deactivate' mode='sync' >\n","comments":"","outputs":1,"x":1824.9762509663906,"y":1541.3541316986084,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"b3ca7c02.e6d98","type":"other","name":"unassign","xml":"<outcome value='unassign'>\n","comments":"","outputs":1,"x":708.66672706604,"y":627.7470541000366,"z":"8e01e90d.03c0b8","wires":[["a7efa285.145ec"]]},{"id":"a7efa285.145ec","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":889.9048862457275,"y":628.7471761703491,"z":"8e01e90d.03c0b8","wires":[["a354a8f7.f115e8"]]},{"id":"e6bc3249.9ad08","type":"call","name":"call GENERIC-RESOURCE-API:network-topology-operation-unassign","xml":"<call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-unassign' mode='sync' >\n","comments":"","outputs":1,"x":1831.7262509663906,"y":1654.1041316986084,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"7444ae44.dcba3","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":708.000057220459,"y":687.7470369338989,"z":"8e01e90d.03c0b8","wires":[["aa7590e9.9ce35"]]},{"id":"aa7590e9.9ce35","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-action is a required input\" />\n","comments":"","x":890.0000534057617,"y":686.7470464706421,"z":"8e01e90d.03c0b8","wires":[]},{"id":"13fd24ca.9b546b","type":"set","name":"Set final indicator to Y","xml":"<set>\n<parameter name=\"ack-final\" value=\"Y\"/>","comments":"","x":501.77774810791016,"y":851.8581142425537,"z":"8e01e90d.03c0b8","wires":[]},{"id":"f542bb16.4aae08","type":"for","name":"for nidx..service-data.networks.network[]","xml":"<for index='nidx' start='0' end='`$service-data.networks.network_length`' >\n","comments":"","outputs":1,"x":1720.3971341451015,"y":1319.5088863372803,"z":"8e01e90d.03c0b8","wires":[["f85cf710.908598"]]},{"id":"85d25a09.13b6e8","type":"switchNode","name":"switch service-data.networks.network_length","xml":"<switch test='`$service-data.networks.network_length`'>\n","comments":"","outputs":1,"x":1054.1112302144375,"y":1284.0802669525146,"z":"8e01e90d.03c0b8","wires":[["ed7dceb2.521af8","442e7a57.919cb4"]]},{"id":"ed7dceb2.521af8","type":"other","name":"outcome Null","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1297.1111691792812,"y":1286.0802764892578,"z":"8e01e90d.03c0b8","wires":[["16baa510.6202ab"]]},{"id":"442e7a57.919cb4","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1251.1111996968593,"y":1319.0802974700928,"z":"8e01e90d.03c0b8","wires":[["3d31b074.5214c8"]]},{"id":"f85cf710.908598","type":"switchNode","name":"switch networkid found","xml":"<switch test=\"`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`\">\n\n","comments":"","outputs":1,"x":2010.8256848653164,"y":1318.7589702606201,"z":"8e01e90d.03c0b8","wires":[["487f872a.c5f14"]]},{"id":"487f872a.c5f14","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2199.7780392964687,"y":1319.6517086029053,"z":"8e01e90d.03c0b8","wires":[["4fb275ff.c6b394"]]},{"id":"4fb275ff.c6b394","type":"set","name":"set tmp.nidx and ctx.network-data","xml":"<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='ctx.network-data.' value='`$service-data.networks.network[$nidx].`' />\n","comments":"","x":2433.309808095297,"y":1318.4017162322998,"z":"8e01e90d.03c0b8","wires":[]},{"id":"fc9c1eb8.d3fa38","type":"comment","name":"Find the index to service data for this network - save id in tmp.nidx, save service-data","info":"","comments":"","x":1177.2223141988125,"y":1253.0802898406982,"z":"8e01e90d.03c0b8","wires":[]},{"id":"16baa510.6202ab","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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n","comments":"","x":1488.888726552328,"y":1283.969274520874,"z":"8e01e90d.03c0b8","wires":[]},{"id":"3d31b074.5214c8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1418.3811658223476,"y":1318.634874343872,"z":"8e01e90d.03c0b8","wires":[["f542bb16.4aae08","9e52b270.218af"]]},{"id":"9e52b270.218af","type":"switchNode","name":"switch tmp.nidx ","xml":"<switch test=\"`$tmp.nidx`\">\n\n","comments":"","outputs":1,"x":1638.6985638936367,"y":1361.4920930862427,"z":"8e01e90d.03c0b8","wires":[["ce4359ae.149468"]]},{"id":"e5ac1296.05ba08","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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n","comments":"","x":1991.5555470784511,"y":1357.206335067749,"z":"8e01e90d.03c0b8","wires":[]},{"id":"ce4359ae.149468","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1810.1270993550625,"y":1360.0634784698486,"z":"8e01e90d.03c0b8","wires":[["e5ac1296.05ba08"]]},{"id":"bf493b0c.b8abe8","type":"switchNode","name":"switch network-level-oper-status","xml":"<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1031.4445737202968,"y":1425.5555324554443,"z":"8e01e90d.03c0b8","wires":[["e4c98358.a498f","e02cb11a.413f08"]]},{"id":"e4c98358.a498f","type":"outcome","name":"outcome PendingCreate","xml":"<outcome value='PendingCreate'>\n","comments":"","outputs":1,"x":1396.4445533752441,"y":1425.5555171966553,"z":"8e01e90d.03c0b8","wires":[["bee54d8b.c96af8"]]},{"id":"e02cb11a.413f08","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1346.4446004231777,"y":1465.5555477142334,"z":"8e01e90d.03c0b8","wires":[["d11487a6.be8bb"]]},{"id":"d11487a6.be8bb","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 is not in appropriate state for activate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />","comments":"","x":1516.4446004231777,"y":1465.5555477142334,"z":"8e01e90d.03c0b8","wires":[]},{"id":"c4b0149b.1a41e8","type":"switchNode","name":"switch network-level-oper-status","xml":"<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1038.7460568745937,"y":1541.5069332122803,"z":"8e01e90d.03c0b8","wires":[["458164ed.c9b604","d8c82fb0.7de7"]]},{"id":"458164ed.c9b604","type":"outcome","name":"outcome Created","xml":"<outcome value='Created'>\n","comments":"","outputs":1,"x":1401.7460263570156,"y":1541.5069637298584,"z":"8e01e90d.03c0b8","wires":[["9b4b1506.0bc638"]]},{"id":"d8c82fb0.7de7","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1371.7460263570156,"y":1581.5069637298584,"z":"8e01e90d.03c0b8","wires":[["13499f5e.55e829"]]},{"id":"13499f5e.55e829","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 is not in appropriate state for deactivate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />","comments":"","x":1537.7460263570156,"y":1583.5069637298584,"z":"8e01e90d.03c0b8","wires":[]},{"id":"8187a730.57d898","type":"switchNode","name":"switch network-level-oper-status","xml":"<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1038.547631581625,"y":1655.7083339691162,"z":"8e01e90d.03c0b8","wires":[["62333e98.d8c27","7876a952.19927","23245147.748e96"]]},{"id":"62333e98.d8c27","type":"outcome","name":"outcome PendingCreate","xml":"<outcome value='PendingCreate'>\n","comments":"","outputs":1,"x":1398.5476010640468,"y":1655.7083644866943,"z":"8e01e90d.03c0b8","wires":[["e6bc3249.9ad08"]]},{"id":"7876a952.19927","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1355.5475400288906,"y":1739.7083797454834,"z":"8e01e90d.03c0b8","wires":[["d2c3c856.cce988"]]},{"id":"d2c3c856.cce988","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 is not in appropriate state for unassign. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />","comments":"","x":1546.8809598286953,"y":1738.3750085830688,"z":"8e01e90d.03c0b8","wires":[]},{"id":"23245147.748e96","type":"outcome","name":"outcome PendingDelete","xml":"<outcome value='PendingDelete'>\n","comments":"","outputs":1,"x":1401.7778256734218,"y":1693.5555324554443,"z":"8e01e90d.03c0b8","wires":[["e6bc3249.9ad08"]]},{"id":"48fe654.5987c1c","type":"other","name":"create","xml":"<outcome value='create'>\n","comments":"","outputs":1,"x":706.9073715209961,"y":409.018497467041,"z":"8e01e90d.03c0b8","wires":[["8d784915.6f5648"]]},{"id":"8d784915.6f5648","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":888.1455307006836,"y":410.0186195373535,"z":"8e01e90d.03c0b8","wires":[["9d556b65.dd26f"]]},{"id":"9d556b65.dd26f","type":"call","name":"call GENERIC-RESOURCE-API:tunnelxconn-topology-operation-create","xml":"<call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-create' mode='sync' >\n","comments":"","outputs":1,"x":1254.0502395629883,"y":409.5423412322998,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"960a1a9f.a78d88","type":"other","name":"delete","xml":"<outcome value='delete'>\n","comments":"","outputs":1,"x":705.2407245635986,"y":570.6851568222046,"z":"8e01e90d.03c0b8","wires":[["6c2ddc48.2fd9b4"]]},{"id":"6c2ddc48.2fd9b4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":886.4788837432861,"y":571.6852788925171,"z":"8e01e90d.03c0b8","wires":[["5ed8a66f.8fdf3"]]},{"id":"a75e1598.4bbc68","type":"call","name":"call GENERIC-RESOURCE-API:tunnelxconn-topology-operation-deactivate","xml":"<call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-deactivate' mode='sync' >\n","comments":"","outputs":1,"x":1273.8147811889648,"y":509.8951950073242,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"5ed8a66f.8fdf3","type":"call","name":"call GENERIC-RESOURCE-API:tunnelxconn-topology-operation-delete","xml":"<call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-delete' mode='sync' >\n","comments":"","outputs":1,"x":1263.4816303253174,"y":571.5618238449097,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"a354a8f7.f115e8","type":"call","name":"call GENERIC-RESOURCE-API:tunnelxconn-topology-operation-unassign","xml":"<call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-unassign' mode='sync' >\n","comments":"","outputs":1,"x":1269.1481342315674,"y":628.8951501846313,"z":"8e01e90d.03c0b8","wires":[[]]},{"id":"7c9f0c5c.511f44","type":"call","name":"call GENERIC-RESOURCE-API:tunnelxconn-topology-operation-activate","xml":"<call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-activate' mode='sync' >\n","comments":"","outputs":1,"x":1263.4814682006836,"y":450.8951168060303,"z":"8e01e90d.03c0b8","wires":[[]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-api-contrail-route-input.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-api-contrail-route-input.json
new file mode 100644
index 0000000..ad7e00c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-api-contrail-route-input.json
@@ -0,0 +1,953 @@
+[
+    {
+        "id": "f1bc4968.7eb2e8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 208,
+        "y": 132,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "8aca300e.91f4e"
+            ]
+        ]
+    },
+    {
+        "id": "8aca300e.91f4e",
+        "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": 364.28570556640625,
+        "y": 206.2381134033203,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "7a5ea63a.a2cda8"
+            ]
+        ]
+    },
+    {
+        "id": "7a5ea63a.a2cda8",
+        "type": "method",
+        "name": "validate-api-contrail-route-input",
+        "xml": "<method rpc='validate-api-contrail-route-input' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 366.0952911376953,
+        "y": 336.3333148956299,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "a3e57aeb.68b638"
+            ]
+        ]
+    },
+    {
+        "id": "a3e57aeb.68b638",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 377.7500457763672,
+        "y": 550.4434947967529,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "70a277f9.beb768",
+                "d5a23e44.43bc2"
+            ]
+        ]
+    },
+    {
+        "id": "fb69bbc.365af48",
+        "type": "comment",
+        "name": "validate-alloted-resource-input - CHANGELOG",
+        "info": "3/22: Initial release 2.0.0",
+        "comments": "",
+        "x": 221,
+        "y": 36,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "70a277f9.beb768",
+        "type": "switchNode",
+        "name": "switch ctotmp.action",
+        "xml": "<switch test='`$ctotmp.action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 609.3333282470703,
+        "y": 552.6666402816772,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "60e8940f.83314c",
+                "23d0b921.392b16",
+                "b3dc9943.238bb8",
+                "7c0852de.3fcb3c"
+            ]
+        ]
+    },
+    {
+        "id": "60e8940f.83314c",
+        "type": "other",
+        "name": "activate",
+        "xml": "<outcome value='activate'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 898.9999694824219,
+        "y": 579.0000305175781,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "d174cfd4.d100c"
+            ]
+        ]
+    },
+    {
+        "id": "23d0b921.392b16",
+        "type": "other",
+        "name": "deactivate",
+        "xml": "<outcome value='deactivate'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 905.9999694824219,
+        "y": 669.0000305175781,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "bbc754a5.64f958"
+            ]
+        ]
+    },
+    {
+        "id": "d174cfd4.d100c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1091.6666259765625,
+        "y": 578.3333740234375,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "6d0bce1b.8e11c",
+                "17c97d5f.6df303",
+                "899f4ff1.d737a",
+                "3e76bc65.39b5e4",
+                "e0cf1856.9a7238",
+                "99a9e6d1.d9e268",
+                "d1859a98.35cd48"
+            ]
+        ]
+    },
+    {
+        "id": "bbc754a5.64f958",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1087.9999694824219,
+        "y": 668.0000305175781,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "6d0bce1b.8e11c",
+                "17c97d5f.6df303",
+                "899f4ff1.d737a",
+                "3e76bc65.39b5e4",
+                "e0cf1856.9a7238",
+                "99a9e6d1.d9e268",
+                "c0949b70.45f808",
+                "d1859a98.35cd48"
+            ]
+        ]
+    },
+    {
+        "id": "d5a23e44.43bc2",
+        "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": 671.4999542236328,
+        "y": 983.4999923706055,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "b3dc9943.238bb8",
+        "type": "other",
+        "name": "create",
+        "xml": "<outcome value='create'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 885.7777137756348,
+        "y": 476.90740871429443,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "da329004.96183"
+            ]
+        ]
+    },
+    {
+        "id": "da329004.96183",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1046.396713256836,
+        "y": 476.3359785079956,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "746df899.c59dc8",
+                "5e9ab833.5ba308",
+                "8b609f85.dc87b",
+                "7fd6bbeb.e7d544",
+                "6d0bce1b.8e11c",
+                "17c97d5f.6df303",
+                "899f4ff1.d737a",
+                "4ed6551b.a80e7c",
+                "a64a5a47.b66618",
+                "d1859a98.35cd48"
+            ]
+        ]
+    },
+    {
+        "id": "7c0852de.3fcb3c",
+        "type": "other",
+        "name": "delete",
+        "xml": "<outcome value='delete'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 899.111083984375,
+        "y": 753.5739946365356,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "3c247eb3.3c2862"
+            ]
+        ]
+    },
+    {
+        "id": "3c247eb3.3c2862",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1081.1111145019531,
+        "y": 749.5740175247192,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "6d0bce1b.8e11c",
+                "17c97d5f.6df303",
+                "899f4ff1.d737a",
+                "3e76bc65.39b5e4",
+                "c0949b70.45f808",
+                "9cb30997.5f1958",
+                "d1859a98.35cd48"
+            ]
+        ]
+    },
+    {
+        "id": "746df899.c59dc8",
+        "type": "switchNode",
+        "name": "switch parent-service-service-instance-id",
+        "xml": "<switch test='`$cto-api.parent-service-instance-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1641.3333358764648,
+        "y": 459.11104583740234,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "db1cef37.54c6d"
+            ]
+        ]
+    },
+    {
+        "id": "db1cef37.54c6d",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1877.0476989746094,
+        "y": 459.68245697021484,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "cd19ae4f.3105c"
+            ]
+        ]
+    },
+    {
+        "id": "cd19ae4f.3105c",
+        "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=\"API-contrail-route-topology-operation:cto-api.parent-service-instance-id is a required input\" />\n",
+        "comments": "",
+        "x": 2027.0476722717285,
+        "y": 458.682466506958,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "5e9ab833.5ba308",
+        "type": "switchNode",
+        "name": "switch port-mirror-configuration-instance-id",
+        "xml": "<switch test='`$cto-api.port-mirror-configuration-instance-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1642.7619934082031,
+        "y": 502.53963470458984,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "2357aa6.4b7ea56"
+            ]
+        ]
+    },
+    {
+        "id": "2357aa6.4b7ea56",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1878.4763565063477,
+        "y": 501.11104583740234,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "c50f59ae.92c4b8"
+            ]
+        ]
+    },
+    {
+        "id": "c50f59ae.92c4b8",
+        "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=\"API-contrail-route-topology-operation:cto-api.port-mirror-configuration-instance-id is a required input\" />\n",
+        "comments": "",
+        "x": 2028.4763298034668,
+        "y": 501.1110553741455,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "8b609f85.dc87b",
+        "type": "switchNode",
+        "name": "switch source-network-role",
+        "xml": "<switch test='`$cto-api.source-network-role`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1596.7619934082031,
+        "y": 533.5396347045898,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "e36c99b7.fb8c18"
+            ]
+        ]
+    },
+    {
+        "id": "e36c99b7.fb8c18",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1880.4763565063477,
+        "y": 534.1110458374023,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "5d47c9d1.c26318"
+            ]
+        ]
+    },
+    {
+        "id": "5d47c9d1.c26318",
+        "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=\"API-contrail-route-topology-operation:cto-api.source-network-role is a required input\" />\n",
+        "comments": "",
+        "x": 2030.4763298034668,
+        "y": 534.1110553741455,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "7fd6bbeb.e7d544",
+        "type": "switchNode",
+        "name": "switch collector-network-role",
+        "xml": "<switch test='`$cto-api.collector-network-role`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1599.7619934082031,
+        "y": 566.5396347045898,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "d98d448a.1ffca8"
+            ]
+        ]
+    },
+    {
+        "id": "d98d448a.1ffca8",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1878.4763565063477,
+        "y": 567.1110458374023,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "3c1831c7.902e3e"
+            ]
+        ]
+    },
+    {
+        "id": "3c1831c7.902e3e",
+        "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=\"API-contrail-route-topology-operation:cto-api.collector-network-role is a required input\" />\n",
+        "comments": "",
+        "x": 2028.4763298034668,
+        "y": 567.1110553741455,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "6d0bce1b.8e11c",
+        "type": "switchNode",
+        "name": "switch default-domain",
+        "xml": "<switch test='`$cto-api.default-domain`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1577.7619934082031,
+        "y": 598.5396347045898,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "1e0b22d4.496f8d"
+            ]
+        ]
+    },
+    {
+        "id": "1e0b22d4.496f8d",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1880.4763565063477,
+        "y": 598.1110458374023,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "c7df5fb4.9bafa"
+            ]
+        ]
+    },
+    {
+        "id": "c7df5fb4.9bafa",
+        "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=\"API-contrail-route-topology-operation:cto-api.default-domain is a required input\" />\n",
+        "comments": "",
+        "x": 2030.4763298034668,
+        "y": 598.1110553741455,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "17c97d5f.6df303",
+        "type": "switchNode",
+        "name": "switch default-project",
+        "xml": "<switch test='`$cto-api.default-project`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1576.7619934082031,
+        "y": 629.5396347045898,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "7e497852.cd0cb8"
+            ]
+        ]
+    },
+    {
+        "id": "7e497852.cd0cb8",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1879.4763565063477,
+        "y": 628.1110458374023,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "720feb4.330fa14"
+            ]
+        ]
+    },
+    {
+        "id": "720feb4.330fa14",
+        "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=\"API-contrail-route-topology-operation:cto-api.default-project is a required input\" />\n",
+        "comments": "",
+        "x": 2029.4763298034668,
+        "y": 628.1110553741455,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "899f4ff1.d737a",
+        "type": "switchNode",
+        "name": "switch cloud-region-id",
+        "xml": "<switch test='`$cto-api.cloud-region-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1579.1905822753906,
+        "y": 660.5396347045898,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "b9d77553.37a388"
+            ]
+        ]
+    },
+    {
+        "id": "b9d77553.37a388",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1881.9049453735352,
+        "y": 659.1110458374023,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "193d6209.24a30e"
+            ]
+        ]
+    },
+    {
+        "id": "193d6209.24a30e",
+        "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=\"API-contrail-route-topology-operation:cto-api.cloud-region-id is a required input\" />\n",
+        "comments": "",
+        "x": 2031.9049186706543,
+        "y": 659.1110553741455,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "a64a5a47.b66618",
+        "type": "switchNode",
+        "name": "switch service-type",
+        "xml": "<switch test='`$cto-api.service-type`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1574.7025146484375,
+        "y": 759.3134765625,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "5aa01389.f7fc2c"
+            ]
+        ]
+    },
+    {
+        "id": "5aa01389.f7fc2c",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1867.0835161209106,
+        "y": 751.134877204895,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "39bef0d0.1c841"
+            ]
+        ]
+    },
+    {
+        "id": "39bef0d0.1c841",
+        "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=\"API-contrail-route-topology-operation-create:cto-api.service-type is a required input\" />\n",
+        "comments": "",
+        "x": 2022.0834617614746,
+        "y": 749.4682312011719,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "4ed6551b.a80e7c",
+        "type": "switchNode",
+        "name": "switch cloud-owner",
+        "xml": "<switch test='`$cto-api.cloud-owner`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1581.5119934082031,
+        "y": 691.7896347045898,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "c8ff9b61.c02c08"
+            ]
+        ]
+    },
+    {
+        "id": "c8ff9b61.c02c08",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1884.2263565063477,
+        "y": 690.3610458374023,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "57534b49.25a3e4"
+            ]
+        ]
+    },
+    {
+        "id": "57534b49.25a3e4",
+        "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=\"API-contrail-route-topology-operation-create:cto-api.cloud-owner is a required input\" />\n",
+        "comments": "",
+        "x": 2034.2263298034668,
+        "y": 690.3610553741455,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "9ff30a23.e38e78",
+        "type": "switchNode",
+        "name": "switch tenant-id",
+        "xml": "<switch test='`$cto-api.tenant-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1566.428466796875,
+        "y": 724.8729248046875,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "579b2c5b.d15574"
+            ]
+        ]
+    },
+    {
+        "id": "579b2c5b.d15574",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1889.6666793823242,
+        "y": 722.1110782623291,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "2a985f25.af0b6"
+            ]
+        ]
+    },
+    {
+        "id": "2a985f25.af0b6",
+        "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=\"API-contrail-route-topology-operation-create:cto-api.tenant-id is a required input\" />\n",
+        "comments": "",
+        "x": 2039.6666526794434,
+        "y": 722.1110877990723,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "3e76bc65.39b5e4",
+        "type": "switchNode",
+        "name": "switch contrail-route-allotted-resource-id",
+        "xml": "<switch test='`$cto-api.contrail-route-allotted-resource-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1644.9999084472656,
+        "y": 793.777717590332,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "8b673d0c.be5ff"
+            ]
+        ]
+    },
+    {
+        "id": "8b673d0c.be5ff",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1887.7142715454102,
+        "y": 793.3491287231445,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "95125998.9a3548"
+            ]
+        ]
+    },
+    {
+        "id": "95125998.9a3548",
+        "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=\"API-contrail-route-topology-operation:cto-api.src-contrail-network-fqdn is a required input\" />\n",
+        "comments": "",
+        "x": 2037.7142448425293,
+        "y": 793.3491382598877,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "e0cf1856.9a7238",
+        "type": "switchNode",
+        "name": "switch src-contrail-network-fqdn",
+        "xml": "<switch test='`$cto-api.src-contrail-network-fqdn`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1614.9999084472656,
+        "y": 825.777717590332,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "3ae4e9a1.78d416"
+            ]
+        ]
+    },
+    {
+        "id": "3ae4e9a1.78d416",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1885.7142715454102,
+        "y": 827.3491287231445,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "3ee4d143.7a76ce"
+            ]
+        ]
+    },
+    {
+        "id": "3ee4d143.7a76ce",
+        "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=\"API-contrail-route-topology-operation:cto-api.src-contrail-network-fqdn is a required input\" />\n",
+        "comments": "",
+        "x": 2035.7142448425293,
+        "y": 827.3491382598877,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "99a9e6d1.d9e268",
+        "type": "switchNode",
+        "name": "switch collector-contrail-network-fqdn",
+        "xml": "<switch test='`$cto-api.collector-contrail-network-fqdn`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1628.5712585449219,
+        "y": 855.3491287231445,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "a148e792.360c28"
+            ]
+        ]
+    },
+    {
+        "id": "a148e792.360c28",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1889.2856216430664,
+        "y": 860.920539855957,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "2d904442.622fdc"
+            ]
+        ]
+    },
+    {
+        "id": "2d904442.622fdc",
+        "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=\"API-contrail-route-topology-operation:cto-api.collector-contrail-network-fqdn is a required input\" />\n",
+        "comments": "",
+        "x": 2039.2855949401855,
+        "y": 860.9205493927002,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "c0949b70.45f808",
+        "type": "switchNode",
+        "name": "switch rollback-flag",
+        "xml": "<switch test='`$cto-api.rollback-flag`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1576.9998321533203,
+        "y": 888.1110534667969,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "c90c40a7.83515"
+            ]
+        ]
+    },
+    {
+        "id": "c90c40a7.83515",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1883.7141952514648,
+        "y": 893.6824645996094,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "b1c00356.584ea"
+            ]
+        ]
+    },
+    {
+        "id": "b1c00356.584ea",
+        "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=\"API-contrail-route-topology-operation-create:cto-api.rollback-flag is a required input\" />\n",
+        "comments": "",
+        "x": 2033.714168548584,
+        "y": 893.6824741363525,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "9cb30997.5f1958",
+        "type": "switchNode",
+        "name": "switch configuration-id",
+        "xml": "<switch test='`$cto-api.configuration-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1594.9044952392578,
+        "y": 926.7777996063232,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "48f0353.a6324cc"
+            ]
+        ]
+    },
+    {
+        "id": "48f0353.a6324cc",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1898.3331680297852,
+        "y": 926.6349124908447,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "829df7bb.e7d078"
+            ]
+        ]
+    },
+    {
+        "id": "829df7bb.e7d078",
+        "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=\"API-contrail-route-topology-operation-create:cto-api.configuration-id is a required input\" />\n",
+        "comments": "",
+        "x": 2054.0474853515625,
+        "y": 926.6349029541016,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    },
+    {
+        "id": "d1859a98.35cd48",
+        "type": "switchNode",
+        "name": "switch owning-entity",
+        "xml": "<switch test='`$cto-api.owning-entity`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1597,
+        "y": 965,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "214c0b55.5d9c14"
+            ]
+        ]
+    },
+    {
+        "id": "214c0b55.5d9c14",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1900.4286727905273,
+        "y": 964.8571128845215,
+        "z": "7f8fbc25.a75d04",
+        "wires": [
+            [
+                "7b4b6c31.fa8b04"
+            ]
+        ]
+    },
+    {
+        "id": "7b4b6c31.fa8b04",
+        "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=\"API-contrail-route-topology-operation-create:cto-api.owning-entity is a required input\" />\n",
+        "comments": "",
+        "x": 2056.1429901123047,
+        "y": 964.8571033477783,
+        "z": "7f8fbc25.a75d04",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-bbs-network-input-parameters.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-bbs-network-input-parameters.json
new file mode 100644
index 0000000..ae60784
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-bbs-network-input-parameters.json
@@ -0,0 +1,504 @@
+[
+    {
+        "id": "d045979f.3719e8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 124,
+        "y": 188,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "8d3f3543.6c42e8"
+            ]
+        ]
+    },
+    {
+        "id": "8d3f3543.6c42e8",
+        "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": 394,
+        "y": 188,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "3f8a94c6.a0a66c"
+            ]
+        ]
+    },
+    {
+        "id": "3f8a94c6.a0a66c",
+        "type": "method",
+        "name": "method:validate-bbs-network-input-parameters",
+        "xml": "<method rpc='validate-bbs-network-input-parameters' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 785.9998779296875,
+        "y": 188,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "1e5fc75a.b61f49"
+            ]
+        ]
+    },
+    {
+        "id": "1e5fc75a.b61f49",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 497,
+        "y": 275.00001525878906,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "4a6bc0d8.329b8"
+            ]
+        ]
+    },
+    {
+        "id": "4a6bc0d8.329b8",
+        "type": "switchNode",
+        "name": "switch:svc-action",
+        "xml": "<switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 482.00000762939453,
+        "y": 369.00000762939453,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "482e0838.ec1d68",
+                "96e69929.afbb48",
+                "d6f2cc10.9d71b",
+                "fad55640.134b28",
+                "f069bb63.bbd458"
+            ]
+        ]
+    },
+    {
+        "id": "482e0838.ec1d68",
+        "type": "outcome",
+        "name": "create",
+        "xml": "<outcome value='create'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 704,
+        "y": 369.0000305175781,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "8fc78fa0.182da"
+            ]
+        ]
+    },
+    {
+        "id": "96e69929.afbb48",
+        "type": "outcome",
+        "name": "delete",
+        "xml": "<outcome value='delete'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 703,
+        "y": 433,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "85d15bba.4297b8"
+            ]
+        ]
+    },
+    {
+        "id": "d6f2cc10.9d71b",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 690.0000343322754,
+        "y": 738.0000343322754,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "7cf97256.70f88c"
+            ]
+        ]
+    },
+    {
+        "id": "8fc78fa0.182da",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 930.3333358764648,
+        "y": 368.00002670288086,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "b2fd3772.24cfb8"
+            ]
+        ]
+    },
+    {
+        "id": "85d15bba.4297b8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 930.3333358764648,
+        "y": 432.00000858306885,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "d36a1fc8.b9675"
+            ]
+        ]
+    },
+    {
+        "id": "b2fd3772.24cfb8",
+        "type": "switchNode",
+        "name": "switch:request-action",
+        "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1142.333339691162,
+        "y": 367.00000762939453,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "1c7784fc.a4c1eb",
+                "8bd1d68a.0c8288",
+                "da93535.10b02b"
+            ]
+        ]
+    },
+    {
+        "id": "d36a1fc8.b9675",
+        "type": "switchNode",
+        "name": "switch:request-action",
+        "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1141.3333435058594,
+        "y": 431.00000858306885,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "1c7784fc.a4c1eb",
+                "81a3a010.345d7",
+                "11996730.5866f9"
+            ]
+        ]
+    },
+    {
+        "id": "1c7784fc.a4c1eb",
+        "type": "outcome",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1432.3333740234375,
+        "y": 575.0000162124634,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "2f3d74cb.5ebd0c"
+            ]
+        ]
+    },
+    {
+        "id": "8bd1d68a.0c8288",
+        "type": "outcome",
+        "name": "CreateAccessConnectivityInstance",
+        "xml": "<outcome value='CreateAccessConnectivityInstance'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1495.0000457763672,
+        "y": 279.00000762939453,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "a82faec.9ceee5"
+            ]
+        ]
+    },
+    {
+        "id": "da93535.10b02b",
+        "type": "outcome",
+        "name": "CreateInternetProfileInstance",
+        "xml": "<outcome value='CreateInternetProfileInstance'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1473.0000457763672,
+        "y": 349.00000953674316,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "506c0969.c19a98"
+            ]
+        ]
+    },
+    {
+        "id": "81a3a010.345d7",
+        "type": "outcome",
+        "name": "DeleteAccessConnectivityInstance",
+        "xml": "<outcome value='DeleteAccessConnectivityInstance'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1486.0000457763672,
+        "y": 431.00001335144043,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "ce6760e0.df132"
+            ]
+        ]
+    },
+    {
+        "id": "cbd80c8f.d9e71",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"svc-action is null\" />\n\n",
+        "comments": "",
+        "x": 909.6667060852051,
+        "y": 801.0000228881836,
+        "z": "fc0675dc.b60ce8",
+        "wires": []
+    },
+    {
+        "id": "2f3d74cb.5ebd0c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error invalid request-action\" />\n\n",
+        "comments": "",
+        "x": 1783.6667137145996,
+        "y": 571.0000219345093,
+        "z": "fc0675dc.b60ce8",
+        "wires": []
+    },
+    {
+        "id": "506c0969.c19a98",
+        "type": "switchNode",
+        "name": "switch:param_length",
+        "xml": "<switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1787.0000534057617,
+        "y": 348.00000953674316,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "e77456a.57d2ea8"
+            ]
+        ]
+    },
+    {
+        "id": "a82faec.9ceee5",
+        "type": "switchNode",
+        "name": "switch:param_length",
+        "xml": "<switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1781.0000457763672,
+        "y": 279.0000047683716,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "e77456a.57d2ea8"
+            ]
+        ]
+    },
+    {
+        "id": "e77456a.57d2ea8",
+        "type": "outcome",
+        "name": "null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2119.0000610351562,
+        "y": 363.00000953674316,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "acdaf629.bd5418"
+            ]
+        ]
+    },
+    {
+        "id": "ce6760e0.df132",
+        "type": "switchNode",
+        "name": "switch:param_length",
+        "xml": "<switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1791.0000495910645,
+        "y": 431.0000114440918,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "e77456a.57d2ea8"
+            ]
+        ]
+    },
+    {
+        "id": "acdaf629.bd5418",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error invalid request-action\" />\n\n",
+        "comments": "",
+        "x": 2301.0000610351562,
+        "y": 363.00001335144043,
+        "z": "fc0675dc.b60ce8",
+        "wires": []
+    },
+    {
+        "id": "fad55640.134b28",
+        "type": "outcome",
+        "name": "null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 688.0000190734863,
+        "y": 801.0000228881836,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "cbd80c8f.d9e71"
+            ]
+        ]
+    },
+    {
+        "id": "7cf97256.70f88c",
+        "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-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n",
+        "comments": "",
+        "x": 912.0000190734863,
+        "y": 739.0000228881836,
+        "z": "fc0675dc.b60ce8",
+        "wires": []
+    },
+    {
+        "id": "11996730.5866f9",
+        "type": "outcome",
+        "name": "DeleteInternetProfileInstance",
+        "xml": "<outcome value='DeleteInternetProfileInstance'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1475.0000457763672,
+        "y": 499.00001525878906,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "bdd985a1.b57348"
+            ]
+        ]
+    },
+    {
+        "id": "bdd985a1.b57348",
+        "type": "switchNode",
+        "name": "switch:param_length",
+        "xml": "<switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1799.0000495910645,
+        "y": 498.0000157356262,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "e77456a.57d2ea8"
+            ]
+        ]
+    },
+    {
+        "id": "f069bb63.bbd458",
+        "type": "outcome",
+        "name": "update",
+        "xml": "<outcome value='update'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 707.0000190734863,
+        "y": 634.000018119812,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "44f31586.32dc9c"
+            ]
+        ]
+    },
+    {
+        "id": "44f31586.32dc9c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 924.0000228881836,
+        "y": 634.0000171661377,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "892c807b.e3bd"
+            ]
+        ]
+    },
+    {
+        "id": "892c807b.e3bd",
+        "type": "switchNode",
+        "name": "switch:request-action",
+        "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1138.0000305175781,
+        "y": 634.0000171661377,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "a891bcca.f40e3",
+                "1c7784fc.a4c1eb"
+            ]
+        ]
+    },
+    {
+        "id": "a891bcca.f40e3",
+        "type": "outcome",
+        "name": "ChangeInternetProfileInstance",
+        "xml": "<outcome value='ChangeInternetProfileInstance'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1478.6667938232422,
+        "y": 634.0000190734863,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "fb90f1b4.602af"
+            ]
+        ]
+    },
+    {
+        "id": "fb90f1b4.602af",
+        "type": "switchNode",
+        "name": "switch:param_length",
+        "xml": "<switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1785.6667175292969,
+        "y": 632.0000190734863,
+        "z": "fc0675dc.b60ce8",
+        "wires": [
+            [
+                "e77456a.57d2ea8"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-brg-input.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-brg-input.json
new file mode 100644
index 0000000..ed34e05
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-brg-input.json
@@ -0,0 +1 @@
+[{"id":"4030c923.2b0638","type":"dgstart","name":"DGSTART","outputs":1,"x":153,"y":180.33332061767578,"z":"a36563f1.0ad948","wires":[["232a3784.702ad8"]]},{"id":"232a3784.702ad8","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":251.78570556640625,"y":254.57142448425293,"z":"a36563f1.0ad948","wires":[["c31f4ddf.1134"]]},{"id":"c31f4ddf.1134","type":"method","name":"validate-brg-input","xml":"<method rpc='validate-brg-input' mode='sync'>\n","comments":"","outputs":1,"x":280.6786193847656,"y":325.50001430511475,"z":"a36563f1.0ad948","wires":[["ea01ba8c.352078"]]},{"id":"ea01ba8c.352078","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":322.7500457763672,"y":598.7768154144287,"z":"a36563f1.0ad948","wires":[["453ef264.5585d4","506f96ca.9026e8","8750668f.37f25","ea98aac1.995a4","2b04d10e.4f29de"]]},{"id":"453ef264.5585d4","type":"switchNode","name":"switch svc-request-id","xml":"<switch test='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`'>\n","comments":"","outputs":1,"x":657.8095703125,"y":83.42860126495361,"z":"a36563f1.0ad948","wires":[["9c796d89.458af"]]},{"id":"9c796d89.458af","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":887.5238554818288,"y":81.42859799521284,"z":"a36563f1.0ad948","wires":[["a0bb007c.967d3"]]},{"id":"a0bb007c.967d3","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":1038.9523620605469,"y":78.09526443481445,"z":"a36563f1.0ad948","wires":[]},{"id":"506f96ca.9026e8","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$brg-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":650.3809204101562,"y":37,"z":"a36563f1.0ad948","wires":[["722e018f.fd36e8"]]},{"id":"722e018f.fd36e8","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":886.0952758789062,"y":38.57142353057861,"z":"a36563f1.0ad948","wires":[["ae3db492.dea2"]]},{"id":"ae3db492.dea2","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-action is a required input\" />\n","comments":"","x":1036.0952491760254,"y":38.57143306732178,"z":"a36563f1.0ad948","wires":[]},{"id":"6e12c726.fb47e","type":"comment","name":"validate-brg-input - CHANGELOG","info":"3/22: Initial release 1.0.0","comments":"","x":166,"y":84.33332061767578,"z":"a36563f1.0ad948","wires":[]},{"id":"8750668f.37f25","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$brg-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":562.6666603088379,"y":604.3333568572998,"z":"a36563f1.0ad948","wires":[["75e5a26e.8bbc1c","2139f95e.1444f6","d541942a.c645c","52ed858c.7fc904","c357fd26.93d77","a22f16cf.8b48b8"]]},{"id":"75e5a26e.8bbc1c","type":"other","name":"assign","xml":"<outcome value='assign'>","comments":"","outputs":1,"x":823.7143630981445,"y":439.90478706359863,"z":"a36563f1.0ad948","wires":[["b60b376b.c3b408"]]},{"id":"2139f95e.1444f6","type":"other","name":"activate","xml":"<outcome value='activate'>","comments":"","outputs":1,"x":843.9999694824219,"y":627.3333511352539,"z":"a36563f1.0ad948","wires":[["9d06a845.ab6b78"]]},{"id":"d541942a.c645c","type":"other","name":"deactivate","xml":"<outcome value='deactivate'>","comments":"","outputs":1,"x":850.9999694824219,"y":717.3333511352539,"z":"a36563f1.0ad948","wires":[["55258e57.83aa4"]]},{"id":"52ed858c.7fc904","type":"other","name":"unassign","xml":"<outcome value='unassign'>","comments":"","outputs":1,"x":831.9998321533203,"y":884.6666784286499,"z":"a36563f1.0ad948","wires":[["54954882.a91a7"]]},{"id":"b60b376b.c3b408","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1022.0238189697266,"y":438.05958557128906,"z":"a36563f1.0ad948","wires":[["d4cb145f.3b29d8","dbd0163e.1668b","a74acd1b.b2ef78","1551962.10999ea","be865110.8c5cc8","b7c65dae.5d181","88921e9.f4a5a6","9cdfba09.f3278"]]},{"id":"9d06a845.ab6b78","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1022.2500152587891,"y":627.0833930969238,"z":"a36563f1.0ad948","wires":[["1551962.10999ea","b7c65dae.5d181"]]},{"id":"55258e57.83aa4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1023.2500305175781,"y":718.3333950042725,"z":"a36563f1.0ad948","wires":[["1551962.10999ea","b7c65dae.5d181"]]},{"id":"54954882.a91a7","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1020.9998931884766,"y":885.166708946228,"z":"a36563f1.0ad948","wires":[["1551962.10999ea"]]},{"id":"d4cb145f.3b29d8","type":"switchNode","name":"switch vgmux-bearer-ip","xml":"<switch test='`$brg-topology-operation-input.brg-request-input.vgmux-bearer-ip`'>\n","comments":"","outputs":1,"x":1437.1190185546875,"y":403.63098907470703,"z":"a36563f1.0ad948","wires":[["41d55853.b58218"]]},{"id":"41d55853.b58218","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1637.118896484375,"y":409.4404983520508,"z":"a36563f1.0ad948","wires":[["f03be371.faa07"]]},{"id":"f03be371.faa07","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=\"brg-topology-operation-input.brg-request-input.vlan-tag is a required input\" />\n","comments":"","x":1846.3095703125,"y":409.4404983520508,"z":"a36563f1.0ad948","wires":[]},{"id":"a74acd1b.b2ef78","type":"switchNode","name":"switch onap-model-information.model-customization-uuid","xml":"<switch test='`$brg-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`'>\n","comments":"","outputs":1,"x":1543.1073303222656,"y":340.33341789245605,"z":"a36563f1.0ad948","wires":[["8914945b.b27388"]]},{"id":"8914945b.b27388","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1837.1072387695312,"y":341.33335876464844,"z":"a36563f1.0ad948","wires":[["24cd3709.a6567"]]},{"id":"24cd3709.a6567","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=\"brg-information.onap-model-information.model-customization-uuid is a required input\" />\n","comments":"","x":1984.5357055664062,"y":341.33335876464844,"z":"a36563f1.0ad948","wires":[]},{"id":"ea98aac1.995a4","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":589.3571166992188,"y":1025.8332901000977,"z":"a36563f1.0ad948","wires":[]},{"id":"dbd0163e.1668b","type":"get-resource","name":"get-resource AR_MODEL","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from ALLOTTED_RESOURCE_MODEL WHERE customization_uuid = $brg-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid'\n  pfx='ar-model'>\n\n","comments":"","outputs":1,"x":1415.302146911621,"y":560.6151895523071,"z":"a36563f1.0ad948","wires":[["7a05e016.e5972","cf325cf9.468db"]]},{"id":"1175f74e.db26c9","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=\"`'No allotted resource model found for model customization UUID ' + $brg-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`\" />\n","comments":"","x":1862.3854637145996,"y":548.7817430496216,"z":"a36563f1.0ad948","wires":[]},{"id":"7a05e016.e5972","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1663.6355438232422,"y":544.1389589309692,"z":"a36563f1.0ad948","wires":[["1175f74e.db26c9"]]},{"id":"cf325cf9.468db","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1657.3855438232422,"y":576.6389589309692,"z":"a36563f1.0ad948","wires":[["1175f74e.db26c9"]]},{"id":"2b04d10e.4f29de","type":"switchNode","name":"switch service-instance-id","xml":"<switch test='`$brg-topology-operation-input.service-information.service-instance-id`'>\n","comments":"","outputs":1,"x":657.4285583496094,"y":312.19051361083984,"z":"a36563f1.0ad948","wires":[["d7d48977.6d4e9"]]},{"id":"d7d48977.6d4e9","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":873.8571472167969,"y":313.19051361083984,"z":"a36563f1.0ad948","wires":[["36ec22d8.8e53ae"]]},{"id":"36ec22d8.8e53ae","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-information.service-instance-id is a required input\" />\n","comments":"","x":1032.2856750488281,"y":312.19051361083984,"z":"a36563f1.0ad948","wires":[]},{"id":"c357fd26.93d77","type":"other","name":"create","xml":"<outcome value='create'>","comments":"","outputs":1,"x":830.7777137756348,"y":525.2407293319702,"z":"a36563f1.0ad948","wires":[["f1c69f47.9fcb8"]]},{"id":"f1c69f47.9fcb8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1023.0276031494141,"y":521.324052810669,"z":"a36563f1.0ad948","wires":[["1551962.10999ea","b7c65dae.5d181"]]},{"id":"a22f16cf.8b48b8","type":"other","name":"delete","xml":"<outcome value='delete'>","comments":"","outputs":1,"x":844.111083984375,"y":801.9073152542114,"z":"a36563f1.0ad948","wires":[["14f5b4d9.a09003"]]},{"id":"14f5b4d9.a09003","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1020.6111068725586,"y":799.9073696136475,"z":"a36563f1.0ad948","wires":[["1551962.10999ea","b7c65dae.5d181"]]},{"id":"1551962.10999ea","type":"switchNode","name":"switch allotted-resource-id","xml":"<switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`'>\n","comments":"","outputs":1,"x":1511.2938537597656,"y":90.3729977607727,"z":"a36563f1.0ad948","wires":[["7f78afde.e28488"]]},{"id":"7f78afde.e28488","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1714.3296146392822,"y":95.19443893432617,"z":"a36563f1.0ad948","wires":[["cdbb13f3.95273"]]},{"id":"cdbb13f3.95273","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=\"allotted-resource-information.allotted-resource-id is a required input\" />\n","comments":"","x":1899.5080833435059,"y":90.44443893432617,"z":"a36563f1.0ad948","wires":[]},{"id":"be865110.8c5cc8","type":"switchNode","name":"switch allotted-resource-type","xml":"<switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-type`'>\n","comments":"","outputs":1,"x":1515.2224349975586,"y":159.3214235305786,"z":"a36563f1.0ad948","wires":[["f26f80f5.97af78"]]},{"id":"f26f80f5.97af78","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1710.7578468322754,"y":159.14284706115723,"z":"a36563f1.0ad948","wires":[["abe4d8bb.62f5e"]]},{"id":"abe4d8bb.62f5e","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=\"allotted-resource-information.allotted-resource-type is a required input\" />\n","comments":"","x":1870.9363174438477,"y":158.14284706115723,"z":"a36563f1.0ad948","wires":[]},{"id":"b7c65dae.5d181","type":"switchNode","name":"switch parent-service-instance-id","xml":"<switch test='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>\n","comments":"","outputs":1,"x":1530.5796127319336,"y":235.03571891784668,"z":"a36563f1.0ad948","wires":[["189a38c5.265dbf"]]},{"id":"189a38c5.265dbf","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1750.0437355041504,"y":234.67856884002686,"z":"a36563f1.0ad948","wires":[["3a46fa48.f2f996"]]},{"id":"3a46fa48.f2f996","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=\"allotted-resource-information.parent-service-instance-id is a required input\" />\n","comments":"","x":1901.4722023010254,"y":233.67856884002686,"z":"a36563f1.0ad948","wires":[]},{"id":"88921e9.f4a5a6","type":"switchNode","name":"switch vni","xml":"<switch test='`$brg-topology-operation-input.brg-request-input.vni`'>\n","comments":"","outputs":1,"x":1396,"y":444.3333206176758,"z":"a36563f1.0ad948","wires":[["b400611b.066288"]]},{"id":"b400611b.066288","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1635.9998779296875,"y":453.1428909301758,"z":"a36563f1.0ad948","wires":[["f6806455.7a1aa"]]},{"id":"f6806455.7a1aa","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=\"brg-topology-operation-input.brg-request-input.vlan-tag is a required input\" />\n","comments":"","x":1856.1905517578125,"y":451.14282989501953,"z":"a36563f1.0ad948","wires":[]},{"id":"9cdfba09.f3278","type":"switchNode","name":"switch brg-wan-ip-address ","xml":"<switch test='`$brg-topology-operation-input.brg-request-input.brg-wan-mac-address `'>\n","comments":"","outputs":1,"x":1444,"y":497.3333206176758,"z":"a36563f1.0ad948","wires":[["ad175cf7.05b3"]]},{"id":"ad175cf7.05b3","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1651.9998779296875,"y":497.14286041259766,"z":"a36563f1.0ad948","wires":[["5f364de9.8a5f74"]]},{"id":"5f364de9.8a5f74","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=\"brg-topology-operation-input.brg-request-input.vlan-tag is a required input\" />\n","comments":"","x":1867.1905517578125,"y":493.14282989501953,"z":"a36563f1.0ad948","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-connection-attachment-input.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-connection-attachment-input.json
new file mode 100644
index 0000000..bd49cd7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-connection-attachment-input.json
@@ -0,0 +1,1224 @@
+[
+  {
+    "id": "42b2c3b5.1de40c",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 164,
+    "y": 153.7469038963318,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "26ae5f8e.852bd"
+      ]
+    ]
+  },
+  {
+    "id": "26ae5f8e.852bd",
+    "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": 293.2857208251953,
+    "y": 248.9849772453308,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "9c9331e1.ef348"
+      ]
+    ]
+  },
+  {
+    "id": "9c9331e1.ef348",
+    "type": "method",
+    "name": "method validate-connection-attachment-input",
+    "xml": "<method rpc='validate-connection-attachment-input' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 289.91668701171875,
+    "y": 344.99993228912354,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "e30434d.72586c8"
+      ]
+    ]
+  },
+  {
+    "id": "e30434d.72586c8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 637.9167785644531,
+    "y": 344,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "a24e3968.f0f898",
+        "213180a5.dcdf2",
+        "6da46309.e8b25c",
+        "97be0dfc.a49b"
+      ]
+    ]
+  },
+  {
+    "id": "a24e3968.f0f898",
+    "type": "switchNode",
+    "name": "switch  svc-action",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1011.9167556762695,
+    "y": 93.99999618530273,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "1a960cf7.459883"
+      ]
+    ]
+  },
+  {
+    "id": "1a960cf7.459883",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1221.631118774414,
+    "y": 93.00000762939453,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "87e1fc25.19dd7"
+      ]
+    ]
+  },
+  {
+    "id": "87e1fc25.19dd7",
+    "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": 1396.059669494629,
+    "y": 92,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "213180a5.dcdf2",
+    "type": "switchNode",
+    "name": "switch svc-action",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 816.9165649414062,
+    "y": 625.9999570846558,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "2a3d4b0.69b81b6",
+        "38a5e948.46f696",
+        "249ed1d3.9ca2fe",
+        "7a022b30.b2a354",
+        "675a28ba.66ea98"
+      ]
+    ]
+  },
+  {
+    "id": "2a3d4b0.69b81b6",
+    "type": "outcome",
+    "name": "create",
+    "xml": "<outcome value='create'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1054.416690826416,
+    "y": 374.99999380111694,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "eb01319b.f11ab"
+      ]
+    ]
+  },
+  {
+    "id": "38a5e948.46f696",
+    "type": "outcome",
+    "name": "delete",
+    "xml": "<outcome value='delete'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1059.428897857666,
+    "y": 923.890193939209,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "ae84fe26.14305"
+      ]
+    ]
+  },
+  {
+    "id": "249ed1d3.9ca2fe",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1056.1906623840332,
+    "y": 996.3186483383179,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "a59dcb2c.5f74a8"
+      ]
+    ]
+  },
+  {
+    "id": "a59dcb2c.5f74a8",
+    "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-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n",
+    "comments": "",
+    "x": 1239.7621955871582,
+    "y": 996.9377889633179,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "ae84fe26.14305",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1241.5717239379883,
+    "y": 924.5566444396973,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "c8402cf9.c3498"
+      ]
+    ]
+  },
+  {
+    "id": "e9d0bfa.0872f4",
+    "type": "other",
+    "name": "DeleteSOTNAttachmentInstance",
+    "xml": "<outcome value='DeleteSOTNAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1706.286205291748,
+    "y": 893.556661605835,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "c007bb78.bad198"
+      ]
+    ]
+  },
+  {
+    "id": "a0c47385.decaa",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1629.2864608764648,
+    "y": 974.5568246841431,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "e6af92d5.15652"
+      ]
+    ]
+  },
+  {
+    "id": "e6af92d5.15652",
+    "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 DeleteNetworkInstance for svc-action=delete\" />\n",
+    "comments": "",
+    "x": 1816.2864608764648,
+    "y": 975.5568246841431,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "c007bb78.bad198",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2097.2862243652344,
+    "y": 716.5566501617432,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "52c40ba.0b16af4",
+        "eaa23038.207b"
+      ]
+    ]
+  },
+  {
+    "id": "52c40ba.0b16af4",
+    "type": "switchNode",
+    "name": "switch allotted-resource-id",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2320.2857990264893,
+    "y": 715.5565738677979,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "5a95e1d3.c70c9"
+      ]
+    ]
+  },
+  {
+    "id": "5a95e1d3.c70c9",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2500.285861968994,
+    "y": 714.5565891265869,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "21b4438a.8ae7ac"
+      ]
+    ]
+  },
+  {
+    "id": "21b4438a.8ae7ac",
+    "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": 2532.714515686035,
+    "y": 770.5566053390503,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "eaa23038.207b",
+    "type": "execute",
+    "name": "execute requiredParameter",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id\" value=\"$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2324.0002784729004,
+    "y": 677.6994247436523,
+    "z": "d21b8423.410b48",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "6da46309.e8b25c",
+    "type": "switchNode",
+    "name": "switch service-instance-id",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.service-information.service-instance-id`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1035.0000915527344,
+    "y": 136.70971393585205,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "9eae7e15.c32b3"
+      ]
+    ]
+  },
+  {
+    "id": "9eae7e15.c32b3",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1251.4286804199219,
+    "y": 137.70971393585205,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "1cff38a0.3251b7"
+      ]
+    ]
+  },
+  {
+    "id": "1cff38a0.3251b7",
+    "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-information.service-instance-id is a required input\" />\n",
+    "comments": "",
+    "x": 1409.8572082519531,
+    "y": 136.70971393585205,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "eb01319b.f11ab",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1219.2223320007324,
+    "y": 372.7096724510193,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "2a814298.4379ee"
+      ]
+    ]
+  },
+  {
+    "id": "2a814298.4379ee",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1409.4578552246094,
+    "y": 374.214870929718,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "9a24d7c1.7f41b8",
+        "31edce78.f55fe2",
+        "76132be7.8874c4"
+      ]
+    ]
+  },
+  {
+    "id": "9a24d7c1.7f41b8",
+    "type": "outcome",
+    "name": "CreateSOTNAttachmentInstance",
+    "xml": "<outcome value='CreateSOTNAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1690.7911376953125,
+    "y": 353.21460008621216,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "ddc52a14.b68028"
+      ]
+    ]
+  },
+  {
+    "id": "31edce78.f55fe2",
+    "type": "outcome",
+    "name": "other",
+    "xml": "<outcome value='other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1609.7912330627441,
+    "y": 442.88133573532104,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "a1422df.b222fd"
+      ]
+    ]
+  },
+  {
+    "id": "a1422df.b222fd",
+    "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.request-action is invalid\" />\n",
+    "comments": "",
+    "x": 1808.347068786621,
+    "y": 442.3259925842285,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "ddc52a14.b68028",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1922.6665000915527,
+    "y": 355.59849977493286,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "4d02f123.5c1cd"
+      ]
+    ]
+  },
+  {
+    "id": "4d02f123.5c1cd",
+    "type": "for",
+    "name": "for loop i - Sotn input param",
+    "xml": "<for index=\"i\" start=\"0\" end=\"`$connection-attachment-topology-operation-input.connection-attachment-request-input.param_length`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2145.297737121582,
+    "y": 259.89916610717773,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "3c0f8442.38d8dc"
+      ]
+    ]
+  },
+  {
+    "id": "3c0f8442.38d8dc",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2336.3809661865234,
+    "y": 258.6460943222046,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "d39cca26.839578",
+        "16b1f4f7.435bcb",
+        "1d34c439.601edc"
+      ]
+    ]
+  },
+  {
+    "id": "d39cca26.839578",
+    "type": "set",
+    "name": "clear tmp-data",
+    "xml": "<set>\n<parameter name='tmp.name' value='' />\n<parameter name='tmp.value' value='' />\n",
+    "comments": "",
+    "x": 2495.381072998047,
+    "y": 212.88420391082764,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "16b1f4f7.435bcb",
+    "type": "set",
+    "name": "set tmp-data",
+    "xml": "<set>\n<parameter name='tmp.name' value=\"`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].name`\"/>\n<parameter name='tmp.value' value=\"`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].value`\"/>\n",
+    "comments": "",
+    "x": 2493.380947113037,
+    "y": 244.8842067718506,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "1d34c439.601edc",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$tmp.name`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2490.3810691833496,
+    "y": 284.8842124938965,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "a88c8435.38b638",
+        "3bbf5338.a951ec",
+        "1635afc2.b6de7",
+        "cff6db4f.b87538",
+        "9335d38b.7ca52",
+        "f2781f65.360cc",
+        "6bb67fb6.e8d0c",
+        "497eac21.19f344"
+      ]
+    ]
+  },
+  {
+    "id": "a88c8435.38b638",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2697.4454765319824,
+    "y": 422.7098865509033,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "f001e245.7813a"
+      ]
+    ]
+  },
+  {
+    "id": "f001e245.7813a",
+    "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-topology-operation-input.network-request-input.network-input-parameters.param[' + $i + ']' + '.name is a required input'`\" />\n",
+    "comments": "",
+    "x": 2849.445686340332,
+    "y": 417.7099189758301,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "c8402cf9.c3498",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1439.6670150756836,
+    "y": 926.7097959518433,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "e9d0bfa.0872f4",
+        "a0c47385.decaa",
+        "9e1c0985.ac54a8"
+      ]
+    ]
+  },
+  {
+    "id": "3bbf5338.a951ec",
+    "type": "other",
+    "name": "sotnVpnName",
+    "xml": "<outcome value='sotnVpnName'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2717.4447526931763,
+    "y": 166.90960216522217,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "524ca1b7.a929c"
+      ]
+    ]
+  },
+  {
+    "id": "524ca1b7.a929c",
+    "type": "switchNode",
+    "name": "switch value",
+    "xml": "<switch test=\"`$tmp.value`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2980.3616256713867,
+    "y": 281.9245433807373,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "76a5bf3b.12c31"
+      ]
+    ]
+  },
+  {
+    "id": "76a5bf3b.12c31",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 3118.3615951538086,
+    "y": 276.92456340789795,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "6d73498b.516f18"
+      ]
+    ]
+  },
+  {
+    "id": "6d73498b.516f18",
+    "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=\"`'$tmp.name +' is a required input'`\" />\n",
+    "comments": "",
+    "x": 3240.7903060913086,
+    "y": 313.9245414733887,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "1635afc2.b6de7",
+    "type": "other",
+    "name": "clientSignal",
+    "xml": "<outcome value='clientSignal'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2710.444923400879,
+    "y": 203.90962409973145,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "524ca1b7.a929c"
+      ]
+    ]
+  },
+  {
+    "id": "cff6db4f.b87538",
+    "type": "other",
+    "name": "access-provider-id",
+    "xml": "<outcome value='access-provider-id'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2730.333869934082,
+    "y": 239.90957164764404,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "524ca1b7.a929c"
+      ]
+    ]
+  },
+  {
+    "id": "9335d38b.7ca52",
+    "type": "other",
+    "name": "access-client-id",
+    "xml": "<outcome value='access-client-id'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2719.3337745666504,
+    "y": 278.9095993041992,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "524ca1b7.a929c"
+      ]
+    ]
+  },
+  {
+    "id": "f2781f65.360cc",
+    "type": "other",
+    "name": "access-topology-id",
+    "xml": "<outcome value='access-topology-id'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2728.3338661193848,
+    "y": 313.9095706939697,
+    "z": "d21b8423.410b48",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "6bb67fb6.e8d0c",
+    "type": "other",
+    "name": "access-node-id",
+    "xml": "<outcome value='access-node-id'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2719.333869934082,
+    "y": 349.9096088409424,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "524ca1b7.a929c"
+      ]
+    ]
+  },
+  {
+    "id": "497eac21.19f344",
+    "type": "other",
+    "name": "cVLAN",
+    "xml": "<outcome value='cVLAN'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2694.33438873291,
+    "y": 385.465350151062,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "524ca1b7.a929c"
+      ]
+    ]
+  },
+  {
+    "id": "7a022b30.b2a354",
+    "type": "outcome",
+    "name": "activate",
+    "xml": "<outcome value='activate'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1058.4999771118164,
+    "y": 563.2469110488892,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "69f0bb77.157344"
+      ]
+    ]
+  },
+  {
+    "id": "69f0bb77.157344",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1239.305648803711,
+    "y": 563.9566278457642,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "18ee795e.66d7e7"
+      ]
+    ]
+  },
+  {
+    "id": "18ee795e.66d7e7",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1427.541130065918,
+    "y": 565.4617948532104,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "e08a9821.e97b18",
+        "ee585f2d.5f4db",
+        "e7496e1a.f100e"
+      ]
+    ]
+  },
+  {
+    "id": "e08a9821.e97b18",
+    "type": "outcome",
+    "name": "ActivateSOTNAttachmentInstance",
+    "xml": "<outcome value='ActivateSOTNAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1696.8744087219238,
+    "y": 539.4615068435669,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "c007bb78.bad198"
+      ]
+    ]
+  },
+  {
+    "id": "ee585f2d.5f4db",
+    "type": "outcome",
+    "name": "other",
+    "xml": "<outcome value='other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1612.874210357666,
+    "y": 620.1283292770386,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "f1ebc9ca.bda2a8"
+      ]
+    ]
+  },
+  {
+    "id": "f1ebc9ca.bda2a8",
+    "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.request-action is invalid\" />\n",
+    "comments": "",
+    "x": 1752.4301681518555,
+    "y": 623.5729856491089,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "675a28ba.66ea98",
+    "type": "outcome",
+    "name": "deactivate",
+    "xml": "<outcome value='deactivate'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1074.5,
+    "y": 734.2469053268433,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "fd017ad9.8950a8"
+      ]
+    ]
+  },
+  {
+    "id": "fd017ad9.8950a8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1256.6428260803223,
+    "y": 734.9133558273315,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "6e494400.e2627c"
+      ]
+    ]
+  },
+  {
+    "id": "4445cab3.35a8c4",
+    "type": "other",
+    "name": "DeactivateSDWANAttachmentInstance",
+    "xml": "<outcome value='DeactivateSDWANAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1718.3572616577148,
+    "y": 705.9133615493774,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "c007bb78.bad198"
+      ]
+    ]
+  },
+  {
+    "id": "6c144aae.b65964",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1621.357566833496,
+    "y": 781.9135341644287,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "d4bf5522.da0cd8"
+      ]
+    ]
+  },
+  {
+    "id": "d4bf5522.da0cd8",
+    "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 DeleteNetworkInstance for svc-action=delete\" />\n",
+    "comments": "",
+    "x": 1779.3575057983398,
+    "y": 784.9135570526123,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "6e494400.e2627c",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1443.7381401062012,
+    "y": 734.066478729248,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "4445cab3.35a8c4",
+        "6c144aae.b65964",
+        "adb5b0a4.b36d9"
+      ]
+    ]
+  },
+  {
+    "id": "97be0dfc.a49b",
+    "type": "switchNode",
+    "name": "switch parent-service-instance-id",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1050.9792175292969,
+    "y": 182.7261381149292,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "97c55ba1.1ffe98"
+      ]
+    ]
+  },
+  {
+    "id": "97c55ba1.1ffe98",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1257.4077835083008,
+    "y": 186.72613048553467,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "18a36e30.d0c222"
+      ]
+    ]
+  },
+  {
+    "id": "18a36e30.d0c222",
+    "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-information.parent-service-instance-id is a required input\" />\n",
+    "comments": "",
+    "x": 1415.836311340332,
+    "y": 185.72613048553467,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "76132be7.8874c4",
+    "type": "outcome",
+    "name": "CreateSDWANAttachmentInstance",
+    "xml": "<outcome value='CreateSDWANAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1700.4999694824219,
+    "y": 400.75078296661377,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "9256a59d.20fae8"
+      ]
+    ]
+  },
+  {
+    "id": "9256a59d.20fae8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1932.375331878662,
+    "y": 403.1346826553345,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "6c1d4efc.ef28b"
+      ]
+    ]
+  },
+  {
+    "id": "e7496e1a.f100e",
+    "type": "outcome",
+    "name": "ActivateSDWANAttachmentInstance",
+    "xml": "<outcome value='ActivateSDWANAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1696.4999694824219,
+    "y": 579.7507829666138,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "c007bb78.bad198"
+      ]
+    ]
+  },
+  {
+    "id": "adb5b0a4.b36d9",
+    "type": "other",
+    "name": "DeactivateSOTNAttachmentInstance",
+    "xml": "<outcome value='DeactivateSOTNAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1719.4999694824219,
+    "y": 743.7507829666138,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "c007bb78.bad198"
+      ]
+    ]
+  },
+  {
+    "id": "9e1c0985.ac54a8",
+    "type": "other",
+    "name": "DeleteSDWANAttachmentInstance",
+    "xml": "<outcome value='DeleteSDWANAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1714.4999694824219,
+    "y": 937.7507829666138,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "c007bb78.bad198"
+      ]
+    ]
+  },
+  {
+    "id": "6c1d4efc.ef28b",
+    "type": "for",
+    "name": "for loop i - sdwan input param",
+    "xml": "<for index=\"i\" start=\"0\" end=\"`$connection-attachment-topology-operation-input.connection-attachment-request-input.param_length`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2126.250068664551,
+    "y": 496.75078296661377,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "71678c48.443894"
+      ]
+    ]
+  },
+  {
+    "id": "71678c48.443894",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2324.333263397217,
+    "y": 496.497745513916,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "e79077b3.099788",
+        "a4baf31b.1b5de",
+        "210d76b8.7beafa"
+      ]
+    ]
+  },
+  {
+    "id": "e79077b3.099788",
+    "type": "set",
+    "name": "clear tmp-data",
+    "xml": "<set>\n<parameter name='tmp.name' value='' />\n<parameter name='tmp.value' value='' />\n",
+    "comments": "",
+    "x": 2493.333393096924,
+    "y": 473.7358207702637,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "a4baf31b.1b5de",
+    "type": "set",
+    "name": "set tmp-data",
+    "xml": "<set>\n<parameter name='tmp.name' value=\"`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].name`\"/>\n<parameter name='tmp.value' value=\"`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].value`\"/>\n",
+    "comments": "",
+    "x": 2491.333267211914,
+    "y": 505.7358236312866,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "210d76b8.7beafa",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$tmp.name`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2488.3333892822266,
+    "y": 545.7358293533325,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "abd03293.cd18",
+        "7be5406a.1ccb4",
+        "47286f93.87dbf"
+      ]
+    ]
+  },
+  {
+    "id": "abd03293.cd18",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2722.3977546691895,
+    "y": 559.5615439414978,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "968ac01f.99f6c"
+      ]
+    ]
+  },
+  {
+    "id": "968ac01f.99f6c",
+    "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-topology-operation-input.network-request-input.network-input-parameters.param[' + $i + ']' + '.name is a required input'`\" />\n",
+    "comments": "",
+    "x": 2887.3979988098145,
+    "y": 722.5615291595459,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "7be5406a.1ccb4",
+    "type": "other",
+    "name": "sdwanVpnName",
+    "xml": "<outcome value='sdwanVpnName'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2755.3970651626587,
+    "y": 471.761212348938,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "a3e64284.5a573"
+      ]
+    ]
+  },
+  {
+    "id": "a3e64284.5a573",
+    "type": "switchNode",
+    "name": "switch value",
+    "xml": "<switch test=\"`$tmp.value`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2933.3140869140625,
+    "y": 502.77617168426514,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "fe0135a8.011198"
+      ]
+    ]
+  },
+  {
+    "id": "fe0135a8.011198",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 3085.3139991760254,
+    "y": 502.77619457244873,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "f390d6c6.2ff848"
+      ]
+    ]
+  },
+  {
+    "id": "f390d6c6.2ff848",
+    "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=\"`'$tmp.name +' is a required input'`\" />\n",
+    "comments": "",
+    "x": 3229.7427139282227,
+    "y": 501.7762041091919,
+    "z": "d21b8423.410b48",
+    "wires": []
+  },
+  {
+    "id": "47286f93.87dbf",
+    "type": "other",
+    "name": "role",
+    "xml": "<outcome value='role'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2725.397331237793,
+    "y": 511.7612247467041,
+    "z": "d21b8423.410b48",
+    "wires": [
+      [
+        "a3e64284.5a573"
+      ]
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-contrail-route-input.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-contrail-route-input.json
new file mode 100755
index 0000000..6465351
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-contrail-route-input.json
@@ -0,0 +1,1446 @@
+[
+    {
+        "id": "35266b9e.c1cf04",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 202.7777862548828,
+        "y": 205.27777099609375,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "d8231d59.d0416"
+            ]
+        ]
+    },
+    {
+        "id": "d8231d59.d0416",
+        "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.06349182128906,
+        "y": 279.51588439941406,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "3b37cf29.2770b"
+            ]
+        ]
+    },
+    {
+        "id": "3b37cf29.2770b",
+        "type": "method",
+        "name": "validate-contrail-route-input",
+        "xml": "<method rpc='validate-contrail-route-input' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 359.20641326904297,
+        "y": 341.27777099609375,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "bb11dc2e.ba771"
+            ]
+        ]
+    },
+    {
+        "id": "bb11dc2e.ba771",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 372.52783203125,
+        "y": 623.7212657928467,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "aa4b4f9b.d66d5",
+                "a357d6d0.d1e828",
+                "d43473e3.39bf6",
+                "43b27b77.234ba4",
+                "dbabb342.08cce",
+                "c28b8276.ad796"
+            ]
+        ]
+    },
+    {
+        "id": "aa4b4f9b.d66d5",
+        "type": "switchNode",
+        "name": "switch svc-request-id",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 707.5873565673828,
+        "y": 108.37305164337158,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "3094a18d.2341ce"
+            ]
+        ]
+    },
+    {
+        "id": "3094a18d.2341ce",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 937.3016417367116,
+        "y": 106.37304837363081,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "3d7d8e8e.e7a2e2"
+            ]
+        ]
+    },
+    {
+        "id": "3d7d8e8e.e7a2e2",
+        "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": 1088.7302077157156,
+        "y": 106.37304646628218,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "a357d6d0.d1e828",
+        "type": "switchNode",
+        "name": "switch svc-action",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 700.1586990356445,
+        "y": 64.94446277618408,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "aa49fe92.cd19a"
+            ]
+        ]
+    },
+    {
+        "id": "aa49fe92.cd19a",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 935.8730621337891,
+        "y": 63.51587390899658,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "8fc24fab.a40e7"
+            ]
+        ]
+    },
+    {
+        "id": "8fc24fab.a40e7",
+        "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-action is a required input\" />\n",
+        "comments": "",
+        "x": 1085.8730354309082,
+        "y": 63.515883445739746,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "d43473e3.39bf6",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 710.1587524414062,
+        "y": 157.23019981384277,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "57e78919.ef0688",
+                "f69fee2.01a8c1",
+                "63c630c0.7b3d4",
+                "b809f5ff.bb3ad8"
+            ]
+        ]
+    },
+    {
+        "id": "57e78919.ef0688",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 941.8730659484863,
+        "y": 256.08739280700684,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "ca244a95.514758"
+            ]
+        ]
+    },
+    {
+        "id": "ca244a95.514758",
+        "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 a required input\" />\n",
+        "comments": "",
+        "x": 1113.3015060424805,
+        "y": 256.0873918533325,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "89209f0f.b42ea",
+        "type": "comment",
+        "name": "validate-alloted-resource-input - CHANGELOG",
+        "info": "3/22: Initial release 2.0.0",
+        "comments": "",
+        "x": 215.7777862548828,
+        "y": 109.27777099609375,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "43b27b77.234ba4",
+        "type": "switchNode",
+        "name": "switch svc-action",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 604.1111145019531,
+        "y": 625.944411277771,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "b241564a.80dee8",
+                "13332075.a90e5",
+                "5c11ee06.80d44",
+                "e1547517.5bdd98",
+                "4c19740c.db392c",
+                "897a0281.ce1ee"
+            ]
+        ]
+    },
+    {
+        "id": "b241564a.80dee8",
+        "type": "other",
+        "name": "assign",
+        "xml": "<outcome value='assign'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 873.4921493530273,
+        "y": 464.8492374420166,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "167db0e.a9d9b4f"
+            ]
+        ]
+    },
+    {
+        "id": "13332075.a90e5",
+        "type": "other",
+        "name": "activate",
+        "xml": "<outcome value='activate'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 893.7777557373047,
+        "y": 652.2778015136719,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "fa98c4a3.48c008"
+            ]
+        ]
+    },
+    {
+        "id": "5c11ee06.80d44",
+        "type": "other",
+        "name": "deactivate",
+        "xml": "<outcome value='deactivate'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 900.7777557373047,
+        "y": 742.2778015136719,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "e8ed620e.34218"
+            ]
+        ]
+    },
+    {
+        "id": "167db0e.a9d9b4f",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1030.7777862548828,
+        "y": 467.6111469268799,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "9230ea14.806408"
+            ]
+        ]
+    },
+    {
+        "id": "9230ea14.806408",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1237.4444198608398,
+        "y": 467.6111354827881,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "61434823.60b248",
+                "2f5e13cc.428ddc"
+            ]
+        ]
+    },
+    {
+        "id": "61434823.60b248",
+        "type": "other",
+        "name": "CreateContrailRouteInstance",
+        "xml": "<outcome value='CreateContrailRouteInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1585.3015899658203,
+        "y": 394.7540102005005,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "10dadd6a.d1a0d3"
+            ]
+        ]
+    },
+    {
+        "id": "2f5e13cc.428ddc",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1524.7777671813965,
+        "y": 461.6111640930176,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "d7368e17.11a7b"
+            ]
+        ]
+    },
+    {
+        "id": "d7368e17.11a7b",
+        "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 a required to be CreateContrailRouteInstance for svc-action=assign\" />\n",
+        "comments": "",
+        "x": 1672.1111106872559,
+        "y": 461.6111831665039,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "fa98c4a3.48c008",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1067.7777557373047,
+        "y": 652.2778015136719,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "39112fa6.850cd"
+            ]
+        ]
+    },
+    {
+        "id": "39112fa6.850cd",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1284.7777557373047,
+        "y": 652.2778015136719,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "a46c6029.9eecb",
+                "80369920.1e1528"
+            ]
+        ]
+    },
+    {
+        "id": "a46c6029.9eecb",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1508.7777557373047,
+        "y": 693.2778015136719,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "87417d62.3c22"
+            ]
+        ]
+    },
+    {
+        "id": "87417d62.3c22",
+        "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 a required to be CreateContrailRouteInstance for svc-action=activate\" />\n",
+        "comments": "",
+        "x": 1677.7777557373047,
+        "y": 693.2778015136719,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "e8ed620e.34218",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1082.7777557373047,
+        "y": 741.2778015136719,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "7f72c3c8.8a71dc"
+            ]
+        ]
+    },
+    {
+        "id": "7f72c3c8.8a71dc",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1299.7777557373047,
+        "y": 741.2778015136719,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "96b39e05.6b30d",
+                "baf7a6c3.22b2b8"
+            ]
+        ]
+    },
+    {
+        "id": "96b39e05.6b30d",
+        "type": "other",
+        "name": "DeleteContrailRouteInstance",
+        "xml": "<outcome value='DeleteContrailRouteInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1582.4442901611328,
+        "y": 740.6111879348755,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "89e918a.16dc8e8"
+            ]
+        ]
+    },
+    {
+        "id": "baf7a6c3.22b2b8",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1523.7777557373047,
+        "y": 782.2778015136719,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "e25c9a86.2130e8"
+            ]
+        ]
+    },
+    {
+        "id": "e25c9a86.2130e8",
+        "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 a required to be DeleteContrailRouteInstance for svc-action=deactivate\" />\n",
+        "comments": "",
+        "x": 1692.7777557373047,
+        "y": 782.2778015136719,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "e1547517.5bdd98",
+        "type": "other",
+        "name": "unassign",
+        "xml": "<outcome value='unassign'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 881.7776184082031,
+        "y": 909.6111288070679,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "25d3342e.bf055c"
+            ]
+        ]
+    },
+    {
+        "id": "25d3342e.bf055c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1063.7776489257812,
+        "y": 905.6111516952515,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "4096d7e5.754058"
+            ]
+        ]
+    },
+    {
+        "id": "4096d7e5.754058",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1280.7776489257812,
+        "y": 905.6111516952515,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "7977bc3b.695434",
+                "4cf8061.e28dff8"
+            ]
+        ]
+    },
+    {
+        "id": "7977bc3b.695434",
+        "type": "other",
+        "name": "DeleteContrailRouteInstance",
+        "xml": "<outcome value='DeleteContrailRouteInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1561.7775192260742,
+        "y": 906.6111688613892,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "a46d071e.eae668"
+            ]
+        ]
+    },
+    {
+        "id": "4cf8061.e28dff8",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1504.7776489257812,
+        "y": 946.6111516952515,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "ebab16c5.c33a78"
+            ]
+        ]
+    },
+    {
+        "id": "ebab16c5.c33a78",
+        "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 a required to be DeleteContrailRouteInstance for svc-action=unassign\" />\n",
+        "comments": "",
+        "x": 1673.7776489257812,
+        "y": 946.6111516952515,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "10dadd6a.d1a0d3",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1831.3015403747559,
+        "y": 393.7539978027344,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "8353a7c2.7d6ba8",
+                "3697eb9e.353964",
+                "4b1f2e92.74dfd",
+                "d06491a2.0b602",
+                "344f0df1.0efab2",
+                "6b07cbd7.0e7d04",
+                "e5f84df2.f1e94",
+                "2032eb88.550194",
+                "aa2cdb28.13b088"
+            ]
+        ]
+    },
+    {
+        "id": "d15b9d66.afba",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1790.7777557373047,
+        "y": 653.2778015136719,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "d06491a2.0b602",
+                "6b07cbd7.0e7d04"
+            ]
+        ]
+    },
+    {
+        "id": "89e918a.16dc8e8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1836.7777557373047,
+        "y": 743.2778015136719,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "d06491a2.0b602",
+                "6b07cbd7.0e7d04"
+            ]
+        ]
+    },
+    {
+        "id": "a46d071e.eae668",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1820.7776489257812,
+        "y": 907.6111516952515,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "d06491a2.0b602"
+            ]
+        ]
+    },
+    {
+        "id": "8353a7c2.7d6ba8",
+        "type": "switchNode",
+        "name": "switch source-network.network-id",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2229.063278198242,
+        "y": 263.9920644760132,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "aa3ce30.606892"
+            ]
+        ]
+    },
+    {
+        "id": "aa3ce30.606892",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2455.063335418701,
+        "y": 262.1349468231201,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "d5826697.16cc88"
+            ]
+        ]
+    },
+    {
+        "id": "d5826697.16cc88",
+        "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=\"contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id is a required input\" />\n",
+        "comments": "",
+        "x": 2622.9203872680664,
+        "y": 262.1349210739136,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "4b1f2e92.74dfd",
+        "type": "switchNode",
+        "name": "switch onap-model-information.model-customization-uuid",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2301.6351318359375,
+        "y": 190.27785205841064,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "d1cbbe07.cc9e3"
+            ]
+        ]
+    },
+    {
+        "id": "d1cbbe07.cc9e3",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2595.635040283203,
+        "y": 191.27779293060303,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "5ffa0f1.a317af"
+            ]
+        ]
+    },
+    {
+        "id": "5ffa0f1.a317af",
+        "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=\"contrail-route-information.onap-model-information.model-customization-uuid is a required input\" />\n",
+        "comments": "",
+        "x": 2743.063507080078,
+        "y": 191.27779293060303,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "dbabb342.08cce",
+        "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": 666.2777404785156,
+        "y": 1056.7777633666992,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "93757aef.15f468",
+        "type": "comment",
+        "name": "validate service-information.onap-model-information.model0uuid is in service table",
+        "info": "",
+        "comments": "",
+        "x": 2369.496368408203,
+        "y": 484.91669940948486,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "3697eb9e.353964",
+        "type": "get-resource",
+        "name": "get-resource AR_MODEL",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from ALLOTTED_RESOURCE_MODEL WHERE customization_uuid = $contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid'\n  pfx='ar-model'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2202.413101196289,
+        "y": 527.6428871154785,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "81c17c72.98f07",
+                "5ee9c459.84ea3c"
+            ]
+        ]
+    },
+    {
+        "id": "fe930095.bdfb1",
+        "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=\"`'No alloted resource model found for model customization UUID ' + $contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`\" />\n",
+        "comments": "",
+        "x": 2659.4962844848633,
+        "y": 508.3094844818115,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "81c17c72.98f07",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2460.746364593506,
+        "y": 503.6667003631592,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "fe930095.bdfb1"
+            ]
+        ]
+    },
+    {
+        "id": "5ee9c459.84ea3c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2454.496364593506,
+        "y": 536.1667003631592,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "fe930095.bdfb1"
+            ]
+        ]
+    },
+    {
+        "id": "f69fee2.01a8c1",
+        "type": "other",
+        "name": "CreateContrailRouteInstance",
+        "xml": "<outcome value='CreateContrailRouteInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1005.8254241943359,
+        "y": 142.8968276977539,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "f0bb52f0.17e47"
+            ]
+        ]
+    },
+    {
+        "id": "63c630c0.7b3d4",
+        "type": "other",
+        "name": "DeleteContrailRouteInstance",
+        "xml": "<outcome value='DeleteContrailRouteInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1006.1110687255859,
+        "y": 180.32544708251953,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "f0bb52f0.17e47"
+            ]
+        ]
+    },
+    {
+        "id": "b809f5ff.bb3ad8",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 945.6825752258301,
+        "y": 296.468297958374,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "30198bb7.e55ef4"
+            ]
+        ]
+    },
+    {
+        "id": "30198bb7.e55ef4",
+        "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=\"Invalid request-information.request-action \" />\n",
+        "comments": "",
+        "x": 1117.1109809875488,
+        "y": 297.4683132171631,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "c28b8276.ad796",
+        "type": "switchNode",
+        "name": "switch service-instance-id",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.service-information.service-instance-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 707.2063446044922,
+        "y": 337.1349639892578,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "9b3d73ec.0eef6"
+            ]
+        ]
+    },
+    {
+        "id": "9b3d73ec.0eef6",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 923.6349334716797,
+        "y": 338.1349639892578,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "64812692.977708"
+            ]
+        ]
+    },
+    {
+        "id": "64812692.977708",
+        "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-information.service-instance-id is a required input\" />\n",
+        "comments": "",
+        "x": 1082.063461303711,
+        "y": 337.1349639892578,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "4c19740c.db392c",
+        "type": "other",
+        "name": "create",
+        "xml": "<outcome value='create'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 880.5555000305176,
+        "y": 550.1851797103882,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "81ff7e79.12005"
+            ]
+        ]
+    },
+    {
+        "id": "81ff7e79.12005",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1041.1744995117188,
+        "y": 549.6137495040894,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "87874560.8aa258"
+            ]
+        ]
+    },
+    {
+        "id": "87874560.8aa258",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1261.1744995117188,
+        "y": 549.6137495040894,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "90eb84df.b09858",
+                "c5d024ea.750c08"
+            ]
+        ]
+    },
+    {
+        "id": "90eb84df.b09858",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1518.5079936981201,
+        "y": 553.6138019561768,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "cddf826d.b9fc1"
+            ]
+        ]
+    },
+    {
+        "id": "cddf826d.b9fc1",
+        "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 a required to be CreateNetworkInstance for svc-action=create\" />\n",
+        "comments": "",
+        "x": 1684.1744995117188,
+        "y": 553.61376953125,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "c5d024ea.750c08",
+        "type": "other",
+        "name": "CreateContrailRouteInstance",
+        "xml": "<outcome value='CreateContrailRouteInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1590.555419921875,
+        "y": 518.5184936523438,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "b77bfd7b.7219"
+            ]
+        ]
+    },
+    {
+        "id": "b77bfd7b.7219",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1826.555419921875,
+        "y": 517.5184936523438,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "d06491a2.0b602",
+                "6b07cbd7.0e7d04"
+            ]
+        ]
+    },
+    {
+        "id": "80369920.1e1528",
+        "type": "other",
+        "name": "CreateContrailRouteInstance",
+        "xml": "<outcome value='CreateContrailRouteInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1575.555419921875,
+        "y": 653.5184936523438,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "d15b9d66.afba"
+            ]
+        ]
+    },
+    {
+        "id": "897a0281.ce1ee",
+        "type": "other",
+        "name": "delete",
+        "xml": "<outcome value='delete'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 893.8888702392578,
+        "y": 826.8517656326294,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "f3f463d2.77152"
+            ]
+        ]
+    },
+    {
+        "id": "f3f463d2.77152",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1075.888900756836,
+        "y": 822.851788520813,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "62f5a00e.aa5da"
+            ]
+        ]
+    },
+    {
+        "id": "62f5a00e.aa5da",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1292.888900756836,
+        "y": 822.851788520813,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "63c7e61e.93d818",
+                "1d99e0e.0795e1f"
+            ]
+        ]
+    },
+    {
+        "id": "63c7e61e.93d818",
+        "type": "other",
+        "name": "DeleteContrailRouteInstance",
+        "xml": "<outcome value='DeleteContrailRouteInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1573.888771057129,
+        "y": 823.8518056869507,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "59164fba.8b1df"
+            ]
+        ]
+    },
+    {
+        "id": "1d99e0e.0795e1f",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1516.888900756836,
+        "y": 863.851788520813,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "bad4ddd2.41bde"
+            ]
+        ]
+    },
+    {
+        "id": "bad4ddd2.41bde",
+        "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 a required to be DeleteContrailRouteInstance for svc-action=delete\" />\n",
+        "comments": "",
+        "x": 1685.888900756836,
+        "y": 863.851788520813,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "59164fba.8b1df",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1832.888900756836,
+        "y": 824.851788520813,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "d06491a2.0b602",
+                "6b07cbd7.0e7d04"
+            ]
+        ]
+    },
+    {
+        "id": "f0bb52f0.17e47",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1222.2221794128418,
+        "y": 174.22221088409424,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d06491a2.0b602",
+        "type": "switchNode",
+        "name": "switch allotted-resource-id",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2203.5715942382812,
+        "y": 37.81745147705078,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "6091bbb5.92fcb4"
+            ]
+        ]
+    },
+    {
+        "id": "6091bbb5.92fcb4",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2404.107276916504,
+        "y": 36.38887977600098,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "ab33d03a.508ae"
+            ]
+        ]
+    },
+    {
+        "id": "ab33d03a.508ae",
+        "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=\"allotted-resource-information.allotted-resource-id is a required input\" />\n",
+        "comments": "",
+        "x": 2555.535743713379,
+        "y": 35.38887977600098,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "344f0df1.0efab2",
+        "type": "switchNode",
+        "name": "switch allotted-resource-type",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2210.0001373291016,
+        "y": 73.01586723327637,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "a58be7c1.0caec8"
+            ]
+        ]
+    },
+    {
+        "id": "a58be7c1.0caec8",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2410.5356826782227,
+        "y": 71.5872974395752,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "fcfba520.ba2978"
+            ]
+        ]
+    },
+    {
+        "id": "fcfba520.ba2978",
+        "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=\"allotted-resource-information.allotted-resource-type is a required input\" />\n",
+        "comments": "",
+        "x": 2561.9641494750977,
+        "y": 70.5872974395752,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "6b07cbd7.0e7d04",
+        "type": "switchNode",
+        "name": "switch parent-service-instance-id",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2222.8573837280273,
+        "y": 108.73015213012695,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "b1db037c.92b1"
+            ]
+        ]
+    },
+    {
+        "id": "b1db037c.92b1",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2438.571533203125,
+        "y": 105.87300872802734,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "9de46686.383798"
+            ]
+        ]
+    },
+    {
+        "id": "9de46686.383798",
+        "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=\"allotted-resource-information.parent-service-instance-id is a required input\" />\n",
+        "comments": "",
+        "x": 2590,
+        "y": 104.87300872802734,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "e5f84df2.f1e94",
+        "type": "switchNode",
+        "name": "switch source-network.network-role",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-role`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2232.5394897460938,
+        "y": 303.5872793197632,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "b6f894c7.bdf1d8"
+            ]
+        ]
+    },
+    {
+        "id": "b6f894c7.bdf1d8",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2461.396903991699,
+        "y": 298.3015818595886,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "d18a5c04.9d4c5"
+            ]
+        ]
+    },
+    {
+        "id": "d18a5c04.9d4c5",
+        "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=\"contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-role is a required input\" />\n",
+        "comments": "",
+        "x": 2626.3970489501953,
+        "y": 298.3015422821045,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "2032eb88.550194",
+        "type": "switchNode",
+        "name": "switch dest-network.network-role",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-role`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2226.4446754455566,
+        "y": 336.46821308135986,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "96119098.5cd1d"
+            ]
+        ]
+    },
+    {
+        "id": "96119098.5cd1d",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2461.4448280334473,
+        "y": 336.46821689605713,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "c91e6a99.23dd98"
+            ]
+        ]
+    },
+    {
+        "id": "c91e6a99.23dd98",
+        "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=\"contrail-topology-operation-input.contrail-route-request-input.dest-network.network-role is a required input\" />\n",
+        "comments": "",
+        "x": 2627.8732948303223,
+        "y": 336.468186378479,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    },
+    {
+        "id": "aa2cdb28.13b088",
+        "type": "switchNode",
+        "name": "switch contrail-applied-service-information.service-instance-id",
+        "xml": "<switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.service-instance-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2311.111152648926,
+        "y": 401.58727073669434,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "3cf17aee.5329a6"
+            ]
+        ]
+    },
+    {
+        "id": "3cf17aee.5329a6",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2623.2542304992676,
+        "y": 401.3015937805176,
+        "z": "b42bbd9e.9cab",
+        "wires": [
+            [
+                "ed461440.88de78"
+            ]
+        ]
+    },
+    {
+        "id": "ed461440.88de78",
+        "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=\"contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.service-instance-id is a required input\" />\n",
+        "comments": "",
+        "x": 2778.254253387451,
+        "y": 401.5872268676758,
+        "z": "b42bbd9e.9cab",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-generic-configuration-input.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-generic-configuration-input.json
new file mode 100755
index 0000000..d0cf132
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-generic-configuration-input.json
@@ -0,0 +1 @@
+[{"id":"fec175c0.305418","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":221.66665649414062,"y":436.6666555404663,"z":"dff79744.2b1858","wires":[["a7cfa614.1fcea8","c293d248.0b3bd","6f4942b8.b10bfc","9488fd97.7d961","620f9309.92b41c"]]},{"id":"a7cfa614.1fcea8","type":"switchNode","name":"switch svc-request-id","xml":"<switch test='`$generic-configuration-topology-operation-input.sdnc-request-header.svc-request-id`'>\n","comments":"","outputs":1,"x":453.95241001674094,"y":432.36606843130926,"z":"dff79744.2b1858","wires":[["bbb37bdd.fc1198"]]},{"id":"bbb37bdd.fc1198","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":679.6667044503347,"y":432.3660722460065,"z":"dff79744.2b1858","wires":[["60444e77.ba17e"]]},{"id":"60444e77.ba17e","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":831.0952704293386,"y":432.3660703386579,"z":"dff79744.2b1858","wires":[]},{"id":"c293d248.0b3bd","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$generic-configuration-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":442.5237731933594,"y":390.9375,"z":"dff79744.2b1858","wires":[["555a951e.ea86ac"]]},{"id":"555a951e.ea86ac","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":678.2381248474121,"y":389.50889778137207,"z":"dff79744.2b1858","wires":[["6839d50d.6e626c"]]},{"id":"6839d50d.6e626c","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-action is a required input\" />\n","comments":"","x":828.2380981445312,"y":389.50890731811523,"z":"dff79744.2b1858","wires":[]},{"id":"6f4942b8.b10bfc","type":"switchNode","name":"switch request-action","xml":"<switch test='`$generic-configuration-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":452.5238265991211,"y":475.2232151031494,"z":"dff79744.2b1858","wires":[["1e714623.bc70ba"]]},{"id":"1e714623.bc70ba","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":679.6667000906809,"y":475.2232260022845,"z":"dff79744.2b1858","wires":[["4b63c339.21d57c"]]},{"id":"4b63c339.21d57c","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 a required input\" />\n","comments":"","x":831.0952660696848,"y":475.22322409493586,"z":"dff79744.2b1858","wires":[]},{"id":"e8fd7432.d81498","type":"comment","name":"Validation of required fields","info":"","comments":"","x":602.5237830025808,"y":346.65178258078436,"z":"dff79744.2b1858","wires":[]},{"id":"9488fd97.7d961","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$generic-configuration-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":437.9999542236328,"y":615.5804071426392,"z":"dff79744.2b1858","wires":[["6305c878.8817e8","5e809fd6.bb388","ab8dd6a5.082308","5f3f90fc.fed14","afe84e17.b5cf4"]]},{"id":"6305c878.8817e8","type":"outcome","name":"assign","xml":"<outcome value='assign'>\n","comments":"","outputs":1,"x":636.4522841317312,"y":520.1042266573224,"z":"dff79744.2b1858","wires":[["e81af348.ca45e"]]},{"id":"3c589a14.0b6f06","type":"dgstart","name":"DGSTART","outputs":1,"x":112.08333042689719,"y":85.38984448569158,"z":"dff79744.2b1858","wires":[["4bfbd45e.cf8fdc"]]},{"id":"4bfbd45e.cf8fdc","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.797607421875,"y":125.62795598166326,"z":"dff79744.2b1858","wires":[["7606cd3f.319944"]]},{"id":"7606cd3f.319944","type":"method","name":"method validate-generic-configuration-input","xml":"<method rpc='validate-generic-configuration-input' mode='sync'>\n","comments":"","outputs":1,"x":218.76195744105735,"y":166.63984067099432,"z":"dff79744.2b1858","wires":[["fec175c0.305418"]]},{"id":"a3d0a710.15ace8","type":"comment","name":"validate-generic-configuration-input","info":"","comments":"","x":506.4281866891042,"y":32.97618825095037,"z":"dff79744.2b1858","wires":[]},{"id":"5e809fd6.bb388","type":"outcome","name":"activate","xml":"<outcome value='activate'>\n","comments":"","outputs":1,"x":637.7022192818777,"y":565.3571658815656,"z":"dff79744.2b1858","wires":[["e81af348.ca45e"]]},{"id":"e81af348.ca45e","type":"switchNode","name":"switch request-action","xml":"<switch test='`$generic-configuration-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":829.9999640328542,"y":539.9999843324933,"z":"dff79744.2b1858","wires":[["51e1d90d.a9ebf8","f4020138.4a278"]]},{"id":"51e1d90d.a9ebf8","type":"outcome","name":"CreateGenericConfigurationInstance","xml":"<outcome value='CreateGenericConfigurationInstance'>\n","comments":"","outputs":1,"x":1099.9999640328542,"y":511.6666303362165,"z":"dff79744.2b1858","wires":[["83c1beff.b4a4c"]]},{"id":"f4020138.4a278","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1008.333357129778,"y":561.6666751589094,"z":"dff79744.2b1858","wires":[["cc93d973.20cf78"]]},{"id":"cc93d973.20cf78","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=\"`'If svc-action is ' + $generic-configuration-topology-operation-input.sdnc-request-header.svc-action + ' then request-action must be CreateGenericConfigurationInstance'`\" />\n","comments":"","x":1156.6665976388113,"y":561.6666732515607,"z":"dff79744.2b1858","wires":[]},{"id":"ab8dd6a5.082308","type":"outcome","name":"deactivate","xml":"<outcome value='deactivate'>\n","comments":"","outputs":1,"x":644.9999678475515,"y":613.3333221163068,"z":"dff79744.2b1858","wires":[["915529cf.298168"]]},{"id":"5f3f90fc.fed14","type":"outcome","name":"unassign","xml":"<outcome value='unassign'>\n","comments":"","outputs":1,"x":641.2498877389089,"y":658.5862327303205,"z":"dff79744.2b1858","wires":[["915529cf.298168"]]},{"id":"915529cf.298168","type":"switchNode","name":"switch request-action","xml":"<switch test='`$generic-configuration-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":828.5476439339773,"y":633.2290549959455,"z":"dff79744.2b1858","wires":[["14e74c4c.287fa4","2eb64ceb.c6c984"]]},{"id":"14e74c4c.287fa4","type":"outcome","name":"DeleteGenericConfigurationInstance","xml":"<outcome value='DeleteGenericConfigurationInstance'>\n","comments":"","outputs":1,"x":1098.5476439339773,"y":604.8957009996686,"z":"dff79744.2b1858","wires":[["4e8836e6.688e68"]]},{"id":"2eb64ceb.c6c984","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1006.8810370309011,"y":654.8957458223615,"z":"dff79744.2b1858","wires":[["67f8def.fd30a2"]]},{"id":"67f8def.fd30a2","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=\"`'If svc-action is ' + $generic-configuration-topology-operation-input.sdnc-request-header.svc-action + ' then request-action must be DeleteGenericConfigurationInstance'`\" />\n","comments":"","x":1155.2142775399343,"y":654.8957439150129,"z":"dff79744.2b1858","wires":[]},{"id":"620f9309.92b41c","type":"switchNode","name":"switch service-instance-id","xml":"<switch test='`$service-data.service-information.service-instance-id`'>\n","comments":"","outputs":1,"x":470,"y":299.9999809265137,"z":"dff79744.2b1858","wires":[["75300639.e476a8"]]},{"id":"75300639.e476a8","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":706.6665992736816,"y":300,"z":"dff79744.2b1858","wires":[["43ca05df.ffe46c"]]},{"id":"43ca05df.ffe46c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Service instance ' + $generic-configuration-topology-operation-input.service-information.service-instance-id + ' does not exist'`\" />\n","comments":"","x":861.6666278839111,"y":299.9999895095825,"z":"dff79744.2b1858","wires":[]},{"id":"83c1beff.b4a4c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1324.9999313354492,"y":511.00000953674316,"z":"dff79744.2b1858","wires":[[]]},{"id":"4e8836e6.688e68","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1325,"y":603.3333129882812,"z":"dff79744.2b1858","wires":[[]]},{"id":"afe84e17.b5cf4","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":633.3333587646484,"y":706.6666946411133,"z":"dff79744.2b1858","wires":[["9f9701d8.2a016"]]},{"id":"9f9701d8.2a016","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=\"`'Unsupported svc-action ' + $generic-configuration-topology-operation-input.sdnc-request-header.svc-action`\" />\n","comments":"","x":799.9999389648438,"y":706.3333129882812,"z":"dff79744.2b1858","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-getpathsegment-input.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-getpathsegment-input.json
new file mode 100755
index 0000000..9f38497
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-getpathsegment-input.json
@@ -0,0 +1 @@
+[{"id":"519c6651.dc25f8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":210.3333282470703,"y":394.16664123535156,"z":"445c7615.217c08","wires":[["c9ea088a.766468","5de5a9ac.bc13f8","b89e5c70.3b609","fdf5f8de.a06588","3ea96f4a.65397","b3c981ce.3a659"]]},{"id":"c9ea088a.766468","type":"switchNode","name":"switch svc-request-id","xml":"<switch test='`$getpathsegment-topology-operation-input.sdnc-request-header.svc-request-id`'>\n","comments":"","outputs":1,"x":477.3809683663503,"y":325.1041564941406,"z":"445c7615.217c08","wires":[["820616a1.97ae78"]]},{"id":"820616a1.97ae78","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":703.0952627999441,"y":325.1041603088379,"z":"445c7615.217c08","wires":[["b8b83bc4.ef8928"]]},{"id":"b8b83bc4.ef8928","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":854.523828778948,"y":325.10415840148926,"z":"445c7615.217c08","wires":[]},{"id":"5de5a9ac.bc13f8","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$getpathsegment-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":465.95233154296875,"y":283.67558806283137,"z":"445c7615.217c08","wires":[["1bfe631a.cec59d"]]},{"id":"1bfe631a.cec59d","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":701.6666984558105,"y":282.2469825744629,"z":"445c7615.217c08","wires":[["1aece3c9.ee739c"]]},{"id":"1aece3c9.ee739c","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-action is a required input\" />\n","comments":"","x":851.6666564941406,"y":282.2469953809466,"z":"445c7615.217c08","wires":[]},{"id":"b89e5c70.3b609","type":"switchNode","name":"switch request-action","xml":"<switch test='`$getpathsegment-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":475.95238494873047,"y":367.9613031659808,"z":"445c7615.217c08","wires":[["c6aa59cc.6d4578"]]},{"id":"c6aa59cc.6d4578","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":703.0952584402903,"y":367.96131406511586,"z":"445c7615.217c08","wires":[["6bacc83c.e6ba38"]]},{"id":"6bacc83c.e6ba38","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 a required input\" />\n","comments":"","x":854.5238244192942,"y":367.9613121577672,"z":"445c7615.217c08","wires":[]},{"id":"85848dbd.9d43e","type":"switchNode","name":"switch request-action","xml":"<switch test='`$getpathsegment-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":984.7024590628489,"y":535.5804891586304,"z":"445c7615.217c08","wires":[["858f7f5b.d8aad","86daecdb.806a9"]]},{"id":"858f7f5b.d8aad","type":"outcome","name":"CreateForwardingPathInstance","xml":"<outcome value='CreateForwardingPathInstance'>","comments":"","outputs":1,"x":1237.0832268851145,"y":508.91382122039795,"z":"445c7615.217c08","wires":[["38fea5ea.c1031a"]]},{"id":"971bf8a9.2ff568","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-information.subscription-service-type is a required input\" />\n","comments":"","x":1455.178579057966,"y":555.5804796218872,"z":"445c7615.217c08","wires":[]},{"id":"f654ccb9.fbc3b","type":"comment","name":"Validation of required fields","info":"","comments":"","x":625.9523413521902,"y":239.38987064361572,"z":"445c7615.217c08","wires":[]},{"id":"fdf5f8de.a06588","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$getpathsegment-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":461.42850494384766,"y":618.0804595947266,"z":"445c7615.217c08","wires":[["f8d12423.dbcd88"]]},{"id":"f8d12423.dbcd88","type":"outcome","name":"create","xml":"<outcome value='create'>\n","comments":"","outputs":1,"x":623.9285049438477,"y":618.0804595947266,"z":"445c7615.217c08","wires":[["6e7c0722.c4bf78"]]},{"id":"6e7c0722.c4bf78","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":778.9285049438477,"y":618.0804595947266,"z":"445c7615.217c08","wires":[["85848dbd.9d43e","ef78ef58.2dfb3","34219d7c.5476f2"]]},{"id":"d5cb92bd.2e9af","type":"dgstart","name":"DGSTART","outputs":1,"x":134.08333805629172,"y":89.08032321929932,"z":"445c7615.217c08","wires":[["7fd575ce.08d05c"]]},{"id":"7fd575ce.08d05c","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":250.79761505126953,"y":129.318434715271,"z":"445c7615.217c08","wires":[["ce915bb5.4336b8"]]},{"id":"ce915bb5.4336b8","type":"method","name":"method validate-getpathsegment-input","xml":"<method rpc='validate-getpathsegment-input' mode='sync'>\n","comments":"","outputs":1,"x":225.76196507045188,"y":170.33031940460205,"z":"445c7615.217c08","wires":[["519c6651.dc25f8"]]},{"id":"e7ec8b0f.f24b18","type":"comment","name":"validate-getpathsegment-input","info":"","comments":"","x":528.4281943184988,"y":36.666666984558105,"z":"445c7615.217c08","wires":[]},{"id":"38fea5ea.c1031a","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1439.7617890494212,"y":508.8095827102661,"z":"445c7615.217c08","wires":[[]]},{"id":"86daecdb.806a9","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1159.7617776053294,"y":557.1429281234741,"z":"445c7615.217c08","wires":[["971bf8a9.2ff568"]]},{"id":"ef78ef58.2dfb3","type":"get-resource","name":"get-resource SERVICE_MODEL (model-uuid)","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from SERVICE_MODEL WHERE service_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid'\n  pfx='db.service-model'>\n\n","comments":"","outputs":1,"x":1058.0952529907227,"y":622.3810043334961,"z":"445c7615.217c08","wires":[["71e84e0c.9c656","db9cd478.d8df68"]]},{"id":"56d1963e.b615d8","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=\"`'No service model found for service UUID ' + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid`\" />\n","comments":"","x":1536.6663856506348,"y":641.523754119873,"z":"445c7615.217c08","wires":[]},{"id":"71e84e0c.9c656","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1363.1664199829102,"y":598.0475692749023,"z":"445c7615.217c08","wires":[["c55a1162.ea6a"]]},{"id":"db9cd478.d8df68","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1371.737850189209,"y":641.3332824707031,"z":"445c7615.217c08","wires":[["56d1963e.b615d8"]]},{"id":"c55a1162.ea6a","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=\"System error reading SERVICE_MODEL table\" />\n","comments":"","x":1536.0235862731934,"y":596.6190128326416,"z":"445c7615.217c08","wires":[]},{"id":"3ea96f4a.65397","type":"switchNode","name":"switch model-uuid","xml":"<switch test='`$getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid`'>\n","comments":"","outputs":1,"x":466.33331298828125,"y":411.33331298828125,"z":"445c7615.217c08","wires":[["f2ad3f15.9d9a6"]]},{"id":"f2ad3f15.9d9a6","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":704.4761864798411,"y":411.3333238874163,"z":"445c7615.217c08","wires":[["2e279b38.a73e94"]]},{"id":"2e279b38.a73e94","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-information.onap-model-information.model-uuid is a required input\" />\n","comments":"","x":855.904752458845,"y":411.3333219800677,"z":"445c7615.217c08","wires":[]},{"id":"b3c981ce.3a659","type":"switchNode","name":"switch model-invariant-uuid","xml":"<switch test='`$getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`'>\n","comments":"","outputs":1,"x":495.71429443359375,"y":455.71429443359375,"z":"445c7615.217c08","wires":[["86855ac.4bf16a8"]]},{"id":"86855ac.4bf16a8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":703.8571679251536,"y":455.7143053327288,"z":"445c7615.217c08","wires":[["ffff729b.8feb2"]]},{"id":"ffff729b.8feb2","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-information.onap-model-information.model-invariant-uuid is a required input\" />\n","comments":"","x":855.2857339041575,"y":455.7143034253802,"z":"445c7615.217c08","wires":[]},{"id":"34219d7c.5476f2","type":"get-resource","name":"get-resource SERVICE_MODEL (model-invariant-uuid)","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from SERVICE_MODEL WHERE invariant_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid'\n  pfx='db.service-model'>\n\n","comments":"","outputs":1,"x":1085.7142715454102,"y":708.5714416503906,"z":"445c7615.217c08","wires":[["938b0319.7f588","cee57e87.94948"]]},{"id":"837d9261.326c1","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=\"`'No service model found for invariant UUID ' + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`\" />\n","comments":"","x":1537.14253616333,"y":730.5713291168213,"z":"445c7615.217c08","wires":[]},{"id":"938b0319.7f588","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1363.6425704956055,"y":687.0951442718506,"z":"445c7615.217c08","wires":[["c1f6b92e.8b3b28"]]},{"id":"cee57e87.94948","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1372.2140007019043,"y":730.3808574676514,"z":"445c7615.217c08","wires":[["837d9261.326c1"]]},{"id":"c1f6b92e.8b3b28","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=\"System error reading SERVICE_MODEL table\" />\n","comments":"","x":1536.4997367858887,"y":685.6665878295898,"z":"445c7615.217c08","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-network-input-parameters.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-network-input-parameters.json
new file mode 100644
index 0000000..e649dd7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-network-input-parameters.json
@@ -0,0 +1,1102 @@
+[
+  {
+    "id": "ddf8122b.bf6e5",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 87,
+    "y": 115.04766654968262,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "2fff1e3d.63ab82"
+      ]
+    ]
+  },
+  {
+    "id": "2fff1e3d.63ab82",
+    "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": 332.2857131958008,
+    "y": 114.28574562072754,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "5d7ec735.0c4ba8"
+      ]
+    ]
+  },
+  {
+    "id": "5d7ec735.0c4ba8",
+    "type": "method",
+    "name": "method validate-network-input-parameters",
+    "xml": "<method rpc='validate-network-input-parameters' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 289.91668701171875,
+    "y": 189.30068397521973,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "c72cc377.3d6a98"
+      ]
+    ]
+  },
+  {
+    "id": "c72cc377.3d6a98",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 573.9166946411133,
+    "y": 177.30070877075195,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "846bb887.500c9",
+        "26516dd.068d212"
+      ]
+    ]
+  },
+  {
+    "id": "846bb887.500c9",
+    "type": "switchNode",
+    "name": "switch  svc-action",
+    "xml": "<switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 854.9166946411133,
+    "y": 172.3006944656372,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "770a13b8.39f74c"
+      ]
+    ]
+  },
+  {
+    "id": "770a13b8.39f74c",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1045.6309967041016,
+    "y": 173.30069541931152,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "b2cafa38.2cf18"
+      ]
+    ]
+  },
+  {
+    "id": "b2cafa38.2cf18",
+    "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": 1220.0595474243164,
+    "y": 172.300687789917,
+    "z": "8e4867bc.5edaa8",
+    "wires": []
+  },
+  {
+    "id": "26516dd.068d212",
+    "type": "switchNode",
+    "name": "switch svc-action",
+    "xml": "<switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 155.91664123535156,
+    "y": 448.30070877075195,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "3553ffe6.e3983",
+        "9543c13f.54a338",
+        "67e65045.59b8a8",
+        "72ab0083.c0d808",
+        "1c3c77bb.a2bfc"
+      ]
+    ]
+  },
+  {
+    "id": "3553ffe6.e3983",
+    "type": "outcome",
+    "name": "create",
+    "xml": "<outcome value='create'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 357.4167251586914,
+    "y": 448.30070877075195,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "dfd730e2.3d41a"
+      ]
+    ]
+  },
+  {
+    "id": "dfd730e2.3d41a",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 523.4167327880859,
+    "y": 448.30070877075195,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "b792e4c7.13b96"
+      ]
+    ]
+  },
+  {
+    "id": "786f42e8.a3ebcc",
+    "type": "for",
+    "name": "for loop i - Network input parameters",
+    "xml": "<for index=\"i\" start=\"0\" end=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1720.630859375,
+    "y": 109.01498413085938,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "39c05252.332006"
+      ]
+    ]
+  },
+  {
+    "id": "4662d843.0df85",
+    "type": "switchNode",
+    "name": "switch value",
+    "xml": "<switch test=\"`$tmp.value`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2576.2022247314453,
+    "y": 366.01495361328125,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "632316ae.127dd"
+      ]
+    ]
+  },
+  {
+    "id": "632316ae.127dd",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2793.2021980285645,
+    "y": 365.01495933532715,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "3f61b79e.239a58"
+      ]
+    ]
+  },
+  {
+    "id": "3f61b79e.239a58",
+    "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.param '+ $tmp.name +' is a required input'`\" />\n",
+    "comments": "",
+    "x": 2971.6309127807617,
+    "y": 366.01495933532715,
+    "z": "8e4867bc.5edaa8",
+    "wires": []
+  },
+  {
+    "id": "9543c13f.54a338",
+    "type": "outcome",
+    "name": "deactivate",
+    "xml": "<outcome value='deactivate'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 359.7142791748047,
+    "y": 606.4762363433838,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "ff7f1b4f.30d5a8"
+      ]
+    ]
+  },
+  {
+    "id": "67e65045.59b8a8",
+    "type": "outcome",
+    "name": "delete",
+    "xml": "<outcome value='delete'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 363.42866134643555,
+    "y": 777.1907939910889,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "c1e4044f.d7929"
+      ]
+    ]
+  },
+  {
+    "id": "72ab0083.c0d808",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 363.1905517578125,
+    "y": 950.6190795898438,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "f0129720.1ef558"
+      ]
+    ]
+  },
+  {
+    "id": "f0129720.1ef558",
+    "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-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n",
+    "comments": "",
+    "x": 546.7620849609375,
+    "y": 951.2382202148438,
+    "z": "8e4867bc.5edaa8",
+    "wires": []
+  },
+  {
+    "id": "39c05252.332006",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1600.7142486572266,
+    "y": 258.761926651001,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "bd82571.4ad4228",
+        "ce182094.ef8a3",
+        "6a5abb1b.52e074"
+      ]
+    ]
+  },
+  {
+    "id": "b792e4c7.13b96",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 849.0000152587891,
+    "y": 337.7143363952637,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "c5d42ffb.c9f0d8",
+        "69f739d0.28fca"
+      ]
+    ]
+  },
+  {
+    "id": "c5d42ffb.c9f0d8",
+    "type": "other",
+    "name": "CreateNetworkInstance",
+    "xml": "<outcome value='CreateNetworkInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1115.000015258789,
+    "y": 296.7143363952637,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "2a69c84.9676bb8"
+      ]
+    ]
+  },
+  {
+    "id": "69f739d0.28fca",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1069.000015258789,
+    "y": 346.7143363952637,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "a4f6f6a1.e1ab58"
+      ]
+    ]
+  },
+  {
+    "id": "a4f6f6a1.e1ab58",
+    "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 CreateNetworkInstance for svc-action=create\" />\n",
+    "comments": "",
+    "x": 1238.000015258789,
+    "y": 346.7143363952637,
+    "z": "8e4867bc.5edaa8",
+    "wires": []
+  },
+  {
+    "id": "2a69c84.9676bb8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1340.000015258789,
+    "y": 285.7143363952637,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "786f42e8.a3ebcc"
+      ]
+    ]
+  },
+  {
+    "id": "bd82571.4ad4228",
+    "type": "set",
+    "name": "clear tmp-data",
+    "xml": "<set>\n<parameter name='tmp.name' value='' />\n<parameter name='tmp.value' value='' />\n",
+    "comments": "",
+    "x": 1792.7143096923828,
+    "y": 213.00002479553223,
+    "z": "8e4867bc.5edaa8",
+    "wires": []
+  },
+  {
+    "id": "ce182094.ef8a3",
+    "type": "set",
+    "name": "set tmp-data",
+    "xml": "<set>\n<parameter name='tmp.name' value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$i].name`\"/>\n<parameter name='tmp.value' value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$i].value`\"/>\n",
+    "comments": "",
+    "x": 1781.7143096923828,
+    "y": 303.0000247955322,
+    "z": "8e4867bc.5edaa8",
+    "wires": []
+  },
+  {
+    "id": "6a5abb1b.52e074",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$tmp.name`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1760.7143096923828,
+    "y": 397.0000247955322,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "52effe4f.ac2ae8",
+        "869a7fd8.50b75",
+        "407c2eba.5d49f8",
+        "174077c9.6c10c8",
+        "4f610fc8.b35008",
+        "10ff2035.1d4618",
+        "4c528719.50cae",
+        "a67c5c2f.007308",
+        "8b639e89.f3549",
+        "d88cca1b.f3ea88",
+        "986570e4.376248",
+        "cd383e71.d36be8",
+        "a1ba7fd7.d88d3",
+        "a53ac3b.66852c",
+        "3d95e365.11bc6c",
+        "18048265.211a56",
+        "e570f120.c01b38"
+      ]
+    ]
+  },
+  {
+    "id": "52effe4f.ac2ae8",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2300.285598754883,
+    "y": 900,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "540cec23.3e0ea4"
+      ]
+    ]
+  },
+  {
+    "id": "540cec23.3e0ea4",
+    "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-topology-operation-input.network-request-input.network-input-parameters.param[' + $i + ']' + '.name is a required input'`\" />\n",
+    "comments": "",
+    "x": 2475.285598754883,
+    "y": 899,
+    "z": "8e4867bc.5edaa8",
+    "wires": []
+  },
+  {
+    "id": "869a7fd8.50b75",
+    "type": "other",
+    "name": "name",
+    "xml": "<outcome value='name'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2277.285598754883,
+    "y": 22,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "407c2eba.5d49f8",
+    "type": "other",
+    "name": "service-type",
+    "xml": "<outcome value='service-type'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2280.285598754883,
+    "y": 89,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "4c528719.50cae",
+    "type": "other",
+    "name": "sna2_name",
+    "xml": "<outcome value='sna2_name'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2284.285598754883,
+    "y": 318,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "174077c9.6c10c8",
+    "type": "other",
+    "name": "site1-name",
+    "xml": "<outcome value='site1-name'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2281.285598754883,
+    "y": 150,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "4f610fc8.b35008",
+    "type": "other",
+    "name": "site2-name",
+    "xml": "<outcome value='site2-name'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2277.285598754883,
+    "y": 207,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "10ff2035.1d4618",
+    "type": "other",
+    "name": "sna1_name",
+    "xml": "<outcome value='sna1_name'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2280.285598754883,
+    "y": 264,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "a67c5c2f.007308",
+    "type": "other",
+    "name": "pe1_id",
+    "xml": "<outcome value='pe1_id'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2284.285598754883,
+    "y": 369,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "8b639e89.f3549",
+    "type": "other",
+    "name": "pe2_id",
+    "xml": "<outcome value='pe2_id'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2287.285598754883,
+    "y": 417,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "d88cca1b.f3ea88",
+    "type": "other",
+    "name": "ac1-id",
+    "xml": "<outcome value='ac1-id'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2292.285598754883,
+    "y": 466,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "986570e4.376248",
+    "type": "other",
+    "name": "ac2-id",
+    "xml": "<outcome value='ac2-id'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2294.285598754883,
+    "y": 521,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "cd383e71.d36be8",
+    "type": "other",
+    "name": "ac1-ip",
+    "xml": "<outcome value='ac1-ip'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2294.285598754883,
+    "y": 573,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "a1ba7fd7.d88d3",
+    "type": "other",
+    "name": "ac2-ip",
+    "xml": "<outcome value='ac2-ip'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2296.285598754883,
+    "y": 634,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "a53ac3b.66852c",
+    "type": "other",
+    "name": "ac1_peer_ip",
+    "xml": "<outcome value='ac1_peer_ip'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2298.285598754883,
+    "y": 684,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "3d95e365.11bc6c",
+    "type": "other",
+    "name": "ac2_peer_ip",
+    "xml": "<outcome value='ac2_peer_ip'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2294.285598754883,
+    "y": 732,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "18048265.211a56",
+    "type": "other",
+    "name": "ac1_svlan",
+    "xml": "<outcome value='ac1_svlan'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2296.285598754883,
+    "y": 785,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "e570f120.c01b38",
+    "type": "other",
+    "name": "ac2_svlan",
+    "xml": "<outcome value='ac2_svlan'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2298.285598754883,
+    "y": 846,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4662d843.0df85"
+      ]
+    ]
+  },
+  {
+    "id": "c1e4044f.d7929",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 532.5714111328125,
+    "y": 775.8572387695312,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4d5581d7.e27f88"
+      ]
+    ]
+  },
+  {
+    "id": "4f4bf5a8.a829ac",
+    "type": "other",
+    "name": "DeleteNetworkInstance",
+    "xml": "<outcome value='DeleteNetworkInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 965.2857055664062,
+    "y": 778.857177734375,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "562b1ef.a708d6"
+      ]
+    ]
+  },
+  {
+    "id": "548cf43d.62af0c",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1025.2857055664062,
+    "y": 908.857177734375,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "5adf131e.a61cf4"
+      ]
+    ]
+  },
+  {
+    "id": "5adf131e.a61cf4",
+    "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 DeleteNetworkInstance for svc-action=delete\" />\n",
+    "comments": "",
+    "x": 1212.2857055664062,
+    "y": 909.857177734375,
+    "z": "8e4867bc.5edaa8",
+    "wires": []
+  },
+  {
+    "id": "562b1ef.a708d6",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 920.2857055664062,
+    "y": 978.857177734375,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "253ad8eb.98869",
+        "aeedc57a.12dee8"
+      ]
+    ]
+  },
+  {
+    "id": "253ad8eb.98869",
+    "type": "switchNode",
+    "name": "switch network-id",
+    "xml": "<switch test='`$network-topology-operation-input.network-information.network-id`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1074.28564453125,
+    "y": 1078.857177734375,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "34e7b676.a0927a"
+      ]
+    ]
+  },
+  {
+    "id": "34e7b676.a0927a",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1258.28564453125,
+    "y": 1081.857177734375,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "8389ad47.02308"
+      ]
+    ]
+  },
+  {
+    "id": "8389ad47.02308",
+    "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": 1414.71435546875,
+    "y": 1080.857177734375,
+    "z": "8e4867bc.5edaa8",
+    "wires": []
+  },
+  {
+    "id": "1c3c77bb.a2bfc",
+    "type": "outcome",
+    "name": "activate",
+    "xml": "<outcome value='activate'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 358.4285697937012,
+    "y": 540.7619791030884,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "3c6d4ec3.c79d7a"
+      ]
+    ]
+  },
+  {
+    "id": "3c6d4ec3.c79d7a",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 541.2857360839844,
+    "y": 537.9048290252686,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "bc964363.f267b",
+        "a1a12099.fb3058"
+      ]
+    ]
+  },
+  {
+    "id": "bc964363.f267b",
+    "type": "other",
+    "name": "ActivateDCINetworkInstance",
+    "xml": "<outcome value='ActivateDCINetworkInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 807.2857360839844,
+    "y": 496.90482902526855,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "a3300122.bf0e6"
+      ]
+    ]
+  },
+  {
+    "id": "a1a12099.fb3058",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 761.2857360839844,
+    "y": 546.9048290252686,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "7572ee8e.b0b5b8"
+      ]
+    ]
+  },
+  {
+    "id": "7572ee8e.b0b5b8",
+    "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 ActivateNetworkInstance for svc-action=activate\" />\n",
+    "comments": "",
+    "x": 930.2857360839844,
+    "y": 546.9048290252686,
+    "z": "8e4867bc.5edaa8",
+    "wires": []
+  },
+  {
+    "id": "a3300122.bf0e6",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1032.2857360839844,
+    "y": 485.90482902526855,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "7cd4d474.99df44"
+      ]
+    ]
+  },
+  {
+    "id": "e4ddb749.a4dd58",
+    "type": "other",
+    "name": "DeActivateDCINetworkInstance",
+    "xml": "<outcome value='DeActivateDCINetworkInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 803.1429061889648,
+    "y": 608.1906299591064,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "393b880c.5a2ab8"
+      ]
+    ]
+  },
+  {
+    "id": "b415c4d7.ec51d8",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 718.1428985595703,
+    "y": 677.190637588501,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "b678cd71.9eea48"
+      ]
+    ]
+  },
+  {
+    "id": "b678cd71.9eea48",
+    "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 DeactivateNetworkInstance for svc-action=deactivate\" />\n",
+    "comments": "",
+    "x": 899.1429138183594,
+    "y": 678.190637588501,
+    "z": "8e4867bc.5edaa8",
+    "wires": []
+  },
+  {
+    "id": "7cd4d474.99df44",
+    "type": "call",
+    "name": "call validate-overlay-network-input-parameters",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-overlay-network-input-parameters' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1340.1510696411133,
+    "y": 487.3333520889282,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "ff7f1b4f.30d5a8",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 539.9999618530273,
+    "y": 608.6664638519287,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "e4ddb749.a4dd58",
+        "b415c4d7.ec51d8"
+      ]
+    ]
+  },
+  {
+    "id": "4d5581d7.e27f88",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 706,
+    "y": 867,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "4f4bf5a8.a829ac",
+        "548cf43d.62af0c"
+      ]
+    ]
+  },
+  {
+    "id": "aeedc57a.12dee8",
+    "type": "execute",
+    "name": "execute requiredParameter",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"network-topology-operation-input.network-information.network-id\" value=\"$network-topology-operation-input.network-information.network-id\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1207,
+    "y": 975,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "393b880c.5a2ab8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1091.9999618530273,
+    "y": 611,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "46bbeff4.c42c88",
+        "1fbe8bfb.465ce4"
+      ]
+    ]
+  },
+  {
+    "id": "46bbeff4.c42c88",
+    "type": "switchNode",
+    "name": "switch network-id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-information.network-id`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1245.999900817871,
+    "y": 711,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "147516eb.099cf9"
+      ]
+    ]
+  },
+  {
+    "id": "147516eb.099cf9",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1429.999900817871,
+    "y": 714,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      [
+        "c957deec.097848"
+      ]
+    ]
+  },
+  {
+    "id": "c957deec.097848",
+    "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": 1586.428611755371,
+    "y": 713,
+    "z": "8e4867bc.5edaa8",
+    "wires": []
+  },
+  {
+    "id": "1fbe8bfb.465ce4",
+    "type": "execute",
+    "name": "execute requiredParameters",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"network-topology-operation-input.network-information.network-id\" value=\"$network-topology-operation-input.network-information.network-id\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1378.714256286621,
+    "y": 607.142822265625,
+    "z": "8e4867bc.5edaa8",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-network-input.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-network-input.json
new file mode 100644
index 0000000..9533eb4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-network-input.json
@@ -0,0 +1,2249 @@
+[
+  {
+    "id": "8788b5a2.1dbb88",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 159,
+    "y": 79,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "3ba09ab5.471bb6"
+      ]
+    ]
+  },
+  {
+    "id": "3ba09ab5.471bb6",
+    "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": 231.28570556640625,
+    "y": 131.2381134033203,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "14d14939.627767"
+      ]
+    ]
+  },
+  {
+    "id": "14d14939.627767",
+    "type": "method",
+    "name": "validate-network-input",
+    "xml": "<method rpc='validate-network-input' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 231.42862701416016,
+    "y": 193,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "b2af2fbc.edaf5"
+      ]
+    ]
+  },
+  {
+    "id": "b2af2fbc.edaf5",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 244.7500457763672,
+    "y": 475.44349479675293,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "ad851adc.fdf888",
+        "205d6a31.b83f56",
+        "bb69c265.9ec57",
+        "402cb1d.785695",
+        "96d49b08.fa0328",
+        "80d58546.aa7e88"
+      ]
+    ]
+  },
+  {
+    "id": "ad851adc.fdf888",
+    "type": "switchNode",
+    "name": "switch svc-request-id",
+    "xml": "<switch test='`$network-topology-operation-input.sdnc-request-header.svc-request-id`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 561.1428604125977,
+    "y": 201.42859077453613,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "33b50e86.044722"
+      ]
+    ]
+  },
+  {
+    "id": "33b50e86.044722",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 786.8571646554128,
+    "y": 201.42859322684126,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "70f295d3.d71adc"
+      ]
+    ]
+  },
+  {
+    "id": "70f295d3.d71adc",
+    "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": 938.2857306344167,
+    "y": 201.42859131949263,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "205d6a31.b83f56",
+    "type": "switchNode",
+    "name": "switch svc-action",
+    "xml": "<switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 549.7142333984375,
+    "y": 160.00002098083496,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "b11b9bfa.b83dd8"
+      ]
+    ]
+  },
+  {
+    "id": "b11b9bfa.b83dd8",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 785.4285850524902,
+    "y": 158.57141876220703,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "1d63b726.f05909"
+      ]
+    ]
+  },
+  {
+    "id": "1d63b726.f05909",
+    "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-action is a required input\" />\n",
+    "comments": "",
+    "x": 935.4285583496094,
+    "y": 158.5714282989502,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "bb69c265.9ec57",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 559.7142715454102,
+    "y": 244.285737991333,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "23018cf6.3779b4"
+      ]
+    ]
+  },
+  {
+    "id": "23018cf6.3779b4",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 786.8571602957591,
+    "y": 244.28574698311968,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "3d7d65b5.26ffaa"
+      ]
+    ]
+  },
+  {
+    "id": "3d7d65b5.26ffaa",
+    "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 a required input\" />\n",
+    "comments": "",
+    "x": 938.285726274763,
+    "y": 244.28574507577105,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "402cb1d.785695",
+    "type": "switchNode",
+    "name": "switch service-instance-id",
+    "xml": "<switch test='`$network-topology-operation-input.service-information.service-instance-id`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 568.857177734375,
+    "y": 287,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "f8fe5d6a.080ae"
+      ]
+    ]
+  },
+  {
+    "id": "f8fe5d6a.080ae",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 785.2857666015625,
+    "y": 288,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "cc71f851.6ba9a8"
+      ]
+    ]
+  },
+  {
+    "id": "cc71f851.6ba9a8",
+    "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-information.service-instance-id is a required input\" />\n",
+    "comments": "",
+    "x": 943.7142944335938,
+    "y": 287,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "e6be7a59.b96b68",
+    "type": "comment",
+    "name": "validate-network-input - CHANGELOG",
+    "info": "12/8: Initial release 1.0.0",
+    "comments": "",
+    "x": 444,
+    "y": 43,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "96d49b08.fa0328",
+    "type": "switchNode",
+    "name": "switch svc-action",
+    "xml": "<switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 546,
+    "y": 374,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "3c93b861.36fba8",
+        "88f1d93c.c06f98",
+        "a20067e.94ffe98",
+        "d5a289af.7573e8",
+        "f8a0e353.63b13"
+      ]
+    ]
+  },
+  {
+    "id": "3c93b861.36fba8",
+    "type": "other",
+    "name": "assign",
+    "xml": "<outcome value='assign'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 778.71435546875,
+    "y": 379.5714111328125,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "21db76c1.48922a"
+      ]
+    ]
+  },
+  {
+    "id": "88f1d93c.c06f98",
+    "type": "other",
+    "name": "activate",
+    "xml": "<outcome value='activate'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 772.0000114440918,
+    "y": 566.0000247955322,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "98c549ed.adadc8"
+      ]
+    ]
+  },
+  {
+    "id": "a20067e.94ffe98",
+    "type": "other",
+    "name": "deactivate",
+    "xml": "<outcome value='deactivate'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 770.000114440918,
+    "y": 862.0001058578491,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "99c9746e.0bf598"
+      ]
+    ]
+  },
+  {
+    "id": "21db76c1.48922a",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 941,
+    "y": 379,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "272bb5f8.f31cda"
+      ]
+    ]
+  },
+  {
+    "id": "272bb5f8.f31cda",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1161,
+    "y": 379,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "75bb00b.643f9",
+        "de64b013.96b09"
+      ]
+    ]
+  },
+  {
+    "id": "75bb00b.643f9",
+    "type": "other",
+    "name": "CreateNetworkInstance",
+    "xml": "<outcome value='CreateNetworkInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1441,
+    "y": 344,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "46e41b99.978564"
+      ]
+    ]
+  },
+  {
+    "id": "de64b013.96b09",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1390,
+    "y": 388,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "7d916d38.e514a4"
+      ]
+    ]
+  },
+  {
+    "id": "7d916d38.e514a4",
+    "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 CreateNetworkInstance for svc-action=assign\" />\n",
+    "comments": "",
+    "x": 1559,
+    "y": 388,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "98c549ed.adadc8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 946.0000114440918,
+    "y": 566.0000247955322,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "7cbbeac6.2691d4"
+      ]
+    ]
+  },
+  {
+    "id": "7cbbeac6.2691d4",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1163.0000114440918,
+    "y": 566.0000247955322,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "34d0495d.e1b546",
+        "b4c471fa.cde5e",
+        "985ba54f.3974a8",
+        "1c550262.882b2e",
+        "dce79fa4.7fd85"
+      ]
+    ]
+  },
+  {
+    "id": "34d0495d.e1b546",
+    "type": "other",
+    "name": "CreateNetworkInstance",
+    "xml": "<outcome value='CreateNetworkInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1444.0000114440918,
+    "y": 567.0000247955322,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "c5dc69fd.8115a8"
+      ]
+    ]
+  },
+  {
+    "id": "b4c471fa.cde5e",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1387.0000114440918,
+    "y": 607.0000247955322,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "d8bc1fab.0cb7b"
+      ]
+    ]
+  },
+  {
+    "id": "d8bc1fab.0cb7b",
+    "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 CreateNetworkInstance for svc-action=activate\" />\n",
+    "comments": "",
+    "x": 1545.8573112487793,
+    "y": 606.4286451339722,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "99c9746e.0bf598",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 952.000114440918,
+    "y": 861.0001058578491,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "2c02914c.ac786e"
+      ]
+    ]
+  },
+  {
+    "id": "2c02914c.ac786e",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1169.000114440918,
+    "y": 861.0001058578491,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "e6f9cf57.ba236",
+        "95775b49.fc2318",
+        "a630529b.bc37b",
+        "4893ca1b.86d634",
+        "10d3655a.b8cb0b"
+      ]
+    ]
+  },
+  {
+    "id": "e6f9cf57.ba236",
+    "type": "other",
+    "name": "DeleteNetworkInstance",
+    "xml": "<outcome value='DeleteNetworkInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1450.000114440918,
+    "y": 862.0001058578491,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "397759af.0b93f6"
+      ]
+    ]
+  },
+  {
+    "id": "95775b49.fc2318",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1393.000114440918,
+    "y": 902.0001058578491,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "41fdec9e.e8a644"
+      ]
+    ]
+  },
+  {
+    "id": "41fdec9e.e8a644",
+    "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 DeleteNetworkInstance for svc-action=deactivate\" />\n",
+    "comments": "",
+    "x": 1562.0001792907715,
+    "y": 904.8572673797607,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "d5a289af.7573e8",
+    "type": "other",
+    "name": "unassign",
+    "xml": "<outcome value='unassign'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 766.0000839233398,
+    "y": 956.0000829696655,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "390e2b39.6c4854"
+      ]
+    ]
+  },
+  {
+    "id": "390e2b39.6c4854",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 948.000114440918,
+    "y": 952.0001058578491,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "106acf9d.333d5"
+      ]
+    ]
+  },
+  {
+    "id": "106acf9d.333d5",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1165.000114440918,
+    "y": 952.0001058578491,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "7360ef3d.9811b",
+        "6d03b112.dfc4"
+      ]
+    ]
+  },
+  {
+    "id": "7360ef3d.9811b",
+    "type": "other",
+    "name": "DeleteNetworkInstance",
+    "xml": "<outcome value='DeleteNetworkInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1446.000114440918,
+    "y": 953.0001058578491,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "c8e6a8bb.defab8"
+      ]
+    ]
+  },
+  {
+    "id": "6d03b112.dfc4",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1389.000114440918,
+    "y": 993.0001058578491,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "7dd14282.06273c"
+      ]
+    ]
+  },
+  {
+    "id": "7dd14282.06273c",
+    "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 DeleteNetworkInstance for svc-action=unassign\" />\n",
+    "comments": "",
+    "x": 1558.000114440918,
+    "y": 993.0001058578491,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "46e41b99.978564",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1677,
+    "y": 343,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "7e651b21.c50284",
+        "6b264531.de0afc",
+        "87ae2dd3.c6822",
+        "77cf2c9e.63a064",
+        "e62c59c8.088828",
+        "d8c0a4b6.4a38d8",
+        "6f3ed145.89e1a",
+        "81763a92.4e5c78"
+      ]
+    ]
+  },
+  {
+    "id": "c5dc69fd.8115a8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1669.0000114440918,
+    "y": 567.0000247955322,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "dc0c345f.272208",
+        "7e651b21.c50284",
+        "6b264531.de0afc",
+        "87ae2dd3.c6822",
+        "77cf2c9e.63a064",
+        "d8c0a4b6.4a38d8",
+        "6f3ed145.89e1a"
+      ]
+    ]
+  },
+  {
+    "id": "397759af.0b93f6",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1706.000114440918,
+    "y": 863.0001058578491,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "dc0c345f.272208"
+      ]
+    ]
+  },
+  {
+    "id": "c8e6a8bb.defab8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1705.000114440918,
+    "y": 954.0001058578491,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "dc0c345f.272208"
+      ]
+    ]
+  },
+  {
+    "id": "6f3ed145.89e1a",
+    "type": "switchNode",
+    "name": "switch onap-model-information.model-uuid",
+    "xml": "<switch test='`$network-topology-operation-input.service-information.onap-model-information.model-uuid`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2266.166816711426,
+    "y": 1150.7499980926514,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "6ba35582.02a89c",
+        "8d6ac32a.9037"
+      ]
+    ]
+  },
+  {
+    "id": "dc0c345f.272208",
+    "type": "switchNode",
+    "name": "switch network-information.network-id",
+    "xml": "<switch test='`$network-topology-operation-input.network-information.network-id`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2277.6665954589844,
+    "y": 317.666729927063,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "320cd589.df0dea"
+      ]
+    ]
+  },
+  {
+    "id": "320cd589.df0dea",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2508.380714416504,
+    "y": 317.6667537689209,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "a1d040a8.b6d41"
+      ]
+    ]
+  },
+  {
+    "id": "a1d040a8.b6d41",
+    "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-information.network-information.network-id is a required input\" />\n",
+    "comments": "",
+    "x": 2669.8095474243164,
+    "y": 319.66674613952637,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "3e5905e9.f5a48a",
+    "type": "comment",
+    "name": "validations - required for all",
+    "info": "",
+    "comments": "",
+    "x": 577,
+    "y": 117,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "19e922fc.da104d",
+    "type": "comment",
+    "name": "validations specific per svc-action",
+    "info": "",
+    "comments": "",
+    "x": 589,
+    "y": 332,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "c5d98990.732158",
+    "type": "comment",
+    "name": "network-request-information block validations",
+    "info": "",
+    "comments": "",
+    "x": 2269.5001525878906,
+    "y": 1002.7500467300415,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "7e651b21.c50284",
+    "type": "switchNode",
+    "name": "switch network-request-information.tenant",
+    "xml": "<switch test='`$network-topology-operation-input.network-request-input.tenant`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2266.5001525878906,
+    "y": 1052.7500467300415,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "b8f089fb.d935a8"
+      ]
+    ]
+  },
+  {
+    "id": "b8f089fb.d935a8",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2508.2145080566406,
+    "y": 1054.7500467300415,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "3d496a0d.53e9c6"
+      ]
+    ]
+  },
+  {
+    "id": "3d496a0d.53e9c6",
+    "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.tenant is a required input\" />\n",
+    "comments": "",
+    "x": 2659.643096923828,
+    "y": 1052.7500467300415,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "6b264531.de0afc",
+    "type": "switchNode",
+    "name": "switch network-request-information.aic-cloud-region",
+    "xml": "<switch test='`$network-topology-operation-input.network-request-input.aic-cloud-region`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2295.5001525878906,
+    "y": 1095.7500467300415,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "615cc864.89ade8"
+      ]
+    ]
+  },
+  {
+    "id": "615cc864.89ade8",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2557.2145080566406,
+    "y": 1095.7500467300415,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "b53a0b88.3c7958"
+      ]
+    ]
+  },
+  {
+    "id": "b53a0b88.3c7958",
+    "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-information.network-request-information.aic-cloud-region is a required input\" />\n",
+    "comments": "",
+    "x": 2721.6429748535156,
+    "y": 1094.7500467300415,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "87ae2dd3.c6822",
+    "type": "switchNode",
+    "name": "switch onap-model-information.model-invariant-uuid",
+    "xml": "<switch test='`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2308.0001220703125,
+    "y": 826.750057220459,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "cc6685f6.058958"
+      ]
+    ]
+  },
+  {
+    "id": "cc6685f6.058958",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2593.0001831054688,
+    "y": 825.7500514984131,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "582d90a3.b7998"
+      ]
+    ]
+  },
+  {
+    "id": "582d90a3.b7998",
+    "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-information.onap-model-information.model-invariant-uuid is a required input\" />\n",
+    "comments": "",
+    "x": 2744.4286499023438,
+    "y": 824.7500514984131,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "77cf2c9e.63a064",
+    "type": "switchNode",
+    "name": "switch onap-model-information.model-uuid",
+    "xml": "<switch test='`$network-topology-operation-input.network-information.onap-model-information.model-uuid`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2280.1429138183594,
+    "y": 902.6072015762329,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "4f68a79d.3bf918"
+      ]
+    ]
+  },
+  {
+    "id": "4f68a79d.3bf918",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2521.1430053710938,
+    "y": 903.6071376800537,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "7690e5c.85ea81c"
+      ]
+    ]
+  },
+  {
+    "id": "7690e5c.85ea81c",
+    "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-information.onap-model-information.model-uuid is a required input\" />\n",
+    "comments": "",
+    "x": 2686.5714721679688,
+    "y": 901.6071071624756,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "68ca38a1.08f0d8",
+    "type": "comment",
+    "name": "network-information.onap-model-information block validations",
+    "info": "",
+    "comments": "",
+    "x": 2327.1432495117188,
+    "y": 786.6071996688843,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "d8c0a4b6.4a38d8",
+    "type": "switchNode",
+    "name": "switch onap-model-information.model-customization-uuid",
+    "xml": "<switch test='`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2326.0000610351562,
+    "y": 861.750020980835,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "a2943e5e.6f374"
+      ]
+    ]
+  },
+  {
+    "id": "a2943e5e.6f374",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2622.0000610351562,
+    "y": 862.750020980835,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "c180f18b.aebfe"
+      ]
+    ]
+  },
+  {
+    "id": "c180f18b.aebfe",
+    "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-information.onap-model-information.model-customization-uuid is a required input\" />\n",
+    "comments": "",
+    "x": 2769.4285278320312,
+    "y": 862.750020980835,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "80d58546.aa7e88",
+    "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": 551.3570747375488,
+    "y": 695.6428346633911,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "e62c59c8.088828",
+    "type": "switchNode",
+    "name": "switch network-information.network-instance-group-id",
+    "xml": "<switch test='`$network-topology-operation-input.network-information.network-instance-group-id`'>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2310.5001220703125,
+    "y": 623.5835075378418,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "5b95f49.d609d0c",
+        "d09003b.e23f4"
+      ]
+    ]
+  },
+  {
+    "id": "5b95f49.d609d0c",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2600.250011444092,
+    "y": 653.7501907348633,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "1d7d3883.7d3737"
+      ]
+    ]
+  },
+  {
+    "id": "d09003b.e23f4",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2597.91690826416,
+    "y": 620.7500648498535,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "738908db.7d8f28"
+      ]
+    ]
+  },
+  {
+    "id": "738908db.7d8f28",
+    "type": "returnSuccess",
+    "name": "return success",
+    "xml": "<return status='success'>\n<parameter name='' value='' />\n",
+    "comments": "",
+    "x": 2758.2501373291016,
+    "y": 617.7501220703125,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "3269563e.6fec5a",
+    "type": "get-resource",
+    "name": "get-resource NETWORK_MODEL",
+    "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from NETWORK_MODEL WHERE customization_uuid = $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid\n  and service_uuid = $network-topology-operation-input.service-information.onap-model-information.model-uuid'\n  pfx='network-model'>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2974.183319091797,
+    "y": 1398.4285793304443,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "e762e9e8.c9a108",
+        "e2455f53.fb44"
+      ]
+    ]
+  },
+  {
+    "id": "2bd9bcfc.f16724",
+    "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=\"`'No network model found for customization UUID ' \n    + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +\n    ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`\" />\n",
+    "comments": "",
+    "x": 3468.6474609375,
+    "y": 1395.7260434627533,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "e762e9e8.c9a108",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3269.897472381592,
+    "y": 1389.0832498073578,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "2bd9bcfc.f16724"
+      ]
+    ]
+  },
+  {
+    "id": "e2455f53.fb44",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3263.647472381592,
+    "y": 1421.5832498073578,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "2bd9bcfc.f16724"
+      ]
+    ]
+  },
+  {
+    "id": "ede139e4.89a198",
+    "type": "for",
+    "name": "for ngidx..service-data.network-instance-groups.network-instance-group[]",
+    "xml": "<for index='ngidx' start='0' end='`$service-data.network-instance-groups.network-instance-_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3997.611541748047,
+    "y": 690.9445762634277,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "eac562d9.de601"
+      ]
+    ]
+  },
+  {
+    "id": "4f2fd133.4305b",
+    "type": "switchNode",
+    "name": "service-data.network-instance-groups.network-instance-group_length",
+    "xml": "<switch test='`$service-data.network-instance-groups.network-instance-group_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3084.3256912231445,
+    "y": 652.0159721374512,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "501babe3.5319c4",
+        "e1e773cb.e5cf6"
+      ]
+    ]
+  },
+  {
+    "id": "501babe3.5319c4",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3449.575469970703,
+    "y": 654.0159454345703,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "87a76e41.abe4d"
+      ]
+    ]
+  },
+  {
+    "id": "e1e773cb.e5cf6",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3429.575469970703,
+    "y": 689.0159454345703,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "3ab76fb1.f7b22"
+      ]
+    ]
+  },
+  {
+    "id": "eac562d9.de601",
+    "type": "switchNode",
+    "name": "switch network-instance-group-id found",
+    "xml": "<switch test=\"`$service-data.network-instance-groups.network-instance-group[$nidx].network-instance-group-id == $network-topology-operation-input.network-information.network-instance-group-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4445.54020690918,
+    "y": 690.6947593688965,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "7a0eb4db.f8074c"
+      ]
+    ]
+  },
+  {
+    "id": "7a0eb4db.f8074c",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4691.99324798584,
+    "y": 691.5876178741455,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "363a104e.3bd6b"
+      ]
+    ]
+  },
+  {
+    "id": "598b024c.d866dc",
+    "type": "set",
+    "name": "set tmp.ngidx and ctx.network-instance-group-data",
+    "xml": "<set>\n<parameter name='tmp.ngidx' value='`$ngidx`' />\n<parameter name='ctx.network-instance-group-data.' value='`$service-data.network-instance-groups.network-instance-group[$ngidx].`' />\n",
+    "comments": "",
+    "x": 5134.525215148926,
+    "y": 691.3376426696777,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "3ab76fb1.f7b22",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 3630.845489501953,
+    "y": 690.5705108642578,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "ede139e4.89a198"
+      ]
+    ]
+  },
+  {
+    "id": "1d7d3883.7d3737",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2734.3612670898438,
+    "y": 654.1945953369141,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "4f2fd133.4305b"
+      ]
+    ]
+  },
+  {
+    "id": "87a76e41.abe4d",
+    "type": "record",
+    "name": "record",
+    "xml": "<record plugin=\"com.att.sdnctl.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.validate-network-input\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Network instance group id proveded but no network instance group exists that matches\"/>\n<parameter name=\"field5\" value=\"`$network-topology-operation-input.network-information.network-instance-group-id`\"/>\n\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3610.861358642578,
+    "y": 653.4445343017578,
+    "z": "df2e3233.9775f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "363a104e.3bd6b",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 4840.611686706543,
+    "y": 691.444803237915,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "598b024c.d866dc"
+      ]
+    ]
+  },
+  {
+    "id": "6ba35582.02a89c",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2531.314895629883,
+    "y": 1150.3426370620728,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "1cfe1346.d805fd"
+      ]
+    ]
+  },
+  {
+    "id": "8d6ac32a.9037",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2530.064929962158,
+    "y": 1322.009298324585,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "423b56dc.d5ebb8"
+      ]
+    ]
+  },
+  {
+    "id": "921bbed8.0d111",
+    "type": "get-resource",
+    "name": "get-resource SERVICE_MODEL",
+    "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from SERVICE_MODEL WHERE service_uuid = $network-topology-operation-input.service-information.onap-model-information.model-uuid'\n  pfx='service-model'>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2976.683303833008,
+    "y": 1321.4933519363403,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "79c59913.159718",
+        "efb4080a.682628"
+      ]
+    ]
+  },
+  {
+    "id": "860b68fa.33ca88",
+    "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=\"`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`\" />\n",
+    "comments": "",
+    "x": 3458.7666091918945,
+    "y": 1327.74343085289,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "79c59913.159718",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3260.016689300537,
+    "y": 1323.1006467342377,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "860b68fa.33ca88"
+      ]
+    ]
+  },
+  {
+    "id": "efb4080a.682628",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3253.766689300537,
+    "y": 1355.6006467342377,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "860b68fa.33ca88"
+      ]
+    ]
+  },
+  {
+    "id": "366d9d85.e9d9b2",
+    "type": "get-resource",
+    "name": "get-resource NETWORK_MODEL",
+    "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from NETWORK_MODEL WHERE customization_uuid = $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid\n  and service_uuid = $service-data.service-information.onap-model-information.model-uuid'\n  pfx='network-model'>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2976.8693084716797,
+    "y": 1223.1509647369385,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "910f20d1.bdd36",
+        "e2e9e038.3cb1b"
+      ]
+    ]
+  },
+  {
+    "id": "31c32b50.6432e4",
+    "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=\"`'No network model found for customization UUID ' \n    + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +\n    ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`\" />\n",
+    "comments": "",
+    "x": 3472.3335494995117,
+    "y": 1222.4483096599579,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "910f20d1.bdd36",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3273.5835609436035,
+    "y": 1215.8055160045624,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "31c32b50.6432e4"
+      ]
+    ]
+  },
+  {
+    "id": "e2e9e038.3cb1b",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3268.58353805542,
+    "y": 1247.055515050888,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "31c32b50.6432e4"
+      ]
+    ]
+  },
+  {
+    "id": "a5b9cb21.07e728",
+    "type": "get-resource",
+    "name": "get-resource SERVICE_MODEL",
+    "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from SERVICE_MODEL WHERE service_uuid = $service-data.service-information.onap-model-information.model-uuid'\n  pfx='service-model'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2975.369338989258,
+    "y": 1149.4655179977417,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "ad32be5d.fc0d2",
+        "726e59ae.b41088"
+      ]
+    ]
+  },
+  {
+    "id": "263ae4cc.79bc1c",
+    "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=\"`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`\" />\n",
+    "comments": "",
+    "x": 3462.4526977539062,
+    "y": 1154.4656970500946,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "ad32be5d.fc0d2",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3263.702777862549,
+    "y": 1149.8229129314423,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "263ae4cc.79bc1c"
+      ]
+    ]
+  },
+  {
+    "id": "726e59ae.b41088",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3257.452777862549,
+    "y": 1182.3229129314423,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "263ae4cc.79bc1c"
+      ]
+    ]
+  },
+  {
+    "id": "1cfe1346.d805fd",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2706.639144897461,
+    "y": 1149.555465221405,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "a5b9cb21.07e728",
+        "366d9d85.e9d9b2"
+      ]
+    ]
+  },
+  {
+    "id": "423b56dc.d5ebb8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2691.63924407959,
+    "y": 1320.8055248260498,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "921bbed8.0d111",
+        "3269563e.6fec5a"
+      ]
+    ]
+  },
+  {
+    "id": "f8a0e353.63b13",
+    "type": "other",
+    "name": "changeassign",
+    "xml": "<outcome value='changeassign'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 787.000072479248,
+    "y": 687.0000247955322,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "4a52d531.9fe30c"
+      ]
+    ]
+  },
+  {
+    "id": "4a52d531.9fe30c",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 972.285717010498,
+    "y": 686.4286289215088,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "60aa05f5.c569dc"
+      ]
+    ]
+  },
+  {
+    "id": "60aa05f5.c569dc",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1164.2856559753418,
+    "y": 686.4286136627197,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "88893f96.826cb",
+        "b859c6e0.2898e8"
+      ]
+    ]
+  },
+  {
+    "id": "88893f96.826cb",
+    "type": "other",
+    "name": "CreateNetworkInstance",
+    "xml": "<outcome value='CreateNetworkInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1444.2856559753418,
+    "y": 651.4286136627197,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "9c8d3fa9.f4234"
+      ]
+    ]
+  },
+  {
+    "id": "b859c6e0.2898e8",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1393.2856559753418,
+    "y": 695.4286136627197,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "73e64f7b.3bc52"
+      ]
+    ]
+  },
+  {
+    "id": "73e64f7b.3bc52",
+    "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 CreateNetworkInstance for svc-action=changeassign\" />\n",
+    "comments": "",
+    "x": 1562.2856559753418,
+    "y": 695.4286136627197,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "9c8d3fa9.f4234",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1680.2856559753418,
+    "y": 650.4286136627197,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "dc0c345f.272208",
+        "12953ca4.f4d643",
+        "87ae2dd3.c6822",
+        "d8c0a4b6.4a38d8",
+        "77cf2c9e.63a064",
+        "7e651b21.c50284",
+        "6b264531.de0afc"
+      ]
+    ]
+  },
+  {
+    "id": "12953ca4.f4d643",
+    "type": "switchNode",
+    "name": "switch network-information.from-preload",
+    "xml": "<switch test='`$network-topology-operation-input.network-information.from-preload`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2283.91650390625,
+    "y": 368.0000352859497,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "eb76cae7.f61f78"
+      ]
+    ]
+  },
+  {
+    "id": "eb76cae7.f61f78",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2519.630813598633,
+    "y": 368.0000352859497,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "6e925a8f.fb9974"
+      ]
+    ]
+  },
+  {
+    "id": "6e925a8f.fb9974",
+    "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-information.from-preload is a required input\" />\n",
+    "comments": "",
+    "x": 2684.0594329833984,
+    "y": 366.0000352859497,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "2c777ab3.486276",
+    "type": "comment",
+    "name": "If service model uuid not passed in input, use from service-data",
+    "info": "",
+    "comments": "",
+    "x": 3072.7462768554688,
+    "y": 1110.2461557388306,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "14815eb6.fd5c91",
+    "type": "comment",
+    "name": "get network and service model using input",
+    "info": "",
+    "comments": "",
+    "x": 3000.246292114258,
+    "y": 1283.9961595535278,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "81763a92.4e5c78",
+    "type": "switchNode",
+    "name": "switch network-information.network-id",
+    "xml": "<switch test='`$network-topology-operation-input.network-information.network-id`'>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2287.3358001708984,
+    "y": 421.6692581176758,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "c5a63b51.87b4f8",
+        "1214f71.156fe09"
+      ]
+    ]
+  },
+  {
+    "id": "c5a63b51.87b4f8",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2583.335750579834,
+    "y": 454.33596992492676,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "e775f46b.5160e8"
+      ]
+    ]
+  },
+  {
+    "id": "1214f71.156fe09",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2581.0026473999023,
+    "y": 421.335844039917,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "ac694b16.08b998"
+      ]
+    ]
+  },
+  {
+    "id": "ac694b16.08b998",
+    "type": "returnSuccess",
+    "name": "return success",
+    "xml": "<return status='success'>\n<parameter name='' value='' />\n",
+    "comments": "",
+    "x": 2741.3358764648438,
+    "y": 418.335901260376,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "d81e00e0.1ff27",
+    "type": "for",
+    "name": "for nidx..service-data.networks.network[]",
+    "xml": "<for index='nidx' start='0' end='`$service-data.networks.network_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3731.4471740722656,
+    "y": 493.780366897583,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "d0382bb1.c7c318"
+      ]
+    ]
+  },
+  {
+    "id": "6aa40d73.069df4",
+    "type": "switchNode",
+    "name": "switch service-data.networks.network_length",
+    "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2991.161117553711,
+    "y": 456.3517246246338,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "1846ce0f.dd2142",
+        "3dcca8e2.fa0cf8"
+      ]
+    ]
+  },
+  {
+    "id": "1846ce0f.dd2142",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3280.161117553711,
+    "y": 458.35178565979004,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "6705bd82.d03014"
+      ]
+    ]
+  },
+  {
+    "id": "3dcca8e2.fa0cf8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3251.411331176758,
+    "y": 493.8518409729004,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "76bdfc6d.a268b4"
+      ]
+    ]
+  },
+  {
+    "id": "d0382bb1.c7c318",
+    "type": "switchNode",
+    "name": "switch networkid found",
+    "xml": "<switch test=\"`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4021.8757247924805,
+    "y": 493.03045082092285,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "799fd9f5.297828"
+      ]
+    ]
+  },
+  {
+    "id": "799fd9f5.297828",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4210.828079223633,
+    "y": 493.923189163208,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "fa602e9.58fa5d"
+      ]
+    ]
+  },
+  {
+    "id": "b9b1e9e8.4baa78",
+    "type": "set",
+    "name": "set tmp.nidx and ctx.network-data",
+    "xml": "<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='network-data.' value='`$service-data.networks.network[$nidx].`' />\n",
+    "comments": "",
+    "x": 4653.360046386719,
+    "y": 493.67321395874023,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "76bdfc6d.a268b4",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 3452.681350708008,
+    "y": 495.4064064025879,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "d81e00e0.1ff27"
+      ]
+    ]
+  },
+  {
+    "id": "a4c75003.79847",
+    "type": "switchNode",
+    "name": "switch tmp.nidx ",
+    "xml": "<switch test=\"`$tmp.nidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3649.748748779297,
+    "y": 569.7635736465454,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "46de02ac.b16e8c"
+      ]
+    ]
+  },
+  {
+    "id": "97b52b4a.465218",
+    "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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n",
+    "comments": "",
+    "x": 4004.606025695801,
+    "y": 569.4778385162354,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "46de02ac.b16e8c",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3821.1772842407227,
+    "y": 568.3349590301514,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "97b52b4a.465218"
+      ]
+    ]
+  },
+  {
+    "id": "e775f46b.5160e8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2717.447006225586,
+    "y": 454.78037452697754,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "6aa40d73.069df4"
+      ]
+    ]
+  },
+  {
+    "id": "6705bd82.d03014",
+    "type": "record",
+    "name": "record",
+    "xml": "<record plugin=\"com.att.sdnctl.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.validate-network-input\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Network id proveded but no network exists that matches\"/>\n<parameter name=\"field5\" value=\"`$network-topology-operation-input.network-information.network-id`\"/>\n\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3441.447006225586,
+    "y": 457.78037452697754,
+    "z": "df2e3233.9775f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "fa602e9.58fa5d",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 4359.446517944336,
+    "y": 493.78037452697754,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "b9b1e9e8.4baa78"
+      ]
+    ]
+  },
+  {
+    "id": "f899095f.339638",
+    "type": "comment",
+    "name": "1806: Removed logic that requires service data to have network if network id is passed from mso on assign",
+    "info": "",
+    "comments": "",
+    "x": 3929.3360900878906,
+    "y": 531.3359460830688,
+    "z": "df2e3233.9775f",
+    "wires": []
+  },
+  {
+    "id": "985ba54f.3974a8",
+    "type": "outcome",
+    "name": "ActivateSOTNConnectivityInstance",
+    "xml": "<outcome value='ActivateSOTNConnectivityInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1471.3333587646484,
+    "y": 494.00006198883057,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "694acc9b.b69aa4"
+      ]
+    ]
+  },
+  {
+    "id": "694acc9b.b69aa4",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1697.3333282470703,
+    "y": 494.00010776519775,
+    "z": "df2e3233.9775f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "1c550262.882b2e",
+    "type": "outcome",
+    "name": "ActivateDCINetworkInstance",
+    "xml": "<outcome value='ActivateDCINetworkInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1459.2497634887695,
+    "y": 529.9960916042328,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "15320fb4.9014c"
+      ]
+    ]
+  },
+  {
+    "id": "15320fb4.9014c",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1672.5559921264648,
+    "y": 529.0000257492065,
+    "z": "df2e3233.9775f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a630529b.bc37b",
+    "type": "outcome",
+    "name": "DeactivateSOTNConnectivityInstance",
+    "xml": "<outcome value='DeactivateSOTNConnectivityInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1490.3333892822266,
+    "y": 786.0001420974731,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "ffb9085d.d34018"
+      ]
+    ]
+  },
+  {
+    "id": "ffb9085d.d34018",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1727.3333587646484,
+    "y": 786.0001878738403,
+    "z": "df2e3233.9775f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "4893ca1b.86d634",
+    "type": "outcome",
+    "name": "DeActivateDCINetworkInstance",
+    "xml": "<outcome value='DeActivateDCINetworkInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1472.5832214355469,
+    "y": 823.9961545467377,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "fce22d6a.e8a6b"
+      ]
+    ]
+  },
+  {
+    "id": "fce22d6a.e8a6b",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1715.5833053588867,
+    "y": 822.0274226665497,
+    "z": "df2e3233.9775f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "dce79fa4.7fd85",
+    "type": "outcome",
+    "name": "ActivateSDWANConnectivityInstance",
+    "xml": "<outcome value='ActivateSDWANConnectivityInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1476.003890991211,
+    "y": 454.7539072036743,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "a3491976.6ffbc8"
+      ]
+    ]
+  },
+  {
+    "id": "a3491976.6ffbc8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1712.004020690918,
+    "y": 453.7539072036743,
+    "z": "df2e3233.9775f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "10d3655a.b8cb0b",
+    "type": "outcome",
+    "name": "DeactivateSDWANConnectivityInstance",
+    "xml": "<outcome value='DeactivateSDWANConnectivityInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1496.00390625,
+    "y": 745.75390625,
+    "z": "df2e3233.9775f",
+    "wires": [
+      [
+        "4660a007.84d7d"
+      ]
+    ]
+  },
+  {
+    "id": "4660a007.84d7d",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1747.00390625,
+    "y": 743.75390625,
+    "z": "df2e3233.9775f",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-overlay-network-input-parameters.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-overlay-network-input-parameters.json
new file mode 100644
index 0000000..18620a0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-overlay-network-input-parameters.json
@@ -0,0 +1,1125 @@
+[
+  {
+    "id": "9f219372.913768",
+    "type": "for",
+    "name": "for each network-input-parameters",
+    "xml": "<for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 668.4999923706055,
+    "y": 168.1666979789734,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "c6e32fd5.f0b0e8"
+      ]
+    ]
+  },
+  {
+    "id": "9a6aa573.d146f8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 891.5000152587891,
+    "y": 298.16665744781494,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "3a308602.317a3a",
+        "7cd5cf0f.95b3f",
+        "45a9c65b.98f57",
+        "4bd8b08b.c1b738",
+        "9a98ee2f.fae35",
+        "dcb54754.c1fae",
+        "5c71ff90.d2893",
+        "8d7e8ee4.f68c68",
+        "6c08b0b1.cee048",
+        "e9f73529.8b85b",
+        "c3f8c7a7.7f35b",
+        "d4c4bfc9.13974",
+        "91da961a.6a0548",
+        "a53aefb0.e64608"
+      ]
+    ]
+  },
+  {
+    "id": "b85e62e3.2a64b",
+    "type": "execute",
+    "name": "checkRequiredL2Parameters",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"`$validate.dci-connects.name`\" value=\"\"/>\n<parameter name=\"`$validate.dci-connects.site1_id`\" value=\"\"/>\n<parameter name=\"`$validate.dci-connects.site2_id`\" value=\"\"/>\n<parameter name=\"`$validate.dci-connects.site1_networkName`\" value=\"\"/>\n<parameter name=\"`$validate.dci-connects.site2_networkName`\" value=\"\"/>\n<parameter name=\"`$validate.dci-connects.site1_importRT1`\" value=\"\"/>\n<parameter name=\"`$validate.dci-connects.site2_importRT1`\" value=\"\"/>\n<parameter name=\"`$validate.dci-connects.site1_exportRT1`\" value=\"\"/>\n<parameter name=\"`$validate.dci-connects.site2_exportRT1`\" value=\"\"/>\n<parameter name=\"`$validate.dci-connects.site1_vni`\" value=\"\"/>\n<parameter name=\"`$validate.dci-connects.site2_vni`\" value=\"\"/>\n<parameter name=\"`$validate.dci-connects.tunnelType`\" value=\"\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 705.1667709350586,
+    "y": 435.6666667461395,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "df5ee9c0.82be5",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 97.5,
+    "y": 80.99998474121094,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "75544d6c.5343cc"
+      ]
+    ]
+  },
+  {
+    "id": "75544d6c.5343cc",
+    "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": 403.78570556640625,
+    "y": 90.23806762695312,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "b5a29630.ea65"
+      ]
+    ]
+  },
+  {
+    "id": "b5a29630.ea65",
+    "type": "method",
+    "name": "method validate-overlay-network-input-parameters",
+    "xml": "<method rpc='validate-overlay-network-input-parameters' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 266.41668701171875,
+    "y": 169.25299835205078,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "9f219372.913768"
+      ]
+    ]
+  },
+  {
+    "id": "f8089d03.596d98",
+    "type": "execute",
+    "name": "checkAdditionalL3Parameters",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"`$network-topology-operation-input.network-request-input.network-input-parameters.site1_routerId`\" value=\"\"/>\n<parameter name=\"`$network-topology-operation-input.network-request-input.network-input-parameters.site2_routerId`\" value=\"\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 845.5000228881836,
+    "y": 530.9999694824219,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "17ab0223.d06dfe",
+    "type": "switchNode",
+    "name": "switch value",
+    "xml": "<switch test=\"`$validate.dci-connects.tunnelType`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 444.50000762939453,
+    "y": 593.9999351501465,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "9fd00c16.5964d8",
+        "7a55ea17.14f894",
+        "cf1a5339.585298"
+      ]
+    ]
+  },
+  {
+    "id": "9fd00c16.5964d8",
+    "type": "outcome",
+    "name": "L3-DCI",
+    "xml": "<outcome value='L3-DCI'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 624.8333435058594,
+    "y": 529.99977684021,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "f8089d03.596d98"
+      ]
+    ]
+  },
+  {
+    "id": "7a55ea17.14f894",
+    "type": "outcome",
+    "name": "L2-DCI",
+    "xml": "<outcome value='L2-DCI'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 622.8332290649414,
+    "y": 602.9997224807739,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "cf1a5339.585298",
+    "type": "outcome",
+    "name": "other",
+    "xml": "<outcome value='other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 620.833345413208,
+    "y": 684.6664152145386,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "63752135.dc4c5"
+      ]
+    ]
+  },
+  {
+    "id": "63752135.dc4c5",
+    "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": 834.2618675231934,
+    "y": 684.6664419174194,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "3a308602.317a3a",
+    "type": "switchNode",
+    "name": "switch site1_id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1178.500259399414,
+    "y": 184.16679191589355,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "31a93e6d.2e7752"
+      ]
+    ]
+  },
+  {
+    "id": "7cd5cf0f.95b3f",
+    "type": "switchNode",
+    "name": "switch site1_importRT1",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_importRT1'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1180.1448783874512,
+    "y": 592.2989673614502,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "2cd0c93b.b6480e"
+      ]
+    ]
+  },
+  {
+    "id": "45a9c65b.98f57",
+    "type": "switchNode",
+    "name": "switch site1_exportRT1",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_exportRT1'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1175.067985534668,
+    "y": 728.9144258499146,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "8fb3fb93.820628"
+      ]
+    ]
+  },
+  {
+    "id": "4bd8b08b.c1b738",
+    "type": "switchNode",
+    "name": "switch site1_vni",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_vni'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1147.3758239746094,
+    "y": 847.9145526885986,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "df9c18d3.30517"
+      ]
+    ]
+  },
+  {
+    "id": "31a93e6d.2e7752",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1393.500259399414,
+    "y": 183.16679191589355,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "d34f2601.68068"
+      ]
+    ]
+  },
+  {
+    "id": "2cd0c93b.b6480e",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1382.1448783874512,
+    "y": 591.2989673614502,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "93ca887a.7521e"
+      ]
+    ]
+  },
+  {
+    "id": "8fb3fb93.820628",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1371.067985534668,
+    "y": 725.9144258499146,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "3466521c.eba27e"
+      ]
+    ]
+  },
+  {
+    "id": "df9c18d3.30517",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1346.375820159912,
+    "y": 847.914571762085,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "db8cdcad.df6ab"
+      ]
+    ]
+  },
+  {
+    "id": "9a98ee2f.fae35",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1175.6668243408203,
+    "y": 125.33342361450195,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "256e4cfe.021fac"
+      ]
+    ]
+  },
+  {
+    "id": "256e4cfe.021fac",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1395.3594131469727,
+    "y": 124.56419563293457,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "7c5aad0d.29a82c"
+      ]
+    ]
+  },
+  {
+    "id": "83313a72.423f8",
+    "type": "set",
+    "name": "set name",
+    "xml": "<set>\n<parameter name='validate.dci-connects.name' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1783.667137145996,
+    "y": 125.41035079956055,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "dcb54754.c1fae",
+    "type": "switchNode",
+    "name": "switch site1_networkName",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_networkName'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1211.217830657959,
+    "y": 313.3334674835205,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "a3f3c6f5.a3b188"
+      ]
+    ]
+  },
+  {
+    "id": "a3f3c6f5.a3b188",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1409.217830657959,
+    "y": 313.3334674835205,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "18eaf51a.eed2f3"
+      ]
+    ]
+  },
+  {
+    "id": "5dc2f27e.565d54",
+    "type": "switchNode",
+    "name": "switch value",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2039.55126953125,
+    "y": 557.3846913799644,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "30db59f5.f579be"
+      ]
+    ]
+  },
+  {
+    "id": "30db59f5.f579be",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2206.5514755249023,
+    "y": 557.0110122188926,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "1746319b.debb2e"
+      ]
+    ]
+  },
+  {
+    "id": "1746319b.debb2e",
+    "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": 2374.364845275879,
+    "y": 557.0109936222434,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "bf0183c0.c3f948",
+    "type": "set",
+    "name": "set site1_id",
+    "xml": "<set>\n<parameter name='validate.dci-connects.site1_id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1792.4232940673828,
+    "y": 182.6922788619995,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "5c71ff90.d2893",
+    "type": "switchNode",
+    "name": "switch site2_id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1177.1154899597168,
+    "y": 246.692289352417,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "7d482c7a.518ac4"
+      ]
+    ]
+  },
+  {
+    "id": "7d482c7a.518ac4",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1392.1154899597168,
+    "y": 245.692289352417,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "ebf7b268.e89158"
+      ]
+    ]
+  },
+  {
+    "id": "57f3029c.b145e4",
+    "type": "set",
+    "name": "set site2_id",
+    "xml": "<set>\n<parameter name='validate.dci-connects.site2_id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1784.1155433654785,
+    "y": 244.14089107513428,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "8f2baefa.0b0398",
+    "type": "set",
+    "name": "set site1_networkName",
+    "xml": "<set>\n<parameter name='validate.dci-connects.site1_networkName' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1815.2951431274414,
+    "y": 317.0769100189209,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "8d7e8ee4.f68c68",
+    "type": "switchNode",
+    "name": "switch site2_networkName",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_networkName'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1202.7564010620117,
+    "y": 378.153790473938,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "8aa85325.daef28"
+      ]
+    ]
+  },
+  {
+    "id": "8aa85325.daef28",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1400.7564010620117,
+    "y": 378.153790473938,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "e0ee66d1.d362e8"
+      ]
+    ]
+  },
+  {
+    "id": "8af7e0d6.1420c8",
+    "type": "set",
+    "name": "set site1_networkName",
+    "xml": "<set>\n<parameter name='validate.dci-connects.site2_networkName' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1809.141014099121,
+    "y": 378.8202781677246,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "6c08b0b1.cee048",
+    "type": "switchNode",
+    "name": "switch site1_routerId",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_routerId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1179.628028869629,
+    "y": 443.3978147506714,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "9ed44258.9c6b6"
+      ]
+    ]
+  },
+  {
+    "id": "9ed44258.9c6b6",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1384.628028869629,
+    "y": 442.3978147506714,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "80d0f7bd.e811b8"
+      ]
+    ]
+  },
+  {
+    "id": "99f4b465.d49818",
+    "type": "set",
+    "name": "set site1_routerId",
+    "xml": "<set>\n<parameter name='validate.dci-connects.site1_routerId' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1788.781852722168,
+    "y": 441.2564105987549,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "a53aefb0.e64608",
+    "type": "switchNode",
+    "name": "switch site2_routerId",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_routerId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1177.1668319702148,
+    "y": 514.7949352264404,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "66d18baa.c968bc"
+      ]
+    ]
+  },
+  {
+    "id": "66d18baa.c968bc",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1382.1668319702148,
+    "y": 513.7949352264404,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "380642df.690c06"
+      ]
+    ]
+  },
+  {
+    "id": "b7d41b0c.08bfa8",
+    "type": "set",
+    "name": "set site2_routerId",
+    "xml": "<set>\n<parameter name='validate.dci-connects.site2_routerId' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1810.1674194335938,
+    "y": 514.1921005249023,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "1ca7dab1.a54e05",
+    "type": "set",
+    "name": "set site2_routerId",
+    "xml": "<set>\n<parameter name='validate.dci-connects.site1_importRT1' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1802.0130996704102,
+    "y": 591.410285949707,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "e9f73529.8b85b",
+    "type": "switchNode",
+    "name": "switch site2_importRT1",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_importRT1'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1179.8333358764648,
+    "y": 660.5128269195557,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "a58493be.2ce148"
+      ]
+    ]
+  },
+  {
+    "id": "a58493be.2ce148",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1381.8333358764648,
+    "y": 659.5128269195557,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "a43a1ae.20bc9e8"
+      ]
+    ]
+  },
+  {
+    "id": "1e7c8c00.4966a4",
+    "type": "set",
+    "name": "set site2_importRT1",
+    "xml": "<set>\n<parameter name='validate.dci-connects.site2_importRT1' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1804.0088500976562,
+    "y": 659.6240797042847,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "de34e1a6.830c3",
+    "type": "set",
+    "name": "set site1_exportRT1",
+    "xml": "<set>\n<parameter name='validate.dci-connects.site1_exportRT1' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1786.1411018371582,
+    "y": 721.8463268280029,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "c3f8c7a7.7f35b",
+    "type": "switchNode",
+    "name": "switch site1_exportRT2",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_exportRT2'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1172.1412353515625,
+    "y": 786.7693099975586,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "92633b48.8edfc8"
+      ]
+    ]
+  },
+  {
+    "id": "92633b48.8edfc8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1368.1412353515625,
+    "y": 783.7693099975586,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "e12fce67.94699"
+      ]
+    ]
+  },
+  {
+    "id": "a36a5b8d.4b041",
+    "type": "set",
+    "name": "set site1_exportRT2",
+    "xml": "<set>\n<parameter name='validate.dci-connects.site1_exportRT2' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1781.6761322021484,
+    "y": 779.7011775970459,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "b733fef3.0537f8",
+    "type": "set",
+    "name": "set site1_vni",
+    "xml": "<set>\n<parameter name='validate.dci-connects.site1_vni' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1754.0899047851562,
+    "y": 846.6412315368652,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "d4c4bfc9.13974",
+    "type": "switchNode",
+    "name": "switch site2_vni",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_vni'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1144.8335037231445,
+    "y": 912.3337364196777,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "47be4985.18f7a"
+      ]
+    ]
+  },
+  {
+    "id": "47be4985.18f7a",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1343.8334999084473,
+    "y": 912.3337554931641,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "2db61809.1d037"
+      ]
+    ]
+  },
+  {
+    "id": "1f72f8d2.8122a7",
+    "type": "set",
+    "name": "set site2_vni",
+    "xml": "<set>\n<parameter name='validate.dci-connects.site2_vni' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1748.470832824707,
+    "y": 910.2911982536316,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "91da961a.6a0548",
+    "type": "switchNode",
+    "name": "switch tunnelType",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'tunnelType'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1148.7178955078125,
+    "y": 979.372227191925,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "def5c126.9ef6f8"
+      ]
+    ]
+  },
+  {
+    "id": "def5c126.9ef6f8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1354.7178955078125,
+    "y": 979.372227191925,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "ba2db426.9389f"
+      ]
+    ]
+  },
+  {
+    "id": "3ad5245d.41b07c",
+    "type": "set",
+    "name": "set tunnelType",
+    "xml": "<set>\n<parameter name='prop.dci-connects.tunnelType' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1754.0254669189453,
+    "y": 974.9876976013184,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "cf5014dc.f97bc8",
+    "type": "comment",
+    "name": "TODO: optimize the activate by using parameter assignment here",
+    "info": "",
+    "comments": "",
+    "x": 1041.5000228881836,
+    "y": 59,
+    "z": "351ad0a0.4f274",
+    "wires": []
+  },
+  {
+    "id": "c6e32fd5.f0b0e8",
+    "type": "block",
+    "name": "block validate",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 516.5000152587891,
+    "y": 300.9999895095825,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "9a6aa573.d146f8",
+        "17ab0223.d06dfe"
+      ]
+    ]
+  },
+  {
+    "id": "7c5aad0d.29a82c",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1566.1923294067383,
+    "y": 125.55049514770508,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "83313a72.423f8",
+        "5dc2f27e.565d54"
+      ]
+    ]
+  },
+  {
+    "id": "d34f2601.68068",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1565.422966003418,
+    "y": 183.2427978515625,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "bf0183c0.c3f948",
+        "5dc2f27e.565d54"
+      ]
+    ]
+  },
+  {
+    "id": "ebf7b268.e89158",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1557.7308769226074,
+    "y": 244.78127479553223,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "57f3029c.b145e4",
+        "5dc2f27e.565d54"
+      ]
+    ]
+  },
+  {
+    "id": "18eaf51a.eed2f3",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1556.1923599243164,
+    "y": 314.78126430511475,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "8f2baefa.0b0398",
+        "5dc2f27e.565d54"
+      ]
+    ]
+  },
+  {
+    "id": "e0ee66d1.d362e8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1547.7307968139648,
+    "y": 377.858193397522,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "8af7e0d6.1420c8",
+        "5dc2f27e.565d54"
+      ]
+    ]
+  },
+  {
+    "id": "80d0f7bd.e811b8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1537.7305221557617,
+    "y": 442.1658983230591,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "99f4b465.d49818",
+        "5dc2f27e.565d54"
+      ]
+    ]
+  },
+  {
+    "id": "380642df.690c06",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1528.500114440918,
+    "y": 516.3197727203369,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "b7d41b0c.08bfa8",
+        "5dc2f27e.565d54"
+      ]
+    ]
+  },
+  {
+    "id": "93ca887a.7521e",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1529.2691841125488,
+    "y": 592.8582248687744,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "1ca7dab1.a54e05",
+        "5dc2f27e.565d54"
+      ]
+    ]
+  },
+  {
+    "id": "a43a1ae.20bc9e8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1533.884635925293,
+    "y": 660.5506038665771,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "1e7c8c00.4966a4",
+        "5dc2f27e.565d54"
+      ]
+    ]
+  },
+  {
+    "id": "3466521c.eba27e",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1523.884593963623,
+    "y": 725.166033744812,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "de34e1a6.830c3",
+        "5dc2f27e.565d54"
+      ]
+    ]
+  },
+  {
+    "id": "e12fce67.94699",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1525.4232482910156,
+    "y": 783.6275215148926,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "a36a5b8d.4b041",
+        "5dc2f27e.565d54"
+      ]
+    ]
+  },
+  {
+    "id": "db8cdcad.df6ab",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1515.423210144043,
+    "y": 852.8583087921143,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "b733fef3.0537f8",
+        "5dc2f27e.565d54"
+      ]
+    ]
+  },
+  {
+    "id": "2db61809.1d037",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1508.499855041504,
+    "y": 918.243043422699,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "1f72f8d2.8122a7",
+        "5dc2f27e.565d54"
+      ]
+    ]
+  },
+  {
+    "id": "ba2db426.9389f",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1515.4232559204102,
+    "y": 978.2429823875427,
+    "z": "351ad0a0.4f274",
+    "wires": [
+      [
+        "3ad5245d.41b07c",
+        "5dc2f27e.565d54"
+      ]
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-pnf-input.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-pnf-input.json
new file mode 100644
index 0000000..1305467
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-pnf-input.json
@@ -0,0 +1,573 @@
+[

+    {

+        "id": "94367b34.4993c8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 244.44442749023438,

+        "y": 363.3055624961853,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "e96f0aba.6a2158",

+                "145655c7.5c421a",

+                "740fde80.5f9e8",

+                "a75da30.d5ab06",

+                "6154264e.c73678",

+                "4710ed3d.659744"

+            ]

+        ]

+    },

+    {

+        "id": "e96f0aba.6a2158",

+        "type": "switchNode",

+        "name": "switch svc-request-id",

+        "xml": "<switch test='`$pnf-topology-operation-input.sdnc-request-header.svc-request-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 502.20633697509766,

+        "y": 321.13589811325073,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "b12a28ac.b7b9b8"

+            ]

+        ]

+    },

+    {

+        "id": "b12a28ac.b7b9b8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 727.9206314086914,

+        "y": 321.135901927948,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "8cc94a69.eb44f8"

+            ]

+        ]

+    },

+    {

+        "id": "8cc94a69.eb44f8",

+        "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": 879.3491973876953,

+        "y": 321.13590002059937,

+        "z": "8b598434.ddbeb8",

+        "wires": []

+    },

+    {

+        "id": "145655c7.5c421a",

+        "type": "switchNode",

+        "name": "switch svc-action",

+        "xml": "<switch test='`$pnf-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 490.7777001517161,

+        "y": 279.7073296819415,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "35e01edd.5783a2"

+            ]

+        ]

+    },

+    {

+        "id": "35e01edd.5783a2",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 726.4920518057688,

+        "y": 278.27872746331354,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "6beabba6.32f4f4"

+            ]

+        ]

+    },

+    {

+        "id": "6beabba6.32f4f4",

+        "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-action is a required input\" />\n",

+        "comments": "",

+        "x": 876.492025102888,

+        "y": 278.2787370000567,

+        "z": "8b598434.ddbeb8",

+        "wires": []

+    },

+    {

+        "id": "740fde80.5f9e8",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$pnf-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 500.7777535574778,

+        "y": 363.9930447850909,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "ef526c4a.39c59"

+            ]

+        ]

+    },

+    {

+        "id": "ef526c4a.39c59",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 727.9206270490376,

+        "y": 363.99305568422596,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "c2c067b2.6d5ab8"

+            ]

+        ]

+    },

+    {

+        "id": "c2c067b2.6d5ab8",

+        "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 a required input\" />\n",

+        "comments": "",

+        "x": 879.3491930280416,

+        "y": 363.99305377687733,

+        "z": "8b598434.ddbeb8",

+        "wires": []

+    },

+    {

+        "id": "79e4afb1.99cc8",

+        "type": "switchNode",

+        "name": "switch model-customization-id",

+        "xml": "<switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1119.242275238037,

+        "y": 511.4218182563782,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "e37ed67.814bf28"

+            ]

+        ]

+    },

+    {

+        "id": "e37ed67.814bf28",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1324.242275238037,

+        "y": 511.4218010902405,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "d757cb77.2c7958"

+            ]

+        ]

+    },

+    {

+        "id": "d757cb77.2c7958",

+        "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=\"pnf-details.onap-model-information.model-customization-uuid is a required input\" />\n",

+        "comments": "",

+        "x": 1475.670841217041,

+        "y": 511.42179918289185,

+        "z": "8b598434.ddbeb8",

+        "wires": []

+    },

+    {

+        "id": "a14b5bac.e97828",

+        "type": "switchNode",

+        "name": "switch tenant",

+        "xml": "<switch test='`$pnf-topology-operation-input.pnf-request-input.tenant`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1065.0993537902832,

+        "y": 552.8503289222717,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "9f4a40d4.27fdf"

+            ]

+        ]

+    },

+    {

+        "id": "9f4a40d4.27fdf",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1322.8136711120605,

+        "y": 552.8503632545471,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "21e1ea3d.d3d876"

+            ]

+        ]

+    },

+    {

+        "id": "21e1ea3d.d3d876",

+        "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=\"pnf-request-input.tenant is a required input\" />\n",

+        "comments": "",

+        "x": 1474.2422370910645,

+        "y": 552.8503613471985,

+        "z": "8b598434.ddbeb8",

+        "wires": []

+    },

+    {

+        "id": "c290417a.999bd",

+        "type": "comment",

+        "name": "Validation of required fields",

+        "info": "",

+        "comments": "",

+        "x": 650.7777099609375,

+        "y": 235.42161226272583,

+        "z": "8b598434.ddbeb8",

+        "wires": []

+    },

+    {

+        "id": "a75da30.d5ab06",

+        "type": "switchNode",

+        "name": "switch svc-action",

+        "xml": "<switch test='`$pnf-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 484.7658462524414,

+        "y": 553.1003041267395,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "ade91738.c2dee8"

+            ]

+        ]

+    },

+    {

+        "id": "ade91738.c2dee8",

+        "type": "outcome",

+        "name": "assign",

+        "xml": "<outcome value='assign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 661.8491668701172,

+        "y": 552.6836438179016,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "9de99c30.2439d"

+            ]

+        ]

+    },

+    {

+        "id": "9de99c30.2439d",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 858.5157775878906,

+        "y": 552.6836438179016,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "79e4afb1.99cc8",

+                "a14b5bac.e97828",

+                "5a47ef2e.17f48"

+            ]

+        ]

+    },

+    {

+        "id": "621027e3.a05c68",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 163.19443729945579,

+        "y": 107.9692120552063,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "fd592892.32a8c8"

+            ]

+        ]

+    },

+    {

+        "id": "fd592892.32a8c8",

+        "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": 276.48014286586204,

+        "y": 148.20732355117798,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "80133c43.3b152"

+            ]

+        ]

+    },

+    {

+        "id": "80133c43.3b152",

+        "type": "method",

+        "name": "method validate-pnf-input",

+        "xml": "<method rpc='validate-pnf-input' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 211.87306431361594,

+        "y": 189.21920824050903,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "94367b34.4993c8"

+            ]

+        ]

+    },

+    {

+        "id": "f8dbb90e.a422b8",

+        "type": "comment",

+        "name": "validate-pnf-input",

+        "info": "",

+        "comments": "",

+        "x": 557.5392935616628,

+        "y": 55.55555582046509,

+        "z": "8b598434.ddbeb8",

+        "wires": []

+    },

+    {

+        "id": "6154264e.c73678",

+        "type": "switchNode",

+        "name": "switch service-instance-id",

+        "xml": "<switch test='`$pnf-topology-operation-input.service-information.service-instance-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 513.8015845162527,

+        "y": 408.05557107925415,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "2ce54a7d.5835b6"

+            ]

+        ]

+    },

+    {

+        "id": "2ce54a7d.5835b6",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 726.2301657540456,

+        "y": 408.0555672645569,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "53191b49.840e74"

+            ]

+        ]

+    },

+    {

+        "id": "53191b49.840e74",

+        "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-information.service-instance-id is a required input\" />\n",

+        "comments": "",

+        "x": 877.6587317330495,

+        "y": 408.05556535720825,

+        "z": "8b598434.ddbeb8",

+        "wires": []

+    },

+    {

+        "id": "4710ed3d.659744",

+        "type": "switchNode",

+        "name": "switch pnf-id",

+        "xml": "<switch test='`$pnf-topology-operation-input.pnf-details.pnf-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 471.3015937805176,

+        "y": 451.555561542511,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "a413f663.792248"

+            ]

+        ]

+    },

+    {

+        "id": "a413f663.792248",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 726.5873031616211,

+        "y": 450.12699365615845,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "9bbe7c79.3b76c"

+            ]

+        ]

+    },

+    {

+        "id": "9bbe7c79.3b76c",

+        "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=\"pnf-details.pnf-id is a required input\" />\n",

+        "comments": "",

+        "x": 878.015869140625,

+        "y": 450.1269917488098,

+        "z": "8b598434.ddbeb8",

+        "wires": []

+    },

+    {

+        "id": "5a47ef2e.17f48",

+        "type": "switchNode",

+        "name": "switch aic-cloud-region",

+        "xml": "<switch test='`$pnf-topology-operation-input.pnf-request-input.aic-cloud-region`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1094.444435119629,

+        "y": 595.1269860267639,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "38bfd2ff.c329ae"

+            ]

+        ]

+    },

+    {

+        "id": "38bfd2ff.c329ae",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1321.1587524414062,

+        "y": 595.1270203590393,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "be8a7d3e.b1956"

+            ]

+        ]

+    },

+    {

+        "id": "be8a7d3e.b1956",

+        "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=\"pnf-request-input.aic-cloud-region is a required input\" />\n",

+        "comments": "",

+        "x": 1472.5873184204102,

+        "y": 595.1270184516907,

+        "z": "8b598434.ddbeb8",

+        "wires": []

+    },

+    {

+        "id": "cbe7b870.eb2778",

+        "type": "switchNode",

+        "name": "switch model-customization-id",

+        "xml": "<switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1089.9205780029297,

+        "y": 710.317467212677,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "a468752f.474808"

+            ]

+        ]

+    },

+    {

+        "id": "a468752f.474808",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1294.9205780029297,

+        "y": 710.3174500465393,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "b9bc06be.f3a6e8"

+            ]

+        ]

+    },

+    {

+        "id": "b9bc06be.f3a6e8",

+        "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=\"pnf-details.onap-model-information.model-customization-uuid is a required input\" />\n",

+        "comments": "",

+        "x": 1446.3491439819336,

+        "y": 710.3174481391907,

+        "z": "8b598434.ddbeb8",

+        "wires": []

+    },

+    {

+        "id": "23854a15.854736",

+        "type": "outcome",

+        "name": "changeassign",

+        "xml": "<outcome value='changeassign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 679.8607978820801,

+        "y": 710.2460265159607,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "9784e04d.64388"

+            ]

+        ]

+    },

+    {

+        "id": "9784e04d.64388",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 859.8607864379883,

+        "y": 710.2459931373596,

+        "z": "8b598434.ddbeb8",

+        "wires": [

+            [

+                "cbe7b870.eb2778"

+            ]

+        ]

+    },

+    {

+        "id": "cc3011b2.e59d9",

+        "type": "comment",

+        "name": "model-customization-uuid validation moved to changeassign DG",

+        "info": "",

+        "comments": "",

+        "x": 739.4444274902344,

+        "y": 675.5555663108826,

+        "z": "8b598434.ddbeb8",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-security-zone-input.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-security-zone-input.json
new file mode 100755
index 0000000..ea63685
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-security-zone-input.json
@@ -0,0 +1,1391 @@
+[
+    {
+        "id": "d8f6b3bb.4c275",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 235.55557250976562,
+        "y": 315.5555419921875,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "a018c9a4.117f98"
+            ]
+        ]
+    },
+    {
+        "id": "a018c9a4.117f98",
+        "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": 391.8412780761719,
+        "y": 389.7936553955078,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "3f03d10e.2ffb5e"
+            ]
+        ]
+    },
+    {
+        "id": "3f03d10e.2ffb5e",
+        "type": "method",
+        "name": "validate-security-zone-input",
+        "xml": "<method rpc='validate-security-zone-input' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 391.9841842651367,
+        "y": 453.22223949432373,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "b2b60df0.c53fb"
+            ]
+        ]
+    },
+    {
+        "id": "b2b60df0.c53fb",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 405.3056182861328,
+        "y": 733.9990367889404,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "e18f70ed.64e6e",
+                "c55d0b64.80ebf8",
+                "798d06aa.649188",
+                "9a6b6b65.fb46e8",
+                "e80fb296.5b5af",
+                "36ba5c7b.d8e654"
+            ]
+        ]
+    },
+    {
+        "id": "e18f70ed.64e6e",
+        "type": "switchNode",
+        "name": "switch svc-request-id",
+        "xml": "<switch test='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 740.3651428222656,
+        "y": 218.65082263946533,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "991652a9.25d26"
+            ]
+        ]
+    },
+    {
+        "id": "991652a9.25d26",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 970.0794279915945,
+        "y": 216.65081936972456,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "aa2be7a3.2f0818"
+            ]
+        ]
+    },
+    {
+        "id": "aa2be7a3.2f0818",
+        "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": 1121.5079345703125,
+        "y": 213.31748580932617,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "c55d0b64.80ebf8",
+        "type": "switchNode",
+        "name": "switch svc-action",
+        "xml": "<switch test='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 732.9364929199219,
+        "y": 172.22222137451172,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "86d6351c.c6dd08"
+            ]
+        ]
+    },
+    {
+        "id": "86d6351c.c6dd08",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 968.6508483886719,
+        "y": 173.79364490509033,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "b2821e24.be3db"
+            ]
+        ]
+    },
+    {
+        "id": "b2821e24.be3db",
+        "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-action is a required input\" />\n",
+        "comments": "",
+        "x": 1118.650821685791,
+        "y": 173.7936544418335,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "798d06aa.649188",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$security-zone-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 742.9365386962891,
+        "y": 267.5079708099365,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "cbf1edf6.578e5",
+                "3a2f6108.3a98ce",
+                "d7c95278.f68aa",
+                "c59cbe0b.ae17b"
+            ]
+        ]
+    },
+    {
+        "id": "cbf1edf6.578e5",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 977.9841423034668,
+        "y": 331.3651924133301,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "7c061461.ed6d7c"
+            ]
+        ]
+    },
+    {
+        "id": "7c061461.ed6d7c",
+        "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 a required input\" />\n",
+        "comments": "",
+        "x": 1149.412582397461,
+        "y": 331.36519145965576,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "4bfff6bd.144358",
+        "type": "comment",
+        "name": "validate-security-zone-input - CHANGELOG",
+        "info": "3/22: Initial release 1.0.0",
+        "comments": "",
+        "x": 248.55557250976562,
+        "y": 219.5555419921875,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "9a6b6b65.fb46e8",
+        "type": "switchNode",
+        "name": "switch svc-action",
+        "xml": "<switch test='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 645.2222328186035,
+        "y": 739.5555782318115,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "f61c14ca.d17008",
+                "c832b3ea.1cb26",
+                "ce191e6f.c63c",
+                "83dfb84.6c9ec48",
+                "f0422740.d800b8",
+                "f1ddac97.f2155"
+            ]
+        ]
+    },
+    {
+        "id": "f61c14ca.d17008",
+        "type": "other",
+        "name": "assign",
+        "xml": "<outcome value='assign'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 906.2699356079102,
+        "y": 575.1270084381104,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "7ceecd60.009724"
+            ]
+        ]
+    },
+    {
+        "id": "c832b3ea.1cb26",
+        "type": "other",
+        "name": "activate",
+        "xml": "<outcome value='activate'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 926.5555419921875,
+        "y": 762.5555725097656,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "72bc9a53.a4a1c4"
+            ]
+        ]
+    },
+    {
+        "id": "ce191e6f.c63c",
+        "type": "other",
+        "name": "deactivate",
+        "xml": "<outcome value='deactivate'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 933.5555419921875,
+        "y": 852.5555725097656,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "ed55d557.297dd8"
+            ]
+        ]
+    },
+    {
+        "id": "7ceecd60.009724",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1063.5555725097656,
+        "y": 577.8889179229736,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "ba167228.b3ffe"
+            ]
+        ]
+    },
+    {
+        "id": "ba167228.b3ffe",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$security-zone-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1271.8889541625977,
+        "y": 577.8889236450195,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "e9519759.0bd708",
+                "b5904d01.67034"
+            ]
+        ]
+    },
+    {
+        "id": "e9519759.0bd708",
+        "type": "other",
+        "name": "CreateSecurityZoneInstance",
+        "xml": "<outcome value='CreateSecurityZoneInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1618.0793151855469,
+        "y": 505.0317816734314,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "ec0a16a2.d398b8"
+            ]
+        ]
+    },
+    {
+        "id": "b5904d01.67034",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1557.5555534362793,
+        "y": 571.8889350891113,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "6ff9efab.1acb8"
+            ]
+        ]
+    },
+    {
+        "id": "6ff9efab.1acb8",
+        "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 a required to be CreateSecurityZoneInstance for svc-action=assign\" />\n",
+        "comments": "",
+        "x": 1704.8888969421387,
+        "y": 573.5556974411011,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "72bc9a53.a4a1c4",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1100.5555419921875,
+        "y": 762.5555725097656,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "f8cd13e2.ec99a"
+            ]
+        ]
+    },
+    {
+        "id": "f8cd13e2.ec99a",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$security-zone-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1317.5555419921875,
+        "y": 762.5555725097656,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "29c24ed5.8c97a2",
+                "12034d41.71a063"
+            ]
+        ]
+    },
+    {
+        "id": "29c24ed5.8c97a2",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1541.5555419921875,
+        "y": 803.5555725097656,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "c4fec971.125ad8"
+            ]
+        ]
+    },
+    {
+        "id": "c4fec971.125ad8",
+        "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 a required to be CreateSecurityZoneInstance for svc-action=activate\" />\n",
+        "comments": "",
+        "x": 1710.5555419921875,
+        "y": 803.5555725097656,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "ed55d557.297dd8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1115.5555419921875,
+        "y": 851.5555725097656,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "55f7035.720defc"
+            ]
+        ]
+    },
+    {
+        "id": "55f7035.720defc",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$security-zone-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1332.5555419921875,
+        "y": 851.5555725097656,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "94748701.276ad8",
+                "94eb145d.dbec38"
+            ]
+        ]
+    },
+    {
+        "id": "94748701.276ad8",
+        "type": "other",
+        "name": "DeleteSecurityZoneInstance",
+        "xml": "<outcome value='DeleteSecurityZoneInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1615.2220764160156,
+        "y": 850.8889589309692,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "3e9b45b4.1ff76a"
+            ]
+        ]
+    },
+    {
+        "id": "94eb145d.dbec38",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1556.5555419921875,
+        "y": 892.5555725097656,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "610782ce.0e012c"
+            ]
+        ]
+    },
+    {
+        "id": "610782ce.0e012c",
+        "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 a required to be DeleteSecurityZoneInstance for svc-action=deactivate\" />\n",
+        "comments": "",
+        "x": 1725.5555419921875,
+        "y": 892.5555725097656,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "83dfb84.6c9ec48",
+        "type": "other",
+        "name": "unassign",
+        "xml": "<outcome value='unassign'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 914.5554046630859,
+        "y": 1019.8888998031616,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "97760e1d.874c1"
+            ]
+        ]
+    },
+    {
+        "id": "97760e1d.874c1",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1096.555435180664,
+        "y": 1015.8889226913452,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "d856938c.c7fcd"
+            ]
+        ]
+    },
+    {
+        "id": "d856938c.c7fcd",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$security-zone-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1313.555435180664,
+        "y": 1015.8889226913452,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "8ba8ac96.939ac",
+                "ac3bb1cc.3a778"
+            ]
+        ]
+    },
+    {
+        "id": "8ba8ac96.939ac",
+        "type": "other",
+        "name": "DeleteSecurityZoneInstance",
+        "xml": "<outcome value='DeleteSecurityZoneInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1594.555305480957,
+        "y": 1016.8889398574829,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "1b3b1eab.cd8bc1"
+            ]
+        ]
+    },
+    {
+        "id": "ac3bb1cc.3a778",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1537.555435180664,
+        "y": 1056.8889226913452,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "cefb5d61.5cfae"
+            ]
+        ]
+    },
+    {
+        "id": "cefb5d61.5cfae",
+        "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 a required to be DeleteSecurityZoneInstance for svc-action=unassign\" />\n",
+        "comments": "",
+        "x": 1708.2221603393555,
+        "y": 1063.5555746555328,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "ec0a16a2.d398b8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1864.0793266296387,
+        "y": 504.0317687988281,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "8020e36.a7e482",
+                "6c805fc8.58afb",
+                "a182697b.c45e68",
+                "c43eb58f.69d438",
+                "474a1931.cb3468",
+                "fb13eb4d.718288",
+                "beb405ab.4654d8",
+                "9bbcec2b.09769"
+            ]
+        ]
+    },
+    {
+        "id": "619f5f72.2ac62",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1823.5555419921875,
+        "y": 763.5555725097656,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "c43eb58f.69d438",
+                "fb13eb4d.718288"
+            ]
+        ]
+    },
+    {
+        "id": "3e9b45b4.1ff76a",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1869.5555419921875,
+        "y": 853.5555725097656,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "c43eb58f.69d438",
+                "fb13eb4d.718288"
+            ]
+        ]
+    },
+    {
+        "id": "1b3b1eab.cd8bc1",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1853.555435180664,
+        "y": 1017.8889226913452,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "c43eb58f.69d438"
+            ]
+        ]
+    },
+    {
+        "id": "8020e36.a7e482",
+        "type": "switchNode",
+        "name": "switch vlan-tag",
+        "xml": "<switch test='`$security-zone-topology-operation-input.security-zone-request-input.vlan-tag`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2200.174575805664,
+        "y": 377.60317516326904,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "219b4575.07624a"
+            ]
+        ]
+    },
+    {
+        "id": "219b4575.07624a",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2366.1744232177734,
+        "y": 377.4127187728882,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "8270f4ae.45f928"
+            ]
+        ]
+    },
+    {
+        "id": "8270f4ae.45f928",
+        "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=\"security-zone-topology-operation-input.security-zone-request-input.vlan-tag is a required input\" />\n",
+        "comments": "",
+        "x": 2522.365135192871,
+        "y": 377.41267108917236,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "a182697b.c45e68",
+        "type": "switchNode",
+        "name": "switch onap-model-information.model-customization-uuid",
+        "xml": "<switch test='`$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2334.4129180908203,
+        "y": 300.5556230545044,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "d0a4dd20.c4866"
+            ]
+        ]
+    },
+    {
+        "id": "d0a4dd20.c4866",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2628.412826538086,
+        "y": 301.5555639266968,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "c36cc0f.8c7124"
+            ]
+        ]
+    },
+    {
+        "id": "c36cc0f.8c7124",
+        "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=\"security-zone-information.onap-model-information.model-customization-uuid is a required input\" />\n",
+        "comments": "",
+        "x": 2775.841293334961,
+        "y": 301.5555639266968,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "e80fb296.5b5af",
+        "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": 671.9126892089844,
+        "y": 1161.0555114746094,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "6c805fc8.58afb",
+        "type": "get-resource",
+        "name": "get-resource AR_MODEL",
+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from ALLOTTED_RESOURCE_MODEL WHERE customization_uuid = $security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid'\n  pfx='ar-model'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2236.6076889038086,
+        "y": 522.0873641967773,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "dea250d4.a547c",
+                "a0f786da.b959f8"
+            ]
+        ]
+    },
+    {
+        "id": "d0b05c60.619cc",
+        "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=\"`'No alloted resource model found for model customization UUID ' + $security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`\" />\n",
+        "comments": "",
+        "x": 2693.690872192383,
+        "y": 502.75396156311035,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "dea250d4.a547c",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2494.9409523010254,
+        "y": 498.111177444458,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "d0b05c60.619cc"
+            ]
+        ]
+    },
+    {
+        "id": "a0f786da.b959f8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2488.6909523010254,
+        "y": 530.611177444458,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "d0b05c60.619cc"
+            ]
+        ]
+    },
+    {
+        "id": "3a2f6108.3a98ce",
+        "type": "other",
+        "name": "CreateSecurityZoneInstance",
+        "xml": "<outcome value='CreateSecurityZoneInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1038.6032104492188,
+        "y": 253.17459869384766,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "93d6c176.7fe5a"
+            ]
+        ]
+    },
+    {
+        "id": "d7c95278.f68aa",
+        "type": "other",
+        "name": "DeleteSecurityZoneInstance",
+        "xml": "<outcome value='DeleteSecurityZoneInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1038.8888549804688,
+        "y": 290.6032180786133,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "93d6c176.7fe5a"
+            ]
+        ]
+    },
+    {
+        "id": "c59cbe0b.ae17b",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 981.7936515808105,
+        "y": 371.74609756469727,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "bef0c21f.d802e"
+            ]
+        ]
+    },
+    {
+        "id": "bef0c21f.d802e",
+        "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=\"Invalid request-information.request-action \" />\n",
+        "comments": "",
+        "x": 1153.2220573425293,
+        "y": 372.7461128234863,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "36ba5c7b.d8e654",
+        "type": "switchNode",
+        "name": "switch service-instance-id",
+        "xml": "<switch test='`$security-zone-topology-operation-input.service-information.service-instance-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 739.984130859375,
+        "y": 447.41273498535156,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "d53e7631.c0fea8"
+            ]
+        ]
+    },
+    {
+        "id": "d53e7631.c0fea8",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 956.4127197265625,
+        "y": 448.41273498535156,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "2579090b.0e1e76"
+            ]
+        ]
+    },
+    {
+        "id": "2579090b.0e1e76",
+        "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-information.service-instance-id is a required input\" />\n",
+        "comments": "",
+        "x": 1114.8412475585938,
+        "y": 447.41273498535156,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "f0422740.d800b8",
+        "type": "other",
+        "name": "create",
+        "xml": "<outcome value='create'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 913.3332862854004,
+        "y": 660.4629507064819,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "46b3f2f8.0ea61c"
+            ]
+        ]
+    },
+    {
+        "id": "46b3f2f8.0ea61c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1073.9522857666016,
+        "y": 659.8915205001831,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "52a155fb.f8541c"
+            ]
+        ]
+    },
+    {
+        "id": "52a155fb.f8541c",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$security-zone-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1293.9522857666016,
+        "y": 659.8915205001831,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "533f0552.201dac",
+                "7340b4fd.0ee38c"
+            ]
+        ]
+    },
+    {
+        "id": "533f0552.201dac",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1551.285779953003,
+        "y": 663.8915729522705,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "47df574e.a59c98"
+            ]
+        ]
+    },
+    {
+        "id": "47df574e.a59c98",
+        "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 a required to be CreateSecurityZoneInstance for svc-action=create\" />\n",
+        "comments": "",
+        "x": 1716.9522857666016,
+        "y": 663.8915405273438,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "7340b4fd.0ee38c",
+        "type": "other",
+        "name": "CreateSecurityZoneInstance",
+        "xml": "<outcome value='CreateSecurityZoneInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1623.3332061767578,
+        "y": 628.7962646484375,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "e6d64f7d.65b1e"
+            ]
+        ]
+    },
+    {
+        "id": "e6d64f7d.65b1e",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1859.3332061767578,
+        "y": 627.7962646484375,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "c43eb58f.69d438",
+                "fb13eb4d.718288"
+            ]
+        ]
+    },
+    {
+        "id": "12034d41.71a063",
+        "type": "other",
+        "name": "CreateSecurityZoneInstance",
+        "xml": "<outcome value='CreateSecurityZoneInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1608.3332595825195,
+        "y": 762.1296367645264,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "619f5f72.2ac62"
+            ]
+        ]
+    },
+    {
+        "id": "f1ddac97.f2155",
+        "type": "other",
+        "name": "delete",
+        "xml": "<outcome value='delete'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 926.6666564941406,
+        "y": 937.1295366287231,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "d42c764.9db5b88"
+            ]
+        ]
+    },
+    {
+        "id": "d42c764.9db5b88",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1108.6666870117188,
+        "y": 933.1295595169067,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "9fad38e8.eba248"
+            ]
+        ]
+    },
+    {
+        "id": "9fad38e8.eba248",
+        "type": "switchNode",
+        "name": "switch request-action",
+        "xml": "<switch test='`$security-zone-topology-operation-input.request-information.request-action`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1325.6666870117188,
+        "y": 933.1295595169067,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "3f661399.88316c",
+                "fb7e534f.3179a"
+            ]
+        ]
+    },
+    {
+        "id": "3f661399.88316c",
+        "type": "other",
+        "name": "DeleteSecurityZoneInstance",
+        "xml": "<outcome value='DeleteSecurityZoneInstance'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1606.6665573120117,
+        "y": 934.1295766830444,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "18534a5c.e61196"
+            ]
+        ]
+    },
+    {
+        "id": "fb7e534f.3179a",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1549.6666870117188,
+        "y": 974.1295595169067,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "c5006813.200e48"
+            ]
+        ]
+    },
+    {
+        "id": "c5006813.200e48",
+        "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 a required to be DeleteSecurityZoneInstance for svc-action=delete\" />\n",
+        "comments": "",
+        "x": 1718.6666870117188,
+        "y": 974.1295595169067,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "18534a5c.e61196",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1865.6666870117188,
+        "y": 935.1295595169067,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "c43eb58f.69d438",
+                "fb13eb4d.718288"
+            ]
+        ]
+    },
+    {
+        "id": "93d6c176.7fe5a",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1254.9999656677246,
+        "y": 284.499981880188,
+        "z": "893326ee.bae438",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c43eb58f.69d438",
+        "type": "switchNode",
+        "name": "switch allotted-resource-id",
+        "xml": "<switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2236.349380493164,
+        "y": 148.09522247314453,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "95717a57.0e1fc8"
+            ]
+        ]
+    },
+    {
+        "id": "95717a57.0e1fc8",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2436.8850631713867,
+        "y": 146.66665077209473,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "7ad0865a.9d5808"
+            ]
+        ]
+    },
+    {
+        "id": "7ad0865a.9d5808",
+        "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=\"allotted-resource-information.allotted-resource-id is a required input\" />\n",
+        "comments": "",
+        "x": 2588.3135299682617,
+        "y": 145.66665077209473,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "474a1931.cb3468",
+        "type": "switchNode",
+        "name": "switch allotted-resource-type",
+        "xml": "<switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-type`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2242.7779235839844,
+        "y": 183.29363822937012,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "78aa6b52.fbc154"
+            ]
+        ]
+    },
+    {
+        "id": "78aa6b52.fbc154",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2443.3134689331055,
+        "y": 181.86506843566895,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "d2e8d08f.df20e"
+            ]
+        ]
+    },
+    {
+        "id": "d2e8d08f.df20e",
+        "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=\"allotted-resource-information.allotted-resource-type is a required input\" />\n",
+        "comments": "",
+        "x": 2594.7419357299805,
+        "y": 180.86506843566895,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "fb13eb4d.718288",
+        "type": "switchNode",
+        "name": "switch parent-service-instance-id",
+        "xml": "<switch test='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2255.63516998291,
+        "y": 219.0079231262207,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "dec9289b.c35878"
+            ]
+        ]
+    },
+    {
+        "id": "dec9289b.c35878",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2471.349319458008,
+        "y": 216.1507797241211,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "45bd6332.b157fc"
+            ]
+        ]
+    },
+    {
+        "id": "45bd6332.b157fc",
+        "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=\"allotted-resource-information.parent-service-instance-id is a required input\" />\n",
+        "comments": "",
+        "x": 2622.777786254883,
+        "y": 215.1507797241211,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "beb405ab.4654d8",
+        "type": "switchNode",
+        "name": "switch trusted-network-role",
+        "xml": "<switch test='`$security-zone-topology-operation-input.security-zone-request-input.trusted-network-role`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2231.984031677246,
+        "y": 412.1983833312988,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "20e7c9ab.48a486"
+            ]
+        ]
+    },
+    {
+        "id": "20e7c9ab.48a486",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2494.174690246582,
+        "y": 408.5793528556824,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "a43fc0ee.20e45"
+            ]
+        ]
+    },
+    {
+        "id": "a43fc0ee.20e45",
+        "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=\"security-zone-topology-operation-input.security-zone-request-input.trusted-network-role is a required input\" />\n",
+        "comments": "",
+        "x": 2659.174835205078,
+        "y": 408.57931327819824,
+        "z": "893326ee.bae438",
+        "wires": []
+    },
+    {
+        "id": "9bbcec2b.09769",
+        "type": "switchNode",
+        "name": "switch untrusted-network-role",
+        "xml": "<switch test='`$security-zone-topology-operation-input.security-zone-request-input.untrusted-network-role`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2249.2224464416504,
+        "y": 446.74599266052246,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "d404d9bd.d65288"
+            ]
+        ]
+    },
+    {
+        "id": "d404d9bd.d65288",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2494.22261428833,
+        "y": 446.7459878921509,
+        "z": "893326ee.bae438",
+        "wires": [
+            [
+                "a2180ae0.fe41f8"
+            ]
+        ]
+    },
+    {
+        "id": "a2180ae0.fe41f8",
+        "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=\"security-zone-operation-input.security-zone-request-input.untrusted-network-role is a required input\" />\n",
+        "comments": "",
+        "x": 2660.651081085205,
+        "y": 446.74595737457275,
+        "z": "893326ee.bae438",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-service-input.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-service-input.json
new file mode 100644
index 0000000..fb7d439
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-service-input.json
@@ -0,0 +1 @@
+[{"id":"edb23f9d.a0831","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":208.5714340209961,"y":432.857120513916,"z":"28243e86.88d342","wires":[["54626725.767df8","ae0ea7a6.aa4958","2ee7ae8e.ec3e02","572713cb.967e9c"]]},{"id":"54626725.767df8","type":"switchNode","name":"switch svc-request-id","xml":"<switch test='`$service-topology-operation-input.sdnc-request-header.svc-request-id`'>\n","comments":"","outputs":1,"x":454.19051361083984,"y":300.2232151031494,"z":"28243e86.88d342","wires":[["16c18fe2.37317"]]},{"id":"16c18fe2.37317","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":679.9048080444336,"y":300.2232189178467,"z":"28243e86.88d342","wires":[["7afca0eb.9cdce"]]},{"id":"7afca0eb.9cdce","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":831.3333740234375,"y":300.22321701049805,"z":"28243e86.88d342","wires":[]},{"id":"ae0ea7a6.aa4958","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$service-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":442.7618767874583,"y":258.79464667184016,"z":"28243e86.88d342","wires":[["3756f3ff.76490c"]]},{"id":"3756f3ff.76490c","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":678.476228441511,"y":257.3660444532122,"z":"28243e86.88d342","wires":[["306ea9cf.6ce206"]]},{"id":"306ea9cf.6ce206","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-action is a required input\" />\n","comments":"","x":828.4762017386302,"y":257.3660539899554,"z":"28243e86.88d342","wires":[]},{"id":"2ee7ae8e.ec3e02","type":"switchNode","name":"switch request-action","xml":"<switch test='`$service-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":452.76193019322,"y":343.08036177498957,"z":"28243e86.88d342","wires":[["8d89fa.f2f75608"]]},{"id":"8d89fa.f2f75608","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":679.9048036847798,"y":343.08037267412465,"z":"28243e86.88d342","wires":[["2ce5e91a.3d5216"]]},{"id":"2ce5e91a.3d5216","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 a required input\" />\n","comments":"","x":831.3333696637837,"y":343.080370766776,"z":"28243e86.88d342","wires":[]},{"id":"44ec88dd.c9a958","type":"switchNode","name":"switch subscription-service-type","xml":"<switch test='`$service-topology-operation-input.service-information.subscription-service-type`'>\n","comments":"","outputs":1,"x":1075.083447047642,"y":430.937544958932,"z":"28243e86.88d342","wires":[["92ab775.631ee88"]]},{"id":"92ab775.631ee88","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1270.7977414812358,"y":430.93754209790904,"z":"28243e86.88d342","wires":[["e6796dc3.10f6c"]]},{"id":"e6796dc3.10f6c","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-information.subscription-service-type is a required input\" />\n","comments":"","x":1422.2262922014506,"y":430.93753160749156,"z":"28243e86.88d342","wires":[]},{"id":"b8ebffbf.bce06","type":"switchNode","name":"switch global-customer-id","xml":"<switch test='`$service-topology-operation-input.service-information.global-customer-id`'>\n","comments":"","outputs":1,"x":1055.0835004534038,"y":472.3661452702113,"z":"28243e86.88d342","wires":[["3275964a.60192a"]]},{"id":"3275964a.60192a","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1270.7977491106303,"y":472.3661471775599,"z":"28243e86.88d342","wires":[["2aa93764.d1ca48"]]},{"id":"2aa93764.d1ca48","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-information.global-customer-id is a required input\" />\n","comments":"","x":1422.2263150896342,"y":472.3661452702113,"z":"28243e86.88d342","wires":[]},{"id":"f646cff6.1edd7","type":"switchNode","name":"switch model-invariant-uuid","xml":"<switch test='`$service-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`'>\n","comments":"","outputs":1,"x":1060.7977185930522,"y":513.7947169712611,"z":"28243e86.88d342","wires":[["dfbf13d8.eedeb"]]},{"id":"dfbf13d8.eedeb","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1270.7977262224467,"y":513.794743674142,"z":"28243e86.88d342","wires":[["c13e23d1.c796b"]]},{"id":"c13e23d1.c796b","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-information.onap-model-information.model-invariant-uuid is a required input\" />\n","comments":"","x":1422.2262922014506,"y":513.7947417667933,"z":"28243e86.88d342","wires":[]},{"id":"bae96f52.32ae8","type":"switchNode","name":"switch model-uuid","xml":"<switch test='`$service-topology-operation-input.service-information.onap-model-information.model-uuid`'>\n","comments":"","outputs":1,"x":1030.797817775181,"y":555.2233306339808,"z":"28243e86.88d342","wires":[["dc4a3e4.f1212c"]]},{"id":"dc4a3e4.f1212c","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1270.797817775181,"y":555.2233134678431,"z":"28243e86.88d342","wires":[["50e8e609.694fa8"]]},{"id":"50e8e609.694fa8","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-information.onap-model-information.model-uuid is a required input\" />\n","comments":"","x":1422.226383754185,"y":555.2233115604945,"z":"28243e86.88d342","wires":[]},{"id":"1b05c1d3.e757de","type":"switchNode","name":"switch model-name","xml":"<switch test='`$service-topology-operation-input.service-information.onap-model-information.model-name`'>\n","comments":"","outputs":1,"x":1033.6548963274272,"y":596.6518412998744,"z":"28243e86.88d342","wires":[["57fd3f6c.ea562"]]},{"id":"57fd3f6c.ea562","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1269.3692136492045,"y":596.6518756321498,"z":"28243e86.88d342","wires":[["d82eb142.373f2"]]},{"id":"d82eb142.373f2","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-information.onap-model-information.model-name is a required input\" />\n","comments":"","x":1420.7977796282084,"y":596.6518737248011,"z":"28243e86.88d342","wires":[]},{"id":"8f018dc.a5bb37","type":"comment","name":"Validation of required fields","info":"","comments":"","x":602.7618865966797,"y":214.5089292526245,"z":"28243e86.88d342","wires":[]},{"id":"572713cb.967e9c","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$service-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":436.5713882446289,"y":601.7709045410156,"z":"28243e86.88d342","wires":[["4146d215.081c3c","f2a1e8.42ce8e18"]]},{"id":"4146d215.081c3c","type":"outcome","name":"assign","xml":"<outcome value='assign'>\n","comments":"","outputs":1,"x":633.3570518493652,"y":514.6280498504639,"z":"28243e86.88d342","wires":[["2201de8b.f2d032"]]},{"id":"2201de8b.f2d032","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":825.4999258858816,"y":513.1994872774396,"z":"28243e86.88d342","wires":[["44ec88dd.c9a958","b8ebffbf.bce06","f646cff6.1edd7","bae96f52.32ae8","1b05c1d3.e757de"]]},{"id":"12a4a1e1.0f3c6e","type":"dgstart","name":"DGSTART","outputs":1,"x":112.32143620082297,"y":79.91365201132635,"z":"28243e86.88d342","wires":[["a4b20c73.9349b"]]},{"id":"a4b20c73.9349b","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":229.03571319580078,"y":120.15176350729803,"z":"28243e86.88d342","wires":[["efd6dbc2.72c708"]]},{"id":"efd6dbc2.72c708","type":"method","name":"method validate-service-input","xml":"<method rpc='validate-service-input' mode='sync'>\n","comments":"","outputs":1,"x":177.00006321498313,"y":161.16364819662908,"z":"28243e86.88d342","wires":[["edb23f9d.a0831"]]},{"id":"8e1cbab3.830fc8","type":"comment","name":"validate-service-input","info":"","comments":"","x":506.66629246303,"y":27.499995776585138,"z":"28243e86.88d342","wires":[]},{"id":"77dada46.44a994","type":"switchNode","name":"switch model-invariant-uuid","xml":"<switch test='`$service-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`'>\n","comments":"","outputs":1,"x":1055.7143287658691,"y":647.1428604125977,"z":"28243e86.88d342","wires":[["952257b3.dd6078"]]},{"id":"952257b3.dd6078","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1265.7143363952637,"y":647.1428871154785,"z":"28243e86.88d342","wires":[["8da06761.60a388"]]},{"id":"8da06761.60a388","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-information.onap-model-information.model-invariant-uuid is a required input\" />\n","comments":"","x":1417.1429023742676,"y":647.1428852081299,"z":"28243e86.88d342","wires":[]},{"id":"64f8b162.eeba","type":"switchNode","name":"switch model-uuid","xml":"<switch test='`$service-topology-operation-input.service-information.onap-model-information.model-uuid`'>\n","comments":"","outputs":1,"x":1025.714427947998,"y":688.5714740753174,"z":"28243e86.88d342","wires":[["aee449b5.453ff8"]]},{"id":"aee449b5.453ff8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1265.714427947998,"y":688.5714569091797,"z":"28243e86.88d342","wires":[["572da02b.634f4"]]},{"id":"572da02b.634f4","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-information.onap-model-information.model-uuid is a required input\" />\n","comments":"","x":1417.142993927002,"y":688.571455001831,"z":"28243e86.88d342","wires":[]},{"id":"c3343db6.57a7d","type":"switchNode","name":"switch model-name","xml":"<switch test='`$service-topology-operation-input.service-information.onap-model-information.model-name`'>\n","comments":"","outputs":1,"x":1028.5715065002441,"y":729.9999847412109,"z":"28243e86.88d342","wires":[["4dbe8140.1c24"]]},{"id":"4dbe8140.1c24","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1264.2858238220215,"y":730.0000190734863,"z":"28243e86.88d342","wires":[["3a247f65.3dbf2"]]},{"id":"3a247f65.3dbf2","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-information.onap-model-information.model-name is a required input\" />\n","comments":"","x":1415.7143898010254,"y":730.0000171661377,"z":"28243e86.88d342","wires":[]},{"id":"f2a1e8.42ce8e18","type":"outcome","name":"changeassign","xml":"<outcome value='changeassign'>\n","comments":"","outputs":1,"x":656.2736778259277,"y":686.547679901123,"z":"28243e86.88d342","wires":[["52eab4f4.64cf0c"]]},{"id":"52eab4f4.64cf0c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":826.1308364868164,"y":686.547679901123,"z":"28243e86.88d342","wires":[["77dada46.44a994","64f8b162.eeba","c3343db6.57a7d"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-tunnelxconn-input.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-tunnelxconn-input.json
new file mode 100644
index 0000000..c42aec8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-tunnelxconn-input.json
@@ -0,0 +1 @@
+[{"id":"b5d823fd.7aecd8","type":"dgstart","name":"DGSTART","outputs":1,"x":277,"y":231.33332061767578,"z":"f8bd12f.b396cf","wires":[["6e521d4c.c8568c"]]},{"id":"6e521d4c.c8568c","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.78570556640625,"y":305.57142448425293,"z":"f8bd12f.b396cf","wires":[["b8160df1.2602f"]]},{"id":"b8160df1.2602f","type":"method","name":"validate-tunnelxconn-input","xml":"<method rpc='validate-tunnelxconn-input' mode='sync'>\n","comments":"","outputs":1,"x":404.6786193847656,"y":376.50001430511475,"z":"f8bd12f.b396cf","wires":[["94d9cfb6.819148"]]},{"id":"94d9cfb6.819148","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":446.7500457763672,"y":649.7768154144287,"z":"f8bd12f.b396cf","wires":[["d455ef78.1d6598","c59c08c5.9e1d28","89097d35.bba9a8","5137004e.8046f","4ef641b2.88622"]]},{"id":"d455ef78.1d6598","type":"switchNode","name":"switch svc-request-id","xml":"<switch test='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`'>\n","comments":"","outputs":1,"x":781.8095703125,"y":134.4286012649536,"z":"f8bd12f.b396cf","wires":[["1677921a.244246"]]},{"id":"1677921a.244246","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1011.5238554818288,"y":132.42859799521284,"z":"f8bd12f.b396cf","wires":[["f70a4626.6b8008"]]},{"id":"f70a4626.6b8008","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":1162.9523620605469,"y":129.09526443481445,"z":"f8bd12f.b396cf","wires":[]},{"id":"c59c08c5.9e1d28","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":774.3809204101562,"y":88,"z":"f8bd12f.b396cf","wires":[["9bf5b798.389e88"]]},{"id":"9bf5b798.389e88","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1010.0952758789062,"y":89.57142353057861,"z":"f8bd12f.b396cf","wires":[["358e5ae0.ec086e"]]},{"id":"358e5ae0.ec086e","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-action is a required input\" />\n","comments":"","x":1160.0952491760254,"y":89.57143306732178,"z":"f8bd12f.b396cf","wires":[]},{"id":"7d1a58d7.ff8ef","type":"comment","name":"validate-tunnelxconn-input - CHANGELOG","info":"3/22: Initial release 1.0.0","comments":"","x":290,"y":135.33332061767578,"z":"f8bd12f.b396cf","wires":[]},{"id":"89097d35.bba9a8","type":"switchNode","name":"switch svc-action","xml":"<switch test='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`'>\n","comments":"","outputs":1,"x":686.6666603088379,"y":655.3333568572998,"z":"f8bd12f.b396cf","wires":[["52a3ca72.39a0d4","edd735a8.344048","385d4044.9b32e","f6365d4e.03ea3","33745c85.f01734","b81789f9.0a9b5"]]},{"id":"52a3ca72.39a0d4","type":"other","name":"assign","xml":"<outcome value='assign'>","comments":"","outputs":1,"x":947.7143630981445,"y":490.90478706359863,"z":"f8bd12f.b396cf","wires":[["59acb47.2b0fccc"]]},{"id":"edd735a8.344048","type":"other","name":"activate","xml":"<outcome value='activate'>","comments":"","outputs":1,"x":967.9999694824219,"y":678.3333511352539,"z":"f8bd12f.b396cf","wires":[["a738b59f.50a53"]]},{"id":"385d4044.9b32e","type":"other","name":"deactivate","xml":"<outcome value='deactivate'>","comments":"","outputs":1,"x":974.9999694824219,"y":768.3333511352539,"z":"f8bd12f.b396cf","wires":[["f55bfd08.6c8a7"]]},{"id":"f6365d4e.03ea3","type":"other","name":"unassign","xml":"<outcome value='unassign'>","comments":"","outputs":1,"x":955.9998321533203,"y":935.6666784286499,"z":"f8bd12f.b396cf","wires":[["1e5b3ae5.5059e5"]]},{"id":"59acb47.2b0fccc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1146.0238189697266,"y":489.05958557128906,"z":"f8bd12f.b396cf","wires":[["8e59346d.9fe89","3fa9f650.04461a","9e8069fd.cb145","111c545d.ab113c","be2f1214.6804a","f79569f8.dbee3"]]},{"id":"a738b59f.50a53","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1146.250015258789,"y":678.0833930969238,"z":"f8bd12f.b396cf","wires":[["9e8069fd.cb145","be2f1214.6804a"]]},{"id":"f55bfd08.6c8a7","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1147.2500305175781,"y":769.3333950042725,"z":"f8bd12f.b396cf","wires":[["9e8069fd.cb145","be2f1214.6804a"]]},{"id":"1e5b3ae5.5059e5","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1144.9998931884766,"y":936.166708946228,"z":"f8bd12f.b396cf","wires":[["9e8069fd.cb145"]]},{"id":"8e59346d.9fe89","type":"switchNode","name":"switch brg-wan-mac-address","xml":"<switch test='`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.brg-wan-mac-address`'>\n","comments":"","outputs":1,"x":1553.1190185546875,"y":483.6309585571289,"z":"f8bd12f.b396cf","wires":[["90bd782.9309f88"]]},{"id":"90bd782.9309f88","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1761.118896484375,"y":483.4404983520508,"z":"f8bd12f.b396cf","wires":[["c04d13fe.02c76"]]},{"id":"c04d13fe.02c76","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=\"tunnelxconn-topology-operation-input.brg-wan-mac-address is a required input\" />\n","comments":"","x":1976.3095703125,"y":479.44046783447266,"z":"f8bd12f.b396cf","wires":[]},{"id":"f79569f8.dbee3","type":"switchNode","name":"switch onap-model-information.model-customization-uuid","xml":"<switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`'>\n","comments":"","outputs":1,"x":1709.1072998046875,"y":397.33341217041016,"z":"f8bd12f.b396cf","wires":[["589e1791.76a778"]]},{"id":"589e1791.76a778","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1990.107177734375,"y":397.3333511352539,"z":"f8bd12f.b396cf","wires":[["5420fa60.f9fd94"]]},{"id":"5420fa60.f9fd94","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=\"tunnelxconn-information.onap-model-information.model-customization-uuid is a required input\" />\n","comments":"","x":2108.5357055664062,"y":392.33335876464844,"z":"f8bd12f.b396cf","wires":[]},{"id":"5137004e.8046f","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":713.3571166992188,"y":1076.8332901000977,"z":"f8bd12f.b396cf","wires":[]},{"id":"3fa9f650.04461a","type":"get-resource","name":"get-resource AR_MODEL","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from ALLOTTED_RESOURCE_MODEL WHERE customization_uuid = $tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid'\n  pfx='ar-model'>\n\n","comments":"","outputs":1,"x":1539.302146911621,"y":611.6151895523071,"z":"f8bd12f.b396cf","wires":[["342a2062.3016f","3c94fe8c.f9c48a"]]},{"id":"ac2ca07c.8f157","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=\"`'No allotted resource model found for model customization UUID ' + $tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`\" />\n","comments":"","x":1986.3854637145996,"y":599.7817430496216,"z":"f8bd12f.b396cf","wires":[]},{"id":"342a2062.3016f","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1787.6355438232422,"y":595.1389589309692,"z":"f8bd12f.b396cf","wires":[["ac2ca07c.8f157"]]},{"id":"3c94fe8c.f9c48a","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1781.3855438232422,"y":627.6389589309692,"z":"f8bd12f.b396cf","wires":[["ac2ca07c.8f157"]]},{"id":"4ef641b2.88622","type":"switchNode","name":"switch service-instance-id","xml":"<switch test='`$tunnelxconn-topology-operation-input.service-information.service-instance-id`'>\n","comments":"","outputs":1,"x":781.4285583496094,"y":363.19051361083984,"z":"f8bd12f.b396cf","wires":[["5c2101ed.68426"]]},{"id":"5c2101ed.68426","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":997.8571472167969,"y":364.19051361083984,"z":"f8bd12f.b396cf","wires":[["e8805a43.764d7"]]},{"id":"e8805a43.764d7","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-information.service-instance-id is a required input\" />\n","comments":"","x":1156.2856750488281,"y":363.19051361083984,"z":"f8bd12f.b396cf","wires":[]},{"id":"33745c85.f01734","type":"other","name":"create","xml":"<outcome value='create'>","comments":"","outputs":1,"x":954.7777137756348,"y":576.2407293319702,"z":"f8bd12f.b396cf","wires":[["27b1a5c9.703fb2"]]},{"id":"27b1a5c9.703fb2","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1147.027603149414,"y":572.324052810669,"z":"f8bd12f.b396cf","wires":[["9e8069fd.cb145","be2f1214.6804a"]]},{"id":"b81789f9.0a9b5","type":"other","name":"delete","xml":"<outcome value='delete'>","comments":"","outputs":1,"x":968.111083984375,"y":852.9073152542114,"z":"f8bd12f.b396cf","wires":[["5be27043.6b85f"]]},{"id":"5be27043.6b85f","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":1144.6111068725586,"y":850.9073696136475,"z":"f8bd12f.b396cf","wires":[["9e8069fd.cb145","be2f1214.6804a"]]},{"id":"9e8069fd.cb145","type":"switchNode","name":"switch allotted-resource-id","xml":"<switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`'>\n","comments":"","outputs":1,"x":1635.2938537597656,"y":141.3729977607727,"z":"f8bd12f.b396cf","wires":[["637ba4be.9495e4"]]},{"id":"637ba4be.9495e4","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1838.3296146392822,"y":146.19443893432617,"z":"f8bd12f.b396cf","wires":[["c80adb0c.bf9c4"]]},{"id":"c80adb0c.bf9c4","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=\"allotted-resource-information.allotted-resource-id is a required input\" />\n","comments":"","x":2023.5080833435059,"y":141.44443893432617,"z":"f8bd12f.b396cf","wires":[]},{"id":"111c545d.ab113c","type":"switchNode","name":"switch allotted-resource-type","xml":"<switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type`'>\n","comments":"","outputs":1,"x":1639.2224349975586,"y":210.3214235305786,"z":"f8bd12f.b396cf","wires":[["cf5ac7f9.65d6a"]]},{"id":"cf5ac7f9.65d6a","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1834.7578468322754,"y":210.14284706115723,"z":"f8bd12f.b396cf","wires":[["90dc41a5.b5f198"]]},{"id":"90dc41a5.b5f198","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=\"allotted-resource-information.allotted-resource-type is a required input\" />\n","comments":"","x":1994.9363174438477,"y":209.14284706115723,"z":"f8bd12f.b396cf","wires":[]},{"id":"be2f1214.6804a","type":"switchNode","name":"switch parent-service-instance-id","xml":"<switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>\n","comments":"","outputs":1,"x":1654.5796127319336,"y":286.0357189178467,"z":"f8bd12f.b396cf","wires":[["fb65b1f0.8c6598"]]},{"id":"fb65b1f0.8c6598","type":"other","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1874.0437355041504,"y":285.67856884002686,"z":"f8bd12f.b396cf","wires":[["d1d452a4.07303"]]},{"id":"d1d452a4.07303","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=\"allotted-resource-information.parent-service-instance-id is a required input\" />\n","comments":"","x":2025.4722023010254,"y":284.67856884002686,"z":"f8bd12f.b396cf","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-vf-module-input.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-vf-module-input.json
new file mode 100644
index 0000000..7181837
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-vf-module-input.json
@@ -0,0 +1,557 @@
+[

+    {

+        "id": "64530960.7a4c48",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 266.03125,

+        "y": 487.50000762939453,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "42eab53.cead04c",

+                "9030d08e.473eb",

+                "e2eeb7ea.c3b598",

+                "6a464fe8.f5db",

+                "1cf09f88.9f996",

+                "50ebeee1.1f03d"

+            ]

+        ]

+    },

+    {

+        "id": "42eab53.cead04c",

+        "type": "switchNode",

+        "name": "switch svc-request-id",

+        "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 522.5431518554688,

+        "y": 420.58034229278564,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "acac6999.f74ae8"

+            ]

+        ]

+    },

+    {

+        "id": "acac6999.f74ae8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 748.2574462890625,

+        "y": 420.5803461074829,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "7a7765a6.716e9c"

+            ]

+        ]

+    },

+    {

+        "id": "7a7765a6.716e9c",

+        "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": 899.6860122680664,

+        "y": 420.5803442001343,

+        "z": "c914996f.38af08",

+        "wires": []

+    },

+    {

+        "id": "9030d08e.473eb",

+        "type": "switchNode",

+        "name": "switch svc-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 511.1145150320872,

+        "y": 379.1517738614764,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "6c42550c.9ee7ec"

+            ]

+        ]

+    },

+    {

+        "id": "6c42550c.9ee7ec",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 746.8288666861399,

+        "y": 377.72317164284846,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "7bffbb0f.9e8194"

+            ]

+        ]

+    },

+    {

+        "id": "7bffbb0f.9e8194",

+        "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-action is a required input\" />\n",

+        "comments": "",

+        "x": 896.8288399832591,

+        "y": 377.7231811795916,

+        "z": "c914996f.38af08",

+        "wires": []

+    },

+    {

+        "id": "e2eeb7ea.c3b598",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 521.1145684378489,

+        "y": 463.4374889646258,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "3b145144.cf0dce"

+            ]

+        ]

+    },

+    {

+        "id": "3b145144.cf0dce",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 748.2574419294087,

+        "y": 463.4374998637609,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "dab01406.ba8c98"

+            ]

+        ]

+    },

+    {

+        "id": "dab01406.ba8c98",

+        "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 a required input\" />\n",

+        "comments": "",

+        "x": 899.6860079084126,

+        "y": 463.43749795641224,

+        "z": "c914996f.38af08",

+        "wires": []

+    },

+    {

+        "id": "12ea91e7.8a5dee",

+        "type": "switchNode",

+        "name": "switch model-customization-id",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1118.5790824890137,

+        "y": 635.1996374130249,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "7123b9f.8aa2648"

+            ]

+        ]

+    },

+    {

+        "id": "7123b9f.8aa2648",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1323.5790824890137,

+        "y": 635.1996202468872,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "56283888.4b07c8"

+            ]

+        ]

+    },

+    {

+        "id": "56283888.4b07c8",

+        "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-information.onap-model-information.model-customization-uuid is a required input\" />\n",

+        "comments": "",

+        "x": 1475.0076484680176,

+        "y": 635.1996183395386,

+        "z": "c914996f.38af08",

+        "wires": []

+    },

+    {

+        "id": "eca8ac0.d277c58",

+        "type": "switchNode",

+        "name": "switch tenant",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-request-input.tenant`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1064.4361610412598,

+        "y": 676.6281480789185,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "17c7649f.342e3b"

+            ]

+        ]

+    },

+    {

+        "id": "17c7649f.342e3b",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1322.150478363037,

+        "y": 676.6281824111938,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "a9a7bd61.ab17c"

+            ]

+        ]

+    },

+    {

+        "id": "a9a7bd61.ab17c",

+        "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-information.vf-module-request-input.tenant is a required input\" />\n",

+        "comments": "",

+        "x": 1473.579044342041,

+        "y": 676.6281805038452,

+        "z": "c914996f.38af08",

+        "wires": []

+    },

+    {

+        "id": "37d1ad14.2a8632",

+        "type": "comment",

+        "name": "Validation of required fields",

+        "info": "",

+        "comments": "",

+        "x": 671.1145248413086,

+        "y": 334.86605644226074,

+        "z": "c914996f.38af08",

+        "wires": []

+    },

+    {

+        "id": "6a464fe8.f5db",

+        "type": "switchNode",

+        "name": "switch svc-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 504.2693176269531,

+        "y": 677.5448093414307,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "55f87411.8977fc"

+            ]

+        ]

+    },

+    {

+        "id": "55f87411.8977fc",

+        "type": "outcome",

+        "name": "assign",

+        "xml": "<outcome value='assign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 663.8526191711426,

+        "y": 677.1280736923218,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "76a30e92.c3b23"

+            ]

+        ]

+    },

+    {

+        "id": "76a30e92.c3b23",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 855.8526191711426,

+        "y": 677.1280736923218,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "12ea91e7.8a5dee",

+                "eca8ac0.d277c58",

+                "75303db4.f39ac4"

+            ]

+        ]

+    },

+    {

+        "id": "412ad4c5.a2550c",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 183.53125217982688,

+        "y": 207.4136562347412,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "5fecaed1.6af1f"

+            ]

+        ]

+    },

+    {

+        "id": "5fecaed1.6af1f",

+        "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": 296.81695774623313,

+        "y": 247.6517677307129,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "ce8e825.505198"

+            ]

+        ]

+    },

+    {

+        "id": "ce8e825.505198",

+        "type": "method",

+        "name": "method validate-vf-module-input",

+        "xml": "<method rpc='validate-vf-module-input' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 253.87654713221946,

+        "y": 288.33031368255615,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "64530960.7a4c48"

+            ]

+        ]

+    },

+    {

+        "id": "d3c65d01.b09e8",

+        "type": "comment",

+        "name": "validate-vf-module-input",

+        "info": "",

+        "comments": "",

+        "x": 577.8761084420339,

+        "y": 155,

+        "z": "c914996f.38af08",

+        "wires": []

+    },

+    {

+        "id": "1cf09f88.9f996",

+        "type": "switchNode",

+        "name": "switch service-instance-id",

+        "xml": "<switch test='`$vf-module-topology-operation-input.service-information.service-instance-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 534.1383993966238,

+        "y": 507.50001525878906,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "4a5d470b.8d66d8"

+            ]

+        ]

+    },

+    {

+        "id": "4a5d470b.8d66d8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 746.5669806344167,

+        "y": 507.5000114440918,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "6a814e78.eefa1"

+            ]

+        ]

+    },

+    {

+        "id": "6a814e78.eefa1",

+        "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-information.service-instance-id is a required input\" />\n",

+        "comments": "",

+        "x": 897.9955466134206,

+        "y": 507.50000953674316,

+        "z": "c914996f.38af08",

+        "wires": []

+    },

+    {

+        "id": "50ebeee1.1f03d",

+        "type": "switchNode",

+        "name": "switch vnf-id",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vnf-information.vnf-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 491.6384086608887,

+        "y": 554.0000057220459,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "91be467.d997cb8"

+            ]

+        ]

+    },

+    {

+        "id": "91be467.d997cb8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 746.9241180419922,

+        "y": 552.5714378356934,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "a61fec00.397b18"

+            ]

+        ]

+    },

+    {

+        "id": "a61fec00.397b18",

+        "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-information.vnf-id is a required input\" />\n",

+        "comments": "",

+        "x": 898.3526840209961,

+        "y": 552.5714359283447,

+        "z": "c914996f.38af08",

+        "wires": []

+    },

+    {

+        "id": "75303db4.f39ac4",

+        "type": "switchNode",

+        "name": "switch aic-cloud-region",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1093.7812423706055,

+        "y": 718.9048051834106,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "ce90203b.b0afd"

+            ]

+        ]

+    },

+    {

+        "id": "ce90203b.b0afd",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1320.4955596923828,

+        "y": 718.904839515686,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "2275e534.88d4ca"

+            ]

+        ]

+    },

+    {

+        "id": "2275e534.88d4ca",

+        "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.aic-cloud-region is a required input\" />\n",

+        "comments": "",

+        "x": 1471.9241256713867,

+        "y": 718.9048376083374,

+        "z": "c914996f.38af08",

+        "wires": []

+    },

+    {

+        "id": "3d870d1c.309352",

+        "type": "outcome",

+        "name": "changeassign",

+        "xml": "<outcome value='changeassign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 687.6979370117188,

+        "y": 832.2500114440918,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "fa0141f0.f9902"

+            ]

+        ]

+    },

+    {

+        "id": "fa0141f0.f9902",

+        "type": "switchNode",

+        "name": "switch model-customization-id",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 914.3645782470703,

+        "y": 832.5833168029785,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "5358c72a.6a77a8"

+            ]

+        ]

+    },

+    {

+        "id": "5358c72a.6a77a8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1119.3645782470703,

+        "y": 832.5832996368408,

+        "z": "c914996f.38af08",

+        "wires": [

+            [

+                "80d57253.986af"

+            ]

+        ]

+    },

+    {

+        "id": "80d57253.986af",

+        "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-information.onap-model-information.model-customization-uuid is a required input\" />\n",

+        "comments": "",

+        "x": 1270.7931442260742,

+        "y": 832.5832977294922,

+        "z": "c914996f.38af08",

+        "wires": []

+    },

+    {

+        "id": "319c1dc4.f1e692",

+        "type": "comment",

+        "name": "model-customization-uuid validation moved to changeassign DG",

+        "info": "",

+        "comments": "",

+        "x": 744.7812423706055,

+        "y": 790,

+        "z": "c914996f.38af08",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-vnf-input.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-vnf-input.json
new file mode 100644
index 0000000..9ef063e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_validate-vnf-input.json
@@ -0,0 +1,529 @@
+[

+  {

+    "id": "76c41400.105bfc",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">",

+    "atomic": "true",

+    "outputs": 1,

+    "x": 215.03125,

+    "y": 380.7500047683716,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "2a2419b1.808286",

+        "63aa7131.36521",

+        "eac281c.1de128",

+        "e567acf8.fa2ee",

+        "b96ae981.783b38"

+      ]

+    ]

+  },

+  {

+    "id": "2a2419b1.808286",

+    "type": "switchNode",

+    "name": "switch svc-request-id",

+    "xml": "<switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-request-id`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 472.7931594848633,

+    "y": 338.580340385437,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "b04eadfc.363d6"

+      ]

+    ]

+  },

+  {

+    "id": "b04eadfc.363d6",

+    "type": "outcome",

+    "name": "NULL",

+    "xml": "<outcome value=''>",

+    "comments": "",

+    "outputs": 1,

+    "x": 698.507453918457,

+    "y": 338.5803442001343,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "7a089ce3.3d6db4"

+      ]

+    ]

+  },

+  {

+    "id": "7a089ce3.3d6db4",

+    "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": 849.9360198974609,

+    "y": 338.58034229278564,

+    "z": "62d88521.de373c",

+    "wires": []

+  },

+  {

+    "id": "63aa7131.36521",

+    "type": "switchNode",

+    "name": "switch svc-action",

+    "xml": "<switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 461.3645226614817,

+    "y": 297.15177195412775,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "9a54011a.7a533"

+      ]

+    ]

+  },

+  {

+    "id": "9a54011a.7a533",

+    "type": "outcome",

+    "name": "NULL",

+    "xml": "<outcome value=''>",

+    "comments": "",

+    "outputs": 1,

+    "x": 697.0788743155344,

+    "y": 295.7231697354998,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "ae9fbdb1.99d76"

+      ]

+    ]

+  },

+  {

+    "id": "ae9fbdb1.99d76",

+    "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-action is a required input\" />\n",

+    "comments": "",

+    "x": 847.0788476126536,

+    "y": 295.723179272243,

+    "z": "62d88521.de373c",

+    "wires": []

+  },

+  {

+    "id": "eac281c.1de128",

+    "type": "switchNode",

+    "name": "switch request-action",

+    "xml": "<switch test='`$vnf-topology-operation-input.request-information.request-action`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 471.36457606724343,

+    "y": 381.43748705727717,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "723ab622.079618"

+      ]

+    ]

+  },

+  {

+    "id": "723ab622.079618",

+    "type": "outcome",

+    "name": "NULL",

+    "xml": "<outcome value=''>",

+    "comments": "",

+    "outputs": 1,

+    "x": 698.5074495588033,

+    "y": 381.43749795641224,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "af6a2199.40114"

+      ]

+    ]

+  },

+  {

+    "id": "af6a2199.40114",

+    "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 a required input\" />\n",

+    "comments": "",

+    "x": 849.9360155378072,

+    "y": 381.4374960490636,

+    "z": "62d88521.de373c",

+    "wires": []

+  },

+  {

+    "id": "cb0aa11e.ba442",

+    "type": "switchNode",

+    "name": "switch model-customization-id",

+    "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1089.8290977478027,

+    "y": 528.8662605285645,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "f7d46398.5727f"

+      ]

+    ]

+  },

+  {

+    "id": "f7d46398.5727f",

+    "type": "outcome",

+    "name": "NULL",

+    "xml": "<outcome value=''>",

+    "comments": "",

+    "outputs": 1,

+    "x": 1294.8290977478027,

+    "y": 528.8662433624268,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "4203f831.9a99a8"

+      ]

+    ]

+  },

+  {

+    "id": "4203f831.9a99a8",

+    "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-information.onap-model-information.model-customization-uuid is a required input\" />\n",

+    "comments": "",

+    "x": 1446.2576637268066,

+    "y": 528.8662414550781,

+    "z": "62d88521.de373c",

+    "wires": []

+  },

+  {

+    "id": "3314ab19.e03fa4",

+    "type": "switchNode",

+    "name": "switch tenant",

+    "xml": "<switch test='`$vnf-topology-operation-input.vnf-request-input.tenant`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1035.6861763000488,

+    "y": 570.294771194458,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "8f23daeb.368758"

+      ]

+    ]

+  },

+  {

+    "id": "8f23daeb.368758",

+    "type": "outcome",

+    "name": "NULL",

+    "xml": "<outcome value=''>",

+    "comments": "",

+    "outputs": 1,

+    "x": 1293.4004936218262,

+    "y": 570.2948055267334,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "d455e65.3d8f318"

+      ]

+    ]

+  },

+  {

+    "id": "d455e65.3d8f318",

+    "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-information.vnf-request-input.tenant is a required input\" />\n",

+    "comments": "",

+    "x": 1444.82905960083,

+    "y": 570.2948036193848,

+    "z": "62d88521.de373c",

+    "wires": []

+  },

+  {

+    "id": "b6a4138f.58b28",

+    "type": "comment",

+    "name": "Validation of required fields",

+    "info": "",

+    "comments": "",

+    "x": 621.3645324707031,

+    "y": 252.8660545349121,

+    "z": "62d88521.de373c",

+    "wires": []

+  },

+  {

+    "id": "e567acf8.fa2ee",

+    "type": "switchNode",

+    "name": "switch svc-action",

+    "xml": "<switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 455.35266876220703,

+    "y": 570.5447463989258,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "99eee3d5.45a48"

+      ]

+    ]

+  },

+  {

+    "id": "99eee3d5.45a48",

+    "type": "outcome",

+    "name": "assign",

+    "xml": "<outcome value='assign'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 632.4359893798828,

+    "y": 570.1280860900879,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "74f6768d.61c458"

+      ]

+    ]

+  },

+  {

+    "id": "74f6768d.61c458",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">",

+    "atomic": "true",

+    "outputs": 1,

+    "x": 829.1026000976562,

+    "y": 570.1280860900879,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "cb0aa11e.ba442",

+        "3314ab19.e03fa4",

+        "14a1f7ee.4225a8"

+      ]

+    ]

+  },

+  {

+    "id": "75d1af24.b59b7",

+    "type": "dgstart",

+    "name": "DGSTART",

+    "outputs": 1,

+    "x": 133.7812598092214,

+    "y": 125.41365432739258,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "7a2246ee.79a8f8"

+      ]

+    ]

+  },

+  {

+    "id": "7a2246ee.79a8f8",

+    "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": 247.06696537562766,

+    "y": 165.65176582336426,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "58cd5caf.4f7f64"

+      ]

+    ]

+  },

+  {

+    "id": "58cd5caf.4f7f64",

+    "type": "method",

+    "name": "method validate-vnf-input",

+    "xml": "<method rpc='validate-vnf-input' mode='sync'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 182.45988682338157,

+    "y": 206.6636505126953,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "76c41400.105bfc"

+      ]

+    ]

+  },

+  {

+    "id": "4fd47656.8c48d8",

+    "type": "comment",

+    "name": "validate-vnf-input",

+    "info": "",

+    "comments": "",

+    "x": 528.1261160714284,

+    "y": 72.99999809265137,

+    "z": "62d88521.de373c",

+    "wires": []

+  },

+  {

+    "id": "b96ae981.783b38",

+    "type": "switchNode",

+    "name": "switch service-instance-id",

+    "xml": "<switch test='`$vnf-topology-operation-input.service-information.service-instance-id`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 484.3884070260183,

+    "y": 425.50001335144043,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "222c65be.19adaa"

+      ]

+    ]

+  },

+  {

+    "id": "222c65be.19adaa",

+    "type": "outcome",

+    "name": "NULL",

+    "xml": "<outcome value=''>",

+    "comments": "",

+    "outputs": 1,

+    "x": 696.8169882638113,

+    "y": 425.50000953674316,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "419149d7.f3c9e8"

+      ]

+    ]

+  },

+  {

+    "id": "419149d7.f3c9e8",

+    "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-information.service-instance-id is a required input\" />\n",

+    "comments": "",

+    "x": 848.2455542428152,

+    "y": 425.50000762939453,

+    "z": "62d88521.de373c",

+    "wires": []

+  },

+  {

+    "id": "14a1f7ee.4225a8",

+    "type": "switchNode",

+    "name": "switch aic-cloud-region",

+    "xml": "<switch test='`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1065.0312576293945,

+    "y": 612.5714282989502,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "34b6bd95.7d9342"

+      ]

+    ]

+  },

+  {

+    "id": "34b6bd95.7d9342",

+    "type": "outcome",

+    "name": "NULL",

+    "xml": "<outcome value=''>",

+    "comments": "",

+    "outputs": 1,

+    "x": 1291.7455749511719,

+    "y": 612.5714626312256,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "2a60eee3.33bf02"

+      ]

+    ]

+  },

+  {

+    "id": "2a60eee3.33bf02",

+    "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-request-input.aic-cloud-region is a required input\" />\n",

+    "comments": "",

+    "x": 1443.1741409301758,

+    "y": 612.571460723877,

+    "z": "62d88521.de373c",

+    "wires": []

+  },

+  {

+    "id": "786596f7.351798",

+    "type": "switchNode",

+    "name": "switch model-customization-id",

+    "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1060.5074005126953,

+    "y": 727.7619094848633,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "47670feb.a0d52"

+      ]

+    ]

+  },

+  {

+    "id": "47670feb.a0d52",

+    "type": "outcome",

+    "name": "NULL",

+    "xml": "<outcome value=''>",

+    "comments": "",

+    "outputs": 1,

+    "x": 1265.5074005126953,

+    "y": 727.7618923187256,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "57c8f1dd.5353b"

+      ]

+    ]

+  },

+  {

+    "id": "57c8f1dd.5353b",

+    "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-information.onap-model-information.model-customization-uuid is a required input\" />\n",

+    "comments": "",

+    "x": 1416.9359664916992,

+    "y": 727.761890411377,

+    "z": "62d88521.de373c",

+    "wires": []

+  },

+  {

+    "id": "cfe766b3.3ac5a8",

+    "type": "outcome",

+    "name": "changeassign",

+    "xml": "<outcome value='changeassign'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 650.4476203918457,

+    "y": 727.690468788147,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "43346cb0.8ff874"

+      ]

+    ]

+  },

+  {

+    "id": "43346cb0.8ff874",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">",

+    "atomic": "true",

+    "outputs": 1,

+    "x": 830.4476089477539,

+    "y": 727.6904354095459,

+    "z": "62d88521.de373c",

+    "wires": [

+      [

+        "786596f7.351798"

+      ]

+    ]

+  },

+  {

+    "id": "75147ce8.6bd644",

+    "type": "comment",

+    "name": "model-customization-uuid validation moved to changeassign DG",

+    "info": "",

+    "comments": "",

+    "x": 710.03125,

+    "y": 693.0000085830688,

+    "z": "62d88521.de373c",

+    "wires": []

+  }

+]

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-generate-heat-parameters.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-generate-heat-parameters.json
new file mode 100755
index 0000000..b17830c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-generate-heat-parameters.json
@@ -0,0 +1 @@
+[{"id":"c607f901.cbfcd8","type":"dgstart","name":"DGSTART","outputs":1,"x":110,"y":84,"z":"62f2734c.91713c","wires":[["e9d78e7.3b3dc7"]]},{"id":"e9d78e7.3b3dc7","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":223.28570556640625,"y":124.23811149597168,"z":"62f2734c.91713c","wires":[["cd8fa32e.a26c1"]]},{"id":"cd8fa32e.a26c1","type":"method","name":"method vf-module-generate-heat-parameters","xml":"<method rpc='vf-module-generate-heat-parameters' mode='sync'>\n","comments":"","outputs":1,"x":219.42861938476562,"y":162,"z":"62f2734c.91713c","wires":[["43997d9.43ac984"]]},{"id":"6a8af1f3.f2e3b","type":"comment","name":"vf-module-generate-heat-parameters","info":"","comments":"","x":504.34485626220703,"y":31.58634376525879,"z":"62f2734c.91713c","wires":[]},{"id":"43997d9.43ac984","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":123.23810577392578,"y":2022.7619352340698,"z":"62f2734c.91713c","wires":[["6171f873.e425b8","fc1a87e8.8835e8","c9a0353d.cd6048","c848779a.240d78","512e36fe.88cae8","f27e39bf.037e88"]]},{"id":"6171f873.e425b8","type":"set","name":"set constants","xml":"<set>\n<parameter name='const.sub-int' value='subint' />\n<parameter name='const.subnet-id' value='_subnet_id' />\n<parameter name='const.v6-subnet-id' value='_v6_subnet_id' />\n<parameter name='const.port' value='port' />\n<parameter name='const.sub-int-count' value='_subintcount' />\n<parameter name='const.vlan-ids' value='_vlan_ids' />\n<parameter name='const.net-names' value='_net_names' />\n<parameter name='const.net-ids' value='_net_ids' />\n<parameter name='const.ip' value='_ip' />\n<parameter name='const.v6-ip' value='_v6_ip' />\n<parameter name='const.floating-ip' value='_floating_ip' />\n<parameter name='const.floating-v6-ip' value='_floating_v6_ip' />\n<parameter name='const.underscore' value='_' />\n","comments":"","x":426,"y":302,"z":"62f2734c.91713c","wires":[]},{"id":"fc1a87e8.8835e8","type":"for","name":"for each vm-type","xml":"<for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":393.9999809265137,"y":832.6666650772095,"z":"62f2734c.91713c","wires":[["75bf8fa8.8b3f4"]]},{"id":"c9a0353d.cd6048","type":"set","name":"set output-index to 0","xml":"<set>\n<parameter name='output-index' value='0' />\n","comments":"","x":446,"y":350,"z":"62f2734c.91713c","wires":[]},{"id":"553c20db.cd6a5","type":"set","name":"add vm-name to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n    + '_name_'\n    + $vm-name-index`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`\" />\n","comments":"","x":1158,"y":326,"z":"62f2734c.91713c","wires":[]},{"id":"dbf78fc.8cb367","type":"for","name":"for each vm-name","xml":"<for silentFailure='true' index='vm-name-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >\n","comments":"","outputs":1,"x":788,"y":388,"z":"62f2734c.91713c","wires":[["c21b6c23.a44f5"]]},{"id":"c21b6c23.a44f5","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":962,"y":388,"z":"62f2734c.91713c","wires":[["553c20db.cd6a5","126a1138.39cfef","a8926832.929c88"]]},{"id":"126a1138.39cfef","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":1156,"y":458,"z":"62f2734c.91713c","wires":[]},{"id":"75bf8fa8.8b3f4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":555.9999809265137,"y":832.6666650772095,"z":"62f2734c.91713c","wires":[["dbf78fc.8cb367","4eb0f99d.69a988","3b8fd11f.82935e","5fcdcb36.273b84","9027092b.9a5a08"]]},{"id":"a8926832.929c88","type":"switchNode","name":"switch vm-name-index > 0","xml":"<switch test='`$vm-name-index &gt; 0`'>\n","comments":"","outputs":1,"x":1168,"y":382,"z":"62f2734c.91713c","wires":[["40f8c6d2.989108","884f5ca7.c787a"]]},{"id":"40f8c6d2.989108","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1366,"y":352,"z":"62f2734c.91713c","wires":[["fb1684b6.e77568"]]},{"id":"fb1684b6.e77568","type":"set","name":"add name plus comma to cdl","xml":"<set>\n<parameter name='cdl' value=\"`$cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`\" />\n","comments":"","x":1568,"y":352,"z":"62f2734c.91713c","wires":[]},{"id":"884f5ca7.c787a","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1364,"y":408,"z":"62f2734c.91713c","wires":[["a691cff3.da444"]]},{"id":"a691cff3.da444","type":"set","name":"set cdl to name","xml":"<set>\n<parameter name='cdl' value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`\" />\n","comments":"","x":1526,"y":408,"z":"62f2734c.91713c","wires":[]},{"id":"4eb0f99d.69a988","type":"set","name":"add cdl to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n    + '_names'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$cdl`\" />\n","comments":"","x":784,"y":506,"z":"62f2734c.91713c","wires":[]},{"id":"3b8fd11f.82935e","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":802,"y":554,"z":"62f2734c.91713c","wires":[]},{"id":"5fcdcb36.273b84","type":"for","name":"for each vm-network","xml":"<for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\n","comments":"","outputs":1,"x":758.6666221618652,"y":1279.9999370574951,"z":"62f2734c.91713c","wires":[["cd648464.a0c208"]]},{"id":"cd648464.a0c208","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":938.6666221618652,"y":1279.9999370574951,"z":"62f2734c.91713c","wires":[["639601e5.c624a","f315d160.0be8","464f8145.5c434","c10ddd4c.80a71","d19a94b6.5dfc38","3aa7c41f.a8470c"]]},{"id":"639601e5.c624a","type":"switchNode","name":"switch network-role-tag","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag`'>\n","comments":"","outputs":1,"x":1154,"y":592,"z":"62f2734c.91713c","wires":[["cd0c5617.5fbf28","2838d378.a20f5c"]]},{"id":"cd0c5617.5fbf28","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1334,"y":566,"z":"62f2734c.91713c","wires":[["7f5e938f.f031ec"]]},{"id":"2838d378.a20f5c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1335.6666259765625,"y":612.1904907226562,"z":"62f2734c.91713c","wires":[["491f081f.7301e8"]]},{"id":"491f081f.7301e8","type":"set","name":"set network-key to network-role-tag","xml":"<set>\n<parameter name='network-key' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag`' />\n","comments":"","x":1553,"y":611,"z":"62f2734c.91713c","wires":[]},{"id":"7f5e938f.f031ec","type":"set","name":"set network-key to network-role","xml":"<set>\n<parameter name='network-key' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role`' />\n","comments":"","x":1542,"y":565,"z":"62f2734c.91713c","wires":[]},{"id":"f315d160.0be8","type":"switchNode","name":"switch ipv4 floating ip","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].floating-ips.floating-ip-v4`'>\n","comments":"","outputs":1,"x":1148.3333129882812,"y":700.0000476837158,"z":"62f2734c.91713c","wires":[["96472015.b0ed9","6f2a1291.a5f80c"]]},{"id":"96472015.b0ed9","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1320,"y":676.6666259765625,"z":"62f2734c.91713c","wires":[["97b2717d.d8ccd"]]},{"id":"6f2a1291.a5f80c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1324.9999294281006,"y":739.5238122940063,"z":"62f2734c.91713c","wires":[["98182766.5aa288"]]},{"id":"97b2717d.d8ccd","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1461.6666450500488,"y":673.3333396911621,"z":"62f2734c.91713c","wires":[[]]},{"id":"98182766.5aa288","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1460,"y":738.3333129882812,"z":"62f2734c.91713c","wires":[["e3470c45.e07bb","34f0cbae.7f97d4"]]},{"id":"e3470c45.e07bb","type":"set","name":"add address to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n    + $const.underscore\n    + $network-key\n    + $const.floating-ip`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].floating-ips.floating-ip-v4`\" />\n","comments":"","x":1633.3333168029785,"y":714.9999876022339,"z":"62f2734c.91713c","wires":[]},{"id":"34f0cbae.7f97d4","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":1639.9998779296875,"y":765,"z":"62f2734c.91713c","wires":[]},{"id":"464f8145.5c434","type":"switchNode","name":"switch ipv6 floating ip","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].floating-ips.floating-ip-v6`'>\n","comments":"","outputs":1,"x":1140,"y":831.6666259765625,"z":"62f2734c.91713c","wires":[["9c84fad0.5d7458","3d3825be.dbbaea"]]},{"id":"9c84fad0.5d7458","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1311.6666870117188,"y":808.3332042694092,"z":"62f2734c.91713c","wires":[["d72b6f99.6b8e8"]]},{"id":"3d3825be.dbbaea","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1316.6666164398193,"y":871.190390586853,"z":"62f2734c.91713c","wires":[["49402d8.ca09cd4"]]},{"id":"d72b6f99.6b8e8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1453.3333320617676,"y":804.9999179840088,"z":"62f2734c.91713c","wires":[[]]},{"id":"49402d8.ca09cd4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1451.6666870117188,"y":869.9998912811279,"z":"62f2734c.91713c","wires":[["ed96fc81.ef5b3","5cd9595a.5e4b08"]]},{"id":"ed96fc81.ef5b3","type":"set","name":"add address to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n    + $const.underscore\n    + $network-key\n    + $const.floating-v6-ip`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].floating-ips.floating-ip-v6`\" />\n","comments":"","x":1626.666648864746,"y":848.3331642150879,"z":"62f2734c.91713c","wires":[]},{"id":"5cd9595a.5e4b08","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":1631.6665649414062,"y":896.6665782928467,"z":"62f2734c.91713c","wires":[]},{"id":"c24a70d7.ae4b6","type":"set","name":"set test data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-networks.vm-network[0].floating-ips.floating-ip-v4' value='1.2.3.4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-networks.vm-network[0].floating-ips.floating-ip-v6' value='cafe::2222' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[1].vm-networks.vm-network[0].floating-ips.floating-ip-v4' value='5.6.7.8' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[1].vm-networks.vm-network[0].floating-ips.floating-ip-v6' value='cafe::3333' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[1].vm-networks.vm-network[0].interface-route-prefixes.interface-route-prefix[0]' value='123.456' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[1].vm-networks.vm-network[0].interface-route-prefixes.interface-route-prefix[1]' value='234.567' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[1].vm-networks.vm-network[0].interface-route-prefixes.interface-route-prefix_length' value='2' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[0].subnets-data.subnet-data[0].subnet-id' value='subnet-id-1' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[0].subnets-data.subnet-data[1].subnet-id' value='subnet-id-2' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[1].subnets-data.subnet-data[0].subnet-id' value='subnet-id-3' />\n<parameter name='service-data.vnfs.vnf[0].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[1].subnets-data.subnet-data[1].subnet-id' value='subnet-id-4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-type' value='vnfc-type-1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vfnc-port-id' value='vnfc-port-id-1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].common-sub-interface-role' value='csir-1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-id' value='network-id-1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-name' value='network-name-1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].vlan-tag-id' value='vlan-tag-id-1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].ip-version' value='ipv4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].network-ips.network-ip[0]' value='1.1.1.1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].network-ips.network-ip[1]' value='2.2.2.2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].ip-version' value='ipv6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].network-ips.network-ip[0]' value='cafe::1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].network-ips.network-ip[1]' value='cafe::2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-id' value='network-id-2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-name' value='network-name-2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].vlan-tag-id' value='vlan-tag-id-2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].ip-version' value='ipv4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].network-ips.network-ip[0]' value='3.3.3.3' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].network-ips.network-ip[1]' value='4.4.4.4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].ip-version' value='ipv6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].network-ips.network-ip[0]' value='cafe::3' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].network-ips.network-ip[1]' value='cafe::4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vfnc-port-id' value='vnfc-port-id-2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].common-sub-interface-role' value='csir-2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-id' value='network-id-3' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-name' value='network-name-3' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].vlan-tag-id' value='vlan-tag-id-3' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].ip-version' value='ipv4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].network-ips.network-ip[0]' value='5.5.5.5' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].network-ips.network-ip[1]' value='6.6.6.6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].ip-version' value='ipv6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].network-ips.network-ip[0]' value='cafe::5' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].network-ips.network-ip[1]' value='cafe::6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-id' value='network-id-4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-name' value='network-name-4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].vlan-tag-id' value='vlan-tag-id-4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].ip-version' value='ipv4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].network-ips.network-ip[0]' value='7.7.7.7' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].network-ips.network-ip[1]' value='8.8.8.8' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].ip-version' value='ipv6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].network-ips.network-ip[0]' value='cafe::7' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].network-ips.network-ip[1]' value='cafe::8' />\n","comments":"","x":733.3333625793457,"y":131.66667556762695,"z":"62f2734c.91713c","wires":[]},{"id":"7133e8e2.078d38","type":"for","name":"for each interface-route-prefix","xml":"<for index='interface-route-prefix-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].interface-route-prefixes.interface-route-prefix_length`' >\n","comments":"","outputs":1,"x":1764.9999656677246,"y":1008.3332691192627,"z":"62f2734c.91713c","wires":[["24a6cf01.3d9b1"]]},{"id":"24a6cf01.3d9b1","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1969.99995803833,"y":1007.6666250228882,"z":"62f2734c.91713c","wires":[["88b59a04.af7908","64a19fc.11a7f6"]]},{"id":"c10ddd4c.80a71","type":"switchNode","name":"switch interface-route-prefix_length > 0","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].interface-route-prefixes.interface-route-prefix_length &gt; 0`'>\n","comments":"","outputs":1,"x":1186.666690826416,"y":1065.0000190734863,"z":"62f2734c.91713c","wires":[["636adb65.f54ab4"]]},{"id":"636adb65.f54ab4","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1416.6666641235352,"y":1063.3333320617676,"z":"62f2734c.91713c","wires":[["ec424762.26abf8"]]},{"id":"ec424762.26abf8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1548.3332710266113,"y":1061.6666259765625,"z":"62f2734c.91713c","wires":[["f36a16f3.797908","47efb3d6.a1b4dc","7ba1a66f.581bf8","60464fe3.1ce95","7133e8e2.078d38"]]},{"id":"f36a16f3.797908","type":"set","name":"set cdl to '['","xml":"<set>\n<parameter name='cdl' value='[' />\n","comments":"","x":1708.3334007263184,"y":960.0000190734863,"z":"62f2734c.91713c","wires":[]},{"id":"64a19fc.11a7f6","type":"set","name":"add prefix to cdl","xml":"<set>\n<parameter name='cdl' value=\"`$cdl\n  + '{\\&quot;interface_route_table_routes_route_prefix\\&quot;:\\&quot;'\n  + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].interface-route-prefixes.interface-route-prefix[$interface-route-prefix-index]\n  + '\\&quot;}'`\" />\n","comments":"","x":2143.3332557678223,"y":1031.6666297912598,"z":"62f2734c.91713c","wires":[]},{"id":"88b59a04.af7908","type":"switchNode","name":"switch interface-route-prefix-index > 0","xml":"<switch test='`$interface-route-prefix-index &gt; 0`'>\n","comments":"","outputs":1,"x":2208.3333740234375,"y":976.6665830612183,"z":"62f2734c.91713c","wires":[["35d18d59.952ab2"]]},{"id":"35d18d59.952ab2","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2433.333251953125,"y":974.9999389648438,"z":"62f2734c.91713c","wires":[["a9f0b9f9.d895c8"]]},{"id":"a9f0b9f9.d895c8","type":"set","name":"add comma to cdl","xml":"<set>\n<parameter name='cdl' value=\"`$cdl + ','`\" />\n","comments":"","x":2591.6666870117188,"y":973.3332901000977,"z":"62f2734c.91713c","wires":[]},{"id":"47efb3d6.a1b4dc","type":"set","name":"add ']' to cdl","xml":"<set>\n<parameter name='cdl' value=\"`$cdl + ']'`\" />\n","comments":"","x":1708.3331985473633,"y":1071.6666278839111,"z":"62f2734c.91713c","wires":[]},{"id":"7ba1a66f.581bf8","type":"set","name":"add cdl to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n    + $const.underscore\n    + $network-key\n    + '_route_prefixes'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$cdl`\" />\n","comments":"","x":1723.333236694336,"y":1123.3332977294922,"z":"62f2734c.91713c","wires":[]},{"id":"60464fe3.1ce95","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":1741.6664085388184,"y":1171.666591644287,"z":"62f2734c.91713c","wires":[]},{"id":"d19a94b6.5dfc38","type":"for","name":"for each address-family","xml":"<for silentFailure='true' index='address-family-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item_length`' >\n","comments":"","outputs":1,"x":1135.00004196167,"y":1491.6665668487549,"z":"62f2734c.91713c","wires":[["d23ed558.cb1758"]]},{"id":"f8901cf8.20f59","type":"for","name":"for each address","xml":"<for silentFailure='true' index='address-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip_length`' >\n","comments":"","outputs":1,"x":1848.3332824707031,"y":1266.6666355133057,"z":"62f2734c.91713c","wires":[["a936fe9a.9a9ee"]]},{"id":"d23ed558.cb1758","type":"switchNode","name":"switch address-family","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].ip-version`'>\n","comments":"","outputs":1,"x":1361.6665954589844,"y":1490.0000648498535,"z":"62f2734c.91713c","wires":[["fe1959bd.33f838","3db595d7.e3a98a"]]},{"id":"fe1959bd.33f838","type":"outcome","name":"ipv4","xml":"<outcome value='ipv4'>\n","comments":"","outputs":1,"x":1551.6666870117188,"y":1355.0001735687256,"z":"62f2734c.91713c","wires":[["754a7e97.8c42d"]]},{"id":"3db595d7.e3a98a","type":"outcome","name":"ipv6","xml":"<outcome value='ipv6'>\n","comments":"","outputs":1,"x":1554.9998588562012,"y":1636.6667766571045,"z":"62f2734c.91713c","wires":[["8f41f8df.eac208"]]},{"id":"754a7e97.8c42d","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1688.3332901000977,"y":1351.6667079925537,"z":"62f2734c.91713c","wires":[["f8901cf8.20f59","c38c0495.837428","5aa824bb.6446ec"]]},{"id":"48676628.cc5088","type":"set","name":"add address to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n    + $const.underscore\n    + $network-key\n    + $const.ip\n    + $const.underscore\n    + $address-index`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip[$address-index]`\" />\n","comments":"","x":2208.333251953125,"y":1208.333251953125,"z":"62f2734c.91713c","wires":[]},{"id":"c42f001f.2a652","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":2209.999839782715,"y":1256.66659450531,"z":"62f2734c.91713c","wires":[]},{"id":"a936fe9a.9a9ee","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2016.6666259765625,"y":1265,"z":"62f2734c.91713c","wires":[["48676628.cc5088","c42f001f.2a652","53a846e4.251ae8"]]},{"id":"53a846e4.251ae8","type":"switchNode","name":"switch address-index > 0","xml":"<switch test='`$address-index &gt; 0`'>\n","comments":"","outputs":1,"x":2213.3334197998047,"y":1333.3331422805786,"z":"62f2734c.91713c","wires":[["6bf44b9.a8d89b4","74022320.e9c29c"]]},{"id":"6bf44b9.a8d89b4","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2393.333251953125,"y":1305,"z":"62f2734c.91713c","wires":[["2d0a00ff.3b6b3"]]},{"id":"2d0a00ff.3b6b3","type":"set","name":"add address plus comma to cdl","xml":"<set>\n<parameter name='cdl' value=\"`$cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip[$address-index]`\" />\n","comments":"","x":2595.333251953125,"y":1305,"z":"62f2734c.91713c","wires":[]},{"id":"74022320.e9c29c","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2391.333251953125,"y":1361,"z":"62f2734c.91713c","wires":[["873dcb80.2faff8"]]},{"id":"873dcb80.2faff8","type":"set","name":"set cdl to address","xml":"<set>\n<parameter name='cdl' value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip[$address-index]`\" />\n","comments":"","x":2553.333251953125,"y":1361,"z":"62f2734c.91713c","wires":[]},{"id":"c38c0495.837428","type":"set","name":"add cdl to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n    + $const.underscore\n    + $network-key\n    + '_ips'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$cdl`\" />\n","comments":"","x":1849.9998779296875,"y":1406.6666259765625,"z":"62f2734c.91713c","wires":[]},{"id":"5aa824bb.6446ec","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":1867.9998779296875,"y":1454.6666259765625,"z":"62f2734c.91713c","wires":[]},{"id":"97e68dff.23095","type":"for","name":"for each address","xml":"<for silentFailure='true' index='address-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip_length`' >\n","comments":"","outputs":1,"x":1854.9998779296875,"y":1549.9998779296875,"z":"62f2734c.91713c","wires":[["2eb650e0.b5f73"]]},{"id":"8f41f8df.eac208","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1694.999885559082,"y":1634.9999504089355,"z":"62f2734c.91713c","wires":[["97e68dff.23095","5b654ee5.46e27","6733fbef.0138e4"]]},{"id":"cbc2bbcc.6b3748","type":"set","name":"add address to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n    + $const.underscore\n    + $network-key\n    + $const.v6-ip\n    + $const.underscore\n    + $address-index`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip[$address-index]`\" />\n","comments":"","x":2214.9998474121094,"y":1491.6664943695068,"z":"62f2734c.91713c","wires":[]},{"id":"887fbcb2.e02c4","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":2216.666435241699,"y":1539.999836921692,"z":"62f2734c.91713c","wires":[]},{"id":"2eb650e0.b5f73","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2023.3332214355469,"y":1548.3332424163818,"z":"62f2734c.91713c","wires":[["cbc2bbcc.6b3748","887fbcb2.e02c4","cea2944b.95f318"]]},{"id":"cea2944b.95f318","type":"switchNode","name":"switch address-index > 0","xml":"<switch test='`$address-index &gt; 0`'>\n","comments":"","outputs":1,"x":2220.000015258789,"y":1616.6663846969604,"z":"62f2734c.91713c","wires":[["2f174927.c651e6","2f5ba1df.cb11ee"]]},{"id":"2f174927.c651e6","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2399.9998474121094,"y":1588.3332424163818,"z":"62f2734c.91713c","wires":[["6b88ebae.0aef84"]]},{"id":"6b88ebae.0aef84","type":"set","name":"add address plus comma to cdl","xml":"<set>\n<parameter name='cdl' value=\"`$cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip[$address-index]`\" />\n","comments":"","x":2601.9998474121094,"y":1588.3332424163818,"z":"62f2734c.91713c","wires":[]},{"id":"2f5ba1df.cb11ee","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2397.9998474121094,"y":1644.3332424163818,"z":"62f2734c.91713c","wires":[["fe86748d.b66f28"]]},{"id":"fe86748d.b66f28","type":"set","name":"set cdl to address","xml":"<set>\n<parameter name='cdl' value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip[$address-index]`\" />\n","comments":"","x":2559.9998474121094,"y":1644.3332424163818,"z":"62f2734c.91713c","wires":[]},{"id":"5b654ee5.46e27","type":"set","name":"add cdl to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n    + $const.underscore\n    + $network-key\n    + '_v6_ips'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$cdl`\" />\n","comments":"","x":1856.6664733886719,"y":1689.9998683929443,"z":"62f2734c.91713c","wires":[]},{"id":"6733fbef.0138e4","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":1874.6664733886719,"y":1737.9998683929443,"z":"62f2734c.91713c","wires":[]},{"id":"3aa7c41f.a8470c","type":"switchNode","name":"switch related-network_length > 0","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length &gt; 0`'>\n","comments":"","outputs":1,"x":1148.3333587646484,"y":2143.333487510681,"z":"62f2734c.91713c","wires":[["ff1dc557.6dc7a8"]]},{"id":"ff1dc557.6dc7a8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1360.0000381469727,"y":2142.666537284851,"z":"62f2734c.91713c","wires":[["a5c6cc39.0d4d8"]]},{"id":"a5c6cc39.0d4d8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1491.6666450500488,"y":2141.999831199646,"z":"62f2734c.91713c","wires":[["e7d4476c.299588","e29c6aed.23c678","d33bac4b.10f7e","e32e550e.ce4b68","cb8125cd.13e778","94cbcee0.d1361","f175a4c9.d35bb8","fd3dcc46.f8298"]]},{"id":"cb8125cd.13e778","type":"set","name":"add segmentation-id to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n    + $const.underscore\n    + $network-key\n    + '_vlan_filter'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].segmentation-id`\" />\n","comments":"","x":1719.999900817871,"y":1811.6665754318237,"z":"62f2734c.91713c","wires":[]},{"id":"94cbcee0.d1361","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":1696.333251953125,"y":1856.333251953125,"z":"62f2734c.91713c","wires":[]},{"id":"fd3dcc46.f8298","type":"for","name":"for each related-network","xml":"<for silentFailure='true' index='related-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length`' >\n","comments":"","outputs":1,"x":1701.6666507720947,"y":2016.6666231155396,"z":"62f2734c.91713c","wires":[["572aa82b.90ab68"]]},{"id":"c7161dfe.afb23","type":"switchNode","name":"switch is-private","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.is-private`'>\n","comments":"","outputs":1,"x":2048.33309173584,"y":1951.6667442321777,"z":"62f2734c.91713c","wires":[["b17f6f2e.1935b","b01803e8.a26f2"]]},{"id":"f175a4c9.d35bb8","type":"set","name":"initialize cdls to null","xml":"<set>\n<parameter name='public-cdl' value='' />\n<parameter name='private-cdl' value='' />\n<parameter name='all-cdl' value='' />\n","comments":"","x":1686.6666107177734,"y":1901.666742324829,"z":"62f2734c.91713c","wires":[]},{"id":"b17f6f2e.1935b","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2206.666473388672,"y":1908.3331661224365,"z":"62f2734c.91713c","wires":[["79496cb8.acab64"]]},{"id":"b01803e8.a26f2","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2209.666435241699,"y":2002.6665840148926,"z":"62f2734c.91713c","wires":[["312620a3.e3d1e"]]},{"id":"79496cb8.acab64","type":"switchNode","name":"switch private-cdl","xml":"<switch test='`$private-cdl`'>\n","comments":"","outputs":1,"x":2368.333152770996,"y":1908.3332862854004,"z":"62f2734c.91713c","wires":[["6a6215a.82e86ec","7803a657.136108"]]},{"id":"6a6215a.82e86ec","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2526.6666564941406,"y":1883.3332033157349,"z":"62f2734c.91713c","wires":[["5ba2a85c.078eb8"]]},{"id":"7803a657.136108","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2526.666492462158,"y":1929.5237588882446,"z":"62f2734c.91713c","wires":[["dc9121f2.39da9"]]},{"id":"5ba2a85c.078eb8","type":"set","name":"set private-cdl to this vlan","xml":"<set>\n<parameter name='private-cdl'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`' />\n","comments":"","x":2716.6665000915527,"y":1881.6665773391724,"z":"62f2734c.91713c","wires":[]},{"id":"dc9121f2.39da9","type":"set","name":"add command and vlan to private-cdl","xml":"<set>\n<parameter name='private-cdl'\n  value=\"',' + `$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`\" />\n","comments":"","x":2753.3330879211426,"y":1928.3332052230835,"z":"62f2734c.91713c","wires":[]},{"id":"312620a3.e3d1e","type":"switchNode","name":"switch public-cdl","xml":"<switch test='`$public-cdl`'>\n","comments":"","outputs":1,"x":2366.666473388672,"y":2001.6665859222412,"z":"62f2734c.91713c","wires":[["5ce92933.3c92e8","1b65af91.1506b"]]},{"id":"5ce92933.3c92e8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2524.9999771118164,"y":1976.6665029525757,"z":"62f2734c.91713c","wires":[["d9f08638.37eb58"]]},{"id":"1b65af91.1506b","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2524.999813079834,"y":2022.8570585250854,"z":"62f2734c.91713c","wires":[["38aebf13.1ef4e"]]},{"id":"d9f08638.37eb58","type":"set","name":"set public-cdl to this vlan","xml":"<set>\n<parameter name='public-cdl'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`' />\n","comments":"","x":2714.9998207092285,"y":1974.9998769760132,"z":"62f2734c.91713c","wires":[]},{"id":"38aebf13.1ef4e","type":"set","name":"add command and vlan to public-cdl","xml":"<set>\n<parameter name='public-cdl'\n  value=\"',' + `$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`\" />\n","comments":"","x":2751.6664085388184,"y":2021.6665048599243,"z":"62f2734c.91713c","wires":[]},{"id":"572aa82b.90ab68","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1883.3333282470703,"y":2016.6666641235352,"z":"62f2734c.91713c","wires":[["682e5859.360888","c7161dfe.afb23"]]},{"id":"682e5859.360888","type":"switchNode","name":"switch all-cdl","xml":"<switch test='`$all-cdl`'>\n","comments":"","outputs":1,"x":2040,"y":2086.6665868759155,"z":"62f2734c.91713c","wires":[["1804c894.3df287","871157b1.94bb28"]]},{"id":"1804c894.3df287","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2201.6667137145996,"y":2066.666422843933,"z":"62f2734c.91713c","wires":[["f5d4d283.45595"]]},{"id":"871157b1.94bb28","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2201.666549682617,"y":2112.856978416443,"z":"62f2734c.91713c","wires":[["248ff863.6348b8"]]},{"id":"f5d4d283.45595","type":"set","name":"set all-cdl to this vlan","xml":"<set>\n<parameter name='all-cdl'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`' />\n","comments":"","x":2391.6665573120117,"y":2064.9997968673706,"z":"62f2734c.91713c","wires":[]},{"id":"248ff863.6348b8","type":"set","name":"add command and vlan to all-cdl","xml":"<set>\n<parameter name='all-cdl'\n  value=\"',' + `$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`\" />\n","comments":"","x":2428.3331451416016,"y":2111.6664247512817,"z":"62f2734c.91713c","wires":[]},{"id":"e7d4476c.299588","type":"switchNode","name":"switch private-cdl","xml":"<switch test='`$private-cdl`'>\n","comments":"","outputs":1,"x":1678.3331985473633,"y":2203.3334197998047,"z":"62f2734c.91713c","wires":[["1c73a12e.066f6f","42ab1d8.499bce4"]]},{"id":"1c73a12e.066f6f","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1835.0000076293945,"y":2164.999921798706,"z":"62f2734c.91713c","wires":[["c5bab246.388b5"]]},{"id":"42ab1d8.499bce4","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1833.3331604003906,"y":2244.5236892700195,"z":"62f2734c.91713c","wires":[["5e42e0c4.1139c"]]},{"id":"c5bab246.388b5","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1964.9998779296875,"y":2164.333251953125,"z":"62f2734c.91713c","wires":[[]]},{"id":"5e42e0c4.1139c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1961.6665687561035,"y":2244.6664638519287,"z":"62f2734c.91713c","wires":[["41a18d4b.5a1034","5b3a470d.93edc8"]]},{"id":"41a18d4b.5a1034","type":"set","name":"add private-cdl to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n    + $const.underscore\n    + $network-key\n    + '_private_vlans'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$private-cdl`\" />\n","comments":"","x":2141.6666717529297,"y":2221.66651058197,"z":"62f2734c.91713c","wires":[]},{"id":"5b3a470d.93edc8","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":2138,"y":2269.66650390625,"z":"62f2734c.91713c","wires":[]},{"id":"e29c6aed.23c678","type":"switchNode","name":"switch public-cdl","xml":"<switch test='`$public-cdl`'>\n","comments":"","outputs":1,"x":1681.6666259765625,"y":2353.333251953125,"z":"62f2734c.91713c","wires":[["c4d3a781.e41778","3dde98bd.bfcde8"]]},{"id":"c4d3a781.e41778","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1838.3334350585938,"y":2314.9997539520264,"z":"62f2734c.91713c","wires":[["26f503a2.08bafc"]]},{"id":"3dde98bd.bfcde8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1836.6665878295898,"y":2394.52352142334,"z":"62f2734c.91713c","wires":[["339c8ad7.f8ace6"]]},{"id":"26f503a2.08bafc","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1968.3333053588867,"y":2314.3330841064453,"z":"62f2734c.91713c","wires":[[]]},{"id":"339c8ad7.f8ace6","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1964.9999961853027,"y":2394.666296005249,"z":"62f2734c.91713c","wires":[["814f994c.027bc8","8a6a938c.3c5a9"]]},{"id":"814f994c.027bc8","type":"set","name":"add public-cdl to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n    + $const.underscore\n    + $network-key\n    + '_public_vlans'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$public-cdl`\" />\n","comments":"","x":2145.000099182129,"y":2371.6663427352905,"z":"62f2734c.91713c","wires":[]},{"id":"8a6a938c.3c5a9","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":2141.333427429199,"y":2419.6663360595703,"z":"62f2734c.91713c","wires":[]},{"id":"d33bac4b.10f7e","type":"set","name":"add all-cdl to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n    + $const.underscore\n    + $network-key\n    + '_guest_vlans'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$all-cdl`\" />\n","comments":"","x":1693.333236694336,"y":2463.3333492279053,"z":"62f2734c.91713c","wires":[]},{"id":"e32e550e.ce4b68","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":1702.9999542236328,"y":2511.333245277405,"z":"62f2734c.91713c","wires":[]},{"id":"c848779a.240d78","type":"for","name":"for each availability zone","xml":"<for silentFailure='true' index='az-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone_length`' >\n","comments":"","outputs":1,"x":353.33343505859375,"y":4374.9996337890625,"z":"62f2734c.91713c","wires":[["1bd5e073.965a3"]]},{"id":"1bd5e073.965a3","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":545.0000534057617,"y":4374.99986743927,"z":"62f2734c.91713c","wires":[["8c513e09.0ce7b","d8508728.0a6158"]]},{"id":"8c513e09.0ce7b","type":"set","name":"add availability zone to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`'availability_zone_'\n    + $az-index`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[$az-index]`\" />\n","comments":"","x":741.6667327880859,"y":4346.666642189026,"z":"62f2734c.91713c","wires":[]},{"id":"d8508728.0a6158","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":723.0001449584961,"y":4397.9997634887695,"z":"62f2734c.91713c","wires":[]},{"id":"512e36fe.88cae8","type":"for","name":"for each vnf-network","xml":"<for silentFailure='true' index='vnf-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >\n","comments":"","outputs":1,"x":336.66674041748047,"y":4552.856967926025,"z":"62f2734c.91713c","wires":[["5dc2919d.0b7f8"]]},{"id":"5dc2919d.0b7f8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":516.666748046875,"y":4551.428550720215,"z":"62f2734c.91713c","wires":[["5a5ba6e2.1e3948","5d7a46ba.98e168","7be857d0.7b5748","81225066.d422a","11749150.3bf66f","1d8a369d.e77f19"]]},{"id":"5a5ba6e2.1e3948","type":"set","name":"set network-key to null","xml":"<set>\n<parameter name='network-key' value='' />\n","comments":"","x":705.2381591796875,"y":4455.713935852051,"z":"62f2734c.91713c","wires":[]},{"id":"5d7a46ba.98e168","type":"for","name":"for each vm-type","xml":"<for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":686.6667175292969,"y":4544.285573005676,"z":"62f2734c.91713c","wires":[["6520c8ab.16e288"]]},{"id":"6520c8ab.16e288","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":854.3810386657715,"y":4542.857036590576,"z":"62f2734c.91713c","wires":[["7f2386f3.8d3528","2bea7bdd.32f244"]]},{"id":"7f2386f3.8d3528","type":"for","name":"for each vm-network","xml":"<for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\n","comments":"","outputs":1,"x":1028.4762916564941,"y":4510.190425872803,"z":"62f2734c.91713c","wires":[["e12ae3cf.61aad"]]},{"id":"e12ae3cf.61aad","type":"switchNode","name":"switch network-role matches","xml":"<switch test='`$network-role ==\n  $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role`'>\n","comments":"","outputs":1,"x":1268.0953826904297,"y":4509.999717712402,"z":"62f2734c.91713c","wires":[["e9540556.a1fb08"]]},{"id":"7be857d0.7b5748","type":"set","name":"set network-role","xml":"<set>\n<parameter name='network-role' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`' />\n","comments":"","x":685.2381591796875,"y":4499.999893188477,"z":"62f2734c.91713c","wires":[]},{"id":"e9540556.a1fb08","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1463.809642791748,"y":4508.571118354797,"z":"62f2734c.91713c","wires":[["3fdb12c.dbe93ee"]]},{"id":"3fdb12c.dbe93ee","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1589.5239219665527,"y":4507.142563819885,"z":"62f2734c.91713c","wires":[["d483caad.2e93d8","179b1b7.0d177e5"]]},{"id":"d483caad.2e93d8","type":"break","name":"break","xml":"<break>\n","comments":"","x":1710.9524765014648,"y":4528.571117401123,"z":"62f2734c.91713c","wires":[]},{"id":"81225066.d422a","type":"switchNode","name":"switch network-key","xml":"<switch test='`$network-key`'>\n","comments":"","outputs":1,"x":695.2382507324219,"y":4741.428112030029,"z":"62f2734c.91713c","wires":[["f5b5d9d4.1b7ca8","6d75dc10.6edb24"]]},{"id":"179b1b7.0d177e5","type":"switchNode","name":"switch network-role-tag","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag`'>\n","comments":"","outputs":1,"x":1760.9523620605469,"y":4478.571460723877,"z":"62f2734c.91713c","wires":[["91c4ae77.273bf","71e343c7.4e88ec"]]},{"id":"91c4ae77.273bf","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1936.6667671203613,"y":4452.856826782227,"z":"62f2734c.91713c","wires":[["bd1e769.01ded88"]]},{"id":"71e343c7.4e88ec","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1934.9999656677246,"y":4502.380542755127,"z":"62f2734c.91713c","wires":[["37c81618.2d146a"]]},{"id":"bd1e769.01ded88","type":"set","name":"set network-key to network-role","xml":"<set>\n<parameter name='network-key' value='`network-role`' />\n","comments":"","x":2138.095474243164,"y":4452.857176780701,"z":"62f2734c.91713c","wires":[]},{"id":"37c81618.2d146a","type":"set","name":"set network-key to network-role-tag","xml":"<set>\n<parameter name='network-key' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag`' />\n","comments":"","x":2149.52392578125,"y":4502.856931686401,"z":"62f2734c.91713c","wires":[]},{"id":"2bea7bdd.32f244","type":"switchNode","name":"switch network-key","xml":"<switch test='`$network-key`'>\n","comments":"","outputs":1,"x":1020.952522277832,"y":4589.999647140503,"z":"62f2734c.91713c","wires":[["5c09d85f.235618","3e62dc35.a9b424"]]},{"id":"995f7037.ee4bf","type":"break","name":"break","xml":"<break>\n","comments":"","x":1308.0953483581543,"y":4614.285466194153,"z":"62f2734c.91713c","wires":[]},{"id":"5c09d85f.235618","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1179.52392578125,"y":4565.714195251465,"z":"62f2734c.91713c","wires":[["a988af64.bd2f4"]]},{"id":"3e62dc35.a9b424","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1177.8571243286133,"y":4615.237911224365,"z":"62f2734c.91713c","wires":[["995f7037.ee4bf"]]},{"id":"a988af64.bd2f4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1308.0953369140625,"y":4564.85701751709,"z":"62f2734c.91713c","wires":[[]]},{"id":"f5b5d9d4.1b7ca8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":862.3810920715332,"y":4670.000102043152,"z":"62f2734c.91713c","wires":[["62f29656.051328"]]},{"id":"6d75dc10.6edb24","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":860.7143402099609,"y":4828.095188140869,"z":"62f2734c.91713c","wires":[["af332e6e.953f4"]]},{"id":"62f29656.051328","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":990.9525032043457,"y":4669.142924308777,"z":"62f2734c.91713c","wires":[[]]},{"id":"af332e6e.953f4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":989.5239601135254,"y":4827.14288520813,"z":"62f2734c.91713c","wires":[["8d304280.8e78d","2958fb9c.bdf9f4","7f3043be.92e2cc","72bf09ca.ab89d8","4b1cfd9a.9e8b24"]]},{"id":"8d304280.8e78d","type":"set","name":"add neutron-id to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$network-key\n    + '_net_id'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].neutron-id`\" />\n","comments":"","x":1179.5238876342773,"y":4718.571352958679,"z":"62f2734c.91713c","wires":[]},{"id":"2958fb9c.bdf9f4","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":1175.142978668213,"y":4761.33282661438,"z":"62f2734c.91713c","wires":[]},{"id":"7f3043be.92e2cc","type":"set","name":"add network-name to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$network-key\n    + '_net_name'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name`\" />\n","comments":"","x":1189.095371246338,"y":4804.285776138306,"z":"62f2734c.91713c","wires":[]},{"id":"72bf09ca.ab89d8","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":1172.2858390808105,"y":4847.0472021102905,"z":"62f2734c.91713c","wires":[]},{"id":"ba5eb0ad.38a06","type":"set","name":"add contrail-network-fqdn to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$network-key\n    + '_net_fqdn'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].contrail-network-fqdn\n`\" />\n","comments":"","x":1722.380874633789,"y":4915.714277267456,"z":"62f2734c.91713c","wires":[]},{"id":"4ca5a217.76314c","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":1684.1428260803223,"y":4958.475761413574,"z":"62f2734c.91713c","wires":[]},{"id":"4b1cfd9a.9e8b24","type":"switchNode","name":"switch contrail-network-fqdn","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].contrail-network-fqdn`'>\n","comments":"","outputs":1,"x":1188.0952453613281,"y":4912.857168197632,"z":"62f2734c.91713c","wires":[["a94f0d05.a0c3d","6ff9b046.b30fb"]]},{"id":"a94f0d05.a0c3d","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1376.6667366027832,"y":4888.571391105652,"z":"62f2734c.91713c","wires":[["d9f9059c.15a658"]]},{"id":"6ff9b046.b30fb","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1374.9999351501465,"y":4938.095107078552,"z":"62f2734c.91713c","wires":[["86fe563f.d04168"]]},{"id":"d9f9059c.15a658","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1505.2381477355957,"y":4887.714213371277,"z":"62f2734c.91713c","wires":[[]]},{"id":"86fe563f.d04168","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1506.666748046875,"y":4938.57137298584,"z":"62f2734c.91713c","wires":[["ba5eb0ad.38a06","4ca5a217.76314c"]]},{"id":"11749150.3bf66f","type":"for","name":"for each subnet","xml":"<for silentFailure='true' index='subnet-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >\n","comments":"","outputs":1,"x":683.8095855712891,"y":5118.571453094482,"z":"62f2734c.91713c","wires":[["244f7fd1.c9d83"]]},{"id":"1d8a369d.e77f19","type":"set","name":"set found-ipv4 and found-ipv6 to false","xml":"<set>\n<parameter name='found-ipv4' value='false' />\n<parameter name='found-ipv6' value='false' />\n","comments":"","x":752.3810729980469,"y":5075.713855743408,"z":"62f2734c.91713c","wires":[]},{"id":"244f7fd1.c9d83","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":833.8096771240234,"y":5118.571304321289,"z":"62f2734c.91713c","wires":[["c0967784.a9cf18"]]},{"id":"c0967784.a9cf18","type":"switchNode","name":"switch ip-version","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].ip-version`'>\n","comments":"","outputs":1,"x":990.952522277832,"y":5118.571067810059,"z":"62f2734c.91713c","wires":[["f39b1d48.b6c63","af349b27.a1c158"]]},{"id":"f39b1d48.b6c63","type":"outcome","name":"ipv4","xml":"<outcome value='ipv4'>\n","comments":"","outputs":1,"x":1165.2381744384766,"y":5055.714273452759,"z":"62f2734c.91713c","wires":[["b1c6c40a.950708"]]},{"id":"af349b27.a1c158","type":"outcome","name":"ipv6","xml":"<outcome value='ipv6'>\n","comments":"","outputs":1,"x":1169.5237655639648,"y":5188.571798324585,"z":"62f2734c.91713c","wires":[["670f8cf1.a9b464"]]},{"id":"b1c6c40a.950708","type":"switchNode","name":"switch found-ipv4","xml":"<switch test='`$found-ipv4`'>\n","comments":"","outputs":1,"x":1333.80952835083,"y":5054.285632133484,"z":"62f2734c.91713c","wires":[["6cb1cc6e.28fa94"]]},{"id":"670f8cf1.a9b464","type":"switchNode","name":"switch found-ipv6","xml":"<switch test='`$found-ipv6`'>\n","comments":"","outputs":1,"x":1338.0951881408691,"y":5187.71465587616,"z":"62f2734c.91713c","wires":[["9025c32a.9f928"]]},{"id":"6cb1cc6e.28fa94","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1509.5238565717423,"y":5054.285588809422,"z":"62f2734c.91713c","wires":[["27c818c3.9e9dc8"]]},{"id":"9025c32a.9f928","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1515.2380332946777,"y":5187.143051147461,"z":"62f2734c.91713c","wires":[["95186977.47d698"]]},{"id":"ccea70f4.1fdf3","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1942.381191253662,"y":5081.428560256958,"z":"62f2734c.91713c","wires":[["68526d0e.d8a294","1db07eb2.5a9051","8ffaabc7.de03f8"]]},{"id":"aa0bc365.926e7","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1939.523609161377,"y":5213.714340209961,"z":"62f2734c.91713c","wires":[["1fd54b79.bb1005","15d7075d.b5b319","57cbf528.afc52c"]]},{"id":"68526d0e.d8a294","type":"set","name":"add subnet-id to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$network-key\n    + $const.subnet-id`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`\" />\n","comments":"","x":2119.524112701416,"y":5039.999990463257,"z":"62f2734c.91713c","wires":[]},{"id":"1db07eb2.5a9051","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":2118.4288749694824,"y":5082.761473655701,"z":"62f2734c.91713c","wires":[]},{"id":"8ffaabc7.de03f8","type":"set","name":"set found-ipv4 to true","xml":"<set>\n<parameter name='found-ipv4' value='true' />\n","comments":"","x":2113.8097915649414,"y":5127.142671585083,"z":"62f2734c.91713c","wires":[]},{"id":"1fd54b79.bb1005","type":"set","name":"add subnet-id to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$network-key\n    + $const.v6-subnet-id`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`\" />\n","comments":"","x":2112.380645751953,"y":5170.000004768372,"z":"62f2734c.91713c","wires":[]},{"id":"15d7075d.b5b319","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":2111.2854080200195,"y":5212.761487960815,"z":"62f2734c.91713c","wires":[]},{"id":"57cbf528.afc52c","type":"set","name":"set found-ipv6 to true","xml":"<set>\n<parameter name='found-ipv6' value='true' />\n","comments":"","x":2106.6663246154785,"y":5257.142685890198,"z":"62f2734c.91713c","wires":[]},{"id":"27c818c3.9e9dc8","type":"switchNode","name":"switch subnet-id","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`'>\n","comments":"","outputs":1,"x":1670.9525146484375,"y":5054.28572845459,"z":"62f2734c.91713c","wires":[["474698f4.e5a8f8","893d66df.69a1c8"]]},{"id":"474698f4.e5a8f8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1820.9525146484375,"y":5031.428550720215,"z":"62f2734c.91713c","wires":[["425d43fb.c40e1c"]]},{"id":"893d66df.69a1c8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1819.2857131958008,"y":5080.952266693115,"z":"62f2734c.91713c","wires":[["ccea70f4.1fdf3"]]},{"id":"425d43fb.c40e1c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1940.9524993896484,"y":5030.857063293457,"z":"62f2734c.91713c","wires":[[]]},{"id":"95186977.47d698","type":"switchNode","name":"switch subnet-id","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`'>\n","comments":"","outputs":1,"x":1670.9522171020508,"y":5187.143106460571,"z":"62f2734c.91713c","wires":[["f64135ca.93fde8","d2a3d0dd.21dce"]]},{"id":"f64135ca.93fde8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1820.9522171020508,"y":5164.285928726196,"z":"62f2734c.91713c","wires":[["f72d2645.0f4908"]]},{"id":"d2a3d0dd.21dce","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1819.285415649414,"y":5213.809644699097,"z":"62f2734c.91713c","wires":[["aa0bc365.926e7"]]},{"id":"f72d2645.0f4908","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1940.9522018432617,"y":5163.7144412994385,"z":"62f2734c.91713c","wires":[[]]},{"id":"9027092b.9a5a08","type":"for","name":"for each vnfc","xml":"<for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":741.9047241210938,"y":2608.5717754364014,"z":"62f2734c.91713c","wires":[["65652af4.9688b4"]]},{"id":"a7f8e808.5c0098","type":"for","name":"for each vnfc-network-data","xml":"<for silentFailure='true' index='vnfc-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >\n","comments":"","outputs":1,"x":1085.3333740234375,"y":2606.571533203125,"z":"62f2734c.91713c","wires":[["b805b183.ee508"]]},{"id":"22e49014.6b821","type":"for","name":"for each vnfc-port","xml":"<for silentFailure='true' index='vnfc-port-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port_length`' >\n","comments":"","outputs":1,"x":1762.4762725830078,"y":2685.142961502075,"z":"62f2734c.91713c","wires":[["52340d1f.2ff214"]]},{"id":"def82530.611858","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1598.1904411315918,"y":2652.2860412597656,"z":"62f2734c.91713c","wires":[["22e49014.6b821","bce98c01.4dca5"]]},{"id":"bce98c01.4dca5","type":"set","name":"set port-index to 0","xml":"<set>\n<parameter name='port-index' value='0' />\n","comments":"","x":1763.904872894287,"y":2629.428563117981,"z":"62f2734c.91713c","wires":[]},{"id":"52340d1f.2ff214","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1890.809482574463,"y":3124.7145442962646,"z":"62f2734c.91713c","wires":[["89ff0614.526518","7620e989.c97b78","342b9bfd.017684","c2315ab0.40bc58","fcd55ba.1a587a8","963d393f.df37a8","8ed2959a.e11c28","43b64643.4db0e8","b84f70af.0a6b7","8ecb96aa.013b18"]]},{"id":"89ff0614.526518","type":"set","name":"add subnet-id to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type\n    + '_subint_'\n    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role\n    + '_port_'\n    + $port-index\n    + '_subintcount'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data_length`\" />\n","comments":"","x":2106.761764526367,"y":2610.381083011627,"z":"62f2734c.91713c","wires":[]},{"id":"7620e989.c97b78","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":2105.3331718444824,"y":2654.6666889190674,"z":"62f2734c.91713c","wires":[]},{"id":"b805b183.ee508","type":"switchNode","name":"switch vnfc-type","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type`'>\n","comments":"","outputs":1,"x":1311.0476760864258,"y":2605.142822265625,"z":"62f2734c.91713c","wires":[["2663ead5.32cdf6","831e3c5c.4e0fb"]]},{"id":"2663ead5.32cdf6","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1466.7618217468262,"y":2565.14298248291,"z":"62f2734c.91713c","wires":[["aeacaf5c.4a17e"]]},{"id":"831e3c5c.4e0fb","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1469.3807334899902,"y":2650.3810329437256,"z":"62f2734c.91713c","wires":[["def82530.611858"]]},{"id":"aeacaf5c.4a17e","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1586.761806488037,"y":2564.5714950561523,"z":"62f2734c.91713c","wires":[[]]},{"id":"8979c43f.b5e6a8","type":"set","name":"add floating-ip-v4 to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type\n    + '_subint_'\n    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role\n    + '_port_'\n    + $port-index\n    + '_floating_ip'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[0].floating-ips.floating-ip-v4`\" />\n","comments":"","x":2565.5715141296387,"y":2725.380892276764,"z":"62f2734c.91713c","wires":[]},{"id":"aed60799.28b158","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":2554.142921447754,"y":2769.6665325164795,"z":"62f2734c.91713c","wires":[]},{"id":"342b9bfd.017684","type":"switchNode","name":"switch floating-ip-v4","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[0].floating-ips.floating-ip-v4`'>\n","comments":"","outputs":1,"x":2096.761962890625,"y":2726.571213245392,"z":"62f2734c.91713c","wires":[["5e2e5276.f83e8c","ef40668.29c7a98"]]},{"id":"5441bc84.8b3dc4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2381.047863006592,"y":2748.000096797943,"z":"62f2734c.91713c","wires":[["8979c43f.b5e6a8","aed60799.28b158"]]},{"id":"5e2e5276.f83e8c","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2253.904945373535,"y":2700.8570895195007,"z":"62f2734c.91713c","wires":[["9a5572e6.d3b32"]]},{"id":"ef40668.29c7a98","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2252.2381439208984,"y":2750.380805492401,"z":"62f2734c.91713c","wires":[["5441bc84.8b3dc4"]]},{"id":"9a5572e6.d3b32","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2373.904930114746,"y":2700.285602092743,"z":"62f2734c.91713c","wires":[[]]},{"id":"be0b3da1.956e3","type":"set","name":"add floating-ip-v6 to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type\n    + '_subint_'\n    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role\n    + '_port_'\n    + $port-index\n    + '_floating_v6_ip'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[0].floating-ips.floating-ip-v6`\" />\n","comments":"","x":2564.142967224121,"y":2858.714638233185,"z":"62f2734c.91713c","wires":[]},{"id":"57e2f887.9006b8","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":2552.7143745422363,"y":2903.0002784729004,"z":"62f2734c.91713c","wires":[]},{"id":"8ecb96aa.013b18","type":"set","name":"increment port-index","xml":"<set>\n<parameter name='port-index' value='`$port-index + 1`' />\n","comments":"","x":2095.333526611328,"y":3855.3811588287354,"z":"62f2734c.91713c","wires":[]},{"id":"c2315ab0.40bc58","type":"switchNode","name":"switch floating-ip-v6","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[0].floating-ips.floating-ip-v6`'>\n","comments":"","outputs":1,"x":2095.3331146240234,"y":2856.571629047394,"z":"62f2734c.91713c","wires":[["4820f6a4.eec4f8","fe300720.a34a48"]]},{"id":"9852793a.5e9128","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2379.6190147399902,"y":2878.000512599945,"z":"62f2734c.91713c","wires":[["be0b3da1.956e3","57e2f887.9006b8"]]},{"id":"4820f6a4.eec4f8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2252.4760971069336,"y":2830.8575053215027,"z":"62f2734c.91713c","wires":[["c3c0f5a.0614308"]]},{"id":"fe300720.a34a48","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2250.809295654297,"y":2880.381221294403,"z":"62f2734c.91713c","wires":[["9852793a.5e9128"]]},{"id":"c3c0f5a.0614308","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2372.4760818481445,"y":2830.286017894745,"z":"62f2734c.91713c","wires":[[]]},{"id":"f27e39bf.037e88","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":308.69056701660156,"y":5615.952404022217,"z":"62f2734c.91713c","wires":[["fd83d742.733228","4d779994.6081a8","8d6f449e.f1f918","83e3ead7.7a63d8","30685a0.656d0a6","f46ab551.8a05b8"]]},{"id":"504ab2e0.abfe7c","type":"comment","name":"merge input parameters","info":"","comments":"","x":559.1667938232422,"y":5739.285895347595,"z":"62f2734c.91713c","wires":[]},{"id":"fd83d742.733228","type":"for","name":"for each input parameter","xml":"<for silentFailure='true' index='input-index' start='0' end='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`' >\n","comments":"","outputs":1,"x":531.4287261962891,"y":5781.666687011719,"z":"62f2734c.91713c","wires":[["ab46155c.385d98"]]},{"id":"eb7a938e.00c72","type":"for","name":"for each current parameter","xml":"<for index='cur-index' start='0' end='`$output-index`' >\n","comments":"","outputs":1,"x":919.5239715576172,"y":5511.666131019592,"z":"62f2734c.91713c","wires":[["30d6a7d1.f1b798"]]},{"id":"30d6a7d1.f1b798","type":"switchNode","name":"switch param names match?","xml":"<switch test='`$tmp.vf-module-topology.vf-module-parameters.param[$cur-index].name\n  == $tmp.preload-parameters.param[$preload-index].name`'>\n","comments":"","outputs":1,"x":1174.7621383666992,"y":5510.237768173218,"z":"62f2734c.91713c","wires":[["d7a3ef1e.6bc57"]]},{"id":"d7a3ef1e.6bc57","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1371.4287567138672,"y":5508.571184158325,"z":"62f2734c.91713c","wires":[["41434b9b.57fd24"]]},{"id":"d40c2249.01d93","type":"set","name":"overwrite with input value","xml":"<set>\n<parameter name='$tmp.vf-module-topology.vf-module-parameters.param[$cur-index].value' value='`$tmp.preload-parameters.param[$preload-index].value`' />\n","comments":"","x":1683.0954132080078,"y":5461.904270172119,"z":"62f2734c.91713c","wires":[]},{"id":"ab46155c.385d98","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":709.7620162963867,"y":5781.666283607483,"z":"62f2734c.91713c","wires":[["b3ee2d21.aacda","658f4340.e58ddc","c31bf966.dabfa8"]]},{"id":"197e6c7e.4deb04","type":"set","name":"set found-match to false","xml":"<set>\n<parameter name='found-match' value='false' />\n","comments":"","x":911.4288177490234,"y":5463.571181297302,"z":"62f2734c.91713c","wires":[]},{"id":"41434b9b.57fd24","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1498.0953903198242,"y":5506.904275894165,"z":"62f2734c.91713c","wires":[["d40c2249.01d93","cbf0f1bd.ee41d","53658f0.52dd77"]]},{"id":"cbf0f1bd.ee41d","type":"set","name":"set found-match to true","xml":"<set>\n<parameter name='found-match' value='true' />\n","comments":"","x":1676.4287185668945,"y":5508.5709400177,"z":"62f2734c.91713c","wires":[]},{"id":"53658f0.52dd77","type":"break","name":"break","xml":"<break>\n","comments":"","x":1624.7619972229004,"y":5553.571183204651,"z":"62f2734c.91713c","wires":[]},{"id":"86360576.d3d458","type":"switchNode","name":"switch found-match","xml":"<switch test='`$found-match`'>\n","comments":"","outputs":1,"x":896.4287414550781,"y":5625.237775802612,"z":"62f2734c.91713c","wires":[["4fb80273.d5805c"]]},{"id":"4fb80273.d5805c","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1066.4288291931152,"y":5625.23769569397,"z":"62f2734c.91713c","wires":[["939cb38b.686c1"]]},{"id":"939cb38b.686c1","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1198.0954132080078,"y":5623.57070350647,"z":"62f2734c.91713c","wires":[["c39ee472.45ae88","59b2698c.43eb18"]]},{"id":"2f4bb474.d8c29c","type":"comment","name":"add to the end of the current parameters","info":"","comments":"","x":1339.762191772461,"y":5566.905006408691,"z":"62f2734c.91713c","wires":[]},{"id":"c39ee472.45ae88","type":"set","name":"add param","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.preload-parameters.param[$preload-index].name`\" />\n<parameter name='tmp.vf-module-topology.vf-module-parameters.param[$output-index].value'\n  value=\"`$tmp.preload-parameters.param[$preload-index].value`\" />\n","comments":"","x":1333.0955123901367,"y":5603.571434020996,"z":"62f2734c.91713c","wires":[]},{"id":"59b2698c.43eb18","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":1369.857406616211,"y":5647.999420166016,"z":"62f2734c.91713c","wires":[]},{"id":"4d779994.6081a8","type":"set","name":"set new param length","xml":"<set>\n<parameter name='$tmp.vf-module-topology.vf-module-parameters.param_length' value='`$output-index`' />","comments":"","x":511.4287567138672,"y":5942.857385635376,"z":"62f2734c.91713c","wires":[]},{"id":"65652af4.9688b4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":890,"y":2608,"z":"62f2734c.91713c","wires":[["a7f8e808.5c0098"]]},{"id":"fcd55ba.1a587a8","type":"set","name":"set cdls to null","xml":"<set>\n<parameter name='vlan-cdl' value='' />\n<parameter name='net-names-cdl' value='' />\n<parameter name='net-id-cdl' value='' />\n<parameter name='ipv4-ips-cdl' value='' />\n<parameter name='ipv6-ips-cdl' value='' />\n","comments":"","x":2079.0001220703125,"y":3029.3336143493652,"z":"62f2734c.91713c","wires":[]},{"id":"963d393f.df37a8","type":"for","name":"for each vnic-sub-interface","xml":"<for silentFailure='true' index='vnic-sub-interface-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data_length`' >\n","comments":"","outputs":1,"x":2115.3333740234375,"y":3093.6669492721558,"z":"62f2734c.91713c","wires":[["f6957bfe.579ca8"]]},{"id":"8ced3400.2d051","type":"switchNode","name":"switch vlan-cdl","xml":"<switch test='`$vlan-cdl`'>\n","comments":"","outputs":1,"x":2487.000114440918,"y":3000.333372116089,"z":"62f2734c.91713c","wires":[["2644148e.c4aebc","6a57dd8a.0b0594"]]},{"id":"f6957bfe.579ca8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2305.3333740234375,"y":3093.6669492721558,"z":"62f2734c.91713c","wires":[["8ced3400.2d051","490adc8a.452f84","61965be1.e5aaa4","3fafa48.de0f25c"]]},{"id":"2644148e.c4aebc","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2685.000114440918,"y":2970.333372116089,"z":"62f2734c.91713c","wires":[["33540bd4.083f34"]]},{"id":"6a57dd8a.0b0594","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2683.619010925293,"y":3019.571409225464,"z":"62f2734c.91713c","wires":[["3dbfa41e.18650c"]]},{"id":"33540bd4.083f34","type":"set","name":"set vlan-cdl to vlan-tag-id","xml":"<set>\n<parameter name='vlan-cdl' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].vlan-tag-id`' />\n","comments":"","x":2871.000114440918,"y":2970.333372116089,"z":"62f2734c.91713c","wires":[]},{"id":"3dbfa41e.18650c","type":"set","name":"add comma and vlan-tag-id to vlan-cdl","xml":"<set>\n<parameter name='vlan-cdl' value=\"`$vlan-cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].vlan-tag-id`\" />\n","comments":"","x":2911.000114440918,"y":3018.333372116089,"z":"62f2734c.91713c","wires":[]},{"id":"490adc8a.452f84","type":"switchNode","name":"switch net-names-cdl","xml":"<switch test='`$net-names-cdl`'>\n","comments":"","outputs":1,"x":2503.000114440918,"y":3096.333372116089,"z":"62f2734c.91713c","wires":[["a25a51be.c9edb","6842b7e6.73dae8"]]},{"id":"a25a51be.c9edb","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2683.000114440918,"y":3066.333372116089,"z":"62f2734c.91713c","wires":[["ed69234b.439da"]]},{"id":"6842b7e6.73dae8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2681.619010925293,"y":3115.571409225464,"z":"62f2734c.91713c","wires":[["428d148f.9695ac"]]},{"id":"ed69234b.439da","type":"set","name":"set net-names-cdl to network-name","xml":"<set>\n<parameter name='net-names-cdl' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-name`' />\n","comments":"","x":2899.000114440918,"y":3064.333372116089,"z":"62f2734c.91713c","wires":[]},{"id":"428d148f.9695ac","type":"set","name":"add comma and network-name to net-names-cdl","xml":"<set>\n<parameter name='net-names-cdl' value=\"`$net-names-cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-name`\" />\n","comments":"","x":2941.000114440918,"y":3114.333372116089,"z":"62f2734c.91713c","wires":[]},{"id":"61965be1.e5aaa4","type":"switchNode","name":"switch net-id-cdl","xml":"<switch test='`$net-id-cdl`'>\n","comments":"","outputs":1,"x":2485.000114440918,"y":3192.333372116089,"z":"62f2734c.91713c","wires":[["d86f3512.88cdf8","5126613a.11315"]]},{"id":"d86f3512.88cdf8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2681.000114440918,"y":3162.333372116089,"z":"62f2734c.91713c","wires":[["9d9c53b2.66912"]]},{"id":"5126613a.11315","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2679.619010925293,"y":3211.571409225464,"z":"62f2734c.91713c","wires":[["89f9ff7a.bd5b6"]]},{"id":"9d9c53b2.66912","type":"set","name":"set net-id-cdl to network-id","xml":"<set>\n<parameter name='net-id-cdl' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-id`' />\n","comments":"","x":2871.000114440918,"y":3162.333372116089,"z":"62f2734c.91713c","wires":[]},{"id":"89f9ff7a.bd5b6","type":"set","name":"add comma and network-id to net-id-cdl","xml":"<set>\n<parameter name='net-id-cdl' value=\"`$net-id-cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-id`\" />\n","comments":"","x":2909.000114440918,"y":3210.333372116089,"z":"62f2734c.91713c","wires":[]},{"id":"3fafa48.de0f25c","type":"for","name":"for each network-information-item","xml":"<for silentFailure='true' index='nii-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item_length`' >\n","comments":"","outputs":1,"x":2540.333282470703,"y":3329.3334674835205,"z":"62f2734c.91713c","wires":[["38d3a875.4e92a8"]]},{"id":"38d3a875.4e92a8","type":"switchNode","name":"switch ip-version","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].ip-version`'>\n","comments":"","outputs":1,"x":2788.333282470703,"y":3327.3334674835205,"z":"62f2734c.91713c","wires":[["3ee08dd7.83a202","959816d5.90d7a8"]]},{"id":"3ee08dd7.83a202","type":"outcome","name":"ipv4","xml":"<outcome value='ipv4'>\n","comments":"","outputs":1,"x":2952.333240509033,"y":3281.6667709350586,"z":"62f2734c.91713c","wires":[["a91da198.edbaf"]]},{"id":"959816d5.90d7a8","type":"outcome","name":"ipv6","xml":"<outcome value='ipv6'>\n","comments":"","outputs":1,"x":2952.999942779541,"y":3380.000162124634,"z":"62f2734c.91713c","wires":[["e7f546e8.a98568"]]},{"id":"a91da198.edbaf","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3086.333240509033,"y":3281.6667709350586,"z":"62f2734c.91713c","wires":[["9b242717.3c1098"]]},{"id":"9b242717.3c1098","type":"for","name":"for each network-ip","xml":"<for silentFailure='true' index='ip-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].network-ips.network-ip_length`' >\n","comments":"","outputs":1,"x":3254.333240509033,"y":3281.6667709350586,"z":"62f2734c.91713c","wires":[["dded38ed.2df718"]]},{"id":"f8b51cd4.0f4e5","type":"set","name":"add network-ip to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type\n    + $const.underscore\n    + $vnfc-network-index\n    + '_subint_'\n    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role\n    + '_port_'\n    + $port-index\n    + '_ip_'\n    + $ip-index`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].network-ips.network-ip[$ip-index]`\" />\n","comments":"","x":3601.6668090820312,"y":3257.6667156219482,"z":"62f2734c.91713c","wires":[]},{"id":"e7f546e8.a98568","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3084.999744415283,"y":3378.3332748413086,"z":"62f2734c.91713c","wires":[["c19d0246.06bb5"]]},{"id":"c19d0246.06bb5","type":"for","name":"for each network-ip","xml":"<for silentFailure='true' index='ip-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].network-ips.network-ip_length`' >\n","comments":"","outputs":1,"x":3252.999744415283,"y":3378.3332748413086,"z":"62f2734c.91713c","wires":[["60991483.ac2fdc"]]},{"id":"8ed2959a.e11c28","type":"switchNode","name":"switch vlan-cdl","xml":"<switch test='`$vlan-cdl`'>\n","comments":"","outputs":1,"x":2078.3332901000977,"y":3500.0000591278076,"z":"62f2734c.91713c","wires":[["c6584076.45fa","13dd29bb.4b0326"]]},{"id":"c6584076.45fa","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2275.0001106262207,"y":3471.6668310165405,"z":"62f2734c.91713c","wires":[["2a0bdf43.2e99"]]},{"id":"13dd29bb.4b0326","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2273.6191902160645,"y":3529.2380990982056,"z":"62f2734c.91713c","wires":[["39daf652.26d5ba"]]},{"id":"2a0bdf43.2e99","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2408.333637237549,"y":3471.6668882369995,"z":"62f2734c.91713c","wires":[[]]},{"id":"39daf652.26d5ba","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2408.3335456848145,"y":3531.6668100357056,"z":"62f2734c.91713c","wires":[["1bccb9e1.8d13a6","b4e8345d.1a65b8"]]},{"id":"1bccb9e1.8d13a6","type":"set","name":"add vlan-cdl to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type\n    + $const.underscore\n    + $vnfc-network-index\n    + '_subint_'\n    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role\n    + '_port_'\n    + $port-index\n    + '_vlan_ids'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$vlan-cdl`\" />\n","comments":"","x":2581.6668090820312,"y":3508.33323097229,"z":"62f2734c.91713c","wires":[]},{"id":"b4e8345d.1a65b8","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":2581.904769897461,"y":3552.618975162506,"z":"62f2734c.91713c","wires":[]},{"id":"43b64643.4db0e8","type":"switchNode","name":"switch net-names-cdl","xml":"<switch test='`$net-names-cdl`'>\n","comments":"","outputs":1,"x":2099.999801635742,"y":3616.6665687561035,"z":"62f2734c.91713c","wires":[["69962b39.792284","1c69166f.a36a3a"]]},{"id":"69962b39.792284","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2276.6667671203613,"y":3588.333420753479,"z":"62f2734c.91713c","wires":[["9c3ae633.249288"]]},{"id":"1c69166f.a36a3a","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2275.285846710205,"y":3645.904688835144,"z":"62f2734c.91713c","wires":[["17ef0d4d.d1ba63"]]},{"id":"9c3ae633.249288","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2410.0002937316895,"y":3588.333477973938,"z":"62f2734c.91713c","wires":[[]]},{"id":"17ef0d4d.d1ba63","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2410.000202178955,"y":3648.333399772644,"z":"62f2734c.91713c","wires":[["7424cdb.1585134","e70a2fee.28d93"]]},{"id":"7424cdb.1585134","type":"set","name":"add net-names-cdl to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type\n    + $const.underscore\n    + $vnfc-network-index\n    + '_subint_'\n    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role\n    + '_port_'\n    + $port-index\n    + '_net_names'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$net-names-cdl`\" />\n","comments":"","x":2583.333465576172,"y":3624.9998207092285,"z":"62f2734c.91713c","wires":[]},{"id":"e70a2fee.28d93","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":2583.5714263916016,"y":3669.2855648994446,"z":"62f2734c.91713c","wires":[]},{"id":"b84f70af.0a6b7","type":"switchNode","name":"switch net-id-cdl","xml":"<switch test='`$net-id-cdl`'>\n","comments":"","outputs":1,"x":2084.9998779296875,"y":3738.333240509033,"z":"62f2734c.91713c","wires":[["5e4750e4.fb95f","9cf00216.e93f3"]]},{"id":"5e4750e4.fb95f","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2273.333354949951,"y":3710.000012397766,"z":"62f2734c.91713c","wires":[["8a6499e9.5adbd8"]]},{"id":"9cf00216.e93f3","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2271.952434539795,"y":3767.571280479431,"z":"62f2734c.91713c","wires":[["1b023261.ed410e"]]},{"id":"8a6499e9.5adbd8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2406.6668815612793,"y":3710.000069618225,"z":"62f2734c.91713c","wires":[[]]},{"id":"1b023261.ed410e","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2406.666790008545,"y":3769.999991416931,"z":"62f2734c.91713c","wires":[["e88db1d3.740ac","4058fef0.82f28"]]},{"id":"e88db1d3.740ac","type":"set","name":"add net-id-cdl to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type\n    + $const.underscore\n    + $vnfc-network-index\n    + '_subint_'\n    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role\n    + '_port_'\n    + $port-index\n    + '_net_ids'`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$net-id-cdl`\" />\n","comments":"","x":2580.0000534057617,"y":3746.6664123535156,"z":"62f2734c.91713c","wires":[]},{"id":"4058fef0.82f28","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":2580.2380142211914,"y":3790.9521565437317,"z":"62f2734c.91713c","wires":[]},{"id":"dded38ed.2df718","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3423.333251953125,"y":3279.999755859375,"z":"62f2734c.91713c","wires":[["f8b51cd4.0f4e5","fa4f9d15.6a235"]]},{"id":"60991483.ac2fdc","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3419.999755859375,"y":3378.333251953125,"z":"62f2734c.91713c","wires":[["74949237.c02abc","279ffa59.ebc8b6"]]},{"id":"fa4f9d15.6a235","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":3594.999755859375,"y":3306.66650390625,"z":"62f2734c.91713c","wires":[]},{"id":"74949237.c02abc","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":3594.999755859375,"y":3403.333251953125,"z":"62f2734c.91713c","wires":[]},{"id":"279ffa59.ebc8b6","type":"set","name":"add network-ip to param","xml":"<set>\n<parameter name='tmp.vf-module-parameters.param[$output-index].name'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type\n    + $const.underscore\n    + $vnfc-network-index\n    + '_subint_'\n    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role\n    + '_port_'\n    + $port-index\n    + '_v6_ip_'\n    + $ip-index`\" />\n<parameter name='tmp.vf-module-parameters.param[$output-index].value'\n  value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].network-ips.network-ip[$ip-index]`\" />\n","comments":"","x":3596.66650390625,"y":3358.333251953125,"z":"62f2734c.91713c","wires":[]},{"id":"9be09c43.01223","type":"set","name":"set test data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-type' value='vnfc-type-2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vfnc-port-id' value='vnfc-port-id-3' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].common-sub-interface-role' value='csir-3' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-id' value='network-id-5' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-name' value='network-name-5' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].vlan-tag-id' value='vlan-tag-id-5' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].ip-version' value='ipv4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].network-ips.network-ip[0]' value='9.9.9.9' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].network-ips.network-ip[1]' value='10.10.10.10' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].ip-version' value='ipv6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].network-ips.network-ip[0]' value='cafe::9' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].network-ips.network-ip[1]' value='cafe::10' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-id' value='network-id-6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-name' value='network-name-6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].vlan-tag-id' value='vlan-tag-id-6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].ip-version' value='ipv4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].network-ips.network-ip[0]' value='11.11.11.11' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].network-ips.network-ip[1]' value='12.12.12.12' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].ip-version' value='ipv6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].network-ips.network-ip[0]' value='cafe::11' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[0].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].network-ips.network-ip[1]' value='cafe::12' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vfnc-port-id' value='vnfc-port-id-4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].common-sub-interface-role' value='csir-4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-id' value='network-id-7' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-name' value='network-name-7' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].vlan-tag-id' value='vlan-tag-id-7' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].ip-version' value='ipv4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].network-ips.network-ip[0]' value='13.13.13.13' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[0].network-ips.network-ip[1]' value='14.14.14.14' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].ip-version' value='ipv6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].network-ips.network-ip[0]' value='cafe::13' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[0].network-information-items.network-information-item[1].network-ips.network-ip[1]' value='cafe::14' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-id' value='network-id-8' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-name' value='network-name-8' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].vlan-tag-id' value='vlan-tag-id-8' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].ip-version' value='ipv4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].network-ips.network-ip[0]' value='15.15.15.15' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[0].network-ips.network-ip[1]' value='16.16.16.16' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].ip-version' value='ipv6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].network-ips.network-ip_length' value='2' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].network-ips.network-ip[0]' value='cafe::15' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[1].vnfc-ports.vnfc-port[1].vnic-sub-interfaces.sub-interface-network-data[1].network-information-items.network-information-item[1].network-ips.network-ip[1]' value='cafe::16' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[1].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[0].vnfc-type' value='vnfc-type-3' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[1].vm-names.vnfc-names[1].vnfc-networks.vnfc-network-data[0].vnfc-type' value='vnfc-type-4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[1].vm-names.vnfc-names[2].vnfc-networks.vnfc-network-data[0].vnfc-type' value='vnfc-type-5' />\n","comments":"","x":735,"y":186.66665649414062,"z":"62f2734c.91713c","wires":[]},{"id":"8d6f449e.f1f918","type":"set","name":"set sdnc-generated-cloud-resources flag","xml":"<set>\n<parameter name='tmp.vf-module-topology.sdnc-generated-cloud-resources' value='true' />\n","comments":"","x":566.9048309326172,"y":5995.7154331207275,"z":"62f2734c.91713c","wires":[]},{"id":"83e3ead7.7a63d8","type":"switchNode","name":"switch current parameters length","xml":"<switch test='`$tmp.vf-module-topology.vf-module-parameters.param_length`'>\n","comments":"","outputs":1,"x":551.4286041259766,"y":5335.713705062866,"z":"62f2734c.91713c","wires":[["95c2dd2d.62308","ef5a89cb.544658","1cc7a4df.de2f8b"]]},{"id":"95c2dd2d.62308","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":774.285717010498,"y":5294.286109924316,"z":"62f2734c.91713c","wires":[["65a50c78.38adb4"]]},{"id":"ef5a89cb.544658","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":774.285774230957,"y":5337.142924308777,"z":"62f2734c.91713c","wires":[["65a50c78.38adb4"]]},{"id":"1cc7a4df.de2f8b","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":772.6190223693848,"y":5380.952753067017,"z":"62f2734c.91713c","wires":[["354850a7.898d6"]]},{"id":"65a50c78.38adb4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":901.4285888671875,"y":5317.14306640625,"z":"62f2734c.91713c","wires":[[]]},{"id":"354850a7.898d6","type":"set","name":"copy current parameters to preload-parameters","xml":"<set>\n<parameter name='tmp.preload-parameters.' value='`$tmp.vf-module-topology.vf-module-parameters.`' />\n","comments":"","x":1024.285701751709,"y":5379.999489784241,"z":"62f2734c.91713c","wires":[]},{"id":"30685a0.656d0a6","type":"set","name":"copy generated parameters to current parameters","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-parameters.' value='`$tmp.vf-module-parameters.`' />\n","comments":"","x":602.8571472167969,"y":5421.428827285767,"z":"62f2734c.91713c","wires":[]},{"id":"f46ab551.8a05b8","type":"for","name":"for each preload parameter","xml":"<for silentFailure='true' index='preload-index' start='0' end='`$tmp.preload-parameters.param_length`' >\n","comments":"","outputs":1,"x":532.8571701049805,"y":5519.999696731567,"z":"62f2734c.91713c","wires":[["650822ca.25206c"]]},{"id":"650822ca.25206c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":722.857177734375,"y":5520,"z":"62f2734c.91713c","wires":[["197e6c7e.4deb04","eb7a938e.00c72","86360576.d3d458"]]},{"id":"658f4340.e58ddc","type":"for","name":"for each current parameter","xml":"<for index='cur-index' start='0' end='`$output-index`' >\n","comments":"","outputs":1,"x":915.7142944335938,"y":5748.5712890625,"z":"62f2734c.91713c","wires":[["6886ea64.0d2104"]]},{"id":"6886ea64.0d2104","type":"switchNode","name":"switch param names match?","xml":"<switch test='`$tmp.vf-module-topology.vf-module-parameters.param[$cur-index].name\n  == $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$input-index].name`'>\n","comments":"","outputs":1,"x":1170.9524612426758,"y":5747.1429262161255,"z":"62f2734c.91713c","wires":[["4ea50796.ad30c8"]]},{"id":"4ea50796.ad30c8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1367.6190795898438,"y":5745.476342201233,"z":"62f2734c.91713c","wires":[["cb95a938.272d18"]]},{"id":"8eb2b1dc.fcbab","type":"set","name":"overwrite with input value","xml":"<set>\n<parameter name='$tmp.vf-module-topology.vf-module-parameters.param[$cur-index].value'\n  value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$input-index].value`' />\n","comments":"","x":1679.2857360839844,"y":5698.809428215027,"z":"62f2734c.91713c","wires":[]},{"id":"b3ee2d21.aacda","type":"set","name":"set found-match to false","xml":"<set>\n<parameter name='found-match' value='false' />\n","comments":"","x":907.619140625,"y":5700.47633934021,"z":"62f2734c.91713c","wires":[]},{"id":"cb95a938.272d18","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1494.2857131958008,"y":5743.809433937073,"z":"62f2734c.91713c","wires":[["8eb2b1dc.fcbab","4aedbade.ca15b4","3317660d.b68c3a"]]},{"id":"4aedbade.ca15b4","type":"set","name":"set found-match to true","xml":"<set>\n<parameter name='found-match' value='true' />\n","comments":"","x":1672.619041442871,"y":5745.476098060608,"z":"62f2734c.91713c","wires":[]},{"id":"3317660d.b68c3a","type":"break","name":"break","xml":"<break>\n","comments":"","x":1620.952320098877,"y":5790.476341247559,"z":"62f2734c.91713c","wires":[]},{"id":"c31bf966.dabfa8","type":"switchNode","name":"switch found-match","xml":"<switch test='`$found-match`'>\n","comments":"","outputs":1,"x":892.6190643310547,"y":5862.14293384552,"z":"62f2734c.91713c","wires":[["494fbcb2.720b64"]]},{"id":"494fbcb2.720b64","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1062.6191520690918,"y":5862.142853736877,"z":"62f2734c.91713c","wires":[["c7532a96.665888"]]},{"id":"c7532a96.665888","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1194.2857360839844,"y":5860.475861549377,"z":"62f2734c.91713c","wires":[["b057d643.384058","14f83152.4c64bf"]]},{"id":"52376c72.8ee654","type":"comment","name":"add to the end of the current parameters","info":"","comments":"","x":1335.9525146484375,"y":5803.810164451599,"z":"62f2734c.91713c","wires":[]},{"id":"b057d643.384058","type":"set","name":"add param","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-parameters.param[$output-index].name'\n  value=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$input-index].name`\" />\n<parameter name='tmp.vf-module-topology.vf-module-parameters.param[$output-index].value'\n  value=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$input-index].value`\" />\n","comments":"","x":1329.2858352661133,"y":5840.476592063904,"z":"62f2734c.91713c","wires":[]},{"id":"14f83152.4c64bf","type":"set","name":"increment output-index","xml":"<set>\n<parameter name='output-index' value='`$output-index + 1`' />\n","comments":"","x":1366.0477294921875,"y":5884.904578208923,"z":"62f2734c.91713c","wires":[]},{"id":"3070139e.fd923c","type":"comment","name":"merge preload parameters","info":"","comments":"","x":564.2857437133789,"y":5475.714262008667,"z":"62f2734c.91713c","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-assign-rollback.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-assign-rollback.json
new file mode 100755
index 0000000..6e03146
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-assign-rollback.json
@@ -0,0 +1 @@
+[{"id":"6611cc33.4769b4","type":"dgstart","name":"DGSTART","outputs":1,"x":105.71428680419922,"y":91.42857360839844,"z":"a61c8125.05663","wires":[["7b118e78.11ed4"]]},{"id":"7b118e78.11ed4","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":219.5714225769043,"y":131.23811149597168,"z":"a61c8125.05663","wires":[["6d23713a.ece31"]]},{"id":"6d23713a.ece31","type":"method","name":"method vf-module-topology-assign-rollback","xml":"<method rpc='vf-module-topology-assign-rollback' mode='sync'>\n","comments":"","outputs":1,"x":209.14291381835938,"y":171.42857360839844,"z":"a61c8125.05663","wires":[["1ef2c7cc.806e28"]]},{"id":"8be58336.3605a","type":"comment","name":"vf-module-topology-assign-rollback","info":"","comments":"","x":511.03538513183594,"y":34.40427303314209,"z":"a61c8125.05663","wires":[]},{"id":"a01c30ff.0f7af","type":"update","name":"update EIPAM_IP_ASSIGNMENTS to PENDING_DELETE...","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\nkey=\"UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $vf-module-topology-operation-input.vf-module-information.vf-module-id\" >","comments":"","outputs":1,"x":1126.3812255859375,"y":675.3092555999756,"z":"a61c8125.05663","wires":[[]]},{"id":"1e357beb.2c72e4","type":"set","name":"set status variable","xml":"<set>\n<parameter name='tmp.status' value=\"`'PENDING_DELETE_' + $vf-module-topology-operation-input.vf-module-information.vf-module-id`\" />\n                                                          ","comments":"","x":996.3811874389648,"y":628.6426277160645,"z":"a61c8125.05663","wires":[]},{"id":"308dbb1b.4b3c04","type":"execute","name":"execute EIPAM unassign IP addresses","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"unassignIPAddress\">\n<parameter name=\"deleteEIPAM_status\" value=\"`$tmp.status`\" />\n","comments":"","outputs":1,"x":1061.3811950683594,"y":720.3092994689941,"z":"a61c8125.05663","wires":[[]]},{"id":"919b7d2.b4b918","type":"comment","name":"roll back EIPAM","info":"","comments":"","x":931.3812637329102,"y":585.3096097310381,"z":"a61c8125.05663","wires":[]},{"id":"a13d2e4e.a523c","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":803.0478515625,"y":678.6427516937256,"z":"a61c8125.05663","wires":[["1e357beb.2c72e4","a01c30ff.0f7af","308dbb1b.4b3c04"]]},{"id":"ba58563d.0eb648","type":"switchNode","name":"switch from-preload","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.from-preload`'>\n","comments":"","outputs":1,"x":475.1192398071289,"y":742.8090019226074,"z":"a61c8125.05663","wires":[["68faff6b.f3735","9c0e13b.fd149f"]]},{"id":"68faff6b.f3735","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":670.3575553894043,"y":679.4758968353271,"z":"a61c8125.05663","wires":[["a13d2e4e.a523c"]]},{"id":"9c0e13b.fd149f","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":670.3574600219727,"y":814.1424045562744,"z":"a61c8125.05663","wires":[["34c11a61.6742b6"]]},{"id":"c94ef24c.014d3","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1500.0239372253418,"y":846.1423978805542,"z":"a61c8125.05663","wires":[["86bdf4ae.5607f8","2297dcb6.fa7cd4"]]},{"id":"2297dcb6.fa7cd4","type":"call","name":"call GENERIC-RESOURCE-API:naming-policy-generate-name","xml":"<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n","comments":"","outputs":1,"x":1812.3096733093262,"y":870.7139158248901,"z":"a61c8125.05663","wires":[[]]},{"id":"86bdf4ae.5607f8","type":"set","name":"set variables for deleting name","xml":"<set>\n<parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n","comments":"","x":1713.7382926940918,"y":823.5709867477417,"z":"a61c8125.05663","wires":[]},{"id":"34c11a61.6742b6","type":"for","name":"for each vm-type","xml":"<for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":838.3576049804688,"y":813.4756898880005,"z":"a61c8125.05663","wires":[["898bc38a.96afc"]]},{"id":"898bc38a.96afc","type":"for","name":"for each vnfc","xml":"<for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":1017.3576812744141,"y":813.4756650924683,"z":"a61c8125.05663","wires":[["9842cf80.216a"]]},{"id":"9842cf80.216a","type":"switchNode","name":"switch vnfc-name","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>\n","comments":"","outputs":1,"x":1200.3576126098633,"y":812.8089828491211,"z":"a61c8125.05663","wires":[["a5d6eeb7.cc2c","dde3b95d.baaee8"]]},{"id":"a5d6eeb7.cc2c","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1368.6908721923828,"y":779.4756889343262,"z":"a61c8125.05663","wires":[["d64466.efbceb98"]]},{"id":"dde3b95d.baaee8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1370.3575439453125,"y":845.6662015914917,"z":"a61c8125.05663","wires":[["c94ef24c.014d3"]]},{"id":"d64466.efbceb98","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1498.690715789795,"y":777.8090410232544,"z":"a61c8125.05663","wires":[[]]},{"id":"fa63ca43.680b98","type":"comment","name":"Rollback any generated VNFC names","info":"","comments":"","x":1013.6907348632812,"y":766.1423406600952,"z":"a61c8125.05663","wires":[]},{"id":"1ef2c7cc.806e28","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":182.49995803833008,"y":808.1428642272949,"z":"a61c8125.05663","wires":[["ba58563d.0eb648","8bb03b2.6971fc8","dc598f4f.0b826","ccd731c.18275d"]]},{"id":"8bb03b2.6971fc8","type":"for","name":"for each vm-type","xml":"<for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":462.2142868041992,"y":1020.9285650253296,"z":"a61c8125.05663","wires":[["6018acd1.59ed74"]]},{"id":"6018acd1.59ed74","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":646.047664642334,"y":1021.7620649337769,"z":"a61c8125.05663","wires":[["fc4b790f.ebea58","36046fb1.d665f"]]},{"id":"fc4b790f.ebea58","type":"for","name":"for each vnfc","xml":"<for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":819.3810234069824,"y":950.4290561676025,"z":"a61c8125.05663","wires":[["69ee7e57.c2841"]]},{"id":"69ee7e57.c2841","type":"switchNode","name":"switch created_flag","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].created_flag`'>\n","comments":"","outputs":1,"x":1012.2142448425293,"y":948.9285917282104,"z":"a61c8125.05663","wires":[["93833642.a20a88"]]},{"id":"93833642.a20a88","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1186.2142448425293,"y":948.9285917282104,"z":"a61c8125.05663","wires":[["546c17e9.29eb28"]]},{"id":"546c17e9.29eb28","type":"delete","name":"delete vnfc from A&AI","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n        resource=\"vnfc\" \n        key=\"vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\" >","comments":"","outputs":1,"x":1366.2142448425293,"y":948.9285917282104,"z":"a61c8125.05663","wires":[[]]},{"id":"ad537e73.9d32d","type":"comment","name":"delete A&AI objects","info":"","comments":"","x":520.2142753601074,"y":948.9285678863525,"z":"a61c8125.05663","wires":[]},{"id":"36046fb1.d665f","type":"for","name":"for each vm-network","xml":"<for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\n","comments":"","outputs":1,"x":850.8810844421387,"y":1078.595682144165,"z":"a61c8125.05663","wires":[["a8cd7435.4bc028"]]},{"id":"a8cd7435.4bc028","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1040.7144050598145,"y":1078.095121383667,"z":"a61c8125.05663","wires":[["d670be43.c0871","4ac039a4.7d8258"]]},{"id":"4ac039a4.7d8258","type":"for","name":"for each vnfc","xml":"<for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":1198.0477714538574,"y":1156.76194190979,"z":"a61c8125.05663","wires":[["5dedac0.63dbb54"]]},{"id":"5dedac0.63dbb54","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1368.0477714538574,"y":1156.76194190979,"z":"a61c8125.05663","wires":[["2c88b0e6.a8c3e","30f659d.7d59da6"]]},{"id":"d670be43.c0871","type":"switchNode","name":"switch created-flag","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].created-flag`'>\n","comments":"","outputs":1,"x":1222.2142753601074,"y":1000.9285678863525,"z":"a61c8125.05663","wires":[["317e645c.78c4bc"]]},{"id":"fa441998.023cd8","type":"delete","name":"delete vf-module relationship to l3-network","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"vf-module:relationship-list\"\n    key=\"vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id\n      AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id\n      AND related-to = l3-network\n      AND l3-network.network-id = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id\" >","comments":"","outputs":1,"x":1626.2142448425293,"y":1000.9285917282104,"z":"a61c8125.05663","wires":[[]]},{"id":"34ef77e0.82b708","type":"for","name":"for each floating ipv4 address","xml":"<for silentFailure='true' index='ipv4-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4_length`' >\n","comments":"","outputs":1,"x":1976.2142753601074,"y":1110.9285678863525,"z":"a61c8125.05663","wires":[["5efafe2c.9881a"]]},{"id":"f11d8f78.b78b2","type":"for","name":"for each floating ipv6 address","xml":"<for silentFailure='true' index='ipv6-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6_length`' >\n","comments":"","outputs":1,"x":1980.2142753601074,"y":1206.261697769165,"z":"a61c8125.05663","wires":[["bfa7d6b5.0cab38"]]},{"id":"2c88b0e6.a8c3e","type":"switchNode","name":"switch created-ipv4-flag","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv4-flag`'>\n","comments":"","outputs":1,"x":1586.2142753601074,"y":1110.9285678863525,"z":"a61c8125.05663","wires":[["81777ab.57ba488"]]},{"id":"30f659d.7d59da6","type":"switchNode","name":"switch created-ipv6-flag","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv6-flag`'>\n","comments":"","outputs":1,"x":1580.2142753601074,"y":1208.9285678863525,"z":"a61c8125.05663","wires":[["5482e159.91557"]]},{"id":"81777ab.57ba488","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1770.2142753601074,"y":1110.9285678863525,"z":"a61c8125.05663","wires":[["34ef77e0.82b708"]]},{"id":"5482e159.91557","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1770.2142753601074,"y":1206.9285678863525,"z":"a61c8125.05663","wires":[["f11d8f78.b78b2"]]},{"id":"5efafe2c.9881a","type":"delete","name":"delete vip-ipv4-address-list from A&AI","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n   resource=\"vip-ipv4-address-list\" \n   key=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\n\t  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\n\t  AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]\" >","comments":"","outputs":1,"x":2280.2142753601074,"y":1110.9285678863525,"z":"a61c8125.05663","wires":[[]]},{"id":"bfa7d6b5.0cab38","type":"delete","name":"delete vip-ipv6-address-list from A&AI","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n   resource=\"vip-ipv6-address-list\" \n   key=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\n\t  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\n\t  AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]\" >","comments":"","outputs":1,"x":2282.2142753601074,"y":1204.9285678863525,"z":"a61c8125.05663","wires":[[]]},{"id":"317e645c.78c4bc","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1386.2142448425293,"y":1000.9285917282104,"z":"a61c8125.05663","wires":[["fa441998.023cd8"]]},{"id":"dc598f4f.0b826","type":"switchNode","name":"switch vf-module_length","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n","comments":"","outputs":1,"x":492.5714340209961,"y":484.8571500778198,"z":"a61c8125.05663","wires":[["d3fdaf9c.101de"]]},{"id":"d3fdaf9c.101de","type":"outcome","name":"1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":676.8571395874023,"y":484.8571367263794,"z":"a61c8125.05663","wires":[["8f0f8a6f.5fe5d8"]]},{"id":"8f0f8a6f.5fe5d8","type":"switchNode","name":"switch created-ipv4-flag","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv4-flag`'>\n","comments":"","outputs":1,"x":855.4286346435547,"y":483.4286060333252,"z":"a61c8125.05663","wires":[["555a6d54.4cae24","a8c30ae.deb43f8","6204fd0a.72c444"]]},{"id":"555a6d54.4cae24","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1036.8570976257324,"y":433.4285697937012,"z":"a61c8125.05663","wires":[["bf7868bf.2c54a8"]]},{"id":"a8c30ae.deb43f8","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1036.8571243286133,"y":483.4285821914673,"z":"a61c8125.05663","wires":[["2212f8d3.6efaa8"]]},{"id":"2212f8d3.6efaa8","type":"switchNode","name":"switch created-ipv6-flag","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv6-flag`'>\n","comments":"","outputs":1,"x":1222.5714645385742,"y":504.85716247558594,"z":"a61c8125.05663","wires":[["601c50eb.8b643"]]},{"id":"601c50eb.8b643","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1404.0000534057617,"y":503.42857360839844,"z":"a61c8125.05663","wires":[["bf7868bf.2c54a8"]]},{"id":"e28e02a2.71b8a","type":"update","name":"update EIPAM_IP_ASSIGNMENTS to PENDING_DELETE...","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\nkey=\"UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id\" >","comments":"","outputs":1,"x":2286.8570251464844,"y":503.0000025431318,"z":"a61c8125.05663","wires":[[]]},{"id":"5caa6cfb.b3c044","type":"set","name":"set status variable","xml":"<set>\n<parameter name='tmp.status' value=\"`'PENDING_DELETE_' + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`\" />\n","comments":"","x":2156.8569869995117,"y":456.3333746592207,"z":"a61c8125.05663","wires":[]},{"id":"58bb94b3.e2102c","type":"execute","name":"execute EIPAM unassign IP addresses","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"unassignIPAddress\">\n<parameter name=\"deleteEIPAM_status\" value=\"`$tmp.status`\" />\n","comments":"","outputs":1,"x":2221.8569946289062,"y":548.0000464121504,"z":"a61c8125.05663","wires":[[]]},{"id":"cada7e7.6e7958","type":"comment","name":"roll back EIPAM floating addresses","info":"","comments":"","x":2266.1427154541016,"y":410.1432008743286,"z":"a61c8125.05663","wires":[]},{"id":"ed6fab87.507318","type":"block","name":"block","xml":"<block>","atomic":"true","comments":"","outputs":1,"x":1963.5236511230469,"y":506.3334986368818,"z":"a61c8125.05663","wires":[["5caa6cfb.b3c044","e28e02a2.71b8a","58bb94b3.e2102c"]]},{"id":"bf7868bf.2c54a8","type":"switchNode","name":"switch network-instance-group-id","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`'>\n","comments":"","outputs":1,"x":1626.8571166992188,"y":473.42857456207275,"z":"a61c8125.05663","wires":[["7625e9b6.731d48","f0f8bf7f.cfbf3"]]},{"id":"7625e9b6.731d48","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1838.2856979370117,"y":440.57142639160156,"z":"a61c8125.05663","wires":[["c6814130.3d6c2"]]},{"id":"f0f8bf7f.cfbf3","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1839.9523696899414,"y":506.7619390487671,"z":"a61c8125.05663","wires":[["ed6fab87.507318"]]},{"id":"c6814130.3d6c2","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1965.4286422729492,"y":439.1428680419922,"z":"a61c8125.05663","wires":[[]]},{"id":"6204fd0a.72c444","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1036.8571243286133,"y":527.7142877578735,"z":"a61c8125.05663","wires":[["2212f8d3.6efaa8"]]},{"id":"ccd731c.18275d","type":"switchNode","name":"switch network-instance-group-id","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`'>\n","comments":"","outputs":1,"x":508.28568267822266,"y":1353.428674697876,"z":"a61c8125.05663","wires":[["3fb536dc.ab5c2a","accb9c6f.fb2dd"]]},{"id":"3fb536dc.ab5c2a","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":723.0477905273438,"y":1316.2380135854082,"z":"a61c8125.05663","wires":[["e97bab2f.9e2558"]]},{"id":"accb9c6f.fb2dd","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":724.7144622802734,"y":1382.4285262425738,"z":"a61c8125.05663","wires":[["b4962d35.6adf3"]]},{"id":"e97bab2f.9e2558","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":850.1907348632812,"y":1314.8094552357989,"z":"a61c8125.05663","wires":[[]]},{"id":"b4962d35.6adf3","type":"for","name":"for each network-instance-group","xml":"<for index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >\n","comments":"","outputs":1,"x":928.2857437133789,"y":1382.0000286102295,"z":"a61c8125.05663","wires":[["f04a1fd1.4d346"]]},{"id":"f04a1fd1.4d346","type":"switchNode","name":"network-instance-group-ids match?","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id\n  == $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>\n","comments":"","outputs":1,"x":1226.6189193725586,"y":1380.3334131240845,"z":"a61c8125.05663","wires":[["20f04448.3fe75c"]]},{"id":"20f04448.3fe75c","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1448.2856903076172,"y":1379.0001916885376,"z":"a61c8125.05663","wires":[["e0068899.5e7468"]]},{"id":"e0068899.5e7468","type":"for","name":"for each network","xml":"<for index='network-index' start='0' end='`$service-data.network-instance-groups.network-instance-group[$nig-index].networks.network_length`' >\n","comments":"","outputs":1,"x":1604.0000267028809,"y":1377.7143173217773,"z":"a61c8125.05663","wires":[["8ea9a9de.587eb8"]]},{"id":"8ea9a9de.587eb8","type":"set","name":"clear vlan-tag-id and set network-status to unassigned","xml":"<set>\n<parameter name='service-data.network-instance-groups.network-instance-group[$nig-index].networks.network[$network-index].vlan-tag-id'\n  value='' />\n<parameter name='service-data.network-instance-groups.network-instance-group[$nig-index].networks.network[$network-index].network-status'\n  value='unassigned' />\n","comments":"","x":1915.4284591674805,"y":1376.285779953003,"z":"a61c8125.05663","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-activate.json
new file mode 100644
index 0000000..770dd6e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-activate.json
@@ -0,0 +1 @@
+[{"id":"253897fe.9804d8","type":"dgstart","name":"DGSTART","outputs":1,"x":104.28571319580078,"y":82.41365623474121,"z":"a513164d.b587e8","wires":[["1277bad9.c9dc65"]]},{"id":"1277bad9.c9dc65","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":217.57141876220703,"y":122.65176773071289,"z":"a513164d.b587e8","wires":[["d0cd4638.a8e048"]]},{"id":"d0cd4638.a8e048","type":"method","name":"method vf-module-topology-operation-activate","xml":"<method rpc='vf-module-topology-operation-activate' mode='sync'>\n","comments":"","outputs":1,"x":217.71434020996094,"y":162.4136562347412,"z":"a513164d.b587e8","wires":[["c2a3b593.0a5d08"]]},{"id":"670ca3d7.f1798c","type":"comment","name":"vf-module-topology-operation-activate","info":"","comments":"","x":498.6305694580078,"y":30,"z":"a513164d.b587e8","wires":[]},{"id":"9f59000e.f6806","type":"switchNode","name":"switch request-action","xml":"<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":507.8095245361328,"y":261.2707939147949,"z":"a513164d.b587e8","wires":[["a5ccb0a8.2cff4","ebb895aa.7188a8"]]},{"id":"a5ccb0a8.2cff4","type":"outcome","name":"CreateVfModuleInstance","xml":"<outcome value='CreateVfModuleInstance'>\n","comments":"","outputs":1,"x":758.8571395874023,"y":238.41368007659912,"z":"a513164d.b587e8","wires":[["121e0698.42b439"]]},{"id":"ebb895aa.7188a8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":702.5237846374512,"y":283.79466915130615,"z":"a513164d.b587e8","wires":[["9e326f10.6579d"]]},{"id":"121e0698.42b439","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":948.7143039703369,"y":238.41371154785156,"z":"a513164d.b587e8","wires":[[]]},{"id":"9e326f10.6579d","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=\"If svc-action is 'activate' then request-action must be 'CreateVfModuleInstance'\" />\n","comments":"","x":967.5237922668457,"y":284.12798166275024,"z":"a513164d.b587e8","wires":[]},{"id":"c2a3b593.0a5d08","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":159.28571319580078,"y":620.746940612793,"z":"a513164d.b587e8","wires":[["9f59000e.f6806","5a0c9e05.4c26d","120bbfec.5c7f5","62b75892.7f6148","30ab0690.1e23ea","7b205f57.6b2df","d2e05e08.6a7b6","9e432be5.4df7d8","ab8cd40.1cfff3","61692b8e.2508d4","c6388c88.2261c","59a1858f.55a5ac","fbfd66a7.490a98","9eef55da.15a338","4f0ef078.36dfd","66b49245.76614c"]]},{"id":"120bbfec.5c7f5","type":"switchNode","name":"switch service-data.vnfs.vnf_length","xml":"<switch test='`$service-data.vnfs.vnf_length`'>\n","comments":"","outputs":1,"x":552.6190414428711,"y":392.4136209487915,"z":"a513164d.b587e8","wires":[["8e94d387.5f49a","ad72ff68.ef906"]]},{"id":"8e94d387.5f49a","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":793.3333129882812,"y":369.5563611984253,"z":"a513164d.b587e8","wires":[["374fb247.1fdefe"]]},{"id":"ad72ff68.ef906","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":793.0951538085938,"y":410.50887966156006,"z":"a513164d.b587e8","wires":[["786c1667.ed7d38"]]},{"id":"374fb247.1fdefe","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=\"There are no VNFs defined in MD-SAL\" />\n","comments":"","x":959.999927520752,"y":368.842116355896,"z":"a513164d.b587e8","wires":[]},{"id":"786c1667.ed7d38","type":"for","name":"for each vnf","xml":"<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":955.3332977294922,"y":410.175498008728,"z":"a513164d.b587e8","wires":[["6cabe9b0.cf5628"]]},{"id":"6cabe9b0.cf5628","type":"switchNode","name":"switch service data vnf == input vnf","xml":"<switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`'>\n","comments":"","outputs":1,"x":1206.6665153503418,"y":409.8421850204468,"z":"a513164d.b587e8","wires":[["c9085c8b.10988"]]},{"id":"c9085c8b.10988","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1436.6666069030762,"y":409.17553901672363,"z":"a513164d.b587e8","wires":[["faa4e358.17a12"]]},{"id":"5a0c9e05.4c26d","type":"set","name":"set vnf-index to -1","xml":"<set>\n<parameter name='vnf-index' value='-1' />\n","comments":"","x":496.66664123535156,"y":330.50879287719727,"z":"a513164d.b587e8","wires":[]},{"id":"e7a79cb9.7fe04","type":"set","name":"set vnf-index to idx","xml":"<set>\n<parameter name='vnf-index' value='`$idx`' />\n","comments":"","x":1758.3332443237305,"y":380.1754970550537,"z":"a513164d.b587e8","wires":[]},{"id":"59a1858f.55a5ac","type":"switchNode","name":"switch vnf-index","xml":"<switch test='`$vnf-index`'>\n","comments":"","outputs":1,"x":488.33332443237305,"y":457.1754951477051,"z":"a513164d.b587e8","wires":[["659357d5.3ce228"]]},{"id":"659357d5.3ce228","type":"outcome","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":666.6667098999023,"y":456.5088710784912,"z":"a513164d.b587e8","wires":[["392aa8f.a19d758"]]},{"id":"392aa8f.a19d758","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=\"`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`\" />\n","comments":"","x":826.666618347168,"y":455.8421745300293,"z":"a513164d.b587e8","wires":[]},{"id":"faa4e358.17a12","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1585.0000686645508,"y":408.0952377319336,"z":"a513164d.b587e8","wires":[["e7a79cb9.7fe04","d2abc3b6.2fd2c"]]},{"id":"d2abc3b6.2fd2c","type":"break","name":"break","xml":"<break>\n","comments":"","x":1720.0000343322754,"y":429.7618236541748,"z":"a513164d.b587e8","wires":[]},{"id":"30ab0690.1e23ea","type":"switchNode","name":"switch service-data...vf-module_length","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n","comments":"","outputs":1,"x":560.9523544311523,"y":555.746992111206,"z":"a513164d.b587e8","wires":[["b4a7388e.909e78","80a063f6.2f01e"]]},{"id":"b4a7388e.909e78","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":811.6666641235352,"y":534.5563955307007,"z":"a513164d.b587e8","wires":[["bb37ec27.eb40e"]]},{"id":"80a063f6.2f01e","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":811.4285049438477,"y":575.5089139938354,"z":"a513164d.b587e8","wires":[["3a471dfe.805fa2"]]},{"id":"bb37ec27.eb40e","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=\"`'There are no VF modules defined in MD-SAL for VNF ' + $vf-module-topology-operation-input.vnf-information.vnf-id`\" />\n","comments":"","x":978.3332786560059,"y":533.8421506881714,"z":"a513164d.b587e8","wires":[]},{"id":"3a471dfe.805fa2","type":"for","name":"for each vf-module","xml":"<for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n","comments":"","outputs":1,"x":973.6666488647461,"y":575.1755323410034,"z":"a513164d.b587e8","wires":[["75a4ece.d91fd14"]]},{"id":"75a4ece.d91fd14","type":"switchNode","name":"switch service data vf-module == input vf-module","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":1279.9998092651367,"y":574.8422679901123,"z":"a513164d.b587e8","wires":[["cd38f5fd.973228"]]},{"id":"cd38f5fd.973228","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1549.9998626708984,"y":572.5088729858398,"z":"a513164d.b587e8","wires":[["6e925a0e.9bad64"]]},{"id":"62b75892.7f6148","type":"set","name":"set vf-module-index to -1","xml":"<set>\n<parameter name='vf-module-index' value='-1' />\n","comments":"","x":516.6666259765625,"y":505.5088310241699,"z":"a513164d.b587e8","wires":[]},{"id":"7819b897.9b8788","type":"set","name":"set vf-module-index to idx","xml":"<set>\n<parameter name='vf-module-index' value='`$idx`' />\n","comments":"","x":1879.9999542236328,"y":543.5088520050049,"z":"a513164d.b587e8","wires":[]},{"id":"7b205f57.6b2df","type":"switchNode","name":"switch vf-module-index","xml":"<switch test='`$vf-module-index`'>\n","comments":"","outputs":1,"x":513.3333282470703,"y":623.8422508239746,"z":"a513164d.b587e8","wires":[["7e534d10.70f0c4"]]},{"id":"7e534d10.70f0c4","type":"outcome","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":691.6667137145996,"y":623.1756267547607,"z":"a513164d.b587e8","wires":[["d2e9e465.4b0f08"]]},{"id":"d2e9e465.4b0f08","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=\"`'Unable to find VF module ID ' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' in MD-SAL'`\" />\n","comments":"","x":851.6666221618652,"y":622.5089302062988,"z":"a513164d.b587e8","wires":[]},{"id":"6e925a0e.9bad64","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1683.3334045410156,"y":571.4286127090454,"z":"a513164d.b587e8","wires":[["7819b897.9b8788","431f8c87.56adf4"]]},{"id":"431f8c87.56adf4","type":"break","name":"break","xml":"<break>\n","comments":"","x":1818.3333702087402,"y":593.0951986312866,"z":"a513164d.b587e8","wires":[]},{"id":"d2e05e08.6a7b6","type":"set","name":"set order-status to Created","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'\n  value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'\n  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-module-index].vf-module-data.vf-module-level-oper-status.last-action'\n  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\n","comments":"","x":528.5714797973633,"y":1216.22327709198,"z":"a513164d.b587e8","wires":[]},{"id":"588ce565.39dd2c","type":"switchNode","name":"switch order-status","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status`'>\n","comments":"","outputs":1,"x":504.2856674194336,"y":714.7469882965088,"z":"a513164d.b587e8","wires":[["6be401d0.b3524","56615580.a8db5c","5c68b194.1aa58"]]},{"id":"6be401d0.b3524","type":"outcome","name":"PendingCreate","xml":"<outcome value='PendingCreate'>\n","comments":"","outputs":1,"x":715.9524192810059,"y":671.4136371612549,"z":"a513164d.b587e8","wires":[["42b04be7.605cf4"]]},{"id":"56615580.a8db5c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":691.2857513427734,"y":756.7946605682373,"z":"a513164d.b587e8","wires":[["33b17b74.98d924"]]},{"id":"42b04be7.605cf4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":870.8095207214355,"y":689.0803823471069,"z":"a513164d.b587e8","wires":[[]]},{"id":"33b17b74.98d924","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=\"`'Order status is ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status + ' instead of PendingCreate or PendingDelete'`\" />\n","comments":"","x":885.2857398986816,"y":755.1280536651611,"z":"a513164d.b587e8","wires":[]},{"id":"9e432be5.4df7d8","type":"set","name":"copy input data","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.'\n   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-module-index].vf-module-data.request-information.'\n   value='$vf-module-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.'\n   value='$vf-module-topology-operation-input.service-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.'\n   value='$vf-module-topology-operation-input.vnf-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.'\n   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-module-index].vf-module-data.vf-module-request-input.'\n   value='$vf-module-topology-operation-input.vf-module-request-input.' />\n\n","comments":"","x":493.57141876220703,"y":1167.8899221420288,"z":"a513164d.b587e8","wires":[]},{"id":"ab8cd40.1cfff3","type":"save","name":"update vf-module to Active","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"vf-module\"\n   key=\"vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id\n      AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"orchestration-status\" value=\"Active\" />\n","comments":"","outputs":1,"x":526.904655456543,"y":970.2708263397217,"z":"a513164d.b587e8","wires":[["78e7a6a8.082428","ea900719.fbc578"]]},{"id":"1f016e5b.1ac382","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=\"`'No vf-module found in AAI for vf module ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`\" />\n","comments":"","x":923.5714149475098,"y":993.6041955947876,"z":"a513164d.b587e8","wires":[]},{"id":"78e7a6a8.082428","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":736.2619819641113,"y":950.5566654205322,"z":"a513164d.b587e8","wires":[["76a4fbff.34ca44"]]},{"id":"ea900719.fbc578","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":744.8334121704102,"y":994.842378616333,"z":"a513164d.b587e8","wires":[["1f016e5b.1ac382"]]},{"id":"76a4fbff.34ca44","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 updating vf-module in AAI\" />\n","comments":"","x":926.2620086669922,"y":950.366400718689,"z":"a513164d.b587e8","wires":[]},{"id":"61692b8e.2508d4","type":"update","name":"Update EIPAM_IP_ASSIGNMENTS to ACTIVE","xml":"<update resource='SQL' force='true' plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' \n  key='UPDATE EIPAM_IP_ASSIGNMENTS SET status = \"ACTIVE\" WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id'>\n","comments":"","outputs":1,"x":590.2380752563477,"y":1124.5565662384033,"z":"a513164d.b587e8","wires":[["a400120c.32d8b"]]},{"id":"a400120c.32d8b","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":856.9047470092773,"y":1122.8899059295654,"z":"a513164d.b587e8","wires":[["2d90cf92.ce7de"]]},{"id":"2d90cf92.ce7de","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 updating EIPAM_IP_ASSIGNMENTS table\" />\n","comments":"","x":1006.9047470092773,"y":1121.2232189178467,"z":"a513164d.b587e8","wires":[]},{"id":"c6388c88.2261c","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":490.71422576904297,"y":1313.8423299789429,"z":"a513164d.b587e8","wires":[]},{"id":"5c68b194.1aa58","type":"outcome","name":"PendingDelete","xml":"<outcome value='PendingDelete'>\n","comments":"","outputs":1,"x":715.9523696899414,"y":713.3333053588867,"z":"a513164d.b587e8","wires":[["42b04be7.605cf4"]]},{"id":"fbfd66a7.490a98","type":"switchNode","name":"switch vlan-vnfc-instance-group_length","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`'>\n","comments":"","outputs":1,"x":566.6666793823242,"y":854.3184928894043,"z":"a513164d.b587e8","wires":[["bacf35b7.11ac18","49ee94e2.45f87c","880d861c.b8cce8"]]},{"id":"bacf35b7.11ac18","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":799.5238571166992,"y":807.1755809783936,"z":"a513164d.b587e8","wires":[["5c899c3f.07e234"]]},{"id":"49ee94e2.45f87c","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":799.5237483978271,"y":852.8898429870605,"z":"a513164d.b587e8","wires":[["5c899c3f.07e234"]]},{"id":"880d861c.b8cce8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":798.0951995849609,"y":901.9375038146973,"z":"a513164d.b587e8","wires":[["958797c2.5ae5a8"]]},{"id":"5c899c3f.07e234","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":928.0952529907227,"y":827.17555809021,"z":"a513164d.b587e8","wires":[[]]},{"id":"9eef55da.15a338","type":"execute","name":"execute PropertiesNode","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":520.9523849487305,"y":201.4612865447998,"z":"a513164d.b587e8","wires":[[]]},{"id":"4f0ef078.36dfd","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-vfmoduleactivate.log' />\n","comments":"","outputs":1,"x":486.4285888671875,"y":1264.318528175354,"z":"a513164d.b587e8","wires":[[]]},{"id":"958797c2.5ae5a8","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-vlan-tagging-activate","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-activate' mode='sync' >\n","comments":"","outputs":1,"x":1132.6191024780273,"y":901.4135723114014,"z":"a513164d.b587e8","wires":[["56f9841d.9bbbec"]]},{"id":"56f9841d.9bbbec","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1470.9523658752441,"y":900.7471504211426,"z":"a513164d.b587e8","wires":[["9d2071d5.2c25c"]]},{"id":"9d2071d5.2c25c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n","comments":"","x":1620.952262878418,"y":899.0803050994873,"z":"a513164d.b587e8","wires":[]},{"id":"66b49245.76614c","type":"for","name":"for each vm-type","xml":"<for silentFailure='true' index='vm-type-index' start='0'\n  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":497.85715103149414,"y":1057.2856426239014,"z":"a513164d.b587e8","wires":[["280c9cb0.667b24"]]},{"id":"280c9cb0.667b24","type":"for","name":"for each vnfc","xml":"<for silentFailure='true' index='vnfc-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":674.5238914489746,"y":1056.6668376922607,"z":"a513164d.b587e8","wires":[["184691ab.6cf73e"]]},{"id":"184691ab.6cf73e","type":"save","name":"update vnfc to Active","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"vnfc\"\n   key=\"vnfc.vnfc-name = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"orchestration-status\" value=\"Active\" />\n<parameter name=\"prov-status\" value=\"NVTPROV\" />\n","comments":"","outputs":1,"x":889.2857627868652,"y":1055.8571224212646,"z":"a513164d.b587e8","wires":[["997c88da.d2aad8","cae348fb.2f2c48"]]},{"id":"434861b1.ae452","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=\"`'No vnfc found in AAI for vnfc name ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`\" />\n","comments":"","x":1252.142807006836,"y":1074.8572216033936,"z":"a513164d.b587e8","wires":[]},{"id":"997c88da.d2aad8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1089.1191673278809,"y":1031.381106376648,"z":"a513164d.b587e8","wires":[["da3fd75c.7374d8"]]},{"id":"cae348fb.2f2c48","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1097.6905975341797,"y":1075.6668195724487,"z":"a513164d.b587e8","wires":[["434861b1.ae452"]]},{"id":"da3fd75c.7374d8","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 updating vnfc in AAI\" />\n","comments":"","x":1254.8334007263184,"y":1031.619426727295,"z":"a513164d.b587e8","wires":[]},{"id":"de1a984f.167338","type":"comment","name":"check removed with US622450","info":"","comments":"","x":434.2857360839844,"y":677.1428833007812,"z":"a513164d.b587e8","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-no-preload.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-no-preload.json
new file mode 100755
index 0000000..6c4c9fd
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-no-preload.json
@@ -0,0 +1 @@
+[{"id":"ccf106c5.707b48","type":"dgstart","name":"DGSTART","outputs":1,"x":110,"y":92.02430057525635,"z":"13e6e2ea.39c6bd","wires":[["4b890a54.767294"]]},{"id":"4b890a54.767294","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":223.85713577270508,"y":131.8338384628296,"z":"13e6e2ea.39c6bd","wires":[["3c2baa81.1215b6"]]},{"id":"3c2baa81.1215b6","type":"method","name":"method vf-module-topology-operation-assign-no-preload","xml":"<method rpc='vf-module-topology-operation-assign-no-preload' mode='sync'>\n","comments":"","outputs":1,"x":255.42862701416016,"y":172.02430057525635,"z":"13e6e2ea.39c6bd","wires":[["9d5e708.3c6859"]]},{"id":"f904cbec.78e8f8","type":"comment","name":"vf-module-topology-operation-assign-no-preload","info":"","comments":"","x":515.3210983276367,"y":35,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"63f3696.6218498","type":"get-resource","name":"get-resource VF_MODULE_TO_VFC_MAPPING","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODULE_TO_VFC_MAPPING WHERE vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'\n  pfx='db.vf-module-to-vfc-mapping[]'>\n\n","comments":"","outputs":1,"x":694.6667366027832,"y":329.6909623146057,"z":"13e6e2ea.39c6bd","wires":[["211af9cd.6c7426","878c48a4.cb6108"]]},{"id":"211af9cd.6c7426","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":960.4523239135742,"y":310.07178592681885,"z":"13e6e2ea.39c6bd","wires":[["13c51e83.af0a61"]]},{"id":"878c48a4.cb6108","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":969.023754119873,"y":354.35749912261963,"z":"13e6e2ea.39c6bd","wires":[["1f09fa88.e70a15"]]},{"id":"13c51e83.af0a61","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 reading VF_MODULE_TO_VFC_MAPPING table\" />\n","comments":"","x":1135.4522552490234,"y":309.2146863937378,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"b4576528.8788e8","type":"for","name":"for each vm-type","xml":"<for index='vm-type-index' start='0' end='`$db.vf-module-to-vfc-mapping_length`' >\n","comments":"","outputs":1,"x":575.5951805114746,"y":873.1674156188965,"z":"13e6e2ea.39c6bd","wires":[["fe4cfa93.00c808"]]},{"id":"da35a04f.296c6","type":"get-resource","name":"get-resource VFC_MODEL","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VFC_MODEL WHERE customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'\n  pfx='db.vfc-model'>\n\n","comments":"","outputs":1,"x":1020.6428604125977,"y":471.9292640686035,"z":"13e6e2ea.39c6bd","wires":[["d1591ba2.d88918","fed633f0.bd231"]]},{"id":"db7c0a65.9461d8","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=\"`'No entries found in VFC_MODEL table for customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc_customization_uuid`\" />\n","comments":"","x":1391.0712280273438,"y":496.3575782775879,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"d1591ba2.d88918","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1216.4284973144531,"y":452.3099365234375,"z":"13e6e2ea.39c6bd","wires":[["b8e462f5.a1b1e"]]},{"id":"fed633f0.bd231","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1224.999927520752,"y":496.5956497192383,"z":"13e6e2ea.39c6bd","wires":[["db7c0a65.9461d8"]]},{"id":"b8e462f5.a1b1e","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 reading VFC_MODEL table\" />\n","comments":"","x":1391.4284286499023,"y":451.45283699035645,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"fe4cfa93.00c808","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":767.4999847412109,"y":871.7388010025024,"z":"13e6e2ea.39c6bd","wires":[["da35a04f.296c6","4ed899f9.797c48","63f600f1.839a7","fabeac3e.e95e4","cb019d88.194c5","94ce3ab9.eb4458","f5972382.8377e","c40d94b7.4c8af8","4214c675.f10ac8","66d4bdfe.f66fb4"]]},{"id":"50c85fed.5c6f5","type":"set","name":"set vm_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm_length'\n  value='`$db.vf-module-to-vfc-mapping_length`' />\n","comments":"","x":586.5713119506836,"y":389.8816328048706,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"4ed899f9.797c48","type":"set","name":"set vm data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type'\n   value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code'\n   value='`$db.vfc-model.nfc-naming-code`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type-tag'\n   value='`$db.vfc-model.vm-type-tag`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count'\n   value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />\n\n<!-- Context variables used when creating vnfc object in AAI -->\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid'\n   value='`$db.vfc-model.invariant-uuid`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function'\n   value='`$db.vfc-model.nfc-function`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].uuid'\n   value='`$db.vfc-model.uuid`' />\n","comments":"","x":975.6428146362305,"y":635.0245161056519,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"63f600f1.839a7","type":"for","name":"for each vm","xml":"<for index='vm-index' start='0' end='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >\n","comments":"","outputs":1,"x":975.8807220458984,"y":844.2774267196655,"z":"13e6e2ea.39c6bd","wires":[["eb592c2.c19d8d"]]},{"id":"fabeac3e.e95e4","type":"set","name":"set vm-name-length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length'\n  value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />\n","comments":"","x":1002.0713577270508,"y":680.7062349319458,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"b41879b4.cf80e8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1760.8808873494472,"y":793.7538928985596,"z":"13e6e2ea.39c6bd","wires":[["31801b6d.e4e794"]]},{"id":"8d4f03c2.ba403","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1764.2142486572266,"y":838.5633668899536,"z":"13e6e2ea.39c6bd","wires":[["f89a65be.4e1708"]]},{"id":"f89a65be.4e1708","type":"set","name":"set vm-name to generated name","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]'\n  value='`$naming-policy-generate-name-output.vm-name`' />\n","comments":"","x":1985.8808212280273,"y":838.0394048690796,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"eb592c2.c19d8d","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1140.28568649292,"y":843.9203271865845,"z":"13e6e2ea.39c6bd","wires":[["76706fb6.60a4e","339e662e.fbd89a","a38671f.88cbf9","21a55e27.060852"]]},{"id":"cb019d88.194c5","type":"get-resource","name":"get-resource VFC_TO_NETWORK_ROLE_MAPPING","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VFC_TO_NETWORK_ROLE_MAPPING WHERE vfc_customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'\n  pfx='db.vfc-to-network-role-mapping[]'>\n\n","comments":"","outputs":1,"x":1109.9999618530273,"y":1025.6345911026,"z":"13e6e2ea.39c6bd","wires":[["9ad4ffbc.310cb","9240ed89.b79"]]},{"id":"9ad4ffbc.310cb","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1397.2141647338867,"y":1006.015438079834,"z":"13e6e2ea.39c6bd","wires":[["5f9b8976.1118a8"]]},{"id":"9240ed89.b79","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1405.7855949401855,"y":1050.3011512756348,"z":"13e6e2ea.39c6bd","wires":[["d7650e2f.710f5"]]},{"id":"7f8ac8c0.5a55c8","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 reading VFC_TO_NETWORK_ROLE_MAPPING table\" />\n","comments":"","x":1720.5474281311035,"y":1005.1583118438721,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"94ce3ab9.eb4458","type":"for","name":"for each network-role","xml":"<for index='network-role-index' start='0' end='`$db.vfc-to-network-role-mapping_length`' >\n","comments":"","outputs":1,"x":1003.0952377319336,"y":1333.8254594802856,"z":"13e6e2ea.39c6bd","wires":[["dffdeb92.ec5de8"]]},{"id":"dffdeb92.ec5de8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1209.5237045288086,"y":1333.491937637329,"z":"13e6e2ea.39c6bd","wires":[["43d2700a.b7fa5","fa9c37cf.c9d598","399eb20b.2ea8fe","1d05761c.d860aa","75ef736b.dd2aec","5e6bc2d9.c929fc","5e90e6ce.652298"]]},{"id":"43d2700a.b7fa5","type":"for","name":"for each network","xml":"<for silentFailure='true' index='idx' start='0' end='`$service-data.networks.network_length`' >\n","comments":"","outputs":1,"x":1418.5712661743164,"y":1165.6346940994263,"z":"13e6e2ea.39c6bd","wires":[["7dca3e9a.b10f9"]]},{"id":"fa9c37cf.c9d598","type":"set","name":"set network-index to -1","xml":"<set>\n<parameter name='network-index' value='-1' />\n","comments":"","x":1438.5713348388672,"y":1122.7776908874512,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"7dca3e9a.b10f9","type":"switchNode","name":"switch network-role matches","xml":"<switch test='`$service-data.networks.network[$idx].network-data.network-topology.network-topology-identifier-structure.network-role == $db.vfc-to-network-role-mapping[$network-role-index].network-role`'>\n","comments":"","outputs":1,"x":1647.1425399780273,"y":1164.2058839797974,"z":"13e6e2ea.39c6bd","wires":[["79ea2010.e35cf"]]},{"id":"79ea2010.e35cf","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1845.7142066955566,"y":1164.206088066101,"z":"13e6e2ea.39c6bd","wires":[["a69072b0.40d9"]]},{"id":"a69072b0.40d9","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1987.1427745819092,"y":1162.7775163650513,"z":"13e6e2ea.39c6bd","wires":[["febff1ac.c1531","41885e24.cde4c"]]},{"id":"febff1ac.c1531","type":"set","name":"set network-index to idx","xml":"<set>\n<parameter name='network-index' value='`$idx`' />\n","comments":"","x":2165.714286804199,"y":1139.9205121994019,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"41885e24.cde4c","type":"break","name":"break","xml":"<break>\n","comments":"","x":2114.2855262756348,"y":1185.6346921920776,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"399eb20b.2ea8fe","type":"switchNode","name":"switch network-index","xml":"<switch test='`$network-index`'>\n","comments":"","outputs":1,"x":1430.4761047363281,"y":1214.4443311691284,"z":"13e6e2ea.39c6bd","wires":[["dc929053.5343b"]]},{"id":"dc929053.5343b","type":"outcomeTrue","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":1624.7618293762207,"y":1214.4442281723022,"z":"13e6e2ea.39c6bd","wires":[["14d70fd7.6db44"]]},{"id":"edc0a5ec.24cc78","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=\"`'No network found in MD-SAL with network-role ' + $db.vfc-to-network-role-mapping[$network-role-index].network-role`\" />\n","comments":"","x":1930.2379455566406,"y":1213.0158033370972,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"1d05761c.d860aa","type":"set","name":"set network-role and tag","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role'\n   value='`$db.vfc-to-network-role-mapping[$network-role-index].network-role`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag'\n   value='`$db.vfc-to-network-role-mapping[$network-role-index].network-role-tag`' />\n","comments":"","x":1440.2379875183105,"y":1310.6345176696777,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"75ef736b.dd2aec","type":"switchNode","name":"switch ipv4-ip-version","xml":"<switch test='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>\n","comments":"","outputs":1,"x":1432.8570404052734,"y":1393.9678449630737,"z":"13e6e2ea.39c6bd","wires":[["73c4d3ec.f19f4c","9ea599ed.a77708"]]},{"id":"dfb26d0c.2431b","type":"set","name":"set network-information-index to -1","xml":"<set>\n<parameter name='network-information-index' value='-1' />\n\n","comments":"","x":1842.3806648254395,"y":1358.9679498672485,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"73c4d3ec.f19f4c","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1609.5235595703125,"y":1358.9679851531982,"z":"13e6e2ea.39c6bd","wires":[["dfb26d0c.2431b"]]},{"id":"9ea599ed.a77708","type":"other","name":"4","xml":"<outcome value='4'>\n","comments":"","outputs":1,"x":1608.2855110168457,"y":1424.9201278686523,"z":"13e6e2ea.39c6bd","wires":[["472331bd.db84d"]]},{"id":"2769ba0c.7b94b6","type":"set","name":"set network-information-index to 0","xml":"<set>\n<parameter name='network-information-index' value='0' />\n","comments":"","x":2012.8567733764648,"y":1399.4439888000488,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"472331bd.db84d","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1775.475986480713,"y":1424.2535934448242,"z":"13e6e2ea.39c6bd","wires":[["2769ba0c.7b94b6","f7a74a70.5e07f8"]]},{"id":"f7a74a70.5e07f8","type":"set","name":"set ip-version ipv4, use-dhcp, and ip-count","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-version'\n   value='ipv4' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].use-dhcp'\n   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-count'\n   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-count`' />\n","comments":"","x":2037.8093566894531,"y":1446.1109447479248,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"5e6bc2d9.c929fc","type":"switchNode","name":"switch ipv6-ip-version","xml":"<switch test='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>\n","comments":"","outputs":1,"x":1433.333236694336,"y":1520.8726272583008,"z":"13e6e2ea.39c6bd","wires":[["1cb442a4.a39a4d","5ffe015b.9fb85"]]},{"id":"1cb442a4.a39a4d","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1612.1427307128906,"y":1491.110439300537,"z":"13e6e2ea.39c6bd","wires":[["236df371.e62ecc"]]},{"id":"5ffe015b.9fb85","type":"other","name":"6","xml":"<outcome value='6'>\n","comments":"","outputs":1,"x":1613.5712852478027,"y":1555.39599609375,"z":"13e6e2ea.39c6bd","wires":[["6d3cd943.349b38"]]},{"id":"82480780.92bd68","type":"set","name":"increment network-information-index","xml":"<set>\n<parameter name='network-information-index' value='`$network-information-index + 1`' />\n","comments":"","x":2019.2853775024414,"y":1529.9200258255005,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"6d3cd943.349b38","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1768.8094444274902,"y":1554.4437351226807,"z":"13e6e2ea.39c6bd","wires":[["82480780.92bd68","173cdbc6.145594"]]},{"id":"236df371.e62ecc","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1754.8093605041504,"y":1490.4440574645996,"z":"13e6e2ea.39c6bd","wires":[[]]},{"id":"5e90e6ce.652298","type":"set","name":"save network-id","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id'\n  value='`$service-data.networks.network[$idx].network-data.network-topology.network-topology-identifier-structure.network-id`' />\n","comments":"This isn't a node in MD-SAL, but we need to save this for later when we are doing EIPAM processing","x":1412.380874633789,"y":1262.3011646270752,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"173cdbc6.145594","type":"set","name":"set ip-version ipv6, use-dhcp, and ip-count","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-version'\n   value='ipv6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].use-dhcp'\n   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-count'\n   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-count`' />\n","comments":"","x":2039.1903533935547,"y":1574.5953512191772,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"f5972382.8377e","type":"switchNode","name":"switch ecomp-generated-naming == 'Y'","xml":"<switch test=\"$db.vfc-model.ecomp-generated-naming == 'Y'\">\n","comments":"","outputs":1,"x":1058.999942779541,"y":541.690746307373,"z":"13e6e2ea.39c6bd","wires":[["90686169.46114"]]},{"id":"90686169.46114","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1290.6665534973145,"y":540.6903772354126,"z":"13e6e2ea.39c6bd","wires":[["723f449d.59b57c"]]},{"id":"723f449d.59b57c","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=\"`'ECOMP generated naming is not Y for VFC customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc_customization_uuid`\" />\n","comments":"","x":1437.333293914795,"y":540.023832321167,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"1f09fa88.e70a15","type":"set","name":"set vf-module-to-vfc-mapping length to 0","xml":"<set>\n<parameter name='db.vf-module-to-vfc-mapping_length' value='0' />\n","comments":"","x":1222.2380447387695,"y":353.9761619567871,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"d7650e2f.710f5","type":"set","name":"set vfc-to-network-role-mapping length to 0","xml":"<set>\n<parameter name='db.vfc-to-network-role-mapping_length' value='0' />\n","comments":"","x":1669.190414428711,"y":1050.3095417022705,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"9d5e708.3c6859","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":229.49999237060547,"y":2671.3578300476074,"z":"13e6e2ea.39c6bd","wires":[["63f3696.6218498","50c85fed.5c6f5","b4576528.8788e8","87328741.8bb538","598265d5.076a1c","c6d86686.1ef208","1518dbb.eb54c24","794438e6.14a948","d35b17af.0f15b8","9c2146c7.85c5b8","6de6e324.feccdc","eaa55ef8.4455b","23b6184c.984c48","a255596.979d8a8"]]},{"id":"c40d94b7.4c8af8","type":"switchNode","name":"switch naming-policy","xml":"<switch test=\"$db.vfc-model.naming-policy\">\n","comments":"","outputs":1,"x":1005.4761962890625,"y":588.4528875350952,"z":"13e6e2ea.39c6bd","wires":[["cd6dd56.4ba2128"]]},{"id":"cd6dd56.4ba2128","type":"outcomeFalse","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1291.4285354614258,"y":587.4525203704834,"z":"13e6e2ea.39c6bd","wires":[["5be9e020.01d8"]]},{"id":"5be9e020.01d8","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=\"`'naming_policy is null for VFC customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc_customization_uuid`\" />\n","comments":"","x":1438.0952758789062,"y":586.7859754562378,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"339e662e.fbd89a","type":"call","name":"call GENERIC-RESOURCE-API:naming-policy-generate-name","xml":"<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n","comments":"","outputs":1,"x":1459.7619438171387,"y":815.5957231521606,"z":"13e6e2ea.39c6bd","wires":[["b41879b4.cf80e8","8d4f03c2.ba403"]]},{"id":"76706fb6.60a4e","type":"set","name":"set variables for generating VM name","xml":"<set>\n<parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.vfc-model.naming-policy`' />\n<parameter name='naming-policy-generate-name-input.naming-type' value='VM' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='naming-policy-generate-name-input.query-parameter' value='`$db.vfc-model.customization-uuid`' />\n<parameter name='naming-policy-generate-name-input.vnf-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name`' />\n<parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />\n","comments":"","x":1381.1902198791504,"y":771.3100023269653,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"4d106fd0.8afe8","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=\"`'Unable to generate VM name: ' + $error-message`\" />\n","comments":"","x":2099.761787414551,"y":792.7383985519409,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"21a55e27.060852","type":"call","name":"call GENERIC-RESOURCE-API:naming-policy-generate-name","xml":"<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n","comments":"","outputs":1,"x":1458.3333473205566,"y":918.4528799057007,"z":"13e6e2ea.39c6bd","wires":[["8c806b8.0817e98","7f560e9b.dfd6a"]]},{"id":"a38671f.88cbf9","type":"set","name":"set variables for generating VNFC name","xml":"<set>\n<parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.vfc-model.naming-policy`' />\n<parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='naming-policy-generate-name-input.query-parameter' value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vf-module-customization-uuid`' />\n<parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />\n<parameter name='naming-policy-generate-name-input.vnf-name' value='`$vf-module-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='naming-policy-generate-name-input.vm-name' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`' />\n","comments":"","x":1388.3332710266113,"y":867.0242071151733,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"4a88df43.04fef","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=\"`'Unable to generate VNFC name: ' + $error-message`\" />\n","comments":"","x":2100.6191177368164,"y":891.8336629867554,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"711a6ca3.f0fe44","type":"set","name":"set vnfc-name to generated name","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vm-index].vnfc-name'\n  value='`$naming-policy-generate-name-output.vnfc-name`' />\n","comments":"","x":1988.2854804992676,"y":937.6908407211304,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"1c81545b.1b50cc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1926.6666297912598,"y":891.7862119674683,"z":"13e6e2ea.39c6bd","wires":[["4a88df43.04fef","521a6c5f.21d114"]]},{"id":"8c806b8.0817e98","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1761.6668128967285,"y":891.786292552948,"z":"13e6e2ea.39c6bd","wires":[["1c81545b.1b50cc"]]},{"id":"7f560e9b.dfd6a","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1765.0000305175781,"y":938.452877998352,"z":"13e6e2ea.39c6bd","wires":[["711a6ca3.f0fe44"]]},{"id":"4214c675.f10ac8","type":"set","name":"set vnfc-names_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length'\n  value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />\n","comments":"","x":1008.3333358764648,"y":728.4528951644897,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"a49b0347.b961f","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3391.3811416625977,"y":773.2147998809814,"z":"13e6e2ea.39c6bd","wires":[["58315482.1be8cc","b99998cf.6bb228"]]},{"id":"b99998cf.6bb228","type":"call","name":"call GENERIC-RESOURCE-API:naming-policy-generate-name","xml":"<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n","comments":"","outputs":1,"x":3715.666847229004,"y":799.7863311767578,"z":"13e6e2ea.39c6bd","wires":[[]]},{"id":"58315482.1be8cc","type":"set","name":"set variables for deleting name","xml":"<set>\n<parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n","comments":"","x":3617.0954666137695,"y":752.6434020996094,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"521a6c5f.21d114","type":"for","name":"for each vm-type","xml":"<for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":2560.143524169922,"y":683.4052515029907,"z":"13e6e2ea.39c6bd","wires":[["afeba0ce.e026"]]},{"id":"2a35635e.28750c","type":"for","name":"for each vnfc","xml":"<for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":2862.714855194092,"y":739.5480680465698,"z":"13e6e2ea.39c6bd","wires":[["e505c5d.554b238"]]},{"id":"e505c5d.554b238","type":"switchNode","name":"switch vnfc-name","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>\n","comments":"","outputs":1,"x":3069.714786529541,"y":739.8813858032227,"z":"13e6e2ea.39c6bd","wires":[["5fa252e7.81574c","f681c938.b26858"]]},{"id":"5fa252e7.81574c","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":3238.0480461120605,"y":706.5480918884277,"z":"13e6e2ea.39c6bd","wires":[["8e550d8.23bf5f"]]},{"id":"f681c938.b26858","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3239.7147178649902,"y":772.7386045455933,"z":"13e6e2ea.39c6bd","wires":[["a49b0347.b961f"]]},{"id":"8e550d8.23bf5f","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3368.0478897094727,"y":704.881443977356,"z":"13e6e2ea.39c6bd","wires":[[]]},{"id":"1eeb0dd0.2caa32","type":"comment","name":"Rollback any generated VM and VNFC names","info":"","comments":"","x":2776.1905937194824,"y":577.5004119873047,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"afeba0ce.e026","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2713.0955772399902,"y":682.7862062454224,"z":"13e6e2ea.39c6bd","wires":[["2a35635e.28750c","8ec715d5.ed2bf8"]]},{"id":"1f772d12.9894d3","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3389.9525108337402,"y":657.5004873275757,"z":"13e6e2ea.39c6bd","wires":[["57b851c2.70962","94a2a62b.184d48"]]},{"id":"94a2a62b.184d48","type":"call","name":"call GENERIC-RESOURCE-API:naming-policy-generate-name","xml":"<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n","comments":"","outputs":1,"x":3714.2382164001465,"y":684.072018623352,"z":"13e6e2ea.39c6bd","wires":[[]]},{"id":"57b851c2.70962","type":"set","name":"set variables for deleting name","xml":"<set>\n<parameter name='naming-policy-generate-name-input.naming-type' value='VM' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n","comments":"","x":3615.666835784912,"y":636.9290895462036,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"8ec715d5.ed2bf8","type":"for","name":"for each vm name","xml":"<for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >\n","comments":"","outputs":1,"x":2875.571891784668,"y":623.8337755203247,"z":"13e6e2ea.39c6bd","wires":[["625f6664.ac0f48"]]},{"id":"625f6664.ac0f48","type":"switchNode","name":"switch vm-name","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>\n","comments":"","outputs":1,"x":3068.2861557006836,"y":623.1670732498169,"z":"13e6e2ea.39c6bd","wires":[["8f655289.9c337","8927e94a.49cc88"]]},{"id":"8f655289.9c337","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":3236.619415283203,"y":590.833779335022,"z":"13e6e2ea.39c6bd","wires":[["cba034a4.e16dd8"]]},{"id":"8927e94a.49cc88","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3238.286087036133,"y":657.0242919921875,"z":"13e6e2ea.39c6bd","wires":[["1f772d12.9894d3"]]},{"id":"cba034a4.e16dd8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3366.6192588806152,"y":589.1671314239502,"z":"13e6e2ea.39c6bd","wires":[[]]},{"id":"31801b6d.e4e794","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1926.9047470092773,"y":792.7385950088501,"z":"13e6e2ea.39c6bd","wires":[["4d106fd0.8afe8","521a6c5f.21d114"]]},{"id":"87328741.8bb538","type":"set","name":"set variables for auto-ip call","xml":"<set>\n<parameter name='auto-ip-assignment-input.aic-cloud-region'\n  value='`$tmp.vf-module-topology.aic-cloud-region`' />\n<parameter name='auto-ip-assignment-input.vf-module.model-customization-uuid'\n  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\n<parameter name='auto-ip-assignment-input.vf-module-id'\n  value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='auto-ip-assignment-input.service-instance-id'\n  value='`$service-data.service-information.service-instance-id`' />\n<parameter name='auto-ip-assignment-input.service-type'\n  value='`$service-data.service-information.service-type`' />\n","comments":"","x":615.0000534057617,"y":1645.3576192855835,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"23b6184c.984c48","type":"call","name":"call GENERIC-RESOURCE-API:auto-ip-assignment","xml":"<call module='GENERIC-RESOURCE-API' rpc='auto-ip-assignment' mode='sync' >\n","comments":"","outputs":1,"x":688.333366394043,"y":1883.6908798217773,"z":"13e6e2ea.39c6bd","wires":[["20c7894.db67076"]]},{"id":"5f9b8976.1118a8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1549.9999618530273,"y":1005.3576135635376,"z":"13e6e2ea.39c6bd","wires":[["7f8ac8c0.5a55c8","521a6c5f.21d114"]]},{"id":"14d70fd7.6db44","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1768.3332138061523,"y":1213.6909265518188,"z":"13e6e2ea.39c6bd","wires":[["edc0a5ec.24cc78","521a6c5f.21d114"]]},{"id":"20c7894.db67076","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":959.9999809265137,"y":1883.6910009384155,"z":"13e6e2ea.39c6bd","wires":[["7192aaf0.52a984"]]},{"id":"7192aaf0.52a984","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1118.3332557678223,"y":1882.0242795944214,"z":"13e6e2ea.39c6bd","wires":[["521a6c5f.21d114","45026188.78415"]]},{"id":"45026188.78415","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=\"`'Failure in call to auto-ip-assignment: ' + $error-message`\" />\n","comments":"","x":1296.6666679382324,"y":1881.024374961853,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"771b1ebb.9c0cb","type":"set","name":"set test EIPAM response","xml":"<set>\n<parameter name='eipam-ip-block.plans_length' value='2' />\n<parameter name='eipam-ip-block.plans[0].plan-name' value='plan-1' />\n<parameter name='eipam-ip-block.plans[0].requests_length' value='6' />\n<parameter name='eipam-ip-block.plans[0].requests[0].client-key'\n  value='vm-type-1|zmtn6nf-code-16code-1001|network-role-1|subnet-role-1|FIXED|4|1' />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-type' value='FIXED' />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-prefix' value='1.1.1.1' />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-version' value='4' />\n<parameter name='eipam-ip-block.plans[0].requests[1].client-key'\n  value='vm-type-1|zmtn6nf-code-16code-1001|network-role-1|subnet-role-1|FIXED|6|1' />\n<parameter name='eipam-ip-block.plans[0].requests[1].ip-type' value='FIXED' />\n<parameter name='eipam-ip-block.plans[0].requests[1].ip-prefix' value='cafe::1001' />\n<parameter name='eipam-ip-block.plans[0].requests[1].ip-version' value='6' />\n<parameter name='eipam-ip-block.plans[0].requests[2].client-key'\n  value='vm-type-2|zmtn6nf-code-16code-2001|network-role-2|subnet-role-2|FIXED|4|1' />\n<parameter name='eipam-ip-block.plans[0].requests[2].ip-type' value='FIXED' />\n<parameter name='eipam-ip-block.plans[0].requests[2].ip-prefix' value='2.2.2.2' />\n<parameter name='eipam-ip-block.plans[0].requests[2].ip-version' value='4' />\n<parameter name='eipam-ip-block.plans[0].requests[3].client-key'\n  value='vm-type-2|zmtn6nf-code-16code-2001|network-role-2|subnet-role-2|FIXED|6|1' />\n<parameter name='eipam-ip-block.plans[0].requests[3].ip-type' value='FIXED' />\n<parameter name='eipam-ip-block.plans[0].requests[3].ip-prefix' value='cafe::1002' />\n<parameter name='eipam-ip-block.plans[0].requests[3].ip-version' value='6' />\n<parameter name='eipam-ip-block.plans[0].requests[4].client-key'\n  value='vm-type-2|zmtn6nf-code-16code-2001|network-role-2|subnet-role-2|FIXED|6|1' />\n<parameter name='eipam-ip-block.plans[0].requests[4].ip-type' value='FIXED' />\n<parameter name='eipam-ip-block.plans[0].requests[4].ip-prefix' value='cafe::1003' />\n<parameter name='eipam-ip-block.plans[0].requests[4].ip-version' value='6' />\n<parameter name='eipam-ip-block.plans[0].requests[5].client-key'\n  value='vm-type-2|zmtn6nf-code-16code-2001|network-role-2|subnet-role-2|FIXED|4|1' />\n<parameter name='eipam-ip-block.plans[0].requests[5].ip-type' value='FIXED' />\n<parameter name='eipam-ip-block.plans[0].requests[5].ip-prefix' value='3.3.3.3' />\n<parameter name='eipam-ip-block.plans[0].requests[5].ip-version' value='4' />\n\n<parameter name='eipam-ip-block.plans[1].requests_length' value='4' />\n<parameter name='eipam-ip-block.plans[1].requests[0].client-key'\n  value='vm-type-1|network-role-1|subnet-role-1|VIP|4|1|1' />\n<parameter name='eipam-ip-block.plans[1].requests[0].ip-type' value='VIP' />\n<parameter name='eipam-ip-block.plans[1].requests[0].ip-prefix' value='11.11.11.11' />\n<parameter name='eipam-ip-block.plans[1].requests[0].ip-version' value='4' />\n<parameter name='eipam-ip-block.plans[1].requests[1].client-key'\n  value='vm-type-1|network-role-1|subnet-role-1|VIP|4|1|1' />\n<parameter name='eipam-ip-block.plans[1].requests[1].ip-type' value='VIP' />\n<parameter name='eipam-ip-block.plans[1].requests[1].ip-prefix' value='22.22.22.22' />\n<parameter name='eipam-ip-block.plans[1].requests[1].ip-version' value='4' />\n<parameter name='eipam-ip-block.plans[1].requests[2].client-key'\n  value='vm-type-1|network-role-1|subnet-role-1|VIP|6|1|1' />\n<parameter name='eipam-ip-block.plans[1].requests[2].ip-type' value='VIP' />\n<parameter name='eipam-ip-block.plans[1].requests[2].ip-prefix' value='cafe::1111' />\n<parameter name='eipam-ip-block.plans[1].requests[2].ip-version' value='6' />\n<parameter name='eipam-ip-block.plans[1].requests[3].client-key'\n  value='vm-type-1|network-role-1|subnet-role-1|VIP|6|1|1' />\n<parameter name='eipam-ip-block.plans[1].requests[3].ip-type' value='VIP' />\n<parameter name='eipam-ip-block.plans[1].requests[3].ip-prefix' value='cafe::2222' />\n<parameter name='eipam-ip-block.plans[1].requests[3].ip-version' value='6' />\n","comments":"","x":600.0000648498535,"y":2034.357575416565,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"598265d5.076a1c","type":"for","name":"for each plan","xml":"<for silentFailure='true' index='plan-index' start='0' end='`$eipam-ip-block.plans_length`' >\n","comments":"","outputs":1,"x":558.3333778381348,"y":2317.024312019348,"z":"13e6e2ea.39c6bd","wires":[["1b197272.bbfabe"]]},{"id":"1b197272.bbfabe","type":"for","name":"for each request","xml":"<for silentFailure='true' index='req-index' start='0' end='`$eipam-ip-block.plans[$plan-index].requests_length`' >\n","comments":"","outputs":1,"x":741.6666641235352,"y":2317.0243520736694,"z":"13e6e2ea.39c6bd","wires":[["144833a2.5430cc"]]},{"id":"144833a2.5430cc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":924.9999923706055,"y":2315.35769367218,"z":"13e6e2ea.39c6bd","wires":[["4aab1eb.fa430e","c7dde25e.0e54f","c07f7dfd.4def3","c042257a.473868","52b37045.0d7a5","57a47a87.12f354","da3b4ec1.df94b","9fcfcf11.64142"]]},{"id":"4aab1eb.fa430e","type":"execute","name":"split client-key","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='ck-split' />\n   <parameter name='original_string' value='`$eipam-ip-block.plans[$plan-index].requests[$req-index].client-key`' />\n   <parameter name='regex' value='\\|' />\n","comments":"","outputs":1,"x":1110.0952491760254,"y":2091.5480642318726,"z":"13e6e2ea.39c6bd","wires":[[]]},{"id":"c7dde25e.0e54f","type":"set","name":"set variables from eipam data","xml":"<set>\n<parameter name='tmp.vm-type' value='`$ck-split[0]`' />\n<parameter name='tmp.vnfc-name' value='`$ck-split[1]`' />\n<parameter name='tmp.network-role' value='`$ck-split[2]`' />\n<parameter name='tmp.subnet-role' value='`$ck-split[3]`' />\n<parameter name='tmp.address-family' value='`$ck-split[5]`' />\n<parameter name='tmp.ip-type' value='`$eipam-ip-block.plans[$plan-index].requests[$req-index].ip-type`' />\n<parameter name='tmp.client-key' value='`$eipam-ip-block.plans[$plan-index].requests[$req-index].client-key`' />\n<parameter name='tmp.ip-prefix' value='`$eipam-ip-block.plans[$plan-index].requests[$req-index].ip-prefix`' />\n","comments":"","x":1156.7619552612305,"y":2134.8816442489624,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"c07f7dfd.4def3","type":"set","name":"set found-vm-type to false","xml":"<set>\n<parameter name='found-vm-type' value='false' />\n","comments":"","x":1145.0000495910645,"y":2300.357734680176,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"c042257a.473868","type":"for","name":"for each vm-type","xml":"<for index='vm-type-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":1116.6667442321777,"y":2350.3576164245605,"z":"13e6e2ea.39c6bd","wires":[["a975e9b3.b05228"]]},{"id":"a975e9b3.b05228","type":"switchNode","name":"vm-types match?","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n  == $tmp.vm-type`'>\n","comments":"","outputs":1,"x":1316.6666946411133,"y":2350.357738494873,"z":"13e6e2ea.39c6bd","wires":[["649bdd78.280204"]]},{"id":"31cb7093.bd3c8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1628.33349609375,"y":2347.0243644714355,"z":"13e6e2ea.39c6bd","wires":[["a35843d6.249da","d47afd32.863ab"]]},{"id":"a35843d6.249da","type":"set","name":"set found-vm-type to true","xml":"<set>\n<parameter name='found-vm-type' value='true' />\n","comments":"","x":1839.999984741211,"y":2317.024278640747,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"d47afd32.863ab","type":"break","name":"break","xml":"<break>\n","comments":"","x":1783.3334007263184,"y":2365.3577365875244,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"52b37045.0d7a5","type":"switchNode","name":"switch found-vm-type","xml":"<switch test='`$found-vm-type`'>\n","comments":"","outputs":1,"x":1126.666519165039,"y":2427.0242042541504,"z":"13e6e2ea.39c6bd","wires":[["881a97dd.d9f598"]]},{"id":"881a97dd.d9f598","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1306.6667366027832,"y":2425.3577003479004,"z":"13e6e2ea.39c6bd","wires":[["9bc3aed6.a8fd8"]]},{"id":"9bc3aed6.a8fd8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1468.3333892822266,"y":2423.690870285034,"z":"13e6e2ea.39c6bd","wires":[["ab930b30.224238","da81ad8c.c8b9e"]]},{"id":"ab930b30.224238","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=\"`'EIPAM returned vm-type ' + $tmp.vm-type + ' but could not find that under vf-module-assignments'`\" />\n","comments":"","x":1646.6668014526367,"y":2422.690965652466,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"da81ad8c.c8b9e","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2401.666669209798,"y":560.3576339085896,"z":"13e6e2ea.39c6bd","wires":[["521a6c5f.21d114","25bde5f2.975d8a"]]},{"id":"25bde5f2.975d8a","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2528.333194732666,"y":472.0242986679077,"z":"13e6e2ea.39c6bd","wires":[["55b59017.ac142"]]},{"id":"17ceb097.02119f","type":"comment","name":"rollback IP address assignments","info":"","comments":"","x":2600.000002543131,"y":410.3576339085896,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"60ed3dc.3ff09c4","type":"switchNode","name":"switch vnfc-network-data_length","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length`'>\n","comments":"","outputs":1,"x":1723.3334121704102,"y":2888.6906232833862,"z":"13e6e2ea.39c6bd","wires":[["25266f18.0de0d","e78464e4.8d58b8","cc615615.e12138"]]},{"id":"25266f18.0de0d","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1953.333267211914,"y":2743.6907920837402,"z":"13e6e2ea.39c6bd","wires":[["98c659aa.db2028"]]},{"id":"e78464e4.8d58b8","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1953.0951461791992,"y":2786.309772491455,"z":"13e6e2ea.39c6bd","wires":[["98c659aa.db2028"]]},{"id":"cc615615.e12138","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1955.000072479248,"y":3075.357873916626,"z":"13e6e2ea.39c6bd","wires":[["67c447ad.869408"]]},{"id":"98c659aa.db2028","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2114.9998779296875,"y":2762.024200439453,"z":"13e6e2ea.39c6bd","wires":[["148bbc8c.430b33","8f8e7022.9df53","6ba05fe1.0dae4","78b1f4c5.bbb46c","b4b4329a.94d86"]]},{"id":"148bbc8c.430b33","type":"set","name":"set vnfc-network-data_length to 1, and set network-role","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length' value='1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-network-role'\n  value='`$tmp.network-role`' />\n  ","comments":"","x":2433.3332595825195,"y":2668.6912717819214,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"8f8e7022.9df53","type":"set","name":"set vnfc-subnet_length to 1, and set subnet-role","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet_length' value='1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-subnet-role'\n  value='`$tmp.subnet-role`' />","comments":"","x":2408.3331298828125,"y":2715.3577785491943,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"6ba05fe1.0dae4","type":"set","name":"set vnfc-ip-assignments_length to 1, and address-family","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments_length' value='1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-address-family'\n  value='`$tmp.address-family`' />\n  ","comments":"","x":2431.666679382324,"y":2760.357536315918,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"78b1f4c5.bbb46c","type":"set","name":"set vnfc-subnet-ip_length to 1","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip_length' value='1' />\n","comments":"","x":2349.9997634887695,"y":2807.0243701934814,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"b4b4329a.94d86","type":"set","name":"set eipam data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-ip-address'\n  value='`$tmp.ip-prefix`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-client-key'\n  value='`$tmp.client-key`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].ip-type'\n  value='FIXED' />\n","comments":"","x":2304.999885559082,"y":2850.3574619293213,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"da3b4ec1.df94b","type":"switchNode","name":"switch ip-type","xml":"<switch test='`$tmp.ip-type`'>\n","comments":"","outputs":1,"x":1097.3333740234375,"y":3437.0240783691406,"z":"13e6e2ea.39c6bd","wires":[["2033ce0d.bc8622","b9c2c784.3125d8"]]},{"id":"2033ce0d.bc8622","type":"other","name":"FIXED","xml":"<outcome value='FIXED'>\n","comments":"","outputs":1,"x":1250.666732788086,"y":2685.3576374053955,"z":"13e6e2ea.39c6bd","wires":[["9d4cf962.1d0768"]]},{"id":"67c447ad.869408","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2118.3334884643555,"y":3075.35772895813,"z":"13e6e2ea.39c6bd","wires":[["2839b041.8f54d","2283280.d62a5d8","a05a62b4.2336d"]]},{"id":"2839b041.8f54d","type":"set","name":"set found-network-role to false","xml":"<set>\n<parameter name='found-network-role' value='false' />\n","comments":"","x":2353.333541870117,"y":2897.858076095581,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"2283280.d62a5d8","type":"for","name":"for each network-role","xml":"<for index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length`' >\n","comments":"","outputs":1,"x":2325.00040435791,"y":2942.524663925171,"z":"13e6e2ea.39c6bd","wires":[["32b23a3.5a389c6"]]},{"id":"32b23a3.5a389c6","type":"switchNode","name":"network-role matches","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-network-role\n  == $tmp.network-role`'>\n","comments":"","outputs":1,"x":2548.333915710449,"y":2942.1914920806885,"z":"13e6e2ea.39c6bd","wires":[["a88574bd.1678d8"]]},{"id":"a88574bd.1678d8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2721.6670112609863,"y":2941.191167831421,"z":"13e6e2ea.39c6bd","wires":[["88d1efc2.912a6"]]},{"id":"88d1efc2.912a6","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2873.33349609375,"y":2940.191068649292,"z":"13e6e2ea.39c6bd","wires":[["b50ce667.7886c8","32f1a205.5d725e"]]},{"id":"b50ce667.7886c8","type":"set","name":"set found-network-role to true","xml":"<set>\n<parameter name='found-network-role' value='true' />\n","comments":"","x":3091.6669921875,"y":2911.191068649292,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"32f1a205.5d725e","type":"break","name":"break","xml":"<break>\n","comments":"","x":3021.667022705078,"y":2961.191168785095,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"a05a62b4.2336d","type":"switchNode","name":"switch found-network-role","xml":"<switch test='`$found-network-role`'>\n","comments":"","outputs":1,"x":2326.667167663574,"y":3327.857654571533,"z":"13e6e2ea.39c6bd","wires":[["b91f1532.009a78","fdafd38.5ab293"]]},{"id":"fdafd38.5ab293","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2547.5003662109375,"y":3522.8578577041626,"z":"13e6e2ea.39c6bd","wires":[["77606e95.9710c"]]},{"id":"b91f1532.009a78","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2549.9998779296875,"y":3152.0241887569427,"z":"13e6e2ea.39c6bd","wires":[["68f6d18c.f9f8f"]]},{"id":"68f6d18c.f9f8f","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2708.3334426879883,"y":3152.024410009384,"z":"13e6e2ea.39c6bd","wires":[["5fd87962.076fc8","9e5a04a9.fc30c8","64cad055.48cd2","db9376b.eaf6588","3310fef0.424282","804f6159.edd6c","556256da.341038"]]},{"id":"77606e95.9710c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2702.500274658203,"y":3523.1910066604614,"z":"13e6e2ea.39c6bd","wires":[["8f2afed7.bdf8","1136a4d9.72946b","55c78324.3ca87c"]]},{"id":"5fd87962.076fc8","type":"set","name":"increment vnfc-network-data_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length'\n  value='`$network-role-index + 1`' />\n  ","comments":"","x":2970.0007705688477,"y":3105.3580656051636,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"9e5a04a9.fc30c8","type":"set","name":"set vnfc-subnet_length to 1, and set subnet-role","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length' value='1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-subnet-role'\n  value='`$tmp.subnet-role`' />","comments":"","x":3003.3335189819336,"y":3155.3577728271484,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"64cad055.48cd2","type":"set","name":"set vnfc-ip-assignments_length to 1, and address-family","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments_length' value='1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-address-family'\n  value='`$tmp.address-family`' />","comments":"","x":3028.3336029052734,"y":3200.3578090667725,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"db9376b.eaf6588","type":"set","name":"set vnfc-subnet-ip_length to 1","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip_length' value='1' />\n","comments":"","x":2945.000114440918,"y":3247.0243186950684,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"3310fef0.424282","type":"set","name":"set eipam data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-ip-address'\n  value='`$tmp.ip-prefix`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-client-key'\n  value='`$tmp.client-key`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].ip-type'\n  value='FIXED' />\n","comments":"","x":2900.0002365112305,"y":3290.357410430908,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"8f2afed7.bdf8","type":"set","name":"set found-subnet-role to false","xml":"<set>\n<parameter name='found-subnet-role' value='false' />\n","comments":"","x":2940.8336181640625,"y":3344.5247297286987,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"1136a4d9.72946b","type":"for","name":"for each subnet-role","xml":"<for index='subnet-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length`' >\n","comments":"","outputs":1,"x":2912.5004806518555,"y":3389.1913175582886,"z":"13e6e2ea.39c6bd","wires":[["7fd50a06.b93e44"]]},{"id":"7fd50a06.b93e44","type":"switchNode","name":"subnet-role matches","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-subnet-role\n  == $tmp.subnet-role`'>\n","comments":"","outputs":1,"x":3135.8339920043945,"y":3388.858145713806,"z":"13e6e2ea.39c6bd","wires":[["5805cc31.6906d4"]]},{"id":"5805cc31.6906d4","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3309.1670875549316,"y":3387.8578214645386,"z":"13e6e2ea.39c6bd","wires":[["8587f11e.d3a04"]]},{"id":"8587f11e.d3a04","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3460.8335723876953,"y":3386.8577222824097,"z":"13e6e2ea.39c6bd","wires":[["965b10d5.e7b31","7d6b549a.45bb3c"]]},{"id":"965b10d5.e7b31","type":"set","name":"set found-subnet-role to true","xml":"<set>\n<parameter name='found-subnet-role' value='true' />\n","comments":"","x":3679.1670684814453,"y":3357.8577222824097,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"7d6b549a.45bb3c","type":"break","name":"break","xml":"<break>\n","comments":"","x":3609.1670989990234,"y":3407.857822418213,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"55c78324.3ca87c","type":"switchNode","name":"switch found-subnet-role","xml":"<switch test='`$found-subnet-role`'>\n","comments":"","outputs":1,"x":2919.1672744750977,"y":3712.857183456421,"z":"13e6e2ea.39c6bd","wires":[["9069277e.fcb1e8","a4c9692a.7873c8"]]},{"id":"a4c9692a.7873c8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3124.1668090820312,"y":3869.5243701934814,"z":"13e6e2ea.39c6bd","wires":[["8164b76f.4f1de8"]]},{"id":"9069277e.fcb1e8","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":3124.1664810180664,"y":3576.191110610962,"z":"13e6e2ea.39c6bd","wires":[["56d7e5b5.6be7fc"]]},{"id":"56d7e5b5.6be7fc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3282.500045776367,"y":3576.1913318634033,"z":"13e6e2ea.39c6bd","wires":[["ea54da7d.3f3198","3e2e98ab.c48318","bd191b30.5a4268","76e82015.194fb","7f3e5552.0e3d2c","bf5a6271.6d679"]]},{"id":"8164b76f.4f1de8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3279.166717529297,"y":3869.8575191497803,"z":"13e6e2ea.39c6bd","wires":[["28713321.8a25bc","53e0a7bb.fca328","4df98faf.82703"]]},{"id":"ea54da7d.3f3198","type":"set","name":"set vnfc-ip-assignments_length to 1","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length' value='1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-address-family'\n  value='`$tmp.address-family`' />\n","comments":"","x":3534.1670532226562,"y":3592.857608795166,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"3e2e98ab.c48318","type":"set","name":"set vnfc-subnet-ip_length to 1","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-subnet-ip_length' value='1' />\n","comments":"","x":3514.166893005371,"y":3637.857668876648,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"bd191b30.5a4268","type":"set","name":"set eipam data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-ip-address'\n  value='`$tmp.ip-prefix`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-client-key'\n  value='`$tmp.client-key`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-subnet-ip[0].ip-type'\n  value='FIXED' />\n","comments":"","x":3469.1670150756836,"y":3681.190760612488,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"76e82015.194fb","type":"set","name":"increment vnfc-subnet_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length'\n  value='`$subnet-role-index + 1`' />\n  ","comments":"","x":3519.1668853759766,"y":3546.191328048706,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"28713321.8a25bc","type":"set","name":"set found-address-family to false","xml":"<set>\n<parameter name='found-address-family' value='false' />\n","comments":"","x":3524.1668090820312,"y":3726.1910066604614,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"53e0a7bb.fca328","type":"for","name":"for each address-family","xml":"<for index='address-family-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' >\n","comments":"","outputs":1,"x":3495.8337173461914,"y":3770.85751247406,"z":"13e6e2ea.39c6bd","wires":[["c0b62546.59aab8"]]},{"id":"c0b62546.59aab8","type":"switchNode","name":"address-family matches","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-subnet-role\n  == $tmp.address-family`'>\n","comments":"","outputs":1,"x":3716.1672973632812,"y":3770.524537086487,"z":"13e6e2ea.39c6bd","wires":[["ae8e0e82.f5de8"]]},{"id":"ae8e0e82.f5de8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3886.5003929138184,"y":3769.5242128372192,"z":"13e6e2ea.39c6bd","wires":[["7a31318.f63c9d"]]},{"id":"7a31318.f63c9d","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":4034.166877746582,"y":3768.5241136550903,"z":"13e6e2ea.39c6bd","wires":[["826ded94.a5795","e41e9f32.534a9"]]},{"id":"826ded94.a5795","type":"set","name":"set found-address-family to true","xml":"<set>\n<parameter name='found-address-family' value='true' />\n","comments":"","x":4252.500373840332,"y":3739.5241136550903,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"e41e9f32.534a9","type":"break","name":"break","xml":"<break>\n","comments":"","x":4182.50040435791,"y":3789.5242137908936,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"4df98faf.82703","type":"switchNode","name":"switch found-address-family","xml":"<switch test='`$found-address-family`'>\n","comments":"","outputs":1,"x":3512.5001373291016,"y":4019.52410697937,"z":"13e6e2ea.39c6bd","wires":[["dc3802bf.10e2c","8943e1bb.8ec55"]]},{"id":"8943e1bb.8ec55","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3720.833221435547,"y":4116.191186904907,"z":"13e6e2ea.39c6bd","wires":[["572ce392.74af5c"]]},{"id":"dc3802bf.10e2c","type":"outcomeTrue","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":3712.49951171875,"y":3932.8572158813477,"z":"13e6e2ea.39c6bd","wires":[["ff709b2d.6c7448"]]},{"id":"ff709b2d.6c7448","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3870.833076477051,"y":3932.857437133789,"z":"13e6e2ea.39c6bd","wires":[["b1dce9be.3dc5b8","a107927b.81f53","b9c71fe3.0cd2a","193827f5.6035f8","fe3ad0f.f08ce3"]]},{"id":"572ce392.74af5c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3875.8331298828125,"y":4116.524335861206,"z":"13e6e2ea.39c6bd","wires":[["b07bdfd9.ad1ad","4960815f.e5bc9","d7e6b87e.300348"]]},{"id":"b1dce9be.3dc5b8","type":"set","name":"set vnfc-subnet-ip_length to 1","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length' value='1' />\n","comments":"","x":4100.833297729492,"y":3976.190981864929,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"a107927b.81f53","type":"set","name":"set eipam data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-ip-address'\n  value='`$tmp.ip-prefix`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-client-key'\n  value='`$tmp.client-key`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].ip-type'\n  value='FIXED' />\n","comments":"","x":4055.833251953125,"y":4019.5239973068237,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"b9c71fe3.0cd2a","type":"set","name":"increment vnfc-ip-assignments_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length'\n  value='`$address-family-index + 1`' />\n  ","comments":"","x":4129.16658782959,"y":3931.1911764144897,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"57a47a87.12f354","type":"switchNode","name":"switch address-family","xml":"<switch test='`$tmp.address-family`'>\n","comments":"","outputs":1,"x":1131.666805267334,"y":2240.357734680176,"z":"13e6e2ea.39c6bd","wires":[["e1d33b8e.c7e338","30637a91.193656"]]},{"id":"e1d33b8e.c7e338","type":"other","name":"4","xml":"<outcome value='4'>\n","comments":"","outputs":1,"x":1308.3332786560059,"y":2218.690944671631,"z":"13e6e2ea.39c6bd","wires":[["85adb8e7.0976f8"]]},{"id":"30637a91.193656","type":"other","name":"6","xml":"<outcome value='6'>\n","comments":"","outputs":1,"x":1306.6665725708008,"y":2262.0242805480957,"z":"13e6e2ea.39c6bd","wires":[["10be448e.752b6b"]]},{"id":"85adb8e7.0976f8","type":"set","name":"set address-family to ipv4","xml":"<set>\n<parameter name='tmp.address-family' value='ipv4' />\n","comments":"","x":1494.9999923706055,"y":2218.690984725952,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"10be448e.752b6b","type":"set","name":"set address-family to ipv6","xml":"<set>\n<parameter name='tmp.address-family' value='ipv6' />\n","comments":"","x":1493.3333892822266,"y":2262.0242443084717,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"b07bdfd9.ad1ad","type":"set","name":"set eipam data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$ip-address-index].vnfc-ip-address'\n  value='`$tmp.ip-prefix`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$ip-address-index].vnfc-client-key'\n  value='`$tmp.client-key`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$ip-address-index].ip-type'\n  value='FIXED' />\n","comments":"","x":4053.3330993652344,"y":4114.524302482605,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"4960815f.e5bc9","type":"set","name":"set ip-address-index","xml":"<set>\n<parameter name='ip-address-index'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' />\n","comments":"","x":4071.66690826416,"y":4067.8578577041626,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"d7e6b87e.300348","type":"set","name":"increment vnfc-subnet-ip_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length'\n  value='`$ip-address-length + 1`' />\n","comments":"","x":4104.999755859375,"y":4159.524364471436,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"649bdd78.280204","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1475.000156402588,"y":2348.6910705566406,"z":"13e6e2ea.39c6bd","wires":[["31cb7093.bd3c8"]]},{"id":"c6d86686.1ef208","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-no-preload.log' />\n","comments":"","outputs":1,"x":556.6667022705078,"y":2217.0242443084717,"z":"13e6e2ea.39c6bd","wires":[[]]},{"id":"66d4bdfe.f66fb4","type":"set","name":"set vm-network_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'\n  value='`$db.vfc-to-network-role-mapping_length`' />\n","comments":"","x":995.0000610351562,"y":1592.024118423462,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"1518dbb.eb54c24","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-no-preload2.log' />\n","comments":"","outputs":1,"x":572.5000152587891,"y":4855.35776424408,"z":"13e6e2ea.39c6bd","wires":[[]]},{"id":"fe3ad0f.f08ce3","type":"set","name":"set address-family","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family'\n  value='`$tmp.address-family`' />\n  ","comments":"","x":4068.3333282470703,"y":3884.524182319641,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"193827f5.6035f8","type":"set","name":"set address-family-index","xml":"<set>\n<parameter name='address-family-index'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' />\n  ","comments":"","x":4085.0002403259277,"y":3842.8572702407837,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"bf5a6271.6d679","type":"set","name":"set subnet-role","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-subnet-role'\n  value='`$tmp.subnet-role`' />\n  ","comments":"","x":3470.0002212524414,"y":3499.524253845215,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"7f3e5552.0e3d2c","type":"set","name":"set subnet-role-index","xml":"<set>\n<parameter name='subnet-role-index'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length`' />\n","comments":"","x":3488.3333129882812,"y":3454.524251937866,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"556256da.341038","type":"set","name":"set network-role","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-network-role'\n  value='`$tmp.network-role`' />\n  ","comments":"","x":2910.0002822875977,"y":3057.857900619507,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"804f6159.edd6c","type":"set","name":"set network-role-index","xml":"<set>\n<parameter name='network-role-index'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length`' />\n","comments":"","x":2930.0001182556152,"y":3012.8575732707977,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"ac38490b.8fcd18","type":"set","name":"set found-vnfc-name to false","xml":"<set>\n<parameter name='found-vnfc-name' value='false' />\n","comments":"","x":1703.3332901000977,"y":2488.024443626404,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"22653bfc.8b7a14","type":"for","name":"for each vnfc-name","xml":"<for silentFailure='true' index='vnfc-name-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":1673.3332290649414,"y":2538.0245265960693,"z":"13e6e2ea.39c6bd","wires":[["bf0a8e5.c63f87"]]},{"id":"bf0a8e5.c63f87","type":"switchNode","name":"vnfc-names match?","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-name\n  == $tmp.vnfc-name`'>\n","comments":"","outputs":1,"x":1864.9998893737793,"y":2538.024444580078,"z":"13e6e2ea.39c6bd","wires":[["4c6ca6ac.ec20d8"]]},{"id":"96b5ee9a.33f3f","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2176.666690826416,"y":2534.6910705566406,"z":"13e6e2ea.39c6bd","wires":[["e1d42125.3f537","663bddf4.3a7934"]]},{"id":"e1d42125.3f537","type":"set","name":"set found-vnfc-name to true","xml":"<set>\n<parameter name='found-vnfc-name' value='true' />\n","comments":"","x":2396.6664428710938,"y":2504.690866470337,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"663bddf4.3a7934","type":"break","name":"break","xml":"<break>\n","comments":"","x":2331.6665954589844,"y":2553.0244426727295,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"c6b4719a.dc6ca","type":"switchNode","name":"switch found-vnfc-name","xml":"<switch test='`$found-vnfc-name`'>\n","comments":"","outputs":1,"x":1683.333023071289,"y":2614.690870285034,"z":"13e6e2ea.39c6bd","wires":[["58adec2d.2b7574"]]},{"id":"58adec2d.2b7574","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1854.9999313354492,"y":2613.0244064331055,"z":"13e6e2ea.39c6bd","wires":[["f43cfeb6.4a8a5"]]},{"id":"f43cfeb6.4a8a5","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2016.6665840148926,"y":2611.3575763702393,"z":"13e6e2ea.39c6bd","wires":[["53deae46.834f2","da81ad8c.c8b9e"]]},{"id":"53deae46.834f2","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=\"`'EIPAM returned VNFC name ' + $tmp.vnfc-name + ' but could not find that under vf-module-assignments for vm-type ' + $tmp.vm-type`\" />\n","comments":"","x":2194.9999961853027,"y":2610.357671737671,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"4c6ca6ac.ec20d8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2023.333351135254,"y":2536.3577766418457,"z":"13e6e2ea.39c6bd","wires":[["96b5ee9a.33f3f"]]},{"id":"b9c2c784.3125d8","type":"other","name":"VIP","xml":"<outcome value='VIP'>\n","comments":"","outputs":1,"x":1261.6667823791504,"y":4448.691262245178,"z":"13e6e2ea.39c6bd","wires":[["400a98ce.3a1b38"]]},{"id":"9d4cf962.1d0768","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1409.3333892822266,"y":2685.024366378784,"z":"13e6e2ea.39c6bd","wires":[["ac38490b.8fcd18","22653bfc.8b7a14","c6b4719a.dc6ca","60ed3dc.3ff09c4"]]},{"id":"39fdc359.ec208c","type":"set","name":"set variables from eipam data","xml":"<set>\n<parameter name='tmp.network-role' value='`$ck-split[1]`' />\n<parameter name='tmp.subnet-role' value='`$ck-split[2]`' />\n<parameter name='tmp.address-family' value='`$ck-split[4]`' />\n","comments":"","x":1655.333366394043,"y":4175.6911153793335,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"400a98ce.3a1b38","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1410.333641052246,"y":4448.3579568862915,"z":"13e6e2ea.39c6bd","wires":[["39fdc359.ec208c","9804f58a.62cd58","bceb44f3.14e468","111d3baa.2ac094"]]},{"id":"efcdf82d.885e98","type":"for","name":"for each vm-network","xml":"<for silentFailure='true' index='vm-network-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\n","comments":"","outputs":1,"x":2160.0000534057617,"y":4363.691123008728,"z":"13e6e2ea.39c6bd","wires":[["b83efc26.aeed1"]]},{"id":"b83efc26.aeed1","type":"switchNode","name":"network-roles match?","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-role\n  == $tmp.network-role`'>\n","comments":"","outputs":1,"x":2373.6667404174805,"y":4363.6910400390625,"z":"13e6e2ea.39c6bd","wires":[["e23b064.f9749f8"]]},{"id":"fd8c18a4.5267c8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2711.33345413208,"y":4362.357585906982,"z":"13e6e2ea.39c6bd","wires":[["5d5f6fdc.c91e9","c0706fbf.53875"]]},{"id":"5d5f6fdc.c91e9","type":"break","name":"break","xml":"<break>\n","comments":"","x":2864.6665840148926,"y":4382.357789993286,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"6e9c4629.bc3238","type":"switchNode","name":"switch tmp.vm-network-index","xml":"<switch test='`$tmp.vm-network-index`'>\n","comments":"","outputs":1,"x":2184.999931335449,"y":4482.023971557617,"z":"13e6e2ea.39c6bd","wires":[["6b87c2f7.512f5c"]]},{"id":"6b87c2f7.512f5c","type":"outcomeFalse","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":2380.0000610351562,"y":4480.357791900635,"z":"13e6e2ea.39c6bd","wires":[["2873f959.66f586"]]},{"id":"2873f959.66f586","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2531.666732788086,"y":4480.357629776001,"z":"13e6e2ea.39c6bd","wires":[["ca9da770.612e88","ac8c2d3f.4fc1","b05e43b1.66858"]]},{"id":"e23b064.f9749f8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2558.000114440918,"y":4363.0242919921875,"z":"13e6e2ea.39c6bd","wires":[["fd8c18a4.5267c8"]]},{"id":"111d3baa.2ac094","type":"switchNode","name":"switch tmp.address-family","xml":"<switch test='`$tmp.address-family`'>\n","comments":"","outputs":1,"x":1643.3331680297852,"y":4676.786513328552,"z":"13e6e2ea.39c6bd","wires":[["a3736ab5.de3198","5567cb71.c8e684"]]},{"id":"a3736ab5.de3198","type":"other","name":"4","xml":"<outcome value='4'>\n","comments":"","outputs":1,"x":1850.0000038146973,"y":4607.452527999878,"z":"13e6e2ea.39c6bd","wires":[["eb993152.19a82"]]},{"id":"5567cb71.c8e684","type":"other","name":"6","xml":"<outcome value='6'>\n","comments":"","outputs":1,"x":1848.8094482421875,"y":4761.929349899292,"z":"13e6e2ea.39c6bd","wires":[["eaa1b6f7.672238"]]},{"id":"7b8c2093.b07e","type":"switchNode","name":"switch tmp.length","xml":"<switch test='`$tmp.length`'>\n","comments":"","outputs":1,"x":2129.524238586426,"y":4625.357593536377,"z":"13e6e2ea.39c6bd","wires":[["cc88e2a8.5dde8","144d562.63225aa","677764bc.2fd59c"]]},{"id":"cc88e2a8.5dde8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2293.0952110290527,"y":4585.833422660828,"z":"13e6e2ea.39c6bd","wires":[["cc3858da.bc14d8"]]},{"id":"144d562.63225aa","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":2294.2858848571777,"y":4628.45237159729,"z":"13e6e2ea.39c6bd","wires":[["cc3858da.bc14d8"]]},{"id":"cc3858da.bc14d8","type":"set","name":"set eipam data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4_length'\n  value='1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4[0]'\n  value='`$tmp.ip-prefix`' />\n","comments":"","x":2447.6192359924316,"y":4604.167006492615,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"677764bc.2fd59c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2294.0476684570312,"y":4670.595855712891,"z":"13e6e2ea.39c6bd","wires":[["4e836d1e.c86b74"]]},{"id":"4e836d1e.c86b74","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2457.380989074707,"y":4668.929021835327,"z":"13e6e2ea.39c6bd","wires":[["f0d42fee.5d4e8","68676061.0e0c9"]]},{"id":"f0d42fee.5d4e8","type":"set","name":"set eipam data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$tmp.length]'\n  value='`$tmp.ip-prefix`' />\n","comments":"","x":2633.5713272094727,"y":4644.642726898193,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"68676061.0e0c9","type":"set","name":"increment floating-ip-v4_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4_length'\n  value='`$tmp.length + 1`' />\n","comments":"","x":2683.5715942382812,"y":4691.309234619141,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"fd74d6c9.7458a8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2293.808952331543,"y":4741.071571350098,"z":"13e6e2ea.39c6bd","wires":[["331dc73.d5e2638"]]},{"id":"bb60c5ac.d057f8","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":2293.570831298828,"y":4783.6905517578125,"z":"13e6e2ea.39c6bd","wires":[["331dc73.d5e2638"]]},{"id":"331dc73.d5e2638","type":"set","name":"set eipam data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6_length'\n  value='1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6[0]'\n  value='`$tmp.ip-prefix`' />\n","comments":"","x":2455.475715637207,"y":4759.405067443848,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"c6578904.ad6e68","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2289.0472717285156,"y":4832.976842880249,"z":"13e6e2ea.39c6bd","wires":[["642b2dc5.096754"]]},{"id":"642b2dc5.096754","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2452.3805923461914,"y":4831.310009002686,"z":"13e6e2ea.39c6bd","wires":[["2e0198ef.fac958","6f2a4f57.153ce"]]},{"id":"2e0198ef.fac958","type":"set","name":"set eipam data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6[$tmp.length]'\n  value='`$tmp.ip-prefix`' />\n","comments":"","x":2635.7138442993164,"y":4801.310009002686,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"6f2a4f57.153ce","type":"set","name":"increment floating-ip-v6_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6_length'\n  value='`$tmp.length + 1`' />\n","comments":"","x":2685.714111328125,"y":4847.976516723633,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"55b59017.ac142","type":"update","name":"update EIPAM_IP_ASSIGNMENTS to PENDING_DELETE...","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\nkey=\"UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id\" >","comments":"","outputs":1,"x":2828.3332138061523,"y":448.6909704208374,"z":"13e6e2ea.39c6bd","wires":[[]]},{"id":"f8e94419.c5d8f8","type":"execute","name":"execute EIPAM unassign IP addresses","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"unassignIPAddress\">\n<parameter name=\"deleteEIPAM_status\" value=\"`$tmp.status`\" />\n","comments":"","outputs":1,"x":2758.3329544067383,"y":498.69096660614014,"z":"13e6e2ea.39c6bd","wires":[[]]},{"id":"de97ac82.07e09","type":"for","name":"for each vm-name","xml":"<for index='vm-name-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >\n","comments":"","outputs":1,"x":910.0000381469727,"y":1767.0240440368652,"z":"13e6e2ea.39c6bd","wires":[["c06c9b88.9e3118"]]},{"id":"794438e6.14a948","type":"for","name":"for each vm-type","xml":"<for index='vm-type-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":578.3332824707031,"y":1745.3576622009277,"z":"13e6e2ea.39c6bd","wires":[["6b08f283.1c6e8c"]]},{"id":"d35b17af.0f15b8","type":"set","name":"set vnf-vms_length","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms_length'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' />\n","comments":"","x":586.6666793823242,"y":1695.3576612472534,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"c06c9b88.9e3118","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1061.6667137145996,"y":1766.3575792312622,"z":"13e6e2ea.39c6bd","wires":[["4ca82d1d.2fb004","27b6fdad.a54e32"]]},{"id":"6ef5aea5.96cc2","type":"set","name":"set vm-type, and vm-names_length","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-type'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type`' />\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names_length'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' />\n","comments":"","x":958.3333511352539,"y":1718.690788269043,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"6b08f283.1c6e8c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":743.3333358764648,"y":1745.3575525283813,"z":"13e6e2ea.39c6bd","wires":[["6ef5aea5.96cc2","de97ac82.07e09"]]},{"id":"4ca82d1d.2fb004","type":"set","name":"set vm-name, and vnfc-names_length","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-name-index].vm-name'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`' />\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-name-index].vnfc-names_length'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' />\n","comments":"","x":1281.6665573120117,"y":1738.6908617019653,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"27b6fdad.a54e32","type":"for","name":"for each vnfc-name","xml":"<for index='vnfc-name-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":1225.0000076293945,"y":1788.6908750534058,"z":"13e6e2ea.39c6bd","wires":[["ae2ae030.8e8f3"]]},{"id":"ae2ae030.8e8f3","type":"set","name":"set vnfc-name","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-name-index].vnfc-names[$vnfc-name-index].vnfc-name'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-name`' />\n","comments":"","x":1413.333236694336,"y":1788.690821647644,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"9c2146c7.85c5b8","type":"set","name":"set vnf-assignments to auto IP call","xml":"<set>\n<parameter name='auto-ip-assignment-input.vnf-topology.vnf-assignments.' \n  value='tmp.vnf-topology.vnf-assignments.' />\n\n","comments":"","x":633.3333129882812,"y":1812.0242910385132,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"64fe9b0a.eb8794","type":"set","name":"set tmp.length","xml":"<set>\n<parameter name='tmp.length'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4_length`' />\n","comments":"","x":2119.762107849121,"y":4580.120216369629,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"eb993152.19a82","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1972.619125366211,"y":4607.26229095459,"z":"13e6e2ea.39c6bd","wires":[["64fe9b0a.eb8794","7b8c2093.b07e"]]},{"id":"eaa1b6f7.672238","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1971.190689086914,"y":4761.548007965088,"z":"13e6e2ea.39c6bd","wires":[["d0e14a9f.e8edc8","2a994463.5c93ac"]]},{"id":"d0e14a9f.e8edc8","type":"switchNode","name":"switch tmp.length","xml":"<switch test='`$tmp.length`'>\n","comments":"","outputs":1,"x":2128.3336181640625,"y":4782.976711273193,"z":"13e6e2ea.39c6bd","wires":[["fd74d6c9.7458a8","bb60c5ac.d057f8","c6578904.ad6e68"]]},{"id":"2a994463.5c93ac","type":"set","name":"set tmp.length","xml":"<set>\n<parameter name='tmp.length'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6_length`' />\n","comments":"","x":2118.571487426758,"y":4737.739334106445,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"6de6e324.feccdc","type":"for","name":"for each vm-type","xml":"<for silentFailure='true' index='vm-type-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >","comments":"","outputs":1,"x":589.166748046875,"y":5157.857647895813,"z":"13e6e2ea.39c6bd","wires":[["71573bad.e3d974"]]},{"id":"71573bad.e3d974","type":"for","name":"for each vnfc","xml":"<for silentFailure='true' index='vnfc-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":773.3333892822266,"y":5157.357983589172,"z":"13e6e2ea.39c6bd","wires":[["215c87ca.31fe88"]]},{"id":"215c87ca.31fe88","type":"for","name":"for each vnfc-network","xml":"<for silentFailure='true' index='vnfc-network-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >\n","comments":"","outputs":1,"x":973.3333358764648,"y":5157.024161338806,"z":"13e6e2ea.39c6bd","wires":[["78dcb1fc.add97"]]},{"id":"78dcb1fc.add97","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1155.0001754760742,"y":5157.02432346344,"z":"13e6e2ea.39c6bd","wires":[["68fd7fdb.0b0bb","79d86468.93bb8c","72caf681.3c09d8","bc4f083.a48cbf8"]]},{"id":"9804f58a.62cd58","type":"switchNode","name":"switch vm-network_length","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`'>\n","comments":"","outputs":1,"x":1646.6667404174805,"y":4335.357867240906,"z":"13e6e2ea.39c6bd","wires":[["bc0b7a0.558e488","f6fb98fe.9969f8","dc787dea.bcd76"]]},{"id":"bc0b7a0.558e488","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1856.666633605957,"y":4255.357707023621,"z":"13e6e2ea.39c6bd","wires":[["1011305d.6dd12"]]},{"id":"f6fb98fe.9969f8","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1857.857307434082,"y":4297.976655960083,"z":"13e6e2ea.39c6bd","wires":[["1011305d.6dd12"]]},{"id":"dc787dea.bcd76","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1860.9524765014648,"y":4420.119835853577,"z":"13e6e2ea.39c6bd","wires":[["8ca708be.1c4978"]]},{"id":"de56fb73.e42608","type":"set","name":"set tmp.vm-network-index to 0, and length to 1","xml":"<set>\n<parameter name='tmp.vm-network-index' value='0' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'\n  value='1' />\n","comments":"","x":2235.000213623047,"y":4248.69128036499,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"bceb44f3.14e468","type":"set","name":"set tmp.vm-network-index to -1","xml":"<set>\n<parameter name='tmp.vm-network-index' value='-1' />\n","comments":"","x":1663.3332443237305,"y":4222.024287223816,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"c0706fbf.53875","type":"set","name":"set tmp.vm-network-index","xml":"<set>\n<parameter name='tmp.vm-network-index' value='`$vm-network-index`' />\n","comments":"","x":2925,"y":4333.690306186676,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"ca9da770.612e88","type":"set","name":"set tmp.vm-network-index","xml":"<set>\n<parameter name='tmp.vm-network-index'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' />\n","comments":"","x":2741.6669006347656,"y":4430.357140541077,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"ac8c2d3f.4fc1","type":"set","name":"increment vm-network_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'\n  value='`$tmp.vm-network-index + 1`' />\n","comments":"","x":2748.3332443237305,"y":4520.3569803237915,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"1011305d.6dd12","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1983.3332595825195,"y":4273.690958976746,"z":"13e6e2ea.39c6bd","wires":[["de56fb73.e42608","9bc9ad7d.a5c1f"]]},{"id":"9bc9ad7d.a5c1f","type":"set","name":"set network-role","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[0].network-role'\n  value='`$tmp.network-role`' />\n","comments":"","x":2139.9998931884766,"y":4295.357623100281,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"b05e43b1.66858","type":"set","name":"set network-role","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-role'\n  value='`$tmp.network-role`' />\n","comments":"","x":2710.0000534057617,"y":4475.356971740723,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"b98e5edb.f4c14","type":"for","name":"for each vm-network","xml":"<for silentFailure='true' index='vm-network-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\n","comments":"","outputs":1,"x":1873.3331832885742,"y":5177.024975776672,"z":"13e6e2ea.39c6bd","wires":[["9b1d3ad3.ab09a8"]]},{"id":"9b1d3ad3.ab09a8","type":"switchNode","name":"network-roles match?","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-role\n  == $tmp.network-role`'>\n","comments":"","outputs":1,"x":2086.999870300293,"y":5177.024892807007,"z":"13e6e2ea.39c6bd","wires":[["a61f603a.eebbb"]]},{"id":"dc35b7fb.a19518","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2424.6665840148926,"y":5175.691438674927,"z":"13e6e2ea.39c6bd","wires":[["6e019622.91b018","e2f2f37e.ee7f6"]]},{"id":"6e019622.91b018","type":"break","name":"break","xml":"<break>\n","comments":"","x":2577.999713897705,"y":5195.6916427612305,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"66124fd9.f933d","type":"switchNode","name":"switch tmp.vm-network-index","xml":"<switch test='`$tmp.vm-network-index`'>\n","comments":"","outputs":1,"x":1898.3330612182617,"y":5295.3578243255615,"z":"13e6e2ea.39c6bd","wires":[["8071dd12.2c83f"]]},{"id":"8071dd12.2c83f","type":"outcomeFalse","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":2093.3331909179688,"y":5293.691644668579,"z":"13e6e2ea.39c6bd","wires":[["c6cdd29b.1d637"]]},{"id":"c6cdd29b.1d637","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2244.9998626708984,"y":5293.691482543945,"z":"13e6e2ea.39c6bd","wires":[["859609f2.0e6308","e972ef70.b885a","21fada1c.7e5796"]]},{"id":"a61f603a.eebbb","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2271.3332443237305,"y":5176.358144760132,"z":"13e6e2ea.39c6bd","wires":[["dc35b7fb.a19518"]]},{"id":"79d86468.93bb8c","type":"switchNode","name":"switch vm-network_length","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`'>\n","comments":"","outputs":1,"x":1356.666648864746,"y":5142.024486541748,"z":"13e6e2ea.39c6bd","wires":[["e82cb830.2bc788","ef29aaff.5feeb8","3f87594d.ccd2f6"]]},{"id":"e82cb830.2bc788","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1566.6665420532227,"y":5062.024326324463,"z":"13e6e2ea.39c6bd","wires":[["9366b1ab.7963b"]]},{"id":"ef29aaff.5feeb8","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1567.8572158813477,"y":5104.643275260925,"z":"13e6e2ea.39c6bd","wires":[["9366b1ab.7963b"]]},{"id":"3f87594d.ccd2f6","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1567.6190223693848,"y":5231.78661441803,"z":"13e6e2ea.39c6bd","wires":[["1617ddae.7763d2"]]},{"id":"68fd7fdb.0b0bb","type":"set","name":"set tmp.vm-network-index to -1","xml":"<set>\n<parameter name='tmp.vm-network-index' value='-1' />\n","comments":"","x":1373.333152770996,"y":5028.690906524658,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"e2f2f37e.ee7f6","type":"set","name":"set tmp.vm-network-index","xml":"<set>\n<parameter name='tmp.vm-network-index' value='`$vm-network-index`' />\n","comments":"","x":2638.3331298828125,"y":5147.02415895462,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"859609f2.0e6308","type":"set","name":"set tmp.vm-network-index","xml":"<set>\n<parameter name='tmp.vm-network-index'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' />\n","comments":"","x":2455.000030517578,"y":5243.690993309021,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"e972ef70.b885a","type":"set","name":"increment vm-network_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'\n  value='`$tmp.vm-network-index + 1`' />\n","comments":"","x":2461.666374206543,"y":5333.690833091736,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"9366b1ab.7963b","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1693.3331680297852,"y":5080.357578277588,"z":"13e6e2ea.39c6bd","wires":[["eb386a81.76f998","1bd02c91.5c0db3"]]},{"id":"eb386a81.76f998","type":"set","name":"set network-role","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[0].network-role'\n  value='`$tmp.network-role`' />\n","comments":"","x":1849.9998016357422,"y":5102.024242401123,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"21fada1c.7e5796","type":"set","name":"set network-role","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-role'\n  value='`$tmp.network-role`' />\n","comments":"","x":2423.333183288574,"y":5288.690824508667,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"72caf681.3c09d8","type":"set","name":"set tmp.network-role","xml":"<set>\n<parameter name='tmp.network-role'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-network-role`' />\n","comments":"","x":1340.000015258789,"y":4983.69130897522,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"bc4f083.a48cbf8","type":"for","name":"for each vnfc-subnet","xml":"<for index='vnfc-subnet-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet_length`' >\n","comments":"","outputs":1,"x":1328.3333854675293,"y":5697.024832725525,"z":"13e6e2ea.39c6bd","wires":[["8019fdeb.1f1df"]]},{"id":"8019fdeb.1f1df","type":"for","name":"for each address family","xml":"<for index='address-family-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments_length`' >\n","comments":"","outputs":1,"x":1558.3333549499512,"y":5697.024993896484,"z":"13e6e2ea.39c6bd","wires":[["a569e998.7f6f78"]]},{"id":"a569e998.7f6f78","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1743.333408355713,"y":5696.358328819275,"z":"13e6e2ea.39c6bd","wires":[["376636eb.8e155a","9932af7e.a158e","3b996dd.91cae92","47350101.675c7","499e38c5.160618","6a64c8f0.30acd8","412df0ca.09277"]]},{"id":"790f3149.355c3","type":"set","name":"set tmp.nii-index to 0, network-information-item_length to 1","xml":"<set>\n<parameter name='tmp.nii-index' value='0' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length'\n  value='1' />\n","comments":"","x":2626.666893005371,"y":5455.358157157898,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"1bd02c91.5c0db3","type":"set","name":"set tmp.vm-network-index to 0, and length to 1","xml":"<set>\n<parameter name='tmp.vm-network-index' value='0' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'\n  value='1' />\n","comments":"","x":1943.3332595825195,"y":5052.024455070496,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"376636eb.8e155a","type":"switchNode","name":"switch network-information-item_length","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length`'>\n","comments":"","outputs":1,"x":1975.0000076293945,"y":5538.024338722229,"z":"13e6e2ea.39c6bd","wires":[["66244662.cb7d98","724deb93.27dc34","1b4bbaf1.e26055"]]},{"id":"66244662.cb7d98","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2213.3334770202637,"y":5462.024338722229,"z":"13e6e2ea.39c6bd","wires":[["52993f5c.65579"]]},{"id":"724deb93.27dc34","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":2214.5241508483887,"y":5504.643287658691,"z":"13e6e2ea.39c6bd","wires":[["52993f5c.65579"]]},{"id":"52993f5c.65579","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2343.3336448669434,"y":5482.024661064148,"z":"13e6e2ea.39c6bd","wires":[["790f3149.355c3","f14c3e9b.38486"]]},{"id":"9932af7e.a158e","type":"set","name":"set tmp.nii-index to -1","xml":"<set>\n<parameter name='tmp.nii-index' value='-1' />\n","comments":"","x":1919.9999694824219,"y":5428.69132232666,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"f14c3e9b.38486","type":"set","name":"set address family","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[0].ip-version'\n  value='`$tmp.ip-version`' />\n","comments":"","x":2500.000144958496,"y":5502.024826049805,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"3b996dd.91cae92","type":"set","name":"set tmp.ip-version","xml":"<set>\n<parameter name='tmp.ip-version'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family`' />\n","comments":"","x":1909.9999618530273,"y":5383.691162109375,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"6f631b33.081b14","type":"for","name":"for each nii","xml":"<for silentFailure='true' index='nii-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length`' >\n","comments":"","outputs":1,"x":2478.3333129882812,"y":5571.024502754211,"z":"13e6e2ea.39c6bd","wires":[["573b51db.5edbb"]]},{"id":"573b51db.5edbb","type":"switchNode","name":"address families match?","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$nii-index].ip-version\n  == $tmp.ip-version`'>\n","comments":"","outputs":1,"x":2670.3336601257324,"y":5570.357917308807,"z":"13e6e2ea.39c6bd","wires":[["fc3cbc.44d57348"]]},{"id":"8ac8da2b.46a538","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3008.000373840332,"y":5569.024463176727,"z":"13e6e2ea.39c6bd","wires":[["8ddded69.8ae0f","b0d0a732.bb11c8"]]},{"id":"8ddded69.8ae0f","type":"break","name":"break","xml":"<break>\n","comments":"","x":3158.0002517700195,"y":5589.024502754211,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"bc0a4266.75c6b","type":"switchNode","name":"switch tmp.nii-index","xml":"<switch test='`$tmp.nii-index`'>\n","comments":"","outputs":1,"x":2508.3333168029785,"y":5687.023856163025,"z":"13e6e2ea.39c6bd","wires":[["cde9dac2.65fc78"]]},{"id":"cde9dac2.65fc78","type":"outcomeFalse","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":2681.6666564941406,"y":5687.024018287659,"z":"13e6e2ea.39c6bd","wires":[["6aaf3258.93c67c"]]},{"id":"6aaf3258.93c67c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2833.3333282470703,"y":5687.023856163025,"z":"13e6e2ea.39c6bd","wires":[["f1a3cb10.325278","d4d17ca1.130ce","9d7eea8d.c3dc78"]]},{"id":"fc3cbc.44d57348","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2854.66703414917,"y":5569.691169261932,"z":"13e6e2ea.39c6bd","wires":[["8ac8da2b.46a538"]]},{"id":"1b4bbaf1.e26055","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2210.9524879455566,"y":5626.785765647888,"z":"13e6e2ea.39c6bd","wires":[["734cf000.cc2c3"]]},{"id":"b0d0a732.bb11c8","type":"set","name":"set tmp.nii-index","xml":"<set>\n<parameter name='tmp.nii-index' value='`$nii-index`' />\n","comments":"","x":3188.333667755127,"y":5540.357183456421,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"f1a3cb10.325278","type":"set","name":"set tmp.nii-index","xml":"<set>\n<parameter name='tmp.nii-index'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length`' />\n","comments":"","x":3008.333339691162,"y":5635.357025146484,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"d4d17ca1.130ce","type":"set","name":"increment nii_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length'\n  value='`$tmp.nii-index + 1`' />\n","comments":"","x":3016.6665077209473,"y":5727.02320766449,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"9d7eea8d.c3dc78","type":"set","name":"set address family","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].ip-version'\n  value='`$tmp.ip-version`' />\n","comments":"","x":3011.666648864746,"y":5682.023198127747,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"47350101.675c7","type":"switchNode","name":"switch network-ips_length","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].network-ips.network-ip_length`'>\n","comments":"","outputs":1,"x":1928.3335342407227,"y":5825.357683181763,"z":"13e6e2ea.39c6bd","wires":[["bf387a97.de46e8","c3e49c6c.f081a","e9d07c32.0bb59"]]},{"id":"bf387a97.de46e8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2116.6666374206543,"y":5777.0247049331665,"z":"13e6e2ea.39c6bd","wires":[["c2a40f82.95dc"]]},{"id":"c3e49c6c.f081a","type":"other","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":2117.8573112487793,"y":5819.643653869629,"z":"13e6e2ea.39c6bd","wires":[["c2a40f82.95dc"]]},{"id":"c2a40f82.95dc","type":"set","name":"set tmp.ip-index to 0","xml":"<set>\n<parameter name='tmp.ip-index' value='0' />\n","comments":"","x":2288.3334770202637,"y":5792.024350166321,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"e9d07c32.0bb59","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2119.999885559082,"y":5865.357462882996,"z":"13e6e2ea.39c6bd","wires":[["91c82192.9223"]]},{"id":"91c82192.9223","type":"set","name":"set tmp.ip-index to current length","xml":"<set>\n<parameter name='tmp.ip-index'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].network-ips.network-ip_length`' />\n","comments":"","x":2329.9999771118164,"y":5865.357686042786,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"499e38c5.160618","type":"for","name":"for each ip","xml":"<for silentFailure='true' index='ip-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' >\n","comments":"","outputs":1,"x":1879.99995803833,"y":5953.6915102005005,"z":"13e6e2ea.39c6bd","wires":[["79ecd784.3e3868"]]},{"id":"3c094b0b.214c04","type":"set","name":"set ip","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].network-ips.network-ip[$target-index]'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$ip-index].vnfc-ip-address`' />\n","comments":"","x":2156.6665534973145,"y":5967.024192810059,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"6a64c8f0.30acd8","type":"set","name":"set network-ips_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].network-ips.network-ip_length'\n  value='`$tmp.ip-index + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' />\n","comments":"","x":1916.6669082641602,"y":6017.0241956710815,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"79ecd784.3e3868","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2018.3332595825195,"y":5953.690958976746,"z":"13e6e2ea.39c6bd","wires":[["3c094b0b.214c04","20f247de.de11d8"]]},{"id":"20f247de.de11d8","type":"set","name":"set target-index","xml":"<set>\n<parameter name='target-index' value='`$ip-index + $tmp.ip-index`' />\n","comments":"","x":2184.999969482422,"y":5922.024517059326,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"eaa55ef8.4455b","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-no-preload3.log' />\n","comments":"","outputs":1,"x":571.6666946411133,"y":5222.024455070496,"z":"13e6e2ea.39c6bd","wires":[[]]},{"id":"1617ddae.7763d2","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1695.0000076293945,"y":5232.024455070496,"z":"13e6e2ea.39c6bd","wires":[["b98e5edb.f4c14","66124fd9.f933d"]]},{"id":"8ca708be.1c4978","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1985.0000076293945,"y":4420.357462882996,"z":"13e6e2ea.39c6bd","wires":[["efcdf82d.885e98","6e9c4629.bc3238"]]},{"id":"734cf000.cc2c3","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2343.333381652832,"y":5627.024455070496,"z":"13e6e2ea.39c6bd","wires":[["6f631b33.081b14","bc0a4266.75c6b"]]},{"id":"412df0ca.09277","type":"set","name":"set ip-count","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].ip-count'\n  value='`$tmp.ip-index + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' />\n","comments":"","x":1881.6666259765625,"y":6072.024361610413,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"a255596.979d8a8","type":"set","name":"set from-preload flag to false","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.from-preload' value='false' />\n","comments":"","x":630,"y":274.28570556640625,"z":"13e6e2ea.39c6bd","wires":[]},{"id":"9fcfcf11.64142","type":"switchNode","name":"switch tmp.subnet-role","xml":"<switch test='`$tmp.subnet-role`'>\n","comments":"","outputs":1,"x":1134.1429443359375,"y":2179.285888671875,"z":"13e6e2ea.39c6bd","wires":[["aae8c30b.ffd2b"]]},{"id":"aae8c30b.ffd2b","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1308.4286880493164,"y":2177.857334136963,"z":"13e6e2ea.39c6bd","wires":[["d5c26f72.2d843"]]},{"id":"d5c26f72.2d843","type":"set","name":"set tmp.subnet-role to NONE","xml":"<set>\n<parameter name='tmp.subnet-role' value='NONE' />\n","comments":"","x":1505.5715103149414,"y":2176.4287452697754,"z":"13e6e2ea.39c6bd","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-preload.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-preload.json
new file mode 100755
index 0000000..07c10ca
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-preload.json
@@ -0,0 +1 @@
+[{"id":"710d7cb4.eb0774","type":"dgstart","name":"DGSTART","outputs":1,"x":101.42857360839844,"y":85.71428680419922,"z":"12fa1652.31064a","wires":[["19ecd48f.9d352b"]]},{"id":"19ecd48f.9d352b","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.28570938110352,"y":125.52382469177246,"z":"12fa1652.31064a","wires":[["65563387.25435c"]]},{"id":"65563387.25435c","type":"method","name":"method vf-module-topology-operation-assign-preload","xml":"<method rpc='vf-module-topology-operation-assign-preload' mode='sync'>\n","comments":"","outputs":1,"x":236.8572006225586,"y":165.71428680419922,"z":"12fa1652.31064a","wires":[["1beaf4b3.212b0b"]]},{"id":"21bc25a8.14c9ba","type":"comment","name":"vf-module-topology-operation-assign-preload","info":"","comments":"","x":506.74967193603516,"y":28.68998622894287,"z":"12fa1652.31064a","wires":[]},{"id":"1beaf4b3.212b0b","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":113.0952377319336,"y":1360.3566846847534,"z":"12fa1652.31064a","wires":[["cb4f7999.d9e4c8","8df98e43.91582","f24637ec.ea6448","d3298aef.821078","c922e93c.ce67a8","6436811c.f7b6f","7930ae51.69171","852c8af1.197bc8","5bc32471.aadd3c"]]},{"id":"cb4f7999.d9e4c8","type":"set","name":"set from-preload flag to true","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.from-preload' value='true' />\n","comments":"","x":400.71424865722656,"y":343.6899881362915,"z":"12fa1652.31064a","wires":[]},{"id":"8df98e43.91582","type":"set","name":"copy vf-module-topology from preload structure","xml":"<set>\n<parameter name='tmp.vf-module-topology.'\n  value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vf-module-topology.`' />\n","comments":"","x":460.71431732177734,"y":399.4042491912842,"z":"12fa1652.31064a","wires":[]},{"id":"7930ae51.69171","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-preload.log' />\n","comments":"","outputs":1,"x":310.71422576904297,"y":2702.880202293396,"z":"12fa1652.31064a","wires":[[]]},{"id":"f24637ec.ea6448","type":"get-resource","name":"get-resource VF_MODULE_TO_VFC_MAPPING","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODULE_TO_VFC_MAPPING WHERE vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'\n  pfx='db.vf-module-to-vfc-mapping[]'>\n\n","comments":"","outputs":1,"x":464.7618942260742,"y":507.0232820510864,"z":"12fa1652.31064a","wires":[["a4bf99dd.135018","e8d97ca9.49cc3"]]},{"id":"a4bf99dd.135018","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":730.5475044250488,"y":487.404109954834,"z":"12fa1652.31064a","wires":[["71b093a0.e0ad2c"]]},{"id":"e8d97ca9.49cc3","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":739.1189346313477,"y":531.6898231506348,"z":"12fa1652.31064a","wires":[["c7a9a780.3f9868"]]},{"id":"71b093a0.e0ad2c","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 reading VF_MODULE_TO_VFC_MAPPING table\" />\n","comments":"","x":905.547435760498,"y":486.54701042175293,"z":"12fa1652.31064a","wires":[]},{"id":"c7a9a780.3f9868","type":"set","name":"set vf-module-to-vfc-mapping length to 0","xml":"<set>\n<parameter name='db.vf-module-to-vfc-mapping_length' value='0' />\n","comments":"","x":988.9999084472656,"y":531.3084602355957,"z":"12fa1652.31064a","wires":[]},{"id":"d3298aef.821078","type":"for","name":"for each vm-type","xml":"<for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":359.7619094848633,"y":835.3565883636475,"z":"12fa1652.31064a","wires":[["3deaf862.f775d8"]]},{"id":"3deaf862.f775d8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":551.6667022705078,"y":833.9279947280884,"z":"12fa1652.31064a","wires":[["db5f31b7.9b0d8","c9f43b26.cf95a8","95f5b341.3e634","8d757725.9164f8","80c39aa5.c11278","be45f752.943938","8f68eac5.8283a8"]]},{"id":"8e0c51ba.2a0ae","type":"for","name":"for each vm","xml":"<for index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >\n","comments":"","outputs":1,"x":1129.762035369873,"y":1017.3564701080322,"z":"12fa1652.31064a","wires":[["cd5f0aba.a794c8"]]},{"id":"c9f43b26.cf95a8","type":"set","name":"set vnfc-names_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' />\n","comments":"","x":801.4287109375,"y":972.0234613418579,"z":"12fa1652.31064a","wires":[]},{"id":"db5f31b7.9b0d8","type":"get-resource","name":"get-resource VFC_MODEL","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VFC_MODEL WHERE customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'\n  pfx='db.vfc-model'>\n\n","comments":"","outputs":1,"x":814.7617645263672,"y":852.0233163833618,"z":"12fa1652.31064a","wires":[["7014c553.4a705c","a2d29d20.ac5ef"]]},{"id":"7014c553.4a705c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1010.5474090576172,"y":832.4039192199707,"z":"12fa1652.31064a","wires":[["957c44b.2c20cb8"]]},{"id":"a2d29d20.ac5ef","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1019.118839263916,"y":876.6896324157715,"z":"12fa1652.31064a","wires":[["64f3e60b.9bc548"]]},{"id":"3e44d7d6.d54548","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 reading VFC_MODEL table\" />\n","comments":"","x":1338.8806610107422,"y":834.8800859451294,"z":"12fa1652.31064a","wires":[]},{"id":"a87ad3e9.ec603","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=\"`'No entries found in VFC_MODEL table for customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc_customization_uuid`\" />\n","comments":"","x":1338.0951538085938,"y":878.6898260116577,"z":"12fa1652.31064a","wires":[]},{"id":"9c45499c.064018","type":"comment","name":"Find this vm-type in the TOSCA data","info":"","comments":"","x":1109.7620010375977,"y":678.690034866333,"z":"12fa1652.31064a","wires":[]},{"id":"95f5b341.3e634","type":"set","name":"set db-vm-type-index to -1","xml":"<set>\n<parameter name='db-vm-type-index' value='-1' />\n","comments":"","x":811.428596496582,"y":672.0233907699585,"z":"12fa1652.31064a","wires":[]},{"id":"8d757725.9164f8","type":"for","name":"for each db vm-type","xml":"<for index='tmp-idx' start='0' end='`$db.vf-module-to-vfc-mapping_length`' >\n","comments":"","outputs":1,"x":789.7619094848633,"y":722.0233316421509,"z":"12fa1652.31064a","wires":[["8d887d24.fc061"]]},{"id":"8d887d24.fc061","type":"switchNode","name":"vm-types equal?","xml":"<switch test='`$db.vf-module-to-vfc-mapping[$tmp-idx].vm-type\n  == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type`'>\n","comments":"","outputs":1,"x":1018.0952682495117,"y":720.3566036224365,"z":"12fa1652.31064a","wires":[["8f915d23.ddb28"]]},{"id":"8f915d23.ddb28","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1196.4285507202148,"y":718.6899900436401,"z":"12fa1652.31064a","wires":[["5202ed9f.35e3f4"]]},{"id":"5202ed9f.35e3f4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1331.4285125732422,"y":717.0233316421509,"z":"12fa1652.31064a","wires":[["2921fb14.672284","f7267660.fa7548"]]},{"id":"f7267660.fa7548","type":"break","name":"break","xml":"<break>\n","comments":"","x":1471.4286003112793,"y":737.0233736038208,"z":"12fa1652.31064a","wires":[]},{"id":"2921fb14.672284","type":"set","name":"set db-vm-type-index to this index","xml":"<set>\n<parameter name='db-vm-type-index' value='`$tmp-idx`' />\n","comments":"","x":1555.7617683410645,"y":688.6899566650391,"z":"12fa1652.31064a","wires":[]},{"id":"80c39aa5.c11278","type":"switchNode","name":"switch db-vm-type-index","xml":"<switch test='`$db-vm-type-index`'>\n","comments":"","outputs":1,"x":806.7618942260742,"y":775.3566665649414,"z":"12fa1652.31064a","wires":[["8cd39913.f23228"]]},{"id":"8cd39913.f23228","type":"outcome","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":1026.4286422729492,"y":775.3566465377808,"z":"12fa1652.31064a","wires":[["a89fa43d.9bb628"]]},{"id":"a3308ad5.11d848","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=\"`'Preload data contains vm-type ' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type + ' but VF_MODULE_TO_VFC_MAPPING table does not have this vm-type'`\" />\n","comments":"","x":1349.761947631836,"y":772.0231647491455,"z":"12fa1652.31064a","wires":[]},{"id":"be45f752.943938","type":"switchNode","name":"switch naming-policy","xml":"<switch test='`$db.vfc-model.naming-policy`'>\n","comments":"","outputs":1,"x":796.428466796875,"y":1065.6899499893188,"z":"12fa1652.31064a","wires":[["c572d795.28f748","31d3de85.02eef2"]]},{"id":"c572d795.28f748","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":978.0952224731445,"y":1019.0233221054077,"z":"12fa1652.31064a","wires":[["8e0c51ba.2a0ae"]]},{"id":"31d3de85.02eef2","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":976.1904144287109,"y":1109.97549533844,"z":"12fa1652.31064a","wires":[["8b2e5d89.9a1aa"]]},{"id":"cd5f0aba.a794c8","type":"set","name":"set vnfc name to vm name","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vm-index].vnfc-name'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-type-index]`' />\n","comments":"","x":1354.7618789672852,"y":1017.356593132019,"z":"12fa1652.31064a","wires":[]},{"id":"e082e88d.784ca8","type":"call","name":"call GENERIC-RESOURCE-API:naming-policy-generate-name","xml":"<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n","comments":"","outputs":1,"x":1610.5951843261719,"y":1129.8566722869873,"z":"12fa1652.31064a","wires":[["3ad3c57a.a9b1fa","6dbcf922.de03b8"]]},{"id":"3b3fca2d.6db346","type":"set","name":"set variables for generating name","xml":"<set>\n<parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.vfc-model.naming-policy`' />\n<parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='naming-policy-generate-name-input.query-parameter' value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vf-module-customization-uuid`' />\n<parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />\n<parameter name='naming-policy-generate-name-input.vnf-name' value='`$vf-module-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='naming-policy-generate-name-input.vm-name' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`' />\n","comments":"","x":1520.5950622558594,"y":1084.1422319412231,"z":"12fa1652.31064a","wires":[]},{"id":"f4cc50d3.26695","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=\"`'Unable to generate VNFC name: ' + $error-message`\" />\n","comments":"","x":2242.7379150390625,"y":1100.8089056015015,"z":"12fa1652.31064a","wires":[]},{"id":"cd517df1.447c3","type":"set","name":"set vnfc-name to generated name","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vm-index].vnfc-name'\n  value='`$naming-policy-generate-name-output.vnfc-name`' />\n","comments":"","x":2135.547317504883,"y":1149.094633102417,"z":"12fa1652.31064a","wires":[]},{"id":"8b2e5d89.9a1aa","type":"for","name":"for each vm","xml":"<for index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >\n","comments":"","outputs":1,"x":1128.9285507202148,"y":1109.023274421692,"z":"12fa1652.31064a","wires":[["2a95f2dd.0370be"]]},{"id":"2a95f2dd.0370be","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1290.5951843261719,"y":1109.8566493988037,"z":"12fa1652.31064a","wires":[["3b3fca2d.6db346","e082e88d.784ca8"]]},{"id":"db5c587c.0ccaa8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2936.4284019470215,"y":662.0233678817749,"z":"12fa1652.31064a","wires":[["2296bb15.a1c234","7a8570f1.b8e03"]]},{"id":"7a8570f1.b8e03","type":"call","name":"call GENERIC-RESOURCE-API:naming-policy-generate-name","xml":"<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n","comments":"","outputs":1,"x":3260.7141075134277,"y":688.5948991775513,"z":"12fa1652.31064a","wires":[[]]},{"id":"2296bb15.a1c234","type":"set","name":"set variables for deleting name","xml":"<set>\n<parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n","comments":"","x":3162.1427268981934,"y":641.4519701004028,"z":"12fa1652.31064a","wires":[]},{"id":"eb951168.0fa3a","type":"for","name":"for each vm-type","xml":"<for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":2252.7620391845703,"y":629.3566608428955,"z":"12fa1652.31064a","wires":[["99139193.020a8"]]},{"id":"99139193.020a8","type":"for","name":"for each vnfc","xml":"<for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":2431.7621154785156,"y":629.3566360473633,"z":"12fa1652.31064a","wires":[["39a3d2db.90ad1e"]]},{"id":"39a3d2db.90ad1e","type":"switchNode","name":"switch vnfc-name","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>\n","comments":"","outputs":1,"x":2614.762046813965,"y":628.6899538040161,"z":"12fa1652.31064a","wires":[["69f3e35.4c48e1c","583536f.86c70c8"]]},{"id":"69f3e35.4c48e1c","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2783.0953063964844,"y":595.3566598892212,"z":"12fa1652.31064a","wires":[["4b1a4758.a1ae08"]]},{"id":"583536f.86c70c8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2784.761978149414,"y":661.5471725463867,"z":"12fa1652.31064a","wires":[["db5c587c.0ccaa8"]]},{"id":"4b1a4758.a1ae08","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2913.0951499938965,"y":593.6900119781494,"z":"12fa1652.31064a","wires":[[]]},{"id":"a89fa43d.9bb628","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1179.761920928955,"y":775.3566055297852,"z":"12fa1652.31064a","wires":[["a3308ad5.11d848","eb951168.0fa3a"]]},{"id":"957c44b.2c20cb8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1169.761833190918,"y":833.6899290084839,"z":"12fa1652.31064a","wires":[["3e44d7d6.d54548","eb951168.0fa3a"]]},{"id":"64f3e60b.9bc548","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1169.761833190918,"y":877.0233030319214,"z":"12fa1652.31064a","wires":[["a87ad3e9.ec603","eb951168.0fa3a"]]},{"id":"420f3ecc.4b938","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2073.928466796875,"y":1103.1900043487549,"z":"12fa1652.31064a","wires":[["f4cc50d3.26695","eb951168.0fa3a"]]},{"id":"40410f3e.29024","type":"comment","name":"Rollback any generated VNFC names","info":"","comments":"","x":2428.095169067383,"y":582.0233116149902,"z":"12fa1652.31064a","wires":[]},{"id":"2ea59c9e.768714","type":"for","name":"for each vm-network","xml":"<for silentFailure='true' index='vm-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\n","comments":"","outputs":1,"x":871.4285659790039,"y":1262.523151397705,"z":"12fa1652.31064a","wires":[["386d3d72.1b5e82"]]},{"id":"c922e93c.ce67a8","type":"for","name":"for each vm-type","xml":"<for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":353.0952453613281,"y":1242.1898851394653,"z":"12fa1652.31064a","wires":[["1d53cd4b.5f7d63"]]},{"id":"44651758.5c8428","type":"set","name":"set vnfc-network-data_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' />\n","comments":"","x":896.4286270141602,"y":1203.8563995361328,"z":"12fa1652.31064a","wires":[]},{"id":"1d53cd4b.5f7d63","type":"for","name":"for each vnfc","xml":"<for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":538.0952453613281,"y":1241.523310661316,"z":"12fa1652.31064a","wires":[["2fdadfd6.dbc9f"]]},{"id":"2fdadfd6.dbc9f","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":689.7619514465332,"y":1240.5232706069946,"z":"12fa1652.31064a","wires":[["44651758.5c8428","2ea59c9e.768714"]]},{"id":"386d3d72.1b5e82","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1058.0952987670898,"y":1261.8565635681152,"z":"12fa1652.31064a","wires":[["1010480b.d08c18","8a45e464.f972b8","e53b91c7.7b5b6","c881b3dd.d344e"]]},{"id":"1010480b.d08c18","type":"set","name":"set vnfc-network-role","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-network-role'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-role`' />\n","comments":"","x":1244.761848449707,"y":1217.189935684204,"z":"12fa1652.31064a","wires":[]},{"id":"c881b3dd.d344e","type":"set","name":"set vnfc-subnet-role to NA","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-subnet-role'\n  value='NA' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet_length'\n  value='1' />\n","comments":"","x":1260.000057220459,"y":1265.2850093841553,"z":"12fa1652.31064a","wires":[]},{"id":"8a45e464.f972b8","type":"set","name":"set vnfc-ip-assignments_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments_length'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item_length`' />\n","comments":"","x":1274.7619285583496,"y":1312.189778327942,"z":"12fa1652.31064a","wires":[]},{"id":"e53b91c7.7b5b6","type":"for","name":"for each ip-version","xml":"<for silentFailure='true' index='ip-version-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item_length`' >\n","comments":"","outputs":1,"x":1234.7619705200195,"y":1363.856608390808,"z":"12fa1652.31064a","wires":[["721dbdd7.791a84"]]},{"id":"721dbdd7.791a84","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1408.09521484375,"y":1363.8565111160278,"z":"12fa1652.31064a","wires":[["3bf78e5c.d52ef2","636f1fd0.0e89c"]]},{"id":"3bf78e5c.d52ef2","type":"set","name":"set ip-version, dhcp, ip-count","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-address-family'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].ip-version`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-subnet-dhcp'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].use-dhcp`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-subnet-ip-count'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].ip-count`' />\n","comments":"","x":1603.0953178405762,"y":1333.8566884994507,"z":"12fa1652.31064a","wires":[]},{"id":"636f1fd0.0e89c","type":"for","name":"for each ip address","xml":"<for silentFailure='true' index='ip-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].network-ips.network-ip_length`' >\n","comments":"","outputs":1,"x":1573.0950736999512,"y":1383.8566102981567,"z":"12fa1652.31064a","wires":[["5eb141f0.08442"]]},{"id":"5eb141f0.08442","type":"set","name":"set IP address","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-subnet-ips[$ip-index].vnfc-ip-address'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].network-ips.network-ip[$ip-index]`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-subnet-ips[$ip-index].ip-type'\n  value='FIXED' />\n","comments":"","x":1764.7617492675781,"y":1383.8565282821655,"z":"12fa1652.31064a","wires":[]},{"id":"3ad3c57a.a9b1fa","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1913.9286499023438,"y":1103.1900849342346,"z":"12fa1652.31064a","wires":[["420f3ecc.4b938"]]},{"id":"6dbcf922.de03b8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1917.2618675231934,"y":1149.8566703796387,"z":"12fa1652.31064a","wires":[["cd517df1.447c3"]]},{"id":"6436811c.f7b6f","type":"for","name":"for each preload vnf-network","xml":"<for silentFailure='true' index='vnf-network-index' start='0'\n  end='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network_length`' >\n","comments":"","outputs":1,"x":367.0952911376953,"y":1798.690022945404,"z":"12fa1652.31064a","wires":[["489e6b61.5ed4b4"]]},{"id":"489e6b61.5ed4b4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":576.7618560791016,"y":1797.6899008750916,"z":"12fa1652.31064a","wires":[["4cb75157.ed3f8","eb154868.b2eb08","bf625347.3faf2"]]},{"id":"4cb75157.ed3f8","type":"set","name":"set found-network-name to false","xml":"<set>\n<parameter name='found-network-name' value='false' />\n","comments":"","x":816.4286804199219,"y":1438.6900005340576,"z":"12fa1652.31064a","wires":[]},{"id":"eb154868.b2eb08","type":"for","name":"for each existing vnf network","xml":"<for silentFailure='true' index='ex-vnf-network-index' start='0'\n  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >\n","comments":"","outputs":1,"x":804.7620162963867,"y":1488.6900854110718,"z":"12fa1652.31064a","wires":[["8b9298e1.145a48"]]},{"id":"8b9298e1.145a48","type":"switchNode","name":"switch network-names match?","xml":"<switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name\n  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].network-name`'>\n","comments":"","outputs":1,"x":1081.7620849609375,"y":1488.6900434494019,"z":"12fa1652.31064a","wires":[["f5401d97.d742f"]]},{"id":"f5401d97.d742f","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1285.0955352783203,"y":1488.023377418518,"z":"12fa1652.31064a","wires":[["a6191a44.3e3a78"]]},{"id":"3e55a7b2.a51328","type":"set","name":"set found-network-name to true","xml":"<set>\n<parameter name='found-network-name' value='true' />\n","comments":"","x":1659.7618942260742,"y":1465.3567094802856,"z":"12fa1652.31064a","wires":[]},{"id":"a6191a44.3e3a78","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1433.0952987670898,"y":1487.0233373641968,"z":"12fa1652.31064a","wires":[["3e55a7b2.a51328","c988f241.6ba0e"]]},{"id":"c988f241.6ba0e","type":"break","name":"break","xml":"<break>\n","comments":"","x":1586.4286880493164,"y":1510.3568361997604,"z":"12fa1652.31064a","wires":[]},{"id":"bf625347.3faf2","type":"switchNode","name":"switch found-network-name","xml":"<switch test='`$found-network-name`'>\n","comments":"","outputs":1,"x":786.4285202026367,"y":2119.35649394989,"z":"12fa1652.31064a","wires":[["b206c980.70b6f8","608eac4.0288254"]]},{"id":"b206c980.70b6f8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":993.4284744262695,"y":1735.3565855026245,"z":"12fa1652.31064a","wires":[["7be5eb0d.034284"]]},{"id":"7be5eb0d.034284","type":"switchNode","name":"switch network-roles match?","xml":"<switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role\n  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].network-role`'>\n","comments":"","outputs":1,"x":1196.7616729736328,"y":1735.3563804626465,"z":"12fa1652.31064a","wires":[["f43759aa.1fb938"]]},{"id":"f43759aa.1fb938","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1396.7617225646973,"y":1735.3565435409546,"z":"12fa1652.31064a","wires":[["ce923577.439d28"]]},{"id":"ce923577.439d28","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1570.095085144043,"y":1735.3564939498901,"z":"12fa1652.31064a","wires":[["b5c5e69.cdda018","fe21ec89.87ead","87756b21.ef62b8","70be9e10.72ae7","8c373e2d.03cca"]]},{"id":"b5c5e69.cdda018","type":"set","name":"set new vnf-network data","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-role'\n  value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-name'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].network-name`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-id'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].network-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].neutron-id'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].neutron-id`' />\n","comments":"","x":1828.0950355529785,"y":1612.0233144760132,"z":"12fa1652.31064a","wires":[]},{"id":"fe21ec89.87ead","type":"set","name":"set cur-vnf-network-index","xml":"<set>\n<parameter name='cur-vnf-network-index'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' />\n","comments":"","x":1829.7618255615234,"y":1563.689736366272,"z":"12fa1652.31064a","wires":[]},{"id":"87756b21.ef62b8","type":"set","name":"increment current vnf-network length","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length'\n  value='`$cur-vnf-network-index + 1`' />\n","comments":"","x":1861.4284133911133,"y":1658.6900148391724,"z":"12fa1652.31064a","wires":[]},{"id":"c816157a.9f7e68","type":"for","name":"for each preload subnet","xml":"<for index='subnet-index' start='0'\n  end='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >\n","comments":"","outputs":1,"x":2503.4285202026367,"y":2085.0231618881226,"z":"12fa1652.31064a","wires":[["2905b9f.a43aa46"]]},{"id":"82055682.392668","type":"switchNode","name":"switch subnet-ids match?","xml":"<switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id\n  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-id`'>\n","comments":"","outputs":1,"x":4107.927658081055,"y":1966.0233840942383,"z":"12fa1652.31064a","wires":[["79c97dcd.b47344"]]},{"id":"5738f507.814e7c","type":"switchNode","name":"switch subnet-names match?","xml":"<switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-name\n  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-name`'>\n","comments":"","outputs":1,"x":4119.5944900512695,"y":2066.023063659668,"z":"12fa1652.31064a","wires":[["b4c1c7fa.c1b8d8"]]},{"id":"70be9e10.72ae7","type":"set","name":"set cur-subnet-index to 0","xml":"<set>\n<parameter name='cur-subnet-index' value='0' />\n","comments":"","x":1824.7617645263672,"y":1705.3565168380737,"z":"12fa1652.31064a","wires":[]},{"id":"5597bc8c.17abe4","type":"switchNode","name":"switch subnet-id","xml":"<switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`'>\n","comments":"","outputs":1,"x":3729.594680786133,"y":1942.3565292358398,"z":"12fa1652.31064a","wires":[["d9ef280d.9e6328","494ea68b.c1f408"]]},{"id":"d9ef280d.9e6328","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":3917.9279861450195,"y":1917.3562803268433,"z":"12fa1652.31064a","wires":[["fa6d89c9.d73cf8"]]},{"id":"494ea68b.c1f408","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3917.6899490356445,"y":1966.6417655944824,"z":"12fa1652.31064a","wires":[["82055682.392668"]]},{"id":"2e9b3a87.471216","type":"switchNode","name":"switch subnet-name","xml":"<switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-name`'>\n","comments":"","outputs":1,"x":3739.595169067383,"y":2039.022915840149,"z":"12fa1652.31064a","wires":[["5f10ed16.b667f4","661bc495.853a7c"]]},{"id":"5f10ed16.b667f4","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":3914.5949325561523,"y":2017.3560857772827,"z":"12fa1652.31064a","wires":[["3903073b.90ca38"]]},{"id":"661bc495.853a7c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3914.3568954467773,"y":2066.641571044922,"z":"12fa1652.31064a","wires":[["5738f507.814e7c"]]},{"id":"73a010dc.11d51","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3537.9280128479004,"y":1991.689860343933,"z":"12fa1652.31064a","wires":[["5597bc8c.17abe4","2e9b3a87.471216","c36b38d4.da9f08","7488330e.ae075c"]]},{"id":"852c8af1.197bc8","type":"for","name":"for each vm-type","xml":"<for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":321.4285659790039,"y":2886.6899852752686,"z":"12fa1652.31064a","wires":[["36587c5a.374214"]]},{"id":"36587c5a.374214","type":"for","name":"for each vm-network","xml":"<for index='vm-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\n","comments":"","outputs":1,"x":527.6190757751465,"y":2886.4517936706543,"z":"12fa1652.31064a","wires":[["5f533bab.b3a6e4"]]},{"id":"5f533bab.b3a6e4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":733.3333015441895,"y":2885.0233001708984,"z":"12fa1652.31064a","wires":[["ce7af9b8.cab5c8","bdfbd2a2.f0c23","b00da185.c29ca","3812a1fc.76e38e"]]},{"id":"ce7af9b8.cab5c8","type":"set","name":"set tmp.network-role","xml":"<set>\n<parameter name='tmp.network-role'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-role`' />\n","comments":"","x":929.0475997924805,"y":2837.880365371704,"z":"12fa1652.31064a","wires":[]},{"id":"bdfbd2a2.f0c23","type":"for","name":"for each vnf-network","xml":"<for index='vnf-network-index' start='0'\n  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >\n","comments":"","outputs":1,"x":926.1904640197754,"y":2892.16632270813,"z":"12fa1652.31064a","wires":[["ca0b8fd4.7749d"]]},{"id":"b00da185.c29ca","type":"set","name":"set found-network to false","xml":"<set>\n<parameter name='found-network' value='false' />\n","comments":"","x":946.1904487609863,"y":2789.3090076446533,"z":"12fa1652.31064a","wires":[]},{"id":"ca0b8fd4.7749d","type":"switchNode","name":"network-role matches?","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role\n  == $tmp.network-role`'>\n","comments":"","outputs":1,"x":1150.4761390686035,"y":2892.1661491394043,"z":"12fa1652.31064a","wires":[["a77f691c.58cd28"]]},{"id":"a77f691c.58cd28","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1327.6188888549805,"y":2891.7376823425293,"z":"12fa1652.31064a","wires":[["92338465.d78118"]]},{"id":"92338465.d78118","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1476.1904792785645,"y":2890.7376556396484,"z":"12fa1652.31064a","wires":[["7529d138.b3c64","bd0bbace.4b4578","f57907cf.0ebc48"]]},{"id":"7529d138.b3c64","type":"set","name":"set network-id","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-id'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-id`' />\n","comments":"","x":1643.3334465026855,"y":2847.880609512329,"z":"12fa1652.31064a","wires":[]},{"id":"bd0bbace.4b4578","type":"set","name":"set found-network to true","xml":"<set>\n<parameter name='found-network' value='true' />\n","comments":"","x":1680.476245880127,"y":2889.3089447021484,"z":"12fa1652.31064a","wires":[]},{"id":"f57907cf.0ebc48","type":"break","name":"break","xml":"<break>\n","comments":"","x":1620.4760780334473,"y":2932.1661834716797,"z":"12fa1652.31064a","wires":[]},{"id":"3812a1fc.76e38e","type":"switchNode","name":"switch found-network","xml":"<switch test='`$found-network`'>\n","comments":"","outputs":1,"x":926.1904640197754,"y":2973.5945110321045,"z":"12fa1652.31064a","wires":[["13e8d11b.10877f"]]},{"id":"13e8d11b.10877f","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1100.4761199951172,"y":2973.59468460083,"z":"12fa1652.31064a","wires":[["61cb14f9.f0fadc"]]},{"id":"61cb14f9.f0fadc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1251.904712677002,"y":2972.1661224365234,"z":"12fa1652.31064a","wires":[["eb951168.0fa3a","c6664d05.c2339"]]},{"id":"c6664d05.c2339","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Unable to find network-id for network with network-role ' + $tmp.network-role`\" />\n","comments":"","x":1433.0952033996582,"y":2971.6899070739746,"z":"12fa1652.31064a","wires":[]},{"id":"608eac4.0288254","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":983.0953674316406,"y":2505.356367111206,"z":"12fa1652.31064a","wires":[["13d87860.cdb998"]]},{"id":"13d87860.cdb998","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1129.7619438171387,"y":2505.35652923584,"z":"12fa1652.31064a","wires":[["682a3cc.9cd4cc4","f3276db4.466d1","86a3405e.9eb5d"]]},{"id":"682a3cc.9cd4cc4","type":"set","name":"set new vnf-network data","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-role'\n  value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-name'\n  value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-id'\n  value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].neutron-id'\n  value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].neutron-id`' />\n","comments":"","x":1343.0953178405762,"y":2503.689781188965,"z":"12fa1652.31064a","wires":[]},{"id":"42ba8f62.0c3b1","type":"set","name":"set cur-vnf-network-index","xml":"<set>\n<parameter name='cur-vnf-network-index'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' />\n","comments":"","x":1728.0953750610352,"y":2465.3558807373047,"z":"12fa1652.31064a","wires":[]},{"id":"f3276db4.466d1","type":"set","name":"increment current vnf-network length","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length'\n  value='`$cur-vnf-network-index + 1`' />\n","comments":"","x":1376.4287643432617,"y":2553.689929008484,"z":"12fa1652.31064a","wires":[]},{"id":"8f68eac5.8283a8","type":"set","name":"set data for vm","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code'\n  value='`$db.vfc-model.nfc-naming-code`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function'\n  value='`$db.vfc-model.nfc-function`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid'\n  value='`$db.vfc-model.invariant-uuid`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].uuid'\n  value='`$db.vfc-model.uuid`' />\n","comments":"","x":777.0952606201172,"y":923.6899862289429,"z":"12fa1652.31064a","wires":[]},{"id":"86a3405e.9eb5d","type":"switchNode","name":"switch vnf-network_length","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`'>\n","comments":"","outputs":1,"x":1346.428539276123,"y":2432.023359298706,"z":"12fa1652.31064a","wires":[["6eddfd74.49f4f4","7c38cb2b.2116b4","3b87c567.23389a"]]},{"id":"6eddfd74.49f4f4","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1538.0951232910156,"y":2387.02352142334,"z":"12fa1652.31064a","wires":[["b339bde7.dc09e"]]},{"id":"7c38cb2b.2116b4","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1538.0953273773193,"y":2427.023443222046,"z":"12fa1652.31064a","wires":[["b339bde7.dc09e"]]},{"id":"3b87c567.23389a","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1536.428581237793,"y":2467.023281097412,"z":"12fa1652.31064a","wires":[["42ba8f62.0c3b1"]]},{"id":"b339bde7.dc09e","type":"set","name":"set cur-vnf-network-index to 0","xml":"<set>\n<parameter name='cur-vnf-network-index' value='0' />\n","comments":"","x":1729.7619743347168,"y":2402.0231761932373,"z":"12fa1652.31064a","wires":[]},{"id":"8c373e2d.03cca","type":"switchNode","name":"switch subnet-data[0].sdnc-subnet-id","xml":"<switch test=\"`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[0].sdnc-subnet-id`\">\n","comments":"","outputs":1,"x":1864.595817565918,"y":1953.5231199264526,"z":"12fa1652.31064a","wires":[["52f64978.b78868","b9dc1667.6bc068"]]},{"id":"52f64978.b78868","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2111.428367614746,"y":1787.5232667922974,"z":"12fa1652.31064a","wires":[["21e19628.b86eda"]]},{"id":"b9dc1667.6bc068","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2104.761863708496,"y":2135.523271560669,"z":"12fa1652.31064a","wires":[["c90b05e8.00a658"]]},{"id":"f6db4323.ce19b","type":"for","name":"for every existing subnet","xml":"<for index='ex-subnet-index' start='0'\n  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data_length`' >\n","comments":"","outputs":1,"x":2498.9280700683594,"y":1762.5235090255737,"z":"12fa1652.31064a","wires":[["6478d14e.ad367"]]},{"id":"6478d14e.ad367","type":"set","name":"copy subnet data","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].sdnc-subnet-id'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].sdnc-subnet-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-id'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].ip-version'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].ip-version`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-name'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-name`' />\n","comments":"","x":2715.594825744629,"y":1760.8568019866943,"z":"12fa1652.31064a","wires":[]},{"id":"21e19628.b86eda","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2276.428367614746,"y":1786.1898927688599,"z":"12fa1652.31064a","wires":[["f6db4323.ce19b","a93819a1.e5bdb8"]]},{"id":"a93819a1.e5bdb8","type":"set","name":"set subnet-data length","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data_length'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data_length`' />\n","comments":"","x":2493.094955444336,"y":1809.189974784851,"z":"12fa1652.31064a","wires":[]},{"id":"5f454f7.d5c62b","type":"comment","name":"no subnets in preload, copy all of them","info":"","comments":"","x":2244.7616958618164,"y":1729.190011024475,"z":"12fa1652.31064a","wires":[]},{"id":"242ab477.0be38c","type":"switchNode","name":"switch ip-version matches?","xml":"<switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].ip-version\n  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].ip-version`'>\n","comments":"","outputs":1,"x":3172.928642272949,"y":1994.3563585281372,"z":"12fa1652.31064a","wires":[["12828404.8769ec"]]},{"id":"12828404.8769ec","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3372.9287338256836,"y":1993.3565216064453,"z":"12fa1652.31064a","wires":[["73a010dc.11d51"]]},{"id":"5efc21e1.13e11","type":"for","name":"for every existing subnet","xml":"<for index='ex-subnet-index' start='0'\n  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data_length`' >\n","comments":"","outputs":1,"x":2916.26163482666,"y":1995.6898975372314,"z":"12fa1652.31064a","wires":[["242ab477.0be38c"]]},{"id":"2905b9f.a43aa46","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2704.5950469970703,"y":2084.023313522339,"z":"12fa1652.31064a","wires":[["5efc21e1.13e11","19550d0c.5e1f83","69b02c7d.dd3ca4","9a10c321.41189","5efb3a03.d86314"]]},{"id":"19550d0c.5e1f83","type":"set","name":"set tmp.found-match to false","xml":"<set>\n<parameter name='tmp.found-match' value='false' />\n","comments":"","x":2927.5950469970703,"y":1945.3568096160889,"z":"12fa1652.31064a","wires":[]},{"id":"fa6d89c9.d73cf8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4049.595100402832,"y":1917.3567657470703,"z":"12fa1652.31064a","wires":[[]]},{"id":"3903073b.90ca38","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4052.9282760620117,"y":2017.3565654754639,"z":"12fa1652.31064a","wires":[[]]},{"id":"c36b38d4.da9f08","type":"set","name":"set match to true","xml":"<set>\n<parameter name='match' value='true' />\n","comments":"","x":3736.261993408203,"y":1857.3566818237305,"z":"12fa1652.31064a","wires":[]},{"id":"79c97dcd.b47344","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":4317.928848266602,"y":1964.0233116149902,"z":"12fa1652.31064a","wires":[["522677d0.7b7a78"]]},{"id":"b4c1c7fa.c1b8d8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":4317.928520202637,"y":2064.023313522339,"z":"12fa1652.31064a","wires":[["440bbb49.74a244"]]},{"id":"522677d0.7b7a78","type":"set","name":"set match to false","xml":"<set>\n<parameter name='match' value='false' />\n","comments":"","x":4486.261528015137,"y":1962.3566875457764,"z":"12fa1652.31064a","wires":[]},{"id":"440bbb49.74a244","type":"set","name":"set match to false","xml":"<set>\n<parameter name='match' value='false' />\n","comments":"","x":4484.595024108887,"y":2062.356565475464,"z":"12fa1652.31064a","wires":[]},{"id":"7488330e.ae075c","type":"switchNode","name":"switch match","xml":"<switch test='`$match`'>\n","comments":"","outputs":1,"x":3716.261993408203,"y":2139.0233993530273,"z":"12fa1652.31064a","wires":[["7b9f2fb1.02d5e"]]},{"id":"7b9f2fb1.02d5e","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3867.9283561706543,"y":2137.356565475464,"z":"12fa1652.31064a","wires":[["631e756c.5d1c1c"]]},{"id":"631e756c.5d1c1c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":4019.5951042175293,"y":2137.356565475464,"z":"12fa1652.31064a","wires":[["94203d36.7288","bc4876b1.4bf468"]]},{"id":"94203d36.7288","type":"set","name":"set tmp.found-match to true","xml":"<set>\n<parameter name='tmp.found-match' value='true' />\n","comments":"","x":4236.261528015137,"y":2110.690061569214,"z":"12fa1652.31064a","wires":[]},{"id":"bc4876b1.4bf468","type":"break","name":"break","xml":"<break>\n","comments":"","x":4171.261852264404,"y":2157.356735229492,"z":"12fa1652.31064a","wires":[]},{"id":"69b02c7d.dd3ca4","type":"switchNode","name":"switch tmp.found-match","xml":"<switch test='`$tmp.found-match`'>\n","comments":"","outputs":1,"x":2906.2617950439453,"y":2165.689987182617,"z":"12fa1652.31064a","wires":[["423962f8.56b9bc"]]},{"id":"423962f8.56b9bc","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":3094.5950241088867,"y":2164.023313522339,"z":"12fa1652.31064a","wires":[["110c975b.70b889"]]},{"id":"110c975b.70b889","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3246.2617721557617,"y":2162.356565475464,"z":"12fa1652.31064a","wires":[["eb951168.0fa3a","404634d4.2421ac","d753f57b.2e1858"]]},{"id":"404634d4.2421ac","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=\"`'Could not find subnet match for network-name '\n      + $mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name`\" />\n","comments":"","x":3421.2617721557617,"y":2175.690061569214,"z":"12fa1652.31064a","wires":[]},{"id":"9a10c321.41189","type":"set","name":"copy subnet data","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$cur-subnet-index].sdnc-subnet-id'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].sdnc-subnet-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$cur-subnet-index].subnet-id'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$cur-subnet-index].ip-version'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].ip-version`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$cur-subnet-index].subnet-name'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-name`' />\n","comments":"","x":2887.9285202026367,"y":2214.023313522339,"z":"12fa1652.31064a","wires":[]},{"id":"5efb3a03.d86314","type":"set","name":"increment cur-subnet-index","xml":"<set>\n<parameter name='cur-subnet-index' value='`$cur-subnet-index + 1`' />\n","comments":"","x":2917.92862701416,"y":2257.356575012207,"z":"12fa1652.31064a","wires":[]},{"id":"115868de.991a07","type":"set","name":"set subnet-data length","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data_length'\n  value='`$cur-subnet-index`' />\n","comments":"","x":2499.9286193847656,"y":2184.190022468567,"z":"12fa1652.31064a","wires":[]},{"id":"473ab719.346838","type":"comment","name":"copy matching subnet","info":"","comments":"","x":2646.928466796875,"y":2036.3566846847534,"z":"12fa1652.31064a","wires":[]},{"id":"c90b05e8.00a658","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2270.428581237793,"y":2136.18999004364,"z":"12fa1652.31064a","wires":[["c816157a.9f7e68","115868de.991a07"]]},{"id":"5bc32471.aadd3c","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-preload-x.log' />\n","comments":"","outputs":1,"x":338.42858123779297,"y":1373.6899900436401,"z":"12fa1652.31064a","wires":[[]]},{"id":"d753f57b.2e1858","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-preloadxxx.log' />\n","comments":"","outputs":1,"x":3420.714168548584,"y":2128.927816390991,"z":"12fa1652.31064a","wires":[[]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-assign.json
new file mode 100755
index 0000000..ee58a70
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-assign.json
@@ -0,0 +1,7275 @@
+[

+    {

+        "id": "b9191fa3.7ca61",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 137.51302337646484,

+        "y": 56.26301097869873,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "dd8ef904.2a0718"

+            ]

+        ]

+    },

+    {

+        "id": "dd8ef904.2a0718",

+        "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='1-4-2-20181108R1'>",

+        "outputs": 1,

+        "x": 251.37015914916992,

+        "y": 96.07254886627197,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "79e996c5.93c4a8"

+            ]

+        ]

+    },

+    {

+        "id": "79e996c5.93c4a8",

+        "type": "method",

+        "name": "method vf-module-topology-operation-assign",

+        "xml": "<method rpc='vf-module-topology-operation-assign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 250.941650390625,

+        "y": 136.26301097869873,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "fb67aa4b.8284f8"

+            ]

+        ]

+    },

+    {

+        "id": "f89d4b47.20f5c8",

+        "type": "comment",

+        "name": "vf-module-topology-operation-assign",

+        "info": "",

+        "comments": "",

+        "x": 561.584114074707,

+        "y": 31.738715171813965,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "5d7e2c45.4ebe34",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 542.7035446166992,

+        "y": 409.28680896759033,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "d3c6b720.c14d58",

+                "9bb35c39.b1fef"

+            ]

+        ]

+    },

+    {

+        "id": "d3c6b720.c14d58",

+        "type": "outcome",

+        "name": "CreateVfModuleInstance",

+        "xml": "<outcome value='CreateVfModuleInstance'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 813.5011825561523,

+        "y": 377.67968463897705,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "a73a78b9.a830b8"

+            ]

+        ]

+    },

+    {

+        "id": "9bb35c39.b1fef",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 748.4178047180176,

+        "y": 441.8106880187988,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "3e5eb577.046eda"

+            ]

+        ]

+    },

+    {

+        "id": "a73a78b9.a830b8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1003.3583469390869,

+        "y": 377.6797161102295,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "48e25fc2.52f7",

+        "type": "get-resource",

+        "name": "get-resource VF_MODULE_MODEL",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODULE_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'\n  pfx='db.vf-module-model'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 590.0368118286133,

+        "y": 510.429762840271,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "c0e16531.bf13d8",

+                "3ed7b745.5102d8"

+            ]

+        ]

+    },

+    {

+        "id": "c0e16531.bf13d8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 855.8225021362305,

+        "y": 490.8105936050415,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "2172bacb.fd1c86"

+            ]

+        ]

+    },

+    {

+        "id": "3ed7b745.5102d8",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 864.3939323425293,

+        "y": 535.0963068008423,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "c639de59.ae251"

+            ]

+        ]

+    },

+    {

+        "id": "9d5245b6.abb4e8",

+        "type": "switchNode",

+        "name": "switch service-data.vnfs.vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 583.8820648193359,

+        "y": 687.7511224746704,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "128f7183.82d7ae",

+                "6a25eddf.15bb44"

+            ]

+        ]

+    },

+    {

+        "id": "128f7183.82d7ae",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 824.5963363647461,

+        "y": 663.8938627243042,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "dbfaf511.5478b8"

+            ]

+        ]

+    },

+    {

+        "id": "6a25eddf.15bb44",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 824.3581771850586,

+        "y": 705.846381187439,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "7ef59497.ea72ec"

+            ]

+        ]

+    },

+    {

+        "id": "94a28d82.4f01d",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 182.45345306396484,

+        "y": 3125.668021798134,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1c68463e.c02a4a",

+                "135adbdd.c9ef24",

+                "86ef2c44.55f05",

+                "e4caf1eb.a8b9f",

+                "7c9996aa.a5c0f8",

+                "e1558384.bfa8e",

+                "b08a4dbf.cf985",

+                "f888462e.a53c78",

+                "7293e3b2.a19a7c",

+                "2a3992a0.134e1e",

+                "2162f1f4.5f96fe",

+                "ff74ebeb.c5ffd8",

+                "489025cd.dbd3ac",

+                "59bf9724.469638",

+                "474227b8.b83ae8",

+                "1d003263.e8205e",

+                "75a8181a.0cae18",

+                "35a859e5.3e7c46",

+                "24109bc2.4c9eb4",

+                "c7aef34d.6997b",

+                "7ffbcb4d.5fb274",

+                "779079fc.7d1618",

+                "494a4418.4600ec",

+                "88b43b76.6a75d8",

+                "bb67c127.33c7c",

+                "67fa2696.640ed8",

+                "fcaf9b9.f1d4568",

+                "9926c7ad.248aa8",

+                "7b6a70b.67d389",

+                "d9542f83.7d0bb",

+                "e283e90a.9eb6c8",

+                "5d70e5cf.fff80c",

+                "f60c437.45996c",

+                "fc541e57.efb67",

+                "b631b958.11eb48",

+                "e5d7fa3.8c00708",

+                "62da7e05.4b2de"

+            ]

+        ]

+    },

+    {

+        "id": "7ef59497.ea72ec",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 986.596321105957,

+        "y": 705.5129995346069,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "988df689.061cb8"

+            ]

+        ]

+    },

+    {

+        "id": "988df689.061cb8",

+        "type": "switchNode",

+        "name": "switch service data vnf == input vnf",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1237.9296188354492,

+        "y": 705.1797275543213,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "c657ad4a.55c47"

+            ]

+        ]

+    },

+    {

+        "id": "c657ad4a.55c47",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1467.929630279541,

+        "y": 704.5130405426025,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "ae39954d.b28168"

+            ]

+        ]

+    },

+    {

+        "id": "9974cb16.902fe8",

+        "type": "set",

+        "name": "set vnf-index to -1",

+        "xml": "<set>\n<parameter name='vnf-index' value='-1' />\n",

+        "comments": "",

+        "x": 532.9296875,

+        "y": 619.1796216964722,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "57723ef9.ea31c",

+        "type": "set",

+        "name": "set vnf-index to idx",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1789.5962677001953,

+        "y": 675.5129985809326,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "540a131f.3d7bec",

+        "type": "switchNode",

+        "name": "switch vnf-index",

+        "xml": "<switch test='`$vnf-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 521.6797103881836,

+        "y": 771.3463115692139,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "ca6ccba1.61a798"

+            ]

+        ]

+    },

+    {

+        "id": "ca6ccba1.61a798",

+        "type": "outcome",

+        "name": "-1",

+        "xml": "<outcome value='-1'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 700.0130958557129,

+        "y": 770.6796875,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "792ace51.b15ed"

+            ]

+        ]

+    },

+    {

+        "id": "1c68463e.c02a4a",

+        "type": "switchNode",

+        "name": "switch vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 559.5964088439941,

+        "y": 1342.0965156555176,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "7203a6bd.008058",

+                "1ce0b519.1ca75b"

+            ]

+        ]

+    },

+    {

+        "id": "7203a6bd.008058",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 816.9773635864258,

+        "y": 1309.2392892837524,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1d2df677.49743a"

+            ]

+        ]

+    },

+    {

+        "id": "1d2df677.49743a",

+        "type": "set",

+        "name": "set vf-module-index=0",

+        "xml": "<set>\n<parameter name='vf-module-index' value='0' />\n",

+        "comments": "",

+        "x": 1004.5964012145996,

+        "y": 1309.9060640335083,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "1ce0b519.1ca75b",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 817.4059066772461,

+        "y": 1373.5251474380493,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "7b5c967b.5645e8"

+            ]

+        ]

+    },

+    {

+        "id": "3d0e8775.38d2b8",

+        "type": "set",

+        "name": "set vf-module-index = vf-module_length",

+        "xml": "<set>\n<parameter name='vf-module-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n",

+        "comments": "",

+        "x": 1202.5964469909668,

+        "y": 1353.715542793274,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "f4745546.3c76c8",

+        "type": "for",

+        "name": "for each existing VF module",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1161.6915397644043,

+        "y": 1397.810772895813,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "38be826c.5042de"

+            ]

+        ]

+    },

+    {

+        "id": "7b5c967b.5645e8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 954.1201858520508,

+        "y": 1373.5250730514526,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "3d0e8775.38d2b8",

+                "f4745546.3c76c8"

+            ]

+        ]

+    },

+    {

+        "id": "38be826c.5042de",

+        "type": "switchNode",

+        "name": "switch vf-module-information.vf-module-id == service-data.vnfs.vnf[].vf-modules.vf-module[].vf-module-id",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-information.vf-module-id == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1665.3106422424316,

+        "y": 1397.3821840286255,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "5b65413c.247c9"

+            ]

+        ]

+    },

+    {

+        "id": "5b65413c.247c9",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2107.9296913146973,

+        "y": 1396.9536352157593,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "cdf91b0.174e5e8"

+            ]

+        ]

+    },

+    {

+        "id": "2eae9b0c.edb3d4",

+        "type": "comment",

+        "name": "make sure this VF module doesn't exist already",

+        "info": "",

+        "comments": "",

+        "x": 1691.7629890441895,

+        "y": 1352.0096759796143,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "135adbdd.c9ef24",

+        "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-module-index + 1`' />\n",

+        "comments": "",

+        "x": 570.2629890441895,

+        "y": 1453.0963706970215,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "86ef2c44.55f05",

+        "type": "set",

+        "name": "set vf-module-topology data",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-name' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-name`' />\n<parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-type' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-type`' />\n<parameter name='tmp.vf-module-topology.tenant' value='`$vf-module-topology-operation-input.vf-module-request-input.tenant`' />\n<parameter name='tmp.vf-module-topology.aic-cloud-region' value='`$vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`' />\n",

+        "comments": "",

+        "x": 576.7630081176758,

+        "y": 1565.596477508545,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "77cfe613.fc65c8",

+        "type": "set",

+        "name": "set aic-clli",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.aic-clli'\n   value='`$aai-uid-split[$aai-uid-split_length - 1]`' />\n",

+        "comments": "",

+        "x": 1337.7152671813965,

+        "y": 1724.8344039916992,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "e4caf1eb.a8b9f",

+        "type": "switchNode",

+        "name": "switch aic-clli",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.aic-clli`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 536.7629280090332,

+        "y": 1838.7867441177368,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "81ee85e4.dedbf8"

+            ]

+        ]

+    },

+    {

+        "id": "81ee85e4.dedbf8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 682.0486183166504,

+        "y": 1838.7868127822876,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "ec2aeced.650af"

+            ]

+        ]

+    },

+    {

+        "id": "7c9996aa.a5c0f8",

+        "type": "get-resource",

+        "name": "get-resource cloud region",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"cloud-region\" \n\t\tkey=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND \n\t\t     cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\"\n        pfx='aai.cloud-region' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 575.6201438903809,

+        "y": 1638.9300155639648,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "6f3a4d5a.8ebfd4",

+                "9660a46b.1c9ce8"

+            ]

+        ]

+    },

+    {

+        "id": "9660a46b.1c9ce8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 789.8663368225098,

+        "y": 1657.0808715820312,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "7adbe623.7575f8"

+            ]

+        ]

+    },

+    {

+        "id": "6f3a4d5a.8ebfd4",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 798.7949333190918,

+        "y": 1614.3666048049927,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "799eaa32.6fe824"

+            ]

+        ]

+    },

+    {

+        "id": "ae39954d.b28168",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1616.2630920410156,

+        "y": 703.4327392578125,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "57723ef9.ea31c",

+                "c07cd07d.0c75a"

+            ]

+        ]

+    },

+    {

+        "id": "c07cd07d.0c75a",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 1751.2630577087402,

+        "y": 725.0993251800537,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "952256ff.21f9a8",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.onap-model-information.model-invariant-uuid'\n  value='`$db.vf-module-model.invariant-uuid`' />\n",

+        "comments": "",

+        "x": 951.0962677001953,

+        "y": 1880.1827373504639,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "e1558384.bfa8e",

+        "type": "switchNode",

+        "name": "switch input model-invariant-uuid",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 594.9533424377441,

+        "y": 1903.0071811676025,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "cd2324fc.034808",

+                "38df22f.16dd4de"

+            ]

+        ]

+    },

+    {

+        "id": "cd2324fc.034808",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 800.6200141906738,

+        "y": 1880.1501445770264,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "952256ff.21f9a8"

+            ]

+        ]

+    },

+    {

+        "id": "38df22f.16dd4de",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 802.0486106872559,

+        "y": 1924.4357357025146,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "cb5b92dd.63cc2"

+            ]

+        ]

+    },

+    {

+        "id": "cb5b92dd.63cc2",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.onap-model-information.model-invariant-uuid'\n  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\n",

+        "comments": "",

+        "x": 956.3343467712402,

+        "y": 1923.8643078804016,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "9d20a066.9a052",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.onap-model-information.model-uuid'\n  value='`$db.vf-module-model.uuid`' />\n",

+        "comments": "",

+        "x": 952.0485382080078,

+        "y": 1968.7214136123657,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "b08a4dbf.cf985",

+        "type": "switchNode",

+        "name": "switch input model-uuid",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 567.5723609924316,

+        "y": 1991.5459184646606,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "c7ed7b53.7dd0f8",

+                "778bc2b7.d82bbc"

+            ]

+        ]

+    },

+    {

+        "id": "c7ed7b53.7dd0f8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 801.5723342895508,

+        "y": 1968.688850402832,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "9d20a066.9a052"

+            ]

+        ]

+    },

+    {

+        "id": "778bc2b7.d82bbc",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 803.0009307861328,

+        "y": 2012.9744415283203,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f7d52f4a.cdff6"

+            ]

+        ]

+    },

+    {

+        "id": "f7d52f4a.cdff6",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.onap-model-information.model-uuid'\n  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`' />\n",

+        "comments": "",

+        "x": 957.2866668701172,

+        "y": 2012.4030137062073,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "dac6c331.68c42",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.onap-model-information.model-version'\n  value='`$db.vf-module-model.version`' />\n",

+        "comments": "",

+        "x": 949.1914710998535,

+        "y": 2057.5786209106445,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "f888462e.a53c78",

+        "type": "switchNode",

+        "name": "switch input model-version",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 575.7152328491211,

+        "y": 2080.4030656814575,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "9c31df03.57fb6",

+                "9f5a3e1a.3ae01"

+            ]

+        ]

+    },

+    {

+        "id": "9c31df03.57fb6",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 798.715217590332,

+        "y": 2057.546028137207,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "dac6c331.68c42"

+            ]

+        ]

+    },

+    {

+        "id": "9f5a3e1a.3ae01",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 800.1438140869141,

+        "y": 2101.8316192626953,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "886a096e.cd9ed8"

+            ]

+        ]

+    },

+    {

+        "id": "886a096e.cd9ed8",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.onap-model-information.model-version'\n  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\n",

+        "comments": "",

+        "x": 954.4295501708984,

+        "y": 2101.2601914405823,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "f162ec13.2ea9e",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.onap-model-information.model-name'\n  value='`$db.vf-module-model.name`' />\n",

+        "comments": "",

+        "x": 949.1914710998535,

+        "y": 2144.7214431762695,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "7293e3b2.a19a7c",

+        "type": "switchNode",

+        "name": "switch input model-name",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 570.7152328491211,

+        "y": 2167.5458879470825,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "fec48afa.f578f8",

+                "84aba209.b7386"

+            ]

+        ]

+    },

+    {

+        "id": "fec48afa.f578f8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 798.715217590332,

+        "y": 2144.688850402832,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f162ec13.2ea9e"

+            ]

+        ]

+    },

+    {

+        "id": "84aba209.b7386",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 800.1438140869141,

+        "y": 2188.9744415283203,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "fef7c2e3.5fc15"

+            ]

+        ]

+    },

+    {

+        "id": "fef7c2e3.5fc15",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.onap-model-information.model-name'\n  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`' />\n",

+        "comments": "",

+        "x": 954.4295501708984,

+        "y": 2188.4030137062073,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "2a3992a0.134e1e",

+        "type": "set",

+        "name": "set model-customization-uuid",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.onap-model-information.model-customization-uuid'\n  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\n",

+        "comments": "",

+        "x": 585.1675682067871,

+        "y": 2240.054877281189,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "2162f1f4.5f96fe",

+        "type": "set",

+        "name": "set vf-module-id",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id'\n   value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n",

+        "comments": "",

+        "x": 538.3582153320312,

+        "y": 1508.7780532836914,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "ff74ebeb.c5ffd8",

+        "type": "for",

+        "name": "for each cloud-region relationship",

+        "xml": "<for index='idx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 597.8739585876465,

+        "y": 1727.4366989135742,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "6dfb70e4.99bce"

+            ]

+        ]

+    },

+    {

+        "id": "6dfb70e4.99bce",

+        "type": "switchNode",

+        "name": "switch related-to",

+        "xml": "<switch test='`$aai.cloud-region.relationship-list.relationship[$idx].related-to`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 845.5525016784668,

+        "y": 1727.1866283416748,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "8d3e1649.827698"

+            ]

+        ]

+    },

+    {

+        "id": "8d3e1649.827698",

+        "type": "outcome",

+        "name": "complex",

+        "xml": "<outcome value='complex'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1015.0168228149414,

+        "y": 1726.5794506072998,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "89cc33ca.87336"

+            ]

+        ]

+    },

+    {

+        "id": "f7308857.ab0638",

+        "type": "execute",

+        "name": "split related-link",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='aai-uid-split' />\n   <parameter name='original_string' value='`$aai.cloud-region.relationship-list.relationship[$idx].related-link`' />\n   <parameter name='regex' value='/' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1355.1119804382324,

+        "y": 1681.0080261230469,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "89cc33ca.87336",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1174.7786827087402,

+        "y": 1727.6748142242432,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f7308857.ab0638",

+                "f22bbebf.cf96a",

+                "77cfe613.fc65c8"

+            ]

+        ]

+    },

+    {

+        "id": "f22bbebf.cf96a",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 1324.7786445617676,

+        "y": 1771.008111000061,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "f4d050b1.8b4c3",

+        "type": "execute",

+        "name": "execute PropertiesNode",

+        "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": 556.5606460571289,

+        "y": 165.7868185043335,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "24109bc2.4c9eb4",

+        "type": "set",

+        "name": "set order-status to PendingCreate",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'\n  value='PendingCreate' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'\n  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-module-index].vf-module-data.vf-module-level-oper-status.last-action'\n  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\n",

+        "comments": "",

+        "x": 483.0253143310547,

+        "y": 7336.643301963806,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "c7aef34d.6997b",

+        "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": 426.5251693725586,

+        "y": 8101.690653324127,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "35a859e5.3e7c46",

+        "type": "set",

+        "name": "copy input data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.'\n   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-module-index].vf-module-data.request-information.'\n   value='$vf-module-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.'\n   value='$vf-module-topology-operation-input.service-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.'\n   value='$vf-module-topology-operation-input.vnf-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.'\n   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-module-index].vf-module-data.vf-module-request-input.'\n   value='$vf-module-topology-operation-input.vf-module-request-input.' />\n\n",

+        "comments": "",

+        "x": 415.1322555541992,

+        "y": 7192.992034912109,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "75a8181a.0cae18",

+        "type": "set",

+        "name": "copy vf-module-topology data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.' value='tmp.vf-module-topology.' />\n",

+        "comments": "",

+        "x": 470.0132751464844,

+        "y": 7139.776969909668,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "59bf9724.469638",

+        "type": "save",

+        "name": "update vf-module",

+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"vf-module\"\n   key=\"vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id\n      AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"vf-module-name\" value=\"`$tmp.vf-module-topology.vf-module-topology-identifier.vf-module-name`\" />\n<parameter name=\"model-invariant-id\" value=\"`$tmp.vf-module-topology.onap-model-information.model-invariant-uuid`\" />\n<parameter name=\"model-version-id\" value=\"`$tmp.vf-module-topology.onap-model-information.model-uuid`\" />\n<parameter name=\"model-customization-id\" value=\"`$tmp.vf-module-topology.onap-model-information.model-customization-uuid`\" />\n<parameter name=\"selflink\" value=\"`$vf-module-object-path`\" />\n<parameter name=\"automated-assignment\" value=\"`$automated-assignment`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 500.4059944152832,

+        "y": 4346.778634667397,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "d74196bc.6b97c8",

+                "6e6f18d0.9bdfe8"

+            ]

+        ]

+    },

+    {

+        "id": "d74196bc.6b97c8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 675.4776344299316,

+        "y": 4315.159256577492,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "7f9d44fc.3db7bc"

+            ]

+        ]

+    },

+    {

+        "id": "6e6f18d0.9bdfe8",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 684.0490074157715,

+        "y": 4383.778346598148,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "94bb0c2d.81fb6"

+            ]

+        ]

+    },

+    {

+        "id": "489025cd.dbd3ac",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-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/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": 524.0728034973145,

+        "y": 4222.302863717079,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "fb74751e.022f18",

+        "type": "save",

+        "name": "save vf-module relationships",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"vf-module:relationship-list\"\n   key=\"vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id\n      AND 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=\"l3-network\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/l3-networks/l3-network/' +\n        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1294.096549987793,

+        "y": 5904.931029081345,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "6418f89e.efde28",

+                "3c5f7fe1.c5c95"

+            ]

+        ]

+    },

+    {

+        "id": "6418f89e.efde28",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1513.9298934936523,

+        "y": 5875.802773237228,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "b4477865.f6c3d8"

+            ]

+        ]

+    },

+    {

+        "id": "3c5f7fe1.c5c95",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1522.5014266967773,

+        "y": 5928.421917676926,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "a8844fc9.d802f"

+            ]

+        ]

+    },

+    {

+        "id": "474227b8.b83ae8",

+        "type": "for",

+        "name": "for each vm-type",

+        "xml": "<for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 473.7632751464844,

+        "y": 5670.264581918716,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "3890cbf7.238894"

+            ]

+        ]

+    },

+    {

+        "id": "28b6a2fd.61312e",

+        "type": "for",

+        "name": "for each vm-network",

+        "xml": "<for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 870.7632865905762,

+        "y": 6088.93141412735,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "4bd4ba04.8daa14"

+            ]

+        ]

+    },

+    {

+        "id": "1d003263.e8205e",

+        "type": "for",

+        "name": "for each vm-type",

+        "xml": "<for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 419.4418182373047,

+        "y": 7034.810600280762,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "c9fac662.7812b8"

+            ]

+        ]

+    },

+    {

+        "id": "c9fac662.7812b8",

+        "type": "for",

+        "name": "for each vm",

+        "xml": "<for index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 614.4418487548828,

+        "y": 7034.143608093262,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "207acffa.3abd1"

+            ]

+        ]

+    },

+    {

+        "id": "138fc2c6.5fd4fd",

+        "type": "save",

+        "name": "save VIPR_CONFIGURATION",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\nkey=\"INSERT INTO VIPR_CONFIGURATION (vnf_id, vnf_name, ecomp_service_instance_id, vm_name, cloud_region_id, cloud_owner) VALUES ( $service-data.vnfs.vnf[$vnf-index].vnf-id , $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name , $service-data.service-information.service-instance-id , $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index] , $tmp.vf-module-topology.aic-cloud-region , $prop.cloud-region.cloud-owner )\" >",

+        "comments": "",

+        "outputs": 1,

+        "x": 1034.858543395996,

+        "y": 7059.311295449734,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "ad9e155d.1028f8"

+            ]

+        ]

+    },

+    {

+        "id": "71743690.584d78",

+        "type": "comment",

+        "name": "Not a failure",

+        "info": "",

+        "comments": "",

+        "x": 1554.8584442138672,

+        "y": 7059.311300218105,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "ad9e155d.1028f8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1244.858528137207,

+        "y": 7059.311445176601,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "2b130462.23f28c"

+            ]

+        ]

+    },

+    {

+        "id": "2b130462.23f28c",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID\"/>\n<parameter name=\"field3\" value=\"`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Failed to insert VIPR_CONFIGURATION record\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1388.1919708251953,

+        "y": 7059.311283051968,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "da21eac5.eb6e48",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1418.1920928955078,

+        "y": 7010.64299672842,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "4475a7ad.750578"

+            ]

+        ]

+    },

+    {

+        "id": "248ddcf1.40e1a4",

+        "type": "comment",

+        "name": "Not a failure",

+        "info": "",

+        "comments": "",

+        "x": 1741.525146484375,

+        "y": 7008.9768189787865,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "4475a7ad.750578",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID\"/>\n<parameter name=\"field3\" value=\"`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Failed to insert VIPR_CONFIGURATION record\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1564.1920280456543,

+        "y": 7010.643629968166,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "207acffa.3abd1",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 782.7752418518066,

+        "y": 7033.143452644348,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "23b5f46a.84a14c",

+                "138fc2c6.5fd4fd"

+            ]

+        ]

+    },

+    {

+        "id": "23b5f46a.84a14c",

+        "type": "delete",

+        "name": "delete any pre-existing records in VIPR_CONFIGURATION",

+        "xml": "<delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='DELETE from VIPR_CONFIGURATION WHERE vnf_id = $service-data.vnfs.vnf[$vnf-index].vnf-id\n     AND ecomp_service_instance_id = $service-data.service-information.service-instance-id\n     AND vm_name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 1124.8585586547852,

+        "y": 7010.977629601955,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "da21eac5.eb6e48"

+            ]

+        ]

+    },

+    {

+        "id": "7f9d44fc.3db7bc",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 833.7632026672363,

+        "y": 4314.9299274683,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "18d43b0c.816ff5",

+                "1254304a.7d8a4"

+            ]

+        ]

+    },

+    {

+        "id": "94bb0c2d.81fb6",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 834.7631187438965,

+        "y": 4381.596217691898,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "d3b91e2a.6658a"

+            ]

+        ]

+    },

+    {

+        "id": "b4477865.f6c3d8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1682.4298973083496,

+        "y": 5875.597042798996,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "a1d9fe5d.0f695",

+                "fc515f97.dc4ef"

+            ]

+        ]

+    },

+    {

+        "id": "a8844fc9.d802f",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1677.4298973083496,

+        "y": 5928.596885442734,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "e64793d7.bf627",

+                "fc515f97.dc4ef"

+            ]

+        ]

+    },

+    {

+        "id": "755e8713.bcc1c8",

+        "type": "execute",

+        "name": "execute RestApiCallNode - get preload-list",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value=\"`$prop.controller.url + $prop.restapi.preloadinformation + $vf-module-topology-operation-input.vf-module-request-input.vf-module-name + '/vf-module'`\" />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-preload\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1043.3463745117188,

+        "y": 2452.429780960083,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "68e62acd.729e34",

+                "a47c9360.b9478"

+            ]

+        ]

+    },

+    {

+        "id": "68e62acd.729e34",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1311.6796073913574,

+        "y": 2410.763111114502,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "7b583f75.7c5be"

+            ]

+        ]

+    },

+    {

+        "id": "a47c9360.b9478",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1310.0129623413086,

+        "y": 2485.7632598876953,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "acc728a8.eedfa8"

+            ]

+        ]

+    },

+    {

+        "id": "7b583f75.7c5be",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1468.346363067627,

+        "y": 2409.0965490341187,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "cec2f13d.67a37"

+            ]

+        ]

+    },

+    {

+        "id": "acc728a8.eedfa8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1465.0129699707031,

+        "y": 2485.763101577759,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "3983f41d.db452c"

+            ]

+        ]

+    },

+    {

+        "id": "cec2f13d.67a37",

+        "type": "switchNode",

+        "name": "switch mdsal-preload.response-code",

+        "xml": "<switch test='`$mdsal-preload.response-code`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1696.6796646118164,

+        "y": 2409.0965900421143,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "e8950979.22bb18",

+                "b6c25b1e.892808"

+            ]

+        ]

+    },

+    {

+        "id": "e8950979.22bb18",

+        "type": "outcome",

+        "name": "404 (not found)",

+        "xml": "<outcome value='404'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1979.5963668823242,

+        "y": 2363.6796340942383,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1c4c53fe.44b0dc"

+            ]

+        ]

+    },

+    {

+        "id": "1c4c53fe.44b0dc",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-assign-no-preload",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-no-preload' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2382.512939453125,

+        "y": 2277.013102531433,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "cc34b72d.383738"

+            ]

+        ]

+    },

+    {

+        "id": "cc34b72d.383738",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2771.2629013061523,

+        "y": 2277.846981048584,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "c1b24090.d49b8"

+            ]

+        ]

+    },

+    {

+        "id": "b6c25b1e.892808",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1945.8463287353516,

+        "y": 2427.8464183807373,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "d759206d.14388"

+            ]

+        ]

+    },

+    {

+        "id": "3983f41d.db452c",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-assign-preload",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-preload' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1828.3462600708008,

+        "y": 2487.429849624634,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "90d09a92.2d1cc8"

+            ]

+        ]

+    },

+    {

+        "id": "90d09a92.2d1cc8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2184.0131225585938,

+        "y": 2485.7634677886963,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "76721fa9.6f7a7"

+            ]

+        ]

+    },

+    {

+        "id": "3890cbf7.238894",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 664.2633438110352,

+        "y": 5671.097816705704,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "28b6a2fd.61312e",

+                "eeca3ef7.08f31"

+            ]

+        ]

+    },

+    {

+        "id": "eeca3ef7.08f31",

+        "type": "for",

+        "name": "for each vnfc",

+        "xml": "<for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 915.2633934020996,

+        "y": 4875.763907909393,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "59778d60.c86b24"

+            ]

+        ]

+    },

+    {

+        "id": "9b23e63c.8ba5d8",

+        "type": "save",

+        "name": "save vnfc to A&AI",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vnfc\" \n\tkey=\"vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\" >\n<parameter name=\"vnfc-name\" value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`\" />\n<parameter name=\"nfc-naming-code\" value=\"`$tmp.nfc-naming-code`\" />\n<parameter name=\"nfc-function\" value=\"`$tmp.nfc-function`\" />\n<parameter name=\"model-invariant-id\" value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid`\" />\n<parameter name=\"model-version-id\" value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].uuid`\" />\n<parameter name=\"model-customization-id\" value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].model-customization-uuid`\" />\n<parameter name=\"orchestration-status\" value=\"`PendingCreate`\" />\n<parameter name=\"in-maint\" value=\"true\" />\n<parameter name=\"prov-status\" value=\"`PREPROV`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1641.2634620666504,

+        "y": 4684.097838401794,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "8c17d99f.3ce5f8",

+                "b50cee13.b9a08"

+            ]

+        ]

+    },

+    {

+        "id": "59778d60.c86b24",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1083.596694946289,

+        "y": 4876.430735111237,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "2ee1ddb7.3ce5a2",

+                "63a7631.9e7f99c",

+                "e77ee371.ca79f",

+                "a45139cd.c06788",

+                "d5639dcc.50d87",

+                "3291e6ae.85f8ba"

+            ]

+        ]

+    },

+    {

+        "id": "8c17d99f.3ce5f8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1832.263500213623,

+        "y": 4636.431172370911,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "fc84df82.5bc09"

+            ]

+        ]

+    },

+    {

+        "id": "fc84df82.5bc09",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1997.4301872253418,

+        "y": 4650.5590056777,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "30bee8c0.434ad8",

+                "1254304a.7d8a4"

+            ]

+        ]

+    },

+    {

+        "id": "e77ee371.ca79f",

+        "type": "save",

+        "name": "save vnfc relationships",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"vnfc:relationship-list\"\n   key=\"vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"generic-vnf\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/generic-vnfs/generic-vnf/' +\n        $vf-module-topology-operation-input.vnf-information.vnf-id`\" />\n    <parameter name=\"relationship-list.relationship[1].related-to\" value=\"vf-module\" />\n    <parameter name=\"relationship-list.relationship[1].related-link\"\n      value=\"`'/aai/v$/network/generic-vnfs/generic-vnf/' +\n        $vf-module-topology-operation-input.vnf-information.vnf-id +\n        '/vf-modules/vf-module/' +\n        $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1308.1679801940918,

+        "y": 4784.717070102692,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "b41f1fa4.6a16e",

+                "c5bf9d82.77072"

+            ]

+        ]

+    },

+    {

+        "id": "36f8149b.0100dc",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1640.0011711120605,

+        "y": 4758.034694194794,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "17b97fa6.0b332",

+                "1254304a.7d8a4"

+            ]

+        ]

+    },

+    {

+        "id": "138ca4b2.cb534b",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1640.0012474060059,

+        "y": 4811.034452915192,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "43b53fc.f18d2c",

+                "1254304a.7d8a4"

+            ]

+        ]

+    },

+    {

+        "id": "b41f1fa4.6a16e",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1483.168056488037,

+        "y": 4758.050364017487,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "36f8149b.0100dc"

+            ]

+        ]

+    },

+    {

+        "id": "c5bf9d82.77072",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1491.739589691162,

+        "y": 4810.669508457184,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "138ca4b2.cb534b"

+            ]

+        ]

+    },

+    {

+        "id": "2ee1ddb7.3ce5a2",

+        "type": "for",

+        "name": "for each vnfc-network-role",

+        "xml": "<for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1305.644100189209,

+        "y": 5201.573478221893,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "52bb6b86.aae8d4"

+            ]

+        ]

+    },

+    {

+        "id": "7ffbcb4d.5fb274",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-vfmoduleb.log' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 526.2630043029785,

+        "y": 2509.4773001670837,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3ff39820.94ba88",

+        "type": "for",

+        "name": "for each vnfc-subnetwork-role",

+        "xml": "<for silentFailure='true' index='subnet-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1761.59663772583,

+        "y": 5164.763911724091,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "bae62f0f.f599"

+            ]

+        ]

+    },

+    {

+        "id": "bae62f0f.f599",

+        "type": "for",

+        "name": "for each vnfc-address-family",

+        "xml": "<for silentFailure='true' index='address-family-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2028.9299812316895,

+        "y": 5163.764400005341,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "83b71d8.34202e"

+            ]

+        ]

+    },

+    {

+        "id": "9893ef44.5c929",

+        "type": "for",

+        "name": "for each vnfc-ip-address",

+        "xml": "<for silentFailure='true' index='address-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2460.9295921325684,

+        "y": 5230.430099487305,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "4955053a.cc8cec"

+            ]

+        ]

+    },

+    {

+        "id": "83b71d8.34202e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2239.9297523498535,

+        "y": 5163.76385641098,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "bd1ac39a.c86f3",

+                "9893ef44.5c929"

+            ]

+        ]

+    },

+    {

+        "id": "bd1ac39a.c86f3",

+        "type": "set",

+        "name": "set tmp.address-family",

+        "xml": "<set>\n<parameter name='tmp.address-family'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family`' />\n",

+        "comments": "",

+        "x": 2459.9300804138184,

+        "y": 5083.763753890991,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "4955053a.cc8cec",

+        "type": "switchNode",

+        "name": "switch address family",

+        "xml": "<switch test='`$tmp.address-family`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2699.9296836853027,

+        "y": 5228.763921737671,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "df6d826a.602a2",

+                "b4544053.188e9"

+            ]

+        ]

+    },

+    {

+        "id": "df6d826a.602a2",

+        "type": "outcome",

+        "name": "ipv4",

+        "xml": "<outcome value='ipv4'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2897.0726890563965,

+        "y": 5132.335182189941,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "78841d68.5129e4"

+            ]

+        ]

+    },

+    {

+        "id": "b4544053.188e9",

+        "type": "outcome",

+        "name": "ipv6",

+        "xml": "<outcome value='ipv6'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2894.6917610168457,

+        "y": 5312.097213745117,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "133e1aca.140a05"

+            ]

+        ]

+    },

+    {

+        "id": "82d4dce2.8069",

+        "type": "comment",

+        "name": "Fixed IPs",

+        "info": "",

+        "comments": "",

+        "x": 1778.5966529846191,

+        "y": 5126.431288719177,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "ae224e40.c6874",

+        "type": "save",

+        "name": "save l3-interface-ipv4-address-list object to A&AI",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-interface-ipv4-address-list\" \n\tkey=\"vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\n\t  AND cp.cp-instance-id = $cp-instance-id\n\t  AND l3-interface-ipv4-address-list.l3-interface-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address\" >\n<parameter name=\"l3-interface-ipv4-address\" value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address`\" />\n<parameter name=\"l3-interface-ipv4-prefix-length\" value=\"32\" />\n<parameter name=\"is-floating\" value=\"false\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3340.405818939209,

+        "y": 5080.668262163799,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "929637d6.457068"

+            ]

+        ]

+    },

+    {

+        "id": "78841d68.5129e4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3047.0726890563965,

+        "y": 5132.335100809734,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "ae224e40.c6874",

+                "8bea43e3.8116"

+            ]

+        ]

+    },

+    {

+        "id": "36922023.99beb",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3753.905693054199,

+        "y": 5080.65275446574,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "cc682bd5.2eb5c8",

+                "11d81f8a.7859d"

+            ]

+        ]

+    },

+    {

+        "id": "929637d6.457068",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3597.072578430176,

+        "y": 5080.668424288433,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "36922023.99beb"

+            ]

+        ]

+    },

+    {

+        "id": "8bea43e3.8116",

+        "type": "save",

+        "name": "save l3-interface-ipv4-address-list relationships",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"l3-interface-ipv4-address-list:relationship-list\"\n   key=\"vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\n\t  AND cp.cp-instance-id = $cp-instance-id\n\t  AND l3-interface-ipv4-address-list.l3-interface-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/l3-networks/l3-network/' +\n        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id`\" />\n    <parameter name=\"relationship-list.relationship[1].related-to\" value=\"subnet\" />\n    <parameter name=\"relationship-list.relationship[1].related-link\"\n      value=\"`'/aai/v$/network/l3-networks/l3-network/' +\n        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id +\n        '/subnets/subnet/' +\n        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3335.406063079834,

+        "y": 5179.00168100993,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "2e1bef20.bf0fd",

+                "5d3ca55b.b0a96c"

+            ]

+        ]

+    },

+    {

+        "id": "aa9b6876.841938",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3755.5723152160645,

+        "y": 5150.652725855511,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1499e507.42f6db",

+                "11d81f8a.7859d"

+            ]

+        ]

+    },

+    {

+        "id": "670834a7.3d263c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3755.5723915100098,

+        "y": 5203.652484575909,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "dac8db15.74e098",

+                "11d81f8a.7859d"

+            ]

+        ]

+    },

+    {

+        "id": "2e1bef20.bf0fd",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3598.739200592041,

+        "y": 5150.6683956782035,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "aa9b6876.841938"

+            ]

+        ]

+    },

+    {

+        "id": "5d3ca55b.b0a96c",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3607.310733795166,

+        "y": 5203.287540117901,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "670834a7.3d263c"

+            ]

+        ]

+    },

+    {

+        "id": "f5cbef76.ec89e",

+        "type": "save",

+        "name": "save l3-interface-ipv6-address-list object to A&AI",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-interface-ipv6-address-list\" \n\tkey=\"vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\n\t  AND cp.cp-instance-id = $cp-instance-id\n\t  AND l3-interface-ipv6-address-list.l3-interface-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address\" >\n<parameter name=\"l3-interface-ipv6-address\" value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address`\" />\n<parameter name=\"l3-interface-ipv6-prefix-length\" value=\"128\" />\n<parameter name=\"is-floating\" value=\"false\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3339.2155570983887,

+        "y": 5259.716318130493,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f2553d5e.abe0f"

+            ]

+        ]

+    },

+    {

+        "id": "133e1aca.140a05",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3045.882427215576,

+        "y": 5311.383156776428,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f5cbef76.ec89e",

+                "81cd3242.fe0b"

+            ]

+        ]

+    },

+    {

+        "id": "51b65599.0e89cc",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3752.715431213379,

+        "y": 5259.700810432434,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "97323f99.6212d",

+                "11d81f8a.7859d"

+            ]

+        ]

+    },

+    {

+        "id": "f2553d5e.abe0f",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3595.8823165893555,

+        "y": 5259.716480255127,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "51b65599.0e89cc"

+            ]

+        ]

+    },

+    {

+        "id": "81cd3242.fe0b",

+        "type": "save",

+        "name": "save l3-interface-ipv6-address-list relationships",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"l3-interface-ipv6-address-list:relationship-list\"\n   key=\"vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\n\t  AND cp.cp-instance-id = $cp-instance-id\n\t  AND l3-interface-ipv6-address-list.l3-interface-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/l3-networks/l3-network/' +\n        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id`\" />\n    <parameter name=\"relationship-list.relationship[1].related-to\" value=\"subnet\" />\n    <parameter name=\"relationship-list.relationship[1].related-link\"\n      value=\"`'/aai/v$/network/l3-networks/l3-network/' +\n        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id +\n        '/subnets/subnet/' +\n        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3334.2158012390137,

+        "y": 5358.0497369766235,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "cd0e04b7.a88538",

+                "2202ffa2.d2838"

+            ]

+        ]

+    },

+    {

+        "id": "973eecbd.3a12f",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3754.382053375244,

+        "y": 5329.700781822205,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "2f312957.2b15e6",

+                "11d81f8a.7859d"

+            ]

+        ]

+    },

+    {

+        "id": "41ca4b49.e89434",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3754.3821296691895,

+        "y": 5382.7005405426025,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "9f878bec.0f8958",

+                "11d81f8a.7859d"

+            ]

+        ]

+    },

+    {

+        "id": "cd0e04b7.a88538",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3597.5489387512207,

+        "y": 5329.7164516448975,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "973eecbd.3a12f"

+            ]

+        ]

+    },

+    {

+        "id": "2202ffa2.d2838",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3606.1204719543457,

+        "y": 5382.335596084595,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "41ca4b49.e89434"

+            ]

+        ]

+    },

+    {

+        "id": "4bd4ba04.8daa14",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1060.596607208252,

+        "y": 6088.430853366852,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "39f74881.371fb8",

+                "fb74751e.022f18",

+                "12eb0afe.678335",

+                "43f00c8e.4c60b4"

+            ]

+        ]

+    },

+    {

+        "id": "d2a87a71.553fc8",

+        "type": "for",

+        "name": "for each vnfc",

+        "xml": "<for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1708.5967826843262,

+        "y": 6210.764601230621,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "316d52f.75519ae"

+            ]

+        ]

+    },

+    {

+        "id": "9dd5477e.b61ec8",

+        "type": "save",

+        "name": "save vip-ipv4-address-list object to A&AI",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vip-ipv4-address-list\" \n\tkey=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\n\t  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\n\t  AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]\" >\n<parameter name=\"vip-ipv4-address\" value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]`\" />\n<parameter name=\"vip-ipv4-prefix-length\" value=\"32\" />\n<parameter name=\"is-floating\" value=\"false\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1791.59663772583,

+        "y": 6042.097612857819,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "5a0f98fa.d60308",

+                "17b6d486.2926eb"

+            ]

+        ]

+    },

+    {

+        "id": "12eb0afe.678335",

+        "type": "for",

+        "name": "for each floating ipv4 address",

+        "xml": "<for silentFailure='true' index='ipv4-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1299.5966300964355,

+        "y": 6100.097685337067,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "686b5e11.422ff"

+            ]

+        ]

+    },

+    {

+        "id": "686b5e11.422ff",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1525.5966300964355,

+        "y": 6098.097685337067,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "9dd5477e.b61ec8",

+                "9094ce2c.0f237",

+                "d2a87a71.553fc8"

+            ]

+        ]

+    },

+    {

+        "id": "aefdf6d5.094438",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2187.096508026123,

+        "y": 6012.08198595047,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "d7673076.3ac06",

+                "fc515f97.dc4ef"

+            ]

+        ]

+    },

+    {

+        "id": "8aa6fe69.46205",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2187.0965843200684,

+        "y": 6065.081744670868,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "34a07ec7.5c1d72",

+                "fc515f97.dc4ef"

+            ]

+        ]

+    },

+    {

+        "id": "5a0f98fa.d60308",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2030.2633934020996,

+        "y": 6012.097655773163,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "aefdf6d5.094438"

+            ]

+        ]

+    },

+    {

+        "id": "17b6d486.2926eb",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2038.8349266052246,

+        "y": 6064.71680021286,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "8aa6fe69.46205"

+            ]

+        ]

+    },

+    {

+        "id": "c0647bff.dcfb98",

+        "type": "save",

+        "name": "save vip-ipv4-address-list relationships",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"vip-ipv4-address-list:relationship-list\"\n   key=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\n\t  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\n\t  AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"subnet\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/l3-networks/l3-network/'\n        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-id\n        + '/subnets/subnet/'\n        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.ipv4-subnet-id`\" />\n    <parameter name=\"relationship-list.relationship[1].related-to\" value=\"vnfc\" />\n    <parameter name=\"relationship-list.relationship[1].related-link\"\n      value=\"`'/aai/v$/network/vnfcs/vnfc/'\n        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2127.2632331848145,

+        "y": 6154.764276027679,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f0cfd83.86b5328",

+                "f315ed94.7bfc9"

+            ]

+        ]

+    },

+    {

+        "id": "fd3e62f.a29bea",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2530.429512023926,

+        "y": 6126.748618662357,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "38cb90b2.4e39c",

+                "fc515f97.dc4ef"

+            ]

+        ]

+    },

+    {

+        "id": "5997fd18.c16ad4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2530.429588317871,

+        "y": 6179.748377382755,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "8d6accf1.493c8",

+                "fc515f97.dc4ef"

+            ]

+        ]

+    },

+    {

+        "id": "f0cfd83.86b5328",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2373.5963973999023,

+        "y": 6126.76428848505,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "fd3e62f.a29bea"

+            ]

+        ]

+    },

+    {

+        "id": "f315ed94.7bfc9",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2382.1679306030273,

+        "y": 6179.3834329247475,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "5997fd18.c16ad4"

+            ]

+        ]

+    },

+    {

+        "id": "783e4357.c986ec",

+        "type": "save",

+        "name": "save vip-ipv6-address-list object to A&AI",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vip-ipv6-address-list\" \n\tkey=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\n\t  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\n\t  AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]\" >\n<parameter name=\"vip-ipv6-address\" value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]`\" />\n<parameter name=\"vip-ipv6-prefix-length\" value=\"128\" />\n<parameter name=\"is-floating\" value=\"false\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1794.9299659729004,

+        "y": 6365.430296421051,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1d38b1dd.61e89e",

+                "6176025c.2ad73c"

+            ]

+        ]

+    },

+    {

+        "id": "43f00c8e.4c60b4",

+        "type": "for",

+        "name": "for each floating ipv6 address",

+        "xml": "<for silentFailure='true' index='ipv6-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1302.9299583435059,

+        "y": 6422.430368900299,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "299ac4c9.b765dc"

+            ]

+        ]

+    },

+    {

+        "id": "299ac4c9.b765dc",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1528.9299583435059,

+        "y": 6421.430368900299,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "783e4357.c986ec",

+                "3d0b5fc0.1aec4",

+                "1976134f.84b09d"

+            ]

+        ]

+    },

+    {

+        "id": "9dec848e.b51528",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2190.4298362731934,

+        "y": 6335.414669513702,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "ec585839.cf03a8",

+                "fc515f97.dc4ef"

+            ]

+        ]

+    },

+    {

+        "id": "cc9a9082.df9ad",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2190.4299125671387,

+        "y": 6388.4144282341,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "dc08e935.aa2128",

+                "fc515f97.dc4ef"

+            ]

+        ]

+    },

+    {

+        "id": "1d38b1dd.61e89e",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2033.59672164917,

+        "y": 6335.430339336395,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "9dec848e.b51528"

+            ]

+        ]

+    },

+    {

+        "id": "6176025c.2ad73c",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2042.168254852295,

+        "y": 6388.0494837760925,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "cc9a9082.df9ad"

+            ]

+        ]

+    },

+    {

+        "id": "82969649.e96bb8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2523.7630920410156,

+        "y": 6448.414720118046,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "9303413c.a15fb",

+                "fc515f97.dc4ef"

+            ]

+        ]

+    },

+    {

+        "id": "a4127791.07e268",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2523.763168334961,

+        "y": 6501.414478838444,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "41362899.a075b8",

+                "fc515f97.dc4ef"

+            ]

+        ]

+    },

+    {

+        "id": "79c39cc4.e386e4",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2366.929977416992,

+        "y": 6448.430389940739,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "82969649.e96bb8"

+            ]

+        ]

+    },

+    {

+        "id": "a282925a.d9e0c",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2375.501510620117,

+        "y": 6501.049534380436,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "a4127791.07e268"

+            ]

+        ]

+    },

+    {

+        "id": "bdb5121f.d0648",

+        "type": "save",

+        "name": "save vip-ipv6-address-list relationships",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"vip-ipv6-address-list:relationship-list\"\n   key=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\n\t  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\n\t  AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"subnet\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/l3-networks/l3-network/'\n        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-id\n        + '/subnets/subnet/'\n        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.ipv6-subnet-id`\" />\n    <parameter name=\"relationship-list.relationship[1].related-to\" value=\"vnfc\" />\n    <parameter name=\"relationship-list.relationship[1].related-link\"\n      value=\"`'/aai/v$/network/vnfcs/vnfc/'\n        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2122.596820831299,

+        "y": 6477.09680891037,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "79c39cc4.e386e4",

+                "a282925a.d9e0c"

+            ]

+        ]

+    },

+    {

+        "id": "63a7631.9e7f99c",

+        "type": "set",

+        "name": "set created_flag",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].created_flag' value='true' />\n",

+        "comments": "",

+        "x": 1285.2632637023926,

+        "y": 4724.430592954159,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "39f74881.371fb8",

+        "type": "set",

+        "name": "set created-flag",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].created-flag' value='true' />\n",

+        "comments": "",

+        "x": 1255.930019378662,

+        "y": 5972.4307743906975,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "9094ce2c.0f237",

+        "type": "set",

+        "name": "set created-ipv4-flag",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv4-flag' value='true' />\n",

+        "comments": "",

+        "x": 1728.9299850463867,

+        "y": 6100.4308542609215,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "3d0b5fc0.1aec4",

+        "type": "set",

+        "name": "set created-ipv6-flag",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv6-flag' value='true' />\n",

+        "comments": "",

+        "x": 1734.2633209228516,

+        "y": 6426.430457532406,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "b50cee13.b9a08",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1835.2634391784668,

+        "y": 4684.430831849575,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "fc84df82.5bc09"

+            ]

+        ]

+    },

+    {

+        "id": "779079fc.7d1618",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-vlan-tagging-assign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-assign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 602.6798400878906,

+        "y": 6759.430809020996,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "9bf7c5a4.dd9598"

+            ]

+        ]

+    },

+    {

+        "id": "9bf7c5a4.dd9598",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 947.013256072998,

+        "y": 6758.764304161072,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "471e8c34.437354"

+            ]

+        ]

+    },

+    {

+        "id": "471e8c34.437354",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1102.0131301879883,

+        "y": 6758.764100074768,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "3ca8387c.2993a8",

+                "ddd8fcd8.b0fa8"

+            ]

+        ]

+    },

+    {

+        "id": "3ca8387c.2993a8",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-vlantaggingfailure.log' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1282.7867469787598,

+        "y": 6731.502106189728,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fb67aa4b.8284f8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 257.1558837890625,

+        "y": 510.3101568222046,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f4d050b1.8b4c3",

+                "5d7e2c45.4ebe34",

+                "48e25fc2.52f7",

+                "9974cb16.902fe8",

+                "9d5245b6.abb4e8",

+                "540a131f.3d7bec",

+                "d0321bc2.4f6358",

+                "348782c.04c017e",

+                "bceb88ad.260758",

+                "3f8bd8eb.1bd018"

+            ]

+        ]

+    },

+    {

+        "id": "9926c7ad.248aa8",

+        "type": "switchNode",

+        "name": "switch from-preload",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.from-preload`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 548.1677284240723,

+        "y": 2575.9059200286865,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "9e164e02.d239",

+                "44723a81.45b694"

+            ]

+        ]

+    },

+    {

+        "id": "9e164e02.d239",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 720.0724601745605,

+        "y": 2553.286940574646,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "3590eb8.88aec14"

+            ]

+        ]

+    },

+    {

+        "id": "44723a81.45b694",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 721.7391128540039,

+        "y": 2598.2867794036865,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "9742bfa8.39e3a"

+            ]

+        ]

+    },

+    {

+        "id": "3590eb8.88aec14",

+        "type": "set",

+        "name": "set automated-assignment to true",

+        "xml": "<set>\n<parameter name='automated-assignment' value='true' />\n",

+        "comments": "",

+        "x": 935.0724449157715,

+        "y": 2551.620111465454,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "9742bfa8.39e3a",

+        "type": "set",

+        "name": "set automated-assignment to false",

+        "xml": "<set>\n<parameter name='automated-assignment' value='false' />\n",

+        "comments": "",

+        "x": 933.4057655334473,

+        "y": 2596.6200313568115,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "1976134f.84b09d",

+        "type": "for",

+        "name": "for each vnfc",

+        "xml": "<for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1709.69185256958,

+        "y": 6525.310881137848,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "24db1747.589188"

+            ]

+        ]

+    },

+    {

+        "id": "494a4418.4600ec",

+        "type": "for",

+        "name": "for each vm-type",

+        "xml": "<for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 526.9298248291016,

+        "y": 3936.096802711487,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "edc660aa.aae32"

+            ]

+        ]

+    },

+    {

+        "id": "edc660aa.aae32",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 717.4298934936523,

+        "y": 3936.930037498474,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "8a22c1f6.1af97"

+            ]

+        ]

+    },

+    {

+        "id": "8a22c1f6.1af97",

+        "type": "for",

+        "name": "for each vm-network",

+        "xml": "<for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 918.9298248291016,

+        "y": 3936.096802711487,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "a190fe2f.d886f"

+            ]

+        ]

+    },

+    {

+        "id": "a190fe2f.d886f",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1108.7631454467773,

+        "y": 3935.5962419509888,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "e0f0f785.dc0f38"

+            ]

+        ]

+    },

+    {

+        "id": "e0f0f785.dc0f38",

+        "type": "get-resource",

+        "name": "get-resource VFC_RELATED_NETWORK_ROLE",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VFC_RELATED_NETWORK_ROLE where vfc_customization_uuid = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].model-customization-uuid\n    and network_role = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role'\n  pfx='db.vnf-related-network-role[]'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1398.2631187438965,

+        "y": 3934.096884727478,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "fd7f5581.6d4528",

+                "b45e71b2.bc101"

+            ]

+        ]

+    },

+    {

+        "id": "fd7f5581.6d4528",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1669.2630577087402,

+        "y": 3838.763586997986,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "d6d5d78c.a73e18"

+            ]

+        ]

+    },

+    {

+        "id": "d6d5d78c.a73e18",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1816.4535751342773,

+        "y": 3837.311601638794,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "6c1ed4b9.5ecf9c",

+                "f394576a.e4e1d8"

+            ]

+        ]

+    },

+    {

+        "id": "b45e71b2.bc101",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1670.0962677001953,

+        "y": 4083.4304666519165,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "952ac2a9.fea88"

+            ]

+        ]

+    },

+    {

+        "id": "b3ac03af.ef15c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2088.4295196533203,

+        "y": 4085.4302225112915,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "b5a4eea6.72594",

+                "ce6a381b.978038",

+                "1364d6f3.245769",

+                "f6d3df5a.7d52a",

+                "66f94089.96de5",

+                "a6a60ea4.9fb45",

+                "e617263a.f37478",

+                "5c5c0e0.7b249f4"

+            ]

+        ]

+    },

+    {

+        "id": "ce6a381b.978038",

+        "type": "for",

+        "name": "for each vnf network",

+        "xml": "<for silentFailure='true' index='vnf-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2270.929698944092,

+        "y": 3927.7634706497192,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "3f61199.ed2ade6"

+            ]

+        ]

+    },

+    {

+        "id": "b5a4eea6.72594",

+        "type": "set",

+        "name": "set found-related-network to false",

+        "xml": "<set>\n<parameter name='found-related-network' value='false' />\n",

+        "comments": "",

+        "x": 2310.929775238037,

+        "y": 3869.4302473068237,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "86eb7e36.9d7f7",

+        "type": "for",

+        "name": "for each related network",

+        "xml": "<for silentFailure='true' index='related-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].related-networks.related-network_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2669.929660797119,

+        "y": 3904.4297342300415,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "69287c55.352c84"

+            ]

+        ]

+    },

+    {

+        "id": "3f61199.ed2ade6",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2458.929698944092,

+        "y": 3927.7634706497192,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "86eb7e36.9d7f7",

+                "456cf44d.c85fac"

+            ]

+        ]

+    },

+    {

+        "id": "69287c55.352c84",

+        "type": "switchNode",

+        "name": "switch network-role matches",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].related-networks.related-network[$related-network-index].network-role\n  == $db.vnf-related-network-role[$db-related-network-index].related-network-role`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2921.9295768737793,

+        "y": 3904.429810523987,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "875934e4.a63818"

+            ]

+        ]

+    },

+    {

+        "id": "952ac2a9.fea88",

+        "type": "for",

+        "name": "for each db related-network",

+        "xml": "<for index='db-related-network-index' start='0' end='`$db.vnf-related-network-role_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1874.4296417236328,

+        "y": 4084.0972146987915,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "b3ac03af.ef15c"

+            ]

+        ]

+    },

+    {

+        "id": "875934e4.a63818",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3121.9295768737793,

+        "y": 3902.429810523987,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "5d83fcee.a618a4"

+            ]

+        ]

+    },

+    {

+        "id": "5d83fcee.a618a4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3275.9295768737793,

+        "y": 3900.429810523987,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "4df768f6.bb1e68",

+                "f4645e05.09dbf",

+                "29f5561c.96eb2a"

+            ]

+        ]

+    },

+    {

+        "id": "4df768f6.bb1e68",

+        "type": "set",

+        "name": "set found-related-network to true",

+        "xml": "<set>\n<parameter name='found-related-network' value='true' />\n",

+        "comments": "",

+        "x": 3507.9297370910645,

+        "y": 3860.0963945388794,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "f4645e05.09dbf",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 3431.262912750244,

+        "y": 3946.763144493103,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "1364d6f3.245769",

+        "type": "switchNode",

+        "name": "switch found-related-network",

+        "xml": "<switch test='`$found-related-network`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2306.429588317871,

+        "y": 4028.430356025696,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "19517216.b897fe"

+            ]

+        ]

+    },

+    {

+        "id": "19517216.b897fe",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2500.429588317871,

+        "y": 4026.430356025696,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f7f125ed.69c228"

+            ]

+        ]

+    },

+    {

+        "id": "f7f125ed.69c228",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2630.429588317871,

+        "y": 4026.430356025696,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "4102f097.0a51",

+                "f394576a.e4e1d8"

+            ]

+        ]

+    },

+    {

+        "id": "f6d3df5a.7d52a",

+        "type": "set",

+        "name": "set is-trunked and segmentation-id in vm-network",

+        "xml": "<set>\n<parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].is-trunked'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].is-trunked`' />\n<parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].segmentation-id'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].segmentation-id`' />\n",

+        "comments": "",

+        "x": 2368.429588317871,

+        "y": 4076.430356025696,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "a6a60ea4.9fb45",

+        "type": "switchNode",

+        "name": "switch rn-index",

+        "xml": "<switch test='`$rn-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2256.429588317871,

+        "y": 4184.430356025696,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "6c6e5ed6.1638b"

+            ]

+        ]

+    },

+    {

+        "id": "66f94089.96de5",

+        "type": "set",

+        "name": "set rn-index to related network length",

+        "xml": "<set>\n<parameter name='rn-index' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length`' />\n",

+        "comments": "",

+        "x": 2328.429588317871,

+        "y": 4128.430356025696,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "6c6e5ed6.1638b",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2420.429588317871,

+        "y": 4184.430356025696,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "4cbc1f39.6eef5"

+            ]

+        ]

+    },

+    {

+        "id": "4cbc1f39.6eef5",

+        "type": "set",

+        "name": "set rn-index to 0",

+        "xml": "<set>\n<parameter name='rn-index' value='0' />\n",

+        "comments": "",

+        "x": 2580.429588317871,

+        "y": 4184.430356025696,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "e617263a.f37478",

+        "type": "set",

+        "name": "set related-network data",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].network-id'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].network-id`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].network-role'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].network-role`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.vlan-interface'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.vlan-interface`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.lower-tag-id'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.lower-tag-id`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.upper-tag-id'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.upper-tag-id`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.is-private'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.is-private`' />\n",

+        "comments": "",

+        "x": 2280.429588317871,

+        "y": 4236.430356025696,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "5c5c0e0.7b249f4",

+        "type": "set",

+        "name": "set new related network length",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length'\n  value='`$rn-index + 1`' />\n",

+        "comments": "",

+        "x": 2298.429588317871,

+        "y": 4288.430356025696,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "456cf44d.c85fac",

+        "type": "switchNode",

+        "name": "switch found-related-network",

+        "xml": "<switch test='`$found-related-network`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2682.9296836853027,

+        "y": 3952.096594810486,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "65005548.e9ca8c"

+            ]

+        ]

+    },

+    {

+        "id": "65005548.e9ca8c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2879.5965461730957,

+        "y": 3952.0969667434692,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "a15ee876.ab6228"

+            ]

+        ]

+    },

+    {

+        "id": "a15ee876.ab6228",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 3009.5964317321777,

+        "y": 3950.430090904236,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "29f5561c.96eb2a",

+        "type": "set",

+        "name": "save indexes",

+        "xml": "<set>\n<parameter name='saved-vnf-network-index' value='`$vnf-network-index`' />\n<parameter name='saved-related-network-index' value='`$related-network-index`' />\n",

+        "comments": "",

+        "x": 3449.5966453552246,

+        "y": 3902.0969648361206,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "9a10ba16.3aa6a8",

+        "type": "execute",

+        "name": "generate cp-instance-id",

+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n<parameter name=\"ctx-destination\" value=\"cp-instance-id\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1738.5011367797852,

+        "y": 4931.621017932892,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "878cd74b.b859a8",

+        "type": "save",

+        "name": "save cp to A&AI",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"cp\" \n\tkey=\"vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\n\t  AND cp.cp-instance-id = $cp-instance-id\" >\n<parameter name=\"cp-instance-id\" value=\"`$cp-instance-id`\" />\n<parameter name=\"port-id\" value=\"0\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1720.1677589416504,

+        "y": 4998.2875237464905,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "38156f19.d3b92",

+                "6b679924.dbe638"

+            ]

+        ]

+    },

+    {

+        "id": "38156f19.d3b92",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1909.167739868164,

+        "y": 4973.954137265682,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "115e423c.501c8e"

+            ]

+        ]

+    },

+    {

+        "id": "115e423c.501c8e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2076.334487915039,

+        "y": 4989.748570859432,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "b0761ca.5d4cce",

+                "1254304a.7d8a4"

+            ]

+        ]

+    },

+    {

+        "id": "6b679924.dbe638",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1914.167739868164,

+        "y": 5023.620397031307,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "115e423c.501c8e"

+            ]

+        ]

+    },

+    {

+        "id": "52bb6b86.aae8d4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1514.9774589538574,

+        "y": 5200.905811786652,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1faae59a.ef7cea",

+                "3ff39820.94ba88",

+                "9a10ba16.3aa6a8",

+                "878cd74b.b859a8",

+                "eebcfd35.55fb9",

+                "82ba34b3.fa1f48"

+            ]

+        ]

+    },

+    {

+        "id": "1faae59a.ef7cea",

+        "type": "set",

+        "name": "set connection point data",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].connection-point.connection-point-id'\n  value='`$cp-instance-id`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].connection-point.port-id'\n  value='0' />\n",

+        "comments": "",

+        "x": 1750.5013008117676,

+        "y": 5076.1450934410095,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "933839f3.7f2e78",

+        "type": "comment",

+        "name": "Floating IPs",

+        "info": "",

+        "comments": "",

+        "x": 1311.2631187438965,

+        "y": 6058.430211722851,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "eebcfd35.55fb9",

+        "type": "for",

+        "name": "for each vnf-network",

+        "xml": "<for index='vnf-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1734.5963020324707,

+        "y": 5472.4305872917175,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "cc35a2e9.bcb07"

+            ]

+        ]

+    },

+    {

+        "id": "62b74236.aad4fc",

+        "type": "save",

+        "name": "save cp relationship to l3-network",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"cp:relationship-list\"\n   key=\"vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\n     AND cp.cp-instance-id = $cp-instance-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/l3-networks/l3-network/' +\n        $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2372.9297828674316,

+        "y": 5472.097095012665,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "d2f01f95.109f6",

+                "4a44bec7.49b2a"

+            ]

+        ]

+    },

+    {

+        "id": "6441b421.db195c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2744.7628211975098,

+        "y": 5445.415043354034,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "64e7c13b.82899",

+                "1254304a.7d8a4"

+            ]

+        ]

+    },

+    {

+        "id": "21487f6.95f1f8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2744.762897491455,

+        "y": 5498.414802074432,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f4e9414e.c0a39",

+                "1254304a.7d8a4"

+            ]

+        ]

+    },

+    {

+        "id": "d2f01f95.109f6",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2587.9297065734863,

+        "y": 5445.430713176727,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "6441b421.db195c"

+            ]

+        ]

+    },

+    {

+        "id": "4a44bec7.49b2a",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2596.5012397766113,

+        "y": 5498.049857616425,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "21487f6.95f1f8"

+            ]

+        ]

+    },

+    {

+        "id": "82ba34b3.fa1f48",

+        "type": "for",

+        "name": "for each vm-network",

+        "xml": "<for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1734.5964546203613,

+        "y": 5633.096942424774,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1f595d1a.8ff293"

+            ]

+        ]

+    },

+    {

+        "id": "b629e1fe.afa3d",

+        "type": "save",

+        "name": "save cp relationship to l3-network and vlan-tag",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"cp:relationship-list\"\n   key=\"vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\n     AND cp.cp-instance-id = $cp-instance-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/l3-networks/l3-network/' +\n        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].network-id`\" />\n    <parameter name=\"relationship-list.relationship[1].related-to\" value=\"vlan-tag\" />\n    <parameter name=\"relationship-list.relationship[1].related-link\"\n      value=\"`'/aai/v$/network/vlan-tags/vlan-tag/' +\n        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.vlan-interface`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2654.2634620666504,

+        "y": 5631.096937656403,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "6dc366c6.1b2608",

+                "a704ca3.36a4b38"

+            ]

+        ]

+    },

+    {

+        "id": "12c7943c.a55a2c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3061.096508026123,

+        "y": 5604.414236545564,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "94072bfe.632c28",

+                "1254304a.7d8a4"

+            ]

+        ]

+    },

+    {

+        "id": "2b88635f.5a533c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3061.0965843200684,

+        "y": 5657.413995265962,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "4462ce4a.8f7a5",

+                "1254304a.7d8a4"

+            ]

+        ]

+    },

+    {

+        "id": "6dc366c6.1b2608",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2904.2633934020996,

+        "y": 5604.4299063682565,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "12c7943c.a55a2c"

+            ]

+        ]

+    },

+    {

+        "id": "a704ca3.36a4b38",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2912.8349266052246,

+        "y": 5657.049050807954,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "2b88635f.5a533c"

+            ]

+        ]

+    },

+    {

+        "id": "1de94581.c488da",

+        "type": "for",

+        "name": "for each related-network",

+        "xml": "<for silentFailure='true' index='related-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2350.2632942199707,

+        "y": 5631.096938610077,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "b629e1fe.afa3d"

+            ]

+        ]

+    },

+    {

+        "id": "88b43b76.6a75d8",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-generate-heat-parameters",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-generate-heat-parameters' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 598.5966186523438,

+        "y": 6872.847700119019,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bb67c127.33c7c",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-vfmoduleheat.log' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 408.67992401123047,

+        "y": 6925.8473777771,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "67fa2696.640ed8",

+        "type": "switchNode",

+        "name": "switch input vf-module-name",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 581.2630195617676,

+        "y": 2357.929759979248,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "de18afec.e1079",

+                "49fb0ac8.04b604"

+            ]

+        ]

+    },

+    {

+        "id": "de18afec.e1079",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 803.7629852294922,

+        "y": 2280.4297199249268,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1c4c53fe.44b0dc"

+            ]

+        ]

+    },

+    {

+        "id": "49fb0ac8.04b604",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 805.4415855407715,

+        "y": 2453.0483045578003,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "755e8713.bcc1c8"

+            ]

+        ]

+    },

+    {

+        "id": "a421948e.7e12b8",

+        "type": "for",

+        "name": "for each vnfc-subnet-role",

+        "xml": "<for index='subnet-role-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1338.7631187438965,

+        "y": 3152.929436683655,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "ebf9c337.4e138"

+            ]

+        ]

+    },

+    {

+        "id": "ebf9c337.4e138",

+        "type": "for",

+        "name": "for each vnfc-address-family",

+        "xml": "<for index='address-family-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1587.096378326416,

+        "y": 3152.929436683655,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "a86ece19.ececb"

+            ]

+        ]

+    },

+    {

+        "id": "fcaf9b9.f1d4568",

+        "type": "for",

+        "name": "for each vm-type",

+        "xml": "<for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 544.5962944030762,

+        "y": 2871.262773513794,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f8bef45b.8c1d38"

+            ]

+        ]

+    },

+    {

+        "id": "f8bef45b.8c1d38",

+        "type": "for",

+        "name": "for each vnfc",

+        "xml": "<for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 726.2630729675293,

+        "y": 2869.929922103882,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "97b3bca9.21b53"

+            ]

+        ]

+    },

+    {

+        "id": "97b3bca9.21b53",

+        "type": "for",

+        "name": "for each vnfc-network",

+        "xml": "<for silentFailure='true' index='vnfc-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 927.4296455383301,

+        "y": 2869.76261138916,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "a3d88602.8525e8"

+            ]

+        ]

+    },

+    {

+        "id": "a3d88602.8525e8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1139.5963172912598,

+        "y": 2868.7629718780518,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "d5a5aef3.81764",

+                "37a20e05.126042",

+                "f86420d0.f8cb4",

+                "a421948e.7e12b8"

+            ]

+        ]

+    },

+    {

+        "id": "d5a5aef3.81764",

+        "type": "set",

+        "name": "set vnf-network-index to -1",

+        "xml": "<set>\n<parameter name='vnf-network-index' value='-1' />\n",

+        "comments": "",

+        "x": 1351.2630348205566,

+        "y": 2822.096185684204,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "37a20e05.126042",

+        "type": "for",

+        "name": "for each vnf-network",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1332.9298248291016,

+        "y": 2868.7629375457764,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1cb49556.32692b"

+            ]

+        ]

+    },

+    {

+        "id": "1cb49556.32692b",

+        "type": "switchNode",

+        "name": "switch network-roles match?",

+        "xml": "<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-network-role\n  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$idx].network-role`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1574.5962944030762,

+        "y": 2867.096432685852,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "d1c77ddb.a0354"

+            ]

+        ]

+    },

+    {

+        "id": "d1c77ddb.a0354",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1771.2629737854004,

+        "y": 2867.096351623535,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1428ec99.f2d413"

+            ]

+        ]

+    },

+    {

+        "id": "1428ec99.f2d413",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1924.5961952209473,

+        "y": 2867.0962238311768,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "fcce8154.9685e",

+                "cbd9fa48.bee5b8",

+                "491c8e10.8347"

+            ]

+        ]

+    },

+    {

+        "id": "fcce8154.9685e",

+        "type": "set",

+        "name": "set vnf-network-index",

+        "xml": "<set>\n<parameter name='vnf-network-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 2131.263027191162,

+        "y": 2815.4296016693115,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "cbd9fa48.bee5b8",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 2086.2629432678223,

+        "y": 2905.4295225143433,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "f86420d0.f8cb4",

+        "type": "switchNode",

+        "name": "switch vnf-network-index",

+        "xml": "<switch test='`$vnf-network-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1344.596363067627,

+        "y": 2928.762939453125,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "79b99590.d3fcac"

+            ]

+        ]

+    },

+    {

+        "id": "79b99590.d3fcac",

+        "type": "outcome",

+        "name": "-1",

+        "xml": "<outcome value='-1'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1536.2630043029785,

+        "y": 2928.76318359375,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "917a6c27.9bf3"

+            ]

+        ]

+    },

+    {

+        "id": "917a6c27.9bf3",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1684.5961952209473,

+        "y": 2927.0962238311768,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "a6ff636a.1da36",

+                "f394576a.e4e1d8"

+            ]

+        ]

+    },

+    {

+        "id": "95349f39.6e5a9",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2376.262912750244,

+        "y": 3337.0960750579834,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "9e396ac0.1c0cd8",

+                "f53353ba.f6cea",

+                "35326a6f.8ce8b6"

+            ]

+        ]

+    },

+    {

+        "id": "9e396ac0.1c0cd8",

+        "type": "for",

+        "name": "for each subnet-data",

+        "xml": "<for index='subnet-data-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2572.9296646118164,

+        "y": 3292.0959939956665,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "d3c7828c.9a35d"

+            ]

+        ]

+    },

+    {

+        "id": "d3c7828c.9a35d",

+        "type": "switchNode",

+        "name": "address-families match?",

+        "xml": "<switch test='`$tmp.address-family\n  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].ip-version`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2799.596290588379,

+        "y": 3292.0959939956665,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "c4cd4a9c.110088"

+            ]

+        ]

+    },

+    {

+        "id": "c4cd4a9c.110088",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2979.5962562561035,

+        "y": 3292.0964002609253,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "d297a29d.32368"

+            ]

+        ]

+    },

+    {

+        "id": "801d0ec7.9db1b",

+        "type": "set",

+        "name": "set tmp.address-family",

+        "xml": "<set>\n<parameter name='tmp.address-family'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family`' />\n",

+        "comments": "",

+        "x": 2404.596248626709,

+        "y": 3155.429488182068,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "a86ece19.ececb",

+        "type": "switchNode",

+        "name": "switch vnfc-subnet-ip_length",

+        "xml": "<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1849.596591949463,

+        "y": 3152.096523284912,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "b8041b24.2b66c8",

+                "9c9140dc.f2e33",

+                "489d3614.0f27f8"

+            ]

+        ]

+    },

+    {

+        "id": "b8041b24.2b66c8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2051.2631034851074,

+        "y": 3052.0960664749146,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "8bb4c617.110b48"

+            ]

+        ]

+    },

+    {

+        "id": "9c9140dc.f2e33",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2047.6917343139648,

+        "y": 3238.048357963562,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "b0bfddfb.72eba"

+            ]

+        ]

+    },

+    {

+        "id": "8bb4c617.110b48",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2182.9296531677246,

+        "y": 3074.7628135681152,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "38e8e50c.e85dda",

+        "type": "set",

+        "name": "set subnet-id to -1",

+        "xml": "<set>\n<parameter name='subnet-id' value='-1' />\n",

+        "comments": "",

+        "x": 3072.9301719665527,

+        "y": 3453.7634801864624,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "b0bfddfb.72eba",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2201.2631492614746,

+        "y": 3237.0959901809692,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "801d0ec7.9db1b",

+                "95349f39.6e5a9"

+            ]

+        ]

+    },

+    {

+        "id": "d34b6157.8f35a",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 4332.929769515991,

+        "y": 3625.429957151413,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "88064ec.10dddb",

+                "52c4ad67.8cbd34"

+            ]

+        ]

+    },

+    {

+        "id": "52c4ad67.8cbd34",

+        "type": "execute",

+        "name": "execute isInSameSubnet",

+        "xml": "<execute plugin=\"com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool\" method=\"isInSameSubnet\">\n\t<parameter name=\"firstIPAddr\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].network-start-address`\" />\n\t<parameter name=\"secondIPAddr\" value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-ip-address`\" />\n\t<parameter name=\"subnet\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].cidr-mask`\" />\n\t<parameter name=\"ipType\" value=\"`$ip-type`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4547.92977142334,

+        "y": 3675.4296309947968,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "995a749b.8f5f58"

+            ]

+        ]

+    },

+    {

+        "id": "88064ec.10dddb",

+        "type": "switchNode",

+        "name": "switch tmp.address-family",

+        "xml": "<switch test='`$tmp.address-family`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4549.596927642822,

+        "y": 3582.096617460251,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "431902e1.65a18c",

+                "a1d0494d.a8bd18"

+            ]

+        ]

+    },

+    {

+        "id": "431902e1.65a18c",

+        "type": "outcome",

+        "name": "ipv4",

+        "xml": "<outcome value='ipv4'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4752.930189768473,

+        "y": 3555.4298477967577,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "bb7bc2b4.6ce51"

+            ]

+        ]

+    },

+    {

+        "id": "a1d0494d.a8bd18",

+        "type": "outcome",

+        "name": "ipv6",

+        "xml": "<outcome value='ipv6'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4752.929862976074,

+        "y": 3602.0963752269745,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "e7f8c0a.86c664"

+            ]

+        ]

+    },

+    {

+        "id": "bb7bc2b4.6ce51",

+        "type": "set",

+        "name": "set ip-type parameter to IPv4",

+        "xml": "<set>\n<parameter name='ip-type' value='IPv4' />\n",

+        "comments": "",

+        "x": 4949.596675872803,

+        "y": 3553.7633216381073,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "e7f8c0a.86c664",

+        "type": "set",

+        "name": "set ip-type parameter to IPv6",

+        "xml": "<set>\n<parameter name='ip-type' value='IPv6' />\n",

+        "comments": "",

+        "x": 4954.59655380249,

+        "y": 3602.096394300461,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "7fcd1d62.d76cb4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 4887.929801940918,

+        "y": 3675.096394300461,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "5e631020.53cce",

+                "df991002.c407"

+            ]

+        ]

+    },

+    {

+        "id": "5e631020.53cce",

+        "type": "set",

+        "name": "set subnet-id",

+        "xml": "<set>\n<parameter name='subnet-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id`' />\n",

+        "comments": "",

+        "x": 5066.263122558594,

+        "y": 3651.762881040573,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "df991002.c407",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 5051.263126373291,

+        "y": 3698.4298751354218,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "4e4fca65.cbf754",

+        "type": "switchNode",

+        "name": "switch subnet-id",

+        "xml": "<switch test='`$subnet-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3064.596046447754,

+        "y": 3615.430214881897,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "5fc3b8b.62e4a48"

+            ]

+        ]

+    },

+    {

+        "id": "5fc3b8b.62e4a48",

+        "type": "outcome",

+        "name": "-1",

+        "xml": "<outcome value='-1'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3221.26261138916,

+        "y": 3615.4301500320435,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1fa6c512.92b1cb"

+            ]

+        ]

+    },

+    {

+        "id": "1fa6c512.92b1cb",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3369.595802307129,

+        "y": 3613.76319026947,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "fec2cbd9.e930a8",

+                "f394576a.e4e1d8"

+            ]

+        ]

+    },

+    {

+        "id": "10262cd6.950543",

+        "type": "set",

+        "name": "set subnet-id in vnfc-ip-assignments (temp variable)",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id' value='`$subnet-id`' />\n",

+        "comments": "",

+        "x": 3176.2626914978027,

+        "y": 3692.0969858169556,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "7b6a70b.67d389",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-vfmodulec.log' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 529.5962867736816,

+        "y": 3287.0962238311768,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "995a749b.8f5f58",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4734.596374511719,

+        "y": 3675.4301192760468,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "7fcd1d62.d76cb4"

+            ]

+        ]

+    },

+    {

+        "id": "491c8e10.8347",

+        "type": "set",

+        "name": "set network-id",

+        "xml": "<set>\n<parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].network-id'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$idx].network-id`' />\n",

+        "comments": "",

+        "x": 2107.929531097412,

+        "y": 2860.429684638977,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "a45139cd.c06788",

+        "type": "switchNode",

+        "name": "switch nfc-naming-code",

+        "xml": "<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1306.262996673584,

+        "y": 4475.42941236496,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "7364ca38.2e5154",

+                "58d89920.1583e8"

+            ]

+        ]

+    },

+    {

+        "id": "7364ca38.2e5154",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1491.2629432678223,

+        "y": 4450.42923116684,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "8158813c.66973"

+            ]

+        ]

+    },

+    {

+        "id": "58d89920.1583e8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1489.3582153320312,

+        "y": 4497.215058803558,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "3d2f5ba8.c13584"

+            ]

+        ]

+    },

+    {

+        "id": "8158813c.66973",

+        "type": "set",

+        "name": "set tmp.nfc-naming-code to DEFAULT",

+        "xml": "<set>\n<parameter name='tmp.nfc-naming-code' value='DEFAULT' />\n",

+        "comments": "",

+        "x": 1722.9297142028809,

+        "y": 4448.762581348419,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "3d2f5ba8.c13584",

+        "type": "set",

+        "name": "set tmp.nfc-naming-code",

+        "xml": "<set>\n<parameter name='tmp.nfc-naming-code' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code`' />\n",

+        "comments": "",

+        "x": 1679.5962257385254,

+        "y": 4497.096079349518,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "d5639dcc.50d87",

+        "type": "switchNode",

+        "name": "switch nfc-function",

+        "xml": "<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1294.5963287353516,

+        "y": 4573.762586116791,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "b1314442.1e8e58",

+                "4e90e22a.aab6cc"

+            ]

+        ]

+    },

+    {

+        "id": "b1314442.1e8e58",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1491.2629356384277,

+        "y": 4548.762383937836,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "c5c1ae87.86af"

+            ]

+        ]

+    },

+    {

+        "id": "4e90e22a.aab6cc",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1489.3582077026367,

+        "y": 4595.548211574554,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "ba48d68e.f81aa8"

+            ]

+        ]

+    },

+    {

+        "id": "c5c1ae87.86af",

+        "type": "set",

+        "name": "set tmp.nfc-function to DEFAULT",

+        "xml": "<set>\n<parameter name='tmp.nfc-function' value='DEFAULT' />\n",

+        "comments": "",

+        "x": 1702.9297180175781,

+        "y": 4547.0955929756165,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "ba48d68e.f81aa8",

+        "type": "set",

+        "name": "set tmp.nfc-function",

+        "xml": "<set>\n<parameter name='tmp.nfc-function' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function`' />\n",

+        "comments": "",

+        "x": 1661.2628479003906,

+        "y": 4595.429254055023,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "cc35a2e9.bcb07",

+        "type": "switchNode",

+        "name": "switch network-roles match?",

+        "xml": "<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-network-role\n  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1967.92964553833,

+        "y": 5472.4296135902405,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "7bf7e0e4.c2092"

+            ]

+        ]

+    },

+    {

+        "id": "7bf7e0e4.c2092",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2166.263114929199,

+        "y": 5472.096768856049,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "62b74236.aad4fc"

+            ]

+        ]

+    },

+    {

+        "id": "1f595d1a.8ff293",

+        "type": "switchNode",

+        "name": "switch network-roles match?",

+        "xml": "<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role\n  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1971.2629890441895,

+        "y": 5632.096061229706,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "47d7d211.80a5ec"

+            ]

+        ]

+    },

+    {

+        "id": "47d7d211.80a5ec",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2169.5964584350586,

+        "y": 5631.763216495514,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1de94581.c488da"

+            ]

+        ]

+    },

+    {

+        "id": "316d52f.75519ae",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1874.5962715148926,

+        "y": 6210.4294810295105,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "c0647bff.dcfb98",

+                "5911a368.70726c"

+            ]

+        ]

+    },

+    {

+        "id": "24db1747.589188",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1876.2630195617676,

+        "y": 6525.429492473602,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "bdb5121f.d0648",

+                "9dacd2cd.93ab"

+            ]

+        ]

+    },

+    {

+        "id": "5911a368.70726c",

+        "type": "for",

+        "name": "for each vnfc-network-role",

+        "xml": "<for silentFailure='true' index='vnfc-network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2091.2632179260254,

+        "y": 6268.762651920319,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f138f006.e2934"

+            ]

+        ]

+    },

+    {

+        "id": "14599bc4.dfcff4",

+        "type": "save",

+        "name": "save vip-ipv4-address-list relationship to cp",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"vip-ipv4-address-list:relationship-list\"\n   key=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\n\t  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\n\t  AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"cp\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/vnfcs/vnfc/'\n        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\n        + '/cps/cp/'\n        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].connection-point.connection-point-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2766.26314163208,

+        "y": 6268.762490749359,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "34dd5b17.9e06c4",

+                "c966a91b.7c68b8"

+            ]

+        ]

+    },

+    {

+        "id": "52867741.452a08",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3158.09623336792,

+        "y": 6242.080272197723,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1a54f803.3243e8",

+                "fc515f97.dc4ef"

+            ]

+        ]

+    },

+    {

+        "id": "fbf6e33e.69daa",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3158.0963096618652,

+        "y": 6295.080030918121,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "9ebbd632.ef43d8",

+                "fc515f97.dc4ef"

+            ]

+        ]

+    },

+    {

+        "id": "34dd5b17.9e06c4",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3001.2631187438965,

+        "y": 6242.095942020416,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "52867741.452a08"

+            ]

+        ]

+    },

+    {

+        "id": "c966a91b.7c68b8",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3009.8346519470215,

+        "y": 6294.7150864601135,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "fbf6e33e.69daa"

+            ]

+        ]

+    },

+    {

+        "id": "9dacd2cd.93ab",

+        "type": "for",

+        "name": "for each vnfc-network-role",

+        "xml": "<for silentFailure='true' index='vnfc-network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2092.929615020752,

+        "y": 6592.096061229706,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "2dbd930d.06759c"

+            ]

+        ]

+    },

+    {

+        "id": "6321a56a.de355c",

+        "type": "save",

+        "name": "save vip-ipv6-address-list relationship to cp",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"vip-ipv6-address-list:relationship-list\"\n   key=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\n\t  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\n\t  AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"cp\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/vnfcs/vnfc/'\n        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\n        + '/cps/cp/'\n        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].connection-point.connection-point-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2762.9295692443848,

+        "y": 6590.428843975067,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "7666db3f.f47e74",

+                "639b285f.08d4e8"

+            ]

+        ]

+    },

+    {

+        "id": "f0c87b03.93a6b8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3154.7626609802246,

+        "y": 6563.746625423431,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "82534f84.1802c",

+                "fc515f97.dc4ef"

+            ]

+        ]

+    },

+    {

+        "id": "301d4b1.d1d96b4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3154.76273727417,

+        "y": 6616.746384143829,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "bec2c422.16f948",

+                "fc515f97.dc4ef"

+            ]

+        ]

+    },

+    {

+        "id": "7666db3f.f47e74",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2997.929546356201,

+        "y": 6563.762295246124,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f0c87b03.93a6b8"

+            ]

+        ]

+    },

+    {

+        "id": "639b285f.08d4e8",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3006.501079559326,

+        "y": 6616.3814396858215,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "301d4b1.d1d96b4"

+            ]

+        ]

+    },

+    {

+        "id": "f138f006.e2934",

+        "type": "switchNode",

+        "name": "switch network-roles match?",

+        "xml": "<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role\n  == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].vnfc-network-role`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2344.5962867736816,

+        "y": 6268.762328624725,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "96bf85f6.f873f8"

+            ]

+        ]

+    },

+    {

+        "id": "96bf85f6.f873f8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2531.2631301879883,

+        "y": 6268.762815952301,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "14599bc4.dfcff4"

+            ]

+        ]

+    },

+    {

+        "id": "2dbd930d.06759c",

+        "type": "switchNode",

+        "name": "switch network-roles match?",

+        "xml": "<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role\n  == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].vnfc-network-role`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2341.262866973877,

+        "y": 6590.429069042206,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "75bae1b8.8d5a7"

+            ]

+        ]

+    },

+    {

+        "id": "75bae1b8.8d5a7",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2527.9297103881836,

+        "y": 6590.4295563697815,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "6321a56a.de355c"

+            ]

+        ]

+    },

+    {

+        "id": "14b5c458.f3a9ec",

+        "type": "comment",

+        "name": "SELF-SERVE FORK",

+        "info": "",

+        "comments": "",

+        "x": 690.9773178100586,

+        "y": 922.5363388061523,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "b4ce17c3.fa50b8",

+        "type": "comment",

+        "name": "First, count the subnets for this address family",

+        "info": "",

+        "comments": "",

+        "x": 2706.2634239196777,

+        "y": 3201.7384843826294,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "12c26bf4.a2a7c4",

+        "type": "for",

+        "name": "for each subnet-data",

+        "xml": "<for index='subnet-data-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3079.5961112976074,

+        "y": 3496.7389879226685,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "6a0e881b.4ba548"

+            ]

+        ]

+    },

+    {

+        "id": "6a0e881b.4ba548",

+        "type": "switchNode",

+        "name": "address-families match?",

+        "xml": "<switch test='`$tmp.address-family\n  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].ip-version`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3306.26273727417,

+        "y": 3496.7389879226685,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "78272436.cd36bc"

+            ]

+        ]

+    },

+    {

+        "id": "78272436.cd36bc",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3486.2627029418945,

+        "y": 3496.7393941879272,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "8571ff4f.7368d"

+            ]

+        ]

+    },

+    {

+        "id": "f53353ba.f6cea",

+        "type": "set",

+        "name": "set af-count to 0",

+        "xml": "<set>\n<parameter name='af-count' value='0' />\n",

+        "comments": "",

+        "x": 2561.262996673584,

+        "y": 3243.4052362442017,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "774c4dcf.519194",

+        "type": "set",

+        "name": "increment af-count",

+        "xml": "<set>\n<parameter name='af-count' value='`$af-count + 1`' />\n",

+        "comments": "",

+        "x": 3309.596363067627,

+        "y": 3310.0719861984253,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "d297a29d.32368",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3126.26273727417,

+        "y": 3291.7386713027954,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "774c4dcf.519194",

+                "93d44f0.e06a8b"

+            ]

+        ]

+    },

+    {

+        "id": "93d44f0.e06a8b",

+        "type": "set",

+        "name": "set subnet-id",

+        "xml": "<set>\n<parameter name='subnet-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id`' />\n",

+        "comments": "",

+        "x": 3291.262783050537,

+        "y": 3265.0719842910767,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "35326a6f.8ce8b6",

+        "type": "switchNode",

+        "name": "switch af-count",

+        "xml": "<switch test='`$af-count`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2551.2634086608887,

+        "y": 3480.0721530914307,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "d300c477.7f84e8",

+                "8e745db4.433a4"

+            ]

+        ]

+    },

+    {

+        "id": "d300c477.7f84e8",

+        "type": "outcome",

+        "name": "1",

+        "xml": "<outcome value='1'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2711.262928009033,

+        "y": 3378.40532207489,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "700167b.43daf98"

+            ]

+        ]

+    },

+    {

+        "id": "700167b.43daf98",

+        "type": "set",

+        "name": "set subnet-id in vnfc-ip-assignments (temp variable)",

+        "xml": "<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id'\n  value='`$subnet-id`' />\n",

+        "comments": "",

+        "x": 2984.59623336792,

+        "y": 3376.7386713027954,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "8e745db4.433a4",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2711.2628440856934,

+        "y": 3580.072241783142,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "49b5ae7f.1ecb1"

+            ]

+        ]

+    },

+    {

+        "id": "49b5ae7f.1ecb1",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2867.929485321045,

+        "y": 3580.0719232559204,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "38e8e50c.e85dda",

+                "12c26bf4.a2a7c4",

+                "4e4fca65.cbf754",

+                "10262cd6.950543"

+            ]

+        ]

+    },

+    {

+        "id": "8571ff4f.7368d",

+        "type": "switchNode",

+        "name": "switch network-start-address",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].network-start-address`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3681.262882232666,

+        "y": 3495.072237968445,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "dcdbaac8.71fac8",

+                "9a1f2d8c.38269"

+            ]

+        ]

+    },

+    {

+        "id": "dcdbaac8.71fac8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 3877.92972946167,

+        "y": 3430.071848630905,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "ff48f3fc.6ff7e"

+            ]

+        ]

+    },

+    {

+        "id": "9a1f2d8c.38269",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3871.0251274108887,

+        "y": 3564.3577601909637,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f43b3822.b1c158"

+            ]

+        ]

+    },

+    {

+        "id": "f43b3822.b1c158",

+        "type": "switchNode",

+        "name": "switch cidr-mask",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].cidr-mask`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4026.2629203796387,

+        "y": 3563.404967069626,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "4eb745de.4f4aec",

+                "898134a0.ae5d18"

+            ]

+        ]

+    },

+    {

+        "id": "4eb745de.4f4aec",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 4181.262996673584,

+        "y": 3493.405266523361,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "8dbb144d.370578"

+            ]

+        ]

+    },

+    {

+        "id": "898134a0.ae5d18",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4184.358793258667,

+        "y": 3626.0243537425995,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "d34b6157.8f35a"

+            ]

+        ]

+    },

+    {

+        "id": "489d3614.0f27f8",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2052.9296073913574,

+        "y": 3100.0719232559204,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "8bb4c617.110b48"

+            ]

+        ]

+    },

+    {

+        "id": "ff48f3fc.6ff7e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 4022.929656982422,

+        "y": 3430.071615934372,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1b07cf87.9b6fe",

+                "f394576a.e4e1d8"

+            ]

+        ]

+    },

+    {

+        "id": "8dbb144d.370578",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 4327.929512023926,

+        "y": 3491.7384831905365,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "319df706.15f388",

+                "f394576a.e4e1d8"

+            ]

+        ]

+    },

+    {

+        "id": "55e003a5.fca06c",

+        "type": "comment",

+        "name": "Ignore address families with no addresses",

+        "info": "",

+        "comments": "",

+        "x": 2327.262981414795,

+        "y": 3030.4054193496704,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "3291e6ae.85f8ba",

+        "type": "switchNode",

+        "name": "switch invariant-uuid",

+        "xml": "<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1297.9298210144043,

+        "y": 4660.071797370911,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "6a6eb8f1.9f62d8",

+                "f080e271.42c9b"

+            ]

+        ]

+    },

+    {

+        "id": "6a6eb8f1.9f62d8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1479.59623336792,

+        "y": 4636.73842716217,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "db88ee95.a44c3"

+            ]

+        ]

+    },

+    {

+        "id": "f080e271.42c9b",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1477.691505432129,

+        "y": 4683.524254798889,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "9b23e63c.8ba5d8"

+            ]

+        ]

+    },

+    {

+        "id": "db88ee95.a44c3",

+        "type": "save",

+        "name": "save vnfc to A&AI",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vnfc\" \n\tkey=\"vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\" >\n<parameter name=\"vnfc-name\" value=\"`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`\" />\n<parameter name=\"nfc-naming-code\" value=\"`$tmp.nfc-naming-code`\" />\n<parameter name=\"nfc-function\" value=\"`$tmp.nfc-function`\" />\n<parameter name=\"orchestration-status\" value=\"`PendingCreate`\" />\n<parameter name=\"in-maint\" value=\"true\" />\n<parameter name=\"prov-status\" value=\"`PREPROV`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1641.2628593444824,

+        "y": 4638.40541934967,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "8c17d99f.3ce5f8",

+                "b50cee13.b9a08"

+            ]

+        ]

+    },

+    {

+        "id": "d0321bc2.4f6358",

+        "type": "switchNode",

+        "name": "switch input cloud-owner",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 556.9772186279297,

+        "y": 312.39344787597656,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "da47b7e7.f3d848",

+                "23870b6f.901aa4"

+            ]

+        ]

+    },

+    {

+        "id": "da47b7e7.f3d848",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 740.3105926513672,

+        "y": 282.39343643188477,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "4f66f95.7b33f08"

+            ]

+        ]

+    },

+    {

+        "id": "23870b6f.901aa4",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 740.0724983215332,

+        "y": 323.3459300994873,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "dee18ffa.a6fe6"

+            ]

+        ]

+    },

+    {

+        "id": "4f66f95.7b33f08",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 875.310546875,

+        "y": 280.7267761230469,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dee18ffa.a6fe6",

+        "type": "set",

+        "name": "set prop.cloud-region.cloud-owner",

+        "xml": "<set>\n<parameter name='prop.cloud-region.cloud-owner' value='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`' />\n",

+        "comments": "",

+        "x": 956.9772033691406,

+        "y": 322.3934574127197,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "348782c.04c017e",

+        "type": "call",

+        "name": "call self-serve-vf-module-forking-logic",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-forking-logic' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 588.5645904541016,

+        "y": 863.7867784500122,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bceb88ad.260758",

+        "type": "switchNode",

+        "name": "switch ss.self-serve-flag",

+        "xml": "<switch test=\"`$ss.self-serve-flag`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 546.7073287963867,

+        "y": 1090.786847114563,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "7c55f766.ae1538",

+                "c5c4e1ec.02a4b"

+            ]

+        ]

+    },

+    {

+        "id": "7c55f766.ae1538",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 767.4215278625488,

+        "y": 1208.3577461242676,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "94a28d82.4f01d"

+            ]

+        ]

+    },

+    {

+        "id": "c5c4e1ec.02a4b",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 767.9929809570312,

+        "y": 967.2153835296631,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "3d2fe671.10512a"

+            ]

+        ]

+    },

+    {

+        "id": "42e09bf7.400e44",

+        "type": "call",

+        "name": "call check for VNF-API-preload and copy",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='gw-vfmodule-update' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 599.7630157470703,

+        "y": 7269.98964881897,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3e5eb577.046eda",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 922.5129852294922,

+        "y": 441.368989944458,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "6514e137.563f3",

+                "37049c8a.e3e5e4"

+            ]

+        ]

+    },

+    {

+        "id": "37049c8a.e3e5e4",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"If svc-action is 'assign' then request-action must be 'CreateVfModuleInstance'\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1110.4296684265137,

+        "y": 424.9999680519104,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2172bacb.fd1c86",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1024.71529006958,

+        "y": 489.85708379745483,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "b1597171.3ee09",

+                "6514e137.563f3"

+            ]

+        ]

+    },

+    {

+        "id": "b1597171.3ee09",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error reading VF_MODULE_MODEL table\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1222.036693572998,

+        "y": 468.392783164978,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c639de59.ae251",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1039.0009956359863,

+        "y": 534.999936580658,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "e497f95d.3eb3c8",

+                "6514e137.563f3"

+            ]

+        ]

+    },

+    {

+        "id": "e497f95d.3eb3c8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'No model found for VF module customization UUID ' + $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1233.6438827514648,

+        "y": 511.96422290802,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dbfaf511.5478b8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1000.6082534790039,

+        "y": 663.0714178085327,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "2e3d6663.deaf6a",

+                "6514e137.563f3"

+            ]

+        ]

+    },

+    {

+        "id": "2e3d6663.deaf6a",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"There are no VNFs defined in MD-SAL\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1207.572509765625,

+        "y": 634.1071424484253,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "792ace51.b15ed",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 864.8939590454102,

+        "y": 771.0714178085327,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "63dc2a33.a12634",

+                "6514e137.563f3"

+            ]

+        ]

+    },

+    {

+        "id": "63dc2a33.a12634",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1066.858253479004,

+        "y": 746.4285869598389,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "11136e46.5af982",

+        "type": "call",

+        "name": "call self-serve-vf-module-assign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-assign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1189.8456230163574,

+        "y": 879.8449487686157,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "cab143b7.d90eb"

+            ]

+        ]

+    },

+    {

+        "id": "cab143b7.d90eb",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1410.1432037353516,

+        "y": 879.3329801559448,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "dbc9bb02.023fe8"

+            ]

+        ]

+    },

+    {

+        "id": "6a1554d7.38e2ec",

+        "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": 1142.5482940673828,

+        "y": 1125.1065063476562,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "763275a1.1cfcbc",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/ss-vnfend.log' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1128.7625045776367,

+        "y": 970.8481245040894,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7a9afeeb.bcc87",

+        "type": "set",

+        "name": "set order-status to PendingCreate",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'\n  value='PendingCreate' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'\n  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-module-index].vf-module-data.vf-module-level-oper-status.last-action'\n  value='`$vf-module-topology-operation-input.request-information.request-action`' />\n",

+        "comments": "",

+        "x": 1197.7862663269043,

+        "y": 924.8089780807495,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "3d2fe671.10512a",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 938.8817367553711,

+        "y": 966.3088102340698,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "11136e46.5af982",

+                "7a9afeeb.bcc87",

+                "763275a1.1cfcbc",

+                "6a1554d7.38e2ec",

+                "67e4426c.6971cc",

+                "e7600116.eb3ff"

+            ]

+        ]

+    },

+    {

+        "id": "6514e137.563f3",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1649.0608139038086,

+        "y": 1147.6433925628662,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "c44f4709.248e68",

+                "cff53af6.747968"

+            ]

+        ]

+    },

+    {

+        "id": "dbc9bb02.023fe8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1556.143928527832,

+        "y": 878.7143354415894,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "1b79c9d4.553d96",

+                "6514e137.563f3"

+            ]

+        ]

+    },

+    {

+        "id": "1b79c9d4.553d96",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Failed to create self-serve assignment for vf-module with vf-module-id=' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' with error: ' + $error-message`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1753.8226852416992,

+        "y": 858.0000448226929,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "88ef43cf.4353c",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'VF module id ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id\n       + ' already exists, and status is ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-level-oper-status.order-status`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2461.263038635254,

+        "y": 1377.207555770874,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "cdf91b0.174e5e8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2267.334129333496,

+        "y": 1396.6718444824219,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "88ef43cf.4353c",

+                "80b5ab3d.6f3ef8"

+            ]

+        ]

+    },

+    {

+        "id": "799eaa32.6fe824",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 972.334358215332,

+        "y": 1614.3384866714478,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "9ddd96ce.6586c8",

+                "80b5ab3d.6f3ef8"

+            ]

+        ]

+    },

+    {

+        "id": "7adbe623.7575f8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 974.0010452270508,

+        "y": 1657.6718606948853,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "22247b5.eb10384",

+                "80b5ab3d.6f3ef8"

+            ]

+        ]

+    },

+    {

+        "id": "9ddd96ce.6586c8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Cloud region not found in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1176.2630233764648,

+        "y": 1591.1242628097534,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "22247b5.eb10384",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error retrieving cloud region from AAI.  Is AAI down?\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1171.6797637939453,

+        "y": 1639.4575996398926,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ec2aeced.650af",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 856.9175720214844,

+        "y": 1838.3385391235352,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "9bc214de.5d73d8",

+                "80b5ab3d.6f3ef8"

+            ]

+        ]

+    },

+    {

+        "id": "9bc214de.5d73d8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Unable to find aic-clli in AAI for aic-cloud-region ' + $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1049.5962295532227,

+        "y": 1811.1242694854736,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "80b5ab3d.6f3ef8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1651.08447265625,

+        "y": 2099.279275894165,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "382e3395.e82afc",

+                "e12123b4.7517"

+            ]

+        ]

+    },

+    {

+        "id": "8c6eb005.385ba",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-assign-rollback",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2766.262939453125,

+        "y": 2587.5128660202026,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "76721fa9.6f7a7",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2383.524429321289,

+        "y": 2637.930076599121,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "8c6eb005.385ba",

+                "73466628.3dbbb8",

+                "928b846e.f5c2c8"

+            ]

+        ]

+    },

+    {

+        "id": "c1b24090.d49b8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2944.59623336792,

+        "y": 2278.2630882263184,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "ecc636c8.71fe78",

+                "76721fa9.6f7a7"

+            ]

+        ]

+    },

+    {

+        "id": "ecc636c8.71fe78",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'from-preload flag is true but could not find preload information for VF module name ' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-name`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3144.179473876953,

+        "y": 2244.906032562256,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d759206d.14388",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2116.5007858276367,

+        "y": 2425.8463954925537,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "64958d02.cd8064",

+                "76721fa9.6f7a7"

+            ]

+        ]

+    },

+    {

+        "id": "64958d02.cd8064",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error retrieving preload-information\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2322.512893676758,

+        "y": 2400.4891319274902,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8af4f32.673261",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-assign-rollback",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4189.596542358398,

+        "y": 4465.985095024109,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f394576a.e4e1d8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 3801.8577575683594,

+        "y": 4512.652036190033,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "8af4f32.673261",

+                "a106598.33f8ca8",

+                "8a0f16a0.408838"

+            ]

+        ]

+    },

+    {

+        "id": "a6ff636a.1da36",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'VNFC network role '\n      + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-network-role\n      + ' is not found in VNF network list'\n      `\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1884.5963439941406,

+        "y": 2909.4576473236084,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1b07cf87.9b6fe",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'SDNC subnet id '\n      + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id\n      + ' does not have network-start-address populated'`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4214.179832458496,

+        "y": 3385.15172457695,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "319df706.15f388",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'SDNC subnet id '\n      + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id\n      + ' does not have cidr-mask populated'`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4529.17985534668,

+        "y": 3462.651731491089,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fec2cbd9.e930a8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Not able to find VNF network subnet that contains address '\n      + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-ip-address\n      `\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 3576.6798095703125,

+        "y": 3582.6517486572266,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6c1ed4b9.5ecf9c",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error reading VFC_RELATED_NETWORK_ROLE table\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2017.3740615844727,

+        "y": 3819.1801166534424,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4102f097.0a51",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Unable to find related network '\n      + $db.vnf-related-network-role[$db-related-network-index].related-network-role + ' in vnf-networks'`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2824.874122619629,

+        "y": 4004.179864883423,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "30bee8c0.434ad8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error saving vnfc to AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2201.262969970703,

+        "y": 4626.819506645203,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "52bc7cef.ddfa64",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-assign-rollback",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3678.068458557129,

+        "y": 5821.82004737854,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1254304a.7d8a4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 3291.579948425293,

+        "y": 5864.737259864807,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "52bc7cef.ddfa64",

+                "6f7485bf.c7042c",

+                "7ec70a43.dc5584"

+            ]

+        ]

+    },

+    {

+        "id": "17b97fa6.0b332",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error updating vnfc relationships in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1838.6043319702148,

+        "y": 4740.568719863892,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "43b53fc.f18d2c",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Not-found error updating vnfc relationships\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1838.0686531066895,

+        "y": 4797.5332860946655,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b0761ca.5d4cce",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error saving cp object to AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2280.5686626434326,

+        "y": 4966.8189868927,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "64e7c13b.82899",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error updating cp relationship to l3-network in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2935.5687255859375,

+        "y": 5419.041241645813,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f4e9414e.c0a39",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Not-found error updating cp relationship to l3-network\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2938.0687255859375,

+        "y": 5481.541244506836,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "94072bfe.632c28",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Error updating cp relationship to l3-network and vlan-tag in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3266.6403274536133,

+        "y": 5579.041257858276,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4462ce4a.8f7a5",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Not-found error updating cp relationship to l3-network and vlan-tag\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3269.140426635742,

+        "y": 5641.541258811951,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "cc682bd5.2eb5c8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Error creating l3-interface-ipv4-address-list object in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3958.4860305786133,

+        "y": 5050.291213989258,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1499e507.42f6db",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Error updating l3-interface-ipv4-address-list relationships in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3955.9860305786133,

+        "y": 5129.041219711304,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dac8db15.74e098",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Not-found error updating l3-interface-ipv4-address-list relationships\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3958.4857635498047,

+        "y": 5189.041226387024,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "97323f99.6212d",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Error creating l3-interface-ipv6-address-list object in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3962.235771179199,

+        "y": 5239.0412311553955,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2f312957.2b15e6",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Error updating l3-interface-ipv6-address-list relationships in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3960.9855041503906,

+        "y": 5300.2912340164185,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9f878bec.0f8958",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Not-found error updating l3-interface-ipv6-address-list relationships\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3962.2355041503906,

+        "y": 5360.291234970093,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f60ef6eb.870138",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-assign-rollback",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4372.235439300537,

+        "y": 5486.541163444519,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "11d81f8a.7859d",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 3991.996925354004,

+        "y": 5531.208375930786,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f60ef6eb.870138",

+                "97d29a04.0c0528",

+                "9ae41d25.ebedb"

+            ]

+        ]

+    },

+    {

+        "id": "dccafd0f.1af91",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-assign-rollback",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3795.7073516845703,

+        "y": 6950.985408782959,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fc515f97.dc4ef",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 3407.968574523926,

+        "y": 7001.40207862854,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "dccafd0f.1af91",

+                "8461f05b.e0d6e",

+                "4a0caeea.9a1"

+            ]

+        ]

+    },

+    {

+        "id": "bec2c422.16f948",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Not-found error updating vip-ipv4-address-list relationship to cp\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3345.7076454162598,

+        "y": 6589.735626220703,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "82534f84.1802c",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Error updating vip-ipv4-address-list relationship to cp in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3339.4579162597656,

+        "y": 6525.98616027832,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9ebbd632.ef43d8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Not-found error updating vip-ipv4-address-list relationship to cp\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3350.707649230957,

+        "y": 6277.235605239868,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1a54f803.3243e8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Error updating vip-ipv4-address-list relationship to cp in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3350.7079162597656,

+        "y": 6215.986141204834,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "41362899.a075b8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Not-found error updating vip-ipv6-address-list relationships\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2718.2076110839844,

+        "y": 6477.23561668396,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9303413c.a15fb",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Error updating vip-ipv6-address-list relationships in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2716.95760345459,

+        "y": 6419.736152648926,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dc08e935.aa2128",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Not-found error saving vip-ipv6-address-list\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2380.707588195801,

+        "y": 6363.485609054565,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ec585839.cf03a8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Error saving vip-ipv6-address-list in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2380.707588195801,

+        "y": 6309.7356061935425,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8d6accf1.493c8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Not-found error updating vip-ipv4-address-list relationships\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2726.957607269287,

+        "y": 6152.235597610474,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "38cb90b2.4e39c",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Error updating vip-ipv4-address-list relationships in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2728.2076110839844,

+        "y": 6094.735593795776,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "34a07ec7.5c1d72",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Not-found error saving vip-ipv4-address-list\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2384.457588195801,

+        "y": 6050.985589981079,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d7673076.3ac06",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Error saving vip-ipv4-address-list in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2380.707588195801,

+        "y": 5983.485586166382,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e64793d7.bf627",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'No l3-network found in AAI for network ID '\n      + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id`\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1878.2075538635254,

+        "y": 5908.485583305359,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a1d9fe5d.0f695",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Error updating vf-module relationships in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1879.4575500488281,

+        "y": 5849.735575199127,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "18d43b0c.816ff5",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"Error updating vf-module in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1031.2630081176758,

+        "y": 4280.569283485413,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d3b91e2a.6658a",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n    <parameter name=\"error-message\" value=\"`'No vf-module found in AAI for vf module ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1035.0130081176758,

+        "y": 4356.819286346436,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e283e90a.9eb6c8",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-vfmodule.log' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 418.5863952636719,

+        "y": 7918.448681354523,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d9542f83.7d0bb",

+        "type": "execute",

+        "name": "execute RestApiCallNode - PUT vf-module",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + 'vf-module-assign.json'`\" />\n    <parameter name='restapiUrl' value=\"`$prop.controller.url + $tmp.vf-module.url`\" />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"vf-module-assign\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 515.9195327758789,

+        "y": 7777.6475620269775,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "f3d88006.1d825",

+                "a685bcd2.6458d"

+            ]

+        ]

+    },

+    {

+        "id": "f3d88006.1d825",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 796.7037048339844,

+        "y": 7798.343640804291,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "193e6953.109c97"

+            ]

+        ]

+    },

+    {

+        "id": "a685bcd2.6458d",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 789.1323394775391,

+        "y": 7756.843660831451,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "193e6953.109c97"

+            ]

+        ]

+    },

+    {

+        "id": "193e6953.109c97",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 998.0624504089355,

+        "y": 7777.0126214027405,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "d6c7309a.4a629",

+                "ddd8fcd8.b0fa8"

+            ]

+        ]

+    },

+    {

+        "id": "4f53e7be.5b9088",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-assign-rollback",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1752.3126983642578,

+        "y": 7919.180991649628,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ddd8fcd8.b0fa8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1371.3599472045898,

+        "y": 7971.2046484947205,

+        "z": "565447bf.1f1598",

+        "wires": [

+            [

+                "4f53e7be.5b9088",

+                "ac1c6eaf.9a9a5",

+                "28ceaebf.a2a0e2"

+            ]

+        ]

+    },

+    {

+        "id": "d6c7309a.4a629",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error doing PUT of vf-module\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1202.5628662109375,

+        "y": 7749.5376353263855,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5ad131fa.7f772",

+        "type": "comment",

+        "name": "This should have been removed from Dublin",

+        "info": "",

+        "comments": "",

+        "x": 671.2630157470703,

+        "y": 7239.040754318237,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "3f8bd8eb.1bd018",

+        "type": "set",

+        "name": "Initialize SO 500 reponse params",

+        "xml": "<set>\n<parameter name=\"so.ack-final-indicator\" value=\"Y\" />\n<parameter name=\"so.response-code\" value=\"500\" />\n<parameter name=\"so.notification-url\" value=\"`$vf-module-topology-operation-input.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"so.svc-request-id\" value=\"`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`\" />\n<parameter name=\"so.service-type\" value=\"`$vf-module-topology-operation-input.service-information.subscription-service-type`\" />\n<parameter name=\"so.service-instance-id\" value=\"`$vf-module-topology-operation-input.service-information.service-instance-id`\" />",

+        "comments": "",

+        "x": 587.5129547119141,

+        "y": 223.76301383972168,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "c44f4709.248e68",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1956.2628936767578,

+        "y": 1126.124216079712,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "382e3395.e82afc",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1963.762939453125,

+        "y": 2078.346435546875,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e7600116.eb3ff",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1252.5129165649414,

+        "y": 1074.040759086609,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "67e4426c.6971cc",

+        "type": "set",

+        "name": "set so.reponse-code = 200",

+        "xml": "<set>\n<parameter name=\"so.response-code\" value=\"200\" />\n",

+        "comments": "",

+        "x": 1181.262939453125,

+        "y": 1017.790771484375,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "73466628.3dbbb8",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2708.7629203796387,

+        "y": 2638.068730354309,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a106598.33f8ca8",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4131.40185546875,

+        "y": 4513.6240234375,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "97d29a04.0c0528",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4313.901893615723,

+        "y": 5530.429918289185,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6f7485bf.c7042c",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3615.15185546875,

+        "y": 5867.2353515625,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8461f05b.e0d6e",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3735.15185546875,

+        "y": 7001.26318359375,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ac1c6eaf.9a9a5",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1693.2073440551758,

+        "y": 7971.9582324028015,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f60c437.45996c",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 536.9574661254883,

+        "y": 8025.709732532501,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5d70e5cf.fff80c",

+        "type": "set",

+        "name": "set so.reponse-code = 200",

+        "xml": "<set>\n<parameter name=\"so.response-code\" value=\"200\" />\n",

+        "comments": "",

+        "x": 466.9574661254883,

+        "y": 7971.68098783493,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "28ceaebf.a2a0e2",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 1574.457405090332,

+        "y": 8020.707935810089,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "4a0caeea.9a1",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 3614.8740234375,

+        "y": 7049.8740234375,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "7ec70a43.dc5584",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 3493.6240234375,

+        "y": 5912.51318359375,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "9ae41d25.ebedb",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 4197.3740234375,

+        "y": 5575.01318359375,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "8a0f16a0.408838",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 4012.3740234375,

+        "y": 4557.791015625,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "928b846e.f5c2c8",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 2592.512939453125,

+        "y": 2684.1796875,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "e12123b4.7517",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 1845.012939453125,

+        "y": 2120.012939453125,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "cff53af6.747968",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 1836.262939453125,

+        "y": 1168.7630615234375,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "fc541e57.efb67",

+        "type": "set",

+        "name": "copy vf-module data",

+        "xml": "<set>\n<parameter name='vf-module-data.'\n  value='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.' />\n",

+        "comments": "",

+        "x": 435.58421325683594,

+        "y": 7422.19614982605,

+        "z": "565447bf.1f1598",

+        "wires": []

+    },

+    {

+        "id": "b631b958.11eb48",

+        "type": "execute",

+        "name": "generate vf-module URL (sub service-instance-id)",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vf-module`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.service-topology.service-topology-identifier.service-instance-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 534.6912536621094,

+        "y": 7506.483808517456,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e5d7fa3.8c00708",

+        "type": "execute",

+        "name": "generate vf-module URL (sub vnf-id)",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{vnf-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 489.33406829833984,

+        "y": 7551.661762237549,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "62da7e05.4b2de",

+        "type": "execute",

+        "name": "generate vf-module URL (sub vf-module-id)",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vf-module.url\"/>\n    <parameter name=\"target\" value=\"{vf-module-id}\"/>\n    <parameter name=\"replacement\" value=\"`$vf-module-topology-operation-input.vf-module-information.vf-module-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 514.5127258300781,

+        "y": 7598.268753051758,

+        "z": "565447bf.1f1598",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-async.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-async.json
new file mode 100644
index 0000000..b8b048c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-async.json
@@ -0,0 +1,295 @@
+[

+    {

+        "id": "58cdaf8e.9338",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 179.8363037109375,

+        "y": 167.77080249786377,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            [

+                "b5c33869.bb8148"

+            ]

+        ]

+    },

+    {

+        "id": "b5c33869.bb8148",

+        "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": 293.12200927734375,

+        "y": 208.00891399383545,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            [

+                "34177c3d.1d3d04"

+            ]

+        ]

+    },

+    {

+        "id": "34177c3d.1d3d04",

+        "type": "method",

+        "name": "method vf-module-topology-operation-async",

+        "xml": "<method rpc='vf-module-topology-operation-async' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 314.7649230957031,

+        "y": 266.520809173584,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            [

+                "98c85507.862c28"

+            ]

+        ]

+    },

+    {

+        "id": "4dff986d.cfbfe8",

+        "type": "comment",

+        "name": "vf-module-topology-operation-async",

+        "info": "",

+        "comments": "",

+        "x": 642.9311599731445,

+        "y": 132.85714530944824,

+        "z": "720e27e0.e78d88",

+        "wires": []

+    },

+    {

+        "id": "98c85507.862c28",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 637.7291793823242,

+        "y": 419.98814606666565,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            [

+                "9c9f62a6.868f5",

+                "2c41085c.8dd918",

+                "ccddbe0b.ddbca"

+            ]

+        ]

+    },

+    {

+        "id": "9c9f62a6.868f5",

+        "type": "returnSuccess",

+        "name": "return success",

+        "xml": "<return status='success'>\n<parameter name=\"ack-final\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 842.038688659668,

+        "y": 627.2950584888458,

+        "z": "720e27e0.e78d88",

+        "wires": []

+    },

+    {

+        "id": "2c41085c.8dd918",

+        "type": "switchNode",

+        "name": "switch svc-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 848.6575927734375,

+        "y": 419.1517460346222,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            [

+                "d8c68316.b7a72",

+                "b525dffc.024fb"

+            ]

+        ]

+    },

+    {

+        "id": "d8c68316.b7a72",

+        "type": "outcome",

+        "name": "assign",

+        "xml": "<outcome value='assign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1062.419563293457,

+        "y": 309.4375765323639,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            [

+                "45cc9d2f.beb9b4"

+            ]

+        ]

+    },

+    {

+        "id": "93f4bc38.a3c71",

+        "type": "outcome",

+        "name": "unassign",

+        "xml": "<outcome value='unassign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1162.0505981445312,

+        "y": 459.37825417518616,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            [

+                "d491d98.b65f128"

+            ]

+        ]

+    },

+    {

+        "id": "b525dffc.024fb",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1062.514804840088,

+        "y": 551.8183891773224,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            [

+                "90ef12c9.0fcde"

+            ]

+        ]

+    },

+    {

+        "id": "90ef12c9.0fcde",

+        "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": 1256.7052307128906,

+        "y": 551.8184578418732,

+        "z": "720e27e0.e78d88",

+        "wires": []

+    },

+    {

+        "id": "45cc9d2f.beb9b4",

+        "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": 1434.5623970031738,

+        "y": 309.0090410709381,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dffe0c9b.30a7e",

+        "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": 1537.8124046325684,

+        "y": 409.42566990852356,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d491d98.b65f128",

+        "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": 1532.1456756591797,

+        "y": 459.09238934516907,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "516083ba.09ae5c",

+        "type": "outcome",

+        "name": "deactivate",

+        "xml": "<outcome value='deactivate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1166.1456909179688,

+        "y": 410.0923435688019,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            [

+                "dffe0c9b.30a7e"

+            ]

+        ]

+    },

+    {

+        "id": "9428c2a3.733a6",

+        "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": 1530.2886505126953,

+        "y": 360.33031582832336,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a8ae8c.55933178",

+        "type": "outcome",

+        "name": "activate",

+        "xml": "<outcome value='activate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1158.2886352539062,

+        "y": 360.99699330329895,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            [

+                "9428c2a3.733a6"

+            ]

+        ]

+    },

+    {

+        "id": "116260cc.9bfbcf",

+        "type": "outcome",

+        "name": "changeassign",

+        "xml": "<outcome value='changeassign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1176.622013092041,

+        "y": 506.9969837665558,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            [

+                "58e3fa70.7e8074"

+            ]

+        ]

+    },

+    {

+        "id": "58e3fa70.7e8074",

+        "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": 1545.717082977295,

+        "y": 506.711119890213,

+        "z": "720e27e0.e78d88",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ccddbe0b.ddbca",

+        "type": "set",

+        "name": "set skip-mdsal-update to Y",

+        "xml": "<set>\n<parameter name='skip-mdsal-update' value='Y' />\n",

+        "comments": "",

+        "x": 885.8481788635254,

+        "y": 263.24700570106506,

+        "z": "720e27e0.e78d88",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-changeassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-changeassign.json
new file mode 100755
index 0000000..6751123
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-changeassign.json
@@ -0,0 +1 @@
+[{"id":"206edd66.51e652","type":"dgstart","name":"DGSTART","outputs":1,"x":101.66666412353516,"y":82.41365432739258,"z":"fa58896c.a8e848","wires":[["5690a99b.ec8778"]]},{"id":"5690a99b.ec8778","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":214.9523696899414,"y":122.65176582336426,"z":"fa58896c.a8e848","wires":[["5b0a303e.e1d48"]]},{"id":"5b0a303e.e1d48","type":"method","name":"method vf-module-topology-operation-changeassign","xml":"<method rpc='vf-module-topology-operation-changeassign' mode='sync'>\n","comments":"","outputs":1,"x":233.0952911376953,"y":162.41365432739258,"z":"fa58896c.a8e848","wires":[["66e405b6.f01a7c"]]},{"id":"6437f4cb.316a2c","type":"comment","name":"vf-module-topology-operation-changeassign","info":"","comments":"","x":496.0115203857422,"y":29.999998092651367,"z":"fa58896c.a8e848","wires":[]},{"id":"6fdbf534.00d43c","type":"switchNode","name":"switch request-action","xml":"<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":505.1904754638672,"y":261.2707920074463,"z":"fa58896c.a8e848","wires":[["7af20766.b5fe78","2fa375b8.bda7ba"]]},{"id":"7af20766.b5fe78","type":"outcome","name":"CreateVfModuleInstance","xml":"<outcome value='CreateVfModuleInstance'>\n","comments":"","outputs":1,"x":756.2380905151367,"y":238.4136781692505,"z":"fa58896c.a8e848","wires":[["b84b0314.4c284"]]},{"id":"2fa375b8.bda7ba","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":699.9047355651855,"y":283.7946672439575,"z":"fa58896c.a8e848","wires":[["fb8a5c21.c5ba4"]]},{"id":"b84b0314.4c284","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":946.0952548980713,"y":238.41370964050293,"z":"fa58896c.a8e848","wires":[[]]},{"id":"fb8a5c21.c5ba4","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=\"If svc-action is 'changeassign' then request-action must be 'CreateVfModuleInstance'\" />\n","comments":"","x":964.9047431945801,"y":284.1279797554016,"z":"fa58896c.a8e848","wires":[]},{"id":"66e405b6.f01a7c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":170.47621154785156,"y":457.4135799407959,"z":"fa58896c.a8e848","wires":[["6fdbf534.00d43c","5401e74b.3d2138","ab370680.4d1d68","1999519.d00e0ae","499fe3f8.979a2c","dbbe7c81.45754","59a5052d.a6c78c","a99f8e3.3a5e27","89912787.66ee78"]]},{"id":"ab370680.4d1d68","type":"switchNode","name":"switch service-data.vnfs.vnf_length","xml":"<switch test='`$service-data.vnfs.vnf_length`'>\n","comments":"","outputs":1,"x":549.9999923706055,"y":392.41361904144287,"z":"fa58896c.a8e848","wires":[["b6ee91a4.3a37f","b8e5865c.c31308"]]},{"id":"b6ee91a4.3a37f","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":790.7142639160156,"y":369.55635929107666,"z":"fa58896c.a8e848","wires":[["86b8a02.25e7b6"]]},{"id":"b8e5865c.c31308","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":790.4761047363281,"y":410.5088777542114,"z":"fa58896c.a8e848","wires":[["81637a69.dc91a8"]]},{"id":"86b8a02.25e7b6","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=\"There are no VNFs defined in MD-SAL\" />\n","comments":"","x":957.3808784484863,"y":368.84211444854736,"z":"fa58896c.a8e848","wires":[]},{"id":"81637a69.dc91a8","type":"for","name":"for each vnf","xml":"<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":952.7142486572266,"y":410.1754961013794,"z":"fa58896c.a8e848","wires":[["ca245765.0e91a8"]]},{"id":"ca245765.0e91a8","type":"switchNode","name":"switch service data vnf == input vnf","xml":"<switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`'>\n","comments":"","outputs":1,"x":1204.0474662780762,"y":409.84218311309814,"z":"fa58896c.a8e848","wires":[["3f4b4e25.318c62"]]},{"id":"3f4b4e25.318c62","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1434.0475578308105,"y":409.175537109375,"z":"fa58896c.a8e848","wires":[["8721d18c.8ed4b"]]},{"id":"5401e74b.3d2138","type":"set","name":"set vnf-index to -1","xml":"<set>\n<parameter name='vnf-index' value='-1' />\n","comments":"","x":494.04759216308594,"y":330.50879096984863,"z":"fa58896c.a8e848","wires":[]},{"id":"c949c164.bfb1e","type":"set","name":"set vnf-index to idx","xml":"<set>\n<parameter name='vnf-index' value='`$idx`' />\n","comments":"","x":1755.7141952514648,"y":380.1754951477051,"z":"fa58896c.a8e848","wires":[]},{"id":"1999519.d00e0ae","type":"switchNode","name":"switch vnf-index","xml":"<switch test='`$vnf-index`'>\n","comments":"","outputs":1,"x":485.7142753601074,"y":457.17549324035645,"z":"fa58896c.a8e848","wires":[["23428438.190abc"]]},{"id":"23428438.190abc","type":"outcome","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":664.0476608276367,"y":456.5088691711426,"z":"fa58896c.a8e848","wires":[["e0dee4ef.c5ad38"]]},{"id":"e0dee4ef.c5ad38","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=\"`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`\" />\n","comments":"","x":824.0475692749023,"y":455.84217262268066,"z":"fa58896c.a8e848","wires":[]},{"id":"8721d18c.8ed4b","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1582.3810195922852,"y":408.09523582458496,"z":"fa58896c.a8e848","wires":[["c949c164.bfb1e","1d8adeec.ba3e91"]]},{"id":"1d8adeec.ba3e91","type":"break","name":"break","xml":"<break>\n","comments":"","x":1717.3809852600098,"y":429.7618217468262,"z":"fa58896c.a8e848","wires":[]},{"id":"dbbe7c81.45754","type":"switchNode","name":"switch service-data...vf-module_length","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n","comments":"","outputs":1,"x":558.3333053588867,"y":555.7469902038574,"z":"fa58896c.a8e848","wires":[["aa141bda.6d5a28","e8068e6e.b49b9"]]},{"id":"aa141bda.6d5a28","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":809.0476150512695,"y":534.556393623352,"z":"fa58896c.a8e848","wires":[["21aa7dbf.c01442"]]},{"id":"e8068e6e.b49b9","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":808.809455871582,"y":575.5089120864868,"z":"fa58896c.a8e848","wires":[["134a0350.3f0a5d"]]},{"id":"21aa7dbf.c01442","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=\"`'There are no VF modules defined in MD-SAL for VNF ' + $vf-module-topology-operation-input.vnf-information.vnf-id`\" />\n","comments":"","x":975.7142295837402,"y":533.8421487808228,"z":"fa58896c.a8e848","wires":[]},{"id":"134a0350.3f0a5d","type":"for","name":"for each vf-module","xml":"<for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n","comments":"","outputs":1,"x":971.0475997924805,"y":575.1755304336548,"z":"fa58896c.a8e848","wires":[["edc547d5.0aa318"]]},{"id":"edc547d5.0aa318","type":"switchNode","name":"switch service data vf-module == input vf-module","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":1277.380760192871,"y":574.8422660827637,"z":"fa58896c.a8e848","wires":[["318564aa.ae35ac"]]},{"id":"318564aa.ae35ac","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1547.3808135986328,"y":572.5088710784912,"z":"fa58896c.a8e848","wires":[["a8605c3c.4de66"]]},{"id":"499fe3f8.979a2c","type":"set","name":"set vf-module-index to -1","xml":"<set>\n<parameter name='vf-module-index' value='-1' />\n","comments":"","x":514.0475769042969,"y":505.5088291168213,"z":"fa58896c.a8e848","wires":[]},{"id":"9995bda.e901c4","type":"set","name":"set vf-module-index to idx","xml":"<set>\n<parameter name='vf-module-index' value='`$idx`' />\n","comments":"","x":1877.3809051513672,"y":543.5088500976562,"z":"fa58896c.a8e848","wires":[]},{"id":"59a5052d.a6c78c","type":"switchNode","name":"switch vf-module-index","xml":"<switch test='`$vf-module-index`'>\n","comments":"","outputs":1,"x":510.7142791748047,"y":623.842248916626,"z":"fa58896c.a8e848","wires":[["f812b688.df3ec8"]]},{"id":"f812b688.df3ec8","type":"outcome","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":689.047664642334,"y":623.1756248474121,"z":"fa58896c.a8e848","wires":[["c06013b1.823e"]]},{"id":"c06013b1.823e","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=\"`'Unable to find VF module ID ' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' in MD-SAL'`\" />\n","comments":"","x":849.0475730895996,"y":622.5089282989502,"z":"fa58896c.a8e848","wires":[]},{"id":"a8605c3c.4de66","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1680.71435546875,"y":571.4286108016968,"z":"fa58896c.a8e848","wires":[["9995bda.e901c4","eb5ada4d.57f188"]]},{"id":"eb5ada4d.57f188","type":"break","name":"break","xml":"<break>\n","comments":"","x":1815.7143211364746,"y":593.095196723938,"z":"fa58896c.a8e848","wires":[]},{"id":"320f662a.e7dbfa","type":"set","name":"set order-status to Created","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'\n  value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'\n  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-module-index].vf-module-data.vf-module-level-oper-status.last-action'\n  value='`$vf-module-topology-operation-input.request-information.request-action`' />\n","comments":"","x":1175.1429710388184,"y":1252.2947244644165,"z":"fa58896c.a8e848","wires":[]},{"id":"c5598d08.12175","type":"switchNode","name":"switch order-status","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1145.809555053711,"y":950.4613409042358,"z":"fa58896c.a8e848","wires":[["1a5708fa.418947","6c5dfae7.bf4834"]]},{"id":"1a5708fa.418947","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1323.8096504211426,"y":969.175669670105,"z":"fa58896c.a8e848","wires":[["b961dd8b.8c6fa"]]},{"id":"9d70d98b.f9c758","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1495.0001068115234,"y":921.4614133834839,"z":"fa58896c.a8e848","wires":[[]]},{"id":"b961dd8b.8c6fa","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=\"`'Order status is ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status + ' instead of PendingDelete'`\" />\n","comments":"","x":1509.4763069152832,"y":969.1757106781006,"z":"fa58896c.a8e848","wires":[]},{"id":"cd4935a2.274768","type":"set","name":"copy ONAP model information","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.onap-model-information.'\n   value='$vf-module-topology-operation-input.vf-module-information.onap-model-information.' />\n\n","comments":"","x":1185.8095932006836,"y":1205.6280965805054,"z":"fa58896c.a8e848","wires":[]},{"id":"e9cc2895.625258","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":1135.142879486084,"y":1300.62802028656,"z":"fa58896c.a8e848","wires":[]},{"id":"6c5dfae7.bf4834","type":"outcome","name":"PendingDelete","xml":"<outcome value='PendingDelete'>\n","comments":"","outputs":1,"x":1348.4762802124023,"y":920.7143230438232,"z":"fa58896c.a8e848","wires":[["9d70d98b.f9c758"]]},{"id":"9af7c56e.87c6e8","type":"get-resource","name":"get-resource VF_MODULE_MODEL","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODULE_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'\n  pfx='db.vf-module-model'>\n\n","comments":"","outputs":1,"x":1204.4762802124023,"y":1138.961350440979,"z":"fa58896c.a8e848","wires":[["ec94331f.572ec","aa8e07b3.dcbc28"]]},{"id":"fac5f793.94fd68","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=\"`'No model found for VF module customization UUID ' + $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`\" />\n","comments":"","x":1649.9047012329102,"y":1163.3898229599,"z":"fa58896c.a8e848","wires":[]},{"id":"ec94331f.572ec","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1474.2619705200195,"y":1119.3421812057495,"z":"fa58896c.a8e848","wires":[["d6b3fa68.162948"]]},{"id":"aa8e07b3.dcbc28","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1482.8334007263184,"y":1163.6278944015503,"z":"fa58896c.a8e848","wires":[["fac5f793.94fd68"]]},{"id":"d6b3fa68.162948","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 reading VF_MODULE_MODEL table\" />\n","comments":"","x":1649.2619018554688,"y":1118.4850816726685,"z":"fa58896c.a8e848","wires":[]},{"id":"3ac9be19.c95f12","type":"comment","name":"check removed with US622450","info":"","comments":"","x":1107.5238876342773,"y":911.4286470413208,"z":"fa58896c.a8e848","wires":[]},{"id":"df389f05.3d088","type":"call","name":"call self-serve-vfmodule-changeassign","xml":"<call module='GENERIC-RESOURCE-API' rpc='self-serve-vfmodule-changeassign' mode='sync' >\n","comments":"","outputs":1,"x":975.5951690673828,"y":789.3214473724365,"z":"fa58896c.a8e848","wires":[["3b96494d.ab7ab6","d685937f.c7e43"]]},{"id":"3b96494d.ab7ab6","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1225.3451538085938,"y":789.5714359283447,"z":"fa58896c.a8e848","wires":[["6f907cba.351524"]]},{"id":"6f907cba.351524","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Encountered error performing changeassign for self-serve vf-module resources with error: '+ $error-message`\" />\n","comments":"","x":1384.9165802001953,"y":789.2143306732178,"z":"fa58896c.a8e848","wires":[]},{"id":"82bc5f2b.daf28","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":916.0953598022461,"y":1139.4287586212158,"z":"fa58896c.a8e848","wires":[["9af7c56e.87c6e8","cd4935a2.274768","320f662a.e7dbfa","e9cc2895.625258","4973a160.64101"]]},{"id":"d685937f.c7e43","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1231.6666069030762,"y":833.4285087585449,"z":"fa58896c.a8e848","wires":[["f13b3439.d3c228"]]},{"id":"f13b3439.d3c228","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":1388.8095932006836,"y":833.4285221099854,"z":"fa58896c.a8e848","wires":[]},{"id":"4973a160.64101","type":"switchNode","name":"switch model-customization-id","xml":"<switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`'>\n","comments":"","outputs":1,"x":1184.6666946411133,"y":1074.7351503372192,"z":"fa58896c.a8e848","wires":[["c0d3eb0d.421c18"]]},{"id":"c0d3eb0d.421c18","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1389.6666946411133,"y":1074.7351331710815,"z":"fa58896c.a8e848","wires":[["5d502035.c3483"]]},{"id":"5d502035.c3483","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-information.onap-model-information.model-customization-uuid is a required input\" />\n","comments":"","x":1541.0952606201172,"y":1074.735131263733,"z":"fa58896c.a8e848","wires":[]},{"id":"48438534.93283c","type":"comment","name":"model-customization-uuid validation moved from validate-vnf-input DG","info":"","comments":"","x":1203.4166946411133,"y":1037.2351369857788,"z":"fa58896c.a8e848","wires":[]},{"id":"44948529.f6abec","type":"comment","name":"SELF-SERVE FORK","info":"","comments":"","x":795.9523849487305,"y":745.7142667770386,"z":"fa58896c.a8e848","wires":[]},{"id":"a99f8e3.3a5e27","type":"call","name":"call self-serve-vf-module-forking-logic","xml":"<call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-forking-logic' mode='sync' >\n","comments":"","outputs":1,"x":554.9681701660156,"y":685.5361366271973,"z":"fa58896c.a8e848","wires":[[]]},{"id":"89912787.66ee78","type":"switchNode","name":"switch ss.self-serve-flag","xml":"<switch test=\"`$ss.self-serve-flag`\">\n","comments":"","outputs":1,"x":511.6823272705078,"y":958.25048828125,"z":"fa58896c.a8e848","wires":[["92f63a1f.1a08e8","dca3e5a3.e9fdf8"]]},{"id":"92f63a1f.1a08e8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":734.6822624206543,"y":1139.1071319580078,"z":"fa58896c.a8e848","wires":[["82bc5f2b.daf28"]]},{"id":"dca3e5a3.e9fdf8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":734.3965606689453,"y":788.9647417068481,"z":"fa58896c.a8e848","wires":[["df389f05.3d088"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-deactivate.json
new file mode 100644
index 0000000..c69caaa
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-deactivate.json
@@ -0,0 +1 @@
+[{"id":"13071f3.b7d9ce1","type":"dgstart","name":"DGSTART","outputs":1,"x":100,"y":82.85714721679688,"z":"9879faaf.578818","wires":[["aeabe994.f8df78"]]},{"id":"aeabe994.f8df78","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.28571319580078,"y":123.09526062011719,"z":"9879faaf.578818","wires":[["396a8522.a9e2ca"]]},{"id":"396a8522.a9e2ca","type":"method","name":"method vf-module-topology-operation-deactivate","xml":"<method rpc='vf-module-topology-operation-deactivate' mode='sync'>\n","comments":"","outputs":1,"x":225.09529876708984,"y":162.8571434020996,"z":"9879faaf.578818","wires":[["bd866b95.6f7af8"]]},{"id":"6558f1be.58032","type":"comment","name":"vf-module-topology-operation-deactivate","info":"","comments":"","x":494.34485626220703,"y":30.443490982055664,"z":"9879faaf.578818","wires":[]},{"id":"88623168.6874f","type":"switchNode","name":"switch request-action","xml":"<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":503.52381134033203,"y":261.7142848968506,"z":"9879faaf.578818","wires":[["6a841189.d0d6b","75789769.e51bc8"]]},{"id":"6a841189.d0d6b","type":"outcome","name":"DeleteVfModuleInstance","xml":"<outcome value='DeleteVfModuleInstance'>\n","comments":"","outputs":1,"x":765.5714263916016,"y":238.85717105865479,"z":"9879faaf.578818","wires":[["8cc46eff.ba0dc"]]},{"id":"75789769.e51bc8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":709.2380714416504,"y":284.2381601333618,"z":"9879faaf.578818","wires":[["16129ba.dc43964"]]},{"id":"8cc46eff.ba0dc","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":955.4285907745361,"y":238.85720252990723,"z":"9879faaf.578818","wires":[[]]},{"id":"16129ba.dc43964","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=\"If svc-action is 'deactivate' then request-action must be 'DeleteVfModuleInstance'\" />\n","comments":"","x":974.2380790710449,"y":284.5714726448059,"z":"9879faaf.578818","wires":[]},{"id":"bd866b95.6f7af8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":163.33333587646484,"y":627.8571338653564,"z":"9879faaf.578818","wires":[["88623168.6874f","1049d50a.0bf20b","d78c8798.03c208","e4675d09.2b00d","4f2b2a2c.598fa4","fe8ce13.f8c932","23a16cba.a08e54","68811534.7548ec","37836293.8a32be","bcec521d.e4f3f","ecefd25.6df343","7fdaa4ba.1e989c","6479e61d.234e48","d5cf2da3.75dd1"]]},{"id":"d78c8798.03c208","type":"switchNode","name":"switch service-data.vnfs.vnf_length","xml":"<switch test='`$service-data.vnfs.vnf_length`'>\n","comments":"","outputs":1,"x":549.9999847412109,"y":406.1904602050781,"z":"9879faaf.578818","wires":[["a8fe6112.36125","20ca97dd.7de2c8"]]},{"id":"a8fe6112.36125","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":790.7142562866211,"y":383.3332004547119,"z":"9879faaf.578818","wires":[["7fc607f0.18d098"]]},{"id":"20ca97dd.7de2c8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":790.4760971069336,"y":424.2857189178467,"z":"9879faaf.578818","wires":[["e1eb34fc.63e7a8"]]},{"id":"7fc607f0.18d098","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=\"There are no VNFs defined in MD-SAL\" />\n","comments":"","x":957.3808708190918,"y":382.6189556121826,"z":"9879faaf.578818","wires":[]},{"id":"e1eb34fc.63e7a8","type":"for","name":"for each vnf","xml":"<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":952.714241027832,"y":423.95233726501465,"z":"9879faaf.578818","wires":[["978adb95.1c9808"]]},{"id":"978adb95.1c9808","type":"switchNode","name":"switch service data vnf == input vnf","xml":"<switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`'>\n","comments":"","outputs":1,"x":1204.0474586486816,"y":423.6190242767334,"z":"9879faaf.578818","wires":[["2370e2ab.dca6be"]]},{"id":"2370e2ab.dca6be","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1434.047550201416,"y":422.95237827301025,"z":"9879faaf.578818","wires":[["30b4374c.141a18"]]},{"id":"1049d50a.0bf20b","type":"set","name":"set vnf-index to -1","xml":"<set>\n<parameter name='vnf-index' value='-1' />\n","comments":"","x":499.047607421875,"y":337.6189594268799,"z":"9879faaf.578818","wires":[]},{"id":"8cbdf2c0.29c63","type":"set","name":"set vnf-index to idx","xml":"<set>\n<parameter name='vnf-index' value='`$idx`' />\n","comments":"","x":1755.7141876220703,"y":393.95233631134033,"z":"9879faaf.578818","wires":[]},{"id":"e4675d09.2b00d","type":"switchNode","name":"switch vnf-index","xml":"<switch test='`$vnf-index`'>\n","comments":"","outputs":1,"x":489.04761505126953,"y":474.2856559753418,"z":"9879faaf.578818","wires":[["47db849e.30270c"]]},{"id":"47db849e.30270c","type":"outcome","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":667.3810005187988,"y":473.61903190612793,"z":"9879faaf.578818","wires":[["dc1e72ee.c74b3"]]},{"id":"dc1e72ee.c74b3","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=\"`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`\" />\n","comments":"","x":827.3809089660645,"y":472.952335357666,"z":"9879faaf.578818","wires":[]},{"id":"30b4374c.141a18","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1582.3810119628906,"y":421.8720769882202,"z":"9879faaf.578818","wires":[["8cbdf2c0.29c63","3a37ad6f.aa2402"]]},{"id":"3a37ad6f.aa2402","type":"break","name":"break","xml":"<break>\n","comments":"","x":1717.3809776306152,"y":443.5386629104614,"z":"9879faaf.578818","wires":[]},{"id":"fe8ce13.f8c932","type":"switchNode","name":"switch service-data...vf-module_length","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n","comments":"","outputs":1,"x":563.3332977294922,"y":596.1904850006104,"z":"9879faaf.578818","wires":[["b0abce56.c29c2","9790b40d.9d6b28"]]},{"id":"b0abce56.c29c2","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":814.047607421875,"y":574.999888420105,"z":"9879faaf.578818","wires":[["f30c800c.a6fd4"]]},{"id":"9790b40d.9d6b28","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":813.8094482421875,"y":615.9524068832397,"z":"9879faaf.578818","wires":[["ba9a5b3d.831648"]]},{"id":"f30c800c.a6fd4","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=\"`'There are no VF modules defined in MD-SAL for VNF ' + $vf-module-topology-operation-input.vnf-information.vnf-id`\" />\n","comments":"","x":980.7142219543457,"y":574.2856435775757,"z":"9879faaf.578818","wires":[]},{"id":"ba9a5b3d.831648","type":"for","name":"for each vf-module","xml":"<for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n","comments":"","outputs":1,"x":976.0475921630859,"y":615.6190252304077,"z":"9879faaf.578818","wires":[["7616e353.b44a6c"]]},{"id":"7616e353.b44a6c","type":"switchNode","name":"switch service data vf-module == input vf-module","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":1282.3807525634766,"y":615.2857608795166,"z":"9879faaf.578818","wires":[["1ba3253d.82b1bb"]]},{"id":"1ba3253d.82b1bb","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1552.3808059692383,"y":612.9523658752441,"z":"9879faaf.578818","wires":[["ea9fdaef.8b5c38"]]},{"id":"4f2b2a2c.598fa4","type":"set","name":"set vf-module-index to -1","xml":"<set>\n<parameter name='vf-module-index' value='-1' />\n","comments":"","x":519.0475921630859,"y":530.9523220062256,"z":"9879faaf.578818","wires":[]},{"id":"deaa7aac.717e78","type":"set","name":"set vf-module-index to idx","xml":"<set>\n<parameter name='vf-module-index' value='`$idx`' />\n","comments":"","x":1882.3808975219727,"y":583.9523448944092,"z":"9879faaf.578818","wires":[]},{"id":"23a16cba.a08e54","type":"switchNode","name":"switch vf-module-index","xml":"<switch test='`$vf-module-index`'>\n","comments":"","outputs":1,"x":510.7142753601074,"y":667.6190347671509,"z":"9879faaf.578818","wires":[["bc010e95.612a6"]]},{"id":"bc010e95.612a6","type":"outcome","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":689.0476608276367,"y":666.952410697937,"z":"9879faaf.578818","wires":[["dec2ac79.d9a78"]]},{"id":"dec2ac79.d9a78","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=\"`'Unable to find VF module ID ' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' in MD-SAL'`\" />\n","comments":"","x":849.0475692749023,"y":666.2857141494751,"z":"9879faaf.578818","wires":[]},{"id":"ea9fdaef.8b5c38","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1685.7143478393555,"y":611.8721055984497,"z":"9879faaf.578818","wires":[["deaa7aac.717e78","f772ee69.83042"]]},{"id":"f772ee69.83042","type":"break","name":"break","xml":"<break>\n","comments":"","x":1820.71431350708,"y":633.5386915206909,"z":"9879faaf.578818","wires":[]},{"id":"68811534.7548ec","type":"set","name":"set order-status to PendingDelete","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'\n  value='PendingDelete' />\n","comments":"","x":548.3334045410156,"y":1121.9047660827637,"z":"9879faaf.578818","wires":[]},{"id":"37836293.8a32be","type":"set","name":"set vf-module-status to PendingDelete","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-topology.vf-module-assignments.vf-module-status' value='PendingDelete' />\n","comments":"","x":559.6667175292969,"y":943.5715074539185,"z":"9879faaf.578818","wires":[]},{"id":"bcec521d.e4f3f","type":"save","name":"update vf-module to PendingDelete","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"vf-module\"\n   key=\"vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id\n      AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"orchestration-status\" value=\"PendingDelete\" />\n","comments":"","outputs":1,"x":550.0000915527344,"y":1005.2381162643433,"z":"9879faaf.578818","wires":[["ef5b4d43.e0382","d6456b4b.1e9658"]]},{"id":"cd129c6d.597f","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=\"`'No vf-module found in AAI for vf module ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`\" />\n","comments":"","x":942.8573112487793,"y":1031.6667289733887,"z":"9879faaf.578818","wires":[]},{"id":"ef5b4d43.e0382","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":782.6907348632812,"y":987.1906127929688,"z":"9879faaf.578818","wires":[["28df6473.5f7f9c"]]},{"id":"d6456b4b.1e9658","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":791.2621650695801,"y":1031.4763259887695,"z":"9879faaf.578818","wires":[["cd129c6d.597f"]]},{"id":"28df6473.5f7f9c","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 updating vf-module in AAI\" />\n","comments":"","x":945.5479049682617,"y":988.42893409729,"z":"9879faaf.578818","wires":[]},{"id":"ecefd25.6df343","type":"set","name":"copy input data","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.'\n   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-module-index].vf-module-data.request-information.'\n   value='$vf-module-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.'\n   value='$vf-module-topology-operation-input.service-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.'\n   value='$vf-module-topology-operation-input.vnf-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.'\n   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-module-index].vf-module-data.vf-module-request-input.'\n   value='$vf-module-topology-operation-input.vf-module-request-input.' />\n\n","comments":"","x":488.3333435058594,"y":1075.2381238937378,"z":"9879faaf.578818","wires":[]},{"id":"7fdaa4ba.1e989c","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":486.66668701171875,"y":1171.9048109054565,"z":"9879faaf.578818","wires":[]},{"id":"6479e61d.234e48","type":"switchNode","name":"switch vlan-vnfc-instance-group_length","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`'>\n","comments":"","outputs":1,"x":563.3332977294922,"y":756.1904830932617,"z":"9879faaf.578818","wires":[["be1e70ac.411ba","be0d4928.ca9998","20551dc0.451a22"]]},{"id":"be1e70ac.411ba","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":796.1904754638672,"y":709.047571182251,"z":"9879faaf.578818","wires":[["3a138253.a29bde"]]},{"id":"be0d4928.ca9998","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":796.1903667449951,"y":754.761833190918,"z":"9879faaf.578818","wires":[["3a138253.a29bde"]]},{"id":"20551dc0.451a22","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":794.7618179321289,"y":803.8094940185547,"z":"9879faaf.578818","wires":[["f82088b8.905898"]]},{"id":"3a138253.a29bde","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":924.7618713378906,"y":729.0475482940674,"z":"9879faaf.578818","wires":[[]]},{"id":"f82088b8.905898","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-vlan-tagging-deactivate","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-deactivate' mode='sync' >\n","comments":"","outputs":1,"x":1129.2857208251953,"y":803.2855625152588,"z":"9879faaf.578818","wires":[["80fabf7b.14c17"]]},{"id":"80fabf7b.14c17","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1467.618984222412,"y":802.619140625,"z":"9879faaf.578818","wires":[["4fa8ba6e.f33474"]]},{"id":"4fa8ba6e.f33474","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n","comments":"","x":1617.618881225586,"y":800.9522953033447,"z":"9879faaf.578818","wires":[]},{"id":"d5cf2da3.75dd1","type":"for","name":"for each vm-type","xml":"<for silentFailure='true' index='vm-type-index' start='0'\n  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":492.85713958740234,"y":879.9998893737793,"z":"9879faaf.578818","wires":[["ddc0e538.28e1d8"]]},{"id":"ddc0e538.28e1d8","type":"for","name":"for each vnfc","xml":"<for silentFailure='true' index='vnfc-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":669.5238800048828,"y":879.3810844421387,"z":"9879faaf.578818","wires":[["380a3916.dbad36"]]},{"id":"380a3916.dbad36","type":"save","name":"update vnfc to PendingDelete","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"vnfc\"\n   key=\"vnfc.vnfc-name = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"orchestration-status\" value=\"PendingDelete\" />\n","comments":"","outputs":1,"x":884.2857513427734,"y":878.5713691711426,"z":"9879faaf.578818","wires":[["6aa9d43c.d59dfc","ffb27a5e.b18188"]]},{"id":"191b9efa.36be11","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=\"`'No vnfc found in AAI for vnfc name ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`\" />\n","comments":"","x":1247.1427955627441,"y":897.5714683532715,"z":"9879faaf.578818","wires":[]},{"id":"6aa9d43c.d59dfc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1084.119155883789,"y":854.0953531265259,"z":"9879faaf.578818","wires":[["2b9f56c7.63713a"]]},{"id":"ffb27a5e.b18188","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1092.690586090088,"y":898.3810663223267,"z":"9879faaf.578818","wires":[["191b9efa.36be11"]]},{"id":"2b9f56c7.63713a","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 updating vnfc in AAI\" />\n","comments":"","x":1249.8333892822266,"y":854.3336734771729,"z":"9879faaf.578818","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-unassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-unassign.json
new file mode 100755
index 0000000..6a50796
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation-unassign.json
@@ -0,0 +1,2262 @@
+[

+    {

+        "id": "b1376276.19b7a",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 153.75,

+        "y": 73.75,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "7de7be4b.3d07e"

+            ]

+        ]

+    },

+    {

+        "id": "7de7be4b.3d07e",

+        "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": 269.03570556640625,

+        "y": 113.32144737243652,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "95fa486d.37e488"

+            ]

+        ]

+    },

+    {

+        "id": "95fa486d.37e488",

+        "type": "method",

+        "name": "method vf-module-topology-operation-unassign",

+        "xml": "<method rpc='vf-module-topology-operation-unassign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 275.84529876708984,

+        "y": 153.74999618530273,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "899e894a.a15b88"

+            ]

+        ]

+    },

+    {

+        "id": "c7f5605f.01389",

+        "type": "comment",

+        "name": "vf-module-topology-operation-unassign",

+        "info": "",

+        "comments": "",

+        "x": 548.094856262207,

+        "y": 21.33634376525879,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "b8d19f16.02d9",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 558.9404602050781,

+        "y": 370.94047355651855,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "a16d41de.fdf37",

+                "3b724a86.e852d6"

+            ]

+        ]

+    },

+    {

+        "id": "a16d41de.fdf37",

+        "type": "outcome",

+        "name": "DeleteVfModuleInstance",

+        "xml": "<outcome value='DeleteVfModuleInstance'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 820.9880752563477,

+        "y": 348.08335971832275,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "f4130065.1b2d6"

+            ]

+        ]

+    },

+    {

+        "id": "3b724a86.e852d6",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 764.6547203063965,

+        "y": 393.4643487930298,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "86c9269e.57f0e8"

+            ]

+        ]

+    },

+    {

+        "id": "f4130065.1b2d6",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1010.8452396392822,

+        "y": 348.0833911895752,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "86c9269e.57f0e8",

+        "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=\"If svc-action is 'deactivate' then request-action must be 'DeleteVfModuleInstance'\" />\n",

+        "comments": "",

+        "x": 1029.654727935791,

+        "y": 393.7976613044739,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "99d54dd7.bac17",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 181.36910247802734,

+        "y": 1465.6547031402588,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "be7c08d6.b7fa78",

+                "33647515.ff88ea",

+                "c0e122eb.07451",

+                "7c7a95cf.960aec",

+                "dfd06feb.ff6ed",

+                "739034c9.2b1aac",

+                "5878a219.db4e8c",

+                "59360709.c66608",

+                "858b4f7.87351b"

+            ]

+        ]

+    },

+    {

+        "id": "ed32804a.e1a1f",

+        "type": "set",

+        "name": "set vnf-index to -1",

+        "xml": "<set>\n<parameter name='vnf-index' value='-1' />\n",

+        "comments": "",

+        "x": 554.4642562866211,

+        "y": 446.84514808654785,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "2837eda.666b812",

+        "type": "switchNode",

+        "name": "switch order-status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 558.0357437133789,

+        "y": 1268.9880828857422,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "8a2f7c28.f48a4",

+                "cc7bf29.51df51"

+            ]

+        ]

+    },

+    {

+        "id": "8a2f7c28.f48a4",

+        "type": "outcome",

+        "name": "Created",

+        "xml": "<outcome value='Created'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 733.8691139221191,

+        "y": 1231.4881148338318,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "dbdbf33c.f14c2"

+            ]

+        ]

+    },

+    {

+        "id": "cc7bf29.51df51",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 733.0357322692871,

+        "y": 1288.9880657196045,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "e72b13ca.99788"

+            ]

+        ]

+    },

+    {

+        "id": "dbdbf33c.f14c2",

+        "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=\"Order status must not be Created\" />\n",

+        "comments": "",

+        "x": 902.2023544311523,

+        "y": 1231.4880442619324,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "e72b13ca.99788",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 908.0357437133789,

+        "y": 1288.6547412872314,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "33647515.ff88ea",

+        "type": "update",

+        "name": "update EIPAM_IP_ASSIGNMENTS to PENDING_DELETE...",

+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\nkey=\"UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id\" >",

+        "comments": "",

+        "outputs": 1,

+        "x": 684.7024688720703,

+        "y": 1385.654733657837,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "8e4f49fb.bc44b8"

+            ]

+        ]

+    },

+    {

+        "id": "be7c08d6.b7fa78",

+        "type": "set",

+        "name": "set status variable",

+        "xml": "<set>\n<parameter name='tmp.status' value=\"`'PENDING_DELETE_' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id`\" />\n",

+        "comments": "",

+        "x": 554.7024383544922,

+        "y": 1338.9880657196045,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "8e4f49fb.bc44b8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 989.7023773193359,

+        "y": 1383.9880332946777,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "13abc175.87ad4f"

+            ]

+        ]

+    },

+    {

+        "id": "13abc175.87ad4f",

+        "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 updating EIPAM_IP_ASSIGNMENTS table\" />\n",

+        "comments": "",

+        "x": 1179.7024040222168,

+        "y": 1383.7977685928345,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "7c7a95cf.960aec",

+        "type": "execute",

+        "name": "execute EIPAM unassign IP addresses",

+        "xml": "<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"unassignIPAddress\">\n<parameter name=\"deleteEIPAM_status\" value=\"`$tmp.status`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 618.0357666015625,

+        "y": 1480.6547546386719,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "3527442c.98799c"

+            ]

+        ]

+    },

+    {

+        "id": "3527442c.98799c",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 854.702392578125,

+        "y": 1480.654697418213,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "6bf2e362.4819cc"

+            ]

+        ]

+    },

+    {

+        "id": "6bf2e362.4819cc",

+        "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 in EIPAM unassign IP address\" />\n",

+        "comments": "",

+        "x": 1044.7024192810059,

+        "y": 1480.4644327163696,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "c0e122eb.07451",

+        "type": "for",

+        "name": "for each vm-type",

+        "xml": "<for silentFailure='true' index='vm-type-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 549.7024230957031,

+        "y": 1525.654715538025,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "2a98414e.b2fd6e"

+            ]

+        ]

+    },

+    {

+        "id": "2a98414e.b2fd6e",

+        "type": "for",

+        "name": "for each vm",

+        "xml": "<for silentFailure='true' index='vm-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 744.7024536132812,

+        "y": 1524.987723350525,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "b1136fdc.257c9"

+            ]

+        ]

+    },

+    {

+        "id": "37c4231.32254dc",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1451.3695220947266,

+        "y": 1523.3203258514404,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "8584cb05.406b38"

+            ]

+        ]

+    },

+    {

+        "id": "85031a7.a928fe8",

+        "type": "comment",

+        "name": "Not a failure",

+        "info": "",

+        "comments": "",

+        "x": 1729.7025184631348,

+        "y": 1521.654128074646,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "8584cb05.406b38",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID\"/>\n<parameter name=\"field3\" value=\"`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Failed to insert VIPR_CONFIGURATION record\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1597.369457244873,

+        "y": 1523.3209590911865,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b1136fdc.257c9",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 913.0358467102051,

+        "y": 1523.9875679016113,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "a0575bd.48cada8"

+            ]

+        ]

+    },

+    {

+        "id": "a0575bd.48cada8",

+        "type": "delete",

+        "name": "delete any records in VIPR_CONFIGURATION",

+        "xml": "<delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='DELETE from VIPR_CONFIGURATION WHERE vnf_id = $service-data.vnfs.vnf[$vnf-index].vnf-id\n     AND ecomp_service_instance_id = $service-data.service-information.service-instance-id\n     AND vm_name = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 1199.7025604248047,

+        "y": 1523.6549978256226,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "37c4231.32254dc"

+            ]

+        ]

+    },

+    {

+        "id": "2f60d84c.fb5928",

+        "type": "comment",

+        "name": "Remove VF Module from service data",

+        "info": "",

+        "comments": "",

+        "x": 654.0357360839844,

+        "y": 2706.2263040542603,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "3813429f.be706e",

+        "type": "switchNode",

+        "name": "switch vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 721.4681549072266,

+        "y": 2762.3295345306396,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "7c4378ea.a15b28",

+                "532c6a72.d9fff4"

+            ]

+        ]

+    },

+    {

+        "id": "7c4378ea.a15b28",

+        "type": "outcome",

+        "name": "1",

+        "xml": "<outcome value='1'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 935.1349182128906,

+        "y": 2666.5673971176147,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "494887d.7d6dc78"

+            ]

+        ]

+    },

+    {

+        "id": "494887d.7d6dc78",

+        "type": "set",

+        "name": "Remove vf modules",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.\" value=\"\"/>\n\n",

+        "comments": "",

+        "x": 1107.1346893310547,

+        "y": 2666.5675163269043,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "532c6a72.d9fff4",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 935.4682159423828,

+        "y": 2856.662570953369,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "eef5a74e.f28dd8"

+            ]

+        ]

+    },

+    {

+        "id": "dd2d4dd2.91285",

+        "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": 694.0357666015625,

+        "y": 2938.845157623291,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "dfd06feb.ff6ed",

+        "type": "set",

+        "name": "set service-type",

+        "xml": "<set>\n<parameter name='service-data.service-information.service-type' value='`$service-data.service-information.subscription-service-type`' />\n",

+        "comments": "EIPAM plug-in needs this attribute set with this name",

+        "x": 546.3690795898438,

+        "y": 1431.5743961334229,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "370b0e3d.3ff8b2",

+        "type": "switchNode",

+        "name": "switch vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1568.5356903076172,

+        "y": 1842.7411737442017,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "5ba8b449.8e391c"

+            ]

+        ]

+    },

+    {

+        "id": "5ba8b449.8e391c",

+        "type": "outcome",

+        "name": "1",

+        "xml": "<outcome value='1'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1752.8213958740234,

+        "y": 1842.7411603927612,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "aa8c9f37.4bce"

+            ]

+        ]

+    },

+    {

+        "id": "e11fc780.b18798",

+        "type": "update",

+        "name": "update EIPAM_IP_ASSIGNMENTS to PENDING_DELETE...",

+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\nkey=\"UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $aai.instance-group.instance-group[$ig-index].id\" >",

+        "comments": "",

+        "outputs": 1,

+        "x": 2182.8213500976562,

+        "y": 1842.5508184432983,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f93d876b.e7d198",

+        "type": "set",

+        "name": "set status variable",

+        "xml": "<set>\n<parameter name='tmp.status' value=\"`'PENDING_DELETE_' + $aai.instance-group.instance-group[$ig-index].id`\" />\n",

+        "comments": "",

+        "x": 2052.8213119506836,

+        "y": 1795.8841905593872,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "4ad69f8c.fd9c",

+        "type": "execute",

+        "name": "execute EIPAM unassign IP addresses",

+        "xml": "<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"unassignIPAddress\">\n<parameter name=\"deleteEIPAM_status\" value=\"`$tmp.status`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2117.821319580078,

+        "y": 1887.550862312317,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dd83f99f.5833e8",

+        "type": "comment",

+        "name": "roll back EIPAM floating addresses",

+        "info": "",

+        "comments": "",

+        "x": 2162.1070404052734,

+        "y": 1749.6940167744951,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "739034c9.2b1aac",

+        "type": "switchNode",

+        "name": "switch network-instance-group-function",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 616.3691024780273,

+        "y": 1658.2411069869995,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "a7739829.bdaca8",

+                "e35d14ad.4989f8"

+            ]

+        ]

+    },

+    {

+        "id": "a7739829.bdaca8",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 841.3690719604492,

+        "y": 1626.5744400024414,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "4ed1de62.95a2a"

+            ]

+        ]

+    },

+    {

+        "id": "e35d14ad.4989f8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 841.1309356689453,

+        "y": 1697.5268354415894,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "4c983dc2.77aa64"

+            ]

+        ]

+    },

+    {

+        "id": "4ed1de62.95a2a",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 968.0358085632324,

+        "y": 1624.907772064209,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4c983dc2.77aa64",

+        "type": "get-resource",

+        "name": "get-resource instance group",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n  resource=\"instance-groups\" \n  key=\"instance-group.instance-group-function = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function\n    AND instance-group.instance-group-type = 'L3-NETWORK'\"\n  pfx='aai.instance-group' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1037.202491760254,

+        "y": 1696.5744123458862,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "ddac01f.3923f"

+            ]

+        ]

+    },

+    {

+        "id": "ddac01f.3923f",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1238.8691215515137,

+        "y": 1697.4077863693237,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "7a32823c.a674bc"

+            ]

+        ]

+    },

+    {

+        "id": "7107e45f.25e14c",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1388.8691101074219,

+        "y": 1895.741319656372,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "370b0e3d.3ff8b2",

+                "d7a2d2c6.caa96"

+            ]

+        ]

+    },

+    {

+        "id": "aa8c9f37.4bce",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1878.8690299987793,

+        "y": 1842.4078741073608,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "f93d876b.e7d198",

+                "e11fc780.b18798",

+                "4ad69f8c.fd9c"

+            ]

+        ]

+    },

+    {

+        "id": "d7a2d2c6.caa96",

+        "type": "for",

+        "name": "for each network-instance-group",

+        "xml": "<for index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1588.869041442871,

+        "y": 1950.7412090301514,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "612f4ca4.68c134"

+            ]

+        ]

+    },

+    {

+        "id": "612f4ca4.68c134",

+        "type": "switchNode",

+        "name": "network-instance-group-ids match?",

+        "xml": "<switch test='`$aai.instance-group.instance-group[$ig-index].id\n  == $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1893.868881225586,

+        "y": 1950.7412548065186,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "829c6209.93b3d"

+            ]

+        ]

+    },

+    {

+        "id": "829c6209.93b3d",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2115.5356521606445,

+        "y": 1949.4080333709717,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "d2319297.5eefb"

+            ]

+        ]

+    },

+    {

+        "id": "d2319297.5eefb",

+        "type": "for",

+        "name": "for each network",

+        "xml": "<for index='network-index' start='0' end='`$service-data.network-instance-groups.network-instance-group[$nig-index].networks.network_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2271.249988555908,

+        "y": 1948.1221590042114,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "adc6d40c.0d2aa8"

+            ]

+        ]

+    },

+    {

+        "id": "adc6d40c.0d2aa8",

+        "type": "set",

+        "name": "clear vlan-tag-id and set network-status to unassigned",

+        "xml": "<set>\n<parameter name='service-data.network-instance-groups.network-instance-group[$nig-index].networks.network[$network-index].vlan-tag-id'\n  value='' />\n<parameter name='service-data.network-instance-groups.network-instance-group[$nig-index].networks.network[$network-index].network-status'\n  value='unassigned' />\n",

+        "comments": "",

+        "x": 2582.678421020508,

+        "y": 1946.693621635437,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "7a32823c.a674bc",

+        "type": "for",

+        "name": "for each returned instance-group",

+        "xml": "<for index='ig-index' start='0' end='`$aai.instance-group.instance-group_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1462.369125366211,

+        "y": 1694.407790184021,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "7f3d0cd9.9335a4"

+            ]

+        ]

+    },

+    {

+        "id": "7f3d0cd9.9335a4",

+        "type": "for",

+        "name": "for each relationship",

+        "xml": "<for index='rel-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1714.0357666015625,

+        "y": 1693.4077892303467,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "e7616a37.994598"

+            ]

+        ]

+    },

+    {

+        "id": "e7616a37.994598",

+        "type": "for",

+        "name": "for each relationship-data",

+        "xml": "<for index='reldata-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1940.7024383544922,

+        "y": 1692.7411632537842,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "5e1c0be4.f2c024"

+            ]

+        ]

+    },

+    {

+        "id": "5e1c0be4.f2c024",

+        "type": "switchNode",

+        "name": "switch relationship-key == service-instance.service-instance-id",

+        "xml": "<switch test=\"`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-key\n  == 'service-instance.service-instance-id'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2299.0360260009766,

+        "y": 1692.7410821914673,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "8aa0de51.9fee1"

+            ]

+        ]

+    },

+    {

+        "id": "8aa0de51.9fee1",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2595.7024841308594,

+        "y": 1692.741114616394,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "5d06f26a.4726bc"

+            ]

+        ]

+    },

+    {

+        "id": "5d06f26a.4726bc",

+        "type": "switchNode",

+        "name": "switch relationship-value == this service-instance-id",

+        "xml": "<switch test='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-value\n  == $service-data.service-information.service-instance-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2860.702308654785,

+        "y": 1692.741084098816,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "acfd65c3.377028"

+            ]

+        ]

+    },

+    {

+        "id": "acfd65c3.377028",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3120.702278137207,

+        "y": 1692.7410745620728,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "7107e45f.25e14c"

+            ]

+        ]

+    },

+    {

+        "id": "5878a219.db4e8c",

+        "type": "for",

+        "name": "for each vm-type",

+        "xml": "<for silentFailure='true' index='vm-type-index' start='0'\n  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 557.2024383544922,

+        "y": 2261.4879655838013,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "5c388a57.8451f4"

+            ]

+        ]

+    },

+    {

+        "id": "74f3496a.11f5e8",

+        "type": "for",

+        "name": "for each vnfc",

+        "xml": "<for silentFailure='true' index='vnfc-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 908.8692054748535,

+        "y": 2355.8692111968994,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "6e31430a.e7046c"

+            ]

+        ]

+    },

+    {

+        "id": "db59b482.778a68",

+        "type": "save",

+        "name": "delete vnfc in A&AI",

+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"vnfc\"\n   key=\"vnfc.vnfc-name = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1220.2977104187012,

+        "y": 2398.39275932312,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a3b5957.afe4668",

+        "type": "comment",

+        "name": "check removed with US622450",

+        "info": "",

+        "comments": "",

+        "x": 1112.3214569091797,

+        "y": 1258.955403804779,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "ba151b16.c9aed8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1516.368709564209,

+        "y": 2345.654547691345,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "65b58039.7e2b7",

+                "f646ff88.473e7"

+            ]

+        ]

+    },

+    {

+        "id": "f646ff88.473e7",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:naming-policy-generate-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1828.6544456481934,

+        "y": 2370.226065635681,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "65b58039.7e2b7",

+        "type": "set",

+        "name": "set variables for deleting VNFC name",

+        "xml": "<set>\n<parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id`' />\n<parameter name='naming-policy-generate-name-input.vm-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vnfc-index]`' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n",

+        "comments": "",

+        "x": 1748.4164009094238,

+        "y": 2323.0831356048584,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "5760ffaf.f2c0b",

+        "type": "switchNode",

+        "name": "switch vnfc-name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1216.7023811340332,

+        "y": 2318.987804412842,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "e34267dd.8616f8",

+                "c505b4ad.08ec78"

+            ]

+        ]

+    },

+    {

+        "id": "e34267dd.8616f8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1386.7023582458496,

+        "y": 2288.987837791443,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "a953cb8a.ae16d8"

+            ]

+        ]

+    },

+    {

+        "id": "c505b4ad.08ec78",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1386.7023162841797,

+        "y": 2345.1783514022827,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "ba151b16.c9aed8"

+            ]

+        ]

+    },

+    {

+        "id": "a953cb8a.ae16d8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1516.7022018432617,

+        "y": 2287.321189880371,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d1fd43a0.c5972",

+        "type": "comment",

+        "name": "Rollback any generated VM and VNFC names",

+        "info": "",

+        "comments": "",

+        "x": 605.035514831543,

+        "y": 2213.9879760742188,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "5c388a57.8451f4",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 721.1066665649414,

+        "y": 2261.8932523727417,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "658e7b54.c4ae14",

+                "74f3496a.11f5e8",

+                "80a95d2.4a1e6a"

+            ]

+        ]

+    },

+    {

+        "id": "658e7b54.c4ae14",

+        "type": "for",

+        "name": "for each vm-name",

+        "xml": "<for silentFailure='true' index='vm-name-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 929.4399032592773,

+        "y": 2181.893494606018,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "715a9489.5a448c"

+            ]

+        ]

+    },

+    {

+        "id": "715a9489.5a448c",

+        "type": "switchNode",

+        "name": "switch vm-name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1124.4399490356445,

+        "y": 2183.560133934021,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "e42ca586.c51bb8",

+                "1036f257.67822e"

+            ]

+        ]

+    },

+    {

+        "id": "e42ca586.c51bb8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1277.7732620239258,

+        "y": 2155.226799964905,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "d2cff0c6.47fcb"

+            ]

+        ]

+    },

+    {

+        "id": "d2cff0c6.47fcb",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1407.773105621338,

+        "y": 2153.560152053833,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f381303a.a670f",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1409.4400100708008,

+        "y": 2213.560112953186,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "b0dc6051.1f8f1",

+                "df5d3e87.b20c4"

+            ]

+        ]

+    },

+    {

+        "id": "1036f257.67822e",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1279.7736167907715,

+        "y": 2213.0839166641235,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "f381303a.a670f"

+            ]

+        ]

+    },

+    {

+        "id": "df5d3e87.b20c4",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:naming-policy-generate-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1709.4398880004883,

+        "y": 2238.560112953186,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b0dc6051.1f8f1",

+        "type": "set",

+        "name": "set variables for deleting VM name",

+        "xml": "<set>\n<parameter name='naming-policy-generate-name-input.naming-type' value='VM' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id`' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n",

+        "comments": "",

+        "x": 1624.2017822265625,

+        "y": 2191.4171447753906,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "6e31430a.e7046c",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1056.3691139221191,

+        "y": 2354.654592514038,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "5760ffaf.f2c0b",

+                "db59b482.778a68"

+            ]

+        ]

+    },

+    {

+        "id": "59360709.c66608",

+        "type": "switchNode",

+        "name": "switch vf-module-name",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 569.7024002075195,

+        "y": 2052.321430206299,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "d70ace55.0e268",

+                "7a1e6069.0b283"

+            ]

+        ]

+    },

+    {

+        "id": "d70ace55.0e268",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 746.369026184082,

+        "y": 2078.1546630859375,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "6ae7c451.d31f5c"

+            ]

+        ]

+    },

+    {

+        "id": "7a1e6069.0b283",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 748.4642868041992,

+        "y": 2026.9405679702759,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "bec41233.959f6"

+            ]

+        ]

+    },

+    {

+        "id": "bec41233.959f6",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 871.0357055664062,

+        "y": 2025.3214282989502,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6ae7c451.d31f5c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 893.3689918518066,

+        "y": 2078.654703140259,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "11d19708.2605d9",

+                "1c96b59.8b9804a"

+            ]

+        ]

+    },

+    {

+        "id": "1c96b59.8b9804a",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:naming-policy-generate-unique-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-unique-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1243.0356826782227,

+        "y": 2098.988037109375,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "11d19708.2605d9",

+        "type": "set",

+        "name": "set variables for deleting VF module name",

+        "xml": "<set>\n<parameter name='generate-unique-name-input.name-table-type' value='VF_MODULE_INSTANCE' />\n<parameter name='generate-unique-name-input.context-id' value='`$vf-module-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='generate-unique-name-input.action' value='DELETE' />\n",

+        "comments": "",

+        "x": 1156.130615234375,

+        "y": 2054.7023277282715,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "80a95d2.4a1e6a",

+        "type": "for",

+        "name": "for each vm-network",

+        "xml": "<for silentFailure='true' index='network-role-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 933.0357284545898,

+        "y": 2493.9879322052,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "980c72c7.494c9"

+            ]

+        ]

+    },

+    {

+        "id": "980c72c7.494c9",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1122.8690490722656,

+        "y": 2493.487371444702,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "cf69a581.5413f8"

+            ]

+        ]

+    },

+    {

+        "id": "cf69a581.5413f8",

+        "type": "for",

+        "name": "for each vnfc",

+        "xml": "<for silentFailure='true' index='vnfc-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1276.8691101074219,

+        "y": 2492.154196739197,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "1fbaedb2.ea9ee2"

+            ]

+        ]

+    },

+    {

+        "id": "1fbaedb2.ea9ee2",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1435.2024955749512,

+        "y": 2492.1541900634766,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "17e1ea1a.d384e6",

+                "909f2090.db662"

+            ]

+        ]

+    },

+    {

+        "id": "17e1ea1a.d384e6",

+        "type": "for",

+        "name": "for each floating ipv4 address",

+        "xml": "<for silentFailure='true' index='ipv4-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1640.035514831543,

+        "y": 2461.3208141326904,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "6394face.442c04"

+            ]

+        ]

+    },

+    {

+        "id": "909f2090.db662",

+        "type": "for",

+        "name": "for each floating ipv6 address",

+        "xml": "<for silentFailure='true' index='ipv6-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1640.7021102905273,

+        "y": 2518.3205738067627,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "84f82fa2.f216d"

+            ]

+        ]

+    },

+    {

+        "id": "6394face.442c04",

+        "type": "delete",

+        "name": "delete vip-ipv4-address-list from A&AI",

+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n   resource=\"vip-ipv4-address-list\" \n   key=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\n\t  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\n\t  AND vip-ipv4-address-list.vip-ipv4-address = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]\" >",

+        "comments": "",

+        "outputs": 1,

+        "x": 1944.035514831543,

+        "y": 2461.3208141326904,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "84f82fa2.f216d",

+        "type": "delete",

+        "name": "delete vip-ipv6-address-list from A&AI",

+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n   resource=\"vip-ipv6-address-list\" \n   key=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner\n\t  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region\n\t  AND vip-ipv6-address-list.vip-ipv6-address = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]\" >",

+        "comments": "",

+        "outputs": 1,

+        "x": 1942.7021102905273,

+        "y": 2516.98744392395,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "899e894a.a15b88",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 219.7023696899414,

+        "y": 514.2887477874756,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "b8d19f16.02d9",

+                "ed32804a.e1a1f",

+                "89b50ae8.304b48",

+                "efe19694.cf14a8",

+                "dbf21792.0d5298",

+                "e4ce59e9.5f1898",

+                "abfb427b.7db89",

+                "a8421811.799508",

+                "49d11446.002fcc"

+            ]

+        ]

+    },

+    {

+        "id": "89b50ae8.304b48",

+        "type": "execute",

+        "name": "execute PropertiesNode",

+        "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": 569.9404449462891,

+        "y": 219.70235919952393,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "efe19694.cf14a8",

+        "type": "switchNode",

+        "name": "switch input cloud-owner",

+        "xml": "<switch test='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 571.6070175170898,

+        "y": 290.0589847564697,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "2032739b.f3a73c",

+                "ff58ea7d.ed47d8"

+            ]

+        ]

+    },

+    {

+        "id": "2032739b.f3a73c",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 754.9403915405273,

+        "y": 260.05897331237793,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "3b19e144.46d70e"

+            ]

+        ]

+    },

+    {

+        "id": "ff58ea7d.ed47d8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 754.7022972106934,

+        "y": 301.01146697998047,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "a2e4951.0f1b868"

+            ]

+        ]

+    },

+    {

+        "id": "3b19e144.46d70e",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 889.9403457641602,

+        "y": 258.39231300354004,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a2e4951.0f1b868",

+        "type": "set",

+        "name": "set prop.cloud-region.cloud-owner",

+        "xml": "<set>\n<parameter name='prop.cloud-region.cloud-owner' value='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`' />\n",

+        "comments": "",

+        "x": 971.6070022583008,

+        "y": 300.0589942932129,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "dbf21792.0d5298",

+        "type": "switchNode",

+        "name": "switch service-data.vnfs.vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 611.25,

+        "y": 516.25,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "e305ef89.1e18e",

+                "29032343.b8eb2c"

+            ]

+        ]

+    },

+    {

+        "id": "e305ef89.1e18e",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 851.9642715454102,

+        "y": 493.3927402496338,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "ac34ef76.dbb8b"

+            ]

+        ]

+    },

+    {

+        "id": "29032343.b8eb2c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 851.7261123657227,

+        "y": 534.3452587127686,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "4d389e13.b5d61"

+            ]

+        ]

+    },

+    {

+        "id": "4d389e13.b5d61",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1013.9642562866211,

+        "y": 534.0118770599365,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "3cfeeac7.22cf66"

+            ]

+        ]

+    },

+    {

+        "id": "3cfeeac7.22cf66",

+        "type": "switchNode",

+        "name": "switch service data vnf == input vnf",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1265.2974739074707,

+        "y": 533.6785640716553,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "8a49adca.71697"

+            ]

+        ]

+    },

+    {

+        "id": "8a49adca.71697",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1495.297565460205,

+        "y": 533.0119180679321,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "6824cd21.d641d4"

+            ]

+        ]

+    },

+    {

+        "id": "6afedd28.dd1d04",

+        "type": "set",

+        "name": "set vnf-index to idx",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1816.9642028808594,

+        "y": 504.0118761062622,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "e4ce59e9.5f1898",

+        "type": "switchNode",

+        "name": "switch vnf-index",

+        "xml": "<switch test='`$vnf-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 550.2976303100586,

+        "y": 584.3451957702637,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "dbce9105.cee94"

+            ]

+        ]

+    },

+    {

+        "id": "dbce9105.cee94",

+        "type": "outcome",

+        "name": "-1",

+        "xml": "<outcome value='-1'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 728.6310157775879,

+        "y": 583.6785717010498,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "2c771b68.925e04"

+            ]

+        ]

+    },

+    {

+        "id": "6824cd21.d641d4",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1643.6310272216797,

+        "y": 531.9316167831421,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "6afedd28.dd1d04",

+                "cde0307.04f64d"

+            ]

+        ]

+    },

+    {

+        "id": "cde0307.04f64d",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 1778.6309928894043,

+        "y": 553.5982027053833,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "a8421811.799508",

+        "type": "for",

+        "name": "for each vf-module",

+        "xml": "<for silentFailure='true' index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 562.297607421875,

+        "y": 692.3452224731445,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "297d0391.8efebc"

+            ]

+        ]

+    },

+    {

+        "id": "297d0391.8efebc",

+        "type": "switchNode",

+        "name": "switch service data vf-module == input vf-module",

+        "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": 868.6307678222656,

+        "y": 692.0119581222534,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "b0f6d863.2828c8"

+            ]

+        ]

+    },

+    {

+        "id": "b0f6d863.2828c8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1138.6308212280273,

+        "y": 689.678563117981,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "6f6e1b3e.330ad4"

+            ]

+        ]

+    },

+    {

+        "id": "abfb427b.7db89",

+        "type": "set",

+        "name": "set vf-module-index to -1",

+        "xml": "<set>\n<parameter name='vf-module-index' value='-1' />\n",

+        "comments": "",

+        "x": 575.2975997924805,

+        "y": 636.0118446350098,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "dbc23243.91781",

+        "type": "set",

+        "name": "set vf-module-index to idx",

+        "xml": "<set>\n<parameter name='vf-module-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1468.6309127807617,

+        "y": 660.678542137146,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "49d11446.002fcc",

+        "type": "switchNode",

+        "name": "switch vf-module-index",

+        "xml": "<switch test='`$vf-module-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 571.9643173217773,

+        "y": 774.3452033996582,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "94c2cc90.d7c67",

+                "2b442f49.22e12"

+            ]

+        ]

+    },

+    {

+        "id": "94c2cc90.d7c67",

+        "type": "outcome",

+        "name": "-1",

+        "xml": "<outcome value='-1'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 746.96435546875,

+        "y": 752.0119342803955,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "4fb6a202.51b5ec"

+            ]

+        ]

+    },

+    {

+        "id": "6f6e1b3e.330ad4",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1271.9643630981445,

+        "y": 688.5983028411865,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "dbc23243.91781",

+                "e2ba61fd.88025"

+            ]

+        ]

+    },

+    {

+        "id": "e2ba61fd.88025",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 1406.9643287658691,

+        "y": 710.2648887634277,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "603196d.f2e4768",

+        "type": "call",

+        "name": "call self-serve-vf-module-unassign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-unassign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1539.7975006103516,

+        "y": 898.5864009857178,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "df597e81.6e9d5",

+                "c5575003.8a646"

+            ]

+        ]

+    },

+    {

+        "id": "df597e81.6e9d5",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1784.5474853515625,

+        "y": 898.836389541626,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "a1670d6c.ed7bf"

+            ]

+        ]

+    },

+    {

+        "id": "a1670d6c.ed7bf",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Encountered error while unassigning self-serve vf-moldule esources with error: '+ $error-message`\" />\n",

+        "comments": "",

+        "x": 1950.118911743164,

+        "y": 898.479284286499,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "c5575003.8a646",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1789.1546592712402,

+        "y": 949.391923904419,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "858b4f7.87351b"

+            ]

+        ]

+    },

+    {

+        "id": "74ee7664.954418",

+        "type": "comment",

+        "name": "SELF-SERVE FORK",

+        "info": "",

+        "comments": "",

+        "x": 1559.154670715332,

+        "y": 860.2650318145752,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "9ecd70ab.5a23b",

+        "type": "call",

+        "name": "call self-serve-vf-module-forking-logic",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-forking-logic' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1120.5037994384766,

+        "y": 833.4202389717102,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4e852bb2.f601e4",

+        "type": "switchNode",

+        "name": "switch ss.self-serve-flag",

+        "xml": "<switch test=\"`$ss.self-serve-flag`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1078.8846588134766,

+        "y": 961.1345653533936,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "b3e2a3f2.f065e",

+                "fdb1470f.907b58"

+            ]

+        ]

+    },

+    {

+        "id": "b3e2a3f2.f065e",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1303.5511360168457,

+        "y": 1021.9913191795349,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "99d54dd7.bac17"

+            ]

+        ]

+    },

+    {

+        "id": "fdb1470f.907b58",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1301.5988540649414,

+        "y": 899.1821556091309,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "603196d.f2e4768"

+            ]

+        ]

+    },

+    {

+        "id": "4fb6a202.51b5ec",

+        "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",

+        "comments": "",

+        "x": 897.9166984558105,

+        "y": 750.5029640197754,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "2b442f49.22e12",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 746.2500495910645,

+        "y": 798.8363151550293,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "2f3217af.e4bc58"

+            ]

+        ]

+    },

+    {

+        "id": "2f3217af.e4bc58",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 859.5833129882812,

+        "y": 900.5030097961426,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "9ecd70ab.5a23b",

+                "4e852bb2.f601e4"

+            ]

+        ]

+    },

+    {

+        "id": "ac34ef76.dbb8b",

+        "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",

+        "comments": "",

+        "x": 1006.0118713378906,

+        "y": 493.3601493835449,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "2c771b68.925e04",

+        "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",

+        "comments": "",

+        "x": 882.6785583496094,

+        "y": 583.3601493835449,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "858b4f7.87351b",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 501.6666717529297,

+        "y": 2761.6668910980225,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "3813429f.be706e",

+                "dd2d4dd2.91285"

+            ]

+        ]

+    },

+    {

+        "id": "28df9967.9df256",

+        "type": "for",

+        "name": "for each vf module",

+        "xml": "<for index='idx' start='`$vf-module-index + 1`' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1346.6665649414062,

+        "y": 2799.9999980926514,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "6f3d3130.57afd"

+            ]

+        ]

+    },

+    {

+        "id": "50c34629.2df598",

+        "type": "set",

+        "name": "set tmpidx",

+        "xml": "<set>\n<parameter name=\"tmpidx\" value=\"`$idx - 1`\"/>\n",

+        "comments": "",

+        "x": 1706.5909271240234,

+        "y": 2760.6906309127808,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "d58ca164.6a90c",

+        "type": "set",

+        "name": "set new vf module length",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length\" value=\"`$lastidx`\"/>\n\n\t\n",

+        "comments": "",

+        "x": 1365.554100036621,

+        "y": 2927.72247505188,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "78c411a4.44c59",

+        "type": "set",

+        "name": "Remove the last vf module in the list",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lastidx].\" value=\"\"/>\n",

+        "comments": "",

+        "x": 1401.257713317871,

+        "y": 2883.8336124420166,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "eef5a74e.f28dd8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1114.1625366210938,

+        "y": 2856.24608707428,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "28df9967.9df256",

+                "78c411a4.44c59",

+                "d58ca164.6a90c",

+                "fe410b04.6fd318"

+            ]

+        ]

+    },

+    {

+        "id": "fe410b04.6fd318",

+        "type": "set",

+        "name": "set lastidx",

+        "xml": "<set>\n<parameter name='lastidx' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length - 1`' />\n",

+        "comments": "EIPAM plug-in needs this attribute set with this name",

+        "x": 1319.3968811035156,

+        "y": 2840.238311767578,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "6f3d3130.57afd",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1532.3016510009766,

+        "y": 2799.872272491455,

+        "z": "2b0e89c2.6d8016",

+        "wires": [

+            [

+                "50c34629.2df598",

+                "c39ae3a3.509e4",

+                "d83d8b04.2f5018"

+            ]

+        ]

+    },

+    {

+        "id": "c39ae3a3.509e4",

+        "type": "set",

+        "name": "copy vf module down",

+        "xml": "<set>\n<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmpidx].\" value=\"$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].\" />\n\t\n",

+        "comments": "",

+        "x": 1737.9681205749512,

+        "y": 2846.5390224456787,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    },

+    {

+        "id": "d83d8b04.2f5018",

+        "type": "set",

+        "name": "erase entry at tmpidx",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmpidx].' value='' />\n",

+        "comments": "",

+        "x": 1739.6349906921387,

+        "y": 2803.205931663513,

+        "z": "2b0e89c2.6d8016",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation.json
new file mode 100644
index 0000000..77425c8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-operation.json
@@ -0,0 +1,1389 @@
+[

+    {

+        "id": "146a644a.d6018c",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 222.8720245361328,

+        "y": 125.72916412353516,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "18443a18.5bbe96"

+            ]

+        ]

+    },

+    {

+        "id": "18443a18.5bbe96",

+        "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": 336.15773010253906,

+        "y": 165.96727561950684,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "8fc8d312.0addc"

+            ]

+        ]

+    },

+    {

+        "id": "8fc8d312.0addc",

+        "type": "method",

+        "name": "method vf-module-topology-operation",

+        "xml": "<method rpc='vf-module-topology-operation' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 310.30065155029297,

+        "y": 205.72915840148926,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "f83a31fb.c7ace"

+            ]

+        ]

+    },

+    {

+        "id": "805cedaf.9da98",

+        "type": "comment",

+        "name": "vf-module-topology-operation",

+        "info": "",

+        "comments": "",

+        "x": 540.2168579101562,

+        "y": 108.31550598144531,

+        "z": "efc57676.46ecd8",

+        "wires": []

+    },

+    {

+        "id": "f83a31fb.c7ace",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 284.3720703125,

+        "y": 539.0893239974976,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "52ec0471.d31dec",

+                "2eeb234b.70f96c",

+                "fdb85777.d67288"

+            ]

+        ]

+    },

+    {

+        "id": "52ec0471.d31dec",

+        "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": 569.8720626831055,

+        "y": 712.5867128372192,

+        "z": "efc57676.46ecd8",

+        "wires": []

+    },

+    {

+        "id": "2eeb234b.70f96c",

+        "type": "switchNode",

+        "name": "switch svc-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 580.7766723632812,

+        "y": 537.3005485534668,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "e3a4fc2b.3161c",

+                "7f1f0b87.a516f4",

+                "3be366b6.d25b3a",

+                "e4340a.0ef46bf8",

+                "5a77a3cd.db513c",

+                "e3513758.067c58",

+                "49beeb56.f0ac24",

+                "1ed385fc.7370aa",

+                "bf807bcb.c76ab8"

+            ]

+        ]

+    },

+    {

+        "id": "e3a4fc2b.3161c",

+        "type": "outcome",

+        "name": "assign",

+        "xml": "<outcome value='assign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 792.2529525756836,

+        "y": 385.5864505767822,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "e9421b98.811ad8"

+            ]

+        ]

+    },

+    {

+        "id": "7f1f0b87.a516f4",

+        "type": "outcome",

+        "name": "unassign",

+        "xml": "<outcome value='unassign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 798.6339378356934,

+        "y": 573.7770776748657,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "af035a10.7be258"

+            ]

+        ]

+    },

+    {

+        "id": "3be366b6.d25b3a",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 702.3482894897461,

+        "y": 1989.3007230758667,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "fcd40c7c.89fc6"

+            ]

+        ]

+    },

+    {

+        "id": "fcd40c7c.89fc6",

+        "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": 896.5387153625488,

+        "y": 1989.3007917404175,

+        "z": "efc57676.46ecd8",

+        "wires": []

+    },

+    {

+        "id": "fdb85777.d67288",

+        "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": 707.9553070068359,

+        "y": 283.11022090911865,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f078e9a1.93f268",

+        "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": 1174.3957443237305,

+        "y": 523.8244934082031,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "af035a10.7be258",

+        "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": 1168.7290153503418,

+        "y": 573.4912128448486,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b4bb85e8.cecf88",

+        "type": "outcome",

+        "name": "deactivate",

+        "xml": "<outcome value='deactivate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 802.7290306091309,

+        "y": 524.4911670684814,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "f078e9a1.93f268"

+            ]

+        ]

+    },

+    {

+        "id": "e4340a.0ef46bf8",

+        "type": "outcome",

+        "name": "changeassign",

+        "xml": "<outcome value='changeassign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 813.2053527832031,

+        "y": 621.3958072662354,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "c11d3f25.2b8ae"

+            ]

+        ]

+    },

+    {

+        "id": "c11d3f25.2b8ae",

+        "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": 1182.300422668457,

+        "y": 621.1099433898926,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5a77a3cd.db513c",

+        "type": "outcome",

+        "name": "create",

+        "xml": "<outcome value='create'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 798.8720321655273,

+        "y": 819.729151725769,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "9fa3f7fb.d73818"

+            ]

+        ]

+    },

+    {

+        "id": "46363f16.60595",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1037.2056350708008,

+        "y": 827.3155148923397,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "53511ac.d85bde4",

+                "60e100d5.7588f",

+                "41615e5f.e1751",

+                "e2244d87.5c338",

+                "a2058bc6.fa69e8",

+                "d0130bf2.6e3448"

+            ]

+        ]

+    },

+    {

+        "id": "60e100d5.7588f",

+        "type": "outcome",

+        "name": "CreateSDWANSiteInstance",

+        "xml": "<outcome value='CreateSDWANSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1327.6819534301758,

+        "y": 735.7948837280273,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "a917c65f.e5c2a8"

+            ]

+        ]

+    },

+    {

+        "id": "53511ac.d85bde4",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1237.5864181518555,

+        "y": 911.1727781295776,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "de8a37a9.53a558"

+            ]

+        ]

+    },

+    {

+        "id": "9fa3f7fb.d73818",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 985.2055511474609,

+        "y": 747.3155164718628,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "46363f16.60595",

+                "976fd046.7fe32"

+            ]

+        ]

+    },

+    {

+        "id": "a917c65f.e5c2a8",

+        "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": 1751.205825805664,

+        "y": 734.3156599998474,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "de8a37a9.53a558",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1390.8720703125,

+        "y": 911.2291746139526,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "41615e5f.e1751",

+        "type": "outcome",

+        "name": "CreateSDWANPortInstance",

+        "xml": "<outcome value='CreateSDWANPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1301.5388107299805,

+        "y": 869.562668800354,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "dab1af07.8a3cf"

+            ]

+        ]

+    },

+    {

+        "id": "dab1af07.8a3cf",

+        "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": 1774.0625076293945,

+        "y": 869.083420753479,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e2244d87.5c338",

+        "type": "outcome",

+        "name": "CreateSDWANDeviceInstance",

+        "xml": "<outcome value='CreateSDWANDeviceInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1309.903133392334,

+        "y": 789.7606291770935,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "99f05a55.3dafe8"

+            ]

+        ]

+    },

+    {

+        "id": "99f05a55.3dafe8",

+        "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": 1765.4269218444824,

+        "y": 789.2814984321594,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a2058bc6.fa69e8",

+        "type": "outcome",

+        "name": "CreateSDWANVpnInstance",

+        "xml": "<outcome value='CreateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1339.8720512390137,

+        "y": 688.7292037010193,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "d2406569.cc26c8"

+            ]

+        ]

+    },

+    {

+        "id": "d2406569.cc26c8",

+        "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": 1748.395824432373,

+        "y": 686.2499709129333,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e3513758.067c58",

+        "type": "outcome",

+        "name": "activate",

+        "xml": "<outcome value='activate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 788.8720321655273,

+        "y": 1015.0624647140503,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "b3da3524.611018"

+            ]

+        ]

+    },

+    {

+        "id": "ad86b133.4fcef",

+        "type": "outcome",

+        "name": "ActivateSDWANSiteInstance",

+        "xml": "<outcome value='ActivateSDWANSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1319.0150833129883,

+        "y": 1017.9614181518555,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "9fb362a8.709c"

+            ]

+        ]

+    },

+    {

+        "id": "b3da3524.611018",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 969.5388031005859,

+        "y": 1010.482141494751,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "6119c1c4.7dffd"

+            ]

+        ]

+    },

+    {

+        "id": "9fb362a8.709c",

+        "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": 1731.5389709472656,

+        "y": 1011.4822006225586,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "34c2f165.f848be",

+        "type": "outcome",

+        "name": "ActivateSDWANDeviceInstance",

+        "xml": "<outcome value='ActivateSDWANDeviceInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1308.2055206298828,

+        "y": 1063.9822068214417,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "51ba2675.c49818"

+            ]

+        ]

+    },

+    {

+        "id": "51ba2675.c49818",

+        "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": 1743.7292175292969,

+        "y": 1063.5029792785645,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4b3819e5.446868",

+        "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": 1742.2053451538086,

+        "y": 1148.9821610450745,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8fb0712b.8a713",

+        "type": "outcome",

+        "name": "ActivateSDWANPortInstance",

+        "xml": "<outcome value='ActivateSDWANPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1306.6816482543945,

+        "y": 1149.4613885879517,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "4b3819e5.446868"

+            ]

+        ]

+    },

+    {

+        "id": "6119c1c4.7dffd",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1045.8720321655273,

+        "y": 1077.0624647140503,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "ad86b133.4fcef",

+                "34c2f165.f848be",

+                "8fb0712b.8a713",

+                "d07f736.adfa09",

+                "481790e7.43aeb",

+                "c64a1b07.ab47a8"

+            ]

+        ]

+    },

+    {

+        "id": "d07f736.adfa09",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1238.4435119628906,

+        "y": 1198.273973941803,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "e739bc83.63e2c"

+            ]

+        ]

+    },

+    {

+        "id": "481790e7.43aeb",

+        "type": "outcome",

+        "name": "ActivateSDWANVpnInstance",

+        "xml": "<outcome value='ActivateSDWANVpnInstance'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1321.8720321655273,

+        "y": 973.0624647140503,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "e2bf4bd1.f5d2f8"

+            ]

+        ]

+    },

+    {

+        "id": "e2bf4bd1.f5d2f8",

+        "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": 1737.3958358764648,

+        "y": 966.5832414627075,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "49beeb56.f0ac24",

+        "type": "outcome",

+        "name": "deactivate",

+        "xml": "<outcome value='deactivate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 772.8720245361328,

+        "y": 1301.0625576972961,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "fb50cbbf.e98648"

+            ]

+        ]

+    },

+    {

+        "id": "676bcbf6.bf2a24",

+        "type": "outcome",

+        "name": "DeactivateSDWANSiteInstance",

+        "xml": "<outcome value='DeactivateSDWANSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1311.0151443481445,

+        "y": 1300.9615278244019,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "2f3916a.390d7ea"

+            ]

+        ]

+    },

+    {

+        "id": "fb50cbbf.e98648",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 953.5387954711914,

+        "y": 1296.4822344779968,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "8f3e573.51225a8"

+            ]

+        ]

+    },

+    {

+        "id": "2f3916a.390d7ea",

+        "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": 1728.5389099121094,

+        "y": 1302.4822645187378,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c6530296.821ac",

+        "type": "outcome",

+        "name": "DeactivateSDWANDeviceInstance",

+        "xml": "<outcome value='DeactivateSDWANDeviceInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1292.2055130004883,

+        "y": 1349.9822998046875,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "bb595a17.77c898"

+            ]

+        ]

+    },

+    {

+        "id": "bb595a17.77c898",

+        "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": 1727.7292098999023,

+        "y": 1349.5030722618103,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "be737f8c.bf185",

+        "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": 1725.205421447754,

+        "y": 1427.982274055481,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7297171e.80a088",

+        "type": "outcome",

+        "name": "DeactivateSDWANPortInstance",

+        "xml": "<outcome value='DeactivateSDWANPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1289.6817245483398,

+        "y": 1428.4615015983582,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "be737f8c.bf185"

+            ]

+        ]

+    },

+    {

+        "id": "8f3e573.51225a8",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1029.8720245361328,

+        "y": 1363.0625576972961,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "676bcbf6.bf2a24",

+                "c6530296.821ac",

+                "7297171e.80a088",

+                "71d7e3b7.3e65fc",

+                "c02ae531.4d1c08",

+                "443330cd.1d373"

+            ]

+        ]

+    },

+    {

+        "id": "71d7e3b7.3e65fc",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1225.443458557129,

+        "y": 1478.2740640640259,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "e798a02b.bec1a"

+            ]

+        ]

+    },

+    {

+        "id": "c02ae531.4d1c08",

+        "type": "outcome",

+        "name": "DeactivateSDWANVpnInstance",

+        "xml": "<outcome value='DeactivateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1305.8720245361328,

+        "y": 1259.0625576972961,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "c1f94712.8e93d8"

+            ]

+        ]

+    },

+    {

+        "id": "c1f94712.8e93d8",

+        "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": 1721.3958282470703,

+        "y": 1252.5833344459534,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e798a02b.bec1a",

+        "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": 1563.8721389770508,

+        "y": 1478.7292747497559,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e739bc83.63e2c",

+        "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": 1568.8720245361328,

+        "y": 1195.7291836738586,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "439fbd92.bc1ce4",

+        "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": 1166.8719902038574,

+        "y": 474.72913932800293,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "62a08c09.0b1384",

+        "type": "outcome",

+        "name": "activate",

+        "xml": "<outcome value='activate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 794.8719749450684,

+        "y": 475.3958168029785,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "439fbd92.bc1ce4"

+            ]

+        ]

+    },

+    {

+        "id": "1ed385fc.7370aa",

+        "type": "outcome",

+        "name": "delete",

+        "xml": "<outcome value='delete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 735.8720703125,

+        "y": 1646.3958864212036,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "bca44a5d.cc37a8"

+            ]

+        ]

+    },

+    {

+        "id": "bfb405f9.b31248",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 975.2055892944336,

+        "y": 1646.982253074646,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "425d435e.61bf0c",

+                "51fa15a4.dbc35c",

+                "7e86ba39.03f964",

+                "25d4d62c.6d980a",

+                "2a489103.e03f5e",

+                "21017d13.c62292"

+            ]

+        ]

+    },

+    {

+        "id": "51fa15a4.dbc35c",

+        "type": "outcome",

+        "name": "DeleteSDWANSiteInstance",

+        "xml": "<outcome value='DeleteSDWANSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1260.6821365356445,

+        "y": 1580.4616527557373,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "bd63c480.3e8d18"

+            ]

+        ]

+    },

+    {

+        "id": "425d435e.61bf0c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1174.5864562988281,

+        "y": 1737.8395128250122,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "9d6e36bc.fa16b8"

+            ]

+        ]

+    },

+    {

+        "id": "bca44a5d.cc37a8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 922.2055892944336,

+        "y": 1573.9822511672974,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "bfb405f9.b31248"

+            ]

+        ]

+    },

+    {

+        "id": "bd63c480.3e8d18",

+        "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": 1664.2057495117188,

+        "y": 1575.9824976921082,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9d6e36bc.fa16b8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1327.8721084594727,

+        "y": 1737.8959093093872,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7e86ba39.03f964",

+        "type": "outcome",

+        "name": "DeleteSDWANPortInstance",

+        "xml": "<outcome value='DeleteSDWANPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1238.5388488769531,

+        "y": 1696.2294034957886,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "566c3117.8e406"

+            ]

+        ]

+    },

+    {

+        "id": "566c3117.8e406",

+        "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": 1711.0625457763672,

+        "y": 1695.7501554489136,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "25d4d62c.6d980a",

+        "type": "outcome",

+        "name": "DeleteSDWANDeviceInstance",

+        "xml": "<outcome value='DeleteSDWANDeviceInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1262.9032440185547,

+        "y": 1619.42729139328,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "cac13dac.4d799"

+            ]

+        ]

+    },

+    {

+        "id": "cac13dac.4d799",

+        "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": 1677.4270629882812,

+        "y": 1614.9481959342957,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2a489103.e03f5e",

+        "type": "outcome",

+        "name": "DeleteSDWANVpnInstance",

+        "xml": "<outcome value='DeleteSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1266.8721008300781,

+        "y": 1539.3959035873413,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "a107ba80.f2c438"

+            ]

+        ]

+    },

+    {

+        "id": "a107ba80.f2c438",

+        "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": 1660.3959045410156,

+        "y": 1539.9166712760925,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "976fd046.7fe32",

+        "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": 1126.6220321655273,

+        "y": 696.3194011151791,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d0130bf2.6e3448",

+        "type": "outcome",

+        "name": "CreateSDWANLanPortInstance",

+        "xml": "<outcome value='CreateSDWANLanPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1303.6155319213867,

+        "y": 830.569402217865,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "17a425c8.ef240a"

+            ]

+        ]

+    },

+    {

+        "id": "17a425c8.ef240a",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-lanport-create",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-create' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1776.1392288208008,

+        "y": 830.09015417099,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c64a1b07.ab47a8",

+        "type": "outcome",

+        "name": "ActivateSDWANLanPortInstance",

+        "xml": "<outcome value='ActivateSDWANLanPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1315.6155319213867,

+        "y": 1107.819402217865,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "a795142a.2e7d78"

+            ]

+        ]

+    },

+    {

+        "id": "a795142a.2e7d78",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-lanport-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-activate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1733.1391830444336,

+        "y": 1107.3401637077332,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "443330cd.1d373",

+        "type": "outcome",

+        "name": "DeactivateSDWANLanPortInstance",

+        "xml": "<outcome value='DeactivateSDWANLanPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1301.6155319213867,

+        "y": 1394.069402217865,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "10e14224.177fee"

+            ]

+        ]

+    },

+    {

+        "id": "10e14224.177fee",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-lanport-deactivate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-deactivate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1719.1391830444336,

+        "y": 1393.5901637077332,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "21017d13.c62292",

+        "type": "outcome",

+        "name": "DeleteSDWANLanPortInstance",

+        "xml": "<outcome value='DeleteSDWANLanPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1265.6155319213867,

+        "y": 1657.069402217865,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "bc4d8c28.5152b"

+            ]

+        ]

+    },

+    {

+        "id": "bc4d8c28.5152b",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-lanport-delete",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-delete' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1683.1391830444336,

+        "y": 1656.5901637077332,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bf807bcb.c76ab8",

+        "type": "outcome",

+        "name": "update",

+        "xml": "<outcome value='update'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 706.8720321655273,

+        "y": 1785.3154935836792,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "4bd24679.ac0638"

+            ]

+        ]

+    },

+    {

+        "id": "4bd24679.ac0638",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 881.2055282592773,

+        "y": 1789.9019804000854,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "677be846.dfdd88"

+            ]

+        ]

+    },

+    {

+        "id": "677be846.dfdd88",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1037.2055282592773,

+        "y": 1859.9019804000854,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "24961218.c1a6de",

+                "4da413d8.1ef91c"

+            ]

+        ]

+    },

+    {

+        "id": "24961218.c1a6de",

+        "type": "outcome",

+        "name": "SdwanBandwidthChange",

+        "xml": "<outcome value='SdwanBandwidthChange'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1275.8720092773438,

+        "y": 1815.315613746643,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "a17addc8.31a34"

+            ]

+        ]

+    },

+    {

+        "id": "a17addc8.31a34",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-bandwidth-policy-change",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-bandwidth-policy-change' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1669.3958129882812,

+        "y": 1815.8363814353943,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4da413d8.1ef91c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1201.5863647460938,

+        "y": 1888.759217262268,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "b40cb9f3.46e0e8"

+            ]

+        ]

+    },

+    {

+        "id": "b40cb9f3.46e0e8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1354.8720169067383,

+        "y": 1888.815613746643,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e9421b98.811ad8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 981.1580276489258,

+        "y": 386.01489448547363,

+        "z": "efc57676.46ecd8",

+        "wires": [

+            [

+                "8e441963.a45748",

+                "535b5f61.bae1"

+            ]

+        ]

+    },

+    {

+        "id": "8e441963.a45748",

+        "type": "set",

+        "name": "set skip-mdsal-update to Y",

+        "xml": "<set>\n<parameter name='skip-mdsal-update' value='Y' />\n",

+        "comments": "",

+        "x": 1227.9435806274414,

+        "y": 362.3689384460449,

+        "z": "efc57676.46ecd8",

+        "wires": []

+    },

+    {

+        "id": "535b5f61.bae1",

+        "type": "set",

+        "name": "set ack-final to 'N' (default)",

+        "xml": "<set>\n<parameter name='ack-final' value='N' />\n",

+        "comments": "",

+        "x": 1228.3721542358398,

+        "y": 402.36902236938477,

+        "z": "efc57676.46ecd8",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-activate.json
new file mode 100755
index 0000000..93b247d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-activate.json
@@ -0,0 +1 @@
+[{"id":"c7e145ff.4a2448","type":"dgstart","name":"DGSTART","outputs":1,"x":117.14286041259766,"y":78.12794303894043,"z":"f8623c76.ed22f","wires":[["4d645b04.22fa54"]]},{"id":"4d645b04.22fa54","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":230.4285659790039,"y":118.36605453491211,"z":"f8623c76.ed22f","wires":[["8e54a82b.88a9a8"]]},{"id":"8e54a82b.88a9a8","type":"method","name":"method vf-module-topology-vlan-tagging-activate","xml":"<method rpc='vf-module-topology-vlan-tagging-activate' mode='sync'>\n","comments":"","outputs":1,"x":240.2381591796875,"y":159.79461288452148,"z":"f8623c76.ed22f","wires":[["128f0aa3.631805"]]},{"id":"23993fe5.d3beb","type":"comment","name":"vf-module-topology-vlan-tagging-activate","info":"","comments":"","x":511.4877166748047,"y":25.71428680419922,"z":"f8623c76.ed22f","wires":[]},{"id":"128f0aa3.631805","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":217.0713119506836,"y":441.8091812133789,"z":"f8623c76.ed22f","wires":[["4de83b3e.7339e4","314c4136.fad54e","994f5fb2.d428e","bfec4006.e78cc","3f5e80f8.43f3d"]]},{"id":"1bd3656.2bf729b","type":"save","name":"custom query: get network data","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.aai.network\">\n      <parameter name=\"start[0]\" value=\"`'/cloud-infrastructure/cloud-regions/cloud-region/' + $prop.cloud-region.cloud-owner + '/' + $tmp.cloud-region-id`\" />\n      <parameter name=\"start_length\" value=\"1\" /> \n      <parameter name=\"query\" value=\"`'/query/network-name-fromNetwork-role?networkRole='  + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role`\" /> \n","comments":"","outputs":1,"x":1313.499927520752,"y":911.5710401535034,"z":"f8623c76.ed22f","wires":[["94461ef4.7a565","4d42768a.5be4e8"]]},{"id":"4de83b3e.7339e4","type":"set","name":"copy data to tmp.vlan-vnfc-instance-groups.","xml":"<set>\n<parameter name='tmp.vlan-vnfc-instance-groups.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.`' />\n","comments":"","x":567.7855682373047,"y":415.1425132751465,"z":"f8623c76.ed22f","wires":[]},{"id":"314c4136.fad54e","type":"for","name":"for each vlan-vnfc-instance-group","xml":"<for index='vvig-index' start='0' end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`' >\n","comments":"","outputs":1,"x":535.1665649414062,"y":565.380690574646,"z":"f8623c76.ed22f","wires":[["bc7425fd.85f968"]]},{"id":"ea000c2b.93031","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1077.547607421875,"y":891.3329725265503,"z":"f8623c76.ed22f","wires":[["82881598.cb97f8","480bafe1.fdbc1","1525986d.5a8cd8","5fd8515d.3ee35","db226bb9.e68798","1bd3656.2bf729b","3bcd4a19.f3bd46","e25841f.c6162c","fa1a8ecb.b1f77","b4588ad2.5d2198","f1a8d7b0.c91308"]]},{"id":"82881598.cb97f8","type":"switchNode","name":"switch vnf-sub-interface-groups_length","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`'>\n","comments":"","outputs":1,"x":1343.7381286621094,"y":546.8091764450073,"z":"f8623c76.ed22f","wires":[["d09111f.8af6ef"]]},{"id":"d09111f.8af6ef","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1572.3096389770508,"y":545.3806657791138,"z":"f8623c76.ed22f","wires":[["d38a1148.34416"]]},{"id":"d38a1148.34416","type":"set","name":"set vnf-sub-interface-groups_length to 0","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length'\n  value='0' />\n","comments":"","x":1809.452407836914,"y":545.3805799484253,"z":"f8623c76.ed22f","wires":[]},{"id":"924e996c.d0bb48","type":"set","name":"set vsig-index to the last entry","xml":"<set>\n<parameter name='vsig-index'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`' />\n","comments":"","x":1758.9762649536133,"y":746.9044075012207,"z":"f8623c76.ed22f","wires":[]},{"id":"bc7425fd.85f968","type":"switchNode","name":"switch vnfc_length","xml":"<switch test='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`'>\n","comments":"","outputs":1,"x":778.0236701965332,"y":563.9521369934082,"z":"f8623c76.ed22f","wires":[["abb1fcfc.281d2","1de529d8.736ff6","26174c8d.8d4ce4"]]},{"id":"abb1fcfc.281d2","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":947.0713443756104,"y":522.9997215270996,"z":"f8623c76.ed22f","wires":[["af404756.1502e8"]]},{"id":"1de529d8.736ff6","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":947.0712356567383,"y":568.7139835357666,"z":"f8623c76.ed22f","wires":[["af404756.1502e8"]]},{"id":"26174c8d.8d4ce4","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":928.9761123657227,"y":891.3331460952759,"z":"f8623c76.ed22f","wires":[["ea000c2b.93031"]]},{"id":"af404756.1502e8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1071.35693359375,"y":544.428243637085,"z":"f8623c76.ed22f","wires":[[]]},{"id":"9e16e25c.b3dbd","type":"set","name":"set vnf-sub-interface-groups data","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role'\n  value='`$parent-port-role`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfc-instance-group-function'\n  value='`$vnfc-instance-group-function`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].network-instance-group-function'\n  value='`$network-instance-group-function`' />\n","comments":"","x":1765.8808135986328,"y":794.999566078186,"z":"f8623c76.ed22f","wires":[]},{"id":"6c761169.81249","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":806.6666259765625,"y":231.66665649414062,"z":"f8623c76.ed22f","wires":[["bb64e2d0.1df7e"]]},{"id":"bb64e2d0.1df7e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":979.2380752563477,"y":232.61893367767334,"z":"f8623c76.ed22f","wires":[["b860ab4a.fcb248"]]},{"id":"b860ab4a.fcb248","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"Failed call to AAI custom query: cloud-region-fromVnf\" />\n","comments":"","outputs":1,"x":1192.2381057739258,"y":232.6190414428711,"z":"f8623c76.ed22f","wires":[[]]},{"id":"994f5fb2.d428e","type":"save","name":"custom query: get cloud region from vnf","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource&amp;nodesOnly=true'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.aai.vnf\">\n<parameter name=\"start[0]\" value=\"`'/network/generic-vnfs/generic-vnf/' + $vf-module-topology-operation-input.vnf-information.vnf-id `\" />\n<parameter name=\"start_length\" value=\"1\" />\n<parameter name=\"query\" value=\"query/cloud-region-fromVnf\" /> \n","comments":"","outputs":1,"x":562.09521484375,"y":253.66653442382812,"z":"f8623c76.ed22f","wires":[["6c761169.81249","a7d24b92.b65f08"]]},{"id":"a7d24b92.b65f08","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":820.3809204101562,"y":282.5237121582031,"z":"f8623c76.ed22f","wires":[["dd9771e5.d43e1"]]},{"id":"dd9771e5.d43e1","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":984.6666297912598,"y":281.09519386291504,"z":"f8623c76.ed22f","wires":[["98ce4ec2.8c32"]]},{"id":"98ce4ec2.8c32","type":"configure","name":"set error-message","xml":"<set>\n<parameter name=\"error-message\" value=\"No cloud region returned from AAI: cloud-region-fromVnf\" />\n","comments":"","outputs":1,"x":1185.2380905151367,"y":280.80951499938965,"z":"f8623c76.ed22f","wires":[[]]},{"id":"bfec4006.e78cc","type":"for","name":"for each returned result","xml":"<for index='result-idx' start='0' end='`$tmp.aai.vnf.results_length`' >\n","comments":"","outputs":1,"x":510.71429443359375,"y":346.19032764434814,"z":"f8623c76.ed22f","wires":[["bcb365c9.75cbe8"]]},{"id":"bcb365c9.75cbe8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":719.0475921630859,"y":346.19032764434814,"z":"f8623c76.ed22f","wires":[["4a45cd40.974cd4"]]},{"id":"4a45cd40.974cd4","type":"switchNode","name":"switch cloud-region-id","xml":"<switch test='`$tmp.aai.vnf.results[$result-idx].cloud-region.cloud-region-id`'>\n","comments":"","outputs":1,"x":940.7145385742188,"y":346.1904401779175,"z":"f8623c76.ed22f","wires":[["3d6615d0.1256ba","b0a77184.8d1c"]]},{"id":"3d6615d0.1256ba","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1132.3811073303223,"y":326.19039821624756,"z":"f8623c76.ed22f","wires":[["abb75880.9fd958"]]},{"id":"b0a77184.8d1c","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1130.7143783569336,"y":365.9524450302124,"z":"f8623c76.ed22f","wires":[["68553cd5.256e34"]]},{"id":"abb75880.9fd958","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1274.0477809906006,"y":326.19043922424316,"z":"f8623c76.ed22f","wires":[[]]},{"id":"68553cd5.256e34","type":"set","name":"set tmp.cloud-region-id","xml":"<set>\n<parameter name='tmp.cloud-region-id' value='`$tmp.aai.vnf.results[$result-idx].cloud-region.cloud-region-id`' />\n","comments":"","x":1320.7144622802734,"y":366.1904640197754,"z":"f8623c76.ed22f","wires":[]},{"id":"4d42768a.5be4e8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1526.666690826416,"y":934.9999370574951,"z":"f8623c76.ed22f","wires":[["fd537148.a0b2f"]]},{"id":"94461ef4.7a565","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1518.3333549499512,"y":886.666600227356,"z":"f8623c76.ed22f","wires":[["fd537148.a0b2f"]]},{"id":"fd537148.a0b2f","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to get network data for network role '\n  + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role`\" />\n","comments":"","x":1689.9999046325684,"y":906.6666431427002,"z":"f8623c76.ed22f","wires":[]},{"id":"3bcd4a19.f3bd46","type":"set","name":"set network-name","xml":"<set>\n<parameter name='network-name' value='`$tmp.aai.network.results[0].l3-network.network-name`' />\n","comments":"","x":1271.6666374206543,"y":988.3332920074463,"z":"f8623c76.ed22f","wires":[]},{"id":"e25841f.c6162c","type":"for","name":"for each source vnfc","xml":"<for index='src-vnfc-index' start='0'\n  end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >\n","comments":"","outputs":1,"x":1276.6664733886719,"y":1316.6666355133057,"z":"f8623c76.ed22f","wires":[["677e7d2a.343fc4"]]},{"id":"677e7d2a.343fc4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1471.666519165039,"y":1314.9999284744263,"z":"f8623c76.ed22f","wires":[["f961adcb.1c2af","9397b293.f8635"]]},{"id":"480bafe1.fdbc1","type":"set","name":"set keys","xml":"<set>\n<parameter name='parent-port-role'\n  value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vnic-interface-role`' />\n<parameter name='vnfc-instance-group-function'\n  value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-function`' />\n<parameter name='network-instance-group-function'\n  value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function`' />\n","comments":"","x":1248.333381652832,"y":598.3333168029785,"z":"f8623c76.ed22f","wires":[]},{"id":"1525986d.5a8cd8","type":"set","name":"set vsig-index to -1","xml":"<set>\n<parameter name='vsig-index' value='-1' />\n","comments":"","x":1283.3334274291992,"y":644.9999847412109,"z":"f8623c76.ed22f","wires":[]},{"id":"5fd8515d.3ee35","type":"for","name":"for each existing vnf-sub-interface-group","xml":"<for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`' >\n","comments":"","outputs":1,"x":1345.0000076293945,"y":691.6667556762695,"z":"f8623c76.ed22f","wires":[["4fbd326c.a9a0cc"]]},{"id":"4fbd326c.a9a0cc","type":"switchNode","name":"keys match?","xml":"<switch test='`\n  $parent-port-role == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$idx].parent-port-role\n  and $vnfc-instance-group-function == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$idx].vnfc-instance-group-function\n  and $network-instance-group-function == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$idx].network-instance-group-function\n`'>\n","comments":"","outputs":1,"x":1593.3332748413086,"y":691.6666736602783,"z":"f8623c76.ed22f","wires":[["28761c8c.b18924"]]},{"id":"28761c8c.b18924","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1738.3333206176758,"y":689.9999866485596,"z":"f8623c76.ed22f","wires":[["8436a64.f3e1958"]]},{"id":"8436a64.f3e1958","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1866.6666259765625,"y":688.3333129882812,"z":"f8623c76.ed22f","wires":[["7aff3935.274a78","bbbc8753.39f638"]]},{"id":"7aff3935.274a78","type":"set","name":"set vsig-index","xml":"<set>\n<parameter name='vsig-index' value='`$idx`' />\n","comments":"","x":2009.9998741149902,"y":663.33331823349,"z":"f8623c76.ed22f","wires":[]},{"id":"bbbc8753.39f638","type":"break","name":"break","xml":"<break>\n","comments":"","x":1990.0000801086426,"y":711.666675567627,"z":"f8623c76.ed22f","wires":[]},{"id":"db226bb9.e68798","type":"switchNode","name":"switch vsig-index","xml":"<switch test='`$vsig-index`'>\n","comments":"","outputs":1,"x":1269.9997825622559,"y":796.6666660308838,"z":"f8623c76.ed22f","wires":[["88036190.85c2d"]]},{"id":"88036190.85c2d","type":"outcome","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":1431.6666221618652,"y":796.6666259765625,"z":"f8623c76.ed22f","wires":[["65e1a06b.40c8d"]]},{"id":"65e1a06b.40c8d","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1556.6664848327637,"y":795.3333034515381,"z":"f8623c76.ed22f","wires":[["924e996c.d0bb48","9e16e25c.b3dbd","634e9705.eebe18"]]},{"id":"634e9705.eebe18","type":"set","name":"increment vnf-sub-interface-groups_length","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length'\n  value='`$vsig-index + 1`' />\n","comments":"","x":1796.6666870117188,"y":840.0000333786011,"z":"f8623c76.ed22f","wires":[]},{"id":"fa1a8ecb.b1f77","type":"switchNode","name":"switch dest vnfc_length","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length`'>\n","comments":"","outputs":1,"x":1288.3334197998047,"y":1048.3332529067993,"z":"f8623c76.ed22f","wires":[["820cab8e.b0a978"]]},{"id":"820cab8e.b0a978","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1471.6666259765625,"y":1046.6666259765625,"z":"f8623c76.ed22f","wires":[["c8c6057e.d0ebc8"]]},{"id":"c8c6057e.d0ebc8","type":"set","name":"set dest vnfc_length to 0","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length'\n  value='0' />\n","comments":"","x":1666.666648864746,"y":1045.0000009536743,"z":"f8623c76.ed22f","wires":[]},{"id":"b4588ad2.5d2198","type":"set","name":"set dest-vnfc-index","xml":"<set>\n<parameter name='dest-vnfc-index'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length`' />\n","comments":"","x":1276.6666717529297,"y":1106.6667108535767,"z":"f8623c76.ed22f","wires":[]},{"id":"f961adcb.1c2af","type":"save","name":"custom query: get interfaces","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.aai.interfaces\">\n      <parameter name=\"start[0]\" value=\"`'/network/vnfcs/vnfc/' + $tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$src-vnfc-index].vnfc-name`\" />\n      <parameter name=\"start_length\" value=\"1\" /> \n      <parameter name=\"query\" value=\"`'/query/vserver-l-interfaces-fromVnfc?networkName=' + $network-name`\" /> \n","comments":"","outputs":1,"x":1741.6666564941406,"y":1200.8333911895752,"z":"f8623c76.ed22f","wires":[["cc75fd6f.53ed","8bb0874e.d41028","35031a2.12d7ee6"]]},{"id":"8bb0874e.d41028","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1954.8333435058594,"y":1201.7622365951538,"z":"f8623c76.ed22f","wires":[["9940332d.0af4b"]]},{"id":"cc75fd6f.53ed","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1946.5000076293945,"y":1153.4288997650146,"z":"f8623c76.ed22f","wires":[["36014b65.267994"]]},{"id":"36014b65.267994","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to get interface data for network name '\n  + $network-name\n  + ' and vnfc '\n  + $tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$src-vnfc-index].vnfc-name`\" />\n","comments":"","x":2114.83309173584,"y":1152.4290027618408,"z":"f8623c76.ed22f","wires":[]},{"id":"fb0ab57b.9d3938","type":"for","name":"for each result","xml":"<for silentFailure='true' index='idx1' start='0' end='`$tmp.aai.interfaces.results_length`' >\n","comments":"","outputs":1,"x":1844.9999961853027,"y":1390.3332967758179,"z":"f8623c76.ed22f","wires":[["7b84b9a8.a6c2b8"]]},{"id":"7b84b9a8.a6c2b8","type":"switchNode","name":"is this a vserver?","xml":"<switch test='`$tmp.aai.interfaces.results[$idx1].vserver.vserver-id`'>\n","comments":"","outputs":1,"x":2032.1428489685059,"y":1390.3332891464233,"z":"f8623c76.ed22f","wires":[["d1b3ff59.b9bfb","54274d50.c5b564"]]},{"id":"d1b3ff59.b9bfb","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2199.285739353725,"y":1364.6191155569895,"z":"f8623c76.ed22f","wires":[["47972c2.d2955d4"]]},{"id":"54274d50.c5b564","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2199.2856706891744,"y":1416.0477883475169,"z":"f8623c76.ed22f","wires":[["563e6367.89bc2c"]]},{"id":"9e7e51c.18085b","type":"set","name":"set vserver-id and name","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vserver-id'\n  value='`$tmp.aai.interfaces.results[$idx1].vserver.vserver-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vserver-name'\n  value='`$tmp.aai.interfaces.results[$idx1].vserver.vserver-name`' />\n","comments":"","x":2514.1667518615723,"y":1366.6667022705078,"z":"f8623c76.ed22f","wires":[]},{"id":"4927e77b.7b0a38","type":"for","name":"for each l-interface","xml":"<for silentFailure='true' index='int-index' start='0'\n  end='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface_length`' >\n","comments":"","outputs":1,"x":2495.8334197998047,"y":1456.6667442321777,"z":"f8623c76.ed22f","wires":[["a03b94a5.a12ef8"]]},{"id":"f992641e.69e578","type":"set","name":"set vnic_length","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic_length'\n  value='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface_length`' />\n","comments":"","x":2485.8332557678223,"y":1411.6666622161865,"z":"f8623c76.ed22f","wires":[]},{"id":"47972c2.d2955d4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2325.83341217041,"y":1363.9999561309814,"z":"f8623c76.ed22f","wires":[[]]},{"id":"563e6367.89bc2c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2324.166576385498,"y":1415.6666536331177,"z":"f8623c76.ed22f","wires":[["9e7e51c.18085b","f992641e.69e578","4927e77b.7b0a38"]]},{"id":"a03b94a5.a12ef8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2657.499927520752,"y":1456.6667051315308,"z":"f8623c76.ed22f","wires":[["da69715f.94b6a","edceb3b0.14efe"]]},{"id":"da69715f.94b6a","type":"set","name":"set vnic-port-id and name","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].vnic-port-id'\n  value='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface[$int-index].interface-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].vnic-port-name'\n  value='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface[$int-index].interface-name`' />\n","comments":"","x":2842.5000953674316,"y":1428.3334112167358,"z":"f8623c76.ed22f","wires":[]},{"id":"edceb3b0.14efe","type":"for","name":"for each result","xml":"<for silentFailure='true' index='idx2' start='0' end='`$tmp.aai.interfaces.results_length`' >\n","comments":"","outputs":1,"x":2809.166736602783,"y":1473.333441734314,"z":"f8623c76.ed22f","wires":[["c43c06df.d5c808"]]},{"id":"c43c06df.d5c808","type":"switchNode","name":"is this our interface?","xml":"<switch test='`$tmp.aai.interfaces.results[$idx2].l-interface.interface-id\n  == $tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface[$int-index].interface-id`'>\n","comments":"","outputs":1,"x":3002.499858856201,"y":1471.666787147522,"z":"f8623c76.ed22f","wires":[["4c0806f5.32a7c8"]]},{"id":"4c0806f5.32a7c8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3174.166778564453,"y":1470.0000371932983,"z":"f8623c76.ed22f","wires":[["9f6ae548.e06038"]]},{"id":"3777ff14.c0513","type":"for","name":"for each sub l-interface","xml":"<for silentFailure='true' index='sub-int-index' start='0'\n  end='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface_length`' >\n","comments":"","outputs":1,"x":2150.83394241333,"y":1662.5001344680786,"z":"f8623c76.ed22f","wires":[["926fef64.9dec8"]]},{"id":"9f6ae548.e06038","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1975.833396911621,"y":1615.8335447311401,"z":"f8623c76.ed22f","wires":[["3777ff14.c0513","4b6cc5aa.4b4eec"]]},{"id":"b1ec7d5.6bc228","type":"set","name":"set sub-interface_length","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface_length'\n  value='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface_length`' />\n","comments":"","x":2534.1669960021973,"y":1584.1667928695679,"z":"f8623c76.ed22f","wires":[]},{"id":"926fef64.9dec8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2329.167121887207,"y":1660.8335485458374,"z":"f8623c76.ed22f","wires":[["3ddfbe84.bb2f02","e5e18282.8be47"]]},{"id":"3ddfbe84.bb2f02","type":"set","name":"set sub-interface-port-id and name","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface[$sub-int-index].sub-interface-port-id'\n  value='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface[$sub-int-index].interface-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface[$sub-int-index].sub-interface-port-name'\n  value='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface[$sub-int-index].interface-name`' />\n","comments":"","x":2539.1670303344727,"y":1630.833152770996,"z":"f8623c76.ed22f","wires":[]},{"id":"e5e18282.8be47","type":"for","name":"for each result","xml":"<for silentFailure='true' index='idx3' start='0' end='`$tmp.aai.interfaces.results_length`' >\n","comments":"","outputs":1,"x":2482.500217437744,"y":1684.1666793823242,"z":"f8623c76.ed22f","wires":[["7cde3c9c.a7b444"]]},{"id":"7cde3c9c.a7b444","type":"switchNode","name":"is this our sub-interface?","xml":"<switch test='`$tmp.aai.interfaces.results[$idx3].l-interface.interface-id\n  == $tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface[$sub-int-index].interface-id`'>\n","comments":"","outputs":1,"x":2687.4999809265137,"y":1682.500054359436,"z":"f8623c76.ed22f","wires":[["2e797ab5.331e56"]]},{"id":"2e797ab5.331e56","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2870.833484649658,"y":1680.833306312561,"z":"f8623c76.ed22f","wires":[["beeb2940.977e28"]]},{"id":"beeb2940.977e28","type":"switchNode","name":"switch vlan-interface","xml":"<switch test='`$tmp.aai.interfaces.results[$idx3].l-interface.vlans.vlan[0].vlan-interface`'>\n","comments":"","outputs":1,"x":3044.1667442321777,"y":1680.8334283828735,"z":"f8623c76.ed22f","wires":[["a886aaa5.a50a88","26296b80.f2c3a4"]]},{"id":"a886aaa5.a50a88","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":3215.833324432373,"y":1654.1667070388794,"z":"f8623c76.ed22f","wires":[["1aa5dd41.0ac273"]]},{"id":"26296b80.f2c3a4","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3215.8332557678223,"y":1705.5953798294067,"z":"f8623c76.ed22f","wires":[["ec1afc13.71ed"]]},{"id":"1aa5dd41.0ac273","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3350.833667755127,"y":1652.5000944137573,"z":"f8623c76.ed22f","wires":[[]]},{"id":"ec1afc13.71ed","type":"for","name":"for each result","xml":"<for silentFailure='true' index='idx4' start='0' end='`$tmp.aai.interfaces.results_length`' >\n","comments":"","outputs":1,"x":3370.833324432373,"y":1704.833333015442,"z":"f8623c76.ed22f","wires":[["a14caea3.219c2"]]},{"id":"a14caea3.219c2","type":"switchNode","name":"is this our vlan-interface?","xml":"<switch test='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-interface\n  == $tmp.aai.interfaces.results[$idx3].l-interface.vlans.vlan[0].vlan-interface`'>\n","comments":"","outputs":1,"x":3577.5002098083496,"y":1702.5000562667847,"z":"f8623c76.ed22f","wires":[["4560edb.1312014"]]},{"id":"4560edb.1312014","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3765.833324432373,"y":1700.833333015442,"z":"f8623c76.ed22f","wires":[["14852af5.9d3e25"]]},{"id":"c6c2c72f.3a89a8","type":"set","name":"set vlan-id-inner","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface[$sub-int-index].vlan-tags.lower-tag-id'\n  value='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-inner`' />\n","comments":"","x":4387.499423980713,"y":1767.5001745224,"z":"f8623c76.ed22f","wires":[]},{"id":"8bad2f56.15d21","type":"set","name":"increment dest-vnfc-index","xml":"<set>\n<parameter name='dest-vnfc-index' value='`$dest-vnfc-index + 1`' />\n","comments":"","x":1882.5000953674316,"y":1721.6665964126587,"z":"f8623c76.ed22f","wires":[]},{"id":"f1a8d7b0.c91308","type":"set","name":"set dest vnfc_length","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length'\n  value='`$dest-vnfc-index`' />\n","comments":"","x":1264.9999313354492,"y":1651.666732788086,"z":"f8623c76.ed22f","wires":[]},{"id":"4b6cc5aa.4b4eec","type":"switchNode","name":"switch sub-interface_length","xml":"<switch test='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface_length`'>\n","comments":"","outputs":1,"x":2164.166576385498,"y":1566.6667928695679,"z":"f8623c76.ed22f","wires":[["47257f1c.167e7","a5bf4aca.ad6b78"]]},{"id":"47257f1c.167e7","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2355.8335666656494,"y":1538.333264350891,"z":"f8623c76.ed22f","wires":[["3d39a9b5.2adb26"]]},{"id":"a5bf4aca.ad6b78","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2355.833652496338,"y":1584.7619524002075,"z":"f8623c76.ed22f","wires":[["b1ec7d5.6bc228"]]},{"id":"3d39a9b5.2adb26","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2485.8334980010986,"y":1536.6666955947876,"z":"f8623c76.ed22f","wires":[[]]},{"id":"14852af5.9d3e25","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3895.833148956299,"y":1700.0000495910645,"z":"f8623c76.ed22f","wires":[["c14b73d3.1ad8","7c3e4161.6f73d"]]},{"id":"c14b73d3.1ad8","type":"switchNode","name":"switch vlan-id-outer","xml":"<switch test='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-outer`'>\n","comments":"","outputs":1,"x":4064.1665687561035,"y":1649.999966621399,"z":"f8623c76.ed22f","wires":[["e8f9eac.741b218","725f703b.5cee3"]]},{"id":"7c3e4161.6f73d","type":"switchNode","name":"switch vlan-id-inner","xml":"<switch test='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-inner`'>\n","comments":"","outputs":1,"x":4059.1664085388184,"y":1739.999888420105,"z":"f8623c76.ed22f","wires":[["8923abb6.2dbd48","62b2ad9b.0fa3b4"]]},{"id":"e8f9eac.741b218","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":4232.499828338623,"y":1623.3332796096802,"z":"f8623c76.ed22f","wires":[["61becc28.cce2e4"]]},{"id":"725f703b.5cee3","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":4232.499759674072,"y":1674.7619524002075,"z":"f8623c76.ed22f","wires":[["a88547d7.d958c8"]]},{"id":"8923abb6.2dbd48","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":4230.833324432373,"y":1716.6666536331177,"z":"f8623c76.ed22f","wires":[["ca757dd6.520e8"]]},{"id":"62b2ad9b.0fa3b4","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":4230.833255767822,"y":1768.095326423645,"z":"f8623c76.ed22f","wires":[["c6c2c72f.3a89a8"]]},{"id":"a88547d7.d958c8","type":"set","name":"set vlan-id-outer","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface[$sub-int-index].vlan-tags.upper-tag-id'\n  value='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-outer`' />\n","comments":"","x":4389.166744232178,"y":1673.9998865127563,"z":"f8623c76.ed22f","wires":[]},{"id":"61becc28.cce2e4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4365.833080291748,"y":1620.0000276565552,"z":"f8623c76.ed22f","wires":[[]]},{"id":"ca757dd6.520e8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4365.833080291748,"y":1716.6666536331177,"z":"f8623c76.ed22f","wires":[[]]},{"id":"3f5e80f8.43f3d","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n<parameter name='' value='' />\n","comments":"","x":488.3333320617676,"y":1696.6666345596313,"z":"f8623c76.ed22f","wires":[]},{"id":"9940332d.0af4b","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2095.0000019073486,"y":1201.6666316986084,"z":"f8623c76.ed22f","wires":[[]]},{"id":"35031a2.12d7ee6","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1950.0000305175781,"y":1250.0000190734863,"z":"f8623c76.ed22f","wires":[["ddf754e6.0660b8"]]},{"id":"ddf754e6.0660b8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1687.5000228881836,"y":1545.0000228881836,"z":"f8623c76.ed22f","wires":[["fb0ab57b.9d3938","8bad2f56.15d21"]]},{"id":"9397b293.f8635","type":"set","name":"set vnfc-name","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnfc-name'\n  value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$src-vnfc-index].vnfc-name`' />\n","comments":"","x":1698.3333168029785,"y":1123.3332967758179,"z":"f8623c76.ed22f","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-assign.json
new file mode 100755
index 0000000..3a32d71
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-assign.json
@@ -0,0 +1 @@
+[{"id":"84739dbd.562b4","type":"dgstart","name":"DGSTART","outputs":1,"x":120,"y":95,"z":"b47e4028.e9a92","wires":[["fa00f3bb.df6cd"]]},{"id":"fa00f3bb.df6cd","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":233.85713577270508,"y":134.80953788757324,"z":"b47e4028.e9a92","wires":[["17b1d2c2.856c2d"]]},{"id":"17b1d2c2.856c2d","type":"method","name":"method vf-module-topology-vlan-tagging-assign","xml":"<method rpc='vf-module-topology-vlan-tagging-assign' mode='sync'>\n","comments":"","outputs":1,"x":237.76195526123047,"y":176.66666316986084,"z":"b47e4028.e9a92","wires":[["b7a3821f.fc675"]]},{"id":"122d37e0.d78888","type":"comment","name":"vf-module-topology-vlan-tagging-assign","info":"","comments":"","x":525.3210983276367,"y":37.97569942474365,"z":"b47e4028.e9a92","wires":[]},{"id":"73a704cf.e221cc","type":"get-resource","name":"get-resource group uuids","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"select distinct vmvm.vm_type, rg.group_uuid from VF_MODULE_TO_VFC_MAPPING vmvm, VFC_MODEL vm,\n  RESOURCE_GROUP_TO_TARGET_NODE_MAPPING rgm, RESOURCE_GROUP rg\n\twhere vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid\n\tand vmvm.vfc_customization_uuid = vm.customization_uuid\n\tand vmvm.vm_type = vm.vm_type\n\tand vm.uuid = rgm.target_node_uuid\n\tand rgm.target_type = 'CVFC'\n\tand rgm.group_uuid = rg.group_uuid\"\n  pfx='db.group-uuids[]'>\n\n","comments":"","outputs":1,"x":413.0000457763672,"y":1503.3333415985107,"z":"b47e4028.e9a92","wires":[["4b097e30.86422","1268ca71.5e3336","22ed74ea.6b1b1c"]]},{"id":"4b097e30.86422","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":662.1190910339355,"y":1413.714147567749,"z":"b47e4028.e9a92","wires":[["881c6e66.6f00e"]]},{"id":"1268ca71.5e3336","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":667.0238304138184,"y":1489.3331089019775,"z":"b47e4028.e9a92","wires":[["12fdec15.45d1b4"]]},{"id":"afd16428.1e4408","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=\"System error getting group uuids from DB\" />\n","comments":"","x":976.6667442321777,"y":1413.6666221618652,"z":"b47e4028.e9a92","wires":[]},{"id":"22ed74ea.6b1b1c","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":665.5718688964844,"y":1571.5716552734375,"z":"b47e4028.e9a92","wires":[["dc17103b.405dd"]]},{"id":"2e66316f.2aaede","type":"set","name":"set tmp.vm-type_length","xml":"<set>\n<parameter name='tmp.vm-type_length' value='`$db.vm-type-inst-func_length`' />\n","comments":"","x":4934.214881896973,"y":731.5960290431976,"z":"b47e4028.e9a92","wires":[]},{"id":"9616311b.542ae","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4711.357864379883,"y":884.1675074100494,"z":"b47e4028.e9a92","wires":[["2e66316f.2aaede","d2ae3323.a20bc","2c14cb5b.c7d874","f2e246cf.107018"]]},{"id":"d2ae3323.a20bc","type":"for","name":"for each db vm-type","xml":"<for index='vm-type-index' start='0' end='`$db.vm-type-inst-func_length`' >\n","comments":"","outputs":1,"x":4922.215019226074,"y":763.024307012558,"z":"b47e4028.e9a92","wires":[["50b30664.abbed8"]]},{"id":"50b30664.abbed8","type":"set","name":"set tmp.vm-type[].vm-type and instance-group-function","xml":"<set>\n<parameter name='tmp.vm-type[$vm-type-index].vm-type' value='`$db.vm-type-inst-func[$vm-type-index].vm-type`' />\n<parameter name='tmp.vm-type[$vm-type-index].instance-group-function' value='`$db.vm-type-inst-func[$vm-type-index].attribute-value`' />\n","comments":"","x":5236.500591278076,"y":763.0245864391327,"z":"b47e4028.e9a92","wires":[]},{"id":"2c14cb5b.c7d874","type":"for","name":"for each instance group","xml":"<for index='ig-index' start='0' end='`$tmp.vm-type_length`' >\n","comments":"","outputs":1,"x":4936.453136444092,"y":1053.548066854477,"z":"b47e4028.e9a92","wires":[["1c6f5b80.b9f625"]]},{"id":"1c6f5b80.b9f625","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":5138.453170776367,"y":1052.1194140911102,"z":"b47e4028.e9a92","wires":[["3b0c05dc.2414da","c88a2d60.323cb","688d429e.2c231c","a9d55515.96d218","44b58669.183b78","61275292.ea0b2c","daa6fa1b.194cd8","a65f8578.358528","9572812.43b0d8","28ac4224.2be28e"]]},{"id":"8c47a6b5.66f338","type":"comment","name":"TODO: retrieve instance-group from A&AI","info":"","comments":"","x":5463.643356323242,"y":1127.3103320598602,"z":"b47e4028.e9a92","wires":[]},{"id":"e2862d21.e8842","type":"set","name":"set vlan-vnfc-instance-group data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].instance-group-id'\n  value=\"bgb-net-inst-group-1\" />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].instance-group-function'\n  value=\"`$tmp.vm-type[$ig-index].instance-group-function`\" />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vnf-id'\n  value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-id`\" />\n","comments":"","x":5837.881393432617,"y":1171.8337695598602,"z":"b47e4028.e9a92","wires":[]},{"id":"f2e246cf.107018","type":"set","name":"set vlan-vnfc-instance-group_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length'\n  value='`$tmp.vm-type_length`' />\n","comments":"","x":4969.50065612793,"y":813.1672656536102,"z":"b47e4028.e9a92","wires":[]},{"id":"a9d55515.96d218","type":"set","name":"set vnfc_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vnfcs.vnfc_length'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' />\n","comments":"","x":5382.833786010742,"y":1519.8337695598602,"z":"b47e4028.e9a92","wires":[]},{"id":"881c6e66.6f00e","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":812.9999809265137,"y":1413.3331279754639,"z":"b47e4028.e9a92","wires":[["afd16428.1e4408"]]},{"id":"44b58669.183b78","type":"for","name":"for each vnfc","xml":"<for index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":5369.5003662109375,"y":1624.1667964458466,"z":"b47e4028.e9a92","wires":[["9baf3641.f4fbc8"]]},{"id":"3b0c05dc.2414da","type":"set","name":"set found-vm-type to false","xml":"<set>\n<parameter name='found-vm-type' value='false' />\n","comments":"","x":5413.500411987305,"y":1312.1667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"c88a2d60.323cb","type":"for","name":"for each vm-type","xml":"<for index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":5387.500411987305,"y":1366.1667773723602,"z":"b47e4028.e9a92","wires":[["742589d9.79f2d8"]]},{"id":"742589d9.79f2d8","type":"switchNode","name":"vm-types match?","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n  == $tmp.vm-type[$ig-index].vm-type`'>\n","comments":"","outputs":1,"x":5587.500411987305,"y":1365.1667773723602,"z":"b47e4028.e9a92","wires":[["cc993dc7.e829a"]]},{"id":"cc993dc7.e829a","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":5755.500411987305,"y":1364.1667773723602,"z":"b47e4028.e9a92","wires":[["2c85978.0797b68"]]},{"id":"2c85978.0797b68","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":5911.500411987305,"y":1364.1667773723602,"z":"b47e4028.e9a92","wires":[["c2de66da.adf908","7b235f79.2456"]]},{"id":"c2de66da.adf908","type":"set","name":"set found-vm-type to true","xml":"<set>\n<parameter name='found-vm-type' value='true' />\n","comments":"","x":6129.500411987305,"y":1334.1667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"7b235f79.2456","type":"break","name":"break","xml":"<break>\n","comments":"","x":6071.500411987305,"y":1384.1667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"688d429e.2c231c","type":"switchNode","name":"switch found-vm-type","xml":"<switch test='`$found-vm-type`'>\n","comments":"","outputs":1,"x":5401.500411987305,"y":1446.1667773723602,"z":"b47e4028.e9a92","wires":[["5b4e5adb.ebfc74"]]},{"id":"5b4e5adb.ebfc74","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":5585.500411987305,"y":1446.1667773723602,"z":"b47e4028.e9a92","wires":[["463f1ac9.ab06a4"]]},{"id":"463f1ac9.ab06a4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":5741.500411987305,"y":1446.1667773723602,"z":"b47e4028.e9a92","wires":[["9485f45e.dde5c8","a844387a.824798"]]},{"id":"a844387a.824798","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=\"`'AAI provided vm-type ' +\n      $tmp.vm-type[$ig-index].vm-type + ' but that was not found in vf-module-assignments.vms'`\" />\n","comments":"","x":5909.500411987305,"y":1466.1667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"9485f45e.dde5c8","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-assign-rollback","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' >\n","comments":"","outputs":1,"x":6081.83366394043,"y":1425.8332812786102,"z":"b47e4028.e9a92","wires":[[]]},{"id":"cf61ffc1.46d9f","type":"set","name":"set vnfc name","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vnfcs.vnfc[$vnfc-index].vnfc-name'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`' />\n","comments":"","x":5735.500457763672,"y":1550.166758298874,"z":"b47e4028.e9a92","wires":[]},{"id":"9baf3641.f4fbc8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":5553.500289916992,"y":1623.1667773723602,"z":"b47e4028.e9a92","wires":[["cf61ffc1.46d9f","fb2ba3c9.274db","3d91abff.5eaaa4"]]},{"id":"fb2ba3c9.274db","type":"save","name":"save instance-group relationships","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"instance-group:relationship-list\"\n   key=\"instance-group.id = $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].instance-group-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"vnfc\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/vnfcs/vnfc/' +\n        $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`\" />\n","comments":"","outputs":1,"x":5793.500335693359,"y":1621.166758298874,"z":"b47e4028.e9a92","wires":[["845c383c.277dc8","8e7375eb.ebbee8"]]},{"id":"845c383c.277dc8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":6013.333679199219,"y":1592.0385024547577,"z":"b47e4028.e9a92","wires":[["39d3f6b9.39218a"]]},{"id":"8e7375eb.ebbee8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":6021.905212402344,"y":1644.657646894455,"z":"b47e4028.e9a92","wires":[["f06696dc.dc5f68"]]},{"id":"61275292.ea0b2c","type":"switchNode","name":"DUMMY switch vm-type","xml":"<switch test='`$tmp.vm-type[$ig-index].vm-type`'>\n","comments":"","outputs":1,"x":5407.500289916992,"y":1199.1667773723602,"z":"b47e4028.e9a92","wires":[["bb2ba824.932678","79d4dac2.814e14"]]},{"id":"bb2ba824.932678","type":"outcome","name":"vm-type-5","xml":"<outcome value='vm-type-5'>\n","comments":"","outputs":1,"x":5601.500411987305,"y":1171.1667773723602,"z":"b47e4028.e9a92","wires":[["e2862d21.e8842"]]},{"id":"79d4dac2.814e14","type":"outcome","name":"vm-type-6","xml":"<outcome value='vm-type-6'>\n","comments":"","outputs":1,"x":5603.500411987305,"y":1217.1667773723602,"z":"b47e4028.e9a92","wires":[["dd634dbd.a8bf3"]]},{"id":"dd634dbd.a8bf3","type":"set","name":"set vlan-vnfc-instance-group data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].instance-group-id'\n  value=\"bgb-net-inst-group-2\" />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].instance-group-function'\n  value=\"`$tmp.vm-type[$ig-index].instance-group-function`\" />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vnf-id'\n  value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-id`\" />\n","comments":"","x":5835.500411987305,"y":1217.1667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"39d3f6b9.39218a","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":6183.500411987305,"y":1591.1667773723602,"z":"b47e4028.e9a92","wires":[["d3d8f852.725398","558f4bd3.863124"]]},{"id":"f06696dc.dc5f68","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":6181.500411987305,"y":1643.1667773723602,"z":"b47e4028.e9a92","wires":[["17e16892.ac0c77","558f4bd3.863124"]]},{"id":"d3d8f852.725398","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=\"System error creating instance-group relationship to vnfc\" />\n","comments":"","x":6361.500411987305,"y":1591.1667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"17e16892.ac0c77","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=\"`'Not-found error relating instance group '\n      + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].instance-group-id\n      + ' to vnfc '\n      + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`\" />\n","comments":"","x":6359.500411987305,"y":1641.1667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"558f4bd3.863124","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-assign-rollback","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' >\n","comments":"","outputs":1,"x":6553.500411987305,"y":1537.1667773723602,"z":"b47e4028.e9a92","wires":[[]]},{"id":"3d91abff.5eaaa4","type":"set","name":"set data-created","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vnfcs.vnfc[$vnfc-index].data-created' value='true' />\n","comments":"","x":5739.500411987305,"y":1699.1667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"daa6fa1b.194cd8","type":"set","name":"set vm-type (tmp)","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vm-type'\n  value='`$tmp.vm-type[$ig-index].vm-type`' />\n","comments":"","x":5385.500411987305,"y":1257.1667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"d048ce24.237da","type":"set","name":"DUMMY set first vnic-group data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vnfcs.vnfc[0].vnic-interface-role'\n  value='network-role-5' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vnfcs.vnfc[0].sub-interface-capability-policy-name'\n  value='SDNC_Policy.Config_MS_TestSubInterfaceCapabilityVlanTagging01.*' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vnfcs.vnfc[0].network-collection-function'\n  value='network-collection-function-5' />\n","comments":"","x":6365.500411987305,"y":1841.1667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"120733c7.ca097c","type":"comment","name":"TODO: get TOSCA data","info":"","comments":"","x":5401.500411987305,"y":1769.1667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"a65f8578.358528","type":"switchNode","name":"switch vnfc_length","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vnfcs.vnfc_length`'>\n","comments":"","outputs":1,"x":5389.500411987305,"y":1815.1667773723602,"z":"b47e4028.e9a92","wires":[["9c786886.745c48","8a536d16.65c42","aee0285a.6d2328"]]},{"id":"9c786886.745c48","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":5575.500411987305,"y":1759.1667773723602,"z":"b47e4028.e9a92","wires":[["e8ce841a.7b1498"]]},{"id":"aee0285a.6d2328","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":5573.929000854492,"y":1943.4524219036102,"z":"b47e4028.e9a92","wires":[["b640c124.919db"]]},{"id":"8a536d16.65c42","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":5573.500411987305,"y":1801.1667773723602,"z":"b47e4028.e9a92","wires":[["e8ce841a.7b1498"]]},{"id":"e8ce841a.7b1498","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":5711.500411987305,"y":1777.1667773723602,"z":"b47e4028.e9a92","wires":[[]]},{"id":"b640c124.919db","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":5737.500411987305,"y":1942.1667773723602,"z":"b47e4028.e9a92","wires":[["96bfda47.08a858","52d6996a.a96b78"]]},{"id":"96bfda47.08a858","type":"switchNode","name":"DUMMY switch vm-type","xml":"<switch test='`$tmp.vm-type[$ig-index].vm-type`'>\n","comments":"","outputs":1,"x":5947.500411987305,"y":1871.1667773723602,"z":"b47e4028.e9a92","wires":[["53ef78e8.b92498","337f56ea.cd954a"]]},{"id":"53ef78e8.b92498","type":"outcome","name":"vm-type-5","xml":"<outcome value='vm-type-5'>\n","comments":"","outputs":1,"x":6141.500534057617,"y":1843.1667773723602,"z":"b47e4028.e9a92","wires":[["d048ce24.237da"]]},{"id":"337f56ea.cd954a","type":"outcome","name":"vm-type-6","xml":"<outcome value='vm-type-6'>\n","comments":"","outputs":1,"x":6143.500534057617,"y":1889.1667773723602,"z":"b47e4028.e9a92","wires":[["bc9a2845.e7d7b8"]]},{"id":"bc9a2845.e7d7b8","type":"set","name":"DUMMY set first vnic-group data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vnfcs.vnfc[0].vnic-interface-role'\n  value='network-role-6' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vnfcs.vnfc[0].sub-interface-capability-policy-name'\n  value='SDNC_Policy.Config_MS_TestSubInterfaceCapabilityVlanTagging01.*' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vnfcs.vnfc[0].network-collection-function'\n  value='network-collection-function-6' />\n","comments":"","x":6363.500411987305,"y":1889.1667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"52d6996a.a96b78","type":"get-resource","name":"get-resource vnic counts","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"select ipv4-count, ipv6-count from VF_MODULE_TO_VFC_MAPPING vmvm, VFC_TO_NETWORK_ROLE_MAPPING vnrm\n\twhere vmvm.vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid\n\tand vmvm.vm_type = $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vm-type\n\tand vmvm.vfc_customization_uuid = vnrm.vfc_customization_uuid\"\n  pfx='db.ip-counts'>\n\n","comments":"","outputs":1,"x":5953.500534057617,"y":2017.1667773723602,"z":"b47e4028.e9a92","wires":[["9cdbf2e1.b72b6","6b06972c.2beaa8"]]},{"id":"6b06972c.2beaa8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":6139.500411987305,"y":1993.1667773723602,"z":"b47e4028.e9a92","wires":[["472f1b53.015fa4"]]},{"id":"9cdbf2e1.b72b6","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":6146.405197143555,"y":2042.7859179973602,"z":"b47e4028.e9a92","wires":[["622625a8.2f1acc"]]},{"id":"115158bc.b293c7","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=\"System error getting IP counts from TOSCA\" />\n","comments":"","x":6473.500534057617,"y":1991.1667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"aaf7198c.630318","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=\"`'Not-found error getting IP counts from TOSCA for VM type '\n      + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$ig-index].vm-type`\" />\n","comments":"","x":6473.500534057617,"y":2041.1667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"d6af967f.3bb488","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-assign-rollback","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' >\n","comments":"","outputs":1,"x":6683.500534057617,"y":1939.1667773723602,"z":"b47e4028.e9a92","wires":[[]]},{"id":"12fdec15.45d1b4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":818.9999046325684,"y":1490.3331089019775,"z":"b47e4028.e9a92","wires":[[]]},{"id":"28ac4224.2be28e","type":"get-resource","name":"get-resource instance group function","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"select attribute_value from VF_MODULE_MODEL vmm, VF_MODEL vf, ATTRIBUTE_VALUE_PAIR avp\n\twhere vmm.customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid\n\tand vmm.vf_customization_uuid = vf.customization_uuid\n\tand vf.uuid = avp.resource_uuid\n\tand vmm.vf_customization_uuid = avp.resource_customization_uuid\n\tand avp.attribute_name = $tmp.vm-type[$ig-index].instance-group-function\"\n  pfx='db.attribute-value'>\n\n","comments":"","outputs":1,"x":5445.000289916992,"y":1016.6667773723602,"z":"b47e4028.e9a92","wires":[["26952ac4.2bb826","3171fe2a.9cbe32","fe8c8e5.f712d7"]]},{"id":"9572812.43b0d8","type":"execute","name":"instance-group-function starts with 'get_input='?","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"startsWith\" emitsOutcome='true' >\n<parameter name=\"source\" value=\"`$tmp.vm-type[$ig-index].instance-group-function`\" />\n<parameter name=\"target\" value=\"get_input=\" />\n","comments":"","outputs":1,"x":5483.000289916992,"y":890.6667773723602,"z":"b47e4028.e9a92","wires":[["43b4ce83.bedb1","91883493.44df88"]]},{"id":"91883493.44df88","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":5739.000289916992,"y":924.6667773723602,"z":"b47e4028.e9a92","wires":[["f23425c5.588cf8"]]},{"id":"43b4ce83.bedb1","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":5739.000297546387,"y":838.6669900417328,"z":"b47e4028.e9a92","wires":[["5f6db9ea.a70418"]]},{"id":"60117b57.b4fc44","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-assign-rollback","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' >\n","comments":"","outputs":1,"x":6241.000301361084,"y":814.3333327770233,"z":"b47e4028.e9a92","wires":[[]]},{"id":"935eed0b.82ea5","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=\"`'Instance group function retrieved from TOSCA data is '\n      + $tmp.vm-type[$ig-index].instance-group-function\n      + ' but does not start with get_input='`\" />\n","comments":"","x":6069.000301361084,"y":856.3333327770233,"z":"b47e4028.e9a92","wires":[]},{"id":"4a0b0c56.a3a1e4","type":"execute","name":"truncate past 'get_input=' part","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>\n  <parameter name='result' value='tmp.truncated-value' />\n  <parameter name='string' value='`$db.parameters[$parameter-index].attribute-value`' />\n  <parameter name='begin-index' value='10' />\n","comments":"","outputs":1,"x":3240.000030517578,"y":732.0002918243408,"z":"b47e4028.e9a92","wires":[[]]},{"id":"c4aacbc.35d4538","type":"comment","name":"Chop off 'get_input=' from front of instance group function","info":"","comments":"","x":5795.000228881836,"y":771.000321149826,"z":"b47e4028.e9a92","wires":[]},{"id":"26952ac4.2bb826","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":5659.000289916992,"y":974.6667773723602,"z":"b47e4028.e9a92","wires":[["f782ad84.9919b"]]},{"id":"3171fe2a.9cbe32","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":5665.905075073242,"y":1016.2859179973602,"z":"b47e4028.e9a92","wires":[["f782ad84.9919b"]]},{"id":"f72523e0.3a5a9","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":6659.452877044678,"y":1210.8576381206512,"z":"b47e4028.e9a92","wires":[[]]},{"id":"a69b3646.ba6638","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=\"`'Unable to determine instance group function name for '\n      + $tmp.vm-type[$ig-index].instance-group-function`\" />\n","comments":"","x":5997.000289916992,"y":988.6667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"5f6db9ea.a70418","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":5889.000297546387,"y":836.6669900417328,"z":"b47e4028.e9a92","wires":[["60117b57.b4fc44","935eed0b.82ea5"]]},{"id":"f782ad84.9919b","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":5821.000289916992,"y":990.6667773723602,"z":"b47e4028.e9a92","wires":[["a69b3646.ba6638","60117b57.b4fc44"]]},{"id":"fe8c8e5.f712d7","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":5661.000289916992,"y":1058.6667773723602,"z":"b47e4028.e9a92","wires":[["fd8ab42d.1aec78"]]},{"id":"fd8ab42d.1aec78","type":"set","name":"overwrite instance group function","xml":"<set>\n<parameter name='tmp.vm-type[$ig-index].instance-group-function'\n  value='`$db.attribute-value`' />\n","comments":"","x":5877.000289916992,"y":1058.6667773723602,"z":"b47e4028.e9a92","wires":[]},{"id":"472f1b53.015fa4","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":6287.000289916992,"y":1992.6667773723602,"z":"b47e4028.e9a92","wires":[["d6af967f.3bb488","115158bc.b293c7"]]},{"id":"622625a8.2f1acc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":6295.000289916992,"y":2040.6667773723602,"z":"b47e4028.e9a92","wires":[["d6af967f.3bb488","aaf7198c.630318"]]},{"id":"f23425c5.588cf8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":5890.333541870117,"y":924.9997851848602,"z":"b47e4028.e9a92","wires":[["d209577c.d09538"]]},{"id":"d209577c.d09538","type":"set","name":"overwrite instance-group-function name","xml":"<set>\n<parameter name='tmp.vm-type[$ig-index].instance-group-function' value='`$tmp.truncated-value`' />\n","comments":"","x":6150.333633422852,"y":948.3331725597382,"z":"b47e4028.e9a92","wires":[]},{"id":"2dfb03a0.76eedc","type":"comment","name":"No subinterfaces to be created","info":"","comments":"","x":1021.3331985473633,"y":1486.9998245239258,"z":"b47e4028.e9a92","wires":[]},{"id":"d6a108ce.e84058","type":"get-resource","name":"get-resource parameters","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"select attribute_name, attribute_value from ATTRIBUTE_VALUE_PAIR\n\twhere resource_uuid = $db.group-uuids[$group-index].group-uuid\n\tand attribute_name in ('vfc_instance_group_function','vfc_parent_port_role','network_collection_function')\"\n  pfx='db.parameters[]'>\n\n","comments":"","outputs":1,"x":1491.3334350585938,"y":575.9998474121094,"z":"b47e4028.e9a92","wires":[["a4afe263.1d375","9c57368f.cc2798","360f7297.4df8ee"]]},{"id":"4f1a6b56.d0d9c4","type":"for","name":"for each group uuid","xml":"<for index='group-index' start='0' end='`$db.group-uuids_length`' >\n","comments":"","outputs":1,"x":1022.6665954589844,"y":1568.6663818359375,"z":"b47e4028.e9a92","wires":[["cb3116d3.3e0178"]]},{"id":"a4afe263.1d375","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1687.999984741211,"y":501.33313941955566,"z":"b47e4028.e9a92","wires":[["f3d0f3fc.d2397"]]},{"id":"9c57368f.cc2798","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1691.2381286621094,"y":549.9523067474365,"z":"b47e4028.e9a92","wires":[["38b5a92d.df9d76"]]},{"id":"f3d0f3fc.d2397","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=\"System error getting parameters from ATTRIBUTE_VALUE_PAIR table\" />\n","comments":"","x":1836.547622680664,"y":501.28577041625977,"z":"b47e4028.e9a92","wires":[]},{"id":"38b5a92d.df9d76","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=\"`'Unable to find parameters ATTRIBUTE_VALUE_PAIR table for group ' + $db.group-uuids[$group-index].group-uuid`\" />\n","comments":"","x":1840.3333740234375,"y":550.3333740234375,"z":"b47e4028.e9a92","wires":[]},{"id":"360f7297.4df8ee","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1684.6667938232422,"y":710.6665306091309,"z":"b47e4028.e9a92","wires":[["d4f2099f.01cce8"]]},{"id":"dc17103b.405dd","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":818.6665954589844,"y":1570.6663818359375,"z":"b47e4028.e9a92","wires":[["4f1a6b56.d0d9c4"]]},{"id":"d4f2099f.01cce8","type":"for","name":"for each parameter","xml":"<for index='parameter-index' start='0' end='`$db.parameters_length`' >\n","comments":"","outputs":1,"x":1860.6667938232422,"y":710.6665306091309,"z":"b47e4028.e9a92","wires":[["4ed288af.675838"]]},{"id":"4ed288af.675838","type":"switchNode","name":"switch attribute-name","xml":"<switch test='`$db.parameters[$parameter-index].attribute-name`'>\n","comments":"","outputs":1,"x":2070.666793823242,"y":708.6665306091309,"z":"b47e4028.e9a92","wires":[["521b1d95.d56654","87067f4.d4d328","dc6d8794.884ec8"]]},{"id":"521b1d95.d56654","type":"outcome","name":"vfc_parent_port_role","xml":"<outcome value='vfc_parent_port_role'>\n","comments":"","outputs":1,"x":2306.333251953125,"y":592.3331909179688,"z":"b47e4028.e9a92","wires":[["94730a30.6be618"]]},{"id":"87067f4.d4d328","type":"outcome","name":"vfc_instance_group_function","xml":"<outcome value='vfc_instance_group_function'>\n","comments":"","outputs":1,"x":2332.9999465942383,"y":738.6664772033691,"z":"b47e4028.e9a92","wires":[["aa0389e6.47be48"]]},{"id":"dc6d8794.884ec8","type":"outcome","name":"network_collection_function","xml":"<outcome value='network_collection_function'>\n","comments":"","outputs":1,"x":2327.6665954589844,"y":858.6665172576904,"z":"b47e4028.e9a92","wires":[["84e024fa.3032d8"]]},{"id":"aa0389e6.47be48","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2558.9999465942383,"y":737.6664772033691,"z":"b47e4028.e9a92","wires":[["c9562823.b83258","8a2ae114.7b5fc","91fc7b41.155df8"]]},{"id":"84e024fa.3032d8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2558.9999465942383,"y":858.6664772033691,"z":"b47e4028.e9a92","wires":[["c9562823.b83258","8a2ae114.7b5fc","8c34c0a7.286db"]]},{"id":"c9562823.b83258","type":"execute","name":"starts with 'get_input='?","xml":"<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"startsWith\" emitsOutcome='true' >\n<parameter name=\"source\" value=\"`$db.parameters[$parameter-index].attribute-value`\" />\n<parameter name=\"target\" value=\"get_input=\" />\n","comments":"","outputs":1,"x":2837.666778564453,"y":700.9998035430908,"z":"b47e4028.e9a92","wires":[["76cf72a3.2c8a7c","e409b4e7.5c7e18"]]},{"id":"76cf72a3.2c8a7c","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":3039.666774749756,"y":662.9999647140503,"z":"b47e4028.e9a92","wires":[["e0ac34b2.d8e248"]]},{"id":"e409b4e7.5c7e18","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3039.666778564453,"y":732.9998035430908,"z":"b47e4028.e9a92","wires":[["4a0b0c56.a3a1e4"]]},{"id":"91fc7b41.155df8","type":"set","name":"set vfc-instance-group-function value","xml":"<set>\n<parameter name='db.group-uuids[$group-index].vfc-instance-group-function' value='`$db.mapped-value.attribute-value`' />\n","comments":"","x":2882.333450317383,"y":854.3331108093262,"z":"b47e4028.e9a92","wires":[]},{"id":"8c34c0a7.286db","type":"set","name":"set network-collection-function value","xml":"<set>\n<parameter name='db.group-uuids[$group-index].network-collection-function' value='`$db.mapped-value.attribute-value`' />\n","comments":"","x":2879.333450317383,"y":902.6665077209473,"z":"b47e4028.e9a92","wires":[]},{"id":"cb3116d3.3e0178","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1211.6665954589844,"y":1568.3328857421875,"z":"b47e4028.e9a92","wires":[["ca18b446.544648","c625b42e.798378","24b7267.1df7bda","45843b31.c96d54","f833746b.1da0b8","a78de9bc.9c1a98","9d55b433.493f78","607082a0.d4249c","712bdfb7.74ee2","b6b5f931.eb4598","6c45eb32.9476b4","54ac6f71.5bbed","6ea857c3.2c1b58","e6e58901.9f43c8","885a5381.33f42","7ba342c.2344dbc","dfadd88e.36b558","d6a108ce.e84058","ecfd0fc4.045e","11be98c3.df80d7","34aa0803.4c3f08","65531882.49e7d8","18de97dd.b1aee8","e0a1c55a.c2c798","9f02d7a9.1c3a78","e95311b7.510f6","79bfeb99.430a74"]]},{"id":"11be98c3.df80d7","type":"get-resource","name":"get-resource instance group","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n  resource=\"instance-groups\" \n  key=\"instance-group.instance-group-function = $db.group-uuids[$group-index].vfc-instance-group-function\n    AND instance-group.instance-group-type = 'VNFC'\"\n  pfx='aai.instance-group' local-only='false' >\n\n","comments":"","outputs":1,"x":1512.333164215088,"y":1013.8329200744629,"z":"b47e4028.e9a92","wires":[["2c8f4549.fc1f8a","eb4f7227.341d2"]]},{"id":"eb4f7227.341d2","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1726.5792922973633,"y":1036.9837646484375,"z":"b47e4028.e9a92","wires":[["a9147101.d3e86"]]},{"id":"2c8f4549.fc1f8a","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1735.5079536437988,"y":990.2695093154907,"z":"b47e4028.e9a92","wires":[["c1ac3025.61603"]]},{"id":"9e43dd49.5a752","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n","comments":"","x":421.3333435058594,"y":3041.666540145874,"z":"b47e4028.e9a92","wires":[]},{"id":"b7a3821f.fc675","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":121.66665649414062,"y":2009.666404724121,"z":"b47e4028.e9a92","wires":[["73a704cf.e221cc","9e43dd49.5a752"]]},{"id":"e0ac34b2.d8e248","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\"\n      value=\"`'Parameter value for '\n        + $db.parameters[$parameter-index].attribute-name\n        + ' is '\n        + $db.parameters[$parameter-index].attribute-value\n        + ' but was expected to start with get_input='`\" />\n","comments":"","x":3185.666778564453,"y":662.6663074493408,"z":"b47e4028.e9a92","wires":[]},{"id":"8a2ae114.7b5fc","type":"get-resource","name":"get-resource instance group function","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"select attribute_value from VF_MODULE_MODEL vmm, VF_MODEL vf, ATTRIBUTE_VALUE_PAIR avp\n\twhere vmm.customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid\n\tand vmm.vf_customization_uuid = vf.customization_uuid\n\tand vf.uuid = avp.resource_uuid\n\tand vmm.vf_customization_uuid = avp.resource_customization_uuid\n\tand avp.attribute_name = $tmp.truncated-value\"\n  pfx='db.mapped-value'>\n\n","comments":"","outputs":1,"x":2876.6666145324707,"y":796.6665725708008,"z":"b47e4028.e9a92","wires":[["324c2535.eee8aa","839877d1.d651b8"]]},{"id":"324c2535.eee8aa","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":3094.000068664551,"y":774.6665668487549,"z":"b47e4028.e9a92","wires":[["3f68af66.76793"]]},{"id":"839877d1.d651b8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":3100.904853820801,"y":816.2857074737549,"z":"b47e4028.e9a92","wires":[["b12f7607.be9608"]]},{"id":"3f68af66.76793","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\"\n      value=\"`'System error retrieving mapped parameter value for '\n        + $db.parameters[$parameter-index].attribute-name`\" />\n","comments":"","x":3251.666534423828,"y":773.3332462310791,"z":"b47e4028.e9a92","wires":[]},{"id":"b12f7607.be9608","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\"\n      value=\"`'Unable to find mapped parameter value for '\n        + $db.parameters[$parameter-index].attribute-name\n        + ' value '\n        + $tmp.truncated-value`\" />\n","comments":"","x":3251.666816711426,"y":814.9999408721924,"z":"b47e4028.e9a92","wires":[]},{"id":"94730a30.6be618","type":"set","name":"set vfc_parent_port_role value","xml":"<set>\n<parameter name='db.group-uuids[$group-index].vfc_parent_port_role' value='`$db.parameters[$parameter-index].attribute-value`' />\n","comments":"","x":2550.0000228881836,"y":591.6666488647461,"z":"b47e4028.e9a92","wires":[]},{"id":"c1ac3025.61603","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\"\n      value=\"`'Unable to find AAI instance-group for instance-group-function '\n        + $db.group-uuids[$group-index].vfc-instance-group-function\n        + ' and instance-group-type VNFC'`\" />\n","comments":"","x":1893.6665306091309,"y":988.8333911895752,"z":"b47e4028.e9a92","wires":[]},{"id":"a9147101.d3e86","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\"\n      value=\"`'System error getting AAI instance-group for instance-group-function '\n        + $db.group-uuids[$group-index].vfc-instance-group-function\n        + ' and instance-group-type VNFC'`\" />\n","comments":"","x":1893.6664657592773,"y":1036.8333797454834,"z":"b47e4028.e9a92","wires":[]},{"id":"18236b4f.7d3b25","type":"for","name":"for each existing vlan-vnfc-instance-group","xml":"<for index='vvig-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`' >\n","comments":"","outputs":1,"x":2256.666519165039,"y":1300.3335075378418,"z":"b47e4028.e9a92","wires":[["3c6ce8f8.909cb8"]]},{"id":"3c6ce8f8.909cb8","type":"switchNode","name":"instance-group-id exists already?","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-id\n == $aai.instance-group.instance-group[$aai-ig-index].id`'>\n","comments":"","outputs":1,"x":2582.666519165039,"y":1300.3335075378418,"z":"b47e4028.e9a92","wires":[["19d5c419.1f3fdc"]]},{"id":"ca18b446.544648","type":"switchNode","name":"switch existing vlan-vnfc-instance-group_length","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`'>\n","comments":"","outputs":1,"x":1578.3332824707031,"y":1270.3335180282593,"z":"b47e4028.e9a92","wires":[["de3bc458.faade8","7cda058.8f04dfc","17bb1c1.4cf0fe4"]]},{"id":"de3bc458.faade8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1838.3332824707031,"y":1234.3335180282593,"z":"b47e4028.e9a92","wires":[["b24476d0.6a1e28"]]},{"id":"b24476d0.6a1e28","type":"set","name":"set vvig-index to 0","xml":"<set>\n<parameter name='vvig-index' value='0' />\n","comments":"","x":2016.9999694824219,"y":1233.3334712982178,"z":"b47e4028.e9a92","wires":[]},{"id":"7cda058.8f04dfc","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1836.3332824707031,"y":1276.3335180282593,"z":"b47e4028.e9a92","wires":[["e996e2b3.26634"]]},{"id":"e996e2b3.26634","type":"break","name":"break","xml":"<break>\n","comments":"","x":1980.3332824707031,"y":1276.3335180282593,"z":"b47e4028.e9a92","wires":[]},{"id":"17bb1c1.4cf0fe4","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1838.3332824707031,"y":1320.3335180282593,"z":"b47e4028.e9a92","wires":[["bd9d1f00.4179b"]]},{"id":"19d5c419.1f3fdc","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2796.666519165039,"y":1298.3335075378418,"z":"b47e4028.e9a92","wires":[["fad5dc3c.3bbc9"]]},{"id":"fad5dc3c.3bbc9","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\"\n      value=\"`'Instance group id '\n        + $aai.instance-group.instance-group[$aai-ig-index].id\n        + ' already exists in MD-SAL under vlan-vnfc-instance-groups'`\" />\n","comments":"","x":2946.666519165039,"y":1296.3335075378418,"z":"b47e4028.e9a92","wires":[]},{"id":"c625b42e.798378","type":"set","name":"set vlan-vnfc-instance-group data","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-id'\n  value='`$aai.instance-group.instance-group[$aai-ig-index].id`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-function'\n  value='`$db.group-uuids[$group-index].vfc-instance-group-function`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnf-id'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-id`' />\n","comments":"","x":1537.4999694824219,"y":1376.8336296081543,"z":"b47e4028.e9a92","wires":[]},{"id":"24b7267.1df7bda","type":"set","name":"set new vlan-vnfc-instance-group_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length'\n  value='`$vvig-index + 1`' />\n","comments":"","x":1556.8331680297852,"y":1428.1668100357056,"z":"b47e4028.e9a92","wires":[]},{"id":"607082a0.d4249c","type":"set","name":"set vnfc_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' />\n","comments":"","x":1478.0001182556152,"y":1753.0001907348633,"z":"b47e4028.e9a92","wires":[]},{"id":"712bdfb7.74ee2","type":"for","name":"for each vnfc","xml":"<for index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":1473.0001182556152,"y":1853.999870300293,"z":"b47e4028.e9a92","wires":[["a0d4952d.f2b928"]]},{"id":"f833746b.1da0b8","type":"set","name":"set found-vm-type to false","xml":"<set>\n<parameter name='found-vm-type' value='false' />\n","comments":"","x":1508.6667251586914,"y":1555.3332386016846,"z":"b47e4028.e9a92","wires":[]},{"id":"a78de9bc.9c1a98","type":"for","name":"for each vm-type","xml":"<for index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >\n","comments":"","outputs":1,"x":1482.6667251586914,"y":1609.3332386016846,"z":"b47e4028.e9a92","wires":[["c521ab26.8c7ae8"]]},{"id":"c521ab26.8c7ae8","type":"switchNode","name":"vm-types match?","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type\n  == $db.group-uuids[$group-index].vm-type`'>\n","comments":"","outputs":1,"x":1682.6667251586914,"y":1608.3332386016846,"z":"b47e4028.e9a92","wires":[["f3e12d9b.faa59"]]},{"id":"f3e12d9b.faa59","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1850.6667251586914,"y":1607.3332386016846,"z":"b47e4028.e9a92","wires":[["a967e904.3972f8"]]},{"id":"a967e904.3972f8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2006.6667251586914,"y":1607.3332386016846,"z":"b47e4028.e9a92","wires":[["83f5ed69.3b11f","27aa0191.883b9e"]]},{"id":"83f5ed69.3b11f","type":"set","name":"set found-vm-type to true","xml":"<set>\n<parameter name='found-vm-type' value='true' />\n","comments":"","x":2224.6667251586914,"y":1577.3332386016846,"z":"b47e4028.e9a92","wires":[]},{"id":"27aa0191.883b9e","type":"break","name":"break","xml":"<break>\n","comments":"","x":2166.6667251586914,"y":1627.3332386016846,"z":"b47e4028.e9a92","wires":[]},{"id":"9d55b433.493f78","type":"switchNode","name":"switch found-vm-type","xml":"<switch test='`$found-vm-type`'>\n","comments":"","outputs":1,"x":1496.6667251586914,"y":1689.3332386016846,"z":"b47e4028.e9a92","wires":[["1457c945.a28ef7"]]},{"id":"1457c945.a28ef7","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1680.6667251586914,"y":1689.3332386016846,"z":"b47e4028.e9a92","wires":[["ccbdbb96.9ea6f8"]]},{"id":"ccbdbb96.9ea6f8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1836.6667251586914,"y":1689.3332386016846,"z":"b47e4028.e9a92","wires":[["914147aa.da8c48"]]},{"id":"914147aa.da8c48","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=\"`'TOSCA provided vm-type ' +\n      $db.group-uuids[$group-index].vm-type + ' but that was not found in vf-module-assignments.vms'`\" />\n","comments":"","x":2006.3334159851074,"y":1689.3331680297852,"z":"b47e4028.e9a92","wires":[]},{"id":"7ec1f150.8a298","type":"set","name":"set vnfc name","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`' />\n","comments":"","x":1825.6668395996094,"y":1798.3332405090332,"z":"b47e4028.e9a92","wires":[]},{"id":"a0d4952d.f2b928","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1643.666648864746,"y":1854.666501045227,"z":"b47e4028.e9a92","wires":[["7ec1f150.8a298","52160f29.32a73","e7172e6c.e2771"]]},{"id":"52160f29.32a73","type":"save","name":"save instance-group relationships","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"instance-group:relationship-list\"\n   key=\"instance-group.id = $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"vnfc\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/vnfcs/vnfc/' +\n        $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`\" />\n","comments":"","outputs":1,"x":1883.6666946411133,"y":1852.6664819717407,"z":"b47e4028.e9a92","wires":[["8fdc613f.8aa0e","4907cdeb.66fbb4"]]},{"id":"8fdc613f.8aa0e","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2103.5000381469727,"y":1823.5382261276245,"z":"b47e4028.e9a92","wires":[["b780e1fd.8ecea"]]},{"id":"4907cdeb.66fbb4","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2112.0715713500977,"y":1876.1573705673218,"z":"b47e4028.e9a92","wires":[["d399b84f.393178"]]},{"id":"b780e1fd.8ecea","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2273.6667709350586,"y":1822.666501045227,"z":"b47e4028.e9a92","wires":[["1c990e06.afc822"]]},{"id":"d399b84f.393178","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2271.6667709350586,"y":1874.666501045227,"z":"b47e4028.e9a92","wires":[["5eba244f.78562c"]]},{"id":"1c990e06.afc822","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=\"System error creating instance-group relationship to vnfc\" />\n","comments":"","x":2451.6667709350586,"y":1822.666501045227,"z":"b47e4028.e9a92","wires":[]},{"id":"5eba244f.78562c","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=\"`'Not-found error relating instance group '\n      + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-id\n      + ' to vnfc '\n      + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`\" />\n","comments":"","x":2449.6667709350586,"y":1872.666501045227,"z":"b47e4028.e9a92","wires":[]},{"id":"e7172e6c.e2771","type":"set","name":"set data-created","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].data-created' value='true' />\n","comments":"","x":1831.333381652832,"y":1915.666498184204,"z":"b47e4028.e9a92","wires":[]},{"id":"45843b31.c96d54","type":"set","name":"set vm-type (tmp)","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vm-type'\n  value='`$db.group-uuids[$group-index].vm-type`' />\n","comments":"","x":1480.6667251586914,"y":1500.3332386016846,"z":"b47e4028.e9a92","wires":[]},{"id":"65531882.49e7d8","type":"for","name":"for each returned instance-group","xml":"<for index='ig-index' start='0' end='`$aai.instance-group.instance-group_length`' >\n","comments":"","outputs":1,"x":1528.3333320617676,"y":1125.8333864212036,"z":"b47e4028.e9a92","wires":[["a178996d.953d88"]]},{"id":"a178996d.953d88","type":"for","name":"for each relationship","xml":"<for index='rel-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship_length`' >\n","comments":"","outputs":1,"x":1779.9999732971191,"y":1124.8333854675293,"z":"b47e4028.e9a92","wires":[["63a0562f.346d48"]]},{"id":"63a0562f.346d48","type":"for","name":"for each relationship-data","xml":"<for index='reldata-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data_length`' >\n","comments":"","outputs":1,"x":2006.6666450500488,"y":1124.1667594909668,"z":"b47e4028.e9a92","wires":[["d0cb0ddb.63e38"]]},{"id":"d0cb0ddb.63e38","type":"switchNode","name":"switch relationship-key == service-instance.service-instance-id","xml":"<switch test=\"`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-key\n  == 'service-instance.service-instance-id'`\">\n","comments":"","outputs":1,"x":2365.000232696533,"y":1124.16667842865,"z":"b47e4028.e9a92","wires":[["ad32ca79.0cfde8"]]},{"id":"ad32ca79.0cfde8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2661.666690826416,"y":1124.1667108535767,"z":"b47e4028.e9a92","wires":[["ed36a015.51afe"]]},{"id":"ed36a015.51afe","type":"switchNode","name":"switch relationship-value == this service-instance-id","xml":"<switch test='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-value\n  == $service-data.service-information.service-instance-id`'>\n","comments":"","outputs":1,"x":2926.666515350342,"y":1124.1666803359985,"z":"b47e4028.e9a92","wires":[["b7529f5b.d8147"]]},{"id":"34aa0803.4c3f08","type":"set","name":"set found-instance-group to false","xml":"<set>\n<parameter name='found-instance-group' value='false' />\n","comments":"","x":1528.3332481384277,"y":1082.4998893737793,"z":"b47e4028.e9a92","wires":[]},{"id":"245c2935.69d8f6","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3313.3332023620605,"y":1124.16667842865,"z":"b47e4028.e9a92","wires":[["9e921ed3.1e04c","73299009.38929","7d22df6b.481b"]]},{"id":"9e921ed3.1e04c","type":"set","name":"set found-instance-group to true","xml":"<set>\n<parameter name='found-instance-group' value='true' />\n","comments":"","x":3514.9997901916504,"y":1080.8333444595337,"z":"b47e4028.e9a92","wires":[]},{"id":"73299009.38929","type":"set","name":"set aai-ig-index","xml":"<set>\n<parameter name='aai-ig-index' value='`$ig-index`' />\n","comments":"","x":3464.999626159668,"y":1124.166760444641,"z":"b47e4028.e9a92","wires":[]},{"id":"7d22df6b.481b","type":"break","name":"break","xml":"<break>\n","comments":"","x":3436.6666984558105,"y":1167.500054359436,"z":"b47e4028.e9a92","wires":[]},{"id":"18de97dd.b1aee8","type":"switchNode","name":"switch found-instance-group","xml":"<switch test='`$found-instance-group`'>\n","comments":"","outputs":1,"x":1513.3333320617676,"y":1175.833511352539,"z":"b47e4028.e9a92","wires":[["c36d740b.e206d8"]]},{"id":"c36d740b.e206d8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1709.9999694824219,"y":1175.8333101272583,"z":"b47e4028.e9a92","wires":[["bf2d537.db427b"]]},{"id":"bf2d537.db427b","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\"\n      value=\"`'Unable to find AAI instance-group for instance-group-function '\n        + $db.group-uuids[$group-index].vfc-instance-group-function\n        + ' and instance-group-type VNFC'`\" />\n","comments":"","x":1859.9998588562012,"y":1174.1666707992554,"z":"b47e4028.e9a92","wires":[]},{"id":"b7529f5b.d8147","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3186.6664848327637,"y":1124.1666707992554,"z":"b47e4028.e9a92","wires":[["245c2935.69d8f6"]]},{"id":"d8af59a5.37db38","type":"set","name":"set AAI test data","xml":"<set>\n<parameter name='aai.instance-group.instance-group[0].id' value='bgb-inst-group-1' />\n<parameter name='aai-ig-index' value='0' />\n","comments":"","x":1804.999870300293,"y":838.3333292007446,"z":"b47e4028.e9a92","wires":[]},{"id":"83c5513b.06322","type":"switchNode","name":"switch group-index","xml":"<switch test='`$group-index`'>\n","comments":"","outputs":1,"x":1481.6667251586914,"y":909.9999542236328,"z":"b47e4028.e9a92","wires":[["ba3335de.858798","ab04061b.fe7d48","a9f3da68.8836c8"]]},{"id":"ba3335de.858798","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":1644.999942779541,"y":839.9999933242798,"z":"b47e4028.e9a92","wires":[["d8af59a5.37db38"]]},{"id":"ab04061b.fe7d48","type":"outcome","name":"1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":1643.333251953125,"y":896.6666259765625,"z":"b47e4028.e9a92","wires":[["102bec13.078344"]]},{"id":"a9f3da68.8836c8","type":"outcome","name":"2","xml":"<outcome value='2'>\n","comments":"","outputs":1,"x":1644.9998245239258,"y":948.333330154419,"z":"b47e4028.e9a92","wires":[["51a91c65.7b2db4"]]},{"id":"102bec13.078344","type":"set","name":"set AAI test data","xml":"<set>\n<parameter name='aai.instance-group.instance-group[0].id' value='bgb-inst-group-1a' />\n<parameter name='aai-ig-index' value='0' />\n","comments":"","x":1801.6666259765625,"y":893.3333129882812,"z":"b47e4028.e9a92","wires":[]},{"id":"51a91c65.7b2db4","type":"set","name":"set AAI test data","xml":"<set>\n<parameter name='aai.instance-group.instance-group[0].id' value='bgb-inst-group-2' />\n<parameter name='aai-ig-index' value='0' />\n","comments":"","x":1799.9998779296875,"y":943.3333129882812,"z":"b47e4028.e9a92","wires":[]},{"id":"bd9d1f00.4179b","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1999.9998779296875,"y":1319.9999332427979,"z":"b47e4028.e9a92","wires":[["18236b4f.7d3b25","c2d5de12.508d1"]]},{"id":"c2d5de12.508d1","type":"set","name":"set vvig-index to the length","xml":"<set>\n<parameter name='vvig-index' value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`' />\n","comments":"","x":2208.33309173584,"y":1343.333387374878,"z":"b47e4028.e9a92","wires":[]},{"id":"b6b5f931.eb4598","type":"get-resource","name":"get-resource policy","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"select property_name from VF_MODULE_TO_VFC_MAPPING vmvm,\n    RESOURCE_POLICY_TO_TARGET_NODE_MAPPING rptnm, RESOURCE_POLICY rp\n\twhere vmvm.vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid\n\tAND vmvm.vm_type = $db.group-uuids[$group-index].vm-type\n\tAND vmvm.vfc_customization_uuid = rptnm.target_node_uuid\n\tAND rptnm.policy_uuid = rp.policy_uuid\n\tAND rp.property_type = 'vlan_tag_policy'\n\tAND rp.policy_type = 'ecomp.policies.External'\n\tAND rp.property_source = 'Policy Manager'\"\n  pfx='db.policy[]'>\n\n","comments":"","outputs":1,"x":1490.000099182129,"y":1986.6665840148926,"z":"b47e4028.e9a92","wires":[["1603203c.5f928","edbea92a.2002f8"]]},{"id":"1603203c.5f928","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1663.3332786560059,"y":1963.6665420532227,"z":"b47e4028.e9a92","wires":[["f76e3c43.205b7"]]},{"id":"edbea92a.2002f8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1666.5714225769043,"y":2012.2857093811035,"z":"b47e4028.e9a92","wires":[["26246db4.523892"]]},{"id":"f76e3c43.205b7","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=\"`'Failure retrieving policy for vm-type ' + $db.group-uuids[$group-index].vm-type`\" />\n","comments":"","x":1811.880916595459,"y":1963.6191730499268,"z":"b47e4028.e9a92","wires":[]},{"id":"26246db4.523892","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=\"`'Unable to find policy for vm-type ' + $db.group-uuids[$group-index].vm-type`\" />\n","comments":"","x":1815.6666679382324,"y":2012.6667766571045,"z":"b47e4028.e9a92","wires":[]},{"id":"6c45eb32.9476b4","type":"set","name":"set input to get-data-from-policy","xml":"<set>\n<parameter name='get-data-from-policy-input.policy-instance-name' value='`$db.policy[0].property-name`' />\n","comments":"","x":1519.9998931884766,"y":2338.333595275879,"z":"b47e4028.e9a92","wires":[]},{"id":"54ac6f71.5bbed","type":"call","name":"call GENERIC-RESOURCE-API:get-data-from-policy","xml":"<call module='GENERIC-RESOURCE-API' rpc='get-data-from-policy' mode='sync' >\n","comments":"","outputs":1,"x":1586.6665573120117,"y":2391.6666860580444,"z":"b47e4028.e9a92","wires":[["7525d360.0f7b9c"]]},{"id":"7525d360.0f7b9c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1863.3333206176758,"y":2390.0002641677856,"z":"b47e4028.e9a92","wires":[["85f5011.c3fb2"]]},{"id":"85f5011.c3fb2","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n","comments":"","x":2024.9998245239258,"y":2388.3332719802856,"z":"b47e4028.e9a92","wires":[]},{"id":"6ea857c3.2c1b58","type":"set","name":"set vnic data for first vnfc","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vnic-interface-role'\n  value='`$db.group-uuids[$group-index].vfc_parent_port_role`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-assignment-policy-name'\n  value='`$db.policy[0].property-name`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function'\n  value='`$db.group-uuids[$group-index].network-collection-function`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group_length'\n  value='1' />\n  ","comments":"","x":1503.333236694336,"y":2056.6669158935547,"z":"b47e4028.e9a92","wires":[]},{"id":"e6e58901.9f43c8","type":"get-resource","name":"get-resource VFC_TO_NETWORK_ROLE_MAPPING","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key=\"select vnrm.* from VF_MODULE_TO_VFC_MAPPING vmvm, VFC_TO_NETWORK_ROLE_MAPPING vnrm\n\twhere vmvm.vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid\n\tAND vmvm.vm_type = $db.group-uuids[$group-index].vm-type\n\tAND vmvm.vfc_customization_uuid = vnrm.vfc_customization_uuid\n\tAND vnrm.network_role_tag = $db.group-uuids[$group-index].vfc_parent_port_role\"\n  pfx='db.vfc-to-network-role[]'>\n\n","comments":"","outputs":1,"x":1593.333122253418,"y":2116.6667556762695,"z":"b47e4028.e9a92","wires":[["7547a3f3.502e1c","5c706b9f.8610d4"]]},{"id":"7547a3f3.502e1c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1865.999526977539,"y":2091.9999265670776,"z":"b47e4028.e9a92","wires":[["46ee5ac5.db6584"]]},{"id":"5c706b9f.8610d4","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1873.2376708984375,"y":2140.6190938949585,"z":"b47e4028.e9a92","wires":[["d944efd1.49625"]]},{"id":"46ee5ac5.db6584","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=\"`'Failure reading VFC_TO_NETWORK_ROLE_MAPPING for parent role ' + $db.group-uuids[$group-index].vfc_parent_port_role`\" />\n","comments":"","x":2014.5471687316895,"y":2091.952480316162,"z":"b47e4028.e9a92","wires":[]},{"id":"d944efd1.49625","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=\"`'Unable to find rows in VFC_TO_NETWORK_ROLE_MAPPING for parent role ' + $db.group-uuids[$group-index].vfc_parent_port_role`\" />\n","comments":"","x":2022.3329162597656,"y":2141.0001611709595,"z":"b47e4028.e9a92","wires":[]},{"id":"885a5381.33f42","type":"for","name":"for each row returned","xml":"<for index='vnic-index' start='0' end='`$db.vfc-to-network-role_length`' >\n","comments":"","outputs":1,"x":1491.6665344238281,"y":2235.000340461731,"z":"b47e4028.e9a92","wires":[["ef0d6d68.2fa88"]]},{"id":"b0514055.d6444","type":"comment","name":"Create a vnic for every row returned","info":"","comments":"","x":1548.333366394043,"y":2193.3335905075073,"z":"b47e4028.e9a92","wires":[]},{"id":"f0a12477.186958","type":"set","name":"set vnic-port-id","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-vnics.vlan-vnic[$vnic-index].vnic-port-id'\n  value='`$vnic-index`' />\n","comments":"","x":1819.6666717529297,"y":2233.333511352539,"z":"b47e4028.e9a92","wires":[]},{"id":"ef0d6d68.2fa88","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1664.9998817443848,"y":2233.3335132598877,"z":"b47e4028.e9a92","wires":[["f0a12477.186958"]]},{"id":"7ba342c.2344dbc","type":"set","name":"set vlan-vnic_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-vnics.vlan-vnic_length'\n  value='`$db.vfc-to-network-role_length`' />\n","comments":"","x":1484.9998664855957,"y":2285.000178337097,"z":"b47e4028.e9a92","wires":[]},{"id":"dfadd88e.36b558","type":"switchNode","name":"switch precreate-sub-intf-num > 0?","xml":"<switch test='`$get-data-from-policy-output.precreate-sub-intf-num &gt; 0`'>\n","comments":"","outputs":1,"x":1526.6667251586914,"y":2521.666763305664,"z":"b47e4028.e9a92","wires":[["999ca676.ed90a8"]]},{"id":"999ca676.ed90a8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1743.3334846496582,"y":2521.666684150696,"z":"b47e4028.e9a92","wires":[["17837ed3.10fac1"]]},{"id":"17837ed3.10fac1","type":"call","name":"call GENERIC-RESOURCE-API:assign-vlan-tags","xml":"<call module='GENERIC-RESOURCE-API' rpc='assign-vlan-tags' mode='sync' >\n","comments":"","outputs":1,"x":2021.6666641235352,"y":2521.000081062317,"z":"b47e4028.e9a92","wires":[["2d81dffe.b92d1"]]},{"id":"1248d138.5ec85f","type":"set","name":"set test data","xml":"<set>\n<parameter name='get-data-from-policy-output.precreate-sub-intf-num' value='5' />\n","comments":"","x":1463.333351135254,"y":2458.3334312438965,"z":"b47e4028.e9a92","wires":[]},{"id":"2d81dffe.b92d1","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2285,"y":2520,"z":"b47e4028.e9a92","wires":[["99766325.18459"]]},{"id":"99766325.18459","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n","comments":"","x":2446.66650390625,"y":2518.3330078125,"z":"b47e4028.e9a92","wires":[]},{"id":"c6555b10.d36328","type":"comment","name":"Now copy this vnfc to all subsequent vnfcs","info":"","comments":"","x":1506.6665954589844,"y":2571.666524887085,"z":"b47e4028.e9a92","wires":[]},{"id":"ecfd0fc4.045e","type":"for","name":"for each subsequent vnfc","xml":"<for index='vnfc-index' start='1' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >\n","comments":"","outputs":1,"x":1491.6665573120117,"y":2619.9999408721924,"z":"b47e4028.e9a92","wires":[["ccac98a7.ef0888"]]},{"id":"ccac98a7.ef0888","type":"set","name":"copy vnfc","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnics-groups.'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnics-groups.`' />\n","comments":"","x":1683.3332786560059,"y":2620.0000228881836,"z":"b47e4028.e9a92","wires":[]},{"id":"108e5290.061f0d","type":"comment","name":"Copy data to vnfc-networks","info":"","comments":"","x":1543.21439743042,"y":3638.9288997650146,"z":"b47e4028.e9a92","wires":[]},{"id":"e0a1c55a.c2c798","type":"for","name":"for each vnfc","xml":"<for index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >\n","comments":"","outputs":1,"x":1470.8334515889483,"y":3684.1669365564976,"z":"b47e4028.e9a92","wires":[["95cb8961.7b5e18"]]},{"id":"95cb8961.7b5e18","type":"for","name":"for each vm vnfc","xml":"<for index='vm-vnfc-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >\n","comments":"","outputs":1,"x":1649.642910003662,"y":3682.7860412597656,"z":"b47e4028.e9a92","wires":[["b445348d.04f928"]]},{"id":"b445348d.04f928","type":"switchNode","name":"switch vnfc names match?","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name\n  == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vm-vnfc-index].vnfc-name`'>\n","comments":"","outputs":1,"x":1872.5002746582031,"y":3682.356981277466,"z":"b47e4028.e9a92","wires":[["c384ee4b.77391"]]},{"id":"c384ee4b.77391","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2061.0715827941895,"y":3681.3573999404907,"z":"b47e4028.e9a92","wires":[["6fd01e43.234ec"]]},{"id":"6fd01e43.234ec","type":"for","name":"for each vnic-group","xml":"<for index='vnic-group-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group_length`' >\n","comments":"","outputs":1,"x":2226.7860069274902,"y":3680.3573999404907,"z":"b47e4028.e9a92","wires":[["1b08f760.46cec9"]]},{"id":"1b08f760.46cec9","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1606.5477485656738,"y":3872.7385063171387,"z":"b47e4028.e9a92","wires":[["e335d196.7a723","9725b99d.4febf8","63e5e26e.2e86cc"]]},{"id":"e335d196.7a723","type":"set","name":"set vnfc-network-index to -1","xml":"<set>\n<parameter name='vnfc-network-index' value='-1' />\n","comments":"","x":1818.2143211364746,"y":3784.6430082321167,"z":"b47e4028.e9a92","wires":[]},{"id":"9725b99d.4febf8","type":"for","name":"for each vnfc-network","xml":"<for index='vn-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >\n","comments":"","outputs":1,"x":1798.2143898010254,"y":3833.2144708633423,"z":"b47e4028.e9a92","wires":[["eb454f6f.0cb9c"]]},{"id":"eb454f6f.0cb9c","type":"switchNode","name":"switch vnfc-network-role == vnic-interface-role","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vnic-interface-role\n  == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-network-role`'>\n","comments":"","outputs":1,"x":2096.7857627868652,"y":3831.7857942581177,"z":"b47e4028.e9a92","wires":[["d97fb514.ac75c8"]]},{"id":"d97fb514.ac75c8","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2345.3572216033936,"y":3830.3572578430176,"z":"b47e4028.e9a92","wires":[["70b317a4.7cc508"]]},{"id":"c59c96b4.69bf98","type":"set","name":"set vnfc-network-index","xml":"<set>\n<parameter name='vnfc-network-index' value='`$vn-index`' />\n","comments":"","x":2647.0239906311035,"y":3804.6430463790894,"z":"b47e4028.e9a92","wires":[]},{"id":"e0720be9.ad0128","type":"break","name":"break","xml":"<break>\n","comments":"","x":2597.0239219665527,"y":3850.3572969436646,"z":"b47e4028.e9a92","wires":[]},{"id":"63e5e26e.2e86cc","type":"switchNode","name":"switch vnfc-network-index","xml":"<switch test='`$vnfc-network-index`'>\n","comments":"","outputs":1,"x":1810.3573265075684,"y":3983.9286966323853,"z":"b47e4028.e9a92","wires":[["9361dfdd.29984","13d52642.fda30a"]]},{"id":"9361dfdd.29984","type":"outcome","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":1996.7858848571777,"y":3903.2146253585815,"z":"b47e4028.e9a92","wires":[["fbb0dbfe.f85b28"]]},{"id":"13d52642.fda30a","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1998.4526748657227,"y":4075.2144804000854,"z":"b47e4028.e9a92","wires":[["638f4c3e.143404"]]},{"id":"638f4c3e.143404","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2138.2141494750977,"y":4075.595446586609,"z":"b47e4028.e9a92","wires":[["5c460ff5.5b0df","129e4121.2694ff"]]},{"id":"5c460ff5.5b0df","type":"set","name":"set vnfc-type to the vm-type","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-network-role.vnfc-type'\n  value='`$db.group-uuids[$group-index].vm-type`' />\n","comments":"","x":2335.8333015441895,"y":3977.7384281158447,"z":"b47e4028.e9a92","wires":[]},{"id":"fbb0dbfe.f85b28","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Cannot find vnfc-network for network role '\n  + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vnic-interface-role`\" />\n","comments":"","x":2143.9287757873535,"y":3903.2144689559937,"z":"b47e4028.e9a92","wires":[]},{"id":"67480cdb.2760a4","type":"set","name":"set vnfc-port-index to -1","xml":"<set>\n<parameter name='vnfc-port-index' value='-1' />\n","comments":"","x":2654.166561126709,"y":4030.833158493042,"z":"b47e4028.e9a92","wires":[]},{"id":"bcc3aff.112a55","type":"for","name":"for each vnfc-port","xml":"<for silentFailure='true' index='v-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port_length`' >\n","comments":"","outputs":1,"x":2635.833393096924,"y":4079.16690158844,"z":"b47e4028.e9a92","wires":[["828492b6.a1bdd"]]},{"id":"129e4121.2694ff","type":"for","name":"for each vlan-vnic","xml":"<for index='vnic-index' start='0'\n  end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic_length`' >\n","comments":"","outputs":1,"x":2300.8332328796387,"y":4187.500525474548,"z":"b47e4028.e9a92","wires":[["d8e6d7a2.2a1bf8"]]},{"id":"d8e6d7a2.2a1bf8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2467.499973297119,"y":4185.833487510681,"z":"b47e4028.e9a92","wires":[["67480cdb.2760a4","bcc3aff.112a55","5d6d857d.27928c","fa62ecdb.69843"]]},{"id":"828492b6.a1bdd","type":"switchNode","name":"switch port ids equal?","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-port-id\n  == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port[$v-index].vnfc-port-id`'>\n","comments":"","outputs":1,"x":2852.5003089904785,"y":4079.16690158844,"z":"b47e4028.e9a92","wires":[["bcfa1beb.160c28"]]},{"id":"bcfa1beb.160c28","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3029.166904449463,"y":4077.500234603882,"z":"b47e4028.e9a92","wires":[["f0a0227e.37f3e"]]},{"id":"8ae99aa8.1920a8","type":"set","name":"set vnfc-port-index","xml":"<set>\n<parameter name='vnfc-port-index' value='`$v-index`' />\n","comments":"","x":3327.499683380127,"y":4052.5002336502075,"z":"b47e4028.e9a92","wires":[]},{"id":"a67eee6e.a4887","type":"break","name":"break","xml":"<break>\n","comments":"","x":3290.833179473877,"y":4097.500072479248,"z":"b47e4028.e9a92","wires":[]},{"id":"5d6d857d.27928c","type":"switchNode","name":"switch vnfc-port-index","xml":"<switch test='`$vnfc-port-index`'>\n","comments":"","outputs":1,"x":2649.1661643981934,"y":4289.166746139526,"z":"b47e4028.e9a92","wires":[["36252103.1f8b6e","ad386d69.33c3"]]},{"id":"36252103.1f8b6e","type":"outcome","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":2844.166410446167,"y":4240.833414077759,"z":"b47e4028.e9a92","wires":[["bde768af.7ac888"]]},{"id":"ad386d69.33c3","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2840.8334007263184,"y":4340.833659172058,"z":"b47e4028.e9a92","wires":[[]]},{"id":"bde768af.7ac888","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2982.4998302459717,"y":4239.167073249817,"z":"b47e4028.e9a92","wires":[["7c467817.823568","402ca21d.f33c0c","3c3825c4.1caaca"]]},{"id":"2d5840bf.165d2","type":"set","name":"set vnfc-port-index","xml":"<set>\n<parameter name='vnfc-port-index' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port_length`' />\n","comments":"","x":3529.1665229797363,"y":4200.833733558655,"z":"b47e4028.e9a92","wires":[]},{"id":"7c467817.823568","type":"set","name":"set vnfc-port-id and common-sub-interface-role","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnfc-port-id'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-port-id`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vnic-interface-role`' />\n","comments":"","x":3242.499746322632,"y":4240.834229469299,"z":"b47e4028.e9a92","wires":[]},{"id":"402ca21d.f33c0c","type":"set","name":"increment vnfc-port_length","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port_length'\n  value='`$vnfc-port-index + 1`' />\n","comments":"","x":3179.1665019989014,"y":4292.500491142273,"z":"b47e4028.e9a92","wires":[]},{"id":"70b317a4.7cc508","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2469.1666221618652,"y":3829.1667737960815,"z":"b47e4028.e9a92","wires":[["c59c96b4.69bf98","e0720be9.ad0128"]]},{"id":"f0a0227e.37f3e","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":3160.8333702087402,"y":4077.5000257492065,"z":"b47e4028.e9a92","wires":[["8ae99aa8.1920a8","a67eee6e.a4887"]]},{"id":"3c3825c4.1caaca","type":"switchNode","name":"switch vnfc-port_length","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port_length`'>\n","comments":"","outputs":1,"x":3169.1668281555176,"y":4179.166741371155,"z":"b47e4028.e9a92","wires":[["b6dec4a6.afe198","a23af61e.5263b8"]]},{"id":"b6dec4a6.afe198","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":3354.1665115356445,"y":4152.499912261963,"z":"b47e4028.e9a92","wires":[["eadd9aab.260b18"]]},{"id":"a23af61e.5263b8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3352.500087738037,"y":4200.833571434021,"z":"b47e4028.e9a92","wires":[["2d5840bf.165d2"]]},{"id":"eadd9aab.260b18","type":"set","name":"set vnfc-port-index","xml":"<set>\n<parameter name='vnfc-port-index' value='0' />\n","comments":"","x":3529.1666221618652,"y":4150.8335218429565,"z":"b47e4028.e9a92","wires":[]},{"id":"fa62ecdb.69843","type":"set","name":"copy vnic-sub-interfaces","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.`' />\n","comments":"","x":2649.166805267334,"y":4387.499920845032,"z":"b47e4028.e9a92","wires":[]},{"id":"9f02d7a9.1c3a78","type":"for","name":"for each vnfc","xml":"<for index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >\n","comments":"","outputs":1,"x":1448.5711936950684,"y":2939.7616481781006,"z":"b47e4028.e9a92","wires":[["fa79f908.4b46b8"]]},{"id":"fa79f908.4b46b8","type":"for","name":"for each vnic-group","xml":"<for index='vnic-group-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group_length`' >\n","comments":"","outputs":1,"x":1635.2378273010254,"y":2939.761568069458,"z":"b47e4028.e9a92","wires":[["2b59342c.313fcc"]]},{"id":"2b59342c.313fcc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1831.9046325683594,"y":2938.094711303711,"z":"b47e4028.e9a92","wires":[["601857ae.7f6ea8","db73a3d1.05c4","9796972d.9f2a48"]]},{"id":"601857ae.7f6ea8","type":"set","name":"set variables for EIPAM calls","xml":"<set>\n<parameter name='tmp.vt-ip.network-instance-group-function'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`' />\n<parameter name='tmp.vt-ip.nf-role'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`' />\n<parameter name='tmp.vt-ip.vm-type'\n  value='`$db.group-uuids[$group-index].vm-type`' />\n<parameter name='tmp.vt-ip.vnfc-name'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`' />\n<parameter name='tmp.vt-ip.type'\n  value='FIXED' />\n<parameter name='tmp.vt-ip.vf-module-id'\n  value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n  ","comments":"","x":2065.475830078125,"y":2972.6189155578613,"z":"b47e4028.e9a92","wires":[]},{"id":"db73a3d1.05c4","type":"for","name":"for each network-instance-group","xml":"<for index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >\n","comments":"","outputs":1,"x":2078.333251953125,"y":3014.999707221985,"z":"b47e4028.e9a92","wires":[["964b5676.ef5388"]]},{"id":"964b5676.ef5388","type":"switchNode","name":"network-instance-group-ids match?","xml":"<switch test='`$tmp.vt-ip.network-instance-group-id\n  == $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>\n","comments":"","outputs":1,"x":2376.6664276123047,"y":3013.33309173584,"z":"b47e4028.e9a92","wires":[["98d456a5.1cf438"]]},{"id":"98d456a5.1cf438","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2598.3331985473633,"y":3011.999870300293,"z":"b47e4028.e9a92","wires":[["e67407dc.796088"]]},{"id":"c7af04d.64239f8","type":"for","name":"for each subnet","xml":"<for silentFailure='true' index='subnet-index' start='0'\n  end='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets_length`' >\n","comments":"","outputs":1,"x":3292.2620964050293,"y":2773.0953102111816,"z":"b47e4028.e9a92","wires":[["d40215e.53e0fe8"]]},{"id":"d40215e.53e0fe8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3473.0950241088867,"y":2771.4285736083984,"z":"b47e4028.e9a92","wires":[["5c73cd33.21e734","a6fbc849.812c58","6f7a8f0a.2c389","c49bbf7a.28159","cc9945b9.70db88","57431c62.4b6574"]]},{"id":"5c73cd33.21e734","type":"set","name":"set ip-version, network-instance-group-id for EIPAM call","xml":"<set>\n<parameter name='tmp.vt-ip.ip-version'\n  value='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets[$subnet-index].ip-version`' />\n<parameter name='tmp.vt-ip.network-instance-group-id'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-id`' />\n<parameter name='tmp.vt-ip.sequence-number'\n  value='`$seq-no`' />\n","comments":"","x":3787.143035888672,"y":2650.9521379470825,"z":"b47e4028.e9a92","wires":[]},{"id":"a6fbc849.812c58","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-vlan-tagging-ip-addresses","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-ip-addresses' mode='sync' >\n","comments":"","outputs":1,"x":3856.4284057617188,"y":2746.428496360779,"z":"b47e4028.e9a92","wires":[["9aef8761.f3f058"]]},{"id":"9aef8761.f3f058","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":4209.76176071167,"y":2744.761830329895,"z":"b47e4028.e9a92","wires":[["d28dd03b.0e47a"]]},{"id":"d28dd03b.0e47a","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n","comments":"","x":4358.095184326172,"y":2743.0949697494507,"z":"b47e4028.e9a92","wires":[]},{"id":"e95311b7.510f6","type":"set","name":"set counter to 0","xml":"<set>\n<parameter name='counter' value='0' />\n","comments":"","x":1453.5714683532715,"y":2828.094596862793,"z":"b47e4028.e9a92","wires":[]},{"id":"6f7a8f0a.2c389","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value=\"`'/var/tmp/bgb-eipam.log' + $counter`\" />\n","comments":"","outputs":1,"x":3648.095115661621,"y":2954.7620677948,"z":"b47e4028.e9a92","wires":[[]]},{"id":"c49bbf7a.28159","type":"set","name":"increment counter","xml":"<set>\n<parameter name='counter' value='`$counter + 1`' />\n","comments":"","x":3671.428565979004,"y":2696.4284133911133,"z":"b47e4028.e9a92","wires":[]},{"id":"ce216cc2.c9b7e","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=\"Test EIPAM call return\" />\n","comments":"","x":1444.9999389648438,"y":3096.666298866272,"z":"b47e4028.e9a92","wires":[]},{"id":"cc9945b9.70db88","type":"switchNode","name":"switch eipam-ip-block.plans_length","xml":"<switch test='`$eipam-ip-block.plans_length`'>\n","comments":"","outputs":1,"x":3720.475975036621,"y":2855.7143869400024,"z":"b47e4028.e9a92","wires":[["144603b9.0faebc","c042b2da.b4f24","c1e362f7.092ec"]]},{"id":"144603b9.0faebc","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":3935.9525718688965,"y":2797.3810873031616,"z":"b47e4028.e9a92","wires":[["aada1e9.b9463e"]]},{"id":"c1e362f7.092ec","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3932.618869781494,"y":2928.571858882904,"z":"b47e4028.e9a92","wires":[["6bc96031.08dd9"]]},{"id":"c042b2da.b4f24","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":3935.952537536621,"y":2837.3810510635376,"z":"b47e4028.e9a92","wires":[["aada1e9.b9463e"]]},{"id":"aada1e9.b9463e","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4058.809467315674,"y":2813.0954084396362,"z":"b47e4028.e9a92","wires":[[]]},{"id":"65594ccf.6be394","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4467.142917633057,"y":2926.190381526947,"z":"b47e4028.e9a92","wires":[["4ce61717.c6e888","a66fd796.f9a498","12cb7fe5.883c3"]]},{"id":"a66fd796.f9a498","type":"set","name":"set fixed ip addresses","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].network-ips.network-ip[0]'\n  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].network-ips.network-ip_length'\n  value='1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].ip-version'\n  value='`$tmp.vt-ip.ip-version`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].ip-count'\n  value='1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].use-dhcp'\n  value='N' />\n","comments":"","x":4629.047386169434,"y":2941.666540145874,"z":"b47e4028.e9a92","wires":[]},{"id":"6bc96031.08dd9","type":"for","name":"for each vlan-vnic","xml":"<for index='vnic-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic_length`' >\n","comments":"","outputs":1,"x":4087.1428146362305,"y":2927.6190943717957,"z":"b47e4028.e9a92","wires":[["41cd84ee.e4081c"]]},{"id":"41cd84ee.e4081c","type":"for","name":"for each sub-interface","xml":"<for index='sub-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >\n","comments":"","outputs":1,"x":4292.857174464634,"y":2926.1906106812617,"z":"b47e4028.e9a92","wires":[["65594ccf.6be394"]]},{"id":"4ce61717.c6e888","type":"switchNode","name":"switch network-information-item_length","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length`'>\n","comments":"","outputs":1,"x":4684.523948669434,"y":2853.09517288208,"z":"b47e4028.e9a92","wires":[["629d81c4.bd461","dd6ac299.b1ac7","59cf29ca.51f9f8"]]},{"id":"dd6ac299.b1ac7","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":4911.666732788086,"y":2808.809473991394,"z":"b47e4028.e9a92","wires":[["11c0f9f7.5eaf06"]]},{"id":"59cf29ca.51f9f8","type":"other","name":"1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":4908.571235656738,"y":2891.190526008606,"z":"b47e4028.e9a92","wires":[["19693af0.32cf35"]]},{"id":"629d81c4.bd461","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":4911.666698455811,"y":2848.80943775177,"z":"b47e4028.e9a92","wires":[["11c0f9f7.5eaf06"]]},{"id":"11c0f9f7.5eaf06","type":"set","name":"set network-information-item_length to 1","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'\n  value='1' />\n<parameter name='tmp.index' value='0' />\n","comments":"","x":5161.666656494141,"y":2828.8095273971558,"z":"b47e4028.e9a92","wires":[]},{"id":"19693af0.32cf35","type":"set","name":"set network-information-item_length to 2","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'\n  value='2' />\n<parameter name='tmp.index' value='1' />\n","comments":"","x":5160.238021850586,"y":2890.238184928894,"z":"b47e4028.e9a92","wires":[]},{"id":"e67407dc.796088","type":"switchNode","name":"switch get-data-from-policy-output.ip-assignment","xml":"<switch test='`$get-data-from-policy-output.ip-assignment`'>\n","comments":"","outputs":1,"x":2863.333450317383,"y":3011.6663856506348,"z":"b47e4028.e9a92","wires":[["5993e0d7.b751d","cd7b6ee6.2b53f","dd6e8db9.1eadf"]]},{"id":"cd7b6ee6.2b53f","type":"outcome","name":"unique","xml":"<outcome value='unique'>\n","comments":"","outputs":1,"x":3129.762119293213,"y":3157.7377042770386,"z":"b47e4028.e9a92","wires":[["d231887c.3355f8"]]},{"id":"5993e0d7.b751d","type":"outcome","name":"shared","xml":"<outcome value='shared'>\n","comments":"","outputs":1,"x":3136.6665592193604,"y":2774.166717529297,"z":"b47e4028.e9a92","wires":[["c7af04d.64239f8"]]},{"id":"d231887c.3355f8","type":"for","name":"for each subnet","xml":"<for silentFailure='true' index='subnet-index' start='0'\n  end='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets_length`' >\n","comments":"","outputs":1,"x":3286.4285011291504,"y":3156.9044942855835,"z":"b47e4028.e9a92","wires":[["1c48049f.44e89b"]]},{"id":"436e4d1f.7bdb84","type":"set","name":"set test EIPAM response","xml":"<set>\n<parameter name='eipam-ip-block.plans_length' value='2' />\n<parameter name='eipam-ip-block.plans[0].plan-name' value='plan-1' />\n<parameter name='eipam-ip-block.plans[0].requests_length' value='6' />\n<parameter name='eipam-ip-block.plans[0].requests[0].client-key'\n  value='vm-type-1|zmtn6nf-code-16code-1001|network-role-1|subnet-role-1|FIXED|4|1' />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-type' value='FIXED' />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-prefix' value='34.52.87.50' />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-version' value='4' />\n","comments":"","x":3711.6663246154785,"y":2798.3331184387207,"z":"b47e4028.e9a92","wires":[]},{"id":"aaf6e47a.ec3908","type":"set","name":"set test data ","xml":"<set>\n<parameter name='get-data-from-policy-output.ip-assignment' value='unique' />\n","comments":"","x":2012.3808670043945,"y":2882.1426334381104,"z":"b47e4028.e9a92","wires":[]},{"id":"12cb7fe5.883c3","type":"switchNode","name":"switch ip-version","xml":"<switch test='`$tmp.vt-ip.ip-version`'>\n","comments":"","outputs":1,"x":4611.666687011719,"y":3008.3332891464233,"z":"b47e4028.e9a92","wires":[["e6ba0b08.c385f8","2796f2bc.c1e76e"]]},{"id":"e6ba0b08.c385f8","type":"other","name":"ipv4","xml":"<outcome value='ipv4'>\n","comments":"","outputs":1,"x":4775.000026702881,"y":2986.6665410995483,"z":"b47e4028.e9a92","wires":[["2595e5de.0f26ea"]]},{"id":"2796f2bc.c1e76e","type":"other","name":"ipv6","xml":"<outcome value='ipv6'>\n","comments":"","outputs":1,"x":4775.000026702881,"y":3029.9997959136963,"z":"b47e4028.e9a92","wires":[["d99e17bd.f711b8"]]},{"id":"2595e5de.0f26ea","type":"set","name":"set vlan-common ipv4 address","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-common-ip-addresses.ip-addresses.ipv4-address'\n  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />\n","comments":"","x":4979.999702453613,"y":2985.0000381469727,"z":"b47e4028.e9a92","wires":[]},{"id":"d99e17bd.f711b8","type":"set","name":"set vlan-common ipv6 address","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-common-ip-addresses.ip-addresses.ipv6-address'\n  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />\n","comments":"","x":4978.3330078125,"y":3029.66650390625,"z":"b47e4028.e9a92","wires":[]},{"id":"1c48049f.44e89b","type":"for","name":"for each vlan-vnic","xml":"<for index='vnic-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic_length`' >\n","comments":"","outputs":1,"x":3474.7617835998535,"y":3156.9043741226196,"z":"b47e4028.e9a92","wires":[["6b888a10.2af214","e2eb46b9.cd0958"]]},{"id":"6b888a10.2af214","type":"set","name":"set ip-version for EIPAM call","xml":"<set>\n<parameter name='tmp.vt-ip.ip-version'\n  value='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets[$subnet-index].ip-version`' />\n  ","comments":"","x":3709.999755859375,"y":3104.999755859375,"z":"b47e4028.e9a92","wires":[]},{"id":"e593e01e.a0d5d","type":"set","name":"set network-id for EIPAM call","xml":"<set>\n<parameter name='tmp.vt-ip.network-id'\n  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-id`' />\n<parameter name='tmp.vt-ip.sequence-number'\n  value='`$seq-no`' />\n  ","comments":"","x":4103.33309173584,"y":3105.0000438690186,"z":"b47e4028.e9a92","wires":[]},{"id":"e2eb46b9.cd0958","type":"for","name":"for each sub-interface","xml":"<for index='sub-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >\n","comments":"","outputs":1,"x":3691.190330505371,"y":3218.5712699890137,"z":"b47e4028.e9a92","wires":[["f5b5fc18.adec9"]]},{"id":"f5b5fc18.adec9","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":3887.857078552246,"y":3217.5712699890137,"z":"b47e4028.e9a92","wires":[["e593e01e.a0d5d","9169ff30.c059b","f82c32b8.54697","4a868e39.b7b62","b558adee.b288c"]]},{"id":"9169ff30.c059b","type":"set","name":"increment counter","xml":"<set>\n<parameter name='counter' value='`$counter + 1`' />\n","comments":"","x":4069.999755859375,"y":3151.66650390625,"z":"b47e4028.e9a92","wires":[]},{"id":"f82c32b8.54697","type":"call","name":"call GENERIC-RESOURCE-API:vf-module-topology-vlan-tagging-ip-addresses","xml":"<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-ip-addresses' mode='sync' >\n","comments":"","outputs":1,"x":4258.3330078125,"y":3198.333251953125,"z":"b47e4028.e9a92","wires":[["f05d8a8d.478058"]]},{"id":"f05d8a8d.478058","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":4611.666362762451,"y":3196.666585922241,"z":"b47e4028.e9a92","wires":[["3d223580.4b9d6a"]]},{"id":"3d223580.4b9d6a","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n","comments":"","x":4759.999786376953,"y":3194.999725341797,"z":"b47e4028.e9a92","wires":[]},{"id":"9fcb1974.64d6a8","type":"set","name":"set test EIPAM response","xml":"<set>\n<parameter name='eipam-ip-block.plans_length' value='2' />\n<parameter name='eipam-ip-block.plans[0].plan-name' value='plan-1' />\n<parameter name='eipam-ip-block.plans[0].requests_length' value='6' />\n<parameter name='eipam-ip-block.plans[0].requests[0].client-key'\n  value='vm-type-1|zmtn6nf-code-16code-1001|network-role-1|subnet-role-1|FIXED|4|1' />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-type' value='FIXED' />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-prefix' value=\"`'34.52.87.1' + $counter`\" />\n<parameter name='eipam-ip-block.plans[0].requests[0].ip-version' value='4' />\n","comments":"","x":4124.99959564209,"y":3261.6664695739746,"z":"b47e4028.e9a92","wires":[]},{"id":"4a868e39.b7b62","type":"switchNode","name":"switch eipam-ip-block.plans_length","xml":"<switch test='`$eipam-ip-block.plans_length`'>\n","comments":"","outputs":1,"x":4121.66650390625,"y":3306.66650390625,"z":"b47e4028.e9a92","wires":[["bcd9cbf.fd3c238","2b7250d8.51255","d8798d76.14939"]]},{"id":"bcd9cbf.fd3c238","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":4337.14306640625,"y":3288.333168029785,"z":"b47e4028.e9a92","wires":[["43694866.e652c8"]]},{"id":"2b7250d8.51255","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":4338.3330078125,"y":3246.66650390625,"z":"b47e4028.e9a92","wires":[["43694866.e652c8"]]},{"id":"43694866.e652c8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4461.189903259277,"y":3262.3808250427246,"z":"b47e4028.e9a92","wires":[[]]},{"id":"d8798d76.14939","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":4335,"y":3331.66650390625,"z":"b47e4028.e9a92","wires":[["45f3520.c1775b"]]},{"id":"45f3520.c1775b","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":4483.3330078125,"y":3331.66650390625,"z":"b47e4028.e9a92","wires":[["7cfd053c.e09c8c","ddb9d0a2.646fa"]]},{"id":"ddb9d0a2.646fa","type":"set","name":"set fixed ip addresses","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].network-ips.network-ip[0]'\n  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].network-ips.network-ip_length'\n  value='1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].ip-version'\n  value='`$tmp.vt-ip.ip-version`' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].ip-count'\n  value='1' />\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].use-dhcp'\n  value='N' />\n","comments":"","x":4645.237476348877,"y":3347.142662525177,"z":"b47e4028.e9a92","wires":[]},{"id":"7cfd053c.e09c8c","type":"switchNode","name":"switch network-information-item_length","xml":"<switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length`'>\n","comments":"","outputs":1,"x":4700.714050292969,"y":3301.904588699341,"z":"b47e4028.e9a92","wires":[["40631e77.7daca","3d9262aa.af1f8e","39def6e7.3e5e5a"]]},{"id":"3d9262aa.af1f8e","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":4927.856834411621,"y":3257.618889808655,"z":"b47e4028.e9a92","wires":[["84f8b706.53a388"]]},{"id":"39def6e7.3e5e5a","type":"other","name":"1","xml":"<outcome value='1'>\n","comments":"","outputs":1,"x":4924.761337280273,"y":3339.9999418258667,"z":"b47e4028.e9a92","wires":[["c8bce8ef.90c648"]]},{"id":"40631e77.7daca","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":4927.856800079346,"y":3297.6188535690308,"z":"b47e4028.e9a92","wires":[["84f8b706.53a388"]]},{"id":"84f8b706.53a388","type":"set","name":"set network-information-item_length to 1","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'\n  value='1' />\n<parameter name='tmp.index' value='0' />\n","comments":"","x":5177.856758117676,"y":3277.6189432144165,"z":"b47e4028.e9a92","wires":[]},{"id":"c8bce8ef.90c648","type":"set","name":"set network-information-item_length to 2","xml":"<set>\n<parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'\n  value='2' />\n<parameter name='tmp.index' value='1' />\n","comments":"","x":5176.428123474121,"y":3339.047600746155,"z":"b47e4028.e9a92","wires":[]},{"id":"dd6e8db9.1eadf","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":3128.3332138061523,"y":3330.00013256073,"z":"b47e4028.e9a92","wires":[["53f499ac.325d38"]]},{"id":"53f499ac.325d38","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'From policy: ip-assignment is '\n  + $get-data-from-policy-output.ip-assignment\n  + ' but must be unique or shared'`\" />\n","comments":"","x":3280.0000495910645,"y":3329.999888420105,"z":"b47e4028.e9a92","wires":[]},{"id":"9796972d.9f2a48","type":"set","name":"clear tmp.vt-ip variables","xml":"<set>\n<parameter name='tmp.vt-ip.' value='' />\n","comments":"","x":2049.9999237060547,"y":2927.1427364349365,"z":"b47e4028.e9a92","wires":[]},{"id":"79bfeb99.430a74","type":"set","name":"set seq-no to 1","xml":"<set>\n<parameter name='seq-no' value='1' />\n","comments":"","x":1451.6666259765625,"y":2881.66650390625,"z":"b47e4028.e9a92","wires":[]},{"id":"57431c62.4b6574","type":"set","name":"increment seq-no","xml":"<set>\n<parameter name='seq-no' value='`$seq-no + 1`' />\n","comments":"","x":3667.143112182617,"y":2907.1426334381104,"z":"b47e4028.e9a92","wires":[]},{"id":"b558adee.b288c","type":"set","name":"increment seq-no","xml":"<set>\n<parameter name='seq-no' value='`$seq-no + 1`' />\n","comments":"","x":4068.571533203125,"y":3367.142822265625,"z":"b47e4028.e9a92","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-deactivate.json
new file mode 100755
index 0000000..d4d3d3e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-deactivate.json
@@ -0,0 +1 @@
+[{"id":"b9fb057.683a5f8","type":"dgstart","name":"DGSTART","outputs":1,"x":104.99999237060547,"y":78.33332824707031,"z":"e8bccc7e.ec2eb","wires":[["8383ed38.cf0d3"]]},{"id":"8383ed38.cf0d3","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":218.28569793701172,"y":118.57143974304199,"z":"e8bccc7e.ec2eb","wires":[["f1e036f3.14b848"]]},{"id":"f1e036f3.14b848","type":"method","name":"method vf-module-topology-vlan-tagging-deactivate","xml":"<method rpc='vf-module-topology-vlan-tagging-deactivate' mode='sync'>\n","comments":"","outputs":1,"x":233.0952911376953,"y":159.99999809265137,"z":"e8bccc7e.ec2eb","wires":[["568006ed.2ce9c8"]]},{"id":"c45fe197.979d1","type":"comment","name":"vf-module-topology-vlan-tagging-deactivate","info":"","comments":"","x":499.3448486328125,"y":25.9196720123291,"z":"e8bccc7e.ec2eb","wires":[]},{"id":"568006ed.2ce9c8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":154.99999237060547,"y":458.3333110809326,"z":"e8bccc7e.ec2eb","wires":[["ff21dac3.232098","e5650e13.66738","e46ff220.516ac"]]},{"id":"ff21dac3.232098","type":"for","name":"for each vlan-vnfc-instance-group","xml":"<for index='vvig-index' start='0' end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`' >\n","comments":"","outputs":1,"x":395.00000381469727,"y":393.3333377838135,"z":"e8bccc7e.ec2eb","wires":[["1de68e82.c55571"]]},{"id":"d7ec6134.cbc82","type":"set","name":"set keys","xml":"<set>\n<parameter name='parent-port-role'\n  value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vnic-interface-role`' />\n<parameter name='network-instance-group-function'\n  value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`' />\n<parameter name='vnfc-instance-group-function'\n  value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-function`' />\n","comments":"","x":1158.333339691162,"y":363.33329677581787,"z":"e8bccc7e.ec2eb","wires":[]},{"id":"1de68e82.c55571","type":"for","name":"for each vnfc","xml":"<for index='vnfc-index' start='0' end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >\n","comments":"","outputs":1,"x":626.6666564941406,"y":393.333309173584,"z":"e8bccc7e.ec2eb","wires":[["16ebf369.701e0d"]]},{"id":"16ebf369.701e0d","type":"for","name":"for each vnic-group","xml":"<for index='vnic-group-index' start='0' end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group_length`' >\n","comments":"","outputs":1,"x":816.6666564941406,"y":393.33331775665283,"z":"e8bccc7e.ec2eb","wires":[["6d6c92f3.4fa04c"]]},{"id":"6d6c92f3.4fa04c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1003.3333129882812,"y":390.9999694824219,"z":"e8bccc7e.ec2eb","wires":[["d7ec6134.cbc82","9deb1267.ebcf4"]]},{"id":"9deb1267.ebcf4","type":"for","name":"for each vnf-sub-interface-group","xml":"<for silentFailure='true' index='vsig-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`' >\n","comments":"","outputs":1,"x":1233.3334655761719,"y":416.66665267944336,"z":"e8bccc7e.ec2eb","wires":[["99d5c99e.678168"]]},{"id":"99d5c99e.678168","type":"switchNode","name":"keys match?","xml":"<switch test='`\n  $parent-port-role == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role\n  and $vnfc-instance-group-function == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfc-instance-group-function\n  and $network-instance-group-function == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].network-instance-group-function\n`'>\n","comments":"","outputs":1,"x":1465.0000610351562,"y":414.9999370574951,"z":"e8bccc7e.ec2eb","wires":[["387a0b42.aa2ef4"]]},{"id":"387a0b42.aa2ef4","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1616.666612625122,"y":413.333309173584,"z":"e8bccc7e.ec2eb","wires":[["2a9028a.ad201d8"]]},{"id":"6c197550.7c94fc","type":"switchNode","name":"switch customer-bonding-request_length","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].customer-bonding-requests.customer-bonding-request_length`'>\n","comments":"","outputs":1,"x":2043.3332138061523,"y":283.3332691192627,"z":"e8bccc7e.ec2eb","wires":[["1b4769d6.638246","add44603.94aa78","c7402c36.a00f8"]]},{"id":"1b4769d6.638246","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":2281.6664428710938,"y":238.33330821990967,"z":"e8bccc7e.ec2eb","wires":[["57d6d382.4db9cc"]]},{"id":"add44603.94aa78","type":"outcome","name":"0","xml":"<outcome value='0'>\n","comments":"","outputs":1,"x":2281.6665229797363,"y":283.33329010009766,"z":"e8bccc7e.ec2eb","wires":[["57d6d382.4db9cc"]]},{"id":"57d6d382.4db9cc","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2411.666446685791,"y":258.33332920074463,"z":"e8bccc7e.ec2eb","wires":[[]]},{"id":"c7402c36.a00f8","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2281.6667251586914,"y":328.3333320617676,"z":"e8bccc7e.ec2eb","wires":[["d75ff341.8ec86"]]},{"id":"d75ff341.8ec86","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='Cannot deactivate module because customer bonding request exists' />\n","comments":"","x":2428.333366394043,"y":328.3333320617676,"z":"e8bccc7e.ec2eb","wires":[]},{"id":"e5650e13.66738","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n<parameter name='' value='' />\n","comments":"","x":333.33333587646484,"y":593.3333339691162,"z":"e8bccc7e.ec2eb","wires":[]},{"id":"2a9028a.ad201d8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1764.9998779296875,"y":413.33331298828125,"z":"e8bccc7e.ec2eb","wires":[["6c197550.7c94fc","1fd81c05.46c034","730f667e.8058f8"]]},{"id":"1fd81c05.46c034","type":"for","name":"for all vnf-sub-interface-group vnfcs","xml":"<for index='vnf-vnfc-index' start='0'\n  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length`' >\n","comments":"","outputs":1,"x":2028.333251953125,"y":453.33336639404297,"z":"e8bccc7e.ec2eb","wires":[["53661795.92c528"]]},{"id":"53661795.92c528","type":"switchNode","name":"vnfcs match?","xml":"<switch test='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name\n  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$vnf-vnfc-index].vnfc-name`'>\n","comments":"","outputs":1,"x":2266.6668014526367,"y":451.66668128967285,"z":"e8bccc7e.ec2eb","wires":[["8ac3ff07.21c3f"]]},{"id":"730f667e.8058f8","type":"break","name":"break","xml":"<break>\n","comments":"","x":1939.999912261963,"y":505.00007247924805,"z":"e8bccc7e.ec2eb","wires":[]},{"id":"8ac3ff07.21c3f","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2416.66650390625,"y":450.9999694824219,"z":"e8bccc7e.ec2eb","wires":[["ed29f8aa.2b2598"]]},{"id":"f0ddcfb9.e87e9","type":"comment","name":"delete this vnfc","info":"","comments":"","x":2729.9997024536133,"y":351.6667013168335,"z":"e8bccc7e.ec2eb","wires":[]},{"id":"ed29f8aa.2b2598","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2549.9999389648438,"y":450.00000762939453,"z":"e8bccc7e.ec2eb","wires":[["82e130f5.9e3d8","6cfa8387.9cdb5c","9c0a204f.831ff"]]},{"id":"82e130f5.9e3d8","type":"for","name":"for remaining vnfcs","xml":"<for index='$idx' start='`$vnf-vnfc-index`'\n  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length - 1`' >\n","comments":"","outputs":1,"x":2721.6666946411133,"y":398.3332586288452,"z":"e8bccc7e.ec2eb","wires":[["b57de70d.1235f8"]]},{"id":"48169c86.b1af44","type":"set","name":"copy next entry down","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$idx].'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$idx + 1].`' />\n","comments":"","x":3066.6667861938477,"y":409.99994468688965,"z":"e8bccc7e.ec2eb","wires":[]},{"id":"6cfa8387.9cdb5c","type":"set","name":"decrement the vnfc length","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length - 1`' />\n","comments":"","x":2741.6669387817383,"y":444.9999580383301,"z":"e8bccc7e.ec2eb","wires":[]},{"id":"e46ff220.516ac","type":"set","name":"copy data to tmp.vlan-vnfc-instance-groups.","xml":"<set>\n<parameter name='tmp.vlan-vnfc-instance-groups.'\n  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.`' />\n","comments":"","x":424.9999694824219,"y":338.33331298828125,"z":"e8bccc7e.ec2eb","wires":[]},{"id":"9c0a204f.831ff","type":"set","name":"clear the last one","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length].' value='' />\n","comments":"","x":2715.0002670288086,"y":494.99991035461426,"z":"e8bccc7e.ec2eb","wires":[]},{"id":"b57de70d.1235f8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2885,"y":396.6666564941406,"z":"e8bccc7e.ec2eb","wires":[["48169c86.b1af44","2170dfeb.f2e8c"]]},{"id":"2170dfeb.f2e8c","type":"set","name":"clear the target","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$idx].'\n  value='' />\n","comments":"","x":3050.0000381469727,"y":361.6666603088379,"z":"e8bccc7e.ec2eb","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-ip-addresses.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-ip-addresses.json
new file mode 100644
index 0000000..3adda86
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-ip-addresses.json
@@ -0,0 +1 @@
+[{"id":"db4eae46.4b3fd","type":"dgstart","name":"DGSTART","outputs":1,"x":115,"y":52.5,"z":"da0dd7d5.9e19b8","wires":[["db0de74.4726e18"]]},{"id":"5d7faec4.53391","type":"method","name":"method vf-module-topology-vlan-tagging-ip-addresses","xml":"<method rpc='vf-module-topology-vlan-tagging-ip-addresses' mode='sync'>\n","comments":"","outputs":1,"x":314.26190185546875,"y":103.45635414123535,"z":"da0dd7d5.9e19b8","wires":[["aa02ce0c.30ff9"]]},{"id":"db0de74.4726e18","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":390.23819732666016,"y":52.69049263000488,"z":"da0dd7d5.9e19b8","wires":[["5d7faec4.53391"]]},{"id":"aa02ce0c.30ff9","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":226.75,"y":166.14295196533203,"z":"da0dd7d5.9e19b8","wires":[["3b787481.8b040c","774ce022.1da5f","bbb5d0b4.6c11c","fc89f675.3e0838","d2e3f64e.f6a748","3704ed43.9a9d72","a476f52c.2521b8","cde326ed.20e5f8","1f554749.0a5289","3aac8436.58ee6c","da5910d3.5b98d","bd90de81.a134","7a2137f8.de11d8","8a9adc86.dcb73","3f9be8dd.c4ce68"]]},{"id":"4bb7255e.8118dc","type":"get-resource","name":"get EIPAM_IP_SUBNETS by network-id","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='`$tmp.sql`' pfx='db.selected-subnet-data[]'>","comments":"","outputs":1,"x":1175.5833892822266,"y":1148.5596389770508,"z":"da0dd7d5.9e19b8","wires":[["2aa50b37.f28b94","ca6f72b2.6bf8"]]},{"id":"a6930049.b9e27","type":"get-resource","name":"get EIPAM_IP_SUBNET_KEYS with MAX level by entity_id","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='`$tmp.sql`' pfx='db.selected-subnet-keys'>","comments":"","outputs":1,"x":924.654972076416,"y":1837.2500929832458,"z":"da0dd7d5.9e19b8","wires":[["91f544f0.514358","c578b30f.c54f8"]]},{"id":"e5b62e72.36eb4","type":"comment","name":"selected-entity-id","info":"","comments":"","x":2006.155101776123,"y":1975.1430644989014,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"cde326ed.20e5f8","type":"for","name":"for didx in db.selected-subnet-data[]","xml":"<for index='didx' start='0' end='`$db.selected-subnet-data_length`' >\n","comments":"","outputs":1,"x":508.22641372680664,"y":1778.6786642074585,"z":"da0dd7d5.9e19b8","wires":[["a6930049.b9e27","f2df2449.d5fa58"]]},{"id":"77d16bd4.03a8c4","type":"comment","name":"subnet-use - unique","info":"","comments":"","x":1244.5121231079102,"y":1105.166790008545,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"d4f87d61.6fd29","type":"comment","name":"subnet-use - shared or VIP","info":"","comments":"","x":1894.0834503173828,"y":1416.4882650375366,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"eabd4324.7e31f","type":"comment","name":"Required INPUTS","info":"tmp.vt-ip.vm-type (for FIXED)\ntmp.vt-ip.vnfc-name (for FIXED)\ntmp.vt-ip.network-id (for FIXED)\ntmp.vt-ip.network-instance-group-id\ntmp.vt-ip.ip-version\ntmp.vt-ip.type (FIXED or VIP)\ntmp.vt-ip.network-instance-group-function\ntmp.vt-ip.nf-role (for VIP)\ntmp.vt-ip.vf-module-id (for FIXED)\ntmp.vt-ip.sequence-number (for FIXED)","comments":"","x":840,"y":71.25000381469727,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"bbb5d0b4.6c11c","type":"switchNode","name":"switch ip-version","xml":"<switch test='`$tmp.vt-ip.ip-version`'>\n","comments":"","outputs":1,"x":447.0000305175781,"y":304.0000171661377,"z":"da0dd7d5.9e19b8","wires":[["72646257.b1f07c","93c23a8c.f589b8","c8332654.c5e6a8"]]},{"id":"72646257.b1f07c","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":650.0000228881836,"y":304.00001335144043,"z":"da0dd7d5.9e19b8","wires":[["6c9465e7.0f749c"]]},{"id":"6c9465e7.0f749c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='ip-version is required' />\n","comments":"","x":805.7500267028809,"y":303.75001335144043,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"3b787481.8b040c","type":"switchNode","name":"switch type","xml":"<switch test='`$tmp.vt-ip.type`'>\n","comments":"","outputs":1,"x":430.00000762939453,"y":212.50000286102295,"z":"da0dd7d5.9e19b8","wires":[["20137293.759cae"]]},{"id":"20137293.759cae","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":595.0000114440918,"y":212.74999809265137,"z":"da0dd7d5.9e19b8","wires":[["1d3d243.4d9b8dc"]]},{"id":"1d3d243.4d9b8dc","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='type is required' />\n","comments":"","x":758.7500152587891,"y":212.49999809265137,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"3704ed43.9a9d72","type":"switchNode","name":"switch network-id && network-instance-group-id == NULL","xml":"<switch test=\"`$tmp.vt-ip.network-id == '' and $tmp.vt-ip.network-instance-group-id == '' `\">\n","comments":"","outputs":1,"x":578.4762496948242,"y":970.6309232711792,"z":"da0dd7d5.9e19b8","wires":[["cf259dac.da7ad"]]},{"id":"cf259dac.da7ad","type":"outcome","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":879.4762535095215,"y":970.8809185028076,"z":"da0dd7d5.9e19b8","wires":[["c428143a.3eb128"]]},{"id":"c428143a.3eb128","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='either network-id or network-isntance-group-id is required' />\n","comments":"","x":1043.2262573242188,"y":970.6309185028076,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"d2e3f64e.f6a748","type":"switchNode","name":"switch type","xml":"<switch test='`$tmp.vt-ip.type`'>\n","comments":"","outputs":1,"x":425.75000762939453,"y":524.5000076293945,"z":"da0dd7d5.9e19b8","wires":[["f308784f.30b748","7ce44ba.25dd7b4"]]},{"id":"f308784f.30b748","type":"outcome","name":"FIXED","xml":"<outcome value='FIXED'>\n","comments":"","outputs":1,"x":603.5000076293945,"y":524.5000076293945,"z":"da0dd7d5.9e19b8","wires":[["982de299.19cc"]]},{"id":"7ce44ba.25dd7b4","type":"outcome","name":"VIP","xml":"<outcome value='VIP'>\n","comments":"","outputs":1,"x":604.5000076293945,"y":760.0000448226929,"z":"da0dd7d5.9e19b8","wires":[["845733f4.78fad"]]},{"id":"8fda28f7.7fdf08","type":"switchNode","name":"switch vnfc-name","xml":"<switch test='`$tmp.vt-ip.vnfc-name`'>\n","comments":"","outputs":1,"x":993.0000152587891,"y":524.5000057220459,"z":"da0dd7d5.9e19b8","wires":[["ab97e748.b2aeb8"]]},{"id":"ab97e748.b2aeb8","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1173.500015258789,"y":524.0000057220459,"z":"da0dd7d5.9e19b8","wires":[["b08630ad.cf34b"]]},{"id":"b08630ad.cf34b","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='vnfc-name is required for FIXED ip request' />\n","comments":"","x":1337.2500190734863,"y":523.7500057220459,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"982de299.19cc","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":766.5000114440918,"y":524.2500057220459,"z":"da0dd7d5.9e19b8","wires":[["8fda28f7.7fdf08","66187f63.a9f7e","dd589dc0.aebfe","a0c78a24.944498","b912e4a9.bce1c8"]]},{"id":"774ce022.1da5f","type":"switchNode","name":"switch network-instance-group-function","xml":"<switch test='`$tmp.vt-ip.network-instance-group-function`'>\n","comments":"","outputs":1,"x":517.0000152587891,"y":258.75000381469727,"z":"da0dd7d5.9e19b8","wires":[["15a40175.0679cf"]]},{"id":"15a40175.0679cf","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":743.0000190734863,"y":258.9999990463257,"z":"da0dd7d5.9e19b8","wires":[["f4db1eb1.4950a"]]},{"id":"f4db1eb1.4950a","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='network-instance-group-function is required for FIXED ip request' />\n","comments":"","x":906.7500228881836,"y":258.7499990463257,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"a649d68c.d9ddc8","type":"switchNode","name":"switch nf-role","xml":"<switch test='`$tmp.vt-ip.nf-role`'>\n","comments":"","outputs":1,"x":984.0000305175781,"y":760.7500190734863,"z":"da0dd7d5.9e19b8","wires":[["5c79549a.88776c"]]},{"id":"5c79549a.88776c","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1149.0000343322754,"y":761.0000143051147,"z":"da0dd7d5.9e19b8","wires":[["9926dfb4.0e9b8"]]},{"id":"9926dfb4.0e9b8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='nf-role is required for VIP ip request' />\n","comments":"","x":1312.7500381469727,"y":760.7500143051147,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"d9fa5743.fc1308","type":"get-resource","name":"get EIPAM_IP_SUBNETS by network-instance-group-id","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='`$tmp.sql`' pfx='db.selected-subnet-data[]'>","comments":"","outputs":1,"x":1735.8334503173828,"y":1455.2382650375366,"z":"da0dd7d5.9e19b8","wires":[["b37129b.49908d8","6045f035.19ac7"]]},{"id":"a476f52c.2521b8","type":"switchNode","name":"switch network-id != NULL","xml":"<switch test=\"`$tmp.vt-ip.network-id != '' `\">\n","comments":"","outputs":1,"x":483.8334159851074,"y":1095.631085395813,"z":"da0dd7d5.9e19b8","wires":[["88f840b3.58c1b","5640206.4e6bbe"]]},{"id":"82d77d1b.3832d","type":"switchNode","name":"switch network-instance-group-id != NULL","xml":"<switch test=\"`$tmp.vt-ip.network-instance-group-id != '' `\">\n","comments":"","outputs":1,"x":963.9406204223633,"y":1403.1311302185059,"z":"da0dd7d5.9e19b8","wires":[["d644e347.015b8"]]},{"id":"88f840b3.58c1b","type":"outcome","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":701.3334045410156,"y":1095.6310873031616,"z":"da0dd7d5.9e19b8","wires":[["feedbf55.a5941"]]},{"id":"5640206.4e6bbe","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":711.440601348877,"y":1402.6311292648315,"z":"da0dd7d5.9e19b8","wires":[["82d77d1b.3832d"]]},{"id":"d644e347.015b8","type":"outcome","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1217.6905899047852,"y":1402.3811206817627,"z":"da0dd7d5.9e19b8","wires":[["ea702123.03399"]]},{"id":"93c23a8c.f589b8","type":"outcome","name":"ipv4","xml":"<outcome value='ipv4'>\n","comments":"","outputs":1,"x":650.7500228881836,"y":346.250018119812,"z":"da0dd7d5.9e19b8","wires":[["86ce5cb2.1cc9e"]]},{"id":"c8332654.c5e6a8","type":"outcome","name":"ipv6","xml":"<outcome value='ipv6'>\n","comments":"","outputs":1,"x":653.2500228881836,"y":392.500018119812,"z":"da0dd7d5.9e19b8","wires":[["e725105b.d0815"]]},{"id":"86ce5cb2.1cc9e","type":"set","name":"tmp.address-family = 4, mp.sql.address-family = %4","xml":"<set>\n<parameter name='tmp.address-family' value='4' />\n<parameter name='tmp.sql.address-family' value='%4' />\n","comments":"","x":927.5000381469727,"y":346.50002574920654,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"e725105b.d0815","type":"set","name":"tmp.address-family = 6, tmp.sql.address-family=%6","xml":"<set>\n<parameter name='tmp.address-family' value='6' />\n<parameter name='tmp.sql.address-family' value='%6' />\n","comments":"","x":928.0000381469727,"y":391.75002574920654,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"ae3a9d2a.85162","type":"switchNode","name":"switch level == 4","xml":"<switch test=\"`$db.selected-subnet-keys.level == '4' `\">\n","comments":"","outputs":1,"x":1407.7264976501465,"y":1881.0358905792236,"z":"da0dd7d5.9e19b8","wires":[["99bc0a56.f15958","8f3ae4a0.6b13c8"]]},{"id":"99bc0a56.f15958","type":"outcome","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1593.4764442443848,"y":1933.535888671875,"z":"da0dd7d5.9e19b8","wires":[["64ef27ad.e98c18"]]},{"id":"b055f0b1.143a8","type":"break","name":"break","xml":"<break>\n","comments":"","x":1898.1193084716797,"y":2100.678692817688,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"64ef27ad.e98c18","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1737.2264671325684,"y":1933.7859020233154,"z":"da0dd7d5.9e19b8","wires":[["87b119cf.86a188","34e320b6.cbbea","d275a6b.bf0f758","b055f0b1.143a8"]]},{"id":"87b119cf.86a188","type":"set","name":"set tmp.selected-entity-id","xml":"<set>\n<parameter name='tmp.selected-entity-id' value='`$db.selected-subnet-keys.entity-id`' />\n","comments":"","x":1949.6551094055176,"y":2006.3930673599243,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"b912e4a9.bce1c8","type":"set","name":"set tmp.eipam.info = vf-module-id","xml":"<set>\n<parameter name=\"tmp.eipam.info\" value=\"`$tmp.vt-ip.vf-module-id`\"/>\n","comments":"","x":1045.3335189819336,"y":691.16676902771,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"34e320b6.cbbea","type":"set","name":"set tmp.selected-plan-name","xml":"<set>\n<parameter name='tmp.selected-plan-name' value='`$db.selected-subnet-data[$didx].plan-name`' />\n","comments":"","x":1960.1550941467285,"y":2052.893054485321,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"3aac8436.58ee6c","type":"set","name":"set eipam-ip-block","xml":"<set>\n<parameter name='eipam-ip-block.plans[0].plan-name' value='`$tmp.selected-plan-name`' />\n<parameter name='eipam-ip-block.plans[0].address-family' value=\"`$tmp.vt-ip.ip-version`\" />\n<parameter name='eipam-ip-block.plans[0].requests[0].client-key' \n\tvalue=\"`$tmp.selected-client-key`\" />\n<parameter name=\"eipam-ip-block.plans[0].requests[0].info\" \n\tvalue=\"`$tmp.eipam.info`\"/>\n<parameter name=\"eipam-ip-block.plans[0].requests[0].pools_length\" value=\"4\"/>\n<parameter name='eipam-ip-block.plans[0].requests_length' value='1' />\n<parameter name=\"eipam-ip-block.plans_length\" value=\"1\"/>","comments":"","x":453.79777908325195,"y":2331.3573055267334,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"da5910d3.5b98d","type":"execute","name":"call EIPAM assignIPAddress","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"assignIPAddress\">","comments":"","outputs":1,"x":482.64345932006836,"y":2489.7617540359497,"z":"da0dd7d5.9e19b8","wires":[["9803868b.2b8d18"]]},{"id":"9803868b.2b8d18","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":696.6434593200684,"y":2489.7617540359497,"z":"da0dd7d5.9e19b8","wires":[["b38b998e.3c6108"]]},{"id":"e42ece58.9590a","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=\"`'An error occured while obtaining ip addresses from EIPAM: ' + $error-message`\" />\n","comments":"","x":1041.1434898376465,"y":2489.5117540359497,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"b38b998e.3c6108","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":858.4526481628418,"y":2490.011742591858,"z":"da0dd7d5.9e19b8","wires":[["e42ece58.9590a"]]},{"id":"dd589dc0.aebfe","type":"set","name":"set tmp.selected-client-key FIXED","xml":"<set>\n<parameter name=\"tmp.selected-client-key\" \n\tvalue=\"`$tmp.vt-ip.vm-type + '|' +\n\t\t\t$tmp.vt-ip.vnfc-name + '|' +\n\t\t\t$tmp.vt-ip.network-instance-group-function + '|' + \n\t\t\t$tmp.vt-ip.type + '|' + \n\t\t\t$tmp.address-family + '|' + \n\t\t\t$tmp.vt-ip.sequence-number`\" />\n\t\n<!--\t\nfixed-ip client-key:\nvm-type + VFCname + network-instance-group-function + \"FIXED\" + [ip-version(4/6)] + seqNo\n\t\tseqNo required for unique, but not required for shared\n-->","comments":"","x":1046.7501373291016,"y":649.0000076293945,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"d9ab5e25.a72d4","type":"set","name":"set tmp.selected-client-key VIP","xml":"<set>\n<parameter name='tmp.selected-client-key' \n\tvalue=\"`$tmp.vt-ip.nf-role + '|' + \n\t\t\t$tmp.vt-ip.network-instance-group-function + '|' +\n\t\t\t$tmp.vt-ip.type + '|' + \n\t\t\t$tmp.vt-ip.ip-version`\" />\n\t\n<!--\t\nloating-ip client-key:\nnf-role + network-instance-group-function + \"VIP\" + [ip-version(4/6)]\n-->","comments":"","x":1037.500015258789,"y":889.0000123977661,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"66187f63.a9f7e","type":"switchNode","name":"switch vf-module-id","xml":"<switch test='`$tmp.vt-ip.vf-module-id`'>\n","comments":"","outputs":1,"x":1000.2500152587891,"y":565.5000076293945,"z":"da0dd7d5.9e19b8","wires":[["2be7eff.1ecde1"]]},{"id":"2be7eff.1ecde1","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1179.2500190734863,"y":565.750002861023,"z":"da0dd7d5.9e19b8","wires":[["d378b864.d20678"]]},{"id":"d378b864.d20678","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='vf-module-id is required' />\n","comments":"","x":1334.0000228881836,"y":565.500002861023,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"845733f4.78fad","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":771.0000152587891,"y":760.5000085830688,"z":"da0dd7d5.9e19b8","wires":[["a649d68c.d9ddc8","d9ab5e25.a72d4","42424dee.ed9f94","b5cd3280.de819"]]},{"id":"a0c78a24.944498","type":"switchNode","name":"switch sequence-number","xml":"<switch test='`$tmp.vt-ip.sequence-number`'>\n","comments":"","outputs":1,"x":1022.0000152587891,"y":606.5000076293945,"z":"da0dd7d5.9e19b8","wires":[["b1da28ce.48b808"]]},{"id":"b1da28ce.48b808","type":"outcome","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":1218.0000190734863,"y":606.750002861023,"z":"da0dd7d5.9e19b8","wires":[["7474eec4.3c2ee"]]},{"id":"7474eec4.3c2ee","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='seq-num is required' />\n","comments":"","x":1372.7500228881836,"y":606.500002861023,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"8f3ae4a0.6b13c8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1590.9764442443848,"y":1881.2858848571777,"z":"da0dd7d5.9e19b8","wires":[["e4d528c2.841028"]]},{"id":"4d128fce.85a7e","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='No level 4 KeyName found in EIPAM_IP_SUBNET_KEYS' />\n","comments":"","x":860.6191253662109,"y":2157.750346183777,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"1f554749.0a5289","type":"get-resource","name":"get EIPAM_IP_SUBNET_KEYS by entity_id","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from EIPAM_IP_SUBNET_KEYS  \n  \twhere entity_id = $tmp.selected-entity-id order by level'\n  pfx='db.eipam-subnet-keys[]'>","comments":"","outputs":1,"x":532.0479011535645,"y":2216.35729265213,"z":"da0dd7d5.9e19b8","wires":[["c8ad41e7.8215d"]]},{"id":"b37129b.49908d8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2031.583480834961,"y":1455.2382621765137,"z":"da0dd7d5.9e19b8","wires":[["27b67a83.1da0b6"]]},{"id":"27b67a83.1da0b6","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNETS table' />\n","comments":"","x":2181.58345413208,"y":1455.2382488250732,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"91f544f0.514358","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1229.4048881530762,"y":1837.5000734329224,"z":"da0dd7d5.9e19b8","wires":[["f1303259.8492"]]},{"id":"f1303259.8492","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNET_KEYS table to find MAX level by entity_id' />\n","comments":"","x":1397.4048614501953,"y":1837.500060081482,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"c578b30f.c54f8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1233.9049072265625,"y":1881.0000886917114,"z":"da0dd7d5.9e19b8","wires":[["ae3a9d2a.85162"]]},{"id":"c8ad41e7.8215d","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":806.7977714538574,"y":2216.3572754859924,"z":"da0dd7d5.9e19b8","wires":[["b26cc25b.ca6da"]]},{"id":"b26cc25b.ca6da","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNET_KEYS table by entity_id' />\n","comments":"","x":974.7977447509766,"y":2216.357262134552,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"2b7f2a7c.3c9776","type":"set","name":"set eipam-ip-block key-name/value","xml":"<set>\n<parameter name=\"eipam-ip-block.plans[0].requests[0].pools[$key].key-name\" \n\tvalue=\"`$db.eipam-subnet-keys[$key].key-name`\"/>\n<parameter name=\"eipam-ip-block.plans[0].requests[0].pools[$key].key-value\" \n\tvalue=\"`$db.eipam-subnet-keys[$key].key-value`\"/>\n","comments":"","x":818.7978019714355,"y":2279.1072945594788,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"7a2137f8.de11d8","type":"for","name":"for key in db.eipam-subnet-keys[]","xml":"<for index='key' start='0' end='`$db.eipam-subnet-keys_length`' >\n","comments":"","outputs":1,"x":500.0477714538574,"y":2278.8572754859924,"z":"da0dd7d5.9e19b8","wires":[["2b7f2a7c.3c9776"]]},{"id":"ea702123.03399","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1388.107219696045,"y":1401.9644470214844,"z":"da0dd7d5.9e19b8","wires":[["d9fa5743.fc1308","63c78328.8f2ecc","b2cfdd91.02334"]]},{"id":"b5cd3280.de819","type":"set","name":"set tmp.eipam.info = network-instance-group-id","xml":"<set>\n<parameter name=\"tmp.eipam.info\" value=\"`$tmp.vt-ip.network-instance-group-id`\"/>\n","comments":"","x":1087.7500305175781,"y":845.0000095367432,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"63c78328.8f2ecc","type":"set","name":"set eipam-ip-block network-instance-group-id","xml":"<set>\n<parameter name=\"eipam-ip-block.plans[0].requests[0].network-instance-group-id\" \n\tvalue=\"`$tmp.vt-ip.network-instance-group-id`\"/>\n","comments":"","x":1700.499984741211,"y":1548.5716457366943,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"2aa50b37.f28b94","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1420.9999542236328,"y":1148.1429443359375,"z":"da0dd7d5.9e19b8","wires":[["bb874230.642da"]]},{"id":"bb874230.642da","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNETS table' />\n","comments":"","x":1570.999927520752,"y":1148.142930984497,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"feedbf55.a5941","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":866.7500228881836,"y":1095.7143869400024,"z":"da0dd7d5.9e19b8","wires":[["4bb7255e.8118dc","c33a5903.ba87e8","176f25a9.a8fe9a"]]},{"id":"c33a5903.ba87e8","type":"set","name":"set eipam-ip-block network-id","xml":"<set>\n<parameter name=\"eipam-ip-block.plans[0].requests[0].network-id\" \n\tvalue=\"`$tmp.vt-ip.network-id`\"/>\n","comments":"","x":1144.6070861816406,"y":1222.8215999603271,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"fc89f675.3e0838","type":"set","name":"initialize eipam-ip-block","xml":"<set>\n<parameter name='eipam-ip-block.' value='' />\n","comments":"","x":465.00001525878906,"y":457.00001525878906,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"42424dee.ed9f94","type":"switchNode","name":"switch network-instance-group-id == NULL","xml":"<switch test=\"`$tmp.vt-ip.network-instance-group-id == '' `\">\n","comments":"","outputs":1,"x":1074.000015258789,"y":806.2500114440918,"z":"da0dd7d5.9e19b8","wires":[["2490f93f.ceaa26"]]},{"id":"2490f93f.ceaa26","type":"outcome","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1320,"y":803.75,"z":"da0dd7d5.9e19b8","wires":[["23cbf379.9fba5c"]]},{"id":"23cbf379.9fba5c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value='network-isntance-group-id is required for VIP' />\n","comments":"","x":1483.7500038146973,"y":803.5,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"bd90de81.a134","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/vlan-tag-ip.log' />\n","comments":"","outputs":1,"x":434.4643669128418,"y":2428.1905307769775,"z":"da0dd7d5.9e19b8","wires":[[]]},{"id":"ca6f72b2.6bf8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1430.857032775879,"y":1195.2856945991516,"z":"da0dd7d5.9e19b8","wires":[["c16a6051.0d9e5"]]},{"id":"c16a6051.0d9e5","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value = \"`'No EIPAM_IP_SUBNETS entry found with network-id = ' + $tmp.vt-ip.network-id + ' and address_family = ' + $tmp.address-family`\" />\n","comments":"","x":1592.2856788635254,"y":1195.285696029663,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"6045f035.19ac7","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2039.4286270141602,"y":1500.1429061889648,"z":"da0dd7d5.9e19b8","wires":[["9e4c2215.1e732"]]},{"id":"9e4c2215.1e732","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value = \"`'No EIPAM_IP_SUBNETS entry found with network-instance-group-id = ' + $tmp.vt-ip.network-instance-group-id + ' and address_family = ' + $tmp.address-family`\" />\n","comments":"","x":2200.8572731018066,"y":1500.1429076194763,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"f2df2449.d5fa58","type":"set","name":"set tmp.sql","xml":"<set>\n<parameter name='tmp.sql' \n\tvalue=\"`'SELECT a.entity_id, a.key_name, a.key_value, a.level from EIPAM_IP_SUBNET_KEYS a where level = (SELECT MAX(level) from EIPAM_IP_SUBNET_KEYS b where b.entity_id = a.entity_id and entity_id = ' + ' $db.selected-subnet-data[$didx].entity-id )'`\" />","comments":"","x":774.4286499023438,"y":1778.9048070907593,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"b2cfdd91.02334","type":"set","name":"set tmp.sql","xml":"<set>\n<parameter name='tmp.sql' \n\tvalue=\"`'SELECT * from EIPAM_IP_SUBNETS WHERE network_instance_group_id = '+ \n\t\t'$tmp.vt-ip.network-instance-group-id AND address_family like $tmp.sql.address-family'`\" />","comments":"","x":1597.285774230957,"y":1402.2859001159668,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"8a9adc86.dcb73","type":"set","name":"set tmp.level4-key-found = false","xml":"<set>\n<parameter name='tmp.level4-key-found' value='false' />\n","comments":"","x":496.8572540283203,"y":1638.904878616333,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"d275a6b.bf0f758","type":"set","name":"set tmp.level4-key-found = true","xml":"<set>\n<parameter name='tmp.level4-key-found' value='true' />\n","comments":"","x":1974.7143440246582,"y":1934.0477485656738,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"e4d528c2.841028","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1734.7143287658691,"y":1880.3334188461304,"z":"da0dd7d5.9e19b8","wires":[[]]},{"id":"176f25a9.a8fe9a","type":"set","name":"set tmp.sql","xml":"<set>\n<parameter name='tmp.sql' \n\tvalue=\"`'SELECT * from EIPAM_IP_SUBNETS WHERE network_id = ' + \n\t'$tmp.vt-ip.network-id AND address_family like $tmp.sql.address-family'`\" />","comments":"","x":1083.7143478393555,"y":1095.285852432251,"z":"da0dd7d5.9e19b8","wires":[]},{"id":"3f9be8dd.c4ce68","type":"switchNode","name":"switch tmp.level4-key-found","xml":"<switch test=\"`$tmp.level4-key-found`\">\n","comments":"","outputs":1,"x":486.85719299316406,"y":2157.4764404296875,"z":"da0dd7d5.9e19b8","wires":[["3719dfe1.2f538"]]},{"id":"3719dfe1.2f538","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":706.1429443359375,"y":2158.4763946533203,"z":"da0dd7d5.9e19b8","wires":[["4d128fce.85a7e"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-get-resource-request.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-get-resource-request.json
new file mode 100644
index 0000000..586ee40
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-get-resource-request.json
@@ -0,0 +1 @@
+[{"id":"71e5f19b.23cc1","type":"dgstart","name":"DGSTART","outputs":1,"x":123.75,"y":61.25,"z":"c9fb05a1.f03a38","wires":[["4e6a76bb.d58118"]]},{"id":"4e6a76bb.d58118","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":399.75,"y":62.25,"z":"c9fb05a1.f03a38","wires":[["b1975c3c.54147"]]},{"id":"b1975c3c.54147","type":"method","name":" vnf-get-resource-request","xml":"<method rpc='vnf-get-resource-request' mode='sync'>\n","comments":"","outputs":1,"x":716.75,"y":62.25,"z":"c9fb05a1.f03a38","wires":[["bbb2187d.b4ae88"]]},{"id":"bbb2187d.b4ae88","type":"block","name":"block atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":136.25,"y":144.25,"z":"c9fb05a1.f03a38","wires":[["279803f6.bb850c","7e6dd657.146b98","3a37e476.da7fcc"]]},{"id":"12d6dc0d.fd64f4","type":"set","name":"set","xml":"<set>\n   <parameter name=\"vnf-get-resource-request-output.vnf-get-resource-response-information.vnf_length\" value='`$service-data.vnfs.vnf_length`'/>\n   ","comments":"","x":892.75,"y":221.25,"z":"c9fb05a1.f03a38","wires":[]},{"id":"52f69811.1414c8","type":"for","name":"for vnfs","xml":"<for index='i' start='0' end='`$service-data.vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":1291.75,"y":314.25,"z":"c9fb05a1.f03a38","wires":[["af01353.72b0dc8"]]},{"id":"13db184.775a9e8","type":"set","name":"set","xml":"<set>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vnf-id`' value=\"`$service-data.vnfs.vnf[$i].vnf-id`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vnf-name`' value=\"`$service-data.vnfs.vnf[$i].vnf-name`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param_length`' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length`'/>\n    <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module_length`' value='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length`'/>\n   \n","comments":"","x":1707.75,"y":312.25,"z":"c9fb05a1.f03a38","wires":[]},{"id":"af01353.72b0dc8","type":"block","name":"block atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1484.75,"y":313.25,"z":"c9fb05a1.f03a38","wires":[["13db184.775a9e8","64b1d01f.5a16d","210f3c73.f2bc34"]]},{"id":"500a1b48.ca00b4","type":"for","name":"for vnf-parameters-data.param","xml":"<for index='j' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >\n","comments":"","outputs":1,"x":2034.75,"y":411.25,"z":"c9fb05a1.f03a38","wires":[["6092aad9.5c23c4"]]},{"id":"638917f.a0714e8","type":"set","name":"set","xml":"<set>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].name`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].name`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].value`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].value`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.status`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.status`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.capability-name`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.capability-name`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.resource-key_length`' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length`' />\n","comments":"","x":2428.75,"y":412.25,"z":"c9fb05a1.f03a38","wires":[]},{"id":"6092aad9.5c23c4","type":"block","name":"block atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":2244.75,"y":412.25,"z":"c9fb05a1.f03a38","wires":[["638917f.a0714e8","7fd0e372.4ea51c"]]},{"id":"226d1977.2bb2a6","type":"for","name":"for vnf-parameters-data.param","xml":"<for index='k' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length`' >\n","comments":"","outputs":1,"x":2936.75,"y":490.25,"z":"c9fb05a1.f03a38","wires":[["90271061.718a2"]]},{"id":"90271061.718a2","type":"set","name":"set","xml":"<set>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.resource-key[$k].name`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key[$k].name`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.resource-key[$k].value`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key[$k].value`\"/>\n   ","comments":"","x":3160.75,"y":490.25,"z":"c9fb05a1.f03a38","wires":[]},{"id":"adbdcd86.970f","type":"set","name":"set","xml":"<set>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].vf-module-id`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-id`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param_length`' value=\"`service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param_length`\"/>\n   \n","comments":"","x":2457.25,"y":665.25,"z":"c9fb05a1.f03a38","wires":[]},{"id":"8a363afa.1d7ff8","type":"block","name":"block atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":2260.25,"y":666.25,"z":"c9fb05a1.f03a38","wires":[["adbdcd86.970f","6c63251f.2e2dbc"]]},{"id":"6c63251f.2e2dbc","type":"for","name":"for vnf-parameters-data.param","xml":"<for index='m' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >\n","comments":"","outputs":1,"x":2463.25,"y":742.25,"z":"c9fb05a1.f03a38","wires":[["2927472a.a6f5b8"]]},{"id":"875e84f.49d8978","type":"set","name":"set","xml":"<set>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].name`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].name`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].value`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].value`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].resource-resolution-data.resource-key_length`' value=\"`service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length`\"/>\n   \n\n","comments":"","x":2874.25,"y":741.25,"z":"c9fb05a1.f03a38","wires":[]},{"id":"2927472a.a6f5b8","type":"block","name":"block atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":2690.25,"y":741.25,"z":"c9fb05a1.f03a38","wires":[["875e84f.49d8978","42a7a5d9.b0445c"]]},{"id":"8ae546f5.8f01a8","type":"for","name":"for vnf-parameters-data.param","xml":"<for index='n' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length`' >\n","comments":"","outputs":1,"x":3392.25,"y":815.25,"z":"c9fb05a1.f03a38","wires":[["a6125bb5.09a018"]]},{"id":"a6125bb5.09a018","type":"set","name":"set","xml":"<set>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].resource-resolution-data.resource-key[$n].name`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].name`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].resource-resolution-data.resource-key[$n].value`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].value`\"/>\n","comments":"","x":3641.25,"y":814.25,"z":"c9fb05a1.f03a38","wires":[]},{"id":"8b961e1.b95a5e","type":"for","name":"for vnf-parameters-data.param","xml":"<for index='l' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length`' >\n","comments":"","outputs":1,"x":2010.25,"y":665.25,"z":"c9fb05a1.f03a38","wires":[["8a363afa.1d7ff8"]]},{"id":"98ac6570.361ae8","type":"switchNode","name":"switch vnf length null","xml":"<switch test=\"`$service-data.vnfs.vnf_length == ''`\">\n\n","comments":"","outputs":1,"x":927.75,"y":312.25,"z":"c9fb05a1.f03a38","wires":[["edd588ca.df2798"]]},{"id":"edd588ca.df2798","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1120.75,"y":313.25,"z":"c9fb05a1.f03a38","wires":[["52f69811.1414c8"]]},{"id":"64b1d01f.5a16d","type":"switchNode","name":"switch param length null","xml":"<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length == ''`\">\n\n","comments":"","outputs":1,"x":1760.75,"y":361.25,"z":"c9fb05a1.f03a38","wires":[["145834f.59f5bcb"]]},{"id":"145834f.59f5bcb","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1836.75,"y":411.25,"z":"c9fb05a1.f03a38","wires":[["500a1b48.ca00b4"]]},{"id":"aea627e9.1c1d48","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1860.75,"y":598.25,"z":"c9fb05a1.f03a38","wires":[["8b961e1.b95a5e"]]},{"id":"210f3c73.f2bc34","type":"switchNode","name":"switch vf module length null","xml":"<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length == ''`\">\n\n","comments":"","outputs":1,"x":1769.75,"y":546.25,"z":"c9fb05a1.f03a38","wires":[["aea627e9.1c1d48"]]},{"id":"7fd0e372.4ea51c","type":"switchNode","name":"switch resource-key length null","xml":"<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length == ''`\">\n\n","comments":"","outputs":1,"x":2498.75,"y":490.25,"z":"c9fb05a1.f03a38","wires":[["b8c1cd4c.e0428"]]},{"id":"b8c1cd4c.e0428","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2725.75,"y":490.25,"z":"c9fb05a1.f03a38","wires":[["226d1977.2bb2a6"]]},{"id":"42a7a5d9.b0445c","type":"switchNode","name":"switch resource-key length null","xml":"<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length == ''`\">\n\n","comments":"","outputs":1,"x":2942.75,"y":816.25,"z":"c9fb05a1.f03a38","wires":[["1364a38e.caf57c"]]},{"id":"1364a38e.caf57c","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":3169.75,"y":816.25,"z":"c9fb05a1.f03a38","wires":[["8ae546f5.8f01a8"]]},{"id":"12107077.40b7c","type":"set","name":"set","xml":"<set>\n\t<parameter name=\"ack-final\" value=\"Y\"/>\n   ","comments":"","x":274.0833740234375,"y":1081.916748046875,"z":"c9fb05a1.f03a38","wires":[]},{"id":"3a37e476.da7fcc","type":"returnSuccess","name":"return success","xml":"<return status=\"success\">\n    <parameter name=\"error-code\" value=\"200\" />","comments":"","x":287.0833740234375,"y":1182.916748046875,"z":"c9fb05a1.f03a38","wires":[]},{"id":"279803f6.bb850c","type":"set","name":"set","xml":"<set>\n   <parameter name=\"vnf-get-resource-request-output.vnf-get-resource-response-information.service-instance-id\" value='`$vnf-get-resource-request-input.service-information.service-instance-id`'/>\n   <parameter name=\"vnf-get-resource-request-output.vnf-get-resource-response-information.service-instance-name\" value='`$service-data.service-topology.service-topology-identifier.service-instance-name`'/>\n   ","comments":"","x":281.75,"y":144.25,"z":"c9fb05a1.f03a38","wires":[]},{"id":"7e6dd657.146b98","type":"switchNode","name":"switch vnf length null","xml":"<switch test=\"`$vnf-get-resource-request-input.vnf_length == ''`\">\n\n","comments":"","outputs":1,"x":337.5,"y":222.75,"z":"c9fb05a1.f03a38","wires":[["7ea307a8.26c5f8","43925d74.653894"]]},{"id":"7ea307a8.26c5f8","type":"not-found","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":522.75,"y":222.75,"z":"c9fb05a1.f03a38","wires":[["d7e5acc6.a6a9e"]]},{"id":"43925d74.653894","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":514.75,"y":569.25,"z":"c9fb05a1.f03a38","wires":[["244c88d9.17e128"]]},{"id":"d7e5acc6.a6a9e","type":"block","name":"block atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":672.75,"y":221.25,"z":"c9fb05a1.f03a38","wires":[["12d6dc0d.fd64f4","98ac6570.361ae8"]]},{"id":"244c88d9.17e128","type":"block","name":"block atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":689.75,"y":569.25,"z":"c9fb05a1.f03a38","wires":[["97be966.400cf68","6fab5c8.8f5a5a4"]]},{"id":"97be966.400cf68","type":"set","name":"set","xml":"<set>\n   <parameter name=\"tmp.vnf_counter\" value='0'/>","comments":"","x":854.75,"y":568.25,"z":"c9fb05a1.f03a38","wires":[]},{"id":"6fab5c8.8f5a5a4","type":"for","name":"for vnf-parameters-data.param","xml":"<for index='ll' start='0' end='`$vnf-get-resource-request-input.vnf_length`' >\n","comments":"","outputs":1,"x":933.75,"y":640.25,"z":"c9fb05a1.f03a38","wires":[["7fd5c704.7b7d88"]]},{"id":"7fd5c704.7b7d88","type":"block","name":"block atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1193.7498779296875,"y":803.5833129882812,"z":"c9fb05a1.f03a38","wires":[["7f48d3f2.bc62fc","5d7bb52b.3bf2fc"]]},{"id":"7f48d3f2.bc62fc","type":"set","name":"set","xml":"<set>\n   <parameter name=\"tmp.vnf-id\" value=\"`$vnf-get-resource-request-input.vnf[$ll].vnf-id`\"/>\n   \n   ","comments":"","x":1370.4998779296875,"y":804.5833129882812,"z":"c9fb05a1.f03a38","wires":[]},{"id":"53ff1d53.c963a4","type":"for","name":"for vnfs","xml":"<for index='i' start='0' end='`$service-data.vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":1589.2498779296875,"y":921.5833129882812,"z":"c9fb05a1.f03a38","wires":[["23a18f9b.123be"]]},{"id":"23a18f9b.123be","type":"block","name":"block atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1605.2498779296875,"y":1000.5833129882812,"z":"c9fb05a1.f03a38","wires":[["714e4b4d.72be04"]]},{"id":"4ab50efe.43414","type":"set","name":"set","xml":"<set>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vnf-id`' value=\"`$service-data.vnfs.vnf[$i].vnf-id`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vnf-name`' value=\"`$service-data.vnfs.vnf[$i].vnf-name`\"/>\n   <parameter name=\"tmp.pnum\" value='0'/>\n   \n","comments":"","x":1885.2498779296875,"y":1178.5833129882812,"z":"c9fb05a1.f03a38","wires":[]},{"id":"714e4b4d.72be04","type":"switchNode","name":"switch vnf-id match","xml":"<switch test='`$tmp.vnf-id == $service-data.vnfs.vnf[$i].vnf-id`'>\n\n","comments":"","outputs":1,"x":1784.2498779296875,"y":999.5833129882812,"z":"c9fb05a1.f03a38","wires":[["98998365.bf924"]]},{"id":"98998365.bf924","type":"not-found","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1988.7498779296875,"y":998.083251953125,"z":"c9fb05a1.f03a38","wires":[["a5490309.aed49"]]},{"id":"a5490309.aed49","type":"block","name":"block atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1662.2498779296875,"y":1179.5833129882812,"z":"c9fb05a1.f03a38","wires":[["4ab50efe.43414","eb769595.4a1c88","80140d24.984d9","3c557cf7.80ad04"]]},{"id":"498ab47b.37a03c","type":"for","name":"for vnf-parameters-data.param","xml":"<for index='j' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >\n","comments":"","outputs":1,"x":2212.2498779296875,"y":1277.5833129882812,"z":"c9fb05a1.f03a38","wires":[["648562c9.05cdfc"]]},{"id":"15c41760.a683e9","type":"set","name":"set","xml":"<set>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].name`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].name`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].value`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].value`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.status`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.status`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.capability-name`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.capability-name`\"/>\n   <parameter name='tmp.prnum' value='0' />\n","comments":"","x":2606.2498779296875,"y":1278.5833129882812,"z":"c9fb05a1.f03a38","wires":[]},{"id":"648562c9.05cdfc","type":"block","name":"block atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":2422.2498779296875,"y":1278.5833129882812,"z":"c9fb05a1.f03a38","wires":[["15c41760.a683e9","eba04fd3.4cbc1","7ecd748d.54608c"]]},{"id":"950d3183.cecf7","type":"for","name":"for vnf-parameters-data.param","xml":"<for index='k' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length`' >\n","comments":"","outputs":1,"x":3114.2498779296875,"y":1356.5833129882812,"z":"c9fb05a1.f03a38","wires":[["98f080bb.9a2a9"]]},{"id":"98f080bb.9a2a9","type":"set","name":"set","xml":"<set>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.resource-key[$tmp.prnum].name`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key[$k].name`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.resource-key[$tmp.prnum].value`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key[$k].value`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.resource-key_length`' value='`$tmp.prnum + 1`' />\n   <parameter name='tmp.prnum' value='`$tmp.prnum + 1`' />\n\n","comments":"","x":3338.2498779296875,"y":1356.5833129882812,"z":"c9fb05a1.f03a38","wires":[]},{"id":"eba04fd3.4cbc1","type":"set","name":"set","xml":"<set>\n    <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param_length`' value='`$tmp.pnum + 1`' />\n    <parameter name='tmp.pnum' value='`$tmp.pnum + 1`' />\n","comments":"","x":2618.2498779296875,"y":1425.5833129882812,"z":"c9fb05a1.f03a38","wires":[]},{"id":"fd3454b5.cefc68","type":"set","name":"set","xml":"<set>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].vf-module-id`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-id`\"/>\n   <parameter name=\"tmp.vfpnum\" value='0'/>\n   \n","comments":"","x":2836.75048828125,"y":1934.8331909179688,"z":"c9fb05a1.f03a38","wires":[]},{"id":"e457ca57.d615e8","type":"switchNode","name":"switch vf-module-id is null","xml":"<switch test=\"`$vnf-get-resource-request-input.vnf[$ll].vf-module_length == ''`\">\n\n","comments":"","outputs":1,"x":2392.0005493164062,"y":1727.5832214355469,"z":"c9fb05a1.f03a38","wires":[["44111800.179bc8","261f3d7c.d77342"]]},{"id":"261f3d7c.d77342","type":"not-found","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":2625.75048828125,"y":1777.8331909179688,"z":"c9fb05a1.f03a38","wires":[["3f2b06c9.6617ea"]]},{"id":"44111800.179bc8","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2625.75048828125,"y":1662.8331909179688,"z":"c9fb05a1.f03a38","wires":[["8fc1c07d.5fb89"]]},{"id":"3f2b06c9.6617ea","type":"block","name":"block atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":2639.75048828125,"y":1935.8331909179688,"z":"c9fb05a1.f03a38","wires":[["fd3454b5.cefc68","74abe52f.d8d7fc"]]},{"id":"74abe52f.d8d7fc","type":"for","name":"for vnf-parameters-data.param","xml":"<for index='m' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >\n","comments":"","outputs":1,"x":2842.75048828125,"y":2011.8331909179688,"z":"c9fb05a1.f03a38","wires":[["ceac56f.9b593a8"]]},{"id":"c71fe51d.045db8","type":"set","name":"set","xml":"<set>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].name`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].name`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].value`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].value`\"/>\n   <parameter name='tmp.pvnfrnum' value='0' />\n","comments":"","x":3253.75048828125,"y":2010.8331909179688,"z":"c9fb05a1.f03a38","wires":[]},{"id":"ceac56f.9b593a8","type":"block","name":"block atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":3069.75048828125,"y":2010.8331909179688,"z":"c9fb05a1.f03a38","wires":[["c71fe51d.045db8","e08a2da7.f5fec","8103db8e.8bbc98"]]},{"id":"a0cff78e.a1a3a8","type":"for","name":"for vnf-parameters-data.param","xml":"<for index='n' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length`' >\n","comments":"","outputs":1,"x":3759.2505798339844,"y":2081.0831298828125,"z":"c9fb05a1.f03a38","wires":[["91e21dd.0da18e"]]},{"id":"91e21dd.0da18e","type":"set","name":"set","xml":"<set>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key[$tmp.pvnfrnum].name`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].name`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key[$tmp.pvnfrnum].value`' value=\"`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].value`\"/>\n   <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key_length`' value='`$tmp.pvnfrnum + 1`' />\n   <parameter name='tmp.pvnfrnum' value='`$tmp.pvnfrnum + 1`' />\n   \n","comments":"","x":3973.2505798339844,"y":2081.333038330078,"z":"c9fb05a1.f03a38","wires":[]},{"id":"e08a2da7.f5fec","type":"set","name":"set","xml":"<set>\n    <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param_length`' value='`$tmp.vfpnum + 1`' />\n    <parameter name='tmp.vfpnum' value='`$tmp.vfpnum + 1`' />\n   \n","comments":"","x":3265.75048828125,"y":2157.8331909179688,"z":"c9fb05a1.f03a38","wires":[]},{"id":"1ffac0d4.9f3bdf","type":"for","name":"for vf-module","xml":"<for index='ln' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length`' >\n","comments":"","outputs":1,"x":2187.75048828125,"y":1729.8331909179688,"z":"c9fb05a1.f03a38","wires":[["e457ca57.d615e8"]]},{"id":"eb769595.4a1c88","type":"set","name":"set","xml":"<set>\n  <parameter name='vnf-get-resource-request-output.vnf-get-resource-response-information.vnf_length' value='`$tmp.vnf_counter + 1`' />\n  <parameter name='tmp.vnf_counter' value='`$tmp.vnf_counter + 1`' />\n  \n","comments":"","x":1839.9998168945312,"y":2105.583251953125,"z":"c9fb05a1.f03a38","wires":[]},{"id":"5d7bb52b.3bf2fc","type":"switchNode","name":"switch vnf length null","xml":"<switch test=\"`$service-data.vnfs.vnf_length == ''`\">\n\n","comments":"","outputs":1,"x":1411.9999389648438,"y":865.0833129882812,"z":"c9fb05a1.f03a38","wires":[["8872705c.6c6b"]]},{"id":"8872705c.6c6b","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1429.2498779296875,"y":922.5833129882812,"z":"c9fb05a1.f03a38","wires":[["53ff1d53.c963a4"]]},{"id":"80140d24.984d9","type":"switchNode","name":"switch param length null","xml":"<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length == ''`\">\n\n","comments":"","outputs":1,"x":1938.2498779296875,"y":1227.5833129882812,"z":"c9fb05a1.f03a38","wires":[["aded468b.41a518"]]},{"id":"aded468b.41a518","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2014.2498779296875,"y":1277.5833129882812,"z":"c9fb05a1.f03a38","wires":[["498ab47b.37a03c"]]},{"id":"75a3c377.d1f7bc","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2038.25048828125,"y":1662.8331909179688,"z":"c9fb05a1.f03a38","wires":[["1ffac0d4.9f3bdf"]]},{"id":"3c557cf7.80ad04","type":"switchNode","name":"switch module length null","xml":"<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length == ''`\">\n\n","comments":"","outputs":1,"x":1947.25048828125,"y":1610.8331909179688,"z":"c9fb05a1.f03a38","wires":[["75a3c377.d1f7bc"]]},{"id":"7ecd748d.54608c","type":"switchNode","name":"switch resource-key length null","xml":"<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length == ''`\">\n\n","comments":"","outputs":1,"x":2676.2498779296875,"y":1356.5833129882812,"z":"c9fb05a1.f03a38","wires":[["3a94d00d.37917"]]},{"id":"3a94d00d.37917","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2903.2498779296875,"y":1356.5833129882812,"z":"c9fb05a1.f03a38","wires":[["950d3183.cecf7"]]},{"id":"8103db8e.8bbc98","type":"switchNode","name":"switch resource-key length null","xml":"<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length == ''`\">\n\n","comments":"","outputs":1,"x":3322.25048828125,"y":2085.8331909179688,"z":"c9fb05a1.f03a38","wires":[["4cf375e9.6b3bac"]]},{"id":"4cf375e9.6b3bac","type":"not-found","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":3549.25048828125,"y":2085.8331909179688,"z":"c9fb05a1.f03a38","wires":[["a0cff78e.a1a3a8"]]},{"id":"8fc1c07d.5fb89","type":"for","name":"for vf module length","xml":"<for index='jj' start='0' end='`$vnf-get-resource-request-input.vnf[$ll].vf-module_length`' >\n","comments":"","outputs":1,"x":2823.7501220703125,"y":1661.9166259765625,"z":"c9fb05a1.f03a38","wires":[["bd3e1107.bb98"]]},{"id":"bd3e1107.bb98","type":"switchNode","name":"switch vf-module-id is null","xml":"<switch test='`$vnf-get-resource-request-input.vnf[$ll].vf-module[$jj].vf-module-id == $service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-id`'>\n\n","comments":"","outputs":1,"x":3092.5,"y":1664,"z":"c9fb05a1.f03a38","wires":[["81cea753.cfda08"]]},{"id":"81cea753.cfda08","type":"not-found","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3328.75,"y":1664,"z":"c9fb05a1.f03a38","wires":[["3f2b06c9.6617ea"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-activate.json
new file mode 100644
index 0000000..4a2fb18
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-activate.json
@@ -0,0 +1 @@
+[{"id":"9823088a.34ff58","type":"dgstart","name":"DGSTART","outputs":1,"x":100,"y":83.84222793579102,"z":"cdcd3fce.c4de3","wires":[["fbfa5c5e.c6d4c"]]},{"id":"fbfa5c5e.c6d4c","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":213.6190414428711,"y":124.08033847808838,"z":"cdcd3fce.c4de3","wires":[["98148b78.bcdc48"]]},{"id":"98148b78.bcdc48","type":"method","name":"method vnf-topology-operation-activate","xml":"<method rpc='vnf-topology-operation-activate' mode='sync'>\n","comments":"","outputs":1,"x":191.4286346435547,"y":164.508882522583,"z":"cdcd3fce.c4de3","wires":[["5d97c1d9.e769b"]]},{"id":"27e22f18.ec93b","type":"comment","name":"vnf-topology-operation-activate","info":"","comments":"","x":494.34485626220703,"y":31.428571701049805,"z":"cdcd3fce.c4de3","wires":[]},{"id":"a900d36.082793","type":"switchNode","name":"switch request-action","xml":"<switch test='`$vnf-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":503.52381134033203,"y":262.6993656158447,"z":"cdcd3fce.c4de3","wires":[["f5a183f3.59793","75104916.f4da18"]]},{"id":"f5a183f3.59793","type":"outcome","name":"CreateVnfInstance","xml":"<outcome value='CreateVnfInstance'>\n","comments":"","outputs":1,"x":721.9047737121582,"y":239.8422498703003,"z":"cdcd3fce.c4de3","wires":[["d9356d39.56626"]]},{"id":"75104916.f4da18","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":685.9047393798828,"y":285.5565776824951,"z":"cdcd3fce.c4de3","wires":[["618d2805.15c2d8"]]},{"id":"d9356d39.56626","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":908.7619018554688,"y":239.8422794342041,"z":"cdcd3fce.c4de3","wires":[[]]},{"id":"618d2805.15c2d8","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=\"If svc-action is 'activate' then request-action must be 'CreateVnfInstance'\" />\n","comments":"","x":925.9047470092773,"y":285.5565357208252,"z":"cdcd3fce.c4de3","wires":[]},{"id":"5d97c1d9.e769b","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":176.66666412353516,"y":385.5088996887207,"z":"cdcd3fce.c4de3","wires":[["a900d36.082793","7ddc2902.deaee8","97af8d2b.356cc","19b9abee.4b7d14","875c5b74.b738b8","70ffb4f.340354c","d8d2dde2.810b9","bd43a88e.1bb6f8"]]},{"id":"7ddc2902.deaee8","type":"switchNode","name":"switch vnf_length","xml":"<switch test='`$service-data.vnfs.vnf_length`'>\n","comments":"","outputs":1,"x":489.99998474121094,"y":332.17559146881104,"z":"cdcd3fce.c4de3","wires":[["ae8c14d3.92fde8"]]},{"id":"ae8c14d3.92fde8","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":676.6666641235352,"y":331.5088891983032,"z":"cdcd3fce.c4de3","wires":[["9f893ed1.bf8d"]]},{"id":"9f893ed1.bf8d","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":858.3332901000977,"y":331.5088891983032,"z":"cdcd3fce.c4de3","wires":[]},{"id":"97af8d2b.356cc","type":"for","name":"for each vnf","xml":"<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":471.66666412353516,"y":380.50890922546387,"z":"cdcd3fce.c4de3","wires":[["6ccab3b2.bb933c"]]},{"id":"6ccab3b2.bb933c","type":"switchNode","name":"switch this vnf-id == input vnf-id","xml":"<switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`'>\n","comments":"","outputs":1,"x":726.6667518615723,"y":379.1755771636963,"z":"cdcd3fce.c4de3","wires":[["fe8e566e.b1b388"]]},{"id":"fe8e566e.b1b388","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":965.0000381469727,"y":378.175555229187,"z":"cdcd3fce.c4de3","wires":[["e8000355.b551"]]},{"id":"e8000355.b551","type":"set","name":"set vnf-index","xml":"<set>\n<parameter name='vnf-index' value='`$idx`' />\n","comments":"","x":1133.3332328796387,"y":378.1755771636963,"z":"cdcd3fce.c4de3","wires":[]},{"id":"19b9abee.4b7d14","type":"switchNode","name":"switch vnf-index","xml":"<switch test='`$vnf-index`'>\n","comments":"","outputs":1,"x":483.3333282470703,"y":427.1755790710449,"z":"cdcd3fce.c4de3","wires":[["539a414b.f528f"]]},{"id":"539a414b.f528f","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":664.9999465942383,"y":426.50890922546387,"z":"cdcd3fce.c4de3","wires":[["3d4d7a09.a37936"]]},{"id":"3d4d7a09.a37936","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=\"'Could not find VNF ' + $vnf-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'\" />\n","comments":"","x":831.666633605957,"y":426.17553520202637,"z":"cdcd3fce.c4de3","wires":[]},{"id":"d8d2dde2.810b9","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":473.3332862854004,"y":778.842230796814,"z":"cdcd3fce.c4de3","wires":[]},{"id":"70ffb4f.340354c","type":"set","name":"set vnf-level-oper-status to Created","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n","comments":"","x":535.8133964538574,"y":731.1793575286865,"z":"cdcd3fce.c4de3","wires":[]},{"id":"875c5b74.b738b8","type":"set","name":"copy input data","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\n\n","comments":"","x":476.6665382385254,"y":687.1755390167236,"z":"cdcd3fce.c4de3","wires":[]},{"id":"d20df170.6a2e3","type":"switchNode","name":"switch current vnf-level-oper-status","xml":"<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status`\">\n","comments":"","outputs":1,"x":540.0000495910645,"y":523.8422012329102,"z":"cdcd3fce.c4de3","wires":[["df045a00.9a1cc8","cb273963.15acc8","e0f4cddc.9bc1a"]]},{"id":"759eb0c7.19a54","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=\"`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`\" />\n","comments":"","x":990.0000228881836,"y":647.8421468734741,"z":"cdcd3fce.c4de3","wires":[]},{"id":"c389523d.1a902","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":821.0239219665527,"y":604.1279582977295,"z":"cdcd3fce.c4de3","wires":[["58ea1590.b05d5c"]]},{"id":"256c7551.a80d0a","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":829.5953521728516,"y":648.4136714935303,"z":"cdcd3fce.c4de3","wires":[["759eb0c7.19a54"]]},{"id":"58ea1590.b05d5c","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 updating generic-vnf in AAI\" />\n","comments":"","x":992.690616607666,"y":604.6043519973755,"z":"cdcd3fce.c4de3","wires":[]},{"id":"bd43a88e.1bb6f8","type":"save","name":"update generic-vnf prov-status to NVTPROV","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"generic-vnf\"\n   key=\"generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"prov-status\" value=\"NVTPROV\" />\n","comments":"","outputs":1,"x":568.3333473205566,"y":623.8422145843506,"z":"cdcd3fce.c4de3","wires":[["c389523d.1a902","256c7551.a80d0a"]]},{"id":"a0eb8f8a.c509e","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=\"`'Order status must be PendingCreate or PendingDelete, but is currently '\n      + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status`\" />\n","comments":"","x":909.6665458679199,"y":562.8422517776489,"z":"cdcd3fce.c4de3","wires":[]},{"id":"df045a00.9a1cc8","type":"outcome","name":"PendingCreate","xml":"<outcome value='PendingCreate'>\n","comments":"","outputs":1,"x":784.9999961853027,"y":475.50890731811523,"z":"cdcd3fce.c4de3","wires":[["b50d2140.4c348"]]},{"id":"cb273963.15acc8","type":"outcome","name":"PendingDelete","xml":"<outcome value='PendingDelete'>\n","comments":"","outputs":1,"x":783.3333473205566,"y":518.8422317504883,"z":"cdcd3fce.c4de3","wires":[["b50d2140.4c348"]]},{"id":"e0f4cddc.9bc1a","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":758.3334503173828,"y":563.8422136306763,"z":"cdcd3fce.c4de3","wires":[["a0eb8f8a.c509e"]]},{"id":"b50d2140.4c348","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":943.3333168029785,"y":497.17559719085693,"z":"cdcd3fce.c4de3","wires":[[]]},{"id":"a9218298.5e734","type":"comment","name":"check removed with US622450","info":"","comments":"","x":418.57142857142856,"y":487.1428571428571,"z":"cdcd3fce.c4de3","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-assign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-assign.json
new file mode 100644
index 0000000..1b0f4cb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-assign.json
@@ -0,0 +1,5843 @@
+[

+    {

+        "id": "fa733965.8e1b48",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 116.66666412353516,

+        "y": 70.74699592590332,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "daf6d1e0.f0a85"

+            ]

+        ]

+    },

+    {

+        "id": "daf6d1e0.f0a85",

+        "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": 231.9523696899414,

+        "y": 112.65177536010742,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "3a6f31b4.299cee"

+            ]

+        ]

+    },

+    {

+        "id": "3a6f31b4.299cee",

+        "type": "method",

+        "name": "method vnf-topology-operation-assign",

+        "xml": "<method rpc='vnf-topology-operation-assign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 204.76197052001953,

+        "y": 155.41365909576416,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "9ab83872.914ab8"

+            ]

+        ]

+    },

+    {

+        "id": "21dff779.bf4cc8",

+        "type": "comment",

+        "name": "vnf-topology-operation-assign",

+        "info": "",

+        "comments": "",

+        "x": 492.6781921386719,

+        "y": 20,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "49a698b9.947698",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vnf-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 513.0476303100586,

+        "y": 466.3898124694824,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "725cf24d.8d4b4c",

+                "abc6c6e8.654018"

+            ]

+        ]

+    },

+    {

+        "id": "725cf24d.8d4b4c",

+        "type": "outcome",

+        "name": "CreateVnfInstance",

+        "xml": "<outcome value='CreateVnfInstance'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 766.7619247436523,

+        "y": 443.53269386291504,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b07fe8dd.932d38"

+            ]

+        ]

+    },

+    {

+        "id": "abc6c6e8.654018",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 728.761890411377,

+        "y": 489.24702167510986,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "97a46274.9df5e"

+            ]

+        ]

+    },

+    {

+        "id": "b07fe8dd.932d38",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 951.6190528869629,

+        "y": 443.53272342681885,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c8588b9c.b0d898",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 174.4048080444336,

+        "y": 3352.7708625793457,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "50e14066.4a8fb",

+                "945671e8.3d2b7",

+                "7054feb2.2900b",

+                "25919575.6cb00a",

+                "10583438.2574cc",

+                "9cd27ab5.524f18",

+                "13077d8a.632752",

+                "8c40a330.8c84",

+                "996bdc9d.0d63b",

+                "2dd23fff.89a8d",

+                "f2f609da.bd9858",

+                "1b9bd518.29100b",

+                "4eb737ee.442a38",

+                "3530cc21.a0c0d4",

+                "2fcd14d0.0b537c",

+                "4796fba2.d51144",

+                "42f099e.9f61568",

+                "ab296e58.94c7",

+                "8dc1e7e0.9d5668",

+                "d03eeca7.23711",

+                "494fd3fe.881b4c",

+                "31dc7765.4b4208",

+                "ae22f7f9.632468",

+                "530dfe10.6f29",

+                "2f250d1f.126482",

+                "3c27d937.bf75c6",

+                "6ae8e0f.7c6952",

+                "dfdec27.324004",

+                "dc580d36.feec6",

+                "87cefff2.af896",

+                "9e4b2f5.d8554d",

+                "5563a4c5.a199ec",

+                "97421a9a.865f98",

+                "59c331da.0d09b",

+                "b01ba289.b4c4d",

+                "f93440f1.dad62",

+                "5091afc0.4393d",

+                "7381e60f.8d7388",

+                "ef3b1f74.d9716",

+                "4c1fc0a3.ee098"

+            ]

+        ]

+    },

+    {

+        "id": "ade9f393.c1d96",

+        "type": "get-resource",

+        "name": "get-resource VF_MODEL",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'\n  pfx='db.vf-model'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 525.3809356689453,

+        "y": 557.5326824188232,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "1e3f6d8d.668b62",

+                "270acedb.4b2862"

+            ]

+        ]

+    },

+    {

+        "id": "1e3f6d8d.668b62",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 726.166633605957,

+        "y": 537.913519859314,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "df6715d9.ce37d8"

+            ]

+        ]

+    },

+    {

+        "id": "270acedb.4b2862",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 734.7380638122559,

+        "y": 582.1992330551147,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "e48fe633.d5a078"

+            ]

+        ]

+    },

+    {

+        "id": "50e14066.4a8fb",

+        "type": "switchNode",

+        "name": "switch service-data.vnfs.vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 549.0475845336914,

+        "y": 1145.9851322174072,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "a52ad9f3.5409f8",

+                "f1a27d38.307e4"

+            ]

+        ]

+    },

+    {

+        "id": "a52ad9f3.5409f8",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 774.7619132995605,

+        "y": 1113.1279201507568,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "5a889bed.1fd0a4"

+            ]

+        ]

+    },

+    {

+        "id": "5a889bed.1fd0a4",

+        "type": "set",

+        "name": "set vnf-index=0",

+        "xml": "<set>\n<parameter name='vnf-index' value='0' />\n",

+        "comments": "",

+        "x": 939.0476341247559,

+        "y": 1112.1279983520508,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "f1a27d38.307e4",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 776.1904754638672,

+        "y": 1177.4137382507324,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "ff49d41f.68ca58"

+            ]

+        ]

+    },

+    {

+        "id": "742d47cf.681298",

+        "type": "set",

+        "name": "set vnf-index = vnf_length",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\n",

+        "comments": "",

+        "x": 1194.0476303100586,

+        "y": 1155.699426651001,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "841debf7.ded508",

+        "type": "for",

+        "name": "for each existing VNF",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1179.4761428833008,

+        "y": 1201.6993656158447,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "7d0d1ffd.f9c63"

+            ]

+        ]

+    },

+    {

+        "id": "ff49d41f.68ca58",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 949.9047355651855,

+        "y": 1177.413703918457,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "742d47cf.681298",

+                "841debf7.ded508"

+            ]

+        ]

+    },

+    {

+        "id": "7d0d1ffd.f9c63",

+        "type": "switchNode",

+        "name": "switch vnf-information.vnf-id == service-data.vnfs.vnf[].vnf-id",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1533.7619094848633,

+        "y": 1201.270845413208,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "8c6a6fdd.7581b"

+            ]

+        ]

+    },

+    {

+        "id": "8c6a6fdd.7581b",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1828.047664642334,

+        "y": 1200.8423299789429,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "67d1f32e.64262c"

+            ]

+        ]

+    },

+    {

+        "id": "7be2c7fd.7f9938",

+        "type": "comment",

+        "name": "make sure this VNF doesn't exist already",

+        "info": "",

+        "comments": "",

+        "x": 1520.904640197754,

+        "y": 1158.8422756195068,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "945671e8.3d2b7",

+        "type": "set",

+        "name": "set vnf-topology data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id'\n value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-type'\n value='`$vnf-topology-operation-input.vnf-information.vnf-type`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-type'\n value='`$db.vf-model.nf-type`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role'\n value='`$db.vf-model.nf-role`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-function'\n value='`$db.vf-model.nf-function`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-code'\n value='`$db.vf-model.nf-code`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.tenant'\n value='`$vnf-topology-operation-input.vnf-request-input.tenant`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-cloud-region'\n value='`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`' />\n \n",

+        "comments": "",

+        "x": 514.7618675231934,

+        "y": 1677.6518993377686,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "7054feb2.2900b",

+        "type": "switchNode",

+        "name": "switch input vnf-name",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.vnf-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 527.2618865966797,

+        "y": 2039.770956993103,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "794a160e.b68c48",

+                "109f5318.f22f2d"

+            ]

+        ]

+    },

+    {

+        "id": "25919575.6cb00a",

+        "type": "get-resource",

+        "name": "get-resource cloud region",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"cloud-region\" \n\t\tkey=\"cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND \n\t\t     cloud-region.cloud-region-id = $vnf-topology-operation-input.vnf-request-input.aic-cloud-region AND\n\t\t     depth='all'\"\n        pfx='aai.cloud-region' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 559.4048309326172,

+        "y": 2935.7706928253174,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "da5da517.ae2e18",

+                "54304dd.70307b4"

+            ]

+        ]

+    },

+    {

+        "id": "54304dd.70307b4",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 767.5081481933594,

+        "y": 2954.921399116516,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "cbecda63.60f978"

+            ]

+        ]

+    },

+    {

+        "id": "da5da517.ae2e18",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 776.4367446899414,

+        "y": 2912.2071323394775,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "55ab3764.a14138"

+            ]

+        ]

+    },

+    {

+        "id": "10583438.2574cc",

+        "type": "get-resource",

+        "name": "get-resource VF_TO_NETWORK_ROLE_MAPPING",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_TO_NETWORK_ROLE_MAPPING WHERE vf_customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'\n  pfx='db.vf-network-role-mapping[]'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 624.6429138183594,

+        "y": 3246.8182125091553,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b9431e3d.b421d",

+                "395440a1.5e6de"

+            ]

+        ]

+    },

+    {

+        "id": "b9431e3d.b421d",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 920.4285850524902,

+        "y": 3225.532377243042,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "5be8614b.d2283"

+            ]

+        ]

+    },

+    {

+        "id": "395440a1.5e6de",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 929.0000152587891,

+        "y": 3269.818090438843,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "4f0a7869.c1d018"

+            ]

+        ]

+    },

+    {

+        "id": "fde1d716.a4a0e8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1025.5716133117676,

+        "y": 4363.460702896118,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "abcfb9a1.c41368",

+                "912ecbf0.ffa438",

+                "c223a2fd.f4871",

+                "7e1ee9f5.bc8198",

+                "c6001282.4b6e1",

+                "ea99e7e9.ed0b98",

+                "c41b6137.b6d4b",

+                "8dc14ff8.fbd57",

+                "4e569933.c14918"

+            ]

+        ]

+    },

+    {

+        "id": "c223a2fd.f4871",

+        "type": "get-resource",

+        "name": "get-resource l3-network",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"l3-networks\" \n\t\tkey=\"l3-network.network-role = $db.vf-network-role-mapping[$role-index].network-role\"\n        pfx='aai.l3-network' local-only='false'\n>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1275.2858123779297,

+        "y": 3453.8417415618896,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "ede95f4d.859fa",

+                "3e760d07.8da062"

+            ]

+        ]

+    },

+    {

+        "id": "3e760d07.8da062",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1480.7621269226074,

+        "y": 3483.1273441314697,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "4fcc2ec6.5268d"

+            ]

+        ]

+    },

+    {

+        "id": "ede95f4d.859fa",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1488.2621231079102,

+        "y": 3434.2703142166138,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "1b9558ce.3c84a7"

+            ]

+        ]

+    },

+    {

+        "id": "abcfb9a1.c41368",

+        "type": "set",

+        "name": "set vnf-network data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-role'\n    value='`$db.vf-network-role-mapping[$role-index].network-role`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-name'\n    value='`$aai.l3-network.l3-network[$db-network-index].network-name`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].neutron-id'\n    value='`$aai.l3-network.l3-network[$db-network-index].neutron-network-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-id'\n    value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].contrail-network-fqdn'\n    value='`$aai.l3-network.l3-network[$db-network-index].contrail-network-fqdn`' />\n",

+        "comments": "",

+        "x": 1271.6192779541016,

+        "y": 4259.413550376892,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "996bdc9d.0d63b",

+        "type": "for",

+        "name": "for each cloud-region availability zone",

+        "xml": "<for index='idx' start='0' end='`$aai.cloud-region.availability-zones.availability-zone_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 492.00031661987305,

+        "y": 5506.532527923584,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b2e77d6f.5c88e"

+            ]

+        ]

+    },

+    {

+        "id": "cab1cdc0.80552",

+        "type": "set",

+        "name": "set availability-zone",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[$idx]'\n  value='`$aai.cloud-region.availability-zones.availability-zone[$idx].availability-zone-name`' />\n",

+        "comments": "",

+        "x": 953.6669998168945,

+        "y": 5475.865942001343,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "2dd23fff.89a8d",

+        "type": "set",

+        "name": "set vnf-parameters-data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.'\n  value='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.' />\n",

+        "comments": "",

+        "x": 451.6192436218262,

+        "y": 5356.484888076782,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "c622b6f5.5fb0e8",

+        "type": "save",

+        "name": "save generic-vnf l3-network relationships",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   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=\"l3-network\" />\n    <parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"l3-network.network-id\" />\n    <parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-nw-index].network-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 918.1907768249512,

+        "y": 5650.29474067688,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "72e530eb.ef2a9",

+                "560ad615.6ebaf8"

+            ]

+        ]

+    },

+    {

+        "id": "4eb737ee.442a38",

+        "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": 404.9645233154297,

+        "y": 6546.056180000305,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "1b9bd518.29100b",

+        "type": "set",

+        "name": "set vnf-level-oper-status to PendingCreate",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",

+        "comments": "",

+        "x": 507.49225997924805,

+        "y": 6019.500453948975,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "13077d8a.632752",

+        "type": "for",

+        "name": "for each network-role",

+        "xml": "<for silentFailure='true' index='role-index' start='0' end='`$db.vf-network-role-mapping_length`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 485.57154846191406,

+        "y": 4336.794371604919,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b7e5144f.5264b8"

+            ]

+        ]

+    },

+    {

+        "id": "9cd27ab5.524f18",

+        "type": "set",

+        "name": "set network-index = 0",

+        "xml": "<set>\n<parameter name='network-index' value='0' />\n",

+        "comments": "",

+        "x": 527.0714111328125,

+        "y": 3300.8660068511963,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "912ecbf0.ffa438",

+        "type": "set",

+        "name": "increment network-index",

+        "xml": "<set>\n<parameter name='network-index' value='`$network-index + 1`' />\n",

+        "comments": "",

+        "x": 1253.6192665100098,

+        "y": 5307.175491333008,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "8c40a330.8c84",

+        "type": "set",

+        "name": "set vnf-network_length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length'\n  value='`$network-index`' />\n",

+        "comments": "",

+        "x": 450.4763298034668,

+        "y": 5306.484931945801,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "f2f609da.bd9858",

+        "type": "set",

+        "name": "copy input data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\n\n",

+        "comments": "",

+        "x": 416.7620658874512,

+        "y": 5965.913442611694,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "3530cc21.a0c0d4",

+        "type": "for",

+        "name": "for each vnf-network",

+        "xml": "<for index='vnf-nw-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 441.1906852722168,

+        "y": 5649.29465675354,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b6d2730a.405db"

+            ]

+        ]

+    },

+    {

+        "id": "b6d2730a.405db",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 644.8573265075684,

+        "y": 5649.294617652893,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "c622b6f5.5fb0e8"

+            ]

+        ]

+    },

+    {

+        "id": "2fcd14d0.0b537c",

+        "type": "set",

+        "name": "set new vnf_length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\n",

+        "comments": "",

+        "x": 497.6905059814453,

+        "y": 1198.0090227127075,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "4796fba2.d51144",

+        "type": "for",

+        "name": "for each cloud-region relationship",

+        "xml": "<for index='idx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 572.2619552612305,

+        "y": 3023.008864402771,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "de35f354.4a026"

+            ]

+        ]

+    },

+    {

+        "id": "de35f354.4a026",

+        "type": "switchNode",

+        "name": "switch related-to",

+        "xml": "<switch test='`$aai.cloud-region.relationship-list.relationship[$idx].related-to`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 819.9404983520508,

+        "y": 3022.7587938308716,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "9753c9fc.ee6548"

+            ]

+        ]

+    },

+    {

+        "id": "9753c9fc.ee6548",

+        "type": "outcome",

+        "name": "complex",

+        "xml": "<outcome value='complex'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 989.4048194885254,

+        "y": 3022.1516160964966,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "f1d0780c.c74608"

+            ]

+        ]

+    },

+    {

+        "id": "49d47361.e5235c",

+        "type": "set",

+        "name": "set aic-clli",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-clli'\n  value='`$aai-uid-split[$aai-uid-split_length - 1]`' />\n",

+        "comments": "",

+        "x": 1366.976203918457,

+        "y": 3020.389811515808,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "42f099e.9f61568",

+        "type": "switchNode",

+        "name": "switch aic-clli",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-clli`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 505.3095817565918,

+        "y": 3136.1039962768555,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "18989148.50f10f"

+            ]

+        ]

+    },

+    {

+        "id": "18989148.50f10f",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 653.4524154663086,

+        "y": 3136.103979110718,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "9a466e25.4156f"

+            ]

+        ]

+    },

+    {

+        "id": "56b5f776.c4c628",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'\n  value='`$db.vf-model.invariant-uuid`' />\n",

+        "comments": "",

+        "x": 931.7621269226074,

+        "y": 2494.9612531661987,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "c7e1c13d.03db5",

+        "type": "for",

+        "name": "for each l3-network",

+        "xml": "<for index='db-network-index' start='0' end='`$aai.l3-network.l3-network_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1391.8812561035156,

+        "y": 4083.984929084778,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "c1ed15e6.f88648"

+            ]

+        ]

+    },

+    {

+        "id": "e75f10eb.ced4f",

+        "type": "switchNode",

+        "name": "switch orchestration-status",

+        "xml": "<switch test='`$aai.l3-network.l3-network[$db-network-index].orchestration-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1810.4524269104004,

+        "y": 4018.556393623352,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "acbbb297.0a07e",

+                "18131921.5c40e7",

+                "84ce6f22.6e9ac",

+                "a5969f85.edad",

+                "8306b63a.7a6a88"

+            ]

+        ]

+    },

+    {

+        "id": "acbbb297.0a07e",

+        "type": "outcome",

+        "name": "Pending Delete",

+        "xml": "<outcome value='Pending Delete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2051.119297027588,

+        "y": 4060.222897529602,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "bcc48c45.57047"

+            ]

+        ]

+    },

+    {

+        "id": "18131921.5c40e7",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2023.9764366149902,

+        "y": 4111.222878456116,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "f846017e.0f7b7"

+            ]

+        ]

+    },

+    {

+        "id": "d24ce0d7.c8619",

+        "type": "switchNode",

+        "name": "switch related-to",

+        "xml": "<switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].related-to`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2559.6907386779785,

+        "y": 4056.460795402527,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "c028438.b008bc",

+                "225c2fa8.b622f"

+            ]

+        ]

+    },

+    {

+        "id": "f846017e.0f7b7",

+        "type": "for",

+        "name": "for each relationship",

+        "xml": "<for silentFailure='true' index='db-rel-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2193.976348876953,

+        "y": 4110.794255256653,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "3979a64c.84ab9a"

+            ]

+        ]

+    },

+    {

+        "id": "c028438.b008bc",

+        "type": "outcome",

+        "name": "cloud-region",

+        "xml": "<outcome value='cloud-region'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2733.9765243530273,

+        "y": 4079.365619659424,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "24abd19e.88186e"

+            ]

+        ]

+    },

+    {

+        "id": "24abd19e.88186e",

+        "type": "for",

+        "name": "for each relationship data",

+        "xml": "<for silentFailure='true' index='db-data-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2931.11922454834,

+        "y": 4079.794087409973,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "6e6e70c9.1f47f"

+            ]

+        ]

+    },

+    {

+        "id": "6e6e70c9.1f47f",

+        "type": "switchNode",

+        "name": "switch relationship-key",

+        "xml": "<switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-key`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3162.547824859619,

+        "y": 4079.3654623031616,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "41f73a04.000a34"

+            ]

+        ]

+    },

+    {

+        "id": "41f73a04.000a34",

+        "type": "outcome",

+        "name": "cloud-region.cloud-region-id",

+        "xml": "<outcome value='cloud-region.cloud-region-id'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3403.976390838623,

+        "y": 4079.3655586242676,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "ec6b1424.dae298"

+            ]

+        ]

+    },

+    {

+        "id": "ec6b1424.dae298",

+        "type": "switchNode",

+        "name": "switch relationship-value == cloud-region-id",

+        "xml": "<switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-value == $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3708.262310028076,

+        "y": 4079.22261428833,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "76d1c220.996b9c"

+            ]

+        ]

+    },

+    {

+        "id": "76d1c220.996b9c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3413.2624473571777,

+        "y": 4196.865568161011,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "1de3d6a.5295a29"

+            ]

+        ]

+    },

+    {

+        "id": "7e1ee9f5.bc8198",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1228.0954284667969,

+        "y": 4015.270573616028,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "c7e1c13d.03db5",

+                "85730c77.85f6e"

+            ]

+        ]

+    },

+    {

+        "id": "c6001282.4b6e1",

+        "type": "set",

+        "name": "set l3-network-id = -1",

+        "xml": "<set>\n<parameter name='l3-network-id' value='-1' />\n",

+        "comments": "",

+        "x": 1272.4287872314453,

+        "y": 3887.175227165222,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "1de3d6a.5295a29",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3559.0954246520996,

+        "y": 4196.341676712036,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "f676c278.1ddf2",

+                "6ee99534.f9db3c",

+                "133789d2.fbdb36"

+            ]

+        ]

+    },

+    {

+        "id": "f676c278.1ddf2",

+        "type": "set",

+        "name": "set l3-network-id = this l3-network",

+        "xml": "<set>\n<parameter name='l3-network-id' value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />\n",

+        "comments": "",

+        "x": 3794.333427429199,

+        "y": 4158.484645843506,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "ea99e7e9.ed0b98",

+        "type": "switchNode",

+        "name": "switch l3-network-id",

+        "xml": "<switch test='`$l3-network-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1269.4287109375,

+        "y": 4210.842268943787,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "8b18bc8b.1ecc5"

+            ]

+        ]

+    },

+    {

+        "id": "8b18bc8b.1ecc5",

+        "type": "outcome",

+        "name": "-1",

+        "xml": "<outcome value='-1'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1439.4286613464355,

+        "y": 4210.842024803162,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "d03cff5b.4eae8"

+            ]

+        ]

+    },

+    {

+        "id": "ab296e58.94c7",

+        "type": "switchNode",

+        "name": "switch input model-invariant-uuid",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 575.6192016601562,

+        "y": 2517.7856969833374,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "a6d2444d.170f18",

+                "d0c4e96a.f0e598"

+            ]

+        ]

+    },

+    {

+        "id": "a6d2444d.170f18",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 781.2858734130859,

+        "y": 2494.9286603927612,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "56b5f776.c4c628"

+            ]

+        ]

+    },

+    {

+        "id": "d0c4e96a.f0e598",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 782.714469909668,

+        "y": 2539.2142515182495,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "53133cb6.18d844"

+            ]

+        ]

+    },

+    {

+        "id": "53133cb6.18d844",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'\n  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n",

+        "comments": "",

+        "x": 937.0002059936523,

+        "y": 2538.6428236961365,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "6f1bca5a.057ce4",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'\n  value='`$db.vf-model.uuid`' />\n",

+        "comments": "",

+        "x": 932.7143974304199,

+        "y": 2583.4999294281006,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "8dc1e7e0.9d5668",

+        "type": "switchNode",

+        "name": "switch input model-uuid",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 548.2382202148438,

+        "y": 2606.3244342803955,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "8002dd41.ae1f",

+                "896eccc9.b25eb"

+            ]

+        ]

+    },

+    {

+        "id": "8002dd41.ae1f",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 782.2381935119629,

+        "y": 2583.467366218567,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "6f1bca5a.057ce4"

+            ]

+        ]

+    },

+    {

+        "id": "896eccc9.b25eb",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 783.6667900085449,

+        "y": 2627.752957344055,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "17701e26.510582"

+            ]

+        ]

+    },

+    {

+        "id": "17701e26.510582",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'\n  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n",

+        "comments": "",

+        "x": 937.9525260925293,

+        "y": 2627.181529521942,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "b6fbf29a.0df09",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'\n  value='`$db.vf-model.version`' />\n",

+        "comments": "",

+        "x": 929.8573303222656,

+        "y": 2672.3571367263794,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "d03eeca7.23711",

+        "type": "switchNode",

+        "name": "switch input model-version",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 556.3810920715332,

+        "y": 2695.1815814971924,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "6aa27ca4.a61d34",

+                "1ae6e106.ea9c7f"

+            ]

+        ]

+    },

+    {

+        "id": "6aa27ca4.a61d34",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 779.3810768127441,

+        "y": 2672.324543952942,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b6fbf29a.0df09"

+            ]

+        ]

+    },

+    {

+        "id": "1ae6e106.ea9c7f",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 780.8096733093262,

+        "y": 2716.61013507843,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "56c362db.13020c"

+            ]

+        ]

+    },

+    {

+        "id": "56c362db.13020c",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'\n  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`' />\n",

+        "comments": "",

+        "x": 935.0954093933105,

+        "y": 2716.038707256317,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "9fcfee3c.f2226",

+        "type": "set",

+        "name": "set from DB",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'\n  value='`$db.vf-model.name`' />\n",

+        "comments": "",

+        "x": 929.8573303222656,

+        "y": 2759.4999589920044,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "494fd3fe.881b4c",

+        "type": "switchNode",

+        "name": "switch input model-name",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 551.3810920715332,

+        "y": 2782.3244037628174,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "3f7d112e.5f72ee",

+                "6e803b0d.a54dc4"

+            ]

+        ]

+    },

+    {

+        "id": "3f7d112e.5f72ee",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 779.3810768127441,

+        "y": 2759.467366218567,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "9fcfee3c.f2226"

+            ]

+        ]

+    },

+    {

+        "id": "6e803b0d.a54dc4",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 780.8096733093262,

+        "y": 2803.752957344055,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "9d0420e8.1e34b"

+            ]

+        ]

+    },

+    {

+        "id": "9d0420e8.1e34b",

+        "type": "set",

+        "name": "set from input",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'\n  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`' />\n",

+        "comments": "",

+        "x": 935.0954093933105,

+        "y": 2803.181529521942,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "bcc48c45.57047",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2204.3333892822266,

+        "y": 4060.9997749328613,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8306b63a.7a6a88",

+        "type": "outcome",

+        "name": "PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2049.000030517578,

+        "y": 4015.999689102173,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "ea893bb0.586278"

+            ]

+        ]

+    },

+    {

+        "id": "ea893bb0.586278",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2204.214122772217,

+        "y": 4016.776566505432,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a5969f85.edad",

+        "type": "outcome",

+        "name": "Pending Create",

+        "xml": "<outcome value='Pending Create'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2051.000030517578,

+        "y": 3972.666193008423,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "bab4140b.02b308"

+            ]

+        ]

+    },

+    {

+        "id": "bab4140b.02b308",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2204.214122772217,

+        "y": 3973.443070411682,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "84ce6f22.6e9ac",

+        "type": "outcome",

+        "name": "PendingCreate",

+        "xml": "<outcome value='PendingCreate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2051.000030517578,

+        "y": 3929.332941055298,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "fc3367.845aac98"

+            ]

+        ]

+    },

+    {

+        "id": "fc3367.845aac98",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2204.214122772217,

+        "y": 3930.109818458557,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a129d9ae.667dd8",

+        "type": "for",

+        "name": "for each A&AI subnet",

+        "xml": "<for index='subnet-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1737.3810577392578,

+        "y": 4350.047110080719,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "26e050ad.0575e"

+            ]

+        ]

+    },

+    {

+        "id": "84d519bc.318478",

+        "type": "set",

+        "name": "set subnet_length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data_length'\n   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet_length`' />\n",

+        "comments": "",

+        "x": 1726.047622680664,

+        "y": 4395.04719209671,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "31dc7765.4b4208",

+        "type": "set",

+        "name": "set availability-zones.max-count and length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.max-count'\n   value='`$db.vf-model.avail-zone-max-count`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone_length'\n   value='`$aai.cloud-region.availability-zones.availability-zone_length`' />\n",

+        "comments": "",

+        "x": 511.66682052612305,

+        "y": 5594.547995567322,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "ae22f7f9.632468",

+        "type": "set",

+        "name": "set vnf-name",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name'\n   value='`$tmp.vnf-name`' />\n",

+        "comments": "",

+        "x": 512.5000152587891,

+        "y": 2451.8334608078003,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "530dfe10.6f29",

+        "type": "save",

+        "name": "update generic-vnf",

+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"generic-vnf\"\n   key=\"generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"vnf-name\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name`\" />\n<parameter name=\"prov-status\" value=\"PREPROV\" />\n<!-- <parameter name=\"operational-status\" value=\"out-of-service-path\" /> -->\n<parameter name=\"equipment-role\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`\" />\n<parameter name=\"model-invariant-id\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid`\" />\n<parameter name=\"model-version-id\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid`\" />\n<parameter name=\"model-customization-id\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid`\" />\n<parameter name=\"in-maint\" value=\"true\" />\n<parameter name=\"selflink\" value=\"`$vnf-object-path`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 432.0000877380371,

+        "y": 5804.213758468628,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "8c964a5c.697478",

+                "9e7283af.92a1c"

+            ]

+        ]

+    },

+    {

+        "id": "2f250d1f.126482",

+        "type": "set",

+        "name": "set vnf-object-path",

+        "xml": "<set>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vnf-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 + $vnf-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 432.00012588500977,

+        "y": 5734.214241027832,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "3c27d937.bf75c6",

+        "type": "set",

+        "name": "set vnf-id",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id'\n   value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n",

+        "comments": "",

+        "x": 500.83335876464844,

+        "y": 2403.5000038146973,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "6ae8e0f.7c6952",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-vnf.log' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 406.51210021972656,

+        "y": 6370.226758003235,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "72e530eb.ef2a9",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1168.0241317749023,

+        "y": 5627.833315849304,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "1d23943a.cc401c"

+            ]

+        ]

+    },

+    {

+        "id": "560ad615.6ebaf8",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1176.5955619812012,

+        "y": 5672.119029045105,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "48b115c8.09c9bc"

+            ]

+        ]

+    },

+    {

+        "id": "8c964a5c.697478",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 606.3574180603027,

+        "y": 5782.833353996277,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b5f5454e.605518"

+            ]

+        ]

+    },

+    {

+        "id": "9e7283af.92a1c",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 614.9288482666016,

+        "y": 5827.119067192078,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "fb7909b7.07d3a8"

+            ]

+        ]

+    },

+    {

+        "id": "dfdec27.324004",

+        "type": "set",

+        "name": "set model-customization-uuid",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'\n  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n",

+        "comments": "",

+        "x": 564.1666793823242,

+        "y": 2855.1666078567505,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "f7d7f0fa.89cd2",

+        "type": "execute",

+        "name": "split related-link",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='aai-uid-split' />\n   <parameter name='original_string' value='`$aai.cloud-region.relationship-list.relationship[$idx].related-link`' />\n   <parameter name='regex' value='/' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1386.357063293457,

+        "y": 2975.1517295837402,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f1d0780c.c74608",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1172.0237655639648,

+        "y": 3021.8185176849365,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "f7d7f0fa.89cd2",

+                "49d47361.e5235c",

+                "68e794dc.43eb9c"

+            ]

+        ]

+    },

+    {

+        "id": "68e794dc.43eb9c",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 1356.0237274169922,

+        "y": 3065.1518144607544,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "b2e77d6f.5c88e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 743.6667594909668,

+        "y": 5505.628111839294,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "cab1cdc0.80552",

+                "2c7d624d.a1567e"

+            ]

+        ]

+    },

+    {

+        "id": "2c7d624d.a1567e",

+        "type": "save",

+        "name": "save generic-vnf availability-zone relationship",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   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=\"availability-zone\" />\n    <parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"cloud-region.cloud-owner\" />\n    <parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.cloud-region.cloud-owner`\" />\n    <parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-key\" value=\"cloud-region.cloud-region-id\" />\n    <parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-value\" value=\"`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`\" />\n    <parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-key\" value=\"availability-zone.availability-zone-name\" />\n    <parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-value\" value=\"`$aai.cloud-region.availability-zones.availability-zone[$idx].availability-zone-name`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1037.0001487731934,

+        "y": 5528.9615659713745,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "7e45c7a1.1fc228",

+                "7cb74929.a6a798"

+            ]

+        ]

+    },

+    {

+        "id": "7e45c7a1.1fc228",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1301.8334007263184,

+        "y": 5509.833388328552,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "ac3d2a38.193128"

+            ]

+        ]

+    },

+    {

+        "id": "7cb74929.a6a798",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1310.4048309326172,

+        "y": 5554.119101524353,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "edd6eeb3.58833"

+            ]

+        ]

+    },

+    {

+        "id": "4f0a7869.c1d018",

+        "type": "set",

+        "name": "set mapping rows to 0",

+        "xml": "<set>\n<parameter name='db.vf-network-role-mapping_length' value='0' />\n",

+        "comments": "",

+        "x": 1122.9761505126953,

+        "y": 3269.437578201294,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "dc580d36.feec6",

+        "type": "switchNode",

+        "name": "switch AAI availability-zone_length",

+        "xml": "<switch test='`$aai.cloud-region.availability-zones.availability-zone_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 484.381046295166,

+        "y": 5409.437698364258,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "65cd03d3.cd933c"

+            ]

+        ]

+    },

+    {

+        "id": "65cd03d3.cd933c",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 702.952465057373,

+        "y": 5409.009107589722,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "5cdda0db.c6c79"

+            ]

+        ]

+    },

+    {

+        "id": "55344fcf.542e2",

+        "type": "set",

+        "name": "set availability-zone_length to 0",

+        "xml": "<set>\n<parameter name='aai.cloud-region.availability-zones.availability-zone_length' value='0' />\n",

+        "comments": "",

+        "x": 1304.3811073303223,

+        "y": 5427.580345153809,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "5cdda0db.c6c79",

+        "type": "switchNode",

+        "name": "switch AZ max count > 0",

+        "xml": "<switch test='`$db.vf-model.avail-zone-max-count &gt; 0`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 891.5239372253418,

+        "y": 5409.43741941452,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "689f8ebb.877dd",

+                "dd9a3b97.b39268"

+            ]

+        ]

+    },

+    {

+        "id": "689f8ebb.877dd",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1094.3810443878174,

+        "y": 5383.723169326782,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "63585eee.6f434"

+            ]

+        ]

+    },

+    {

+        "id": "dd9a3b97.b39268",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1095.8096656799316,

+        "y": 5428.008916854858,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "55344fcf.542e2"

+            ]

+        ]

+    },

+    {

+        "id": "2bc8145e.9e6d7c",

+        "type": "execute",

+        "name": "execute PropertiesNode",

+        "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": 522.2024078369141,

+        "y": 188.4255886077881,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "794a160e.b68c48",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 729.2857055664062,

+        "y": 1853.2470073699951,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "8d68e064.9148"

+            ]

+        ]

+    },

+    {

+        "id": "b4c0271b.8d9548",

+        "type": "switchNode",

+        "name": "switch ecomp-naming",

+        "xml": "<switch test='`$db.vf-model.ecomp-generated-naming`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1106.9050941467285,

+        "y": 1753.961443901062,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "1882b0bf.c2311f",

+                "2eeee2ce.d551be",

+                "b8c05ccb.47683"

+            ]

+        ]

+    },

+    {

+        "id": "8d68e064.9148",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 875.0002059936523,

+        "y": 1853.247124671936,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b4c0271b.8d9548",

+                "2febaea8.95a862"

+            ]

+        ]

+    },

+    {

+        "id": "2eeee2ce.d551be",

+        "type": "outcome",

+        "name": "N",

+        "xml": "<outcome value='N'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1293.333480834961,

+        "y": 1754.4375705718994,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "da3712d9.f41f4"

+            ]

+        ]

+    },

+    {

+        "id": "1882b0bf.c2311f",

+        "type": "outcome",

+        "name": "Y",

+        "xml": "<outcome value='Y'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1293.3334732055664,

+        "y": 1713.0090246200562,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "18523eea.6d6ad1"

+            ]

+        ]

+    },

+    {

+        "id": "b8c05ccb.47683",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1293.3334197998047,

+        "y": 1797.2947025299072,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "da3712d9.f41f4"

+            ]

+        ]

+    },

+    {

+        "id": "18523eea.6d6ad1",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1430.476390838623,

+        "y": 1713.151891708374,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "109f5318.f22f2d",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 714.476432800293,

+        "y": 2207.866183280945,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "fa97f7fa.540fd8"

+            ]

+        ]

+    },

+    {

+        "id": "fa97f7fa.540fd8",

+        "type": "set",

+        "name": "set tmp.vnf-name",

+        "xml": "<set>\n<parameter name='tmp.vnf-name' value=\"`$vnf-topology-operation-input.vnf-information.vnf-name`\" />\n",

+        "comments": "",

+        "x": 880.238395690918,

+        "y": 2206.7234535217285,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "8d7fa952.98d108",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:generate-unique-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1765.3096733093262,

+        "y": 1903.0089440345764,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "681ac6a0.a11838",

+                "f4abec22.90002"

+            ]

+        ]

+    },

+    {

+        "id": "681ac6a0.a11838",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2042.4524765014648,

+        "y": 1876.5804772377014,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "6d7f13cc.8d975c"

+            ]

+        ]

+    },

+    {

+        "id": "f4abec22.90002",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2047.2142219543457,

+        "y": 1921.9613881111145,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "f9e4fa65.eb0968"

+            ]

+        ]

+    },

+    {

+        "id": "b5dba753.21ae88",

+        "type": "set",

+        "name": "set variables for generating unique name",

+        "xml": "<set>\n<parameter name='generate-unique-name-input.action' value='ASSIGN' />\n<parameter name='generate-unique-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='generate-unique-name-input.index-table-name' value='VNF_NAME_INDEX' />\n<parameter name='generate-unique-name-input.index-table-prefix-column' value='vnf_name_prefix' />\n<parameter name='generate-unique-name-input.name-table-type' value='VNF_INSTANCE' />\n<parameter name='generate-unique-name-input.prefix' value=\"`'z' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region + $db.vf-model.nf-code`\" />\n",

+        "comments": "",

+        "x": 1720.3099250793457,

+        "y": 1854.1042637825012,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "f9e4fa65.eb0968",

+        "type": "set",

+        "name": "set tmp.vnf-name to generated name",

+        "xml": "<set>\n<parameter name='tmp.vnf-name' value='`$generate-unique-name-output.generated-name`' />\n",

+        "comments": "",

+        "x": 2270.1186180114746,

+        "y": 1921.4374632835388,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "2febaea8.95a862",

+        "type": "switchNode",

+        "name": "switch naming-policy",

+        "xml": "<switch test='`$db.vf-model.naming-policy`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1104.6906776428223,

+        "y": 1962.2470607757568,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "8f7b27bf.e7e3a8",

+                "b931038a.dea97"

+            ]

+        ]

+    },

+    {

+        "id": "8f7b27bf.e7e3a8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1294.6906089782715,

+        "y": 1883.675615310669,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "1ce185e2.fb229a"

+            ]

+        ]

+    },

+    {

+        "id": "b931038a.dea97",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1294.9288482666016,

+        "y": 2011.056559562683,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "42c58d7a.bc5884"

+            ]

+        ]

+    },

+    {

+        "id": "1ce185e2.fb229a",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1447.5478782653809,

+        "y": 1882.2470817565918,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b5dba753.21ae88",

+                "8d7fa952.98d108"

+            ]

+        ]

+    },

+    {

+        "id": "17d076a4.213ab9",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:naming-policy-generate-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1786.595802307129,

+        "y": 2026.7709412574768,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "7ca77e3f.200f2",

+                "edded880.2d4e08"

+            ]

+        ]

+    },

+    {

+        "id": "42c58d7a.bc5884",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1449.4526977539062,

+        "y": 2011.056559562683,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "9ce0b71c.18bda8",

+                "17d076a4.213ab9"

+            ]

+        ]

+    },

+    {

+        "id": "9ce0b71c.18bda8",

+        "type": "set",

+        "name": "set variables for generating name",

+        "xml": "<set>\n<parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.vf-model.naming-policy`' />\n<parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />\n<parameter name='naming-policy-generate-name-input.query-parameter' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />",

+        "comments": "",

+        "x": 1696.595718383789,

+        "y": 1981.05659532547,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "efe8f3b.6be4a1",

+        "type": "set",

+        "name": "set tmp.vnf-name to generated name",

+        "xml": "<set>\n<parameter name='tmp.vnf-name' value='`$naming-policy-generate-name-output.vnf-name`' />\n",

+        "comments": "",

+        "x": 2346.4527740478516,

+        "y": 2046.770751953125,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "f54d4b54.f29d58",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1912.7142639160156,

+        "y": 6493.819259643555,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "a406d4bc.916068",

+                "9c453248.1f195",

+                "d27d64fe.c0c2c8",

+                "71ce4538.3940fc"

+            ]

+        ]

+    },

+    {

+        "id": "7ca77e3f.200f2",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2084.761848449707,

+        "y": 2001.6994485855103,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "702e58b3.200b38"

+            ]

+        ]

+    },

+    {

+        "id": "edded880.2d4e08",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2089.523593902588,

+        "y": 2047.0803594589233,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "efe8f3b.6be4a1"

+            ]

+        ]

+    },

+    {

+        "id": "8e72cfc8.575e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 739.9999465942383,

+        "y": 1356.666666984558,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "46dd139e.86081c",

+                "761b2c43.67ef34"

+            ]

+        ]

+    },

+    {

+        "id": "87cefff2.af896",

+        "type": "for",

+        "name": "for each instance group id",

+        "xml": "<for silentFailure='true' index='inst-group-index' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 523.3332939147949,

+        "y": 1357.333312034607,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "8e72cfc8.575e"

+            ]

+        ]

+    },

+    {

+        "id": "46dd139e.86081c",

+        "type": "get-resource",

+        "name": "get-resource instance-group",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"instance-group\" \n\t\tkey=\"instance-group.id = $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id\"\n        pfx='aai.instance-group' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 967.9999847412109,

+        "y": 1288.3334255218506,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "113b83c3.c5f2cc",

+                "1095d6a8.eb1ea9"

+            ]

+        ]

+    },

+    {

+        "id": "1095d6a8.eb1ea9",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1185.5792770385742,

+        "y": 1319.8174781799316,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "6b5b96d7.f11058"

+            ]

+        ]

+    },

+    {

+        "id": "113b83c3.c5f2cc",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1194.5081100463867,

+        "y": 1256.4366302490234,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "3d4ce14c.b56fbe"

+            ]

+        ]

+    },

+    {

+        "id": "761b2c43.67ef34",

+        "type": "for",

+        "name": "for each relationship",

+        "xml": "<for index='rel-index' start='0' end='`$aai.instance-group.relationship-list.relationship_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 944.9999618530273,

+        "y": 1428.3333644866943,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "ef07f13d.87a9"

+            ]

+        ]

+    },

+    {

+        "id": "ef07f13d.87a9",

+        "type": "switchNode",

+        "name": "switch related-to",

+        "xml": "<switch test='`$aai.instance-group.relationship-list.relationship[$rel-index].related-to`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1158.3334045410156,

+        "y": 1428.333303451538,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "df5b0cc3.ccd9a"

+            ]

+        ]

+    },

+    {

+        "id": "df5b0cc3.ccd9a",

+        "type": "outcome",

+        "name": "collection",

+        "xml": "<outcome value='collection'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1330.00004196167,

+        "y": 1428.3333854675293,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "98da2133.07fbe"

+            ]

+        ]

+    },

+    {

+        "id": "98da2133.07fbe",

+        "type": "get-resource",

+        "name": "get-resource collection",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"collection\" \n\t\tkey=\"collection.collection-id = $aai.instance-group.relationship-list.relationship[$rel-index].relationship-data[0].relationship-value\"\n        pfx='aai.collection' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1549.9999465942383,

+        "y": 1426.6666469573975,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "c6ab56ad.e1e918",

+                "c4f813df.f6eb3",

+                "fa511cd0.4acf7"

+            ]

+        ]

+    },

+    {

+        "id": "c4f813df.f6eb3",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1764.2461395263672,

+        "y": 1378.1508359909058,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "1cfc4c24.ab0124"

+            ]

+        ]

+    },

+    {

+        "id": "c6ab56ad.e1e918",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1773.1747360229492,

+        "y": 1336.4365692138672,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "75f0b66c.711368"

+            ]

+        ]

+    },

+    {

+        "id": "fa511cd0.4acf7",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1783.33345413208,

+        "y": 1539.9999542236328,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "2caf3e47.5abe82"

+            ]

+        ]

+    },

+    {

+        "id": "2caf3e47.5abe82",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1936.6665954589844,

+        "y": 1539.3332500457764,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "889214a0.071c58",

+                "61c009cd.371838",

+                "1b8b156c.6c083b",

+                "79b15187.90b49",

+                "67373c69.98b004"

+            ]

+        ]

+    },

+    {

+        "id": "889214a0.071c58",

+        "type": "for",

+        "name": "for each network-instance-group",

+        "xml": "<for silentFailure='true' index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2249.2857360839844,

+        "y": 1488.5715045928955,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "64d1075e.ee3f48"

+            ]

+        ]

+    },

+    {

+        "id": "61c009cd.371838",

+        "type": "set",

+        "name": "set found-network-instance-group to false",

+        "xml": "<set>\n<parameter name='found-network-instance-group' value='false' />\n",

+        "comments": "",

+        "x": 2279.2856979370117,

+        "y": 1441.9048767089844,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "64d1075e.ee3f48",

+        "type": "switchNode",

+        "name": "network-instance-group-id matches?",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id\n  == $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2565.952247619629,

+        "y": 1488.5715036392212,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "e14a30ad.b266"

+            ]

+        ]

+    },

+    {

+        "id": "e14a30ad.b266",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2787.619026184082,

+        "y": 1488.5714683532715,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "338a6e83.74e682"

+            ]

+        ]

+    },

+    {

+        "id": "338a6e83.74e682",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2917.61905670166,

+        "y": 1488.5715446472168,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b65b391.a6cd9c8",

+                "5a856f0a.aefef"

+            ]

+        ]

+    },

+    {

+        "id": "b65b391.a6cd9c8",

+        "type": "set",

+        "name": "set found-network-instance-group to true",

+        "xml": "<set>\n<parameter name='found-network-instance-group' value='true' />\n",

+        "comments": "",

+        "x": 3190.952423095703,

+        "y": 1463.5715236663818,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "5a856f0a.aefef",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 3084.2860374450684,

+        "y": 1511.904893875122,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "1b8b156c.6c083b",

+        "type": "switchNode",

+        "name": "switch found-network-instance-group",

+        "xml": "<switch test='`$found-network-instance-group`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2260.9523544311523,

+        "y": 1538.5714855194092,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "49805ef2.194a"

+            ]

+        ]

+    },

+    {

+        "id": "49805ef2.194a",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2482.6192016601562,

+        "y": 1538.5715079307556,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "a3ec7ac.ac12b88"

+            ]

+        ]

+    },

+    {

+        "id": "9e4b2f5.d8554d",

+        "type": "set",

+        "name": "set tmp.vnf-network-collection_length to 0",

+        "xml": "<set>\n<parameter name='tmp.vnf-network-collection_length' value='0' />\n",

+        "comments": "",

+        "x": 571.666633605957,

+        "y": 1308.3334436416626,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "79b15187.90b49",

+        "type": "set",

+        "name": "set vnf-network-collection data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$tmp.vnf-network-collection_length].network-instance-group-function'\n  value='`$aai.instance-group.instance-group-function`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$tmp.vnf-network-collection_length].network-instance-group-id'\n  value='`$aai.instance-group.id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$tmp.vnf-network-collection_length].network-collection-service-instance-id'\n  value='`$service-data.network-instance-groups.network-instance-group[$nig-index].service-instance-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$tmp.vnf-network-collection_length].network-collection-customization-uuid'\n  value='`$aai.collection.collection-customization-id`' />\n",

+        "comments": "",

+        "x": 2240.95267868042,

+        "y": 1586.904821395874,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "67373c69.98b004",

+        "type": "set",

+        "name": "increment tmp.vnf-network-collection_length",

+        "xml": "<set>\n<parameter name='tmp.vnf-network-collection_length' value='`$tmp.vnf-network-collection_length + 1`' />\n",

+        "comments": "",

+        "x": 2282.619384765625,

+        "y": 1633.5714893341064,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "5563a4c5.a199ec",

+        "type": "set",

+        "name": "set vnf-network-collection_length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection_length'\n  value='`$tmp.vnf-network-collection_length`' />\n",

+        "comments": "",

+        "x": 550.8333282470703,

+        "y": 1565.8333930969238,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "a9b7ab72.63a7e8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 668.6667098999023,

+        "y": 5898.80961894989,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "f0f08819.d9d3b8"

+            ]

+        ]

+    },

+    {

+        "id": "97421a9a.865f98",

+        "type": "for",

+        "name": "for each instance group id",

+        "xml": "<for silentFailure='true' index='inst-group-index' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 452.000057220459,

+        "y": 5899.476263999939,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "a9b7ab72.63a7e8"

+            ]

+        ]

+    },

+    {

+        "id": "f0f08819.d9d3b8",

+        "type": "save",

+        "name": "save generic-vnf relationship to instance-group",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"generic-vnf:relationship-list\"\n   key=\"generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-information.vnf-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n    <parameter name=\"relationship-list.relationship[0].related-to\" value=\"instance-group\" />\n    <parameter name=\"relationship-list.relationship[0].related-link\"\n      value=\"`'/aai/v$/network/instance-groups/instance-group/'\n        + $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 952.0000381469727,

+        "y": 5898.333299636841,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "7a8ee12f.371a6",

+                "1be782fa.92bfcd"

+            ]

+        ]

+    },

+    {

+        "id": "7a8ee12f.371a6",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1211.3572616577148,

+        "y": 5875.285715103149,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b5b87fb0.590f"

+            ]

+        ]

+    },

+    {

+        "id": "1be782fa.92bfcd",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1219.9286918640137,

+        "y": 5919.57142829895,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "610d2304.a3d70c"

+            ]

+        ]

+    },

+    {

+        "id": "c41b6137.b6d4b",

+        "type": "switchNode",

+        "name": "switch subnet_length",

+        "xml": "<switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1273.5714569091797,

+        "y": 4331.428667068481,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "f2057e5e.eaee4",

+                "f813a06e.cb2a1",

+                "ce347497.746558"

+            ]

+        ]

+    },

+    {

+        "id": "f2057e5e.eaee4",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1446.4286193847656,

+        "y": 4294.285726547241,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "82fb5a4d.e1f5b8"

+            ]

+        ]

+    },

+    {

+        "id": "f813a06e.cb2a1",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1447.8571891784668,

+        "y": 4332.856889724731,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "82fb5a4d.e1f5b8"

+            ]

+        ]

+    },

+    {

+        "id": "ce347497.746558",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1446.428653717041,

+        "y": 4371.428281784058,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "7cc4f5b7.8976ac"

+            ]

+        ]

+    },

+    {

+        "id": "7cc4f5b7.8976ac",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1567.8572082519531,

+        "y": 4371.428548812866,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "a129d9ae.667dd8",

+                "84d519bc.318478"

+            ]

+        ]

+    },

+    {

+        "id": "82fb5a4d.e1f5b8",

+        "type": "set",

+        "name": "set subnet_length to 0",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data_length'\n   value='0' />\n",

+        "comments": "",

+        "x": 1639.2858123779297,

+        "y": 4302.856889724731,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "9ab83872.914ab8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 256.7460632324219,

+        "y": 368.11908626556396,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "2bc8145e.9e6d7c",

+                "49a698b9.947698",

+                "ade9f393.c1d96",

+                "36f653c4.5383bc",

+                "16470885.0e3b37",

+                "1caeb411.8cfeac",

+                "fe102b69.7b64c8"

+            ]

+        ]

+    },

+    {

+        "id": "26e050ad.0575e",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1909.047664642334,

+        "y": 4350.032744407654,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "6613870.b132378",

+                "722310bb.9f769",

+                "9fd39f7.3cbf46",

+                "d3095f31.7d4de"

+            ]

+        ]

+    },

+    {

+        "id": "8dc14ff8.fbd57",

+        "type": "set",

+        "name": "clear aai.l3-network",

+        "xml": "<set>\n<parameter name='aai.l3-network.' value='' />\n",

+        "comments": "",

+        "x": 1260.4762344360352,

+        "y": 3404.3182973861694,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "6ee99534.f9db3c",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 3709.3330459594727,

+        "y": 4250.032426834106,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "85730c77.85f6e",

+        "type": "set",

+        "name": "set found-network to false",

+        "xml": "<set>\n<parameter name='found-network' value='false' />\n",

+        "comments": "",

+        "x": 1409.0476379394531,

+        "y": 3955.7468309402466,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "3979a64c.84ab9a",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2380.7619438171387,

+        "y": 4110.032627105713,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "d24ce0d7.c8619",

+                "c4e4f6d8.6939d8"

+            ]

+        ]

+    },

+    {

+        "id": "c4e4f6d8.6939d8",

+        "type": "switchNode",

+        "name": "switch found-network",

+        "xml": "<switch test='`$found-network`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2572.1904907226562,

+        "y": 4140.032681465149,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "8700444f.d17ae8"

+            ]

+        ]

+    },

+    {

+        "id": "133789d2.fbdb36",

+        "type": "set",

+        "name": "set found-network to true",

+        "xml": "<set>\n<parameter name='found-network' value='true' />\n",

+        "comments": "",

+        "x": 3765.047924041748,

+        "y": 4204.3181076049805,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "8700444f.d17ae8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2740.7619819641113,

+        "y": 4140.0326108932495,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "4c345848.e3a208"

+            ]

+        ]

+    },

+    {

+        "id": "4c345848.e3a208",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 2870.762050628662,

+        "y": 4138.604004859924,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "c1ed15e6.f88648",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1581.0476608276367,

+        "y": 4083.7469053268433,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "e75f10eb.ced4f",

+                "be46946a.165bb8"

+            ]

+        ]

+    },

+    {

+        "id": "be46946a.165bb8",

+        "type": "switchNode",

+        "name": "switch found-network",

+        "xml": "<switch test='`$found-network`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1791.0476150512695,

+        "y": 4155.746788978577,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "2f6a30a5.92d22"

+            ]

+        ]

+    },

+    {

+        "id": "2f6a30a5.92d22",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1959.6191062927246,

+        "y": 4155.746718406677,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "587b7976.a36108"

+            ]

+        ]

+    },

+    {

+        "id": "587b7976.a36108",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 2089.6191749572754,

+        "y": 4154.318112373352,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "9fd39f7.3cbf46",

+        "type": "set",

+        "name": "set subnet data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].ip-version'\n   value='`$tmp.ip-version`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].subnet-id'\n   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].neutron-subnet-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].sdnc-subnet-id'\n   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].subnet-role'\n   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].subnet-name'\n   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-name`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].network-start-address'\n   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].network-start-address`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].gateway-address'\n   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].gateway-address`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].cidr-mask'\n   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].cidr-mask`' />\n",

+        "comments": "",

+        "x": 2063.3334312438965,

+        "y": 4380.714490890503,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "d3095f31.7d4de",

+        "type": "switchNode",

+        "name": "switch dhcp-enabled",

+        "xml": "<switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].dhcp-enabled`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2077.8572120666504,

+        "y": 4433.557444572449,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "a8c627c.ce253d8",

+                "39879203.ca3c2e"

+            ]

+        ]

+    },

+    {

+        "id": "a8c627c.ce253d8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2240.714376722063,

+        "y": 4412.1288022994995,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "85e1593a.3a1828"

+            ]

+        ]

+    },

+    {

+        "id": "39879203.ca3c2e",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2239.2857093811035,

+        "y": 4457.843228340149,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "d7a92919.2d05e8"

+            ]

+        ]

+    },

+    {

+        "id": "85e1593a.3a1828",

+        "type": "set",

+        "name": "set dhcp-enabled to Y",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].dhcp-enabled'\n   value='Y' />\n",

+        "comments": "",

+        "x": 2413.571575164795,

+        "y": 4410.700198173523,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "d7a92919.2d05e8",

+        "type": "set",

+        "name": "set dhcp-enabled to N",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].dhcp-enabled'\n   value='N' />\n",

+        "comments": "",

+        "x": 2410.714344024658,

+        "y": 4457.843228340149,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "6613870.b132378",

+        "type": "switchNode",

+        "name": "switch subnet-role",

+        "xml": "<switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2078.333381652832,

+        "y": 4262.605116844177,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "75942d08.2adc24"

+            ]

+        ]

+    },

+    {

+        "id": "75942d08.2adc24",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2244.999984741211,

+        "y": 4262.604768753052,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "4010a065.68c26"

+            ]

+        ]

+    },

+    {

+        "id": "4010a065.68c26",

+        "type": "set",

+        "name": "set subnet-role to NONE",

+        "xml": "<set>\n<parameter name='aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role' value='NONE' />\n",

+        "comments": "",

+        "x": 2426.6667709350586,

+        "y": 4261.93842124939,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "722310bb.9f769",

+        "type": "switchNode",

+        "name": "switch ip-version",

+        "xml": "<switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].ip-version`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2073.5717163085938,

+        "y": 4327.096222877502,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "5fa58662.2f38f8",

+                "df8a7995.4fde48"

+            ]

+        ]

+    },

+    {

+        "id": "5fa58662.2f38f8",

+        "type": "outcome",

+        "name": "4",

+        "xml": "<outcome value='4'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2239.285858154297,

+        "y": 4308.524620056152,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "5516675c.dd67e8"

+            ]

+        ]

+    },

+    {

+        "id": "df8a7995.4fde48",

+        "type": "outcome",

+        "name": "6",

+        "xml": "<outcome value='6'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2239.285820007324,

+        "y": 4349.953363418579,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "f2e70afd.b8c238"

+            ]

+        ]

+    },

+    {

+        "id": "5516675c.dd67e8",

+        "type": "set",

+        "name": "set tmp.ip-version to ipv4",

+        "xml": "<set>\n<parameter name='tmp.ip-version' value='ipv4' />\n",

+        "comments": "",

+        "x": 2426.428623199463,

+        "y": 4307.667547225952,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "f2e70afd.b8c238",

+        "type": "set",

+        "name": "set tmp.ip-version to ipv6",

+        "xml": "<set>\n<parameter name='tmp.ip-version' value='ipv6' />\n",

+        "comments": "",

+        "x": 2425.000175476074,

+        "y": 4349.953365325928,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "b7e5144f.5264b8",

+        "type": "switchNode",

+        "name": "switch network-role",

+        "xml": "<switch test='`$db.vf-network-role-mapping[$role-index].network-role`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 705.9999084472656,

+        "y": 4335.333273887634,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b3ca721f.fe335",

+                "272dba83.a8aed6",

+                "83078563.934988",

+                "5dd2d1e7.b5782"

+            ]

+        ]

+    },

+    {

+        "id": "b3ca721f.fe335",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 874.0951728820801,

+        "y": 4233.66668510437,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "15298732.e21cb9"

+            ]

+        ]

+    },

+    {

+        "id": "272dba83.a8aed6",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 872.6665496826172,

+        "y": 4361.999873161316,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "fde1d716.a4a0e8"

+            ]

+        ]

+    },

+    {

+        "id": "15298732.e21cb9",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1011.4761810302734,

+        "y": 4273.42826461792,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4e569933.c14918",

+        "type": "get-resource",

+        "name": "get-resource VNF_RELATED_NETWORK_ROLE",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VNF_RELATED_NETWORK_ROLE where vnf_customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid\n    and network_role = $db.vf-network-role-mapping[$role-index].network-role'\n  pfx='db.vnf-related-network-role[]'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1368.0000038146973,

+        "y": 4665.079788208008,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "231fd20b.4ba7ee",

+                "7d447ac2.636e24"

+            ]

+        ]

+    },

+    {

+        "id": "231fd20b.4ba7ee",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1636.6666679382324,

+        "y": 4495.746629714966,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "c3080a54.9b9f68"

+            ]

+        ]

+    },

+    {

+        "id": "7d447ac2.636e24",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1639.6666984558105,

+        "y": 4858.41314125061,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "75a86f84.f58c6"

+            ]

+        ]

+    },

+    {

+        "id": "75a86f84.f58c6",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1806.0000038146973,

+        "y": 4856.412796020508,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "ec2c65f9.047778",

+                "ef924ba7.f37c58",

+                "13bb35f5.a0401a",

+                "e36fed30.43efa",

+                "13a6411b.4f65df",

+                "e8de30ac.6f904",

+                "dc960591.08f438",

+                "e90b4b31.6e7908",

+                "56b41d87.a09d94"

+            ]

+        ]

+    },

+    {

+        "id": "225c2fa8.b622f",

+        "type": "outcome",

+        "name": "service-instance",

+        "xml": "<outcome value='service-instance'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2744.285472869873,

+        "y": 4028.651467323303,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "99500da8.54e39"

+            ]

+        ]

+    },

+    {

+        "id": "99500da8.54e39",

+        "type": "for",

+        "name": "for each relationship data",

+        "xml": "<for silentFailure='true' index='db-data-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2969.7613105773926,

+        "y": 4029.0800971984863,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "ee0dc0db.eb114"

+            ]

+        ]

+    },

+    {

+        "id": "ee0dc0db.eb114",

+        "type": "switchNode",

+        "name": "switch relationship-key",

+        "xml": "<switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-key`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3204.9998817443848,

+        "y": 4027.413528442383,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "d270b105.8ac1a"

+            ]

+        ]

+    },

+    {

+        "id": "d270b105.8ac1a",

+        "type": "outcome",

+        "name": "service-instance.service-instance-id",

+        "xml": "<outcome value='service-instance.service-instance-id'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3471.4282417297363,

+        "y": 4027.413592338562,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "bda20892.371be8"

+            ]

+        ]

+    },

+    {

+        "id": "bda20892.371be8",

+        "type": "set",

+        "name": "set network-service-instance-id",

+        "xml": "<set>\n<parameter name='network-service-instance-id'\n  value='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-value`' />\n",

+        "comments": "",

+        "x": 3765.000026702881,

+        "y": 4025.747007369995,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "ec2c65f9.047778",

+        "type": "execute",

+        "name": "generate network-topology-identifier-structure url",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.network-topology-identifier-structure`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$network-service-instance-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2125.3331718444824,

+        "y": 4552.080429077148,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "13bb35f5.a0401a",

+        "type": "execute",

+        "name": "execute RestApiCallNode - get network-topology-identifier-structure",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ntis-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ntis\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2182.33296585083,

+        "y": 4655.509169578552,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "3038b18e.e97b7e"

+            ]

+        ]

+    },

+    {

+        "id": "ef924ba7.f37c58",

+        "type": "execute",

+        "name": "generate network-topology-identifier-structure url (part 2)",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ntis-url\"/>\n    <parameter name=\"target\" value=\"{network-id}\"/>\n    <parameter name=\"replacement\" value=\"`$l3-network-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2146.9997596740723,

+        "y": 4595.413772583008,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "59c331da.0d09b",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-vnfa.log' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 452.33337783813477,

+        "y": 4502.079788208008,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3038b18e.e97b7e",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2511.442153930664,

+        "y": 4655.259647369385,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "f361b5ff.f38548"

+            ]

+        ]

+    },

+    {

+        "id": "e36fed30.43efa",

+        "type": "set",

+        "name": "set is-trunked and segmentation-id in vnf-network",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].is-trunked'\n    value='`$mdsal-ntis.network-topology-identifier-structure.is-trunked`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].segmentation-id'\n    value='`$mdsal-ntis.network-topology-identifier-structure.segmentation-id`' />\n    ",

+        "comments": "",

+        "x": 2124.999988555908,

+        "y": 4715.746793746948,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "e8de30ac.6f904",

+        "type": "save",

+        "name": "custom query: get owning entity",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.AnAI-data.oe\">\n<parameter name=\"start[0]\" value=\"`'nodes/service-instances/service-instance?service-instance-id=' + $network-service-instance-id `\" />\n<parameter name=\"start_length\" value=\"1\" />\n<parameter name=\"query\" value=\"/query/owning-entity-fromService-instance\" /> \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2065.9998817443848,

+        "y": 4791.080276489258,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "bb11fe98.9b1b9",

+                "12e91c7e.074344"

+            ]

+        ]

+    },

+    {

+        "id": "bb11fe98.9b1b9",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2276.2379302978516,

+        "y": 4769.74663066864,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b897f854.8a4f58"

+            ]

+        ]

+    },

+    {

+        "id": "12e91c7e.074344",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2283.3808250427246,

+        "y": 4815.460855484009,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "a1cce433.a5c9a8"

+            ]

+        ]

+    },

+    {

+        "id": "eb288d10.2446b",

+        "type": "save",

+        "name": "custom query: get tenant network",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n      resource=\"custom-query\"\n      key=\"format = 'resource'\"\n      force=\"true\"\n      local-only=\"false\"\n      pfx=\"tmp.AnAI-data.get-networks\">\n<parameter name=\"start[0]\" value=\"`'/business/owning-entities/owning-entity/' + $tmp.AnAI-data.oe.results[0].owning-entity.owning-entity-id `\" />\n<parameter name=\"start_length\" value=\"1\" />\n<parameter name=\"query\" value=\"`'/query/getNetworks?networkRole=' + $db.vnf-related-network-role[$rel-network-role-index].related-network-role\n  + '&amp;cloudRegionId=' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`\" /> \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2515.6666984558105,

+        "y": 4964.080413818359,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "23ed24a4.2c91dc",

+                "b4f16506.66bd08"

+            ]

+        ]

+    },

+    {

+        "id": "23ed24a4.2c91dc",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2728.9047470092773,

+        "y": 4942.746912956238,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "3e5e2886.704ec8"

+            ]

+        ]

+    },

+    {

+        "id": "b4f16506.66bd08",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2736.0476417541504,

+        "y": 4988.461137771606,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "fb3762dd.d74d3"

+            ]

+        ]

+    },

+    {

+        "id": "e2f76977.fea098",

+        "type": "for",

+        "name": "for each relationship",

+        "xml": "<for index='rel-index' start='0' end='`$tmp.AnAI-data.get-networks.results[0].l3-network.relationship-list.relationship_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2482.6666984558105,

+        "y": 5090.0805587768555,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "586febb.af11914"

+            ]

+        ]

+    },

+    {

+        "id": "586febb.af11914",

+        "type": "switchNode",

+        "name": "switch related-to",

+        "xml": "<switch test='`$tmp.AnAI-data.get-networks.results[0].l3-network.relationship-list.relationship[$rel-index].related-to`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2680.6666984558105,

+        "y": 5090.0805587768555,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "1b7b682d.5dd008"

+            ]

+        ]

+    },

+    {

+        "id": "1b7b682d.5dd008",

+        "type": "outcome",

+        "name": "vlan-tag",

+        "xml": "<outcome value='vlan-tag'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2850.6666984558105,

+        "y": 5090.0805587768555,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "9b43a30b.ab1c1"

+            ]

+        ]

+    },

+    {

+        "id": "9b43a30b.ab1c1",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3018.6666984558105,

+        "y": 5088.0805587768555,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "97d76a2c.076008",

+                "47618d94.b0d374",

+                "1bf4c98d.f9c076"

+            ]

+        ]

+    },

+    {

+        "id": "97d76a2c.076008",

+        "type": "set",

+        "name": "set vlan-tag-id",

+        "xml": "<set>\n<parameter name='vlan-tag-id' value='`$tmp.AnAI-data.get-networks.results[0].l3-network.relationship-list.relationship[$rel-index].relationship-data[0].relationship-value`' />\n",

+        "comments": "",

+        "x": 3194.6666984558105,

+        "y": 5048.0805587768555,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "47618d94.b0d374",

+        "type": "get-resource",

+        "name": "get-resource vlan-tag",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"vlan-tag\" \n\t\tkey=\"vlan-tag.vlan-tag-id = $vlan-tag-id\"\n        pfx='aai.vlan-tag' local-only='false'\n>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3216.6666984558105,

+        "y": 5106.0805587768555,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "1f2ba326.d9772d",

+                "fbf7fa7c.23d608"

+            ]

+        ]

+    },

+    {

+        "id": "1f2ba326.d9772d",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3396.7143058776855,

+        "y": 5088.2236251831055,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "cf0cc9f2.e1c008"

+            ]

+        ]

+    },

+    {

+        "id": "13a6411b.4f65df",

+        "type": "for",

+        "name": "for each related network role",

+        "xml": "<for index='rel-network-role-index' start='0' end='`$db.vnf-related-network-role_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2053.6666297912598,

+        "y": 5020.414123535156,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "668947e0.2f65c8"

+            ]

+        ]

+    },

+    {

+        "id": "668947e0.2f65c8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2258.6666297912598,

+        "y": 5021.747268676758,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "eb288d10.2446b",

+                "e2f76977.fea098",

+                "986e7ac7.81d148"

+            ]

+        ]

+    },

+    {

+        "id": "e90b4b31.6e7908",

+        "type": "switchNode",

+        "name": "switch rn-index",

+        "xml": "<switch test='`$rn-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2014.6666297912598,

+        "y": 4910.080276489258,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "896e1959.7fd6a8"

+            ]

+        ]

+    },

+    {

+        "id": "dc960591.08f438",

+        "type": "set",

+        "name": "set rn-index to related network length",

+        "xml": "<set>\n<parameter name='rn-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network_length`' />\n",

+        "comments": "",

+        "x": 2083.3332176208496,

+        "y": 4861.080129623413,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "896e1959.7fd6a8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2178.6666297912598,

+        "y": 4910.080276489258,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "83542037.398bf"

+            ]

+        ]

+    },

+    {

+        "id": "83542037.398bf",

+        "type": "set",

+        "name": "set rn-index to 0",

+        "xml": "<set>\n<parameter name='rn-index' value='0' />\n",

+        "comments": "",

+        "x": 2338.6666297912598,

+        "y": 4910.080276489258,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "986e7ac7.81d148",

+        "type": "set",

+        "name": "set related-network data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].network-id'\n  value='`$tmp.AnAI-data.get-networks.results[0].l3-network.network-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].network-role'\n  value='`$tmp.AnAI-data.get-networks.results[0].l3-network.network-role`' />\n",

+        "comments": "",

+        "x": 2486.3332862854004,

+        "y": 5020.747100830078,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "56b41d87.a09d94",

+        "type": "set",

+        "name": "set new related network length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network_length'\n  value='`$rn-index + 1`' />\n",

+        "comments": "",

+        "x": 2048.6666984558105,

+        "y": 5164.080413818359,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "fbf7fa7c.23d608",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3398.6666984558105,

+        "y": 5136.080413818359,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "dc2e5d86.8c21f"

+            ]

+        ]

+    },

+    {

+        "id": "dc2e5d86.8c21f",

+        "type": "set",

+        "name": "set related-network data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.vlan-interface'\n  value='`$aai.vlan-tag.vlan-tag-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.upper-tag-id'\n  value='`$aai.vlan-tag.vlan-id-outer`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.lower-tag-id'\n  value='`$aai.vlan-tag.vlan-id-inner`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.is-private'\n  value='`$aai.vlan-tag.is-private`' />\n",

+        "comments": "",

+        "x": 3590.6666984558105,

+        "y": 5136.080413818359,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "1bf4c98d.f9c076",

+        "type": "break",

+        "name": "break",

+        "xml": "<break>\n",

+        "comments": "",

+        "x": 3168.6666984558105,

+        "y": 5174.080413818359,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "2f24f627.1d687a",

+        "type": "comment",

+        "name": "temporary data issue: also ignore string \"null\" and \"NULL\"",

+        "info": "",

+        "comments": "",

+        "x": 845.0000114440918,

+        "y": 4193.842397689819,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "83078563.934988",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value='null'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 872.1428337097168,

+        "y": 4276.69953918457,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "15298732.e21cb9"

+            ]

+        ]

+    },

+    {

+        "id": "5dd2d1e7.b5782",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value='NULL'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 872.14284324646,

+        "y": 4319.556611061096,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "15298732.e21cb9"

+            ]

+        ]

+    },

+    {

+        "id": "36f653c4.5383bc",

+        "type": "switchNode",

+        "name": "switch input cloud-owner",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-request-input.cloud-owner`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 521.6667022705078,

+        "y": 367.4136428833008,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "6073cd09.c47954",

+                "60806490.79275c"

+            ]

+        ]

+    },

+    {

+        "id": "6073cd09.c47954",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 705.0000762939453,

+        "y": 337.413631439209,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "a192c343.146f"

+            ]

+        ]

+    },

+    {

+        "id": "60806490.79275c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 704.7619819641113,

+        "y": 378.3661251068115,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "7907b.f03a3f85"

+            ]

+        ]

+    },

+    {

+        "id": "a192c343.146f",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 840.0000305175781,

+        "y": 335.7469711303711,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7907b.f03a3f85",

+        "type": "set",

+        "name": "set prop.cloud-region.cloud-owner",

+        "xml": "<set>\n<parameter name='prop.cloud-region.cloud-owner' value='`$vnf-topology-operation-input.vnf-request-input.cloud-owner`' />\n",

+        "comments": "",

+        "x": 921.6666870117188,

+        "y": 377.41365242004395,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "16470885.0e3b37",

+        "type": "call",

+        "name": "call self-serve-vnf-forking-logic",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-forking-logic' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 539.5238265991211,

+        "y": 688.2142810821533,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1caeb411.8cfeac",

+        "type": "switchNode",

+        "name": "switch ss.self-serve-flag",

+        "xml": "<switch test=\"`$ss.self-serve-flag`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 519.6665420532227,

+        "y": 853.7857685089111,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "37f74e26.cb2452",

+                "beba854c.d89668"

+            ]

+        ]

+    },

+    {

+        "id": "37f74e26.cb2452",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 731.3806991577148,

+        "y": 927.0710525512695,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "c8588b9c.b0d898"

+            ]

+        ]

+    },

+    {

+        "id": "beba854c.d89668",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 730.9522171020508,

+        "y": 790.6428861618042,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "4645b056.44eb1"

+            ]

+        ]

+    },

+    {

+        "id": "97a46274.9df5e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 911.111156463623,

+        "y": 489.38886737823486,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "2a1c1eb.da980e2",

+                "22c02af2.d4ee26"

+            ]

+        ]

+    },

+    {

+        "id": "df6715d9.ce37d8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 911.111156463623,

+        "y": 537.9603090286255,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b8d206be.845728",

+                "22c02af2.d4ee26"

+            ]

+        ]

+    },

+    {

+        "id": "e48fe633.d5a078",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 913.9682731628418,

+        "y": 582.2460145950317,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "da0200d1.6944b",

+                "22c02af2.d4ee26"

+            ]

+        ]

+    },

+    {

+        "id": "2a1c1eb.da980e2",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"If svc-action is 'assign' then request-action must be 'CreateVnfInstance'\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1147.539737701416,

+        "y": 489.3888578414917,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b8d206be.845728",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error reading VF_MODEL table\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1146.1111488342285,

+        "y": 538.1031522750854,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "da0200d1.6944b",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'No model found for VNF customization UUID ' + $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1146.1111488342285,

+        "y": 582.2460050582886,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "198f8218.7133ee",

+        "type": "call",

+        "name": "call self-serve-vnf-assign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-assign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1181.9878044128418,

+        "y": 688.1072311401367,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "d458bfd1.de073"

+            ]

+        ]

+    },

+    {

+        "id": "e83e7b2d.1d4268",

+        "type": "comment",

+        "name": "SELF-SERVE FORK",

+        "info": "",

+        "comments": "",

+        "x": 901.4285583496094,

+        "y": 741.5119113922119,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "d458bfd1.de073",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1387.285385131836,

+        "y": 687.5952625274658,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "c261dd9e.7394e"

+            ]

+        ]

+    },

+    {

+        "id": "da6cb5e4.41c2f8",

+        "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": 1157.2301712036133,

+        "y": 936.789656996727,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "828a78b6.35b498",

+        "type": "set",

+        "name": "set vnf-level-oper-status to PendingCreate",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",

+        "comments": "",

+        "x": 1245.0991516113281,

+        "y": 739.599271774292,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "b15ef9f9.2e3088",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/ss-vnfend.log' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1144.3014678955078,

+        "y": 790.0390481948853,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4645b056.44eb1",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 921.5394287109375,

+        "y": 790.4999408721924,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "198f8218.7133ee",

+                "828a78b6.35b498",

+                "b15ef9f9.2e3088",

+                "da6cb5e4.41c2f8",

+                "afb784f3.b92c98",

+                "179daba.4616354"

+            ]

+        ]

+    },

+    {

+        "id": "22c02af2.d4ee26",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1762.9842987060547,

+        "y": 767.2462577819824,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "9f6e7d2d.65cdb",

+                "efad6026.2740a"

+            ]

+        ]

+    },

+    {

+        "id": "c261dd9e.7394e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1563.3016738891602,

+        "y": 687.785698890686,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "6b697ba4.a67094",

+                "22c02af2.d4ee26"

+            ]

+        ]

+    },

+    {

+        "id": "6b697ba4.a67094",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Failed to create self-serve assignment for vnf with vnf-id=' + $vnf-topology-operation-input.vnf-information.vnf-id + ' with error: ' + $error-message`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1774.8296203613281,

+        "y": 629.690544128418,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "853dab16.a11508",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id\n      + ' already exists'`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2205.666618347168,

+        "y": 1201.666597366333,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e351344c.af7228",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Cannot find instance group id ' +\n      $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id\n      + ' in AAI'`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1582.7617416381836,

+        "y": 1256.476245880127,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "564bf42f.5df9ac",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error retrieving instance-group from AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1582.761703491211,

+        "y": 1319.619031906128,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "33ec168e.11b45a",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Unable to find AAI relationship from collection '\n      + $aai.instance-group.relationship-list.relationship[$rel-index].relationship-data[0].relationship-value\n      + ' to service instance'`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2177.333206176758,

+        "y": 1335.9523315429688,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "38b03742.d98548",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Failed to get network service instance '\n      + $network-service-instance + ' from MD-SAL'`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2178.8094482421875,

+        "y": 1377.666732788086,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "56ab1164.7603f",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Could not find network instance group ' +\n      $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id\n      + ' in MD-SAL service instance '\n      + $network-service-instance`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2863.3335571289062,

+        "y": 1536.1904573440552,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "60b9af41.99ebd",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2889.345314025879,

+        "y": 1840.3692474365234,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "816ac0ef.84b68",

+                "67ea33dc.59706c"

+            ]

+        ]

+    },

+    {

+        "id": "67d1f32e.64262c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2000.6664962768555,

+        "y": 1199.9998836517334,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "853dab16.a11508",

+                "60b9af41.99ebd"

+            ]

+        ]

+    },

+    {

+        "id": "3d4ce14c.b56fbe",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1370.999984741211,

+        "y": 1256.6664772033691,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "e351344c.af7228",

+                "60b9af41.99ebd"

+            ]

+        ]

+    },

+    {

+        "id": "6b5b96d7.f11058",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1371.666358947754,

+        "y": 1319.3331823349,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "564bf42f.5df9ac",

+                "60b9af41.99ebd"

+            ]

+        ]

+    },

+    {

+        "id": "75f0b66c.711368",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1959.9998779296875,

+        "y": 1336.3333625793457,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "33ec168e.11b45a",

+                "60b9af41.99ebd"

+            ]

+        ]

+    },

+    {

+        "id": "1cfc4c24.ab0124",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1958.333251953125,

+        "y": 1378.333251953125,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "38b03742.d98548",

+                "60b9af41.99ebd"

+            ]

+        ]

+    },

+    {

+        "id": "a3ec7ac.ac12b88",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2652.619094848633,

+        "y": 1536.9047193527222,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "56ab1164.7603f",

+                "60b9af41.99ebd"

+            ]

+        ]

+    },

+    {

+        "id": "da3712d9.f41f4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1459.0475540161133,

+        "y": 1771.9046249389648,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "62fa2d49.68c884",

+                "5de10e3b.8401c"

+            ]

+        ]

+    },

+    {

+        "id": "62fa2d49.68c884",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"No vnf-name was received but ecomp-generated-naming is not Y\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1688.90478515625,

+        "y": 1772.3329601287842,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6d7f13cc.8d975c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2211.9046783447266,

+        "y": 1875.7618045806885,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "4b15fa7b.a37b24",

+                "5de10e3b.8401c"

+            ]

+        ]

+    },

+    {

+        "id": "4b15fa7b.a37b24",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`$generate-unique-name-output.error-message`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2420.0475540161133,

+        "y": 1875.3331956863403,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "702e58b3.200b38",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2260.476104736328,

+        "y": 2001.9045372009277,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "20b0a05b.f52ee",

+                "5de10e3b.8401c"

+            ]

+        ]

+    },

+    {

+        "id": "20b0a05b.f52ee",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Unable to generate VNF name\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2483.3331604003906,

+        "y": 2002.3332080841064,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5de10e3b.8401c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2535.2147064208984,

+        "y": 2257.333641052246,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "731462dd.b506dc",

+                "33152a66.1de486"

+            ]

+        ]

+    },

+    {

+        "id": "55ab3764.a14138",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 952.8571090698242,

+        "y": 2912.2857341766357,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "f054f599.b671b8",

+                "2115eaa4.e5b146"

+            ]

+        ]

+    },

+    {

+        "id": "f054f599.b671b8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Cloud region not found in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1151.428451538086,

+        "y": 2878.0000200271606,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "cbecda63.60f978",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 956.1904602050781,

+        "y": 2955.619020462036,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "7ff32092.da86f",

+                "2115eaa4.e5b146"

+            ]

+        ]

+    },

+    {

+        "id": "7ff32092.da86f",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error retrieving cloud region from AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1154.7618026733398,

+        "y": 2921.333306312561,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9a466e25.4156f",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 814.5238952636719,

+        "y": 3134.619167327881,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "9a766ef3.dad01",

+                "2115eaa4.e5b146"

+            ]

+        ]

+    },

+    {

+        "id": "9a766ef3.dad01",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Unable to find aic-clli in AAI for aic-cloud-region ' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1024.5238876342773,

+        "y": 3113.190655708313,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2115eaa4.e5b146",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1911.1072616577148,

+        "y": 3689.820848464966,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "77d28d98.052f64",

+                "2dcd5fd9.caa1d",

+                "e2453329.ce9e1",

+                "d8bb9422.93cd78"

+            ]

+        ]

+    },

+    {

+        "id": "5be8614b.d2283",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1099.9999923706055,

+        "y": 3224.714331626892,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "8a74d4c9.f4d158",

+                "2115eaa4.e5b146"

+            ]

+        ]

+    },

+    {

+        "id": "8a74d4c9.f4d158",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error reading VF_TO_NETWORK_ROLE_MAPPING table\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1302.8571014404297,

+        "y": 3191.8572273254395,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1b9558ce.3c84a7",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1669.9999465942383,

+        "y": 3434.285619735718,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "f01f3cd.81c20c",

+                "2115eaa4.e5b146"

+            ]

+        ]

+    },

+    {

+        "id": "f01f3cd.81c20c",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Unable to find l3-network in AAI for network role ' + $db.vf-network-role-mapping[$role-index].network-role`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1881.4285507202148,

+        "y": 3402.8569107055664,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f361b5ff.f38548",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2690.4761276245117,

+        "y": 4655.667684555054,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "87fd5071.f5e61",

+                "9615c407.df8ac8"

+            ]

+        ]

+    },

+    {

+        "id": "87fd5071.f5e61",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`\n    'Error retrieving network-topology-identifier-structure for service instance '\n    + $network-service-instance-id\n    + ' and network-id '\n    + $l3-network-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2901.9046325683594,

+        "y": 4624.238899230957,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c3080a54.9b9f68",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1803.1428604125977,

+        "y": 4496.048126220703,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "67128ab5.195dd4",

+                "9615c407.df8ac8"

+            ]

+        ]

+    },

+    {

+        "id": "67128ab5.195dd4",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error reading VNF_RELATED_NETWORK_ROLE table\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2017.1428604125977,

+        "y": 4477.190979003906,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b897f854.8a4f58",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2447.6190872192383,

+        "y": 4771.667268753052,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "90365fab.e2211",

+                "9615c407.df8ac8"

+            ]

+        ]

+    },

+    {

+        "id": "90365fab.e2211",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error getting owning entity from service instance\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2654.762107849121,

+        "y": 4747.381650924683,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a1cce433.a5c9a8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2462.6190872192383,

+        "y": 4816.667268753052,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "1a20c9fe.aa7526",

+                "9615c407.df8ac8"

+            ]

+        ]

+    },

+    {

+        "id": "1a20c9fe.aa7526",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Unable to find owning entity from service instance\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2664.0477294921875,

+        "y": 4790.953462600708,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3e5e2886.704ec8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2906.6664810180664,

+        "y": 4942.143200874329,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "474a1c8f.5b8254",

+                "9615c407.df8ac8"

+            ]

+        ]

+    },

+    {

+        "id": "474a1c8f.5b8254",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error calling getNetworks custom query in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3122.380844116211,

+        "y": 4912.143190383911,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fb3762dd.d74d3",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2918.3332290649414,

+        "y": 4987.143200874329,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "d13c17c6.96baa8",

+                "9615c407.df8ac8"

+            ]

+        ]

+    },

+    {

+        "id": "d13c17c6.96baa8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'No l3-network returned from getNetworks custom query for related network role '\n      + $db.vnf-related-network-role[0].related-network-role`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3134.047592163086,

+        "y": 4957.143190383911,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "cf0cc9f2.e1c008",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3562.618698120117,

+        "y": 5088.333766937256,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "583a5088.c3e55",

+                "9615c407.df8ac8"

+            ]

+        ]

+    },

+    {

+        "id": "583a5088.c3e55",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error getting vlan-tag object from AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3775.475830078125,

+        "y": 5061.190900802612,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9615c407.df8ac8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3682.345771789551,

+        "y": 5539.275134086609,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "2f005b1.f6000a4",

+                "567a5bcf.b1abd4",

+                "bda56dc4.abbc",

+                "ab1a0201.102be"

+            ]

+        ]

+    },

+    {

+        "id": "4fcc2ec6.5268d",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1669.9999313354492,

+        "y": 3484.2856159210205,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "75ca8e5d.ce23a",

+                "2115eaa4.e5b146"

+            ]

+        ]

+    },

+    {

+        "id": "75ca8e5d.ce23a",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error retrieving l3-network from AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1881.4285354614258,

+        "y": 3452.856906890869,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "39a027a0.277908",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'Unable to find l3-network in AAI for network role ' + $db.vf-network-role-mapping[$role-index].network-role`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1805.71435546875,

+        "y": 4195.714210510254,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d03cff5b.4eae8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1605.71435546875,

+        "y": 4210,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "39a027a0.277908",

+                "9615c407.df8ac8"

+            ]

+        ]

+    },

+    {

+        "id": "63585eee.6f434",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1259.9999389648438,

+        "y": 5382.856773376465,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "2dd248fd.0355f8",

+                "f54d4b54.f29d58"

+            ]

+        ]

+    },

+    {

+        "id": "2dd248fd.0355f8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'No availability zones found in AAI for cloud region '\n       + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1462.8570709228516,

+        "y": 5364.28534412384,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ac3d2a38.193128",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1487.3811264038086,

+        "y": 5509.524040222168,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "fcb662f2.e888c",

+                "f54d4b54.f29d58"

+            ]

+        ]

+    },

+    {

+        "id": "fcb662f2.e888c",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error updating generic-vnf in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1688.8096771240234,

+        "y": 5489.524041175842,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "edd6eeb3.58833",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1489.047752380371,

+        "y": 5552.857048034668,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "ed7e59f3.736ce8",

+                "f54d4b54.f29d58"

+            ]

+        ]

+    },

+    {

+        "id": "ed7e59f3.736ce8",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1690.476303100586,

+        "y": 5532.857048988342,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1d23943a.cc401c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1346.904800415039,

+        "y": 5627.618696212769,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "5db8f40e.5238ec",

+                "f54d4b54.f29d58"

+            ]

+        ]

+    },

+    {

+        "id": "5db8f40e.5238ec",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error updating generic-vnf in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1544.5833358764648,

+        "y": 5606.011522293091,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "48b115c8.09c9bc",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1366.9642944335938,

+        "y": 5672.678614616394,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "33966a0a.bc1c26",

+                "f54d4b54.f29d58"

+            ]

+        ]

+    },

+    {

+        "id": "33966a0a.bc1c26",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1571.2500610351562,

+        "y": 5649.821611404419,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b5f5454e.605518",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 782.6785583496094,

+        "y": 5782.29768371582,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "5a2cf836.80cc88",

+                "f54d4b54.f29d58"

+            ]

+        ]

+    },

+    {

+        "id": "5a2cf836.80cc88",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error updating selflink in generic-vnf in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 988.3928985595703,

+        "y": 5758.011829376221,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fb7909b7.07d3a8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 796.0118713378906,

+        "y": 5825.63117980957,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "840ebe47.1002a",

+                "f54d4b54.f29d58"

+            ]

+        ]

+    },

+    {

+        "id": "840ebe47.1002a",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1001.7262115478516,

+        "y": 5801.345325469971,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b5b87fb0.590f",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1376.059555053711,

+        "y": 5875.011758804321,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "9605363d.80ae88",

+                "f54d4b54.f29d58"

+            ]

+        ]

+    },

+    {

+        "id": "9605363d.80ae88",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error updating relationship in generic-vnf in AAI\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1570.3452758789062,

+        "y": 5849.2977504730225,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "610d2304.a3d70c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1391.059555053711,

+        "y": 5918.345254898071,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "70fd7745.526758",

+                "f54d4b54.f29d58"

+            ]

+        ]

+    },

+    {

+        "id": "70fd7745.526758",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1585.3452758789062,

+        "y": 5892.6312465667725,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b01ba289.b4c4d",

+        "type": "execute",

+        "name": "execute RestApiCallNode - PUT vnf",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + 'vnf-data-assign.json'`\" />\n    <parameter name='restapiUrl' value=\"`$prop.controller.url + $tmp.vnf.url`\" />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"vnf-assign\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 485.9878692626953,

+        "y": 6282.9891719818115,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "b8a25bcd.5c5768",

+                "336fda4d.6f39d6"

+            ]

+        ]

+    },

+    {

+        "id": "b8a25bcd.5c5768",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 733.2006301879883,

+        "y": 6304.319892883301,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "dd704ec0.5452"

+            ]

+        ]

+    },

+    {

+        "id": "336fda4d.6f39d6",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 725.629264831543,

+        "y": 6262.819912910461,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "dd704ec0.5452"

+            ]

+        ]

+    },

+    {

+        "id": "dd704ec0.5452",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 901.225944519043,

+        "y": 6282.750367164612,

+        "z": "2d523017.81121",

+        "wires": [

+            [

+                "70b79c9a.11b3d4",

+                "f54d4b54.f29d58"

+            ]

+        ]

+    },

+    {

+        "id": "70b79c9a.11b3d4",

+        "type": "configure",

+        "name": "set error-message",

+        "xml": "<set>\n<parameter name=\"error-message\" value=\"Error doing PUT of vnf-data\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1106.9402542114258,

+        "y": 6248.464484214783,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f93440f1.dad62",

+        "type": "set",

+        "name": "set so.response-code = 200",

+        "xml": "<set>\n<parameter name=\"so.response-code\" value=\"200\" />",

+        "comments": "",

+        "x": 456.7604293823242,

+        "y": 6425.500561714172,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "fe102b69.7b64c8",

+        "type": "set",

+        "name": "Initialize SO 500 reponse params",

+        "xml": "<set>\n<parameter name=\"so.ack-final-indicator\" value=\"Y\" />\n<parameter name=\"so.response-code\" value=\"500\" />\n<parameter name=\"so.notification-url\" value=\"`$vnf-topology-operation-input.sdnc-request-header.svc-notification-url`\" />\n<parameter name=\"so.svc-request-id\" value=\"`$vnf-topology-operation-input.sdnc-request-header.svc-request-id`\" />\n<parameter name=\"so.service-type\" value=\"`$vnf-topology-operation-input.service-information.subscription-service-type`\" />\n<parameter name=\"so.service-instance-id\" value=\"`$vnf-topology-operation-input.service-information.service-instance-id`\" />\n",

+        "comments": "",

+        "x": 554.42724609375,

+        "y": 261.9549217224121,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "77d28d98.052f64",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2236.9576263427734,

+        "y": 3740.151798248291,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "afb784f3.b92c98",

+        "type": "set",

+        "name": "set so.reponse-code = 200",

+        "xml": "<set>\n<parameter name=\"so.response-code\" value=\"200\" />\n",

+        "comments": "",

+        "x": 1197.5128784179688,

+        "y": 836.2629871368408,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "2dcd5fd9.caa1d",

+        "type": "set",

+        "name": "set variables for deleting name",

+        "xml": "<set>\n<parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n",

+        "comments": "",

+        "x": 2183.762954711914,

+        "y": 3639.040738105774,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "e2453329.ce9e1",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:naming-policy-generate-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2281.334228515625,

+        "y": 3689.1830978393555,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bda56dc4.abbc",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4015.7076721191406,

+        "y": 5563.346151351929,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2f005b1.f6000a4",

+        "type": "set",

+        "name": "set variables for deleting name",

+        "xml": "<set>\n<parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n",

+        "comments": "",

+        "x": 3962.5130004882812,

+        "y": 5462.235091209412,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "567a5bcf.b1abd4",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:naming-policy-generate-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 4060.084274291992,

+        "y": 5512.377450942993,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d27d64fe.c0c2c8",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2244.8742904663086,

+        "y": 6544.319822311401,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9c453248.1f195",

+        "type": "set",

+        "name": "set variables for deleting name",

+        "xml": "<set>\n<parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n",

+        "comments": "",

+        "x": 2187.929588317871,

+        "y": 6443.2088985443115,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "a406d4bc.916068",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:naming-policy-generate-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2285.500862121582,

+        "y": 6493.351258277893,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9f6e7d2d.65cdb",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2077.3744049072266,

+        "y": 740.8462972640991,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "816ac0ef.84b68",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3201.1239700317383,

+        "y": 1816.596351146698,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "731462dd.b506dc",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2853.6240234375,

+        "y": 2231.346435546875,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5091afc0.4393d",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 521.2630310058594,

+        "y": 6479.874531745911,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "179daba.4616354",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API_send-so-response",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1269.5129089355469,

+        "y": 885.0129909515381,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "efad6026.2740a",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 1958.762954711914,

+        "y": 791.2629833221436,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "67ea33dc.59706c",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 3082.512939453125,

+        "y": 1860.8463134765625,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "33152a66.1de486",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 2737.512939453125,

+        "y": 2279.596435546875,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "d8bb9422.93cd78",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 2117.5130882263184,

+        "y": 3787.929880142212,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "ab1a0201.102be",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 3898.485107421875,

+        "y": 5613.06884765625,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "71ce4538.3940fc",

+        "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-message`\" />\n",

+        "comments": "",

+        "x": 2124.735321044922,

+        "y": 6591.263185501099,

+        "z": "2d523017.81121",

+        "wires": []

+    },

+    {

+        "id": "7381e60f.8d7388",

+        "type": "execute",

+        "name": "generate vnf URL (sub service-instance-id)",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.vnf-assign`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.part\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.service-topology.service-topology-identifier.service-instance-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 510.0130157470703,

+        "y": 6086.542016029358,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ef3b1f74.d9716",

+        "type": "execute",

+        "name": "generate vnf URL (sub vnf-id)",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.part`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.vnf.url\"/>\n    <parameter name=\"target\" value=\"{vnf-id}\"/>\n    <parameter name=\"replacement\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 465.012939453125,

+        "y": 6137.969970703125,

+        "z": "2d523017.81121",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4c1fc0a3.ee098",

+        "type": "set",

+        "name": "copy vnf data",

+        "xml": "<set>\n<parameter name='vnf-data.' value='service-data.vnfs.vnf[$vnf-index].vnf-data.' />\n",

+        "comments": "",

+        "x": 410.90589904785156,

+        "y": 6185.827503204346,

+        "z": "2d523017.81121",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-async.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-async.json
new file mode 100644
index 0000000..7206446
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-async.json
@@ -0,0 +1,175 @@
+[

+    {

+        "id": "869164d0.22fca8",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 177.77777099609375,

+        "y": 127.96921110153198,

+        "z": "fafe2484.405f98",

+        "wires": [

+            [

+                "91e5b207.619a8"

+            ]

+        ]

+    },

+    {

+        "id": "91e5b207.619a8",

+        "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": 292.0634765625,

+        "y": 168.20732259750366,

+        "z": "fafe2484.405f98",

+        "wires": [

+            [

+                "6e27b9bb.02b478"

+            ]

+        ]

+    },

+    {

+        "id": "6e27b9bb.02b478",

+        "type": "method",

+        "name": "method vnf-topology-operation-async",

+        "xml": "<method rpc='vnf-topology-operation-async' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 265.63497161865234,

+        "y": 209.3977770805359,

+        "z": "fafe2484.405f98",

+        "wires": [

+            [

+                "67687d15.90d894"

+            ]

+        ]

+    },

+    {

+        "id": "628a912e.96075",

+        "type": "comment",

+        "name": "vnf-topology-operation-async",

+        "info": "",

+        "comments": "",

+        "x": 572.1226272583008,

+        "y": 75.55555486679077,

+        "z": "fafe2484.405f98",

+        "wires": []

+    },

+    {

+        "id": "67687d15.90d894",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 290.3730583190918,

+        "y": 357.0913519859314,

+        "z": "fafe2484.405f98",

+        "wires": [

+            [

+                "98b2b32c.4efe9",

+                "ea413579.6ab908",

+                "22dacf93.8c6e4"

+            ]

+        ]

+    },

+    {

+        "id": "98b2b32c.4efe9",

+        "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": 480.015869140625,

+        "y": 421.5409588813782,

+        "z": "fafe2484.405f98",

+        "wires": []

+    },

+    {

+        "id": "ea413579.6ab908",

+        "type": "switchNode",

+        "name": "switch svc-action",

+        "xml": "<switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 488.63487243652344,

+        "y": 358.15970182418823,

+        "z": "fafe2484.405f98",

+        "wires": [

+            [

+                "a26e14a0.c75858",

+                "7d83530e.ba2efc"

+            ]

+        ]

+    },

+    {

+        "id": "a26e14a0.c75858",

+        "type": "outcome",

+        "name": "assign",

+        "xml": "<outcome value='assign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 684.5872421264648,

+        "y": 335.06455087661743,

+        "z": "fafe2484.405f98",

+        "wires": [

+            [

+                "a1897fe3.ec245"

+            ]

+        ]

+    },

+    {

+        "id": "7d83530e.ba2efc",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 681.9205017089844,

+        "y": 379.44537115097046,

+        "z": "fafe2484.405f98",

+        "wires": [

+            [

+                "4fedef3f.f888b"

+            ]

+        ]

+    },

+    {

+        "id": "4fedef3f.f888b",

+        "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": 833.8252372741699,

+        "y": 379.44545316696167,

+        "z": "fafe2484.405f98",

+        "wires": []

+    },

+    {

+        "id": "22dacf93.8c6e4",

+        "type": "set",

+        "name": "set skip-mdsal-update to Y",

+        "xml": "<set>\n<parameter name='skip-mdsal-update' value='Y' />\n",

+        "comments": "",

+        "x": 518.254020690918,

+        "y": 297.69841051101685,

+        "z": "fafe2484.405f98",

+        "wires": []

+    },

+    {

+        "id": "a1897fe3.ec245",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vnf-topology-operation-assign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-assign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 989.2063751220703,

+        "y": 335.1120238304138,

+        "z": "fafe2484.405f98",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-changeassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-changeassign.json
new file mode 100755
index 0000000..1f27962
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-changeassign.json
@@ -0,0 +1 @@
+[{"id":"e1c194c1.6c0748","type":"dgstart","name":"DGSTART","outputs":1,"x":160,"y":109.55651497840881,"z":"a52bb8fe.adb788","wires":[["ead596a6.b90fe8"]]},{"id":"ead596a6.b90fe8","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":272.4285583496094,"y":149.79462552070618,"z":"a52bb8fe.adb788","wires":[["54440786.fc64e8"]]},{"id":"54440786.fc64e8","type":"method","name":"method vnf-topology-operation-changeassign","xml":"<method rpc='vnf-topology-operation-changeassign' mode='sync'>\n","comments":"","outputs":1,"x":268.14290618896484,"y":189.55651307106018,"z":"a52bb8fe.adb788","wires":[["83d88b47.4d48e8"]]},{"id":"a350908d.3a513","type":"comment","name":"vnf-topology-operation-changeassign","info":"","comments":"","x":554.344856262207,"y":57.1428587436676,"z":"a52bb8fe.adb788","wires":[]},{"id":"d4c5e8f.85d7e18","type":"switchNode","name":"switch request-action","xml":"<switch test='`$vnf-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":559.2381134033203,"y":291.2708065509796,"z":"a52bb8fe.adb788","wires":[["1d618262.2b7c0e","a1afa6db.9a8228"]]},{"id":"1d618262.2b7c0e","type":"outcome","name":"CreateVnfInstance","xml":"<outcome value='CreateVnfInstance'>\n","comments":"","outputs":1,"x":783.3809280395508,"y":265.5565149784088,"z":"a52bb8fe.adb788","wires":[["933303e3.faabc"]]},{"id":"a1afa6db.9a8228","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":746.3809509277344,"y":309.60415387153625,"z":"a52bb8fe.adb788","wires":[["43d5251e.0786cc"]]},{"id":"933303e3.faabc","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":974.9523849487305,"y":265.5565502643585,"z":"a52bb8fe.adb788","wires":[[]]},{"id":"43d5251e.0786cc","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=\"If svc-action is 'changeassign' then request-action must be 'CreateVnfInstance'\" />\n","comments":"","x":953.7618980407715,"y":309.60416531562805,"z":"a52bb8fe.adb788","wires":[]},{"id":"e362aea6.b1346","type":"switchNode","name":"switch order-status","xml":"<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status`'>\n","comments":"","outputs":1,"x":1255.6667022705078,"y":794.4138145446777,"z":"a52bb8fe.adb788","wires":[["74079e6b.aefc1","f88a32.e16d55d"]]},{"id":"74079e6b.aefc1","type":"other","name":"PendingDelete","xml":"<outcome value='PendingDelete'>\n","comments":"","outputs":1,"x":1457.6667594909668,"y":772.1279821395874,"z":"a52bb8fe.adb788","wires":[["66e4e92e.0e5cb8"]]},{"id":"f0d7f0c0.b9715","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=\"The requested VNF is not pending deletion\" />\n","comments":"","x":1623.8096237182617,"y":815.4613599777222,"z":"a52bb8fe.adb788","wires":[]},{"id":"262a166a.7d1fda","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":973.666748046875,"y":790.1756362915039,"z":"a52bb8fe.adb788","wires":[["f0824f71.68f53","10dfb5b0.7b060a","f92bbe0f.41a0d","1842bbb2.3f45e4","f4966ea2.08ebe","e75e31c6.759f8"]]},{"id":"f0824f71.68f53","type":"set","name":"set service-object-path","xml":"<set>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $service-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n","comments":"","x":1263.9643783569336,"y":1151.0924091339111,"z":"a52bb8fe.adb788","wires":[]},{"id":"10dfb5b0.7b060a","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n","comments":"","x":1238.2500801086426,"y":1193.9495477676392,"z":"a52bb8fe.adb788","wires":[]},{"id":"1883e45.437cc1c","type":"switchNode","name":"switch vnf_length","xml":"<switch test='`$service-data.vnfs.vnf_length`'>\n","comments":"","outputs":1,"x":545.2380523681641,"y":366.41365361213684,"z":"a52bb8fe.adb788","wires":[["bd6d0272.639e4"]]},{"id":"bd6d0272.639e4","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":731.9047317504883,"y":365.746951341629,"z":"a52bb8fe.adb788","wires":[["c208e20e.dee69"]]},{"id":"c208e20e.dee69","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":913.5713577270508,"y":365.746951341629,"z":"a52bb8fe.adb788","wires":[]},{"id":"e783c444.749018","type":"for","name":"for each vnf","xml":"<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":528.3332901000977,"y":412.8898298740387,"z":"a52bb8fe.adb788","wires":[["1fa6a1eb.45f01e"]]},{"id":"1fa6a1eb.45f01e","type":"switchNode","name":"switch this vnf-id == input vnf-id","xml":"<switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`'>\n","comments":"","outputs":1,"x":783.3333778381348,"y":412.5564978122711,"z":"a52bb8fe.adb788","wires":[["e1552725.581738"]]},{"id":"e1552725.581738","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":1014.6666641235352,"y":412.55647587776184,"z":"a52bb8fe.adb788","wires":[["7d331694.1e4b48"]]},{"id":"7d331694.1e4b48","type":"set","name":"set vnf-index","xml":"<set>\n<parameter name='vnf-index' value='`$idx`' />\n","comments":"","x":1189.9998588562012,"y":412.5564978122711,"z":"a52bb8fe.adb788","wires":[]},{"id":"93ca063a.aa8398","type":"switchNode","name":"switch vnf-index","xml":"<switch test='`$vnf-index`'>\n","comments":"","outputs":1,"x":539.9999542236328,"y":458.55649971961975,"z":"a52bb8fe.adb788","wires":[["49ee296a.51dd08"]]},{"id":"49ee296a.51dd08","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":721.6665725708008,"y":457.8898298740387,"z":"a52bb8fe.adb788","wires":[["37762b01.3309d4"]]},{"id":"37762b01.3309d4","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=\"'Could not find VNF ' + $vnf-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'\" />\n","comments":"","x":888.3332595825195,"y":457.5564558506012,"z":"a52bb8fe.adb788","wires":[]},{"id":"f92bbe0f.41a0d","type":"set","name":"copy ONAP model information","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.'\n  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.`' />\n","comments":"","x":1287.3213272094727,"y":1053.6786460876465,"z":"a52bb8fe.adb788","wires":[]},{"id":"1842bbb2.3f45e4","type":"set","name":"set vnf-level-oper-status to Created","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n","comments":"","x":1299.9168014526367,"y":1103.473310470581,"z":"a52bb8fe.adb788","wires":[]},{"id":"66e4e92e.0e5cb8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1607.0001220703125,"y":771.4762535095215,"z":"a52bb8fe.adb788","wires":[[]]},{"id":"f88a32.e16d55d","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1432.000156402588,"y":816.4762439727783,"z":"a52bb8fe.adb788","wires":[["f0d7f0c0.b9715"]]},{"id":"f4966ea2.08ebe","type":"get-resource","name":"get-resource VF_MODEL","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'\n  pfx='db.vf-model'>\n\n","comments":"","outputs":1,"x":1276.5834732055664,"y":981.0595569610596,"z":"a52bb8fe.adb788","wires":[["ed164bcc.8ffe08","4e821164.7d0e4"]]},{"id":"4d872d36.fe2664","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=\"`'No model found for VNF customization UUID ' + $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`\" />\n","comments":"","x":1629.6786613464355,"y":1006.1547298431396,"z":"a52bb8fe.adb788","wires":[]},{"id":"ed164bcc.8ffe08","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1464.0358619689941,"y":961.4403944015503,"z":"a52bb8fe.adb788","wires":[["4d7f7e60.5f93a"]]},{"id":"4e821164.7d0e4","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1472.607292175293,"y":1005.7261075973511,"z":"a52bb8fe.adb788","wires":[["4d872d36.fe2664"]]},{"id":"4d7f7e60.5f93a","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 reading VF_MODEL table\" />\n","comments":"","x":1629.0358619689941,"y":961.2499885559082,"z":"a52bb8fe.adb788","wires":[]},{"id":"e93ff26c.a95eb","type":"comment","name":"check removed with US622450","info":"","comments":"","x":1821.2858963012695,"y":782.428619146347,"z":"a52bb8fe.adb788","wires":[]},{"id":"713df0ac.79aeb","type":"call","name":"call self-serve-vnf-changeassign","xml":"<call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-changeassign' mode='sync' >\n","comments":"","outputs":1,"x":1036.642837524414,"y":1337.8930521011353,"z":"a52bb8fe.adb788","wires":[["8a6087f4.1886c8","f68bd7bf.4aaeb8"]]},{"id":"8a6087f4.1886c8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1262.392822265625,"y":1338.1430406570435,"z":"a52bb8fe.adb788","wires":[["6db31d59.bc5ac4"]]},{"id":"6db31d59.bc5ac4","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Encountered error performing changeassign for self-serve resources with error: '+ $error-message`\" />\n","comments":"","x":1421.9642486572266,"y":1337.7859354019165,"z":"a52bb8fe.adb788","wires":[]},{"id":"83d88b47.4d48e8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":287.14286041259766,"y":412.8571436405182,"z":"a52bb8fe.adb788","wires":[["d4c5e8f.85d7e18","1883e45.437cc1c","e783c444.749018","93ca063a.aa8398","31d5e46.5d4c41c","81386862.83ff18","15268cd3.f26f53"]]},{"id":"f68bd7bf.4aaeb8","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1268.8573150634766,"y":1383.4287576675415,"z":"a52bb8fe.adb788","wires":[["41ad583b.a267b8"]]},{"id":"41ad583b.a267b8","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":1437.4287300109863,"y":1383.0001993179321,"z":"a52bb8fe.adb788","wires":[]},{"id":"e75e31c6.759f8","type":"switchNode","name":"switch model-customization-id","xml":"<switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`'>\n","comments":"","outputs":1,"x":1291.2857284545898,"y":913.8929176330566,"z":"a52bb8fe.adb788","wires":[["76be18e5.42cbc8"]]},{"id":"76be18e5.42cbc8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1496.2857284545898,"y":913.892900466919,"z":"a52bb8fe.adb788","wires":[["8c93cdfd.d8a0a"]]},{"id":"8c93cdfd.d8a0a","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-information.onap-model-information.model-customization-uuid is a required input\" />\n","comments":"","x":1647.7142944335938,"y":913.8928985595703,"z":"a52bb8fe.adb788","wires":[]},{"id":"31f3c93b.c00b06","type":"comment","name":"model-customization-uuid validation moved from validate-vnf-input DG","info":"","comments":"","x":1425.0357284545898,"y":872.8929309844971,"z":"a52bb8fe.adb788","wires":[]},{"id":"31d5e46.5d4c41c","type":"call","name":"call self-serve-vnf-forking-logic","xml":"<call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-forking-logic' mode='sync' >\n","comments":"","outputs":1,"x":578.5713806152344,"y":684.2857723236084,"z":"a52bb8fe.adb788","wires":[[]]},{"id":"81386862.83ff18","type":"switchNode","name":"switch ss.self-serve-flag","xml":"<switch test=\"`$ss.self-serve-flag`\">\n","comments":"","outputs":1,"x":572.7142028808594,"y":789.8572196960449,"z":"a52bb8fe.adb788","wires":[["60e43430.ed401c","1920358d.2f5cda"]]},{"id":"60e43430.ed401c","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":799.7142028808594,"y":790.2858047485352,"z":"a52bb8fe.adb788","wires":[["262a166a.7d1fda"]]},{"id":"1920358d.2f5cda","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":803.8569946289062,"y":1337.7145385742188,"z":"a52bb8fe.adb788","wires":[["713df0ac.79aeb"]]},{"id":"15268cd3.f26f53","type":"get-resource","name":"get-resource VF_MODEL","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODEL WHERE customization_uuid = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'\n  pfx='db.vf-model'>\n\n","comments":"","outputs":1,"x":564.1428527832031,"y":578.5714359283447,"z":"a52bb8fe.adb788","wires":[["4c8c944d.055d7c","75caadc7.5e0494"]]},{"id":"7805a43c.ee725c","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=\"`'No model found for VNF customization UUID ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid`\" />\n","comments":"","x":964.999885559082,"y":601.9999370574951,"z":"a52bb8fe.adb788","wires":[]},{"id":"4c8c944d.055d7c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":786.2142562866211,"y":557.5237483978271,"z":"a52bb8fe.adb788","wires":[["e499924e.025d2"]]},{"id":"75caadc7.5e0494","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":794.7856864929199,"y":601.8094615936279,"z":"a52bb8fe.adb788","wires":[["7805a43c.ee725c"]]},{"id":"e499924e.025d2","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 reading VF_MODEL table\" />\n","comments":"","x":964.3570861816406,"y":557.0951957702637,"z":"a52bb8fe.adb788","wires":[]},{"id":"50618ca.12b8274","type":"comment","name":"Query is needed by forking logic","info":"","comments":"","x":584.2857055664062,"y":532.8572034835815,"z":"a52bb8fe.adb788","wires":[]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-deactivate.json
new file mode 100644
index 0000000..56f4976
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-deactivate.json
@@ -0,0 +1 @@
+[{"id":"b1c903a2.01c0c","type":"dgstart","name":"DGSTART","outputs":1,"x":133.3333282470703,"y":87.4136552810669,"z":"7772601e.b7e81","wires":[["fca3e9b5.fe1c38"]]},{"id":"fca3e9b5.fe1c38","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":247.61903381347656,"y":127.65176677703857,"z":"7772601e.b7e81","wires":[["24b0f652.f8130a"]]},{"id":"24b0f652.f8130a","type":"method","name":"method vnf-topology-operation-deactivate","xml":"<method rpc='vnf-topology-operation-deactivate' mode='sync'>\n","comments":"","outputs":1,"x":233.76195526123047,"y":167.4136552810669,"z":"7772601e.b7e81","wires":[["4e5ae64b.983e88"]]},{"id":"3113ba0d.9de336","type":"comment","name":"vnf-topology-operation-deactivate","info":"","comments":"","x":527.6781845092773,"y":34.999999046325684,"z":"7772601e.b7e81","wires":[]},{"id":"a51e0bc6.040218","type":"switchNode","name":"switch request-action","xml":"<switch test='`$vnf-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":536.8571395874023,"y":266.2707929611206,"z":"7772601e.b7e81","wires":[["8824484e.bd9f78","614f1708.c94548"]]},{"id":"8824484e.bd9f78","type":"outcome","name":"DeleteVnfInstance","xml":"<outcome value='DeleteVnfInstance'>\n","comments":"","outputs":1,"x":763.5714149475098,"y":241.74700927734375,"z":"7772601e.b7e81","wires":[["55807eef.4a133"]]},{"id":"614f1708.c94548","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":727.5713806152344,"y":287.4613370895386,"z":"7772601e.b7e81","wires":[["923ee138.5c82b"]]},{"id":"55807eef.4a133","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":950.4285430908203,"y":241.74703884124756,"z":"7772601e.b7e81","wires":[[]]},{"id":"923ee138.5c82b","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=\"If svc-action is 'deactivate' then request-action must be 'DeleteVnfInstance'\" />\n","comments":"","x":967.5713882446289,"y":287.46129512786865,"z":"7772601e.b7e81","wires":[]},{"id":"4e5ae64b.983e88","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":209.99999237060547,"y":389.0803270339966,"z":"7772601e.b7e81","wires":[["a51e0bc6.040218","1ba570ba.dad57f","e67a4e81.b8876","d051c62a.469d18","5d06866d.f68068","233d2062.bfc2e","214494b2.a8c48c","be7cc1a3.ed487"]]},{"id":"1ba570ba.dad57f","type":"switchNode","name":"switch vnf_length","xml":"<switch test='`$service-data.vnfs.vnf_length`'>\n","comments":"","outputs":1,"x":523.3333129882812,"y":335.7470188140869,"z":"7772601e.b7e81","wires":[["3cfc4722.731d38"]]},{"id":"3cfc4722.731d38","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":709.9999923706055,"y":335.0803165435791,"z":"7772601e.b7e81","wires":[["655a3c7d.581d14"]]},{"id":"655a3c7d.581d14","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":891.666618347168,"y":335.0803165435791,"z":"7772601e.b7e81","wires":[]},{"id":"e67a4e81.b8876","type":"for","name":"for each vnf","xml":"<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n","comments":"","outputs":1,"x":504.99999237060547,"y":384.08033657073975,"z":"7772601e.b7e81","wires":[["9dd35bbb.8b60b8"]]},{"id":"9dd35bbb.8b60b8","type":"switchNode","name":"switch this vnf-id == input vnf-id","xml":"<switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`'>\n","comments":"","outputs":1,"x":760.0000801086426,"y":382.74700450897217,"z":"7772601e.b7e81","wires":[["12c9d6c4.8a6149"]]},{"id":"12c9d6c4.8a6149","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":998.333366394043,"y":381.7469825744629,"z":"7772601e.b7e81","wires":[["41a6dedb.99bf6"]]},{"id":"41a6dedb.99bf6","type":"set","name":"set vnf-index","xml":"<set>\n<parameter name='vnf-index' value='`$idx`' />\n","comments":"","x":1166.666561126709,"y":381.74700450897217,"z":"7772601e.b7e81","wires":[]},{"id":"d051c62a.469d18","type":"switchNode","name":"switch vnf-index","xml":"<switch test='`$vnf-index`'>\n","comments":"","outputs":1,"x":516.6666488647461,"y":430.74700593948364,"z":"7772601e.b7e81","wires":[["5895cda9.4c46c4"]]},{"id":"5895cda9.4c46c4","type":"other","name":"NULL","xml":"<outcome value=''>\n","comments":"","outputs":1,"x":698.3332748413086,"y":430.08033657073975,"z":"7772601e.b7e81","wires":[["157f10d.32798ef"]]},{"id":"157f10d.32798ef","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=\"'Could not find VNF ' + $vnf-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'\" />\n","comments":"","x":864.9999618530273,"y":429.74696254730225,"z":"7772601e.b7e81","wires":[]},{"id":"5d06866d.f68068","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":509.9999771118164,"y":650.746994972229,"z":"7772601e.b7e81","wires":[]},{"id":"233d2062.bfc2e","type":"set","name":"set vnf-level-oper-status to PendingDelete","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n","comments":"","x":597.4800567626953,"y":606.4174242019653,"z":"7772601e.b7e81","wires":[]},{"id":"214494b2.a8c48c","type":"set","name":"copy input data","xml":"<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\n\n","comments":"","x":511.6665573120117,"y":564.080304145813,"z":"7772601e.b7e81","wires":[]},{"id":"eacb2416.f208b8","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=\"`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`\" />\n","comments":"","x":1063.3332710266113,"y":516.6666784286499,"z":"7772601e.b7e81","wires":[]},{"id":"8d6adc7b.83eec","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":894.3571701049805,"y":472.9524898529053,"z":"7772601e.b7e81","wires":[["527c1385.dfc04c"]]},{"id":"a6b439f3.d11f08","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":902.9286003112793,"y":517.238203048706,"z":"7772601e.b7e81","wires":[["eacb2416.f208b8"]]},{"id":"527c1385.dfc04c","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 updating generic-vnf in AAI\" />\n","comments":"","x":1066.0238647460938,"y":473.42888355255127,"z":"7772601e.b7e81","wires":[]},{"id":"be7cc1a3.ed487","type":"save","name":"update generic-vnf orch-status to PendingDelete","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n   resource=\"generic-vnf\"\n   key=\"generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id\"\n   force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"orchestration-status\" value=\"PendingDelete\" />\n","comments":"","outputs":1,"x":618.3332366943359,"y":492.6667175292969,"z":"7772601e.b7e81","wires":[["8d6adc7b.83eec","a6b439f3.d11f08"]]}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-unassign.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-unassign.json
new file mode 100644
index 0000000..72f6681
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation-unassign.json
@@ -0,0 +1,906 @@
+[

+    {

+        "id": "3bf0dc2d.c14a24",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 162.50001525878906,

+        "y": 72.41365623474121,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "b55ba40.7ee5d6"

+            ]

+        ]

+    },

+    {

+        "id": "b55ba40.7ee5d6",

+        "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": 276.7857208251953,

+        "y": 112.65176773071289,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "7d6aee59.8eda9"

+            ]

+        ]

+    },

+    {

+        "id": "7d6aee59.8eda9",

+        "type": "method",

+        "name": "method vnf-topology-operation-unassign",

+        "xml": "<method rpc='vnf-topology-operation-unassign' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 258.9286422729492,

+        "y": 152.4136562347412,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "4d74d1bc.2ae89"

+            ]

+        ]

+    },

+    {

+        "id": "6fec93f5.86db2c",

+        "type": "comment",

+        "name": "vnf-topology-operation-unassign",

+        "info": "",

+        "comments": "",

+        "x": 556.8448715209961,

+        "y": 20,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "9aaca2e2.beb78",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vnf-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 509.77383041381836,

+        "y": 240.02079010009766,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "abd8c261.c46b3",

+                "d2221c3e.90c3f"

+            ]

+        ]

+    },

+    {

+        "id": "abd8c261.c46b3",

+        "type": "outcome",

+        "name": "DeleteVnfInstance",

+        "xml": "<outcome value='DeleteVnfInstance'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 730.1547660827637,

+        "y": 215.49699878692627,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "a6409d9.036606"

+            ]

+        ]

+    },

+    {

+        "id": "d2221c3e.90c3f",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 692.1547317504883,

+        "y": 261.2113265991211,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "306935db.f49bda"

+            ]

+        ]

+    },

+    {

+        "id": "a6409d9.036606",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 915.0118942260742,

+        "y": 215.49702835083008,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "306935db.f49bda",

+        "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=\"If svc-action is 'deactivate' then request-action must be 'DeleteVnfInstance'\" />\n",

+        "comments": "",

+        "x": 932.1547393798828,

+        "y": 261.2112846374512,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "4d74d1bc.2ae89",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 269.58336639404297,

+        "y": 303.2470169067383,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "9aaca2e2.beb78",

+                "4345ea8f.58f384"

+            ]

+        ]

+    },

+    {

+        "id": "4345ea8f.58f384",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 498.3333206176758,

+        "y": 359.49701499938965,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "728fa904.537908",

+                "23bd57ed.5c2f68"

+            ]

+        ]

+    },

+    {

+        "id": "728fa904.537908",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 682.9166831970215,

+        "y": 308.83031368255615,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "f32a75d4.e72c28"

+            ]

+        ]

+    },

+    {

+        "id": "ea2e0eca.99875",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1021.2500038146973,

+        "y": 388.49698543548584,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "ff75cb52.105748"

+            ]

+        ]

+    },

+    {

+        "id": "ff75cb52.105748",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1276.2500915527344,

+        "y": 388.16365337371826,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "49e6f7a3.488758"

+            ]

+        ]

+    },

+    {

+        "id": "49e6f7a3.488758",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1514.5833778381348,

+        "y": 387.163631439209,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "d7731519.ea37c8"

+            ]

+        ]

+    },

+    {

+        "id": "d7731519.ea37c8",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1682.9165725708008,

+        "y": 387.16365337371826,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "59efadd9.34ff64",

+        "type": "switchNode",

+        "name": "switch vnf-index",

+        "xml": "<switch test='`$vnf-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1031.2500114440918,

+        "y": 456.16367626190186,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "4275fe83.7bd96",

+                "d296558f.79c2f8"

+            ]

+        ]

+    },

+    {

+        "id": "4275fe83.7bd96",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1214.5832862854004,

+        "y": 435.49698543548584,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "c8299496.706828"

+            ]

+        ]

+    },

+    {

+        "id": "e72eb007.b4761",

+        "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": 2001.8175811767578,

+        "y": 1314.9729461669922,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "ea9f2a97.ca1f08",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='`$vnf-index + 1`' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2601.8189582824707,

+        "y": 898.5644903182983,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "168141b9.a5a37e"

+            ]

+        ]

+    },

+    {

+        "id": "f463cdaa.41559",

+        "type": "comment",

+        "name": "Remove VNF from service data",

+        "info": "",

+        "comments": "",

+        "x": 1943.6204223632812,

+        "y": 862.3146209716797,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "97d940c.f7414c",

+        "type": "set",

+        "name": "move vnf to remove one",

+        "xml": "<set>\n<parameter name=\"service-data.vnfs.vnf[$tmpidx].\" value=\"$service-data.vnfs.vnf[$idx].\" />\n\t\n",

+        "comments": "",

+        "x": 2932.0769996643066,

+        "y": 935.9216842651367,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "9db43d1a.80b5b",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2030.5766677856445,

+        "y": 903.8940572738647,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "9205be14.b6c51",

+                "a23b009d.a038"

+            ]

+        ]

+    },

+    {

+        "id": "9205be14.b6c51",

+        "type": "outcome",

+        "name": "1",

+        "xml": "<outcome value='1'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2207.5767097473145,

+        "y": 864.5606441497803,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "80c57b23.9a7b78"

+            ]

+        ]

+    },

+    {

+        "id": "80c57b23.9a7b78",

+        "type": "set",

+        "name": "Remove vnfs",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.\" value=\"\"/>\n\n",

+        "comments": "",

+        "x": 2371.24320602417,

+        "y": 864.5607433319092,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "a23b009d.a038",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2209.100601196289,

+        "y": 945.0367832183838,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "9a322bdb.0d3758"

+            ]

+        ]

+    },

+    {

+        "id": "632aab75.bfd5f4",

+        "type": "set",

+        "name": "set new vnf length",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf_length\" value=\"`$service-data.vnfs.vnf_length - 1`\"/>\n\n\t\n",

+        "comments": "",

+        "x": 2621.373092651367,

+        "y": 1037.4774322509766,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "cc9aa5c.d39c258",

+        "type": "set",

+        "name": "Remove the last vnf in the list",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$service-data.vnfs.vnf_length - 1].\" value=\"\"/>\n\n",

+        "comments": "",

+        "x": 2657.076747894287,

+        "y": 992.5884532928467,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "9a322bdb.0d3758",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2374.909942626953,

+        "y": 948.5605640411377,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "ea9f2a97.ca1f08",

+                "cc9aa5c.d39c258",

+                "632aab75.bfd5f4"

+            ]

+        ]

+    },

+    {

+        "id": "422a0307.b6e26c",

+        "type": "switchNode",

+        "name": "switch current vf-module_length",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1405.4999160766602,

+        "y": 677.8303089141846,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "cb71008a.a8f54",

+                "281b69c0.91b136",

+                "b3e6a6da.0a0b88"

+            ]

+        ]

+    },

+    {

+        "id": "cb71008a.a8f54",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1634.1665573120117,

+        "y": 634.4969501495361,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "c599e4d6.59a018"

+            ]

+        ]

+    },

+    {

+        "id": "281b69c0.91b136",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1632.7379684448242,

+        "y": 675.9256076812744,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "c599e4d6.59a018"

+            ]

+        ]

+    },

+    {

+        "id": "c599e4d6.59a018",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1781.309482574463,

+        "y": 655.9256086349487,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b3e6a6da.0a0b88",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1632.7380180358887,

+        "y": 717.3541955947876,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "46457f5b.3ef86"

+            ]

+        ]

+    },

+    {

+        "id": "46457f5b.3ef86",

+        "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=\"Cannot delete the VNF because there are VF modules defined\" />\n",

+        "comments": "",

+        "x": 1799.8809127807617,

+        "y": 716.9255838394165,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "1b063d0f.a0a6e3",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:naming-policy-generate-name",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2149.9602127075195,

+        "y": 1258.7499952316284,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "85b7a9d.afa5c58",

+        "type": "set",

+        "name": "set variables for deleting name",

+        "xml": "<set>\n<parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />\n<parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='naming-policy-generate-name-input.action' value='DELETE' />\n",

+        "comments": "",

+        "x": 2051.388832092285,

+        "y": 1211.60706615448,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "f601bfcd.e4487",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1765.6427841186523,

+        "y": 1094.7024116516113,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "9db43d1a.80b5b",

+                "85b7a9d.afa5c58",

+                "1b063d0f.a0a6e3",

+                "e72eb007.b4761"

+            ]

+        ]

+    },

+    {

+        "id": "9f240acf.f10968",

+        "type": "call",

+        "name": "call self-serve-vnf-forking-logic",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-forking-logic' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1389.7857284545898,

+        "y": 904.7023048400879,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c939b04c.c627d",

+        "type": "switchNode",

+        "name": "switch ss.self-serve-flag",

+        "xml": "<switch test=\"`$ss.self-serve-flag`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1372.4999465942383,

+        "y": 1094.5594997406006,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "7a49c72e.1fe9c8",

+                "ecc5218b.461db"

+            ]

+        ]

+    },

+    {

+        "id": "7a49c72e.1fe9c8",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1588.4999465942383,

+        "y": 1094.9880847930908,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "f601bfcd.e4487"

+            ]

+        ]

+    },

+    {

+        "id": "4db0d0cc.fcf23",

+        "type": "call",

+        "name": "call self-serve-vnf-unassign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-unassign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1804.214210510254,

+        "y": 1410.4166460037231,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "a8b8d4da.ba5e58",

+                "1a3f330c.4838ed"

+            ]

+        ]

+    },

+    {

+        "id": "a8b8d4da.ba5e58",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2011.9641952514648,

+        "y": 1410.6666345596313,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "58a86c05.a04eb4"

+            ]

+        ]

+    },

+    {

+        "id": "58a86c05.a04eb4",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Encountered error while unassigning self-serve resources with error: '+ $error-message`\" />\n",

+        "comments": "",

+        "x": 2177.5356216430664,

+        "y": 1410.3095293045044,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "1a3f330c.4838ed",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2016.5713691711426,

+        "y": 1461.2221689224243,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "9db43d1a.80b5b"

+            ]

+        ]

+    },

+    {

+        "id": "ecc5218b.461db",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1589.7856254577637,

+        "y": 1410.8452253341675,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "4db0d0cc.fcf23"

+            ]

+        ]

+    },

+    {

+        "id": "46619b61.b2e6d4",

+        "type": "get-resource",

+        "name": "get-resource VF_MODEL",

+        "xml": "<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODEL WHERE customization_uuid = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'\n  pfx='db.vf-model'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1376.7856369018555,

+        "y": 800.4166660308838,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "db921505.1ecab8",

+                "2ad253ad.07e3dc"

+            ]

+        ]

+    },

+    {

+        "id": "db921505.1ecab8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1601.5713348388672,

+        "y": 780.7975034713745,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "b4171d9d.62fd"

+            ]

+        ]

+    },

+    {

+        "id": "2ad253ad.07e3dc",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1610.142765045166,

+        "y": 825.0832166671753,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "6896f0e8.60f06"

+            ]

+        ]

+    },

+    {

+        "id": "c42726a5.5f0838",

+        "type": "comment",

+        "name": "Query is needed by forking logic",

+        "info": "",

+        "comments": "",

+        "x": 1353.9285202026367,

+        "y": 761.8452005386353,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "c8299496.706828",

+        "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",

+        "comments": "",

+        "x": 1371.2499885559082,

+        "y": 434.49694538116455,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "f32a75d4.e72c28",

+        "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",

+        "comments": "",

+        "x": 836.2499809265137,

+        "y": 307.83032417297363,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "23bd57ed.5c2f68",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 679.5834007263184,

+        "y": 417.83028984069824,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "c5c57fb4.bffa4"

+            ]

+        ]

+    },

+    {

+        "id": "c5c57fb4.bffa4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 837.9166374206543,

+        "y": 417.8302993774414,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "ea2e0eca.99875",

+                "59efadd9.34ff64"

+            ]

+        ]

+    },

+    {

+        "id": "5d1e4a8b.33a764",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1060.4166412353516,

+        "y": 843.2469615936279,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "422a0307.b6e26c",

+                "46619b61.b2e6d4",

+                "9f240acf.f10968",

+                "c939b04c.c627d"

+            ]

+        ]

+    },

+    {

+        "id": "d296558f.79c2f8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1211.2500839233398,

+        "y": 481.16366958618164,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "5d1e4a8b.33a764"

+            ]

+        ]

+    },

+    {

+        "id": "168141b9.a5a37e",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2738.6907691955566,

+        "y": 897.5328073501587,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            [

+                "5253081e.499f08",

+                "97d940c.f7414c",

+                "4cab7b3.6b48784"

+            ]

+        ]

+    },

+    {

+        "id": "5253081e.499f08",

+        "type": "set",

+        "name": "set tmpidx",

+        "xml": "<set>\n<parameter name=\"$tmpidx\" value=\"`$idx - 1`\"/>\n",

+        "comments": "",

+        "x": 2888.6904487609863,

+        "y": 854.1993503570557,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "4cab7b3.6b48784",

+        "type": "set",

+        "name": "erase entry at tmpidx",

+        "xml": "<set>\n<parameter name=\"service-data.vnfs.vnf[$tmpidx].\" value=\"\" />\n\t\n",

+        "comments": "",

+        "x": 2923.6903648376465,

+        "y": 895.8660793304443,

+        "z": "8bfceefc.af82b",

+        "wires": []

+    },

+    {

+        "id": "6896f0e8.60f06",

+        "type": "record",

+        "name": "record ",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"`'No model found for VNF customization UUID ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid`\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1758.4999923706055,

+        "y": 825.7500009536743,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b4171d9d.62fd",

+        "type": "record",

+        "name": "record ",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"Error reading VF_MODEL table\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1741.4999923706055,

+        "y": 780.7500009536743,

+        "z": "8bfceefc.af82b",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation.json
new file mode 100644
index 0000000..dc9de85
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_vnf-topology-operation.json
@@ -0,0 +1,1191 @@
+[

+    {

+        "id": "2f80fd18.68d7b2",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 143,

+        "y": 93.41365623474121,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "b167e74e.06e8b8"

+            ]

+        ]

+    },

+    {

+        "id": "b167e74e.06e8b8",

+        "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": 218.28570556640625,

+        "y": 133.6517677307129,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "51ced5a3.0023bc"

+            ]

+        ]

+    },

+    {

+        "id": "51ced5a3.0023bc",

+        "type": "method",

+        "name": "method vnf-topology-operation",

+        "xml": "<method rpc='vnf-topology-operation' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 211.42862701416016,

+        "y": 173.4136505126953,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "581376ca.27ca98"

+            ]

+        ]

+    },

+    {

+        "id": "2c7d4d23.7303d2",

+        "type": "comment",

+        "name": "vnf-topology-operation",

+        "info": "",

+        "comments": "",

+        "x": 537.344856262207,

+        "y": 41,

+        "z": "3a695320.6f0b9c",

+        "wires": []

+    },

+    {

+        "id": "581376ca.27ca98",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 235.16676330566406,

+        "y": 503.1071767807007,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "97ab685e.0bee08",

+                "a403694c.693328",

+                "9d92efc8.8d9dd"

+            ]

+        ]

+    },

+    {

+        "id": "97ab685e.0bee08",

+        "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": 527.6667175292969,

+        "y": 658.2712097167969,

+        "z": "3a695320.6f0b9c",

+        "wires": []

+    },

+    {

+        "id": "a403694c.693328",

+        "type": "switchNode",

+        "name": "switch svc-action",

+        "xml": "<switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 530.5714340209961,

+        "y": 501.31842041015625,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "18cb9c11.4e7cc4",

+                "1d09f34f.3f578d",

+                "c78cd2e8.79be5",

+                "aa7e294c.376318",

+                "a97cbafe.7cac98",

+                "dbf64216.490f5",

+                "1d72c7ae.622688"

+            ]

+        ]

+    },

+    {

+        "id": "18cb9c11.4e7cc4",

+        "type": "outcome",

+        "name": "assign",

+        "xml": "<outcome value='assign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 865.3809814453125,

+        "y": 328.9375305175781,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "a2f63855.285858"

+            ]

+        ]

+    },

+    {

+        "id": "1d09f34f.3f578d",

+        "type": "outcome",

+        "name": "unassign",

+        "xml": "<outcome value='unassign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 941.4287996292114,

+        "y": 1098.12828540802,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "cfcc432b.30488"

+            ]

+        ]

+    },

+    {

+        "id": "aa7e294c.376318",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 925.1430358886719,

+        "y": 1786.318512916565,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "199e650e.3f3fbb"

+            ]

+        ]

+    },

+    {

+        "id": "199e650e.3f3fbb",

+        "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": 1158.3334655761719,

+        "y": 1786.3185739517212,

+        "z": "3a695320.6f0b9c",

+        "wires": []

+    },

+    {

+        "id": "9d92efc8.8d9dd",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:validate-vnf-input",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-vnf-input' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 636.4166870117188,

+        "y": 253.79470825195312,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b843ebb5.2815d8",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vnf-topology-operation-deactivate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-deactivate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1747.857307434082,

+        "y": 1051.8423652648926,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "cfcc432b.30488",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vnf-topology-operation-unassign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-unassign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1305.5239305496216,

+        "y": 1102.842366218567,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c78cd2e8.79be5",

+        "type": "outcome",

+        "name": "deactivate",

+        "xml": "<outcome value='deactivate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 910.5238800048828,

+        "y": 837.5089950561523,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "cbf00737.e7a518"

+            ]

+        ]

+    },

+    {

+        "id": "f274bd69.d26a1",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vnf-topology-operation-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-activate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1704.666877746582,

+        "y": 711.4136543273926,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a97cbafe.7cac98",

+        "type": "outcome",

+        "name": "activate",

+        "xml": "<outcome value='activate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 873.3333129882812,

+        "y": 499.0802936553955,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "c898ef62.8e1d2"

+            ]

+        ]

+    },

+    {

+        "id": "dbf64216.490f5",

+        "type": "outcome",

+        "name": "create",

+        "xml": "<outcome value='create'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 943.0002298355103,

+        "y": 1230.4999523162842,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "c0072f79.b63d9"

+            ]

+        ]

+    },

+    {

+        "id": "1d72c7ae.622688",

+        "type": "outcome",

+        "name": "delete",

+        "xml": "<outcome value='delete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 936.0002288818359,

+        "y": 1541.4999623298645,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "19fd4172.e8d1ef"

+            ]

+        ]

+    },

+    {

+        "id": "242eeec0.003092",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vnf-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1115.0000839233398,

+        "y": 554.4999704360962,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "3a25fdb7.746092",

+                "40847b80.d6efa4",

+                "eea8d1d0.4bdc3",

+                "6d89db39.aedb84",

+                "eaaed7a1.f78188",

+                "bbf1b1a0.c8198"

+            ]

+        ]

+    },

+    {

+        "id": "40847b80.d6efa4",

+        "type": "outcome",

+        "name": "ActivateSiteInstance",

+        "xml": "<outcome value='ActivateSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1375.4763259887695,

+        "y": 476.97922134399414,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "10ae7d07.42ded3"

+            ]

+        ]

+    },

+    {

+        "id": "3a25fdb7.746092",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1348.3811111450195,

+        "y": 712.3572273254395,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "f274bd69.d26a1"

+            ]

+        ]

+    },

+    {

+        "id": "c898ef62.8e1d2",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1054.0000839233398,

+        "y": 499.4999704360962,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "242eeec0.003092"

+            ]

+        ]

+    },

+    {

+        "id": "10ae7d07.42ded3",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:site-vnf-topology-operation-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='site-vnf-topology-operation-activate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1742.000129699707,

+        "y": 479.50000381469727,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ada7056f.3de5e8",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vnf-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1173.0001983642578,

+        "y": 870.4999618530273,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "323f27da.ef8b58",

+                "eed63b9b.32ee88",

+                "7c8e3f2d.ec40e",

+                "1a7d8db.9a66c72",

+                "9378aa69.5e8c68",

+                "1c4e2957.6aa337"

+            ]

+        ]

+    },

+    {

+        "id": "eed63b9b.32ee88",

+        "type": "outcome",

+        "name": "DeactivateSiteInstance",

+        "xml": "<outcome value='DeactivateSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1416.4763946533203,

+        "y": 821.9792103767395,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "3d82b6d7.778aba"

+            ]

+        ]

+    },

+    {

+        "id": "323f27da.ef8b58",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1391.3811111450195,

+        "y": 1052.3572578430176,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "b843ebb5.2815d8"

+            ]

+        ]

+    },

+    {

+        "id": "cbf00737.e7a518",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1112.0001983642578,

+        "y": 815.4999618530273,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "ada7056f.3de5e8"

+            ]

+        ]

+    },

+    {

+        "id": "3d82b6d7.778aba",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:site-vnf-topology-operation-deactivate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='site-vnf-topology-operation-deactivate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1786.0001983642578,

+        "y": 819.4999928474426,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2f0de599.17bcda",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vnf-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1141.333625793457,

+        "y": 1317.0862617492676,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "b2ddc25f.3e0b8",

+                "b407b587.a49908",

+                "8d600b8a.4468d8",

+                "44feac5a.bafec4",

+                "75f7964e.785a28",

+                "265de382.3a352c"

+            ]

+        ]

+    },

+    {

+        "id": "b407b587.a49908",

+        "type": "outcome",

+        "name": "CreateSiteInstance",

+        "xml": "<outcome value='CreateSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1396.8101167678833,

+        "y": 1169.5655961036682,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "5de7412.21979c"

+            ]

+        ]

+    },

+    {

+        "id": "b2ddc25f.3e0b8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1363.714599609375,

+        "y": 1390.9434814453125,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "6f20c596.7e459c"

+            ]

+        ]

+    },

+    {

+        "id": "c0072f79.b63d9",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1125.3337144851685,

+        "y": 1228.0863199234009,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "2f0de599.17bcda"

+            ]

+        ]

+    },

+    {

+        "id": "5de7412.21979c",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:site-vnf-topology-operation-create",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='site-vnf-topology-operation-create' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1773.333821296692,

+        "y": 1168.0863547325134,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6f20c596.7e459c",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1504.0001754760742,

+        "y": 1391.9999046325684,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6a0fb3f8.c9afac",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vnf-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1182.000228881836,

+        "y": 1593.9999623298645,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "901892d5.11367",

+                "a18742c8.67f48",

+                "a17c5490.82e988",

+                "f32a2384.53396",

+                "74bbe07e.451bd",

+                "3b13f0b3.196eb"

+            ]

+        ]

+    },

+    {

+        "id": "a18742c8.67f48",

+        "type": "outcome",

+        "name": "DeleteSiteInstance",

+        "xml": "<outcome value='DeleteSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1422.476448059082,

+        "y": 1539.479206085205,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "9c4097de.217dd8"

+            ]

+        ]

+    },

+    {

+        "id": "901892d5.11367",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1387.381233215332,

+        "y": 1789.8574409484863,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "340c5320.cee92c"

+            ]

+        ]

+    },

+    {

+        "id": "19fd4172.e8d1ef",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1121.000228881836,

+        "y": 1538.9999623298645,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "6a0fb3f8.c9afac"

+            ]

+        ]

+    },

+    {

+        "id": "9c4097de.217dd8",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:site-vnf-topology-operation-delete",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='site-vnf-topology-operation-delete' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1795.0002517700195,

+        "y": 1536.99995803833,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "340c5320.cee92c",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1527.6668090820312,

+        "y": 1790.9138641357422,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "eea8d1d0.4bdc3",

+        "type": "outcome",

+        "name": "ActivateSDWANDeviceInstance",

+        "xml": "<outcome value='ActivateSDWANDeviceInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1406.6667556762695,

+        "y": 528.0000343322754,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "fb048089.7fb87"

+            ]

+        ]

+    },

+    {

+        "id": "fb048089.7fb87",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vnf-topology-operation-device-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-device-activate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1846.1904373168945,

+        "y": 526.5207862854004,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7c8e3f2d.ec40e",

+        "type": "outcome",

+        "name": "DeactivateSDWANDeviceInstance",

+        "xml": "<outcome value='DeactivateSDWANDeviceInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1457.666633605957,

+        "y": 869.9999890327454,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "51051061.26969"

+            ]

+        ]

+    },

+    {

+        "id": "51051061.26969",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vnf-topology-operation-device-deactivate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-device-deactivate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1914.190330505371,

+        "y": 869.520824432373,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "20880f17.cecd7",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vnf-topology-operation-wanport-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-wanport-activate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1843.666633605957,

+        "y": 566.9999732971191,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6d89db39.aedb84",

+        "type": "outcome",

+        "name": "ActivateSDWANPortInstance",

+        "xml": "<outcome value='ActivateSDWANPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1400.142951965332,

+        "y": 574.479190826416,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "20880f17.cecd7"

+            ]

+        ]

+    },

+    {

+        "id": "1a7d8db.9a66c72",

+        "type": "outcome",

+        "name": "DeactivateSDWANPortInstance",

+        "xml": "<outcome value='DeactivateSDWANPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1449.6666793823242,

+        "y": 908.3333044052124,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "c842ed89.31c14"

+            ]

+        ]

+    },

+    {

+        "id": "c842ed89.31c14",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vnf-topology-operation-wanport-deactivate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-wanport-deactivate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1924.190330505371,

+        "y": 924.854106426239,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8d600b8a.4468d8",

+        "type": "outcome",

+        "name": "CreateSDWANPortInstance",

+        "xml": "<outcome value='CreateSDWANPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1446.6670122146606,

+        "y": 1258.3334305286407,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "8825b47d.66bfb8"

+            ]

+        ]

+    },

+    {

+        "id": "8825b47d.66bfb8",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vnf-topology-operation-wanport-create",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-wanport-create' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1903.1906328201294,

+        "y": 1262.8542098999023,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a17c5490.82e988",

+        "type": "outcome",

+        "name": "DeleteSDWANPortInstance",

+        "xml": "<outcome value='DeleteSDWANPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1458.3334655761719,

+        "y": 1650.3333506584167,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "d1bea417.250ed8"

+            ]

+        ]

+    },

+    {

+        "id": "d1bea417.250ed8",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vnf-topology-operation-wanport-delete",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-wanport-delete' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1884.8571853637695,

+        "y": 1649.854206085205,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f32a2384.53396",

+        "type": "outcome",

+        "name": "DeleteSDWANDeviceInstance",

+        "xml": "<outcome value='DeleteSDWANDeviceInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1467.0316162109375,

+        "y": 1590.5312571525574,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "4c613073.dc407"

+            ]

+        ]

+    },

+    {

+        "id": "4c613073.dc407",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vnf-topology-operation-device-delete",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-device-delete' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1899.5552215576172,

+        "y": 1590.0519704818726,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "44feac5a.bafec4",

+        "type": "outcome",

+        "name": "CreateSDWANDeviceInstance",

+        "xml": "<outcome value='CreateSDWANDeviceInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1462.031361579895,

+        "y": 1214.5313940048218,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "4888fef.c349b"

+            ]

+        ]

+    },

+    {

+        "id": "4888fef.c349b",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vnf-topology-operation-device-create",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-device-create' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1918.555027961731,

+        "y": 1213.0522079467773,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "eaaed7a1.f78188",

+        "type": "outcome",

+        "name": "ActivateSDWANVpnInstance",

+        "xml": "<outcome value='ActivateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1404.2961502075195,

+        "y": 623.5770454406738,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "67b5956.58f626c"

+            ]

+        ]

+    },

+    {

+        "id": "bbf1b1a0.c8198",

+        "type": "outcome",

+        "name": "ActivateSDWANSiteInstance",

+        "xml": "<outcome value='ActivateSDWANSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1408.2961502075195,

+        "y": 666.2434883117676,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "67b5956.58f626c"

+            ]

+        ]

+    },

+    {

+        "id": "67b5956.58f626c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1679.296142578125,

+        "y": 644.2435400485992,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "296eee7e.c34542"

+            ]

+        ]

+    },

+    {

+        "id": "296eee7e.c34542",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vnf-topology-operation-vpn-site-resource-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-activate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2057.2959899902344,

+        "y": 641.5771992206573,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8ee4bce.d47a94",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vnf-topology-operation-vpn-site-resource-deactivate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-deactivate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2110.3332138061523,

+        "y": 980.3666734695435,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7c5238f2.d394e8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1713.3333053588867,

+        "y": 982.0330181121826,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "8ee4bce.d47a94"

+            ]

+        ]

+    },

+    {

+        "id": "1c4e2957.6aa337",

+        "type": "outcome",

+        "name": "DeactivateSDWANSiteInstance",

+        "xml": "<outcome value='DeactivateSDWANSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1455.3332901000977,

+        "y": 1004.0329828262329,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "7c5238f2.d394e8"

+            ]

+        ]

+    },

+    {

+        "id": "9378aa69.5e8c68",

+        "type": "outcome",

+        "name": "DeactivateSDWANVpnInstance",

+        "xml": "<outcome value='DeactivateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1449.3332595825195,

+        "y": 961.3665351867676,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "7c5238f2.d394e8"

+            ]

+        ]

+    },

+    {

+        "id": "75f7964e.785a28",

+        "type": "outcome",

+        "name": "CreateSDWANVpnInstance",

+        "xml": "<outcome value='CreateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1442.851692199707,

+        "y": 1313.0215034484863,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "d9bd0e30.34f56"

+            ]

+        ]

+    },

+    {

+        "id": "265de382.3a352c",

+        "type": "outcome",

+        "name": "CreateSDWANSiteInstance",

+        "xml": "<outcome value='CreateSDWANSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1434.8516693115234,

+        "y": 1354.687891960144,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "d9bd0e30.34f56"

+            ]

+        ]

+    },

+    {

+        "id": "d9bd0e30.34f56",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1692.8516845703125,

+        "y": 1332.6879272460938,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "8de8e467.90b458"

+            ]

+        ]

+    },

+    {

+        "id": "8de8e467.90b458",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vnf-topology-operation-vpn-site-resource-create",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-create' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2070.851531982422,

+        "y": 1330.0215864181519,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "74bbe07e.451bd",

+        "type": "outcome",

+        "name": "DeleteSDWANVpnInstance",

+        "xml": "<outcome value='DeleteSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1449.333381652832,

+        "y": 1697.36665725708,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "3c752813.4a8be8"

+            ]

+        ]

+    },

+    {

+        "id": "3b13f0b3.196eb",

+        "type": "outcome",

+        "name": "DeleteSDWANSiteInstance",

+        "xml": "<outcome value='DeleteSDWANSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1449.333381652832,

+        "y": 1738.0332221984863,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "3c752813.4a8be8"

+            ]

+        ]

+    },

+    {

+        "id": "3c752813.4a8be8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1699.3333740234375,

+        "y": 1717.0330810546875,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "489ba469.b5b07c"

+            ]

+        ]

+    },

+    {

+        "id": "489ba469.b5b07c",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vnf-topology-operation-vpn-site-resource-delete",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-delete' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2077.333221435547,

+        "y": 1714.3667402267456,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "df2a6c25.b6e3a",

+        "type": "set",

+        "name": "set skip-mdsal-update to Y",

+        "xml": "<set>\n<parameter name='skip-mdsal-update' value='Y' />\n",

+        "comments": "",

+        "x": 1298.8888816833496,

+        "y": 292.7778091430664,

+        "z": "3a695320.6f0b9c",

+        "wires": []

+    },

+    {

+        "id": "5b2c165f.6d5c88",

+        "type": "set",

+        "name": "set ack-final to 'N'",

+        "xml": "<set>\n<parameter name='ack-final' value='N' />\n",

+        "comments": "",

+        "x": 1270.6984786987305,

+        "y": 359.98305320739746,

+        "z": "3a695320.6f0b9c",

+        "wires": []

+    },

+    {

+        "id": "a2f63855.285858",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1053.6666717529297,

+        "y": 328.5555648803711,

+        "z": "3a695320.6f0b9c",

+        "wires": [

+            [

+                "df2a6c25.b6e3a",

+                "5b2c165f.6d5c88"

+            ]

+        ]

+    },

+    {

+        "id": "f5ec8f1c.ba6fb",

+        "type": "comment",

+        "name": "ack-final=N triggers Provider to call vnf-topology-operation-aysnc DG",

+        "info": "",

+        "comments": "",

+        "x": 1474.4444885253906,

+        "y": 386.66668605804443,

+        "z": "3a695320.6f0b9c",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_wan-connection-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_wan-connection-topology-operation-activate.json
new file mode 100644
index 0000000..7d5d288
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_wan-connection-topology-operation-activate.json
@@ -0,0 +1,2063 @@
+[{
+	"id": "4110cdc5.03a094",
+	"type": "dgstart",
+	"name": "DGSTART",
+	"outputs": 1,
+	"x": 169,
+	"y": 138,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["904886a7.b08018"]
+	]
+}, {
+	"id": "904886a7.b08018",
+	"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": 381.00000381469727,
+	"y": 210.0000171661377,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["4527ae0f.69568"]
+	]
+}, {
+	"id": "4527ae0f.69568",
+	"type": "method",
+	"name": "wan-connection-topology-operation-activate",
+	"xml": "<method rpc='wan-connection-topology-operation-activate' mode='sync'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 369.0001220703125,
+	"y": 298,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["63d4748f.399dec"]
+	]
+}, {
+	"id": "bb133aed.b21f18",
+	"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": 1139.000644683838,
+	"y": 387.0002143383026,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "cc6c7f5a.7e34c",
+	"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": 979.0001621246338,
+	"y": 2122.0003999471664,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "aa52cb31.40b778",
+	"type": "block",
+	"name": "general-activate-block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"comments": "",
+	"outputs": 1,
+	"x": 763.5002765655518,
+	"y": 1933.0002340078354,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["bf6ec8e6.08c4d8", "cc6c7f5a.7e34c"]
+	]
+}, {
+	"id": "4c8314e9.4920ec",
+	"type": "for",
+	"name": "for pidx..service-data.networks.network[]",
+	"xml": "<for index='pidx' start='0' end='`$service-data.networks.network_length`' >\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1245.5006942749023,
+	"y": 554.0003789663315,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["d57afc63.19108"]
+	]
+}, {
+	"id": "d57afc63.19108",
+	"type": "switchNode",
+	"name": "switch model-name",
+	"xml": "<switch test=\"`$service-data.networks.network[$pidx].network-data.network-information.onap-model-information.model-name == $network-topology-operation-input.network-information.onap-model-information.model-name`\">\n\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1598.5008506774902,
+	"y": 335.0003813505173,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["8b5b500.72af2b"]
+	]
+}, {
+	"id": "8b5b500.72af2b",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1576.7509765625,
+	"y": 386.0004543066025,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["6f1e2777.3dcac8"]
+	]
+}, {
+	"id": "6f1e2777.3dcac8",
+	"type": "set",
+	"name": "set tmp.pidx and tmp.network-input-parameters",
+	"xml": "<set>\n<parameter name='tmp.pidx' value='`$pidx`' />\n<parameter name='tmp.network.' value='`$service-data.networks.network[$pidx].`' />\n<parameter name='tmp.network-input-parameters' value='`$service-data.networks.network[$pidx].network-data.network-request-input.network-input-parameters`' />\n<parameter name='tmp.found-network-input' value='true' />",
+	"comments": "",
+	"x": 1732.3693885803223,
+	"y": 445.42916905879974,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "9dfc6949.aaeaa8",
+	"type": "set",
+	"name": "set tmp.found-network-input",
+	"xml": "<set>\n<parameter name='tmp.found-network-input' value='false' />",
+	"comments": "",
+	"x": 1170.5006370544434,
+	"y": 471.00034844875336,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "bf6ec8e6.08c4d8",
+	"type": "switchNode",
+	"name": "switch found-network-input",
+	"xml": "<switch test=\"`$found-network-input`\">\n\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1158.5003604888916,
+	"y": 1808.0004237890244,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["6d1d565f.21fe58", "95e463a6.feab9"]
+	]
+}, {
+	"id": "6d1d565f.21fe58",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1390.500452041626,
+	"y": 1852.0006221532822,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["4ed7e3bb.9434ec"]
+	]
+}, {
+	"id": "95e463a6.feab9",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1391.2503910064697,
+	"y": 1810.00051343441,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["ca1c26c0.e5e398"]
+	]
+}, {
+	"id": "ca1c26c0.e5e398",
+	"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=\"Error: Network input parameters not found\" />\n    \n",
+	"comments": "",
+	"x": 1562.2503910064697,
+	"y": 1818.000482916832,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "4ed7e3bb.9434ec",
+	"type": "block",
+	"name": "block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"outputs": 1,
+	"x": 1128.000238418579,
+	"y": 1964.0004085302353,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["bf73704a.746d9", "9605ef38.5bb42", "f609bc2c.d51d8"]
+	]
+}, {
+	"id": "bf73704a.746d9",
+	"type": "for",
+	"name": "for cidx..tmp.network.network-data.network-topology.network-parameters.network-parameter[]",
+	"xml": "<for index='cidx' start='0' end='`$tmp.network.network-data.network-topology.network-parameters.network-parameter_length`' >\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1577.000078201294,
+	"y": 2050.0002645254135,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["c73fe8e7.e22538"]
+	]
+}, {
+	"id": "cf42a640.4d0b48",
+	"type": "execute",
+	"name": "execute RestApiCallNode Create wan-connection",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$tmp.templateFileName`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + $tmp.restapiUrl`\" />\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=\"restApi-result\"/>",
+	"comments": "",
+	"outputs": 1,
+	"x": 1603.2501335144043,
+	"y": 2604.0004514455795,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["903e4526.97e3f8", "591a8fce.45987", "7a48c250.70b02c"]
+	]
+}, {
+	"id": "ca6d877a.195b68",
+	"type": "switchNode",
+	"name": "switch network-parameter-name == 'templateFileName'",
+	"xml": "<switch test=\"`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'templateFileName'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1705.2503414154053,
+	"y": 2155.000398993492,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["a93c61d6.37605"]
+	]
+}, {
+	"id": "a93c61d6.37605",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2058.2504806518555,
+	"y": 2159.0004724264145,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["a75cc1ae.64a6b"]
+	]
+}, {
+	"id": "a75cc1ae.64a6b",
+	"type": "set",
+	"name": "set tmp.templateFileName",
+	"xml": "<set>\n<parameter name='tmp.templateFileName' value='`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`' />\n<parameter name='tmp.templateFileName-found' value='true' />",
+	"comments": "",
+	"x": 2259.2505111694336,
+	"y": 2157.000473380089,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "9605ef38.5bb42",
+	"type": "set",
+	"name": "set paras flags",
+	"xml": "<set>\n<parameter name='tmp.restapiUrl-found' value='false' />\n<parameter name='tmp.restapiUser-found' value='false' />\n<parameter name='tmp.restapiPassword-found' value='false' />\n<parameter name='tmp.templateFileName-found' value='false' />\n<parameter name='tmp.thirdPartyAdaptorRpc-found' value='false' />",
+	"comments": "",
+	"x": 1364.0002460479736,
+	"y": 1965.0002616643906,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "f609bc2c.d51d8",
+	"type": "switchNode",
+	"name": "switch thirdPartyAdaptorRpc-found == 'true'",
+	"xml": "<switch test=\"`$tmp.thirdPartyAdaptorRpc-found == 'true'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1356.0000228881836,
+	"y": 2411.000196814537,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["64f1e318.370e9c", "4f71095a.31f4d8"]
+	]
+}, {
+	"id": "c73fe8e7.e22538",
+	"type": "block",
+	"name": "block",
+	"xml": "<block>\n",
+	"atomic": "false",
+	"comments": "",
+	"outputs": 1,
+	"x": 1342.000186920166,
+	"y": 2157.0001348257065,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["ca6d877a.195b68", "1ec8b52c.6e317b", "c5f7cd02.474b9", "e797233f.75da4"]
+	]
+}, {
+	"id": "64f1e318.370e9c",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1618.00004196167,
+	"y": 2373.000133872032,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["f11a7e2d.52e71"]
+	]
+}, {
+	"id": "4f71095a.31f4d8",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1618.9999923706055,
+	"y": 2439.0000985860825,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["21a5fcf7.8dd1d4"]
+	]
+}, {
+	"id": "f11a7e2d.52e71",
+	"type": "call",
+	"name": "call thirdPartyAdaptorRpc",
+	"xml": "<call module='GENERIC-RESOURCE-API' rpc='`$tmp.thirdPartyAdaptorRpc`' mode='sync' >\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1838.0000839233398,
+	"y": 2374.00019299984,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["ea575143.2c04a", "3e3c2a80.484366", "ef2e6c3b.b025c"]
+	]
+}, {
+	"id": "21a5fcf7.8dd1d4",
+	"type": "switchNode",
+	"name": "switch all-found == 'true'",
+	"xml": "<switch test=\"`$tmp.prop.thirdpartySdnc-found == 'true' and $tmp.templateFileName-found == 'true' and `$tmp.prop.restapiUrl-found == 'true'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1495.4509296417236,
+	"y": 2529.0066665410995,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["a8f8778d.f670d8", "c2737900.cc91f8"]
+	]
+}, {
+	"id": "a8f8778d.f670d8",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1746.4509143829346,
+	"y": 2527.006462454796,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["cf42a640.4d0b48"]
+	]
+}, {
+	"id": "1ec8b52c.6e317b",
+	"type": "switchNode",
+	"name": "switch network-parameter-name == 'thirdPartyAdaptorRpc'",
+	"xml": "<switch test=\"`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartyAdaptorRpc'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1698.0066108703613,
+	"y": 2245.006781935692,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["e11ec51e.979328"]
+	]
+}, {
+	"id": "e11ec51e.979328",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2031.00687789917,
+	"y": 2248.0068258047104,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["f1275be5.5262e8"]
+	]
+}, {
+	"id": "f1275be5.5262e8",
+	"type": "set",
+	"name": "set tmp.thirdPartyAdaptorRpc",
+	"xml": "<set>\n<parameter name='tmp.thirdPartyAdaptorRpc' value='`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`' />\n<parameter name='tmp.thirdPartyAdaptorRpc-found' value='true' />",
+	"comments": "",
+	"x": 2252.0067806243896,
+	"y": 2247.0068563222885,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "ef2e6c3b.b025c",
+	"type": "not-found",
+	"name": "not-found",
+	"xml": "<outcome value='not-found'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2169.006483078003,
+	"y": 2414.3398393392563,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["13e37ad5.5d2675"]
+	]
+}, {
+	"id": "3e3c2a80.484366",
+	"type": "failure",
+	"name": "failure",
+	"xml": "<outcome value='failure'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2160.0065326690674,
+	"y": 2382.839865088463,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["13e37ad5.5d2675"]
+	]
+}, {
+	"id": "ea575143.2c04a",
+	"type": "success",
+	"name": "success",
+	"xml": "<outcome value='success'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2163.75657081604,
+	"y": 2353.19696996361,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["3bbe6a1e.769726"]
+	]
+}, {
+	"id": "13e37ad5.5d2675",
+	"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 calling ' + $tmp.thirdPartyAdaptorRpc`\" />\n",
+	"comments": "",
+	"x": 2338.7565517425537,
+	"y": 2405.589983344078,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "3bbe6a1e.769726",
+	"type": "block",
+	"name": "block",
+	"xml": "<block>\n",
+	"atomic": "false",
+	"comments": "",
+	"outputs": 1,
+	"x": 2305.4125385284424,
+	"y": 2349.3891391530633,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "7a48c250.70b02c",
+	"type": "not-found",
+	"name": "not-found",
+	"xml": "<outcome value='not-found'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1933.0065574645996,
+	"y": 2639.339543700218,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["9bf7f535.c6c4f8"]
+	]
+}, {
+	"id": "591a8fce.45987",
+	"type": "failure",
+	"name": "failure",
+	"xml": "<outcome value='failure'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1924.006607055664,
+	"y": 2607.8395694494247,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["9bf7f535.c6c4f8"]
+	]
+}, {
+	"id": "903e4526.97e3f8",
+	"type": "success",
+	"name": "success",
+	"xml": "<outcome value='success'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1927.7566452026367,
+	"y": 2578.196674324572,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["d82c4ca9.ac8a4"]
+	]
+}, {
+	"id": "9bf7f535.c6c4f8",
+	"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 calling ' + $tmp.restapiUrl`\" />\n",
+	"comments": "",
+	"x": 2090.7566719055176,
+	"y": 2624.589641928673,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "d82c4ca9.ac8a4",
+	"type": "block",
+	"name": "block",
+	"xml": "<block>\n",
+	"atomic": "false",
+	"comments": "",
+	"outputs": 1,
+	"x": 2069.412612915039,
+	"y": 2574.388843514025,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "c2737900.cc91f8",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1897.6731204986572,
+	"y": 2494.450768828392,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["dce9c722.79f6a8"]
+	]
+}, {
+	"id": "dce9c722.79f6a8",
+	"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=\"Error: 3rd party controller restapiUrl not found\" />\n    \n",
+	"comments": "",
+	"x": 2068.673120498657,
+	"y": 2502.450738310814,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "63d4748f.399dec",
+	"type": "execute",
+	"name": "contains specification",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"specification\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 265.99995040893555,
+	"y": 420.00382936000824,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["22e4d943.86b1e6", "70d7e113.9c46d"]
+	]
+}, {
+	"id": "22e4d943.86b1e6",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 501.99998474121094,
+	"y": 418.00382125377655,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["7e53c447.0e30ac"]
+	]
+}, {
+	"id": "70d7e113.9c46d",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 205.00003814697266,
+	"y": 643.003994345665,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["7f4bbff1.2aaa7"]
+	]
+}, {
+	"id": "83b81c57.91ce3",
+	"type": "execute",
+	"name": "contains FC",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"FC\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 536.0000495910645,
+	"y": 727.0039228200912,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["d65ac15e.7a488", "692b6949.18efe8"]
+	]
+}, {
+	"id": "692b6949.18efe8",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 181.00002670288086,
+	"y": 1075.0039952993393,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["90f6f6ce.1e8b98"]
+	]
+}, {
+	"id": "90f6f6ce.1e8b98",
+	"type": "execute",
+	"name": "contains FD",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"FD\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 390.00001525878906,
+	"y": 1071.0039738416672,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["3bc132e.15af7ce", "432ad954.7f9258"]
+	]
+}, {
+	"id": "432ad954.7f9258",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 172.96873092651367,
+	"y": 1146.9726318120956,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["e6f20097.71282"]
+	]
+}, {
+	"id": "e6f20097.71282",
+	"type": "execute",
+	"name": "contains FcPort",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"FcPort\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 381.96872329711914,
+	"y": 1143.9726604223251,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["fc88439c.c752a", "656c931c.a8531c"]
+	]
+}, {
+	"id": "d65ac15e.7a488",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 718.0000534057617,
+	"y": 728.0039061307907,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["549906bf.9f4d38"]
+	]
+}, {
+	"id": "3bc132e.15af7ce",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 962.0001831054688,
+	"y": 1073.004160284996,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["aa52cb31.40b778"]
+	]
+}, {
+	"id": "fc88439c.c752a",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 576.968807220459,
+	"y": 1145.972692847252,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["f7dbd0fa.8d544"]
+	]
+}, {
+	"id": "656c931c.a8531c",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 134.00015258789062,
+	"y": 1388.0042766332626,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["eedd7b52.20e6b8"]
+	]
+}, {
+	"id": "eedd7b52.20e6b8",
+	"type": "block",
+	"name": "block",
+	"xml": "<block>\n",
+	"atomic": "false",
+	"comments": "",
+	"outputs": 1,
+	"x": 421.9688529968262,
+	"y": 1386.9730342626572,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["b9067871.472118"]
+	]
+}, {
+	"id": "7e53c447.0e30ac",
+	"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": 766.0273475646973,
+	"y": 414.03119599819183,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "b9067871.472118",
+	"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": 629.0274925231934,
+	"y": 1384.0314868688583,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "f7dbd0fa.8d544",
+	"type": "execute",
+	"name": "contains sitewan",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"sitewan\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 769.9963111877441,
+	"y": 1147.000280737877,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["be49f900.18cbf8", "70ee59a7.22b018"]
+	]
+}, {
+	"id": "be49f900.18cbf8",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 964.996395111084,
+	"y": 1149.0003131628036,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["aa52cb31.40b778"]
+	]
+}, {
+	"id": "70ee59a7.22b018",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 517.9962005615234,
+	"y": 1301.0001281499863,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["eedd7b52.20e6b8"]
+	]
+}, {
+	"id": "549906bf.9f4d38",
+	"type": "execute",
+	"name": "contains sotn",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"sotn\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 886.0000381469727,
+	"y": 728.003843665123,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["de1bc208.9497e", "5d7fa5e0.39608c"]
+	]
+}, {
+	"id": "de1bc208.9497e",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1091.750099182129,
+	"y": 727.003822684288,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["1cfbf782.e4af38"]
+	]
+}, {
+	"id": "5d7fa5e0.39608c",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 957.7502174377441,
+	"y": 1016.0039447546005,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["aa52cb31.40b778"]
+	]
+}, {
+	"id": "3bef5187.6137be",
+	"type": "for",
+	"name": "for sIdx..service-data.networks.network[]",
+	"xml": "<for index='sIdx' start='0' end='`$service-data.networks.network_length`' >\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2003.028076171875,
+	"y": 775.0314663648605,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["fb47335d.1f11e"]
+	]
+}, {
+	"id": "d0a23de4.adf92",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2538.0281562805176,
+	"y": 715.0316418409348,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["80c623fb.b6c43"]
+	]
+}, {
+	"id": "7a6beaa5.cc1f44",
+	"type": "set",
+	"name": "set tmp.pidx and tmp.network-input-parameters",
+	"xml": "<set>\n<parameter name='tmp.sotnFcPortList[`$sotnFcPortListLength`]' value='`$sIdx`' />",
+	"comments": "",
+	"x": 2987.6474952697754,
+	"y": 514.461019039154,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "fb47335d.1f11e",
+	"type": "execute",
+	"name": "contains sotn",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$service-data.networks.network[$sIdx].network-data.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"sotn\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2375.0280723571777,
+	"y": 716.0315235853195,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["d0a23de4.adf92"]
+	]
+}, {
+	"id": "80c623fb.b6c43",
+	"type": "execute",
+	"name": "contains FcPort",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$service-data.networks.network[$sIdx].network-data.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"FcPort\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2379.028034210205,
+	"y": 770.0317085981369,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["2083ab14.dbd904"]
+	]
+}, {
+	"id": "7f4bbff1.2aaa7",
+	"type": "block",
+	"name": "block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"outputs": 1,
+	"x": 368.0274124145508,
+	"y": 645.0312169790268,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["83b81c57.91ce3", "15bbe5c6.df494a"]
+	]
+}, {
+	"id": "15bbe5c6.df494a",
+	"type": "block",
+	"name": "find-network-data-block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"comments": "",
+	"outputs": 1,
+	"x": 643.996280670166,
+	"y": 556.6667798757553,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["bb133aed.b21f18", "9dfc6949.aaeaa8", "4c8314e9.4920ec"]
+	]
+}, {
+	"id": "2083ab14.dbd904",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2547.0279579162598,
+	"y": 767.0315483808517,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["216cec92.6dac34"]
+	]
+}, {
+	"id": "8e022176.66adc",
+	"type": "block",
+	"name": "find-sotn-fc-port-block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"comments": "",
+	"outputs": 1,
+	"x": 1575.0279846191406,
+	"y": 726.0314081907272,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["3bef5187.6137be", "a378da89.72c998"]
+	]
+}, {
+	"id": "a378da89.72c998",
+	"type": "set",
+	"name": "set sotnFcPortListLength",
+	"xml": "<set>\n<parameter name='sotnFcPortListLength' value='0' />",
+	"comments": "",
+	"x": 1944.0275421142578,
+	"y": 667.0314983129501,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "216cec92.6dac34",
+	"type": "block",
+	"name": "find-OOF-input-block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"comments": "",
+	"outputs": 1,
+	"x": 2425.5278968811035,
+	"y": 821.0314382314682,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["7a6beaa5.cc1f44", "b0957661.ae69b8"]
+	]
+}, {
+	"id": "b0957661.ae69b8",
+	"type": "for",
+	"name": "for sIdx..network-input-parameters[]",
+	"xml": "<for index='paramIdx' start='0' end='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param_length`' >\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2963.0276832580566,
+	"y": 566.0315766334534,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["384fb18d.9c07de"]
+	]
+}, {
+	"id": "384fb18d.9c07de",
+	"type": "execute",
+	"name": "contains address",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paramIdx].name`\"/>\n    <parameter name=\"target\" value=\"address\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2931.5275917053223,
+	"y": 619.0314087867737,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["d4ace761.361c58"]
+	]
+}, {
+	"id": "d4ace761.361c58",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 3113.5277137756348,
+	"y": 619.0314087867737,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["a50094bb.3c1258"]
+	]
+}, {
+	"id": "1a2e9905.591de7",
+	"type": "set",
+	"name": "set sotnFcPortAddress",
+	"xml": "<set>\n<parameter name='sotnFcPortAddress' value='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paramIdx].value`' />",
+	"comments": "",
+	"x": 3171.5291748046875,
+	"y": 732.0318355560303,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "a50094bb.3c1258",
+	"type": "block",
+	"name": "get-OOF-input-block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"comments": "",
+	"outputs": 1,
+	"x": 2980.527744293213,
+	"y": 677.0315804481506,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["1a2e9905.591de7", "cc79aa24.8a6038"]
+	]
+}, {
+	"id": "80f5b219.f8df1",
+	"type": "success",
+	"name": "success",
+	"xml": "<outcome value='success'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 3196.0287895202637,
+	"y": 854.0313534736633,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["f0282542.57ca38"]
+	]
+}, {
+	"id": "cc79aa24.8a6038",
+	"type": "execute",
+	"name": "execute RestApiCallNode - get access Tp from OSS",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value=\"`$prop.oss.url + '/oss/inventory?location=' + $sotnFcPortAddress`\"/>\n    <parameter name='format' value='json' />\n    <parameter name='customHttpHeaders' value=\"X-FromAppId=MSO\" />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"temp.oss.accessTPs\" />\n\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 3293.0277137756348,
+	"y": 791.0312867164612,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["80f5b219.f8df1"]
+	]
+}, {
+	"id": "f0282542.57ca38",
+	"type": "switchNode",
+	"name": "switch temp.oss.accessTPs_length",
+	"xml": "<switch test=\"`$temp.oss.accessTPs_length`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 3492.0278968811035,
+	"y": 853.0312638282776,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["ede2d42a.5771f8"]
+	]
+}, {
+	"id": "ede2d42a.5771f8",
+	"type": "other",
+	"name": "other",
+	"xml": "<outcome value='Other'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 3756.529167175293,
+	"y": 852.0315408706665,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["d976a313.c6a78"]
+	]
+}, {
+	"id": "41b6b534.71089c",
+	"type": "set",
+	"name": "set temp.accessTPs_length",
+	"xml": "<set>\n<parameter name='temp.accessTPs_length' value='`$temp.accessTPs_length + $temp.oss.accessTPs_length`' />\n\n",
+	"comments": "",
+	"x": 3702.028793334961,
+	"y": 1118.027702331543,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "d976a313.c6a78",
+	"type": "block",
+	"name": "copy-accessTPs-block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"comments": "",
+	"outputs": 1,
+	"x": 3356.7771606445312,
+	"y": 941.0269641876221,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["41b6b534.71089c", "48fbd792.d1dde8", "d9a2823e.d5af7"]
+	]
+}, {
+	"id": "48fbd792.d1dde8",
+	"type": "switchNode",
+	"name": "switch temp.accessTPs_length",
+	"xml": "<switch test='`$temp.accessTPs_length`'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 3740.527114868164,
+	"y": 943.026801109314,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["51d201e6.7878", "89eda55d.e07398"]
+	]
+}, {
+	"id": "51d201e6.7878",
+	"type": "other",
+	"name": "Null",
+	"xml": "<outcome value=''>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 3966.5269660949707,
+	"y": 918.0267286300659,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["6bb067c5.523958"]
+	]
+}, {
+	"id": "6bb067c5.523958",
+	"type": "set",
+	"name": "set tp_length",
+	"xml": "<set>\n<parameter name='tp_length' value='0' />",
+	"comments": "",
+	"x": 4153.026802062988,
+	"y": 916.0267343814485,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "89eda55d.e07398",
+	"type": "other",
+	"name": "other",
+	"xml": "<outcome value='Other'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 3962.5269317626953,
+	"y": 973.0267744064331,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["8294cd19.c83c6"]
+	]
+}, {
+	"id": "8294cd19.c83c6",
+	"type": "set",
+	"name": "set tp_length",
+	"xml": "<set>\n<parameter name='tp_length' value='`$temp.accessTPs_length`' />",
+	"comments": "",
+	"x": 4151.276870727539,
+	"y": 973.026759147644,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "d9a2823e.d5af7",
+	"type": "for",
+	"name": "for each existing temp.oss.accessTPs",
+	"xml": "<for index='idx' start='0' end='`$temp.oss.accessTPs_length`' >\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 3742.277557373047,
+	"y": 1041.0269060134888,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["399f37b5.ff7f58"]
+	]
+}, {
+	"id": "399f37b5.ff7f58",
+	"type": "set",
+	"name": "set temp.accessTPs",
+	"xml": "<set>\n<parameter name='`temp.accessTPs[$idx + $tp_length].`' value='`$temp.oss.accessTPs[$idx].`' />",
+	"comments": "",
+	"x": 4110.277450561523,
+	"y": 1042.0270538330078,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "1cfbf782.e4af38",
+	"type": "block",
+	"name": "block",
+	"xml": "<block>\n",
+	"atomic": "false",
+	"comments": "",
+	"outputs": 1,
+	"x": 1261.0274276733398,
+	"y": 725.0311778783798,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["8e022176.66adc", "c5278c28.6a9b9"]
+	]
+}, {
+	"id": "7dfbcd55.b6e1f4",
+	"type": "execute",
+	"name": "execute RestApiCallNode getPath from OOF",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.oof-getpath.templatefile`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.restapi.connection-oof-url`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.oof.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.oof.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"oof\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.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": 1580.5279350280762,
+	"y": 1623.0315318107605,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["5d1a513b.14b57", "7d96f5c1.96471c"]
+	]
+}, {
+	"id": "7d96f5c1.96471c",
+	"type": "failure",
+	"name": "failure",
+	"xml": "<outcome value='failure'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1909.527587890625,
+	"y": 1603.031599521637,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "5d1a513b.14b57",
+	"type": "success",
+	"name": "success",
+	"xml": "<outcome value='success'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1910.5278015136719,
+	"y": 1654.031508922577,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["4f670fd0.408e3"]
+	]
+}, {
+	"id": "c5278c28.6a9b9",
+	"type": "switchNode",
+	"name": "switch temp.accessTPs_length",
+	"xml": "<switch test=\"`$temp.accessTPs_length >= 2`\">\n\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1642.527400970459,
+	"y": 1118.0313462018967,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["5300c3df.d2146c"]
+	]
+}, {
+	"id": "5300c3df.d2146c",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1874.0276985168457,
+	"y": 1117.0311926603317,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["9f6bbb66.0909d8"]
+	]
+}, {
+	"id": "9f6bbb66.0909d8",
+	"type": "block",
+	"name": "call-oof-block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"comments": "",
+	"outputs": 1,
+	"x": 1618.0273475646973,
+	"y": 1254.0312527418137,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["7dfbcd55.b6e1f4", "238383dd.1820ac", "98b5510e.5eab2"]
+	]
+}, {
+	"id": "238383dd.1820ac",
+	"type": "set",
+	"name": "set oof input",
+	"xml": "<set>\n<parameter name='prop.connection-attachment.access-topology-id' value='`$temp.accessTPs[0].access-topology-id`' />\n<parameter name='prop.connection-attachment.access-client-id' value='`$temp.accessTPs[0].access-client-id`' />\n<parameter name='prop.connection-attachment.access-provider-id' value='`$temp.accessTPs[0].access-provider-id`' />\n<parameter name='prop.connection-attachment.access-node-id' value='`$temp.accessTPs[0].access-node-id`' />\n<parameter name='prop.connection-attachment.access-ltp-id' value='`$temp.accessTPs[0].access-ltp-id`' />\n<parameter name='prop.remote.connection-attachment.access-topology-id' value='`$temp.accessTPs[1].access-topology-id`' />\n<parameter name='prop.remote.connection-attachment.access-client-id' value='`$temp.accessTPs[1].access-client-id`' />\n<parameter name='prop.remote.connection-attachment.access-provider-id' value='`$temp.accessTPs[1].access-provider-id`' />\n<parameter name='prop.remote.connection-attachment.access-node-id' value='`$temp.accessTPs[1].access-node-id`' />\n<parameter name='prop.remote.connection-attachment.access-ltp-id' value='`$temp.accessTPs[1].access-ltp-id`' />",
+	"comments": "",
+	"x": 2134.5274658203125,
+	"y": 1124.03125,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "973f9e55.898bc",
+	"type": "execute",
+	"name": "execute RestApiCallNode Create Sotn connectivity Service",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sotn-api-ConnectivityService.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ZTE-API-ConnectivityService:create-connectivity-service'`\" />\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=\"patch\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.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": 2633.662841796875,
+	"y": 1980.0001220703125,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["b8ecc278.863", "d2381931.d03fb8"]
+	]
+}, {
+	"id": "b8ecc278.863",
+	"type": "success",
+	"name": "success",
+	"xml": "<outcome value='success'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2971.6626586914062,
+	"y": 2010.0002055168152,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["115b43d.4df70bc"]
+	]
+}, {
+	"id": "115b43d.4df70bc",
+	"type": "block",
+	"name": "block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"comments": "",
+	"outputs": 1,
+	"x": 3119.6626586914062,
+	"y": 2008.0000834465027,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "76c2039e.b4d43c",
+	"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": 3101.6626892089844,
+	"y": 1955.0001435279846,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "d2381931.d03fb8",
+	"type": "failure",
+	"name": "failure",
+	"xml": "<outcome value='failure'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2962.66259765625,
+	"y": 1955.0001435279846,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["76c2039e.b4d43c"]
+	]
+}, {
+	"id": "4f670fd0.408e3",
+	"type": "for",
+	"name": "for vidx..oof.vpns_length[]",
+	"xml": "<for index='vidx' start='0' end='`$oof.vpns_length`' >",
+	"comments": "",
+	"outputs": 1,
+	"x": 2211.666458129883,
+	"y": 1668.5036072731018,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["a77de42e.23ccc8"]
+	]
+}, {
+	"id": "a77de42e.23ccc8",
+	"type": "block",
+	"name": "block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"outputs": 1,
+	"x": 2324.783821105957,
+	"y": 1768.3436222076416,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["b994d4aa.e334a8", "a346cd87.8c958", "973f9e55.898bc", "98ff5f9a.496c"]
+	]
+}, {
+	"id": "737c8c2f.9d62b4",
+	"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": 2966.228485107422,
+	"y": 1832.6768145561218,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "a346cd87.8c958",
+	"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 = $tmp.thirdparty-sdnc-id AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2582.7283935546875,
+	"y": 1869.6767539978027,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["f2f70c7e.0eb7b", "956c9182.85d07", "827d9dba.eac7"]
+	]
+}, {
+	"id": "f2f70c7e.0eb7b",
+	"type": "success",
+	"name": "success",
+	"xml": "<outcome value='success'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2802.728328704834,
+	"y": 1833.6767230033875,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["737c8c2f.9d62b4"]
+	]
+}, {
+	"id": "956c9182.85d07",
+	"type": "not-found",
+	"name": "not-found",
+	"xml": "<outcome value='not-found'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2812.219268798828,
+	"y": 1874.250729084015,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["83a276c3.17cb88"]
+	]
+}, {
+	"id": "827d9dba.eac7",
+	"type": "other",
+	"name": "other",
+	"xml": "<outcome value='Other'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2807.55224609375,
+	"y": 1910.5840420722961,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["652e1f35.433fe"]
+	]
+}, {
+	"id": "83a276c3.17cb88",
+	"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": 2958.7906188964844,
+	"y": 1870.5365557670593,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "652e1f35.433fe",
+	"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": 2962.3248901367188,
+	"y": 1912.023190021515,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "b994d4aa.e334a8",
+	"type": "get-resource",
+	"name": "get-resource pnf",
+	"xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"pnf\" \n\t\tkey=\"pnf.pnf-name = $oof.vpn.access-node-id \n\t\tAND depth = '0'\"\n        pfx='tmp.aai.pnf' local-only='false' >\n\n\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2528.228286743164,
+	"y": 1778.6763978004456,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["b2dfe53c.d58c88", "5fb7b767.4ddd98", "86ac5eca.1f9de"]
+	]
+}, {
+	"id": "b2dfe53c.d58c88",
+	"type": "success",
+	"name": "success",
+	"xml": "<outcome value='success'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2710.2283325195312,
+	"y": 1723.676507949829,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["4c6bb0cf.7a8d"]
+	]
+}, {
+	"id": "5fb7b767.4ddd98",
+	"type": "not-found",
+	"name": "not-found",
+	"xml": "<outcome value='not-found'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2710.7192344665527,
+	"y": 1761.2506046295166,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["caf5934b.a4349"]
+	]
+}, {
+	"id": "86ac5eca.1f9de",
+	"type": "other",
+	"name": "other",
+	"xml": "<outcome value='Other'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2702.05224609375,
+	"y": 1794.5839796066284,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["81de09fe.962e28"]
+	]
+}, {
+	"id": "caf5934b.a4349",
+	"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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-id`\" />\n\n",
+	"comments": "",
+	"x": 2858.290859222412,
+	"y": 1760.5364933013916,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "81de09fe.962e28",
+	"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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-id`\" />\n\n",
+	"comments": "",
+	"x": 2855.8248901367188,
+	"y": 1794.0231275558472,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "4c6bb0cf.7a8d",
+	"type": "set",
+	"name": "set tmp.thirdparty-sdnc-id",
+	"xml": "<set>\n<parameter name='tmp.thirdparty-sdnc-id' value=\"`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`\" />\n",
+	"comments": "",
+	"x": 2895.2283325195312,
+	"y": 1722.6766300201416,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "98ff5f9a.496c",
+	"type": "set",
+	"name": "set oof.vpn",
+	"xml": "<set>\n<parameter name='oof.vpn.' value='`$oof.vpns[$vidx].`' />",
+	"comments": "",
+	"x": 2520.2282791137695,
+	"y": 1667.7874698638916,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "c5f7cd02.474b9",
+	"type": "switchNode",
+	"name": "switch network-parameter-name == 'thirdPartySdncId'",
+	"xml": "<switch test=\"`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartySdncId'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1691.3293933868408,
+	"y": 2110.0000327825546,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["347a73c9.c2044c"]
+	]
+}, {
+	"id": "347a73c9.c2044c",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2022.5273246765137,
+	"y": 2111.0309537649155,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["1807bcd9.cbcc63"]
+	]
+}, {
+	"id": "1807bcd9.cbcc63",
+	"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 = `$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value` AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2287.528263092041,
+	"y": 2109.0309537649155,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["d9323612.7d0628", "cd1ef5fe.d66f28", "d826bc61.a3061"]
+	]
+}, {
+	"id": "d9323612.7d0628",
+	"type": "success",
+	"name": "success",
+	"xml": "<outcome value='success'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2549.5280685424805,
+	"y": 2053.030765891075,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["a93b1e0d.a35c7"]
+	]
+}, {
+	"id": "a93b1e0d.a35c7",
+	"type": "set",
+	"name": "set controller data",
+	"xml": "<set>\n<parameter name='prop.thirdpartySdnc-found' value='true' />\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": 2747.0281295776367,
+	"y": 2041.0307658910751,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "cd1ef5fe.d66f28",
+	"type": "not-found",
+	"name": "not-found",
+	"xml": "<outcome value='not-found'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2581.0189323425293,
+	"y": 2101.604869246483,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["1e56373b.ddb279"]
+	]
+}, {
+	"id": "d826bc61.a3061",
+	"type": "other",
+	"name": "other",
+	"xml": "<outcome value='Other'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2576.3519401550293,
+	"y": 2142.938182234764,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["1e56373b.ddb279"]
+	]
+}, {
+	"id": "1e56373b.ddb279",
+	"type": "set",
+	"name": "set controller data",
+	"xml": "<set>\n<parameter name='prop.thirdpartySdnc-found' value='false' />\n",
+	"comments": "",
+	"x": 2788.0273475646973,
+	"y": 2120.030951857567,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "e797233f.75da4",
+	"type": "switchNode",
+	"name": "switch network-parameter-name == 'restapiUrl'",
+	"xml": "<switch test=\"`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUrl'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1664.5272064208984,
+	"y": 2202.0308336019516,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["c250bfe5.c7f1f"]
+	]
+}, {
+	"id": "c250bfe5.c7f1f",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2006.5273170471191,
+	"y": 2200.0309566259384,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["666e08da.034568"]
+	]
+}, {
+	"id": "666e08da.034568",
+	"type": "set",
+	"name": "set tmp.templateFileName",
+	"xml": "<set>\n<parameter name='tmp.restapiUrl' value='`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`' />\n<parameter name='tmp.restapiUrl-found' value='true' />",
+	"comments": "",
+	"x": 2250.527395248413,
+	"y": 2204.0310262441635,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "75fcb157.b9b59",
+	"type": "block",
+	"name": "block",
+	"xml": "<block>\n",
+	"atomic": "false",
+	"comments": "",
+	"outputs": 1,
+	"x": 2379,
+	"y": 1248,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["5b14048f.12553c", "52b16544.03c78c", "38c987e8.484a28", "32addcf6.c66764", "ece3ef52.4cd9", "ae270f1d.ffa9c", "7f091c79.e46444", "309988b6.7920e8", "8517e005.7b636", "80955454.533fe8"]
+	]
+}, {
+	"id": "5b14048f.12553c",
+	"type": "switchNode",
+	"name": "switch name",
+	"xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'name'`\">",
+	"comments": "",
+	"outputs": 1,
+	"x": 2600.9999465942383,
+	"y": 1046.0000805854797,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["fe000a36.fbe0e8"]
+	]
+}, {
+	"id": "fe000a36.fbe0e8",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2787.9999465942383,
+	"y": 1042.0000805854797,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["ade8c214.0be56"]
+	]
+}, {
+	"id": "ade8c214.0be56",
+	"type": "set",
+	"name": "set name",
+	"xml": "<set>\n<parameter name='template.name' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+	"comments": "",
+	"x": 2955.9999465942383,
+	"y": 1042.6000866889954,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "52b16544.03c78c",
+	"type": "switchNode",
+	"name": "switch service-type",
+	"xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'service-type'`\">",
+	"comments": "",
+	"outputs": 1,
+	"x": 2618.510139465332,
+	"y": 1107.0000205039978,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["b7d5221e.05258"]
+	]
+}, {
+	"id": "b7d5221e.05258",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2805.510139465332,
+	"y": 1103.0000205039978,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["f4d03bdc.ad8be8"]
+	]
+}, {
+	"id": "f4d03bdc.ad8be8",
+	"type": "set",
+	"name": "set service-type",
+	"xml": "<set>\n<parameter name='template.service-type' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+	"comments": "",
+	"x": 2973.510139465332,
+	"y": 1103.6000266075134,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "38c987e8.484a28",
+	"type": "switchNode",
+	"name": "switch total-size",
+	"xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'total-size'`\">",
+	"comments": "",
+	"outputs": 1,
+	"x": 2611.9727172851562,
+	"y": 1163.472821712494,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["ce8d2ecf.cebcb"]
+	]
+}, {
+	"id": "ce8d2ecf.cebcb",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2798.9727172851562,
+	"y": 1159.472821712494,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["79bc31d0.6049b"]
+	]
+}, {
+	"id": "79bc31d0.6049b",
+	"type": "set",
+	"name": "set total-size",
+	"xml": "<set>\n<parameter name='template.total-size' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+	"comments": "",
+	"x": 2966.9727172851562,
+	"y": 1160.0728278160095,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "32addcf6.c66764",
+	"type": "switchNode",
+	"name": "switch pir",
+	"xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'pir'`\">",
+	"comments": "",
+	"outputs": 1,
+	"x": 2589.972816467285,
+	"y": 1212.4728608131409,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["ac264859.78f2c8"]
+	]
+}, {
+	"id": "ac264859.78f2c8",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2776.972816467285,
+	"y": 1208.4728608131409,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["69a60419.09575c"]
+	]
+}, {
+	"id": "69a60419.09575c",
+	"type": "set",
+	"name": "set pir",
+	"xml": "<set>\n<parameter name='template.pir' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+	"comments": "",
+	"x": 2944.972816467285,
+	"y": 1209.0728669166565,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "ece3ef52.4cd9",
+	"type": "switchNode",
+	"name": "switch cbs",
+	"xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'cbs'`\">",
+	"comments": "",
+	"outputs": 1,
+	"x": 2590.9728507995605,
+	"y": 1263.4727854728699,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["2bbf7850.c2a418"]
+	]
+}, {
+	"id": "2bbf7850.c2a418",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2777.9728507995605,
+	"y": 1259.4727854728699,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["221a9fbe.0b7a2"]
+	]
+}, {
+	"id": "221a9fbe.0b7a2",
+	"type": "set",
+	"name": "set cbs",
+	"xml": "<set>\n<parameter name='template.cbs' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+	"comments": "",
+	"x": 2945.9728507995605,
+	"y": 1260.0727915763855,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "ae270f1d.ffa9c",
+	"type": "switchNode",
+	"name": "switch pbs",
+	"xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'pbs'`\">",
+	"comments": "",
+	"outputs": 1,
+	"x": 2586.9728507995605,
+	"y": 1318.4727854728699,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["3aa18960.21df06"]
+	]
+}, {
+	"id": "3aa18960.21df06",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2773.9728507995605,
+	"y": 1314.4727854728699,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["f2dc9f13.63071"]
+	]
+}, {
+	"id": "f2dc9f13.63071",
+	"type": "set",
+	"name": "set pbs",
+	"xml": "<set>\n<parameter name='template.pbs' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+	"comments": "",
+	"x": 2941.9728507995605,
+	"y": 1315.0727915763855,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "7f091c79.e46444",
+	"type": "switchNode",
+	"name": "switch couplingFlag",
+	"xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'couplingFlag'`\">",
+	"comments": "",
+	"outputs": 1,
+	"x": 2616.972999572754,
+	"y": 1374.4727873802185,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["2ec96ac1.74eb56"]
+	]
+}, {
+	"id": "2ec96ac1.74eb56",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2803.972999572754,
+	"y": 1370.4727873802185,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["f23df759.89ea78"]
+	]
+}, {
+	"id": "f23df759.89ea78",
+	"type": "set",
+	"name": "set couplingFlag",
+	"xml": "<set>\n<parameter name='template.couplingFlag' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+	"comments": "",
+	"x": 2971.972999572754,
+	"y": 1371.0727934837341,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "309988b6.7920e8",
+	"type": "switchNode",
+	"name": "switch colorAware",
+	"xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'colorAware'`\">",
+	"comments": "",
+	"outputs": 1,
+	"x": 2610.972999572754,
+	"y": 1420.4727873802185,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["ff5d407a.d629a"]
+	]
+}, {
+	"id": "ff5d407a.d629a",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2797.972999572754,
+	"y": 1416.4727873802185,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["5471bae7.23b974"]
+	]
+}, {
+	"id": "5471bae7.23b974",
+	"type": "set",
+	"name": "set colorAware",
+	"xml": "<set>\n<parameter name='template.colorAware' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+	"comments": "",
+	"x": 2965.972999572754,
+	"y": 1417.0727934837341,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "80955454.533fe8",
+	"type": "switchNode",
+	"name": "switch diversity-policy",
+	"xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'diversity-policy'`\">",
+	"comments": "",
+	"outputs": 1,
+	"x": 2618.9732398986816,
+	"y": 1511.472852230072,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["394315e7.68ab3a"]
+	]
+}, {
+	"id": "394315e7.68ab3a",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2805.9732398986816,
+	"y": 1507.472852230072,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["c01e5816.98fe98"]
+	]
+}, {
+	"id": "c01e5816.98fe98",
+	"type": "set",
+	"name": "set diversity-policy",
+	"xml": "<set>\n<parameter name='template.diversity-policy' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+	"comments": "",
+	"x": 2973.9732398986816,
+	"y": 1508.0728583335876,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "8517e005.7b636",
+	"type": "switchNode",
+	"name": "switch route-objective-function",
+	"xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'route-objective-function'`\">",
+	"comments": "",
+	"outputs": 1,
+	"x": 2647.9731483459473,
+	"y": 1460.472852230072,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["8485067c.5ed7d8"]
+	]
+}, {
+	"id": "8485067c.5ed7d8",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2834.9731483459473,
+	"y": 1456.472852230072,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["abef4cdd.0306b"]
+	]
+}, {
+	"id": "abef4cdd.0306b",
+	"type": "set",
+	"name": "set route-objective-function",
+	"xml": "<set>\n<parameter name='template.route-objective-function' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+	"comments": "",
+	"x": 3002.9731483459473,
+	"y": 1457.0728583335876,
+	"z": "1ade981f.b4cb28",
+	"wires": []
+}, {
+	"id": "98b5510e.5eab2",
+	"type": "for",
+	"name": "for paidx..tmp.network-input-parameters.param_length[]",
+	"xml": "<for index='paidx' start='0' end='`$tmp.network-input-parameters.param_length`' >",
+	"comments": "",
+	"outputs": 1,
+	"x": 2099.1355361938477,
+	"y": 1378.468924999237,
+	"z": "1ade981f.b4cb28",
+	"wires": [
+		["75fcb157.b9b59"]
+	]
+}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_wan-connection-topology-operation-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_wan-connection-topology-operation-create.json
new file mode 100644
index 0000000..af4fe12
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_wan-connection-topology-operation-create.json
@@ -0,0 +1,731 @@
+[{
+	"id": "9bc8cf3.24e913",
+	"type": "dgstart",
+	"name": "DGSTART",
+	"outputs": 1,
+	"x": 124.03125762939453,
+	"y": 64.03125,
+	"z": "466fb936.055828",
+	"wires": [
+		["c0dae51b.1b6228"]
+	]
+}, {
+	"id": "c0dae51b.1b6228",
+	"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": 336.0312614440918,
+	"y": 136.0312671661377,
+	"z": "466fb936.055828",
+	"wires": [
+		["4ad4cfdc.2f406"]
+	]
+}, {
+	"id": "4ad4cfdc.2f406",
+	"type": "method",
+	"name": "wan-connection-topology-operation-create",
+	"xml": "<method rpc='wan-connection-topology-operation-create' mode='sync'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 324.03137969970703,
+	"y": 224.03125,
+	"z": "466fb936.055828",
+	"wires": [
+		["80ed299a.78d1a8"]
+	]
+}, {
+	"id": "a0a6d830.765c48",
+	"type": "execute",
+	"name": "contains specification",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"specification\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 520.0625419616699,
+	"y": 402.06254720687866,
+	"z": "466fb936.055828",
+	"wires": [
+		["497f3002.ebfe1", "35a373ce.24801c"]
+	]
+}, {
+	"id": "a2f84cee.b0617",
+	"type": "execute",
+	"name": "contains FC",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"FC\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 516.062629699707,
+	"y": 569.0626125335693,
+	"z": "466fb936.055828",
+	"wires": [
+		["2029e6ab.86d56a", "93c62735.b84128"]
+	]
+}, {
+	"id": "eec3001f.630de",
+	"type": "execute",
+	"name": "contains FD",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"FD\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 515.0625495910645,
+	"y": 646.062563419342,
+	"z": "466fb936.055828",
+	"wires": [
+		["2e6936ec.48046a", "7376171f.8378c8"]
+	]
+}, {
+	"id": "497f3002.ebfe1",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 756.0625762939453,
+	"y": 400.062539100647,
+	"z": "466fb936.055828",
+	"wires": [
+		["c8daa82e.9fce08"]
+	]
+}, {
+	"id": "35a373ce.24801c",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 311.06261825561523,
+	"y": 569.0626125335693,
+	"z": "466fb936.055828",
+	"wires": [
+		["a2f84cee.b0617"]
+	]
+}, {
+	"id": "2029e6ab.86d56a",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 698.0626335144043,
+	"y": 570.0625958442688,
+	"z": "466fb936.055828",
+	"wires": [
+		["6ba5fffc.f4ad7"]
+	]
+}, {
+	"id": "2e6936ec.48046a",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 710.0626335144043,
+	"y": 648.0625958442688,
+	"z": "466fb936.055828",
+	"wires": [
+		["6ba5fffc.f4ad7"]
+	]
+}, {
+	"id": "93c62735.b84128",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 306.06256103515625,
+	"y": 650.0625848770142,
+	"z": "466fb936.055828",
+	"wires": [
+		["eec3001f.630de"]
+	]
+}, {
+	"id": "9a8815be.418328",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 287.0626792907715,
+	"y": 825.062798500061,
+	"z": "466fb936.055828",
+	"wires": [
+		["f3f6e1a2.fe953"]
+	]
+}, {
+	"id": "4d6d15f8.1b9b4c",
+	"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": 515.0313491821289,
+	"y": 344.0312690734863,
+	"z": "466fb936.055828",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "80ed299a.78d1a8",
+	"type": "block",
+	"name": "block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"outputs": 1,
+	"x": 230.0312728881836,
+	"y": 324.03124618530273,
+	"z": "466fb936.055828",
+	"wires": [
+		["4d6d15f8.1b9b4c", "a0a6d830.765c48", "8812e145.1ac5", "41f333f8.6ba35c"]
+	]
+}, {
+	"id": "8812e145.1ac5",
+	"type": "switchNode",
+	"name": "switch network-id",
+	"xml": "<switch test='`$network-topology-operation-input.network-information.network-id`'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 515.0312805175781,
+	"y": 282.03125953674316,
+	"z": "466fb936.055828",
+	"wires": [
+		["5f790529.705d5c", "7efb546.7f035ac"]
+	]
+}, {
+	"id": "5f790529.705d5c",
+	"type": "outcome",
+	"name": "NULL",
+	"xml": "<outcome value=''>",
+	"comments": "",
+	"outputs": 1,
+	"x": 764.0313568115234,
+	"y": 221.03125953674316,
+	"z": "466fb936.055828",
+	"wires": [
+		["1ac38277.051efe"]
+	]
+}, {
+	"id": "1ac38277.051efe",
+	"type": "execute",
+	"name": "generate tmp.ar.allotted-resource-id",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"network-topology-operation-input.network-information.network-id\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1024.0314407348633,
+	"y": 224.03128719329834,
+	"z": "466fb936.055828",
+	"wires": [
+		["98d0b4b2.0b3c38"]
+	]
+}, {
+	"id": "98d0b4b2.0b3c38",
+	"type": "failure",
+	"name": "failure",
+	"xml": "<outcome value='failure'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1289.0314102172852,
+	"y": 228.03125476837158,
+	"z": "466fb936.055828",
+	"wires": [
+		["c0709980.ccdd88"]
+	]
+}, {
+	"id": "c0709980.ccdd88",
+	"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 generation allotted resource ID\" />\n",
+	"comments": "",
+	"x": 1455.031364440918,
+	"y": 228.03126907348633,
+	"z": "466fb936.055828",
+	"wires": []
+}, {
+	"id": "7efb546.7f035ac",
+	"type": "other",
+	"name": "other",
+	"xml": "<outcome value='Other'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 761.5312538146973,
+	"y": 269.03125381469727,
+	"z": "466fb936.055828",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "41f333f8.6ba35c",
+	"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": 391.0313262939453,
+	"y": 963.031286239624,
+	"z": "466fb936.055828",
+	"wires": []
+}, {
+	"id": "f3f6e1a2.fe953",
+	"type": "block",
+	"name": "block",
+	"xml": "<block>\n",
+	"atomic": "false",
+	"comments": "",
+	"outputs": 1,
+	"x": 479.0313606262207,
+	"y": 826.0314350128174,
+	"z": "466fb936.055828",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "c8daa82e.9fce08",
+	"type": "block",
+	"name": "save-specification-block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"comments": "",
+	"outputs": 1,
+	"x": 979.0312728881836,
+	"y": 399.0351710319519,
+	"z": "466fb936.055828",
+	"wires": [
+		["6bc05eb3.30cd7", "57cf6e7.812929"]
+	]
+}, {
+	"id": "6ba5fffc.f4ad7",
+	"type": "block",
+	"name": "find-specifications-block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"comments": "",
+	"outputs": 1,
+	"x": 978.7812538146973,
+	"y": 602.0351667404175,
+	"z": "466fb936.055828",
+	"wires": [
+		["d0de9da2.b12a1"]
+	]
+}, {
+	"id": "d0de9da2.b12a1",
+	"type": "switchNode",
+	"name": "switch service-data.networks_length",
+	"xml": "<switch test='`$service-data.networks.network_length`'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1334.2816543579102,
+	"y": 595.0352249145508,
+	"z": "466fb936.055828",
+	"wires": [
+		["eee3aaf2.4e1838", "caad3ab3.bd09f8"]
+	]
+}, {
+	"id": "eee3aaf2.4e1838",
+	"type": "other",
+	"name": "Null",
+	"xml": "<outcome value=''>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1645.281639099121,
+	"y": 561.0352354049683,
+	"z": "466fb936.055828",
+	"wires": [
+		["65406436.592e1c"]
+	]
+}, {
+	"id": "caad3ab3.bd09f8",
+	"type": "other",
+	"name": "other",
+	"xml": "<outcome value='Other'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1359.2815399169922,
+	"y": 691.0352286999114,
+	"z": "466fb936.055828",
+	"wires": [
+		["cbf10816.ac73a8"]
+	]
+}, {
+	"id": "cbf10816.ac73a8",
+	"type": "block",
+	"name": "block",
+	"xml": "<block>\n",
+	"atomic": "false",
+	"comments": "",
+	"outputs": 1,
+	"x": 1503.638584136963,
+	"y": 690.9717406933196,
+	"z": "466fb936.055828",
+	"wires": [
+		["a9f2a6d9.fdb6e8", "7e85e3b5.a6f3bc"]
+	]
+}, {
+	"id": "65406436.592e1c",
+	"type": "set",
+	"name": "set nidx and isExist",
+	"xml": "<set>\n<parameter name='nidx' value='0' />\n<parameter name='isExist' value='false' />",
+	"comments": "",
+	"x": 1820.781593322754,
+	"y": 560.0352621371858,
+	"z": "466fb936.055828",
+	"wires": []
+}, {
+	"id": "7e85e3b5.a6f3bc",
+	"type": "set",
+	"name": "set nidx and isExist",
+	"xml": "<set>\n<parameter name='nidx' value='`$service-data.networks.network_length`' />\n<parameter name='isExist' value='false' />",
+	"comments": "",
+	"x": 1664.3372344970703,
+	"y": 649.5909099578857,
+	"z": "466fb936.055828",
+	"wires": []
+}, {
+	"id": "a9f2a6d9.fdb6e8",
+	"type": "for",
+	"name": "for each existing network",
+	"xml": "<for index='idx' start='0' end='`$nidx`' >\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1692.7656631469727,
+	"y": 702.8129920959473,
+	"z": "466fb936.055828",
+	"wires": [
+		["18c98a96.bb5695"]
+	]
+}, {
+	"id": "cddfa0c7.227f2",
+	"type": "set",
+	"name": "set nidx and isExist",
+	"xml": "<set>\n<parameter name='nidx' value='`$idx`' />\n<parameter name='isExist' value='true' />",
+	"comments": "",
+	"x": 1990.0327377319336,
+	"y": 963.0360021591187,
+	"z": "466fb936.055828",
+	"wires": []
+}, {
+	"id": "6bc05eb3.30cd7",
+	"type": "set",
+	"name": "set network in service-data",
+	"xml": "<set>\n<parameter name='service-data.networks.network[$nidx].network-id' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />\n<parameter name='service-data.networks.network_length' value='`$nidx+1`' />\n\n",
+	"comments": "",
+	"x": 1287.0312728881836,
+	"y": 520.0351710319519,
+	"z": "466fb936.055828",
+	"wires": []
+}, {
+	"id": "57cf6e7.812929",
+	"type": "switchNode",
+	"name": "switch service-data.networks_length",
+	"xml": "<switch test='`$service-data.networks.network_length`'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1312.0312576293945,
+	"y": 334.0351576805115,
+	"z": "466fb936.055828",
+	"wires": [
+		["6def6bb2.720534", "62d4e9db.968648"]
+	]
+}, {
+	"id": "6def6bb2.720534",
+	"type": "other",
+	"name": "Null",
+	"xml": "<outcome value=''>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1261.0313568115234,
+	"y": 404.03520250320435,
+	"z": "466fb936.055828",
+	"wires": [
+		["42684448.095b0c"]
+	]
+}, {
+	"id": "42684448.095b0c",
+	"type": "set",
+	"name": "set nidx",
+	"xml": "<set>\n<parameter name='nidx' value='0' />",
+	"comments": "",
+	"x": 1394.531265258789,
+	"y": 403.03520154953003,
+	"z": "466fb936.055828",
+	"wires": []
+}, {
+	"id": "62d4e9db.968648",
+	"type": "other",
+	"name": "other",
+	"xml": "<outcome value='Other'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1258.0311431884766,
+	"y": 452.03520154953003,
+	"z": "466fb936.055828",
+	"wires": [
+		["1c54c402.97ae9c"]
+	]
+}, {
+	"id": "1c54c402.97ae9c",
+	"type": "set",
+	"name": "set nidx",
+	"xml": "<set>\n<parameter name='nidx' value='`$service-data.networks.network_length`' />",
+	"comments": "",
+	"x": 1395.0870819091797,
+	"y": 448.59086656570435,
+	"z": "466fb936.055828",
+	"wires": []
+}, {
+	"id": "86478f6e.a1403",
+	"type": "set",
+	"name": "set network in service-data",
+	"xml": "<set>\n<parameter name='network-topology-operation-input.network-request-input.network-input-parameters.param_length' value='`$input_param_length + $param_length`' />\n\n",
+	"comments": "",
+	"x": 2011.5335006713867,
+	"y": 1414.0322880744934,
+	"z": "466fb936.055828",
+	"wires": []
+}, {
+	"id": "c1980d30.dbf2",
+	"type": "block",
+	"name": "copy-specifications-block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"comments": "",
+	"outputs": 1,
+	"x": 1714.2819137573242,
+	"y": 1057.0315475463867,
+	"z": "466fb936.055828",
+	"wires": [
+		["cddfa0c7.227f2", "86478f6e.a1403", "dfb04fab.ed1a7", "b30b3f22.cb27b", "a9852da1.230d4"]
+	]
+}, {
+	"id": "dfb04fab.ed1a7",
+	"type": "switchNode",
+	"name": "switch service-data.networks_length",
+	"xml": "<switch test='`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2062.031852722168,
+	"y": 1044.0314559936523,
+	"z": "466fb936.055828",
+	"wires": [
+		["d52a368d.901a78", "51e9b139.d035f"]
+	]
+}, {
+	"id": "d52a368d.901a78",
+	"type": "other",
+	"name": "Null",
+	"xml": "<outcome value=''>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2288.0317039489746,
+	"y": 1019.0313835144043,
+	"z": "466fb936.055828",
+	"wires": [
+		["3b2e0779.e087b8"]
+	]
+}, {
+	"id": "3b2e0779.e087b8",
+	"type": "set",
+	"name": "set param_length",
+	"xml": "<set>\n<parameter name='param_length' value='0' />",
+	"comments": "",
+	"x": 2474.531539916992,
+	"y": 1017.0313892657869,
+	"z": "466fb936.055828",
+	"wires": []
+}, {
+	"id": "51e9b139.d035f",
+	"type": "other",
+	"name": "other",
+	"xml": "<outcome value='Other'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2284.031669616699,
+	"y": 1074.0314292907715,
+	"z": "466fb936.055828",
+	"wires": [
+		["739fd4a6.e0fb7c"]
+	]
+}, {
+	"id": "739fd4a6.e0fb7c",
+	"type": "set",
+	"name": "set param_length",
+	"xml": "<set>\n<parameter name='param_length' value='`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`' />",
+	"comments": "",
+	"x": 2472.781608581543,
+	"y": 1074.0314140319824,
+	"z": "466fb936.055828",
+	"wires": []
+}, {
+	"id": "b30b3f22.cb27b",
+	"type": "for",
+	"name": "for each existing params",
+	"xml": "<for index='pidx' start='0' end='`$param_length`' >\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2018.7821884155273,
+	"y": 1298.0316619873047,
+	"z": "466fb936.055828",
+	"wires": [
+		["2f59a503.48761a"]
+	]
+}, {
+	"id": "113a4fa3.2b489",
+	"type": "set",
+	"name": "set input_param_length",
+	"xml": "<set>\n<parameter name='input_param_length' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' />",
+	"comments": "",
+	"x": 2495.7822265625,
+	"y": 1203.5315532684326,
+	"z": "466fb936.055828",
+	"wires": []
+}, {
+	"id": "a9852da1.230d4",
+	"type": "switchNode",
+	"name": "switch network-input-parameters_length",
+	"xml": "<switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2069.78182220459,
+	"y": 1145.5314140319824,
+	"z": "466fb936.055828",
+	"wires": [
+		["5d6fa77d.42d9d8", "45ce065b.ba7088"]
+	]
+}, {
+	"id": "45ce065b.ba7088",
+	"type": "other",
+	"name": "Null",
+	"xml": "<outcome value=''>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2303.781707763672,
+	"y": 1140.5314292907715,
+	"z": "466fb936.055828",
+	"wires": [
+		["6913f557.72833c"]
+	]
+}, {
+	"id": "5d6fa77d.42d9d8",
+	"type": "other",
+	"name": "other",
+	"xml": "<outcome value='Other'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 2302.781764984131,
+	"y": 1206.5313997268677,
+	"z": "466fb936.055828",
+	"wires": [
+		["113a4fa3.2b489"]
+	]
+}, {
+	"id": "6913f557.72833c",
+	"type": "set",
+	"name": "set input_param_length",
+	"xml": "<set>\n<parameter name='input_param_length' value='0' />",
+	"comments": "",
+	"x": 2492.7816772460938,
+	"y": 1141.5314445495605,
+	"z": "466fb936.055828",
+	"wires": []
+}, {
+	"id": "2f59a503.48761a",
+	"type": "set",
+	"name": "set specification_to_input_param",
+	"xml": "<set>\n<parameter name='network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx+$input_param_length].' value='`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx].`' />",
+	"comments": "",
+	"x": 2330.781837463379,
+	"y": 1298.0316753387451,
+	"z": "466fb936.055828",
+	"wires": []
+}, {
+	"id": "18c98a96.bb5695",
+	"type": "execute",
+	"name": "if contains specification",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`\" />\n    <parameter name=\"target\" value=\"specification\"/>\n  \n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1675.531478881836,
+	"y": 777.0313911437988,
+	"z": "466fb936.055828",
+	"wires": [
+		["888a566a.fb8378"]
+	]
+}, {
+	"id": "b2839f92.141df",
+	"type": "execute",
+	"name": "if contains model-name",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`\" />\n    <parameter name=\"target\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n  \n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1669.7812728881836,
+	"y": 834.0313153266907,
+	"z": "466fb936.055828",
+	"wires": [
+		["1aa8258a.890e3a"]
+	]
+}, {
+	"id": "888a566a.fb8378",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1866.7813625335693,
+	"y": 776.0312671661377,
+	"z": "466fb936.055828",
+	"wires": [
+		["b2839f92.141df"]
+	]
+}, {
+	"id": "1aa8258a.890e3a",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1873.0313606262207,
+	"y": 831.0313777923584,
+	"z": "466fb936.055828",
+	"wires": [
+		["c1980d30.dbf2"]
+	]
+}, {
+	"id": "1664dd11.e34933",
+	"type": "execute",
+	"name": "contains FcPort",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"FcPort\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 507.03125762939453,
+	"y": 719.03125,
+	"z": "466fb936.055828",
+	"wires": [
+		["f55cd673.6b7048", "9a8815be.418328"]
+	]
+}, {
+	"id": "f55cd673.6b7048",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 702.0313415527344,
+	"y": 721.0312824249268,
+	"z": "466fb936.055828",
+	"wires": [
+		["6ba5fffc.f4ad7"]
+	]
+}, {
+	"id": "7376171f.8378c8",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 298.03126525878906,
+	"y": 722.0312213897705,
+	"z": "466fb936.055828",
+	"wires": [
+		["1664dd11.e34933"]
+	]
+}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_wan-connection-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_wan-connection-topology-operation-deactivate.json
new file mode 100644
index 0000000..3b0b0fb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_wan-connection-topology-operation-deactivate.json
@@ -0,0 +1,890 @@
+[{
+	"id": "dc5daae1.4b2b68",
+	"type": "dgstart",
+	"name": "DGSTART",
+	"outputs": 1,
+	"x": 136.01040649414062,
+	"y": 88.01041412353516,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["f86fe308.85c13"]
+	]
+}, {
+	"id": "f86fe308.85c13",
+	"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": 348.0104103088379,
+	"y": 160.01043128967285,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["c94e70a1.1a9f8"]
+	]
+}, {
+	"id": "c94e70a1.1a9f8",
+	"type": "method",
+	"name": "wan-connection-topology-operation-deactivate",
+	"xml": "<method rpc='wan-connection-topology-operation-deactivate' mode='sync'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 336.0105285644531,
+	"y": 248.01041412353516,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["2779c46a.0d3bfc"]
+	]
+}, {
+	"id": "57a97cf3.f011a4",
+	"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": 723.0106887817383,
+	"y": 332.0104856491089,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "ea250cc1.d5382",
+	"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": 323.0104217529297,
+	"y": 1197.010627746582,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "2779c46a.0d3bfc",
+	"type": "block",
+	"name": "block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"outputs": 1,
+	"x": 248.51060485839844,
+	"y": 689.0105495452881,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["ed99019f.1977", "7dda64d7.a5a00c", "f7ff6068.4e95b", "3266b2a4.654dfe", "5f4320a1.8de1c", "57a97cf3.f011a4", "ea250cc1.d5382"]
+	]
+}, {
+	"id": "ed99019f.1977",
+	"type": "execute",
+	"name": "generate services url",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.network-provided-resource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.services-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$network-topology-operation-input.service-information.service-id`\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 709.0106735229492,
+	"y": 403.0105857849121,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "7dda64d7.a5a00c",
+	"type": "execute",
+	"name": "execute RestApiCallNode - get-resource parent service data",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.services-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-psd\" />\n\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 835.0106735229492,
+	"y": 480.0105857849121,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["1a420eef.b4ab81", "758b4d6.827c5b4"]
+	]
+}, {
+	"id": "1a420eef.b4ab81",
+	"type": "success",
+	"name": "success",
+	"xml": "<outcome value='success'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1182.010856628418,
+	"y": 431.0105857849121,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["f55029d2.253db8"]
+	]
+}, {
+	"id": "f55029d2.253db8",
+	"type": "block",
+	"name": "block",
+	"xml": "<block>\n",
+	"atomic": "false",
+	"comments": "",
+	"outputs": 1,
+	"x": 1349.0109329223633,
+	"y": 465.0106463432312,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "758b4d6.827c5b4",
+	"type": "other",
+	"name": "other",
+	"xml": "<outcome value='Other'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1187.8626289367676,
+	"y": 514.0767450332642,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["1418c003.c3bc4"]
+	]
+}, {
+	"id": "1418c003.c3bc4",
+	"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=\"Error: Parent service data not available\" />\n    \n",
+	"comments": "",
+	"x": 1358.2607803344727,
+	"y": 530.0105752944946,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "f7ff6068.4e95b",
+	"type": "for",
+	"name": "for pidx..mdsal-psd.service-data.networks.network[]",
+	"xml": "<for index='pidx' start='0' end='`$mdsal-psd.service-data.networks.network_length`' >\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 895.5107116699219,
+	"y": 631.0105295181274,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["492dcfc8.84723"]
+	]
+}, {
+	"id": "492dcfc8.84723",
+	"type": "switchNode",
+	"name": "switch model-name",
+	"xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$pidx].network-id == $network-topology-operation-input.network-information.network-id`\">\n\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 843.5106887817383,
+	"y": 708.0105800628662,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["27343179.181b8e"]
+	]
+}, {
+	"id": "27343179.181b8e",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1025.7607917785645,
+	"y": 710.0106735229492,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["63f3970f.a34118"]
+	]
+}, {
+	"id": "63f3970f.a34118",
+	"type": "block",
+	"name": "block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"outputs": 1,
+	"x": 1196.5214195251465,
+	"y": 714.867790222168,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["a56f8acd.7498b8"]
+	]
+}, {
+	"id": "a56f8acd.7498b8",
+	"type": "set",
+	"name": "set tmp.pidx and tmp.network-input-parameters",
+	"xml": "<set>\n<parameter name='tmp.pidx' value='`$pidx`' />\n<parameter name='tmp.network.' value='`$mdsal-psd.service-data.networks.network[$pidx].`' />\n<parameter name='tmp.network-input-parameters' value='`$mdsal-psd.service-data.networks.network[$pidx].network-data.network-request-input.network-input-parameters`' />\n<parameter name='tmp.found-network-input' value='true' />",
+	"comments": "",
+	"x": 1143.3788032531738,
+	"y": 788.4393863677979,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "3266b2a4.654dfe",
+	"type": "set",
+	"name": "set tmp.found-network-input",
+	"xml": "<set>\n<parameter name='tmp.found-network-input' value='false' />",
+	"comments": "",
+	"x": 777.5106582641602,
+	"y": 560.0105857849121,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "5f4320a1.8de1c",
+	"type": "switchNode",
+	"name": "switch found-network-input",
+	"xml": "<switch test=\"`$found-network-input`\">\n\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 608.5107040405273,
+	"y": 899.0107097625732,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["8d8a4cba.9e184", "b9d9fb0b.7db9b8"]
+	]
+}, {
+	"id": "8d8a4cba.9e184",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 840.5107955932617,
+	"y": 943.010908126831,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["d6f87580.2dc1d8"]
+	]
+}, {
+	"id": "b9d9fb0b.7db9b8",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 841.2607345581055,
+	"y": 901.010799407959,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["cd109ebd.9e8f9"]
+	]
+}, {
+	"id": "cd109ebd.9e8f9",
+	"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=\"Error: Network input parameters not found\" />\n    \n",
+	"comments": "",
+	"x": 1012.2607345581055,
+	"y": 909.0107688903809,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "d6f87580.2dc1d8",
+	"type": "block",
+	"name": "block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"outputs": 1,
+	"x": 578.0105819702148,
+	"y": 1055.0106945037842,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["9089330c.7c429", "f7517eb4.eccef", "c4ea6652.9fa878"]
+	]
+}, {
+	"id": "9089330c.7c429",
+	"type": "for",
+	"name": "for cidx..tmp.network.network-data.network-topology.network-parameters.network-parameter[]",
+	"xml": "<for index='cidx' start='0' end='`$tmp.network.network-data.network-topology.network-parameters.network-parameter_length`' >\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1027.0104217529297,
+	"y": 1141.0105504989624,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["91a2217e.0aa36"]
+	]
+}, {
+	"id": "44bbe120.7255",
+	"type": "switchNode",
+	"name": "switch network-parameter-name == 'restapiUrl-deactivate'",
+	"xml": "<switch test=\"`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUrl-deactivate'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1141.010482788086,
+	"y": 1211.010612487793,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["ae0bda70.be78d8"]
+	]
+}, {
+	"id": "ae0bda70.be78d8",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1414.0106048583984,
+	"y": 1210.010570526123,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["866f7c3c.d7349"]
+	]
+}, {
+	"id": "866f7c3c.d7349",
+	"type": "set",
+	"name": "set tmp.thirdparty-sdnc-url",
+	"xml": "<set>\n<parameter name='tmp.restapiUrl' value='`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`' />\n<parameter name='tmp.restapiUrl-found' value='true' />",
+	"comments": "",
+	"x": 1593.0105667114258,
+	"y": 1212.0106191635132,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "2a83ab2c.a5f774",
+	"type": "execute",
+	"name": "execute RestApiCallNode delete wan-connection",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$tmp.restapiUrl + $tmp.actualId`\" />\n<parameter name=\"restapiUser\" value=\"`$tmp.restapiUser`\" />\n<parameter name=\"restapiPassword\" value=\"`$tmp.restapiPassword`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"delete\"/>",
+	"comments": "",
+	"outputs": 1,
+	"x": 915.2604522705078,
+	"y": 1943.0111656188965,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["5eb1697e.075858", "dd1f30f9.8bae3", "bd716a80.bf8068"]
+	]
+}, {
+	"id": "9154a660.674bb8",
+	"type": "switchNode",
+	"name": "switch network-parameter-name == 'restapiUser'",
+	"xml": "<switch test=\"`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUser'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1144.2604751586914,
+	"y": 1262.0105876922607,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["dcf17939.4e7148"]
+	]
+}, {
+	"id": "dcf17939.4e7148",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1410.2605895996094,
+	"y": 1264.0106649398804,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["de64ea4d.ab18b8"]
+	]
+}, {
+	"id": "de64ea4d.ab18b8",
+	"type": "set",
+	"name": "set tmp.restapiUser",
+	"xml": "<set>\n<parameter name='tmp.restapiUser' value='`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`' />\n<parameter name='tmp.restapiUser-found' value='true' />",
+	"comments": "",
+	"x": 1611.2606201171875,
+	"y": 1262.0106658935547,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "6d3fee98.40477",
+	"type": "switchNode",
+	"name": "switch network-parameter-name == 'restapiPassword'",
+	"xml": "<switch test=\"`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiPassword'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1152.2605438232422,
+	"y": 1316.010513305664,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["e3d0d091.7555a"]
+	]
+}, {
+	"id": "e3d0d091.7555a",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1429.260555267334,
+	"y": 1314.0105457305908,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["4b4e91b6.1741a"]
+	]
+}, {
+	"id": "4b4e91b6.1741a",
+	"type": "set",
+	"name": "set tmp.restapiPassword",
+	"xml": "<set>\n<parameter name='tmp.restapiPassword' value='`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`' />\n<parameter name='tmp.restapiPassword-found' value='true' />",
+	"comments": "",
+	"x": 1630.260585784912,
+	"y": 1312.0105466842651,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "f7517eb4.eccef",
+	"type": "set",
+	"name": "set paras flags",
+	"xml": "<set>\n<parameter name='tmp.restapiUrl-found' value='false' />\n<parameter name='tmp.restapiUser-found' value='false' />\n<parameter name='tmp.restapiPassword-found' value='false' />\n<parameter name='tmp.thirdPartyAdaptorRpc-found' value='false' />\n<parameter name='tmp.actualId-found' value='false' />",
+	"comments": "",
+	"x": 814.0105895996094,
+	"y": 1056.0105476379395,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "c4ea6652.9fa878",
+	"type": "switchNode",
+	"name": "switch thirdPartyAdaptorRpc-found == 'true'",
+	"xml": "<switch test=\"`$tmp.thirdPartyAdaptorRpc-found == 'true'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 856.0104217529297,
+	"y": 1551.0105934143066,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["a1470852.fbe9a8", "44560421.b5783c"]
+	]
+}, {
+	"id": "91a2217e.0aa36",
+	"type": "block",
+	"name": "block",
+	"xml": "<block>\n",
+	"atomic": "false",
+	"comments": "",
+	"outputs": 1,
+	"x": 798.0104217529297,
+	"y": 1322.0104637145996,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["44bbe120.7255", "9154a660.674bb8", "6d3fee98.40477", "fe9a117b.1f532", "9e6c08bf.a2fe88"]
+	]
+}, {
+	"id": "a1470852.fbe9a8",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1118.010440826416,
+	"y": 1513.0105304718018,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["87499e3e.8efd7"]
+	]
+}, {
+	"id": "44560421.b5783c",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1119.0103912353516,
+	"y": 1579.010495185852,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["1d000250.ddb41e"]
+	]
+}, {
+	"id": "87499e3e.8efd7",
+	"type": "call",
+	"name": "call thirdPartyAdaptorRpc",
+	"xml": "<call module='GENERIC-RESOURCE-API' rpc='`$tmp.thirdPartyAdaptorRpc`' mode='sync' >\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1338.010482788086,
+	"y": 1514.0105895996094,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["be1c43cd.6c6d5", "36f2fa8b.9ff576", "9830e901.9d2aa8"]
+	]
+}, {
+	"id": "1d000250.ddb41e",
+	"type": "switchNode",
+	"name": "switch restapiUrl-found == 'true'",
+	"xml": "<switch test=\"`$tmp.restapiUrl-found == 'true'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 880.461311340332,
+	"y": 1663.0172395706177,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["e6d9ab3.015a858", "20fb14a8.faab2c"]
+	]
+}, {
+	"id": "e6d9ab3.015a858",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1131.461296081543,
+	"y": 1661.017035484314,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["481b171e.ab37e8"]
+	]
+}, {
+	"id": "481b171e.ab37e8",
+	"type": "switchNode",
+	"name": "switch restapiUser-found == 'true'",
+	"xml": "<switch test=\"`$tmp.restapiUser-found == 'true'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 858.4614105224609,
+	"y": 1730.2393379211426,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["3742155.0c254ea", "6f396aea.673404"]
+	]
+}, {
+	"id": "3742155.0c254ea",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1125.4613037109375,
+	"y": 1731.2390508651733,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["2df75511.30eb8a"]
+	]
+}, {
+	"id": "2df75511.30eb8a",
+	"type": "switchNode",
+	"name": "switch restapiPassword-found == 'true'",
+	"xml": "<switch test=\"`$tmp.restapiPassword-found == 'true'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 873.4613037109375,
+	"y": 1800.239260673523,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["6e3c4b77.f76d04", "79b92f2b.ec99"]
+	]
+}, {
+	"id": "6e3c4b77.f76d04",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1133.4613037109375,
+	"y": 1800.2390508651733,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["e4613219.7da05"]
+	]
+}, {
+	"id": "fe9a117b.1f532",
+	"type": "switchNode",
+	"name": "switch network-parameter-name == 'thirdPartyAdaptorRpc-deactivate'",
+	"xml": "<switch test=\"`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartyAdaptorRpc-deactivate'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1170.0169410705566,
+	"y": 1409.0168914794922,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["3b34faa8.496266"]
+	]
+}, {
+	"id": "3b34faa8.496266",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1481.0171585083008,
+	"y": 1413.0167961120605,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["89a96064.90193"]
+	]
+}, {
+	"id": "89a96064.90193",
+	"type": "set",
+	"name": "set tmp.thirdPartyAdaptorRpc",
+	"xml": "<set>\n<parameter name='tmp.thirdPartyAdaptorRpc' value='`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`' />\n<parameter name='tmp.thirdPartyAdaptorRpc-found' value='true' />",
+	"comments": "",
+	"x": 1676.0171127319336,
+	"y": 1407.0169868469238,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "9830e901.9d2aa8",
+	"type": "not-found",
+	"name": "not-found",
+	"xml": "<outcome value='not-found'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1604.0168762207031,
+	"y": 1553.3502578735352,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["e00f6454.dddf68"]
+	]
+}, {
+	"id": "36f2fa8b.9ff576",
+	"type": "failure",
+	"name": "failure",
+	"xml": "<outcome value='failure'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1595.0169258117676,
+	"y": 1521.8502836227417,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["e00f6454.dddf68"]
+	]
+}, {
+	"id": "be1c43cd.6c6d5",
+	"type": "success",
+	"name": "success",
+	"xml": "<outcome value='success'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1598.7669639587402,
+	"y": 1492.207388497889,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["6355ce7d.fb42b"]
+	]
+}, {
+	"id": "e00f6454.dddf68",
+	"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 calling ' + $tmp.thirdPartyAdaptorRpc`\" />\n",
+	"comments": "",
+	"x": 1761.766990661621,
+	"y": 1538.6003561019897,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "6355ce7d.fb42b",
+	"type": "block",
+	"name": "block",
+	"xml": "<block>\n",
+	"atomic": "false",
+	"comments": "",
+	"outputs": 1,
+	"x": 1740.4229316711426,
+	"y": 1488.3995576873422,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "bd716a80.bf8068",
+	"type": "not-found",
+	"name": "not-found",
+	"xml": "<outcome value='not-found'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1245.0168762207031,
+	"y": 1978.3502578735352,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["593817ce.8c6458"]
+	]
+}, {
+	"id": "dd1f30f9.8bae3",
+	"type": "failure",
+	"name": "failure",
+	"xml": "<outcome value='failure'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1236.0169258117676,
+	"y": 1946.8502836227417,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["593817ce.8c6458"]
+	]
+}, {
+	"id": "5eb1697e.075858",
+	"type": "success",
+	"name": "success",
+	"xml": "<outcome value='success'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1239.7669639587402,
+	"y": 1917.207388497889,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["33a4cba3.45a344"]
+	]
+}, {
+	"id": "593817ce.8c6458",
+	"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 calling ' + $tmp.restapiUrl`\" />\n",
+	"comments": "",
+	"x": 1402.766990661621,
+	"y": 1963.6003561019897,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "33a4cba3.45a344",
+	"type": "block",
+	"name": "block",
+	"xml": "<block>\n",
+	"atomic": "false",
+	"comments": "",
+	"outputs": 1,
+	"x": 1381.4229316711426,
+	"y": 1913.3995576873422,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "20fb14a8.faab2c",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1282.6835021972656,
+	"y": 1628.4613418579102,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["f5cee36d.88941"]
+	]
+}, {
+	"id": "f5cee36d.88941",
+	"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=\"Error: 3rd party controller restapiUrl not found\" />\n    \n",
+	"comments": "",
+	"x": 1453.6835021972656,
+	"y": 1636.461311340332,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "6f396aea.673404",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1287.6835021972656,
+	"y": 1707.4613418579102,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["82e86a2a.10b8e8"]
+	]
+}, {
+	"id": "82e86a2a.10b8e8",
+	"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=\"Error: 3rd party controller restapiUser not found\" />\n    \n",
+	"comments": "",
+	"x": 1458.6835021972656,
+	"y": 1715.461311340332,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "79b92f2b.ec99",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1278.6835021972656,
+	"y": 1778.4613418579102,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["2dcb87b4.9d09e8"]
+	]
+}, {
+	"id": "2dcb87b4.9d09e8",
+	"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=\"Error: 3rd party controller restapiPassword not found\" />\n    \n",
+	"comments": "",
+	"x": 1449.6835021972656,
+	"y": 1786.461311340332,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "9e6c08bf.a2fe88",
+	"type": "switchNode",
+	"name": "switch network-parameter-name == 'actualId'",
+	"xml": "<switch test=\"`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'actualId'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1156.0103759765625,
+	"y": 1364.0103759765625,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["11fcb359.0b74ed"]
+	]
+}, {
+	"id": "11fcb359.0b74ed",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1433.0103874206543,
+	"y": 1362.0104084014893,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["f5a304ff.f9aea8"]
+	]
+}, {
+	"id": "f5a304ff.f9aea8",
+	"type": "set",
+	"name": "set tmp.actualId",
+	"xml": "<set>\n<parameter name='tmp.actualId' value='`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`' />\n<parameter name='tmp.actualId-found' value='true' />",
+	"comments": "",
+	"x": 1634.0104179382324,
+	"y": 1360.0104093551636,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}, {
+	"id": "e4613219.7da05",
+	"type": "switchNode",
+	"name": "switch actualId-found == 'true'",
+	"xml": "<switch test=\"`$tmp.actualId-found == 'true'`\">\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 887.2326049804688,
+	"y": 1868.454833984375,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["572932d1.b17b3c", "c0db58a1.69dc58"]
+	]
+}, {
+	"id": "572932d1.b17b3c",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1147.2326049804688,
+	"y": 1868.4546241760254,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["2a83ab2c.a5f774"]
+	]
+}, {
+	"id": "c0db58a1.69dc58",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1292.4548034667969,
+	"y": 1846.6769151687622,
+	"z": "5f2b1b80.205544",
+	"wires": [
+		["cf40162e.095f98"]
+	]
+}, {
+	"id": "cf40162e.095f98",
+	"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=\"Error: Wan Connection actualId not found\" />\n    \n",
+	"comments": "",
+	"x": 1463.4548034667969,
+	"y": 1854.676884651184,
+	"z": "5f2b1b80.205544",
+	"wires": []
+}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_wan-connection-topology-operation-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_wan-connection-topology-operation-delete.json
new file mode 100644
index 0000000..4430f5e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_wan-connection-topology-operation-delete.json
@@ -0,0 +1,286 @@
+[{
+	"id": "c81f4d78.b1e6c",
+	"type": "dgstart",
+	"name": "DGSTART",
+	"outputs": 1,
+	"x": 100.01040649414062,
+	"y": 75.99999976158142,
+	"z": "b1682cba.152",
+	"wires": [
+		["64b261af.cf184"]
+	]
+}, {
+	"id": "64b261af.cf184",
+	"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": 312.0104103088379,
+	"y": 148.00001692771912,
+	"z": "b1682cba.152",
+	"wires": [
+		["c6b54419.3039a8"]
+	]
+}, {
+	"id": "c6b54419.3039a8",
+	"type": "method",
+	"name": "wan-connection-topology-operation-delete",
+	"xml": "<method rpc='wan-connection-topology-operation-delete' mode='sync'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 300.0105285644531,
+	"y": 235.99999976158142,
+	"z": "b1682cba.152",
+	"wires": [
+		["f3a69c11.4cac9"]
+	]
+}, {
+	"id": "140a99be.e1cda6",
+	"type": "execute",
+	"name": "contains FC",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"FC\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 467.04176330566406,
+	"y": 511.031311750412,
+	"z": "b1682cba.152",
+	"wires": [
+		["df506b8a.806268", "5d821249.e9d6cc"]
+	]
+}, {
+	"id": "54dc8604.f2ccb8",
+	"type": "execute",
+	"name": "contains FD",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"FD\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 465.04168701171875,
+	"y": 589.0313127040863,
+	"z": "b1682cba.152",
+	"wires": [
+		["1ab6bc40.bffaf4", "7db0c17f.b059"]
+	]
+}, {
+	"id": "df506b8a.806268",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 648.0417709350586,
+	"y": 513.0313451290131,
+	"z": "b1682cba.152",
+	"wires": [
+		["44c3101c.7b387"]
+	]
+}, {
+	"id": "1ab6bc40.bffaf4",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 660.0417709350586,
+	"y": 591.0313451290131,
+	"z": "b1682cba.152",
+	"wires": [
+		["44c3101c.7b387"]
+	]
+}, {
+	"id": "5d821249.e9d6cc",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 256.0416946411133,
+	"y": 592.0312840938568,
+	"z": "b1682cba.152",
+	"wires": [
+		["54dc8604.f2ccb8"]
+	]
+}, {
+	"id": "7f76e93c.a850f8",
+	"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": 491.010498046875,
+	"y": 356.00001883506775,
+	"z": "b1682cba.152",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "f3a69c11.4cac9",
+	"type": "block",
+	"name": "block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"outputs": 1,
+	"x": 206.0104217529297,
+	"y": 335.99999594688416,
+	"z": "b1682cba.152",
+	"wires": [
+		["7f76e93c.a850f8", "99bcb143.6aec8", "30b4304f.e646c", "140a99be.e1cda6"]
+	]
+}, {
+	"id": "99bcb143.6aec8",
+	"type": "switchNode",
+	"name": "switch network-id",
+	"xml": "<switch test='`$network-topology-operation-input.network-information.network-id`'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 491.0104293823242,
+	"y": 294.0000092983246,
+	"z": "b1682cba.152",
+	"wires": [
+		["57d76327.9c63cc", "d50b31e0.e314e"]
+	]
+}, {
+	"id": "57d76327.9c63cc",
+	"type": "outcome",
+	"name": "NULL",
+	"xml": "<outcome value=''>",
+	"comments": "",
+	"outputs": 1,
+	"x": 740.0105056762695,
+	"y": 233.00000929832458,
+	"z": "b1682cba.152",
+	"wires": [
+		["54153e4c.ec78c"]
+	]
+}, {
+	"id": "54153e4c.ec78c",
+	"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 generation allotted resource ID\" />\n",
+	"comments": "",
+	"x": 1010.0105209350586,
+	"y": 234.99999809265137,
+	"z": "b1682cba.152",
+	"wires": []
+}, {
+	"id": "d50b31e0.e314e",
+	"type": "other",
+	"name": "other",
+	"xml": "<outcome value='Other'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 737.5104026794434,
+	"y": 281.0000035762787,
+	"z": "b1682cba.152",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "30b4304f.e646c",
+	"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": 192.01040649414062,
+	"y": 943.0000705718994,
+	"z": "b1682cba.152",
+	"wires": []
+}, {
+	"id": "65a3a6ee.c50208",
+	"type": "block",
+	"name": "block",
+	"xml": "<block>\n",
+	"atomic": "false",
+	"comments": "",
+	"outputs": 1,
+	"x": 258.01040267944336,
+	"y": 735.0001106262207,
+	"z": "b1682cba.152",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "7db0c17f.b059",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 261.04176330566406,
+	"y": 675.0314900875092,
+	"z": "b1682cba.152",
+	"wires": [
+		["65a3a6ee.c50208"]
+	]
+}, {
+	"id": "44c3101c.7b387",
+	"type": "block",
+	"name": "block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"outputs": 1,
+	"x": 843.010383605957,
+	"y": 542.1214942932129,
+	"z": "b1682cba.152",
+	"wires": [
+		["81240f98.0bd24", "51b098fe.5ee238", "e14455de.b9dcd8", "5e6ceda3.d49424", "629880b9.6f91a"]
+	]
+}, {
+	"id": "81240f98.0bd24",
+	"type": "delete",
+	"name": "delete wan connection in AAI",
+	"xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='connectivity' \n        key='connectivity.connectivity-id = $network-topology-operation-input.network-information.network-id'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1139.0104446411133,
+	"y": 492.1214962005615,
+	"z": "b1682cba.152",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "51b098fe.5ee238",
+	"type": "set",
+	"name": "set new network length",
+	"xml": "<set>\n\t<parameter name=\"service-data.networks.network_length\" value=\"`$service-data.networks.network_length - 1`\"/>\n\n\t\n",
+	"comments": "",
+	"x": 1116.4549293518066,
+	"y": 556.0104026794434,
+	"z": "b1682cba.152",
+	"wires": []
+}, {
+	"id": "e14455de.b9dcd8",
+	"type": "set",
+	"name": "Remove networks from ServiceData",
+	"xml": "<set>\n\t<parameter name=\"service-data.networks.network[$tmp.nidx].\" value=\"\"/>\n\n",
+	"comments": "",
+	"x": 1147.0791816711426,
+	"y": 607.9783487319946,
+	"z": "b1682cba.152",
+	"wires": []
+}, {
+	"id": "5e6ceda3.d49424",
+	"type": "set",
+	"name": "set networkId and network-object-path",
+	"xml": "<set>\n<parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $network-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'` \" />",
+	"comments": "",
+	"x": 1157.8222579956055,
+	"y": 678.5394926071167,
+	"z": "b1682cba.152",
+	"wires": []
+}, {
+	"id": "629880b9.6f91a",
+	"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=\"wan-connection-topology-operation-delete\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name + ' delete'`\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1075.0103759765625,
+	"y": 423.34375,
+	"z": "b1682cba.152",
+	"wires": [
+		[]
+	]
+}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/SUBNET-API_managed-network-notification.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/SUBNET-API_managed-network-notification.json
new file mode 100644
index 0000000..19348f8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/SUBNET-API_managed-network-notification.json
@@ -0,0 +1,805 @@
+[
+    {
+        "id": "8b0d413c.615c5",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 96,
+        "y": 89.33332824707031,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "a7a5e7f9.cbcdd8"
+            ]
+        ]
+    },
+    {
+        "id": "a7a5e7f9.cbcdd8",
+        "type": "service-logic",
+        "name": "SUBNET-API ${project.version}",
+        "module": "SUBNET-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='SUBNET-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 409.83335876464844,
+        "y": 90.33332824707031,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "513fc617.f719c8"
+            ]
+        ]
+    },
+    {
+        "id": "6c165aea.75e544",
+        "type": "execute",
+        "name": "execute EIPAM activatesubnet",
+        "xml": "<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"activateSubnet\">\n\n",
+        "outputs": 1,
+        "x": 653.6905975341797,
+        "y": 328.7619323730469,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "d3c99160.64233",
+                "a9c66f76.4dc69"
+            ]
+        ]
+    },
+    {
+        "id": "d3c99160.64233",
+        "type": "success",
+        "name": "outcome: success",
+        "xml": "<outcome value=\"success\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 931.2143096923828,
+        "y": 206.4285888671875,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "e804c854.2cc4b8"
+            ]
+        ]
+    },
+    {
+        "id": "a9c66f76.4dc69",
+        "type": "other",
+        "name": "outcome Other ",
+        "xml": "<outcome value=\"Other\"> \n\n",
+        "outputs": 1,
+        "x": 915.3096466064453,
+        "y": 457.8094787597656,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "d4043b3c.76b5d8"
+            ]
+        ]
+    },
+    {
+        "id": "c794a1de.6c9f5",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": " <return status=\"failure\">\n               <parameter name=\"error-code\" value=\"3000\" />\n              <parameter name=\"error-message\" value=\"ActivateSubnet failure, need to manually activate in EIPAM\" />\n",
+        "comments": "",
+        "x": 1423.4044036865234,
+        "y": 614.6665649414062,
+        "z": "eea4a4fd.28e7f8",
+        "wires": []
+    },
+    {
+        "id": "9f29750b.da2bd8",
+        "type": "save",
+        "name": "save: EIPAM IP Subnets Active",
+        "xml": "<save plugin=\"com.att.sdnctl.sli.resource.gamma.GammaResource\" resource=\"eipam-ip-subnets\"\n\tkey=\"entity-id = $eipam-ip-block.entity-id\" force=\"true\">\n        <parameter name=\"status\" value=\"ACTIVE\" />\n       \n",
+        "outputs": 1,
+        "x": 1780.1310005187988,
+        "y": 71.17860412597656,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9990bab.31cc148",
+        "type": "comment",
+        "name": "MANAGED-NETWORK-NOTIFICATION",
+        "info": "12/15/17: update AAI VPE to GENERIC-VNF for ADIod\n\t\tUS 518510 - 291247b-F24748: SDN-CP to update SUBNET-SERVICE DG for vPE orchestration on AIC 3.X",
+        "comments": "",
+        "x": 475.6999969482422,
+        "y": 25,
+        "z": "eea4a4fd.28e7f8",
+        "wires": []
+    },
+    {
+        "id": "513fc617.f719c8",
+        "type": "method",
+        "name": "managed-network-notification",
+        "xml": "<method rpc='managed-network-notification' mode='sync'>\n",
+        "outputs": 1,
+        "x": 775.7000427246094,
+        "y": 89.19999694824219,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "aec047af.aaab78"
+            ]
+        ]
+    },
+    {
+        "id": "aec047af.aaab78",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "outputs": 1,
+        "x": 154.69998168945312,
+        "y": 154.1999969482422,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "9cc7c475.fb9c08",
+                "4264e89c.40bd78"
+            ]
+        ]
+    },
+    {
+        "id": "9cc7c475.fb9c08",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"managed-network-notification\"/>\n<parameter name=\"field3\" value=\"`$managed-network-notification-input.request-id`\"/>\n<parameter name=\"field4\" value=\"`$managed-network-notification-input.managed-network-status.status.code`\"/>\n<parameter name=\"field5\" value=\"`$managed-network-notification-input.managed-network-status.status.description`\"/>\n<parameter name=\"field6\" value=\"`$managed-network-notification-input.managed-network-status.final-notification-indicator`\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 355.2714614868164,
+        "y": 155.06147956848145,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f7ea696e.95b708",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": " <return status=\"success\">\n \n",
+        "x": 1430.2142333984375,
+        "y": 298.7618827819824,
+        "z": "eea4a4fd.28e7f8",
+        "wires": []
+    },
+    {
+        "id": "7c5909c0.2172c8",
+        "type": "set",
+        "name": "set: status = Active",
+        "xml": "<set>\n\t<parameter name=\"eipam-ip-block.status\" value=\"ACTIVE\" />",
+        "comments": "",
+        "x": 1435.5145721435547,
+        "y": 106.79519653320312,
+        "z": "eea4a4fd.28e7f8",
+        "wires": []
+    },
+    {
+        "id": "b4874196.8ae3d",
+        "type": "save",
+        "name": "save: status = Active",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource\" resource=\"eipam-ip-block\">\n\t<parameter name=\"eipam-ip-block.status\" value=\"ACTIVE\" />",
+        "outputs": 1,
+        "x": 1443.1810760498047,
+        "y": 155.1285400390625,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e804c854.2cc4b8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "outputs": 1,
+        "x": 1132.5475311279297,
+        "y": 206.09521484375,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "7c5909c0.2172c8",
+                "b4874196.8ae3d",
+                "f7ea696e.95b708",
+                "51c1d9c0.103e68",
+                "fc3f0e2.234e7f",
+                "e09b4f51.fe4d2"
+            ]
+        ]
+    },
+    {
+        "id": "d4043b3c.76b5d8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1130.3094940185547,
+        "y": 457.8095397949219,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "c794a1de.6c9f5",
+                "710f2497.34503c",
+                "44e6903c.a5e7d",
+                "b0f18382.a3db3"
+            ]
+        ]
+    },
+    {
+        "id": "4264e89c.40bd78",
+        "type": "switchNode",
+        "name": "switch: status Successful",
+        "xml": "<switch test=\"`$managed-network-notification-input.managed-network-status.status.code`\">\n\n",
+        "outputs": 1,
+        "x": 152.69998168945312,
+        "y": 274.2000274658203,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "9ab4229a.74392",
+                "c3d16d19.cc9aa"
+            ]
+        ]
+    },
+    {
+        "id": "9ab4229a.74392",
+        "type": "success",
+        "name": "outcome: Success",
+        "xml": "<outcome value=\"Success\">",
+        "outputs": 1,
+        "x": 413.69996643066406,
+        "y": 274.20001220703125,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "6c165aea.75e544"
+            ]
+        ]
+    },
+    {
+        "id": "c3d16d19.cc9aa",
+        "type": "other",
+        "name": "outcome: Other",
+        "xml": "<outcome value=\"Other\">",
+        "outputs": 1,
+        "x": 330.699951171875,
+        "y": 477.1999969482422,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "93fdf0c8.f0ae4"
+            ]
+        ]
+    },
+    {
+        "id": "93fdf0c8.f0ae4",
+        "type": "execute",
+        "name": "execute EIPAM deallocateSubnet",
+        "xml": "<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"deallocateSubnet\">\n\n",
+        "comments": "subnet and subnet_keys are deleted in the EIPAMPlugin",
+        "outputs": 1,
+        "x": 318.184814453125,
+        "y": 702.8561706542969,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "4f8b34e6.5bdd4c",
+                "3cf915d5.0d1d9a"
+            ]
+        ]
+    },
+    {
+        "id": "a50ab9b4.106068",
+        "type": "save",
+        "name": "save: EIPAM IP Subnets DEALLOCATED",
+        "xml": "<save plugin=\"com.att.sdnctl.sli.resource.gamma.GammaResource\" resource=\"eipam-ip-subnets\"\n\tkey=\"entity-id = $eipam-ip-block.entity-id\" force=\"true\">\n        <parameter name=\"status\" value=\"DEALLOCATED\" />\n       \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2083.8927307128906,
+        "y": 824.5342540740967,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d96ce594.90a0c8",
+        "type": "set",
+        "name": "set: status = ERROR",
+        "xml": "<set>\n\t<parameter name=\"eipam-ip-block.status\" value=\"ERROR\" />",
+        "x": 1711.3316497802734,
+        "y": 919.9341735839844,
+        "z": "eea4a4fd.28e7f8",
+        "wires": []
+    },
+    {
+        "id": "cd7d1838.d5cf78",
+        "type": "save",
+        "name": "save: status = SDN_C_BACKOUT_ERROR",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource\" resource=\"eipam-ip-block\">\n\t<parameter name=\"eipam-ip-block.status\" value=\"SDN_C_BACKOUT_ERROR\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1783.3318099975586,
+        "y": 970.2121124267578,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "25a6ed6d.53b122",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1477.9100799560547,
+        "y": 870.9460144042969,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "d96ce594.90a0c8",
+                "cd7d1838.d5cf78",
+                "e0730d75.098b2",
+                "137b82df.54fe1d"
+            ]
+        ]
+    },
+    {
+        "id": "e0730d75.098b2",
+        "type": "returnFailure",
+        "name": "return failure ",
+        "xml": "  <return status=\"failure\">\n              <parameter name=\"error-code\" value=\"1000\" />\n              <parameter name=\"error-message\" value=\"Failure from NCS and deletePool failed in EIPAM, need to manually delete.\" />\n",
+        "comments": "",
+        "x": 1687.9100189208984,
+        "y": 1109.5015563964844,
+        "z": "eea4a4fd.28e7f8",
+        "wires": []
+    },
+    {
+        "id": "6b63ef5.73de51",
+        "type": "save",
+        "name": "save: EIPAM IP Subnets ERROR",
+        "xml": "<save plugin=\"com.att.sdnctl.sli.resource.gamma.GammaResource\" resource=\"eipam-ip-subnets\"\n\tkey=\"entity-id = $eipam-ip-block.entity-id\" force=\"true\">\n        <parameter name=\"status\" value=\"EIPAM_ACTIVATESUBNET_ERROR\" />\n       \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1850.2252464294434,
+        "y": 379.9229793548584,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "710f2497.34503c",
+        "type": "set",
+        "name": "set: status = ERROR",
+        "xml": "<set>\n\t<parameter name=\"eipam-ip-block.status\" value=\"ERROR\" />",
+        "comments": "",
+        "x": 1448.0254974365234,
+        "y": 426.48956298828125,
+        "z": "eea4a4fd.28e7f8",
+        "wires": []
+    },
+    {
+        "id": "44e6903c.a5e7d",
+        "type": "save",
+        "name": "save: status = ERROR",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource\" resource=\"eipam-ip-block\">\n\t<parameter name=\"eipam-ip-block.status\" value=\"EIPAM_ACTIVATESUBNET_ERROR\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1453.0255584716797,
+        "y": 475.48956298828125,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4f8b34e6.5bdd4c",
+        "type": "success",
+        "name": "outcome: success",
+        "xml": "<outcome value=\"success\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 632.0690155029297,
+        "y": 708.2610778808594,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "1502967b.43db7a"
+            ]
+        ]
+    },
+    {
+        "id": "ebe5df37.bfb75",
+        "type": "save",
+        "name": "Update AAI: SDN_C_BACKOUT_ERROR, PREPROV",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $tmp.vpe-pool-row.vpe-id\" pfx=\"vpe-after\">\n\t<parameter name=\"orchestration-state\" value=\"SDN_C_BACKOUT_ERROR\" />\n\t<parameter name=\"prov-status\" value=\"PREPROV\" />\n\t",
+        "comments": "",
+        "outputs": 1,
+        "x": 1814.999984741211,
+        "y": 1064.8334655761719,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "59402378.f1791c",
+        "type": "save",
+        "name": "Update AAI: EIPAM_ERROR, PREPROV",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $tmp.vpe-pool-row.vpe-id\" pfx=\"vpe-after\">\n\t<parameter name=\"operational-state\" value=\"EIPAM_ERROR\" />\n\t<parameter name=\"summary-status\" value=\"`$aai-summary-status-message`\" />\n\t<parameter name=\"prov-status\" value=\"PREPROV\" />\n\t",
+        "comments": "",
+        "outputs": 1,
+        "x": 1511.1666717529297,
+        "y": 566.0832214355469,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "51c1d9c0.103e68",
+        "type": "save",
+        "name": "Update AAI: SDNC_COMPLETED",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"generic-vnf\" key=\"generic-vnf.vnf-id = $tmp.vpe-pool-row.vpe-id\" pfx=\"vpe-after\">\n\t<parameter name=\"orchestration-status\" value=\"Activated\" />\n\t<parameter name=\"prov-status\" value=\"NVTPROV\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1486.166648864746,
+        "y": 252.50001907348633,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "32cfc32.f7b6f3c",
+        "type": "execute",
+        "name": "execute: set aai-summary-status-message",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' method='setStatusMethod' >\n<parameter name=\"key1\" value=\"Failure from NCS and deletePool failed in EIPAM, need to manually delete.\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1781.999984741211,
+        "y": 1015.0834655761719,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2faf2d05.28d832",
+        "type": "execute",
+        "name": "execute: set aai-summary-status-message",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' method='setStatusMethod' >\n<parameter name=\"key1\" value=\"ActivateSubnet failure, need to manually activate in EIPAM.\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1515.0001068115234,
+        "y": 520.5832824707031,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "67b3d858.1a81b8",
+        "type": "execute",
+        "name": "execute: set aai-summary-status-message with timestamp",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' method='setStatusMethod' >\n<parameter name=\"key1\" value=\"SUCCESS: eipam-ip-block.status is ACTIVE.\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1559.0001068115234,
+        "y": 204.08334350585938,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3cf915d5.0d1d9a",
+        "type": "other",
+        "name": "outcome Other ",
+        "xml": "<outcome value=\"Other\"> \n\n",
+        "outputs": 1,
+        "x": 605.6485595703125,
+        "y": 1139.633544921875,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "805eca59.0831f8"
+            ]
+        ]
+    },
+    {
+        "id": "1502967b.43db7a",
+        "type": "execute",
+        "name": "execute EIPAM deletePool",
+        "xml": "<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"deletePool\">\n\n",
+        "comments": "subnet and subnet_keys are deleted in the EIPAMPlugin",
+        "outputs": 1,
+        "x": 916.648681640625,
+        "y": 717.6335601806641,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "bd7da7e7.2442a8",
+                "9e882eaf.4bab9"
+            ]
+        ]
+    },
+    {
+        "id": "8c247aa0.adb508",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": " <return status=\"failure\">\n              <parameter name=\"error-code\" value=\"2000\" />\n              <parameter name=\"error-message\" value=\"Failure from NCS and deleted pool/subnet in EIPAM\"/>\n \n",
+        "comments": "",
+        "x": 1527.918930053711,
+        "y": 811.6335754394531,
+        "z": "eea4a4fd.28e7f8",
+        "wires": []
+    },
+    {
+        "id": "3d115298.a6390e",
+        "type": "set",
+        "name": "set: status = Deleted",
+        "xml": "<set>\n\t<parameter name=\"eipam-ip-block.status\" value=\"DELETED\" />",
+        "comments": "",
+        "x": 1552.9595794677734,
+        "y": 672.0675354003906,
+        "z": "eea4a4fd.28e7f8",
+        "wires": []
+    },
+    {
+        "id": "bd7da7e7.2442a8",
+        "type": "success",
+        "name": "outcome: success",
+        "xml": "<outcome value=\"success\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1168.5102996826172,
+        "y": 719.0281066894531,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "b202ceaa.bfcf8"
+            ]
+        ]
+    },
+    {
+        "id": "b202ceaa.bfcf8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "outputs": 1,
+        "x": 1366.0545501708984,
+        "y": 719.9361267089844,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "3d115298.a6390e",
+                "8c247aa0.adb508"
+            ]
+        ]
+    },
+    {
+        "id": "fe96d80e.1742e8",
+        "type": "save",
+        "name": "Update AAI: SDN_C_BACKOUT_ERROR, PREPROV",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"generic-vnf\" key=\"generic-vnf.vnf-id = $tmp.vpe-pool-row.vpe-id\" pfx=\"vpe-after\">\n\t<parameter name=\"orchestration-state\" value=\"SDN_C_BACKOUT_ERROR\" />\n\t<parameter name=\"summary-status\" value=\"`$aai-summary-status-message`\" />\n\t<parameter name=\"prov-status\" value=\"PREPROV\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1654.441390991211,
+        "y": 766.8501892089844,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "930f275.bbe09d8",
+        "type": "execute",
+        "name": "execute: set aai-summary-status-message",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' method='setStatusMethod' >\n<parameter name=\"key1\" value=\"Failure from NCS and deleted pool/subnet in EIPAM.\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1622.441390991211,
+        "y": 719.3502807617188,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9e882eaf.4bab9",
+        "type": "other",
+        "name": "outcome Other ",
+        "xml": "<outcome value=\"Other\"> \n\n",
+        "outputs": 1,
+        "x": 1158.231201171875,
+        "y": 873.6335601806641,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "25a6ed6d.53b122"
+            ]
+        ]
+    },
+    {
+        "id": "c607d852.38d518",
+        "type": "set",
+        "name": "set: status = ERROR",
+        "xml": "<set>\n\t<parameter name=\"eipam-ip-block.status\" value=\"ERROR\" />",
+        "x": 1081.0957946777344,
+        "y": 1190.0476684570312,
+        "z": "eea4a4fd.28e7f8",
+        "wires": []
+    },
+    {
+        "id": "7d1e8b06.0568c4",
+        "type": "save",
+        "name": "save: status = SDN_C_BACKOUT_ERROR",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource\" resource=\"eipam-ip-block\">\n\t<parameter name=\"eipam-ip-block.status\" value=\"SDN_C_BACKOUT_ERROR\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1158.095962524414,
+        "y": 1237.825579881668,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "805eca59.0831f8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 847.6742248535156,
+        "y": 1138.0594177246094,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            [
+                "c607d852.38d518",
+                "7d1e8b06.0568c4",
+                "61415345.f8ff0c",
+                "65667bfd.a151d4"
+            ]
+        ]
+    },
+    {
+        "id": "61415345.f8ff0c",
+        "type": "returnFailure",
+        "name": "return failure ",
+        "xml": "  <return status=\"failure\">\n              <parameter name=\"error-code\" value=\"1000\" />\n              <parameter name=\"error-message\" value=\"Failure from NCS and deletePool failed in EIPAM, need to manually delete.\" />\n",
+        "comments": "",
+        "x": 1057.6741638183594,
+        "y": 1379.6150512695312,
+        "z": "eea4a4fd.28e7f8",
+        "wires": []
+    },
+    {
+        "id": "c854babb.1edeb8",
+        "type": "save",
+        "name": "Update AAI: SDN_C_BACKOUT_ERROR, PREPROV",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $tmp.vpe-pool-row.vpe-id\" pfx=\"vpe-after\">\n\t<parameter name=\"orchestration-state\" value=\"SDN_C_BACKOUT_ERROR\" />\n\t<parameter name=\"summary-status\" value=\"`$aai-summary-status-message`\" />\n\t<parameter name=\"prov-status\" value=\"PREPROV\" />\n\t",
+        "comments": "",
+        "outputs": 1,
+        "x": 1184.7641296386719,
+        "y": 1334.9469604492188,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "fd307a6e.e37228",
+        "type": "execute",
+        "name": "execute: set aai-summary-status-message",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' method='setStatusMethod' >\n<parameter name=\"key1\" value=\"Failure from NCS and deletePool failed in EIPAM, need to manually delete.\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1151.7641296386719,
+        "y": 1285.1969604492188,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e09b4f51.fe4d2",
+        "type": "get-resource",
+        "name": "get-resource - vpe_pool",
+        "xml": "<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * FROM VPE_POOL where vpe_name = $eipam-ip-block.ptnii-name ;\"\n        pfx='tmp.vpe-pool-row'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1453.7500076293945,
+        "y": 23.750003814697266,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "fc3f0e2.234e7f",
+        "type": "save",
+        "name": "Update subnet to ACTIVE in DB",
+        "xml": "<save \n\tplugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' \n\tresource='SQL'\n\tkey=\"UPDATE EIPAM_IP_SUBNETS\n             SET status = 'ACTIVE' \n             WHERE entity_id = $eipam-ip-block.entity-id ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-row'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1475.0000228881836,
+        "y": 67.5,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b0f18382.a3db3",
+        "type": "save",
+        "name": "Update subnet to ERROR in DB",
+        "xml": "<save \n\tplugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' \n\tresource='SQL'\n\tkey=\"UPDATE EIPAM_IP_SUBNETS\n             SET status = 'ACTIVATE_ERROR' \n             WHERE entity_id = $eipam-ip-block.entity-id ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-row'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1482.5000228881836,
+        "y": 381.2500047683716,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "137b82df.54fe1d",
+        "type": "save",
+        "name": "Update subnet to DEALLOCATED in DB",
+        "xml": "<save \n\tplugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' \n\tresource='SQL'\n\tkey=\"UPDATE EIPAM_IP_SUBNETS\n             SET status = 'DEALLOCATED' \n             WHERE entity_id = $eipam-ip-block.entity-id ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-row'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1738.7500228881836,
+        "y": 870.0000123977661,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "65667bfd.a151d4",
+        "type": "save",
+        "name": "Update subnet to ERROR in DB",
+        "xml": "<save \n\tplugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' \n\tresource='SQL'\n\tkey=\"UPDATE EIPAM_IP_SUBNETS\n             SET status = 'DEALLOCSUBNET_ERROR' \n             WHERE entity_id = $eipam-ip-block.entity-id ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-row'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1113.750015258789,
+        "y": 1146.2500162124634,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "628344a0.b07cfc",
+        "type": "get-resource",
+        "name": "get-resource - vpe_pool",
+        "xml": "<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * FROM VPE_POOL where vpe_name = $eipam-ip-block.ptnii-name ;\"\n        pfx='tmp.vpe-pool-row'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1090.000015258789,
+        "y": 1081.250015258789,
+        "z": "eea4a4fd.28e7f8",
+        "wires": [
+            []
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/SUBNET-API_subnet-allocated-notification.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/SUBNET-API_subnet-allocated-notification.json
new file mode 100755
index 0000000..ccb6c72
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/SUBNET-API_subnet-allocated-notification.json
@@ -0,0 +1,2235 @@
+[
+    {
+        "id": "e2caddb4.aa4f3",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 84,
+        "y": 72.68333053588867,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "7dfa29c7.e57d58"
+            ]
+        ]
+    },
+    {
+        "id": "cbc97fd8.e73ef",
+        "type": "success",
+        "name": "outcome success",
+        "xml": "<outcome value=\"success\">\n",
+        "outputs": 1,
+        "x": 766.6665115356445,
+        "y": 180.71110725402832,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "3bd2d930.bf75f6"
+            ]
+        ]
+    },
+    {
+        "id": "890652c0.be9cf",
+        "type": "other",
+        "name": "outcome Other ",
+        "xml": "<outcome value=\"Other\"> \n\n",
+        "outputs": 1,
+        "x": 693.416633605957,
+        "y": 337.10004234313965,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "5f7d48df.f75b98"
+            ]
+        ]
+    },
+    {
+        "id": "d6b0362c.9c5128",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": " <return status=\"success\">\n \n",
+        "x": 1165.1664276123047,
+        "y": 248.68336868286133,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "1b062aa5.755935",
+        "type": "method",
+        "name": "subnet-allocated-notification",
+        "xml": "<method rpc='subnet-allocated-notification' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 653.8667144775391,
+        "y": 72.55000305175781,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "ddfcf206.07bf7"
+            ]
+        ]
+    },
+    {
+        "id": "ddfcf206.07bf7",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 91.86669158935547,
+        "y": 149.80000495910645,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "64574d3b.bdf2e4",
+                "1c03d112.43261f"
+            ]
+        ]
+    },
+    {
+        "id": "64574d3b.bdf2e4",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"subnet-allocated-notification\"/>\n<parameter name=\"field3\" value=\"`$eipam-ip-block.request-id`\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.entity-id`\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.ptnii-name`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.ip-address`\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.prefix-length`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.status`\"/>\n<parameter name=\"field9\" value=\"`$tmp.key-value`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 263.2595672607422,
+        "y": 163.63769435882568,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8ad2bbea.c97f08",
+        "type": "configure",
+        "name": "configure ncs SNIIR ",
+        "xml": "<configure adaptor=\"com.att.sdnctl.sli.adaptor.ncs.ncsAdaptor\" key=\"SNIIR\" activate=\"true\">\n\t<parameter name=\"input.request-id\" value=\"`$eipam-ip-block.request-id`\" />\n\t<parameter name=\"input.source\" value=\"SDNC\" />\n\t<parameter name=\"input.ptnii-name\" value=\"`$eipam-ip-block.ptnii-name`\" />\n\t<parameter name=\"input.ip-address\" value=\"`$eipam-ip-block.ip-address`\" />\n\t<parameter name=\"input.mask\" value=\"`$eipam-ip-block.prefix-length`\" />",
+        "outputs": 1,
+        "x": 473.41666412353516,
+        "y": 335.6000442504883,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "cbc97fd8.e73ef",
+                "890652c0.be9cf"
+            ]
+        ]
+    },
+    {
+        "id": "3bd2d930.bf75f6",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "outputs": 1,
+        "x": 918.4999237060547,
+        "y": 181.49443435668945,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "2dc51873.fbbc88",
+                "810874e3.8849c8",
+                "d6b0362c.9c5128",
+                "436f433.ffb90bc"
+            ]
+        ]
+    },
+    {
+        "id": "2dc51873.fbbc88",
+        "type": "set",
+        "name": "set: status = Pending Active",
+        "xml": "<set>\n\t<parameter name=\"eipam-ip-block.status\" value=\"PENDING-ACTIVE\" />",
+        "x": 1197.4667205810547,
+        "y": 157.05000686645508,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "810874e3.8849c8",
+        "type": "save",
+        "name": "save: status = Pending Active",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource\" resource=\"eipam-ip-block\">\n\t<parameter name=\"eipam-ip-block.status\" value=\"PENDING-ACTIVE\" />",
+        "outputs": 1,
+        "x": 1206.4666595458984,
+        "y": 203.04997634887695,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "54ca6207.0cfb2c",
+        "type": "set",
+        "name": "set: status = ERROR",
+        "xml": "<set>\n\t<parameter name=\"eipam-ip-block.status\" value=\"NCS_IP_SUBNET_INSTALL_ERROR\" />",
+        "comments": "",
+        "x": 1289.967025756836,
+        "y": 507.8610420227051,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "344b0bc7.6af414",
+        "type": "save",
+        "name": "save: status = NCS_IP_SUBNET_INSTALL_ERROR",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource\" resource=\"eipam-ip-block\">\n\t<parameter name=\"eipam-ip-block.status\" value=\"NCS_IP_SUBNET_INSTALL_ERROR\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1386.217300415039,
+        "y": 555.8610315322876,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7dfa29c7.e57d58",
+        "type": "service-logic",
+        "name": "SUBNET-API ${project.version}",
+        "module": "SUBNET-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='SUBNET-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 321.9500274658203,
+        "y": 73.00001525878906,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "1b062aa5.755935"
+            ]
+        ]
+    },
+    {
+        "id": "31daf633.7ba63a",
+        "type": "comment",
+        "name": "ChangeLog",
+        "info": "1.0.0: Release 1504\n2.0.0: Release 1507 - Remove Update Inventory\n9/16: update record node format\nRelease 1710 - update to include VIPR & SRIOV address plans\n12/15/17: update AAI VPE to GENERIC-VNF for ADIod\n\t\tUS 518510 - 291247b-F24748: SDN-CP to update SUBNET-SERVICE DG for vPE orchestration on AIC 3.X",
+        "comments": "",
+        "x": 69.94999694824219,
+        "y": 20,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "5f7d48df.f75b98",
+        "type": "execute",
+        "name": "execute EIPAM deletePool",
+        "xml": "<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"deletePool\">\n\n",
+        "comments": "subnet and subnet_keys are deleted in the EIPAMPlugin",
+        "outputs": 1,
+        "x": 908.5182647705078,
+        "y": 334.06732749938965,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "14809a55.ca7476",
+                "8d1a7b1c.633738"
+            ]
+        ]
+    },
+    {
+        "id": "5975d49b.222cac",
+        "type": "set",
+        "name": "set: status = Deleted",
+        "xml": "<set>\n\t<parameter name=\"eipam-ip-block.status\" value=\"DELETED\" />",
+        "comments": "",
+        "x": 1554.518051147461,
+        "y": 269.7616767883301,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "14809a55.ca7476",
+        "type": "other",
+        "name": "outcome Other ",
+        "xml": "<outcome value=\"Other\"> \n\n",
+        "outputs": 1,
+        "x": 1149.0736541748047,
+        "y": 389.6505928039551,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "e862d426.78f0b8"
+            ]
+        ]
+    },
+    {
+        "id": "e862d426.78f0b8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1049.4341278076172,
+        "y": 484.76176834106445,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "54ca6207.0cfb2c",
+                "e8cb542a.45f388",
+                "72c4110c.bb7ed",
+                "c52a41c3.18f85"
+            ]
+        ]
+    },
+    {
+        "id": "e8cb542a.45f388",
+        "type": "returnFailure",
+        "name": "return failure ",
+        "xml": "  <return status=\"failure\">\n              <parameter name=\"error-code\" value=\"1000\" />\n              <parameter name=\"error-message\" value=\"IpBlockInstall failure and deletePool failed in EIPAM, need to manually delete\" />\n",
+        "comments": "",
+        "x": 1261.767578125,
+        "y": 698.650580406189,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "8d1a7b1c.633738",
+        "type": "success",
+        "name": "outcome success",
+        "xml": "<outcome value=\"success\">\n",
+        "outputs": 1,
+        "x": 1158.2432098388672,
+        "y": 336.79436111450195,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "62fdd070.1af19"
+            ]
+        ]
+    },
+    {
+        "id": "9b97f6d.5105208",
+        "type": "returnFailure",
+        "name": "return failure ",
+        "xml": "  <return status=\"failure\">\n              <parameter name=\"error-code\" value=\"1000\" />\n              <parameter name=\"error-message\" value=\"IpBlockInstall failure and deletePool deleted in EIPAM\" />\n",
+        "comments": "",
+        "x": 1529.1320037841797,
+        "y": 415.0164680480957,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "62fdd070.1af19",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "outputs": 1,
+        "x": 1355.348300933838,
+        "y": 336.6303253173828,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "5975d49b.222cac",
+                "9b97f6d.5105208"
+            ]
+        ]
+    },
+    {
+        "id": "84a4163.f8d0ee8",
+        "type": "save",
+        "name": "Update AAI: NCS_IP_SUBNET_INSTALL_ERROR, PREPROV",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"generic-vnf\" key=\"generic-vnf.vnf-id = $tmp.vpe-pool-row.vpe-id\" pfx=\"vpe-after\">\n\t<parameter name=\"operational-status\" value=\"NCS_IP_SUBNET_INSTALL_ERROR\" />\n\t<parameter name=\"summary-status\" value=\"`$aai-summary-status-message`\" />\n\t<parameter name=\"prov-status\" value=\"PREPROV\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1762.0000228881836,
+        "y": 365.35004234313965,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c52a41c3.18f85",
+        "type": "save",
+        "name": "Update AAI: NCS_IP_SUBNET_INSTALL_ERROR, PREPROV",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"generic-vnf\" key=\"generic-vnf.vnf-id = $tmp.vpe-pool.vpe-id\" pfx=\"vpe-after\">\n\t<parameter name=\"operational-status\" value=\"NCS_IP_SUBNET_INSTALL_ERROR\" />\n\t<parameter name=\"summary-status\" value=\"`$aai-summary-status-message`\" />\n\t<parameter name=\"prov-status\" value=\"PREPROV\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1416.166732788086,
+        "y": 649.6833076477051,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6fe30b95.3674d4",
+        "type": "execute",
+        "name": "execute: set aai-summary-status-message",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' method='setStatusMethod' >\n<parameter name=\"key1\" value=\"IpBlockInstall failure and pool deleted in EIPAM.\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1625.3333587646484,
+        "y": 319.6833381652832,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "aeadd804.b843a8",
+        "type": "execute",
+        "name": "execute: set aai-summary-status-message",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' method='setStatusMethod' >\n<parameter name=\"key1\" value=\"IpBlockInstall failure and pool deletion failed in EIPAM, need to manually delete.\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1355.3333587646484,
+        "y": 603.6833076477051,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1c03d112.43261f",
+        "type": "switchNode",
+        "name": "switch: ptnii_name",
+        "xml": "<switch test=\"`$eipam-ip-block.ptnii-name`\">",
+        "comments": "Need to know which ipv version to get the plan name from the network-model.",
+        "outputs": 1,
+        "x": 116.67860412597656,
+        "y": 223.75476360321045,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "51cbbf6e.bce95",
+                "2171ca6e.b25e66"
+            ]
+        ]
+    },
+    {
+        "id": "2171ca6e.b25e66",
+        "type": "other",
+        "name": "Null",
+        "xml": "<outcome value=''>",
+        "comments": "If no ptnii-name, check if VIPR or SRIOV",
+        "outputs": 1,
+        "x": 201.67856979370117,
+        "y": 895.0047702789307,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "909ee043.2df28"
+            ]
+        ]
+    },
+    {
+        "id": "51cbbf6e.bce95",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "If there's ptnii-name, then it's Gamma service",
+        "outputs": 1,
+        "x": 152.9285774230957,
+        "y": 282.50476455688477,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "8d875ca6.a136"
+            ]
+        ]
+    },
+    {
+        "id": "909ee043.2df28",
+        "type": "execute",
+        "name": "execute plan-name startsWith AIC",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils\" method=\"startsWith\" emitsOutcome='true' >\n<parameter name=\"source\" value=\"`toUpperCase($eipam-ip-block.plan-name)`\" />\n<parameter name=\"target\" value=\"AIC_\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 411.6785659790039,
+        "y": 896.2547702789307,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "d3d5f0b0.4a664",
+                "86c22fba.8ed29"
+            ]
+        ]
+    },
+    {
+        "id": "86c22fba.8ed29",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 624.1785736083984,
+        "y": 940.004771232605,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "131053a4.d1dffc"
+            ]
+        ]
+    },
+    {
+        "id": "d3d5f0b0.4a664",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 625.4285736083984,
+        "y": 897.254771232605,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "9725cb51.702688"
+            ]
+        ]
+    },
+    {
+        "id": "131053a4.d1dffc",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 771.6785659790039,
+        "y": 941.2547569274902,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "9659a3ea.e5ef3",
+                "3ffd19bb.4f4e36",
+                "f1fc5eba.89bce",
+                "c77e4701.89df28",
+                "cf6722db.8b927",
+                "33a7298c.a1e5c6",
+                "5fb42e09.35366",
+                "de60f20e.7fe8c",
+                "9b32befa.3ad65",
+                "7437f146.91864",
+                "1d533385.91dbac",
+                "ed912931.696a38",
+                "38409251.785ace",
+                "e60d143a.a53bf8",
+                "eccae1c1.cfd61",
+                "3b0f0963.0e3606",
+                "605747f6.c15988",
+                "f634ef3e.b5b91",
+                "57bed018.e09e4",
+                "325c38e8.bf4558",
+                "22f00d11.312d02",
+                "75fff231.25968c",
+                "d916c321.529dc"
+            ]
+        ]
+    },
+    {
+        "id": "9725cb51.702688",
+        "type": "returnFailure",
+        "name": "return failure ",
+        "xml": "  <return status=\"failure\">\n              <parameter name=\"error-code\" value=\"500\" />\n              <parameter name=\"error-message\" value=\"Unknown Address Plan - not supported!\" />\n",
+        "comments": "",
+        "x": 766.6785659790039,
+        "y": 898.7547569274902,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "9659a3ea.e5ef3",
+        "type": "get-resource",
+        "name": "get-resource - validate pool exists already",
+        "xml": "<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * FROM EIPAM_IP_POOLS where plan_name = $eipam-ip-block.plan-name and level = 2 and key_value = $tmp.level2-key-value ;\"\n        pfx='tmp.eipam-pool-row'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1032.928581237793,
+        "y": 942.5047702789307,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "34771a54.041056",
+                "b267fd26.f533b"
+            ]
+        ]
+    },
+    {
+        "id": "b267fd26.f533b",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1299.2904014587402,
+        "y": 895.2547702789307,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "6b0324a2.349bec"
+            ]
+        ]
+    },
+    {
+        "id": "34771a54.041056",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value=\"not-found\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1306.5405235290527,
+        "y": 970.504771232605,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "83c66d87.67bd"
+            ]
+        ]
+    },
+    {
+        "id": "cbbdd8aa.7d2a38",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"subnet-allocated-notification\"/>\n<parameter name=\"field3\" value=\"`$eipam-ip-block.request-id`\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.entity-id`\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.ptnii-name`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.ip-address`\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.prefix-length`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.status`\"/>\n<parameter name=\"field9\" value=\"This record is not found in DB!\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1661.6785888671875,
+        "y": 941.254771232605,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a891b62.8fdbc48",
+        "type": "returnFailure",
+        "name": "return failure ",
+        "xml": "  <return status=\"failure\">\n  \t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n  \t\t<parameter name=\"error-code\" value=\"500\" />\n              <parameter name=\"error-message\" value=\"Unknown EIPAM pool - not found in DB!\" />\n",
+        "comments": "",
+        "x": 1680.4285926818848,
+        "y": 980.004771232605,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "83c66d87.67bd",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1484.1785888671875,
+        "y": 971.254771232605,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "cbbdd8aa.7d2a38",
+                "a891b62.8fdbc48"
+            ]
+        ]
+    },
+    {
+        "id": "b4649f8b.b431",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"subnet-allocated-notification\"/>\n<parameter name=\"field3\" value=\"`$eipam-ip-block.request-id`\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.entity-id`\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.ptnii-name`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.ip-address`\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.prefix-length`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.status`\"/>\n<parameter name=\"field9\" value=\"Failed to find this record in DB!\"/>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1661.6785888671875,
+        "y": 862.5047731399536,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4d6d74bf.b02c3c",
+        "type": "returnFailure",
+        "name": "return failure ",
+        "xml": "  <return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n              <parameter name=\"error-code\" value=\"500\" />\n              <parameter name=\"error-message\" value=\"Unknown EIPAM pool - not found in DB!\" />\n",
+        "comments": "",
+        "x": 1680.4285926818848,
+        "y": 901.2547731399536,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "6b0324a2.349bec",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1484.1785888671875,
+        "y": 892.5047731399536,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "b4649f8b.b431",
+                "4d6d74bf.b02c3c"
+            ]
+        ]
+    },
+    {
+        "id": "3ffd19bb.4f4e36",
+        "type": "get-resource",
+        "name": "get-resource - validate if initial level 2 subnet exists",
+        "xml": "<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $eipam-ip-block.plan-name and s.entity_id = k.entity_id and k.level = 2 and k.key_value = $tmp.level2-key-value and s.address_family = $tmp.version ; \"\n        pfx='pfx.eipam-initial-subnet'>\n\n",
+        "comments": "initial subnet should exists",
+        "outputs": 1,
+        "x": 1059.1786041259766,
+        "y": 1007.5047760009766,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "ce6bcabe.97f718",
+                "421560eb.81bf2"
+            ]
+        ]
+    },
+    {
+        "id": "bb5d9c34.1d4fc",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed.\" />\n\t",
+        "comments": "",
+        "x": 1481.4285430908203,
+        "y": 1005.7547626495361,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "ce6bcabe.97f718",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1329.7904052734375,
+        "y": 1010.2547721862793,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "bb5d9c34.1d4fc"
+            ]
+        ]
+    },
+    {
+        "id": "421560eb.81bf2",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value=\"not-found\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1330.040470123291,
+        "y": 1044.7547664642334,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "562b2139.070f1"
+            ]
+        ]
+    },
+    {
+        "id": "8994e422.3636c8",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"subnet-allocated-notification\"/>\n<parameter name=\"field3\" value=\"`$eipam-ip-block.request-id`\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.entity-id`\"/>\n<parameter name=\"field5\" value=\"`$eipam-ip-block.ptnii-name`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.ip-address`\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.prefix-length`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.status`\"/>\n<parameter name=\"field9\" value=\"`$tmp.key-value`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 2332.928565979004,
+        "y": 943.7547569274902,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c77e4701.89df28",
+        "type": "save",
+        "name": "insert new EIPAM_IP_SUBNETS for level 2",
+        "xml": "<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNETS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             service_type = $pfx.eipam-initial-subnet.service-type ,\n             ip_address = $eipam-ip-block.ip-prefix ,\n             prefix_length = $eipam-ip-block.mask ,\n             plan_name = $eipam-ip-block.plan-name ,\n             status = 'PENDING_ACTIVE' ,\n             pool_id = $pfx.eipam-initial-subnet.pool-id ,\n             address_family = $pfx.eipam-initial-subnet.address-family ,\n             network_id = $pfx.eipam-initial-subnet.network-id ; \"\n    force='true'\n        pfx='pfx.eipam-new-subnet'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1044.178581237793,
+        "y": 1271.2548027038574,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "b8b710a5.faa7c",
+                "c385bfae.d3b5e"
+            ]
+        ]
+    },
+    {
+        "id": "cf6722db.8b927",
+        "type": "save",
+        "name": "insert EIPAM_IP_SUBNET_KEYS for level 1",
+        "xml": "<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNET_KEYS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             key_name = $tmp.level1-key-name ,\n             key_value = $tmp.level1-key-value ,\n             level = 1 ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-level1'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1059.1783981323242,
+        "y": 1313.2547454833984,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "c385bfae.d3b5e",
+                "160a99ef.650b86"
+            ]
+        ]
+    },
+    {
+        "id": "33a7298c.a1e5c6",
+        "type": "save",
+        "name": "insert EIPAM_IP_SUBNET_KEYS for level 2",
+        "xml": "<save\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"INSERT EIPAM_IP_SUBNET_KEYS\n             SET\n             entity_id = $eipam-ip-block.entity-id ,\n             key_name = $tmp.level2-key-name ,\n             key_value = $tmp.level2-key-value ,\n             level = 2 ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-level2'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1058.1785202026367,
+        "y": 1359.2547760009766,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "c385bfae.d3b5e",
+                "160a99ef.650b86"
+            ]
+        ]
+    },
+    {
+        "id": "b8b710a5.faa7c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>",
+        "outputs": 1,
+        "x": 1379.4619102478027,
+        "y": 1284.754801750183,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "23e6f9d8.6f5356"
+            ]
+        ]
+    },
+    {
+        "id": "c385bfae.d3b5e",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1380.3048629760742,
+        "y": 1322.4049453735352,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "160a99ef.650b86",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>",
+        "outputs": 1,
+        "x": 1381.0180625915527,
+        "y": 1358.2548027038574,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "201429d8.95bf06"
+            ]
+        ]
+    },
+    {
+        "id": "f1fc5eba.89bce",
+        "type": "get-resource",
+        "name": "get-resource - validate if subnet with same ip exists",
+        "xml": "<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * from EIPAM_IP_SUBNETS s WHERE s.plan_name = $eipam-ip-block.plan-name and s.entity_id = $eipam-ip-block.entity-id and s.ip_address = $eipam-ip-block.ip-address ; \"\n        pfx='pfx.eipam-subnet-with-same-ip'>\n\n",
+        "comments": "check if new subnet already exists, possibly from previous attempt.",
+        "outputs": 1,
+        "x": 1062.928596496582,
+        "y": 1083.754774093628,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "ba1f099b.3a0878",
+                "bfe13ef7.e3f2"
+            ]
+        ]
+    },
+    {
+        "id": "725e871e.2731f8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed.\" />\n\t",
+        "comments": "",
+        "x": 1486.4286613464355,
+        "y": 1082.0047636032104,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "ba1f099b.3a0878",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1334.7905235290527,
+        "y": 1086.5047731399536,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "725e871e.2731f8"
+            ]
+        ]
+    },
+    {
+        "id": "bfe13ef7.e3f2",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value=\"not-found\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1346.2906188964844,
+        "y": 1128.5047845840454,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "dcf3f5f7.409df8",
+        "type": "not-found",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1376.6786499023438,
+        "y": 1427.504789352417,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "c4a8d945.3c0a58"
+            ]
+        ]
+    },
+    {
+        "id": "c4a8d945.3c0a58",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"'l3-network with network-id=' + $pfx.eipam-initial-subnet.network-id + ' And subnet-id=' + $eipam-ip-block.entity-id + ' is Not found in AnAI'\" />",
+        "comments": "",
+        "x": 1539.873046875,
+        "y": 1427.6160106658936,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "5fb42e09.35366",
+        "type": "get-resource",
+        "name": "get AnAI - l3-network subnet by network-id and subnet-id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $pfx.eipam-initial-subnet.network-id\n\t\t\tAND subnet.subnet-id = $eipam-ip-block.entity-id\"\n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.aai-initial-subnet\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1080.1507034301758,
+        "y": 1435.739423751831,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "dcf3f5f7.409df8",
+                "6b48a955.5b2088"
+            ]
+        ]
+    },
+    {
+        "id": "6b48a955.5b2088",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1369.4007568359375,
+        "y": 1465.989393234253,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "1c6d8420.6c07fc"
+            ]
+        ]
+    },
+    {
+        "id": "1c6d8420.6c07fc",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"'Error retrieving l3-network with network-id=' + $pfx.eipam-initial-subnet.network-id + ' And subnet-id=' + $eipam-ip-block.entity-id  + ' from AnAI'\" />",
+        "comments": "",
+        "x": 1521.5118408203125,
+        "y": 1466.2116222381592,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "562b2139.070f1",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Initial subnet not found, cannot auto extend.\" />\n\t",
+        "comments": "",
+        "x": 1484.1785354614258,
+        "y": 1043.7547645568848,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "23e6f9d8.6f5356",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Insert to DB table EIPAM_IP_SUBNETS failed.\" />\n\t",
+        "comments": "",
+        "x": 1516.678565979004,
+        "y": 1287.504783630371,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "201429d8.95bf06",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Insert to DB table EIPAM_IP_SUBNET_KEYS failed.\" />\n\t",
+        "comments": "",
+        "x": 1520.428565979004,
+        "y": 1356.254783630371,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "8d83ed60.0715f",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1250.018955230713,
+        "y": 1851.4807324409485,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "e81fdab.a073e28"
+            ]
+        ]
+    },
+    {
+        "id": "689d1c14.7b79e4",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1258.742099761963,
+        "y": 1889.123920917511,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "de60f20e.7fe8c",
+        "type": "save",
+        "name": "save AnAI - l3-network.subnets",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $pfx.eipam-initial-subnet.network-id \n\t\t\tAND subnet.subnet-id = $eipam-ip-block.entity-id\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$pfx.eipam-initial-subnet.network-id`\" />\n<parameter name=\"subnet-id\" value=\"`$eipam-ip-block.entity-id`\" />\n<parameter name=\"subnet-name\" value=\"`$tmp.l3-network.subnet.subnet-name`\" />\n<parameter name=\"gateway-address\" value=\"`$tmp.return.generate.gateway-address`\" />\n<parameter name=\"network-start-address\" value=\"`$eipam-ip-block.ip-prefix`\" />\n<parameter name=\"cidr-mask\" value=\"`$eipam-ip-block.prefix-length`\" />\n<parameter name=\"ip-version\" value=\"`$tmp.version`\" />\n<parameter name=\"dhcp-start\" value=\"`$tmp.l3-network.subnet.dhcp-start`\" />\n<parameter name=\"dhcp-end\" value=\"`$tmp.l3-network.subnet.dhcp-end`\" />\n<parameter name=\"dhcp-enabled\" value=\"`$tmp.l3-network.subnet.dhcp-enabled`\" />\n<parameter name=\"orchestration-status\" value=\"PendingCreate\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 990.539966583252,
+        "y": 1868.5165219306946,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "689d1c14.7b79e4",
+                "8d83ed60.0715f"
+            ]
+        ]
+    },
+    {
+        "id": "26fc5e9d.ee8832",
+        "type": "call",
+        "name": "call GENERIC-RESOURCE-API:create-l3-subnet",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='create-l3-subnet' mode='sync' >\n",
+        "comments": "tmp.level should be set to 1",
+        "outputs": 1,
+        "x": 1787.928581237793,
+        "y": 1463.7548065185547,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "32ccea0f.159e96",
+        "type": "comment",
+        "name": "Get service_type from initial subnet",
+        "info": "",
+        "comments": "",
+        "x": 772.9285659790039,
+        "y": 1053.7547569274902,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "49a09274.40efdc",
+        "type": "set",
+        "name": "set dhcp data",
+        "xml": "<set>\n<parameter name='tmp.l3-network.subnet.dhcp-enabled' value='true' />\n<parameter name='tmp.l3-network.subnet.dhcp-start' value='`$tmp.return.generate.dhcp-start-address`' />\n<parameter name='tmp.l3-network.subnet.dhcp-end' value='`$tmp.return.generate.dhcp-end-address`' />\n\n\n",
+        "comments": "",
+        "x": 1646.6786155700684,
+        "y": 1767.5048027038574,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "9b32befa.3ad65",
+        "type": "execute",
+        "name": "execute getSubnetAddresses",
+        "xml": "<execute plugin=\"com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool\" method=\"getSubnetAddresses\">\n\t<parameter name=\"ipAddress\" value=\"`$eipam-ip-block.ip-prefix`\" />\n\t<parameter name=\"ipVersion\" value=\"`tmp.version`\" />\n\t<parameter name=\"subnet\" value=\"`$eipam-ip-block.prefix-length`\" />\n\t<parameter name=\"ctxGateway\" value=\"tmp.return.generate.gateway-address\" />\n\t<parameter name=\"ctxDhcpStart\" value=\"tmp.return.generate.dhcp-start-address\" />\n\t<parameter name=\"ctxDhcpEnd\" value=\"tmp.return.generate.dhcp-end-address\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 999.5357971191406,
+        "y": 1695.7905054092407,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "f44d5fe7.afc4f"
+            ]
+        ]
+    },
+    {
+        "id": "ed912931.696a38",
+        "type": "switchNode",
+        "name": "switch tmp.aai-initial-subnet.dhcp-enabled",
+        "xml": "<switch test='`$tmp.aai-initial-subnet.dhcp-enabled`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1031.1868209838867,
+        "y": 1758.869896888733,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "3cab0bd5.728684",
+                "3cc191c.8042f6e"
+            ]
+        ]
+    },
+    {
+        "id": "3cab0bd5.728684",
+        "type": "other",
+        "name": "Y",
+        "xml": "<outcome value='Y'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1286.9008502960205,
+        "y": 1768.8698720932007,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "266fb95c.68e316"
+            ]
+        ]
+    },
+    {
+        "id": "266fb95c.68e316",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1447.3770866394043,
+        "y": 1768.8698587417603,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "49a09274.40efdc"
+            ]
+        ]
+    },
+    {
+        "id": "f44d5fe7.afc4f",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1231.451187133789,
+        "y": 1695.5629892349243,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "9f2e9d98.83945"
+            ]
+        ]
+    },
+    {
+        "id": "9f2e9d98.83945",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Failed to generate gateway addresses using IpAddressTools\" />",
+        "comments": "",
+        "x": 1403.1177368164062,
+        "y": 1695.5629892349243,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "14d86ca2.7154c3",
+        "type": "set",
+        "name": "set l3network.subnet",
+        "xml": "<set>\n<parameter name='tmp.l3-network.subnet.subnet-name' value=\"`$aai.l3-network.network-name + '_S' + $aai.l3-network.subnets.subnet_length`\" />\n",
+        "comments": "",
+        "x": 1393.3296279907227,
+        "y": 1578.869887828827,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "3cc191c.8042f6e",
+        "type": "other",
+        "name": "N",
+        "xml": "<outcome value='N'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1289.4406433105469,
+        "y": 1804.584153175354,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "68a37c0d.2a6604"
+            ]
+        ]
+    },
+    {
+        "id": "71a33119.8d0e1",
+        "type": "set",
+        "name": "set dhcp data",
+        "xml": "<set>\n<parameter name='tmp.l3-network.subnet.dhcp-enabled' value='false' />\n<parameter name='tmp.l3-network.subnet.dhcp-start' value='' />\n<parameter name='tmp.l3-network.subnet.dhcp-end' value='' />\n\n\n",
+        "comments": "",
+        "x": 1649.4406433105469,
+        "y": 1803.1555948257446,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "68a37c0d.2a6604",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1450.1391143798828,
+        "y": 1804.5206508636475,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "71a33119.8d0e1"
+            ]
+        ]
+    },
+    {
+        "id": "76b8ab04.2a4724",
+        "type": "not-found",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1282.3928146362305,
+        "y": 1168.3975982666016,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "686791c9.12b07"
+            ]
+        ]
+    },
+    {
+        "id": "7437f146.91864",
+        "type": "get-resource",
+        "name": "get AnAI - l3-network by network-id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $pfx.eipam-initial-subnet.network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"aai.l3-network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1047.1149215698242,
+        "y": 1172.8822021484375,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "76b8ab04.2a4724",
+                "d141964d.436768"
+            ]
+        ]
+    },
+    {
+        "id": "d141964d.436768",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1275.1149215698242,
+        "y": 1206.8822021484375,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "4b5e945f.17c4cc"
+            ]
+        ]
+    },
+    {
+        "id": "1d533385.91dbac",
+        "type": "switchNode",
+        "name": "switch get current # of subnets",
+        "xml": "<switch test='`$aai.l3-network.subnets.subnet_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1013.4286193847656,
+        "y": 1541.754774570465,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "683368b.b1aa498",
+                "823674a7.f95ee8"
+            ]
+        ]
+    },
+    {
+        "id": "683368b.b1aa498",
+        "type": "other",
+        "name": "outcome Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1237.1786270141602,
+        "y": 1540.504774570465,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "ae7ce728.270eb8"
+            ]
+        ]
+    },
+    {
+        "id": "823674a7.f95ee8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1223.178611755371,
+        "y": 1579.2547793388367,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "14d86ca2.7154c3"
+            ]
+        ]
+    },
+    {
+        "id": "4b5e945f.17c4cc",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"'Error retrieving l3-network with network-id=' + $pfx.eipam-initial-subnet.network-id + 'from AnAI'\" />",
+        "comments": "",
+        "x": 1426.142837524414,
+        "y": 1208.3976211547852,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "686791c9.12b07",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"'l3-network with network-id=' + $pfx.eipam-initial-subnet.network-id + 'Not found in AnAI'\" />",
+        "comments": "",
+        "x": 1438.6428146362305,
+        "y": 1167.1475982666016,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "ae7ce728.270eb8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"'No subnets found in AAI for network-id=' + $pfx.eipam-initial-subnet.network-id\" />",
+        "comments": "",
+        "x": 1404.1786270141602,
+        "y": 1540.004744052887,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "e81fdab.a073e28",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"'Cannot save subnet with l3 network-id=' + $pfx.eipam-initial-subnet.network-id + ' And subnet-id=' + $eipam-ip-block.entity-id  + ' in AnAI'\" />",
+        "comments": "",
+        "x": 1392.928623199463,
+        "y": 1851.2547779083252,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "38409251.785ace",
+        "type": "execute",
+        "name": "execute Contrail API create subnet",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='subnet' />\n<parameter name='api-action' value='add' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='contrail-virtual-network-id' value='`$pfx.eipam-initial-subnet.network-id`' />\n<parameter name='ip-prefix' value='`$eipam-ip-block.ip-prefix`' />\n<parameter name='ip-prefix-len' value='`$eipam-ip-block.prefix-length`' />\n<parameter name='dns-server-address' value='0.0.0.0' />\n<parameter name='enable-dhcp' value='`$tmp.l3-network.subnet.dhcp-enabled`' />\n<parameter name='default-gateway' value='`$tmp.return.generate.gateway-address`' />\n<parameter name='subnet-name' value='`$tmp.l3-network.subnet.subnet-name`' />\n<parameter name='start' value='`$tmp.l3-network.subnet.dhcp-start`' />\n<parameter name='end' value='`$tmp.l3-network.subnet.dhcp-end`' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1010.4286422729492,
+        "y": 1985.004786491394,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "3f3c4dfb.edd672",
+                "b55baea1.688c1"
+            ]
+        ]
+    },
+    {
+        "id": "3f3c4dfb.edd672",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1315.5594863891602,
+        "y": 1961.897045765072,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "dd95f113.bb3b3"
+            ]
+        ]
+    },
+    {
+        "id": "b55baea1.688c1",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1313.6548080444336,
+        "y": 1994.8969855308533,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "2cdedcb.0fb6624"
+            ]
+        ]
+    },
+    {
+        "id": "b618419.a7745c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Failed to create subnet in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `\" />\n",
+        "comments": "",
+        "x": 1611.0595741271973,
+        "y": 2134.2303714752197,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "dd95f113.bb3b3",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1467.7499694824219,
+        "y": 1962.5637707710266,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e60d143a.a53bf8",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"Added an entry for subnet-allocated-notification in EIPAM_IP_SUBNETS and EIPAM_IP_SUBNET_KEYS\"/>\n<parameter name=\"field3\" value=\"`$eipam-ip-block.request-id`\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.entity-id`\"/>\n<parameter name=\"field5\" value=\"`$pfx.eipam-initial-subnet.network-id`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.ip-address`\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.prefix-length`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.status`\"/>\n<parameter name=\"field9\" value=\"`$tmp.key-value`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 946.6785659790039,
+        "y": 1397.504783630371,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "eccae1c1.cfd61",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"Added a subnetin AAI\"/>\n<parameter name=\"field3\" value=\"`$eipam-ip-block.request-id`\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.entity-id`\"/>\n<parameter name=\"field5\" value=\"`$pfx.eipam-initial-subnet.network-id`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.ip-address`\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.prefix-length`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.status`\"/>\n<parameter name=\"field9\" value=\"`$tmp.key-value`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 920.4286041259766,
+        "y": 1918.7547497749329,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3b0f0963.0e3606",
+        "type": "set",
+        "name": "set request-id",
+        "xml": "<set>\n<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n",
+        "comments": "",
+        "x": 989.8928298950195,
+        "y": 1220.8976154327393,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "605747f6.c15988",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"Added a subnet in Contrail\"/>\n<parameter name=\"field3\" value=\"`$eipam-ip-block.request-id`\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.entity-id`\"/>\n<parameter name=\"field5\" value=\"`$pfx.eipam-initial-subnet.network-id`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.ip-address`\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.prefix-length`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.status`\"/>\n<parameter name=\"field9\" value=\"`$tmp.key-value`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 919.1786041259766,
+        "y": 2046.2547497749329,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2cdedcb.0fb6624",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1437.9285888671875,
+        "y": 2021.2547874450684,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "203ea735.c779e8",
+                "1daaf7b.fd32308",
+                "57933b03.0c74f4",
+                "b618419.a7745c",
+                "7712a.3fec4ed6c"
+            ]
+        ]
+    },
+    {
+        "id": "325c38e8.bf4558",
+        "type": "execute",
+        "name": "execute EIPAM activateSubnet",
+        "xml": "<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"activateSubnet\">\n",
+        "comments": "subnet and subnet_keys are deleted in the EIPAMPlugin",
+        "outputs": 1,
+        "x": 900.4285507202148,
+        "y": 2383.7548093795776,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "756e1a89.f634c4"
+            ]
+        ]
+    },
+    {
+        "id": "756e1a89.f634c4",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>",
+        "outputs": 1,
+        "x": 1110.428581237793,
+        "y": 2385.1451749801636,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "1699aa2c.f5ddc6"
+            ]
+        ]
+    },
+    {
+        "id": "1699aa2c.f5ddc6",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while activating subnet in EIPAM.\" />\n\t",
+        "comments": "",
+        "x": 1274.4285621643066,
+        "y": 2383.8594675064087,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "22f00d11.312d02",
+        "type": "save",
+        "name": "Update subnet to Active in DB",
+        "xml": "<save \n\tplugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' \n\tresource='SQL'\n\tkey=\"UPDATE EIPAM_IP_SUBNETS\n             SET status = 'ACTIVE'\n             WHERE entity_id = $eipam-ip-block.entity-id ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-row'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 899.0000534057617,
+        "y": 2423.754755973816,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "3f14a040.36a47",
+                "42f12379.83832c",
+                "ca35bb05.971478"
+            ]
+        ]
+    },
+    {
+        "id": "66665ee9.9b772",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while updating subnet to active in mysql.\" />\n\t",
+        "comments": "",
+        "x": 1267.571434020996,
+        "y": 2430.8976316452026,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "ca35bb05.971478",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1118.1430282592773,
+        "y": 2498.897602081299,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3f14a040.36a47",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1118.4333114624023,
+        "y": 2432.8976316452026,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "66665ee9.9b772"
+            ]
+        ]
+    },
+    {
+        "id": "42f12379.83832c",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value=\"not-found\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1119.2904205322266,
+        "y": 2467.1833522617817,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "30dfa1a7.69502e"
+            ]
+        ]
+    },
+    {
+        "id": "30dfa1a7.69502e",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while updating subnet to active in mysql.\" />\n\t",
+        "comments": "",
+        "x": 1266.571273803711,
+        "y": 2463.18338277936,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "75fff231.25968c",
+        "type": "save",
+        "name": "update AnAI - subnet",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $aai.l3-network.network-id \n\t\t\tAND subnet.subnet-id = $eipam-ip-block.entity-id\" >\n<parameter name=\"orchestration-status\" value=\"Created\" />\n\t\t",
+        "comments": "",
+        "outputs": 1,
+        "x": 877.3928356170654,
+        "y": 2559.806347846985,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "6e21e203.9f313c",
+                "b79fac42.5e29"
+            ]
+        ]
+    },
+    {
+        "id": "5827e3d6.a2347c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Failure updating orchestration-status in AAI for subnet.\" />\n\t",
+        "comments": "",
+        "x": 1269.1390056610107,
+        "y": 2549.6475925445557,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "d0969e92.5f504",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1119.710599899292,
+        "y": 2617.647562980652,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "c283102d.9a28"
+            ]
+        ]
+    },
+    {
+        "id": "6e21e203.9f313c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1108.5722465515137,
+        "y": 2555.933322906494,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "5827e3d6.a2347c"
+            ]
+        ]
+    },
+    {
+        "id": "b79fac42.5e29",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value=\"not-found\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1120.8579921722412,
+        "y": 2585.9333131611347,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "29983bc9.4f3514"
+            ]
+        ]
+    },
+    {
+        "id": "c283102d.9a28",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1272.4246883392334,
+        "y": 2619.076183319092,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "29983bc9.4f3514",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"Failure updating orchestration-status in AAI for subnet.  Subnet not found.\" />\n\t",
+        "comments": "",
+        "x": 1268.1388454437256,
+        "y": 2581.933343678713,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "d916c321.529dc",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": " <return status=\"success\">\n \t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n",
+        "comments": "",
+        "x": 856.6785774230957,
+        "y": 2645.004796028137,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "203ea735.c779e8",
+        "type": "save",
+        "name": "Update subnet to ERROR in DB",
+        "xml": "<save \n\tplugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' \n\tresource='SQL'\n\tkey=\"UPDATE EIPAM_IP_SUBNETS\n             SET status = 'ERROR'\n             WHERE entity_id = $eipam-ip-block.entity-id ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-row'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1630.428565979004,
+        "y": 2021.2547569274902,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "d9c60cd1.3e061",
+                "eb6e865f.03b368"
+            ]
+        ]
+    },
+    {
+        "id": "a3879ce0.868fd",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while updating subnet to ERROR in mysql.\" />\n\t",
+        "comments": "",
+        "x": 1998.9999465942383,
+        "y": 2028.397632598877,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "d9c60cd1.3e061",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1849.8618240356445,
+        "y": 2030.397632598877,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "a3879ce0.868fd"
+            ]
+        ]
+    },
+    {
+        "id": "eb6e865f.03b368",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value=\"not-found\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1850.7189331054688,
+        "y": 2064.683353215456,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "2a29d972.a51706"
+            ]
+        ]
+    },
+    {
+        "id": "2a29d972.a51706",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while updating subnet to ERROR in mysql.\" />\n\t",
+        "comments": "",
+        "x": 1997.9997863769531,
+        "y": 2060.683383733034,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "1daaf7b.fd32308",
+        "type": "delete",
+        "name": "delete subnet from AAI",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\tkey=\"l3-network.network-id = $pfx.eipam-initial-subnet.network-id\n\t\t\t\tAND subnet.subnet-id = $eipam-ip-block.entity-id\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1605.4285888671875,
+        "y": 2063.7547874450684,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "57933b03.0c74f4",
+        "type": "save",
+        "name": "save MDSAL: status = ERROR",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource\" resource=\"eipam-ip-block\">\n\t<parameter name=\"eipam-ip-block.status\" value=\"ERROR\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1634.178596496582,
+        "y": 2100.004789352417,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f634ef3e.b5b91",
+        "type": "save",
+        "name": "update AnAI - subnet with status Created",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $pfx.eipam-initial-subnet.network-id \n\t\t\tAND subnet.subnet-id = $eipam-ip-block.entity-id\" >\n\t<parameter name=\"orchestration-status\" value=\"Created\" />\n\t\t",
+        "comments": "",
+        "outputs": 1,
+        "x": 972.9285659790039,
+        "y": 2140.0047569274902,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "b228a3df.0cce8",
+                "ff5cf0b4.7228d"
+            ]
+        ]
+    },
+    {
+        "id": "b228a3df.0cce8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1204.178581237793,
+        "y": 2137.504789352417,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "45874148.accf2"
+            ]
+        ]
+    },
+    {
+        "id": "ff5cf0b4.7228d",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1207.901725769043,
+        "y": 2098.897855758667,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e4838ecb.b8673",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"'Cannot save subnet status to Created with l3 network-id=' + $pfx.eipam-initial-subnet.network-id + ' And subnet-id=' + $eipam-ip-block.entity-id  + ' in AnAI'\" />",
+        "comments": "",
+        "x": 1487.2668685913086,
+        "y": 2378.8857164382935,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "346f479b.225938",
+        "type": "save",
+        "name": "Update subnet to ERROR in DB",
+        "xml": "<save \n\tplugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' \n\tresource='SQL'\n\tkey=\"UPDATE EIPAM_IP_SUBNETS\n             SET status = 'ERROR'\n             WHERE entity_id = $eipam-ip-block.entity-id ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-row'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1534.1785888671875,
+        "y": 2197.504789829254,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "56abfd21.fa7d64",
+                "fd0ca37a.c8e48"
+            ]
+        ]
+    },
+    {
+        "id": "19a9415f.cf00ff",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while updating subnet to ERROR in mysql.\" />\n\t",
+        "comments": "",
+        "x": 1902.7499694824219,
+        "y": 2204.647665500641,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "56abfd21.fa7d64",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1753.6118469238281,
+        "y": 2206.647665500641,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "19a9415f.cf00ff"
+            ]
+        ]
+    },
+    {
+        "id": "fd0ca37a.c8e48",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value=\"not-found\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1754.4689559936523,
+        "y": 2240.93338611722,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "86fbd250.1c628"
+            ]
+        ]
+    },
+    {
+        "id": "86fbd250.1c628",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while updating subnet to ERROR in mysql.\" />\n\t",
+        "comments": "",
+        "x": 1901.7498092651367,
+        "y": 2236.933416634798,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "7cdf33b.16065cc",
+        "type": "delete",
+        "name": "delete subnet from AAI",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\tkey=\"l3-network.network-id = $pfx.eipam-initial-subnet.network-id\n\t\t\t\tAND subnet.subnet-id = $eipam-ip-block.entity-id\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1509.178611755371,
+        "y": 2240.0048203468323,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f13e3925.587088",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"Update status to Created failed in AAI\"/>\n<parameter name=\"field3\" value=\"`$eipam-ip-block.request-id`\"/>\n<parameter name=\"field4\" value=\"`$eipam-ip-block.entity-id`\"/>\n<parameter name=\"field5\" value=\"`$pfx.eipam-initial-subnet.network-id`\"/>\n<parameter name=\"field6\" value=\"`$eipam-ip-block.ip-address`\"/>\n<parameter name=\"field7\" value=\"`$eipam-ip-block.prefix-length`\"/>\n<parameter name=\"field8\" value=\"`$eipam-ip-block.status`\"/>\n<parameter name=\"field9\" value=\"`$tmp.key-value`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1452.9285736083984,
+        "y": 2161.254756450653,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "45874148.accf2",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1319.1785850524902,
+        "y": 2161.254789352417,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "f13e3925.587088",
+                "346f479b.225938",
+                "7cdf33b.16065cc",
+                "e4838ecb.b8673",
+                "baa512c3.0963a",
+                "170994e8.eee78b"
+            ]
+        ]
+    },
+    {
+        "id": "baa512c3.0963a",
+        "type": "execute",
+        "name": "execute Contrail API delete subnet",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >\n<parameter name='api-name' value='subnet' />\n<parameter name='api-action' value='delete' />\n<parameter name='resp-prefix' value='contrailResp' />\n<parameter name='contrail-virtual-network-id' value='`$pfx.eipam-initial-subnet.network-id`' />\n<parameter name='ip-prefix' value='`$eipam-ip-block.ip-prefix`' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1540.428565979004,
+        "y": 2283.7547569274902,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "9c1ec68b.c5c7e8"
+            ]
+        ]
+    },
+    {
+        "id": "9c1ec68b.c5c7e8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1755.428565979004,
+        "y": 2280.0047569274902,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "fd4b323e.9f80e"
+            ]
+        ]
+    },
+    {
+        "id": "fd4b323e.9f80e",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Failed to delete subnet in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `\" />\n",
+        "comments": "",
+        "x": 1911.678565979004,
+        "y": 2281.2547569274902,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "57bed018.e09e4",
+        "type": "save",
+        "name": "Update subnet to CREATED in DB",
+        "xml": "<save \n\tplugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' \n\tresource='SQL'\n\tkey=\"UPDATE EIPAM_IP_SUBNETS\n             SET status = 'CREATED'\n             WHERE entity_id = $eipam-ip-block.entity-id ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-row'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 907.9285659790039,
+        "y": 2250.0047569274902,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "fc6a8361.1b23e",
+                "f102d632.e2c298"
+            ]
+        ]
+    },
+    {
+        "id": "453b14d.e93c4ec",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while updating subnet to CREATED in mysql.\" />\n\t",
+        "comments": "",
+        "x": 1276.4999465942383,
+        "y": 2257.147632598877,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "fc6a8361.1b23e",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1127.3618240356445,
+        "y": 2259.147632598877,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "453b14d.e93c4ec"
+            ]
+        ]
+    },
+    {
+        "id": "f102d632.e2c298",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value=\"not-found\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1128.2189331054688,
+        "y": 2293.433353215456,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "14936440.6c927c"
+            ]
+        ]
+    },
+    {
+        "id": "14936440.6c927c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<parameter name='eipam-ip-block.request-id' value=\"`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occured while updating subnet to CREATED in mysql.\" />\n\t",
+        "comments": "",
+        "x": 1275.4997863769531,
+        "y": 2289.433383733034,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "436f433.ffb90bc",
+        "type": "save",
+        "name": "Update subnet to PENDING-ACTIVE in DB",
+        "xml": "<save \n\tplugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' \n\tresource='SQL'\n\tkey=\"UPDATE EIPAM_IP_SUBNETS\n             SET status = 'PENDING-ACTIVE'\n             WHERE entity_id = $eipam-ip-block.entity-id ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-row'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1212.928565979004,
+        "y": 103.75475692749023,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "72c4110c.bb7ed",
+        "type": "save",
+        "name": "Update subnet to ERROR in DB",
+        "xml": "<save \n\tplugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' \n\tresource='SQL'\n\tkey=\"UPDATE EIPAM_IP_SUBNETS\n             SET \n             status = 'ERROR',\n             dealloc_failure = 'deletePool failed in response to NCS_IP_SUBNET_INSTALL_ERROR'\n             WHERE entity_id = $eipam-ip-block.entity-id ; \"\n    force='true'\n        pfx='pfx.eipam-subnet-row'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1303.8214263916016,
+        "y": 446.4333562850952,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7712a.3fec4ed6c",
+        "type": "set",
+        "name": "set: status = ERROR",
+        "xml": "<set>\n\t<parameter name=\"eipam-ip-block.status\" value=\"ERROR\" />",
+        "x": 1632.5714797973633,
+        "y": 1984.1118841171265,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "170994e8.eee78b",
+        "type": "set",
+        "name": "set: status = ERROR",
+        "xml": "<set>\n\t<parameter name=\"eipam-ip-block.status\" value=\"ERROR\" />",
+        "x": 1502.571388244629,
+        "y": 2329.8262901306152,
+        "z": "1aeff3d2.0f322c",
+        "wires": []
+    },
+    {
+        "id": "38037809.d5abe8",
+        "type": "get-resource",
+        "name": "get-resource - vpe_pool",
+        "xml": "<get-resource\n        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'\n        resource='SQL'\n        key=\"SELECT * FROM VPE_POOL where vpe_name = $eipam-ip-block.ptnii-name ;\"\n        pfx='tmp.vpe-pool-row'>\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 490.00001525878906,
+        "y": 247.50000476837158,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8d875ca6.a136",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 290.0000057220459,
+        "y": 283.7500057220459,
+        "z": "1aeff3d2.0f322c",
+        "wires": [
+            [
+                "8ad2bbea.c97f08"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-activate.json
new file mode 100644
index 0000000..3a50865
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-activate.json
@@ -0,0 +1,2267 @@
+[
+  {
+    "id": "93b0ef5b.3e408",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 139,
+    "y": 54,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "a7b13cb2.c08d5"
+      ]
+    ]
+  },
+  {
+    "id": "a7b13cb2.c08d5",
+    "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": 330.0000057220459,
+    "y": 124.00001811981201,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "5d2c2651.f9a3d8"
+      ]
+    ]
+  },
+  {
+    "id": "5d2c2651.f9a3d8",
+    "type": "method",
+    "name": "sdwan-attachment-topology-operation-activate",
+    "xml": "<method rpc='sdwan-attachment-topology-operation-activate' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 318.00012397766113,
+    "y": 212.00000095367432,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "c8d63fe2.b2b23"
+      ]
+    ]
+  },
+  {
+    "id": "c8d63fe2.b2b23",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 220.00013732910156,
+    "y": 898.0002890825272,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "d462bbd.082f148",
+        "ce900383.4855d",
+        "bc468479.f5a808",
+        "cc58fb4f.38c9d8",
+        "5687be1a.59a66",
+        "a1d43226.8d32d",
+        "a6ce139d.8cd82",
+        "fcbe570.434f0a8",
+        "e2fb4f17.bce7a",
+        "3aed3696.4cf77a",
+        "e78f2c1f.7461f",
+        "f801a0de.16907",
+        "d4bcebf0.e04a68",
+        "a351ad64.5b62",
+        "169bc249.b8cede",
+        "86489e85.9e429",
+        "6a1b7e4b.2ba26",
+        "7ad41615.6876c8",
+        "fb5be39e.fa586",
+        "2406d281.b1df1e",
+        "4e50db83.d2f224",
+        "862cb704.9f9128",
+        "4e5f3349.352d6c",
+        "28b00a13.902c76",
+        "9a0f8d9a.4d443",
+        "f9894d64.11723"
+      ]
+    ]
+  },
+  {
+    "id": "d462bbd.082f148",
+    "type": "set",
+    "name": "set tmp.ar.allotted-resource-id,etc",
+    "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n",
+    "comments": "",
+    "x": 730.9935626983643,
+    "y": 165.99348783493042,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "1a77342a.e82ccc",
+    "type": "comment",
+    "name": "set tmp ar-id to fetch resource from MDSAL",
+    "info": "",
+    "comments": "",
+    "x": 759.9538745880127,
+    "y": 130.02528381347656,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "ce900383.4855d",
+    "type": "set",
+    "name": "set tmp.ar.self-link",
+    "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/connection-attachment-topology/'` \" />\n\n",
+    "comments": "",
+    "x": 684.993501663208,
+    "y": 258.99349308013916,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "cc58fb4f.38c9d8",
+    "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": 691.255392074585,
+    "y": 346.66022205352783,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "bc468479.f5a808",
+    "type": "execute",
+    "name": "generate allotted-resource tmp.ar-url",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 738.255449295044,
+    "y": 434.6602258682251,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "cd648838.9eb298",
+    "type": "comment",
+    "name": "GET connection-attachment-allotted-resource from mdsal",
+    "info": "",
+    "comments": "",
+    "x": 792.8084106445312,
+    "y": 503.53865146636963,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "9dbfb79f.f4be18",
+    "type": "comment",
+    "name": "Used for setting output to API Handler",
+    "info": "",
+    "comments": "",
+    "x": 738.9935321807861,
+    "y": 225.99350261688232,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "247d684d.e973f8",
+    "type": "comment",
+    "name": "Obtain different URL, template location etc",
+    "info": "For saving resource information to MDSAL & for AAI",
+    "comments": "",
+    "x": 756.9934978485107,
+    "y": 311.8823833465576,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "6426cfba.672b8",
+    "type": "comment",
+    "name": "Used to Get AR by id to MDSAL, same as self-link",
+    "info": "",
+    "comments": "",
+    "x": 782.9935169219971,
+    "y": 398.882342338562,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "406068c.1da4a98",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1246.6668224334717,
+    "y": 516.999979019165,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "519eae9c.9b2f6"
+      ]
+    ]
+  },
+  {
+    "id": "519eae9c.9b2f6",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1390.6669006347656,
+    "y": 474.4998970031738,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "d1dd16e9.faf918"
+      ]
+    ]
+  },
+  {
+    "id": "d1dd16e9.faf918",
+    "type": "switchNode",
+    "name": "switch cr length",
+    "xml": "<switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1559.5243244171143,
+    "y": 472.11906814575195,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "6a124f25.b362a",
+        "caf37a34.d778a8"
+      ]
+    ]
+  },
+  {
+    "id": "6a124f25.b362a",
+    "type": "other",
+    "name": "outcome 1",
+    "xml": "<outcome value='1'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1714.8574600219727,
+    "y": 444.1189832687378,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "d1a8c266.f1b55"
+      ]
+    ]
+  },
+  {
+    "id": "d1a8c266.f1b55",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic='true'>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1873.3812637329102,
+    "y": 442.02383041381836,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "bb518772.b81358",
+        "645ade11.426a1",
+        "44255d43.96da34"
+      ]
+    ]
+  },
+  {
+    "id": "2aedf56b.f1b1ba",
+    "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=\"Error: Connection attachment resource not exist\" />\n    \n",
+    "comments": "",
+    "x": 1813.5191955566406,
+    "y": 549.0660648345947,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "e00fd6fc.ea7778",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1238.5186252593994,
+    "y": 552.0660638809204,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "d0418e39.56684"
+      ]
+    ]
+  },
+  {
+    "id": "d0418e39.56684",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1418.518575668335,
+    "y": 552.7326145172119,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "2aedf56b.f1b1ba"
+      ]
+    ]
+  },
+  {
+    "id": "caf37a34.d778a8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1706.1854629516602,
+    "y": 503.39935779571533,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "2aedf56b.f1b1ba"
+      ]
+    ]
+  },
+  {
+    "id": "bb518772.b81358",
+    "type": "set",
+    "name": "set connection-attachment-ar from get",
+    "xml": "<set>\n<parameter name='connection-attachment-ar.' value='$mdsal-ar.connection-attachment-allotted-resource[0].' />\n",
+    "comments": "",
+    "x": 2120.4447174072266,
+    "y": 415.00008249282837,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "645ade11.426a1",
+    "type": "set",
+    "name": "set oper-status",
+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-ar.allotted-resource-status.rpc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
+    "comments": "",
+    "x": 2069.444986343384,
+    "y": 517.4286185503006,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "44255d43.96da34",
+    "type": "switchNode",
+    "name": "switch order-status",
+    "xml": "<switch test='`$connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2071.444803237915,
+    "y": 457.0000435113907,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "48830e3c.30889",
+        "2b84fa59.5b57c6"
+      ]
+    ]
+  },
+  {
+    "id": "2b84fa59.5b57c6",
+    "type": "outcome",
+    "name": "outcome Created",
+    "xml": "<outcome value='Created'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2299.0451526641846,
+    "y": 448.00010073184967,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "45156448.968e9c"
+      ]
+    ]
+  },
+  {
+    "id": "48830e3c.30889",
+    "type": "outcome",
+    "name": "outcome Other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2293.759048461914,
+    "y": 487.42865800857544,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "a911339e.75cc3"
+      ]
+    ]
+  },
+  {
+    "id": "45156448.968e9c",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2458.515281677246,
+    "y": 448.37570571899414,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a911339e.75cc3",
+    "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\" \n    value=\"`'Existing connection-attachment-allotted-resource with order status of ' + $connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`\" />\n",
+    "comments": "",
+    "x": 2469.666862487793,
+    "y": 486.000057220459,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "233d3f47.5a62d",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:sdwan-get-saved-ar-param",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-saved-ar-param' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 963.3030433654785,
+    "y": 623.4936294555664,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "5687be1a.59a66",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 657.3091430664062,
+    "y": 624.5,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "233d3f47.5a62d"
+      ]
+    ]
+  },
+  {
+    "id": "9b9946c9.3f3d68",
+    "type": "comment",
+    "name": "GET parent-service-data from mdsal to check existence of other End point",
+    "info": "",
+    "comments": "",
+    "x": 835.00048828125,
+    "y": 695.53173828125,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "2f29782e.56da68",
+    "type": "comment",
+    "name": "GET connection-attachment-ar to store AR data from mdsal",
+    "info": "",
+    "comments": "",
+    "x": 2182.4727783203125,
+    "y": 375.5039367675781,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "a1d43226.8d32d",
+    "type": "set",
+    "name": "set tmp.ar.parent-service-instance-id",
+    "xml": "<set>\n<parameter name='tmp.ar.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n\n",
+    "comments": "",
+    "x": 720.9688110351562,
+    "y": 725.0001220703125,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "9e759fa5.c7253",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1080.968978881836,
+    "y": 782.0000915527344,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "b7458f6f.6b103"
+      ]
+    ]
+  },
+  {
+    "id": "5edd87c2.935d58",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1072.8207817077637,
+    "y": 817.0661764144897,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "45257af8.9c6094"
+      ]
+    ]
+  },
+  {
+    "id": "45257af8.9c6094",
+    "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=\"Error: Parent service data not available\" />\n    \n",
+    "comments": "",
+    "x": 1218.9695625305176,
+    "y": 816.3335876464844,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "b7458f6f.6b103",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1211.9690742492676,
+    "y": 782.0001525878906,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "41e65fa0.2c10b",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 894.7313137054443,
+    "y": 2142.9540371894836,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "b6c4d495.4bdad8"
+      ]
+    ]
+  },
+  {
+    "id": "b6c4d495.4bdad8",
+    "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=\"AAI failed\" />\n",
+    "comments": "",
+    "x": 1061.2551345825195,
+    "y": 2169.5730443000793,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "691b6216.46804c",
+    "type": "failure",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 896.8265419006348,
+    "y": 2190.715879917145,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "b6c4d495.4bdad8"
+      ]
+    ]
+  },
+  {
+    "id": "39d44506.fc1dea",
+    "type": "comment",
+    "name": "Save Resource to AAI",
+    "info": "",
+    "comments": "",
+    "x": 668.7789573669434,
+    "y": 2131.3032002449036,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "169bc249.b8cede",
+    "type": "set",
+    "name": "set output to api handler",
+    "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='connection-attachment-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $connection-attachment-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+    "comments": "",
+    "x": 683.5466537475586,
+    "y": 2052.8286814689636,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "86489e85.9e429",
+    "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": 643.9598255157471,
+    "y": 2238.4444699287415,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "a351ad64.5b62",
+    "type": "execute",
+    "name": "execute RestApiCallNode - PUT AR by id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.sdwan-attachment.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 736.278736114502,
+    "y": 1977.4695343971252,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "7f052e3d.cfc45",
+        "9a139c80.89827",
+        "c0ebd24f.2c1be"
+      ]
+    ]
+  },
+  {
+    "id": "7f052e3d.cfc45",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 990.9201583862305,
+    "y": 2021.8009285926819,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "d5b448a4.f99588"
+      ]
+    ]
+  },
+  {
+    "id": "9a139c80.89827",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 992.9201812744141,
+    "y": 1980.3008927330375,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "d5b448a4.f99588"
+      ]
+    ]
+  },
+  {
+    "id": "c0ebd24f.2c1be",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 996.6702651977539,
+    "y": 1931.6580452919006,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "da728790.b76f18"
+      ]
+    ]
+  },
+  {
+    "id": "d5b448a4.f99588",
+    "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 updating md-sal for connection-attachment-allotted-resource\" />\n",
+    "comments": "",
+    "x": 1151.6702842712402,
+    "y": 2000.05095911026,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "da728790.b76f18",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1124.3262100219727,
+    "y": 1933.8502135276794,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "3aed3696.4cf77a",
+    "type": "set",
+    "name": "set ar-data",
+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-status.action' value=\"`$connection-attachment-topology-operation-input.request-information.request-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value=\"connection-attachment-topology-operation\" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$connection-attachment-topology-operation-input.request-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$connection-attachment-topology-operation-input.service-information.` \" />\n",
+    "comments": "",
+    "x": 638.4923515319824,
+    "y": 1811.8504354953766,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "f801a0de.16907",
+    "type": "execute",
+    "name": "execute getTime",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 655.7781944274902,
+    "y": 1884.4700331687927,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "d4bcebf0.e04a68",
+    "type": "set",
+    "name": "set allotted-resource-oper-status",
+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+    "comments": "",
+    "x": 705.7652740478516,
+    "y": 1921.4211134910583,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "e78f2c1f.7461f",
+    "type": "set",
+    "name": "set model-data",
+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` \" />",
+    "comments": "",
+    "x": 652.3338928222656,
+    "y": 1851.025085926056,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "82a1071f.9cdd18",
+    "type": "comment",
+    "name": "Prepare data for allotted-resource addition to MDSAL",
+    "info": "This will add to allotted-resource which is present inside service.",
+    "comments": "",
+    "x": 763.6673889160156,
+    "y": 1773.0250434875488,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "74588870.73e178",
+    "type": "comment",
+    "name": "Add to allotted-resources in mdsal",
+    "info": "",
+    "comments": "",
+    "x": 707.2471809387207,
+    "y": 1739.4383397102356,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "4e5f3349.352d6c",
+    "type": "update",
+    "name": "update AAI allotted-resource",
+    "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"description\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`\" />\n\t<parameter name=\"selflink\" value=\"`$tmp.ar.self-link`\" />\n\t<parameter name=\"model-invariant-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`\" />\n\t<parameter name=\"model-version-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`\" />\n\t<parameter name=\"operational-status\" value=\"Active\" />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 695.2232360839844,
+    "y": 2168.7553429603577,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "41e65fa0.2c10b",
+        "691b6216.46804c"
+      ]
+    ]
+  },
+  {
+    "id": "a6ce139d.8cd82",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 867.0039672851562,
+    "y": 535.00390625,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "406068c.1da4a98",
+        "e00fd6fc.ea7778"
+      ]
+    ]
+  },
+  {
+    "id": "fcbe570.434f0a8",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get-resource parent service data",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-psd\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 790.0040893554688,
+    "y": 798.0040893554688,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "9e759fa5.c7253",
+        "5edd87c2.935d58"
+      ]
+    ]
+  },
+  {
+    "id": "e2fb4f17.bce7a",
+    "type": "execute",
+    "name": "get parent-service-data url",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-psd\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 690.0039978027344,
+    "y": 761.0039224624634,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "1f1e2af2.8cbfa5",
+    "type": "set",
+    "name": "set prop.ar.provided-allotted-resource-id",
+    "xml": "<set>\n<parameter name='prop.ar.provided-allotted-resource-id' value='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id`' />\n\n",
+    "comments": "",
+    "x": 1547.9964752197266,
+    "y": 850.1218557357788,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "fc107783.f66638",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2053.9970703125,
+    "y": 944.4551391601562,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "23bfc366.b2fa3c"
+      ]
+    ]
+  },
+  {
+    "id": "d6f3b7ed.897558",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2057.848445892334,
+    "y": 906.52121925354,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "62911322.6e35fc"
+      ]
+    ]
+  },
+  {
+    "id": "69edf94d.eac048",
+    "type": "for",
+    "name": "for arvidx.. mdsal-sd.service-data.vnfs.vnf_length[]",
+    "xml": "<for index='arvidx' start='0' end='`$mdsal-sd.service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1949.9976425170898,
+    "y": 1672.1222692728043,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "764ffe4a.681ad"
+      ]
+    ]
+  },
+  {
+    "id": "764ffe4a.681ad",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1709.6641387939453,
+    "y": 1744.1224619150162,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "b8e7c061.bd378"
+      ]
+    ]
+  },
+  {
+    "id": "b8e7c061.bd378",
+    "type": "switchNode",
+    "name": "switch ActivateSiteInstance",
+    "xml": "<switch test=\"`$mdsal-sd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`\">\n\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1922.5293731689453,
+    "y": 1745.3203302621841,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "af3c96cc.a1d208"
+      ]
+    ]
+  },
+  {
+    "id": "af3c96cc.a1d208",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2127.52872467041,
+    "y": 1748.3203264474869,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "a89b6820.3b89d8"
+      ]
+    ]
+  },
+  {
+    "id": "8d253099.60ab9",
+    "type": "set",
+    "name": "set tmp.sitevidx ",
+    "xml": "<set>\n<parameter name='tmp.sitevidx' value='`$arvidx`' />\n\n",
+    "comments": "",
+    "x": 2471.528896331787,
+    "y": 1728.3206740617752,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "6d8cc41a.be1cfc",
+    "type": "set",
+    "name": "set prop.ar-parent-service-instance-id",
+    "xml": "<set>\n<parameter name='prop.ar-parent-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id`' />                                                                                                                                                                                        \n",
+    "comments": "",
+    "x": 1698.9970703125,
+    "y": 1091.1221185922623,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "f4b5259e.86dd38",
+    "type": "for",
+    "name": "for loop aridx - Get role from allotted resource",
+    "xml": "<for index=\"aridx\" start=\"0\" end=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1725.9965839385986,
+    "y": 1048.6217069625854,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "4483e9ee.7ffd68"
+      ]
+    ]
+  },
+  {
+    "id": "c5da2f8.eb203d",
+    "type": "switchNode",
+    "name": "switch Role",
+    "xml": "<switch test=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'role'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2156.9968280792236,
+    "y": 1014.621829032898,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "4dcb3b71.c91564"
+      ]
+    ]
+  },
+  {
+    "id": "4dcb3b71.c91564",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2296.9970722198486,
+    "y": 1012.6219511032104,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "abbbe638.28eb78"
+      ]
+    ]
+  },
+  {
+    "id": "abbbe638.28eb78",
+    "type": "set",
+    "name": "set prop.role",
+    "xml": "<set>\n<parameter name='prop.role' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />\n",
+    "comments": "",
+    "x": 2440.9978046417236,
+    "y": 1012.2218046188354,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "96905d4d.266e3",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2004.9968872070312,
+    "y": 1191.1219259500504,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "20f71ccb.8bb9b4"
+      ]
+    ]
+  },
+  {
+    "id": "6d849909.165408",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2002.8492164611816,
+    "y": 1152.18805372715,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "f2dcd85c.bce9e8"
+      ]
+    ]
+  },
+  {
+    "id": "62911322.6e35fc",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2183.996570587158,
+    "y": 903.6216526031494,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "23bfc366.b2fa3c",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1349.496524810791,
+    "y": 1083.6217823028564,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "f4b5259e.86dd38",
+        "6d8cc41a.be1cfc",
+        "eed01b55.d04f18",
+        "48c9897c.fcd5b8"
+      ]
+    ]
+  },
+  {
+    "id": "f2dcd85c.bce9e8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2132.4974098205566,
+    "y": 1145.6220136880875,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "20f71ccb.8bb9b4",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1731.4971466064453,
+    "y": 1270.6221548318863,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "873845fc.6f6098"
+      ]
+    ]
+  },
+  {
+    "id": "615b5e26.43cbe",
+    "type": "for",
+    "name": "for loop siteidx - Get site ID from servicedata",
+    "xml": "<for index=\"siteidx\" start=\"0\" end=\"`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2550.4985961914062,
+    "y": 1778.6224666833878,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "b6197b80.43b5b8"
+      ]
+    ]
+  },
+  {
+    "id": "dbd732d1.3a3c8",
+    "type": "switchNode",
+    "name": "switch siteId",
+    "xml": "<switch test=\"`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2021.501958847046,
+    "y": 1892.6239286661148,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "a928d05f.807d7"
+      ]
+    ]
+  },
+  {
+    "id": "a928d05f.807d7",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2176.5023288726807,
+    "y": 1894.6242953538895,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "7763b485.9a224c"
+      ]
+    ]
+  },
+  {
+    "id": "ae878fc7.06ea3",
+    "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": 2154.0009231567383,
+    "y": 2027.1228910684586,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "862cb704.9f9128",
+    "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": 746.9997272491455,
+    "y": 1560.6235390901566,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "9ca71cfd.a9b42",
+        "e39ed217.1ee0b"
+      ]
+    ]
+  },
+  {
+    "id": "e39ed217.1ee0b",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 990.9996814727783,
+    "y": 1581.6233559846878,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "bda5dec3.598f2"
+      ]
+    ]
+  },
+  {
+    "id": "bda5dec3.598f2",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1160.999620437622,
+    "y": 1584.6233559846878,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "d878c3fa.89f44",
+    "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": 1160.9997425079346,
+    "y": 1540.6233559846878,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "9ca71cfd.a9b42",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 993.9996204376221,
+    "y": 1540.6233559846878,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "d878c3fa.89f44"
+      ]
+    ]
+  },
+  {
+    "id": "1627716.a22478f",
+    "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": 1109.5652923583984,
+    "y": 935.2990293502808,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "2406d281.b1df1e",
+    "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": 706.0650634765625,
+    "y": 961.2993497848511,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "cc3f42f.1aaf5c",
+        "2581bcc6.214074",
+        "bc3b824e.981ad"
+      ]
+    ]
+  },
+  {
+    "id": "cc3f42f.1aaf5c",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 944.0651664733887,
+    "y": 935.2989978790283,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "1627716.a22478f"
+      ]
+    ]
+  },
+  {
+    "id": "2581bcc6.214074",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 940.5559043884277,
+    "y": 971.8731408119202,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "5dde6a53.1070f4"
+      ]
+    ]
+  },
+  {
+    "id": "bc3b824e.981ad",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 934.8889579772949,
+    "y": 1008.2064542770386,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "e1a59b7f.54e028"
+      ]
+    ]
+  },
+  {
+    "id": "5dde6a53.1070f4",
+    "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": 1097.1273345947266,
+    "y": 971.1588926315308,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "e1a59b7f.54e028",
+    "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": 1096.6615295410156,
+    "y": 1003.6456785202026,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "873845fc.6f6098",
+    "type": "for",
+    "name": "for pnidx.. mdsal-psd.service-data.networks.network_length[]",
+    "xml": "<for index='pnidx' start='0' end='`$mdsal-parentsd.service-data.networks.network_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2039.4972763061523,
+    "y": 1270.122277855873,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "d2c7de71.be999"
+      ]
+    ]
+  },
+  {
+    "id": "442e3eb2.30a6",
+    "type": "switchNode",
+    "name": "switch ActivateSDWANConnectivityInstance",
+    "xml": "<switch test=\"`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.request-information.request-action == ActivateSDWANConnectivityInstance`\">\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1886.165672302246,
+    "y": 1359.1222940683365,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "202c0d34.0eeba2"
+      ]
+    ]
+  },
+  {
+    "id": "202c0d34.0eeba2",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2142.1651248931885,
+    "y": 1357.1222330331802,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "d6c2bdb0.f6742"
+      ]
+    ]
+  },
+  {
+    "id": "ecaeb85c.a23ad8",
+    "type": "for",
+    "name": "for loop paramidx - Get topology from servicedata",
+    "xml": "<for index=\"paramidx\" start=\"0\" end=\"`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1929.1637878417969,
+    "y": 1450.1214720010757,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "55fb20e6.ae2b8"
+      ]
+    ]
+  },
+  {
+    "id": "275c933d.3e84dc",
+    "type": "switchNode",
+    "name": "switch topology",
+    "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'topology'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2383.1641483306885,
+    "y": 1437.121761918068,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "3594c1ef.8c09de"
+      ]
+    ]
+  },
+  {
+    "id": "3594c1ef.8c09de",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2532.1639041900635,
+    "y": 1432.1218839883804,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "d0fec186.f6378"
+      ]
+    ]
+  },
+  {
+    "id": "d0fec186.f6378",
+    "type": "set",
+    "name": "set topology",
+    "xml": "<set>\n<parameter name='prop.topology' value='`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
+    "comments": "",
+    "x": 2672.1640911102295,
+    "y": 1429.721799492836,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "d8436e7b.788fa",
+    "type": "switchNode",
+    "name": "switch vpnId",
+    "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'vpn-id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2370.8300952911377,
+    "y": 1475.454986691475,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "ef5a8550.4c3fc8"
+      ]
+    ]
+  },
+  {
+    "id": "ef5a8550.4c3fc8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2510.8300380706787,
+    "y": 1475.454803109169,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "ff006bb3.c58668"
+      ]
+    ]
+  },
+  {
+    "id": "ff006bb3.c58668",
+    "type": "set",
+    "name": "set prop.vpn1Id",
+    "xml": "<set>\n<parameter name='prop.vpn1Id' value='`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
+    "comments": "",
+    "x": 2658.830041885376,
+    "y": 1475.054870724678,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "4e50db83.d2f224",
+    "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": 715.9981231689453,
+    "y": 1469.1229600906372,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "22758979.541926",
+        "97cd05b9.e37ec8"
+      ]
+    ]
+  },
+  {
+    "id": "97cd05b9.e37ec8",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 935.998025894165,
+    "y": 1465.1229249238968,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "a647eec3.a66d4"
+      ]
+    ]
+  },
+  {
+    "id": "a647eec3.a66d4",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1105.9979648590088,
+    "y": 1468.1229249238968,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "8979ecea.209cb",
+    "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": 1105.9980869293213,
+    "y": 1424.1229249238968,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "22758979.541926",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 938.9979648590088,
+    "y": 1424.1229249238968,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "8979ecea.209cb"
+      ]
+    ]
+  },
+  {
+    "id": "165fa503.fcc5db",
+    "type": "set",
+    "name": "set prop.name",
+    "xml": "<set>\n<parameter name='prop.name' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />\n",
+    "comments": "",
+    "x": 2515.9968280792236,
+    "y": 1064.1214628219604,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "5a9c41c6.077e",
+    "type": "switchNode",
+    "name": "switch sdwanVpnName",
+    "xml": "<switch test=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'sdwanVpnName'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2195.4965839385986,
+    "y": 1069.1214628219604,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "a0b6a8bd.407c18"
+      ]
+    ]
+  },
+  {
+    "id": "a0b6a8bd.407c18",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2372.4968280792236,
+    "y": 1066.1214628219604,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "165fa503.fcc5db"
+      ]
+    ]
+  },
+  {
+    "id": "e752b141.db3aa",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1285.0269775390625,
+    "y": 887.3190307617188,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "1f1e2af2.8cbfa5",
+        "7752d7f6.af8778",
+        "ccfd4281.11f42"
+      ]
+    ]
+  },
+  {
+    "id": "6a1b7e4b.2ba26",
+    "type": "for",
+    "name": "for pidx..mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[]",
+    "xml": "<for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 878.18115234375,
+    "y": 896.0944213867188,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "e752b141.db3aa"
+      ]
+    ]
+  },
+  {
+    "id": "7752d7f6.af8778",
+    "type": "execute",
+    "name": "generate tmp.ar-url-connection url",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar.provided-allotted-resource-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1533.9962997436523,
+    "y": 885.6668090820312,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "ccfd4281.11f42",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-providedAr\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1682.99609375,
+    "y": 924.3333740234375,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "d6f3b7ed.897558",
+        "fc107783.f66638"
+      ]
+    ]
+  },
+  {
+    "id": "eed01b55.d04f18",
+    "type": "execute",
+    "name": "generate prop.ar-parent-service-instance-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>      \n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar-parent-service-instance-id`\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1713.3295593261719,
+    "y": 1133.0003362894058,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "48c9897c.fcd5b8",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get parent service data",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-parentsd\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1732.3295288085938,
+    "y": 1167.0004221200943,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "6d849909.165408",
+        "96905d4d.266e3"
+      ]
+    ]
+  },
+  {
+    "id": "4483e9ee.7ffd68",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1992.0272235870361,
+    "y": 1043.5311307907104,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "c5da2f8.eb203d",
+        "5a9c41c6.077e"
+      ]
+    ]
+  },
+  {
+    "id": "d6c2bdb0.f6742",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1518.0277786254883,
+    "y": 1490.5313215255737,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "ecaeb85c.a23ad8",
+        "c5c238a2.297c08",
+        "ce3038ec.f99258",
+        "7a9df6e2.06b738"
+      ]
+    ]
+  },
+  {
+    "id": "d2c7de71.be999",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1628.6634063720703,
+    "y": 1357.667093873024,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "442e3eb2.30a6"
+      ]
+    ]
+  },
+  {
+    "id": "b6197b80.43b5b8",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1853.9984703063965,
+    "y": 1894.667660355568,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "dbd732d1.3a3c8"
+      ]
+    ]
+  },
+  {
+    "id": "55fb20e6.ae2b8",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2215.027723312378,
+    "y": 1450.5314317941666,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "275c933d.3e84dc",
+        "d8436e7b.788fa"
+      ]
+    ]
+  },
+  {
+    "id": "f593f6af.001438",
+    "type": "set",
+    "name": "set prop.attach.siteId",
+    "xml": "<set>\n<parameter name='prop.attach.siteId' value='`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\n\n",
+    "comments": "",
+    "x": 2106.665012359619,
+    "y": 1968.3338705301285,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "a89b6820.3b89d8",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2286.255527496338,
+    "y": 1749.00441801548,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "8d253099.60ab9",
+        "615b5e26.43cbe"
+      ]
+    ]
+  },
+  {
+    "id": "7763b485.9a224c",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1909.755947113037,
+    "y": 1994.754342675209,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "f593f6af.001438",
+        "ae878fc7.06ea3",
+        "b4fdd461.f71598"
+      ]
+    ]
+  },
+  {
+    "id": "fb5be39e.fa586",
+    "type": "call",
+    "name": "call sdwan-wanport-vnf-topology-operation-underlay",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-wanport-vnf-topology-operation-underlay' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 765.7540149688721,
+    "y": 1677.254198551178,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "676ca60b.f8dc58",
+    "type": "comment",
+    "name": "underlay",
+    "info": "1. Get consumed AR from service data\n2. for all the AR id's get the respective AR from MDSAL\n3. From MDSAL AR get parent service instance ID\n4. Get service data based in parent service instance ID to get parent service. i.e, SDWAN Infra service\n5. Get SDWAN connectivity from looping network and check for topology\n6. from parent service data get siteAttachInstance vnf and check the role\n7. from parent service data get wanportINstance vnf and check the transportNetworkName\n8. Get provided AR from the parent service data\n9. for each of the provided ARid get the AR from MDSAL\n10.in the AR check for hub\n\n",
+    "comments": "",
+    "x": 673.722993850708,
+    "y": 1642.2231373786926,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "7ad41615.6876c8",
+    "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": 714.9999694824219,
+    "y": 861.5311733484268,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "c5c238a2.297c08",
+    "type": "set",
+    "name": "set prop.ar-service-instance-id",
+    "xml": "<set>\n<parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id`' />\n",
+    "comments": "",
+    "x": 1878.0003967285156,
+    "y": 1488.531231880188,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "ce3038ec.f99258",
+    "type": "execute",
+    "name": "generate prop.ar-service-instance-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>      \n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar-service-instance-id`\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1888.3326683044434,
+    "y": 1529.4093770980835,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "7a9df6e2.06b738",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get service data",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-sd\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1917.3327331542969,
+    "y": 1570.4093770980835,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "c31f95da.b397b8",
+        "e9b63d90.66cfc"
+      ]
+    ]
+  },
+  {
+    "id": "c31f95da.b397b8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2173.8524169921875,
+    "y": 1579.5972105264664,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "7eac2788.499098"
+      ]
+    ]
+  },
+  {
+    "id": "e9b63d90.66cfc",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2176.000087738037,
+    "y": 1618.5310827493668,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "a04199d9.f1d158"
+      ]
+    ]
+  },
+  {
+    "id": "7eac2788.499098",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2303.5006103515625,
+    "y": 1573.0311704874039,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a04199d9.f1d158",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1651.9998779296875,
+    "y": 1669.5311304330826,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "69edf94d.eac048"
+      ]
+    ]
+  },
+  {
+    "id": "816baab6.7483d8",
+    "type": "comment",
+    "name": "TODO send Email",
+    "info": "",
+    "comments": "",
+    "x": 1015.0000171661377,
+    "y": 1722.031527042389,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "b4fdd461.f71598",
+    "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": 2189.250045776367,
+    "y": 2081.753987789154,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "28b00a13.902c76",
+    "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": 703.0038986206055,
+    "y": 1079.0041399002075,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "100f91ad.a8ab3e",
+        "b78fb1a0.9e74"
+      ]
+    ]
+  },
+  {
+    "id": "100f91ad.a8ab3e",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 955.0040245056152,
+    "y": 1060.003957748413,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "6b800958.b222d8"
+      ]
+    ]
+  },
+  {
+    "id": "b78fb1a0.9e74",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 947.2540588378906,
+    "y": 1095.6470804214478,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "eaf6ab13.cd7508"
+      ]
+    ]
+  },
+  {
+    "id": "eaf6ab13.cd7508",
+    "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": 1095.004051208496,
+    "y": 1093.3972024917603,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "6b800958.b222d8",
+    "type": "set",
+    "name": "set token-id",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+    "comments": "",
+    "x": 1104.0040245056152,
+    "y": 1059.003927230835,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "9a0f8d9a.4d443",
+    "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 = $connection-attachment-topology-operation-input.service-information.subscription-service-type \n        AND customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id'\n      force=\"true\" pfx=\"tmp.AnAI-data-tenant\">           ",
+    "comments": "",
+    "outputs": 1,
+    "x": 693.8993682861328,
+    "y": 1191.5660381317139,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "47c8d5a9.ba16bc",
+        "14ed09d9.573ea6"
+      ]
+    ]
+  },
+  {
+    "id": "20fab7f5.802688",
+    "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": 1105.8994598388672,
+    "y": 1156.3161191940308,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "f88ee31d.81b4",
+        "2987815d.d473be"
+      ]
+    ]
+  },
+  {
+    "id": "f88ee31d.81b4",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1298.6139106750488,
+    "y": 1130.3161602020264,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "679b7c09.467594"
+      ]
+    ]
+  },
+  {
+    "id": "2987815d.d473be",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1251.8994903564453,
+    "y": 1224.3162384033203,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "fba55779.a815d8"
+      ]
+    ]
+  },
+  {
+    "id": "47c8d5a9.ba16bc",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 904.3992309570312,
+    "y": 1164.3120965957642,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "20fab7f5.802688"
+      ]
+    ]
+  },
+  {
+    "id": "14ed09d9.573ea6",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 898.0778198242188,
+    "y": 1216.5264081954956,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      [
+        "51559d2e.77fa84"
+      ]
+    ]
+  },
+  {
+    "id": "51559d2e.77fa84",
+    "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": 1050.8278198242188,
+    "y": 1216.2764692306519,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "fba55779.a815d8",
+    "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": 1420.7566719055176,
+    "y": 1222.423252105713,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  },
+  {
+    "id": "f9894d64.11723",
+    "type": "execute",
+    "name": "execute RestApiCallNode Create tenant auth",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\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.openecomp.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": 731.3994293212891,
+    "y": 1258.4588842391968,
+    "z": "92c42fbf.4d20f",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "679b7c09.467594",
+    "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": 1411.042236328125,
+    "y": 1175.1375246047974,
+    "z": "92c42fbf.4d20f",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-create.json
new file mode 100644
index 0000000..8dd29ed
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-create.json
@@ -0,0 +1,1320 @@
+[

+  {

+    "id": "41a7b6d3.f9b528",

+    "type": "dgstart",

+    "name": "DGSTART",

+    "outputs": 1,

+    "x": 104.03125,

+    "y": 62.99999749660492,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "f309be9c.cefce"

+      ]

+    ]

+  },

+  {

+    "id": "f309be9c.cefce",

+    "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": 287.03125381469727,

+    "y": 137.00001561641693,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "63686a7b.f7aa94"

+      ]

+    ]

+  },

+  {

+    "id": "63686a7b.f7aa94",

+    "type": "method",

+    "name": "sdwan-attachment-topology-operation-create",

+    "xml": "<method rpc='sdwan-attachment-topology-operation-create' mode='sync'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 275.0313720703125,

+    "y": 224.99999845027924,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "445b402d.36165"

+      ]

+    ]

+  },

+  {

+    "id": "445b402d.36165",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 195.03130340576172,

+    "y": 974.0002464056015,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "57abe88c.4f1e28",

+        "da2ee563.ca49c8",

+        "d7db7598.ec6a58",

+        "b1a31713.a74f68",

+        "bb52c8b.9210938",

+        "e248322d.07f73",

+        "e3ed6a01.033e28",

+        "49207aa3.305be4",

+        "e7fc7beb.0c2218",

+        "fff0be1d.b2bcf",

+        "6737ccd9.1b9484",

+        "3d98ece2.536f54",

+        "279d04d9.311b7c",

+        "bd2101b.463ff",

+        "a593e64c.edffe8",

+        "ad258829.1a9fb8",

+        "d28d77a4.947808",

+        "b3ca8b3e.e57468",

+        "4f85eb.0fdeca14",

+        "4b8ef133.24669",

+        "3a0fc26c.48c2fe",

+        "13f594ad.41064b",

+        "571ae355.45c2fc",

+        "936a519f.07274"

+      ]

+    ]

+  },

+  {

+    "id": "f44d3a22.e968a8",

+    "type": "comment",

+    "name": "Set allotted resource id if not sent by SO",

+    "info": "",

+    "comments": "",

+    "x": 679.1080017089844,

+    "y": 134.43391740322113,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "57abe88c.4f1e28",

+    "type": "switchNode",

+    "name": "switch allotted-resource-id",

+    "xml": "<switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 625.0312805175781,

+    "y": 189.9999908208847,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "4ebc9e25.f0a41",

+        "c5e852a7.8a1b7"

+      ]

+    ]

+  },

+  {

+    "id": "4ebc9e25.f0a41",

+    "type": "outcome",

+    "name": "NULL",

+    "xml": "<outcome value=''>",

+    "comments": "",

+    "outputs": 1,

+    "x": 823.0313682556152,

+    "y": 159.9999793767929,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "80de8467.db5608"

+      ]

+    ]

+  },

+  {

+    "id": "c5e852a7.8a1b7",

+    "type": "other",

+    "name": "other",

+    "xml": "<outcome value='Other'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 822.0312767028809,

+    "y": 196.9999898672104,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "f37c96f7.6c5a88"

+      ]

+    ]

+  },

+  {

+    "id": "f37c96f7.6c5a88",

+    "type": "set",

+    "name": "set tmp.ar.allotted-resource-id",

+    "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n",

+    "comments": "",

+    "x": 1020.0312652587891,

+    "y": 194.00000894069672,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "da2ee563.ca49c8",

+    "type": "set",

+    "name": "set tmp.ar.self-link",

+    "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/connection-attachment-topology/'` \" />\n\n",

+    "comments": "",

+    "x": 593.0312042236328,

+    "y": 411.00009763240814,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "d7db7598.ec6a58",

+    "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": 593.2931213378906,

+    "y": 492.666778922081,

+    "z": "588621bb.e9fef",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "b1a31713.a74f68",

+    "type": "execute",

+    "name": "generate allotted-resource tmp.ar-url",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 646.2931823730469,

+    "y": 579.6666969060898,

+    "z": "588621bb.e9fef",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "80de8467.db5608",

+    "type": "execute",

+    "name": "execute tmp.ar.allotted-resource-id",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"tmp.ar.allotted-resource-id\"/>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1038.0313453674316,

+    "y": 160.9999850988388,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "827e9a97.124e48"

+      ]

+    ]

+  },

+  {

+    "id": "827e9a97.124e48",

+    "type": "failure",

+    "name": "failure",

+    "xml": "<outcome value='failure'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1256.0313873291016,

+    "y": 160.99994885921478,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "153037d4.5daa68"

+      ]

+    ]

+  },

+  {

+    "id": "153037d4.5daa68",

+    "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 generation allotted resource ID\" />\n",

+    "comments": "",

+    "x": 1422.0313415527344,

+    "y": 160.99996316432953,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "8fcb37f5.98d048",

+    "type": "success",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1152.0314807891846,

+    "y": 651.7778695821762,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "91db96ee.5f5ab8"

+      ]

+    ]

+  },

+  {

+    "id": "bc59ed7b.1de9c",

+    "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: Existing connection attachment allotted resource\" />\n    \n",

+    "comments": "",

+    "x": 1885.5498600006104,

+    "y": 652.8439410924911,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "b0f210fa.eabdf",

+    "type": "comment",

+    "name": "Check for non existence of allotted resource",

+    "info": "",

+    "comments": "",

+    "x": 1008.0314025878906,

+    "y": 585.7779363393784,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "a2101ce1.011fb",

+    "type": "for",

+    "name": "for cidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]",

+    "xml": "<for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1528.6979484558105,

+    "y": 796.0000487565994,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "f78e26b6.71e388"

+      ]

+    ]

+  },

+  {

+    "id": "e248322d.07f73",

+    "type": "switchNode",

+    "name": "switch service-data.consumed-allotted-resources_length",

+    "xml": "<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 710.6972732543945,

+    "y": 772.7140811681747,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "30dfa22f.78a2de",

+        "3fbb9163.26209e"

+      ]

+    ]

+  },

+  {

+    "id": "30dfa22f.78a2de",

+    "type": "other",

+    "name": "outcome Null",

+    "xml": "<outcome value=''>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1014.8401718139648,

+    "y": 741.5715183019638,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "a8a680b4.767d6"

+      ]

+    ]

+  },

+  {

+    "id": "3fbb9163.26209e",

+    "type": "other",

+    "name": "other",

+    "xml": "<outcome value='Other'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 991.8402214050293,

+    "y": 802.5714734792709,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "c3b51f9c.33bcc"

+      ]

+    ]

+  },

+  {

+    "id": "c3b51f9c.33bcc",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">",

+    "atomic": "true",

+    "outputs": 1,

+    "x": 1151.9673118591309,

+    "y": 800.6974500417709,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "a2101ce1.011fb",

+        "e3a80e4a.14e7d",

+        "6c9a2abd.a627f4"

+      ]

+    ]

+  },

+  {

+    "id": "a8a680b4.767d6",

+    "type": "set",

+    "name": "set cidx",

+    "xml": "<set>\n<parameter name='tmp.cidx' value=\"`0`\" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value=\"1\" />\n\n\n",

+    "comments": "",

+    "x": 1164.6971549987793,

+    "y": 739.2855685949326,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "e3ed6a01.033e28",

+    "type": "set",

+    "name": "set consumed allotted resources",

+    "xml": "<set>\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value=\"`$tmp.ar.self-link` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />\n\n",

+    "comments": "",

+    "x": 639.5545654296875,

+    "y": 876.2856458425522,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "e3a80e4a.14e7d",

+    "type": "switchNode",

+    "name": "switch tmp.found-cidx",

+    "xml": "<switch test='`$tmp.found-cidx`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1341.0823593139648,

+    "y": 832.7089728116989,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "cbb92020.3ddcd"

+      ]

+    ]

+  },

+  {

+    "id": "cbb92020.3ddcd",

+    "type": "outcomeTrue",

+    "name": "false",

+    "xml": "<outcome value='false'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1531.0823135375977,

+    "y": 832.708909869194,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "808efd55.65f55"

+      ]

+    ]

+  },

+  {

+    "id": "808efd55.65f55",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">",

+    "atomic": "true",

+    "outputs": 1,

+    "x": 1697.0823135375977,

+    "y": 832.708909869194,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "6d2d79a2.093ad8"

+      ]

+    ]

+  },

+  {

+    "id": "f78e26b6.71e388",

+    "type": "switchNode",

+    "name": "switch allotted-resource-id",

+    "xml": "<switch test=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1945.8095779418945,

+    "y": 793.0000756978989,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "b1c9d43a.bd2f08"

+      ]

+    ]

+  },

+  {

+    "id": "b1c9d43a.bd2f08",

+    "type": "outcomeTrue",

+    "name": "true",

+    "xml": "<outcome value='true'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2127.619152069092,

+    "y": 793.4645227193832,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "1288ae5b.1e1ce2"

+      ]

+    ]

+  },

+  {

+    "id": "6d2d79a2.093ad8",

+    "type": "set",

+    "name": "set tmp.cidx",

+    "xml": "<set>\n<parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />\n",

+    "comments": "",

+    "x": 1858.955696105957,

+    "y": 832.2206109762192,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "8e24c24b.d6fc2",

+    "type": "comment",

+    "name": "Add to consumed service consumed-allotted-resources in mdsal",

+    "info": "Prepare data and add to service-data",

+    "comments": "",

+    "x": 731.698486328125,

+    "y": 703.0000451803207,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "2cffaf1f.4fc49",

+    "type": "comment",

+    "name": "This set resource will be added to MDSAL by provider code",

+    "info": "Below we add to service-data.consumed-allotted-resource at last index",

+    "comments": "",

+    "x": 719.0314025878906,

+    "y": 841.7781375646591,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "571ae355.45c2fc",

+    "type": "update",

+    "name": "save AAI allotted-resource",

+    "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n    <parameter name=\"id\" value=\"`$tmp.ar.allotted-resource-id`\" />\n\t<parameter name=\"role\" value=\"`$prop.connection-attachment.role`\" />\t\n    <parameter name=\"vpn-name\" value=\"`$prop.connection-attachment.sdwanVpnName`\" />\n\t<parameter name=\"selflink\" value=\"`$tmp.ar.self-link`\" />\n\t<parameter name=\"model-invariant-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`\" />\n\t<parameter name=\"model-version-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`\" />\n\t<parameter name=\"operational-status\" value=\"Created\" />\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 629.7221069335938,

+    "y": 1801.531901717186,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "bad0c727.d486c8",

+        "6744df38.44f3c"

+      ]

+    ]

+  },

+  {

+    "id": "bad0c727.d486c8",

+    "type": "failure",

+    "name": "failure",

+    "xml": "<outcome value='failure'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 824.4840431213379,

+    "y": 1792.4845031499863,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "be610d32.68478"

+      ]

+    ]

+  },

+  {

+    "id": "be610d32.68478",

+    "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=\"AAI failed\" />\n",

+    "comments": "",

+    "x": 991.0079231262207,

+    "y": 1804.1035741567612,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "6744df38.44f3c",

+    "type": "failure",

+    "name": "not-found",

+    "xml": "<outcome value='not-found'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 831.5793304443359,

+    "y": 1825.2464708089828,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "be610d32.68478"

+      ]

+    ]

+  },

+  {

+    "id": "7ddcb0e1.3b36d",

+    "type": "comment",

+    "name": "Save Resource to AAI",

+    "info": "",

+    "comments": "",

+    "x": 663.5317840576172,

+    "y": 1769.8338731527328,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "42977fdb.9150a",

+    "type": "comment",

+    "name": "Set allotted resource type if not sent by SO",

+    "info": "",

+    "comments": "",

+    "x": 665.03125,

+    "y": 242.99999845027924,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "bb52c8b.9210938",

+    "type": "switchNode",

+    "name": "switch allotted-resource-type",

+    "xml": "<switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 626.9545593261719,

+    "y": 283.5660547018051,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "ebcdd7cc.5ddb28",

+        "5e1b4704.ff03b8"

+      ]

+    ]

+  },

+  {

+    "id": "ebcdd7cc.5ddb28",

+    "type": "outcome",

+    "name": "NULL",

+    "xml": "<outcome value=''>",

+    "comments": "",

+    "outputs": 1,

+    "x": 829.9547119140625,

+    "y": 268.56605756282806,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "e292f924.218148"

+      ]

+    ]

+  },

+  {

+    "id": "5e1b4704.ff03b8",

+    "type": "other",

+    "name": "other",

+    "xml": "<outcome value='Other'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 822.9545402526855,

+    "y": 308.5660775899887,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "bc4b0c6b.6b5dc"

+      ]

+    ]

+  },

+  {

+    "id": "bc4b0c6b.6b5dc",

+    "type": "set",

+    "name": "set tmp.ar.allotted-resource-type",

+    "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-type' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`' />\n",

+    "comments": "",

+    "x": 1054.9545249938965,

+    "y": 308.5660823583603,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "e49aa8f1.f12588",

+    "type": "comment",

+    "name": "For storage in AAI connection-attachment-topology",

+    "info": "",

+    "comments": "",

+    "x": 690.0312118530273,

+    "y": 377.99999845027924,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "c0fccf31.3b1b7",

+    "type": "comment",

+    "name": "Obtain different URL, template location etc",

+    "info": "For saving resource information to MDSAL & for AAI",

+    "comments": "",

+    "x": 665.0311965942383,

+    "y": 459.888907790184,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "100bd889.c313d7",

+    "type": "comment",

+    "name": "Used for Put AR by id to MDSAL",

+    "info": "",

+    "comments": "",

+    "x": 631.0312805175781,

+    "y": 548.8889249563217,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "18c10c65.2f90b4",

+    "type": "comment",

+    "name": "Obtain the last index in services",

+    "info": "ServiceData is added by Provider code",

+    "comments": "",

+    "x": 632.4757232666016,

+    "y": 734.8888696432114,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "4f85eb.0fdeca14",

+    "type": "set",

+    "name": "set output to api handler",

+    "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='connection-attachment-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $connection-attachment-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",

+    "comments": "",

+    "x": 615.2993927001953,

+    "y": 1708.359200835228,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "4b8ef133.24669",

+    "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": 583.7125244140625,

+    "y": 1957.974946975708,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "e292f924.218148",

+    "type": "set",

+    "name": "set tmp.ar.allotted-resource-type",

+    "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-type' value=\"SDWANAttachmentInstance\" />\n",

+    "comments": "",

+    "x": 1069.0313987731934,

+    "y": 268.9999841451645,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "b3ca8b3e.e57468",

+    "type": "execute",

+    "name": "execute RestApiCallNode - PUT AR by id",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.sdwan-attachment.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 666.0315246582031,

+    "y": 1642.000130057335,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "891b6f50.0b8ca",

+        "17f28b89.81c5a4",

+        "6238cca6.7c6784"

+      ]

+    ]

+  },

+  {

+    "id": "891b6f50.0b8ca",

+    "type": "not-found",

+    "name": "not-found",

+    "xml": "<outcome value='not-found'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 915.6728782653809,

+    "y": 1680.3314603567123,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "c7ada304.940bb"

+      ]

+    ]

+  },

+  {

+    "id": "17f28b89.81c5a4",

+    "type": "failure",

+    "name": "failure",

+    "xml": "<outcome value='failure'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 906.6729278564453,

+    "y": 1648.8314861059189,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "c7ada304.940bb"

+      ]

+    ]

+  },

+  {

+    "id": "6238cca6.7c6784",

+    "type": "success",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 910.422966003418,

+    "y": 1619.1885909810662,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "9d842474.1d5df8"

+      ]

+    ]

+  },

+  {

+    "id": "c7ada304.940bb",

+    "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 updating md-sal for connection-attachment-allotted-resource\" />\n",

+    "comments": "",

+    "x": 1076.422966003418,

+    "y": 1649.5815099477768,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "9d842474.1d5df8",

+    "type": "block",

+    "name": "block",

+    "xml": "<block>\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 1052.0789337158203,

+    "y": 1615.3807601705194,

+    "z": "588621bb.e9fef",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "6737ccd9.1b9484",

+    "type": "execute",

+    "name": "execute RestApiCallNode - Update parent provided service AR",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"parent\" />\n\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 731.0312042236328,

+    "y": 1158.000163435936,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "ce9d67c0.fef428",

+        "32ea0966.e31a46",

+        "8052d936.8da758"

+      ]

+    ]

+  },

+  {

+    "id": "ce9d67c0.fef428",

+    "type": "not-found",

+    "name": "not-found",

+    "xml": "<outcome value='not-found'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1039.3392639160156,

+    "y": 1189.998439192772,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "cecd64fe.528bd8"

+      ]

+    ]

+  },

+  {

+    "id": "32ea0966.e31a46",

+    "type": "failure",

+    "name": "failure",

+    "xml": "<outcome value='failure'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1030.33931350708,

+    "y": 1158.4984649419785,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "cecd64fe.528bd8"

+      ]

+    ]

+  },

+  {

+    "id": "8052d936.8da758",

+    "type": "success",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1034.0893516540527,

+    "y": 1128.8555698171258,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "c4a631eb.caa38"

+      ]

+    ]

+  },

+  {

+    "id": "cecd64fe.528bd8",

+    "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 updating md-sal for connection-attachment-allotted-resource\" />\n",

+    "comments": "",

+    "x": 1200.0893516540527,

+    "y": 1159.2484887838364,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "c4a631eb.caa38",

+    "type": "block",

+    "name": "block",

+    "xml": "<block>\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 1175.745319366455,

+    "y": 1125.047739006579,

+    "z": "588621bb.e9fef",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "9c5665b2.ee98f8",

+    "type": "comment",

+    "name": "Put the parent allotted resource in mdsal",

+    "info": "",

+    "comments": "",

+    "x": 660.0311508178711,

+    "y": 1120.000069975853,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "279d04d9.311b7c",

+    "type": "set",

+    "name": "set connection-attachment-ar-identifiers",

+    "xml": "<set>\n<parameter name='connection-attachment-ar-identifiers.consuming-service-instance-id' value=\"`$connection-attachment-topology-operation-input.service-information.service-instance-id` \" />\n<parameter name='connection-attachment-ar-identifiers.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n<parameter name='connection-attachment-ar-identifiers.allotted-resource-type' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type` \" />\n<parameter name='connection-attachment-ar-identifiers.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n\n",

+    "comments": "",

+    "x": 656.3883361816406,

+    "y": 1322.5716890096664,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "3d98ece2.536f54",

+    "type": "set",

+    "name": "set ar-data",

+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='connection-attachment-ar.allotted-resource-status.action' value=\"`$connection-attachment-topology-operation-input.request-information.request-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value=\"connection-attachment-topology-operation\" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$connection-attachment-topology-operation-input.request-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$connection-attachment-topology-operation-input.service-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.' value=\"`$connection-attachment-topology-operation-input.connection-attachment-request-input.` \" />",

+    "comments": "",

+    "x": 576.2451629638672,

+    "y": 1290.38119161129,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "bd2101b.463ff",

+    "type": "set",

+    "name": "set identifiers in overall structure",

+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.' \nvalue=\"`$connection-attachment-ar-identifiers.`\" />\n\n\n",

+    "comments": "",

+    "x": 635.1981353759766,

+    "y": 1356.6668742895126,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "a593e64c.edffe8",

+    "type": "execute",

+    "name": "execute getTime",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 587.5309753417969,

+    "y": 1430.000401854515,

+    "z": "588621bb.e9fef",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "ad258829.1a9fb8",

+    "type": "set",

+    "name": "set allotted-resource-oper-status",

+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",

+    "comments": "",

+    "x": 638.5180130004883,

+    "y": 1485.9516347646713,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "d28d77a4.947808",

+    "type": "set",

+    "name": "set model-data",

+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` \" />",

+    "comments": "",

+    "x": 583.0866317749023,

+    "y": 1391.5557597875595,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "23859bfe.f043f4",

+    "type": "comment",

+    "name": "Prepare data for allotted-resource addition to MDSAL",

+    "info": "This will add to allotted-resource which is present inside service.",

+    "comments": "",

+    "x": 700.4201202392578,

+    "y": 1256.5556062459946,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "fff0be1d.b2bcf",

+    "type": "execute",

+    "name": "generate parent-ar url - replace allotted-resource-id",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.parent-ar-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.parent-ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 695.5312652587891,

+    "y": 1084.0000089406967,

+    "z": "588621bb.e9fef",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "e7fc7beb.0c2218",

+    "type": "execute",

+    "name": "generate parent-ar url - replace service-instance-id",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.parent-provided-resource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.parent-ar-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 691.5311889648438,

+    "y": 1041.000145316124,

+    "z": "588621bb.e9fef",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "80cf2b3b.3e92b8",

+    "type": "comment",

+    "name": "Prepare Parent AR URL",

+    "info": "Preparation to set provided-allotted-resource in parent service instance",

+    "comments": "",

+    "x": 609.5316467285156,

+    "y": 970.0000985860825,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "49207aa3.305be4",

+    "type": "set",

+    "name": "set tmp.ar.parent-service-instance-id",

+    "xml": "<set>\n<parameter name='tmp.ar.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n\n",

+    "comments": "",

+    "x": 648.5314407348633,

+    "y": 1003.5000380277634,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "1288ae5b.1e1ce2",

+    "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 updating md-sal for connection-attachment-allotted-resource as cosumed allotted resource already exists.\" />\n",

+    "comments": "",

+    "x": 2205.7882232666016,

+    "y": 841.6458276510239,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "6c9a2abd.a627f4",

+    "type": "set",

+    "name": "set tmp.found-cidx",

+    "xml": "<set>\n<parameter name='tmp.found-cidx' value=\"`false`\" />\n\n\n",

+    "comments": "",

+    "x": 1331.6773948669434,

+    "y": 753.3125706911087,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "57452405.e26b5c",

+    "type": "comment",

+    "name": "Add to parent services provided-allotted-resources in mdsal",

+    "info": "",

+    "comments": "",

+    "x": 720.2327575683594,

+    "y": 937.9792550802231,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "6013a8b1.8cfec8",

+    "type": "comment",

+    "name": "Add to allotted-resources in mdsal",

+    "info": "",

+    "comments": "",

+    "x": 640.9999465942383,

+    "y": 1223.9689353704453,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "91db96ee.5f5ab8",

+    "type": "block",

+    "name": "block: atomic",

+    "xml": "<block atomic=\"true\">\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 1314.031301498413,

+    "y": 651.2777589559555,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "d36cd8c7.bbc8c8"

+      ]

+    ]

+  },

+  {

+    "id": "d36cd8c7.bbc8c8",

+    "type": "switchNode",

+    "name": "switch cr length",

+    "xml": "<switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1501.8886814117432,

+    "y": 651.8968943357468,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "c670c701.c3ff18"

+      ]

+    ]

+  },

+  {

+    "id": "c670c701.c3ff18",

+    "type": "other",

+    "name": "outcome 1",

+    "xml": "<outcome value='1'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1701.2218036651611,

+    "y": 651.8969730138779,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "bc59ed7b.1de9c"

+      ]

+    ]

+  },

+  {

+    "id": "3a0fc26c.48c2fe",

+    "type": "execute",

+    "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 786.0313034057617,

+    "y": 646.0000346899033,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "8fcb37f5.98d048",

+        "230adea5.52af62"

+      ]

+    ]

+  },

+  {

+    "id": "230adea5.52af62",

+    "type": "failure",

+    "name": "failure",

+    "xml": "<outcome value='failure'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1154.0313339233398,

+    "y": 616.0000327825546,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "f02fcbfc.47bf28"

+      ]

+    ]

+  },

+  {

+    "id": "f02fcbfc.47bf28",

+    "type": "block",

+    "name": "block",

+    "xml": "<block>\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 1306.0313339233398,

+    "y": 615.0000327825546,

+    "z": "588621bb.e9fef",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "13f594ad.41064b",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">",

+    "atomic": "true",

+    "outputs": 1,

+    "x": 592.0351715087891,

+    "y": 1561.2500013113022,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "c4d3876.e194578",

+        "a56d9e1e.69cb5"

+      ]

+    ]

+  },

+  {

+    "id": "c4d3876.e194578",

+    "type": "for",

+    "name": "for each sdwan-get-request-input-param",

+    "xml": "<for index='i' start='0' end='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`' >\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 927.0353698730469,

+    "y": 1507.2501235604286,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "c009da24.7d2598"

+      ]

+    ]

+  },

+  {

+    "id": "654cbf55.2b8ad",

+    "type": "comment",

+    "name": "Required for filling template values",

+    "info": "This is done because connection-attachment is generic resource and doesn't have specific parameters",

+    "comments": "",

+    "x": 949.4798736572266,

+    "y": 1541.0832842588425,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "eaf3595.bafe4a8",

+    "type": "comment",

+    "name": "Remove VNFC prefix",

+    "info": "",

+    "comments": "",

+    "x": 1010.035213470459,

+    "y": 1463.6944593191147,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "c009da24.7d2598",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">",

+    "atomic": "true",

+    "outputs": 1,

+    "x": 1174.0352172851562,

+    "y": 1508.6943687200546,

+    "z": "588621bb.e9fef",

+    "wires": [

+      [

+        "447c6486.c17b2c",

+        "fb95c554.72d748"

+      ]

+    ]

+  },

+  {

+    "id": "6b76a58c.b29a1c",

+    "type": "comment",

+    "name": "Take the parameter names by removing prefix",

+    "info": "",

+    "comments": "",

+    "x": 1442.0350646972656,

+    "y": 1424.250366806984,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "447c6486.c17b2c",

+    "type": "execute",

+    "name": "execute split parameterName",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$i].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1393.0697326660156,

+    "y": 1459.229462981224,

+    "z": "588621bb.e9fef",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "fb95c554.72d748",

+    "type": "set",

+    "name": "set parameterName",

+    "xml": "<set>\n<parameter name=\"`connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$i].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",

+    "comments": "",

+    "x": 1381.5142059326172,

+    "y": 1563.2294334173203,

+    "z": "588621bb.e9fef",

+    "wires": []

+  },

+  {

+    "id": "a56d9e1e.69cb5",

+    "type": "call",

+    "name": "call GENERIC-RESOURCE-API:sdwan-get-saved-ar-param",

+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-saved-ar-param' mode='sync' >\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 968.0352172851562,

+    "y": 1581.2500633001328,

+    "z": "588621bb.e9fef",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "936a519f.07274",

+    "type": "save",

+    "name": "save allotted relationship in AAI",

+    "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"service-instance:relationship-list\" \n\t\tkey=\"customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id\" \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"allotted-resource\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/business/customers/customer/' + $connection-attachment-topology-operation-input.service-information.global-customer-id + '/service-subscriptions/service-subscription/' + $connection-attachment-topology-operation-input.service-information.subscription-service-type + '/service-instances/service-instance/' + $connection-attachment-topology-operation-input.service-information.service-instance-id + '/allotted-resources/allotted-resource/' + $tmp.ar.allotted-resource-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"allotted-resource.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.ar.allotted-resource-id`\" />\n\n\n\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 641.0312767028809,

+    "y": 1884.531162261963,

+    "z": "588621bb.e9fef",

+    "wires": [

+      []

+    ]

+  }

+]

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-deactivate.json
new file mode 100644
index 0000000..c8e24f5
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-deactivate.json
@@ -0,0 +1,2607 @@
+[
+  {
+    "id": "f8331c4a.37167",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 115,
+    "y": 35,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "2f57f4b9.7848fc"
+      ]
+    ]
+  },
+  {
+    "id": "2f57f4b9.7848fc",
+    "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.00000190734863,
+    "y": 106.00001668930054,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "606390f2.8a1db"
+      ]
+    ]
+  },
+  {
+    "id": "606390f2.8a1db",
+    "type": "method",
+    "name": "sdwan-attachment-topology-operation-deactivate",
+    "xml": "<method rpc='sdwan-attachment-topology-operation-deactivate' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 287.00012016296387,
+    "y": 193.99999952316284,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "4ba95650.840ef8"
+      ]
+    ]
+  },
+  {
+    "id": "4ba95650.840ef8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 303.00012016296387,
+    "y": 749.000244140625,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "7bfab5a3.06caac",
+        "45a84e1e.bdf7b",
+        "169fcb74.40e255",
+        "b2e9aacc.581ff8",
+        "e34f2e02.a4351",
+        "96bf45ea.f31428",
+        "ade80637.81d448",
+        "9fb629bb.9a3648",
+        "4bdb1ae.9bc94e4",
+        "85c9e5e0.4b2808",
+        "321fef32.53b0b",
+        "57a853e.4687fac",
+        "c17cdc10.1ceea",
+        "94474a0.f7cc5b8",
+        "500ce0c3.5b4ed",
+        "8054d01.53e0b3",
+        "9c9d490e.b9a1b8",
+        "75448c50.567d34",
+        "965fc969.fd32d8",
+        "d94628e2.163098",
+        "b8f3c1af.8a68d",
+        "5450bfab.9413e",
+        "d6353ac9.cd8368",
+        "de426682.23e5b8",
+        "9c358a1f.148518",
+        "7e6a4a74.fb8064",
+        "e6e54d59.f029"
+      ]
+    ]
+  },
+  {
+    "id": "7bfab5a3.06caac",
+    "type": "set",
+    "name": "set tmp.ar.allotted-resource-id,etc",
+    "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n",
+    "comments": "",
+    "x": 699.993558883667,
+    "y": 147.99348640441895,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "af7814ef.59e2e8",
+    "type": "comment",
+    "name": "set tmp ar-id to fetch resource from MDSAL",
+    "info": "",
+    "comments": "",
+    "x": 728.9538707733154,
+    "y": 112.02528238296509,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "45a84e1e.bdf7b",
+    "type": "set",
+    "name": "set tmp.ar.self-link",
+    "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/connection-attachment-topology/'` \" />\n\n",
+    "comments": "",
+    "x": 653.9934978485107,
+    "y": 240.99349164962769,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "b2e9aacc.581ff8",
+    "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": 660.2553882598877,
+    "y": 328.66022062301636,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "169fcb74.40e255",
+    "type": "execute",
+    "name": "generate allotted-resource tmp.ar-url",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 710.2554912567139,
+    "y": 415.6602215766907,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a1f59482.c2e3a8",
+    "type": "comment",
+    "name": "GET connection-attachment-allotted-resource from mdsal",
+    "info": "",
+    "comments": "",
+    "x": 753.808515548706,
+    "y": 507.5387673377991,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "48f7ab81.dd3f54",
+    "type": "comment",
+    "name": "Used for setting output to API Handler",
+    "info": "",
+    "comments": "",
+    "x": 707.9935283660889,
+    "y": 207.99350118637085,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "c7689a40.af6f68",
+    "type": "comment",
+    "name": "Obtain different URL, template location etc",
+    "info": "For saving resource information to MDSAL & for AAI",
+    "comments": "",
+    "x": 725.9934940338135,
+    "y": 293.88238191604614,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "5bb7cd3a.b035e4",
+    "type": "comment",
+    "name": "Used to Get AR by id to MDSAL, same as self-link",
+    "info": "",
+    "comments": "",
+    "x": 751.9935131072998,
+    "y": 380.88234090805054,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "255752ab.e0974e",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1194.666826248169,
+    "y": 534.0000281333923,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "7b548c16.84a074"
+      ]
+    ]
+  },
+  {
+    "id": "7b548c16.84a074",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1363.6668300628662,
+    "y": 532.4999289512634,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "30903850.9efd78"
+      ]
+    ]
+  },
+  {
+    "id": "30903850.9efd78",
+    "type": "switchNode",
+    "name": "switch cr length",
+    "xml": "<switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1536.5240993499756,
+    "y": 470.1190915107727,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "f5872089.49e85",
+        "fd0f2962.8ae6b8"
+      ]
+    ]
+  },
+  {
+    "id": "f5872089.49e85",
+    "type": "other",
+    "name": "outcome 1",
+    "xml": "<outcome value='1'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1773.857343673706,
+    "y": 448.11904191970825,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "ddd5f356.20fb3"
+      ]
+    ]
+  },
+  {
+    "id": "ddd5f356.20fb3",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic='true'>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1958.381233215332,
+    "y": 445.0238757133484,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "26efebde.981c54",
+        "f909f530.6858a8",
+        "aab72afb.6cac28"
+      ]
+    ]
+  },
+  {
+    "id": "49c172c3.b6fc6c",
+    "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=\"Error: SOTN resource not found\" />\n    \n",
+    "comments": "",
+    "x": 1882.5190753936768,
+    "y": 570.066116809845,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "1a7aa44a.cd34ac",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1186.5186290740967,
+    "y": 569.0661129951477,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "ea618a2d.cb5e38"
+      ]
+    ]
+  },
+  {
+    "id": "ea618a2d.cb5e38",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1366.5185794830322,
+    "y": 569.7326636314392,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "49c172c3.b6fc6c"
+      ]
+    ]
+  },
+  {
+    "id": "fd0f2962.8ae6b8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1762.185297012329,
+    "y": 485.39940214157104,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "49c172c3.b6fc6c"
+      ]
+    ]
+  },
+  {
+    "id": "26efebde.981c54",
+    "type": "set",
+    "name": "set connection-attachment-ar from get",
+    "xml": "<set>\n<parameter name='connection-attachment-ar.' value='$mdsal-ar.connection-attachment-allotted-resource[0].' />\n",
+    "comments": "",
+    "x": 2204.4447917938232,
+    "y": 405.00010538101196,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "aab72afb.6cac28",
+    "type": "set",
+    "name": "set oper-status",
+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-ar.allotted-resource-status.rpc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",
+    "comments": "",
+    "x": 2137.444787979126,
+    "y": 495.4286599159241,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "f909f530.6858a8",
+    "type": "switchNode",
+    "name": "switch order-status",
+    "xml": "<switch test='`$connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2148.4446239471436,
+    "y": 449.00010919570923,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "dcae652b.a678c8",
+        "61137107.6ab3"
+      ]
+    ]
+  },
+  {
+    "id": "dcae652b.a678c8",
+    "type": "outcome",
+    "name": "outcome Active",
+    "xml": "<outcome value='Active'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2355.0445728302,
+    "y": 439.00010919570923,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "f4b4f2e4.a75bd"
+      ]
+    ]
+  },
+  {
+    "id": "61137107.6ab3",
+    "type": "outcome",
+    "name": "outcome Other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2354.7590923309326,
+    "y": 481.42869997024536,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "a2c4e7e4.8b9478"
+      ]
+    ]
+  },
+  {
+    "id": "f4b4f2e4.a75bd",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2507.515127182007,
+    "y": 437.375759601593,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a2c4e7e4.8b9478",
+    "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\" \n    value=\"`'Existing connection-attachment-allotted-resource with order status of ' + $connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`\" />\n",
+    "comments": "",
+    "x": 2527.666982650757,
+    "y": 478.00011110305786,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "8746fbbb.5c4dd8",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:sdwan-get-saved-ar-param",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-saved-ar-param' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 915.3031139373779,
+    "y": 630.4935903549194,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "e34f2e02.a4351",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 612.3092784881592,
+    "y": 631.4999384880066,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "8746fbbb.5c4dd8"
+      ]
+    ]
+  },
+  {
+    "id": "96352635.65ff08",
+    "type": "comment",
+    "name": "GET parent-service-data from mdsal to check existence of other End point",
+    "info": "",
+    "comments": "",
+    "x": 794.0004405975342,
+    "y": 692.5316977500916,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "eb439772.0db3a8",
+    "type": "comment",
+    "name": "GET connection-attachment-ar to store AR data from mdsal",
+    "info": "",
+    "comments": "",
+    "x": 2187.4729442596436,
+    "y": 369.5039687156677,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "678453f3.6e4c2c",
+    "type": "comment",
+    "name": "Set source end point",
+    "info": "",
+    "comments": "",
+    "x": 625.9728374481201,
+    "y": 599.2540640830994,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "96bf45ea.f31428",
+    "type": "set",
+    "name": "set tmp.ar.parent-service-instance-id",
+    "xml": "<set>\n<parameter name='tmp.ar.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n\n",
+    "comments": "",
+    "x": 678.968915939331,
+    "y": 724.0002083778381,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "14706c37.53ff04",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1056.9689121246338,
+    "y": 773.0002074241638,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "f7881611.1e7fc8"
+      ]
+    ]
+  },
+  {
+    "id": "415e2268.5d0d3c",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1048.8207149505615,
+    "y": 808.0662922859192,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "400a8be0.06c244"
+      ]
+    ]
+  },
+  {
+    "id": "400a8be0.06c244",
+    "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=\"Error: SOTN resource not found\" />\n    \n",
+    "comments": "",
+    "x": 1223.9694004058838,
+    "y": 804.3336424827576,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "f7881611.1e7fc8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1207.9689121246338,
+    "y": 771.0002074241638,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "6055aad6.cfe2c4",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1037.7308254241943,
+    "y": 2275.9528431892395,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "3f6ad50.2555b2c"
+      ]
+    ]
+  },
+  {
+    "id": "3f6ad50.2555b2c",
+    "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=\"AAI failed\" />\n",
+    "comments": "",
+    "x": 1199.25465965271,
+    "y": 2320.571889281273,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "235942f0.e7b26e",
+    "type": "failure",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1039.8260669708252,
+    "y": 2341.7147859334946,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "3f6ad50.2555b2c"
+      ]
+    ]
+  },
+  {
+    "id": "48fc4721.99e218",
+    "type": "comment",
+    "name": "Save Resource to AAI",
+    "info": "",
+    "comments": "",
+    "x": 751.7784938812256,
+    "y": 2291.302206516266,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "57a853e.4687fac",
+    "type": "set",
+    "name": "set output to api handler",
+    "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='connection-attachment-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $connection-attachment-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+    "comments": "",
+    "x": 766.5461902618408,
+    "y": 2212.827687740326,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "c17cdc10.1ceea",
+    "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": 713.9593296051025,
+    "y": 2407.443506717682,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "321fef32.53b0b",
+    "type": "execute",
+    "name": "execute RestApiCallNode - PUT AR by id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.sdwan-attachment.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 816.2782917022705,
+    "y": 2120.4684615135193,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "51856f43.e53b6",
+        "1d0bebfe.eab134",
+        "559d3f61.79c98"
+      ]
+    ]
+  },
+  {
+    "id": "51856f43.e53b6",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1084.9196681976318,
+    "y": 2171.7998732551932,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "60114e3f.8f3c6"
+      ]
+    ]
+  },
+  {
+    "id": "1d0bebfe.eab134",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1075.9197177886963,
+    "y": 2140.2998990044,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "60114e3f.8f3c6"
+      ]
+    ]
+  },
+  {
+    "id": "559d3f61.79c98",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1079.669755935669,
+    "y": 2110.657003879547,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "f983099f.d54368"
+      ]
+    ]
+  },
+  {
+    "id": "60114e3f.8f3c6",
+    "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 updating md-sal for connection-attachment-allotted-resource\" />\n",
+    "comments": "",
+    "x": 1245.669755935669,
+    "y": 2141.0499228462577,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "f983099f.d54368",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1221.3257236480713,
+    "y": 2106.8491730690002,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "ade80637.81d448",
+    "type": "set",
+    "name": "set ar-data",
+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-status.action' value=\"`$connection-attachment-topology-operation-input.request-information.request-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value=\"connection-attachment-topology-operation\" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$connection-attachment-topology-operation-input.request-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$connection-attachment-topology-operation-input.service-information.` \" />\n",
+    "comments": "",
+    "x": 716.4919109344482,
+    "y": 1970.84938454628,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "4bdb1ae.9bc94e4",
+    "type": "execute",
+    "name": "execute getTime",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 733.777753829956,
+    "y": 2043.468982219696,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "85c9e5e0.4b2808",
+    "type": "set",
+    "name": "set allotted-resource-oper-status",
+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+    "comments": "",
+    "x": 788.7648105621338,
+    "y": 2081.4201197624207,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "9fb629bb.9a3648",
+    "type": "set",
+    "name": "set model-data",
+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` \" />",
+    "comments": "",
+    "x": 730.3334522247314,
+    "y": 2010.0240349769592,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "71e134cd.34ff8c",
+    "type": "comment",
+    "name": "Prepare data for allotted-resource addition to MDSAL",
+    "info": "This will add to allotted-resource which is present inside service.",
+    "comments": "",
+    "x": 839.6668834686279,
+    "y": 1926.0239098072052,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "616f171a.47daa8",
+    "type": "comment",
+    "name": "Add to allotted-resources in mdsal",
+    "info": "",
+    "comments": "",
+    "x": 781.2467098236084,
+    "y": 1893.4372115135193,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "5450bfab.9413e",
+    "type": "update",
+    "name": "update AAI allotted-resource",
+    "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"selflink\" value=\"`$tmp.ar.self-link`\" />\n\t<parameter name=\"model-invariant-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`\" />\n\t<parameter name=\"model-version-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`\" />\n\t<parameter name=\"operational-status\" value=\"PendingDelete\" />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 778.2227725982666,
+    "y": 2328.75434923172,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "6055aad6.cfe2c4",
+        "235942f0.e7b26e"
+      ]
+    ]
+  },
+  {
+    "id": "94474a0.f7cc5b8",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 827.3339519500732,
+    "y": 550.4999489784241,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "255752ab.e0974e",
+        "1a7aa44a.cd34ac"
+      ]
+    ]
+  },
+  {
+    "id": "500ce0c3.5b4ed",
+    "type": "execute",
+    "name": "get parent-service-data tmp.ar-url-psd",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-psd\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 681.0001964569092,
+    "y": 759.0002102851868,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "8054d01.53e0b3",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get-resource parent service data",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-psd\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 748.0001583099365,
+    "y": 794.0002942085266,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "14706c37.53ff04",
+        "415e2268.5d0d3c"
+      ]
+    ]
+  },
+  {
+    "id": "c6e4843.cf19e78",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2568.8126583099365,
+    "y": 811.3294506072998,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "5596c62d.3bd3a8"
+      ]
+    ]
+  },
+  {
+    "id": "e43e013.c1cc8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2602.664144515991,
+    "y": 757.3954172134399,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "6247e999.5c9548"
+      ]
+    ]
+  },
+  {
+    "id": "d9e74637.02a718",
+    "type": "for",
+    "name": "for arvidx.. mdsal-sd.service-data.vnfs.vnf_length[]",
+    "xml": "<for index='arvidx' start='0' end='`$mdsal-sd.service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2087.813558578491,
+    "y": 1638.9966711997986,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "9c851968.c2df88"
+      ]
+    ]
+  },
+  {
+    "id": "9c851968.c2df88",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2363.480131149292,
+    "y": 1639.9967041015625,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "54b544e3.42d4bc"
+      ]
+    ]
+  },
+  {
+    "id": "54b544e3.42d4bc",
+    "type": "switchNode",
+    "name": "switch ActivateSiteInstance",
+    "xml": "<switch test=\"`$mdsal-sd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == ActivateSiteInstance`\">\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2600.343832015991,
+    "y": 1644.194667816162,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "aa6e75db.b48038"
+      ]
+    ]
+  },
+  {
+    "id": "aa6e75db.b48038",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2809.3433475494385,
+    "y": 1644.19482088089,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "3132632f.4cad6c"
+      ]
+    ]
+  },
+  {
+    "id": "2aa66f72.5e93f",
+    "type": "set",
+    "name": "set tmp.sitevidx ",
+    "xml": "<set>\n<parameter name='tmp.sitevidx' value='`$arvidx`' />\n\n",
+    "comments": "",
+    "x": 2206.3442974090576,
+    "y": 1748.1952495574951,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "4f450f5a.52d67",
+    "type": "set",
+    "name": "set prop.ar-parent-service-instance-id",
+    "xml": "<set>\n<parameter name='prop.ar-parent-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id`' />\n",
+    "comments": "",
+    "x": 2122.8124599456787,
+    "y": 1061.996099948883,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "2d8849eb.21e096",
+    "type": "for",
+    "name": "for loop aridx - Get role from allotted resource",
+    "xml": "<for index=\"aridx\" start=\"0\" end=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2148.8122539520264,
+    "y": 1010.4959712028503,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "d84d5dca.fda43"
+      ]
+    ]
+  },
+  {
+    "id": "d84d5dca.fda43",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2403.812582015991,
+    "y": 1007.4964308738708,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "f1205a89.ab0798",
+        "52dd7727.f5fe18"
+      ]
+    ]
+  },
+  {
+    "id": "f1205a89.ab0798",
+    "type": "switchNode",
+    "name": "switch Role",
+    "xml": "<switch test=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'Role'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2533.8124027252197,
+    "y": 979.496367931366,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "c09b2335.3fa2e"
+      ]
+    ]
+  },
+  {
+    "id": "c09b2335.3fa2e",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2674.812734603882,
+    "y": 978.4963669776917,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "a9576f56.b9348"
+      ]
+    ]
+  },
+  {
+    "id": "a9576f56.b9348",
+    "type": "set",
+    "name": "set prop.role",
+    "xml": "<set>\n<parameter name='prop.role' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />\n",
+    "comments": "",
+    "x": 2840.813398361206,
+    "y": 973.0962700843811,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "fa09f12.7306b1",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2420.813081741333,
+    "y": 1156.9963774681091,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "949549ca.fec9a8"
+      ]
+    ]
+  },
+  {
+    "id": "a6b8177b.a72a88",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2414.6648235321045,
+    "y": 1113.0624146461487,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "ffd5545.891d1a8"
+      ]
+    ]
+  },
+  {
+    "id": "6247e999.5c9548",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2728.8122692108154,
+    "y": 754.4958505630493,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "5596c62d.3bd3a8",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1858.3121318817139,
+    "y": 1028.4959712028503,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "2d8849eb.21e096",
+        "4f450f5a.52d67",
+        "fc8ba65.b9ce358",
+        "4d147f57.4dac2"
+      ]
+    ]
+  },
+  {
+    "id": "ffd5545.891d1a8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2544.312942504883,
+    "y": 1106.496334552765,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "949549ca.fec9a8",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1934.312421798706,
+    "y": 1233.4959845542908,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "3f440bd9.75daa4"
+      ]
+    ]
+  },
+  {
+    "id": "9c405c37.6c68b",
+    "type": "for",
+    "name": "for loop siteidx - Get site ID from servicedata",
+    "xml": "<for index=\"siteidx\" start=\"0\" end=\"`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2298.3151454925537,
+    "y": 1789.4970073699951,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "b4cc5d95.f9e96"
+      ]
+    ]
+  },
+  {
+    "id": "58af8ae9.984c54",
+    "type": "switchNode",
+    "name": "switch siteId",
+    "xml": "<switch test=\"`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2370.317129135132,
+    "y": 1857.497986793518,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "545beb56.93d714"
+      ]
+    ]
+  },
+  {
+    "id": "a5f8b7de.41e8d8",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2224.815404891968,
+    "y": 1930.9970245361328,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "40a92cd6.b03f74",
+        "92d18c15.f7ea6",
+        "6fed1bc4.775804"
+      ]
+    ]
+  },
+  {
+    "id": "e6e54d59.f029",
+    "type": "execute",
+    "name": "execute RestApiCallNode delete 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": 814.8129138946533,
+    "y": 1718.4967412948608,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "41dfdc02.d499c4",
+        "13592df6.00f3c2"
+      ]
+    ]
+  },
+  {
+    "id": "41dfdc02.d499c4",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1069.8126811981201,
+    "y": 1734.4967412948608,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "899d6eb4.6e43e"
+      ]
+    ]
+  },
+  {
+    "id": "899d6eb4.6e43e",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1239.8126201629639,
+    "y": 1737.4967412948608,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "9460e156.0dbc9",
+    "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": 1239.8127422332764,
+    "y": 1693.4967412948608,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "13592df6.00f3c2",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1072.8126201629639,
+    "y": 1693.4967412948608,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "9460e156.0dbc9"
+      ]
+    ]
+  },
+  {
+    "id": "23c44741.0683a8",
+    "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": 1240.3796348571777,
+    "y": 1256.1728954315186,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "b8f3c1af.8a68d",
+    "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": 809.8793773651123,
+    "y": 1307.1732459068298,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "6754723.b98c58c",
+        "6d29272.a552fd8",
+        "9b336b2d.6145a8"
+      ]
+    ]
+  },
+  {
+    "id": "6754723.b98c58c",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1068.8796691894531,
+    "y": 1262.1728792190552,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "23c44741.0683a8"
+      ]
+    ]
+  },
+  {
+    "id": "6d29272.a552fd8",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1065.3703861236572,
+    "y": 1300.7469758987427,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "34fe0d3d.2375f2"
+      ]
+    ]
+  },
+  {
+    "id": "9b336b2d.6145a8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1060.7033939361572,
+    "y": 1342.080288887024,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "6298bcb0.bae674"
+      ]
+    ]
+  },
+  {
+    "id": "34fe0d3d.2375f2",
+    "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": 1215.941701889038,
+    "y": 1295.0327281951904,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "6298bcb0.bae674",
+    "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": 1222.4758548736572,
+    "y": 1343.519497871399,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "3f440bd9.75daa4",
+    "type": "for",
+    "name": "for pnidx.. mdsal-parentsd.service-data.networks.network_length[]",
+    "xml": "<for index='pnidx' start='0' end='`$mdsal-parentsd.service-data.networks.network_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2259.3119945526123,
+    "y": 1232.9957122802734,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "ad8228ad.984598"
+      ]
+    ]
+  },
+  {
+    "id": "adf75159.a4939",
+    "type": "switchNode",
+    "name": "switch ActivateSDWANConnectivityInstance",
+    "xml": "<switch test=\"`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.request-information.request-action == 'ActivateSDWANConnectivityInstance'`\">\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2182.979818344116,
+    "y": 1325.9959139823914,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "152fe76d.8c87b9"
+      ]
+    ]
+  },
+  {
+    "id": "152fe76d.8c87b9",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2439.97931098938,
+    "y": 1324.9960441589355,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "bff21d24.0b57f"
+      ]
+    ]
+  },
+  {
+    "id": "94eca419.a27f98",
+    "type": "for",
+    "name": "for loop paramidx - Get topology from servicedata",
+    "xml": "<for index=\"paramidx\" start=\"0\" end=\"`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2241.9799976348877,
+    "y": 1414.9956321716309,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "de02d4be.b70b88"
+      ]
+    ]
+  },
+  {
+    "id": "de02d4be.b70b88",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2507.9796867370605,
+    "y": 1411.9959554672241,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "a00734cd.6de4c8",
+        "641cbedf.bffd9"
+      ]
+    ]
+  },
+  {
+    "id": "a00734cd.6de4c8",
+    "type": "switchNode",
+    "name": "switch topology",
+    "xml": "<switch test=\"`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'topology'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2678.9800205230713,
+    "y": 1380.9954652786255,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "26c02eae.b386b2"
+      ]
+    ]
+  },
+  {
+    "id": "26c02eae.b386b2",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2830.980010986328,
+    "y": 1382.9954957962036,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "fa1994f9.3ab1f8"
+      ]
+    ]
+  },
+  {
+    "id": "fa1994f9.3ab1f8",
+    "type": "set",
+    "name": "set topology",
+    "xml": "<set>\n<parameter name='prop.topology' value='`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
+    "comments": "",
+    "x": 2974.98002243042,
+    "y": 1382.5954303741455,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "641cbedf.bffd9",
+    "type": "switchNode",
+    "name": "switch vpnId",
+    "xml": "<switch test=\"`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'vpn-id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2670.6457443237305,
+    "y": 1423.328447341919,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "8be0360b.142cf8"
+      ]
+    ]
+  },
+  {
+    "id": "8be0360b.142cf8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2822.6457347869873,
+    "y": 1425.328477859497,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "d6238463.67fb38"
+      ]
+    ]
+  },
+  {
+    "id": "d6238463.67fb38",
+    "type": "set",
+    "name": "set prop.vpn1Id",
+    "xml": "<set>\n<parameter name='prop.vpn1Id' value='`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
+    "comments": "",
+    "x": 2966.645746231079,
+    "y": 1424.928412437439,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "d94628e2.163098",
+    "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.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": 787.8125858306885,
+    "y": 1829.9967064857483,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "ad8a5a19.5d2dc8",
+        "a192274c.875558"
+      ]
+    ]
+  },
+  {
+    "id": "ad8a5a19.5d2dc8",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1020.8126640319824,
+    "y": 1854.996705532074,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "f3ab5240.5c692"
+      ]
+    ]
+  },
+  {
+    "id": "f3ab5240.5c692",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1190.8126029968262,
+    "y": 1857.996705532074,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "bd5bcef5.5eb46",
+    "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": 1190.8127250671387,
+    "y": 1813.996705532074,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "a192274c.875558",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1023.8126029968262,
+    "y": 1813.996705532074,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "bd5bcef5.5eb46"
+      ]
+    ]
+  },
+  {
+    "id": "82cffc44.23091",
+    "type": "set",
+    "name": "set prop.name",
+    "xml": "<set>\n<parameter name='prop.name' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />\n",
+    "comments": "",
+    "x": 2888.8124027252197,
+    "y": 1025.9959406852722,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "52dd7727.f5fe18",
+    "type": "switchNode",
+    "name": "switch sdwanVpnName",
+    "xml": "<switch test=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'sdwanVpnName'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2569.3122425079346,
+    "y": 1028.9959330558777,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "68d65f0e.41b06"
+      ]
+    ]
+  },
+  {
+    "id": "68d65f0e.41b06",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2740.3124027252197,
+    "y": 1027.9960017204285,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "82cffc44.23091"
+      ]
+    ]
+  },
+  {
+    "id": "56e2d584.03ab4c",
+    "type": "set",
+    "name": "set prop.ar.provided-allotted-resource-id",
+    "xml": "<set>\n<parameter name='prop.ar.provided-allotted-resource-id' value='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id`' />\n\n\n",
+    "comments": "",
+    "x": 2054.8120098114014,
+    "y": 769.9960651397705,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "bb8d7398.e602a",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1367.8424663543701,
+    "y": 1171.1932725906372,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "f1cd9602.486d48"
+      ]
+    ]
+  },
+  {
+    "id": "667f1405.f078ac",
+    "type": "execute",
+    "name": "generate tmp.ar-url-connection url",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar.provided-allotted-resource-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2039.3296718597412,
+    "y": 803.3295412063599,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a0d61f91.413f4",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-providedAr\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2179.3293018341064,
+    "y": 838.9958324432373,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "e43e013.c1cc8",
+        "c6e4843.cf19e78"
+      ]
+    ]
+  },
+  {
+    "id": "fc8ba65.b9ce358",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get parent service data",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-parentsd\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2154.9965419769287,
+    "y": 1131.9958891868591,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "fa09f12.7306b1",
+        "a6b8177b.a72a88"
+      ]
+    ]
+  },
+  {
+    "id": "bff21d24.0b57f",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1899.3299617767334,
+    "y": 1421.663094997406,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "94eca419.a27f98",
+        "ad1d91e2.9fb76",
+        "b140ba23.8a1858",
+        "c40e517f.50767"
+      ]
+    ]
+  },
+  {
+    "id": "40a92cd6.b03f74",
+    "type": "set",
+    "name": "set prop.attach.siteId",
+    "xml": "<set>\n<parameter name='prop.attach.siteId' value='`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\n\n",
+    "comments": "",
+    "x": 2490.9982776641846,
+    "y": 1912.6638507843018,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "545beb56.93d714",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2510.9985332489014,
+    "y": 1857.6636772155762,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "a5f8b7de.41e8d8"
+      ]
+    ]
+  },
+  {
+    "id": "3132632f.4cad6c",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2003.6644191741943,
+    "y": 1743.3301877975464,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "9c405c37.6c68b",
+        "2aa66f72.5e93f"
+      ]
+    ]
+  },
+  {
+    "id": "9c9d490e.b9a1b8",
+    "type": "for",
+    "name": "for pidx..mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[]",
+    "xml": "<for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 975.1812229156494,
+    "y": 1206.6358728408813,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "bb8d7398.e602a"
+      ]
+    ]
+  },
+  {
+    "id": "b4cc5d95.f9e96",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2215.6647777557373,
+    "y": 1854.0008354187012,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "58af8ae9.984c54"
+      ]
+    ]
+  },
+  {
+    "id": "75448c50.567d34",
+    "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": 820.9999980926514,
+    "y": 1149.5312285423279,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "92d18c15.f7ea6",
+    "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",
+    "comments": "",
+    "x": 2518.5021114349365,
+    "y": 1957.5316557884216,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "4d147f57.4dac2",
+    "type": "execute",
+    "name": "generate prop.ar-parent-service-instance-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>      \n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar-parent-service-instance-id`\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2139.5001430511475,
+    "y": 1094.531409740448,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "ad1d91e2.9fb76",
+    "type": "set",
+    "name": "set prop.ar-service-instance-id",
+    "xml": "<set>\n<parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id`' />\n",
+    "comments": "",
+    "x": 2172.5005626678467,
+    "y": 1483.5313277244568,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "b140ba23.8a1858",
+    "type": "execute",
+    "name": "generate prop.ar-service-instance-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>      \n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar-service-instance-id`\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2197.8330211639404,
+    "y": 1516.4096236228943,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "c40e517f.50767",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get-resource service data",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-sd\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2248.833143234253,
+    "y": 1553.4094424247742,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "6f8bfcf3.2cbda4",
+        "671b3b67.714c24"
+      ]
+    ]
+  },
+  {
+    "id": "671b3b67.714c24",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2527.500207901001,
+    "y": 1549.5311541557312,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "1fc5d55c.4c864b"
+      ]
+    ]
+  },
+  {
+    "id": "6f8bfcf3.2cbda4",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2525.3525371551514,
+    "y": 1510.5972819328308,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "2fe21dd5.a9ca62"
+      ]
+    ]
+  },
+  {
+    "id": "2fe21dd5.a9ca62",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2655.0007305145264,
+    "y": 1504.0312418937683,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "1fc5d55c.4c864b",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2676.5011043548584,
+    "y": 1550.5313391685486,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "d9e74637.02a718"
+      ]
+    ]
+  },
+  {
+    "id": "f1cd9602.486d48",
+    "type": "switchNode",
+    "name": "switch allotted resource ID match",
+    "xml": "<switch test=\"`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">",
+    "comments": "",
+    "outputs": 1,
+    "x": 1591.5001125335693,
+    "y": 1168.031301021576,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "a2faeb8f.9adb58"
+      ]
+    ]
+  },
+  {
+    "id": "a2faeb8f.9adb58",
+    "type": "outcomeFalse",
+    "name": "false",
+    "xml": "<outcome value='false'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1670.5001773834229,
+    "y": 805.0312938690186,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "7036cf78.a5aa3"
+      ]
+    ]
+  },
+  {
+    "id": "7036cf78.a5aa3",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1812.5004253387451,
+    "y": 804.0312347412109,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "56e2d584.03ab4c",
+        "667f1405.f078ac",
+        "a0d61f91.413f4"
+      ]
+    ]
+  },
+  {
+    "id": "15b04770.9781e9",
+    "type": "comment",
+    "name": "if allotted resource Id match with the incomming allotted resource ID,  sites in this service vnf should not be included",
+    "info": "parent instId 200 |  parent instId 200\nservice instId 100| service InstId 200\n site1            |       site2\n allotted resId 1 | allotted resId 2 \n --------------------------------------\n Deactivate:\n loop for provided allotted res ID\n If allotted resId 1 matches with incomming allotted resource Id then we should delete the sites available in the service data 100\n for this we have to send request for deleting with site IDs site2 without including site1.\n \n \n ",
+    "comments": "",
+    "x": 1765.5000286102295,
+    "y": 737.0312957763672,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "7505e39f.a765fc",
+    "type": "comment",
+    "name": "loop for provided allotted rsource Id",
+    "info": "",
+    "comments": "",
+    "x": 1087.4999980926514,
+    "y": 1170.5312895774841,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "2f9e3c20.0207a4",
+    "type": "comment",
+    "name": "get allotted resource for the allotted resource ID",
+    "info": "",
+    "comments": "",
+    "x": 2326.500326156616,
+    "y": 738.5311737060547,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "7fd25f7d.205ea",
+    "type": "comment",
+    "name": "get parent service data to get connectivity which has connectivity and vpn ID",
+    "info": "",
+    "comments": "",
+    "x": 2109.4998531341553,
+    "y": 965.5312514305115,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "53cc3005.40ef",
+    "type": "comment",
+    "name": "get service data from service instance id from allotted reosurce Id to get sites vnf",
+    "info": "",
+    "comments": "",
+    "x": 2298.4998531341553,
+    "y": 1447.531051158905,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "965fc969.fd32d8",
+    "type": "call",
+    "name": "call sdwan-vnf-topology-operation-underlay for delete",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-wanport-vnf-topology-operation-underlay' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 848.5001163482666,
+    "y": 1634.531358242035,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "6fed1bc4.775804",
+    "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": 2548.2500896453857,
+    "y": 1998.2539830207825,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "d6353ac9.cd8368",
+    "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.000036239624,
+    "y": 1397.000150680542,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "58744a52.9052b4",
+        "2cb21a31.a626b6"
+      ]
+    ]
+  },
+  {
+    "id": "58744a52.9052b4",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1074.0001621246338,
+    "y": 1377.9999685287476,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "1cd6b02.062c05"
+      ]
+    ]
+  },
+  {
+    "id": "1cd6b02.062c05",
+    "type": "set",
+    "name": "set token-id",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+    "comments": "",
+    "x": 1223.0001621246338,
+    "y": 1376.9999380111694,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "8b511642.cc8a88",
+    "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": 1214.0001888275146,
+    "y": 1411.3932132720947,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "2cb21a31.a626b6",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1066.2501964569092,
+    "y": 1413.6430912017822,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "8b511642.cc8a88"
+      ]
+    ]
+  },
+  {
+    "id": "de426682.23e5b8",
+    "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 = $connection-attachment-topology-operation-input.service-information.subscription-service-type \n        AND customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id'\n      force=\"true\" pfx=\"tmp.AnAI-data-tenant\">      ",
+    "comments": "",
+    "outputs": 1,
+    "x": 812.8955059051514,
+    "y": 1509.5620489120483,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "4a6eca43.810a44",
+        "6a29a6d.e51e358"
+      ]
+    ]
+  },
+  {
+    "id": "9c358a1f.148518",
+    "type": "execute",
+    "name": "execute RestApiCallNode Create tenant auth",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\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": 850.3955669403076,
+    "y": 1576.4548950195312,
+    "z": "7c522092.2b01d",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "6a29a6d.e51e358",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1017.0739574432373,
+    "y": 1534.52241897583,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "bcbf10f7.b7993"
+      ]
+    ]
+  },
+  {
+    "id": "4a6eca43.810a44",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1023.3953685760498,
+    "y": 1482.3081073760986,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "67730720.8e4a18"
+      ]
+    ]
+  },
+  {
+    "id": "bcbf10f7.b7993",
+    "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": 1169.8239574432373,
+    "y": 1534.2724800109863,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "67730720.8e4a18",
+    "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": 1224.8955974578857,
+    "y": 1474.3121299743652,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "ffa06abb.9a2a48",
+        "cc923e40.7eb57"
+      ]
+    ]
+  },
+  {
+    "id": "cc923e40.7eb57",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1458.0039043426514,
+    "y": 1433.0039434432983,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "7c9ff36f.d8d7bc"
+      ]
+    ]
+  },
+  {
+    "id": "ffa06abb.9a2a48",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1411.2894840240479,
+    "y": 1527.0040216445923,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "d1efa0cc.71a21"
+      ]
+    ]
+  },
+  {
+    "id": "d1efa0cc.71a21",
+    "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": 1580.1466655731201,
+    "y": 1525.1110353469849,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "7c9ff36f.d8d7bc",
+    "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": 1570.4322299957275,
+    "y": 1477.8253078460693,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "7e6a4a74.fb8064",
+    "type": "for",
+    "name": "for ntidx.. mdsal-psd.service-data.networks.network_length[]",
+    "xml": "<for index='ntidx' start='0' end='`$mdsal-psd.service-data.networks.network_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 776.0312480926514,
+    "y": 903.0312495231628,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "b21fb0ff.7db48"
+      ]
+    ]
+  },
+  {
+    "id": "ad8228ad.984598",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1907.031270980835,
+    "y": 1324.0312895774841,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "adf75159.a4939"
+      ]
+    ]
+  },
+  {
+    "id": "b21fb0ff.7db48",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 740.0312480926514,
+    "y": 975.0312495231628,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "e497173b.c24408"
+      ]
+    ]
+  },
+  {
+    "id": "e497173b.c24408",
+    "type": "switchNode",
+    "name": "switch ActivateSDWANConnectivityInstance",
+    "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$ntidx].network-data.request-information.request-action == 'ActivateSDWANConnectivityInstance'`\">\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1015.9797954559326,
+    "y": 976.9958739280701,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "d6c139b3.090dd8"
+      ]
+    ]
+  },
+  {
+    "id": "d6c139b3.090dd8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1272.9792881011963,
+    "y": 975.9960041046143,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "b4139f80.a76b4"
+      ]
+    ]
+  },
+  {
+    "id": "b4139f80.a76b4",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 732.3299388885498,
+    "y": 1072.6630549430847,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "ba5ecb28.66e198"
+      ]
+    ]
+  },
+  {
+    "id": "ba5ecb28.66e198",
+    "type": "for",
+    "name": "for loop paramidx - Get topology from servicedata",
+    "xml": "<for index=\"paramidx\" start=\"0\" end=\"`$mdsal-psd.service-data.networks.network[$ntidx].network-data.network-request-input.network-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1011.9800395965576,
+    "y": 1061.995677471161,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "bcfcaf76.f471a"
+      ]
+    ]
+  },
+  {
+    "id": "bcfcaf76.f471a",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1209.9796695709229,
+    "y": 1114.996165752411,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "808f1a6b.ade978",
+        "8fc5fee9.2e70f",
+        "7c2cd6d7.da9468"
+      ]
+    ]
+  },
+  {
+    "id": "8fc5fee9.2e70f",
+    "type": "switchNode",
+    "name": "switch vpnId",
+    "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$ntidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'vpn-id'`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1359.6458168029785,
+    "y": 1129.3284697532654,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "5eeff931.68f088"
+      ]
+    ]
+  },
+  {
+    "id": "808f1a6b.ade978",
+    "type": "switchNode",
+    "name": "switch topology",
+    "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$ntidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'topology'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1367.9800930023193,
+    "y": 1086.995487689972,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "385cddcb.23c372"
+      ]
+    ]
+  },
+  {
+    "id": "5eeff931.68f088",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1511.6458072662354,
+    "y": 1131.3285002708435,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "827b7756.0101b8"
+      ]
+    ]
+  },
+  {
+    "id": "385cddcb.23c372",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1519.9800834655762,
+    "y": 1088.99551820755,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "9cc5fb84.591a88"
+      ]
+    ]
+  },
+  {
+    "id": "9cc5fb84.591a88",
+    "type": "set",
+    "name": "set topology",
+    "xml": "<set>\n<parameter name='prop.topology' value='`$mdsal-psd.service-data.networks.network[$ntidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
+    "comments": "",
+    "x": 1604.9800968170166,
+    "y": 1026.5954375267029,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "827b7756.0101b8",
+    "type": "set",
+    "name": "set prop.vpn1Id",
+    "xml": "<set>\n<parameter name='prop.vpn1Id' value='`$mdsal-psd.service-data.networks.network[$ntidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
+    "comments": "",
+    "x": 1659.6458721160889,
+    "y": 1120.9284148216248,
+    "z": "7c522092.2b01d",
+    "wires": []
+  },
+  {
+    "id": "7c2cd6d7.da9468",
+    "type": "switchNode",
+    "name": "switch vpn name",
+    "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$ntidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1331.031270980835,
+    "y": 1045.031277179718,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "829e0f12.c7157"
+      ]
+    ]
+  },
+  {
+    "id": "829e0f12.c7157",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1441.0312747955322,
+    "y": 989.0312466621399,
+    "z": "7c522092.2b01d",
+    "wires": [
+      [
+        "16fe2ddd.1cfe92"
+      ]
+    ]
+  },
+  {
+    "id": "16fe2ddd.1cfe92",
+    "type": "set",
+    "name": "set vpn name",
+    "xml": "<set>\n<parameter name='prop.name' value='`$mdsal-psd.service-data.networks.network[$ntidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
+    "comments": "",
+    "x": 1562.0312747955322,
+    "y": 954.6312832832336,
+    "z": "7c522092.2b01d",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-delete.json
new file mode 100644
index 0000000..074dee3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-delete.json
@@ -0,0 +1,941 @@
+[
+  {
+    "id": "b9f06b07.f3a768",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 131,
+    "y": 70,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "56d70828.f50c48"
+      ]
+    ]
+  },
+  {
+    "id": "56d70828.f50c48",
+    "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": 343.00000381469727,
+    "y": 142.0000171661377,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "8c1c122c.922b4"
+      ]
+    ]
+  },
+  {
+    "id": "8c1c122c.922b4",
+    "type": "method",
+    "name": "sdwan-attachment-topology-operation-delete",
+    "xml": "<method rpc='sdwan-attachment-topology-operation-delete' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 331.0001220703125,
+    "y": 230,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "b8453101.deebe"
+      ]
+    ]
+  },
+  {
+    "id": "b8453101.deebe",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 347.0001220703125,
+    "y": 785.0002446174622,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "57dbee5c.be95e",
+        "ca7d47f1.45f358",
+        "7673909c.5a2e3",
+        "ecea06e3.25a318",
+        "da0989a1.945518",
+        "ae3090d.67bd97",
+        "3ac1cb4a.bcc3b4",
+        "e3865992.7e3fc8",
+        "4734b343.474b9c",
+        "b32dbc09.e3051",
+        "d3caba2b.d332f8",
+        "cfc2e19e.1fcac",
+        "61e84275.3bc6fc",
+        "cc50854b.9b5d18",
+        "2036e77.af47618"
+      ]
+    ]
+  },
+  {
+    "id": "57dbee5c.be95e",
+    "type": "set",
+    "name": "set tmp.ar.allotted-resource-id,etc",
+    "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n",
+    "comments": "",
+    "x": 743.9935607910156,
+    "y": 183.9934868812561,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "dd97f979.9eaae8",
+    "type": "comment",
+    "name": "set tmp ar-id to fetch resource from MDSAL",
+    "info": "",
+    "comments": "",
+    "x": 772.9538726806641,
+    "y": 148.02528285980225,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "ca7d47f1.45f358",
+    "type": "set",
+    "name": "set tmp.ar.self-link",
+    "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/connection-attachment-topology/'` \" />\n\n",
+    "comments": "",
+    "x": 697.9934997558594,
+    "y": 276.99349212646484,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "da0989a1.945518",
+    "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": 704.2553901672363,
+    "y": 364.6602210998535,
+    "z": "4de23974.164008",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "7673909c.5a2e3",
+    "type": "execute",
+    "name": "generate allotted-resource url",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 736.2554168701172,
+    "y": 452.66020250320435,
+    "z": "4de23974.164008",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "8315ba14.0dc648",
+    "type": "comment",
+    "name": "Used for setting output to API Handler",
+    "info": "",
+    "comments": "",
+    "x": 751.9935302734375,
+    "y": 243.993501663208,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "3c54e364.ade40c",
+    "type": "comment",
+    "name": "Obtain different URL, template location etc",
+    "info": "For saving resource information to MDSAL & for AAI",
+    "comments": "",
+    "x": 769.9934959411621,
+    "y": 329.8823823928833,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "67f0dba1.ee0bc4",
+    "type": "comment",
+    "name": "Used to Get AR by id to MDSAL, same as self-link",
+    "info": "",
+    "comments": "",
+    "x": 795.9935150146484,
+    "y": 416.8823413848877,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "22c383eb.e7131c",
+    "type": "comment",
+    "name": "GET parent-service-data from mdsal to check existence of other End point",
+    "info": "",
+    "comments": "",
+    "x": 863.0003280639648,
+    "y": 871.5316228866577,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "810e2b6c.9f1de8",
+    "type": "for",
+    "name": "for pidx..mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[]",
+    "xml": "<for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1691.1849365234375,
+    "y": 1105.00425863266,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "690c4edc.5f401"
+      ]
+    ]
+  },
+  {
+    "id": "ecea06e3.25a318",
+    "type": "switchNode",
+    "name": "switch mdsal-psd.service-data.provided-allotted-resources_length",
+    "xml": "<switch test='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 842.1842956542969,
+    "y": 1111.718041419983,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "384921c2.c1fd6e",
+        "9a1aea32.687248"
+      ]
+    ]
+  },
+  {
+    "id": "e406b111.f8cad",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1292.4544582366943,
+    "y": 1151.7015271186829,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "810e2b6c.9f1de8",
+        "9caa2a43.39ddb8"
+      ]
+    ]
+  },
+  {
+    "id": "690c4edc.5f401",
+    "type": "switchNode",
+    "name": "switch allotted-resource-id",
+    "xml": "<switch test=\"`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2141.296142578125,
+    "y": 1103.0041165351868,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "e114982a.497cc8"
+      ]
+    ]
+  },
+  {
+    "id": "ae3090d.67bd97",
+    "type": "set",
+    "name": "set tmp.ar.parent-service-instance-id",
+    "xml": "<set>\n<parameter name='tmp.ar.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n\n",
+    "comments": "",
+    "x": 753.9687118530273,
+    "y": 907.0000677108765,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "7a941a2c.6b5534",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1133.968994140625,
+    "y": 985.0001826286316,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "f87fdce1.8f426"
+      ]
+    ]
+  },
+  {
+    "id": "616b8620.cffa38",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1125.8207969665527,
+    "y": 1020.066267490387,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "c66c8fc5.25841"
+      ]
+    ]
+  },
+  {
+    "id": "c66c8fc5.25841",
+    "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=\"Error: SOTN resource not found\" />\n    \n",
+    "comments": "",
+    "x": 1300.969482421875,
+    "y": 1016.3336176872253,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "f87fdce1.8f426",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1284.968994140625,
+    "y": 983.0001826286316,
+    "z": "4de23974.164008",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "ba29c90b.a2ba18",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 987.7307624816895,
+    "y": 1300.952815413475,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "a31d3239.91ffa"
+      ]
+    ]
+  },
+  {
+    "id": "a31d3239.91ffa",
+    "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=\"AAI failed\" />\n",
+    "comments": "",
+    "x": 1154.2546424865723,
+    "y": 1312.57188642025,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "30824867.291518",
+    "type": "failure",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 994.8260498046875,
+    "y": 1333.7147830724716,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "a31d3239.91ffa"
+      ]
+    ]
+  },
+  {
+    "id": "a9de303.1918dd",
+    "type": "comment",
+    "name": "TODO: Rework after confirmation from AAI",
+    "info": "",
+    "comments": "",
+    "x": 1119.1374282836914,
+    "y": 1251.8732151985168,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "3ac1cb4a.bcc3b4",
+    "type": "set",
+    "name": "set output to api handler",
+    "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='connection-attachment-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $connection-attachment-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+    "comments": "",
+    "x": 720.5461502075195,
+    "y": 1264.8276824951172,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "e3865992.7e3fc8",
+    "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": 689.9592666625977,
+    "y": 1371.4435625076294,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "4734b343.474b9c",
+    "type": "execute",
+    "name": "execute RestApiCallNode - PUT AR by id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='Delete' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 769.6666641235352,
+    "y": 541.3333625793457,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "6ade3c12.7994f4",
+        "e1a0637a.9ebf2",
+        "b8627e78.eb192"
+      ]
+    ]
+  },
+  {
+    "id": "6ade3c12.7994f4",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1009.3081665039062,
+    "y": 581.6649107933044,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "a87c397.af463c8"
+      ]
+    ]
+  },
+  {
+    "id": "e1a0637a.9ebf2",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1006.3081665039062,
+    "y": 538.1649084091187,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "a87c397.af463c8"
+      ]
+    ]
+  },
+  {
+    "id": "b8627e78.eb192",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1013.0582466125488,
+    "y": 497.5220036506653,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "b1cd793e.5e9dc8"
+      ]
+    ]
+  },
+  {
+    "id": "a87c397.af463c8",
+    "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 updating md-sal for connection-attachment-allotted-resource\" />\n",
+    "comments": "",
+    "x": 1165.058334350586,
+    "y": 559.9149088859558,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "b1cd793e.5e9dc8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1150.7141780853271,
+    "y": 497.7141833305359,
+    "z": "4de23974.164008",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "bd3b6f56.caa65",
+    "type": "comment",
+    "name": "Delete Allotted Resource",
+    "info": "",
+    "comments": "",
+    "x": 717.0000457763672,
+    "y": 510.0000286102295,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "7503ea37.fd6c04",
+    "type": "for",
+    "name": "for cidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]",
+    "xml": "<for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1667.00390625,
+    "y": 747.00390625,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "f40e177b.0b9868"
+      ]
+    ]
+  },
+  {
+    "id": "b32dbc09.e3051",
+    "type": "switchNode",
+    "name": "switch service-data.consumed-allotted-resources_length",
+    "xml": "<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 820.0032920837402,
+    "y": 707.71790766716,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "c43d45d0.725118",
+        "b1813741.d0a008"
+      ]
+    ]
+  },
+  {
+    "id": "c43d45d0.725118",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1144.1461563110352,
+    "y": 690.5753421783447,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "494b4b44.f09f14"
+      ]
+    ]
+  },
+  {
+    "id": "b1813741.d0a008",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1130.1461791992188,
+    "y": 753.5753309726715,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "a0d3a795.96d2a8"
+      ]
+    ]
+  },
+  {
+    "id": "a0d3a795.96d2a8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1290.2732696533203,
+    "y": 751.7013075351715,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "7503ea37.fd6c04",
+        "8fef3486.f53f48"
+      ]
+    ]
+  },
+  {
+    "id": "d3caba2b.d332f8",
+    "type": "set",
+    "name": "set consumed allotted resources for deletion",
+    "xml": "<set>\n<parameter name=\"service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].\" value=\"\" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`' />\n\n",
+    "comments": "",
+    "x": 776.8606262207031,
+    "y": 778.28955078125,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "f40e177b.0b9868",
+    "type": "switchNode",
+    "name": "switch allotted-resource-id",
+    "xml": "<switch test=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2105.1155166625977,
+    "y": 743.0040283203125,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "5f3df777.af7b38"
+      ]
+    ]
+  },
+  {
+    "id": "5f3df777.af7b38",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2300.925338745117,
+    "y": 742.4683527946472,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "6d89866f.0d32c8"
+      ]
+    ]
+  },
+  {
+    "id": "e9496ef8.3a3c5",
+    "type": "set",
+    "name": "set tmp.cidx",
+    "xml": "<set>\n<parameter name='tmp.cidx' value='`$cidx`' />\n",
+    "comments": "",
+    "x": 2616.2618713378906,
+    "y": 743.2246108055115,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "e2abacaf.782bf",
+    "type": "comment",
+    "name": "Delete consumed service consumed-allotted-resources in mdsal",
+    "info": "",
+    "comments": "",
+    "x": 831.0045623779297,
+    "y": 640.0038724095793,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "e6fb5c22.b2976",
+    "type": "comment",
+    "name": "This set resource will be deleted in MDSAL by provider code",
+    "info": "",
+    "comments": "",
+    "x": 821.337345123291,
+    "y": 744.781964302063,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "e963214.b61b0e",
+    "type": "comment",
+    "name": "Obtain the index of conusumed AR",
+    "info": "",
+    "comments": "",
+    "x": 743.7817535400391,
+    "y": 671.8927326202393,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "494b4b44.f09f14",
+    "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=\"Resource to be deleted doesn't exist in MDSAL.\" />\n",
+    "comments": "",
+    "x": 1306.00390625,
+    "y": 691.00390625,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "6d89866f.0d32c8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2450.003936767578,
+    "y": 743.2539558410645,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "e9496ef8.3a3c5"
+      ]
+    ]
+  },
+  {
+    "id": "851fd9bb.09d5f8",
+    "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=\"resource to be deleted is not available in mdsal\" />\n",
+    "comments": "",
+    "x": 1760.25390625,
+    "y": 800.25390625,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "d98b4681.77ed08",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1622.75390625,
+    "y": 800.25390625,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "851fd9bb.09d5f8"
+      ]
+    ]
+  },
+  {
+    "id": "8fef3486.f53f48",
+    "type": "switchNode",
+    "name": "switch tmp.cidx ",
+    "xml": "<switch test=\"`$tmp.cidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1468.75390625,
+    "y": 800.25390625,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "d98b4681.77ed08"
+      ]
+    ]
+  },
+  {
+    "id": "3dd9973a.4ea7a8",
+    "type": "comment",
+    "name": "Delete provided service provided-allotted-resources in mdsal",
+    "info": "",
+    "comments": "",
+    "x": 817.5039215087891,
+    "y": 836.00390625,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "9a1aea32.687248",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1145.5041770935059,
+    "y": 1150.7540984153748,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "e406b111.f8cad"
+      ]
+    ]
+  },
+  {
+    "id": "384921c2.c1fd6e",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1162.5040969848633,
+    "y": 1062.7539324760437,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "a35171cd.d90da"
+      ]
+    ]
+  },
+  {
+    "id": "a35171cd.d90da",
+    "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=\"Resource to be deleted doesn't exist in MDSAL.\" />\n",
+    "comments": "",
+    "x": 1326.3616943359375,
+    "y": 1063.1824774742126,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "702543f3.ec4a8c",
+    "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=\"resource to be deleted is not available in mdsal\" />\n",
+    "comments": "",
+    "x": 1757.7539501190186,
+    "y": 1180.753936290741,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "f0b84e69.39376",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1620.2539501190186,
+    "y": 1180.753936290741,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "702543f3.ec4a8c"
+      ]
+    ]
+  },
+  {
+    "id": "9caa2a43.39ddb8",
+    "type": "switchNode",
+    "name": "switch tmp.pidx ",
+    "xml": "<switch test=\"`$tmp.pidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1466.2539501190186,
+    "y": 1180.753936290741,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "f0b84e69.39376"
+      ]
+    ]
+  },
+  {
+    "id": "e114982a.497cc8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2330.504367828369,
+    "y": 1100.7540946006775,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "5dc21145.7fddd"
+      ]
+    ]
+  },
+  {
+    "id": "9af67acf.f5f308",
+    "type": "set",
+    "name": "set tmp.pidx",
+    "xml": "<set>\n<parameter name='tmp.pidx' value='`$pidx`' />\n",
+    "comments": "",
+    "x": 2398.8404846191406,
+    "y": 1235.5101914405823,
+    "z": "4de23974.164008",
+    "wires": []
+  },
+  {
+    "id": "5dc21145.7fddd",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2390.582820892334,
+    "y": 1171.539580821991,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "9af67acf.f5f308"
+      ]
+    ]
+  },
+  {
+    "id": "2036e77.af47618",
+    "type": "update",
+    "name": "update AAI allotted-resource",
+    "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='allotted-resource'  \n\t\tkey=\"customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 733.2227554321289,
+    "y": 1320.754346370697,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "ba29c90b.a2ba18",
+        "30824867.291518"
+      ]
+    ]
+  },
+  {
+    "id": "61e84275.3bc6fc",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get-resource parent service data",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-psd\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 823.3334197998047,
+    "y": 1006.333366394043,
+    "z": "4de23974.164008",
+    "wires": [
+      [
+        "7a941a2c.6b5534",
+        "616b8620.cffa38"
+      ]
+    ]
+  },
+  {
+    "id": "cfc2e19e.1fcac",
+    "type": "execute",
+    "name": "get parent-service-data tmp.ar-url-psd",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-psd\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>",
+    "comments": "",
+    "outputs": 1,
+    "x": 757.3333587646484,
+    "y": 964.3332056999207,
+    "z": "4de23974.164008",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "cc50854b.9b5d18",
+    "type": "execute",
+    "name": "execute RestApiCallNode - delete-resource parent service data",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value=\"`$prop.controller.url + $tmp.ar-url-psd + '/provided-allotted-resources/provided-allotted-resource/' + $tmp.ar.allotted-resource-id`\" />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-psd-delete\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 839.00390625,
+    "y": 1211.00390625,
+    "z": "4de23974.164008",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-bandwidth-policy-change.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-bandwidth-policy-change.json
new file mode 100644
index 0000000..df3c74f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-bandwidth-policy-change.json
@@ -0,0 +1,2038 @@
+[

+    {

+        "id": "9a049bb3.4cc658",

+        "type": "method",

+        "name": "method sdwan-bandwidth-policy-change",

+        "xml": "<method rpc='sdwan-bandwidth-policy-change' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 224.56666564941406,

+        "y": 188.98631858825684,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "68698faf.6a5e4"

+            ]

+        ]

+    },

+    {

+        "id": "a7d83b15.019fd8",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 113.56666564941406,

+        "y": 43.39997863769531,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "643409a4.699f8"

+            ]

+        ]

+    },

+    {

+        "id": "643409a4.699f8",

+        "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": 212.8523712158203,

+        "y": 94.63808631896973,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "9a049bb3.4cc658"

+            ]

+        ]

+    },

+    {

+        "id": "68698faf.6a5e4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 173.23333740234375,

+        "y": 471.06669425964355,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "5e98bf05.e67a08",

+                "dfba78b2.cf5278",

+                "647253ac.fc0934",

+                "87568bca.067338",

+                "5fd7672d.efd348",

+                "8f8f069f.d3b5f",

+                "45255c46.056ca4",

+                "aaf4a45e.8000f",

+                "5a004830.6f6608",

+                "34c4a2e.64014de",

+                "1e6767eb.165f58",

+                "4fea1987.fd6de8",

+                "9a1087dc.7cf728",

+                "ce9e8fbf.c64eb8",

+                "46021ece.1d213",

+                "c5a35f5.403d42",

+                "72a6e071.e177a8",

+                "3576832.1dfbb7c",

+                "ae8b2331.d9b508",

+                "83f66961.dd8d88"

+            ]

+        ]

+    },

+    {

+        "id": "dfba78b2.cf5278",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 550.5980529785156,

+        "y": 268.6691265106201,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "beb36a8c.fea37"

+            ]

+        ]

+    },

+    {

+        "id": "5e98bf05.e67a08",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 561.5666847229004,

+        "y": 207.39998722076416,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "e784f8c3.fd2c88"

+            ]

+        ]

+    },

+    {

+        "id": "e784f8c3.fd2c88",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 741.5666656494141,

+        "y": 206.39997673034668,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "84d8c37.44581c"

+            ]

+        ]

+    },

+    {

+        "id": "84d8c37.44581c",

+        "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": 890.9953918457031,

+        "y": 207.54289436340332,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "beb36a8c.fea37",

+        "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": 779.5666809082031,

+        "y": 269.39998292922974,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "19f2cbd5.f4d47c"

+            ]

+        ]

+    },

+    {

+        "id": "19f2cbd5.f4d47c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 994.5666656494141,

+        "y": 267.3999767303467,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "242d7471.1e0fcc"

+            ]

+        ]

+    },

+    {

+        "id": "242d7471.1e0fcc",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1158.566665649414,

+        "y": 262.3999767303467,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "647253ac.fc0934",

+        "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": 601.8524169921875,

+        "y": 498.7333679199219,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "87568bca.067338",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 596.597900390625,

+        "y": 547.9312744140625,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "3ffd0e51.14068a"

+            ]

+        ]

+    },

+    {

+        "id": "3ffd0e51.14068a",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 806.5979614257812,

+        "y": 548.9312744140625,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "d522cd79.ad3f4",

+                "2b00a206.372fbe",

+                "9f0c831.34326"

+            ]

+        ]

+    },

+    {

+        "id": "d522cd79.ad3f4",

+        "type": "switchNode",

+        "name": "switch ActivateSDWANDeviceInstance",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1091.5667190551758,

+        "y": 550.4000248908997,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "ad861bc9.52b23"

+            ]

+        ]

+    },

+    {

+        "id": "ad861bc9.52b23",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1313.5665588378906,

+        "y": 549.4000239372253,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "92c05fd7.57e9c8"

+            ]

+        ]

+    },

+    {

+        "id": "92c05fd7.57e9c8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1457.9000625610352,

+        "y": 548.4000248908997,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "cb432e4a.4b0de8"

+            ]

+        ]

+    },

+    {

+        "id": "cb432e4a.4b0de8",

+        "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[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1721.900146484375,

+        "y": 550.39990234375,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "c6c5951b.d1cc6"

+            ]

+        ]

+    },

+    {

+        "id": "c6c5951b.d1cc6",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1651.2330474853516,

+        "y": 634.0666694641113,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "dd4c1251.6b9dc"

+            ]

+        ]

+    },

+    {

+        "id": "dd4c1251.6b9dc",

+        "type": "switchNode",

+        "name": "switch name (DeviceName)",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].name == 'name'`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1855.900966644287,

+        "y": 642.4001779556274,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "a54c7fdf.cf7748"

+            ]

+        ]

+    },

+    {

+        "id": "a54c7fdf.cf7748",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2078.901424407959,

+        "y": 623.4002380371094,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "e01920aa.1d3f78"

+            ]

+        ]

+    },

+    {

+        "id": "e01920aa.1d3f78",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1817.234275817871,

+        "y": 724.4002418518066,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "491ad5e7.d88bf4"

+            ]

+        ]

+    },

+    {

+        "id": "491ad5e7.d88bf4",

+        "type": "switchNode",

+        "name": "switch deviceName match",

+        "xml": "<switch test=\"`$prop.wan.deviceName == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`\">\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2022.9010009765625,

+        "y": 725.4003057479858,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "80098fd9.d10308"

+            ]

+        ]

+    },

+    {

+        "id": "80098fd9.d10308",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1792.2350692749023,

+        "y": 791.4003944396973,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "408c0e84.0ebe98"

+            ]

+        ]

+    },

+    {

+        "id": "408c0e84.0ebe98",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1941.567039489746,

+        "y": 796.4001502990723,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "cda76362.f26248",

+                "c8c067f4.7b7878",

+                "278adaa9.823dce"

+            ]

+        ]

+    },

+    {

+        "id": "cda76362.f26248",

+        "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[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2212.7642211914062,

+        "y": 767.4313468933105,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "ef90e6fe.b8472"

+            ]

+        ]

+    },

+    {

+        "id": "c8c067f4.7b7878",

+        "type": "set",

+        "name": "set tmp.devicevidx",

+        "xml": "<set>\n<parameter name='tmp.devicevidx' value='`$vfidx`' />\n\n",

+        "comments": "",

+        "x": 2130.566131591797,

+        "y": 807.4001054763794,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "ef90e6fe.b8472",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2377.7650756835938,

+        "y": 819.4314308166504,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "290b2bde.04b43c",

+                "19aa1fcf.94cd28"

+            ]

+        ]

+    },

+    {

+        "id": "290b2bde.04b43c",

+        "type": "switchNode",

+        "name": "switch deviceId",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].name == 'deviceId'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2393.234748840332,

+        "y": 862.0670013427734,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "c140599c.4a564"

+            ]

+        ]

+    },

+    {

+        "id": "b918da97.d41cb",

+        "type": "comment",

+        "name": "Get deviceId from device resource created for this service",

+        "info": "",

+        "comments": "",

+        "x": 2220.9000930786133,

+        "y": 692.7332530021667,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "c140599c.4a564",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2546.235118865967,

+        "y": 863.0670785903931,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "3da2b7b6.0edbe"

+            ]

+        ]

+    },

+    {

+        "id": "3da2b7b6.0edbe",

+        "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[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].value`' />\n",

+        "comments": "",

+        "x": 2715.235725402832,

+        "y": 861.6671133041382,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "2b00a206.372fbe",

+        "type": "switchNode",

+        "name": "switch ActivateSiteInstance",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANSiteInstance'`\">\n\n    \n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1045.2333755493164,

+        "y": 611.0666937828064,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "5764d81.58e5728"

+            ]

+        ]

+    },

+    {

+        "id": "5764d81.58e5728",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1239.2335510253906,

+        "y": 610.066713809967,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "dc9d979a.5f2cd"

+            ]

+        ]

+    },

+    {

+        "id": "dc9d979a.5f2cd",

+        "type": "set",

+        "name": "set tmp.siteVidx",

+        "xml": "<set>\n<parameter name='tmp.siteVidx' value='`$vfidx`' />\n<parameter name='ctx.site.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].`' />",

+        "comments": "",

+        "x": 1402.2329864501953,

+        "y": 607.0667147636414,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "9a1087dc.7cf728",

+        "type": "switchNode",

+        "name": "switch tmp.wanPortVidx",

+        "xml": "<switch test=\"`$tmp.wanPortVidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 554.56689453125,

+        "y": 643.4001770019531,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "8b1ad78e.657ac"

+            ]

+        ]

+    },

+    {

+        "id": "ce9e8fbf.c64eb8",

+        "type": "switchNode",

+        "name": "switch tmp.siteVidx",

+        "xml": "<switch test=\"`$tmp.siteVidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 539.5511474609375,

+        "y": 688.3965449333191,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "3a404df0.e435ea"

+            ]

+        ]

+    },

+    {

+        "id": "46021ece.1d213",

+        "type": "switchNode",

+        "name": "switch tmp.devicevidx",

+        "xml": "<switch test=\"`$tmp.devicevidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 551.2178955078125,

+        "y": 733.396514415741,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "17a08f2e.392ab1"

+            ]

+        ]

+    },

+    {

+        "id": "17a08f2e.392ab1",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 729.6464958190918,

+        "y": 733.9678673744202,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "9de45a58.c4c508"

+            ]

+        ]

+    },

+    {

+        "id": "3a404df0.e435ea",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 722.9798278808594,

+        "y": 686.9677844047546,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "762e1a6d.f87714"

+            ]

+        ]

+    },

+    {

+        "id": "8b1ad78e.657ac",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 724.9955978393555,

+        "y": 645.9715518951416,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "37d9bd3f.0a7402"

+            ]

+        ]

+    },

+    {

+        "id": "37d9bd3f.0a7402",

+        "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=\"ActivateSDWANPortInstance not found in service-data\" />\n",

+        "comments": "",

+        "x": 866.4246597290039,

+        "y": 646.1144709587097,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "762e1a6d.f87714",

+        "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=\"ActivateSiteInstance not found in service-data\" />\n",

+        "comments": "",

+        "x": 867.4087905883789,

+        "y": 687.1106886863708,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "9de45a58.c4c508",

+        "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=\"ActivateSDWANDeviceInstance not found in service-data\" />\n",

+        "comments": "",

+        "x": 876.0752811431885,

+        "y": 733.110867023468,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "5fd7672d.efd348",

+        "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": 615.5666580200195,

+        "y": 797.3999600410461,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "57a9a39a.d4fa04"

+            ]

+        ]

+    },

+    {

+        "id": "57a9a39a.d4fa04",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 877.5768508911133,

+        "y": 798.0767846107483,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "757fc61f.93222"

+            ]

+        ]

+    },

+    {

+        "id": "757fc61f.93222",

+        "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": 1046.5669860839844,

+        "y": 798.4000906944275,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "6950422c.cbd75c"

+            ]

+        ]

+    },

+    {

+        "id": "6950422c.cbd75c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1184.5674438476562,

+        "y": 796.4000754356384,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "e425faf5.c4ed2"

+            ]

+        ]

+    },

+    {

+        "id": "e425faf5.c4ed2",

+        "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": 1348.5674781799316,

+        "y": 797.9999289512634,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "72a6e071.e177a8",

+        "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": 598.5666580200195,

+        "y": 970.7333340644836,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "3e8b4780.c3e7b",

+                "87683e31.3531e8"

+            ]

+        ]

+    },

+    {

+        "id": "c5a35f5.403d42",

+        "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": 584.6284294128418,

+        "y": 887.6122145652771,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "e08ebeb2.23c9c8",

+                "dad13825.dc1af8",

+                "161968de.f90387"

+            ]

+        ]

+    },

+    {

+        "id": "e08ebeb2.23c9c8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 819.6284942626953,

+        "y": 851.6122317314148,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "e9266da5.edf4d"

+            ]

+        ]

+    },

+    {

+        "id": "dad13825.dc1af8",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 822.1193771362305,

+        "y": 887.1862683296204,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "4d64dd3e.65fe1c"

+            ]

+        ]

+    },

+    {

+        "id": "161968de.f90387",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 817.4523849487305,

+        "y": 923.5196270942688,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "14fd878.e55fbf9"

+            ]

+        ]

+    },

+    {

+        "id": "4d64dd3e.65fe1c",

+        "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": 967.6907730102539,

+        "y": 885.4719557762146,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "e9266da5.edf4d",

+        "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": 980.128604888916,

+        "y": 849.6121716499329,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "3e8b4780.c3e7b",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 833.5667839050293,

+        "y": 956.7333226203918,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "fa15d12b.8abbb"

+            ]

+        ]

+    },

+    {

+        "id": "87683e31.3531e8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 832.8167839050293,

+        "y": 992.376229763031,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "8a7885ae.8c3fd8"

+            ]

+        ]

+    },

+    {

+        "id": "8a7885ae.8c3fd8",

+        "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": 981.5667915344238,

+        "y": 993.1263117790222,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "fa15d12b.8abbb",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 975.5667915344238,

+        "y": 955.7333235740662,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "c4f29b01.377588",

+        "type": "set",

+        "name": "set prop.tenant-id",

+        "xml": "<set>\n<parameter name='prop.tenant-id' value='d9511b64-61ae-446e-96a1-6adbff09582c' />\n",

+        "comments": "",

+        "x": 540.5666427612305,

+        "y": 1016.0250115394592,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "4374ec20.cd7fb4",

+        "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": 622.5666542053223,

+        "y": 1058.0248894691467,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "14fd878.e55fbf9",

+        "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": 971.2248764038086,

+        "y": 920.9587140083313,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "aaf4a45e.8000f",

+        "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": 499.5666923522949,

+        "y": 1616.3999853134155,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "e1db3a67.9d3d88",

+        "type": "set",

+        "name": "set prop.wan.transportNetworkId",

+        "xml": "<set>\n<parameter name='prop.wan.transportNetworkId' value='`$transportNetworksResp.data.transportNetworks[$tidx].id`' />\n",

+        "comments": "",

+        "x": 1441.223258972168,

+        "y": 1218.0559792518616,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "d4c498b3.d479b",

+        "type": "switchNode",

+        "name": "switch transportNetworkName same",

+        "xml": "<switch test=\"`$transportNetworksResp.data.transportNetworks[$tidx].name == $prop.wan.transportNetworkName`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1021.23291015625,

+        "y": 1218.7323279380798,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "a695536e.3aae48"

+            ]

+        ]

+    },

+    {

+        "id": "a695536e.3aae48",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1234.2323608398438,

+        "y": 1218.7322459220886,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "e1db3a67.9d3d88"

+            ]

+        ]

+    },

+    {

+        "id": "3ea2c186.a3bafe",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 808.2326622009277,

+        "y": 1219.3990569114685,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "d4c498b3.d479b"

+            ]

+        ]

+    },

+    {

+        "id": "4fea1987.fd6de8",

+        "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": 584.2322463989258,

+        "y": 1219.3987774848938,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "3ea2c186.a3bafe"

+            ]

+        ]

+    },

+    {

+        "id": "efdcb038.cc7768",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1086.2318840026855,

+        "y": 1175.0654292106628,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7c7050b2.5e82f8",

+        "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": 1075.232135772705,

+        "y": 1131.06543302536,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "a758bd40.1d94d",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 933.231803894043,

+        "y": 1132.06543302536,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "7c7050b2.5e82f8"

+            ]

+        ]

+    },

+    {

+        "id": "2520e9c0.37b516",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 929.2318801879883,

+        "y": 1176.065755367279,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "efdcb038.cc7768"

+            ]

+        ]

+    },

+    {

+        "id": "1e6767eb.165f58",

+        "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": 641.2322387695312,

+        "y": 1181.06591796875,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "2520e9c0.37b516",

+                "a758bd40.1d94d"

+            ]

+        ]

+    },

+    {

+        "id": "5862d24a.2961c4",

+        "type": "save",

+        "name": "save sdwan vpn bandwidth configuration in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='bandwidth-history' \n      key='sdwan-bandwidth-policy-id = $prop.bandwidth.bandwidth-policyId' >\n<parameter name=\"sdwan-bandwidth-policy-id\" value=\"`$prop.bandwidth.bandwidth-policyId`\" />\n<parameter name=\"sdwan-bandwidth-policy-name\" value=\"`$prop.bandwidth.bandwidth-policyId`\" />\n<parameter name=\"bandwidth-value\" value=\"`$prop.wan.inputBandwidth`\" />\n<parameter name=\"bandwidth-change-time\" value=\"`$prop.wan.bandwidth-change-time`\" />\n<parameter name=\"vpn-id\" value=\"`$prop.bandwidth.vpnId`\" />\n<!--parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' /-->\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 603.3232421875,

+        "y": 1570.728271484375,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "d5941ab4.54903",

+                "f5f1e715.54f9b8"

+            ]

+        ]

+    },

+    {

+        "id": "45255c46.056ca4",

+        "type": "for",

+        "name": "for loop bwidx -input-parameters",

+        "xml": "<for index=\"bwidx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 572.6604423522949,

+        "y": 1381.065131187439,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "4ac42fe3.4e6828"

+            ]

+        ]

+    },

+    {

+        "id": "4ac42fe3.4e6828",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 808.6612739562988,

+        "y": 1380.065294265747,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "6913905f.eaac88",

+                "106821b2.664aee"

+            ]

+        ]

+    },

+    {

+        "id": "6913905f.eaac88",

+        "type": "switchNode",

+        "name": "switch bandwidth",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$bwidx].name == 'bandwidth'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 995.1305198669434,

+        "y": 1376.7007102966309,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "267718b3.35416"

+            ]

+        ]

+    },

+    {

+        "id": "267718b3.35416",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1161.130853652954,

+        "y": 1373.7008743286133,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "8eef17cf.1cf068"

+            ]

+        ]

+    },

+    {

+        "id": "8eef17cf.1cf068",

+        "type": "set",

+        "name": "set prop.wan.inputBandwidth & outputBandwidth",

+        "xml": "<set>\n<parameter name='prop.wan.inputBandwidth' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$bwidx].value`' />\n<parameter name='prop.wan.outputBandwidth' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$bwidx].value`' />\n",

+        "comments": "",

+        "x": 1424.1315116882324,

+        "y": 1372.300971031189,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "106821b2.664aee",

+        "type": "switchNode",

+        "name": "switch bandwidth",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$bwidx].name == 'bandwidth-change-time'`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 997.9359169006348,

+        "y": 1414.7317447662354,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "b5bd2ffc.b730a8"

+            ]

+        ]

+    },

+    {

+        "id": "b5bd2ffc.b730a8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1163.9362506866455,

+        "y": 1411.7319087982178,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "8a7a213b.3c97e8"

+            ]

+        ]

+    },

+    {

+        "id": "8a7a213b.3c97e8",

+        "type": "set",

+        "name": "set prop.wan.bandwidth-change-time",

+        "xml": "<set>\n<parameter name='prop.wan.bandwidth-change-time' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$bwidx].value`' />\n\n",

+        "comments": "",

+        "x": 1397.9369316101074,

+        "y": 1410.3320541381836,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "d5941ab4.54903",

+        "type": "failure",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 866.6026725769043,

+        "y": 1547.3988437652588,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "c9155d20.3eb07"

+            ]

+        ]

+    },

+    {

+        "id": "f5f1e715.54f9b8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 861.6026725769043,

+        "y": 1581.3988456726074,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "e2622fc0.5939a8"

+            ]

+        ]

+    },

+    {

+        "id": "c9155d20.3eb07",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1018.6026763916016,

+        "y": 1544.398844242096,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3c5dd58c.8a71c2",

+        "type": "execute",

+        "name": "execute generate-vnf-index",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.bandwidth.bandwidth-policyId\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 543.7319297790527,

+        "y": 1530.3986806869507,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e2622fc0.5939a8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value=\"Falied to add AAI bandwidth history record\" />\n",

+        "comments": "",

+        "x": 1010.7319087982178,

+        "y": 1581.3988456726074,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "f01e536c.bb0ae",

+        "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": 916.2221488952637,

+        "y": 1343.3891305923462,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "5f1a4be7.1831d4",

+        "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": 958.2221565246582,

+        "y": 1303.3891277313232,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "356c08ca.858ea",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 761.2221412658691,

+        "y": 1346.3891315460205,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "f01e536c.bb0ae"

+            ]

+        ]

+    },

+    {

+        "id": "e29752cc.b1057",

+        "type": "failure",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 761.2221374511719,

+        "y": 1305.3891277313232,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "5f1a4be7.1831d4"

+            ]

+        ]

+    },

+    {

+        "id": "8f8f069f.d3b5f",

+        "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": 560.2221183776855,

+        "y": 1327.389136314392,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "356c08ca.858ea",

+                "e29752cc.b1057"

+            ]

+        ]

+    },

+    {

+        "id": "47c6aebc.f1b69",

+        "type": "comment",

+        "name": "Create wan port",

+        "info": "",

+        "comments": "",

+        "x": 524.2320098876953,

+        "y": 1280.3990497589111,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "ea46891e.885df8",

+        "type": "comment",

+        "name": "TODO: split ip/mask",

+        "info": "",

+        "comments": "",

+        "x": 948.231803894043,

+        "y": 1265.569263458252,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "8263e11d.eced28",

+        "type": "comment",

+        "name": "Get network id",

+        "info": "",

+        "comments": "",

+        "x": 595.2318649291992,

+        "y": 1145.398844242096,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "9f0c831.34326",

+        "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/svclogic111.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"request-action\"/>\n<parameter name=\"field3\" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action`'/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1000.566722869873,

+        "y": 507.4000153541565,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "19aa1fcf.94cd28",

+        "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/svclogic113.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].name`'/>\n<parameter name=\"field3\" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].value`'/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2529.56681060791,

+        "y": 803.4000597000122,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "278adaa9.823dce",

+        "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/svclogic112.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"tmp.devicevidx\"/>\n<parameter name=\"field3\" value='`$tmp.devicevidx`'/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2084.5667839050293,

+        "y": 858.4000263214111,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f68778bd.a5e7e",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1261.050765991211,

+        "y": 450.4000053405762,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "8eebd9f0.5af1d8"

+            ]

+        ]

+    },

+    {

+        "id": "68d0b699.a0397",

+        "type": "switchNode",

+        "name": "switch ActivateSDWANPortInstance",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.request-information.request-action == 'ActivateSDWANPortInstance'`\">\n\n    \n    \n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1041.3366088867188,

+        "y": 448.97149562835693,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "f68778bd.a5e7e"

+            ]

+        ]

+    },

+    {

+        "id": "10208096.b0748f",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 804.5507965087891,

+        "y": 449.40000343322754,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "68d0b699.a0397"

+            ]

+        ]

+    },

+    {

+        "id": "5a004830.6f6608",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 576.05078125,

+        "y": 453.39996337890625,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "10208096.b0748f"

+            ]

+        ]

+    },

+    {

+        "id": "8800c891.1aaf5",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 849.5666885375977,

+        "y": 397.6222381591797,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "fa1fe2ce.2a535"

+            ]

+        ]

+    },

+    {

+        "id": "34c4a2e.64014de",

+        "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": 613.5666656494141,

+        "y": 343.6222223942168,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "33f1e3b3.90eed4",

+                "395a4d10.df2e0a",

+                "8800c891.1aaf5"

+            ]

+        ]

+    },

+    {

+        "id": "33f1e3b3.90eed4",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 855.0507020950317,

+        "y": 315.39995142864063,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "bb38fd5b.c750d"

+            ]

+        ]

+    },

+    {

+        "id": "395a4d10.df2e0a",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 857.0818910598755,

+        "y": 352.4312624637969,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "bb38fd5b.c750d"

+            ]

+        ]

+    },

+    {

+        "id": "bb38fd5b.c750d",

+        "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": 1014.8594064712524,

+        "y": 333.32021090434864,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "fa1fe2ce.2a535",

+        "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": 1035.2332916259766,

+        "y": 379.3999767303467,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "8eebd9f0.5af1d8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1407.5980224609375,

+        "y": 449.43121337890625,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "ad2f75c.b666408",

+                "737c6127.28b5f8",

+                "e5fe7bc8.c4621",

+                "63f7d78f.5a87f"

+            ]

+        ]

+    },

+    {

+        "id": "ad2f75c.b666408",

+        "type": "set",

+        "name": "set tmp.wanPortVidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.wanPortVidx' value='`$idx`' />\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": 1679.4847412109375,

+        "y": 405.7736511230469,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "737c6127.28b5f8",

+        "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": 1640.930908203125,

+        "y": 451.4312744140625,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "e5fe7bc8.c4621",

+        "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": 1641.2274169921875,

+        "y": 500.2708740234375,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "63f7d78f.5a87f",

+        "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/svclogic121.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"tmp.wanPortVidx\"/>\n<parameter name=\"field3\" value='`$tmp.wanPortVidx`'/>\n<parameter name=\"field4\" value=\"wan port i/p param len\"/>\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_length`'/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1590.5980224609375,

+        "y": 361.43121337890625,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "728a8fb2.b98e98",

+        "type": "comment",

+        "name": "no bandwidth resource in AAI, not required to add",

+        "info": "",

+        "comments": "",

+        "x": 837.75,

+        "y": 1512.75,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "3576832.1dfbb7c",

+        "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": 565.5,

+        "y": 398.75,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ae8b2331.d9b508",

+        "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": 565.5,

+        "y": 1106.25,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "83f66961.dd8d88",

+        "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": 569.75,

+        "y": 1463,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "262c400c.36b75"

+            ]

+        ]

+    },

+    {

+        "id": "262c400c.36b75",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 813.6459541320801,

+        "y": 1461.9219717979431,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "736b2f2f.c714a"

+            ]

+        ]

+    },

+    {

+        "id": "736b2f2f.c714a",

+        "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": 961.7631988525391,

+        "y": 1463.8954553604126,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "e274d175.2bfe3"

+            ]

+        ]

+    },

+    {

+        "id": "e274d175.2bfe3",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1109.76318359375,

+        "y": 1460.895420074463,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "93ac81ca.d92568"

+            ]

+        ]

+    },

+    {

+        "id": "93ac81ca.d92568",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1266.75,

+        "y": 1462.7777709960938,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "6eea0f00.2e929",

+                "f7782c28.07206"

+            ]

+        ]

+    },

+    {

+        "id": "6eea0f00.2e929",

+        "type": "switchNode",

+        "name": "switch IPMode Static match",

+        "xml": "<switch test=\"`Static == $prop.wan.IPMode`\">\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1484.4169921875,

+        "y": 1444.778076171875,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "eaece4a3.1d5c88"

+            ]

+        ]

+    },

+    {

+        "id": "f7782c28.07206",

+        "type": "switchNode",

+        "name": "switch IPMode DHCP match",

+        "xml": "<switch test=\"`DHCP == $prop.wan.IPMode`\">\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1484.7501602172852,

+        "y": 1500.7780017852783,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "7472742.b32b58c"

+            ]

+        ]

+    },

+    {

+        "id": "7472742.b32b58c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1672.4168395996094,

+        "y": 1499.0001697540283,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "4526059b.1e387c"

+            ]

+        ]

+    },

+    {

+        "id": "eaece4a3.1d5c88",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1673.4168434143066,

+        "y": 1445.000165939331,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "80b151f8.e82f1"

+            ]

+        ]

+    },

+    {

+        "id": "80b151f8.e82f1",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1839.9128112792969,

+        "y": 1412.3334267735481,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "f08d9ab2.8ed8e",

+                "c873d25a.755608"

+            ]

+        ]

+    },

+    {

+        "id": "4526059b.1e387c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1835.9128112792969,

+        "y": 1516.3334267735481,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "baee4a0f.d707e8",

+                "f153c1be.8bc498"

+            ]

+        ]

+    },

+    {

+        "id": "c873d25a.755608",

+        "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-static.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=\"put\"/>\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": 2101.448211669922,

+        "y": 1435.4117959141731,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "723a7671.6415b",

+                "dab4448b.24761"

+            ]

+        ]

+    },

+    {

+        "id": "dab4448b.24761",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2393.4480361938477,

+        "y": 1454.4113025665283,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "7474d383.13c1a4"

+            ]

+        ]

+    },

+    {

+        "id": "723a7671.6415b",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2391.447956085205,

+        "y": 1501.4114656448364,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "cffa333a.efac6"

+            ]

+        ]

+    },

+    {

+        "id": "cffa333a.efac6",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2560.4479637145996,

+        "y": 1501.411302447319,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7474d383.13c1a4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2553.4517860412598,

+        "y": 1452.915044784546,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "a381f3c1.8fd548"

+            ]

+        ]

+    },

+    {

+        "id": "f08d9ab2.8ed8e",

+        "type": "set",

+        "name": "set IP params",

+        "xml": "<set>\n<parameter name='prop.wan.IpMode' value=\"static\" />\n<parameter name='prop.wan.ipAddress' value='`$prop.wan.ip-address`' />\n<parameter name='prop.route.nextHopType' value=\"ip-address\" />\n\n\n",

+        "comments": "",

+        "x": 2024.2052917480469,

+        "y": 1384.2327187657356,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "baee4a0f.d707e8",

+        "type": "set",

+        "name": "set IP params",

+        "xml": "<set>\n<parameter name='prop.wan.ipAddress' value=\"\" />\n<parameter name='prop.wan.prefixLength' value=\"\" />\n<parameter name='prop.wan.providerIpAddress' value=\"\" />\n<parameter name='prop.wan.IpMode' value=\"DHCP\" />\n<parameter name='prop.route.nextHopType' value=\"outbound-interface\" />\n\n\n\n",

+        "comments": "",

+        "x": 2021.6669616699219,

+        "y": 1498.3334267735481,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    },

+    {

+        "id": "f153c1be.8bc498",

+        "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-dhcp.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=\"put\"/>\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": 2103.912811279297,

+        "y": 1538.3334267735481,

+        "z": "a5dd4528.5be69",

+        "wires": [

+            [

+                "dab4448b.24761",

+                "723a7671.6415b"

+            ]

+        ]

+    },

+    {

+        "id": "a381f3c1.8fd548",

+        "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": 2732.448371887207,

+        "y": 1455.411301612854,

+        "z": "a5dd4528.5be69",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-device-param.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-device-param.json
new file mode 100644
index 0000000..9d0c372
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-device-param.json
@@ -0,0 +1,551 @@
+[
+  {
+    "id": "e671d21c.c380e",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 277.03125,
+    "y": 215.03125,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "f0968433.54c598"
+      ]
+    ]
+  },
+  {
+    "id": "f0968433.54c598",
+    "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": 489.03125381469727,
+    "y": 287.0312671661377,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "7b5a64d7.27af4c"
+      ]
+    ]
+  },
+  {
+    "id": "7b5a64d7.27af4c",
+    "type": "method",
+    "name": "sdwan-get-device-param",
+    "xml": "<method rpc='sdwan-get-device-param' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 477.0313720703125,
+    "y": 375.03125,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "9e54cfd4.f7511"
+      ]
+    ]
+  },
+  {
+    "id": "9e54cfd4.f7511",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 484.03126525878906,
+    "y": 461.0313081741333,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "ea233a0.a925fc8"
+      ]
+    ]
+  },
+  {
+    "id": "ea233a0.a925fc8",
+    "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": 520.6980285644531,
+    "y": 543.697904586792,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "12792477.556d8c"
+      ]
+    ]
+  },
+  {
+    "id": "12792477.556d8c",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 794.5315780639648,
+    "y": 458.0313220024109,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "767840a2.12ebe",
+        "4f1ecfa3.e420a",
+        "677e6bce.a725e4",
+        "c52d2d4b.f41f6",
+        "670874dc.6417bc",
+        "4166beff.b664d",
+        "a2380a78.a15bf8",
+        "af7f20a9.e338",
+        "3250af42.4d49",
+        "2508e2f5.08983e",
+        "a475c38.ffd7a4"
+      ]
+    ]
+  },
+  {
+    "id": "767840a2.12ebe",
+    "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": 1002.0321960449219,
+    "y": 750.0318946838379,
+    "z": "1814fac9.dedad5",
+    "wires": []
+  },
+  {
+    "id": "677e6bce.a725e4",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1030.0312843322754,
+    "y": 303.03130531311035,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "61f5048e.ac410c"
+      ]
+    ]
+  },
+  {
+    "id": "61f5048e.ac410c",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1172.0312843322754,
+    "y": 304.03130531311035,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "e11fc0f2.f0b7"
+      ]
+    ]
+  },
+  {
+    "id": "e11fc0f2.f0b7",
+    "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": 1306.0312843322754,
+    "y": 304.631311416626,
+    "z": "1814fac9.dedad5",
+    "wires": []
+  },
+  {
+    "id": "4f1ecfa3.e420a",
+    "type": "switchNode",
+    "name": "switch esn",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'esn'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1022.8710298538208,
+    "y": 340.0312442779541,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "d4274273.0421a"
+      ]
+    ]
+  },
+  {
+    "id": "d4274273.0421a",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1166.8710298538208,
+    "y": 340.0312442779541,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "ecaa4a78.97cd58"
+      ]
+    ]
+  },
+  {
+    "id": "ecaa4a78.97cd58",
+    "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": 1287.2044038772583,
+    "y": 339.4924259185791,
+    "z": "1814fac9.dedad5",
+    "wires": []
+  },
+  {
+    "id": "c52d2d4b.f41f6",
+    "type": "switchNode",
+    "name": "switch type",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'type'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1010.9264497756958,
+    "y": 414.99419593811035,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "66c8ac7e.f99d04"
+      ]
+    ]
+  },
+  {
+    "id": "670874dc.6417bc",
+    "type": "switchNode",
+    "name": "switch systemIp",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'systemIp'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1010.9265079498291,
+    "y": 506.99421310424805,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "ce9aa789.cf24d8"
+      ]
+    ]
+  },
+  {
+    "id": "66c8ac7e.f99d04",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1156.9264497756958,
+    "y": 414.99419593811035,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "fb4cb630.0c2d68"
+      ]
+    ]
+  },
+  {
+    "id": "fb4cb630.0c2d68",
+    "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": 1287.9264497756958,
+    "y": 414.594202041626,
+    "z": "1814fac9.dedad5",
+    "wires": []
+  },
+  {
+    "id": "ce9aa789.cf24d8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1156.926507949829,
+    "y": 503.99421310424805,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "e5052022.3061f"
+      ]
+    ]
+  },
+  {
+    "id": "e5052022.3061f",
+    "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": 1299.926507949829,
+    "y": 502.5942192077637,
+    "z": "1814fac9.dedad5",
+    "wires": []
+  },
+  {
+    "id": "a7ed8e98.b2bb8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1166.926507949829,
+    "y": 539.994213104248,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "a40c04f3.889538"
+      ]
+    ]
+  },
+  {
+    "id": "4166beff.b664d",
+    "type": "switchNode",
+    "name": "switch description",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'description'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1012.9265079498291,
+    "y": 542.994213104248,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "a7ed8e98.b2bb8"
+      ]
+    ]
+  },
+  {
+    "id": "a40c04f3.889538",
+    "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": 1309.926507949829,
+    "y": 538.5942192077637,
+    "z": "1814fac9.dedad5",
+    "wires": []
+  },
+  {
+    "id": "a2380a78.a15bf8",
+    "type": "switchNode",
+    "name": "switch vendor",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'vendor'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1000.2597932815552,
+    "y": 589.9942474365234,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "6443e0a9.71388"
+      ]
+    ]
+  },
+  {
+    "id": "6443e0a9.71388",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1168.2597513198853,
+    "y": 586.9941883087158,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "a3c7adc8.39913"
+      ]
+    ]
+  },
+  {
+    "id": "a3c7adc8.39913",
+    "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": 1311.2597513198853,
+    "y": 585.5941944122314,
+    "z": "1814fac9.dedad5",
+    "wires": []
+  },
+  {
+    "id": "af7f20a9.e338",
+    "type": "switchNode",
+    "name": "switch class",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'class'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1024.03125,
+    "y": 377.03125,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "9089a4f7.9d1f38"
+      ]
+    ]
+  },
+  {
+    "id": "9089a4f7.9d1f38",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1168.03125,
+    "y": 377.03125,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "5a35e54e.7450dc"
+      ]
+    ]
+  },
+  {
+    "id": "5a35e54e.7450dc",
+    "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": 1288.3646240234375,
+    "y": 376.492431640625,
+    "z": "1814fac9.dedad5",
+    "wires": []
+  },
+  {
+    "id": "3250af42.4d49",
+    "type": "switchNode",
+    "name": "switch version",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'version'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1022.03125,
+    "y": 461.03125,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "9b60c77d.bb4828"
+      ]
+    ]
+  },
+  {
+    "id": "9b60c77d.bb4828",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1168.03125,
+    "y": 458.03125,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "2e69598b.782ac6"
+      ]
+    ]
+  },
+  {
+    "id": "2e69598b.782ac6",
+    "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": 1311.03125,
+    "y": 456.6312561035156,
+    "z": "1814fac9.dedad5",
+    "wires": []
+  },
+  {
+    "id": "2508e2f5.08983e",
+    "type": "switchNode",
+    "name": "switch deviceId",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'deviceId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1014.0313186645508,
+    "y": 637.0312986373901,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "fa6b8cf5.4b327"
+      ]
+    ]
+  },
+  {
+    "id": "fa6b8cf5.4b327",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1170.031406402588,
+    "y": 633.031343460083,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "8e7714d.acaece8"
+      ]
+    ]
+  },
+  {
+    "id": "8e7714d.acaece8",
+    "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": 1308.3651542663574,
+    "y": 621.4924793243408,
+    "z": "1814fac9.dedad5",
+    "wires": []
+  },
+  {
+    "id": "a475c38.ffd7a4",
+    "type": "switchNode",
+    "name": "switch sdncCreate",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'sdncCreate'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1003.03125,
+    "y": 683.03125,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "a771c2de.63a74"
+      ]
+    ]
+  },
+  {
+    "id": "a771c2de.63a74",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1159.031337738037,
+    "y": 679.0312948226929,
+    "z": "1814fac9.dedad5",
+    "wires": [
+      [
+        "665de992.e62df8"
+      ]
+    ]
+  },
+  {
+    "id": "665de992.e62df8",
+    "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": 1297.3650856018066,
+    "y": 667.4924306869507,
+    "z": "1814fac9.dedad5",
+    "wires": []
+  }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-saved-ar-param.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-saved-ar-param.json
new file mode 100644
index 0000000..1db61c8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-saved-ar-param.json
@@ -0,0 +1,199 @@
+[
+  {
+    "id": "3dce5aae.d1aee6",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 156,
+    "y": 74,
+    "z": "15a92351.612ddd",
+    "wires": [
+      [
+        "aa9eff05.9e62c"
+      ]
+    ]
+  },
+  {
+    "id": "aa9eff05.9e62c",
+    "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.00000381469727,
+    "y": 146.0000171661377,
+    "z": "15a92351.612ddd",
+    "wires": [
+      [
+        "b770609e.14977"
+      ]
+    ]
+  },
+  {
+    "id": "b770609e.14977",
+    "type": "method",
+    "name": "sdwan-get-saved-ar-param",
+    "xml": "<method rpc='sdwan-get-saved-ar-param' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 356.0001220703125,
+    "y": 234,
+    "z": "15a92351.612ddd",
+    "wires": [
+      [
+        "a63eeccf.054de"
+      ]
+    ]
+  },
+  {
+    "id": "a63eeccf.054de",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 363.00001525878906,
+    "y": 320.0000581741333,
+    "z": "15a92351.612ddd",
+    "wires": [
+      [
+        "cef1b9ba.94d2a8"
+      ]
+    ]
+  },
+  {
+    "id": "cef1b9ba.94d2a8",
+    "type": "for",
+    "name": "for each sdwan-get-request-input-param",
+    "xml": "<for index='idx' start='0' end='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 399.6667785644531,
+    "y": 402.666654586792,
+    "z": "15a92351.612ddd",
+    "wires": [
+      [
+        "c63bf491.f9e008"
+      ]
+    ]
+  },
+  {
+    "id": "c63bf491.f9e008",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 664.5002822875977,
+    "y": 312.00004625320435,
+    "z": "15a92351.612ddd",
+    "wires": [
+      [
+        "2cd7df9b.ab1b",
+        "10f6f64f.edbe1a",
+        "95d1c864.f5bfb8"
+      ]
+    ]
+  },
+  {
+    "id": "2cd7df9b.ab1b",
+    "type": "switchNode",
+    "name": "switch sdwanVpnName",
+    "xml": "<switch test=\"`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'sdwanVpnName'`\">",
+    "comments": "",
+    "outputs": 1,
+    "x": 886.5000534057617,
+    "y": 216.0000514984131,
+    "z": "15a92351.612ddd",
+    "wires": [
+      [
+        "2a8eb492.677abc"
+      ]
+    ]
+  },
+  {
+    "id": "2a8eb492.677abc",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1073.5000534057617,
+    "y": 212.0000514984131,
+    "z": "15a92351.612ddd",
+    "wires": [
+      [
+        "e2c23ccb.74de1"
+      ]
+    ]
+  },
+  {
+    "id": "e2c23ccb.74de1",
+    "type": "set",
+    "name": "set sdwanVpnName",
+    "xml": "<set>\n<parameter name='prop.connection-attachment.sdwanVpnName' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1241.5000534057617,
+    "y": 212.6000576019287,
+    "z": "15a92351.612ddd",
+    "wires": []
+  },
+  {
+    "id": "10f6f64f.edbe1a",
+    "type": "switchNode",
+    "name": "switch role",
+    "xml": "<switch test=\"`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'role'`\">",
+    "comments": "",
+    "outputs": 1,
+    "x": 849.0105400085449,
+    "y": 280.00007152557373,
+    "z": "15a92351.612ddd",
+    "wires": [
+      [
+        "ab95aeff.fed7f"
+      ]
+    ]
+  },
+  {
+    "id": "ab95aeff.fed7f",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1074.010482788086,
+    "y": 271.0000514984131,
+    "z": "15a92351.612ddd",
+    "wires": [
+      [
+        "73eae7d6.c393c8"
+      ]
+    ]
+  },
+  {
+    "id": "73eae7d6.c393c8",
+    "type": "set",
+    "name": "set role",
+    "xml": "<set>\n<parameter name='prop.connection-attachment.role' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1242.010482788086,
+    "y": 271.6000576019287,
+    "z": "15a92351.612ddd",
+    "wires": []
+  },
+  {
+    "id": "95d1c864.f5bfb8",
+    "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": 863.0002212524414,
+    "y": 344.000036239624,
+    "z": "15a92351.612ddd",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-site-param.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-site-param.json
new file mode 100644
index 0000000..4224a32
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-site-param.json
@@ -0,0 +1,895 @@
+[
+  {
+    "id": "a907ba2f.81c9d8",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 97,
+    "y": 49,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "46194736.3f09f8"
+      ]
+    ]
+  },
+  {
+    "id": "46194736.3f09f8",
+    "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": 275.00000381469727,
+    "y": 114.0000171661377,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "5cc16d87.a8a744"
+      ]
+    ]
+  },
+  {
+    "id": "5cc16d87.a8a744",
+    "type": "method",
+    "name": "sdwan-get-site-param",
+    "xml": "<method rpc='sdwan-get-site-param' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 263.0001220703125,
+    "y": 202,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "2fcad45c.204f2c"
+      ]
+    ]
+  },
+  {
+    "id": "2fcad45c.204f2c",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 270.00001525878906,
+    "y": 288.0000581741333,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "a59bab93.b75108"
+      ]
+    ]
+  },
+  {
+    "id": "a59bab93.b75108",
+    "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": 306.6667785644531,
+    "y": 370.666654586792,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "e896db23.035228"
+      ]
+    ]
+  },
+  {
+    "id": "e896db23.035228",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 593.5003280639648,
+    "y": 288.00010204315186,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "17beedf5.3fa3a2",
+        "9658f5ce.551378",
+        "9f759735.d76cd8",
+        "9966cd8b.1697a",
+        "11d51c5.93463e4",
+        "8cb0a11.7bd686",
+        "5f3ab5eb.71688c",
+        "ca7858b9.e061c8",
+        "5ff23f08.f8215",
+        "5dd3c67.a478d38",
+        "4f1e9b40.0d5344",
+        "32f8d4e8.435a2c",
+        "3e3aefd6.843cc"
+      ]
+    ]
+  },
+  {
+    "id": "17beedf5.3fa3a2",
+    "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": 795.001106262207,
+    "y": 721.0007653236389,
+    "z": "94b1afc3.a0dc",
+    "wires": []
+  },
+  {
+    "id": "9658f5ce.551378",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 813.0000381469727,
+    "y": 84.000075340271,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "1180c11c.4e5d3f"
+      ]
+    ]
+  },
+  {
+    "id": "1180c11c.4e5d3f",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 955.0000381469727,
+    "y": 85.000075340271,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "c4a1ef6b.cb92a"
+      ]
+    ]
+  },
+  {
+    "id": "c4a1ef6b.cb92a",
+    "type": "set",
+    "name": "set name",
+    "xml": "<set>\n<parameter name='prop.site.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1089.0000381469727,
+    "y": 85.60008144378662,
+    "z": "94b1afc3.a0dc",
+    "wires": []
+  },
+  {
+    "id": "9f759735.d76cd8",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 809.0001449584961,
+    "y": 175.00003337860107,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "d7f5a60b.3b5968"
+      ]
+    ]
+  },
+  {
+    "id": "d7f5a60b.3b5968",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 987.0001583099365,
+    "y": 178.00003337860107,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "a9112d64.3441b"
+      ]
+    ]
+  },
+  {
+    "id": "a9112d64.3441b",
+    "type": "set",
+    "name": "set name",
+    "xml": "<set>\n<parameter name='prop.site.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1134.0001678466797,
+    "y": 177.60002899169922,
+    "z": "94b1afc3.a0dc",
+    "wires": []
+  },
+  {
+    "id": "5dd3c67.a478d38",
+    "type": "switchNode",
+    "name": "switch type",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'type'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 787.8958168029785,
+    "y": 472.9734830856323,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "abf743a3.45204"
+      ]
+    ]
+  },
+  {
+    "id": "59ff6271.db05ec",
+    "type": "set",
+    "name": "set type",
+    "xml": "<set>\n<parameter name='prop.site.type' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n<parameter name='prop.site.sdwan' value='true' />",
+    "comments": "",
+    "x": 1439.8958778381348,
+    "y": 526.5734176635742,
+    "z": "94b1afc3.a0dc",
+    "wires": []
+  },
+  {
+    "id": "4f1e9b40.0d5344",
+    "type": "switchNode",
+    "name": "switch role",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'role'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 786.8955307006836,
+    "y": 580.9735260009766,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "30daf487.0dff4c"
+      ]
+    ]
+  },
+  {
+    "id": "30daf487.0dff4c",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 956.8955383300781,
+    "y": 590.9734888076782,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "685d8c42.5d6ca4"
+      ]
+    ]
+  },
+  {
+    "id": "9966cd8b.1697a",
+    "type": "switchNode",
+    "name": "switch location-name",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'location-name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 831.8953323364258,
+    "y": 216.9733419418335,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "cc9616ce.430f58"
+      ]
+    ]
+  },
+  {
+    "id": "cc9616ce.430f58",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 995.8955039978027,
+    "y": 216.9733428955078,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "ec0a2191.fba48"
+      ]
+    ]
+  },
+  {
+    "id": "ec0a2191.fba48",
+    "type": "set",
+    "name": "set location-name",
+    "xml": "<set>\n<parameter name='prop.site.location-name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1157.8955154418945,
+    "y": 216.5733995437622,
+    "z": "94b1afc3.a0dc",
+    "wires": []
+  },
+  {
+    "id": "11d51c5.93463e4",
+    "type": "switchNode",
+    "name": "switch address",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'address'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 814.8953323364258,
+    "y": 252.97334575653076,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "c8c98295.92206"
+      ]
+    ]
+  },
+  {
+    "id": "c8c98295.92206",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 984.8951797485352,
+    "y": 260.97334480285645,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "c8183604.5bf978"
+      ]
+    ]
+  },
+  {
+    "id": "c8183604.5bf978",
+    "type": "set",
+    "name": "set location-address",
+    "xml": "<set>\n<parameter name='prop.site.location-address' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1172.8953552246094,
+    "y": 256.57332038879395,
+    "z": "94b1afc3.a0dc",
+    "wires": []
+  },
+  {
+    "id": "8cb0a11.7bd686",
+    "type": "switchNode",
+    "name": "switch postcode",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'postcode'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 815.8953323364258,
+    "y": 294.9733066558838,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "164b8673.bea07a"
+      ]
+    ]
+  },
+  {
+    "id": "164b8673.bea07a",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 980.8955039978027,
+    "y": 293.9733066558838,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "9880bf16.cc774"
+      ]
+    ]
+  },
+  {
+    "id": "9880bf16.cc774",
+    "type": "set",
+    "name": "set location-postcode",
+    "xml": "<set>\n<parameter name='prop.site.location-postcode' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1167.8953552246094,
+    "y": 295.5733232498169,
+    "z": "94b1afc3.a0dc",
+    "wires": []
+  },
+  {
+    "id": "32f8d4e8.435a2c",
+    "type": "switchNode",
+    "name": "switch controlPoint",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'controlPoint'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 805.7787551879883,
+    "y": 641.0003271102905,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "f9a2e4bf.e893d8"
+      ]
+    ]
+  },
+  {
+    "id": "f9a2e4bf.e893d8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 967.778678894043,
+    "y": 637.0003499984741,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "8f9ebae3.f9c1f8"
+      ]
+    ]
+  },
+  {
+    "id": "cdec920f.b6fa4",
+    "type": "set",
+    "name": "set role",
+    "xml": "<set>\n<parameter name='prop.site.role' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n\n",
+    "comments": "",
+    "x": 1339.7788467407227,
+    "y": 565.0002994537354,
+    "z": "94b1afc3.a0dc",
+    "wires": []
+  },
+  {
+    "id": "f025176.9eb87e8",
+    "type": "set",
+    "name": "set controlPoint",
+    "xml": "<set>\n<parameter name='prop.site.controlPoint' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n\n",
+    "comments": "",
+    "x": 1713.7786865234375,
+    "y": 684.0004281997681,
+    "z": "94b1afc3.a0dc",
+    "wires": []
+  },
+  {
+    "id": "95df77a9.2015c8",
+    "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": 1367.445053100586,
+    "y": 614.0001821517944,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "685d8c42.5d6ca4",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1114.4451904296875,
+    "y": 594.0001821517944,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "cdec920f.b6fa4",
+        "95df77a9.2015c8"
+      ]
+    ]
+  },
+  {
+    "id": "2b1dae74.689ae2",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1531.4451026916504,
+    "y": 704.0001840591431,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "f025176.9eb87e8",
+        "9399b06c.d4d46"
+      ]
+    ]
+  },
+  {
+    "id": "9399b06c.d4d46",
+    "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": 1738.4451637268066,
+    "y": 736.0002880096436,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "5f3ab5eb.71688c",
+    "type": "switchNode",
+    "name": "switch latitude",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'latitude'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 806.1116409301758,
+    "y": 339.00008392333984,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "17934d90.83f8b2"
+      ]
+    ]
+  },
+  {
+    "id": "17934d90.83f8b2",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 982.1114883422852,
+    "y": 334.00004291534424,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "c1cb3429.151d98"
+      ]
+    ]
+  },
+  {
+    "id": "c1cb3429.151d98",
+    "type": "set",
+    "name": "set location-latitude",
+    "xml": "<set>\n<parameter name='prop.site.location-latitude' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1156.1114959716797,
+    "y": 332.60005950927734,
+    "z": "94b1afc3.a0dc",
+    "wires": []
+  },
+  {
+    "id": "ca7858b9.e061c8",
+    "type": "switchNode",
+    "name": "switch longitude",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'longitude'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 809.1116409301758,
+    "y": 379.0001268386841,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "8f39dcfa.83f0e"
+      ]
+    ]
+  },
+  {
+    "id": "8f39dcfa.83f0e",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 981.1116485595703,
+    "y": 374.000168800354,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "257b4537.3c066a"
+      ]
+    ]
+  },
+  {
+    "id": "257b4537.3c066a",
+    "type": "set",
+    "name": "set location-longitude",
+    "xml": "<set>\n<parameter name='prop.site.location-longitude' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1163.1115036010742,
+    "y": 377.60002040863037,
+    "z": "94b1afc3.a0dc",
+    "wires": []
+  },
+  {
+    "id": "44ed6e14.4ca7e",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 972.1116485595703,
+    "y": 424.00017166137695,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "e5a3e724.d41f08"
+      ]
+    ]
+  },
+  {
+    "id": "2490dffe.947e9",
+    "type": "set",
+    "name": "set emails",
+    "xml": "<set>\n<parameter name='prop.site.emails' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1330.111343383789,
+    "y": 392.6000237464905,
+    "z": "94b1afc3.a0dc",
+    "wires": []
+  },
+  {
+    "id": "5ff23f08.f8215",
+    "type": "switchNode",
+    "name": "switch emails",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'emails'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 799.1117172241211,
+    "y": 424.00017166137695,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "44ed6e14.4ca7e"
+      ]
+    ]
+  },
+  {
+    "id": "b15996ac.1ac678",
+    "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": 1355.777687072754,
+    "y": 438.99992656707764,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "e5a3e724.d41f08",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1134.1116561889648,
+    "y": 425.0000891685486,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "2490dffe.947e9",
+        "b15996ac.1ac678"
+      ]
+    ]
+  },
+  {
+    "id": "3e3aefd6.843cc",
+    "type": "switchNode",
+    "name": "switch description",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'description'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 814,
+    "y": 129,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "2b975758.fb5fb8"
+      ]
+    ]
+  },
+  {
+    "id": "2b975758.fb5fb8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 956,
+    "y": 130,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "d08aa9c0.911c88"
+      ]
+    ]
+  },
+  {
+    "id": "d08aa9c0.911c88",
+    "type": "set",
+    "name": "set description",
+    "xml": "<set>\n<parameter name='prop.site.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1102.0000762939453,
+    "y": 130.60002994537354,
+    "z": "94b1afc3.a0dc",
+    "wires": []
+  },
+  {
+    "id": "e1339417.d483a8",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1329.00004196167,
+    "y": 478.00005531311035,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "9d513524.b6af68"
+      ]
+    ]
+  },
+  {
+    "id": "d2b9e663.ae14c8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1312.5003700256348,
+    "y": 526.0000152587891,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "59ff6271.db05ec"
+      ]
+    ]
+  },
+  {
+    "id": "abf743a3.45204",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 925.8956985473633,
+    "y": 472.97340202331543,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "b178377b.d61118"
+      ]
+    ]
+  },
+  {
+    "id": "b178377b.d61118",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1042.0000305175781,
+    "y": 475.00001430511475,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "bb291d8b.bac3a"
+      ]
+    ]
+  },
+  {
+    "id": "bb291d8b.bac3a",
+    "type": "switchNode",
+    "name": "switch value",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].value`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1172.0000343322754,
+    "y": 507.00001335144043,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "e1339417.d483a8",
+        "d2b9e663.ae14c8"
+      ]
+    ]
+  },
+  {
+    "id": "9d513524.b6af68",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1468.0000457763672,
+    "y": 478.00001335144043,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "8f9ebae3.f9c1f8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1105,
+    "y": 650,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "c5f963e7.1c042"
+      ]
+    ]
+  },
+  {
+    "id": "c5f963e7.1c042",
+    "type": "switchNode",
+    "name": "switch value",
+    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].value`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1235.0000038146973,
+    "y": 681.9999990463257,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "50780dd0.f16eb4",
+        "cef68888.786a28"
+      ]
+    ]
+  },
+  {
+    "id": "50780dd0.f16eb4",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1392.0000114440918,
+    "y": 653.0000410079956,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "9c84c418.3907d8"
+      ]
+    ]
+  },
+  {
+    "id": "cef68888.786a28",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1375.5003395080566,
+    "y": 701.0000009536743,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      [
+        "2b1dae74.689ae2"
+      ]
+    ]
+  },
+  {
+    "id": "9c84c418.3907d8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1531.000015258789,
+    "y": 652.9999990463257,
+    "z": "94b1afc3.a0dc",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.json
new file mode 100644
index 0000000..801b57c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.json
@@ -0,0 +1,212 @@
+[

+    {

+        "id": "a64f3290.a6791",

+        "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-tenant\">\n      \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 641.03125,

+        "y": 413.09522104263306,

+        "z": "734fbe9e.c17a1",

+        "wires": [

+            [

+                "d8117fcb.f28fc",

+                "d8ad970.7e76268"

+            ]

+        ]

+    },

+    {

+        "id": "a43b0986.72aee8",

+        "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": 1053.0313415527344,

+        "y": 377.84530210494995,

+        "z": "734fbe9e.c17a1",

+        "wires": [

+            [

+                "5fa9cabc.5c37a4",

+                "625dfb34.3c2da4"

+            ]

+        ]

+    },

+    {

+        "id": "5fa9cabc.5c37a4",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1245.745792388916,

+        "y": 351.84534311294556,

+        "z": "734fbe9e.c17a1",

+        "wires": [

+            [

+                "cc0fb2fe.338bf"

+            ]

+        ]

+    },

+    {

+        "id": "625dfb34.3c2da4",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1246.0313568115234,

+        "y": 406.8453059196472,

+        "z": "734fbe9e.c17a1",

+        "wires": [

+            [

+                "f90c9031.98073"

+            ]

+        ]

+    },

+    {

+        "id": "d8117fcb.f28fc",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 851.5311126708984,

+        "y": 385.84127950668335,

+        "z": "734fbe9e.c17a1",

+        "wires": [

+            [

+                "a43b0986.72aee8"

+            ]

+        ]

+    },

+    {

+        "id": "d8ad970.7e76268",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 845.2097015380859,

+        "y": 438.0555911064148,

+        "z": "734fbe9e.c17a1",

+        "wires": [

+            [

+                "3d299dd2.2779d2"

+            ]

+        ]

+    },

+    {

+        "id": "3d299dd2.2779d2",

+        "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": 997.9597015380859,

+        "y": 437.80565214157104,

+        "z": "734fbe9e.c17a1",

+        "wires": []

+    },

+    {

+        "id": "22ec666.190639a",

+        "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": 221.03125,

+        "y": 140.23810720443726,

+        "z": "734fbe9e.c17a1",

+        "wires": [

+            [

+                "8abe47ad.c27bd8"

+            ]

+        ]

+    },

+    {

+        "id": "3762da11.93d966",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 141.74554443359375,

+        "y": 77.99999761581421,

+        "z": "734fbe9e.c17a1",

+        "wires": [

+            [

+                "22ec666.190639a"

+            ]

+        ]

+    },

+    {

+        "id": "6b7a2ebd.00d69",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 374.98365020751953,

+        "y": 376.8095316886902,

+        "z": "734fbe9e.c17a1",

+        "wires": [

+            [

+                "a64f3290.a6791",

+                "4bfcb671.50b358"

+            ]

+        ]

+    },

+    {

+        "id": "8abe47ad.c27bd8",

+        "type": "method",

+        "name": "method sdwan-get-tenant-auth",

+        "xml": "<method rpc='sdwan-get-tenant-auth' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 232.74554443359375,

+        "y": 234.58633947372437,

+        "z": "734fbe9e.c17a1",

+        "wires": [

+            [

+                "6b7a2ebd.00d69"

+            ]

+        ]

+    },

+    {

+        "id": "f90c9031.98073",

+        "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": 1423.888427734375,

+        "y": 405.9523615837097,

+        "z": "734fbe9e.c17a1",

+        "wires": []

+    },

+    {

+        "id": "4bfcb671.50b358",

+        "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": 668.5312805175781,

+        "y": 515.988030910492,

+        "z": "734fbe9e.c17a1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "cc0fb2fe.338bf",

+        "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": 1428.1740341186523,

+        "y": 351.6666522026062,

+        "z": "734fbe9e.c17a1",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.json b/sdnc-a1-controller/oam/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..58a41b1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.json
@@ -0,0 +1,551 @@
+[

+    {

+        "id": "cffdc2c4.fbdbf",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 124.01041412353516,

+        "y": 57.99999976158142,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "b4bfaafb.0f71e8"

+            ]

+        ]

+    },

+    {

+        "id": "b4bfaafb.0f71e8",

+        "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": 269.0104179382324,

+        "y": 139.00001692771912,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "453e787d.b31d18"

+            ]

+        ]

+    },

+    {

+        "id": "453e787d.b31d18",

+        "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": 257.01053619384766,

+        "y": 226.99999976158142,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "28aec5b3.3630fa"

+            ]

+        ]

+    },

+    {

+        "id": "28aec5b3.3630fa",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 264.0104293823242,

+        "y": 313.0000579357147,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "3c4212a4.68f13e"

+            ]

+        ]

+    },

+    {

+        "id": "3c4212a4.68f13e",

+        "type": "for",

+        "name": "for each sdwan-get-request-input-param",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-request-input.vf-module-input-parameters.param_length`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 300.6771926879883,

+        "y": 395.6666543483734,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "bf653357.54774"

+            ]

+        ]

+    },

+    {

+        "id": "bf653357.54774",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 559.0047302246094,

+        "y": 391.99431586265564,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "41b4a385.e5d2ec",

+                "1fe1f918.e55d47",

+                "bf373c84.0e6f1",

+                "8b025989.63feb8",

+                "2357be34.a97902",

+                "9db880c0.bf8f7",

+                "7eec8f37.33efd",

+                "467b2b94.aa5c94",

+                "3fbeca93.ab4dc6",

+                "d5cf0127.78745",

+                "7b1c3978.61d7b8"

+            ]

+        ]

+    },

+    {

+        "id": "41b4a385.e5d2ec",

+        "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": 766.5053482055664,

+        "y": 683.9948885440826,

+        "z": "620142f.05634bc",

+        "wires": []

+    },

+    {

+        "id": "bf373c84.0e6f1",

+        "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": 794.5044364929199,

+        "y": 236.9942991733551,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "6a620d2a.597874"

+            ]

+        ]

+    },

+    {

+        "id": "6a620d2a.597874",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 936.5044364929199,

+        "y": 237.9942991733551,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "f9812259.af716"

+            ]

+        ]

+    },

+    {

+        "id": "f9812259.af716",

+        "type": "set",

+        "name": "set name",

+        "xml": "<set>\n<parameter name='prop.device.name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1070.50443649292,

+        "y": 238.59430527687073,

+        "z": "620142f.05634bc",

+        "wires": []

+    },

+    {

+        "id": "1fe1f918.e55d47",

+        "type": "switchNode",

+        "name": "switch esn",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'esn'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 787.3441820144653,

+        "y": 273.99423813819885,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "fec66c31.4ec21"

+            ]

+        ]

+    },

+    {

+        "id": "fec66c31.4ec21",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 931.3441820144653,

+        "y": 273.99423813819885,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "b1b392a1.773ab"

+            ]

+        ]

+    },

+    {

+        "id": "b1b392a1.773ab",

+        "type": "set",

+        "name": "set esn",

+        "xml": "<set>\n<parameter name='prop.device.esn' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1051.6775560379028,

+        "y": 273.45541977882385,

+        "z": "620142f.05634bc",

+        "wires": []

+    },

+    {

+        "id": "8b025989.63feb8",

+        "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": 775.3996019363403,

+        "y": 348.9571897983551,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "d5158afa.ab5d38"

+            ]

+        ]

+    },

+    {

+        "id": "2357be34.a97902",

+        "type": "switchNode",

+        "name": "switch systemIp",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'systemIp'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 775.3996601104736,

+        "y": 440.9572069644928,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "4fbf3414.5b4b2c"

+            ]

+        ]

+    },

+    {

+        "id": "d5158afa.ab5d38",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 921.3996019363403,

+        "y": 348.9571897983551,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "937f18ca.e72f08"

+            ]

+        ]

+    },

+    {

+        "id": "937f18ca.e72f08",

+        "type": "set",

+        "name": "set type",

+        "xml": "<set>\n<parameter name='prop.device.deviceModel' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1052.3996019363403,

+        "y": 348.5571959018707,

+        "z": "620142f.05634bc",

+        "wires": []

+    },

+    {

+        "id": "4fbf3414.5b4b2c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 921.3996601104736,

+        "y": 437.9572069644928,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "99d3dc8a.8d686"

+            ]

+        ]

+    },

+    {

+        "id": "99d3dc8a.8d686",

+        "type": "set",

+        "name": "set systemIp",

+        "xml": "<set>\n<parameter name='prop.device.systemIP' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1064.3996601104736,

+        "y": 436.5572130680084,

+        "z": "620142f.05634bc",

+        "wires": []

+    },

+    {

+        "id": "64458164.edc05",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 931.3996601104736,

+        "y": 473.9572069644928,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "780d1304.68cfdc"

+            ]

+        ]

+    },

+    {

+        "id": "9db880c0.bf8f7",

+        "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": 777.3996601104736,

+        "y": 476.9572069644928,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "64458164.edc05"

+            ]

+        ]

+    },

+    {

+        "id": "780d1304.68cfdc",

+        "type": "set",

+        "name": "set description",

+        "xml": "<set>\n<parameter name='prop.device.description' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1074.3996601104736,

+        "y": 472.5572130680084,

+        "z": "620142f.05634bc",

+        "wires": []

+    },

+    {

+        "id": "7eec8f37.33efd",

+        "type": "switchNode",

+        "name": "switch vendor",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vendor'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 764.7329454421997,

+        "y": 523.9572412967682,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "3ba9d87b.54e468"

+            ]

+        ]

+    },

+    {

+        "id": "3ba9d87b.54e468",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 932.7329034805298,

+        "y": 520.9571821689606,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "b42adfe3.2b292"

+            ]

+        ]

+    },

+    {

+        "id": "b42adfe3.2b292",

+        "type": "set",

+        "name": "set vendor",

+        "xml": "<set>\n<parameter name='prop.device.vendor' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1075.7329034805298,

+        "y": 519.5571882724762,

+        "z": "620142f.05634bc",

+        "wires": []

+    },

+    {

+        "id": "467b2b94.aa5c94",

+        "type": "switchNode",

+        "name": "switch class",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'class'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 788.5044021606445,

+        "y": 310.99424386024475,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "1374fbc3.377814"

+            ]

+        ]

+    },

+    {

+        "id": "1374fbc3.377814",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 932.5044021606445,

+        "y": 310.99424386024475,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "65bf8c61.fb2dd4"

+            ]

+        ]

+    },

+    {

+        "id": "65bf8c61.fb2dd4",

+        "type": "set",

+        "name": "set class",

+        "xml": "<set>\n<parameter name='prop.device.class' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1052.837776184082,

+        "y": 310.45542550086975,

+        "z": "620142f.05634bc",

+        "wires": []

+    },

+    {

+        "id": "3fbeca93.ab4dc6",

+        "type": "switchNode",

+        "name": "switch version",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'version'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 786.5044021606445,

+        "y": 394.99424386024475,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "e80bbd64.2da17"

+            ]

+        ]

+    },

+    {

+        "id": "e80bbd64.2da17",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 932.5044021606445,

+        "y": 391.99424386024475,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "ae63bef3.fee2"

+            ]

+        ]

+    },

+    {

+        "id": "ae63bef3.fee2",

+        "type": "set",

+        "name": "set version",

+        "xml": "<set>\n<parameter name='prop.device.version' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1075.5044021606445,

+        "y": 390.5942499637604,

+        "z": "620142f.05634bc",

+        "wires": []

+    },

+    {

+        "id": "d5cf0127.78745",

+        "type": "switchNode",

+        "name": "switch deviceId",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'deviceId'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 778.5044708251953,

+        "y": 570.9942924976349,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "e706a464.a35a88"

+            ]

+        ]

+    },

+    {

+        "id": "e706a464.a35a88",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 934.5045585632324,

+        "y": 566.9943373203278,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "27f4849e.3602dc"

+            ]

+        ]

+    },

+    {

+        "id": "27f4849e.3602dc",

+        "type": "set",

+        "name": "set deviceId",

+        "xml": "<set>\n<parameter name='prop.device.deviceId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1072.838306427002,

+        "y": 555.4554731845856,

+        "z": "620142f.05634bc",

+        "wires": []

+    },

+    {

+        "id": "7b1c3978.61d7b8",

+        "type": "switchNode",

+        "name": "switch sdncCreate",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'sdncCreate'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 773.5044250488281,

+        "y": 616.9942548274994,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "2dbb36e3.798f8a"

+            ]

+        ]

+    },

+    {

+        "id": "2dbb36e3.798f8a",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 938.5044860839844,

+        "y": 613.9943158626556,

+        "z": "620142f.05634bc",

+        "wires": [

+            [

+                "a093edec.c8fe5"

+            ]

+        ]

+    },

+    {

+        "id": "a093edec.c8fe5",

+        "type": "set",

+        "name": "set sdncCreate",

+        "xml": "<set>\n<parameter name='prop.device.sdncCreate' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1087.8382263183594,

+        "y": 612.4554364681244,

+        "z": "620142f.05634bc",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.json b/sdnc-a1-controller/oam/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..508febc
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.json
@@ -0,0 +1,551 @@
+[

+    {

+        "id": "9db92b19.dbe808",

+        "type": "for",

+        "name": "for each sdwan-get-request-input-param",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-request-input.vf-module-input-parameters.param_length`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 325,

+        "y": 398.6666383743286,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "c735b4a8.18a688"

+            ]

+        ]

+    },

+    {

+        "id": "188771b4.f4965e",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 157.3332290649414,

+        "y": 61,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "36a2e568.0357ba"

+            ]

+        ]

+    },

+    {

+        "id": "36a2e568.0357ba",

+        "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": 302.3332328796387,

+        "y": 142.0000171661377,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "c90cdfce.89ab2"

+            ]

+        ]

+    },

+    {

+        "id": "c90cdfce.89ab2",

+        "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": 290.3333511352539,

+        "y": 230,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "6e63b9aa.639678"

+            ]

+        ]

+    },

+    {

+        "id": "6e63b9aa.639678",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 297.33324432373047,

+        "y": 316.0000581741333,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "9db92b19.dbe808"

+            ]

+        ]

+    },

+    {

+        "id": "c735b4a8.18a688",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 581.2326469421387,

+        "y": 401.0103905200958,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "2b991906.72e806",

+                "dd091818.b8d3d8",

+                "25129de.f993162",

+                "8e9a4bdb.28b1e8",

+                "f37b1ca2.6a934",

+                "fb94d6b4.86b308",

+                "2e9e6276.adaf7e",

+                "aed1f583.2c5408",

+                "83549cb1.b88e3",

+                "d33cf9af.f5b998",

+                "aa03a2b9.57125"

+            ]

+        ]

+    },

+    {

+        "id": "2b991906.72e806",

+        "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.7332763671875,

+        "y": 777.0107421875,

+        "z": "5f38b520.a4a09c",

+        "wires": []

+    },

+    {

+        "id": "25129de.f993162",

+        "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": 803.7326431274414,

+        "y": 328.01042914390564,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "6f203c8e.611124"

+            ]

+        ]

+    },

+    {

+        "id": "6f203c8e.611124",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 978.7330360412598,

+        "y": 326.01051592826843,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "7b50722c.c7533c"

+            ]

+        ]

+    },

+    {

+        "id": "7b50722c.c7533c",

+        "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": 1153.7331199645996,

+        "y": 327.61056327819824,

+        "z": "5f38b520.a4a09c",

+        "wires": []

+    },

+    {

+        "id": "2e9e6276.adaf7e",

+        "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": 781.5727691650391,

+        "y": 535.0104854106903,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "1a406ca0.026be3"

+            ]

+        ]

+    },

+    {

+        "id": "1a406ca0.026be3",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 974.5727577209473,

+        "y": 537.0105578899384,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "bb95c91e.dc2568"

+            ]

+        ]

+    },

+    {

+        "id": "bb95c91e.dc2568",

+        "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": 1120.9065856933594,

+        "y": 538.4718005657196,

+        "z": "5f38b520.a4a09c",

+        "wires": []

+    },

+    {

+        "id": "fb94d6b4.86b308",

+        "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": 790.6279563903809,

+        "y": 493.3871638774872,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "5af33e36.891"

+            ]

+        ]

+    },

+    {

+        "id": "5af33e36.891",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 975.6280975341797,

+        "y": 493.38712096214294,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "f8a774b3.88f1a8"

+            ]

+        ]

+    },

+    {

+        "id": "f8a774b3.88f1a8",

+        "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": 1139.9619789123535,

+        "y": 494.8483989238739,

+        "z": "5f38b520.a4a09c",

+        "wires": []

+    },

+    {

+        "id": "f37b1ca2.6a934",

+        "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": 796.9610862731934,

+        "y": 452.00466132164,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "9558353d.7359b8"

+            ]

+        ]

+    },

+    {

+        "id": "9558353d.7359b8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 978.9611854553223,

+        "y": 454.00467467308044,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "f699e921.7f4d28"

+            ]

+        ]

+    },

+    {

+        "id": "f699e921.7f4d28",

+        "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": 1148.961597442627,

+        "y": 452.60469126701355,

+        "z": "5f38b520.a4a09c",

+        "wires": []

+    },

+    {

+        "id": "8e9a4bdb.28b1e8",

+        "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": 786.8561058044434,

+        "y": 409.9779860973358,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "54a6b459.f5ae4c"

+            ]

+        ]

+    },

+    {

+        "id": "54a6b459.f5ae4c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 981.8561782836914,

+        "y": 410.9780204296112,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "85e52ac0.2d8b38"

+            ]

+        ]

+    },

+    {

+        "id": "85e52ac0.2d8b38",

+        "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": 1139.8565788269043,

+        "y": 408.57802534103394,

+        "z": "5f38b520.a4a09c",

+        "wires": []

+    },

+    {

+        "id": "dd091818.b8d3d8",

+        "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": 787.7319984436035,

+        "y": 279.3970763683319,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "43c39237.1b560c"

+            ]

+        ]

+    },

+    {

+        "id": "43c39237.1b560c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 979.7319221496582,

+        "y": 279.3970830440521,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "2c7fc366.3d8cac"

+            ]

+        ]

+    },

+    {

+        "id": "2c7fc366.3d8cac",

+        "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": 1123.7321891784668,

+        "y": 278.99721121788025,

+        "z": "5f38b520.a4a09c",

+        "wires": []

+    },

+    {

+        "id": "aed1f583.2c5408",

+        "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": 793.7324638366699,

+        "y": 371.0207631587982,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "edb7fade.456288"

+            ]

+        ]

+    },

+    {

+        "id": "edb7fade.456288",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 978.7323989868164,

+        "y": 369.02081274986267,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "367efaea.fb2976"

+            ]

+        ]

+    },

+    {

+        "id": "367efaea.fb2976",

+        "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": 1150.7327842712402,

+        "y": 369.6208064556122,

+        "z": "5f38b520.a4a09c",

+        "wires": []

+    },

+    {

+        "id": "83549cb1.b88e3",

+        "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": 797.0000152587891,

+        "y": 579.0000171661377,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "7823f19a.9b76f"

+            ]

+        ]

+    },

+    {

+        "id": "7823f19a.9b76f",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 966.0000286102295,

+        "y": 579.0000991821289,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "7cfb710f.9bc79"

+            ]

+        ]

+    },

+    {

+        "id": "7cfb710f.9bc79",

+        "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": 1124.3338165283203,

+        "y": 582.4613151550293,

+        "z": "5f38b520.a4a09c",

+        "wires": []

+    },

+    {

+        "id": "d33cf9af.f5b998",

+        "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": 779,

+        "y": 635,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "14d30777.14dcf9"

+            ]

+        ]

+    },

+    {

+        "id": "14d30777.14dcf9",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 971.9999885559082,

+        "y": 637.000072479248,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "e250544b.9d4268"

+            ]

+        ]

+    },

+    {

+        "id": "e250544b.9d4268",

+        "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": 1118.3338165283203,

+        "y": 638.4613151550293,

+        "z": "5f38b520.a4a09c",

+        "wires": []

+    },

+    {

+        "id": "aa03a2b9.57125",

+        "type": "switchNode",

+        "name": "switch bridgeDomainId",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'bridgeDomainId'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 801,

+        "y": 693,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "f733597e.c9e3b8"

+            ]

+        ]

+    },

+    {

+        "id": "f733597e.c9e3b8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 995,

+        "y": 695.0000610351562,

+        "z": "5f38b520.a4a09c",

+        "wires": [

+            [

+                "8e63e7a7.180198"

+            ]

+        ]

+    },

+    {

+        "id": "8e63e7a7.180198",

+        "type": "set",

+        "name": "set bridgeDomainId",

+        "xml": "<set>\n<parameter name='prop.lan.bridgeDomainId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1165.3338623046875,

+        "y": 693.4613037109375,

+        "z": "5f38b520.a4a09c",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.json b/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.json
new file mode 100644
index 0000000..8891506
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.json
@@ -0,0 +1,859 @@
+[

+    {

+        "id": "f4e72acb.01bf58",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 130.03125,

+        "y": 54.00000190734863,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "a16de899.ba6ce8"

+            ]

+        ]

+    },

+    {

+        "id": "a16de899.ba6ce8",

+        "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.03125381469727,

+        "y": 159.00001525878906,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "452b8421.fdadac"

+            ]

+        ]

+    },

+    {

+        "id": "452b8421.fdadac",

+        "type": "method",

+        "name": "sdwan-get-wan-param",

+        "xml": "<method rpc='sdwan-get-wan-param' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 255.0313720703125,

+        "y": 246.99999809265137,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "50910d6a.5d96b4"

+            ]

+        ]

+    },

+    {

+        "id": "50910d6a.5d96b4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 262.03126525878906,

+        "y": 333.00005626678467,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "8cd27d33.452ae"

+            ]

+        ]

+    },

+    {

+        "id": "8cd27d33.452ae",

+        "type": "for",

+        "name": "for each sdwan-get-request-input-param",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-request-input.vf-module-input-parameters.param_length`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 298.6980285644531,

+        "y": 415.66665267944336,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "b3542ade.7b14d8"

+            ]

+        ]

+    },

+    {

+        "id": "b3542ade.7b14d8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 563.5315322875977,

+        "y": 325.0000443458557,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "e86947af.f5b608",

+                "638cf29c.12828c",

+                "46b5c4a7.4a507c",

+                "b5fed085.d4d7c",

+                "77b16659.a09ba8",

+                "d7c2c346.bb4d6",

+                "8f7cd129.e628b",

+                "7871b91.d889348",

+                "de89e87a.10da58",

+                "769a21a2.077c4",

+                "e772d25.ba6eb3",

+                "6d16b1ef.6edda",

+                "f44a56f3.db7c08",

+                "2d9d0a07.21b996",

+                "f4e0170c.c926f8",

+                "ec6279c6.c6c888",

+                "7c9c948.6f89d6c",

+                "97c178d3.f58628"

+            ]

+        ]

+    },

+    {

+        "id": "e86947af.f5b608",

+        "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": 795.0319557189941,

+        "y": 809.0005111694336,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "77b16659.a09ba8",

+        "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": 796.0313377380371,

+        "y": 240.00005435943604,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "8a272a2c.746128"

+            ]

+        ]

+    },

+    {

+        "id": "8a272a2c.746128",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 998.0317440032959,

+        "y": 241.00012493133545,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "2c0253a3.fcc01c"

+            ]

+        ]

+    },

+    {

+        "id": "2c0253a3.fcc01c",

+        "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": 1162.0320014953613,

+        "y": 237.60024166107178,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "769a21a2.077c4",

+        "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": 777.8714637756348,

+        "y": 470.00011253356934,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "96af6598.d7c628"

+            ]

+        ]

+    },

+    {

+        "id": "96af6598.d7c628",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 962.8715515136719,

+        "y": 468.00014305114746,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "835228c7.4ae758"

+            ]

+        ]

+    },

+    {

+        "id": "835228c7.4ae758",

+        "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": 1110.2054595947266,

+        "y": 465.4614019393921,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "46b5c4a7.4a507c",

+        "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": 793.9264106750488,

+        "y": 169.97332572937012,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "7b61097d.91aee8"

+            ]

+        ]

+    },

+    {

+        "id": "7b61097d.91aee8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 981.9264984130859,

+        "y": 170.97335529327393,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "b4967d12.d0c5f"

+            ]

+        ]

+    },

+    {

+        "id": "b4967d12.d0c5f",

+        "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": 1131.9267482757568,

+        "y": 165.57343101501465,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "7871b91.d889348",

+        "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": 781.9266395568848,

+        "y": 396.37681579589844,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "e6c538ab.c14a08"

+            ]

+        ]

+    },

+    {

+        "id": "e6c538ab.c14a08",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 975.926887512207,

+        "y": 397.37676429748535,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "4bb13cc.edc5bc4"

+            ]

+        ]

+    },

+    {

+        "id": "4bb13cc.edc5bc4",

+        "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": 1128.2607955932617,

+        "y": 395.8380250930786,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "de89e87a.10da58",

+        "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": 813.9267997741699,

+        "y": 431.3767375946045,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "a03ed9c9.218c88"

+            ]

+        ]

+    },

+    {

+        "id": "a03ed9c9.218c88",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 989.9270515441895,

+        "y": 431.37668323516846,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "3a45df3c.4f62e"

+            ]

+        ]

+    },

+    {

+        "id": "3a45df3c.4f62e",

+        "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": 1156.2606353759766,

+        "y": 431.83786487579346,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "6d16b1ef.6edda",

+        "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": 804.9266090393066,

+        "y": 543.3765439987183,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "299964fe.6aa9cc"

+            ]

+        ]

+    },

+    {

+        "id": "299964fe.6aa9cc",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 981.9268074035645,

+        "y": 542.3766088485718,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "a43497c1.d28c98"

+            ]

+        ]

+    },

+    {

+        "id": "a43497c1.d28c98",

+        "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": 1189.2605571746826,

+        "y": 536.8377733230591,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "f44a56f3.db7c08",

+        "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": 810.9266090393066,

+        "y": 582.3765439987183,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "6b63ec76.cea694"

+            ]

+        ]

+    },

+    {

+        "id": "6b63ec76.cea694",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 994.9268054962158,

+        "y": 582.3766527175903,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "9c582c07.4759e"

+            ]

+        ]

+    },

+    {

+        "id": "9c582c07.4759e",

+        "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": 1191.2605800628662,

+        "y": 575.8377561569214,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "b5fed085.d4d7c",

+        "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": 800.9265632629395,

+        "y": 203.37670135498047,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "92449f78.32a97"

+            ]

+        ]

+    },

+    {

+        "id": "92449f78.32a97",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 992.9268074035645,

+        "y": 204.37673091888428,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "8982915c.e8181"

+            ]

+        ]

+    },

+    {

+        "id": "8982915c.e8181",

+        "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": 1143.2608108520508,

+        "y": 203.83794021606445,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "8f7cd129.e628b",

+        "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": 793.2598075866699,

+        "y": 355.9943265914917,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "75d70ce6.dcc884"

+            ]

+        ]

+    },

+    {

+        "id": "75d70ce6.dcc884",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 984.2599792480469,

+        "y": 358.9943561553955,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "15c7df8.ee5e621"

+            ]

+        ]

+    },

+    {

+        "id": "15c7df8.ee5e621",

+        "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": 1138.2603073120117,

+        "y": 358.59437084198,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "d7c2c346.bb4d6",

+        "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": 794.1549263000488,

+        "y": 275.96763610839844,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "ca83aa38.707c38"

+            ]

+        ]

+    },

+    {

+        "id": "ca83aa38.707c38",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 989.1550140380859,

+        "y": 275.96766567230225,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "2f419e64.d2b172"

+            ]

+        ]

+    },

+    {

+        "id": "2f419e64.d2b172",

+        "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": 1136.1553421020508,

+        "y": 276.5676803588867,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "bc53deb3.66dc2",

+        "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": 1238.0310649871826,

+        "y": 501.3870048522949,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "2040cf67.854b5",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1026.6971588134766,

+        "y": 502.9259223937988,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "bc53deb3.66dc2"

+            ]

+        ]

+    },

+    {

+        "id": "e772d25.ba6eb3",

+        "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": 827.6969833374023,

+        "y": 506.9256525039673,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "2040cf67.854b5"

+            ]

+        ]

+    },

+    {

+        "id": "638cf29c.12828c",

+        "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": 786.030590057373,

+        "y": 137.38670349121094,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "24f19492.f009fc"

+            ]

+        ]

+    },

+    {

+        "id": "24f19492.f009fc",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 987.0307312011719,

+        "y": 135.38673400878906,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "a4b229b.62831d8"

+            ]

+        ]

+    },

+    {

+        "id": "a4b229b.62831d8",

+        "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": 1129.031078338623,

+        "y": 130.98684120178223,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "2d9d0a07.21b996",

+        "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": 796.0312957763672,

+        "y": 627.0000314712524,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "88000960.246438"

+            ]

+        ]

+    },

+    {

+        "id": "88000960.246438",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 995.0314617156982,

+        "y": 621.0001077651978,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "fabf24be.4a2ae8"

+            ]

+        ]

+    },

+    {

+        "id": "fabf24be.4a2ae8",

+        "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": 1194.3652057647705,

+        "y": 620.4612054824829,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "f4e0170c.c926f8",

+        "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": 786.0312957763672,

+        "y": 663.0000333786011,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "6611a8d1.372738"

+            ]

+        ]

+    },

+    {

+        "id": "6611a8d1.372738",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 997.0314598083496,

+        "y": 656.0001106262207,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "148c330d.e6ff2d"

+            ]

+        ]

+    },

+    {

+        "id": "148c330d.e6ff2d",

+        "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": 1194.3652057647705,

+        "y": 660.4612054824829,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "1bb7d8d3.393ca7",

+        "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": 1135.0208435058594,

+        "y": 315.00000190734863,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "ec6279c6.c6c888",

+        "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": 784.0208435058594,

+        "y": 314.00000190734863,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "48104b80.431324"

+            ]

+        ]

+    },

+    {

+        "id": "48104b80.431324",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 979.0209312438965,

+        "y": 314.00003147125244,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "1bb7d8d3.393ca7"

+            ]

+        ]

+    },

+    {

+        "id": "7c9c948.6f89d6c",

+        "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": 782.020866394043,

+        "y": 706.0000228881836,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "bd2c91e6.2d3bd"

+            ]

+        ]

+    },

+    {

+        "id": "bd2c91e6.2d3bd",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 991.0210380554199,

+        "y": 701.0001039505005,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "432b35f4.5934dc"

+            ]

+        ]

+    },

+    {

+        "id": "432b35f4.5934dc",

+        "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": 1196.3547019958496,

+        "y": 699.4612045288086,

+        "z": "192759e2.8ca676",

+        "wires": []

+    },

+    {

+        "id": "97c178d3.f58628",

+        "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": 792.020866394043,

+        "y": 747.0000238418579,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "12f9c78d.14c828"

+            ]

+        ]

+    },

+    {

+        "id": "12f9c78d.14c828",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 991.0211181640625,

+        "y": 746.000186920166,

+        "z": "192759e2.8ca676",

+        "wires": [

+            [

+                "6609b7c6.fc8a48"

+            ]

+        ]

+    },

+    {

+        "id": "6609b7c6.fc8a48",

+        "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": 1202.3547534942627,

+        "y": 744.4611740112305,

+        "z": "192759e2.8ca676",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-activate.json
new file mode 100644
index 0000000..9d8b029
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-activate.json
@@ -0,0 +1,847 @@
+[

+  {

+    "id": "803ab026.91f8f",

+    "type": "dgstart",

+    "name": "DGSTART",

+    "outputs": 1,

+    "x": 107.03125,

+    "y": 31.031251907348633,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "c6313a09.482648"

+      ]

+    ]

+  },

+  {

+    "id": "c6313a09.482648",

+    "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": 293.03125381469727,

+    "y": 103.03126907348633,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "95ab199b.094c18"

+      ]

+    ]

+  },

+  {

+    "id": "95ab199b.094c18",

+    "type": "method",

+    "name": "method sdwan-network-topology-operation-activate",

+    "xml": "<method rpc='sdwan-network-topology-operation-activate' mode='sync'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 281.0313720703125,

+    "y": 191.03125190734863,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "1c62871.b17ef79"

+      ]

+    ]

+  },

+  {

+    "id": "1c62871.b17ef79",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 455.03126525878906,

+    "y": 299.03131103515625,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "3b3f6a1b.7b4ca6",

+        "4e3bd6cb.ba9f78",

+        "694fbbd7.3f5854",

+        "17e80004.9e42d",

+        "285802e9.ef74ae",

+        "620b9b98.d14b04",

+        "8b0e2661.6611b8",

+        "418307b4.ccc048",

+        "96303f3f.254fa",

+        "2f6a3a39.effb56",

+        "e079dd14.d6c7f",

+        "c053f4f5.ddb828",

+        "9311c45c.c481e8",

+        "f2e5b424.d52178",

+        "9cac03d4.f972",

+        "9720bf6e.06444"

+      ]

+    ]

+  },

+  {

+    "id": "3b3f6a1b.7b4ca6",

+    "type": "call",

+    "name": "call GENERIC-RESOURCE-API:validate-sdwan-network-input-parameters",

+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-network-input-parameters' mode='sync' >\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 913.4201507568359,

+    "y": 48.03125190734863,

+    "z": "b086040b.a7e558",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "4e3bd6cb.ba9f78",

+    "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": 713.5868492126465,

+    "y": 101.8091049194336,

+    "z": "b086040b.a7e558",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "694fbbd7.3f5854",

+    "type": "set",

+    "name": "set networkId and network-object-path",

+    "xml": "<set>\n<parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name=\"network-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $network-topology-operation-input.network-information.network-id  + '/network-data/'` \" />",

+    "comments": "",

+    "x": 800.5871276855469,

+    "y": 1024.3447210788727,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "17e80004.9e42d",

+    "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": 722.3649291992188,

+    "y": 1213.9001410007477,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "285802e9.ef74ae",

+    "type": "set",

+    "name": "set network-level-oper-status",

+    "xml": "<set>\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />",

+    "comments": "",

+    "x": 767.4760437011719,

+    "y": 1085.566895723343,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "620b9b98.d14b04",

+    "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": 745.8889541625977,

+    "y": 154.80914115905762,

+    "z": "b086040b.a7e558",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "8b0e2661.6611b8",

+    "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 = $network-topology-operation-input.network-information.network-id' >\n<parameter name='sdwan-vpn-id' value='`$network-topology-operation-input.network-information.network-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": 784.6947593688965,

+    "y": 1148.270107269287,

+    "z": "b086040b.a7e558",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "418307b4.ccc048",

+    "type": "set",

+    "name": "set network in service-data",

+    "xml": "<set>\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />",

+    "comments": "",

+    "x": 761.0316581726074,

+    "y": 971.1225550174713,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "96303f3f.254fa",

+    "type": "for",

+    "name": "for each network-input-parameters",

+    "xml": "<for index='idx' start='0' end='`$ctx.network-data.network-request-input.network-input-parameters.param_length`' >\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 798.03125,

+    "y": 225.0351594388485,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "ce83acb3.4528a"

+      ]

+    ]

+  },

+  {

+    "id": "ce83acb3.4528a",

+    "type": "block",

+    "name": "block",

+    "xml": "<block>\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 1054.8646812438965,

+    "y": 159.3685105741024,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "ecc115d.f7101e8",

+        "d7b4205b.949d1"

+      ]

+    ]

+  },

+  {

+    "id": "ecc115d.f7101e8",

+    "type": "switchNode",

+    "name": "switch name",

+    "xml": "<switch test=\"`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].name == 'name'`\">\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1245.8647422790527,

+    "y": 155.36854299902916,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "f5dbb094.881f6"

+      ]

+    ]

+  },

+  {

+    "id": "f5dbb094.881f6",

+    "type": "outcomeTrue",

+    "name": "true",

+    "xml": "<outcome value='true'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1419.8648681640625,

+    "y": 155.36854681372643,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "d151144e.a69038"

+      ]

+    ]

+  },

+  {

+    "id": "d151144e.a69038",

+    "type": "set",

+    "name": "set name",

+    "xml": "<set>\n<parameter name='prop.name' value='`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",

+    "comments": "",

+    "x": 1582.8647537231445,

+    "y": 154.96854147315025,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "c053f4f5.ddb828",

+    "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": 792.03125,

+    "y": 334.03515815734863,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "6d5ba109.a3671",

+        "90ffe3bf.39fcd",

+        "dbe2a88c.8b12f8"

+      ]

+    ]

+  },

+  {

+    "id": "6d5ba109.a3671",

+    "type": "success",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1037.03125,

+    "y": 280.0351594388485,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "f907f929.492558"

+      ]

+    ]

+  },

+  {

+    "id": "90ffe3bf.39fcd",

+    "type": "not-found",

+    "name": "not-found",

+    "xml": "<outcome value='not-found'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1040.522216796875,

+    "y": 327.60919508337975,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "b624a8b6.bf4ac8"

+      ]

+    ]

+  },

+  {

+    "id": "dbe2a88c.8b12f8",

+    "type": "other",

+    "name": "other",

+    "xml": "<outcome value='Other'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1035.855224609375,

+    "y": 368.942508071661,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "7d3f8d7a.844044"

+      ]

+    ]

+  },

+  {

+    "id": "f907f929.492558",

+    "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": 1234.5313110351562,

+    "y": 268.0351594388485,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "b624a8b6.bf4ac8",

+    "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": 1217.0936279296875,

+    "y": 315.8949311673641,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "7d3f8d7a.844044",

+    "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": 1223.6277809143066,

+    "y": 364.3817008435726,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "9311c45c.c481e8",

+    "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": 800.03125,

+    "y": 445.03515815734863,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "e9b6301b.a1571",

+        "27918c6e.3a59a4"

+      ]

+    ]

+  },

+  {

+    "id": "e9b6301b.a1571",

+    "type": "success",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1039.031322479248,

+    "y": 423.0351896286011,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "25b0c9da.a209a6"

+      ]

+    ]

+  },

+  {

+    "id": "27918c6e.3a59a4",

+    "type": "failure",

+    "name": "failure",

+    "xml": "<outcome value='failure'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1031.281322479248,

+    "y": 476.6780729293823,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "5b42d4fd.ac727c"

+      ]

+    ]

+  },

+  {

+    "id": "25b0c9da.a209a6",

+    "type": "set",

+    "name": "set token-id",

+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+    "comments": "",

+    "x": 1189.03125,

+    "y": 424.03515815734863,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "5b42d4fd.ac727c",

+    "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": 1184.031322479248,

+    "y": 476.4281339645386,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "d7b4205b.949d1",

+    "type": "switchNode",

+    "name": "switch topology",

+    "xml": "<switch test=\"`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].name == 'topology'`\">\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1244.28125,

+    "y": 208.0351594388485,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "9f3b4d42.904a6"

+      ]

+    ]

+  },

+  {

+    "id": "9f3b4d42.904a6",

+    "type": "outcomeTrue",

+    "name": "true",

+    "xml": "<outcome value='true'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1418.2813758850098,

+    "y": 208.03516325354576,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "c7a8b800.265778"

+      ]

+    ]

+  },

+  {

+    "id": "c7a8b800.265778",

+    "type": "set",

+    "name": "set topology",

+    "xml": "<set>\n<parameter name='prop.topology' value='`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",

+    "comments": "",

+    "x": 1581.2812614440918,

+    "y": 207.6351579129696,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "f2e5b424.d52178",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 721.7812957763672,

+    "y": 691.0352811813354,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "be08c0ea.c5f31"

+      ]

+    ]

+  },

+  {

+    "id": "be08c0ea.c5f31",

+    "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": 1042.2814025878906,

+    "y": 680.035364151001,

+    "z": "b086040b.a7e558",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "2f6a3a39.effb56",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 724.2812652587891,

+    "y": 753.0352095067501,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "7ec8c1c5.bf91a",

+        "8dc97b4a.332098",

+        "cd1c7839.bb73a8"

+      ]

+    ]

+  },

+  {

+    "id": "8dc97b4a.332098",

+    "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": 995.7813110351562,

+    "y": 743.0353334844112,

+    "z": "b086040b.a7e558",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "7ec8c1c5.bf91a",

+    "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": 991.7814674377441,

+    "y": 795.0354328155518,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "cd1c7839.bb73a8",

+    "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": 1023.2813148498535,

+    "y": 847.0352077484131,

+    "z": "b086040b.a7e558",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "e079dd14.d6c7f",

+    "type": "set",

+    "name": "set tenant-id to service-data",

+    "xml": "<set>\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$network-topology-operation-input.network-request-input.network-input-parameters.param_length].name' value='tenant-id' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$network-topology-operation-input.network-request-input.network-input-parameters.param_length].value' value='`$prop.tenant-id`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length + 1`' />",

+    "comments": "",

+    "x": 759.2814025878906,

+    "y": 888.7853422164917,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "9720bf6e.06444",

+    "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.networks.network[$tmp.nidx].network-data.service-information.subscription-service-type \n        AND customer.global-customer-id = $service-data.networks.network[$tmp.nidx].network-data.service-information.global-customer-id'\n      force=\"true\" pfx=\"tmp.AnAI-data\">\n      \n",

+    "comments": "",

+    "outputs": 1,

+    "x": 776.1027908325195,

+    "y": 595.713773727417,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "bbcbdc4.862f32",

+        "4736bcfb.a0c9e4"

+      ]

+    ]

+  },

+  {

+    "id": "b8d38e16.8f50d",

+    "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": 1188.102882385254,

+    "y": 560.4638547897339,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "59cc568a.83f018",

+        "73ddfac2.a0d4e4"

+      ]

+    ]

+  },

+  {

+    "id": "59cc568a.83f018",

+    "type": "outcome",

+    "name": "NULL",

+    "xml": "<outcome value=''>",

+    "comments": "",

+    "outputs": 1,

+    "x": 1380.81734085083,

+    "y": 534.4638872146606,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "e9b5fb34.606db8"

+      ]

+    ]

+  },

+  {

+    "id": "73ddfac2.a0d4e4",

+    "type": "other",

+    "name": "Other",

+    "xml": "<outcome value='Other'>",

+    "comments": "",

+    "outputs": 1,

+    "x": 1381.102897644043,

+    "y": 589.4638586044312,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "b0968203.54d37"

+      ]

+    ]

+  },

+  {

+    "id": "fb4eb84c.02a668",

+    "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": 1628.5314903259277,

+    "y": 674.6066589355469,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "e9b5fb34.606db8",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 1520.2812385559082,

+    "y": 534.7851557731628,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "caa8d5b4.0ad2b8",

+        "a7278d93.3720c",

+        "160a6c8c.918963",

+        "da44425a.02876",

+        "416c4dbb.36fe64",

+        "4cac2ec3.0933d",

+        "33b241ad.e4aa3e"

+      ]

+    ]

+  },

+  {

+    "id": "da44425a.02876",

+    "type": "set",

+    "name": "set prop.customer-id",

+    "xml": "<set>\n<parameter name='prop.customer-id' value='`$ctx.network-data.service-information.global-customer-id`' />\n",

+    "comments": "",

+    "x": 1731.9243469238281,

+    "y": 345.35671615600586,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "caa8d5b4.0ad2b8",

+    "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/v1/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": 1790.9241638183594,

+    "y": 475.9280071258545,

+    "z": "b086040b.a7e558",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "a7278d93.3720c",

+    "type": "set",

+    "name": "set prop.tenant-id",

+    "xml": "<set>\n<parameter name='prop.tenant-id' value='`$tenant-result.data.tenantId`' />\n",

+    "comments": "",

+    "x": 1743.7814826965332,

+    "y": 600.7852363586426,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "160a6c8c.918963",

+    "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": 1811.281478881836,

+    "y": 636.5352363586426,

+    "z": "b086040b.a7e558",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "416c4dbb.36fe64",

+    "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.networks.network[$tmp.nidx].network-data.service-information.subscription-service-type \n        AND customer.global-customer-id = $service-data.networks.network[$tmp.nidx].network-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": 1835.2098541259766,

+    "y": 536.9281234741211,

+    "z": "b086040b.a7e558",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "bbcbdc4.862f32",

+    "type": "success",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 986.602653503418,

+    "y": 568.4598321914673,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "b8d38e16.8f50d"

+      ]

+    ]

+  },

+  {

+    "id": "4736bcfb.a0c9e4",

+    "type": "failure",

+    "name": "failure",

+    "xml": "<outcome value='failure'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 980.2812423706055,

+    "y": 620.6741437911987,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "f07e116f.03b5"

+      ]

+    ]

+  },

+  {

+    "id": "f07e116f.03b5",

+    "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": 1133.0312423706055,

+    "y": 620.424204826355,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "9cac03d4.f972",

+    "type": "set",

+    "name": "set  vpn-id to service-data",

+    "xml": "<set>\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$network-topology-operation-input.network-request-input.network-input-parameters.param_length].name' value='vpn-id' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$network-topology-operation-input.network-request-input.network-input-parameters.param_length].value' value='`$prop.vpn-id`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length + 1`' />",

+    "comments": "",

+    "x": 757.5313262939453,

+    "y": 926.5352201461792,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "b0968203.54d37",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 1439.7536544799805,

+    "y": 672.6108503341675,

+    "z": "b086040b.a7e558",

+    "wires": [

+      [

+        "fb4eb84c.02a668",

+        "a2f6331e.2d634"

+      ]

+    ]

+  },

+  {

+    "id": "a2f6331e.2d634",

+    "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": 1711.1822509765625,

+    "y": 721.1822528839111,

+    "z": "b086040b.a7e558",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "4cac2ec3.0933d",

+    "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": 1732.03125,

+    "y": 423.03125190734863,

+    "z": "b086040b.a7e558",

+    "wires": []

+  },

+  {

+    "id": "33b241ad.e4aa3e",

+    "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": 1807.0351257324219,

+    "y": 387.03519439697266,

+    "z": "b086040b.a7e558",

+    "wires": [

+      []

+    ]

+  }

+]

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-create.json
new file mode 100644
index 0000000..b7276f2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-create.json
@@ -0,0 +1,481 @@
+[
+  {
+    "id": "e738f63f.208ea8",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 87.00390625,
+    "y": 55.857561140786856,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "80341a9d.8eb738"
+      ]
+    ]
+  },
+  {
+    "id": "80341a9d.8eb738",
+    "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": 341.50390625,
+    "y": 55.857561140786856,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "5110d08c.83594"
+      ]
+    ]
+  },
+  {
+    "id": "5110d08c.83594",
+    "type": "method",
+    "name": "sdwan-network-topology-operation-create",
+    "xml": "<method rpc='sdwan-network-topology-operation-create' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 340.50390625,
+    "y": 155.85756114078686,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "a22e3b13.76c488"
+      ]
+    ]
+  },
+  {
+    "id": "a22e3b13.76c488",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 480.50390625,
+    "y": 255.85756114078686,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "f691075.4d857f8",
+        "cb88cbb7.42bd98",
+        "8ba6b398.46ed6",
+        "346ae50a.91fcda",
+        "9b181769.a4b628",
+        "e7358faf.a402d",
+        "dbb7121b.abe6a",
+        "fdf26bca.f03768",
+        "a7873db9.8b28e",
+        "d8cec38f.bc599",
+        "74be5192.2ede4"
+      ]
+    ]
+  },
+  {
+    "id": "f691075.4d857f8",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:validate-sdwan-network-input-parameters",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-network-input-parameters' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 910.5039176940918,
+    "y": 73.63531306339428,
+    "z": "d1658b32.d98238",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "cb88cbb7.42bd98",
+    "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-create\"/>\n<parameter name=\"field3\" value=\"SDWAN-Config\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 704.0595626831055,
+    "y": 251.07977294921875,
+    "z": "d1658b32.d98238",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "8ba6b398.46ed6",
+    "type": "execute",
+    "name": "execute generate prop.sdwan.network-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.sdwan.network-id\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 806.5039138793945,
+    "y": 117.63531541824341,
+    "z": "d1658b32.d98238",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "346ae50a.91fcda",
+    "type": "switchNode",
+    "name": "switch service-data.networks_length",
+    "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 795.0595626831055,
+    "y": 211.07977294921875,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "5636a9a3.7efe68",
+        "b63f0739.980f28"
+      ]
+    ]
+  },
+  {
+    "id": "5636a9a3.7efe68",
+    "type": "other",
+    "name": "Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1024.0595626831055,
+    "y": 191.07977294921875,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "c36e2515.dba218"
+      ]
+    ]
+  },
+  {
+    "id": "b63f0739.980f28",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1024.0595626831055,
+    "y": 231.07977294921875,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "75983c07.a5a874"
+      ]
+    ]
+  },
+  {
+    "id": "c36e2515.dba218",
+    "type": "set",
+    "name": "set nidx",
+    "xml": "<set>\n<parameter name='nidx' value='0' />\n",
+    "comments": "",
+    "x": 1166.5595626831055,
+    "y": 191.07977294921875,
+    "z": "d1658b32.d98238",
+    "wires": []
+  },
+  {
+    "id": "99e46d9c.cb058",
+    "type": "set",
+    "name": "set nidx",
+    "xml": "<set>\n<parameter name='nidx' value='`$service-data.networks.network_length`' />\n",
+    "comments": "",
+    "x": 1300.1150817871094,
+    "y": 192.63538265228271,
+    "z": "d1658b32.d98238",
+    "wires": []
+  },
+  {
+    "id": "9b181769.a4b628",
+    "type": "set",
+    "name": "set network in service-data",
+    "xml": "<set>\n<parameter name='service-data.networks.network[$nidx].network-id' value='`$prop.sdwan.network-id`' />\n<parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />\n<parameter name='service-data.networks.network_length' value='`$nidx+1`' />\n\n",
+    "comments": "",
+    "x": 765.5595626831055,
+    "y": 291.07977294921875,
+    "z": "d1658b32.d98238",
+    "wires": []
+  },
+  {
+    "id": "e7358faf.a402d",
+    "type": "set",
+    "name": "set networkId and network-object-path",
+    "xml": "<set>\n<parameter name='networkId' value='`$prop.sdwan.network-id`' />\n<parameter name=\"network-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.sdwan.network-id  + '/network-data/'` \" />",
+    "comments": "",
+    "x": 801.0595626831055,
+    "y": 331.07977294921875,
+    "z": "d1658b32.d98238",
+    "wires": []
+  },
+  {
+    "id": "dbb7121b.abe6a",
+    "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": 725.7264022827148,
+    "y": 500.7464985847473,
+    "z": "d1658b32.d98238",
+    "wires": []
+  },
+  {
+    "id": "fdf26bca.f03768",
+    "type": "set",
+    "name": "set network-level-oper-status",
+    "xml": "<set>\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />",
+    "comments": "",
+    "x": 772.5595626831055,
+    "y": 371.07977294921875,
+    "z": "d1658b32.d98238",
+    "wires": []
+  },
+  {
+    "id": "713ce360.f628ac",
+    "type": "for",
+    "name": "for each existing network",
+    "xml": "<for index='idx' start='0' end='`$nidx`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1169.5436248779297,
+    "y": 335.8575248424895,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "eb4807cf.0d23d8"
+      ]
+    ]
+  },
+  {
+    "id": "75983c07.a5a874",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1168.4166069030762,
+    "y": 231.01628494262695,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "713ce360.f628ac",
+        "99e46d9c.cb058"
+      ]
+    ]
+  },
+  {
+    "id": "eb4807cf.0d23d8",
+    "type": "switchNode",
+    "name": "switch networkid found",
+    "xml": "<switch test=\"`$service-data.networks.network[$idx].network-id == $network-topology-operation-input.network-information.network-id`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1444.829345703125,
+    "y": 335.4290275280364,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "ad204630.0981b8"
+      ]
+    ]
+  },
+  {
+    "id": "ad204630.0981b8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1345.5595436096191,
+    "y": 394.00045868800953,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "5de29638.c9b308"
+      ]
+    ]
+  },
+  {
+    "id": "e4848432.b300d8",
+    "type": "comment",
+    "name": "make sure this network doesn't exist already",
+    "info": "",
+    "comments": "",
+    "x": 1393.1943550109863,
+    "y": 294.11158224986866,
+    "z": "d1658b32.d98238",
+    "wires": []
+  },
+  {
+    "id": "5de29638.c9b308",
+    "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-topology-operation-input.network-request-input.network-id already found in service-data\" />\n",
+    "comments": "",
+    "x": 1493.3096466064453,
+    "y": 393.85765075683594,
+    "z": "d1658b32.d98238",
+    "wires": []
+  },
+  {
+    "id": "3a8170a.8edea9",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1459.961139678955,
+    "y": 163.6353702545166,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "5e4af687.3413b8",
+        "267dff81.9df9a"
+      ]
+    ]
+  },
+  {
+    "id": "5e4af687.3413b8",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1648.1829833984375,
+    "y": 145.96867442131042,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "e9584cec.7c047"
+      ]
+    ]
+  },
+  {
+    "id": "e9584cec.7c047",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1835.1829833984375,
+    "y": 141.96867442131042,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "4f9d1895.e6c898"
+      ]
+    ]
+  },
+  {
+    "id": "4f9d1895.e6c898",
+    "type": "set",
+    "name": "set name",
+    "xml": "<set>\n<parameter name='prop.name' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1985.1831130981445,
+    "y": 140.5686810016632,
+    "z": "d1658b32.d98238",
+    "wires": []
+  },
+  {
+    "id": "267dff81.9df9a",
+    "type": "switchNode",
+    "name": "switch topology",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'topology'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1659.0226440429688,
+    "y": 185.9686725139618,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "a3ecb652.b268e8"
+      ]
+    ]
+  },
+  {
+    "id": "a3ecb652.b268e8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1829.0226440429688,
+    "y": 181.9686725139618,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "5ddbd0bc.06582"
+      ]
+    ]
+  },
+  {
+    "id": "5ddbd0bc.06582",
+    "type": "set",
+    "name": "set topology",
+    "xml": "<set>\n<parameter name='prop.topology' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2016.3560848236084,
+    "y": 180.42982935905457,
+    "z": "d1658b32.d98238",
+    "wires": []
+  },
+  {
+    "id": "a7873db9.8b28e",
+    "type": "for",
+    "name": "for loop i - Network input parameters",
+    "xml": "<for index=\"idx\" start=\"0\" end=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 797.7383041381836,
+    "y": 161.41310119628906,
+    "z": "d1658b32.d98238",
+    "wires": [
+      [
+        "3a8170a.8edea9"
+      ]
+    ]
+  },
+  {
+    "id": "3a427aaa.1513f6",
+    "type": "comment",
+    "name": "TODO: Recheck AAI schemas",
+    "info": "",
+    "comments": "",
+    "x": 769.0351867675781,
+    "y": 20,
+    "z": "d1658b32.d98238",
+    "wires": []
+  },
+  {
+    "id": "d8cec38f.bc599",
+    "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.sdwan.network-id' >\n<parameter name='sdwan-vpn-id' value='`$prop.sdwan.network-id`' />\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='`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-uuid`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.sdwan.network-id  + '/network-data/'` \" />",
+    "comments": "",
+    "outputs": 1,
+    "x": 782.0038986206055,
+    "y": 410.57261514663696,
+    "z": "d1658b32.d98238",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "74be5192.2ede4",
+    "type": "save",
+    "name": "save service relationship in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \n      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id \n         AND customer.global-customer-id = $service-data.networks.network[$nidx].network-data.service-information.global-customer-id \n         AND service-subscription.service-type = $service-data.networks.network[$nidx].network-data.service-information.subscription-service-type' \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.sdwan.network-id`\" />\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.sdwan.network-id`\" />",
+    "comments": "",
+    "outputs": 1,
+    "x": 778.00390625,
+    "y": 457.57258653640747,
+    "z": "d1658b32.d98238",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-deactivate.json
new file mode 100644
index 0000000..b0c215a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-deactivate.json
@@ -0,0 +1,721 @@
+[
+  {
+    "id": "fd56c256.6611d",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 102,
+    "y": 37,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "e8a2c571.7151d8"
+      ]
+    ]
+  },
+  {
+    "id": "e8a2c571.7151d8",
+    "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": 264.00000381469727,
+    "y": 109.00001621246338,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "501691b7.b8579"
+      ]
+    ]
+  },
+  {
+    "id": "501691b7.b8579",
+    "type": "method",
+    "name": "method sdwan-network-topology-operation-deactivate",
+    "xml": "<method rpc='sdwan-network-topology-operation-deactivate' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 252.0001220703125,
+    "y": 196.99999904632568,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "f268dab.9a2e128"
+      ]
+    ]
+  },
+  {
+    "id": "f268dab.9a2e128",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 426.00001525878906,
+    "y": 305.0000581741333,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "b31f4e4c.0f578",
+        "34c8ec0.c180514",
+        "613a4de8.024144",
+        "5f55a204.78493c",
+        "b7c0b37c.27c35",
+        "f96046b8.ac5b48",
+        "f78b989e.79da48",
+        "76b3c50a.02876c",
+        "ad00b85d.5bef68",
+        "b370ae59.4bce9",
+        "2ec15.4c1aa3ebc",
+        "988eea5f.5a0298",
+        "2cf3fcb4.da9384",
+        "9a8305f1.e08cb8"
+      ]
+    ]
+  },
+  {
+    "id": "b31f4e4c.0f578",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:validate-sdwan-network-input-parameters",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-network-input-parameters' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 884.3889007568359,
+    "y": 53.999999046325684,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "34c8ec0.c180514",
+    "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-deactivate\"/>\n<parameter name=\"field3\" value=\"SDWAN-Deactivate\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 684.5555992126465,
+    "y": 107.77785205841064,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "613a4de8.024144",
+    "type": "set",
+    "name": "set networkId and network-object-path",
+    "xml": "<set>\n<parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name=\"network-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $network-topology-operation-input.network-information.network-id  + '/network-data/'` \" />",
+    "comments": "",
+    "x": 786.5558738708496,
+    "y": 849.3134832382202,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "5f55a204.78493c",
+    "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": 708.3336753845215,
+    "y": 1038.8689031600952,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "b7c0b37c.27c35",
+    "type": "set",
+    "name": "set network-level-oper-status",
+    "xml": "<set>\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />",
+    "comments": "",
+    "x": 753.4447898864746,
+    "y": 910.5356578826904,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "f96046b8.ac5b48",
+    "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": 716.8577041625977,
+    "y": 160.77788829803467,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "f78b989e.79da48",
+    "type": "set",
+    "name": "set network in service-data",
+    "xml": "<set>\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />",
+    "comments": "",
+    "x": 747.0004043579102,
+    "y": 796.0913171768188,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "76b3c50a.02876c",
+    "type": "for",
+    "name": "for each network-input-parameters",
+    "xml": "<for index='idx' start='0' end='`$ctx.network-data.network-request-input.network-input-parameters.param_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 769,
+    "y": 231.00390657782555,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "1c6b88c6.f49ce7"
+      ]
+    ]
+  },
+  {
+    "id": "1c6b88c6.f49ce7",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1025.8334312438965,
+    "y": 165.33725771307945,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "903569b7.4e2578",
+        "653d2c3c.262b14",
+        "c5910d9a.730a3",
+        "5b432d19.74fce4"
+      ]
+    ]
+  },
+  {
+    "id": "903569b7.4e2578",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1247.833511352539,
+    "y": 55.33729267120361,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "138e36c7.964e29"
+      ]
+    ]
+  },
+  {
+    "id": "138e36c7.964e29",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1421.8336372375488,
+    "y": 55.33729648590088,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "cd7bebad.986118"
+      ]
+    ]
+  },
+  {
+    "id": "cd7bebad.986118",
+    "type": "set",
+    "name": "set name",
+    "xml": "<set>\n<parameter name='prop.name' value='`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1584.8335227966309,
+    "y": 54.93729114532471,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "ad00b85d.5bef68",
+    "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": 763,
+    "y": 340.00390657782555,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "2b0c648a.f8433c",
+        "f2e86cdd.3128a",
+        "918162b5.31748"
+      ]
+    ]
+  },
+  {
+    "id": "2b0c648a.f8433c",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1008,
+    "y": 286.00390657782555,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "a06faa05.f76618"
+      ]
+    ]
+  },
+  {
+    "id": "f2e86cdd.3128a",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1011.490966796875,
+    "y": 333.5779422223568,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "37a1f73b.b96e68"
+      ]
+    ]
+  },
+  {
+    "id": "918162b5.31748",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1006.823974609375,
+    "y": 374.91125521063805,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "4f66c6a.4583438"
+      ]
+    ]
+  },
+  {
+    "id": "a06faa05.f76618",
+    "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": 1205.5000610351562,
+    "y": 274.00390657782555,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "37a1f73b.b96e68",
+    "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": 1188.0623779296875,
+    "y": 321.86367830634117,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "4f66c6a.4583438",
+    "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": 1194.5965309143066,
+    "y": 370.35044798254967,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "b370ae59.4bce9",
+    "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": 771,
+    "y": 451.00390657782555,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "61a5287d.5d14f8",
+        "99df3ba8.a50248"
+      ]
+    ]
+  },
+  {
+    "id": "61a5287d.5d14f8",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1006,
+    "y": 429.00390657782555,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "951e43bb.f165"
+      ]
+    ]
+  },
+  {
+    "id": "99df3ba8.a50248",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 998.25,
+    "y": 482.6467898786068,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "f26ec62f.ef46a8"
+      ]
+    ]
+  },
+  {
+    "id": "951e43bb.f165",
+    "type": "set",
+    "name": "set token-id",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+    "comments": "",
+    "x": 1160,
+    "y": 430.00390657782555,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "f26ec62f.ef46a8",
+    "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": 1151,
+    "y": 482.39685091376305,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "653d2c3c.262b14",
+    "type": "switchNode",
+    "name": "switch topology",
+    "xml": "<switch test=\"`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].name == 'topology'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1253.249984741211,
+    "y": 98.00390696525574,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "42e996e4.f57c78"
+      ]
+    ]
+  },
+  {
+    "id": "42e996e4.f57c78",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1427.2501106262207,
+    "y": 98.003910779953,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "36533d51.327db2"
+      ]
+    ]
+  },
+  {
+    "id": "36533d51.327db2",
+    "type": "set",
+    "name": "set topology",
+    "xml": "<set>\n<parameter name='prop.topology' value='`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1590.2499961853027,
+    "y": 97.60390543937683,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "2ec15.4c1aa3ebc",
+    "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": 779.7501068115234,
+    "y": 733.0041427612305,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "988eea5f.5a0298",
+    "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": 809.2501220703125,
+    "y": 666.0040273666382,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "c5910d9a.730a3",
+    "type": "switchNode",
+    "name": "switch vpn-id",
+    "xml": "<switch test=\"`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].name == 'vpn-id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1247.5000629425049,
+    "y": 181.00000095367432,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "648a246c.73b5ec"
+      ]
+    ]
+  },
+  {
+    "id": "648a246c.73b5ec",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1429.5000953674316,
+    "y": 180.99999976158142,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "701a4c1a.83d604"
+      ]
+    ]
+  },
+  {
+    "id": "701a4c1a.83d604",
+    "type": "set",
+    "name": "set prop.vpn-id",
+    "xml": "<set>\n<parameter name='prop.vpn-id' value='`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1592.4999809265137,
+    "y": 180.59999442100525,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "5b432d19.74fce4",
+    "type": "switchNode",
+    "name": "switch tenant-id",
+    "xml": "<switch test=\"`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].name == 'tenant-id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1253.25,
+    "y": 223.99999904632568,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "f053b806.9e46f8"
+      ]
+    ]
+  },
+  {
+    "id": "f053b806.9e46f8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1427.2501258850098,
+    "y": 224.00000286102295,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "7fc67227.287a4c"
+      ]
+    ]
+  },
+  {
+    "id": "7fc67227.287a4c",
+    "type": "set",
+    "name": "set prop.tenant-id",
+    "xml": "<set>\n<parameter name='prop.tenant-id' value='`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1590.2500114440918,
+    "y": 223.59999752044678,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "2cf3fcb4.da9384",
+    "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 = $network-topology-operation-input.network-information.network-id' >\n<parameter name='sdwan-vpn-id' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name='operational-status' value='PendingDelete' />",
+    "comments": "",
+    "outputs": 1,
+    "x": 767.0000686645508,
+    "y": 977.5001134872437,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "9a8305f1.e08cb8",
+    "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.networks.network[$tmp.nidx].network-data.service-information.subscription-service-type \n        AND customer.global-customer-id = $service-data.networks.network[$tmp.nidx].network-data.service-information.global-customer-id'\n      force=\"true\" pfx=\"tmp.AnAI-data\">\n      \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 758.0038909912109,
+    "y": 533.0038976669312,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "6497125a.d4efec",
+        "61153347.107bfc"
+      ]
+    ]
+  },
+  {
+    "id": "61153347.107bfc",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 973.1824684143066,
+    "y": 584.9642953872681,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "2a04bd37.e27582"
+      ]
+    ]
+  },
+  {
+    "id": "6497125a.d4efec",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 979.5038795471191,
+    "y": 532.7499837875366,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "954bff66.85de8"
+      ]
+    ]
+  },
+  {
+    "id": "2a04bd37.e27582",
+    "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": 1125.9324684143066,
+    "y": 584.7143564224243,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "954bff66.85de8",
+    "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": 1181.004108428955,
+    "y": 524.7540063858032,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "81f571ba.fc753"
+      ]
+    ]
+  },
+  {
+    "id": "81f571ba.fc753",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1374.0041236877441,
+    "y": 553.7540102005005,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "d50c5253.93df5"
+      ]
+    ]
+  },
+  {
+    "id": "d50c5253.93df5",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1432.6548805236816,
+    "y": 636.9010019302368,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      [
+        "5e8c6620.18c828",
+        "29548e46.007002"
+      ]
+    ]
+  },
+  {
+    "id": "5e8c6620.18c828",
+    "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": 1621.432716369629,
+    "y": 638.8968105316162,
+    "z": "88e745dd.c19a68",
+    "wires": []
+  },
+  {
+    "id": "29548e46.007002",
+    "type": "execute",
+    "name": "execute RestApiCallNode Create tenant auth",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\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": 1704.0834770202637,
+    "y": 685.4724044799805,
+    "z": "88e745dd.c19a68",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-delete.json
new file mode 100644
index 0000000..8e84a93
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-delete.json
@@ -0,0 +1,159 @@
+[
+  {
+    "id": "557c0d2.e91edf4",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 121.00390625,
+    "y": 50.00390625,
+    "z": "f08fa760.244488",
+    "wires": [
+      [
+        "93294ef3.ba70b"
+      ]
+    ]
+  },
+  {
+    "id": "93294ef3.ba70b",
+    "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": 333.00391006469727,
+    "y": 122.0039234161377,
+    "z": "f08fa760.244488",
+    "wires": [
+      [
+        "d7638881.bfb4c8"
+      ]
+    ]
+  },
+  {
+    "id": "d7638881.bfb4c8",
+    "type": "method",
+    "name": "method sdwan-network-topology-operation-delete",
+    "xml": "<method rpc='sdwan-network-topology-operation-delete' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 321.0040283203125,
+    "y": 210.00390625,
+    "z": "f08fa760.244488",
+    "wires": [
+      [
+        "96e57ca9.97c2e"
+      ]
+    ]
+  },
+  {
+    "id": "96e57ca9.97c2e",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 491.44836044311523,
+    "y": 272.44836235046387,
+    "z": "f08fa760.244488",
+    "wires": [
+      [
+        "3ea486fa.98e8fa",
+        "5a29219c.c419d",
+        "8d5f8731.51c938",
+        "40643a2d.08d114",
+        "24e3bcc2.2186b4",
+        "c8f5f5d0.be2858",
+        "cb920ad8.ed1188"
+      ]
+    ]
+  },
+  {
+    "id": "3ea486fa.98e8fa",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:validate-sdwan-network-input-parameters",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-network-input-parameters' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 972.3928146362305,
+    "y": 67.00391006469727,
+    "z": "f08fa760.244488",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "5a29219c.c419d",
+    "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-delete\"/>\n<parameter name=\"field3\" value=\"SDWAN-Delete\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 766.7816314697266,
+    "y": 133.33727836608887,
+    "z": "f08fa760.244488",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "8d5f8731.51c938",
+    "type": "set",
+    "name": "set networkId and network-object-path",
+    "xml": "<set>\n<parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $network-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'` \" />",
+    "comments": "",
+    "x": 851.448314666748,
+    "y": 381.4281978607178,
+    "z": "f08fa760.244488",
+    "wires": []
+  },
+  {
+    "id": "40643a2d.08d114",
+    "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": 780.5595626831055,
+    "y": 444.9835858345032,
+    "z": "f08fa760.244488",
+    "wires": []
+  },
+  {
+    "id": "c8f5f5d0.be2858",
+    "type": "set",
+    "name": "set new network length",
+    "xml": "<set>\n\t<parameter name=\"service-data.networks.network_length\" value=\"`$service-data.networks.network_length - 1`\"/>\n\n\t\n",
+    "comments": "",
+    "x": 810.0809860229492,
+    "y": 258.89910793304443,
+    "z": "f08fa760.244488",
+    "wires": []
+  },
+  {
+    "id": "24e3bcc2.2186b4",
+    "type": "set",
+    "name": "Remove networks from ServiceData",
+    "xml": "<set>\n\t<parameter name=\"service-data.networks.network[$tmp.nidx].\" value=\"\"/>\n\n",
+    "comments": "",
+    "x": 850.7051429748535,
+    "y": 306.8670496940613,
+    "z": "f08fa760.244488",
+    "wires": []
+  },
+  {
+    "id": "cb920ad8.ed1188",
+    "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 = $network-topology-operation-input.network-information.network-id'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 888.6364860534668,
+    "y": 200.01019191741943,
+    "z": "f08fa760.244488",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.json
new file mode 100644
index 0000000..4e36776
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.json
@@ -0,0 +1,1138 @@
+[

+    {

+        "id": "7366a05a.d05f2",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 188.03125,

+        "y": 47.000000953674316,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "e3bd5c4c.51008"

+            ]

+        ]

+    },

+    {

+        "id": "e3bd5c4c.51008",

+        "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": 109.23811054229736,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "1596b30b.8477dd"

+            ]

+        ]

+    },

+    {

+        "id": "1596b30b.8477dd",

+        "type": "method",

+        "name": "method sdwan-vf-operation-device-activate",

+        "xml": "<method rpc='sdwan-vf-operation-device-activate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 279.03125,

+        "y": 203.58634281158447,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "f1b88e0f.347c2"

+            ]

+        ]

+    },

+    {

+        "id": "f1b88e0f.347c2",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 265.6979217529297,

+        "y": 388.6667146682739,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "bfdad516.55b728",

+                "c5688842.c82648",

+                "43050414.43a59c",

+                "18e2b9c5.c15ab6",

+                "96bc0bad.d1b6d8",

+                "1fac2e8e.1cd261",

+                "ec973dfa.2bb02",

+                "c8253bec.651ed8",

+                "6a3f667b.faa1c8",

+                "6e068351.b1d5ac",

+                "bad73f6e.5a9bd",

+                "c48e860.5ae0278",

+                "eb6bd181.9cba1",

+                "dcfcf0d8.7769b",

+                "bb4fec85.4dd7b",

+                "79ce744.767cc8c",

+                "503505b2.fa936c",

+                "f2facc44.32ff4"

+            ]

+        ]

+    },

+    {

+        "id": "c5688842.c82648",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 594.0626163482666,

+        "y": 256.26913380622864,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "30e4aafc.b14b26"

+            ]

+        ]

+    },

+    {

+        "id": "bfdad516.55b728",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 616.0312690734863,

+        "y": 222.0000114440918,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "46627c7a.59d634"

+            ]

+        ]

+    },

+    {

+        "id": "46627c7a.59d634",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 796.03125,

+        "y": 221.00000095367432,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "b77e7e6.92ec98"

+            ]

+        ]

+    },

+    {

+        "id": "b77e7e6.92ec98",

+        "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": 945.4599761962891,

+        "y": 222.14291858673096,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "30e4aafc.b14b26",

+        "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": 817.0312671661377,

+        "y": 256.9999988079071,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "507916d8.8412f8"

+            ]

+        ]

+    },

+    {

+        "id": "507916d8.8412f8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1032.0312519073486,

+        "y": 254.99999260902405,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "1abf62f5.2b1d9d"

+            ]

+        ]

+    },

+    {

+        "id": "1abf62f5.2b1d9d",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1196.0312519073486,

+        "y": 249.99999260902405,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "43050414.43a59c",

+        "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": 661.0312576293945,

+        "y": 354.99999141693115,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "e26b2607.2a2748",

+                "a2e81bf7.01bb98",

+                "41da8842.556048"

+            ]

+        ]

+    },

+    {

+        "id": "a2e81bf7.01bb98",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 883.03125,

+        "y": 389.0000009536743,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "837a0388.6ec21"

+            ]

+        ]

+    },

+    {

+        "id": "e26b2607.2a2748",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 888.0312461853027,

+        "y": 336,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "837a0388.6ec21"

+            ]

+        ]

+    },

+    {

+        "id": "837a0388.6ec21",

+        "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": 1046.03125,

+        "y": 349.0000009536743,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "41da8842.556048",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 883.03125,

+        "y": 450.0000009536743,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "1f4e644a.d7030c"

+            ]

+        ]

+    },

+    {

+        "id": "7a6fd972.23f808",

+        "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": 1237.031265258789,

+        "y": 448.0000149011612,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "1f4e644a.d7030c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1044.0312957763672,

+        "y": 446.99999237060547,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "7a6fd972.23f808",

+                "bc92f3b3.aa654",

+                "67e2e66a.9bd638"

+            ]

+        ]

+    },

+    {

+        "id": "bc92f3b3.aa654",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1256.031234741211,

+        "y": 500.99999141693115,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "af0c0219.f27c4"

+            ]

+        ]

+    },

+    {

+        "id": "af0c0219.f27c4",

+        "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": 1499.03125,

+        "y": 496.0000009536743,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "c50413ad.70d3b"

+            ]

+        ]

+    },

+    {

+        "id": "c50413ad.70d3b",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1697.0312786102295,

+        "y": 483.00000762939453,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "c8462944.d3d558"

+            ]

+        ]

+    },

+    {

+        "id": "c8462944.d3d558",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1849.03125,

+        "y": 485.0000009536743,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "e39cc1dd.da5e8",

+                "3673863c.1c835a",

+                "ccfc5c32.59e5f"

+            ]

+        ]

+    },

+    {

+        "id": "e39cc1dd.da5e8",

+        "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": 2102.0314903259277,

+        "y": 413.0000123977661,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "3673863c.1c835a",

+        "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": 2086.0313682556152,

+        "y": 474.0000581741333,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "ccfc5c32.59e5f",

+        "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": 2118.0315475463867,

+        "y": 531.0000734329224,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "18e2b9c5.c15ab6",

+        "type": "switchNode",

+        "name": "switch tmp.vidx ",

+        "xml": "<switch test=\"`$tmp.vidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 598.0624961853027,

+        "y": 489.0160655975342,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "8c2388b0.edeb08"

+            ]

+        ]

+    },

+    {

+        "id": "8c2388b0.edeb08",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 745.491138458252,

+        "y": 488.58747577667236,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "9db89e13.5611a"

+            ]

+        ]

+    },

+    {

+        "id": "9db89e13.5611a",

+        "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": 894.919864654541,

+        "y": 489.730393409729,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "ec973dfa.2bb02",

+        "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": 603.0625228881836,

+        "y": 535.016065120697,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c738eb6c.67a768",

+        "type": "comment",

+        "name": "make sure this VNF doesn't exist already",

+        "info": "",

+        "comments": "",

+        "x": 1343.4479675292969,

+        "y": 984.2502048015594,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "eb6bd181.9cba1",

+        "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": 692.0354614257812,

+        "y": 990.4241485595703,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "5fa43c53.6045a4",

+                "6960119.9f640f"

+            ]

+        ]

+    },

+    {

+        "id": "faa94bad.fa2558",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1110.701889038086,

+        "y": 958.3127992153168,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "706df2c3.ee526c",

+        "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": 1112.146469116211,

+        "y": 1008.8683316707611,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "6960119.9f640f",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 959.146312713623,

+        "y": 1011.8682858943939,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "706df2c3.ee526c"

+            ]

+        ]

+    },

+    {

+        "id": "5fa43c53.6045a4",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 958.5908279418945,

+        "y": 955.5349977016449,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "faa94bad.fa2558"

+            ]

+        ]

+    },

+    {

+        "id": "1fac2e8e.1cd261",

+        "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": 588.0314846038818,

+        "y": 1413.5002839565277,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "96bc0bad.d1b6d8",

+        "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": 633.3647422790527,

+        "y": 1303.8336417675018,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "503505b2.fa936c",

+        "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='operational-status' value='Active' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 680.6982574462891,

+        "y": 1352.723069190979,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6e068351.b1d5ac",

+        "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": 629.6983680725098,

+        "y": 1087.7538211345673,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "c8253bec.651ed8",

+        "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": 612.0314788818359,

+        "y": 1246.2504107952118,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "79ce744.767cc8c",

+        "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": 634.0360374450684,

+        "y": 583.8936786651611,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "27c395d1.cc99aa",

+                "a15c5f02.651f",

+                "8a9a7c18.8150d"

+            ]

+        ]

+    },

+    {

+        "id": "27c395d1.cc99aa",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 856.0360660552979,

+        "y": 542.8936786651611,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "fcc107ae.11a1d8"

+            ]

+        ]

+    },

+    {

+        "id": "a15c5f02.651f",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 859.5270328521729,

+        "y": 590.4677143096924,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "a0280dad.4672"

+            ]

+        ]

+    },

+    {

+        "id": "8a9a7c18.8150d",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 854.8600406646729,

+        "y": 631.8010272979736,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "59e30e0a.ba719"

+            ]

+        ]

+    },

+    {

+        "id": "fcc107ae.11a1d8",

+        "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": 1053.536127090454,

+        "y": 530.8936786651611,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "a0280dad.4672",

+        "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": 1036.0984439849854,

+        "y": 578.7534503936768,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "59e30e0a.ba719",

+        "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": 1042.6325969696045,

+        "y": 627.2402200698853,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "bb4fec85.4dd7b",

+        "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": 634.0360565185547,

+        "y": 691.8935861587524,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "e3fdea02.bef5f8",

+                "510fc414.2ace1c"

+            ]

+        ]

+    },

+    {

+        "id": "e3fdea02.bef5f8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 873.0361289978027,

+        "y": 669.8936176300049,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "59b687d7.302ac8"

+            ]

+        ]

+    },

+    {

+        "id": "510fc414.2ace1c",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 865.2861289978027,

+        "y": 723.5365009307861,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "7a4deae6.6f0ce4"

+            ]

+        ]

+    },

+    {

+        "id": "59b687d7.302ac8",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1023.0360565185547,

+        "y": 670.8935861587524,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "7a4deae6.6f0ce4",

+        "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": 1018.0361289978027,

+        "y": 723.2865619659424,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "c48e860.5ae0278",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 573.7860565185547,

+        "y": 900.8937749862671,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "bc9e7395.79f5e"

+            ]

+        ]

+    },

+    {

+        "id": "bc9e7395.79f5e",

+        "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": 892.2861480712891,

+        "y": 903.8939361572266,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dcfcf0d8.7769b",

+        "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": 628.107551574707,

+        "y": 805.5722675323486,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "1d2a1174.f60a5f",

+                "af67f570.499af8"

+            ]

+        ]

+    },

+    {

+        "id": "14d246ea.4d18f9",

+        "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": 1040.1076431274414,

+        "y": 770.3223485946655,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "a01e54d0.c0ef88",

+                "8e84ac75.03435"

+            ]

+        ]

+    },

+    {

+        "id": "a01e54d0.c0ef88",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1232.8221015930176,

+        "y": 744.3223810195923,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "5b46bfcb.e107"

+            ]

+        ]

+    },

+    {

+        "id": "8e84ac75.03435",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1233.1076583862305,

+        "y": 799.3223524093628,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "f1e78a9c.989338"

+            ]

+        ]

+    },

+    {

+        "id": "305c6a3e.5caf76",

+        "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": 1480.5362510681152,

+        "y": 884.4651527404785,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "5b46bfcb.e107",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1372.2859992980957,

+        "y": 744.6436495780945,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "e65ad869.b6a738",

+                "33daccfa.fa4ad4",

+                "a292b1f1.50e1",

+                "89d28fc6.070cc",

+                "5b1692a.ed07e6c",

+                "628cc8d7.dc94c8",

+                "306fdb54.fea144"

+            ]

+        ]

+    },

+    {

+        "id": "89d28fc6.070cc",

+        "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": 1583.9291076660156,

+        "y": 555.2152099609375,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "e65ad869.b6a738",

+        "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": 1642.9289245605469,

+        "y": 685.7865009307861,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "33daccfa.fa4ad4",

+        "type": "set",

+        "name": "set prop.tenant-id",

+        "xml": "<set>\n<parameter name='prop.tenant-id' value='`$tenant-result.data.tenantId`' />\n",

+        "comments": "",

+        "x": 1585.7862167358398,

+        "y": 783.643741607666,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "a292b1f1.50e1",

+        "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": 1661.2861862182617,

+        "y": 834.3937706947327,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5b1692a.ed07e6c",

+        "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": 1684.2146530151367,

+        "y": 736.7866287231445,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1d2a1174.f60a5f",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 838.6074142456055,

+        "y": 778.3183259963989,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "14d246ea.4d18f9"

+            ]

+        ]

+    },

+    {

+        "id": "af67f570.499af8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 832.286003112793,

+        "y": 830.5326375961304,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "10c51d46.007b83"

+            ]

+        ]

+    },

+    {

+        "id": "10c51d46.007b83",

+        "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": 985.036003112793,

+        "y": 830.2826986312866,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "f1e78a9c.989338",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1291.758415222168,

+        "y": 882.4693441390991,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "305c6a3e.5caf76",

+                "f8f4d633.b36da8"

+            ]

+        ]

+    },

+    {

+        "id": "f8f4d633.b36da8",

+        "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": 1563.18701171875,

+        "y": 931.0407466888428,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "628cc8d7.dc94c8",

+        "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": 1595.0360107421875,

+        "y": 637.8897457122803,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "306fdb54.fea144",

+        "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": 1659.0398864746094,

+        "y": 596.8936882019043,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "67e2e66a.9bd638",

+        "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": 1204.3607177734375,

+        "y": 383,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6a3f667b.faa1c8",

+        "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": 633.0275115966797,

+        "y": 1182.3333728313446,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "bad73f6e.5a9bd",

+        "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": 616.0274295806885,

+        "y": 1132.0000789165497,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    },

+    {

+        "id": "f2facc44.32ff4",

+        "type": "switchNode",

+        "name": "switch vnf-index",

+        "xml": "<switch test='`$vnf-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 605.0520858764648,

+        "y": 301.0312559604645,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "4089ca12.07b054"

+            ]

+        ]

+    },

+    {

+        "id": "4089ca12.07b054",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 767.052131652832,

+        "y": 300.03125500679016,

+        "z": "b6c1c029.17cd1",

+        "wires": [

+            [

+                "3c7c191c.e210a6"

+            ]

+        ]

+    },

+    {

+        "id": "3c7c191c.e210a6",

+        "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 id not found in service-data\" />\n",

+        "comments": "",

+        "x": 916.3022232055664,

+        "y": 297.80913281440735,

+        "z": "b6c1c029.17cd1",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.json
new file mode 100644
index 0000000..413069e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.json
@@ -0,0 +1,745 @@
+[

+    {

+        "id": "a55c86e0.b5aa88",

+        "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": 969.829511642456,

+        "y": 145.13152599334717,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "89879683.435e28"

+            ]

+        ]

+    },

+    {

+        "id": "654795a8.0c14ac",

+        "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": 242.49999809265137,

+        "y": 172.96871852874756,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "9d67b8bb.5c3018"

+            ]

+        ]

+    },

+    {

+        "id": "9d67b8bb.5c3018",

+        "type": "method",

+        "name": "sdwan-vf-operation-device-create",

+        "xml": "<method rpc='sdwan-vf-operation-device-create' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 241.49999809265137,

+        "y": 272.96871852874756,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "b03e92e3.4a48b"

+            ]

+        ]

+    },

+    {

+        "id": "5c240948.ac8cb8",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 128,

+        "y": 65.9687271118164,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "654795a8.0c14ac"

+            ]

+        ]

+    },

+    {

+        "id": "b03e92e3.4a48b",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 400.4999828338623,

+        "y": 388.9687271118164,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "949786f1.863f68",

+                "ea17361a.fd7708",

+                "efdf1074.6df6a",

+                "398e0031.2e059",

+                "cb5e3f0e.d096d",

+                "759de3b6.0709dc",

+                "115eabc8.0c7c94",

+                "a28188f1.6060e8",

+                "97ec72bd.6232e",

+                "e24672d6.3f64f",

+                "56ec94bf.93da3c",

+                "9d805d88.8f8ee",

+                "64fa5b44.3987c4",

+                "8956e9de.67f788"

+            ]

+        ]

+    },

+    {

+        "id": "949786f1.863f68",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 717.8294200897217,

+        "y": 146.46486282348633,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "a55c86e0.b5aa88"

+            ]

+        ]

+    },

+    {

+        "id": "5c7606f2.618b18",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1341.496000289917,

+        "y": 147.13152885437012,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "89879683.435e28",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1188.1628284454346,

+        "y": 147.13150787353516,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "5c7606f2.618b18"

+            ]

+        ]

+    },

+    {

+        "id": "efdf1074.6df6a",

+        "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": 798.7501583099365,

+        "y": 547.6354074478149,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "aa19f798.d86af8"

+            ]

+        ]

+    },

+    {

+        "id": "aa19f798.d86af8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1013.5285015106201,

+        "y": 545.1909914016724,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "5ba25a3d.6d9bd4",

+                "bcc6d89b.3d5508"

+            ]

+        ]

+    },

+    {

+        "id": "5ba25a3d.6d9bd4",

+        "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": 1209.784704208374,

+        "y": 522.9391298294067,

+        "z": "13a3e634.05943a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bcc6d89b.3d5508",

+        "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": 1179.2291316986084,

+        "y": 559.9392461776733,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "ea17361a.fd7708",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 732.2500133514404,

+        "y": 101.96873188018799,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "fb03dd5b.a92d3"

+            ]

+        ]

+    },

+    {

+        "id": "fb03dd5b.a92d3",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 918.9166927337646,

+        "y": 101.30202960968018,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "54203a8b.1592b4"

+            ]

+        ]

+    },

+    {

+        "id": "54203a8b.1592b4",

+        "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": 1100.5833187103271,

+        "y": 101.30202960968018,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "759de3b6.0709dc",

+        "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.vf-id`' />\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\n",

+        "comments": "",

+        "x": 783.3531398773193,

+        "y": 714.4649891853333,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "398e0031.2e059",

+        "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": 789.6862964630127,

+        "y": 610.122971534729,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "cb5e3f0e.d096d",

+        "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": 815.686674118042,

+        "y": 666.1232051849365,

+        "z": "13a3e634.05943a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "115eabc8.0c7c94",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-id' value='`$prop.vf-id`'/>    \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.vf-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": 778.5000324249268,

+        "y": 764.968834400177,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "a28188f1.6060e8",

+        "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": 786.0001354217529,

+        "y": 812.9687986373901,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "2bd76b30.e44c14",

+        "type": "save",

+        "name": "save sdwan vpn resource in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n      key='device.device-id = $prop.vf-id' >\n<parameter name='device-id' value='`$prop.vf-id`' />\n<parameter name='esn' value='`$prop.device.esn`' />\n<parameter name='device-name' value='`$prop.device.name`' />\n<parameter name='description' value='`$prop.device.description`' />\n<parameter name='vendor' value='`$prop.device.vendor`' />\n<parameter name='class' value='`$prop.device.class`' />\n<parameter name='type' value='`$prop.device.deviceModel`' />\n<parameter name='version' value='`$prop.device.version`' />\n<parameter name='system-ip' value='`$prop.device.systemIp`' />\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-uuid`' />\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.vf-id + '/vf-module-data/'` \" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1220.500051498413,

+        "y": 838.4687461853027,

+        "z": "13a3e634.05943a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e24672d6.3f64f",

+        "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=\"device\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/devices/device/' + $prop.vf-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"device.device-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.vf-id`\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 789.4999294281006,

+        "y": 906.4687976837158,

+        "z": "13a3e634.05943a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "97ec72bd.6232e",

+        "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": 738.2224597930908,

+        "y": 952.6426405906677,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "5aff085f.4f6678",

+        "type": "execute",

+        "name": "execute generate-vf-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.vf-id\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1265.6667766571045,

+        "y": 226.3020715713501,

+        "z": "13a3e634.05943a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6d401f41.38c65",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1018.6663036346436,

+        "y": 240.9534740447998,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "5aff085f.4f6678",

+                "5b632a30.5bb984",

+                "3542675.5ce1998"

+            ]

+        ]

+    },

+    {

+        "id": "931487e.1357f78",

+        "type": "set",

+        "name": "set prop.vf-id",

+        "xml": "<set>\n<parameter name='prop.vf-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n",

+        "comments": "",

+        "x": 1224.1981716156006,

+        "y": 443.98510932922363,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "4589ca44.abd4b4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1018.1977977752686,

+        "y": 396.9848413467407,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "931487e.1357f78",

+                "5b632a30.5bb984",

+                "5d9e7b7e.ca4bf4"

+            ]

+        ]

+    },

+    {

+        "id": "5b632a30.5bb984",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1253.6978969573975,

+        "y": 320.98486518859863,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "66c1c6a1.0380b8",

+                "7a26fc83.04adb4"

+            ]

+        ]

+    },

+    {

+        "id": "4aab28a9.38e418",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1715.4121894836426,

+        "y": 240.12759113311768,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "6d61baf9.e5ff54"

+            ]

+        ]

+    },

+    {

+        "id": "6d61baf9.e5ff54",

+        "type": "set",

+        "name": "set vf-index=0",

+        "xml": "<set>\n<parameter name='vf-index' value='0' />\n",

+        "comments": "",

+        "x": 1863.6978378295898,

+        "y": 237.1276454925537,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "31602a2e.23f6d6",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1718.8406867980957,

+        "y": 285.4133825302124,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "794d6b8.233bf94"

+            ]

+        ]

+    },

+    {

+        "id": "794d6b8.233bf94",

+        "type": "set",

+        "name": "set vf-index = vf_length",

+        "xml": "<set>\n<parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n",

+        "comments": "",

+        "x": 1902.698429107666,

+        "y": 285.69915103912354,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "66c1c6a1.0380b8",

+        "type": "set",

+        "name": "set new vF_length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />\n",

+        "comments": "",

+        "x": 1431.6979007720947,

+        "y": 349.9848289489746,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "4261b847.26d008",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1668.269338607788,

+        "y": 380.12776374816895,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "f7fccba6.c15138"

+            ]

+        ]

+    },

+    {

+        "id": "f7fccba6.c15138",

+        "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 id ' + $service-data.vnfs.vnf[$idx].vnf-id\n      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`\" />\n",

+        "comments": "",

+        "x": 1806.8406963348389,

+        "y": 380.127724647522,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "5d0b6c.7fe7e494",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 867.1973781585693,

+        "y": 364.9847192764282,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "4589ca44.abd4b4"

+            ]

+        ]

+    },

+    {

+        "id": "cd8f5874.903778",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 870.6662006378174,

+        "y": 304.95348167419434,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "6d401f41.38c65"

+            ]

+        ]

+    },

+    {

+        "id": "9419aeb4.031d3",

+        "type": "comment",

+        "name": "if SO provide vf-id use that else create new",

+        "info": "",

+        "comments": "",

+        "x": 1568.1973934173584,

+        "y": 200.9847230911255,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "9d805d88.8f8ee",

+        "type": "switchNode",

+        "name": "switch vf-id",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 729.6661968231201,

+        "y": 329.9534902572632,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "cd8f5874.903778",

+                "5d0b6c.7fe7e494"

+            ]

+        ]

+    },

+    {

+        "id": "56ec94bf.93da3c",

+        "type": "switchNode",

+        "name": "switch vnf-index",

+        "xml": "<switch test='`$vnf-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 729.5312633514404,

+        "y": 194.99999713897705,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "8e07f88.10c5a08"

+            ]

+        ]

+    },

+    {

+        "id": "8e07f88.10c5a08",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 891.5313091278076,

+        "y": 193.99999618530273,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "33f9f4dc.b667cc"

+            ]

+        ]

+    },

+    {

+        "id": "33f9f4dc.b667cc",

+        "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 id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1040.781400680542,

+        "y": 191.77787399291992,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "7a26fc83.04adb4",

+        "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": 1493.5312404632568,

+        "y": 266.0000123977661,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "4aab28a9.38e418",

+                "31602a2e.23f6d6"

+            ]

+        ]

+    },

+    {

+        "id": "98ab03a3.4fb31",

+        "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": 1485.5312404632568,

+        "y": 388.49998664855957,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "4261b847.26d008"

+            ]

+        ]

+    },

+    {

+        "id": "5d9e7b7e.ca4bf4",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1249.5312404632568,

+        "y": 392.49998664855957,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "98ab03a3.4fb31"

+            ]

+        ]

+    },

+    {

+        "id": "64fa5b44.3987c4",

+        "type": "set",

+        "name": "set prop.sdncCreate=false",

+        "xml": "<set>\n<parameter name='prop.sdncCreate' value='false' />\n",

+        "comments": "",

+        "x": 760.0312404632568,

+        "y": 58,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "3542675.5ce1998",

+        "type": "set",

+        "name": "set prop.sdncCreate=true",

+        "xml": "<set>\n<parameter name='prop.sdncCreate' value='true' />\n",

+        "comments": "",

+        "x": 1279.0312480926514,

+        "y": 188.99999904632568,

+        "z": "13a3e634.05943a",

+        "wires": []

+    },

+    {

+        "id": "8956e9de.67f788",

+        "type": "switchNode",

+        "name": "switch prop.sdncCreate",

+        "xml": "<switch test='`$prop.sdncCreate`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 768.0313053131104,

+        "y": 862.0000276565552,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "530d4a6f.95a5a4",

+                "ed2fc8ce.6d54b8"

+            ]

+        ]

+    },

+    {

+        "id": "ed2fc8ce.6d54b8",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 983.0313034057617,

+        "y": 873.0000276565552,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "f6984691.7e9e18"

+            ]

+        ]

+    },

+    {

+        "id": "530d4a6f.95a5a4",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 986.0313034057617,

+        "y": 834.9999961853027,

+        "z": "13a3e634.05943a",

+        "wires": [

+            [

+                "2bd76b30.e44c14"

+            ]

+        ]

+    },

+    {

+        "id": "f6984691.7e9e18",

+        "type": "save",

+        "name": "update sdwan vpn resource in AAI",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n      key='device.device-id = $prop.vf-id' >\n<parameter name='device-id' value='`$prop.vf-id`' />\n<parameter name='esn' value='`$prop.device.esn`' />\n<parameter name='device-name' value='`$prop.device.name`' />\n<parameter name='description' value='`$prop.device.description`' />\n<parameter name='vendor' value='`$prop.device.vendor`' />\n<parameter name='class' value='`$prop.device.class`' />\n<parameter name='type' value='`$prop.device.deviceModel`' />\n<parameter name='version' value='`$prop.device.version`' />\n<parameter name='system-ip' value='`$prop.device.systemIp`' />\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-uuid`' />\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.vf-id + '/vf-module-data/'` \" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1217.0312480926514,

+        "y": 878.9999990463257,

+        "z": "13a3e634.05943a",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.json b/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.json b/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.json
new file mode 100644
index 0000000..722e5c1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.json
@@ -0,0 +1,2309 @@
+[

+    {

+        "id": "8b02c414.0a0158",

+        "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": 645.00390625,

+        "y": 383.99998915195465,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "68e694fb.03b05c",

+                "f7e70447.8db3e8",

+                "971f4ab1.d15838"

+            ]

+        ]

+    },

+    {

+        "id": "4d453692.f3a9c8",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 199.00391006469727,

+        "y": 63,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "97a72ea4.29d6f"

+            ]

+        ]

+    },

+    {

+        "id": "97a72ea4.29d6f",

+        "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": 251.28960418701172,

+        "y": 138.23810827732086,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "62c84170.f19fe"

+            ]

+        ]

+    },

+    {

+        "id": "62c84170.f19fe",

+        "type": "method",

+        "name": "method sdwan-vf-operation-lanport-activate",

+        "xml": "<method rpc='sdwan-vf-operation-lanport-activate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 263.00389862060547,

+        "y": 232.58634054660797,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "4a4e497e.f869b8"

+            ]

+        ]

+    },

+    {

+        "id": "4a4e497e.f869b8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 263.67057037353516,

+        "y": 488.66670763492584,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "347fb228.e9842e",

+                "6a3eea86.07aec4",

+                "8b02c414.0a0158",

+                "137939e6.0ea6f6",

+                "1213b66e.6c069a",

+                "789e7d3a.85d8f4",

+                "ff74d1ed.accce",

+                "f32683d3.4b28a",

+                "3b4bc5c6.e4f6ca",

+                "a812e63e.3da708",

+                "ac4f31e9.8674f",

+                "1aaf5076.12a2d",

+                "6fe14a72.8a26c4",

+                "ff0e83f6.a79dc",

+                "ee8d2486.88ecd8",

+                "dee417c.1c53be8",

+                "2a8eeeae.a97fe2",

+                "19b08536.47a7ab",

+                "d176642b.9b7848",

+                "42792fe4.bec31",

+                "f49389c2.437958",

+                "d0669f94.595ad",

+                "e3da978e.7b4c98",

+                "c34ad6a3.8e84a8",

+                "2b29c48d.675bdc",

+                "e96cc964.57ebf8",

+                "4c96c619.458ff8",

+                "d5b15ee0.c0558",

+                "81047830.c65458"

+            ]

+        ]

+    },

+    {

+        "id": "6a3eea86.07aec4",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 610.0352668762207,

+        "y": 254.269144654274,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "5cc5500e.cb96a"

+            ]

+        ]

+    },

+    {

+        "id": "347fb228.e9842e",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 615.0039215087891,

+        "y": 193.00001394748688,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "305dd6dd.08e4da"

+            ]

+        ]

+    },

+    {

+        "id": "305dd6dd.08e4da",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 795.0039024353027,

+        "y": 192.0000034570694,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "6b8c86df.f233d8"

+            ]

+        ]

+    },

+    {

+        "id": "6b8c86df.f233d8",

+        "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": 944.4326286315918,

+        "y": 193.14292109012604,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "5cc5500e.cb96a",

+        "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": 833.0039176940918,

+        "y": 255.00000965595245,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "36127203.816c4e"

+            ]

+        ]

+    },

+    {

+        "id": "36127203.816c4e",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1048.0039024353027,

+        "y": 253.0000034570694,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "e237d111.df552"

+            ]

+        ]

+    },

+    {

+        "id": "e237d111.df552",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1212.0039024353027,

+        "y": 248.0000034570694,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "f7e70447.8db3e8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 867.0038986206055,

+        "y": 417.9999986886978,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "a74d8270.f16d2"

+            ]

+        ]

+    },

+    {

+        "id": "68e694fb.03b05c",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 872.0038948059082,

+        "y": 364.9999977350235,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "a74d8270.f16d2"

+            ]

+        ]

+    },

+    {

+        "id": "a74d8270.f16d2",

+        "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": 1030.0038986206055,

+        "y": 377.9999986886978,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "971f4ab1.d15838",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 867.0038986206055,

+        "y": 478.9999986886978,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "a3e0e456.022b58"

+            ]

+        ]

+    },

+    {

+        "id": "1e2cec5d.de4c34",

+        "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": 1221.0039138793945,

+        "y": 477.0000126361847,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "a3e0e456.022b58",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1028.0039443969727,

+        "y": 475.99999010562897,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "1e2cec5d.de4c34",

+                "3182c119.6bacee"

+            ]

+        ]

+    },

+    {

+        "id": "3182c119.6bacee",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1240.0038833618164,

+        "y": 529.9999891519547,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "4ac639b1.fde548"

+            ]

+        ]

+    },

+    {

+        "id": "4ac639b1.fde548",

+        "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": 1483.0038986206055,

+        "y": 524.9999986886978,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "431b4671.7beb88"

+            ]

+        ]

+    },

+    {

+        "id": "431b4671.7beb88",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1681.003927230835,

+        "y": 512.000005364418,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "54c2caba.eaa034"

+            ]

+        ]

+    },

+    {

+        "id": "54c2caba.eaa034",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1833.0038986206055,

+        "y": 513.9999986886978,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "3daf2055.af9fa",

+                "dc47796a.7906f8",

+                "deaa7223.49fff"

+            ]

+        ]

+    },

+    {

+        "id": "3daf2055.af9fa",

+        "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": 2061.0040130615234,

+        "y": 456.0000025033951,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "dc47796a.7906f8",

+        "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.0040130615234,

+        "y": 510.0000025033951,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "137939e6.0ea6f6",

+        "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": 617.0041007995605,

+        "y": 2475.5012583732605,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "deaa7223.49fff",

+        "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": 2095.4590377807617,

+        "y": 561.0104948282242,

+        "z": "8f678717.6ce918",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f2af207f.056ba",

+        "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": 1352.2580871582031,

+        "y": 589.0040794610977,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "df0e1cc8.6175d"

+            ]

+        ]

+    },

+    {

+        "id": "498120cb.bf483",

+        "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",

+        "comments": "",

+        "outputs": 1,

+        "x": 1423.25830078125,

+        "y": 662.0042091608047,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "2d8a4d76.dce9b2"

+            ]

+        ]

+    },

+    {

+        "id": "df0e1cc8.6175d",

+        "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": 1638.2579345703125,

+        "y": 591.0041633844376,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "88689a59.1525c8"

+            ]

+        ]

+    },

+    {

+        "id": "2d8a4d76.dce9b2",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1643.2580242156982,

+        "y": 663.0042167901993,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "471b276b.f70408"

+            ]

+        ]

+    },

+    {

+        "id": "471b276b.f70408",

+        "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": 1888.2581024169922,

+        "y": 663.0041342973709,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "f9301f27.4950a"

+            ]

+        ]

+    },

+    {

+        "id": "f9301f27.4950a",

+        "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": 2196.2583770751953,

+        "y": 646.0041023492813,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "f075729c.cbb68"

+            ]

+        ]

+    },

+    {

+        "id": "f075729c.cbb68",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2405.258415222168,

+        "y": 648.0040947198868,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "707326cf.03f308"

+            ]

+        ]

+    },

+    {

+        "id": "d4d9dbbb.648b58",

+        "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": 2778.258441925049,

+        "y": 584.0042724609375,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "1213b66e.6c069a",

+        "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": 606.2578125,

+        "y": 456.00404131412506,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "a1edaa1e.9827b8"

+            ]

+        ]

+    },

+    {

+        "id": "d899ea3c.cf2f28",

+        "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": 1251.008171081543,

+        "y": 817.0040302276611,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "2030d34.407f32c"

+            ]

+        ]

+    },

+    {

+        "id": "752f257f.d5098c",

+        "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": 1256.0080871582031,

+        "y": 730.0041098594666,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "adf19321.c13fa"

+            ]

+        ]

+    },

+    {

+        "id": "ee8d2486.88ecd8",

+        "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": 640.0078811645508,

+        "y": 671.0039068460464,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "f8bad303.dbe7d"

+            ]

+        ]

+    },

+    {

+        "id": "2030d34.407f32c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1501.0082206726074,

+        "y": 811.0041122436523,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "f69a83eb.44d4d"

+            ]

+        ]

+    },

+    {

+        "id": "841cfed1.a1254",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3017.2584648132324,

+        "y": 860.5040955543518,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "e784ebf1.08c898"

+            ]

+        ]

+    },

+    {

+        "id": "9be03c3c.6339a",

+        "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[$sidx].value`' />\n",

+        "comments": "",

+        "x": 3408.259147644043,

+        "y": 813.5041975975037,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "e784ebf1.08c898",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3176.5086555480957,

+        "y": 856.0041356086731,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "9be03c3c.6339a",

+                "9e178a26.f11d98",

+                "464c0296.a1e48c"

+            ]

+        ]

+    },

+    {

+        "id": "2a8eeeae.a97fe2",

+        "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": 683.0351696014404,

+        "y": 1706.0783809423447,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "4fb32b06.22de74",

+                "2ccfd494.b7778c"

+            ]

+        ]

+    },

+    {

+        "id": "4fb32b06.22de74",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 929.035228729248,

+        "y": 1720.0785145759583,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "174c6392.45d36c"

+            ]

+        ]

+    },

+    {

+        "id": "2ccfd494.b7778c",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 929.035228729248,

+        "y": 1682.0783500671387,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "f32d5720.b004a8"

+            ]

+        ]

+    },

+    {

+        "id": "f32d5720.b004a8",

+        "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": 1073.0355625152588,

+        "y": 1681.0783495903015,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "174c6392.45d36c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1076.0352401733398,

+        "y": 1721.0783534049988,

+        "z": "8f678717.6ce918",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "789e7d3a.85d8f4",

+        "type": "set",

+        "name": "set prop.lan.devicePortId",

+        "xml": "<set>\n<parameter name='prop.lan.devicePortId' value='`$portResp.success[0].id`' />\n",

+        "comments": "",

+        "x": 622.6924304962158,

+        "y": 1759.1795134544373,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "c8e5454e.a5f2d8",

+        "type": "comment",

+        "name": "Create port",

+        "info": "",

+        "comments": "",

+        "x": 581.7011089324951,

+        "y": 1672.5223326683044,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "dee417c.1c53be8",

+        "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": 620.7011108398438,

+        "y": 1443.188735961914,

+        "z": "8f678717.6ce918",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "73930f6d.bd40a",

+        "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": 1102.6854190826416,

+        "y": 1801.1889374256134,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "f4939515.e934a8",

+                "7fbfd7f1.fe5c88"

+            ]

+        ]

+    },

+    {

+        "id": "f4939515.e934a8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1423.6854457855225,

+        "y": 1818.1892578601837,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "b71c12a.f5b84f"

+            ]

+        ]

+    },

+    {

+        "id": "7fbfd7f1.fe5c88",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1426.6854724884033,

+        "y": 1783.1890394687653,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "e1ceccd5.e3c8a"

+            ]

+        ]

+    },

+    {

+        "id": "e1ceccd5.e3c8a",

+        "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": 1629.6858615875244,

+        "y": 1779.1891467571259,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "b71c12a.f5b84f",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1630.6854267120361,

+        "y": 1814.1890132427216,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "a9b33c49.c3bcd"

+            ]

+        ]

+    },

+    {

+        "id": "a6aa3698.83f238",

+        "type": "comment",

+        "name": "Create bridge domain",

+        "info": "",

+        "comments": "",

+        "x": 1046.351312637329,

+        "y": 1767.6331632137299,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "ff74d1ed.accce",

+        "type": "switchNode",

+        "name": "switch portSwitch",

+        "xml": "<switch test=\"`$prop.lan.portSwitch == 'layer2-port'`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 602.4628849029541,

+        "y": 1802.8555693626404,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "e5cd78cd.5d2488"

+            ]

+        ]

+    },

+    {

+        "id": "e5cd78cd.5d2488",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 781.4629154205322,

+        "y": 1802.9668917655945,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "73930f6d.bd40a"

+            ]

+        ]

+    },

+    {

+        "id": "f32683d3.4b28a",

+        "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": 624.0079498291016,

+        "y": 1150.7540369033813,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "c682732c.1b619",

+                "a0542b6d.df6248"

+            ]

+        ]

+    },

+    {

+        "id": "a0542b6d.df6248",

+        "type": "failure",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 825.0079689025879,

+        "y": 1128.7540283203125,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "c4664b45.9bda68"

+            ]

+        ]

+    },

+    {

+        "id": "c682732c.1b619",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 825.0079727172852,

+        "y": 1169.7540321350098,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "be2b2979.dff578"

+            ]

+        ]

+    },

+    {

+        "id": "c4664b45.9bda68",

+        "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": 1022.0079879760742,

+        "y": 1126.7540283203125,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "be2b2979.dff578",

+        "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": 980.0079803466797,

+        "y": 1166.7540311813354,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "cae7c761.8a48d8",

+        "type": "comment",

+        "name": "Create wan port",

+        "info": "",

+        "comments": "",

+        "x": 600.0177555084229,

+        "y": 1855.764169216156,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "a78777a6.efc058",

+        "type": "comment",

+        "name": "TODO: split ip/mask",

+        "info": "",

+        "comments": "",

+        "x": 1024.0175495147705,

+        "y": 1840.9343829154968,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "2b29c48d.675bdc",

+        "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": 690.7792358398438,

+        "y": 1923.8749885559082,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "d75115d2.ddadb8",

+                "1522b134.0365cf"

+            ]

+        ]

+    },

+    {

+        "id": "1522b134.0365cf",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 959.7792663574219,

+        "y": 1910.874960899353,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "4e7a2718.c54bb8"

+            ]

+        ]

+    },

+    {

+        "id": "d75115d2.ddadb8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 956.779239654541,

+        "y": 1945.8751792907715,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "921eb416.d975f8"

+            ]

+        ]

+    },

+    {

+        "id": "4e7a2718.c54bb8",

+        "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": 1112.7796478271484,

+        "y": 1906.875186920166,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "921eb416.d975f8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1103.7792205810547,

+        "y": 1946.8749351501465,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "56dec516.1d914c"

+            ]

+        ]

+    },

+    {

+        "id": "56dec516.1d914c",

+        "type": "set",

+        "name": "set prop.lan.lanPortId",

+        "xml": "<set>\n<parameter name='prop.lan.lanPortId' value='`$lanPortResp.success[0].id`' />\n",

+        "comments": "",

+        "x": 1310.6683235168457,

+        "y": 1949.2084016799927,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "d176642b.9b7848",

+        "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.vpnId + '/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": 688.2896537780762,

+        "y": 1612.584020614624,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "808ba7f7.1823b8",

+                "c4951686.b75398"

+            ]

+        ]

+    },

+    {

+        "id": "c4951686.b75398",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 936.2895374298096,

+        "y": 1638.5833979845047,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "784c02db.e6a95c"

+            ]

+        ]

+    },

+    {

+        "id": "784c02db.e6a95c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1106.2894763946533,

+        "y": 1641.5833979845047,

+        "z": "8f678717.6ce918",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "38bcf7f.a17ed08",

+        "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": 1106.2895984649658,

+        "y": 1597.5833979845047,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "808ba7f7.1823b8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 939.2894763946533,

+        "y": 1597.5833979845047,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "38bcf7f.a17ed08"

+            ]

+        ]

+    },

+    {

+        "id": "19b08536.47a7ab",

+        "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": 659.2879791259766,

+        "y": 1523.083080291748,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "8d4926aa.0dedd8",

+                "34aad35b.eecf2c"

+            ]

+        ]

+    },

+    {

+        "id": "34aad35b.eecf2c",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 880.2878818511963,

+        "y": 1545.083046078682,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "29a5b00a.563c1"

+            ]

+        ]

+    },

+    {

+        "id": "29a5b00a.563c1",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1050.28782081604,

+        "y": 1548.083046078682,

+        "z": "8f678717.6ce918",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f02161da.6bf6a",

+        "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": 1050.2879428863525,

+        "y": 1504.083046078682,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "8d4926aa.0dedd8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 883.28782081604,

+        "y": 1504.083046078682,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "f02161da.6bf6a"

+            ]

+        ]

+    },

+    {

+        "id": "b00f339b.1e85c",

+        "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": 1249.2898559570312,

+        "y": 925.3332660198212,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "98de150a.a898a8"

+            ]

+        ]

+    },

+    {

+        "id": "adf19321.c13fa",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 978.6229438781738,

+        "y": 823.333335518837,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "d899ea3c.cf2f28",

+                "b00f339b.1e85c"

+            ]

+        ]

+    },

+    {

+        "id": "98de150a.a898a8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1344.9563674926758,

+        "y": 999.3333470821381,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "8e6a1b76.fca5b8"

+            ]

+        ]

+    },

+    {

+        "id": "8e6a1b76.fca5b8",

+        "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": 1559.2062530517578,

+        "y": 1000.8333237171173,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "beead211.571e7"

+            ]

+        ]

+    },

+    {

+        "id": "cdf1bbb6.bd8ba8",

+        "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": 1957.2064361572266,

+        "y": 1015.8333911895752,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "1fffc0b9.a8833f"

+            ]

+        ]

+    },

+    {

+        "id": "1fffc0b9.a8833f",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2106.9563598632812,

+        "y": 1020.3332909345627,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "92af9681.b05978"

+            ]

+        ]

+    },

+    {

+        "id": "92af9681.b05978",

+        "type": "set",

+        "name": "set prop.vpnId",

+        "xml": "<set>\n<parameter name='prop.vpnId' 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": 2280.9571075439453,

+        "y": 1020.3333493471146,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "9e178a26.f11d98",

+        "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": 3444.290397644043,

+        "y": 868.3334641456604,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "464c0296.a1e48c",

+        "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": 3475.2902221679688,

+        "y": 918.333414554596,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "3b4bc5c6.e4f6ca",

+        "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": 650.2896194458008,

+        "y": 620.3333288431168,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "929e0fdf.a14df",

+        "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": 2186.956443786621,

+        "y": 756.3333539962769,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "748a3dbb.4abc94"

+            ]

+        ]

+    },

+    {

+        "id": "748a3dbb.4abc94",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2350.9564476013184,

+        "y": 756.3333539962769,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "63238f0b.0c796"

+            ]

+        ]

+    },

+    {

+        "id": "63238f0b.0c796",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2538.956615447998,

+        "y": 741.3333530426025,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "778462c0.19820c",

+                "4b6f7aba.421804",

+                "7959c34a.0b74cc"

+            ]

+        ]

+    },

+    {

+        "id": "4b6f7aba.421804",

+        "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": 2733.956745147705,

+        "y": 702.3333444595337,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "d2392f6d.dd3f8"

+            ]

+        ]

+    },

+    {

+        "id": "778462c0.19820c",

+        "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].value == 'dsvpn-hub'`\">\n    \n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2730.9568519592285,

+        "y": 757.3333599567413,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "6240c68b.ec5338"

+            ]

+        ]

+    },

+    {

+        "id": "9130115c.24fe5",

+        "type": "set",

+        "name": "set spoke role",

+        "xml": "<set>\n<parameter name='prop.role' value=\"spoke\" />\n",

+        "comments": "",

+        "x": 3063.9568672180176,

+        "y": 696.3333902359009,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "f5deb026.df82c",

+        "type": "set",

+        "name": "set hub role",

+        "xml": "<set>\n<parameter name='prop.role' value=\"hub\" />\n",

+        "comments": "",

+        "x": 3062.95662689209,

+        "y": 751.3333740234375,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "d2392f6d.dd3f8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2903.956714630127,

+        "y": 698.0000190734863,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "9130115c.24fe5"

+            ]

+        ]

+    },

+    {

+        "id": "6240c68b.ec5338",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2907.956714630127,

+        "y": 753.0000190734863,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "f5deb026.df82c"

+            ]

+        ]

+    },

+    {

+        "id": "42792fe4.bec31",

+        "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='lan-port-config.lan-port-config-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='lan-port-config-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`' /-->\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 672.320972442627,

+        "y": 2394.0313868522644,

+        "z": "8f678717.6ce918",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1aaf5076.12a2d",

+        "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": 666.9559936523438,

+        "y": 2339.1263122558594,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "ac4f31e9.8674f",

+        "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": 702.9559936523438,

+        "y": 2292.626251220703,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "a812e63e.3da708",

+        "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": 667.9559326171875,

+        "y": 2237.876220703125,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "ff0e83f6.a79dc",

+        "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": 671.3209762573242,

+        "y": 1981.0317306518555,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "6fe14a72.8a26c4",

+        "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": 665.320915222168,

+        "y": 2066.031364440918,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "b8234051.e1603",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length >= '0'`\">\n\n<!--switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\"-->\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 865.5038909912109,

+        "y": 543.2539049386978,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "16d3b783.0cd918"

+            ]

+        ]

+    },

+    {

+        "id": "16d3b783.0cd918",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 971.50390625,

+        "y": 594.2539049386978,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "5cba566.e5faea8"

+            ]

+        ]

+    },

+    {

+        "id": "a1edaa1e.9827b8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 665.7539138793945,

+        "y": 504.00390350818634,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "b8234051.e1603"

+            ]

+        ]

+    },

+    {

+        "id": "5cba566.e5faea8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1123.753890991211,

+        "y": 591.0039268732071,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "f2af207f.056ba"

+            ]

+        ]

+    },

+    {

+        "id": "88689a59.1525c8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1867.5039710998535,

+        "y": 589.0039106607437,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "498120cb.bf483"

+            ]

+        ]

+    },

+    {

+        "id": "2a8efd4f.307a02",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 903.2539329528809,

+        "y": 1225.7540172040462,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "c5e91ad3.94c708"

+            ]

+        ]

+    },

+    {

+        "id": "76b0b1a9.365ed",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 906.7448997497559,

+        "y": 1273.3280528485775,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "ca44fd4d.9a232"

+            ]

+        ]

+    },

+    {

+        "id": "1a464e8d.d61281",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 902.0779075622559,

+        "y": 1314.6613658368587,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "8ed5a0be.2020f"

+            ]

+        ]

+    },

+    {

+        "id": "ca44fd4d.9a232",

+        "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": 1083.3163108825684,

+        "y": 1261.6137889325619,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "8ed5a0be.2020f",

+        "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": 1089.8504638671875,

+        "y": 1310.1005586087704,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "5729e228.1a118c",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 905.2540054321289,

+        "y": 1368.7540473937988,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "b11fa2f9.fb7d9"

+            ]

+        ]

+    },

+    {

+        "id": "9ae06886.9dad78",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 897.5040054321289,

+        "y": 1422.39693069458,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "63364892.2ff828"

+            ]

+        ]

+    },

+    {

+        "id": "b11fa2f9.fb7d9",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1055.2539329528809,

+        "y": 1369.7540159225464,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "63364892.2ff828",

+        "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": 1050.254005432129,

+        "y": 1422.1469917297363,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "c5e91ad3.94c708",

+        "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": 1098.7540130615234,

+        "y": 1220.7540216445923,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "d0669f94.595ad",

+        "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": 656.2539825439453,

+        "y": 1391.7541246414185,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "5729e228.1a118c",

+                "9ae06886.9dad78"

+            ]

+        ]

+    },

+    {

+        "id": "f49389c2.437958",

+        "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": 641.2540512084961,

+        "y": 1272.7540369033813,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "2a8efd4f.307a02",

+                "76b0b1a9.365ed",

+                "1a464e8d.d61281"

+            ]

+        ]

+    },

+    {

+        "id": "e3da978e.7b4c98",

+        "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": 625.00390625,

+        "y": 323.5039049386978,

+        "z": "8f678717.6ce918",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "707326cf.03f308",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2566.5039863586426,

+        "y": 612.7539138793945,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "d4d9dbbb.648b58",

+                "e2915ee2.8ebb7"

+            ]

+        ]

+    },

+    {

+        "id": "e2915ee2.8ebb7",

+        "type": "set",

+        "name": "set site-vnf-index",

+        "xml": "<set>\n<parameter name='site-vnf-index' value='`$vnfidx`' />\n",

+        "comments": "",

+        "x": 2775.50390625,

+        "y": 630.7539043426514,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "c34ad6a3.8e84a8",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$site-vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 645.0000305175781,

+        "y": 979.6667224168777,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "5417e4ec.44e0fc"

+            ]

+        ]

+    },

+    {

+        "id": "5417e4ec.44e0fc",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 746.614933013916,

+        "y": 1075.9960042238235,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "96fd6203.a93a8"

+            ]

+        ]

+    },

+    {

+        "id": "96fd6203.a93a8",

+        "type": "switchNode",

+        "name": "switch ActivateSDWANSiteInstance",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$site-vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANSiteInstance'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1011.0001754760742,

+        "y": 1025.6666556596756,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "ff96c27a.f8b4c"

+            ]

+        ]

+    },

+    {

+        "id": "ff96c27a.f8b4c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1233.0000915527344,

+        "y": 1025.6667371988297,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "5c974e6c.9d1de"

+            ]

+        ]

+    },

+    {

+        "id": "5c974e6c.9d1de",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$site-vnf-index].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": 1314.250099182129,

+        "y": 1100.1667386293411,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "f2c7eaa3.99a658"

+            ]

+        ]

+    },

+    {

+        "id": "f2c7eaa3.99a658",

+        "type": "block",

+        "name": "block atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1531.6152648925781,

+        "y": 1100.9960032701492,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "a31b541a.f43428"

+            ]

+        ]

+    },

+    {

+        "id": "a31b541a.f43428",

+        "type": "switchNode",

+        "name": "switch siteId",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$site-vnf-index].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": 1697.2504577636719,

+        "y": 1107.1668459177017,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "acd1f3fa.6df91"

+            ]

+        ]

+    },

+    {

+        "id": "acd1f3fa.6df91",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1874.2504768371582,

+        "y": 1110.1666861772537,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "dbf157a8.9bfda8"

+            ]

+        ]

+    },

+    {

+        "id": "dbf157a8.9bfda8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2033.5006675720215,

+        "y": 1105.666726231575,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "6d90da35.f2faa4"

+            ]

+        ]

+    },

+    {

+        "id": "6d90da35.f2faa4",

+        "type": "set",

+        "name": "set prop.attach.siteId",

+        "xml": "<set>\n<parameter name='prop.siteId' value='`$service-data.vnfs.vnf[$site-vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />\n",

+        "comments": "",

+        "x": 2258.2509841918945,

+        "y": 1084.1667376756668,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "beead211.571e7",

+        "type": "block",

+        "name": "block atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1782.0000610351562,

+        "y": 997.3333483934402,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "cdf1bbb6.bd8ba8",

+                "4590d72e.8fdc58",

+                "c987788c.bf7828"

+            ]

+        ]

+    },

+    {

+        "id": "4590d72e.8fdc58",

+        "type": "switchNode",

+        "name": "switch name",

+        "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 == 'name'`\">\n    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1957.000015258789,

+        "y": 967.3333216905594,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "ccda746f.733f78"

+            ]

+        ]

+    },

+    {

+        "id": "ccda746f.733f78",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2107.749969482422,

+        "y": 968.8332372903824,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "8dafe60a.3c53c8"

+            ]

+        ]

+    },

+    {

+        "id": "8dafe60a.3c53c8",

+        "type": "set",

+        "name": "set prop.name",

+        "xml": "<set>\n<parameter name='prop.name' 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": 2281.750717163086,

+        "y": 968.8332957029343,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "28067cd3.bf95d4",

+        "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": 1961.2583961486816,

+        "y": 799.5041923522949,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "929e0fdf.a14df"

+            ]

+        ]

+    },

+    {

+        "id": "2b01491e.2600e6",

+        "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[$sidx].name == 'siteId'`\">\n    \n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2840.258445739746,

+        "y": 857.5042552947998,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "841cfed1.a1254"

+            ]

+        ]

+    },

+    {

+        "id": "f69a83eb.44d4d",

+        "type": "block",

+        "name": "block atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1693.531337738037,

+        "y": 804.0312929153442,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "28067cd3.bf95d4"

+            ]

+        ]

+    },

+    {

+        "id": "7959c34a.0b74cc",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='sidx' 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": 2593.5310440063477,

+        "y": 851.0312733650208,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "2b01491e.2600e6"

+            ]

+        ]

+    },

+    {

+        "id": "c987788c.bf7828",

+        "type": "switchNode",

+        "name": "switch topology",

+        "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 == 'topology'`\">\n    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1955.50390625,

+        "y": 907.7539043426514,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "b8a07211.4482a"

+            ]

+        ]

+    },

+    {

+        "id": "b8a07211.4482a",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2106.253860473633,

+        "y": 909.2538199424744,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "54d15a4c.97ff74"

+            ]

+        ]

+    },

+    {

+        "id": "54d15a4c.97ff74",

+        "type": "set",

+        "name": "set prop.topology",

+        "xml": "<set>\n<parameter name='prop.topology' 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": 2280.254608154297,

+        "y": 909.2538783550262,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "a9b33c49.c3bcd",

+        "type": "set",

+        "name": "set prop.lan.bridgeDomainId",

+        "xml": "<set>\n<parameter name='prop.lan.bridgeDomainId' value='`$bridgeDomainResp.success[0].id`' />\n",

+        "comments": "",

+        "x": 1861.254005432129,

+        "y": 1812.7539238929749,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "e96cc964.57ebf8",

+        "type": "set",

+        "name": "increment lan-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": 677.5039138793945,

+        "y": 2023.2538995742798,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "4c96c619.458ff8",

+        "type": "set",

+        "name": "increment lan-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": 677.50390625,

+        "y": 2110.25390625,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "d5b15ee0.c0558",

+        "type": "set",

+        "name": "set bridge-domainId 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='bridgeDomainId' />\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.bridgeDomainId`' />\n",

+        "comments": "",

+        "x": 690,

+        "y": 2154,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "81047830.c65458",

+        "type": "set",

+        "name": "increment lan-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": 671.1830062866211,

+        "y": 2197.2225341796875,

+        "z": "8f678717.6ce918",

+        "wires": []

+    },

+    {

+        "id": "f8bad303.dbe7d",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 875,

+        "y": 666.6666870117188,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "8c2d8bf6.5cda78"

+            ]

+        ]

+    },

+    {

+        "id": "8c2d8bf6.5cda78",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length >= '0'`\">\n\n<!--switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\"-->\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 708.7500152587891,

+        "y": 790.9167098999023,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "fd56a113.86307"

+            ]

+        ]

+    },

+    {

+        "id": "fd56a113.86307",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 877,

+        "y": 734.6666870117188,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "341d8e5.7253272"

+            ]

+        ]

+    },

+    {

+        "id": "341d8e5.7253272",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1024.2500305175781,

+        "y": 733.416708946228,

+        "z": "8f678717.6ce918",

+        "wires": [

+            [

+                "752f257f.d5098c"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.json
new file mode 100644
index 0000000..cf08b57
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.json
@@ -0,0 +1,577 @@
+[

+    {

+        "id": "3563dba1.d09964",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 431.0104064941406,

+        "y": 355.1628177165985,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "5ddfe38c.3aa86c",

+                "5a21a65a.69db48",

+                "cc416a47.18fef8",

+                "be6d233d.af70d",

+                "a80fd5f3.86e118",

+                "d2ca1c0d.40fdc",

+                "768823c2.5ac1cc",

+                "94ccf971.360848",

+                "4d1e575f.68db78",

+                "6992ab61.1740b4",

+                "494976dc.41e7f8",

+                "40bceee5.21d0e",

+                "c03fc9ca.e96578",

+                "742cd454.7acabc",

+                "e5ba2a4b.c03198"

+            ]

+        ]

+    },

+    {

+        "id": "5ddfe38c.3aa86c",

+        "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": 777.2605667114258,

+        "y": 337.82948660850525,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "598a5263.1331ac"

+            ]

+        ]

+    },

+    {

+        "id": "598a5263.1331ac",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 992.0389099121094,

+        "y": 335.38507056236267,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "76ce96e5.bf7bc8",

+                "55b2b4f6.971cdc"

+            ]

+        ]

+    },

+    {

+        "id": "76ce96e5.bf7bc8",

+        "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": 1188.2951126098633,

+        "y": 313.13320899009705,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "55b2b4f6.971cdc",

+        "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": 1157.7395401000977,

+        "y": 350.13332533836365,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    },

+    {

+        "id": "ba810934.3ff408",

+        "type": "comment",

+        "name": "Take the parameter names by removing prefix",

+        "info": "",

+        "comments": "",

+        "x": 815.2607688903809,

+        "y": 294.4961540699005,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    },

+    {

+        "id": "cc416a47.18fef8",

+        "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": 756.1971817016602,

+        "y": 496.32575964927673,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    },

+    {

+        "id": "5a21a65a.69db48",

+        "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": 763.1967697143555,

+        "y": 391.3170254230499,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    },

+    {

+        "id": "768823c2.5ac1cc",

+        "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.vf-id`' />\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": 768.363525390625,

+        "y": 604.4963715076447,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    },

+    {

+        "id": "94ccf971.360848",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-id' value='`$prop.vf-id`'/> \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": 756.5104503631592,

+        "y": 656.0002176761627,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    },

+    {

+        "id": "4d1e575f.68db78",

+        "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.vf-id' >\n<parameter name=\"lan-port-config-id\" value=\"`$prop.vf-id`\" />\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-uuid`' />\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.vf-id + '/vf-module-data/'` \" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 811.5104293823242,

+        "y": 748.5002000331879,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6992ab61.1740b4",

+        "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=\"lan-port-config\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/lan-port-configs/lan-port-config/' + $prop.vf-id`\" />\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.vf-id`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 771.5103454589844,

+        "y": 795.5001881122589,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "494976dc.41e7f8",

+        "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": 722.2328910827637,

+        "y": 842.6740472316742,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    },

+    {

+        "id": "be6d233d.af70d",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 732.4309749603271,

+        "y": 44.66670227050781,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "a4292aa6.75e0c8"

+            ]

+        ]

+    },

+    {

+        "id": "a4292aa6.75e0c8",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 919.0976543426514,

+        "y": 44,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "f5b1afdf.f5a4e"

+            ]

+        ]

+    },

+    {

+        "id": "f5b1afdf.f5a4e",

+        "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": 1100.7642803192139,

+        "y": 44,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    },

+    {

+        "id": "a80fd5f3.86e118",

+        "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": 770.6809968948364,

+        "y": 221.66669631004333,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "c9c58b29.2dfa58",

+                "8390bbc5.321ad8"

+            ]

+        ]

+    },

+    {

+        "id": "c9c58b29.2dfa58",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1001.6810073852539,

+        "y": 197.66669344902039,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "dc09b12c.dd3fe"

+            ]

+        ]

+    },

+    {

+        "id": "8390bbc5.321ad8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1001.6810073852539,

+        "y": 237.66669344902039,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "3643e6d4.7f439a"

+            ]

+        ]

+    },

+    {

+        "id": "dc09b12c.dd3fe",

+        "type": "set",

+        "name": "set vf-index",

+        "xml": "<set>\n<parameter name='vf-index' value='0' />\n",

+        "comments": "",

+        "x": 1144.181007385254,

+        "y": 197.66669344902039,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    },

+    {

+        "id": "3643e6d4.7f439a",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1146.0380516052246,

+        "y": 237.6032054424286,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "38575d2d.74e912",

+                "98424ce4.789a1"

+            ]

+        ]

+    },

+    {

+        "id": "98424ce4.789a1",

+        "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": 1298.7365264892578,

+        "y": 207.22230413509533,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    },

+    {

+        "id": "38575d2d.74e912",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1355.1650314331055,

+        "y": 260.444433927536,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "6f409c8c.594684"

+            ]

+        ]

+    },

+    {

+        "id": "12f39766.bab9b9",

+        "type": "comment",

+        "name": "make sure this network doesn't exist already",

+        "info": "",

+        "comments": "",

+        "x": 1578.815761566162,

+        "y": 218.69849133491516,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    },

+    {

+        "id": "6f409c8c.594684",

+        "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": 1630.4507522583008,

+        "y": 260.0159366130829,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "34043894.3a1738"

+            ]

+        ]

+    },

+    {

+        "id": "34043894.3a1738",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1531.180950164795,

+        "y": 318.58736777305603,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "e047ad76.2601d"

+            ]

+        ]

+    },

+    {

+        "id": "e047ad76.2601d",

+        "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": 1678.931053161621,

+        "y": 318.44455984188244,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    },

+    {

+        "id": "d2ca1c0d.40fdc",

+        "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": 802.0104446411133,

+        "y": 444.1628510951996,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "40bceee5.21d0e",

+        "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": 773.0104141235352,

+        "y": 698.1667354106903,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    },

+    {

+        "id": "53017383.9c8f0c",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 100.01041412353516,

+        "y": 71.16673541069031,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "b88f4175.84605"

+            ]

+        ]

+    },

+    {

+        "id": "b88f4175.84605",

+        "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": 214.51041221618652,

+        "y": 178.16672682762146,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "9de4488f.4b0818"

+            ]

+        ]

+    },

+    {

+        "id": "9de4488f.4b0818",

+        "type": "method",

+        "name": "sdwan-vf-operation-lanport-create",

+        "xml": "<method rpc='sdwan-vf-operation-lanport-create' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 213.51041221618652,

+        "y": 278.16672682762146,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "3563dba1.d09964"

+            ]

+        ]

+    },

+    {

+        "id": "c03fc9ca.e96578",

+        "type": "execute",

+        "name": "execute generate-vf-id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.vf-id\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 755.0104598999023,

+        "y": 552.6667287349701,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "742cd454.7acabc",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 722.0103950500488,

+        "y": 99.16673731803894,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "3ed11716.45d018"

+            ]

+        ]

+    },

+    {

+        "id": "3ed11716.45d018",

+        "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": 973.0104904174805,

+        "y": 94.83335781097412,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "6c9c624d.566c8c"

+            ]

+        ]

+    },

+    {

+        "id": "6c9c624d.566c8c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1191.343807220459,

+        "y": 96.83333969116211,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "acf4ddfd.c60e5"

+            ]

+        ]

+    },

+    {

+        "id": "acf4ddfd.c60e5",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1344.6769790649414,

+        "y": 96.83336067199707,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    },

+    {

+        "id": "e5ba2a4b.c03198",

+        "type": "switchNode",

+        "name": "switch vnf-index",

+        "xml": "<switch test='`$vnf-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 736.0104141235352,

+        "y": 160.1667354106903,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "5ddfe829.c49618"

+            ]

+        ]

+    },

+    {

+        "id": "5ddfe829.c49618",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 898.0104598999023,

+        "y": 159.166734457016,

+        "z": "ad703000.c2e0d",

+        "wires": [

+            [

+                "8cdafc69.f1e95"

+            ]

+        ]

+    },

+    {

+        "id": "8cdafc69.f1e95",

+        "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 id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1047.2605514526367,

+        "y": 156.94461226463318,

+        "z": "ad703000.c2e0d",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.json
new file mode 100644
index 0000000..f299e17
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.json
@@ -0,0 +1,2271 @@
+[

+    {

+        "id": "35bbf866.78a5e8",

+        "type": "method",

+        "name": "method sdwan-vf-operation-lanport-deactivate",

+        "xml": "<method rpc='sdwan-vf-operation-lanport-deactivate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 249.00390625,

+        "y": 220.58633995056152,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "25755a25.25e4a6"

+            ]

+        ]

+    },

+    {

+        "id": "99c65fff.e6457",

+        "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": 646.0039138793945,

+        "y": 410.00000286102295,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "9fd4d822.1e9bc8",

+                "5a6df27a.b5c33c",

+                "6ea0353d.247c0c"

+            ]

+        ]

+    },

+    {

+        "id": "4a63efcc.f1d8a",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 168.00391006469727,

+        "y": 62.99999809265137,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "7d33035d.b0824c"

+            ]

+        ]

+    },

+    {

+        "id": "7d33035d.b0824c",

+        "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": 237.28961181640625,

+        "y": 126.23810768127441,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "35bbf866.78a5e8"

+            ]

+        ]

+    },

+    {

+        "id": "25755a25.25e4a6",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 249.6705780029297,

+        "y": 476.6667070388794,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "cfe3e61f.155e78",

+                "e5e47d7b.5e2bd",

+                "99c65fff.e6457",

+                "f0379b33.897b78",

+                "b3b4dc97.18506",

+                "92ac4604.5a24c8",

+                "5d312c55.693bf4",

+                "b6bd8ed3.859c2",

+                "b9a7fd1a.5768b",

+                "e69ff5d3.246378",

+                "dacb223a.3b862",

+                "df8f9116.6cb59",

+                "3e7ff409.79880c",

+                "f569daa2.8f9b28",

+                "3dfde9c2.fe1616",

+                "8212e1ef.d576a",

+                "d319cb18.70bf18",

+                "4e34e7e4.f09c28",

+                "d52b4c36.b4383",

+                "898196c1.4be1c8",

+                "84308c74.6696",

+                "5399251a.d1c53c",

+                "7ffab63e.0ceec8",

+                "a8ac6552.309118"

+            ]

+        ]

+    },

+    {

+        "id": "e5e47d7b.5e2bd",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 591.0352668762207,

+        "y": 229.2691307067871,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "abb41723.436e98"

+            ]

+        ]

+    },

+    {

+        "id": "cfe3e61f.155e78",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 602.0038986206055,

+        "y": 167.99999141693115,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "5ecc4eea.38b52"

+            ]

+        ]

+    },

+    {

+        "id": "5ecc4eea.38b52",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 782.0038795471191,

+        "y": 166.99998092651367,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "640fd5ea.dc5b5c"

+            ]

+        ]

+    },

+    {

+        "id": "640fd5ea.dc5b5c",

+        "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": 931.4326057434082,

+        "y": 168.1428985595703,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "abb41723.436e98",

+        "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": 820.0038948059082,

+        "y": 229.99998712539673,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "b2038cfb.be4ff"

+            ]

+        ]

+    },

+    {

+        "id": "b2038cfb.be4ff",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1035.0038795471191,

+        "y": 227.99998092651367,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "d5665599.ce1f08"

+            ]

+        ]

+    },

+    {

+        "id": "d5665599.ce1f08",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1199.0038795471191,

+        "y": 222.99998092651367,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "5a6df27a.b5c33c",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 897.0039176940918,

+        "y": 401.00000381469727,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "6f3d1b55.996ac4"

+            ]

+        ]

+    },

+    {

+        "id": "9fd4d822.1e9bc8",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 893.0039176940918,

+        "y": 347.0000042915344,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "6f3d1b55.996ac4"

+            ]

+        ]

+    },

+    {

+        "id": "6f3d1b55.996ac4",

+        "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": 1065.0038871765137,

+        "y": 363.0000047683716,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "6ea0353d.247c0c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 853.00390625,

+        "y": 466.99999809265137,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "c106227.8a742e"

+            ]

+        ]

+    },

+    {

+        "id": "71fb1ae1.5a6d94",

+        "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": 1207.003921508789,

+        "y": 465.00001204013824,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "c106227.8a742e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1014.0039520263672,

+        "y": 463.9999895095825,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "71fb1ae1.5a6d94",

+                "53e6b05c.c8062"

+            ]

+        ]

+    },

+    {

+        "id": "53e6b05c.c8062",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1226.0039367675781,

+        "y": 514.0000104904175,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "22133afc.a97b96"

+            ]

+        ]

+    },

+    {

+        "id": "22133afc.a97b96",

+        "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": 1469.00390625,

+        "y": 512.9999980926514,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "c42cf16b.ee598"

+            ]

+        ]

+    },

+    {

+        "id": "c42cf16b.ee598",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1667.0039348602295,

+        "y": 500.0000047683716,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "52618d69.6a0a14"

+            ]

+        ]

+    },

+    {

+        "id": "52618d69.6a0a14",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1819.00390625,

+        "y": 501.99999809265137,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "8df43c37.e421c",

+                "e47f4a77.f0aa38",

+                "37f7f248.465a3e"

+            ]

+        ]

+    },

+    {

+        "id": "8df43c37.e421c",

+        "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": 2047.004020690918,

+        "y": 444.00000190734863,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "e47f4a77.f0aa38",

+        "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": 2051.004020690918,

+        "y": 498.00000190734863,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "f0379b33.897b78",

+        "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": 563.0041961669922,

+        "y": 2464.501329421997,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "37f7f248.465a3e",

+        "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": 2096.459159851074,

+        "y": 549.0105247497559,

+        "z": "53bd9180.45e08",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dacb223a.3b862",

+        "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": 648.0079498291016,

+        "y": 1490.5041389465332,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "c940f649.2f6038",

+                "e19a27.d3ada5d8",

+                "79fc4361.409b6c"

+            ]

+        ]

+    },

+    {

+        "id": "c940f649.2f6038",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 892.0080108642578,

+        "y": 1454.5041389465332,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "81501425.48b828"

+            ]

+        ]

+    },

+    {

+        "id": "e19a27.d3ada5d8",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 894.498893737793,

+        "y": 1490.0781755447388,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "d5f98dd5.bc10f"

+            ]

+        ]

+    },

+    {

+        "id": "79fc4361.409b6c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 889.831901550293,

+        "y": 1526.4115343093872,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "46ccd480.5b967c"

+            ]

+        ]

+    },

+    {

+        "id": "46ccd480.5b967c",

+        "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": 1043.604393005371,

+        "y": 1523.8506212234497,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "d5f98dd5.bc10f",

+        "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": 1040.0702896118164,

+        "y": 1488.363862991333,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "81501425.48b828",

+        "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": 1052.5081214904785,

+        "y": 1452.5040788650513,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "df8f9116.6cb59",

+        "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": 661.9461822509766,

+        "y": 1593.6252326965332,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "75ba6457.55e20c",

+                "7c1891ac.de4b4"

+            ]

+        ]

+    },

+    {

+        "id": "75ba6457.55e20c",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 896.9463081359863,

+        "y": 1579.6252212524414,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "2888a6db.27655a"

+            ]

+        ]

+    },

+    {

+        "id": "7c1891ac.de4b4",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 896.1963081359863,

+        "y": 1615.2681283950806,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "8ca3ace6.8f2fa"

+            ]

+        ]

+    },

+    {

+        "id": "8ca3ace6.8f2fa",

+        "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": 1044.9463157653809,

+        "y": 1616.0182104110718,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "2888a6db.27655a",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1038.9463157653809,

+        "y": 1578.6252222061157,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "f569daa2.8f9b28",

+        "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": 675.0353012084961,

+        "y": 1951.0783553123474,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "4d91b121.93b57",

+                "75531b9b.e105c4"

+            ]

+        ]

+    },

+    {

+        "id": "4d91b121.93b57",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 941.0353107452393,

+        "y": 1965.0785331726074,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "dd75e498.a44248"

+            ]

+        ]

+    },

+    {

+        "id": "75531b9b.e105c4",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 941.0353107452393,

+        "y": 1927.0783686637878,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "e4666bb9.655488"

+            ]

+        ]

+    },

+    {

+        "id": "e4666bb9.655488",

+        "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": 1085.03564453125,

+        "y": 1926.0783681869507,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "dd75e498.a44248",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1088.035322189331,

+        "y": 1966.078372001648,

+        "z": "53bd9180.45e08",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e75609bc.a3de38",

+        "type": "comment",

+        "name": "Delete port",

+        "info": "",

+        "comments": "",

+        "x": 652.7012023925781,

+        "y": 1911.522358417511,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "3e7ff409.79880c",

+        "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": 636.7012176513672,

+        "y": 1660.1888313293457,

+        "z": "53bd9180.45e08",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f13eba50.3d1838",

+        "type": "execute",

+        "name": "execute RestApiCallNode bridge domain delete",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdlan-bridge-domain-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/bridge-domains/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=\"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": 1080.6854934692383,

+        "y": 1843.1889221668243,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "bc2da0e7.1ce4a",

+                "69e42e4a.84408"

+            ]

+        ]

+    },

+    {

+        "id": "bc2da0e7.1ce4a",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1401.6855201721191,

+        "y": 1860.1892426013947,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "b57ce49e.88b5a8"

+            ]

+        ]

+    },

+    {

+        "id": "69e42e4a.84408",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1404.685546875,

+        "y": 1825.1890242099762,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "9387ae8d.090e"

+            ]

+        ]

+    },

+    {

+        "id": "9387ae8d.090e",

+        "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": 1607.685935974121,

+        "y": 1821.1891314983368,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "b57ce49e.88b5a8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1608.6855010986328,

+        "y": 1856.1889979839325,

+        "z": "53bd9180.45e08",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4dae46d7.5c90d8",

+        "type": "comment",

+        "name": "Create bridge domain",

+        "info": "",

+        "comments": "",

+        "x": 1024.3513870239258,

+        "y": 1809.6331479549408,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "b3b4dc97.18506",

+        "type": "switchNode",

+        "name": "switch portSwitch",

+        "xml": "<switch test=\"`$prop.lan.portSwitch == 'layer2-port'`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 589.463062286377,

+        "y": 1858.8556113243103,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "20eebbbe.c7cef4"

+            ]

+        ]

+    },

+    {

+        "id": "20eebbbe.c7cef4",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 777.4629898071289,

+        "y": 1856.966938495636,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "f13eba50.3d1838"

+            ]

+        ]

+    },

+    {

+        "id": "92ac4604.5a24c8",

+        "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": 633.0079803466797,

+        "y": 1710.754201889038,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "83755f92.869b3",

+                "d8dc34d5.644498"

+            ]

+        ]

+    },

+    {

+        "id": "d8dc34d5.644498",

+        "type": "failure",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 834.007999420166,

+        "y": 1688.7541933059692,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "800919b7.c0b4e8"

+            ]

+        ]

+    },

+    {

+        "id": "83755f92.869b3",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 834.0080032348633,

+        "y": 1729.7541971206665,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "8fbc1d19.f0f92"

+            ]

+        ]

+    },

+    {

+        "id": "800919b7.c0b4e8",

+        "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": 1031.0080184936523,

+        "y": 1686.7541933059692,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "8fbc1d19.f0f92",

+        "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": 989.0080108642578,

+        "y": 1726.7541961669922,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "535f90ba.81c84",

+        "type": "comment",

+        "name": "TODO: split ip/mask",

+        "info": "",

+        "comments": "",

+        "x": 1002.0176239013672,

+        "y": 1882.9343676567078,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "3dfde9c2.fe1616",

+        "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": 673.7793731689453,

+        "y": 1783.8751149177551,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "99c4d00e.08671",

+                "a2e86398.f1731"

+            ]

+        ]

+    },

+    {

+        "id": "a2e86398.f1731",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 942.7794036865234,

+        "y": 1770.8750872612,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "af4f8529.170688"

+            ]

+        ]

+    },

+    {

+        "id": "99c4d00e.08671",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 939.7793769836426,

+        "y": 1805.8753056526184,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "5fda12d3.42df1c"

+            ]

+        ]

+    },

+    {

+        "id": "af4f8529.170688",

+        "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": 1095.77978515625,

+        "y": 1766.875313282013,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "5fda12d3.42df1c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1086.7793579101562,

+        "y": 1806.8750615119934,

+        "z": "53bd9180.45e08",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5d312c55.693bf4",

+        "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": 588.2896728515625,

+        "y": 755.333324432373,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "8212e1ef.d576a",

+        "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": 627.3210525512695,

+        "y": 2405.031599998474,

+        "z": "53bd9180.45e08",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b6bd8ed3.859c2",

+        "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": 615.0040740966797,

+        "y": 2257.2531147003174,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "b9a7fd1a.5768b",

+        "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": 649.3072738647461,

+        "y": 2301.0562238693237,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "e69ff5d3.246378",

+        "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": 616.307300567627,

+        "y": 2354.0562658309937,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "d319cb18.70bf18",

+        "type": "switchNode",

+        "name": "switch vnf-index",

+        "xml": "<switch test='`$vnf-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 605.00390625,

+        "y": 295.00390434265137,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "ef16bfb5.32205"

+            ]

+        ]

+    },

+    {

+        "id": "ef16bfb5.32205",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 767.0039520263672,

+        "y": 294.00390338897705,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "533d6edf.10cb2"

+            ]

+        ]

+    },

+    {

+        "id": "533d6edf.10cb2",

+        "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 id not found in service-data\" />\n",

+        "comments": "",

+        "x": 916.2540435791016,

+        "y": 291.78178119659424,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "4e34e7e4.f09c28",

+        "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": 613.0039138793945,

+        "y": 339.00391387939453,

+        "z": "53bd9180.45e08",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "77c41cd6.2372d4",

+        "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": 1353.0002746582031,

+        "y": 673.9999980926514,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "21611c6f.dff1a4"

+            ]

+        ]

+    },

+    {

+        "id": "6125a2b2.49651c",

+        "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",

+        "comments": "",

+        "outputs": 1,

+        "x": 1243.00048828125,

+        "y": 737.0001811981201,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "68612c50.e30414"

+            ]

+        ]

+    },

+    {

+        "id": "21611c6f.dff1a4",

+        "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": 1639.0001220703125,

+        "y": 676.0000820159912,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "d87e69ee.1345e8"

+            ]

+        ]

+    },

+    {

+        "id": "68612c50.e30414",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1463.0002117156982,

+        "y": 738.0001888275146,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "edcb51f3.2237"

+            ]

+        ]

+    },

+    {

+        "id": "960703be.78273",

+        "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": 1889.0002899169922,

+        "y": 748.0000529289246,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "7bbeeb0c.35b8f4"

+            ]

+        ]

+    },

+    {

+        "id": "7bbeeb0c.35b8f4",

+        "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": 2197.0005645751953,

+        "y": 731.000020980835,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "e133b219.33252"

+            ]

+        ]

+    },

+    {

+        "id": "e133b219.33252",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2406.000602722168,

+        "y": 733.0000133514404,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "e0137def.ca4f7"

+            ]

+        ]

+    },

+    {

+        "id": "cfb82eaa.9abd5",

+        "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": 2779.000629425049,

+        "y": 669.0001910924911,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "d87e69ee.1345e8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1868.2461585998535,

+        "y": 673.9998292922974,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "6125a2b2.49651c"

+            ]

+        ]

+    },

+    {

+        "id": "e0137def.ca4f7",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2567.2461738586426,

+        "y": 697.7498325109482,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "cfb82eaa.9abd5",

+                "d20ef7d4.f5f0b8"

+            ]

+        ]

+    },

+    {

+        "id": "d20ef7d4.f5f0b8",

+        "type": "set",

+        "name": "set site-vnf-index",

+        "xml": "<set>\n<parameter name='site-vnf-index' value='`$vnfidx`' />\n",

+        "comments": "",

+        "x": 2776.24609375,

+        "y": 715.749822974205,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "b9bc4317.89e3e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1124.496078491211,

+        "y": 675.9998455047607,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "77c41cd6.2372d4"

+            ]

+        ]

+    },

+    {

+        "id": "b2d8abb3.217c58",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 972.24609375,

+        "y": 679.2498235702515,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "b9bc4317.89e3e"

+            ]

+        ]

+    },

+    {

+        "id": "f078c09.b7bad4",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length >= '0'`\">\n\n<!--switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\"-->\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 866.2460784912109,

+        "y": 628.2498235702515,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "b2d8abb3.217c58"

+            ]

+        ]

+    },

+    {

+        "id": "c16816f9.ad7738",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 666.4961013793945,

+        "y": 588.99982213974,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "f078c09.b7bad4"

+            ]

+        ]

+    },

+    {

+        "id": "d52b4c36.b4383",

+        "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": 607,

+        "y": 540.9999599456787,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "c16816f9.ad7738"

+            ]

+        ]

+    },

+    {

+        "id": "edcb51f3.2237",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1630.6666259765625,

+        "y": 743.9999980926514,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "960703be.78273",

+                "4982b8e3.7bf018"

+            ]

+        ]

+    },

+    {

+        "id": "4982b8e3.7bf018",

+        "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": 1838.666603088379,

+        "y": 710.9999837875366,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "76c5dda5.a20724",

+        "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": 1204.000015258789,

+        "y": 984.9999885559082,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "8cda715e.63dfe"

+            ]

+        ]

+    },

+    {

+        "id": "54e7e0d7.ec4c7",

+        "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": 849.9998550415039,

+        "y": 952.0000286102295,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "df9b68f3.e58818"

+            ]

+        ]

+    },

+    {

+        "id": "8cda715e.63dfe",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1425.9999313354492,

+        "y": 985.0000700950623,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "3b6a7f.d02b6582"

+            ]

+        ]

+    },

+    {

+        "id": "7bec1948.27ddc8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2978.2502937316895,

+        "y": 1072.500097155571,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "d5a6d636.c92678"

+            ]

+        ]

+    },

+    {

+        "id": "b505ce84.b2b46",

+        "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[$sidx].value`' />\n",

+        "comments": "",

+        "x": 3369.2509765625,

+        "y": 1025.5001991987228,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "d5a6d636.c92678",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3137.5004844665527,

+        "y": 1068.0001372098923,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "b505ce84.b2b46",

+                "4da0fe6e.eebe4",

+                "17807948.b29547"

+            ]

+        ]

+    },

+    {

+        "id": "73df7c27.84ca64",

+        "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": 1001.2816162109375,

+        "y": 1147.3292617797852,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "acb8bfa5.0f71a"

+            ]

+        ]

+    },

+    {

+        "id": "df9b68f3.e58818",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 939.6147727966309,

+        "y": 1035.3293371200562,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "76c5dda5.a20724"

+            ]

+        ]

+    },

+    {

+        "id": "acb8bfa5.0f71a",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1234.9482421875,

+        "y": 1165.3293838500977,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "afc867ac.84f698"

+            ]

+        ]

+    },

+    {

+        "id": "afc867ac.84f698",

+        "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": 1478.1981353759766,

+        "y": 1178.8293342590332,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "3989a47c.b3eb0c"

+            ]

+        ]

+    },

+    {

+        "id": "8e8a391c.6736c8",

+        "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": 1917.1982345581055,

+        "y": 1230.8293769359589,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "837b3b44.ef6fa8"

+            ]

+        ]

+    },

+    {

+        "id": "837b3b44.ef6fa8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2067.9481887817383,

+        "y": 1232.3292925357819,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "f9c5d7e8.6fe0f8"

+            ]

+        ]

+    },

+    {

+        "id": "f9c5d7e8.6fe0f8",

+        "type": "set",

+        "name": "set prop.vpn1Id",

+        "xml": "<set>\n<parameter name='prop.vpnId' 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": 2241.9489364624023,

+        "y": 1232.3293509483337,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "4da0fe6e.eebe4",

+        "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": 3405.2822265625,

+        "y": 1080.3294657468796,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "17807948.b29547",

+        "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": 3436.282051086426,

+        "y": 1130.3294161558151,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "f9ac8f47.1e9e6",

+        "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": 2147.948272705078,

+        "y": 968.329355597496,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "5c967566.19521c"

+            ]

+        ]

+    },

+    {

+        "id": "5c967566.19521c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2311.9482765197754,

+        "y": 968.329355597496,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "3f851d36.3fe612"

+            ]

+        ]

+    },

+    {

+        "id": "3f851d36.3fe612",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2499.948444366455,

+        "y": 953.3293546438217,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "45f33203.c0930c",

+                "7bf54e32.503a7",

+                "8e7a27c3.580478"

+            ]

+        ]

+    },

+    {

+        "id": "7bf54e32.503a7",

+        "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": 2694.948574066162,

+        "y": 914.3293460607529,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "777af33b.674edc"

+            ]

+        ]

+    },

+    {

+        "id": "45f33203.c0930c",

+        "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].value == 'dsvpn-hub'`\">\n    \n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2691.9486808776855,

+        "y": 969.3293615579605,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "caa4c354.afd2"

+            ]

+        ]

+    },

+    {

+        "id": "fdf6d987.e37e68",

+        "type": "set",

+        "name": "set spoke role",

+        "xml": "<set>\n<parameter name='prop.role' value=\"spoke\" />\n",

+        "comments": "",

+        "x": 3024.9486961364746,

+        "y": 908.32939183712,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "17e33b60.b53685",

+        "type": "set",

+        "name": "set hub role",

+        "xml": "<set>\n<parameter name='prop.role' value=\"hub\" />\n",

+        "comments": "",

+        "x": 3023.948455810547,

+        "y": 963.3293756246567,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "777af33b.674edc",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2864.948543548584,

+        "y": 909.9960206747055,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "fdf6d987.e37e68"

+            ]

+        ]

+    },

+    {

+        "id": "caa4c354.afd2",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2868.948543548584,

+        "y": 964.9960206747055,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "17e33b60.b53685"

+            ]

+        ]

+    },

+    {

+        "id": "709b059b.1a3b4c",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 707.606761932373,

+        "y": 1287.9920058250427,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "82979871.cd6fd8"

+            ]

+        ]

+    },

+    {

+        "id": "82979871.cd6fd8",

+        "type": "switchNode",

+        "name": "switch ActivateSDWANSiteInstance",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$site-vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANSiteInstance'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 971.9920043945312,

+        "y": 1237.6626572608948,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "f8c88c15.90092"

+            ]

+        ]

+    },

+    {

+        "id": "f8c88c15.90092",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1193.9919204711914,

+        "y": 1237.6627388000488,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "1c164ecd.76b921"

+            ]

+        ]

+    },

+    {

+        "id": "1c164ecd.76b921",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$site-vnf-index].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": 1275.241928100586,

+        "y": 1312.1627402305603,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "c8fa5a58.80db78"

+            ]

+        ]

+    },

+    {

+        "id": "c8fa5a58.80db78",

+        "type": "block",

+        "name": "block atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1492.6070938110352,

+        "y": 1312.9920048713684,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "aa284cfd.de3c"

+            ]

+        ]

+    },

+    {

+        "id": "aa284cfd.de3c",

+        "type": "switchNode",

+        "name": "switch siteId",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$site-vnf-index].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": 1658.242286682129,

+        "y": 1319.162847518921,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "f702cf2b.aacec"

+            ]

+        ]

+    },

+    {

+        "id": "f702cf2b.aacec",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1835.2423057556152,

+        "y": 1322.162687778473,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "b76df1d4.d74b6"

+            ]

+        ]

+    },

+    {

+        "id": "b76df1d4.d74b6",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1994.4924964904785,

+        "y": 1317.6627278327942,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "b312ede7.48d31"

+            ]

+        ]

+    },

+    {

+        "id": "b312ede7.48d31",

+        "type": "set",

+        "name": "set prop.attach.siteId",

+        "xml": "<set>\n<parameter name='prop.siteId' value='`$service-data.vnfs.vnf[$site-vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />\n",

+        "comments": "",

+        "x": 2219.2428131103516,

+        "y": 1296.162739276886,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "3989a47c.b3eb0c",

+        "type": "block",

+        "name": "block atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1716.9918365478516,

+        "y": 1179.3293342590332,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "8e8a391c.6736c8",

+                "d0a786b4.a86d48",

+                "56d8edb1.dcf524"

+            ]

+        ]

+    },

+    {

+        "id": "d0a786b4.a86d48",

+        "type": "switchNode",

+        "name": "switch name",

+        "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 == 'name'`\">\n    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1917.991844177246,

+        "y": 1179.3293232917786,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "3ed84db0.ad5f32"

+            ]

+        ]

+    },

+    {

+        "id": "3ed84db0.ad5f32",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2068.741798400879,

+        "y": 1180.8292388916016,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "8a23eec9.2e81d"

+            ]

+        ]

+    },

+    {

+        "id": "8a23eec9.2e81d",

+        "type": "set",

+        "name": "set prop.name",

+        "xml": "<set>\n<parameter name='prop.name' 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": 2242.742546081543,

+        "y": 1180.8292973041534,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "506103c9.e594dc",

+        "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": 1910.2501907348633,

+        "y": 967.5001720190048,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "f9ac8f47.1e9e6"

+            ]

+        ]

+    },

+    {

+        "id": "6f32456b.72586c",

+        "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[$sidx].name == 'siteId'`\">\n    \n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2801.250274658203,

+        "y": 1069.500256896019,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "7bec1948.27ddc8"

+            ]

+        ]

+    },

+    {

+        "id": "3b6a7f.d02b6582",

+        "type": "block",

+        "name": "block atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1624.5231094360352,

+        "y": 993.0272792577744,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "506103c9.e594dc"

+            ]

+        ]

+    },

+    {

+        "id": "8e7a27c3.580478",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='sidx' 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": 2554.5228729248047,

+        "y": 1063.02727496624,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "6f32456b.72586c"

+            ]

+        ]

+    },

+    {

+        "id": "56d8edb1.dcf524",

+        "type": "switchNode",

+        "name": "switch topology",

+        "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 == 'topology'`\">\n    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1916.495735168457,

+        "y": 1119.7499059438705,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "d01e6e11.a971d"

+            ]

+        ]

+    },

+    {

+        "id": "d01e6e11.a971d",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2067.24568939209,

+        "y": 1121.2498215436935,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "6ddbdfd6.cc626"

+            ]

+        ]

+    },

+    {

+        "id": "6ddbdfd6.cc626",

+        "type": "set",

+        "name": "set prop.topology",

+        "xml": "<set>\n<parameter name='prop.topology' 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": 2241.246437072754,

+        "y": 1121.2498799562454,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "84308c74.6696",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$site-vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 605.9918594360352,

+        "y": 1191.662724018097,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "709b059b.1a3b4c"

+            ]

+        ]

+    },

+    {

+        "id": "898196c1.4be1c8",

+        "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": 600.9997100830078,

+        "y": 882.9999084472656,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "1312e19.ff3371e"

+            ]

+        ]

+    },

+    {

+        "id": "1312e19.ff3371e",

+        "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": 862.0000152587891,

+        "y": 888.9999885559082,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "e5973ada.69f578"

+            ]

+        ]

+    },

+    {

+        "id": "e5973ada.69f578",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1066.0001983642578,

+        "y": 891.9999885559082,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "54e7e0d7.ec4c7"

+            ]

+        ]

+    },

+    {

+        "id": "3b1cdfc0.3a554",

+        "type": "comment",

+        "name": "if device-name match with the incomming device-name,  sites in this service vnf should not be included",

+        "info": "",

+        "comments": "",

+        "x": 1016.0000152587891,

+        "y": 846.9999885559082,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "5399251a.d1c53c",

+        "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.vpnId + '/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": 658.5039520263672,

+        "y": 2143.5038986206055,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "fe03e503.9b1f18",

+                "3b9440a6.e7886"

+            ]

+        ]

+    },

+    {

+        "id": "3b9440a6.e7886",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 919.5038585662842,

+        "y": 2170.503242611885,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "818c55d3.807c68"

+            ]

+        ]

+    },

+    {

+        "id": "818c55d3.807c68",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1089.503797531128,

+        "y": 2173.503242611885,

+        "z": "53bd9180.45e08",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fe431e88.b86a8",

+        "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": 1089.5039196014404,

+        "y": 2129.503242611885,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "fe03e503.9b1f18",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 922.5037975311279,

+        "y": 2129.503242611885,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "fe431e88.b86a8"

+            ]

+        ]

+    },

+    {

+        "id": "a8ac6552.309118",

+        "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": 640.5022888183594,

+        "y": 2053.0029220581055,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "ee15b935.f63c98",

+                "c139232f.6bd6e"

+            ]

+        ]

+    },

+    {

+        "id": "c139232f.6bd6e",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 863.5022029876709,

+        "y": 2077.0028907060623,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "fbcee124.bb586"

+            ]

+        ]

+    },

+    {

+        "id": "fbcee124.bb586",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1033.5021419525146,

+        "y": 2080.0028907060623,

+        "z": "53bd9180.45e08",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8f294b6c.2dfef8",

+        "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": 1033.5022640228271,

+        "y": 2036.0028907060623,

+        "z": "53bd9180.45e08",

+        "wires": []

+    },

+    {

+        "id": "ee15b935.f63c98",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 866.5021419525146,

+        "y": 2036.0028907060623,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "8f294b6c.2dfef8"

+            ]

+        ]

+    },

+    {

+        "id": "7ffab63e.0ceec8",

+        "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": 593.75390625,

+        "y": 1018.7539043426514,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "f2ff74c6.2d66c8"

+            ]

+        ]

+    },

+    {

+        "id": "f2ff74c6.2d66c8",

+        "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": 728.7540435791016,

+        "y": 1087.754051208496,

+        "z": "53bd9180.45e08",

+        "wires": [

+            [

+                "73df7c27.84ca64"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.json
new file mode 100644
index 0000000..74c64fd
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.json
@@ -0,0 +1,730 @@
+[

+    {

+        "id": "ec163be6.3f3848",

+        "type": "method",

+        "name": "method sdwan-vf-operation-lanport-delete",

+        "xml": "<method rpc='sdwan-vf-operation-lanport-delete' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 257,

+        "y": 184.58635187149048,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "4793fbaf.4f8194"

+            ]

+        ]

+    },

+    {

+        "id": "1bec69d8.54d756",

+        "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.28570556640625,

+        "y": 85.23810958862305,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "ec163be6.3f3848"

+            ]

+        ]

+    },

+    {

+        "id": "8b3450fa.11be1",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 166,

+        "y": 23,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "1bec69d8.54d756"

+            ]

+        ]

+    },

+    {

+        "id": "4793fbaf.4f8194",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 273.6667022705078,

+        "y": 413.6667194366455,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "9dfafdb.c466",

+                "a32b04df.766888",

+                "1b926ba7.620a94",

+                "d56abb49.55c298",

+                "dcdd31d0.479e7",

+                "fb17bb23.b22de8",

+                "4443f52d.bb0e4c",

+                "3673a6e1.e30cca",

+                "2bcb08d.42550f8",

+                "48c6ddd.4092a24",

+                "96d011a.ebe42f",

+                "279f2432.3dd51c",

+                "9d4a1934.79a7a8"

+            ]

+        ]

+    },

+    {

+        "id": "a32b04df.766888",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 608.0313491821289,

+        "y": 194.26914203166962,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "f4a89702.3708f8"

+            ]

+        ]

+    },

+    {

+        "id": "9dfafdb.c466",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 613.0000038146973,

+        "y": 133.0000113248825,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "58b9bfe5.41c97"

+            ]

+        ]

+    },

+    {

+        "id": "58b9bfe5.41c97",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 792.9999847412109,

+        "y": 132.00000083446503,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "2d04caf9.98dff6"

+            ]

+        ]

+    },

+    {

+        "id": "2d04caf9.98dff6",

+        "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": 942.4287109375,

+        "y": 133.14291846752167,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "f4a89702.3708f8",

+        "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": 831,

+        "y": 195.00000703334808,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "4ee74d2f.481124"

+            ]

+        ]

+    },

+    {

+        "id": "4ee74d2f.481124",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1045.999984741211,

+        "y": 193.00000083446503,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "864b8c78.81cb3"

+            ]

+        ]

+    },

+    {

+        "id": "864b8c78.81cb3",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1209.999984741211,

+        "y": 188.00000083446503,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "1b926ba7.620a94",

+        "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": 660.0000343322754,

+        "y": 336.0000247955322,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "f160fe58.60ceb",

+                "c6dbecb6.3daf1",

+                "78728405.050dbc"

+            ]

+        ]

+    },

+    {

+        "id": "c6dbecb6.3daf1",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 882.0000267028809,

+        "y": 370.0000343322754,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "8b2c8779.a3f058"

+            ]

+        ]

+    },

+    {

+        "id": "f160fe58.60ceb",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 887.0000228881836,

+        "y": 317.0000333786011,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "8b2c8779.a3f058"

+            ]

+        ]

+    },

+    {

+        "id": "8b2c8779.a3f058",

+        "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": 1045.0000267028809,

+        "y": 330.0000343322754,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "78728405.050dbc",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 882.0000267028809,

+        "y": 431.0000343322754,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "3894cc60.de2194"

+            ]

+        ]

+    },

+    {

+        "id": "70ed1707.f5ee78",

+        "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": 1236.00004196167,

+        "y": 429.00004827976227,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "3894cc60.de2194",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1043.000072479248,

+        "y": 428.00002574920654,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "70ed1707.f5ee78",

+                "ec070549.11ed28"

+            ]

+        ]

+    },

+    {

+        "id": "ec070549.11ed28",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1255.0000114440918,

+        "y": 482.0000247955322,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "fcb13450.487cd8"

+            ]

+        ]

+    },

+    {

+        "id": "fcb13450.487cd8",

+        "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": 1526.0000305175781,

+        "y": 483.00006198883057,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "f167edc3.b2418"

+            ]

+        ]

+    },

+    {

+        "id": "f167edc3.b2418",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1739.0001544952393,

+        "y": 470.00003147125244,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "3335b07e.93a8c"

+            ]

+        ]

+    },

+    {

+        "id": "3335b07e.93a8c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1891.0001258850098,

+        "y": 472.0000247955322,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "3d815800.695568",

+                "da733ba9.b543b8",

+                "ab8c2e99.50d5d"

+            ]

+        ]

+    },

+    {

+        "id": "3d815800.695568",

+        "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": 2113.0001258850098,

+        "y": 468.0000247955322,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "da733ba9.b543b8",

+        "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": 2119.0001258850098,

+        "y": 517.0000247955322,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "ab8c2e99.50d5d",

+        "type": "call",

+        "name": "call sdwan-get-vf-module-lan-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lanport-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2147.000347137451,

+        "y": 565.0000305175781,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d56abb49.55c298",

+        "type": "switchNode",

+        "name": "switch tmp.vidx ",

+        "xml": "<switch test=\"`$tmp.vidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 599.0312461853027,

+        "y": 509.0161075592041,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "a2f7bc45.7d854"

+            ]

+        ]

+    },

+    {

+        "id": "a2f7bc45.7d854",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 746.459888458252,

+        "y": 508.5875177383423,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "a5b6de1f.319b7"

+            ]

+        ]

+    },

+    {

+        "id": "a5b6de1f.319b7",

+        "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": 895.888614654541,

+        "y": 509.7304353713989,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "9d4a1934.79a7a8",

+        "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": 643.3294067382812,

+        "y": 579.3333129882812,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "88c55560.ea56c8",

+                "5f573696.518908"

+            ]

+        ]

+    },

+    {

+        "id": "88c55560.ea56c8",

+        "type": "outcome",

+        "name": "outcome PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 930.1627044677734,

+        "y": 562.4444751739502,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "ddef1b.d5ace0e8"

+            ]

+        ]

+    },

+    {

+        "id": "5f573696.518908",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 914.1628684997559,

+        "y": 608.4445171356201,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "d2e1da0b.14c268"

+            ]

+        ]

+    },

+    {

+        "id": "d2e1da0b.14c268",

+        "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": 1131.6626281738281,

+        "y": 607.4444761276245,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "ddef1b.d5ace0e8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1144.4691066741943,

+        "y": 560.7696704864502,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4443f52d.bb0e4c",

+        "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": 614.4406242370605,

+        "y": 1026.2221636772156,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "2bcb08d.42550f8",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",

+        "comments": "",

+        "x": 621.527271270752,

+        "y": 650.3334817886353,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "3673a6e1.e30cca",

+        "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": 697.5271911621094,

+        "y": 704.3333568572998,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "811b86b3.145198"

+            ]

+        ]

+    },

+    {

+        "id": "dcdd31d0.479e7",

+        "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": 621.6285629272461,

+        "y": 757.137574672699,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "48c6ddd.4092a24",

+        "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": 662.527229309082,

+        "y": 804.3334875106812,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "811b86b3.145198",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 957.5271816253662,

+        "y": 711.3332166671753,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "1e6e592d.12c717"

+            ]

+        ]

+    },

+    {

+        "id": "96d011a.ebe42f",

+        "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='lan-port-config.lan-port-config-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 696.5275993347168,

+        "y": 973.5948696136475,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1e6e592d.12c717",

+        "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": 1143.5272483825684,

+        "y": 711.3333773612976,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "33904649.f29baa"

+            ]

+        ]

+    },

+    {

+        "id": "33904649.f29baa",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1312.527256011963,

+        "y": 710.3332147598267,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "feb2eba6.9b1178"

+            ]

+        ]

+    },

+    {

+        "id": "feb2eba6.9b1178",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1466.5270948410034,

+        "y": 702.333215713501,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "1c71b1a3.8a840e",

+                "76b09d29.70bbf4"

+            ]

+        ]

+    },

+    {

+        "id": "1c71b1a3.8a840e",

+        "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].vf-module-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].vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 1631.527190208435,

+        "y": 677.3333711624146,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "76b09d29.70bbf4",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",

+        "comments": "",

+        "x": 1653.527190208435,

+        "y": 733.3333349227905,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "fb17bb23.b22de8",

+        "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": 638.329460144043,

+        "y": 920.6666584014893,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "c43a3a93.767aa8",

+        "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": 652.3333053588867,

+        "y": 854.5862283706665,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    },

+    {

+        "id": "279f2432.3dd51c",

+        "type": "switchNode",

+        "name": "switch vnf-index",

+        "xml": "<switch test='`$vnf-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 617,

+        "y": 259.0039075613022,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "145975f0.e3dbaa"

+            ]

+        ]

+    },

+    {

+        "id": "145975f0.e3dbaa",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 779.0000457763672,

+        "y": 258.00390660762787,

+        "z": "1c424bc5.8e5824",

+        "wires": [

+            [

+                "3cec081f.179438"

+            ]

+        ]

+    },

+    {

+        "id": "3cec081f.179438",

+        "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 id not found in service-data\" />\n",

+        "comments": "",

+        "x": 928.2501373291016,

+        "y": 255.78178441524506,

+        "z": "1c424bc5.8e5824",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.json b/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.json
new file mode 100644
index 0000000..650d4f6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.json
@@ -0,0 +1,533 @@
+[

+    {

+        "id": "c770572a.fb6338",

+        "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": 244.01040649414062,

+        "y": 137.999986410141,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "2413db39.149ee4"

+            ]

+        ]

+    },

+    {

+        "id": "2413db39.149ee4",

+        "type": "method",

+        "name": "sdwan-vf-operation-site-create",

+        "xml": "<method rpc='sdwan-vf-operation-site-create' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 243.01040649414062,

+        "y": 237.999986410141,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "3b0ef51d.87c1aa"

+            ]

+        ]

+    },

+    {

+        "id": "917c1ce4.ae467",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 95.51040649414062,

+        "y": 42.99999976158142,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "c770572a.fb6338"

+            ]

+        ]

+    },

+    {

+        "id": "3b0ef51d.87c1aa",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 402.01039123535156,

+        "y": 353.99999499320984,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "fea218a9.a2a6a8",

+                "b28a31c1.baab5",

+                "d187c119.ef8c",

+                "1f4a7270.75c83e",

+                "b816fc60.a5218",

+                "e97f4b5a.d20bc8",

+                "fc345089.c5339",

+                "740c748a.ebce9c",

+                "ccd8cb84.11c5d8",

+                "5663c20e.be57ac",

+                "8c48570.a7e2ba8",

+                "37b7efe8.c51dd",

+                "192f7a8f.f6f5f5",

+                "dd669d99.3d6e7"

+            ]

+        ]

+    },

+    {

+        "id": "fea218a9.a2a6a8",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 702.3398132324219,

+        "y": 245.49611926078796,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "6a2c175f.9703e8"

+            ]

+        ]

+    },

+    {

+        "id": "6a2c175f.9703e8",

+        "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": 954.3399047851562,

+        "y": 244.1627824306488,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "4fe97e86.0a138"

+            ]

+        ]

+    },

+    {

+        "id": "676991e8.683f",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1326.0063934326172,

+        "y": 246.16278529167175,

+        "z": "7f7f8941.3fdb18",

+        "wires": []

+    },

+    {

+        "id": "4fe97e86.0a138",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1172.6732215881348,

+        "y": 246.1627643108368,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "676991e8.683f"

+            ]

+        ]

+    },

+    {

+        "id": "1f4a7270.75c83e",

+        "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": 776.2605972290039,

+        "y": 467.6666524410248,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "559d320b.26902c"

+            ]

+        ]

+    },

+    {

+        "id": "559d320b.26902c",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 991.0389404296875,

+        "y": 465.2222363948822,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "744b5a7d.c43364",

+                "3925a45.84b325c"

+            ]

+        ]

+    },

+    {

+        "id": "744b5a7d.c43364",

+        "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": 1187.2951431274414,

+        "y": 442.9703748226166,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3925a45.84b325c",

+        "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": 1156.7395706176758,

+        "y": 479.9704911708832,

+        "z": "7f7f8941.3fdb18",

+        "wires": []

+    },

+    {

+        "id": "51aed84d.9e1858",

+        "type": "comment",

+        "name": "Take the parameter names by removing prefix",

+        "info": "",

+        "comments": "",

+        "x": 1160.260799407959,

+        "y": 402.33332085609436,

+        "z": "7f7f8941.3fdb18",

+        "wires": []

+    },

+    {

+        "id": "b28a31c1.baab5",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 716.7604064941406,

+        "y": 200.99998831748962,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "2601ab8b.2465c4"

+            ]

+        ]

+    },

+    {

+        "id": "2601ab8b.2465c4",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 903.4270858764648,

+        "y": 200.3332860469818,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "7b66cde0.5ed4e4"

+            ]

+        ]

+    },

+    {

+        "id": "7b66cde0.5ed4e4",

+        "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": 1085.0937118530273,

+        "y": 200.3332860469818,

+        "z": "7f7f8941.3fdb18",

+        "wires": []

+    },

+    {

+        "id": "d187c119.ef8c",

+        "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": 758.0103960037231,

+        "y": 320.99998927116394,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "3c09952e.958fba",

+                "e6356a17.905c68"

+            ]

+        ]

+    },

+    {

+        "id": "3c09952e.958fba",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 989.0104064941406,

+        "y": 296.999986410141,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "fba8bc43.2cb3f"

+            ]

+        ]

+    },

+    {

+        "id": "e6356a17.905c68",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 989.0104064941406,

+        "y": 336.999986410141,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "1e3ff05c.7e707"

+            ]

+        ]

+    },

+    {

+        "id": "fba8bc43.2cb3f",

+        "type": "set",

+        "name": "set vf-index",

+        "xml": "<set>\n<parameter name='vf-index' value='0' />\n",

+        "comments": "",

+        "x": 1131.5104064941406,

+        "y": 296.999986410141,

+        "z": "7f7f8941.3fdb18",

+        "wires": []

+    },

+    {

+        "id": "1e3ff05c.7e707",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1133.3674507141113,

+        "y": 336.9364984035492,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "734f7a0e.a807e4",

+                "6a7d1bd9.260064"

+            ]

+        ]

+    },

+    {

+        "id": "6a7d1bd9.260064",

+        "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": 1286.0659255981445,

+        "y": 306.55559709621593,

+        "z": "7f7f8941.3fdb18",

+        "wires": []

+    },

+    {

+        "id": "734f7a0e.a807e4",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1342.4944305419922,

+        "y": 359.7777268886566,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "1f870f52.7ed3d1"

+            ]

+        ]

+    },

+    {

+        "id": "c40703ba.a6d6d",

+        "type": "comment",

+        "name": "make sure this network doesn't exist already",

+        "info": "",

+        "comments": "",

+        "x": 1566.1451606750488,

+        "y": 318.03178429603577,

+        "z": "7f7f8941.3fdb18",

+        "wires": []

+    },

+    {

+        "id": "1f870f52.7ed3d1",

+        "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": 1617.7801513671875,

+        "y": 359.3492295742035,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "f0ccc856.a88628"

+            ]

+        ]

+    },

+    {

+        "id": "f0ccc856.a88628",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1518.5103492736816,

+        "y": 417.92066073417664,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            [

+                "fdfb4a25.63fa28"

+            ]

+        ]

+    },

+    {

+        "id": "fdfb4a25.63fa28",

+        "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": 1666.2604522705078,

+        "y": 417.77785280300304,

+        "z": "7f7f8941.3fdb18",

+        "wires": []

+    },

+    {

+        "id": "ccd8cb84.11c5d8",

+        "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": 769.8636016845703,

+        "y": 747.4962093830109,

+        "z": "7f7f8941.3fdb18",

+        "wires": []

+    },

+    {

+        "id": "740c748a.ebce9c",

+        "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": 778.1970977783203,

+        "y": 694.1629421710968,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fc345089.c5339",

+        "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": 752.1970748901367,

+        "y": 640.1628358364105,

+        "z": "7f7f8941.3fdb18",

+        "wires": []

+    },

+    {

+        "id": "b816fc60.a5218",

+        "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": 767.1967353820801,

+        "y": 530.1542165279388,

+        "z": "7f7f8941.3fdb18",

+        "wires": []

+    },

+    {

+        "id": "e97f4b5a.d20bc8",

+        "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": 783.1970443725586,

+        "y": 582.154397726059,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5663c20e.be57ac",

+        "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": 765.0104942321777,

+        "y": 798.0000545978546,

+        "z": "7f7f8941.3fdb18",

+        "wires": []

+    },

+    {

+        "id": "8c48570.a7e2ba8",

+        "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": 774.5105133056641,

+        "y": 846.9999639987946,

+        "z": "7f7f8941.3fdb18",

+        "wires": []

+    },

+    {

+        "id": "192f7a8f.f6f5f5",

+        "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-uuid`' />\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": 777.0104484558105,

+        "y": 892.4999701976776,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dd669d99.3d6e7",

+        "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=\"site-resource\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/site-resources/site-resource/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"site-resource.site-resource-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 776.0103912353516,

+        "y": 939.5000178813934,

+        "z": "7f7f8941.3fdb18",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "37b7efe8.c51dd",

+        "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": 724.7329216003418,

+        "y": 985.6738607883453,

+        "z": "7f7f8941.3fdb18",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.json b/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.json
new file mode 100644
index 0000000..306983e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.json
@@ -0,0 +1,674 @@
+[

+    {

+        "id": "92d63018.76651",

+        "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": 188,

+        "y": 95.23810958862305,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "d7e56420.878978"

+            ]

+        ]

+    },

+    {

+        "id": "d7e56420.878978",

+        "type": "method",

+        "name": "method sdwan-vf-operation-site-delete",

+        "xml": "<method rpc='sdwan-vf-operation-site-delete' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 199.71429443359375,

+        "y": 189.58634185791016,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "4894aec.737e25"

+            ]

+        ]

+    },

+    {

+        "id": "a6d015c8.1ff688",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 108.71429443359375,

+        "y": 33,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "92d63018.76651"

+            ]

+        ]

+    },

+    {

+        "id": "4894aec.737e25",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 216.38099670410156,

+        "y": 423.6667194366455,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "a2b42b0.3b977d8",

+                "5900c7f7.5a9318",

+                "7c3f4054.5da9f",

+                "ea6eb721.d75c78",

+                "1845f5e.f859c0a",

+                "ac4ca98d.648748",

+                "3a7cc06a.e4a93",

+                "5b1cbd9a.fe2214",

+                "d3482d9.9c6a8d",

+                "47edd8f7.5e8f08",

+                "a33ffc8b.2c56d"

+            ]

+        ]

+    },

+    {

+        "id": "5900c7f7.5a9318",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 531.7456588745117,

+        "y": 269.2691411972046,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "5c122dfc.571994"

+            ]

+        ]

+    },

+    {

+        "id": "a2b42b0.3b977d8",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 536.7143135070801,

+        "y": 208.00001049041748,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "800d9fa6.cc593"

+            ]

+        ]

+    },

+    {

+        "id": "800d9fa6.cc593",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 716.7142944335938,

+        "y": 207,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "21c67758.a01858"

+            ]

+        ]

+    },

+    {

+        "id": "21c67758.a01858",

+        "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": 866.1430206298828,

+        "y": 208.14291763305664,

+        "z": "551c808f.bbd64",

+        "wires": []

+    },

+    {

+        "id": "5c122dfc.571994",

+        "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": 754.7143096923828,

+        "y": 270.00000619888306,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "e74d8f35.4c893"

+            ]

+        ]

+    },

+    {

+        "id": "e74d8f35.4c893",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 969.7142944335938,

+        "y": 268,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "18997aaf.50a2e5"

+            ]

+        ]

+    },

+    {

+        "id": "18997aaf.50a2e5",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1133.7142944335938,

+        "y": 263,

+        "z": "551c808f.bbd64",

+        "wires": []

+    },

+    {

+        "id": "7c3f4054.5da9f",

+        "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": 602.7143287658691,

+        "y": 346.0000247955322,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "e9f1419b.38f9e",

+                "585f667a.9a7e28",

+                "ebd510e0.6ad12"

+            ]

+        ]

+    },

+    {

+        "id": "585f667a.9a7e28",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 824.7143211364746,

+        "y": 380.0000343322754,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "720f4f87.d051c"

+            ]

+        ]

+    },

+    {

+        "id": "e9f1419b.38f9e",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 829.7143173217773,

+        "y": 327.0000333786011,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "720f4f87.d051c"

+            ]

+        ]

+    },

+    {

+        "id": "720f4f87.d051c",

+        "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": 987.7143211364746,

+        "y": 340.0000343322754,

+        "z": "551c808f.bbd64",

+        "wires": []

+    },

+    {

+        "id": "ebd510e0.6ad12",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 824.7143211364746,

+        "y": 441.0000343322754,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "9a0e9dd2.18865"

+            ]

+        ]

+    },

+    {

+        "id": "9902fe02.18d86",

+        "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": 1178.7143363952637,

+        "y": 439.00004827976227,

+        "z": "551c808f.bbd64",

+        "wires": []

+    },

+    {

+        "id": "9a0e9dd2.18865",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 985.7143669128418,

+        "y": 438.00002574920654,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "9902fe02.18d86",

+                "16260a2b.3eaaa6"

+            ]

+        ]

+    },

+    {

+        "id": "16260a2b.3eaaa6",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1197.7143058776855,

+        "y": 492.0000247955322,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "88e5880a.11ce38"

+            ]

+        ]

+    },

+    {

+        "id": "88e5880a.11ce38",

+        "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": 1440.7143211364746,

+        "y": 487.0000343322754,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "70d8d5dc.c5589c"

+            ]

+        ]

+    },

+    {

+        "id": "70d8d5dc.c5589c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1681.714448928833,

+        "y": 480.00003147125244,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "edcff2.a0ee701"

+            ]

+        ]

+    },

+    {

+        "id": "edcff2.a0ee701",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1833.7144203186035,

+        "y": 482.0000247955322,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "3e47609d.a63df",

+                "9b88bd4a.a8923",

+                "e106d289.b1b46"

+            ]

+        ]

+    },

+    {

+        "id": "3e47609d.a63df",

+        "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": 2055.7144203186035,

+        "y": 478.0000247955322,

+        "z": "551c808f.bbd64",

+        "wires": []

+    },

+    {

+        "id": "9b88bd4a.a8923",

+        "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": 2061.7144203186035,

+        "y": 527.0000247955322,

+        "z": "551c808f.bbd64",

+        "wires": []

+    },

+    {

+        "id": "e106d289.b1b46",

+        "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": 2089.714641571045,

+        "y": 575.0000305175781,

+        "z": "551c808f.bbd64",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ea6eb721.d75c78",

+        "type": "switchNode",

+        "name": "switch tmp.vidx ",

+        "xml": "<switch test=\"`$tmp.vidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 541.7455406188965,

+        "y": 519.0161075592041,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "b4a5c77f.e6a8e8"

+            ]

+        ]

+    },

+    {

+        "id": "b4a5c77f.e6a8e8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 689.1741828918457,

+        "y": 518.5875177383423,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "1bdd208b.11220f"

+            ]

+        ]

+    },

+    {

+        "id": "1bdd208b.11220f",

+        "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": 838.6029090881348,

+        "y": 519.7304353713989,

+        "z": "551c808f.bbd64",

+        "wires": []

+    },

+    {

+        "id": "1845f5e.f859c0a",

+        "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": 586.043701171875,

+        "y": 589.3333129882812,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "b4a1d75e.3ca968",

+                "3c274d12.c91802"

+            ]

+        ]

+    },

+    {

+        "id": "b4a1d75e.3ca968",

+        "type": "outcome",

+        "name": "outcome PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 876.8769683837891,

+        "y": 593.4444360733032,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "c9fb09b5.340538"

+            ]

+        ]

+    },

+    {

+        "id": "3c274d12.c91802",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 843.8771057128906,

+        "y": 645.4444887638092,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "2fa34d4f.1b8342"

+            ]

+        ]

+    },

+    {

+        "id": "2fa34d4f.1b8342",

+        "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": 1003.3768730163574,

+        "y": 648.4444878101349,

+        "z": "551c808f.bbd64",

+        "wires": []

+    },

+    {

+        "id": "c9fb09b5.340538",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1074.1833686828613,

+        "y": 603.7695903778076,

+        "z": "551c808f.bbd64",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a33ffc8b.2c56d",

+        "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": 564.1549034118652,

+        "y": 968.2221999168396,

+        "z": "551c808f.bbd64",

+        "wires": []

+    },

+    {

+        "id": "ac4ca98d.648748",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",

+        "comments": "",

+        "x": 560.2415714263916,

+        "y": 663.3333549499512,

+        "z": "551c808f.bbd64",

+        "wires": []

+    },

+    {

+        "id": "3a7cc06a.e4a93",

+        "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": 640.2414855957031,

+        "y": 714.3333568572998,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "95674187.09446"

+            ]

+        ]

+    },

+    {

+        "id": "5b1cbd9a.fe2214",

+        "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": 564.3428573608398,

+        "y": 767.137574672699,

+        "z": "551c808f.bbd64",

+        "wires": []

+    },

+    {

+        "id": "d3482d9.9c6a8d",

+        "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": 601.2415313720703,

+        "y": 817.3333597183228,

+        "z": "551c808f.bbd64",

+        "wires": []

+    },

+    {

+        "id": "95674187.09446",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 900.24147605896,

+        "y": 721.3332166671753,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "e3d25248.df60d"

+            ]

+        ]

+    },

+    {

+        "id": "52d4e995.bbf898",

+        "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": 646.2418785095215,

+        "y": 915.5949058532715,

+        "z": "551c808f.bbd64",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e3d25248.df60d",

+        "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": 1086.241542816162,

+        "y": 721.3333773612976,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "47678fed.7b718"

+            ]

+        ]

+    },

+    {

+        "id": "47678fed.7b718",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1255.2415504455566,

+        "y": 720.3332147598267,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "c04d70ca.31b0d"

+            ]

+        ]

+    },

+    {

+        "id": "c04d70ca.31b0d",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1409.2413892745972,

+        "y": 712.333215713501,

+        "z": "551c808f.bbd64",

+        "wires": [

+            [

+                "127fe12b.983b6f",

+                "2ec119fa.b900e6"

+            ]

+        ]

+    },

+    {

+        "id": "127fe12b.983b6f",

+        "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": 1574.2414846420288,

+        "y": 687.3333711624146,

+        "z": "551c808f.bbd64",

+        "wires": []

+    },

+    {

+        "id": "2ec119fa.b900e6",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",

+        "comments": "",

+        "x": 1596.2414846420288,

+        "y": 743.3333349227905,

+        "z": "551c808f.bbd64",

+        "wires": []

+    },

+    {

+        "id": "47edd8f7.5e8f08",

+        "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": 588.0437393188477,

+        "y": 862.6666946411133,

+        "z": "551c808f.bbd64",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.json
new file mode 100644
index 0000000..c1209fc
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.json
@@ -0,0 +1,547 @@
+[

+    {

+        "id": "21e79fdd.0452",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 172,

+        "y": 78,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "a56bff31.7def2"

+            ]

+        ]

+    },

+    {

+        "id": "a56bff31.7def2",

+        "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": 251.28570556640625,

+        "y": 140.23810958862305,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "debd8cb4.849ed"

+            ]

+        ]

+    },

+    {

+        "id": "debd8cb4.849ed",

+        "type": "method",

+        "name": "method sdwan-vf-operation-vpn-activate",

+        "xml": "<method rpc='sdwan-vf-operation-vpn-activate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 263,

+        "y": 234.58634185791016,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "7513aa1e.16b4d4"

+            ]

+        ]

+    },

+    {

+        "id": "7513aa1e.16b4d4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 249.6666717529297,

+        "y": 419.6667137145996,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "f032d4b7.491cc8",

+                "67bb10ae.0e353",

+                "c1332488.62fde8",

+                "e39bef36.4698d",

+                "774b89d9.c41338",

+                "73b6f7ab.0d36d8",

+                "5ccac719.bf4388",

+                "ab39c2ec.e041d",

+                "83763572.db11e8",

+                "5e0a24cd.c963fc",

+                "5dbdc6ec.868d28",

+                "5048db5.9599324",

+                "a8022531.9687b8",

+                "6aeee675.ba6f48",

+                "139e4c0f.50ddb4",

+                "64534896.fa8bc8",

+                "8cf38aaa.8f6988"

+            ]

+        ]

+    },

+    {

+        "id": "f032d4b7.491cc8",

+        "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": 789.6667633056641,

+        "y": 257.000159740448,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c1332488.62fde8",

+        "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": 621.0312652587891,

+        "y": 345.03125,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "67bb10ae.0e353",

+        "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": 585.7291412353516,

+        "y": 301.0312223434448,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "57e47be3.8054b4",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 908.454833984375,

+        "y": 395.0104079246521,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "d56b85ca.9481e8",

+                "d0693d28.80f9b"

+            ]

+        ]

+    },

+    {

+        "id": "d56b85ca.9481e8",

+        "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": 1092.4549407958984,

+        "y": 357.0104351043701,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "2748734c.684fac"

+            ]

+        ]

+    },

+    {

+        "id": "2748734c.684fac",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1266.4550666809082,

+        "y": 357.0104389190674,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "6309dd22.f19b94"

+            ]

+        ]

+    },

+    {

+        "id": "6309dd22.f19b94",

+        "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": 1429.4549522399902,

+        "y": 356.6104335784912,

+        "z": "1c1dd38f.89b8bc",

+        "wires": []

+    },

+    {

+        "id": "d0693d28.80f9b",

+        "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": 1102.8714408874512,

+        "y": 404.67706394195557,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "8fb95e7a.24168"

+            ]

+        ]

+    },

+    {

+        "id": "8fb95e7a.24168",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1276.871566772461,

+        "y": 404.67706775665283,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "f7379751.d87ff8"

+            ]

+        ]

+    },

+    {

+        "id": "f7379751.d87ff8",

+        "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": 1439.871452331543,

+        "y": 404.27706241607666,

+        "z": "1c1dd38f.89b8bc",

+        "wires": []

+    },

+    {

+        "id": "e39bef36.4698d",

+        "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": 656.6214027404785,

+        "y": 404.6770553588867,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "57e47be3.8054b4"

+            ]

+        ]

+    },

+    {

+        "id": "139e4c0f.50ddb4",

+        "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": 653.4549522399902,

+        "y": 531.0104274749756,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "3689f3fd.7221cc",

+                "d64da76b.209af8",

+                "17a9c1ef.c4208e"

+            ]

+        ]

+    },

+    {

+        "id": "3689f3fd.7221cc",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 915.454833984375,

+        "y": 484.0104077756405,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "33d44e4e.88ac52"

+            ]

+        ]

+    },

+    {

+        "id": "d64da76b.209af8",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 918.94580078125,

+        "y": 531.5844434201717,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "210fb3c2.b65bac"

+            ]

+        ]

+    },

+    {

+        "id": "17a9c1ef.c4208e",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 914.27880859375,

+        "y": 572.917756408453,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "7173d290.3a041c"

+            ]

+        ]

+    },

+    {

+        "id": "210fb3c2.b65bac",

+        "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": 1095.5172119140625,

+        "y": 519.8701795041561,

+        "z": "1c1dd38f.89b8bc",

+        "wires": []

+    },

+    {

+        "id": "7173d290.3a041c",

+        "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": 1102.0513648986816,

+        "y": 568.3569491803646,

+        "z": "1c1dd38f.89b8bc",

+        "wires": []

+    },

+    {

+        "id": "6aeee675.ba6f48",

+        "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": 673.4548721313477,

+        "y": 650.0104312896729,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "4fc3faa9.6dc304",

+                "f1aacba9.1de118"

+            ]

+        ]

+    },

+    {

+        "id": "4fc3faa9.6dc304",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 917.454906463623,

+        "y": 627.0104379653931,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "16433351.3e777d"

+            ]

+        ]

+    },

+    {

+        "id": "f1aacba9.1de118",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 909.704906463623,

+        "y": 680.6533212661743,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            [

+                "34937ca.3e30484"

+            ]

+        ]

+    },

+    {

+        "id": "16433351.3e777d",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1067.454833984375,

+        "y": 628.0104064941406,

+        "z": "1c1dd38f.89b8bc",

+        "wires": []

+    },

+    {

+        "id": "34937ca.3e30484",

+        "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": 1062.454906463623,

+        "y": 680.4033823013306,

+        "z": "1c1dd38f.89b8bc",

+        "wires": []

+    },

+    {

+        "id": "33d44e4e.88ac52",

+        "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": 1112.9548950195312,

+        "y": 472.0104077756405,

+        "z": "1c1dd38f.89b8bc",

+        "wires": []

+    },

+    {

+        "id": "a8022531.9687b8",

+        "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": 679.1942138671875,

+        "y": 763.6907243728638,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "774b89d9.c41338",

+        "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": 664.1944122314453,

+        "y": 817.6908464431763,

+        "z": "1c1dd38f.89b8bc",

+        "wires": []

+    },

+    {

+        "id": "5048db5.9599324",

+        "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": 706.6942138671875,

+        "y": 865.6906909942627,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "73b6f7ab.0d36d8",

+        "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.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='vpn-id' />\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.vpn-id`' />\n",

+        "comments": "",

+        "x": 639.9442138671875,

+        "y": 927.1906471252441,

+        "z": "1c1dd38f.89b8bc",

+        "wires": []

+    },

+    {

+        "id": "5ccac719.bf4388",

+        "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": 604.004020690918,

+        "y": 1257.504249572754,

+        "z": "1c1dd38f.89b8bc",

+        "wires": []

+    },

+    {

+        "id": "64534896.fa8bc8",

+        "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": 666.3337326049805,

+        "y": 1181.8739857673645,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5e0a24cd.c963fc",

+        "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": 662.96875,

+        "y": 1124.9688164917752,

+        "z": "1c1dd38f.89b8bc",

+        "wires": []

+    },

+    {

+        "id": "83763572.db11e8",

+        "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": 696.96875,

+        "y": 1076.468815538101,

+        "z": "1c1dd38f.89b8bc",

+        "wires": []

+    },

+    {

+        "id": "ab39c2ec.e041d",

+        "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": 660.9687042236328,

+        "y": 1028.7187700271606,

+        "z": "1c1dd38f.89b8bc",

+        "wires": []

+    },

+    {

+        "id": "5dbdc6ec.868d28",

+        "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.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`' />",

+        "comments": "",

+        "x": 635.9687824249268,

+        "y": 976.9688520431519,

+        "z": "1c1dd38f.89b8bc",

+        "wires": []

+    },

+    {

+        "id": "8cf38aaa.8f6988",

+        "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": 655.00390625,

+        "y": 707.00390625,

+        "z": "1c1dd38f.89b8bc",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.json
new file mode 100644
index 0000000..88c8553
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.json
@@ -0,0 +1,550 @@
+[

+    {

+        "id": "f25c52a5.c1512",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 431.0104064941406,

+        "y": 360.00000047683716,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "b0ec8338.580f5",

+                "f7ddfb47.5b2f08",

+                "b17c2a0a.9c7048",

+                "b301b0b4.47969",

+                "75b3686.06a8798",

+                "eda7bf6a.a6768",

+                "1c914e3e.bd19d2",

+                "e8fbb993.4260a8",

+                "ce57fa36.d86878",

+                "67b336e3.64c8a8",

+                "393d128d.77829e",

+                "3dff4920.e6f876",

+                "1788c292.f60a9d"

+            ]

+        ]

+    },

+    {

+        "id": "fd150a68.54b208",

+        "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": 273.0104217529297,

+        "y": 143.9999918937683,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "58419eae.b9425"

+            ]

+        ]

+    },

+    {

+        "id": "58419eae.b9425",

+        "type": "method",

+        "name": "sdwan-vf-operation-vpn-create",

+        "xml": "<method rpc='sdwan-vf-operation-vpn-create' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 272.0104217529297,

+        "y": 243.9999918937683,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "f25c52a5.c1512"

+            ]

+        ]

+    },

+    {

+        "id": "c35c953.b5e8868",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 102.51042175292969,

+        "y": 54.99999952316284,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "fd150a68.54b208"

+            ]

+        ]

+    },

+    {

+        "id": "f7ddfb47.5b2f08",

+        "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": 806.2606382369995,

+        "y": 368.6666796207428,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "fcacce0e.8c56d"

+            ]

+        ]

+    },

+    {

+        "id": "fcacce0e.8c56d",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1021.0389814376831,

+        "y": 366.2222635746002,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "e9bb9dc5.ab9e7",

+                "437b18ad.950888"

+            ]

+        ]

+    },

+    {

+        "id": "e9bb9dc5.ab9e7",

+        "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": 1217.295184135437,

+        "y": 343.9704020023346,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "437b18ad.950888",

+        "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": 1186.7396116256714,

+        "y": 380.9705183506012,

+        "z": "3b61dfe7.30ac3",

+        "wires": []

+    },

+    {

+        "id": "7d6fd9af.e0a388",

+        "type": "comment",

+        "name": "Take the parameter names by removing prefix",

+        "info": "",

+        "comments": "",

+        "x": 1190.2608404159546,

+        "y": 303.3333480358124,

+        "z": "3b61dfe7.30ac3",

+        "wires": []

+    },

+    {

+        "id": "b0ec8338.580f5",

+        "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": 788.0104370117188,

+        "y": 222.00001645088196,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "e3d991cc.0551d",

+                "fab03553.0f6bc8"

+            ]

+        ]

+    },

+    {

+        "id": "e3d991cc.0551d",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1019.0104475021362,

+        "y": 198.000013589859,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "cd9f31aa.1f944"

+            ]

+        ]

+    },

+    {

+        "id": "fab03553.0f6bc8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1019.0104475021362,

+        "y": 238.000013589859,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "9fa4f951.782718"

+            ]

+        ]

+    },

+    {

+        "id": "cd9f31aa.1f944",

+        "type": "set",

+        "name": "set vf-index",

+        "xml": "<set>\n<parameter name='vf-index' value='0' />\n",

+        "comments": "",

+        "x": 1161.5104475021362,

+        "y": 198.000013589859,

+        "z": "3b61dfe7.30ac3",

+        "wires": []

+    },

+    {

+        "id": "9fa4f951.782718",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1163.367491722107,

+        "y": 237.9365255832672,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "f792bd90.84c2f",

+                "a00871e4.c717d"

+            ]

+        ]

+    },

+    {

+        "id": "a00871e4.c717d",

+        "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": 1316.0659666061401,

+        "y": 207.55562427593395,

+        "z": "3b61dfe7.30ac3",

+        "wires": []

+    },

+    {

+        "id": "f792bd90.84c2f",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1372.4944715499878,

+        "y": 260.77775406837463,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "2a945efe.523112"

+            ]

+        ]

+    },

+    {

+        "id": "a3b8abe8.a0e028",

+        "type": "comment",

+        "name": "make sure this network doesn't exist already",

+        "info": "",

+        "comments": "",

+        "x": 1596.1452016830444,

+        "y": 219.03181147575378,

+        "z": "3b61dfe7.30ac3",

+        "wires": []

+    },

+    {

+        "id": "2a945efe.523112",

+        "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": 1647.780192375183,

+        "y": 260.3492567539215,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "f09636f3.8478b8"

+            ]

+        ]

+    },

+    {

+        "id": "f09636f3.8478b8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1548.5103902816772,

+        "y": 318.92068791389465,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "a87baae5.4ae3f8"

+            ]

+        ]

+    },

+    {

+        "id": "a87baae5.4ae3f8",

+        "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": 1696.2604932785034,

+        "y": 318.77787998272106,

+        "z": "3b61dfe7.30ac3",

+        "wires": []

+    },

+    {

+        "id": "eda7bf6a.a6768",

+        "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": 801.8636274337769,

+        "y": 671.4962675571442,

+        "z": "3b61dfe7.30ac3",

+        "wires": []

+    },

+    {

+        "id": "75b3686.06a8798",

+        "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": 813.1971998214722,

+        "y": 624.162969827652,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b301b0b4.47969",

+        "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": 785.1972608566284,

+        "y": 575.162969827652,

+        "z": "3b61dfe7.30ac3",

+        "wires": []

+    },

+    {

+        "id": "b17c2a0a.9c7048",

+        "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": 785.1967878341675,

+        "y": 521.1542580127716,

+        "z": "3b61dfe7.30ac3",

+        "wires": []

+    },

+    {

+        "id": "1c914e3e.bd19d2",

+        "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": 795.5106153488159,

+        "y": 769.0000886321068,

+        "z": "3b61dfe7.30ac3",

+        "wires": []

+    },

+    {

+        "id": "3dff4920.e6f876",

+        "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-uuid`' />\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": 802.0104761123657,

+        "y": 814.5000364780426,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e8fbb993.4260a8",

+        "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": 749.732949256897,

+        "y": 907.6739270687103,

+        "z": "3b61dfe7.30ac3",

+        "wires": []

+    },

+    {

+        "id": "ce57fa36.d86878",

+        "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": 813.2643537521362,

+        "y": 457.50392746925354,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "e6621181.b6207"

+            ]

+        ]

+    },

+    {

+        "id": "e6621181.b6207",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1100.4872312545776,

+        "y": 457.72624135017395,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "cf9839cf.8bf478",

+                "7fad1cad.2e9334"

+            ]

+        ]

+    },

+    {

+        "id": "cf9839cf.8bf478",

+        "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": 1288.70907497406,

+        "y": 440.0595455169678,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "2663612d.85d52e"

+            ]

+        ]

+    },

+    {

+        "id": "7fad1cad.2e9334",

+        "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": 1299.5487356185913,

+        "y": 480.05954360961914,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "1951da82.25c5f5"

+            ]

+        ]

+    },

+    {

+        "id": "2663612d.85d52e",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1475.70907497406,

+        "y": 436.0595455169678,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "e034463.55bd5b8"

+            ]

+        ]

+    },

+    {

+        "id": "1951da82.25c5f5",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1469.5487356185913,

+        "y": 476.05954360961914,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            [

+                "18d6441f.f0cc5c"

+            ]

+        ]

+    },

+    {

+        "id": "e034463.55bd5b8",

+        "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": 1625.709204673767,

+        "y": 434.65955209732056,

+        "z": "3b61dfe7.30ac3",

+        "wires": []

+    },

+    {

+        "id": "18d6441f.f0cc5c",

+        "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": 1656.882176399231,

+        "y": 474.5207004547119,

+        "z": "3b61dfe7.30ac3",

+        "wires": []

+    },

+    {

+        "id": "67b336e3.64c8a8",

+        "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": 909.5142974853516,

+        "y": 148.00390934944153,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "393d128d.77829e",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-id' value='`$prop.vpn-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": 787.5104932785034,

+        "y": 720.0313081145287,

+        "z": "3b61dfe7.30ac3",

+        "wires": []

+    },

+    {

+        "id": "1788c292.f60a9d",

+        "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",

+        "comments": "",

+        "outputs": 1,

+        "x": 802.0105543136597,

+        "y": 862.0001776218414,

+        "z": "3b61dfe7.30ac3",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.json
new file mode 100644
index 0000000..79b6cb7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.json
@@ -0,0 +1,555 @@
+[

+    {

+        "id": "87eb3467.67ef28",

+        "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": 797.00390625,

+        "y": 151.00015544891357,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6ff7ce0a.951ff",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 158.33714294433594,

+        "y": 45,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "74fd4f3a.4e853"

+            ]

+        ]

+    },

+    {

+        "id": "74fd4f3a.4e853",

+        "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": 237.6228485107422,

+        "y": 107.23810958862305,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "98288506.abeac8"

+            ]

+        ]

+    },

+    {

+        "id": "98288506.abeac8",

+        "type": "method",

+        "name": "method sdwan-vf-operation-vpn-deactivate",

+        "xml": "<method rpc='sdwan-vf-operation-vpn-deactivate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 249.33714294433594,

+        "y": 201.58634185791016,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "99dd38ea.772bf8"

+            ]

+        ]

+    },

+    {

+        "id": "99dd38ea.772bf8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 239.0038185119629,

+        "y": 371.6667160987854,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "87eb3467.67ef28",

+                "fbc323e1.e7c8",

+                "92efdb26.a1dc48",

+                "f685e9f.f092918",

+                "9692eb20.6e3eb8",

+                "4ed48d04.0548b4",

+                "14e78520.2f6ebb",

+                "5fa8f00b.d8012",

+                "e6e38299.18bf5",

+                "265552d2.b6286e",

+                "c10bc8e8.e761d8",

+                "8ab2d64c.eae3d8",

+                "1aef8aa3.927465",

+                "d5916e8b.c3632"

+            ]

+        ]

+    },

+    {

+        "id": "92efdb26.a1dc48",

+        "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": 626.3683891296387,

+        "y": 227.03125858306885,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fbc323e1.e7c8",

+        "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": 596.0662841796875,

+        "y": 188.03122329711914,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4bc65046.8972",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 902.7920036315918,

+        "y": 310.0104169845581,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "39639513.9419aa",

+                "51ec0208.871a0c",

+                "de6a021a.2e26d"

+            ]

+        ]

+    },

+    {

+        "id": "39639513.9419aa",

+        "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": 1097.792064666748,

+        "y": 239.01044368743896,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "17876ecb.2d9e11"

+            ]

+        ]

+    },

+    {

+        "id": "17876ecb.2d9e11",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1271.7921905517578,

+        "y": 239.01044750213623,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "4587c6d7.80cd28"

+            ]

+        ]

+    },

+    {

+        "id": "4587c6d7.80cd28",

+        "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": 1434.7920761108398,

+        "y": 238.61044216156006,

+        "z": "ed1e44d2.195918",

+        "wires": []

+    },

+    {

+        "id": "51ec0208.871a0c",

+        "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": 1108.2085647583008,

+        "y": 286.6770725250244,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "e5e3dbe3.2a4648"

+            ]

+        ]

+    },

+    {

+        "id": "e5e3dbe3.2a4648",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1282.2086906433105,

+        "y": 286.6770763397217,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "a5f45824.51c398"

+            ]

+        ]

+    },

+    {

+        "id": "a5f45824.51c398",

+        "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": 1445.2085762023926,

+        "y": 286.2770709991455,

+        "z": "ed1e44d2.195918",

+        "wires": []

+    },

+    {

+        "id": "f685e9f.f092918",

+        "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": 663.9585075378418,

+        "y": 312.6770887374878,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "4bc65046.8972"

+            ]

+        ]

+    },

+    {

+        "id": "e6e38299.18bf5",

+        "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": 683.7920188903809,

+        "y": 444.0104646682739,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "faf2ca26.f7d2e8",

+                "22680e7d.d029d2",

+                "dd46840b.db1198"

+            ]

+        ]

+    },

+    {

+        "id": "faf2ca26.f7d2e8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 928.7920188903809,

+        "y": 390.0104659497738,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "45fec8c4.77c4d8"

+            ]

+        ]

+    },

+    {

+        "id": "22680e7d.d029d2",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 932.2829856872559,

+        "y": 437.58450159430504,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "c85ef46f.17a478"

+            ]

+        ]

+    },

+    {

+        "id": "dd46840b.db1198",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 927.6159934997559,

+        "y": 478.9178145825863,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "86e5bf28.74a63"

+            ]

+        ]

+    },

+    {

+        "id": "c85ef46f.17a478",

+        "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": 1108.8543968200684,

+        "y": 425.8702376782894,

+        "z": "ed1e44d2.195918",

+        "wires": []

+    },

+    {

+        "id": "86e5bf28.74a63",

+        "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": 1115.3885498046875,

+        "y": 474.3570073544979,

+        "z": "ed1e44d2.195918",

+        "wires": []

+    },

+    {

+        "id": "265552d2.b6286e",

+        "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": 691.7920188903809,

+        "y": 555.0104646682739,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "2ff5851f.5a7bea",

+                "12d4ec03.6bbb94"

+            ]

+        ]

+    },

+    {

+        "id": "2ff5851f.5a7bea",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 930.7920913696289,

+        "y": 533.0104961395264,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "674e737a.7db1dc"

+            ]

+        ]

+    },

+    {

+        "id": "12d4ec03.6bbb94",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 923.0420913696289,

+        "y": 586.6533794403076,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "436e486e.a66d38"

+            ]

+        ]

+    },

+    {

+        "id": "674e737a.7db1dc",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1080.7920188903809,

+        "y": 534.0104646682739,

+        "z": "ed1e44d2.195918",

+        "wires": []

+    },

+    {

+        "id": "436e486e.a66d38",

+        "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": 1075.792091369629,

+        "y": 586.4034404754639,

+        "z": "ed1e44d2.195918",

+        "wires": []

+    },

+    {

+        "id": "45fec8c4.77c4d8",

+        "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": 1126.292079925537,

+        "y": 378.0104659497738,

+        "z": "ed1e44d2.195918",

+        "wires": []

+    },

+    {

+        "id": "9692eb20.6e3eb8",

+        "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": 632.341157913208,

+        "y": 886.5040712356567,

+        "z": "ed1e44d2.195918",

+        "wires": []

+    },

+    {

+        "id": "de6a021a.2e26d",

+        "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": 1105.3410301208496,

+        "y": 336.25391483306885,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "b18071f3.3ff89"

+            ]

+        ]

+    },

+    {

+        "id": "b18071f3.3ff89",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1287.3410625457764,

+        "y": 336.25391364097595,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            [

+                "2b7fb28a.006dbe"

+            ]

+        ]

+    },

+    {

+        "id": "2b7fb28a.006dbe",

+        "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": 1452.3409957885742,

+        "y": 338.8539152145386,

+        "z": "ed1e44d2.195918",

+        "wires": []

+    },

+    {

+        "id": "c10bc8e8.e761d8",

+        "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": 662.337085723877,

+        "y": 606.0000734329224,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8ab2d64c.eae3d8",

+        "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": 724.3371391296387,

+        "y": 644.6667604446411,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1aef8aa3.927465",

+        "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": 697.8371620178223,

+        "y": 685.6670351028442,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d5916e8b.c3632",

+        "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": 692.5558166503906,

+        "y": 846.7032747268677,

+        "z": "ed1e44d2.195918",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4ed48d04.0548b4",

+        "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": 682.9726409912109,

+        "y": 723.968991279602,

+        "z": "ed1e44d2.195918",

+        "wires": []

+    },

+    {

+        "id": "14e78520.2f6ebb",

+        "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": 669.639274597168,

+        "y": 765.3856935501099,

+        "z": "ed1e44d2.195918",

+        "wires": []

+    },

+    {

+        "id": "5fa8f00b.d8012",

+        "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": 721.1193695068359,

+        "y": 804.9730195999146,

+        "z": "ed1e44d2.195918",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.json
new file mode 100644
index 0000000..a5a1266
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.json
@@ -0,0 +1,394 @@
+[

+    {

+        "id": "fd06df59.e448b",

+        "type": "method",

+        "name": "method sdwan-vf-operation-vpn-delete",

+        "xml": "<method rpc='sdwan-vf-operation-vpn-delete' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 350.00390625,

+        "y": 239.99999809265137,

+        "z": "8327690.10df898",

+        "wires": [

+            [

+                "ae12552f.1b72d8"

+            ]

+        ]

+    },

+    {

+        "id": "a46f7aa3.12e428",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 150.0037841796875,

+        "y": 79.99999809265137,

+        "z": "8327690.10df898",

+        "wires": [

+            [

+                "9d19f189.43d7e"

+            ]

+        ]

+    },

+    {

+        "id": "9d19f189.43d7e",

+        "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": 362.00378799438477,

+        "y": 152.00001525878906,

+        "z": "8327690.10df898",

+        "wires": [

+            [

+                "fd06df59.e448b"

+            ]

+        ]

+    },

+    {

+        "id": "ae12552f.1b72d8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 520.4482383728027,

+        "y": 302.44445419311523,

+        "z": "8327690.10df898",

+        "wires": [

+            [

+                "d0cf0fc7.b8968",

+                "1177accf.5897c3",

+                "75bb279f.73ef38",

+                "e0671af2.c6b2e8",

+                "6bcfa69f.78db18",

+                "bea8f0ce.d0388",

+                "d833341a.cfde68",

+                "3c85c2b4.ffe46e",

+                "f03cd2a1.4117",

+                "b2204a07.bb77f8",

+                "24f146a1.309e6a"

+            ]

+        ]

+    },

+    {

+        "id": "d0cf0fc7.b8968",

+        "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": 795.7815093994141,

+        "y": 163.33337020874023,

+        "z": "8327690.10df898",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "24f146a1.309e6a",

+        "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": 917.6363525390625,

+        "y": 618.0062856674194,

+        "z": "8327690.10df898",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1177accf.5897c3",

+        "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": 1000.0039367675781,

+        "y": 102,

+        "z": "8327690.10df898",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "75bb279f.73ef38",

+        "type": "switchNode",

+        "name": "switch tmp.vidx ",

+        "xml": "<switch test=\"`$tmp.vidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 807.00390625,

+        "y": 223.25391244888306,

+        "z": "8327690.10df898",

+        "wires": [

+            [

+                "54560087.3e39f"

+            ]

+        ]

+    },

+    {

+        "id": "54560087.3e39f",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 954.4325485229492,

+        "y": 222.82532262802124,

+        "z": "8327690.10df898",

+        "wires": [

+            [

+                "cd62dbd9.527568"

+            ]

+        ]

+    },

+    {

+        "id": "cd62dbd9.527568",

+        "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": 1103.8612747192383,

+        "y": 223.96824026107788,

+        "z": "8327690.10df898",

+        "wires": []

+    },

+    {

+        "id": "e0671af2.c6b2e8",

+        "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": 851.3020668029785,

+        "y": 293.5711178779602,

+        "z": "8327690.10df898",

+        "wires": [

+            [

+                "f0bab1bb.8e11a",

+                "752158cc.84d648"

+            ]

+        ]

+    },

+    {

+        "id": "f0bab1bb.8e11a",

+        "type": "outcome",

+        "name": "outcome PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1142.1353340148926,

+        "y": 297.6822409629822,

+        "z": "8327690.10df898",

+        "wires": [

+            [

+                "969dab89.d8c088"

+            ]

+        ]

+    },

+    {

+        "id": "752158cc.84d648",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1109.1354713439941,

+        "y": 349.68229365348816,

+        "z": "8327690.10df898",

+        "wires": [

+            [

+                "270b7545.fab24a"

+            ]

+        ]

+    },

+    {

+        "id": "270b7545.fab24a",

+        "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": 1268.635238647461,

+        "y": 352.68229269981384,

+        "z": "8327690.10df898",

+        "wires": []

+    },

+    {

+        "id": "969dab89.d8c088",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1339.4417343139648,

+        "y": 308.0073952674866,

+        "z": "8327690.10df898",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b2204a07.bb77f8",

+        "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": 810.413330078125,

+        "y": 679.459981918335,

+        "z": "8327690.10df898",

+        "wires": []

+    },

+    {

+        "id": "6bcfa69f.78db18",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",

+        "comments": "",

+        "x": 829.4999313354492,

+        "y": 364.5712866783142,

+        "z": "8327690.10df898",

+        "wires": []

+    },

+    {

+        "id": "bea8f0ce.d0388",

+        "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": 905.4998512268066,

+        "y": 418.57116174697876,

+        "z": "8327690.10df898",

+        "wires": [

+            [

+                "aedffdd.ac084"

+            ]

+        ]

+    },

+    {

+        "id": "d833341a.cfde68",

+        "type": "set",

+        "name": "set new vf-module 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": 853.6012229919434,

+        "y": 465.3753876686096,

+        "z": "8327690.10df898",

+        "wires": []

+    },

+    {

+        "id": "3c85c2b4.ffe46e",

+        "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": 874.4998588562012,

+        "y": 570.5712801218033,

+        "z": "8327690.10df898",

+        "wires": []

+    },

+    {

+        "id": "aedffdd.ac084",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1165.4998416900635,

+        "y": 425.57102155685425,

+        "z": "8327690.10df898",

+        "wires": [

+            [

+                "206f222a.5e1fde"

+            ]

+        ]

+    },

+    {

+        "id": "206f222a.5e1fde",

+        "type": "switchNode",

+        "name": "switch vf-module-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": 1360.4999084472656,

+        "y": 424.5711736679077,

+        "z": "8327690.10df898",

+        "wires": [

+            [

+                "45b26eb8.7bd4e"

+            ]

+        ]

+    },

+    {

+        "id": "45b26eb8.7bd4e",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1538.499942779541,

+        "y": 418.57105827331543,

+        "z": "8327690.10df898",

+        "wires": [

+            [

+                "8540afc1.b6629"

+            ]

+        ]

+    },

+    {

+        "id": "8540afc1.b6629",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1674.4997549057007,

+        "y": 416.57102060317993,

+        "z": "8327690.10df898",

+        "wires": [

+            [

+                "73486d68.025024",

+                "d3ec464b.f61398"

+            ]

+        ]

+    },

+    {

+        "id": "73486d68.025024",

+        "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": 1839.4998502731323,

+        "y": 391.5711760520935,

+        "z": "8327690.10df898",

+        "wires": []

+    },

+    {

+        "id": "d3ec464b.f61398",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",

+        "comments": "",

+        "x": 1861.4998502731323,

+        "y": 447.5711398124695,

+        "z": "8327690.10df898",

+        "wires": []

+    },

+    {

+        "id": "f03cd2a1.4117",

+        "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": 857.3021049499512,

+        "y": 511.90447902679443,

+        "z": "8327690.10df898",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.json
new file mode 100644
index 0000000..d15b6f4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.json
@@ -0,0 +1,2147 @@
+[

+    {

+        "id": "c035ec04.94486",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 412.03125,

+        "y": 401.0742133259773,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "2c0218a8.7af2b8",

+                "1f6673b6.b9e2bc",

+                "6a69d786.6240c8",

+                "70fe077e.beb658",

+                "f695d756.f5bf88",

+                "6e84f4e0.63170c",

+                "c05b3e2e.c56c2",

+                "d49c55eb.f90268",

+                "80c1b0f1.09ead",

+                "875b58c1.722a88",

+                "80c24ef7.49b8c",

+                "c34bc647.720578",

+                "b10288cf.50b828",

+                "ebd64e1b.5f8b",

+                "fb9080f.263d28",

+                "1b602e84.4e29d1",

+                "13c3d9c7.d7be26",

+                "7cfc5672.5cd958",

+                "e3dbbb08.e38228",

+                "56d337a2.42bd48",

+                "ac8c0e0b.c16e8",

+                "b2116c6a.8c28d",

+                "373e5110.89b67e"

+            ]

+        ]

+    },

+    {

+        "id": "104d1a5d.263766",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 136.50391006469727,

+        "y": 49.99999934434891,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "f7c9184f.6b4338"

+            ]

+        ]

+    },

+    {

+        "id": "f7c9184f.6b4338",

+        "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.78960037231445,

+        "y": 99.23810797929764,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "3243adac.5d74d2"

+            ]

+        ]

+    },

+    {

+        "id": "3243adac.5d74d2",

+        "type": "method",

+        "name": "method sdwan-vf-operation-wanport-activate",

+        "xml": "<method rpc='sdwan-vf-operation-wanport-activate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 270.9325294494629,

+        "y": 184.00003176927567,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "c035ec04.94486"

+            ]

+        ]

+    },

+    {

+        "id": "1f6673b6.b9e2bc",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 732.0352430343628,

+        "y": 206.07812786102295,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "5147dcf9.72e104"

+            ]

+        ]

+    },

+    {

+        "id": "5147dcf9.72e104",

+        "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": 984.0353345870972,

+        "y": 204.7447910308838,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "9e1e4c5d.8f94b"

+            ]

+        ]

+    },

+    {

+        "id": "e1cf115f.fb631",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1355.701823234558,

+        "y": 206.74479389190674,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "9e1e4c5d.8f94b",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1202.3686513900757,

+        "y": 206.74477291107178,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "e1cf115f.fb631"

+            ]

+        ]

+    },

+    {

+        "id": "2c0218a8.7af2b8",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 746.4558362960815,

+        "y": 161.5819969177246,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "c03192e4.9b0ca"

+            ]

+        ]

+    },

+    {

+        "id": "c03192e4.9b0ca",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 933.1225156784058,

+        "y": 160.9152946472168,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "e59b1c5.c6419e"

+            ]

+        ]

+    },

+    {

+        "id": "e59b1c5.c6419e",

+        "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": 1114.7891416549683,

+        "y": 160.9152946472168,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "64462554.f87c5c",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1385.0352506637573,

+        "y": 376.0781182949431,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "2b34d588.91d9ba"

+            ]

+        ]

+    },

+    {

+        "id": "4382a853.f690f8",

+        "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": 1860.321159362793,

+        "y": 255.6496185963042,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "a2ccd51e.6ab248"

+            ]

+        ]

+    },

+    {

+        "id": "2a399e1c.cfc832",

+        "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": 1371.6068754196167,

+        "y": 339.8560047149658,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "a3a45f94.9b15b",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1175.9082708358765,

+        "y": 353.2368898098357,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "64462554.f87c5c",

+                "2a399e1c.cfc832",

+                "da9e03c9.e0425",

+                "eaea3f61.2ed1c"

+            ]

+        ]

+    },

+    {

+        "id": "b2b8906.60ed47",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1031.5512266159058,

+        "y": 353.3003778164275,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "a3a45f94.9b15b"

+            ]

+        ]

+    },

+    {

+        "id": "6a69d786.6240c8",

+        "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": 795.5512084960938,

+        "y": 280.3003902435303,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "b2b8906.60ed47",

+                "fba84335.d8b1d",

+                "79ae37d1.662938"

+            ]

+        ]

+    },

+    {

+        "id": "fba84335.d8b1d",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1037.0352449417114,

+        "y": 252.0781192779541,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "54644bad.709854"

+            ]

+        ]

+    },

+    {

+        "id": "79ae37d1.662938",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1039.0664339065552,

+        "y": 289.10943031311035,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "54644bad.709854"

+            ]

+        ]

+    },

+    {

+        "id": "54644bad.709854",

+        "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": 1196.8439493179321,

+        "y": 269.9983787536621,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "a2ccd51e.6ab248",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2064.035400390625,

+        "y": 254.078125,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "62040d29.f7cdb4"

+            ]

+        ]

+    },

+    {

+        "id": "62040d29.f7cdb4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2234.3786964416504,

+        "y": 258.16426038742065,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "fc1d3c79.aeeb2",

+                "6bcbedec.395b24",

+                "234f2dc2.1759a2"

+            ]

+        ]

+    },

+    {

+        "id": "fc1d3c79.aeeb2",

+        "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": 2490.2654457092285,

+        "y": 225.5066914265044,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "6bcbedec.395b24",

+        "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": 2484.711742401123,

+        "y": 270.1643314361572,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "d3ee2888.9d77a8",

+        "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": 1726.5354919433594,

+        "y": 330.0781478881836,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "9fa9ec4f.79402"

+            ]

+        ]

+    },

+    {

+        "id": "9fa9ec4f.79402",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1943.5350036621094,

+        "y": 327.078164100647,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "77c02877.97d538"

+            ]

+        ]

+    },

+    {

+        "id": "77c02877.97d538",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2084.9478454589844,

+        "y": 325.0742874145508,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "9f2a0eee.e853e"

+            ]

+        ]

+    },

+    {

+        "id": "9f2a0eee.e853e",

+        "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": 2138.2817993164062,

+        "y": 413.07432651519775,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "8e4c1426.0eb8f8",

+                "6f9f5d8c.8e78c4"

+            ]

+        ]

+    },

+    {

+        "id": "2b34d588.91d9ba",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1653.5353622436523,

+        "y": 259.07813262939453,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "4382a853.f690f8"

+            ]

+        ]

+    },

+    {

+        "id": "1577b943.bcf897",

+        "type": "comment",

+        "name": "Get devices",

+        "info": "",

+        "comments": "",

+        "x": 1650.5354309082031,

+        "y": 292.0781021118164,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "da9e03c9.e0425",

+        "type": "set",

+        "name": "set prop.site.deviceId_length",

+        "xml": "<set>\n<parameter name='prop.site.deviceId_length' value='0' />\n",

+        "comments": "",

+        "x": 1398.0352430343628,

+        "y": 304.07812786102295,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "70fe077e.beb658",

+        "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": 747.03528881073,

+        "y": 369.07813453674316,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6f9f5d8c.8e78c4",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2389.281581878662,

+        "y": 358.07453441619873,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "a8b37f6f.fba0e"

+            ]

+        ]

+    },

+    {

+        "id": "a8b37f6f.fba0e",

+        "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[$didx].name == 'deviceId'`\">\n    ",

+        "comments": "",

+        "outputs": 1,

+        "x": 2549.281837463379,

+        "y": 360.074387550354,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "87989e81.e2271"

+            ]

+        ]

+    },

+    {

+        "id": "87989e81.e2271",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2701.282009124756,

+        "y": 359.074387550354,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "444a86d7.7e9688"

+            ]

+        ]

+    },

+    {

+        "id": "444a86d7.7e9688",

+        "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[$didx].value`' />\n<parameter name='prop.site.deviceId_length' value='`$prop.site.deviceId_length + 1`' />\n",

+        "comments": "",

+        "x": 2841.282012939453,

+        "y": 358.67434215545654,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "234f2dc2.1759a2",

+        "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": 2476.0081939697266,

+        "y": 317.0039300918579,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "384abebf.660182",

+        "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 == 'ActivateSDWANSiteInstance'`\">\n    ",

+        "comments": "",

+        "outputs": 1,

+        "x": 1658.5078411102295,

+        "y": 460.753945350647,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "c09587b7.5f9cf8"

+            ]

+        ]

+    },

+    {

+        "id": "c09587b7.5f9cf8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1843.5077819824219,

+        "y": 459.75391483306885,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "5c175f4a.341cd"

+            ]

+        ]

+    },

+    {

+        "id": "5c175f4a.341cd",

+        "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": 1999.237880706787,

+        "y": 459.1824731826782,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "8e4c1426.0eb8f8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2407.7580223083496,

+        "y": 437.00396156311035,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "a980e0f8.0e044",

+                "83ba6051.514ec"

+            ]

+        ]

+    },

+    {

+        "id": "a980e0f8.0e044",

+        "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": 2633.4257316589355,

+        "y": 438.3374605178833,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "6ce07c96.ec5694"

+            ]

+        ]

+    },

+    {

+        "id": "6ce07c96.ec5694",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2835.426223754883,

+        "y": 432.33752059936523,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "b284daf0.15c368"

+            ]

+        ]

+    },

+    {

+        "id": "b284daf0.15c368",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2725.7590866088867,

+        "y": 532.3374004364014,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "ff2db442.93cc88",

+                "d9c35361.4cae6"

+            ]

+        ]

+    },

+    {

+        "id": "ff2db442.93cc88",

+        "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": 2949.4259338378906,

+        "y": 553.3374767303467,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "6c76f644.530508"

+            ]

+        ]

+    },

+    {

+        "id": "6c76f644.530508",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3128.7598571777344,

+        "y": 552.3375368118286,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "4a207bb3.acbf84"

+            ]

+        ]

+    },

+    {

+        "id": "4a207bb3.acbf84",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2977.0919761657715,

+        "y": 622.3373546600342,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "23329d72.a46fe2",

+                "ec041845.3df8f8",

+                "350746df.c7aa7a"

+            ]

+        ]

+    },

+    {

+        "id": "ec041845.3df8f8",

+        "type": "set",

+        "name": "set tmp.devicevidx",

+        "xml": "<set>\n<parameter name='tmp.devicevidx' value='`$idx`' />\n\n",

+        "comments": "",

+        "x": 3227.847911834717,

+        "y": 743.0104494094849,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "bbbb9202.35efa",

+        "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": 3526.5161094665527,

+        "y": 683.6773900985718,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "9b825598.e065f8"

+            ]

+        ]

+    },

+    {

+        "id": "9b825598.e065f8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3679.5164794921875,

+        "y": 684.6774673461914,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "535441.d4b46bc"

+            ]

+        ]

+    },

+    {

+        "id": "535441.d4b46bc",

+        "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": 3848.5170860290527,

+        "y": 683.2775020599365,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "23329d72.a46fe2",

+        "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": 3270.0460090637207,

+        "y": 618.0417184829712,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "c7ebbbc9.4cdac8"

+            ]

+        ]

+    },

+    {

+        "id": "c7ebbbc9.4cdac8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3347.0467414855957,

+        "y": 682.0418176651001,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "bbbb9202.35efa"

+            ]

+        ]

+    },

+    {

+        "id": "9a0868fe.086fc8",

+        "type": "comment",

+        "name": "Get siteId from site resource created for this service",

+        "info": "",

+        "comments": "",

+        "x": 845.7579207420349,

+        "y": 425.0039300918579,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "f695d756.f5bf88",

+        "type": "for",

+        "name": "for loop sidx - Get siteId from servicedata",

+        "xml": "<for index=\"sidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.siteVidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n    \n    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 808.7579183578491,

+        "y": 463.670597076416,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "a691d394.7222c"

+            ]

+        ]

+    },

+    {

+        "id": "a691d394.7222c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1070.7681112289429,

+        "y": 464.34742164611816,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "49b25c34.232f54"

+            ]

+        ]

+    },

+    {

+        "id": "49b25c34.232f54",

+        "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": 1239.758246421814,

+        "y": 464.67072772979736,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "e9f3d00d.b65c8"

+            ]

+        ]

+    },

+    {

+        "id": "e9f3d00d.b65c8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1380.7587461471558,

+        "y": 465.6708056330681,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "40c977c1.d08e48"

+            ]

+        ]

+    },

+    {

+        "id": "40c977c1.d08e48",

+        "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": 1545.7588033676147,

+        "y": 498.27067440748215,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "ac8c0e0b.c16e8",

+        "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": 783.7578811645508,

+        "y": 558.7539501190186,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "c1fa285b.bc5508",

+                "80c1b9db.ee9048",

+                "b11a07e0.9253a8"

+            ]

+        ]

+    },

+    {

+        "id": "c1fa285b.bc5508",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1015.7579650878906,

+        "y": 522.7539730072021,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "ce2c3219.0bfd4"

+            ]

+        ]

+    },

+    {

+        "id": "80c1b9db.ee9048",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1018.2488479614258,

+        "y": 558.3280096054077,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "492200e7.6d98d"

+            ]

+        ]

+    },

+    {

+        "id": "b11a07e0.9253a8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1013.5818557739258,

+        "y": 594.6613683700562,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "8b634775.e65fc8"

+            ]

+        ]

+    },

+    {

+        "id": "8b634775.e65fc8",

+        "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": 1167.354347229004,

+        "y": 592.1004552841187,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "492200e7.6d98d",

+        "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": 1163.8202438354492,

+        "y": 556.613697052002,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "ce2c3219.0bfd4",

+        "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": 1171.2580795288086,

+        "y": 521.7538652420044,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "b2116c6a.8c28d",

+        "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": 798.26806640625,

+        "y": 645.4309692382812,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "4c685461.5dffec",

+                "d286ff7f.c649c"

+            ]

+        ]

+    },

+    {

+        "id": "4c685461.5dffec",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1017.2681655883789,

+        "y": 633.4309549331665,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "f122de3.c7c352"

+            ]

+        ]

+    },

+    {

+        "id": "f122de3.c7c352",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1159.2681732177734,

+        "y": 632.4309558868408,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "62588c42.e35064",

+        "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": 1165.2681732177734,

+        "y": 669.8239440917969,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "d286ff7f.c649c",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1016.5181655883789,

+        "y": 669.0738620758057,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "62588c42.e35064"

+            ]

+        ]

+    },

+    {

+        "id": "373e5110.89b67e",

+        "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": 770.2677612304688,

+        "y": 688.7640700340271,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6e84f4e0.63170c",

+        "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": 811.4033203125,

+        "y": 731.4549427032471,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "740e16d5.3fe028"

+            ]

+        ]

+    },

+    {

+        "id": "740e16d5.3fe028",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1039.2993125915527,

+        "y": 710.3769226074219,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "2f0c006b.ded27"

+            ]

+        ]

+    },

+    {

+        "id": "2f0c006b.ded27",

+        "type": "switchNode",

+        "name": "switch portType",

+        "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 == 'portType'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1188.4164733886719,

+        "y": 713.350341796875,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "66262e7a.e2046"

+            ]

+        ]

+    },

+    {

+        "id": "66262e7a.e2046",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1335.4164791107178,

+        "y": 712.350341796875,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "62d59258.9c5bfc"

+            ]

+        ]

+    },

+    {

+        "id": "62d59258.9c5bfc",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1477.4031982421875,

+        "y": 711.232666015625,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "5ec692b5.0b935c",

+                "b44ace5e.c0e25"

+            ]

+        ]

+    },

+    {

+        "id": "5ec692b5.0b935c",

+        "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[$idx].value`\">\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1685.0698699951172,

+        "y": 684.232780456543,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "c5b687f3.857b88"

+            ]

+        ]

+    },

+    {

+        "id": "c5b687f3.857b88",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1862.4041595458984,

+        "y": 685.232873916626,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "378cca9b.a5b416"

+            ]

+        ]

+    },

+    {

+        "id": "b44ace5e.c0e25",

+        "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[$idx].value`\">\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1687.403305053711,

+        "y": 744.2326622009277,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "26e9f8af.0429a8"

+            ]

+        ]

+    },

+    {

+        "id": "26e9f8af.0429a8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1865.4034271240234,

+        "y": 745.2326927185059,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "305bbeca.e00732"

+            ]

+        ]

+    },

+    {

+        "id": "670bf5eb.ea088c",

+        "type": "comment",

+        "name": "set linkType as Ethernet",

+        "info": "",

+        "comments": "",

+        "x": 2521.403398513794,

+        "y": 676.2328190803528,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "b5df7be8.c4cd08",

+        "type": "comment",

+        "name": "set linkType as Cellular",

+        "info": "",

+        "comments": "",

+        "x": 2150.625801086426,

+        "y": 847.2327299118042,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "48d30534.c6f1dc",

+        "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-ethernet.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": 2273.5155029296875,

+        "y": 700.788872718811,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "5041cf01.1a87f",

+                "98a7c6cb.bee538"

+            ]

+        ]

+    },

+    {

+        "id": "98a7c6cb.bee538",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2571.51513671875,

+        "y": 715.7888793945312,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "5dbd5d2b.58a3a4"

+            ]

+        ]

+    },

+    {

+        "id": "5041cf01.1a87f",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2569.515333175659,

+        "y": 763.7890648841858,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "f3695bfd.383518"

+            ]

+        ]

+    },

+    {

+        "id": "5dbd5d2b.58a3a4",

+        "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": 2715.5154705047607,

+        "y": 714.7888789176941,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "f3695bfd.383518",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2716.515344619751,

+        "y": 764.7889037132263,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2063a51e.4f858a",

+        "type": "set",

+        "name": "set prop.wan.linkType Ethernet",

+        "xml": "<set>\n<parameter name='prop.wan.linkType' value=\"Ethernet\" />\n\n",

+        "comments": "",

+        "x": 2232.181255340576,

+        "y": 650.6770839691162,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "47db832a.5a4cfc",

+        "type": "set",

+        "name": "set prop.wan.linkType Cellular",

+        "xml": "<set>\n<parameter name='prop.wan.linkType' value=\"Cellular\" />",

+        "comments": "",

+        "x": 2223.1819915771484,

+        "y": 740.6773319244385,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "e3dbbb08.e38228",

+        "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": 849.5352249145508,

+        "y": 865.0782594680786,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "a500d0ed.62c",

+                "861df4ee.035a68"

+            ]

+        ]

+    },

+    {

+        "id": "762c61a4.e1eb1",

+        "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-static.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": 2334.535400390625,

+        "y": 1095.078369140625,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "37c3fbe5.914474",

+                "6931e9af.4d41e8"

+            ]

+        ]

+    },

+    {

+        "id": "5756eb85.eba0a4",

+        "type": "set",

+        "name": "set prop.wan.transportNetworkId",

+        "xml": "<set>\n<parameter name='prop.wan.transportNetworkId' value='`$transportNetworksResp.data.transportNetworks[$tidx].id`' />\n",

+        "comments": "",

+        "x": 1755.526222229004,

+        "y": 932.0683574676514,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "d49c55eb.f90268",

+        "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": 773.5250129699707,

+        "y": 1045.4012684822083,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "383c4ac6.09fc66",

+                "8e012e1c.09a21"

+            ]

+        ]

+    },

+    {

+        "id": "8e012e1c.09a21",

+        "type": "failure",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 974.525032043457,

+        "y": 1023.4012598991394,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "cb5fc8fa.fa8e98"

+            ]

+        ]

+    },

+    {

+        "id": "383c4ac6.09fc66",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 974.5250358581543,

+        "y": 1064.4012637138367,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "817fc6e4.b6fae8"

+            ]

+        ]

+    },

+    {

+        "id": "cb5fc8fa.fa8e98",

+        "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": 1171.5250511169434,

+        "y": 1021.4012598991394,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "817fc6e4.b6fae8",

+        "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": 1129.5250434875488,

+        "y": 1061.4012627601624,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "53cc9234.85a59c",

+        "type": "switchNode",

+        "name": "switch transportNetworkName same",

+        "xml": "<switch test=\"`$transportNetworksResp.data.transportNetworks[$tidx].name == $prop.wan.transportNetworkName`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1305.5359115600586,

+        "y": 932.7446822226048,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "4fa94d3a.e537f4"

+            ]

+        ]

+    },

+    {

+        "id": "4fa94d3a.e537f4",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1552.5355110168457,

+        "y": 931.7446208000183,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "5756eb85.eba0a4"

+            ]

+        ]

+    },

+    {

+        "id": "98b0fb0a.11a348",

+        "type": "set",

+        "name": "set prop.wan.wanPortId",

+        "xml": "<set>\n<parameter name='prop.wan.wanPortId' value='`$wanPortResp.success[0].id`' />\n",

+        "comments": "",

+        "x": 3017.859630584717,

+        "y": 1167.735188484192,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "c05b3e2e.c56c2",

+        "type": "set",

+        "name": "set prop.wan.devicePortId",

+        "xml": "<set>\n<parameter name='prop.wan.devicePortId' value='`$portResp.success[0].id`' />\n",

+        "comments": "",

+        "x": 768.5259780883789,

+        "y": 813.0681133270264,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "99969f83.61572",

+        "type": "comment",

+        "name": "Get network id",

+        "info": "",

+        "comments": "",

+        "x": 957.5348739624023,

+        "y": 830.4112663269043,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "27fc10fd.3b3f1",

+        "type": "comment",

+        "name": "Create wan port",

+        "info": "",

+        "comments": "",

+        "x": 757.5349006652832,

+        "y": 1010.4114007949829,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "6931e9af.4d41e8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2632.5352363586426,

+        "y": 1123.077961921692,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "ae57ad7a.32b7e"

+            ]

+        ]

+    },

+    {

+        "id": "37c3fbe5.914474",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2630.53515625,

+        "y": 1170.078125,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "a5479d2b.17725"

+            ]

+        ]

+    },

+    {

+        "id": "a5479d2b.17725",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2799.5351638793945,

+        "y": 1170.0779618024826,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "98b0fb0a.11a348"

+            ]

+        ]

+    },

+    {

+        "id": "559ead8e.df65a4",

+        "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": 2971.535572052002,

+        "y": 1124.0779609680176,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "861df4ee.035a68",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1151.5347290039062,

+        "y": 844.0777535438538,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "adf44e66.a9236"

+            ]

+        ]

+    },

+    {

+        "id": "a500d0ed.62c",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1151.534725189209,

+        "y": 884.0779185295105,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "3bdf5a32.48ffc6"

+            ]

+        ]

+    },

+    {

+        "id": "3bdf5a32.48ffc6",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1295.534740447998,

+        "y": 883.0777554512024,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "adf44e66.a9236",

+        "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": 1293.5350608825684,

+        "y": 843.0777535438538,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "44741458.9316ac",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1055.535514831543,

+        "y": 931.4113087654114,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "53cc9234.85a59c"

+            ]

+        ]

+    },

+    {

+        "id": "56d337a2.42bd48",

+        "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": 811.5351943969727,

+        "y": 934.4111309051514,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "44741458.9316ac"

+            ]

+        ]

+    },

+    {

+        "id": "ae57ad7a.32b7e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2792.5389862060547,

+        "y": 1121.5817041397095,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "80c1b0f1.09ead",

+        "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": 816.8372001647949,

+        "y": 1130.6666526794434,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "df2b15e3.9b12e8"

+            ]

+        ]

+    },

+    {

+        "id": "df2b15e3.9b12e8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1060.733154296875,

+        "y": 1129.5886244773865,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "e69d5573.0921e8"

+            ]

+        ]

+    },

+    {

+        "id": "e69d5573.0921e8",

+        "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": 1208.850399017334,

+        "y": 1131.562108039856,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "65d16ab9.689c24"

+            ]

+        ]

+    },

+    {

+        "id": "65d16ab9.689c24",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1356.850383758545,

+        "y": 1128.5620727539062,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "b02a711.92b019"

+            ]

+        ]

+    },

+    {

+        "id": "b02a711.92b019",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1513.837200164795,

+        "y": 1130.444423675537,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "c4bd3155.18d9f",

+                "246c2fd8.8350c"

+            ]

+        ]

+    },

+    {

+        "id": "c4bd3155.18d9f",

+        "type": "switchNode",

+        "name": "switch IPMode Static match",

+        "xml": "<switch test=\"`Static == $prop.wan.IPMode`\">\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1717.5041809082031,

+        "y": 1104.4446493983269,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "62c11f1c.a8387"

+            ]

+        ]

+    },

+    {

+        "id": "246c2fd8.8350c",

+        "type": "switchNode",

+        "name": "switch IPMode DHCP match",

+        "xml": "<switch test=\"`DHCP == $prop.wan.IPMode`\">\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1717.8373489379883,

+        "y": 1160.4445750117302,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "81f33bac.e89fe8"

+            ]

+        ]

+    },

+    {

+        "id": "c34bc647.720578",

+        "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": 737.4032592773438,

+        "y": 1549.5665283203125,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "875b58c1.722a88",

+        "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": 777.0597534179688,

+        "y": 1174.2227783203125,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "7cfc5672.5cd958",

+        "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.vf-module-information.vf-module-id' >\n<parameter name=\"wan-port-config-id\" value='`$vf-module-topology-operation-input.vf-module-information.vf-module-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",

+        "comments": "",

+        "outputs": 1,

+        "x": 854.7223510742188,

+        "y": 1493.3707275390625,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "80c24ef7.49b8c",

+        "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": 783.0687103271484,

+        "y": 1264.4818954467773,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "e72e5636.3932b8",

+        "type": "set",

+        "name": "set IP params",

+        "xml": "<set>\n<parameter name='prop.wan.IpMode' value=\"static\" />\n<parameter name='prop.wan.ipAddress' value='`$prop.wan.ip-address`' />\n<parameter name='prop.route.nextHopType' value=\"ip-address\" />\n\n\n",

+        "comments": "",

+        "x": 2257.29248046875,

+        "y": 1043.8992919921875,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "413a8e72.8c216",

+        "type": "set",

+        "name": "set IP params",

+        "xml": "<set>\n<parameter name='prop.wan.ipAddress' value=\"\" />\n<parameter name='prop.wan.prefixLength' value=\"\" />\n<parameter name='prop.wan.providerIpAddress' value=\"\" />\n<parameter name='prop.wan.IpMode' value=\"DHCP\" />\n<parameter name='prop.route.nextHopType' value=\"outbound-interface\" />\n\n\n\n",

+        "comments": "",

+        "x": 2254.754150390625,

+        "y": 1158,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "eaea3f61.2ed1c",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1378.5039930343628,

+        "y": 415.0000114440918,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "d3ee2888.9d77a8",

+                "384abebf.660182"

+            ]

+        ]

+    },

+    {

+        "id": "83ba6051.514ec",

+        "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": 2584.837371826172,

+        "y": 398.000057220459,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d9c35361.4cae6",

+        "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": 2908.8371925354004,

+        "y": 497.99996757507324,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "350746df.c7aa7a",

+        "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": 3207.837417602539,

+        "y": 782.0000143051147,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "62c11f1c.a8387",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1906.5040321350098,

+        "y": 1104.666739165783,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "a07e9d6c.b352"

+            ]

+        ]

+    },

+    {

+        "id": "81f33bac.e89fe8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1905.5040283203125,

+        "y": 1158.6667429804802,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "d91929ad.827e18"

+            ]

+        ]

+    },

+    {

+        "id": "b10288cf.50b828",

+        "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": 785.5351791381836,

+        "y": 1219.0313739776611,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "ebd64e1b.5f8b",

+        "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": 793.5351791381836,

+        "y": 1304.0313758850098,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "1b602e84.4e29d1",

+        "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": 813.0351905822754,

+        "y": 1406.0313718048856,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "13c3d9c7.d7be26",

+        "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": 779.0351905822754,

+        "y": 1454.5313727585599,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "fb9080f.263d28",

+        "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": 777.0351448059082,

+        "y": 1358.2813262939453,

+        "z": "fe63ab05.2e2948",

+        "wires": []

+    },

+    {

+        "id": "378cca9b.a5b416",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2008.0313453674316,

+        "y": 687.0313034057617,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "2063a51e.4f858a",

+                "48d30534.c6f1dc"

+            ]

+        ]

+    },

+    {

+        "id": "305bbeca.e00732",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2008.031234741211,

+        "y": 768.0313053131104,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "47db832a.5a4cfc",

+                "82afc539.6a24f8"

+            ]

+        ]

+    },

+    {

+        "id": "82afc539.6a24f8",

+        "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-cellular.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": 2271.03125,

+        "y": 800.03125,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "98a7c6cb.bee538",

+                "5041cf01.1a87f"

+            ]

+        ]

+    },

+    {

+        "id": "a07e9d6c.b352",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2073,

+        "y": 1072,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "e72e5636.3932b8",

+                "762c61a4.e1eb1"

+            ]

+        ]

+    },

+    {

+        "id": "d91929ad.827e18",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2069,

+        "y": 1176,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "413a8e72.8c216",

+                "9127fd6f.551ca"

+            ]

+        ]

+    },

+    {

+        "id": "9127fd6f.551ca",

+        "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-dhcp.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": 2337,

+        "y": 1198,

+        "z": "fe63ab05.2e2948",

+        "wires": [

+            [

+                "6931e9af.4d41e8",

+                "37c3fbe5.914474"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.json
new file mode 100644
index 0000000..e76571f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.json
@@ -0,0 +1,533 @@
+[

+    {

+        "id": "aee5dac3.29d8f8",

+        "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": 259.0104064941406,

+        "y": 136.99999237060547,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "92f80405.527238"

+            ]

+        ]

+    },

+    {

+        "id": "92f80405.527238",

+        "type": "method",

+        "name": "sdwan-vf-operation-wanport-create",

+        "xml": "<method rpc='sdwan-vf-operation-wanport-create' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 258.0104064941406,

+        "y": 236.99999237060547,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "8357a961.bd7368"

+            ]

+        ]

+    },

+    {

+        "id": "a10fd13a.8313d",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 115.51040267944336,

+        "y": 46,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "aee5dac3.29d8f8"

+            ]

+        ]

+    },

+    {

+        "id": "8357a961.bd7368",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 417.01039123535156,

+        "y": 353.0000009536743,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "c20a7dc0.e21ea",

+                "b9fc1e5f.5b376",

+                "1b6a0c2c.530674",

+                "dfd3a664.1be748",

+                "f3dc4ebd.df298",

+                "cae5d4a0.b09a38",

+                "67d04e5d.908a3",

+                "fd081780.8915a8",

+                "4fc9e2ee.90febc",

+                "cdfc7ae4.0514d8",

+                "2814f80b.cacb28",

+                "da49c07c.27b0f",

+                "3699b36a.223adc",

+                "1bf42dc2.073fb2"

+            ]

+        ]

+    },

+    {

+        "id": "c20a7dc0.e21ea",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 717.3398132324219,

+        "y": 244.49612522125244,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "fc97057b.994b78"

+            ]

+        ]

+    },

+    {

+        "id": "fc97057b.994b78",

+        "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": 969.3399047851562,

+        "y": 243.16278839111328,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "df301c25.93aef"

+            ]

+        ]

+    },

+    {

+        "id": "311e101f.d5d19",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1341.0063934326172,

+        "y": 245.16279125213623,

+        "z": "3e6f238d.8b432c",

+        "wires": []

+    },

+    {

+        "id": "df301c25.93aef",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1187.6732215881348,

+        "y": 245.16277027130127,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "311e101f.d5d19"

+            ]

+        ]

+    },

+    {

+        "id": "dfd3a664.1be748",

+        "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.2605972290039,

+        "y": 466.66665840148926,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "aad3c15.925ee4"

+            ]

+        ]

+    },

+    {

+        "id": "aad3c15.925ee4",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1006.0389404296875,

+        "y": 464.2222423553467,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "917fbe88.711cc",

+                "c43ea4c0.149928"

+            ]

+        ]

+    },

+    {

+        "id": "917fbe88.711cc",

+        "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.2951431274414,

+        "y": 441.97038078308105,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c43ea4c0.149928",

+        "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.7395706176758,

+        "y": 478.97049713134766,

+        "z": "3e6f238d.8b432c",

+        "wires": []

+    },

+    {

+        "id": "5248680e.c068e8",

+        "type": "comment",

+        "name": "Take the parameter names by removing prefix",

+        "info": "",

+        "comments": "",

+        "x": 1175.260799407959,

+        "y": 401.33332681655884,

+        "z": "3e6f238d.8b432c",

+        "wires": []

+    },

+    {

+        "id": "b9fc1e5f.5b376",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 731.7604064941406,

+        "y": 199.9999942779541,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "c77be859.d85c08"

+            ]

+        ]

+    },

+    {

+        "id": "c77be859.d85c08",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 918.4270858764648,

+        "y": 199.3332920074463,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "c9a6db6e.787d58"

+            ]

+        ]

+    },

+    {

+        "id": "c9a6db6e.787d58",

+        "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": 1100.0937118530273,

+        "y": 199.3332920074463,

+        "z": "3e6f238d.8b432c",

+        "wires": []

+    },

+    {

+        "id": "1b6a0c2c.530674",

+        "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": 773.0103960037231,

+        "y": 319.9999952316284,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "9acf5c90.6cf6",

+                "ffb3f2fc.2e117"

+            ]

+        ]

+    },

+    {

+        "id": "9acf5c90.6cf6",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1004.0104064941406,

+        "y": 295.99999237060547,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "8e0399d7.7006d8"

+            ]

+        ]

+    },

+    {

+        "id": "ffb3f2fc.2e117",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1004.0104064941406,

+        "y": 335.99999237060547,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "ef3e733d.2d036"

+            ]

+        ]

+    },

+    {

+        "id": "8e0399d7.7006d8",

+        "type": "set",

+        "name": "set vf-index",

+        "xml": "<set>\n<parameter name='vf-index' value='0' />\n",

+        "comments": "",

+        "x": 1146.5104064941406,

+        "y": 295.99999237060547,

+        "z": "3e6f238d.8b432c",

+        "wires": []

+    },

+    {

+        "id": "ef3e733d.2d036",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1148.3674507141113,

+        "y": 335.9365043640137,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "1d25ad68.e6ab83",

+                "461a624f.09559c"

+            ]

+        ]

+    },

+    {

+        "id": "461a624f.09559c",

+        "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": 1301.0659255981445,

+        "y": 305.5556030566804,

+        "z": "3e6f238d.8b432c",

+        "wires": []

+    },

+    {

+        "id": "1d25ad68.e6ab83",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1357.4944305419922,

+        "y": 358.7777328491211,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "620a6b7.d8fa094"

+            ]

+        ]

+    },

+    {

+        "id": "406aa837.6a2a68",

+        "type": "comment",

+        "name": "make sure this network doesn't exist already",

+        "info": "",

+        "comments": "",

+        "x": 1581.1451606750488,

+        "y": 317.03179025650024,

+        "z": "3e6f238d.8b432c",

+        "wires": []

+    },

+    {

+        "id": "620a6b7.d8fa094",

+        "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": 1632.7801513671875,

+        "y": 358.34923553466797,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "89ef579f.c10518"

+            ]

+        ]

+    },

+    {

+        "id": "89ef579f.c10518",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1533.5103492736816,

+        "y": 416.9206666946411,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            [

+                "b4a45077.2328e"

+            ]

+        ]

+    },

+    {

+        "id": "b4a45077.2328e",

+        "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": 1681.2604522705078,

+        "y": 416.7778587634675,

+        "z": "3e6f238d.8b432c",

+        "wires": []

+    },

+    {

+        "id": "fd081780.8915a8",

+        "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.wan-port-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<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": 788.8636169433594,

+        "y": 740.4961795806885,

+        "z": "3e6f238d.8b432c",

+        "wires": []

+    },

+    {

+        "id": "67d04e5d.908a3",

+        "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": 798.1971206665039,

+        "y": 692.1629104614258,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "cae5d4a0.b09a38",

+        "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.1970672607422,

+        "y": 639.1628475189209,

+        "z": "3e6f238d.8b432c",

+        "wires": []

+    },

+    {

+        "id": "f3dc4ebd.df298",

+        "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": 782.1967353820801,

+        "y": 529.1542224884033,

+        "z": "3e6f238d.8b432c",

+        "wires": []

+    },

+    {

+        "id": "4fc9e2ee.90febc",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-id' value='`$prop.wan-port-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.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": 774.0104808807373,

+        "y": 798.0000371932983,

+        "z": "3e6f238d.8b432c",

+        "wires": []

+    },

+    {

+        "id": "cdfc7ae4.0514d8",

+        "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": 788.5105400085449,

+        "y": 847.9999303817749,

+        "z": "3e6f238d.8b432c",

+        "wires": []

+    },

+    {

+        "id": "3699b36a.223adc",

+        "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.wan-port-vf-index' >\n<parameter name=\"wan-port-config-id\" value=\"`$prop.wan-port-vf-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-uuid`' />\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.wan-port-vf-index + '/vf-module-data/'` \" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 792.0104484558105,

+        "y": 891.4999761581421,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1bf42dc2.073fb2",

+        "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=\"wan-port-config\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/wan-port-configs/wan-port-config/' + $prop.wan-port-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"wan-port-config.wan-port-config-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.wan-port-vf-index`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 789.0103759765625,

+        "y": 937.5000076293945,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2814f80b.cacb28",

+        "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": 739.7329216003418,

+        "y": 984.6738667488098,

+        "z": "3e6f238d.8b432c",

+        "wires": []

+    },

+    {

+        "id": "da49c07c.27b0f",

+        "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": 781.8992767333984,

+        "y": 591.8888759613037,

+        "z": "3e6f238d.8b432c",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.json
new file mode 100644
index 0000000..ab5b286
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.json
@@ -0,0 +1,834 @@
+[

+    {

+        "id": "40773877.e7f878",

+        "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": 823,

+        "y": 371.07812309265137,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8daa10ea.b957b",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 103.46870422363281,

+        "y": 59,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "61fe2f58.e4c3e"

+            ]

+        ]

+    },

+    {

+        "id": "61fe2f58.e4c3e",

+        "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": 234.75439453125,

+        "y": 108.23810863494873,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "a074f76.b34de08"

+            ]

+        ]

+    },

+    {

+        "id": "a074f76.b34de08",

+        "type": "method",

+        "name": "method sdwan-vf-operation-wanport-deactivate",

+        "xml": "<method rpc='sdwan-vf-operation-wanport-deactivate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 237.89732360839844,

+        "y": 193.00003242492676,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "467c4bfc.2f5b64"

+            ]

+        ]

+    },

+    {

+        "id": "1de0c391.b5a28c",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 807.9999542236328,

+        "y": 208.07811641693115,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "5ecb025.1081afc"

+            ]

+        ]

+    },

+    {

+        "id": "5ecb025.1081afc",

+        "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": 1060.0000457763672,

+        "y": 206.744779586792,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "997362c3.0cc6a"

+            ]

+        ]

+    },

+    {

+        "id": "fdccb3cb.83cc4",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1431.6665344238281,

+        "y": 208.74478244781494,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "997362c3.0cc6a",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1278.3333625793457,

+        "y": 208.74476146697998,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "fdccb3cb.83cc4"

+            ]

+        ]

+    },

+    {

+        "id": "5cb64270.b68bbc",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 822.4205474853516,

+        "y": 163.5819854736328,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "2713a7c6.86b758"

+            ]

+        ]

+    },

+    {

+        "id": "2713a7c6.86b758",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1009.0872268676758,

+        "y": 162.915283203125,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "a37833b2.185f8"

+            ]

+        ]

+    },

+    {

+        "id": "a37833b2.185f8",

+        "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": 1190.7538528442383,

+        "y": 162.915283203125,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "8159840a.e34b38",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1460.9999618530273,

+        "y": 378.0781068508513,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "2d5467cf.141cf8"

+            ]

+        ]

+    },

+    {

+        "id": "92550d61.5702c",

+        "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": 1880.2857971191406,

+        "y": 380.6496248245239,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "e5b5e260.275be"

+            ]

+        ]

+    },

+    {

+        "id": "6e4eaafb.1605b4",

+        "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": 1447.5715866088867,

+        "y": 341.855993270874,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "fb40ae0e.bbae5",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1251.8729820251465,

+        "y": 355.2368783657439,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "8159840a.e34b38",

+                "6e4eaafb.1605b4",

+                "3aa9d72d.eaee98"

+            ]

+        ]

+    },

+    {

+        "id": "338d154d.d328ea",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1107.5159378051758,

+        "y": 355.3003663723357,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "fb40ae0e.bbae5"

+            ]

+        ]

+    },

+    {

+        "id": "7e611b6d.db2764",

+        "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": 871.5159196853638,

+        "y": 282.3003787994385,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "338d154d.d328ea",

+                "7a0a695.917c098",

+                "8d2d99ea.4b0448"

+            ]

+        ]

+    },

+    {

+        "id": "7a0a695.917c098",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1112.9999561309814,

+        "y": 254.0781078338623,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "589e99a4.cf28d8"

+            ]

+        ]

+    },

+    {

+        "id": "8d2d99ea.4b0448",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1115.0311450958252,

+        "y": 291.10941886901855,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "589e99a4.cf28d8"

+            ]

+        ]

+    },

+    {

+        "id": "589e99a4.cf28d8",

+        "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": 1272.8086605072021,

+        "y": 271.9983673095703,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "e5b5e260.275be",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2084.0000381469727,

+        "y": 379.0781312282197,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "9a9a684f.c7ffd8"

+            ]

+        ]

+    },

+    {

+        "id": "9a9a684f.c7ffd8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1846.343246459961,

+        "y": 481.16428089141846,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "14405ad7.cb9e35",

+                "de34e0a1.fef5c",

+                "c4a0e771.25eac8"

+            ]

+        ]

+    },

+    {

+        "id": "14405ad7.cb9e35",

+        "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": 2088.22993850708,

+        "y": 451.5066947937012,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "de34e0a1.fef5c",

+        "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": 2091.676197052002,

+        "y": 496.164333820343,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "2d5467cf.141cf8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1668.5000076293945,

+        "y": 378.07811546325684,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "92550d61.5702c"

+            ]

+        ]

+    },

+    {

+        "id": "816f2ae4.9e3938",

+        "type": "comment",

+        "name": "Get devices",

+        "info": "",

+        "comments": "",

+        "x": 821.5002403259277,

+        "y": 499.0781545639038,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "3aa9d72d.eaee98",

+        "type": "set",

+        "name": "set prop.site.deviceId_length",

+        "xml": "<set>\n<parameter name='prop.site.deviceId_length' value='0' />\n",

+        "comments": "",

+        "x": 1473.9999542236328,

+        "y": 306.07811641693115,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "467c4bfc.2f5b64",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 378.99604415893555,

+        "y": 410.0742139816284,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "5cb64270.b68bbc",

+                "1de0c391.b5a28c",

+                "7e611b6d.db2764",

+                "40773877.e7f878",

+                "b86dde81.b26fa",

+                "b01ccc1a.02731",

+                "9c618528.84c5b8",

+                "fc70c70a.583ef8",

+                "86a3ea09.776bc8",

+                "1e0c85ac.387e1a",

+                "6b522fc9.bd25d",

+                "c257767a.933bb8",

+                "c5d5b1d3.8c084"

+            ]

+        ]

+    },

+    {

+        "id": "c4a0e771.25eac8",

+        "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": 2082.9726486206055,

+        "y": 543.0039324760437,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "86a3ea09.776bc8",

+        "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": 866.7226486206055,

+        "y": 449.75391387939453,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "cb360512.9f1c88",

+                "f1779f79.d3359",

+                "78cd1685.a056c8"

+            ]

+        ]

+    },

+    {

+        "id": "cb360512.9f1c88",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1098.7227325439453,

+        "y": 413.7539367675781,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "f23d61e0.62498"

+            ]

+        ]

+    },

+    {

+        "id": "f1779f79.d3359",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1101.2136154174805,

+        "y": 449.3279733657837,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "399ac4f6.7a8eac"

+            ]

+        ]

+    },

+    {

+        "id": "78cd1685.a056c8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1096.5466232299805,

+        "y": 485.66133213043213,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "3b8de765.32c6c8"

+            ]

+        ]

+    },

+    {

+        "id": "3b8de765.32c6c8",

+        "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": 1250.3191146850586,

+        "y": 483.10041904449463,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "399ac4f6.7a8eac",

+        "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": 1246.785011291504,

+        "y": 447.61366081237793,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "f23d61e0.62498",

+        "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": 1254.2228469848633,

+        "y": 412.75382900238037,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "1e0c85ac.387e1a",

+        "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": 881.232780456543,

+        "y": 537.4309158325195,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "77011d7.7b96ee4",

+                "12088398.76a01c"

+            ]

+        ]

+    },

+    {

+        "id": "77011d7.7b96ee4",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1116.2329063415527,

+        "y": 523.4309043884277,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "44026cbb.b9e684"

+            ]

+        ]

+    },

+    {

+        "id": "44026cbb.b9e684",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1258.2329139709473,

+        "y": 522.430905342102,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "9dced7bd.db4818",

+        "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": 1264.2329139709473,

+        "y": 559.8238935470581,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "12088398.76a01c",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1115.4829063415527,

+        "y": 559.0738115310669,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "9dced7bd.db4818"

+            ]

+        ]

+    },

+    {

+        "id": "6b522fc9.bd25d",

+        "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": 858.2325286865234,

+        "y": 590.763991355896,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fc70c70a.583ef8",

+        "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": 823.3680686950684,

+        "y": 1035.5663003921509,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "4a80b28.10a884c",

+        "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": 942.6871871948242,

+        "y": 995.3698806762695,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b86dde81.b26fa",

+        "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": 877.0648956298828,

+        "y": 869.7630624771118,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "b01ccc1a.02731",

+        "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": 911.3680953979492,

+        "y": 913.5661716461182,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "9c618528.84c5b8",

+        "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": 878.3680953979492,

+        "y": 949.5661716461182,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "c5d5b1d3.8c084",

+        "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": 925.4999542236328,

+        "y": 775.0781402587891,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "e2365777.226868",

+                "8c72c557.95eda8"

+            ]

+        ]

+    },

+    {

+        "id": "e2365777.226868",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1171.4999389648438,

+        "y": 813.0782289505005,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "d7624ae6.474bb8"

+            ]

+        ]

+    },

+    {

+        "id": "8c72c557.95eda8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1167.5000190734863,

+        "y": 767.0781440734863,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "d7624ae6.474bb8"

+            ]

+        ]

+    },

+    {

+        "id": "281f8a8d.8e3fc6",

+        "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": 1308.5001106262207,

+        "y": 767.0781450271606,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "d7624ae6.474bb8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1315.4998054504395,

+        "y": 811.0781478881836,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c257767a.933bb8",

+        "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": 920.5001220703125,

+        "y": 669.0781383514404,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "ec710bf2.9c0a78",

+                "f07017bc.bc8a18"

+            ]

+        ]

+    },

+    {

+        "id": "ec710bf2.9c0a78",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1208.5002174377441,

+        "y": 701.0781078338623,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "7193fdca.aa45a4"

+            ]

+        ]

+    },

+    {

+        "id": "f07017bc.bc8a18",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1212.5002975463867,

+        "y": 637.0781860351562,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            [

+                "7193fdca.aa45a4"

+            ]

+        ]

+    },

+    {

+        "id": "64ee4cf2.79ceb4",

+        "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": 1357.5004692077637,

+        "y": 639.0781860351562,

+        "z": "b8fed42e.2d2888",

+        "wires": []

+    },

+    {

+        "id": "7193fdca.aa45a4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1364.5000610351562,

+        "y": 699.0781078338623,

+        "z": "b8fed42e.2d2888",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.json
new file mode 100644
index 0000000..6918596
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.json
@@ -0,0 +1,663 @@
+[

+    {

+        "id": "108df9ad.e955a6",

+        "type": "method",

+        "name": "method sdwan-vf-operation-wanport-delete",

+        "xml": "<method rpc='sdwan-vf-operation-wanport-delete' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 188.71429443359375,

+        "y": 192.58645629882812,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "f6ae267d.a135a8"

+            ]

+        ]

+    },

+    {

+        "id": "91046601.99c4f8",

+        "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": 98.23822402954102,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "108df9ad.e955a6"

+            ]

+        ]

+    },

+    {

+        "id": "5961d5b2.76b41c",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 97.71429443359375,

+        "y": 36.00011444091797,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "91046601.99c4f8"

+            ]

+        ]

+    },

+    {

+        "id": "f6ae267d.a135a8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 208.38099670410156,

+        "y": 459.6668498516083,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "d930c943.e6e998",

+                "8e7ede43.d475c",

+                "4ec60d6a.71f484",

+                "6a64350b.28076c",

+                "da14742e.a382e8",

+                "452859c9.e498f8",

+                "c7649fe7.d4fb9",

+                "9d43ca3e.815638",

+                "23273105.4d68be",

+                "7182ec74.f348c4",

+                "ebdf21b1.cc8c7"

+            ]

+        ]

+    },

+    {

+        "id": "8e7ede43.d475c",

+        "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": 272.26925563812256,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "9e14817f.8f614"

+            ]

+        ]

+    },

+    {

+        "id": "d930c943.e6e998",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 525.7143135070801,

+        "y": 211.00012493133545,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "452f6a7.3541694"

+            ]

+        ]

+    },

+    {

+        "id": "452f6a7.3541694",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 705.7142944335938,

+        "y": 210.00011444091797,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "25d0ddf2.3f4862"

+            ]

+        ]

+    },

+    {

+        "id": "25d0ddf2.3f4862",

+        "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": 211.1430320739746,

+        "z": "811cb3d0.df7",

+        "wires": []

+    },

+    {

+        "id": "9e14817f.8f614",

+        "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": 273.000120639801,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "523175d4.98b7bc"

+            ]

+        ]

+    },

+    {

+        "id": "523175d4.98b7bc",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 958.7142944335938,

+        "y": 271.00011444091797,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "a81758c8.bd7d68"

+            ]

+        ]

+    },

+    {

+        "id": "a81758c8.bd7d68",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1122.7142944335938,

+        "y": 266.00011444091797,

+        "z": "811cb3d0.df7",

+        "wires": []

+    },

+    {

+        "id": "4ec60d6a.71f484",

+        "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": 591.7143287658691,

+        "y": 349.0001392364502,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "15b47ae.5174785",

+                "99344700.318bf8",

+                "fca663c0.b87bd"

+            ]

+        ]

+    },

+    {

+        "id": "99344700.318bf8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 813.7143211364746,

+        "y": 383.00014877319336,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "1da7bb0c.744515"

+            ]

+        ]

+    },

+    {

+        "id": "15b47ae.5174785",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 818.7143173217773,

+        "y": 330.00014781951904,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "1da7bb0c.744515"

+            ]

+        ]

+    },

+    {

+        "id": "1da7bb0c.744515",

+        "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": 976.7143211364746,

+        "y": 343.00014877319336,

+        "z": "811cb3d0.df7",

+        "wires": []

+    },

+    {

+        "id": "fca663c0.b87bd",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 813.7143211364746,

+        "y": 444.00014877319336,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "e8eea7a1.b01d68"

+            ]

+        ]

+    },

+    {

+        "id": "c4845e4b.47681",

+        "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": 1167.7143363952637,

+        "y": 442.00016272068024,

+        "z": "811cb3d0.df7",

+        "wires": []

+    },

+    {

+        "id": "e8eea7a1.b01d68",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 974.7143669128418,

+        "y": 441.0001401901245,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "c4845e4b.47681",

+                "5a93254.82122dc"

+            ]

+        ]

+    },

+    {

+        "id": "5a93254.82122dc",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1186.7143058776855,

+        "y": 495.0001392364502,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "aeb0ca88.3fa2d8"

+            ]

+        ]

+    },

+    {

+        "id": "aeb0ca88.3fa2d8",

+        "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": 1429.7143211364746,

+        "y": 490.00014877319336,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "e81b9c86.1c484"

+            ]

+        ]

+    },

+    {

+        "id": "e81b9c86.1c484",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1670.714448928833,

+        "y": 483.0001459121704,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "e2120549.90ce38"

+            ]

+        ]

+    },

+    {

+        "id": "e2120549.90ce38",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1822.7144203186035,

+        "y": 485.0001392364502,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "a9962147.95e54",

+                "a06c71d8.3073f",

+                "4f41068e.276488"

+            ]

+        ]

+    },

+    {

+        "id": "a9962147.95e54",

+        "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": 2044.7144203186035,

+        "y": 481.0001392364502,

+        "z": "811cb3d0.df7",

+        "wires": []

+    },

+    {

+        "id": "a06c71d8.3073f",

+        "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": 2050.7144203186035,

+        "y": 530.0001392364502,

+        "z": "811cb3d0.df7",

+        "wires": []

+    },

+    {

+        "id": "4f41068e.276488",

+        "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": 2047.7146301269531,

+        "y": 577.0001640319824,

+        "z": "811cb3d0.df7",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6a64350b.28076c",

+        "type": "switchNode",

+        "name": "switch tmp.vidx ",

+        "xml": "<switch test=\"`$tmp.vidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 530.7455406188965,

+        "y": 522.0162220001221,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "81340348.a1108"

+            ]

+        ]

+    },

+    {

+        "id": "81340348.a1108",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 678.1741828918457,

+        "y": 521.5876321792603,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "11a722f5.6f62ed"

+            ]

+        ]

+    },

+    {

+        "id": "11a722f5.6f62ed",

+        "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": 827.6029090881348,

+        "y": 522.7305498123169,

+        "z": "811cb3d0.df7",

+        "wires": []

+    },

+    {

+        "id": "da14742e.a382e8",

+        "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": 575.043701171875,

+        "y": 592.3334274291992,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "f2a53e72.39754",

+                "a36c3118.17722"

+            ]

+        ]

+    },

+    {

+        "id": "f2a53e72.39754",

+        "type": "outcome",

+        "name": "outcome PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 865.8769683837891,

+        "y": 596.4445505142212,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "d03e05d1.e8c3f8"

+            ]

+        ]

+    },

+    {

+        "id": "a36c3118.17722",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 832.8771057128906,

+        "y": 648.4446032047272,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "9b8ea994.f38dc8"

+            ]

+        ]

+    },

+    {

+        "id": "9b8ea994.f38dc8",

+        "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": 992.3768730163574,

+        "y": 651.4446022510529,

+        "z": "811cb3d0.df7",

+        "wires": []

+    },

+    {

+        "id": "d03e05d1.e8c3f8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1063.1833686828613,

+        "y": 606.7697048187256,

+        "z": "811cb3d0.df7",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7182ec74.f348c4",

+        "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": 523.7351951599121,

+        "y": 966.0314276218414,

+        "z": "811cb3d0.df7",

+        "wires": []

+    },

+    {

+        "id": "452859c9.e498f8",

+        "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": 605.82177734375,

+        "y": 712.1425726413727,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "ae40c7e9.213d38"

+            ]

+        ]

+    },

+    {

+        "id": "c7649fe7.d4fb9",

+        "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": 529.9231491088867,

+        "y": 764.9467904567719,

+        "z": "811cb3d0.df7",

+        "wires": []

+    },

+    {

+        "id": "9d43ca3e.815638",

+        "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": 566.8218231201172,

+        "y": 815.1425755023956,

+        "z": "811cb3d0.df7",

+        "wires": []

+    },

+    {

+        "id": "ae40c7e9.213d38",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 865.8217678070068,

+        "y": 719.1424324512482,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "e08d014a.44fec"

+            ]

+        ]

+    },

+    {

+        "id": "ebdf21b1.cc8c7",

+        "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": 615.8221969604492,

+        "y": 906.4042303562164,

+        "z": "811cb3d0.df7",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e08d014a.44fec",

+        "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": 1051.821834564209,

+        "y": 719.1425931453705,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "eabeafc3.ee56a"

+            ]

+        ]

+    },

+    {

+        "id": "eabeafc3.ee56a",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1220.8218421936035,

+        "y": 718.1424305438995,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "d4085bbc.a3d7c8"

+            ]

+        ]

+    },

+    {

+        "id": "d4085bbc.a3d7c8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1374.821681022644,

+        "y": 710.1424314975739,

+        "z": "811cb3d0.df7",

+        "wires": [

+            [

+                "69725eb0.1ff91",

+                "c86d78ea.65d938"

+            ]

+        ]

+    },

+    {

+        "id": "69725eb0.1ff91",

+        "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": 1539.8217763900757,

+        "y": 685.1425869464874,

+        "z": "811cb3d0.df7",

+        "wires": []

+    },

+    {

+        "id": "c86d78ea.65d938",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",

+        "comments": "",

+        "x": 1561.8217763900757,

+        "y": 741.1425507068634,

+        "z": "811cb3d0.df7",

+        "wires": []

+    },

+    {

+        "id": "23273105.4d68be",

+        "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": 553.6240310668945,

+        "y": 860.4759104251862,

+        "z": "811cb3d0.df7",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-activate.json
new file mode 100644
index 0000000..faa23aa
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-activate.json
@@ -0,0 +1,2320 @@
+[
+    {
+        "id": "38ad5ef3.8fa5c2",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 137.00390625,
+        "y": 125.00390625,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "59b2f037.b79a4"
+            ]
+        ]
+    },
+    {
+        "id": "59b2f037.b79a4",
+        "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": 349.00391006469727,
+        "y": 197.0039234161377,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "7aa0bfba.98463"
+            ]
+        ]
+    },
+    {
+        "id": "7aa0bfba.98463",
+        "type": "method",
+        "name": "wan-connection-topology-operation-activate",
+        "xml": "<method rpc='wan-connection-topology-operation-activate' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 337.0040283203125,
+        "y": 285.00390625,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "5fa21447.0f651c"
+            ]
+        ]
+    },
+    {
+        "id": "ac6656dd.35a3c8",
+        "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": 587.0045166015625,
+        "y": 473.0041103363037,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5eafccd5.5cff74",
+        "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": 890.0041275024414,
+        "y": 2205.004325866699,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "77d24866.f3a848",
+        "type": "block",
+        "name": "general-activate-block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 731.5041828155518,
+        "y": 1920.0041402578354,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "5eafccd5.5cff74",
+                "664ad94.da0ee28",
+                "4329fb4d.2499b4",
+                "d6f9dbf2.6a98d8"
+            ]
+        ]
+    },
+    {
+        "id": "4329fb4d.2499b4",
+        "type": "for",
+        "name": "for cxid..network-topology-operation-input.network-request-input.network-input-parameters.param[]",
+        "xml": "<for index='cxid' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1545.003984451294,
+        "y": 2037.0041707754135,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "a7a35b54.a22968"
+            ]
+        ]
+    },
+    {
+        "id": "d6f9dbf2.6a98d8",
+        "type": "execute",
+        "name": "execute RestApiCallNode Create wan-connection",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$tmp.templateFileName`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + $tmp.restapiUrl`\" />\n<parameter name=\"restapiUser\" value=\"admin\" />\n<parameter name=\"restapiPassword\" value=\"admin\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"restApi-result\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1571.2540397644043,
+        "y": 2591.0043576955795,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "baab7187.80f6b",
+                "1ff9ce75.2238b2",
+                "2afc86f8.6d0eca"
+            ]
+        ]
+    },
+    {
+        "id": "6c80438c.95e70c",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1870.254409790039,
+        "y": 2141.0045127868652,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "5cacbb75.a9b194"
+            ]
+        ]
+    },
+    {
+        "id": "5cacbb75.a9b194",
+        "type": "set",
+        "name": "set tmp.templateFileName",
+        "xml": "<set>\n<parameter name='tmp.templateFileName' value=\"`$prop.restapi.templateDir + '/' + $network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value`\" />\n<parameter name='tmp.templateFileName-found' value='true' />",
+        "comments": "",
+        "x": 2227.2544174194336,
+        "y": 2144.004379630089,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "664ad94.da0ee28",
+        "type": "set",
+        "name": "set paras flags",
+        "xml": "<set>\n<parameter name='tmp.restapiUrl-found' value='false' />\n<parameter name='tmp.restapiUser-found' value='false' />\n<parameter name='tmp.restapiPassword-found' value='false' />\n<parameter name='tmp.templateFileName-found' value='false' />\n<parameter name='tmp.thirdPartyAdaptorRpc-found' value='false' />",
+        "comments": "",
+        "x": 1332.0041522979736,
+        "y": 1952.0041679143906,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "2afc86f8.6d0eca",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1901.0104637145996,
+        "y": 2626.343449950218,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "c3e0d84f.772da8"
+            ]
+        ]
+    },
+    {
+        "id": "1ff9ce75.2238b2",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1892.010513305664,
+        "y": 2594.8434756994247,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "c3e0d84f.772da8"
+            ]
+        ]
+    },
+    {
+        "id": "baab7187.80f6b",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1895.7605514526367,
+        "y": 2565.200580574572,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "195471ac.565dfe"
+            ]
+        ]
+    },
+    {
+        "id": "c3e0d84f.772da8",
+        "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 calling ' + $tmp.restapiUrl`\" />\n",
+        "comments": "",
+        "x": 2058.7605781555176,
+        "y": 2611.593548178673,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "5fa21447.0f651c",
+        "type": "execute",
+        "name": "contains specification",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"specification\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 234.00385665893555,
+        "y": 407.00773561000824,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "709657dc.92cf68",
+                "9f362f1a.3252f"
+            ]
+        ]
+    },
+    {
+        "id": "709657dc.92cf68",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 470.00389099121094,
+        "y": 405.00772750377655,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "a54c999.f509368"
+            ]
+        ]
+    },
+    {
+        "id": "9f362f1a.3252f",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 173.00394439697266,
+        "y": 630.007900595665,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "34f92a60.a00a16"
+            ]
+        ]
+    },
+    {
+        "id": "43ec8f53.27728",
+        "type": "execute",
+        "name": "contains Fc",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"Fc\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 504.00395584106445,
+        "y": 714.0078290700912,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "99a5ce.39d8fa3",
+                "9aeabbf6.e3e4e8"
+            ]
+        ]
+    },
+    {
+        "id": "9aeabbf6.e3e4e8",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 149.00393295288086,
+        "y": 1062.0079015493393,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "3c9043b1.35740c"
+            ]
+        ]
+    },
+    {
+        "id": "3c9043b1.35740c",
+        "type": "execute",
+        "name": "contains Fd",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"Fd\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 358.00392150878906,
+        "y": 1058.0078800916672,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "371cd5ef.c2eb7a",
+                "e569686f.faece8"
+            ]
+        ]
+    },
+    {
+        "id": "e569686f.faece8",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 140.97263717651367,
+        "y": 1133.9765380620956,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "cbe73854.eea6a8"
+            ]
+        ]
+    },
+    {
+        "id": "cbe73854.eea6a8",
+        "type": "execute",
+        "name": "contains FcPort",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"FcPort\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 349.97262954711914,
+        "y": 1130.9765666723251,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "8253886a.5043b8",
+                "aae3e74c.32cb78"
+            ]
+        ]
+    },
+    {
+        "id": "99a5ce.39d8fa3",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 686.0039596557617,
+        "y": 715.0078123807907,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "6cad7750.ad59e8"
+            ]
+        ]
+    },
+    {
+        "id": "371cd5ef.c2eb7a",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 930.0040893554688,
+        "y": 1060.008066534996,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "77d24866.f3a848"
+            ]
+        ]
+    },
+    {
+        "id": "8253886a.5043b8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 544.972713470459,
+        "y": 1132.976599097252,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "19d89423.0a7e6c"
+            ]
+        ]
+    },
+    {
+        "id": "aae3e74c.32cb78",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 102.00405883789062,
+        "y": 1375.0081828832626,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "7c4d10db.fc2b"
+            ]
+        ]
+    },
+    {
+        "id": "7c4d10db.fc2b",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 389.9727592468262,
+        "y": 1373.9769405126572,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "1370131a.38495d"
+            ]
+        ]
+    },
+    {
+        "id": "a54c999.f509368",
+        "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": 734.0312538146973,
+        "y": 401.03510224819183,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "1370131a.38495d",
+        "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": 597.0313987731934,
+        "y": 1371.0353931188583,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "19d89423.0a7e6c",
+        "type": "execute",
+        "name": "contains sitewan",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"sitewan\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 738.0002174377441,
+        "y": 1134.004186987877,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "ba88f958.08aa68",
+                "38c06fa8.7d4cc"
+            ]
+        ]
+    },
+    {
+        "id": "ba88f958.08aa68",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 933.000301361084,
+        "y": 1136.0042194128036,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "77d24866.f3a848"
+            ]
+        ]
+    },
+    {
+        "id": "38c06fa8.7d4cc",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 486.00010681152344,
+        "y": 1288.0040343999863,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "7c4d10db.fc2b"
+            ]
+        ]
+    },
+    {
+        "id": "d3d5931c.c4f83",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1396.754035949707,
+        "y": 901.0077877044678,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "3636527d.52348e"
+            ]
+        ]
+    },
+    {
+        "id": "8ea3d7d7.febac8",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 925.7541236877441,
+        "y": 1003.0078510046005,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "77d24866.f3a848"
+            ]
+        ]
+    },
+    {
+        "id": "5e27888.9f8f978",
+        "type": "for",
+        "name": "for sIdx..service-data.networks.network[]",
+        "xml": "<for index='sIdx' start='0' end='`$service-data.networks.network_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2097.0320587158203,
+        "y": 662.035418510437,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "d2e8a0ee.5213c"
+            ]
+        ]
+    },
+    {
+        "id": "1d6c0cc0.95f1c3",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2506.0320625305176,
+        "y": 702.0355480909348,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "16926ebd.1ab8f1"
+            ]
+        ]
+    },
+    {
+        "id": "ee4ec835.0a0ae8",
+        "type": "set",
+        "name": "set tmp.pidx and tmp.network-input-parameters",
+        "xml": "<set>\n<parameter name='tmp.sotnFcPortList[`$sotnFcPortListLength`]' value='`$sIdx`' />",
+        "comments": "",
+        "x": 2955.6514015197754,
+        "y": 501.46492528915405,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "d2e8a0ee.5213c",
+        "type": "execute",
+        "name": "contains sotn",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.networks.network[$sIdx].network-data.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"sotn\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2343.0319786071777,
+        "y": 703.0354298353195,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "1d6c0cc0.95f1c3"
+            ]
+        ]
+    },
+    {
+        "id": "16926ebd.1ab8f1",
+        "type": "execute",
+        "name": "contains FcPort",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.networks.network[$sIdx].network-data.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"FcPort\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2347.031940460205,
+        "y": 757.0356148481369,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "2ec05a20.11a5f6"
+            ]
+        ]
+    },
+    {
+        "id": "34f92a60.a00a16",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 336.0313186645508,
+        "y": 632.0351232290268,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "43ec8f53.27728",
+                "ac6656dd.35a3c8"
+            ]
+        ]
+    },
+    {
+        "id": "2ec05a20.11a5f6",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2515.0318641662598,
+        "y": 754.0354546308517,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "6ea2fca7.3f57a4"
+            ]
+        ]
+    },
+    {
+        "id": "e089d5c4.b1a808",
+        "type": "block",
+        "name": "find-sotn-fc-port-block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1730.031837463379,
+        "y": 712.0354261398315,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "5e27888.9f8f978",
+                "df34ef29.a5514"
+            ]
+        ]
+    },
+    {
+        "id": "df34ef29.a5514",
+        "type": "set",
+        "name": "set sotnFcPortListLength",
+        "xml": "<set>\n<parameter name='sotnFcPortListLength' value='0' />",
+        "comments": "",
+        "x": 2013.031509399414,
+        "y": 569.0353946685791,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "6ea2fca7.3f57a4",
+        "type": "block",
+        "name": "find-OOF-input-block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 2393.5318031311035,
+        "y": 808.0353444814682,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "ee4ec835.0a0ae8",
+                "4b280a8d.8f4424"
+            ]
+        ]
+    },
+    {
+        "id": "4b280a8d.8f4424",
+        "type": "for",
+        "name": "for sIdx..network-input-parameters[]",
+        "xml": "<for index='paramIdx' start='0' end='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2931.0315895080566,
+        "y": 553.0354828834534,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "85f3cbde.7dcb88"
+            ]
+        ]
+    },
+    {
+        "id": "85f3cbde.7dcb88",
+        "type": "execute",
+        "name": "contains address",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paramIdx].name`\"/>\n    <parameter name=\"target\" value=\"address\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2899.5314979553223,
+        "y": 606.0353150367737,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "31f133f3.99bbfc"
+            ]
+        ]
+    },
+    {
+        "id": "31f133f3.99bbfc",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3081.5316200256348,
+        "y": 606.0353150367737,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "9b1feb51.adf0c8"
+            ]
+        ]
+    },
+    {
+        "id": "67728772.5b2df8",
+        "type": "set",
+        "name": "set sotnFcPortAddress",
+        "xml": "<set>\n<parameter name='sotnFcPortAddress' value='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paramIdx].value`' />",
+        "comments": "",
+        "x": 3139.5330810546875,
+        "y": 719.0357418060303,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "9b1feb51.adf0c8",
+        "type": "block",
+        "name": "get-OOF-input-block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 2948.531650543213,
+        "y": 664.0354866981506,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "67728772.5b2df8",
+                "23bb424d.0bfdfe"
+            ]
+        ]
+    },
+    {
+        "id": "f6db23cd.84a15",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3164.0326957702637,
+        "y": 841.0352597236633,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "3bfbe626.42a93a"
+            ]
+        ]
+    },
+    {
+        "id": "23bb424d.0bfdfe",
+        "type": "execute",
+        "name": "execute RestApiCallNode - get access Tp from OSS",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value=\"`$prop.oss.url + '/oss/inventory?location=' + $sotnFcPortAddress`\"/>\n    <parameter name='format' value='json' />\n    <parameter name='customHttpHeaders' value=\"X-FromAppId=MSO\" />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"temp.oss.accessTPs\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3261.0316200256348,
+        "y": 778.0351929664612,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "f6db23cd.84a15"
+            ]
+        ]
+    },
+    {
+        "id": "3bfbe626.42a93a",
+        "type": "switchNode",
+        "name": "switch temp.oss.accessTPs_length",
+        "xml": "<switch test=\"`$temp.oss.accessTPs_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3460.0318031311035,
+        "y": 840.0351700782776,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "62442e7c.6f486"
+            ]
+        ]
+    },
+    {
+        "id": "62442e7c.6f486",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3724.533073425293,
+        "y": 839.0354471206665,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "29a2d036.e5fea"
+            ]
+        ]
+    },
+    {
+        "id": "2ce2f873.7ccbc8",
+        "type": "set",
+        "name": "set temp.accessTPs_length",
+        "xml": "<set>\n<parameter name='temp.accessTPs_length' value='`$temp.accessTPs_length + $temp.oss.accessTPs_length`' />\n\n",
+        "comments": "",
+        "x": 3670.032699584961,
+        "y": 1105.031608581543,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "29a2d036.e5fea",
+        "type": "block",
+        "name": "copy-accessTPs-block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 3324.7810668945312,
+        "y": 928.0308704376221,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "2ce2f873.7ccbc8",
+                "b0f47160.ab83c",
+                "7275b121.376d5"
+            ]
+        ]
+    },
+    {
+        "id": "b0f47160.ab83c",
+        "type": "switchNode",
+        "name": "switch temp.accessTPs_length",
+        "xml": "<switch test='`$temp.accessTPs_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3708.531021118164,
+        "y": 930.030707359314,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "e57f314e.d692f",
+                "7eb00f9f.b7ba5"
+            ]
+        ]
+    },
+    {
+        "id": "e57f314e.d692f",
+        "type": "other",
+        "name": "Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3934.5308723449707,
+        "y": 905.0306348800659,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "d1909b4c.2dada8"
+            ]
+        ]
+    },
+    {
+        "id": "d1909b4c.2dada8",
+        "type": "set",
+        "name": "set tp_length",
+        "xml": "<set>\n<parameter name='tp_length' value='0' />",
+        "comments": "",
+        "x": 4121.030708312988,
+        "y": 903.0306406314485,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "7eb00f9f.b7ba5",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3930.5308380126953,
+        "y": 960.0306806564331,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "666d9674.3fd3a8"
+            ]
+        ]
+    },
+    {
+        "id": "666d9674.3fd3a8",
+        "type": "set",
+        "name": "set tp_length",
+        "xml": "<set>\n<parameter name='tp_length' value='`$temp.accessTPs_length`' />",
+        "comments": "",
+        "x": 4119.280776977539,
+        "y": 960.030665397644,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "7275b121.376d5",
+        "type": "for",
+        "name": "for each existing temp.oss.accessTPs",
+        "xml": "<for index='idx' start='0' end='`$temp.oss.accessTPs_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3710.281463623047,
+        "y": 1028.0308122634888,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "f2dec21b.c72d"
+            ]
+        ]
+    },
+    {
+        "id": "f2dec21b.c72d",
+        "type": "set",
+        "name": "set temp.accessTPs",
+        "xml": "<set>\n<parameter name='`temp.accessTPs[$idx + $tp_length].`' value='`$temp.oss.accessTPs[$idx].`' />",
+        "comments": "",
+        "x": 4078.2813568115234,
+        "y": 1029.0309600830078,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "3636527d.52348e",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1544.0314102172852,
+        "y": 896.0351066589355,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "e089d5c4.b1a808",
+                "aa30b2cc.32af1"
+            ]
+        ]
+    },
+    {
+        "id": "3a7071f1.30ce3e",
+        "type": "execute",
+        "name": "execute RestApiCallNode getPath from OOF",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.oof-getpath.templatefile`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.restapi.connection-oof-url`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.oof.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.oof.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"oof\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.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": 1548.5318412780762,
+        "y": 1610.0354380607605,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "13c8c509.8dd28b",
+                "d0803760.a3cf48"
+            ]
+        ]
+    },
+    {
+        "id": "d0803760.a3cf48",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1877.531494140625,
+        "y": 1590.035505771637,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "13c8c509.8dd28b",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1878.5317077636719,
+        "y": 1641.035415172577,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "647a1bd3.ca5bb4"
+            ]
+        ]
+    },
+    {
+        "id": "aa30b2cc.32af1",
+        "type": "switchNode",
+        "name": "switch temp.accessTPs_length",
+        "xml": "<switch test=\"`$temp.accessTPs_length >= 2`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1610.531307220459,
+        "y": 1105.0352524518967,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "dd0c2e67.02d53"
+            ]
+        ]
+    },
+    {
+        "id": "dd0c2e67.02d53",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1842.0316047668457,
+        "y": 1104.0350989103317,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "975483b1.3fe1f"
+            ]
+        ]
+    },
+    {
+        "id": "975483b1.3fe1f",
+        "type": "block",
+        "name": "call-oof-block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1586.0312538146973,
+        "y": 1241.0351589918137,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "3a7071f1.30ce3e",
+                "f56f577d.f30698",
+                "faa82de3.2bc5b"
+            ]
+        ]
+    },
+    {
+        "id": "f56f577d.f30698",
+        "type": "set",
+        "name": "set oof input",
+        "xml": "<set>\n<parameter name='prop.connection-attachment.access-topology-id' value='`$temp.accessTPs[0].access-topology-id`' />\n<parameter name='prop.connection-attachment.access-client-id' value='`$temp.accessTPs[0].access-client-id`' />\n<parameter name='prop.connection-attachment.access-provider-id' value='`$temp.accessTPs[0].access-provider-id`' />\n<parameter name='prop.connection-attachment.access-node-id' value='`$temp.accessTPs[0].access-node-id`' />\n<parameter name='prop.connection-attachment.access-ltp-id' value='`$temp.accessTPs[0].access-ltp-id`' />\n<parameter name='prop.remote.connection-attachment.access-topology-id' value='`$temp.accessTPs[1].access-topology-id`' />\n<parameter name='prop.remote.connection-attachment.access-client-id' value='`$temp.accessTPs[1].access-client-id`' />\n<parameter name='prop.remote.connection-attachment.access-provider-id' value='`$temp.accessTPs[1].access-provider-id`' />\n<parameter name='prop.remote.connection-attachment.access-node-id' value='`$temp.accessTPs[1].access-node-id`' />\n<parameter name='prop.remote.connection-attachment.access-ltp-id' value='`$temp.accessTPs[1].access-ltp-id`' />",
+        "comments": "",
+        "x": 2102.5313720703125,
+        "y": 1111.03515625,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "577d8def.47c664",
+        "type": "execute",
+        "name": "execute RestApiCallNode Create Sotn connectivity Service",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sotn-api-ConnectivityService.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ZTE-API-ConnectivityService:create-connectivity-service'`\" />\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=\"patch\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.openecomp.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": 2601.666748046875,
+        "y": 1967.0040283203125,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "ee1d8114.03821",
+                "b2f48c23.dba01"
+            ]
+        ]
+    },
+    {
+        "id": "ee1d8114.03821",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2939.6665649414062,
+        "y": 1997.0041117668152,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "225012e1.339dde"
+            ]
+        ]
+    },
+    {
+        "id": "225012e1.339dde",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 3087.6665649414062,
+        "y": 1995.0039896965027,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e1714d35.f44de",
+        "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": 3069.6665954589844,
+        "y": 1942.0040497779846,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "b2f48c23.dba01",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2930.66650390625,
+        "y": 1942.0040497779846,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "e1714d35.f44de"
+            ]
+        ]
+    },
+    {
+        "id": "647a1bd3.ca5bb4",
+        "type": "for",
+        "name": "for vidx..oof.vpns_length[]",
+        "xml": "<for index='vidx' start='0' end='`$oof.vpns_length`' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 2179.670364379883,
+        "y": 1655.5075135231018,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "b3bf31fb.d8cd7"
+            ]
+        ]
+    },
+    {
+        "id": "b3bf31fb.d8cd7",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 2292.787727355957,
+        "y": 1755.3475284576416,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "5cceda35.f10fe4",
+                "c8f650af.4d42d",
+                "577d8def.47c664",
+                "588a3880.b8be48"
+            ]
+        ]
+    },
+    {
+        "id": "25bd092e.03a776",
+        "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": 2934.232391357422,
+        "y": 1819.6807208061218,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "c8f650af.4d42d",
+        "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 = $tmp.thirdparty-sdnc-id AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2550.7322998046875,
+        "y": 1856.6806602478027,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "379812a3.1c00ce",
+                "18c2cc8d.f57b93",
+                "2e629d58.9a59a2"
+            ]
+        ]
+    },
+    {
+        "id": "379812a3.1c00ce",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2770.732234954834,
+        "y": 1820.6806292533875,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "25bd092e.03a776"
+            ]
+        ]
+    },
+    {
+        "id": "18c2cc8d.f57b93",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2780.223175048828,
+        "y": 1861.254635334015,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "e998ff2.0c21a"
+            ]
+        ]
+    },
+    {
+        "id": "2e629d58.9a59a2",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2775.55615234375,
+        "y": 1897.5879483222961,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "809ff6c0.f2acc8"
+            ]
+        ]
+    },
+    {
+        "id": "e998ff2.0c21a",
+        "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": 2926.7945251464844,
+        "y": 1857.5404620170593,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "809ff6c0.f2acc8",
+        "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": 2930.3287963867188,
+        "y": 1899.027096271515,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "5cceda35.f10fe4",
+        "type": "get-resource",
+        "name": "get-resource pnf",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"pnf\" \n\t\tkey=\"pnf.pnf-name = $oof.vpn.access-node-id \n\t\tAND depth = '0'\"\n        pfx='tmp.aai.pnf' local-only='false' >\n\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2496.232192993164,
+        "y": 1765.6803040504456,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "12b22620.806b0a",
+                "e580af57.c7b0e",
+                "63b978e1.8d23a8"
+            ]
+        ]
+    },
+    {
+        "id": "12b22620.806b0a",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2678.2322387695312,
+        "y": 1710.680414199829,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "402a3c95.e18ff4"
+            ]
+        ]
+    },
+    {
+        "id": "e580af57.c7b0e",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2678.7231407165527,
+        "y": 1748.2545108795166,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "57284c52.e22c64"
+            ]
+        ]
+    },
+    {
+        "id": "63b978e1.8d23a8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2670.05615234375,
+        "y": 1781.5878858566284,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "28728857.9fb6a8"
+            ]
+        ]
+    },
+    {
+        "id": "57284c52.e22c64",
+        "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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-id`\" />\n\n",
+        "comments": "",
+        "x": 2826.294765472412,
+        "y": 1747.5403995513916,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "28728857.9fb6a8",
+        "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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-id`\" />\n\n",
+        "comments": "",
+        "x": 2823.8287963867188,
+        "y": 1781.0270338058472,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "402a3c95.e18ff4",
+        "type": "set",
+        "name": "set tmp.thirdparty-sdnc-id",
+        "xml": "<set>\n<parameter name='tmp.thirdparty-sdnc-id' value=\"`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`\" />\n",
+        "comments": "",
+        "x": 2863.2322387695312,
+        "y": 1709.6805362701416,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "588a3880.b8be48",
+        "type": "set",
+        "name": "set oof.vpn",
+        "xml": "<set>\n<parameter name='oof.vpn.' value='`$oof.vpns[$vidx].`' />",
+        "comments": "",
+        "x": 2488.2321853637695,
+        "y": 1654.7913761138916,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "8a37fd2a.9df7f",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1880.5312957763672,
+        "y": 2102.034999847412,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "9292d8c4.9a2c38"
+            ]
+        ]
+    },
+    {
+        "id": "9292d8c4.9a2c38",
+        "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 = `$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value` AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2255.532169342041,
+        "y": 2096.0348600149155,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "ffb94613.95e098",
+                "565c3562.84041c",
+                "bd93f6c9.548798"
+            ]
+        ]
+    },
+    {
+        "id": "ffb94613.95e098",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2517.5319747924805,
+        "y": 2040.0346721410751,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "2126da98.7396c6"
+            ]
+        ]
+    },
+    {
+        "id": "2126da98.7396c6",
+        "type": "set",
+        "name": "set controller data",
+        "xml": "<set>\n<parameter name='prop.thirdpartySdnc-found' value='true' />\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": 2715.0320358276367,
+        "y": 2028.0346721410751,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "565c3562.84041c",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2549.0228385925293,
+        "y": 2088.608775496483,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "e073491.0a8bcb8"
+            ]
+        ]
+    },
+    {
+        "id": "bd93f6c9.548798",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2544.3558464050293,
+        "y": 2129.942088484764,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "e073491.0a8bcb8"
+            ]
+        ]
+    },
+    {
+        "id": "e073491.0a8bcb8",
+        "type": "set",
+        "name": "set controller data",
+        "xml": "<set>\n<parameter name='prop.thirdpartySdnc-found' value='false' />\n",
+        "comments": "",
+        "x": 2756.0312538146973,
+        "y": 2107.034858107567,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "f71b9c09.8160d",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1885.5313873291016,
+        "y": 2187.034938812256,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "781d667a.48d338"
+            ]
+        ]
+    },
+    {
+        "id": "781d667a.48d338",
+        "type": "set",
+        "name": "set tmp.restapiUrl-found",
+        "xml": "<set>\n<parameter name='tmp.restapiUrl' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value`' />\n<parameter name='tmp.restapiUrl-found' value='true' />",
+        "comments": "",
+        "x": 2218.531301498413,
+        "y": 2191.0349324941635,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "3a7b6aa5.045bc6",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2347.00390625,
+        "y": 1235.00390625,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "6e2071a4.92462",
+                "df7041a6.51331",
+                "dbdc0ae8.393328",
+                "aaa5c23.8b2364",
+                "b1db26a.6449ed8",
+                "4c08e6d0.e790e8",
+                "18a93c3.067c1c4",
+                "15c976cc.7eedd9",
+                "2cbc8da1.8ed692",
+                "2804ce8b.3d5072"
+            ]
+        ]
+    },
+    {
+        "id": "6e2071a4.92462",
+        "type": "switchNode",
+        "name": "switch name",
+        "xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'name'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2569.0038528442383,
+        "y": 1033.0039868354797,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "2381365f.5b11aa"
+            ]
+        ]
+    },
+    {
+        "id": "2381365f.5b11aa",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2756.0038528442383,
+        "y": 1029.0039868354797,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "279f5f0f.a7e29"
+            ]
+        ]
+    },
+    {
+        "id": "279f5f0f.a7e29",
+        "type": "set",
+        "name": "set name",
+        "xml": "<set>\n<parameter name='template.name' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+        "comments": "",
+        "x": 2924.0038528442383,
+        "y": 1029.6039929389954,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "df7041a6.51331",
+        "type": "switchNode",
+        "name": "switch service-type",
+        "xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'service-type'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2586.514045715332,
+        "y": 1094.0039267539978,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "391cf8f6.e35b68"
+            ]
+        ]
+    },
+    {
+        "id": "391cf8f6.e35b68",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2773.514045715332,
+        "y": 1090.0039267539978,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "963b6a75.854958"
+            ]
+        ]
+    },
+    {
+        "id": "963b6a75.854958",
+        "type": "set",
+        "name": "set service-type",
+        "xml": "<set>\n<parameter name='template.service-type' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+        "comments": "",
+        "x": 2941.514045715332,
+        "y": 1090.6039328575134,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "dbdc0ae8.393328",
+        "type": "switchNode",
+        "name": "switch total-size",
+        "xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'total-size'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2579.9766235351562,
+        "y": 1150.476727962494,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "b077f122.4fbd2"
+            ]
+        ]
+    },
+    {
+        "id": "b077f122.4fbd2",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2766.9766235351562,
+        "y": 1146.476727962494,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "ebbae5da.7a9fe8"
+            ]
+        ]
+    },
+    {
+        "id": "ebbae5da.7a9fe8",
+        "type": "set",
+        "name": "set total-size",
+        "xml": "<set>\n<parameter name='template.total-size' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+        "comments": "",
+        "x": 2934.9766235351562,
+        "y": 1147.0767340660095,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "aaa5c23.8b2364",
+        "type": "switchNode",
+        "name": "switch pir",
+        "xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'pir'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2557.976722717285,
+        "y": 1199.4767670631409,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "dd36a279.f0f0b"
+            ]
+        ]
+    },
+    {
+        "id": "dd36a279.f0f0b",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2744.976722717285,
+        "y": 1195.4767670631409,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "d7a0fe6d.faa06"
+            ]
+        ]
+    },
+    {
+        "id": "d7a0fe6d.faa06",
+        "type": "set",
+        "name": "set pir",
+        "xml": "<set>\n<parameter name='template.pir' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+        "comments": "",
+        "x": 2912.976722717285,
+        "y": 1196.0767731666565,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "b1db26a.6449ed8",
+        "type": "switchNode",
+        "name": "switch cbs",
+        "xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'cbs'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2558.9767570495605,
+        "y": 1250.4766917228699,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "f5a3f275.f1642"
+            ]
+        ]
+    },
+    {
+        "id": "f5a3f275.f1642",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2745.9767570495605,
+        "y": 1246.4766917228699,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "cec40dd1.40cb9"
+            ]
+        ]
+    },
+    {
+        "id": "cec40dd1.40cb9",
+        "type": "set",
+        "name": "set cbs",
+        "xml": "<set>\n<parameter name='template.cbs' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+        "comments": "",
+        "x": 2913.9767570495605,
+        "y": 1247.0766978263855,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "4c08e6d0.e790e8",
+        "type": "switchNode",
+        "name": "switch pbs",
+        "xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'pbs'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2554.9767570495605,
+        "y": 1305.4766917228699,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "883541e9.99bd6"
+            ]
+        ]
+    },
+    {
+        "id": "883541e9.99bd6",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2741.9767570495605,
+        "y": 1301.4766917228699,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "a988d120.b2aea"
+            ]
+        ]
+    },
+    {
+        "id": "a988d120.b2aea",
+        "type": "set",
+        "name": "set pbs",
+        "xml": "<set>\n<parameter name='template.pbs' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+        "comments": "",
+        "x": 2909.9767570495605,
+        "y": 1302.0766978263855,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "18a93c3.067c1c4",
+        "type": "switchNode",
+        "name": "switch couplingFlag",
+        "xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'couplingFlag'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2584.976905822754,
+        "y": 1361.4766936302185,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "980d8b86.bee918"
+            ]
+        ]
+    },
+    {
+        "id": "980d8b86.bee918",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2771.976905822754,
+        "y": 1357.4766936302185,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "51fcb9b3.05a2a8"
+            ]
+        ]
+    },
+    {
+        "id": "51fcb9b3.05a2a8",
+        "type": "set",
+        "name": "set couplingFlag",
+        "xml": "<set>\n<parameter name='template.couplingFlag' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+        "comments": "",
+        "x": 2939.976905822754,
+        "y": 1358.0766997337341,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "15c976cc.7eedd9",
+        "type": "switchNode",
+        "name": "switch colorAware",
+        "xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'colorAware'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2578.976905822754,
+        "y": 1407.4766936302185,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "fc32dc8f.1306d"
+            ]
+        ]
+    },
+    {
+        "id": "fc32dc8f.1306d",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2765.976905822754,
+        "y": 1403.4766936302185,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "767980d9.60391"
+            ]
+        ]
+    },
+    {
+        "id": "767980d9.60391",
+        "type": "set",
+        "name": "set colorAware",
+        "xml": "<set>\n<parameter name='template.colorAware' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+        "comments": "",
+        "x": 2933.976905822754,
+        "y": 1404.0766997337341,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "2804ce8b.3d5072",
+        "type": "switchNode",
+        "name": "switch diversity-policy",
+        "xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'diversity-policy'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2586.9771461486816,
+        "y": 1498.476758480072,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "fc3e428f.e47a2"
+            ]
+        ]
+    },
+    {
+        "id": "fc3e428f.e47a2",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2773.9771461486816,
+        "y": 1494.476758480072,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "f817158c.79da68"
+            ]
+        ]
+    },
+    {
+        "id": "f817158c.79da68",
+        "type": "set",
+        "name": "set diversity-policy",
+        "xml": "<set>\n<parameter name='template.diversity-policy' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+        "comments": "",
+        "x": 2941.9771461486816,
+        "y": 1495.0767645835876,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "2cbc8da1.8ed692",
+        "type": "switchNode",
+        "name": "switch route-objective-function",
+        "xml": "<switch test=\"`$tmp.network-input-parameters.param[$paidx].name == 'route-objective-function'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2615.9770545959473,
+        "y": 1447.476758480072,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "3c9d002d.c7368"
+            ]
+        ]
+    },
+    {
+        "id": "3c9d002d.c7368",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2802.9770545959473,
+        "y": 1443.476758480072,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "4b04be90.c9dfb"
+            ]
+        ]
+    },
+    {
+        "id": "4b04be90.c9dfb",
+        "type": "set",
+        "name": "set route-objective-function",
+        "xml": "<set>\n<parameter name='template.route-objective-function' value='`$tmp.network-input-parameters.param[$paidx].value`' />\n",
+        "comments": "",
+        "x": 2970.9770545959473,
+        "y": 1444.0767645835876,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "faa82de3.2bc5b",
+        "type": "for",
+        "name": "for paidx..tmp.network-input-parameters.param_length[]",
+        "xml": "<for index='paidx' start='0' end='`$tmp.network-input-parameters.param_length`' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 2067.1394424438477,
+        "y": 1365.472831249237,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "3a7b6aa5.045bc6"
+            ]
+        ]
+    },
+    {
+        "id": "cd3fb1b6.a548f",
+        "type": "set",
+        "name": "set param",
+        "xml": "<set>\n<parameter name='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value`' />",
+        "comments": "",
+        "x": 1343.7539405822754,
+        "y": 2286.0039920806885,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "6cad7750.ad59e8",
+        "type": "block",
+        "name": "find-sotn-fc-port-block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 924.5040130615234,
+        "y": 660.0039396286011,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "4bb0f260.939b6c",
+                "f63464b.235d598",
+                "53964d8b.013054"
+            ]
+        ]
+    },
+    {
+        "id": "4bb0f260.939b6c",
+        "type": "for",
+        "name": "for aidx..network-topology-operation-input.network-request-input.network-input-parameters.param[]",
+        "xml": "<for index='aidx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1000.2539672851562,
+        "y": 817.003984451294,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "b8e2888d.7baee8"
+            ]
+        ]
+    },
+    {
+        "id": "b8e2888d.7baee8",
+        "type": "execute",
+        "name": "contains fcport",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$aidx].name`\"/>\n    <parameter name=\"target\" value=\"fcport\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 859.5039291381836,
+        "y": 871.0041389465332,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "d22970d4.90a5"
+            ]
+        ]
+    },
+    {
+        "id": "d22970d4.90a5",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1035.2539176940918,
+        "y": 872.0039710998535,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "fb11f9b4.228c58"
+            ]
+        ]
+    },
+    {
+        "id": "fb11f9b4.228c58",
+        "type": "set",
+        "name": "set needOof",
+        "xml": "<set>\n<parameter name='needOof' value='true' />",
+        "comments": "",
+        "x": 1205.253921508789,
+        "y": 869.0039577484131,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "f63464b.235d598",
+        "type": "set",
+        "name": "set needOof",
+        "xml": "<set>\n<parameter name='needOof' value='false' />",
+        "comments": "",
+        "x": 734.2539672851562,
+        "y": 768.0040035247803,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "53964d8b.013054",
+        "type": "switchNode",
+        "name": "switch needOof",
+        "xml": "<switch test=\"`$needOof`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 719.2539215087891,
+        "y": 924.0039577484131,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "8ea3d7d7.febac8",
+                "d3d5931c.c4f83"
+            ]
+        ]
+    },
+    {
+        "id": "2b21902e.55dd5",
+        "type": "execute",
+        "name": "contains thirdPartySdncId",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`\"/>\n    <parameter name=\"target\" value=\"thirdPartySdncId\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1576.2581024169922,
+        "y": 2093.0041122436523,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "8a37fd2a.9df7f",
+                "3916c6e2.e1777a"
+            ]
+        ]
+    },
+    {
+        "id": "2e03ec55.fb6014",
+        "type": "execute",
+        "name": "contains templateFileName",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`\"/>\n    <parameter name=\"target\" value=\"templateFileName\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1579.258041381836,
+        "y": 2137.0038986206055,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "6c80438c.95e70c",
+                "6f6408d0.757528"
+            ]
+        ]
+    },
+    {
+        "id": "f3f5a797.4cdaf8",
+        "type": "execute",
+        "name": "contains restapiUrl",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`\"/>\n    <parameter name=\"target\" value=\"restapiUrl\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1549.2579727172852,
+        "y": 2186.00399017334,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "f71b9c09.8160d"
+            ]
+        ]
+    },
+    {
+        "id": "3916c6e2.e1777a",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1383.50390625,
+        "y": 2141.00390625,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "2e03ec55.fb6014"
+            ]
+        ]
+    },
+    {
+        "id": "6f6408d0.757528",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1372.50390625,
+        "y": 2191.00390625,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "f3f5a797.4cdaf8"
+            ]
+        ]
+    },
+    {
+        "id": "a7a35b54.a22968",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1197.7539596557617,
+        "y": 2105.0040531158447,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "2b21902e.55dd5",
+                "cd3fb1b6.a548f"
+            ]
+        ]
+    },
+    {
+        "id": "195471ac.565dfe",
+        "type": "for",
+        "name": "for sIdx..service-data.networks.network[]",
+        "xml": "<for index='sIdx' start='0' end='`$service-data.networks.network_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2247.503921508789,
+        "y": 2561.00390625,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "530203c3.a5f1bc"
+            ]
+        ]
+    },
+    {
+        "id": "530203c3.a5f1bc",
+        "type": "switchNode",
+        "name": "switch svc-action",
+        "xml": "<switch test='`$service-data.networks.network[$sIdx].network-id == $network-topology-operation-input.network-information.network-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2538.7542724609375,
+        "y": 2556.00390625,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "d85c868.33ef678"
+            ]
+        ]
+    },
+    {
+        "id": "d85c868.33ef678",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2705.5048484802246,
+        "y": 2554.003936767578,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "bd6349d8.0c5b08"
+            ]
+        ]
+    },
+    {
+        "id": "30dc6201.193a2e",
+        "type": "set",
+        "name": "set localServiceId",
+        "xml": "<set>\n<parameter name='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paraIndx].name`' value='localServiceId' />\n<parameter name='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paraIndx].value`' value='`$restApi-result.output.service.uuid`' />",
+        "comments": "",
+        "x": 3060.0043029785156,
+        "y": 2577.003936767578,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "e46941d6.14145",
+        "type": "set",
+        "name": "set paraIndx",
+        "xml": "<set>\n<parameter name='paraIndx' value='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param_length`' />",
+        "comments": "",
+        "x": 3058.5040550231934,
+        "y": 2510.0040283203125,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": []
+    },
+    {
+        "id": "bd6349d8.0c5b08",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 2860.503936767578,
+        "y": 2544.0039978027344,
+        "z": "bf8d58e2.6e6ac8",
+        "wires": [
+            [
+                "e46941d6.14145",
+                "30dc6201.193a2e"
+            ]
+        ]
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-create.json
new file mode 100644
index 0000000..9d81ba6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-create.json
@@ -0,0 +1,921 @@
+[
+    {
+        "id": "51ff11de.938a4",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 119.00390625,
+        "y": 79.00390625,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "5f6a102e.b60f5"
+            ]
+        ]
+    },
+    {
+        "id": "5f6a102e.b60f5",
+        "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": 331.00391006469727,
+        "y": 151.0039234161377,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "7e2e9718.c2ec58"
+            ]
+        ]
+    },
+    {
+        "id": "7e2e9718.c2ec58",
+        "type": "method",
+        "name": "wan-connection-topology-operation-create",
+        "xml": "<method rpc='wan-connection-topology-operation-create' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 319.0040283203125,
+        "y": 239.00390625,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "deadfdad.78a35"
+            ]
+        ]
+    },
+    {
+        "id": "8e544758.cf6458",
+        "type": "execute",
+        "name": "contains specification",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"specification\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 323.0352020263672,
+        "y": 512.035210609436,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "2fd5af60.51a0e",
+                "b315221.5065ce"
+            ]
+        ]
+    },
+    {
+        "id": "be2720c6.087bc",
+        "type": "execute",
+        "name": "contains Fc",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"Fc\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 511.0352783203125,
+        "y": 584.0352687835693,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "985af680.447708",
+                "9924596f.f95838"
+            ]
+        ]
+    },
+    {
+        "id": "39041604.4e8b9a",
+        "type": "execute",
+        "name": "contains Fd",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"Fd\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 510.0351982116699,
+        "y": 661.035219669342,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "f64ebc8e.88ac",
+                "2b8cfc56.68f314"
+            ]
+        ]
+    },
+    {
+        "id": "2fd5af60.51a0e",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 560.0352325439453,
+        "y": 510.0351963043213,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b315221.5065ce",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 306.0352668762207,
+        "y": 584.0352687835693,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "be2720c6.087bc"
+            ]
+        ]
+    },
+    {
+        "id": "985af680.447708",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 693.0352821350098,
+        "y": 585.0352520942688,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "4637df53.0968b"
+            ]
+        ]
+    },
+    {
+        "id": "f64ebc8e.88ac",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 705.0352821350098,
+        "y": 663.0352520942688,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "4637df53.0968b"
+            ]
+        ]
+    },
+    {
+        "id": "9924596f.f95838",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 301.0352096557617,
+        "y": 665.0352411270142,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "39041604.4e8b9a"
+            ]
+        ]
+    },
+    {
+        "id": "e2a37c8a.52a28",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 282.03532791137695,
+        "y": 840.035454750061,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "2ee04d47.b452f2"
+            ]
+        ]
+    },
+    {
+        "id": "c9f2e546.57c978",
+        "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": 510.0039978027344,
+        "y": 359.0039253234863,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "deadfdad.78a35",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 225.00392150878906,
+        "y": 339.00390243530273,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "c9f2e546.57c978",
+                "9326fcfd.42d18",
+                "7b6cbacb.c940e4",
+                "a48d4fd2.b35f8"
+            ]
+        ]
+    },
+    {
+        "id": "9326fcfd.42d18",
+        "type": "switchNode",
+        "name": "switch network-id",
+        "xml": "<switch test='`$network-topology-operation-input.network-information.network-id`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 510.0039291381836,
+        "y": 297.00391578674316,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "661cfd5a.9af8f4"
+            ]
+        ]
+    },
+    {
+        "id": "661cfd5a.9af8f4",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "comments": "",
+        "outputs": 1,
+        "x": 759.0040054321289,
+        "y": 236.00391578674316,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "e482d16b.f1f2a"
+            ]
+        ]
+    },
+    {
+        "id": "e482d16b.f1f2a",
+        "type": "execute",
+        "name": "generate network-id",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"network-topology-operation-input.network-information.network-id\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1019.0040893554688,
+        "y": 239.00394344329834,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "4a8125e1.d928fc",
+                "1ef0b35a.df2b6d"
+            ]
+        ]
+    },
+    {
+        "id": "4a8125e1.d928fc",
+        "type": "failure",
+        "name": "Other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1272.0041427612305,
+        "y": 180.00391387939453,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "a3cf2f7c.aa153"
+            ]
+        ]
+    },
+    {
+        "id": "a3cf2f7c.aa153",
+        "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 generation allotted resource ID\" />\n",
+        "comments": "",
+        "x": 1438.004150390625,
+        "y": 182.00393295288086,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    },
+    {
+        "id": "7b6cbacb.c940e4",
+        "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": 386.0039749145508,
+        "y": 978.003942489624,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    },
+    {
+        "id": "2ee04d47.b452f2",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 474.0040092468262,
+        "y": 841.0040912628174,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a48d4fd2.b35f8",
+        "type": "block",
+        "name": "save-specification-block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 819.0039520263672,
+        "y": 513.0078201293945,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "2ef49dd5.a969b2",
+                "1ebbb5b1.ce49ea"
+            ]
+        ]
+    },
+    {
+        "id": "4637df53.0968b",
+        "type": "block",
+        "name": "find-specifications-block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 973.7539024353027,
+        "y": 617.0078229904175,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "4bb001a8.758d6"
+            ]
+        ]
+    },
+    {
+        "id": "4bb001a8.758d6",
+        "type": "switchNode",
+        "name": "switch service-data.networks_length",
+        "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1329.2543029785156,
+        "y": 610.0078811645508,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "de42c02b.4d353",
+                "129498fa.fc8607"
+            ]
+        ]
+    },
+    {
+        "id": "de42c02b.4d353",
+        "type": "other",
+        "name": "Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1640.2542877197266,
+        "y": 576.0078916549683,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "1750133b.d0d30d"
+            ]
+        ]
+    },
+    {
+        "id": "129498fa.fc8607",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1354.2541885375977,
+        "y": 706.0078849499114,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "89c60eaa.e0a3b"
+            ]
+        ]
+    },
+    {
+        "id": "89c60eaa.e0a3b",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1498.6112327575684,
+        "y": 705.9443969433196,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "90d47eef.bffa5",
+                "6361d5f3.8fbc7c"
+            ]
+        ]
+    },
+    {
+        "id": "1750133b.d0d30d",
+        "type": "set",
+        "name": "set nidx and isExist",
+        "xml": "<set>\n<parameter name='nidx' value='0' />\n<parameter name='isExist' value='false' />",
+        "comments": "",
+        "x": 1815.7542419433594,
+        "y": 575.0079183871858,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    },
+    {
+        "id": "6361d5f3.8fbc7c",
+        "type": "set",
+        "name": "set nidx and isExist",
+        "xml": "<set>\n<parameter name='nidx' value='`$service-data.networks.network_length`' />\n<parameter name='isExist' value='false' />",
+        "comments": "",
+        "x": 1659.3098831176758,
+        "y": 664.5635662078857,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    },
+    {
+        "id": "90d47eef.bffa5",
+        "type": "for",
+        "name": "for each existing network",
+        "xml": "<for index='idx' start='0' end='`$nidx`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1687.7383117675781,
+        "y": 717.7856483459473,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "c0e01e64.557b7"
+            ]
+        ]
+    },
+    {
+        "id": "d6f28b6a.4c11f8",
+        "type": "set",
+        "name": "set nidx and isExist",
+        "xml": "<set>\n<parameter name='nidx' value='`$idx`' />\n<parameter name='isExist' value='true' />",
+        "comments": "",
+        "x": 1985.005386352539,
+        "y": 978.0086584091187,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    },
+    {
+        "id": "2ef49dd5.a969b2",
+        "type": "set",
+        "name": "set network in service-data",
+        "xml": "<set>\n<parameter name='service-data.networks.network[$nidx].network-id' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />\n<parameter name='service-data.networks.network_length' value='`$nidx+1`' />\n\n",
+        "comments": "",
+        "x": 1282.003921508789,
+        "y": 535.0078272819519,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    },
+    {
+        "id": "1ebbb5b1.ce49ea",
+        "type": "switchNode",
+        "name": "switch service-data.networks_length",
+        "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1307.00390625,
+        "y": 349.0078139305115,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "71de1500.a0f5dc",
+                "84d10745.bd09d8"
+            ]
+        ]
+    },
+    {
+        "id": "71de1500.a0f5dc",
+        "type": "other",
+        "name": "Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1256.004005432129,
+        "y": 419.00785875320435,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "5a928df3.62e684"
+            ]
+        ]
+    },
+    {
+        "id": "5a928df3.62e684",
+        "type": "set",
+        "name": "set nidx",
+        "xml": "<set>\n<parameter name='nidx' value='0' />",
+        "comments": "",
+        "x": 1389.50390625,
+        "y": 418.0078430175781,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    },
+    {
+        "id": "84d10745.bd09d8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1253.003791809082,
+        "y": 467.00785779953003,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "bf7c1ae3.a13b58"
+            ]
+        ]
+    },
+    {
+        "id": "bf7c1ae3.a13b58",
+        "type": "set",
+        "name": "set nidx",
+        "xml": "<set>\n<parameter name='nidx' value='`$service-data.networks.network_length`' />",
+        "comments": "",
+        "x": 1390.0597305297852,
+        "y": 463.56352281570435,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    },
+    {
+        "id": "89792a65.256368",
+        "type": "set",
+        "name": "set network in service-data",
+        "xml": "<set>\n<parameter name='network-topology-operation-input.network-request-input.network-input-parameters.param_length' value='`$input_param_length + $param_length`' />\n\n",
+        "comments": "",
+        "x": 2006.5061492919922,
+        "y": 1429.0049443244934,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    },
+    {
+        "id": "9e04e4be.367888",
+        "type": "block",
+        "name": "copy-specifications-block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1709.2545623779297,
+        "y": 1072.0042037963867,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "d6f28b6a.4c11f8",
+                "89792a65.256368",
+                "49104faa.41ebb",
+                "5f63a6d5.0f0808",
+                "4bcb87bc.b866b8"
+            ]
+        ]
+    },
+    {
+        "id": "49104faa.41ebb",
+        "type": "switchNode",
+        "name": "switch service-data.networks_length",
+        "xml": "<switch test='`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2057.0045013427734,
+        "y": 1059.0041122436523,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "4c3184c1.6619ac",
+                "2d5e7fd8.239cb"
+            ]
+        ]
+    },
+    {
+        "id": "4c3184c1.6619ac",
+        "type": "other",
+        "name": "Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2283.00435256958,
+        "y": 1034.0040397644043,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "cb121f91.6d21"
+            ]
+        ]
+    },
+    {
+        "id": "cb121f91.6d21",
+        "type": "set",
+        "name": "set param_length",
+        "xml": "<set>\n<parameter name='param_length' value='0' />",
+        "comments": "",
+        "x": 2469.5041885375977,
+        "y": 1032.0040455157869,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    },
+    {
+        "id": "2d5e7fd8.239cb",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2279.0043182373047,
+        "y": 1089.0040855407715,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "11ebe727.0ad829"
+            ]
+        ]
+    },
+    {
+        "id": "11ebe727.0ad829",
+        "type": "set",
+        "name": "set param_length",
+        "xml": "<set>\n<parameter name='param_length' value='`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`' />",
+        "comments": "",
+        "x": 2467.7542572021484,
+        "y": 1089.0040702819824,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    },
+    {
+        "id": "5f63a6d5.0f0808",
+        "type": "for",
+        "name": "for each existing params",
+        "xml": "<for index='pidx' start='0' end='`$param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2013.7548370361328,
+        "y": 1313.0043182373047,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "29a0bf72.ef8a9"
+            ]
+        ]
+    },
+    {
+        "id": "8a453e14.41bb8",
+        "type": "set",
+        "name": "set input_param_length",
+        "xml": "<set>\n<parameter name='input_param_length' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' />",
+        "comments": "",
+        "x": 2490.7548751831055,
+        "y": 1218.5042095184326,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    },
+    {
+        "id": "4bcb87bc.b866b8",
+        "type": "switchNode",
+        "name": "switch network-input-parameters_length",
+        "xml": "<switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2064.7544708251953,
+        "y": 1160.5040702819824,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "c56b0210.d9d6c",
+                "9e58091.eed84f8"
+            ]
+        ]
+    },
+    {
+        "id": "9e58091.eed84f8",
+        "type": "other",
+        "name": "Null",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2298.7543563842773,
+        "y": 1155.5040855407715,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "776789ac.4e1c88"
+            ]
+        ]
+    },
+    {
+        "id": "c56b0210.d9d6c",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2297.7544136047363,
+        "y": 1221.5040559768677,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "8a453e14.41bb8"
+            ]
+        ]
+    },
+    {
+        "id": "776789ac.4e1c88",
+        "type": "set",
+        "name": "set input_param_length",
+        "xml": "<set>\n<parameter name='input_param_length' value='0' />",
+        "comments": "",
+        "x": 2487.754325866699,
+        "y": 1156.5041007995605,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    },
+    {
+        "id": "29a0bf72.ef8a9",
+        "type": "set",
+        "name": "set specification_to_input_param",
+        "xml": "<set>\n<parameter name='network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx+$input_param_length].' value='`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx].`' />",
+        "comments": "",
+        "x": 2325.7544860839844,
+        "y": 1313.0043315887451,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    },
+    {
+        "id": "c0e01e64.557b7",
+        "type": "execute",
+        "name": "if contains specification",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`\" />\n    <parameter name=\"target\" value=\"specification\"/>\n  \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1670.5041275024414,
+        "y": 792.0040473937988,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "f0e3233e.fbb43"
+            ]
+        ]
+    },
+    {
+        "id": "3b74b5cb.6db12a",
+        "type": "execute",
+        "name": "if contains model-name",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`\" />\n    <parameter name=\"target\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n  \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1664.753921508789,
+        "y": 849.0039715766907,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "43e7c123.94da6"
+            ]
+        ]
+    },
+    {
+        "id": "f0e3233e.fbb43",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1861.7540111541748,
+        "y": 791.0039234161377,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "3b74b5cb.6db12a"
+            ]
+        ]
+    },
+    {
+        "id": "43e7c123.94da6",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1868.0040092468262,
+        "y": 846.0040340423584,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "9e04e4be.367888"
+            ]
+        ]
+    },
+    {
+        "id": "dc605cc5.0af61",
+        "type": "execute",
+        "name": "contains FcPort",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"FcPort\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 502.00390625,
+        "y": 734.00390625,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "d20a2c0b.707f2",
+                "e2a37c8a.52a28"
+            ]
+        ]
+    },
+    {
+        "id": "d20a2c0b.707f2",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 697.0039901733398,
+        "y": 736.0039386749268,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "4637df53.0968b"
+            ]
+        ]
+    },
+    {
+        "id": "2b8cfc56.68f314",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 293.00391387939453,
+        "y": 737.0038776397705,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "dc605cc5.0af61"
+            ]
+        ]
+    },
+    {
+        "id": "1ef0b35a.df2b6d",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1271.3373184204102,
+        "y": 270.00391387939453,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "f3103198.99ca3"
+            ]
+        ]
+    },
+    {
+        "id": "f3103198.99ca3",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1444.3372344970703,
+        "y": 265.00390625,
+        "z": "ec4bf25e.dd6bb",
+        "wires": [
+            [
+                "a4c91e95.e83ee"
+            ]
+        ]
+    },
+    {
+        "id": "a4c91e95.e83ee",
+        "type": "set",
+        "name": "set networkId and network-object-path",
+        "xml": "<set>\n<parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name=\"network-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $network-topology-operation-input.network-information.network-id  + '/network-data/'` \" />",
+        "comments": "",
+        "x": 1707.50390625,
+        "y": 264.00390625,
+        "z": "ec4bf25e.dd6bb",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-deactivate.json
new file mode 100644
index 0000000..9630687
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-deactivate.json
@@ -0,0 +1,1297 @@
+[
+    {
+        "id": "bed9c35d.e0ab8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 116.00390625,
+        "y": 78.99999904632568,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "bdf50147.91929"
+            ]
+        ]
+    },
+    {
+        "id": "bdf50147.91929",
+        "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": 328.00391006469727,
+        "y": 151.00001621246338,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "9e64bb35.81c5b8"
+            ]
+        ]
+    },
+    {
+        "id": "9e64bb35.81c5b8",
+        "type": "method",
+        "name": "wan-connection-topology-operation-deactivate",
+        "xml": "<method rpc='wan-connection-topology-operation-deactivate' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 316.0040283203125,
+        "y": 238.99999904632568,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "7ad810d3.cad88"
+            ]
+        ]
+    },
+    {
+        "id": "8a67a6d1.1bbf48",
+        "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": 703.0041885375977,
+        "y": 323.0000705718994,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8ba9bac1.ee7e58",
+        "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": 303.00392150878906,
+        "y": 1188.0002126693726,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "7ad810d3.cad88",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 228.5041046142578,
+        "y": 680.0001344680786,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "5d609d23.b321b4",
+                "b02a1448.2abf08",
+                "8a67a6d1.1bbf48",
+                "8ba9bac1.ee7e58",
+                "9a0faf20.2fca7"
+            ]
+        ]
+    },
+    {
+        "id": "5d609d23.b321b4",
+        "type": "for",
+        "name": "for pidx..service-data.networks.network[]",
+        "xml": "<for index='pidx' start='0' end='`$service-data.networks.network_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 866.5043182373047,
+        "y": 480.00013303756714,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "402023c4.b7ccfc"
+            ]
+        ]
+    },
+    {
+        "id": "402023c4.b7ccfc",
+        "type": "switchNode",
+        "name": "switch network-id",
+        "xml": "<switch test=\"`$service-data.networks.network[$pidx].network-id == $network-topology-operation-input.network-information.network-id`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 917.5042495727539,
+        "y": 553.0001649856567,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "2c64e469.ac5d6c"
+            ]
+        ]
+    },
+    {
+        "id": "2c64e469.ac5d6c",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1099.75435256958,
+        "y": 555.0002584457397,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "f806435c.0ee1b"
+            ]
+        ]
+    },
+    {
+        "id": "f806435c.0ee1b",
+        "type": "set",
+        "name": "set tmp.pidx and tmp.network-input-parameters",
+        "xml": "<set>\n<parameter name='tmp.pidx' value='`$pidx`' />\n<parameter name='tmp.network.' value='`$service-data.networks.network[$pidx].`' />\n<parameter name='tmp.network-input-parameters' value='`$service-data.networks.network[$pidx].network-data.network-request-input.network-input-parameters`' />\n<parameter name='tmp.found-network-input' value='true' />",
+        "comments": "",
+        "x": 1386.372314453125,
+        "y": 539.4290904998779,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "b02a1448.2abf08",
+        "type": "set",
+        "name": "set tmp.found-network-input",
+        "xml": "<set>\n<parameter name='tmp.found-network-input' value='false' />",
+        "comments": "",
+        "x": 851.5042190551758,
+        "y": 405.00017070770264,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "644b78b3.b56638",
+        "type": "switchNode",
+        "name": "switch found-network-input",
+        "xml": "<switch test=\"`$found-network-input`\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 588.5042037963867,
+        "y": 890.0002946853638,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "ab8a1407.b57258",
+                "b5ad9505.765198"
+            ]
+        ]
+    },
+    {
+        "id": "ab8a1407.b57258",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 820.5042953491211,
+        "y": 934.0004930496216,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "e70ec11.398ad4"
+            ]
+        ]
+    },
+    {
+        "id": "b5ad9505.765198",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 821.2542343139648,
+        "y": 892.0003843307495,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "bc1e10df.495bf"
+            ]
+        ]
+    },
+    {
+        "id": "bc1e10df.495bf",
+        "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=\"Error: Network input parameters not found\" />\n    \n",
+        "comments": "",
+        "x": 992.2542343139648,
+        "y": 900.0003538131714,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "e70ec11.398ad4",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 558.0040817260742,
+        "y": 1046.0002794265747,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "fa434270.08d4",
+                "229661c0.3323fe",
+                "6889ef74.f6656"
+            ]
+        ]
+    },
+    {
+        "id": "fa434270.08d4",
+        "type": "for",
+        "name": "for cidx..tmp.network.network-data.network-topology.network-parameters.network-parameter[]",
+        "xml": "<for index='cidx' start='0' end='`$tmp.network.network-data.network-topology.network-parameters.network-parameter_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1007.0039215087891,
+        "y": 1132.000135421753,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "25bfefbb.7b8a2"
+            ]
+        ]
+    },
+    {
+        "id": "467eb351.f8dd4c",
+        "type": "switchNode",
+        "name": "switch network-parameter-name == 'restapiUrl-deactivate'",
+        "xml": "<switch test=\"`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUrl-deactivate'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1121.0039825439453,
+        "y": 1202.0001974105835,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "85fbba7c.c54258"
+            ]
+        ]
+    },
+    {
+        "id": "85fbba7c.c54258",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1394.0041046142578,
+        "y": 1201.0001554489136,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "3a92a803.532c08"
+            ]
+        ]
+    },
+    {
+        "id": "3a92a803.532c08",
+        "type": "set",
+        "name": "set tmp.thirdparty-sdnc-url",
+        "xml": "<set>\n<parameter name='tmp.restapiUrl' value='`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`' />\n<parameter name='tmp.restapiUrl-found' value='true' />",
+        "comments": "",
+        "x": 1573.0040664672852,
+        "y": 1203.0002040863037,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "ecb2328b.87404",
+        "type": "execute",
+        "name": "execute RestApiCallNode delete wan-connection",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$tmp.restapiUrl + $tmp.actualId`\" />\n<parameter name=\"restapiUser\" value=\"`$tmp.restapiUser`\" />\n<parameter name=\"restapiPassword\" value=\"`$tmp.restapiPassword`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"delete\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 895.2539520263672,
+        "y": 1934.000750541687,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "90bce824.a60af8",
+                "639417f4.3c8618",
+                "5e319e9.e03ce6"
+            ]
+        ]
+    },
+    {
+        "id": "e81bb98f.1bc1c8",
+        "type": "switchNode",
+        "name": "switch network-parameter-name == 'restapiUser'",
+        "xml": "<switch test=\"`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUser'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1124.2539749145508,
+        "y": 1253.0001726150513,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "798bd507.61470c"
+            ]
+        ]
+    },
+    {
+        "id": "798bd507.61470c",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1390.2540893554688,
+        "y": 1255.000249862671,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "41e8b8a1.d5a1f8"
+            ]
+        ]
+    },
+    {
+        "id": "41e8b8a1.d5a1f8",
+        "type": "set",
+        "name": "set tmp.restapiUser",
+        "xml": "<set>\n<parameter name='tmp.restapiUser' value='`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`' />\n<parameter name='tmp.restapiUser-found' value='true' />",
+        "comments": "",
+        "x": 1591.2541198730469,
+        "y": 1253.0002508163452,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "9df47848.ecea98",
+        "type": "switchNode",
+        "name": "switch network-parameter-name == 'restapiPassword'",
+        "xml": "<switch test=\"`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiPassword'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1132.2540435791016,
+        "y": 1307.0000982284546,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "d16bb98.a2dc948"
+            ]
+        ]
+    },
+    {
+        "id": "d16bb98.a2dc948",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1409.2540550231934,
+        "y": 1305.0001306533813,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "55ba7bac.43a354"
+            ]
+        ]
+    },
+    {
+        "id": "55ba7bac.43a354",
+        "type": "set",
+        "name": "set tmp.restapiPassword",
+        "xml": "<set>\n<parameter name='tmp.restapiPassword' value='`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`' />\n<parameter name='tmp.restapiPassword-found' value='true' />",
+        "comments": "",
+        "x": 1610.2540855407715,
+        "y": 1303.0001316070557,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "229661c0.3323fe",
+        "type": "set",
+        "name": "set paras flags",
+        "xml": "<set>\n<parameter name='tmp.restapiUrl-found' value='false' />\n<parameter name='tmp.restapiUser-found' value='false' />\n<parameter name='tmp.restapiPassword-found' value='false' />\n<parameter name='tmp.thirdPartyAdaptorRpc-found' value='false' />\n<parameter name='tmp.actualId-found' value='false' />",
+        "comments": "",
+        "x": 794.0040893554688,
+        "y": 1047.00013256073,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "6889ef74.f6656",
+        "type": "switchNode",
+        "name": "switch thirdPartyAdaptorRpc-found == 'true'",
+        "xml": "<switch test=\"`$tmp.thirdPartyAdaptorRpc-found == 'true'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 836.0039215087891,
+        "y": 1542.0001783370972,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "6070832b.4e05ac",
+                "ffaf6a87.b25588"
+            ]
+        ]
+    },
+    {
+        "id": "25bfefbb.7b8a2",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 778.0039215087891,
+        "y": 1313.0000486373901,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "467eb351.f8dd4c",
+                "e81bb98f.1bc1c8",
+                "9df47848.ecea98",
+                "6302da7e.dd2b84",
+                "28436b7c.b1fc44"
+            ]
+        ]
+    },
+    {
+        "id": "6070832b.4e05ac",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1098.0039405822754,
+        "y": 1504.0001153945923,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "7b671856.32cf38"
+            ]
+        ]
+    },
+    {
+        "id": "ffaf6a87.b25588",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1099.003890991211,
+        "y": 1570.0000801086426,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "c985a158.801a7"
+            ]
+        ]
+    },
+    {
+        "id": "7b671856.32cf38",
+        "type": "call",
+        "name": "call thirdPartyAdaptorRpc",
+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='`$tmp.thirdPartyAdaptorRpc`' mode='sync' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1318.0039825439453,
+        "y": 1505.0001745224,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "dead764f.d92678",
+                "d7c6c9d5.2e7148",
+                "15e9a511.5d2bdb"
+            ]
+        ]
+    },
+    {
+        "id": "c985a158.801a7",
+        "type": "switchNode",
+        "name": "switch restapiUrl-found == 'true'",
+        "xml": "<switch test=\"`$tmp.restapiUrl-found == 'true'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 860.4548110961914,
+        "y": 1654.0068244934082,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "4213fed6.58526",
+                "b4e8bd7.9e5da4"
+            ]
+        ]
+    },
+    {
+        "id": "4213fed6.58526",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1111.4547958374023,
+        "y": 1652.0066204071045,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "1d6d17bd.ff2e18"
+            ]
+        ]
+    },
+    {
+        "id": "1d6d17bd.ff2e18",
+        "type": "switchNode",
+        "name": "switch restapiUser-found == 'true'",
+        "xml": "<switch test=\"`$tmp.restapiUser-found == 'true'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 838.4549102783203,
+        "y": 1721.228922843933,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "787ae8bc.8e3698",
+                "c501bbca.d35c78"
+            ]
+        ]
+    },
+    {
+        "id": "787ae8bc.8e3698",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1105.4548034667969,
+        "y": 1722.2286357879639,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "ccf93de2.220a9"
+            ]
+        ]
+    },
+    {
+        "id": "ccf93de2.220a9",
+        "type": "switchNode",
+        "name": "switch restapiPassword-found == 'true'",
+        "xml": "<switch test=\"`$tmp.restapiPassword-found == 'true'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 853.4548034667969,
+        "y": 1791.2288455963135,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "ef4e3315.b193a",
+                "ec2c6336.45952"
+            ]
+        ]
+    },
+    {
+        "id": "ef4e3315.b193a",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1113.4548034667969,
+        "y": 1791.2286357879639,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "5bfb0348.022b1c"
+            ]
+        ]
+    },
+    {
+        "id": "6302da7e.dd2b84",
+        "type": "switchNode",
+        "name": "switch network-parameter-name == 'thirdPartyAdaptorRpc-deactivate'",
+        "xml": "<switch test=\"`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartyAdaptorRpc-deactivate'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1150.010440826416,
+        "y": 1400.0064764022827,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "fd6dd8ea.6b1e08"
+            ]
+        ]
+    },
+    {
+        "id": "fd6dd8ea.6b1e08",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1461.0106582641602,
+        "y": 1404.006381034851,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "46687aa0.06bae4"
+            ]
+        ]
+    },
+    {
+        "id": "46687aa0.06bae4",
+        "type": "set",
+        "name": "set tmp.thirdPartyAdaptorRpc",
+        "xml": "<set>\n<parameter name='tmp.thirdPartyAdaptorRpc' value='`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`' />\n<parameter name='tmp.thirdPartyAdaptorRpc-found' value='true' />",
+        "comments": "",
+        "x": 1656.010612487793,
+        "y": 1398.0065717697144,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "15e9a511.5d2bdb",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1584.0103759765625,
+        "y": 1544.3398427963257,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "9fcd7153.d785c"
+            ]
+        ]
+    },
+    {
+        "id": "d7c6c9d5.2e7148",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1575.010425567627,
+        "y": 1512.8398685455322,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "9fcd7153.d785c"
+            ]
+        ]
+    },
+    {
+        "id": "dead764f.d92678",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1578.7604637145996,
+        "y": 1483.1969734206796,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "ab7968a5.26b8d8"
+            ]
+        ]
+    },
+    {
+        "id": "9fcd7153.d785c",
+        "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 calling ' + $tmp.thirdPartyAdaptorRpc`\" />\n",
+        "comments": "",
+        "x": 1741.7604904174805,
+        "y": 1529.5899410247803,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "ab7968a5.26b8d8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1720.416431427002,
+        "y": 1479.3891426101327,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5e319e9.e03ce6",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1225.0103759765625,
+        "y": 1969.3398427963257,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "a7499ed5.48afb"
+            ]
+        ]
+    },
+    {
+        "id": "639417f4.3c8618",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1216.010425567627,
+        "y": 1937.8398685455322,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "a7499ed5.48afb"
+            ]
+        ]
+    },
+    {
+        "id": "90bce824.a60af8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1219.7604637145996,
+        "y": 1908.1969734206796,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "8b51f6a8.9f1da8"
+            ]
+        ]
+    },
+    {
+        "id": "a7499ed5.48afb",
+        "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 calling ' + $tmp.restapiUrl`\" />\n",
+        "comments": "",
+        "x": 1382.7604904174805,
+        "y": 1954.5899410247803,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "8b51f6a8.9f1da8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1361.416431427002,
+        "y": 1904.3891426101327,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b4e8bd7.9e5da4",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1262.677001953125,
+        "y": 1619.4509267807007,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "e85c9352.a3eed"
+            ]
+        ]
+    },
+    {
+        "id": "e85c9352.a3eed",
+        "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=\"Error: 3rd party controller restapiUrl not found\" />\n    \n",
+        "comments": "",
+        "x": 1433.677001953125,
+        "y": 1627.4508962631226,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "c501bbca.d35c78",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1267.677001953125,
+        "y": 1698.4509267807007,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "ae06c9a.f856b38"
+            ]
+        ]
+    },
+    {
+        "id": "ae06c9a.f856b38",
+        "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=\"Error: 3rd party controller restapiUser not found\" />\n    \n",
+        "comments": "",
+        "x": 1438.677001953125,
+        "y": 1706.4508962631226,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "ec2c6336.45952",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1258.677001953125,
+        "y": 1769.4509267807007,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "ea3c7dab.c8829"
+            ]
+        ]
+    },
+    {
+        "id": "ea3c7dab.c8829",
+        "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=\"Error: 3rd party controller restapiPassword not found\" />\n    \n",
+        "comments": "",
+        "x": 1429.677001953125,
+        "y": 1777.4508962631226,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "28436b7c.b1fc44",
+        "type": "switchNode",
+        "name": "switch network-parameter-name == 'actualId'",
+        "xml": "<switch test=\"`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'actualId'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1136.0038757324219,
+        "y": 1354.999960899353,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "ff7b2584.cdcb58"
+            ]
+        ]
+    },
+    {
+        "id": "ff7b2584.cdcb58",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1413.0038871765137,
+        "y": 1352.9999933242798,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "4ffde6e.9995318"
+            ]
+        ]
+    },
+    {
+        "id": "4ffde6e.9995318",
+        "type": "set",
+        "name": "set tmp.actualId",
+        "xml": "<set>\n<parameter name='tmp.actualId' value='`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`' />\n<parameter name='tmp.actualId-found' value='true' />",
+        "comments": "",
+        "x": 1614.0039176940918,
+        "y": 1350.999994277954,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "5bfb0348.022b1c",
+        "type": "switchNode",
+        "name": "switch actualId-found == 'true'",
+        "xml": "<switch test=\"`$tmp.actualId-found == 'true'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 867.2261047363281,
+        "y": 1859.4444189071655,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "21d86096.fee9f",
+                "849bef82.9af23"
+            ]
+        ]
+    },
+    {
+        "id": "21d86096.fee9f",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1127.2261047363281,
+        "y": 1859.444209098816,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "ecb2328b.87404"
+            ]
+        ]
+    },
+    {
+        "id": "849bef82.9af23",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1272.4483032226562,
+        "y": 1837.6665000915527,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "9362ad56.36a98"
+            ]
+        ]
+    },
+    {
+        "id": "9362ad56.36a98",
+        "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=\"Error: Wan Connection actualId not found\" />\n    \n",
+        "comments": "",
+        "x": 1443.4483032226562,
+        "y": 1845.6664695739746,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "c8936a70.9f1118",
+        "type": "execute",
+        "name": "execute RestApiCallNode get wan-connection localId",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sotn_get_zte_template.json' `\" />\n<parameter name=\"restapiUrl\" value=\"http://10.80.80.21:8443/restconf/operations/ZTE-API-ConnectivityService:get-service-details\" />\n<parameter name=\"restapiUser\" value=\"admin\" />\n<parameter name=\"restapiPassword\" value=\"admin\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"restApiResult\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 801.25390625,
+        "y": 2170.003906726837,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "953b9364.6a04b",
+                "511ddd61.150c94",
+                "eb807b79.8d7c78"
+            ]
+        ]
+    },
+    {
+        "id": "eb807b79.8d7c78",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1131.0103302001953,
+        "y": 2205.342998981476,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "bd9032fd.3c50f"
+            ]
+        ]
+    },
+    {
+        "id": "511ddd61.150c94",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1122.0103797912598,
+        "y": 2173.8430247306824,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "bd9032fd.3c50f"
+            ]
+        ]
+    },
+    {
+        "id": "953b9364.6a04b",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1125.7604179382324,
+        "y": 2144.2001296058297,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "6c6c8390.edb91c"
+            ]
+        ]
+    },
+    {
+        "id": "bd9032fd.3c50f",
+        "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 calling ' + $tmp.restapiUrl`\" />\n",
+        "comments": "",
+        "x": 1320.760482788086,
+        "y": 2268.5930428504944,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "9a0faf20.2fca7",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 458.00390625,
+        "y": 2174.003906726837,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "c8936a70.9f1118",
+                "55f19580.60d50c",
+                "664842f0.f5459c",
+                "39b12b85.00f734"
+            ]
+        ]
+    },
+    {
+        "id": "756c6c69.207644",
+        "type": "set",
+        "name": "set localId",
+        "xml": "<set>\n<parameter name='localId' value='`$restApiResult.output.normal-service.name[0].value`' />",
+        "comments": "",
+        "x": 951.7539520263672,
+        "y": 2406.0039315223694,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "6c6c8390.edb91c",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 838.75390625,
+        "y": 2333.003906726837,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "756c6c69.207644",
+                "adb3e76.6b84418"
+            ]
+        ]
+    },
+    {
+        "id": "adb3e76.6b84418",
+        "type": "execute",
+        "name": "execute RestApiCallNode delete wan-connection",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sotn_delete_zte_template.json' `\" />\n<parameter name=\"restapiUrl\" value=\"http://10.80.80.21:8443/restconf/operations/ZTE-API-ConnectivityService:delete-connectivity-service\" />\n<parameter name=\"restapiUser\" value=\"admin\" />\n<parameter name=\"restapiPassword\" value=\"admin\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"restApiResult\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1079.75390625,
+        "y": 2479.0039010047913,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "4a8e2d71.5792f4",
+                "3378e2f0.491d0e",
+                "baeb07bf.b350f8"
+            ]
+        ]
+    },
+    {
+        "id": "baeb07bf.b350f8",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1388.75390625,
+        "y": 2510.003906726837,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "bd9032fd.3c50f"
+            ]
+        ]
+    },
+    {
+        "id": "3378e2f0.491d0e",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1379.7539558410645,
+        "y": 2478.5039324760437,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "bd9032fd.3c50f"
+            ]
+        ]
+    },
+    {
+        "id": "4a8e2d71.5792f4",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1383.503993988037,
+        "y": 2448.861037351191,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "d69d9f76.9f753"
+            ]
+        ]
+    },
+    {
+        "id": "d69d9f76.9f753",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1532.7539710998535,
+        "y": 2448.0039010047913,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d4dcaf7.912a95",
+        "type": "set",
+        "name": "set sotnServiceId",
+        "xml": "<set>\n<parameter name='sotnServiceId' value='73aa6033-a43e-3162-9bc9-085edc2b5a10' />",
+        "comments": "",
+        "x": 1084.7539596557617,
+        "y": 2102.0040740966797,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "55f19580.60d50c",
+        "type": "for",
+        "name": "for pidx..network-input-parameters[]",
+        "xml": "<for index='paidx' start='0' end='`$tmp.network.network-data.network-request-input.network-input-parameters.param_length`' >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 746.0039367675781,
+        "y": 2045.0039901733398,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "94cd2d2f.d6b96"
+            ]
+        ]
+    },
+    {
+        "id": "94cd2d2f.d6b96",
+        "type": "switchNode",
+        "name": "switch svc-action",
+        "xml": "<switch test=\"`$tmp.network.network-data.network-request-input.network-input-parameters.param[$paidx].name == 'localServiceId'`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1018.0039367675781,
+        "y": 2052.00399017334,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "505d1c65.f95bd4"
+            ]
+        ]
+    },
+    {
+        "id": "505d1c65.f95bd4",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1192.0039367675781,
+        "y": 2057.00399017334,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "4e885a55.b3baf4"
+            ]
+        ]
+    },
+    {
+        "id": "4e885a55.b3baf4",
+        "type": "set",
+        "name": "set localServiceId",
+        "xml": "<set>\n<parameter name='localServiceId' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$paidx].value`' />\n<parameter name='isLocalIdFound' value='true' />",
+        "comments": "",
+        "x": 1387.0039367675781,
+        "y": 2055.00399017334,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    },
+    {
+        "id": "664842f0.f5459c",
+        "type": "switchNode",
+        "name": "switch isLocalIdFound",
+        "xml": "<switch test=\"`$isLocalIdFound`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 711.2539596557617,
+        "y": 2100.0040130615234,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "64a4311f.473ee"
+            ]
+        ]
+    },
+    {
+        "id": "64a4311f.473ee",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 906.2539215087891,
+        "y": 2100.0040130615234,
+        "z": "add5ea55.8506d8",
+        "wires": [
+            [
+                "d4dcaf7.912a95"
+            ]
+        ]
+    },
+    {
+        "id": "39b12b85.00f734",
+        "type": "set",
+        "name": "set isLocalIdFound",
+        "xml": "<set>\n<parameter name='isLocalIdFound' value='false' />",
+        "comments": "",
+        "x": 688.25390625,
+        "y": 1997.00390625,
+        "z": "add5ea55.8506d8",
+        "wires": []
+    }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-delete.json
new file mode 100644
index 0000000..4430f5e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-delete.json
@@ -0,0 +1,286 @@
+[{
+	"id": "c81f4d78.b1e6c",
+	"type": "dgstart",
+	"name": "DGSTART",
+	"outputs": 1,
+	"x": 100.01040649414062,
+	"y": 75.99999976158142,
+	"z": "b1682cba.152",
+	"wires": [
+		["64b261af.cf184"]
+	]
+}, {
+	"id": "64b261af.cf184",
+	"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": 312.0104103088379,
+	"y": 148.00001692771912,
+	"z": "b1682cba.152",
+	"wires": [
+		["c6b54419.3039a8"]
+	]
+}, {
+	"id": "c6b54419.3039a8",
+	"type": "method",
+	"name": "wan-connection-topology-operation-delete",
+	"xml": "<method rpc='wan-connection-topology-operation-delete' mode='sync'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 300.0105285644531,
+	"y": 235.99999976158142,
+	"z": "b1682cba.152",
+	"wires": [
+		["f3a69c11.4cac9"]
+	]
+}, {
+	"id": "140a99be.e1cda6",
+	"type": "execute",
+	"name": "contains FC",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"FC\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 467.04176330566406,
+	"y": 511.031311750412,
+	"z": "b1682cba.152",
+	"wires": [
+		["df506b8a.806268", "5d821249.e9d6cc"]
+	]
+}, {
+	"id": "54dc8604.f2ccb8",
+	"type": "execute",
+	"name": "contains FD",
+	"xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >\n    <parameter name=\"source\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name`\"/>\n    <parameter name=\"target\" value=\"FD\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 465.04168701171875,
+	"y": 589.0313127040863,
+	"z": "b1682cba.152",
+	"wires": [
+		["1ab6bc40.bffaf4", "7db0c17f.b059"]
+	]
+}, {
+	"id": "df506b8a.806268",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 648.0417709350586,
+	"y": 513.0313451290131,
+	"z": "b1682cba.152",
+	"wires": [
+		["44c3101c.7b387"]
+	]
+}, {
+	"id": "1ab6bc40.bffaf4",
+	"type": "outcomeTrue",
+	"name": "true",
+	"xml": "<outcome value='true'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 660.0417709350586,
+	"y": 591.0313451290131,
+	"z": "b1682cba.152",
+	"wires": [
+		["44c3101c.7b387"]
+	]
+}, {
+	"id": "5d821249.e9d6cc",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 256.0416946411133,
+	"y": 592.0312840938568,
+	"z": "b1682cba.152",
+	"wires": [
+		["54dc8604.f2ccb8"]
+	]
+}, {
+	"id": "7f76e93c.a850f8",
+	"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": 491.010498046875,
+	"y": 356.00001883506775,
+	"z": "b1682cba.152",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "f3a69c11.4cac9",
+	"type": "block",
+	"name": "block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"outputs": 1,
+	"x": 206.0104217529297,
+	"y": 335.99999594688416,
+	"z": "b1682cba.152",
+	"wires": [
+		["7f76e93c.a850f8", "99bcb143.6aec8", "30b4304f.e646c", "140a99be.e1cda6"]
+	]
+}, {
+	"id": "99bcb143.6aec8",
+	"type": "switchNode",
+	"name": "switch network-id",
+	"xml": "<switch test='`$network-topology-operation-input.network-information.network-id`'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 491.0104293823242,
+	"y": 294.0000092983246,
+	"z": "b1682cba.152",
+	"wires": [
+		["57d76327.9c63cc", "d50b31e0.e314e"]
+	]
+}, {
+	"id": "57d76327.9c63cc",
+	"type": "outcome",
+	"name": "NULL",
+	"xml": "<outcome value=''>",
+	"comments": "",
+	"outputs": 1,
+	"x": 740.0105056762695,
+	"y": 233.00000929832458,
+	"z": "b1682cba.152",
+	"wires": [
+		["54153e4c.ec78c"]
+	]
+}, {
+	"id": "54153e4c.ec78c",
+	"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 generation allotted resource ID\" />\n",
+	"comments": "",
+	"x": 1010.0105209350586,
+	"y": 234.99999809265137,
+	"z": "b1682cba.152",
+	"wires": []
+}, {
+	"id": "d50b31e0.e314e",
+	"type": "other",
+	"name": "other",
+	"xml": "<outcome value='Other'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 737.5104026794434,
+	"y": 281.0000035762787,
+	"z": "b1682cba.152",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "30b4304f.e646c",
+	"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": 192.01040649414062,
+	"y": 943.0000705718994,
+	"z": "b1682cba.152",
+	"wires": []
+}, {
+	"id": "65a3a6ee.c50208",
+	"type": "block",
+	"name": "block",
+	"xml": "<block>\n",
+	"atomic": "false",
+	"comments": "",
+	"outputs": 1,
+	"x": 258.01040267944336,
+	"y": 735.0001106262207,
+	"z": "b1682cba.152",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "7db0c17f.b059",
+	"type": "outcomeTrue",
+	"name": "false",
+	"xml": "<outcome value='false'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 261.04176330566406,
+	"y": 675.0314900875092,
+	"z": "b1682cba.152",
+	"wires": [
+		["65a3a6ee.c50208"]
+	]
+}, {
+	"id": "44c3101c.7b387",
+	"type": "block",
+	"name": "block : atomic",
+	"xml": "<block atomic=\"true\">",
+	"atomic": "true",
+	"outputs": 1,
+	"x": 843.010383605957,
+	"y": 542.1214942932129,
+	"z": "b1682cba.152",
+	"wires": [
+		["81240f98.0bd24", "51b098fe.5ee238", "e14455de.b9dcd8", "5e6ceda3.d49424", "629880b9.6f91a"]
+	]
+}, {
+	"id": "81240f98.0bd24",
+	"type": "delete",
+	"name": "delete wan connection in AAI",
+	"xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='connectivity' \n        key='connectivity.connectivity-id = $network-topology-operation-input.network-information.network-id'>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1139.0104446411133,
+	"y": 492.1214962005615,
+	"z": "b1682cba.152",
+	"wires": [
+		[]
+	]
+}, {
+	"id": "51b098fe.5ee238",
+	"type": "set",
+	"name": "set new network length",
+	"xml": "<set>\n\t<parameter name=\"service-data.networks.network_length\" value=\"`$service-data.networks.network_length - 1`\"/>\n\n\t\n",
+	"comments": "",
+	"x": 1116.4549293518066,
+	"y": 556.0104026794434,
+	"z": "b1682cba.152",
+	"wires": []
+}, {
+	"id": "e14455de.b9dcd8",
+	"type": "set",
+	"name": "Remove networks from ServiceData",
+	"xml": "<set>\n\t<parameter name=\"service-data.networks.network[$tmp.nidx].\" value=\"\"/>\n\n",
+	"comments": "",
+	"x": 1147.0791816711426,
+	"y": 607.9783487319946,
+	"z": "b1682cba.152",
+	"wires": []
+}, {
+	"id": "5e6ceda3.d49424",
+	"type": "set",
+	"name": "set networkId and network-object-path",
+	"xml": "<set>\n<parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $network-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'` \" />",
+	"comments": "",
+	"x": 1157.8222579956055,
+	"y": 678.5394926071167,
+	"z": "b1682cba.152",
+	"wires": []
+}, {
+	"id": "629880b9.6f91a",
+	"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=\"wan-connection-topology-operation-delete\"/>\n<parameter name=\"field3\" value=\"`$network-topology-operation-input.network-information.onap-model-information.model-name + ' delete'`\"/>\n",
+	"comments": "",
+	"outputs": 1,
+	"x": 1075.0103759765625,
+	"y": 423.34375,
+	"z": "b1682cba.152",
+	"wires": [
+		[]
+	]
+}]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-activate.json
new file mode 100644
index 0000000..1f43d75
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-activate.json
@@ -0,0 +1,634 @@
+[
+  {
+    "id": "206c85aa.5a072a",
+    "type": "comment",
+    "name": "sdwan-vnf-topology-operation-device-activate",
+    "info": "",
+    "comments": "",
+    "x": 508.3447952270508,
+    "y": 68,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "ca427018.80bcb",
+    "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": 188.28570556640625,
+    "y": 139.0002670288086,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "2fa01ba0.438244"
+      ]
+    ]
+  },
+  {
+    "id": "d277668e.e654a8",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 109,
+    "y": 76.76215744018555,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "ca427018.80bcb"
+      ]
+    ]
+  },
+  {
+    "id": "29e19c37.979fb4",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 183.6666717529297,
+    "y": 418.42884254455566,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "d0145adc.c61398",
+        "8a8e6e5a.af8ac",
+        "5365293b.242938",
+        "2b32a3df.95a32c",
+        "7f49e88e.6ac0a8",
+        "8f8a4ade.fb21d8",
+        "9162baea.a58618",
+        "96cec913.036c98",
+        "f1cfd3b2.a98b6",
+        "7bfd6f06.aec7d",
+        "a82fd005.9ab21",
+        "752aae5e.411ae",
+        "feaf1629.1e79e8",
+        "bd5ee22a.cd67b"
+      ]
+    ]
+  },
+  {
+    "id": "8a8e6e5a.af8ac",
+    "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": 589.0477142333984,
+    "y": 1021.6670913696289,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "d0145adc.c61398",
+    "type": "set",
+    "name": "set vnf-level-oper-status to Active",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
+    "comments": "",
+    "x": 670.527774810791,
+    "y": 829.0042400360107,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "7f49e88e.6ac0a8",
+    "type": "set",
+    "name": "copy input data to service data",
+    "xml": "<set>\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />\n",
+    "comments": "",
+    "x": 648.3809661865234,
+    "y": 885.000415802002,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "7ac7ee71.334c",
+    "type": "comment",
+    "name": "make sure this VNF doesn't exist already",
+    "info": "",
+    "comments": "",
+    "x": 1383.7143249511719,
+    "y": 661.9527359008789,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "7bfd6f06.aec7d",
+    "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 = $vnf-topology-operation-input.vnf-information.vnf-id' >\n<parameter name='device-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<!--parameter name='device-id' value='`$deviceResp.success[0].id`' /-->\n<parameter name='operational-status' value='Active' />",
+    "comments": "",
+    "outputs": 1,
+    "x": 672.7144622802734,
+    "y": 934.8894157409668,
+    "z": "51909408.51161c",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "2fa01ba0.438244",
+    "type": "method",
+    "name": "method sdwan-vnf-topology-operation-device-activate",
+    "xml": "<method rpc='sdwan-vnf-topology-operation-device-activate' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 200,
+    "y": 233.3484992980957,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "29e19c37.979fb4"
+      ]
+    ]
+  },
+  {
+    "id": "5365293b.242938",
+    "type": "set",
+    "name": "set vnfId and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",
+    "comments": "",
+    "x": 651.7144165039062,
+    "y": 777.9200525283813,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "feaf1629.1e79e8",
+    "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": 724.3017807006836,
+    "y": 666.1265420913696,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "1fffde57.79b802",
+        "1d6faab2.67fba5"
+      ]
+    ]
+  },
+  {
+    "id": "752aae5e.411ae",
+    "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": 675.4445495605469,
+    "y": 516.1263904571533,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "32c81884.3acf08",
+        "5b1f77c1.6546b8"
+      ]
+    ]
+  },
+  {
+    "id": "32c81884.3acf08",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 907.4445495605469,
+    "y": 496.1263904571533,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "8863e5c0.8fc5a8"
+      ]
+    ]
+  },
+  {
+    "id": "5b1f77c1.6546b8",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 899.6945495605469,
+    "y": 537.7692737579346,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "1b01e427.5d582c"
+      ]
+    ]
+  },
+  {
+    "id": "8863e5c0.8fc5a8",
+    "type": "set",
+    "name": "set token-id",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+    "comments": "",
+    "x": 1044.4445495605469,
+    "y": 496.1263904571533,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "1b01e427.5d582c",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1025.7780456542969,
+    "y": 538.0153064727783,
+    "z": "51909408.51161c",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "b65e0d53.3b7ed",
+    "type": "comment",
+    "name": "Do Nothing",
+    "info": "",
+    "comments": "",
+    "x": 1287.3335914611816,
+    "y": 338.9041233062744,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "aa15cb9e.3cdaa8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1150.968246459961,
+    "y": 636.0153303146362,
+    "z": "51909408.51161c",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "12eca3bc.6e077c",
+    "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": 1152.412826538086,
+    "y": 686.5708627700806,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "1d6faab2.67fba5",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 999.412670135498,
+    "y": 689.5708169937134,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "12eca3bc.6e077c"
+      ]
+    ]
+  },
+  {
+    "id": "1fffde57.79b802",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 998.8571853637695,
+    "y": 633.2375288009644,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "aa15cb9e.3cdaa8"
+      ]
+    ]
+  },
+  {
+    "id": "8f8a4ade.fb21d8",
+    "type": "set",
+    "name": "set deviceId to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value=\"deviceId\" />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$deviceResp.success[0].id`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\n",
+    "comments": "",
+    "x": 657.7145690917969,
+    "y": 729.9202995300293,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "a82fd005.9ab21",
+    "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": 670.0002136230469,
+    "y": 420.34861183166504,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "342b0391.a4834c",
+        "7a108269.f3476c",
+        "87289215.d0cea"
+      ]
+    ]
+  },
+  {
+    "id": "342b0391.a4834c",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 911.0002708435059,
+    "y": 345.3485860824585,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "21df5526.b03a8a"
+      ]
+    ]
+  },
+  {
+    "id": "21df5526.b03a8a",
+    "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": 1087.5003128051758,
+    "y": 336.34857511520386,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "7a108269.f3476c",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 902.4911079406738,
+    "y": 393.92263412475586,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "e9fd26db.c0e278"
+      ]
+    ]
+  },
+  {
+    "id": "e9fd26db.c0e278",
+    "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": 1076.0625190734863,
+    "y": 382.20837020874023,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "87289215.d0cea",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 894.8241157531738,
+    "y": 435.2559471130371,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "d7092d64.71989"
+      ]
+    ]
+  },
+  {
+    "id": "d7092d64.71989",
+    "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": 1082.5966720581055,
+    "y": 430.69513988494873,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "2b32a3df.95a32c",
+    "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": 615.0000152587891,
+    "y": 298.0151786804199,
+    "z": "51909408.51161c",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "9162baea.a58618",
+    "type": "for",
+    "name": "for vidx..service-data.vnfs.vnf_length[]",
+    "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 703.0313034057617,
+    "y": 184.0312786102295,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "b4173a9a.c4a2c8"
+      ]
+    ]
+  },
+  {
+    "id": "b4173a9a.c4a2c8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 951.3808975219727,
+    "y": 184.57134628295898,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "8ed61ccb.fe1d2"
+      ]
+    ]
+  },
+  {
+    "id": "8ed61ccb.fe1d2",
+    "type": "switchNode",
+    "name": "switch vnfid found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1105.4604949951172,
+    "y": 184.28142833709717,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "25dffe3f.86e402"
+      ]
+    ]
+  },
+  {
+    "id": "94dc5d4a.a00f9",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1399.058006286621,
+    "y": 185.5817413330078,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "fa685102.6e48e",
+        "a75f325a.531e1",
+        "1c8ecc84.ad1ff3"
+      ]
+    ]
+  },
+  {
+    "id": "25dffe3f.86e402",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1260.4124870300293,
+    "y": 185.1741075515747,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "94dc5d4a.a00f9"
+      ]
+    ]
+  },
+  {
+    "id": "a75f325a.531e1",
+    "type": "set",
+    "name": "set vnf-request-input.",
+    "xml": "<set>\n<parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\n\n",
+    "comments": "",
+    "x": 1640.3908615112305,
+    "y": 141.58180141448975,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "fa685102.6e48e",
+    "type": "set",
+    "name": "set tmp.vidx and ctx.vnf-data",
+    "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",
+    "comments": "",
+    "x": 1667.9445724487305,
+    "y": 94.92416572570801,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "1c8ecc84.ad1ff3",
+    "type": "call",
+    "name": "call sdwan-get-device-param",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1645.0313110351562,
+    "y": 204.03127193450928,
+    "z": "51909408.51161c",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "96cec913.036c98",
+    "type": "switchNode",
+    "name": "switch tmp.vidx ",
+    "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 634.0311889648438,
+    "y": 245.03125,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "dd74e5cf.ddfed8"
+      ]
+    ]
+  },
+  {
+    "id": "dd74e5cf.ddfed8",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 781.459831237793,
+    "y": 244.60266017913818,
+    "z": "51909408.51161c",
+    "wires": [
+      [
+        "f70bcb29.83b348"
+      ]
+    ]
+  },
+  {
+    "id": "f70bcb29.83b348",
+    "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": 930.888557434082,
+    "y": 245.74557781219482,
+    "z": "51909408.51161c",
+    "wires": []
+  },
+  {
+    "id": "f1cfd3b2.a98b6",
+    "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": 629.0311889648438,
+    "y": 341.03125,
+    "z": "51909408.51161c",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "bd5ee22a.cd67b",
+    "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": 654.2938385009766,
+    "y": 604.2938222885132,
+    "z": "51909408.51161c",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-create.json
new file mode 100644
index 0000000..36a7cfd
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-create.json
@@ -0,0 +1,641 @@
+[
+  {
+    "id": "fd0440a.ecd51c",
+    "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": 196,
+    "y": 82.23810958862305,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "127bb9c5.150526"
+      ]
+    ]
+  },
+  {
+    "id": "e5b0a995.906238",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 116.71429443359375,
+    "y": 20,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "fd0440a.ecd51c"
+      ]
+    ]
+  },
+  {
+    "id": "23553cdf.889914",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 197.3809585571289,
+    "y": 343.66666984558105,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "bf0f7a26.a11068",
+        "f71d7490.89bd28",
+        "ed1f7a5f.52aa38",
+        "20a30a30.b04286",
+        "1a809147.c1ebef",
+        "53d08385.3ed46c",
+        "d658c8ee.f13848",
+        "8e20e633.b9b588",
+        "61dc4d5e.3ba864",
+        "43e73a53.fc83c4",
+        "ff98826e.6bc6d",
+        "60a78e84.5e55"
+      ]
+    ]
+  },
+  {
+    "id": "f71d7490.89bd28",
+    "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": 578.0479011535645,
+    "y": 965.3337297439575,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "bf0f7a26.a11068",
+    "type": "set",
+    "name": "set vnf-level-oper-status to Created",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
+    "comments": "",
+    "x": 667.5279121398926,
+    "y": 697.6708345413208,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "20a30a30.b04286",
+    "type": "set",
+    "name": "copy input data to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />",
+    "comments": "",
+    "x": 645.381103515625,
+    "y": 753.667010307312,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "ef25e38.ee9742",
+    "type": "save",
+    "name": "save deviceInstance configuration in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n      key='device.device-id = $prop.vnf-id' >\n<parameter name='device-id' value='`$prop.vnf-id`' />\n<parameter name='esn' value='`$prop.device.esn`' />\n<parameter name='device-name' value='`$prop.device.name`' />\n<parameter name='description' value='`$prop.device.description`' />\n<parameter name='vendor' value='`$prop.device.vendor`' />\n<parameter name='class' value='`$prop.device.class`' />\n<parameter name='type' value='`$prop.device.deviceModel`' />\n<parameter name='version' value='`$prop.device.version`' />\n<parameter name='system-ip' value='`$prop.device.systemIp`' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` \" />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1123.7149963378906,
+    "y": 770.5563173294067,
+    "z": "842fbc05.cce04",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "127bb9c5.150526",
+    "type": "method",
+    "name": "method sdwan-vnf-topology-operation-device-create",
+    "xml": "<method rpc='sdwan-vnf-topology-operation-device-create' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 207.71429443359375,
+    "y": 176.58634185791016,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "23553cdf.889914"
+      ]
+    ]
+  },
+  {
+    "id": "ed1f7a5f.52aa38",
+    "type": "set",
+    "name": "set vnfId and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$prop.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` \" />",
+    "comments": "",
+    "x": 648.7145538330078,
+    "y": 646.5866470336914,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "abbdb9a7.a00168",
+    "type": "set",
+    "name": "set deviceId to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-id`' />\n",
+    "comments": "",
+    "x": 654.7147064208984,
+    "y": 598.5868940353394,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "c106be0b.38899",
+    "type": "comment",
+    "name": "AAI resource need to update",
+    "info": "",
+    "comments": "",
+    "x": 969.714599609375,
+    "y": 724.5867567062378,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "63a58c6c.370174",
+    "type": "execute",
+    "name": "execute generate-vnf-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.vnf-id\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1153.7149810791016,
+    "y": 111.58645248413086,
+    "z": "842fbc05.cce04",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "60a78e84.5e55",
+    "type": "save",
+    "name": "save service relationship in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \n      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id \n         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id \n         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"device\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/devices/device/' + $prop.vnf-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"device.device-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.vnf-id`\" />",
+    "comments": "",
+    "outputs": 1,
+    "x": 635.7148551940918,
+    "y": 920.3336315155029,
+    "z": "842fbc05.cce04",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "1a809147.c1ebef",
+    "type": "switchNode",
+    "name": "switch vnf-id",
+    "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 617.7144012451172,
+    "y": 215.23787117004395,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "ecde6b48.bbfc48",
+        "1019aeef.5808d1"
+      ]
+    ]
+  },
+  {
+    "id": "ecde6b48.bbfc48",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 758.7144050598145,
+    "y": 190.2378625869751,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "81003234.70dcc"
+      ]
+    ]
+  },
+  {
+    "id": "81003234.70dcc",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 906.7145080566406,
+    "y": 126.23785495758057,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "63a58c6c.370174",
+        "69aa8a5d.0ac9a4",
+        "6eb09a3f.09bc74"
+      ]
+    ]
+  },
+  {
+    "id": "1019aeef.5808d1",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 755.2455825805664,
+    "y": 250.26910018920898,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "b2303be.abcc1c8"
+      ]
+    ]
+  },
+  {
+    "id": "fe4dccde.57bcf",
+    "type": "set",
+    "name": "set prop.vnf-id",
+    "xml": "<set>\n<parameter name='prop.vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n",
+    "comments": "",
+    "x": 1094.246337890625,
+    "y": 329.2694733142853,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "b2303be.abcc1c8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 906.2460021972656,
+    "y": 282.2692222595215,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "fe4dccde.57bcf",
+        "6eb09a3f.09bc74",
+        "d5a722bf.9d266"
+      ]
+    ]
+  },
+  {
+    "id": "53d08385.3ed46c",
+    "type": "set",
+    "name": "set prop.sdncCreate=false",
+    "xml": "<set>\n<parameter name='prop.sdncCreate' value='false' />\n",
+    "comments": "",
+    "x": 692.2456512451172,
+    "y": 106.26909446716309,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "d658c8ee.f13848",
+    "type": "switchNode",
+    "name": "switch prop.sdncCreate",
+    "xml": "<switch test='`$prop.sdncCreate`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 614.7459869384766,
+    "y": 800.2695140838623,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "be0155ce.278c18",
+        "f63d8c0c.a2846"
+      ]
+    ]
+  },
+  {
+    "id": "be0155ce.278c18",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 860.7457580566406,
+    "y": 770.769250869751,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "ef25e38.ee9742"
+      ]
+    ]
+  },
+  {
+    "id": "f63d8c0c.a2846",
+    "type": "outcomeTrue",
+    "name": "false",
+    "xml": "<outcome value='false'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 862.2457427978516,
+    "y": 825.7692651748657,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "2097a67.fbc2c5a"
+      ]
+    ]
+  },
+  {
+    "id": "69aa8a5d.0ac9a4",
+    "type": "set",
+    "name": "set prop.updateAAIsdncCreate",
+    "xml": "<set>\n<parameter name='prop.sdncCreate' value='true' />\n",
+    "comments": "",
+    "x": 1171.2460708618164,
+    "y": 71.26917839050293,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "8e20e633.b9b588",
+    "type": "for",
+    "name": "for loop idx - VNF input parameters",
+    "xml": "<for index=\"idx\" start=\"0\" end=\"`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 680.2457275390625,
+    "y": 400.2691287994385,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "6a3b248.f431cdc"
+      ]
+    ]
+  },
+  {
+    "id": "6a3b248.f431cdc",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 895.0240707397461,
+    "y": 397.8247127532959,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "c1af467b.da6408",
+        "b9f2cae.04bc638"
+      ]
+    ]
+  },
+  {
+    "id": "b9f2cae.04bc638",
+    "type": "set",
+    "name": "set parameterName",
+    "xml": "<set>\n<parameter name=\"`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",
+    "comments": "",
+    "x": 1060.7247009277344,
+    "y": 412.5729675292969,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "c1af467b.da6408",
+    "type": "execute",
+    "name": "execute split parameterName",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vnf-topology-operation-input.vnf-request-input.vnf-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": 1091.2802734375,
+    "y": 375.5728511810303,
+    "z": "842fbc05.cce04",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "61dc4d5e.3ba864",
+    "type": "set",
+    "name": "set vnf-request-input.",
+    "xml": "<set>\n<parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />\n",
+    "comments": "",
+    "x": 642.2453460693359,
+    "y": 474.593843460083,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "43e73a53.fc83c4",
+    "type": "call",
+    "name": "call sdwan-get-device-param",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 667.2457275390625,
+    "y": 506.59400367736816,
+    "z": "842fbc05.cce04",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "98f6587a.b563b8",
+    "type": "comment",
+    "name": "if SO provide vnf-id use that else create new",
+    "info": "",
+    "comments": "",
+    "x": 709.2455749511719,
+    "y": 160.26910400390625,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "6eb09a3f.09bc74",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1114.746078491211,
+    "y": 208.26919746398926,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "10311b8f.214a74",
+        "d0785948.131e88"
+      ]
+    ]
+  },
+  {
+    "id": "10311b8f.214a74",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1358.7459678649902,
+    "y": 165.26919078826904,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "e8ee65b6.e0bb98",
+        "8e4d05a7.18d778"
+      ]
+    ]
+  },
+  {
+    "id": "e8ee65b6.e0bb98",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1572.460350036621,
+    "y": 148.41196155548096,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "2bb1c8ad.9ae4c8"
+      ]
+    ]
+  },
+  {
+    "id": "2bb1c8ad.9ae4c8",
+    "type": "set",
+    "name": "set vnf-index=0",
+    "xml": "<set>\n<parameter name='vnf-index' value='0' />\n",
+    "comments": "",
+    "x": 1720.7459983825684,
+    "y": 145.412015914917,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "8e4d05a7.18d778",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1575.8888473510742,
+    "y": 193.69775295257568,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "20358c1.fc83f74"
+      ]
+    ]
+  },
+  {
+    "id": "20358c1.fc83f74",
+    "type": "set",
+    "name": "set vnf-index = vnf_length",
+    "xml": "<set>\n<parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\n",
+    "comments": "",
+    "x": 1759.7465896606445,
+    "y": 193.98352146148682,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "d0785948.131e88",
+    "type": "set",
+    "name": "set new vnf_length",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\n",
+    "comments": "",
+    "x": 1305.746109008789,
+    "y": 213.26918148994446,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "2097a67.fbc2c5a",
+    "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 = $prop.vnf-id' >\n<parameter name='device-id' value='`$prop.vnf-id`' />\n<parameter name='esn' value='`$prop.device.esn`' />\n<parameter name='device-name' value='`$prop.device.name`' />\n<parameter name='description' value='`$prop.device.description`' />\n<parameter name='vendor' value='`$prop.device.vendor`' />\n<parameter name='class' value='`$prop.device.class`' />\n<parameter name='type' value='`$prop.device.deviceModel`' />\n<parameter name='version' value='`$prop.device.version`' />\n<parameter name='system-ip' value='`$prop.device.systemIp`' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` \" />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1115.7455749511719,
+    "y": 828.269118309021,
+    "z": "842fbc05.cce04",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "d5a722bf.9d266",
+    "type": "for",
+    "name": "for each existing VNF",
+    "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1121.7456130981445,
+    "y": 280.2691307067871,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "aceae556.187d88"
+      ]
+    ]
+  },
+  {
+    "id": "7b2ea8f.f293e58",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1658.3174228668213,
+    "y": 328.4120855331421,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "6db207f2.3f0a88"
+      ]
+    ]
+  },
+  {
+    "id": "6db207f2.3f0a88",
+    "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 id ' + $service-data.vnfs.vnf[$idx].vnf-id\n      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`\" />\n",
+    "comments": "",
+    "x": 1796.888780593872,
+    "y": 328.4120464324951,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "f8ea0727.32b188",
+    "type": "comment",
+    "name": "make sure this vnf-id doesn't exist already",
+    "info": "",
+    "comments": "",
+    "x": 1752.1738967895508,
+    "y": 457.41196870803833,
+    "z": "842fbc05.cce04",
+    "wires": []
+  },
+  {
+    "id": "aceae556.187d88",
+    "type": "switchNode",
+    "name": "switch vnf-information.vnf-id == service-data.vnfs.vnf[].vnf-id",
+    "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1460.745620727539,
+    "y": 281.26913356781006,
+    "z": "842fbc05.cce04",
+    "wires": [
+      [
+        "7b2ea8f.f293e58"
+      ]
+    ]
+  },
+  {
+    "id": "ff98826e.6bc6d",
+    "type": "set",
+    "name": "set sdncCreate to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value=\"sdncCreate\" />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.sdncCreate`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\n",
+    "comments": "",
+    "x": 628.745662689209,
+    "y": 861.269121170044,
+    "z": "842fbc05.cce04",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-deactivate.json
new file mode 100644
index 0000000..116a08f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-deactivate.json
@@ -0,0 +1,642 @@
+[
+  {
+    "id": "6b385e45.7a3f5",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 139.57137298583984,
+    "y": 40,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "1dde2ff0.4c745"
+      ]
+    ]
+  },
+  {
+    "id": "1dde2ff0.4c745",
+    "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": 214.8570785522461,
+    "y": 80.23811149597168,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "ea4d719e.008e2"
+      ]
+    ]
+  },
+  {
+    "id": "ea4d719e.008e2",
+    "type": "method",
+    "name": "method sdwan-vnf-topology-operation-device-deactivate",
+    "xml": "<method rpc='sdwan-vnf-topology-operation-device-deactivate' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 208,
+    "y": 119.9999942779541,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "8022f97f.a9e9c8"
+      ]
+    ]
+  },
+  {
+    "id": "8022f97f.a9e9c8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 232.73810195922852,
+    "y": 310.69354248046875,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "fe2f71f.5a0549",
+        "90ac7c05.1df59",
+        "62c2b68c.cb8668",
+        "2f2e6d66.de0b42",
+        "499b8fd4.89df6",
+        "60947bb5.977bb4",
+        "e2cd50c2.c2f0d",
+        "b764369b.fbe158",
+        "5d47732a.38d94c",
+        "58377091.27285",
+        "dac79818.50d828",
+        "744539f4.efb448",
+        "560d559f.36474c",
+        "d89f363a.ca5158"
+      ]
+    ]
+  },
+  {
+    "id": "fe2f71f.5a0549",
+    "type": "set",
+    "name": "set vnf in service-data",
+    "xml": "<set>\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />",
+    "comments": "",
+    "x": 488.57144927978516,
+    "y": 733.0002317428589,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "90ac7c05.1df59",
+    "type": "set",
+    "name": "set vnfId and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",
+    "comments": "",
+    "x": 510.12699127197266,
+    "y": 775.2224426269531,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "2f2e6d66.de0b42",
+    "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": 468.90482330322266,
+    "y": 937.7777910232544,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "560d559f.36474c",
+    "type": "update",
+    "name": "update SDWAN DeviceInstance status to AAI",
+    "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n      key='device.device-id = $vnf-topology-operation-input.vnf-information.vnf-id' >\n<parameter name='device-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='operational-status' value='PendingDelete' />",
+    "comments": "",
+    "outputs": 1,
+    "x": 559.2344131469727,
+    "y": 878.1478223800659,
+    "z": "757466fd.415308",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "62c2b68c.cb8668",
+    "type": "set",
+    "name": "set vnf-level-oper-status to PendingDelete",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
+    "comments": "",
+    "x": 548.5714797973633,
+    "y": 832.0001993179321,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "58377091.27285",
+    "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": 515.1269454956055,
+    "y": 359.99996280670166,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "8b902f30.1edc8",
+        "b3b7e1bd.bb3c3",
+        "92ad4991.dcb358"
+      ]
+    ]
+  },
+  {
+    "id": "8b902f30.1edc8",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 742.126953125,
+    "y": 287.99996185302734,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "59a1f255.7388fc"
+      ]
+    ]
+  },
+  {
+    "id": "59a1f255.7388fc",
+    "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": 940.627067565918,
+    "y": 278.999960899353,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "b3b7e1bd.bb3c3",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 744.6178817749023,
+    "y": 320.573974609375,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "ed08291.4824fd8"
+      ]
+    ]
+  },
+  {
+    "id": "ed08291.4824fd8",
+    "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": 921.1893501281738,
+    "y": 317.85972690582275,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "92ad4991.dcb358",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 736.9508895874023,
+    "y": 361.90728759765625,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "67ab99c4.008378"
+      ]
+    ]
+  },
+  {
+    "id": "67ab99c4.008378",
+    "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": 924.723445892334,
+    "y": 357.34648036956787,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "dac79818.50d828",
+    "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": 538.0155982971191,
+    "y": 426.1111717224121,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "4b92ddae.b11014",
+        "be0fd00e.58fcb"
+      ]
+    ]
+  },
+  {
+    "id": "4b92ddae.b11014",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 773.0155982971191,
+    "y": 404.1111717224121,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "3d2c2dc.5e83ed2"
+      ]
+    ]
+  },
+  {
+    "id": "be0fd00e.58fcb",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 765.2655982971191,
+    "y": 457.75405502319336,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "4aad0852.c2e288"
+      ]
+    ]
+  },
+  {
+    "id": "3d2c2dc.5e83ed2",
+    "type": "set",
+    "name": "set token-id",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+    "comments": "",
+    "x": 927.0155982971191,
+    "y": 405.1111717224121,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "6cd389a6.9d2038",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 874.1268157958984,
+    "y": 641.1112051010132,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "dbb22ce5.43a74"
+      ]
+    ]
+  },
+  {
+    "id": "dbb22ce5.43a74",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1045.2378311157227,
+    "y": 639.8890256881714,
+    "z": "757466fd.415308",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "4aad0852.c2e288",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 913.1266403198242,
+    "y": 454.00000381469727,
+    "z": "757466fd.415308",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "2c8ab183.9108ce",
+    "type": "comment",
+    "name": "Do Nothing",
+    "info": "",
+    "comments": "",
+    "x": 1048.6822141011553,
+    "y": 452.88887956407336,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "532a6f26.ee36",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 870.6823692321777,
+    "y": 694.4444913864136,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "e576dd47.e4d2d"
+      ]
+    ]
+  },
+  {
+    "id": "e576dd47.e4d2d",
+    "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": 1015.6823692321777,
+    "y": 697.4444913864136,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "39a32b24.2df714",
+    "type": "comment",
+    "name": "deviceId need to provide here?",
+    "info": "",
+    "comments": "",
+    "x": 543.9046936035156,
+    "y": 520.0000066757202,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "8d34776a.67e9e8",
+    "type": "comment",
+    "name": "tmp.thirdparty-sdnc-id to be hardcoded here?",
+    "info": "",
+    "comments": "",
+    "x": 563.9047393798828,
+    "y": 279.0000591278076,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "be71552d.8c5378",
+    "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.904655456543,
+    "y": 1682.3333358764648,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "499b8fd4.89df6",
+    "type": "for",
+    "name": "for vidx..service-data.vnfs.vnf_length[]",
+    "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 547.6026229858398,
+    "y": 208.03125,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "fbacdb2a.2187b8"
+      ]
+    ]
+  },
+  {
+    "id": "fbacdb2a.2187b8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 795.9522171020508,
+    "y": 208.5713176727295,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "14a96fbf.04e25"
+      ]
+    ]
+  },
+  {
+    "id": "14a96fbf.04e25",
+    "type": "switchNode",
+    "name": "switch vnfid found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 950.0318145751953,
+    "y": 208.28139972686768,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "f8b23c28.656e4"
+      ]
+    ]
+  },
+  {
+    "id": "decdca7b.a91d08",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1243.6293258666992,
+    "y": 209.58171272277832,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "fd53ee3f.07fb6",
+        "d1d20e74.92e38",
+        "ca9cc0c9.c9a05"
+      ]
+    ]
+  },
+  {
+    "id": "f8b23c28.656e4",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1104.9838066101074,
+    "y": 209.17407894134521,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "decdca7b.a91d08"
+      ]
+    ]
+  },
+  {
+    "id": "d1d20e74.92e38",
+    "type": "set",
+    "name": "set vnf-request-input.",
+    "xml": "<set>\n<parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\n\n",
+    "comments": "",
+    "x": 1484.9621810913086,
+    "y": 165.58177280426025,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "fd53ee3f.07fb6",
+    "type": "set",
+    "name": "set tmp.vidx and ctx.vnf-data",
+    "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",
+    "comments": "",
+    "x": 1512.5158920288086,
+    "y": 118.92413711547852,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "ca9cc0c9.c9a05",
+    "type": "call",
+    "name": "call sdwan-get-device-param",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1489.6026306152344,
+    "y": 228.03124332427979,
+    "z": "757466fd.415308",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "60947bb5.977bb4",
+    "type": "switchNode",
+    "name": "switch tmp.vidx ",
+    "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 464.60262298583984,
+    "y": 250.03125,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "b9a00e35.ec566"
+      ]
+    ]
+  },
+  {
+    "id": "b9a00e35.ec566",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 612.0312652587891,
+    "y": 249.60266017913818,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "32fbaa62.824b86"
+      ]
+    ]
+  },
+  {
+    "id": "32fbaa62.824b86",
+    "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": 761.4599914550781,
+    "y": 250.74557781219482,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "744539f4.efb448",
+    "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": 580.6026992797852,
+    "y": 664.0313568115234,
+    "z": "757466fd.415308",
+    "wires": [
+      [
+        "6cd389a6.9d2038",
+        "532a6f26.ee36"
+      ]
+    ]
+  },
+  {
+    "id": "e2cd50c2.c2f0d",
+    "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": 488.60262298583984,
+    "y": 314.03125,
+    "z": "757466fd.415308",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "b764369b.fbe158",
+    "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": 520.6026458740234,
+    "y": 601.0312871932983,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "5d47732a.38d94c",
+    "type": "set",
+    "name": "set device Id length and deviceId",
+    "xml": "<set>\n<parameter name='prop.devices_length' value='1' />\n\n\n",
+    "comments": "",
+    "x": 524.6026229858398,
+    "y": 559.03125,
+    "z": "757466fd.415308",
+    "wires": []
+  },
+  {
+    "id": "d89f363a.ca5158",
+    "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": 531.00390625,
+    "y": 476.00390625,
+    "z": "757466fd.415308",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-delete.json
new file mode 100644
index 0000000..1a71611
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-delete.json
@@ -0,0 +1,656 @@
+[
+  {
+    "id": "a1df0c8c.e610f",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 652.5634536743164,
+    "y": 312.26116919517517,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "a23f9932.76df28",
+        "eec5abe1.727dc8"
+      ]
+    ]
+  },
+  {
+    "id": "dda3e77b.e1de28",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 114.46875,
+    "y": 76.9999988079071,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "b55d96f3.653dc8"
+      ]
+    ]
+  },
+  {
+    "id": "b55d96f3.653dc8",
+    "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": 189.75445556640625,
+    "y": 117.23811030387878,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "e0c2d3e0.8a2bb"
+      ]
+    ]
+  },
+  {
+    "id": "8ad52b68.cd0138",
+    "type": "comment",
+    "name": "wan port-vnf-topology-operation-delete",
+    "info": "",
+    "comments": "",
+    "x": 563.8136672973633,
+    "y": 150.58639788627625,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "c136d1d8.af3e6",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 191.13541412353516,
+    "y": 378.6666705608368,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "a72c9897.585208",
+        "d19a177f.7de988",
+        "30536e3.568f592",
+        "a1df0c8c.e610f",
+        "9db50f7b.a0897",
+        "4dffba9e.fd0434",
+        "28632f25.b7972",
+        "af6ad43e.5c24e8",
+        "743e7718.e7f968",
+        "4b8bdd76.d28184",
+        "cb6608fc.bd5f68"
+      ]
+    ]
+  },
+  {
+    "id": "a23f9932.76df28",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 917.2857666015625,
+    "y": 294.81679129600525,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "81cc943f.50f958"
+      ]
+    ]
+  },
+  {
+    "id": "81cc943f.50f958",
+    "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": 1098.2856369018555,
+    "y": 289.81666922569275,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "eec5abe1.727dc8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 902.7857666015625,
+    "y": 346.8167541027069,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "679d4612.15d218"
+      ]
+    ]
+  },
+  {
+    "id": "679d4612.15d218",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1074.785472869873,
+    "y": 346.8167521953583,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "862951df.5fe1d",
+        "dc6fa4c3.5ecea8"
+      ]
+    ]
+  },
+  {
+    "id": "dc6fa4c3.5ecea8",
+    "type": "switchNode",
+    "name": "switch tmp.vidx ",
+    "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1249.78564453125,
+    "y": 365.81667399406433,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "1c173742.b90799"
+      ]
+    ]
+  },
+  {
+    "id": "30536e3.568f592",
+    "type": "switchNode",
+    "name": "switch vnf-level-oper-status",
+    "xml": "<switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 622.9524536132812,
+    "y": 386.70563292503357,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "ba7f62e0.c87a8",
+        "246d8ed1.13b9e2"
+      ]
+    ]
+  },
+  {
+    "id": "ba7f62e0.c87a8",
+    "type": "outcome",
+    "name": "outcome PendingDelete",
+    "xml": "<outcome value='PendingDelete'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 913.7857208251953,
+    "y": 390.81675601005554,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "7fe1211e.ac713"
+      ]
+    ]
+  },
+  {
+    "id": "246d8ed1.13b9e2",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 880.7858581542969,
+    "y": 442.8168087005615,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "7d27948.1b45c6c"
+      ]
+    ]
+  },
+  {
+    "id": "7d27948.1b45c6c",
+    "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": 1040.2856254577637,
+    "y": 445.8168077468872,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "9db50f7b.a0897",
+    "type": "switchNode",
+    "name": "switch vnf-id",
+    "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 588.7857704162598,
+    "y": 267.81676268577576,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "2d92055a.30ffda"
+      ]
+    ]
+  },
+  {
+    "id": "2d92055a.30ffda",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 786.7858352661133,
+    "y": 257.81677508354187,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "889ae61d.096b48"
+      ]
+    ]
+  },
+  {
+    "id": "889ae61d.096b48",
+    "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-request-input.vnf-input-parameters.name is a required input\" />\n",
+    "comments": "",
+    "x": 953.2857208251953,
+    "y": 254.81676936149597,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "862951df.5fe1d",
+    "type": "for",
+    "name": "for vidx..service-data.vnfs.vnf[]",
+    "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1310.2856483459473,
+    "y": 301.81667017936707,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "91f5b0d9.94102"
+      ]
+    ]
+  },
+  {
+    "id": "91f5b0d9.94102",
+    "type": "switchNode",
+    "name": "switch vnf-id found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1566.2856674194336,
+    "y": 301.81667017936707,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "8dc7c708.bc5718"
+      ]
+    ]
+  },
+  {
+    "id": "8dc7c708.bc5718",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1742.7857208251953,
+    "y": 304.81667017936707,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "2d4f17e9.19c368"
+      ]
+    ]
+  },
+  {
+    "id": "dd40fac0.73a058",
+    "type": "set",
+    "name": "set tmp.vidx and ctx.vnf-data",
+    "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].vnf-data.`' />\n",
+    "comments": "",
+    "x": 2159.785934448242,
+    "y": 383.8167221546173,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "59a5fc66.f24204",
+    "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": 1555.285659790039,
+    "y": 365.81667399406433,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "1c173742.b90799",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1417.785659790039,
+    "y": 365.81667399406433,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "59a5fc66.f24204"
+      ]
+    ]
+  },
+  {
+    "id": "a72c9897.585208",
+    "type": "set",
+    "name": "set vnfId and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='vnf-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vnf-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'` \" />",
+    "comments": "",
+    "x": 596.8022003173828,
+    "y": 689.3334522247314,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "d19a177f.7de988",
+    "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": 545.9133987426758,
+    "y": 808.8889608383179,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "7fe1211e.ac713",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1111.0921211242676,
+    "y": 401.14191031455994,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "e0c2d3e0.8a2bb",
+    "type": "method",
+    "name": "method sdwan-vnf-topology-operation-device-delete",
+    "xml": "<method rpc='sdwan-vnf-topology-operation-device-delete' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 195,
+    "y": 233.26116919517517,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "c136d1d8.af3e6"
+      ]
+    ]
+  },
+  {
+    "id": "4dffba9e.fd0434",
+    "type": "execute",
+    "name": "execute requiredParameters",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"vnf-topology-operation-input.vnf-information.vnf-id\" value=\"$vnf-topology-operation-input.vnf-information.vnf-id\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 646.2858276367188,
+    "y": 207.81676173210144,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "7385dfef.35179",
+    "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 = $vnf-topology-operation-input.vnf-information.vnf-id'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1073.0003051757812,
+    "y": 744.261435508728,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "3c959d82.f7e672",
+    "type": "call",
+    "name": "call sdwan-get-device-param",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2151.5635147094727,
+    "y": 328.2611758708954,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "5f3e6fd4.e37e8",
+    "type": "set",
+    "name": "set vnf-request-input.",
+    "xml": "<set>\n<parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\n\n",
+    "comments": "",
+    "x": 2146.923065185547,
+    "y": 265.81170535087585,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "94ec2391.e8ee4",
+    "type": "set",
+    "name": "set tmp.vidx and ctx.vnf-data",
+    "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",
+    "comments": "",
+    "x": 2174.476776123047,
+    "y": 219.15406966209412,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "2d4f17e9.19c368",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1912.563331604004,
+    "y": 306.26116919517517,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "dd40fac0.73a058",
+        "3c959d82.f7e672",
+        "5f3e6fd4.e37e8",
+        "94ec2391.e8ee4"
+      ]
+    ]
+  },
+  {
+    "id": "28632f25.b7972",
+    "type": "switchNode",
+    "name": "switch prop.device.sdncCreate",
+    "xml": "<switch test=\"`$prop.device.sdncCreate`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 597.5636672973633,
+    "y": 752.2614345550537,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "d02123b.6bfe7e"
+      ]
+    ]
+  },
+  {
+    "id": "d02123b.6bfe7e",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 804.5635223388672,
+    "y": 749.2612714767456,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "7385dfef.35179"
+      ]
+    ]
+  },
+  {
+    "id": "af6ad43e.5c24e8",
+    "type": "set",
+    "name": "set prop.vnfNewidx",
+    "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",
+    "comments": "",
+    "x": 589.0000381469727,
+    "y": 454.0000276565552,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "743e7718.e7f968",
+    "type": "for",
+    "name": "for lidx..service-data.vnfs.vnf[]",
+    "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 615.9999580383301,
+    "y": 518.0000123977661,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "25a69c7c.cd2204"
+      ]
+    ]
+  },
+  {
+    "id": "25a69c7c.cd2204",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 859.9999389648438,
+    "y": 543.9999718666077,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "2e7532f9.d7b9be"
+      ]
+    ]
+  },
+  {
+    "id": "2e7532f9.d7b9be",
+    "type": "switchNode",
+    "name": "switch vnf-id found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$lidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1051.999885559082,
+    "y": 553.0000162124634,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "fb34ff49.abebe"
+      ]
+    ]
+  },
+  {
+    "id": "4b8bdd76.d28184",
+    "type": "set",
+    "name": "set new vnf length",
+    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",
+    "comments": "",
+    "x": 582.1013412475586,
+    "y": 568.8043041229248,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "fb34ff49.abebe",
+    "type": "outcomeFalse",
+    "name": "false",
+    "xml": "<outcome value='false'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1237.999900817871,
+    "y": 536.9999027252197,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "aa789605.e97ae8"
+      ]
+    ]
+  },
+  {
+    "id": "aa789605.e97ae8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1388.9998245239258,
+    "y": 537.9999389648438,
+    "z": "42785b1.0f2e6a4",
+    "wires": [
+      [
+        "79843b9d.c445e4",
+        "fcd82b9e.5e0628"
+      ]
+    ]
+  },
+  {
+    "id": "79843b9d.c445e4",
+    "type": "set",
+    "name": "set  vnf data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$lidx].vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$lidx].vnf-data.`' />\n",
+    "comments": "",
+    "x": 1553.9999198913574,
+    "y": 513.0000944137573,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "fcd82b9e.5e0628",
+    "type": "set",
+    "name": "set prop.vnfNewidx",
+    "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",
+    "comments": "",
+    "x": 1575.9999198913574,
+    "y": 569.0000581741333,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  },
+  {
+    "id": "cb6608fc.bd5f68",
+    "type": "set",
+    "name": "Remove vnf from ServiceData",
+    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$prop.vnfidxLen].\" value=\"\"/>\n\n",
+    "comments": "",
+    "x": 621,
+    "y": 630,
+    "z": "42785b1.0f2e6a4",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-activate.json
new file mode 100644
index 0000000..12e88e0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-activate.json
@@ -0,0 +1,1623 @@
+[
+  {
+    "id": "d6f12b23.a89678",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 97,
+    "y": 43,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "c865ab04.6af178"
+      ]
+    ]
+  },
+  {
+    "id": "c865ab04.6af178",
+    "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.2856903076172,
+    "y": 92.23810863494873,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "6872e2ee.d6997c"
+      ]
+    ]
+  },
+  {
+    "id": "6872e2ee.d6997c",
+    "type": "method",
+    "name": "method sdwan-vnf-topology-operation-wanport-activate",
+    "xml": "<method rpc='sdwan-vnf-topology-operation-wanport-activate' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 231.42861938476562,
+    "y": 177.00003242492676,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "e8a5051a.b42f68"
+      ]
+    ]
+  },
+  {
+    "id": "e8a5051a.b42f68",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 294.66675567626953,
+    "y": 782.666989326477,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "8f3957a7.d167f8",
+        "4891bde.3538244",
+        "ffc944ec.552788",
+        "d579e51d.f36088",
+        "d09273d4.34d5b",
+        "d8cffa08.c70f58",
+        "272d2403.37c86c",
+        "b6ab2db8.206f6",
+        "e9d254c6.c408a8",
+        "2a8c1af8.df5bf6",
+        "ee4c5d7e.eaa99",
+        "455c32c0.dc954c",
+        "dc56d269.4a63b",
+        "1286c83c.18ccc8",
+        "de66785c.628fe8",
+        "8b82d2e5.53604",
+        "a401887.73e5778",
+        "863a36e8.4a5b78",
+        "2c809153.c42dee",
+        "2c725167.90a60e"
+      ]
+    ]
+  },
+  {
+    "id": "8f3957a7.d167f8",
+    "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": 621.334529876709,
+    "y": 1514.3347115516663,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "2a8c1af8.df5bf6",
+    "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": 709.3341102600098,
+    "y": 777.889497756958,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "e20e98c1.35cd38",
+        "6f78988b.f50df8"
+      ]
+    ]
+  },
+  {
+    "id": "e20e98c1.35cd38",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 958.3341693878174,
+    "y": 791.8897037506104,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "bed4bc3f.f5932"
+      ]
+    ]
+  },
+  {
+    "id": "6f78988b.f50df8",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 958.3341693878174,
+    "y": 753.8895392417908,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "8f1b4806.f6c948"
+      ]
+    ]
+  },
+  {
+    "id": "8f1b4806.f6c948",
+    "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": 1102.3345031738281,
+    "y": 752.8895387649536,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "bed4bc3f.f5932",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1105.3341808319092,
+    "y": 792.8895425796509,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "ee4c5d7e.eaa99",
+    "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": 732.0004615783691,
+    "y": 957.0006031990051,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "72b3b752.f6bbf8",
+        "f75c8efc.5bc38"
+      ]
+    ]
+  },
+  {
+    "id": "dc56d269.4a63b",
+    "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": 705.0005531311035,
+    "y": 1194.000651359558,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "b358fdc8.47501",
+        "e8f33bf4.d74a28"
+      ]
+    ]
+  },
+  {
+    "id": "4891bde.3538244",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 691.0209350585938,
+    "y": 121.02091217041016,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "bba0a2df.9b7fe",
+        "f5df4ed9.043ee",
+        "ad1fb0e6.30f2b"
+      ]
+    ]
+  },
+  {
+    "id": "bba0a2df.9b7fe",
+    "type": "other",
+    "name": "Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 943.0209693908691,
+    "y": 122.02099323272705,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "2105bad4.c6ead6"
+      ]
+    ]
+  },
+  {
+    "id": "2105bad4.c6ead6",
+    "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": 1104.7987174987793,
+    "y": 101.90994024276733,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "f5df4ed9.043ee",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 936.0213775634766,
+    "y": 155.02099704742432,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "e4ac49d6.f30708"
+      ]
+    ]
+  },
+  {
+    "id": "e4ac49d6.f30708",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 959.2908935546875,
+    "y": 253.57559204101562,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "3335cf85.18b",
+        "646eb0ad.764a7",
+        "47895138.250a9",
+        "af3fc11d.805b3",
+        "38c64027.0dbb1"
+      ]
+    ]
+  },
+  {
+    "id": "3335cf85.18b",
+    "type": "for",
+    "name": "for vidx..service-data.vnfs.vnf_length[]",
+    "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1239.3070373535156,
+    "y": 147.44955825805664,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "a85a6118.25ae3"
+      ]
+    ]
+  },
+  {
+    "id": "646eb0ad.764a7",
+    "type": "switchNode",
+    "name": "switch tmp.vidx ",
+    "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1165.608341217041,
+    "y": 293.43279361724854,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "e159f8e9.ab1288"
+      ]
+    ]
+  },
+  {
+    "id": "e159f8e9.ab1288",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1313.0369834899902,
+    "y": 293.0042037963867,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "50911a7c.bcb394"
+      ]
+    ]
+  },
+  {
+    "id": "ce82d617.853858",
+    "type": "switchNode",
+    "name": "switch vnfid found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1612.7362670898438,
+    "y": 146.69972038269043,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "bc627350.7812f"
+      ]
+    ]
+  },
+  {
+    "id": "50911a7c.bcb394",
+    "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": 1462.4657096862793,
+    "y": 294.14712142944336,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "bc627350.7812f",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1767.6882591247559,
+    "y": 147.59239959716797,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "2709419e.cb1d4e"
+      ]
+    ]
+  },
+  {
+    "id": "f97e5dae.1c8e2",
+    "type": "set",
+    "name": "set tmp.vidx and ctx.vnf-data",
+    "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",
+    "comments": "",
+    "x": 2175.220344543457,
+    "y": 57.34245777130127,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "ad1fb0e6.30f2b",
+    "type": "outcome",
+    "name": "0",
+    "xml": "<outcome value='0'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 944.9897193908691,
+    "y": 85.98967933654785,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "2105bad4.c6ead6"
+      ]
+    ]
+  },
+  {
+    "id": "1286c83c.18ccc8",
+    "type": "set",
+    "name": "set device PortId to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='devicePortId' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.wan.devicePortId`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\n\n\n\n\n",
+    "comments": "",
+    "x": 673.9909210205078,
+    "y": 1250.9912090301514,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "57e2b01e.38cf7",
+    "type": "comment",
+    "name": "Get siteId from site resource created for this service",
+    "info": "",
+    "comments": "",
+    "x": 716.9899826049805,
+    "y": 306.32321643829346,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "a85a6118.25ae3",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1458.6566696166992,
+    "y": 146.98963832855225,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "ce82d617.853858"
+      ]
+    ]
+  },
+  {
+    "id": "ffc944ec.552788",
+    "type": "set",
+    "name": "set vnfId and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",
+    "comments": "",
+    "x": 654.5462341308594,
+    "y": 1393.213122844696,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "d579e51d.f36088",
+    "type": "set",
+    "name": "set vnf-level-oper-status to Active",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
+    "comments": "",
+    "x": 671.9906959533691,
+    "y": 1432.9909586906433,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "2c809153.c42dee",
+    "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 = $vnf-topology-operation-input.vnf-information.vnf-id' >\n<parameter name=\"wan-port-config-id\" value=\"`$vnf-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='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 734.653621673584,
+    "y": 1472.1384205818176,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "1e8c7f90.773b9",
+    "type": "set",
+    "name": "set prop.wan.transportNetworkId",
+    "xml": "<set>\n<parameter name='prop.wan.transportNetworkId' value='`$transportNetworksResp.data.transportNetworks[$tidx].id`' />\n",
+    "comments": "",
+    "x": 1486.991542816162,
+    "y": 1033.9906749725342,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "863a36e8.4a5b78",
+    "type": "for",
+    "name": "for loop sidx - Get siteId from servicedata",
+    "xml": "<for index=\"sidx\" start=\"0\" end=\"`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 696.9900054931641,
+    "y": 456.9898729324341,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "72a58ce.4542a74"
+      ]
+    ]
+  },
+  {
+    "id": "4130ca31.df2bc4",
+    "type": "switchNode",
+    "name": "switch siteId",
+    "xml": "<switch test=\"`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'siteId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1127.990333557129,
+    "y": 457.99000358581543,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "8e36b04f.9057d"
+      ]
+    ]
+  },
+  {
+    "id": "8e36b04f.9057d",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1265.9907913208008,
+    "y": 455.98998832702637,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "b3f426b3.22a238"
+      ]
+    ]
+  },
+  {
+    "id": "b3f426b3.22a238",
+    "type": "set",
+    "name": "set prop.wan.siteId",
+    "xml": "<set>\n<parameter name='prop.wan.siteId' value='`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />\n\n\n",
+    "comments": "",
+    "x": 1429.9908256530762,
+    "y": 457.58984184265137,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "455c32c0.dc954c",
+    "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": 655.9903297424316,
+    "y": 1102.3236436843872,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "33727da5.4478c2",
+        "c855dead.051b"
+      ]
+    ]
+  },
+  {
+    "id": "c855dead.051b",
+    "type": "failure",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 856.990348815918,
+    "y": 1080.3236351013184,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "fd37a12c.b50dd"
+      ]
+    ]
+  },
+  {
+    "id": "33727da5.4478c2",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 856.9903526306152,
+    "y": 1121.3236389160156,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "92f41c8f.e77c6"
+      ]
+    ]
+  },
+  {
+    "id": "fd37a12c.b50dd",
+    "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": 1053.9903678894043,
+    "y": 1078.3236351013184,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "92f41c8f.e77c6",
+    "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": 1011.9903602600098,
+    "y": 1118.3236379623413,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "b6ab2db8.206f6",
+    "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": 671.4901733398438,
+    "y": 554.9899291992188,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "a209acee.17706",
+        "69e80906.c6c388",
+        "4690f303.905dfc"
+      ]
+    ]
+  },
+  {
+    "id": "a209acee.17706",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 903.4902572631836,
+    "y": 518.9899520874023,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "fb6bcdc7.90b7a"
+      ]
+    ]
+  },
+  {
+    "id": "69e80906.c6c388",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 905.9811401367188,
+    "y": 554.5639886856079,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "deef5ce.ffc72a"
+      ]
+    ]
+  },
+  {
+    "id": "4690f303.905dfc",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 901.3141479492188,
+    "y": 590.8973474502563,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "340f62b3.ca041e"
+      ]
+    ]
+  },
+  {
+    "id": "340f62b3.ca041e",
+    "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": 1055.0866394042969,
+    "y": 588.3364343643188,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "deef5ce.ffc72a",
+    "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": 1051.5525360107422,
+    "y": 552.8496761322021,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "fb6bcdc7.90b7a",
+    "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": 1063.9903678894043,
+    "y": 516.9898920059204,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "d09273d4.34d5b",
+    "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-wanport-vnf-topology-operation-activate\"/>\n<parameter name=\"field3\" value=\"SDWAN-Activate\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 609.0000953674316,
+    "y": 177.00003004074097,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "d8cffa08.c70f58",
+    "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": 645.3022193908691,
+    "y": 212.00007390975952,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "e9d254c6.c408a8",
+    "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": 686.0003051757812,
+    "y": 642.6669311523438,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "a2457d23.490bb",
+        "5d853693.ee5348"
+      ]
+    ]
+  },
+  {
+    "id": "a2457d23.490bb",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 921.000431060791,
+    "y": 628.666919708252,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "7f12a9ec.69af78"
+      ]
+    ]
+  },
+  {
+    "id": "7f12a9ec.69af78",
+    "type": "set",
+    "name": "set token-id",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+    "comments": "",
+    "x": 1063.0004386901855,
+    "y": 627.6669206619263,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "e009ac00.02e288",
+    "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": 1069.0004386901855,
+    "y": 665.0599088668823,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "5d853693.ee5348",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 920.250431060791,
+    "y": 664.3098268508911,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "e009ac00.02e288"
+      ]
+    ]
+  },
+  {
+    "id": "693677dc.0ea4c8",
+    "type": "switchNode",
+    "name": "switch transportNetworkName same",
+    "xml": "<switch test=\"`$transportNetworksResp.data.transportNetworks[$tidx].name == $prop.wan.transportNetworkName`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1126.0011558532715,
+    "y": 991.6670732498169,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "9e43cce2.daed1"
+      ]
+    ]
+  },
+  {
+    "id": "9e43cce2.daed1",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1339.0006065368652,
+    "y": 991.6669912338257,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "1e8c7f90.773b9"
+      ]
+    ]
+  },
+  {
+    "id": "29298ea3.31ff42",
+    "type": "switchNode",
+    "name": "switch ActivateSDWANDeviceInstance",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\">\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1553.3336029052734,
+    "y": 224.00005722045898,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "fb2628da.07ec78"
+      ]
+    ]
+  },
+  {
+    "id": "fb2628da.07ec78",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1776.3336124420166,
+    "y": 224.00005722045898,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "9e951e79.2dbb"
+      ]
+    ]
+  },
+  {
+    "id": "252b812c.b944de",
+    "type": "set",
+    "name": "set tmp.devicevidx",
+    "xml": "<set>\n<parameter name='tmp.devicevidx' value='`$vidx`' />\n\n",
+    "comments": "",
+    "x": 2741.3329467773438,
+    "y": 655.0000820159912,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "38c64027.0dbb1",
+    "type": "switchNode",
+    "name": "switch tmp.devicevidx",
+    "xml": "<switch test=\"`$tmp.devicevidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1206.3335304260254,
+    "y": 382.0001196861267,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "6a752755.afd058"
+      ]
+    ]
+  },
+  {
+    "id": "6a752755.afd058",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1390.7620964050293,
+    "y": 382.57155656814575,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "12b129f0.1b9176"
+      ]
+    ]
+  },
+  {
+    "id": "12b129f0.1b9176",
+    "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=\"ActivateSDWANDeviceInstance not found in service-data\" />\n",
+    "comments": "",
+    "x": 1531.1908378601074,
+    "y": 382.71443605422974,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "c3c15a47.6f9888",
+    "type": "comment",
+    "name": "Get deviceId from device resource created for this service",
+    "info": "",
+    "comments": "",
+    "x": 2190.6668853759766,
+    "y": 321.33333587646484,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "ebfe3788.f179e8",
+    "type": "for",
+    "name": "for loop didx - Get deviceId from servicedata",
+    "xml": "<for index=\"didx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2176.667095184326,
+    "y": 244.99997997283936,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "f245906e.04acd"
+      ]
+    ]
+  },
+  {
+    "id": "3b8aa7d6.529fd8",
+    "type": "switchNode",
+    "name": "switch name (DeviceName)",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2194.667694091797,
+    "y": 383.0002250671387,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "ce416efb.e644d"
+      ]
+    ]
+  },
+  {
+    "id": "ce416efb.e644d",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2396.668186187744,
+    "y": 377.0002851486206,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "f3d4ecf0.f7b57"
+      ]
+    ]
+  },
+  {
+    "id": "72a58ce.4542a74",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 959.0001983642578,
+    "y": 457.66669750213623,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "4130ca31.df2bc4"
+      ]
+    ]
+  },
+  {
+    "id": "f245906e.04acd",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1968.999984741211,
+    "y": 381.6667261123657,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "3b8aa7d6.529fd8"
+      ]
+    ]
+  },
+  {
+    "id": "ab84c87e.6641a8",
+    "type": "switchNode",
+    "name": "switch deviceId",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].name == 'deviceId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3040.0011444091797,
+    "y": 595.6670227050781,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "dad5dabe.45cb08"
+      ]
+    ]
+  },
+  {
+    "id": "dad5dabe.45cb08",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3193.0015144348145,
+    "y": 596.6670999526978,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "38c10a48.67b606"
+      ]
+    ]
+  },
+  {
+    "id": "38c10a48.67b606",
+    "type": "set",
+    "name": "set prop.wan.deviceId",
+    "xml": "<set>\n<parameter name='prop.wan.deviceId' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />\n",
+    "comments": "",
+    "x": 3362.0021209716797,
+    "y": 595.2671346664429,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "9e951e79.2dbb",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1917.6669311523438,
+    "y": 246.00007724761963,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "ebfe3788.f179e8"
+      ]
+    ]
+  },
+  {
+    "id": "f3d4ecf0.f7b57",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2215.0012283325195,
+    "y": 460.0002546310425,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "794ddeb5.82822"
+      ]
+    ]
+  },
+  {
+    "id": "a5f1b6ac.935608",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2604.0019340515137,
+    "y": 463.00037956237793,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "900215dc.3d2d28"
+      ]
+    ]
+  },
+  {
+    "id": "2709419e.cb1d4e",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1906.3337783813477,
+    "y": 148.00003337860107,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "f97e5dae.1c8e2",
+        "8b284d74.9bbdc",
+        "12ee38df.f58297",
+        "21551932.828fc6"
+      ]
+    ]
+  },
+  {
+    "id": "d5734767.c41348",
+    "type": "set",
+    "name": "set prop.wan.wanPortId",
+    "xml": "<set>\n<parameter name='prop.wan.wanPortId' value='`$wanPortResp.success[0].id`' />\n",
+    "comments": "",
+    "x": 1353.3246459960938,
+    "y": 1194.6573886871338,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "de66785c.628fe8",
+    "type": "set",
+    "name": "set prop.wan.devicePortId",
+    "xml": "<set>\n<parameter name='prop.wan.devicePortId' value='`$portResp.success[0].id`' />\n",
+    "comments": "",
+    "x": 663.9913177490234,
+    "y": 839.9906539916992,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "cf3fd46b.92ea68",
+    "type": "comment",
+    "name": "Create port",
+    "info": "",
+    "comments": "",
+    "x": 611.0000495910645,
+    "y": 744.3335218429565,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "712fc701.3b6c28",
+    "type": "comment",
+    "name": "Get network id",
+    "info": "",
+    "comments": "",
+    "x": 662.0001220703125,
+    "y": 922.3334802985191,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "4db86c63.765344",
+    "type": "comment",
+    "name": "Create wan port",
+    "info": "",
+    "comments": "",
+    "x": 629.0002059936523,
+    "y": 1055.3336935043335,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "e8f33bf4.d74a28",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 991.0001220703125,
+    "y": 1154.0002393722534,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "18a023ce.91febc"
+      ]
+    ]
+  },
+  {
+    "id": "b358fdc8.47501",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 991.0001182556152,
+    "y": 1194.0004043579102,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "c181c64d.e790a8"
+      ]
+    ]
+  },
+  {
+    "id": "c181c64d.e790a8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1135.0001335144043,
+    "y": 1193.000241279602,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "d5734767.c41348"
+      ]
+    ]
+  },
+  {
+    "id": "2ecf07cd.e22e08",
+    "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": 1313.00048828125,
+    "y": 1153.0002708435059,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "f75c8efc.5bc38",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1038.0000495910645,
+    "y": 905.0001783370972,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "cd3f079c.c86e78"
+      ]
+    ]
+  },
+  {
+    "id": "72b3b752.f6bbf8",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1038.0000457763672,
+    "y": 945.0003433227539,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "7039d1d0.8c0e2"
+      ]
+    ]
+  },
+  {
+    "id": "7039d1d0.8c0e2",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1182.0000610351562,
+    "y": 944.0001802444458,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "cd3f079c.c86e78",
+    "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": 1180.0003814697266,
+    "y": 904.0001783370972,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "12ee38df.f58297",
+    "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": 2178.666633605957,
+    "y": 154.0000762939453,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "8b284d74.9bbdc",
+    "type": "set",
+    "name": "set vnf-request-input.",
+    "xml": "<set>\n<parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\n\n",
+    "comments": "",
+    "x": 2147.666633605957,
+    "y": 104.00009346008301,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "6fa219f1.a7d198",
+    "type": "comment",
+    "name": "This is also required for template parameters update",
+    "info": "",
+    "comments": "",
+    "x": 2543.0003967285156,
+    "y": 200.00003623962402,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "7a10e528.449ffc",
+    "type": "switchNode",
+    "name": "switch ActivateSiteInstance",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`\">\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1516.0004425048828,
+    "y": 189.00004959106445,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "8d8e3a.201b51c8"
+      ]
+    ]
+  },
+  {
+    "id": "8d8e3a.201b51c8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1712.0006256103516,
+    "y": 190.00004959106445,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "3f667c94.ca8ee4"
+      ]
+    ]
+  },
+  {
+    "id": "3f667c94.ca8ee4",
+    "type": "set",
+    "name": "set tmp.siteVidx",
+    "xml": "<set>\n<parameter name='tmp.siteVidx' value='`$vidx`' />\n<parameter name='ctx.site.' value='`$service-data.vnfs.vnf[$vidx].`' />\n\n",
+    "comments": "",
+    "x": 1897.9999237060547,
+    "y": 187.00005340576172,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "af3fc11d.805b3",
+    "type": "switchNode",
+    "name": "switch tmp.siteVidx",
+    "xml": "<switch test=\"`$tmp.siteVidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1189.6667518615723,
+    "y": 331.00007009506226,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "bee9b4a0.4631e8"
+      ]
+    ]
+  },
+  {
+    "id": "bee9b4a0.4631e8",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1364.0954627990723,
+    "y": 331.5715217590332,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "cf86c583.f350f8"
+      ]
+    ]
+  },
+  {
+    "id": "cf86c583.f350f8",
+    "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=\"ActivateSiteInstance not found in service-data\" />\n",
+    "comments": "",
+    "x": 1506.5241813659668,
+    "y": 330.71438455581665,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "794ddeb5.82822",
+    "type": "switchNode",
+    "name": "switch deviceName match",
+    "xml": "<switch test=\"`$prop.wan.deviceName == $service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].value`\">\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2420.667953491211,
+    "y": 461.0003185272217,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "a5f1b6ac.935608"
+      ]
+    ]
+  },
+  {
+    "id": "900215dc.3d2d28",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2503.3338928222656,
+    "y": 535.0001621246338,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "841824ee.9d9cb8",
+        "252b812c.b944de"
+      ]
+    ]
+  },
+  {
+    "id": "841824ee.9d9cb8",
+    "type": "for",
+    "name": "for loop deviceidx - Get deviceId from servicedata",
+    "xml": "<for index=\"deviceidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2783.5310440063477,
+    "y": 530.0313510894775,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "3d6ed093.e41e3"
+      ]
+    ]
+  },
+  {
+    "id": "3d6ed093.e41e3",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2860.5317764282227,
+    "y": 594.0314502716064,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "ab84c87e.6641a8"
+      ]
+    ]
+  },
+  {
+    "id": "21551932.828fc6",
+    "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=\".....\"/>\n<parameter name=\"field3\" value=\"prop.wan.deviceName\"/>\n<parameter name=\"field4\" value='`$prop.wan.deviceName`'/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2106.531379699707,
+    "y": 202.0312671661377,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "47895138.250a9",
+    "type": "for",
+    "name": "for vidx..service-data.vnfs.vnf_length[]",
+    "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1232.000072479248,
+    "y": 225.0000171661377,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "29298ea3.31ff42",
+        "7a10e528.449ffc"
+      ]
+    ]
+  },
+  {
+    "id": "272d2403.37c86c",
+    "type": "set",
+    "name": "copy input data to service data",
+    "xml": "<set>\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />",
+    "comments": "",
+    "x": 667.0312881469727,
+    "y": 1347.5314326286316,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "41e3ce3b.fd6",
+    "type": "comment",
+    "name": "TODO: split ip/mask",
+    "info": "",
+    "comments": "",
+    "x": 1053,
+    "y": 1040.5039072036743,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "bddbd7b0.3cac18",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 905.0008735656738,
+    "y": 993.3337669372559,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "693677dc.0ea4c8"
+      ]
+    ]
+  },
+  {
+    "id": "8b82d2e5.53604",
+    "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": 689.0004920959473,
+    "y": 992.3335227966309,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      [
+        "bddbd7b0.3cac18"
+      ]
+    ]
+  },
+  {
+    "id": "a401887.73e5778",
+    "type": "set",
+    "name": "set wan portId to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='wanPortId' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.wan.wanPortId`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\n\n\n\n\n",
+    "comments": "",
+    "x": 668.0000152587891,
+    "y": 1297.250274181366,
+    "z": "725c7d45.19d1f4",
+    "wires": []
+  },
+  {
+    "id": "2c725167.90a60e",
+    "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": 661,
+    "y": 698,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "18a023ce.91febc",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1135.0039672851562,
+    "y": 1152.5039310455322,
+    "z": "725c7d45.19d1f4",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-create.json
new file mode 100644
index 0000000..5bbf0a4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-create.json
@@ -0,0 +1,443 @@
+[
+  {
+    "id": "58d8ca80.754ee4",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 86,
+    "y": 38,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      [
+        "9b331136.66aea"
+      ]
+    ]
+  },
+  {
+    "id": "9b331136.66aea",
+    "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": 185.28569793701172,
+    "y": 112.23810789268464,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      [
+        "ec9fe349.f9372"
+      ]
+    ]
+  },
+  {
+    "id": "ec9fe349.f9372",
+    "type": "method",
+    "name": "method sdwan-vnf-topology-operation-wanport-create",
+    "xml": "<method rpc='sdwan-vnf-topology-operation-wanport-create' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 209.42861938476562,
+    "y": 201.0000195503235,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      [
+        "87efdcb1.d6671"
+      ]
+    ]
+  },
+  {
+    "id": "87efdcb1.d6671",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 317.6667022705078,
+    "y": 408.66668367385864,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      [
+        "daaa1789.61ed38",
+        "40e846a4.f63368",
+        "b8f54335.fcb32",
+        "4e193e5a.f6bb9",
+        "83c99a9.e9d4868",
+        "c7efce39.0f90c",
+        "596fe131.2f016",
+        "ee0f7cd9.73819",
+        "618cf28.a3bd10c",
+        "2794c131.0510ce",
+        "4dbd7ea2.8473c",
+        "a279f8fb.0934f8",
+        "4f31f3dc.48bbdc"
+      ]
+    ]
+  },
+  {
+    "id": "daaa1789.61ed38",
+    "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": 607.3336334228516,
+    "y": 860.3338012695312,
+    "z": "5ff8bbe7.b04e84",
+    "wires": []
+  },
+  {
+    "id": "40e846a4.f63368",
+    "type": "save",
+    "name": "save sdwan device port configuration 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='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` \" />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 694.0003890991211,
+    "y": 767.5560441017151,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "b8f54335.fcb32",
+    "type": "for",
+    "name": "for loop idx - VNF input parameters",
+    "xml": "<for index=\"idx\" start=\"0\" end=\"`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 672.0004577636719,
+    "y": 434.67542362213135,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      [
+        "acd8d091.0d71d"
+      ]
+    ]
+  },
+  {
+    "id": "acd8d091.0d71d",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 886.7788009643555,
+    "y": 432.23100757598877,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      [
+        "828392b5.41563",
+        "a73faa8e.c89ba8"
+      ]
+    ]
+  },
+  {
+    "id": "cf40793a.a6d2e8",
+    "type": "comment",
+    "name": "set input parameters",
+    "info": "",
+    "comments": "",
+    "x": 890.6736488342285,
+    "y": 560.5970115661621,
+    "z": "5ff8bbe7.b04e84",
+    "wires": []
+  },
+  {
+    "id": "4e193e5a.f6bb9",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 682.9898223876953,
+    "y": 131.59689903259277,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      [
+        "54b6d1d2.416d5",
+        "503b3e94.4de07"
+      ]
+    ]
+  },
+  {
+    "id": "54b6d1d2.416d5",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 919.7040500640869,
+    "y": 121.7397289276123,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      [
+        "b3cfe846.219ca8"
+      ]
+    ]
+  },
+  {
+    "id": "503b3e94.4de07",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 915.1327667236328,
+    "y": 160.02557945251465,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      [
+        "f27d7807.d35938"
+      ]
+    ]
+  },
+  {
+    "id": "f27d7807.d35938",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1047.8469619750977,
+    "y": 165.02551937103271,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      [
+        "7ed2d1b2.320ec",
+        "e6e34bc5.a44238"
+      ]
+    ]
+  },
+  {
+    "id": "b3cfe846.219ca8",
+    "type": "set",
+    "name": "set vnf-index=0",
+    "xml": "<set>\n<parameter name='vnf-index' value='0' />\n",
+    "comments": "",
+    "x": 1075.9898643493652,
+    "y": 120.73980903625488,
+    "z": "5ff8bbe7.b04e84",
+    "wires": []
+  },
+  {
+    "id": "7ed2d1b2.320ec",
+    "type": "set",
+    "name": "set vnf-index = vnf_length",
+    "xml": "<set>\n<parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\n",
+    "comments": "",
+    "x": 1276.989875793457,
+    "y": 137.31122303009033,
+    "z": "5ff8bbe7.b04e84",
+    "wires": []
+  },
+  {
+    "id": "e6e34bc5.a44238",
+    "type": "for",
+    "name": "for each existing VNF",
+    "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1259.418342590332,
+    "y": 177.31118488311768,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      [
+        "e6e708fd.086418"
+      ]
+    ]
+  },
+  {
+    "id": "e6e708fd.086418",
+    "type": "switchNode",
+    "name": "switch vnf-information.vnf-id == service-data.vnfs.vnf[].vnf-id",
+    "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1617.7041244506836,
+    "y": 176.88268852233887,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      [
+        "f6e0def3.d2f88"
+      ]
+    ]
+  },
+  {
+    "id": "55da435b.f5309c",
+    "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 id ' + $service-data.vnfs.vnf[$idx].vnf-id\n      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`\" />\n",
+    "comments": "",
+    "x": 2060.5610961914062,
+    "y": 177.4541187286377,
+    "z": "5ff8bbe7.b04e84",
+    "wires": []
+  },
+  {
+    "id": "f6e0def3.d2f88",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1922.9897651672363,
+    "y": 176.45411491394043,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      [
+        "55da435b.f5309c"
+      ]
+    ]
+  },
+  {
+    "id": "c7efce39.0f90c",
+    "type": "execute",
+    "name": "execute generate-vnf-index",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.vnf-index\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 661.9897155761719,
+    "y": 263.59686851501465,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "83c99a9.e9d4868",
+    "type": "set",
+    "name": "set new vnf_length",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\n",
+    "comments": "",
+    "x": 635.9897003173828,
+    "y": 228.59687662124634,
+    "z": "5ff8bbe7.b04e84",
+    "wires": []
+  },
+  {
+    "id": "ee0f7cd9.73819",
+    "type": "set",
+    "name": "set vnf-level-oper-status to Created",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
+    "comments": "",
+    "x": 680.9897918701172,
+    "y": 679.5971269607544,
+    "z": "5ff8bbe7.b04e84",
+    "wires": []
+  },
+  {
+    "id": "596fe131.2f016",
+    "type": "set",
+    "name": "copy input data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\n\n",
+    "comments": "",
+    "x": 614.8429145812988,
+    "y": 633.5933895111084,
+    "z": "5ff8bbe7.b04e84",
+    "wires": []
+  },
+  {
+    "id": "618cf28.a3bd10c",
+    "type": "save",
+    "name": "save service relationship in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \n      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id \n         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id \n         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"wan-port-config\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/wan-port-configs/wan-port-config/' + $prop.vnf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"wan-port-config.wan-port-config-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.vnf-index`\" />",
+    "comments": "",
+    "outputs": 1,
+    "x": 664.9897918701172,
+    "y": 815.5972166061401,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "2794c131.0510ce",
+    "type": "set",
+    "name": "set vnf-index and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$prop.vnf-index`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` \" />",
+    "comments": "",
+    "x": 667.9897232055664,
+    "y": 723.597137928009,
+    "z": "5ff8bbe7.b04e84",
+    "wires": []
+  },
+  {
+    "id": "4dbd7ea2.8473c",
+    "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-wanport-vnf-topology-operation-create\"/>\n<parameter name=\"field3\" value=\"SDWAN-Config\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 600.0000267028809,
+    "y": 316.0000305175781,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "93da82db.2cdc9",
+    "type": "comment",
+    "name": "Take the parameter names by removing prefix",
+    "info": "",
+    "comments": "",
+    "x": 780.0003204345703,
+    "y": 404.0000858306885,
+    "z": "5ff8bbe7.b04e84",
+    "wires": []
+  },
+  {
+    "id": "828392b5.41563",
+    "type": "execute",
+    "name": "execute split parameterName",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vnf-topology-operation-input.vnf-request-input.vnf-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": 1100.034912109375,
+    "y": 382.9791307449341,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a73faa8e.c89ba8",
+    "type": "set",
+    "name": "set parameterName",
+    "xml": "<set>\n<parameter name=\"`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",
+    "comments": "",
+    "x": 1068.4794158935547,
+    "y": 451.97921657562256,
+    "z": "5ff8bbe7.b04e84",
+    "wires": []
+  },
+  {
+    "id": "a279f8fb.0934f8",
+    "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": 645.0004463195801,
+    "y": 565.0004005432129,
+    "z": "5ff8bbe7.b04e84",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "4f31f3dc.48bbdc",
+    "type": "set",
+    "name": "set vnf-request-input.",
+    "xml": "<set>\n<parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />\n",
+    "comments": "",
+    "x": 626.0000305175781,
+    "y": 532.000147819519,
+    "z": "5ff8bbe7.b04e84",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-deactivate.json
new file mode 100644
index 0000000..af6f26c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-deactivate.json
@@ -0,0 +1,736 @@
+[
+  {
+    "id": "160bd41b.750adc",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 97,
+    "y": 50,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "7010ff28.09428"
+      ]
+    ]
+  },
+  {
+    "id": "7010ff28.09428",
+    "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.2856903076172,
+    "y": 100.23810863494873,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "f412ee4c.d62e7"
+      ]
+    ]
+  },
+  {
+    "id": "f412ee4c.d62e7",
+    "type": "method",
+    "name": "method sdwan-vnf-topology-operation-wanport-deactivate",
+    "xml": "<method rpc='sdwan-vnf-topology-operation-wanport-deactivate' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 279.4286117553711,
+    "y": 184.0000171661377,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "cc23525.50310b"
+      ]
+    ]
+  },
+  {
+    "id": "cc23525.50310b",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 254.66670608520508,
+    "y": 568.6666831970215,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "8af94d5d.882d",
+        "db706027.a79c1",
+        "a0bc8740.7ee818",
+        "13704b55.ddb7b5",
+        "f6e2bea8.930d7",
+        "1d165946.98b807",
+        "e263e9f9.47b878",
+        "ec6fef57.1d937",
+        "f2ee43ab.85fef"
+      ]
+    ]
+  },
+  {
+    "id": "8af94d5d.882d",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 760.0209541320801,
+    "y": 93.02095350623131,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "80fd0bfd.39f738",
+        "7b7c3289.46689c",
+        "eedac48f.477958"
+      ]
+    ]
+  },
+  {
+    "id": "80fd0bfd.39f738",
+    "type": "other",
+    "name": "Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1003.020881652832,
+    "y": 118.02103647589684,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "bd8e7274.c99a"
+      ]
+    ]
+  },
+  {
+    "id": "bd8e7274.c99a",
+    "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": 1151.7983932495117,
+    "y": 97.90997156500816,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "7b7c3289.46689c",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1004.0212059020996,
+    "y": 151.02105936408043,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "fc040973.03bed8"
+      ]
+    ]
+  },
+  {
+    "id": "fc040973.03bed8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1151.2909088134766,
+    "y": 140.5755818784237,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "41b2ec7a.c9fac4",
+        "ed9b9aab.53af18"
+      ]
+    ]
+  },
+  {
+    "id": "41b2ec7a.c9fac4",
+    "type": "for",
+    "name": "for vidx..service-data.vnfs.vnf_length[]",
+    "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1396.306869506836,
+    "y": 92.44958147406578,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "da4ef740.d83fa8"
+      ]
+    ]
+  },
+  {
+    "id": "ed9b9aab.53af18",
+    "type": "switchNode",
+    "name": "switch tmp.vidx ",
+    "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1327.6082229614258,
+    "y": 140.432760566473,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "742d2b6f.de3234"
+      ]
+    ]
+  },
+  {
+    "id": "742d2b6f.de3234",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1481.0368614196777,
+    "y": 139.00417360663414,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "373d4940.5a03b6"
+      ]
+    ]
+  },
+  {
+    "id": "cf1a968e.65c658",
+    "type": "switchNode",
+    "name": "switch vnfid found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1767.735450744629,
+    "y": 89.69969400763512,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "6d3e9e16.89bfe"
+      ]
+    ]
+  },
+  {
+    "id": "373d4940.5a03b6",
+    "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": 1617.4652557373047,
+    "y": 138.14703592658043,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "6d3e9e16.89bfe",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1806.687599182129,
+    "y": 144.59241327643394,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "c733e74a.c143c8"
+      ]
+    ]
+  },
+  {
+    "id": "eedac48f.477958",
+    "type": "outcome",
+    "name": "0",
+    "xml": "<outcome value='0'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 999.9896278381348,
+    "y": 85.9897321164608,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "bd8e7274.c99a"
+      ]
+    ]
+  },
+  {
+    "id": "da4ef740.d83fa8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1615.6565017700195,
+    "y": 91.98964247107506,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "cf1a968e.65c658"
+      ]
+    ]
+  },
+  {
+    "id": "db706027.a79c1",
+    "type": "set",
+    "name": "set vnf in service-data",
+    "xml": "<set>\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />\n\n",
+    "comments": "",
+    "x": 715.334171295166,
+    "y": 741.6668876111507,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "a0bc8740.7ee818",
+    "type": "set",
+    "name": "set vnfId and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",
+    "comments": "",
+    "x": 727.8898124694824,
+    "y": 798.8891824185848,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "13704b55.ddb7b5",
+    "type": "set",
+    "name": "set vnf-level-oper-status to PendingDelete",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
+    "comments": "",
+    "x": 770.3341865539551,
+    "y": 833.6670182645321,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "f6e2bea8.930d7",
+    "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": 680.6675567626953,
+    "y": 922.4448512494564,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "e263e9f9.47b878",
+    "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": 740.5003604888916,
+    "y": 261.0001236796379,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "553a8d46.b43834",
+        "4956fcb2.4927a4",
+        "b5f5e61a.4229a8"
+      ]
+    ]
+  },
+  {
+    "id": "553a8d46.b43834",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 959.5003299713135,
+    "y": 220.00012025237083,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "f8d39c98.f3e5a"
+      ]
+    ]
+  },
+  {
+    "id": "4956fcb2.4927a4",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 962.9912967681885,
+    "y": 267.5741558969021,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "60e56df6.080ca4"
+      ]
+    ]
+  },
+  {
+    "id": "b5f5e61a.4229a8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 958.3243045806885,
+    "y": 308.90746888518333,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "15107992.3c8136"
+      ]
+    ]
+  },
+  {
+    "id": "15107992.3c8136",
+    "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": 1146.0968608856201,
+    "y": 304.34666165709496,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "60e56df6.080ca4",
+    "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": 1139.562707901001,
+    "y": 255.85989198088646,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "f8d39c98.f3e5a",
+    "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": 1140.0004329681396,
+    "y": 214.00015896558762,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "1d346910.f82317",
+    "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": 773.0005130767822,
+    "y": 636.6668682992458,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "42db533e.b56eac",
+        "3455c58f.b562ea"
+      ]
+    ]
+  },
+  {
+    "id": "42db533e.b56eac",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1019.0004978179932,
+    "y": 674.6669569909573,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "77804da4.2bade4"
+      ]
+    ]
+  },
+  {
+    "id": "3455c58f.b562ea",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1015.0005779266357,
+    "y": 628.6668721139431,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "7c085513.57701c"
+      ]
+    ]
+  },
+  {
+    "id": "7c085513.57701c",
+    "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": 1156.0006694793701,
+    "y": 628.6668730676174,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "77804da4.2bade4",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1163.0003643035889,
+    "y": 672.6668759286404,
+    "z": "60265787.2327c8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "b1683370.08944",
+    "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": 764.0006809234619,
+    "y": 529.6668654382229,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "25b510d9.36284",
+        "3a348892.4f4ad8"
+      ]
+    ]
+  },
+  {
+    "id": "25b510d9.36284",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 997.0007762908936,
+    "y": 562.6668578088284,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "cc96ff80.a3e57"
+      ]
+    ]
+  },
+  {
+    "id": "3a348892.4f4ad8",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1001.0008563995361,
+    "y": 498.6669360101223,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "ce0c3d97.4bdf8"
+      ]
+    ]
+  },
+  {
+    "id": "ce0c3d97.4bdf8",
+    "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": 1146.001028060913,
+    "y": 500.6669360101223,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "cc96ff80.a3e57",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1153.0006198883057,
+    "y": 560.6668578088284,
+    "z": "60265787.2327c8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "1d165946.98b807",
+    "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": 707.9999885559082,
+    "y": 136.00003084540367,
+    "z": "60265787.2327c8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "ec6fef57.1d937",
+    "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": 757.0002689361572,
+    "y": 399.6666949689388,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "4f27175.40c29e8",
+        "50a6cd99.43e804"
+      ]
+    ]
+  },
+  {
+    "id": "4f27175.40c29e8",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 991.0003070831299,
+    "y": 385.66671976447105,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "ba76090.b8b84f8"
+      ]
+    ]
+  },
+  {
+    "id": "50a6cd99.43e804",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 984.2502689361572,
+    "y": 431.3095782697201,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "a32d5aa2.e0b408"
+      ]
+    ]
+  },
+  {
+    "id": "a32d5aa2.e0b408",
+    "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": 1137.0002689361572,
+    "y": 431.0596393048763,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "ba76090.b8b84f8",
+    "type": "set",
+    "name": "set token-id",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+    "comments": "",
+    "x": 1145.0003070831299,
+    "y": 386.66671976447105,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "c733e74a.c143c8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1947.0001106262207,
+    "y": 145.00004610419273,
+    "z": "60265787.2327c8",
+    "wires": [
+      [
+        "2115f98.c329d06",
+        "5f1edf6a.5abca",
+        "e126aeff.fd3f4"
+      ]
+    ]
+  },
+  {
+    "id": "f2ee43ab.85fef",
+    "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 = $vnf-topology-operation-input.vnf-information.vnf-id' >\n<parameter name='wan-port-config-id' value=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\" />\n<parameter name='operational-status' value='PendingDelete' />\n<parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 793.0002861022949,
+    "y": 875.0004304349422,
+    "z": "60265787.2327c8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "2115f98.c329d06",
+    "type": "set",
+    "name": "set tmp.vidx and ctx.vnf-data",
+    "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",
+    "comments": "",
+    "x": 2197.0313453674316,
+    "y": 96.03129276633263,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "5f1edf6a.5abca",
+    "type": "set",
+    "name": "set vnf-request-input.",
+    "xml": "<set>\n<parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\n\n",
+    "comments": "",
+    "x": 2169.4776344299316,
+    "y": 142.68892845511436,
+    "z": "60265787.2327c8",
+    "wires": []
+  },
+  {
+    "id": "e126aeff.fd3f4",
+    "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": 2193.477584838867,
+    "y": 192.6889165341854,
+    "z": "60265787.2327c8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "e35c5cc.ba705a",
+    "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": 727,
+    "y": 462,
+    "z": "60265787.2327c8",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-delete.json
new file mode 100644
index 0000000..bf71f28
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-delete.json
@@ -0,0 +1,569 @@
+[
+  {
+    "id": "d97ddb0b.9dbae8",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 657.5634536743164,
+    "y": 290.26117038726807,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "78101855.a55318",
+        "303c0757.9740d8"
+      ]
+    ]
+  },
+  {
+    "id": "ffc786dd.6d3ce8",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 119.46875,
+    "y": 55,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "19627a0c.fad7f6"
+      ]
+    ]
+  },
+  {
+    "id": "19627a0c.fad7f6",
+    "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": 194.75445556640625,
+    "y": 95.23811149597168,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "90edfff9.8d8dc"
+      ]
+    ]
+  },
+  {
+    "id": "89fc7e96.e130c",
+    "type": "comment",
+    "name": "wan port-vnf-topology-operation-delete",
+    "info": "",
+    "comments": "",
+    "x": 568.8136672973633,
+    "y": 128.58639907836914,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "12b8b4a9.73677b",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 196.13541412353516,
+    "y": 356.6666717529297,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "79e6b6ed.e79cf8",
+        "a877fa3c.5b8268",
+        "86a0bf6e.0b80b",
+        "d97ddb0b.9dbae8",
+        "c603984a.796d78",
+        "b1f3fdb5.343c9",
+        "c5c45c6b.923e9",
+        "96916512.691c98",
+        "f2a5223f.497fa",
+        "14bdc57f.29da0b",
+        "9171f0e2.d13bf"
+      ]
+    ]
+  },
+  {
+    "id": "78101855.a55318",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 922.2857666015625,
+    "y": 272.81679248809814,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "74e8241b.eea89c"
+      ]
+    ]
+  },
+  {
+    "id": "74e8241b.eea89c",
+    "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": 1103.2856369018555,
+    "y": 267.81667041778564,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "303c0757.9740d8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 907.7857666015625,
+    "y": 324.8167552947998,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "1483b08f.bc2c8f"
+      ]
+    ]
+  },
+  {
+    "id": "1483b08f.bc2c8f",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1079.785472869873,
+    "y": 324.8167533874512,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "e9c362d9.eda3b",
+        "c7e2b23c.082b2"
+      ]
+    ]
+  },
+  {
+    "id": "c7e2b23c.082b2",
+    "type": "switchNode",
+    "name": "switch tmp.vidx ",
+    "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1254.78564453125,
+    "y": 343.8166751861572,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "b277af35.24bde"
+      ]
+    ]
+  },
+  {
+    "id": "86a0bf6e.0b80b",
+    "type": "switchNode",
+    "name": "switch vnf-level-oper-status",
+    "xml": "<switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 627.9524536132812,
+    "y": 364.70563411712646,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "bebaa9f9.5133d8",
+        "de5a57a9.6e5c38"
+      ]
+    ]
+  },
+  {
+    "id": "bebaa9f9.5133d8",
+    "type": "outcome",
+    "name": "outcome PendingDelete",
+    "xml": "<outcome value='PendingDelete'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 918.7857208251953,
+    "y": 368.81675720214844,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "a8bce4a2.2db818"
+      ]
+    ]
+  },
+  {
+    "id": "de5a57a9.6e5c38",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 864.7857818603516,
+    "y": 415.8167610168457,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "c9cdcb18.116a68"
+      ]
+    ]
+  },
+  {
+    "id": "c9cdcb18.116a68",
+    "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": 1024.2855491638184,
+    "y": 418.8167600631714,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "c603984a.796d78",
+    "type": "switchNode",
+    "name": "switch vnf-id",
+    "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 593.7857704162598,
+    "y": 245.81676387786865,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "9c65cfbe.e7f66"
+      ]
+    ]
+  },
+  {
+    "id": "9c65cfbe.e7f66",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 791.7858352661133,
+    "y": 235.81677627563477,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "16c05e83.252251"
+      ]
+    ]
+  },
+  {
+    "id": "16c05e83.252251",
+    "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-request-input.vnf-input-parameters.name is a required input\" />\n",
+    "comments": "",
+    "x": 958.2857208251953,
+    "y": 232.81677055358887,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "e9c362d9.eda3b",
+    "type": "for",
+    "name": "for vidx..service-data.vnfs.vnf[]",
+    "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1315.2856483459473,
+    "y": 279.81667137145996,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "76ffd99.2cf1928"
+      ]
+    ]
+  },
+  {
+    "id": "76ffd99.2cf1928",
+    "type": "switchNode",
+    "name": "switch vnf-id found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1571.2856674194336,
+    "y": 279.81667137145996,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "157a2e27.614112"
+      ]
+    ]
+  },
+  {
+    "id": "157a2e27.614112",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1747.7857208251953,
+    "y": 282.81667137145996,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "9ee7d32a.eb396"
+      ]
+    ]
+  },
+  {
+    "id": "9ee7d32a.eb396",
+    "type": "set",
+    "name": "set tmp.vidx and ctx.vnf-data",
+    "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].vnf-data.`' />\n",
+    "comments": "",
+    "x": 1914.7857360839844,
+    "y": 343.81667137145996,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "b167d24d.6ae55",
+    "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": 1560.285659790039,
+    "y": 343.8166751861572,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "b277af35.24bde",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1422.785659790039,
+    "y": 343.8166751861572,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "b167d24d.6ae55"
+      ]
+    ]
+  },
+  {
+    "id": "79e6b6ed.e79cf8",
+    "type": "set",
+    "name": "set vnfId and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='vnf-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vnf-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'` \" />",
+    "comments": "",
+    "x": 599.8022537231445,
+    "y": 647.3334503173828,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "a877fa3c.5b8268",
+    "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": 572.913516998291,
+    "y": 772.8888854980469,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "c5c45c6b.923e9",
+    "type": "set",
+    "name": "set new vnf length",
+    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",
+    "comments": "",
+    "x": 577.4347686767578,
+    "y": 555.8044013977051,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "a8bce4a2.2db818",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1116.0921211242676,
+    "y": 379.14191150665283,
+    "z": "298a9201.dd932e",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "90edfff9.8d8dc",
+    "type": "method",
+    "name": "method sdwan-vnf-topology-operation-wanport-delete",
+    "xml": "<method rpc='sdwan-vnf-topology-operation-wanport-delete' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 200,
+    "y": 211.26117038726807,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "12b8b4a9.73677b"
+      ]
+    ]
+  },
+  {
+    "id": "b1f3fdb5.343c9",
+    "type": "execute",
+    "name": "execute requiredParameters",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"vnf-topology-operation-input.vnf-information.vnf-id\" value=\"$vnf-topology-operation-input.vnf-information.vnf-id\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 651.2858276367188,
+    "y": 185.81676292419434,
+    "z": "298a9201.dd932e",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "96916512.691c98",
+    "type": "delete",
+    "name": "delete wan port instance configuration in AAI",
+    "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='wan-port-config' \n        key='wan-port-config.wan-port-config-id = $vnf-topology-operation-input.vnf-information.vnf-id'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 649.0001983642578,
+    "y": 685.2611904144287,
+    "z": "298a9201.dd932e",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "f2a5223f.497fa",
+    "type": "for",
+    "name": "for lidx..service-data.vnfs.vnf[]",
+    "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 611.3333854675293,
+    "y": 505.0001096725464,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "53b23540.75768c"
+      ]
+    ]
+  },
+  {
+    "id": "53b23540.75768c",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 855.333366394043,
+    "y": 531.0000691413879,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "52fdf367.fb37ac"
+      ]
+    ]
+  },
+  {
+    "id": "52fdf367.fb37ac",
+    "type": "switchNode",
+    "name": "switch vnf-id found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$lidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1047.3333129882812,
+    "y": 540.0001134872437,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "ae48a2e3.38f76"
+      ]
+    ]
+  },
+  {
+    "id": "ae48a2e3.38f76",
+    "type": "outcomeFalse",
+    "name": "false",
+    "xml": "<outcome value='false'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1233.3333282470703,
+    "y": 524,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "617570c9.1b48"
+      ]
+    ]
+  },
+  {
+    "id": "8341b52b.a87b88",
+    "type": "set",
+    "name": "set  vnf data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$lidx].vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$lidx].vnf-data.`' />\n",
+    "comments": "",
+    "x": 1549.3333473205566,
+    "y": 500.0001916885376,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "14bdc57f.29da0b",
+    "type": "set",
+    "name": "set prop.vnfNewidx",
+    "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",
+    "comments": "",
+    "x": 576.3333892822266,
+    "y": 469.0000686645508,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "45e47923.545468",
+    "type": "set",
+    "name": "set prop.vnfNewidx",
+    "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",
+    "comments": "",
+    "x": 1571.3333473205566,
+    "y": 556.0001554489136,
+    "z": "298a9201.dd932e",
+    "wires": []
+  },
+  {
+    "id": "617570c9.1b48",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1384.333251953125,
+    "y": 525.000036239624,
+    "z": "298a9201.dd932e",
+    "wires": [
+      [
+        "8341b52b.a87b88",
+        "45e47923.545468"
+      ]
+    ]
+  },
+  {
+    "id": "9171f0e2.d13bf",
+    "type": "set",
+    "name": "Remove vnf from ServiceData",
+    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$prop.vnfidxLen].\" value=\"\"/>\n\n",
+    "comments": "",
+    "x": 613.0000534057617,
+    "y": 598.0000357627869,
+    "z": "298a9201.dd932e",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-wanport-vnf-topology-operation-underlay.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-wanport-vnf-topology-operation-underlay.json
new file mode 100644
index 0000000..b04fe60
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-wanport-vnf-topology-operation-underlay.json
@@ -0,0 +1,4315 @@
+[
+  {
+    "id": "df1ca662.8747b8",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 92,
+    "y": 26,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "f03eb016.75be2"
+      ]
+    ]
+  },
+  {
+    "id": "f03eb016.75be2",
+    "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": 208.2856903076172,
+    "y": 77.23810768127441,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "d1c55e79.a107d"
+      ]
+    ]
+  },
+  {
+    "id": "d1c55e79.a107d",
+    "type": "method",
+    "name": "method sdwan-wanport-vnf-topology-operation-underlay",
+    "xml": "<method rpc='sdwan-wanport-vnf-topology-operation-underlay' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 211.42861938476562,
+    "y": 162.00003147125244,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "39b0cbc5.a6e634"
+      ]
+    ]
+  },
+  {
+    "id": "39b0cbc5.a6e634",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 143.66668701171875,
+    "y": 270.66673278808594,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "6e5ac20d.e60c4c",
+        "b99b3963.4b1368",
+        "962ad5c3.0da1a8",
+        "da982ae7.c19088",
+        "546d6174.f994f"
+      ]
+    ]
+  },
+  {
+    "id": "6e5ac20d.e60c4c",
+    "type": "for",
+    "name": "for cidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]",
+    "xml": "<for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 578.000431060791,
+    "y": 409.6668539047241,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "ad0a3663.ab8598"
+      ]
+    ]
+  },
+  {
+    "id": "2acab811.c13ee8",
+    "type": "set",
+    "name": "set prop.ar.allotted-resource-id",
+    "xml": "<set>\n<parameter name='prop.ar.allotted-resource-id' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id`' />\n",
+    "comments": "",
+    "x": 1368.0013427734375,
+    "y": 98.96877861022949,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "4102e103.78e0d",
+    "type": "comment",
+    "name": "Query MDSAL for AR",
+    "info": "",
+    "comments": "",
+    "x": 1693.3340148925781,
+    "y": 122.96864795684814,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "2988c3dc.9f08bc",
+    "type": "comment",
+    "name": "Query MDSAL to get parent service based on service instance id from AR",
+    "info": "",
+    "comments": "",
+    "x": 2163.334873199463,
+    "y": 141.96862697601318,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "43ba54c6.bea31c",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1942.66841506958,
+    "y": 177.63526725769043,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "90fef119.efb27"
+      ]
+    ]
+  },
+  {
+    "id": "90fef119.efb27",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2097.668254852295,
+    "y": 177.13510036468506,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "3f50e700.ebbfb8"
+      ]
+    ]
+  },
+  {
+    "id": "22fe4487.ea79bc",
+    "type": "other",
+    "name": "outcome 1",
+    "xml": "<outcome value='1'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2421.3587913513184,
+    "y": 173.75424098968506,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "eb3089e9.bab518"
+      ]
+    ]
+  },
+  {
+    "id": "202db162.ce306e",
+    "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=\"Error: Connection attachement resource not found\" />\n    \n",
+    "comments": "",
+    "x": 2567.1275672912598,
+    "y": 213.20122909545898,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "b9e47095.da1a3",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1935.5201416015625,
+    "y": 224.70127391815186,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "1559b306.93fa9d"
+      ]
+    ]
+  },
+  {
+    "id": "1559b306.93fa9d",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2085.5199851989746,
+    "y": 225.36782932281494,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "6807513b.840e7"
+      ]
+    ]
+  },
+  {
+    "id": "d76066f5.ec2ac8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2409.6867446899414,
+    "y": 211.03460121154785,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "202db162.ce306e"
+      ]
+    ]
+  },
+  {
+    "id": "3f50e700.ebbfb8",
+    "type": "switchNode",
+    "name": "switch cr length",
+    "xml": "<switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2261.668430328369,
+    "y": 177.6352834701538,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "22fe4487.ea79bc",
+        "d76066f5.ec2ac8"
+      ]
+    ]
+  },
+  {
+    "id": "1ecae18f.8c5d6e",
+    "type": "set",
+    "name": "set parent-service-instance-id",
+    "xml": "<set>\n<parameter name='prop.parent-service-instance-id' value='`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id`' />\n\n",
+    "comments": "",
+    "x": 2817.0020294189453,
+    "y": 174.63526439666748,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "eb3089e9.bab518",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic='true'>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2571.4778213500977,
+    "y": 173.80180072784424,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "1ecae18f.8c5d6e",
+        "c22c6bf7.654618"
+      ]
+    ]
+  },
+  {
+    "id": "6807513b.840e7",
+    "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=\"Error: Connection attachement resource not found\" />\n    \n",
+    "comments": "",
+    "x": 2253.001438140869,
+    "y": 223.63520526885986,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "bc09ac7e.2dfa1",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2040.303554534912,
+    "y": 495.7709312438965,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "4a6d5f3.c343ea"
+      ]
+    ]
+  },
+  {
+    "id": "f0b156c6.5db3a8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2032.1553573608398,
+    "y": 530.8370161056519,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "22ca566e.18afda"
+      ]
+    ]
+  },
+  {
+    "id": "22ca566e.18afda",
+    "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=\"Error: SOTN resource not found\" />\n    \n",
+    "comments": "",
+    "x": 2178.304130554199,
+    "y": 531.1045122146606,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "4a6d5f3.c343ea",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2160.3038024902344,
+    "y": 495.771014213562,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "c9fcea4f.295c68",
+    "type": "for",
+    "name": "for pnidx.. mdsal-psd.networks.network_length[]",
+    "xml": "<for index='pnidx' start='0' end='`$mdsal-psd.service-data.networks.network_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1723.6683502197266,
+    "y": 595.3028893470764,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "d063fbaf.bf9cb8"
+      ]
+    ]
+  },
+  {
+    "id": "4b3c3b19.b12c44",
+    "type": "switchNode",
+    "name": "switch ActivateSDWANConnectivityInstance",
+    "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$pnidx].network-data.request-information.request-action == 'ActivateSDWANConnectivityInstance'`\">\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2253.3349838256836,
+    "y": 564.3028907775879,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "353c03be.8a3dec"
+      ]
+    ]
+  },
+  {
+    "id": "353c03be.8a3dec",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2505.334518432617,
+    "y": 565.3028283119202,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "8948df3b.5b4e8"
+      ]
+    ]
+  },
+  {
+    "id": "8948df3b.5b4e8",
+    "type": "set",
+    "name": "set tmp.pnidx ",
+    "xml": "<set>\n<parameter name='tmp.pnidx' value='`$pnidx`' />\n\n",
+    "comments": "",
+    "x": 2661.3342056274414,
+    "y": 565.3028283119202,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "f17464be.205b38",
+    "type": "for",
+    "name": "for loop paramidx - Get topology from servicedata",
+    "xml": "<for index=\"paramidx\" start=\"0\" end=\"`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1655.3351593017578,
+    "y": 680.3025188446045,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "a24202ba.c8c7c"
+      ]
+    ]
+  },
+  {
+    "id": "1134832c.af388d",
+    "type": "switchNode",
+    "name": "switch topology",
+    "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'topology'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2107.335250854492,
+    "y": 659.3024244308472,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "b4638122.81f25"
+      ]
+    ]
+  },
+  {
+    "id": "b4638122.81f25",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2258.335262298584,
+    "y": 657.3024663925171,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "6ab1ecb6.c4b6a4"
+      ]
+    ]
+  },
+  {
+    "id": "6ab1ecb6.c4b6a4",
+    "type": "set",
+    "name": "set topology",
+    "xml": "<set>\n<parameter name='prop.topology' value='`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
+    "comments": "",
+    "x": 2399.334991455078,
+    "y": 656.9024000167847,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "427fd71a.a641b8",
+    "type": "switchNode",
+    "name": "switch tmp.pnidx ",
+    "xml": "<switch test=\"`$tmp.pnidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1626.334976196289,
+    "y": 639.9690914154053,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "3b308668.883fda"
+      ]
+    ]
+  },
+  {
+    "id": "3b308668.883fda",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1781.7636489868164,
+    "y": 638.5404710769653,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "1025ab31.d734f5"
+      ]
+    ]
+  },
+  {
+    "id": "1025ab31.d734f5",
+    "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": 1922.1922721862793,
+    "y": 639.6835603713989,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "3aec24fb.014f5c",
+    "type": "switchNode",
+    "name": "switch topology hub-spoke",
+    "xml": "<switch test=\"`$prop.topology == 'hub-spoke'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1534.3348426818848,
+    "y": 742.3023405075073,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "11a1e34f.7c4fdd",
+        "32341b46.a26b84"
+      ]
+    ]
+  },
+  {
+    "id": "11a1e34f.7c4fdd",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1724.334529876709,
+    "y": 767.3028259277344,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "26c0cc7e.899014"
+      ]
+    ]
+  },
+  {
+    "id": "32341b46.a26b84",
+    "type": "outcomeTrue",
+    "name": "false",
+    "xml": "<outcome value='false'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1718.3354568481445,
+    "y": 728.3024883270264,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "92373ae3.dba458"
+      ]
+    ]
+  },
+  {
+    "id": "92373ae3.dba458",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1854.3354606628418,
+    "y": 728.3024272918701,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "26c0cc7e.899014",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1729.66748046875,
+    "y": 835.3020601272583,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "a5cfaff.0a25c5"
+      ]
+    ]
+  },
+  {
+    "id": "a5cfaff.0a25c5",
+    "type": "for",
+    "name": "for ppidx.. mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[]",
+    "xml": "<for index='ppidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2137.000732421875,
+    "y": 835.6356782913208,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "528bb6e8.287b28"
+      ]
+    ]
+  },
+  {
+    "id": "45c7f2c8.9bbc9c",
+    "type": "set",
+    "name": "set prop.ar.provided-allotted-resource-id",
+    "xml": "<set>\n<parameter name='prop.ar.provided-allotted-resource-id' value='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$ppidx].allotted-resource-id`' />\n\n",
+    "comments": "",
+    "x": 2228.0018463134766,
+    "y": 913.6359763145447,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "d3076636.df66e8",
+    "type": "for",
+    "name": "for loop aridx - Get role from allotted resource",
+    "xml": "<for index=\"aridx\" start=\"0\" end=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2246.0025482177734,
+    "y": 1024.302767753601,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "94a7fcab.3f18"
+      ]
+    ]
+  },
+  {
+    "id": "e9ad6cc9.abb1",
+    "type": "switchNode",
+    "name": "switch Role",
+    "xml": "<switch test=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'Role'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2655.002658843994,
+    "y": 1027.3028545379639,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "356c0745.261588"
+      ]
+    ]
+  },
+  {
+    "id": "356c0745.261588",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2796.0029907226562,
+    "y": 1026.3028535842896,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "2ecc17c9.bbea08"
+      ]
+    ]
+  },
+  {
+    "id": "2ecc17c9.bbea08",
+    "type": "set",
+    "name": "set prop.role",
+    "xml": "<set>\n<parameter name='prop.role' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />\n",
+    "comments": "",
+    "x": 2937.0030250549316,
+    "y": 1027.9027452468872,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "7d6e3904.ff8ae8",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2732.0020446777344,
+    "y": 930.969269990921,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "92d1a6eb.dd91a8"
+      ]
+    ]
+  },
+  {
+    "id": "b0148b51.89ec18",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2728.8537673950195,
+    "y": 985.0353531837463,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "c6ccd14a.96548"
+      ]
+    ]
+  },
+  {
+    "id": "59d6c0f4.defd7",
+    "type": "switchNode",
+    "name": "switch role hub",
+    "xml": "<switch test=\"`$prop.role == hub`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2112.3351821899414,
+    "y": 1089.6358079910278,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "d2d633b9.72ffd",
+        "10c92564.7d8f7b"
+      ]
+    ]
+  },
+  {
+    "id": "a9370615.1e0a18",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2428.3345680236816,
+    "y": 1065.6354112625122,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "f944f364.78c47",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2838.3042030334473,
+    "y": 1161.1045179367065,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "b250bb74.e941e8"
+      ]
+    ]
+  },
+  {
+    "id": "e08d96d8.e1bd48",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2840.155773162842,
+    "y": 1221.170599937439,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "d9301d98.96024"
+      ]
+    ]
+  },
+  {
+    "id": "d9301d98.96024",
+    "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=\"Error: SDWAN service-data not found\" />\n    \n",
+    "comments": "",
+    "x": 2984.304546356201,
+    "y": 1183.4380140304565,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "b250bb74.e941e8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2968.3042221069336,
+    "y": 1150.1046781539917,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "31ca4096.fa657",
+    "type": "set",
+    "name": "set prop.ar-service-instance-id",
+    "xml": "<set>\n<parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id`' />\n",
+    "comments": "",
+    "x": 2440.3356018066406,
+    "y": 1149.6360107660294,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "3250db4e.aae6c4",
+    "type": "for",
+    "name": "for arvidx.. mdsal-arsd.service-data.vnfs.vnf_length[]",
+    "xml": "<for index='arvidx' start='0' end='`$mdsal-arsd.service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2484.0020751953125,
+    "y": 1271.6358003616333,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "5be088b1.9bd9d8"
+      ]
+    ]
+  },
+  {
+    "id": "5be088b1.9bd9d8",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2830.6683959960938,
+    "y": 1261.6357765197754,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "b0a1b0f0.1cd88",
+        "64161d13.320da4",
+        "a305e869.75b198"
+      ]
+    ]
+  },
+  {
+    "id": "b0a1b0f0.1cd88",
+    "type": "switchNode",
+    "name": "switch ActivateSDWANPortInstance",
+    "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSDWANPortInstance'`\">\n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3092.668504714966,
+    "y": 1232.6367359161377,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "f4aa7045.eb114"
+      ]
+    ]
+  },
+  {
+    "id": "494b8c51.d5a454",
+    "type": "switchNode",
+    "name": "switch tmp.wanportvidx ",
+    "xml": "<switch test=\"`$tmp.wanportvidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2565.668212890625,
+    "y": 1316.3024454116821,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "a2447b78.519d38"
+      ]
+    ]
+  },
+  {
+    "id": "273881de.ee082e",
+    "type": "for",
+    "name": "for loop wportidx - Get wan port ID from servicedata",
+    "xml": "<for index=\"wportidx\" start=\"0\" end=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3747.6689834594727,
+    "y": 1225.6369161605835,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "b8659698.4fa9a8"
+      ]
+    ]
+  },
+  {
+    "id": "a2447b78.519d38",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2737.096935272217,
+    "y": 1319.8741512298584,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "f6e26890.4d8a38"
+      ]
+    ]
+  },
+  {
+    "id": "f6e26890.4d8a38",
+    "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 (port) not found in service-data\" />\n",
+    "comments": "",
+    "x": 2881.525650024414,
+    "y": 1322.0174312591553,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "f4aa7045.eb114",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3320.66819190979,
+    "y": 1230.636736869812,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "ab1ef1f9.e54ea"
+      ]
+    ]
+  },
+  {
+    "id": "b8659698.4fa9a8",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3699.6701984405518,
+    "y": 1309.6374425888062,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "79f89faa.fb19f"
+      ]
+    ]
+  },
+  {
+    "id": "79f89faa.fb19f",
+    "type": "switchNode",
+    "name": "switch transportNetworkName",
+    "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].name == 'transportNetworkName'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3917.6711139678955,
+    "y": 1307.6379308700562,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "863adb79.9947c8"
+      ]
+    ]
+  },
+  {
+    "id": "564bf8e9.5ea9e8",
+    "type": "set",
+    "name": "set tmp.portvidx ",
+    "xml": "<set>\n<parameter name='tmp.portvidx' value='`$arvidx`' />\n\n",
+    "comments": "",
+    "x": 3644.667995452881,
+    "y": 1183.6369037628174,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "863adb79.9947c8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4114.671541213989,
+    "y": 1306.6380996704102,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "896da4ec.a5e9f8"
+      ]
+    ]
+  },
+  {
+    "id": "662f75a8.5b0d6c",
+    "type": "set",
+    "name": "set prop.hub.transportNetworkName",
+    "xml": "<set>\n<parameter name='prop.hub.transportNetworkName' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].value`' />\n",
+    "comments": "",
+    "x": 4371.6733751297,
+    "y": 1506.2391166687012,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "372c4b67.d587a4",
+    "type": "switchNode",
+    "name": "switch  prop.hub.transportNetworkName==prop.spoke.transportNetworkName",
+    "xml": "<switch test=\"`$prop.hub.transportNetworkName == $prop.spoke.transportNetworkName`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2564.00431060791,
+    "y": 1466.3046674728394,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "ad67f3dd.ea7da",
+        "f32a34f9.fa2a88"
+      ]
+    ]
+  },
+  {
+    "id": "ad67f3dd.ea7da",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2910.0038414001465,
+    "y": 1503.3047413825989,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "6ddb13cd.d02b7c"
+      ]
+    ]
+  },
+  {
+    "id": "f32a34f9.fa2a88",
+    "type": "outcomeTrue",
+    "name": "false",
+    "xml": "<outcome value='false'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2904.004650115967,
+    "y": 1440.3046016693115,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "93fee3b6.b53b4"
+      ]
+    ]
+  },
+  {
+    "id": "93fee3b6.b53b4",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3034.004837036133,
+    "y": 1440.3047542572021,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "528bb6e8.287b28",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1879.0322265625,
+    "y": 944.8333101272583,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "45c7f2c8.9bbc9c",
+        "9540984f.e97fb8",
+        "b384d688.b2dd28",
+        "59d6c0f4.defd7",
+        "d3076636.df66e8"
+      ]
+    ]
+  },
+  {
+    "id": "e393fec8.f9974",
+    "type": "switchNode",
+    "name": "switch vpnId",
+    "xml": "<switch test=\"`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'vpn-id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2097.001266479492,
+    "y": 703.6354351043701,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "d6a90986.8eb118"
+      ]
+    ]
+  },
+  {
+    "id": "d6a90986.8eb118",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2241.001277923584,
+    "y": 703.6354761123657,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "c1f6fc9b.d909f"
+      ]
+    ]
+  },
+  {
+    "id": "c1f6fc9b.d909f",
+    "type": "set",
+    "name": "set prop.vpnId",
+    "xml": "<set>\n<parameter name='prop.vpnId' value='`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />\n",
+    "comments": "",
+    "x": 2399.0009994506836,
+    "y": 702.2354106903076,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "56fbb125.4613b",
+    "type": "set",
+    "name": "Set prop.hubTnpId",
+    "xml": "<set>\n<parameter name='prop.hubTnpId' value='$prop.hub.wanPortId' />\n\n",
+    "comments": "",
+    "x": 2616.3368072509766,
+    "y": 1739.6364259719849,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "7c9721cc.23414",
+    "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=\"underlayHubResp\"/>\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": 3437.33624458313,
+    "y": 2571.9708592891693,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "f29c10b7.ab96c",
+        "d1ca729c.637d"
+      ]
+    ]
+  },
+  {
+    "id": "d1ca729c.637d",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3704.3361530303955,
+    "y": 2599.970888853073,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "4079a316.d4531c"
+      ]
+    ]
+  },
+  {
+    "id": "f29c10b7.ab96c",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3702.335832595825,
+    "y": 2555.97087931633,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "7b4a5da7.783c64"
+      ]
+    ]
+  },
+  {
+    "id": "31f4dc9.4459824",
+    "type": "set",
+    "name": "Add prop.hub.route",
+    "xml": "<set>\n<parameter name='prop.route.id' value='`$prop.hubRouteId`' />\n<parameter name='prop.route.vpnId' value='`$prop.vpnId`' />\n<parameter name='prop.route.siteId' value='`$prop.hub.siteId`' />\n<parameter name='prop.route.deviceId' value='`$prop.hub.deviceId`' />\n<parameter name='prop.route.providerIpAddress' value='`$prop.hub.providerIpAddress`' />\n<parameter name='prop.route.wanportId' value='`$prop.spoke.wanPortId`' />\n<parameter name='prop.route.ipAddress' value='`$prop.hub.ipAddress`' />\n\n\n",
+    "comments": "",
+    "x": 3381.6696243286133,
+    "y": 2528.637367248535,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "bd1192a1.70e0b",
+    "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": 3456.6696243286133,
+    "y": 2670.637832403183,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "1372bf53.f8d271",
+        "7d49f976.fe2c38"
+      ]
+    ]
+  },
+  {
+    "id": "7d49f976.fe2c38",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3708.669771194458,
+    "y": 2699.6381289958954,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "a38da1c5.3c2df"
+      ]
+    ]
+  },
+  {
+    "id": "1372bf53.f8d271",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3706.6694507598877,
+    "y": 2655.638119459152,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "ae6e8595.d05358"
+      ]
+    ]
+  },
+  {
+    "id": "1618d5.6f61e72c",
+    "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 sdwan spoke route underlay rest api\" />\n",
+    "comments": "",
+    "x": 3996.6703186035156,
+    "y": 2649.6383113861084,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "64161d13.320da4",
+    "type": "switchNode",
+    "name": "switch ActivateSDWANDeviceInstance",
+    "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\">\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3103.532081604004,
+    "y": 1265.8336944580078,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "9f32e086.83793"
+      ]
+    ]
+  },
+  {
+    "id": "c2ac42b9.22b8d",
+    "type": "switchNode",
+    "name": "switch tmp.devicevidx ",
+    "xml": "<switch test=\"`$tmp.devicevidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2571.5316314697266,
+    "y": 1358.4999265670776,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "e36692fe.8d819"
+      ]
+    ]
+  },
+  {
+    "id": "e36692fe.8d819",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2737.9600677490234,
+    "y": 1358.0714597702026,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "3d811052.fd24c"
+      ]
+    ]
+  },
+  {
+    "id": "3d811052.fd24c",
+    "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 (device) not found in service-data\" />\n",
+    "comments": "",
+    "x": 2878.388999938965,
+    "y": 1360.2144346237183,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "9f32e086.83793",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3331.531768798828,
+    "y": 1263.8336954116821,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "869ea93a.54ef48"
+      ]
+    ]
+  },
+  {
+    "id": "869ea93a.54ef48",
+    "type": "set",
+    "name": "set tmp.devicevidx ",
+    "xml": "<set>\n<parameter name='tmp.devicevidx' value='`$arvidx`' />\n\n",
+    "comments": "",
+    "x": 3486.531452178955,
+    "y": 1263.8336944580078,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "a305e869.75b198",
+    "type": "switchNode",
+    "name": "switch ActivateSiteInstance",
+    "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`\">\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3066.5321521759033,
+    "y": 1299.833758354187,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "ab60af44.1fc14"
+      ]
+    ]
+  },
+  {
+    "id": "aae2a2df.f7cc",
+    "type": "switchNode",
+    "name": "switch tmp.sitevidx ",
+    "xml": "<switch test=\"`$tmp.sitevidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2570.5315017700195,
+    "y": 1396.4998044967651,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "834ee4ef.5fe588"
+      ]
+    ]
+  },
+  {
+    "id": "834ee4ef.5fe588",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2730.959966659546,
+    "y": 1396.0713243484497,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "4979a718.8325b8"
+      ]
+    ]
+  },
+  {
+    "id": "4979a718.8325b8",
+    "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 (site) not found in service-data\" />\n",
+    "comments": "",
+    "x": 2879.388921737671,
+    "y": 1398.2143306732178,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "ab60af44.1fc14",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3254.531717300415,
+    "y": 1299.833924293518,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "1aaf3b5d.3c7645"
+      ]
+    ]
+  },
+  {
+    "id": "1aaf3b5d.3c7645",
+    "type": "set",
+    "name": "set tmp.sitevidx ",
+    "xml": "<set>\n<parameter name='tmp.sitevidx' value='`$arvidx`' />\n\n",
+    "comments": "",
+    "x": 3409.531400680542,
+    "y": 1299.8339233398438,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "409305d5.93be5c",
+    "type": "for",
+    "name": "for loop deviceidx - Get wan port ID from servicedata",
+    "xml": "<for index=\"deviceidx\" start=\"0\" end=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.devicevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2703.5333099365234,
+    "y": 1781.8342418670654,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "f3da0084.2ed3d"
+      ]
+    ]
+  },
+  {
+    "id": "490623bf.f5be2c",
+    "type": "switchNode",
+    "name": "switch deviceId",
+    "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.devicevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].name == 'deviceId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3188.5345611572266,
+    "y": 1712.8350954055786,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "fe8795f9.d93fb8"
+      ]
+    ]
+  },
+  {
+    "id": "fe8795f9.d93fb8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3339.5349349975586,
+    "y": 1709.8353395462036,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "9a7de836.6030f8"
+      ]
+    ]
+  },
+  {
+    "id": "9a7de836.6030f8",
+    "type": "set",
+    "name": "set prop.hub.deviceId",
+    "xml": "<set>\n<parameter name='prop.hub.deviceId' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.devicevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />\n",
+    "comments": "",
+    "x": 3514.535182952881,
+    "y": 1709.4358644485474,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "e6c5f470.5c1408",
+    "type": "for",
+    "name": "for loop siteidx - Get site ID from servicedata",
+    "xml": "<for index=\"siteidx\" start=\"0\" end=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2670.0331268310547,
+    "y": 1843.8342113494873,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "ee5b33c3.334cb"
+      ]
+    ]
+  },
+  {
+    "id": "f647b09c.a81c",
+    "type": "comment",
+    "name": "Add route src->dst, dst->src",
+    "info": "",
+    "comments": "",
+    "x": 3005.668716430664,
+    "y": 1860.6360301971436,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "2ed283b9.4ced6c",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2115.334228515625,
+    "y": 1221.968747138977,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "3250db4e.aae6c4",
+        "372c4b67.d587a4",
+        "8238d072.258df",
+        "31ca4096.fa657",
+        "a06e1b02.e2dcb8",
+        "5f595aa8.cf14c4"
+      ]
+    ]
+  },
+  {
+    "id": "8238d072.258df",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2370.333984375,
+    "y": 1358.3021211624146,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "c2ac42b9.22b8d",
+        "aae2a2df.f7cc",
+        "494b8c51.d5a454"
+      ]
+    ]
+  },
+  {
+    "id": "6ddb13cd.d02b7c",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2390.3350219726562,
+    "y": 1730.635643005371,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "56fbb125.4613b",
+        "409305d5.93be5c",
+        "e6c5f470.5c1408",
+        "74f0a419.baab7c",
+        "f5ec2256.55a71"
+      ]
+    ]
+  },
+  {
+    "id": "53da0cfd.4e5c84",
+    "type": "set",
+    "name": "Add prop.spoke.route",
+    "xml": "<set>\n<parameter name='prop.route.id' value='`$prop.spokeRouteId`' />\n<parameter name='prop.route.vpnId' value='`$prop.vpnId`' />\n<parameter name='prop.route.siteId' value='`$prop.spoke.siteId`' />\n<parameter name='prop.route.deviceId' value='`$prop.spoke.deviceId`' />\n<parameter name='prop.route.providerIpAddress' value='`$prop.spoke.providerIpAddress`' />\n<parameter name='prop.route.wanportId' value='`$prop.hub.wanPortId`' />\n<parameter name='prop.route.ipAddress' value='`$prop.spoke.ipAddress`' />\n\n\n\n\n",
+    "comments": "",
+    "x": 3391.533639907837,
+    "y": 2639.3345935344696,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "b99b3963.4b1368",
+    "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": 340.3343048095703,
+    "y": 1096.3343391418457,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "9692ac6c.5b398",
+    "type": "execute",
+    "name": "generate connection attachment AR url ",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar.allotted-resource-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1389.6672058105469,
+    "y": 158.30183696746826,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a88c4be0.5a96c8",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1516.667236328125,
+    "y": 206.3018274307251,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "43ba54c6.bea31c",
+        "b9e47095.da1a3"
+      ]
+    ]
+  },
+  {
+    "id": "fa697270.9a4c6",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get parent service data",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-parent-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-psd\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1741.0013885498047,
+    "y": 540.3021411895752,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "bc09ac7e.2dfa1",
+        "f0b156c6.5db3a8"
+      ]
+    ]
+  },
+  {
+    "id": "9c710564.f70308",
+    "type": "execute",
+    "name": "generate connection attachment parent url ",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-parent-connection\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.parent-service-instance-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1718.0010375976562,
+    "y": 486.30206871032715,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "b113d667.018288",
+    "type": "comment",
+    "name": "full mesh do nothing",
+    "info": "",
+    "comments": "",
+    "x": 1552.667839050293,
+    "y": 697.3021068572998,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "9c493d3a.013fd",
+    "type": "comment",
+    "name": "hub-spoke",
+    "info": "",
+    "comments": "",
+    "x": 2553.6672401428223,
+    "y": 794.3019967079163,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "9540984f.e97fb8",
+    "type": "execute",
+    "name": "generate connection attachment AR url ",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar.provided-allotted-resource-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2226.0003929138184,
+    "y": 945.3019919395447,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "b384d688.b2dd28",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-providedAr\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2357.000473022461,
+    "y": 984.9686217308044,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "7d6e3904.ff8ae8",
+        "b0148b51.89ec18"
+      ]
+    ]
+  },
+  {
+    "id": "a06e1b02.e2dcb8",
+    "type": "execute",
+    "name": "generate service data url",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$prop.ar-service-instance-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2407.504367828369,
+    "y": 1186.3058919906616,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "5f595aa8.cf14c4",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get service data of allotted resource",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-arsd\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2523.5045013427734,
+    "y": 1223.3057832717896,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "f944f364.78c47",
+        "e08d96d8.e1bd48"
+      ]
+    ]
+  },
+  {
+    "id": "10c92564.7d8f7b",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2287.5000648498535,
+    "y": 1108.8018560409546,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "2ed283b9.4ced6c"
+      ]
+    ]
+  },
+  {
+    "id": "d2d633b9.72ffd",
+    "type": "outcomeFalse",
+    "name": "false",
+    "xml": "<outcome value='false'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2293.500312805176,
+    "y": 1065.801947593689,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "a9370615.1e0a18"
+      ]
+    ]
+  },
+  {
+    "id": "c22c6bf7.654618",
+    "type": "for",
+    "name": "for loop roleidx - Get role from allotted resource",
+    "xml": "<for index=\"roleidx\" start=\"0\" end=\"`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2868.5008697509766,
+    "y": 213.30177307128906,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "1e62939f.a940cc"
+      ]
+    ]
+  },
+  {
+    "id": "1e62939f.a940cc",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3127.5011825561523,
+    "y": 212.3020887374878,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "6368cbef.0c0714"
+      ]
+    ]
+  },
+  {
+    "id": "6368cbef.0c0714",
+    "type": "switchNode",
+    "name": "switch Role",
+    "xml": "<switch test=\"`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$roleidx].name == 'role'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3276.501194000244,
+    "y": 213.3019256591797,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "602b9a1d.1f8fa4"
+      ]
+    ]
+  },
+  {
+    "id": "9865389f.19f678",
+    "type": "set",
+    "name": "set prop.spoke.role",
+    "xml": "<set>\n<parameter name='prop.spoke.role' value='`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$roleidx].value`' />\n",
+    "comments": "",
+    "x": 3581.501754760742,
+    "y": 210.90183353424072,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "602b9a1d.1f8fa4",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3412.00101852417,
+    "y": 210.30176544189453,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "9865389f.19f678"
+      ]
+    ]
+  },
+  {
+    "id": "c78c1bff.286648",
+    "type": "switchNode",
+    "name": "switch spoke",
+    "xml": "<switch test=\"`$prop.spoke.role == 'spoke'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1304.000373840332,
+    "y": 357.301700592041,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "45674b4e.4d0684"
+      ]
+    ]
+  },
+  {
+    "id": "45674b4e.4d0684",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1445.000129699707,
+    "y": 358.30173778533936,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "44bfeb73.8a2794"
+      ]
+    ]
+  },
+  {
+    "id": "c6974a98.f8b038",
+    "type": "for",
+    "name": "for i.. service-data.vnfs.vnf_length[]",
+    "xml": "<for index='i' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1717.5006561279297,
+    "y": 412.3017330169678,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "74ae021f.4e878c"
+      ]
+    ]
+  },
+  {
+    "id": "74ae021f.4e878c",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2051.166847229004,
+    "y": 356.3016633987427,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "e5568bc9.6c4a18",
+        "10bef5c5.4c95ea",
+        "d2557f72.d615e"
+      ]
+    ]
+  },
+  {
+    "id": "e5568bc9.6c4a18",
+    "type": "switchNode",
+    "name": "switch ActivateSDWANPortInstance",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSDWANPortInstance'`\">\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2322.1668853759766,
+    "y": 302.3025498390198,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "730af204.11fefc"
+      ]
+    ]
+  },
+  {
+    "id": "730af204.11fefc",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2535.166648864746,
+    "y": 303.3025527000427,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "90e7c80d.95a148"
+      ]
+    ]
+  },
+  {
+    "id": "90e7c80d.95a148",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2684.0003929138184,
+    "y": 305.3017420768738,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "993b2158.a7204"
+      ]
+    ]
+  },
+  {
+    "id": "993b2158.a7204",
+    "type": "for",
+    "name": "for loop widx - Get wan port ID from servicedata",
+    "xml": "<for index=\"widx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2957.000343322754,
+    "y": 303.6689600944519,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "a8fb6ac2.404148"
+      ]
+    ]
+  },
+  {
+    "id": "a8fb6ac2.404148",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3226.0012702941895,
+    "y": 302.66920614242554,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "f56203d5.44648",
+        "844331fb.21709",
+        "c8a276bd.330448",
+        "878dc9b3.754498"
+      ]
+    ]
+  },
+  {
+    "id": "f56203d5.44648",
+    "type": "switchNode",
+    "name": "switch transportNetworkName",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].name == 'transportNetworkName'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3469.0023040771484,
+    "y": 257.6697793006897,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "c1622f74.5acec"
+      ]
+    ]
+  },
+  {
+    "id": "c1622f74.5acec",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3669.0020790100098,
+    "y": 257.6699414253235,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "484c0f29.65918"
+      ]
+    ]
+  },
+  {
+    "id": "484c0f29.65918",
+    "type": "set",
+    "name": "set prop.spoke.transportNetworkName",
+    "xml": "<set>\n<parameter name='prop.spoke.transportNetworkName' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].value`' />\n",
+    "comments": "",
+    "x": 3896.002815246582,
+    "y": 259.2705235481262,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "44bfeb73.8a2794",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1197.9694213867188,
+    "y": 668.2706489562988,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "c6974a98.f8b038",
+        "9c710564.f70308",
+        "fa697270.9a4c6",
+        "c9fcea4f.295c68",
+        "f17464be.205b38",
+        "3aec24fb.014f5c",
+        "427fd71a.a641b8",
+        "3da7a5e7.865d8a"
+      ]
+    ]
+  },
+  {
+    "id": "10bef5c5.4c95ea",
+    "type": "switchNode",
+    "name": "switch ActivateSDWANDeviceInstance",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\">\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2314.5003204345703,
+    "y": 376.3017544746399,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "3b1b3b34.55a514"
+      ]
+    ]
+  },
+  {
+    "id": "3b1b3b34.55a514",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2533.5000705718994,
+    "y": 377.30173921585083,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "371f6a10.c50d56"
+      ]
+    ]
+  },
+  {
+    "id": "371f6a10.c50d56",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2684.3340606689453,
+    "y": 383.3009305000305,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "53996c8e.9b7f34"
+      ]
+    ]
+  },
+  {
+    "id": "53996c8e.9b7f34",
+    "type": "for",
+    "name": "for loop didx - Get device ID from servicedata",
+    "xml": "<for index=\"didx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2943.334312438965,
+    "y": 385.66822576522827,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "f263db9e.f44158"
+      ]
+    ]
+  },
+  {
+    "id": "f263db9e.f44158",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3229.334819793701,
+    "y": 418.66841077804565,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "5249df60.eaa65"
+      ]
+    ]
+  },
+  {
+    "id": "5249df60.eaa65",
+    "type": "switchNode",
+    "name": "switch deviceId",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].name == 'deviceId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3412.3357315063477,
+    "y": 418.66902112960815,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "78ddeb0.2bf8314"
+      ]
+    ]
+  },
+  {
+    "id": "78ddeb0.2bf8314",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3612.335506439209,
+    "y": 418.66918325424194,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "842e3e5c.4cad"
+      ]
+    ]
+  },
+  {
+    "id": "842e3e5c.4cad",
+    "type": "set",
+    "name": "set prop.spoke.deviceId",
+    "xml": "<set>\n<parameter name='prop.spoke.deviceId' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].value`' />\n",
+    "comments": "",
+    "x": 3807.3361892700195,
+    "y": 415.26976442337036,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "d2557f72.d615e",
+    "type": "switchNode",
+    "name": "switch ActivateSiteInstance",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSiteInstance'`\">\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2293.5004348754883,
+    "y": 437.30178594589233,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "1c713318.89265d"
+      ]
+    ]
+  },
+  {
+    "id": "1c713318.89265d",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2527.500072479248,
+    "y": 438.3017258644104,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "ed702e21.07c0b"
+      ]
+    ]
+  },
+  {
+    "id": "ed702e21.07c0b",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2679.3340606689453,
+    "y": 460.30096197128296,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "8ec1a47c.55b508",
+        "68bdc58a.c36e2c"
+      ]
+    ]
+  },
+  {
+    "id": "8ec1a47c.55b508",
+    "type": "for",
+    "name": "for loop widx - Get wan site ID from servicedata",
+    "xml": "<for index=\"sidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2960.3338928222656,
+    "y": 459.668164730072,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "edd6a6a1.36e3f8"
+      ]
+    ]
+  },
+  {
+    "id": "edd6a6a1.36e3f8",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3229.334819793701,
+    "y": 458.66841077804565,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "12472c4.5235bd4",
+        "96a23bd5.060968",
+        "af471c20.d9cb7"
+      ]
+    ]
+  },
+  {
+    "id": "12472c4.5235bd4",
+    "type": "switchNode",
+    "name": "switch siteId",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'siteId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3418.33602142334,
+    "y": 508.66908264160156,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "3940a3b0.f06d3c"
+      ]
+    ]
+  },
+  {
+    "id": "3940a3b0.f06d3c",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3618.3354988098145,
+    "y": 496.66919708251953,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "bc674b05.78b928"
+      ]
+    ]
+  },
+  {
+    "id": "bc674b05.78b928",
+    "type": "set",
+    "name": "set prop.spoke.siteId",
+    "xml": "<set>\n<parameter name='prop.spoke.siteId' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />\n",
+    "comments": "",
+    "x": 3811.336452484131,
+    "y": 503.26982736587524,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "844331fb.21709",
+    "type": "switchNode",
+    "name": "switch wanPortId",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].name == 'wanPortId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3442.5,
+    "y": 294.3018355369568,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "6b71a698.d33fe8"
+      ]
+    ]
+  },
+  {
+    "id": "6b71a698.d33fe8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3672.5000038146973,
+    "y": 294.3019471168518,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "92bbf4e4.47a9a8"
+      ]
+    ]
+  },
+  {
+    "id": "92bbf4e4.47a9a8",
+    "type": "set",
+    "name": "set prop.spoke.wanPortId",
+    "xml": "<set>\n<parameter name='prop.spoke.wanPortId' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].value`' />\n",
+    "comments": "",
+    "x": 3899.5007400512695,
+    "y": 295.90252923965454,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "c8a276bd.330448",
+    "type": "switchNode",
+    "name": "switch providerIpAddress",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].name == 'providerIpAddress'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3460.500160217285,
+    "y": 338.30178594589233,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "adb74c6c.ec9a"
+      ]
+    ]
+  },
+  {
+    "id": "adb74c6c.ec9a",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3660.4999351501465,
+    "y": 338.3019480705261,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "1ca4e423.ffe23c"
+      ]
+    ]
+  },
+  {
+    "id": "1ca4e423.ffe23c",
+    "type": "set",
+    "name": "set prop.spoke.providerIpAddress",
+    "xml": "<set>\n<parameter name='prop.spoke.providerIpAddress' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].value`' />\n",
+    "comments": "",
+    "x": 3887.5006713867188,
+    "y": 339.90253019332886,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "878dc9b3.754498",
+    "type": "switchNode",
+    "name": "switch ipAddress",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].name == 'ipAddress'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3440.499988555908,
+    "y": 377.30182218551636,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "728cf41e.771a8c"
+      ]
+    ]
+  },
+  {
+    "id": "728cf41e.771a8c",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3664.4998168945312,
+    "y": 377.3019394874573,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "dd2dd25f.6f587"
+      ]
+    ]
+  },
+  {
+    "id": "dd2dd25f.6f587",
+    "type": "set",
+    "name": "set prop.spoke.ipAddress",
+    "xml": "<set>\n<parameter name='prop.spoke.ipAddress' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].value`' />\n",
+    "comments": "",
+    "x": 3891.5005531311035,
+    "y": 378.90252161026,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "ad0a3663.ab8598",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1007.9999008178711,
+    "y": 236.50004196166992,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "2acab811.c13ee8",
+        "9692ac6c.5b398",
+        "a88c4be0.5a96c8",
+        "c78c1bff.286648"
+      ]
+    ]
+  },
+  {
+    "id": "688f910f.1fade",
+    "type": "comment",
+    "name": "get spoke device,site,wanport info",
+    "info": "",
+    "comments": "",
+    "x": 1764.96875,
+    "y": 359.96874713897705,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "74cacf6d.c151",
+    "type": "comment",
+    "name": "Add routes only on activation of spoke Attach site",
+    "info": "",
+    "comments": "",
+    "x": 1425.4999160766602,
+    "y": 303.00006103515625,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "3d6571cf.a0a37e",
+    "type": "comment",
+    "name": "Loop for all the hub allotted resources, get respective service data and get vnfs info",
+    "info": "",
+    "comments": "",
+    "x": 2181.5,
+    "y": 798.500057220459,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "ee5b33c3.334cb",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2945.4998321533203,
+    "y": 1819.000135421753,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "c17add8f.67a28",
+        "229bba7c.508e96"
+      ]
+    ]
+  },
+  {
+    "id": "f3da0084.2ed3d",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3012.4998321533203,
+    "y": 1715.0000114440918,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "490623bf.f5be2c"
+      ]
+    ]
+  },
+  {
+    "id": "c17add8f.67a28",
+    "type": "switchNode",
+    "name": "switch siteId",
+    "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3122.499641418457,
+    "y": 1790.9998016357422,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "dbd1bbe9.db4a58"
+      ]
+    ]
+  },
+  {
+    "id": "dbd1bbe9.db4a58",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3273.500011444092,
+    "y": 1789.999984741211,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "5c117986.38cf28"
+      ]
+    ]
+  },
+  {
+    "id": "5c117986.38cf28",
+    "type": "set",
+    "name": "set prop.hub.siteId",
+    "xml": "<set>\n<parameter name='prop.hub.siteId' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\n",
+    "comments": "",
+    "x": 3445.5000190734863,
+    "y": 1787.6005535125732,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "74f0a419.baab7c",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2598.9997482299805,
+    "y": 2143.0004453659058,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "8a79d931.696778",
+        "c7717ba5.717ea8"
+      ]
+    ]
+  },
+  {
+    "id": "8a79d931.696778",
+    "type": "outcome",
+    "name": "ActivateSDWANAttachmentInstance",
+    "xml": "<outcome value='ActivateSDWANAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2869.0271530151367,
+    "y": 1954.0314779281616,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "c591ad14.b9dd7"
+      ]
+    ]
+  },
+  {
+    "id": "a7156e9f.23a1b",
+    "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'`\" />\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=\"underlayHubResp\"/>\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": 3457.500099182129,
+    "y": 1883.0003824234009,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "3761bb2b.afc314",
+        "4ebe8079.3f11c"
+      ]
+    ]
+  },
+  {
+    "id": "4ebe8079.3f11c",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3704.499927520752,
+    "y": 1862.0002145767212,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "78300110.b43b4"
+      ]
+    ]
+  },
+  {
+    "id": "3761bb2b.afc314",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3702.4996070861816,
+    "y": 1818.000205039978,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "722e84e9.8ab54c"
+      ]
+    ]
+  },
+  {
+    "id": "e4f1543b.8ca618",
+    "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 sdwan hub route underlay rest api\" />\n",
+    "comments": "",
+    "x": 3980.500762939453,
+    "y": 1796.0005054473877,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "54f01fb1.eab0c",
+    "type": "set",
+    "name": "Add prop.hub.route",
+    "xml": "<set>\n<parameter name='prop.route.vpnId' value='`$prop.vpnId`' />\n<parameter name='prop.route.siteId' value='`$prop.hub.siteId`' />\n<parameter name='prop.route.deviceId' value='`$prop.hub.deviceId`' />\n<parameter name='prop.route.providerIpAddress' value='`$prop.hub.providerIpAddress`' />\n<parameter name='prop.route.wanportId' value='`$prop.spoke.wanPortId`' />\n<parameter name='prop.route.ipAddress' value='`$prop.hub.ipAddress`' />\n\n\n",
+    "comments": "",
+    "x": 3392.8337020874023,
+    "y": 1853.666922569275,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "b0e30676.c2a618",
+    "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'`\" />\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": 3474.834144592285,
+    "y": 2088.6675004959106,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "ad299c2d.b630e",
+        "51decbd4.61a7c4"
+      ]
+    ]
+  },
+  {
+    "id": "51decbd4.61a7c4",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3726.83424949646,
+    "y": 2076.667459964752,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "b3f4e792.e33638"
+      ]
+    ]
+  },
+  {
+    "id": "ad299c2d.b630e",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3724.8339290618896,
+    "y": 2032.667450428009,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "e6f4e702.6d5b68"
+      ]
+    ]
+  },
+  {
+    "id": "c9cf02e0.97d29",
+    "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 sdwan spoke route underlay rest api\" />\n",
+    "comments": "",
+    "x": 3879.8350524902344,
+    "y": 1982.6677513122559,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "2726f205.443f6e",
+    "type": "set",
+    "name": "Add prop.spoke.route",
+    "xml": "<set>\n<parameter name='prop.route.vpnId' value='`$prop.vpnId`' />\n<parameter name='prop.route.siteId' value='`$prop.spoke.siteId`' />\n<parameter name='prop.route.deviceId' value='`$prop.spoke.deviceId`' />\n<parameter name='prop.route.providerIpAddress' value='`$prop.spoke.providerIpAddress`' />\n<parameter name='prop.route.wanportId' value='`$prop.hub.wanPortId`' />                                                \n<parameter name='prop.route.ipAddress' value='`$prop.spoke.ipAddress`' />\n\n\n",
+    "comments": "",
+    "x": 3415.6980171203613,
+    "y": 2051.3642127513885,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "72173b95.fc02b4",
+    "type": "set",
+    "name": "set  prop.underlay.routeIds",
+    "xml": "<set>\n<parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubSiteId' value='`$prop.hub.siteId`' />\n<!--parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].spokeSiteId' value='`$prop.spoke.siteId`' /-->\n<parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubRouteId' value='`$underlayHubResp.success[0].id`' />\n<parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].spokeRouteId' value='`$underlayspokeResp.success[0].id`' />\n\n\n\n",
+    "comments": "",
+    "x": 3425.665542602539,
+    "y": 2211.0309886932373,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "c591ad14.b9dd7",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3104.999671936035,
+    "y": 1951.4999113082886,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "54f01fb1.eab0c",
+        "2726f205.443f6e",
+        "72173b95.fc02b4",
+        "b0e30676.c2a618",
+        "a7156e9f.23a1b",
+        "541b6902.dd6b58",
+        "77b69608.7345f8",
+        "75459c33.78c964",
+        "d5a685ee.a4f698",
+        "f073f95f.7848a8"
+      ]
+    ]
+  },
+  {
+    "id": "58ea94fe.88fe4c",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3136.9997749328613,
+    "y": 2593.5002613067627,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "31f4dc9.4459824",
+        "53da0cfd.4e5c84",
+        "7c9721cc.23414",
+        "bd1192a1.70e0b",
+        "de488f87.4a5ee",
+        "cc49685f.b2d5d8",
+        "7b57d512.398e6c"
+      ]
+    ]
+  },
+  {
+    "id": "c7717ba5.717ea8",
+    "type": "outcome",
+    "name": "DeactivateSDWANAttachmentInstance",
+    "xml": "<outcome value='DeactivateSDWANAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2885.4998321533203,
+    "y": 2587.500072479248,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "58ea94fe.88fe4c"
+      ]
+    ]
+  },
+  {
+    "id": "77b69608.7345f8",
+    "type": "set",
+    "name": "Add sites to list and update length",
+    "xml": "<set>\n<parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].hubSiteName' value='`$prop.hub.siteName`' />\n<parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].hubSiteId' value='`$prop.hub.siteId`' />\n<parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].spokeSiteName' value='`$prop.spoke.siteName`' />\n<parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].spokeSiteId' value='`$prop.spoke.siteId`' />\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
+    "comments": "",
+    "x": 3430.0318298339844,
+    "y": 2336.0318689346313,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "fd537752.3855d8",
+    "type": "comment",
+    "name": "save hubsiteIds and spoke siteIds for provision",
+    "info": "",
+    "comments": "",
+    "x": 3462.0322036743164,
+    "y": 2292.0317430496216,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "96a23bd5.060968",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3419.031005859375,
+    "y": 458.03125,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "7dad2dd.add95d4"
+      ]
+    ]
+  },
+  {
+    "id": "7dad2dd.add95d4",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3619.0307807922363,
+    "y": 458.0314121246338,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "deeabd26.1be7b"
+      ]
+    ]
+  },
+  {
+    "id": "deeabd26.1be7b",
+    "type": "set",
+    "name": "set prop.spoke.siteName",
+    "xml": "<set>\n<parameter name='prop.spoke.siteName' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />\n",
+    "comments": "",
+    "x": 3807.0315856933594,
+    "y": 456.63202571868896,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "229bba7c.508e96",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3121.0310287475586,
+    "y": 1757.5311088562012,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "980f0d4f.cfeac"
+      ]
+    ]
+  },
+  {
+    "id": "980f0d4f.cfeac",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3272.0313987731934,
+    "y": 1756.53129196167,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "bc242aa.e7cd1d8"
+      ]
+    ]
+  },
+  {
+    "id": "bc242aa.e7cd1d8",
+    "type": "set",
+    "name": "set prop.hub.siteName",
+    "xml": "<set>\n<parameter name='prop.hub.siteName' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />\n",
+    "comments": "",
+    "x": 3444.031406402588,
+    "y": 1754.1318607330322,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "962ad5c3.0da1a8",
+    "type": "set",
+    "name": "set prop.provision.siteIds_length=0",
+    "xml": "<set>\n<parameter name='prop.provision.siteIds_length' value='0' />\n\n\n\n",
+    "comments": "",
+    "x": 444.03126525878906,
+    "y": 344.0312547683716,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "ba15291d.217778",
+    "type": "execute",
+    "name": "execute RestApiCallNode site provision urls",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-site-provision.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/sites/provision-urls'`\" />\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=\"provisionUrlRsp\"/>\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": 796.0312957763672,
+    "y": 776.0314712524414,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "863c45b0.87f298",
+        "e8831f50.130f7"
+      ]
+    ]
+  },
+  {
+    "id": "e8831f50.130f7",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1060.0315551757812,
+    "y": 798.0315160751343,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "863c45b0.87f298",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1061.0313415527344,
+    "y": 755.0314540863037,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "f11e1d9d.f9f63"
+      ]
+    ]
+  },
+  {
+    "id": "f11e1d9d.f9f63",
+    "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 provision url rest api\" />\n",
+    "comments": "",
+    "x": 1206.0318641662598,
+    "y": 753.0314922332764,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "da982ae7.c19088",
+    "type": "for",
+    "name": "for providx..prop.provision.siteIds[]",
+    "xml": "<for index='providx' start='0' end='`$prop.provision.siteIds_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 437.0312957763672,
+    "y": 548.0312948226929,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "2d873e7f.4b1bc2"
+      ]
+    ]
+  },
+  {
+    "id": "2d873e7f.4b1bc2",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 461.0313377380371,
+    "y": 758.031268119812,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "50fee5f7.6d296c",
+        "ba15291d.217778",
+        "89a54eb6.e2142"
+      ]
+    ]
+  },
+  {
+    "id": "50fee5f7.6d296c",
+    "type": "set",
+    "name": "set prop.spoke.hubSiteId, spokeSiteId",
+    "xml": "<set>\n<parameter name='prop.provision.hubSitename' value='`$prop.provision.siteIds[$providx].hubSiteName`' />\n<parameter name='prop.provision.spokeSitename' value='`$prop.provision.siteIds[$providx].spokeSiteName`' />\n<parameter name='prop.provision.hubspokesite[0]' value='`$prop.provision.siteIds[$providx].hubSiteId`' />\n<parameter name='prop.provision.hubspokesite[1]' value='`$prop.provision.siteIds[$providx].spokeSiteId`' />\n<parameter name='prop.provision.hubspokesite_length' value='2' />\n",
+    "comments": "",
+    "x": 772.0339965820312,
+    "y": 634.6329832077026,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "89a54eb6.e2142",
+    "type": "record",
+    "name": "record provision url response to the file",
+    "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"`'/opt/opendaylight/current/data/log/' + 'HUB-' + $prop.provision.hubSitename + '-SPOKE-' + $prop.provision.spokeSitename + '-provisionUrl'`\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value='`$provisionUrlRsp.success[0].url`'/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 768.0313720703125,
+    "y": 870.0313358306885,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "94a7fcab.3f18",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2510.031482696533,
+    "y": 1025.0313262939453,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "e9ad6cc9.abb1"
+      ]
+    ]
+  },
+  {
+    "id": "d063fbaf.bf9cb8",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1990.0311584472656,
+    "y": 588.0313091278076,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "4b3c3b19.b12c44"
+      ]
+    ]
+  },
+  {
+    "id": "a24202ba.c8c7c",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1934.0313262939453,
+    "y": 679.0312175750732,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "1134832c.af388d",
+        "e393fec8.f9974"
+      ]
+    ]
+  },
+  {
+    "id": "541b6902.dd6b58",
+    "type": "set",
+    "name": "set prop.underlay.routeIds_length++",
+    "xml": "<set>\n<parameter name='prop.underlay.routeIds_length' value='`$prop.underlay.routeIds_length + 1`' />\n\n\n\n\n",
+    "comments": "",
+    "x": 3455.0011596679688,
+    "y": 2247.250065803528,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "75459c33.78c964",
+    "type": "set",
+    "name": "Update prop.provision.siteIds_length",
+    "xml": "<set>\n<parameter name='prop.provision.siteIds_length' value='`$prop.provision.siteIds_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n",
+    "comments": "",
+    "x": 3438.5009002685547,
+    "y": 2371.2501611709595,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "68bdc58a.c36e2c",
+    "type": "set",
+    "name": "set prop.spoke.siteidx",
+    "xml": "<set>\n<parameter name='prop.spoke.siteidx' value='`$i`' />\n\n",
+    "comments": "",
+    "x": 2878.7501907348633,
+    "y": 424.0000286102295,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "8706bf22.e777d",
+    "type": "set",
+    "name": "set  underlay route ids to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value=\"underlayRouteIds\" />\n<parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$tmp.routeString`' />\n\n\n",
+    "comments": "",
+    "x": 1901.0006408691406,
+    "y": 1911.0003986358643,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "546d6174.f994f",
+    "type": "set",
+    "name": "set prop.underlay.routeIds_length=0",
+    "xml": "<set>\n<parameter name='prop.underlay.routeIds_length' value='0' />\n\n\n\n",
+    "comments": "",
+    "x": 448.9961242675781,
+    "y": 295.9961128234863,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "de488f87.4a5ee",
+    "type": "for",
+    "name": "for loop uidx - Get route Id from prop.underlay.routeIds",
+    "xml": "<for index=\"uidx\" start=\"0\" end=\"`$prop.underlay.routeIds_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3492.6630325317383,
+    "y": 2466.3295001983643,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "b94dca1b.799658"
+      ]
+    ]
+  },
+  {
+    "id": "b94dca1b.799658",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3784.3297271728516,
+    "y": 2466.3295001983643,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "f30a5bcf.2eba98"
+      ]
+    ]
+  },
+  {
+    "id": "f30a5bcf.2eba98",
+    "type": "switchNode",
+    "name": "switch prop.hub.siteId",
+    "xml": "<switch test=\"`$prop.underlay.routeIds[$uidx].hubSiteId == $prop.hub.siteId`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3973.3297424316406,
+    "y": 2466.3296632766724,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "9e731b50.667688"
+      ]
+    ]
+  },
+  {
+    "id": "9e731b50.667688",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4144.329177856445,
+    "y": 2466.329662322998,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "34e4e4e1.bf23ec"
+      ]
+    ]
+  },
+  {
+    "id": "34e4e4e1.bf23ec",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 4298.329177856445,
+    "y": 2470.3296699523926,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "7f01b9d0.ef7bc8"
+      ]
+    ]
+  },
+  {
+    "id": "7f01b9d0.ef7bc8",
+    "type": "set",
+    "name": "set prop.hubRouteId prop.spokeRouteId",
+    "xml": "<set>\n<parameter name='prop.hubRouteId' value='`$prop.underlay.routeIds[$uidx].hubRouteId`' />\n<parameter name='prop.spokeRouteId' value='`$prop.underlay.routeIds[$uidx].spokeRouteId`' />\n",
+    "comments": "",
+    "x": 4384.32918548584,
+    "y": 2542.32967376709,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "af471c20.d9cb7",
+    "type": "switchNode",
+    "name": "switch underlayRouteIds",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'underlayRouteIds'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3423.99609375,
+    "y": 562.6627197265625,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "3c3b3752.f46c08"
+      ]
+    ]
+  },
+  {
+    "id": "3c3b3752.f46c08",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3623.9955711364746,
+    "y": 550.6628341674805,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "981ac32e.958e4"
+      ]
+    ]
+  },
+  {
+    "id": "a4a704fd.090458",
+    "type": "set",
+    "name": "set prop.underlay.routeIds",
+    "xml": "<set>\n<parameter name='prop.underlay.routeIdsString' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />\n",
+    "comments": "",
+    "x": 3994.996971130371,
+    "y": 550.2635440826416,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "3da7a5e7.865d8a",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1110.9963836669922,
+    "y": 2002.329628944397,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "1f1cb6fc.4dc6b9",
+        "a206c36a.2d39f"
+      ]
+    ]
+  },
+  {
+    "id": "1f1cb6fc.4dc6b9",
+    "type": "outcome",
+    "name": "ActivateSDWANAttachmentInstance",
+    "xml": "<outcome value='ActivateSDWANAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1374.9964294433594,
+    "y": 1957.329626083374,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "3f4012bd.4d4d2e"
+      ]
+    ]
+  },
+  {
+    "id": "3f4012bd.4d4d2e",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1616.9689407348633,
+    "y": 1953.7983770370483,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "8706bf22.e777d",
+        "cb472a7b.dc7d38",
+        "879af91.a400b08",
+        "93dcb194.e6988"
+      ]
+    ]
+  },
+  {
+    "id": "1834840f.e68edc",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1620.9689292907715,
+    "y": 2037.7985458374023,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "92497dd5.46538"
+      ]
+    ]
+  },
+  {
+    "id": "a206c36a.2d39f",
+    "type": "outcome",
+    "name": "DeactivateSDWANAttachmentInstance",
+    "xml": "<outcome value='DeactivateSDWANAttachmentInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1372.4690704345703,
+    "y": 2039.7983827590942,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "1834840f.e68edc"
+      ]
+    ]
+  },
+  {
+    "id": "92497dd5.46538",
+    "type": "set",
+    "name": "set input parameter length -1",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length - 1`' />\n\n\n\n\n",
+    "comments": "",
+    "x": 1849.6626281738281,
+    "y": 2036.32963180542,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "9af7165e.2d5758",
+    "type": "comment",
+    "name": "Get route routes IDs",
+    "info": "",
+    "comments": "",
+    "x": 3392.3294982910156,
+    "y": 2427.6627368927,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "cb472a7b.dc7d38",
+    "type": "set",
+    "name": "set  underlay route ids to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\n\n\n\n\n",
+    "comments": "",
+    "x": 1890.329574584961,
+    "y": 1985.662672996521,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "879af91.a400b08",
+    "type": "for",
+    "name": "for jidx paramidx - Get topology from servicedata",
+    "xml": "<for index=\"jidx\" start=\"0\" end=\"`$prop.underlay.routeIds_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1979.3294982910156,
+    "y": 1532.329444885254,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "cdfd8790.f983d8"
+      ]
+    ]
+  },
+  {
+    "id": "3e5fe1f4.4771be",
+    "type": "execute",
+    "name": "execute concat",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\n    <parameter name=\"source\" value='`$tmp.concat`'/>\n    <parameter name=\"outputPath\" value=\"tmp.concat1\"/>\n    <parameter name=\"target\" value='`$prop.underlay.routeIds[$jidx].hubRouteId`'/>\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2163.329833984375,
+    "y": 1665.9966478347778,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "328df7f4.d9d5f8",
+    "type": "execute",
+    "name": "execute concat",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\n    <parameter name=\"source\" value='`$prop.underlay.routeIds[$jidx].hubSiteId`'/>\n    <parameter name=\"outputPath\" value=\"tmp.concat\"/>\n    <parameter name=\"target\" value=\",\"/>\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2173.3298263549805,
+    "y": 1618.6629858016968,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "cdfd8790.f983d8",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1886.329517364502,
+    "y": 1717.6627750396729,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "328df7f4.d9d5f8",
+        "3e5fe1f4.4771be",
+        "413e65c4.2ce4ac",
+        "ce595947.f7b1e8",
+        "41c2276f.7ab7c8",
+        "a2941eac.dd47a"
+      ]
+    ]
+  },
+  {
+    "id": "413e65c4.2ce4ac",
+    "type": "execute",
+    "name": "execute concat",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\n    <parameter name=\"source\" value='`$tmp.concat1`'/>\n    <parameter name=\"outputPath\" value=\"tmp.concat2\"/>\n    <parameter name=\"target\" value=\",\"/>\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2170.3295364379883,
+    "y": 1705.6628789901733,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "ce595947.f7b1e8",
+    "type": "execute",
+    "name": "execute concat",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\n    <parameter name=\"source\" value='`$tmp.concat2`'/>\n    <parameter name=\"outputPath\" value=\"tmp.concat3\"/>\n    <parameter name=\"target\" value='`$prop.underlay.routeIds[$jidx].spokeRouteId`'/>\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2170.3295364379883,
+    "y": 1741.6628789901733,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "41c2276f.7ab7c8",
+    "type": "execute",
+    "name": "execute concat",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\n    <parameter name=\"source\" value='`$tmp.concat3`'/>\n    <parameter name=\"outputPath\" value=\"tmp.concat4\"/>\n    <parameter name=\"target\" value=\" | \"/>\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2163.3295364379883,
+    "y": 1781.9962530136108,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a2941eac.dd47a",
+    "type": "execute",
+    "name": "execute concat",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\n    <parameter name=\"source\" value='`$tmp.routeString`'/>\n    <parameter name=\"outputPath\" value=\"tmp.routeString\"/>\n    <parameter name=\"target\" value='`$tmp.concat4`'/>\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2166.329475402832,
+    "y": 1836.6627922058105,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "93dcb194.e6988",
+    "type": "set",
+    "name": "Set tmp.routeString",
+    "xml": "<set>\n<parameter name='tmp.routeString' value=\"\" />\n\n",
+    "comments": "",
+    "x": 1883.3294982910156,
+    "y": 1473.6627759933472,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "981ac32e.958e4",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3771.9963188171387,
+    "y": 596.9961318969727,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "a4a704fd.090458",
+        "474a807.5a3348"
+      ]
+    ]
+  },
+  {
+    "id": "474a807.5a3348",
+    "type": "execute",
+    "name": "execute split |",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.underlay.routeIdsString`'/>\n<parameter name=\"regex\" value=\" | \"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.underlay.routeIdsValue\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3949.9963302612305,
+    "y": 616.9961318969727,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "5c929964.4b8ce8",
+        "acedb986.795fa8"
+      ]
+    ]
+  },
+  {
+    "id": "acedb986.795fa8",
+    "type": "failure",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4126.9963455200195,
+    "y": 597.9961309432983,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "96ac3ef1.0da81"
+      ]
+    ]
+  },
+  {
+    "id": "5c929964.4b8ce8",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4115.9963455200195,
+    "y": 645.996132850647,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "90fc0aec.112218"
+      ]
+    ]
+  },
+  {
+    "id": "62992e2c.a242f",
+    "type": "set",
+    "name": "set ipAddress prefixLength",
+    "xml": "<set>\n<parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubSiteId' value='`$prop.underlay.routeIdsValues[0]`' />\n<parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubRouteId' value='`$prop.underlay.routeIdsValues[1]`' />\n<parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].spokeRouteId' value='`$prop.underlay.routeIdsValues[2]`' />",
+    "comments": "",
+    "x": 5312.997211456299,
+    "y": 531.9963731765747,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "90fc0aec.112218",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 4245.996349334717,
+    "y": 645.996132850647,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "96ac3ef1.0da81",
+    "type": "for",
+    "name": "for loop ridx ",
+    "xml": "<for index=\"ridx\" start=\"0\" end=\"`$prop.underlay.routeIdsValue_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4272.996032714844,
+    "y": 595.9961309432983,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "94fe12e4.b3272"
+      ]
+    ]
+  },
+  {
+    "id": "94fe12e4.b3272",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 4451.329044342041,
+    "y": 592.9961318969727,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "bc1b307a.e9066"
+      ]
+    ]
+  },
+  {
+    "id": "bc1b307a.e9066",
+    "type": "execute",
+    "name": "execute split ,",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.underlay.routeIdsValue[$ridx]`'/>\n<parameter name=\"regex\" value=\",\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.underlay.routeIdsValues\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4626.329055786133,
+    "y": 591.996129989624,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "479c7699.d03df8",
+        "992b4620.1b2238"
+      ]
+    ]
+  },
+  {
+    "id": "479c7699.d03df8",
+    "type": "failure",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4783.32905960083,
+    "y": 568.9961376190186,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "bee08918.a3dfe8"
+      ]
+    ]
+  },
+  {
+    "id": "992b4620.1b2238",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4772.32905960083,
+    "y": 616.9961395263672,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "1506d77b.2e8159"
+      ]
+    ]
+  },
+  {
+    "id": "1506d77b.2e8159",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 4902.329063415527,
+    "y": 616.9961395263672,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "16eea4b9.2fb1ab",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 5105.661590576172,
+    "y": 547.9962916374207,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "62992e2c.a242f",
+        "2107fdbe.561112"
+      ]
+    ]
+  },
+  {
+    "id": "2107fdbe.561112",
+    "type": "set",
+    "name": "set ipAddress prefixLength",
+    "xml": "<set>\n<parameter name='prop.underlay.routeIds_length' value='`$prop.underlay.routeIds_length + 1`' />\n",
+    "comments": "",
+    "x": 5305.329250335693,
+    "y": 573.996169090271,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "bee08918.a3dfe8",
+    "type": "switchNode",
+    "name": "switch prop.underlay.routeIdsValues_length",
+    "xml": "<switch test='`$prop.underlay.routeIdsValues_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4981.663215637207,
+    "y": 449.9961624145508,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "17f5531.c69dcad",
+        "9cd3fd30.65304"
+      ]
+    ]
+  },
+  {
+    "id": "17f5531.c69dcad",
+    "type": "outcome",
+    "name": "3",
+    "xml": "<outcome value='3'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 5216.632148742676,
+    "y": 486.9648895263672,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "16eea4b9.2fb1ab"
+      ]
+    ]
+  },
+  {
+    "id": "9cd3fd30.65304",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 5233.663074493408,
+    "y": 368.99610328674316,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "ae2b29d0.cafa18"
+      ]
+    ]
+  },
+  {
+    "id": "ae2b29d0.cafa18",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 5394.66259765625,
+    "y": 408.99609375,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "c6ccd14a.96548",
+    "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=\"Error: SOTN resource not found\" />\n    \n",
+    "comments": "",
+    "x": 2874.002540588379,
+    "y": 982.3028502464294,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "92d1a6eb.dd91a8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2860.0020484924316,
+    "y": 930.9692711830139,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "d5a685ee.a4f698",
+    "type": "set",
+    "name": "hardcode hub route",
+    "xml": "<set>\n<parameter name='prop.hub.ipAddress' value=\"10.2.0.2\" />\n<parameter name='prop.hub.providerIpAddress' value=\"10.2.0.0/16\" />\n\n\n",
+    "comments": "",
+    "x": 3394.0038681030273,
+    "y": 1822.0039892196655,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "f073f95f.7848a8",
+    "type": "set",
+    "name": "hardcode spoke route",
+    "xml": "<set>\n<parameter name='prop.spoke.ipAddress' value=\"10.3.0.1\" />\n<parameter name='prop.spoke.providerIpAddress' value=\"10.3.0.0/16\" />",
+    "comments": "",
+    "x": 3409.004409790039,
+    "y": 2020.0039653778076,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "cc49685f.b2d5d8",
+    "type": "set",
+    "name": "hardcode hub route",
+    "xml": "<set>\n<parameter name='prop.hub.ipAddress' value=\"10.2.0.2\" />\n<parameter name='prop.hub.providerIpAddress' value=\"10.2.0.0/16\" />\n\n\n",
+    "comments": "",
+    "x": 3425.3335723876953,
+    "y": 2496.000065803528,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "7b57d512.398e6c",
+    "type": "set",
+    "name": "hardcode spoke route",
+    "xml": "<set>\n<parameter name='prop.spoke.ipAddress' value=\"10.3.0.1\" />\n<parameter name='prop.spoke.providerIpAddress' value=\"10.3.0.0/16\" />",
+    "comments": "",
+    "x": 3450.333251953125,
+    "y": 2608,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "ab1ef1f9.e54ea",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3461.0041694641113,
+    "y": 1227.5040493011475,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "564bf8e9.5ea9e8",
+        "273881de.ee082e"
+      ]
+    ]
+  },
+  {
+    "id": "896da4ec.a5e9f8",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3791.2541217803955,
+    "y": 1395.0040378570557,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "9ec9fc87.5d09e"
+      ]
+    ]
+  },
+  {
+    "id": "9ec9fc87.5d09e",
+    "type": "switchNode",
+    "name": "switch transportNetworkName==prop.spoke.transportNetworkName",
+    "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].value == $prop.spoke.transportNetworkName`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 4124.004144668579,
+    "y": 1397.004313468933,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "3f80722d.d94e9e"
+      ]
+    ]
+  },
+  {
+    "id": "3f80722d.d94e9e",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3991.0055894851685,
+    "y": 1493.0042219161987,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "473f2da5.df7aa4"
+      ]
+    ]
+  },
+  {
+    "id": "473f2da5.df7aa4",
+    "type": "block",
+    "name": "block atmoic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 4146.755597114563,
+    "y": 1485.0042219161987,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "662f75a8.5b0d6c",
+        "d2c57b63.a72078"
+      ]
+    ]
+  },
+  {
+    "id": "d2c57b63.a72078",
+    "type": "set",
+    "name": "set tmp.wanportvidx ",
+    "xml": "<set>\n<parameter name='tmp.wanportvidx' value='`$arvidx`' />\n\n",
+    "comments": "",
+    "x": 4324.2565660476685,
+    "y": 1461.004343032837,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "f5ec2256.55a71",
+    "type": "for",
+    "name": "for loop wanportvidx - Get wan port ID from servicedata",
+    "xml": "<for index=\"wportidx\" start=\"0\" end=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.wanportvidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">\n    \n    \n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2732.5042877197266,
+    "y": 1673.0043449401855,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "a355c702.37b978"
+      ]
+    ]
+  },
+  {
+    "id": "a355c702.37b978",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3035.5056915283203,
+    "y": 1631.004680633545,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "4841755.e7a768c",
+        "7ff6e951.a32b78",
+        "803020cc.5b481"
+      ]
+    ]
+  },
+  {
+    "id": "4841755.e7a768c",
+    "type": "switchNode",
+    "name": "switch wanPortId",
+    "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.wanportvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].name == 'wanPortId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3234.8393783569336,
+    "y": 1588.0048933029175,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "2cb90465.e59cdc"
+      ]
+    ]
+  },
+  {
+    "id": "2cb90465.e59cdc",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3395.8397064208984,
+    "y": 1589.00497341156,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "406b564f.be2668"
+      ]
+    ]
+  },
+  {
+    "id": "406b564f.be2668",
+    "type": "set",
+    "name": "set prop.hub.wanPortId",
+    "xml": "<set>\n<parameter name='prop.hub.wanPortId' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.wanportvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].value`' />\n",
+    "comments": "",
+    "x": 3585.8401679992676,
+    "y": 1588.6052494049072,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "7ff6e951.a32b78",
+    "type": "switchNode",
+    "name": "switch providerIpAddress",
+    "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.wanportvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].name == 'providerIpAddress'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3256.367862701416,
+    "y": 1625.2011981010437,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "de4c4cc0.abc22"
+      ]
+    ]
+  },
+  {
+    "id": "de4c4cc0.abc22",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3432.3688468933105,
+    "y": 1625.2013206481934,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "409dc8c5.eeb998"
+      ]
+    ]
+  },
+  {
+    "id": "409dc8c5.eeb998",
+    "type": "set",
+    "name": "set prop.hub.providerIpAddress",
+    "xml": "<set>\n<parameter name='prop.hub.providerIpAddress' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.wanportvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].value`' />\n",
+    "comments": "",
+    "x": 3634.368885040283,
+    "y": 1625.8012409210205,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "803020cc.5b481",
+    "type": "switchNode",
+    "name": "switch ipAddress",
+    "xml": "<switch test=\"`$mdsal-arsd.service-data.vnfs.vnf[$tmp.wanportvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].name == 'ipAddress'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3228.867944717407,
+    "y": 1662.701283454895,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "25fd164b.117a3a"
+      ]
+    ]
+  },
+  {
+    "id": "25fd164b.117a3a",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 3432.868885040283,
+    "y": 1662.701235294342,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      [
+        "10522aa8.f003c5"
+      ]
+    ]
+  },
+  {
+    "id": "10522aa8.f003c5",
+    "type": "set",
+    "name": "set prop.hub.ipAddress",
+    "xml": "<set>\n<parameter name='prop.hub.ipAddress' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.wanportvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].value`' />\n",
+    "comments": "",
+    "x": 3627.8688888549805,
+    "y": 1662.3012108802795,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "722e84e9.8ab54c",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3837.254180908203,
+    "y": 1815.2539224624634,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "78300110.b43b4",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3849.25390625,
+    "y": 1859.25390625,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "e6f4e702.6d5b68",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3860.2543621063232,
+    "y": 2026.2540483474731,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "b3f4e792.e33638",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3861.254119873047,
+    "y": 2073.2540493011475,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "7b4a5da7.783c64",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3852.2542991638184,
+    "y": 2554.0039710998535,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "4079a316.d4531c",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3853.254056930542,
+    "y": 2601.003972053528,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "2a5c753b.10964a",
+    "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 sdwan hub route underlay rest api\" />\n",
+    "comments": "",
+    "x": 4005.336700439453,
+    "y": 2555.9710121154785,
+    "z": "ea31d3f9.c58ce",
+    "wires": []
+  },
+  {
+    "id": "ae6e8595.d05358",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3852.25390625,
+    "y": 2645.00390625,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a38da1c5.3c2df",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 3853.2536640167236,
+    "y": 2692.0039072036743,
+    "z": "ea31d3f9.c58ce",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-activate.json
new file mode 100644
index 0000000..e920aca
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-activate.json
@@ -0,0 +1,1145 @@
+[
+  {
+    "id": "3b96b94e.d2db46",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 101.71429443359375,
+    "y": 190.01038789749146,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "2a24b40f.15257c"
+      ]
+    ]
+  },
+  {
+    "id": "2a24b40f.15257c",
+    "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": 230.24849939346313,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "13982dc8.7557c2"
+      ]
+    ]
+  },
+  {
+    "id": "13982dc8.7557c2",
+    "type": "method",
+    "name": "method site-vnf-topology-operation-activate",
+    "xml": "<method rpc='site-vnf-topology-operation-activate' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 198.14291381835938,
+    "y": 320.01038789749146,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "cc746.fa4808ba"
+      ]
+    ]
+  },
+  {
+    "id": "cc746.fa4808ba",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 186.3810272216797,
+    "y": 509.6771664619446,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "7d7132e1.2faacc",
+        "43a548ad.54cc98",
+        "b5ec2bbf.0ef568",
+        "c9f28855.c58858",
+        "2cf8df50.df009",
+        "5f881f0.741dae",
+        "445ef8.15e44108",
+        "448dd2dd.bafb8c",
+        "f7484eea.3c8a9",
+        "3fda4a72.8f9396"
+      ]
+    ]
+  },
+  {
+    "id": "7d7132e1.2faacc",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 625.7039566040039,
+    "y": 138.9999828338623,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "ed712d22.18f85",
+        "d79f3765.c39a08",
+        "34d8aa26.2a5306"
+      ]
+    ]
+  },
+  {
+    "id": "ed712d22.18f85",
+    "type": "other",
+    "name": "Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 856.7039337158203,
+    "y": 141.00004625320435,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "774eda2e.68a9d4"
+      ]
+    ]
+  },
+  {
+    "id": "774eda2e.68a9d4",
+    "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.4814491271973,
+    "y": 121.8889946937561,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "d79f3765.c39a08",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 848.7043609619141,
+    "y": 176.00006818771362,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "3a3303bd.28cb7c"
+      ]
+    ]
+  },
+  {
+    "id": "3a3303bd.28cb7c",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1014.9738311767578,
+    "y": 167.55460166931152,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "46ac8f1a.93c77",
+        "dec89d20.3ffd2",
+        "aa1fa754.8a56c8"
+      ]
+    ]
+  },
+  {
+    "id": "46ac8f1a.93c77",
+    "type": "for",
+    "name": "for vidx..service-data.vnfs.vnf_length[]",
+    "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1265.9899597167969,
+    "y": 112.42860507965088,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "5d97713b.b0498"
+      ]
+    ]
+  },
+  {
+    "id": "dec89d20.3ffd2",
+    "type": "switchNode",
+    "name": "switch tmp.vidx ",
+    "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1221.291275024414,
+    "y": 162.41179132461548,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "12d5f510.98545b"
+      ]
+    ]
+  },
+  {
+    "id": "12d5f510.98545b",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1372.7200775146484,
+    "y": 162.9832215309143,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "baac3d2b.9c149"
+      ]
+    ]
+  },
+  {
+    "id": "5d333a67.ea5b04",
+    "type": "switchNode",
+    "name": "switch vnfid found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1682.4186630249023,
+    "y": 71.67872476577759,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "ff1652c5.5f817"
+      ]
+    ]
+  },
+  {
+    "id": "baac3d2b.9c149",
+    "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": 1511.1484756469727,
+    "y": 164.1260437965393,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "ff1652c5.5f817",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1856.3711433410645,
+    "y": 71.57144498825073,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "c70c2471.2c7958"
+      ]
+    ]
+  },
+  {
+    "id": "34d8aa26.2a5306",
+    "type": "outcome",
+    "name": "0",
+    "xml": "<outcome value='0'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 854.6727447509766,
+    "y": 103.9687352180481,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "774eda2e.68a9d4"
+      ]
+    ]
+  },
+  {
+    "id": "c9f28855.c58858",
+    "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.0479927062988,
+    "y": 692.344172000885,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "448dd2dd.bafb8c",
+    "type": "set",
+    "name": "set vnf-level-oper-status to Active",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
+    "comments": "",
+    "x": 632.5281829833984,
+    "y": 526.6816115379333,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "445ef8.15e44108",
+    "type": "set",
+    "name": "set vnf-index and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",
+    "comments": "",
+    "x": 632.2147827148438,
+    "y": 483.34414625167847,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "bbcb4df5.064e3",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1490.2148704528809,
+    "y": 428.0003957748413,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "1ea13654.9fcfaa"
+      ]
+    ]
+  },
+  {
+    "id": "1ea13654.9fcfaa",
+    "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": 1678.7149658203125,
+    "y": 422.00040543079376,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "f9005f03.a47fb",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1493.7058372497559,
+    "y": 475.57443141937256,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "5c27d008.c54fe"
+      ]
+    ]
+  },
+  {
+    "id": "5c27d008.c54fe",
+    "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": 1667.2772483825684,
+    "y": 463.86016750335693,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "5f7c43f4.71b4dc",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1486.0388450622559,
+    "y": 516.9077444076538,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "690bd523.e7874c"
+      ]
+    ]
+  },
+  {
+    "id": "690bd523.e7874c",
+    "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": 1673.8114013671875,
+    "y": 512.3469371795654,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "766aef68.e4df8",
+    "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": 1223.2147827148438,
+    "y": 476.0004016160965,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "bbcb4df5.064e3",
+        "f9005f03.a47fb",
+        "5f7c43f4.71b4dc"
+      ]
+    ]
+  },
+  {
+    "id": "cd48267e.9edf28",
+    "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": 1250.71484375,
+    "y": 666.0003662109375,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "42f4d566.03c33c",
+        "bdd9ab07.dc7f48"
+      ]
+    ]
+  },
+  {
+    "id": "f430b9bd.f345f8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1666.381420135498,
+    "y": 634.8892965316772,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "49b0ec38.4844e4",
+    "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": 1651.8260040283203,
+    "y": 694.4446439743042,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "bdd9ab07.dc7f48",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1506.8259944915771,
+    "y": 691.4446420669556,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "49b0ec38.4844e4"
+      ]
+    ]
+  },
+  {
+    "id": "42f4d566.03c33c",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1507.2703323364258,
+    "y": 635.1114501953125,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "f430b9bd.f345f8"
+      ]
+    ]
+  },
+  {
+    "id": "f7484eea.3c8a9",
+    "type": "set",
+    "name": "copy input data to service data",
+    "xml": "<set>\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />",
+    "comments": "",
+    "x": 623.7147369384766,
+    "y": 570.0006427764893,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "416674e0.73681c",
+    "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": 1224.468879699707,
+    "y": 569.0044623613358,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "58134bd4.bcfed4",
+        "6a9bb51c.bc170c"
+      ]
+    ]
+  },
+  {
+    "id": "58134bd4.bcfed4",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1489.4687614440918,
+    "y": 554.004357457161,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "b4100138.98e92"
+      ]
+    ]
+  },
+  {
+    "id": "6a9bb51c.bc170c",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1481.7187614440918,
+    "y": 595.6472407579422,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "bf434721.5049e8"
+      ]
+    ]
+  },
+  {
+    "id": "bf434721.5049e8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1607.8022575378418,
+    "y": 595.893273472786,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "b4100138.98e92",
+    "type": "set",
+    "name": "set token-id",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+    "comments": "",
+    "x": 1626.4687614440918,
+    "y": 554.004357457161,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "c6987662.432148",
+    "type": "comment",
+    "name": "tmp.thirdparty-sdnc-id is hardcoded value?",
+    "info": "",
+    "comments": "",
+    "x": 1271.7186813354492,
+    "y": 430.00437355041504,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "5f881f0.741dae",
+    "type": "set",
+    "name": "set siteId to service data",
+    "xml": "<set>\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='siteId' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$site-result.success[0].id`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />\n",
+    "comments": "",
+    "x": 613.7185668945312,
+    "y": 445.0042562484741,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "473eb805.0b9488",
+    "type": "switchNode",
+    "name": "switch ActivateSDWANDeviceInstance",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\">\n\n    \n    \n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1749.968635559082,
+    "y": 141.00390195846558,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "a2ae14c0.4e83e8"
+      ]
+    ]
+  },
+  {
+    "id": "a2ae14c0.4e83e8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1976.968490600586,
+    "y": 140.00390100479126,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "e66294b6.7e7298"
+      ]
+    ]
+  },
+  {
+    "id": "c0693138.694c4",
+    "type": "comment",
+    "name": "Get devices",
+    "info": "",
+    "comments": "",
+    "x": 1783.718650817871,
+    "y": 161.75391721725464,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "43a548ad.54cc98",
+    "type": "set",
+    "name": "set prop.site.sdwan false",
+    "xml": "<set>\n<parameter name='prop.site.sdwan' value=\"false\" />\n\n",
+    "comments": "",
+    "x": 604.7143096923828,
+    "y": 80.00003242492676,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "2cf8df50.df009",
+    "type": "switchNode",
+    "name": "switch prop.site.sdwan",
+    "xml": "<switch test=\"`$prop.site.sdwan`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 600.7144165039062,
+    "y": 387.6666216850281,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "6b990b0d.fef984"
+      ]
+    ]
+  },
+  {
+    "id": "6b990b0d.fef984",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 779.7144660949707,
+    "y": 384.6666216850281,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "fac23885.a00b38"
+      ]
+    ]
+  },
+  {
+    "id": "fac23885.a00b38",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 935.7146911621094,
+    "y": 381.66694355010986,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "d4d22841.f00eb8",
+        "cd48267e.9edf28",
+        "766aef68.e4df8",
+        "416674e0.73681c",
+        "793cd9f6.80cc58",
+        "702b3ce6.3adbe4"
+      ]
+    ]
+  },
+  {
+    "id": "e66294b6.7e7298",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1932.381404876709,
+    "y": 202.00004196166992,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "288cc13c.94077e"
+      ]
+    ]
+  },
+  {
+    "id": "288cc13c.94077e",
+    "type": "for",
+    "name": "for loop deviceidx - Get deviceId from servicedata",
+    "xml": "<for index=\"deviceidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`\">",
+    "comments": "",
+    "outputs": 1,
+    "x": 2213.7151584625244,
+    "y": 212.00006246566772,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "d7048ef8.65174"
+      ]
+    ]
+  },
+  {
+    "id": "d7048ef8.65174",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2329.714942932129,
+    "y": 263.00024795532227,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "2e66cefe.b9e7b2"
+      ]
+    ]
+  },
+  {
+    "id": "2e66cefe.b9e7b2",
+    "type": "switchNode",
+    "name": "switch deviceId",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].name == 'deviceId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2489.7151985168457,
+    "y": 265.00010108947754,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "302f3690.f9a14a"
+      ]
+    ]
+  },
+  {
+    "id": "302f3690.f9a14a",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2641.7153701782227,
+    "y": 264.00010108947754,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "35a2ea58.cd5716"
+      ]
+    ]
+  },
+  {
+    "id": "35a2ea58.cd5716",
+    "type": "set",
+    "name": "set deviceId",
+    "xml": "<set>\n<parameter name='prop.site.deviceId[$prop.site.deviceId_length]' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />\n<parameter name='prop.site.deviceId_length' value='`$prop.site.deviceId_length + 1`' />\n",
+    "comments": "",
+    "x": 2781.71537399292,
+    "y": 263.6000556945801,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "aa1fa754.8a56c8",
+    "type": "set",
+    "name": "set prop.site.deviceId_length",
+    "xml": "<set>\n<parameter name='prop.site.deviceId_length' value='0' />\n",
+    "comments": "",
+    "x": 1257.7143669128418,
+    "y": 66.99999475479126,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "3fda4a72.8f9396",
+    "type": "save",
+    "name": "update siteInstance configuration in AAI",
+    "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \n      key='site-resource.site-resource-id = $vnf-topology-operation-input.vnf-information.vnf-id' >\n<parameter name='site-resource-id' value='`$vnf-topology-operation-input.vnf-information.vnf-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": 653.7144622802734,
+    "y": 631.0001573562622,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "b5ec2bbf.0ef568",
+    "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": 596.7143325805664,
+    "y": 276.9999966621399,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "d4d22841.f00eb8",
+    "type": "set",
+    "name": "set siteId",
+    "xml": "<set>\n<parameter name='prop.site.siteId' value=\"\" />\n\n",
+    "comments": "",
+    "x": 1158.714599609375,
+    "y": 384.0000915527344,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "c70c2471.2c7958",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2026.7144393920898,
+    "y": 75.65758037567139,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "9ba5f463.943968",
+        "32028fb9.746e",
+        "fb0b8823.b3d168"
+      ]
+    ]
+  },
+  {
+    "id": "32028fb9.746e",
+    "type": "set",
+    "name": "set vnf-request-input.",
+    "xml": "<set>\n<parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />\n\n",
+    "comments": "",
+    "x": 2279.04744720459,
+    "y": 92.65763568878174,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "9ba5f463.943968",
+    "type": "set",
+    "name": "set tmp.vidx and ctx.vnf-data",
+    "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",
+    "comments": "",
+    "x": 2306.60115814209,
+    "y": 46,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "fb0b8823.b3d168",
+    "type": "call",
+    "name": "call sdwan-get-site-param",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-site-param' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2277.6881256103516,
+    "y": 128.1071195602417,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "6f03dda4.fbdb64",
+    "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": 1240.7148895263672,
+    "y": 341.03131008148193,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "6ae2a7d2.64e9e8"
+      ]
+    ]
+  },
+  {
+    "id": "6ae2a7d2.64e9e8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1447.7144165039062,
+    "y": 271.0312547683716,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "d5e8a02e.b6af9",
+        "f4a3ecf1.a3a47"
+      ]
+    ]
+  },
+  {
+    "id": "5d97713b.b0498",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1504.9644374847412,
+    "y": 112.00390911102295,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "5d333a67.ea5b04",
+        "473eb805.0b9488"
+      ]
+    ]
+  },
+  {
+    "id": "d5e8a02e.b6af9",
+    "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": 1671.0439834594727,
+    "y": 296.0000762939453,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "3002f41f.7cb61c",
+        "9eec95b7.76f808"
+      ]
+    ]
+  },
+  {
+    "id": "545c41c0.800ed",
+    "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": 2068.3771781921387,
+    "y": 266.0001964569092,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "3002f41f.7cb61c",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1889.7108268737793,
+    "y": 265.0000743865967,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "545c41c0.800ed"
+      ]
+    ]
+  },
+  {
+    "id": "9eec95b7.76f808",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1891.9606704711914,
+    "y": 303.6429605484009,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "aebaf4c.ab33d08"
+      ]
+    ]
+  },
+  {
+    "id": "aebaf4c.ab33d08",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 2032.3770179748535,
+    "y": 302.0000171661377,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "f4a3ecf1.a3a47",
+    "type": "set",
+    "name": "set prop.controlPtId",
+    "xml": "<set>\n<parameter name='prop.controlPtId' value='`$prop.site.controlpoints[$cpidx]`' />\n\n",
+    "comments": "",
+    "x": 1632.7104873657227,
+    "y": 236.0000114440918,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "793cd9f6.80cc58",
+    "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": 1203,
+    "y": 614,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "702b3ce6.3adbe4",
+    "type": "switchNode",
+    "name": "switch prop.site.controlpoints ",
+    "xml": "<switch test=\"`$prop.site.controlPoint`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1098,
+    "y": 224,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "4ac6f9a0.74a1d8",
+        "b2aa5e32.50984"
+      ]
+    ]
+  },
+  {
+    "id": "4ac6f9a0.74a1d8",
+    "type": "other",
+    "name": "Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1294,
+    "y": 197,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "d9d8dd65.e2446"
+      ]
+    ]
+  },
+  {
+    "id": "b2aa5e32.50984",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1286,
+    "y": 246,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "d71ee31.658172"
+      ]
+    ]
+  },
+  {
+    "id": "d9d8dd65.e2446",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1432,
+    "y": 199,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "ca30cd8f.df3a"
+      ]
+    ]
+  },
+  {
+    "id": "f1ac4b9c.e46258",
+    "type": "comment",
+    "name": "should be null in request",
+    "info": "",
+    "comments": "",
+    "x": 1334.714584350586,
+    "y": 384.00006771087646,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "ca30cd8f.df3a",
+    "type": "set",
+    "name": "set template file hub",
+    "xml": "<set>\n<parameter name='template.site.role' value=\"hub\" />\n\n",
+    "comments": "",
+    "x": 1601.0039978027344,
+    "y": 202.00392055511475,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  },
+  {
+    "id": "d71ee31.658172",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1095.003890991211,
+    "y": 289.0039052963257,
+    "z": "f7b8765.9d87788",
+    "wires": [
+      [
+        "6f03dda4.fbdb64",
+        "f3663259.ad67e"
+      ]
+    ]
+  },
+  {
+    "id": "f3663259.ad67e",
+    "type": "set",
+    "name": "set template file spoke",
+    "xml": "<set>\n<parameter name='template.site.role' value=\"spoke\" />\n\n",
+    "comments": "",
+    "x": 1275.00390625,
+    "y": 308.0039129257202,
+    "z": "f7b8765.9d87788",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-create.json
new file mode 100644
index 0000000..4d947bb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-create.json
@@ -0,0 +1,439 @@
+[
+  {
+    "id": "735f5ad1.ead7c4",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 77.71430206298828,
+    "y": 47,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      [
+        "fe8db64d.524ea8"
+      ]
+    ]
+  },
+  {
+    "id": "fe8db64d.524ea8",
+    "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": 121.23810789268464,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      [
+        "1caac0d4.b3765f"
+      ]
+    ]
+  },
+  {
+    "id": "1caac0d4.b3765f",
+    "type": "method",
+    "name": "method site-vnf-topology-operation-create",
+    "xml": "<method rpc='site-vnf-topology-operation-create' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 198.14291381835938,
+    "y": 210.99999639671296,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      [
+        "d05aaf1d.08055"
+      ]
+    ]
+  },
+  {
+    "id": "d05aaf1d.08055",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 178.3809585571289,
+    "y": 382.66666814964265,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      [
+        "6f65d305.7dd0dc",
+        "c0e8c4a0.84ad08",
+        "d1be6ea1.8ea6a",
+        "8988370b.251a38",
+        "61f164dd.5ae33c",
+        "1f2f5cd6.515d03",
+        "7fec36e8.2120f8",
+        "2f304e20.895352",
+        "4e05fc36.a331a4",
+        "b30ee953.435c78",
+        "1bdd47aa.96d5c8",
+        "e5bdd145.df52f"
+      ]
+    ]
+  },
+  {
+    "id": "c0e8c4a0.84ad08",
+    "type": "set",
+    "name": "set vnf-level-oper-status to Created",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
+    "comments": "",
+    "x": 606.5277099609375,
+    "y": 801.6705660820007,
+    "z": "5c7962f1.1a851c",
+    "wires": []
+  },
+  {
+    "id": "6f65d305.7dd0dc",
+    "type": "set",
+    "name": "copy input data to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\n\n",
+    "comments": "",
+    "x": 593.380859375,
+    "y": 699.6667819023132,
+    "z": "5c7962f1.1a851c",
+    "wires": []
+  },
+  {
+    "id": "61f164dd.5ae33c",
+    "type": "execute",
+    "name": "execute generate-vnf-index",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.vnf-index\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 577.7143936157227,
+    "y": 626.3334531784058,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "8388db61.48edd8",
+    "type": "set",
+    "name": "set vnf-index to service data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.vnf-id' value='`$prop.vnf-index`' />\n",
+    "comments": "",
+    "x": 590.7144584655762,
+    "y": 755.333420753479,
+    "z": "5c7962f1.1a851c",
+    "wires": []
+  },
+  {
+    "id": "d1be6ea1.8ea6a",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 607.7142791748047,
+    "y": 261.33335971832275,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      [
+        "ec91878.ef3fc78",
+        "8eb89062.3f8df"
+      ]
+    ]
+  },
+  {
+    "id": "ec91878.ef3fc78",
+    "type": "other",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 842.4286651611328,
+    "y": 256.4761800765991,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      [
+        "ee0ce75d.fadbc8"
+      ]
+    ]
+  },
+  {
+    "id": "ee0ce75d.fadbc8",
+    "type": "set",
+    "name": "set vnf-index=0",
+    "xml": "<set>\n<parameter name='vnf-index' value='0' />\n",
+    "comments": "",
+    "x": 1002.7143707275391,
+    "y": 256.4762716293335,
+    "z": "5c7962f1.1a851c",
+    "wires": []
+  },
+  {
+    "id": "8eb89062.3f8df",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 838.8572044372559,
+    "y": 289.76201152801514,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      [
+        "dddde8e2.a6e3a8"
+      ]
+    ]
+  },
+  {
+    "id": "22bd6504.22c48a",
+    "type": "set",
+    "name": "set vnf-index = vnf_length",
+    "xml": "<set>\n<parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\n",
+    "comments": "",
+    "x": 1231.7144470214844,
+    "y": 268.04773712158203,
+    "z": "5c7962f1.1a851c",
+    "wires": []
+  },
+  {
+    "id": "8d104e1d.a35c3",
+    "type": "for",
+    "name": "for each existing VNF",
+    "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1220.14306640625,
+    "y": 303.0477089881897,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      [
+        "5570c3fc.a06f2c"
+      ]
+    ]
+  },
+  {
+    "id": "dddde8e2.a6e3a8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 973.5714874267578,
+    "y": 291.761981010437,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      [
+        "22bd6504.22c48a",
+        "8d104e1d.a35c3"
+      ]
+    ]
+  },
+  {
+    "id": "5570c3fc.a06f2c",
+    "type": "switchNode",
+    "name": "switch vnf-information.vnf-id == service-data.vnfs.vnf[].vnf-id",
+    "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1613.4288024902344,
+    "y": 303.6191930770874,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      [
+        "476608a3.dc62a8"
+      ]
+    ]
+  },
+  {
+    "id": "476608a3.dc62a8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1894.7145042419434,
+    "y": 302.190598487854,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      [
+        "c72cc9fe.2f14b8"
+      ]
+    ]
+  },
+  {
+    "id": "480cbd60.5b2ab4",
+    "type": "comment",
+    "name": "make sure this vnf-id doesn't exist already",
+    "info": "",
+    "comments": "",
+    "x": 1582.571418762207,
+    "y": 267.1905851364136,
+    "z": "5c7962f1.1a851c",
+    "wires": []
+  },
+  {
+    "id": "8988370b.251a38",
+    "type": "set",
+    "name": "set new vnf_length",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\n",
+    "comments": "",
+    "x": 559.71435546875,
+    "y": 593.3334078788757,
+    "z": "5c7962f1.1a851c",
+    "wires": []
+  },
+  {
+    "id": "2f304e20.895352",
+    "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": 561.7143821716309,
+    "y": 1024.5970349311829,
+    "z": "5c7962f1.1a851c",
+    "wires": []
+  },
+  {
+    "id": "1f2f5cd6.515d03",
+    "type": "save",
+    "name": "save siteInstance configuration in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \n      key='site-resource.site-resource-id = $prop.vnf-index' >\n<parameter name='site-resource-id' value='`$prop.vnf-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='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` \" />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 610.3811264038086,
+    "y": 896.8190660476685,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "7fec36e8.2120f8",
+    "type": "save",
+    "name": "save service relationship in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \n      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id \n         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id \n         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"site-resource\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/site-resources/site-resource/' + $prop.vnf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"site-resource.site-resource-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.vnf-index`\" />",
+    "comments": "",
+    "outputs": 1,
+    "x": 599.3811302185059,
+    "y": 959.5969486236572,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "4e05fc36.a331a4",
+    "type": "set",
+    "name": "set vnf-index and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$prop.vnf-index`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` \" />",
+    "comments": "",
+    "x": 600.7143783569336,
+    "y": 845.5968370437622,
+    "z": "5c7962f1.1a851c",
+    "wires": []
+  },
+  {
+    "id": "b30ee953.435c78",
+    "type": "for",
+    "name": "for loop idx - VNF input parameters",
+    "xml": "<for index=\"idx\" start=\"0\" end=\"`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 593.7143936157227,
+    "y": 400.0000629425049,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      [
+        "a33f518e.35371"
+      ]
+    ]
+  },
+  {
+    "id": "a33f518e.35371",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 808.4927368164062,
+    "y": 397.5556468963623,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      [
+        "97fc593c.33ca48",
+        "dcd520b2.7e574"
+      ]
+    ]
+  },
+  {
+    "id": "97fc593c.33ca48",
+    "type": "execute",
+    "name": "execute split parameterName",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vnf-topology-operation-input.vnf-request-input.vnf-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": 1004.7489395141602,
+    "y": 375.3037853240967,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "dcd520b2.7e574",
+    "type": "set",
+    "name": "set parameterName",
+    "xml": "<set>\n<parameter name=\"`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",
+    "comments": "",
+    "x": 974.1933670043945,
+    "y": 412.3039016723633,
+    "z": "5c7962f1.1a851c",
+    "wires": []
+  },
+  {
+    "id": "1bdd47aa.96d5c8",
+    "type": "set",
+    "name": "set vnf-request-input.",
+    "xml": "<set>\n<parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />\n",
+    "comments": "",
+    "x": 555.7140121459961,
+    "y": 474.3247776031494,
+    "z": "5c7962f1.1a851c",
+    "wires": []
+  },
+  {
+    "id": "e5bdd145.df52f",
+    "type": "call",
+    "name": "call sdwan-get-site-param",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-site-param' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 571.7143783569336,
+    "y": 506.3249816894531,
+    "z": "5c7962f1.1a851c",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "c72cc9fe.2f14b8",
+    "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 id ' + $service-data.vnfs.vnf[$idx].vnf-id\n      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`\" />\n",
+    "comments": "",
+    "x": 2023.285873413086,
+    "y": 353.19061279296875,
+    "z": "5c7962f1.1a851c",
+    "wires": []
+  },
+  {
+    "id": "272c1a85.bab626",
+    "type": "comment",
+    "name": "Take the parameter names by removing prefix",
+    "info": "",
+    "comments": "",
+    "x": 1316.714485168457,
+    "y": 356.6666793823242,
+    "z": "5c7962f1.1a851c",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-deactivate.json
new file mode 100644
index 0000000..739b68f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-deactivate.json
@@ -0,0 +1,1036 @@
+[
+  {
+    "id": "f2d5a044.e7585",
+    "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": 182.8570785522461,
+    "y": 139.23809814453125,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "3fa00e50.ff8f92"
+      ]
+    ]
+  },
+  {
+    "id": "1dae242d.6645cc",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 107.57137298583984,
+    "y": 98.99998664855957,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "f2d5a044.e7585"
+      ]
+    ]
+  },
+  {
+    "id": "3fa00e50.ff8f92",
+    "type": "method",
+    "name": "method site-vnf-topology-operation-deactivate",
+    "xml": "<method rpc='site-vnf-topology-operation-deactivate' mode='sync'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 176,
+    "y": 178.99998092651367,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "42e004c2.23654c"
+      ]
+    ]
+  },
+  {
+    "id": "42e004c2.23654c",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 216.73809814453125,
+    "y": 250.69349193572998,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "65c407c9.9f1008",
+        "48bce7ba.2d8768",
+        "a7851b19.e94318",
+        "7b84792a.cd09f8",
+        "33ca4ea0.f0ad62",
+        "85876d42.f8148",
+        "145e6ab2.474a25",
+        "65cd0ad5.7b6474",
+        "e07817c8.713ef8"
+      ]
+    ]
+  },
+  {
+    "id": "33ca4ea0.f0ad62",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 623.7856979370117,
+    "y": 115.80950736999512,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "44befce.c3f5f04",
+        "7d171976.884c68",
+        "2cfd8e20.8f3c62",
+        "c7b90528.204df8"
+      ]
+    ]
+  },
+  {
+    "id": "44befce.c3f5f04",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 903.6747055053711,
+    "y": 141.14282512664795,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "85e6c857.e79cf8",
+        "f4c886b6.8c7de8"
+      ]
+    ]
+  },
+  {
+    "id": "85e6c857.e79cf8",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1157.2858276367188,
+    "y": 122.8095121383667,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "f39dd2df.24642"
+      ]
+    ]
+  },
+  {
+    "id": "f39dd2df.24642",
+    "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": 1331.2858428955078,
+    "y": 122.8095121383667,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "f4c886b6.8c7de8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1140.7857971191406,
+    "y": 158.80952262878418,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "9dbcc4cd.8daf68"
+      ]
+    ]
+  },
+  {
+    "id": "9dbcc4cd.8daf68",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1322.7859954833984,
+    "y": 169.80952835083008,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "5192b087.75251",
+        "a84b6b1.e64a598"
+      ]
+    ]
+  },
+  {
+    "id": "a84b6b1.e64a598",
+    "type": "switchNode",
+    "name": "switch tmp.vidx ",
+    "xml": "<switch test=\"`$tmp.vidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1512.785888671875,
+    "y": 186.80952262878418,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "f8861e43.09ff7"
+      ]
+    ]
+  },
+  {
+    "id": "c7b90528.204df8",
+    "type": "switchNode",
+    "name": "switch vnf-level-oper-status",
+    "xml": "<switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 866.952507019043,
+    "y": 236.69837856292725,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "4f6faf17.9da86",
+        "63b6f7c3.593ea8"
+      ]
+    ]
+  },
+  {
+    "id": "4f6faf17.9da86",
+    "type": "outcome",
+    "name": "outcome Active",
+    "xml": "<outcome value='Active'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1173.7858200073242,
+    "y": 217.8095006942749,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "a798f2fb.14365"
+      ]
+    ]
+  },
+  {
+    "id": "63b6f7c3.593ea8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1141.7858200073242,
+    "y": 257.8095006942749,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "1d11ed5c.996383"
+      ]
+    ]
+  },
+  {
+    "id": "1d11ed5c.996383",
+    "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 deactivate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`\" />",
+    "comments": "",
+    "x": 1299.2858200073242,
+    "y": 257.8095006942749,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "7d171976.884c68",
+    "type": "switchNode",
+    "name": "switch vnf-id",
+    "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 845.7858047485352,
+    "y": 81.80949974060059,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "f940f6c8.c04158"
+      ]
+    ]
+  },
+  {
+    "id": "f940f6c8.c04158",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 988.7857971191406,
+    "y": 81.80950260162354,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "8db9d430.4ecf68"
+      ]
+    ]
+  },
+  {
+    "id": "8db9d430.4ecf68",
+    "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-information.vnf-id is a required input\" />\n",
+    "comments": "",
+    "x": 1137.2857971191406,
+    "y": 81.80950164794922,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "5192b087.75251",
+    "type": "for",
+    "name": "for vidx..service-data.vnfs.vnf[]",
+    "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1558.2859191894531,
+    "y": 148.8095121383667,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "93fbba5f.463c78"
+      ]
+    ]
+  },
+  {
+    "id": "93fbba5f.463c78",
+    "type": "switchNode",
+    "name": "switch vnf-id found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1844.2859191894531,
+    "y": 148.8095121383667,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "8c6bb65a.97de78"
+      ]
+    ]
+  },
+  {
+    "id": "8c6bb65a.97de78",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2029.7859954833984,
+    "y": 148.80951404571533,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "5c836ef8.46731"
+      ]
+    ]
+  },
+  {
+    "id": "5c836ef8.46731",
+    "type": "set",
+    "name": "set tmp.vidx and ctx.vnf-data",
+    "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].vnf-data.`' />\n",
+    "comments": "",
+    "x": 2237.785919189453,
+    "y": 148.8095121383667,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "7e651921.d7b4c8",
+    "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-information.vnf-id not found in service-data\" />\n",
+    "comments": "",
+    "x": 1804.285888671875,
+    "y": 186.80952262878418,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "f8861e43.09ff7",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1666.785888671875,
+    "y": 186.80952262878418,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "7e651921.d7b4c8"
+      ]
+    ]
+  },
+  {
+    "id": "65c407c9.9f1008",
+    "type": "set",
+    "name": "set vnf in service-data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />",
+    "comments": "",
+    "x": 610.5715866088867,
+    "y": 584.00022315979,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "48bce7ba.2d8768",
+    "type": "set",
+    "name": "set vnfId and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",
+    "comments": "",
+    "x": 632.1271820068359,
+    "y": 621.2224445343018,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "7b84792a.cd09f8",
+    "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": 585.9049634933472,
+    "y": 771.7778739929199,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "a7851b19.e94318",
+    "type": "set",
+    "name": "set vnf-level-oper-status to PendingDelete",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",
+    "comments": "",
+    "x": 670.5715866088867,
+    "y": 665.0002861022949,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "a798f2fb.14365",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1367.713279724121,
+    "y": 221.88886964321136,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "2cfd8e20.8f3c62",
+    "type": "execute",
+    "name": "execute requiredParameters",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"vnf-topology-operation-input.vnf-information.vnf-id\" value=\"$vnf-topology-operation-input.vnf-information.vnf-id\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 895.5716171264648,
+    "y": 44,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "dc5cbf86.069cb",
+    "type": "comment",
+    "name": "site-vnf-topology-operation-deactivate",
+    "info": "",
+    "comments": "",
+    "x": 489.8570785522461,
+    "y": 44.23809814453125,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "85876d42.f8148",
+    "type": "for",
+    "name": "for loop idx - VNF input parameters",
+    "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 667.8572273254395,
+    "y": 315.0000219345093,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "3e4458ac.5a1978"
+      ]
+    ]
+  },
+  {
+    "id": "3e4458ac.5a1978",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 874.7529640197754,
+    "y": 314.9218854904175,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "d28edbd3.ae9358",
+        "bda524fb.86fa98"
+      ]
+    ]
+  },
+  {
+    "id": "d28edbd3.ae9358",
+    "type": "switchNode",
+    "name": "switch type",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'type'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1011.8701667785645,
+    "y": 314.89532566070557,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "a740d422.40d728"
+      ]
+    ]
+  },
+  {
+    "id": "a740d422.40d728",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1151.870174407959,
+    "y": 315.89532566070557,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "feaf8bb0.d7e508"
+      ]
+    ]
+  },
+  {
+    "id": "feaf8bb0.d7e508",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1300.419822692871,
+    "y": 316.9220190048218,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "6e080bd9.2cad94"
+      ]
+    ]
+  },
+  {
+    "id": "6e080bd9.2cad94",
+    "type": "set",
+    "name": "set type and sdwan flag",
+    "xml": "<set>\n<parameter name='prop.site.type' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n<parameter name='prop.site.sdwan' value=\"true\" />\n",
+    "comments": "",
+    "x": 1444.7531852722168,
+    "y": 317.9220361709595,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "145e6ab2.474a25",
+    "type": "switchNode",
+    "name": "switch prop.site.sdwan",
+    "xml": "<switch test=\"`$prop.site.sdwan`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 641.8570785522461,
+    "y": 470.00004386901855,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "c9081f3c.c4c52"
+      ]
+    ]
+  },
+  {
+    "id": "c9081f3c.c4c52",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 822.8572120666504,
+    "y": 471.0000705718994,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "5bb614a8.7a50ac"
+      ]
+    ]
+  },
+  {
+    "id": "619fc994.c8c7e8",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1527.357234954834,
+    "y": 439.00012493133545,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "9d1c31d.0bb00d"
+      ]
+    ]
+  },
+  {
+    "id": "9d1c31d.0bb00d",
+    "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": 1715.8573303222656,
+    "y": 433.0001345872879,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "a8d0eff5.22c29",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1530.848201751709,
+    "y": 486.5741605758667,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "182c54e4.50314b"
+      ]
+    ]
+  },
+  {
+    "id": "182c54e4.50314b",
+    "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": 1704.4196128845215,
+    "y": 474.8598966598511,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "dafc7114.f9611",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1523.181209564209,
+    "y": 527.907473564148,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "9c3bc7c8.8428c8"
+      ]
+    ]
+  },
+  {
+    "id": "9c3bc7c8.8428c8",
+    "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": 1710.9537658691406,
+    "y": 523.3466663360596,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "2718b5aa.7ee4da",
+    "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": 1260.3571472167969,
+    "y": 487.00013077259064,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "619fc994.c8c7e8",
+        "a8d0eff5.22c29",
+        "dafc7114.f9611"
+      ]
+    ]
+  },
+  {
+    "id": "f6e580dc.483b5",
+    "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": 1288.8574905395508,
+    "y": 685.0002021789551,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "9ccdb4e3.7037b8",
+        "542d6497.1e051c"
+      ]
+    ]
+  },
+  {
+    "id": "efaab9ba.da6af8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1684.523811340332,
+    "y": 664.8890171051025,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "eed03e10.52741",
+    "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": 1681.9683113098145,
+    "y": 699.444356918335,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "f190e7e4.b492e8",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1537.9683074951172,
+    "y": 698.444356918335,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "eed03e10.52741"
+      ]
+    ]
+  },
+  {
+    "id": "3d884d4b.3bb372",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1541.4126434326172,
+    "y": 667.1111841201782,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "efaab9ba.da6af8"
+      ]
+    ]
+  },
+  {
+    "id": "268a0227.9f4d8e",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1526.611125946045,
+    "y": 565.0040866136551,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "7a5f68d2.12c3e8"
+      ]
+    ]
+  },
+  {
+    "id": "ec5d99f5.fe59b8",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1518.861125946045,
+    "y": 606.6469699144363,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "dc9e3b17.c88cb8"
+      ]
+    ]
+  },
+  {
+    "id": "dc9e3b17.c88cb8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1644.944622039795,
+    "y": 606.8930026292801,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "7a5f68d2.12c3e8",
+    "type": "set",
+    "name": "set token-id",
+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",
+    "comments": "",
+    "x": 1663.611125946045,
+    "y": 565.0040866136551,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "cbf3519f.042f3",
+    "type": "comment",
+    "name": "tmp.thirdparty-sdnc-id is hardcoded value?",
+    "info": "",
+    "comments": "",
+    "x": 1256.8610382080078,
+    "y": 454.0040522813797,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "5bb614a8.7a50ac",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 983.8571472167969,
+    "y": 471.6665782928467,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "2718b5aa.7ee4da",
+        "8fc11da9.0efed",
+        "f6e580dc.483b5",
+        "49b38240.460c6c"
+      ]
+    ]
+  },
+  {
+    "id": "65cd0ad5.7b6474",
+    "type": "save",
+    "name": "update siteInstance configuration in AAI",
+    "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \n      key='site-resource.site-resource-id = $vnf-topology-operation-input.vnf-information.vnf-id' >\n<parameter name='site-resource-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />      \n<parameter name='operational-status' value='PendingDelete' />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 663.8571701049805,
+    "y": 704.0001029968262,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "bda524fb.86fa98",
+    "type": "switchNode",
+    "name": "switch siteId",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'siteId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1011.8700637817383,
+    "y": 389.8953685760498,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "5e12f6f2.154df8"
+      ]
+    ]
+  },
+  {
+    "id": "5e12f6f2.154df8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1151.8700714111328,
+    "y": 390.8953685760498,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "c0b4aa42.b23db8"
+      ]
+    ]
+  },
+  {
+    "id": "c0b4aa42.b23db8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1300.419719696045,
+    "y": 391.922061920166,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "12912fa7.36df6"
+      ]
+    ]
+  },
+  {
+    "id": "12912fa7.36df6",
+    "type": "set",
+    "name": "set siteId",
+    "xml": "<set>\n<parameter name='prop.site.siteId' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n\n",
+    "comments": "",
+    "x": 1444.7530822753906,
+    "y": 392.9220790863037,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "cc3aa10c.cf485",
+    "type": "comment",
+    "name": "Get siteId to delete",
+    "info": "",
+    "comments": "",
+    "x": 1023.857048034668,
+    "y": 359.0000247955322,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": []
+  },
+  {
+    "id": "8fc11da9.0efed",
+    "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": 1277.0000762939453,
+    "y": 588.000039100647,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "268a0227.9f4d8e",
+        "ec5d99f5.fe59b8"
+      ]
+    ]
+  },
+  {
+    "id": "e07817c8.713ef8",
+    "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": 617,
+    "y": 225.00000095367432,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "49b38240.460c6c",
+    "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": 1237,
+    "y": 637,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "9ccdb4e3.7037b8",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1545,
+    "y": 762,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "b8677116.110c6"
+      ]
+    ]
+  },
+  {
+    "id": "b8677116.110c6",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1701,
+    "y": 762,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "542d6497.1e051c",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1545,
+    "y": 811,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      [
+        "e1c3f88e.80fd88"
+      ]
+    ]
+  },
+  {
+    "id": "e1c3f88e.80fd88",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "comments": "",
+    "outputs": 1,
+    "x": 1723,
+    "y": 808,
+    "z": "ccd0c7cf.3cb8d8",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-delete.json
new file mode 100644
index 0000000..463dc7f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-delete.json
@@ -0,0 +1,569 @@
+[
+  {
+    "id": "1e0cb698.a04019",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 107.57138061523438,
+    "y": 61.999998569488525,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "277c65c2.ed804a"
+      ]
+    ]
+  },
+  {
+    "id": "277c65c2.ed804a",
+    "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": 182.85708618164062,
+    "y": 102.2381100654602,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "a7e1f73c.bc4948"
+      ]
+    ]
+  },
+  {
+    "id": "a7e1f73c.bc4948",
+    "type": "method",
+    "name": "method site-vnf-topology-operation-delete",
+    "xml": "<method rpc='site-vnf-topology-operation-delete' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 163,
+    "y": 237.99999856948853,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "bdf1765.0f24c88"
+      ]
+    ]
+  },
+  {
+    "id": "ca44419d.5ab99",
+    "type": "comment",
+    "name": "site-vnf-topology-operation-delete",
+    "info": "",
+    "comments": "",
+    "x": 556.9162979125977,
+    "y": 135.58639764785767,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "bdf1765.0f24c88",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 184.23804473876953,
+    "y": 363.6666703224182,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "372cbde7.587372",
+        "5c8ef11.4d9e21",
+        "c063c177.c449a",
+        "b76f0527.dbb128",
+        "bcc212f6.b90ab",
+        "12ca3dc.2d458c2",
+        "c460861f.38f098",
+        "6a5ea2dd.9c807c",
+        "55ed5ce8.2b1ae4",
+        "ba708495.2ebbe8",
+        "4890886d.4993b8"
+      ]
+    ]
+  },
+  {
+    "id": "bcc212f6.b90ab",
+    "type": "switchNode",
+    "name": "switch service-data.vnfs.vnf_length",
+    "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 645.6660842895508,
+    "y": 297.2611689567566,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "d5d54ea4.ba5c6",
+        "291bcf0.559d232"
+      ]
+    ]
+  },
+  {
+    "id": "d5d54ea4.ba5c6",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 910.3883972167969,
+    "y": 279.81679105758667,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "30ee642f.b18d2c"
+      ]
+    ]
+  },
+  {
+    "id": "30ee642f.b18d2c",
+    "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": 1091.3882675170898,
+    "y": 274.81666898727417,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "291bcf0.559d232",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 895.8883972167969,
+    "y": 331.81675386428833,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "fb8a0e1a.913bb"
+      ]
+    ]
+  },
+  {
+    "id": "fb8a0e1a.913bb",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1067.8881034851074,
+    "y": 331.8167519569397,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "5412f014.12424",
+        "97fd60bf.39c2c"
+      ]
+    ]
+  },
+  {
+    "id": "97fd60bf.39c2c",
+    "type": "switchNode",
+    "name": "switch tmp.nidx ",
+    "xml": "<switch test=\"`$tmp.nidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1242.8882751464844,
+    "y": 350.81667375564575,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "7e0c16e8.e0d2b8"
+      ]
+    ]
+  },
+  {
+    "id": "b76f0527.dbb128",
+    "type": "switchNode",
+    "name": "switch vnf-level-oper-status",
+    "xml": "<switch test='`$service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 616.0550842285156,
+    "y": 371.705632686615,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "2c1cb407.0b20fc",
+        "7a49e612.028b78"
+      ]
+    ]
+  },
+  {
+    "id": "2c1cb407.0b20fc",
+    "type": "outcome",
+    "name": "outcome PendingDelete",
+    "xml": "<outcome value='PendingDelete'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 906.8883514404297,
+    "y": 375.81675577163696,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "4b86cba0.d35104"
+      ]
+    ]
+  },
+  {
+    "id": "7a49e612.028b78",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 852.8884124755859,
+    "y": 422.81675958633423,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "cae57504.d32048"
+      ]
+    ]
+  },
+  {
+    "id": "cae57504.d32048",
+    "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": 1012.3881797790527,
+    "y": 425.8167586326599,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "12ca3dc.2d458c2",
+    "type": "switchNode",
+    "name": "switch vnf-id",
+    "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-information.vnf-id`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 581.8884010314941,
+    "y": 252.81676244735718,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "479f1e18.fbfce"
+      ]
+    ]
+  },
+  {
+    "id": "479f1e18.fbfce",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 779.8884658813477,
+    "y": 242.8167748451233,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "e26d76c0.5decd8"
+      ]
+    ]
+  },
+  {
+    "id": "e26d76c0.5decd8",
+    "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-request-input.vnf-input-parameters.name is a required input\" />\n",
+    "comments": "",
+    "x": 946.3883514404297,
+    "y": 239.8167691230774,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "c460861f.38f098",
+    "type": "execute",
+    "name": "execute requiredParameters",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"vnf-topology-operation-input.vnf-information.vnf-id\" value=\"$vnf-topology-operation-input.vnf-information.vnf-id\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 639.3884582519531,
+    "y": 192.81676149368286,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "5412f014.12424",
+    "type": "for",
+    "name": "for nidx..service-data.vnfs.vnf[]",
+    "xml": "<for index='nidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1303.3882789611816,
+    "y": 286.8166699409485,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "148fbb0c.c24365"
+      ]
+    ]
+  },
+  {
+    "id": "148fbb0c.c24365",
+    "type": "switchNode",
+    "name": "switch vnf-id found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$nidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1559.388298034668,
+    "y": 286.8166699409485,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "b65bbab.9ca2c48"
+      ]
+    ]
+  },
+  {
+    "id": "b65bbab.9ca2c48",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1735.8883514404297,
+    "y": 289.8166699409485,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "1a4ecfb7.7d8f8"
+      ]
+    ]
+  },
+  {
+    "id": "1a4ecfb7.7d8f8",
+    "type": "set",
+    "name": "set tmp.nidx and ctx.vnf-data",
+    "xml": "<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$nidx].vnf-data.`' />\n",
+    "comments": "",
+    "x": 1902.8883666992188,
+    "y": 350.8166699409485,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "e8e5a7c0.1c4938",
+    "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": 1548.3882904052734,
+    "y": 350.81667375564575,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "7e0c16e8.e0d2b8",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1410.8882904052734,
+    "y": 350.81667375564575,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "e8e5a7c0.1c4938"
+      ]
+    ]
+  },
+  {
+    "id": "5c8ef11.4d9e21",
+    "type": "set",
+    "name": "set vnfId and vnf-object-path",
+    "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='vnf-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vnf-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'` \" />",
+    "comments": "",
+    "x": 578.9050178527832,
+    "y": 641.3335304260254,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "c063c177.c449a",
+    "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": 538.0161476135254,
+    "y": 759.8890404701233,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "372cbde7.587372",
+    "type": "delete",
+    "name": "delete site instance configuration in AAI",
+    "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='site-resource' \n        key='site-resource.site-resource-id = $vnf-topology-operation-input.vnf-information.vnf-id'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 606.4265480041504,
+    "y": 697.1378149986267,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "4b86cba0.d35104",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1104.194751739502,
+    "y": 386.14191007614136,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "6a5ea2dd.9c807c",
+    "type": "set",
+    "name": "set prop.vnfNewidx",
+    "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",
+    "comments": "",
+    "x": 585.0000762939453,
+    "y": 422.00006771087646,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "55ed5ce8.2b1ae4",
+    "type": "for",
+    "name": "for lidx..service-data.vnfs.vnf[]",
+    "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 602.0000381469727,
+    "y": 472.00007152557373,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "1913c26.edfaf3e"
+      ]
+    ]
+  },
+  {
+    "id": "1913c26.edfaf3e",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 863.000114440918,
+    "y": 476.0001063346863,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "b02e3feb.ffee3"
+      ]
+    ]
+  },
+  {
+    "id": "b02e3feb.ffee3",
+    "type": "switchNode",
+    "name": "switch vnf-id found",
+    "xml": "<switch test=\"`$service-data.vnfs.vnf[$lidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1055.0000610351562,
+    "y": 485.000150680542,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "e6008550.52d2f8"
+      ]
+    ]
+  },
+  {
+    "id": "e6008550.52d2f8",
+    "type": "outcomeFalse",
+    "name": "false",
+    "xml": "<outcome value='false'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1241.0000762939453,
+    "y": 469.00003719329834,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "59e45e4c.5156f"
+      ]
+    ]
+  },
+  {
+    "id": "59e45e4c.5156f",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1392,
+    "y": 470.00007343292236,
+    "z": "4e13a6ca.bd7208",
+    "wires": [
+      [
+        "9655d3b.ed2503",
+        "ee40dd88.8d1f1"
+      ]
+    ]
+  },
+  {
+    "id": "9655d3b.ed2503",
+    "type": "set",
+    "name": "set  vnf data",
+    "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$lidx].vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$lidx].vnf-data.`' />\n",
+    "comments": "",
+    "x": 1557.0000953674316,
+    "y": 445.00022888183594,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "ee40dd88.8d1f1",
+    "type": "set",
+    "name": "set prop.vnfNewidx",
+    "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",
+    "comments": "",
+    "x": 1579.0000953674316,
+    "y": 501.0001926422119,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "ba708495.2ebbe8",
+    "type": "set",
+    "name": "set new vnf length",
+    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",
+    "comments": "",
+    "x": 571.101432800293,
+    "y": 525.8043546676636,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  },
+  {
+    "id": "4890886d.4993b8",
+    "type": "set",
+    "name": "Remove vnf from ServiceData",
+    "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$prop.vnfidxLen].\" value=\"\"/>\n\n",
+    "comments": "",
+    "x": 608.0001106262207,
+    "y": 581.0001163482666,
+    "z": "4e13a6ca.bd7208",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_validate-sdwan-network-input-parameters.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_validate-sdwan-network-input-parameters.json
new file mode 100644
index 0000000..3d6d6bc
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_validate-sdwan-network-input-parameters.json
@@ -0,0 +1,1201 @@
+[
+  {
+    "id": "afeb4b10.2ec518",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 107.00390625,
+    "y": 51.76191961765289,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "9ef25946.8f8138"
+      ]
+    ]
+  },
+  {
+    "id": "9ef25946.8f8138",
+    "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": 352.2896194458008,
+    "y": 50.999998688697815,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "92a3d741.4ec998"
+      ]
+    ]
+  },
+  {
+    "id": "92a3d741.4ec998",
+    "type": "method",
+    "name": "validate-sdwan-network-input-parameters",
+    "xml": "<method rpc='validate-sdwan-network-input-parameters' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 309.92059326171875,
+    "y": 126.01493704319,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "11ca3a4.93689c6"
+      ]
+    ]
+  },
+  {
+    "id": "11ca3a4.93689c6",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 593.9206008911133,
+    "y": 114.01496183872223,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "2b12fe90.83a562",
+        "91c94469.10e2a8"
+      ]
+    ]
+  },
+  {
+    "id": "2b12fe90.83a562",
+    "type": "switchNode",
+    "name": "switch  svc-action",
+    "xml": "<switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 874.9206008911133,
+    "y": 109.01494753360748,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "d55b2509.439598"
+      ]
+    ]
+  },
+  {
+    "id": "d55b2509.439598",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1065.6349029541016,
+    "y": 110.0149484872818,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "aa102400.8ed8a8"
+      ]
+    ]
+  },
+  {
+    "id": "aa102400.8ed8a8",
+    "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": 1240.0634536743164,
+    "y": 109.01494085788727,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "91c94469.10e2a8",
+    "type": "switchNode",
+    "name": "switch svc-action",
+    "xml": "<switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 175.92054748535156,
+    "y": 385.01496183872223,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "13054de7.037f72",
+        "196d19c4.864306",
+        "766974bb.0b0c8c",
+        "c4c13754.2744e8",
+        "d97f2f03.ab243"
+      ]
+    ]
+  },
+  {
+    "id": "13054de7.037f72",
+    "type": "outcome",
+    "name": "create",
+    "xml": "<outcome value='create'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 384.50392150878906,
+    "y": 214.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "ce85f1c.60e7f1"
+      ]
+    ]
+  },
+  {
+    "id": "ce85f1c.60e7f1",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 545.5039215087891,
+    "y": 214.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "14ed1ad7.45eb75"
+      ]
+    ]
+  },
+  {
+    "id": "196d19c4.864306",
+    "type": "outcome",
+    "name": "deactivate",
+    "xml": "<outcome value='deactivate'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 357.49591064453125,
+    "y": 823.1904579401016,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "39810a58.826e96"
+      ]
+    ]
+  },
+  {
+    "id": "766974bb.0b0c8c",
+    "type": "outcome",
+    "name": "delete",
+    "xml": "<outcome value='delete'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 361.2102928161621,
+    "y": 993.9050155878067,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "8132304a.a7e6f"
+      ]
+    ]
+  },
+  {
+    "id": "c4c13754.2744e8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 360.97218322753906,
+    "y": 1167.3333011865616,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "4398ae0d.dda9f"
+      ]
+    ]
+  },
+  {
+    "id": "4398ae0d.dda9f",
+    "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-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n",
+    "comments": "",
+    "x": 544.5437164306641,
+    "y": 1167.9524418115616,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "14ed1ad7.45eb75",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 746.0038986206055,
+    "y": 212.42859840393066,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "501d8531.74505c",
+        "9ab1ce33.97d5d"
+      ]
+    ]
+  },
+  {
+    "id": "501d8531.74505c",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 944.5039215087891,
+    "y": 234.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "fe537f74.2801e"
+      ]
+    ]
+  },
+  {
+    "id": "fe537f74.2801e",
+    "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": 1082.003921508789,
+    "y": 234.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "8d93a83c.557ca8",
+    "type": "other",
+    "name": "DeleteSDWANConnectivityInstance",
+    "xml": "<outcome value='DeleteSDWANConnectivityInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 783.0673332214355,
+    "y": 994.460285782814,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "ce9cc56b.d10598"
+      ]
+    ]
+  },
+  {
+    "id": "5b1ba696.fd4ac8",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 718.6228790283203,
+    "y": 1066.6825548410416,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "781f0dda.132404"
+      ]
+    ]
+  },
+  {
+    "id": "781f0dda.132404",
+    "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": 878.956298828125,
+    "y": 1068.7936922311783,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "ce9cc56b.d10598",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1026.9562072753906,
+    "y": 996.6825376749039,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "d93bc459.24d028",
+        "c2120486.723e58",
+        "bad3546.ed6b1a8",
+        "36e3a49c.e1e66c"
+      ]
+    ]
+  },
+  {
+    "id": "d97f2f03.ab243",
+    "type": "outcome",
+    "name": "activate",
+    "xml": "<outcome value='activate'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 378.4324760437012,
+    "y": 477.47623217105865,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "11ba1c11.e436c4"
+      ]
+    ]
+  },
+  {
+    "id": "11ba1c11.e436c4",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 561.2896423339844,
+    "y": 474.61908209323883,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "4b7aba5c.10de74",
+        "b08d251d.2801a8"
+      ]
+    ]
+  },
+  {
+    "id": "4b7aba5c.10de74",
+    "type": "other",
+    "name": "ActivateSDWANConnectivityInstance",
+    "xml": "<outcome value='ActivateSDWANConnectivityInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 814.5039215087891,
+    "y": 454.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "59e37406.bc397c"
+      ]
+    ]
+  },
+  {
+    "id": "b08d251d.2801a8",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 744.5039215087891,
+    "y": 494.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "a5228d9.922b87"
+      ]
+    ]
+  },
+  {
+    "id": "a5228d9.922b87",
+    "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": 902.0039215087891,
+    "y": 494.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "59e37406.bc397c",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1045.503921508789,
+    "y": 454.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "bad3546.ed6b1a8",
+        "d93bc459.24d028",
+        "c2120486.723e58",
+        "3af5d77e.c8b058"
+      ]
+    ]
+  },
+  {
+    "id": "33ba9655.52034a",
+    "type": "other",
+    "name": "DeactivateSDWANConnectivityInstance",
+    "xml": "<outcome value='DeactivateSDWANConnectivityInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 800.9245376586914,
+    "y": 824.9048515558243,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "fc8127c.e4d07d8"
+      ]
+    ]
+  },
+  {
+    "id": "a9fb5199.fc8f5",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 715.9245300292969,
+    "y": 893.9048591852188,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "98e8303b.28c"
+      ]
+    ]
+  },
+  {
+    "id": "98e8303b.28c",
+    "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": 896.9245452880859,
+    "y": 894.9048591852188,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "39810a58.826e96",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 537.7815933227539,
+    "y": 825.3806854486465,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "33ba9655.52034a",
+        "a9fb5199.fc8f5"
+      ]
+    ]
+  },
+  {
+    "id": "8132304a.a7e6f",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 541.5593948364258,
+    "y": 993.7142394781113,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "8d93a83c.557ca8",
+        "5b1ba696.fd4ac8"
+      ]
+    ]
+  },
+  {
+    "id": "fc8127c.e4d07d8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1060.8926849365234,
+    "y": 827.7142463922501,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "d93bc459.24d028",
+        "c2120486.723e58",
+        "bad3546.ed6b1a8",
+        "376f44f.91631bc"
+      ]
+    ]
+  },
+  {
+    "id": "9ab1ce33.97d5d",
+    "type": "other",
+    "name": "CreateSDWANConnectivityInstance",
+    "xml": "<outcome value='CreateSDWANConnectivityInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1010.5039215087891,
+    "y": 194.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "b176ae48.6fe8f"
+      ]
+    ]
+  },
+  {
+    "id": "b176ae48.6fe8f",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1225.503921508789,
+    "y": 194.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "cf12d38b.a3405"
+      ]
+    ]
+  },
+  {
+    "id": "cf12d38b.a3405",
+    "type": "for",
+    "name": "for loop i - Network input parameters",
+    "xml": "<for index=\"i\" start=\"0\" end=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1476.003921508789,
+    "y": 194.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "635e00b0.83e09"
+      ]
+    ]
+  },
+  {
+    "id": "635e00b0.83e09",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1704.503921508789,
+    "y": 194.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "d02f1a6c.9ed398",
+        "7b155a14.1d88e4",
+        "a5572ff3.83699"
+      ]
+    ]
+  },
+  {
+    "id": "d02f1a6c.9ed398",
+    "type": "set",
+    "name": "clear tmp-data",
+    "xml": "<set>\n<parameter name='tmp.name' value='' />\n<parameter name='tmp.value' value='' />\n",
+    "comments": "",
+    "x": 1887.503921508789,
+    "y": 154.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "7b155a14.1d88e4",
+    "type": "set",
+    "name": "set tmp-data",
+    "xml": "<set>\n<parameter name='tmp.name' value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$i].name`\"/>\n<parameter name='tmp.value' value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$i].value`\"/>\n",
+    "comments": "",
+    "x": 1882.003921508789,
+    "y": 194.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "a5572ff3.83699",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$tmp.name`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1882.003921508789,
+    "y": 234.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "4c1f2b9e.d59164",
+        "930c8bdc.0463f8",
+        "6c76b8a1.37a458"
+      ]
+    ]
+  },
+  {
+    "id": "9f5e4298.3ba59",
+    "type": "switchNode",
+    "name": "switch value",
+    "xml": "<switch test=\"`$tmp.value`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2342.0040893554688,
+    "y": 186.42861008644104,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "b3a0c7f3.4a5588"
+      ]
+    ]
+  },
+  {
+    "id": "6c76b8a1.37a458",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2101.5042572021484,
+    "y": 252.42859768867493,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "6ab0e444.08d8bc"
+      ]
+    ]
+  },
+  {
+    "id": "6ab0e444.08d8bc",
+    "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-topology-operation-input.network-request-input.network-input-parameters.param[' + $i + ']' + '.name is a required input'`\" />\n",
+    "comments": "",
+    "x": 2276.5042610168457,
+    "y": 251.42859768867493,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "4c1f2b9e.d59164",
+    "type": "other",
+    "name": "name",
+    "xml": "<outcome value='name'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2101.5042572021484,
+    "y": 136.42859196662903,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "9f5e4298.3ba59"
+      ]
+    ]
+  },
+  {
+    "id": "930c8bdc.0463f8",
+    "type": "other",
+    "name": "topology",
+    "xml": "<outcome value='topology'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2113.5040130615234,
+    "y": 190.09525418281555,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "9f5e4298.3ba59"
+      ]
+    ]
+  },
+  {
+    "id": "b3a0c7f3.4a5588",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2485.5040893554688,
+    "y": 186.42861008644104,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "e1e167f3.9a8ab8"
+      ]
+    ]
+  },
+  {
+    "id": "e1e167f3.9a8ab8",
+    "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.param '+ $tmp.name +' is a required input'`\" />\n",
+    "comments": "",
+    "x": 2643.5040893554688,
+    "y": 186.42861008644104,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "bad3546.ed6b1a8",
+    "type": "switchNode",
+    "name": "switch service-data.networks.network_length",
+    "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1350.3927841186523,
+    "y": 497.7619024515152,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "5db60397.24e42c",
+        "d1ba2f0d.dcd85"
+      ]
+    ]
+  },
+  {
+    "id": "5db60397.24e42c",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1604.003921508789,
+    "y": 474.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "9216f078.ec3f4"
+      ]
+    ]
+  },
+  {
+    "id": "9216f078.ec3f4",
+    "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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n",
+    "comments": "",
+    "x": 1782.003921508789,
+    "y": 474.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "d1ba2f0d.dcd85",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1584.503921508789,
+    "y": 514.428589463234,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "9e24923a.18e3c"
+      ]
+    ]
+  },
+  {
+    "id": "9e24923a.18e3c",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1745.503921508789,
+    "y": 514.428589463234,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "a46227c4.f759c8",
+        "748af6ef.c63f88"
+      ]
+    ]
+  },
+  {
+    "id": "a46227c4.f759c8",
+    "type": "for",
+    "name": "for nidx..service-data.networks.network[]",
+    "xml": "<for index='nidx' start='0' end='`$service-data.networks.network_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2008.003921508789,
+    "y": 494.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "fa1d115b.6d17b"
+      ]
+    ]
+  },
+  {
+    "id": "fa1d115b.6d17b",
+    "type": "switchNode",
+    "name": "switch networkid found",
+    "xml": "<switch test=\"`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2294.003921508789,
+    "y": 494.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "37889212.4c53ee"
+      ]
+    ]
+  },
+  {
+    "id": "37889212.4c53ee",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2464.503921508789,
+    "y": 494.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "b3a1659a.240748"
+      ]
+    ]
+  },
+  {
+    "id": "272a6015.e0db5",
+    "type": "set",
+    "name": "set tmp.nidx and ctx.network-data",
+    "xml": "<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='ctx.network-data.' value='`$service-data.networks.network[$nidx].network-data.`' />\n",
+    "comments": "",
+    "x": 2865.5039825439453,
+    "y": 491.42863273620605,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "732b4efd.21101",
+    "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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n",
+    "comments": "",
+    "x": 2222.003921508789,
+    "y": 534.428589463234,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "763f7f60.997eb",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2084.503921508789,
+    "y": 534.428589463234,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "732b4efd.21101"
+      ]
+    ]
+  },
+  {
+    "id": "748af6ef.c63f88",
+    "type": "switchNode",
+    "name": "switch tmp.nidx ",
+    "xml": "<switch test=\"`$tmp.nidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1930.503921508789,
+    "y": 534.428589463234,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "763f7f60.997eb"
+      ]
+    ]
+  },
+  {
+    "id": "3af5d77e.c8b058",
+    "type": "switchNode",
+    "name": "switch network-level-oper-status",
+    "xml": "<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1309.6706085205078,
+    "y": 573.3174673318863,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "c33efa09.b018d8",
+        "4cfec973.493b68"
+      ]
+    ]
+  },
+  {
+    "id": "c33efa09.b018d8",
+    "type": "outcome",
+    "name": "outcome Created",
+    "xml": "<outcome value='Created'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1606.5040245056152,
+    "y": 573.3174654245377,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "7c4edd00.49aac4"
+      ]
+    ]
+  },
+  {
+    "id": "4cfec973.493b68",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1574.5040245056152,
+    "y": 613.3174654245377,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "dabe6a18.d1d558"
+      ]
+    ]
+  },
+  {
+    "id": "dabe6a18.d1d558",
+    "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 is not in appropriate state for activate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />",
+    "comments": "",
+    "x": 1732.0040245056152,
+    "y": 613.3174654245377,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "c2120486.723e58",
+    "type": "switchNode",
+    "name": "switch network-id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-information.network-id`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1256.503921508789,
+    "y": 434.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "c9dd79cc.30f0a8"
+      ]
+    ]
+  },
+  {
+    "id": "c9dd79cc.30f0a8",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1484.503921508789,
+    "y": 434.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "f8690bd9.02e568"
+      ]
+    ]
+  },
+  {
+    "id": "f8690bd9.02e568",
+    "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": 1622.003921508789,
+    "y": 434.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "d93bc459.24d028",
+    "type": "execute",
+    "name": "execute requiredParameters",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"network-topology-operation-input.network-information.network-id\" value=\"$network-topology-operation-input.network-information.network-id\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1291.003921508789,
+    "y": 394.42858946323395,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "376f44f.91631bc",
+    "type": "switchNode",
+    "name": "switch network-level-oper-status",
+    "xml": "<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1337.837173461914,
+    "y": 823.3174444437027,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "4ff725b8.75f0ac",
+        "b79412d2.13234"
+      ]
+    ]
+  },
+  {
+    "id": "4ff725b8.75f0ac",
+    "type": "outcome",
+    "name": "outcome Active",
+    "xml": "<outcome value='Active'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1611.1705474853516,
+    "y": 797.7619024515152,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "d84d7eae.ba968"
+      ]
+    ]
+  },
+  {
+    "id": "b79412d2.13234",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1581.1705474853516,
+    "y": 837.7619024515152,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "b8e9f263.26346"
+      ]
+    ]
+  },
+  {
+    "id": "b8e9f263.26346",
+    "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 is not in appropriate state for deactivate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />",
+    "comments": "",
+    "x": 1747.1705474853516,
+    "y": 839.7619024515152,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "36e3a49c.e1e66c",
+    "type": "switchNode",
+    "name": "switch network-level-oper-status",
+    "xml": "<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1326.726089477539,
+    "y": 994.4285284280777,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "fc99139.ec0cdf",
+        "4e170b57.b8a2a4"
+      ]
+    ]
+  },
+  {
+    "id": "fc99139.ec0cdf",
+    "type": "outcome",
+    "name": "outcome PendingDelete",
+    "xml": "<outcome value='PendingDelete'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1626.7261505126953,
+    "y": 962.2063242197037,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "9aca9b79.d849b8"
+      ]
+    ]
+  },
+  {
+    "id": "4e170b57.b8a2a4",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1570.0594635009766,
+    "y": 1008.8729864358902,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "50d4161c.bde178"
+      ]
+    ]
+  },
+  {
+    "id": "50d4161c.bde178",
+    "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 is not in appropriate state for delete. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />",
+    "comments": "",
+    "x": 1736.0594635009766,
+    "y": 1010.8729864358902,
+    "z": "7458dba4.32cb64",
+    "wires": []
+  },
+  {
+    "id": "7c4edd00.49aac4",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1794.5039024353027,
+    "y": 574.4285494089127,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "d84d7eae.ba968",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1811.170425415039,
+    "y": 795.910034775734,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "9aca9b79.d849b8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1842.2816314697266,
+    "y": 962.5766607522964,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "b3a1659a.240748",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2614.6704330444336,
+    "y": 490.7619377374649,
+    "z": "7458dba4.32cb64",
+    "wires": [
+      [
+        "272a6015.e0db5"
+      ]
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.json b/sdnc-a1-controller/oam/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..c5e1d74
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.json
@@ -0,0 +1,1349 @@
+[

+    {

+        "id": "565ee583.5719ac",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 120.00390625,

+        "y": 61.00390625,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "2253fb6a.010fd4"

+            ]

+        ]

+    },

+    {

+        "id": "2253fb6a.010fd4",

+        "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": 365.2896194458008,

+        "y": 60.24198532104492,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "d1afaf4b.7367a"

+            ]

+        ]

+    },

+    {

+        "id": "d1afaf4b.7367a",

+        "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": 448.9206008911133,

+        "y": 195.25692462921143,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "d3d09840.859ab8"

+            ]

+        ]

+    },

+    {

+        "id": "d3d09840.859ab8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 732.9206085205078,

+        "y": 183.25694942474365,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "8b6f9b12.95ea88",

+                "9c84b6f9.1f9628",

+                "257f53b6.ca8b0c",

+                "e33dc3b4.6bdba",

+                "fa0b83ce.07d0f"

+            ]

+        ]

+    },

+    {

+        "id": "8b6f9b12.95ea88",

+        "type": "switchNode",

+        "name": "switch  svc-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 992.920539855957,

+        "y": 31.256945610046387,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "c5870f3a.aab91"

+            ]

+        ]

+    },

+    {

+        "id": "c5870f3a.aab91",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1183.6348419189453,

+        "y": 32.2569465637207,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "255dc4d8.4591ac"

+            ]

+        ]

+    },

+    {

+        "id": "255dc4d8.4591ac",

+        "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": 1358.0633926391602,

+        "y": 31.256938934326172,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "9c84b6f9.1f9628",

+        "type": "switchNode",

+        "name": "switch svc-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 329.9205627441406,

+        "y": 454.2569398880005,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "4da03be9.a489d4",

+                "1cd623c5.d01cfc",

+                "11a6977d.d05489",

+                "fd6aa5e0.36c518",

+                "74577ecc.ef74c"

+            ]

+        ]

+    },

+    {

+        "id": "4da03be9.a489d4",

+        "type": "outcome",

+        "name": "create",

+        "xml": "<outcome value='create'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 523.5039291381836,

+        "y": 283.67057704925537,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "b3001ec4.96f68"

+            ]

+        ]

+    },

+    {

+        "id": "b3001ec4.96f68",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 684.5039291381836,

+        "y": 283.67057704925537,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "8fa4b53.eb65f48"

+            ]

+        ]

+    },

+    {

+        "id": "1cd623c5.d01cfc",

+        "type": "outcome",

+        "name": "deactivate",

+        "xml": "<outcome value='deactivate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 496.4959182739258,

+        "y": 892.432445526123,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "e6bca749.2ecd58"

+            ]

+        ]

+    },

+    {

+        "id": "11a6977d.d05489",

+        "type": "outcome",

+        "name": "delete",

+        "xml": "<outcome value='delete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 500.21030044555664,

+        "y": 1063.1470031738281,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "141627b0.510318"

+            ]

+        ]

+    },

+    {

+        "id": "fd6aa5e0.36c518",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 499.9721908569336,

+        "y": 1236.575288772583,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "1eabd7f1.a915e8"

+            ]

+        ]

+    },

+    {

+        "id": "1eabd7f1.a915e8",

+        "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": 683.5437240600586,

+        "y": 1237.194429397583,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "8fa4b53.eb65f48",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 885.00390625,

+        "y": 281.6705859899521,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "1fcbac14.14ab84",

+                "5011e60c.42d288"

+            ]

+        ]

+    },

+    {

+        "id": "1fcbac14.14ab84",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1070.5038986206055,

+        "y": 309.67058277130127,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "bc3da556.5c5568"

+            ]

+        ]

+    },

+    {

+        "id": "bc3da556.5c5568",

+        "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": 1221.0039291381836,

+        "y": 303.67057704925537,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "967ffa6b.7cc5f8",

+        "type": "other",

+        "name": "DeleteSDWANVpnInstance",

+        "xml": "<outcome value='DeleteSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 936.0673141479492,

+        "y": 1059.7022743225098,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "76f6c61a.a081c8"

+            ]

+        ]

+    },

+    {

+        "id": "1f6d106b.3f479",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 857.6228866577148,

+        "y": 1135.924542427063,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "649057db.a16248"

+            ]

+        ]

+    },

+    {

+        "id": "649057db.a16248",

+        "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": 1017.9563064575195,

+        "y": 1138.0356798171997,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "76f6c61a.a081c8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1165.9562149047852,

+        "y": 1065.9245252609253,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "123885f7.86e85a",

+                "5107dc7c.bd16c4",

+                "d0483b54.f8cc78",

+                "ee1682f5.ef519"

+            ]

+        ]

+    },

+    {

+        "id": "74577ecc.ef74c",

+        "type": "outcome",

+        "name": "activate",

+        "xml": "<outcome value='activate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 517.4324836730957,

+        "y": 546.7182197570801,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "63a76ac2.a9ff44"

+            ]

+        ]

+    },

+    {

+        "id": "63a76ac2.a9ff44",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 700.2896499633789,

+        "y": 543.8610696792603,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "20847c6f.c84284",

+                "d8768536.d2ed78"

+            ]

+        ]

+    },

+    {

+        "id": "20847c6f.c84284",

+        "type": "other",

+        "name": "ActivateSDWANVpnInstance",

+        "xml": "<outcome value='ActivateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 953.5039291381836,

+        "y": 523.6705770492554,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "888440a5.f74eb"

+            ]

+        ]

+    },

+    {

+        "id": "d8768536.d2ed78",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 883.5039291381836,

+        "y": 563.6705770492554,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "24d41f6.7d3c7e"

+            ]

+        ]

+    },

+    {

+        "id": "24d41f6.7d3c7e",

+        "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": 1041.0039291381836,

+        "y": 563.6705770492554,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "888440a5.f74eb",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1184.5039291381836,

+        "y": 523.6705770492554,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "d0483b54.f8cc78",

+                "123885f7.86e85a",

+                "5107dc7c.bd16c4",

+                "33a9d2fa.2f6b4e"

+            ]

+        ]

+    },

+    {

+        "id": "9770e43b.dbcf68",

+        "type": "other",

+        "name": "DeactivateSDWANVpnInstance",

+        "xml": "<outcome value='DeactivateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 939.9245452880859,

+        "y": 894.1468391418457,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "41ce9967.86f308"

+            ]

+        ]

+    },

+    {

+        "id": "672e2ef2.4ddd3",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 854.9245376586914,

+        "y": 963.1468467712402,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "25186dab.68a632"

+            ]

+        ]

+    },

+    {

+        "id": "25186dab.68a632",

+        "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": 1035.9245529174805,

+        "y": 964.1468467712402,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "e6bca749.2ecd58",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 676.7816009521484,

+        "y": 896.6227102279663,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "9770e43b.dbcf68",

+                "672e2ef2.4ddd3"

+            ]

+        ]

+    },

+    {

+        "id": "141627b0.510318",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 680.5594024658203,

+        "y": 1062.9562270641327,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "967ffa6b.7cc5f8",

+                "1f6d106b.3f479"

+            ]

+        ]

+    },

+    {

+        "id": "41ce9967.86f308",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1199.892692565918,

+        "y": 896.9562339782715,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "123885f7.86e85a",

+                "5107dc7c.bd16c4",

+                "d0483b54.f8cc78",

+                "f43dfee.04573"

+            ]

+        ]

+    },

+    {

+        "id": "5011e60c.42d288",

+        "type": "other",

+        "name": "CreateSDWANVpnInstance",

+        "xml": "<outcome value='CreateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1169.503890991211,

+        "y": 262.6705741882324,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "11c5bc01.23d164"

+            ]

+        ]

+    },

+    {

+        "id": "11c5bc01.23d164",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1404.50386428833,

+        "y": 261.6705741882324,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "9a240db8.46ca9"

+            ]

+        ]

+    },

+    {

+        "id": "9a240db8.46ca9",

+        "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": 1635.003921508789,

+        "y": 262.6705741882324,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "36e8517a.dc61de"

+            ]

+        ]

+    },

+    {

+        "id": "36e8517a.dc61de",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1843.5039291381836,

+        "y": 263.67057704925537,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "5087b54.83db64c",

+                "58b5e6d.d150018",

+                "8cba0d18.e596b"

+            ]

+        ]

+    },

+    {

+        "id": "5087b54.83db64c",

+        "type": "set",

+        "name": "clear tmp-data",

+        "xml": "<set>\n<parameter name='tmp.name' value='' />\n<parameter name='tmp.value' value='' />\n",

+        "comments": "",

+        "x": 2026.5039291381836,

+        "y": 223.67057704925537,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "58b5e6d.d150018",

+        "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": 2021.0039291381836,

+        "y": 263.67057704925537,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "8cba0d18.e596b",

+        "type": "switchNode",

+        "name": "switch name",

+        "xml": "<switch test=\"`$tmp.name`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2021.0039291381836,

+        "y": 303.67057704925537,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "dfc6f3da.96897",

+                "63a216c3.211888",

+                "efdb7bab.2e3c18"

+            ]

+        ]

+    },

+    {

+        "id": "b6ee6080.0801",

+        "type": "switchNode",

+        "name": "switch value",

+        "xml": "<switch test=\"`$tmp.value`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2481.0040969848633,

+        "y": 255.67059767246246,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "b264801c.4e11d"

+            ]

+        ]

+    },

+    {

+        "id": "efdb7bab.2e3c18",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2240.504264831543,

+        "y": 321.67058527469635,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "dd26b908.49f638"

+            ]

+        ]

+    },

+    {

+        "id": "dd26b908.49f638",

+        "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": 2415.5042686462402,

+        "y": 320.67058527469635,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "dfc6f3da.96897",

+        "type": "other",

+        "name": "name",

+        "xml": "<outcome value='name'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2240.504264831543,

+        "y": 205.67057955265045,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "b6ee6080.0801"

+            ]

+        ]

+    },

+    {

+        "id": "63a216c3.211888",

+        "type": "other",

+        "name": "topology",

+        "xml": "<outcome value='topology'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2252.504020690918,

+        "y": 259.337241768837,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "b6ee6080.0801"

+            ]

+        ]

+    },

+    {

+        "id": "b264801c.4e11d",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2624.5040969848633,

+        "y": 255.67059767246246,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "c8480c33.559c3"

+            ]

+        ]

+    },

+    {

+        "id": "c8480c33.559c3",

+        "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": 2782.5040969848633,

+        "y": 255.67059767246246,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "d0483b54.f8cc78",

+        "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": 1476.3928604125977,

+        "y": 563.0038824081421,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "413b50b3.359c7",

+                "d0f5593e.7ab558"

+            ]

+        ]

+    },

+    {

+        "id": "413b50b3.359c7",

+        "type": "other",

+        "name": "outcome Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1745.0039291381836,

+        "y": 542.670618057251,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "eebfb40.22c4e5"

+            ]

+        ]

+    },

+    {

+        "id": "eebfb40.22c4e5",

+        "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": 1921.0039291381836,

+        "y": 543.6705770492554,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "d0f5593e.7ab558",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1723.5039291381836,

+        "y": 583.6705770492554,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "8025be.3d50da4"

+            ]

+        ]

+    },

+    {

+        "id": "8025be.3d50da4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1884.5039291381836,

+        "y": 583.6705770492554,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "33b03a7.98f32c6",

+                "2d7d1dbe.8a6fa2"

+            ]

+        ]

+    },

+    {

+        "id": "33b03a7.98f32c6",

+        "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": 2147.0039291381836,

+        "y": 563.6705770492554,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "c9190995.7b4398"

+            ]

+        ]

+    },

+    {

+        "id": "c9190995.7b4398",

+        "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": 2433.0039291381836,

+        "y": 563.6705770492554,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "6869b345.2f4eec"

+            ]

+        ]

+    },

+    {

+        "id": "6869b345.2f4eec",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2603.5039291381836,

+        "y": 563.6705770492554,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "434bc2ee.14a91c"

+            ]

+        ]

+    },

+    {

+        "id": "d8b2b2f3.abfe5",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.network-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' 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": 3004.50399017334,

+        "y": 560.6706203222275,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "91c3f042.9f8f6",

+        "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": 2361.0039291381836,

+        "y": 603.6705770492554,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "62656256.c5a38c",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2223.5039291381836,

+        "y": 603.6705770492554,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "91c3f042.9f8f6"

+            ]

+        ]

+    },

+    {

+        "id": "2d7d1dbe.8a6fa2",

+        "type": "switchNode",

+        "name": "switch tmp.vidx ",

+        "xml": "<switch test=\"`$tmp.vidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2069.5039291381836,

+        "y": 603.6705770492554,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "62656256.c5a38c"

+            ]

+        ]

+    },

+    {

+        "id": "33a9d2fa.2f6b4e",

+        "type": "switchNode",

+        "name": "switch network-level-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": 1448.6706161499023,

+        "y": 642.5594549179077,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "1058ce1e.07c3a2",

+                "647164c.65ef89c"

+            ]

+        ]

+    },

+    {

+        "id": "1058ce1e.07c3a2",

+        "type": "outcome",

+        "name": "outcome Created",

+        "xml": "<outcome value='Created'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1745.5040321350098,

+        "y": 642.5594530105591,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "d822f664.efe8c8"

+            ]

+        ]

+    },

+    {

+        "id": "647164c.65ef89c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1713.5040321350098,

+        "y": 682.5594530105591,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "6947f2ff.46fb4c"

+            ]

+        ]

+    },

+    {

+        "id": "6947f2ff.46fb4c",

+        "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": 1871.0040321350098,

+        "y": 682.5594530105591,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "5107dc7c.bd16c4",

+        "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": 1395.5039291381836,

+        "y": 503.67057704925537,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "2868a76.8aeaf58"

+            ]

+        ]

+    },

+    {

+        "id": "2868a76.8aeaf58",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1623.5039291381836,

+        "y": 503.67057704925537,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "ebf2eb70.fb3688"

+            ]

+        ]

+    },

+    {

+        "id": "ebf2eb70.fb3688",

+        "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": 1761.0039291381836,

+        "y": 503.67057704925537,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "123885f7.86e85a",

+        "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": 1430.0039291381836,

+        "y": 463.67057704925537,

+        "z": "c09ce476.40c538",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f43dfee.04573",

+        "type": "switchNode",

+        "name": "switch network-level-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": 1472.8371276855469,

+        "y": 892.559476852417,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "f3a65bdd.c67898",

+                "d0952c59.11171"

+            ]

+        ]

+    },

+    {

+        "id": "f3a65bdd.c67898",

+        "type": "outcome",

+        "name": "outcome Active",

+        "xml": "<outcome value='Active'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1750.170555114746,

+        "y": 867.0038900375366,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "25ff4eac.6201f2"

+            ]

+        ]

+    },

+    {

+        "id": "d0952c59.11171",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1720.170555114746,

+        "y": 907.0038900375366,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "446d50cf.78007"

+            ]

+        ]

+    },

+    {

+        "id": "446d50cf.78007",

+        "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": 1886.170555114746,

+        "y": 909.0038900375366,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "ee1682f5.ef519",

+        "type": "switchNode",

+        "name": "switch network-level-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": 1465.7260971069336,

+        "y": 1063.6705160140991,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "cb2a1ac2.d811d8",

+                "425f06cf.84b998"

+            ]

+        ]

+    },

+    {

+        "id": "cb2a1ac2.d811d8",

+        "type": "outcome",

+        "name": "outcome PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1765.7261581420898,

+        "y": 1031.448311805725,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "bcccebbc.df0278"

+            ]

+        ]

+    },

+    {

+        "id": "425f06cf.84b998",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1709.059471130371,

+        "y": 1078.1149740219116,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "a8198043.31984"

+            ]

+        ]

+    },

+    {

+        "id": "a8198043.31984",

+        "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": 1875.059471130371,

+        "y": 1080.1149740219116,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "d822f664.efe8c8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1937.5040092468262,

+        "y": 643.6705551147461,

+        "z": "c09ce476.40c538",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "25ff4eac.6201f2",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1950.1704330444336,

+        "y": 865.1520223617554,

+        "z": "c09ce476.40c538",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bcccebbc.df0278",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1981.281639099121,

+        "y": 1031.8186483383179,

+        "z": "c09ce476.40c538",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "434bc2ee.14a91c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2753.670440673828,

+        "y": 560.0039253234863,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "d8b2b2f3.abfe5"

+            ]

+        ]

+    },

+    {

+        "id": "257f53b6.ca8b0c",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 968.0104370117188,

+        "y": 107.25240230560303,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "ad7c2596.e39388"

+            ]

+        ]

+    },

+    {

+        "id": "ad7c2596.e39388",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1148.0104179382324,

+        "y": 106.25239181518555,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "94667639.3621e8"

+            ]

+        ]

+    },

+    {

+        "id": "94667639.3621e8",

+        "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": 1297.4391441345215,

+        "y": 107.39530944824219,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "e33dc3b4.6bdba",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 948.0418167114258,

+        "y": 169.52154064178467,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "30c7b890.07a568"

+            ]

+        ]

+    },

+    {

+        "id": "30c7b890.07a568",

+        "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": 1186.0104331970215,

+        "y": 169.2523980140686,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "659e2d6d.62e114"

+            ]

+        ]

+    },

+    {

+        "id": "659e2d6d.62e114",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1401.0104179382324,

+        "y": 167.25239181518555,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "79ae665a.7603a8"

+            ]

+        ]

+    },

+    {

+        "id": "79ae665a.7603a8",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1565.0104179382324,

+        "y": 162.25239181518555,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "d950638a.e6fd1",

+        "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 id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1270.00390625,

+        "y": 215.00390625,

+        "z": "c09ce476.40c538",

+        "wires": []

+    },

+    {

+        "id": "c45b00c9.864fa",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1120.7538146972656,

+        "y": 217.2260284423828,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "d950638a.e6fd1"

+            ]

+        ]

+    },

+    {

+        "id": "fa0b83ce.07d0f",

+        "type": "switchNode",

+        "name": "switch vnf-index",

+        "xml": "<switch test='`$vnf-index`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 958.7537689208984,

+        "y": 218.22602939605713,

+        "z": "c09ce476.40c538",

+        "wires": [

+            [

+                "c45b00c9.864fa"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-activate.json
new file mode 100644
index 0000000..c85d68f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-activate.json
@@ -0,0 +1,373 @@
+[

+    {

+        "id": "951a58ad.b622b8",

+        "type": "method",

+        "name": "method vnf-topology-operation-vpn-site-resource-activate",

+        "xml": "<method rpc='vnf-topology-operation-vpn-site-resource-activate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 274.00390625,

+        "y": 217.9999771118164,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "9f312de.ebe59d"

+            ]

+        ]

+    },

+    {

+        "id": "ce93efc.702d31",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 151.5752944946289,

+        "y": 53.99999809265137,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "6be0f3e4.bbd19c"

+            ]

+        ]

+    },

+    {

+        "id": "6be0f3e4.bbd19c",

+        "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": 250.86099243164062,

+        "y": 128.238105985336,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "951a58ad.b622b8"

+            ]

+        ]

+    },

+    {

+        "id": "9f312de.ebe59d",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 252.24195098876953,

+        "y": 389.666666242294,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "94324bec.af0568",

+                "9e7bd407.d70c08",

+                "240a825d.6226de",

+                "c7c4dafb.a3de48",

+                "af4009d1.a698c8",

+                "db202f3e.dab93",

+                "5b908f22.f7f5a"

+            ]

+        ]

+    },

+    {

+        "id": "94324bec.af0568",

+        "type": "set",

+        "name": "set vnf-level-oper-status to Active",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />",

+        "comments": "",

+        "x": 667.3889236450195,

+        "y": 576.6705493927002,

+        "z": "e44dd5e7.6a1128",

+        "wires": []

+    },

+    {

+        "id": "9e7bd407.d70c08",

+        "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": 587.5756149291992,

+        "y": 702.5970869064331,

+        "z": "e44dd5e7.6a1128",

+        "wires": []

+    },

+    {

+        "id": "240a825d.6226de",

+        "type": "set",

+        "name": "set vnf-index and vnf-object-path",

+        "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",

+        "comments": "",

+        "x": 673.575569152832,

+        "y": 524.5968036651611,

+        "z": "e44dd5e7.6a1128",

+        "wires": []

+    },

+    {

+        "id": "c7c4dafb.a3de48",

+        "type": "switchNode",

+        "name": "switch service-data.vnfs.vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 682.0039672851562,

+        "y": 279.00000354927033,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "f4d8522c.a4d9b",

+                "2bef8938.25fbd6",

+                "4701274a.571b48"

+            ]

+        ]

+    },

+    {

+        "id": "4701274a.571b48",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 940.9728622436523,

+        "y": 240.9687630860135,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "fd0fb6fb.9706b8"

+            ]

+        ]

+    },

+    {

+        "id": "fd0fb6fb.9706b8",

+        "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": 1095.7817497253418,

+        "y": 259.8890316216275,

+        "z": "e44dd5e7.6a1128",

+        "wires": []

+    },

+    {

+        "id": "f4d8522c.a4d9b",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 934.0040016174316,

+        "y": 280.0000846115872,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "fd0fb6fb.9706b8"

+            ]

+        ]

+    },

+    {

+        "id": "2bef8938.25fbd6",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 927.0044097900391,

+        "y": 313.0000884262845,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "f298ba1.2d54c48"

+            ]

+        ]

+    },

+    {

+        "id": "f298ba1.2d54c48",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1074.2739524841309,

+        "y": 313.5547334877774,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "5f9416f7.4477e8"

+            ]

+        ]

+    },

+    {

+        "id": "5f9416f7.4477e8",

+        "type": "for",

+        "name": "for vidx..service-data.vnfs.vnf_length[]",

+        "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1320.2900695800781,

+        "y": 320.42865392845124,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "d1140903.826428"

+            ]

+        ]

+    },

+    {

+        "id": "d1140903.826428",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1539.6397018432617,

+        "y": 319.96873399894685,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "634303dc.2373ac"

+            ]

+        ]

+    },

+    {

+        "id": "634303dc.2373ac",

+        "type": "switchNode",

+        "name": "switch vnfid found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1693.7192993164062,

+        "y": 319.67881605308503,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "acd02e3d.622b7"

+            ]

+        ]

+    },

+    {

+        "id": "acd02e3d.622b7",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1869.6714210510254,

+        "y": 319.5714981285855,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "eb3ae849.6809a8"

+            ]

+        ]

+    },

+    {

+        "id": "eb3ae849.6809a8",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",

+        "comments": "",

+        "x": 2079.2037963867188,

+        "y": 321.32159826438874,

+        "z": "e44dd5e7.6a1128",

+        "wires": []

+    },

+    {

+        "id": "af4009d1.a698c8",

+        "type": "save",

+        "name": "update AnAI - vnf-instance.orchestration-status",

+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\"   \n\t\tkey=\"generic-vnf.vnf-id = $vnfId\" >\n<parameter name=\"orchestration-status\" value=\"Active\" />\n<parameter name=\"vnf-type\" value=\"some vnf-type\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 693.0039291381836,

+        "y": 643.0103750228882,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "db202f3e.dab93",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />",

+        "comments": "",

+        "x": 672.0040435791016,

+        "y": 474.01033639907837,

+        "z": "e44dd5e7.6a1128",

+        "wires": []

+    },

+    {

+        "id": "5b908f22.f7f5a",

+        "type": "switchNode",

+        "name": "switch vnf-level-oper-status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 658.75390625,

+        "y": 379.00390625,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "5ccb4fe0.99339",

+                "814ec70c.a8b9c8"

+            ]

+        ]

+    },

+    {

+        "id": "5ccb4fe0.99339",

+        "type": "outcome",

+        "name": "outcome Created",

+        "xml": "<outcome value='Created'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 904.5872001647949,

+        "y": 380.1150040626526,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "e3b020d0.17a88"

+            ]

+        ]

+    },

+    {

+        "id": "814ec70c.a8b9c8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 882.5872192382812,

+        "y": 430.1150155067444,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            [

+                "50309b2.08dbf64"

+            ]

+        ]

+    },

+    {

+        "id": "50309b2.08dbf64",

+        "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": 1042.086986541748,

+        "y": 433.11501455307007,

+        "z": "e44dd5e7.6a1128",

+        "wires": []

+    },

+    {

+        "id": "e3b020d0.17a88",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1114.8935737609863,

+        "y": 391.44017934799194,

+        "z": "e44dd5e7.6a1128",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-create.json
new file mode 100644
index 0000000..cd53841
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-create.json
@@ -0,0 +1,502 @@
+[

+    {

+        "id": "e09dc00b.609ab",

+        "type": "method",

+        "name": "method vnf-topology-operation-vpn-site-resource-create",

+        "xml": "<method rpc='vnf-topology-operation-vpn-site-resource-create' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 291.00390625,

+        "y": 217.99999130051583,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "a001279f.7137b8"

+            ]

+        ]

+    },

+    {

+        "id": "78874136.c3f8",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 167.57528686523438,

+        "y": 69.99999871850014,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "170ecd1f.10f193"

+            ]

+        ]

+    },

+    {

+        "id": "170ecd1f.10f193",

+        "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": 269.8609924316406,

+        "y": 128.2381027964875,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "e09dc00b.609ab"

+            ]

+        ]

+    },

+    {

+        "id": "a001279f.7137b8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 271.24195098876953,

+        "y": 389.6666630534455,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "35fdba67.5f3b96",

+                "a6b60223.ccb01",

+                "ac671607.c309e8",

+                "a4915ef5.39d4c",

+                "bd07125c.dcc05",

+                "316ae104.544bae",

+                "82137890.04e3b8",

+                "ce749c5a.befe5",

+                "f4ba80c2.8e31",

+                "12d7eb35.4736c5",

+                "59546928.265f38",

+                "e172576e.f62ef8",

+                "69faa522.fdf42c"

+            ]

+        ]

+    },

+    {

+        "id": "a6b60223.ccb01",

+        "type": "set",

+        "name": "set vnf-level-oper-status to Created",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />\n",

+        "comments": "",

+        "x": 693.3887634277344,

+        "y": 753.6705957949162,

+        "z": "304cf6f.a47ab0a",

+        "wires": []

+    },

+    {

+        "id": "35fdba67.5f3b96",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />\n\n",

+        "comments": "",

+        "x": 685.2419509887695,

+        "y": 648.6668478548527,

+        "z": "304cf6f.a47ab0a",

+        "wires": []

+    },

+    {

+        "id": "bd07125c.dcc05",

+        "type": "execute",

+        "name": "execute generate-vnf-index",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.vnf-id\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 673.5754547119141,

+        "y": 598.3334318697453,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "12d7eb35.4736c5",

+        "type": "set",

+        "name": "set vnf-index to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.vnf-id' value='`$prop.vnf-id`' />\n",

+        "comments": "",

+        "x": 684.5755310058594,

+        "y": 705.3334356844425,

+        "z": "304cf6f.a47ab0a",

+        "wires": []

+    },

+    {

+        "id": "ac671607.c309e8",

+        "type": "switchNode",

+        "name": "switch service-data.vnfs.vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 700.5752716064453,

+        "y": 268.3333546221256,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "1edc6f41.babd91",

+                "aca7f913.f18ff8"

+            ]

+        ]

+    },

+    {

+        "id": "1edc6f41.babd91",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 935.2896575927734,

+        "y": 263.476174980402,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "3bb49f12.e3c97"

+            ]

+        ]

+    },

+    {

+        "id": "3bb49f12.e3c97",

+        "type": "set",

+        "name": "set vnf-index=0",

+        "xml": "<set>\n<parameter name='vnf-index' value='0' />\n",

+        "comments": "",

+        "x": 1095.5753631591797,

+        "y": 263.47626653313637,

+        "z": "304cf6f.a47ab0a",

+        "wires": []

+    },

+    {

+        "id": "aca7f913.f18ff8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 931.7181968688965,

+        "y": 296.762006431818,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "58fe99a5.580988"

+            ]

+        ]

+    },

+    {

+        "id": "ca5c1eba.d40a1",

+        "type": "set",

+        "name": "set vnf-index = vnf_length",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />\n",

+        "comments": "",

+        "x": 1324.575439453125,

+        "y": 275.0477320253849,

+        "z": "304cf6f.a47ab0a",

+        "wires": []

+    },

+    {

+        "id": "40fa464c.c22b08",

+        "type": "for",

+        "name": "for each existing VNF",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1313.0040588378906,

+        "y": 310.04770389199257,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "bd02694a.5072f8"

+            ]

+        ]

+    },

+    {

+        "id": "58fe99a5.580988",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1066.4324798583984,

+        "y": 298.7619759142399,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "ca5c1eba.d40a1",

+                "40fa464c.c22b08"

+            ]

+        ]

+    },

+    {

+        "id": "bd02694a.5072f8",

+        "type": "switchNode",

+        "name": "switch vnf-information.vnf-id == service-data.vnfs.vnf[].vnf-id",

+        "xml": "<switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1706.289794921875,

+        "y": 310.6191879808903,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "cac73e5e.acb18"

+            ]

+        ]

+    },

+    {

+        "id": "cac73e5e.acb18",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1987.575496673584,

+        "y": 309.1905933916569,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "61212c2f.b0bcf4"

+            ]

+        ]

+    },

+    {

+        "id": "14393cc8.e466c3",

+        "type": "comment",

+        "name": "make sure this vnf-id doesn't exist already",

+        "info": "",

+        "comments": "",

+        "x": 1675.4324111938477,

+        "y": 274.19058004021645,

+        "z": "304cf6f.a47ab0a",

+        "wires": []

+    },

+    {

+        "id": "a4915ef5.39d4c",

+        "type": "set",

+        "name": "set new vnf_length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />\n",

+        "comments": "",

+        "x": 645.5754547119141,

+        "y": 546.3334285318851,

+        "z": "304cf6f.a47ab0a",

+        "wires": []

+    },

+    {

+        "id": "316ae104.544bae",

+        "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": 632.5754165649414,

+        "y": 1016.5969473421574,

+        "z": "304cf6f.a47ab0a",

+        "wires": []

+    },

+    {

+        "id": "f4ba80c2.8e31",

+        "type": "save",

+        "name": "save service relationship in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \n      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id\n         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id \n         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"generic-vnf\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/generic-vnfs/generic-vnf/' + $prop.vnf-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"generic-vnf.vnf-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.vnf-id`\" />\n\n\n<!--key='service-instance.service-instance-id = $service-data.service-information.service-instance-id -->\n<!--key='service-instance.service-instance-id = $service-data.service-instance-id -->\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 695.2421875,

+        "y": 963.5968405306339,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "82137890.04e3b8",

+        "type": "set",

+        "name": "set vnf-index and vnf-object-path",

+        "xml": "<set>\n<parameter name='vnfId' value='`$prop.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` \" />",

+        "comments": "",

+        "x": 686.5754470825195,

+        "y": 794.5968662798405,

+        "z": "304cf6f.a47ab0a",

+        "wires": []

+    },

+    {

+        "id": "61212c2f.b0bcf4",

+        "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 id ' + $service-data.vnfs.vnf[$idx].vnf-id\n      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`\" />\n",

+        "comments": "",

+        "x": 2116.1468658447266,

+        "y": 360.1906076967716,

+        "z": "304cf6f.a47ab0a",

+        "wires": []

+    },

+    {

+        "id": "ce749c5a.befe5",

+        "type": "save",

+        "name": "save AnAI - vnf-instance.orchestration-status",

+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\"   \n\t\tkey='generic-vnf.vnf-id = $prop.vnf-id' >\n<parameter name=\"orchestration-status\" value=\"Created\" />\n<parameter name=\"in-maint\" value = \"true\" />\n<parameter name=\"vnf-type\" value='`$prop.vnfName`' />\n<parameter name=\"vnf-name\" value = \"`$prop.vnfName`\"/>\n<parameter name=\"model-invariant-id\" value = \"`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`\"/>\n<parameter name=\"model-version-id\" value = \"`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`\"/>\n<parameter name=\"model-customization-id\" value = \"`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 741.5497512817383,

+        "y": 904.2470833361149,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "34539936.d8aa16",

+        "type": "comment",

+        "name": "TODO: change AAI models",

+        "info": "",

+        "comments": "",

+        "x": 675.1860122680664,

+        "y": 863.9742991030216,

+        "z": "304cf6f.a47ab0a",

+        "wires": []

+    },

+    {

+        "id": "c5a6107f.3d2a",

+        "type": "execute",

+        "name": "execute split parameterName",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vnf-topology-operation-input.vnf-request-input.vnf-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": 1101.7434997558594,

+        "y": 357.7499989569187,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f4dc5fe.611b2a",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 905.4872970581055,

+        "y": 362.00187197327614,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "c5a6107f.3d2a",

+                "19bb7944.207ac7"

+            ]

+        ]

+    },

+    {

+        "id": "59546928.265f38",

+        "type": "for",

+        "name": "for loop idx - VNF input parameters",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 690.7089538574219,

+        "y": 364.4462880194187,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "f4dc5fe.611b2a"

+            ]

+        ]

+    },

+    {

+        "id": "e172576e.f62ef8",

+        "type": "set",

+        "name": "set vnf-request-input.",

+        "xml": "<set>\n<parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />\n",

+        "comments": "",

+        "x": 647.7085876464844,

+        "y": 434.7709950506687,

+        "z": "304cf6f.a47ab0a",

+        "wires": []

+    },

+    {

+        "id": "19bb7944.207ac7",

+        "type": "set",

+        "name": "set parameterName",

+        "xml": "<set>\n<parameter name=\"`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",

+        "comments": "",

+        "x": 1078.7434997558594,

+        "y": 403.7499989569187,

+        "z": "304cf6f.a47ab0a",

+        "wires": []

+    },

+    {

+        "id": "69faa522.fdf42c",

+        "type": "for",

+        "name": "for each sdwan-get-request-input-param",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 703.7434997558594,

+        "y": 486.7499989569187,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "53fd8a48.24dea4"

+            ]

+        ]

+    },

+    {

+        "id": "53fd8a48.24dea4",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 929.9761657714844,

+        "y": 485.0937489569187,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "509306d5.d7d638"

+            ]

+        ]

+    },

+    {

+        "id": "509306d5.d7d638",

+        "type": "switchNode",

+        "name": "switch vnf name",

+        "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1086.4761657714844,

+        "y": 483.09380999207497,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "8d04bb1d.476798"

+            ]

+        ]

+    },

+    {

+        "id": "8d04bb1d.476798",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1247.4765319824219,

+        "y": 483.0938710272312,

+        "z": "304cf6f.a47ab0a",

+        "wires": [

+            [

+                "933c4e9d.c3ff2"

+            ]

+        ]

+    },

+    {

+        "id": "933c4e9d.c3ff2",

+        "type": "set",

+        "name": "set vnf name",

+        "xml": "<set>\n<parameter name='prop.vnfName' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1405.4766540527344,

+        "y": 481.69390764832497,

+        "z": "304cf6f.a47ab0a",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-deactivate.json
new file mode 100644
index 0000000..654c97b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-deactivate.json
@@ -0,0 +1,433 @@
+[

+    {

+        "id": "82c84658.77d1d8",

+        "type": "method",

+        "name": "method vnf-topology-operation-vpn-site-resource-deactivate",

+        "xml": "<method rpc='vnf-topology-operation-vpn-site-resource-deactivate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 259,

+        "y": 212.99999639671296,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "20631342.a0c9ec"

+            ]

+        ]

+    },

+    {

+        "id": "d37f40ab.ae426",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 138.5713882446289,

+        "y": 49,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "90866c8c.0566b"

+            ]

+        ]

+    },

+    {

+        "id": "90866c8c.0566b",

+        "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": 237.85708618164062,

+        "y": 123.23810789268464,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "82c84658.77d1d8"

+            ]

+        ]

+    },

+    {

+        "id": "20631342.a0c9ec",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 239.23804473876953,

+        "y": 384.66666814964265,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "223e8ad6.61f2e6",

+                "7a1d8d04.0ea1a4",

+                "fb28da85.68b248",

+                "638a26a6.3e9618",

+                "30cf2c07.d44e14",

+                "fbfde082.6174",

+                "c6ba194.447c2e8"

+            ]

+        ]

+    },

+    {

+        "id": "223e8ad6.61f2e6",

+        "type": "set",

+        "name": "set vnf-level-oper-status to PendingDelete",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />",

+        "comments": "",

+        "x": 647.3849029541016,

+        "y": 533.670627951622,

+        "z": "655c6ddc.e1d044",

+        "wires": []

+    },

+    {

+        "id": "7a1d8d04.0ea1a4",

+        "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": 573.5716247558594,

+        "y": 642.5970582962036,

+        "z": "655c6ddc.e1d044",

+        "wires": []

+    },

+    {

+        "id": "fb28da85.68b248",

+        "type": "set",

+        "name": "set vnf-index and vnf-object-path",

+        "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name=\"vnf-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` \" />",

+        "comments": "",

+        "x": 624.5716247558594,

+        "y": 489.5968955755234,

+        "z": "655c6ddc.e1d044",

+        "wires": []

+    },

+    {

+        "id": "638a26a6.3e9618",

+        "type": "switchNode",

+        "name": "switch service-data.vnfs.vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 669.0000610351562,

+        "y": 274.00000545661896,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "3f139002.12bae",

+                "6579ac8.d79e654",

+                "9fa8cca.2d7cf3"

+            ]

+        ]

+    },

+    {

+        "id": "9fa8cca.2d7cf3",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 927.9689559936523,

+        "y": 235.96876499336213,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "4d9ccf75.fe9af"

+            ]

+        ]

+    },

+    {

+        "id": "4d9ccf75.fe9af",

+        "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": 1082.7778434753418,

+        "y": 254.88903352897614,

+        "z": "655c6ddc.e1d044",

+        "wires": []

+    },

+    {

+        "id": "3f139002.12bae",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 921.0000953674316,

+        "y": 275.00008651893586,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "4d9ccf75.fe9af"

+            ]

+        ]

+    },

+    {

+        "id": "6579ac8.d79e654",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 914.0005035400391,

+        "y": 308.0000903336331,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "4494b904.813828"

+            ]

+        ]

+    },

+    {

+        "id": "4494b904.813828",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1061.2700462341309,

+        "y": 308.55473539512604,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "2347d15a.1d922e",

+                "d97f0a58.4e7db8"

+            ]

+        ]

+    },

+    {

+        "id": "2347d15a.1d922e",

+        "type": "for",

+        "name": "for vidx..service-data.vnfs.vnf_length[]",

+        "xml": "<for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1307.2861633300781,

+        "y": 315.4286558357999,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "ca1a5a9.775eaa8"

+            ]

+        ]

+    },

+    {

+        "id": "ca1a5a9.775eaa8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1526.6357955932617,

+        "y": 314.9687359062955,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "66b63707.1820b8"

+            ]

+        ]

+    },

+    {

+        "id": "66b63707.1820b8",

+        "type": "switchNode",

+        "name": "switch vnfid found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1680.7153930664062,

+        "y": 314.67881796043366,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "ae7ef72d.e51818"

+            ]

+        ]

+    },

+    {

+        "id": "ae7ef72d.e51818",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1856.6675148010254,

+        "y": 314.57150003593415,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "502325a8.6e120c"

+            ]

+        ]

+    },

+    {

+        "id": "502325a8.6e120c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2005.312973022461,

+        "y": 302.97913000267,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "1a1e9503.dc6a5b"

+            ]

+        ]

+    },

+    {

+        "id": "1a1e9503.dc6a5b",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' value='`$vidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />\n",

+        "comments": "",

+        "x": 2267.1997680664062,

+        "y": 280.3215563027188,

+        "z": "655c6ddc.e1d044",

+        "wires": []

+    },

+    {

+        "id": "d97f0a58.4e7db8",

+        "type": "switchNode",

+        "name": "switch tmp.vidx ",

+        "xml": "<switch test=\"`$tmp.vidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1250.0000228881836,

+        "y": 369.99999353569,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "aa55c60d.624e08"

+            ]

+        ]

+    },

+    {

+        "id": "aa55c60d.624e08",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1405.4286499023438,

+        "y": 369.57137701194733,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "d6654813.27fba8"

+            ]

+        ]

+    },

+    {

+        "id": "d6654813.27fba8",

+        "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": 1550.8573913574219,

+        "y": 369.7143146721646,

+        "z": "655c6ddc.e1d044",

+        "wires": []

+    },

+    {

+        "id": "30cf2c07.d44e14",

+        "type": "switchNode",

+        "name": "switch vnf-level-oper-status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 618.0000762939453,

+        "y": 382.88902044296265,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "d1af1362.431e7",

+                "a3563b5d.54f858"

+            ]

+        ]

+    },

+    {

+        "id": "d1af1362.431e7",

+        "type": "outcome",

+        "name": "outcome Active",

+        "xml": "<outcome value='Active'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 863.8333702087402,

+        "y": 384.00011825561523,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "e723a3c3.7cd85"

+            ]

+        ]

+    },

+    {

+        "id": "e723a3c3.7cd85",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1077.139762878418,

+        "y": 393.32530784606934,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a3563b5d.54f858",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 841.8333892822266,

+        "y": 434.00012969970703,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            [

+                "5cde8b39.a2f424"

+            ]

+        ]

+    },

+    {

+        "id": "5cde8b39.a2f424",

+        "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": 1001.3331565856934,

+        "y": 437.0001287460327,

+        "z": "655c6ddc.e1d044",

+        "wires": []

+    },

+    {

+        "id": "fbfde082.6174",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />\n<parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />",

+        "comments": "",

+        "x": 627.0065612792969,

+        "y": 442.010435461998,

+        "z": "655c6ddc.e1d044",

+        "wires": []

+    },

+    {

+        "id": "c6ba194.447c2e8",

+        "type": "save",

+        "name": "update AnAI - vnf-instance.orchestration-status",

+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\"   \n\t\tkey=\"generic-vnf.vnf-id = $vnfId\" >\n<parameter name=\"orchestration-status\" value=\"PendingDelete\" />\n<parameter name=\"vnf-type\" value=\"some vnf-type\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 669.0064239501953,

+        "y": 588.0105141401291,

+        "z": "655c6ddc.e1d044",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-delete.json
new file mode 100644
index 0000000..41f88c4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-delete.json
@@ -0,0 +1,525 @@
+[

+    {

+        "id": "a34c8b72.7caca8",

+        "type": "method",

+        "name": "method vnf-topology-operation-vpn-site-resource-delete",

+        "xml": "<method rpc='vnf-topology-operation-vpn-site-resource-delete' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 244.00390625,

+        "y": 243.9999988079071,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "54a7ab4c.cd61a4"

+            ]

+        ]

+    },

+    {

+        "id": "d8d59f04.fbf0d",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 188.57528686523438,

+        "y": 67.9999988079071,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "115026d6.80ce89"

+            ]

+        ]

+    },

+    {

+        "id": "115026d6.80ce89",

+        "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": 263.8609924316406,

+        "y": 108.23811030387878,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "a34c8b72.7caca8"

+            ]

+        ]

+    },

+    {

+        "id": "e3e6f054.e2739",

+        "type": "comment",

+        "name": "site-vnf-topology-operation-delete",

+        "info": "",

+        "comments": "",

+        "x": 637.9202041625977,

+        "y": 141.58639788627625,

+        "z": "f9f35a3e.860ce8",

+        "wires": []

+    },

+    {

+        "id": "54a7ab4c.cd61a4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 265.24195098876953,

+        "y": 369.6666705608368,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "5cec27dc.b4f998",

+                "e053b514.a7c2a8",

+                "538824d6.c6a6fc",

+                "a69377b.4606688",

+                "3ec3b469.7cc4ec",

+                "25ca64f5.0561dc",

+                "7d20c9cf.4fef58",

+                "4cc92ad1.2ef524",

+                "c339a825.6ccfe8",

+                "dd31e4a5.a51148"

+            ]

+        ]

+    },

+    {

+        "id": "a69377b.4606688",

+        "type": "switchNode",

+        "name": "switch service-data.vnfs.vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 717.6699981689453,

+        "y": 287.2611780166626,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "4a61f22a.1420fc",

+                "5dae927c.612acc"

+            ]

+        ]

+    },

+    {

+        "id": "4a61f22a.1420fc",

+        "type": "other",

+        "name": "outcome Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 982.3923110961914,

+        "y": 269.8168001174927,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "2a103cd5.07a2e4"

+            ]

+        ]

+    },

+    {

+        "id": "2a103cd5.07a2e4",

+        "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": 1163.3921813964844,

+        "y": 264.8166780471802,

+        "z": "f9f35a3e.860ce8",

+        "wires": []

+    },

+    {

+        "id": "5dae927c.612acc",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 967.8923110961914,

+        "y": 321.81676292419434,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "84a26be6.b55a98"

+            ]

+        ]

+    },

+    {

+        "id": "84a26be6.b55a98",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1139.892017364502,

+        "y": 321.8167610168457,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "43c53e66.48eab",

+                "bc2744ca.9b7c98"

+            ]

+        ]

+    },

+    {

+        "id": "bc2744ca.9b7c98",

+        "type": "switchNode",

+        "name": "switch tmp.nidx ",

+        "xml": "<switch test=\"`$tmp.nidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1314.892189025879,

+        "y": 340.81668281555176,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "36fbace6.f16d84"

+            ]

+        ]

+    },

+    {

+        "id": "538824d6.c6a6fc",

+        "type": "switchNode",

+        "name": "switch vnf-level-oper-status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 688.0589981079102,

+        "y": 361.705641746521,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "9a7aa2ec.10efc",

+                "8c012c8c.5b9ba"

+            ]

+        ]

+    },

+    {

+        "id": "9a7aa2ec.10efc",

+        "type": "outcome",

+        "name": "outcome PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 964.8923416137695,

+        "y": 364.8167414665222,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "bf8c6806.a7bce8"

+            ]

+        ]

+    },

+    {

+        "id": "8c012c8c.5b9ba",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 925.8923263549805,

+        "y": 410.8167905807495,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "1ed98412.25294c"

+            ]

+        ]

+    },

+    {

+        "id": "1ed98412.25294c",

+        "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": 1074.3920402526855,

+        "y": 409.81677055358887,

+        "z": "f9f35a3e.860ce8",

+        "wires": []

+    },

+    {

+        "id": "3ec3b469.7cc4ec",

+        "type": "execute",

+        "name": "execute requiredParameters",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"vnf-topology-operation-input.vnf-information.vnf-id\" value=\"$vnf-topology-operation-input.vnf-information.vnf-id\"/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 704.392333984375,

+        "y": 230.8167576789856,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "43c53e66.48eab",

+        "type": "for",

+        "name": "for nidx..service-data.vnfs.vnf[]",

+        "xml": "<for index='nidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1375.3921928405762,

+        "y": 276.8166790008545,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "d2baa75f.a56cd8"

+            ]

+        ]

+    },

+    {

+        "id": "d2baa75f.a56cd8",

+        "type": "switchNode",

+        "name": "switch vnf-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$nidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1631.3922119140625,

+        "y": 276.8166790008545,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "16946d10.c0e503"

+            ]

+        ]

+    },

+    {

+        "id": "16946d10.c0e503",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1807.8922653198242,

+        "y": 279.8166790008545,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "c1f09a0b.fa73f8"

+            ]

+        ]

+    },

+    {

+        "id": "c1f09a0b.fa73f8",

+        "type": "set",

+        "name": "set tmp.nidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$nidx].vnf-data.`' />\n",

+        "comments": "",

+        "x": 1974.8922805786133,

+        "y": 340.8166790008545,

+        "z": "f9f35a3e.860ce8",

+        "wires": []

+    },

+    {

+        "id": "841f20a7.73592",

+        "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": 1620.392204284668,

+        "y": 340.81668281555176,

+        "z": "f9f35a3e.860ce8",

+        "wires": []

+    },

+    {

+        "id": "36fbace6.f16d84",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1482.892204284668,

+        "y": 340.81668281555176,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "841f20a7.73592"

+            ]

+        ]

+    },

+    {

+        "id": "5cec27dc.b4f998",

+        "type": "set",

+        "name": "set vnfId and vnf-object-path",

+        "xml": "<set>\n<parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />\n<parameter name='vnf-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vnf-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'` \" />",

+        "comments": "",

+        "x": 674.9090194702148,

+        "y": 576.3336844444275,

+        "z": "f9f35a3e.860ce8",

+        "wires": []

+    },

+    {

+        "id": "e053b514.a7c2a8",

+        "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": 631.0201721191406,

+        "y": 653.8892436027527,

+        "z": "f9f35a3e.860ce8",

+        "wires": []

+    },

+    {

+        "id": "bf8c6806.a7bce8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1160.1986999511719,

+        "y": 372.14194679260254,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "25ca64f5.0561dc",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",

+        "comments": "",

+        "x": 657.0039901733398,

+        "y": 412.00007677078247,

+        "z": "f9f35a3e.860ce8",

+        "wires": []

+    },

+    {

+        "id": "7d20c9cf.4fef58",

+        "type": "for",

+        "name": "for lidx..service-data.vnfs.vnf[]",

+        "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 681.0039749145508,

+        "y": 454.000075340271,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "69a35263.2a030c"

+            ]

+        ]

+    },

+    {

+        "id": "69a35263.2a030c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 942.0040512084961,

+        "y": 458.00011014938354,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "a4d1dd60.ffc74"

+            ]

+        ]

+    },

+    {

+        "id": "a4d1dd60.ffc74",

+        "type": "switchNode",

+        "name": "switch vnf-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$lidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1134.0039978027344,

+        "y": 467.00015449523926,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "4e20e907.55e038"

+            ]

+        ]

+    },

+    {

+        "id": "4e20e907.55e038",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1320.0040130615234,

+        "y": 451.0000410079956,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "58cf5365.23557c"

+            ]

+        ]

+    },

+    {

+        "id": "58cf5365.23557c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1471.0039367675781,

+        "y": 452.00007724761963,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            [

+                "b99c095f.2dd4a8",

+                "9d68eef8.da1f9"

+            ]

+        ]

+    },

+    {

+        "id": "b99c095f.2dd4a8",

+        "type": "set",

+        "name": "set  vnf data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$lidx].vnf-id`' />\n<parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$lidx].vnf-data.`' />\n",

+        "comments": "",

+        "x": 1638.0041046142578,

+        "y": 426.00026082992554,

+        "z": "f9f35a3e.860ce8",

+        "wires": []

+    },

+    {

+        "id": "9d68eef8.da1f9",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",

+        "comments": "",

+        "x": 1658.0040321350098,

+        "y": 483.0001964569092,

+        "z": "f9f35a3e.860ce8",

+        "wires": []

+    },

+    {

+        "id": "4cc92ad1.2ef524",

+        "type": "set",

+        "name": "set new vnf length",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",

+        "comments": "",

+        "x": 649.1053886413574,

+        "y": 497.8044285774231,

+        "z": "f9f35a3e.860ce8",

+        "wires": []

+    },

+    {

+        "id": "c339a825.6ccfe8",

+        "type": "set",

+        "name": "Remove vnf from ServiceData",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$prop.vnfidxLen].\" value=\"\"/>\n\n",

+        "comments": "",

+        "x": 679.0041580200195,

+        "y": 536.0002117156982,

+        "z": "f9f35a3e.860ce8",

+        "wires": []

+    },

+    {

+        "id": "dd31e4a5.a51148",

+        "type": "save",

+        "name": "delete AnAI - vnf-instance.orchestration-status",

+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\"   \n\t\tkey=\"generic-vnf.vnf-id = $vnfId\" >\n<parameter name=\"orchestration-status\" value=\"PendingDelete\" />\n<parameter name=\"vnf-type\" value=\"some vnf-type\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 736.0105514526367,

+        "y": 613.0106239318848,

+        "z": "f9f35a3e.860ce8",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-activate.json
new file mode 100644
index 0000000..c52930d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-activate.json
@@ -0,0 +1,3087 @@
+[

+    {

+        "id": "28d275a.bfe138a",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 288.4998779296875,

+        "y": 71.99999904632568,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "d19f3a06.022368"

+            ]

+        ]

+    },

+    {

+        "id": "d19f3a06.022368",

+        "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": 182.49988174438477,

+        "y": 144.00001621246338,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "7a2f1ce2.d27b24"

+            ]

+        ]

+    },

+    {

+        "id": "7a2f1ce2.d27b24",

+        "type": "method",

+        "name": "sotn-attachment-topology-operation-activate",

+        "xml": "<method rpc='sotn-attachment-topology-operation-activate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 170.5,

+        "y": 231.99999904632568,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "70eb8f94.914be"

+            ]

+        ]

+    },

+    {

+        "id": "70eb8f94.914be",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 186.5,

+        "y": 787.0002436637878,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "30d38659.9ca3da",

+                "18dde1e3.9567be",

+                "a87c2e3.9552cd",

+                "dd042947.596178",

+                "8aa20f0d.2f659",

+                "2b23bd9b.6febb2",

+                "cff1f9f1.a56e28",

+                "e801191.dd549e8",

+                "b2d7beb8.50e79",

+                "c2e744b7.2f7498",

+                "c7b09f9c.c261d",

+                "f53c2230.a7af7",

+                "c7e83767.1962b8",

+                "cce9c4ca.7b8858",

+                "46437a86.852124",

+                "755ed1f3.fd5e1",

+                "9c164258.b89ac",

+                "8cebe888.0f36b8",

+                "55e9e37.ce7981c",

+                "fc04a841.669f18"

+            ]

+        ]

+    },

+    {

+        "id": "30d38659.9ca3da",

+        "type": "set",

+        "name": "set tmp.ar.allotted-resource-id,etc",

+        "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n",

+        "comments": "",

+        "x": 583.4934387207031,

+        "y": 185.9934859275818,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "1674cd93.86fde2",

+        "type": "comment",

+        "name": "set tmp ar-id to fetch resource from MDSAL",

+        "info": "",

+        "comments": "",

+        "x": 597.9536285400391,

+        "y": 139.02528190612793,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "18dde1e3.9567be",

+        "type": "set",

+        "name": "set tmp.ar.self-link",

+        "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/connection-attachment-topology/'` \" />\n\n",

+        "comments": "",

+        "x": 537.4933776855469,

+        "y": 278.9934911727905,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "8aa20f0d.2f659",

+        "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": 543.7552680969238,

+        "y": 366.6602201461792,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a87c2e3.9552cd",

+        "type": "execute",

+        "name": "generate allotted-resource tmp.ar-url",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 590.7553253173828,

+        "y": 454.66022396087646,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1ee3af2.4b29351",

+        "type": "comment",

+        "name": "GET connection-attachment-allotted-resource from mdsal",

+        "info": "",

+        "comments": "",

+        "x": 622.8081359863281,

+        "y": 574.5386581420898,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "68f1c514.ded31c",

+        "type": "comment",

+        "name": "Used for setting output to API Handler",

+        "info": "",

+        "comments": "",

+        "x": 576.9932861328125,

+        "y": 234.9935007095337,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "bb16939f.0bb2",

+        "type": "comment",

+        "name": "Obtain different URL, template location etc",

+        "info": "For saving resource information to MDSAL & for AAI",

+        "comments": "",

+        "x": 594.9932518005371,

+        "y": 320.882381439209,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "b570954a.774d68",

+        "type": "comment",

+        "name": "Used to Get AR by id to MDSAL, same as self-link",

+        "info": "",

+        "comments": "",

+        "x": 620.9932708740234,

+        "y": 407.8823404312134,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "cc101fab.4516e",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1097.166669845581,

+        "y": 602.9999837875366,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "9738f108.898b7"

+            ]

+        ]

+    },

+    {

+        "id": "9738f108.898b7",

+        "type": "block",

+        "name": "block: atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1241.166748046875,

+        "y": 560.4999017715454,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "8a16f689.6b7ae8"

+            ]

+        ]

+    },

+    {

+        "id": "8a16f689.6b7ae8",

+        "type": "switchNode",

+        "name": "switch cr length",

+        "xml": "<switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1410.0241718292236,

+        "y": 558.1190729141235,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "6caeb4d0.5e023c",

+                "5d2c0047.75c77"

+            ]

+        ]

+    },

+    {

+        "id": "6caeb4d0.5e023c",

+        "type": "other",

+        "name": "outcome 1",

+        "xml": "<outcome value='1'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1565.357307434082,

+        "y": 530.1189880371094,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "5c4df4f9.cc097c"

+            ]

+        ]

+    },

+    {

+        "id": "5c4df4f9.cc097c",

+        "type": "block",

+        "name": "block: atomic",

+        "xml": "<block atomic='true'>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1723.8811111450195,

+        "y": 528.0238351821899,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "1e89f07a.c151d",

+                "eb1d752c.cdd658",

+                "5ff280be.365f2"

+            ]

+        ]

+    },

+    {

+        "id": "51eebf2c.9c9cc",

+        "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=\"Error: Connection attachment resource not exist\" />\n    \n",

+        "comments": "",

+        "x": 1664.01904296875,

+        "y": 635.0660696029663,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "687f563.00b84a8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1089.0184726715088,

+        "y": 638.066068649292,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "82a2b9aa.fbc138"

+            ]

+        ]

+    },

+    {

+        "id": "82a2b9aa.fbc138",

+        "type": "block",

+        "name": "block: atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1269.0184230804443,

+        "y": 638.7326192855835,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "51eebf2c.9c9cc"

+            ]

+        ]

+    },

+    {

+        "id": "5d2c0047.75c77",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1556.6853103637695,

+        "y": 589.3993625640869,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "51eebf2c.9c9cc"

+            ]

+        ]

+    },

+    {

+        "id": "1e89f07a.c151d",

+        "type": "set",

+        "name": "set connection-attachment-ar from get",

+        "xml": "<set>\n<parameter name='connection-attachment-ar.' value='$mdsal-ar.connection-attachment-allotted-resource[0].' />\n",

+        "comments": "",

+        "x": 1970.944564819336,

+        "y": 501.00008726119995,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "5ff280be.365f2",

+        "type": "set",

+        "name": "set oper-status",

+        "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-ar.allotted-resource-status.rpc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",

+        "comments": "",

+        "x": 1904.944595336914,

+        "y": 574.4285898208618,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "eb1d752c.cdd658",

+        "type": "switchNode",

+        "name": "switch order-status",

+        "xml": "<switch test='`$connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1914.9443740844727,

+        "y": 540.0000238418579,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "bd6b8fd9.7425f",

+                "de760411.78f278",

+                "7125493.f496eb8"

+            ]

+        ]

+    },

+    {

+        "id": "bd6b8fd9.7425f",

+        "type": "outcome",

+        "name": "outcome Created",

+        "xml": "<outcome value='Created'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2150.5444564819336,

+        "y": 534.0000548362732,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "1316c298.882dad"

+            ]

+        ]

+    },

+    {

+        "id": "7125493.f496eb8",

+        "type": "outcome",

+        "name": "outcome Other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2144.2589569091797,

+        "y": 614.4286894798279,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "4ad5b58c.e9d9dc"

+            ]

+        ]

+    },

+    {

+        "id": "1316c298.882dad",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2309.0151290893555,

+        "y": 534.3757104873657,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4ad5b58c.e9d9dc",

+        "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\" \n    value=\"`'Existing connection-attachment-allotted-resource with order status of ' + $connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`\" />\n",

+        "comments": "",

+        "x": 2320.1667709350586,

+        "y": 613.0000886917114,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "aa47ad2e.19ee1",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sotn-get-saved-ar-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sotn-get-saved-ar-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 807.8029289245605,

+        "y": 685.4936037063599,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2b23bd9b.6febb2",

+        "type": "block",

+        "name": "block: atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 501.8090286254883,

+        "y": 686.4999742507935,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "aa47ad2e.19ee1"

+            ]

+        ]

+    },

+    {

+        "id": "741f9620.416278",

+        "type": "comment",

+        "name": "GET parent-service-data from mdsal to check existence of other End point",

+        "info": "",

+        "comments": "",

+        "x": 675.000244140625,

+        "y": 720.5317516326904,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "1599946a.f42bac",

+        "type": "for",

+        "name": "for pidx..mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[]",

+        "xml": "<for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1580.685073852539,

+        "y": 884.0042290687561,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "ceda6a9c.0a4ec8"

+            ]

+        ]

+    },

+    {

+        "id": "dd042947.596178",

+        "type": "switchNode",

+        "name": "switch mdsal-psd.service-data.provided-allotted-resources_length",

+        "xml": "<switch test='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 664.6840972900391,

+        "y": 991.7182655334473,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "247c1aa6.c1a456",

+                "fbb0b1cd.ea157",

+                "74dbd737.e80688"

+            ]

+        ]

+    },

+    {

+        "id": "247c1aa6.c1a456",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 992.8271179199219,

+        "y": 1064.5755395889282,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "9f78b17.958795"

+            ]

+        ]

+    },

+    {

+        "id": "bf10870f.24b968",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1176.9543800354004,

+        "y": 923.701548576355,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "1599946a.f42bac",

+                "ea370c09.3b25a"

+            ]

+        ]

+    },

+    {

+        "id": "ceda6a9c.0a4ec8",

+        "type": "switchNode",

+        "name": "switch allotted-resource-id",

+        "xml": "<switch test=\"`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2020.796401977539,

+        "y": 881.0040311813354,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "be801959.a0ebf8",

+                "84824bc9.d75b28"

+            ]

+        ]

+    },

+    {

+        "id": "be801959.a0ebf8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2193.606616973877,

+        "y": 852.4686460494995,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "a1af2e87.6244d"

+            ]

+        ]

+    },

+    {

+        "id": "3e8f5d5b.fa5fe2",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2342.367088317871,

+        "y": 909.3257331848145,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "427ccd7c.897854"

+            ]

+        ]

+    },

+    {

+        "id": "427ccd7c.897854",

+        "type": "set",

+        "name": "set tmp.pidx and ptx.consumed-ar",

+        "xml": "<set>\n<parameter name='tmp.pidx' value='`$pidx`' />\n<parameter name='tmp.provided-ar.' value='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].`' />\n<parameter name='tmp.found-in-ar' value='true' />\n<parameter name='tmp.ep-available' value='true' />",

+        "comments": "",

+        "x": 2577.2245140075684,

+        "y": 907.8972654342651,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "65595641.ab8308",

+        "type": "comment",

+        "name": "Check existence of other AR in parent service data",

+        "info": "Check if other allotted resource is available.",

+        "comments": "",

+        "x": 597.9624137878418,

+        "y": 885.8929605484009,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "fbb0b1cd.ea157",

+        "type": "other",

+        "name": "outcome 1",

+        "xml": "<outcome value='1'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1007.4795875549316,

+        "y": 1003.6772232055664,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "248004a9.093adc"

+            ]

+        ]

+    },

+    {

+        "id": "9f78b17.958795",

+        "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=\"Error: End points not available\" />\n    \n",

+        "comments": "",

+        "x": 1152.4794654846191,

+        "y": 1063.6774682998657,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "74dbd737.e80688",

+        "type": "other",

+        "name": "outcome 2",

+        "xml": "<outcome value='2'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1002.4794006347656,

+        "y": 924.677248954773,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "bf10870f.24b968"

+            ]

+        ]

+    },

+    {

+        "id": "a1af2e87.6244d",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2351.590831756592,

+        "y": 851.6773891448975,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "84824bc9.d75b28",

+        "type": "outcomeTrue",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2200.590473175049,

+        "y": 908.677248954773,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "3e8f5d5b.fa5fe2"

+            ]

+        ]

+    },

+    {

+        "id": "ea370c09.3b25a",

+        "type": "switchNode",

+        "name": "switch tmp.found-in-ar",

+        "xml": "<switch test='`$tmp.found-in-ar`'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1389.479377746582,

+        "y": 977.4550666809082,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "8b1d9769.993e78"

+            ]

+        ]

+    },

+    {

+        "id": "8b1d9769.993e78",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1560.4794120788574,

+        "y": 978.5662879943848,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "68fe21b8.c4eab"

+            ]

+        ]

+    },

+    {

+        "id": "68fe21b8.c4eab",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1709.479507446289,

+        "y": 978.5662870407104,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "251f1840.c6f158",

+                "549841eb.86ecc"

+            ]

+        ]

+    },

+    {

+        "id": "dc9bc603.157798",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2455.5973320007324,

+        "y": 994.7951412200928,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "965d8d48.7805f"

+            ]

+        ]

+    },

+    {

+        "id": "75f7d9fa.a34b78",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2447.44913482666,

+        "y": 1029.8612260818481,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "4a793fb6.ab4b7"

+            ]

+        ]

+    },

+    {

+        "id": "8d42ade.e26d95",

+        "type": "switchNode",

+        "name": "switch mdsal-psd.service-data.networks_length",

+        "xml": "<switch test='`$mdsal-psd.service-data.networks.network_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1452.8128814697266,

+        "y": 1078.8999071121216,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "d9748223.b24bd",

+                "2f9960ae.38ac6"

+            ]

+        ]

+    },

+    {

+        "id": "2f9960ae.38ac6",

+        "type": "other",

+        "name": "outcome 1",

+        "xml": "<outcome value='1'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1716.812728881836,

+        "y": 1058.7886533737183,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "8d657d74.58d7f"

+            ]

+        ]

+    },

+    {

+        "id": "d9748223.b24bd",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1706.8127899169922,

+        "y": 1106.7886247634888,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "fad1ef7b.80f8a"

+            ]

+        ]

+    },

+    {

+        "id": "fad1ef7b.80f8a",

+        "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=\"Error: Incorrect state found more then 1 network\" />\n    \n",

+        "comments": "",

+        "x": 1845.4651336669922,

+        "y": 1108.8903856277466,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "5006afab.cadb6",

+        "type": "set",

+        "name": "set tmp.network.",

+        "xml": "<set>\n<parameter name='tmp.network.' value='`$mdsal-psd.service-data.networks.network[0].`' />\n\n\n",

+        "comments": "",

+        "x": 2078.2575874328613,

+        "y": 1059.7888231277466,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "248004a9.093adc",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1174.9238967895508,

+        "y": 1002.7884902954102,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "8d42ade.e26d95"

+            ]

+        ]

+    },

+    {

+        "id": "8d657d74.58d7f",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1875.5904998779297,

+        "y": 1061.7884874343872,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "5006afab.cadb6",

+                "7723439d.bbc16c"

+            ]

+        ]

+    },

+    {

+        "id": "7723439d.bbc16c",

+        "type": "for",

+        "name": "for nidx..tmp.network.network-data.network-request-input.network...[]",

+        "xml": "<for index='nidx' start='0' end='`$tmp.network.network-data.network-request-input.network-input-parameters.param_length`' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 2238.5905380249023,

+        "y": 1107.7886419296265,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "86fce2c3.6fc9d"

+            ]

+        ]

+    },

+    {

+        "id": "86fce2c3.6fc9d",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2285.1466064453125,

+        "y": 1338.7884511947632,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "e105a5a2.2f7b98",

+                "9c142ff7.067fe",

+                "470eb4bc.6d184c",

+                "c871a6bc.0143b8",

+                "7b6d81b.a5ab68",

+                "dec5f89d.21ec28",

+                "a76964d2.4b9b68",

+                "dffaf7ff.147ed8",

+                "115d9d26.3e7bf3",

+                "a00f1f4a.4aa95"

+            ]

+        ]

+    },

+    {

+        "id": "e105a5a2.2f7b98",

+        "type": "switchNode",

+        "name": "switch access-node-id",

+        "xml": "<switch test=\"`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'access-node-id'`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 2561.65682220459,

+        "y": 1180.799198627472,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "b1b8c2c9.c3461"

+            ]

+        ]

+    },

+    {

+        "id": "b1b8c2c9.c3461",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2750.656448364258,

+        "y": 1182.799063205719,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "3f017ee2.db2552"

+            ]

+        ]

+    },

+    {

+        "id": "3f017ee2.db2552",

+        "type": "set",

+        "name": "set tmp.found-in-network tmp.ep-available",

+        "xml": "<set>\n<parameter name='tmp.found-in-network' value='true' />\n<parameter name='tmp.ep-available' value='true' />",

+        "comments": "",

+        "x": 3003.656623840332,

+        "y": 1182.399109363556,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "9c142ff7.067fe",

+        "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": 2535.6462745666504,

+        "y": 1554.788489818573,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "f53c2230.a7af7",

+        "type": "switchNode",

+        "name": "switch tmp.ep-available",

+        "xml": "<switch test='`$tmp.ep-available`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 527.8126983642578,

+        "y": 1187.2328004837036,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "847cd254.11771",

+                "4bd705da.fbac0c"

+            ]

+        ]

+    },

+    {

+        "id": "4bd705da.fbac0c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 746.4794178009033,

+        "y": 1236.5661573410034,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "78f22b09.6eaaa4"

+            ]

+        ]

+    },

+    {

+        "id": "847cd254.11771",

+        "type": "outcomeTrue",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 751.3682193756104,

+        "y": 1145.5662183761597,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "7cd85d88.d7ff24"

+            ]

+        ]

+    },

+    {

+        "id": "7cd85d88.d7ff24",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 898.3682155609131,

+        "y": 1147.4550313949585,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "78f22b09.6eaaa4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 916.5905055999756,

+        "y": 1234.5661153793335,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "702cd8ea.493bf8",

+                "ce13182f.f335c8",

+                "42d59123.90775"

+            ]

+        ]

+    },

+    {

+        "id": "702cd8ea.493bf8",

+        "type": "switchNode",

+        "name": "switch tmp.found-in-ar",

+        "xml": "<switch test='`$tmp.found-in-ar`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1142.7015190124512,

+        "y": 1201.5661153793335,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "59a7ccc9.66c004",

+                "482c54c8.82d1fc"

+            ]

+        ]

+    },

+    {

+        "id": "59a7ccc9.66c004",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1338.1459655761719,

+        "y": 1179.5661764144897,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "e04463db.e3c67"

+            ]

+        ]

+    },

+    {

+        "id": "482c54c8.82d1fc",

+        "type": "outcomeTrue",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1335.1458740234375,

+        "y": 1227.5661611557007,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "9233120c.931c3"

+            ]

+        ]

+    },

+    {

+        "id": "e04463db.e3c67",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1525.7016296386719,

+        "y": 1176.5661764144897,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "3473260a.97afba"

+            ]

+        ]

+    },

+    {

+        "id": "9233120c.931c3",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1522.7015380859375,

+        "y": 1226.5661611557007,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "e4df70f8.b836a"

+            ]

+        ]

+    },

+    {

+        "id": "6528c05d.2ba6d",

+        "type": "comment",

+        "name": "GET connection-attachment-ar to store AR data from mdsal",

+        "info": "",

+        "comments": "",

+        "x": 2020.4725914001465,

+        "y": 452.50394678115845,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "3af289a7.e9a336",

+        "type": "comment",

+        "name": "Set source end point",

+        "info": "",

+        "comments": "",

+        "x": 509.9724884033203,

+        "y": 541.2539668083191,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "cff1f9f1.a56e28",

+        "type": "set",

+        "name": "set tmp.ar.parent-service-instance-id",

+        "xml": "<set>\n<parameter name='tmp.ar.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n\n",

+        "comments": "",

+        "x": 575.4687042236328,

+        "y": 761.0000896453857,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "1d25b8f7.cfcd87",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 935.4688568115234,

+        "y": 832.0000762939453,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "da5c7fe.8a1128"

+            ]

+        ]

+    },

+    {

+        "id": "2f1fd4bf.dca39c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 927.3206596374512,

+        "y": 867.0661611557007,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "961aa14.d3aaa6"

+            ]

+        ]

+    },

+    {

+        "id": "961aa14.d3aaa6",

+        "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=\"Error: Parent service data not available\" />\n    \n",

+        "comments": "",

+        "x": 1073.469440460205,

+        "y": 866.3335723876953,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "da5c7fe.8a1128",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1066.468952178955,

+        "y": 832.0001373291016,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4a793fb6.ab4b7",

+        "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=\"Error: SOTN provided attachment resource not found\" />\n    \n",

+        "comments": "",

+        "x": 2597.4691848754883,

+        "y": 1030.0002641677856,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "965d8d48.7805f",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2582.469306945801,

+        "y": 997.0002489089966,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e801191.dd549e8",

+        "type": "set",

+        "name": "set tmp.found-in-ar tmp.found-in-network tmp.ep-available to false",

+        "xml": "<set>\n<parameter name='tmp.found-in-ar' value='false' />\n<parameter name='tmp.found-in-network' value='false' />\n<parameter name='tmp.ep-available' value='false' />",

+        "comments": "",

+        "x": 661.4686431884766,

+        "y": 934.0000638961792,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "e8347ae1.b06d68",

+        "type": "comment",

+        "name": "If other EP exists set destination end point",

+        "info": "Check if other allotted resource is available.",

+        "comments": "",

+        "x": 563.9685211181641,

+        "y": 1101.000012397766,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "32309aad.dc4a36",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1318.468765258789,

+        "y": 1439.0002937316895,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "1c444b96.94ce94",

+                "9787f92e.e7a0a8",

+                "5973e9be.996c78",

+                "3648deeb.22cb92",

+                "9991696c.24c968",

+                "ead2dbb.da50128",

+                "1de89b8b.ae1fe4",

+                "28391843.34c238"

+            ]

+        ]

+    },

+    {

+        "id": "1c444b96.94ce94",

+        "type": "switchNode",

+        "name": "switch access-node-id",

+        "xml": "<switch test=\"`$tmp.ep.parameters.param[$idx].name == 'access-node-id'`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1560.9790668487549,

+        "y": 1309.0106902122498,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "453231ca.78fc5"

+            ]

+        ]

+    },

+    {

+        "id": "9787f92e.e7a0a8",

+        "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": 1533.9690189361572,

+        "y": 1614.000653743744,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "5973e9be.996c78",

+        "type": "switchNode",

+        "name": "switch access-ltp-id",

+        "xml": "<switch test=\"`$tmp.ep.parameters.param[$idx].name == 'access-ltp-id'`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1552.4688968658447,

+        "y": 1352.7782216072083,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "ae90dd46.3da8"

+            ]

+        ]

+    },

+    {

+        "id": "3648deeb.22cb92",

+        "type": "switchNode",

+        "name": "switch clientSignal",

+        "xml": "<switch test=\"`$tmp.ep.parameters.param[$idx].name == 'clientSignal'`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1546.4689350128174,

+        "y": 1398.7782683372498,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "c5571a75.670ac8"

+            ]

+        ]

+    },

+    {

+        "id": "9991696c.24c968",

+        "type": "switchNode",

+        "name": "switch cVLAN",

+        "xml": "<switch test=\"`$tmp.ep.parameters.param[$idx].name == 'cVLAN'`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1530.4584369659424,

+        "y": 1437.7677702903748,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "9082d877.8426d8"

+            ]

+        ]

+    },

+    {

+        "id": "453231ca.78fc5",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1738.6909809112549,

+        "y": 1309.6670622825623,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "9276313d.ff195"

+            ]

+        ]

+    },

+    {

+        "id": "9276313d.ff195",

+        "type": "set",

+        "name": "set dst-access-node-id",

+        "xml": "<set>\n<parameter name='prop.remote.connection-attachment.access-node-id' value='`$tmp.ep.parameters.param[$idx].value`' />",

+        "comments": "",

+        "x": 1913.6909809112549,

+        "y": 1309.2670373916626,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "ae90dd46.3da8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1734.1808490753174,

+        "y": 1352.4345183372498,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "f3a1ad87.cb17a"

+            ]

+        ]

+    },

+    {

+        "id": "c5571a75.670ac8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1734.1808490753174,

+        "y": 1398.4345183372498,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "eafcae3e.34cbe"

+            ]

+        ]

+    },

+    {

+        "id": "9082d877.8426d8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1734.1703510284424,

+        "y": 1437.4241423606873,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "38d388af.749418"

+            ]

+        ]

+    },

+    {

+        "id": "ce13182f.f335c8",

+        "type": "for",

+        "name": "for idx..tmp.ep.parameters[]",

+        "xml": "<for index='idx' start='0' end='`$tmp.ep.parameters.param_length`'>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1171.4686279296875,

+        "y": 1326.9999990463257,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "32309aad.dc4a36"

+            ]

+        ]

+    },

+    {

+        "id": "3473260a.97afba",

+        "type": "set",

+        "name": "set tmp.ep.parameters",

+        "xml": "<set>\n<parameter name='tmp.ep.parameters.' value='`$mdsal-other-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.`' />\n",

+        "comments": "",

+        "x": 1737.4686832427979,

+        "y": 1176.0000734329224,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "e4df70f8.b836a",

+        "type": "set",

+        "name": "set tmp.ep.parameters",

+        "xml": "<set>\n<parameter name='tmp.ep.parameters.' value='`$tmp.network.network-data.network-request-input.network-input-parameters.`' />\n",

+        "comments": "",

+        "x": 1734.4685916900635,

+        "y": 1222.0000581741333,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "f3a1ad87.cb17a",

+        "type": "set",

+        "name": "set dst-access-node-id",

+        "xml": "<set>\n<parameter name='prop.remote.connection-attachment.access-ltp-id' value='`$tmp.ep.parameters.param[$idx].value`' />",

+        "comments": "",

+        "x": 1911.4688129425049,

+        "y": 1352.0003142356873,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "eafcae3e.34cbe",

+        "type": "set",

+        "name": "set dst-clientSignal",

+        "xml": "<set>\n<parameter name='prop.remote.connection-attachment.clientSignal' value='`$tmp.ep.parameters.param[$idx].value`' />",

+        "comments": "",

+        "x": 1905.4688129425049,

+        "y": 1396.0003142356873,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "38d388af.749418",

+        "type": "set",

+        "name": "set dst-cVLAN",

+        "xml": "<set>\n<parameter name='prop.remote.connection-attachment.cVLAN' value='`$tmp.ep.parameters.param[$idx].value`' />",

+        "comments": "",

+        "x": 1896.4688129425049,

+        "y": 1435.0003142356873,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "16fadb68.da33b5",

+        "type": "comment",

+        "name": "Get controller info and send request",

+        "info": "",

+        "comments": "",

+        "x": 1736.5,

+        "y": 1939.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "301d4a69.a91c16",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 750.2310523986816,

+        "y": 2129.9537076950073,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "58a1647f.bc22bc"

+            ]

+        ]

+    },

+    {

+        "id": "58a1647f.bc22bc",

+        "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=\"AAI failed\" />\n",

+        "comments": "",

+        "x": 916.7548732757568,

+        "y": 2156.572714805603,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "c19471ac.c730b",

+        "type": "failure",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 752.3262805938721,

+        "y": 2177.7155504226685,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "58a1647f.bc22bc"

+            ]

+        ]

+    },

+    {

+        "id": "708117e5.cf3178",

+        "type": "comment",

+        "name": "Save Resource to AAI",

+        "info": "",

+        "comments": "",

+        "x": 509.77857398986816,

+        "y": 2107.3028707504272,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "8cebe888.0f36b8",

+        "type": "set",

+        "name": "set output to api handler",

+        "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='connection-attachment-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $connection-attachment-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",

+        "comments": "",

+        "x": 539.0463924407959,

+        "y": 2039.8283519744873,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "fc04a841.669f18",

+        "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": 499.4595642089844,

+        "y": 2225.444140434265,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "9c164258.b89ac",

+        "type": "execute",

+        "name": "execute RestApiCallNode - PUT AR by id",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.sotn-attachment.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 591.7784748077393,

+        "y": 1964.469204902649,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "835eb842.099b48",

+                "2f2f8f6f.269b1",

+                "d5209fa7.88bcb"

+            ]

+        ]

+    },

+    {

+        "id": "835eb842.099b48",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 846.4198970794678,

+        "y": 2008.8005990982056,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "142acad1.a7ff95"

+            ]

+        ]

+    },

+    {

+        "id": "2f2f8f6f.269b1",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 848.4199199676514,

+        "y": 1967.3005632385612,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "142acad1.a7ff95"

+            ]

+        ]

+    },

+    {

+        "id": "d5209fa7.88bcb",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 852.1700038909912,

+        "y": 1918.6577157974243,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "68e4ac49.a93174"

+            ]

+        ]

+    },

+    {

+        "id": "142acad1.a7ff95",

+        "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 updating md-sal for connection-attachment-allotted-resource\" />\n",

+        "comments": "",

+        "x": 1007.1700229644775,

+        "y": 1987.0506296157837,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "68e4ac49.a93174",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 979.82594871521,

+        "y": 1920.8498840332031,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c7e83767.1962b8",

+        "type": "set",

+        "name": "set ar-data",

+        "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-status.action' value=\"`$connection-attachment-topology-operation-input.request-information.request-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value=\"connection-attachment-topology-operation\" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$connection-attachment-topology-operation-input.request-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$connection-attachment-topology-operation-input.service-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.` \" />",

+        "comments": "",

+        "x": 493.9920902252197,

+        "y": 1798.8501060009003,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "46437a86.852124",

+        "type": "execute",

+        "name": "execute getTime",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 511.27793312072754,

+        "y": 1871.4697036743164,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "755ed1f3.fd5e1",

+        "type": "set",

+        "name": "set allotted-resource-oper-status",

+        "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",

+        "comments": "",

+        "x": 561.2650127410889,

+        "y": 1908.420783996582,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "cce9c4ca.7b8858",

+        "type": "set",

+        "name": "set model-data",

+        "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` \" />",

+        "comments": "",

+        "x": 507.83363151550293,

+        "y": 1838.0247564315796,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "f294fd58.b71aa",

+        "type": "comment",

+        "name": "Prepare data for allotted-resource addition to MDSAL",

+        "info": "This will add to allotted-resource which is present inside service.",

+        "comments": "",

+        "x": 606.666971206665,

+        "y": 1748.0247085094452,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "d0dd0868.62b7f8",

+        "type": "comment",

+        "name": "Add to allotted-resources in mdsal",

+        "info": "",

+        "comments": "",

+        "x": 548.2467975616455,

+        "y": 1715.4380102157593,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "55e9e37.ce7981c",

+        "type": "update",

+        "name": "update AAI allotted-resource",

+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"description\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`\" />\n\t<parameter name=\"selflink\" value=\"`$tmp.ar.self-link`\" />\n\t<parameter name=\"model-invariant-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`\" />\n\t<parameter name=\"model-version-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`\" />\n\t<parameter name=\"operational-status\" value=\"Active\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 550.7229747772217,

+        "y": 2155.7550134658813,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "301d4a69.a91c16",

+                "c19471ac.c730b"

+            ]

+        ]

+    },

+    {

+        "id": "f1aaec6d.a3626",

+        "type": "execute",

+        "name": "execute RestApiCallNode getPath from OOF",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.oof-getpath.templatefile`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.restapi.connection-oof-url`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.oof.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.oof.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"oof\"/>\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": 1359.4729347229004,

+        "y": 1718.2546653747559,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "af15ec6e.a82fc",

+                "6cd7d919.bfcce8"

+            ]

+        ]

+    },

+    {

+        "id": "af15ec6e.a82fc",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1599.4730758666992,

+        "y": 1742.2546348571777,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "cc641f45.d8576"

+            ]

+        ]

+    },

+    {

+        "id": "a1670fc8.9985a",

+        "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 OOF api\" />\n",

+        "comments": "",

+        "x": 1738.4731101989746,

+        "y": 1691.254726409912,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "6cd7d919.bfcce8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1598.4728622436523,

+        "y": 1691.2547254562378,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "a1670fc8.9985a"

+            ]

+        ]

+    },

+    {

+        "id": "691b56c8.1d0978",

+        "type": "comment",

+        "name": "Get VPNs from OOF",

+        "info": "",

+        "comments": "",

+        "x": 1330.976734161377,

+        "y": 1674.2586650848389,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "f0f701e7.65ce3",

+        "type": "for",

+        "name": "for vidx..oof.vpns_length[]",

+        "xml": "<for index='vidx' start='0' end='`$oof.vpns_length`' >",

+        "comments": "",

+        "outputs": 1,

+        "x": 1299.4727783203125,

+        "y": 1800.5043935775757,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "5d2b8bd5.68b4d4"

+            ]

+        ]

+    },

+    {

+        "id": "2d912679.d5bf8a",

+        "type": "comment",

+        "name": "Loop through VPN and configure them",

+        "info": "",

+        "comments": "",

+        "x": 1330.9731063842773,

+        "y": 1924.004771232605,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "470eb4bc.6d184c",

+        "type": "switchNode",

+        "name": "switch name",

+        "xml": "<switch test=\"`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'name'`\">\n                \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2539.2569580078125,

+        "y": 1272.1218252182007,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "5a944da.7069fb4"

+            ]

+        ]

+    },

+    {

+        "id": "5a944da.7069fb4",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2728.2569274902344,

+        "y": 1272.1218104362488,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "20c4a13a.86cbee"

+            ]

+        ]

+    },

+    {

+        "id": "20c4a13a.86cbee",

+        "type": "set",

+        "name": "set etht-svc-name & bandwidth-profile-name",

+        "xml": "<set>\n<parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-name' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />\n<parameter name='ietf-eth-tran-service_etht-svc.globals.etht-svc-bandwidth-profiles[0].bandwidth-profile-name' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />\n<parameter name='ietf-eth-tran-service:etht-svc.etht-svc-instances[0].etht-svc-access-ports[0].ingress-egress-bandwidth-profile-name' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />\n<parameter name='ietf-eth-tran-service:etht-svc.etht-svc-instances[0].etht-svc-access-ports[1].ingress-egress-bandwidth-profile-name' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />",

+        "comments": "",

+        "x": 2969.2572441101074,

+        "y": 1271.7218651771545,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "c871a6bc.0143b8",

+        "type": "switchNode",

+        "name": "switch description",

+        "xml": "<switch test=\"`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'description'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2552.096836090088,

+        "y": 1307.1219201087952,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "81ef29bd.59d398"

+            ]

+        ]

+    },

+    {

+        "id": "81ef29bd.59d398",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2727.0969009399414,

+        "y": 1309.1219058036804,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "7539507e.b6dca"

+            ]

+        ]

+    },

+    {

+        "id": "7539507e.b6dca",

+        "type": "set",

+        "name": "set etht-svc-descr",

+        "xml": "<set>\n<parameter name='prop.global.sotn.etht-svc-descr' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />\n",

+        "comments": "",

+        "x": 2883.43021774292,

+        "y": 1306.582980632782,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "7b6d81b.a5ab68",

+        "type": "switchNode",

+        "name": "switch tenantId",

+        "xml": "<switch test=\"`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'tenantId'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2547.4790992736816,

+        "y": 1340.455310344696,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "26460ef1.c345e2"

+            ]

+        ]

+    },

+    {

+        "id": "26460ef1.c345e2",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2725.479103088379,

+        "y": 1344.4551882743835,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "631daf90.b15a7"

+            ]

+        ]

+    },

+    {

+        "id": "631daf90.b15a7",

+        "type": "set",

+        "name": "set tenantId",

+        "xml": "<set>\n<parameter name='prop.global.sotn.tenantId' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />\n",

+        "comments": "",

+        "x": 2863.479290008545,

+        "y": 1341.055163860321,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "a76964d2.4b9b68",

+        "type": "switchNode",

+        "name": "switch cir",

+        "xml": "<switch test=\"`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'cir'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2530.3186988830566,

+        "y": 1413.4552655220032,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "8dcd1765.bbf1a8"

+            ]

+        ]

+    },

+    {

+        "id": "8dcd1765.bbf1a8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2725.31876373291,

+        "y": 1414.4552655220032,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "baa8e616.d85108"

+            ]

+        ]

+    },

+    {

+        "id": "baa8e616.d85108",

+        "type": "set",

+        "name": "set cir",

+        "xml": "<set>\n<parameter name='ietf-eth-tran-service_etht-svc.globals.etht-svc-bandwidth-profiles[0].CIR' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />",

+        "comments": "",

+        "x": 2849.6522636413574,

+        "y": 1412.9163403511047,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "dec5f89d.21ec28",

+        "type": "switchNode",

+        "name": "switch vpnType",

+        "xml": "<switch test=\"`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'vpnType'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2544.6269874572754,

+        "y": 1376.2329754829407,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "dbef898b.5a04d8"

+            ]

+        ]

+    },

+    {

+        "id": "dbef898b.5a04d8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2726.6271743774414,

+        "y": 1379.2329602241516,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "bccd7b78.4d84c8"

+            ]

+        ]

+    },

+    {

+        "id": "bccd7b78.4d84c8",

+        "type": "set",

+        "name": "set vpnType",

+        "xml": "<set>\n<parameter name='prop.global.sotn.vpnType' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />\n",

+        "comments": "",

+        "x": 2865.9609375,

+        "y": 1375.6942129135132,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "dffaf7ff.147ed8",

+        "type": "switchNode",

+        "name": "switch eir",

+        "xml": "<switch test=\"`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'eir'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2525.609043121338,

+        "y": 1447.1531729698181,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "1816402d.acc71"

+            ]

+        ]

+    },

+    {

+        "id": "1816402d.acc71",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2725.60929107666,

+        "y": 1450.1531119346619,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "9a8734c7.d242a8"

+            ]

+        ]

+    },

+    {

+        "id": "9a8734c7.d242a8",

+        "type": "set",

+        "name": "set eir",

+        "xml": "<set>\n<parameter name='ietf-eth-tran-service_etht-svc.globals.etht-svc-bandwidth-profiles[0].EIR' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />",

+        "comments": "",

+        "x": 2848.94291305542,

+        "y": 1449.6141715049744,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "115d9d26.3e7bf3",

+        "type": "switchNode",

+        "name": "switch colorAware",

+        "xml": "<switch test=\"`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'colorAware'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2550.6096534729004,

+        "y": 1481.15305185318,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "7a3ef206.eac13c"

+            ]

+        ]

+    },

+    {

+        "id": "7a3ef206.eac13c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2721.609474182129,

+        "y": 1487.1529903411865,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "b70d496a.5ddb78"

+            ]

+        ]

+    },

+    {

+        "id": "b70d496a.5ddb78",

+        "type": "set",

+        "name": "set colorAware",

+        "xml": "<set>\n<parameter name='ietf-eth-tran-service_etht-svc.globals.etht-svc-bandwidth-profiles[0].color-aware' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />",

+        "comments": "",

+        "x": 2869.9427909851074,

+        "y": 1487.6142029762268,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "a00f1f4a.4aa95",

+        "type": "switchNode",

+        "name": "switch couplingFlag",

+        "xml": "<switch test=\"`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'couplingFlag'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2552.609592437744,

+        "y": 1517.1531138420105,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "d142d3b7.6ab09"

+            ]

+        ]

+    },

+    {

+        "id": "d142d3b7.6ab09",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2724.609474182129,

+        "y": 1526.1530833244324,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "bd3153ab.0a327"

+            ]

+        ]

+    },

+    {

+        "id": "bd3153ab.0a327",

+        "type": "set",

+        "name": "set couplingFlag",

+        "xml": "<set>\n<parameter name='ietf-eth-tran-service_etht-svc.globals.etht-svc-bandwidth-profiles[0].coupling-flag' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />\n",

+        "comments": "",

+        "x": 2877.9427909851074,

+        "y": 1526.6142039299011,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "6c12cf01.2131c",

+        "type": "comment",

+        "name": "Check if other EP exists in SOTNConnectionResource",

+        "info": "",

+        "comments": "",

+        "x": 2669.3125,

+        "y": 1124.7884511947632,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "99d96253.bd948",

+        "type": "comment",

+        "name": "Get other global parameters from network",

+        "info": "",

+        "comments": "",

+        "x": 2605.312255859375,

+        "y": 1210.7884511947632,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "ead2dbb.da50128",

+        "type": "switchNode",

+        "name": "switch access-provider-id",

+        "xml": "<switch test=\"`$tmp.ep.parameters.param[$idx].name == 'access-provider-id'`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1568.0347309112549,

+        "y": 1483.2329802513123,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "890e21ce.aabcf"

+            ]

+        ]

+    },

+    {

+        "id": "890e21ce.aabcf",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1755.0347309112549,

+        "y": 1479.2329802513123,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "efb43d68.4d0dc"

+            ]

+        ]

+    },

+    {

+        "id": "efb43d68.4d0dc",

+        "type": "set",

+        "name": "set access-provider-id",

+        "xml": "<set>\n<parameter name='prop.remote.connection-attachment.access-provider-id' value='`$tmp.ep.parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1923.0347309112549,

+        "y": 1479.8329863548279,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "1de89b8b.ae1fe4",

+        "type": "switchNode",

+        "name": "switch access-client-id",

+        "xml": "<switch test=\"`$tmp.ep.parameters.param[$idx].name == 'access-client-id'`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1559.034746170044,

+        "y": 1526.2434287071228,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "338021e9.e44afe"

+            ]

+        ]

+    },

+    {

+        "id": "338021e9.e44afe",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1746.034746170044,

+        "y": 1522.2434287071228,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "7c6aa850.28a988"

+            ]

+        ]

+    },

+    {

+        "id": "7c6aa850.28a988",

+        "type": "set",

+        "name": "set access-client-id",

+        "xml": "<set>\n<parameter name='prop.remote.connection-attachment.access-client-id' value='`$tmp.ep.parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1914.034746170044,

+        "y": 1522.8434348106384,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "28391843.34c238",

+        "type": "switchNode",

+        "name": "switch access-topology-id",

+        "xml": "<switch test=\"`$tmp.ep.parameters.param[$idx].name == 'access-topology-id'`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1572.0346908569336,

+        "y": 1568.243459701538,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "b4d675ca.5b6ad8"

+            ]

+        ]

+    },

+    {

+        "id": "b4d675ca.5b6ad8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1759.0346908569336,

+        "y": 1564.243459701538,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "fc323cd8.740fd"

+            ]

+        ]

+    },

+    {

+        "id": "fc323cd8.740fd",

+        "type": "set",

+        "name": "set access-topology-id",

+        "xml": "<set>\n<parameter name='prop.remote.connection-attachment.access-topology-id' value='`$tmp.ep.parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1927.0346908569336,

+        "y": 1564.8434658050537,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "5d2b8bd5.68b4d4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1392,

+        "y": 2219.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "558b1788.84f928",

+                "e3c138d5.699fb8",

+                "f9bc1226.8fbd4",

+                "da01646a.3c6258",

+                "44291211.776dfc",

+                "3d211e6e.0978a2",

+                "ad5fec05.7fe24",

+                "b291bc09.341f8",

+                "ff79c756.7c8268",

+                "968f06ac.a3c588",

+                "f677be49.bd949",

+                "51f13ce4.5572f4",

+                "8409f905.b1b958"

+            ]

+        ]

+    },

+    {

+        "id": "11f32b12.47cdd5",

+        "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": 2144.5,

+        "y": 1939.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "b291bc09.341f8",

+        "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 = $tmp.thirdparty-sdnc-id AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1728.5,

+        "y": 1979.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "80d78dba.97bcb",

+                "4ce354f7.2d687c",

+                "c3caaad8.698c48"

+            ]

+        ]

+    },

+    {

+        "id": "80d78dba.97bcb",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1974.5,

+        "y": 1939.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "11f32b12.47cdd5"

+            ]

+        ]

+    },

+    {

+        "id": "4ce354f7.2d687c",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1978.5,

+        "y": 1979.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "4c6d9850.53db08"

+            ]

+        ]

+    },

+    {

+        "id": "c3caaad8.698c48",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1970.5,

+        "y": 2019.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "f9f72f2b.1b4fc"

+            ]

+        ]

+    },

+    {

+        "id": "4c6d9850.53db08",

+        "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": 2128.5,

+        "y": 1979.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "f9f72f2b.1b4fc",

+        "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": 2128.5,

+        "y": 2019.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "ad5fec05.7fe24",

+        "type": "get-resource",

+        "name": "get-resource pnf",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"pnf\" \n\t\tkey=\"pnf.pnf-name = $oof.vpn.access-node-id \n\t\tAND depth = '0'\"\n        pfx='tmp.aai.pnf' local-only='false' >\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1680,

+        "y": 1859.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "1d72a12f.fe6a2f",

+                "193e4330.27658d",

+                "f33105ee.d40068"

+            ]

+        ]

+    },

+    {

+        "id": "1d72a12f.fe6a2f",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1974.5,

+        "y": 1819.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "5a57731d.d86b9c"

+            ]

+        ]

+    },

+    {

+        "id": "193e4330.27658d",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1978.5,

+        "y": 1859.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "9cd7dd7e.3b197"

+            ]

+        ]

+    },

+    {

+        "id": "f33105ee.d40068",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1970.5,

+        "y": 1899.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "64060034.5c7ab"

+            ]

+        ]

+    },

+    {

+        "id": "9cd7dd7e.3b197",

+        "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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-id`\" />\n\n",

+        "comments": "",

+        "x": 2128.5,

+        "y": 1859.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "64060034.5c7ab",

+        "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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-id`\" />\n\n",

+        "comments": "",

+        "x": 2128.5,

+        "y": 1899.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "5a57731d.d86b9c",

+        "type": "set",

+        "name": "set tmp.thirdparty-sdnc-id",

+        "xml": "<set>\n<parameter name='tmp.thirdparty-sdnc-id' value=\"`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`\" />\n",

+        "comments": "",

+        "x": 2168,

+        "y": 1819.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "a8e87a1c.5dd4d8",

+        "type": "comment",

+        "name": "get domain controller information",

+        "info": "",

+        "comments": "",

+        "x": 1727,

+        "y": 1819.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "ff79c756.7c8268",

+        "type": "set",

+        "name": "set oof.vpn",

+        "xml": "<set>\n<parameter name='oof.vpn.' value='`$oof.vpns[$vidx].`' />",

+        "comments": "",

+        "x": 1663.5,

+        "y": 1779.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "e3c138d5.699fb8",

+        "type": "save",

+        "name": "save VPN resource in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='vpn-binding' \n      key='vpn-binding.vpn-id = $tmp.vpnName' >\n<parameter name='vpn-id' value='`$tmp.vpnName`' />\n<parameter name='vpn-name' value='`$tmp.vpnName`' />\n<parameter name='access-provider-id' value='`$oof.vpn.access-provider-id`' />\n<parameter name='access-client-id' value='`$oof.vpn.access-client-id`' />\n<parameter name='access-topology-id' value='`$oof.vpn.access-topology-id`' />\n<parameter name='src-access-node-id' value='`$oof.vpn.access-node-id`' />\n<parameter name='src-access-ltp-id' value='`$oof.vpn.src-access-ltp-id`' />\n<parameter name='dst-access-node-id' value='`$oof.vpn.access-node-id`' />\n<parameter name='dst-access-ltp-id' value='`$oof.vpn.dst-access-ltp-id`' />\n<parameter name='vpn-type' value='`$prop.global.sotn.vpnType`' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-uuid`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1710,

+        "y": 2339.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f9bc1226.8fbd4",

+        "type": "set",

+        "name": "set tmp.vpnName",

+        "xml": "<set>\n<parameter name='tmp.vpnName' value=\"`$oof.vpn.access-node-id + '-' + $ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-name`\" />",

+        "comments": "",

+        "x": 1684,

+        "y": 2299.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "da01646a.3c6258",

+        "type": "save",

+        "name": "save connectivity relationship in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='vpn-binding:relationship-list' \n      key='vpn-binding.vpn-id = $tmp.vpnName' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"connectivity\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/connectivities/connectivity/' + $mdsal-psd.service-data.networks.network[0].network-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"connectivity.connectivity-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$mdsal-psd.service-data.networks.network[0].network-id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1740.5,

+        "y": 2379.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "558b1788.84f928",

+        "type": "set",

+        "name": "set src-ltpId dst-ltpId",

+        "xml": "<set>\n<parameter name='src-ltpId' value=\"`'nodeId-' + $oof.vpn.access-node-id + '-ltpId-' + $oof.vpn.src-access-ltp-id`\" />\n<parameter name='dst-ltpId' value=\"`'nodeId-' + $oof.vpn.access-node-id + '-ltpId-' + $oof.vpn.dst-access-ltp-id`\" />",

+        "comments": "",

+        "x": 1692,

+        "y": 2419.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "44291211.776dfc",

+        "type": "save",

+        "name": "save srcLTP relationship in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='vpn-binding:relationship-list' \n      key='vpn-binding.vpn-id = $tmp.vpnName' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"p-interface\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/pnfs/pnf/' + $oof.vpn.access-node-id + '/p-interfaces/p-interface/' + $src-ltpId`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"p-interface.interface-name\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$src-ltpId`\" />\n\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1725.5,

+        "y": 2459.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3d211e6e.0978a2",

+        "type": "save",

+        "name": "save dstLTP relationship in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='vpn-binding:relationship-list' \n      key='vpn-binding.vpn-id = $tmp.vpnName' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"p-interface\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/pnfs/pnf/' + $oof.vpn.access-node-id + '/p-interfaces/p-interface/' + $dst-ltpId`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"p-interface.interface-name\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$dst-ltpId`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1725.5,

+        "y": 2499.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b2d7beb8.50e79",

+        "type": "execute",

+        "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 717.5038146972656,

+        "y": 621.0039110183716,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "cc101fab.4516e",

+                "687f563.00b84a8"

+            ]

+        ]

+    },

+    {

+        "id": "c2e744b7.2f7498",

+        "type": "execute",

+        "name": "execute RestApiCallNode - get-resource parent service data",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-psd\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 644.5039672851562,

+        "y": 848.0040740966797,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "1d25b8f7.cfcd87",

+                "2f1fd4bf.dca39c"

+            ]

+        ]

+    },

+    {

+        "id": "c7b09f9c.c261d",

+        "type": "execute",

+        "name": "get parent-service-data url",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-psd\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 544.5038757324219,

+        "y": 811.0039072036743,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "251f1840.c6f158",

+        "type": "execute",

+        "name": "generate tmp.ar-other-url-connection",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-other-url-connection\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.provided-ar.allotted-resource-id`\"/>\n    \n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1958.500228881836,

+        "y": 967.3334684371948,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "549841eb.86ecc",

+        "type": "execute",

+        "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-other-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-other-ar\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2095.5008697509766,

+        "y": 1009.8333330154419,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "dc9bc603.157798",

+                "75f7d9fa.a34b78"

+            ]

+        ]

+    },

+    {

+        "id": "cc641f45.d8576",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1720.5001487731934,

+        "y": 1733.0001182556152,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "42d59123.90775",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1097.4687614440918,

+        "y": 1758.0003023147583,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "f1aaec6d.a3626",

+                "f0f701e7.65ce3"

+            ]

+        ]

+    },

+    {

+        "id": "de760411.78f278",

+        "type": "outcome",

+        "name": "outcome PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2171.531219482422,

+        "y": 573.0312967300415,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "ae12c3e3.17f33"

+            ]

+        ]

+    },

+    {

+        "id": "ae12c3e3.17f33",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2355.5312309265137,

+        "y": 569.0312967300415,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f677be49.bd949",

+        "type": "set",

+        "name": "set attachment_param",

+        "xml": "<set>\n<parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].access-provider-id' value='`$oof.vpn.access-provider-id`' />\n<parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].access-client-id' value='`$oof.vpn.access-client-id`' />\n<parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].access-topology-id' value='`$oof.vpn.access-topology-id`' />\n<parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[0].access-node-id' value='`$oof.vpn.access-node-id`' />\n<parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[0].access-ltp-id' value='`$oof.vpn.src-access-ltp-id`' />\n<parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[1].access-node-id' value='`$oof.vpn.access-node-id`' />\n<parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[1].access-ltp-id' value='`$oof.vpn.dst-access-ltp-id`' />\n\n",

+        "comments": "",

+        "x": 1698.5,

+        "y": 2179.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "968f06ac.a3c588",

+        "type": "set",

+        "name": "set sotn_value",

+        "xml": "<set>\n<parameter name='ietf-eth-tran-service_etht-svc.globals.etht-svc-bandwidth-profiles[0].bandwidth-profile-type' value='ietf-eth-tran-types:mef-10-bwp' />\n<parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-type' value='ietf-eth-tran-types:p2p-svc' />\n<parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].admin-status' value='ietf-te-types:tunnel-state-up' />\n<parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[0].access-port-id' value='0' />\n<parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[0].service-classification-type' value='ietf-eth-tran-types:port-classification' />\n<parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[1].access-port-id' value='1' />\n<parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[1].service-classification-type' value='ietf-eth-tran-types:port-classification' />",

+        "comments": "",

+        "x": 1674,

+        "y": 2139.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "51f13ce4.5572f4",

+        "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": 1741,

+        "y": 2079.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "4c647719.273c38",

+                "8bcc471b.d27148"

+            ]

+        ]

+    },

+    {

+        "id": "4c647719.273c38",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1974.5,

+        "y": 2059.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "3ea7de86.e655e2"

+            ]

+        ]

+    },

+    {

+        "id": "8bcc471b.d27148",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1970.5,

+        "y": 2099.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "6576cfae.4e38"

+            ]

+        ]

+    },

+    {

+        "id": "6576cfae.4e38",

+        "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": 2128.5,

+        "y": 2099.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "3ea7de86.e655e2",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 2125,

+        "y": 2059.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "2e5fde4b.379992",

+        "type": "execute",

+        "name": "execute RestconfApiCallNode Create ethernet Service with token",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/ietf-eth-tran-service:etht-svc'`\" />\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=\"patch\"/>\n<parameter name='dirPath' value=\"/opt/sdnc/restapi/yang\" />\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": 2251,

+        "y": 2239.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "2999e04e.bf614",

+                "ac50d499.0a7ac8"

+            ]

+        ]

+    },

+    {

+        "id": "2999e04e.bf614",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2594.5,

+        "y": 2239.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "c3a8f950.46bbb8"

+            ]

+        ]

+    },

+    {

+        "id": "c3a8f950.46bbb8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 2752,

+        "y": 2239.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a85733e7.5f14",

+        "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": 2748.5,

+        "y": 2199.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    },

+    {

+        "id": "ac50d499.0a7ac8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2590.5,

+        "y": 2199.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "a85733e7.5f14"

+            ]

+        ]

+    },

+    {

+        "id": "8409f905.b1b958",

+        "type": "switchNode",

+        "name": "switch prop.sdncRestApi.token_id",

+        "xml": "<switch test=\"`$prop.sdncRestApi.token_id`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1734,

+        "y": 2219.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "92b81083.05be9",

+                "5a6898a5.b1b498"

+            ]

+        ]

+    },

+    {

+        "id": "92b81083.05be9",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1946.8438301086426,

+        "y": 2199.6670331954956,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "a62b7bca.977d88"

+            ]

+        ]

+    },

+    {

+        "id": "5a6898a5.b1b498",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1950.5,

+        "y": 2239.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "2e5fde4b.379992"

+            ]

+        ]

+    },

+    {

+        "id": "a62b7bca.977d88",

+        "type": "execute",

+        "name": "execute RestconfApiCallNode Create ethernet Service without token",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/ietf-eth-tran-service:etht-svc'`\" />\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=\"patch\"/>\n<parameter name='dirPath' value=\"/opt/sdnc/restapi/yang\" />\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\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2261,

+        "y": 2199.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": [

+            [

+                "ac50d499.0a7ac8",

+                "2999e04e.bf614"

+            ]

+        ]

+    },

+    {

+        "id": "61db4e39.8fc44",

+        "type": "comment",

+        "name": "save vpn and its relation to AAI",

+        "info": "",

+        "comments": "",

+        "x": 1722,

+        "y": 2259.5451345443726,

+        "z": "3660ec4d.8a3b84",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-create.json
new file mode 100644
index 0000000..d9c97e6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-create.json
@@ -0,0 +1,1347 @@
+[
+  {
+    "id": "fd67dde.a66f82",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 116,
+    "y": 35,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "1df77df2.bd25c2"
+      ]
+    ]
+  },
+  {
+    "id": "1df77df2.bd25c2",
+    "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": 257.00000190734863,
+    "y": 112.00001430511475,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "4ae5acd4.5be1a4"
+      ]
+    ]
+  },
+  {
+    "id": "4ae5acd4.5be1a4",
+    "type": "method",
+    "name": "sotn-attachment-topology-operation-create",
+    "xml": "<method rpc='sotn-attachment-topology-operation-create' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 245.00012016296387,
+    "y": 199.99999713897705,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "b78625b7.40d198"
+      ]
+    ]
+  },
+  {
+    "id": "b78625b7.40d198",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 165.0000514984131,
+    "y": 949.0002450942993,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "13c3075f.a550d9",
+        "326099aa.e4b1f6",
+        "9e7243fc.98276",
+        "a773278f.c60928",
+        "79a41f6b.cf86f",
+        "afaa69e7.b4aba8",
+        "4a444e95.a33bb",
+        "77c3364e.f87538",
+        "9851c050.afe45",
+        "5f01282.a94d0d8",
+        "7e65d530.30d0fc",
+        "17bffa68.c6e1f6",
+        "b279212f.2876c",
+        "624c4802.103f08",
+        "15e63162.783f4f",
+        "4d0b157.d3d26ec",
+        "7b0dce99.088f9",
+        "47b622.5f78d9e",
+        "547adbe.09cf724",
+        "1c8354a6.82036b",
+        "908c2ae3.c4f938",
+        "323f6bf8.18f834",
+        "ef225a8b.70ebd8",
+        "16153237.cff69e",
+        "5054f74f.3fad08",
+        "9ff190ab.bed71"
+      ]
+    ]
+  },
+  {
+    "id": "811ec7f1.394838",
+    "type": "comment",
+    "name": "Set allotted resource id if not sent by SO",
+    "info": "",
+    "comments": "",
+    "x": 664.0767593383789,
+    "y": 144.433913230896,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "13c3075f.a550d9",
+    "type": "switchNode",
+    "name": "switch allotted-resource-id",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 610.0000381469727,
+    "y": 199.99998664855957,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "1fd27893.31ab57",
+        "380f681d.6db258"
+      ]
+    ]
+  },
+  {
+    "id": "1fd27893.31ab57",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 808.0001258850098,
+    "y": 169.99997520446777,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "f434bacd.73f0c8"
+      ]
+    ]
+  },
+  {
+    "id": "380f681d.6db258",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 807.0000343322754,
+    "y": 206.99998569488525,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "b52073bc.07c9f"
+      ]
+    ]
+  },
+  {
+    "id": "b52073bc.07c9f",
+    "type": "set",
+    "name": "set tmp.ar.allotted-resource-id",
+    "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n",
+    "comments": "",
+    "x": 1005.0000228881836,
+    "y": 204.00000476837158,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "326099aa.e4b1f6",
+    "type": "set",
+    "name": "set tmp.ar.self-link",
+    "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/connection-attachment-topology/'` \" />\n\n",
+    "comments": "",
+    "x": 562.9999523162842,
+    "y": 386.00009632110596,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "9e7243fc.98276",
+    "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": 563.2618942260742,
+    "y": 472.6668071746826,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a773278f.c60928",
+    "type": "execute",
+    "name": "generate allotted-resource tmp.ar-url",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 616.2619304656982,
+    "y": 554.6666955947876,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "f434bacd.73f0c8",
+    "type": "execute",
+    "name": "execute tmp.ar.allotted-resource-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"tmp.ar.allotted-resource-id\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1023.0001029968262,
+    "y": 170.99998092651367,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "9ab0be9f.9431d"
+      ]
+    ]
+  },
+  {
+    "id": "9ab0be9f.9431d",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1241.000144958496,
+    "y": 170.99994468688965,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "aca58bfe.822378"
+      ]
+    ]
+  },
+  {
+    "id": "aca58bfe.822378",
+    "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 generation allotted resource ID\" />\n",
+    "comments": "",
+    "x": 1407.000099182129,
+    "y": 170.9999589920044,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "43d96423.28d03c",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1122.000228881836,
+    "y": 626.777868270874,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "1050cf03.802321"
+      ]
+    ]
+  },
+  {
+    "id": "b3c8cfd5.7bea1",
+    "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: Existing connection attachment allotted resource\" />\n    \n",
+    "comments": "",
+    "x": 1855.5186080932617,
+    "y": 627.843939781189,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "293dd257.14194e",
+    "type": "comment",
+    "name": "Check for non existence of allotted resource",
+    "info": "",
+    "comments": "",
+    "x": 978.000150680542,
+    "y": 560.7779350280762,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "c5387b68.c01b28",
+    "type": "for",
+    "name": "for cidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]",
+    "xml": "<for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1498.666696548462,
+    "y": 771.0000474452972,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "c340ff54.e12d9"
+      ]
+    ]
+  },
+  {
+    "id": "afaa69e7.b4aba8",
+    "type": "switchNode",
+    "name": "switch service-data.consumed-allotted-resources_length",
+    "xml": "<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 680.6660213470459,
+    "y": 747.7140798568726,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "7d136f12.04ec4",
+        "c30cd80f.81caf8"
+      ]
+    ]
+  },
+  {
+    "id": "7d136f12.04ec4",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 984.8089199066162,
+    "y": 716.5715169906616,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "58b68eae.81516"
+      ]
+    ]
+  },
+  {
+    "id": "c30cd80f.81caf8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 961.8089694976807,
+    "y": 777.5714721679688,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "7a8ccc70.38dd84"
+      ]
+    ]
+  },
+  {
+    "id": "7a8ccc70.38dd84",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1121.9360599517822,
+    "y": 775.6974487304688,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "c5387b68.c01b28",
+        "e1e02207.f540e",
+        "9846e0ee.d12b5"
+      ]
+    ]
+  },
+  {
+    "id": "58b68eae.81516",
+    "type": "set",
+    "name": "set cidx",
+    "xml": "<set>\n<parameter name='tmp.cidx' value=\"`0`\" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value=\"1\" />\n\n\n",
+    "comments": "",
+    "x": 1134.6659030914307,
+    "y": 714.2855672836304,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "4a444e95.a33bb",
+    "type": "set",
+    "name": "set consumed allotted resources",
+    "xml": "<set>\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value=\"`$tmp.ar.self-link` \" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />\n\n",
+    "comments": "",
+    "x": 609.5233135223389,
+    "y": 851.28564453125,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "e1e02207.f540e",
+    "type": "switchNode",
+    "name": "switch tmp.found-cidx",
+    "xml": "<switch test='`$tmp.found-cidx`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1311.0511074066162,
+    "y": 807.7089715003967,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "d3531383.fcd03"
+      ]
+    ]
+  },
+  {
+    "id": "d3531383.fcd03",
+    "type": "outcomeTrue",
+    "name": "false",
+    "xml": "<outcome value='false'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1501.051061630249,
+    "y": 807.7089085578918,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "40bc6162.88ce4"
+      ]
+    ]
+  },
+  {
+    "id": "40bc6162.88ce4",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1667.051061630249,
+    "y": 807.7089085578918,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "ae09ce54.6bf07"
+      ]
+    ]
+  },
+  {
+    "id": "c340ff54.e12d9",
+    "type": "switchNode",
+    "name": "switch allotted-resource-id",
+    "xml": "<switch test=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1915.778326034546,
+    "y": 768.0000743865967,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "1d1de9d1.83f6a6"
+      ]
+    ]
+  },
+  {
+    "id": "1d1de9d1.83f6a6",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2097.587900161743,
+    "y": 768.464521408081,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "a46d34eb.cac738"
+      ]
+    ]
+  },
+  {
+    "id": "ae09ce54.6bf07",
+    "type": "set",
+    "name": "set tmp.cidx",
+    "xml": "<set>\n<parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />\n",
+    "comments": "",
+    "x": 1828.9244441986084,
+    "y": 807.220609664917,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "896433e5.65cfe",
+    "type": "comment",
+    "name": "Add to consumed service consumed-allotted-resources in mdsal",
+    "info": "Prepare data and add to service-data",
+    "comments": "",
+    "x": 701.6672344207764,
+    "y": 678.0000438690186,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "f08c9e13.c44cf",
+    "type": "comment",
+    "name": "This set resource will be added to MDSAL by provider code",
+    "info": "Below we add to service-data.consumed-allotted-resource at last index",
+    "comments": "",
+    "x": 689.000150680542,
+    "y": 816.7781362533569,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "c88c64b6.dfe1a8",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 789.4527835845947,
+    "y": 1857.4844884872437,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "9e7b6d53.3088c"
+      ]
+    ]
+  },
+  {
+    "id": "9e7b6d53.3088c",
+    "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=\"AAI failed\" />\n",
+    "comments": "",
+    "x": 955.9766635894775,
+    "y": 1869.1035594940186,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "d0e9a590.6f6418",
+    "type": "failure",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 796.5480709075928,
+    "y": 1890.2464561462402,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "9e7b6d53.3088c"
+      ]
+    ]
+  },
+  {
+    "id": "939b0538.009728",
+    "type": "comment",
+    "name": "Save Resource to AAI",
+    "info": "",
+    "comments": "",
+    "x": 571.5004863739014,
+    "y": 1809.8338594436646,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "452cb6fa.b17108",
+    "type": "comment",
+    "name": "Set allotted resource type if not sent by SO",
+    "info": "",
+    "comments": "",
+    "x": 650.0000076293945,
+    "y": 252.9999942779541,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "79a41f6b.cf86f",
+    "type": "switchNode",
+    "name": "switch allotted-resource-type",
+    "xml": "<switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 611.9233169555664,
+    "y": 293.56605052948,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "9df4ab55.c16cf8",
+        "31f43c4.20babc4"
+      ]
+    ]
+  },
+  {
+    "id": "9df4ab55.c16cf8",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 814.923469543457,
+    "y": 278.56605339050293,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "e98a3f5.eded9c"
+      ]
+    ]
+  },
+  {
+    "id": "31f43c4.20babc4",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 807.9232978820801,
+    "y": 318.5660734176636,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "1fb5cc66.1487a4"
+      ]
+    ]
+  },
+  {
+    "id": "1fb5cc66.1487a4",
+    "type": "set",
+    "name": "set tmp.ar.allotted-resource-type",
+    "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-type' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`' />\n",
+    "comments": "",
+    "x": 1039.923282623291,
+    "y": 318.56607818603516,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "fd7e59b0.bdc4b8",
+    "type": "comment",
+    "name": "For storage in AAI connection-attachment-topology",
+    "info": "",
+    "comments": "",
+    "x": 659.9999599456787,
+    "y": 352.99999713897705,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "80a14ec4.93ba1",
+    "type": "comment",
+    "name": "Obtain different URL, template location etc",
+    "info": "For saving resource information to MDSAL & for AAI",
+    "comments": "",
+    "x": 634.9999446868896,
+    "y": 434.88890647888184,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "77a4ea23.6f89a4",
+    "type": "comment",
+    "name": "Used for Put AR by id to MDSAL",
+    "info": "",
+    "comments": "",
+    "x": 601.0000286102295,
+    "y": 523.8889236450195,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "9a5ebcbf.d7c64",
+    "type": "comment",
+    "name": "Obtain the last index in services",
+    "info": "ServiceData is added by Provider code",
+    "comments": "",
+    "x": 602.4444713592529,
+    "y": 709.8888683319092,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "547adbe.09cf724",
+    "type": "set",
+    "name": "set output to api handler",
+    "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='connection-attachment-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $connection-attachment-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+    "comments": "",
+    "x": 580.2681331634521,
+    "y": 1773.3591861724854,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "1c8354a6.82036b",
+    "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": 525.6813278198242,
+    "y": 2062.9751262664795,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "e98a3f5.eded9c",
+    "type": "set",
+    "name": "set tmp.ar.allotted-resource-type",
+    "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-type' value=\"SOTNAttachmentInstance\" />\n",
+    "comments": "",
+    "x": 1054.000156402588,
+    "y": 278.99997997283936,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "1a362e33.d91322",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:sotn-get-saved-ar-param",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sotn-get-saved-ar-param' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 881.9941539764404,
+    "y": 1622.4937267303467,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "47b622.5f78d9e",
+    "type": "execute",
+    "name": "execute RestApiCallNode - PUT AR by id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.sotn-attachment.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 631.00026512146,
+    "y": 1707.0001153945923,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "b728505b.0e0f4",
+        "c43ce215.10dc2",
+        "e9e15e53.ae354"
+      ]
+    ]
+  },
+  {
+    "id": "b728505b.0e0f4",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 880.6416187286377,
+    "y": 1745.3314456939697,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "66f7d186.f5a07"
+      ]
+    ]
+  },
+  {
+    "id": "c43ce215.10dc2",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 871.6416683197021,
+    "y": 1713.8314714431763,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "66f7d186.f5a07"
+      ]
+    ]
+  },
+  {
+    "id": "e9e15e53.ae354",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 875.3917064666748,
+    "y": 1684.1885763183236,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "7fa6f3ff.c75f4c"
+      ]
+    ]
+  },
+  {
+    "id": "66f7d186.f5a07",
+    "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 updating md-sal for connection-attachment-allotted-resource\" />\n",
+    "comments": "",
+    "x": 1041.3917064666748,
+    "y": 1714.5814952850342,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "7fa6f3ff.c75f4c",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1017.0476741790771,
+    "y": 1680.3807455077767,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "7e65d530.30d0fc",
+    "type": "execute",
+    "name": "execute RestApiCallNode - Update parent provided service AR",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"parent\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 700.9999523162842,
+    "y": 1133.0001621246338,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "b6d4488a.291cc8",
+        "59f3d9b4.dd0088",
+        "20a7e6fe.74d03a"
+      ]
+    ]
+  },
+  {
+    "id": "b6d4488a.291cc8",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1009.308012008667,
+    "y": 1164.9984378814697,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "2d8af8d.61d7808"
+      ]
+    ]
+  },
+  {
+    "id": "59f3d9b4.dd0088",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1000.3080615997314,
+    "y": 1133.4984636306763,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "2d8af8d.61d7808"
+      ]
+    ]
+  },
+  {
+    "id": "20a7e6fe.74d03a",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1004.0580997467041,
+    "y": 1103.8555685058236,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "3fdd6b37.b0dbe4"
+      ]
+    ]
+  },
+  {
+    "id": "2d8af8d.61d7808",
+    "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 updating md-sal for connection-attachment-allotted-resource\" />\n",
+    "comments": "",
+    "x": 1170.058099746704,
+    "y": 1134.2484874725342,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "3fdd6b37.b0dbe4",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1145.7140674591064,
+    "y": 1100.0477376952767,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "fef74984.54b2d8",
+    "type": "comment",
+    "name": "Put the parent allotted resource in mdsal",
+    "info": "",
+    "comments": "",
+    "x": 629.9998989105225,
+    "y": 1095.0000686645508,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "b279212f.2876c",
+    "type": "set",
+    "name": "set connection-attachment-ar-identifiers",
+    "xml": "<set>\n<parameter name='connection-attachment-ar-identifiers.consuming-service-instance-id' value=\"`$connection-attachment-topology-operation-input.service-information.service-instance-id` \" />\n<parameter name='connection-attachment-ar-identifiers.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n<parameter name='connection-attachment-ar-identifiers.allotted-resource-type' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type` \" />\n<parameter name='connection-attachment-ar-identifiers.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n\n",
+    "comments": "",
+    "x": 626.357084274292,
+    "y": 1297.5716876983643,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "17bffa68.c6e1f6",
+    "type": "set",
+    "name": "set ar-data",
+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-id' value=\"`$tmp.ar.allotted-resource-id` \" />\n<parameter name='connection-attachment-ar.allotted-resource-status.action' value=\"`$connection-attachment-topology-operation-input.request-information.request-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value=\"connection-attachment-topology-operation\" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$connection-attachment-topology-operation-input.request-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$connection-attachment-topology-operation-input.service-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.' value=\"`$connection-attachment-topology-operation-input.connection-attachment-request-input.` \" />",
+    "comments": "",
+    "x": 540.2138652801514,
+    "y": 1265.3810443878174,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "624c4802.103f08",
+    "type": "set",
+    "name": "set identifiers in overall structure",
+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.' \nvalue=\"`$connection-attachment-ar-identifiers.`\" />\n\n\n",
+    "comments": "",
+    "x": 605.1668834686279,
+    "y": 1331.6668729782104,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "15e63162.783f4f",
+    "type": "execute",
+    "name": "execute getTime",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 557.4997234344482,
+    "y": 1405.000400543213,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "4d0b157.d3d26ec",
+    "type": "set",
+    "name": "set allotted-resource-oper-status",
+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",
+    "comments": "",
+    "x": 608.4867610931396,
+    "y": 1460.9516334533691,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "7b0dce99.088f9",
+    "type": "set",
+    "name": "set model-data",
+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` \" />",
+    "comments": "",
+    "x": 553.0553798675537,
+    "y": 1366.5557584762573,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "3f9a586f.0ed898",
+    "type": "comment",
+    "name": "Prepare data for allotted-resource addition to MDSAL",
+    "info": "This will add to allotted-resource which is present inside service.",
+    "comments": "",
+    "x": 670.3888683319092,
+    "y": 1231.5556049346924,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "5f01282.a94d0d8",
+    "type": "execute",
+    "name": "generate parent-ar url - replace allotted-resource-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$tmp.parent-ar-url`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.parent-ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 665.5000133514404,
+    "y": 1059.0000076293945,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "9851c050.afe45",
+    "type": "execute",
+    "name": "generate parent-ar url - replace service-instance-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.parent-provided-resource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.parent-ar-url\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 661.4999370574951,
+    "y": 1016.0001440048218,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "e506fda2.8d2ea",
+    "type": "comment",
+    "name": "Prepare Parent AR URL",
+    "info": "Preparation to set provided-allotted-resource in parent service instance",
+    "comments": "",
+    "x": 579.500394821167,
+    "y": 945.0000972747803,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "77c3364e.f87538",
+    "type": "set",
+    "name": "set tmp.ar.parent-service-instance-id",
+    "xml": "<set>\n<parameter name='tmp.ar.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n\n",
+    "comments": "",
+    "x": 618.5001888275146,
+    "y": 978.5000367164612,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "92f0d3fa.a1c8f",
+    "type": "comment",
+    "name": "Required for filling template values",
+    "info": "This is done because connection-attachment is generic resource and doesn't have specific parameters",
+    "comments": "",
+    "x": 808.0003566741943,
+    "y": 1585.4997997283936,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "a46d34eb.cac738",
+    "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 updating md-sal for connection-attachment-allotted-resource as cosumed allotted resource already exists.\" />\n",
+    "comments": "",
+    "x": 2175.756971359253,
+    "y": 816.6458263397217,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "9846e0ee.d12b5",
+    "type": "set",
+    "name": "set tmp.found-cidx",
+    "xml": "<set>\n<parameter name='tmp.found-cidx' value=\"`false`\" />\n\n\n",
+    "comments": "",
+    "x": 1301.6461429595947,
+    "y": 728.3125693798065,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "8a1a8721.8ed3e8",
+    "type": "comment",
+    "name": "Add to parent services provided-allotted-resources in mdsal",
+    "info": "",
+    "comments": "",
+    "x": 690.2015056610107,
+    "y": 912.9792537689209,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "1b0d53ce.9a266c",
+    "type": "comment",
+    "name": "Add to allotted-resources in mdsal",
+    "info": "",
+    "comments": "",
+    "x": 610.9686946868896,
+    "y": 1198.968934059143,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "1050cf03.802321",
+    "type": "block",
+    "name": "block: atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1284.0000495910645,
+    "y": 626.2777576446533,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "e1fb702b.b9339"
+      ]
+    ]
+  },
+  {
+    "id": "e1fb702b.b9339",
+    "type": "switchNode",
+    "name": "switch cr length",
+    "xml": "<switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1471.8574295043945,
+    "y": 626.8968930244446,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "e440f3e0.a28bd"
+      ]
+    ]
+  },
+  {
+    "id": "e440f3e0.a28bd",
+    "type": "other",
+    "name": "outcome 1",
+    "xml": "<outcome value='1'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1671.1905517578125,
+    "y": 626.8969717025757,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "b3c8cfd5.7bea1"
+      ]
+    ]
+  },
+  {
+    "id": "908c2ae3.c4f938",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 756.0000514984131,
+    "y": 621.0000333786011,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "43d96423.28d03c",
+        "4feb08ba.5bc668"
+      ]
+    ]
+  },
+  {
+    "id": "4feb08ba.5bc668",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1124.0000820159912,
+    "y": 591.0000314712524,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "83e21d77.f2154"
+      ]
+    ]
+  },
+  {
+    "id": "83e21d77.f2154",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1276.0000820159912,
+    "y": 590.0000314712524,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "323f6bf8.18f834",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 552.5556087493896,
+    "y": 1540.6666507720947,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "e3e339e2.fb2158",
+        "1a362e33.d91322"
+      ]
+    ]
+  },
+  {
+    "id": "e3e339e2.fb2158",
+    "type": "for",
+    "name": "for each sotn-get-request-input-param",
+    "xml": "<for index='i' start='0' end='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 822.5556735992432,
+    "y": 1540.6666984558105,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "bbd24f47.537d9"
+      ]
+    ]
+  },
+  {
+    "id": "efeae286.69244",
+    "type": "comment",
+    "name": "Take the parameter names by removing prefix",
+    "info": "",
+    "comments": "",
+    "x": 1362.555456161499,
+    "y": 1496.6667318344116,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "7418c4f0.7b725c",
+    "type": "execute",
+    "name": "execute split parameterName",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$i].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1320.590124130249,
+    "y": 1531.6458749771118,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "91cb2a09.3ae8f8",
+    "type": "set",
+    "name": "set parameterName",
+    "xml": "<set>\n<parameter name=\"`connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$i].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",
+    "comments": "",
+    "x": 1291.0346508026123,
+    "y": 1564.6458749771118,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "6e625d6.e7e6ea4",
+    "type": "comment",
+    "name": "Remove VNFC prefix",
+    "info": "",
+    "comments": "",
+    "x": 763.5556011199951,
+    "y": 1508.1110124588013,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "bbd24f47.537d9",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1069.5555095672607,
+    "y": 1539.1110429763794,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "7418c4f0.7b725c",
+        "91cb2a09.3ae8f8"
+      ]
+    ]
+  },
+  {
+    "id": "ef225a8b.70ebd8",
+    "type": "set",
+    "name": "set src-ltpId",
+    "xml": "<set>\n<parameter name='src-ltpId' value=\"`'nodeId-' + $prop.connection-attachment.access-node-id + '-ltpId-' + $prop.connection-attachment.access-ltp-id`\" />\n",
+    "comments": "",
+    "x": 529.0000972747803,
+    "y": 1930.0003395080566,
+    "z": "6ade2963.0875b8",
+    "wires": []
+  },
+  {
+    "id": "16153237.cff69e",
+    "type": "update",
+    "name": "save AAI allotted-resource",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='allotted-resource' \n      key='customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id' >        \n    <parameter name=\"id\" value=\"`$tmp.ar.allotted-resource-id`\" />\n\t<parameter name=\"name\" value=\"`$prop.connection-attachment.sotnVpnName`\" />\n\t<parameter name=\"access-provider-id\" value=\"`$prop.connection-attachment.access-provider-id`\" />\n\t<parameter name=\"access-client-id\" value=\"`$prop.connection-attachment.access-client-id`\" />\n\t<parameter name=\"access-topology-id\" value=\"`$prop.connection-attachment.access-topology-id`\" />\n\t<parameter name=\"access-node-id\" value=\"`$prop.connection-attachment.access-node-id`\" />\n\t<parameter name=\"access-ltp-id\" value=\"`$prop.connection-attachment.access-ltp-id`\" />\t\n\t<parameter name=\"cvlan\" value=\"`$prop.connection-attachment.cVLAN`\" />\n    <parameter name=\"vpn-name\" value=\"`$prop.connection-attachment.sotnVpnName`\" />\n\t<parameter name=\"selflink\" value=\"`$tmp.ar.self-link`\" />\n\t<parameter name=\"model-invariant-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`\" />\n\t<parameter name=\"model-version-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`\" />\n\t<parameter name=\"operational-status\" value=\"Created\" />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 579.0039520263672,
+    "y": 1870.5039854049683,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      [
+        "c88c64b6.dfe1a8",
+        "d0e9a590.6f6418"
+      ]
+    ]
+  },
+  {
+    "id": "5054f74f.3fad08",
+    "type": "save",
+    "name": "save srcLTP relationship in AAI",
+    "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource:relationship-list\" \n\t\tkey=\"customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\" \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"p-interface\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/pnfs/pnf/' + $prop.connection-attachment.access-node-id + '/p-interfaces/p-interface/' + $src-ltpId`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"p-interface.interface-name\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$src-ltpId`\" />\n\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 579.3170623779297,
+    "y": 1976.9767112731934,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "9ff190ab.bed71",
+    "type": "save",
+    "name": "save allotted relationship in AAI",
+    "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource=\"service-instance:relationship-list\" \n\t\tkey=\"customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id\" \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"allotted-resource\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/business/customers/customer/' + $connection-attachment-topology-operation-input.service-information.global-customer-id + '/service-subscriptions/service-subscription/' + $connection-attachment-topology-operation-input.service-information.subscription-service-type + '/service-instances/service-instance/' + $connection-attachment-topology-operation-input.service-information.service-instance-id + '/allotted-resources/allotted-resource/' + $tmp.ar.allotted-resource-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"allotted-resource.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.ar.allotted-resource-id`\" />\n\n\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 577.3130798339844,
+    "y": 2015.9724407196045,
+    "z": "6ade2963.0875b8",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-deactivate.json
new file mode 100644
index 0000000..bccb618
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-deactivate.json
@@ -0,0 +1,2087 @@
+[

+  {

+    "id": "ff549c79.63961",

+    "type": "dgstart",

+    "name": "DGSTART",

+    "outputs": 1,

+    "x": 94.03125,

+    "y": 49.00012397766113,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "a05176da.ae3e48"

+      ]

+    ]

+  },

+  {

+    "id": "a05176da.ae3e48",

+    "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": 275.03125381469727,

+    "y": 109.00014114379883,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "fe524cbe.32e62"

+      ]

+    ]

+  },

+  {

+    "id": "fe524cbe.32e62",

+    "type": "method",

+    "name": "sotn-attachment-topology-operation-deactivate",

+    "xml": "<method rpc='sotn-attachment-topology-operation-deactivate' mode='sync'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 263.0313720703125,

+    "y": 197.00012397766113,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "437c9c25.6eb2d4"

+      ]

+    ]

+  },

+  {

+    "id": "437c9c25.6eb2d4",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 279.0313720703125,

+    "y": 752.0003685951233,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "a802b53.c930648",

+        "1068510.ffabdaf",

+        "90b4d4b2.478c88",

+        "96a33d9.74471c",

+        "f6798703.c71c48",

+        "74b419be.6c1dc8",

+        "cea5b658.f38fb8",

+        "8fc6baf4.1c66d8",

+        "bd5b936a.6f494",

+        "1ecf912a.ad8d5f",

+        "754f8876.c41b88",

+        "1fa63937.8805f7",

+        "8e1d23f5.d1706",

+        "d507ebff.314fd8",

+        "9f388371.4f18e",

+        "31cf3c93.494fc4",

+        "61d4f147.44641",

+        "7bc058aa.42a598",

+        "7c847f3c.b2ac4",

+        "f0fb1a1c.cc2828"

+      ]

+    ]

+  },

+  {

+    "id": "a802b53.c930648",

+    "type": "set",

+    "name": "set tmp.ar.allotted-resource-id,etc",

+    "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n",

+    "comments": "",

+    "x": 676.0248107910156,

+    "y": 150.99361085891724,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "88124680.e6b8a8",

+    "type": "comment",

+    "name": "set tmp ar-id to fetch resource from MDSAL",

+    "info": "",

+    "comments": "",

+    "x": 704.9851226806641,

+    "y": 115.02540683746338,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "1068510.ffabdaf",

+    "type": "set",

+    "name": "set tmp.ar.self-link",

+    "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/connection-attachment-topology/'` \" />\n\n",

+    "comments": "",

+    "x": 630.0247497558594,

+    "y": 243.99361610412598,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "f6798703.c71c48",

+    "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": 636.2866401672363,

+    "y": 331.66034507751465,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "90b4d4b2.478c88",

+    "type": "execute",

+    "name": "generate allotted-resource tmp.ar-url",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 686.2867431640625,

+    "y": 418.66034603118896,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "182d3b03.4e2c15",

+    "type": "comment",

+    "name": "GET connection-attachment-allotted-resource from mdsal",

+    "info": "",

+    "comments": "",

+    "x": 729.8397369384766,

+    "y": 489.5388927459717,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "bbe52b99.83dd68",

+    "type": "comment",

+    "name": "Used for setting output to API Handler",

+    "info": "",

+    "comments": "",

+    "x": 684.0247802734375,

+    "y": 210.99362564086914,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "dce4912.220bb7",

+    "type": "comment",

+    "name": "Obtain different URL, template location etc",

+    "info": "For saving resource information to MDSAL & for AAI",

+    "comments": "",

+    "x": 702.0247459411621,

+    "y": 296.88250637054443,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "66940a34.fde394",

+    "type": "comment",

+    "name": "Used to Get AR by id to MDSAL, same as self-link",

+    "info": "",

+    "comments": "",

+    "x": 728.0247650146484,

+    "y": 383.8824653625488,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "55776be8.abf844",

+    "type": "success",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1170.6980781555176,

+    "y": 537.0001525878906,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "5a06af0c.5db4c"

+      ]

+    ]

+  },

+  {

+    "id": "5a06af0c.5db4c",

+    "type": "block",

+    "name": "block: atomic",

+    "xml": "<block atomic=\"true\">\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 1339.6980819702148,

+    "y": 535.5000534057617,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "faae066.03a7ef8"

+      ]

+    ]

+  },

+  {

+    "id": "faae066.03a7ef8",

+    "type": "switchNode",

+    "name": "switch cr length",

+    "xml": "<switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1512.5553512573242,

+    "y": 473.119215965271,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "74bd4c84.2a01f4",

+        "6215df1.a21872"

+      ]

+    ]

+  },

+  {

+    "id": "74bd4c84.2a01f4",

+    "type": "other",

+    "name": "outcome 1",

+    "xml": "<outcome value='1'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1749.8885955810547,

+    "y": 451.11916637420654,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "932b115b.ef744"

+      ]

+    ]

+  },

+  {

+    "id": "932b115b.ef744",

+    "type": "block",

+    "name": "block: atomic",

+    "xml": "<block atomic='true'>\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 1934.4124851226807,

+    "y": 448.0240001678467,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "d5b08a67.3e5c48",

+        "5ce1e592.04689c",

+        "fa1f1660.477578"

+      ]

+    ]

+  },

+  {

+    "id": "1d1825f2.925d0a",

+    "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=\"Error: SOTN resource not found\" />\n    \n",

+    "comments": "",

+    "x": 1858.5503273010254,

+    "y": 573.0662412643433,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "2f2bf02.ca60d1",

+    "type": "other",

+    "name": "other",

+    "xml": "<outcome value='Other'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1162.5498809814453,

+    "y": 572.066237449646,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "82e6da2.ad6fd28"

+      ]

+    ]

+  },

+  {

+    "id": "82e6da2.ad6fd28",

+    "type": "block",

+    "name": "block: atomic",

+    "xml": "<block atomic=\"true\">\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 1342.5498313903809,

+    "y": 572.7327880859375,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "1d1825f2.925d0a"

+      ]

+    ]

+  },

+  {

+    "id": "6215df1.a21872",

+    "type": "other",

+    "name": "other",

+    "xml": "<outcome value='Other'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1738.2165489196777,

+    "y": 488.39952659606934,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "1d1825f2.925d0a"

+      ]

+    ]

+  },

+  {

+    "id": "d5b08a67.3e5c48",

+    "type": "set",

+    "name": "set connection-attachment-ar from get",

+    "xml": "<set>\n<parameter name='connection-attachment-ar.' value='$mdsal-ar.connection-attachment-allotted-resource[0].' />\n",

+    "comments": "",

+    "x": 2180.476043701172,

+    "y": 408.00022983551025,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "fa1f1660.477578",

+    "type": "set",

+    "name": "set oper-status",

+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-ar.allotted-resource-status.rpc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />\n\n",

+    "comments": "",

+    "x": 2113.4760398864746,

+    "y": 498.42878437042236,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "5ce1e592.04689c",

+    "type": "switchNode",

+    "name": "switch order-status",

+    "xml": "<switch test='`$connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2124.475875854492,

+    "y": 452.0002336502075,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "46412cb7.a5f6f4",

+        "b5fc3d64.54bed"

+      ]

+    ]

+  },

+  {

+    "id": "46412cb7.a5f6f4",

+    "type": "outcome",

+    "name": "outcome Active",

+    "xml": "<outcome value='Active'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2331.075824737549,

+    "y": 442.0002336502075,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "11963437.b728dc"

+      ]

+    ]

+  },

+  {

+    "id": "b5fc3d64.54bed",

+    "type": "outcome",

+    "name": "outcome Other",

+    "xml": "<outcome value='Other'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2330.7903442382812,

+    "y": 484.42882442474365,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "1c1d147e.4224ac"

+      ]

+    ]

+  },

+  {

+    "id": "11963437.b728dc",

+    "type": "block",

+    "name": "block",

+    "xml": "<block>\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 2483.5463790893555,

+    "y": 440.3758840560913,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "1c1d147e.4224ac",

+    "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\" \n    value=\"`'Existing connection-attachment-allotted-resource with order status of ' + $connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`\" />\n",

+    "comments": "",

+    "x": 2503.6982345581055,

+    "y": 481.00023555755615,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "6ad0e2bd.71bc3c",

+    "type": "call",

+    "name": "call GENERIC-RESOURCE-API:sotn-get-saved-ar-param",

+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sotn-get-saved-ar-param' mode='sync' >\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 891.3343658447266,

+    "y": 633.4937148094177,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "74b419be.6c1dc8",

+    "type": "block",

+    "name": "block: atomic",

+    "xml": "<block atomic=\"true\">\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 588.3405303955078,

+    "y": 634.5000629425049,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "6ad0e2bd.71bc3c"

+      ]

+    ]

+  },

+  {

+    "id": "8a5e890a.680be8",

+    "type": "comment",

+    "name": "GET parent-service-data from mdsal to check existence of other End point",

+    "info": "",

+    "comments": "",

+    "x": 770.0316925048828,

+    "y": 695.5318222045898,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "2205c5d5.df45ea",

+    "type": "for",

+    "name": "for pidx..mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[]",

+    "xml": "<for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1660.2162475585938,

+    "y": 899.0042066574097,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "325e72dd.42ae0e"

+      ]

+    ]

+  },

+  {

+    "id": "f3fcb7.3cb38348",

+    "type": "other",

+    "name": "other",

+    "xml": "<outcome value='Other'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1066.3582191467285,

+    "y": 1031.5756673812866,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "ed4934e0.63e078"

+      ]

+    ]

+  },

+  {

+    "id": "640c50fa.9b815",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">",

+    "atomic": "true",

+    "outputs": 1,

+    "x": 1257.4856204986572,

+    "y": 896.7016951814294,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "2205c5d5.df45ea"

+      ]

+    ]

+  },

+  {

+    "id": "325e72dd.42ae0e",

+    "type": "switchNode",

+    "name": "switch allotted-resource-id",

+    "xml": "<switch test=\"`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2095.327648162842,

+    "y": 899.0041036605835,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "27ec9aa5.cff036",

+        "495a6869.e7e8d8"

+      ]

+    ]

+  },

+  {

+    "id": "27ec9aa5.cff036",

+    "type": "outcomeTrue",

+    "name": "true",

+    "xml": "<outcome value='true'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2304.137996673584,

+    "y": 879.468560218811,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "ac118201.9b0e6"

+      ]

+    ]

+  },

+  {

+    "id": "7260dcf8.1fb0a4",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">",

+    "atomic": "true",

+    "outputs": 1,

+    "x": 2452.898750305176,

+    "y": 915.3257417678833,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "5e185008.36b4b"

+      ]

+    ]

+  },

+  {

+    "id": "5e185008.36b4b",

+    "type": "set",

+    "name": "set tmp.pidx and ptx.consumed-ar",

+    "xml": "<set>\n<parameter name='tmp.pidx' value='`$pidx`' />\n<parameter name='tmp.provided-ar.' value='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].`' />\n<parameter name='tmp.found-in-ar' value='true' />\n<parameter name='tmp.ep-available' value='true' />",

+    "comments": "",

+    "x": 2687.756187438965,

+    "y": 913.8972730636597,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "b3d0356b.e2dd48",

+    "type": "comment",

+    "name": "Check existence of other AR in parent service data",

+    "info": "Check if other allotted resource is available.",

+    "comments": "",

+    "x": 693.9940948486328,

+    "y": 865.8930444717407,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "31b6e940.d005b6",

+    "type": "other",

+    "name": "outcome 1",

+    "xml": "<outcome value='1'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1077.0105667114258,

+    "y": 966.6773881912231,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "864fe6a.0f93518"

+      ]

+    ]

+  },

+  {

+    "id": "ed4934e0.63e078",

+    "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=\"Error: SOTN resource not found\" />\n    \n",

+    "comments": "",

+    "x": 1239.0105628967285,

+    "y": 1030.677409172058,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "998ab047.1d3cb",

+    "type": "other",

+    "name": "outcome 2",

+    "xml": "<outcome value='2'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1083.0106410980225,

+    "y": 897.6773955598474,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "640c50fa.9b815"

+      ]

+    ]

+  },

+  {

+    "id": "ac118201.9b0e6",

+    "type": "block",

+    "name": "block",

+    "xml": "<block>\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 2433.122055053711,

+    "y": 874.677300453186,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "495a6869.e7e8d8",

+    "type": "outcomeTrue",

+    "name": "false",

+    "xml": "<outcome value='false'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2304.1220474243164,

+    "y": 913.6773042678833,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "7260dcf8.1fb0a4"

+      ]

+    ]

+  },

+  {

+    "id": "e0954e7f.0fc95",

+    "type": "switchNode",

+    "name": "switch mdsal-psd.networks_length",

+    "xml": "<switch test='`$mdsal-psd.service-data.networks.network_length`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1489.3442459106445,

+    "y": 969.8998851776123,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "6d21348c.4e000c",

+        "8b08dda8.1325d"

+      ]

+    ]

+  },

+  {

+    "id": "8b08dda8.1325d",

+    "type": "other",

+    "name": "outcome 1",

+    "xml": "<outcome value='1'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1719.3442687988281,

+    "y": 945.7887172698975,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "2e4674ae.83d44c"

+      ]

+    ]

+  },

+  {

+    "id": "6d21348c.4e000c",

+    "type": "other",

+    "name": "other",

+    "xml": "<outcome value='Other'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1713.3443908691406,

+    "y": 1005.7887172698975,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "33f517e8.5f1128"

+      ]

+    ]

+  },

+  {

+    "id": "33f517e8.5f1128",

+    "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=\"Error: Incorrect state found more then 1 network\" />\n    \n",

+    "comments": "",

+    "x": 1885.9967765808105,

+    "y": 1005.8905239105225,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "6f8f7dac.c1bd54",

+    "type": "set",

+    "name": "set tmp.network.",

+    "xml": "<set>\n<parameter name='tmp.network.' value='`$mdsal-psd.service-data.networks.network[0].`' />\n",

+    "comments": "",

+    "x": 2087.789192199707,

+    "y": 935.7888765335083,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "864fe6a.0f93518",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">",

+    "atomic": "true",

+    "outputs": 1,

+    "x": 1249.454921722412,

+    "y": 967.7886362075806,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "e0954e7f.0fc95"

+      ]

+    ]

+  },

+  {

+    "id": "2e4674ae.83d44c",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">",

+    "atomic": "true",

+    "outputs": 1,

+    "x": 1887.121940612793,

+    "y": 964.7885513305664,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "6f8f7dac.c1bd54",

+        "ac5226f5.253788"

+      ]

+    ]

+  },

+  {

+    "id": "ac5226f5.253788",

+    "type": "for",

+    "name": "for nidx..tmp.network.network-data.network-request-input.network...[]",

+    "xml": "<for index='nidx' start='0' end='`$tmp.network.network-data.network-request-input.network-input-parameters.param_length`' >",

+    "comments": "",

+    "outputs": 1,

+    "x": 2263.12255859375,

+    "y": 1007.7885589599609,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "314fe564.900c2a"

+      ]

+    ]

+  },

+  {

+    "id": "314fe564.900c2a",

+    "type": "block",

+    "name": "block",

+    "xml": "<block>\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 2586.6782188415527,

+    "y": 1008.7886362075806,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "6d64b0f1.beb81",

+        "e3bdd7fd.7d8fe8"

+      ]

+    ]

+  },

+  {

+    "id": "6d64b0f1.beb81",

+    "type": "switchNode",

+    "name": "switch access-node-id",

+    "xml": "<switch test=\"`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'access-node-id'`\">",

+    "comments": "",

+    "outputs": 1,

+    "x": 2765.1883239746094,

+    "y": 992.799054145813,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "c510bd0d.90a2"

+      ]

+    ]

+  },

+  {

+    "id": "c510bd0d.90a2",

+    "type": "outcomeTrue",

+    "name": "true",

+    "xml": "<outcome value='true'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2952.1883239746094,

+    "y": 993.799054145813,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "a92bc658.3e7468"

+      ]

+    ]

+  },

+  {

+    "id": "a92bc658.3e7468",

+    "type": "set",

+    "name": "set tmp.found-in-network tmp.ep-available",

+    "xml": "<set>\n<parameter name='tmp.found-in-network' value='true' />\n<parameter name='tmp.ep-available' value='true' />",

+    "comments": "",

+    "x": 3203.188331604004,

+    "y": 993.3989963531494,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "e3bdd7fd.7d8fe8",

+    "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": 2748.17822265625,

+    "y": 1037.7886533737183,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "96a33d9.74471c",

+    "type": "switchNode",

+    "name": "switch tmp.ep-available",

+    "xml": "<switch test='`$tmp.ep-available`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 625.3441162109375,

+    "y": 1170.2329092025757,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "61b02086.d03f9",

+        "6c4d286f.2a00a8"

+      ]

+    ]

+  },

+  {

+    "id": "6c4d286f.2a00a8",

+    "type": "outcomeTrue",

+    "name": "true",

+    "xml": "<outcome value='true'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 808.0109519958496,

+    "y": 1194.5663175582886,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "929ee9e7.521368"

+      ]

+    ]

+  },

+  {

+    "id": "61b02086.d03f9",

+    "type": "outcomeTrue",

+    "name": "false",

+    "xml": "<outcome value='false'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 810.8997230529785,

+    "y": 1133.5664157867432,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "856596b.3c40368"

+      ]

+    ]

+  },

+  {

+    "id": "856596b.3c40368",

+    "type": "block",

+    "name": "block",

+    "xml": "<block>\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 947.8997993469238,

+    "y": 1132.4552297592163,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "929ee9e7.521368",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">",

+    "atomic": "true",

+    "outputs": 1,

+    "x": 978.1220397949219,

+    "y": 1192.5662755966187,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "be61dd8a.9e196"

+      ]

+    ]

+  },

+  {

+    "id": "eb0bfad4.778f58",

+    "type": "comment",

+    "name": "GET connection-attachment-ar to store AR data from mdsal",

+    "info": "",

+    "comments": "",

+    "x": 2163.504196166992,

+    "y": 372.504093170166,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "114f8c87.a5aa33",

+    "type": "comment",

+    "name": "Set source end point",

+    "info": "",

+    "comments": "",

+    "x": 602.0040893554688,

+    "y": 602.2541885375977,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "cea5b658.f38fb8",

+    "type": "set",

+    "name": "set tmp.ar.parent-service-instance-id",

+    "xml": "<set>\n<parameter name='tmp.ar.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n\n",

+    "comments": "",

+    "x": 655.0001678466797,

+    "y": 727.0003328323364,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "5d8dc0c4.ff757",

+    "type": "success",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1033.0001640319824,

+    "y": 776.0003318786621,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "6a1bf843.4d25b8"

+      ]

+    ]

+  },

+  {

+    "id": "83b7907.b55937",

+    "type": "other",

+    "name": "other",

+    "xml": "<outcome value='Other'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1024.8519668579102,

+    "y": 811.0664167404175,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "4f4eb4c7.cc9fdc"

+      ]

+    ]

+  },

+  {

+    "id": "4f4eb4c7.cc9fdc",

+    "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=\"Error: SOTN resource not found\" />\n    \n",

+    "comments": "",

+    "x": 1200.0006523132324,

+    "y": 807.3337669372559,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "6a1bf843.4d25b8",

+    "type": "block",

+    "name": "block",

+    "xml": "<block>\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 1184.0001640319824,

+    "y": 774.0003318786621,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "8fc6baf4.1c66d8",

+    "type": "set",

+    "name": "set tmp.found-in-ar tmp.found-in-network tmp.ep-available to false",

+    "xml": "<set>\n<parameter name='tmp.found-in-ar' value='false' />\n<parameter name='tmp.found-in-network' value='false' />\n<parameter name='tmp.ep-available' value='false' />",

+    "comments": "",

+    "x": 742.0001602172852,

+    "y": 901.0003061294556,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "ce5d7876.710a68",

+    "type": "comment",

+    "name": "If other EP exists delete from domain controller",

+    "info": "",

+    "comments": "",

+    "x": 676.0000610351562,

+    "y": 1095.0001211166382,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "fd46c38b.b0e06",

+    "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": 2674.000877380371,

+    "y": 1385.0007133483887,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "ff817e6a.4c262",

+    "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 = $tmp.thirdparty-sdnc-id AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2237.500816345215,

+    "y": 1444.0007133483887,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "f3622c21.50f46",

+        "e431ae5e.58828",

+        "a151b89e.28add8"

+      ]

+    ]

+  },

+  {

+    "id": "f3622c21.50f46",

+    "type": "success",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2476.500816345215,

+    "y": 1397.0007133483887,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "fd46c38b.b0e06"

+      ]

+    ]

+  },

+  {

+    "id": "e431ae5e.58828",

+    "type": "not-found",

+    "name": "not-found",

+    "xml": "<outcome value='not-found'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2479.99178314209,

+    "y": 1444.57474899292,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "236bc0bf.99bb6"

+      ]

+    ]

+  },

+  {

+    "id": "a151b89e.28add8",

+    "type": "other",

+    "name": "other",

+    "xml": "<outcome value='Other'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2475.32479095459,

+    "y": 1485.9080619812012,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "6adb79b2.e33818"

+      ]

+    ]

+  },

+  {

+    "id": "236bc0bf.99bb6",

+    "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": 2656.5631942749023,

+    "y": 1432.8604850769043,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "6adb79b2.e33818",

+    "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": 2663.0973472595215,

+    "y": 1481.3472547531128,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "993c0a9c.fa2968",

+    "type": "get-resource",

+    "name": "get-resource pnf",

+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"pnf\" \n\t\tkey=\"pnf.pnf-name = $tmp.node-id \n\t\tAND depth = '0'\"\n        pfx='tmp.aai.pnf' local-only='false' >\n\n\n\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2187.0009841918945,

+    "y": 1336.000542640686,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "6cbbdc6c.177994",

+        "d6b323fb.dd5df",

+        "691cb9fb.eb1b88"

+      ]

+    ]

+  },

+  {

+    "id": "6cbbdc6c.177994",

+    "type": "success",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2375.0009994506836,

+    "y": 1282.0005350112915,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "f3a2b0cc.a6cd3"

+      ]

+    ]

+  },

+  {

+    "id": "d6b323fb.dd5df",

+    "type": "not-found",

+    "name": "not-found",

+    "xml": "<outcome value='not-found'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2380.492046356201,

+    "y": 1324.5744314193726,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "44a433a2.c4cb1c"

+      ]

+    ]

+  },

+  {

+    "id": "691cb9fb.eb1b88",

+    "type": "other",

+    "name": "other",

+    "xml": "<outcome value='Other'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2366.825054168701,

+    "y": 1362.9077672958374,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "a204db7f.ac39f8"

+      ]

+    ]

+  },

+  {

+    "id": "44a433a2.c4cb1c",

+    "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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-id`\" />\n\n",

+    "comments": "",

+    "x": 2534.063346862793,

+    "y": 1314.8602380752563,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "a204db7f.ac39f8",

+    "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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-id`\" />\n\n",

+    "comments": "",

+    "x": 2530.597526550293,

+    "y": 1354.3470573425293,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "f3a2b0cc.a6cd3",

+    "type": "set",

+    "name": "set tmp.thirdparty-sdnc-id",

+    "xml": "<set>\n<parameter name='tmp.thirdparty-sdnc-id' value=\"`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`\" />\n",

+    "comments": "",

+    "x": 2575.0010147094727,

+    "y": 1277.0005350112915,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "d61e54ea.0473f8",

+    "type": "comment",

+    "name": "get domain controller information",

+    "info": "",

+    "comments": "",

+    "x": 2230.5048904418945,

+    "y": 1305.0045099258423,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "10d17cd1.f30ab3",

+    "type": "execute",

+    "name": "execute RestApiCallNode Delete ethernet Service",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/ietf-eth-tran-service:etht-svc/etht-svc-instances=' + $tmp.actual.vpn-name`\" />\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": 2761.001152038574,

+    "y": 1730.000747680664,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "94d88f9c.771f9",

+        "f2badd12.3e9c1"

+      ]

+    ]

+  },

+  {

+    "id": "94d88f9c.771f9",

+    "type": "success",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 3107.000801086426,

+    "y": 1714.0007457733154,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "1c7ac915.f6a6b7"

+      ]

+    ]

+  },

+  {

+    "id": "1c7ac915.f6a6b7",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">",

+    "atomic": "true",

+    "comments": "",

+    "outputs": 1,

+    "x": 3277.0007400512695,

+    "y": 1717.0007457733154,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "73cc424c.c105bc",

+    "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": 3277.000862121582,

+    "y": 1673.0007457733154,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "f2badd12.3e9c1",

+    "type": "failure",

+    "name": "failure",

+    "xml": "<outcome value='failure'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 3110.0007400512695,

+    "y": 1673.0007457733154,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "73cc424c.c105bc"

+      ]

+    ]

+  },

+  {

+    "id": "4d3c7e74.2037b",

+    "type": "failure",

+    "name": "failure",

+    "xml": "<outcome value='failure'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 904.7619972229004,

+    "y": 1694.9529141187668,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "9a2c9c7c.b67bf"

+      ]

+    ]

+  },

+  {

+    "id": "9a2c9c7c.b67bf",

+    "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=\"AAI failed\" />\n",

+    "comments": "",

+    "x": 1071.2858772277832,

+    "y": 1706.5719851255417,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "76fdd751.58a9d8",

+    "type": "failure",

+    "name": "not-found",

+    "xml": "<outcome value='not-found'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 911.8572845458984,

+    "y": 1727.7148817777634,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "9a2c9c7c.b67bf"

+      ]

+    ]

+  },

+  {

+    "id": "4fec1ce6.1b1a34",

+    "type": "comment",

+    "name": "Save Resource to AAI",

+    "info": "",

+    "comments": "",

+    "x": 623.8097114562988,

+    "y": 1677.3023023605347,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "d507ebff.314fd8",

+    "type": "set",

+    "name": "set output to api handler",

+    "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='connection-attachment-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $connection-attachment-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",

+    "comments": "",

+    "x": 638.5774078369141,

+    "y": 1598.8277835845947,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "9f388371.4f18e",

+    "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": 606.9904899597168,

+    "y": 1759.4435358047485,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "8e1d23f5.d1706",

+    "type": "execute",

+    "name": "execute RestApiCallNode - PUT AR by id",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.sotn-attachment.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 688.3095092773438,

+    "y": 1506.468557357788,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "e11c7417.4fa658",

+        "64cfcda1.4c2f84",

+        "c55d4506.901118"

+      ]

+    ]

+  },

+  {

+    "id": "e11c7417.4fa658",

+    "type": "not-found",

+    "name": "not-found",

+    "xml": "<outcome value='not-found'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 956.9508857727051,

+    "y": 1557.799969099462,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "14bdf473.21930c"

+      ]

+    ]

+  },

+  {

+    "id": "64cfcda1.4c2f84",

+    "type": "failure",

+    "name": "failure",

+    "xml": "<outcome value='failure'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 947.9509353637695,

+    "y": 1526.2999948486686,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "14bdf473.21930c"

+      ]

+    ]

+  },

+  {

+    "id": "c55d4506.901118",

+    "type": "success",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 951.7009735107422,

+    "y": 1496.657099723816,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "82c892ac.f910d"

+      ]

+    ]

+  },

+  {

+    "id": "14bdf473.21930c",

+    "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 updating md-sal for connection-attachment-allotted-resource\" />\n",

+    "comments": "",

+    "x": 1117.7009735107422,

+    "y": 1527.0500186905265,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "82c892ac.f910d",

+    "type": "block",

+    "name": "block",

+    "xml": "<block>\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 1093.3569412231445,

+    "y": 1492.849268913269,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "bd5b936a.6f494",

+    "type": "set",

+    "name": "set ar-data",

+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-status.action' value=\"`$connection-attachment-topology-operation-input.request-information.request-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value=\"connection-attachment-topology-operation\" />\n<parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value=\"`$connection-attachment-topology-operation-input.request-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value=\"`$connection-attachment-topology-operation-input.sdnc-request-header.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value=\"`$connection-attachment-topology-operation-input.service-information.` \" />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.` \" />",

+    "comments": "",

+    "x": 588.5231285095215,

+    "y": 1356.8494803905487,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "754f8876.c41b88",

+    "type": "execute",

+    "name": "execute getTime",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >\n    <parameter name=\"outputPath\" value=\"tmp.current-time\" />\n\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 605.8089714050293,

+    "y": 1429.4690780639648,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "1fa63937.8805f7",

+    "type": "set",

+    "name": "set allotted-resource-oper-status",

+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />\n<parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />\n",

+    "comments": "",

+    "x": 660.796028137207,

+    "y": 1467.4202156066895,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "1ecf912a.ad8d5f",

+    "type": "set",

+    "name": "set model-data",

+    "xml": "<set>\n<parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` \" />",

+    "comments": "",

+    "x": 602.3646697998047,

+    "y": 1396.024130821228,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "3d5eb994.20a306",

+    "type": "comment",

+    "name": "Prepare data for allotted-resource addition to MDSAL",

+    "info": "This will add to allotted-resource which is present inside service.",

+    "comments": "",

+    "x": 715.6981315612793,

+    "y": 1317.0240828990936,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "35db93ec.682e9c",

+    "type": "comment",

+    "name": "Add to allotted-resources in mdsal",

+    "info": "",

+    "comments": "",

+    "x": 657.2779579162598,

+    "y": 1284.4373846054077,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "31cf3c93.494fc4",

+    "type": "update",

+    "name": "update AAI allotted-resource",

+    "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"allotted-resource\" \n\t\tkey=\"customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\"\n        pfx='pfx' local-only='false' force='false'>\n\t<parameter name=\"description\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`\" />\n\t<parameter name=\"selflink\" value=\"`$tmp.ar.self-link`\" />\n\t<parameter name=\"model-invariant-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`\" />\n\t<parameter name=\"model-version-id\" value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`\" />\n\t<parameter name=\"operational-status\" value=\"PendingDelete\" />\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 650.2539901733398,

+    "y": 1714.7544450759888,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "4d3c7e74.2037b",

+        "76fdd751.58a9d8"

+      ]

+    ]

+  },

+  {

+    "id": "be61dd8a.9e196",

+    "type": "get-resource",

+    "name": "get-resource connectivity",

+    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"connectivity\" \n\t\tkey=\"connectivity.connectivity-id = $mdsal-psd.service-data.networks.network[0].network-id AND \n\t\t     depth = '1'\"\n        pfx='tmp.connectivity' local-only='false' >\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1184.0318145751953,

+    "y": 1192.504550933838,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "ec3a781a.b17a88",

+        "13bcbf26.d71d71"

+      ]

+    ]

+  },

+  {

+    "id": "3730ddb4.d493b2",

+    "type": "block",

+    "name": "block : atomic",

+    "xml": "<block atomic=\"true\">",

+    "atomic": "true",

+    "outputs": 1,

+    "x": 1957.1491241455078,

+    "y": 1389.3446836471558,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "76aabffd.38e",

+        "ddc37a19.aa1838",

+        "993c0a9c.fa2968",

+        "ff817e6a.4c262",

+        "d2c267be.388018",

+        "4ec4550f.fd160c",

+        "767b76a3.973bd8"

+      ]

+    ]

+  },

+  {

+    "id": "2d7c3367.b4917c",

+    "type": "outcome",

+    "name": "vpn-binding",

+    "xml": "<outcome value='vpn-binding'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1783.317642211914,

+    "y": 1391.8262071609497,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "3730ddb4.d493b2"

+      ]

+    ]

+  },

+  {

+    "id": "95f1a2bf.0b285",

+    "type": "for",

+    "name": "for each relationship",

+    "xml": "<for silentFailure='true' index='vidx' start='0' end='`$tmp.connectivity.relationship-list.relationship_length`' >\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1405.0315856933594,

+    "y": 1390.004433631897,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "68b3b3fe.7b312c"

+      ]

+    ]

+  },

+  {

+    "id": "68b3b3fe.7b312c",

+    "type": "switchNode",

+    "name": "switch related-to",

+    "xml": "<switch test='`$tmp.connectivity.relationship-list.relationship[$vidx].related-to`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1617.0315971374512,

+    "y": 1391.004433631897,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "2d7c3367.b4917c"

+      ]

+    ]

+  },

+  {

+    "id": "ddc37a19.aa1838",

+    "type": "set",

+    "name": "set tmp.vpn-name",

+    "xml": "<set>\n<parameter name='tmp.vpn-name' value=\"`$tmp.connectivity.relationship-list.relationship[$vidx].relationship-data[0].relationship-value` \" />\n",

+    "comments": "",

+    "x": 2190.0317916870117,

+    "y": 1103.00475025177,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "76aabffd.38e",

+    "type": "execute",

+    "name": "split vpnName to find nodeId",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$tmp.vpn-name`'/>\n<parameter name=\"regex\" value=\"-\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"route1\"/>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2226.0317459106445,

+    "y": 1204.004117012024,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "78a77003.35ea4",

+        "637ec688.c44a88"

+      ]

+    ]

+  },

+  {

+    "id": "637ec688.c44a88",

+    "type": "failure",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2427.031936645508,

+    "y": 1181.0041093826294,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "b87e837.b66ce8"

+      ]

+    ]

+  },

+  {

+    "id": "b87e837.b66ce8",

+    "type": "set",

+    "name": "set tmp.node-id",

+    "xml": "<set>\n<parameter name='tmp.node-id' value='`$route1[0]`' />\n<parameter name='tmp.actual.vpn-name' value='`$route1[1]`' />\n",

+    "comments": "",

+    "x": 2580.032096862793,

+    "y": 1179.0041103363037,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "857b862a.e6a0b8",

+    "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": 2564.032262802124,

+    "y": 1228.0041122436523,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "78a77003.35ea4",

+    "type": "failure",

+    "name": "failure",

+    "xml": "<outcome value='failure'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2424.03191947937,

+    "y": 1229.004114151001,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "857b862a.e6a0b8"

+      ]

+    ]

+  },

+  {

+    "id": "ec3a781a.b17a88",

+    "type": "success",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1365.0314140319824,

+    "y": 1227.0001955032349,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "8cc479bc.b82368"

+      ]

+    ]

+  },

+  {

+    "id": "13bcbf26.d71d71",

+    "type": "other",

+    "name": "other",

+    "xml": "<outcome value='Other'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 1367.883144378662,

+    "y": 1154.0664405822754,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "c5f74144.ebbac"

+      ]

+    ]

+  },

+  {

+    "id": "c5f74144.ebbac",

+    "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=\"Error: Connectivity resource not found\" />\n    \n",

+    "comments": "",

+    "x": 1510.0319137573242,

+    "y": 1154.3338508605957,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "8cc479bc.b82368",

+    "type": "block",

+    "name": "block",

+    "xml": "<block>\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 1367.0314254760742,

+    "y": 1305.000361442566,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "95f1a2bf.0b285"

+      ]

+    ]

+  },

+  {

+    "id": "61d4f147.44641",

+    "type": "execute",

+    "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 803.3652038574219,

+    "y": 553.5000734329224,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "55776be8.abf844",

+        "2f2bf02.ca60d1"

+      ]

+    ]

+  },

+  {

+    "id": "7bc058aa.42a598",

+    "type": "execute",

+    "name": "get parent-service-data tmp.ar-url-psd",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-psd\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 657.0314483642578,

+    "y": 762.0003347396851,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "7c847f3c.b2ac4",

+    "type": "execute",

+    "name": "execute RestApiCallNode - get-resource parent service data",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-psd\" />\n\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 724.0314102172852,

+    "y": 797.0004186630249,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "5d8dc0c4.ff757",

+        "83b7907.b55937"

+      ]

+    ]

+  },

+  {

+    "id": "f0fb1a1c.cc2828",

+    "type": "switchNode",

+    "name": "switch mdsal-psd.service-data.provided-allotted-resources_length",

+    "xml": "<switch test='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 740.2155303955078,

+    "y": 971.7182464599609,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "f3fcb7.3cb38348",

+        "31b6e940.d005b6",

+        "998ab047.1d3cb"

+      ]

+    ]

+  },

+  {

+    "id": "d2c267be.388018",

+    "type": "update",

+    "name": "delete AAI vpn-binding",

+    "xml": "<delete plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='vpn-binding' \n      key='vpn-binding.vpn-id = $tmp.vpn-name' >",

+    "comments": "",

+    "outputs": 1,

+    "x": 2211.031204223633,

+    "y": 1801.0002889633179,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "e8b749f3.e275f8",

+        "ef20a9a9.f1fb18"

+      ]

+    ]

+  },

+  {

+    "id": "e8b749f3.e275f8",

+    "type": "failure",

+    "name": "failure",

+    "xml": "<outcome value='failure'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2465.5392112731934,

+    "y": 1781.1987580060959,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "b53766de.89b208"

+      ]

+    ]

+  },

+  {

+    "id": "ef20a9a9.f1fb18",

+    "type": "failure",

+    "name": "not-found",

+    "xml": "<outcome value='not-found'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2472.6344985961914,

+    "y": 1813.9607256650925,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "b53766de.89b208"

+      ]

+    ]

+  },

+  {

+    "id": "b53766de.89b208",

+    "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=\"AAI failed\" />\n",

+    "comments": "",

+    "x": 2632.063091278076,

+    "y": 1792.8178290128708,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "4ec4550f.fd160c",

+    "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": 2250.7854080200195,

+    "y": 1581.254126548767,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "d144148d.dc75b8",

+        "6622df6c.28bd"

+      ]

+    ]

+  },

+  {

+    "id": "d144148d.dc75b8",

+    "type": "success",

+    "name": "success",

+    "xml": "<outcome value='success'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2485.7854080200195,

+    "y": 1559.254126548767,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "11df681e.1cd4c8"

+      ]

+    ]

+  },

+  {

+    "id": "6622df6c.28bd",

+    "type": "failure",

+    "name": "failure",

+    "xml": "<outcome value='failure'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2478.0354080200195,

+    "y": 1612.8970098495483,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "a07b50ef.81562"

+      ]

+    ]

+  },

+  {

+    "id": "11df681e.1cd4c8",

+    "type": "set",

+    "name": "set token-id",

+    "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+    "comments": "",

+    "x": 2639.7854080200195,

+    "y": 1560.254126548767,

+    "z": "f47a0348.da1fc",

+    "wires": []

+  },

+  {

+    "id": "767b76a3.973bd8",

+    "type": "switchNode",

+    "name": "switch prop.sdncRestApi.token_id",

+    "xml": "<switch test=\"`$prop.sdncRestApi.token_id`\">\n\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2257.031126022339,

+    "y": 1686.5312061309814,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "647e08e2.0afec8",

+        "4b8f5cd7.3f8294"

+      ]

+    ]

+  },

+  {

+    "id": "4b8f5cd7.3f8294",

+    "type": "other",

+    "name": "other",

+    "xml": "<outcome value='Other'>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2477.0312519073486,

+    "y": 1726.031084060669,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "10d17cd1.f30ab3"

+      ]

+    ]

+  },

+  {

+    "id": "647e08e2.0afec8",

+    "type": "other",

+    "name": "Null",

+    "xml": "<outcome value=''>\n",

+    "comments": "",

+    "outputs": 1,

+    "x": 2483.031373977661,

+    "y": 1662.5310831069946,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "e34fee1b.784d2"

+      ]

+    ]

+  },

+  {

+    "id": "a07b50ef.81562",

+    "type": "block",

+    "name": "block",

+    "xml": "<block>\n",

+    "atomic": "false",

+    "comments": "",

+    "outputs": 1,

+    "x": 2623.0311431884766,

+    "y": 1610.5309600830078,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      []

+    ]

+  },

+  {

+    "id": "e34fee1b.784d2",

+    "type": "execute",

+    "name": "execute RestApiCallNode Delete ethernet Service",

+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/ietf-eth-tran-service:etht-svc/etht-svc-instances=' + $tmp.actual.vpn-name`\" />\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",

+    "comments": "",

+    "outputs": 1,

+    "x": 2762.03125,

+    "y": 1659.5311279296875,

+    "z": "f47a0348.da1fc",

+    "wires": [

+      [

+        "f2badd12.3e9c1",

+        "94d88f9c.771f9"

+      ]

+    ]

+  }

+]

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-delete.json
new file mode 100644
index 0000000..8b1fd28
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-delete.json
@@ -0,0 +1,930 @@
+[
+  {
+    "id": "727269c5.c0c088",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 107,
+    "y": 38,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "476f18dc.439248"
+      ]
+    ]
+  },
+  {
+    "id": "476f18dc.439248",
+    "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": 281.00000381469727,
+    "y": 93.0000171661377,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "e0fac416.80f518"
+      ]
+    ]
+  },
+  {
+    "id": "e0fac416.80f518",
+    "type": "method",
+    "name": "sotn-attachment-topology-operation-delete",
+    "xml": "<method rpc='sotn-attachment-topology-operation-delete' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 269.0001220703125,
+    "y": 181,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "231c9f70.d1a7d"
+      ]
+    ]
+  },
+  {
+    "id": "231c9f70.d1a7d",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 285.0001220703125,
+    "y": 736.0002446174622,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "daf8cd41.f5737",
+        "a1a6aaf1.a46af8",
+        "90947482.aca148",
+        "b9944c13.63436",
+        "6eccbbd0.6de454",
+        "1a37f19e.b4ca8e",
+        "b769698c.40e9c8",
+        "a43d6d68.0f0c8",
+        "190ff216.cb59ee",
+        "4a2552b4.8267bc",
+        "471618ce.1aa6e8",
+        "afce32ae.04764",
+        "af833dcd.19d57",
+        "abce896b.ee5ab8",
+        "36034272.10e4ae"
+      ]
+    ]
+  },
+  {
+    "id": "daf8cd41.f5737",
+    "type": "set",
+    "name": "set tmp.ar.allotted-resource-id,etc",
+    "xml": "<set>\n<parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />\n<parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />\n\n\n",
+    "comments": "",
+    "x": 681.9935607910156,
+    "y": 134.9934868812561,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "f092463.fee0fb8",
+    "type": "comment",
+    "name": "set tmp ar-id to fetch resource from MDSAL",
+    "info": "",
+    "comments": "",
+    "x": 710.9538726806641,
+    "y": 99.02528285980225,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "a1a6aaf1.a46af8",
+    "type": "set",
+    "name": "set tmp.ar.self-link",
+    "xml": "<set>\n<parameter name='tmp.ar.self-link' value=\"`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'\n + $tmp.ar.allotted-resource-id\n + '/allotted-resource-data/connection-attachment-topology/'` \" />\n\n",
+    "comments": "",
+    "x": 635.9934997558594,
+    "y": 227.99349212646484,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "6eccbbd0.6de454",
+    "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": 642.2553901672363,
+    "y": 315.6602210998535,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "90947482.aca148",
+    "type": "execute",
+    "name": "generate allotted-resource url",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.allotted-resource-id`\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 674.2554168701172,
+    "y": 403.66020250320435,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a011c3.2eb3ce4",
+    "type": "comment",
+    "name": "Used for setting output to API Handler",
+    "info": "",
+    "comments": "",
+    "x": 689.9935302734375,
+    "y": 194.993501663208,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "d15c9938.74a878",
+    "type": "comment",
+    "name": "Obtain different URL, template location etc",
+    "info": "For saving resource information to MDSAL & for AAI",
+    "comments": "",
+    "x": 707.9934959411621,
+    "y": 280.8823823928833,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "a5405514.70c5b8",
+    "type": "comment",
+    "name": "Used to Get AR by id to MDSAL, same as self-link",
+    "info": "",
+    "comments": "",
+    "x": 733.9935150146484,
+    "y": 367.8823413848877,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "88c1d026.0cefd",
+    "type": "comment",
+    "name": "GET parent-service-data from mdsal to check existence of other End point",
+    "info": "",
+    "comments": "",
+    "x": 801.0003280639648,
+    "y": 822.5316228866577,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "3c5cf576.01802a",
+    "type": "for",
+    "name": "for pidx..mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[]",
+    "xml": "<for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1629.1849365234375,
+    "y": 1056.00425863266,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "3496000b.b50ee"
+      ]
+    ]
+  },
+  {
+    "id": "b9944c13.63436",
+    "type": "switchNode",
+    "name": "switch mdsal-psd.service-data.provided-allotted-resources_length",
+    "xml": "<switch test='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 780.1842956542969,
+    "y": 1062.718041419983,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "af74ccd9.4a43f",
+        "86c1925.6123e7"
+      ]
+    ]
+  },
+  {
+    "id": "e65e2eca.21548",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1230.4544582366943,
+    "y": 1102.7015271186829,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "3c5cf576.01802a",
+        "fad43184.faa77"
+      ]
+    ]
+  },
+  {
+    "id": "3496000b.b50ee",
+    "type": "switchNode",
+    "name": "switch allotted-resource-id",
+    "xml": "<switch test=\"`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2079.296142578125,
+    "y": 1054.0041165351868,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "2b9e1b87.4d7be4"
+      ]
+    ]
+  },
+  {
+    "id": "1a37f19e.b4ca8e",
+    "type": "set",
+    "name": "set tmp.ar.parent-service-instance-id",
+    "xml": "<set>\n<parameter name='tmp.ar.parent-service-instance-id' value=\"`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` \" />\n\n",
+    "comments": "",
+    "x": 691.9687118530273,
+    "y": 858.0000677108765,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "f65db35d.ec076",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1071.968994140625,
+    "y": 936.0001826286316,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "c80198f0.eabc78"
+      ]
+    ]
+  },
+  {
+    "id": "733108ec.4b0c18",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1063.8207969665527,
+    "y": 971.066267490387,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "d0615553.03e2f8"
+      ]
+    ]
+  },
+  {
+    "id": "d0615553.03e2f8",
+    "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=\"Error: SOTN resource not found\" />\n    \n",
+    "comments": "",
+    "x": 1238.969482421875,
+    "y": 967.3336176872253,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "c80198f0.eabc78",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1222.968994140625,
+    "y": 934.0001826286316,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "5239fca8.d17b94",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 925.7307624816895,
+    "y": 1251.952815413475,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "d9416e9b.67f3a"
+      ]
+    ]
+  },
+  {
+    "id": "d9416e9b.67f3a",
+    "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=\"AAI failed\" />\n",
+    "comments": "",
+    "x": 1092.2546424865723,
+    "y": 1263.57188642025,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "c631f277.5fd19",
+    "type": "failure",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 932.8260498046875,
+    "y": 1284.7147830724716,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "d9416e9b.67f3a"
+      ]
+    ]
+  },
+  {
+    "id": "b769698c.40e9c8",
+    "type": "set",
+    "name": "set output to api handler",
+    "xml": "<set>\n<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />\n<parameter name='connection-attachment-object-path' value=\"`$tmp.ar.self-link`\"/>\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $connection-attachment-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n \n",
+    "comments": "",
+    "x": 658.5461502075195,
+    "y": 1215.8276824951172,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "a43d6d68.0f0c8",
+    "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": 627.9592552185059,
+    "y": 1316.4434370994568,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "36034272.10e4ae",
+    "type": "execute",
+    "name": "execute RestApiCallNode - PUT AR by id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='Delete' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-ar\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 707.6666641235352,
+    "y": 492.3333625793457,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "b9a614f.423c0e8",
+        "1fe78f55.993961",
+        "2453145c.fe210c"
+      ]
+    ]
+  },
+  {
+    "id": "b9a614f.423c0e8",
+    "type": "not-found",
+    "name": "not-found",
+    "xml": "<outcome value='not-found'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 947.3081665039062,
+    "y": 532.6649107933044,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "ceacff91.78296"
+      ]
+    ]
+  },
+  {
+    "id": "1fe78f55.993961",
+    "type": "failure",
+    "name": "failure",
+    "xml": "<outcome value='failure'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 944.3081665039062,
+    "y": 489.16490840911865,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "ceacff91.78296"
+      ]
+    ]
+  },
+  {
+    "id": "2453145c.fe210c",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 951.0582466125488,
+    "y": 448.5220036506653,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "cc515c42.f40e8"
+      ]
+    ]
+  },
+  {
+    "id": "ceacff91.78296",
+    "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 updating md-sal for connection-attachment-allotted-resource\" />\n",
+    "comments": "",
+    "x": 1103.058334350586,
+    "y": 510.9149088859558,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "cc515c42.f40e8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1088.7141780853271,
+    "y": 448.7141833305359,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "afc0a167.60e96",
+    "type": "comment",
+    "name": "Delete Allotted Resource",
+    "info": "",
+    "comments": "",
+    "x": 655.0000457763672,
+    "y": 461.0000286102295,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "930f6554.7ad0e8",
+    "type": "for",
+    "name": "for cidx..service-data.consumed-allotted-resources.consumed-allotted-resource[]",
+    "xml": "<for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1605.00390625,
+    "y": 698.00390625,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "ab2d612c.e624d"
+      ]
+    ]
+  },
+  {
+    "id": "190ff216.cb59ee",
+    "type": "switchNode",
+    "name": "switch service-data.consumed-allotted-resources_length",
+    "xml": "<switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 758.0032920837402,
+    "y": 658.71790766716,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "22a6f73e.83f758",
+        "59a890e7.9e391"
+      ]
+    ]
+  },
+  {
+    "id": "22a6f73e.83f758",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1082.1461563110352,
+    "y": 641.5753421783447,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "d98f9bea.dbb4e8"
+      ]
+    ]
+  },
+  {
+    "id": "59a890e7.9e391",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1068.1461791992188,
+    "y": 704.5753309726715,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "741d09f.ef4e8f8"
+      ]
+    ]
+  },
+  {
+    "id": "741d09f.ef4e8f8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1228.2732696533203,
+    "y": 702.7013075351715,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "930f6554.7ad0e8",
+        "a2d1d665.9bea78"
+      ]
+    ]
+  },
+  {
+    "id": "4a2552b4.8267bc",
+    "type": "set",
+    "name": "set consumed allotted resources for deletion",
+    "xml": "<set>\n<parameter name=\"service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].\" value=\"\" />\n<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`' />\n\n",
+    "comments": "",
+    "x": 714.8606262207031,
+    "y": 729.28955078125,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "ab2d612c.e624d",
+    "type": "switchNode",
+    "name": "switch allotted-resource-id",
+    "xml": "<switch test=\"`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2043.1155166625977,
+    "y": 694.0040283203125,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "d09e4ce4.cdbe3"
+      ]
+    ]
+  },
+  {
+    "id": "d09e4ce4.cdbe3",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2238.925338745117,
+    "y": 693.4683527946472,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "c313761f.950178"
+      ]
+    ]
+  },
+  {
+    "id": "92647963.e38708",
+    "type": "set",
+    "name": "set tmp.cidx",
+    "xml": "<set>\n<parameter name='tmp.cidx' value='`$cidx`' />\n",
+    "comments": "",
+    "x": 2554.2618713378906,
+    "y": 694.2246108055115,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "8d54089c.d1a698",
+    "type": "comment",
+    "name": "Delete consumed service consumed-allotted-resources in mdsal",
+    "info": "",
+    "comments": "",
+    "x": 769.0045623779297,
+    "y": 591.0038724095793,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "66e1c966.841508",
+    "type": "comment",
+    "name": "This set resource will be deleted in MDSAL by provider code",
+    "info": "",
+    "comments": "",
+    "x": 759.337345123291,
+    "y": 695.781964302063,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "491e50db.34949",
+    "type": "comment",
+    "name": "Obtain the index of conusumed AR",
+    "info": "",
+    "comments": "",
+    "x": 681.7817535400391,
+    "y": 622.8927326202393,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "d98f9bea.dbb4e8",
+    "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=\"Resource to be deleted doesn't exist in MDSAL.\" />\n",
+    "comments": "",
+    "x": 1244.00390625,
+    "y": 642.00390625,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "c313761f.950178",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2388.003936767578,
+    "y": 694.2539558410645,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "92647963.e38708"
+      ]
+    ]
+  },
+  {
+    "id": "6aa48d02.a58084",
+    "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=\"resource to be deleted is not available in mdsal\" />\n",
+    "comments": "",
+    "x": 1698.25390625,
+    "y": 751.25390625,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "bf5c462c.da5e08",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1560.75390625,
+    "y": 751.25390625,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "6aa48d02.a58084"
+      ]
+    ]
+  },
+  {
+    "id": "a2d1d665.9bea78",
+    "type": "switchNode",
+    "name": "switch tmp.cidx ",
+    "xml": "<switch test=\"`$tmp.cidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1406.75390625,
+    "y": 751.25390625,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "bf5c462c.da5e08"
+      ]
+    ]
+  },
+  {
+    "id": "e3078c06.7be5",
+    "type": "comment",
+    "name": "Delete provided service provided-allotted-resources in mdsal",
+    "info": "",
+    "comments": "",
+    "x": 755.5039215087891,
+    "y": 787.00390625,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "86c1925.6123e7",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1083.5041770935059,
+    "y": 1101.7540984153748,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "e65e2eca.21548"
+      ]
+    ]
+  },
+  {
+    "id": "af74ccd9.4a43f",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1100.5040969848633,
+    "y": 1013.7539324760437,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "fea3dc81.4b3fa"
+      ]
+    ]
+  },
+  {
+    "id": "fea3dc81.4b3fa",
+    "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=\"Resource to be deleted doesn't exist in MDSAL.\" />\n",
+    "comments": "",
+    "x": 1264.3616943359375,
+    "y": 1014.1824774742126,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "39762013.3aeda",
+    "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=\"resource to be deleted is not available in mdsal\" />\n",
+    "comments": "",
+    "x": 1695.7539501190186,
+    "y": 1131.753936290741,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "f41a3391.116cf",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1558.2539501190186,
+    "y": 1131.753936290741,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "39762013.3aeda"
+      ]
+    ]
+  },
+  {
+    "id": "fad43184.faa77",
+    "type": "switchNode",
+    "name": "switch tmp.pidx ",
+    "xml": "<switch test=\"`$tmp.pidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1404.2539501190186,
+    "y": 1131.753936290741,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "f41a3391.116cf"
+      ]
+    ]
+  },
+  {
+    "id": "2b9e1b87.4d7be4",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2268.504367828369,
+    "y": 1051.7540946006775,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "3e54d0ca.68119"
+      ]
+    ]
+  },
+  {
+    "id": "124aec38.7e75f4",
+    "type": "set",
+    "name": "set tmp.pidx",
+    "xml": "<set>\n<parameter name='tmp.pidx' value='`$pidx`' />\n\n",
+    "comments": "",
+    "x": 2336.8404846191406,
+    "y": 1186.5101914405823,
+    "z": "9a9db3db.b812b",
+    "wires": []
+  },
+  {
+    "id": "3e54d0ca.68119",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2328.582820892334,
+    "y": 1122.539580821991,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "124aec38.7e75f4"
+      ]
+    ]
+  },
+  {
+    "id": "471618ce.1aa6e8",
+    "type": "update",
+    "name": "update AAI allotted-resource",
+    "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='allotted-resource'  \n\t\tkey=\"customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND\n\t\t\tservice-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND\n\t\t\tservice-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND\n\t\t\tallotted-resource.id = $tmp.ar.allotted-resource-id\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 671.2227554321289,
+    "y": 1271.754346370697,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "5239fca8.d17b94",
+        "c631f277.5fd19"
+      ]
+    ]
+  },
+  {
+    "id": "af833dcd.19d57",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get-resource parent service data",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-psd\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 761.3334197998047,
+    "y": 957.333366394043,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      [
+        "f65db35d.ec076",
+        "733108ec.4b0c18"
+      ]
+    ]
+  },
+  {
+    "id": "afce32ae.04764",
+    "type": "execute",
+    "name": "get parent-service-data tmp.ar-url-psd",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-psd\"/>\n    <parameter name=\"target\" value=\"{service-instance-id}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.ar.parent-service-instance-id`\"/>",
+    "comments": "",
+    "outputs": 1,
+    "x": 695.3333587646484,
+    "y": 915.3332056999207,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "abce896b.ee5ab8",
+    "type": "execute",
+    "name": "execute RestApiCallNode - delete-resource parent service data",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value=\"`$prop.controller.url + $tmp.ar-url-psd + '/provided-allotted-resources/provided-allotted-resource/' + $tmp.ar.allotted-resource-id`\" />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='DELETE' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-psd-delete\" />\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 766,
+    "y": 1166,
+    "z": "9a9db3db.b812b",
+    "wires": [
+      []
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-get-saved-ar-param.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-get-saved-ar-param.json
new file mode 100644
index 0000000..f9a6bb1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-get-saved-ar-param.json
@@ -0,0 +1,481 @@
+[
+  {
+    "id": "78c3c512.2a5cfc",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 113.03125,
+    "y": 43.03125,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "c8295f65.8fc4c"
+      ]
+    ]
+  },
+  {
+    "id": "c8295f65.8fc4c",
+    "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": 325.03125381469727,
+    "y": 115.0312671661377,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "cb959304.88093"
+      ]
+    ]
+  },
+  {
+    "id": "cb959304.88093",
+    "type": "method",
+    "name": "sotnt-get-saved-ar-param",
+    "xml": "<method rpc='sotn-get-saved-ar-param' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 313.0313720703125,
+    "y": 203.03125,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "f53a4fe7.e10d8"
+      ]
+    ]
+  },
+  {
+    "id": "f53a4fe7.e10d8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 320.03126525878906,
+    "y": 289.0313081741333,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "cb3c00be.eadaf"
+      ]
+    ]
+  },
+  {
+    "id": "cb3c00be.eadaf",
+    "type": "for",
+    "name": "for each sotn-get-request-input-param",
+    "xml": "<for index='idx' start='0' end='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 356.6980285644531,
+    "y": 371.697904586792,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "9fceee94.c7352"
+      ]
+    ]
+  },
+  {
+    "id": "9fceee94.c7352",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 621.5315322875977,
+    "y": 281.03129625320435,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "ac9e17c4.666db8",
+        "68c68212.dc993c",
+        "66615c8e.b750a4",
+        "4a64e3ec.0803bc",
+        "d49b138b.9b447",
+        "1f7b915.12bc26f",
+        "fcc00482.9d4728",
+        "be269c99.3195",
+        "d97ebcd8.acf64"
+      ]
+    ]
+  },
+  {
+    "id": "ac9e17c4.666db8",
+    "type": "switchNode",
+    "name": "switch sotnVpnName",
+    "xml": "<switch test=\"`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'sotnVpnName'`\">",
+    "comments": "",
+    "outputs": 1,
+    "x": 848.53125,
+    "y": 79.03128051757812,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "4f0e4c80.dde4f4"
+      ]
+    ]
+  },
+  {
+    "id": "4f0e4c80.dde4f4",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1035.53125,
+    "y": 75.03128051757812,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "ca00e2af.bb58d"
+      ]
+    ]
+  },
+  {
+    "id": "ca00e2af.bb58d",
+    "type": "set",
+    "name": "set sotnVpnName",
+    "xml": "<set>\n<parameter name='prop.connection-attachment.sotnVpnName' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1203.53125,
+    "y": 75.63128662109375,
+    "z": "be273250.67063",
+    "wires": [
+
+    ]
+  },
+  {
+    "id": "68c68212.dc993c",
+    "type": "switchNode",
+    "name": "switch access-provider-id",
+    "xml": "<switch test=\"`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'access-provider-id'`\">",
+    "comments": "",
+    "outputs": 1,
+    "x": 849.0416793823242,
+    "y": 138.03128051757812,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "a284600c.21032"
+      ]
+    ]
+  },
+  {
+    "id": "a284600c.21032",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1036.0416793823242,
+    "y": 134.03128051757812,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "226a73cd.788cbc"
+      ]
+    ]
+  },
+  {
+    "id": "226a73cd.788cbc",
+    "type": "set",
+    "name": "set access-provider-id",
+    "xml": "<set>\n<parameter name='prop.connection-attachment.access-provider-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1204.0416793823242,
+    "y": 134.63128662109375,
+    "z": "be273250.67063",
+    "wires": [
+
+    ]
+  },
+  {
+    "id": "66615c8e.b750a4",
+    "type": "switchNode",
+    "name": "switch access-client-id",
+    "xml": "<switch test=\"`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'access-client-id'`\">",
+    "comments": "",
+    "outputs": 1,
+    "x": 851.0417404174805,
+    "y": 191.04170036315918,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "2b01edeb.bc12c2"
+      ]
+    ]
+  },
+  {
+    "id": "2b01edeb.bc12c2",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1038.0417404174805,
+    "y": 187.04170036315918,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "ce9ed833.dd9e08"
+      ]
+    ]
+  },
+  {
+    "id": "ce9ed833.dd9e08",
+    "type": "set",
+    "name": "set access-client-id",
+    "xml": "<set>\n<parameter name='prop.connection-attachment.access-client-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1206.0417404174805,
+    "y": 187.6417064666748,
+    "z": "be273250.67063",
+    "wires": [
+
+    ]
+  },
+  {
+    "id": "4a64e3ec.0803bc",
+    "type": "switchNode",
+    "name": "switch access-topology-id",
+    "xml": "<switch test=\"`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'access-topology-id'`\">",
+    "comments": "",
+    "outputs": 1,
+    "x": 847.0417404174805,
+    "y": 257.0417003631592,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "cd0931d.fc24dd"
+      ]
+    ]
+  },
+  {
+    "id": "cd0931d.fc24dd",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1034.0417404174805,
+    "y": 253.04170036315918,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "ae46664c.2ac008"
+      ]
+    ]
+  },
+  {
+    "id": "ae46664c.2ac008",
+    "type": "set",
+    "name": "set access-topology-id",
+    "xml": "<set>\n<parameter name='prop.connection-attachment.access-topology-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1202.0417404174805,
+    "y": 253.6417064666748,
+    "z": "be273250.67063",
+    "wires": [
+
+    ]
+  },
+  {
+    "id": "d49b138b.9b447",
+    "type": "switchNode",
+    "name": "switch access-node-id",
+    "xml": "<switch test=\"`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'access-node-id'`\">",
+    "comments": "",
+    "outputs": 1,
+    "x": 852.0417404174805,
+    "y": 311.04169845581055,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "c9b215fc.9adfd8"
+      ]
+    ]
+  },
+  {
+    "id": "c9b215fc.9adfd8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1039.0417404174805,
+    "y": 307.04169845581055,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "faf7a4cf.251418"
+      ]
+    ]
+  },
+  {
+    "id": "faf7a4cf.251418",
+    "type": "set",
+    "name": "set access-node-id",
+    "xml": "<set>\n<parameter name='prop.connection-attachment.access-node-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1207.0417404174805,
+    "y": 307.6417045593262,
+    "z": "be273250.67063",
+    "wires": [
+
+    ]
+  },
+  {
+    "id": "1f7b915.12bc26f",
+    "type": "switchNode",
+    "name": "switch access-ltp-id",
+    "xml": "<switch test=\"`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'access-ltp-id'`\">",
+    "comments": "",
+    "outputs": 1,
+    "x": 854.0417404174805,
+    "y": 373.04165840148926,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "672f4f35.c2cfa"
+      ]
+    ]
+  },
+  {
+    "id": "672f4f35.c2cfa",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1041.0417404174805,
+    "y": 369.04165840148926,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "f006294d.d5f238"
+      ]
+    ]
+  },
+  {
+    "id": "f006294d.d5f238",
+    "type": "set",
+    "name": "set access-ltp-id",
+    "xml": "<set>\n<parameter name='prop.connection-attachment.access-ltp-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1209.0417404174805,
+    "y": 369.6416645050049,
+    "z": "be273250.67063",
+    "wires": [
+
+    ]
+  },
+  {
+    "id": "fcc00482.9d4728",
+    "type": "switchNode",
+    "name": "switch clientSignal",
+    "xml": "<switch test=\"`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'clientSignal'`\">",
+    "comments": "",
+    "outputs": 1,
+    "x": 858.0417404174805,
+    "y": 439.0416650772095,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "c5ace371.7d146"
+      ]
+    ]
+  },
+  {
+    "id": "c5ace371.7d146",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1045.0417404174805,
+    "y": 435.0416650772095,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "6652e4bd.26a58c"
+      ]
+    ]
+  },
+  {
+    "id": "6652e4bd.26a58c",
+    "type": "set",
+    "name": "set clientSignal",
+    "xml": "<set>\n<parameter name='prop.connection-attachment.clientSignal' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1213.0417404174805,
+    "y": 435.6416711807251,
+    "z": "be273250.67063",
+    "wires": [
+
+    ]
+  },
+  {
+    "id": "be269c99.3195",
+    "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": 851.0313720703125,
+    "y": 553.031268119812,
+    "z": "be273250.67063",
+    "wires": [
+
+    ]
+  },
+  {
+    "id": "d97ebcd8.acf64",
+    "type": "switchNode",
+    "name": "switch cVLAN",
+    "xml": "<switch test=\"`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'cVLAN'`\">",
+    "comments": "",
+    "outputs": 1,
+    "x": 857.03125,
+    "y": 491.0312194824219,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "b35b1b6b.cc2e38"
+      ]
+    ]
+  },
+  {
+    "id": "b35b1b6b.cc2e38",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1044.03125,
+    "y": 487.0312194824219,
+    "z": "be273250.67063",
+    "wires": [
+      [
+        "d9b42ffa.b44df"
+      ]
+    ]
+  },
+  {
+    "id": "d9b42ffa.b44df",
+    "type": "set",
+    "name": "set cVLAN",
+    "xml": "<set>\n<parameter name='prop.connection-attachment.cVLAN' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1212.03125,
+    "y": 487.6312255859375,
+    "z": "be273250.67063",
+    "wires": [
+
+    ]
+  }
+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-activate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-activate.json
new file mode 100644
index 0000000..0dac5d3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-activate.json
@@ -0,0 +1,185 @@
+[
+  {
+    "id": "bb559316.43abe",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 169,
+    "y": 76,
+    "z": "fd297d2b.31cb1",
+    "wires": [
+      [
+        "842a594e.4731d8"
+      ]
+    ]
+  },
+  {
+    "id": "842a594e.4731d8",
+    "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": 355.00000381469727,
+    "y": 148.0000171661377,
+    "z": "fd297d2b.31cb1",
+    "wires": [
+      [
+        "f5dc7555.cee5a8"
+      ]
+    ]
+  },
+  {
+    "id": "f5dc7555.cee5a8",
+    "type": "method",
+    "name": "method sotn-network-topology-operation-activate",
+    "xml": "<method rpc='sotn-network-topology-operation-activate' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 343.0001220703125,
+    "y": 236,
+    "z": "fd297d2b.31cb1",
+    "wires": [
+      [
+        "48dc382f.96bcc8"
+      ]
+    ]
+  },
+  {
+    "id": "48dc382f.96bcc8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 517.0000152587891,
+    "y": 344.0000591278076,
+    "z": "fd297d2b.31cb1",
+    "wires": [
+      [
+        "40528bdc.5b5f94",
+        "6d718115.bc2bd",
+        "fba83ea2.6feb9",
+        "5f3aca59.c0fbb4",
+        "1643498b.4256a6",
+        "afd35eb.c4071a",
+        "f6449001.6bbfb",
+        "77ac16a7.2846a8"
+      ]
+    ]
+  },
+  {
+    "id": "40528bdc.5b5f94",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:validate-sotn-network-input-parameters",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sotn-network-input-parameters' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 975.3889007568359,
+    "y": 93,
+    "z": "fd297d2b.31cb1",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "6d718115.bc2bd",
+    "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=\"sotn-network-topology-operation-activate\"/>\n<parameter name=\"field3\" value=\"SOTN-Activate\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 775.5555992126465,
+    "y": 146.77785301208496,
+    "z": "fd297d2b.31cb1",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "fba83ea2.6feb9",
+    "type": "set",
+    "name": "set networkId and network-object-path",
+    "xml": "<set>\n<parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name=\"network-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $network-topology-operation-input.network-information.network-id  + '/network-data/'` \" />",
+    "comments": "",
+    "x": 866.5556488037109,
+    "y": 335.31329441070557,
+    "z": "fd297d2b.31cb1",
+    "wires": []
+  },
+  {
+    "id": "5f3aca59.c0fbb4",
+    "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": 788.3334503173828,
+    "y": 524.8687143325806,
+    "z": "fd297d2b.31cb1",
+    "wires": []
+  },
+  {
+    "id": "1643498b.4256a6",
+    "type": "set",
+    "name": "set network-level-oper-status",
+    "xml": "<set>\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='Active' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />",
+    "comments": "",
+    "x": 833.4445648193359,
+    "y": 396.5354690551758,
+    "z": "fd297d2b.31cb1",
+    "wires": []
+  },
+  {
+    "id": "afd35eb.c4071a",
+    "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": 807.8577041625977,
+    "y": 199.77788925170898,
+    "z": "fd297d2b.31cb1",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "f6449001.6bbfb",
+    "type": "update",
+    "name": "update SOTN Connectivity status to AAI",
+    "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='connectivity' \n      key='connectivity.connectivity-id = $network-topology-operation-input.network-information.network-id' >\n<parameter name='connectivity-id' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name='operational-status' value='Active' />",
+    "comments": "",
+    "outputs": 1,
+    "x": 867.6631469726562,
+    "y": 456.238657951355,
+    "z": "fd297d2b.31cb1",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "77ac16a7.2846a8",
+    "type": "set",
+    "name": "set network in service-data",
+    "xml": "<set>\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />",
+    "comments": "",
+    "x": 830.0001220703125,
+    "y": 267.0910539627075,
+    "z": "fd297d2b.31cb1",
+    "wires": []
+  },
+  {
+    "id": "96de6db0.b05dc",
+    "type": "comment",
+    "name": "TODO MP2MP",
+    "info": "Current implementation is for P2P connectivity\nFor MP2MP connectivity in future DG needs to be modified",
+    "comments": "",
+    "x": 1055.03125,
+    "y": 190.03128051757812,
+    "z": "fd297d2b.31cb1",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-create.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-create.json
new file mode 100644
index 0000000..2a7ca5e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-create.json
@@ -0,0 +1,1053 @@
+[
+  {
+    "id": "341efa5d.3b64a6",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 86,
+    "y": 31,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "6fe36a2a.e8f534"
+      ]
+    ]
+  },
+  {
+    "id": "6fe36a2a.e8f534",
+    "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": 281.49999237060547,
+    "y": 100.99999287677929,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "2163ea38.5f8506"
+      ]
+    ]
+  },
+  {
+    "id": "2163ea38.5f8506",
+    "type": "method",
+    "name": "sotn-network-topology-operation-create",
+    "xml": "<method rpc='sotn-network-topology-operation-create' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 280.49999237060547,
+    "y": 200.9999928767793,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "1daa1b23.85b095"
+      ]
+    ]
+  },
+  {
+    "id": "1daa1b23.85b095",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 420.49999237060547,
+    "y": 300.9999928767793,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "1e60363f.72490a",
+        "83353300.c2eb9",
+        "a088e585.2065b8",
+        "238d29fd.4aeea6",
+        "f0b2c8c2.dc78a8",
+        "59d7449b.dee92c",
+        "26e9888d.5c8d38",
+        "8485dd7a.a3edc",
+        "db1f06f2.603038",
+        "939c727d.3556b",
+        "f50551ee.ae1a3"
+      ]
+    ]
+  },
+  {
+    "id": "1e60363f.72490a",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:validate-sotn-network-input-parameters",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sotn-network-input-parameters' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 850.5000038146973,
+    "y": 118.77774479938671,
+    "z": "12958f29.9139d1",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "83353300.c2eb9",
+    "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=\"sotn-network-topology-operation-create\"/>\n<parameter name=\"field3\" value=\"SOTN-Config\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 644.0556488037109,
+    "y": 296.2222046852112,
+    "z": "12958f29.9139d1",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a088e585.2065b8",
+    "type": "execute",
+    "name": "execute generate-sotn-vpn-network-id",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.sotn.network-id\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 744.5000038146973,
+    "y": 158.7777447993867,
+    "z": "12958f29.9139d1",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "238d29fd.4aeea6",
+    "type": "switchNode",
+    "name": "switch service-data.networks_length",
+    "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 737.0556564331055,
+    "y": 247.2221913631074,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "ed404518.0f77e8",
+        "ad805a2f.932de8"
+      ]
+    ]
+  },
+  {
+    "id": "ed404518.0f77e8",
+    "type": "other",
+    "name": "Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 964.0556488037109,
+    "y": 236.22220468521118,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "7b7e8d7f.4eda74"
+      ]
+    ]
+  },
+  {
+    "id": "ad805a2f.932de8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 964.0556488037109,
+    "y": 276.2222046852112,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "c276afed.a21aa"
+      ]
+    ]
+  },
+  {
+    "id": "7b7e8d7f.4eda74",
+    "type": "set",
+    "name": "set nidx",
+    "xml": "<set>\n<parameter name='nidx' value='0' />\n",
+    "comments": "",
+    "x": 1106.555648803711,
+    "y": 236.22220468521118,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "4ebe96fe.9f23b8",
+    "type": "set",
+    "name": "set nidx",
+    "xml": "<set>\n<parameter name='nidx' value='`$service-data.networks.network_length`' />\n",
+    "comments": "",
+    "x": 1240.1111679077148,
+    "y": 237.77781438827515,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "f0b2c8c2.dc78a8",
+    "type": "set",
+    "name": "set network in service-data",
+    "xml": "<set>\n<parameter name='service-data.networks.network[$nidx].network-id' value='`$prop.sotn.network-id`' />\n<parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />\n<parameter name='service-data.networks.network_length' value='`$nidx+1`' />\n\n",
+    "comments": "",
+    "x": 705.5556488037109,
+    "y": 336.2222046852112,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "59d7449b.dee92c",
+    "type": "set",
+    "name": "set networkId and network-object-path",
+    "xml": "<set>\n<parameter name='networkId' value='`$prop.sotn.network-id`' />\n<parameter name=\"network-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.sotn.network-id  + '/network-data/'` \" />",
+    "comments": "",
+    "x": 741.0556488037109,
+    "y": 376.2222046852112,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "26e9888d.5c8d38",
+    "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": 664.7224884033203,
+    "y": 542.8889315128326,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "8485dd7a.a3edc",
+    "type": "set",
+    "name": "set network-level-oper-status",
+    "xml": "<set>\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='Created' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />",
+    "comments": "",
+    "x": 712.5556488037109,
+    "y": 416.2222046852112,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "db1f06f2.603038",
+    "type": "save",
+    "name": "save SOTN connectivity resource in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='connectivity' \n      key='connectivity.connectivity-id = $prop.sotn.network-id' >\n<parameter name='connectivity-id' value='`$prop.sotn.network-id`' />\n<parameter name='bandwidth-profile-name' value='`$prop.sotn.etht-svc-name`' />\n<parameter name='vpn-type' value='`$prop.sotn.vpnType`' />\n<parameter name='CIR' value='`$prop.sotn.cir`' />\n<parameter name='EIR' value='`$prop.sotn.eir`' />\n<parameter name='CBS' value='`$prop.sotn.cbs`' />\n<parameter name='EBS' value='`$prop.sotn.ebs`' />\n<parameter name='color-aware' value='`$prop.sotn.colorAware`' />\n<parameter name='coupling-flag' value='`$prop.sotn.couplingFlag`' />\n<parameter name='etht-svc-name' value='`$prop.sotn.etht-svc-name`' />\n<parameter name='access-provider-id' value='`$prop.sotn.access-provider-id`' />\n<parameter name='access-client-id' value='`$prop.sotn.access-client-id`' />\n<parameter name='access-topology-id' value='`$prop.sotn.access-topology-id`' />\n<parameter name='access-node-id' value='`$prop.sotn.access-node-id`' />\n<parameter name='access-ltp-id' value='`$prop.sotn.access-ltp-id`' />\n<parameter name='cvlan' value='`$prop.sotn.cVLAN`' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-uuid`' />\n<parameter name='connectivity-selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.sotn.network-id  + '/network-data/'` \" />",
+    "comments": "",
+    "outputs": 1,
+    "x": 745.0556488037109,
+    "y": 462.88889360427856,
+    "z": "12958f29.9139d1",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "939c727d.3556b",
+    "type": "save",
+    "name": "save service relationship in AAI",
+    "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' \n      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id \n         AND customer.global-customer-id = $service-data.networks.network[$nidx].network-data.service-information.global-customer-id \n         AND service-subscription.service-type = $service-data.networks.network[$nidx].network-data.service-information.subscription-service-type' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"connectivity\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/connectivities/connectivity/' + $prop.sotn.network-id`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"connectivity.connectivity-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.sotn.network-id`\" />",
+    "comments": "",
+    "outputs": 1,
+    "x": 720.0556602478027,
+    "y": 500.666645526886,
+    "z": "12958f29.9139d1",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "5a63d0be.0dd08",
+    "type": "for",
+    "name": "for each existing network",
+    "xml": "<for index='idx' start='0' end='`$nidx`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1109.5397109985352,
+    "y": 380.99995657848194,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "f2a7b4ef.7dee18"
+      ]
+    ]
+  },
+  {
+    "id": "c276afed.a21aa",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1108.4126930236816,
+    "y": 276.1587166786194,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "5a63d0be.0dd08",
+        "4ebe96fe.9f23b8"
+      ]
+    ]
+  },
+  {
+    "id": "f2a7b4ef.7dee18",
+    "type": "switchNode",
+    "name": "switch networkid found",
+    "xml": "<switch test=\"`$service-data.networks.network[$idx].network-id == $network-topology-operation-input.network-information.network-id`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1384.8254318237305,
+    "y": 380.5714592640288,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "69e5d9d8.6152c8"
+      ]
+    ]
+  },
+  {
+    "id": "69e5d9d8.6152c8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1285.5556297302246,
+    "y": 439.14289042400196,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "2aa1e5e3.a3646a"
+      ]
+    ]
+  },
+  {
+    "id": "7fda1459.886ccc",
+    "type": "comment",
+    "name": "make sure this network doesn't exist already",
+    "info": "",
+    "comments": "",
+    "x": 1333.1904411315918,
+    "y": 339.2540139858611,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "2aa1e5e3.a3646a",
+    "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-topology-operation-input.network-request-input.network-id already found in service-data\" />\n",
+    "comments": "",
+    "x": 1433.3057327270508,
+    "y": 439.00008249282837,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "bf34c45.8795338",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1399.9572257995605,
+    "y": 208.77780199050903,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "12be9566.c7eb7b",
+        "7bec5917.3ffc18",
+        "a1288c23.b615f",
+        "af84978c.aabb08",
+        "8d1b65f0.441d58",
+        "4a9af7ad.2879c8",
+        "ba3dcad9.481608",
+        "5806cf92.6a521",
+        "bd6407fd.e5e7e8",
+        "37b39115.cca1ce",
+        "5e46e6d8.c63f48",
+        "13ee1e74.912c62",
+        "79a54f85.8c9c5",
+        "d44eb5ab.296838",
+        "c0af4869.cb2978"
+      ]
+    ]
+  },
+  {
+    "id": "12be9566.c7eb7b",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1658.178970336914,
+    "y": 66.11110544204712,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "ae97dc6a.f8715"
+      ]
+    ]
+  },
+  {
+    "id": "ae97dc6a.f8715",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1845.178970336914,
+    "y": 62.11110544204712,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "bc3e07b4.946d68"
+      ]
+    ]
+  },
+  {
+    "id": "bc3e07b4.946d68",
+    "type": "set",
+    "name": "set name",
+    "xml": "<set>\n<parameter name='prop.sotn.etht-svc-name' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1995.179100036621,
+    "y": 60.7111120223999,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "7bec5917.3ffc18",
+    "type": "switchNode",
+    "name": "switch description",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'description'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1669.0186309814453,
+    "y": 106.11110353469849,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "39bacf03.cf3f9"
+      ]
+    ]
+  },
+  {
+    "id": "39bacf03.cf3f9",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1839.0186309814453,
+    "y": 102.11110353469849,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "5f54eacf.46e154"
+      ]
+    ]
+  },
+  {
+    "id": "5f54eacf.46e154",
+    "type": "set",
+    "name": "set etht-svc-descr",
+    "xml": "<set>\n<parameter name='prop.sotn.etht-svc-descr' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2026.352071762085,
+    "y": 100.57226037979126,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "f50551ee.ae1a3",
+    "type": "for",
+    "name": "for loop i - Network input parameters",
+    "xml": "<for index=\"idx\" start=\"0\" end=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 738.7343673706055,
+    "y": 207.5555348689668,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "bf34c45.8795338"
+      ]
+    ]
+  },
+  {
+    "id": "a1288c23.b615f",
+    "type": "switchNode",
+    "name": "switch tenantId",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'tenantId'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1659.4010124206543,
+    "y": 149.44443082809448,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "85b237c8.6a5728"
+      ]
+    ]
+  },
+  {
+    "id": "85b237c8.6a5728",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1846.4010124206543,
+    "y": 145.44443082809448,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "1f01ba7.909de46"
+      ]
+    ]
+  },
+  {
+    "id": "1f01ba7.909de46",
+    "type": "set",
+    "name": "set tenantId",
+    "xml": "<set>\n<parameter name='prop.sotn.tenantId' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2014.4010124206543,
+    "y": 146.0444369316101,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "af84978c.aabb08",
+    "type": "switchNode",
+    "name": "switch cir",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'cir'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1641.2406692504883,
+    "y": 239.44448900222778,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "68c32198.953bc"
+      ]
+    ]
+  },
+  {
+    "id": "68c32198.953bc",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1849.240737915039,
+    "y": 235.4445023536682,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "fcd5f3e.122b91"
+      ]
+    ]
+  },
+  {
+    "id": "fcd5f3e.122b91",
+    "type": "set",
+    "name": "set cir",
+    "xml": "<set>\n<parameter name='prop.sotn.cir' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1998.5740585327148,
+    "y": 233.90564966201782,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "8d1b65f0.441d58",
+    "type": "switchNode",
+    "name": "switch vpnType",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'vpnType'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1660.5491409301758,
+    "y": 193.2222080230713,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "aeee7e59.41fe6"
+      ]
+    ]
+  },
+  {
+    "id": "aeee7e59.41fe6",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1847.5491409301758,
+    "y": 189.2222080230713,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "efbe141c.2693e8"
+      ]
+    ]
+  },
+  {
+    "id": "efbe141c.2693e8",
+    "type": "set",
+    "name": "set vpnType",
+    "xml": "<set>\n<parameter name='prop.sotn.vpnType' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2016.8827743530273,
+    "y": 186.68337297439575,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "4a9af7ad.2879c8",
+    "type": "switchNode",
+    "name": "switch access-provider-id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'access-provider-id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1682.030776977539,
+    "y": 515.6667265892029,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "8268dacb.9b51a8"
+      ]
+    ]
+  },
+  {
+    "id": "ba3dcad9.481608",
+    "type": "switchNode",
+    "name": "switch access-client-id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'access-client-id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1674.5862579345703,
+    "y": 561.0000557899475,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "a95546f9.dbc8c8"
+      ]
+    ]
+  },
+  {
+    "id": "5806cf92.6a521",
+    "type": "switchNode",
+    "name": "switch access-topology-id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'access-topology-id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1679.0307159423828,
+    "y": 599.8889412879944,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "2720e3f9.d49aac"
+      ]
+    ]
+  },
+  {
+    "id": "8268dacb.9b51a8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1866.030776977539,
+    "y": 514.666741847992,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "4e3a7098.974c8"
+      ]
+    ]
+  },
+  {
+    "id": "a95546f9.dbc8c8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1861.5862579345703,
+    "y": 557.0000557899475,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "640cc28a.98572c"
+      ]
+    ]
+  },
+  {
+    "id": "2720e3f9.d49aac",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1866.0307159423828,
+    "y": 595.8889412879944,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "21bffbdb.c6eb94"
+      ]
+    ]
+  },
+  {
+    "id": "4e3a7098.974c8",
+    "type": "set",
+    "name": "set access-provider-id",
+    "xml": "<set>\n<parameter name='prop.sotn.access-provider-id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2049.2531356811523,
+    "y": 513.7779259681702,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "640cc28a.98572c",
+    "type": "set",
+    "name": "set access-client-id",
+    "xml": "<set>\n<parameter name='prop.sotn.access-client-id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2038.1421737670898,
+    "y": 555.0105323791504,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "21bffbdb.c6eb94",
+    "type": "set",
+    "name": "set access-topology-id",
+    "xml": "<set>\n<parameter name='prop.sotn.access-topology-id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2048.031089782715,
+    "y": 593.8993887901306,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "bd6407fd.e5e7e8",
+    "type": "switchNode",
+    "name": "switch access-node-id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'access-node-id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1679.845474243164,
+    "y": 646.5555849075317,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "7f7eda44.4baf24"
+      ]
+    ]
+  },
+  {
+    "id": "7f7eda44.4baf24",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1866.845474243164,
+    "y": 642.5555849075317,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "932f3665.ab2778"
+      ]
+    ]
+  },
+  {
+    "id": "37b39115.cca1ce",
+    "type": "switchNode",
+    "name": "switch access-ltp-id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'access-ltp-id'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1676.6232452392578,
+    "y": 689.0000615119934,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "da95a048.53cf8"
+      ]
+    ]
+  },
+  {
+    "id": "da95a048.53cf8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1863.6232452392578,
+    "y": 685.0000615119934,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "4432e921.5fd6d8"
+      ]
+    ]
+  },
+  {
+    "id": "932f3665.ab2778",
+    "type": "set",
+    "name": "set access-node-id",
+    "xml": "<set>\n<parameter name='prop.sotn.access-node-id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2038.8457870483398,
+    "y": 641.2327189445496,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "4432e921.5fd6d8",
+    "type": "set",
+    "name": "set access-ltp-id",
+    "xml": "<set>\n<parameter name='prop.sotn.access-ltp-id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2029.289939880371,
+    "y": 684.0104908943176,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "5e46e6d8.c63f48",
+    "type": "switchNode",
+    "name": "switch eir",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'eir'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1642.531120300293,
+    "y": 282.1423554420471,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "fc17f5c5.ae3be8"
+      ]
+    ]
+  },
+  {
+    "id": "fc17f5c5.ae3be8",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1844.5310821533203,
+    "y": 277.14237546920776,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "5963427e.099eec"
+      ]
+    ]
+  },
+  {
+    "id": "5963427e.099eec",
+    "type": "set",
+    "name": "set eir",
+    "xml": "<set>\n<parameter name='prop.sotn.eir' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2000.8645858764648,
+    "y": 276.6035113334656,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "13ee1e74.912c62",
+    "type": "switchNode",
+    "name": "switch cbs",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'cbs'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1642.531120300293,
+    "y": 331.1423554420471,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "52037d34.46c984"
+      ]
+    ]
+  },
+  {
+    "id": "52037d34.46c984",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1841.5310821533203,
+    "y": 327.14236211776733,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "87d5db86.520f08"
+      ]
+    ]
+  },
+  {
+    "id": "87d5db86.520f08",
+    "type": "set",
+    "name": "set cbs",
+    "xml": "<set>\n<parameter name='prop.sotn.cbs' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 1999.864646911621,
+    "y": 325.60352182388306,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "79a54f85.8c9c5",
+    "type": "switchNode",
+    "name": "switch ebs",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ebs'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1642.531120300293,
+    "y": 376.1423554420471,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "c2f96fa0.ad15c"
+      ]
+    ]
+  },
+  {
+    "id": "c2f96fa0.ad15c",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1841.5310821533203,
+    "y": 369.14236307144165,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "9e90ea61.5694f8"
+      ]
+    ]
+  },
+  {
+    "id": "9e90ea61.5694f8",
+    "type": "set",
+    "name": "set ebs",
+    "xml": "<set>\n<parameter name='prop.sotn.ebs' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2002.864646911621,
+    "y": 370.60352182388306,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "d44eb5ab.296838",
+    "type": "switchNode",
+    "name": "switch colorAware",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'colorAware'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1664.5312042236328,
+    "y": 423.1423726081848,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "b8905300.a37c5"
+      ]
+    ]
+  },
+  {
+    "id": "b8905300.a37c5",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1842.53120803833,
+    "y": 417.1423649787903,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "a701fe84.51e22"
+      ]
+    ]
+  },
+  {
+    "id": "a701fe84.51e22",
+    "type": "set",
+    "name": "set colorAware",
+    "xml": "<set>\n<parameter name='prop.sotn.colorAware' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2023.8645858764648,
+    "y": 416.6035237312317,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "c0af4869.cb2978",
+    "type": "switchNode",
+    "name": "switch couplingFlag",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'couplingFlag'`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1664.5312118530273,
+    "y": 469.14239740371704,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "b6ad72cc.3d503"
+      ]
+    ]
+  },
+  {
+    "id": "b6ad72cc.3d503",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1842.5312042236328,
+    "y": 461.1423659324646,
+    "z": "12958f29.9139d1",
+    "wires": [
+      [
+        "189417c4.cf2b18"
+      ]
+    ]
+  },
+  {
+    "id": "189417c4.cf2b18",
+    "type": "set",
+    "name": "set couplingFlag",
+    "xml": "<set>\n<parameter name='prop.sotn.couplingFlag' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />\n",
+    "comments": "",
+    "x": 2027.8645858764648,
+    "y": 461.6035485267639,
+    "z": "12958f29.9139d1",
+    "wires": []
+  },
+  {
+    "id": "75b2fbdb.c98244",
+    "type": "comment",
+    "name": "TODO: Recheck AAI schemas",
+    "info": "",
+    "comments": "",
+    "x": 709.0312728881836,
+    "y": 65.14243173599243,
+    "z": "12958f29.9139d1",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-deactivate.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-deactivate.json
new file mode 100644
index 0000000..41d183e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-deactivate.json
@@ -0,0 +1,185 @@
+[
+  {
+    "id": "3ac27f10.3a8f4",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 201,
+    "y": 111,
+    "z": "4bc69b52.b6d424",
+    "wires": [
+      [
+        "a4d35571.5a50a8"
+      ]
+    ]
+  },
+  {
+    "id": "a4d35571.5a50a8",
+    "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": 357.00000381469727,
+    "y": 202.00002193450928,
+    "z": "4bc69b52.b6d424",
+    "wires": [
+      [
+        "227b9b33.0bedd4"
+      ]
+    ]
+  },
+  {
+    "id": "227b9b33.0bedd4",
+    "type": "method",
+    "name": "method sotn-network-topology-operation-deactivate",
+    "xml": "<method rpc='sotn-network-topology-operation-deactivate' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 345.0001220703125,
+    "y": 290.0000047683716,
+    "z": "4bc69b52.b6d424",
+    "wires": [
+      [
+        "5e6e65c4.2242fc"
+      ]
+    ]
+  },
+  {
+    "id": "5e6e65c4.2242fc",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 568.0000762939453,
+    "y": 362.00007820129395,
+    "z": "4bc69b52.b6d424",
+    "wires": [
+      [
+        "d2ec6450.70e238",
+        "e44a5ce1.2a6d1",
+        "ae274e39.92bc9",
+        "368c52e1.6b342e",
+        "1101140b.a4b22c",
+        "2730f4e7.d0214c",
+        "96a05e1e.a91ab",
+        "9cbc0828.b45c18"
+      ]
+    ]
+  },
+  {
+    "id": "d2ec6450.70e238",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:validate-sotn-network-input-parameters",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sotn-network-input-parameters' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 999.6111450195312,
+    "y": 110.33334350585938,
+    "z": "4bc69b52.b6d424",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "e44a5ce1.2a6d1",
+    "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=\"sotn-network-topology-operation-activate\"/>\n<parameter name=\"field3\" value=\"SOTN-Deactivate\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 804.03125,
+    "y": 153.36459636688232,
+    "z": "4bc69b52.b6d424",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "1101140b.a4b22c",
+    "type": "set",
+    "name": "set networkId and network-object-path",
+    "xml": "<set>\n<parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name=\"network-object-path\" value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $network-topology-operation-input.network-information.network-id  + '/network-data/'` \" />",
+    "comments": "",
+    "x": 897.0313110351562,
+    "y": 340.9000244140625,
+    "z": "4bc69b52.b6d424",
+    "wires": []
+  },
+  {
+    "id": "9cbc0828.b45c18",
+    "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": 816.8091011047363,
+    "y": 531.4554576873779,
+    "z": "4bc69b52.b6d424",
+    "wires": []
+  },
+  {
+    "id": "2730f4e7.d0214c",
+    "type": "set",
+    "name": "set network-level-oper-status",
+    "xml": "<set>\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='PendingDelete' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />",
+    "comments": "",
+    "x": 861.9202156066895,
+    "y": 403.12221240997314,
+    "z": "4bc69b52.b6d424",
+    "wires": []
+  },
+  {
+    "id": "ae274e39.92bc9",
+    "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": 836.3333549499512,
+    "y": 206.36463260650635,
+    "z": "4bc69b52.b6d424",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "96a05e1e.a91ab",
+    "type": "update",
+    "name": "update SOTN Connectivity status to AAI",
+    "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='connectivity' \n      key='connectivity.connectivity-id = $network-topology-operation-input.network-information.network-id' >\n<parameter name='connectivity-id' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name='operational-status' value='PendingDelete' />",
+    "comments": "",
+    "outputs": 1,
+    "x": 896.1387977600098,
+    "y": 462.82540130615234,
+    "z": "4bc69b52.b6d424",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "368c52e1.6b342e",
+    "type": "set",
+    "name": "set network in service-data",
+    "xml": "<set>\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\n<parameter name='service-data.networks.network[$tmp.nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />",
+    "comments": "",
+    "x": 858.475772857666,
+    "y": 273.6777973175049,
+    "z": "4bc69b52.b6d424",
+    "wires": []
+  },
+  {
+    "id": "44f3a46.f2f575c",
+    "type": "comment",
+    "name": "TODO MP2MP",
+    "info": "Current implementation is for P2P connectivity\nFor MP2MP connectivity in future DG needs to be modified",
+    "comments": "",
+    "x": 1083.5069007873535,
+    "y": 196.6180238723755,
+    "z": "4bc69b52.b6d424",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-delete.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-delete.json
new file mode 100644
index 0000000..2f29f7d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-delete.json
@@ -0,0 +1,173 @@
+[
+  {
+    "id": "e2842db5.a9071",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 107.00390625,
+    "y": 70.00390625,
+    "z": "54170a80.42c614",
+    "wires": [
+      [
+        "d0423637.689c18"
+      ]
+    ]
+  },
+  {
+    "id": "d0423637.689c18",
+    "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": 319.00391006469727,
+    "y": 142.0039234161377,
+    "z": "54170a80.42c614",
+    "wires": [
+      [
+        "8964c247.35272"
+      ]
+    ]
+  },
+  {
+    "id": "8964c247.35272",
+    "type": "method",
+    "name": "method sotn-network-topology-operation-delete",
+    "xml": "<method rpc='sotn-network-topology-operation-delete' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 307.0040283203125,
+    "y": 230.00390625,
+    "z": "54170a80.42c614",
+    "wires": [
+      [
+        "7ece957c.81e36c"
+      ]
+    ]
+  },
+  {
+    "id": "7ece957c.81e36c",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 477.44836044311523,
+    "y": 292.44836235046387,
+    "z": "54170a80.42c614",
+    "wires": [
+      [
+        "1ccc938f.2f224c",
+        "a9d1874f.281198",
+        "bebcb7e3.f95d48",
+        "f957f73b.5f1c98",
+        "77e06509.a268cc",
+        "ed0dab58.6e6938",
+        "53d6d08a.6aeb8"
+      ]
+    ]
+  },
+  {
+    "id": "1ccc938f.2f224c",
+    "type": "call",
+    "name": "call GENERIC-RESOURCE-API:validate-sotn-network-input-parameters",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sotn-network-input-parameters' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 939.3928070068359,
+    "y": 87.00390625,
+    "z": "54170a80.42c614",
+    "wires": [
+      [
+        
+      ]
+    ]
+  },
+  {
+    "id": "a9d1874f.281198",
+    "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=\"sotn-network-topology-operation-delete\"/>\n<parameter name=\"field3\" value=\"SOTN-Delete\"/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 752.7816314697266,
+    "y": 153.33727836608887,
+    "z": "54170a80.42c614",
+    "wires": [
+      [
+        
+      ]
+    ]
+  },
+  {
+    "id": "bebcb7e3.f95d48",
+    "type": "set",
+    "name": "set networkId and network-object-path",
+    "xml": "<set>\n<parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name='service-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $network-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'` \" />",
+    "comments": "",
+    "x": 837.448314666748,
+    "y": 401.4281978607178,
+    "z": "54170a80.42c614",
+    "wires": [
+      
+    ]
+  },
+  {
+    "id": "f957f73b.5f1c98",
+    "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": 766.5595626831055,
+    "y": 464.9835858345032,
+    "z": "54170a80.42c614",
+    "wires": [
+      
+    ]
+  },
+  {
+    "id": "ed0dab58.6e6938",
+    "type": "set",
+    "name": "set new network length",
+    "xml": "<set>\n\t<parameter name=\"service-data.networks.network_length\" value=\"`$service-data.networks.network_length - 1`\"/>\n\n\t\n",
+    "comments": "",
+    "x": 796.0809860229492,
+    "y": 278.89910793304443,
+    "z": "54170a80.42c614",
+    "wires": [
+      
+    ]
+  },
+  {
+    "id": "77e06509.a268cc",
+    "type": "set",
+    "name": "Remove networks from ServiceData",
+    "xml": "<set>\n\t<parameter name=\"service-data.networks.network[$tmp.nidx].\" value=\"\"/>\n\n",
+    "comments": "",
+    "x": 836.7051429748535,
+    "y": 326.8670496940613,
+    "z": "54170a80.42c614",
+    "wires": [
+      
+    ]
+  },
+  {
+    "id": "53d6d08a.6aeb8",
+    "type": "delete",
+    "name": "delete SOTN VPNInstance connectivity in AAI",
+    "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='connectivity' \n        key='connectivity.connectivity-id = $network-topology-operation-input.network-information.network-id'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 874.6364860534668,
+    "y": 220.01019191741943,
+    "z": "54170a80.42c614",
+    "wires": [
+      [
+        
+      ]
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-reoptimize.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-reoptimize.json
new file mode 100644
index 0000000..6bdf1de
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-reoptimize.json
@@ -0,0 +1,377 @@
+[
+  {
+    "id": "75921ba5.e84f04",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 127,
+    "y": 31,
+    "z": "4c77a098.14bed",
+    "wires": [
+      [
+        "67179bf.f30bb64"
+      ]
+    ]
+  },
+  {
+    "id": "67179bf.f30bb64",
+    "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": 345.49999237060547,
+    "y": 111.99999287677929,
+    "z": "4c77a098.14bed",
+    "wires": [
+      [
+        "df585947.1b0688"
+      ]
+    ]
+  },
+  {
+    "id": "df585947.1b0688",
+    "type": "method",
+    "name": "sotn-network-topology-operation-reoptimize",
+    "xml": "<method rpc='sotn-network-topology-operation-reoptimize' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 346.5,
+    "y": 165,
+    "z": "4c77a098.14bed",
+    "wires": [
+      [
+        "970cf081.0efd5"
+      ]
+    ]
+  },
+  {
+    "id": "970cf081.0efd5",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 424.50000762939453,
+    "y": 223.000009059906,
+    "z": "4c77a098.14bed",
+    "wires": [
+      [
+        "32a56503.ce58fa",
+        "b0b6546.423eca8",
+        "103fcffc.47e2d",
+        "77dde683.c05af8",
+        "c64a9e95.de368",
+        "f4c6a746.18c888"
+      ]
+    ]
+  },
+  {
+    "id": "32a56503.ce58fa",
+    "type": "set",
+    "name": "set tmp.network.parent-network-id,etc",
+    "xml": "<set>\n<parameter name='tmp.network.network-id' value='`$network-topology-operation-input.network-information.network-id`' />\n<parameter name='tmp.network.service-instance-id' value='`$network-topology-operation-input.service-information.service-instance-id`' />\n\n\n",
+    "comments": "",
+    "x": 772.0000152587891,
+    "y": 118.00000476837158,
+    "z": "4c77a098.14bed",
+    "wires": []
+  },
+  {
+    "id": "21fcd909.4488b6",
+    "type": "comment",
+    "name": "set tmp connectivity-id to fetch resource from MDSAL",
+    "info": "",
+    "comments": "",
+    "x": 841.9603424072266,
+    "y": 83.03180408477783,
+    "z": "4c77a098.14bed",
+    "wires": []
+  },
+  {
+    "id": "b0b6546.423eca8",
+    "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": 715.9999542236328,
+    "y": 201.00000476837158,
+    "z": "4c77a098.14bed",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "deead92.2e05028",
+    "type": "comment",
+    "name": "Obtain different URL, template location etc",
+    "info": "For saving resource information to MDSAL & for AAI",
+    "comments": "",
+    "x": 811.7380523681641,
+    "y": 166.22217273712158,
+    "z": "4c77a098.14bed",
+    "wires": []
+  },
+  {
+    "id": "103fcffc.47e2d",
+    "type": "for",
+    "name": "for pidx..mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[]",
+    "xml": "<for index='pidx' start='0' end='1' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 926.0000991821289,
+    "y": 283.0000705718994,
+    "z": "4c77a098.14bed",
+    "wires": [
+      [
+        "4ff3cba6.0577e4"
+      ]
+    ]
+  },
+  {
+    "id": "4ff3cba6.0577e4",
+    "type": "block",
+    "name": "block atomic",
+    "xml": "<block atomic=\"true\">\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 897.8459091186523,
+    "y": 339.224645614624,
+    "z": "4c77a098.14bed",
+    "wires": [
+      [
+        "efb008da.002a38",
+        "56cd0f49.c1db2",
+        "1e3aa974.204b57",
+        "c0e08604.031d68",
+        "b2b348e8.930c38",
+        "ea908538.cdcb68",
+        "63bd98b8.1ea0d8",
+        "9da5cea0.60ef2",
+        "a382c856.52c0b8",
+        "4d332c82.ad3af4"
+      ]
+    ]
+  },
+  {
+    "id": "efb008da.002a38",
+    "type": "set",
+    "name": "set prop.ar.provided-allotted-resource-id",
+    "xml": "<set>\n<parameter name='prop.ar.provided-allotted-resource-id' value='`$service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id`' />\n\n",
+    "comments": "",
+    "x": 1167.8153915405273,
+    "y": 322.02744245529175,
+    "z": "4c77a098.14bed",
+    "wires": []
+  },
+  {
+    "id": "56cd0f49.c1db2",
+    "type": "execute",
+    "name": "generate tmp.ar-url-connection url",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.connection-attachment-allottedresource`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.ar-url-connection\"/>\n    <parameter name=\"target\" value=\"{allotted-resource-id}\"/>\n    <parameter name=\"replacement\" value='`$prop.ar.provided-allotted-resource-id`'/>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1156.815284729004,
+    "y": 374.5724229812622,
+    "z": "4c77a098.14bed",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "1e3aa974.204b57",
+    "type": "execute",
+    "name": "execute RestApiCallNode - get-resource connection-attachment-allotted-resource",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />\n    <parameter name='restapiUser' value='`$prop.controller.user`' />\n    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"mdsal-providedAr\" />\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1297.8151321411133,
+    "y": 430.2390090227127,
+    "z": "4c77a098.14bed",
+    "wires": [
+      [
+        "4145e899.11bf48",
+        "75032056.67182"
+      ]
+    ]
+  },
+  {
+    "id": "4145e899.11bf48",
+    "type": "success",
+    "name": "success",
+    "xml": "<outcome value='success'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1673.185203552246,
+    "y": 430.7611274719238,
+    "z": "4c77a098.14bed",
+    "wires": [
+      [
+        "a6a898ea.1345e8"
+      ]
+    ]
+  },
+  {
+    "id": "75032056.67182",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1665.0370063781738,
+    "y": 465.8272123336792,
+    "z": "4c77a098.14bed",
+    "wires": [
+      [
+        "b38b08ff.bf1c28"
+      ]
+    ]
+  },
+  {
+    "id": "a6a898ea.1345e8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1804.1852989196777,
+    "y": 430.7611885070801,
+    "z": "4c77a098.14bed",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "b38b08ff.bf1c28",
+    "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=\"Error: Parent service data not available\" />\n    \n",
+    "comments": "",
+    "x": 1811.1857872009277,
+    "y": 465.0946235656738,
+    "z": "4c77a098.14bed",
+    "wires": []
+  },
+  {
+    "id": "ea908538.cdcb68",
+    "type": "set",
+    "name": "set model-data to input",
+    "xml": "<set>\n<parameter name='connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.' value=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.onap-model-information.` \" />",
+    "comments": "",
+    "x": 1138.0001907348633,
+    "y": 565.0000371932983,
+    "z": "4c77a098.14bed",
+    "wires": []
+  },
+  {
+    "id": "b2b348e8.930c38",
+    "type": "set",
+    "name": "set connection-attachment-ar-identifiers to input",
+    "xml": "<set>\n<parameter name='connection-attachment-topology-operation-input.service-information.service-instance-id' value=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id` \" />\n<parameter name='connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id' value=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.parent-service-instance-id` \" />\n<parameter name='connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type' value=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.allotted-resource-type` \" />\n<parameter name='connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id' value=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.allotted-resource-id` \" />\n",
+    "comments": "",
+    "x": 1213.301872253418,
+    "y": 527.0159864425659,
+    "z": "4c77a098.14bed",
+    "wires": []
+  },
+  {
+    "id": "c0e08604.031d68",
+    "type": "set",
+    "name": "set ar-data to input",
+    "xml": "<set>\n<parameter name='connection-attachment-topology-operation-input.request-information.request-action' value=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-status.action` \" />\n<parameter name='connection-attachment-topology-operation-input.sdnc-request-header.svc-action' value=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-status.rpc-action` \" />\n<parameter name='connection-attachment-topology-operation-input.request-information.' value=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.request-information.` \" />\n<parameter name='connection-attachment-topology-operation-input.sdnc-request-header.' value=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.` \" />\n<parameter name='connection-attachment-topology-operation-input.service-information.' value=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.service-information.` \" />\n<parameter name='connection-attachment-topology-operation-input.allotted-resource-information.' value=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.` \" />\n<parameter name='connection-attachment-topology-operation-input.connection-attachment-request-input.' value=\"`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.` \" />\n",
+    "comments": "",
+    "x": 1120.1586456298828,
+    "y": 485.8253927230835,
+    "z": "4c77a098.14bed",
+    "wires": []
+  },
+  {
+    "id": "4d332c82.ad3af4",
+    "type": "call",
+    "name": "call sotn-attachment-topology-operation-activate",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-activate' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1214.0001945495605,
+    "y": 740.0000486373901,
+    "z": "4c77a098.14bed",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "9da5cea0.60ef2",
+    "type": "call",
+    "name": "call sotn-attachment-topology-operation-deactivate",
+    "xml": "<call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-deactivate' mode='sync' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1223.0002746582031,
+    "y": 649.0000429153442,
+    "z": "4c77a098.14bed",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a382c856.52c0b8",
+    "type": "set",
+    "name": "set request-action and svc-action",
+    "xml": "<set>\n<parameter name='connection-attachment-topology-operation-input.sdnc-request-header.svc-action' value=\"activate\" />\n<parameter name='connection-attachment-topology-operation-input.request-information.request-action' value=\"ActivateSOTNAttachmentInstance\" />\n\n\n",
+    "comments": "",
+    "x": 1169.0002746582031,
+    "y": 694.0000457763672,
+    "z": "4c77a098.14bed",
+    "wires": []
+  },
+  {
+    "id": "63bd98b8.1ea0d8",
+    "type": "set",
+    "name": "set request-action and svc-action",
+    "xml": "<set>\n<parameter name='connection-attachment-topology-operation-input.sdnc-request-header.svc-action' value=\"deactivate\" />\n<parameter name='connection-attachment-topology-operation-input.request-information.request-action' value=\"DeactivateSOTNAttachmentInstance\" />\n<parameter name='connection-attachment-topology-operation-input.service-information.global-customer-id' value=\"`$service-data.service-information.global-customer-id` \" />\n<parameter name='connection-attachment-topology-operation-input.service-information.subscription-service-type' value=\"`$service-data.service-information.subscription-service-type` \" />\n<parameter name='connection-attachment-topology-operation-input.service-information.subscriber-name' value=\"`$service-data.service-information.subscriber-name` \" />",
+    "comments": "",
+    "x": 1169.000114440918,
+    "y": 608.0000410079956,
+    "z": "4c77a098.14bed",
+    "wires": []
+  },
+  {
+    "id": "77dde683.c05af8",
+    "type": "set",
+    "name": "set service-data in tmp var",
+    "xml": "<set>\n<parameter name = 'tmp.service-data.' value=\"`$service-data.`\"/>\n",
+    "comments": "",
+    "x": 734.0001983642578,
+    "y": 237.00009441375732,
+    "z": "4c77a098.14bed",
+    "wires": []
+  },
+  {
+    "id": "c64a9e95.de368",
+    "type": "set",
+    "name": "set tmp.service-data to service-data",
+    "xml": "<set>\n<parameter name = 'service-data. '  value = \"`$tmp.service-data.`\"/>\n",
+    "comments": "",
+    "x": 837.0003814697266,
+    "y": 816.0001068115234,
+    "z": "4c77a098.14bed",
+    "wires": []
+  },
+  {
+    "id": "f4c6a746.18c888",
+    "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": 758.0001831054688,
+    "y": 860.0000267028809,
+    "z": "4c77a098.14bed",
+    "wires": []
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_validate-sotn-network-input-parameters.json b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_validate-sotn-network-input-parameters.json
new file mode 100644
index 0000000..f7ddb43
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/json/sotn/GENERIC-RESOURCE-API_validate-sotn-network-input-parameters.json
@@ -0,0 +1,1201 @@
+[
+  {
+    "id": "e0ea16ce.30b528",
+    "type": "dgstart",
+    "name": "DGSTART",
+    "outputs": 1,
+    "x": 129,
+    "y": 55.76192092895508,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "421503a6.f5b1fc"
+      ]
+    ]
+  },
+  {
+    "id": "421503a6.f5b1fc",
+    "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": 374.2857131958008,
+    "y": 55,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "39c1834a.bed64c"
+      ]
+    ]
+  },
+  {
+    "id": "39c1834a.bed64c",
+    "type": "method",
+    "name": "validate-sotn-network-input-parameters",
+    "xml": "<method rpc='validate-sotn-network-input-parameters' mode='sync'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 331.91668701171875,
+    "y": 130.0149383544922,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "8c035f21.9908d"
+      ]
+    ]
+  },
+  {
+    "id": "8c035f21.9908d",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 615.9166946411133,
+    "y": 118.01496315002441,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "71b449ba.b5b6e8",
+        "58081ff8.7b99b"
+      ]
+    ]
+  },
+  {
+    "id": "71b449ba.b5b6e8",
+    "type": "switchNode",
+    "name": "switch  svc-action",
+    "xml": "<switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 896.9166946411133,
+    "y": 113.01494884490967,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "2e891b63.abe3c4"
+      ]
+    ]
+  },
+  {
+    "id": "2e891b63.abe3c4",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1087.6309967041016,
+    "y": 114.01494979858398,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "87e5a766.06c0f8"
+      ]
+    ]
+  },
+  {
+    "id": "87e5a766.06c0f8",
+    "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": 1262.0595474243164,
+    "y": 113.01494216918945,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "58081ff8.7b99b",
+    "type": "switchNode",
+    "name": "switch svc-action",
+    "xml": "<switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 197.91664123535156,
+    "y": 389.0149631500244,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "244d88a8.8b34f8",
+        "ed647530.fd1808",
+        "e7e5dea9.76643",
+        "e66827c9.add5d8",
+        "708e7f97.f011a"
+      ]
+    ]
+  },
+  {
+    "id": "244d88a8.8b34f8",
+    "type": "outcome",
+    "name": "create",
+    "xml": "<outcome value='create'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 406.50001525878906,
+    "y": 218.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "77a0c94f.323ad8"
+      ]
+    ]
+  },
+  {
+    "id": "77a0c94f.323ad8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 567.5000152587891,
+    "y": 218.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "45b5c3e7.7e8fdc"
+      ]
+    ]
+  },
+  {
+    "id": "ed647530.fd1808",
+    "type": "outcome",
+    "name": "deactivate",
+    "xml": "<outcome value='deactivate'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 379.49200439453125,
+    "y": 827.1904592514038,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "d552d87c.91c978"
+      ]
+    ]
+  },
+  {
+    "id": "e7e5dea9.76643",
+    "type": "outcome",
+    "name": "delete",
+    "xml": "<outcome value='delete'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 383.2063865661621,
+    "y": 997.9050168991089,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "dfce9d99.75939"
+      ]
+    ]
+  },
+  {
+    "id": "e66827c9.add5d8",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 382.96827697753906,
+    "y": 1171.3333024978638,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "25d5e03b.c57d5"
+      ]
+    ]
+  },
+  {
+    "id": "25d5e03b.c57d5",
+    "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-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n",
+    "comments": "",
+    "x": 566.5398101806641,
+    "y": 1171.9524431228638,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "45b5c3e7.7e8fdc",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 791.0000152587891,
+    "y": 218.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "5607ba9c.a01254",
+        "5b72d140.94b19"
+      ]
+    ]
+  },
+  {
+    "id": "5607ba9c.a01254",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 966.5000152587891,
+    "y": 238.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "e3e018a8.e54428"
+      ]
+    ]
+  },
+  {
+    "id": "e3e018a8.e54428",
+    "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": 1104.000015258789,
+    "y": 238.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "c81e309.24d38d",
+    "type": "other",
+    "name": "DeleteSOTNConnectivityInstance",
+    "xml": "<outcome value='DeleteSOTNConnectivityInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 805.0634269714355,
+    "y": 998.4602870941162,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "b9972944.66ec38"
+      ]
+    ]
+  },
+  {
+    "id": "b2f524af.680db8",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 740.6189727783203,
+    "y": 1070.6825561523438,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "ced4fad3.246c68"
+      ]
+    ]
+  },
+  {
+    "id": "ced4fad3.246c68",
+    "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": 900.952392578125,
+    "y": 1072.7936935424805,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "b9972944.66ec38",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1048.9523010253906,
+    "y": 1000.682538986206,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "61c91a24.083064",
+        "fa32e176.13d09",
+        "11242577.05a18b",
+        "5728f3e8.67ddbc"
+      ]
+    ]
+  },
+  {
+    "id": "708e7f97.f011a",
+    "type": "outcome",
+    "name": "activate",
+    "xml": "<outcome value='activate'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 400.4285697937012,
+    "y": 481.47623348236084,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "96fbea47.53b048"
+      ]
+    ]
+  },
+  {
+    "id": "96fbea47.53b048",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 583.2857360839844,
+    "y": 478.619083404541,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "74c54cdd.16f624",
+        "eb74a3dc.cd3c3"
+      ]
+    ]
+  },
+  {
+    "id": "74c54cdd.16f624",
+    "type": "other",
+    "name": "ActivateSOTNConnectivityInstance",
+    "xml": "<outcome value='ActivateSOTNConnectivityInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 836.5000152587891,
+    "y": 458.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "5309ed2f.aa6f94"
+      ]
+    ]
+  },
+  {
+    "id": "eb74a3dc.cd3c3",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 766.5000152587891,
+    "y": 498.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "dce7936d.fb9c7"
+      ]
+    ]
+  },
+  {
+    "id": "dce7936d.fb9c7",
+    "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": 924.0000152587891,
+    "y": 498.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "5309ed2f.aa6f94",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1067.500015258789,
+    "y": 458.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "11242577.05a18b",
+        "61c91a24.083064",
+        "fa32e176.13d09",
+        "decc2f59.1541d"
+      ]
+    ]
+  },
+  {
+    "id": "f16eb507.dd9548",
+    "type": "other",
+    "name": "DeactivateSOTNConnectivityInstance",
+    "xml": "<outcome value='DeactivateSOTNConnectivityInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 822.9206314086914,
+    "y": 828.9048528671265,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "a0749457.21f388"
+      ]
+    ]
+  },
+  {
+    "id": "a74c9bd7.c78918",
+    "type": "other",
+    "name": "Other",
+    "xml": "<outcome value='Other'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 737.9206237792969,
+    "y": 897.904860496521,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "432b7019.21a33"
+      ]
+    ]
+  },
+  {
+    "id": "432b7019.21a33",
+    "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": 918.9206390380859,
+    "y": 898.904860496521,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "d552d87c.91c978",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 559.7776870727539,
+    "y": 829.3806867599487,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "f16eb507.dd9548",
+        "a74c9bd7.c78918"
+      ]
+    ]
+  },
+  {
+    "id": "dfce9d99.75939",
+    "type": "switchNode",
+    "name": "switch request-action",
+    "xml": "<switch test='`$network-topology-operation-input.request-information.request-action`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 563.5554885864258,
+    "y": 997.7142407894135,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "c81e309.24d38d",
+        "b2f524af.680db8"
+      ]
+    ]
+  },
+  {
+    "id": "a0749457.21f388",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1065.8887939453125,
+    "y": 828.7142333984375,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "61c91a24.083064",
+        "fa32e176.13d09",
+        "11242577.05a18b",
+        "260e1e66.250fe2"
+      ]
+    ]
+  },
+  {
+    "id": "5b72d140.94b19",
+    "type": "other",
+    "name": "CreateSOTNConnectivityInstance",
+    "xml": "<outcome value='CreateSOTNConnectivityInstance'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1032.500015258789,
+    "y": 198.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "71db169.8db0ce8"
+      ]
+    ]
+  },
+  {
+    "id": "71db169.8db0ce8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1247.500015258789,
+    "y": 198.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "555e685a.dea178"
+      ]
+    ]
+  },
+  {
+    "id": "555e685a.dea178",
+    "type": "for",
+    "name": "for loop i - Network input parameters",
+    "xml": "<for index=\"i\" start=\"0\" end=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1498.000015258789,
+    "y": 198.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "b5d38a93.c445f8"
+      ]
+    ]
+  },
+  {
+    "id": "b5d38a93.c445f8",
+    "type": "block",
+    "name": "block",
+    "xml": "<block>\n",
+    "atomic": "false",
+    "comments": "",
+    "outputs": 1,
+    "x": 1726.500015258789,
+    "y": 198.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "663493d6.882fcc",
+        "25318af6.c353a6",
+        "2f66aae0.b823b6"
+      ]
+    ]
+  },
+  {
+    "id": "663493d6.882fcc",
+    "type": "set",
+    "name": "clear tmp-data",
+    "xml": "<set>\n<parameter name='tmp.name' value='' />\n<parameter name='tmp.value' value='' />\n",
+    "comments": "",
+    "x": 1909.500015258789,
+    "y": 158.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "25318af6.c353a6",
+    "type": "set",
+    "name": "set tmp-data",
+    "xml": "<set>\n<parameter name='tmp.name' value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$i].name`\"/>\n<parameter name='tmp.value' value=\"`$network-topology-operation-input.network-request-input.network-input-parameters.param[$i].value`\"/>\n",
+    "comments": "",
+    "x": 1904.000015258789,
+    "y": 198.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "2f66aae0.b823b6",
+    "type": "switchNode",
+    "name": "switch name",
+    "xml": "<switch test=\"`$tmp.name`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1904.000015258789,
+    "y": 238.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "eb2e473.c9088b8",
+        "b4eb27a6.d1dc38",
+        "db337906.a847b8"
+      ]
+    ]
+  },
+  {
+    "id": "e4f121ba.30fe6",
+    "type": "switchNode",
+    "name": "switch value",
+    "xml": "<switch test=\"`$tmp.value`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2364.0001831054688,
+    "y": 190.42861139774323,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "a8215ff9.64a2b"
+      ]
+    ]
+  },
+  {
+    "id": "db337906.a847b8",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2123.5003509521484,
+    "y": 256.4285989999771,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "9b19d225.785e"
+      ]
+    ]
+  },
+  {
+    "id": "9b19d225.785e",
+    "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-topology-operation-input.network-request-input.network-input-parameters.param[' + $i + ']' + '.name is a required input'`\" />\n",
+    "comments": "",
+    "x": 2298.5003547668457,
+    "y": 255.4285989999771,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "eb2e473.c9088b8",
+    "type": "other",
+    "name": "name",
+    "xml": "<outcome value='name'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2123.5003509521484,
+    "y": 140.4285932779312,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "e4f121ba.30fe6"
+      ]
+    ]
+  },
+  {
+    "id": "b4eb27a6.d1dc38",
+    "type": "other",
+    "name": "description",
+    "xml": "<outcome value='description'>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2135.5001068115234,
+    "y": 194.09525549411774,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "e4f121ba.30fe6"
+      ]
+    ]
+  },
+  {
+    "id": "a8215ff9.64a2b",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 2507.5001831054688,
+    "y": 190.42861139774323,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "12290ec0.ce8691"
+      ]
+    ]
+  },
+  {
+    "id": "12290ec0.ce8691",
+    "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.param '+ $tmp.name +' is a required input'`\" />\n",
+    "comments": "",
+    "x": 2665.5001831054688,
+    "y": 190.42861139774323,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "11242577.05a18b",
+    "type": "switchNode",
+    "name": "switch service-data.networks.network_length",
+    "xml": "<switch test='`$service-data.networks.network_length`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1372.3888778686523,
+    "y": 501.7619037628174,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "58eed4d5.00134c",
+        "e4c0c5bb.6ddd38"
+      ]
+    ]
+  },
+  {
+    "id": "58eed4d5.00134c",
+    "type": "other",
+    "name": "outcome Null",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1626.000015258789,
+    "y": 478.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "5cea3771.9a9808"
+      ]
+    ]
+  },
+  {
+    "id": "5cea3771.9a9808",
+    "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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n",
+    "comments": "",
+    "x": 1804.000015258789,
+    "y": 478.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "e4c0c5bb.6ddd38",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1606.500015258789,
+    "y": 518.4285907745361,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "134578c4.184aa7"
+      ]
+    ]
+  },
+  {
+    "id": "134578c4.184aa7",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1767.500015258789,
+    "y": 518.4285907745361,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "c72c7291.2c7c8",
+        "78223b76.7839b4"
+      ]
+    ]
+  },
+  {
+    "id": "c72c7291.2c7c8",
+    "type": "for",
+    "name": "for nidx..service-data.networks.network[]",
+    "xml": "<for index='nidx' start='0' end='`$service-data.networks.network_length`' >\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2030.000015258789,
+    "y": 498.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "982e1437.a4b908"
+      ]
+    ]
+  },
+  {
+    "id": "982e1437.a4b908",
+    "type": "switchNode",
+    "name": "switch networkid found",
+    "xml": "<switch test=\"`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2316.000015258789,
+    "y": 498.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "ac9a1fa9.bdd22"
+      ]
+    ]
+  },
+  {
+    "id": "ac9a1fa9.bdd22",
+    "type": "outcomeTrue",
+    "name": "true",
+    "xml": "<outcome value='true'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2486.500015258789,
+    "y": 498.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "ec9e80f0.5ec38"
+      ]
+    ]
+  },
+  {
+    "id": "6fad3509.6130ec",
+    "type": "set",
+    "name": "set tmp.nidx and ctx.network-data",
+    "xml": "<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='ctx.network-data.' value='`$service-data.networks.network[$nidx].network-data.`' />\n",
+    "comments": "",
+    "x": 2883.5,
+    "y": 501.4286193847656,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "93e38c19.231d",
+    "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-topology-operation-input.network-request-input.network-id not found in service-data\" />\n",
+    "comments": "",
+    "x": 2244.000015258789,
+    "y": 538.4285907745361,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "428fac3b.062274",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 2106.500015258789,
+    "y": 538.4285907745361,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "93e38c19.231d"
+      ]
+    ]
+  },
+  {
+    "id": "78223b76.7839b4",
+    "type": "switchNode",
+    "name": "switch tmp.nidx ",
+    "xml": "<switch test=\"`$tmp.nidx`\">\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1952.500015258789,
+    "y": 538.4285907745361,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "428fac3b.062274"
+      ]
+    ]
+  },
+  {
+    "id": "decc2f59.1541d",
+    "type": "switchNode",
+    "name": "switch network-level-oper-status",
+    "xml": "<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1331.6667022705078,
+    "y": 577.3174686431885,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "f48d98e8.f89ba8",
+        "184fe59.3a0381a"
+      ]
+    ]
+  },
+  {
+    "id": "f48d98e8.f89ba8",
+    "type": "outcome",
+    "name": "outcome Created",
+    "xml": "<outcome value='Created'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1628.5001182556152,
+    "y": 577.3174667358398,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "a8cf04ce.747cb8"
+      ]
+    ]
+  },
+  {
+    "id": "184fe59.3a0381a",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1596.5001182556152,
+    "y": 617.3174667358398,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "3cd001a0.c45e6e"
+      ]
+    ]
+  },
+  {
+    "id": "3cd001a0.c45e6e",
+    "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 is not in appropriate state for activate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />",
+    "comments": "",
+    "x": 1754.0001182556152,
+    "y": 617.3174667358398,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "fa32e176.13d09",
+    "type": "switchNode",
+    "name": "switch network-id",
+    "xml": "<switch test=\"`$network-topology-operation-input.network-information.network-id`\">\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1278.500015258789,
+    "y": 438.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "d8c5d1a3.b04f7"
+      ]
+    ]
+  },
+  {
+    "id": "d8c5d1a3.b04f7",
+    "type": "outcome",
+    "name": "NULL",
+    "xml": "<outcome value=''>",
+    "comments": "",
+    "outputs": 1,
+    "x": 1506.500015258789,
+    "y": 438.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "4b563acc.78f384"
+      ]
+    ]
+  },
+  {
+    "id": "4b563acc.78f384",
+    "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": 1644.000015258789,
+    "y": 438.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "61c91a24.083064",
+    "type": "execute",
+    "name": "execute requiredParameters",
+    "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"network-topology-operation-input.network-information.network-id\" value=\"$network-topology-operation-input.network-information.network-id\"/>\n\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1313.000015258789,
+    "y": 398.42859077453613,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "260e1e66.250fe2",
+    "type": "switchNode",
+    "name": "switch network-level-oper-status",
+    "xml": "<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1359.833267211914,
+    "y": 827.3174457550049,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "91b37393.c0324",
+        "ffe16248.a4bf"
+      ]
+    ]
+  },
+  {
+    "id": "91b37393.c0324",
+    "type": "outcome",
+    "name": "outcome Active",
+    "xml": "<outcome value='Active'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1633.1666412353516,
+    "y": 801.7619037628174,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "809f3296.9b18a"
+      ]
+    ]
+  },
+  {
+    "id": "ffe16248.a4bf",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1603.1666412353516,
+    "y": 841.7619037628174,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "4b27e236.5ebf5c"
+      ]
+    ]
+  },
+  {
+    "id": "4b27e236.5ebf5c",
+    "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 is not in appropriate state for deactivate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />",
+    "comments": "",
+    "x": 1769.1666412353516,
+    "y": 843.7619037628174,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "5728f3e8.67ddbc",
+    "type": "switchNode",
+    "name": "switch network-level-oper-status",
+    "xml": "<switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1348.722183227539,
+    "y": 998.4285297393799,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "56251f9.92115e",
+        "5f1c70a5.5c197"
+      ]
+    ]
+  },
+  {
+    "id": "56251f9.92115e",
+    "type": "outcome",
+    "name": "outcome PendingDelete",
+    "xml": "<outcome value='PendingDelete'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1648.7222442626953,
+    "y": 966.2063255310059,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "a83a5460.627c38"
+      ]
+    ]
+  },
+  {
+    "id": "5f1c70a5.5c197",
+    "type": "other",
+    "name": "other",
+    "xml": "<outcome value='Other'>\n",
+    "comments": "",
+    "outputs": 1,
+    "x": 1592.0555572509766,
+    "y": 1012.8729877471924,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "91838c11.18855"
+      ]
+    ]
+  },
+  {
+    "id": "91838c11.18855",
+    "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 is not in appropriate state for delete. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`\" />",
+    "comments": "",
+    "x": 1758.0555572509766,
+    "y": 1014.8729877471924,
+    "z": "86a643d3.ad3a2",
+    "wires": []
+  },
+  {
+    "id": "a8cf04ce.747cb8",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1816.4999961853027,
+    "y": 578.4285507202148,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "809f3296.9b18a",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1833.166519165039,
+    "y": 799.9100360870361,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "a83a5460.627c38",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 1864.2777252197266,
+    "y": 966.5766620635986,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      []
+    ]
+  },
+  {
+    "id": "ec9e80f0.5ec38",
+    "type": "block",
+    "name": "block : atomic",
+    "xml": "<block atomic=\"true\">",
+    "atomic": "true",
+    "outputs": 1,
+    "x": 2636.6665267944336,
+    "y": 494.7619390487671,
+    "z": "86a643d3.ad3a2",
+    "wires": [
+      [
+        "6fad3509.6130ec"
+      ]
+    ]
+  }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/resources/graph.versions b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/resources/graph.versions
new file mode 100755
index 0000000..b56795f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/resources/graph.versions
@@ -0,0 +1,262 @@
+GENERIC-RESOURCE-API aai-get-aic-zone ${project.version} sync
+GENERIC-RESOURCE-API aai-get-network-instance-group ${project.version} sync
+GENERIC-RESOURCE-API api-contrail-route-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API api-contrail-route-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API api-contrail-route-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API api-contrail-route-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API assign-vlan-tags ${project.version} sync
+GENERIC-RESOURCE-API auto-ip-assignment ${project.version} sync
+GENERIC-RESOURCE-API brg-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API brg-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API brg-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API brg-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API brg-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API brg-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API brg-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API connection-attachment-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API contrail-route-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API contrail-route-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API contrail-route-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API contrail-route-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API contrail-route-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API contrail-route-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API contrail-route-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API create-l3-subnet ${project.version} sync
+GENERIC-RESOURCE-API create-route-target-and-vpn-binding ${project.version} sync
+GENERIC-RESOURCE-API dci-connects-network-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API dci-connects-network-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API eipam-allocate-generic-subnet ${project.version} sync
+GENERIC-RESOURCE-API eipam-allocate-network-role-subnet ${project.version} sync
+GENERIC-RESOURCE-API eipam-create-generic-pool ${project.version} sync
+GENERIC-RESOURCE-API eipam-create-network-role-pool ${project.version} sync
+GENERIC-RESOURCE-API generate-allottedresource-id ${project.version} sync
+GENERIC-RESOURCE-API generate-FQPN ${project.version} sync
+GENERIC-RESOURCE-API generate-host-routes-host-route-id ${project.version} sync
+GENERIC-RESOURCE-API generate-l3network-network-id ${project.version} sync
+GENERIC-RESOURCE-API generate-panorama-name ${project.version} sync
+GENERIC-RESOURCE-API generate-cp-instance-id ${project.version} sync
+GENERIC-RESOURCE-API vf-module-generate-heat-parameters ${project.version} sync
+GENERIC-RESOURCE-API generate-subnets-subnet-id ${project.version} sync
+GENERIC-RESOURCE-API generate-unique-name ${project.version} sync
+GENERIC-RESOURCE-API generate-vpn-binding-id ${project.version} sync
+GENERIC-RESOURCE-API generic-configuration-notification-activate ${project.version} sync
+GENERIC-RESOURCE-API generic-configuration-notification-assign ${project.version} sync
+GENERIC-RESOURCE-API generic-configuration-notification-deactivate ${project.version} sync
+GENERIC-RESOURCE-API generic-configuration-notification-unassign ${project.version} sync
+GENERIC-RESOURCE-API generic-configuration-notification ${project.version} sync
+GENERIC-RESOURCE-API generic-configuration-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API get-complex-resource-service-model ${project.version} sync
+GENERIC-RESOURCE-API get-data-from-policy ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-composite-match-pair ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-create-composite-path ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-create-simple-path ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-populate-from-grapi ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-populate-from-vnfapi ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-simple-match-pair ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API getpathsegment-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API get-tunnelxconn-ar ${project.version} sync
+GENERIC-RESOURCE-API get-vnf-api-parent-instance ${project.version} sync
+GENERIC-RESOURCE-API gw-vfmodule-update ${project.version} sync
+GENERIC-RESOURCE-API manage-ipaddr-assignment ${project.version} sync
+GENERIC-RESOURCE-API manage-vni-assignment ${project.version} sync
+GENERIC-RESOURCE-API naming-policy-generate-name ${project.version} sync
+GENERIC-RESOURCE-API naming-policy-generate-unique-name ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-assign-automated ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-assign-from-preload ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-assign-vlantagging-instancegroup ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-changeassign ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API network-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API policy-manager-create-policy ${project.version} sync
+GENERIC-RESOURCE-API policy-manager-delete-policy ${project.version} sync
+GENERIC-RESOURCE-API policy-update-notify-operation ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-get-policy ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-rollback-capacity-db ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-activate-async ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-activate-sync ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-assign-async ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-assign-sync ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-async ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-create-vnfcs ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-deactivate-async ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-deactivate-sync ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-disable ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-enable ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-mapping-pprobe ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-mapping-vprobe ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation-validation ${project.version} sync
+GENERIC-RESOURCE-API port-mirror-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API preload-network-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API preload-vf-module-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API process-eipam-pools ${project.version} sync
+GENERIC-RESOURCE-API process-generic-eipam-pools ${project.version} sync
+GENERIC-RESOURCE-API query-aai-l3-network-by-network-role ${project.version} sync
+GENERIC-RESOURCE-API rollback-eipam-ip-assignment ${project.version} sync
+GENERIC-RESOURCE-API rollback-generated-names ${project.version} sync
+GENERIC-RESOURCE-API security-zone-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API security-zone-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API security-zone-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API security-zone-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API security-zone-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API security-zone-topology-operation-unassign ${project.version} sync
+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
+GENERIC-RESOURCE-API self-serve-vf-module-generate-name ${project.version} sync
+GENERIC-RESOURCE-API self-serve-generate-name ${project.version} sync
+GENERIC-RESOURCE-API self-serve-generate-name-changeassign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vnf-generate-name-changeassign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vf-module-generate-name-changeassign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-mS-mac-address-assign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-mS-vlan-tag-assign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-netbox-ip-assign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-unresolved-composite-data ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vf-module-assign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vf-module-unassign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vfmodule-changeassign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vfmodule-ra-assignment ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vf-module-forking-logic ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vf-module-mdsal-put ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vnf-mdsal-put ${project.version} sync 
+GENERIC-RESOURCE-API self-serve-vnf-assign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vnf-changeassign ${project.version} sync 
+GENERIC-RESOURCE-API self-serve-vnf-ra-assignment ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vnf-unassign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-vnf-forking-logic ${project.version} sync
+GENERIC-RESOURCE-API self-serve-pnf-assign ${project.version} sync
+GENERIC-RESOURCE-API self-serve-pnf-ra-assignment ${project.version} sync
+GENERIC-RESOURCE-API self-serve-pnf-unassign ${project.version} sync
+GENERIC-RESOURCE-API service-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API service-topology-operation-changeassign ${project.version} sync
+GENERIC-RESOURCE-API service-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API service-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API service-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API site-vnf-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API site-vnf-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API site-vnf-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API site-vnf-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API sotn-attachment-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API sotn-attachment-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API sotn-attachment-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API sotn-attachment-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API sotn-get-saved-ar-param ${project.version} sync
+GENERIC-RESOURCE-API sotn-network-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API sotn-network-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API sotn-network-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API sotn-network-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API tunnelxconn-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API tunnelxconn-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API tunnelxconn-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API tunnelxconn-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API tunnelxconn-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API tunnelxconn-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API tunnelxconn-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API validate-api-contrail-route-input ${project.version} sync
+GENERIC-RESOURCE-API validate-brg-input ${project.version} sync
+GENERIC-RESOURCE-API validate-connection-attachment-input ${project.version} sync
+GENERIC-RESOURCE-API validate-contrail-route-input ${project.version} sync
+GENERIC-RESOURCE-API validate-generic-configuration-input ${project.version} sync
+GENERIC-RESOURCE-API validate-getpathsegment-input ${project.version} sync
+GENERIC-RESOURCE-API validate-network-input-parameters ${project.version} sync
+GENERIC-RESOURCE-API validate-network-input ${project.version} sync
+GENERIC-RESOURCE-API validate-overlay-network-input-parameters ${project.version} sync
+GENERIC-RESOURCE-API validate-security-zone-input ${project.version} sync
+GENERIC-RESOURCE-API validate-service-input ${project.version} sync
+GENERIC-RESOURCE-API validate-sotn-network-input-parameters ${project.version} sync
+GENERIC-RESOURCE-API validate-tunnelxconn-input ${project.version} sync
+GENERIC-RESOURCE-API validate-vf-module-input ${project.version} sync
+GENERIC-RESOURCE-API validate-vnf-input ${project.version} sync
+GENERIC-RESOURCE-API validate-pnf-input ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-assign-rollback ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-assign-no-preload ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-assign-preload ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-changeassign ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation-async ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-vlan-tagging-activate ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-vlan-tagging-assign ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-vlan-tagging-deactivate ${project.version} sync
+GENERIC-RESOURCE-API vf-module-topology-vlan-tagging-ip-addresses ${project.version} sync
+GENERIC-RESOURCE-API vnf-get-resource-request ${project.version} sync
+GENERIC-RESOURCE-API vnf-topology-operation-async ${project.version} sync
+GENERIC-RESOURCE-API vnf-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API vnf-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API vnf-topology-operation-changeassign ${project.version} sync
+GENERIC-RESOURCE-API vnf-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API vnf-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API vnf-topology-operation ${project.version} sync
+GENERIC-RESOURCE-API pnf-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API pnf-topology-operation-assign ${project.version} sync
+GENERIC-RESOURCE-API pnf-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API pnf-topology-operation-unassign ${project.version} sync
+GENERIC-RESOURCE-API pnf-topology-operation ${project.version} sync
+SUBNET-API managed-network-notification ${project.version} sync
+SUBNET-API subnet-allocated-notification ${project.version} sync
+GENERIC-RESOURCE-API sdwan-network-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-network-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API sdwan-network-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-network-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API validate-sdwan-network-input-parameters ${project.version} sync
+GENERIC-RESOURCE-API sdwan-get-tenant-auth ${project.version} sync
+GENERIC-RESOURCE-API sdwan-attachment-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-attachment-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API sdwan-attachment-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-attachment-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API sdwan-get-device-param ${project.version} sync
+GENERIC-RESOURCE-API sdwan-get-saved-ar-param ${project.version} sync
+GENERIC-RESOURCE-API sdwan-get-wan-param ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vnf-topology-operation-device-activate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vnf-topology-operation-device-create ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vnf-topology-operation-device-deactivate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vnf-topology-operation-device-delete ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vnf-topology-operation-wanport-activate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vnf-topology-operation-wanport-create ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vnf-topology-operation-wanport-deactivate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vnf-topology-operation-wanport-delete ${project.version} sync
+GENERIC-RESOURCE-API sdwan-wanport-vnf-topology-operation-underlay ${project.version} sync
+GENERIC-RESOURCE-API wan-connection-topology-operation-create ${project.version} sync
+GENERIC-RESOURCE-API wan-connection-topology-operation-activate ${project.version} sync
+GENERIC-RESOURCE-API wan-connection-topology-operation-deactivate ${project.version} sync
+GENERIC-RESOURCE-API wan-connection-topology-operation-delete ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-device-create ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-device-activate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-device-deactivate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-device-delete ${project.version} sync
+GENERIC-RESOURCE-API sdwan-get-vf-module-device-param ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-site-create ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-site-activate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-site-deactivate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-site-delete ${project.version} sync
+GENERIC-RESOURCE-API sdwan-get-vf-module-site-param ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-wanport-create ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-wanport-activate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-wanport-deactivate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-wanport-delete ${project.version} sync
+GENERIC-RESOURCE-API sdwan-get-wan-param ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-vpn-create ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-vpn-activate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-vpn-deactivate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-vpn-delete ${project.version} sync
+GENERIC-RESOURCE-API validate-sdwan-vf-vpn-input-parameters ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-lanport-create ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-lanport-activate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-lanport-deactivate ${project.version} sync
+GENERIC-RESOURCE-API sdwan-vf-operation-lanport-delete ${project.version} sync
+GENERIC-RESOURCE-API sdwan-get-vf-module-lanport-param ${project.version} sync
+GENERIC-RESOURCE-API sdwan-bandwidth-policy-change ${project.version} sync
+GENERIC-RESOURCE-API send-so-response ${project.version} sync
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_aai-get-aic-zone.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_aai-get-aic-zone.xml
new file mode 100755
index 0000000..5f174c6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_aai-get-aic-zone.xml
@@ -0,0 +1,124 @@
+<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='aai-get-aic-zone' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='aaiapi.output.cloud-zone' value='' />

+                <parameter name='aaiapi.output.complex-name' value='' />

+                <parameter name='aaiapi.output.aic-clli' value='' />

+            </set>

+            <switch test='`$aaiapi.input.cloud-owner`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error aaiapi.input.network-instance-group-id is NULL" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$aaiapi.input.cloud-region-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error aaiapi.input.network-instance-group-id is NULL" />

+                    </return>

+                </outcome>

+            </switch>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="cloud-region" 

+		key="cloud-region.cloud-owner = $aaiapi.input.cloud-owner AND 

+		     cloud-region.cloud-region-id = $aaiapi.input.cloud-region-id AND 

+		     depth = '0'"

+        pfx='aai.cloud-region' local-only='false' >

+                <outcome value='not-found'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Cloud region not found in AAI"/>

+                        </set>

+                        <return status='failure'>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`$tmp.error-message`" />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='failure'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Error retrieving cloud region from AAI"/>

+                        </set>

+                        <return status='failure'>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`$tmp.error-message`" />

+                        </return>

+                    </block>

+                </outcome>

+            </get-resource>

+            <switch test='`$aai.cloud-region.relationship-list.relationship_length`'>

+                <outcome value='0'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Cloud region missing relationships in AAI"/>

+                        </set>

+                        <return status='failure'>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`$tmp.error-message`" />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value=''>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Cloud region missing relationships in AAI"/>

+                        </set>

+                        <return status='failure'>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`$tmp.error-message`" />

+                        </return>

+                    </block>

+                </outcome>

+            </switch>

+            <for silentFailure='false' index='ridx' start='0' end="`$aai.cloud-region.relationship-list.relationship_length`" >

+                <for silentFailure='false' index='rdidx' start='0' end="`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`" >

+                    <switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>

+                        <outcome value='complex.physical-location-id'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='tmp.complex-found' value='true' />

+                                </set>

+                                <set>

+                                    <parameter name='aaiapi.output.aic-clli' value='`$aai.complex.physical-location-id`' />

+                                </set>

+                                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="complex" 

+		key="complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"

+        pfx='aai.complex' local-only='false' ></get-resource>

+                            </block>

+                        </outcome>

+                    </switch>

+                </for>

+            </for>

+            <switch test='`$tmp.complex-found`'>

+                <outcome value='false'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Complex not found in AAI"/>

+                        </set>

+                        <return status='failure'>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`$tmp.error-message`" />

+                        </return>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='aaiapi.output.cloud-zone' value='`$aai.cloud-region.cloud-zone`' />

+                <parameter name='aaiapi.output.complex-name' value='`$aai.cloud-region.complex-name`' />

+            </set>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_aai-get-network-instance-group.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_aai-get-network-instance-group.xml
new file mode 100755
index 0000000..7383c3f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_aai-get-network-instance-group.xml
@@ -0,0 +1,95 @@
+<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='aai-get-network-instance-group' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='aaiapi.output.collection-customization-uuid' value='' />

+                <parameter name='aaiapi.output.collection-name' value='' />

+                <parameter name='aaiapi.output.collection-function' value='' />

+                <parameter name='aaiapi.output.collection.collection-id' value='' />

+            </set>

+            <switch test='`$aaiapi.input.network-instance-group-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error aaiapi.input.network-instance-group-id is NULL" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="instance-group" 

+		key="instance-group.id = $aaiapi.input.network-instance-group-id" 

+		local-only="false" 

+		pfx="tmp.AnAI.networkInstanceGroup">

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'Error retrieving network instance group with id=' + $aaiapi.input.network-instance-group-id + ' from AnAI'`" />

+                                </return>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <return status='failure'>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="`'network instance group id: ' + $aaiapi.input.network-instance-group-id + 'not found in AnAI'`" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                        <for silentFailure='true' index='ridx' start='0' end="`$tmp.AnAI.networkInstanceGroup.relationship-list.relationship_length`" >

+                            <for silentFailure='true' index='rdidx' start='0' end="`$tmp.AnAI.networkInstanceGroup.relationship-list.relationship[$ridx].relationship-data_length`" >

+                                <switch test='`$tmp.AnAI.networkInstanceGroup.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>

+                                    <outcome value='collection.collection-id'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='aaiapi.output.collection.collection-id' value='`$tmp.AnAI.networkInstanceGroup.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </for>

+                        </for>

+                        <switch test='`$aaiapi.output.collection.collection-id`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="`'network instance group id: ' + $aaiapi.input.network-instance-group-id + ' collection not found in AnAI'`" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="collection" 

+		key="collection.collection-id = $aaiapi.output.collection.collection-id" 

+		local-only="false" 

+		pfx="tmp.AnAI.collection">

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'Error retrieving collection with id=' + $aaiapi.output.collection.collection-id + ' from AnAI'`" />

+                                </return>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <return status='failure'>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="`'collection: ' + $aaiapi.output.collection.collection-id + 'not found in AnAI'`" />

+                                </return>

+                            </outcome>

+                            <outcome value='success'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='aaiapi.output.collection-customization-uuid' value='`$tmp.AnAI.collection.collection-customization-id`' />

+                                        <parameter name='aaiapi.output.collection-name' value='`$tmp.AnAI.collection.collection-name`' />

+                                        <parameter name='aaiapi.output.collection-function' value='`$tmp.AnAI.collection.collection-function`' />

+                                    </set>

+                                    <return status='success'>

+                                        <parameter name='' value='' />

+                                    </return>

+                                </block>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-activate.xml
new file mode 100644
index 0000000..658cee1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-activate.xml
@@ -0,0 +1,560 @@
+<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='api-contrail-route-topology-operation-activate' mode='sync'>
+        <block atomic="true">
+            <call module='GENERIC-RESOURCE-API' rpc='validate-api-contrail-route-input' mode='sync' ></call>
+            <set>
+                <parameter name='tmp.ar.allotted-resource-id' value='`$cto-api.contrail-route-allotted-resource-id`' />
+                <parameter name='tmp.ar.parent-service-instance-id' value='`$cto-api.parent-service-instance-id`' />
+            </set>
+            <set>
+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+                <parameter name="outputPath" value="tmp.ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+                            <outcome value='1'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='bk-cr-ar' value='$mdsal-ar.' />
+                                    </set>
+                                    <set>
+                                        <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />
+                                    </set>
+                                    <switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+                                        <outcome value='Created'>
+                                            <block></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="`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + ', expecting Created.'`" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                </block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="404" />
+                                    <parameter name="error-message" value="Error: Contrail Route not found" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true">
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="404" />
+                            <parameter name="error-message" value="Error: Contrail Route not found" />
+                        </return>
+                    </block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='ar-assignments.' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`" />
+            </set>
+            <switch test='`$ar-assignments.source-network.network-id`'>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Error activating contrail route.  Source network not found" />
+                    </return>
+                </outcome>
+                <outcome value='Other'>
+                    <block></block>
+                </outcome>
+            </switch>
+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="l3-network" 
+		key="l3-network.network-id = $ar-assignments.source-network.network-id" 
+		local-only="false" 
+		pfx="aai.src-network">
+                <outcome value='not-found'>
+                    <return status='failure'>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+                    </return>
+                </outcome>
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+                    </return>
+                </outcome>
+                <outcome value='success'>
+                    <block atomic="true"></block>
+                </outcome>
+            </get-resource>
+            <set>
+                <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+                <parameter name='ctx_memory_result_key' value='virtual-network-fqdn-split' />
+                <parameter name='original_string' value='`$aai.src-network.contrail-network-fqdn`' />
+                <parameter name='regex' value=':' />
+            </execute>
+            <switch test='`$virtual-network-fqdn-split_length`'>
+                <outcome value='0'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value='Unable to determine network fq-name from contrail fqdn' />
+                    </return>
+                </outcome>
+                <outcome value='Other'>
+                    <set>
+                        <parameter name='src-virtual-network-fqname' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 1]`' />
+                    </set>
+                </outcome>
+            </switch>
+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                <parameter name='api-name' value='fqname-to-uuid' />
+                <parameter name='api-action' value='get' />
+                <parameter name='resp-prefix' value='uuidresp' />
+                <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                <parameter name='default-project' value='`$cto-api.default-project`' />
+                <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                <parameter name='fqname-type' value='virtual-network' />
+                <parameter name='policy-name' value='`$src-virtual-network-fqname`' />
+                <outcome value='success'>
+                    <block></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="Failed to find network uuid for Contrail to source network" />
+                    </return>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='src-uuid' value='`$uuidresp.uuid`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                <parameter name='api-name' value='network-policy' />
+                <parameter name='api-action' value='apply' />
+                <parameter name='resp-prefix' value='contrailResp' />
+                <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                <parameter name='default-project' value='`$cto-api.default-project`' />
+                <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                <parameter name='contrail-virtual-network-id' value='`$uuidresp.uuid`' />
+                <outcome value='success'>
+                    <block></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="Failed to apply policy in Contrail to source network" />
+                    </return>
+                </outcome>
+            </execute>
+            <switch test='`$ar-assignments.dest-network.network-id`'>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Error activating contrail route.  Destination network not found" />
+                    </return>
+                </outcome>
+                <outcome value='Other'>
+                    <block></block>
+                </outcome>
+            </switch>
+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="l3-network" 
+		key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id" 
+		local-only="false" 
+		pfx="aai.dest-network">
+                <outcome value='not-found'>
+                    <return status='failure'>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+                    </return>
+                </outcome>
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+                    </return>
+                </outcome>
+                <outcome value='success'>
+                    <block atomic="true"></block>
+                </outcome>
+            </get-resource>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+                <parameter name='ctx_memory_result_key' value='virtual-network-fqdn-split' />
+                <parameter name='original_string' value='`$aai.dest-network.contrail-network-fqdn`' />
+                <parameter name='regex' value=':' />
+            </execute>
+            <switch test='`$virtual-network-fqdn-split_length`'>
+                <outcome value='0'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value='Unable to determine network fq-name from contrail fqdn' />
+                    </return>
+                </outcome>
+                <outcome value='Other'>
+                    <set>
+                        <parameter name='dest-virtual-network-fqname' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 1]`' />
+                        <parameter name='dest-default-project' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 2]`' />
+                    </set>
+                </outcome>
+            </switch>
+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                <parameter name='api-name' value='fqname-to-uuid' />
+                <parameter name='api-action' value='get' />
+                <parameter name='resp-prefix' value='uuidresp' />
+                <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                <parameter name='default-project' value='`$dest-default-project`' />
+                <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                <parameter name='fqname-type' value='virtual-network' />
+                <parameter name='policy-name' value='`$dest-virtual-network-fqname`' />
+                <outcome value='success'>
+                    <block></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="Failed to find network uuid for Contrail to destination network" />
+                    </return>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='dest-uuid' value='`$uuidresp.uuid`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                <parameter name='api-name' value='network-policy' />
+                <parameter name='api-action' value='apply' />
+                <parameter name='resp-prefix' value='contrailResp' />
+                <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                <parameter name='default-project' value='`$cto-api.default-project`' />
+                <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                <parameter name='contrail-virtual-network-id' value='`$uuidresp.uuid`' />
+                <outcome value='success'>
+                    <block></block>
+                </outcome>
+                <outcome value='failure'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Failed to apply policy in Contrail to destination network" />
+                        </return>
+                    </block>
+                </outcome>
+            </execute>
+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="network-policy:relationship-list" 
+	key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+                <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+                <parameter name="relationship-list.relationship[0].related-link" 
+value="`'/aai/v$/network/l3-networks/l3-network/' + $ar-assignments.source-network.network-id`" />
+                <parameter name="relationship-list.relationship[1].related-to" value="l3-network" />
+                <parameter name="relationship-list.relationship[1].related-link" 
+value="`'/aai/v$/network/l3-networks/l3-network/' + $ar-assignments.dest-network.network-id`" />
+                <outcome value='failure'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Failed to save network policy in AAI" />
+                        </return>
+                    </block>
+                </outcome>
+                <outcome value='not-found'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Failed to save network policy in AAI" />
+                        </return>
+                    </block>
+                </outcome>
+            </save>
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="allotted-resource" 
+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+			service-instance.service-instance-id = $ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.parent-service-instance-id AND
+			allotted-resource.id = $tmp.ar.allotted-resource-id"
+        pfx='pfx' local-only='false' force='false'>
+                <parameter name="operational-status" value="in-service-path" />
+                <parameter name="orchestration-status" value="activated" />
+                <outcome value='failure'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="AAI failed" />
+                        </return>
+                    </block>
+                </outcome>
+                <outcome value='not-found'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="AAI failed" />
+                        </return>
+                    </block>
+                </outcome>
+            </update>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+                <parameter name="outputPath" value="tmp.current-time" />
+            </execute>
+            <set>
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block></block>
+                </outcome>
+                <outcome value='failure'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+                        </return>
+                    </block>
+                </outcome>
+                <outcome value='not-found'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+                        </return>
+                    </block>
+                </outcome>
+            </execute>
+            <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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-create.xml
new file mode 100644
index 0000000..674e547
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-create.xml
@@ -0,0 +1,1443 @@
+<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='api-contrail-route-topology-operation-create' mode='sync'>

+        <block atomic="true">

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value="__TIMESTAMP__"/>

+                <parameter name="field2" value="GENERIC-RESOURCE-API.api-contrail-route-topology-operation-create"/>

+                <parameter name='field3' value='cto-api.parent-service-instance-id' />

+                <parameter name='field4' value='`$cto-api.parent-service-instance-id`' />

+                <parameter name='field5' value='cto-api.default-domain' />

+                <parameter name='field6' value='`$cto-api.default-domain`' />

+                <parameter name='field7' value='cto-api.port-mirror-configuration-instance-id' />

+                <parameter name='field8' value='`$cto-api.port-mirror-configuration-instance-id`' />

+                <parameter name='field9' value='cto-api.service-type' />

+                <parameter name='field10' value='`$cto-api.service-type`' />

+                <parameter name='field11' value='cto-api.source-network-role' />

+                <parameter name='field12' value='`$cto-api.source-network-fole`' />

+                <parameter name='field13' value='cto-api.collector-network-role' />

+                <parameter name='field14' value='`$cto-api.collector-network-4ole`' />

+                <parameter name='field15' value='cto-api.default-project' />

+                <parameter name='field16' value='`$cto-api.default-project`' />

+                <parameter name='field17' value='cto-api.cloud-region-id' />

+                <parameter name='field18' value='`$cto-api.cloud-region-id`' />

+                <parameter name='field19' value='cto-api.cloud-owner' />

+                <parameter name='field20' value='`$cto-api.cloud-owner`' />

+                <parameter name='field21' value='cto-api.isTest' />

+                <parameter name='field22' value='`$cto-api.isTest`' />

+                <parameter name='field23' value='cto-api.owning-entity' />

+                <parameter name='field24' value='`$cto-api.owning-entity`' />

+            </record>

+            <set>

+                <parameter name="ctotmp." value="" />

+                <parameter name="ar-request-information." value="" />

+                <parameter name="ar-created" value="" />

+                <parameter name="ar-aai-created" value="" />

+                <parameter name="np-aai-created" value="" />

+                <parameter name="contrail-created" value="" />

+            </set>

+            <set>

+                <parameter name="ctotmp.s-l3-network" value="" />

+                <parameter name="ctotmp.num-s-network" value="0" />

+                <parameter name="ctotmp.s-network-policy" value="" />

+                <parameter name="ctotmp.num-s-np" value="0" />

+                <parameter name="ctotmp.c-l3-network" value="" />

+                <parameter name="ctotmp.num-c-network" value="0" />

+                <parameter name="ctotmp.c-network-policy" value="" />

+                <parameter name="ctotmp.num-c-np" value="0" />

+                <parameter name="ctotmp.s-network-policy-list_length" value="0" />

+                <parameter name="ctotmp.c-network-policy-list_length" value="0" />

+                <parameter name="ctotmp.network-policy-id" value="" />

+                <parameter name="ctotmp.action" value="create" />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='validate-api-contrail-route-input' mode='sync' ></call>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource'"

+      force="true"

+      local-only="false"

+      pfx="ctotmp.aai.source-network">

+                <parameter name="start[0]" value="`'/cloud-infrastructure/cloud-regions/cloud-region/' + $cto-api.cloud-owner + '/'  + $cto-api.cloud-region-id`" />

+                <parameter name="start_length" value="1" />

+                <parameter name="query" value="`'/query/network-name-fromNetwork-role?networkRole='  + $cto-api.source-network-role`" />

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="API-contrail-route-topology-operation-create: Failed to get source network from aai" />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="API-contrail-route-topology-operation-create: Source network not found in AAI" />

+                        </return>

+                    </block>

+                </outcome>

+            </save>

+            <for index='ctotmp.sidx' start='0' end='`$ctotmp.aai.source-network.results_length`' >

+                <block atomic="true">

+                    <switch test='`$ctotmp.aai.source-network.results[$ctotmp.sidx].network-policy.network-policy-id`'>

+                        <outcome value=''>

+                            <block atomic="true"></block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <switch test='`$ctotmp.aai.source-network.results[$ctotmp.sidx].network-policy.network-policy-id`'>

+                                <outcome value=''>

+                                    <block atomic="true"></block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name="ctotmp.s-network-policy-list[$ctotmp.num-s-np].network-policy-id" value="`$ctotmp.aai.source-network.results[$ctotmp.sidx].network-policy.network-policy-id`" />

+                                        </set>

+                                        <set>

+                                            <parameter name="ctotmp.num-s-np" value="`$ctotmp.num-s-np+1`" />

+                                        </set>

+                                        <set>

+                                            <parameter name="ctotmp.s-network-policy-list_length" value="`$ctotmp.num-s-np`" />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </outcome>

+                    </switch>

+                    <switch test='`$ctotmp.aai.source-network.results[$ctotmp.sidx].l3-network.network-id`'>

+                        <outcome value=''>

+                            <block atomic="true"></block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <switch test='`$ctotmp.aai.source-network.results[$ctotmp.sidx].l3-network.network-id`'>

+                                <outcome value=''>

+                                    <block atomic="true"></block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name="ctotmp.s-l3-network." value="`$ctotmp.aai.source-network.results[$ctotmp.sidx].l3-network.`" />

+                                            <parameter name="ctotmp.num-s-network" value="`$ctotmp.num-s-network+1`" />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <switch test='`$ctotmp.num-s-network`'>

+                <outcome value='0'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="API-contrail-route-topology-operation-create: Source network not found from aai" />

+                    </return>

+                </outcome>

+                <outcome value='1'>

+                    <set>

+                        <parameter name="ctotmp.source-network.network-id" value="`$ctotmp.s-l3-network.network-id`" />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="API-contrail-route-topology-operation-create: Too many networks returned for source network from aai" />

+                    </return>

+                </outcome>

+            </switch>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource'"

+      force="true"

+      local-only="false"

+      pfx="ctotmp.aai.collector-network">

+                <parameter name="start[0]" value="`'/cloud-infrastructure/cloud-regions/cloud-region/' + $cto-api.cloud-owner + '/'  + $cto-api.cloud-region-id`" />

+                <parameter name="start_length" value="1" />

+                <parameter name="query" value="`'/query/network-name-fromNetwork-role?networkRole='  + $cto-api.collector-network-role`" />

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="API-contrail-route-topology-operation-create: Failed to get collector network from aai" />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="API-contrail-route-topology-operation-create: Collector network not found in AAI" />

+                        </return>

+                    </block>

+                </outcome>

+            </save>

+            <for index='ctotmp.cidx' start='0' end='`$ctotmp.aai.collector-network.results_length`' >

+                <block atomic="true">

+                    <switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.network-id`'>

+                        <outcome value=''>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="API-contrail-route-topology-operation-create: Collector network not found from aai" />

+                            </return>

+                        </outcome>

+                        <outcome value='Other'>

+                            <switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.network-id`'>

+                                <outcome value=''>

+                                    <block atomic="true"></block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name="ctotmp.c-l3-network." value="`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.`" />

+                                            <parameter name="ctotmp.num-c-network" value="`$ctotmp.num-c-network+1`" />

+                                        </set>

+                                        <for index='ridx' start='0' end='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship_length`' >

+                                            <switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].related-to`'>

+                                                <outcome value='service-instance'>

+                                                    <block atomic="true">

+                                                        <for index='rdidx' start='0' end='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data_length`' >

+                                                            <switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>

+                                                                <outcome value='service-instance.service-instance-id'>

+                                                                    <block atomic="true">

+                                                                        <set>

+                                                                            <parameter name="collector-service-instance-id" value="`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`" />

+                                                                        </set>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </for>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='network-policy'>

+                                                    <block atomic="true">

+                                                        <for index='rdidx' start='0' end='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data_length`' >

+                                                            <switch test='`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>

+                                                                <outcome value='network-policy.network-policy-id'>

+                                                                    <block atomic="true">

+                                                                        <set>

+                                                                            <parameter name="ctotmp.c-network-policy-list[$ctotmp.num-c-np].network-policy-id" value="`$ctotmp.aai.collector-network.results[$ctotmp.cidx].l3-network.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`" />

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name="ctotmp.num-c-np" value="`$ctotmp.num-c-np+1`" />

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name="ctotmp.c-network-policy-list_length" value="`$ctotmp.num-c-np`" />

+                                                                        </set>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </for>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <switch test='`$ctotmp.num-c-network`'>

+                <outcome value='0'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="API-contrail-route-topology-operation-create: Collector network not found from aai" />

+                    </return>

+                </outcome>

+                <outcome value='1'>

+                    <set>

+                        <parameter name="ctotmp.dest-network.network-id" value="`$ctotmp.c-l3-network.network-id`" />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="API-contrail-route-topology-operation-create: Too many networks returned for collector network from aai" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='ctotmp.spidx' start='0' end='`$ctotmp.s-network-policy-list_length`' >

+                <for index='ctotmp.cpidx' start='0' end='`$ctotmp.c-network-policy-list_length`' >

+                    <block atomic="true">

+                        <switch test='`$ctotmp.s-network-policy-list[$ctotmp.spidx].network-policy-id == $ctotmp.c-network-policy-list[$ctotmp.cpidx].network-policy-id`'>

+                            <outcome value='true'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="ctotmp.network-policy-id" value="`$ctotmp.s-network-policy-list[$ctotmp.spidx].network-policy-id`" />

+                                        <parameter name="ctotmp.existing-network-policy-found" value="true" />

+                                    </set>

+                                    <break/>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </for>

+            </for>

+            <switch test='`$ctotmp.network-policy-id`'>

+                <outcome value=''>

+                    <block atomic="true"></block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="existing policy - error" />

+                        </return>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='ar-request-information.source' value="SDNC" />

+            </set>

+            <set>

+                <parameter name='ar-contrail-route-request-input.source-network.network-role' value="`$cto-api.source-network-role`" />

+                <parameter name='ar-contrail-route-request-input.source-network.network-id' value="`$ctotmp.source-network.network-id`" />

+                <parameter name='ar-contrail-route-request-input.dest-network.network-role' value="`$cto-api.collector-network-role`" />

+                <parameter name='ar-contrail-route-request-input.dest-network.network-id' value="`$ctotmp.dest-network.network-id`" />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='generate-allottedresource-id' mode='sync' ></call>

+            <set>

+                <parameter name='ar-identifiers.allotted-resource-id' value="`$tmp.return.generate-allottedresource-id.id`" />

+                <parameter name='ar-identifiers.allotted-resource-type' value="contrail-route" />

+                <parameter name='ar-identifiers.parent-service-instance-id' value="`$cto-api.parent-service-instance-id`" />

+                <parameter name='ar-identifiers.consuming-service-instance-id' value="`$cto-api.service-instance-id` " />

+                <parameter name="tmp.ar.allotted-resource-id" value="`$tmp.return.generate-allottedresource-id.id`" />

+                <parameter name='tmp.ar.allotted-resource-type' value="contrail-route" />

+                <parameter name='tmp.ar.parent-service-instance-id' value="`$cto-api.parent-service-instance-id`" />

+                <!-- <parameter name='tmp.ar.contrail-applied-service-instance-id' value='' />  -->

+            </set>

+            <set>

+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/contrail-route-topology/'` " />

+            </set>

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>

+                <parameter name="outputPath" value="tmp.ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.parent-provided-resource`"/>

+                <parameter name="outputPath" value="tmp.parent-ar-url"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$cto-api.parent-service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.network`"/>

+                <parameter name="outputPath" value="tmp.ar-parentnetwork-url"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$cto-api.parent-service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block atomic="true">

+                        <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>

+                            <outcome value='1'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Error: Existing contrail route allotted resource" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+                <!--

+<parameter name='ar.allotted-resource-status.action' value="`$contrail-route-topology-operation-input.request-information.request-action` " /><parameter name='ar.allotted-resource-status.rpc-name' value="contrail-route-topology-operation" /><parameter name='ar.allotted-resource-status.rpc-action' value="`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` " /><parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$contrail-route-topology-operation-input.request-information.` " /><parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$contrail-route-topology-operation-input.sdnc-request-header.` " /><parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$contrail-route-topology-operation-input.service-information.` " /><parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$contrail-route-topology-operation-input.allotted-resource-information.` " /><parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.` " />

+-->

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.parent-ar-url`"/>

+                <parameter name="outputPath" value="tmp.parent-ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.network-provided-resource`"/>

+                <parameter name="outputPath" value="tmp.network-ar-url"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>

+            </execute>

+            <block atomic='true'>

+                <set>

+                    <parameter name='tmp.ar-name' value='$source-network-name_$cloud-region-id_$source-network-role_$collector-network-role _policy_' />

+                </set>

+                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                    <parameter name="source" value="`$tmp.ar-name`"/>

+                    <parameter name="outputPath" value="tmp.ar-name"/>

+                    <parameter name="target" value="$source-network-name"/>

+                    <parameter name="replacement" value="`$ctotmp.s-l3-network.network-name`"/>

+                </execute>

+                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                    <parameter name="source" value="`$tmp.ar-name`"/>

+                    <parameter name="outputPath" value="tmp.ar-name"/>

+                    <parameter name="target" value="$cloud-region-id"/>

+                    <parameter name="replacement" value="`$cto-api.cloud-region-id`"/>

+                </execute>

+                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                    <parameter name="source" value="`$tmp.ar-name`"/>

+                    <parameter name="outputPath" value="tmp.ar-name"/>

+                    <parameter name="target" value="$source-network-role"/>

+                    <parameter name="replacement" value="`$cto-api.source-network-role`"/>

+                </execute>

+                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                    <parameter name="source" value="`$tmp.ar-name`"/>

+                    <parameter name="outputPath" value="tmp.ar-name"/>

+                    <parameter name="target" value="$collector-network-role"/>

+                    <parameter name="replacement" value="`$cto-api.collector-network-role`"/>

+                </execute>

+                <set>

+                    <parameter name='generate-unique-name-input.index-table-name' value='CONTRAIL_ROUTE_NAME_INDEX' />

+                    <parameter name='generate-unique-name-input.index-table-prefix-column' value='contrail_route_name_prefix' />

+                    <parameter name='generate-unique-name-input.name-table-type' value='CONTRAIL_ROUTE_INSTANCE' />

+                    <parameter name='generate-unique-name-input.prefix' value="`$tmp.ar-name`" />

+                    <parameter name='generate-unique-name-input.index-length' value='2' />

+                </set>

+                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                    <parameter name="logger" value="message-log"/>

+                    <parameter name="field1" value="__TIMESTAMP__"/>

+                    <parameter name="field2" value="tmp.ar-name="/>

+                    <parameter name="field3" value="`$tmp.ar-name`"/>

+                    <parameter name="field4" value="generate-unique-name-input.prefix" />

+                    <parameter name="field5" value="`$generate-unique-name-input.prefix`" />

+                </record>

+                <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >

+                    <outcome value='failure'>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />

+                        </return>

+                    </outcome>

+                    <outcome value='success'>

+                        <set>

+                            <parameter name='tmp.ar-name' value='`$generate-unique-name-output.generated-name`' />

+                        </set>

+                    </outcome>

+                </call>

+                <set>

+                    <parameter name='ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />

+                </set>

+            </block>

+            <set>

+                <parameter name='ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.' 

+value="`$ar-identifiers.`" />

+            </set>

+            <set>

+                <parameter name='ar-assignments.source-network.network-id' value="`$ctotmp.s-l3-network.network-id` " />

+                <parameter name='ar-assignments.source-network.network-role' value="`$cto-api.source-network-role` " />

+                <parameter name='ar-assignments.dest-network.network-id' value="`$ctotmp.c-l3-network.network-id` " />

+                <parameter name='ar-assignments.dest-network.network-role' value="`$cto-api.collector-network-role` " />

+            </set>

+            <set>

+                <parameter name='tmp.fq-name' value='$defaultDomain.$defaultProject.$sdncNetworkPolicy' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.fq-name`"/>

+                <parameter name="outputPath" value="tmp.fq-name"/>

+                <parameter name="target" value="$defaultDomain"/>

+                <parameter name="replacement" value="`$cto-api.default-domain`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.fq-name`"/>

+                <parameter name="outputPath" value="tmp.fq-name"/>

+                <parameter name="target" value="$defaultProject"/>

+                <parameter name="replacement" value="`$cto-api.default-project`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.fq-name`"/>

+                <parameter name="outputPath" value="tmp.fq-name"/>

+                <parameter name="target" value="$sdncNetworkPolicy"/>

+                <parameter name="replacement" value="`$tmp.ar-name`"/>

+            </execute>

+            <set>

+                <parameter name='ar-assignments.fq-name' value="`$tmp.fq-name` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+                <parameter name="outputPath" value="tmp.current-time" />

+            </execute>

+            <set>

+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />

+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+            </set>

+            <switch test='`$cto-api.isTest`'>

+                <outcome value=''>

+                    <block atomic="true">

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="GENERIC-RESOURCE-API.api-contrail-route-topology-operation-create"/>

+                            <parameter name='field3' value='network-policy' />

+                            <parameter name='field4' value='create' />

+                            <parameter name='field5' value='contrailResp' />

+                            <parameter name='field6' value='`$cto-api.default-domain`' />

+                            <parameter name='field7' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name`' />

+                            <parameter name='field8' value='`$cto-api.default-project`' />

+                            <parameter name='field9' value='`$ctotmp.c-l3-network.contrail-network-fqdn`' />

+                            <parameter name='field10' value='`$ctotmp.s-l3-network.contrail-network-fqdn`' />

+                            <parameter name='field11' value='&lt;&gt;' />

+                            <parameter name='field12' value='`$cto-api.cloud-region-id`' />

+                        </record>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >

+                            <parameter name='api-name' value='network-policy' />

+                            <parameter name='api-action' value='create' />

+                            <parameter name='resp-prefix' value='contrailResp' />

+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />

+                            <parameter name='policy-name' value='`$tmp.fq-name`' />

+                            <parameter name='default-project' value='`$cto-api.default-project`' />

+                            <!-- <parameter name='vipr-service-instance' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.contrail-applied-service.contrail-fqdn`' /> -->

+                            <parameter name='dst-virtual-network' value='`$ctotmp.c-l3-network.contrail-network-fqdn`' />

+                            <parameter name='src-virtual-network' value='`$ctotmp.s-l3-network.contrail-network-fqdn`' />

+                            <parameter name='direction' value='&lt;&gt;' />

+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />

+                            <outcome value='success'>

+                                <block>

+                                    <set>

+                                        <parameter name="contrail-created" value="true" />

+                                    </set>

+                                </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="`'Failed to create policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />

+                                </return>

+                            </outcome>

+                        </execute>

+                        <set>

+                            <parameter name='ar-assignments.contrail-id' value="`$contrailResp.network-policy.uuid`" />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='true'>

+                    <block atomic="true">

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="GENERIC-RESOURCE-API.api-contrail-route-topology-operation-create"/>

+                            <parameter name='field3' value='network-policy' />

+                            <parameter name='field4' value='TESTcreate' />

+                            <parameter name='field5' value='contrailResp' />

+                            <parameter name='field6' value='`$cto-api.default-domain`' />

+                            <parameter name='field7' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name`' />

+                            <parameter name='field8' value='`$cto-api.default-project`' />

+                            <parameter name='field10' value='`$ctotmp.c-l3-network.contrail-network-fqdn`' />

+                            <parameter name='field11' value='`$ctotmp.s-l3-network.contrail-network-fqdn`' />

+                            <parameter name='field12' value='&lt;&gt;' />

+                            <parameter name='field13' value='`$cto-api.cloud-region-id`' />

+                        </record>

+                        <set>

+                            <parameter name='ar-assignments.contrail-id' value="dummy12345" />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="GENERIC-RESOURCE-API.api-contrail-route-topology-operation-create"/>

+                            <parameter name='field3' value='network-policy' />

+                            <parameter name='field4' value='create' />

+                            <parameter name='field5' value='contrailResp' />

+                            <parameter name='field6' value='`$cto-api.default-domain`' />

+                            <parameter name='field7' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name`' />

+                            <parameter name='field8' value='`$cto-api.default-project`' />

+                            <parameter name='field9' value='`$ctotmp.c-l3-network.contrail-network-fqdn`' />

+                            <parameter name='field10' value='`$ctotmp.s-l3-network.contrail-network-fqdn`' />

+                            <parameter name='field11' value='&lt;&gt;' />

+                            <parameter name='field12' value='`$cto-api.cloud-region-id`' />

+                        </record>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >

+                            <parameter name='api-name' value='network-policy' />

+                            <parameter name='api-action' value='create' />

+                            <parameter name='resp-prefix' value='contrailResp' />

+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />

+                            <parameter name='policy-name' value='`$tmp.fq-name`' />

+                            <parameter name='default-project' value='`$cto-api.default-project`' />

+                            <!-- <parameter name='vipr-service-instance' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.contrail-applied-service.contrail-fqdn`' /> -->

+                            <parameter name='dst-virtual-network' value='`$ctotmp.c-l3-network.contrail-network-fqdn`' />

+                            <parameter name='src-virtual-network' value='`$ctotmp.s-l3-network.contrail-network-fqdn`' />

+                            <parameter name='direction' value='&lt;&gt;' />

+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />

+                            <outcome value='success'>

+                                <block>

+                                    <set>

+                                        <parameter name="contrail-created" value="true" />

+                                    </set>

+                                </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="`'Failed to create policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />

+                                </return>

+                            </outcome>

+                        </execute>

+                        <set>

+                            <parameter name='ar-assignments.contrail-id' value="`$contrailResp.network-policy.uuid`" />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.' 

+value="`$ar-assignments.`" />

+            </set>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="network-policy" 

+		key="network-policy.network-policy-id = $ar-assignments.contrail-id" >

+                <!-- Create network-policy object -->

+                <parameter name="network-policy-id" value="`$ar-assignments.contrail-id`" />

+                <parameter name="network-policy-fqdn" value="`$ar-assignments.fq-name`" />

+                <outcome value='success'>

+                    <block>

+                        <set>

+                            <parameter name="np-aai-created" value="" />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Failed to save network-policy in AAI"/>

+                        </set>

+                        <block>

+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="ROLLING BACK the create due to error"/>

+                            </record>

+                            <switch test='`$np-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="network-policy" 

+		key="network-policy.network-policy-id = $ar-assignments.contrail-id" >

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$contrail-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >

+                                            <parameter name='api-name' value='network-policy' />

+                                            <parameter name='api-action' value='delete' />

+                                            <parameter name='resp-prefix' value='contrailResp' />

+                                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />

+                                            <parameter name='default-project' value='`$cto-api.default-project`' />

+                                            <parameter name='default-domain' value='`$cto-api.default-domain`' />

+                                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />

+                                            <outcome value='success'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                            <outcome value='failure'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND

+			allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />

+                                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                            <parameter name='format' value='json' />

+                                            <parameter name='httpMethod' value='DELETE' />

+                                            <parameter name="responsePrefix" value="mdsal-ar" />

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Failed to save network-policy in AAI"/>

+                        </set>

+                        <block>

+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="ROLLING BACK the create due to error"/>

+                            </record>

+                            <switch test='`$np-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="network-policy" 

+		key="network-policy.network-policy-id = $ar-assignments.contrail-id" >

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$contrail-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >

+                                            <parameter name='api-name' value='network-policy' />

+                                            <parameter name='api-action' value='delete' />

+                                            <parameter name='resp-prefix' value='contrailResp' />

+                                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />

+                                            <parameter name='default-project' value='`$cto-api.default-project`' />

+                                            <parameter name='default-domain' value='`$cto-api.default-domain`' />

+                                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />

+                                            <outcome value='success'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                            <outcome value='failure'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND

+			allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />

+                                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                            <parameter name='format' value='json' />

+                                            <parameter name='httpMethod' value='DELETE' />

+                                            <parameter name="responsePrefix" value="mdsal-ar" />

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </save>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $cto-api.service-type AND

+			service-instance.service-instance-id = $cto-api.parent-service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id"

+        pfx='pfx' local-only='false' force='false'>

+                <parameter name="id" value="`$tmp.ar.allotted-resource-id`" />

+                <parameter name="description" value="`$tmp.ar.allotted-resource-type`" />

+                <parameter name="selflink" value="`$tmp.ar.self-link`" />

+                <parameter name="operational-status" value="out-of-service-path" />

+                <parameter name="order-status" value="Created" />

+                <outcome value='success'>

+                    <block>

+                        <set>

+                            <parameter name="ar-aai-created" value="" />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Failed to save allotted resource in AAI"/>

+                        </set>

+                        <block>

+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="ROLLING BACK the create due to error"/>

+                            </record>

+                            <switch test='`$np-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="network-policy" 

+		key="network-policy.network-policy-id = $ar-assignments.contrail-id" >

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$contrail-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >

+                                            <parameter name='api-name' value='network-policy' />

+                                            <parameter name='api-action' value='delete' />

+                                            <parameter name='resp-prefix' value='contrailResp' />

+                                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />

+                                            <parameter name='default-project' value='`$cto-api.default-project`' />

+                                            <parameter name='default-domain' value='`$cto-api.default-domain`' />

+                                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />

+                                            <outcome value='success'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                            <outcome value='failure'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND

+			allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />

+                                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                            <parameter name='format' value='json' />

+                                            <parameter name='httpMethod' value='DELETE' />

+                                            <parameter name="responsePrefix" value="mdsal-ar" />

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Failed to save allotted resource in AAI"/>

+                        </set>

+                        <block>

+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="ROLLING BACK the create due to error"/>

+                            </record>

+                            <switch test='`$np-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="network-policy" 

+		key="network-policy.network-policy-id = $ar-assignments.contrail-id" >

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$contrail-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >

+                                            <parameter name='api-name' value='network-policy' />

+                                            <parameter name='api-action' value='delete' />

+                                            <parameter name='resp-prefix' value='contrailResp' />

+                                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />

+                                            <parameter name='default-project' value='`$cto-api.default-project`' />

+                                            <parameter name='default-domain' value='`$cto-api.default-domain`' />

+                                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />

+                                            <outcome value='success'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                            <outcome value='failure'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND

+			allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />

+                                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                            <parameter name='format' value='json' />

+                                            <parameter name='httpMethod' value='DELETE' />

+                                            <parameter name="responsePrefix" value="mdsal-ar" />

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </save>

+            <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='tmp.cidx' value="`0`" />

+                        <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value="1" />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >

+                            <switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.cidx' value='`$cidx`' />

+                                            <parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />

+                                            <parameter name='tmp.found-cidx' value='true' />

+                                        </set>

+                                        <break/>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$tmp.found-cidx`'>

+                            <outcome value='false'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value="`$tmp.ar.allotted-resource-type` " />

+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value="`$tmp.ar.self-link` " />

+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="parent" />

+                <outcome value='success'>

+                    <block></block>

+                </outcome>

+                <outcome value='failure'>

+                    <block>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Error updating md-sal for contrail-route-allotted-resource"/>

+                        </set>

+                        <block>

+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="ROLLING BACK the create due to error"/>

+                            </record>

+                            <switch test='`$np-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="network-policy" 

+		key="network-policy.network-policy-id = $ar-assignments.contrail-id" >

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$contrail-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >

+                                            <parameter name='api-name' value='network-policy' />

+                                            <parameter name='api-action' value='delete' />

+                                            <parameter name='resp-prefix' value='contrailResp' />

+                                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />

+                                            <parameter name='default-project' value='`$cto-api.default-project`' />

+                                            <parameter name='default-domain' value='`$cto-api.default-domain`' />

+                                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />

+                                            <outcome value='success'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                            <outcome value='failure'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND

+			allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />

+                                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                            <parameter name='format' value='json' />

+                                            <parameter name='httpMethod' value='DELETE' />

+                                            <parameter name="responsePrefix" value="mdsal-ar" />

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Error updating md-sal for contrail-route-allotted-resource"/>

+                        </set>

+                        <block>

+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="ROLLING BACK the create due to error"/>

+                            </record>

+                            <switch test='`$np-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="network-policy" 

+		key="network-policy.network-policy-id = $ar-assignments.contrail-id" >

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$contrail-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >

+                                            <parameter name='api-name' value='network-policy' />

+                                            <parameter name='api-action' value='delete' />

+                                            <parameter name='resp-prefix' value='contrailResp' />

+                                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />

+                                            <parameter name='default-project' value='`$cto-api.default-project`' />

+                                            <parameter name='default-domain' value='`$cto-api.default-domain`' />

+                                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />

+                                            <outcome value='success'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                            <outcome value='failure'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND

+			allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />

+                                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                            <parameter name='format' value='json' />

+                                            <parameter name='httpMethod' value='DELETE' />

+                                            <parameter name="responsePrefix" value="mdsal-ar" />

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block>

+                        <set>

+                            <parameter name="ar-created" value="true" />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='failure'>

+                    <block>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />

+                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />

+                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                            <parameter name='format' value='json' />

+                            <parameter name='httpMethod' value='DELETE' />

+                            <parameter name="responsePrefix" value="parent" />

+                            <outcome value='success'>

+                                <block></block>

+                            </outcome>

+                            <outcome value='failure'>

+                                <block></block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block></block>

+                            </outcome>

+                        </execute>

+                        <block>

+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="ROLLING BACK the create due to error"/>

+                            </record>

+                            <switch test='`$np-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="network-policy" 

+		key="network-policy.network-policy-id = $ar-assignments.contrail-id" >

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$contrail-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >

+                                            <parameter name='api-name' value='network-policy' />

+                                            <parameter name='api-action' value='delete' />

+                                            <parameter name='resp-prefix' value='contrailResp' />

+                                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />

+                                            <parameter name='default-project' value='`$cto-api.default-project`' />

+                                            <parameter name='default-domain' value='`$cto-api.default-domain`' />

+                                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />

+                                            <outcome value='success'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                            <outcome value='failure'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND

+			allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />

+                                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                            <parameter name='format' value='json' />

+                                            <parameter name='httpMethod' value='DELETE' />

+                                            <parameter name="responsePrefix" value="mdsal-ar" />

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />

+                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />

+                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                            <parameter name='format' value='json' />

+                            <parameter name='httpMethod' value='DELETE' />

+                            <parameter name="responsePrefix" value="parent" />

+                            <outcome value='success'>

+                                <block></block>

+                            </outcome>

+                            <outcome value='failure'>

+                                <block></block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block></block>

+                            </outcome>

+                        </execute>

+                        <block>

+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="ROLLING BACK the create due to error"/>

+                            </record>

+                            <switch test='`$np-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="network-policy" 

+		key="network-policy.network-policy-id = $ar-assignments.contrail-id" >

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$contrail-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >

+                                            <parameter name='api-name' value='network-policy' />

+                                            <parameter name='api-action' value='delete' />

+                                            <parameter name='resp-prefix' value='contrailResp' />

+                                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />

+                                            <parameter name='default-project' value='`$cto-api.default-project`' />

+                                            <parameter name='default-domain' value='`$cto-api.default-domain`' />

+                                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />

+                                            <outcome value='success'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                            <outcome value='failure'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-aai-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND

+			allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$ar-created`'>

+                                <outcome value=''></outcome>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />

+                                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                            <parameter name='format' value='json' />

+                                            <parameter name='httpMethod' value='DELETE' />

+                                            <parameter name="responsePrefix" value="mdsal-ar" />

+                                            <outcome value='failure'></outcome>

+                                            <outcome value='not-found'></outcome>

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error creating contrail route - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='cto-api.contrail-route-allotted-instance-id' value='`$tmp.ar.allotted-resource-id`' />

+            </set>

+            <set>

+                <parameter name='ctotmp.' value='' />

+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-deactivate.xml
new file mode 100644
index 0000000..c49f2eb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-deactivate.xml
@@ -0,0 +1,618 @@
+<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='api-contrail-route-topology-operation-deactivate' mode='sync'>
+        <block atomic="true">
+            <call module='GENERIC-RESOURCE-API' rpc='validate-api-contrail-route-input' mode='sync' ></call>
+            <set>
+                <parameter name='tmp.ar.allotted-resource-id' value='`$cto-api.contrail-route-allotted-resource-id`' />
+                <parameter name='tmp.ar.parent-service-instance-id' value='`$cto-api.parent-service-instance-id`' />
+            </set>
+            <set>
+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+                <parameter name="outputPath" value="tmp.ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+                            <outcome value='1'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='bk-cr-ar' value='$mdsal-ar.' />
+                                    </set>
+                                    <set>
+                                        <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />
+                                    </set>
+                                    <switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+                                        <outcome value='Active'>
+                                            <block></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="`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-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="404" />
+                                    <parameter name="error-message" value="Error: Contrail Route not found" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true">
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="404" />
+                            <parameter name="error-message" value="Error: Contrail Route not found" />
+                        </return>
+                    </block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='ar-assignments.' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`" />
+            </set>
+            <switch test='`$ar-assignments.source-network.network-id`'>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Error activating contrail route.  Source network not found" />
+                    </return>
+                </outcome>
+                <outcome value='Other'>
+                    <block></block>
+                </outcome>
+            </switch>
+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="l3-network" 
+		key="l3-network.network-id = $ar-assignments.source-network.network-id" 
+		local-only="false" 
+		pfx="aai.src-network">
+                <outcome value='not-found'>
+                    <return status='failure'>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar-assignments.source-network.network-id + ' from AnAI'`" />
+                    </return>
+                </outcome>
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar-assignments.source-network.network-id + ' from AnAI'`" />
+                    </return>
+                </outcome>
+                <outcome value='success'>
+                    <block atomic="true"></block>
+                </outcome>
+            </get-resource>
+            <set>
+                <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+                <parameter name='ctx_memory_result_key' value='virtual-network-fqdn-split' />
+                <parameter name='original_string' value='`$aai.src-network.contrail-network-fqdn`' />
+                <parameter name='regex' value=':' />
+            </execute>
+            <switch test='`$virtual-network-fqdn-split_length`'>
+                <outcome value='0'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value='Unable to determine network fq-name from contrail fqdn' />
+                    </return>
+                </outcome>
+                <outcome value='Other'>
+                    <set>
+                        <parameter name='src-virtual-network-fqname' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 1]`' />
+                    </set>
+                </outcome>
+            </switch>
+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                <parameter name='api-name' value='fqname-to-uuid' />
+                <parameter name='api-action' value='get' />
+                <parameter name='resp-prefix' value='uuidresp' />
+                <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                <parameter name='default-project' value='`$cto-api.default-project`' />
+                <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                <parameter name='fqname-type' value='virtual-network' />
+                <parameter name='policy-name' value='`$src-virtual-network-fqname`' />
+                <outcome value='success'>
+                    <block></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="Failed to find network uuid for Contrail to source network" />
+                    </return>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='src-uuid' value='`$uuidresp.uuid`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                <parameter name='api-name' value='network-policy' />
+                <parameter name='api-action' value='remove' />
+                <parameter name='resp-prefix' value='contrailResp' />
+                <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                <parameter name='default-project' value='`$cto-api.default-project`' />
+                <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                <parameter name='contrail-virtual-network-id' value='`$uuidresp.uuid`' />
+                <outcome value='success'>
+                    <block></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="Failed to remove policy in Contrail from source network" />
+                    </return>
+                </outcome>
+            </execute>
+            <switch test='`$ar-assignments.dest-network.network-id`'>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Error activating contrail route.  Dest network not found" />
+                    </return>
+                </outcome>
+                <outcome value='Other'>
+                    <block></block>
+                </outcome>
+            </switch>
+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="l3-network" 
+		key="l3-network.network-id = $ar-assignments.dest-network.network-id" 
+		local-only="false" 
+		pfx="aai.dest-network">
+                <outcome value='not-found'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+                        </return>
+                    </block>
+                </outcome>
+                <outcome value='failure'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+                        </return>
+                    </block>
+                </outcome>
+                <outcome value='success'>
+                    <block atomic="true"></block>
+                </outcome>
+            </get-resource>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>
+                <parameter name='ctx_memory_result_key' value='virtual-network-fqdn-split' />
+                <parameter name='original_string' value='`$aai.dest-network.contrail-network-fqdn`' />
+                <parameter name='regex' value=':' />
+            </execute>
+            <switch test='`$virtual-network-fqdn-split_length`'>
+                <outcome value='0'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='error-code' value='500' />
+                            <parameter name='error-message' value='Unable to determine network fq-name from contrail fqdn' />
+                        </return>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <set>
+                        <parameter name='dest-virtual-network-fqname' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 1]`' />
+                        <parameter name='dest-default-project' value='`$virtual-network-fqdn-split[$virtual-network-fqdn-split_length - 2]`' />
+                    </set>
+                </outcome>
+            </switch>
+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                <parameter name='api-name' value='fqname-to-uuid' />
+                <parameter name='api-action' value='get' />
+                <parameter name='resp-prefix' value='uuidresp' />
+                <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                <parameter name='default-project' value='`$dest-default-project`' />
+                <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                <parameter name='fqname-type' value='virtual-network' />
+                <parameter name='policy-name' value='`$dest-virtual-network-fqname`' />
+                <outcome value='success'>
+                    <block></block>
+                </outcome>
+                <outcome value='failure'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Failed to find network uuid for Contrail to destination network" />
+                        </return>
+                    </block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='dest-uuid' value='`$uuidresp.uuid`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                <parameter name='api-name' value='network-policy' />
+                <parameter name='api-action' value='remove' />
+                <parameter name='resp-prefix' value='contrailResp' />
+                <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                <parameter name='default-project' value='`$cto-api.default-project`' />
+                <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                <parameter name='contrail-virtual-network-id' value='`$uuidresp.uuid`' />
+                <outcome value='success'>
+                    <block></block>
+                </outcome>
+                <outcome value='failure'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Failed to remove policy in Contrail from dest network" />
+                        </return>
+                    </block>
+                </outcome>
+            </execute>
+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="network-policy:relationship-list" 
+	key="network-policy.network-policy-id = $ar-assignments.contrail-id and related-to = 'l3-network' " >
+                <outcome value='failure'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Failed to save network policy in AAI" />
+                        </return>
+                    </block>
+                </outcome>
+                <outcome value='not-found'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Failed to save network policy in AAI" />
+                        </return>
+                    </block>
+                </outcome>
+            </delete>
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="allotted-resource" 
+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+			service-instance.service-instance-id = $ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.parent-service-instance-id AND
+			allotted-resource.id = $tmp.ar.allotted-resource-id"
+        pfx='pfx' local-only='false' force='false'>
+                <parameter name="operational-status" value="out-of-service-path" />
+                <parameter name="orchestration-status" value="deactivated" />
+                <outcome value='failure'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="AAI failed" />
+                        </return>
+                    </block>
+                </outcome>
+                <outcome value='not-found'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="AAI failed" />
+                        </return>
+                    </block>
+                </outcome>
+            </update>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+                <parameter name="outputPath" value="tmp.current-time" />
+            </execute>
+            <set>
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block></block>
+                </outcome>
+                <outcome value='failure'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+                        </return>
+                    </block>
+                </outcome>
+                <outcome value='not-found'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$src-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='remove' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />
+                            <parameter name='default-project' value='`$cto-api.default-project`' />
+                            <parameter name='default-domain' value='`$cto-api.default-domain`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.fq-name`' />
+                            <parameter name='contrail-virtual-network-id' value='`$dest-uuid`' />
+                            <outcome value='Other'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource" />
+                        </return>
+                    </block>
+                </outcome>
+            </execute>
+            <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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-delete.xml
new file mode 100644
index 0000000..d1ef588
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_api-contrail-route-topology-operation-delete.xml
@@ -0,0 +1,332 @@
+<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='api-contrail-route-topology-operation-delete' mode='sync'>

+        <block atomic="true">

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value="__TIMESTAMP__"/>

+                <parameter name="field2" value="GENERIC-RESOURCE-API.api-contrail-route-topology-operation-delete"/>

+                <parameter name='field3' value='cto-api.parent-service-instance-id' />

+                <parameter name='field4' value='`$cto-api.parent-service-instance-id`' />

+                <parameter name='field5' value='cto-api.default-domain' />

+                <parameter name='field6' value='`$cto-api.default-domain`' />

+                <parameter name='field7' value='cto-api.port-mirror-configuration-instance-id' />

+                <parameter name='field8' value='`$cto-api.port-mirror-configuration-instance-id`' />

+                <parameter name='field9' value='cto-api.service-type' />

+                <parameter name='field10' value='`$cto-api.service-type`' />

+                <parameter name='field11' value='cto-api.source-network-role' />

+                <parameter name='field12' value='`$cto-api.source-network-fole`' />

+                <parameter name='field13' value='cto-api.collector-network-role' />

+                <parameter name='field14' value='`$cto-api.collector-network-4ole`' />

+                <parameter name='field15' value='cto-api.default-project' />

+                <parameter name='field16' value='`$cto-api.default-project`' />

+                <parameter name='field17' value='cto-api.cloud-region-id' />

+                <parameter name='field18' value='`$cto-api.cloud-region-id`' />

+                <parameter name='field19' value='cto-api.cloud-owner' />

+                <parameter name='field20' value='`$cto-api.cloud-owner`' />

+                <parameter name='field21' value='cto-api.isTest' />

+                <parameter name='field22' value='`$cto-api.isTest`' />

+                <parameter name='field23' value='service-data.service-information.global-customer-id' />

+                <parameter name='field24' value='`$service-data.service-information.global-customer-id`' />

+            </record>

+            <set>

+                <parameter name="ctotmp." value="" />

+            </set>

+            <set>

+                <parameter name="ctotmp.action" value="delete" />

+                <parameter name="ctotmp.config-count" value="0" />

+                <parameter name="ctotmp.config-found" value="true" />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='validate-api-contrail-route-input' mode='sync' ></call>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND

+			allotted-resource.id = $cto-api.contrail-route-allotted-resource-id"

+        pfx='aai.ar' local-only='false' >

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="AAI failed" />

+                    </return>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <switch test='`$cto-api.rollback-flag`'>

+                            <outcome value='true'>

+                                <block atomic="true">

+                                    <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>

+                            </outcome>

+                            <outcome value='false'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="AAI failed" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true"></block>

+                </outcome>

+            </get-resource>

+            <for silentFailure='true' index='ridx' start='0' end="`$aai.ar.relationship-list.relationship_length`" >

+                <for silentFailure='false' index='rdidx' start='0' end="`$aai.ar.relationship-list.relationship[$ridx].relationship-data_length`" >

+                    <switch test='`$aai.ar.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>

+                        <outcome value='configuration.configuration-id'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='ctotmp.config-count' value='`$ctotmp.config-count+1`' />

+                                </set>

+                                <switch test='`$aai.ar.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value == $cto-api.configuration-id`'>

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='ctotmp.config-found' value='true' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                    </switch>

+                </for>

+            </for>

+            <switch test="`$ctotmp.config-count > 1`">

+                <outcome value='true'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="AAI Allotted Resource is tied to more than one configuration object" />

+                        </return>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test="`$ctotmp.config-count == 1 and $ctotmp.config-found == 'true'`">

+                <outcome value='false'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="AAI Allotted resource is not tied to configuration object" />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='true'>

+                    <block atomic="true"></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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>

+                <parameter name="outputPath" value="tmp.ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$cto-api.contrail-route-allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block atomic="true">

+                        <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>

+                            <outcome value='1'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='bk-cr-ar' value='$mdsal-ar.' />

+                                    </set>

+                                    <set>

+                                        <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="Error: Contrail Route not found in md-sal" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="404" />

+                            <parameter name="error-message" value="Error: Contrail Route not found in md-sal" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='ar-assignments.' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`" />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >

+                <parameter name='api-name' value='network-policy' />

+                <parameter name='api-action' value='delete' />

+                <parameter name='resp-prefix' value='contrailResp' />

+                <parameter name='cloud-region-id' value='`$cto-api.cloud-region-id`' />

+                <parameter name='default-project' value='`$cto-api.default-project`' />

+                <parameter name='default-domain' value='`$cto-api.default-domain`' />

+                <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />

+                <outcome value='success'>

+                    <block></block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block></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="Failed to delete policy in Contrail" />

+                    </return>

+                </outcome>

+            </execute>

+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="network-policy" 

+		key="network-policy.network-policy-id = $ar-assignments.contrail-id" >

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Failed to delete network policy in AAI" />

+                    </return>

+                </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="Failed to delete network policy in AAI" />

+                    </return>

+                </outcome>

+            </delete>

+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND

+			allotted-resource.id = $cto-api.contrail-route-allotted-resource-id">

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="AAI failed" />

+                    </return>

+                </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="AAI failed" />

+                    </return>

+                </outcome>

+            </delete>

+            <for silentFailure='true' index='snidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >

+                <block atomic="true">

+                    <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$sdix].allotted-resource-id == $cto-api.contrail-route-allotted-resource-id`'>

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="tmp.sdidx" value="`$snidx`"/>

+                                </set>

+                                <break/>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>

+                <outcome value='1'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="service-data.consumed-allotted-resources." value=""/>

+                        </set>

+                        <set>

+                            <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource_length" value="0"/>

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="tmp.new_length" value="`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`"/>

+                        </set>

+                        <for silentFailure='true' index='snidx' start='`$tmp.sdidx + 1`' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="tmp.newidx" value="`$snidx - 1`"/>

+                                </set>

+                                <set>

+                                    <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.newidx]." value="$service-data.consumed-allotted-resources.consumed-allotted-resource[$snidx]." />

+                                </set>

+                            </block>

+                        </for>

+                        <set>

+                            <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource_length" value="`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`"/>

+                        </set>

+                        <set>

+                            <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.new_length]." value=""/>

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='DELETE' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for contrail-route-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for contrail-route-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+                <parameter name='contrail-route-object-path' value="`$tmp.ar.self-link`"/>

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $contrail-route-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_assign-vlan-tags.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_assign-vlan-tags.xml
new file mode 100755
index 0000000..f23891c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_assign-vlan-tags.xml
@@ -0,0 +1,441 @@
+<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='assign-vlan-tags' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.vlan-vnics.' value='' />

+            </set>

+            <set>

+                <parameter name='tmp.vlan-vnics.'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-vnics.`' />

+            </set>

+            <set>

+                <parameter name='total-subs' value='`$get-data-from-policy-output.precreate-sub-intf-num`' />

+            </set>

+            <switch test='`$total-subs &gt; ( $tmp.vlan-vnics.vlan-vnic_length * $get-data-from-policy-output.max-num-sub-intf )`'>

+                <outcome value='true'>

+                    <set>

+                        <parameter name='total-subs' value='`$tmp.vlan-vnics.vlan-vnic_length * $get-data-from-policy-output.max-num-sub-intf`' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='cur-tag-id' value='`$get-data-from-policy-output.vlan-tag-start + $get-data-from-policy-output.vlan-tag-offset`' />

+            </set>

+            <set>

+                <parameter name='sub-index' value='0' />

+                <parameter name='vnic-index' value='0' />

+            </set>

+            <while test='`$total-subs &gt; 0`'>

+                <block atomic="true">

+                    <set>

+                        <parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].vlan-tag-id'

+  value='`$cur-tag-id`' />

+                    </set>

+                    <set>

+                        <parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length'

+  value='`$sub-index + 1`' />

+                    </set>

+                    <set>

+                        <parameter name='cur-tag-id' value='`$cur-tag-id + 1`' />

+                    </set>

+                    <set>

+                        <parameter name='vnic-index' value='`$vnic-index + 1`' />

+                    </set>

+                    <switch test='`$vnic-index == $tmp.vlan-vnics.vlan-vnic_length`'>

+                        <outcome value='true'>

+                            <block>

+                                <set>

+                                    <parameter name='vnic-index' value='0' />

+                                </set>

+                                <set>

+                                    <parameter name='sub-index' value='`$sub-index + 1`' />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <set>

+                        <parameter name='total-subs' value='`$total-subs - 1`' />

+                    </set>

+                </block>

+            </while>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+  resource="instance-groups" 

+  key="instance-group.instance-group-function = $db.group-uuids[$group-index].network-collection-function

+    AND instance-group.instance-group-type = 'L3-NETWORK'"

+  pfx='aai.instance-group' local-only='false' >

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message"

+      value="`'Unable to find AAI instance-group for instance-group-function '

+        + $db.group-uuids[$group-index].network-collection-function

+        + ' and instance-group-type L3-NETWORK'`" />

+                    </return>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message"

+      value="`'System error getting AAI instance-group for instance-group-function '

+        + $db.group-uuids[$group-index].network-collection-function

+        + ' and instance-group-type L3-NETWORK'`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <set>

+                <parameter name='found-instance-group' value='false' />

+            </set>

+            <for index='ig-index' start='0' end='`$aai.instance-group.instance-group_length`' >

+                <for index='rel-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship_length`' >

+                    <for index='reldata-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data_length`' >

+                        <switch test="`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-key

+  == 'service-instance.service-instance-id'`">

+                            <outcome value='true'>

+                                <switch test='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-value

+  == $service-data.service-information.service-instance-id`'>

+                                    <outcome value='true'>

+                                        <block>

+                                            <set>

+                                                <parameter name='found-instance-group' value='true' />

+                                            </set>

+                                            <set>

+                                                <parameter name='aai-ig-index' value='`$ig-index`' />

+                                            </set>

+                                            <break/>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                        </switch>

+                    </for>

+                </for>

+            </for>

+            <switch test='`$found-instance-group`'>

+                <outcome value='false'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message"

+      value="`'Unable to find AAI instance-group for instance-group-function '

+        + $db.group-uuids[$group-index].vfc-instance-group-function

+        + ' and instance-group-type VNFC'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='network-instance-group-id' value='`$aai.instance-group.instance-group[$aai-ig-index].id`' />

+                <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id'

+  value='`$aai.instance-group.instance-group[$aai-ig-index].id`' />

+            </set>

+            <set>

+                <parameter name='network-instance-group-index' value='-1' />

+            </set>

+            <for silentFailure='true' index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >

+                <switch test='`$network-instance-group-id

+== $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>

+                    <outcome value='true'>

+                        <block>

+                            <set>

+                                <parameter name='network-instance-group-index' value='`$nig-index`' />

+                            </set>

+                            <break/>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$network-instance-group-index`'>

+                <outcome value='-1'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value="`'Unable to find network instance group ID '

+  + $network-instance-group-id

+  + ' in network-instance-groups'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='vnic-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic_length`' >

+                <for index='sub-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >

+                    <block atomic="true">

+                        <set>

+                            <parameter name='network-index' value='-1' />

+                            <parameter name='unassigned-network-index' value='-1' />

+                        </set>

+                        <for index='n-index' start='0' end='`$service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network_length`' >

+                            <switch test='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].vlan-tag-id

+  == $service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$n-index].vlan-tag-id`'>

+                                <outcome value='true'>

+                                    <block>

+                                        <set>

+                                            <parameter name='network-index' value='`$n-index`' />

+                                        </set>

+                                        <break/>

+                                    </block>

+                                </outcome>

+                                <outcome value='false'>

+                                    <switch test="`$unassigned-network-index`">

+                                        <outcome value='-1'>

+                                            <switch test='`$service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$n-index].network-status`'>

+                                                <outcome value='unassigned'>

+                                                    <set>

+                                                        <parameter name='unassigned-network-index' value='`$n-index`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </outcome>

+                                    </switch>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$network-index`'>

+                            <outcome value='-1'>

+                                <switch test='`$unassigned-network-index`'>

+                                    <outcome value='-1'>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500' />

+                                            <parameter name='error-message' value="L3-network not found" />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block>

+                                            <set>

+                                                <parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-id'

+  value='`$service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$unassigned-network-index].network-id`' />

+                                            </set>

+                                            <set>

+                                                <parameter name='service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$unassigned-network-index].vlan-tag-id'

+  value='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].vlan-tag-id`' />

+                                                <parameter name='service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$unassigned-network-index].network-status'

+  value='assigned' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-id'

+  value='`$service-data.network-instance-groups.network-instance-group[$network-instance-group-index].networks.network[$network-index].network-id`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                    </block>

+                </for>

+            </for>

+            <for index='vnic-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic_length`' >

+                <for index='sub-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >

+                    <block atomic="true">

+                        <for index='n-index' start='0' end='`$service-data.networks.network_length`' >

+                            <switch test='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-id

+  == $service-data.networks.network[$n-index].network-id`'>

+                                <outcome value='true'>

+                                    <block>

+                                        <set>

+                                            <parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-name'

+  value='`$service-data.networks.network[$n-index].network-data.network-topology.network-topology-identifier-structure.network-name`' />

+                                            <parameter name='tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-role'

+  value='`$service-data.networks.network[$n-index].network-data.network-topology.network-topology-identifier-structure.network-role`' />

+                                        </set>

+                                        <break/>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </for>

+            </for>

+            <switch test='`$tmp.vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-name`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value="`'Failed to find a network name for network id '

+  + $service-data.networks.network[$n-index].network-id`" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='found-collection' value='false' />

+            </set>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection_length`' >

+                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$idx].network-instance-group-function

+  == $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function`'>

+                    <outcome value='true'>

+                        <block>

+                            <set>

+                                <parameter name='found-collection' value='true' />

+                            </set>

+                            <set>

+                                <parameter name='vnc-index' value='`$idx`' />

+                            </set>

+                            <break/>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$found-collection`'>

+                <outcome value='false'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value="`'Unable to find vnf-network-collection for network-instance-group-function '

+  + $tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='found-network-instance-group' value='false' />

+            </set>

+            <for index='idx' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >

+                <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id

+  == $service-data.network-instance-groups.network-instance-group[$idx].network-instance-group-id`'>

+                    <outcome value='true'>

+                        <block>

+                            <set>

+                                <parameter name='found-network-instance-group' value='true' />

+                            </set>

+                            <set>

+                                <parameter name='nig-index' value='`$idx`' />

+                            </set>

+                            <break/>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$found-network-instance-group`'>

+                <outcome value='false'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value="`'Unable to find network-instance-group for network-instance-group-id '

+  + $tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-id`" />

+                    </return>

+                </outcome>

+            </switch>

+            <for silentFailure='true' index='subnet-index' start='0'

+  end='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets_length`' >

+                <switch test='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets[$subnet-index].ip-version`'>

+                    <outcome value='ipv4'>

+                        <block>

+                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$vnc-index].vnf-floating-ip.ip-addresses.vipv4-address`'>

+                                <outcome value=''>

+                                    <block>

+                                        <set>

+                                            <parameter name='tmp.vt-ip.network-instance-group-id'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-id`' />

+                                            <parameter name='tmp.vt-ip.network-instance-group-function'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`' />

+                                            <parameter name='tmp.vt-ip.nf-role'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`' />

+                                            <parameter name='tmp.vt-ip.vm-type'

+  value='`$db.group-uuids[$group-index].vm-type`' />

+                                            <parameter name='tmp.vt-ip.vnfc-name'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`' />

+                                            <parameter name='tmp.vt-ip.type'

+  value='VIP' />

+                                            <parameter name='tmp.vt-ip.vf-module-id'

+  value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                            <parameter name='tmp.vt-ip.ip-version'

+  value='ipv4' />

+                                            <parameter name='tmp.vt-ip.network-id'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[0].vnic-sub-interface.sub-interface-network-data[0].network-id`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-ip-addresses' mode='sync' >

+                                            <outcome value='failure'>

+                                                <return status='failure'></return>

+                                            </outcome>

+                                        </call>

+                                        <set>

+                                            <parameter name='eipam-ip-block.plans_length' value='2' />

+                                            <parameter name='eipam-ip-block.plans[0].plan-name' value='plan-1' />

+                                            <parameter name='eipam-ip-block.plans[0].requests_length' value='1' />

+                                            <parameter name='eipam-ip-block.plans[0].requests[0].client-key'

+  value='vm-type-1|zmtn6nf-code-16code-1001|network-role-1|subnet-role-1|FIXED|4|1' />

+                                            <parameter name='eipam-ip-block.plans[0].requests[0].ip-type' value='FIXED' />

+                                            <parameter name='eipam-ip-block.plans[0].requests[0].ip-prefix' value="`'34.52.87.1' + $counter`" />

+                                            <parameter name='eipam-ip-block.plans[0].requests[0].ip-version' value='4' />

+                                        </set>

+                                        <set>

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$vnc-index].vnf-floating-ip.ip-addresses.vipv4-address'

+  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <for index='vlan-vnic-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic_length`' >

+                                <for index='sub-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic[$vlan-vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >

+                                    <set>

+                                        <parameter name='tmp.vlan-vnics.vlan-vnic[$vlan-vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].floating-ips.floating-ip-v4'

+  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />

+                                    </set>

+                                </for>

+                            </for>

+                        </block>

+                    </outcome>

+                    <outcome value='ipv6'>

+                        <block>

+                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$vnc-index].vnf-floating-ip.ip-addresses.vipv6-address`'>

+                                <outcome value=''>

+                                    <block>

+                                        <set>

+                                            <parameter name='tmp.vt-ip.network-instance-group-id'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-id`' />

+                                            <parameter name='tmp.vt-ip.network-instance-group-function'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`' />

+                                            <parameter name='tmp.vt-ip.nf-role'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`' />

+                                            <parameter name='tmp.vt-ip.vm-type'

+  value='`$db.group-uuids[$group-index].vm-type`' />

+                                            <parameter name='tmp.vt-ip.vnfc-name'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`' />

+                                            <parameter name='tmp.vt-ip.type'

+  value='VIP' />

+                                            <parameter name='tmp.vt-ip.vf-module-id'

+  value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                            <parameter name='tmp.vt-ip.ip-version'

+  value='ipv6' />

+                                            <parameter name='tmp.vt-ip.network-id'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[0].vnic-sub-interface.sub-interface-network-data[0].network-id`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-ip-addresses' mode='sync' >

+                                            <outcome value='failure'>

+                                                <return status='failure'></return>

+                                            </outcome>

+                                        </call>

+                                        <set>

+                                            <parameter name='eipam-ip-block.plans_length' value='2' />

+                                            <parameter name='eipam-ip-block.plans[0].plan-name' value='plan-1' />

+                                            <parameter name='eipam-ip-block.plans[0].requests_length' value='6' />

+                                            <parameter name='eipam-ip-block.plans[0].requests[0].client-key'

+  value='vm-type-1|zmtn6nf-code-16code-1001|network-role-1|subnet-role-1|FIXED|4|1' />

+                                            <parameter name='eipam-ip-block.plans[0].requests[0].ip-type' value='FIXED' />

+                                            <parameter name='eipam-ip-block.plans[0].requests[0].ip-prefix' value="`'cafe:1111' + $counter`" />

+                                            <parameter name='eipam-ip-block.plans[0].requests[0].ip-version' value='6' />

+                                        </set>

+                                        <set>

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$vnc-index].vnf-floating-ip.ip-addresses.vipv6-address'

+  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <for index='vlan-vnic-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic_length`' >

+                                <for index='sub-index' start='0' end='`$tmp.vlan-vnics.vlan-vnic[$vlan-vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >

+                                    <set>

+                                        <parameter name='tmp.vlan-vnics.vlan-vnic[$vlan-vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].floating-ips.floating-ip-v6'

+  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />

+                                    </set>

+                                </for>

+                            </for>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+            <set>

+                <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-vnics.'

+  value='`$tmp.vlan-vnics.`' />

+            </set>

+            <return status='success'></return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_auto-ip-assignment.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_auto-ip-assignment.xml
new file mode 100644
index 0000000..77fdb44
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_auto-ip-assignment.xml
@@ -0,0 +1,1593 @@
+<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='auto-ip-assignment' mode='sync'>

+        <block atomic="true">

+            <switch test='`$auto-ip-assignment-input.aic-cloud-region`'>

+                <outcome value=''>

+                    <return status="failure">

+                        <parameter name="ack-final" value="Y" />

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="auto-ip-assignment-input.aic-cloud-region is null" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$auto-ip-assignment-input.vf-module.model-customization-uuid`'>

+                <outcome value=''>

+                    <return status="failure">

+                        <parameter name="ack-final" value="Y" />

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="auto-ip-assignment-input.vf-module.model-customization-uuid is null" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$auto-ip-assignment-input.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="auto-ip-assignment-input.vf-module-id is null" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$auto-ip-assignment-input.service-instance-id`'>

+                <outcome value=''>

+                    <return status="failure">

+                        <parameter name="ack-final" value="Y" />

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="auto-ip-assignment-input.service-instance-id is null" />

+                    </return>

+                </outcome>

+            </switch>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODULE_MODEL WHERE customization_uuid = $auto-ip-assignment-input.vf-module.model-customization-uuid'

+  pfx='db1.vf-module-model'>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />

+                    </return>

+                </outcome>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="`'No model found for VF module customization UUID ' + $vnf-topology-operation-input.vnf-request-information.model-customization-uuid`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+	key='SELECT * from VF_MODULE_TO_VFC_MAPPING WHERE vf_module_customization_uuid = $auto-ip-assignment-input.vf-module.model-customization-uuid 

+		AND vm_count > 0'

+  pfx='db1.vf-module-to-vfc-mapping[]'>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error reading VF_MODULE_TO_VFC_MAPPING table" />

+                    </return>

+                </outcome>

+                <outcome value='not-found'>

+                    <set>

+                        <parameter name='db1.vf-module-to-vfc-mapping_length' value='0' />

+                    </set>

+                </outcome>

+            </get-resource>

+            <block atomic='true'>

+                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="cloud-region" 

+		key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND 

+		     cloud-region.cloud-region-id = $auto-ip-assignment-input.aic-cloud-region AND

+		     depth = '0'"

+        pfx='aai.cloud-region' >

+                    <outcome value='not-found'>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="404" />

+                            <parameter name="error-message" value="`'aic-cloud-region, '+ $generate-fqpn-input.aic-cloud-region + ' not found in AAI'`" />

+                        </return>

+                    </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 retrieving cloud region from AAI" />

+                        </return>

+                    </outcome>

+                </get-resource>

+                <switch test='`$aai.cloud-region.relationship-list.relationship_length`'>

+                    <outcome value='0'>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="cloud-region missing relationships in AAI" />

+                        </return>

+                    </outcome>

+                    <outcome value=''>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="cloud-region missing relationships in AAI" />

+                        </return>

+                    </outcome>

+                </switch>

+                <for index='ridx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >

+                    <for silentFailure='false' index='rdidx' start='0' end="`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`" >

+                        <switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>

+                            <outcome value='complex.physical-location-id'>

+                                <block atomic='true'>

+                                    <block>

+                                        <set>

+                                            <parameter name='tmp.aic-clli' value='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`' />

+                                        </set>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>

+                                            <parameter name='result' value='tmp.truncated.clli8' />

+                                            <parameter name='string' value='`$tmp.aic-clli`' />

+                                            <parameter name='begin-index' value='0' />

+                                            <parameter name='end-index' value='8' />

+                                        </execute>

+                                        <set>

+                                            <parameter name='generate-FQPN-input.location-clli8' value='`$tmp.truncated.clli8`' />

+                                        </set>

+                                    </block>

+                                    <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="complex" 

+		key="complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"

+    pfx='aai.complex' >

+                                        <outcome value='not-found'>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="Complex not found in AAI" />

+                                            </return>

+                                        </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 retrieving complex from AAI" />

+                                            </return>

+                                        </outcome>

+                                    </get-resource>

+                                    <set>

+                                        <parameter name='generate-FQPN-input.complex-region' value='`$aai.complex.region`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </for>

+                </for>

+                <set>

+                    <parameter name='generate-FQPN-input.aic-cloud-region' 

+	value='`$auto-ip-assignment-input.aic-cloud-region`' />

+                </set>

+            </block>

+            <set>

+                <parameter name='tmp.network-role-query-results_length' value='0' />

+            </set>

+            <set>

+                <parameter name='eipam-ip-block.plans_length' value = '0' />

+                <parameter name='query-aai-l3-network-by-network-role-output.' value = '' />

+            </set>

+            <set>

+                <parameter name='qridx' value = '0' />

+            </set>

+            <set>

+                <parameter name='pidx' value = '0' />

+            </set>

+            <for index='vm-type-index' start='0' end='`$db1.vf-module-to-vfc-mapping_length`' >

+                <block atomic="true">

+                    <set>

+                        <parameter name='vm-type-loop' value = 'START' />

+                        <parameter name='tmp.vm-type' value = '`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />

+                    </set>

+                    <set>

+                        <parameter name='tmp.db1.' value = '' />

+                    </set>

+                    <set>

+                        <parameter name='db1.vfc-to-network-role-mapping.' value = '' />

+                    </set>

+                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+	key='SELECT * from VFC_TO_NETWORK_ROLE_MAPPING WHERE vfc_customization_uuid = $db1.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid 

+		AND (ipv4_count > 0 OR ipv6_count > 0 OR ipv4_floating_count > 0 OR ipv6_floating_count > 0)'

+	pfx='db1.vfc-to-network-role-mapping[]'>

+                        <outcome value='not-found'>

+                            <set>

+                                <parameter name='db1.vfc-to-network-role-mapping_length' value='0' />

+                            </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 reading VFC_TO_NETWORK_ROLE_MAPPING table" />

+                            </return>

+                        </outcome>

+                    </get-resource>

+                    <set>

+                        <parameter name='tmp.qresult.network-role' value = '`$tmp.network-role-query-results[$q].l3-network.network-role`' />

+                    </set>

+                    <for index='network-role-index' start='0' end='`$db1.vfc-to-network-role-mapping_length`' >

+                        <block atomic="true">

+                            <set>

+                                <parameter name='network-role-loop' value = 'START' />

+                            </set>

+                            <set>

+                                <parameter name='tmp.plan-index-to-be-incremented' value='false' />

+                            </set>

+                            <set>

+                                <parameter name='tmp.network-role.found' value = 'false' />

+                            </set>

+                            <set>

+                                <parameter name='tmp.db1.network-role' value = '`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                            </set>

+                            <set>

+                                <parameter name='tmp.db1.network-role-tag' value = '`$db1.vfc-to-network-role-mapping[$network-role-index].network-role-tag`' />

+                            </set>

+                            <block atomic='true'>

+                                <block>

+                                    <for index='q' start='0' end='`$tmp.network-role-query-results_length`' >

+                                        <set>

+                                            <parameter name='tmp.qresult.network-role' value = '`$tmp.network-role-query-results[$q].l3-network.network-role`' />

+                                        </set>

+                                        <switch test='`$tmp.qresult.network-role == $tmp.db1.network-role`' >

+                                            <outcome value='true'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='generate-FQPN-input.network-name' 

+	value='`$tmp.network-role-query-results[$q].l3-network.network-name`' />

+                                                        <parameter name='generate-FQPN-input.network-id' 

+	value='`$tmp.network-role-query-results[$q].l3-network.network-id`' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='tmp.network-role.found' value = 'true' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='query-results-found-index' value = '`$q`' />

+                                                    </set>

+                                                    <return status='failure'></return>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                    <return status='success'></return>

+                                </block>

+                                <switch test='`$tmp.network-role.found`'>

+                                    <outcome value='false'>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name='query-aai-l3-network-by-network-role-input.aic-cloud-region' 

+	value='`$auto-ip-assignment-input.aic-cloud-region`' />

+                                                <parameter name='query-aai-l3-network-by-network-role-input.service-instance-id' 

+	value='`$auto-ip-assignment-input.service-instance-id`' />

+                                                <parameter name='query-aai-l3-network-by-network-role-input.network-role' 

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                <!--

+filter options: service-instance-id, aic-cloud-region, null, Other (or any string)

+    - null or Other will filter by aic-cloud-region first, then service-instance-id

+<parameter name='query-aai-l3-network-by-network-role-input.filter' 

+	value='service-instance-id' />

+-->

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='query-aai-l3-network-by-network-role' mode='sync' >

+                                                <outcome value='failure'>

+                                                    <return status="failure">

+                                                        <parameter name="ack-final" value="Y" />

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="error-message" value="`'An error occured while querying AAI to retrieve l3-network by network-role: ' + $error-message`" />

+                                                    </return>

+                                                </outcome>

+                                            </call>

+                                            <set>

+                                                <parameter name='generate-FQPN-input.network-name' 

+	value='`$query-aai-l3-network-by-network-role-output.l3-network.network-name`' />

+                                                <parameter name='generate-FQPN-input.network-id' 

+	value='`$query-aai-l3-network-by-network-role-output.l3-network.network-id`' />

+                                            </set>

+                                            <set>

+                                                <parameter name='tmp.network-role-query-results[$qridx].l3-network.' 

+	value='`$query-aai-l3-network-by-network-role-output.l3-network.`' />

+                                                <parameter name='tmp.network-role-query-results[$qridx].l3-network.network-role-tag' 

+	value='`$tmp.db1.network-role-tag`' />

+                                                <!--

+<parameter name='tmp.network-role-query-results[$qridx].network-role' 

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' /><parameter name='tmp.network-role-query-results[$qridx].network-name' 

+	value='`$query-aai-l3-network-by-network-role-output.l3-network.network-name`' />

+-->

+                                            </set>

+                                            <set>

+                                                <parameter name='eipam-ip-block.plans[$pidx].l3-network.' 

+	value='query-aai-l3-network-by-network-role-output.l3-network.' />

+                                            </set>

+                                            <set>

+                                                <parameter name='qridx' value='`$qridx + 1`' />

+                                            </set>

+                                            <set>

+                                                <parameter name='tmp.network-role-query-results_length' value='`$qridx`' />

+                                            </set>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='ridx' value='0' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='eipam-ip-block.plans[$pidx].network-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                    <parameter name='eipam-ip-block.plans[$pidx].subnet-role'

+    value="`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`" />

+                                                </set>

+                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>

+                                                    <outcome value='4'>

+                                                        <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`'>

+                                                            <outcome value='N'>

+                                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-count &gt; 0`'>

+                                                                    <outcome value='true'>

+                                                                        <block atomic='true'>

+                                                                            <set>

+                                                                                <parameter name='generate-FQPN-input.plan-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />

+                                                                                <parameter name='generate-FQPN-input.network-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                <parameter name='generate-FQPN-input.subnet-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                <parameter name='generate-FQPN-input.vrf-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-vrf-name`' />

+                                                                                <!--

+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />

+-->

+                                                                            </set>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >

+                                                                                <outcome value='failure'>

+                                                                                    <return status="failure">

+                                                                                        <parameter name="ack-final" value="Y" />

+                                                                                        <parameter name="error-code" value="500"/>

+                                                                                        <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />

+                                                                                    </return>

+                                                                                </outcome>

+                                                                            </call>

+                                                                            <set>

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].plan-name'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].address-family'

+    value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`" />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='tmp.plan-index-to-be-incremented' value='true' />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='tmp.client-key.seq' value='0' />

+                                                                            </set>

+                                                                            <for index='vm-index' start='0' end='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >

+                                                                                <for index='ipv4-index' start='0' end='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-count`' >

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`' />

+                                                                                            <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='tmp.client-key.seq' value='`$tmp.client-key.seq + 1`' />

+                                                                                        </set>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'

+    value='generate-FQPN-output.' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'

+    value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'

+    value='FIXED' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                            </set>

+                                                                                            <block>

+                                                                                                <switch test='`$tmp.client-key.seq &lt; 10`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='tmp.client-key.padding' value='000' />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='false'>

+                                                                                                        <switch test='`$tmp.client-key.seq &lt; 100`'>

+                                                                                                            <outcome value='true'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='tmp.client-key.padding' value='00' />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                            <outcome value='false'>

+                                                                                                                <switch test='`$tmp.client-key.seq &lt; 1000`'>

+                                                                                                                    <outcome value='true'>

+                                                                                                                        <set>

+                                                                                                                            <parameter name='tmp.client-key.padding' value='0' />

+                                                                                                                        </set>

+                                                                                                                    </outcome>

+                                                                                                                    <outcome value='false'>

+                                                                                                                        <switch test='`$tmp.client-key.seq &lt; 10000`'>

+                                                                                                                            <outcome value='true'>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='tmp.client-key.padding' value='' />

+                                                                                                                                </set>

+                                                                                                                            </outcome>

+                                                                                                                        </switch>

+                                                                                                                    </outcome>

+                                                                                                                </switch>

+                                                                                                            </outcome>

+                                                                                                        </switch>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'

+   value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +

+			$tmp.client-key.padding + $tmp.client-key.seq`"/>

+                                                                                                <!-- rdn|zrdm3amdns02testdns001|data|static|VIP|4|0001 -->

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'

+   value='`$auto-ip-assignment-input.vf-module-id`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='ridx' value='`$ridx + 1`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </block>

+                                                                                </for>

+                                                                            </for>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                </switch>

+                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>

+                                                    <outcome value='6'>

+                                                        <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`'>

+                                                            <outcome value='N'>

+                                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-count &gt; 0`'>

+                                                                    <outcome value='true'>

+                                                                        <block atomic='true'>

+                                                                            <set>

+                                                                                <parameter name='generate-FQPN-input.plan-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />

+                                                                                <parameter name='generate-FQPN-input.network-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                <parameter name='generate-FQPN-input.subnet-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                <parameter name='generate-FQPN-input.vrf-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-vrf-name`' />

+                                                                                <!--

+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />

+-->

+                                                                            </set>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >

+                                                                                <outcome value='failure'>

+                                                                                    <return status="failure">

+                                                                                        <parameter name="ack-final" value="Y" />

+                                                                                        <parameter name="error-code" value="500"/>

+                                                                                        <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />

+                                                                                    </return>

+                                                                                </outcome>

+                                                                            </call>

+                                                                            <set>

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].plan-name'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].address-family'

+    value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`" />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='tmp.plan-index-to-be-incremented' value='true' />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='tmp.client-key.seq' value='0' />

+                                                                            </set>

+                                                                            <for index='vm-index' start='0' end='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >

+                                                                                <for index='ipv6-index' start='0' end='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-count`' >

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`' />

+                                                                                            <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='tmp.client-key.seq' value='`$tmp.client-key.seq + 1`' />

+                                                                                        </set>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'

+    value='generate-FQPN-output.' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'

+    value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'

+    value='FIXED' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                            </set>

+                                                                                            <block>

+                                                                                                <switch test='`$tmp.client-key.seq &lt; 10`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='tmp.client-key.padding' value='000' />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='false'>

+                                                                                                        <switch test='`$tmp.client-key.seq &lt; 100`'>

+                                                                                                            <outcome value='true'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='tmp.client-key.padding' value='00' />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                            <outcome value='false'>

+                                                                                                                <switch test='`$tmp.client-key.seq &lt; 1000`'>

+                                                                                                                    <outcome value='true'>

+                                                                                                                        <set>

+                                                                                                                            <parameter name='tmp.client-key.padding' value='0' />

+                                                                                                                        </set>

+                                                                                                                    </outcome>

+                                                                                                                    <outcome value='false'>

+                                                                                                                        <switch test='`$tmp.client-key.seq &lt; 10000`'>

+                                                                                                                            <outcome value='true'>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='tmp.client-key.padding' value='' />

+                                                                                                                                </set>

+                                                                                                                            </outcome>

+                                                                                                                        </switch>

+                                                                                                                    </outcome>

+                                                                                                                </switch>

+                                                                                                            </outcome>

+                                                                                                        </switch>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'

+   value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +

+			$tmp.client-key.padding + $tmp.client-key.seq`"/>

+                                                                                                <!-- rdn|zrdm3amdns02testdns001|data|static|VIP|4|0001 -->

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'

+   value='`$auto-ip-assignment-input.vf-module-id`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='ridx' value='`$ridx + 1`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </block>

+                                                                                </for>

+                                                                            </for>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                </switch>

+                                                <switch test='`$tmp.plan-index-to-be-incremented`'>

+                                                    <outcome value='true'>

+                                                        <block>

+                                                            <set>

+                                                                <parameter name='pidx' value='`$pidx + 1`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name="eipam-ip-block.plans_length" value="`$pidx`"/>

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='true'>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name='eipam-ip-block.plans[$pidx].l3-network.' 

+	value='tmp.network-role-query-results[$query-results-found-index].l3-network.' />

+                                            </set>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='ridx' value='0' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='eipam-ip-block.plans[$pidx].network-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                    <parameter name='eipam-ip-block.plans[$pidx].subnet-role'

+    value="`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`" />

+                                                </set>

+                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>

+                                                    <outcome value='4'>

+                                                        <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`'>

+                                                            <outcome value='N'>

+                                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-count &gt; 0`'>

+                                                                    <outcome value='true'>

+                                                                        <block atomic='true'>

+                                                                            <set>

+                                                                                <parameter name='generate-FQPN-input.plan-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />

+                                                                                <parameter name='generate-FQPN-input.network-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                <parameter name='generate-FQPN-input.subnet-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                <parameter name='generate-FQPN-input.vrf-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-vrf-name`' />

+                                                                                <!--

+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />

+-->

+                                                                            </set>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >

+                                                                                <outcome value='failure'>

+                                                                                    <return status="failure">

+                                                                                        <parameter name="ack-final" value="Y" />

+                                                                                        <parameter name="error-code" value="500"/>

+                                                                                        <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />

+                                                                                    </return>

+                                                                                </outcome>

+                                                                            </call>

+                                                                            <set>

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].plan-name'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].address-family'

+    value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`" />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='tmp.plan-index-to-be-incremented' value='true' />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='tmp.client-key.seq' value='0' />

+                                                                            </set>

+                                                                            <for index='vm-index' start='0' end='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >

+                                                                                <for index='ipv4-index' start='0' end='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-count`' >

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`' />

+                                                                                            <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='tmp.client-key.seq' value='`$tmp.client-key.seq + 1`' />

+                                                                                        </set>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'

+    value='generate-FQPN-output.' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'

+    value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'

+    value='FIXED' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                            </set>

+                                                                                            <block>

+                                                                                                <switch test='`$tmp.client-key.seq &lt; 10`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='tmp.client-key.padding' value='000' />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='false'>

+                                                                                                        <switch test='`$tmp.client-key.seq &lt; 100`'>

+                                                                                                            <outcome value='true'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='tmp.client-key.padding' value='00' />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                            <outcome value='false'>

+                                                                                                                <switch test='`$tmp.client-key.seq &lt; 1000`'>

+                                                                                                                    <outcome value='true'>

+                                                                                                                        <set>

+                                                                                                                            <parameter name='tmp.client-key.padding' value='0' />

+                                                                                                                        </set>

+                                                                                                                    </outcome>

+                                                                                                                    <outcome value='false'>

+                                                                                                                        <switch test='`$tmp.client-key.seq &lt; 10000`'>

+                                                                                                                            <outcome value='true'>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='tmp.client-key.padding' value='' />

+                                                                                                                                </set>

+                                                                                                                            </outcome>

+                                                                                                                        </switch>

+                                                                                                                    </outcome>

+                                                                                                                </switch>

+                                                                                                            </outcome>

+                                                                                                        </switch>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'

+   value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +

+			$tmp.client-key.padding + $tmp.client-key.seq`"/>

+                                                                                                <!-- rdn|zrdm3amdns02testdns001|data|static|VIP|4|0001 -->

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'

+   value='`$auto-ip-assignment-input.vf-module-id`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='ridx' value='`$ridx + 1`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </block>

+                                                                                </for>

+                                                                            </for>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                </switch>

+                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>

+                                                    <outcome value='6'>

+                                                        <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`'>

+                                                            <outcome value='N'>

+                                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-count &gt; 0`'>

+                                                                    <outcome value='true'>

+                                                                        <block atomic='true'>

+                                                                            <set>

+                                                                                <parameter name='generate-FQPN-input.plan-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />

+                                                                                <parameter name='generate-FQPN-input.network-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                <parameter name='generate-FQPN-input.subnet-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                <parameter name='generate-FQPN-input.vrf-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-vrf-name`' />

+                                                                                <!--

+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />

+-->

+                                                                            </set>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >

+                                                                                <outcome value='failure'>

+                                                                                    <return status="failure">

+                                                                                        <parameter name="ack-final" value="Y" />

+                                                                                        <parameter name="error-code" value="500"/>

+                                                                                        <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />

+                                                                                    </return>

+                                                                                </outcome>

+                                                                            </call>

+                                                                            <set>

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].plan-name'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].address-family'

+    value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`" />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='tmp.plan-index-to-be-incremented' value='true' />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='tmp.client-key.seq' value='0' />

+                                                                            </set>

+                                                                            <for index='vm-index' start='0' end='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >

+                                                                                <for index='ipv6-index' start='0' end='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-count`' >

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`' />

+                                                                                            <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='tmp.client-key.seq' value='`$tmp.client-key.seq + 1`' />

+                                                                                        </set>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'

+    value='generate-FQPN-output.' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'

+    value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'

+    value='FIXED' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                            </set>

+                                                                                            <block>

+                                                                                                <switch test='`$tmp.client-key.seq &lt; 10`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='tmp.client-key.padding' value='000' />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='false'>

+                                                                                                        <switch test='`$tmp.client-key.seq &lt; 100`'>

+                                                                                                            <outcome value='true'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='tmp.client-key.padding' value='00' />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                            <outcome value='false'>

+                                                                                                                <switch test='`$tmp.client-key.seq &lt; 1000`'>

+                                                                                                                    <outcome value='true'>

+                                                                                                                        <set>

+                                                                                                                            <parameter name='tmp.client-key.padding' value='0' />

+                                                                                                                        </set>

+                                                                                                                    </outcome>

+                                                                                                                    <outcome value='false'>

+                                                                                                                        <switch test='`$tmp.client-key.seq &lt; 10000`'>

+                                                                                                                            <outcome value='true'>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='tmp.client-key.padding' value='' />

+                                                                                                                                </set>

+                                                                                                                            </outcome>

+                                                                                                                        </switch>

+                                                                                                                    </outcome>

+                                                                                                                </switch>

+                                                                                                            </outcome>

+                                                                                                        </switch>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'

+   value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +

+			$tmp.client-key.padding + $tmp.client-key.seq`"/>

+                                                                                                <!-- rdn|zrdm3amdns02testdns001|data|static|VIP|4|0001 -->

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'

+   value='`$auto-ip-assignment-input.vf-module-id`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='ridx' value='`$ridx + 1`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </block>

+                                                                                </for>

+                                                                            </for>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                </switch>

+                                                <switch test='`$tmp.plan-index-to-be-incremented`'>

+                                                    <outcome value='true'>

+                                                        <block>

+                                                            <set>

+                                                                <parameter name='pidx' value='`$pidx + 1`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name="eipam-ip-block.plans_length" value="`$pidx`"/>

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </block>

+                    </for>

+                </block>

+            </for>

+            <for index='vm-type-index' start='0' end='`$db1.vf-module-to-vfc-mapping_length`' >

+                <block atomic="true">

+                    <set>

+                        <parameter name='vm-type-floating-loop' value = 'START' />

+                        <parameter name='tmp.vm-type' value = '`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />

+                    </set>

+                    <set>

+                        <parameter name='db1.vfc-to-network-role-mapping.' value = '' />

+                    </set>

+                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+	key='SELECT * from VFC_TO_NETWORK_ROLE_MAPPING WHERE vfc_customization_uuid = $db1.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid 

+		AND (ipv4_count > 0 OR ipv6_count > 0 OR ipv4_floating_count > 0 OR ipv6_floating_count > 0)'

+	pfx='db1.vfc-to-network-role-mapping[]'>

+                        <outcome value='not-found'>

+                            <set>

+                                <parameter name='db1.vfc-to-network-role-mapping_length' value='0' />

+                            </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 reading VFC_TO_NETWORK_ROLE_MAPPING table" />

+                            </return>

+                        </outcome>

+                    </get-resource>

+                    <set>

+                        <parameter name='tmp.db1.network-role' value = '' />

+                    </set>

+                    <for index='network-role-index' start='0' end='`$db1.vfc-to-network-role-mapping_length`' >

+                        <block atomic="true">

+                            <set>

+                                <parameter name='network-role-loop' value = 'START' />

+                            </set>

+                            <set>

+                                <parameter name='tmp.plan-index-to-be-incremented' value='false' />

+                            </set>

+                            <set>

+                                <parameter name='tmp.network-role.found' value = 'false' />

+                            </set>

+                            <set>

+                                <parameter name='tmp.db1.network-role' value = '`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                            </set>

+                            <block atomic="true">

+                                <block>

+                                    <for index='q' start='0' end='`$tmp.network-role-query-results_length`' >

+                                        <set>

+                                            <parameter name='tmp.qresult.network-role' value = '`$tmp.network-role-query-results[$q].l3-network.network-role`' />

+                                        </set>

+                                        <switch test='`$tmp.qresult.network-role == $tmp.db1.network-role`' >

+                                            <outcome value='true'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='generate-FQPN-input.network-name' 

+	value='`$tmp.network-role-query-results[$q].l3-network.network-name`' />

+                                                        <parameter name='generate-FQPN-input.network-id' 

+	value='`$tmp.network-role-query-results[$q].l3-network.network-id`' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='tmp.network-role.found' value = 'true' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='query-results-found-index' value = '`$q`' />

+                                                    </set>

+                                                    <return status='failure'></return>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                    <return status='success'></return>

+                                </block>

+                                <switch test='`$tmp.network-role.found`'>

+                                    <outcome value='false'>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name='query-aai-l3-network-by-network-role-input.aic-cloud-region' 

+	value='`$auto-ip-assignment-input.aic-cloud-region`' />

+                                                <parameter name='query-aai-l3-network-by-network-role-input.service-instance-id' 

+	value='`$auto-ip-assignment-input.service-instance-id`' />

+                                                <parameter name='query-aai-l3-network-by-network-role-input.network-role' 

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                <!--

+filter options: service-instance-id, aic-cloud-region, null, Other (or any string)

+    - null or Other will filter by aic-cloud-region first, then service-instance-id

+<parameter name='query-aai-l3-network-by-network-role-input.filter' 

+	value='service-instance-id' />

+-->

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='query-aai-l3-network-by-network-role' mode='sync' >

+                                                <outcome value='failure'>

+                                                    <return status="failure">

+                                                        <parameter name="ack-final" value="Y" />

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="error-message" value="`'An error occured while querying AAI to retrieve l3-network by network-role: ' + $error-message`" />

+                                                    </return>

+                                                </outcome>

+                                            </call>

+                                            <set>

+                                                <parameter name='generate-FQPN-input.network-name' 

+	value='`$query-aai-l3-network-by-network-role-output.l3-network.network-name`' />

+                                                <parameter name='generate-FQPN-input.network-id' 

+	value='`$query-aai-l3-network-by-network-role-output.l3-network.network-id`' />

+                                            </set>

+                                            <set>

+                                                <parameter name='tmp.network-role-query-results[$qridx].l3-network.' 

+	value='`$query-aai-l3-network-by-network-role-output.l3-network.`' />

+                                                <parameter name='tmp.network-role-query-results[$qridx].l3-network.network-role-tag' 

+	value='`$tmp.db1.network-role-tag`' />

+                                                <!--

+<parameter name='tmp.network-role-query-results[$qridx].network-role' 

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' /><parameter name='tmp.network-role-query-results[$qridx].network-name' 

+	value='`$query-aai-l3-network-by-network-role-output.l3-network.network-name`' />

+-->

+                                            </set>

+                                            <set>

+                                                <parameter name='eipam-ip-block.plans[$pidx].l3-network.' 

+	value='query-aai-l3-network-by-network-role-output.l3-network.' />

+                                            </set>

+                                            <set>

+                                                <parameter name='qridx' value='`$qridx + 1`' />

+                                            </set>

+                                            <set>

+                                                <parameter name='tmp.network-role-query-results_length' value='`$qridx`' />

+                                            </set>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='ridx' value='0' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='eipam-ip-block.plans[$pidx].network-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                    <parameter name='eipam-ip-block.plans[$pidx].subnet-role'

+    value="`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`" />

+                                                </set>

+                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>

+                                                    <outcome value='4'>

+                                                        <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`'>

+                                                            <outcome value='N'>

+                                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-count &gt; 0`'>

+                                                                    <outcome value='true'>

+                                                                        <block atomic='true'>

+                                                                            <set>

+                                                                                <parameter name='generate-FQPN-input.plan-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />

+                                                                                <parameter name='generate-FQPN-input.network-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                <parameter name='generate-FQPN-input.subnet-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                <parameter name='generate-FQPN-input.vrf-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-vrf-name`' />

+                                                                                <!--

+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />

+-->

+                                                                            </set>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >

+                                                                                <outcome value='failure'>

+                                                                                    <return status="failure">

+                                                                                        <parameter name="ack-final" value="Y" />

+                                                                                        <parameter name="error-code" value="500"/>

+                                                                                        <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />

+                                                                                    </return>

+                                                                                </outcome>

+                                                                            </call>

+                                                                            <set>

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].plan-name'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].address-family'

+    value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`" />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='tmp.plan-index-to-be-incremented' value='true' />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='tmp.client-key.seq' value='0' />

+                                                                            </set>

+                                                                            <for index='vm-index' start='0' end='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >

+                                                                                <for index='ipv4-index' start='0' end='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-count`' >

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`' />

+                                                                                            <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='tmp.client-key.seq' value='`$tmp.client-key.seq + 1`' />

+                                                                                        </set>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'

+    value='generate-FQPN-output.' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'

+    value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'

+    value='FIXED' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                            </set>

+                                                                                            <block>

+                                                                                                <switch test='`$tmp.client-key.seq &lt; 10`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='tmp.client-key.padding' value='000' />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='false'>

+                                                                                                        <switch test='`$tmp.client-key.seq &lt; 100`'>

+                                                                                                            <outcome value='true'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='tmp.client-key.padding' value='00' />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                            <outcome value='false'>

+                                                                                                                <switch test='`$tmp.client-key.seq &lt; 1000`'>

+                                                                                                                    <outcome value='true'>

+                                                                                                                        <set>

+                                                                                                                            <parameter name='tmp.client-key.padding' value='0' />

+                                                                                                                        </set>

+                                                                                                                    </outcome>

+                                                                                                                    <outcome value='false'>

+                                                                                                                        <switch test='`$tmp.client-key.seq &lt; 10000`'>

+                                                                                                                            <outcome value='true'>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='tmp.client-key.padding' value='' />

+                                                                                                                                </set>

+                                                                                                                            </outcome>

+                                                                                                                        </switch>

+                                                                                                                    </outcome>

+                                                                                                                </switch>

+                                                                                                            </outcome>

+                                                                                                        </switch>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'

+   value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +

+			$tmp.client-key.padding + $tmp.client-key.seq`"/>

+                                                                                                <!-- rdn|zrdm3amdns02testdns001|data|static|VIP|4|0001 -->

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'

+   value='`$auto-ip-assignment-input.vf-module-id`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='ridx' value='`$ridx + 1`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </block>

+                                                                                </for>

+                                                                            </for>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                </switch>

+                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>

+                                                    <outcome value='6'>

+                                                        <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`'>

+                                                            <outcome value='N'>

+                                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-count &gt; 0`'>

+                                                                    <outcome value='true'>

+                                                                        <block atomic='true'>

+                                                                            <set>

+                                                                                <parameter name='generate-FQPN-input.plan-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />

+                                                                                <parameter name='generate-FQPN-input.network-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                <parameter name='generate-FQPN-input.subnet-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                <parameter name='generate-FQPN-input.vrf-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-vrf-name`' />

+                                                                                <!--

+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />

+-->

+                                                                            </set>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >

+                                                                                <outcome value='failure'>

+                                                                                    <return status="failure">

+                                                                                        <parameter name="ack-final" value="Y" />

+                                                                                        <parameter name="error-code" value="500"/>

+                                                                                        <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />

+                                                                                    </return>

+                                                                                </outcome>

+                                                                            </call>

+                                                                            <set>

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].plan-name'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].address-family'

+    value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`" />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='tmp.plan-index-to-be-incremented' value='true' />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='tmp.client-key.seq' value='0' />

+                                                                            </set>

+                                                                            <for index='vm-index' start='0' end='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >

+                                                                                <for index='ipv6-index' start='0' end='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-count`' >

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`' />

+                                                                                            <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='tmp.client-key.seq' value='`$tmp.client-key.seq + 1`' />

+                                                                                        </set>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'

+    value='generate-FQPN-output.' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'

+    value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'

+    value='FIXED' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                            </set>

+                                                                                            <block>

+                                                                                                <switch test='`$tmp.client-key.seq &lt; 10`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='tmp.client-key.padding' value='000' />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='false'>

+                                                                                                        <switch test='`$tmp.client-key.seq &lt; 100`'>

+                                                                                                            <outcome value='true'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='tmp.client-key.padding' value='00' />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                            <outcome value='false'>

+                                                                                                                <switch test='`$tmp.client-key.seq &lt; 1000`'>

+                                                                                                                    <outcome value='true'>

+                                                                                                                        <set>

+                                                                                                                            <parameter name='tmp.client-key.padding' value='0' />

+                                                                                                                        </set>

+                                                                                                                    </outcome>

+                                                                                                                    <outcome value='false'>

+                                                                                                                        <switch test='`$tmp.client-key.seq &lt; 10000`'>

+                                                                                                                            <outcome value='true'>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='tmp.client-key.padding' value='' />

+                                                                                                                                </set>

+                                                                                                                            </outcome>

+                                                                                                                        </switch>

+                                                                                                                    </outcome>

+                                                                                                                </switch>

+                                                                                                            </outcome>

+                                                                                                        </switch>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'

+   value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' +

+			$tmp.client-key.padding + $tmp.client-key.seq`"/>

+                                                                                                <!-- rdn|zrdm3amdns02testdns001|data|static|VIP|4|0001 -->

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'

+   value='`$auto-ip-assignment-input.vf-module-id`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='ridx' value='`$ridx + 1`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </block>

+                                                                                </for>

+                                                                            </for>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                </switch>

+                                                <switch test='`$tmp.plan-index-to-be-incremented`'>

+                                                    <outcome value='true'>

+                                                        <block>

+                                                            <set>

+                                                                <parameter name='pidx' value='`$pidx + 1`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name="eipam-ip-block.plans_length" value="`$pidx`"/>

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='true'>

+                                        <block>

+                                            <set>

+                                                <parameter name='eipam-ip-block.plans[$pidx].l3-network.' 

+	value='tmp.network-role-query-results[$query-results-found-index].l3-network.' />

+                                            </set>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='ridx' value='0' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='eipam-ip-block.plans[$pidx].network-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                    <parameter name='eipam-ip-block.plans[$pidx].subnet-role'

+    value="`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`" />

+                                                </set>

+                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>

+                                                    <outcome value='4'>

+                                                        <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`'>

+                                                            <outcome value='N'>

+                                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-floating-count &gt; 0`'>

+                                                                    <outcome value='true'>

+                                                                        <block atomic='true'>

+                                                                            <set>

+                                                                                <parameter name='generate-FQPN-input.plan-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />

+                                                                                <parameter name='generate-FQPN-input.subnet-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                <parameter name='generate-FQPN-input.network-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                <parameter name='generate-FQPN-input.vrf-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-vrf-name`' />

+                                                                                <!--

+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />

+-->

+                                                                            </set>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >

+                                                                                <outcome value='failure'>

+                                                                                    <return status="failure">

+                                                                                        <parameter name="ack-final" value="Y" />

+                                                                                        <parameter name="error-code" value="500"/>

+                                                                                        <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />

+                                                                                    </return>

+                                                                                </outcome>

+                                                                            </call>

+                                                                            <set>

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].plan-name'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-address-plan-name`' />

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].address-family'

+    value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`" />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='tmp.plan-index-to-be-incremented' value='true' />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`' />

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />

+                                                                            </set>

+                                                                            <block atomic='true'>

+                                                                                <set>

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'

+    value='generate-FQPN-output.' />

+                                                                                </set>

+                                                                                <set>

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'

+    value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'

+    value='VIP' />

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].group-number'

+    value='1' />

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                </set>

+                                                                                <set>

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'

+   value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].group-number + '|0001'`" />

+                                                                                    <!-- rdn|data|static|FIXED|4|1|0001 -->

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'

+   value='`$auto-ip-assignment-input.vf-module-id`' />

+                                                                                </set>

+                                                                                <set>

+                                                                                    <parameter name='ridx' value='`$ridx + 1`' />

+                                                                                </set>

+                                                                                <set>

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />

+                                                                                </set>

+                                                                            </block>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                </switch>

+                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>

+                                                    <outcome value='6'>

+                                                        <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`'>

+                                                            <outcome value='N'>

+                                                                <switch test='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-floating-count &gt; 0`'>

+                                                                    <outcome value='true'>

+                                                                        <block atomic='true'>

+                                                                            <set>

+                                                                                <parameter name='generate-FQPN-input.plan-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />

+                                                                                <parameter name='generate-FQPN-input.vrf-name'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-vrf-name`' />

+                                                                                <parameter name='generate-FQPN-input.subnet-role' 

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                <parameter name='generate-FQPN-input.network-role'

+	value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                <!--

+<parameter name='generate-FQPN-input.plans-index' value='`$pidx`' /><parameter name='generate-FQPN-input.requests-index' value='`$ridx`' />

+-->

+                                                                            </set>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >

+                                                                                <outcome value='failure'>

+                                                                                    <return status="failure">

+                                                                                        <parameter name="ack-final" value="Y" />

+                                                                                        <parameter name="error-code" value="500"/>

+                                                                                        <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />

+                                                                                    </return>

+                                                                                </outcome>

+                                                                            </call>

+                                                                            <set>

+                                                                                <parameter name='tmp.plan-index-to-be-incremented' value='true' />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].plan-name'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-address-plan-name`' />

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].address-family'

+    value="`'ipv' + $db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`" />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-version'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`' />

+                                                                                <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].use-dhcp'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />

+                                                                            </set>

+                                                                            <block atomic='true'>

+                                                                                <set>

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].'

+    value='generate-FQPN-output.' />

+                                                                                </set>

+                                                                                <set>

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vm-type'

+    value='`$db1.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].network-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role'

+    value='`$db1.vfc-to-network-role-mapping[$network-role-index].subnet-role`' />

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].ip-type'

+    value='VIP' />

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].group-number'

+    value='1' />

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].vnfc-name'

+    value='`$auto-ip-assignment-input.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vnfc-names[0].vnfc-name`' />

+                                                                                </set>

+                                                                                <set>

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].client-key'

+   value="`$eipam-ip-block.plans[$pidx].requests[$ridx].vm-type + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].network-role + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].subnet-role + '|' +

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-type + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].ip-version + '|' + 

+			$eipam-ip-block.plans[$pidx].requests[$ridx].group-number + '|0001'`" />

+                                                                                    <!-- rdn|data|static|FIXED|4|1|0001 -->

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests[$ridx].info'

+   value='`$auto-ip-assignment-input.vf-module-id`' />

+                                                                                </set>

+                                                                                <set>

+                                                                                    <parameter name='ridx' value='`$ridx + 1`' />

+                                                                                </set>

+                                                                                <set>

+                                                                                    <parameter name='eipam-ip-block.plans[$pidx].requests_length' value='`$ridx`' />

+                                                                                </set>

+                                                                            </block>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                </switch>

+                                                <switch test='`$tmp.plan-index-to-be-incremented`'>

+                                                    <outcome value='true'>

+                                                        <block>

+                                                            <set>

+                                                                <parameter name='pidx' value='`$pidx + 1`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name="eipam-ip-block.plans_length" value="`$pidx`"/>

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </block>

+                    </for>

+                </block>

+            </for>

+            <block atomic='true'>

+                <switch test='`$eipam-ip-block.plans_length &gt; 0`'>

+                    <outcome value='true'>

+                        <block atomic='true'>

+                            <switch test='`$auto-ip-assignment-input.service-type`'>

+                                <outcome value=''>

+                                    <set>

+                                        <parameter name='service-data.service-information.service-type' value='NA' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="assignIPAddress">

+                                <outcome value='failure'>

+                                    <return status="failure">

+                                        <parameter name="ack-final" value="Y" />

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="error-message" value="`'An error occured while obtaining ip addresses from EIPAM: ' + $error-message`" />

+                                    </return>

+                                </outcome>

+                            </execute>

+                        </block>

+                    </outcome>

+                </switch>

+            </block>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-create-huawei.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-create-huawei.xml
new file mode 100644
index 0000000..9417333
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-create-huawei.xml
@@ -0,0 +1,266 @@
+<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='bbs-access-connectivity-network-topology-operation-create-huawei' mode='sync'>
+        <block atomic="true">
+            <call module='GENERIC-RESOURCE-API' rpc='validate-bbs-network-input-parameters' mode='sync' ></call>
+            <set>
+                <parameter name='network-input-parameters.' value='`$network-topology-operation-input.network-request-input.network-input-parameters.`' />
+                <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value='https://172.30.0.55:26335' />
+                <parameter name='prop.bbs.HsiPackage' value='50M' />
+                <parameter name='prop.bbs.HsiType' value='IPoE' />
+            </set>
+            <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='`$network-input-parameters.param_length`' >
+                <block>
+                    <switch test="`$network-input-parameters.param[$idx].name == 'remote_id'`">
+                        <outcome value='true'>
+                            <switch test='`$network-input-parameters.param[$idx].value`'>
+                                <outcome value=''>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`$network-input-parameters.param[$idx].name  +' value is null, please check it.'`" />
+                                    </return>
+                                </outcome>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='prop.bbs.remote_id' value='`$network-input-parameters.param[$idx].value`' />
+                                    </set>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-input-parameters.param[$idx].name == 'ONTSN'`">
+                        <outcome value='true'>
+                            <switch test='`$network-input-parameters.param[$idx].value`'>
+                                <outcome value=''>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`$network-input-parameters.param[$idx].name  +' value is null, please check it.'`" />
+                                    </return>
+                                </outcome>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='prop.bbs.ONTSN' value='`$network-input-parameters.param[$idx].value`' />
+                                    </set>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-input-parameters.param[$idx].name == 'CVLAN'`">
+                        <outcome value='true'>
+                            <switch test='`$network-input-parameters.param[$idx].value`'>
+                                <outcome value=''>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`$network-input-parameters.param[$idx].name  +' value is null, please check it.'`" />
+                                    </return>
+                                </outcome>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='prop.bbs.CVLAN' value='`$network-input-parameters.param[$idx].value`' />
+                                    </set>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-input-parameters.param[$idx].name == 'SVLAN'`">
+                        <outcome value='true'>
+                            <switch test='`$network-input-parameters.param[$idx].value`'>
+                                <outcome value=''>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`$network-input-parameters.param[$idx].name  +' value is null, please check it.'`" />
+                                    </return>
+                                </outcome>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='prop.bbs.SVLAN' value='`$network-input-parameters.param[$idx].value`' />
+                                    </set>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                </block>
+            </for>
+            <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-token-template.json'`"/>
+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url+'/rest/plat/smapp/v1/oauth/token'`"/>
+                <parameter name="format" value="json"/>
+                <parameter name="httpMethod" value="put"/>
+                <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'>
+                    <switch test='`$token-result.accessSession`'>
+                        <outcome value='Other'>
+                            <set>
+                                <parameter name='prop.sdncRestApi.token_id' value='`$token-result.accessSession`' />
+                            </set>
+                        </outcome>
+                        <outcome value=''>
+                            <return status='failure'>
+                                <parameter name='ack-final' value='Y'/>
+                                <parameter name="error-code" value="500" />
+                                <parameter name="error-message" value="Error executing queryTokenID,vaule is null" />
+                            </return>
+                        </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 failed to call queryTokenID" />
+                    </return>
+                </outcome>
+            </execute>
+            <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-access-connectivity-create.json'`" />
+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/ws/rest/1002/FanOpenAPI/ActiveOnt'`" />
+                <parameter name="contentType" value="application/json"/>
+                <parameter name="httpMethod" value="post"/>
+                <parameter name="responsePrefix" value="service-result"/>
+                <parameter name="customHttpHeaders" value="`'X-Auth-Token=' + $prop.sdncRestApi.token_id`"/>
+                <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='failure'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Error failed to call  createAccessConnectivityService" />
+                    </return>
+                </outcome>
+                <outcome value='success'>
+                    <switch test="`$service-result.errors.error[0].error-message`">
+                        <outcome value='Other'>
+                            <return status='failure'>
+                                <parameter name='ack-final' value='Y'/>
+                                <parameter name="error-code" value="500" />
+                                <parameter name="error-message" value="`'Error createAccessConnectivityService return: '+$service-result.errors.error[0].error-message`" />
+                            </return>
+                        </outcome>
+                        <outcome value=''>
+                            <block>
+                                <set>
+                                    <parameter name='prop.bbs.serviceID' value="`$service-result.accessE2Eservice.serviceID`"/>
+                                </set>
+                            </block>
+                        </outcome>
+                    </switch>
+                </outcome>
+            </execute>
+            <block>
+                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
+                    <parameter name="ctx-destination" value="prop.random-data"/>
+                    <outcome value='success'>
+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+                            <parameter name="ctx_memory_result_key" value="prop.random-data-list"/>
+                            <parameter name="original_string" value="`$prop.random-data`"/>
+                            <parameter name="regex" value="-"/>
+                            <outcome value='success'></outcome>
+                        </execute>
+                    </outcome>
+                </execute>
+                <set>
+                    <parameter name='vnf-id' value="`$prop.random-data-list[3]`"/>
+                    <parameter name='vnf-name' value="`'vnf-'+$prop.random-data-list[4]`"/>
+                </set>
+                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="generic-vnf" key="generic-vnf.vnf-id = $vnf-id" >
+                    <parameter name= "vnf-id" value = "`$vnf-id`"/>
+                    <parameter name=  "vnf-name" value = "`$vnf-name`"/>
+                    <parameter name=  "vnf-type" value = "AccessConnectivity"/>
+                    <parameter name=  "service-id" value = "`$network-topology-operation-input.service-information.service-id`"/>
+                    <parameter name=  "prov-status" value = "ACTIVE"/>
+                    <parameter name=  "orchestration-status" value = "Active"/>
+                    <parameter name=  "is-closed-loop-disabled" value = "false" />
+                    <parameter name=  "model-invariant-id" value = "`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`"/>
+                    <parameter name=  "model-version-id" value = "`$network-topology-operation-input.network-information.onap-model-information.model-uuid`"/>
+                    <parameter name=  "model-customization-id" value = "`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`"/>
+                    <outcome value='failure'>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Failure calling AAI to save generic-vnf" />
+                        </return>
+                    </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="generic-vnf instance does not exist in AAI" />
+                        </return>
+                    </outcome>
+                    <outcome value='success'></outcome>
+                </save>
+                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:metadata"
+ key="service-instance.service-instance-id = $network-topology-operation-input.service-information.service-id  
+	AND customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id
+	  AND service-subscription.service-type = $network-topology-operation-input.service-information.subscription-service-type
+	  AND service-instance.service-instance-id =  $network-topology-operation-input.service-information.service-instance-id"  force="true" pfx="tmp.AnAI-data"
+    >
+                    <parameter name="metadata.metadatum[0].metaname" value="remote-id" />
+                    <parameter name="metadata.metadatum[0].metaval" value="`$prop.bbs.remote_id`" />
+                    <parameter name="metadata.metadatum[1].metaname" value="controller-service-id" />
+                    <parameter name="metadata.metadatum[1].metaval" value="`$prop.bbs.serviceID`" />
+                    <outcome value='failure'>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Failure calling AAI to save metadatum" />
+                        </return>
+                    </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="metadatum instance does not exist in AAI" />
+                        </return>
+                    </outcome>
+                    <outcome value='success'></outcome>
+                </save>
+                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:relationship-list" 
+      key="service-instance.service-instance-id =  $network-topology-operation-input.service-information.service-id
+         AND customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id
+         AND service-subscription.service-type =  $network-topology-operation-input.service-information.subscription-service-type 
+         AND service-instance.service-instance-id =  $network-topology-operation-input.service-information.service-instance-id" force="true" pfx="tmp.AnAI-data">
+                    <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />
+                    <parameter name="relationship-list.relationship[0].related-link" value="`'/network/generic-vnfs/generic-vnf/' + $vnf-id`" />
+                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="generic-vnf.vnf-id" />
+                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$vnf-id`" />
+                    <outcome value='failure'>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Failure calling AAI to save metadatum" />
+                        </return>
+                    </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="metadatum instance does not exist in AAI" />
+                        </return>
+                    </outcome>
+                    <outcome value='success'></outcome>
+                </save>
+            </block>
+            <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>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-delete-huawei.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-delete-huawei.xml
new file mode 100644
index 0000000..75d15b5
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-access-connectivity-network-topology-operation-delete-huawei.xml
@@ -0,0 +1,171 @@
+<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='bbs-access-connectivity-network-topology-operation-delete-huawei' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-bbs-network-input-parameters' mode='sync' ></call>

+            <set>

+                <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value='https://172.30.0.55:26335' />

+                <parameter name='network-input-parameters.' value='`$network-topology-operation-input.network-request-input.network-input-parameters.`' />

+            </set>

+            <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>

+            <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-token-template.json'`"/>

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url+'/rest/plat/smapp/v1/oauth/token'`"/>

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="put"/>

+                <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='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error failed to call queryTokenID" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <switch test='`$token-result.accessSession`'>

+                        <outcome value=''>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="Error executing queryTokenID,vaule is null" />

+                            </return>

+                        </outcome>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name='prop.sdncRestApi.token_id' value='`$token-result.accessSession`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </execute>

+            <for index='idx' start='0' end='`$network-input-parameters.param_length`' >

+                <switch test="`$network-input-parameters.param[$idx].name == 'serviceID'`">

+                    <outcome value='true'>

+                        <switch test='`$network-input-parameters.param[$idx].value`'>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='prop.bbs.serviceID' value='`$network-input-parameters.param[$idx].value`' />

+                                </set>

+                            </outcome>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="$network-input-parameters.param[$idx].name  +' value is null, please check it.'" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </outcome>

+                </switch>

+            </for>

+            <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/ws/rest/1002/FanOpenAPI/DeactivateOnt?serviceID='+$prop.bbs.serviceID`" />

+                <parameter name="httpMethod" value="get"/>

+                <parameter name="contentType" value="application/x-www-form-urlencoded"/>

+                <parameter name="responsePrefix" value="service-result"/>

+                <parameter name="customHttpHeaders" value="`'X-Auth-Token=' + $prop.sdncRestApi.token_id`"/>

+                <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='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error failed to call deleteAccessConnectivityService" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true">

+                        <switch test="`$service-result.errors.error[0].error-message`">

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'Error deleteAccessConnectivityService return: '+$service-result.errors.error[0].error-message`" />

+                                </return>

+                            </outcome>

+                            <outcome value=''>

+                                <block></block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </execute>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="service-instance" 

+		key="customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $network-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $network-topology-operation-input.service-information.service-instance-id"

+        pfx='aai.service-instance' local-only='false' >

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='' />

+                        <parameter name='error-message' value='' />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic='true'>

+                        <for silentFailure='true' index='ridx' start='0' end="`$aai.service-instance.relationship-list.relationship_length`" >

+                            <for silentFailure='false' index='rdidx' start='0' end="`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data_length`" >

+                                <block atomic='true'>

+                                    <switch test='`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>

+                                        <outcome value='generic-vnf.vnf-id'>

+                                            <block atomic='true'>

+                                                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="generic-vnf" 

+		key="generic-vnf.vnf-id = $aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"

+        pfx='aai.generic-vnf' local-only='false' >

+                                                    <outcome value='success'>

+                                                        <block atomic='true'>

+                                                            <switch test='`$aai.generic-vnf.vnf-type`'>

+                                                                <outcome value='AccessConnectivity'>

+                                                                    <set>

+                                                                        <parameter name='prop.bbs.accessConnectivityVNFId' value='`$aai.generic-vnf.vnf-id`' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </outcome>

+                                                </get-resource>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </for>

+                        </for>

+                    </block>

+                </outcome>

+            </get-resource>

+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="generic-vnf" 

+		key="generic-vnf.vnf-id = $prop.bbs.accessConnectivityVNFId">

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='' />

+                        <parameter name='error-message' value='' />

+                    </return>

+                </outcome>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='' />

+                        <parameter name='error-message' value='' />

+                    </return>

+                </outcome>

+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-change-huawei.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-change-huawei.xml
new file mode 100644
index 0000000..37bb23d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-change-huawei.xml
@@ -0,0 +1,42 @@
+<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='bbs-internet-profile-network-topology-operation-change-huawei' mode='sync'>
+        <block atomic="true">
+            <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-common-huawei' mode='sync' ></call>
+            <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-internet-profile-operation.json'`" />
+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/ChangeInternetProfileInstance'`" />
+                <parameter name="contentType" value="application/json"/>
+                <parameter name="httpMethod" value="post"/>
+                <parameter name="responsePrefix" value="service-result"/>
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Error failed to call ChangeInternetProfileInstance" />
+                    </return>
+                </outcome>
+                <outcome value='success'>
+                    <switch test="`$service-result.errors.error[0].error-message`">
+                        <outcome value='Other'>
+                            <return status='failure'>
+                                <parameter name='ack-final' value='Y'/>
+                                <parameter name="error-code" value="500" />
+                                <parameter name="error-message" value="`'Error ChangeInternetProfileInstance return: '+$service-result.errors.error[0].error-message`" />
+                            </return>
+                        </outcome>
+                        <outcome value=''>
+                            <block></block>
+                        </outcome>
+                    </switch>
+                </outcome>
+            </execute>
+            <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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-common-huawei.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-common-huawei.xml
new file mode 100644
index 0000000..d41dfd5
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-common-huawei.xml
@@ -0,0 +1,166 @@
+<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='bbs-internet-profile-network-topology-operation-common-huawei' mode='sync'>
+        <block atomic="true">
+            <call module='GENERIC-RESOURCE-API' rpc='validate-bbs-network-input-parameters' mode='sync' ></call>
+            <set>
+                <parameter name='network-input-parameters.' value='`$network-topology-operation-input.network-request-input.network-input-parameters.`' />
+                <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value='http://172.30.0.121:5000' />
+                <parameter name='prop.bbs.service_id' value='`$network-topology-operation-input.service-information.service-id`' />
+            </set>
+            <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='`$network-input-parameters.param_length`' >
+                <block>
+                    <switch test="`$network-input-parameters.param[$idx].name == 'ip_remote_id'`">
+                        <outcome value='true'>
+                            <switch test='`$network-input-parameters.param[$idx].value`'>
+                                <outcome value=''>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`$network-input-parameters.param[$idx].name  +' value is null, please check it.'`" />
+                                    </return>
+                                </outcome>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='prop.bbs.remote_id' value='`$network-input-parameters.param[$idx].value`' />
+                                    </set>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-input-parameters.param[$idx].name == 'ont_sn'`">
+                        <outcome value='true'>
+                            <switch test='`$network-input-parameters.param[$idx].value`'>
+                                <outcome value=''>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`$network-input-parameters.param[$idx].name  +' value is null, please check it.'`" />
+                                    </return>
+                                </outcome>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='prop.bbs.ont_sn' value='`$network-input-parameters.param[$idx].value`' />
+                                    </set>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-input-parameters.param[$idx].name == 'ip_service_type'`">
+                        <outcome value='true'>
+                            <switch test='`$network-input-parameters.param[$idx].value`'>
+                                <outcome value=''>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`$network-input-parameters.param[$idx].name  +' value is null, please check it.'`" />
+                                    </return>
+                                </outcome>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='prop.bbs.service_type' value='`$network-input-parameters.param[$idx].value`' />
+                                    </set>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-input-parameters.param[$idx].name == 'ip_rg_mac_addr'`">
+                        <outcome value='true'>
+                            <switch test='`$network-input-parameters.param[$idx].value`'>
+                                <outcome value=''>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`$network-input-parameters.param[$idx].name  +' value is null, please check it.'`" />
+                                    </return>
+                                </outcome>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='prop.bbs.mac' value='`$network-input-parameters.param[$idx].value`' />
+                                    </set>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-input-parameters.param[$idx].name == 'ip_upstream_speed'`">
+                        <outcome value='true'>
+                            <switch test='`$network-input-parameters.param[$idx].value`'>
+                                <outcome value=''>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`$network-input-parameters.param[$idx].name  +' value is null, please check it.'`" />
+                                    </return>
+                                </outcome>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='prop.bbs.up_speed' value='`$network-input-parameters.param[$idx].value`' />
+                                    </set>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-input-parameters.param[$idx].name == 'ip_downstream_speed'`">
+                        <outcome value='true'>
+                            <switch test='`$network-input-parameters.param[$idx].value`'>
+                                <outcome value=''>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`$network-input-parameters.param[$idx].name  +' value is null, please check it.'`" />
+                                    </return>
+                                </outcome>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='prop.bbs.down_speed' value='`$network-input-parameters.param[$idx].value`' />
+                                    </set>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-input-parameters.param[$idx].name == 's_vlan'`">
+                        <outcome value='true'>
+                            <switch test='`$network-input-parameters.param[$idx].value`'>
+                                <outcome value=''>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`$network-input-parameters.param[$idx].name  +' value is null, please check it.'`" />
+                                    </return>
+                                </outcome>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='prop.bbs.s_vlan' value='`$network-input-parameters.param[$idx].value`' />
+                                    </set>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-input-parameters.param[$idx].name == 'c_vlan'`">
+                        <outcome value='true'>
+                            <switch test='`$network-input-parameters.param[$idx].value`'>
+                                <outcome value=''>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`$network-input-parameters.param[$idx].name  +' value is null, please check it.'`" />
+                                    </return>
+                                </outcome>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='prop.bbs.c_vlan' value='`$network-input-parameters.param[$idx].value`' />
+                                    </set>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                </block>
+            </for>
+        </block>
+    </method>
+</service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-create-huawei.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-create-huawei.xml
new file mode 100644
index 0000000..2d88b3f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-create-huawei.xml
@@ -0,0 +1,146 @@
+<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='bbs-internet-profile-network-topology-operation-create-huawei' mode='sync'>
+        <block atomic="true">
+            <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-common-huawei' mode='sync' ></call>
+            <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">
+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-internet-profile-operation.json'`" />
+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/CreateInternetProfileInstance'`" />
+                <parameter name="contentType" value="application/json"/>
+                <parameter name="httpMethod" value="post"/>
+                <parameter name="responsePrefix" value="service-result"/>
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Error failed to call CreateInternetProfileInstance" />
+                    </return>
+                </outcome>
+                <outcome value='success'>
+                    <switch test="`$service-result.errors.error[0].error-message`">
+                        <outcome value='Other'>
+                            <return status='failure'>
+                                <parameter name='ack-final' value='Y'/>
+                                <parameter name="error-code" value="500" />
+                                <parameter name="error-message" value="`'Error CreateInternetProfileInstance return: '+$service-result.errors.error[0].error-message`" />
+                            </return>
+                        </outcome>
+                        <outcome value=''>
+                            <block></block>
+                        </outcome>
+                    </switch>
+                </outcome>
+            </execute>
+            <block>
+                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">
+                    <parameter name="ctx-destination" value="prop.random-data"/>
+                    <outcome value='success'>
+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+                            <parameter name="ctx_memory_result_key" value="prop.random-data-list"/>
+                            <parameter name="original_string" value="`$prop.random-data`"/>
+                            <parameter name="regex" value="-"/>
+                            <outcome value='success'></outcome>
+                        </execute>
+                    </outcome>
+                </execute>
+                <set>
+                    <parameter name='vnf-id' value="`$prop.random-data-list[3]`"/>
+                    <parameter name='vnf-name' value="`'vnf-'+$prop.random-data-list[4]`"/>
+                </set>
+                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="generic-vnf" key="generic-vnf.vnf-id = $vnf-id" >
+                    <parameter name= "vnf-id" value = "`$vnf-id`"/>
+                    <parameter name=  "vnf-name" value = "`$vnf-name`"/>
+                    <parameter name=  "vnf-type" value = "InternetProfile"/>
+                    <parameter name=  "service-id" value = "`$network-topology-operation-input.service-information.service-id`"/>
+                    <parameter name=  "prov-status" value = "ACTIVE"/>
+                    <parameter name=  "orchestration-status" value = "Active"/>
+                    <parameter name=  "is-closed-loop-disabled" value = "false" />
+                    <parameter name=  "model-invariant-id" value = "`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`"/>
+                    <parameter name=  "model-version-id" value = "`$network-topology-operation-input.network-information.onap-model-information.model-uuid`"/>
+                    <parameter name=  "model-customization-id" value = "`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`"/>
+                    <outcome value='failure'>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Failure calling AAI to save generic-vnf" />
+                        </return>
+                    </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="generic-vnf instance does not exist in AAI" />
+                        </return>
+                    </outcome>
+                    <outcome value='success'></outcome>
+                </save>
+                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:metadata"
+ key="service-instance.service-instance-id = $network-topology-operation-input.service-information.service-id  
+	AND customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id
+	  AND service-subscription.service-type = $network-topology-operation-input.service-information.subscription-service-type
+	  AND service-instance.service-instance-id =  $network-topology-operation-input.service-information.service-instance-id"  force="true" pfx="tmp.AnAI-data">
+                    <parameter name="metadata.metadatum[0].metaname" value="service-type" />
+                    <parameter name="metadata.metadatum[0].metaval" value="`$prop.bbs.service_type`" />
+                    <parameter name="metadata.metadatum[1].metaname" value="up-speed" />
+                    <parameter name="metadata.metadatum[1].metaval" value="`$prop.bbs.up_speed`" />
+                    <parameter name="metadata.metadatum[2].metaname" value="down-speed" />
+                    <parameter name="metadata.metadatum[2].metaval" value="`$prop.bbs.down_speed`" />
+                    <parameter name="metadata.metadatum[3].metaname" value="cvlan" />
+                    <parameter name="metadata.metadatum[3].metaval" value="`$prop.bbs.c_vlan`" />
+                    <parameter name="metadata.metadatum[4].metaname" value="svlan" />
+                    <parameter name="metadata.metadatum[4].metaval" value="`$prop.bbs.s_vlan`" />
+                    <parameter name="metadata.metadatum[5].metaname" value="expected-ont-id" />
+                    <parameter name="metadata.metadatum[5].metaval" value="`$prop.bbs.ont_sn`" />
+                    <parameter name="metadata.metadatum[6].metaname" value="rgw-mac-address" />
+                    <parameter name="metadata.metadatum[6].metaval" value="`$prop.bbs.mac`" />
+                    <outcome value='failure'>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Failure calling AAI to save metadatum" />
+                        </return>
+                    </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="metadatum instance does not exist in AAI" />
+                        </return>
+                    </outcome>
+                    <outcome value='success'></outcome>
+                </save>
+                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:relationship-list" 
+      key="service-instance.service-instance-id =  $network-topology-operation-input.service-information.service-id
+         AND customer.global-customer-id = $network-topology-operation-input.service-information.global-customer-id
+         AND service-subscription.service-type =  $network-topology-operation-input.service-information.subscription-service-type 
+         AND service-instance.service-instance-id =  $network-topology-operation-input.service-information.service-instance-id" force="true" pfx="tmp.AnAI-data">
+                    <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />
+                    <parameter name="relationship-list.relationship[0].related-link" value="`'/network/generic-vnfs/generic-vnf/' + $vnf-id`" />
+                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="generic-vnf.vnf-id" />
+                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$vnf-id`" />
+                    <outcome value='failure'>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Failure calling AAI to save metadatum" />
+                        </return>
+                    </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="metadatum instance does not exist in AAI" />
+                        </return>
+                    </outcome>
+                    <outcome value='success'></outcome>
+                </save>
+            </block>
+            <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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-delete-huawei.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-delete-huawei.xml
new file mode 100644
index 0000000..ea6dde9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_bbs-internet-profile-network-topology-operation-delete-huawei.xml
@@ -0,0 +1,84 @@
+<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='bbs-internet-profile-network-topology-operation-delete-huawei' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-common-huawei' mode='sync' ></call>

+            <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/bbs-internet-profile-operation.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/DeleteInternetProfileInstance'`" />

+                <parameter name="contentType" value="application/json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="service-result"/>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error failed to call DeleteInternetProfileInstance" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <switch test="`$service-result.errors.error[0].error-message`">

+                        <outcome value='Other'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`'Error DeleteInternetProfileInstance return: '+$service-result.errors.error[0].error-message`" />

+                            </return>

+                        </outcome>

+                        <outcome value=''>

+                            <block></block>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </execute>

+            <for silentFailure='false' index='rdidx' start='0' end="`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data_length`" >

+                <block atomic='true'>

+                    <switch test='`$aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>

+                        <outcome value='generic-vnf.vnf-id'>

+                            <block atomic='true'>

+                                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="generic-vnf" 

+		key="generic-vnf.vnf-id = $aai.service-instance.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"

+        pfx='aai.generic-vnf' local-only='false' >

+                                    <outcome value='success'>

+                                        <block atomic='true'>

+                                            <switch test='`$aai.generic-vnf.vnf-type`'>

+                                                <outcome value='InternetProfile'>

+                                                    <set>

+                                                        <parameter name='prop.bbs.internetProfileVNFId' value='`$aai.generic-vnf.vnf-id`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                </get-resource>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="generic-vnf" 

+		key="generic-vnf.vnf-id = $prop.bbs.internetProfileVNFId">

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='' />

+                        <parameter name='error-message' value='' />

+                    </return>

+                </outcome>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='' />

+                        <parameter name='error-message' value='' />

+                    </return>

+                </outcome>

+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-activate.xml
new file mode 100644
index 0000000..5e1fbe7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-activate.xml
@@ -0,0 +1,333 @@
+<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='brg-topology-operation-activate' mode='sync'>

+<block atomic="true"><set>

+<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+<!--

+<parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />

+-->

+

+</set><block atomic="true"><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='vnfs' pfx='tmp.vnfdata' >

+</get-resource><for index='vnfidx' start='0' end='`$tmp.vnfdata.vnfs.vnf-list_length`' >

+

+

+<switch test='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].service-data.service-information.service-instance-id == $tmp.ar.parent-service-instance-id`'>

+

+

+<outcome value='true'>

+<block>

+<set>

+<parameter name='tmp.ar.brg-vnf-id' 

+   value='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].vnf-id`' />

+

+

+

+</set></block></outcome></switch></for></block><set>

+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/brg-topology/'` " />

+

+</set><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><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.restapi.brg-allottedresource`"/>

+    <parameter name="outputPath" value="tmp.ar-url"/>

+    <parameter name="target" value="{allotted-resource-id}"/>

+    <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='GET' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block atomic="true">

+<set>

+<parameter name='bk-brg-ar' value='$mdsal-ar.' />

+</set><switch test='`$mdsal-ar.brg-allotted-resource_length`'>

+<outcome value='1'>

+<block atomic='true'>

+<set>

+<parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />

+</set><switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+<outcome value='Created'>

+<block>

+</block></outcome><outcome value='Other'>

+<block>

+</block></outcome></switch><set>

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+

+</set></block></outcome></switch></block></outcome><outcome value='Other'>

+<block atomic="true">

+</block></outcome></execute><set>

+<parameter name='brg-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+<parameter name='brg-ar.allotted-resource-status.action' value="`$brg-topology-operation-input.request-information.request-action` " />

+<parameter name='brg-ar.allotted-resource-status.rpc-name' value="brg-topology-operation" />

+<parameter name='brg-ar.allotted-resource-status.rpc-action' value="`$brg-topology-operation-input.sdnc-request-header.svc-action` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$brg-topology-operation-input.request-information.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$brg-topology-operation-input.sdnc-request-header.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$brg-topology-operation-input.service-information.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$brg-topology-operation-input.allotted-resource-information.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.' value="`$brg-topology-operation-input.brg-request-input.` " /></set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+    <parameter name="outputPath" value="tmp.current-time" />

+

+</execute><set>

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+</set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $brg-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $brg-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $brg-topology-operation-input.allotted-resource-information.parent-service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id"

+        pfx='pfx' local-only='false' force='false'>

+	<parameter name="operational-status" value="in-service-path" />

+<outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="AAI failed" />

+</return></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="AAI failed" />

+</return></outcome></update><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`" />

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='PUT' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block>

+</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 updating md-sal for brg-allotted-resource" />

+</return></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="Error updating md-sal for brg-allotted-resource" />

+</return></outcome></execute><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='IPADDR' key="SELECT min(ip_addr) ip from DHCP_MAP where mac_addr = $brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.brg-wan-mac-address" pfx="tmp.brg-wan-ip" >

+</get-resource><set>

+<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip' value='`$tmp.brg-wan-ip.ip`' />

+</set><set>

+<parameter name='tmp.ar.consuming-service-instance-id' value='`$brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.consuming-service-instance-id`' />

+</set><call module='GENERIC-RESOURCE-API' rpc='get-tunnelxconn-ar' mode='sync' >

+</call><set>

+<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-lan-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-lan-ip`' />

+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.honeycomb.url`"/>

+    <parameter name="outputPath" value="tmp.honeycomb.url"/>

+    <parameter name="target" value="{honeycomb-instance-ip}"/>

+    <parameter name="replacement" value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip`"/>

+</execute><set>

+<parameter name='tmp.tunnel-name' value="`'vxlanTun' + $brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-lan-ip` " />

+<parameter name='tmp.tunnel-dest-ip' value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-lan-ip` " />

+<parameter name='tmp.tunnel-src-ip' value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip` " />

+<parameter name='tmp.tunnel-vni' value="`$brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.vni` " /></set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>

+    <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>

+    <parameter name="target" value="{tunnel-name}"/>

+    <parameter name="replacement" value="`$tmp.tunnel-name`"/>

+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.vxlan-tunnel.templatefile`" />

+    <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />

+    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />

+    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='PUT' />

+    <parameter name="responsePrefix" value="honeycomb-vnf" />

+

+<outcome value='success'>

+<block>

+</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 setting up vxlan tunnel" />

+</return></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="Error setting up vxlan tunnel" />

+</return></outcome></execute><set>

+<parameter name='tmp.bridge-domain' value="bridge-domain-10" />

+<parameter name='tmp.split-horizon-group' value="2" /></set><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.bridge-domain.templatefile`" />

+    <parameter name='restapiUrl' value="`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `" />

+    <parameter name='restapiUser' value='`$prop.honeycomb.user`' />

+    <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='PUT' />

+    <parameter name="responsePrefix" value="honeycomb-vnf" />

+

+<outcome value='success'>

+<block>

+</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 setting up bridge domain" />

+</return></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="Error setting up bridge domain" />

+</return></outcome></execute><set>

+<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip`' />

+</set><set>

+<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-bearer-ip`' />

+</set><set>

+<parameter name='tmp.search.consuming-service-instance-id' value='`$brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.consuming-service-instance-id`' />

+																	</set><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='preload-vnfs' pfx='tmp.preloadvnfdata' >

+<!--

+tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[1].preload-data[0].vnf-topology-information.vnf-parameters[16].vnf-parameter-value = 10.0.101.30

+--><outcome value='success'>

+<block>

+<set>

+<parameter name='tmp.brg-match-vnf-name' value="`'VGW2BRG-'+ $brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.brg-wan-mac-address`" />

+

+</set><for index='vnfidx' start='0' end='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list_length`' >

+                               

+

+

+<block>

+<switch test='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].vnf-name == $tmp.brg-match-vnf-name`'>

+

+

+<outcome value='true'>

+<for index='paramidx' start='0' end='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters_length`' >

+

+

+<switch test="`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-name == 'vgw_private_ip_1'`" >

+

+

+<outcome value='true'>

+<set>

+<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-mgmt-ip'

+ value="`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-value`" />

+

+</set></outcome></switch></for></outcome></switch></block></for></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 getting GENERIC-RESOURCE-API:services" />

+</return></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="Error getting GENERIC-RESOURCE-API:services" />

+</return></outcome></get-resource><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.honeycomb.url`"/>

+    <parameter name="outputPath" value="tmp.honeycomb.url"/>

+    <parameter name="target" value="{honeycomb-instance-ip}"/>

+    <parameter name="replacement" value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-mgmt-ip`"/>

+</execute><set>

+<parameter name='tmp.tunnel-name' value="`'vxlanTun' + $brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip` " />

+<parameter name='tmp.tunnel-dest-ip' value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip` " />

+<parameter name='tmp.tunnel-src-ip' value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-ip` " />

+<parameter name='tmp.tunnel-vni' value="`$brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.vni` " /></set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>

+    <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>

+    <parameter name="target" value="{tunnel-name}"/>

+    <parameter name="replacement" value="`$tmp.tunnel-name`"/>

+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.restapi.vnf-api.service-information`"/>

+    <parameter name="outputPath" value="tmp.vnf-api-url"/>

+    <parameter name="target" value="{vnf-id}"/>

+    <parameter name="replacement" value="`$tmp.ar.brg-vnf-id`"/>

+

+   <!-- 

+   <parameter name="replacement" value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`"/>

+ -->

+    <!--

+    <parameter name="replacement" value="`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`"/>

+-->

+<!--

+brg-ar.allotted-resource-data.brg-topology.brg-assignments

+--></execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vnf-api-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='GET' />

+    <parameter name="responsePrefix" value="service-data" />

+

+<outcome value='success'>

+<block atomic="true">

+<set>

+<parameter name='bk-service-data' value='$service-data.' />

+</set><switch test='`$service-data.service-data_length`'>

+<outcome value='1'>

+<block atomic='true'>

+<set>

+<parameter name='tmp.service-data.' value='$service-data.service-data[0].' />

+</set><switch test='`$tmp.service-data.order-status`'>

+<outcome value='Created'>

+<block>

+</block></outcome><outcome value='Other'>

+<block>

+</block></outcome></switch></block></outcome></switch></block></outcome><outcome value='Other'>

+<block atomic="true">

+</block></outcome></execute><set>

+<parameter name='tmp.service-data.service-information.service-instance-id' value='`$brg-topology-operation-input.service-information.service-instance-id`' />

+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.restapi.services`"/>

+    <parameter name="outputPath" value="tmp.services-url"/>

+    <parameter name="target" value="{service-instance-id}"/>

+    <parameter name="replacement" value="`$tmp.service-data.service-information.service-instance-id`"/>

+<!--  tmp.service-data.service-information.service-instance-id

+brg-topology-operation-input.allotted-resource-information.parent-service-instance-id

+brg-topology-operation-input.service-information.service-instance-id

+

+--></execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.services.templatefile`" />

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.services-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='PUT' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block>

+</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 updating md-sal for brg-allotted-resource" />

+</return></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="Error updating md-sal for brg-allotted-resource" />

+</return></outcome></execute><set>

+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+<parameter name='brg-object-path' value="`$tmp.ar.self-link`"/>

+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $tmp.service-data.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+ 

+ <!--

+brg-topology-operation-input.allotted-resource-information.parent-service-instance-id

+ 

+ brg-topology-operation-input.service-information.service-instance-id

+ -->

+</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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-assign.xml
new file mode 100644
index 0000000..21f0efb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-assign.xml
@@ -0,0 +1,227 @@
+<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='brg-topology-operation-assign' mode='sync'>

+<block atomic="true"><set>

+<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+

+

+</set><set>

+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/tunnelxconn-topology/'` " />

+

+</set><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><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.restapi.brg-allottedresource`"/>

+    <parameter name="outputPath" value="tmp.ar-url"/>

+    <parameter name="target" value="{allotted-resource-id}"/>

+    <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+</execute><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='GENERIC-RESOURCE-API' key='brg-allotted-resources/brg-allotted-resource/$brg-topology-operation-input.allotted-resource-information.allotted-resource-id/' pfx='mdsal-ar' >

+<outcome value='Other'>

+<block atomic="true">

+<set>

+<parameter name='brg-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+<parameter name='brg-ar.allotted-resource-status.action' value="`$brg-topology-operation-input.request-information.request-action` " />

+<parameter name='brg-ar.allotted-resource-status.rpc-name' value="brg-topology-operation" />

+<parameter name='brg-ar.allotted-resource-status.rpc-action' value="`$brg-topology-operation-input.sdnc-request-header.svc-action` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$brg-topology-operation-input.request-information.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$brg-topology-operation-input.sdnc-request-header.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$brg-topology-operation-input.service-information.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$brg-topology-operation-input.allotted-resource-information.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value="`$brg-topology-operation-input.brg-request-input.` " /></set><set>

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+

+</set><set>

+<parameter name='brg-ar-identifiers.consuming-service-instance-id' value="`$brg-topology-operation-input.service-information.service-instance-id` " />

+<parameter name='brg-ar-identifiers.parent-service-instance-id' value="`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />

+<parameter name='brg-ar-identifiers.allotted-resource-type' value="`$brg-topology-operation-input.allotted-resource-information.allotted-resource-type` " />

+<parameter name='brg-ar-identifiers.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+

+</set><set>

+<parameter name='tx-ar.allotted-resource-data.brg-topology.onap-model-information.' 

+value="`$brg-topology-operation-input.allotted-resource-information.onap-model-information.`" />

+

+

+</set><switch test='$brg-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid'>

+<outcome value=''>

+<set>

+<parameter name='brg-ar.allotted-resource-data.brg-topology.onap-model-information.model-invariant-uuid' 

+value="`$ar-model.invariant-uuid`" />

+

+

+</set></outcome></switch><switch test='$brg-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid'>

+<outcome value=''>

+<set>

+<parameter name='brg-ar.allotted-resource-data.brg-topology.onap-model-information.model-uuid' 

+value="`$ar-model.uuid`" />

+

+

+</set></outcome></switch><switch test='$brg-topology-operation-input.allotted-resource-information.onap-model-information.model-version'>

+<outcome value=''>

+<set>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-version' 

+value="`$ar-model.version`" />

+

+

+</set></outcome></switch><switch test='`$ar-model.ecomp-generated-naming`'>

+<outcome value='Y'>

+<block atomic="true">

+<switch test='`$ar-model.naming-policy`'>

+<outcome value='oam_network_policy'>

+<block atomic='true'>

+<set>

+<parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />

+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$tmp.ar-name`"/>

+    <parameter name="outputPath" value="tmp.ar-name"/>

+    <parameter name="target" value="$TenantOAMNetworkRole"/>

+    <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.untrusted-network-role`"/>

+

+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$tmp.ar-name`"/>

+    <parameter name="outputPath" value="tmp.ar-name"/>

+    <parameter name="target" value="$LandingNetworkRole"/>

+    <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.trusted-network-role`"/>

+

+</execute><set>

+<parameter name='brg-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />

+</set></block></outcome><outcome value='Other'>

+<block atomic='true'>

+<set>

+<parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />

+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$tmp.ar-name`"/>

+    <parameter name="outputPath" value="tmp.ar-name"/>

+    <parameter name="target" value="$TenantOAMNetworkRole"/>

+    <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.untrusted-network-role`"/>

+

+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$tmp.ar-name`"/>

+    <parameter name="outputPath" value="tmp.ar-name"/>

+    <parameter name="target" value="$LandingNetworkRole"/>

+    <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.trusted-network-role`"/>

+

+</execute><set>

+<parameter name='brg-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />

+</set></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="Error in allotted-resource-model data.  Ecomp-generated-naming should be true" />

+

+</return></outcome></switch><set>

+<parameter name='brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.' 

+value="`$brg-ar-identifiers.`" />

+

+

+</set><set>

+<parameter name='brg-ar-assignments.vbrg-wan-ip' value='127.0.0.1'/>

+</set><set>

+<parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.' 

+value="`$brg-ar-assignments.`" />

+

+

+</set><switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>

+<outcome value=''>

+<set>

+<parameter name='tmp.cidx' value="`0`" />

+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value="1" />

+

+

+</set></outcome><outcome value='Other'>

+<block atomic="true"><for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >

+<switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">

+

+<outcome value='true'>

+<block atomic="true"><set>

+<parameter name='tmp.cidx' value='`$cidx`' />

+<parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />

+<parameter name='tmp.found-cidx' value='true' /></set><break></break></block></outcome></switch></for><switch test='`$tmp.found-cidx`'>

+<outcome value='false'>

+<block atomic="true"><set>

+<parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />

+</set></block></outcome></switch></block></outcome></switch><set>

+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value="`$brg-topology-operation-input.allotted-resource-information.allotted-resource-type` " />

+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value="`$tmp.ar.self-link` " />

+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />

+

+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+    <parameter name="outputPath" value="tmp.current-time" />

+

+</execute><set>

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingCreate' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+</set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $brg-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $brg-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $brg-topology-operation-input.allotted-resource-information.parent-service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id"

+        pfx='pfx' local-only='false' force='false'>

+	<parameter name="description" value="`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type`" />

+	<parameter name="selflink" value="`$tmp.ar.self-link`" />

+	<parameter name="model-invariant-id" value="`$ar-model.invariant-uuid`" />

+	<parameter name="model-version-id" value="`$ar-model.uuid`" />

+	<parameter name="operational-status" value="null" />

+<outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="AAI failed" />

+</return></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="AAI failed" />

+</return></outcome></update><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`" />

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='PUT' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block>

+<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='DELETE' />

+    <parameter name="responsePrefix" value="parent" />

+

+<outcome value='success'>

+<block></block></outcome><outcome value='failure'>

+<block></block></outcome><outcome value='not-found'>

+<block></block></outcome></execute></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 updating md-sal for tunnelxconn-allotted-resource" />

+</return></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="Error updating md-sal for tunnelxconn-allotted-resource" />

+</return></outcome></execute><set>

+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+<parameter name='tunnelxconn-object-path' value="`$tmp.ar.self-link`"/>

+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $brg-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></outcome></get-resource></block></method></service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-create.xml
new file mode 100644
index 0000000..54c99cb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-create.xml
@@ -0,0 +1,100 @@
+<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='brg-topology-operation-create' mode='sync'>

+<block atomic="true"><set>

+<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+<parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />

+

+

+</set><set>

+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/brg-topology/'` " />

+

+</set><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><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.restapi.brg-allottedresource`"/>

+    <parameter name="outputPath" value="tmp.ar-url"/>

+    <parameter name="target" value="{allotted-resource-id}"/>

+    <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='GET' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block atomic="true">

+<set>

+<parameter name='bk-brg-ar' value='$mdsal-ar.' />

+</set><switch test='`$mdsal-ar.brg-allotted-resource_length`'>

+<outcome value='1'>

+<block atomic='true'>

+<set>

+<parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />

+</set><switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+<outcome value='PendingCreate'>

+<block>

+</block></outcome><outcome value='Other'>

+<block>

+</block></outcome></switch><set>

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+

+</set></block></outcome></switch></block></outcome><outcome value='Other'>

+<block atomic="true">

+</block></outcome></execute><set>

+<parameter name='brg-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+<parameter name='brg-ar.allotted-resource-status.action' value="`$brg-topology-operation-input.request-information.request-action` " />

+<parameter name='brg-ar.allotted-resource-status.rpc-name' value="brg-topology-operation" />

+<parameter name='brg-ar.allotted-resource-status.rpc-action' value="`$brg-topology-operation-input.sdnc-request-header.svc-action` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$brg-topology-operation-input.request-information.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$brg-topology-operation-input.sdnc-request-header.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$brg-topology-operation-input.service-information.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$brg-topology-operation-input.allotted-resource-information.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.' value="`$brg-topology-operation-input.brg-request-input.` " /></set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+    <parameter name="outputPath" value="tmp.current-time" />

+

+</execute><set>

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+</set><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`" />

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='PUT' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block>

+</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 updating md-sal for brg-allotted-resource" />

+</return></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="Error updating md-sal for brg-allotted-resource" />

+</return></outcome></execute><set>

+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+<parameter name='brg-object-path' value="`$tmp.ar.self-link`"/>

+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $brg-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>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-deactivate.xml
new file mode 100644
index 0000000..0fda417
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-deactivate.xml
@@ -0,0 +1,275 @@
+<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='brg-topology-operation-deactivate' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+                <parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+                <parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/' + $tmp.ar.allotted-resource-id + '/allotted-resource-data/brg-topology/'` " />

+            </set>

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.brg-allottedresource`"/>

+                <parameter name="outputPath" value="tmp.ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='bk-brg-ar' value='$mdsal-ar.' />

+                        </set>

+                        <switch test='`$mdsal-ar.brg-allotted-resource_length`'>

+                            <outcome value='1'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />

+                                    </set>

+                                    <switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+                                        <outcome value='Created'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block></block>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+                                        <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />

+                                        <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='brg-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+                <parameter name='brg-ar.allotted-resource-status.action' value="`$brg-topology-operation-input.request-information.request-action` " />

+                <parameter name='brg-ar.allotted-resource-status.rpc-name' value="brg-topology-operation" />

+                <parameter name='brg-ar.allotted-resource-status.rpc-action' value="`$brg-topology-operation-input.sdnc-request-header.svc-action` " />

+                <parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$brg-topology-operation-input.request-information.` " />

+                <parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$brg-topology-operation-input.sdnc-request-header.` " />

+                <parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$brg-topology-operation-input.service-information.` " />

+                <parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$brg-topology-operation-input.allotted-resource-information.` " />

+                <parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.' value="`$brg-topology-operation-input.brg-request-input.` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+                <parameter name="outputPath" value="tmp.current-time" />

+            </execute>

+            <set>

+                <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />

+                <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />

+                <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />

+                <parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+            </set>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+                    resource="allotted-resource"

+                    key="customer.global-customer-id = $brg-topology-operation-input.service-information.global-customer-id AND service-subscription.service-type = $brg-topology-operation-input.service-information.subscription-service-type AND service-instance.service-instance-id = $brg-topology-operation-input.service-information.service-instance-id AND allotted-resource.id = $tmp.ar.allotted-resource-id"

+                    pfx='pfx' local-only='false' force='false'>

+                <parameter name="operational-status" value="out-of-service-path" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="AAI failed" />

+                    </return>

+                </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="AAI failed" />

+                    </return>

+                </outcome>

+            </update>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for brg-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for brg-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='IPADDR' key="SELECT min(ip_addr) ip from DHCP_MAP where mac_addr = $brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.brg-wan-mac-address" pfx="tmp.brg-wan-ip" ></get-resource>

+            <set>

+                <parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip' value='`$tmp.brg-wan-ip.ip`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.consuming-service-instance-id' value='`$allotted-resource-data.brg-topology.allotted-resource-identifiers.consuming-service-instance-id`' />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='get-tunnelxconn-ar' mode='sync' ></call>

+            <set>

+                <parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-lan-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-lan-ip`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.honeycomb.url`"/>

+                <parameter name="outputPath" value="tmp.honeycomb.url"/>

+                <parameter name="target" value="{honeycomb-instance-ip}"/>

+                <parameter name="replacement" value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip`"/>

+            </execute>

+            <set>

+                <parameter name='tmp.tunnel-name' value="`'vxlanTun' + $brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.vgmux-lan-ip` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>

+                <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>

+                <parameter name="target" value="{tunnel-name}"/>

+                <parameter name="replacement" value="`$tmp.tunnel-name`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />

+                <parameter name='restapiUser' value='`$prop.honeycomb.user`' />

+                <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='DELETE' />

+                <parameter name="responsePrefix" value="honeycomb-vnf" />

+                <outcome value='success'>

+                    <block></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 deleting vxlan tunnel" />

+                    </return>

+                </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="Error deleting vxlan tunnel" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip`' />

+            </set>

+            <set>

+                <parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip' value='`$tmp.tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-bearer-ip`' />

+            </set>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='GENERIC-RESOURCE-API' key='services' pfx='tmp.servicedata' >

+                <outcome value='success'>

+                    <for index='serviceidx' start='0' end='`$tmp.servicedata.services.service_length`' >

+                        <switch test='`$tmp.servicedata.services.service[$serviceidx].service-instance-id == $tmp.search.consuming-service-instance-id`'>

+                            <outcome value='true'>

+                                <for index='vnfidx' start='0' end='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf_length`' >

+                                    <for index='vfmoduleidx' start='0' end='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >

+                                        <for index='paramidx' start='0' end='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfmoduleidx].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >

+                                            <switch test='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfmoduleidx].vf-module-data.vf-module-topology.vf-module-parameters.param[$paramidx].name == vgw_private_ip_1`'>

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-mgmt-ip' value='`$tmp.servicedata.services.service[$serviceidx].service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfmoduleidx].vf-module-data.vf-module-topology.vf-module-parameters.param[$paramidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                    </for>

+                                </for>

+                            </outcome>

+                        </switch>

+                    </for>

+                </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 getting GENERIC-RESOURCE-API:services" />

+                    </return>

+                </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="Error getting GENERIC-RESOURCE-API:services" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.honeycomb.url`"/>

+                <parameter name="outputPath" value="tmp.honeycomb.url"/>

+                <parameter name="target" value="{honeycomb-instance-ip}"/>

+                <parameter name="replacement" value="`$brg-ar.allotted-resource-data.brg-topology.brg-assignments.vg-mgmt-ip`"/>

+            </execute>

+            <set>

+                <parameter name='tmp.tunnel-name' value="`'vxlanTun' + $brg-ar.allotted-resource-data.brg-topology.brg-assignments.vgmux-bearer-ip` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>

+                <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>

+                <parameter name="target" value="{tunnel-name}"/>

+                <parameter name="replacement" value="`$tmp.tunnel-name`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />

+                <parameter name='restapiUser' value='`$prop.honeycomb.user`' />

+                <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='DELETE' />

+                <parameter name="responsePrefix" value="honeycomb-vnf" />

+                <outcome value='success'>

+                    <block></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 setting up vxlan tunnel" />

+                    </return>

+                </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="Error setting up vxlan tunnel" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+                <parameter name='brg-object-path' value="`$tmp.ar.self-link`"/>

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $brg-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-delete.xml
new file mode 100644
index 0000000..40effac
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-delete.xml
@@ -0,0 +1,105 @@
+<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='brg-topology-operation-delete' mode='sync'>

+<block atomic="true"><set>

+<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+<parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />

+

+

+</set><set>

+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/brg-topology/'` " />

+

+</set><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><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.restapi.brg-allottedresource`"/>

+    <parameter name="outputPath" value="tmp.ar-url"/>

+    <parameter name="target" value="{allotted-resource-id}"/>

+    <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='GET' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block atomic="true">

+<set>

+<parameter name='bk-brg-ar' value='$mdsal-ar.' />

+</set><switch test='`$mdsal-ar.brg-allotted-resource_length`'>

+<outcome value='1'>

+<block atomic='true'>

+<set>

+<parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />

+</set><switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+<outcome value='Created'>

+<block>

+</block></outcome><outcome value='Other'>

+<block>

+</block></outcome></switch><set>

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+

+</set></block></outcome></switch></block></outcome><outcome value='Other'>

+<block atomic="true">

+</block></outcome></execute><set>

+<parameter name='brg-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+<parameter name='brg-ar.allotted-resource-status.action' value="`$brg-topology-operation-input.request-information.request-action` " />

+<parameter name='brg-ar.allotted-resource-status.rpc-name' value="brg-topology-operation" />

+<parameter name='brg-ar.allotted-resource-status.rpc-action' value="`$brg-topology-operation-input.sdnc-request-header.svc-action` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$brg-topology-operation-input.request-information.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$brg-topology-operation-input.sdnc-request-header.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$brg-topology-operation-input.service-information.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$brg-topology-operation-input.allotted-resource-information.` " />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.' value="`$brg-topology-operation-input.brg-request-input.` " /></set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+    <parameter name="outputPath" value="tmp.current-time" />

+

+</execute><set>

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-topology-operation-input.request-information.request-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-topology-operation-input.sdnc-request-header.svc-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+</set><set>

+<parameter name='brg-ar-assignments.' value="" />

+

+

+

+</set><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.brg.templatefile`" />

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='PUT' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block>

+</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 updating md-sal for brg-allotted-resource" />

+</return></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="Error updating md-sal for brg-allotted-resource" />

+</return></outcome></execute><set>

+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+<parameter name='brg-object-path' value="`$tmp.ar.self-link`"/>

+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $brg-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>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-unassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-unassign.xml
new file mode 100644
index 0000000..0a01dd9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation-unassign.xml
@@ -0,0 +1,81 @@
+<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='brg-topology-operation-unassign' mode='sync'>

+<block atomic="true"><set>

+<parameter name='tmp.ar.allotted-resource-id' value='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+<parameter name='tmp.ar.parent-service-instance-id' value='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+<parameter name='tmp.ar.brg-vnf-id' value='`$brg-topology-operation-input.allotted-resource-data.brg-topology.brg-assignments.brg-vnf-id`' />

+

+

+</set><set>

+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/brg-topology/'` " />

+

+</set><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><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.restapi.brg-allottedresource`"/>

+    <parameter name="outputPath" value="tmp.ar-url"/>

+    <parameter name="target" value="{allotted-resource-id}"/>

+    <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='GET' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block atomic="true">

+<set>

+<parameter name='bk-brg-ar' value='$mdsal-ar.' />

+</set><switch test='`$mdsal-ar.brg-allotted-resource_length`'>

+<outcome value='1'>

+<block atomic='true'>

+<set>

+<parameter name='brg-ar.' value='$mdsal-ar.brg-allotted-resource[0].' />

+</set><switch test='`$brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+<outcome value='Created'>

+<block>

+</block></outcome><outcome value='Other'>

+<block>

+</block></outcome></switch><set>

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$brg-ar.allotted-resource-status.rpc-action`' />

+<parameter name='brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+

+</set></block></outcome></switch></block></outcome><outcome value='Other'>

+<block atomic="true">

+</block></outcome></execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='DELETE' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block>

+</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 updating md-sal for brg-allotted-resource" />

+</return></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="Error updating md-sal for brg-allotted-resource" />

+</return></outcome></execute><set>

+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+<parameter name='brg-object-path' value="`$tmp.ar.self-link`"/>

+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $brg-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>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation.xml
new file mode 100644
index 0000000..90a9389
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_brg-topology-operation.xml
@@ -0,0 +1,26 @@
+<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='brg-topology-operation' mode='sync'>

+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='validate-brg-input' mode='sync' >

+</call><switch test='`$brg-topology-operation-input.sdnc-request-header.svc-action`'>

+<outcome value='assign'>

+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-assign' mode='sync' >

+</call></block></outcome><outcome value='create'>

+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-create' mode='sync' >

+</call></block></outcome><outcome value='activate'>

+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-activate' mode='sync' >

+</call></block></outcome><outcome value='deactivate'>

+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-deactivate' mode='sync' >

+</call></block></outcome><outcome value='delete'>

+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-delete' mode='sync' >

+</call></block></outcome><outcome value='unassign'>

+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='brg-topology-operation-unassign' mode='sync' >

+</call></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="sdnc-request-header.svc-action is a required input" />

+</return></outcome></switch><set>

+<parameter name="ack-final" value="Y"/></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>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_connection-attachment-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_connection-attachment-topology-operation.xml
new file mode 100644
index 0000000..7376942
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_connection-attachment-topology-operation.xml
@@ -0,0 +1,94 @@
+<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='connection-attachment-topology-operation' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-connection-attachment-input' mode='sync' ></call>

+            <switch test='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='create'>

+                    <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>

+                        <outcome value='CreateSOTNAttachmentInstance'>

+                            <call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-create' mode='sync' ></call>

+                        </outcome>

+                        <outcome value='CreateSDWANAttachmentInstance'>

+                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-attachment-topology-operation-create' mode='sync' ></call>

+                        </outcome>

+                        <outcome value='other'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`'Provided request-action=' + $connection-attachment-topology-operation-input.request-information.request-action + ' is not supported.'`" />

+                            </return>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='activate'>

+                    <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>

+                        <outcome value='ActivateSOTNAttachmentInstance'>

+                            <call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-activate' mode='sync' ></call>

+                        </outcome>

+                        <outcome value='ActivateSDWANAttachmentInstance'>

+                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-attachment-topology-operation-activate' mode='sync' ></call>

+                        </outcome>

+                        <outcome value='other'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`'Provided request-action=' + $connection-attachment-topology-operation-input.request-information.request-action + ' is not supported.'`" />

+                            </return>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='deactivate'>

+                    <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>

+                        <outcome value='DeactivateSOTNAttachmentInstance'>

+                            <call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-deactivate' mode='sync' ></call>

+                        </outcome>

+                        <outcome value='DeactivateSDWANAttachmentInstance'>

+                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-attachment-topology-operation-deactivate' mode='sync' ></call>

+                        </outcome>

+                        <outcome value='other'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`'Provided request-action=' + $connection-attachment-topology-operation-input.request-information.request-action + ' is not supported.'`" />

+                            </return>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='delete'>

+                    <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>

+                        <outcome value='DeleteSOTNAttachmentInstance'>

+                            <call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-delete' mode='sync' ></call>

+                        </outcome>

+                        <outcome value='DeleteSDWANAttachmentInstance'>

+                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-attachment-topology-operation-delete' mode='sync' ></call>

+                        </outcome>

+                        <outcome value='other'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`'Provided request-action=' + $connection-attachment-topology-operation-input.request-information.request-action + ' is not supported.'`" />

+                            </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="sdnc-request-header.svc-action is invalid" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="ack-final" value="Y"/>

+            </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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-activate.xml
new file mode 100755
index 0000000..06756c6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-activate.xml
@@ -0,0 +1,341 @@
+<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='contrail-route-topology-operation-activate' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+                <parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/contrail-route-topology/'` " />

+            </set>

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>

+                <parameter name="outputPath" value="tmp.ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block atomic="true">

+                        <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>

+                            <outcome value='1'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='bk-cr-ar' value='$mdsal-ar.' />

+                                    </set>

+                                    <set>

+                                        <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />

+                                    </set>

+                                    <switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+                                        <outcome value='Created'>

+                                            <block></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="`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + ', expecting Created.'`" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />

+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="Error: Contrail Route not found" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="404" />

+                            <parameter name="error-message" value="Error: Contrail Route not found" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+                <parameter name='ar.allotted-resource-status.action' value="`$contrail-route-topology-operation-input.request-information.request-action` " />

+                <parameter name='ar.allotted-resource-status.rpc-name' value="contrail-route-topology-operation" />

+                <parameter name='ar.allotted-resource-status.rpc-action' value="`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` " />

+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$contrail-route-topology-operation-input.request-information.` " />

+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$contrail-route-topology-operation-input.sdnc-request-header.` " />

+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$contrail-route-topology-operation-input.service-information.` " />

+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$contrail-route-topology-operation-input.allotted-resource-information.` " />

+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.` " />

+            </set>

+            <set>

+                <parameter name='ar-assignments.' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`" />

+            </set>

+            <switch test='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error activating contrail route.  Source network not found" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <switch test='`$service-data.networks.network_length`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Error activating contrail route.  Source network not found" />

+                                </return>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block atomic="true">

+                                    <for index='nidx' start='0' end='`$service-data.networks.network_length`' >

+                                        <switch test="`$service-data.networks.network[$nidx].network-id == $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`">

+                                            <outcome value='true'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />

+                                                    </set>

+                                                </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="Error activating contrail route.  Source network not found" />

+                                                </return>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='tmp.fq-name' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name` " />

+            </set>

+            <set>

+                <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >

+                <parameter name='api-name' value='network-policy' />

+                <parameter name='api-action' value='apply' />

+                <parameter name='resp-prefix' value='contrailResp' />

+                <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />

+                <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />

+                <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.contrail-fq-name`' />

+                <parameter name='contrail-virtual-network-id' value='`$aai.src-network.contrail-network-fqdn`' />

+                <outcome value='success'>

+                    <block></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="Failed to apply policy in Contrail to source network" />

+                    </return>

+                </outcome>

+            </execute>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id" 

+		local-only="false" 

+		pfx="aai.dest-network">

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />

+                    </return>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+            </get-resource>

+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >

+                <parameter name='api-name' value='network-policy' />

+                <parameter name='api-action' value='apply' />

+                <parameter name='resp-prefix' value='contrailResp' />

+                <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />

+                <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />

+                <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.contrail-fq-name`' />

+                <parameter name='contrail-virtual-network-id' value='`$aai.dest-network.contrail-network-fqdn`' />

+                <outcome value='success'>

+                    <block></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="Failed to apply policy in Contrail to source network" />

+                    </return>

+                </outcome>

+            </execute>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+resource="related-link"

+key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id"

+local-only="true"

+pfx="tmp.AnAI-src">

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Failed to get related link for l3-network in AAI" />

+                    </return>

+                </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="Failed to get related link for l3-network in AAI" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+resource="related-link"

+key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id"

+local-only="true"

+pfx="tmp.AnAI-dest">

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Failed to get related link for l3-network in AAI" />

+                    </return>

+                </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="Failed to get related link for l3-network in AAI" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="network-policy:relationship-list" 

+	key="network-policy.network-policy-id = $ar-assignments.contrail-id" >

+                <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`tmp.AnAI-src.related-link`" />

+                <parameter name="relationship-list.relationship[1].related-to" value="l3-network" />

+                <parameter name="relationship-list.relationship[1].related-link" value="`tmp.AnAI-dest.related-link`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Failed to save network policy in AAI" />

+                    </return>

+                </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="Failed to save network policy in AAI" />

+                    </return>

+                </outcome>

+            </save>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id"

+        pfx='pfx' local-only='false' force='false'>

+                <parameter name="operational-status" value="in-service-path" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="AAI failed" />

+                    </return>

+                </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="AAI failed" />

+                    </return>

+                </outcome>

+            </update>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+                <parameter name="outputPath" value="tmp.current-time" />

+            </execute>

+            <set>

+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />

+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />

+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />

+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for contrail-route-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for contrail-route-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+                <parameter name='contrail-route-object-path' value="`$tmp.ar.self-link`"/>

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $contrail-route-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-assign.xml
new file mode 100755
index 0000000..444b50d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-assign.xml
@@ -0,0 +1,981 @@
+<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='contrail-route-topology-operation-assign' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+                <parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+                <parameter name='tmp.ar.contrail-applied-service-instance-id' value='`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.service-instance-id`' />
+                <parameter name='tmp.ar.allotted-resource-type' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type`' />
+            </set>
+            <set>
+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+                <parameter name="outputPath" value="tmp.ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.network`"/>
+                <parameter name="outputPath" value="tmp.ar-parentnetwork-url"/>
+                <parameter name="target" value="{service-instance-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.vnf`"/>
+                <parameter name="outputPath" value="tmp.ar-contrailappliedsvc-url"/>
+                <parameter name="target" value="{service-instance-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.contrail-applied-service-instance-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.parent-provided-resource`"/>
+                <parameter name="outputPath" value="tmp.parent-ar-url"/>
+                <parameter name="target" value="{service-instance-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$tmp.parent-ar-url`"/>
+                <parameter name="outputPath" value="tmp.parent-ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.network-provided-resource`"/>
+                <parameter name="outputPath" value="tmp.network-ar-url"/>
+                <parameter name="target" value="{service-instance-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+                            <outcome value='1'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="Error: Existing contrail route allotted resource" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true"></block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+                <parameter name='ar.allotted-resource-status.action' value="`$contrail-route-topology-operation-input.request-information.request-action` " />
+                <parameter name='ar.allotted-resource-status.rpc-name' value="contrail-route-topology-operation" />
+                <parameter name='ar.allotted-resource-status.rpc-action' value="`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$contrail-route-topology-operation-input.request-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$contrail-route-topology-operation-input.sdnc-request-header.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$contrail-route-topology-operation-input.service-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$contrail-route-topology-operation-input.allotted-resource-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.` " />
+            </set>
+            <set>
+                <parameter name='ar-identifiers.consuming-service-instance-id' value="`$contrail-route-topology-operation-input.service-information.service-instance-id` " />
+                <parameter name='ar-identifiers.parent-service-instance-id' value="`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />
+                <parameter name='ar-identifiers.allotted-resource-type' value="`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type` " />
+                <parameter name='ar-identifiers.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+            </set>
+            <set>
+                <parameter name='ar.allotted-resource-data.contrail-route-topology.onap-model-information.' 
+value="`$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.`" />
+            </set>
+            <switch test='$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid'>
+                <outcome value=''>
+                    <set>
+                        <parameter name='ar.allotted-resource-data.contrail-route-topology.onap-model-information.model-invariant-uuid' 
+value="`$ar-model.invariant-uuid`" />
+                    </set>
+                </outcome>
+            </switch>
+            <switch test='$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid'>
+                <outcome value=''>
+                    <set>
+                        <parameter name='sar.allotted-resource-data.contrail-route-topology.onap-model-information.model-uuid' 
+value="`$ar-model.uuid`" />
+                    </set>
+                </outcome>
+            </switch>
+            <switch test='$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-version'>
+                <outcome value=''>
+                    <set>
+                        <parameter name='ar.allotted-resource-data.contrail-route-topology.onap-model-information.model-version' 
+value="`$ar-model.version`" />
+                    </set>
+                </outcome>
+            </switch>
+            <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id`'>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Error assigning contrail route.  Source network not found" />
+                    </return>
+                </outcome>
+                <outcome value='Other'>
+                    <block>
+                        <switch test='`$service-data.networks.network_length`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="Error assigning contrail route.  Source network not found" />
+                                </return>
+                            </outcome>
+                            <outcome value='Other'>
+                                <block atomic="true">
+                                    <set>
+                                        <parameter name='source-network-found' value='false' />
+                                    </set>
+                                    <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+                                        <block>
+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+                                                <parameter name="logger" value="message-log"/>
+                                                <parameter name="field1" value="__TIMESTAMP__"/>
+                                                <parameter name="field2" value="tmp.ar-name="/>
+                                                <parameter name="field3" value="`$tmp.ar-name`"/>
+                                                <parameter name="field4" value="service-data-network-id" />
+                                                <parameter name="field5" value="`$service-data.networks.network[$nidx].network-id`" />
+                                                <parameter name="field6" value="contrail-route-input-network-id" />
+                                                <parameter name="field7" value="`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id`" />
+                                                <parameter name="field8" value="`$nidx`" />
+                                            </record>
+                                            <switch test="`$service-data.networks.network[$nidx].network-id == $contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id`">
+                                                <outcome value='true'>
+                                                    <block>
+                                                        <set>
+                                                            <parameter name='tmp.ar.tenant-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.tenant`' />
+                                                            <parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />
+                                                            <parameter name='source-network-found' value='true' />
+                                                        </set>
+                                                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="tenant" 
+		key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND 
+		     cloud-region.cloud-region-id = $tmp.ar.cloud-region-id AND
+		     tenant.tenant-id = $tmp.ar.tenant-id"
+        pfx='aai.tenant' local-only='false' >
+                                                            <outcome value='success'>
+                                                                <block atomic="true">
+                                                                    <set>
+                                                                        <parameter name='tmp.ar.tenant-name' value='`$aai.tenant.tenant-name`' />
+                                                                    </set>
+                                                                </block>
+                                                            </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="Tenant not found in AAI" />
+                                                                </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="Tenant not found in AAI" />
+                                                                </return>
+                                                            </outcome>
+                                                        </get-resource>
+                                                    </block>
+                                                </outcome>
+                                            </switch>
+                                        </block>
+                                    </for>
+                                    <switch test="`$source-network-found`">
+                                        <outcome value='false'>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="Error assigning contrail route.  Source network not found" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+            </switch>
+            <switch test='`$ar-model.ecomp-generated-naming`'>
+                <outcome value='Y'>
+                    <block atomic="true">
+                        <switch test='`$ar-model.naming-policy`'>
+                            <outcome value='oam_network_policy'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='tmp.ar-name' value='$TenantName_$CloudRegionID_$TenantNetworkRole_$LandingNetworkRole_policy_' />
+                                    </set>
+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                                        <parameter name="source" value="`$tmp.ar-name`"/>
+                                        <parameter name="outputPath" value="tmp.ar-name"/>
+                                        <parameter name="target" value="$TenantName"/>
+                                        <parameter name="replacement" value="`$tmp.ar.tenant-name`"/>
+                                    </execute>
+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                                        <parameter name="source" value="`$tmp.ar-name`"/>
+                                        <parameter name="outputPath" value="tmp.ar-name"/>
+                                        <parameter name="target" value="$CloudRegionID"/>
+                                        <parameter name="replacement" value="`$tmp.ar.cloud-region-id`"/>
+                                    </execute>
+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                                        <parameter name="source" value="`$tmp.ar-name`"/>
+                                        <parameter name="outputPath" value="tmp.ar-name"/>
+                                        <parameter name="target" value="$TenantNetworkRole"/>
+                                        <parameter name="replacement" value="`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-role`"/>
+                                    </execute>
+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                                        <parameter name="source" value="`$tmp.ar-name`"/>
+                                        <parameter name="outputPath" value="tmp.ar-name"/>
+                                        <parameter name="target" value="$LandingNetworkRole"/>
+                                        <parameter name="replacement" value="`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-role`"/>
+                                    </execute>
+                                    <set>
+                                        <parameter name='generate-unique-name-input.index-table-name' value='CONTRAIL_ROUTE_NAME_INDEX' />
+                                        <parameter name='generate-unique-name-input.index-table-prefix-column' value='contrail_route_name_prefix' />
+                                        <parameter name='generate-unique-name-input.name-table-type' value='CONTRAIL_ROUTE_INSTANCE' />
+                                        <parameter name='generate-unique-name-input.prefix' value="`$tmp.ar-name`" />
+                                        <parameter name='generate-unique-name-input.index-length' value='2' />
+                                    </set>
+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+                                        <parameter name="logger" value="message-log"/>
+                                        <parameter name="field1" value="__TIMESTAMP__"/>
+                                        <parameter name="field2" value="tmp.ar-name="/>
+                                        <parameter name="field3" value="`$tmp.ar-name`"/>
+                                        <parameter name="field4" value="generate-unique-name-input.prefix" />
+                                        <parameter name="field5" value="`$generate-unique-name-input.prefix`" />
+                                    </record>
+                                    <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >
+                                        <outcome value='failure'>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />
+                                            </return>
+                                        </outcome>
+                                        <outcome value='success'>
+                                            <set>
+                                                <parameter name='tmp.ar-name' value='`$generate-unique-name-output.generated-name`' />
+                                            </set>
+                                        </outcome>
+                                    </call>
+                                    <set>
+                                        <parameter name='ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />
+                                    </set>
+                                </block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='tmp.ar-name' value='$TenantName_$CloudRegionID_$TenantNetworkRole_$LandingNetworkRole_policy_' />
+                                    </set>
+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                                        <parameter name="source" value="`$tmp.ar-name`"/>
+                                        <parameter name="outputPath" value="tmp.ar-name"/>
+                                        <parameter name="target" value="$TenantName"/>
+                                        <parameter name="replacement" value="`$tmp.ar.tenant-name`"/>
+                                    </execute>
+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                                        <parameter name="source" value="`$tmp.ar-name`"/>
+                                        <parameter name="outputPath" value="tmp.ar-name"/>
+                                        <parameter name="target" value="$CloudRegionID"/>
+                                        <parameter name="replacement" value="`$tmp.ar.cloud-region-id`"/>
+                                    </execute>
+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                                        <parameter name="source" value="`$tmp.ar-name`"/>
+                                        <parameter name="outputPath" value="tmp.ar-name"/>
+                                        <parameter name="target" value="$TenantNetworkRole"/>
+                                        <parameter name="replacement" value="`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-role`"/>
+                                    </execute>
+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                                        <parameter name="source" value="`$tmp.ar-name`"/>
+                                        <parameter name="outputPath" value="tmp.ar-name"/>
+                                        <parameter name="target" value="$LandingNetworkRole"/>
+                                        <parameter name="replacement" value="`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-role`"/>
+                                    </execute>
+                                    <set>
+                                        <parameter name='generate-unique-name-input.index-table-name' value='CONTRAIL_ROUTE_NAME_INDEX' />
+                                        <parameter name='generate-unique-name-input.index-table-prefix-column' value='contrail_route_name_prefix' />
+                                        <parameter name='generate-unique-name-input.name-table-type' value='CONTRAIL_ROUTE_INSTANCE' />
+                                        <parameter name='generate-unique-name-input.prefix' value="`$tmp.ar-name`" />
+                                        <parameter name='generate-unique-name-input.index-length' value='2' />
+                                    </set>
+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+                                        <parameter name="logger" value="message-log"/>
+                                        <parameter name="field1" value="__TIMESTAMP__"/>
+                                        <parameter name="field2" value="tmp.ar-name="/>
+                                        <parameter name="field3" value="`$tmp.ar-name`"/>
+                                        <parameter name="field4" value="generate-unique-name-input.prefix" />
+                                        <parameter name="field5" value="`$generate-unique-name-input.prefix`" />
+                                    </record>
+                                    <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >
+                                        <outcome value='failure'>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />
+                                            </return>
+                                        </outcome>
+                                        <outcome value='success'>
+                                            <set>
+                                                <parameter name='tmp.ar-name' value='`$generate-unique-name-output.generated-name`' />
+                                            </set>
+                                        </outcome>
+                                    </call>
+                                    <set>
+                                        <parameter name='ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />
+                                    </set>
+                                </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="Error in allotted-resource-model data.  Ecomp-generated-naming should be true" />
+                    </return>
+                </outcome>
+            </switch>
+            <set>
+                <parameter name='ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.' 
+value="`$ar-identifiers.`" />
+            </set>
+            <set>
+                <parameter name='ar-assignments.source-network.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.` " />
+                <parameter name='ar-assignments.dest-network.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.` " />
+                <parameter name='ar-assignments.contrail-applied-service.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.` " />
+            </set>
+            <set>
+                <parameter name='tmp.fq-name' value='$defaultDomain.$defaultProject.$sdncNetworkPolicy' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$tmp.fq-name`"/>
+                <parameter name="outputPath" value="tmp.fq-name"/>
+                <parameter name="target" value="$defaultDomain"/>
+                <parameter name="replacement" value="default-domain"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$tmp.fq-name`"/>
+                <parameter name="outputPath" value="tmp.fq-name"/>
+                <parameter name="target" value="$defaultProject"/>
+                <parameter name="replacement" value="`$tmp.ar.tenant-name`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$tmp.fq-name`"/>
+                <parameter name="outputPath" value="tmp.fq-name"/>
+                <parameter name="target" value="$sdncNetworkPolicy"/>
+                <parameter name="replacement" value="`$tmp.ar-name`"/>
+            </execute>
+            <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-id`'>
+                <outcome value=''>
+                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-parentnetwork-url`' />
+                        <parameter name='restapiUser' value='`$prop.controller.user`' />
+                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                        <parameter name='format' value='json' />
+                        <parameter name='httpMethod' value='GET' />
+                        <parameter name="responsePrefix" value="parent-net" />
+                        <outcome value='success'>
+                            <block atomic="true">
+                                <switch test='`$parent-net.networks.network_length`'>
+                                    <outcome value='1'>
+                                        <set>
+                                            <parameter name='ar-assignments.dest-network.network-id' value="`$parent-net.networks.network[0].network-id` " />
+                                        </set>
+                                    </outcome>
+                                    <outcome value='Other'>
+                                        <return status='failure'>
+                                            <parameter name='ack-final' value='Y'/>
+                                            <parameter name="error-code" value="500" />
+                                            <parameter name="error-message" value="Error: Network id not found.  Parent Service should only have one network" />
+                                        </return>
+                                    </outcome>
+                                </switch>
+                            </block>
+                        </outcome>
+                        <outcome value='Other'>
+                            <block atomic="true">
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="Error: No existing parent netorks" />
+                                </return>
+                            </block>
+                        </outcome>
+                    </execute>
+                </outcome>
+                <outcome value='Other'>
+                    <set>
+                        <parameter name='ar-assignments.dest-network.network-id' value="`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-id` " />
+                    </set>
+                </outcome>
+            </switch>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-contrailappliedsvc-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="vnf" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <switch test='`$vnf.vnfs.vnf_length`'>
+                            <outcome value='1'>
+                                <set>
+                                    <parameter name='ar-assignments.contrail-applied-service.vnf-id' value="`$vnf.vnfs.vnf[0].vnf-id` " />
+                                </set>
+                            </outcome>
+                            <outcome value='Other'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="Error: vnf id not found.  Contrail applied service should only have one vnf" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true">
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Error: No existing contrail applied service vnfs" />
+                        </return>
+                    </block>
+                </outcome>
+            </execute>
+            <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.contrail-fqdn`'>
+                <outcome value=''>
+                    <block atomic="true">
+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="generic-vnf" 
+		key="generic-vnf.vnf-id = $ar-assignments.contrail-applied-service.vnf-id"
+        pfx='aai.vnf' local-only='false' >
+                            <outcome value='not-found'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="Vnf not found in AAI" />
+                                </return>
+                            </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 retrieving vnf from AAI" />
+                                </return>
+                            </outcome>
+                        </get-resource>
+                        <switch test='`$aai.vnf.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 not found in AAI" />
+                                </return>
+                            </outcome>
+                            <outcome value='Other'>
+                                <for index='idx' start='0' end='`$aai.vnf.vf-modules.vf-module_length`' >
+                                    <switch test='`$aai.vnf.vf-modules.vf-module[$idx].contrail-service-instance-fqdn`'>
+                                        <outcome value=''>
+                                            <block></block>
+                                        </outcome>
+                                        <outcome value='Other'>
+                                            <block>
+                                                <set>
+                                                    <parameter name='ar-assignments.contrail-applied-service.contrail-fqdn' value="`$aai.vnf.vf-modules.vf-module[$idx].contrail-service-instance-fqdn` " />
+                                                </set>
+                                                <break/>
+                                            </block>
+                                        </outcome>
+                                    </switch>
+                                </for>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <set>
+                        <parameter name='ar-assignments.contrail-applied-service.contrail-fqdn' value="`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.contrail-fqdn` " />
+                    </set>
+                </outcome>
+            </switch>
+            <switch test='`$ar-assignments.contrail-applied-service.contrail-fqdn`'>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Error: No vf-module with contrail-service-instance-fqdn found in AAI" />
+                    </return>
+                </outcome>
+            </switch>
+            <set>
+                <parameter name='ar-assignments.fq-name' value="`$tmp.fq-name` " />
+            </set>
+            <set>
+                <parameter name='ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.' 
+value="`$ar-assignments.`" />
+            </set>
+            <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>
+                <outcome value=''>
+                    <set>
+                        <parameter name='tmp.cidx' value="`0`" />
+                        <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value="1" />
+                    </set>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true">
+                        <for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >
+                            <switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">
+                                <outcome value='true'>
+                                    <block atomic="true">
+                                        <set>
+                                            <parameter name='tmp.cidx' value='`$cidx`' />
+                                            <parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />
+                                            <parameter name='tmp.found-cidx' value='true' />
+                                        </set>
+                                        <break/>
+                                    </block>
+                                </outcome>
+                            </switch>
+                        </for>
+                        <switch test='`$tmp.found-cidx`'>
+                            <outcome value='false'>
+                                <block atomic="true">
+                                    <set>
+                                        <parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />
+                                    </set>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+            </switch>
+            <set>
+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value="`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type` " />
+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value="`$tmp.ar.self-link` " />
+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+                <parameter name="outputPath" value="tmp.current-time" />
+            </execute>
+            <set>
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingCreate' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+            </set>
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="allotted-resource" 
+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+			allotted-resource.id = $tmp.ar.allotted-resource-id"
+        pfx='pfx' local-only='false' force='false'>
+                <parameter name="description" value="`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type`" />
+                <parameter name="selflink" value="`$tmp.ar.self-link`" />
+                <parameter name="model-invariant-id" value="`$ar-model.invariant-uuid`" />
+                <parameter name="model-version-id" value="`$ar-model.uuid`" />
+                <parameter name="operational-status" value="null" />
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="AAI failed" />
+                    </return>
+                </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="AAI failed" />
+                    </return>
+                </outcome>
+            </update>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name="responsePrefix" value="parent" />
+                <outcome value='success'>
+                    <block></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 updating md-sal for contrail-route-allotted-resource" />
+                    </return>
+                </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="Error updating md-sal for contrail-route-allotted-resource" />
+                    </return>
+                </outcome>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$tmp.network-ar-url`"/>
+                <parameter name="outputPath" value="tmp.network-ar-url"/>
+                <parameter name="target" value="{network-id}"/>
+                <parameter name="replacement" value="`$ar-assignments.dest-network.network-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="net-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='tmp.found-nidx' value='false' />
+                        </set>
+                        <switch test='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`'>
+                            <outcome value=''>
+                                <block atomic="true">
+                                    <set>
+                                        <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value="1" />
+                                        <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id[0]' value="`$tmp.ar.allotted-resource-id`" />
+                                    </set>
+                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+                                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+                                        <parameter name='restapiUser' value='`$prop.controller.user`' />
+                                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                                        <parameter name='format' value='json' />
+                                        <parameter name='httpMethod' value='PUT' />
+                                        <parameter name="responsePrefix" value="p-network-ar" />
+                                        <outcome value='success'>
+                                            <block></block>
+                                        </outcome>
+                                        <outcome value='failure'>
+                                            <block></block>
+                                        </outcome>
+                                        <outcome value='not-found'>
+                                            <block></block>
+                                        </outcome>
+                                    </execute>
+                                </block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <block atomic="true">
+                                    <for index='nidx' start='0' end='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' >
+                                        <switch test="`$net-ar.network-provided-allotted-resources.network-provided-ar-id[$nidx] == $tmp.ar.allotted-resource-id`">
+                                            <outcome value='true'>
+                                                <block atomic="true">
+                                                    <set>
+                                                        <parameter name='tmp.found-nidx' value='true' />
+                                                    </set>
+                                                    <break/>
+                                                </block>
+                                            </outcome>
+                                        </switch>
+                                    </for>
+                                    <switch test='`$tmp.found-nidx`'>
+                                        <outcome value='false'>
+                                            <block atomic="true">
+                                                <set>
+                                                    <parameter name='tmp.nidx' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' />
+                                                </set>
+                                                <set>
+                                                    <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length + 1`' />
+                                                    <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id[$tmp.nidx]' value="`$tmp.ar.allotted-resource-id`" />
+                                                </set>
+                                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                                    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+                                                    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+                                                    <parameter name='restapiUser' value='`$prop.controller.user`' />
+                                                    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                                                    <parameter name='format' value='json' />
+                                                    <parameter name='httpMethod' value='PUT' />
+                                                    <parameter name="responsePrefix" value="p-network-ar" />
+                                                    <outcome value='success'>
+                                                        <block></block>
+                                                    </outcome>
+                                                    <outcome value='failure'>
+                                                        <block></block>
+                                                    </outcome>
+                                                    <outcome value='not-found'>
+                                                        <block></block>
+                                                    </outcome>
+                                                </execute>
+                                            </block>
+                                        </outcome>
+                                    </switch>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='not-found'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='tmp.found-nidx' value='false' />
+                        </set>
+                        <switch test='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`'>
+                            <outcome value=''>
+                                <block atomic="true">
+                                    <set>
+                                        <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value="1" />
+                                        <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id[0]' value="`$tmp.ar.allotted-resource-id`" />
+                                    </set>
+                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+                                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+                                        <parameter name='restapiUser' value='`$prop.controller.user`' />
+                                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                                        <parameter name='format' value='json' />
+                                        <parameter name='httpMethod' value='PUT' />
+                                        <parameter name="responsePrefix" value="p-network-ar" />
+                                        <outcome value='success'>
+                                            <block></block>
+                                        </outcome>
+                                        <outcome value='failure'>
+                                            <block></block>
+                                        </outcome>
+                                        <outcome value='not-found'>
+                                            <block></block>
+                                        </outcome>
+                                    </execute>
+                                </block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <block atomic="true">
+                                    <for index='nidx' start='0' end='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' >
+                                        <switch test="`$net-ar.network-provided-allotted-resources.network-provided-ar-id[$nidx] == $tmp.ar.allotted-resource-id`">
+                                            <outcome value='true'>
+                                                <block atomic="true">
+                                                    <set>
+                                                        <parameter name='tmp.found-nidx' value='true' />
+                                                    </set>
+                                                    <break/>
+                                                </block>
+                                            </outcome>
+                                        </switch>
+                                    </for>
+                                    <switch test='`$tmp.found-nidx`'>
+                                        <outcome value='false'>
+                                            <block atomic="true">
+                                                <set>
+                                                    <parameter name='tmp.nidx' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' />
+                                                </set>
+                                                <set>
+                                                    <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length + 1`' />
+                                                    <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id[$tmp.nidx]' value="`$tmp.ar.allotted-resource-id`" />
+                                                </set>
+                                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                                    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+                                                    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+                                                    <parameter name='restapiUser' value='`$prop.controller.user`' />
+                                                    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                                                    <parameter name='format' value='json' />
+                                                    <parameter name='httpMethod' value='PUT' />
+                                                    <parameter name="responsePrefix" value="p-network-ar" />
+                                                    <outcome value='success'>
+                                                        <block></block>
+                                                    </outcome>
+                                                    <outcome value='failure'>
+                                                        <block></block>
+                                                    </outcome>
+                                                    <outcome value='not-found'>
+                                                        <block></block>
+                                                    </outcome>
+                                                </execute>
+                                            </block>
+                                        </outcome>
+                                    </switch>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='failure'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='tmp.found-nidx' value='false' />
+                        </set>
+                        <switch test='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`'>
+                            <outcome value=''>
+                                <block atomic="true">
+                                    <set>
+                                        <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value="1" />
+                                        <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id[0]' value="`$tmp.ar.allotted-resource-id`" />
+                                    </set>
+                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+                                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+                                        <parameter name='restapiUser' value='`$prop.controller.user`' />
+                                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                                        <parameter name='format' value='json' />
+                                        <parameter name='httpMethod' value='PUT' />
+                                        <parameter name="responsePrefix" value="p-network-ar" />
+                                        <outcome value='success'>
+                                            <block></block>
+                                        </outcome>
+                                        <outcome value='failure'>
+                                            <block></block>
+                                        </outcome>
+                                        <outcome value='not-found'>
+                                            <block></block>
+                                        </outcome>
+                                    </execute>
+                                </block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <block atomic="true">
+                                    <for index='nidx' start='0' end='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' >
+                                        <switch test="`$net-ar.network-provided-allotted-resources.network-provided-ar-id[$nidx] == $tmp.ar.allotted-resource-id`">
+                                            <outcome value='true'>
+                                                <block atomic="true">
+                                                    <set>
+                                                        <parameter name='tmp.found-nidx' value='true' />
+                                                    </set>
+                                                    <break/>
+                                                </block>
+                                            </outcome>
+                                        </switch>
+                                    </for>
+                                    <switch test='`$tmp.found-nidx`'>
+                                        <outcome value='false'>
+                                            <block atomic="true">
+                                                <set>
+                                                    <parameter name='tmp.nidx' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' />
+                                                </set>
+                                                <set>
+                                                    <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length + 1`' />
+                                                    <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id[$tmp.nidx]' value="`$tmp.ar.allotted-resource-id`" />
+                                                </set>
+                                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                                    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+                                                    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+                                                    <parameter name='restapiUser' value='`$prop.controller.user`' />
+                                                    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                                                    <parameter name='format' value='json' />
+                                                    <parameter name='httpMethod' value='PUT' />
+                                                    <parameter name="responsePrefix" value="p-network-ar" />
+                                                    <outcome value='success'>
+                                                        <block></block>
+                                                    </outcome>
+                                                    <outcome value='failure'>
+                                                        <block></block>
+                                                    </outcome>
+                                                    <outcome value='not-found'>
+                                                        <block></block>
+                                                    </outcome>
+                                                </execute>
+                                            </block>
+                                        </outcome>
+                                    </switch>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='failure'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />
+                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />
+                            <parameter name='restapiUser' value='`$prop.controller.user`' />
+                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                            <parameter name='format' value='json' />
+                            <parameter name='httpMethod' value='DELETE' />
+                            <parameter name="responsePrefix" value="parent" />
+                            <outcome value='success'>
+                                <block></block>
+                            </outcome>
+                            <outcome value='failure'>
+                                <block></block>
+                            </outcome>
+                            <outcome value='not-found'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource.  Parent provided resource rolled back" />
+                        </return>
+                    </block>
+                </outcome>
+                <outcome value='not-found'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />
+                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />
+                            <parameter name='restapiUser' value='`$prop.controller.user`' />
+                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                            <parameter name='format' value='json' />
+                            <parameter name='httpMethod' value='DELETE' />
+                            <parameter name="responsePrefix" value="parent" />
+                            <outcome value='success'>
+                                <block></block>
+                            </outcome>
+                            <outcome value='failure'>
+                                <block></block>
+                            </outcome>
+                            <outcome value='not-found'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="Error updating md-sal for contrail-route-allotted-resource.  Parent provided resource rolled back" />
+                        </return>
+                    </block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+                <parameter name='contrail-route-object-path' value="`$tmp.ar.self-link`"/>
+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $contrail-route-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-create.xml
new file mode 100755
index 0000000..2f3c907
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-create.xml
@@ -0,0 +1,380 @@
+<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='contrail-route-topology-operation-create' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+                <parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+            </set>
+            <set>
+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+                <parameter name="outputPath" value="tmp.ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+                            <outcome value='1'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='bk-cr-ar' value='$mdsal-ar.' />
+                                    </set>
+                                    <set>
+                                        <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />
+                                    </set>
+                                </block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="404" />
+                                    <parameter name="error-message" value="Error: Contrail Route not found" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true">
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="404" />
+                            <parameter name="error-message" value="Error: Contrail Route not found" />
+                        </return>
+                    </block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+                <parameter name='ar.allotted-resource-status.action' value="`$contrail-route-topology-operation-input.request-information.request-action` " />
+                <parameter name='ar.allotted-resource-status.rpc-name' value="contrail-route-topology-operation" />
+                <parameter name='ar.allotted-resource-status.rpc-action' value="`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$contrail-route-topology-operation-input.request-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$contrail-route-topology-operation-input.sdnc-request-header.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$contrail-route-topology-operation-input.service-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$contrail-route-topology-operation-input.allotted-resource-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.` " />
+            </set>
+            <set>
+                <parameter name='ar-assignments.' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`" />
+            </set>
+            <switch test='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`'>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Error assigning contrail route.  Source network not found" />
+                    </return>
+                </outcome>
+                <outcome value='Other'>
+                    <block>
+                        <switch test='`$service-data.networks.network_length`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="Error assigning contrail route.  Source network not found" />
+                                </return>
+                            </outcome>
+                            <outcome value='Other'>
+                                <block atomic="true">
+                                    <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+                                        <switch test="`$service-data.networks.network[$nidx].network-id == $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`">
+                                            <outcome value='true'>
+                                                <block>
+                                                    <set>
+                                                        <parameter name='tmp.ar.tenant-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.tenant`' />
+                                                        <parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />
+                                                    </set>
+                                                    <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="tenant" 
+		key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND 
+		     cloud-region.cloud-region-id = $tmp.ar.cloud-region-id AND
+		     tenant.tenant-id = $tmp.ar.tenant-id"
+        pfx='aai.tenant' local-only='false' >
+                                                        <outcome value='success'>
+                                                            <block atomic="true">
+                                                                <set>
+                                                                    <parameter name='tmp.ar.tenant-name' value='`$aai.tenant.tenant-name`' />
+                                                                </set>
+                                                            </block>
+                                                        </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="Tenant not found in AAI" />
+                                                            </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="Tenant not found in AAI" />
+                                                            </return>
+                                                        </outcome>
+                                                    </get-resource>
+                                                </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="Error assigning contrail route.  Source network not found" />
+                                                </return>
+                                            </outcome>
+                                        </switch>
+                                    </for>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+            </switch>
+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="l3-network" 
+		key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id" 
+		local-only="false" 
+		pfx="aai.src-network">
+                <outcome value='not-found'>
+                    <return status='failure'>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+                    </return>
+                </outcome>
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+                    </return>
+                </outcome>
+                <outcome value='success'>
+                    <block atomic="true"></block>
+                </outcome>
+            </get-resource>
+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="l3-network" 
+		key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id" 
+		local-only="false" 
+		pfx="aai.dest-network">
+                <outcome value='not-found'>
+                    <return status='failure'>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+                    </return>
+                </outcome>
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+                    </return>
+                </outcome>
+                <outcome value='success'>
+                    <block atomic="true"></block>
+                </outcome>
+            </get-resource>
+            <set>
+                <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+            </set>
+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+                <parameter name="logger" value="message-log"/>
+                <parameter name="field1" value="__TIMESTAMP__"/>
+                <parameter name="field2" value="GENERIC-RESOURCE-API.contrail-route-topology-operation-create"/>
+                <parameter name='field3' value='network-policy' />
+                <parameter name='field4' value='create' />
+                <parameter name='field5' value='contrailResp' />
+                <parameter name='field6' value='default-domain' />
+                <parameter name='field7' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name`' />
+                <parameter name='field8' value='`$tmp.ar.tenant-name`' />
+                <parameter name='field9' value='`$ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.contrail-applied-service-info.contrail-fqdn`' />
+                <parameter name='field10' value='$aai.dest-network.contrail-network-fqdn' />
+                <parameter name='field11' value='$aai.src-network.contrail-network-fqdn' />
+                <parameter name='field12' value='&lt;&gt;' />
+                <parameter name='field13' value='$tmp.ar.cloud-region-id' />
+            </record>
+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                <parameter name='api-name' value='network-policy' />
+                <parameter name='api-action' value='create' />
+                <parameter name='resp-prefix' value='contrailResp' />
+                <parameter name='default-domain' value='default-domain' />
+                <parameter name='policy-name' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name`' />
+                <parameter name='default-project' value='`$tmp.ar.tenant-name`' />
+                <!-- dummy for dev <parameter name='default-project' value='default-project' /> -->
+                <parameter name='vipr-service-instance' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.contrail-applied-service.contrail-fqdn`' />
+                <parameter name='dst-virtual-network' value='`$aai.dest-network.contrail-network-fqdn`' />
+                <parameter name='src-virtual-network' value='`$aai.src-network.contrail-network-fqdn`' />
+                <parameter name='direction' value='&lt;&gt;' />
+                <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+                <outcome value='success'>
+                    <block></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="`'Failed to create policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+                    </return>
+                </outcome>
+            </execute>
+            <switch test='`$contrailResp.resp-code`'>
+                <outcome value='0'>
+                    <block></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="`'Failed to create policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+                    </return>
+                </outcome>
+            </switch>
+            <set>
+                <parameter name='ar-assignments.contrail-id' value="`$contrailResp.network-policy.uuid`" />
+            </set>
+            <call module='GENERIC-RESOURCE-API' rpc='policy-manager-create-policy' mode='sync' >
+                <outcome value='failure'>
+                    <block atomic="true">
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='delete' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+                            <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                            <outcome value='success'>
+                                <block></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="`'Failed to create Policy in Policy Mgr.  Rollback failed to delete policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+                                </return>
+                            </outcome>
+                        </execute>
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="500" />
+                            <parameter name="error-message" value="`'Failed to create policy in PolicyMgr. '+ $error-message  + 'Contrail network policy rolled back.'`" />
+                        </return>
+                    </block>
+                </outcome>
+                <outcome value='success'>
+                    <block atomic="true"></block>
+                </outcome>
+            </call>
+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="network-policy" 
+		key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+                <!-- Create l3-network object -->
+                <parameter name="network-policy-id" value="`$ar-assignments.contrail-id`" />
+                <parameter name="network-policy-fqdn" value="`$ar-assignments.fq-name`" />
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Failed to save network policy in AAI" />
+                    </return>
+                </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="Failed to save network policy in AAI" />
+                    </return>
+                </outcome>
+            </save>
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="allotted-resource" 
+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+			allotted-resource.id = $tmp.ar.allotted-resource-id"
+        pfx='pfx' local-only='false' force='false'>
+                <parameter name="operational-status" value="out-of-service-path" />
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="AAI failed" />
+                    </return>
+                </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="AAI failed" />
+                    </return>
+                </outcome>
+            </update>
+            <set>
+                <parameter name='ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.' value='`$ar-assignments.`' />
+            </set>
+            <set>
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+                <parameter name="outputPath" value="tmp.current-time" />
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block></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 updating md-sal for contrail-route-allotted-resource" />
+                    </return>
+                </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="Error updating md-sal for contrail-route-allotted-resource" />
+                    </return>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+                <parameter name='contrail-route-object-path' value="`$tmp.ar.self-link`"/>
+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $contrail-route-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-deactivate.xml
new file mode 100755
index 0000000..5fc21d2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-deactivate.xml
@@ -0,0 +1,309 @@
+<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='contrail-route-topology-operation-deactivate' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+                <parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+                <parameter name='tmp.ar.sz-vnf-id' value='`$contrail-route-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+            </set>
+            <set>
+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+                <parameter name="outputPath" value="tmp.ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+                            <outcome value='1'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='bk-cr-ar' value='$mdsal-ar.' />
+                                    </set>
+                                    <set>
+                                        <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />
+                                    </set>
+                                    <set>
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+                                    </set>
+                                </block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="404" />
+                                    <parameter name="error-message" value="Error: Contrail Route not found" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true">
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="404" />
+                            <parameter name="error-message" value="Error: Contrail Route not found" />
+                        </return>
+                    </block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+                <parameter name='ar.allotted-resource-status.action' value="`$contrail-route-topology-operation-input.request-information.request-action` " />
+                <parameter name='ar.allotted-resource-status.rpc-name' value="contrail-route-topology-operation" />
+                <parameter name='ar.allotted-resource-status.rpc-action' value="`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$contrail-route-topology-operation-input.request-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$contrail-route-topology-operation-input.sdnc-request-header.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$contrail-route-topology-operation-input.service-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$contrail-route-topology-operation-input.allotted-resource-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.` " />
+            </set>
+            <set>
+                <parameter name='ar-assignments.' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`" />
+            </set>
+            <switch test='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`'>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Error activating contrail route.  Source network not found" />
+                    </return>
+                </outcome>
+                <outcome value='Other'>
+                    <block>
+                        <switch test='`$service-data.networks.network_length`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="Error activating contrail route.  Source network not found" />
+                                </return>
+                            </outcome>
+                            <outcome value='Other'>
+                                <block atomic="true">
+                                    <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+                                        <switch test="`$service-data.networks.network[$nidx].network-id == $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`">
+                                            <outcome value='true'>
+                                                <block>
+                                                    <set>
+                                                        <parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />
+                                                    </set>
+                                                </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="Error activating contrail route.  Source network not found" />
+                                                </return>
+                                            </outcome>
+                                        </switch>
+                                    </for>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+            </switch>
+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="l3-network" 
+		key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id" 
+		local-only="false" 
+		pfx="aai.src-network">
+                <outcome value='not-found'>
+                    <return status='failure'>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+                    </return>
+                </outcome>
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Error retrieving source network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+                    </return>
+                </outcome>
+                <outcome value='success'>
+                    <block atomic="true"></block>
+                </outcome>
+            </get-resource>
+            <set>
+                <parameter name='tmp.fq-name' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name` " />
+            </set>
+            <set>
+                <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                <parameter name='api-name' value='network-policy' />
+                <parameter name='api-action' value='remove' />
+                <parameter name='resp-prefix' value='contrailResp' />
+                <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+                <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.contrail-fq-name`' />
+                <parameter name='contrail-virtual-network-id' value='`$aai.src-network.contrail-network-fqdn`' />
+                <outcome value='success'>
+                    <block></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="Failed to remove policy in Contrail from source network" />
+                    </return>
+                </outcome>
+            </execute>
+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="l3-network" 
+		key="l3-network.network-id = $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id" 
+		local-only="false" 
+		pfx="aai.dest-network">
+                <outcome value='not-found'>
+                    <return status='failure'>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+                    </return>
+                </outcome>
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Error retrieving destination network with network-id=' + $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id + ' from AnAI'`" />
+                    </return>
+                </outcome>
+                <outcome value='success'>
+                    <block atomic="true"></block>
+                </outcome>
+            </get-resource>
+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                <parameter name='api-name' value='network-policy' />
+                <parameter name='api-action' value='remove' />
+                <parameter name='resp-prefix' value='contrailResp' />
+                <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+                <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                <parameter name='contrail-network-policy-fq-name' value='`$ar-assignments.contrail-fq-name`' />
+                <parameter name='contrail-virtual-network-id' value='`$aai.dest-network.contrail-network-fqdn`' />
+                <outcome value='success'>
+                    <block></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="Failed to remove policy in Contrail from dest network" />
+                    </return>
+                </outcome>
+            </execute>
+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="network-policy:relationship-list" 
+	key="network-policy.network-policy-id = $ar-assignments.contrail-id and related-to = 'l3-network' " >
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Failed to save network policy in AAI" />
+                    </return>
+                </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="Failed to save network policy in AAI" />
+                    </return>
+                </outcome>
+            </delete>
+            <set>
+                <parameter name='ar-assignments.vlan-tag' value="" />
+            </set>
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="allotted-resource" 
+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+			allotted-resource.id = $tmp.ar.allotted-resource-id"
+        pfx='pfx' local-only='false' force='false'>
+                <parameter name="operational-status" value="out-of-service-path" />
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="AAI failed" />
+                    </return>
+                </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="AAI failed" />
+                    </return>
+                </outcome>
+            </update>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+                <parameter name="outputPath" value="tmp.current-time" />
+            </execute>
+            <set>
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block></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 updating md-sal for contrail-route-allotted-resource" />
+                    </return>
+                </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="Error updating md-sal for contrail-route-allotted-resource" />
+                    </return>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+                <parameter name='contrail-route-object-path' value="`$tmp.ar.self-link`"/>
+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $contrail-route-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-delete.xml
new file mode 100755
index 0000000..c57b5f9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-delete.xml
@@ -0,0 +1,258 @@
+<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='contrail-route-topology-operation-delete' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+                <parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+                <parameter name='tmp.ar.sz-vnf-id' value='`$contrail-route-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+            </set>
+            <set>
+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+                <parameter name="outputPath" value="tmp.ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+                            <outcome value='1'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='bk-cr-ar' value='$mdsal-ar.' />
+                                    </set>
+                                    <set>
+                                        <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />
+                                    </set>
+                                    <switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+                                        <outcome value='PendingDelete'>
+                                            <block></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="`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <set>
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+                                    </set>
+                                </block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="404" />
+                                    <parameter name="error-message" value="Error: Contrail Route not found" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true">
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="404" />
+                            <parameter name="error-message" value="Error: Contrail Route not found" />
+                        </return>
+                    </block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+                <parameter name='ar.allotted-resource-status.action' value="`$contrail-route-topology-operation-input.request-information.request-action` " />
+                <parameter name='ar.allotted-resource-status.rpc-name' value="contrail-route-topology-operation" />
+                <parameter name='ar.allotted-resource-status.rpc-action' value="`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$contrail-route-topology-operation-input.request-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$contrail-route-topology-operation-input.sdnc-request-header.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$contrail-route-topology-operation-input.service-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$contrail-route-topology-operation-input.allotted-resource-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.` " />
+            </set>
+            <set>
+                <parameter name='ar-assignments.' value="`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.`" />
+            </set>
+            <switch test='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`'>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Error assigning contrail route.  Source network not found" />
+                    </return>
+                </outcome>
+                <outcome value='Other'>
+                    <block>
+                        <switch test='`$service-data.networks.network_length`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="Error assigning contrail route.  Source network not found" />
+                                </return>
+                            </outcome>
+                            <outcome value='Other'>
+                                <block atomic="true">
+                                    <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+                                        <switch test="`$service-data.networks.network[$nidx].network-id == $ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id`">
+                                            <outcome value='true'>
+                                                <block>
+                                                    <set>
+                                                        <parameter name='tmp.ar.cloud-region-id' value='`$service-data.networks.network[$nidx].network-data.network-topology.aic-cloud-region`' />
+                                                    </set>
+                                                </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="Error assigning contrail route.  Source network not found" />
+                                                </return>
+                                            </outcome>
+                                        </switch>
+                                    </for>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+            </switch>
+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                <parameter name='api-name' value='network-policy' />
+                <parameter name='api-action' value='delete' />
+                <parameter name='resp-prefix' value='contrailResp' />
+                <parameter name='cloud-region-id' value='`$tmp.ar.cloud-region-id`' />
+                <parameter name='contrail-network-policy-id' value='`$ar-assignments.contrail-id`' />
+                <outcome value='success'>
+                    <block></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="Failed to create policy in Contrail" />
+                    </return>
+                </outcome>
+            </execute>
+            <call module='GENERIC-RESOURCE-API' rpc='policy-manager-delete-policy' mode='sync' >
+                <outcome value='failure'>
+                    <block atomic="true"></block>
+                </outcome>
+                <outcome value='success'>
+                    <block atomic="true"></block>
+                </outcome>
+            </call>
+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="network-policy" 
+		key="network-policy.network-policy-id = $ar-assignments.contrail-id" >
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Failed to save network policy in AAI" />
+                    </return>
+                </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="Failed to save network policy in AAI" />
+                    </return>
+                </outcome>
+            </delete>
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="allotted-resource" 
+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+			allotted-resource.id = $tmp.ar.allotted-resource-id"
+        pfx='pfx' local-only='false' force='false'>
+                <parameter name="operational-status" value="null" />
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="AAI failed" />
+                    </return>
+                </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="AAI failed" />
+                    </return>
+                </outcome>
+            </update>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+                <parameter name="outputPath" value="tmp.current-time" />
+            </execute>
+            <set>
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$contrail-route-topology-operation-input.request-information.request-action`' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`' />
+                <parameter name='ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.cr.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block></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 updating md-sal for contrail-route-allotted-resource" />
+                    </return>
+                </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="Error updating md-sal for contrail-route-allotted-resource" />
+                    </return>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+                <parameter name='contrail-route-object-path' value="`$tmp.ar.self-link`"/>
+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $contrail-route-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-unassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-unassign.xml
new file mode 100755
index 0000000..e4cbfc2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation-unassign.xml
@@ -0,0 +1,338 @@
+<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='contrail-route-topology-operation-unassign' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.ar.allotted-resource-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+                <parameter name='tmp.ar.parent-service-instance-id' value='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+            </set>
+            <set>
+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/contrail-route-topology/'` " />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.cr-allottedresource`"/>
+                <parameter name="outputPath" value="tmp.ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.parent-provided-resource`"/>
+                <parameter name="outputPath" value="tmp.parent-ar-url"/>
+                <parameter name="target" value="{service-instance-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$tmp.parent-ar-url`"/>
+                <parameter name="outputPath" value="tmp.parent-ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.network`"/>
+                <parameter name="outputPath" value="tmp.ar-parentnetwork-url"/>
+                <parameter name="target" value="{service-instance-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.network-provided-resource`"/>
+                <parameter name="outputPath" value="tmp.network-ar-url"/>
+                <parameter name="target" value="{service-instance-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <switch test='`$mdsal-ar.contrail-route-allotted-resource_length`'>
+                            <outcome value='1'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='bk-cr-ar' value='$mdsal-ar.' />
+                                    </set>
+                                    <set>
+                                        <parameter name='ar.' value='$mdsal-ar.contrail-route-allotted-resource[0].' />
+                                    </set>
+                                    <switch test='`$ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+                                        <outcome value='Created'>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" 
+    value="`'Existing contrail-route-allotted-resource with order status of ' + $ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`" />
+                                            </return>
+                                        </outcome>
+                                        <outcome value='Other'>
+                                            <block></block>
+                                        </outcome>
+                                    </switch>
+                                    <set>
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+                                    </set>
+                                </block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="404" />
+                                    <parameter name="error-message" value="Error: Contrail Route not found" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true">
+                        <return status='failure'>
+                            <parameter name='ack-final' value='Y'/>
+                            <parameter name="error-code" value="404" />
+                            <parameter name="error-message" value="Error: Contrail Route not found" />
+                        </return>
+                    </block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+                <parameter name='ar.allotted-resource-status.action' value="`$contrail-route-topology-operation-input.request-information.request-action` " />
+                <parameter name='ar.allotted-resource-status.rpc-name' value="contrail-route-topology-operation" />
+                <parameter name='ar.allotted-resource-status.rpc-action' value="`$contrail-route-topology-operation-input.sdnc-request-header.svc-action` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$contrail-route-topology-operation-input.request-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$contrail-route-topology-operation-input.sdnc-request-header.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$contrail-route-topology-operation-input.service-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$contrail-route-topology-operation-input.allotted-resource-information.` " />
+                <parameter name='ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.' value="`$contrail-route-topology-operation-input.contrail-route-request-input.` " />
+                <parameter name='tmp.dest-network-id' value='`$ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='DELETE' />
+                <parameter name="responsePrefix" value="parent" />
+                <outcome value='success'>
+                    <block></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 updating md-sal for contrail-route-allotted-resource" />
+                    </return>
+                </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="Error updating md-sal for contrail-route-allotted-resource" />
+                    </return>
+                </outcome>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$tmp.network-ar-url`"/>
+                <parameter name="outputPath" value="tmp.network-ar-url"/>
+                <parameter name="target" value="{network-id}"/>
+                <parameter name="replacement" value="`$tmp.dest-network-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="net-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='tmp.found-nidx' value='false' />
+                        </set>
+                        <switch test='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`'>
+                            <outcome value=''>
+                                <block atomic="true"></block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <block atomic="true">
+                                    <for index='nidx' start='0' end='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' >
+                                        <switch test="`$net-ar.network-provided-allotted-resources.network-provided-ar-id[$nidx] == $tmp.ar.allotted-resource-id`">
+                                            <outcome value='true'>
+                                                <block atomic="true">
+                                                    <set>
+                                                        <parameter name='tmp.found-nidx' value='true' />
+                                                        <parameter name='tmp.nidx' value='`$nidx`' />
+                                                    </set>
+                                                    <break/>
+                                                </block>
+                                            </outcome>
+                                        </switch>
+                                    </for>
+                                    <switch test='`$tmp.found-nidx`'>
+                                        <outcome value='true'>
+                                            <block atomic="true">
+                                                <for silentFailure='true' index='snidx' start='`$tmp.nidx + 1`' end='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length`' >
+                                                    <block atomic="true">
+                                                        <set>
+                                                            <parameter name="tmp.newidx" value="`$snidx - 1`"/>
+                                                        </set>
+                                                        <set>
+                                                            <parameter name="$net-ar.network-provided-allotted-resources.network-provided-ar-id[$tmp.newidx]" value="$net-ar.network-provided-allotted-resources.network-provided-ar-id[$snidx]" />
+                                                        </set>
+                                                    </block>
+                                                </for>
+                                                <set>
+                                                    <parameter name='net-ar.network-provided-allotted-resources.network-provided-ar-id_length' value='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length - 1`' />
+                                                </set>
+                                                <switch test='`$net-ar.network-provided-allotted-resources.network-provided-ar-id_length == 0`'>
+                                                    <outcome value='true'>
+                                                        <block atomic="true">
+                                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+                                                                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+                                                                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                                                                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                                                                <parameter name='format' value='json' />
+                                                                <parameter name='httpMethod' value='DELETE' />
+                                                                <parameter name="responsePrefix" value="p-network-ar" />
+                                                                <outcome value='success'>
+                                                                    <block></block>
+                                                                </outcome>
+                                                                <outcome value='failure'>
+                                                                    <block></block>
+                                                                </outcome>
+                                                                <outcome value='not-found'>
+                                                                    <block></block>
+                                                                </outcome>
+                                                            </execute>
+                                                        </block>
+                                                    </outcome>
+                                                    <outcome value='false'>
+                                                        <block atomic="true">
+                                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-ar.templatefile`" />
+                                                                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.network-ar-url`' />
+                                                                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                                                                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                                                                <parameter name='format' value='json' />
+                                                                <parameter name='httpMethod' value='PUT' />
+                                                                <parameter name="responsePrefix" value="p-network-ar" />
+                                                                <outcome value='success'>
+                                                                    <block></block>
+                                                                </outcome>
+                                                                <outcome value='failure'>
+                                                                    <block></block>
+                                                                </outcome>
+                                                                <outcome value='not-found'>
+                                                                    <block></block>
+                                                                </outcome>
+                                                            </execute>
+                                                        </block>
+                                                    </outcome>
+                                                </switch>
+                                            </block>
+                                        </outcome>
+                                    </switch>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='not-found'>
+                    <block atomic="true"></block>
+                </outcome>
+                <outcome value='failure'>
+                    <block atomic="true"></block>
+                </outcome>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='DELETE' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block atomic="true"></block>
+                </outcome>
+                <outcome value='not-found'>
+                    <block atomic="true"></block>
+                </outcome>
+                <outcome value='failure'>
+                    <block atomic="true"></block>
+                </outcome>
+            </execute>
+            <for silentFailure='true' index='snidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >
+                <block atomic="true">
+                    <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$sdix].allotted-resource-id == $tmp.ar.allotted-resource-id`'>
+                        <outcome value='true'>
+                            <block atomic="true">
+                                <set>
+                                    <parameter name="tmp.sdidx" value="`$snidx`"/>
+                                </set>
+                                <break/>
+                            </block>
+                        </outcome>
+                    </switch>
+                </block>
+            </for>
+            <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>
+                <outcome value='1'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name="service-data.consumed-allotted-resources." value=""/>
+                        </set>
+                        <set>
+                            <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource_length" value="0"/>
+                        </set>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name="tmp.new_length" value="`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`"/>
+                        </set>
+                        <for silentFailure='true' index='snidx' start='`$tmp.sdidx + 1`' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >
+                            <block atomic="true">
+                                <set>
+                                    <parameter name="tmp.newidx" value="`$snidx - 1`"/>
+                                </set>
+                                <set>
+                                    <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.newidx]." value="$service-data.consumed-allotted-resources.consumed-allotted-resource[$snidx]." />
+                                </set>
+                            </block>
+                        </for>
+                        <set>
+                            <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource_length" value="`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`"/>
+                        </set>
+                        <set>
+                            <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.new_length]." value=""/>
+                        </set>
+                    </block>
+                </outcome>
+            </switch>
+            <set>
+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $contrail-route-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation.xml
new file mode 100755
index 0000000..3b4b87e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_contrail-route-topology-operation.xml
@@ -0,0 +1,56 @@
+<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='contrail-route-topology-operation' mode='sync'>
+        <block atomic="true">
+            <call module='GENERIC-RESOURCE-API' rpc='validate-contrail-route-input' mode='sync' ></call>
+            <switch test='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`'>
+                <outcome value='assign'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-assign' mode='sync' ></call>
+                    </block>
+                </outcome>
+                <outcome value='create'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-create' mode='sync' ></call>
+                    </block>
+                </outcome>
+                <outcome value='activate'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-activate' mode='sync' ></call>
+                    </block>
+                </outcome>
+                <outcome value='deactivate'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-deactivate' mode='sync' ></call>
+                    </block>
+                </outcome>
+                <outcome value='delete'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-delete' mode='sync' ></call>
+                    </block>
+                </outcome>
+                <outcome value='unassign'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='contrail-route-topology-operation-unassign' mode='sync' ></call>
+                    </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="sdnc-request-header.svc-action is a required input" />
+                    </return>
+                </outcome>
+            </switch>
+            <set>
+                <parameter name="ack-final" value="Y"/>
+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_create-l3-subnet.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_create-l3-subnet.xml
new file mode 100755
index 0000000..c7e3454
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_create-l3-subnet.xml
@@ -0,0 +1,192 @@
+<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='create-l3-subnet' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='subnet-idx' value='0' />

+            </set>

+            <switch test='`$v4.entity-id`'>

+                <outcome value=''>

+                    <block atomic="true">

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="GENERIC-RESOURCE-API.create-l3-subnet:REQID"/>

+                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                            <parameter name="field4" value="v4.entity-id"/>

+                            <parameter name="field5" value="null"/>

+                        </record>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <switch test='`$network-model.ipv4-dhcp-enabled`'>

+                            <outcome value='Y'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.ipv4dhcp-enabled' value='true' />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='N'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.ipv4dhcp-enabled' value='false' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="getSubnetAddresses">

+                            <parameter name="ipAddress" value="`$v4.ip-prefix`" />

+                            <parameter name="ipVersion" value="4" />

+                            <parameter name="subnet" value="`$v4.mask`" />

+                            <parameter name="dhcp-enabled" value="`$tmp.ipv4dhcp-enabled`" />

+                            <parameter name="ctxGateway" value="tmp.return.generate.gateway-address" />

+                            <parameter name="ctxDhcpStart" value="tmp.return.generate.dhcp-start-address" />

+                            <parameter name="ctxDhcpEnd" value="tmp.return.generate.dhcp-end-address" />

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Failed to generate ipv4 addresses using IpAddressTools" />

+                                </return>

+                            </outcome>

+                        </execute>

+                        <set>

+                            <parameter name='tmp.l3-network.subnet[$subnet-idx].orchestration-status' value='PendingCreate' />

+                            <parameter name='tmp.l3-network.subnet[$subnet-idx].subnet-id' value='`$v4.entity-id`' />

+                            <parameter name='tmp.l3-network.subnet[$subnet-idx].subnet-name' value="`$tmp.l3-network.network-name + '_S' + $subnet-idx`" />

+                            <parameter name='tmp.l3-network.subnet[$subnet-idx].gateway-address' value='`$tmp.return.generate.gateway-address`' />

+                            <parameter name='tmp.l3-network.subnet[$subnet-idx].network-start-address' value='`$v4.ip-prefix`' />

+                            <parameter name='tmp.l3-network.subnet[$subnet-idx].cidr-mask' value='`$v4.mask`' />

+                            <parameter name='tmp.l3-network.subnet[$subnet-idx].ip-version' value='`$network-model.ipv4-ip-version`' />

+                        </set>

+                        <switch test='`$network-model.ipv4-dhcp-enabled`'>

+                            <outcome value='Y'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-enabled' value='true' />

+                                        <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-start' value='`$tmp.return.generate.dhcp-start-address`' />

+                                        <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-end' value='`$tmp.return.generate.dhcp-end-address`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='N'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-enabled' value='false' />

+                                        <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-start' value='' />

+                                        <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-end' value='' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='subnet-idx' value='`$subnet-idx+1`' />

+                        </set>

+                        <set>

+                            <parameter name='tmp.l3-network.subnet_length' value='`$subnet-idx`' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$v6.entity-id`'>

+                <outcome value=''>

+                    <block atomic="true">

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="GENERIC-RESOURCE-API.create-l3-subnet:REQID"/>

+                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                            <parameter name="field4" value="v6.entity-id"/>

+                            <parameter name="field5" value="null"/>

+                        </record>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="GENERIC-RESOURCE-API.create-l3-subnet:REQID"/>

+                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                            <parameter name="field4" value="v6.entity-id"/>

+                            <parameter name="field5" value="`$v6.entity-id`"/>

+                        </record>

+                        <switch test='`$network-model.ipv6-dhcp-enabled`'>

+                            <outcome value='Y'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.ipv6dhcp-enabled' value='true' />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='N'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.ipv6dhcp-enabled' value='false' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="getSubnetAddresses">

+                            <parameter name="ipAddress" value="`$v6.ip-prefix`" />

+                            <parameter name="ipVersion" value="6" />

+                            <parameter name="subnet" value="`$v6.mask`" />

+                            <parameter name="dhcp-enabled" value="`$tmp.ipv6dhcp-enabled`" />

+                            <parameter name="ctxGateway" value="tmp.return.generate.gateway-address" />

+                            <parameter name="ctxDhcpStart" value="tmp.return.generate.dhcp-start-address" />

+                            <parameter name="ctxDhcpEnd" value="tmp.return.generate.dhcp-end-address" />

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Failed to generate ipv6 addresses using IpAddressTools" />

+                                </return>

+                            </outcome>

+                        </execute>

+                        <set>

+                            <parameter name='tmp.l3-network.subnet[$subnet-idx].orchestration-status' value='PendingCreate' />

+                            <parameter name='tmp.l3-network.subnet[$subnet-idx].subnet-id' value='`$v6.entity-id`' />

+                            <parameter name='tmp.l3-network.subnet[$subnet-idx].subnet-name' value="`$tmp.l3-network.network-name + '_S' + $subnet-idx`" />

+                            <parameter name='tmp.l3-network.subnet[$subnet-idx].gateway-address' value='`$tmp.return.generate.gateway-address`' />

+                            <parameter name='tmp.l3-network.subnet[$subnet-idx].network-start-address' value='`$v6.ip-prefix`' />

+                            <parameter name='tmp.l3-network.subnet[$subnet-idx].cidr-mask' value='`$v6.mask`' />

+                            <parameter name='tmp.l3-network.subnet[$subnet-idx].ip-version' value='`$network-model.ipv6-ip-version`' />

+                        </set>

+                        <switch test='`$network-model.ipv6-dhcp-enabled`'>

+                            <outcome value='Y'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-enabled' value='true' />

+                                        <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-start' value='`$tmp.return.generate.dhcp-start-address`' />

+                                        <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-end' value='`$tmp.return.generate.dhcp-end-address`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='N'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-enabled' value='false' />

+                                        <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-start' value='' />

+                                        <parameter name='tmp.l3-network.subnet[$subnet-idx].dhcp-end' value='' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='subnet-idx' value='`$subnet-idx+1`' />

+                        </set>

+                        <set>

+                            <parameter name='tmp.l3-network.subnet_length' value='`$subnet-idx`' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <return status='success'>

+                <parameter name='' value='' />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_create-route-target-and-vpn-binding.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_create-route-target-and-vpn-binding.xml
new file mode 100755
index 0000000..f9866fe
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_create-route-target-and-vpn-binding.xml
@@ -0,0 +1,437 @@
+<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='create-route-target-and-vpn-binding' mode='sync'>

+        <block atomic="true">

+            <switch test='`$rt.aic-zone`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error missing parameters to create-local-route-target" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$rt.resource`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error missing parameters to create-local-route-target" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$rt.resource-value`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error missing parameters to create-local-route-target" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$rt.network-name`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error missing parameters to create-local-route-target" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$rt.service-instance-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error missing parameters to create-local-route-target" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$rt.network-instance-group-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error missing parameters to create-local-route-target" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$rt.network-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error missing parameters to create-local-route-target" />

+                    </return>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.network-instance-group-vpn-binding`"/>

+                <parameter name="outputPath" value="tmp.vpn-binding-url"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$rt.service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.vpn-binding-url`"/>

+                <parameter name="outputPath" value="tmp.vpn-binding-url"/>

+                <parameter name="target" value="{network-instance-group-id}"/>

+                <parameter name="replacement" value="`$rt.network-instance-group-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.vpn-binding-url`"/>

+                <parameter name="outputPath" value="tmp.vpn-binding-url"/>

+                <parameter name="target" value="{network-id}"/>

+                <parameter name="replacement" value="`$rt.network-id`"/>

+            </execute>

+            <set>

+                <parameter name="get-data-from-policy-input.policy-instance-name" value="`$get-complex-resource-service-model-output.vpn-binding-policy`" />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='get-data-from-policy' mode='sync' ></call>

+            <set>

+                <parameter name="vpn-binding.vpn-name" value="`$rt.network-name`" />

+                <parameter name="vpn-binding.asn" value="`$get-data-from-policy-output.asn`" />

+                <parameter name="vpn-binding.route-target-role" value="`$get-data-from-policy-output.route-target-role`" />

+                <parameter name="vpn-binding.aic-zone" value="`$rt.aic-zone`" />

+                <parameter name="vpn-binding.route-target-category" value="local" />

+                <parameter name="vpn-binding.resource" value="`$rt.resource`" />

+                <parameter name="vpn-binding.resource-value" value="`$rt.resource-value`" />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='generate-vpn-binding-id' mode='sync' ></call>

+            <set>

+                <parameter name='vpn-binding.vpn-binding-id' value='`$tmp.return.generate-vpn-binding-id.uuid`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.vpn-binding-url`"/>

+                <parameter name="outputPath" value="tmp.vpn-binding-url"/>

+                <parameter name="target" value="{vpn-binding-id}"/>

+                <parameter name="replacement" value="`$vpn-binding.vpn-binding-id`"/>

+            </execute>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vpn-binding" 

+		key="vpn-binding.vpn-id = $vpn-binding.vpn-binding-id" >

+                <parameter name="vpn-id" value="`$vpn-binding.vpn-binding-id`" />

+                <parameter name="vpn-name" value="`$vpn-binding.vpn-name`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error creating vpn-binding in AAI" />

+                    </return>

+                </outcome>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error creating vpn-binding in AAI" />

+                    </return>

+                </outcome>

+            </save>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.allocateRT`' />

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`" />

+                <parameter name='restapiUser' value='`$prop.rt.mS.user`' />

+                <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />

+                <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='POST' />

+                <parameter name="responsePrefix" value="msRT" />

+                <outcome value='success'>

+                    <block atomic="true">

+                        <switch test='`$msRT.responseCode`'>

+                            <outcome value='200'></outcome>

+                            <outcome value='Other'>

+                                <block>

+                                    <set>

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="tmp.error-message" value="`'Error: calling allocate resource microservice - responseCode: ' + $msRT.responseCode + ' responseMsg: ' + $msRT.responseMessage + ' allocateRouteTargetStatus: ' + $msRT.allocateRouteTargetStatus `"/>

+                                    </set>

+                                    <block atomic='true'>

+                                        <switch test="`$vpn-binding.global-route-target != ''`">

+                                            <outcome value='true'>

+                                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                    <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.releaseRT`' />

+                                                    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`" />

+                                                    <parameter name='restapiUser' value='`$prop.rt.mS.user`' />

+                                                    <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />

+                                                    <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />

+                                                    <parameter name='format' value='json' />

+                                                    <parameter name='httpMethod' value='POST' />

+                                                    <parameter name="responsePrefix" value="msRT" />

+                                                </execute>

+                                            </outcome>

+                                        </switch>

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vpn-binding" 

+	key="vpn-id = $rt.vpn-id"></delete>

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`" />

+                                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />

+                                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                            <parameter name='format' value='json' />

+                                            <parameter name='httpMethod' value='DELETE' />

+                                            <parameter name="responsePrefix" value="mdsal-vpn-binding" />

+                                            <outcome value='failure'>

+                                                <block></block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block></block>

+                                            </outcome>

+                                        </execute>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500'/>

+                                            <parameter name='error-message' value="`'Error writing to vpn binding - ' + $tmp.error-message`"/>

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Error: calling allocate resource microservice"/>

+                        </set>

+                        <block atomic='true'>

+                            <switch test="`$vpn-binding.global-route-target != ''`">

+                                <outcome value='true'>

+                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                        <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.releaseRT`' />

+                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`" />

+                                        <parameter name='restapiUser' value='`$prop.rt.mS.user`' />

+                                        <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />

+                                        <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />

+                                        <parameter name='format' value='json' />

+                                        <parameter name='httpMethod' value='POST' />

+                                        <parameter name="responsePrefix" value="msRT" />

+                                    </execute>

+                                </outcome>

+                            </switch>

+                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vpn-binding" 

+	key="vpn-id = $rt.vpn-id"></delete>

+                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`" />

+                                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />

+                                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                <parameter name='format' value='json' />

+                                <parameter name='httpMethod' value='DELETE' />

+                                <parameter name="responsePrefix" value="mdsal-vpn-binding" />

+                                <outcome value='failure'>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='not-found'>

+                                    <block></block>

+                                </outcome>

+                            </execute>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to vpn binding - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name="vpn-binding.global-route-target" value="`$msRT.routeTargetID`" />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-vpn-binding" />

+                <outcome value='failure'>

+                    <block>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Error: failed to save vpn-binding in md-sal" />

+                        </set>

+                        <block atomic='true'>

+                            <switch test="`$vpn-binding.global-route-target != ''`">

+                                <outcome value='true'>

+                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                        <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.releaseRT`' />

+                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`" />

+                                        <parameter name='restapiUser' value='`$prop.rt.mS.user`' />

+                                        <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />

+                                        <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />

+                                        <parameter name='format' value='json' />

+                                        <parameter name='httpMethod' value='POST' />

+                                        <parameter name="responsePrefix" value="msRT" />

+                                    </execute>

+                                </outcome>

+                            </switch>

+                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vpn-binding" 

+	key="vpn-id = $rt.vpn-id"></delete>

+                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`" />

+                                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />

+                                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                <parameter name='format' value='json' />

+                                <parameter name='httpMethod' value='DELETE' />

+                                <parameter name="responsePrefix" value="mdsal-vpn-binding" />

+                                <outcome value='failure'>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='not-found'>

+                                    <block></block>

+                                </outcome>

+                            </execute>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to vpn binding - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Error: failed to save vpn-binding in md-sal" />

+                        </set>

+                        <block atomic='true'>

+                            <switch test="`$vpn-binding.global-route-target != ''`">

+                                <outcome value='true'>

+                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                        <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.releaseRT`' />

+                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`" />

+                                        <parameter name='restapiUser' value='`$prop.rt.mS.user`' />

+                                        <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />

+                                        <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />

+                                        <parameter name='format' value='json' />

+                                        <parameter name='httpMethod' value='POST' />

+                                        <parameter name="responsePrefix" value="msRT" />

+                                    </execute>

+                                </outcome>

+                            </switch>

+                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vpn-binding" 

+	key="vpn-id = $rt.vpn-id"></delete>

+                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`" />

+                                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />

+                                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                <parameter name='format' value='json' />

+                                <parameter name='httpMethod' value='DELETE' />

+                                <parameter name="responsePrefix" value="mdsal-vpn-binding" />

+                                <outcome value='failure'>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='not-found'>

+                                    <block></block>

+                                </outcome>

+                            </execute>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to vpn binding - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </execute>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="route-target" 

+		key="vpn-binding.vpn-binding-id = $vpn-binding.vpn-binding-id 

+			AND route-target.global-route-target = $vpn-binding.global-route-target

+			AND route-target.route-target-role = $vpn-binding.route-target-role" >

+                <!-- Create route-target object -->

+                <parameter name="global-route-target" value="`$vpn-binding.global-route-target`" />

+                <parameter name="route-target-role" value="`$vpn-binding.route-target-role`" />

+                <outcome value='failure'>

+                    <block>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Error: failed to save route target in AAI"/>

+                        </set>

+                        <block atomic='true'>

+                            <switch test="`$vpn-binding.global-route-target != ''`">

+                                <outcome value='true'>

+                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                        <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.releaseRT`' />

+                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`" />

+                                        <parameter name='restapiUser' value='`$prop.rt.mS.user`' />

+                                        <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />

+                                        <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />

+                                        <parameter name='format' value='json' />

+                                        <parameter name='httpMethod' value='POST' />

+                                        <parameter name="responsePrefix" value="msRT" />

+                                    </execute>

+                                </outcome>

+                            </switch>

+                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vpn-binding" 

+	key="vpn-id = $rt.vpn-id"></delete>

+                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`" />

+                                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />

+                                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                <parameter name='format' value='json' />

+                                <parameter name='httpMethod' value='DELETE' />

+                                <parameter name="responsePrefix" value="mdsal-vpn-binding" />

+                                <outcome value='failure'>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='not-found'>

+                                    <block></block>

+                                </outcome>

+                            </execute>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to vpn binding - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Error: failed to save route target in AAI"/>

+                        </set>

+                        <block atomic='true'>

+                            <switch test="`$vpn-binding.global-route-target != ''`">

+                                <outcome value='true'>

+                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                        <parameter name='restapiUrl' value='`$prop.rt.microservice.url + $prop.restapi.mS.releaseRT`' />

+                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.rtmS.allocateRT.templatefile`" />

+                                        <parameter name='restapiUser' value='`$prop.rt.mS.user`' />

+                                        <parameter name='restapiPassword' value='`$prop.rt.mS.pwd`' />

+                                        <parameter name='customHttpHeaders' value='x-UserId=SDNCP' />

+                                        <parameter name='format' value='json' />

+                                        <parameter name='httpMethod' value='POST' />

+                                        <parameter name="responsePrefix" value="msRT" />

+                                    </execute>

+                                </outcome>

+                            </switch>

+                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vpn-binding" 

+	key="vpn-id = $rt.vpn-id"></delete>

+                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-vpn-binding.templatefile`" />

+                                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vpn-binding-url`' />

+                                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                <parameter name='format' value='json' />

+                                <parameter name='httpMethod' value='DELETE' />

+                                <parameter name="responsePrefix" value="mdsal-vpn-binding" />

+                                <outcome value='failure'>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='not-found'>

+                                    <block></block>

+                                </outcome>

+                            </execute>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to vpn binding - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </save>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-activate.xml
new file mode 100644
index 0000000..411cbb3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-activate.xml
@@ -0,0 +1,482 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<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="dci-connects-network-topology-operation-activate" mode="sync">

+        <block atomic="true">

+            <call module="GENERIC-RESOURCE-API" rpc="validate-network-input-parameters" mode="sync" />

+            <block atomic="true">

+                <block atomic="true">

+                    <for index="idx" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">

+                        <block>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`">

+                                <outcome value="true">

+                                    <set>

+                                        <parameter name="prop.dci-connects.name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_id'`">

+                                <outcome value="true">

+                                    <set>

+                                        <parameter name="prop.dci-connects.id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_description'`">

+                                <outcome value="true">

+                                    <set>

+                                        <parameter name="prop.dci-connects.description" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_networkName'`">

+                                <outcome value="true">

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name="tmp.dci-connects.local_networks.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                        </set>

+                                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">

+                                            <parameter name="original_string" value="`$tmp.dci-connects.local_networks.original`" />

+                                            <parameter name="regex" value="," />

+                                            <parameter name="ctx_memory_result_key" value="tmp.dci-connects.local_networks" />

+                                            <outcome value="success">

+                                                <for index="idx" start="0" end="`$tmp.dci-connects.local_networks_length`">

+                                                    <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="l3-network" key="l3-network.network-name = $tmp.dci-connects.local_networks[$idx] AND         depth = '0'" pfx="tmp.aai.l3-network" local-only="false">

+                                                        <outcome value="success">

+                                                            <set>

+                                                                <parameter name="prop.dci-connects.local_networks[$idx]" value="`$tmp.aai.l3-network.network-id`" />

+                                                            </set>

+                                                        </outcome>

+                                                        <outcome value="not-found">

+                                                            <return status="failure">

+                                                                <parameter name="error-code" value="" />

+                                                                <parameter name="error-message" value="" />

+                                                            </return>

+                                                        </outcome>

+                                                        <outcome value="Other">

+                                                            <return status="failure">

+                                                                <parameter name="error-code" value="" />

+                                                                <parameter name="error-message" value="" />

+                                                            </return>

+                                                        </outcome>

+                                                    </get-resource>

+                                                </for>

+                                            </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>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_routerId'`">

+                                <outcome value="true">

+                                    <set>

+                                        <parameter name="prop.dci-connects.router_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_importRT1'`">

+                                <outcome value="true">

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name="tmp.dci-connects.evpn_irts.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                        </set>

+                                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">

+                                            <parameter name="original_string" value="`$tmp.dci-connects.evpn_irts.original`" />

+                                            <parameter name="regex" value="," />

+                                            <parameter name="ctx_memory_result_key" value="tmp.dci-connects.evpn_irts" />

+                                            <outcome value="success">

+                                                <for index="idx" start="0" end="`$tmp.dci-connects.evpn_irts_length`">

+                                                    <set>

+                                                        <parameter name="prop.dci-connects.evpn_irts[$idx]" value="`$tmp.dci-connects.evpn_irts[$idx]`" />

+                                                    </set>

+                                                </for>

+                                            </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>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_exportRT1'`">

+                                <outcome value="true">

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name="tmp.dci-connects.evpn_erts.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                        </set>

+                                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">

+                                            <parameter name="original_string" value="`$tmp.dci-connects.evpn_erts.original`" />

+                                            <parameter name="regex" value="," />

+                                            <parameter name="ctx_memory_result_key" value="tmp.dci-connects.evpn_erts" />

+                                            <outcome value="success">

+                                                <for index="idx" start="0" end="`$tmp.dci-connects.evpn_erts_length`">

+                                                    <set>

+                                                        <parameter name="prop.dci-connects.evpn_erts[$idx]" value="`$tmp.dci-connects.evpn_erts[$idx]`" />

+                                                    </set>

+                                                </for>

+                                            </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>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_vni'`">

+                                <outcome value="true">

+                                    <set>

+                                        <parameter name="prop.dci-connects.vni" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'tunnelType'`">

+                                <outcome value="true">

+                                    <set>

+                                        <parameter name="prop.dci-connects.tunnelType" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                        </block>

+                    </for>

+                    <block atomic="true">

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $prop.dci-connects.id 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`" />

+                                    <parameter name="prop.sdncRestApi.thirdpartySdnc.vendor" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].vendor`" />

+                                </set>

+                            </outcome>

+                            <outcome value="not-found">

+                                <return status="failure">

+                                    <parameter name="error-code" value="" />

+                                    <parameter name="error-message" value="" />

+                                </return>

+                            </outcome>

+                            <outcome value="Other">

+                                <return status="failure">

+                                    <parameter name="error-code" value="" />

+                                    <parameter name="error-message" value="" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                        <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>

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log" />

+                            <parameter name="field1" value="__TIMESTAMP__" />

+                            <parameter name="field2" value="dci-network-topology-operation-activate" />

+                            <parameter name="field3" value="dci-connects.name" />

+                            <parameter name="field4" value="`$prop.dci-connects.name`" />

+                            <parameter name="field5" value="dci-connects.id" />

+                            <parameter name="field6" value="`$prop.dci-connects.id`" />

+                            <parameter name="field7" value="dci-connects.tunnelType" />

+                            <parameter name="field8" value="`$prop.dci-connects.tunnelType`" />

+                            <parameter name="field9" value="sdncRestApi.thirdpartySdnc.url" />

+                            <parameter name="field10" value="`$prop.sdncRestApi.thirdpartySdnc.url`" />

+                        </record>

+                        <switch test="`$prop.sdncRestApi.thirdpartySdnc.vendor`">

+                            <outcome value="SPTN">

+                                <switch test="`$prop.dci-connects.tunnelType`">

+                                    <outcome value="L3-DCI">

+                                        <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                                            <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l3-dci-connects-template.json'`" />

+                                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/v2.0/l3-dci-connects'`" />

+                                            <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="restapi-result" />

+                                        </execute>

+                                    </outcome>

+                                    <outcome value="L2-DCI">

+                                        <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                                            <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l2-dci-connects-template.json'`" />

+                                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/v2.0/l2-dci-connects'`" />

+                                            <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="restapi-result" />

+                                        </execute>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                        </switch>

+                    </block>

+                </block>

+                <block atomic="true">

+                    <for index="idx" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">

+                        <block>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_id'`">

+                                <outcome value="true">

+                                    <set>

+                                        <parameter name="prop.dci-connects.id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_description'`">

+                                <outcome value="true">

+                                    <set>

+                                        <parameter name="prop.dci-connects.description" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                    </set>

+                                </outcome>

+                                <outcome value="false">

+                                    <set>

+                                        <parameter name="prop.dci-connects.description" value="" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_networkName'`">

+                                <outcome value="true">

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name="tmp.dci-connects.local_networks.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                        </set>

+                                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">

+                                            <parameter name="original_string" value="`$tmp.dci-connects.local_networks.original`" />

+                                            <parameter name="regex" value="," />

+                                            <parameter name="ctx_memory_result_key" value="tmp.dci-connects.local_networks" />

+                                            <outcome value="success">

+                                                <for index="idx" start="0" end="`$tmp.dci-connects.local_networks_length`">

+                                                    <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="l3-network" key="l3-network.network-name = $tmp.dci-connects.local_networks[$idx] AND         depth = '0'" pfx="tmp.aai.l3-network" local-only="false">

+                                                        <outcome value="success">

+                                                            <set>

+                                                                <parameter name="prop.dci-connects.local_networks[$idx]" value="`$tmp.aai.l3-network.network-id`" />

+                                                            </set>

+                                                        </outcome>

+                                                        <outcome value="not-found">

+                                                            <return status="failure">

+                                                                <parameter name="error-code" value="" />

+                                                                <parameter name="error-message" value="" />

+                                                            </return>

+                                                        </outcome>

+                                                        <outcome value="Other">

+                                                            <return status="failure">

+                                                                <parameter name="error-code" value="" />

+                                                                <parameter name="error-message" value="" />

+                                                            </return>

+                                                        </outcome>

+                                                    </get-resource>

+                                                </for>

+                                            </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>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_routerId'`">

+                                <outcome value="true">

+                                    <set>

+                                        <parameter name="prop.dci-connects.router_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_importRT1'`">

+                                <outcome value="true">

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name="tmp.dci-connects.evpn_irts.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                        </set>

+                                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">

+                                            <parameter name="original_string" value="`$tmp.dci-connects.evpn_irts.original`" />

+                                            <parameter name="regex" value="," />

+                                            <parameter name="ctx_memory_result_key" value="tmp.dci-connects.evpn_irts" />

+                                            <outcome value="success">

+                                                <for index="idx" start="0" end="`$tmp.dci-connects.evpn_irts_length`">

+                                                    <set>

+                                                        <parameter name="prop.dci-connects.evpn_irts[$idx]" value="`$tmp.dci-connects.evpn_irts[$idx]`" />

+                                                    </set>

+                                                </for>

+                                            </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>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_exportRT1'`">

+                                <outcome value="true">

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name="tmp.dci-connects.evpn_erts.original" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                        </set>

+                                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">

+                                            <parameter name="original_string" value="`$tmp.dci-connects.evpn_erts.original`" />

+                                            <parameter name="regex" value="," />

+                                            <parameter name="ctx_memory_result_key" value="tmp.dci-connects.evpn_erts" />

+                                            <outcome value="success">

+                                                <for index="idx" start="0" end="`$tmp.dci-connects.evpn_erts_length`">

+                                                    <set>

+                                                        <parameter name="prop.dci-connects.evpn_erts[$idx]" value="`$tmp.dci-connects.evpn_erts[$idx]`" />

+                                                    </set>

+                                                </for>

+                                            </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>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_vni'`">

+                                <outcome value="true">

+                                    <set>

+                                        <parameter name="prop.dci-connects.vni" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                        </block>

+                    </for>

+                    <block atomic="true">

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $prop.dci-connects.id 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`" />

+                                    <parameter name="prop.sdncRestApi.thirdpartySdnc.vendor" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].vendor`" />

+                                </set>

+                            </outcome>

+                            <outcome value="not-found">

+                                <return status="failure">

+                                    <parameter name="error-code" value="" />

+                                    <parameter name="error-message" value="" />

+                                </return>

+                            </outcome>

+                            <outcome value="Other">

+                                <return status="failure">

+                                    <parameter name="error-code" value="" />

+                                    <parameter name="error-message" value="" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                        <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>

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log" />

+                            <parameter name="field1" value="__TIMESTAMP__" />

+                            <parameter name="field2" value="dci-network-topology-operation-activate" />

+                            <parameter name="field3" value="dci-connects.name" />

+                            <parameter name="field4" value="`$prop.dci-connects.name`" />

+                            <parameter name="field5" value="dci-connects.id" />

+                            <parameter name="field6" value="`$prop.dci-connects.id`" />

+                            <parameter name="field7" value="dci-connects.tunnelType" />

+                            <parameter name="field8" value="`$prop.dci-connects.tunnelType`" />

+                            <parameter name="field9" value="sdncRestApi.thirdpartySdnc.url" />

+                            <parameter name="field10" value="`$prop.sdncRestApi.thirdpartySdnc.url`" />

+                        </record>

+                        <switch test="`$prop.sdncRestApi.thirdpartySdnc.vendor`">

+                            <outcome value="SPTN">

+                                <switch test="`$prop.dci-connects.tunnelType`">

+                                    <outcome value="L3-DCI">

+                                        <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                                            <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l3-dci-connects-template.json'`" />

+                                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/v2.0/l3-dci-connects'`" />

+                                            <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="restapi-result" />

+                                        </execute>

+                                    </outcome>

+                                    <outcome value="L2-DCI">

+                                        <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                                            <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l2-dci-connects-template.json'`" />

+                                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/v2.0/l2-dci-connects'`" />

+                                            <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="restapi-result" />

+                                        </execute>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                        </switch>

+                    </block>

+                </block>

+                <block atomic="true">

+                    <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">

+                        <parameter name="ctx-destination" value="prop.dci.network-id" />

+                    </execute>

+                    <switch test="`$service-data.networks.network_length`">

+                        <outcome value="">

+                            <set>

+                                <parameter name="nidx" value="0" />

+                            </set>

+                        </outcome>

+                        <outcome value="Other">

+                            <set>

+                                <parameter name="nidx" value="`$service-data.networks.network_length`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <set>

+                        <parameter name="service-data.networks.network[$nidx].network-id" value="`$prop.dci.network-id`" />

+                        <parameter name="service-data.networks.network[$nidx].network-data.sdnc-request-header." value="`$network-topology-operation-input.sdnc-request-header.`" />

+                        <parameter name="service-data.networks.network[$nidx].network-data.request-information." value="`$network-topology-operation-input.request-information.`" />

+                        <parameter name="service-data.networks.network[$nidx].network-data.service-information." value="`$network-topology-operation-input.service-information.`" />

+                        <parameter name="service-data.networks.network[$nidx].network-data.network-information." value="`$network-topology-operation-input.network-information.`" />

+                        <parameter name="service-data.networks.network[$nidx].network-data.network-request-input." value="`$network-topology-operation-input.network-request-input.`" />

+                        <parameter name="service-data.networks.network_length" value="`$nidx+1`" />

+                        <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status" value="Created" />

+                        <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action" value="`$network-topology-operation-input.sdnc-request-header.svc-action`" />

+                        <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action" value="`$network-topology-operation-input.request-information.request-action`" />

+                    </set>

+                    <set>

+                        <parameter name="networkId" value="`$prop.dci.network-id`" />

+                        <parameter name="network-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.dci.network-id  + '/network-data/'` " />

+                    </set>

+                </block>

+            </block>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="configuration" key="configuration.configuration-id = $prop.dci.network-id">

+                <parameter name="configuration-id" value="`$prop.dci.network-id`" />

+                <parameter name="configuration-type" value="overlay" />

+                <parameter name="configuration-sub-type" value="VPN-DCI" />

+                <parameter name="orchestration-status" value="Created" />

+                <parameter name="operational-status" value="Created" />

+                <parameter name="model-customization-id" value="`$prop.dci.network-id`" />

+                <parameter name="configuration-selflink" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.dci.network-id  + '/network-data/'` " />

+            </save>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:relationship-list" key="service-instance.service-instance-id = $service-data.service-information.service-instance-id           AND customer.global-customer-id = $service-data.networks.network[$nidx].network-data.service-information.global-customer-id           AND service-subscription.service-type = $service-data.networks.network[$nidx].network-data.service-information.subscription-service-type" force="true" pfx="tmp.AnAI-data">

+                <parameter name="relationship-list.relationship[0].related-to" value="configuration" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/configurations/configuration/' + $prop.dci.network-id`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="configuration.configuration-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.dci.network-id`" />

+            </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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-deactivate.xml
new file mode 100644
index 0000000..d70691b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_dci-connects-network-topology-operation-deactivate.xml
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<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="dci-connects-network-topology-operation-deactivate" mode="sync">

+      <block atomic="true">

+         <call module="GENERIC-RESOURCE-API" rpc="validate-network-input-parameters" mode="sync" />

+         <block atomic="true">

+            <for index="idx" start="0" end="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length`">

+               <block>

+                  <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'site1_id'`">

+                     <outcome value="true">

+                        <set>

+                           <parameter name="prop.dci-connects.id" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />

+                        </set>

+                     </outcome>

+                  </switch>

+                  <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'tunnelType'`">

+                     <outcome value="true">

+                        <set>

+                           <parameter name="prop.dci-connects.tunnelType" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />

+                        </set>

+                     </outcome>

+                  </switch>

+               </block>

+            </for>

+            <block atomic="true">

+               <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $prop.dci-connects.id 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`" />

+                        <parameter name="prop.sdncRestApi.thirdpartySdnc.vendor" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].vendor`" />

+                     </set>

+                  </outcome>

+                  <outcome value="not-found">

+                     <return status="failure">

+                        <parameter name="error-code" value="" />

+                        <parameter name="error-message" value="" />

+                     </return>

+                  </outcome>

+                  <outcome value="Other">

+                     <return status="failure">

+                        <parameter name="error-code" value="" />

+                        <parameter name="error-message" value="" />

+                     </return>

+                  </outcome>

+               </get-resource>

+               <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>

+               <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                  <parameter name="logger" value="message-log" />

+                  <parameter name="field1" value="__TIMESTAMP__" />

+                  <parameter name="field2" value="dci-network-topology-operation-deactivate" />

+                  <parameter name="field3" value="dci-connects.id" />

+                  <parameter name="field4" value="`$prop.dci-connects.id`" />

+                  <parameter name="field5" value="dci-connects.tunnelType" />

+                  <parameter name="field6" value="`$prop.dci-connects.tunnelType`" />

+                  <parameter name="field7" value="dci-connects.tunnelType" />

+                  <parameter name="field8" value="`$prop.dci-connects.tunnelType`" />

+                  <parameter name="field9" value="sdncRestApi.thirdpartySdnc.url" />

+                  <parameter name="field10" value="`$prop.sdncRestApi.thirdpartySdnc.url`" />

+               </record>

+               <switch test="`$prop.sdncRestApi.thirdpartySdnc.vendor`">

+                  <outcome value="SPTN">

+                     <switch test="`$prop.dci-connects.tunnelType`">

+                        <outcome value="L3-DCI">

+                           <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                              <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/v2.0/l3-dci-connects/' + $prop.dci-connects.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="delete" />

+                              <parameter name="responsePrefix" value="restapi-result" />

+                           </execute>

+                        </outcome>

+                        <outcome value="L2-DCI">

+                           <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                              <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/v2.0/l2-dci-connects/' + $prop.dci-connects.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="delete" />

+                              <parameter name="responsePrefix" value="restapi-result" />

+                           </execute>

+                        </outcome>

+                     </switch>

+                  </outcome>

+               </switch>

+            </block>

+         </block>

+         <block atomic="true">

+            <for index="idx" start="0" end="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length`">

+               <block>

+                  <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'site2_id'`">

+                     <outcome value="true">

+                        <set>

+                           <parameter name="prop.dci-connects.id" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />

+                        </set>

+                     </outcome>

+                  </switch>

+               </block>

+            </for>

+            <block atomic="true">

+               <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $prop.dci-connects.id 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`" />

+                        <parameter name="prop.sdncRestApi.thirdpartySdnc.vendor" value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].vendor`" />

+                     </set>

+                  </outcome>

+                  <outcome value="not-found">

+                     <return status="failure">

+                        <parameter name="error-code" value="" />

+                        <parameter name="error-message" value="" />

+                     </return>

+                  </outcome>

+                  <outcome value="Other">

+                     <return status="failure">

+                        <parameter name="error-code" value="" />

+                        <parameter name="error-message" value="" />

+                     </return>

+                  </outcome>

+               </get-resource>

+               <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>

+               <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                  <parameter name="logger" value="message-log" />

+                  <parameter name="field1" value="__TIMESTAMP__" />

+                  <parameter name="field2" value="dci-network-topology-operation-deactivate" />

+                  <parameter name="field3" value="dci-connects.id" />

+                  <parameter name="field4" value="`$prop.dci-connects.id`" />

+                  <parameter name="field5" value="dci-connects.tunnelType" />

+                  <parameter name="field6" value="`$prop.dci-connects.tunnelType`" />

+                  <parameter name="field7" value="dci-connects.tunnelType" />

+                  <parameter name="field8" value="`$prop.dci-connects.tunnelType`" />

+                  <parameter name="field9" value="sdncRestApi.thirdpartySdnc.url" />

+                  <parameter name="field10" value="`$prop.sdncRestApi.thirdpartySdnc.url`" />

+               </record>

+               <switch test="`$prop.sdncRestApi.thirdpartySdnc.vendor`">

+                  <outcome value="SPTN">

+                     <switch test="`$prop.dci-connects.tunnelType`">

+                        <outcome value="L3-DCI">

+                           <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                              <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/v2.0/l3-dci-connects/' + $prop.dci-connects.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="delete" />

+                              <parameter name="responsePrefix" value="restapi-result" />

+                           </execute>

+                        </outcome>

+                        <outcome value="L2-DCI">

+                           <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                              <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/v2.0/l2-dci-connects/' + $prop.dci-connects.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="delete" />

+                              <parameter name="responsePrefix" value="restapi-result" />

+                           </execute>

+                        </outcome>

+                     </switch>

+                  </outcome>

+               </switch>

+            </block>

+         </block>

+         <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="configuration" key="configuration.configuration-id = $network-topology-operation-input.network-information.network-id" />

+         <switch test="`$service-data.networks.network_length`">

+            <outcome value="1">

+               <block atomic="true">

+                  <set>

+                     <parameter name="service-data.networks." value="" />

+                  </set>

+                  <set>

+                     <parameter name="service-data.networks.network_length" value="0" />

+                  </set>

+               </block>

+            </outcome>

+            <outcome value="Other">

+               <block atomic="true">

+                  <set>

+                     <parameter name="tmp.new_length" value="`$service-data.networks.network_length - 1`" />

+                  </set>

+                  <for silentFailure="true" index="snidx" start="`$tmp.nidx + 1`" end="`$service-data.networks.network_length`">

+                     <block atomic="true" />

+                  </for>

+                  <set>

+                     <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`" />

+                  </set>

+                  <set>

+                     <parameter name="service-data.networks.network[$tmp.new_length]." value="" />

+                  </set>

+               </block>

+            </outcome>

+         </switch>

+         <set>

+            <parameter name="networkId" value="`$network-topology-operation-input.network-information.network-id`" />

+            <parameter name="service-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_eipam-allocate-generic-subnet.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_eipam-allocate-generic-subnet.xml
new file mode 100755
index 0000000..1e6c8bb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_eipam-allocate-generic-subnet.xml
@@ -0,0 +1,1127 @@
+<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='eipam-allocate-generic-subnet' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name="tmp.eipam-error" value="false" />

+                <parameter name="tmp.allocate-v4-subnet-flag" value="N" />

+                <parameter name="tmp.allocate-v6-subnet-flag" value="N" />

+                <parameter name='eipam-ip-block.plans_length' value='0' />

+                <parameter name="eipam-pool.v4.pre-existing" value="N"/>

+                <parameter name="eipam-pool.v6.pre-existing" value="N"/>

+                <parameter name="tmp.leaf-level" value="N" />

+            </set>

+            <switch test="`$tmp.activate-subnet-flag`">

+                <outcome value="">

+                    <block atomic='true'>

+                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                        <set>

+                            <parameter name="tmp.activate-subnet-flag" value="Y"/>

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='Y'></outcome>

+                <outcome value='N'></outcome>

+            </switch>

+            <switch test="`$eipam-ip-block.level == $eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">

+                <outcome value='true'>

+                    <block atomic='true'>

+                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                        <set>

+                            <parameter name="tmp.leaf-level" value="Y" />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <!--Need to know which ipv version to get the plan name from the network-model.-->

+            <switch test="`$eipam-ip-block.allocate-version`">

+                <outcome value='ipv4'>

+                    <block atomic='true'>

+                        <switch test="`$l-idx`">

+                            <outcome value='1'>

+                                <block atomic='true'>

+                                    <switch test="`$tmp.skip-first-level`">

+                                        <outcome value='Y'></outcome>

+                                        <outcome value="">

+                                            <block atomic='true'>

+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                <set>

+                                                    <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v4-address-plan`"/>

+                                                    <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>

+                                                    <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>

+                                                    <parameter name="tmp.allocate-v4-subnet-flag" value="Y" />

+                                                    <!-- Number of Pool Levels -->

+                                                    <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>

+                                                </set>

+                                                <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">

+                                                    <block atomic='true'>

+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                        <set>

+                                                            <parameter name="eipam-ip-block.pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>

+                                                            <parameter name="eipam-ip-block.pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>

+                                                        </set>

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="network-topology-operation"/>

+                                                            <parameter name="field3" value="eipam-allocate-generic-subnet"/>

+                                                            <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>

+                                                            <parameter name="field5" value="`$eipam-ip-block.pools[$l4-idx].key-name`"/>

+                                                            <parameter name="field6" value="`$eipam-ip-block.pools[$l4-idx].key-value`"/>

+                                                        </record>

+                                                    </block>

+                                                </for>

+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">

+                                                    <outcome value='failure'>

+                                                        <return status="failure">

+                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />

+                                                        </return>

+                                                    </outcome>

+                                                </execute>

+                                                <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "

+        pfx='pfx.eipam-pool-row'>

+                                                    <outcome value='failure'>

+                                                        <return status="failure">

+                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value="not-found">

+                                                        <return status="failure">

+                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />

+                                                        </return>

+                                                    </outcome>

+                                                </get-resource>

+                                                <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">

+                                                    <outcome value='shared'>

+                                                        <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv4-ip-version ,

+             network_id = $tmp.network-id ,

+             network_instance_group_id = $tmp.network-instance-group-id ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-row'>

+                                                            <outcome value='failure'>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                                </return>

+                                                            </outcome>

+                                                        </save>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv4-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-row'>

+                                                            <outcome value='failure'>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                                </return>

+                                                            </outcome>

+                                                        </save>

+                                                    </outcome>

+                                                    <outcome value=''>

+                                                        <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv4-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-row'>

+                                                            <outcome value='failure'>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                                </return>

+                                                            </outcome>

+                                                        </save>

+                                                    </outcome>

+                                                </switch>

+                                                <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNET_KEYS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             key_name = $key-name ,

+             key_value = $key-value ,

+             level = $eipam-ip-block.level ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-key-row'>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name='error-code' value='500' />

+                                                            <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='success'></outcome>

+                                                </save>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                    <parameter name="field2" value="network-topology-operation"/>

+                                                    <parameter name="field3" value="eipam-allocate-generic-subnet"/>

+                                                    <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>

+                                                    <parameter name="field5" value="`$key-value`"/>

+                                                    <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>

+                                                    <parameter name="field7" value="`$tmp.network_instance_group_id`"/>

+                                                    <parameter name="field8" value="`$eipam-ip-block.level`"/>

+                                                    <parameter name="field9" value="`$network-model.network-role`"/>

+                                                    <parameter name="field10" value="`$tmp.network-id`"/>

+                                                    <parameter name="field11" value="subnet saved to DB."/>

+                                                </record>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='N'>

+                                            <block atomic='true'>

+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                <set>

+                                                    <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v4-address-plan`"/>

+                                                    <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>

+                                                    <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>

+                                                    <parameter name="tmp.allocate-v4-subnet-flag" value="Y" />

+                                                    <!-- Number of Pool Levels -->

+                                                    <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>

+                                                </set>

+                                                <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">

+                                                    <block atomic='true'>

+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                        <set>

+                                                            <parameter name="eipam-ip-block.pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>

+                                                            <parameter name="eipam-ip-block.pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>

+                                                        </set>

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="network-topology-operation"/>

+                                                            <parameter name="field3" value="eipam-allocate-generic-subnet"/>

+                                                            <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>

+                                                            <parameter name="field5" value="`$eipam-ip-block.pools[$l4-idx].key-name`"/>

+                                                            <parameter name="field6" value="`$eipam-ip-block.pools[$l4-idx].key-value`"/>

+                                                        </record>

+                                                    </block>

+                                                </for>

+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">

+                                                    <outcome value='failure'>

+                                                        <return status="failure">

+                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />

+                                                        </return>

+                                                    </outcome>

+                                                </execute>

+                                                <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "

+        pfx='pfx.eipam-pool-row'>

+                                                    <outcome value='failure'>

+                                                        <return status="failure">

+                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value="not-found">

+                                                        <return status="failure">

+                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />

+                                                        </return>

+                                                    </outcome>

+                                                </get-resource>

+                                                <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">

+                                                    <outcome value='shared'>

+                                                        <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv4-ip-version ,

+             network_id = $tmp.network-id ,

+             network_instance_group_id = $tmp.network-instance-group-id ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-row'>

+                                                            <outcome value='failure'>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                                </return>

+                                                            </outcome>

+                                                        </save>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv4-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-row'>

+                                                            <outcome value='failure'>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                                </return>

+                                                            </outcome>

+                                                        </save>

+                                                    </outcome>

+                                                    <outcome value=''>

+                                                        <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv4-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-row'>

+                                                            <outcome value='failure'>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                                </return>

+                                                            </outcome>

+                                                        </save>

+                                                    </outcome>

+                                                </switch>

+                                                <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNET_KEYS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             key_name = $key-name ,

+             key_value = $key-value ,

+             level = $eipam-ip-block.level ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-key-row'>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name='error-code' value='500' />

+                                                            <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='success'></outcome>

+                                                </save>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                    <parameter name="field2" value="network-topology-operation"/>

+                                                    <parameter name="field3" value="eipam-allocate-generic-subnet"/>

+                                                    <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>

+                                                    <parameter name="field5" value="`$key-value`"/>

+                                                    <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>

+                                                    <parameter name="field7" value="`$tmp.network_instance_group_id`"/>

+                                                    <parameter name="field8" value="`$eipam-ip-block.level`"/>

+                                                    <parameter name="field9" value="`$network-model.network-role`"/>

+                                                    <parameter name="field10" value="`$tmp.network-id`"/>

+                                                    <parameter name="field11" value="subnet saved to DB."/>

+                                                </record>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                            <outcome value=''>

+                                <return status="failure">

+                                    <parameter name="tmp.eipam-error" value="true" />

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />

+                                </return>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block atomic='true'>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <set>

+                                        <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v4-address-plan`"/>

+                                        <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>

+                                        <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>

+                                        <parameter name="tmp.allocate-v4-subnet-flag" value="Y" />

+                                        <!-- Number of Pool Levels -->

+                                        <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>

+                                    </set>

+                                    <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">

+                                        <block atomic='true'>

+                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                            <set>

+                                                <parameter name="eipam-ip-block.pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>

+                                                <parameter name="eipam-ip-block.pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>

+                                            </set>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="network-topology-operation"/>

+                                                <parameter name="field3" value="eipam-allocate-generic-subnet"/>

+                                                <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>

+                                                <parameter name="field5" value="`$eipam-ip-block.pools[$l4-idx].key-name`"/>

+                                                <parameter name="field6" value="`$eipam-ip-block.pools[$l4-idx].key-value`"/>

+                                            </record>

+                                        </block>

+                                    </for>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">

+                                        <outcome value='failure'>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                    </execute>

+                                    <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "

+        pfx='pfx.eipam-pool-row'>

+                                        <outcome value='failure'>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                        <outcome value="not-found">

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                    </get-resource>

+                                    <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">

+                                        <outcome value='shared'>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv4-ip-version ,

+             network_id = $tmp.network-id ,

+             network_instance_group_id = $tmp.network-instance-group-id ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-row'>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv4-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-row'>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                        <outcome value=''>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv4-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-row'>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                    </switch>

+                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNET_KEYS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             key_name = $key-name ,

+             key_value = $key-value ,

+             level = $eipam-ip-block.level ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-key-row'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='success'></outcome>

+                                    </save>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="network-topology-operation"/>

+                                        <parameter name="field3" value="eipam-allocate-generic-subnet"/>

+                                        <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>

+                                        <parameter name="field5" value="`$key-value`"/>

+                                        <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>

+                                        <parameter name="field7" value="`$tmp.network_instance_group_id`"/>

+                                        <parameter name="field8" value="`$eipam-ip-block.level`"/>

+                                        <parameter name="field9" value="`$network-model.network-role`"/>

+                                        <parameter name="field10" value="`$tmp.network-id`"/>

+                                        <parameter name="field11" value="subnet saved to DB."/>

+                                    </record>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='ipv6'>

+                    <block atomic='true'>

+                        <switch test="`$l-idx`">

+                            <outcome value='1'>

+                                <block atomic='true'>

+                                    <switch test="`$tmp.skip-first-level`">

+                                        <outcome value='Y'></outcome>

+                                        <outcome value="">

+                                            <block atomic='true'>

+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                <set>

+                                                    <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v6-address-plan`"/>

+                                                    <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>

+                                                    <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>

+                                                    <parameter name="tmp.allocate-v6-subnet-flag" value="Y" />

+                                                    <!-- Number of Pool Levels -->

+                                                    <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>

+                                                </set>

+                                                <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">

+                                                    <block atomic='true'>

+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                        <set>

+                                                            <parameter name="eipam-ip-block.pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>

+                                                            <parameter name="eipam-ip-block.pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>

+                                                        </set>

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="network-topology-operation"/>

+                                                            <parameter name="field3" value="eipam-allocate-generic-subnet"/>

+                                                            <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>

+                                                            <parameter name="field5" value="`$eipam-ip-block.pools[$l6-idx].key-name`"/>

+                                                            <parameter name="field6" value="`$eipam-ip-block.pools[$l6-idx].key-value`"/>

+                                                            <parameter name="field7" value="`$l6-idx`"/>

+                                                        </record>

+                                                    </block>

+                                                </for>

+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">

+                                                    <outcome value='failure'>

+                                                        <return status="failure">

+                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="An error occured while allocating V6 subnet in EIPAM." />

+                                                        </return>

+                                                    </outcome>

+                                                </execute>

+                                                <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "

+        pfx='pfx.eipam-pool-row'>

+                                                    <outcome value='failure'>

+                                                        <return status="failure">

+                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value="not-found">

+                                                        <return status="failure">

+                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />

+                                                        </return>

+                                                    </outcome>

+                                                </get-resource>

+                                                <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">

+                                                    <outcome value='shared'>

+                                                        <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv6-ip-version ,

+             network_id = $tmp.network-id ,

+             network_instance_group_id = $tmp.network-instance-group-id ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-row'>

+                                                            <outcome value='failure'>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                                </return>

+                                                            </outcome>

+                                                        </save>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv6-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-row'>

+                                                            <outcome value='failure'>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                                </return>

+                                                            </outcome>

+                                                        </save>

+                                                    </outcome>

+                                                    <outcome value=''>

+                                                        <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv6-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-row'>

+                                                            <outcome value='failure'>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                                </return>

+                                                            </outcome>

+                                                        </save>

+                                                    </outcome>

+                                                </switch>

+                                                <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNET_KEYS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             key_name = $key-name ,

+             key_value = $key-value ,

+             level = $eipam-ip-block.level ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-key-row'>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name='error-code' value='500' />

+                                                            <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='success'></outcome>

+                                                </save>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                    <parameter name="field2" value="network-topology-operation"/>

+                                                    <parameter name="field3" value="eipam-allocate-generic-subnet"/>

+                                                    <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>

+                                                    <parameter name="field5" value="`$key-value`"/>

+                                                    <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>

+                                                    <parameter name="field7" value="`$tmp.network_instance_group_id`"/>

+                                                    <parameter name="field8" value="`$eipam-ip-block.level`"/>

+                                                    <parameter name="field9" value="`$network-model.network-role`"/>

+                                                    <parameter name="field10" value="`$tmp.network-id`"/>

+                                                    <parameter name="field11" value="subnet info are saved to DB."/>

+                                                </record>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='N'>

+                                            <block atomic='true'>

+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                <set>

+                                                    <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v6-address-plan`"/>

+                                                    <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>

+                                                    <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>

+                                                    <parameter name="tmp.allocate-v6-subnet-flag" value="Y" />

+                                                    <!-- Number of Pool Levels -->

+                                                    <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>

+                                                </set>

+                                                <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">

+                                                    <block atomic='true'>

+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                        <set>

+                                                            <parameter name="eipam-ip-block.pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>

+                                                            <parameter name="eipam-ip-block.pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>

+                                                        </set>

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="network-topology-operation"/>

+                                                            <parameter name="field3" value="eipam-allocate-generic-subnet"/>

+                                                            <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>

+                                                            <parameter name="field5" value="`$eipam-ip-block.pools[$l6-idx].key-name`"/>

+                                                            <parameter name="field6" value="`$eipam-ip-block.pools[$l6-idx].key-value`"/>

+                                                            <parameter name="field7" value="`$l6-idx`"/>

+                                                        </record>

+                                                    </block>

+                                                </for>

+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">

+                                                    <outcome value='failure'>

+                                                        <return status="failure">

+                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="An error occured while allocating V6 subnet in EIPAM." />

+                                                        </return>

+                                                    </outcome>

+                                                </execute>

+                                                <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "

+        pfx='pfx.eipam-pool-row'>

+                                                    <outcome value='failure'>

+                                                        <return status="failure">

+                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value="not-found">

+                                                        <return status="failure">

+                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />

+                                                        </return>

+                                                    </outcome>

+                                                </get-resource>

+                                                <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">

+                                                    <outcome value='shared'>

+                                                        <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv6-ip-version ,

+             network_id = $tmp.network-id ,

+             network_instance_group_id = $tmp.network-instance-group-id ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-row'>

+                                                            <outcome value='failure'>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                                </return>

+                                                            </outcome>

+                                                        </save>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv6-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-row'>

+                                                            <outcome value='failure'>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                                </return>

+                                                            </outcome>

+                                                        </save>

+                                                    </outcome>

+                                                    <outcome value=''>

+                                                        <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv6-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-row'>

+                                                            <outcome value='failure'>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                                </return>

+                                                            </outcome>

+                                                        </save>

+                                                    </outcome>

+                                                </switch>

+                                                <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNET_KEYS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             key_name = $key-name ,

+             key_value = $key-value ,

+             level = $eipam-ip-block.level ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-key-row'>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name='error-code' value='500' />

+                                                            <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='success'></outcome>

+                                                </save>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                    <parameter name="field2" value="network-topology-operation"/>

+                                                    <parameter name="field3" value="eipam-allocate-generic-subnet"/>

+                                                    <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>

+                                                    <parameter name="field5" value="`$key-value`"/>

+                                                    <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>

+                                                    <parameter name="field7" value="`$tmp.network_instance_group_id`"/>

+                                                    <parameter name="field8" value="`$eipam-ip-block.level`"/>

+                                                    <parameter name="field9" value="`$network-model.network-role`"/>

+                                                    <parameter name="field10" value="`$tmp.network-id`"/>

+                                                    <parameter name="field11" value="subnet info are saved to DB."/>

+                                                </record>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                            <outcome value=''>

+                                <return status="failure">

+                                    <parameter name="tmp.eipam-error" value="true" />

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />

+                                </return>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block atomic='true'>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <set>

+                                        <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v6-address-plan`"/>

+                                        <parameter name="eipam-ip-block.activate-subnet-flag" value="`$tmp.activate-subnet-flag`"/>

+                                        <parameter name="eipam-ip-block.leaf-level-indicator" value="`$tmp.leaf-level`"/>

+                                        <parameter name="tmp.allocate-v6-subnet-flag" value="Y" />

+                                        <!-- Number of Pool Levels -->

+                                        <parameter name="eipam-ip-block.pools_length" value="`$eipam-ip-block.level`"/>

+                                    </set>

+                                    <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">

+                                        <block atomic='true'>

+                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                            <set>

+                                                <parameter name="eipam-ip-block.pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>

+                                                <parameter name="eipam-ip-block.pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>

+                                            </set>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="network-topology-operation"/>

+                                                <parameter name="field3" value="eipam-allocate-generic-subnet"/>

+                                                <parameter name="field4" value="`$eipam-ip-block.plan-name`"/>

+                                                <parameter name="field5" value="`$eipam-ip-block.pools[$l6-idx].key-name`"/>

+                                                <parameter name="field6" value="`$eipam-ip-block.pools[$l6-idx].key-value`"/>

+                                                <parameter name="field7" value="`$l6-idx`"/>

+                                            </record>

+                                        </block>

+                                    </for>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">

+                                        <outcome value='failure'>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while allocating V6 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                    </execute>

+                                    <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $tmp.key-value ; "

+        pfx='pfx.eipam-pool-row'>

+                                        <outcome value='failure'>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                        <outcome value="not-found">

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                    </get-resource>

+                                    <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">

+                                        <outcome value='shared'>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv6-ip-version ,

+             network_id = $tmp.network-id ,

+             network_instance_group_id = $tmp.network-instance-group-id ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-row'>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv6-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-row'>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                        <outcome value=''>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv6-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-row'>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                    </switch>

+                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNET_KEYS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             key_name = $key-name ,

+             key_value = $key-value ,

+             level = $eipam-ip-block.level ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-key-row'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='success'></outcome>

+                                    </save>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="network-topology-operation"/>

+                                        <parameter name="field3" value="eipam-allocate-generic-subnet"/>

+                                        <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>

+                                        <parameter name="field5" value="`$key-value`"/>

+                                        <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>

+                                        <parameter name="field7" value="`$tmp.network_instance_group_id`"/>

+                                        <parameter name="field8" value="`$eipam-ip-block.level`"/>

+                                        <parameter name="field9" value="`$network-model.network-role`"/>

+                                        <parameter name="field10" value="`$tmp.network-id`"/>

+                                        <parameter name="field11" value="subnet info are saved to DB."/>

+                                    </record>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value=''>

+                    <return status="failure">

+                        <parameter name="tmp.eipam-error" value="true" />

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="Please set the eipam-ip-block.allocate-version for appropriate EIPAM request." />

+                    </return>

+                </outcome>

+            </switch>

+            <return status='success'>

+                <parameter name="error-code" value="200" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_eipam-allocate-network-role-subnet.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_eipam-allocate-network-role-subnet.xml
new file mode 100755
index 0000000..8fd6376
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_eipam-allocate-network-role-subnet.xml
@@ -0,0 +1,537 @@
+<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='eipam-allocate-network-role-subnet' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name="tmp.eipam-error" value="false" />

+                <parameter name="eipam-ip-block.ip-prefix" value='' />

+                <parameter name="eipam-ip-block.mask" value='' />

+                <parameter name="pfx.eipam-pool-row" value='' />

+                <parameter name="tmp.level1-key-name" value="LOCATION_CLLI8:CLOUD_REGION_ID" />

+                <parameter name="tmp.level2-key-name" value="NETWORK_ROLE:NETWORK_ID" />

+            </set>

+            <!--Need to know which ipv version to get the plan name from the network-model.-->

+            <switch test="`$eipam-ip-block.allocate-version`">

+                <outcome value='ipv4'>

+                    <block atomic='true'>

+                        <switch test="`$eipam-ip-block.level`">

+                            <outcome value='1'>

+                                <block atomic='true'>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <set>

+                                        <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v4-address-plan`"/>

+                                        <parameter name="eipam-ip-block.activate-subnet-flag" value="Y"/>

+                                        <parameter name="eipam-ip-block.leaf-level-indicator" value="N"/>

+                                        <!-- Number of Pool Levels -->

+                                        <parameter name="eipam-ip-block.pools_length" value="1"/>

+                                        <!-- Level 1 -->

+                                        <parameter name="eipam-ip-block.pools[0].key-name" value="`$tmp.level1-key-name`"/>

+                                        <parameter name="eipam-ip-block.pools[0].key-value" value="`$tmp.level1-key-value`"/>

+                                    </set>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">

+                                        <outcome value='failure'>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                    </execute>

+                                    <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = 1 and key_value = $tmp.level1-key-value ; "

+        pfx='pfx.eipam-pool-row'>

+                                        <outcome value='failure'>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                        <outcome value="not-found">

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                    </get-resource>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="network-topology-operation"/>

+                                        <parameter name="field3" value="eipam-allocate-network-role-subnet"/>

+                                        <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>

+                                        <parameter name="field5" value="`$tmp.level1-key-value`"/>

+                                        <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>

+                                        <parameter name="field7" value="Level 1 subnet saved to DB."/>

+                                    </record>

+                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv4-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-row'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='success'></outcome>

+                                    </save>

+                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNET_KEYS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             key_name = $tmp.level1-key-name ,

+             key_value = $tmp.level1-key-value ,

+             level = 1 ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-key-row'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='success'></outcome>

+                                    </save>

+                                </block>

+                            </outcome>

+                            <outcome value='2'>

+                                <block atomic='true'>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <set>

+                                        <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v4-address-plan`"/>

+                                        <parameter name="eipam-ip-block.activate-subnet-flag" value="N"/>

+                                        <parameter name="eipam-ip-block.leaf-level-indicator" value="Y"/>

+                                        <!-- Number of Pool Levels -->

+                                        <parameter name="eipam-ip-block.pools_length" value="2"/>

+                                        <!-- Level 1 -->

+                                        <parameter name="eipam-ip-block.pools[0].key-name" value="`$tmp.level1-key-name`"/>

+                                        <parameter name="eipam-ip-block.pools[0].key-value" value="`$tmp.level1-key-value`"/>

+                                        <!-- Level 2 -->

+                                        <parameter name="eipam-ip-block.pools[1].key-name" value="`$tmp.level2-key-name`"/>

+                                        <parameter name="eipam-ip-block.pools[1].key-value" value="`$tmp.level2-key-value`"/>

+                                    </set>

+                                    <switch test="`$eipam-ip-block.subnet-size-override`">

+                                        <outcome value=''>

+                                            <block atomic='true'>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                    <parameter name="field2" value="network-topology-operation"/>

+                                                    <parameter name="field3" value="eipam-allocate-network-role-subnet"/>

+                                                    <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>

+                                                    <parameter name="field5" value="`$tmp.level2-key-value`"/>

+                                                    <parameter name="field6" value="Level 2 subnet override not set, default to network model value."/>

+                                                </record>

+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                <set>

+                                                    <parameter name="eipam-ip-block.subnet-size-override" value="`$network-model.ipv4-cidr-mask`" />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">

+                                        <outcome value='failure'>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                    </execute>

+                                    <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v4-address-plan and level = 2 and parent_pool = $tmp.level1-key-value AND key_value = $tmp.level2-key-value ; "

+        pfx='pfx.eipam-pool-row'>

+                                        <outcome value='failure'>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                        <outcome value="not-found">

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V4 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                    </get-resource>

+                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             status = 'ALLOCATED' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv4-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-subnet-row'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='success'></outcome>

+                                    </save>

+                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNET_KEYS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             key_name = $tmp.level1-key-name ,

+             key_value = $tmp.level1-key-value ,

+             level = 1 ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-key-row'>

+                                        <outcome value='success'></outcome>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />

+                                            </return>

+                                        </outcome>

+                                    </save>

+                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNET_KEYS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             key_name = $tmp.level2-key-name ,

+             key_value = $tmp.level2-key-value ,

+             level = 2 ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-key-row'>

+                                        <outcome value='success'></outcome>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />

+                                            </return>

+                                        </outcome>

+                                    </save>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <set>

+                                        <parameter name="eipam-ip-block.subnet-size-override" value='' />

+                                    </set>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="network-topology-operation"/>

+                                        <parameter name="field3" value="eipam-allocate-network-role-subnet"/>

+                                        <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>

+                                        <parameter name="field5" value="`$tmp.level1-key-value`"/>

+                                        <!-- Level 2 -->

+                                        <parameter name="field6" value="NETWORK_ROLE_NETWORK_ID"/>

+                                        <parameter name="field7" value="`$tmp.level2-key-value`"/>

+                                        <parameter name="field8" value="Level 2 subnet saved to DB."/>

+                                    </record>

+                                </block>

+                            </outcome>

+                            <outcome value=''>

+                                <return status="failure">

+                                    <parameter name="tmp.eipam-error" value="true" />

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='ipv6'>

+                    <block atomic='true'>

+                        <switch test="`$eipam-ip-block.level`">

+                            <outcome value='1'>

+                                <block atomic='true'>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <set>

+                                        <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v6-address-plan`"/>

+                                        <parameter name="eipam-ip-block.activate-subnet-flag" value="Y"/>

+                                        <parameter name="eipam-ip-block.leaf-level-indicator" value="N"/>

+                                        <!-- Number of Pool Levels -->

+                                        <parameter name="eipam-ip-block.pools_length" value="1"/>

+                                        <!-- Level 1 -->

+                                        <parameter name="eipam-ip-block.pools[0].key-name" value="`$tmp.level1-key-name`"/>

+                                        <parameter name="eipam-ip-block.pools[0].key-value" value="`$tmp.level1-key-value`"/>

+                                    </set>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">

+                                        <outcome value='failure'>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                    </execute>

+                                    <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = 1 and key_value = $tmp.level1-key-value ; "

+        pfx='pfx.eipam-pool-row'>

+                                        <outcome value='failure'>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                        <outcome value="not-found">

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                    </get-resource>

+                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             status = 'ACTIVE' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv6-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-row'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='success'></outcome>

+                                    </save>

+                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNET_KEYS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             key_name = $tmp.level1-key-name ,

+             key_value = $tmp.level1-key-value ,

+             level = 1 ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-key-row'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='success'></outcome>

+                                    </save>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="network-topology-operation"/>

+                                        <parameter name="field3" value="eipam-allocate-network-role-subnet"/>

+                                        <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>

+                                        <parameter name="field5" value="`$tmp.level1-key-value`"/>

+                                        <parameter name="field6" value="`$tmp.eipam-pool-row.pool-id`"/>

+                                        <parameter name="field7" value="Level 1 subnet saved to DB."/>

+                                    </record>

+                                </block>

+                            </outcome>

+                            <outcome value='2'>

+                                <block atomic='true'>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <set>

+                                        <parameter name="eipam-ip-block.plan-name" value="`$network-model.eipam-v6-address-plan`"/>

+                                        <parameter name="eipam-ip-block.activate-subnet-flag" value="N"/>

+                                        <parameter name="eipam-ip-block.leaf-level-indicator" value="Y"/>

+                                        <!-- Number of Pool Levels -->

+                                        <parameter name="eipam-ip-block.pools_length" value="2"/>

+                                        <!-- Level 1 -->

+                                        <parameter name="eipam-ip-block.pools[0].key-name" value="`$tmp.level1-key-name`"/>

+                                        <parameter name="eipam-ip-block.pools[0].key-value" value="`$tmp.level1-key-value`"/>

+                                        <!-- Level 2 -->

+                                        <parameter name="eipam-ip-block.pools[1].key-name" value="`$tmp.level2-key-name`"/>

+                                        <parameter name="eipam-ip-block.pools[1].key-value" value="`$tmp.level2-key-value`"/>

+                                    </set>

+                                    <switch test="`$eipam-ip-block.subnet-size-override`">

+                                        <outcome value=''>

+                                            <block atomic='true'>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                    <parameter name="field2" value="network-topology-operation"/>

+                                                    <parameter name="field3" value="eipam-allocate-network-role-subnet"/>

+                                                    <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>

+                                                    <parameter name="field5" value="`$tmp.level2-key-value`"/>

+                                                    <parameter name="field6" value="Level 2 subnet override not set, default to network model value."/>

+                                                </record>

+                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                <set>

+                                                    <parameter name="eipam-ip-block.subnet-size-override" value="`$network-model.ipv6-cidr-mask`" />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="allocateSubnet">

+                                        <outcome value='failure'>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while allocating V4 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                    </execute>

+                                    <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_POOLS WHERE plan_name = $network-model.eipam-v6-address-plan and level = 2 and parent_pool = $tmp.level1-key-value AND key_value = $tmp.level2-key-value ; "

+        pfx='pfx.eipam-pool-row'>

+                                        <outcome value='failure'>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                        <outcome value="not-found">

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while looking for entry in EIPAM_IP_POOLS for V6 subnet in EIPAM." />

+                                            </return>

+                                        </outcome>

+                                    </get-resource>

+                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.ip-prefix ,

+             prefix_length = $eipam-ip-block.mask ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             status = 'ALLOCATED' ,

+             pool_id = $pfx.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv6-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-row'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS table.' />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='success'></outcome>

+                                    </save>

+                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNET_KEYS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             key_name = $tmp.level1-key-name ,

+             key_value = $tmp.level1-key-value ,

+             level = 1 ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-key-row'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='success'></outcome>

+                                    </save>

+                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNET_KEYS

+             SET

+             entity_id = $eipam-ip-block.entity-id ,

+             key_name = $tmp.level2-key-name ,

+             key_value = $tmp.level2-key-value ,

+             level = 2 ; "

+    force='true'

+        pfx='pfx.eipam-v6subnet-key-row'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS table.' />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='success'></outcome>

+                                    </save>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="network-topology-operation"/>

+                                        <parameter name="field3" value="eipam-allocate-network-role-subnet"/>

+                                        <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>

+                                        <parameter name="field5" value="`$tmp.level1-key-value`"/>

+                                        <!-- Level 2 -->

+                                        <parameter name="field6" value="NETWORK_ROLE_NETWORK_ID"/>

+                                        <parameter name="field7" value="`$tmp.level2-key-value`"/>

+                                        <parameter name="field8" value="Level 2 subnet saved to DB."/>

+                                    </record>

+                                </block>

+                            </outcome>

+                            <outcome value=''>

+                                <return status="failure">

+                                    <parameter name="tmp.eipam-error" value="true" />

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value=''>

+                    <return status="failure">

+                        <parameter name="tmp.eipam-error" value="true" />

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="Please set the eipam-ip-block.allocate-version for appropriate EIPAM request." />

+                    </return>

+                </outcome>

+            </switch>

+            <return status='success'>

+                <parameter name="error-code" value="200" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_eipam-create-generic-pool.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_eipam-create-generic-pool.xml
new file mode 100755
index 0000000..1940615
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_eipam-create-generic-pool.xml
@@ -0,0 +1,901 @@
+<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='eipam-create-generic-pool' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name="tmp.eipam-error" value="false" />

+                <parameter name="tmp.create-v4-pool-flag" value="N" />

+                <parameter name="tmp.create-v6-pool-flag" value="N" />

+                <parameter name='eipam-ip-block.plans_length' value='0' />

+                <parameter name="eipam-pool.v4.pre-existing" value="N"/>

+                <parameter name="eipam-pool.v6.pre-existing" value="N"/>

+                <parameter name="level" value="`$eipam-ip-block.level - 1`" />

+            </set>

+            <switch test="`$tmp.allocate-subnet-flag`">

+                <outcome value="">

+                    <block atomic='true'>

+                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                        <set>

+                            <parameter name="tmp.allocate-subnet-flag" value="Y"/>

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='Y'></outcome>

+                <outcome value='N'></outcome>

+            </switch>

+            <switch test="`$network-model.use-ipv4`">

+                <outcome value='Y'>

+                    <block atomic='true'>

+                        <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $v4FQPN-output.pools[$level].key-value ;"

+        pfx='tmp.eipam-pool-row'>

+                            <outcome value='failure'>

+                                <return status="failure">

+                                    <parameter name="tmp.eipam-error" value="true" />

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />

+                                </return>

+                            </outcome>

+                            <outcome value='success'>

+                                <block atomic='true'>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="network-topology-operation"/>

+                                        <parameter name="field3" value="eipam-create-generic-pool"/>

+                                        <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>

+                                        <parameter name="field5" value="`$v4FQPN-output.pools[$eipam-ip-block.level - 1].key-value`"/>

+                                        <parameter name="field6" value="Level already exists, SKIP."/>

+                                        <parameter name="field7" value="`$eipam-ip-block.level`"/>

+                                        <parameter name="field8" value="`$tmp.eipam-pool-row.pool-id`"/>

+                                    </record>

+                                    <set>

+                                        <parameter name="eipam-pool.v4.pre-existing" value="Y"/>

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value="not-found">

+                                <switch test="`$l-idx`">

+                                    <outcome value='1'>

+                                        <block atomic='true'>

+                                            <switch test="`$tmp.qip-pool`">

+                                                <outcome value=""></outcome>

+                                                <outcome value='Other'>

+                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                    <set>

+                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value="`$tmp.qip-pool`"/>

+                                                        <parameter name="tmp.v4-qip-pool" value="`$tmp.qip-pool`" />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                            <switch test="`$tmp.skip-first-level`">

+                                                <outcome value='Y'></outcome>

+                                                <outcome value="">

+                                                    <block atomic='true'>

+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                        <set>

+                                                            <parameter name="network-topology-identifier-structure.eipam-v4-address-plan" value="`$network-model.eipam-v4-address-plan`"/>

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v4-address-plan`"/>

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>

+                                                            <!-- Number of Pool Levels -->

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>

+                                                        </set>

+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                        <set>

+                                                            <parameter name="tmp.create-v4-pool-flag" value="Y" />

+                                                        </set>

+                                                        <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">

+                                                            <block atomic='true'>

+                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                <set>

+                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>

+                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>

+                                                                </set>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                    <parameter name="field2" value="network-topology-operation"/>

+                                                                    <parameter name="field3" value="eipam-create-generic-pool"/>

+                                                                    <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>

+                                                                    <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name`"/>

+                                                                    <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value`"/>

+                                                                </record>

+                                                            </block>

+                                                        </for>

+                                                        <set>

+                                                            <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='N'>

+                                                    <block atomic='true'>

+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                        <set>

+                                                            <parameter name="network-topology-identifier-structure.eipam-v4-address-plan" value="`$network-model.eipam-v4-address-plan`"/>

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v4-address-plan`"/>

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>

+                                                            <!-- Number of Pool Levels -->

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>

+                                                        </set>

+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                        <set>

+                                                            <parameter name="tmp.create-v4-pool-flag" value="Y" />

+                                                        </set>

+                                                        <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">

+                                                            <block atomic='true'>

+                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                <set>

+                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>

+                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>

+                                                                </set>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                    <parameter name="field2" value="network-topology-operation"/>

+                                                                    <parameter name="field3" value="eipam-create-generic-pool"/>

+                                                                    <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>

+                                                                    <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name`"/>

+                                                                    <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value`"/>

+                                                                </record>

+                                                            </block>

+                                                        </for>

+                                                        <set>

+                                                            <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                    <outcome value=''>

+                                        <return status="failure">

+                                            <parameter name="tmp.eipam-error" value="true" />

+                                            <parameter name="error-code" value="500"/>

+                                            <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic='true'>

+                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                            <set>

+                                                <parameter name="network-topology-identifier-structure.eipam-v4-address-plan" value="`$network-model.eipam-v4-address-plan`"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v4-address-plan`"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>

+                                                <!-- Number of Pool Levels -->

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>

+                                            </set>

+                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                            <set>

+                                                <parameter name="tmp.create-v4-pool-flag" value="Y" />

+                                            </set>

+                                            <for index="l4-idx" start="0" end="`$eipam-ip-block.level`">

+                                                <block atomic='true'>

+                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                    <set>

+                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name" value="`$v4FQPN-output.pools[$l4-idx].key-name`"/>

+                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value" value="`$v4FQPN-output.pools[$l4-idx].key-value`"/>

+                                                    </set>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="network-topology-operation"/>

+                                                        <parameter name="field3" value="eipam-create-generic-pool"/>

+                                                        <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>

+                                                        <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-name`"/>

+                                                        <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l4-idx].key-value`"/>

+                                                    </record>

+                                                </block>

+                                            </for>

+                                            <set>

+                                                <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+                <outcome value=""></outcome>

+                <outcome value='N'></outcome>

+            </switch>

+            <switch test="`$network-model.use-ipv6`">

+                <outcome value='Y'>

+                    <block atomic='true'>

+                        <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $v6FQPN-output.pools[$level].key-value ;"

+        pfx='tmp.eipam-pool-row'>

+                            <outcome value='failure'>

+                                <return status="failure">

+                                    <parameter name="tmp.eipam-error" value="true" />

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />

+                                </return>

+                            </outcome>

+                            <outcome value='success'>

+                                <block atomic='true'>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="network-topology-operation"/>

+                                        <parameter name="field3" value="eipam-create-generic-pool"/>

+                                        <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>

+                                        <parameter name="field5" value="`$v6FQPN-output.pools[$eipam-ip-block.level - 1].key-value`"/>

+                                        <parameter name="field6" value="Level already exists, SKIP."/>

+                                        <parameter name="field7" value="`$eipam-ip-block.level`"/>

+                                        <parameter name="field8" value="`$tmp.eipam-pool-row.pool-id`"/>

+                                    </record>

+                                    <set>

+                                        <parameter name="eipam-pool.v6.pre-existing" value="Y"/>

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value="not-found">

+                                <switch test="`$l-idx`">

+                                    <outcome value='1'>

+                                        <block atomic='true'>

+                                            <switch test="`$tmp.qip-pool`">

+                                                <outcome value=""></outcome>

+                                                <outcome value='Other'>

+                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                    <set>

+                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value="`$tmp.qip-pool`"/>

+                                                        <parameter name="tmp.v6-qip-pool" value="`$tmp.qip-pool`" />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                            <switch test="`$tmp.skip-first-level`">

+                                                <outcome value='Y'></outcome>

+                                                <outcome value="">

+                                                    <block atomic='true'>

+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                        <set>

+                                                            <parameter name="network-topology-identifier-structure.eipam-v6-address-plan" value="`$network-model.eipam-v6-address-plan`"/>

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v6-address-plan`"/>

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>

+                                                            <!-- Number of Pool Levels -->

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>

+                                                        </set>

+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                        <set>

+                                                            <parameter name="tmp.create-v6-pool-flag" value="Y" />

+                                                        </set>

+                                                        <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">

+                                                            <block atomic='true'>

+                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                <set>

+                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>

+                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>

+                                                                </set>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                    <parameter name="field2" value="network-topology-operation"/>

+                                                                    <parameter name="field3" value="eipam-create-generic-pool"/>

+                                                                    <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>

+                                                                    <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name`"/>

+                                                                    <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value`"/>

+                                                                    <parameter name="field7" value="`$l6-idx`"/>

+                                                                </record>

+                                                            </block>

+                                                        </for>

+                                                        <set>

+                                                            <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='N'>

+                                                    <block atomic='true'>

+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                        <set>

+                                                            <parameter name="network-topology-identifier-structure.eipam-v6-address-plan" value="`$network-model.eipam-v6-address-plan`"/>

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v6-address-plan`"/>

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>

+                                                            <!-- Number of Pool Levels -->

+                                                            <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>

+                                                        </set>

+                                                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                        <set>

+                                                            <parameter name="tmp.create-v6-pool-flag" value="Y" />

+                                                        </set>

+                                                        <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">

+                                                            <block atomic='true'>

+                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                <set>

+                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>

+                                                                    <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>

+                                                                </set>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                    <parameter name="field2" value="network-topology-operation"/>

+                                                                    <parameter name="field3" value="eipam-create-generic-pool"/>

+                                                                    <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>

+                                                                    <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name`"/>

+                                                                    <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value`"/>

+                                                                    <parameter name="field7" value="`$l6-idx`"/>

+                                                                </record>

+                                                            </block>

+                                                        </for>

+                                                        <set>

+                                                            <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                    <outcome value=''>

+                                        <return status="failure">

+                                            <parameter name="tmp.eipam-error" value="true" />

+                                            <parameter name="error-code" value="500"/>

+                                            <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic='true'>

+                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                            <set>

+                                                <parameter name="network-topology-identifier-structure.eipam-v6-address-plan" value="`$network-model.eipam-v6-address-plan`"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v6-address-plan`"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="`$tmp.allocate-subnet-flag`"/>

+                                                <!-- Number of Pool Levels -->

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>

+                                            </set>

+                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                            <set>

+                                                <parameter name="tmp.create-v6-pool-flag" value="Y" />

+                                            </set>

+                                            <for index="l6-idx" start="0" end="`$eipam-ip-block.level`">

+                                                <block atomic='true'>

+                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                    <set>

+                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name" value="`$v6FQPN-output.pools[$l6-idx].key-name`"/>

+                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value" value="`$v6FQPN-output.pools[$l6-idx].key-value`"/>

+                                                    </set>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="network-topology-operation"/>

+                                                        <parameter name="field3" value="eipam-create-generic-pool"/>

+                                                        <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>

+                                                        <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-name`"/>

+                                                        <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[$l6-idx].key-value`"/>

+                                                        <parameter name="field7" value="`$l6-idx`"/>

+                                                    </record>

+                                                </block>

+                                            </for>

+                                            <set>

+                                                <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+                <outcome value=""></outcome>

+                <outcome value='N'></outcome>

+            </switch>

+            <switch test="`$tmp.create-v4-pool-flag`">

+                <outcome value='Y'>

+                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="createPool">

+                        <outcome value='success'></outcome>

+                        <outcome value='failure'>

+                            <return status="failure">

+                                <parameter name="tmp.eipam-error" value="true" />

+                                <parameter name="error-code" value="500"/>

+                                <parameter name="error-message" value="An error occured while creating pool in EIPAM." />

+                            </return>

+                        </outcome>

+                    </execute>

+                </outcome>

+                <outcome value='N'>

+                    <switch test="`$tmp.create-v6-pool-flag`">

+                        <outcome value='Y'>

+                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                            <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="createPool">

+                                <outcome value='success'></outcome>

+                                <outcome value='failure'>

+                                    <return status="failure">

+                                        <parameter name="tmp.eipam-error" value="true" />

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="error-message" value="An error occured while creating pool in EIPAM." />

+                                    </return>

+                                </outcome>

+                            </execute>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </switch>

+            <switch test="`$network-model.use-ipv4`">

+                <outcome value='Y'>

+                    <block atomic='true'>

+                        <switch test="`$eipam-pool.v4.pre-existing`">

+                            <outcome value='N'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="key-name" value="`$v4FQPN-output.pools[$eipam-ip-block.level - 1].key-name`" />

+                                        <parameter name="key-value" value="`$v4FQPN-output.pools[$eipam-ip-block.level - 1].key-value`" />

+                                    </set>

+                                    <switch test="`$eipam-ip-block.level`">

+                                        <outcome value='1'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name="parent_pool" value="`$tmp.v4-qip-pool`" />

+                                                    <parameter name="level" value="`$eipam-ip-block.level - 1`" />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name="parent_pool" value="`$v4FQPN-output.pools[$eipam-ip-block.level - 2].key-value`" />

+                                                    <parameter name="level" value="`$eipam-ip-block.level - 1`" />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="network-topology-operation"/>

+                                        <parameter name="field3" value="eipam-create-generic-pool"/>

+                                        <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>

+                                        <parameter name="field5" value="`$key-name`"/>

+                                        <parameter name="field6" value="`$key-value`"/>

+                                        <parameter name="field7" value="`$tmp.network_instance_group_id`"/>

+                                        <parameter name="field8" value="`$eipam-ip-block.level`"/>

+                                        <parameter name="field9" value="`$network-model.network-role`"/>

+                                        <parameter name="field10" value="`$tmp.network-id`"/>

+                                        <parameter name="field11" value="Saving to EIPAM_IP_POOLS table."/>

+                                    </record>

+                                    <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">

+                                        <outcome value='shared'>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_POOLS

+             SET

+             key_name = $key-name ,

+             key_value = $key-value ,

+             level = $eipam-ip-block.level ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             address_family = $network-model.ipv4-ip-version ,

+             parent_pool = $parent_pool ,

+             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,

+             network_id = $tmp.network-id ,

+             network_instance_group_id = $tmp.network-instance-group-id ; "

+    force='true'

+        pfx='pfx.eipam-v4pool-row'>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_POOLS

+             SET

+             key_name = $key-name ,

+             key_value = $key-value ,

+             level = $eipam-ip-block.level ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             address_family = $network-model.ipv4-ip-version ,

+             parent_pool = $parent_pool ,

+             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v4pool-row'>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                        <outcome value=''>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_POOLS

+             SET

+             key_name = $key-name ,

+             key_value = $key-value ,

+             level = $eipam-ip-block.level ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             address_family = $network-model.ipv4-ip-version ,

+             parent_pool = $parent_pool ,

+             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v4pool-row'>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                    </switch>

+                                    <switch test="`$eipam-ip-block.level == $eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">

+                                        <outcome value='true'>

+                                            <block atomic='true'>

+                                                <switch test="`$tmp.allocate-subnet-flag`">

+                                                    <outcome value='Y'>

+                                                        <block atomic='true'>

+                                                            <for index="i" start="0" end="`$eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan_length`">

+                                                                <block atomic='true'>

+                                                                    <switch test="`$network-model.eipam-v4-address-plan == $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PlanName`">

+                                                                        <outcome value='true'>

+                                                                            <block atomic='true'>

+                                                                                <set>

+                                                                                    <parameter name="index_found" value="true" />

+                                                                                </set>

+                                                                                <break/>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                            </for>

+                                                            <switch test="`$index_found`">

+                                                                <outcome value='true'>

+                                                                    <block atomic='true'>

+                                                                        <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v4-address-plan and level = $eipam-ip-block.level and key_value = $v4FQPN-output.pools[$level].key-value ;"

+        pfx='tmp.eipam-pool-row'>

+                                                                            <outcome value='failure'>

+                                                                                <return status="failure">

+                                                                                    <parameter name="tmp.eipam-error" value="true" />

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />

+                                                                                </return>

+                                                                            </outcome>

+                                                                            <outcome value='success'>

+                                                                                <block atomic='true'>

+                                                                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IPAddress ,

+             prefix_length = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.Mask ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             status = 'ALLOCATED' ,

+             pool_id = $tmp.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv4-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-subnet-row'>

+                                                                                        <outcome value='failure'>

+                                                                                            <return status='failure'>

+                                                                                                <parameter name='error-code' value='500' />

+                                                                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS .' />

+                                                                                            </return>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'></outcome>

+                                                                                    </save>

+                                                                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNET_KEYS

+             SET

+             entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,

+             key_name = $key-name ,

+             key_value = $key-value ,

+             level = $eipam-ip-block.level ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-key-row'>

+                                                                                        <outcome value='success'></outcome>

+                                                                                        <outcome value='failure'>

+                                                                                            <return status='failure'>

+                                                                                                <parameter name='error-code' value='500' />

+                                                                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS .' />

+                                                                                            </return>

+                                                                                        </outcome>

+                                                                                    </save>

+                                                                                </block>

+                                                                            </outcome>

+                                                                            <outcome value="not-found">

+                                                                                <return status="failure">

+                                                                                    <parameter name="tmp.eipam-error" value="true" />

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />

+                                                                                </return>

+                                                                            </outcome>

+                                                                        </get-resource>

+                                                                    </block>

+                                                                </outcome>

+                                                                <outcome value='Other'>

+                                                                    <return status='failure'>

+                                                                        <parameter name='error-code' value='500' />

+                                                                        <parameter name='error-message' value='failed to find plan name in CreatePoolResponse.' />

+                                                                    </return>

+                                                                </outcome>

+                                                                <outcome value=''>

+                                                                    <return status='failure'>

+                                                                        <parameter name='error-code' value='500' />

+                                                                        <parameter name='error-message' value='failed to find plan name in CreatePoolResponse.' />

+                                                                    </return>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='N'></outcome>

+                                                </switch>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                            <outcome value='Y'></outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value=""></outcome>

+                <outcome value='N'></outcome>

+            </switch>

+            <switch test="`$network-model.use-ipv6`">

+                <outcome value='Y'>

+                    <block atomic='true'>

+                        <switch test="`$eipam-pool.v6.pre-existing`">

+                            <outcome value='N'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="key-name" value="`$v6FQPN-output.pools[$eipam-ip-block.level - 1].key-name`" />

+                                        <parameter name="key-value" value="`$v6FQPN-output.pools[$eipam-ip-block.level - 1].key-value`" />

+                                    </set>

+                                    <switch test="`$eipam-ip-block.level`">

+                                        <outcome value='1'>

+                                            <set>

+                                                <parameter name="parent_pool" value="`$tmp.v6-qip-pool`" />

+                                                <parameter name="level" value="`$eipam-ip-block.level - 1`" />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <set>

+                                                <parameter name="parent_pool" value="`$v6FQPN-output.pools[$eipam-ip-block.level - 2].key-value`" />

+                                                <parameter name="level" value="`$eipam-ip-block.level - 1`" />

+                                            </set>

+                                        </outcome>

+                                    </switch>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="network-topology-operation"/>

+                                        <parameter name="field3" value="eipam-create-network-role-pool"/>

+                                        <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>

+                                        <parameter name="field5" value="`$v6FQPN-output.pools[$level].key-name`"/>

+                                        <parameter name="field6" value="`$v6FQPN-output.pools[$level].key-value`"/>

+                                        <parameter name="field7" value="`$tmp.network_instance_group_id`"/>

+                                        <parameter name="field8" value="`$eipam-ip-block.level`"/>

+                                        <parameter name="field9" value="`$network-model.network-role`"/>

+                                        <parameter name="field10" value="`$tmp.network-id`"/>

+                                        <parameter name="field11" value="Saving to EIPAM_IP_POOLS table."/>

+                                    </record>

+                                    <switch test="`$network-instance-group-data.subnet-assignment-policy.subnet-use`">

+                                        <outcome value='shared'>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_POOLS

+             SET

+             key_name = $v6FQPN-output.pools[$level].key-name ,

+             key_value = $v6FQPN-output.pools[$level].key-value ,

+             level = $eipam-ip-block.level ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             address_family = $network-model.ipv6-ip-version ,

+             parent_pool = $parent_pool ,

+             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,

+             network_id = $tmp.network-id ,

+             network_instance_group_id = $tmp.network-instance-group-id ; "

+    force='true'

+        pfx='pfx.eipam-v6pool-row'>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_POOLS

+             SET

+             key_name = $v6FQPN-output.pools[$level].key-name ,

+             key_value = $v6FQPN-output.pools[$level].key-value ,

+             level = $eipam-ip-block.level ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             address_family = $network-model.ipv6-ip-version ,

+             parent_pool = $parent_pool ,

+             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v6pool-row'>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                        <outcome value=''>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_POOLS

+             SET

+             key_name = $v6FQPN-output.pools[$level].key-name ,

+             key_value = $v6FQPN-output.pools[$level].key-value ,

+             level = $eipam-ip-block.level ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             address_family = $network-model.ipv6-ip-version ,

+             parent_pool = $parent_pool ,

+             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v6pool-row'>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                    </switch>

+                                    <switch test="`$eipam-ip-block.level == $eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">

+                                        <outcome value='true'>

+                                            <block atomic='true'>

+                                                <switch test="`$tmp.allocate-subnet-flag`">

+                                                    <outcome value='Y'>

+                                                        <block atomic='true'>

+                                                            <for index="i" start="0" end="`$eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan_length`">

+                                                                <block atomic='true'>

+                                                                    <switch test="`$network-model.eipam-v6-address-plan == $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PlanName`">

+                                                                        <outcome value='true'>

+                                                                            <block atomic='true'>

+                                                                                <set>

+                                                                                    <parameter name="index_found" value="true" />

+                                                                                </set>

+                                                                                <break/>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                            </for>

+                                                            <switch test="`$index_found`">

+                                                                <outcome value='true'>

+                                                                    <block atomic='true'>

+                                                                        <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v6-address-plan and level = $eipam-ip-block.level and key_value = $v6FQPN-output.pools[$level].key-value ;"

+        pfx='tmp.eipam-pool-row'>

+                                                                            <outcome value='failure'>

+                                                                                <return status="failure">

+                                                                                    <parameter name="tmp.eipam-error" value="true" />

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />

+                                                                                </return>

+                                                                            </outcome>

+                                                                            <outcome value='success'>

+                                                                                <block atomic='true'>

+                                                                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNETS

+             SET

+             entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,

+             service_type = $tmp.service-type ,

+             ip_address = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IPAddress ,

+             prefix_length = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.Mask ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             status = 'ALLOCATED' ,

+             pool_id = $tmp.eipam-pool-row.pool-id ,

+             address_family = $network-model.ipv6-ip-version ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-subnet-row'>

+                                                                                        <outcome value='failure'>

+                                                                                            <return status='failure'>

+                                                                                                <parameter name='error-code' value='500' />

+                                                                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNETS .' />

+                                                                                            </return>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'></outcome>

+                                                                                    </save>

+                                                                                    <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_SUBNET_KEYS

+             SET

+             entity_id = $eipam-ip-block.createPoolResponse.CreatePoolPlans.CreatePoolPlan[$i].PoolItem.IPDataBlock.IpamPoolAllocId ,

+             key_name = $key-name ,

+             key_value = $key-value ,

+             level = $eipam-ip-block.level ; "

+    force='true'

+        pfx='pfx.eipam-v4subnet-key-row'>

+                                                                                        <outcome value='success'></outcome>

+                                                                                        <outcome value='failure'>

+                                                                                            <return status='failure'>

+                                                                                                <parameter name='error-code' value='500' />

+                                                                                                <parameter name='error-message' value='failed to update EIPAM_IP_SUBNET_KEYS .' />

+                                                                                            </return>

+                                                                                        </outcome>

+                                                                                    </save>

+                                                                                </block>

+                                                                            </outcome>

+                                                                            <outcome value="not-found">

+                                                                                <return status="failure">

+                                                                                    <parameter name="tmp.eipam-error" value="true" />

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />

+                                                                                </return>

+                                                                            </outcome>

+                                                                        </get-resource>

+                                                                    </block>

+                                                                </outcome>

+                                                                <outcome value='Other'>

+                                                                    <return status='failure'>

+                                                                        <parameter name='error-code' value='500' />

+                                                                        <parameter name='error-message' value='failed to find plan name in CreatePoolResponse.' />

+                                                                    </return>

+                                                                </outcome>

+                                                                <outcome value=''>

+                                                                    <return status='failure'>

+                                                                        <parameter name='error-code' value='500' />

+                                                                        <parameter name='error-message' value='failed to find plan name in CreatePoolResponse.' />

+                                                                    </return>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='N'></outcome>

+                                                </switch>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                            <outcome value='Y'></outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value=""></outcome>

+                <outcome value='N'></outcome>

+            </switch>

+            <return status='success'>

+                <parameter name="error-code" value="200" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_eipam-create-network-role-pool.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_eipam-create-network-role-pool.xml
new file mode 100755
index 0000000..49436b4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_eipam-create-network-role-pool.xml
@@ -0,0 +1,699 @@
+<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='eipam-create-network-role-pool' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name="tmp.eipam-error" value="false" />

+                <parameter name="tmp.create-v4-pool-flag" value="N" />

+                <parameter name="tmp.create-v6-pool-flag" value="N" />

+                <parameter name='eipam-ip-block.plans_length' value='0' />

+                <parameter name="eipam-pool.v4.pre-existing" value="false"/>

+                <parameter name="eipam-pool.v6.pre-existing" value="false"/>

+                <parameter name="tmp.v4-level1-key-name" value="LOCATION_CLLI8:CLOUD_REGION_ID" />

+                <parameter name="tmp.v4-level2-key-name" value="NETWORK_ROLE:NETWORK_ID" />

+                <parameter name="tmp.v6-level1-key-name" value="LOCATION_CLLI8:CLOUD_REGION_ID" />

+                <parameter name="tmp.v6-level2-key-name" value="NETWORK_ROLE:NETWORK_ID" />

+            </set>

+            <switch test="`$tmp.region`">

+                <outcome value="USA">

+                    <set>

+                        <parameter name="tmp.region" value="US" />

+                    </set>

+                </outcome>

+            </switch>

+            <switch test="`$network-model.use-ipv4`">

+                <outcome value='Y'>

+                    <block atomic='true'>

+                        <switch test="`$eipam-ip-block.level`">

+                            <outcome value='1'>

+                                <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v4-address-plan and level = 1 and key_value = $tmp.level1-key-value ;"

+        pfx='tmp.eipam-pool-row'>

+                                    <outcome value='failure'>

+                                        <return status="failure">

+                                            <parameter name="tmp.eipam-error" value="true" />

+                                            <parameter name="error-code" value="500"/>

+                                            <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='success'>

+                                        <block atomic='true'>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="network-topology-operation"/>

+                                                <parameter name="field3" value="eipam-create-network-role-pool"/>

+                                                <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>

+                                                <parameter name="field5" value="`$tmp.level1-key-value`"/>

+                                                <parameter name="field6" value="Level 1 already exists, SKIP."/>

+                                                <parameter name="field7" value="`$tmp.eipam-pool-row.pool-id`"/>

+                                            </record>

+                                            <set>

+                                                <parameter name="eipam-pool.v4.pre-existing" value="true"/>

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                    <outcome value="not-found">

+                                        <block atomic='true'>

+                                            <switch test="`$network-model.eipam-v4-address-plan`">

+                                                <outcome value="AIC_ATM_UNPROTECTED_V4">

+                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                    <set>

+                                                        <parameter name="tmp.qip-pool" value="`'ATM-U ' + $tmp.region`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value="AIC_DATA_PLANE_UNPROTECTED_V4">

+                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                    <set>

+                                                        <parameter name="tmp.qip-pool" value="`'DP-U ' + $tmp.region`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value="AIC_DATA_PLANE_PRIVATE_V4">

+                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                    <set>

+                                                        <parameter name="tmp.qip-pool" value="`'DP-Private ' + $tmp.region`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value="AIC_ATM_PROTECTED_V4">

+                                                    <set>

+                                                        <parameter name="tmp.qip-pool" value="`'ATM-P ' + $tmp.region`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value="AIC_DATA_PLANE_PROTECTED_V4">

+                                                    <set>

+                                                        <parameter name="tmp.qip-pool" value="`'DP-P ' + $tmp.region`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value="AIC_AIM_LANDING_NETWORK_V4">

+                                                    <set>

+                                                        <parameter name="tmp.qip-pool" value="`'AIC-AIM-LANDING-V4 ' + $tmp.region`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <return status="failure">

+                                                        <parameter name="tmp.eipam-error" value="true" />

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="error-message" value="EIPAM Address Plan is not valid." />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                            <set>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v4-address-plan`"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="N"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value="`$tmp.qip-pool`"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>

+                                                <!-- Number of Pool Levels -->

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="1"/>

+                                                <!-- Level 1 -->

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name" value="`$tmp.v4-level1-key-name`"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value" value="`$tmp.level1-key-value`"/>

+                                                <parameter name="tmp.create-v4-pool-flag" value="Y" />

+                                                <parameter name="tmp.v4-qip-pool" value="`$tmp.qip-pool`" />

+                                            </set>

+                                            <switch test="`$eipam-ip-block.level`">

+                                                <outcome value=''>

+                                                    <return status="failure">

+                                                        <parameter name="tmp.eipam-error" value="true" />

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />

+                                                    </return>

+                                                </outcome>

+                                                <outcome value='2'>

+                                                    <set>

+                                                        <!-- Number of Pool Levels -->

+                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>

+                                                        <!-- Level 2 -->

+                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value=""/>

+                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name" value="`$tmp.v4-level2-key-name`"/>

+                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value" value="`$tmp.level2-key-value`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='Other'></outcome>

+                                            </switch>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="network-topology-operation"/>

+                                                <parameter name="field3" value="eipam-create-network-role-pool"/>

+                                                <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>

+                                                <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name`"/>

+                                                <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value`"/>

+                                                <parameter name="field7" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name`"/>

+                                                <parameter name="field8" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value`"/>

+                                            </record>

+                                            <set>

+                                                <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </get-resource>

+                            </outcome>

+                            <outcome value=''>

+                                <return status="failure">

+                                    <parameter name="tmp.eipam-error" value="true" />

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />

+                                </return>

+                            </outcome>

+                            <outcome value='2'>

+                                <block atomic='true'>

+                                    <switch test="`$network-model.eipam-v4-address-plan`">

+                                        <outcome value="AIC_ATM_UNPROTECTED_V4">

+                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                            <set>

+                                                <parameter name="tmp.qip-pool" value="`'ATM-U ' + $tmp.region`"/>

+                                            </set>

+                                        </outcome>

+                                        <outcome value="AIC_DATA_PLANE_UNPROTECTED_V4">

+                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                            <set>

+                                                <parameter name="tmp.qip-pool" value="`'DP-U ' + $tmp.region`"/>

+                                            </set>

+                                        </outcome>

+                                        <outcome value="AIC_DATA_PLANE_PRIVATE_V4">

+                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                            <set>

+                                                <parameter name="tmp.qip-pool" value="`'DP-Private ' + $tmp.region`"/>

+                                            </set>

+                                        </outcome>

+                                        <outcome value="AIC_ATM_PROTECTED_V4">

+                                            <set>

+                                                <parameter name="tmp.qip-pool" value="`'ATM-P ' + $tmp.region`"/>

+                                            </set>

+                                        </outcome>

+                                        <outcome value="AIC_DATA_PLANE_PROTECTED_V4">

+                                            <set>

+                                                <parameter name="tmp.qip-pool" value="`'DP-P ' + $tmp.region`"/>

+                                            </set>

+                                        </outcome>

+                                        <outcome value="AIC_AIM_LANDING_NETWORK_V4">

+                                            <set>

+                                                <parameter name="tmp.qip-pool" value="`'AIC-AIM-LANDING-V4 ' + $tmp.region`"/>

+                                            </set>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="EIPAM Address Plan is not valid." />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <set>

+                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v4-address-plan`"/>

+                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="N"/>

+                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value="`$tmp.qip-pool`"/>

+                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>

+                                        <!-- Number of Pool Levels -->

+                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="1"/>

+                                        <!-- Level 1 -->

+                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name" value="`$tmp.v4-level1-key-name`"/>

+                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value" value="`$tmp.level1-key-value`"/>

+                                        <parameter name="tmp.create-v4-pool-flag" value="Y" />

+                                        <parameter name="tmp.v4-qip-pool" value="`$tmp.qip-pool`" />

+                                    </set>

+                                    <switch test="`$eipam-ip-block.level`">

+                                        <outcome value=''>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='2'>

+                                            <set>

+                                                <!-- Number of Pool Levels -->

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>

+                                                <!-- Level 2 -->

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value=""/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name" value="`$tmp.v4-level2-key-name`"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value" value="`$tmp.level2-key-value`"/>

+                                            </set>

+                                        </outcome>

+                                        <outcome value='Other'></outcome>

+                                    </switch>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="network-topology-operation"/>

+                                        <parameter name="field3" value="eipam-create-network-role-pool"/>

+                                        <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>

+                                        <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name`"/>

+                                        <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value`"/>

+                                        <parameter name="field7" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name`"/>

+                                        <parameter name="field8" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value`"/>

+                                    </record>

+                                    <set>

+                                        <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value=""></outcome>

+                <outcome value='N'></outcome>

+            </switch>

+            <switch test="`$network-model.use-ipv6`">

+                <outcome value='Y'>

+                    <block atomic='true'>

+                        <switch test="`$eipam-ip-block.level`">

+                            <outcome value='1'>

+                                <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $network-model.eipam-v6-address-plan and level = 1 and key_value = $tmp.level1-key-value ;"

+        pfx='tmp.eipam-pool-row'>

+                                    <outcome value='failure'>

+                                        <return status="failure">

+                                            <parameter name="tmp.eipam-error" value="true" />

+                                            <parameter name="error-code" value="500"/>

+                                            <parameter name="error-message" value="Query to DB table EIPAM_IP_POOLS failed." />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='success'>

+                                        <block atomic='true'>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="network-topology-operation"/>

+                                                <parameter name="field3" value="eipam-create-network-role-pool"/>

+                                                <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>

+                                                <parameter name="field5" value="`$tmp.level1-key-value`"/>

+                                                <parameter name="field6" value="Level 1 already exists, SKIP."/>

+                                                <parameter name="field7" value="`$tmp.eipam-pool-row.pool-id`"/>

+                                            </record>

+                                            <set>

+                                                <parameter name="eipam-pool.v6.pre-existing" value="true"/>

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                    <outcome value="not-found">

+                                        <block atomic='true'>

+                                            <switch test="`$network-model.eipam-v6-address-plan`">

+                                                <outcome value="AIC_ATM_UNPROTECTED_V6">

+                                                    <set>

+                                                        <parameter name="tmp.qip-pool" value="`'ATM-U-V6 ' + $tmp.region`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value="AIC_AIM_LANDING_NETWORK_V6">

+                                                    <set>

+                                                        <parameter name="tmp.qip-pool" value="`'AIC-AIM-LANDING-V6 ' + $tmp.region`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value="AIC_ATM_PROTECTED_V6">

+                                                    <set>

+                                                        <parameter name="tmp.qip-pool" value="`'ATM-P-V6 ' + $tmp.region`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value="AIC_DATA_PLANE_UNPROTECTED_V6">

+                                                    <set>

+                                                        <parameter name="tmp.qip-pool" value="`'AIC-DP-U-V6 ' + $tmp.region`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value="AIC_DATA_PLANE_PRIVATE_V6">

+                                                    <set>

+                                                        <parameter name="tmp.qip-pool" value="`'AIC-DP-Private-V6 ' + $tmp.region`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value="AIC_DATA_PLANE_PROTECTED_V6">

+                                                    <set>

+                                                        <parameter name="tmp.qip-pool" value="`'AIC-DP-P-V6 ' + $tmp.region`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <return status="failure">

+                                                        <parameter name="tmp.eipam-error" value="true" />

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="error-message" value="EIPAM Address Plan is not valid." />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                            <set>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v6-address-plan`"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="N"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value="`$tmp.qip-pool`"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>

+                                                <!-- Number of Pool Levels -->

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="1"/>

+                                                <!-- Level 1 -->

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name" value="`$tmp.v6-level1-key-name`"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value" value="`$tmp.level1-key-value`"/>

+                                                <parameter name="tmp.create-v6-pool-flag" value="Y" />

+                                                <parameter name="tmp.v6-qip-pool" value="`$tmp.qip-pool`" />

+                                            </set>

+                                            <switch test="`$eipam-ip-block.level`">

+                                                <outcome value=''>

+                                                    <return status="failure">

+                                                        <parameter name="tmp.eipam-error" value="true" />

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />

+                                                    </return>

+                                                </outcome>

+                                                <outcome value='2'>

+                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                    <set>

+                                                        <!-- Number of Pool Levels -->

+                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>

+                                                        <!-- Level 2 -->

+                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value=""/>

+                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name" value="`$tmp.v6-level2-key-name`"/>

+                                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value" value="`$tmp.level2-key-value`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='Other'></outcome>

+                                            </switch>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="network-topology-operation"/>

+                                                <parameter name="field3" value="eipam-create-network-role-pool"/>

+                                                <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>

+                                                <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name`"/>

+                                                <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value`"/>

+                                                <parameter name="field7" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name`"/>

+                                                <parameter name="field8" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value`"/>

+                                            </record>

+                                            <set>

+                                                <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </get-resource>

+                            </outcome>

+                            <outcome value=''>

+                                <return status="failure">

+                                    <parameter name="tmp.eipam-error" value="true" />

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />

+                                </return>

+                            </outcome>

+                            <outcome value='2'>

+                                <block atomic='true'>

+                                    <switch test="`$network-model.eipam-v6-address-plan`">

+                                        <outcome value="AIC_ATM_UNPROTECTED_V6">

+                                            <set>

+                                                <parameter name="tmp.qip-pool" value="`'ATM-U-V6 ' + $tmp.region`"/>

+                                            </set>

+                                        </outcome>

+                                        <outcome value="AIC_AIM_LANDING_NETWORK_V6">

+                                            <set>

+                                                <parameter name="tmp.qip-pool" value="`'AIC-AIM-LANDING-V6 ' + $tmp.region`"/>

+                                            </set>

+                                        </outcome>

+                                        <outcome value="AIC_ATM_PROTECTED_V6">

+                                            <set>

+                                                <parameter name="tmp.qip-pool" value="`'ATM-P-V6 ' + $tmp.region`"/>

+                                            </set>

+                                        </outcome>

+                                        <outcome value="AIC_DATA_PLANE_UNPROTECTED_V6">

+                                            <set>

+                                                <parameter name="tmp.qip-pool" value="`'AIC-DP-U-V6 ' + $tmp.region`"/>

+                                            </set>

+                                        </outcome>

+                                        <outcome value="AIC_DATA_PLANE_PRIVATE_V6">

+                                            <set>

+                                                <parameter name="tmp.qip-pool" value="`'AIC-DP-Private-V6 ' + $tmp.region`"/>

+                                            </set>

+                                        </outcome>

+                                        <outcome value="AIC_DATA_PLANE_PROTECTED_V6">

+                                            <set>

+                                                <parameter name="tmp.qip-pool" value="`'AIC-DP-P-V6 ' + $tmp.region`"/>

+                                            </set>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="EIPAM Address Plan is not valid." />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                    <set>

+                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name" value="`$network-model.eipam-v6-address-plan`"/>

+                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].allocate-subnet-flag" value="N"/>

+                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value="`$tmp.qip-pool`"/>

+                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests_length" value="1"/>

+                                        <!-- Number of Pool Levels -->

+                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="1"/>

+                                        <!-- Level 1 -->

+                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name" value="`$tmp.v6-level1-key-name`"/>

+                                        <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value" value="`$tmp.level1-key-value`"/>

+                                        <parameter name="tmp.create-v6-pool-flag" value="Y" />

+                                        <parameter name="tmp.v6-qip-pool" value="`$tmp.qip-pool`" />

+                                    </set>

+                                    <switch test="`$eipam-ip-block.level`">

+                                        <outcome value=''>

+                                            <return status="failure">

+                                                <parameter name="tmp.eipam-error" value="true" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="Please set the eipam-ip-block.level for appropriate EIPAM request." />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='2'>

+                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                            <set>

+                                                <!-- Number of Pool Levels -->

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools_length" value="`$eipam-ip-block.level`"/>

+                                                <!-- Level 2 -->

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].parent-pool" value=""/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name" value="`$tmp.v6-level2-key-name`"/>

+                                                <parameter name="eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value" value="`$tmp.level2-key-value`"/>

+                                            </set>

+                                        </outcome>

+                                        <outcome value='Other'></outcome>

+                                    </switch>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="network-topology-operation"/>

+                                        <parameter name="field3" value="eipam-create-network-role-pool"/>

+                                        <parameter name="field4" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].plan-name`"/>

+                                        <parameter name="field5" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-name`"/>

+                                        <parameter name="field6" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[0].key-value`"/>

+                                        <parameter name="field7" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-name`"/>

+                                        <parameter name="field8" value="`$eipam-ip-block.plans[$eipam-ip-block.plans_length].requests[0].pools[1].key-value`"/>

+                                    </record>

+                                    <set>

+                                        <parameter name="eipam-ip-block.plans_length" value="`$eipam-ip-block.plans_length + 1`" />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value=""></outcome>

+                <outcome value='N'></outcome>

+            </switch>

+            <switch test="`$tmp.create-v4-pool-flag`">

+                <outcome value='Y'>

+                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="createPool">

+                        <outcome value='success'></outcome>

+                        <outcome value='failure'>

+                            <return status="failure">

+                                <parameter name="tmp.eipam-error" value="true" />

+                                <parameter name="error-code" value="500"/>

+                                <parameter name="error-message" value="An error occured while creating pool in EIPAM." />

+                            </return>

+                        </outcome>

+                    </execute>

+                </outcome>

+                <outcome value='N'>

+                    <switch test="`$tmp.create-v6-pool-flag`">

+                        <outcome value='Y'>

+                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                            <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="createPool">

+                                <outcome value='success'></outcome>

+                                <outcome value='failure'>

+                                    <return status="failure">

+                                        <parameter name="tmp.eipam-error" value="true" />

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="error-message" value="An error occured while creating pool in EIPAM." />

+                                    </return>

+                                </outcome>

+                            </execute>

+                        </outcome>

+                        <outcome value='N'></outcome>

+                    </switch>

+                </outcome>

+            </switch>

+            <switch test="`$network-model.use-ipv4`">

+                <outcome value='Y'>

+                    <block atomic='true'>

+                        <switch test="`$tmp.create-v4-pool-flag`">

+                            <outcome value='Y'>

+                                <block atomic='true'>

+                                    <switch test="`$eipam-ip-block.level`">

+                                        <outcome value='1'>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_POOLS

+             SET

+             key_name = $tmp.v4-level1-key-name ,

+             key_value = $tmp.level1-key-value ,

+             level = 1 ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             address_family = $network-model.ipv4-ip-version ,

+             parent_pool = $tmp.v4-qip-pool ,

+             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v4pool-row'>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />

+                                                    </return>

+                                                </outcome>

+                                                <outcome value='Other'></outcome>

+                                                <outcome value='Other'></outcome>

+                                            </save>

+                                        </outcome>

+                                        <outcome value='2'>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_POOLS

+             SET

+             key_name = $tmp.v4-level2-key-name ,

+             key_value = $tmp.level2-key-value ,

+             level = 2 ,

+             plan_name = $network-model.eipam-v4-address-plan ,

+             address_family = $network-model.ipv4-ip-version ,

+             parent_pool = $tmp.level1-key-value ,

+             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v4pool-row'>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />

+                                                    </return>

+                                                </outcome>

+                                                <outcome value='Other'></outcome>

+                                                <outcome value='Other'></outcome>

+                                            </save>

+                                        </outcome>

+                                    </switch>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="network-topology-operation"/>

+                                        <parameter name="field3" value="eipam-create-network-role-pool"/>

+                                        <parameter name="field4" value="`$network-model.eipam-v4-address-plan`"/>

+                                        <parameter name="field5" value="`$tmp.v4-level1-key-name`"/>

+                                        <parameter name="field6" value="`$tmp.level1-key-value`"/>

+                                        <parameter name="field7" value="`$tmp.v4-level2-key-name`"/>

+                                        <parameter name="field8" value="`$tmp.level2-key-value`"/>

+                                        <parameter name="field9" value="`$network-model.network-role`"/>

+                                        <parameter name="field10" value="`$tmp.network-id`"/>

+                                        <parameter name="field11" value="Saving to EIPAM_IP_POOLS table."/>

+                                    </record>

+                                </block>

+                            </outcome>

+                            <outcome value='N'></outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value=""></outcome>

+                <outcome value='N'></outcome>

+            </switch>

+            <switch test="`$network-model.use-ipv6`">

+                <outcome value='Y'>

+                    <block atomic='true'>

+                        <switch test="`$tmp.create-v6-pool-flag`">

+                            <outcome value='Y'>

+                                <block atomic='true'>

+                                    <switch test="`$eipam-ip-block.level`">

+                                        <outcome value='1'>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_POOLS

+             SET

+             key_name = $tmp.v6-level1-key-name ,

+             key_value = $tmp.level1-key-value ,

+             level = 1 ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             address_family = $network-model.ipv6-ip-version ,

+             parent_pool = $tmp.v6-qip-pool ,

+             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v6pool-row'>

+                                                <outcome value='Other'></outcome>

+                                                <outcome value='Other'></outcome>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                        <outcome value='2'>

+                                            <save

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="INSERT EIPAM_IP_POOLS

+             SET

+             key_name = $tmp.v6-level2-key-name ,

+             key_value = $tmp.level2-key-value ,

+             level = 2 ,

+             plan_name = $network-model.eipam-v6-address-plan ,

+             address_family = $network-model.ipv6-ip-version ,

+             parent_pool = $tmp.level1-key-value ,

+             service_instance_id = $network-topology-operation-input.service-information.service-instance-id ,

+             network_id = $tmp.network-id ; "

+    force='true'

+        pfx='pfx.eipam-v6pool-row'>

+                                                <outcome value='Other'></outcome>

+                                                <outcome value='Other'></outcome>

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='failed to update EIPAM_IP_POOLS .' />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                    </switch>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="network-topology-operation"/>

+                                        <parameter name="field3" value="eipam-create-network-role-pool"/>

+                                        <parameter name="field4" value="`$network-model.eipam-v6-address-plan`"/>

+                                        <parameter name="field5" value="`$tmp.v6-level1-key-name`"/>

+                                        <parameter name="field6" value="`$tmp.level1-key-value`"/>

+                                        <parameter name="field7" value="`$tmp.v6-level2-key-name`"/>

+                                        <parameter name="field8" value="`$tmp.level2-key-value`"/>

+                                        <parameter name="field9" value="`$network-model.network-role`"/>

+                                        <parameter name="field10" value="`$tmp.network-id`"/>

+                                        <parameter name="field11" value="Saving to EIPAM_IP_POOLS table."/>

+                                    </record>

+                                </block>

+                            </outcome>

+                            <outcome value='N'></outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value=""></outcome>

+                <outcome value='N'></outcome>

+            </switch>

+            <return status='success'>

+                <parameter name="error-code" value="200" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-FQPN.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-FQPN.xml
new file mode 100644
index 0000000..b9699d6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-FQPN.xml
@@ -0,0 +1,472 @@
+<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='generate-FQPN' mode='sync'>

+        <block atomic="true">

+            <switch test='`$generate-FQPN-input.plan-name`'>

+                <outcome value=''>

+                    <return status="failure">

+                        <parameter name="ack-final" value="Y" />

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="generate-FQPN-input.plan-name is null" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='eipam-ip-block.plan-name' value='`$generate-FQPN-input.plan-name`' />

+            </set>

+            <set>

+                <parameter name='generate-FQPN-output.' value='' />

+            </set>

+            <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="getPlanTopology">

+                <outcome value='failure'>

+                    <return status="failure">

+                        <parameter name="ack-final" value="Y" />

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="`'An error occured while getting Keyname and Keyvalue for address plan, '+ $eipam-ip-block.planName + ', from EIPAM'`" />

+                    </return>

+                </outcome>

+            </execute>

+            <switch test='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`'>

+                <outcome value=''>

+                    <return status="failure">

+                        <parameter name="ack-final" value="Y" />

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="eipam-ip-block.getPlanTopologyResponse.TopologyDetails is null" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.sdnc-generated-cloud-resources`'>

+                <outcome value='true'>

+                    <call module='GENERIC-RESOURCE-API' rpc='self-serve-generate-FQPN' mode='sync' ></call>

+                </outcome>

+                <outcome value='false'>

+                    <block atomic='true'>

+                        <for index="resp-index" start="0" end="`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">

+                            <switch test='`$eipam-ip-block.plan-name == $eipam-ip-block.getPlanTopologyResponse.PlanName`'>

+                                <outcome value='false'>

+                                    <return status="failure">

+                                        <parameter name="ack-final" value="Y" />

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="error-message" value="`'eipam response plan-name ['+ $eipam-ip-block.getPlanTopologyResponse.PlanName + ' is not the same as input '+$eipam-ip-block.planName`" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                            <set>

+                                <parameter name='pool-index'

+   value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$resp-index].Level - 1`' />

+                            </set>

+                            <set>

+                                <parameter name='tmp.final.key-value' value="" />

+                            </set>

+                            <set>

+                                <parameter name='tmp.getPlanTopologyResponse.key-name' 

+	value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$resp-index].KeyName`' />

+                            </set>

+                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                <parameter name="original_string" value="`$tmp.getPlanTopologyResponse.key-name`" />

+                                <parameter name="regex" value=":" />

+                                <parameter name="ctx_memory_result_key" value="tmp.split.key-name" />

+                            </execute>

+                            <for index="split-index" start="0" end="`$tmp.split.key-name_length`">

+                                <set>

+                                    <parameter name='tmp.eipam.key-name' 

+	value='`$tmp.split.key-name[$split-index]`' />

+                                </set>

+                                <block atomic='true'>

+                                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT key_value_source from ADDRESS_PLAN_POLICIES WHERE key_name = $tmp.eipam.key-name '

+  pfx='db.address-plan-policies'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="Error reading ADDRESS_PLAN_POLICIES table" />

+                                            </return>

+                                        </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="`'No ADDRESS_PLAN_POLICIES entry found for key_name = ' + $eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$key-index].KeyName`" />

+                                            </return>

+                                        </outcome>

+                                    </get-resource>

+                                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from ROUTING_CHARACTERISTIC_MAPPING WHERE network_role = $generate-FQPN-input.network-role '

+  pfx='db.routing-characteristic_mapping[]'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="Error reading ROUTING_CHARACTERISTIC_MAPPING table" />

+                                            </return>

+                                        </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="`'No ROUTING_CHARACTERISTIC_MAPPING entry found for network_role = ' + $generate-FQPN-input.network-role`" />

+                                            </return>

+                                        </outcome>

+                                    </get-resource>

+                                    <set>

+                                        <parameter name='tmp.key-value' value='' />

+                                    </set>

+                                    <switch test='`$db.address-plan-policies.key-value-source`'>

+                                        <outcome value='AddressPlanPolicyDG-Routing_Characteristic'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='tmp.key-value' value='-1' />

+                                                </set>

+                                                <switch test='`$db.routing-characteristic_mapping_length &gt; 1`'>

+                                                    <outcome value='true'>

+                                                        <block>

+                                                            <for index="routing-index" start="0" end="`$db.routing-characteristic_mapping_length`">

+                                                                <switch test='`$db.routing-characteristic_mapping[$routing-index].vrf-name == $generate-FQPN-input.vrf-name`'>

+                                                                    <outcome value='true'>

+                                                                        <block atomic='true'>

+                                                                            <set>

+                                                                                <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[$routing-index].routing-characteristic`' />

+                                                                            </set>

+                                                                            <return status='failure'></return>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </for>

+                                                            <return status='success'></return>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='false'>

+                                                        <set>

+                                                            <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[0].routing-characteristic`' />

+                                                        </set>

+                                                    </outcome>

+                                                </switch>

+                                                <switch test='`$tmp.key-value`'>

+                                                    <outcome value='-1'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="No matching ROUTING_CHARACTERISTIC_MAPPING.vrf-name found" />

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Location_Clli8'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$generate-FQPN-input.location-clli8`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Vrf_Name'>

+                                            <switch test='`$generate-FQPN-input.vrf-name`'>

+                                                <outcome value=''>

+                                                    <set>

+                                                        <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[0].vrf-name`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </outcome>

+                                        <outcome value='cloud_region_id'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$generate-FQPN-input.aic-cloud-region`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Complex_region'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$aai.complex.region`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Network_Name'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-name`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Subnet_Role'>

+                                            <switch test='`$generate-FQPN-input.subnet-role`' >

+                                                <outcome value=''>

+                                                    <set>

+                                                        <parameter name='tmp.key-value' value='STATIC' />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <set>

+                                                        <parameter name='tmp.key-value' value='`$generate-FQPN-input.subnet-role`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Network_Role'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-role`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Network_Id'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-id`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Network_Collection'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-collection`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Zone'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$generate-FQPN-input.zone`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="`'Unknown ADDRESS_PLAN_POLICIES: ' + $db.address-plan-policies.key-value-source`" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                                <switch test='`$split-index == 0`'>

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='tmp.final.key-value' value="`$tmp.key-value`" />

+                                        </set>

+                                    </outcome>

+                                    <outcome value='false'>

+                                        <set>

+                                            <parameter name='tmp.final.key-value' 

+	value="`$tmp.final.key-value + ':' + $tmp.key-value`" />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                            </for>

+                            <set>

+                                <parameter name='generate-FQPN-output.pools[$pool-index].key-name'

+   value='`$tmp.getPlanTopologyResponse.key-name`' />

+                                <parameter name='generate-FQPN-output.pools[$pool-index].key-value'

+	value='`$tmp.final.key-value`' />

+                            </set>

+                        </for>

+                        <set>

+                            <parameter name='generate-FQPN-output.pools_length' 

+	value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`' />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value=''>

+                    <block atomic='true'>

+                        <for index="resp-index" start="0" end="`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`">

+                            <switch test='`$eipam-ip-block.plan-name == $eipam-ip-block.getPlanTopologyResponse.PlanName`'>

+                                <outcome value='false'>

+                                    <return status="failure">

+                                        <parameter name="ack-final" value="Y" />

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="error-message" value="`'eipam response plan-name ['+ $eipam-ip-block.getPlanTopologyResponse.PlanName + ' is not the same as input '+$eipam-ip-block.planName`" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                            <set>

+                                <parameter name='pool-index'

+   value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$resp-index].Level - 1`' />

+                            </set>

+                            <set>

+                                <parameter name='tmp.final.key-value' value="" />

+                            </set>

+                            <set>

+                                <parameter name='tmp.getPlanTopologyResponse.key-name' 

+	value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$resp-index].KeyName`' />

+                            </set>

+                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                <parameter name="original_string" value="`$tmp.getPlanTopologyResponse.key-name`" />

+                                <parameter name="regex" value=":" />

+                                <parameter name="ctx_memory_result_key" value="tmp.split.key-name" />

+                            </execute>

+                            <for index="split-index" start="0" end="`$tmp.split.key-name_length`">

+                                <set>

+                                    <parameter name='tmp.eipam.key-name' 

+	value='`$tmp.split.key-name[$split-index]`' />

+                                </set>

+                                <block atomic='true'>

+                                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT key_value_source from ADDRESS_PLAN_POLICIES WHERE key_name = $tmp.eipam.key-name '

+  pfx='db.address-plan-policies'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="Error reading ADDRESS_PLAN_POLICIES table" />

+                                            </return>

+                                        </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="`'No ADDRESS_PLAN_POLICIES entry found for key_name = ' + $eipam-ip-block.getPlanTopologyResponse.TopologyDetails[$key-index].KeyName`" />

+                                            </return>

+                                        </outcome>

+                                    </get-resource>

+                                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from ROUTING_CHARACTERISTIC_MAPPING WHERE network_role = $generate-FQPN-input.network-role '

+  pfx='db.routing-characteristic_mapping[]'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="Error reading ROUTING_CHARACTERISTIC_MAPPING table" />

+                                            </return>

+                                        </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="`'No ROUTING_CHARACTERISTIC_MAPPING entry found for network_role = ' + $generate-FQPN-input.network-role`" />

+                                            </return>

+                                        </outcome>

+                                    </get-resource>

+                                    <set>

+                                        <parameter name='tmp.key-value' value='' />

+                                    </set>

+                                    <switch test='`$db.address-plan-policies.key-value-source`'>

+                                        <outcome value='AddressPlanPolicyDG-Routing_Characteristic'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='tmp.key-value' value='-1' />

+                                                </set>

+                                                <switch test='`$db.routing-characteristic_mapping_length &gt; 1`'>

+                                                    <outcome value='true'>

+                                                        <block>

+                                                            <for index="routing-index" start="0" end="`$db.routing-characteristic_mapping_length`">

+                                                                <switch test='`$db.routing-characteristic_mapping[$routing-index].vrf-name == $generate-FQPN-input.vrf-name`'>

+                                                                    <outcome value='true'>

+                                                                        <block atomic='true'>

+                                                                            <set>

+                                                                                <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[$routing-index].routing-characteristic`' />

+                                                                            </set>

+                                                                            <return status='failure'></return>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </for>

+                                                            <return status='success'></return>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='false'>

+                                                        <set>

+                                                            <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[0].routing-characteristic`' />

+                                                        </set>

+                                                    </outcome>

+                                                </switch>

+                                                <switch test='`$tmp.key-value`'>

+                                                    <outcome value='-1'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="No matching ROUTING_CHARACTERISTIC_MAPPING.vrf-name found" />

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Location_Clli8'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$generate-FQPN-input.location-clli8`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Vrf_Name'>

+                                            <switch test='`$generate-FQPN-input.vrf-name`'>

+                                                <outcome value=''>

+                                                    <set>

+                                                        <parameter name='tmp.key-value' value='`$db.routing-characteristic_mapping[0].vrf-name`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </outcome>

+                                        <outcome value='cloud_region_id'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$generate-FQPN-input.aic-cloud-region`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Complex_region'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$aai.complex.region`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Network_Name'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-name`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Subnet_Role'>

+                                            <switch test='`$generate-FQPN-input.subnet-role`' >

+                                                <outcome value=''>

+                                                    <set>

+                                                        <parameter name='tmp.key-value' value='STATIC' />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <set>

+                                                        <parameter name='tmp.key-value' value='`$generate-FQPN-input.subnet-role`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Network_Role'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-role`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Network_Id'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-id`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Network_Collection'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$generate-FQPN-input.network-collection`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='AddressPlanPolicyDG-Zone'>

+                                            <set>

+                                                <parameter name='tmp.key-value' value='`$generate-FQPN-input.zone`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="`'Unknown ADDRESS_PLAN_POLICIES: ' + $db.address-plan-policies.key-value-source`" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                                <switch test='`$split-index == 0`'>

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='tmp.final.key-value' value="`$tmp.key-value`" />

+                                        </set>

+                                    </outcome>

+                                    <outcome value='false'>

+                                        <set>

+                                            <parameter name='tmp.final.key-value' 

+	value="`$tmp.final.key-value + ':' + $tmp.key-value`" />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                            </for>

+                            <set>

+                                <parameter name='generate-FQPN-output.pools[$pool-index].key-name'

+   value='`$tmp.getPlanTopologyResponse.key-name`' />

+                                <parameter name='generate-FQPN-output.pools[$pool-index].key-value'

+	value='`$tmp.final.key-value`' />

+                            </set>

+                        </for>

+                        <set>

+                            <parameter name='generate-FQPN-output.pools_length' 

+	value='`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length`' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-allottedresource-id.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-allottedresource-id.xml
new file mode 100644
index 0000000..b6792ad
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-allottedresource-id.xml
@@ -0,0 +1,68 @@
+<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="generate-allottedresource-id" mode="sync">
+        <block atomic="true">
+            <set>
+                <parameter name="tmp.local-variables.generate-allottedresource-id." value="" />
+                <parameter name="tmp.return.generate-allottedresource-id." value="" />
+            </set>
+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+                <parameter name="ctx-destination" value="tmp.return.generate-allottedresource-id.id" />
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <!-- Used to work around execute node bug -->
+                        <parameter name="execute_failure" value="false" />
+                        <!-- return parameters -->
+                        <parameter name="error-message.generate-l3network-network-id" value="An error occured while generating a UUID for L3-NETWORK." />
+                    </return>
+                </outcome>
+            </execute>
+            <for atomic="true" index="n" start="0" end="1" >
+                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+              resource="allotted-resource"
+              key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+					service-subscription.service-type = $cto-api.service-type AND
+					service-instance.service-instance-id = $cto-api.port-mirror-configuration-instance-id AND
+					allotted-resource.id = $tmp.return.generate-allottedresource-id.id"
+              local-only="false"
+              pfx="tmp.local-variables.generate-allottedresource-id.ALLOTTEDRESOURCE" >
+                    <outcome value='success'>
+                        <block atomic='true'>
+                            <set>
+                                <parameter name="tmp.local-variables.generate-allottedresource-id.is-unique" value="0" />
+                            </set>
+                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+                                <parameter name="ctx-destination" value="tmp.return.generate-allottedresource-id.id" />
+                                <outcome value='failure'>
+                                    <return status="failure">
+                                        <!-- return parameters -->
+                                        <parameter name="error-message.generate-allottedresource-id" value="An error occured while generating a UUID for ALLOTTED-RESOURCE." />
+                                    </return>
+                                </outcome>
+                            </execute>
+                        </block>
+                    </outcome>
+                    <outcome value='not-found'>
+                        <block></block>
+                    </outcome>
+                    <outcome value='failure'>
+                        <return status="failure">
+                            <!-- return parameters -->
+                            <parameter name="error-message.generate-allottedresource-id" value="`'An error occured while checking if a generated allotted-resource-id was unique. allotted-resource-id = ' + $tmp.local-variables.generate-allottedresource-id.id`" />
+                        </return>
+                    </outcome>
+                    <outcome value="Other">
+                        <return status="failure">
+                            <!-- return parameters -->
+                            <parameter name="error-message.generate-allottedresource-id" value="`'An error occured while checking if a generated allotted-resource-id was unique. allotted-resource-id = ' + $tmp.local-variables.generate-allottedresource-id.id`" />
+                        </return>
+                    </outcome>
+                </get-resource>
+            </for>
+            <set>
+                <parameter name="tmp.local-variables.generate-allottedresource-id." value="" />
+            </set>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-host-routes-host-route-id.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-host-routes-host-route-id.xml
new file mode 100755
index 0000000..928e3a8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-host-routes-host-route-id.xml
@@ -0,0 +1,67 @@
+<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="generate-host-routes-host-route-id" mode="sync">

+        <block atomic="true">

+            <set>

+                <parameter name="tmp.local-variables.generate-host-routes-host-route-id." value="" />

+                <parameter name="tmp.return.generate-host-routes-host-route-id." value="" />

+            </set>

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                <parameter name="ctx-destination" value="tmp.return.generate-host-routes-host-route-id.uuid" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <!-- Used to work around execute node bug -->

+                        <parameter name="execute_failure" value="false" />

+                        <!-- return parameters -->

+                        <parameter name="error-message.generate-l3network-network-id" value="An error occured while generating a UUID for L3-NETWORK." />

+                    </return>

+                </outcome>

+            </execute>

+            <for atomic="true" index="s" start="0" end="1" >

+                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="subnet"

+		key="l3-network.network-id = $tmp.local.network-id 

+			AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid 

+			AND host-route.host-route-id = $tmp.return.generate-host-routes-host-route-id.uuid" 

+		local-only="false"

+		pfx="tmp.local-variables.generate-host-routes-host-route-id.HOST_ROUTE" >

+                    <outcome value='success'>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name="tmp.local-variables.generate-host-routes-host-route-id.is-unique" value="0" />

+                            </set>

+                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                                <parameter name="ctx-destination" value="tmp.return.generate-host-routes-host-route-id.uuid" />

+                                <outcome value='failure'>

+                                    <return status="failure">

+                                        <!-- return parameters -->

+                                        <parameter name="error-message.generate-host-routes-host-route-id" value="An error occured while generating a UUID for HOST_ROUTE." />

+                                    </return>

+                                </outcome>

+                            </execute>

+                        </block>

+                    </outcome>

+                    <outcome value='not-found'>

+                        <block></block>

+                    </outcome>

+                    <outcome value='failure'>

+                        <return status="failure">

+                            <!-- return parameters -->

+                            <parameter name="error-message.generate-host-routes-host-route-id" value="`'An error occured while checking if a generated host-routes-host-route-id was unique. host-route-id = ' + $tmp.local-variables.generate-host-routes-host-route-id.uuid`" />

+                        </return>

+                    </outcome>

+                    <outcome value="Other">

+                        <return status="failure">

+                            <!-- return parameters -->

+                            <parameter name="error-message.generate-host-routes-host-route-id" value="`'An error occured while checking if a generated host-routes-host-route-id was unique. host-route-id = ' + $tmp.local-variables.generate-host-routes-host-route-id.uuid`" />

+                        </return>

+                    </outcome>

+                </get-resource>

+            </for>

+            <set>

+                <parameter name="tmp.local-variables.generate-host-routes-host-route-id." value="" />

+            </set>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-l3network-network-id.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-l3network-network-id.xml
new file mode 100755
index 0000000..e44c148
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-l3network-network-id.xml
@@ -0,0 +1,65 @@
+<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="generate-l3network-network-id" mode="sync">
+        <block atomic="true">
+            <set>
+                <parameter name="tmp.local-variables.generate-l3network-network-id." value="" />
+                <parameter name="tmp.return.generate-l3network-network-id." value="" />
+            </set>
+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+                <parameter name="ctx-destination" value="tmp.return.generate-l3network-network-id.uuid" />
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <!-- Used to work around execute node bug -->
+                        <parameter name="execute_failure" value="false" />
+                        <!-- return parameters -->
+                        <parameter name="error-message.generate-l3network-network-id" value="An error occured while generating a UUID for L3-NETWORK." />
+                    </return>
+                </outcome>
+            </execute>
+            <for atomic="true" index="n" start="0" end="1" >
+                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+              resource="l3-network"
+              key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"
+              local-only="false"
+              pfx="tmp.local-variables.generate-l3network-network-id.L3NETWORK" >
+                    <outcome value='success'>
+                        <block atomic='true'>
+                            <set>
+                                <parameter name="tmp.local-variables.generate-l3network-network-id.is-unique" value="0" />
+                            </set>
+                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+                                <parameter name="ctx-destination" value="tmp.return.generate-l3network-network-id.uuid" />
+                                <outcome value='failure'>
+                                    <return status="failure">
+                                        <!-- return parameters -->
+                                        <parameter name="error-message.generate-l3network-network-id" value="An error occured while generating a UUID for L3-NETWORK." />
+                                    </return>
+                                </outcome>
+                            </execute>
+                        </block>
+                    </outcome>
+                    <outcome value='not-found'>
+                        <block></block>
+                    </outcome>
+                    <outcome value='failure'>
+                        <return status="failure">
+                            <!-- return parameters -->
+                            <parameter name="error-message.generate-l3network-network-id" value="`'An error occured while checking if a generated l3network-network-id was unique. network-id = ' + $tmp.local-variables.generate-l3network-network-id.uuid`" />
+                        </return>
+                    </outcome>
+                    <outcome value="Other">
+                        <return status="failure">
+                            <!-- return parameters -->
+                            <parameter name="error-message.generate-l3network-network-id" value="`'An error occured while checking if a generated l3network-network-id was unique. network-id = ' + $tmp.local-variables.generate-l3network-network-id.uuid`" />
+                        </return>
+                    </outcome>
+                </get-resource>
+            </for>
+            <set>
+                <parameter name="tmp.local-variables.generate-l3network-network-id." value="" />
+            </set>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-panorama-name.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-panorama-name.xml
new file mode 100755
index 0000000..b31a9ff
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-panorama-name.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='generate-panorama-name' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.trust-sz' value='$TenantOAMNetworkRole_$LandingNetworkRole_T' />
+                <parameter name='tmp.untrust-sz' value='$TenantOAMNetworkRole_$LandingNetworkRole_U' />
+            </set>
+            <set>
+                <parameter name='original-name' value='`$security-zone-topology-operation-input.security-zone-request-input.untrusted-network-role`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+                <parameter name="original_string" value="`$original-name`" />
+                <parameter name="regex" value="\."/>
+                <parameter name="limit" value="2" />
+                <parameter name="ctx_memory_result_key" value="splits" />
+            </execute>
+            <switch test='`$splits_length`'>
+                <outcome value='1'>
+                    <set>
+                        <parameter name='new-name' value='`$splits[0]`' />
+                    </set>
+                </outcome>
+                <outcome value='2'>
+                    <set>
+                        <parameter name='new-name' value='`$splits[1]`' />
+                    </set>
+                </outcome>
+                <outcome value='Other'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value='Unexpected network role used for panorama naming' />
+                    </return>
+                </outcome>
+            </switch>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='getLength' >
+                <parameter name="source" value="`$new-name`" />
+                <parameter name="outputPath" value="tmp.strlen"/>
+            </execute>
+            <switch test='`$tmp.strlen > 14`'>
+                <outcome value='true'>
+                    <block atomic="true">
+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring' >
+                            <parameter name="string" value="`$new-name`" />
+                            <parameter name="result" value="new-name"/>
+                            <parameter name="begin-index" value="0" />
+                            <parameter name="end-index" value="14" />
+                        </execute>
+                    </block>
+                </outcome>
+                <outcome value='false'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='new-name' value='`$new-name`' />
+                        </set>
+                    </block>
+                </outcome>
+            </switch>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$tmp.trust-sz`"/>
+                <parameter name="outputPath" value="tmp.trust-sz"/>
+                <parameter name="target" value="$TenantOAMNetworkRole"/>
+                <parameter name="replacement" value="`$new-name`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$tmp.untrust-sz`"/>
+                <parameter name="outputPath" value="tmp.untrust-sz"/>
+                <parameter name="target" value="$TenantOAMNetworkRole"/>
+                <parameter name="replacement" value="`$new-name`"/>
+            </execute>
+            <set>
+                <parameter name='original-name' value='`$security-zone-topology-operation-input.security-zone-request-input.trusted-network-role`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+                <parameter name="original_string" value="`$original-name`" />
+                <parameter name="regex" value="\."/>
+                <parameter name="limit" value="2" />
+                <parameter name="ctx_memory_result_key" value="splits" />
+            </execute>
+            <switch test='`$splits_length`'>
+                <outcome value='1'>
+                    <set>
+                        <parameter name='new-name' value='`$splits[0]`' />
+                    </set>
+                </outcome>
+                <outcome value='2'>
+                    <set>
+                        <parameter name='new-name' value='`$splits[1]`' />
+                    </set>
+                </outcome>
+                <outcome value='Other'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value='Unexpected network role used for panorama naming' />
+                    </return>
+                </outcome>
+            </switch>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='getLength' >
+                <parameter name="source" value="`$new-name`" />
+                <parameter name="outputPath" value="tmp.strlen"/>
+            </execute>
+            <switch test='`$tmp.strlen > 14`'>
+                <outcome value='true'>
+                    <block atomic="true">
+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring' >
+                            <parameter name="string" value="`$new-name`" />
+                            <parameter name="result" value="new-name"/>
+                            <parameter name="begin-index" value="0" />
+                            <parameter name="end-index" value="14" />
+                        </execute>
+                    </block>
+                </outcome>
+                <outcome value='false'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='new-name' value='`$new-name`' />
+                        </set>
+                    </block>
+                </outcome>
+            </switch>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$tmp.trust-sz`"/>
+                <parameter name="outputPath" value="tmp.trust-sz"/>
+                <parameter name="target" value="$LandingNetworkRole"/>
+                <parameter name="replacement" value="`$new-name`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$tmp.untrust-sz`"/>
+                <parameter name="outputPath" value="tmp.untrust-sz"/>
+                <parameter name="target" value="$LandingNetworkRole"/>
+                <parameter name="replacement" value="`$new-name`"/>
+            </execute>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-subnets-subnet-id.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-subnets-subnet-id.xml
new file mode 100755
index 0000000..14ba7fe
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-subnets-subnet-id.xml
@@ -0,0 +1,66 @@
+<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="generate-subnets-subnet-id" mode="sync">

+        <block atomic="true">

+            <set>

+                <parameter name="tmp.local-variables.generate-subnets-subnet-id." value="" />

+                <parameter name="tmp.return.generate-subnets-subnet-id." value="" />

+            </set>

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                <parameter name="ctx-destination" value="tmp.return.generate-subnets-subnet-id.uuid" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <!-- Used to work around execute node bug -->

+                        <parameter name="execute_failure" value="false" />

+                        <!-- return parameters -->

+                        <parameter name="error-message.generate-l3network-network-id" value="An error occured while generating a UUID for L3-NETWORK." />

+                    </return>

+                </outcome>

+            </execute>

+            <for atomic="true" index="s" start="0" end="1" >

+                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="subnet"

+		key="l3-network.network-id = $tmp.local.network-id 

+			AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid"

+		local-only="false"

+		pfx="tmp.local-variables.generate-subnets-subnet-id.SUBNETS" >

+                    <outcome value='success'>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name="tmp.local-variables.generate-subnets-subnet-id.is-unique" value="0" />

+                            </set>

+                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                                <parameter name="ctx-destination" value="tmp.return.generate-subnets-subnet-id.uuid" />

+                                <outcome value='failure'>

+                                    <return status="failure">

+                                        <!-- return parameters -->

+                                        <parameter name="error-message.generate-subnets-subnet-id" value="An error occured while generating a UUID for SUBNETS." />

+                                    </return>

+                                </outcome>

+                            </execute>

+                        </block>

+                    </outcome>

+                    <outcome value='not-found'>

+                        <block></block>

+                    </outcome>

+                    <outcome value='failure'>

+                        <return status="failure">

+                            <!-- return parameters -->

+                            <parameter name="error-message.generate-subnets-subnet-id" value="`'An error occured while checking if a generated subnets-subnet-id was unique. subnet-id = ' + $tmp.local-variables.generate-subnets-subnet-id.uuid`" />

+                        </return>

+                    </outcome>

+                    <outcome value="Other">

+                        <return status="failure">

+                            <!-- return parameters -->

+                            <parameter name="error-message.generate-subnets-subnet-id" value="`'An error occured while checking if a generated subnets-subnet-id was unique. subnet-id = ' + $tmp.local-variables.generate-subnets-subnet-id.uuid`" />

+                        </return>

+                    </outcome>

+                </get-resource>

+            </for>

+            <set>

+                <parameter name="tmp.local-variables.generate-subnets-subnet-id." value="" />

+            </set>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-unique-name.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-unique-name.xml
new file mode 100755
index 0000000..7393842
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-unique-name.xml
@@ -0,0 +1,591 @@
+<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='generate-unique-name' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='generate-unique-name-output.error-message' value='' />

+                <parameter name='generate-unique-name-output.generated-name' value='' />

+            </set>

+            <switch test='`$generate-unique-name-input.supplied-name`'>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <switch test='`$generate-unique-name-input.name-table-type`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.name-table-type not supplied' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='tmp.gun.sql' value="`'SELECT * from GENERIC_RESOURCE_NAME WHERE type = $generate-unique-name-input.name-table-type'

++ ' AND name = $generate-unique-name-input.supplied-name'`" />

+                        </set>

+                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.gun.sql`" pfx='tmp.gun.namedb'>

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='generate-unique-name-output.error-message' value="`'Error reading the ' + $generate-unique-name-input.name-table-index + ' table'`" />

+                                </return>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.gun.sql' value="`'insert into GENERIC_RESOURCE_NAME values ( '

++ ' $generate-unique-name-input.name-table-type , $generate-unique-name-input.supplied-name , null , null, $generate-unique-name-input.service-instance-id )'`" />

+                                    </set>

+                                    <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.gun.sql`" pfx='pfx'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name="generate-unique-name-output.error-message" value="Failed insert into GENERIC_RESOURCE_NAME table" />

+                                            </return>

+                                        </outcome>

+                                    </save>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='generate-unique-name-output.error-message' value="`'The name ' + $generate-unique-name-input.supplied-name + ' has already been used'`" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+                <outcome value=''>

+                    <block atomic="true">

+                        <switch test='`$generate-unique-name-input.index-table-name`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.index-table-name not supplied' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$generate-unique-name-input.index-table-prefix-column`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.index-table-prefix-column not supplied' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$generate-unique-name-input.name-table-type`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.name-table-type not supplied' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$generate-unique-name-input.prefix`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.prefix not supplied' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$generate-unique-name-input.index-length`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='tmp.gun.list-end' value='100000' />

+                                </set>

+                            </outcome>

+                            <outcome value='0'>

+                                <set>

+                                    <parameter name='tmp.gun.list-end' value='0' />

+                                </set>

+                            </outcome>

+                            <outcome value='1'>

+                                <set>

+                                    <parameter name='tmp.gun.list-end' value='10' />

+                                </set>

+                            </outcome>

+                            <outcome value='2'>

+                                <set>

+                                    <parameter name='tmp.gun.list-end' value='100' />

+                                </set>

+                            </outcome>

+                            <outcome value='3'>

+                                <set>

+                                    <parameter name='tmp.gun.list-end' value='1000' />

+                                </set>

+                            </outcome>

+                            <outcome value='4'>

+                                <set>

+                                    <parameter name='tmp.gun.list-end' value='10000' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.prefix not supplied' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='tmp.gun.noindex-flag' value='false' />

+                        </set>

+                        <set>

+                            <parameter name='tmp.gun.sql' value="`'SELECT * from ' + $generate-unique-name-input.index-table-name

++ ' WHERE ' + $generate-unique-name-input.index-table-prefix-column + ' = '

++ '$generate-unique-name-input.prefix'`" />

+                        </set>

+                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.gun.sql`" pfx='tmp.gun.prefixdb'>

+                            <outcome value='success'>

+                                <block>

+                                    <set>

+                                        <parameter name='tmp.gun.index-exists' value='true' />

+                                    </set>

+                                    <switch test='`$generate-unique-name-input.index-length`'>

+                                        <outcome value='Other'>

+                                            <set>

+                                                <parameter name='tmp.gun.index-number' value='`$tmp.gun.prefixdb.index-number + 1`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='0'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='tmp.gun.index-number' value='0' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.gun.noindex-flag' value='true' />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block>

+                                    <set>

+                                        <parameter name='tmp.gun.index-exists' value='false' />

+                                    </set>

+                                    <switch test='`$generate-unique-name-input.index-length`'>

+                                        <outcome value='0'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='tmp.gun.index-number' value='0' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.gun.noindex-flag' value='true' />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <set>

+                                                <parameter name='tmp.gun.index-number' value='1' />

+                                            </set>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name="generate-unique-name-output.error-message" value="`'Error reading the ' + $generate-unique-name-input.index-table-name + ' table'`" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                        <set>

+                            <parameter name='tmp.gun.found-flag' value='false' />

+                        </set>

+                        <block>

+                            <for index='tmp.gun.idx' start='`$tmp.gun.index-number`' end='`$tmp.gun.list-end`' >

+                                <block atomic="true">

+                                    <switch test='`$generate-unique-name-input.index-length`'>

+                                        <outcome value=''>

+                                            <set>

+                                                <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='1'>

+                                            <set>

+                                                <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='2'>

+                                            <switch test='`$tmp.gun.idx &lt; 10`'>

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='tmp.gun.index-string' value="`'' + '0' + $tmp.gun.idx`" />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='false'>

+                                                    <set>

+                                                        <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </outcome>

+                                        <outcome value='3'>

+                                            <switch test='`$tmp.gun.idx &lt; 10`'>

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='tmp.gun.index-string' value="`'' + '00' + $tmp.gun.idx`" />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='false'>

+                                                    <switch test='`$tmp.gun.idx &lt; 100`'>

+                                                        <outcome value='true'>

+                                                            <set>

+                                                                <parameter name='tmp.gun.index-string' value="`'' + '0' + $tmp.gun.idx`" />

+                                                            </set>

+                                                        </outcome>

+                                                        <outcome value='false'>

+                                                            <set>

+                                                                <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />

+                                                            </set>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                            </switch>

+                                        </outcome>

+                                        <outcome value='4'>

+                                            <switch test='`$tmp.gun.idx &lt; 10`'>

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='tmp.gun.index-string' value="`'' + '000' + $tmp.gun.idx`" />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='false'>

+                                                    <switch test='`$tmp.gun.idx &lt; 100`'>

+                                                        <outcome value='true'>

+                                                            <set>

+                                                                <parameter name='tmp.gun.index-string' value="`'' + '00' + $tmp.gun.idx`" />

+                                                            </set>

+                                                        </outcome>

+                                                        <outcome value='false'>

+                                                            <switch test='`$tmp.gun.idx &lt; 1000`'>

+                                                                <outcome value='true'>

+                                                                    <set>

+                                                                        <parameter name='tmp.gun.index-string' value="`'' + '0' + $tmp.gun.idx`" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='false'>

+                                                                    <set>

+                                                                        <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                            </switch>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='tmp.gun.generated-name' value='`$generate-unique-name-input.prefix + $tmp.gun.index-string`' />

+                                    </set>

+                                    <set>

+                                        <parameter name='tmp.gun.sql' value="`'SELECT * from GENERIC_RESOURCE_NAME WHERE type = $generate-unique-name-input.name-table-type'

++ ' AND name = $tmp.gun.generated-name'`" />

+                                    </set>

+                                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.gun.sql`" pfx='tmp.gun.namedb'>

+                                        <outcome value='failure'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='generate-unique-name-output.error-message' value="`'Error reading the GENERIC_RESOURCE_NAME table'`" />

+                                                </set>

+                                                <return status='failure'></return>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='not-found'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='tmp.gun.found-flag' value='true' />

+                                                </set>

+                                                <return status='failure'></return>

+                                            </block>

+                                        </outcome>

+                                    </get-resource>

+                                </block>

+                            </for>

+                            <switch test='`$tmp.gun.noindex-flag`'>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.gun.index-string' value='0' />

+                                        </set>

+                                        <set>

+                                            <parameter name='tmp.gun.generated-name' value='`$generate-unique-name-input.prefix`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='tmp.gun.sql' value="`'SELECT * from GENERIC_RESOURCE_NAME WHERE type = $generate-unique-name-input.name-table-type'

++ ' AND name = $tmp.gun.generated-name'`" />

+                                        </set>

+                                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.gun.sql`" pfx='tmp.gun.namedb'>

+                                            <outcome value='failure'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name='generate-unique-name-output.error-message' value="`'Error reading the GENERIC_RESOURCE_NAME table'`" />

+                                                    </set>

+                                                    <return status='failure'></return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name='tmp.gun.found-flag' value='true' />

+                                                    </set>

+                                                    <return status='failure'></return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name='tmp.gun.found-flag' value='true' />

+                                                    </set>

+                                                    <return status='failure'></return>

+                                                </block>

+                                            </outcome>

+                                        </get-resource>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <return status='success'></return>

+                        </block>

+                        <switch test='`$generate-unique-name-output.error-message`'>

+                            <outcome value=''>

+                                <block></block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <return status='failure'></return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$tmp.gun.found-flag`'>

+                            <outcome value='true'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='generate-unique-name-output.generated-name' value='`$tmp.gun.generated-name`' />

+                                    </set>

+                                    <switch test='`$tmp.gun.index-exists`'>

+                                        <outcome value='true'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='tmp.gun.sql' value="`'update ' + $generate-unique-name-input.index-table-name

++ ' set index_number = ' + $tmp.gun.index-string + ' where '

++ $generate-unique-name-input.index-table-prefix-column

++ ' = $generate-unique-name-input.prefix'`" />

+                                                </set>

+                                                <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.gun.sql`" pfx='pfx'>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name="generate-unique-name-output.error-message" value="`'Failed to update ' + $generate-unique-name-input.index-table-name + ' table'`" />

+                                                        </return>

+                                                    </outcome>

+                                                </save>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='false'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='tmp.gun.sql' value="`'insert into ' + $generate-unique-name-input.index-table-name

++ '(' + $generate-unique-name-input.index-table-prefix-column + ', index_number) values ('

++ ' $generate-unique-name-input.prefix , ' + $tmp.gun.index-string + ')'`" />

+                                                </set>

+                                                <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.gun.sql`" pfx='pfx'>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name="generate-unique-name-output.error-message" value="`'Failed to insert record into ' + $generate-unique-name-input.index-table-name + ' table'`" />

+                                                        </return>

+                                                    </outcome>

+                                                </save>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='tmp.gun.sql' 

+	value="`'insert into GENERIC_RESOURCE_NAME values ( $generate-unique-name-input.name-table-type , $tmp.gun.generated-name , $generate-unique-name-input.prefix , ' + $tmp.gun.index-string + ' , $tmp.gun.transient )'`" />

+                                    </set>

+                                    <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.gun.sql`" pfx='pfx'>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name="generate-unique-name-output.error-message" value="Failed insert into GENERIC_RESOURCE_NAME table" />

+                                            </return>

+                                        </outcome>

+                                    </save>

+                                    <return status='success'></return>

+                                </block>

+                            </outcome>

+                            <outcome value='false'>

+                                <block atomic="true">

+                                    <switch test='`$tmp.gun.noindex-flag`'>

+                                        <outcome value='true'>

+                                            <return status='failure'>

+                                                <parameter name="generate-unique-name-output.error-message" value="naming exhausted for input with index-length = 0" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$generate-unique-name-input.index-length`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name="generate-unique-name-output.error-message" value="We have exhausted the naming index count" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <block>

+                                        <for index='tmp.gun.idx' start='1' end='`$tmp.gun.index-number`' >

+                                            <block atomic="true">

+                                                <switch test='`$generate-unique-name-input.index-length`'>

+                                                    <outcome value=''>

+                                                        <set>

+                                                            <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='1'>

+                                                        <set>

+                                                            <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='2'>

+                                                        <switch test='`$tmp.gun.idx &lt; 10`'>

+                                                            <outcome value='true'>

+                                                                <set>

+                                                                    <parameter name='tmp.gun.index-string' value="`'' + '0' + $tmp.gun.idx`" />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='false'>

+                                                                <set>

+                                                                    <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />

+                                                                </set>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                    <outcome value='3'>

+                                                        <switch test='`$tmp.gun.idx &lt; 10`'>

+                                                            <outcome value='true'>

+                                                                <set>

+                                                                    <parameter name='tmp.gun.index-string' value="`'' + '00' + $tmp.gun.idx`" />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='false'>

+                                                                <switch test='`$tmp.gun.idx &lt; 100`'>

+                                                                    <outcome value='true'>

+                                                                        <set>

+                                                                            <parameter name='tmp.gun.index-string' value="`'' + '0' + $tmp.gun.idx`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='false'>

+                                                                        <set>

+                                                                            <parameter name='tmp.gun.index-string' value='`$tmp.gun.idx`' />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                </switch>

+                                                <set>

+                                                    <parameter name='tmp.gun.generated-name' value='`$generate-unique-name-input.prefix + $tmp.gun.index-string`' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.gun.namedb.name' value='' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.gun.sql' value="`'SELECT * from GENERIC_RESOURCE_NAME WHERE type = $generate-unique-name-input.name-table-type'

++ ' AND name = $tmp.gun.generated-name'`" />

+                                                </set>

+                                                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.gun.sql`" pfx='tmp.gun.namedb'>

+                                                    <outcome value='failure'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='generate-unique-name-output.error-message' value="Error reading the GENERIC_RESOURCE_NAME table" />

+                                                            </set>

+                                                            <return status='failure'></return>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.gun.found-flag' value='true' />

+                                                            </set>

+                                                            <return status='failure'></return>

+                                                        </block>

+                                                    </outcome>

+                                                </get-resource>

+                                            </block>

+                                        </for>

+                                        <return status='success'></return>

+                                    </block>

+                                    <switch test='`$generate-unique-name-output.error-message`'>

+                                        <outcome value=''>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <return status='failure'></return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$tmp.gun.found-flag`'>

+                                        <outcome value='true'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='generate-unique-name-output.generated-name' value='`$tmp.gun.generated-name`' />

+                                                </set>

+                                                <switch test='`$tmp.gun.index-exists`'>

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.gun.sql' value="`'update ' + $generate-unique-name-input.index-table-name

++ ' set index_number = ' + $tmp.gun.index-string + ' where '

++ $generate-unique-name-input.index-table-prefix-column

++ ' = $generate-unique-name-input.prefix'`" />

+                                                            </set>

+                                                            <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.gun.sql`" pfx='pfx'>

+                                                                <outcome value='failure'>

+                                                                    <return status='failure'>

+                                                                        <parameter name="generate-unique-name-output.error-message" value="`'Failed to update ' + $generate-unique-name-input.index-table-name + ' table'`" />

+                                                                    </return>

+                                                                </outcome>

+                                                            </save>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='false'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.gun.sql' value="`'insert into ' + $generate-unique-name-input.index-table-name

++ '(' + $generate-unique-name-input.index-table-prefix-column + ', index_number) values ('

++ ' $generate-unique-name-input.prefix , ' + $tmp.gun.index-string + ')'`" />

+                                                            </set>

+                                                            <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.gun.sql`" pfx='pfx'>

+                                                                <outcome value='failure'>

+                                                                    <return status='failure'>

+                                                                        <parameter name="generate-unique-name-output.error-message" value="`'Failed to insert record into ' + $generate-unique-name-input.index-table-name + ' table'`" />

+                                                                    </return>

+                                                                </outcome>

+                                                            </save>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                                <set>

+                                                    <parameter name='tmp.gun.sql' 

+	value="`'insert into GENERIC_RESOURCE_NAME values ( $generate-unique-name-input.name-table-type , $tmp.gun.generated-name , $generate-unique-name-input.prefix , ' + $tmp.gun.index-string + ' , $tmp.gun.transient )'`" />

+                                                </set>

+                                                <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.gun.sql`" pfx='pfx'>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name="generate-unique-name-output.error-message" value="Failed insert into GENERIC_RESOURCE_NAME table" />

+                                                        </return>

+                                                    </outcome>

+                                                </save>

+                                                <return status='success'></return>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <return status='failure'>

+                                        <parameter name="generate-unique-name-output.error-message" value="We have exhausted the naming index count" />

+                                    </return>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-vpn-binding-id.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-vpn-binding-id.xml
new file mode 100755
index 0000000..1a981fa
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generate-vpn-binding-id.xml
@@ -0,0 +1,65 @@
+<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="generate-vpn-binding-id" mode="sync">

+        <block atomic="true">

+            <set>

+                <parameter name="tmp.local-variables.generate-vpn-binding-id." value="" />

+                <parameter name="tmp.return.generate-vpn-binding-id." value="" />

+            </set>

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                <parameter name="ctx-destination" value="tmp.return.generate-vpn-binding-id.uuid" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <!-- Used to work around execute node bug -->

+                        <parameter name="execute_failure" value="false" />

+                        <!-- return parameters -->

+                        <parameter name="error-message.generate-vpn-binding-id" value="An error occured while generating a UUID for VPN-BINDING." />

+                    </return>

+                </outcome>

+            </execute>

+            <for atomic="true" index="n" start="0" end="1" >

+                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+              resource="vpn-binding"

+              key="vpn-binding.vpn-id = $tmp.return.generate-vpn-binding-id.uuid"

+              local-only="false"

+              pfx="tmp.local-variables.generate-vpn-binding-id.VPNBINDING" >

+                    <outcome value='success'>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name="tmp.local-variables.generate-vpn-binding-id.is-unique" value="0" />

+                            </set>

+                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                                <parameter name="ctx-destination" value="tmp.return.generate-vpn-binding-id.uuid" />

+                                <outcome value='failure'>

+                                    <return status="failure">

+                                        <!-- return parameters -->

+                                        <parameter name="error-message.generate-vpn-binding-id" value="An error occured while generating a UUID for VPN-BINDING." />

+                                    </return>

+                                </outcome>

+                            </execute>

+                        </block>

+                    </outcome>

+                    <outcome value='not-found'>

+                        <block></block>

+                    </outcome>

+                    <outcome value='failure'>

+                        <return status="failure">

+                            <!-- return parameters -->

+                            <parameter name="error-message.generate-vpn-binding-id" value="`'An error occured while checking if a generated vpn-binding-id was unique. vpn-id = ' + $tmp.local-variables.generate-vpn-binding-id.uuid`" />

+                        </return>

+                    </outcome>

+                    <outcome value="Other">

+                        <return status="failure">

+                            <!-- return parameters -->

+                            <parameter name="error-message.generate-vpn-binding-id" value="`'An error occured while checking if a generated vpn-binding-id was unique. vpn-id = ' + $tmp.local-variables.generate-vpn-binding-id.uuid`" />

+                        </return>

+                    </outcome>

+                </get-resource>

+            </for>

+            <set>

+                <parameter name="tmp.local-variables.generate-vpn-binding-id." value="" />

+            </set>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification-activate.xml
new file mode 100755
index 0000000..3ee1bbc
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification-activate.xml
@@ -0,0 +1,108 @@
+<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='generic-configuration-notification-activate' mode='sync'>

+        <block atomic="true">

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.gc-configuration`"/>

+                <parameter name="outputPath" value="tmp.gc-url"/>

+                <parameter name="target" value="{configuration-id}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.configuration-information.configuration-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-gc" />

+                <outcome value='failure'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="Y" />

+                            <parameter name="input.response-code"

+  value="500" />

+                            <parameter name="input.response-message"

+  value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.order-status'

+  value='Active' />

+                <parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.last-action'

+  value='CreateGenericConfigurationInstance' />

+                <parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.last-rpc-action'

+  value='activate' />

+            </set>

+            <set>

+                <parameter name='gc.' value='mdsal-gc.gc-configuration[0].' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.genconfig.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-gc" />

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value='Error updating md-sal for gc-configuration' />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value='Error updating md-sal for gc-configuration' />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                <parameter name="input.ack-final-indicator"

+  value="`$generic-configuration-notification-input.ack-final-indicator`" />

+                <parameter name="input.response-code"

+  value="`$generic-configuration-notification-input.response-code`" />

+                <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+            </configure>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/bgb-gcnotify.log' />

+            </execute>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="success" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification-assign.xml
new file mode 100755
index 0000000..5db9776
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification-assign.xml
@@ -0,0 +1,485 @@
+<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='generic-configuration-notification-assign' mode='sync'>

+        <block atomic="true">

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.gc-configuration`"/>

+                <parameter name="outputPath" value="tmp.gc-url"/>

+                <parameter name="target" value="{configuration-id}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.configuration-information.configuration-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-gc" />

+                <outcome value='failure'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="Y" />

+                            <parameter name="input.response-code"

+  value="500" />

+                            <parameter name="input.response-message"

+  value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <switch test='`$generic-configuration-notification-input.response-code`'>

+                <outcome value='Other'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="`$generic-configuration-notification-input.ack-final-indicator`" />

+                            <parameter name="input.response-code"

+  value="`$generic-configuration-notification-input.response-code`" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value="`$generic-configuration-notification-input.response-message`" />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='200'>

+                    <block></block>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.provided-configurations.provided-configuration_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='service-data.provided-configurations.provided-configuration_length' value='0' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='found-provided-configuration' value='false' />

+            </set>

+            <set>

+                <parameter name='pc-index' value='0' />

+            </set>

+            <for silentFailure='true' index='pc-index' start='0' end='`$service-data.provided-configurations.provided-configuration_length`' >

+                <switch test='`$service-data.provided-configurations.provided-configuration[$pc-index].configuration-id

+  == $generic-configuration-notification-input.configuration-information.configuration-id`'>

+                    <outcome value='true'>

+                        <block>

+                            <set>

+                                <parameter name='found-provided-configuration' value='true' />

+                            </set>

+                            <break/>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$found-provided-configuration`'>

+                <outcome value='false'>

+                    <set>

+                        <parameter name='service-data.provided-configurations.provided-configuration_length'

+  value='`$service-data.provided-configurations.provided-configuration_length + 1`' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='service-data.provided-configurations.provided-configuration[$pc-index].configuration-id'

+  value='`$generic-configuration-notification-input.configuration-information.configuration-id`' />

+                <parameter name='service-data.provided-configurations.provided-configuration[$pc-index].configuration-type'

+  value='`$generic-configuration-notification-input.configuration-information.configuration-type`' />

+                <parameter name='service-data.provided-configurations.provided-configuration[$pc-index].configuration-sub-type'

+  value='`$generic-configuration-notification-input.configuration-information.configuration-sub-type`' />

+                <parameter name='service-data.provided-configurations.provided-configuration[$pc-index].configuration-topology-link'

+  value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+   + $generic-configuration-notification-input.service-information.service-instance-id

+   + '/service-data/provided-configurations/provided-configuration/'

+   + $generic-configuration-notification-input.configuration-information.configuration-id`" />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.vnf-sub-interface-group`"/>

+                <parameter name="outputPath" value="tmp.part"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.part`"/>

+                <parameter name="outputPath" value="tmp.part"/>

+                <parameter name="target" value="{vnf-id}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.vnf-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.part`"/>

+                <parameter name="outputPath" value="tmp.part"/>

+                <parameter name="target" value="{vnfc-instance-group-function}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.vnfc-instance-group-function`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.part`"/>

+                <parameter name="outputPath" value="tmp.part"/>

+                <parameter name="target" value="{network-instance-group-function}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-instance-group-function`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.part`"/>

+                <parameter name="outputPath" value="tmp.vsig-url"/>

+                <parameter name="target" value="{parent-port-role}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.parent-port-role`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vsig-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-vsig" />

+                <outcome value='failure'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="Y" />

+                            <parameter name="input.response-code"

+  value="500" />

+                            <parameter name="input.response-message"

+  value="`'Cannot find vnf-sub-interface-group in service ' + $generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value="`'Cannot find vnf-sub-interface-group in service ' + $generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <for silentFailure='true' index='vnfc-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc_length`' >

+                <for silentFailure='true' index='vnic-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic_length`' >

+                    <for silentFailure='true' index='si-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface_length`' >

+                        <switch test='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface[$si-index].vlan-tags.lower-tag-id

+  == $generic-configuration-notification-input.vnr-parameters.lower-tag-id`'>

+                            <outcome value='true'>

+                                <set>

+                                    <parameter name='mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface[$si-index].sub-interface-status'

+  value='assigned' />

+                                </set>

+                            </outcome>

+                        </switch>

+                    </for>

+                </for>

+            </for>

+            <switch test='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length'

+  value='0' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='found-customer-bonding-request' value='false' />

+            </set>

+            <for index='cbr-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length`' >

+                <switch test='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$cbr-index].configuration-id

+  == $generic-configuration-notification-input.configuration-information.configuration-id`'>

+                    <outcome value='true'>

+                        <block>

+                            <set>

+                                <parameter name='found-customer-bonding-request' value='true' />

+                            </set>

+                            <break/>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$found-customer-bonding-request`'>

+                <outcome value='false'>

+                    <block>

+                        <set>

+                            <parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length].configuration-id'

+  value='`$generic-configuration-notification-input.configuration-information.configuration-id`' />

+                        </set>

+                        <set>

+                            <parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length'

+  value='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length + 1`' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vnfsubinterfacegroup.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vsig-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-vsig" />

+                <outcome value='failure'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="Y" />

+                            <parameter name="input.response-code"

+  value="500" />

+                            <parameter name="input.response-message"

+  value="Failure writing vnf-sub-interface-group" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value="Failure writing vnf-sub-interface-group" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.network-instance-group-network`"/>

+                <parameter name="outputPath" value="tmp.part"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.part`"/>

+                <parameter name="outputPath" value="tmp.part"/>

+                <parameter name="target" value="{network-instance-group-id}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-instance-group-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.part`"/>

+                <parameter name="outputPath" value="tmp.nign-url"/>

+                <parameter name="target" value="{network-id}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nign-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-nign" />

+                <outcome value='failure'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="Y" />

+                            <parameter name="input.response-code"

+  value="500" />

+                            <parameter name="input.response-message"

+  value="`'Cannot find network-instance-group-network in service ' + $generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value="`'Cannot find network-instance-group-network in service ' + $generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <switch test='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length'

+  value='0' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='found-customer-bonding-request' value='false' />

+            </set>

+            <set>

+                <parameter name='cbr-index' value='0' />

+            </set>

+            <for index='cbr-index' start='0' end='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length`' >

+                <switch test='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$cbr-index].configuration-id

+  == $generic-configuration-notification-input.configuration-information.configuration-id`'>

+                    <outcome value='true'>

+                        <block>

+                            <set>

+                                <parameter name='found-customer-bonding-request' value='true' />

+                            </set>

+                            <break/>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$found-customer-bonding-request`'>

+                <outcome value='false'>

+                    <block>

+                        <set>

+                            <parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length].configuration-id'

+  value='`$generic-configuration-notification-input.configuration-information.configuration-id`' />

+                        </set>

+                        <set>

+                            <parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length'

+  value='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length + 1`' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='mdsal-nign.network[0].network-status' value='assigned' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-network.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nign-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-nign" />

+                <outcome value='failure'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="Y" />

+                            <parameter name="input.response-code"

+  value="500" />

+                            <parameter name="input.response-message"

+  value="Failure writing network-instance-group network" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value="Failure writing network-instance-group network" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.order-status'

+  value='Created' />

+            </set>

+            <set>

+                <parameter name='gc.' value='mdsal-gc.gc-configuration[0].' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.genconfig.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-gc" />

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="Y" />

+                            <parameter name="input.response-code"

+  value="500" />

+                            <parameter name="input.response-message"

+  value="Error updating md-sal for gc-configuration" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value='Error updating md-sal for gc-configuration' />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="Y" />

+                            <parameter name="input.response-code"

+  value="500" />

+                            <parameter name="input.response-message"

+  value="Error updating md-sal for gc-configuration" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value='Error updating md-sal for gc-configuration' />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                <parameter name="input.ack-final-indicator"

+  value="`$generic-configuration-notification-input.ack-final-indicator`" />

+                <parameter name="input.response-code"

+  value="`$generic-configuration-notification-input.response-code`" />

+                <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+            </configure>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/bgb-gcnotify.log' />

+            </execute>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="success" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification-deactivate.xml
new file mode 100755
index 0000000..88fcf35
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification-deactivate.xml
@@ -0,0 +1,108 @@
+<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='generic-configuration-notification-deactivate' mode='sync'>

+        <block atomic="true">

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.gc-configuration`"/>

+                <parameter name="outputPath" value="tmp.gc-url"/>

+                <parameter name="target" value="{configuration-id}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.configuration-information.configuration-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-gc" />

+                <outcome value='failure'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="Y" />

+                            <parameter name="input.response-code"

+  value="500" />

+                            <parameter name="input.response-message"

+  value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.order-status'

+  value='PendingDelete' />

+                <parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.last-action'

+  value='DeleteGenericConfigurationInstance' />

+                <parameter name='mdsal-gc.gc-configuration[0].configuration-data.configuration-oper-status.last-rpc-action'

+  value='deactivate' />

+            </set>

+            <set>

+                <parameter name='gc.' value='mdsal-gc.gc-configuration[0].' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.genconfig.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-gc" />

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value='Error updating md-sal for gc-configuration' />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value='Error updating md-sal for gc-configuration' />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                <parameter name="input.ack-final-indicator"

+  value="`$generic-configuration-notification-input.ack-final-indicator`" />

+                <parameter name="input.response-code"

+  value="`$generic-configuration-notification-input.response-code`" />

+                <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+            </configure>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/bgb-gcnotify.log' />

+            </execute>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="success" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification-unassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification-unassign.xml
new file mode 100755
index 0000000..a3c5fff
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification-unassign.xml
@@ -0,0 +1,353 @@
+<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='generic-configuration-notification-unassign' mode='sync'>

+        <block atomic="true">

+            <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 silentFailure='true' index='pc-index' start='0' end='`$service-data.provided-configurations.provided-configuration_length`' >

+                <switch test='`$service-data.provided-configurations.provided-configuration[$pc-index].configuration-id

+  == $generic-configuration-notification-input.configuration-information.configuration-id`'>

+                    <outcome value='true'>

+                        <block>

+                            <for index='pc2-index' start='`$pc-index + 1`' end='`$service-data.provided-configurations.provided-configuration_length`' >

+                                <block>

+                                    <set>

+                                        <parameter name='prev-index' value='`$pc2-index - 1`' />

+                                    </set>

+                                    <set>

+                                        <parameter name='service-data.provided-configurations.provided-configuration[$prev-index].'

+  value='`$service-data.provided-configurations.provided-configuration[$pc2-index].`' />

+                                    </set>

+                                </block>

+                            </for>

+                            <set>

+                                <parameter name='service-data.provided-configurations.provided-configuration_length'

+  value='`$service-data.provided-configurations.provided-configuration_length - 1`' />

+                            </set>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.gc-configuration`"/>

+                <parameter name="outputPath" value="tmp.gc-url"/>

+                <parameter name="target" value="{configuration-id}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.configuration-information.configuration-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-gc" />

+                <outcome value='failure'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="Y" />

+                            <parameter name="input.response-code"

+  value="500" />

+                            <parameter name="input.response-message"

+  value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value="`'Cannot find configuration ' + $generic-configuration-notification-input.configuration-information.configuration-id`" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <switch test='`$generic-configuration-notification-input.response-code`'>

+                <outcome value='Other'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="`$generic-configuration-notification-input.ack-final-indicator`" />

+                            <parameter name="input.response-code"

+  value="`$generic-configuration-notification-input.response-code`" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value="`$generic-configuration-notification-input.response-message`" />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='200'>

+                    <block></block>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.vnf-sub-interface-group`"/>

+                <parameter name="outputPath" value="tmp.part"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.part`"/>

+                <parameter name="outputPath" value="tmp.part"/>

+                <parameter name="target" value="{vnf-id}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.vnf-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.part`"/>

+                <parameter name="outputPath" value="tmp.part"/>

+                <parameter name="target" value="{vnfc-instance-group-function}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.vnfc-instance-group-function`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.part`"/>

+                <parameter name="outputPath" value="tmp.part"/>

+                <parameter name="target" value="{network-instance-group-function}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-instance-group-function`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.part`"/>

+                <parameter name="outputPath" value="tmp.vsig-url"/>

+                <parameter name="target" value="{parent-port-role}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.parent-port-role`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vsig-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-vsig" />

+                <outcome value='failure'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="Y" />

+                            <parameter name="input.response-code"

+  value="500" />

+                            <parameter name="input.response-message"

+  value="`'Cannot find vnf-sub-interface-group in service ' + $generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value="`'Cannot find vnf-sub-interface-group in service ' + $generic-configuration-notification-input.vnr-parameters.vnf-service-instance-id`" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <for silentFailure='true' index='vnfc-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc_length`' >

+                <for silentFailure='true' index='vnic-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic_length`' >

+                    <for silentFailure='true' index='si-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface_length`' >

+                        <switch test='`$mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface[$si-index].vlan-tags.lower-tag-id

+  == $generic-configuration-notification-input.vnr-parameters.lower-tag-id`'>

+                            <outcome value='true'>

+                                <set>

+                                    <parameter name='mdsal-vsig.vnf-sub-interface-group[0].vnfcs.vnfc[$vnfc-index].vnics.vnic[$vnic-index].sub-interfaces.sub-interface[$si-index].sub-interface-status'

+  value='unassigned' />

+                                </set>

+                            </outcome>

+                        </switch>

+                    </for>

+                </for>

+            </for>

+            <for index='cbr-index' start='0' end='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length`' >

+                <switch test='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$cbr-index].configuration-id

+  == $generic-configuration-notification-input.configuration-information.configuration-id`'>

+                    <outcome value='true'>

+                        <block>

+                            <for index='cbr2-index' start='`$cbr-index + 1`' end='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length`' >

+                                <block>

+                                    <set>

+                                        <parameter name='prev-index' value='`$cbr2-index - 1`' />

+                                    </set>

+                                    <set>

+                                        <parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$cbr-index].[$prev-index].'

+  value='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request[$cbr-index].[$cbr2-index].`' />

+                                    </set>

+                                </block>

+                            </for>

+                            <set>

+                                <parameter name='mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length'

+  value='`$mdsal-vsig.vnf-sub-interface-group[0].customer-bonding-requests.customer-bonding-request_length - 1`' />

+                            </set>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vnfsubinterfacegroup.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vsig-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-vsig" />

+                <outcome value='failure'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="Y" />

+                            <parameter name="input.response-code"

+  value="500" />

+                            <parameter name="input.response-message"

+  value="Failure writing vnf-sub-interface-group" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value="Failure writing vnf-sub-interface-group" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.network-instance-group-network`"/>

+                <parameter name="outputPath" value="tmp.part"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.part`"/>

+                <parameter name="outputPath" value="tmp.part"/>

+                <parameter name="target" value="{network-instance-group-id}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-instance-group-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.part`"/>

+                <parameter name="outputPath" value="tmp.nign-url"/>

+                <parameter name="target" value="{network-id}"/>

+                <parameter name="replacement" value="`$generic-configuration-notification-input.vnr-parameters.network-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nign-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-nign" />

+                <outcome value='failure'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="Y" />

+                            <parameter name="input.response-code"

+  value="500" />

+                            <parameter name="input.response-message"

+  value="`'Cannot find network-instance-group-network in service ' + $generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value="`'Cannot find network-instance-group-network in service ' + $generic-configuration-notification-input.vnr-parameters.network-collection-service-instance-id`" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='mdsal-nign.network[0].network-status' value='unassigned' />

+            </set>

+            <for index='cbr-index' start='0' end='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length`' >

+                <switch test='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$cbr-index].configuration-id

+  == $generic-configuration-notification-input.configuration-information.configuration-id`'>

+                    <outcome value='true'>

+                        <block>

+                            <for index='cbr2-index' start='`$cbr-index + 1`' end='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length`' >

+                                <block>

+                                    <set>

+                                        <parameter name='prev-index' value='`$cbr2-index - 1`' />

+                                    </set>

+                                    <set>

+                                        <parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$cbr-index].[$prev-index].'

+  value='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request[$cbr-index].[$cbr2-index].`' />

+                                    </set>

+                                </block>

+                            </for>

+                            <set>

+                                <parameter name='mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length'

+  value='`$mdsal-nign.network[0].customer-bonding-requests.customer-bonding-request_length - 1`' />

+                            </set>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.network-instance-group-network.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nign-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-nign" />

+                <outcome value='failure'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url"

+  value="`$mdsal-gc.gc-configuration[0].configuration-data.configuration-operation-information.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator"

+  value="Y" />

+                            <parameter name="input.response-code"

+  value="500" />

+                            <parameter name="input.response-message"

+  value="Failure writing network-instance-group network" />

+                            <parameter name="input.svc-request-id"

+  value="`$generic-configuration-notification-input.svc-request-id`" />

+                            <parameter name="input.service-information.service-type"

+  value="`$generic-configuration-notification-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id"

+  value="`$generic-configuration-notification-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value="Failure writing network-instance-group network" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/bgb-gcnotify.log' />

+            </execute>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="success" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification.xml
new file mode 100755
index 0000000..34bfcec
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-notification.xml
@@ -0,0 +1,39 @@
+<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='generic-configuration-notification' mode='sync'>

+        <block atomic="true">

+            <switch test='`$generic-configuration-notification-input.sdnc-request-header.svc-action`'>

+                <outcome value='assign'>

+                    <call module='GENERIC-RESOURCE-API' rpc='generic-configuration-notification-assign' mode='sync' >

+                        <outcome value='failure'>

+                            <return status='failure'></return>

+                        </outcome>

+                    </call>

+                </outcome>

+                <outcome value='activate'>

+                    <call module='GENERIC-RESOURCE-API' rpc='generic-configuration-notification-activate' mode='sync' >

+                        <outcome value='failure'>

+                            <return status='failure'></return>

+                        </outcome>

+                    </call>

+                </outcome>

+                <outcome value='deactivate'>

+                    <call module='GENERIC-RESOURCE-API' rpc='generic-configuration-notification-deactivate' mode='sync' >

+                        <outcome value='failure'>

+                            <return status='failure'></return>

+                        </outcome>

+                    </call>

+                </outcome>

+                <outcome value='unassign'>

+                    <call module='GENERIC-RESOURCE-API' rpc='generic-configuration-notification-unassign' mode='sync' >

+                        <outcome value='failure'>

+                            <return status='failure'></return>

+                        </outcome>

+                    </call>

+                </outcome>

+            </switch>

+            <return status='success'></return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-topology-operation.xml
new file mode 100755
index 0000000..56f0d74
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_generic-configuration-topology-operation.xml
@@ -0,0 +1,117 @@
+<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='generic-configuration-topology-operation' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-generic-configuration-input' mode='sync' >

+                <outcome value='failure'>

+                    <return status='failure'></return>

+                </outcome>

+            </call>

+            <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='`$generic-configuration-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='assign'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='gc.configuration-id'

+  value='`$generic-configuration-topology-operation-input.configuration-information.configuration-id`' />

+                            <parameter name='gc.configuration-data.configuration-operation-information.sdnc-request-header.'

+  value='`$generic-configuration-topology-operation-input.sdnc-request-header.`' />

+                            <parameter name='gc.configuration-data.configuration-operation-information.request-information.'

+  value='`$generic-configuration-topology-operation-input.request-information.`' />

+                            <parameter name='gc.configuration-data.configuration-operation-information.service-information.'

+  value='`$generic-configuration-topology-operation-input.service-information.`' />

+                            <parameter name='gc.configuration-data.configuration-operation-information.configuration-information.'

+  value='`$generic-configuration-topology-operation-input.configuration-information.`' />

+                            <parameter name='gc.configuration-data.configuration-operation-information.gc-request-input.'

+  value='`$generic-configuration-topology-operation-input.gc-request-input.`' />

+                        </set>

+                        <set>

+                            <parameter name='gc.configuration-data.configuration-oper-status.order-status'

+  value='PendingCreate' />

+                            <parameter name='gc.configuration-data.configuration-oper-status.last-rpc-action'

+  value='assign' />

+                            <parameter name='gc.configuration-data.configuration-oper-status.last-action'

+  value='CreateGenericConfigurationInstance' />

+                        </set>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                            <parameter name="source" value="`$prop.restapi.gc-configuration`"/>

+                            <parameter name="outputPath" value="tmp.gc-url"/>

+                            <parameter name="target" value="{configuration-id}"/>

+                            <parameter name="replacement" value="`$gc.configuration-id`"/>

+                        </execute>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.genconfig.templatefile`" />

+                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.gc-url`' />

+                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                            <parameter name='format' value='json' />

+                            <parameter name='httpMethod' value='PUT' />

+                            <parameter name="responsePrefix" value="mdsal-gc" />

+                            <outcome value='failure'>

+                                <block atomic="true">

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value='Error updating md-sal for gc-configuration' />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic="true">

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value='Error updating md-sal for gc-configuration' />

+                                    </return>

+                                </block>

+                            </outcome>

+                        </execute>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='notification-url'

+  value="`$prop.controller.url + '/restconf/operations/GENERIC-RESOURCE-API:generic-configuration-notification'`" />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.bondingservice.server + $prop.bondingservice.uri`"/>

+                <parameter name="outputPath" value="tmp.bs-url"/>

+                <parameter name="target" value="{action}"/>

+                <parameter name="replacement" value="`$generic-configuration-topology-operation-input.sdnc-request-header.svc-action`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.bondingservice.templatefile`" />

+                <parameter name='restapiUrl' value='`$tmp.bs-url`' />

+                <parameter name='restapiUser' value='`$prop.bondingservice.user`' />

+                <parameter name='restapiPassword' value='`$prop.bondingservice.password`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='POST' />

+                <parameter name="responsePrefix" value="bonding-service-response" />

+                <parameter name='customHttpHeaders'

+      value="`'Authorization=Basic ' + $prop.bondingservice.authorization`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value="`'Error calling bonding service; ' + $error-message`" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $service-data.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/bgb-genconfig.log' />

+            </execute>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="`$bonding-service-response.ackFinalIndicator`" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="success" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_get-complex-resource-service-model.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_get-complex-resource-service-model.xml
new file mode 100755
index 0000000..07a0486
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_get-complex-resource-service-model.xml
@@ -0,0 +1,181 @@
+<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='get-complex-resource-service-model' mode='sync'>

+        <block atomic="true">

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from COMPLEX_RESOURCE 

+  WHERE customization_uuid = $get-complex-resource-service-model-input.customization-uuid'

+  pfx='db.complex-resource'>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'No complex resource found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`" />

+                    </return>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'No complex resource found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from ATTRIBUTE_VALUE_PAIR 

+  WHERE resource_uuid = $db.complex-resource.uuid

+  and resource_type = $db.complex-resource.type'

+  pfx='db.av-pair'>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'No attribute found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`" />

+                    </return>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'No attribute found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <for silentFailure='true' index='idx' start='0' end='`$db.av-pair_length`' >

+                        <block atomic='true'>

+                            <switch test="`$db.sdn-circuit-req[$idx].attribute-name == 'cr_function' `">

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name='get-complex-resource-service-model-output.cr-function' value='`$db.sdn-circuit-req[$idx].attribute-value`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$db.sdn-circuit-req[$idx].attribute-name == 'cr_role'`">

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name="get-complex-resource-service-model-output.cr-role" value="`$db.sdn-circuit-req[$idx].attribute-value`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$db.sdn-circuit-req[$idx].attribute-name == 'cr_type'`">

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name="get-complex-resource-service-model-output.cr-type" value="`$db.sdn-circuit-req[$idx].attribute-value`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$db.sdn-circuit-req[$idx].attribute-name == 'network_collection_function'`">

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name="get-complex-resource-service-model-output.network-collection-function" value="`$db.sdn-circuit-req[$idx].attribute-value`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$db.sdn-circuit-req[$idx].attribute-name == 'network_collection_description'`">

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name="get-complex-resource-service-model-output.network-collection-description" value="`$db.sdn-circuit-req[$idx].attribute-value`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$db.sdn-circuit-req[$idx].attribute-name == 'subinterface_network_quantity'`">

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name="get-complex-resource-service-model-output.subinterface-network-quantity" value="`$db.sdn-circuit-req[$idx].attribute-value`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                        </block>

+                    </for>

+                </outcome>

+            </get-resource>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from NETWORK_MODEL 

+  WHERE complex_resource_uuid = $db.complex-resource.uuid'

+  pfx='db.network-model'>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="No network model found" />

+                    </return>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="No network model found" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from RESOURCE_POLICY_TO_TARGET_NODE_MAPPING

+  WHERE target_node_uuid = $db.network-model.uuid

+  AND target_node_customization_uuid = db.network-model.customization-uuid'

+  pfx='db.respoltargetnodemap' >

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="No resource_policy_to_target_node_mapping found"  />

+                    </return>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="No resource_policy_to_target_node_mapping found"  />

+                    </return>

+                </outcome>

+            </get-resource>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="SELECT * from RESOURCE_POLICY  

+  WHERE policy_uuid = $db.respoltargetnodemap.policy_uuid

+  and policy_type = 'ecomp.policies.External' "

+  pfx='db.resource-policy'>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'No complex resource found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`" />

+                    </return>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'No complex resource found for customization UUID ' + $get-complex-resource-service-model-input.customization-uuid`" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <for silentFailure='true' index='idx' start='0' end='`$db.resource-policy_length`' >

+                        <block atomic='true'>

+                            <switch test="`$db.resource-policy[$idx].property-type == 'Name' and $db.resource-policy[$idx].property-name == 'Network Collection Name'`">

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name="get-complex-resource-service-model-output.network-naming-policy" value="`$db.resource-policy[$idx].policy-name`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$db.resource-policy[$idx].property-type == 'subnetwork assignments' and $db.resource-policy[$idx].property-name == 'subnet'`">

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name="get-complex-resource-service-model-output.subnet-assignment-policy" value="`$db.resource-policy[$idx].policy-name`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$db.resource-policy[$idx].property-type == 'network assignments' and $db.resource-policy[$idx].property-name == 'route target'`">

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name="get-complex-resource-service-model-output.vpn-binding-policy" value="`$db.resource-policy[$idx].policy-name`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                        </block>

+                    </for>

+                </outcome>

+            </get-resource>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_get-data-from-policy.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_get-data-from-policy.xml
new file mode 100755
index 0000000..2c825d6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_get-data-from-policy.xml
@@ -0,0 +1,204 @@
+<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='get-data-from-policy' mode='sync'>

+        <block atomic='true'>

+            <block atomic='true'>

+                <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' />

+                    <outcome value='success'>

+                        <block atomic='true'>

+                            <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="LAINA: get-data-from-policy: read properties file."/>

+                            </record>

+                        </block>

+                    </outcome>

+                    <outcome value='failure'>

+                        <block>

+                            <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="LAINA: get-data-from-policy: Could not read properties file."/>

+                                <parameter name="field3" value='`$prop.restapi.pm.getpolicy.templatefile`'/>

+                            </record>

+                            <return status='failure'>

+                                <parameter name='error-code' value='501' />

+                                <parameter name='error-message' value='get-data-from-policy: could not read generic-resource-api properties' />

+                            </return>

+                        </block>

+                    </outcome>

+                </execute>

+                <switch test='`$get-data-from-policy-input.policy-instance-name`'>

+                    <outcome value=''>

+                        <block>

+                            <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="LAINA: get-data-from-policy: input.policy-instance-name is not set"/>

+                            </record>

+                            <return status='failure'>

+                                <parameter name='error-code' value='507' />

+                                <parameter name='error-message' value='get-data-from-policy: input.policy-instance-name is not set' />

+                            </return>

+                        </block>

+                    </outcome>

+                </switch>

+            </block>

+            <block atomic='true'>

+                <set>

+                    <parameter name='tmp.policy-name' value="`$get-data-from-policy-input.policy-instance-name`" />

+                </set>

+                <record plugin="com.att.sdnctl.sli.recording.Slf4jRecorder">

+                    <parameter name="logger" value="message-log"/>

+                    <parameter name="field1" value="__TIMESTAMP__"/>

+                    <parameter name="field2" value="LAINA: get-data-from-policy: restapi-call-node Call Policy Manager getPolicy"/>

+                </record>

+                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.getpolicy.templatefile`" />

+                    <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/getConfig'`" />

+                    <parameter name='format' value='json' />

+                    <parameter name='httpMethod' value='POST' />

+                    <parameter name='customHttpHeaders'

+      value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />

+                    <parameter name="responsePrefix" value="tmp.pm-response" />

+                    <outcome value='failure'>

+                        <block>

+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="LAINA: get-data-from-policy: Error calling Policy Manager getPolicy"/>

+                            </record>

+                            <return status='failure'>

+                                <parameter name='error-code' value='502' />

+                                <parameter name='error-message' value='get-data-from-policy: getPolicy call to Policy Manger failed' />

+                            </return>

+                        </block>

+                    </outcome>

+                    <outcome value='success'>

+                        <block>

+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="LAINA: get-data-from-policy: getPolicy SUCCESS"/>

+                                <parameter name='field3' value='`$tmp.pm-response.type`' />

+                                <parameter name='field4' value='`$tmp.pm-response.matchingConditions`' />

+                                <parameter name='field5' value='`$tmp.pm-response.config`' />

+                                <parameter name='field6' value='`$tmp.pm-response.response-code`' />

+                                <parameter name='field7' value='`$tmp.pm-response.response-message`' />

+                            </record>

+                            <set>

+                                <parameter name='policy-config' value="`$tmp.pm-response.config`" />

+                            </set>

+                            <switch test='`$tmp.pm-response.response-code`'>

+                                <outcome value='500'>

+                                    <block>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                            <parameter name="field2" value="LAINA: get-data-from-policy: Error calling Policy Manager getPolicy"/>

+                                        </record>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='502' />

+                                            <parameter name='error-message' value='get-data-from-policy: getPolicy call to Policy Manger failed' />

+                                        </return>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </block>

+                    </outcome>

+                </execute>

+                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                    <parameter name="logger" value="message-log"/>

+                    <parameter name="field1" value="__TIMESTAMP__"/>

+                    <parameter name="field2" value="LAINA: get-data-from-policy: call jsonStringToCtx"/>

+                    <parameter name='field3' value='`$policy-config`' />

+                </record>

+                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">

+                    <parameter name="source" value="policy-config" />

+                    <parameter name="outputPath" value="jsonContextPrefix" />

+                    <parameter name="isEscaped" value="true" />

+                    <outcome value='failure'>

+                        <block>

+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="LAINA: get-data-from-policy: Error calling jsonStringToCtx"/>

+                            </record>

+                            <return status='failure'>

+                                <parameter name='error-code' value='504' />

+                                <parameter name='error-message' value='get-data-from-policy: failed to parse Policy Manger getPolicy response' />

+                            </return>

+                        </block>

+                    </outcome>

+                    <outcome value='success'>

+                        <block atomic='true'>

+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="LAINA: get-data-from-policy: jsonStringToCtx SUCCESS: policyName|policy-data|"/>

+                                <parameter name='field3' value='`$jsonContextPrefix.policyName`' />

+                                <parameter name='field4' value='`$jsonContextPrefix.content.policy-data`' />

+                            </record>

+                            <switch test='`$jsonContextPrefix.content.policy-data_length > 0`'>

+                                <outcome value='true'>

+                                    <block atomic='true'>

+                                        <for index='policyDataIndex' start='0' end='`$jsonContextPrefix.content.policy-data_length`' >

+                                            <set>

+                                                <parameter name="`'get-data-from-policy-output[' + $policyDataIndex + ']'`." value= '`$jsonContextPrefix.content.policy-data[$policyDataIndex].`' />

+                                            </set>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="LAINA: get-data-from-policy: policyDataIndex|nf-role|rule-1|rule-2:"/>

+                                                <parameter name='field3' value='`$policyDataIndex`' />

+                                                <parameter name='field4' value='`$jsonContextPrefix.content.policy-data[$policyDataIndex].nf-role`' />

+                                                <parameter name='field5' value='`$jsonContextPrefix.content.policy-data[$policyDataIndex].rule-1`' />

+                                                <parameter name='field6' value='`$jsonContextPrefix.content.policy-data[$policyDataIndex].rule-2`' />

+                                            </record>

+                                        </for>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$jsonContextPrefix.content.policy-data.extended-params_length > 0`'>

+                                <outcome value='true'>

+                                    <block atomic='true'>

+                                        <for index='policyDataExtendedParamsIndex' start='0' end='`$jsonContextPrefix.content.policy-data.extended-params_length`' >

+                                            <set>

+                                                <parameter name='output-param-name' value='`$jsonContextPrefix.content.policy-data.extended-params[$policyDataExtendedParamsIndex].param-name`'  />

+                                                <parameter name='output-param-value' value='`$jsonContextPrefix.content.policy-data.extended-params[$policyDataExtendedParamsIndex].param-value`'  />

+                                            </set>

+                                            <set>

+                                                <parameter name="`'get-data-from-policy-output.' + $output-param-name`" value="`$output-param-value`" />

+                                            </set>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="LAINA: get-data-from-policy: policyDataExtendedParamsIndex|output-param-name|output-param-value:"/>

+                                                <parameter name='field3' value='`$policyDataExtendedParamsIndex`' />

+                                                <parameter name='field4' value='`$output-param-name`' />

+                                                <parameter name='field5' value='`$output-param-value`' />

+                                            </record>

+                                        </for>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <set>

+                                <parameter name='get-data-from-policy-output.' value='`$jsonContextPrefix.content.policy-data.`'  />

+                            </set>

+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="LAINA: get-data-from-policy: get-data-from-policy-output.:"/>

+                                <parameter name='field3' value='`$get-data-from-policy-output.`' />

+                            </record>

+                        </block>

+                    </outcome>

+                </execute>

+                <return status='success'></return>

+            </block>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_get-tunnelxconn-ar.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_get-tunnelxconn-ar.xml
new file mode 100644
index 0000000..be34b3b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_get-tunnelxconn-ar.xml
@@ -0,0 +1,17 @@
+<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='get-tunnelxconn-ar' mode='sync'>

+<block atomic="true"><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='GENERIC-RESOURCE-API' key='tunnelxconn-allotted-resources' pfx='tmp.tunnel-ar.data' >

+</get-resource><for index='tunnelidx' start='0' end='`$tmp.tunnel-ar.data.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource_length`' >

+

+

+<block>

+<set>

+<parameter name='tmp.printout.consuming-service-instance-id' value='`$tmp.tunnel-ar.data.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$tunnelidx].allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.consuming-service-instance-id`' />

+<parameter name='tmp.printout.index' value='`$tunnelidx`' />

+</set><switch test='`$tmp.tunnel-ar.data.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$tunnelidx].allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.consuming-service-instance-id == $tmp.ar.consuming-service-instance-id`'>

+

+

+<outcome value='true'>

+<block>

+<set>

+<parameter name='tmp.tunnelxconn-ar.' value='`$tmp.tunnel-ar.data.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$tunnelidx].`' />

+</set></block></outcome></switch></block></for></block></method></service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_get-vnf-api-parent-instance.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_get-vnf-api-parent-instance.xml
new file mode 100644
index 0000000..a844fa5
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_get-vnf-api-parent-instance.xml
@@ -0,0 +1,31 @@
+<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='get-vnf-api-parent-instance' mode='sync'>

+<block atomic="true"><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='vnfs' pfx='tmp.vnfdata' >

+</get-resource><for index='vnfidx' start='0' end='`$tmp.vnfdata.vnfs.vnf-list_length`' >

+

+

+<block>

+<set>

+<parameter name='tmp.debug.tmp.search.parent-service-instance-id' value='`$tmp.search.parent-service-instance-id`' />

+</set><switch test='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].service-data.service-information.service-instance-id == $tmp.search.parent-service-instance-id`'>

+

+

+<outcome value='true'>

+<block>

+<set>

+<parameter name='tmp.debug.service-instance.id1' value='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].service-data.service-information.service-instance-id`' />

+<parameter name='tmp.debug.service-instance.id2' value='`$tmp.search.parent-service-instance-id`' />

+<parameter name='tmp.debug.service-instance.id3.vnf-id' value='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].vnf-id`' />

+

+

+

+</set><set>

+<parameter name='tmp.old-service-data.vnf-id' value='`$tmp.vnfdata.vnfs.vnf-list[$vnfidx].vnf-id`' />

+</set><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='vnfs/vnf-list/$tmp.vnfdata.vnfs.vnf-list[$vnfidx].vnf-id/service-data/' pfx='parent-service-instance' >

+																													

+						<outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" 

+    value="`'No entry found for parent service instance id ' + $tmp.ar.parent-service-instance-id + '.'`" />

+</return></outcome></get-resource><break></break></block></outcome></switch></block></for></block></method></service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-composite-match-pair.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-composite-match-pair.xml
new file mode 100755
index 0000000..0fb35de
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-composite-match-pair.xml
@@ -0,0 +1,1912 @@
+<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='getpathsegment-composite-match-pair' mode='sync'>

+        <block>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/gpsc.log' />

+            </execute>

+            <for index='left-node-index' start='0' end='`$serv-cust_length - 1`' >

+                <block>

+                    <set>

+                        <parameter name='right-node-index' value='`$left-node-index + 1`' />

+                    </set>

+                    <for silentFailure='true' index='left-serv-index' start='0' end='`$serv-cust[$left-node-index].serv-insts_length`' >

+                        <block>

+                            <set>

+                                <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length' value='0' />

+                            </set>

+                            <for silentFailure='true' index='right-serv-index' start='0' end='`$serv-cust[$right-node-index].serv-insts_length`' >

+                                <block>

+                                    <switch test='`$match-type`'>

+                                        <outcome value='network-name'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='found-match' value='false' />

+                                                </set>

+                                                <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path_length`'>

+                                                    <outcome value=''>

+                                                        <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`'>

+                                                            <outcome value=''>

+                                                                <block>

+                                                                    <set>

+                                                                        <parameter name='vnf-index' value='0' />

+                                                                        <parameter name='left-vnf-index' value='0' />

+                                                                        <parameter name='right-vnf-index' value='0' />

+                                                                    </set>

+                                                                    <for silentFailure='true' index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >

+                                                                        <block>

+                                                                            <switch test="`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == 'oam'`">

+                                                                                <outcome value='false'>

+                                                                                    <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >

+                                                                                        <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>

+                                                                                            <outcome value='true'>

+                                                                                                <block>

+                                                                                                    <set>

+                                                                                                        <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />

+                                                                                                    </set>

+                                                                                                    <set>

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />

+                                                                                                    </set>

+                                                                                                    <set>

+                                                                                                        <parameter name='found-match' value='true' />

+                                                                                                    </set>

+                                                                                                    <break/>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </for>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                            <switch test='`$found-match`'>

+                                                                                <outcome value='true'>

+                                                                                    <break/>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </for>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='0'>

+                                                                <block>

+                                                                    <set>

+                                                                        <parameter name='vnf-index' value='0' />

+                                                                        <parameter name='left-vnf-index' value='0' />

+                                                                        <parameter name='right-vnf-index' value='0' />

+                                                                    </set>

+                                                                    <for silentFailure='true' index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >

+                                                                        <block>

+                                                                            <switch test="`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == 'oam'`">

+                                                                                <outcome value='false'>

+                                                                                    <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >

+                                                                                        <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>

+                                                                                            <outcome value='true'>

+                                                                                                <block>

+                                                                                                    <set>

+                                                                                                        <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />

+                                                                                                    </set>

+                                                                                                    <set>

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />

+                                                                                                    </set>

+                                                                                                    <set>

+                                                                                                        <parameter name='found-match' value='true' />

+                                                                                                    </set>

+                                                                                                    <break/>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </for>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                            <switch test='`$found-match`'>

+                                                                                <outcome value='true'>

+                                                                                    <break/>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </for>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='Other'>

+                                                                <for index='right-fp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`' >

+                                                                    <for index='right-sp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path_length`' >

+                                                                        <block>

+                                                                            <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf_length`' >

+                                                                                <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-path-sequence-id

+  == 1`'>

+                                                                                    <outcome value='true'>

+                                                                                        <block>

+                                                                                            <set>

+                                                                                                <parameter name='right-vnf-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-instance-id`' />

+                                                                                            </set>

+                                                                                            <break/>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </for>

+                                                                            <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >

+                                                                                <block>

+                                                                                    <switch test='`$right-vnf-instance-id

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`'>

+                                                                                        <outcome value='true'>

+                                                                                            <block>

+                                                                                                <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list_length`' >

+                                                                                                    <block>

+                                                                                                        <for index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >

+                                                                                                            <block>

+                                                                                                                <for silentFailure='true' index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >

+                                                                                                                    <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>

+                                                                                                                        <outcome value='true'>

+                                                                                                                            <block>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />

+                                                                                                                                </set>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'

+  value='`$right-vnf-instance-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />

+                                                                                                                                    <parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].rhs_vnf.'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />

+                                                                                                                                </set>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='found-match' value='true' />

+                                                                                                                                </set>

+                                                                                                                                <break/>

+                                                                                                                            </block>

+                                                                                                                        </outcome>

+                                                                                                                    </switch>

+                                                                                                                </for>

+                                                                                                                <switch test='`$found-match`'>

+                                                                                                                    <outcome value='true'>

+                                                                                                                        <break/>

+                                                                                                                    </outcome>

+                                                                                                                </switch>

+                                                                                                            </block>

+                                                                                                        </for>

+                                                                                                    </block>

+                                                                                                </for>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                    <switch test='`$found-match`'>

+                                                                                        <outcome value='true'>

+                                                                                            <break/>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                            </for>

+                                                                        </block>

+                                                                    </for>

+                                                                </for>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                    <outcome value='0'>

+                                                        <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`'>

+                                                            <outcome value=''>

+                                                                <block>

+                                                                    <set>

+                                                                        <parameter name='vnf-index' value='0' />

+                                                                        <parameter name='left-vnf-index' value='0' />

+                                                                        <parameter name='right-vnf-index' value='0' />

+                                                                    </set>

+                                                                    <for silentFailure='true' index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >

+                                                                        <block>

+                                                                            <switch test="`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == 'oam'`">

+                                                                                <outcome value='false'>

+                                                                                    <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >

+                                                                                        <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>

+                                                                                            <outcome value='true'>

+                                                                                                <block>

+                                                                                                    <set>

+                                                                                                        <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />

+                                                                                                    </set>

+                                                                                                    <set>

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />

+                                                                                                    </set>

+                                                                                                    <set>

+                                                                                                        <parameter name='found-match' value='true' />

+                                                                                                    </set>

+                                                                                                    <break/>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </for>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                            <switch test='`$found-match`'>

+                                                                                <outcome value='true'>

+                                                                                    <break/>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </for>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='0'>

+                                                                <block>

+                                                                    <set>

+                                                                        <parameter name='vnf-index' value='0' />

+                                                                        <parameter name='left-vnf-index' value='0' />

+                                                                        <parameter name='right-vnf-index' value='0' />

+                                                                    </set>

+                                                                    <for silentFailure='true' index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >

+                                                                        <block>

+                                                                            <switch test="`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == 'oam'`">

+                                                                                <outcome value='false'>

+                                                                                    <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >

+                                                                                        <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>

+                                                                                            <outcome value='true'>

+                                                                                                <block>

+                                                                                                    <set>

+                                                                                                        <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />

+                                                                                                    </set>

+                                                                                                    <set>

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />

+                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />

+                                                                                                    </set>

+                                                                                                    <set>

+                                                                                                        <parameter name='found-match' value='true' />

+                                                                                                    </set>

+                                                                                                    <break/>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </for>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                            <switch test='`$found-match`'>

+                                                                                <outcome value='true'>

+                                                                                    <break/>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </for>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='Other'>

+                                                                <for index='right-fp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`' >

+                                                                    <for index='right-sp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path_length`' >

+                                                                        <block>

+                                                                            <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf_length`' >

+                                                                                <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-path-sequence-id

+  == 1`'>

+                                                                                    <outcome value='true'>

+                                                                                        <block>

+                                                                                            <set>

+                                                                                                <parameter name='right-vnf-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-instance-id`' />

+                                                                                            </set>

+                                                                                            <break/>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </for>

+                                                                            <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >

+                                                                                <block>

+                                                                                    <switch test='`$right-vnf-instance-id

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`'>

+                                                                                        <outcome value='true'>

+                                                                                            <block>

+                                                                                                <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list_length`' >

+                                                                                                    <block>

+                                                                                                        <for index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >

+                                                                                                            <block>

+                                                                                                                <for silentFailure='true' index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >

+                                                                                                                    <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>

+                                                                                                                        <outcome value='true'>

+                                                                                                                            <block>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />

+                                                                                                                                </set>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'

+  value='`$right-vnf-instance-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />

+                                                                                                                                    <parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].rhs_vnf.'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />

+                                                                                                                                </set>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='found-match' value='true' />

+                                                                                                                                </set>

+                                                                                                                                <break/>

+                                                                                                                            </block>

+                                                                                                                        </outcome>

+                                                                                                                    </switch>

+                                                                                                                </for>

+                                                                                                                <switch test='`$found-match`'>

+                                                                                                                    <outcome value='true'>

+                                                                                                                        <break/>

+                                                                                                                    </outcome>

+                                                                                                                </switch>

+                                                                                                            </block>

+                                                                                                        </for>

+                                                                                                    </block>

+                                                                                                </for>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                    <switch test='`$found-match`'>

+                                                                                        <outcome value='true'>

+                                                                                            <break/>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                            </for>

+                                                                        </block>

+                                                                    </for>

+                                                                </for>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`'>

+                                                            <outcome value=''>

+                                                                <for index='left-fp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path_length`' >

+                                                                    <for index='left-sp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path_length`' >

+                                                                        <block>

+                                                                            <set>

+                                                                                <parameter name='max-seq' value='-1' />

+                                                                            </set>

+                                                                            <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf_length`' >

+                                                                                <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id

+  &gt; $max-seq`'>

+                                                                                    <outcome value='true'>

+                                                                                        <set>

+                                                                                            <parameter name='max-seq'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id`' />

+                                                                                            <parameter name='left-vnf-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-instance-id`' />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </for>

+                                                                            <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list_length`' >

+                                                                                <block>

+                                                                                    <switch test='`$left-vnf-instance-id

+  == $serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`'>

+                                                                                        <outcome value='true'>

+                                                                                            <block>

+                                                                                                <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >

+                                                                                                    <block>

+                                                                                                        <for index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >

+                                                                                                            <block>

+                                                                                                                <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >

+                                                                                                                    <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>

+                                                                                                                        <outcome value='true'>

+                                                                                                                            <block>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />

+                                                                                                                                </set>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'

+  value='`$left-vnf-instance-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].lhs_vnf.'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />

+                                                                                                                                </set>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='found-match' value='true' />

+                                                                                                                                </set>

+                                                                                                                                <break/>

+                                                                                                                            </block>

+                                                                                                                        </outcome>

+                                                                                                                    </switch>

+                                                                                                                </for>

+                                                                                                                <switch test='`$found-match`'>

+                                                                                                                    <outcome value='true'>

+                                                                                                                        <break/>

+                                                                                                                    </outcome>

+                                                                                                                </switch>

+                                                                                                            </block>

+                                                                                                        </for>

+                                                                                                    </block>

+                                                                                                </for>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                    <switch test='`$found-match`'>

+                                                                                        <outcome value='true'>

+                                                                                            <break/>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                            </for>

+                                                                        </block>

+                                                                    </for>

+                                                                </for>

+                                                            </outcome>

+                                                            <outcome value='0'>

+                                                                <for index='left-fp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path_length`' >

+                                                                    <for index='left-sp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path_length`' >

+                                                                        <block>

+                                                                            <set>

+                                                                                <parameter name='max-seq' value='-1' />

+                                                                            </set>

+                                                                            <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf_length`' >

+                                                                                <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id

+  &gt; $max-seq`'>

+                                                                                    <outcome value='true'>

+                                                                                        <set>

+                                                                                            <parameter name='max-seq'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id`' />

+                                                                                            <parameter name='left-vnf-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-instance-id`' />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </for>

+                                                                            <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list_length`' >

+                                                                                <block>

+                                                                                    <switch test='`$left-vnf-instance-id

+  == $serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`'>

+                                                                                        <outcome value='true'>

+                                                                                            <block>

+                                                                                                <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >

+                                                                                                    <block>

+                                                                                                        <for index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >

+                                                                                                            <block>

+                                                                                                                <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >

+                                                                                                                    <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>

+                                                                                                                        <outcome value='true'>

+                                                                                                                            <block>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />

+                                                                                                                                </set>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'

+  value='`$left-vnf-instance-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].lhs_vnf.'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.`' />

+                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />

+                                                                                                                                </set>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='found-match' value='true' />

+                                                                                                                                </set>

+                                                                                                                                <break/>

+                                                                                                                            </block>

+                                                                                                                        </outcome>

+                                                                                                                    </switch>

+                                                                                                                </for>

+                                                                                                                <switch test='`$found-match`'>

+                                                                                                                    <outcome value='true'>

+                                                                                                                        <break/>

+                                                                                                                    </outcome>

+                                                                                                                </switch>

+                                                                                                            </block>

+                                                                                                        </for>

+                                                                                                    </block>

+                                                                                                </for>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                    <switch test='`$found-match`'>

+                                                                                        <outcome value='true'>

+                                                                                            <break/>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                            </for>

+                                                                        </block>

+                                                                    </for>

+                                                                </for>

+                                                            </outcome>

+                                                            <outcome value='Other'>

+                                                                <block>

+                                                                    <for index='left-fp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path_length`' >

+                                                                        <for index='left-sp-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path_length`' >

+                                                                            <block>

+                                                                                <set>

+                                                                                    <parameter name='max-seq' value='-1' />

+                                                                                </set>

+                                                                                <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf_length`' >

+                                                                                    <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id

+  &gt; $max-seq`'>

+                                                                                        <outcome value='true'>

+                                                                                            <set>

+                                                                                                <parameter name='max-seq'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-path-sequence-id`' />

+                                                                                                <parameter name='left-vnf-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.vnf[$left-vnf-index].vnf-instance-id`' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </for>

+                                                                                <for index='left-vnf-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list_length`' >

+                                                                                    <block>

+                                                                                        <switch test='`$left-vnf-instance-id

+  == $serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`'>

+                                                                                            <outcome value='true'>

+                                                                                                <block>

+                                                                                                    <for index='right-fp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path_length`' >

+                                                                                                        <for index='right-sp-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path_length`' >

+                                                                                                            <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index`'>

+                                                                                                                <outcome value=''>

+                                                                                                                    <block>

+                                                                                                                        <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf_length`' >

+                                                                                                                            <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-path-sequence-id

+  == 1`'>

+                                                                                                                                <outcome value='true'>

+                                                                                                                                    <block>

+                                                                                                                                        <set>

+                                                                                                                                            <parameter name='right-vnf-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-instance-id`' />

+                                                                                                                                        </set>

+                                                                                                                                        <break/>

+                                                                                                                                    </block>

+                                                                                                                                </outcome>

+                                                                                                                            </switch>

+                                                                                                                        </for>

+                                                                                                                        <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >

+                                                                                                                            <block>

+                                                                                                                                <switch test='`$right-vnf-instance-id

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`'>

+                                                                                                                                    <outcome value='true'>

+                                                                                                                                        <block>

+                                                                                                                                            <set>

+                                                                                                                                                <parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index'

+  value='`$right-vnf-index`' />

+                                                                                                                                            </set>

+                                                                                                                                            <break/>

+                                                                                                                                        </block>

+                                                                                                                                    </outcome>

+                                                                                                                                </switch>

+                                                                                                                            </block>

+                                                                                                                        </for>

+                                                                                                                        <block>

+                                                                                                                            <set>

+                                                                                                                                <parameter name='right-vnf-index'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index`' />

+                                                                                                                            </set>

+                                                                                                                            <for index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >

+                                                                                                                                <block>

+                                                                                                                                    <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >

+                                                                                                                                        <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>

+                                                                                                                                            <outcome value='true'>

+                                                                                                                                                <block>

+                                                                                                                                                    <set>

+                                                                                                                                                        <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />

+                                                                                                                                                    </set>

+                                                                                                                                                    <set>

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].lhs_vnf.'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.`' />

+                                                                                                                                                        <parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].rhs_vnf.'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />

+                                                                                                                                                    </set>

+                                                                                                                                                    <set>

+                                                                                                                                                        <parameter name='found-match' value='true' />

+                                                                                                                                                    </set>

+                                                                                                                                                    <break/>

+                                                                                                                                                </block>

+                                                                                                                                            </outcome>

+                                                                                                                                        </switch>

+                                                                                                                                    </for>

+                                                                                                                                    <switch test='`$found-match`'>

+                                                                                                                                        <outcome value='true'>

+                                                                                                                                            <break/>

+                                                                                                                                        </outcome>

+                                                                                                                                    </switch>

+                                                                                                                                </block>

+                                                                                                                            </for>

+                                                                                                                        </block>

+                                                                                                                    </block>

+                                                                                                                </outcome>

+                                                                                                                <outcome value='0'>

+                                                                                                                    <block>

+                                                                                                                        <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf_length`' >

+                                                                                                                            <switch test='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-path-sequence-id

+  == 1`'>

+                                                                                                                                <outcome value='true'>

+                                                                                                                                    <block>

+                                                                                                                                        <set>

+                                                                                                                                            <parameter name='right-vnf-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.vnf[$right-vnf-index].vnf-instance-id`' />

+                                                                                                                                        </set>

+                                                                                                                                        <break/>

+                                                                                                                                    </block>

+                                                                                                                                </outcome>

+                                                                                                                            </switch>

+                                                                                                                        </for>

+                                                                                                                        <for index='right-vnf-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list_length`' >

+                                                                                                                            <block>

+                                                                                                                                <switch test='`$right-vnf-instance-id

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`'>

+                                                                                                                                    <outcome value='true'>

+                                                                                                                                        <block>

+                                                                                                                                            <set>

+                                                                                                                                                <parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index'

+  value='`$right-vnf-index`' />

+                                                                                                                                            </set>

+                                                                                                                                            <break/>

+                                                                                                                                        </block>

+                                                                                                                                    </outcome>

+                                                                                                                                </switch>

+                                                                                                                            </block>

+                                                                                                                        </for>

+                                                                                                                        <block>

+                                                                                                                            <set>

+                                                                                                                                <parameter name='right-vnf-index'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index`' />

+                                                                                                                            </set>

+                                                                                                                            <for index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >

+                                                                                                                                <block>

+                                                                                                                                    <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >

+                                                                                                                                        <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>

+                                                                                                                                            <outcome value='true'>

+                                                                                                                                                <block>

+                                                                                                                                                    <set>

+                                                                                                                                                        <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />

+                                                                                                                                                    </set>

+                                                                                                                                                    <set>

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].lhs_vnf.'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.`' />

+                                                                                                                                                        <parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].rhs_vnf.'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.`' />

+                                                                                                                                                        <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />

+                                                                                                                                                    </set>

+                                                                                                                                                    <set>

+                                                                                                                                                        <parameter name='found-match' value='true' />

+                                                                                                                                                    </set>

+                                                                                                                                                    <break/>

+                                                                                                                                                </block>

+                                                                                                                                            </outcome>

+                                                                                                                                        </switch>

+                                                                                                                                    </for>

+                                                                                                                                    <switch test='`$found-match`'>

+                                                                                                                                        <outcome value='true'>

+                                                                                                                                            <break/>

+                                                                                                                                        </outcome>

+                                                                                                                                    </switch>

+                                                                                                                                </block>

+                                                                                                                            </for>

+                                                                                                                        </block>

+                                                                                                                    </block>

+                                                                                                                </outcome>

+                                                                                                                <outcome value='Other'>

+                                                                                                                    <block>

+                                                                                                                        <set>

+                                                                                                                            <parameter name='right-vnf-index'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].leftmost-vnf-index`' />

+                                                                                                                        </set>

+                                                                                                                        <for index='left-vnf-network-index' start='0' end='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >

+                                                                                                                            <block>

+                                                                                                                                <for silentFailure='true' index='right-vnf-network-index' start='0' end='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >

+                                                                                                                                    <switch test='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+  == $serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name`'>

+                                                                                                                                        <outcome value='true'>

+                                                                                                                                            <block>

+                                                                                                                                                <set>

+                                                                                                                                                    <parameter name='ps-index' value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length`' />

+                                                                                                                                                </set>

+                                                                                                                                                <set>

+                                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />

+                                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-service-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].service-instance-id`' />

+                                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vnf-instance-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-id`' />

+                                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].left-vf-module-id'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />

+                                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-service-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].service-instance-id`' />

+                                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vnf-instance-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-id`' />

+                                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].right-vf-module-id'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />

+                                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-name'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />

+                                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments[$ps-index].network-role'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />

+                                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].lhs_vnf.'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].forwarding-paths.forwarding-path[$left-fp-index].service-paths.service-path[$left-sp-index].service[0].vnfs.`' />

+                                                                                                                                                    <parameter name='serv-cust[$right-node-index].serv-insts[$right-serv-index].rhs_vnf.'

+  value='`$serv-cust[$right-node-index].serv-insts[$right-serv-index].forwarding-paths.forwarding-path[$right-fp-index].service-paths.service-path[$right-sp-index].service[0].vnfs.`' />

+                                                                                                                                                    <parameter name='serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length'

+  value='`$serv-cust[$left-node-index].serv-insts[$left-serv-index].path-segments_length + 1`' />

+                                                                                                                                                </set>

+                                                                                                                                                <set>

+                                                                                                                                                    <parameter name='found-match' value='true' />

+                                                                                                                                                </set>

+                                                                                                                                                <break/>

+                                                                                                                                            </block>

+                                                                                                                                        </outcome>

+                                                                                                                                    </switch>

+                                                                                                                                </for>

+                                                                                                                                <switch test='`$found-match`'>

+                                                                                                                                    <outcome value='true'>

+                                                                                                                                        <break/>

+                                                                                                                                    </outcome>

+                                                                                                                                </switch>

+                                                                                                                            </block>

+                                                                                                                        </for>

+                                                                                                                    </block>

+                                                                                                                </outcome>

+                                                                                                            </switch>

+                                                                                                        </for>

+                                                                                                    </for>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                        <switch test='`$found-match`'>

+                                                                                            <outcome value='true'>

+                                                                                                <break/>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </block>

+                                                                                </for>

+                                                                            </block>

+                                                                        </for>

+                                                                    </for>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </for>

+                        </block>

+                    </for>

+                </block>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/gpsd.log' />

+            </execute>

+            <set>

+                <parameter name='path-index' value='0' />

+            </set>

+            <for silentFailure='true' index='first-serv-index' start='0' end='`$serv-cust[0].serv-insts_length`' >

+                <switch test='`$serv-cust[0].serv-insts[$first-serv-index].path-segments_length`'>

+                    <outcome value=''>

+                        <block></block>

+                    </outcome>

+                    <outcome value='0'>

+                        <block></block>

+                    </outcome>

+                    <outcome value='Other'>

+                        <block>

+                            <set>

+                                <parameter name='cur-vnf-seq' value='1' />

+                            </set>

+                            <set>

+                                <parameter name='end-to-end-path' value='false' />

+                            </set>

+                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                                <parameter name="ctx-destination" value="tmp.service-path-instance-id" />

+                            </execute>

+                            <set>

+                                <parameter name='service-paths.service-path[$path-index].service-path-instance-id' value='`$tmp.service-path-instance-id`' />

+                                <parameter name='service-paths.service-path[$path-index].service-path-instance-name'

+  value='`$db.path-segment[0].path-name + $tmp.service-path-instance-id`' />

+                            </set>

+                            <switch test='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf_length`'>

+                                <outcome value=''>

+                                    <block>

+                                        <set>

+                                            <parameter name='service-paths.service-path[$path-index].service_length' value='1' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].service-instance-id'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].service-instance-id`' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].service-path-sequence-id'

+  value='1' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vnf-instance-id'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].left-vnf-instance-id`' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vnf-path-sequence-id'

+  value='`$cur-vnf-seq`' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].right-network-name'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-name`' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].right-network-role'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-role`' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vf-module-instance.vf-module-id'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].left-vf-module-id`' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf_length'

+  value='1' />

+                                        </set>

+                                        <set>

+                                            <parameter name='cur-vnf-seq' value='`$cur-vnf-seq + 1`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                                <outcome value='0'>

+                                    <block>

+                                        <set>

+                                            <parameter name='service-paths.service-path[$path-index].service_length' value='1' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].service-instance-id'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].service-instance-id`' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].service-path-sequence-id'

+  value='1' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vnf-instance-id'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].left-vnf-instance-id`' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vnf-path-sequence-id'

+  value='`$cur-vnf-seq`' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].right-network-name'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-name`' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].right-network-role'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-role`' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[0].vf-module-instance.vf-module-id'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].left-vf-module-id`' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf_length'

+  value='1' />

+                                        </set>

+                                        <set>

+                                            <parameter name='cur-vnf-seq' value='`$cur-vnf-seq + 1`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <block>

+                                        <set>

+                                            <parameter name='max-vnf-seq' value='-1' />

+                                            <parameter name='max-vnf-idx' value='-1' />

+                                        </set>

+                                        <set>

+                                            <parameter name='service-paths.service-path[$path-index].service_length' value='1' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].service-instance-id'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].service-instance-id`' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].service-path-sequence-id'

+  value='1' />

+                                        </set>

+                                        <for index='idx' start='0' end='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf_length`' >

+                                            <block>

+                                                <set>

+                                                    <parameter name='vnf-seq'

+  value='`$cur-vnf-seq + $serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vnf-instance-id'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].vnf-instance-id`' />

+                                                    <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vnf-path-sequence-id'

+  value='`$vnf-seq`' />

+                                                    <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].left-network-name'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].left-network-name`' />

+                                                    <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].left-network-role'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].left-network-role`' />

+                                                    <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].right-network-name'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].right-network-name`' />

+                                                    <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].right-network-role'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].right-network-role`' />

+                                                    <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vf-module-instance.vf-module-id'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />

+                                                </set>

+                                                <switch test='`$service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vnf-path-sequence-id

+  &gt; $max-vnf-seq`'>

+                                                    <outcome value='true'>

+                                                        <set>

+                                                            <parameter name='max-vnf-seq' value='`$service-paths.service-path[$path-index].service[0].vnfs.vnf[$idx].vnf-path-sequence-id`' />

+                                                            <parameter name='max-vnf-idx' value='`$idx`' />

+                                                        </set>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </for>

+                                        <set>

+                                            <parameter name='cur-vnf-seq'

+  value='`$cur-vnf-seq + $serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf_length`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$max-vnf-idx].right-network-name'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-name`' />

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf[$max-vnf-idx].right-network-role'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-role`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='service-paths.service-path[$path-index].service[0].vnfs.vnf_length'

+  value='`$serv-cust[0].serv-insts[$first-serv-index].lhs_vnf.vnf_length`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <set>

+                                <parameter name='next-service-instance-id' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].right-service-instance-id`' />

+                                <parameter name='prev-network-name' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-name`' />

+                                <parameter name='prev-network-role' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].network-role`' />

+                                <parameter name='next-vnf-instance-id' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].right-vnf-instance-id`' />

+                                <parameter name='next-vf-module-id' value='`$serv-cust[0].serv-insts[$first-serv-index].path-segments[0].right-vf-module-id`' />

+                            </set>

+                            <for index='node-index' start='1' end='`$serv-cust_length`' >

+                                <block>

+                                    <set>

+                                        <parameter name='found-match' value='false' />

+                                    </set>

+                                    <for index='serv-index' start='0' end='`$serv-cust[$node-index].serv-insts_length`' >

+                                        <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments_length`'>

+                                            <outcome value=''>

+                                                <switch test='`$node-index == $serv-cust_length - 1`'>

+                                                    <outcome value='false'>

+                                                        <block></block>

+                                                    </outcome>

+                                                    <outcome value='true'>

+                                                        <block>

+                                                            <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id

+  == $next-service-instance-id`'>

+                                                                <outcome value='true'>

+                                                                    <block>

+                                                                        <set>

+                                                                            <parameter name='found-match' value='true' />

+                                                                        </set>

+                                                                        <switch test='`$node-index == $serv-cust_length - 1`'>

+                                                                            <outcome value='true'>

+                                                                                <block>

+                                                                                    <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`'>

+                                                                                        <outcome value=''>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'

+  value='`$next-vnf-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'

+  value='`$cur-vnf-seq`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'

+  value='`$next-vf-module-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='1' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='0'>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'

+  value='`$next-vnf-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'

+  value='`$cur-vnf-seq`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'

+  value='`$next-vf-module-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='1' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='Other'>

+                                                                                            <block>

+                                                                                                <set>

+                                                                                                    <parameter name='min-vnf-seq' value='99' />

+                                                                                                    <parameter name='min-vnf-idx' value='99' />

+                                                                                                </set>

+                                                                                                <set>

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                                </set>

+                                                                                                <for index='idx' start='0' end='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`' >

+                                                                                                    <block>

+                                                                                                        <set>

+                                                                                                            <parameter name='vnf-seq'

+  value='`$cur-vnf-seq + $serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />

+                                                                                                        </set>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vnf-instance-id`' />

+                                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id'

+  value='`$vnf-seq`' />

+                                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].left-network-name`' />

+                                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].left-network-role`' />

+                                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].right-network-name`' />

+                                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].right-network-role`' />

+                                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vf-module-instance.vf-module-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />

+                                                                                                        </set>

+                                                                                                        <switch test='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id

+  &lt; $min-vnf-seq`'>

+                                                                                                            <outcome value='true'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='min-vnf-seq' value='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id`' />

+                                                                                                                    <parameter name='min-vnf-idx' value='`$idx`' />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                        </switch>

+                                                                                                    </block>

+                                                                                                </for>

+                                                                                                <set>

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$min-vnf-idx].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$min-vnf-idx].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                                </set>

+                                                                                                <set>

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`' />

+                                                                                                </set>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                    <set>

+                                                                                        <parameter name='end-to-end-path' value='true' />

+                                                                                    </set>

+                                                                                </block>

+                                                                            </outcome>

+                                                                            <outcome value='false'>

+                                                                                <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`'>

+                                                                                    <outcome value=''>

+                                                                                        <block>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'

+  value='`$cur-vnf-seq`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='1' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='max-vnf-seq' value='`$cur-vnf-seq`' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='0'>

+                                                                                        <block>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'

+  value='`$cur-vnf-seq`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='1' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='max-vnf-seq' value='`$cur-vnf-seq`' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='Other'>

+                                                                                        <block>

+                                                                                            <set>

+                                                                                                <parameter name='max-vnf-seq' value='-1' />

+                                                                                                <parameter name='max-vnf-idx' value='-1' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                            </set>

+                                                                                            <for index='idx' start='0' end='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf_length`' >

+                                                                                                <block>

+                                                                                                    <set>

+                                                                                                        <parameter name='vnf-seq'

+  value='`$cur-vnf-seq + $serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />

+                                                                                                    </set>

+                                                                                                    <set>

+                                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vnf-instance-id`' />

+                                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id'

+  value='`$vnf-seq`' />

+                                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].left-network-name`' />

+                                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].left-network-role`' />

+                                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].right-network-name`' />

+                                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].right-network-role`' />

+                                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vf-module-instance.vf-module-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />

+                                                                                                    </set>

+                                                                                                    <switch test='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id

+  &gt; $max-vnf-seq`'>

+                                                                                                        <outcome value='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='max-vnf-seq' value='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id`' />

+                                                                                                                <parameter name='max-vnf-idx' value='`$idx`' />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                    </switch>

+                                                                                                </block>

+                                                                                            </for>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$max-vnf-idx].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$max-vnf-idx].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf_length`' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                        <break/>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                            <outcome value='0'>

+                                                <switch test='`$node-index == $serv-cust_length - 1`'>

+                                                    <outcome value='false'>

+                                                        <block></block>

+                                                    </outcome>

+                                                    <outcome value='true'>

+                                                        <block>

+                                                            <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id

+  == $next-service-instance-id`'>

+                                                                <outcome value='true'>

+                                                                    <block>

+                                                                        <set>

+                                                                            <parameter name='found-match' value='true' />

+                                                                        </set>

+                                                                        <switch test='`$node-index == $serv-cust_length - 1`'>

+                                                                            <outcome value='true'>

+                                                                                <block>

+                                                                                    <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`'>

+                                                                                        <outcome value=''>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'

+  value='`$next-vnf-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'

+  value='`$cur-vnf-seq`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'

+  value='`$next-vf-module-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='1' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='0'>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'

+  value='`$next-vnf-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'

+  value='`$cur-vnf-seq`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'

+  value='`$next-vf-module-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='1' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='Other'>

+                                                                                            <block>

+                                                                                                <set>

+                                                                                                    <parameter name='min-vnf-seq' value='99' />

+                                                                                                    <parameter name='min-vnf-idx' value='99' />

+                                                                                                </set>

+                                                                                                <set>

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                                </set>

+                                                                                                <for index='idx' start='0' end='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`' >

+                                                                                                    <block>

+                                                                                                        <set>

+                                                                                                            <parameter name='vnf-seq'

+  value='`$cur-vnf-seq + $serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />

+                                                                                                        </set>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vnf-instance-id`' />

+                                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id'

+  value='`$vnf-seq`' />

+                                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].left-network-name`' />

+                                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].left-network-role`' />

+                                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].right-network-name`' />

+                                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].right-network-role`' />

+                                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vf-module-instance.vf-module-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />

+                                                                                                        </set>

+                                                                                                        <switch test='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id

+  &lt; $min-vnf-seq`'>

+                                                                                                            <outcome value='true'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='min-vnf-seq' value='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id`' />

+                                                                                                                    <parameter name='min-vnf-idx' value='`$idx`' />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                        </switch>

+                                                                                                    </block>

+                                                                                                </for>

+                                                                                                <set>

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$min-vnf-idx].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$min-vnf-idx].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                                </set>

+                                                                                                <set>

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`' />

+                                                                                                </set>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                    <set>

+                                                                                        <parameter name='end-to-end-path' value='true' />

+                                                                                    </set>

+                                                                                </block>

+                                                                            </outcome>

+                                                                            <outcome value='false'>

+                                                                                <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`'>

+                                                                                    <outcome value=''>

+                                                                                        <block>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'

+  value='`$cur-vnf-seq`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='1' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='max-vnf-seq' value='`$cur-vnf-seq`' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='0'>

+                                                                                        <block>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'

+  value='`$cur-vnf-seq`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='1' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='max-vnf-seq' value='`$cur-vnf-seq`' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='Other'>

+                                                                                        <block>

+                                                                                            <set>

+                                                                                                <parameter name='max-vnf-seq' value='-1' />

+                                                                                                <parameter name='max-vnf-idx' value='-1' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                            </set>

+                                                                                            <for index='idx' start='0' end='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf_length`' >

+                                                                                                <block>

+                                                                                                    <set>

+                                                                                                        <parameter name='vnf-seq'

+  value='`$cur-vnf-seq + $serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />

+                                                                                                    </set>

+                                                                                                    <set>

+                                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vnf-instance-id`' />

+                                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id'

+  value='`$vnf-seq`' />

+                                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].left-network-name`' />

+                                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].left-network-role`' />

+                                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].right-network-name`' />

+                                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].right-network-role`' />

+                                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vf-module-instance.vf-module-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />

+                                                                                                    </set>

+                                                                                                    <switch test='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id

+  &gt; $max-vnf-seq`'>

+                                                                                                        <outcome value='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='max-vnf-seq' value='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id`' />

+                                                                                                                <parameter name='max-vnf-idx' value='`$idx`' />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                    </switch>

+                                                                                                </block>

+                                                                                            </for>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$max-vnf-idx].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$max-vnf-idx].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf_length`' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                        <break/>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <block>

+                                                    <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id

+  == $next-service-instance-id`'>

+                                                        <outcome value='true'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name='found-match' value='true' />

+                                                                </set>

+                                                                <switch test='`$node-index == $serv-cust_length - 1`'>

+                                                                    <outcome value='true'>

+                                                                        <block>

+                                                                            <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`'>

+                                                                                <outcome value=''>

+                                                                                    <set>

+                                                                                        <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'

+  value='`$next-vnf-instance-id`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'

+  value='`$cur-vnf-seq`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'

+  value='`$next-vf-module-id`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='1' />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                                <outcome value='0'>

+                                                                                    <set>

+                                                                                        <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'

+  value='`$next-vnf-instance-id`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'

+  value='`$cur-vnf-seq`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'

+  value='`$next-vf-module-id`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='1' />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                                <outcome value='Other'>

+                                                                                    <block>

+                                                                                        <set>

+                                                                                            <parameter name='min-vnf-seq' value='99' />

+                                                                                            <parameter name='min-vnf-idx' value='99' />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                        </set>

+                                                                                        <for index='idx' start='0' end='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`' >

+                                                                                            <block>

+                                                                                                <set>

+                                                                                                    <parameter name='vnf-seq'

+  value='`$cur-vnf-seq + $serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />

+                                                                                                </set>

+                                                                                                <set>

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vnf-instance-id`' />

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id'

+  value='`$vnf-seq`' />

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].left-network-name`' />

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].left-network-role`' />

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].right-network-name`' />

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].right-network-role`' />

+                                                                                                    <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vf-module-instance.vf-module-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />

+                                                                                                </set>

+                                                                                                <switch test='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id

+  &lt; $min-vnf-seq`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='min-vnf-seq' value='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id`' />

+                                                                                                            <parameter name='min-vnf-idx' value='`$idx`' />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </for>

+                                                                                        <set>

+                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$min-vnf-idx].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$min-vnf-idx].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`' />

+                                                                                        </set>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                            <set>

+                                                                                <parameter name='end-to-end-path' value='true' />

+                                                                            </set>

+                                                                        </block>

+                                                                    </outcome>

+                                                                    <outcome value='false'>

+                                                                        <switch test='`$serv-cust[$node-index].serv-insts[$serv-index].rhs_vnf.vnf_length`'>

+                                                                            <outcome value=''>

+                                                                                <block>

+                                                                                    <set>

+                                                                                        <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'

+  value='`$cur-vnf-seq`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='1' />

+                                                                                    </set>

+                                                                                    <set>

+                                                                                        <parameter name='max-vnf-seq' value='`$cur-vnf-seq`' />

+                                                                                    </set>

+                                                                                </block>

+                                                                            </outcome>

+                                                                            <outcome value='0'>

+                                                                                <block>

+                                                                                    <set>

+                                                                                        <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vnf-path-sequence-id'

+  value='`$cur-vnf-seq`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-name'

+  value='`$prev-network-name`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].left-network-role'

+  value='`$prev-network-role`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[0].vf-module-instance'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='1' />

+                                                                                    </set>

+                                                                                    <set>

+                                                                                        <parameter name='max-vnf-seq' value='`$cur-vnf-seq`' />

+                                                                                    </set>

+                                                                                </block>

+                                                                            </outcome>

+                                                                            <outcome value='Other'>

+                                                                                <block>

+                                                                                    <set>

+                                                                                        <parameter name='max-vnf-seq' value='-1' />

+                                                                                        <parameter name='max-vnf-idx' value='-1' />

+                                                                                    </set>

+                                                                                    <set>

+                                                                                        <parameter name='service-paths.service-path[$path-index].service_length'

+  value='`$service-paths.service-path[$path-index].service_length + 1`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].service-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].service-instance-id`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].service-path-sequence-id'

+  value='`$node-index + 1`' />

+                                                                                    </set>

+                                                                                    <for index='idx' start='0' end='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf_length`' >

+                                                                                        <block>

+                                                                                            <set>

+                                                                                                <parameter name='vnf-seq'

+  value='`$cur-vnf-seq + $serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vnf-path-sequence-id - 1`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-instance-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vnf-instance-id`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id'

+  value='`$vnf-seq`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].left-network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].left-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].left-network-role`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].right-network-name`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].right-network-role`' />

+                                                                                                <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vf-module-instance.vf-module-id'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf[$idx].vf-module-instance.vf-module-id`' />

+                                                                                            </set>

+                                                                                            <switch test='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id

+  &gt; $max-vnf-seq`'>

+                                                                                                <outcome value='true'>

+                                                                                                    <set>

+                                                                                                        <parameter name='max-vnf-seq' value='`$service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$idx].vnf-path-sequence-id`' />

+                                                                                                        <parameter name='max-vnf-idx' value='`$idx`' />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </for>

+                                                                                    <set>

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$max-vnf-idx].right-network-name'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf[$max-vnf-idx].right-network-role'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />

+                                                                                    </set>

+                                                                                    <set>

+                                                                                        <parameter name='service-paths.service-path[$path-index].service[$node-index].vnfs.vnf_length'

+  value='`$serv-cust[$node-index].serv-insts[$serv-index].lhs_vnf.vnf_length`' />

+                                                                                    </set>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </outcome>

+                                                                </switch>

+                                                                <break/>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                    <switch test='`$found-match`'>

+                                        <outcome value='false'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='service-paths.service-path[$path-index].service-path-instance-id' value='' />

+                                                </set>

+                                                <break/>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='next-service-instance-id' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].right-service-instance-id`' />

+                                        <parameter name='prev-network-name' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-name`' />

+                                        <parameter name='prev-network-role' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].network-role`' />

+                                        <parameter name='next-vnf-instance-id' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].right-vnf-instance-id`' />

+                                        <parameter name='next-vf-module-id' value='`$serv-cust[$node-index].serv-insts[$serv-index].path-segments[0].right-vf-module-id`' />

+                                    </set>

+                                    <set>

+                                        <parameter name='cur-vnf-seq' value='`$max-vnf-seq + 1`' />

+                                    </set>

+                                </block>

+                            </for>

+                            <set>

+                                <parameter name='path-index' value='`$path-index + 1`' />

+                            </set>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+            <set>

+                <parameter name='service-paths.service-path_length' value='`$path-index`' />

+            </set>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-create-composite-path.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-create-composite-path.xml
new file mode 100755
index 0000000..76b8df4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-create-composite-path.xml
@@ -0,0 +1,627 @@
+<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='getpathsegment-create-composite-path' mode='sync'>

+        <block>

+            <set>

+                <parameter name='match-type' value='network-name' />

+            </set>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from PATH_SEGMENT WHERE service_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid

+    AND path_name = $db.forwarding-path[$path-index].path-name ORDER BY path_segment_seq'

+  pfx='db.path-segment[]'>

+                <outcome value='failure'>

+                    <block>

+                        <set>

+                            <parameter name='error-message' value="`'System error reading PATH_SEGMENT table for uuid '

+  + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid

+  + ' and path '

+  + $db.forwarding-path[$path-index].path-name`" />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block>

+                        <set>

+                            <parameter name='error-message' value="`'No entries in PATH_SEGMENT table for uuid '

+  + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid

+  + ' and path '

+  + $db.forwarding-path[$path-index].path-name`" />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='success'>

+                    <block>

+                        <set>

+                            <parameter name='serv-cust_length' value='0' />

+                        </set>

+                        <for index='path-segment-index' start='0' end='`$db.path-segment_length`' >

+                            <block>

+                                <set>

+                                    <parameter name='serv-cust[$serv-cust_length].id' value='`$db.path-segment[$path-segment-index].source-association-uuid`' />

+                                    <parameter name='serv-cust_length' value='`$serv-cust_length + 1`' />

+                                </set>

+                                <switch test='`$path-segment-index == ( $db.path-segment_length - 1) `'>

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='serv-cust[$serv-cust_length].id' value='`$db.path-segment[$path-segment-index].target-association-uuid`' />

+                                            <parameter name='serv-cust_length' value='`$serv-cust_length + 1`' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                        <for index='serv-index' start='0' end='`$serv-cust_length`' >

+                            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='select sm.invariant_uuid

+    from SERVICE_PROXY sp, SERVICE_MODEL sm

+    where sp.source_service_uuid = sm.service_uuid

+    and sp.customization_uuid = $serv-cust[$serv-index].id'

+  pfx='db'>

+                                <outcome value='failure'>

+                                    <set>

+                                        <parameter name='error-message' value="`'Failure reading SERVICE_PROXY and SERVICE_MODEL for customization uuid ' + $serv-cust[$serv-index].id`" />

+                                    </set>

+                                </outcome>

+                                <outcome value='not-found'>

+                                    <set>

+                                        <parameter name='error-message' value="`'Cannot find entries in SERVICE_PROXY and SERVICE_MODEL for customization uuid ' + $serv-cust[$serv-index].id`" />

+                                    </set>

+                                </outcome>

+                                <outcome value='success'>

+                                    <set>

+                                        <parameter name='serv-cust[$serv-index].inv-id' value='`$db.invariant-uuid`' />

+                                    </set>

+                                </outcome>

+                            </get-resource>

+                        </for>

+                        <for index='serv-index' start='0' end='`$serv-cust_length`' >

+                            <switch test='`$serv-cust[$serv-index].inv-id`'>

+                                <outcome value=''>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="custom-query"

+	key="format = 'resource'"

+	force="true"

+	local-only="false"

+	pfx="aai.service-instances" >

+                                        <parameter name="start[0]" value="`'nodes/service-instances?model-invariant-id=' + $serv-cust[$serv-index].inv-id`" />

+                                        <parameter name="start_length" value="1" />

+                                        <outcome value='not-found'>

+                                            <set>

+                                                <parameter name='error-message' value="`'Unable to find runtime service instances for invariant UUID ' + $serv-cust[$serv-index].inv-id`" />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='failure'>

+                                            <set>

+                                                <parameter name='error-message' value="`'System error finding runtime service instances for customization UUID ' + $serv-cust[$serv-index].inv-id`" />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='success'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='tmp.serv-insts_length' value='0' />

+                                                </set>

+                                                <for index='runtime-index' start='0' end='`$aai.service-instances.results_length`' >

+                                                    <switch test='`$aai.service-instances.results[$runtime-index].service-instance.orchestration-status`'>

+                                                        <outcome value='Active'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name='serv-inst.service-instance-id' value='`$aai.service-instances.results[$runtime-index].service-instance.service-instance-id`' />

+                                                                </set>

+                                                                <switch test='`$output-global-customer-id`'>

+                                                                    <outcome value=''>

+                                                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource_and_url'"

+      force="true"

+      local-only="false"

+      pfx="tmp.AnAI-data.si">

+                                                                            <parameter name="start[0]" value="`'nodes/service-instance/' + $serv-inst.service-instance-id `" />

+                                                                            <parameter name="start_length" value="1" />

+                                                                            <outcome value='success'>

+                                                                                <block>

+                                                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                                                        <parameter name="original_string" value="`$tmp.AnAI-data.si.results[0].url`" />

+                                                                                        <parameter name="regex" value="/"/>

+                                                                                        <parameter name="limit" value="11" />

+                                                                                        <parameter name="ctx_memory_result_key" value="split" />

+                                                                                    </execute>

+                                                                                    <set>

+                                                                                        <parameter name='output-global-customer-id' value='`$split[6]`' />

+                                                                                        <parameter name='output-service-type' value='`$split[9]`' />

+                                                                                        <parameter name='output-service-role' value='`$tmp.AnAI-data.si.results[0].service-instance.service-role`' />

+                                                                                    </set>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </save>

+                                                                    </outcome>

+                                                                </switch>

+                                                                <block>

+                                                                    <switch test='`$runtime-index`'>

+                                                                        <outcome value='0'>

+                                                                            <set>

+                                                                                <parameter name='service.service-role' value='`$aai.service-instances.results[0].service-instance.service-role`' />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                    <set>

+                                                                        <parameter name='mdsal-service.' value='' />

+                                                                        <parameter name='serv-inst.api' value='' />

+                                                                    </set>

+                                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                        <parameter name="source" value="`$prop.restapi.service`"/>

+                                                                        <parameter name="outputPath" value="tmp.service-url"/>

+                                                                        <parameter name="target" value="{service-instance-id}"/>

+                                                                        <parameter name="replacement" value="`$serv-inst.service-instance-id`"/>

+                                                                    </execute>

+                                                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />

+                                                                        <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                                        <parameter name='format' value='json' />

+                                                                        <parameter name='httpMethod' value='GET' />

+                                                                        <parameter name="responsePrefix" value="mdsal-service" />

+                                                                        <outcome value='success'>

+                                                                            <block>

+                                                                                <switch test='`$mdsal-service.service[0].service-data.vnfs.vnf_length`'>

+                                                                                    <outcome value=''>

+                                                                                        <set>

+                                                                                            <parameter name='data-error' value="`'Service instance ' + $si.service-instance-id + ' has no VNFs, skipping'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='0'>

+                                                                                        <set>

+                                                                                            <parameter name='data-error' value="`'Service instance ' + $si.service-instance-id + ' has no VNFs, skipping'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='1'>

+                                                                                        <block>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-grapi' mode='sync' ></call>

+                                                                                            <set>

+                                                                                                <parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].' value='`$serv-inst.`' />

+                                                                                            </set>

+                                                                                            <set>

+                                                                                                <parameter name='tmp.serv-insts_length' value='`$tmp.serv-insts_length + 1`' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='Other'>

+                                                                                        <switch test='`$mdsal-service.service[0].service-data.forwarding-paths.forwarding-path_length`'>

+                                                                                            <outcome value=''>

+                                                                                                <set>

+                                                                                                    <parameter name='data-error' value="`'Service instance ' + $serv-inst.service-instance-id + ' has multiple VNFs but no forwarding paths were found'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='0'>

+                                                                                                <set>

+                                                                                                    <parameter name='data-error' value="`'Service instance ' + $serv-inst.service-instance-id + ' has multiple VNFs but no forwarding paths were found'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='Other'>

+                                                                                                <block>

+                                                                                                    <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-grapi' mode='sync' ></call>

+                                                                                                    <set>

+                                                                                                        <parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].' value='`$serv-inst.`' />

+                                                                                                    </set>

+                                                                                                    <set>

+                                                                                                        <parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].forwarding-paths.'

+  value='`$mdsal-service.service[0].service-data.forwarding-paths.`' />

+                                                                                                    </set>

+                                                                                                    <set>

+                                                                                                        <parameter name='tmp.serv-insts_length' value='`$tmp.serv-insts_length + 1`' />

+                                                                                                    </set>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value='failure'>

+                                                                            <block>

+                                                                                <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-vnfapi' mode='sync' ></call>

+                                                                                <switch test='`$serv-inst.api`'>

+                                                                                    <outcome value=''>

+                                                                                        <set>

+                                                                                            <parameter name='data-error' value="`'Failure finding service instance ' + $si.service-instance-id + ' in either GENERIC-REOURCE-API or VNF-API'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='Other'>

+                                                                                        <block>

+                                                                                            <switch test='`$serv-inst.vnf-list_length`'>

+                                                                                                <outcome value=''>

+                                                                                                    <set>

+                                                                                                        <parameter name='data-error' value="`'Service instance ' + $si.service-instance-id + ' has no VNFs, skipping'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='0'>

+                                                                                                    <set>

+                                                                                                        <parameter name='data-error' value="`'Service instance ' + $si.service-instance-id + ' has no VNFs, skipping'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='1'>

+                                                                                                    <block>

+                                                                                                        <set>

+                                                                                                            <parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].' value='`$serv-inst.`' />

+                                                                                                        </set>

+                                                                                                        <set>

+                                                                                                            <parameter name='tmp.serv-insts_length' value='`$tmp.serv-insts_length + 1`' />

+                                                                                                        </set>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                                <outcome value='Other'>

+                                                                                                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT forwarding_path_service_instance_id from SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING WHERE simple_service_instance_id = $serv-inst.service-instance-id'

+  pfx='db.mapped-service-instance-id'>

+                                                                                                        <outcome value='failure'>

+                                                                                                            <set>

+                                                                                                                <parameter name='data-error' value="System error reading SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING table" />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                        <outcome value='not-found'>

+                                                                                                            <set>

+                                                                                                                <parameter name='data-error' value="`'No entry in SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING table for service instance ' + $serv-inst.service-instance-id`" />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                        <outcome value='success'>

+                                                                                                            <block>

+                                                                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                                                                    <parameter name="source" value="`$prop.restapi.service`"/>

+                                                                                                                    <parameter name="outputPath" value="tmp.service-url"/>

+                                                                                                                    <parameter name="target" value="{service-instance-id}"/>

+                                                                                                                    <parameter name="replacement" value="`$db.mapped-service-instance-id.forwarding-path-service-instance-id`"/>

+                                                                                                                </execute>

+                                                                                                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                                                                    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />

+                                                                                                                    <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                                                                                    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                                                                                    <parameter name='format' value='json' />

+                                                                                                                    <parameter name='httpMethod' value='GET' />

+                                                                                                                    <parameter name="responsePrefix" value="mdsal-service" />

+                                                                                                                    <outcome value='failure'>

+                                                                                                                        <set>

+                                                                                                                            <parameter name='data-error' value="`'Cannot find service instance ' + $db.mapped-service-instance-id.forwarding-path-service-instance-id + ' in MD-SAL'`" />

+                                                                                                                        </set>

+                                                                                                                    </outcome>

+                                                                                                                    <outcome value='success'>

+                                                                                                                        <switch test='`$mdsal-service.service[0].service-data.forwarding-paths.forwarding-path_length`'>

+                                                                                                                            <outcome value=''>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='data-error' value="`'Service instance ' + $db.mapped-service-instance-id.forwarding-path-service-instance-id + ' has multiple VNFs but no forwarding paths were found'`" />

+                                                                                                                                </set>

+                                                                                                                            </outcome>

+                                                                                                                            <outcome value='0'>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='data-error' value="`'Service instance ' + $db.mapped-service-instance-id.forwarding-path-service-instance-id + ' has multiple VNFs but no forwarding paths were found'`" />

+                                                                                                                                </set>

+                                                                                                                            </outcome>

+                                                                                                                            <outcome value='Other'>

+                                                                                                                                <block>

+                                                                                                                                    <set>

+                                                                                                                                        <parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].' value='`$serv-inst.`' />

+                                                                                                                                    </set>

+                                                                                                                                    <set>

+                                                                                                                                        <parameter name='serv-cust[$serv-index].serv-insts[$tmp.serv-insts_length].forwarding-paths.'

+  value='`$mdsal-service.service[0].service-data.forwarding-paths.`' />

+                                                                                                                                    </set>

+                                                                                                                                    <set>

+                                                                                                                                        <parameter name='tmp.serv-insts_length' value='`$tmp.serv-insts_length + 1`' />

+                                                                                                                                    </set>

+                                                                                                                                </block>

+                                                                                                                            </outcome>

+                                                                                                                        </switch>

+                                                                                                                    </outcome>

+                                                                                                                </execute>

+                                                                                                            </block>

+                                                                                                        </outcome>

+                                                                                                    </get-resource>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </execute>

+                                                                    <set>

+                                                                        <parameter name='serv-inst.' value='' />

+                                                                    </set>

+                                                                </block>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                                <set>

+                                                    <parameter name='serv-cust[$serv-index].serv-insts_length' value='`$tmp.serv-insts_length`' />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                    </save>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-composite-match-pair' mode='sync' ></call>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                            <parameter name='filename' value='/var/tmp/gpsx.log' />

+                        </execute>

+                        <switch test='`$service-paths.service-path_length`'>

+                            <outcome value=''>

+                                <block></block>

+                            </outcome>

+                            <outcome value='0'>

+                                <block></block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block>

+                                    <set>

+                                        <parameter name='found-service-path' value='false' />

+                                    </set>

+                                    <for index='sp-index' start='0' end='`$service-paths.service-path_length`' >

+                                        <switch test='`$service-paths.service-path[$sp-index].service_length == $serv-cust_length`'>

+                                            <outcome value='true'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='found-service-path' value='true' />

+                                                    </set>

+                                                    <break/>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                    <switch test='`$found-service-path`'>

+                                        <outcome value='false'>

+                                            <set>

+                                                <parameter name='error-message' value="`'No service paths found for path name '

+  + $db.path-segment[0].path-name`" />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='true'>

+                                            <block>

+                                                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                                                    <parameter name="ctx-destination" value="forwarding-path.forwarding-path-id" />

+                                                </execute>

+                                                <set>

+                                                    <parameter name='forwarding-path.forwarding-path-name' value='`$db.path-segment[0].path-name`' />

+                                                    <parameter name='forwarding-path.forwarding-path-type' value='Service' />

+                                                    <parameter name='forwarding-path.onap-model-information.model-name' value='`$db.path-segment[0].path-name`' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='forwarding-path.service-paths.' value='`$service-paths.`' />

+                                                </set>

+                                                <switch test='`$output-service-instance-id`'>

+                                                    <outcome value=''>

+                                                        <block>

+                                                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                                                                <parameter name="ctx-destination" value="tmp.service-instance-id" />

+                                                            </execute>

+                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                <parameter name="source" value="`$prop.restapi.service`"/>

+                                                                <parameter name="outputPath" value="tmp.service-url"/>

+                                                                <parameter name="target" value="{service-instance-id}"/>

+                                                                <parameter name="replacement" value="`$tmp.service-instance-id`"/>

+                                                            </execute>

+                                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.csm.serviceinstance.templatefile`" />

+                                                                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />

+                                                                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                                <parameter name='format' value='json' />

+                                                                <parameter name='httpMethod' value='PUT' />

+                                                                <parameter name="responsePrefix" value="mdsal-sr" />

+                                                                <outcome value='failure'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure creating service instance in MD-SAL" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </execute>

+                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="service-instance" 

+	key="customer.global-customer-id = $output-global-customer-id

+	  AND service-subscription.service-type = $output-service-type

+	  AND service-instance.service-instance-id = $tmp.service-instance-id" >

+                                                                <parameter name="service-instance-id" value="`$tmp.service-instance-id`" />

+                                                                <parameter name="global-customer-id" value="`$output-global-customer-id`" />

+                                                                <parameter name="service-type" value="`$output-service-type`" />

+                                                                <parameter name="service-role" value="`$output-service-role`" />

+                                                                <outcome value='failure'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure creating service instance in AAI" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure creating service instance in AAI" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </save>

+                                                            <set>

+                                                                <parameter name='output-service-instance-id' value='`$tmp.service-instance-id`' />

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='0'>

+                                                        <block>

+                                                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                                                                <parameter name="ctx-destination" value="tmp.service-instance-id" />

+                                                            </execute>

+                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                <parameter name="source" value="`$prop.restapi.service`"/>

+                                                                <parameter name="outputPath" value="tmp.service-url"/>

+                                                                <parameter name="target" value="{service-instance-id}"/>

+                                                                <parameter name="replacement" value="`$tmp.service-instance-id`"/>

+                                                            </execute>

+                                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.csm.serviceinstance.templatefile`" />

+                                                                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />

+                                                                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                                <parameter name='format' value='json' />

+                                                                <parameter name='httpMethod' value='PUT' />

+                                                                <parameter name="responsePrefix" value="mdsal-sr" />

+                                                                <outcome value='failure'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure creating service instance in MD-SAL" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </execute>

+                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="service-instance" 

+	key="customer.global-customer-id = $output-global-customer-id

+	  AND service-subscription.service-type = $output-service-type

+	  AND service-instance.service-instance-id = $tmp.service-instance-id" >

+                                                                <parameter name="service-instance-id" value="`$tmp.service-instance-id`" />

+                                                                <parameter name="global-customer-id" value="`$output-global-customer-id`" />

+                                                                <parameter name="service-type" value="`$output-service-type`" />

+                                                                <parameter name="service-role" value="`$output-service-role`" />

+                                                                <outcome value='failure'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure creating service instance in AAI" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure creating service instance in AAI" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </save>

+                                                            <set>

+                                                                <parameter name='output-service-instance-id' value='`$tmp.service-instance-id`' />

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                    <parameter name="source" value="`$prop.restapi.forwarding-path`"/>

+                                                    <parameter name="outputPath" value="tmp.fp-url"/>

+                                                    <parameter name="target" value="{service-instance-id}"/>

+                                                    <parameter name="replacement" value="`$output-service-instance-id`"/>

+                                                </execute>

+                                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.forwardingpath.templatefile`" />

+                                                    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.fp-url + $forwarding-path.forwarding-path-id`' />

+                                                    <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                    <parameter name='format' value='json' />

+                                                    <parameter name='httpMethod' value='PUT' />

+                                                    <parameter name="responsePrefix" value="mdsal-fp" />

+                                                    <outcome value='failure'>

+                                                        <set>

+                                                            <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <set>

+                                                            <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />

+                                                        </set>

+                                                    </outcome>

+                                                </execute>

+                                                <for index='sp-index' start='0' end='`$service-paths.service-path_length`' >

+                                                    <switch test='`$service-paths.service-path[$sp-index].service_length == $serv-cust_length`'>

+                                                        <outcome value='true'>

+                                                            <block>

+                                                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="forwarding-path" 

+	key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id" >

+                                                                    <parameter name="forwarding-path-id" value="`$forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id`" />

+                                                                    <parameter name="forwarding-path-name" value="`$forwarding-path.service-paths.service-path[$sp-index].service-path-instance-name`" />

+                                                                    <parameter name="selflink" value="`'/restconf/config/GENERIC-RESOURCE-API:services/service/'

+  + $output-service-instance-id

+  + '/forwarding-paths/forwarding-path/'

+  + $forwarding-path.forwarding-path-id

+  + '/services-paths/service-path/'

+  + $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id`" />

+                                                                    <outcome value='failure'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="Failure writing forwarding-path to AAI" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="Failure writing forwarding-path to AAI" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </save>

+                                                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="forwarding-path:relationship-list"

+   key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id"

+   force="true" pfx="tmp.AnAI-data">

+                                                                    <parameter name="relationship-list.relationship[0].related-to" value="service-instance" />

+                                                                    <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/business/customers/customer/'

+        + $output-global-customer-id

+        + '/service-subscriptions/service-subscription/'

+        + $output-service-type

+        + '/service-instances/service-instance/'

+        + $output-service-instance-id`" />

+                                                                    <outcome value='failure'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </save>

+                                                                <for index='service-index' start='0' end='`$service-paths.service-path[$sp-index].service_length`' >

+                                                                    <for index='vnf-index' start='0' end='`$forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf_length`' >

+                                                                        <block>

+                                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="forwarder" 

+	key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id

+	  AND forwarder.sequence = $forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf[$vnf-index].vnf-path-sequence-id" >

+                                                                                <parameter name="sequence" value="`$forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf[$vnf-index].vnf-path-sequence-id`" />

+                                                                                <outcome value='failure'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="Failure writing forwarder to AAI" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                                <outcome value='not-found'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="Failure writing forwarder to AAI" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                            </save>

+                                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="forwarder:relationship-list"

+   key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[$sp-index].service-path-instance-id

+     AND forwarder.sequence = $forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf[$vnf-index].vnf-path-sequence-id"

+   force="true" pfx="tmp.AnAI-data">

+                                                                                <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />

+                                                                                <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/generic-vnfs/generic-vnf/'

+        + $forwarding-path.service-paths.service-path[$sp-index].service[$service-index].vnfs.vnf[$vnf-index].vnf-instance-id`" />

+                                                                                <outcome value='failure'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                                <outcome value='not-found'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                            </save>

+                                                                        </block>

+                                                                    </for>

+                                                                </for>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </get-resource>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-create-simple-path.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-create-simple-path.xml
new file mode 100755
index 0000000..71d3c77
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-create-simple-path.xml
@@ -0,0 +1,749 @@
+<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='getpathsegment-create-simple-path' mode='sync'>

+        <block>

+            <set>

+                <parameter name='match-type' value='network-name' />

+            </set>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from PATH_SEGMENT WHERE service_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid

+    AND path_name = $db.forwarding-path[$path-index].path-name ORDER BY path_segment_seq'

+  pfx='db.path-segment[]'>

+                <outcome value='failure'>

+                    <block>

+                        <set>

+                            <parameter name='error-message' value="`'System error reading PATH_SEGMENT table for uuid '

+  + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid

+  + ' and path '

+  + $db.forwarding-path[$path-index].path-name`" />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block>

+                        <set>

+                            <parameter name='error-message' value="`'No entries in PATH_SEGMENT table for uuid '

+  + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid

+  + ' and path '

+  + $db.forwarding-path[$path-index].path-name`" />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='success'>

+                    <block>

+                        <set>

+                            <parameter name='vnf-ids_length' value='0' />

+                        </set>

+                        <for index='path-segment-index' start='0' end='`$db.path-segment_length`' >

+                            <block>

+                                <set>

+                                    <parameter name='vnf-ids[$vnf-ids_length]' value='`$db.path-segment[$path-segment-index].source-association-uuid`' />

+                                    <parameter name='vnf-ids_length' value='`$vnf-ids_length + 1`' />

+                                </set>

+                                <switch test='`$path-segment-index == ( $db.path-segment_length - 1) `'>

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='vnf-ids[$vnf-ids_length]' value='`$db.path-segment[$path-segment-index].target-association-uuid`' />

+                                            <parameter name='vnf-ids_length' value='`$vnf-ids_length + 1`' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="custom-query"

+	key="format = 'resource'"

+	force="true"

+	local-only="false"

+	pfx="aai.service-instances" >

+                            <parameter name="start[0]" value="`'nodes/service-instances?model-invariant-id=' + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`" />

+                            <parameter name="start_length" value="1" />

+                            <outcome value='not-found'>

+                                <block>

+                                    <set>

+                                        <parameter name='error-message' value="`'No run-time service instances in AAI for invariant uuid '

+  + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`" />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='failure'>

+                                <block>

+                                    <set>

+                                        <parameter name='error-message' value="`'System error calling AAI to get run-time service instances for invariant uuid '

+  + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`" />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='success'>

+                                <block>

+                                    <set>

+                                        <parameter name='runtime_length' value='0' />

+                                    </set>

+                                    <for index='runtime-index' start='0' end='`$aai.service-instances.results_length`' >

+                                        <switch test='`$aai.service-instances.results[$runtime-index].service-instance.orchestration-status`'>

+                                            <outcome value='Active'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='runtime-ids[$runtime_length]' value='`$aai.service-instances.results[$runtime-index].service-instance.service-instance-id`' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='runtime_length' value='`$runtime_length + 1`' />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                    <set>

+                                        <parameter name='serv-insts_length' value='0' />

+                                    </set>

+                                    <for index='runtime-index' start='0' end='`$runtime_length`' >

+                                        <block>

+                                            <set>

+                                                <parameter name='serv-inst.service-instance-id' value='`$runtime-ids[$runtime-index]`' />

+                                            </set>

+                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource_and_url'"

+      force="true"

+      local-only="false"

+      pfx="tmp.AnAI-data.si">

+                                                <parameter name="start[0]" value="`'nodes/service-instance/' + $serv-inst.service-instance-id `" />

+                                                <parameter name="start_length" value="1" />

+                                                <outcome value='success'>

+                                                    <block>

+                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                            <parameter name="original_string" value="`$tmp.AnAI-data.si.results[0].url`" />

+                                                            <parameter name="regex" value="/"/>

+                                                            <parameter name="limit" value="11" />

+                                                            <parameter name="ctx_memory_result_key" value="split" />

+                                                        </execute>

+                                                        <set>

+                                                            <parameter name='output-global-customer-id' value='`$split[6]`' />

+                                                            <parameter name='output-service-type' value='`$split[9]`' />

+                                                            <parameter name='output-service-role' value='`$tmp.AnAI-data.si.results[0].service-instance.service-role`' />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                            </save>

+                                            <set>

+                                                <parameter name='mdsal-service.' value='' />

+                                                <parameter name='serv-inst.api' value='' />

+                                            </set>

+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                <parameter name="source" value="`$prop.restapi.service`"/>

+                                                <parameter name="outputPath" value="tmp.service-url"/>

+                                                <parameter name="target" value="{service-instance-id}"/>

+                                                <parameter name="replacement" value="`$serv-inst.service-instance-id`"/>

+                                            </execute>

+                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />

+                                                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                <parameter name='format' value='json' />

+                                                <parameter name='httpMethod' value='GET' />

+                                                <parameter name="responsePrefix" value="mdsal-service" />

+                                                <outcome value='success'>

+                                                    <block>

+                                                        <set>

+                                                            <parameter name='found-path' value='false' />

+                                                        </set>

+                                                        <for silentFailure='true' index='fp-index' start='0' end='`$mdsal-service.service[0].service-data.forwarding-paths.forwarding-path_length`' >

+                                                            <switch test='`$mdsal-service.service[0].service-data.forwarding-paths.forwarding-path[$fp-index].forwarding-path-name

+  == $db.path-segment[0].path-name`'>

+                                                                <outcome value='true'>

+                                                                    <block>

+                                                                        <set>

+                                                                            <parameter name='found-path' value='true' />

+                                                                        </set>

+                                                                        <break/>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </for>

+                                                        <switch test='`$found-path`'>

+                                                            <outcome value='false'>

+                                                                <block>

+                                                                    <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-grapi' mode='sync' ></call>

+                                                                    <set>

+                                                                        <parameter name='serv-insts[$serv-insts_length].' value='`$serv-inst.`' />

+                                                                    </set>

+                                                                    <set>

+                                                                        <parameter name='serv-insts_length' value='`$serv-insts_length + 1`' />

+                                                                    </set>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='failure'>

+                                                    <block>

+                                                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='select forwarding_path_service_instance_id

+    from SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING

+    where simple_service_instance_id = $serv-inst.service-instance-id'

+  pfx='db.sitcim'>

+                                                            <outcome value='not-found'>

+                                                                <block>

+                                                                    <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-vnfapi' mode='sync' ></call>

+                                                                    <switch test='`$serv-inst.api`'>

+                                                                        <outcome value=''>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`'Failure finding service instance ' + $serv-inst.service-instance-id + ' in either GENERIC-REOURCE-API or VNF-API'`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='Other'>

+                                                                            <block>

+                                                                                <set>

+                                                                                    <parameter name='serv-insts[$serv-insts_length].' value='`$serv-inst.`' />

+                                                                                </set>

+                                                                                <set>

+                                                                                    <parameter name='serv-insts_length' value='`$serv-insts_length + 1`' />

+                                                                                </set>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                            </outcome>

+                                                        </get-resource>

+                                                    </block>

+                                                </outcome>

+                                            </execute>

+                                        </block>

+                                    </for>

+                                    <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-simple-match-pair' mode='sync' ></call>

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                                        <parameter name='filename' value='/var/tmp/gps.log' />

+                                    </execute>

+                                    <for index='serv-index' start='0' end='`$serv-insts_length`' >

+                                        <switch test='`$serv-insts[$serv-index].api`'>

+                                            <outcome value='GR'>

+                                                <switch test='`$serv-insts[$serv-index].path-segments_length`'>

+                                                    <outcome value=''>

+                                                        <block></block>

+                                                    </outcome>

+                                                    <outcome value='0'>

+                                                        <block></block>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <block>

+                                                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                                                                <parameter name="ctx-destination" value="forwarding-path.forwarding-path-id" />

+                                                            </execute>

+                                                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                                                                <parameter name="ctx-destination" value="forwarding-path.service-paths.service-path[0].service-path-instance-id" />

+                                                            </execute>

+                                                            <set>

+                                                                <parameter name='forwarding-path.forwarding-path-name' value='`$db.path-segment[0].path-name`' />

+                                                                <parameter name='forwarding-path.forwarding-path-type' value='VNF' />

+                                                                <parameter name='forwarding-path.onap-model-information.model-name' value='`$db.path-segment[0].path-name`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path_length' value='1' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service-path-instance-name'

+  value='`$db.path-segment[0].path-name + $forwarding-path.service-paths.service-path[0].service-path-instance-id`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service_length' value='1' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].service-instance-id'

+  value='`$serv-insts[$serv-index].service-instance-id`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].service-path-sequence-id' value='1' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length'

+  value='`$serv-insts[$serv-index].path-segments_length`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vnf-path-sequence-id'

+  value='1' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vnf-instance-id'

+  value='`$serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].right-network-name'

+  value='`$serv-insts[$serv-index].path-segments[0].network-name`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].right-network-role'

+  value='`$serv-insts[$serv-index].path-segments[0].network-role`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vf-module-instance.vf-module-id'

+  value='`$serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='prev-network-name' value='`$serv-insts[$serv-index].path-segments[0].network-name`' />

+                                                                <parameter name='prev-network-role' value='`$serv-insts[$serv-index].path-segments[0].network-role`' />

+                                                            </set>

+                                                            <for index='ps-index' start='1' end='`$serv-insts[$serv-index].path-segments_length`' >

+                                                                <block>

+                                                                    <set>

+                                                                        <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vnf-path-sequence-id'

+  value='`$ps-index + 1`' />

+                                                                        <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vnf-instance-id'

+  value='`$serv-insts[$serv-index].path-segments[$ps-index].left-vnf-instance-id`' />

+                                                                        <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].left-network-name'

+  value='`$prev-network-name`' />

+                                                                        <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].left-network-role'

+  value='`$prev-network-role`' />

+                                                                        <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].right-network-name'

+  value='`$serv-insts[$serv-index].path-segments[$ps-index].network-name`' />

+                                                                        <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].right-network-role'

+  value='`$serv-insts[$serv-index].path-segments[$ps-index].network-role`' />

+                                                                        <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vf-module-instance.vf-module-id'

+  value='`$serv-insts[$serv-index].path-segments[$ps-index].left-vf-module-id`' />

+                                                                    </set>

+                                                                    <set>

+                                                                        <parameter name='prev-network-name' value='`$serv-insts[$serv-index].path-segments[$ps-index].network-name`' />

+                                                                        <parameter name='prev-network-role' value='`$serv-insts[$serv-index].path-segments[$ps-index].network-role`' />

+                                                                    </set>

+                                                                </block>

+                                                            </for>

+                                                            <set>

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vnf-path-sequence-id'

+  value='`$ps-index + 2`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vnf-instance-id'

+  value='`$serv-insts[$serv-index].path-segments[$ps-index].right-vnf-instance-id`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].left-network-name'

+  value='`$prev-network-name`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].left-network-role'

+  value='`$prev-network-role`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vf-module-instance.vf-module-id'

+  value='`$serv-insts[$serv-index].path-segments[$ps-index].right-vf-module-id`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length'

+  value='`$serv-insts[$serv-index].path-segments_length + 1`' />

+                                                            </set>

+                                                            <switch test='`$serv-insts[$serv-index].api`'>

+                                                                <outcome value='GR'>

+                                                                    <set>

+                                                                        <parameter name='tmp.service-instance-id' value='`$serv-insts[$serv-index].service-instance-id`' />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='VNF'>

+                                                                    <block>

+                                                                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                                                                            <parameter name="ctx-destination" value="tmp.service-instance-id" />

+                                                                        </execute>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                            <parameter name="source" value="`$prop.restapi.service`"/>

+                                                                            <parameter name="outputPath" value="tmp.service-url"/>

+                                                                            <parameter name="target" value="{service-instance-id}"/>

+                                                                            <parameter name="replacement" value="`$tmp.service-instance-id`"/>

+                                                                        </execute>

+                                                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.csm.serviceinstance.templatefile`" />

+                                                                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />

+                                                                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                                            <parameter name='format' value='json' />

+                                                                            <parameter name='httpMethod' value='PUT' />

+                                                                            <parameter name="responsePrefix" value="mdsal-sr" />

+                                                                            <outcome value='failure'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="Failure creating service instance in MD-SAL" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                        </execute>

+                                                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="service-instance" 

+	key="customer.global-customer-id = $output-global-customer-id

+	  AND service-subscription.service-type = $output-service-type

+	  AND service-instance.service-instance-id = $tmp.service-instance-id" >

+                                                                            <parameter name="service-instance-id" value="`$tmp.service-instance-id`" />

+                                                                            <parameter name="global-customer-id" value="`$output-global-customer-id`" />

+                                                                            <parameter name="service-type" value="`$output-service-type`" />

+                                                                            <parameter name="service-role" value="`$output-service-role`" />

+                                                                            <outcome value='failure'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="Failure creating service instance in AAI" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                            <outcome value='not-found'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="Failure creating service instance in AAI" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                        </save>

+                                                                        <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"

+key="INSERT INTO SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING

+  (simple_service_instance_id, forwarding_path_service_instance_id)

+  VALUES ( $serv-insts[$serv-index].service-instance-id , $tmp.service-instance-id )" ></save>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                <parameter name="source" value="`$prop.restapi.forwarding-path`"/>

+                                                                <parameter name="outputPath" value="tmp.fp-url"/>

+                                                                <parameter name="target" value="{service-instance-id}"/>

+                                                                <parameter name="replacement" value="`$tmp.service-instance-id`"/>

+                                                            </execute>

+                                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.forwardingpath.templatefile`" />

+                                                                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.fp-url + $forwarding-path.forwarding-path-id`' />

+                                                                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                                <parameter name='format' value='json' />

+                                                                <parameter name='httpMethod' value='PUT' />

+                                                                <parameter name="responsePrefix" value="mdsal-fp" />

+                                                                <outcome value='failure'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </execute>

+                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="forwarding-path" 

+	key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id" >

+                                                                <parameter name="forwarding-path-id" value="`$forwarding-path.service-paths.service-path[0].service-path-instance-id`" />

+                                                                <parameter name="forwarding-path-name" value="`$forwarding-path.service-paths.service-path[0].service-path-instance-name`" />

+                                                                <parameter name="selflink" value="`'/restconf/config/GENERIC-RESOURCE-API:services/service/'

+  + $tmp.service-instance-id

+  + '/forwarding-paths/forwarding-path/'

+  + $forwarding-path.forwarding-path-id

+  + '/services-paths/service-path/'

+  + $forwarding-path.service-paths.service-path[0].service-path-instance-id`" />

+                                                                <outcome value='failure'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure writing forwarding-path to AAI" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure writing forwarding-path to AAI" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </save>

+                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="forwarding-path:relationship-list"

+   key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id"

+   force="true" pfx="tmp.AnAI-data">

+                                                                <parameter name="relationship-list.relationship[0].related-to" value="service-instance" />

+                                                                <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/business/customers/customer/'

+        + $output-global-customer-id

+        + '/service-subscriptions/service-subscription/'

+        + $output-service-type

+        + '/service-instances/service-instance/'

+        + $tmp.service-instance-id`" />

+                                                                <outcome value='failure'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </save>

+                                                            <for index='vnf-index' start='0' end='`$forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length`' >

+                                                                <block>

+                                                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="forwarder" 

+	key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id AND forwarder.sequence = $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id" >

+                                                                        <parameter name="sequence" value="`$forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id`" />

+                                                                        <outcome value='failure'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="Failure writing forwarder to AAI" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="Failure writing forwarder to AAI" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </save>

+                                                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="forwarder:relationship-list"

+   key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id

+     AND forwarder.sequence = $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id"

+   force="true" pfx="tmp.AnAI-data">

+                                                                        <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />

+                                                                        <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/generic-vnfs/generic-vnf/'

+        + $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-instance-id`" />

+                                                                        <outcome value='failure'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </save>

+                                                                </block>

+                                                            </for>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                            <outcome value='VNF'>

+                                                <switch test='`$serv-insts[$serv-index].path-segments_length`'>

+                                                    <outcome value=''>

+                                                        <block></block>

+                                                    </outcome>

+                                                    <outcome value='0'>

+                                                        <block></block>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <block>

+                                                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                                                                <parameter name="ctx-destination" value="forwarding-path.forwarding-path-id" />

+                                                            </execute>

+                                                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                                                                <parameter name="ctx-destination" value="forwarding-path.service-paths.service-path[0].service-path-instance-id" />

+                                                            </execute>

+                                                            <set>

+                                                                <parameter name='forwarding-path.forwarding-path-name' value='`$db.path-segment[0].path-name`' />

+                                                                <parameter name='forwarding-path.forwarding-path-type' value='VNF' />

+                                                                <parameter name='forwarding-path.onap-model-information.model-name' value='`$db.path-segment[0].path-name`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path_length' value='1' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service-path-instance-name'

+  value='`$db.path-segment[0].path-name + $forwarding-path.service-paths.service-path[0].service-path-instance-id`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service_length' value='1' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].service-instance-id'

+  value='`$serv-insts[$serv-index].service-instance-id`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].service-path-sequence-id' value='1' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length'

+  value='`$serv-insts[$serv-index].path-segments_length`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vnf-path-sequence-id'

+  value='1' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vnf-instance-id'

+  value='`$serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].right-network-name'

+  value='`$serv-insts[$serv-index].path-segments[0].network-name`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].right-network-role'

+  value='`$serv-insts[$serv-index].path-segments[0].network-role`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vf-module-instance.vf-module-id'

+  value='`$serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='prev-network-name' value='`$serv-insts[$serv-index].path-segments[0].network-name`' />

+                                                                <parameter name='prev-network-role' value='`$serv-insts[$serv-index].path-segments[0].network-role`' />

+                                                            </set>

+                                                            <for index='ps-index' start='1' end='`$serv-insts[$serv-index].path-segments_length`' >

+                                                                <block>

+                                                                    <set>

+                                                                        <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vnf-path-sequence-id'

+  value='`$ps-index + 1`' />

+                                                                        <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vnf-instance-id'

+  value='`$serv-insts[$serv-index].path-segments[$ps-index].left-vnf-instance-id`' />

+                                                                        <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].left-network-name'

+  value='`$prev-network-name`' />

+                                                                        <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].left-network-role'

+  value='`$prev-network-role`' />

+                                                                        <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].right-network-name'

+  value='`$serv-insts[$serv-index].path-segments[$ps-index].network-name`' />

+                                                                        <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].right-network-role'

+  value='`$serv-insts[$serv-index].path-segments[$ps-index].network-role`' />

+                                                                        <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vf-module-instance.vf-module-id'

+  value='`$serv-insts[$serv-index].path-segments[$ps-index].left-vf-module-id`' />

+                                                                    </set>

+                                                                    <set>

+                                                                        <parameter name='prev-network-name' value='`$serv-insts[$serv-index].path-segments[$ps-index].network-name`' />

+                                                                        <parameter name='prev-network-role' value='`$serv-insts[$serv-index].path-segments[$ps-index].network-role`' />

+                                                                    </set>

+                                                                </block>

+                                                            </for>

+                                                            <set>

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vnf-path-sequence-id'

+  value='`$ps-index + 2`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vnf-instance-id'

+  value='`$serv-insts[$serv-index].path-segments[$ps-index].right-vnf-instance-id`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].left-network-name'

+  value='`$prev-network-name`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].left-network-role'

+  value='`$prev-network-role`' />

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vf-module-instance.vf-module-id'

+  value='`$serv-insts[$serv-index].path-segments[$ps-index].right-vf-module-id`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length'

+  value='`$serv-insts[$serv-index].path-segments_length + 1`' />

+                                                            </set>

+                                                            <switch test='`$serv-insts[$serv-index].api`'>

+                                                                <outcome value='GR'>

+                                                                    <set>

+                                                                        <parameter name='tmp.service-instance-id' value='`$serv-insts[$serv-index].service-instance-id`' />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='VNF'>

+                                                                    <block>

+                                                                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                                                                            <parameter name="ctx-destination" value="tmp.service-instance-id" />

+                                                                        </execute>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                            <parameter name="source" value="`$prop.restapi.service`"/>

+                                                                            <parameter name="outputPath" value="tmp.service-url"/>

+                                                                            <parameter name="target" value="{service-instance-id}"/>

+                                                                            <parameter name="replacement" value="`$tmp.service-instance-id`"/>

+                                                                        </execute>

+                                                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.csm.serviceinstance.templatefile`" />

+                                                                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />

+                                                                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                                            <parameter name='format' value='json' />

+                                                                            <parameter name='httpMethod' value='PUT' />

+                                                                            <parameter name="responsePrefix" value="mdsal-sr" />

+                                                                            <outcome value='failure'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="Failure creating service instance in MD-SAL" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                        </execute>

+                                                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="service-instance" 

+	key="customer.global-customer-id = $output-global-customer-id

+	  AND service-subscription.service-type = $output-service-type

+	  AND service-instance.service-instance-id = $tmp.service-instance-id" >

+                                                                            <parameter name="service-instance-id" value="`$tmp.service-instance-id`" />

+                                                                            <parameter name="global-customer-id" value="`$output-global-customer-id`" />

+                                                                            <parameter name="service-type" value="`$output-service-type`" />

+                                                                            <parameter name="service-role" value="`$output-service-role`" />

+                                                                            <outcome value='failure'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="Failure creating service instance in AAI" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                            <outcome value='not-found'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="Failure creating service instance in AAI" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                        </save>

+                                                                        <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"

+key="INSERT INTO SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING

+  (simple_service_instance_id, forwarding_path_service_instance_id)

+  VALUES ( $serv-insts[$serv-index].service-instance-id , $tmp.service-instance-id )" ></save>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                <parameter name="source" value="`$prop.restapi.forwarding-path`"/>

+                                                                <parameter name="outputPath" value="tmp.fp-url"/>

+                                                                <parameter name="target" value="{service-instance-id}"/>

+                                                                <parameter name="replacement" value="`$tmp.service-instance-id`"/>

+                                                            </execute>

+                                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.forwardingpath.templatefile`" />

+                                                                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.fp-url + $forwarding-path.forwarding-path-id`' />

+                                                                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                                <parameter name='format' value='json' />

+                                                                <parameter name='httpMethod' value='PUT' />

+                                                                <parameter name="responsePrefix" value="mdsal-fp" />

+                                                                <outcome value='failure'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </execute>

+                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="forwarding-path" 

+	key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id" >

+                                                                <parameter name="forwarding-path-id" value="`$forwarding-path.service-paths.service-path[0].service-path-instance-id`" />

+                                                                <parameter name="forwarding-path-name" value="`$forwarding-path.service-paths.service-path[0].service-path-instance-name`" />

+                                                                <parameter name="selflink" value="`'/restconf/config/GENERIC-RESOURCE-API:services/service/'

+  + $tmp.service-instance-id

+  + '/forwarding-paths/forwarding-path/'

+  + $forwarding-path.forwarding-path-id

+  + '/services-paths/service-path/'

+  + $forwarding-path.service-paths.service-path[0].service-path-instance-id`" />

+                                                                <outcome value='failure'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure writing forwarding-path to AAI" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure writing forwarding-path to AAI" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </save>

+                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="forwarding-path:relationship-list"

+   key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id"

+   force="true" pfx="tmp.AnAI-data">

+                                                                <parameter name="relationship-list.relationship[0].related-to" value="service-instance" />

+                                                                <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/business/customers/customer/'

+        + $output-global-customer-id

+        + '/service-subscriptions/service-subscription/'

+        + $output-service-type

+        + '/service-instances/service-instance/'

+        + $tmp.service-instance-id`" />

+                                                                <outcome value='failure'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </save>

+                                                            <for index='vnf-index' start='0' end='`$forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length`' >

+                                                                <block>

+                                                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="forwarder" 

+	key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id AND forwarder.sequence = $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id" >

+                                                                        <parameter name="sequence" value="`$forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id`" />

+                                                                        <outcome value='failure'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="Failure writing forwarder to AAI" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="Failure writing forwarder to AAI" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </save>

+                                                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="forwarder:relationship-list"

+   key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id

+     AND forwarder.sequence = $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id"

+   force="true" pfx="tmp.AnAI-data">

+                                                                        <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />

+                                                                        <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/generic-vnfs/generic-vnf/'

+        + $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-instance-id`" />

+                                                                        <outcome value='failure'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </save>

+                                                                </block>

+                                                            </for>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </save>

+                    </block>

+                </outcome>

+            </get-resource>

+            <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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-populate-from-grapi.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-populate-from-grapi.xml
new file mode 100755
index 0000000..1ae609a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-populate-from-grapi.xml
@@ -0,0 +1,145 @@
+<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='getpathsegment-populate-from-grapi' mode='sync'>

+        <block>

+            <switch test='`$vnf-ids_length`'>

+                <outcome value=''>

+                    <block>

+                        <for silentFailure='true' index='vnf-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf_length`' >

+                            <block>

+                                <set>

+                                    <parameter name='vnf-network-list_length' value='0' />

+                                </set>

+                                <set>

+                                    <parameter name='vnf-ids-index' value='`$vnf-index`' />

+                                </set>

+                                <block>

+                                    <set>

+                                        <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-id' value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-id`' />

+                                    </set>

+                                    <for silentFailure='true' index='vnf-network-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >

+                                        <for silentFailure='true' index='vf-module-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                                            <for silentFailure='true' index='vm-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                                <for silentFailure='true' index='vm-network-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-index].vm-networks.vm-network_length`' >

+                                                    <switch test='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role

+  == $mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-index].vm-networks.vm-network[$vm-network-index].network-role`'>

+                                                        <outcome value='true'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].network-name'

+  value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name`' />

+                                                                    <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].network-role'

+  value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`' />

+                                                                    <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].vf-module-id'

+  value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`' />

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name='vnf-network-list_length' value='`$vnf-network-list_length + 1`' />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                            </for>

+                                        </for>

+                                    </for>

+                                    <set>

+                                        <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list_length' value='`$vnf-network-list_length`' />

+                                    </set>

+                                </block>

+                            </block>

+                        </for>

+                        <set>

+                            <parameter name='serv-inst.api' value='GR' />

+                        </set>

+                        <set>

+                            <parameter name='serv-inst.vnf-list_length'

+  value='`$mdsal-service.service[0].service-data.vnfs.vnf_length`' />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name='mismatch' value='false' />

+                        </set>

+                        <for silentFailure='true' index='vnf-ids-index' start='0' end='`$vnf-ids_length`' >

+                            <block>

+                                <set>

+                                    <parameter name='vnf-network-list_length' value='0' />

+                                </set>

+                                <for silentFailure='true' index='vnf-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf_length`' >

+                                    <switch test='`$vnf-ids[$vnf-ids-index] == $mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.onap-model-information.model-customization-uuid`'>

+                                        <outcome value='true'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-id' value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-id`' />

+                                                </set>

+                                                <for silentFailure='true' index='vnf-network-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >

+                                                    <for silentFailure='true' index='vf-module-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                                                        <for silentFailure='true' index='vm-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                                            <for silentFailure='true' index='vm-network-index' start='0' end='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-index].vm-networks.vm-network_length`' >

+                                                                <switch test='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role

+  == $mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-index].vm-networks.vm-network[$vm-network-index].network-role`'>

+                                                                    <outcome value='true'>

+                                                                        <block>

+                                                                            <set>

+                                                                                <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].network-name'

+  value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name`' />

+                                                                                <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].network-role'

+  value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`' />

+                                                                                <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list[$vnf-network-list_length].vf-module-id'

+  value='`$mdsal-service.service[0].service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`' />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='vnf-network-list_length' value='`$vnf-network-list_length + 1`' />

+                                                                            </set>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </for>

+                                                        </for>

+                                                    </for>

+                                                </for>

+                                                <set>

+                                                    <parameter name='serv-inst.vnf-list[$vnf-ids-index].vnf-network-list_length' value='`$vnf-network-list_length`' />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </for>

+                                <switch test='`$vnf-network-list_length == 0`'>

+                                    <outcome value='true'>

+                                        <block>

+                                            <set>

+                                                <parameter name='matching-error' value="`'Unable to find VNF with customization UUID of ' + $vnf-ids[vnf-ids-index] + ' for service instance ' + $serv-inst.service-instance-id`" />

+                                            </set>

+                                            <set>

+                                                <parameter name='mismatch' value='true' />

+                                            </set>

+                                            <break/>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                        <switch test='`$mismatch`'>

+                            <outcome value='false'>

+                                <block>

+                                    <set>

+                                        <parameter name='serv-inst.api' value='GR' />

+                                    </set>

+                                    <set>

+                                        <parameter name='serv-inst.vnf-list_length'

+  value='`$mdsal-service.service[0].service-data.vnfs.vnf_length`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-populate-from-vnfapi.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-populate-from-vnfapi.xml
new file mode 100755
index 0000000..e84e426
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-populate-from-vnfapi.xml
@@ -0,0 +1,569 @@
+<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='getpathsegment-populate-from-vnfapi' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name="serv-inst.api" value= ""/>

+            </set>

+            <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' />

+                <outcome value='success'>

+                    <block>

+                        <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: read properties file."/>

+                        </record>

+                    </block>

+                </outcome>

+                <outcome value='failure'>

+                    <block>

+                        <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: Could not read properties file."/>

+                            <parameter name="field3" value='`$prop.restapi.pm.getpolicy.templatefile`'/>

+                        </record>

+                        <set>

+                            <parameter name="serv-inst.api" value= ""/>

+                            <parameter name="error-message" value="Could not read properties file" />

+                        </set>

+                    </block>

+                </outcome>

+            </execute>

+            <switch test='`$serv-inst.service-instance-id`'>

+                <outcome value=''>

+                    <block>

+                        <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: input service-instance-id is not set"/>

+                        </record>

+                        <set>

+                            <parameter name="serv-inst.api" value= ""/>

+                            <parameter name="error-message" value="serv-inst.service-instance-id is not set" />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$match-type`'>

+                <outcome value=''>

+                    <block>

+                        <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: input match-type is not set"/>

+                        </record>

+                        <set>

+                            <parameter name="serv-inst.api" value= ""/>

+                            <parameter name="error-message" value="input match-type is not set" />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$vnf-ids_length`'>

+                <outcome value=''>

+                    <block>

+                        <set>

+                            <parameter name="path-type" value= "COMPOSITE"/>

+                        </set>

+                        <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: input vnf-ids_length is blank, this is a COMPOSITE path"/>

+                        </record>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name="path-type" value= "SIMPLE"/>

+                        </set>

+                        <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: input vnf-ids_length is NOT blank, this is a SIMPLE path"/>

+                        </record>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="vnfListIndex" value= "0"/>

+            </set>

+            <switch test='`$path-type`'>

+                <outcome value='SIMPLE'>

+                    <block>

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: Call AAI custom query vfModule-fromServiceInstance to get vf-module-ids"/>

+                        </record>

+                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource'"

+      force="true"

+      local-only="false"

+      pfx="tmp.AnAI-data.vf-module-ids">

+                            <parameter name="start[0]" value="`'/nodes/service-instances/service-instance?service-instance-id=' + $serv-inst.service-instance-id `" />

+                            <!--<parameter name="start[0]" value="`'/business/customers/customer/bgb-customer/service-subscriptions/service-subscription/bgb-service-type/service-instances' `" />-->

+                            <!--<parameter name="start[0]" value="`'/business/customers/customer/la-customer/service-subscriptions/service-subscription/la-service-type/service-instances' `" />-->

+                            <parameter name="start_length" value="1" />

+                            <parameter name="query" value="/query/vfModule-fromServiceInstance" />

+                            <!--<parameter name="query" value="/query/vnfs-fromServiceInstance" /> -->

+                            <outcome value='failure'>

+                                <block>

+                                    <set>

+                                        <parameter name="error-message" value="Failed call to AAI custom query: vfModule-fromServiceInstance" />

+                                        <parameter name="serv-inst.api" value= ""/>

+                                        <parameter name='tmp.vf-module-ids_length' value='0' />

+                                        <parameter name='tmp.vnf-instances_length' value='0' />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block>

+                                    <set>

+                                        <parameter name="error-message" value="No vfModules returned from AAI: vfModule-fromService-instance" />

+                                        <parameter name="serv-inst.api" value= ""/>

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='success'>

+                                <block>

+                                    <for index='vfModuleResultIndex' start='0' end='`$tmp.AnAI-data.vf-module-ids.results_length`' >

+                                        <set>

+                                            <parameter name="`'tmp.vf-module-ids[' + $vfModuleResultIndex + ']'`" value='`$tmp.AnAI-data.vf-module-ids.results[$vfModuleResultIndex].vf-module.vf-module-id`' />

+                                        </set>

+                                    </for>

+                                    <set>

+                                        <parameter name='tmp.vf-module-ids_length' value='`$tmp.AnAI-data.vf-module-ids.results_length`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </save>

+                        <set>

+                            <parameter name="tmp.triplet-list_length" value= "0" />

+                            <parameter name="tmp.tripletListIndex" value= "0" />

+                            <parameter name="tmp.vnf-instances_length" value= "0" />

+                            <parameter name="tmp.vnfInstancesIndex" value= "0" />

+                            <parameter name="tmp.mdsal-error-encountered" value= "false"/>

+                        </set>

+                        <for index='vfModuleIndex' start='0' end='`$tmp.vf-module-ids_length`' >

+                            <block>

+                                <set>

+                                    <parameter name="tmp.vnf-url" value="`'/restconf/config/VNF-API:vnfs/vnf-list/' + $tmp.vf-module-ids[$vfModuleIndex]`" />

+                                </set>

+                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vnf-url`' />

+                                    <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                    <parameter name='format' value='json' />

+                                    <parameter name='httpMethod' value='GET' />

+                                    <parameter name="responsePrefix" value="vnf-mdsal" />

+                                    <outcome value='failure'>

+                                        <block>

+                                            <set>

+                                                <parameter name="error-message" value="Failed to read vnf info from MD-SAL" />

+                                                <parameter name="serv-inst.api" value= ""/>

+                                                <parameter name="tmp.mdsal-error-encountered" value= "true"/>

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <block>

+                                            <set>

+                                                <parameter name="error-message" value="Cannot find vnf info in MD-SAL" />

+                                                <parameter name="serv-inst.api" value= ""/>

+                                                <parameter name="tmp.mdsal-error-encountered" value= "true"/>

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='success'>

+                                        <block>

+                                            <set>

+                                                <parameter name="`'tmp.vnf-instances[' + $tmp.vnfInstancesIndex + ']'`." value= '`$vnf-mdsal.vnf-list[0].`' />

+                                                <parameter name="genericVnfIdFound" value= 'false' />

+                                            </set>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: MDSAL vnf-instances vnf-id|generic-vnf-id: "/>

+                                                <parameter name="field3" value='`$tmp.vnf-instances[$tmp.vnfInstancesIndex].service-data.vnf-request-information.vnf-id`' />

+                                                <parameter name="field4" value='`$tmp.vnf-instances[$tmp.vnfInstancesIndex].service-data.vnf-request-information.generic-vnf-id`' />

+                                            </record>

+                                            <for index='tmp.tripletListIndex2' start='0' end='`$tmp.triplet-list_length`' >

+                                                <switch test='`$tmp.triplet-list[$tmp.tripletListIndex2].generic-vnf-id == $tmp.vnf-instances[$tmp.vnfInstancesIndex].service-data.vnf-request-information.generic-vnf-id`'>

+                                                    <outcome value='false'></outcome>

+                                                    <outcome value='true'>

+                                                        <set>

+                                                            <parameter name="genericVnfIdFound" value= 'true' />

+                                                        </set>

+                                                    </outcome>

+                                                </switch>

+                                            </for>

+                                            <switch test='`$genericVnfIdFound`'>

+                                                <outcome value='false'>

+                                                    <block>

+                                                        <set>

+                                                            <parameter name="`'tmp.triplet-list[' + $tmp.tripletListIndex + '].generic-vnf-id'`" value= '`$vnf-mdsal.vnf-list[0].service-data.vnf-request-information.generic-vnf-id`' />

+                                                            <parameter name="`'tmp.triplet-list[' + $tmp.tripletListIndex + '].vf-module-id'`" value= '`$tmp.vf-module-ids[$vfModuleIndex]`' />

+                                                            <parameter name="tmp.triplet-list_length" value= '`$tmp.triplet-list_length + 1`'/>

+                                                            <parameter name="tmp.tripletListIndex" value= '`$tmp.tripletListIndex + 1`'/>

+                                                        </set>

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: generic-vnf-id in NOT found in triplet-list, add it"/>

+                                                        </record>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='true'>

+                                                    <block>

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: generic-vnf-id is already in triplet-list, don't add it"/>

+                                                        </record>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                            <set>

+                                                <parameter name="tmp.vnfInstancesIndex" value= '`$tmp.vnfInstancesIndex + 1`'/>

+                                                <parameter name="tmp.vnf-instances_length" value= '`$tmp.vnf-instances_length + 1`'/>

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </execute>

+                            </block>

+                        </for>

+                        <switch test='`$tmp.mdsal-error-encountered`'>

+                            <outcome value='false'>

+                                <block>

+                                    <for index='tmp.tripletListIndex' start='0' end='`$tmp.triplet-list_length`' >

+                                        <block>

+                                            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="generic-vnf"

+        key="generic-vnf.vnf-id = $tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id"

+        pfx='aai.generic-vnf' local-only='false' >

+                                                <outcome value='success'>

+                                                    <switch test='`$aai.generic-vnf.model-customization-id`'>

+                                                        <outcome value=''>

+                                                            <block>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                    <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: model-customization-id is BLANK for vf-module-id|generic-vnf-id: "/>

+                                                                    <parameter name="field3" value='`$tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'/>

+                                                                    <parameter name="field4" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>

+                                                                </record>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                    <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: Set model-customization-id for vf-module-id|generic-vnf-id: "/>

+                                                                    <parameter name="field3" value='`$tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'/>

+                                                                    <parameter name="field4" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>

+                                                                    <parameter name="field5" value='`$aai.generic-vnf.model-customization-id`'/>

+                                                                </record>

+                                                                <set>

+                                                                    <parameter name="`'tmp.triplet-list[' + $tmp.tripletListIndex + '].model-customization-id'`" value= '`$aai.generic-vnf.model-customization-id`' />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value='not-found'>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: generic-vnf not found in AAI for generic-vnf-id: "/>

+                                                        <parameter name="field4" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>

+                                                    </record>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: unable to access AAI for generic-vnf-id: "/>

+                                                        <parameter name="field4" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>

+                                                    </record>

+                                                </outcome>

+                                            </get-resource>

+                                        </block>

+                                    </for>

+                                </block>

+                            </outcome>

+                            <outcome value='true'>

+                                <block></block>

+                            </outcome>

+                        </switch>

+                        <block>

+                            <for index='tmp.tripletListIndex' start='0' end='`$tmp.triplet-list_length`' >

+                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                    <parameter name="logger" value="message-log"/>

+                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                    <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: PRINT triplet-list | vf-module-id:generic-vnf-id:model-customization-id | "/>

+                                    <parameter name="field3" value='`$tmp.tripletListIndex`'/>

+                                    <parameter name="field4" value='`$tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'/>

+                                    <parameter name="field5" value='`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`'/>

+                                    <parameter name="field6" value='`$tmp.triplet-list[$tmp.tripletListIndex].model-customization-id`'/>

+                                </record>

+                            </for>

+                        </block>

+                        <for index='vnfIdIndex' start='0' end='`$vnf-ids_length`' >

+                            <block>

+                                <for index='tmp.tripletListIndex' start='0' end='`$tmp.triplet-list_length`' >

+                                    <block>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                            <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: vnfIdIndex:id | tripletListIndex:model-customization-id | : "/>

+                                            <parameter name="field3" value='`$vnfIdIndex`'/>

+                                            <parameter name="field4" value='`$vnf-ids[$vnfIdIndex]`'/>

+                                            <parameter name="field5" value='`$tmp.tripletListIndex`'/>

+                                            <parameter name="field6" value='`$tmp.triplet-list[$tmp.tripletListIndex].model-customization-id`'/>

+                                        </record>

+                                        <switch test='`$vnf-ids[$vnfIdIndex] == $tmp.triplet-list[$tmp.tripletListIndex].model-customization-id`'>

+                                            <outcome value='true'>

+                                                <block>

+                                                    <for index='vnfInstanceIndex' start='0' end='`$tmp.vnf-instances_length`' >

+                                                        <block>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: vnfIdIndex:id | vnfInstanceIndex:id | : "/>

+                                                                <parameter name="field3" value='`$vnfIdIndex`'/>

+                                                                <parameter name="field4" value='`$vnf-ids[$vnfIdIndex]`'/>

+                                                                <parameter name="field5" value='`$vnfInstanceIndex`'/>

+                                                                <parameter name="field6" value='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-request-information.vnf-id`'/>

+                                                            </record>

+                                                            <switch test='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-request-information.vnf-id == $tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'>

+                                                                <outcome value='true'>

+                                                                    <block>

+                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                            <parameter name="logger" value="message-log"/>

+                                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                            <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: MATCH for vnf-instances.vnf-id and triplet-list.vf-module-id: "/>

+                                                                            <parameter name="field3" value='`$tmp.triplet-list[$tmp.tripletListIndex].vf-module-id`'/>

+                                                                        </record>

+                                                                        <switch test='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length > 0`'>

+                                                                            <outcome value='true'>

+                                                                                <for index='vnfNetworksIndex' start='0' end='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`' >

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                            <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: MATCH for vnf-id and vnf-instances for vnf-id: "/>

+                                                                                            <parameter name="field3" value='`$vnf-ids[$vnfIdIndex]`'/>

+                                                                                            <parameter name="field4" value='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfnetworksIndex].`'/>

+                                                                                        </record>

+                                                                                        <set>

+                                                                                            <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].network-name" value= "`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfNetworksIndex].network-name`"/>

+                                                                                            <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].network-role" value= "`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfNetworksIndex].network-role`"/>

+                                                                                            <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].vf-module-id" value= "`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-request-information.vnf-id`"/>

+                                                                                            <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list_length" value= '`$vnfNetworksIndex + 1`'/>

+                                                                                        </set>

+                                                                                    </block>

+                                                                                </for>

+                                                                            </outcome>

+                                                                            <outcome value='false'>

+                                                                                <block>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                        <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: No vnf-networks found for vnf-id: "/>

+                                                                                        <parameter name="field3" value='`$tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-request-information.vnf-id`' />

+                                                                                    </record>

+                                                                                    <set>

+                                                                                        <parameter name='`tmp.vnf-instances[$vnfInstanceIndex].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length' value="0" />

+                                                                                    </set>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                        <set>

+                                                                            <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-id" value= "`$tmp.triplet-list[$tmp.tripletListIndex].generic-vnf-id`"/>

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name="vnfListIndex" value= '`$vnfListIndex + 1`'/>

+                                                                        </set>

+                                                                    </block>

+                                                                </outcome>

+                                                                <outcome value='false'></outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </for>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: MATCH for input vnf-id and triplet-list.model-customizaiton-id: "/>

+                                                        <parameter name="field3" value='`$vnf-ids[$vnfIdIndex]`'/>

+                                                    </record>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='false'></outcome>

+                                        </switch>

+                                    </block>

+                                </for>

+                            </block>

+                        </for>

+                    </block>

+                </outcome>

+                <outcome value='COMPOSITE'>

+                    <block>

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: Call AAI custom query vfModule-fromServiceInstance to get vf-module-ids"/>

+                        </record>

+                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource'"

+      force="true"

+      local-only="false"

+      pfx="tmp.AnAI-data.vf-module-ids">

+                            <parameter name="start[0]" value="`'/nodes/service-instances/service-instance?service-instance-id=' + $serv-inst.service-instance-id `" />

+                            <!--<parameter name="start[0]" value="`'/business/customers/customer/bgb-customer/service-subscriptions/service-subscription/bgb-service-type/service-instances' `" />-->

+                            <!--<parameter name="start[0]" value="`'/business/customers/customer/la-customer/service-subscriptions/service-subscription/la-service-type/service-instances' `" />-->

+                            <parameter name="start_length" value="1" />

+                            <parameter name="query" value="/query/vfModule-fromServiceInstance" />

+                            <!--<parameter name="query" value="/query/vnfs-fromServiceInstance" /> -->

+                            <outcome value='failure'>

+                                <block>

+                                    <set>

+                                        <parameter name="error-message" value="Failed call to AAI custom query: vfModule-fromServiceInstance" />

+                                        <parameter name="serv-inst.api" value= ""/>

+                                        <parameter name='tmp.vf-module-ids_length' value='0' />

+                                        <parameter name='tmp.vnf-instances_length' value='0' />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block>

+                                    <set>

+                                        <parameter name="error-message" value="No vfModules returned from AAI: vfModule-fromService-instance" />

+                                        <parameter name="serv-inst.api" value= ""/>

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='success'>

+                                <block>

+                                    <for index='vfModuleResultIndex' start='0' end='`$tmp.AnAI-data.vf-module-ids.results_length`' >

+                                        <set>

+                                            <parameter name="`'tmp.vf-module-ids[' + $vfModuleResultIndex + ']'`" value='`$tmp.AnAI-data.vf-module-ids.results[$vfModuleResultIndex].vf-module.vf-module-id`' />

+                                        </set>

+                                    </for>

+                                    <set>

+                                        <parameter name='tmp.vf-module-ids_length' value='`$tmp.AnAI-data.vf-module-ids.results_length`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </save>

+                        <for index='vfModuleIndex' start='0' end='`$tmp.vf-module-ids_length`' >

+                            <block>

+                                <set>

+                                    <parameter name="tmp.vnf-url" value="`'/restconf/config/VNF-API:vnfs/vnf-list/' + $tmp.vf-module-ids[$vfModuleIndex]`" />

+                                </set>

+                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.vnf-url`' />

+                                    <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                    <parameter name='format' value='json' />

+                                    <parameter name='httpMethod' value='GET' />

+                                    <parameter name="responsePrefix" value="vnf-mdsal" />

+                                    <outcome value='failure'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="Failed to read vnf info from MD-SAL" />

+                                                <parameter name="serv-inst.api" value= ""/>

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="Cannot find vnf info in MD-SAL" />

+                                                <parameter name="serv-inst.api" value= ""/>

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='success'>

+                                        <block>

+                                            <set>

+                                                <parameter name="`'tmp.vnf-instances[0]'`." value= '`$vnf-mdsal.vnf-list[0].`' />

+                                            </set>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: MDSAL vnf-instances vnf-id: "/>

+                                                <parameter name="field3" value='`$tmp.vnf-instances[0].service-data.vnf-request-information.vnf-id`' />

+                                            </record>

+                                        </block>

+                                    </outcome>

+                                </execute>

+                                <switch test='`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length > 0`'>

+                                    <outcome value='true'>

+                                        <for index='vnfNetworksIndex' start='0' end='`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`' >

+                                            <block>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                    <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: copy vnf-instance data to output: "/>

+                                                    <parameter name="field3" value='`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfnetworksIndex].`'/>

+                                                </record>

+                                                <set>

+                                                    <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].network-name" value= "`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfNetworksIndex].network-name`"/>

+                                                    <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].network-role" value= "`$tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks[$vnfNetworksIndex].network-role`"/>

+                                                    <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list[$vnfNetworksIndex].vf-module-id" value= "`$tmp.vnf-instances[0].service-data.vnf-request-information.vnf-id`"/>

+                                                    <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-network-list_length" value= '`$vnfNetworksIndex + 1`'/>

+                                                </set>

+                                            </block>

+                                        </for>

+                                    </outcome>

+                                    <outcome value='false'>

+                                        <block>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="LAINA: getpathsegment-populate-from-vnfapi: No vnf-networks found for vnf-id: "/>

+                                                <parameter name="field3" value='`$tmp.vnf-instances[0].service-data.vnf-request-information.vnf-id`' />

+                                            </record>

+                                            <set>

+                                                <parameter name='`tmp.vnf-instances[0].service-data.vnf-topology-information.vnf-assignments.vnf-networks_length' value="0" />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <set>

+                                    <parameter name="serv-inst.vnf-list[$vnfListIndex].vnf-id" value= "`$vnf-mdsal.vnf-list[0].service-data.vnf-request-information.generic-vnf-id`"/>

+                                </set>

+                                <set>

+                                    <parameter name="vnfListIndex" value= '`$vnfListIndex + 1`'/>

+                                </set>

+                            </block>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="serv-inst.service-instance-id" value= "`$serv-inst.service-instance-id`"/>

+                <parameter name="serv-inst.vnf-list_length" value= "`$vnfListIndex`"/>

+            </set>

+            <switch test='`$serv-inst.vnf-list_length > 0`'>

+                <outcome value='true'>

+                    <set>

+                        <parameter name="serv-inst.api" value= "VNF"/>

+                    </set>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/getpathsegment-populate-from-vnfapi-output.log' />

+            </execute>

+            <return status='success'></return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-simple-match-pair.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-simple-match-pair.xml
new file mode 100755
index 0000000..049f22e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-simple-match-pair.xml
@@ -0,0 +1,125 @@
+<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='getpathsegment-simple-match-pair' mode='sync'>

+        <for index='serv-insts-index' start='0' end='`$serv-insts_length`' >

+            <switch test='`$serv-insts[$serv-insts-index].vnf-list_length`'>

+                <outcome value=''>

+                    <block>

+                        <set>

+                            <parameter name='error-message' value="`'Matching VNFs were not found in service instance '

+  + $serv-insts[$serv-insts-index].service-instance-id`" />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='0'>

+                    <block>

+                        <set>

+                            <parameter name='error-message' value="`'Matching VNFs were not found in service instance '

+  + $serv-insts[$serv-insts-index].service-instance-id`" />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name='matched-all-vnfs' value='true' />

+                        </set>

+                        <set>

+                            <parameter name='serv-insts[$serv-insts-index].path-segments_length' value='0' />

+                        </set>

+                        <for index='left-vnf-index' start='0' end='`$serv-insts[$serv-insts-index].vnf-list_length - 1`' >

+                            <block>

+                                <set>

+                                    <parameter name='found-match' value='false' />

+                                </set>

+                                <set>

+                                    <parameter name='right-vnf-index' value='`$left-vnf-index + 1`' />

+                                </set>

+                                <switch test='`$match-type`'>

+                                    <outcome value='network-name'>

+                                        <for index='left-vnf-network-index' start='0' end='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list_length`' >

+                                            <block>

+                                                <for index='right-vnf-network-index' start='0' end='`$serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-network-list_length`' >

+                                                    <switch test='`( $serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name

+    == $serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-name )

+   and 

+    ( $serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role

+    == $serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].network-role )`'>

+                                                        <outcome value='true'>

+                                                            <switch test="`$serv-insts[$serv-insts-index].vnf-list[$vnf-index].vnf-network-list[$vnf-network-index].network-name == 'oam'`">

+                                                                <outcome value='false'>

+                                                                    <block>

+                                                                        <set>

+                                                                            <parameter name='ps-index' value='`$serv-insts[$serv-insts-index].path-segments_length`' />

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].segment-id' value='`$ps-index + 1`' />

+                                                                            <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].left-service-instance-id'

+  value='`$serv-insts[$serv-insts-index].service-instance-id`' />

+                                                                            <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].left-vnf-instance-id'

+  value='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-id`' />

+                                                                            <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].left-vf-module-id'

+  value='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].vf-module-id`' />

+                                                                            <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].right-service-instance-id'

+  value='`$serv-insts[$serv-insts-index].service-instance-id`' />

+                                                                            <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].right-vnf-instance-id'

+  value='`$serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-id`' />

+                                                                            <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].right-vf-module-id'

+  value='`$serv-insts[$serv-insts-index].vnf-list[$right-vnf-index].vnf-network-list[$right-vnf-network-index].vf-module-id`' />

+                                                                            <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].network-name'

+  value='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-name`' />

+                                                                            <parameter name='serv-insts[$serv-insts-index].path-segments[$ps-index].network-role'

+  value='`$serv-insts[$serv-insts-index].vnf-list[$left-vnf-index].vnf-network-list[$left-vnf-network-index].network-role`' />

+                                                                            <parameter name='serv-insts[$serv-insts-index].path-segments_length'

+  value='`$serv-insts[$serv-insts-index].path-segments_length + 1`' />

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name='found-match' value='true' />

+                                                                        </set>

+                                                                        <break/>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                                <switch test="`$found-match`">

+                                                    <outcome value='true'>

+                                                        <break/>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </for>

+                                    </outcome>

+                                </switch>

+                                <switch test="`$found-match`">

+                                    <outcome value='false'>

+                                        <block>

+                                            <set>

+                                                <parameter name='matched-all-vnfs' value='false' />

+                                            </set>

+                                            <break/>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                        <switch test="`$matched-all-vnfs`">

+                            <outcome value='false'>

+                                <block>

+                                    <set>

+                                        <parameter name='matching-error' value="`'Not able to find matches for all vnfs of service instance ' + $serv-insts[$serv-insts-index].service-instance-id`" />

+                                    </set>

+                                    <set>

+                                        <parameter name='serv-insts[$serv-insts-index].path-segments.' value='' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+        </for>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-topology-operation-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-topology-operation-create.xml
new file mode 100755
index 0000000..77d04d7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-topology-operation-create.xml
@@ -0,0 +1,55 @@
+<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='getpathsegment-topology-operation-create' mode='sync'>

+        <block>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from FORWARDING_PATH WHERE service_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid'

+  pfx='db.forwarding-path[]'>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="System error reading FORWARDING_PATH table" />

+                    </return>

+                </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="`'No paths found for service UUID ' + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid + ' in FORWARDING_PATH table'`" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block>

+                        <for index='path-index' start='0' end='`$db.forwarding-path_length`' >

+                            <switch test='`$db.forwarding-path[$path-index].path-type`'>

+                                <outcome value='VF'>

+                                    <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-create-simple-path' mode='sync' ></call>

+                                </outcome>

+                                <outcome value='Service Proxy'>

+                                    <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-create-composite-path' mode='sync' ></call>

+                                </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 path type ' + $db.forwarding-path[$path-index].path-type + ' in FORWARDING_PATH table'`" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                            <parameter name='filename' value='/var/tmp/gps.log' />

+                        </execute>

+                        <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>

+                </outcome>

+            </get-resource>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-topology-operation.xml
new file mode 100755
index 0000000..e6c2c9d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_getpathsegment-topology-operation.xml
@@ -0,0 +1,36 @@
+<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='getpathsegment-topology-operation' mode='sync'>

+        <block>

+            <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>

+            <call module='GENERIC-RESOURCE-API' rpc='validate-getpathsegment-input' mode='sync' ></call>

+            <set>

+                <parameter name='service-data.sdnc-request-header.' value='`$getpathsegment-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.request-information.' value='`$getpathsegment-topology-operation-input.request-information.`' />

+                <parameter name='service-data.service-information.' value='`$getpathsegment-topology-operation-input.service-information.`' />

+                <parameter name='service-data.service-request-input.' value='`$getpathsegment-topology-operation-input.service-request-input.`' />

+            </set>

+            <switch test='`$getpathsegment-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='create'>

+                    <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-topology-operation-create' mode='sync' ></call>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`$getpathsegment-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_gw-vfmodule-update.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_gw-vfmodule-update.xml
new file mode 100644
index 0000000..f738418
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_gw-vfmodule-update.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='gw-vfmodule-update' mode='sync'>

+<block>

+<set>

+<!--

+<parameter name='tmp.brg-macaddress' value='fa:16:3e:8f:ea:68' />

+

+

+<parameter name='tmp.consuming-service-instance-id' value='b3cb7040-f7a5-4beb-ad2f-2a893b7d374b' />

+service-data.service-topology.service-topology-identifier.service-instance-id

+

+-->

+<parameter name='tmp.brg-mac-address-match' value="`'VGW2BRG-' + $tmp.brg-macaddress`"/>

+<parameter name='tmp.consuming-service-instance-id' value='`$service-data.service-topology.service-topology-identifier.service-instance-id`' />

+</set><set>

+<parameter name='tmp.thisIsVGW' value='false' />

+</set><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='GENERIC-RESOURCE-API'    

+         key='tunnelxconn-allotted-resources/' pfx='tmp.txconns' >

+																													<outcome value='success'>

+<for index='txidx' start='0' end='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource_length`' >

+

+

+<block atomic='true'><set>

+<parameter name='tmp.test1' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$txidx].allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.consuming-service-instance-id`' />

+<!--

+this is null

+<parameter name='tmp.test2' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource-data[$txidx].tunnelxconn-topology[0].allotted-resource-identifiers[0].consuming-service-instance-id`' />

+--></set><switch test='`$tmp.test1 == $tmp.consuming-service-instance-id`'><outcome value='true'>

+<block>

+<set>

+<parameter name='tmp.brg-macaddress' 

+      value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.brg-wan-mac-address`' />

+

+</set><set>

+<parameter name='tmp.brg-mac-address-match' value="`'VGW2BRG-' + $tmp.brg-macaddress`"/>

+<parameter name='tmp.consuming-service-instance-id' value='`$service-data.service-topology.service-topology-identifier.service-instance-id`' />

+

+<!--

+<parameter name='tmp.brg-macaddress' value='fa:16:3e:8f:ea:68' />

+<parameter name='tmp.brg-mac-address-match' value="`'VGW2BRG-' + $tmp.brg-macaddress`"/>

+-->

+<!--

+<parameter name='tmp.consuming-service-instance-id' value='b3cb7040-f7a5-4beb-ad2f-2a893b7d374b' />

+service-data.service-topology.service-topology-identifier.service-instance-id

+

+-->

+</set><set>

+<parameter name='tmp.vg-vgmux-tunnel-vni' 

+    value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$txidx].allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vni`' />

+<parameter name='tmp.vg-ip' 

+    value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[$txidx].allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip`' />

+</set><set>

+<parameter name='tmp.thisIsVGW' value='true' />

+</set></block></outcome></switch></block></for></outcome></get-resource><switch test='`$tmp.thisIsVGW`'>

+<outcome value='true'>

+<block>

+<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource' resource='VNF-API' key='preload-vnfs' pfx='tmp.preloadvnfdata' >

+</get-resource><for index='vnfidx' start='0' end='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list_length`' >

+

+

+<block atomic='true'><set>

+<parameter name='tmp.test3' value='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].vnf-name`' />

+<parameter name='tmp.test4' value='`$tmp.brg-mac-address-match`'/>

+

+

+</set><switch test='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].vnf-name == $tmp.brg-mac-address-match`'>

+

+

+<outcome value='true'>

+<block>

+<set>

+<parameter name='tmp.endLoop1' value='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters_length`' /></set><for index='preloadIdx' start='0' end='`$tmp.endLoop1`'>

+<!--

+

+     "preload-data": {

+          "vnf-topology-information": {

+            "vnf-parameters": [

+            

+            -->

+<block atomic='true'><set>

+<parameter name='tmp.vfmodule.param[$preloadIdx].name'  value='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters[$preloadIdx].vnf-parameter-name`' />

+<parameter name='tmp.vfmodule.param[$preloadIdx].value' value='`$tmp.preloadvnfdata.preload-vnfs.vnf-preload-list[$vnfidx].preload-data.vnf-topology-information.vnf-parameters[$preloadIdx].vnf-parameter-value`' /></set></block></for><set>

+<parameter name='tmp.vfmodule.param_length' value='`$tmp.endLoop1`' />

+</set><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><set>

+<parameter name='tmp.restapi.service.vnf.vfmodule-resource' value='`$prop.restapi.service.vnf.vfmodule-resource`' />

+</set><set>

+<parameter name='tmp.vf-module-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $service-data.service-topology.service-topology-identifier.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id 

+ + '/'`"/>

+</set><set>

+<!--

+<parameter name='tmp.service.vnf.vf-module.vg-mux-tunnel-vni' value='`$input.vni`' />

+-->

+<parameter name='tmp.service.vnf.vf-module.vg-mux-tunnel-vni' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[0].allotted-resource-data[0].tunnelxconn-topology[0].tunnelxconn-assignments[0].vni`' />

+<parameter name='tmp.service.vnf.vf-module.vg-lan-ip' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource[0].allotted-resource-data[0].tunnelxconn-topology[0].tunnelxconn-assignments[0].vg-ip`' />

+

+

+

+</set><set>

+<!--

+<parameter name='tmp.service.vnf.vf-module.vg-mux-tunnel-vni' value='`$input.vni`' />

+-->

+<parameter name='tmp.vg-mux-tunnel-vni-match' value='vg_vgmux_tunnel_vni' />

+<parameter name='tmp.vg-lan-ip-match' value='vgw_private_ip_0' />

+

+

+

+

+</set><for index='paramIdx' start='0' end='`$tmp.vfmodule.param_length`' >

+<block>

+<switch test='`$tmp.vfmodule.param[$paramIdx].name == $tmp.vg-mux-tunnel-vni-match`'><outcome value='true'>

+<set>

+<parameter name='$tmp.vfmodule.param[$paramIdx].value' value='`$tmp.vg-vgmux-tunnel-vni`' />

+

+<!--

+<parameter name='$tmp.vfmodule.param[$paramIdx].value' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vni`' />

+--></set></outcome></switch><switch test='`$tmp.vfmodule.param[$paramIdx].name == $tmp.vg-lan-ip-match`'><outcome value='true'>

+<set>

+<parameter name='$tmp.vfmodule.param[$paramIdx].value' value='`$tmp.vg-ip`' />

+<!--

+<parameter name='$tmp.vfmodule.param[$paramIdx].value' value='`$tmp.txconns.tunnelxconn-allotted-resources.tunnelxconn-allotted-resource.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip`' />

+--></set></outcome></switch></block></for><set>

+<!--

+<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param.'

+

+                 service-data.vnfs.vnf\[0\].       vnf-data.vf-modules.vf-module\[0\]             .vf-module-data.vf-module-topology.vf-module-parameters.param.

+   value='$tmp.vfmodule.' />

+-->

+<parameter name='service-data.vnfs.vnf[0].vnf-data.vf-modules.vf-module[0].vf-module-data.vf-module-topology.vf-module-parameters.'

+   value='$tmp.vfmodule.' /></set></block></outcome></switch></block></for></block></outcome><outcome value='Other'>

+<block>

+<return status='failure'>

+<parameter name='error-code' value='500' />

+<parameter name='error-message' value='Did not find vGW Preload' />

+</return></block></outcome></switch></block></method></service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_manage-ipaddr-assignment.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_manage-ipaddr-assignment.xml
new file mode 100644
index 0000000..724faf3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_manage-ipaddr-assignment.xml
@@ -0,0 +1,24 @@
+<!--Reserve/release IP-->

+<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='manage-ipaddr-assignment' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='tmp.sql.plugin' value='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' />

+            </set>

+            <switch test='`$tmp.manageIpaddr.action`'>

+                <outcome value='reserve'>

+                    <block atomic='true'>

+                        <get-resource plugin='`$tmp.sql.plugin`' resource='IPADDR' key="SELECT min(ipv4_addr) ip from IPV4_ADDRESS_POOL where universe = $tmp.manageIpaddr.pool and status='AVAILABLE'" pfx="tmp.manageIpaddr" >

+                            <outcome value='success'>

+                                <save plugin='`$tmp.sql.plugin`' resource='IPADDR' key="UPDATE IPV4_ADDRESS_POOL set status='RESERVED' where universe='VGW' and ipv4_addr = $tmp.manageIpaddr.ip" force='false'></save>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+                <outcome value='release'>

+                    <save plugin='`$tmp.sql.plugin`' resource='IPADDR' key="UPDATE IPV4_ADDRESS_POOL set status='AVAILABLE' where universe='VGW' and ipv4_addr = $tmp.manageIpaddr.ip" force='false'></save>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_manage-vni-assignment.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_manage-vni-assignment.xml
new file mode 100644
index 0000000..169d20b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_manage-vni-assignment.xml
@@ -0,0 +1,13 @@
+<!--Reserve/release VNI--><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='manage-vni-assignment' mode='sync'>

+<block atomic='true'><set>

+<parameter name='tmp.sql.plugin' value='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' />

+</set><switch test='`$tmp.manageVni.action`'>

+<outcome value='reserve'>

+<block atomic='true'><get-resource plugin='`$tmp.sql.plugin`' resource='VNI' key="SELECT min(vlan_id) vni from VLAN_ID_POOL where purpose = $tmp.manageVni.pool and status='AVAILABLE'" pfx="tmp.manageVni" >

+<outcome value='success'>

+<save plugin='`$tmp.sql.plugin`' resource='VNI' key="UPDATE VLAN_ID_POOL set status='RESERVED' where purpose='VNI' and vlan_id = $tmp.manageVni.vni" force='false'>

+

+</save></outcome></get-resource></block></outcome><outcome value='release'>

+<save plugin='`$tmp.sql.plugin`' resource='VNI' key="UPDATE VLAN_ID_POOL set status='AVAILABLE' where purpose='VNI' and vlan_id=$tmp.manage-vni.vni" force='false'>

+

+</save></outcome></switch></block></method></service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_naming-policy-generate-name.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_naming-policy-generate-name.xml
new file mode 100755
index 0000000..2f6def6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_naming-policy-generate-name.xml
@@ -0,0 +1,1116 @@
+<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='naming-policy-generate-name' mode='sync'>

+        <block atomic='true'>

+            <block atomic='true'>

+                <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' />

+                    <outcome value='success'>

+                        <block atomic='true'>

+                            <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="LAINA: naming-policy-generate-name: read properties file."/>

+                            </record>

+                        </block>

+                    </outcome>

+                    <outcome value='failure'>

+                        <block>

+                            <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="LAINA: naming-policy-generate-name: Could not read properties file."/>

+                                <parameter name="field3" value='`$prop.restapi.pm.getpolicy.templatefile`'/>

+                            </record>

+                            <return status='failure'>

+                                <parameter name='error-code' value='501' />

+                                <parameter name='error-message' value='naming-policy-generate-name: could not read generic-resource-api properties' />

+                            </return>

+                        </block>

+                    </outcome>

+                </execute>

+                <switch test='`$naming-policy-generate-name-input.naming-type`'>

+                    <outcome value='VM'>

+                        <set>

+                            <parameter name='table-name' value="NAMING_POLICY_VM_NAME_INDEX" />

+                            <parameter name='table-type' value="VM_INSTANCE" />

+                            <parameter name='table-prefix-column' value="vm_name_prefix" />

+                        </set>

+                    </outcome>

+                    <outcome value='VNFC'>

+                        <switch test='`$naming-policy-generate-name-input.vm-name`'>

+                            <outcome value=''>

+                                <block>

+                                    <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="LAINA: naming-policy-generate-name: input.naming-type is VNFC but input.vm-name is not set"/>

+                                    </record>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='505' />

+                                        <parameter name='error-message' value='naming-policy-generate-name: input.naming-type is VNFC but input.vm-name is not set' />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='table-name' value="NAMING_POLICY_VNFC_NAME_INDEX" />

+                                    <parameter name='table-type' value="VNFC_INSTANCE" />

+                                    <parameter name='table-prefix-column' value="vnfc_name_prefix" />

+                                    <parameter name='seq-length' value="0" />

+                                </set>

+                            </outcome>

+                        </switch>

+                    </outcome>

+                    <outcome value='VNF'>

+                        <set>

+                            <parameter name='table-name' value="VNF_NAME_INDEX" />

+                            <parameter name='table-type' value="VNF_INSTANCE" />

+                            <parameter name='table-prefix-column' value="vnf_name_prefix" />

+                        </set>

+                    </outcome>

+                    <outcome value='NETWORK'>

+                        <set>

+                            <parameter name='table-name' value="NETWORK_INSTANCE_NAME_INDEX" />

+                            <parameter name='table-type' value="NETWORK_INSTANCE" />

+                            <parameter name='table-prefix-column' value="network_instance_name_prefix" />

+                        </set>

+                    </outcome>

+                    <outcome value='SERVICE'>

+                        <set>

+                            <parameter name='table-name' value="SERVICE_INSTANCE_NAME_INDEX" />

+                            <parameter name='table-type' value="SERVICE_INSTANCE" />

+                            <parameter name='table-prefix-column' value="service_instance_name_prefix" />

+                        </set>

+                    </outcome>

+                    <outcome value='Other'>

+                        <block>

+                            <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="LAINA: naming-policy-generate-name: invalid input.naming-type."/>

+                                <parameter name="field3" value='`$naming-policy-generate-name-input.naming-type`'/>

+                            </record>

+                            <return status='failure'>

+                                <parameter name='error-code' value='503' />

+                                <parameter name='error-message' value='naming-policy-generate-name: Invalid input.naming-type' />

+                            </return>

+                        </block>

+                    </outcome>

+                </switch>

+                <switch test='`$naming-policy-generate-name-input.policy-instance-name`'>

+                    <outcome value=''>

+                        <block>

+                            <switch test='`$naming-policy-generate-name-input.action`'>

+                                <outcome value='Other'>

+                                    <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="LAINA: naming-policy-generate-name: input.policy-instance-name is not set but input.policy is not ASSIGN"/>

+                                    </record>

+                                </outcome>

+                                <outcome value='ASSIGN'>

+                                    <block>

+                                        <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                            <parameter name="field2" value="LAINA: naming-policy-generate-name: input.policy-instance-name is not set and input.policy is ASSIGN"/>

+                                        </record>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='507' />

+                                            <parameter name='error-message' value='naming-policy-generate-name: input.policy-instance-name is not set and input.policy is ASSIGN' />

+                                        </return>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </block>

+                    </outcome>

+                </switch>

+                <switch test='`$naming-policy-generate-name-input.query-parameter`'>

+                    <outcome value=''>

+                        <block>

+                            <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="LAINA: naming-policy-generate-name: input.vfc-customization-uuid is not set"/>

+                            </record>

+                        </block>

+                    </outcome>

+                </switch>

+                <switch test='`$naming-policy-generate-name-input.action`'>

+                    <outcome value=''>

+                        <block>

+                            <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="LAINA: naming-policy-generate-name: input.action is not set or invalid"/>

+                            </record>

+                        </block>

+                    </outcome>

+                    <outcome value='Other'>

+                        <block>

+                            <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="LAINA: naming-policy-generate-name: input.action is not set or invalid"/>

+                            </record>

+                        </block>

+                    </outcome>

+                    <outcome value='ASSIGN | DELETE'></outcome>

+                </switch>

+            </block>

+            <switch test='`$naming-policy-generate-name-input.action`'>

+                <outcome value='ASSIGN'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='tmp.policy-name' value="`$naming-policy-generate-name-input.policy-instance-name`" />

+                        </set>

+                        <record plugin="com.att.sdnctl.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="LAINA: naming-policy-generate-name: restapi-call-node Call Policy Manager getPolicy"/>

+                        </record>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.getpolicy.templatefile`" />

+                            <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/getConfig'`" />

+                            <parameter name='format' value='json' />

+                            <parameter name='httpMethod' value='POST' />

+                            <parameter name='customHttpHeaders'

+      value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />

+                            <parameter name="responsePrefix" value="tmp.pm-response" />

+                            <outcome value='failure'>

+                                <block>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="LAINA: naming-policy-generate-name: Error calling Policy Manager getPolicy"/>

+                                    </record>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='502' />

+                                        <parameter name='error-message' value='naming-policy-generate-name: getPolicy call to Policy Manger failed' />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='success'>

+                                <block>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="LAINA: naming-policy-generate-name: getPolicy SUCCESS"/>

+                                        <parameter name='field3' value='`$tmp.pm-response.type`' />

+                                        <parameter name='field4' value='`$tmp.pm-response.matchingConditions`' />

+                                        <parameter name='field5' value='`$tmp.pm-response.config`' />

+                                        <parameter name='field6' value='`$tmp.pm-response.response-code`' />

+                                        <parameter name='field7' value='`$tmp.pm-response.response-message`' />

+                                    </record>

+                                    <set>

+                                        <parameter name='naming-policy-config' value="`$tmp.pm-response.config`" />

+                                    </set>

+                                    <switch test='`$tmp.pm-response.response-code`'>

+                                        <outcome value='500'>

+                                            <block>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                    <parameter name="field2" value="LAINA: naming-policy-generate-name: Error calling Policy Manager getPolicy"/>

+                                                </record>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='502' />

+                                                    <parameter name='error-message' value='naming-policy-generate-name: getPolicy call to Policy Manger failed' />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </execute>

+                        <set>

+                            <parameter name='vnf-name' value="`$naming-policy-generate-name-input.generic-vnf-name`" />

+                            <parameter name='constant-tag' value="`$naming-policy-generate-name-input.constant-tag`" />

+                            <parameter name='sequence' value="`$naming-policy-generate-name-input.sequence`" />

+                        </set>

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="LAINA: naming-policy-generate-name: call jsonStringToCtx"/>

+                            <parameter name='field3' value='`$naming-policy-config`' />

+                        </record>

+                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">

+                            <parameter name="source" value="naming-policy-config" />

+                            <parameter name="outputPath" value="jsonContextPrefix" />

+                            <parameter name="isEscaped" value="true" />

+                            <outcome value='failure'>

+                                <block>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="LAINA: naming-policy-generate-name: Error calling jsonStringToCtx"/>

+                                    </record>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='504' />

+                                        <parameter name='error-message' value='naming-policy-generate-name: failed to parse Policy Manger getPolicy response' />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='success'>

+                                <block atomic='true'>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="LAINA: naming-policy-generate-name: jsonStringToCtx SUCCESS: policy-instance-name|naming-models_length|constructed-name:"/>

+                                        <parameter name='field3' value='`$jsonContextPrefix.content.policy-instance-name`' />

+                                        <parameter name='field4' value='`$jsonContextPrefix.content.naming-models_length`' />

+                                        <parameter name='field5' value='`$constructed-name`' />

+                                    </record>

+                                    <for index='modelsIndex' start='0' end='`$jsonContextPrefix.content.naming-models_length`' >

+                                        <block atomic='true'>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="LAINA: naming-policy-generate-name: modelsIndex|naming-type|naming-recipe:"/>

+                                                <parameter name='field3' value='`$modelsIndex`' />

+                                                <parameter name='field4' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-type`' />

+                                                <parameter name='field5' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-recipe`' />

+                                            </record>

+                                            <set>

+                                                <parameter name='naming-recipe' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-recipe`'  />

+                                                <parameter name='naming-type' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-type`'  />

+                                            </set>

+                                            <switch test='`$naming-type`'>

+                                                <outcome value=''>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='504' />

+                                                        <parameter name='error-message' value='naming-policy-generate-name: naming-type in policy is blank' />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                            <switch test='`$naming-recipe`'>

+                                                <outcome value=''>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='504' />

+                                                        <parameter name='error-message' value='naming-policy-generate-name: naming-recipe in policy is blank' />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                            <switch test='`$naming-type == $naming-policy-generate-name-input.naming-type`'>

+                                                <outcome value='true'>

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name='original-name' value='`$naming-recipe`' />

+                                                        </set>

+                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                            <parameter name="original_string" value="`$original-name`" />

+                                                            <parameter name="regex" value="\|"/>

+                                                            <parameter name="limit" value="10" />

+                                                            <parameter name="ctx_memory_result_key" value="namingRecipeSplits" />

+                                                        </execute>

+                                                        <for index='sectionIndex' start='0' end='`$namingRecipeSplits_length`' >

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="LAINA: naming-policy-generate-name: Split naming-recipe sectionIndex|section value"/>

+                                                                <parameter name="field3" value="`$sectionIndex`" />

+                                                                <parameter name="field4" value="`$namingRecipeSplits[$sectionIndex]`" />

+                                                            </record>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name='section-value' value="`$namingRecipeSplits[$sectionIndex]`"  />

+                                                                </set>

+                                                                <for index='propertiesIndex' start='0' end='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties_length`' >

+                                                                    <block>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >

+                                                                            <parameter name="source" value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`" />

+                                                                            <parameter name="outputPath" value="property-name-trimmed" />

+                                                                        </execute>

+                                                                        <set>

+                                                                            <!--<parameter name='property-name' value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`"  />-->

+                                                                            <parameter name='property-name' value="`$property-name-trimmed`"  />

+                                                                        </set>

+                                                                        <switch test='`$property-name == $section-value`'>

+                                                                            <outcome value='true'>

+                                                                                <block>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                        <parameter name="field2" value="LAINA: naming-policy-generate-name: recipe section match: section-value|property-name:"/>

+                                                                                        <parameter name="field3" value="`$section-value`" />

+                                                                                        <parameter name="field4" value="`$property-name`" />

+                                                                                    </record>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                            <parameter name="field2" value="LAINA: naming-policy-generate-name: propertiesIndex|source-endpoint|source-system|property-name:"/>

+                                                                                            <parameter name='field3' value='`$propertiesIndex`' />

+                                                                                            <parameter name='field4' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].source-endpoint`' />

+                                                                                            <parameter name='field5' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].source-system`' />

+                                                                                            <parameter name='field6' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`' />

+                                                                                        </record>

+                                                                                        <set>

+                                                                                            <parameter name='source-system' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].source-system`'  />

+                                                                                            <parameter name='source-endpoint' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].source-endpoint`'  />

+                                                                                            <parameter name='property-name' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`'  />

+                                                                                            <parameter name='property-value' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-value`'  />

+                                                                                        </set>

+                                                                                        <switch test='`$property-value`'>

+                                                                                            <outcome value=''>

+                                                                                                <block>

+                                                                                                    <switch test='`$source-system`'>

+                                                                                                        <outcome value="MD-SAL">

+                                                                                                            <block>

+                                                                                                                <switch test='`$property-name`'>

+                                                                                                                    <outcome value="VMNAME">

+                                                                                                                        <switch test='`$naming-policy-generate-name-input.vm-name`'>

+                                                                                                                            <outcome value=''>

+                                                                                                                                <block>

+                                                                                                                                    <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                                                                        <parameter name="field2" value="LAINA: naming-policy-generate-name: required input.vm-name is not set"/>

+                                                                                                                                    </record>

+                                                                                                                                    <return status='failure'>

+                                                                                                                                        <parameter name='error-code' value='506' />

+                                                                                                                                        <parameter name='error-message' value='naming-policy-generate-name: required input.vm-name is not set' />

+                                                                                                                                    </return>

+                                                                                                                                </block>

+                                                                                                                            </outcome>

+                                                                                                                            <outcome value='Other'>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name="resolved-source-endpoint" value="`$naming-policy-generate-name-input.vm-name`" />

+                                                                                                                                </set>

+                                                                                                                            </outcome>

+                                                                                                                        </switch>

+                                                                                                                    </outcome>

+                                                                                                                    <outcome value="VNFNAME">

+                                                                                                                        <switch test='`$naming-policy-generate-name-input.vnf-name`'>

+                                                                                                                            <outcome value=''>

+                                                                                                                                <block>

+                                                                                                                                    <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                                                                        <parameter name="field2" value="LAINA: naming-policy-generate-name: required input.vnf-name is not set"/>

+                                                                                                                                    </record>

+                                                                                                                                    <return status='failure'>

+                                                                                                                                        <parameter name='error-code' value='506' />

+                                                                                                                                        <parameter name='error-message' value='naming-policy-generate-name: required input.vnf-name is not set' />

+                                                                                                                                    </return>

+                                                                                                                                </block>

+                                                                                                                            </outcome>

+                                                                                                                            <outcome value='Other'>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name="resolved-source-endpoint" value="`$naming-policy-generate-name-input.vnf-name`" />

+                                                                                                                                </set>

+                                                                                                                            </outcome>

+                                                                                                                        </switch>

+                                                                                                                    </outcome>

+                                                                                                                    <outcome value='Other'>

+                                                                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue' >

+                                                                                                                            <parameter name="source" value="`$source-endpoint`" />

+                                                                                                                            <!--<parameter name="source" value="`$naming-policy-generate-name-input.test-source-endpoint-path`" />-->

+                                                                                                                            <parameter name="outputPath" value="resolved-source-endpoint" />

+                                                                                                                        </execute>

+                                                                                                                    </outcome>

+                                                                                                                </switch>

+                                                                                                                <set>

+                                                                                                                    <parameter name="name-var" value="`$propertiesIndex + '-naming-property-value'`" />

+                                                                                                                    <parameter name="value-var" value="`$property-name + '-' + $naming-policy-generate-name-input.test-source-endpoint-resolved-value` " />

+                                                                                                                    <parameter name="new-part" value="`$resolved-source-endpoint` " />

+                                                                                                                    <!--<parameter name="new-part" value="`$naming-policy-generate-name-input.test-source-endpoint-resolved-value` " />-->

+                                                                                                                </set>

+                                                                                                                <set>

+                                                                                                                    <parameter name="constructed-name" value="`$constructed-name + $new-part` "  />

+                                                                                                                </set>

+                                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                                                    <parameter name="field2" value="LAINA: naming-policy-generate-name: source-system MD-SAL name-value pair|new-part|constructed-name:"/>

+                                                                                                                    <parameter name="field3" value="`$name-var`" />

+                                                                                                                    <parameter name="field4" value="`$value-var`" />

+                                                                                                                    <parameter name="field5" value="`$new-part`" />

+                                                                                                                    <parameter name="field6" value="`$constructed-name`" />

+                                                                                                                </record>

+                                                                                                            </block>

+                                                                                                        </outcome>

+                                                                                                        <outcome value="CONTEXT">

+                                                                                                            <block>

+                                                                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue' >

+                                                                                                                    <parameter name="source" value="`$source-endpoint`" />

+                                                                                                                    <parameter name="outputPath" value="resolved-source-endpoint" />

+                                                                                                                </execute>

+                                                                                                                <set>

+                                                                                                                    <parameter name="name-var" value="`$propertiesIndex + '-naming-property-value'`" />

+                                                                                                                    <parameter name="value-var" value="`$property-name + '-' + $naming-policy-generate-name-input.test-source-endpoint-resolved-value` " />

+                                                                                                                    <parameter name="new-part" value="`$resolved-source-endpoint` " />

+                                                                                                                    <!--<parameter name="new-part" value="`$naming-policy-generate-name-input.test-source-endpoint-resolved-value` " />-->

+                                                                                                                </set>

+                                                                                                                <set>

+                                                                                                                    <parameter name="constructed-name" value="`$constructed-name + $new-part` "  />

+                                                                                                                </set>

+                                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                                                    <parameter name="field2" value="LAINA: naming-policy-generate-name: source-system CONTEXT name-value pair|new-part|constructed-name:"/>

+                                                                                                                    <parameter name="field3" value="`$name-var`" />

+                                                                                                                    <parameter name="field4" value="`$value-var`" />

+                                                                                                                    <parameter name="field5" value="`$new-part`" />

+                                                                                                                    <parameter name="field6" value="`$constructed-name`" />

+                                                                                                                </record>

+                                                                                                            </block>

+                                                                                                        </outcome>

+                                                                                                        <outcome value="TOSCA">

+                                                                                                            <switch test='`$naming-policy-generate-name-input.query-parameter`'>

+                                                                                                                <outcome value=''>

+                                                                                                                    <block>

+                                                                                                                        <record  plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                                                            <parameter name="field2" value="LAINA: naming-policy-generate-name: input.query-parameter is not set"/>

+                                                                                                                        </record>

+                                                                                                                        <return status='failure'>

+                                                                                                                            <parameter name='error-code' value='506' />

+                                                                                                                            <parameter name='error-message' value='naming-policy-generate-name: input.query-parameter is not set' />

+                                                                                                                        </return>

+                                                                                                                    </block>

+                                                                                                                </outcome>

+                                                                                                                <outcome value='Other'>

+                                                                                                                    <execute plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' method='parameterizedQuery' emitsOutcome='true' >

+                                                                                                                        <!--<parameter name='query' value='select nfc_naming_code from VFC_MODEL where customization_uuid = ?' />-->

+                                                                                                                        <parameter name='query' value="`$source-endpoint`" />

+                                                                                                                        <parameter name='prefix' value='queryPfx' />

+                                                                                                                        <parameter name='param1' value="`$naming-policy-generate-name-input.query-parameter`" />

+                                                                                                                        <outcome value='not-found'>

+                                                                                                                            <return status='failure'>

+                                                                                                                                <parameter name='error-code' value='514' />

+                                                                                                                                <parameter name='error-message' value='naming-policy-generate-name query-parameter not found in DB table'/>

+                                                                                                                            </return>

+                                                                                                                        </outcome>

+                                                                                                                        <outcome value='failure'>

+                                                                                                                            <return status='failure'>

+                                                                                                                                <parameter name='error-code' value='515' />

+                                                                                                                                <parameter name='error-message' value='naming-policy-generate-name database access failure'/>

+                                                                                                                            </return>

+                                                                                                                        </outcome>

+                                                                                                                        <outcome value='success'>

+                                                                                                                            <block>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='original-name' value='`$source-endpoint`' />

+                                                                                                                                </set>

+                                                                                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                                                                                                    <parameter name="original_string" value="`$original-name`" />

+                                                                                                                                    <parameter name="regex" value=" "/>

+                                                                                                                                    <parameter name="limit" value="10" />

+                                                                                                                                    <parameter name="ctx_memory_result_key" value="sourceEndpointSplits" />

+                                                                                                                                </execute>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name="query-parameter-name-underbars" value="`$sourceEndpointSplits[1]`"  />

+                                                                                                                                </set>

+                                                                                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                                                                                    <parameter name="source" value="`$query-parameter-name-underbars`"/>

+                                                                                                                                    <parameter name="outputPath" value="tmp.query-parameter-name-dashes"/>

+                                                                                                                                    <parameter name="target" value="_"/>

+                                                                                                                                    <parameter name="replacement" value="-"/>

+                                                                                                                                </execute>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name="full-query-param-name" value="`'queryPfx.' + $tmp.query-parameter-name-dashes`" />

+                                                                                                                                </set>

+                                                                                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue' >

+                                                                                                                                    <parameter name="source" value="`$full-query-param-name`" />

+                                                                                                                                    <parameter name="outputPath" value="resolved-query-parameter" />

+                                                                                                                                </execute>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name="name-var" value="`$propertiesIndex + '-naming-property-value'`" />

+                                                                                                                                    <parameter name="value-var" value="`$property-name + '-' + $resolved-query-parameter`" />

+                                                                                                                                    <parameter name="new-part" value="`$resolved-query-parameter` " />

+                                                                                                                                </set>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name="constructed-name" value="`$constructed-name + $new-part` "  />

+                                                                                                                                </set>

+                                                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                                                                    <parameter name="field2" value="LAINA: naming-policy-generate-name: source-system TOSCA name-value pair|new-part|constructed-name:"/>

+                                                                                                                                    <parameter name="field3" value="`$name-var`" />

+                                                                                                                                    <parameter name="field4" value="`$value-var`" />

+                                                                                                                                    <parameter name="field5" value="`$new-part`" />

+                                                                                                                                    <parameter name="field6" value="`$constructed-name`" />

+                                                                                                                                </record>

+                                                                                                                            </block>

+                                                                                                                        </outcome>

+                                                                                                                    </execute>

+                                                                                                                </outcome>

+                                                                                                            </switch>

+                                                                                                        </outcome>

+                                                                                                        <outcome value="AAI">

+                                                                                                            <block>

+                                                                                                                <set>

+                                                                                                                    <parameter name='original-name' value='`$source-endpoint`' />

+                                                                                                                </set>

+                                                                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                                                                                    <parameter name="original_string" value="`$original-name`" />

+                                                                                                                    <parameter name="regex" value="\|"/>

+                                                                                                                    <parameter name="limit" value="10" />

+                                                                                                                    <parameter name="ctx_memory_result_key" value="aaiSourceEndpointRegionKeySplits" />

+                                                                                                                </execute>

+                                                                                                                <set>

+                                                                                                                    <parameter name="resource" value="`$aaiSourceEndpointRegionKeySplits[0]`"  />

+                                                                                                                    <parameter name="keys" value="`$aaiSourceEndpointRegionKeySplits[1]`"  />

+                                                                                                                    <parameter name='aai-constructed-name' value=""  />

+                                                                                                                </set>

+                                                                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                                                                                    <parameter name="original_string" value="`$keys`" />

+                                                                                                                    <parameter name="regex" value="\:"/>

+                                                                                                                    <parameter name="limit" value="10" />

+                                                                                                                    <parameter name="ctx_memory_result_key" value="aaiSourceEndpointKeySplits" />

+                                                                                                                </execute>

+                                                                                                                <for index='keyIndex' start='0' end='`$aaiSourceEndpointKeySplits_length`' >

+                                                                                                                    <block>

+                                                                                                                        <set>

+                                                                                                                            <parameter name='key-value' value="`$aaiSourceEndpointKeySplits[$keyIndex]`"  />

+                                                                                                                        </set>

+                                                                                                                        <for index='propIndex' start='0' end='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties_length`' >

+                                                                                                                            <block>

+                                                                                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >

+                                                                                                                                    <parameter name="source" value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].property-name`" />

+                                                                                                                                    <parameter name="outputPath" value="property-name-trimmed" />

+                                                                                                                                </execute>

+                                                                                                                                <set>

+                                                                                                                                    <!--<parameter name='property-name' value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].property-name`"  />-->

+                                                                                                                                    <parameter name='property-name' value="`$property-name-trimmed`"  />

+                                                                                                                                </set>

+                                                                                                                                <switch test='`$property-name == $key-value`'>

+                                                                                                                                    <outcome value='true'>

+                                                                                                                                        <block>

+                                                                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                                                                                <parameter name="field2" value="LAINA: naming-policy-generate-name: key match: key-value|property-name:"/>

+                                                                                                                                                <parameter name="field3" value="`$key-value`" />

+                                                                                                                                                <parameter name="field4" value="`$property-name`" />

+                                                                                                                                            </record>

+                                                                                                                                            <block>

+                                                                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                                                                                    <parameter name="field2" value="LAINA: naming-policy-generate-name: propertiesIndex|source-endpoint|source-system|property-name:"/>

+                                                                                                                                                    <parameter name='field3' value='`$propertiesIndex`' />

+                                                                                                                                                    <parameter name='field4' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].source-endpoint`' />

+                                                                                                                                                    <parameter name='field5' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].source-system`' />

+                                                                                                                                                    <parameter name='field6' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].property-name`' />

+                                                                                                                                                </record>

+                                                                                                                                                <set>

+                                                                                                                                                    <parameter name='source-system' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].source-system`'  />

+                                                                                                                                                    <parameter name='source-endpoint' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].source-endpoint`'  />

+                                                                                                                                                    <parameter name='property-name' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].property-name`'  />

+                                                                                                                                                    <parameter name='property-value' value='`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propIndex].property-value`'  />

+                                                                                                                                                </set>

+                                                                                                                                                <switch test='`$property-value`'>

+                                                                                                                                                    <outcome value=''>

+                                                                                                                                                        <block>

+                                                                                                                                                            <switch test='`$source-system`'>

+                                                                                                                                                                <outcome value="CONTEXT">

+                                                                                                                                                                    <block>

+                                                                                                                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue' >

+                                                                                                                                                                            <parameter name="source" value="`$source-endpoint`" />

+                                                                                                                                                                            <parameter name="outputPath" value="resolved-source-endpoint" />

+                                                                                                                                                                        </execute>

+                                                                                                                                                                        <set>

+                                                                                                                                                                            <parameter name="aai-name-var" value="`$propertiesIndex + '-naming-property-value'`" />

+                                                                                                                                                                            <parameter name="aai-value-var" value="`$property-name + '-' + $naming-policy-generate-name-input.test-source-endpoint-resolved-value` " />

+                                                                                                                                                                            <parameter name="aai-new-part" value="`$resolved-source-endpoint` " />

+                                                                                                                                                                            <!--<parameter name="new-part" value="`$naming-policy-generate-name-input.test-source-endpoint-resolved-value` " />-->

+                                                                                                                                                                        </set>

+                                                                                                                                                                        <switch test='`$aai-constructed-name`'>

+                                                                                                                                                                            <outcome value=''>

+                                                                                                                                                                                <set>

+                                                                                                                                                                                    <parameter name="aai-constructed-name" value="`$aai-new-part `"  />

+                                                                                                                                                                                </set>

+                                                                                                                                                                            </outcome>

+                                                                                                                                                                            <outcome value='Other'>

+                                                                                                                                                                                <set>

+                                                                                                                                                                                    <parameter name="aai-constructed-name" value="`$aai-constructed-name + '|' + $aai-new-part`"  />

+                                                                                                                                                                                </set>

+                                                                                                                                                                            </outcome>

+                                                                                                                                                                        </switch>

+                                                                                                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                                                                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                                                                                                            <parameter name="field2" value="LAINA: naming-policy-generate-name: source-system CONTEXT name-value pair|aai-new-part|aai-constructed-name:"/>

+                                                                                                                                                                            <parameter name="field3" value="`$aai-name-var`" />

+                                                                                                                                                                            <parameter name="field4" value="`$aai-value-var`" />

+                                                                                                                                                                            <parameter name="field5" value="`$aai-new-part`" />

+                                                                                                                                                                            <parameter name="field6" value="`$aai-constructed-name`" />

+                                                                                                                                                                        </record>

+                                                                                                                                                                    </block>

+                                                                                                                                                                </outcome>

+                                                                                                                                                            </switch>

+                                                                                                                                                        </block>

+                                                                                                                                                    </outcome>

+                                                                                                                                                    <outcome value='Other'>

+                                                                                                                                                        <block>

+                                                                                                                                                            <set>

+                                                                                                                                                                <!-- until PM is passing the correct source-endpoint for memory value, 

+     use one passed via executeDG test

+

+<parameter name="`$propertiesIndex` + '-naming-property-value'" value="` $property-name + '-' + $source-endpoint `"  />

+-->

+                                                                                                                                                                <parameter name="aai-name-var" value="`$propertiesIndex + '-naming-property-value'`" />

+                                                                                                                                                                <parameter name="aai-value-var" value="`$property-name + '-' + $property-value` " />

+                                                                                                                                                                <parameter name="aai-new-part" value="`$property-value` " />

+                                                                                                                                                            </set>

+                                                                                                                                                            <switch test='`$aai-constructed-name`'>

+                                                                                                                                                                <outcome value=''>

+                                                                                                                                                                    <set>

+                                                                                                                                                                        <parameter name="aai-constructed-name" value="`$aai-new-part `"  />

+                                                                                                                                                                    </set>

+                                                                                                                                                                </outcome>

+                                                                                                                                                                <outcome value='Other'>

+                                                                                                                                                                    <set>

+                                                                                                                                                                        <parameter name="aai-constructed-name" value="`$aai-constructed-name + '|' + $aai-new-part`"  />

+                                                                                                                                                                    </set>

+                                                                                                                                                                </outcome>

+                                                                                                                                                            </switch>

+                                                                                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                                                                                                <parameter name="field2" value="LAINA: naming-policy-generate-name: source-system CONTEXT name-value pair|aai-new-part|aai-constructed-name:"/>

+                                                                                                                                                                <parameter name="field3" value="`$aai-name-var`" />

+                                                                                                                                                                <parameter name="field4" value="`$aai-value-var`" />

+                                                                                                                                                                <parameter name="field5" value="`$aai-new-part`" />

+                                                                                                                                                                <parameter name="field6" value="`$aai-constructed-name`" />

+                                                                                                                                                            </record>

+                                                                                                                                                        </block>

+                                                                                                                                                    </outcome>

+                                                                                                                                                </switch>

+                                                                                                                                            </block>

+                                                                                                                                        </block>

+                                                                                                                                    </outcome>

+                                                                                                                                </switch>

+                                                                                                                            </block>

+                                                                                                                        </for>

+                                                                                                                    </block>

+                                                                                                                </for>

+                                                                                                                <block>

+                                                                                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                                                                                        <parameter name="original_string" value="`$aai-constructed-name`" />

+                                                                                                                        <parameter name="regex" value="\|"/>

+                                                                                                                        <parameter name="limit" value="10" />

+                                                                                                                        <parameter name="ctx_memory_result_key" value="aaiQueryKeySplits" />

+                                                                                                                    </execute>

+                                                                                                                    <set>

+                                                                                                                        <parameter name="`'tmp.' + $aaiSourceEndpointKeySplits[0]`" value= "`$aaiQueryKeySplits[0]`"/>

+                                                                                                                        <parameter name="`'tmp.' + $aaiSourceEndpointKeySplits[1]`" value="`$aaiQueryKeySplits[1]`" />

+                                                                                                                        <parameter name="`'tmp.' + $aaiSourceEndpointKeySplits[2]`" value="`$aaiQueryKeySplits[2]`" />

+                                                                                                                        <!--<parameter name="aaiQueryKeyPart1" value="cloud-region.cloud-owner = 'att-aic' AND " />-->

+                                                                                                                        <parameter name="aaiQueryKeyPart1" value="`$aaiSourceEndpointKeySplits[0]`"/>

+                                                                                                                        <parameter name="aaiQueryKeyPart2" value=" = '" />

+                                                                                                                        <parameter name="aaiQueryKeyPart3" value="`$aaiQueryKeySplits[0]`" />

+                                                                                                                        <parameter name="aaiQueryKeyPart4" value="' AND " />

+                                                                                                                        <parameter name="aaiQueryKeyPart5" value="`$aaiSourceEndpointKeySplits[1]`"/>

+                                                                                                                        <parameter name="aaiQueryKeyPart6" value=" = '" />

+                                                                                                                        <parameter name="aaiQueryKeyPart7" value="`$aaiQueryKeySplits[1]`" />

+                                                                                                                        <parameter name="aaiQueryKeyPart8" value="' AND " />

+                                                                                                                        <parameter name="aaiQueryKeyPart9" value="`$aaiSourceEndpointKeySplits[2]`"/>

+                                                                                                                        <parameter name="aaiQueryKeyPart10" value=" = '" />

+                                                                                                                        <parameter name="aaiQueryKeyPart11" value="`$aaiQueryKeySplits[2]`" />

+                                                                                                                        <parameter name="aaiQueryKeyPart12" value="'" />

+                                                                                                                        <parameter name="aaiQueryKey" value="`$aaiQueryKeyPart1 + $aaiQueryKeyPart2 + $aaiQueryKeyPart3 + $aaiQueryKeyPart4 + $aaiQueryKeyPart5 + $aaiQueryKeyPart6 + $aaiQueryKeyPart7 + $aaiQueryKeyPart8 + $aaiQueryKeyPart9 + $aaiQueryKeyPart10 + $aaiQueryKeyPart11 + $aaiQueryKeyPart12 `" />

+                                                                                                                        <!-- works without single quotes <parameter name="aaiQueryKey" value="`'cloud-region.cloud-owner = att-aic AND ' + $aaiSourceEndpointKeySplits[0] + ' = ' + $aaiQueryKeySplits[0] + ' AND ' + $aaiSourceEndpointKeySplits[1] + ' = ' + $aaiQueryKeySplits[1]`" />-->

+                                                                                                                        <!-- key="cloud-region.cloud-owner = '$a' AND cloud-region.cloud-region-id = '$b' AND tenant.tenant-id = '$c' AND vserver.vserver-id = '$d'" -->

+                                                                                                                        <!--<parameter name="`'get-data-from-policy-output[' + $policyDataIndex + ']'`." value= '`$jsonContextPrefix.content.policy-data[$policyDataIndex].`' />-->

+                                                                                                                    </set>

+                                                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                                                        <parameter name="field2" value="LAINA: naming-policy-generate-name: Call AAI query for keys aai-constructed-name|region|aaiQueryKey:"/>

+                                                                                                                        <parameter name="field3" value="`$aai-constructed-name`" />

+                                                                                                                        <parameter name="field4" value="`$resource`" />

+                                                                                                                        <parameter name="field5" value="`$aaiQueryKey`" />

+                                                                                                                    </record>

+                                                                                                                    <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource='`$resource`'

+        key='`$aaiQueryKey`'

+        pfx="`'aai.' + $resource`" local-only='true' >

+                                                                                                                        <outcome value='success'>

+                                                                                                                            <block atomic="true">

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='tmp.tenant-name' value='`$aai.tenant.tenant-name`' />

+                                                                                                                                </set>

+                                                                                                                            </block>

+                                                                                                                        </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="Tenant not found in AAI" />

+                                                                                                                            </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="Tenant not found in AAI" />

+                                                                                                                            </return>

+                                                                                                                        </outcome>

+                                                                                                                    </get-resource>

+                                                                                                                    <set>

+                                                                                                                        <parameter name="name-var" value="`$propertiesIndex + '-naming-property-value'`" />

+                                                                                                                        <parameter name="value-var" value="`$property-name + '-' + $tmp.tenant-name`" />

+                                                                                                                        <parameter name="new-part" value="`$tmp.tenant-name` " />

+                                                                                                                    </set>

+                                                                                                                    <set>

+                                                                                                                        <parameter name="constructed-name" value="`$constructed-name + $new-part` "  />

+                                                                                                                    </set>

+                                                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                                                        <parameter name="field2" value="LAINA: naming-policy-generate-name: source-system AAI name-value pair|new-part|constructed-name:"/>

+                                                                                                                        <parameter name="field3" value="`$name-var`" />

+                                                                                                                        <parameter name="field4" value="`$value-var`" />

+                                                                                                                        <parameter name="field5" value="`$new-part`" />

+                                                                                                                        <parameter name="field6" value="`$constructed-name`" />

+                                                                                                                    </record>

+                                                                                                                </block>

+                                                                                                            </block>

+                                                                                                        </outcome>

+                                                                                                        <outcome value=''>

+                                                                                                            <block>

+                                                                                                                <set>

+                                                                                                                    <!-- until PM is passing the correct source-endpoint for memory value, 

+     use one passed via executeDG test

+

+<parameter name="`$propertiesIndex` + '-naming-property-value'" value="` $property-name + '-' + $source-endpoint `"  />

+-->

+                                                                                                                    <parameter name="seq-scope" value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].increment-sequence.scope`" />

+                                                                                                                    <parameter name="seq-start-value" value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].increment-sequence.start-value` " />

+                                                                                                                    <parameter name="seq-length" value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].increment-sequence.length` " />

+                                                                                                                    <parameter name="seq-increment" value="`$jsonContextPrefix.content.naming-models[$modelsIndex].naming-properties[$propertiesIndex].increment-sequence.increment` " />

+                                                                                                                </set>

+                                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                                                    <parameter name="field2" value="LAINA: naming-policy-generate-name: SDN-GC SEQUENCE info: scope|start-value|length|increment|constructed-name:"/>

+                                                                                                                    <parameter name="field3" value="`$seq-scope`" />

+                                                                                                                    <parameter name="field4" value="`$seq-start-value`" />

+                                                                                                                    <parameter name="field5" value="`$seq-length`" />

+                                                                                                                    <parameter name="field6" value="`$seq-increment`" />

+                                                                                                                    <parameter name="field7" value="`$constructed-name`" />

+                                                                                                                </record>

+                                                                                                            </block>

+                                                                                                        </outcome>

+                                                                                                    </switch>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                            <outcome value='Other'>

+                                                                                                <block>

+                                                                                                    <set>

+                                                                                                        <!-- until PM is passing the correct source-endpoint for memory value, 

+     use one passed via executeDG test

+

+<parameter name="`$propertiesIndex` + '-naming-property-value'" value="` $property-name + '-' + $source-endpoint `"  />

+-->

+                                                                                                        <parameter name="name-var" value="`$propertiesIndex + '-naming-property-value'`" />

+                                                                                                        <parameter name="value-var" value="`$property-name + '-' + $property-value` " />

+                                                                                                        <parameter name="new-part" value="`$property-value` " />

+                                                                                                    </set>

+                                                                                                    <set>

+                                                                                                        <parameter name="constructed-name" value="`$constructed-name + $new-part` "  />

+                                                                                                    </set>

+                                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                                        <parameter name="field2" value="LAINA: naming-policy-generate-name: property-value name-value pair|new-part|constructed-name:"/>

+                                                                                                        <parameter name="field3" value="`$name-var`" />

+                                                                                                        <parameter name="field4" value="`$value-var`" />

+                                                                                                        <parameter name="field5" value="`$new-part`" />

+                                                                                                        <parameter name="field6" value="`$constructed-name`" />

+                                                                                                    </record>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </block>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                </for>

+                                                            </block>

+                                                        </for>

+                                                        <block atomic='true'>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="LAINA: naming-policy-generate-name: call generate-unique-name: constructed-name"/>

+                                                                <parameter name="field6" value="`$constructed-name`" />

+                                                            </record>

+                                                            <set>

+                                                                <!--<parameter name='generate-unique-name-input.index-table-name' value='VM_NAME_INDEX' />-->

+                                                                <parameter name='generate-unique-name-input.index-table-name' value="`$table-name`" />

+                                                                <parameter name='generate-unique-name-input.index-table-prefix-column' value="`$table-prefix-column`" />

+                                                                <!--<parameter name='generate-unique-name-input.name-table-type' value='VNFAPI_VM_INSTANCE' />-->

+                                                                <parameter name='generate-unique-name-input.name-table-type' value="`$table-type`" />

+                                                                <!--<parameter name='generate-unique-name-input.prefix' value="`$naming-policy-generate-name-input.nfc-naming-code`" /><parameter name='generate-unique-name-input.index-length' value='003' />-->

+                                                                <parameter name='generate-unique-name-input.prefix' value="`$constructed-name`" />

+                                                                <parameter name='generate-unique-name-input.index-length' value="`$seq-length`" />

+                                                                <parameter name='generate-unique-name-input.action' value="`$naming-policy-generate-name-input.action`" />

+                                                                <parameter name='generate-unique-name-input.context-id' value="`$naming-policy-generate-name-input.context-id`" />

+                                                            </set>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-unique-name' mode='sync' >

+                                                                <outcome value='failure'>

+                                                                    <block>

+                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                            <parameter name="logger" value="message-log"/>

+                                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                            <parameter name="field2" value="LAINA: naming-policy-generate-name: Error calling generate-unique-name"/>

+                                                                        </record>

+                                                                        <return status='failure'>

+                                                                            <parameter name='ack-final' value='Y'/>

+                                                                            <parameter name="error-code" value="500" />

+                                                                            <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />

+                                                                        </return>

+                                                                    </block>

+                                                                </outcome>

+                                                                <outcome value='success'>

+                                                                    <switch test='`$naming-type`'>

+                                                                        <outcome value="VM">

+                                                                            <!-- <outcome value="MD-SAL"> -->

+                                                                            <block>

+                                                                                <set>

+                                                                                    <parameter name='naming-policy-generate-name-output.vm-name' value='`$generate-unique-name-output.generated-name`' />

+                                                                                    <parameter name='constructed-name' value='' />

+                                                                                    <parameter name='seq-length' value='' />

+                                                                                </set>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                    <parameter name="field2" value="LAINA: naming-policy-generate-name: generated vm-name|generate-unique-name-output.generated-name:"/>

+                                                                                    <parameter name="field5" value="`$naming-policy-generate-name-output.vm-name`" />

+                                                                                    <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />

+                                                                                </record>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value="VNFC">

+                                                                            <!-- <outcome value="MD-SAL"> -->

+                                                                            <block>

+                                                                                <set>

+                                                                                    <parameter name='naming-policy-generate-name-output.vnfc-name' value='`$generate-unique-name-output.generated-name`' />

+                                                                                    <parameter name='constructed-name' value='' />

+                                                                                    <parameter name='seq-length' value='' />

+                                                                                </set>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                    <parameter name="field2" value="LAINA: naming-policy-generate-name: generated vnfc-name|generate-unique-name-output.generated-name:"/>

+                                                                                    <parameter name="field5" value="`$naming-policy-generate-name-output.vnfc-name`" />

+                                                                                    <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />

+                                                                                </record>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value="VNF">

+                                                                            <!-- <outcome value="MD-SAL"> -->

+                                                                            <block>

+                                                                                <set>

+                                                                                    <parameter name='naming-policy-generate-name-output.vnf-name' value='`$generate-unique-name-output.generated-name`' />

+                                                                                    <parameter name='constructed-name' value='' />

+                                                                                    <parameter name='seq-length' value='' />

+                                                                                </set>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                    <parameter name="field2" value="LAINA: naming-policy-generate-name: generated vnf-name|generate-unique-name-output.generated-name:"/>

+                                                                                    <parameter name="field5" value="`$naming-policy-generate-name-output.vnf-name`" />

+                                                                                    <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />

+                                                                                </record>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value="NETWORK">

+                                                                            <block>

+                                                                                <set>

+                                                                                    <parameter name='naming-policy-generate-name-output.network-name' value='`$generate-unique-name-output.generated-name`' />

+                                                                                    <parameter name='constructed-name' value='' />

+                                                                                    <parameter name='seq-length' value='' />

+                                                                                </set>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                    <parameter name="field2" value="LAINA: naming-policy-generate-name: generated network-name|generate-unique-name-output.generated-name:"/>

+                                                                                    <parameter name="field5" value="`$naming-policy-generate-name-output.network-name`" />

+                                                                                    <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />

+                                                                                </record>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value="SERVICE">

+                                                                            <block>

+                                                                                <set>

+                                                                                    <parameter name='naming-policy-generate-name-output.service-name' value='`$generate-unique-name-output.generated-name`' />

+                                                                                    <parameter name='constructed-name' value='' />

+                                                                                    <parameter name='seq-length' value='' />

+                                                                                </set>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                                    <parameter name="field2" value="LAINA: naming-policy-generate-name: generated service-name|generate-unique-name-output.generated-name:"/>

+                                                                                    <parameter name="field5" value="`$naming-policy-generate-name-output.service-name`" />

+                                                                                    <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />

+                                                                                </record>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </outcome>

+                                                            </call>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="LAINA: naming-policy-generate-name: naming-type from returned policy does not match input.naming-type.  Do not construct name for: "/>

+                                                        <parameter name="field3" value="`$naming-type`" />

+                                                    </record>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </for>

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                                        <parameter name='filename' value='/var/tmp/naming-policy-generate-name.log' />

+                                    </execute>

+                                    <return status='success'>

+                                        <parameter name='naming-policy-generate-name-output.vm-name' value="`$naming-policy-generate-name-output.vm-name`" />

+                                        <parameter name='naming-policy-generate-name-output.vnfc-name' value="`$naming-policy-generate-name-output.vnfc-name`" />

+                                    </return>

+                                </block>

+                            </outcome>

+                        </execute>

+                    </block>

+                </outcome>

+                <outcome value='DELETE'>

+                    <block atomic='true'>

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="LAINA: naming-policy-generate-name: call generate-unique-name: constructed-name"/>

+                            <parameter name="field6" value="`$constructed-name`" />

+                        </record>

+                        <set>

+                            <!--<parameter name='generate-unique-name-input.index-table-name' value='VM_NAME_INDEX' />-->

+                            <parameter name='generate-unique-name-input.index-table-name' value="`$table-name`" />

+                            <parameter name='generate-unique-name-input.index-table-prefix-column' value="`$table-prefix-column`" />

+                            <!--<parameter name='generate-unique-name-input.name-table-type' value='VNFAPI_VM_INSTANCE' />-->

+                            <parameter name='generate-unique-name-input.name-table-type' value="`$table-type`" />

+                            <!--<parameter name='generate-unique-name-input.prefix' value="`$naming-policy-generate-name-input.nfc-naming-code`" /><parameter name='generate-unique-name-input.index-length' value='003' />-->

+                            <parameter name='generate-unique-name-input.prefix' value="`$constructed-name`" />

+                            <parameter name='generate-unique-name-input.index-length' value="`$seq-length`" />

+                            <parameter name='generate-unique-name-input.action' value="`$naming-policy-generate-name-input.action`" />

+                            <parameter name='generate-unique-name-input.context-id' value="`$naming-policy-generate-name-input.context-id`" />

+                        </set>

+                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-unique-name' mode='sync' >

+                            <outcome value='failure'>

+                                <block>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="LAINA: naming-policy-generate-name: Error calling generate-unique-name"/>

+                                    </record>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='success'>

+                                <switch test='`$naming-type`'>

+                                    <outcome value="VM">

+                                        <!-- <outcome value="MD-SAL"> -->

+                                        <block>

+                                            <set>

+                                                <parameter name='naming-policy-generate-name-output.vm-name' value='`$generate-unique-name-output.generated-name`' />

+                                                <parameter name='constructed-name' value='' />

+                                                <parameter name='seq-length' value='' />

+                                            </set>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="LAINA: naming-policy-generate-name: generated vm-name|generate-unique-name-output.generated-name:"/>

+                                                <parameter name="field5" value="`$naming-policy-generate-name-output.vm-name`" />

+                                                <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />

+                                            </record>

+                                        </block>

+                                    </outcome>

+                                    <outcome value="VNFC">

+                                        <!-- <outcome value="MD-SAL"> -->

+                                        <block>

+                                            <set>

+                                                <parameter name='naming-policy-generate-name-output.vnfc-name' value='`$generate-unique-name-output.generated-name`' />

+                                                <parameter name='constructed-name' value='' />

+                                                <parameter name='seq-length' value='' />

+                                            </set>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="LAINA: naming-policy-generate-name: generated vnfc-name|generate-unique-name-output.generated-name:"/>

+                                                <parameter name="field5" value="`$naming-policy-generate-name-output.vnfc-name`" />

+                                                <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />

+                                            </record>

+                                        </block>

+                                    </outcome>

+                                    <outcome value="VNF">

+                                        <!-- <outcome value="MD-SAL"> -->

+                                        <block>

+                                            <set>

+                                                <parameter name='naming-policy-generate-name-output.vnf-name' value='`$generate-unique-name-output.generated-name`' />

+                                                <parameter name='constructed-name' value='' />

+                                                <parameter name='seq-length' value='' />

+                                            </set>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="LAINA: naming-policy-generate-name: generated vnf-name|generate-unique-name-output.generated-name:"/>

+                                                <parameter name="field5" value="`$naming-policy-generate-name-output.vnf-name`" />

+                                                <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />

+                                            </record>

+                                        </block>

+                                    </outcome>

+                                    <outcome value="NETWORK">

+                                        <block>

+                                            <set>

+                                                <parameter name='naming-policy-generate-name-output.network-name' value='`$generate-unique-name-output.generated-name`' />

+                                                <parameter name='constructed-name' value='' />

+                                                <parameter name='seq-length' value='' />

+                                            </set>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="LAINA: naming-policy-generate-name: generated network-name|generate-unique-name-output.generated-name:"/>

+                                                <parameter name="field5" value="`$naming-policy-generate-name-output.network-name`" />

+                                                <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />

+                                            </record>

+                                        </block>

+                                    </outcome>

+                                    <outcome value="SERVICE">

+                                        <block>

+                                            <set>

+                                                <parameter name='naming-policy-generate-name-output.service-name' value='`$generate-unique-name-output.generated-name`' />

+                                                <parameter name='constructed-name' value='' />

+                                                <parameter name='seq-length' value='' />

+                                            </set>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="LAINA: naming-policy-generate-name: generated service-name|generate-unique-name-output.generated-name:"/>

+                                                <parameter name="field5" value="`$naming-policy-generate-name-output.service-name`" />

+                                                <parameter name="field6" value="`$generate-unique-name-output.generated-name`" />

+                                            </record>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                        </call>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_naming-policy-generate-unique-name.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_naming-policy-generate-unique-name.xml
new file mode 100644
index 0000000..23aece7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_naming-policy-generate-unique-name.xml
@@ -0,0 +1,182 @@
+<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='naming-policy-generate-unique-name' mode='sync'>

+        <block atomic="true">

+            <switch test='`$generate-unique-name-input.action`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.action not supplied' />

+                    </return>

+                </outcome>

+                <outcome value='ASSIGN'>

+                    <block atomic="true">

+                        <switch test='`$generate-unique-name-input.context-id`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='error-message' 

+	value="generate-unique-name-input.context-id cannot be null for ASSIGN action" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$generate-unique-name-input.name-table-type`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='generate-unique-name-output.error-message' value='generate-unique-name-input.name-table-type not supplied' />

+                                </return>

+                            </outcome>

+                            <outcome value='VNF_INSTANCE'>

+                                <set>

+                                    <parameter name='tmp.gname.custom-query-string' value='nodes/generic-vnfs?vnf-name=' />

+                                </set>

+                            </outcome>

+                            <outcome value='VM_INSTANCE'>

+                                <set>

+                                    <parameter name='tmp.gname.custom-query-string' value='nodes/vservers?vserver-name=' />

+                                </set>

+                            </outcome>

+                            <outcome value='NETWORK_INSTANCE'>

+                                <set>

+                                    <parameter name='tmp.gname.custom-query-string' value='nodes/l3-networks?network-name=' />

+                                </set>

+                            </outcome>

+                            <outcome value='SERVICE_INSTANCE'>

+                                <set>

+                                    <parameter name='tmp.gname.custom-query-string' value='nodes/service-instances?service-instance-name=' />

+                                </set>

+                            </outcome>

+                            <outcome value='VNFC_INSTANCE'>

+                                <set>

+                                    <parameter name='tmp.gname.custom-query-string' value='nodes/vnfcs?vnfc-name=' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='tmp.gun.nononap' value='NON-ONAP' />

+                        </set>

+                        <set>

+                            <parameter name='tmp.gun.transient' value='TRANSIENT' />

+                        </set>

+                        <set>

+                            <parameter name='tmp.grn.loop.flag' value='true' />

+                        </set>

+                        <while test='`$tmp.grn.loop.flag`'>

+                            <block atomic="true">

+                                <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >

+                                    <outcome value='failure'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='tmp.grn.loop.flag' value='false' />

+                                            </set>

+                                            <return status='failure'>

+                                                <parameter name='error-message' 

+	value="`'Encountered error in naming-policy-generate-unique-name: ' + 

+		$generate-unique-name-output.error-message`" />

+                                            </return>

+                                        </block>

+                                    </outcome>

+                                </call>

+                                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">

+                                    <parameter name="source" value='`$generate-unique-name-output.generated-name`'/>

+                                    <parameter name="outputPath" value="encoded-name" />

+                                </execute>

+                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="custom-query"

+      key="format = 'resource'"

+      force="true"

+      local-only="false"

+      pfx="tmp.nodes-query">

+                                    <parameter name="start[0]" value="`$tmp.gname.custom-query-string + 

+			$encoded-name`" />

+                                    <parameter name="start_length" value="1" />

+                                    <outcome value='not-found'>

+                                        <set>

+                                            <parameter name='tmp.grn.loop.flag' value='false' />

+                                        </set>

+                                    </outcome>

+                                    <outcome value='failure'>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name='tmp.grn.loop.flag' value='false' />

+                                            </set>

+                                            <return status='failure'>

+                                                <parameter name='error-message' 

+	value="`'Error updating GENERIC_RESOURCE_NAME.context_id from TRANSIENT to ' 

+		+ $tmp.context-id.nononap`" />

+                                            </return>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='success'>

+                                        <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+	key="update GENERIC_RESOURCE_NAME set context_id = $tmp.gun.nononap  

+		WHERE type = $generate-unique-name-input.name-table-type 

+		AND context_id = $tmp.gun.transient">

+                                            <outcome value='failure'>

+                                                <return status='failure'>

+                                                    <parameter name='error-message' 

+	value="`'Error updating GENERIC_RESOURCE_NAME.context_id from TRANSIENT to ' 

+		+ $tmp.context-id.nononap`" />

+                                                </return>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <return status='failure'>

+                                                    <parameter name='error-message' 

+	value="`'No GENERIC_RESOURCE_NAME found with context_id = TRANSIENT and type = ' 

+		+ $generate-unique-name-input.name-table-type`"/>

+                                                </return>

+                                            </outcome>

+                                        </update>

+                                    </outcome>

+                                </save>

+                            </block>

+                        </while>

+                        <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+	key="update GENERIC_RESOURCE_NAME set context_id = $generate-unique-name-input.context-id   

+		WHERE type = $generate-unique-name-input.name-table-type 

+		AND name = $generate-unique-name-output.generated-name 

+		AND context_id = $tmp.gun.transient">

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='error-message' 

+	value="`'Error updating GENERIC_RESOURCE_NAME.context_id from TRANSIENT to ' 

+		+ $tmp.context-id.nononap`" />

+                                </return>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <return status='failure'>

+                                    <parameter name='error-message' 

+	value="`'No GENERIC_RESOURCE_NAME found with context_id = TRANSIENT and type = ' 

+		+ $generate-unique-name-input.name-table-type`"/>

+                                </return>

+                            </outcome>

+                        </update>

+                    </block>

+                </outcome>

+                <outcome value='DELETE'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='rollback-generated-names-input.naming-type' value='`$generate-unique-name-input.name-table-type`' />

+                        </set>

+                        <set>

+                            <parameter name='rollback-generated-names-input.context-id' value='`$generate-unique-name-input.context-id`' />

+                        </set>

+                        <call module='GENERIC-RESOURCE-API' rpc='rollback-generated-names' mode='sync' >

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='error-message' 

+	value="`'Encountered error in rollback-generated-names: ' + 

+		$error-message`" />

+                                </return>

+                            </outcome>

+                        </call>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='generate-unique-name-output.error-message' value='Invalid generate-unique-name-input.action. Valid values are ASSIGN or DELETE' />

+                    </return>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-activate.xml
new file mode 100755
index 0000000..ed5130a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-activate.xml
@@ -0,0 +1,206 @@
+<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='network-topology-operation-activate' mode='sync'>

+        <block atomic="true">

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $network-topology-operation-input.network-information.network-id AND 

+                     depth = 'all'" 

+		local-only="false" 

+		pfx="aai.l3-network">

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="network-id not found in AAI" />

+                    </return>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + 'from AnAI'" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <switch test='`$aai.l3-network.subnets.subnet_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="no networks found" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <switch test='`$network-data.network-topology.network-topology-identifier-structure.network-instance-group-id`'>

+                        <outcome value=''>

+                            <switch test='`$service-data.networks.network[$nidx].network-data.network-information.from-preload`'>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <for index='sidx' start='0' end='`$aai.l3-network.subnets.subnet_length`' >

+                                            <block atomic="true">

+                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $aai.l3-network.network-id 

+			AND subnet.subnet-id = $aai.l3-network.subnets.subnet[$sidx].subnet-id" >

+                                                    <parameter name="orchestration-status" value="Active" />

+                                                    <outcome value='failure'>

+                                                        <return status="failure">

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet." />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value="not-found">

+                                                        <return status="failure">

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet.  Subnet not found." />

+                                                        </return>

+                                                    </outcome>

+                                                </update>

+                                            </block>

+                                        </for>

+                                    </block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <block atomic="true">

+                                        <for index='sidx' start='0' end='`$aai.l3-network.subnets.subnet_length`' >

+                                            <block atomic="true">

+                                                <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_SUBNETS where entity_id = $aai.l3-network.subnets.subnet[$sidx].subnet-id ; "

+        pfx='tmp.eipam-subnet-row'>

+                                                    <outcome value='failure'>

+                                                        <return status="failure">

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNETS failed to find subnet matching aai subnet." />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value="not-found">

+                                                        <return status="failure">

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="Subnet not found in EIPAM_IP_SUBNETS - activate failed." />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='success'>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name="eipam-ip-block.entity-id" value="`$aai.l3-network.subnets.subnet[$sidx].subnet-id`"/>

+                                                                <parameter name="eipam-ip-block.plans[0].plan-name" value="`$tmp.eipam-subnet-row.plan-name`"/>

+                                                            </set>

+                                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                            <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="activateSubnet">

+                                                                <outcome value='failure'>

+                                                                    <return status="failure">

+                                                                        <parameter name="error-code" value="500"/>

+                                                                        <parameter name="error-message" value="An error occured while activating subnet in EIPAM." />

+                                                                    </return>

+                                                                </outcome>

+                                                            </execute>

+                                                            <save 

+	plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' 

+	resource='SQL'

+	key="UPDATE EIPAM_IP_SUBNETS

+             SET status = 'ACTIVE'

+             WHERE entity_id = $eipam-ip-block.entity-id ; "

+    force='true'

+        pfx='pfx.eipam-subnet-row'>

+                                                                <outcome value='failure'>

+                                                                    <return status="failure">

+                                                                        <parameter name="error-code" value="500"/>

+                                                                        <parameter name="error-message" value="An error occured while updating subnet to active in mysql." />

+                                                                    </return>

+                                                                </outcome>

+                                                                <outcome value="not-found">

+                                                                    <return status="failure">

+                                                                        <parameter name="error-code" value="500"/>

+                                                                        <parameter name="error-message" value="An error occured while updating subnet to active in mysql." />

+                                                                    </return>

+                                                                </outcome>

+                                                                <outcome value='success'>

+                                                                    <block atomic='true'>

+                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $aai.l3-network.network-id 

+			AND subnet.subnet-id = $eipam-ip-block.entity-id" >

+                                                                            <parameter name="orchestration-status" value="Active" />

+                                                                            <outcome value='failure'>

+                                                                                <return status="failure">

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet." />

+                                                                                </return>

+                                                                            </outcome>

+                                                                            <outcome value="not-found">

+                                                                                <return status="failure">

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet.  Subnet not found." />

+                                                                                </return>

+                                                                            </outcome>

+                                                                        </update>

+                                                                    </block>

+                                                                </outcome>

+                                                            </save>

+                                                        </block>

+                                                    </outcome>

+                                                </get-resource>

+                                            </block>

+                                        </for>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </outcome>

+                        <outcome value='Other'>

+                            <block atomic="true">

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="network collection activate failed" />

+                                </return>

+                            </block>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </switch>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $aai.l3-network.network-id" >

+                <parameter name="orchestration-status" value="Active" />

+                <outcome value='failure'>

+                    <return status="failure">

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="Failure updating orchestration-status in AAI for l3-network" />

+                    </return>

+                </outcome>

+                <outcome value="not-found">

+                    <return status="failure">

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="Failure updating orchestration-status in AAI for l3-network.  Network not found." />

+                    </return>

+                </outcome>

+            </update>

+            <set>

+                <parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />

+            </set>

+            <set>

+                <parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />

+            </set>

+            <set>

+                <parameter name='network-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $network-topology-operation-input.service-information.service-instance-id

+ + '/service-data/networks/network/'

+ + $networkId

+ + '/network-data/network-topology/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='Created' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-assign-automated.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-assign-automated.xml
new file mode 100755
index 0000000..4de5c5f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-assign-automated.xml
@@ -0,0 +1,1405 @@
+<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='network-topology-operation-assign-automated' mode='sync'>

+        <block atomic="true">

+            <switch test="`$tmp.nidx`">

+                <outcome value=''>

+                    <switch test='`$service-data.networks.network_length`'>

+                        <outcome value=''>

+                            <set>

+                                <parameter name='nidx' value='0' />

+                                <parameter name='nidx_len' value='1'/>

+                            </set>

+                        </outcome>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name='nidx' value='`$service-data.networks.network_length`' />

+                                <parameter name='nidx_len' value='`$service-data.networks.network_length + 1`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='nidx' value='`$tmp.nidx`' />

+                        <parameter name='nidx_len' value='`$service-data.networks.network_length`' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="tmp.error-message" value=""/>

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />

+            </set>

+            <set>

+                <parameter name='tmp.l3-network.model-invariant-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`" />

+                <parameter name='tmp.l3-network.model-version-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-version`" />

+                <parameter name='tmp.l3-network.model-customization-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`" />

+                <parameter name='s-onap-model-information.model-invariant-uuid' value='`$service-model.invariant-uuid`' />

+                <parameter name='s-onap-model-information.model-version' value='`$service-model.version`' />

+                <parameter name='s-onap-model-information.model-uuid' value='`$service-model.service-uuid`' />

+                <parameter name='s-onap-model-information.model-name' value='`$service-model.name`' />

+                <parameter name='n-onap-model-information.model-invariant-uuid' value='`$network-model.invariant-uuid`' />

+                <parameter name='n-onap-model-information.model-version' value='`$network-model.version`' />

+                <parameter name='n-onap-model-information.model-uuid' value='`$network-model.uuid`' />

+                <parameter name='n-onap-model-information.model-name' value='`$network-model.name`' />

+            </set>

+            <set>

+                <parameter name='network-data.service-information.ecomp-model-information.' value="`$s-onap-model-information.`" />

+                <parameter name='network-data.network-information.ecomp-model-information.' value="`$n-onap-model-information.`" />

+            </set>

+            <switch test='`$network-model.is-bound-to-vpn`'>

+                <outcome value='Y'>

+                    <block atomic="true">

+                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VPN_BINDINGS WHERE network_customization_uuid = $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid'

+  pfx='vpn-bindings[]'>

+                            <outcome value='success'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='hasVpnBindings' value='true' />

+                                    </set>

+                                    <for index='vidx' start='0' end='`$vpn-bindings_length`' >

+                                        <block atomic="true">

+                                            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="vpn-binding" 

+		key="vpn-binding.vpn-id = $vpn-bindings[$vidx].binding-uuid"

+        pfx='aai.vpnBinding' local-only='false' >

+                                                <outcome value='success'>

+                                                    <block></block>

+                                                </outcome>

+                                                <outcome value='not-found'>

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.error-message" value="`'No vpn binding found for network-model.vpn-binding=' 

+    + $vpn-bindings[$vidx].binding-uuid`"/>

+                                                        </set>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                            </set>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500'/>

+                                                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.error-message" value="`'No vpn binding found for network-model.vpn-binding=' 

+    + $vpn-bindings[$vidx].binding-uuid`"/>

+                                                        </set>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                            </set>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500'/>

+                                                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                            </get-resource>

+                                        </block>

+                                    </for>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="tmp.error-message" value="Network model is_bound_to_vpn=true but no vpn_binding is present"/>

+                                    </set>

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                            <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500'/>

+                                            <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="tmp.error-message" value="Unexpected error retrieving vpn binding"/>

+                                    </set>

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                            <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500'/>

+                                            <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='tmp.l3-network.network-id' value="`$tmp.return.generate-l3network-network-id.uuid`" />

+                <parameter name='tmp.l3-network.network-name' value="`$tmp.network-instance-name`" />

+                <parameter name='tmp.l3-network.network-type' value="`$network-model.network-type`" />

+                <parameter name='tmp.l3-network.network-role' value="`$network-model.network-role`" />

+                <parameter name='tmp.l3-network.network-technology' value="`$network-model.network-technology`" />

+                <parameter name='tmp.l3-network.is-bound-to-vpn' value="`$network-model.is-bound-to-vpn`" />

+                <parameter name='tmp.l3-network.orchestration-status' value="PendingCreate" />

+                <parameter name='tmp.l3-network.model-invariant-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`" />

+                <parameter name='tmp.l3-network.model-version-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-version`" />

+                <parameter name='tmp.l3-network.model-customization-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`" />

+                <parameter name='tmp.l3-network.is-provider-network' value="`$network-model.is-provider-network`" />

+                <parameter name='tmp.l3-network.is-shared-network' value="`$network-model.is-shared-network`" />

+                <parameter name='tmp.l3-network.is-external-network' value="`$network-model.is-external-network`" />

+                <parameter name='tmp.l3-network.eipam-v6-address-plan' value="`$network-model.eipam-v6-address-plan`" />

+                <parameter name='tmp.l3-network.eipam-v4-address-plan' value="`$network-model.eipam-v4-address-plan`" />

+                <parameter name='tmp.l3-network.service-id' value="`$service-data.service-information.service-id`" />

+                <parameter name='tmp.l3-network.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $network-topology-operation-input.service-information.service-instance-id

+ + '/service-data/networks/network/'

+ + $tmp.l3-network.network-id

+ + '/network-data/network-topology/'` " />

+            </set>

+            <switch test='`$network-model.is-provider-network`'>

+                <outcome value='Y'>

+                    <set>

+                        <parameter name='tmp.l3-network.physical-network-name' value="`$network-model.physical-network-name`" />

+                        <parameter name='tmp.l3-network.is-provider-network-boolean' value='true' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.l3-network.physical-network-name' value="" />

+                        <parameter name='tmp.l3-network.is-provider-network-boolean' value='false' />

+                    </set>

+                </outcome>

+            </switch>

+            <switch test='`$network-model.is-shared-network`'>

+                <outcome value='Y'>

+                    <set>

+                        <parameter name='tmp.l3-network.is-shared-network-boolean' value='true' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.l3-network.is-shared-network-boolean' value='false' />

+                    </set>

+                </outcome>

+            </switch>

+            <switch test='`$network-model.is-external-network`'>

+                <outcome value='Y'>

+                    <set>

+                        <parameter name='tmp.l3-network.is-external-network-boolean' value='true' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.l3-network.is-external-network-boolean' value='false' />

+                    </set>

+                </outcome>

+            </switch>

+            <switch test='`$network-model.is-bound-to-vpn`'>

+                <outcome value='Y'>

+                    <set>

+                        <parameter name='tmp.l3-network.is-bound-to-vpn-boolean' value='true' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.l3-network.is-bound-to-vpn-boolean' value='false' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='tmp.complex-found' value='false' />

+            </set>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="cloud-region" 

+		key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND 

+		     cloud-region.cloud-region-id = $network-topology-operation-input.network-request-input.aic-cloud-region AND 

+		     depth = '0'"

+        pfx='aai.cloud-region' local-only='false' >

+                <outcome value='not-found'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Cloud region not found in AAI"/>

+                        </set>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                            </set>

+                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='failure'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Error retrieving cloud region from AAI"/>

+                        </set>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                            </set>

+                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </get-resource>

+            <switch test='`$aai.cloud-region.relationship-list.relationship_length`'>

+                <outcome value='0'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Cloud region missing relationships in AAI"/>

+                        </set>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                            </set>

+                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value=''>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Cloud region missing relationships in AAI"/>

+                        </set>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                            </set>

+                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </switch>

+            <for silentFailure='false' index='ridx' start='0' end="`$aai.cloud-region.relationship-list.relationship_length`" >

+                <for silentFailure='false' index='rdidx' start='0' end="`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`" >

+                    <switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>

+                        <outcome value='complex.physical-location-id'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='tmp.complex-found' value='true' />

+                                </set>

+                                <set>

+                                    <parameter name='service-data.network-request-input.aic-clli' value='`$aai.complex.physical-location-id`' />

+                                </set>

+                                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="complex" 

+		key="complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"

+        pfx='aai.complex' local-only='false' >

+                                    <outcome value='success'>

+                                        <block atomic="true">

+                                            <switch test='`$aai.complex.region`'>

+                                                <outcome value='USA'>

+                                                    <block>

+                                                        <set>

+                                                            <parameter name='aai.complex.region' value='US' />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='CALA'>

+                                                    <block>

+                                                        <set>

+                                                            <parameter name='aai.complex.region' value='LA' />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='CA'>

+                                                    <block></block>

+                                                </outcome>

+                                                <outcome value='US'>

+                                                    <block></block>

+                                                </outcome>

+                                                <outcome value='LA'>

+                                                    <block></block>

+                                                </outcome>

+                                                <outcome value='EMEA'>

+                                                    <block></block>

+                                                </outcome>

+                                                <outcome value='AP'>

+                                                    <block></block>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.error-message" value="Complex.region unknown"/>

+                                                        </set>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                            </set>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500'/>

+                                                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="tmp.error-message" value="Complex not found in AAI"/>

+                                            </set>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500'/>

+                                                    <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='failure'>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="tmp.error-message" value="Error retrieving complex from AA"/>

+                                            </set>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500'/>

+                                                    <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                </get-resource>

+                            </block>

+                        </outcome>

+                    </switch>

+                </for>

+            </for>

+            <switch test='`$tmp.complex-found`'>

+                <outcome value='false'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Complex not found in AAI"/>

+                        </set>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                            </set>

+                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$network-model.network-technology`'>

+                <outcome value='Contrail'>

+                    <block atomic="true">

+                        <switch test="`$network-model.use-ipv4`">

+                            <outcome value='Y'>

+                                <block atomic='true'>

+                                    <switch test='`$network-model.eipam-v4-address-plan`'>

+                                        <outcome value='AIC_ATM_UNPROTECTED_V4'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='AIC_ATM_PROTECTED_V4'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='AIC_AIM_LANDING_NETWORK_V4'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name="error-code" value="500"/>

+                                                    <parameter name="tmp.error-message" value="Invalid address plan for VIPR"/>

+                                                </set>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                        <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500'/>

+                                                        <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                    </return>

+                                                </block>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <switch test="`$network-model.use-ipv6`">

+                            <outcome value='Y'>

+                                <block atomic='true'>

+                                    <switch test='`$network-model.eipam-v6-address-plan`'>

+                                        <outcome value='AIC_ATM_UNPROTECTED_V6'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='AIC_ATM_PROTECTED_V6'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='AIC_AIM_LANDING_NETWORK_V6'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name="error-code" value="500"/>

+                                                    <parameter name="tmp.error-message" value="EIPAM V6 Address plan should be null"/>

+                                                </set>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                        <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500'/>

+                                                        <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                    </return>

+                                                </block>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='AIC_SR_IOV'>

+                    <block atomic="true">

+                        <switch test="`$network-model.use-ipv4`">

+                            <outcome value='Y'>

+                                <block atomic='true'>

+                                    <switch test='`$network-model.eipam-v4-address-plan`'>

+                                        <outcome value='AIC_DATA_PLANE_UNPROTECTED_V4'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='AIC_DATA_PLANE_PROTECTED_V4'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='AIC_DATA_PLANE_PRIVATE_V4'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name="error-code" value="500"/>

+                                                    <parameter name="tmp.error-message" value="Invalid address plan for SRIOV"/>

+                                                </set>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                        <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500'/>

+                                                        <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                    </return>

+                                                </block>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <switch test="`$network-model.use-ipv6`">

+                            <outcome value='Y'>

+                                <block atomic='true'>

+                                    <switch test='`$network-model.eipam-v6-address-plan`'>

+                                        <outcome value="AIC_ATM_UNPROTECTED_V6">

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value="AIC_ATM_PROTECTED_V6">

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value="AIC_DATA_PLANE_UNPROTECTED_V6">

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value="AIC_DATA_PLANE_PRIVATE_V6">

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value="AIC_DATA_PLANE_PROTECTED_V6">

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name="error-code" value="500"/>

+                                                    <parameter name="tmp.error-message" value="Invalid ipv6 address plan for SRIOV"/>

+                                                </set>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                        <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500'/>

+                                                        <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                    </return>

+                                                </block>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Invalid network-technology.  Only AIC_SR_IOV and Contrail are supported for network automated flow"/>

+                        </set>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                            </set>

+                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='tmp.process-eipam-action' value='assign' />

+            </set>

+            <!--tmp.level should be set to 1-->

+            <call module='GENERIC-RESOURCE-API' rpc='process-eipam-pools' mode='sync' ></call>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value="__TIMESTAMP__"/>

+                <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                <parameter name="field4" value="Values after process-eipam"/>

+                <parameter name="field5" value="`level1-v4-mask`"/>

+                <parameter name="field6" value="`$tmp.l3-network.level1.v4.mask`"/>

+                <parameter name="field7" value="`level1-v4-ipprefix`"/>

+                <parameter name="field8" value="`$tmp.l3-network.level1.v4.ip-prefix`"/>

+                <parameter name="field9" value="`level1-v4-entity-id`"/>

+                <parameter name="field10" value="`$tmp.l3-network.level1.v4.entity-id`"/>

+                <parameter name="field11" value="`level2-v4-mask`"/>

+                <parameter name="field12" value="`$tmp.l3-network.level2.v4.mask`"/>

+                <parameter name="field13" value="`level2-v4-ipprefix`"/>

+                <parameter name="field14" value="`$tmp.l3-network.level2.v4.ip-prefix`"/>

+                <parameter name="field15" value="`level2-v4-entity-id`"/>

+                <parameter name="field16" value="`$tmp.l3-network.level2.v4.entity-id`"/>

+            </record>

+            <set>

+                <parameter name='v4.entity-id' value='`$tmp.l3-network.level2.v4.entity-id`' />

+                <parameter name='v4.ip-prefix' value='`$tmp.l3-network.level2.v4.ip-prefix`' />

+                <parameter name='v4.mask' value='`$tmp.l3-network.level2.v4.mask`' />

+                <parameter name='v6.entity-id' value='`$tmp.l3-network.level2.v6.entity-id`' />

+                <parameter name='v6.ip-prefix' value='`$tmp.l3-network.level2.v6.ip-prefix`' />

+                <parameter name='v6.mask' value='`$tmp.l3-network.level2.v6.mask`' />

+            </set>

+            <!--tmp.level should be set to 1-->

+            <call module='GENERIC-RESOURCE-API' rpc='create-l3-subnet' mode='sync' ></call>

+            <set>

+                <parameter name='tmp.network-topology.network-topology-identifier-structure.network-id' value="`$tmp.l3-network.network-name`" />

+                <parameter name='tmp.network-topology.network-topology-identifier-structure.network-name' value="`$tmp.l3-network.network-name`" />

+                <parameter name='tmp.network-topology.network-topology-identifier-structure.network-type' value="`$tmp.l3-network.network-type`" />

+                <parameter name='tmp.network-topology.network-topology-identifier-structure.network-role' value="`$tmp.l3-network.network-role`" />

+                <parameter name='tmp.network-topology.network-topology-identifier-structure.network-technology' value="`$tmp.l3-network.network-technology`" />

+                <parameter name='tmp.network-topology.network-topology-identifier-structure.eipam-v4-address-plan' value="`$network-model.eipam-v4-address-plan`" />

+                <parameter name='tmp.network-topology.network-topology-identifier-structure.eipam-v6-address-plan' value="`$network-model.eipam-v6-address-plan`" />

+                <parameter name='tmp.network-topology.region-identifier.tenant' value="`$network-topology-operation-input.network-request-input.tenant`" />

+                <parameter name='tmp.network-topology.region-identifier.aic-cloud-region' value="`$network-topology-operation-input.network-request-input.aic-cloud-region`" />

+                <parameter name='tmp.network-topology.region-identifier.aic-clli' value="`$network-topology-operation-input.network-request-input.aic-clli`" />

+                <parameter name='tmp.network-topology.onap-model-information.' value="`$network-topology-operation-input.network-information.onap-model-information.`" />

+                <parameter name='tmp.network-topology.network-parameters.' value="`$network-topology-operation-input.network-request-input.network-input-parameters.`" />

+            </set>

+            <switch test='`$tmp.l3-network.service-id`'>

+                <outcome value=''>

+                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $tmp.l3-network.network-id" >

+                        <!-- Create l3-network object -->

+                        <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                        <parameter name="network-name" value="`$tmp.l3-network.network-name`" />

+                        <parameter name="network-type" value="`$tmp.l3-network.network-type`" />

+                        <parameter name="network-role" value="`$tmp.l3-network.network-role`" />

+                        <parameter name="network-technology" value="`$tmp.l3-network.network-technology`" />

+                        <parameter name="is-bound-to-vpn" value="`$tmp.l3-network.is-bound-to-vpn-boolean`" />

+                        <parameter name="tenant-id" value="`$network-topology-operation-input.network-request-information.tenant`" />

+                        <parameter name="orchestration-status" value="PendingCreate" />

+                        <parameter name="persona-model-id" value="`$tmp.l3-network.persona-model-id`" />

+                        <parameter name="persona-model-version" value="`$tmp.l3-network.persona-model-version`" />

+                        <parameter name="persona-model-customization-id" value="`$tmp.l3-network.persona-model-customization-id`" />

+                        <parameter name="physical-network-name" value="`$tmp.l3-network.physical-network-name`" />

+                        <parameter name="is-provider-network" value="`$tmp.l3-network.is-provider-network-boolean`" />

+                        <parameter name="is-shared-network" value="`$tmp.l3-network.is-shared-network-boolean`" />

+                        <parameter name="is-external-network" value="`$tmp.l3-network.is-external-network-boolean`" />

+                        <parameter name="selflink" value="`$tmp.l3-network.self-link`" />

+                        <outcome value='failure'>

+                            <block>

+                                <set>

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="tmp.error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`"/>

+                                </set>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                        <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                    </set>

+                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500'/>

+                                        <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                    </return>

+                                </block>

+                            </block>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <block>

+                                <set>

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="tmp.error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`"/>

+                                </set>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                        <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                    </set>

+                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500'/>

+                                        <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                    </return>

+                                </block>

+                            </block>

+                        </outcome>

+                    </save>

+                </outcome>

+                <outcome value='Other'>

+                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $tmp.l3-network.network-id" >

+                        <!-- Create l3-network object -->

+                        <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                        <parameter name="network-name" value="`$tmp.l3-network.network-name`" />

+                        <parameter name="network-type" value="`$tmp.l3-network.network-type`" />

+                        <parameter name="network-role" value="`$tmp.l3-network.network-role`" />

+                        <parameter name="network-technology" value="`$tmp.l3-network.network-technology`" />

+                        <parameter name="is-bound-to-vpn" value="`$tmp.l3-network.is-bound-to-vpn-boolean`" />

+                        <parameter name="service-id" value="`$tmp.l3-network.service-id`" />

+                        <parameter name="tenant-id" value="`$network-topology-operation-input.network-request-information.tenant`" />

+                        <parameter name="orchestration-status" value="PendingCreate" />

+                        <parameter name="persona-model-id" value="`$tmp.l3-network.persona-model-id`" />

+                        <parameter name="persona-model-version" value="`$tmp.l3-network.persona-model-version`" />

+                        <parameter name="persona-model-customization-id" value="`$tmp.l3-network.persona-model-customization-id`" />

+                        <parameter name="physical-network-name" value="`$tmp.l3-network.physical-network-name`" />

+                        <parameter name="is-provider-network" value="`$tmp.l3-network.is-provider-network-boolean`" />

+                        <parameter name="is-shared-network" value="`$tmp.l3-network.is-shared-network-boolean`" />

+                        <parameter name="is-external-network" value="`$tmp.l3-network.is-external-network-boolean`" />

+                        <parameter name="selflink" value="`$tmp.l3-network.self-link`" />

+                        <outcome value='failure'>

+                            <block>

+                                <set>

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="tmp.error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`"/>

+                                </set>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                        <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                    </set>

+                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500'/>

+                                        <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                    </return>

+                                </block>

+                            </block>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <block>

+                                <set>

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="tmp.error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`"/>

+                                </set>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                        <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                    </set>

+                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500'/>

+                                        <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                    </return>

+                                </block>

+                            </block>

+                        </outcome>

+                    </save>

+                </outcome>

+            </switch>

+            <for index='sidx' start='0' end='`$tmp.l3-network.subnet_length`' >

+                <block atomic="true">

+                    <set>

+                        <parameter name="tmp.subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`"/>

+                    </set>

+                    <switch test='`$tmp.l3-network.subnet[$sidx].dhcp-enabled`'>

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>

+                                    <outcome value=''>

+                                        <block atomic='true'>

+                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND subnet.subnet-id = $tmp.subnet-id" >

+                                                <!-- Create l3-network object -->

+                                                <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                                <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />

+                                                <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />

+                                                <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />

+                                                <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />

+                                                <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />

+                                                <parameter name="dhcp-start" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />

+                                                <parameter name="dhcp-end" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />

+                                                <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />

+                                                <parameter name="orchestration-status" value="PendingCreate" />

+                                                <outcome value='failure'>

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                        </set>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                            </set>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500'/>

+                                                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='not-found'>

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                        </set>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                            </set>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500'/>

+                                                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                            </save>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic='true'>

+                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND subnet.subnet-id = $tmp.subnet-id" >

+                                                <!-- Create l3-network object -->

+                                                <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                                <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />

+                                                <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />

+                                                <parameter name="gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />

+                                                <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />

+                                                <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />

+                                                <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />

+                                                <parameter name="dhcp-start" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />

+                                                <parameter name="dhcp-end" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />

+                                                <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />

+                                                <parameter name="orchestration-status" value="PendingCreate" />

+                                                <outcome value='failure'>

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                        </set>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                            </set>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500'/>

+                                                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='not-found'>

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                        </set>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                            </set>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500'/>

+                                                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                            </save>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                        <outcome value='false'>

+                            <block atomic="true">

+                                <switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>

+                                    <outcome value=''>

+                                        <block atomic='true'>

+                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND subnet.subnet-id = $tmp.subnet-id" >

+                                                <!-- Create l3-network object -->

+                                                <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                                <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />

+                                                <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />

+                                                <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />

+                                                <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />

+                                                <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />

+                                                <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />

+                                                <parameter name="orchestration-status" value="PendingCreate" />

+                                                <outcome value='failure'>

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                        </set>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                            </set>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500'/>

+                                                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='not-found'>

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                        </set>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                            </set>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500'/>

+                                                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                            </save>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic='true'>

+                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND subnet.subnet-id = $tmp.subnet-id" >

+                                                <!-- Create l3-network object -->

+                                                <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                                <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />

+                                                <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />

+                                                <parameter name="gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />

+                                                <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />

+                                                <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />

+                                                <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />

+                                                <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />

+                                                <parameter name="orchestration-status" value="PendingCreate" />

+                                                <outcome value='failure'>

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                        </set>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                            </set>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500'/>

+                                                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='not-found'>

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                        </set>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                            </set>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500'/>

+                                                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                            </save>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <switch test='`$hasVpnBindings`'>

+                <outcome value='true'>

+                    <block atomic="true">

+                        <for index='vidx' start='0' end='`$vpn-bindings_length`' >

+                            <block atomic='true'>

+                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.l3-network.network-id" >

+                                    <parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />

+                                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />

+                                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$vpn-bindings[$vidx].binding-uuid`" />

+                                    <outcome value='failure'>

+                                        <block>

+                                            <set>

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="tmp.error-message" value="`'An error occurred while saving vpn binding relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                            </set>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500'/>

+                                                    <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <block>

+                                            <set>

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="tmp.error-message" value="`'An error occurred while saving vpn binding relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                            </set>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500'/>

+                                                    <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                </save>

+                            </block>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.l3-network.network-id" >

+                <parameter name="relationship-list.relationship[0].related-to" value="service-instance" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="customer.global-customer-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$service-data.service-information.global-customer-id`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="service-subscription.service-type" />

+                <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$service-data.service-information.subscription-service-type`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="service-instance.service-instance-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$service-data.service-information.service-instance-id`" />

+                <outcome value='failure'>

+                    <block>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="`'An error occurred while saving service instance relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                        </set>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                            </set>

+                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="`'An error occurred while saving service instance relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                        </set>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                            </set>

+                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </save>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.l3-network.network-id" 

+	force="true" 

+	local-only="false">

+                <!-- create relationship-list -->

+                <parameter name="relationship-list.relationship[0].related-to" value="tenant" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.cloud-region.cloud-owner`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$network-topology-operation-input.network-request-input.aic-cloud-region`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="tenant.tenant-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$network-topology-operation-input.network-request-input.tenant`" />

+                <parameter name="relationship-list.relationship[1].related-to" value="cloud-region" />

+                <parameter name="relationship-list.relationship[1].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" />

+                <parameter name="relationship-list.relationship[1].relationship-data[0].relationship-value" value="`$prop.cloud-region.cloud-owner`" />

+                <parameter name="relationship-list.relationship[1].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" />

+                <parameter name="relationship-list.relationship[1].relationship-data[1].relationship-value" value="`$network-topology-operation-input.network-request-input.aic-cloud-region`" />

+                <outcome value='failure'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="`'An error occurred while saving tenant and cloud-region relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                        </set>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                            </set>

+                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="`'An error occurred while saving tenant and cloud-region relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                        </set>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                            </set>

+                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </save>

+            <switch test='`$network-model.network-technology`'>

+                <outcome value='AIC_SR_IOV'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="tmp.l3-network.segmentation-id" value="1"/>

+                        </set>

+                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="segmentation-assignment" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND segmentation-assignment.segmentation-id = $tmp.l3-network.segmentation-id" >

+                            <!-- Create segmentation-assignment object -->

+                            <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                            <parameter name="segmentation-id" value="`$tmp.l3-network.segmentation-id`" />

+                            <outcome value='failure'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="tmp.error-message" value="`'An error occurred while saving segmentation-assignment for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                    </set>

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                            <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500'/>

+                                            <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="tmp.error-message" value="`'An error occurred while saving segmentation-assignment for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                    </set>

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                            <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.l3-network.network-id"></delete>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500'/>

+                                            <parameter name='error-message' value="`'Error writing to l3-network - ' + $tmp.error-message`"/>

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </save>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='network-topology.network-topology-identifier-structure.' value='`$tmp.l3-network.`' />

+                <parameter name='network-topology.tenant' value='`$network-topology-operation-input.network-request-input.tenant`' />

+                <parameter name='network-topology.onap-model-information.' value='`$network-topology-operation-input.network-information.onap-model-information.`' />

+                <parameter name='network-topology.network-parameters.' value='`$network-topology-operation-input.network-request-input.network-parameters.`' />

+                <parameter name='network-topology.aic-cloud-region' value='`$network-topology-operation-input.network-request-input.aic-cloud-region`' />

+            </set>

+            <set>

+                <parameter name="service-data.networks.network[$nidx].network-id" value='`$tmp.l3-network.network-id`' />

+                <parameter name="service-data.networks.network[$nidx].network-data.network-topology." value='$network-topology.' />

+                <parameter name="service-data.networks.network[$nidx].network-data.network-request-input." value='$x.' />

+                <parameter name="service-data.networks.network_length" value='`$nidx_len`' />

+            </set>

+            <set>

+                <parameter name='networkId' value='`$tmp.l3-network.network-id`' />

+            </set>

+            <set>

+                <parameter name='network-object-path'

+ value="`$tmp.l3-network.self-link`"/>

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='PendingCreate' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />

+            </set>

+            <return status='success'>

+                <parameter name='' value='' />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-assign-from-preload.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-assign-from-preload.xml
new file mode 100755
index 0000000..013219d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-assign-from-preload.xml
@@ -0,0 +1,952 @@
+<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='network-topology-operation-assign-from-preload' mode='sync'>

+        <block atomic="true">

+            <switch test="`$tmp.nidx`">

+                <outcome value=''>

+                    <switch test='`$service-data.networks.network_length`'>

+                        <outcome value=''>

+                            <set>

+                                <parameter name='nidx' value='0' />

+                                <parameter name='nidx_len' value='1'/>

+                            </set>

+                        </outcome>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name='nidx' value='`$service-data.networks.network_length`' />

+                                <parameter name='nidx_len' value='`$service-data.networks.network_length + 1`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='nidx' value='`$tmp.nidx`' />

+                        <parameter name='nidx_len' value='`$service-data.networks.network_length`' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />

+            </set>

+            <set>

+                <parameter name='tmp.l3-network.model-invariant-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`" />

+                <parameter name='tmp.l3-network.model-version-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-version`" />

+                <parameter name='tmp.l3-network.model-customization-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`" />

+                <parameter name='s-onap-model-information.model-invariant-uuid' value='`$service-model.invariant-uuid`' />

+                <parameter name='s-onap-model-information.model-version' value='`$service-model.version`' />

+                <parameter name='s-onap-model-information.model-uuid' value='`$service-model.service-uuid`' />

+                <parameter name='s-onap-model-information.model-name' value='`$service-model.name`' />

+                <parameter name='n-onap-model-information.model-invariant-uuid' value='`$network-model.invariant-uuid`' />

+                <parameter name='n-onap-model-information.model-version' value='`$network-model.version`' />

+                <parameter name='n-onap-model-information.model-uuid' value='`$network-model.uuid`' />

+                <parameter name='n-onap-model-information.model-name' value='`$network-model.name`' />

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$nidx].network-data.service-information.ecomp-model-information.' value="`$s-onap-model-information.`" />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-information.ecomp-model-information.' value="`$n-onap-model-information.`" />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.preload-network`"/>

+                <parameter name="outputPath" value="tmp.pn-url"/>

+                <parameter name="target" value="{network-name}"/>

+                <parameter name="replacement" value="`$tmp.network-instance-name`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pn-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="preload-data" />

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="'Error: No preload-network found with network-name =' + $tmp.network-instance-name + ' in md-sal'" />

+                    </return>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/lmr-nto.log' />

+            </execute>

+            <set>

+                <parameter name="tmp.error-message" value=""/>

+            </set>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-name = $tmp.network-instance-name" 

+		local-only="false" 

+		pfx="aai.l3-network">

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="'Error searching for l3-network with network-name =' + $tmp.network-instance-name + 'from AnAI'" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="'Error l3-network with network-name =' + $tmp.network-instance-name + ' already exists in AnAI'" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <set>

+                <parameter name='tmp.l3-network.network-name' value="`$tmp.network-instance-name`" />

+                <parameter name='tmp.l3-network.network-type' value="`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-type`" />

+                <parameter name="tmp.l3-network.physical-network-name" value="`$preload-data.preload-network-topology-information.physical-network-name`" />

+                <parameter name="tmp.l3-network.is-provider-network" value="`$preload-data.preload-network-topology-information.is-provider-network`" />

+                <parameter name="tmp.l3-network.is-shared-network" value="`$preload-data.preload-network-topology-information.is-shared-network`" />

+                <parameter name="tmp.l3-network.is-external-network" value="`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-type`" />

+                <parameter name='tmp.l3-network.network-role' value="`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-role`" />

+                <parameter name='tmp.l3-network.network-technology' value="`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-technology`" />

+                <parameter name='tmp.l3-network.is-bound-to-vpn' value="`$network-model.is-bound-to-vpn`" />

+                <parameter name="tmp.l3-network.tenant-id" value="`$network-topology-operation-input.network-request-input.tenant`" />

+                <parameter name="tmp.l3-network.network-role-instance" value="0" />

+                <parameter name='tmp.l3-network.orchestration-status' value="PendingCreate" />

+                <parameter name='tmp.l3-network.model-invariant-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`" />

+                <parameter name='tmp.l3-network.model-version-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-version`" />

+                <parameter name='tmp.l3-network.model-customization-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`" />

+                <parameter name='tmp.l3-network.eipam-v6-address-plan' value="`$network-model.eipam-v6-address-plan`" />

+                <parameter name='tmp.l3-network.eipam-v4-address-plan' value="`$network-model.eipam-v4-address-plan`" />

+                <parameter name='tmp.l3-network.service-id' value="`$service-data.service-information.service-id`" />

+                <parameter name='tmp.l3-network.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $service-data.service-information.service-instance-id

+ + '/service-data/networks/network/'

+ + $tmp.l3-network.network-id

+ + '/network-data/network-topology/'` " />

+            </set>

+            <set>

+                <parameter name="service-data.networks.network[$nidx].network-data.network-information.network-id" value='`$tmp.l3-network.network-id`' />

+                <parameter name="service-data.networks.network[$nidx].network-data.network-information.from-preload" value='true' />

+                <parameter name="service-data.networks.network[$nidx].network-data.network-information.network-type" value='`$tmp.l3-network.network-type`' />

+            </set>

+            <switch test='`$tmp.l3-network.service-id`'>

+                <outcome value=''>

+                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $tmp.l3-network.network-id" >

+                        <!-- Create l3-network object -->

+                        <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                        <parameter name="network-name" value="`$tmp.network-instance-name`" />

+                        <parameter name='network-type' value="`$tmp.l3-network.network-type`" />

+                        <parameter name='network-role' value="`$tmp.l3-network.network-role`" />

+                        <parameter name='network-technology' value="`$network-model.network-technology`" />

+                        <parameter name="is-bound-to-vpn" value="`$tmp.l3-network.is-bound-to-vpn-boolean`" />

+                        <parameter name="tenant-id" value="`$network-topology-operation-input.network-request-input.tenant`" />

+                        <parameter name="network-role-instance" value="0" />

+                        <parameter name="orchestration-status" value="PendingCreate" />

+                        <parameter name="physical-network-name" value="`$preload-data.preload-network-topology-information.physical-network-name`" />

+                        <parameter name="is-provider-network" value="`$preload-data.preload-network-topology-information.is-provider-network`" />

+                        <parameter name="is-shared-network" value="`$preload-data.preload-network-topology-information.is-shared-network`" />

+                        <parameter name="is-external-network" value="`$preload-data.preload-network-topology-information.is-external-network`" />

+                        <parameter name="selflink" value="`$tmp.l3-network.self-link`" />

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Failed to save l3-network in AnAI with network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/>

+                            </return>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Failed to save l3-network in AnAI with network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/>

+                            </return>

+                        </outcome>

+                    </save>

+                </outcome>

+                <outcome value='Other'>

+                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $tmp.l3-network.network-id" >

+                        <!-- Create l3-network object -->

+                        <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                        <parameter name="network-name" value="`$tmp.network-instance-name`" />

+                        <parameter name='network-type' value="`$network-model.network-type`" />

+                        <parameter name='network-role' value="`$network-model.network-role`" />

+                        <parameter name='network-technology' value="`$network-model.network-technology`" />

+                        <parameter name='is-bound-to-vpn' value="`$network-model.is-bound-to-vpn`" />

+                        <parameter name="service-id" value="`$network-topology-operation-input.service-information.service-id`" />

+                        <parameter name="tenant-id" value="`$network-topology-operation-input.network-request-input.tenant`" />

+                        <parameter name="network-role-instance" value="0" />

+                        <parameter name="orchestration-status" value="PendingCreate" />

+                        <parameter name="physical-network-name" value="`$preload-data.preload-network-topology-information.physical-network-name`" />

+                        <parameter name="is-provider-network" value="`$preload-data.preload-network-topology-information.is-provider-network`" />

+                        <parameter name="is-shared-network" value="`$preload-data.preload-network-topology-information.is-shared-network`" />

+                        <parameter name="is-external-network" value="`$preload-data.preload-network-topology-information.is-external-network`" />

+                        <parameter name="selflink" value="`$tmp.l3-network.self-link`" />

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Failed to save l3-network in AnAI with network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/>

+                            </return>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Failed to save l3-network in AnAI with network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/>

+                            </return>

+                        </outcome>

+                    </save>

+                </outcome>

+            </switch>

+            <switch test="`$preload-data.preload-network-topology-information.subnets_length`">

+                <outcome value=''>

+                    <set>

+                        <parameter name="preload-data.preload-network-topology-information.subnets_length" value="0" />

+                    </set>

+                </outcome>

+            </switch>

+            <for index="i" start="0" end="`$preload-data.preload-network-topology-information.subnets_length`">

+                <block atomic='true'>

+                    <switch test="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-enabled`">

+                        <outcome value='Y'>

+                            <set>

+                                <parameter name="tmp.dhcpEnabled.boolean" value="true" />

+                            </set>

+                        </outcome>

+                        <outcome value='N'>

+                            <set>

+                                <parameter name="tmp.dhcpEnabled.boolean" value="false" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$preload-data.preload-network-topology-information.subnets[$i].addr-from-start`">

+                        <outcome value='Y'>

+                            <set>

+                                <parameter name="tmp.addrFromStart.boolean" value="true" />

+                            </set>

+                        </outcome>

+                        <outcome value=''>

+                            <set>

+                                <parameter name="tmp.addrFromStart.boolean" value="true" />

+                            </set>

+                        </outcome>

+                        <outcome value='N'>

+                            <set>

+                                <parameter name="tmp.addrFromStart.boolean" value="false" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <set>

+                        <parameter name="tmp.gateway-address" value="`$preload-data.preload-network-topology-information.subnets[$i].gateway-address`" />

+                    </set>

+                    <switch test="`$preload-data.preload-network-topology-information.subnets[$i].gateway-address`">

+                        <outcome value=''>

+                            <block atomic='true'>

+                                <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="getGatewayAddress">

+                                    <parameter name="ipAddress" value="`$preload-data.preload-network-topology-information.subnets[$i].start-address`" />

+                                    <parameter name="ipVersion" value="`$preload-data.preload-network-topology-information.subnets[$i].ip-version`" />

+                                    <parameter name="subnet" value="`$preload-data.preload-network-topology-information.subnets[$i].cidr-mask`" />

+                                    <parameter name="ctxVariable" value="tmp.return.generate.gateway-address" />

+                                    <outcome value='failure'>

+                                        <block atomic='true'>

+                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500'/>

+                                                <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                            </return>

+                                        </block>

+                                    </outcome>

+                                </execute>

+                                <set>

+                                    <parameter name="tmp.gateway-address" value="`$tmp.return.generate.gateway-address`" />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <set>

+                        <parameter name="tmp.local.network-id" value="`$tmp.l3-network.network-id`" />

+                    </set>

+                    <call module="VNF-API" rpc="generate-subnets-subnet-id" mode="sync" >

+                        <outcome value='failure'>

+                            <block atomic='true'>

+                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500'/>

+                                    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                </return>

+                            </block>

+                        </outcome>

+                    </call>

+                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid" >

+                        <!-- Create subnet object -->

+                        <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                        <parameter name="subnet-id" value="`$tmp.return.generate-subnets-subnet-id.uuid`" />

+                        <parameter name="subnet-name" value="`$preload-data.preload-network-topology-information.subnets[$i].subnet-name`" />

+                        <parameter name="subnet-role" value="`$preload-data.preload-network-topology-information.subnets[$i].subnet-role`" />

+                        <parameter name="gateway-address" value="`$tmp.gateway-address`" />

+                        <parameter name="network-start-address" value="`$preload-data.preload-network-topology-information.subnets[$i].start-address`" />

+                        <parameter name="cidr-mask" value="`$preload-data.preload-network-topology-information.subnets[$i].cidr-mask`" />

+                        <parameter name="ip-version" value="`$preload-data.preload-network-topology-information.subnets[$i].ip-version`" />

+                        <parameter name="dhcp-start" value="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-start-address`" />

+                        <parameter name="dhcp-end" value="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-end-address`" />

+                        <parameter name="dhcp-enabled" value="`$tmp.dhcpEnabled.boolean`" />

+                        <parameter name="ip-assignment-direction" value="`$tmp.addrFromStart.boolean`" />

+                        <parameter name="orchestration-status" value="PendingCreate" />

+                        <outcome value='failure'>

+                            <block>

+                                <set>

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="tmp.error-message" value="`'An error occurred while saving subnet in AnAI where subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/>

+                                </set>

+                                <block atomic='true'>

+                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500'/>

+                                        <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                    </return>

+                                </block>

+                            </block>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <block>

+                                <set>

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="tmp.error-message" value="`'An error occurred while saving subnet in AnAI where subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/>

+                                </set>

+                                <block atomic='true'>

+                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500'/>

+                                        <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                    </return>

+                                </block>

+                            </block>

+                        </outcome>

+                    </save>

+                    <switch test='`$preload-data.preload-network-topology-information.host-routes_length`'>

+                        <outcome value=''>

+                            <set>

+                                <parameter name='preload-data.preload-network-topology-information.host-routes_length' value='0' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <for index="h" start="0" end="`$preload-data.preload-network-topology-information.host-routes_length`">

+                        <block atomic='true'>

+                            <set>

+                                <parameter name="tmp.local.subnet-id" value="`$tmp.return.generate-subnets-subnet-id.uuid`" />

+                            </set>

+                            <call module="GENERIC-RESOURCE-API" rpc="generate-host-routes-host-route-id" mode="sync" >

+                                <outcome value='failure'>

+                                    <block atomic='true'>

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500'/>

+                                            <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                        </return>

+                                    </block>

+                                </outcome>

+                            </call>

+                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="host-route" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid  

+			AND host-route.host-route-id = $tmp.return.generate-host-routes-host-route-id.uuid" >

+                                <!-- Create host-route object -->

+                                <parameter name="host-route-id" value="`$tmp.return.generate-host-routes-host-route-id.uuid`" />

+                                <parameter name="route-prefix" value="`$preload-data.preload-network-topology-information.subnets[$i].host-routes[$h].route-prefix`" />

+                                <parameter name="next-hop" value="`$preload-data.preload-network-topology-information.subnets[$i].host-routes[$h].next-hop`" />

+                                <outcome value='failure'>

+                                    <block>

+                                        <set>

+                                            <parameter name="error-code" value="500"/>

+                                            <parameter name="tmp.error-message" value="`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`"/>

+                                        </set>

+                                        <block atomic='true'>

+                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500'/>

+                                                <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                            </return>

+                                        </block>

+                                    </block>

+                                </outcome>

+                                <outcome value='not-found'>

+                                    <block>

+                                        <set>

+                                            <parameter name="error-code" value="500"/>

+                                            <parameter name="tmp.error-message" value="`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`"/>

+                                        </set>

+                                        <block atomic='true'>

+                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500'/>

+                                                <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                            </return>

+                                        </block>

+                                    </block>

+                                </outcome>

+                            </save>

+                        </block>

+                    </for>

+                </block>

+            </for>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.l3-network.network-id" 

+	force="true" 

+	local-only="false">

+                <!-- create relationship-list -->

+                <parameter name="relationship-list.relationship[0].related-to" value="tenant" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.cloud-region.cloud-owner`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$network-topology-operation-input.network-request-input.aic-cloud-region`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="tenant.tenant-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$network-topology-operation-input.network-request-input.tenant`" />

+                <parameter name="relationship-list.relationship[1].related-to" value="cloud-region" />

+                <parameter name="relationship-list.relationship[1].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" />

+                <parameter name="relationship-list.relationship[1].relationship-data[0].relationship-value" value="`$prop.cloud-region.cloud-owner`" />

+                <parameter name="relationship-list.relationship[1].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" />

+                <parameter name="relationship-list.relationship[1].relationship-data[1].relationship-value" value="`$network-topology-operation-input.network-request-input.aic-cloud-region`" />

+                <outcome value='failure'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="`'An error occurred while saving tenant and cloud-region relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                        </set>

+                        <block atomic='true'>

+                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="`'An error occurred while saving tenant and cloud-region relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                        </set>

+                        <block atomic='true'>

+                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </save>

+            <switch test="`$preload-data.preload-network-topology-information.vpn-bindings_length`">

+                <outcome value=''>

+                    <set>

+                        <parameter name="preload-data.preload-network-topology-information.vpn-bindings_length" value="0" />

+                    </set>

+                </outcome>

+            </switch>

+            <for index="i" start="0" end="`$preload-data.preload-network-topology-information.vpn-bindings_length`">

+                <block atomic='true'>

+                    <set>

+                        <parameter name="tmp.vpn-binding-id" value="" />

+                    </set>

+                    <switch test="`$preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`">

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name="tmp.vpn-binding-id" value="`$preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$tmp.vpn-binding-id != ''`">

+                        <outcome value='true'>

+                            <block atomic='true'>

+                                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vpn-binding" 

+		key="vpn-binding.vpn-id = $tmp.vpn-binding-id" 

+		local-only="false" 

+		pfx="tmp.AnAI.vpn-binding">

+                                    <outcome value='success'>

+                                        <switch test="`$tmp.AnAI.vpn-binding.vpn-id`" >

+                                            <outcome value=''>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings from AnAI where vpn-binding-id  = ' + $tmp.vpn-binding-id + '.'`"/>

+                                                    </set>

+                                                    <block atomic='true'>

+                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                                        <return status='failure'>

+                                                            <parameter name='error-code' value='500'/>

+                                                            <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings from AnAI where vpn-binding-id = ' + $preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`"/>

+                                            </set>

+                                            <block atomic='true'>

+                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500'/>

+                                                    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='failure'>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings from AnAI where vpn-binding-id = ' + $preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`"/>

+                                            </set>

+                                            <block atomic='true'>

+                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500'/>

+                                                    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                </get-resource>

+                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.l3-network.network-id" 

+	force="true" 

+	local-only="false">

+                                    <parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />

+                                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />

+                                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.vpn-binding-id`" />

+                                    <outcome value='failure'>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="tmp.error-message" value="`'An error occurred while saving vpn-binding relationship for l3-network in AnAI where vpn-id = ' + $tmp.vpn-binding-id`"/>

+                                            </set>

+                                            <block atomic='true'>

+                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500'/>

+                                                    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="tmp.error-message" value="`'An error occurred while saving vpn-binding relationship for l3-network in AnAI where vpn-id = ' + $tmp.vpn-binding-id`"/>

+                                            </set>

+                                            <block atomic='true'>

+                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500'/>

+                                                    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='success'>

+                                        <set>

+                                            <parameter name="tmp.is-bound-to-vpn" value="true" />

+                                        </set>

+                                    </outcome>

+                                </save>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <switch test="`$preload-data.preload-network-topology-information.network-policy_length`">

+                <outcome value=''>

+                    <set>

+                        <parameter name='preload-data.preload-network-topology-information.network-policy_length' value='0' />

+                    </set>

+                </outcome>

+            </switch>

+            <for index="i" start="0" end="`$preload-data.preload-network-topology-information.network-policy_length`">

+                <switch test="`$preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn != ''`">

+                    <outcome value='true'>

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="network-policy" 

+		key="network-policy.network-policy-fqdn = $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn" 

+		local-only="false" 

+		pfx="tmp.AnAI.network-policy">

+                            <outcome value='not-found'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>

+                                    </set>

+                                    <block atomic='true'>

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500'/>

+                                            <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='failure'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>

+                                    </set>

+                                    <block atomic='true'>

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500'/>

+                                            <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='success'>

+                                <switch test="`$tmp.AnAI.network-policy.network-policy-id`" >

+                                    <outcome value=''>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="tmp.error-message" value="`'Failed to query newtork-policy from AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn + '. It is likely that the same network-policy-fqdn points to more than one network-policy objects in AnAI.'`"/>

+                                            </set>

+                                            <block atomic='true'>

+                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500'/>

+                                                    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.l3-network.network-id" >

+                                            <parameter name="relationship-list.relationship[0].related-to" value="network-policy" />

+                                            <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-policy.network-policy-id" />

+                                            <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.network-policy.network-policy-id`" />

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="tmp.error-message" value="`'An error occurred while saving network-policy relationship for l3-network in AnAI where network-policy-id = ' + $tmp.AnAI.network-policy.network-policy-id`"/>

+                                                    </set>

+                                                    <block atomic='true'>

+                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                                        <return status='failure'>

+                                                            <parameter name='error-code' value='500'/>

+                                                            <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="tmp.error-message" value="`'An error occurred while saving network-policy relationship for l3-network in AnAI where network-policy-id = ' + $tmp.AnAI.network-policy.network-policy-id`"/>

+                                                    </set>

+                                                    <block atomic='true'>

+                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                                        <return status='failure'>

+                                                            <parameter name='error-code' value='500'/>

+                                                            <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                        </save>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                        </get-resource>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test="`$preload-data.preload-network-topology-information.route-table-reference_length`">

+                <outcome value=''>

+                    <set>

+                        <parameter name='preload-data.preload-network-topology-information.route-table-reference_length' value='0' />

+                    </set>

+                </outcome>

+            </switch>

+            <for index="i" start="0" end="`$preload-data.preload-network-topology-information.route-table-reference_length`">

+                <switch test="`$preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn != ''`">

+                    <outcome value='true'>

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="route-table-reference" 

+		key="route-table-reference.route-table-reference-fqdn = $preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn" 

+		pfx="tmp.AnAI.route-table-reference">

+                            <outcome value='not-found'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>

+                                    </set>

+                                    <block atomic='true'>

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500'/>

+                                            <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='failure'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>

+                                    </set>

+                                    <block atomic='true'>

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500'/>

+                                            <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='success'>

+                                <switch test="`$tmp.AnAI.route-table-reference.route-table-reference-id`" >

+                                    <outcome value=''>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="tmp.error-message" value="`'Failed to query route-table-reference from AnAI where route-table-reference-fqdn = ' + $preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn + '. It is likely that the same route-table-reference-fqdn points to more than one route-table-reference objects in AnAI.'`"/>

+                                            </set>

+                                            <block atomic='true'>

+                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500'/>

+                                                    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.l3-network.network-id" >

+                                            <parameter name="relationship-list.relationship[0].related-to" value="route-table-reference" />

+                                            <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="route-table-reference.route-table-reference-id" />

+                                            <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.route-table-reference.route-table-reference-id`" />

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="tmp.error-message" value="`'An error occurred while saving route-table-reference relationship for l3-network in AnAI where route-table-reference-id = ' + $tmp.AnAI.route-table-reference.route-table-reference-id`"/>

+                                                    </set>

+                                                    <block atomic='true'>

+                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                                        <return status='failure'>

+                                                            <parameter name='error-code' value='500'/>

+                                                            <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="tmp.error-message" value="`'An error occurred while saving route-table-reference relationship for l3-network in AnAI where route-table-reference-id = ' + $tmp.AnAI.route-table-reference.route-table-reference-id`"/>

+                                                    </set>

+                                                    <block atomic='true'>

+                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                                        <return status='failure'>

+                                                            <parameter name='error-code' value='500'/>

+                                                            <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                        </save>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                        </get-resource>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test="`$tmp.is-bound-to-vpn`">

+                <outcome value="true">

+                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $tmp.l3-network.network-id" >

+                        <parameter name="is-bound-to-vpn" value="true" />

+                        <outcome value='failure'>

+                            <block atomic='true'>

+                                <set>

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="tmp.error-message" value="`'An error occurred while updating l3-network is-bound-to-vpn in AnAI where network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/>

+                                </set>

+                                <block atomic='true'>

+                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500'/>

+                                        <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                    </return>

+                                </block>

+                            </block>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <block atomic='true'>

+                                <set>

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="tmp.error-message" value="`'An error occurred while updating l3-network is-bound-to-vpn in AnAI where network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/>

+                                </set>

+                                <block atomic='true'>

+                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500'/>

+                                        <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                                    </return>

+                                </block>

+                            </block>

+                        </outcome>

+                    </update>

+                </outcome>

+            </switch>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.l3-network.network-id" >

+                <parameter name="relationship-list.relationship[0].related-to" value="service-instance" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="customer.global-customer-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$service-data.service-information.global-customer-id`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="service-subscription.service-type" />

+                <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$service-data.service-information.subscription-service-type`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="service-instance.service-instance-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$service-data.service-information.service-instance-id`" />

+                <outcome value='failure'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="`'An error occurred while saving service-instance relationship for l3-network in AnAI where service-instance-id = ' + $network-topology-operation-input.service-information.service-instance-id`"/>

+                        </set>

+                        <block atomic='true'>

+                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="`'An error occurred while saving service-instance relationship for l3-network in AnAI where service-instance-id = ' + $network-topology-operation-input.service-information.service-instance-id`"/>

+                        </set>

+                        <block atomic='true'>

+                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/>

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </save>

+            <set>

+                <parameter name='network-topology.network-topology-identifier-structure.' value='`$tmp.l3-network.`' />

+                <parameter name='network-topology.tenant' value='`$network-topology-operation-input.network-request-input.tenant`' />

+                <parameter name='network-topology.onap-model-information.' value='`$network-topology-operation-input.network-information.onap-model-information.`' />

+                <parameter name='network-topology.network-parameters.' value='`$network-topology-operation-input.network-request-input.network-parameters.`' />

+                <parameter name='network-topology.aic-cloud-region' value='`$network-topology-operation-input.network-request-input.aic-cloud-region`' />

+            </set>

+            <set>

+                <parameter name="service-data.networks.network[$nidx].network-id" value='`$tmp.l3-network.network-id`' />

+                <parameter name="service-data.networks.network[$nidx].network-data.network-information.from-preload" value='true' />

+                <parameter name="service-data.networks.network[$nidx].network-data.network-topology." value='$network-topology.' />

+                <parameter name="service-data.networks.network_length" value='`$nidx_len`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/lmr-nto2.log' />

+            </execute>

+            <set>

+                <parameter name='networkId' value='`$tmp.l3-network.network-id`' />

+            </set>

+            <set>

+                <parameter name='network-object-path'

+ value="`$tmp.l3-network.self-link`"/>

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='PendingCreate' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />

+            </set>

+            <return status='success'>

+                <parameter name='' value='' />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-assign-vlantagging-instancegroup.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-assign-vlantagging-instancegroup.xml
new file mode 100755
index 0000000..56c9f6a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-assign-vlantagging-instancegroup.xml
@@ -0,0 +1,1097 @@
+<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='network-topology-operation-assign-vlantagging-instancegroup' mode='sync'>

+        <block atomic="true">

+            <switch test="`$tmp.nidx`">

+                <outcome value=''>

+                    <switch test='`$service-data.networks.network_length`'>

+                        <outcome value=''>

+                            <set>

+                                <parameter name='nidx' value='0' />

+                                <parameter name='nidx_len' value='1'/>

+                            </set>

+                        </outcome>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name='nidx' value='`$service-data.networks.network_length`' />

+                                <parameter name='nidx_len' value='`$service-data.networks.network_length + 1`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='nidx' value='`$tmp.nidx`' />

+                        <parameter name='nidx_len' value='`$service-data.networks.network_length`' />

+                    </set>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.ngidx`">

+                <outcome value=''>

+                    <switch test='`$service-data.network-instance-groups.network-instance-group_len`'>

+                        <outcome value=''>

+                            <set>

+                                <parameter name='ngidx' value='0' />

+                                <parameter name='ngidx_len' value='1'/>

+                                <parameter name="ngnidx" value='0' />

+                                <parameter name="nig.preexists" value="false"/>

+                                <parameter name="nig.first-network" value="true"/>

+                                <parameter name="nig.networks.network_len" value="1" />

+                            </set>

+                        </outcome>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name='ngidx' value='`$service-data.network-instance-groups.network-instance-group_length`' />

+                                <parameter name='ngidx_len' value='`$service-data.network-instance-groups.network-instance-group_length + 1`' />

+                                <parameter name="nig.preexists" value="false"/>

+                                <parameter name="ngnidx" value='0' />

+                                <parameter name="nig.first-network" value="true"/>

+                                <parameter name="nig.networks.network_len" value="1" />

+                            </set>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='ngidx' value='`$tmp.ngidx`' />

+                            <parameter name='ngidx_len' value='`$service-data.network-instance-groups.network-instance-group_length`' />

+                            <parameter name="nig.preexists" value="false"/>

+                        </set>

+                        <switch test='`$ctx.network-instance-group-data.networks.network_len`'>

+                            <outcome value=''>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="nig.first-network" value="true" />

+                                        <parameter name="ngnidx" value="0" />

+                                        <parameter name="nig.networks.network_len" value="1" />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='0'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="nig.first-network" value="true" />

+                                        <parameter name="ngnidx" value="0" />

+                                        <parameter name="nig.networks.network_len" value="1" />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="nig." value="`$ctx.network-instance-group-data.`" />

+                                    </set>

+                                    <set>

+                                        <parameter name="nig.first-network" value="false" />

+                                        <parameter name="ngnidx" value="`$ctx.network-instance-group-data.networks.network_length`" />

+                                        <parameter name="nig.networks.network_len" value="`$ctx.network-instance-group-data.networks.network_length + 1`" />

+                                        <parameter name="nig." value="`$ctx.network-instance-group-data.`" />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="tmp.error-message" value=""/>

+                <parameter name="tmp.l3-network.network-instance-group-id" value="`$network-topology-operation-input.network-request-input.network-instance-group-id`" />

+                <parameter name='tmp.l3-network.network-type' value="`$network-model.network-type`" />

+                <parameter name='tmp.l3-network.network-role' value="`$network-model.network-role`" />

+                <parameter name='tmp.l3-network.network-technology' value="`$network-model.network-technology`" />

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />

+                <parameter name='service-data.networks.network[$nidx].network-id' value='`$tmp.l3-network.network-id`' />

+            </set>

+            <set>

+                <parameter name='tmp.l3-network.model-invariant-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`" />

+                <parameter name='tmp.l3-network.model-version-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-version`" />

+                <parameter name='tmp.l3-network.model-customization-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`" />

+                <parameter name='s-onap-model-information.model-invariant-uuid' value='`$service-model.invariant-uuid`' />

+                <parameter name='s-onap-model-information.model-version' value='`$service-model.version`' />

+                <parameter name='s-onap-model-information.model-uuid' value='`$service-model.service-uuid`' />

+                <parameter name='s-onap-model-information.model-name' value='`$service-model.name`' />

+                <parameter name='n-onap-model-information.model-invariant-uuid' value='`$network-model.invariant-uuid`' />

+                <parameter name='n-onap-model-information.model-version' value='`$network-model.version`' />

+                <parameter name='n-onap-model-information.model-uuid' value='`$network-model.uuid`' />

+                <parameter name='n-onap-model-information.model-name' value='`$network-model.name`' />

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$nidx]..network-data.service-information.onap-model-information.' value="`$s-onap-model-information.`" />

+                <parameter name='service-data.networks.network[$nidx]..network-data.network-information.onap-model-information.' value="`$n-onap-model-information.`" />

+            </set>

+            <set>

+                <parameter name='tmp.l3-network.network-type' value="`$network-model.network-type`" />

+                <parameter name='tmp.l3-network.network-role' value="`$network-model.network-role`" />

+                <parameter name='tmp.l3-network.network-technology' value="`$network-model.network-technology`" />

+                <parameter name='tmp.l3-network.is-bound-to-vpn' value="`$network-model.is-bound-to-vpn`" />

+                <parameter name='tmp.l3-network.orchestration-status' value="PendingCreate" />

+                <parameter name='tmp.l3-network.model-invariant-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`" />

+                <parameter name='tmp.l3-network.model-version-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-version`" />

+                <parameter name='tmp.l3-network.model-customization-id' value="`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`" />

+                <parameter name='tmp.l3-network.is-provider-network' value="`$network-model.is-provider-network`" />

+                <parameter name='tmp.l3-network.is-shared-network' value="`$network-model.is-shared-network`" />

+                <parameter name='tmp.l3-network.is-external-network' value="`$network-model.is-external-network`" />

+                <parameter name='tmp.l3-network.eipam-v6-address-plan' value="`$network-model.eipam-v6-address-plan`" />

+                <parameter name='tmp.l3-network.eipam-v4-address-plan' value="`$network-model.eipam-v4-address-plan`" />

+                <parameter name='tmp.l3-network.service-id' value="`$service-data.service-information.service-id`" />

+                <parameter name='tmp.l3-network.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $network-topology-operation-input.service-information.service-instance-id

+ + '/service-data/networks/network/'

+ + $tmp.l3-network.network-id

+ + '/network-data/network-topology/'` " />

+            </set>

+            <switch test='`$network-model.is-provider-network`'>

+                <outcome value='Y'>

+                    <set>

+                        <parameter name='tmp.l3-network.physical-network-name' value="`$network-model.physical-network-name`" />

+                        <parameter name='tmp.l3-network.is-provider-network-boolean' value='true' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.l3-network.physical-network-name' value="" />

+                        <parameter name='tmp.l3-network.is-provider-network-boolean' value='false' />

+                    </set>

+                </outcome>

+            </switch>

+            <switch test='`$network-model.is-shared-network`'>

+                <outcome value='Y'>

+                    <set>

+                        <parameter name='tmp.l3-network.is-shared-network-boolean' value='true' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.l3-network.is-shared-network-boolean' value='false' />

+                    </set>

+                </outcome>

+            </switch>

+            <switch test='`$network-model.is-external-network`'>

+                <outcome value='Y'>

+                    <set>

+                        <parameter name='tmp.l3-network.is-external-network-boolean' value='true' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.l3-network.is-external-network-boolean' value='false' />

+                    </set>

+                </outcome>

+            </switch>

+            <switch test='`$network-model.is-bound-to-vpn`'>

+                <outcome value='Y'>

+                    <set>

+                        <parameter name='tmp.l3-network.is-bound-to-vpn-boolean' value='true' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.l3-network.is-bound-to-vpn-boolean' value='false' />

+                    </set>

+                </outcome>

+            </switch>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $tmp.l3-network.network-id" 

+		local-only="false" 

+		pfx="aai.l3-network">

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="'Error searching for l3-network with network-id =' + $tmp.l3-network.network-id + 'from AnAI.  Network should be created by MSO'" />

+                    </return>

+                </outcome>

+                <outcome value='not-found'></outcome>

+            </get-resource>

+            <set>

+                <parameter name='aaiapi.input.network-instance-group-id' value="`$tmp.l3-network.network-instance-group-id`" />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='aai-get-network-instance-group' mode='sync' ></call>

+            <set>

+                <parameter name="get-complex-resource-service-model-input.customization-uuid" value="`$aaiapi.output.collection-customization-uuid`"/>

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='get-complex-resource-service-model' mode='sync' ></call>

+            <set>

+                <parameter name="nig.network-instance-group-id" value="`$tmp.l3-network.network-instance-group-id`"/>

+                <parameter name="nig.network-instance-group-function" value="`$aaiapi.output.collection-function`"/>

+                <parameter name="nig.service-instance-id" value="`$network-topology-operation-input.service-information.service-instance-id`"/>

+            </set>

+            <set>

+                <parameter name='nig.networks.network[$ngnidx].network-id' value="`$tmp.l3-network.network-id`" />

+            </set>

+            <set>

+                <parameter name="get-data-from-policy-input.policy-instance-name" value="`$get-complex-resource-service-model-output.subnet-assignment-policy`" />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='get-data-from-policy' mode='sync' ></call>

+            <set>

+                <parameter name="nig.subnet-assignment-policy.subnet-use" value="`$get-data-from-policy-output.ip-assignment`" />

+            </set>

+            <set>

+                <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$get-complex-resource-service-model-output.network-naming-policy`' />

+                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />

+                <parameter name='naming-policy-generate-name-input.query-parameter' value='`$network-model.customization-uuid`' />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+            <set>

+                <parameter name='tmp.l3-network.network-name' value='`$naming-policy-generate-name-output.network-name`' />

+            </set>

+            <set>

+                <parameter name='network-topology.network-topology-identifier-structure.network-id' value="`$tmp.l3-network.network-id`" />

+                <parameter name='network-topology.network-topology-identifier-structure.network-name' value="`$tmp.l3-network.network-name`" />

+                <parameter name='network-topology.network-topology-identifier-structure.network-instance-group-id' value="`$tmp.l3-network.network-instance-group-id`" />

+                <parameter name='network-topology.network-topology-identifier-structure.network-type' value="`$tmp.l3-network.network-type`" />

+                <parameter name='network-topology.network-topology-identifier-structure.network-role' value="`$tmp.l3-network.network-role`" />

+                <parameter name='network-topology.network-topology-identifier-structure.network-technology' value="`$tmp.l3-network.network-technology`" />

+                <parameter name='network-topology.region-identifier.tenant' value="`$network-topology-operation-input.network-request-input.tenant`" />

+                <parameter name='network-topology.region-identifier.aic-cloud-region' value="`$network-topology-operation-input.network-request-input.aic-cloud-region`" />

+                <parameter name='network-topology.region-identifier.aic-clli' value="`$network-topology-operation-input.network-request-input.aic-clli`" />

+                <parameter name='network-topology.onap-model-information.' value="`$network-topology-operation-input.network-information.onap-model-information.`" />

+                <parameter name='network-topology.network-parameters.' value="`$network-topology-operation-input.network-request-input.network-input-parameters.`" />

+                <parameter name='nig.network.network-id' value="`$tmp.l3-network.network-id`" />

+            </set>

+            <set>

+                <parameter name="aaiapi.input.cloud-owner" value="`$prop.cloud-region.cloud-owner`" />

+                <parameter name="aaiapi.input.cloud-region-id" value="`$network-topology-operation-input.network-request-input.aic-cloud-region`" />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='aai-get-aic-zone' mode='sync' ></call>

+            <set>

+                <parameter name='network-topology.region-identifier.aic-clli' value="`$aaiapi.output.aic-clli`" />

+            </set>

+            <set>

+                <parameter name="nig.cloud-zone" value="`$aaiapi.output.cloud-zone`" />

+                <parameter name="rt.aic-zone" value="`$aaiapi.output.cloud-zone`" />

+                <parameter name="rt.resource" value="NetworkID" />

+                <parameter name="rt.resource-value" value="`$tmp.l3-network.network-id`" />

+                <parameter name="rt.network-name" value="`$tmp.l3-network.network-name`" />

+                <parameter name="rt.service-instance-id" value="`$network-topology-operation-input.service-information.service-instance-id`" />

+                <parameter name="rt.network-instance-group-id" value="`$tmp.l3-network.network-instance-group-id`" />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='create-route-target-and-vpn-binding' mode='sync' ></call>

+            <set>

+                <parameter name='nig.vpn-bindings.id' value="`$vpn-binding.vpn-binding-id`" />

+                <parameter name='nig.vpn-bindings.global-route-target' value="`$vpn-binding.global-route-target`" />

+                <parameter name='nig.vpn-bindings.aic-zone' value="`$aaiapi.output.cloud-zone`" />

+                <parameter name='nig.vpn-bindings.route-target-role' value="`$vpn-binding.route-target-role`" />

+            </set>

+            <switch test='`$nig.subnet-assignment-policy.subnet-use`'>

+                <outcome value=''>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="Subnet use not set"/>

+                        </set>

+                        <switch test='`$tmp.nig-preexists`'>

+                            <outcome value='true'>

+                                <block atomic='true'></block>

+                            </outcome>

+                            <outcome value='false'>

+                                <block atomic='true'>

+                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.nig-url`' />

+                                        <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                        <parameter name='format' value='json' />

+                                        <parameter name='httpMethod' value='DELETE' />

+                                        <parameter name="responsePrefix" value="mdsal-nig" />

+                                        <outcome value='success'>

+                                            <block atomic="true"></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block atomic="true"></block>

+                                        </outcome>

+                                    </execute>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='unique'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="tmp.skip-first-level" value="Y"/>

+                            <parameter name="tmp.allocate-subnet-flag" value="Y"/>

+                            <parameter name="generate-FQPN-input.aic-cloud-region" value="`$aai.cloud-region.cloud-region-id`" />

+                            <parameter name="generate-FQPN-input.network-name" value="`$network-topology.network-topology-identifier-structure.network-name`" />

+                            <parameter name="generate-FQPN-input.network-role" value="`$network-topology.network-topology-identifier-structure.network-role`" />

+                            <parameter name="generate-FQPN-input.network-collection" value="`$aaiapi.output.collection-name`" />

+                            <parameter name="generate-FQPN-input.network-id" value="`$network-topology.network-topology-identifier-structure.network-id`" />

+                            <parameter name="tmp.network-id" value="`network-topology.network-topology-identifier-structure.network-id`" />

+                            <parameter name="tmp.network-instance-group-id" value="`$network-topology.network-topology-identifier-structure.network-instance-group-id`" />

+                            <!-- the following are not set by calling dg

+generate-FQPN-input.subnet-role

+generate-FQPN-input.zone

+generate-FQPN-input.equipment

+-->

+                            <!-- network model is already in contect memory -->

+                            <!-- aai.cloud-region.cloud-region-id  is already in contect memory -->

+                        </set>

+                        <call module='GENERIC-RESOURCE-API' rpc='process-generic-eipam-pools' mode='sync' >

+                            <outcome value='failure'>

+                                <return status="failure">

+                                    <parameter name="ack-final" value="Y" />

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="error-message" value="`'Error from process-generic-eipam-pools, ' + $error-message`" />

+                                </return>

+                            </outcome>

+                        </call>

+                        <switch test="`$network-model.eipam-v4-address-plan != ''`">

+                            <outcome value='true'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="network-topology.network-identifier-structure.eipam-v4-address-plan" value="`$network-model.eipam-v4-address-plan`" />

+                                    </set>

+                                    <for silentFailure='true' index='eidx' start='0' end='`$eipam-ip-block.createPoolResponse.CreatePoolPlans_length`' >

+                                        <switch test="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.PlanName == $network-model.eipam-v4-address-plan`">

+                                            <outcome value='true'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name="v4.ip-prefix" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IPAddress`"/>

+                                                        <parameter name="v4.mask" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.Mask`"/>

+                                                        <parameter name="v4.entity-id" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IpamPoolAllocId`"/>

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <switch test="`$network-model.eipam-v6-address-plan != ''`">

+                            <outcome value='true'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name="network-topology.network-identifier-structure.eipam-v6-address-plan" value="`$network-model.eipam-v4-address-plan`" />

+                                    </set>

+                                    <for silentFailure='true' index='eidx' start='0' end='`$eipam-ip-block.createPoolResponse.CreatePoolPlans_length`' >

+                                        <switch test="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.PlanName == $network-model.eipam-v6-address-plan`">

+                                            <outcome value='true'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name="v6.ip-prefix" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IPAddress`"/>

+                                                        <parameter name="v6.mask" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.Mask`"/>

+                                                        <parameter name="v6.entity-id" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IpamPoolAllocId`"/>

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <!--tmp.level should be set to 1-->

+                        <call module='GENERIC-RESOURCE-API' rpc='create-l3-subnet' mode='sync' ></call>

+                        <switch test='`$tmp.l3-network.service-id`'>

+                            <outcome value=''>

+                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $tmp.l3-network.network-id" >

+                                    <!-- Create l3-network object -->

+                                    <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                    <parameter name="network-name" value="`$tmp.l3-network.network-name`" />

+                                    <parameter name="network-type" value="`$network-model.network-type`" />

+                                    <parameter name="network-role" value="`$network-model.network-role`" />

+                                    <parameter name="network-technology" value="`$network-model.network-technology`" />

+                                    <parameter name="is-bound-to-vpn" value="`$tmp.l3-network.is-bound-to-vpn-boolean`" />

+                                    <parameter name="tenant-id" value="`$network-topology-operation-input.network-request-information.tenant`" />

+                                    <parameter name="model-invariant-id" value="`$network-model.invariant_uuid`" />

+                                    <parameter name="model-version" value="`$network-model.version`" />

+                                    <parameter name="model-customization-id" value="`$network-model.customization-id`" />

+                                    <parameter name="physical-network-name" value="`$network-model.physical-network-name`" />

+                                    <parameter name="is-provider-network" value="`$tmp.l3-network.is-provider-network-boolean`" />

+                                    <parameter name="is-shared-network" value="`$tmp.l3-network.is-shared-network-boolean`" />

+                                    <parameter name="is-external-network" value="`$tmp.l3-network.is-external-network-boolean`" />

+                                    <parameter name="selflink" value="`$tmp.l3-network.self-link`" />

+                                    <parameter name="operational-status" value="out-of-service-path" />

+                                    <outcome value='failure'>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />

+                                        </return>

+                                    </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="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />

+                                        </return>

+                                    </outcome>

+                                </save>

+                            </outcome>

+                            <outcome value='Other'>

+                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $tmp.l3-network.network-id" >

+                                    <!-- Create l3-network object -->

+                                    <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                    <parameter name="network-name" value="`$tmp.l3-network.network-name`" />

+                                    <parameter name="network-type" value="`$network-model.network-type`" />

+                                    <parameter name="network-role" value="`$network-model.network-role`" />

+                                    <parameter name="network-technology" value="`$network-model.network-technology`" />

+                                    <parameter name="is-bound-to-vpn" value="`$tmp.l3-network.is-bound-to-vpn-boolean`" />

+                                    <parameter name="tenant-id" value="`$network-topology-operation-input.network-request-information.tenant`" />

+                                    <parameter name="model-invariant-id" value="`$network-model.invariant_uuid`" />

+                                    <parameter name="model-version" value="`$network-model.version`" />

+                                    <parameter name="model-customization-id" value="`$network-model.customization-id`" />

+                                    <parameter name="physical-network-name" value="`$network-model.physical-network-name`" />

+                                    <parameter name="is-provider-network" value="`$tmp.l3-network.is-provider-network-boolean`" />

+                                    <parameter name="is-shared-network" value="`$tmp.l3-network.is-shared-network-boolean`" />

+                                    <parameter name="is-external-network" value="`$tmp.l3-network.is-external-network-boolean`" />

+                                    <parameter name="selflink" value="`$tmp.l3-network.self-link`" />

+                                    <parameter name="service-id" value="`$tmp.l3-network.service-id`" />

+                                    <parameter name="operational-status" value="out-of-service-path" />

+                                    <outcome value='failure'>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />

+                                        </return>

+                                    </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="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />

+                                        </return>

+                                    </outcome>

+                                </save>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name="msidx" value="`$nig.subnets_length`" />

+                        </set>

+                        <for index='sidx' start='0' end='`$tmp.l3-network.subnet_length`' >

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="tmp.subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`"/>

+                                </set>

+                                <switch test='`$tmp.l3-network.subnet[$sidx].dhcp-enabled`'>

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>

+                                                <outcome value=''>

+                                                    <block atomic='true'>

+                                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND subnet.subnet-id = $tmp.subnet-id" >

+                                                            <!-- Create l3-network object -->

+                                                            <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                                            <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />

+                                                            <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />

+                                                            <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />

+                                                            <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />

+                                                            <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />

+                                                            <parameter name="dhcp-start" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />

+                                                            <parameter name="dhcp-end" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />

+                                                            <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />

+                                                            <parameter name="orchestration-status" value="PendingCreate" />

+                                                            <outcome value='failure'>

+                                                                <block atomic='true'>

+                                                                    <set>

+                                                                        <parameter name="error-code" value="500"/>

+                                                                        <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                    </set>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='not-found'>

+                                                                <block atomic='true'>

+                                                                    <set>

+                                                                        <parameter name="error-code" value="500"/>

+                                                                        <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                    </set>

+                                                                </block>

+                                                            </outcome>

+                                                        </save>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <block atomic='true'>

+                                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND subnet.subnet-id = $tmp.subnet-id" >

+                                                            <!-- Create l3-network object -->

+                                                            <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                                            <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />

+                                                            <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />

+                                                            <parameter name="gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />

+                                                            <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />

+                                                            <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />

+                                                            <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />

+                                                            <parameter name="dhcp-start" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />

+                                                            <parameter name="dhcp-end" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />

+                                                            <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />

+                                                            <parameter name="orchestration-status" value="PendingCreate" />

+                                                            <outcome value='failure'>

+                                                                <block atomic='true'>

+                                                                    <set>

+                                                                        <parameter name="error-code" value="500"/>

+                                                                        <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                    </set>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='not-found'>

+                                                                <block atomic='true'>

+                                                                    <set>

+                                                                        <parameter name="error-code" value="500"/>

+                                                                        <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                    </set>

+                                                                </block>

+                                                            </outcome>

+                                                        </save>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='false'>

+                                        <block atomic="true">

+                                            <switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>

+                                                <outcome value=''>

+                                                    <block atomic='true'>

+                                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND subnet.subnet-id = $tmp.subnet-id" >

+                                                            <!-- Create l3-network object -->

+                                                            <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                                            <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />

+                                                            <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />

+                                                            <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />

+                                                            <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />

+                                                            <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />

+                                                            <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />

+                                                            <parameter name="orchestration-status" value="PendingCreate" />

+                                                            <outcome value='failure'>

+                                                                <block atomic='true'>

+                                                                    <set>

+                                                                        <parameter name="error-code" value="500"/>

+                                                                        <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                    </set>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='not-found'>

+                                                                <block atomic='true'>

+                                                                    <set>

+                                                                        <parameter name="error-code" value="500"/>

+                                                                        <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                    </set>

+                                                                </block>

+                                                            </outcome>

+                                                        </save>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <block atomic='true'>

+                                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND subnet.subnet-id = $tmp.subnet-id" >

+                                                            <!-- Create l3-network object -->

+                                                            <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                                            <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />

+                                                            <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />

+                                                            <parameter name="gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />

+                                                            <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />

+                                                            <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />

+                                                            <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />

+                                                            <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />

+                                                            <parameter name="orchestration-status" value="PendingCreate" />

+                                                            <outcome value='failure'>

+                                                                <block atomic='true'>

+                                                                    <set>

+                                                                        <parameter name="error-code" value="500"/>

+                                                                        <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                    </set>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='not-found'>

+                                                                <block atomic='true'>

+                                                                    <set>

+                                                                        <parameter name="error-code" value="500"/>

+                                                                        <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                    </set>

+                                                                </block>

+                                                            </outcome>

+                                                        </save>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <set>

+                                    <parameter name="nig.subnets[$msidx].start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />

+                                    <parameter name="nig.subnets[$msidx].subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />

+                                    <parameter name="nig.subnets[$msidx].subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />

+                                    <parameter name="nig.subnets[$msidx].gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />

+                                    <parameter name="nig.subnets[$msidx].cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />

+                                    <parameter name="nig.subnets[$msidx].ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />

+                                    <parameter name="nig.subnets[$msidx].dhcp-start-address" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />

+                                    <parameter name="nig.subnets[$msidx].dhcp-end-address" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />

+                                    <parameter name="nig.subnets[$msidx].dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />

+                                    <parameter name="orchestration-status" value="PendingCreate" />

+                                </set>

+                                <set>

+                                    <parameter name="msidx" value="`$msidx + 1`" />

+                                    <parameter name="nig.subnets_length" value="`$nig.subnets_length + 1`" />

+                                </set>

+                            </block>

+                        </for>

+                    </block>

+                </outcome>

+                <outcome value='shared'>

+                    <block atomic="true">

+                        <switch test='`$tmp.first-network`'>

+                            <outcome value='true'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="tmp.skip-first-level" value="Y"/>

+                                        <parameter name="tmp.allocate-subnet-flag" value="Y"/>

+                                        <parameter name="generate-FQPN-input.aic-cloud-region" value="`$aai.cloud-region.cloud-region-id`" />

+                                        <parameter name="generate-FQPN-input.network-name" value="`$network-topology.network-topology-identifier-structure.network-name`" />

+                                        <parameter name="generate-FQPN-input.network-role" value="`$network-topology.network-topology-identifier-structure.network-role`" />

+                                        <parameter name="generate-FQPN-input.network-collection" value="`$aaiapi.output.collection-name`" />

+                                        <parameter name="generate-FQPN-input.network-id" value="`$network-topology.network-topology-identifier-structure.network-id`" />

+                                        <parameter name="tmp.network-id" value="`network-topology.network-topology-identifier-structure.network-id`" />

+                                        <parameter name="tmp.network-instance-group-id" value="`$network-topology.network-topology-identifier-structure.network-instance-group-id`" />

+                                        <!-- the following are not set by calling dg

+generate-FQPN-input.subnet-role

+generate-FQPN-input.zone

+generate-FQPN-input.equipment

+-->

+                                        <!-- network model is already in contect memory -->

+                                        <!-- aai.cloud-region.cloud-region-id  is already in contect memory -->

+                                    </set>

+                                    <call module='GENERIC-RESOURCE-API' rpc='process-generic-eipam-pools' mode='sync' >

+                                        <outcome value='failure'>

+                                            <return status="failure">

+                                                <parameter name="ack-final" value="Y" />

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="`'Error from process-generic-eipam-pools, ' + $error-message`" />

+                                            </return>

+                                        </outcome>

+                                    </call>

+                                    <switch test="`$network-model.eipam-v4-address-plan != ''`">

+                                        <outcome value='true'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name="network-topology.network-identifier-structure.eipam-v4-address-plan" value="`$network-model.eipam-v4-address-plan`" />

+                                                </set>

+                                                <for silentFailure='true' index='eidx' start='0' end='`$eipam-ip-block.createPoolResponse.CreatePoolPlans_length`' >

+                                                    <switch test="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.PlanName == $network-model.eipam-v4-address-plan`">

+                                                        <outcome value='true'>

+                                                            <block atomic='true'>

+                                                                <set>

+                                                                    <parameter name="v4.ip-prefix" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IPAddress`"/>

+                                                                    <parameter name="v4.mask" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.Mask`"/>

+                                                                    <parameter name="v4.entity-id" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IpamPoolAllocId`"/>

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <switch test="`$network-model.eipam-v6-address-plan != ''`">

+                                        <outcome value='true'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name="network-topology.network-identifier-structure.eipam-v6-address-plan" value="`$network-model.eipam-v4-address-plan`" />

+                                                </set>

+                                                <for silentFailure='true' index='eidx' start='0' end='`$eipam-ip-block.createPoolResponse.CreatePoolPlans_length`' >

+                                                    <switch test="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.PlanName == $network-model.eipam-v6-address-plan`">

+                                                        <outcome value='true'>

+                                                            <block atomic='true'>

+                                                                <set>

+                                                                    <parameter name="v6.ip-prefix" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IPAddress`"/>

+                                                                    <parameter name="v6.mask" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.Mask`"/>

+                                                                    <parameter name="v6.entity-id" value="`$eipam-ip-block.createPoolResponse.CreatePoolPlans[$eidx].CreatePoolPlan.IPDataBlock.IpamPoolAllocId`"/>

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <!--tmp.level should be set to 1-->

+                                    <call module='GENERIC-RESOURCE-API' rpc='create-l3-subnet' mode='sync' ></call>

+                                    <switch test='`$tmp.l3-network.service-id`'>

+                                        <outcome value=''>

+                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $tmp.l3-network.network-id" >

+                                                <!-- Create l3-network object -->

+                                                <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                                <parameter name="network-name" value="`$tmp.l3-network.network-name`" />

+                                                <parameter name="network-type" value="`$network-model.network-type`" />

+                                                <parameter name="network-role" value="`$network-model.network-role`" />

+                                                <parameter name="network-technology" value="`$network-model.network-technology`" />

+                                                <parameter name="is-bound-to-vpn" value="`$tmp.l3-network.is-bound-to-vpn-boolean`" />

+                                                <parameter name="tenant-id" value="`$network-topology-operation-input.network-request-information.tenant`" />

+                                                <parameter name="model-invariant-id" value="`$network-model.invariant_uuid`" />

+                                                <parameter name="model-version" value="`$network-model.version`" />

+                                                <parameter name="model-customization-id" value="`$network-model.customization-id`" />

+                                                <parameter name="physical-network-name" value="`$network-model.physical-network-name`" />

+                                                <parameter name="is-provider-network" value="`$tmp.l3-network.is-provider-network-boolean`" />

+                                                <parameter name="is-shared-network" value="`$tmp.l3-network.is-shared-network-boolean`" />

+                                                <parameter name="is-external-network" value="`$tmp.l3-network.is-external-network-boolean`" />

+                                                <parameter name="selflink" value="`$tmp.l3-network.self-link`" />

+                                                <parameter name="operational-status" value="out-of-service-path" />

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />

+                                                    </return>

+                                                </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="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $tmp.l3-network.network-id" >

+                                                <!-- Create l3-network object -->

+                                                <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                                <parameter name="network-name" value="`$tmp.l3-network.network-name`" />

+                                                <parameter name="network-type" value="`$network-model.network-type`" />

+                                                <parameter name="network-role" value="`$network-model.network-role`" />

+                                                <parameter name="network-technology" value="`$network-model.network-technology`" />

+                                                <parameter name="is-bound-to-vpn" value="`$tmp.l3-network.is-bound-to-vpn-boolean`" />

+                                                <parameter name="tenant-id" value="`$network-topology-operation-input.network-request-information.tenant`" />

+                                                <parameter name="model-invariant-id" value="`$network-model.invariant_uuid`" />

+                                                <parameter name="model-version" value="`$network-model.version`" />

+                                                <parameter name="model-customization-id" value="`$network-model.customization-id`" />

+                                                <parameter name="physical-network-name" value="`$network-model.physical-network-name`" />

+                                                <parameter name="is-provider-network" value="`$tmp.l3-network.is-provider-network-boolean`" />

+                                                <parameter name="is-shared-network" value="`$tmp.l3-network.is-shared-network-boolean`" />

+                                                <parameter name="is-external-network" value="`$tmp.l3-network.is-external-network-boolean`" />

+                                                <parameter name="selflink" value="`$tmp.l3-network.self-link`" />

+                                                <parameter name="service-id" value="`$tmp.l3-network.service-id`" />

+                                                <parameter name="operational-status" value="out-of-service-path" />

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />

+                                                    </return>

+                                                </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="`'Failed to save l3-network in AAI for network-id = ' + $tmp.l3-network.network-id`" />

+                                                    </return>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name="msidx" value="`$nig.subnets_length`" />

+                                    </set>

+                                    <for index='sidx' start='0' end='`$tmp.l3-network.subnet_length`' >

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="tmp.subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`"/>

+                                            </set>

+                                            <switch test='`$tmp.l3-network.subnet[$sidx].dhcp-enabled`'>

+                                                <outcome value='true'>

+                                                    <block atomic="true">

+                                                        <switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>

+                                                            <outcome value=''>

+                                                                <block atomic='true'>

+                                                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND subnet.subnet-id = $tmp.subnet-id" >

+                                                                        <!-- Create l3-network object -->

+                                                                        <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                                                        <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />

+                                                                        <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />

+                                                                        <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />

+                                                                        <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />

+                                                                        <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />

+                                                                        <parameter name="dhcp-start" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />

+                                                                        <parameter name="dhcp-end" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />

+                                                                        <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />

+                                                                        <parameter name="orchestration-status" value="PendingCreate" />

+                                                                        <outcome value='failure'>

+                                                                            <block atomic='true'>

+                                                                                <set>

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                                </set>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <block atomic='true'>

+                                                                                <set>

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                                </set>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </save>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='Other'>

+                                                                <block atomic='true'>

+                                                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND subnet.subnet-id = $tmp.subnet-id" >

+                                                                        <!-- Create l3-network object -->

+                                                                        <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                                                        <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />

+                                                                        <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />

+                                                                        <parameter name="gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />

+                                                                        <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />

+                                                                        <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />

+                                                                        <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />

+                                                                        <parameter name="dhcp-start" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />

+                                                                        <parameter name="dhcp-end" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />

+                                                                        <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />

+                                                                        <parameter name="orchestration-status" value="PendingCreate" />

+                                                                        <outcome value='failure'>

+                                                                            <block atomic='true'>

+                                                                                <set>

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                                </set>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <block atomic='true'>

+                                                                                <set>

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                                </set>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </save>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='false'>

+                                                    <block atomic="true">

+                                                        <switch test='`$tmp.l3-network.subnet[$sidx].gateway-address`'>

+                                                            <outcome value=''>

+                                                                <block atomic='true'>

+                                                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND subnet.subnet-id = $tmp.subnet-id" >

+                                                                        <!-- Create l3-network object -->

+                                                                        <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                                                        <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />

+                                                                        <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />

+                                                                        <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />

+                                                                        <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />

+                                                                        <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />

+                                                                        <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />

+                                                                        <parameter name="orchestration-status" value="PendingCreate" />

+                                                                        <outcome value='failure'>

+                                                                            <block atomic='true'>

+                                                                                <set>

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                                </set>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <block atomic='true'>

+                                                                                <set>

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                                </set>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </save>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='Other'>

+                                                                <block atomic='true'>

+                                                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.l3-network.network-id 

+			AND subnet.subnet-id = $tmp.subnet-id" >

+                                                                        <!-- Create l3-network object -->

+                                                                        <parameter name="network-id" value="`$tmp.l3-network.network-id`" />

+                                                                        <parameter name="subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />

+                                                                        <parameter name="subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />

+                                                                        <parameter name="gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />

+                                                                        <parameter name="network-start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />

+                                                                        <parameter name="cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />

+                                                                        <parameter name="ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />

+                                                                        <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />

+                                                                        <parameter name="orchestration-status" value="PendingCreate" />

+                                                                        <outcome value='failure'>

+                                                                            <block atomic='true'>

+                                                                                <set>

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                                </set>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <block atomic='true'>

+                                                                                <set>

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="tmp.error-message" value="`'An error occurred while saving subnet relationship for l3-network in AnAI where network-id = ' + $tmp.l3-network.network-id`"/>

+                                                                                </set>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </save>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                            <set>

+                                                <parameter name="nig.subnets[$msidx].start-address" value="`$tmp.l3-network.subnet[$sidx].network-start-address`" />

+                                                <parameter name="nig.subnets[$msidx].subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`" />

+                                                <parameter name="nig.subnets[$msidx].subnet-name" value="`$tmp.l3-network.subnet[$sidx].subnet-name`" />

+                                                <parameter name="nig.subnets[$msidx].gateway-address" value="`$tmp.l3-network.subnet[$sidx].gateway-address`" />

+                                                <parameter name="nig.subnets[$msidx].cidr-mask" value="`$tmp.l3-network.subnet[$sidx].cidr-mask`" />

+                                                <parameter name="nig.subnets[$msidx].ip-version" value="`$tmp.l3-network.subnet[$sidx].ip-version`" />

+                                                <parameter name="nig.subnets[$msidx].dhcp-start-address" value="`$tmp.l3-network.subnet[$sidx].dhcp-start`" />

+                                                <parameter name="nig.subnets[$msidx].dhcp-end-address" value="`$tmp.l3-network.subnet[$sidx].dhcp-end`" />

+                                                <parameter name="nig.subnets[$msidx].dhcp-enabled" value="`$tmp.l3-network.subnet[$sidx].dhcp-enabled`" />

+                                                <parameter name="orchestration-status" value="PendingCreate" />

+                                            </set>

+                                            <set>

+                                                <parameter name="msidx" value="`$msidx + 1`" />

+                                                <parameter name="nig.subnets_length" value="`$nig.subnets_length + 1`" />

+                                            </set>

+                                        </block>

+                                    </for>

+                                </block>

+                            </outcome>

+                            <outcome value='false'>

+                                <block atomic='true'>

+                                    <switch test='`$ngnidx`'>

+                                        <outcome value=''>

+                                            <for index='sidx' start='0' end='`$tmp.l3-network.subnet_length`' >

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name="tmp.subnet-id" value="`$tmp.l3-network.subnet[$sidx].subnet-id`"/>

+                                                    </set>

+                                                    <switch test='`$tmp.l3-network.subnet[$sidx].dhcp-enabled`'></switch>

+                                                </block>

+                                            </for>

+                                        </outcome>

+                                        <outcome value='Other'></outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.l3-network.network-id" 

+	force="true" 

+	local-only="false">

+                <parameter name="relationship-list.relationship[0].related-to" value="instance-group" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/aai/v$/network/instance-groups/instance-group/'+ $tmp.network-instance-group-id`" />

+                <outcome value='failure'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="`'An error occurred while saving instance-group relationship for l3-network in AnAI where instance-group-id = ' + $tmp.network-instance-group-id`"/>

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="`'An error occurred while saving instance-group relationship for l3-network in AnAI where instance-group-id = ' + $tmp.network-instance-group-id`"/>

+                        </set>

+                    </block>

+                </outcome>

+            </save>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.l3-network.network-id" >

+                <parameter name="relationship-list.relationship[0].related-to" value="service-instance" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="customer.global-customer-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$service-data.service-information.global-customer-id`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="service-subscription.service-type" />

+                <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$service-data.service-information.subscription-service-type`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="service-instance.service-instance-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$service-data.service-information.service-instance-id`" />

+                <outcome value='failure'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="`'An error occurred while saving service-instance relationship for l3-network in AnAI where service-instance-id = ' + $network-topology-operation-input.service-information.service-instance-id`"/>

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="tmp.error-message" value="`'An error occurred while saving service-instance relationship for l3-network in AnAI where service-instance-id = ' + $network-topology-operation-input.service-information.service-instance-id`"/>

+                        </set>

+                    </block>

+                </outcome>

+            </save>

+            <set>

+                <parameter name='network-topology.network-topology-identifier-structure.' value='`$tmp.l3-network.`' />

+                <parameter name='network-topology.tenant' value='`$network-topology-operation-input.network-request-input.tenant`' />

+                <parameter name='network-topology.onap-model-information.' value='`$network-topology-operation-input.network-information.onap-model-information.`' />

+                <parameter name='network-topology.network-parameters.' value='`$network-topology-operation-input.network-request-input.network-parameters.`' />

+                <parameter name='network-topology.aic-cloud-region' value='`$network-topology-operation-input.network-request-input.aic-cloud-region`' />

+            </set>

+            <set>

+                <parameter name="service-data.network-instance-groups.network-instance-group[$ngidx]." value='`$nig.`' />

+            </set>

+            <set>

+                <parameter name="service-data.networks.network[$nidx].network-id" value='`$tmp.l3-network.network-id`' />

+                <parameter name="service-data.networks.network[$nidx].network-data.network-topology." value='$network-topology.' />

+                <parameter name="service-data.networks.network_length" value='`$nidx_len`' />

+            </set>

+            <set>

+                <parameter name='networkId' value='`$tmp.l3-network.network-id`' />

+            </set>

+            <set>

+                <parameter name='network-object-path'

+ value="`$tmp.l3-network.self-link`"/>

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='PendingCreate' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />

+            </set>

+            <return status='success'>

+                <parameter name='' value='' />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-assign.xml
new file mode 100755
index 0000000..1f6f5d8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-assign.xml
@@ -0,0 +1,103 @@
+<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='network-topology-operation-assign' mode='sync'>

+        <block atomic="true">

+            <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="tenant" 

+		key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND 

+		     cloud-region.cloud-region-id = $network-topology-operation-input.network-request-input.aic-cloud-region AND

+		     tenant.tenant-id = $network-topology-operation-input.network-request-input.tenant"

+        pfx='aai.tenant' local-only='false' >

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </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="Tenant not found in AAI" />

+                    </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="Tenant not found in AAI" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <switch test='`$network-topology-operation-input.network-information.network-id`'>

+                <outcome value=''>

+                    <call module='GENERIC-RESOURCE-API' rpc='generate-l3network-network-id' mode='sync' ></call>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.return.generate-l3network-network-id.uuid' value='`$network-topology-operation-input.network-information.network-id`' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='tmp.l3-network.network-id' value='`$tmp.return.generate-l3network-network-id.uuid`' />

+                <parameter name='network-topology-operation-input.network-information.network-id' value='`$tmp.return.generate-l3network-network-id.uuid`' />

+            </set>

+            <switch test='`$network-topology-operation-input.network-information.network-instance-group-id`'>

+                <outcome value=''>

+                    <switch test='`$network-topology-operation-input.network-request-input.network-name`'>

+                        <outcome value=''>

+                            <block atomic="true">

+                                <switch test='`$network-model.ecomp-generated-naming`'>

+                                    <outcome value='Y'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$network-model.naming-policy`' />

+                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$tmp.l3-network.network-id`' />

+                                                <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                                <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />

+                                                <parameter name='naming-policy-generate-name-input.query-parameter' value='`$network-model.customization-uuid`' />

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                            <set>

+                                                <parameter name='tmp.network-instance-name' value='`$naming-policy-generate-name-output.network-name`' />

+                                                <parameter name='tmp.l3-network.network-name' value='`$naming-policy-generate-name-output.network-name`' />

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-assign-automated' mode='sync' ></call>

+                                        </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="Network name is required if onap naming is false" />

+                                        </return>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='tmp.network-instance-name' value="`$network-topology-operation-input.network-request-input.network-name`" />

+                                    <parameter name='tmp.l3-network.network-name' value="`$network-topology-operation-input.network-request-input.network-name`" />

+                                </set>

+                                <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-assign-from-preload' mode='sync' ></call>

+                            </block>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='Other'>

+                    <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-assign-vlantagging-instancegroup' mode='sync' ></call>

+                </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-changeassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-changeassign.xml
new file mode 100755
index 0000000..7d0155a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-changeassign.xml
@@ -0,0 +1,1172 @@
+<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='network-topology-operation-changeassign' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.networks.network[$nidx].network-data.network-information.from-preload`'>

+                <outcome value='true'>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error: changeassign only allowed for networks with from-preload set to true" />

+                    </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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.preload-network`"/>

+                <parameter name="outputPath" value="tmp.pn-url"/>

+                <parameter name="target" value="{network-name}"/>

+                <parameter name="replacement" value="`$network-topology-operation-input.network-request-information.network-name`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pn-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="preload-data" />

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="'Error: No preload-network found with network-name =' + $tmp.network-instance-name + ' in md-sal'" />

+                    </return>

+                </outcome>

+            </execute>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $network-topology-operation-input.network-request-information.network-id

+			AND depth='all'" 

+		local-only="false" 

+		pfx="tmp.AnAI.l3network">

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + ' from AnAI'`" />

+                    </return>

+                </outcome>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="`'network-id: ' + $network-topology-operation-input.network-request-information.network-id + 'not found in AnAI'`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <switch test="`$tmp.AnAI.l3network.network-name == $network-data.network-topology.network-topology-identifier-structure.network-name`">

+                <outcome value='false'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="`'The input network-name,' + network-topology-operation-input.network-request-information.network-name + ', does not match what is returned from AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.AnAI.l3network.network-type == $network-data.network-topology.network-topology-identifier-structure.network-type`">

+                <outcome value='false'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="`'The input network-type,' + network-topology-operation-input.network-request-information.network-type + ', does not match what is returned from AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.AnAI.l3network.network-name == $preload-data.preload-network-topology-information.network-topology-identifier.network-name`">

+                <outcome value='false'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="`'No preload network found with network-name = ' + $tmp.AnAI.l3network.network-name + ' in SDNC'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.AnAI.l3network.network-type == $preload-data.preload-network-topology-information.network-topology-identifier.network-type`">

+                <outcome value='false'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="`'No preload network found with network-type = ' + $tmp.AnAI.l3network.network-type + ' in SDNC'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='x' value='0' />

+                <parameter name='tmp.error-message' value='' />

+                <parameter name='execute_failure' value='false' />

+                <parameter name='tmp.l3networkUpdate' value='0' />

+            </set>

+            <switch test="`$tmp.AnAI.l3network.subnets.subnet_length`">

+                <outcome value=''>

+                    <set>

+                        <parameter name="tmp.AnAI.l3network.subnets.subnet_length" value="0" />

+                    </set>

+                </outcome>

+            </switch>

+            <for index="k" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">

+                <block atomic='true'>

+                    <set>

+                        <parameter name='tmp.start-address-match' value='0' />

+                    </set>

+                    <set>

+                        <parameter name='tmp.subnetUpdate' value='0' />

+                    </set>

+                    <block atomic='true'>

+                        <for index="n" start="0" end="`$preload-data.preload-network-topology-information.subnets_length`">

+                            <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].network-start-address == $preload-data.preload-network-topology-information.subnets[$n].start-address`">

+                                <outcome value='true'>

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='tmp.start-address-match' value='1' />

+                                        </set>

+                                        <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].cidr-mask == $preload-data.preload-network-topology-information.subnets[$n].cidr-mask`">

+                                            <outcome value='false'>

+                                                <set>

+                                                    <parameter name="tmp.subnetUpdate" value="1" />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$preload-data.preload-network-topology-information.subnets[$n].gateway-address`">

+                                            <outcome value=''>

+                                                <block>

+                                                    <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="getGatewayAddress">

+                                                        <parameter name="ipAddress" value="`$preload-data.preload-network-topology-information.subnets[$n].start-address`" />

+                                                        <parameter name="ipVersion" value="`$preload-data.preload-network-topology-information.subnets[$n].ip-version`" />

+                                                        <parameter name="subnet" value="`$preload-data.preload-network-topology-information.subnets[$n].cidr-mask`" />

+                                                        <parameter name="ctxVariable" value="tmp.return.generate.gateway-address" />

+                                                    </execute>

+                                                    <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].gateway-address == $tmp.return.generate.gateway-address`">

+                                                        <outcome value='false'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name="tmp.gateway-address" value="`$tmp.return.generate.gateway-address`" />

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name="tmp.subnetUpdate" value="1" />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].gateway-address == $preload-data.preload-network-topology-information.subnets[$n].gateway-address`">

+                                                    <outcome value='false'>

+                                                        <block>

+                                                            <set>

+                                                                <parameter name="tmp.gateway-address" value="`$preload-data.preload-network-topology-information.subnets[$n].gateway-address`" />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name="tmp.subnetUpdate" value="1" />

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='true'>

+                                                        <set>

+                                                            <parameter name="tmp.gateway-address" value="`$preload-data.preload-network-topology-information.subnets[$n].gateway-address`" />

+                                                        </set>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$preload-data.preload-network-topology-information.subnets[$n].dhcp-enabled`">

+                                            <outcome value='N'>

+                                                <set>

+                                                    <parameter name="tmp.dhcpEnabled.boolean" value="false" />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='Y'>

+                                                <set>

+                                                    <parameter name="tmp.dhcpEnabled.boolean" value="true" />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$preload-data.preload-network-topology-information.subnets[$n].addr-from-start`">

+                                            <outcome value='N'>

+                                                <set>

+                                                    <parameter name="tmp.addrFromStart.boolean" value="false" />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='Y'>

+                                                <set>

+                                                    <parameter name="tmp.addrFromStart.boolean" value="true" />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].ip-assignment-direction == $tmp.addrFromStart.boolean`">

+                                            <outcome value='false'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name="tmp.subnetUpdate" value="1" />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-enabled == $tmp.dhcpEnabled.boolean`">

+                                            <outcome value='false'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name="tmp.subnetUpdate" value="1" />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-start == $preload-data.preload-network-topology-information.subnets[$n].dhcp-start-address`">

+                                            <outcome value='false'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name="tmp.subnetUpdate" value="1" />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-end == $preload-data.preload-network-topology-information.subnets[$n].dhcp-end-address`">

+                                            <outcome value='false'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name="tmp.subnetUpdate" value="1" />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-name == $preload-data.preload-network-topology-information.subnets[$n].subnet-name`">

+                                            <outcome value='false'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name="tmp.subnetUpdate" value="1" />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-role == $preload-data.preload-network-topology-information.subnets[$n].subnet-role`">

+                                            <outcome value='false'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name="tmp.subnetUpdate" value="1" />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$tmp.subnetUpdate == 1`">

+                                            <outcome value='true'>

+                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.AnAI.l3network.network-id 

+			AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id" >

+                                                    <!-- Update l3network.subnet -->

+                                                    <parameter name="gateway-address" value="`$tmp.gateway-address`"/>

+                                                    <parameter name="subnet-name" value="`$preload-data.preload-network-topology-information.subnets[$n].subnet-name`"/>

+                                                    <parameter name="cidr-mask" value="`$preload-data.preload-network-topology-information.subnets[$n].cidr-mask`"/>

+                                                    <parameter name="dhcp-start" value="`$preload-data.preload-network-topology-information.subnets[$n].dhcp-start-address`"/>

+                                                    <parameter name="dhcp-end" value="`$preload-data.preload-network-topology-information.subnets[$n].dhcp-end-address`"/>

+                                                    <parameter name="dhcp-enabled" value="`$tmp.dhcpEnabled.boolean`"/>

+                                                    <parameter name="ip-assignment-direction" value="`$tmp.addrFromStart.boolean`" />

+                                                    <parameter name="orchestration-status" value="PendingUpdate" />

+                                                    <outcome value='failure'>

+                                                        <block>

+                                                            <set>

+                                                                <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />

+                                                                <parameter name='n' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name="error-code" value="500"/>

+                                                                <parameter name="tmp.error-message" value="`'An error occurred while updating subnet attributes in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>

+                                                            </set>

+                                                            <return status='success'>

+                                                                <parameter name='execute_failure' value='true' />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <block>

+                                                            <set>

+                                                                <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />

+                                                                <parameter name='n' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name="error-code" value="500"/>

+                                                                <parameter name="tmp.error-message" value="`'An error occurred while updating subnet attributes in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>

+                                                            </set>

+                                                            <return status='success'>

+                                                                <parameter name='execute_failure' value='true' />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='success'>

+                                                        <block>

+                                                            <set>

+                                                                <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>

+                                                                <parameter name="tmp.subnetRollback[$x].type" value = "update"/>

+                                                            </set>

+                                                            <set>

+                                                                <parameter name="x" value = "`$x + 1`"  />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name="tmp.l3networkUpdate" value="1" />

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </update>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test="`$execute_failure`">

+                            <outcome value='false'>

+                                <switch test="`$tmp.start-address-match == 0`">

+                                    <outcome value='true'>

+                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.AnAI.l3network.network-id 

+			AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id" >

+                                            <parameter name="orchestration-status" value="PendingDelete" />

+                                            <outcome value='failure'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />

+                                                        <parameter name='n' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="tmp.error-message" value="`'An error occurred while updating subnet status to PendingDelete in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>

+                                                    </set>

+                                                    <return status='success'>

+                                                        <parameter name='execute_failure' value='true' />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />

+                                                        <parameter name='n' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="tmp.error-message" value="`'An error occurred while updating subnet status to PendingDelete in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>

+                                                    </set>

+                                                    <return status='success'>

+                                                        <parameter name='execute_failure' value='true' />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>

+                                                        <parameter name="tmp.subnetRollback[$x].orchestration-status" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].orchestration-status`" />

+                                                        <parameter name="tmp.subnetRollback[$x].type" value = "delete"  />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name="x" value = "`$x + 1`"  />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name="tmp.l3networkUpdate" value="1" />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </update>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                        </switch>

+                    </block>

+                </block>

+            </for>

+            <switch test="`$execute_failure`">

+                <outcome value='false'>

+                    <for index="i" start="0" end="`$preload-data.preload-network-topology-information.subnets_length`">

+                        <block atomic='true'>

+                            <set>

+                                <parameter name="tmp.start-address-match" value="0" />

+                            </set>

+                            <block atomic='true'>

+                                <for index="j" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">

+                                    <switch test="`$preload-data.preload-network-topology-information.subnets[$i].start-address == $tmp.AnAI.l3network.subnets.subnet[$j].network-start-address`">

+                                        <outcome value='true'>

+                                            <set>

+                                                <parameter name='tmp.start-address-match' value='1' />

+                                            </set>

+                                        </outcome>

+                                    </switch>

+                                </for>

+                                <switch test="`$tmp.start-address-match == 0`">

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <switch test="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-enabled`">

+                                                <outcome value='N'>

+                                                    <set>

+                                                        <parameter name="tmp.dhcpEnabled.boolean" value="false" />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='Y'>

+                                                    <set>

+                                                        <parameter name="tmp.dhcpEnabled.boolean" value="true" />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                            <switch test="`$preload-data.preload-network-topology-information.subnets[$n].addr-from-start`">

+                                                <outcome value='N'>

+                                                    <set>

+                                                        <parameter name="tmp.addrFromStart.boolean" value="false" />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='Y'>

+                                                    <set>

+                                                        <parameter name="tmp.addrFromStart.boolean" value="true" />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value=''>

+                                                    <set>

+                                                        <parameter name="tmp.addrFromStart.boolean" value="true" />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                            <set>

+                                                <parameter name='tmp.gateway-address' value='`$preload-data.preload-network-topology-information.subnets[$i].gateway-address`' />

+                                            </set>

+                                            <switch test="`$preload-data.preload-network-topology-information.subnets[$i].gateway-address`">

+                                                <outcome value=''>

+                                                    <block>

+                                                        <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="getGatewayAddress">

+                                                            <parameter name="ipAddress" value="`$preload-data.preload-network-topology-information.subnets[$i].start-address`" />

+                                                            <parameter name="ipVersion" value="`$preload-data.preload-network-topology-information.subnets[$i].ip-version`" />

+                                                            <parameter name="subnet" value="`$preload-data.preload-network-topology-information.subnets[$i].cidr-mask`" />

+                                                            <parameter name="ctxVariable" value="tmp.return.generate.gateway-address" />

+                                                        </execute>

+                                                        <set>

+                                                            <parameter name="tmp.gateway-address" value="`$tmp.return.generate.gateway-address`" />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                            <set>

+                                                <parameter name="tmp.local.network-id" value="`$tmp.AnAI.l3network.network-id`" />

+                                            </set>

+                                            <call module="VNF-API" rpc="generate-subnets-subnet-id" mode="sync" >

+                                                <outcome value='failure'>

+                                                    <block>

+                                                        <set>

+                                                            <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />

+                                                            <parameter name='i' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.error-message" value="`'An error occurred while saving new subnet in AnAI with subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/>

+                                                        </set>

+                                                        <return status='success'>

+                                                            <parameter name='execute_failure' value='true' />

+                                                        </return>

+                                                    </block>

+                                                </outcome>

+                                            </call>

+                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.AnAI.l3network.network-id 

+			AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid" >

+                                                <!-- Create l3-network object -->

+                                                <parameter name="network-id" value="`$tmp.AnAI.l3network.network-id`" />

+                                                <parameter name="subnet-id" value="`$tmp.return.generate-subnets-subnet-id.uuid`" />

+                                                <parameter name="gateway-address" value="`$tmp.gateway-address`" />

+                                                <parameter name="subnet-name" value="`$preload-data.preload-network-topology-information.subnets[$i].subnet-name`" />

+                                                <parameter name="network-start-address" value="`$preload-data.preload-network-topology-information.subnets[$i].start-address`" />

+                                                <parameter name="cidr-mask" value="`$preload-data.preload-network-topology-information.subnets[$i].cidr-mask`" />

+                                                <parameter name="ip-version" value="`$preload-data.preload-network-topology-information.subnets[$i].ip-version`" />

+                                                <parameter name="dhcp-start" value="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-start-address`" />

+                                                <parameter name="dhcp-end" value="`$preload-data.preload-network-topology-information.subnets[$i].dhcp-end-address`" />

+                                                <parameter name="dhcp-enabled" value="`$tmp.dhcpEnabled.boolean`" />

+                                                <parameter name="ip-assignment-direction" value="`$tmp.addrFromStart.boolean`" />

+                                                <parameter name="orchestration-status" value="PendingCreate" />

+                                                <outcome value='failure'>

+                                                    <block>

+                                                        <set>

+                                                            <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />

+                                                            <parameter name='i' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.error-message" value="`'An error occurred while saving new subnet in AnAI with subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/>

+                                                        </set>

+                                                        <return status='success'>

+                                                            <parameter name='execute_failure' value='true' />

+                                                        </return>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='not-found'>

+                                                    <block>

+                                                        <set>

+                                                            <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />

+                                                            <parameter name='i' value='`$preload-data.preload-network-topology-information.subnets_length + 1`' />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.error-message" value="`'An error occurred while saving new subnet in AnAI with subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/>

+                                                        </set>

+                                                        <return status='success'>

+                                                            <parameter name='execute_failure' value='true' />

+                                                        </return>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='success'>

+                                                    <block>

+                                                        <set>

+                                                            <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.return.generate-subnets-subnet-id.uuid`" />

+                                                            <parameter name="tmp.subnetRollback[$x].type" value = "create"  />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name="x" value = "`$x + 1`"  />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name='tmp.l3networkUpdate' value='1' />

+                                                        </set>

+                                                        <block>

+                                                            <set>

+                                                                <parameter name="tmp.local.subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$j].subnet-id`" />

+                                                            </set>

+                                                            <switch test='`$preload-data.preload-network-topology-information.subnets[$i].host-routes_length`'>

+                                                                <outcome value=''>

+                                                                    <set>

+                                                                        <parameter name='preload-data.preload-network-topology-information.subnets[$i].host-routes_length' value='0' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                            <for index="h" start="0" end="`$preload-data.preload-network-topology-information.subnets[$i].host-routes_length`">

+                                                                <block atomic='true'>

+                                                                    <call module="VNF-API" rpc="generate-host-routes-host-route-id" mode="sync" >

+                                                                        <outcome value='failure'>

+                                                                            <block>

+                                                                                <set>

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="tmp.error-message" value="`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`"/>

+                                                                                </set>

+                                                                                <return status='success'>

+                                                                                    <parameter name='execute_failure' value='true' />

+                                                                                </return>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </call>

+                                                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="host-route" 

+		key="l3-network.network-id = $tmp.AnAI.l3network.network-id  

+			AND subnet.subnet-id = $tmp.local.subnet-id  

+			AND host-route.host-route-id = $tmp.return.generate-host-routes-host-route-id.uuid" >

+                                                                        <!-- Create host-route object -->

+                                                                        <parameter name="host-route-id" value="`$tmp.return.generate-host-routes-host-route-id.uuid`" />

+                                                                        <parameter name="route-prefix" value="`$preload-data.preload-network-topology-information.subnets[$i].host-routes[$h].route-prefix`" />

+                                                                        <parameter name="next-hop" value="`$preload-data.preload-network-topology-information.subnets[$i].host-routes[$h].next-hop`" />

+                                                                        <outcome value='failure'>

+                                                                            <block>

+                                                                                <set>

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="tmp.error-message" value="`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`"/>

+                                                                                </set>

+                                                                                <return status='success'>

+                                                                                    <parameter name='execute_failure' value='true' />

+                                                                                </return>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <block>

+                                                                                <set>

+                                                                                    <parameter name="error-code" value="500"/>

+                                                                                    <parameter name="tmp.error-message" value="`'An error occurred while saving host-route in AnAI where host-route-id = ' + $tmp.return.generate-host-routes-host-route-id.uuid`"/>

+                                                                                </set>

+                                                                                <return status='success'>

+                                                                                    <parameter name='execute_failure' value='true' />

+                                                                                </return>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </save>

+                                                                </block>

+                                                            </for>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                            </save>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </block>

+                    </for>

+                </outcome>

+            </switch>

+            <switch test="`$execute_failure`">

+                <outcome value='false'>

+                    <block atomic='true'>

+                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.AnAI.l3network.network-id 

+		AND related-to = vpn-binding" >

+                            <outcome value='failure'>

+                                <block>

+                                    <set>

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="tmp.error-message" value="An error occurred while deleting l3-network vpn-binding relationship from AnAI"/>

+                                    </set>

+                                    <return status='success'>

+                                        <parameter name='execute_failure' value='true' />

+                                    </return>

+                                </block>

+                            </outcome>

+                        </delete>

+                        <switch test="`$execute_failure`">

+                            <outcome value='false'>

+                                <block atomic='true'>

+                                    <switch test="`$preload-data.preload-network-topology-information.vpn-bindings_length`">

+                                        <outcome value=''>

+                                            <set>

+                                                <parameter name="preload-data.preload-network-topology-information.vpn-bindings_length" value="0" />

+                                            </set>

+                                        </outcome>

+                                    </switch>

+                                    <for index="i" start="0" end="`$preload-data.preload-network-topology-information.vpn-bindings_length`">

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name="tmp.vpn-binding-id" value="" />

+                                            </set>

+                                            <switch test="`$preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`">

+                                                <outcome value='Other'>

+                                                    <set>

+                                                        <parameter name="tmp.vpn-binding-id" value="`$preload-data.preload-network-topology-information.vpn-bindings[$i].vpn-binding-id`" />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                            <switch test="`$preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target != ''`" >

+                                                <outcome value='true'>

+                                                    <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vpn-binding" 

+		key="vpn-binding.global-route-target = $preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target" 

+		pfx="tmp.AnAI.vpn-binding">

+                                                        <outcome value='not-found'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name="error-code" value="500"/>

+                                                                    <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings n AnAI where global-route-target = ' + $preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target`"/>

+                                                                </set>

+                                                                <return status='success'>

+                                                                    <parameter name='execute_failure' value='true' />

+                                                                </return>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='failure'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name="error-code" value="500"/>

+                                                                    <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings n AnAI where global-route-target = ' + $preload-data.preload-network-topology-information.vpn-bindings[$i].global-route-target`"/>

+                                                                </set>

+                                                                <return status='success'>

+                                                                    <parameter name='execute_failure' value='true' />

+                                                                </return>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='success'>

+                                                            <set>

+                                                                <parameter name="tmp.vpn-binding-id" value="`$tmp.AnAI.vpn-binding.vpn-id`" />

+                                                            </set>

+                                                        </outcome>

+                                                    </get-resource>

+                                                </outcome>

+                                            </switch>

+                                            <switch test="`$execute_failure`">

+                                                <outcome value='false'>

+                                                    <switch test="`$tmp.vpn-binding-id != ''`">

+                                                        <outcome value='true'>

+                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >

+                                                                <parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />

+                                                                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />

+                                                                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.vpn-binding-id`" />

+                                                                <outcome value='failure'>

+                                                                    <block>

+                                                                        <set>

+                                                                            <parameter name="error-code" value="500"/>

+                                                                            <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.vpn-binding-id`"/>

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name="i" value = "`$preload-data.preload-network-topology-information.vpn-bindings_length + 1`"  />

+                                                                        </set>

+                                                                        <return status='success'>

+                                                                            <parameter name='execute_failure' value='true' />

+                                                                        </return>

+                                                                    </block>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <block>

+                                                                        <set>

+                                                                            <parameter name="error-code" value="500"/>

+                                                                            <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.vpn-binding-id`"/>

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name="i" value = "`$preload-data.preload-network-topology-information.vpn-bindings_length + 1`"  />

+                                                                        </set>

+                                                                        <return status='success'>

+                                                                            <parameter name='execute_failure' value='true' />

+                                                                        </return>

+                                                                    </block>

+                                                                </outcome>

+                                                                <outcome value='success'>

+                                                                    <set>

+                                                                        <parameter name='tmp.vpn-binding.updated' value='1' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </save>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test="`$execute_failure`">

+                <outcome value='false'>

+                    <block atomic='true'>

+                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.AnAI.l3network.network-id 

+		 AND related-to = network-policy" >

+                            <outcome value='failure'>

+                                <block>

+                                    <set>

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="tmp.error-message" value="An error occurred while deleting l3-network network-policy relationship from AnAI in preparation to regenerate the network-policy relationship from PRELOAD."/>

+                                    </set>

+                                    <return status='success'>

+                                        <parameter name='execute_failure' value='true' />

+                                    </return>

+                                </block>

+                            </outcome>

+                        </delete>

+                        <switch test="`$execute_failure`">

+                            <outcome value='false'>

+                                <block atomic='true'>

+                                    <switch test="`$preload-data.preload-network-topology-information.network-policy_length`">

+                                        <outcome value=''>

+                                            <set>

+                                                <parameter name='preload-data.preload-network-topology-information.network-policy_length' value='0' />

+                                            </set>

+                                        </outcome>

+                                    </switch>

+                                    <for index="i" start="0" end="`$preload-data.preload-network-topology-information.network-policy_length`">

+                                        <switch test="`$preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn != NULL`">

+                                            <outcome value='true'>

+                                                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="network-policy" 

+		key="network-policy.network-policy-fqdn = $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn"  

+		pfx="tmp.AnAI.network-policy" >

+                                                    <outcome value='not-found'>

+                                                        <block>

+                                                            <set>

+                                                                <parameter name="error-code" value="500"/>

+                                                                <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>

+                                                            </set>

+                                                            <return status='success'>

+                                                                <parameter name='execute_failure' value='true' />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='failure'>

+                                                        <block>

+                                                            <set>

+                                                                <parameter name="error-code" value="500"/>

+                                                                <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>

+                                                            </set>

+                                                            <return status='success'>

+                                                                <parameter name='execute_failure' value='true' />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='success'>

+                                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >

+                                                            <parameter name="relationship-list.relationship[0].related-to" value="network-policy" />

+                                                            <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-policy.network-policy-id" />

+                                                            <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.network-policy.network-policy-id`" />

+                                                            <outcome value='failure'>

+                                                                <block>

+                                                                    <set>

+                                                                        <parameter name="error-code" value="500"/>

+                                                                        <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.network-policy.network-policy-id`"/>

+                                                                    </set>

+                                                                    <return status='success'>

+                                                                        <parameter name='execute_failure' value='true' />

+                                                                    </return>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='not-found'></outcome>

+                                                            <outcome value='success'>

+                                                                <set>

+                                                                    <parameter name='tmp.network-policy.updated' value='1' />

+                                                                </set>

+                                                            </outcome>

+                                                        </save>

+                                                    </outcome>

+                                                </get-resource>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test="`$execute_failure`">

+                <outcome value='false'>

+                    <block atomic='true'>

+                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.AnAI.l3network.network-id 

+		 AND related-to = route-table-reference" >

+                            <outcome value='failure'>

+                                <block>

+                                    <set>

+                                        <parameter name="error-code" value="500"/>

+                                        <parameter name="tmp.error-message" value="An error occurred while deleting l3-network route-table-reference relationship from AnAI prior to regenerate the route-table-reference relationship from PRELOAD."/>

+                                    </set>

+                                    <return status='success'>

+                                        <parameter name='execute_failure' value='true' />

+                                    </return>

+                                </block>

+                            </outcome>

+                        </delete>

+                        <switch test="`$execute_failure`">

+                            <outcome value='false'>

+                                <block atomic='true'>

+                                    <switch test="`$preload-data.preload-network-topology-information.route-table-reference_length`">

+                                        <outcome value=''>

+                                            <set>

+                                                <parameter name='preload-data.preload-network-topology-information.route-table-reference_length' value='0' />

+                                            </set>

+                                        </outcome>

+                                    </switch>

+                                    <for index="i" start="0" end="`$preload-data.preload-network-topology-information.route-table-reference_length`">

+                                        <switch test="`$preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn != NULL`">

+                                            <outcome value='true'>

+                                                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="route-table-reference" 

+		key="route-table-reference.route-table-reference-fqdn = $preload-data.preload-network-topology-information.route-table-reference[$i].route-table-reference-fqdn" 

+		pfx="tmp.AnAI.route-table-reference">

+                                                    <outcome value='not-found'>

+                                                        <block>

+                                                            <set>

+                                                                <parameter name="error-code" value="500"/>

+                                                                <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>

+                                                            </set>

+                                                            <return status='success'>

+                                                                <parameter name='execute_failure' value='true' />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='failure'>

+                                                        <block>

+                                                            <set>

+                                                                <parameter name="error-code" value="500"/>

+                                                                <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.preload-network-topology-information.network-policy[$i].network-policy-fqdn`"/>

+                                                            </set>

+                                                            <return status='success'>

+                                                                <parameter name='execute_failure' value='true' />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='success'>

+                                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >

+                                                            <parameter name="relationship-list.relationship[0].related-to" value="route-table-reference" />

+                                                            <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="route-table-reference.route-table-reference-id" />

+                                                            <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.route-table-reference.route-table-reference-id`" />

+                                                            <outcome value='failure'>

+                                                                <block>

+                                                                    <set>

+                                                                        <parameter name="error-code" value="500"/>

+                                                                        <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.route-table-reference.route-table-reference-id`"/>

+                                                                    </set>

+                                                                    <return status='success'>

+                                                                        <parameter name='execute_failure' value='true' />

+                                                                    </return>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='not-found'></outcome>

+                                                            <outcome value='success'>

+                                                                <set>

+                                                                    <parameter name='tmp.route-table-reference.updated' value='1' />

+                                                                </set>

+                                                            </outcome>

+                                                        </save>

+                                                    </outcome>

+                                                </get-resource>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test="`$execute_failure`">

+                <outcome value='false'>

+                    <switch test="`$tmp.l3networkUpdate == 1`">

+                        <outcome value='true'>

+                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >

+                                <parameter name="orchestration-status" value="PendingUpdate" />

+                                <outcome value='failure'>

+                                    <block>

+                                        <set>

+                                            <parameter name="error-code" value="500"/>

+                                            <parameter name="tmp.error-message" value="An error occurred while updating l3-network.orchestration-status in AnAI"/>

+                                        </set>

+                                        <return status='success'>

+                                            <parameter name='execute_failure' value='true' />

+                                        </return>

+                                    </block>

+                                </outcome>

+                                <outcome value='not-found'>

+                                    <block>

+                                        <set>

+                                            <parameter name="error-code" value="500"/>

+                                            <parameter name="tmp.error-message" value="An error occurred while updating l3-network.orchestration-status in AnAI"/>

+                                        </set>

+                                        <return status='success'>

+                                            <parameter name='execute_failure' value='true' />

+                                        </return>

+                                    </block>

+                                </outcome>

+                                <outcome value='success'>

+                                    <set>

+                                        <parameter name='tmp.l3network.status.updated' value='1' />

+                                    </set>

+                                </outcome>

+                            </update>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </switch>

+            <switch test="`$execute_failure`">

+                <outcome value="true">

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='ROLLBACK_START' value='NETWORK_TOPOLOGY_CHANGEASSIGN' />

+                        </set>

+                        <for index="z" start="0" end="`$tmp.AnAI.l3network.relationship-list.relationship_length`">

+                            <switch test="`$tmp.AnAI.l3network.relationship-list.relationship[$z].related-to`">

+                                <outcome value='vpn-binding'>

+                                    <switch test="`$tmp.vpn-binding.updated == 1`">

+                                        <outcome value='true'>

+                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >

+                                                <parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />

+                                                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />

+                                                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" />

+                                                <outcome value='failure'>

+                                                    <set>

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='not-found'>

+                                                    <set>

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>

+                                                    </set>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                    </switch>

+                                </outcome>

+                                <outcome value='network-policy'>

+                                    <switch test="`$tmp.network-policy.updated == 1`">

+                                        <outcome value='true'>

+                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >

+                                                <parameter name="relationship-list.relationship[0].related-to" value="network-policy" />

+                                                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-policy.network-policy-id" />

+                                                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" />

+                                                <outcome value='failure'>

+                                                    <set>

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='not-found'>

+                                                    <set>

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>

+                                                    </set>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                    </switch>

+                                </outcome>

+                                <outcome value='route-table-reference'>

+                                    <switch test="`$tmp.route-table-reference.updated == 1`">

+                                        <outcome value='true'>

+                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network:relationship-list" 

+	key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >

+                                                <parameter name="relationship-list.relationship[0].related-to" value="route-table-reference" />

+                                                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="route-table-reference.route-table-reference-id" />

+                                                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" />

+                                                <outcome value='failure'>

+                                                    <set>

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='not-found'>

+                                                    <set>

+                                                        <parameter name="error-code" value="500"/>

+                                                        <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/>

+                                                    </set>

+                                                </outcome>

+                                            </save>

+                                        </outcome>

+                                    </switch>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <for index="j" start="0" end="`$x`">

+                            <block atomic='true'>

+                                <set>

+                                    <parameter name="tmp.rollback.match" value="0"/>

+                                </set>

+                                <for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">

+                                    <switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-id == $tmp.subnetRollback[$j].subnet-id`">

+                                        <outcome value='true'>

+                                            <block atomic='true'>

+                                                <switch test="`$tmp.subnetRollback[$j].type`">

+                                                    <outcome value='delete'>

+                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.AnAI.l3network.network-id 

+			AND subnet.subnet-id = $tmp.subnetRollback[$j].subnet-id" >

+                                                            <parameter name="orchestration-status" value="`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`" />

+                                                            <outcome value='not-found'>

+                                                                <set>

+                                                                    <parameter name="error-code" value="500"/>

+                                                                    <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='failure'>

+                                                                <set>

+                                                                    <parameter name="error-code" value="500"/>

+                                                                    <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>

+                                                                </set>

+                                                            </outcome>

+                                                        </update>

+                                                    </outcome>

+                                                    <outcome value='update'>

+                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.AnAI.l3network.network-id 

+			AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$j].subnet-id" >

+                                                            <parameter name="subnet-name" value="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name`"/>

+                                                            <parameter name="gateway-address" value="`$tmp.AnAI.l3network.subnets.subnet[$i].gateway-address`"/>

+                                                            <parameter name="cidr-mask" value="`$tmp.AnAI.l3network.subnets.subnet[$i].cidr-mask`"/>

+                                                            <parameter name="dhcp-start" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-start`"/>

+                                                            <parameter name="dhcp-end" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-end`"/>

+                                                            <parameter name="dhcp-enabled" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-enabled`"/>

+                                                            <parameter name="orchestration-status" value="`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`" />

+                                                            <outcome value='failure'>

+                                                                <set>

+                                                                    <parameter name="error-code" value="500"/>

+                                                                    <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet attributes update in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='not-found'>

+                                                                <set>

+                                                                    <parameter name="error-code" value="500"/>

+                                                                    <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet attributes update in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>

+                                                                </set>

+                                                            </outcome>

+                                                        </update>

+                                                    </outcome>

+                                                </switch>

+                                                <set>

+                                                    <parameter name="tmp.rollback.match" value="1"/>

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </for>

+                                <switch test="`$tmp.rollback.match == 0`">

+                                    <outcome value='true'>

+                                        <switch test="`$tmp.subnetRollback[$j].type`">

+                                            <outcome value='create'>

+                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $tmp.AnAI.l3network.network-id 

+			AND subnet.subnet-id = $tmp.subnetRollback[$j].subnet-id" >

+                                                    <outcome value='failure'>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.rollback.error-message" value="`'failed to rollback to delete subnet from AnAI where subnet-id = ' + $tmp.subnetRollback[$j].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <set>

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="tmp.rollback.error-message" value="`'failed to rollback to delete subnet from AnAI where subnet-id = ' + $tmp.subnetRollback[$j].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>

+                                                        </set>

+                                                    </outcome>

+                                                </delete>

+                                            </outcome>

+                                        </switch>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                        <switch test="`$tmp.l3network.status.updated == 1`">

+                            <outcome value='true'>

+                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >

+                                    <parameter name="orchestration-status" value="`$tmp.AnAI.l3network.orchestration-status`" />

+                                    <outcome value='failure'>

+                                        <set>

+                                            <parameter name="error-code" value="500"/>

+                                            <parameter name="tmp.rollback.error-message" value="`'failed to rollback l3network.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>

+                                        </set>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <set>

+                                            <parameter name="error-code" value="500"/>

+                                            <parameter name="tmp.rollback.error-message" value="`'failed to rollback l3network.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/>

+                                        </set>

+                                    </outcome>

+                                </update>

+                            </outcome>

+                        </switch>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500'/>

+                            <parameter name='error-message' value="`'Error updating l3-network in AnAI with network-id = ' + $tmp.AnAI.l3network.network-id + ' - ' + $tmp.error-message + ' - ' + $tmp.rollback.error-message`"/>

+                        </return>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="ack-final" value="Y"/>

+            </set>

+            <return status="success">

+                <parameter name="networkId" value="`$network-topology-operation-input.network-request-information.network-id`" />

+                <parameter name="error-code" value="200" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-create.xml
new file mode 100644
index 0000000..b3e2b21
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-create.xml
@@ -0,0 +1,565 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<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="network-topology-operation-create" mode="sync">

+        <block atomic="true">

+            <call module="GENERIC-RESOURCE-API" rpc="validate-network-input-parameters" mode="sync" />

+            <for index="idx" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">

+                <block>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'serviceType'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.service-type" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'topology'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.topology" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'technology'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.technology" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_name'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.site1_name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_name'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.site2_name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'sna1_name'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.sna1_name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'sna2_name'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.sna2_name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'pe1_id'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.pe1_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'pe2_id'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.pe2_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_id'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.ac1_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_id'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.ac2_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_ip'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.ac1_ip" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_ip'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.ac2_ip" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_peer_ip'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.ac1_peer_ip" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_peer_ip'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.ac2_peer_ip" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_svlan'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.ac1_svlan" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_svlan'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.ac2_svlan" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_protocol'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.ac1_protocol" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_protocol'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.ac2_protocol" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_route'`">

+                        <outcome value="true">

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="prop.l3vpn.ac1_route" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">

+                                    <parameter name="original_string" value="`$prop.l3vpn.ac1_route`" />

+                                    <parameter name="regex" value=" ## " />

+                                    <parameter name="ctx_memory_result_key" value="route1" />

+                                    <outcome value="success">

+                                        <set>

+                                            <parameter name="prop.l3vpn.sna1-route.ip-prefix" value="`$route1[0]`" />

+                                            <parameter name="prop.l3vpn.sna1-route.next-hop" value="`$route1[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>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_route'`">

+                        <outcome value="true">

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="prop.l3vpn.ac2_route" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="split">

+                                    <parameter name="original_string" value="`$prop.l3vpn.ac2_route`" />

+                                    <parameter name="regex" value=" ## " />

+                                    <parameter name="ctx_memory_result_key" value="route2" />

+                                    <outcome value="success">

+                                        <set>

+                                            <parameter name="prop.l3vpn.sna2-route.ip-prefix" value="`$route2[0]`" />

+                                            <parameter name="prop.l3vpn.sna2-route.next-hop" value="`$route2[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>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac1_protocol_bgp_as'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.ac1_protocol_bgp_as" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                <parameter name="prop.l3vpn.peer1-ip" value="`$prop.l3vpn.ac1_ip`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ac2_protocol_bgp_as'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.ac2_protocol_bgp_as" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                <parameter name="prop.l3vpn.peer2-ip" value="`$prop.l3vpn.ac2_ip`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'af_type'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.af_type" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="pnf" key="pnf.pnf-name = $prop.l3vpn.pe1_id AND         depth = '0'" pfx="tmp.aai.pnf" local-only="false">

+                <outcome value="success">

+                    <set>

+                        <parameter name="tmp.thirdparty-sdnc-id" value="`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`" />

+                    </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 pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_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 pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $tmp.thirdparty-sdnc-id 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.core.slipluginutils.SliPluginUtils" method="generateUUID">

+                <parameter name="ctx-destination" value="prop.l3vpn.vpn-policy1-id" />

+                <outcome value="failure">

+                    <return status="failure">

+                        <parameter name="error-code" value="" />

+                        <parameter name="error-message" value="An error occured while generation vpn policy ID" />

+                    </return>

+                </outcome>

+            </execute>

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">

+                <parameter name="ctx-destination" value="prop.l3vpn.entry1-id" />

+                <outcome value="failure">

+                    <return status="failure">

+                        <parameter name="error-code" value="" />

+                        <parameter name="error-message" value="An error occured while generation vpn policy ID" />

+                    </return>

+                </outcome>

+            </execute>

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">

+                <parameter name="ctx-destination" value="prop.l3vpn.vrf1-id" />

+                <outcome value="failure">

+                    <return status="failure">

+                        <parameter name="error-code" value="" />

+                        <parameter name="error-message" value="An error occured while generation vpn policy ID" />

+                    </return>

+                </outcome>

+            </execute>

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">

+                <parameter name="ctx-destination" value="prop.l3vpn.vrf2-id" />

+                <outcome value="failure">

+                    <return status="failure">

+                        <parameter name="error-code" value="" />

+                        <parameter name="error-message" value="An error occured while generation vpn policy ID" />

+                    </return>

+                </outcome>

+            </execute>

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID">

+                <parameter name="ctx-destination" value="prop.l3vpn.network-id" />

+            </execute>

+            <switch test="`$service-data.networks.network_length`">

+                <outcome value="">

+                    <set>

+                        <parameter name="nidx" value="0" />

+                    </set>

+                </outcome>

+                <outcome value="Other">

+                    <set>

+                        <parameter name="nidx" value="`$service-data.networks.network_length`" />

+                    </set>

+                </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="network-topology-operation-create" />

+                <parameter name="field3" value="L3VPN-Config" />

+                <parameter name="field4" value="`l3vpn.name`" />

+                <parameter name="field5" value="`$prop.l3vpn.name`" />

+                <parameter name="field6" value="`l3vpn.topology`" />

+                <parameter name="field7" value="`$prop.l3vpn.topology`" />

+                <parameter name="field8" value="`l3vpn.site1_name`" />

+                <parameter name="field9" value="`$prop.l3vpn.site1_name`" />

+                <parameter name="field10" value="`l3vpn.vpn-policy1-id`" />

+                <parameter name="field11" value="`$prop.l3vpn.vpn-policy1-id`" />

+                <parameter name="field12" value="`l3vpn.entry1-id`" />

+                <parameter name="field13" value="`$prop.l3vpn.entry1-id`" />

+                <parameter name="field14" value="`l3vpn.sna1_name`" />

+                <parameter name="field15" value="`$prop.l3vpn.sna1_name`" />

+                <parameter name="field16" value="`l3vpn.pe1_id`" />

+                <parameter name="field17" value="`$prop.l3vpn.pe1_id`" />

+                <parameter name="field18" value="`l3vpn.ac1_id`" />

+                <parameter name="field19" value="`$prop.l3vpn.ac1_id`" />

+                <parameter name="field20" value="`l3vpn.ac1_svlan`" />

+                <parameter name="field21" value="`$prop.l3vpn.ac1_svlan`" />

+                <parameter name="field22" value="`l3vpn.ac1_peer_ip`" />

+                <parameter name="field23" value="`$prop.l3vpn.ac1_peer_ip`" />

+                <parameter name="field24" value="`l3vpn.ac1_ip`" />

+                <parameter name="field25" value="`$prop.l3vpn.ac1_ip`" />

+                <parameter name="field26" value="`l3vpn.ac1_protocol`" />

+                <parameter name="field27" value="`$prop.l3vpn.ac1_protocol`" />

+                <parameter name="field28" value="`l3vpn.sna1-route-ip-prefix`" />

+                <parameter name="field29" value="`$prop.l3vpn.sna1-route-ip-prefix`" />

+                <parameter name="field30" value="`l3vpn.sna1-route-next-hop`" />

+                <parameter name="field31" value="`$prop.l3vpn.sna1-route-next-hop`" />

+                <parameter name="field32" value="`l3vpn.peer1_ip`" />

+                <parameter name="field33" value="`$prop.l3vpn.peer1_ip`" />

+                <parameter name="field34" value="`l3vpn.ac1_protocol_bgp_as`" />

+                <parameter name="field35" value="`$prop.l3vpn.ac1_protocol_bgp_as`" />

+                <parameter name="field36" value="`l3vpn.vrf1-id`" />

+                <parameter name="field37" value="`$prop.l3vpn.vrf1-id`" />

+                <parameter name="field38" value="`l3vpn.site2_name`" />

+                <parameter name="field39" value="`$prop.l3vpn.site2_name`" />

+                <parameter name="field40" value="`l3vpn.vpn-policy2-id`" />

+                <parameter name="field41" value="`$prop.l3vpn.vpn-policy2-id`" />

+                <parameter name="field42" value="`l3vpn.entry2-id`" />

+                <parameter name="field43" value="`$prop.l3vpn.entry2-id`" />

+                <parameter name="field44" value="`l3vpn.sna2_name`" />

+                <parameter name="field45" value="`$prop.l3vpn.sna2_name`" />

+                <parameter name="field46" value="`l3vpn.pe2_id`" />

+                <parameter name="field47" value="`$prop.l3vpn.pe2_id`" />

+                <parameter name="field48" value="`l3vpn.ac2_id`" />

+                <parameter name="field49" value="`$prop.l3vpn.ac2_id`" />

+                <parameter name="field50" value="`l3vpn.ac2_svlan`" />

+                <parameter name="field51" value="`$prop.l3vpn.ac2_svlan`" />

+                <parameter name="field52" value="`l3vpn.ac2_peer_ip`" />

+                <parameter name="field53" value="`$prop.l3vpn.ac2_peer_ip`" />

+                <parameter name="field54" value="`l3vpn.ac2_ip`" />

+                <parameter name="field55" value="`$prop.l3vpn.ac2_ip`" />

+                <parameter name="field56" value="`l3vpn.ac2_protocol`" />

+                <parameter name="field57" value="`$prop.l3vpn.ac2_protocol`" />

+                <parameter name="field58" value="`l3vpn.sna2-route-ip-prefix`" />

+                <parameter name="field59" value="`$prop.l3vpn.sna2-route-ip-prefix`" />

+                <parameter name="field60" value="`l3vpn.sna2-route-next-hop`" />

+                <parameter name="field61" value="`$prop.l3vpn.sna2-route-next-hop`" />

+                <parameter name="field62" value="`l3vpn.peer2_ip`" />

+                <parameter name="field63" value="`$prop.l3vpn.peer2_ip`" />

+                <parameter name="field64" value="`l3vpn.ac2_protocol_bgp_as`" />

+                <parameter name="field65" value="`$prop.l3vpn.ac2_protocol_bgp_as`" />

+                <parameter name="field66" value="`l3vpn.vrf2-id`" />

+                <parameter name="field67" value="`$prop.l3vpn.vrf2-id`" />

+                <parameter name="field68" value="`l3vpn.af_type`" />

+                <parameter name="field69" value="`$prop.l3vpn.af_type`" />

+            </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>

+            <switch test="`$prop.l3vpn.service-type`">

+                <outcome value="l3vpn-ipwan">

+                    <block atomic="true">

+                        <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 + '/l3smvpntemplate.json'`" />

+                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services'`" />

+                            <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`" />

+                            <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" />

+                            </outcome>

+                        </execute>

+                        <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                            <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l3smvrftemplate.json'`" />

+                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/huawei-ac-net-l3vpn-svc-vfi:vrf-attributes'`" />

+                            <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="vrf-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" />

+                            </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 vrf rest api" />

+                                </return>

+                            </outcome>

+                        </execute>

+                        <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                            <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/l3smsitetemplate.json'`" />

+                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url +'/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/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" />

+                            </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 site rest api" />

+                                </return>

+                            </outcome>

+                        </execute>

+                    </block>

+                </outcome>

+                <outcome value="l3vpn-sptn">

+                    <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                        <parameter name="templateFileName" value="`$prop.restapi.templateDir +'/sptn-l3vpn-template.xml'`" />

+                        <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/sptn-service-l3vpn:service/snc-l3vpns'`" />

+                        <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                        <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                        <parameter name="format" value="xml" />

+                        <parameter name="httpMethod" value="post" />

+                        <parameter name="responsePrefix" value="restapi-result" />

+                    </execute>

+                </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 retrieving vpn binding" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="service-data.networks.network[$nidx].network-id" value="`$prop.l3vpn.network-id`" />

+                <parameter name="service-data.networks.network[$nidx].network-data.sdnc-request-header." value="`$network-topology-operation-input.sdnc-request-header.`" />

+                <parameter name="service-data.networks.network[$nidx].network-data.request-information." value="`$network-topology-operation-input.request-information.`" />

+                <parameter name="service-data.networks.network[$nidx].network-data.service-information." value="`$network-topology-operation-input.service-information.`" />

+                <parameter name="service-data.networks.network[$nidx].network-data.network-information." value="`$network-topology-operation-input.network-information.`" />

+                <parameter name="service-data.networks.network[$nidx].network-data.network-request-input." value="`$network-topology-operation-input.network-request-input.`" />

+                <parameter name="service-data.networks.network_length" value="`$nidx+1`" />

+            </set>

+            <set>

+                <parameter name="pidx" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`" />

+            </set>

+            <set>

+                <parameter name="service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx].name" value="vrf1_id" />

+                <parameter name="service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx].value" value="`$prop.l3vpn.vrf1-id`" />

+                <parameter name="service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx+1].name" value="vrf2_id" />

+                <parameter name="service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx+1].value" value="`$prop.l3vpn.vrf2-id`d" />

+                <parameter name="service-data.networks.network[$nidx].network_data.network-request-input.network-input-parameters.param_length" value="`$pidx+2`" />

+            </set>

+            <set>

+                <parameter name="networkId" value="`$prop.l3vpn.network-id`" />

+                <parameter name="network-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.l3vpn.network-id  + '/network-data/'` " />

+            </set>

+            <set>

+                <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status" value="Created" />

+                <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action" value="`$network-topology-operation-input.sdnc-request-header.svc-action`" />

+                <parameter name="service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action" value="`$network-topology-operation-input.request-information.request-action`" />

+            </set>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="configuration" key="configuration.configuration-id = $prop.l3vpn.network-id">

+                <parameter name="configuration-id" value="`$prop.l3vpn.network-id`" />

+                <parameter name="configuration-type" value="underlay" />

+                <parameter name="configuration-sub-type" value="l3vpn" />

+                <parameter name="orchestration-status" value="Created" />

+                <parameter name="operational-status" value="Created" />

+                <parameter name="model-customization-id" value="`$prop.l3vpn.network-id`" />

+                <parameter name="configuration-selflink" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.l3vpn.network-id  + '/network-data/'` " />

+            </save>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:relationship-list" key="service-instance.service-instance-id = $service-data.service-information.service-instance-id           AND customer.global-customer-id = $service-data.networks.network[$nidx].network-data.service-information.global-customer-id           AND service-subscription.service-type = $service-data.networks.network[$nidx].network-data.service-information.subscription-service-type" force="true" pfx="tmp.AnAI-data">

+                <parameter name="relationship-list.relationship[0].related-to" value="configuration" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/configurations/configuration/' + $prop.l3vpn.network-id`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="configuration.configuration-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.l3vpn.network-id`" />

+            </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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-deactivate.xml
new file mode 100644
index 0000000..54c8a75
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-deactivate.xml
@@ -0,0 +1,172 @@
+<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='network-topology-operation-deactivate' mode='sync'>

+        <block atomic="true">

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $network-topology-operation-input.network-information.network-id

+		AND depth='all'" 

+		local-only="false" 

+		pfx="aai.l3-network">

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="network-id not found in AAI" />

+                    </return>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + 'from AnAI'" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <switch test='`$aai.l3-network.subnets.subnet_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="no networks found" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <switch test='`$network-data.network-topology.network-topology-identifier-structure.network-instance-group-id`'>

+                        <outcome value=''>

+                            <switch test='`$service-data.networks.network[$nidx].network-data.network-information.from-preload`'>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <for index='sidx' start='0' end='`$aai.l3-network.subnets.subnet_length`' >

+                                            <block atomic="true">

+                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $aai.l3-network.network-id 

+			AND subnet.subnet-id = $aai.l3-network.subnets.subnet[$sidx].subnet-id" >

+                                                    <parameter name="orchestration-status" value="PendingDelete" />

+                                                    <outcome value='failure'>

+                                                        <return status="failure">

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet." />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value="not-found">

+                                                        <return status="failure">

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet.  Subnet not found." />

+                                                        </return>

+                                                    </outcome>

+                                                </update>

+                                            </block>

+                                        </for>

+                                    </block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <block atomic="true">

+                                        <for index='sidx' start='0' end='`$aai.l3-network.subnets.subnet_length`' >

+                                            <block atomic="true">

+                                                <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_SUBNETS where entity_id = $aai.l3-network.subnets.subnet[$sidx].subnet-id ; "

+        pfx='tmp.eipam-subnet-row'>

+                                                    <outcome value='failure'>

+                                                        <return status="failure">

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNETS failed to find subnet matching aai subnet." />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value="not-found">

+                                                        <return status="failure">

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="Subnet not found in EIPAM_IP_SUBNETS - deactivate failed." />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='success'>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name="eipam-ip-block.entity-id" value="`$aai.l3-network.subnets.subnet[$sidx].subnet-id`"/>

+                                                                <parameter name="eipam-ip-block.plans[0].plan-name" value="$tmp.eipam-subnet-row.plan-name"/>

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </get-resource>

+                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="subnet" 

+		key="l3-network.network-id = $aai.l3-network.network-id 

+			AND subnet.subnet-id = $eipam-ip-block.entity-id" >

+                                                    <parameter name="orchestration-status" value="PendingDelete" />

+                                                    <outcome value='failure'>

+                                                        <return status="failure">

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet." />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value="not-found">

+                                                        <return status="failure">

+                                                            <parameter name="error-code" value="500"/>

+                                                            <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet.  Subnet not found." />

+                                                        </return>

+                                                    </outcome>

+                                                </update>

+                                            </block>

+                                        </for>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </outcome>

+                        <outcome value='Other'>

+                            <block atomic="true">

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="network collection activate failed" />

+                                </return>

+                            </block>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </switch>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $aai.l3-network.network-id" >

+                <parameter name="orchestration-status" value="PendingDelete" />

+                <outcome value='failure'>

+                    <return status="failure">

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="Failure updating orchestration-status in AAI for l3-network" />

+                    </return>

+                </outcome>

+                <outcome value="not-found">

+                    <return status="failure">

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="Failure updating orchestration-status in AAI for l3-network.  Network not found." />

+                    </return>

+                </outcome>

+            </update>

+            <set>

+                <parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />

+            </set>

+            <set>

+                <parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />

+            </set>

+            <set>

+                <parameter name='network-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $network-topology-operation-input.service-information.service-instance-id

+ + '/service-data/networks/network/'

+ + $networkId

+ + '/network-data/network-topology/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='PendingDelete' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-delete.xml
new file mode 100644
index 0000000..0624045
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-delete.xml
@@ -0,0 +1,300 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<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="network-topology-operation-delete" mode="sync">

+        <block atomic="true">

+            <call module="GENERIC-RESOURCE-API" rpc="validate-network-input-parameters" mode="sync" />

+            <switch test="`$service-data.networks.network_length`">

+                <outcome value="0">

+                    <return status="failure">

+                        <parameter name="ack-final" value="Y" />

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-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="network-topology-operation-input.network-request-input.network-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value="Other">

+                    <block atomic="true">

+                        <for index="nidx" start="0" end="`$service-data.networks.network_length`">

+                            <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">

+                                <outcome value="true">

+                                    <set>

+                                        <parameter name="tmp.nidx" value="`$nidx`" />

+                                        <parameter name="ctx.network-data." value="`$service-data.networks.network[$nidx].`" />

+                                    </set>

+                                </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="network-topology-operation-input.network-request-input.network-id not found in service-data" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <for index="idx" start="0" end="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length`">

+                <block>

+                    <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'name'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.name" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'serviceType'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.service-type" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'pe1_id'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.pe1_id" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'site1_name'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.site1_name" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'vrf1_id'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.vrf1-id" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].name == 'vrf2_id'`">

+                        <outcome value="true">

+                            <set>

+                                <parameter name="prop.l3vpn.vrf2-id" value="`$service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$idx].value`" />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="pnf" key="pnf.pnf-name = $prop.l3vpn.pe1_id AND         depth = '0'" pfx="tmp.aai.pnf" local-only="false">

+                <outcome value="success">

+                    <set>

+                        <parameter name="tmp.thirdparty-sdnc-id" value="`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`" />

+                    </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>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $tmp.thirdparty-sdnc-id 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].serviceUrl`" />

+                        <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="Network model is_bound_to_vpn=true but no vpn_binding is present" />

+                    </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 retrieving vpn binding" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <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.l3vpn.service-type`">

+                <outcome value="l3vpn-ipwan">

+                    <block atomic="true">

+                        <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="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/sites/site=' + $prop.l3vpn.site1_name`" />

+                            <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="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">

+                                <return status="failure">

+                                    <parameter name="ack-final" value="Y" />

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Error executing Delete Site rest api" />

+                                </return>

+                            </outcome>

+                            <outcome value="success">

+                                <block />

+                            </outcome>

+                        </execute>

+                        <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/huawei-ac-net-l3vpn-svc-vfi:vrf-attributes/vrf-attribute=' + $prop.l3vpn.vrf1-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="delete" />

+                            <parameter name="responsePrefix" value="vrf1-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 />

+                            </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 Delete VRF1 rest api" />

+                                </return>

+                            </outcome>

+                        </execute>

+                        <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/huawei-ac-net-l3vpn-svc-vfi:vrf-attributes/vrf-attribute=' + $prop.l3vpn.vrf2-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="delete" />

+                            <parameter name="responsePrefix" value="vrf2-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 />

+                            </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 Delete VRF2 rest api" />

+                                </return>

+                            </outcome>

+                        </execute>

+                        <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest">

+                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services/vpnservice=' + $prop.l3vpn.name`" />

+                            <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`" />

+                            <outcome value="success">

+                                <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 Delete VPN rest api" />

+                                </return>

+                            </outcome>

+                        </execute>

+                    </block>

+                </outcome>

+            </switch>

+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="configuration" key="configuration.configuration-id = $network-topology-operation-input.network-information.network-id" />

+            <switch test="`$service-data.networks.network_length`">

+                <outcome value="1">

+                    <block atomic="true">

+                        <set>

+                            <parameter name="service-data.networks." value="" />

+                        </set>

+                        <set>

+                            <parameter name="service-data.networks.network_length" value="0" />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value="Other">

+                    <block atomic="true">

+                        <set>

+                            <parameter name="tmp.new_length" value="`$service-data.networks.network_length - 1`" />

+                        </set>

+                        <for silentFailure="true" index="snidx" start="`$tmp.nidx + 1`" end="`$service-data.networks.network_length`">

+                            <block atomic="true" />

+                        </for>

+                        <set>

+                            <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`" />

+                        </set>

+                        <set>

+                            <parameter name="service-data.networks.network[$tmp.new_length]." value="" />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="networkId" value="`$network-topology-operation-input.network-information.network-id`" />

+                <parameter name="service-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-unassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-unassign.xml
new file mode 100755
index 0000000..0ae9fa7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation-unassign.xml
@@ -0,0 +1,443 @@
+<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='network-topology-operation-unassign' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.networks.network[$nidx].network-data.network-information.from-preload`'>

+                <outcome value='true'>

+                    <block atomic="true">

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+		key="l3-network.network-id = $network-topology-operation-input.network-information.network-id" 

+		local-only="false" 

+		pfx="aai.l3-network">

+                            <outcome value='success'>

+                                <block atomic="true">

+                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $network-topology-operation-input.network-information.network-id">

+                                        <outcome value='failure'>

+                                            <return status="failure">

+                                                <parameter name="error-code" value="500"/>

+                                                <parameter name="error-message" value="An error occured while deleting network from AAI" />

+                                            </return>

+                                        </outcome>

+                                    </delete>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'></outcome>

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + 'from AnAI'" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <switch test='`$network-data.network-topology.network-topology-identifier-structure.network-instance-group-id`'>

+                        <outcome value=''>

+                            <block atomic="true">

+                                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from NETWORK_MODEL WHERE customization_uuid = $service-data.networks.network[$nidx].network-data.network-information.onap-model-information.model-customization-uuid

+  and service_uuid = $service-data.networks.network[$nidx].network-data.service-information.onap-model-information.model-uuid'

+  pfx='network-model'></get-resource>

+                                <set>

+                                    <parameter name="tmp.level1-key-value" value=""/>

+                                    <parameter name="tmp.level1inuse" value="false" />

+                                    <parameter name="pidx" value="0" />

+                                    <parameter name="pidx-len" value="0" />

+                                </set>

+                                <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.network_id = $network-topology-operation-input.network-information.network-id and s.entity_id = k.entity_id ; "

+        pfx='tmp.eipam-subnet-row[]'>

+                                    <outcome value='failure'>

+                                        <return status="failure">

+                                            <parameter name="tmp.eipam-error" value="true" />

+                                            <parameter name="error-code" value="500"/>

+                                            <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed." />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='success'>

+                                        <block atomic='true'>

+                                            <for silentFailure='true' index='esidx' start='0' end='`$tmp.eipam-subnet-row_length`' >

+                                                <block atomic="true">

+                                                    <switch test='`$tmp.eipam-subnet-row[$esidx].level`'>

+                                                        <outcome value='1'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name="tmp.level1-key-value[$pidx]" value="`$tmp.eipam-subnet-row[$esidx].key-value`"/>

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name="tmp.plan-name[$pidx]" value="`$tmp.eipam-subnet-row[$esidx].plan-name`"/>

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name="pidx" value="`$pidx + 1`"/>

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name="pidx-len" value="`$pidx`"/>

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block atomic="true"></block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </for>

+                                        </block>

+                                    </outcome>

+                                    <outcome value="not-found">

+                                        <block atomic='true'></block>

+                                    </outcome>

+                                </get-resource>

+                                <set>

+                                    <parameter name="eipam-ip-block.network-id" value="`$network-topology-operation-input.network-information.network-id`" />

+                                    <parameter name="eipam-ip-block.level" value='2' />

+                                    <parameter name="eipam-ip-block.entity-id" value='' />

+                                </set>

+                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deallocateAllSubnets">

+                                    <outcome value='failure'>

+                                        <return status="failure">

+                                            <parameter name="tmp.eipam-error" value="true" />

+                                            <parameter name="error-code" value="500"/>

+                                            <parameter name="error-message" value="An error occured while deallocating subnets in EIPAM." />

+                                        </return>

+                                    </outcome>

+                                </execute>

+                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                    <outcome value='failure'>

+                                        <return status="failure">

+                                            <parameter name="tmp.eipam-error" value="true" />

+                                            <parameter name="error-code" value="500"/>

+                                            <parameter name="error-message" value="An error occured while deleting level 2 plans in EIPAM." />

+                                        </return>

+                                    </outcome>

+                                </execute>

+                                <for silentFailure='true' index='npidx' start='0' end='`$pidx-len`' >

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name="tmp.level1-key-value" value="`$tmp.level1-key-value[$npidx]`" />

+                                            <parameter name="tmp.plan-name" value="`$tmp.plan-name[$npidx]`" />

+                                        </set>

+                                        <switch test='`$tmp.level1-key-value`'>

+                                            <outcome value=''>

+                                                <block atomic='true'></block>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <block atomic='true'>

+                                                    <switch test='`$network-model`'>

+                                                        <outcome value=''></outcome>

+                                                        <outcome value='Other'>

+                                                            <block atomic='true'>

+                                                                <switch test="`$network-model.use-ipv4`">

+                                                                    <outcome value='Y'>

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name='tmp.plan-name' value='`$network-model.eipam-v4-address-plan`' />

+                                                                            </set>

+                                                                            <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_POOLS p, EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k 

+        WHERE p.level = 2 

+        and p.plan_name = $tmp.plan-name

+        and k.level = 1 

+        and p.pool_id = s.pool_id and s.entity_id = k.entity_id 

+        and k.key_value = $tmp.level1-key-value  ; "

+        pfx='tmp.level2pool[]'>

+                                                                                <outcome value='failure'>

+                                                                                    <return status="failure">

+                                                                                        <parameter name="tmp.eipam-error" value="true" />

+                                                                                        <parameter name="error-code" value="500"/>

+                                                                                        <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed." />

+                                                                                    </return>

+                                                                                </outcome>

+                                                                                <outcome value='success'>

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name="tmp.level1inuse" value="true" />

+                                                                                        </set>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                                <outcome value="not-found">

+                                                                                    <block atomic='true'>

+                                                                                        <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_POOLS p, EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k 

+        WHERE p.level = 1 

+        and p.plan_name = $tmp.plan-name

+        and k.level = 1 

+        and p.pool_id = s.pool_id and s.entity_id = k.entity_id 

+        and k.key_value = $tmp.level1-key-value  ; "

+        pfx='tmp.level1pool[]'>

+                                                                                            <outcome value='failure'>

+                                                                                                <return status="failure">

+                                                                                                    <parameter name="tmp.eipam-error" value="true" />

+                                                                                                    <parameter name="error-code" value="500"/>

+                                                                                                    <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed." />

+                                                                                                </return>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <block atomic='true'>

+                                                                                                    <for silentFailure='true' index='lidx' start='0' end='`$tmp.level1pool_length`' >

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='eipam-ip-block.entity-id' value='`$tmp.level1pool[$lidx].entity-id`' />

+                                                                                                                <parameter name='eipam-ip-block.ip-address' value='`$tmp.level1pool[$lidx].ip-address`' />

+                                                                                                                <parameter name='eipam-ip-block.mask' value='`$tmp.level1pool[$lidx].prefix-length`' />

+                                                                                                                <parameter name="eipam-ip-block.network-id" value="`$tmp.level1pool[$lidx].network-id`" />

+                                                                                                                <parameter name="eipam-ip-block.pool-id" value="`$tmp.level1pool[$lidx].pool-id`" />

+                                                                                                                <parameter name="eipam-ip-block.level" value='1' />

+                                                                                                            </set>

+                                                                                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                                                            <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deallocateSubnet">

+                                                                                                                <outcome value='failure'>

+                                                                                                                    <return status="failure">

+                                                                                                                        <parameter name="tmp.eipam-error" value="true" />

+                                                                                                                        <parameter name="error-code" value="500"/>

+                                                                                                                        <parameter name="error-message" value="An error occured while deallocating subnet in EIPAM." />

+                                                                                                                    </return>

+                                                                                                                </outcome>

+                                                                                                            </execute>

+                                                                                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                                                            <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByPoolId">

+                                                                                                                <outcome value='failure'>

+                                                                                                                    <return status="failure">

+                                                                                                                        <parameter name="tmp.eipam-error" value="true" />

+                                                                                                                        <parameter name="error-code" value="500"/>

+                                                                                                                        <parameter name="error-message" value="An error occured while deleting pool in EIPAM." />

+                                                                                                                    </return>

+                                                                                                                </outcome>

+                                                                                                            </execute>

+                                                                                                        </block>

+                                                                                                    </for>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                            <outcome value="not-found">

+                                                                                                <block atomic='true'></block>

+                                                                                            </outcome>

+                                                                                        </get-resource>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </get-resource>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                                <switch test="`$network-model.use-ipv6`">

+                                                                    <outcome value='Y'>

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name='tmp.plan-name' value='`$network-model.eipam-v6-address-plan`' />

+                                                                            </set>

+                                                                            <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_POOLS p, EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k 

+        WHERE p.level = 2 

+        and p.plan_name = $tmp.plan-name

+        and k.level = 1 

+        and p.pool_id = s.pool_id and s.entity_id = k.entity_id 

+        and k.key_value = $tmp.level1-key-value  ; "

+        pfx='tmp.level2pool[]'>

+                                                                                <outcome value='failure'>

+                                                                                    <return status="failure">

+                                                                                        <parameter name="tmp.eipam-error" value="true" />

+                                                                                        <parameter name="error-code" value="500"/>

+                                                                                        <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed." />

+                                                                                    </return>

+                                                                                </outcome>

+                                                                                <outcome value='success'>

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name="tmp.level1inuse" value="true" />

+                                                                                        </set>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                                <outcome value="not-found">

+                                                                                    <block atomic='true'>

+                                                                                        <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_POOLS p, EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k 

+        WHERE p.level = 1 

+        and p.plan_name = $tmp.plan-name

+        and k.level = 1 

+        and p.pool_id = s.pool_id and s.entity_id = k.entity_id 

+        and k.key_value = $tmp.level1-key-value  ; "

+        pfx='tmp.level1pool[]'>

+                                                                                            <outcome value='failure'>

+                                                                                                <return status="failure">

+                                                                                                    <parameter name="tmp.eipam-error" value="true" />

+                                                                                                    <parameter name="error-code" value="500"/>

+                                                                                                    <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed." />

+                                                                                                </return>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <block atomic='true'>

+                                                                                                    <for silentFailure='true' index='lidx' start='0' end='`$tmp.level1pool_length`' >

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='eipam-ip-block.entity-id' value='`$tmp.level1pool[$lidx].entity-id`' />

+                                                                                                                <parameter name='eipam-ip-block.ip-address' value='`$tmp.level1pool[$lidx].ip-address`' />

+                                                                                                                <parameter name='eipam-ip-block.mask' value='`$tmp.level1pool[$lidx].prefix-length`' />

+                                                                                                                <parameter name="eipam-ip-block.network-id" value="`$tmp.level1pool[$lidx].network-id`" />

+                                                                                                                <parameter name="eipam-ip-block.pool-id" value="`$tmp.level1pool[$lidx].pool-id`" />

+                                                                                                                <parameter name="eipam-ip-block.level" value='1' />

+                                                                                                            </set>

+                                                                                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                                                            <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deallocateSubnet">

+                                                                                                                <outcome value='failure'>

+                                                                                                                    <return status="failure">

+                                                                                                                        <parameter name="tmp.eipam-error" value="true" />

+                                                                                                                        <parameter name="error-code" value="500"/>

+                                                                                                                        <parameter name="error-message" value="An error occured while deallocating subnet in EIPAM." />

+                                                                                                                    </return>

+                                                                                                                </outcome>

+                                                                                                            </execute>

+                                                                                                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                                                            <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByPoolId">

+                                                                                                                <outcome value='failure'>

+                                                                                                                    <return status="failure">

+                                                                                                                        <parameter name="tmp.eipam-error" value="true" />

+                                                                                                                        <parameter name="error-code" value="500"/>

+                                                                                                                        <parameter name="error-message" value="An error occured while deleting pool in EIPAM." />

+                                                                                                                    </return>

+                                                                                                                </outcome>

+                                                                                                            </execute>

+                                                                                                        </block>

+                                                                                                    </for>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                            <outcome value="not-found">

+                                                                                                <block atomic='true'></block>

+                                                                                            </outcome>

+                                                                                        </get-resource>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </get-resource>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </for>

+                                <switch test='`$service-data.networks.network_length`'>

+                                    <outcome value='1'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="service-data.networks." value=""/>

+                                            </set>

+                                            <set>

+                                                <parameter name="service-data.networks.network_length" value="0"/>

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="tmp.new_length" value="`$service-data.networks.network_length - 1`"/>

+                                            </set>

+                                            <for silentFailure='true' index='snidx' start='`$tmp.nidx + 1`' end='`$service-data.networks.network_length`' >

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name="tmp.newidx" value="`$snidx - 1`"/>

+                                                    </set>

+                                                    <set>

+                                                        <parameter name="service-data.networks.network[$tmp.newidx]." value="$service-data.networks.network[$snidx]." />

+                                                    </set>

+                                                </block>

+                                            </for>

+                                            <set>

+                                                <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`"/>

+                                            </set>

+                                            <set>

+                                                <parameter name="service-data.networks.network[$tmp.new_length]." value=""/>

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-network" 

+	key="l3-network.network-id = $network-topology-operation-input.network-information.network-id">

+                                    <outcome value='failure'>

+                                        <return status="failure">

+                                            <parameter name="error-code" value="500"/>

+                                            <parameter name="error-message" value="An error occured while deleting network from AAI" />

+                                        </return>

+                                    </outcome>

+                                </delete>

+                                <set>

+                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$network-topology-operation-input.network-information.network-id`' />

+                                    <parameter name='naming-policy-generate-name-input.naming-type' value='NETWORK' />

+                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                </set>

+                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                            </block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <block atomic="true">

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="network collection activate failed" />

+                                </return>

+                            </block>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.networks.network_length`'>

+                <outcome value='1'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="service-data.networks." value=""/>

+                        </set>

+                        <set>

+                            <parameter name="service-data.networks.network_length" value="0"/>

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="tmp.new_length" value="`$service-data.networks.network_length - 1`"/>

+                        </set>

+                        <for silentFailure='true' index='snidx' start='`$tmp.nidx + 1`' end='`$service-data.networks.network_length`' >

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="tmp.newidx" value="`$snidx - 1`"/>

+                                </set>

+                                <set>

+                                    <parameter name="service-data.networks.network[$tmp.newidx]." value="$service-data.networks.network[$snidx]." />

+                                </set>

+                            </block>

+                        </for>

+                        <set>

+                            <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`"/>

+                        </set>

+                        <set>

+                            <parameter name="service-data.networks.network[$tmp.new_length]." value=""/>

+                        </set>

+                    </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>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation.xml
new file mode 100644
index 0000000..51d6b6a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_network-topology-operation.xml
@@ -0,0 +1,571 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<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='network-topology-operation' mode='sync'>
+        <block atomic="true">
+            <call module='GENERIC-RESOURCE-API' rpc='validate-network-input' mode='sync' ></call>
+            <switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>
+                <outcome value='assign'>
+                    <block atomic="true">
+                        <switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>
+                            <outcome value='Created'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="`'Network is not in appropriate state for assign. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`" />
+                                </return>
+                            </outcome>
+                            <outcome value='PendingDelete'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="`'Network is not in appropriate state for assign. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`" />
+                                </return>
+                            </outcome>
+                            <outcome value='PendingCreate'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="`'Network is not in appropriate state for assign. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`" />
+                                </return>
+                            </outcome>
+                            <outcome value='Other'>
+                                <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-assign' mode='sync' ></call>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='activate'>
+                    <switch test='`$network-topology-operation-input.request-information.request-action`'>
+                        <outcome value='ActivateSOTNConnectivityInstance'>
+                            <call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-activate' mode='sync' ></call>
+                        </outcome>
+                        <outcome value='ActivateDCINetworkInstance'>
+                            <call module='GENERIC-RESOURCE-API' rpc='dci-connects-network-topology-operation-activate' mode='sync' ></call>
+                        </outcome>
+                        <outcome value='ActivateSDWANConnectivityInstance'>
+                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-network-topology-operation-activate' mode='sync' ></call>
+                        </outcome>
+                        <outcome value='other'>
+                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >
+                                <parameter name="source" value="`$network-topology-operation-input.service-information.onap-model-information.model-name`"/>
+                                <parameter name="target" value="wan-connection"/>
+                                <outcome value='true'>
+                                    <call module='GENERIC-RESOURCE-API' rpc='wan-connection-topology-operation-activate' mode='sync' ></call>
+                                </outcome>
+                                <outcome value='false'>
+                                    <block atomic="true">
+                                        <switch test='`$service-data.networks.network_length`'>
+                                            <outcome value=''>
+                                                <return status='failure'>
+                                                    <parameter name='ack-final' value='Y'/>
+                                                    <parameter name="error-code" value="500" />
+                                                    <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+                                                </return>
+                                            </outcome>
+                                            <outcome value='Other'>
+                                                <block atomic="true">
+                                                    <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+                                                        <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">
+                                                            <outcome value='true'>
+                                                                <set>
+                                                                    <parameter name='tmp.nidx' value='`$nidx`' />
+                                                                    <parameter name='network-data.' value='`$service-data.networks.network[$nidx].`' />
+                                                                </set>
+                                                            </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="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+                                                            </return>
+                                                        </outcome>
+                                                        <outcome value='Other'>
+                                                            <set>
+                                                                <parameter name='nidx' value='`$tmp.nidx`' />
+                                                            </set>
+                                                        </outcome>
+                                                    </switch>
+                                                </block>
+                                            </outcome>
+                                        </switch>
+                                        <switch test='`$network-topology-operation-input.network-information.network-instance-group-id`'>
+                                            <outcome value=''>
+                                                <return status='success'></return>
+                                            </outcome>
+                                            <outcome value='Other'>
+                                                <block>
+                                                    <switch test='`$service-data.network-instance-groups.network-instance-group_length`'>
+                                                        <outcome value=''>
+                                                            <return status='failure'>
+                                                                <parameter name='ack-final' value='Y'/>
+                                                                <parameter name="error-code" value="500" />
+                                                                <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-instance-group-id not found in service-data" />
+                                                            </return>
+                                                        </outcome>
+                                                        <outcome value='Other'>
+                                                            <block atomic="true">
+                                                                <for index='ngidx' start='0' end='`$service-data.network-instance-groups.network-instance-_length`' >
+                                                                    <switch test="`$service-data.network-instance-groups.network-instance-group[$nidx].network-instance-group-id == $network-topology-operation-input.network-information.network-instance-group-id`">
+                                                                        <outcome value='true'>
+                                                                            <block atomic="true">
+                                                                                <set>
+                                                                                    <parameter name='tmp.ngidx' value='`$ngidx`' />
+                                                                                    <parameter name='ctx.network-instance-group-data.' value='`$service-data.network-instance-groups.network-instance-group[$ngidx].`' />
+                                                                                </set>
+                                                                            </block>
+                                                                        </outcome>
+                                                                    </switch>
+                                                                </for>
+                                                            </block>
+                                                        </outcome>
+                                                    </switch>
+                                                </block>
+                                            </outcome>
+                                        </switch>
+                                        <switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>
+                                            <outcome value='PendingCreate'>
+                                                <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-activate' mode='sync' ></call>
+                                            </outcome>
+                                            <outcome value='Other'>
+                                                <return status='failure'>
+                                                    <parameter name='ack-final' value='Y'/>
+                                                    <parameter name="error-code" value="500" />
+                                                    <parameter name="error-message" value="`'Network is not in appropriate state for activate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`" />
+                                                </return>
+                                            </outcome>
+                                        </switch>
+                                    </block>
+                                </outcome>
+                            </execute>
+                        </outcome>
+                    </switch>
+                </outcome>
+                <outcome value='changeassign'>
+                    <block atomic="true">
+                        <switch test='`$service-data.networks.network_length`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+                                </return>
+                            </outcome>
+                            <outcome value='Other'>
+                                <block atomic="true">
+                                    <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+                                        <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">
+                                            <outcome value='true'>
+                                                <set>
+                                                    <parameter name='tmp.nidx' value='`$nidx`' />
+                                                    <parameter name='network-data.' value='`$service-data.networks.network[$nidx].`' />
+                                                </set>
+                                            </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="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+                                            </return>
+                                        </outcome>
+                                        <outcome value='Other'>
+                                            <set>
+                                                <parameter name='nidx' value='`$tmp.nidx`' />
+                                            </set>
+                                        </outcome>
+                                    </switch>
+                                </block>
+                            </outcome>
+                        </switch>
+                        <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-changeassign' mode='sync' ></call>
+                    </block>
+                </outcome>
+                <outcome value='deactivate'>
+                    <switch test='`$network-topology-operation-input.request-information.request-action`'>
+                        <outcome value='DeactivateSOTNConnectivityInstance'>
+                            <call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-deactivate' mode='sync' ></call>
+                        </outcome>
+                        <outcome value='DeActivateDCINetworkInstance'>
+                            <call module='GENERIC-RESOURCE-API' rpc='dci-connects-network-topology-operation-deactivate' mode='sync' ></call>
+                        </outcome>
+                        <outcome value='DeactivateSDWANConnectivityInstance'>
+                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-network-topology-operation-deactivate' mode='sync' ></call>
+                        </outcome>
+                        <outcome value='Other'>
+                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >
+                                <parameter name="source" value="`$network-topology-operation-input.service-information.onap-model-information.model-name`"/>
+                                <parameter name="target" value="wan-connection"/>
+                                <outcome value='true'>
+                                    <call module='GENERIC-RESOURCE-API' rpc='wan-connection-topology-operation-deactivate' mode='sync' ></call>
+                                </outcome>
+                                <outcome value='false'>
+                                    <block atomic="true">
+                                        <switch test='`$service-data.networks.network_length`'>
+                                            <outcome value=''>
+                                                <return status='failure'>
+                                                    <parameter name='ack-final' value='Y'/>
+                                                    <parameter name="error-code" value="500" />
+                                                    <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+                                                </return>
+                                            </outcome>
+                                            <outcome value='Other'>
+                                                <block atomic="true">
+                                                    <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+                                                        <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">
+                                                            <outcome value='true'>
+                                                                <set>
+                                                                    <parameter name='tmp.nidx' value='`$nidx`' />
+                                                                    <parameter name='network-data.' value='`$service-data.networks.network[$nidx].`' />
+                                                                </set>
+                                                            </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="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+                                                            </return>
+                                                        </outcome>
+                                                        <outcome value='Other'>
+                                                            <set>
+                                                                <parameter name='nidx' value='`$tmp.nidx`' />
+                                                            </set>
+                                                        </outcome>
+                                                    </switch>
+                                                </block>
+                                            </outcome>
+                                        </switch>
+                                        <switch test='`$network-topology-operation-input.network-information.network-instance-group-id`'>
+                                            <outcome value=''>
+                                                <return status='success'></return>
+                                            </outcome>
+                                            <outcome value='Other'>
+                                                <block>
+                                                    <switch test='`$service-data.network-instance-groups.network-instance-group_length`'>
+                                                        <outcome value=''>
+                                                            <return status='failure'>
+                                                                <parameter name='ack-final' value='Y'/>
+                                                                <parameter name="error-code" value="500" />
+                                                                <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-instance-group-id not found in service-data" />
+                                                            </return>
+                                                        </outcome>
+                                                        <outcome value='Other'>
+                                                            <block atomic="true">
+                                                                <for index='ngidx' start='0' end='`$service-data.network-instance-groups.network-instance-_length`' >
+                                                                    <switch test="`$service-data.network-instance-groups.network-instance-group[$nidx].network-instance-group-id == $network-topology-operation-input.network-information.network-instance-group-id`">
+                                                                        <outcome value='true'>
+                                                                            <block atomic="true">
+                                                                                <set>
+                                                                                    <parameter name='tmp.ngidx' value='`$ngidx`' />
+                                                                                    <parameter name='ctx.network-instance-group-data.' value='`$service-data.network-instance-groups.network-instance-group[$ngidx].`' />
+                                                                                </set>
+                                                                            </block>
+                                                                        </outcome>
+                                                                    </switch>
+                                                                </for>
+                                                            </block>
+                                                        </outcome>
+                                                    </switch>
+                                                </block>
+                                            </outcome>
+                                        </switch>
+                                        <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-deactivate' mode='sync' ></call>
+                                    </block>
+                                </outcome>
+                            </execute>
+                        </outcome>
+                    </switch>
+                </outcome>
+                <outcome value='unassign'>
+                    <block atomic="true">
+                        <switch test='`$service-data.networks.network_length`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+                                </return>
+                            </outcome>
+                            <outcome value='Other'>
+                                <block atomic="true">
+                                    <for index='nidx' start='0' end='`$service-data.networks.network_length`' >
+                                        <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">
+                                            <outcome value='true'>
+                                                <set>
+                                                    <parameter name='tmp.nidx' value='`$nidx`' />
+                                                    <parameter name='network-data.' value='`$service-data.networks.network[$nidx].`' />
+                                                </set>
+                                            </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="network-topology-operation-input.network-request-input.network-id not found in service-data" />
+                                            </return>
+                                        </outcome>
+                                        <outcome value='Other'>
+                                            <set>
+                                                <parameter name='nidx' value='`$tmp.nidx`' />
+                                            </set>
+                                        </outcome>
+                                    </switch>
+                                </block>
+                            </outcome>
+                        </switch>
+                        <switch test='`$network-topology-operation-input.network-information.network-instance-group-id`'>
+                            <outcome value=''>
+                                <return status='success'></return>
+                            </outcome>
+                            <outcome value='Other'>
+                                <block>
+                                    <switch test='`$service-data.network-instance-groups.network-instance-group_length`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-instance-group-id not found in service-data" />
+                                            </return>
+                                        </outcome>
+                                        <outcome value='Other'>
+                                            <block atomic="true">
+                                                <for index='ngidx' start='0' end='`$service-data.network-instance-groups.network-instance-_length`' >
+                                                    <switch test="`$service-data.network-instance-groups.network-instance-group[$nidx].network-instance-group-id == $network-topology-operation-input.network-information.network-instance-group-id`">
+                                                        <outcome value='true'>
+                                                            <block atomic="true">
+                                                                <set>
+                                                                    <parameter name='tmp.ngidx' value='`$ngidx`' />
+                                                                    <parameter name='ctx.network-instance-group-data.' value='`$service-data.network-instance-groups.network-instance-group[$ngidx].`' />
+                                                                </set>
+                                                            </block>
+                                                        </outcome>
+                                                    </switch>
+                                                </for>
+                                            </block>
+                                        </outcome>
+                                    </switch>
+                                </block>
+                            </outcome>
+                        </switch>
+                        <switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`'>
+                            <outcome value='PendingCreate'>
+                                <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-unassign' mode='sync' ></call>
+                            </outcome>
+                            <outcome value='PendingDelete'>
+                                <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-unassign' mode='sync' ></call>
+                            </outcome>
+                            <outcome value='Other'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="`'Network is not in appropriate state for unassign. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status`" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='update'>
+                    <switch test='`$network-topology-operation-input.request-information.request-action`'>
+                        <outcome value='ChangeInternetProfileInstance'>
+                            <for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`">
+                                    <outcome value='true'>
+                                        <switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>
+                                            <outcome value='HUAWEI'>
+                                                <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-change-huawei' mode='sync' ></call>
+                                            </outcome>
+                                            <outcome value='NOKIA'>
+                                                <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-change-nokia' mode='sync' ></call>
+                                            </outcome>
+                                            <outcome value='Other'>
+                                                <return status='failure'>
+                                                    <parameter name='ack-final' value='Y'/>
+                                                    <parameter name="error-code" value="500" />
+                                                    <parameter name="error-message" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name+' is invalid manufacturer,please check!'`" />
+                                                </return>
+                                            </outcome>
+                                        </switch>
+                                    </outcome>
+                                </switch>
+                            </for>
+                        </outcome>
+                    </switch>
+                </outcome>
+                <outcome value='create'>
+                    <switch test='`$network-topology-operation-input.request-information.request-action`'>
+                        <outcome value='CreateSOTNConnectivityInstance'>
+                            <call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-create' mode='sync' ></call>
+                        </outcome>
+                        <outcome value='CreateSDWANConnectivityInstance'>
+                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-network-topology-operation-create' mode='sync' ></call>
+                        </outcome>
+                        <outcome value='other'>
+                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >
+                                <parameter name="source" value="`$network-topology-operation-input.service-information.onap-model-information.model-name`"/>
+                                <parameter name="target" value="wan-connection"/>
+                                <outcome value='true'>
+                                    <call module='GENERIC-RESOURCE-API' rpc='wan-connection-topology-operation-create' mode='sync' ></call>
+                                </outcome>
+                                <outcome value='false'>
+                                    <block atomic="true">
+                                        <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-create' mode='sync' ></call>
+                                    </block>
+                                </outcome>
+                            </execute>
+                        </outcome>
+                        <outcome value='CreateInternetProfileInstance'>
+                            <for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`">
+                                    <outcome value='true'>
+                                        <switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>
+                                            <outcome value='HUAWEI'>
+                                                <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-create-huawei' mode='sync' ></call>
+                                            </outcome>
+                                            <outcome value='NOKIA'>
+                                                <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-create-nokia' mode='sync' ></call>
+                                            </outcome>
+                                            <outcome value='Other'>
+                                                <return status='failure'>
+                                                    <parameter name='ack-final' value='Y'/>
+                                                    <parameter name="error-code" value="500" />
+                                                    <parameter name="error-message" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name+' is invalid manufacturer,please check!'`" />
+                                                </return>
+                                            </outcome>
+                                        </switch>
+                                    </outcome>
+                                </switch>
+                            </for>
+                        </outcome>
+                        <outcome value='CreateAccessConnectivityInstance'>
+                            <for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`">
+                                    <outcome value='true'>
+                                        <switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>
+                                            <outcome value='HUAWEI'>
+                                                <call module='GENERIC-RESOURCE-API' rpc='bbs-access-connectivity-network-topology-operation-create-huawei' mode='sync' ></call>
+                                            </outcome>
+                                            <outcome value='NOKIA'>
+                                                <call module='GENERIC-RESOURCE-API' rpc='bbs-access-connectivity-network-topology-operation-create-nokia' mode='sync' ></call>
+                                            </outcome>
+                                            <outcome value='Other'>
+                                                <return status='failure'>
+                                                    <parameter name='ack-final' value='Y'/>
+                                                    <parameter name="error-code" value="500" />
+                                                    <parameter name="error-message" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name+' is invalid manufacturer,please check!'`" />
+                                                </return>
+                                            </outcome>
+                                        </switch>
+                                    </outcome>
+                                </switch>
+                            </for>
+                        </outcome>
+                    </switch>
+                </outcome>
+                <outcome value='delete'>
+                    <switch test='`$network-topology-operation-input.request-information.request-action`'>
+                        <outcome value='DeleteSOTNConnectivityInstance'>
+                            <call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-delete' mode='sync' ></call>
+                        </outcome>
+                        <outcome value='DeleteSDWANConnectivityInstance'>
+                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-network-topology-operation-delete' mode='sync' ></call>
+                        </outcome>
+                        <outcome value='other'>
+                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' >
+                                <parameter name="source" value="`$network-topology-operation-input.service-information.onap-model-information.model-name`"/>
+                                <parameter name="target" value="wan-connection"/>
+                                <outcome value='true'>
+                                    <call module='GENERIC-RESOURCE-API' rpc='wan-connection-topology-operation-deactivate' mode='sync' ></call>
+                                </outcome>
+                                <outcome value='false'>
+                                    <block atomic="true">
+                                        <call module='GENERIC-RESOURCE-API' rpc='network-topology-operation-delete' mode='sync' ></call>
+                                    </block>
+                                </outcome>
+                            </execute>
+                        </outcome>
+                        <outcome value='DeleteAccessConnectivityInstance'>
+                            <for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`">
+                                    <outcome value='true'>
+                                        <switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>
+                                            <outcome value='Other'>
+                                                <return status='failure'>
+                                                    <parameter name='ack-final' value='Y'/>
+                                                    <parameter name="error-code" value="500" />
+                                                    <parameter name="error-message" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name+' is invalid manufacturer,please check!'`" />
+                                                </return>
+                                            </outcome>
+                                            <outcome value='HUAWEI'>
+                                                <call module='GENERIC-RESOURCE-API' rpc='bbs-access-connectivity-network-topology-operation-delete-huawei' mode='sync' ></call>
+                                            </outcome>
+                                            <outcome value='NOKIA'>
+                                                <call module='GENERIC-RESOURCE-API' rpc='bbs-access-connectivity-network-topology-operation-delete-nokia' mode='sync' ></call>
+                                            </outcome>
+                                        </switch>
+                                    </outcome>
+                                </switch>
+                            </for>
+                        </outcome>
+                        <outcome value='DeleteInternetProfileInstance'>
+                            <for index='idx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'manufacturer'`">
+                                    <outcome value='true'>
+                                        <switch test='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`'>
+                                            <outcome value='Other'>
+                                                <return status='failure'>
+                                                    <parameter name='ack-final' value='Y'/>
+                                                    <parameter name="error-code" value="500" />
+                                                    <parameter name="error-message" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name+' is invalid manufacturer,please check!'`" />
+                                                </return>
+                                            </outcome>
+                                            <outcome value='HUAWEI'>
+                                                <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-delete-huawei' mode='sync' ></call>
+                                            </outcome>
+                                            <outcome value='NOKIA'>
+                                                <call module='GENERIC-RESOURCE-API' rpc='bbs-internet-profile-network-topology-operation-delete-nokia' mode='sync' ></call>
+                                            </outcome>
+                                        </switch>
+                                    </outcome>
+                                </switch>
+                            </for>
+                        </outcome>
+                    </switch>
+                </outcome>
+                <outcome value='reoptimize'>
+                    <switch test='`$network-topology-operation-input.request-information.request-action`'>
+                        <outcome value='ReoptimizeSOTNInstance'>
+                            <call module='GENERIC-RESOURCE-API' rpc='sotn-network-topology-operation-reoptimize' mode='sync' ></call>
+                        </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="sdnc-request-header.svc-action is a required input" />
+                    </return>
+                </outcome>
+            </switch>
+            <set>
+                <parameter name="ack-final" value="Y"/>
+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation-activate.xml
new file mode 100644
index 0000000..a382b02
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation-activate.xml
@@ -0,0 +1,84 @@
+<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='pnf-topology-operation-activate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$pnf-topology-operation-input.request-information.request-action`'>

+                <outcome value='CreatePnfInstance'>

+                    <block></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="If svc-action is 'activate' then request-action must be 'CreatePnfInstance'" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.pnfs.pnf_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 PNFs in MD-SAL" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.pnfs.pnf_length`' >

+                <switch test='`$service-data.pnfs.pnf[$idx].pnf-id == $pnf-topology-operation-input.pnf-details.pnf-id`'>

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='pnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$pnf-index`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="'Could not find PNF ' + $pnf-topology-operation-input.pnf-details.pnf-id + ' in MD-SAL'" />

+                    </return>

+                </outcome>

+            </switch>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="pnf"

+   key="pnf.pnf-id = $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-id"

+   force="true" pfx="tmp.AnAI-data">

+                <parameter name="prov-status" value="NVTPROV" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error updating pnf in AAI" />

+                    </return>

+                </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="`'No pnf found in AAI with pnf-id = ' + $service-data.pnfs.pnf[$pnf-index].pnf-id`" />

+                    </return>

+                </outcome>

+            </update>

+            <set>

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.' value='$pnf-topology-operation-input.sdnc-request-header.' />

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.' value='$pnf-topology-operation-input.request-information.' />

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.' value='$pnf-topology-operation-input.service-information.' />

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.' value='$pnf-topology-operation-input.pnf-details.' />

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.' value='$pnf-topology-operation-input.pnf-request-input.' />

+            </set>

+            <set>

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.order-status' value='Created' />

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-rpc-action' value='`$pnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-action' value='`$pnf-topology-operation-input.request-information.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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation-assign.xml
new file mode 100644
index 0000000..f25087e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation-assign.xml
@@ -0,0 +1,71 @@
+<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='pnf-topology-operation-assign' mode='sync'>

+        <block atomic="true">

+            <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='`$pnf-topology-operation-input.pnf-request-input.cloud-owner`'>

+                <outcome value=''>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='prop.cloud-region.cloud-owner' value='`$pnf-topology-operation-input.pnf-request-input.cloud-owner`' />

+                    </set>

+                </outcome>

+            </switch>

+            <switch test='`$pnf-topology-operation-input.request-information.request-action`'>

+                <outcome value='CreatePnfInstance'>

+                    <block></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="If svc-action is 'assign' then request-action must be 'CreatePnfInstance'" />

+                    </return>

+                </outcome>

+            </switch>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODEL WHERE customization_uuid = $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid'

+  pfx='db.vf-model'>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error reading VF_MODEL table" />

+                    </return>

+                </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="`'No model found for VF customization UUID ' + $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <block atomic="true">

+                <call module='GENERIC-RESOURCE-API' rpc='self-serve-pnf-assign' mode='sync' >

+                    <outcome value='failure'>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`'Failed to create self-serve assignment for pnf with pnf-id=' + $pnf-topology-operation-input.pnf-details.pnf-id + ' with error: ' + $error-message`" />

+                        </return>

+                    </outcome>

+                </call>

+                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                    <parameter name='filename' value='/var/tmp/ss-pnf-assign.log' />

+                </execute>

+                <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>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation-deactivate.xml
new file mode 100644
index 0000000..5cb8438
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation-deactivate.xml
@@ -0,0 +1,84 @@
+<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='pnf-topology-operation-deactivate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$pnf-topology-operation-input.request-information.request-action`'>

+                <outcome value='DeletePnfInstance'>

+                    <block></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="If svc-action is 'deactivate' then request-action must be 'DeletePnfInstance'" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.pnfs.pnf_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 PNFs in MD-SAL" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.pnfs.pnf_length`' >

+                <switch test='`$service-data.pnfs.pnf[$idx].pnf-id == $pnf-topology-operation-input.pnf-details.pnf-id`'>

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='pnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$pnf-index`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="'Could not find PNF with pnf-id = ' + $pnf-topology-operation-input.pnf-details.pnf-id + ' in MD-SAL'" />

+                    </return>

+                </outcome>

+            </switch>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="pnf"

+   key="pnf.pnf-id = $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-id"

+   force="true" pfx="tmp.AnAI-data">

+                <parameter name="orchestration-status" value="PendingDelete" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error updating pnf in AAI" />

+                    </return>

+                </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="`'No pnf found in AAI with pnf-id =  ' + $service-data.pnfs.pnf[$pnf-index].pnf-id`" />

+                    </return>

+                </outcome>

+            </update>

+            <set>

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.' value='$pnf-topology-operation-input.sdnc-request-header.' />

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.' value='$pnf-topology-operation-input.request-information.' />

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.' value='$pnf-topology-operation-input.service-information.' />

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.' value='$pnf-topology-operation-input.pnf-details.' />

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.' value='$pnf-topology-operation-input.pnf-request-input.' />

+            </set>

+            <set>

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.order-status' value='PendingDelete' />

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-rpc-action' value='`$pnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-action' value='`$pnf-topology-operation-input.request-information.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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation-unassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation-unassign.xml
new file mode 100644
index 0000000..48bffb4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation-unassign.xml
@@ -0,0 +1,93 @@
+<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='pnf-topology-operation-unassign' mode='sync'>

+        <block atomic="true">

+            <switch test='`$pnf-topology-operation-input.request-information.request-action`'>

+                <outcome value='DeletePnfInstance'>

+                    <block></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="If svc-action is 'unassign' then request-action must be 'DeletePnfInstance'" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.pnfs.pnf_length`'>

+                <outcome value=''>

+                    <return status='success'>

+                        <parameter name="ack-final-indicator" value="Y" />

+                        <parameter name="error-code" value="200" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <for index='idx' start='0' end='`$service-data.pnfs.pnf_length`' >

+                            <switch test='`$service-data.pnfs.pnf[$idx].pnf-id == $pnf-topology-operation-input.pnf-details.pnf-id`' >

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name='pnf-index' value='`$idx`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$pnf-index`'>

+                            <outcome value=''>

+                                <return status='success'>

+                                    <parameter name="ack-final-indicator" value="Y" />

+                                    <parameter name="error-code" value="200" />

+                                </return>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block atomic="true">

+                                    <call module='GENERIC-RESOURCE-API' rpc='self-serve-pnf-unassign' mode='sync' >

+                                        <outcome value='success'>

+                                            <switch test='`$service-data.pnfs.pnf_length`'>

+                                                <outcome value='1'>

+                                                    <set>

+                                                        <parameter name="service-data.pnfs." value=""/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <block atomic="true">

+                                                        <for index='idx' start='`$pnf-index + 1`' end='`$service-data.pnfs.pnf_length`' >

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name="$tmpidx" value="`$idx - 1`"/>

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name="service-data.pnfs.pnf[$tmpidx]." value="" />

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name="service-data.pnfs.pnf[$tmpidx]." value="$service-data.pnfs.pnf[$idx]." />

+                                                                </set>

+                                                            </block>

+                                                        </for>

+                                                        <set>

+                                                            <parameter name="service-data.pnfs.pnf[$service-data.pnfs.pnf_length - 1]." value=""/>

+                                                        </set>

+                                                        <set>

+                                                            <parameter name="service-data.pnfs.pnf_length" value="`$service-data.pnfs.pnf_length - 1`"/>

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </outcome>

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value="`'Encountered error while unassigning self-serve  pnf resources with error: '+ $error-message`" />

+                                            </return>

+                                        </outcome>

+                                    </call>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation.xml
new file mode 100644
index 0000000..8ab8729
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_pnf-topology-operation.xml
@@ -0,0 +1,38 @@
+<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='pnf-topology-operation' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-pnf-input' mode='sync' ></call>

+            <switch test='`$pnf-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='assign'>

+                    <call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-assign' mode='sync' ></call>

+                </outcome>

+                <outcome value='activate'>

+                    <call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-activate' mode='sync' ></call>

+                </outcome>

+                <outcome value='deactivate'>

+                    <call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-deactivate' mode='sync' ></call>

+                </outcome>

+                <outcome value='unassign'>

+                    <call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-unassign' mode='sync' ></call>

+                </outcome>

+                <outcome value='changeassign'>

+                    <call module='GENERIC-RESOURCE-API' rpc='pnf-topology-operation-changeassign' mode='sync' ></call>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`$pnf-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_policy-manager-create-policy.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_policy-manager-create-policy.xml
new file mode 100755
index 0000000..c6d45de
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_policy-manager-create-policy.xml
@@ -0,0 +1,46 @@
+<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='policy-manager-create-policy' mode='sync'>
+        <block atomic="true">
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.createpolicy.templatefile`" />
+                <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/createPolicy'`" />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name='convertResponse' value="false" />
+                <parameter name='customHttpHeaders'
+      value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.pushpolicy.templatefile`" />
+                            <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/pushPolicy'`" />
+                            <parameter name='format' value='json' />
+                            <parameter name='httpMethod' value='PUT' />
+                            <parameter name='convertResponse' value="false" />
+                            <parameter name='customHttpHeaders'
+      value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />
+                            <outcome value='success'>
+                                <block atomic="true"></block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <return status='failure'>
+                                    <parameter name='error-code' value='500' />
+                                    <parameter name='error-message' value='Failed to push policy in Policy Manager' />
+                                </return>
+                            </outcome>
+                        </execute>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value='Failed to create policy in Policy Manager' />
+                    </return>
+                </outcome>
+            </execute>
+            <return status='success'></return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_policy-manager-delete-policy.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_policy-manager-delete-policy.xml
new file mode 100755
index 0000000..e5bcb09
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_policy-manager-delete-policy.xml
@@ -0,0 +1,46 @@
+<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='policy-manager-delete-policy' mode='sync'>
+        <block atomic="true">
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.deletepolicypdp.templatefile`" />
+                <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/deletePolicy'`" />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='DELETE' />
+                <parameter name='convertResponse' value="false" />
+                <parameter name='customHttpHeaders'
+      value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.deletepolicypap.templatefile`" />
+                            <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/deletePolicy'`" />
+                            <parameter name='format' value='json' />
+                            <parameter name='httpMethod' value='DELETE' />
+                            <parameter name='convertResponse' value="false" />
+                            <parameter name='customHttpHeaders'
+      value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />
+                            <outcome value='success'>
+                                <block atomic="true"></block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <return status='failure'>
+                                    <parameter name='error-code' value='500' />
+                                    <parameter name='error-message' value='Failed to delete policy from Policy Manager (PAP)' />
+                                </return>
+                            </outcome>
+                        </execute>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value='Failed to delete policy from Policy Manager (PDP)' />
+                    </return>
+                </outcome>
+            </execute>
+            <return status='success'></return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_policy-update-notify-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_policy-update-notify-operation.xml
new file mode 100755
index 0000000..a0d77fd
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_policy-update-notify-operation.xml
@@ -0,0 +1,89 @@
+<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='policy-update-notify-operation' mode='sync'>
+        <block atomic="true">
+            <switch test='`$policy-update-notify-operation-input.update-type`'>
+                <outcome value='Update'>
+                    <block atomic="true">
+                        <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>
+                        <set>
+                            <parameter name='tmp.sql' value="`'insert into POLICY_UPDATE_NOTIFICATION (policy_name,version_id,update_type) values ( '
++ ' $policy-update-notify-operation-input.policy-name , $policy-update-notify-operation-input.version-id , $policy-update-notify-operation-input.update-type )'`" />
+                        </set>
+                        <save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+  key="`$tmp.sql`" pfx='pfx'></save>
+                        <set>
+                            <parameter name='tmp.policy-name' value='`$policy-update-notify-operation-input.policy-name`' />
+                        </set>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.getpolicy.templatefile`" />
+                            <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/getConfig'`" />
+                            <parameter name='format' value='json' />
+                            <parameter name='httpMethod' value='POST' />
+                            <parameter name='responsePrefix' value="policy" />
+                            <parameter name='customHttpHeaders'
+      value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />
+                            <outcome value='success'>
+                                <block atomic="true"></block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <return status='failure'>
+                                    <parameter name='error-code' value='500' />
+                                    <parameter name='error-message' value='Failed to get policy from Policy Manager' />
+                                </return>
+                            </outcome>
+                        </execute>
+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx' >
+                            <parameter name='source' value="policy.config" />
+                            <parameter name='outputPath' value="tmp.config-ctx" />
+                            <parameter name='isEscaped' value='false' />
+                            <outcome value='success'>
+                                <block atomic="true"></block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <return status='failure'>
+                                    <parameter name='error-code' value='500' />
+                                    <parameter name='error-message' value='Failed to convert config variable from PolicyManager' />
+                                </return>
+                            </outcome>
+                        </execute>
+                        <set>
+                            <parameter name='policy-name' value='`$tmp.config-ctx.content.fq_name[2]`' />
+                        </set>
+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+                            <parameter name="original_string" value="`$policy-name`" />
+                            <parameter name="regex" value="_"/>
+                            <parameter name="limit" value="3" />
+                            <parameter name="ctx_memory_result_key" value="policy-splits" />
+                        </execute>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                            <parameter name='api-name' value='network-policy' />
+                            <parameter name='api-action' value='update' />
+                            <parameter name='resp-prefix' value='contrailResp' />
+                            <parameter name='cloud-region-id' value='`$policy-splits[1]`' />
+                            <parameter name='update-network-policy-json' value='`$policy.config`' />
+                            <outcome value='success'>
+                                <block atomic="true"></block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <return status='failure'>
+                                    <parameter name='error-code' value='500' />
+                                    <parameter name='error-message' value="`'Error updating Contrail: ' + $contrailResp.resp-message`" />
+                                </return>
+                            </outcome>
+                        </execute>
+                    </block>
+                </outcome>
+            </switch>
+            <return status='success'>
+                <parameter name="ack-final-indicator" value="Y" />
+                <parameter name="error-code" value="200" />
+                <parameter name="error-message" value="success" />
+            </return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-get-policy.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-get-policy.xml
new file mode 100644
index 0000000..a5e7438
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-get-policy.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='port-mirror-get-policy' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.policy-name' value='`$db.cap[0].policy-name`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.pm.getpolicy.templatefile`" />
+                <parameter name='restapiUrl' value="`$prop.policy-manager.url + '/pdp/api/getConfig'`" />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='POST' />
+                <parameter name='responsePrefix' value="policy" />
+                <parameter name='customHttpHeaders'
+      value="`'Authorization=Basic ' + $prop.policy-manager.authorization + ',ClientAuth=Basic ' + $prop.policy-manager.clientauth + ',Environment=' + $prop.policy-manager.environment `" />
+                <outcome value='success'>
+                    <block atomic="true"></block>
+                </outcome>
+                <outcome value='Other'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value='Failed to get policy from Policy Manager' />
+                    </return>
+                </outcome>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx' >
+                <parameter name='source' value="policy.config" />
+                <parameter name='outputPath' value="tmp.config-ctx" />
+                <parameter name='isEscaped' value='false' />
+                <outcome value='success'>
+                    <block atomic="true"></block>
+                </outcome>
+                <outcome value='Other'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value='Failed to convert config variable from PolicyManager' />
+                    </return>
+                </outcome>
+            </execute>
+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="toLower">
+                <parameter name="source" value="`$tmp.tenant-context`" />
+                <parameter name="outputPath" value="tmp.lc-tenant-context" />
+            </execute>
+            <switch test='`$tmp.lc-tenant-context`'>
+                <outcome value=''>
+                    <set>
+                        <parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.defaultContext`' />
+                    </set>
+                </outcome>
+                <outcome value='Other'>
+                    <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome='true'>
+                        <parameter name="source" value="`$tmp.lc-tenant-context`" />
+                        <parameter name="target" value="prod" />
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.productionContext`' />
+                            </set>
+                        </outcome>
+                        <outcome value='Other'>
+                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome='true'>
+                                <parameter name="source" value="`$tmp.lc-tenant-context`" />
+                                <parameter name="target" value="test" />
+                                <outcome value='true'>
+                                    <set>
+                                        <parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.testContext`' />
+                                    </set>
+                                </outcome>
+                                <outcome value='Other'>
+                                    <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome='true'>
+                                        <parameter name="source" value="`$tmp.lc-tenant-context`" />
+                                        <parameter name="target" value="dev" />
+                                        <outcome value='true'>
+                                            <set>
+                                                <parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.developmentContext`' />
+                                            </set>
+                                        </outcome>
+                                        <outcome value='Other'>
+                                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome='true'>
+                                                <parameter name="source" value="`$tmp.lc-tenant-context`" />
+                                                <parameter name="target" value="default" />
+                                                <outcome value='true'>
+                                                    <set>
+                                                        <parameter name='tmp.dest-p-interface' value='`$tmp.config-ctx.content.defaultContext`' />
+                                                    </set>
+                                                </outcome>
+                                                <outcome value='Other'>
+                                                    <return status='failure'>
+                                                        <parameter name='error-code' value='500' />
+                                                        <parameter name='error-message' value="`'Unexpected tenant-context value of ' + $tmp.tenant-context`" />
+                                                    </return>
+                                                </outcome>
+                                            </execute>
+                                        </outcome>
+                                    </execute>
+                                </outcome>
+                            </execute>
+                        </outcome>
+                    </execute>
+                </outcome>
+            </switch>
+            <switch test='`$tmp.dest-p-interface`'>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Unable to find p-interface in policy ' + tmp.policy-name`" />
+                    </return>
+                </outcome>
+            </switch>
+            <return status='success'></return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-rollback-capacity-db.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-rollback-capacity-db.xml
new file mode 100644
index 0000000..7b1ab18
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-rollback-capacity-db.xml
@@ -0,0 +1,52 @@
+<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='port-mirror-rollback-capacity-db' mode='sync'>
+        <block>
+            <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+                <block atomic="true">
+                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+  key='select available_capacity
+    from VNICS_CAPACITY
+    where vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id
+    and vnic_port_name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name'
+  pfx='db.vnics-capacity'>
+                        <outcome value='success'>
+                            <block>
+                                <set>
+                                    <parameter name='tmp.avail-capacity' value='`$db.vnics-capacity.available-capacity + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-capacity`' />
+                                </set>
+                                <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="update VNICS_CAPACITY
+     set available_capacity = $tmp.avail-capacity
+     where vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id
+     and vnic_port_name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name
+" ></update>
+                            </block>
+                        </outcome>
+                    </get-resource>
+                </block>
+            </for>
+            <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+  key='delete from VNICS_CONFIGURATION_ID
+  	where configuration_id = $tmp.configuration-id
+    and vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id' ></delete>
+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+  key='select configuration_id
+    from VNICS_CONFIGURATION_ID
+    where vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id'
+  pfx='db.vnics-confid'>
+                <outcome value='not-found'>
+                    <block>
+                        <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+  key='delete from VNICS_CAPACITY
+  	where vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id' ></delete>
+                        <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+  key='delete from VNICS_CAPACITY_GROUP
+  	where vnics_group_id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id' ></delete>
+                    </block>
+                </outcome>
+            </get-resource>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-async.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-async.xml
new file mode 100644
index 0000000..0d95f40
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-async.xml
@@ -0,0 +1,765 @@
+<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='port-mirror-topology-operation-activate-async' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+                <parameter name="outputPath" value="tmp.pmc-url"/>
+                <parameter name="target" value="{configuration-id}"/>
+                <parameter name="replacement" value="`$tmp.configuration-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="pm-mdsal" />
+                <outcome value='success'>
+                    <block></block>
+                </outcome>
+                <outcome value='failure'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name="error-message" value="Failed to read port-mirror-configuration from MD-SAL" />
+                        </set>
+                        <block atomic="true">
+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                <parameter name="input.ack-final-indicator" value="Y" />
+                                <parameter name="input.response-code" value="500" />
+                                <parameter name="input.response-message" value="`$error-message`" />
+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                            </configure>
+                            <return status='failure'>
+                                <parameter name='ack-final' value='Y'/>
+                                <parameter name="error-code" value="500" />
+                                <parameter name="error-message" value="`'$error-message'`" />
+                            </return>
+                        </block>
+                    </block>
+                </outcome>
+                <outcome value='not-found'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name="error-message" value="Cannot find port-mirror-configuration in MD-SAL" />
+                        </set>
+                        <block atomic="true">
+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                <parameter name="input.ack-final-indicator" value="Y" />
+                                <parameter name="input.response-code" value="500" />
+                                <parameter name="input.response-message" value="`$error-message`" />
+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                            </configure>
+                            <return status='failure'>
+                                <parameter name='ack-final' value='Y'/>
+                                <parameter name="error-code" value="500" />
+                                <parameter name="error-message" value="`'$error-message'`" />
+                            </return>
+                        </block>
+                    </block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />
+                <parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />
+            </set>
+            <set>
+                <parameter name='pm.configuration-data.configuration-operation-information.sdnc-request-header.'
+  value='`$port-mirror-topology-operation-input.sdnc-request-header.`' />
+            </set>
+            <set>
+                <parameter name='tmp.configuration-sub-type' value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type`' />
+            </set>
+            <switch test='`$tmp.configuration-sub-type`'>
+                <outcome value='vprobe'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='cto-api.default-domain' value='default-domain' />
+                            <parameter name='cto-api.default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                            <parameter name='cto-api.cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                            <parameter name='cto-api.contrail-route-allotted-resource-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.route-allotted-resource-id`' />
+                            <parameter name='cto-api.src-contrail-network-fqdn'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-network-fqdn`' />
+                            <parameter name='cto-api.collector-contrail-network-fqdn'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />
+                            <parameter name='cto-api.owning-entity'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.owning-entity`' />
+                        </set>
+                        <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-activate' mode='sync' >
+                            <outcome value='failure'>
+                                <block atomic="true">
+                                    <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                        <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                        <parameter name="input.ack-final-indicator" value="Y" />
+                                        <parameter name="input.response-code" value="500" />
+                                        <parameter name="input.response-message" value="`$error-message`" />
+                                        <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                        <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                        <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                                    </configure>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`'$error-message'`" />
+                                    </return>
+                                </block>
+                            </outcome>
+                        </call>
+                    </block>
+                </outcome>
+            </switch>
+            <for silentFailure='true' index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+                <block atomic="true">
+                    <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`'>
+                        <outcome value='Other'>
+                            <set>
+                                <parameter name='tmp.analyzer.ip-address'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`' />
+                            </set>
+                        </outcome>
+                        <outcome value=''>
+                            <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`'>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='tmp.analyzer.ip-address'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`' />
+                                    </set>
+                                </outcome>
+                                <outcome value=''>
+                                    <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`'>
+                                        <outcome value='Other'>
+                                            <set>
+                                                <parameter name='tmp.analyzer.ip-address'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`' />
+                                            </set>
+                                        </outcome>
+                                        <outcome value=''>
+                                            <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`'>
+                                                <outcome value='Other'>
+                                                    <set>
+                                                        <parameter name='tmp.analyzer.ip-address'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`' />
+                                                    </set>
+                                                </outcome>
+                                                <outcome value=''>
+                                                    <block atomic="true">
+                                                        <set>
+                                                            <parameter name="error-message" value="`'No dest addresses stored for source port ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+                                                        </set>
+                                                        <block atomic="true">
+                                                            <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+                                                                <block atomic="true">
+                                                                    <switch test="`$contrail-set[$src-idx] == 'true'`">
+                                                                        <outcome value='true'>
+                                                                            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                                                                                <parameter name='api-name' value='port-mirroring' />
+                                                                                <parameter name='api-action' value='disable' />
+                                                                                <parameter name='resp-prefix' value='contrailResp' />
+                                                                                <parameter name='display-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+                                                                                <parameter name='default-domain' value='default-domain' />
+                                                                                <parameter name='default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                                                                                <parameter name='cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                                                                                <parameter name='cloud-owner'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+                                                                            </execute>
+                                                                        </outcome>
+                                                                    </switch>
+                                                                    <switch test="`$l-interface-set[$src-idx] == 'true'`">
+                                                                        <outcome value='true'>
+                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+   resource="l-interface"
+   key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+   force="true" pfx="tmp.AnAI-data">
+                                                                                <parameter name="is-port-mirrored" value="false" />
+                                                                            </update>
+                                                                        </outcome>
+                                                                    </switch>
+                                                                </block>
+                                                            </for>
+                                                            <block atomic="true">
+                                                                <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                                                    <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                                                    <parameter name="input.ack-final-indicator" value="Y" />
+                                                                    <parameter name="input.response-code" value="500" />
+                                                                    <parameter name="input.response-message" value="`$error-message`" />
+                                                                    <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                                                    <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                                                    <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                                                                </configure>
+                                                                <return status='failure'>
+                                                                    <parameter name='ack-final' value='Y'/>
+                                                                    <parameter name="error-code" value="500" />
+                                                                    <parameter name="error-message" value="`'$error-message'`" />
+                                                                </return>
+                                                            </block>
+                                                        </block>
+                                                    </block>
+                                                </outcome>
+                                            </switch>
+                                        </outcome>
+                                    </switch>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                    <switch test='`$tmp.configuration-sub-type`'>
+                        <outcome value='vprobe'>
+                            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                                <parameter name='api-name' value='port-mirroring' />
+                                <parameter name='api-action' value='enable' />
+                                <parameter name='resp-prefix' value='contrailResp' />
+                                <parameter name='display-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+                                <parameter name='contrail-virtual-machine-interface-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+                                <parameter name='contrail-virtual-machine-interface-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+                                <parameter name='default-domain' value='default-domain' />
+                                <parameter name='default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                                <parameter name='traffic-direction' value='both' />
+                                <parameter name='analyzer-ip-address'
+  value='`$tmp.analyzer.ip-address`' />
+                                <parameter name='udp-port' value='8099' />
+                                <parameter name='routing-instance'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />
+                                <parameter name='local-preference' value='1' />
+                                <parameter name='cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                                <parameter name='cloud-owner'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+                                <outcome value='success'>
+                                    <set>
+                                        <parameter name='contrail-set[$src-idx]' value='true' />
+                                    </set>
+                                </outcome>
+                                <outcome value='failure'>
+                                    <block atomic="true">
+                                        <set>
+                                            <parameter name="error-message" value="`'Failed to update policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+                                        </set>
+                                        <block atomic="true">
+                                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                                <parameter name="input.ack-final-indicator" value="Y" />
+                                                <parameter name="input.response-code" value="500" />
+                                                <parameter name="input.response-message" value="`$error-message`" />
+                                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                                            </configure>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="`'$error-message'`" />
+                                            </return>
+                                        </block>
+                                    </block>
+                                </outcome>
+                            </execute>
+                        </outcome>
+                        <outcome value='pprobe'>
+                            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                                <parameter name='api-name' value='port-mirroring' />
+                                <parameter name='api-action' value='enable' />
+                                <parameter name='resp-prefix' value='contrailResp' />
+                                <parameter name='display-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+                                <parameter name='contrail-virtual-machine-interface-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+                                <parameter name='contrail-virtual-machine-interface-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+                                <parameter name='default-domain' value='default-domain' />
+                                <parameter name='default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                                <parameter name='traffic-direction' value='both' />
+                                <parameter name='analyzer-ip-address'
+  value='`$tmp.analyzer.ip-address`' />
+                                <parameter name='vni' value='1000' />
+                                <parameter name='udp-port' value='8099' />
+                                <parameter name='routing-instance'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />
+                                <parameter name='local-preference' value='1' />
+                                <parameter name='juniper-header' value='false' />
+                                <parameter name='cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                                <parameter name='cloud-owner'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+                                <outcome value='success'>
+                                    <set>
+                                        <parameter name='contrail-set[$src-idx]' value='true' />
+                                    </set>
+                                </outcome>
+                                <outcome value='failure'>
+                                    <block atomic="true">
+                                        <set>
+                                            <parameter name="error-message" value="`'Failed to update policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+                                        </set>
+                                        <block atomic="true">
+                                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                                <parameter name="input.ack-final-indicator" value="Y" />
+                                                <parameter name="input.response-code" value="500" />
+                                                <parameter name="input.response-message" value="`$error-message`" />
+                                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                                            </configure>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="`'$error-message'`" />
+                                            </return>
+                                        </block>
+                                    </block>
+                                </outcome>
+                            </execute>
+                        </outcome>
+                    </switch>
+                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+   resource="l-interface"
+   key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+   force="true" pfx="tmp.AnAI-data">
+                        <parameter name="is-port-mirrored" value="true" />
+                        <outcome value='not-found'>
+                            <block atomic="true">
+                                <set>
+                                    <parameter name="error-message" value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+                                </set>
+                                <block atomic="true">
+                                    <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+                                        <block atomic="true">
+                                            <switch test="`$contrail-set[$src-idx] == 'true'`">
+                                                <outcome value='true'>
+                                                    <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                                                        <parameter name='api-name' value='port-mirroring' />
+                                                        <parameter name='api-action' value='disable' />
+                                                        <parameter name='resp-prefix' value='contrailResp' />
+                                                        <parameter name='display-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+                                                        <parameter name='default-domain' value='default-domain' />
+                                                        <parameter name='default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                                                        <parameter name='cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                                                        <parameter name='cloud-owner'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+                                                    </execute>
+                                                </outcome>
+                                            </switch>
+                                            <switch test="`$l-interface-set[$src-idx] == 'true'`">
+                                                <outcome value='true'>
+                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+   resource="l-interface"
+   key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+   force="true" pfx="tmp.AnAI-data">
+                                                        <parameter name="is-port-mirrored" value="false" />
+                                                    </update>
+                                                </outcome>
+                                            </switch>
+                                        </block>
+                                    </for>
+                                    <block atomic="true">
+                                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                            <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                            <parameter name="input.ack-final-indicator" value="Y" />
+                                            <parameter name="input.response-code" value="500" />
+                                            <parameter name="input.response-message" value="`$error-message`" />
+                                            <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                            <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                            <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                                        </configure>
+                                        <return status='failure'>
+                                            <parameter name='ack-final' value='Y'/>
+                                            <parameter name="error-code" value="500" />
+                                            <parameter name="error-message" value="`'$error-message'`" />
+                                        </return>
+                                    </block>
+                                </block>
+                            </block>
+                        </outcome>
+                        <outcome value='failure'>
+                            <block atomic="true">
+                                <set>
+                                    <parameter name="error-message" value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+                                </set>
+                                <block atomic="true">
+                                    <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+                                        <block atomic="true">
+                                            <switch test="`$contrail-set[$src-idx] == 'true'`">
+                                                <outcome value='true'>
+                                                    <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                                                        <parameter name='api-name' value='port-mirroring' />
+                                                        <parameter name='api-action' value='disable' />
+                                                        <parameter name='resp-prefix' value='contrailResp' />
+                                                        <parameter name='display-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+                                                        <parameter name='default-domain' value='default-domain' />
+                                                        <parameter name='default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                                                        <parameter name='cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                                                        <parameter name='cloud-owner'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+                                                    </execute>
+                                                </outcome>
+                                            </switch>
+                                            <switch test="`$l-interface-set[$src-idx] == 'true'`">
+                                                <outcome value='true'>
+                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+   resource="l-interface"
+   key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+   force="true" pfx="tmp.AnAI-data">
+                                                        <parameter name="is-port-mirrored" value="false" />
+                                                    </update>
+                                                </outcome>
+                                            </switch>
+                                        </block>
+                                    </for>
+                                    <block atomic="true">
+                                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                            <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                            <parameter name="input.ack-final-indicator" value="Y" />
+                                            <parameter name="input.response-code" value="500" />
+                                            <parameter name="input.response-message" value="`$error-message`" />
+                                            <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                            <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                            <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                                        </configure>
+                                        <return status='failure'>
+                                            <parameter name='ack-final' value='Y'/>
+                                            <parameter name="error-code" value="500" />
+                                            <parameter name="error-message" value="`'$error-message'`" />
+                                        </return>
+                                    </block>
+                                </block>
+                            </block>
+                        </outcome>
+                        <outcome value='success'>
+                            <set>
+                                <parameter name='l-interface-set[$src-idx]' value='true' />
+                            </set>
+                        </outcome>
+                    </update>
+                </block>
+            </for>
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+   resource="configuration"
+   key="configuration.configuration-id = $tmp.configuration-id"
+   force="true" pfx="tmp.AnAI-data">
+                <parameter name="operational-status" value="in-service-path" />
+                <outcome value='not-found'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name="error-message" value="Unable to find configuration object in AAI" />
+                        </set>
+                        <block atomic="true">
+                            <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+                                <block atomic="true">
+                                    <switch test="`$contrail-set[$src-idx] == 'true'`">
+                                        <outcome value='true'>
+                                            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                                                <parameter name='api-name' value='port-mirroring' />
+                                                <parameter name='api-action' value='disable' />
+                                                <parameter name='resp-prefix' value='contrailResp' />
+                                                <parameter name='display-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+                                                <parameter name='default-domain' value='default-domain' />
+                                                <parameter name='default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                                                <parameter name='cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                                                <parameter name='cloud-owner'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+                                            </execute>
+                                        </outcome>
+                                    </switch>
+                                    <switch test="`$l-interface-set[$src-idx] == 'true'`">
+                                        <outcome value='true'>
+                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+   resource="l-interface"
+   key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+   force="true" pfx="tmp.AnAI-data">
+                                                <parameter name="is-port-mirrored" value="false" />
+                                            </update>
+                                        </outcome>
+                                    </switch>
+                                </block>
+                            </for>
+                            <block atomic="true">
+                                <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                    <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                    <parameter name="input.ack-final-indicator" value="Y" />
+                                    <parameter name="input.response-code" value="500" />
+                                    <parameter name="input.response-message" value="`$error-message`" />
+                                    <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                    <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                    <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                                </configure>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="`'$error-message'`" />
+                                </return>
+                            </block>
+                        </block>
+                    </block>
+                </outcome>
+                <outcome value='failure'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name="error-message" value="Failure updating configuration object in AAI" />
+                        </set>
+                        <block atomic="true">
+                            <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+                                <block atomic="true">
+                                    <switch test="`$contrail-set[$src-idx] == 'true'`">
+                                        <outcome value='true'>
+                                            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                                                <parameter name='api-name' value='port-mirroring' />
+                                                <parameter name='api-action' value='disable' />
+                                                <parameter name='resp-prefix' value='contrailResp' />
+                                                <parameter name='display-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+                                                <parameter name='default-domain' value='default-domain' />
+                                                <parameter name='default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                                                <parameter name='cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                                                <parameter name='cloud-owner'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+                                            </execute>
+                                        </outcome>
+                                    </switch>
+                                    <switch test="`$l-interface-set[$src-idx] == 'true'`">
+                                        <outcome value='true'>
+                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+   resource="l-interface"
+   key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+   force="true" pfx="tmp.AnAI-data">
+                                                <parameter name="is-port-mirrored" value="false" />
+                                            </update>
+                                        </outcome>
+                                    </switch>
+                                </block>
+                            </for>
+                            <block atomic="true">
+                                <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                    <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                    <parameter name="input.ack-final-indicator" value="Y" />
+                                    <parameter name="input.response-code" value="500" />
+                                    <parameter name="input.response-message" value="`$error-message`" />
+                                    <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                    <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                    <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                                </configure>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="`'$error-message'`" />
+                                </return>
+                            </block>
+                        </block>
+                    </block>
+                </outcome>
+            </update>
+            <set>
+                <parameter name='pm.configuration-data.configuration-oper-status.order-status'
+  value='Active' />
+                <parameter name='pm.configuration-data.configuration-oper-status.last-action'
+  value='`$port-mirror-topology-operation-input.request-information.request-action`' />
+                <parameter name='pm.configuration-data.configuration-oper-status.last-rpc-action'
+  value='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.portmirrorconfig.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name="responsePrefix" value="mdsal-pmc" />
+                <outcome value='success'>
+                    <block></block>
+                </outcome>
+                <outcome value='failure'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name="error-message" value="Error updating md-sal for port-mirror-configuration" />
+                        </set>
+                        <block atomic="true">
+                            <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+                                <block atomic="true">
+                                    <switch test="`$contrail-set[$src-idx] == 'true'`">
+                                        <outcome value='true'>
+                                            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                                                <parameter name='api-name' value='port-mirroring' />
+                                                <parameter name='api-action' value='disable' />
+                                                <parameter name='resp-prefix' value='contrailResp' />
+                                                <parameter name='display-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+                                                <parameter name='default-domain' value='default-domain' />
+                                                <parameter name='default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                                                <parameter name='cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                                                <parameter name='cloud-owner'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+                                            </execute>
+                                        </outcome>
+                                    </switch>
+                                    <switch test="`$l-interface-set[$src-idx] == 'true'`">
+                                        <outcome value='true'>
+                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+   resource="l-interface"
+   key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+   force="true" pfx="tmp.AnAI-data">
+                                                <parameter name="is-port-mirrored" value="false" />
+                                            </update>
+                                        </outcome>
+                                    </switch>
+                                </block>
+                            </for>
+                            <block atomic="true">
+                                <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                    <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                    <parameter name="input.ack-final-indicator" value="Y" />
+                                    <parameter name="input.response-code" value="500" />
+                                    <parameter name="input.response-message" value="`$error-message`" />
+                                    <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                    <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                    <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                                </configure>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="`'$error-message'`" />
+                                </return>
+                            </block>
+                        </block>
+                    </block>
+                </outcome>
+                <outcome value='not-found'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name="error-message" value="Error updating md-sal for port-mirror-configuration" />
+                        </set>
+                        <block atomic="true">
+                            <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+                                <block atomic="true">
+                                    <switch test="`$contrail-set[$src-idx] == 'true'`">
+                                        <outcome value='true'>
+                                            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                                                <parameter name='api-name' value='port-mirroring' />
+                                                <parameter name='api-action' value='disable' />
+                                                <parameter name='resp-prefix' value='contrailResp' />
+                                                <parameter name='display-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+                                                <parameter name='default-domain' value='default-domain' />
+                                                <parameter name='default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                                                <parameter name='cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                                                <parameter name='cloud-owner'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+                                            </execute>
+                                        </outcome>
+                                    </switch>
+                                    <switch test="`$l-interface-set[$src-idx] == 'true'`">
+                                        <outcome value='true'>
+                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+   resource="l-interface"
+   key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+   force="true" pfx="tmp.AnAI-data">
+                                                <parameter name="is-port-mirrored" value="false" />
+                                            </update>
+                                        </outcome>
+                                    </switch>
+                                </block>
+                            </for>
+                            <block atomic="true">
+                                <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                    <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                    <parameter name="input.ack-final-indicator" value="Y" />
+                                    <parameter name="input.response-code" value="500" />
+                                    <parameter name="input.response-message" value="`$error-message`" />
+                                    <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                    <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                    <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                                </configure>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="`'$error-message'`" />
+                                </return>
+                            </block>
+                        </block>
+                    </block>
+                </outcome>
+            </execute>
+            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                <parameter name="input.ack-final-indicator" value="Y" />
+                <parameter name="input.response-code" value="200" />
+                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+            </configure>
+            <return status='success'>
+                <parameter name='error-code' value='200' />
+            </return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-sync.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-sync.xml
new file mode 100644
index 0000000..d95950e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-activate-sync.xml
@@ -0,0 +1,57 @@
+<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='port-mirror-topology-operation-activate-sync' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.pm.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+                <parameter name="outputPath" value="tmp.pmc-url"/>
+                <parameter name="target" value="{configuration-id}"/>
+                <parameter name="replacement" value="`$tmp.pm.configuration-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-pmc" />
+                <outcome value='success'>
+                    <switch test='`$mdsal-pmc.port-mirror-configuration_length == 1`'>
+                        <outcome value='false'>
+                            <return status='failure'>
+                                <parameter name='error-code' value='500' />
+                                <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.pm.configuration-id`" />
+                            </return>
+                        </outcome>
+                    </switch>
+                </outcome>
+                <outcome value='Other'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.pm.configuration-id`" />
+                    </return>
+                </outcome>
+            </execute>
+            <switch test="`$mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Created'`">
+                <outcome value='false'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Created'`" />
+                    </return>
+                </outcome>
+            </switch>
+            <return status='success'>
+                <parameter name='error-code' value='200' />
+                <parameter name='ack-final' value='N' />
+            </return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-async.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-async.xml
new file mode 100755
index 0000000..edb5557
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-async.xml
@@ -0,0 +1,2253 @@
+<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='port-mirror-topology-operation-assign-async' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />

+                <parameter name='tmp.src-vnf-id' value='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.vnf-information.vnf-id`' />

+                <parameter name='tmp.dest-vnf-id' value='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.dest-port.vnf-information.vnf-id`' />

+                <parameter name='tmp.dest-pnf-name' value='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.dest-port.pnf-information.pnf-name`' />

+                <parameter name='tmp.service-instance-id' value='`$port-mirror-topology-operation-input.service-information.service-instance-id`' />

+                <parameter name='tmp.configuration-sub-type' value='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`' />

+            </set>

+            <set>

+                <parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />

+                <parameter name='pm.configuration-data.configuration-operation-information.sdnc-request-header.'

+  value='`$port-mirror-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='pm.configuration-data.configuration-operation-information.request-information.'

+  value='`$port-mirror-topology-operation-input.request-information.`' />

+                <parameter name='pm.configuration-data.configuration-operation-information.service-information.'

+  value='`$port-mirror-topology-operation-input.service-information.`' />

+                <parameter name='pm.configuration-data.configuration-operation-information.configuration-information.'

+  value='`$port-mirror-topology-operation-input.configuration-information.`' />

+                <parameter name='pm.configuration-data.configuration-operation-information.port-mirror-configuration-request-input.'

+  value='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.`' />

+            </set>

+            <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.resource.sql.SqlResource' resource='SQL'

+  key='select role,nfc_naming_code,pps_capacity,network_role,policy_name

+    from PORT_MIRROR_CAPABILITY cap, PORT_MIRROR_CONFIGURATION conf, SERVICE_PROXY sp

+    where cap.port_mirror_capability_name=conf.port_mirror_capability_name

+     and cap.port_mirror_service_uuid=conf.port_mirror_service_uuid

+     and cap.service_proxy_name=conf.service_proxy_name

+     and cap.service_proxy_name=sp.service_proxy_name

+     and cap.port_mirror_service_uuid=sp.parent_service_uuid

+     and conf.customization_uuid = $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid

+     and conf.port_mirror_service_uuid = $service-data.service-information.onap-model-information.model-uuid

+    order by role'

+  pfx='db.cap[]'>

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Error reading PORT_MIRROR_CONFIGURATION table" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Error reading PORT_MIRROR_CONFIGURATION table" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </get-resource>

+            <for index='cap-idx' start='0' end='`$db.cap_length`' >

+                <switch test='`$db.cap[$cap-idx].role`'>

+                    <outcome value='source'>

+                        <set>

+                            <parameter name='tmp.src-pps' value='`$db.cap[$cap-idx].pps-capacity`' />

+                            <parameter name='tmp.src-nfc-naming-code' value='`$db.cap[$cap-idx].nfc-naming-code`' />

+                            <parameter name='tmp.src-network-role' value='`$db.cap[$cap-idx].network-role`' />

+                        </set>

+                    </outcome>

+                    <outcome value='collector'>

+                        <set>

+                            <parameter name='tmp.dest-pps' value='`$db.cap[$cap-idx].pps-capacity`' />

+                            <parameter name='tmp.dest-nfc-naming-code' value='`$db.cap[$cap-idx].nfc-naming-code`' />

+                            <parameter name='tmp.dest-network-role' value='`$db.cap[$cap-idx].network-role`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="replace">

+                <parameter name="source" value="`$tmp.src-nfc-naming-code`" />

+                <parameter name="target" value=" " />

+                <parameter name="replacement" value="%20" />

+                <parameter name="outputPath" value="tmp.encoded-src-nfc-naming-code" />

+            </execute>

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="replace">

+                <parameter name="source" value="`$tmp.dest-nfc-naming-code`" />

+                <parameter name="target" value=" " />

+                <parameter name="replacement" value="%20" />

+                <parameter name="outputPath" value="tmp.encoded-dest-nfc-naming-code" />

+            </execute>

+            <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group_length`'>

+                <outcome value=''>

+                    <switch test='`$tmp.configuration-sub-type`'>

+                        <outcome value='vprobe'>

+                            <set>

+                                <parameter name='tmp.src-vnfc-idx' value='0' />

+                                <parameter name='tmp.dest-vnfc-idx' value='1' />

+                            </set>

+                        </outcome>

+                        <outcome value='pprobe'>

+                            <set>

+                                <parameter name='tmp.src-vnfc-idx' value='0' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <for index='vnfc-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group_length`' >

+                            <block atomic="true">

+                                <switch test="`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].instance-group-role == $tmp.src-network-role`">

+                                    <outcome value='true'>

+                                        <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].nfc-naming-code == $tmp.src-nfc-naming-code`'>

+                                            <outcome value='true'>

+                                                <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].configuration-id == $tmp.configuration-id`'>

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name="error-message" value="`'Source nfc-naming-code of ' + $tmp.src-nfc-naming-code + ' already exists in vnfc-instance-groups for this configuration-id'`" />

+                                                            </set>

+                                                            <block>

+                                                                <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                                                    <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                                                    <parameter name="input.ack-final-indicator" value="Y" />

+                                                                    <parameter name="input.response-code" value="500" />

+                                                                    <parameter name="input.response-message" value="`$error-message`" />

+                                                                    <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                                                    <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                                                    <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                                                </configure>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                        </switch>

+                                    </outcome>

+                                </switch>

+                                <switch test="`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].instance-group-role == $tmp.dest-network-role`">

+                                    <outcome value='true'>

+                                        <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].nfc-naming-code == $tmp.dest-nfc-naming-code`'>

+                                            <outcome value='true'>

+                                                <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$vnfc-idx].configuration-id == $tmp.configuration-id`'>

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name="error-message" value="`'Dest nfc-naming-code of ' + $tmp.dest-nfc-naming-code + ' already exists in vnfc-instance-groups for this configuration-id'`" />

+                                                            </set>

+                                                            <block>

+                                                                <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                                                    <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                                                    <parameter name="input.ack-final-indicator" value="Y" />

+                                                                    <parameter name="input.response-code" value="500" />

+                                                                    <parameter name="input.response-message" value="`$error-message`" />

+                                                                    <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                                                    <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                                                    <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                                                </configure>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                        </switch>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                        <switch test='`$tmp.configuration-sub-type`'>

+                            <outcome value='vprobe'>

+                                <set>

+                                    <parameter name='tmp.src-vnfc-idx' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length`' />

+                                    <parameter name='tmp.dest-vnfc-idx' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length + 1`' />

+                                    <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group_length' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length + 2`'/>

+                                </set>

+                            </outcome>

+                            <outcome value='pprobe'>

+                                <set>

+                                    <parameter name='tmp.src-vnfc-idx' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length`' />

+                                    <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group_length' value='`$service-data.vnfc-instance-groups.vnfc-instance-group_length + 1`'/>

+                                </set>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource'"

+      force="true"

+      local-only="false"

+      pfx="tmp.AnAI-data.oe">

+                <parameter name="start[0]" value="`'nodes/service-instances/service-instance?service-instance-id=' + $tmp.service-instance-id `" />

+                <parameter name="start_length" value="1" />

+                <parameter name="query" value="/query/owning-entity-fromService-instance" />

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Failed call to AAI custom query: owning-entity-fromService-instance" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="No owning entity returned from AAI: owning-entity-fromService-instance" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='success'>

+                    <set>

+                        <parameter name='tmp.owning-entity' value='`$tmp.AnAI-data.oe.results[0].owning-entity.owning-entity-id`' />

+                    </set>

+                </outcome>

+            </save>

+            <switch test='`$tmp.owning-entity`'>

+                <outcome value=''>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Failed call to retrieve owning-entity from AAI" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.owning-entity' value='`$tmp.owning-entity`' />

+            </set>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource&amp;nodesOnly=true'"

+      force="true"

+      local-only="false"

+      pfx="tmp.AnAI-data.vnf">

+                <parameter name="start[0]" value="`'/network/generic-vnfs/generic-vnf/' + $tmp.src-vnf-id `" />

+                <parameter name="start_length" value="1" />

+                <parameter name="query" value="query/cloud-region-fromVnf" />

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Failed call to AAI custom query: cloud-region-fromVnf" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="No cloud region returned from AAI: cloud-region-fromVnf" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </save>

+            <for index='result-idx' start='0' end='`$tmp.AnAI-data.vnf.results_length`' >

+                <block atomic="true">

+                    <switch test='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-name`'>

+                        <outcome value=''>

+                            <block></block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name='tmp.tenant' value='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-name`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-id`'>

+                        <outcome value=''>

+                            <block></block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name='tmp.tenant-id' value='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-id`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-context`'>

+                        <outcome value=''>

+                            <block></block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name='tmp.tenant-context' value='`$tmp.AnAI-data.vnf.results[$result-idx].tenant.tenant-context`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test='`$tmp.AnAI-data.vnf.results[$result-idx].cloud-region.cloud-owner`'>

+                        <outcome value=''>

+                            <block></block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name='tmp.cloud-owner' value='`$tmp.AnAI-data.vnf.results[$result-idx].cloud-region.cloud-owner`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test='`$tmp.AnAI-data.vnf.results[$result-idx].cloud-region.cloud-region-id`'>

+                        <outcome value=''>

+                            <block></block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name='tmp.cloud-region-id' value='`$tmp.AnAI-data.vnf.results[$result-idx].cloud-region.cloud-region-id`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <switch test='`$tmp.tenant`'>

+                <outcome value=''>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Failed call to retrieve source tenant from AAI" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$tmp.tenant-id`'>

+                <outcome value=''>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Failed call to retrieve source tenant-id from AAI" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$tmp.cloud-region-id`'>

+                <outcome value=''>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Failed call to retrieve tenant from AAI" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$tmp.cloud-owner`'>

+                <outcome value=''>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Failed call to retrieve tenant from AAI" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$tmp.configuration-sub-type`'>

+                <outcome value='vprobe'>

+                    <block atomic="true">

+                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource&amp;nodesOnly=true'"

+      force="true"

+      local-only="false"

+      pfx="tmp.AnAI-data.dest-vnf">

+                            <parameter name="start[0]" value="`'/network/generic-vnfs/generic-vnf/' + $tmp.dest-vnf-id `" />

+                            <parameter name="start_length" value="1" />

+                            <parameter name="query" value="query/cloud-region-fromVnf" />

+                            <outcome value='failure'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Failed call to AAI custom query: cloud-region-fromVnf, for destination vnf" />

+                                    </set>

+                                    <block>

+                                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                            <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                            <parameter name="input.ack-final-indicator" value="Y" />

+                                            <parameter name="input.response-code" value="500" />

+                                            <parameter name="input.response-message" value="`$error-message`" />

+                                            <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                            <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                            <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                        </configure>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="No cloud region returned from AAI: cloud-region-fromVnf, for destination vnf" />

+                                    </set>

+                                    <block>

+                                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                            <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                            <parameter name="input.ack-final-indicator" value="Y" />

+                                            <parameter name="input.response-code" value="500" />

+                                            <parameter name="input.response-message" value="`$error-message`" />

+                                            <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                            <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                            <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                        </configure>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </save>

+                        <for index='result-idx' start='0' end='`$tmp.AnAI-data.dest-vnf.results_length`' >

+                            <switch test='`$tmp.AnAI-data.dest-vnf.results[$result-idx].tenant.tenant-name`'>

+                                <outcome value=''>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <set>

+                                        <parameter name='tmp.dest-tenant' value='`$tmp.AnAI-data.dest-vnf.results[$result-idx].tenant.tenant-name`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test='`$tmp.AnAI-data.dest-vnf.results[$result-idx].tenant.tenant-id`'>

+                                <outcome value=''>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <set>

+                                        <parameter name='tmp.dest-tenant-id' value='`$tmp.AnAI-data.dest-vnf.results[$result-idx].tenant.tenant-id`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$tmp.dest-tenant`'>

+                            <outcome value=''>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Failed call to retrieve destination tenant from AAI" />

+                                    </set>

+                                    <block>

+                                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                            <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                            <parameter name="input.ack-final-indicator" value="Y" />

+                                            <parameter name="input.response-code" value="500" />

+                                            <parameter name="input.response-message" value="`$error-message`" />

+                                            <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                            <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                            <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                        </configure>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <switch test='`$tmp.dest-tenant-id`'>

+                            <outcome value=''>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Failed call to retrieve destination tenant-id from AAI" />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner'

+  value='`$tmp.cloud-owner`' />

+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id'

+  value='`$tmp.cloud-region-id`' />

+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant'

+  value='`$tmp.tenant`' />

+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id'

+  value='`$tmp.tenant-id`' />

+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-tenant'

+  value='`$tmp.dest-tenant`' />

+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-tenant-id'

+  value='`$tmp.dest-tenant-id`' />

+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-context'

+  value='`$tmp.tenant-context`' />

+            </set>

+            <switch test='`$tmp.configuration-sub-type`'>

+                <outcome value='pprobe'>

+                    <block atomic="true">

+                        <call module='GENERIC-RESOURCE-API' rpc='port-mirror-get-policy' mode='sync' >

+                            <outcome value='failure'>

+                                <block>

+                                    <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                        <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                        <parameter name="input.ack-final-indicator" value="Y" />

+                                        <parameter name="input.response-code" value="500" />

+                                        <parameter name="input.response-message" value="`$error-message`" />

+                                        <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                        <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                        <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                    </configure>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="`$error-message`" />

+                                    </return>

+                                </block>

+                            </outcome>

+                        </call>

+                    </block>

+                </outcome>

+            </switch>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource'"

+      force="true"

+      local-only="false"

+      pfx="tmp.AnAI-data.src-network">

+                <parameter name="start[0]" value="`'/cloud-infrastructure/cloud-regions/cloud-region/' + $tmp.cloud-owner + '/'  + $tmp.cloud-region-id`" />

+                <parameter name="start_length" value="1" />

+                <parameter name="query" value="`'/query/network-name-fromNetwork-role?networkRole='  + $tmp.src-network-role`" />

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Failed call to AAI custom query: network-name-fromNetwork-role" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="No network information returned from AAI: network-name-fromNetwork-role" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </save>

+            <switch test='`$tmp.configuration-sub-type`'>

+                <outcome value='vprobe'>

+                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource'"

+      force="true"

+      local-only="false"

+      pfx="tmp.AnAI-data.dest-network">

+                        <parameter name="start[0]" value="`'/cloud-infrastructure/cloud-regions/cloud-region/' + $tmp.cloud-owner + '/'  + $tmp.cloud-region-id`" />

+                        <parameter name="start_length" value="1" />

+                        <parameter name="query" value="`'/query/network-name-fromNetwork-role?networkRole='  + $tmp.dest-network-role`" />

+                        <outcome value='failure'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="error-message" value="Failed call to AAI custom query: network-name-fromNetwork-role" />

+                                </set>

+                                <block>

+                                    <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                        <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                        <parameter name="input.ack-final-indicator" value="Y" />

+                                        <parameter name="input.response-code" value="500" />

+                                        <parameter name="input.response-message" value="`$error-message`" />

+                                        <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                        <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                        <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                    </configure>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="`$error-message`" />

+                                    </return>

+                                </block>

+                            </block>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="error-message" value="No network information returned from AAI: network-name-fromNetwork-role" />

+                                </set>

+                                <block>

+                                    <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                        <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                        <parameter name="input.ack-final-indicator" value="Y" />

+                                        <parameter name="input.response-code" value="500" />

+                                        <parameter name="input.response-message" value="`$error-message`" />

+                                        <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                        <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                        <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                    </configure>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="`$error-message`" />

+                                    </return>

+                                </block>

+                            </block>

+                        </outcome>

+                    </save>

+                </outcome>

+            </switch>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource'"

+      force="true"

+      local-only="false"

+      pfx="tmp.AnAI-data.src-li">

+                <parameter value="`'/network/generic-vnfs/generic-vnf/' + $tmp.src-vnf-id`" name="start[0]"/>

+                <parameter value="1" name="start_length"/>

+                <parameter value="`'/query/vserver-fromVnf?nfcNamingCode=' + $tmp.encoded-src-nfc-naming-code`" name="query"/>

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Failed call to AAI custom query vserver-fromVnf for source vnf" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="No interface data returned from AAI vserver-fromVnf for source vnf" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </save>

+            <switch test='`$tmp.configuration-sub-type`'>

+                <outcome value='vprobe'>

+                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource'"

+      force="true"

+      local-only="false"

+      pfx="tmp.AnAI-data.dest-li">

+                        <parameter value="`'/network/generic-vnfs/generic-vnf/' + $tmp.dest-vnf-id`" name="start[0]"/>

+                        <parameter value="1" name="start_length"/>

+                        <parameter value="`'/query/vserver-fromVnf?nfcNamingCode=' + $tmp.encoded-dest-nfc-naming-code`" name="query"/>

+                        <outcome value='failure'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="error-message" value="Failed call to AAI custom query vserver-fromVnf for dest vnf" />

+                                </set>

+                                <block>

+                                    <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                        <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                        <parameter name="input.ack-final-indicator" value="Y" />

+                                        <parameter name="input.response-code" value="500" />

+                                        <parameter name="input.response-message" value="`$error-message`" />

+                                        <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                        <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                        <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                    </configure>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="`$error-message`" />

+                                    </return>

+                                </block>

+                            </block>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="error-message" value="No interface data returned from AAI vserver-fromVnf for dest vnf" />

+                                </set>

+                                <block>

+                                    <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                        <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                        <parameter name="input.ack-final-indicator" value="Y" />

+                                        <parameter name="input.response-code" value="500" />

+                                        <parameter name="input.response-message" value="`$error-message`" />

+                                        <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                        <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                        <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                    </configure>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="`$error-message`" />

+                                    </return>

+                                </block>

+                            </block>

+                        </outcome>

+                    </save>

+                </outcome>

+            </switch>

+            <switch test='`$tmp.configuration-sub-type`'>

+                <outcome value='vprobe'>

+                    <set>

+                        <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].instance-group-role'

+  value='`$tmp.src-network-role`'/>

+                        <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].nfc-naming-code'

+  value='`$tmp.src-nfc-naming-code`'/>

+                        <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].group-type'

+  value='port-mirror-source'/>

+                        <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].configuration-id'

+  value='`$tmp.configuration-id`'/>

+                        <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].instance-group-role'

+  value='`$tmp.dest-network-role`'/>

+                        <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].nfc-naming-code'

+  value='`$tmp.dest-nfc-naming-code`'/>

+                        <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].group-type'

+  value='port-mirror-dest'/>

+                        <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].configuration-id'

+  value='`$tmp.configuration-id`'/>

+                    </set>

+                </outcome>

+                <outcome value='pprobe'>

+                    <set>

+                        <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].instance-group-role'

+  value='`$tmp.src-network-role`'/>

+                        <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].nfc-naming-code'

+  value='`$tmp.src-nfc-naming-code`'/>

+                        <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].group-type'

+  value='port-mirror-source'/>

+                        <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].configuration-id'

+  value='`$tmp.configuration-id`'/>

+                    </set>

+                </outcome>

+            </switch>

+            <switch test='`$tmp.configuration-sub-type`'>

+                <outcome value='vprobe'>

+                    <set>

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.nfc-naming-code'

+  value='`$tmp.src-nfc-naming-code`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.instance-group-role'

+  value='`$tmp.src-network-role`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.service-instance-id'

+  value='`$tmp.service-instance-id`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.configuration-id'

+  value='`$tmp.configuration-id`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnf-id'

+  value='`$tmp.src-vnf-id`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-capacity'

+  value='`$tmp.src-pps`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnfc-instance-group-id.nfc-naming-code'

+  value='`$tmp.dest-nfc-naming-code`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnfc-instance-group-id.instance-group-role'

+  value='`$tmp.dest-network-role`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnfc-instance-group-id.service-instance-id'

+  value='`$tmp.service-instance-id`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnfc-instance-group-id.configuration-id'

+  value='`$tmp.configuration-id`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-vnf-id'

+  value='`$tmp.dest-vnf-id`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type'

+  value='vprobe' />

+                    </set>

+                </outcome>

+                <outcome value='pprobe'>

+                    <set>

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.nfc-naming-code'

+  value='`$tmp.src-nfc-naming-code`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.instance-group-role'

+  value='`$tmp.src-network-role`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.service-instance-id'

+  value='`$tmp.service-instance-id`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnfc-instance-group-id.configuration-id'

+  value='`$tmp.configuration-id`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-vnf-id'

+  value='`$tmp.src-vnf-id`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-capacity'

+  value='`$tmp.src-pps`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-pnf-name'

+  value='`$tmp.dest-pnf-name`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-p-interface'

+  value='`$tmp.dest-p-interface`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-pnf-port-policy-name'

+  value='`$db.cap[0].policy-name`' />

+                        <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type'

+  value='pprobe' />

+                    </set>

+                </outcome>

+            </switch>

+            <for index='src-nw-idx' start='0' end='`$tmp.AnAI-data.src-network.results_length`' >

+                <switch test='`$tmp.AnAI-data.src-network.results[$src-nw-idx].l3-network.network-name`'>

+                    <outcome value=''>

+                        <block atomic="true"></block>

+                    </outcome>

+                    <outcome value='Other'>

+                        <switch test='`$tmp.src-network-name`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='tmp.src-network-name' value='`$tmp.AnAI-data.src-network.results[$src-nw-idx].l3-network.network-name`' />

+                                    <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-network-fqdn'

+  value='`$tmp.AnAI-data.src-network.results[$src-nw-idx].l3-network.contrail-network-fqdn`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="`'More than one l3-network returned from AAI for network-role ' + $tmp.src-network-role`" />

+                                    </set>

+                                    <block>

+                                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                            <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                            <parameter name="input.ack-final-indicator" value="Y" />

+                                            <parameter name="input.response-code" value="500" />

+                                            <parameter name="input.response-message" value="`$error-message`" />

+                                            <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                            <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                            <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                        </configure>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$tmp.src-network-name`'>

+                <outcome value=''>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Cannot determine source network name from AAI data" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$tmp.configuration-sub-type`'>

+                <outcome value='vprobe'>

+                    <block atomic="true">

+                        <for index='dest-nw-idx' start='0' end='`$tmp.AnAI-data.dest-network.results_length`' >

+                            <switch test='`$tmp.AnAI-data.dest-network.results[$dest-nw-idx].l3-network.network-name`'>

+                                <outcome value=''>

+                                    <block atomic="true"></block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <switch test='`$tmp.dest-network-name`'>

+                                        <outcome value=''>

+                                            <set>

+                                                <parameter name='tmp.dest-network-name' value='`$tmp.AnAI-data.dest-network.results[$dest-nw-idx].l3-network.network-name`' />

+                                                <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn'

+  value='`$tmp.AnAI-data.dest-network.results[$dest-nw-idx].l3-network.contrail-network-fqdn`' />

+                                            </set>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name="error-message" value="`'More than one l3-network returned from AAI for network-role ' + $tmp.dest-network-role`" />

+                                                </set>

+                                                <block>

+                                                    <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                                        <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                                        <parameter name="input.ack-final-indicator" value="Y" />

+                                                        <parameter name="input.response-code" value="500" />

+                                                        <parameter name="input.response-message" value="`$error-message`" />

+                                                        <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                                        <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                                        <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                                    </configure>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="`$error-message`" />

+                                                    </return>

+                                                </block>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$tmp.dest-network-name`'>

+                            <outcome value=''>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Cannot determine dest network name from AAI data" />

+                                    </set>

+                                    <block>

+                                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                            <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                            <parameter name="input.ack-final-indicator" value="Y" />

+                                            <parameter name="input.response-code" value="500" />

+                                            <parameter name="input.response-message" value="`$error-message`" />

+                                            <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                            <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                            <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                        </configure>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-create-vnfcs' mode='sync' >

+                <outcome value='failure'>

+                    <block>

+                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                            <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                            <parameter name="input.ack-final-indicator" value="Y" />

+                            <parameter name="input.response-code" value="500" />

+                            <parameter name="input.response-message" value="`$error-message`" />

+                            <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                            <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                            <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                        </configure>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`$error-message`" />

+                        </return>

+                    </block>

+                </outcome>

+            </call>

+            <switch test='`$tmp.configuration-sub-type`'>

+                <outcome value='vprobe'>

+                    <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-mapping-vprobe' mode='sync' >

+                        <outcome value='failure'>

+                            <block>

+                                <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                    <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                    <parameter name="input.ack-final-indicator" value="Y" />

+                                    <parameter name="input.response-code" value="500" />

+                                    <parameter name="input.response-message" value="`$error-message`" />

+                                    <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                    <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                    <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                </configure>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`$error-message`" />

+                                </return>

+                            </block>

+                        </outcome>

+                    </call>

+                </outcome>

+                <outcome value='pprobe'>

+                    <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-mapping-pprobe' mode='sync' >

+                        <outcome value='failure'>

+                            <block>

+                                <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                    <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                    <parameter name="input.ack-final-indicator" value="Y" />

+                                    <parameter name="input.response-code" value="500" />

+                                    <parameter name="input.response-message" value="`$error-message`" />

+                                    <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                    <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                    <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                </configure>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`$error-message`" />

+                                </return>

+                            </block>

+                        </outcome>

+                    </call>

+                </outcome>

+            </switch>

+            <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`'>

+                <outcome value=''>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="No usable source l-interfaces found in AAI data" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='0'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="No usable source l-interfaces found in AAI data" />

+                        </set>

+                        <block>

+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                <parameter name="input.ack-final-indicator" value="Y" />

+                                <parameter name="input.response-code" value="500" />

+                                <parameter name="input.response-message" value="`$error-message`" />

+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                            </configure>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$tmp.configuration-sub-type`'>

+                <outcome value='vprobe'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='cto-api.parent-service-instance-id' value='`$tmp.service-instance-id`' />

+                            <parameter name='cto-api.port-mirror-configuration-instance-id' value='`$tmp.configuration-id`' />

+                            <parameter name='cto-api.source-network-role' value='`$tmp.src-network-role`' />

+                            <parameter name='cto-api.collector-network-role' value='`$tmp.dest-network-role`' />

+                            <parameter name='cto-api.default-domain' value='default-domain' />

+                            <parameter name='cto-api.default-project' value='`$tmp.tenant`' />

+                            <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />

+                            <parameter name='cto-api.cloud-owner' value='`$tmp.cloud-owner`' />

+                            <parameter name='cto-api.service-type' value='`$port-mirror-topology-operation-input.service-information.subscription-service-type`' />

+                            <parameter name='cto-api.owning-entity' value='`$tmp.owning-entity`' />

+                        </set>

+                        <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-create' mode='sync' >

+                            <outcome value='failure'>

+                                <block>

+                                    <switch test='`$tmp.configuration-sub-type`'>

+                                        <outcome value='vprobe'>

+                                            <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>

+                                        </outcome>

+                                    </switch>

+                                    <block>

+                                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                            <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                            <parameter name="input.ack-final-indicator" value="Y" />

+                                            <parameter name="input.response-code" value="500" />

+                                            <parameter name="input.response-message" value="`$error-message`" />

+                                            <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                            <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                            <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                        </configure>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </call>

+                        <set>

+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.route-allotted-resource-id'

+  value='`$cto-api.contrail-route-allotted-instance-id`' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-name`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='tmp.configuration-name' value="`'PMC_' + $tmp.tenant + '_' + $tmp.cloud-region-id + '_' + $port-mirror-topology-operation-input.configuration-information.configuration-type + '_' + $tmp.configuration-id`" />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.configuration-name' value='`$port-mirror-topology-operation-input.configuration-information.configuration-name`' />

+                    </set>

+                </outcome>

+            </switch>

+            <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >

+                <block atomic="true">

+                    <set>

+                        <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id

+  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name

+  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />

+                    </set>

+                    <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">

+                        <parameter name="source" value="`$tmp.link-name`" />

+                        <parameter name="outputPath" value="tmp.encoded-link-name" />

+                    </execute>

+                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="logical-link" 

+	key="logical-link.link-name = $tmp.link-name" >

+                        <parameter name="link-name" value="`$tmp.link-name`" />

+                        <parameter name="in-maint" value="false" />

+                        <parameter name="link-type" value="port-mirror-configuration" />

+                        <outcome value='failure'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="error-message" value="`'Failed to create logical link ' + $tmp.link-name

+  + ' in AAI'`" />

+                                </set>

+                                <block>

+                                    <set>

+                                        <parameter name='cto-api.default-domain' value='default-domain' />

+                                        <parameter name='cto-api.default-project' value='`$tmp.tenant`' />

+                                        <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />

+                                        <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />

+                                        <parameter name='cto-api.rollback-flag' value='true' />

+                                        <parameter name='tmp.saved-error-message' value='`$error-message`' />

+                                    </set>

+                                    <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>

+                                    <set>

+                                        <parameter name='error-message' value='`$tmp.saved-error-message`' />

+                                    </set>

+                                    <block>

+                                        <switch test='`$tmp.configuration-sub-type`'>

+                                            <outcome value='vprobe'>

+                                                <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>

+                                            </outcome>

+                                        </switch>

+                                        <block>

+                                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                                <parameter name="input.ack-final-indicator" value="Y" />

+                                                <parameter name="input.response-code" value="500" />

+                                                <parameter name="input.response-message" value="`$error-message`" />

+                                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                            </configure>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="`$error-message`" />

+                                            </return>

+                                        </block>

+                                    </block>

+                                </block>

+                            </block>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="error-message" value="`'Failed to create logical link ' + $tmp.link-name

+  + ' in AAI'`" />

+                                </set>

+                                <block>

+                                    <set>

+                                        <parameter name='cto-api.default-domain' value='default-domain' />

+                                        <parameter name='cto-api.default-project' value='`$tmp.tenant`' />

+                                        <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />

+                                        <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />

+                                        <parameter name='cto-api.rollback-flag' value='true' />

+                                        <parameter name='tmp.saved-error-message' value='`$error-message`' />

+                                    </set>

+                                    <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>

+                                    <set>

+                                        <parameter name='error-message' value='`$tmp.saved-error-message`' />

+                                    </set>

+                                    <block>

+                                        <switch test='`$tmp.configuration-sub-type`'>

+                                            <outcome value='vprobe'>

+                                                <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>

+                                            </outcome>

+                                        </switch>

+                                        <block>

+                                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                                <parameter name="input.ack-final-indicator" value="Y" />

+                                                <parameter name="input.response-code" value="500" />

+                                                <parameter name="input.response-message" value="`$error-message`" />

+                                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                            </configure>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="`$error-message`" />

+                                            </return>

+                                        </block>

+                                    </block>

+                                </block>

+                            </block>

+                        </outcome>

+                    </save>

+                    <switch test='`$tmp.configuration-sub-type`'>

+                        <outcome value='vprobe'>

+                            <block atomic="true">

+                                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">

+                                    <parameter name="source" value="`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />

+                                    <parameter name="outputPath" value="tmp.encoded-source-port-name" />

+                                </execute>

+                                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">

+                                    <parameter name="source" value="`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />

+                                    <parameter name="outputPath" value="tmp.encoded-dest-port-name" />

+                                </execute>

+                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="logical-link:relationship-list"

+   key="logical-link.link-name = $tmp.link-name"

+   force="true" pfx="tmp.AnAI-data">

+                                    <parameter name="relationship-list.relationship[0].related-to" value="l-interface" />

+                                    <parameter name="relationship-list.relationship[0].relationship-label" value="org.onap.relationships.inventory.Source" />

+                                    <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/cloud-infrastructure/cloud-regions/cloud-region/'

+        + $tmp.cloud-owner + '/' + $tmp.cloud-region-id + '/tenants/tenant/'

+        + $tmp.tenant-id + '/vservers/vserver/' 

+        + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id

+        + '/l-interfaces/l-interface/'

+        + $tmp.encoded-source-port-name`" />

+                                    <parameter name="relationship-list.relationship[1].related-to" value="l-interface" />

+                                    <parameter name="relationship-list.relationship[1].relationship-label" value="org.onap.relationships.inventory.Destination" />

+                                    <parameter name="relationship-list.relationship[1].related-link"

+      value="`'/aai/v$/cloud-infrastructure/cloud-regions/cloud-region/'

+        + $tmp.cloud-owner + '/' + $tmp.cloud-region-id + '/tenants/tenant/'

+        + $tmp.dest-tenant-id + '/vservers/vserver/' 

+        + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-vserver-id

+        + '/l-interfaces/l-interface/'

+        + $tmp.encoded-dest-port-name`" />

+                                    <outcome value='failure'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="`'Failed creating relationships for logical link ' + $tmp.link-name

+  + ' in AAI'`" />

+                                            </set>

+                                            <block>

+                                                <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >

+                                                    <block>

+                                                        <set>

+                                                            <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id

+  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name

+  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />

+                                                        </set>

+                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="logical-link" 

+	key="logical-link.link-name = $tmp.link-name" ></delete>

+                                                    </block>

+                                                </for>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='cto-api.default-domain' value='default-domain' />

+                                                        <parameter name='cto-api.default-project' value='`$tmp.tenant`' />

+                                                        <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />

+                                                        <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />

+                                                        <parameter name='cto-api.rollback-flag' value='true' />

+                                                        <parameter name='tmp.saved-error-message' value='`$error-message`' />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>

+                                                    <set>

+                                                        <parameter name='error-message' value='`$tmp.saved-error-message`' />

+                                                    </set>

+                                                    <block>

+                                                        <switch test='`$tmp.configuration-sub-type`'>

+                                                            <outcome value='vprobe'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>

+                                                            </outcome>

+                                                        </switch>

+                                                        <block>

+                                                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                                                <parameter name="input.ack-final-indicator" value="Y" />

+                                                                <parameter name="input.response-code" value="500" />

+                                                                <parameter name="input.response-message" value="`$error-message`" />

+                                                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                                            </configure>

+                                                            <return status='failure'>

+                                                                <parameter name='ack-final' value='Y'/>

+                                                                <parameter name="error-code" value="500" />

+                                                                <parameter name="error-message" value="`$error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </block>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="`'Failed creating relationships for logical link ' + $tmp.link-name

+  + ' in AAI'`" />

+                                            </set>

+                                            <block>

+                                                <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >

+                                                    <block>

+                                                        <set>

+                                                            <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id

+  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name

+  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />

+                                                        </set>

+                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="logical-link" 

+	key="logical-link.link-name = $tmp.link-name" ></delete>

+                                                    </block>

+                                                </for>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='cto-api.default-domain' value='default-domain' />

+                                                        <parameter name='cto-api.default-project' value='`$tmp.tenant`' />

+                                                        <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />

+                                                        <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />

+                                                        <parameter name='cto-api.rollback-flag' value='true' />

+                                                        <parameter name='tmp.saved-error-message' value='`$error-message`' />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>

+                                                    <set>

+                                                        <parameter name='error-message' value='`$tmp.saved-error-message`' />

+                                                    </set>

+                                                    <block>

+                                                        <switch test='`$tmp.configuration-sub-type`'>

+                                                            <outcome value='vprobe'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>

+                                                            </outcome>

+                                                        </switch>

+                                                        <block>

+                                                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                                                <parameter name="input.ack-final-indicator" value="Y" />

+                                                                <parameter name="input.response-code" value="500" />

+                                                                <parameter name="input.response-message" value="`$error-message`" />

+                                                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                                            </configure>

+                                                            <return status='failure'>

+                                                                <parameter name='ack-final' value='Y'/>

+                                                                <parameter name="error-code" value="500" />

+                                                                <parameter name="error-message" value="`$error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </block>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                </save>

+                            </block>

+                        </outcome>

+                        <outcome value='pprobe'>

+                            <block atomic="true">

+                                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">

+                                    <parameter name="source" value="`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />

+                                    <parameter name="outputPath" value="tmp.encoded-source-port-name" />

+                                </execute>

+                                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">

+                                    <parameter name="source" value="`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />

+                                    <parameter name="outputPath" value="tmp.encoded-dest-port-name" />

+                                </execute>

+                                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="urlEncode">

+                                    <parameter name="source" value="`$tmp.dest-p-interface`" />

+                                    <parameter name="outputPath" value="tmp.encoded-dest-p-interface" />

+                                </execute>

+                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="logical-link:relationship-list"

+   key="logical-link.link-name = $tmp.link-name"

+   force="true" pfx="tmp.AnAI-data">

+                                    <parameter name="relationship-list.relationship[0].related-to" value="l-interface" />

+                                    <parameter name="relationship-list.relationship[0].relationship-label" value="org.onap.relationships.inventory.Source" />

+                                    <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/cloud-infrastructure/cloud-regions/cloud-region/'

+        + $tmp.cloud-owner + '/' + $tmp.cloud-region-id + '/tenants/tenant/'

+        + $tmp.tenant-id + '/vservers/vserver/' 

+        + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id

+        + '/l-interfaces/l-interface/'

+        + $tmp.encoded-source-port-name`" />

+                                    <parameter name="relationship-list.relationship[1].related-to" value="l-interface" />

+                                    <parameter name="relationship-list.relationship[1].relationship-label" value="org.onap.relationships.inventory.Destination" />

+                                    <parameter name="relationship-list.relationship[1].related-link"

+      value="`'/aai/v$/network/pnfs/pnf/'

+        + $tmp.dest-pnf-name + '/p-interfaces/p-interface/'

+        + $tmp.encoded-dest-p-interface + '/l-interfaces/l-interface/' 

+        + $tmp.encoded-dest-port-name`" />

+                                    <outcome value='failure'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="`'Failed creating relationships for logical link ' + $tmp.link-name

+  + ' in AAI'`" />

+                                            </set>

+                                            <block>

+                                                <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >

+                                                    <block>

+                                                        <set>

+                                                            <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id

+  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name

+  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />

+                                                        </set>

+                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="logical-link" 

+	key="logical-link.link-name = $tmp.link-name" ></delete>

+                                                    </block>

+                                                </for>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='cto-api.default-domain' value='default-domain' />

+                                                        <parameter name='cto-api.default-project' value='`$tmp.tenant`' />

+                                                        <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />

+                                                        <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />

+                                                        <parameter name='cto-api.rollback-flag' value='true' />

+                                                        <parameter name='tmp.saved-error-message' value='`$error-message`' />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>

+                                                    <set>

+                                                        <parameter name='error-message' value='`$tmp.saved-error-message`' />

+                                                    </set>

+                                                    <block>

+                                                        <switch test='`$tmp.configuration-sub-type`'>

+                                                            <outcome value='vprobe'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>

+                                                            </outcome>

+                                                        </switch>

+                                                        <block>

+                                                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                                                <parameter name="input.ack-final-indicator" value="Y" />

+                                                                <parameter name="input.response-code" value="500" />

+                                                                <parameter name="input.response-message" value="`$error-message`" />

+                                                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                                            </configure>

+                                                            <return status='failure'>

+                                                                <parameter name='ack-final' value='Y'/>

+                                                                <parameter name="error-code" value="500" />

+                                                                <parameter name="error-message" value="`$error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </block>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="`'Failed creating relationships for logical link ' + $tmp.link-name

+  + ' in AAI'`" />

+                                            </set>

+                                            <block>

+                                                <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >

+                                                    <block>

+                                                        <set>

+                                                            <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id

+  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name

+  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />

+                                                        </set>

+                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="logical-link" 

+	key="logical-link.link-name = $tmp.link-name" ></delete>

+                                                    </block>

+                                                </for>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='cto-api.default-domain' value='default-domain' />

+                                                        <parameter name='cto-api.default-project' value='`$tmp.tenant`' />

+                                                        <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />

+                                                        <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />

+                                                        <parameter name='cto-api.rollback-flag' value='true' />

+                                                        <parameter name='tmp.saved-error-message' value='`$error-message`' />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>

+                                                    <set>

+                                                        <parameter name='error-message' value='`$tmp.saved-error-message`' />

+                                                    </set>

+                                                    <block>

+                                                        <switch test='`$tmp.configuration-sub-type`'>

+                                                            <outcome value='vprobe'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>

+                                                            </outcome>

+                                                        </switch>

+                                                        <block>

+                                                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                                                <parameter name="input.ack-final-indicator" value="Y" />

+                                                                <parameter name="input.response-code" value="500" />

+                                                                <parameter name="input.response-message" value="`$error-message`" />

+                                                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                                            </configure>

+                                                            <return status='failure'>

+                                                                <parameter name='ack-final' value='Y'/>

+                                                                <parameter name="error-code" value="500" />

+                                                                <parameter name="error-message" value="`$error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </block>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                </save>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="configuration:relationship-list"

+   key="configuration.configuration-id = $tmp.configuration-id"

+   force="true" pfx="tmp.AnAI-data">

+                        <parameter name="relationship-list.relationship[0].related-to" value="logical-link" />

+                        <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/logical-links/logical-link/' + $tmp.encoded-link-name`" />

+                        <outcome value='failure'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="error-message" value="`'Failed creating logical-link relationship for configuration ' + $tmp.configuration-id

+  + ' in AAI'`" />

+                                </set>

+                                <block>

+                                    <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >

+                                        <block>

+                                            <set>

+                                                <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id

+  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name

+  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />

+                                            </set>

+                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="logical-link" 

+	key="logical-link.link-name = $tmp.link-name" ></delete>

+                                        </block>

+                                    </for>

+                                    <block>

+                                        <set>

+                                            <parameter name='cto-api.default-domain' value='default-domain' />

+                                            <parameter name='cto-api.default-project' value='`$tmp.tenant`' />

+                                            <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />

+                                            <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />

+                                            <parameter name='cto-api.rollback-flag' value='true' />

+                                            <parameter name='tmp.saved-error-message' value='`$error-message`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>

+                                        <set>

+                                            <parameter name='error-message' value='`$tmp.saved-error-message`' />

+                                        </set>

+                                        <block>

+                                            <switch test='`$tmp.configuration-sub-type`'>

+                                                <outcome value='vprobe'>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>

+                                                </outcome>

+                                            </switch>

+                                            <block>

+                                                <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                                    <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                                    <parameter name="input.ack-final-indicator" value="Y" />

+                                                    <parameter name="input.response-code" value="500" />

+                                                    <parameter name="input.response-message" value="`$error-message`" />

+                                                    <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                                    <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                                    <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                                </configure>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`$error-message`" />

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </block>

+                                </block>

+                            </block>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="error-message" value="`'Failed creating logical-link relationship for configuration ' + $tmp.configuration-id

+  + ' in AAI'`" />

+                                </set>

+                                <block>

+                                    <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >

+                                        <block>

+                                            <set>

+                                                <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id

+  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name

+  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />

+                                            </set>

+                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="logical-link" 

+	key="logical-link.link-name = $tmp.link-name" ></delete>

+                                        </block>

+                                    </for>

+                                    <block>

+                                        <set>

+                                            <parameter name='cto-api.default-domain' value='default-domain' />

+                                            <parameter name='cto-api.default-project' value='`$tmp.tenant`' />

+                                            <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />

+                                            <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />

+                                            <parameter name='cto-api.rollback-flag' value='true' />

+                                            <parameter name='tmp.saved-error-message' value='`$error-message`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>

+                                        <set>

+                                            <parameter name='error-message' value='`$tmp.saved-error-message`' />

+                                        </set>

+                                        <block>

+                                            <switch test='`$tmp.configuration-sub-type`'>

+                                                <outcome value='vprobe'>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>

+                                                </outcome>

+                                            </switch>

+                                            <block>

+                                                <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                                    <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                                    <parameter name="input.ack-final-indicator" value="Y" />

+                                                    <parameter name="input.response-code" value="500" />

+                                                    <parameter name="input.response-message" value="`$error-message`" />

+                                                    <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                                    <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                                    <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                                </configure>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`$error-message`" />

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </block>

+                                </block>

+                            </block>

+                        </outcome>

+                    </save>

+                </block>

+            </for>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="configuration"

+   key="configuration.configuration-id = $tmp.configuration-id"

+   force="true" pfx="tmp.AnAI-data">

+                <parameter name="configuration-name" value="`$tmp.configuration-name`" />

+                <parameter name="operational-status" value="out-of-service-path" />

+                <parameter name="configuration-selflink" value="`'/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/'

+  + $port-mirror-topology-operation-input.configuration-information.configuration-id + '/configuration-data/port-mirror-configuration-topology'`" />

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Unable to find configuration object in AAI" />

+                        </set>

+                        <block>

+                            <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >

+                                <block>

+                                    <set>

+                                        <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id

+  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name

+  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />

+                                    </set>

+                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="logical-link" 

+	key="logical-link.link-name = $tmp.link-name" ></delete>

+                                </block>

+                            </for>

+                            <block>

+                                <set>

+                                    <parameter name='cto-api.default-domain' value='default-domain' />

+                                    <parameter name='cto-api.default-project' value='`$tmp.tenant`' />

+                                    <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />

+                                    <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />

+                                    <parameter name='cto-api.rollback-flag' value='true' />

+                                    <parameter name='tmp.saved-error-message' value='`$error-message`' />

+                                </set>

+                                <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>

+                                <set>

+                                    <parameter name='error-message' value='`$tmp.saved-error-message`' />

+                                </set>

+                                <block>

+                                    <switch test='`$tmp.configuration-sub-type`'>

+                                        <outcome value='vprobe'>

+                                            <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>

+                                        </outcome>

+                                    </switch>

+                                    <block>

+                                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                            <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                            <parameter name="input.ack-final-indicator" value="Y" />

+                                            <parameter name="input.response-code" value="500" />

+                                            <parameter name="input.response-message" value="`$error-message`" />

+                                            <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                            <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                            <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                        </configure>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </block>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Failure updating configuration object in AAI" />

+                        </set>

+                        <block>

+                            <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >

+                                <block>

+                                    <set>

+                                        <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id

+  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name

+  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />

+                                    </set>

+                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="logical-link" 

+	key="logical-link.link-name = $tmp.link-name" ></delete>

+                                </block>

+                            </for>

+                            <block>

+                                <set>

+                                    <parameter name='cto-api.default-domain' value='default-domain' />

+                                    <parameter name='cto-api.default-project' value='`$tmp.tenant`' />

+                                    <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />

+                                    <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />

+                                    <parameter name='cto-api.rollback-flag' value='true' />

+                                    <parameter name='tmp.saved-error-message' value='`$error-message`' />

+                                </set>

+                                <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>

+                                <set>

+                                    <parameter name='error-message' value='`$tmp.saved-error-message`' />

+                                </set>

+                                <block>

+                                    <switch test='`$tmp.configuration-sub-type`'>

+                                        <outcome value='vprobe'>

+                                            <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>

+                                        </outcome>

+                                    </switch>

+                                    <block>

+                                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                            <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                            <parameter name="input.ack-final-indicator" value="Y" />

+                                            <parameter name="input.response-code" value="500" />

+                                            <parameter name="input.response-message" value="`$error-message`" />

+                                            <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                            <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                            <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                        </configure>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </block>

+                        </block>

+                    </block>

+                </outcome>

+            </update>

+            <switch test='`$tmp.configuration-sub-type`'>

+                <outcome value='vprobe'>

+                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="configuration:relationship-list"

+   key="configuration.configuration-id = $tmp.configuration-id"

+   force="true" pfx="tmp.AnAI-data">

+                        <parameter name="relationship-list.relationship[0].related-to" value="allotted-resource" />

+                        <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/business/customers/customer/' + $service-data.service-information.global-customer-id

+      + '/service-subscriptions/service-subscription/' + $port-mirror-topology-operation-input.service-information.subscription-service-type

+      + '/service-instances/service-instance/' + $tmp.service-instance-id

+	  + '/allotted-resources/allotted-resource/' + $cto-api.contrail-route-allotted-instance-id`" />

+                        <outcome value='failure'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="error-message" value="`'Failed creating logical-link relationship for configuration ' + $tmp.configuration-id

+  + ' in AAI'`" />

+                                </set>

+                                <block>

+                                    <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >

+                                        <block>

+                                            <set>

+                                                <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id

+  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name

+  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />

+                                            </set>

+                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="logical-link" 

+	key="logical-link.link-name = $tmp.link-name" ></delete>

+                                        </block>

+                                    </for>

+                                    <block>

+                                        <set>

+                                            <parameter name='cto-api.default-domain' value='default-domain' />

+                                            <parameter name='cto-api.default-project' value='`$tmp.tenant`' />

+                                            <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />

+                                            <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />

+                                            <parameter name='cto-api.rollback-flag' value='true' />

+                                            <parameter name='tmp.saved-error-message' value='`$error-message`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>

+                                        <set>

+                                            <parameter name='error-message' value='`$tmp.saved-error-message`' />

+                                        </set>

+                                        <block>

+                                            <switch test='`$tmp.configuration-sub-type`'>

+                                                <outcome value='vprobe'>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>

+                                                </outcome>

+                                            </switch>

+                                            <block>

+                                                <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                                    <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                                    <parameter name="input.ack-final-indicator" value="Y" />

+                                                    <parameter name="input.response-code" value="500" />

+                                                    <parameter name="input.response-message" value="`$error-message`" />

+                                                    <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                                    <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                                    <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                                </configure>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`$error-message`" />

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </block>

+                                </block>

+                            </block>

+                        </outcome>

+                    </save>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.configuration-id'

+  value='`$tmp.configuration-id`' />

+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.configuration-type'

+  value='`$port-mirror-topology-operation-input.configuration-information.configuration-type`' />

+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.configuration-sub-type'

+  value='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`' />

+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.parent-service-instance-id'

+  value='`$tmp.service-instance-id`' />

+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.configuration-identifiers.configuration-name'

+  value='`$tmp.configuration-name`' />

+            </set>

+            <switch test='`$service-data.provided-configurations.provided-configuration_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='tmp.provided-conf-idx' value='0' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.provided-conf-idx' value='`$service-data.provided-configurations.provided-configuration_length`' />

+                        <parameter name='service-data.provided-configurations.provided-configuration_length' value='`$tmp.provided-conf-idx + 1`' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='service-data.provided-configurations.provided-configuration[$tmp.provided-conf-idx].configuration-id'

+  value='`$tmp.configuration-id`' />

+                <parameter name='service-data.provided-configurations.provided-configuration[$tmp.provided-conf-idx].configuration-type'

+  value='`$port-mirror-topology-operation-input.configuration-information.configuration-type`' />

+                <parameter name='service-data.provided-configurations.provided-configuration[$tmp.provided-conf-idx].configuration-sub-type'

+  value='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`' />

+                <parameter name='service-data.provided-configurations.provided-configuration[$tmp.provided-conf-idx].configuration-topology-link'

+  value="`'restconf/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/' + $tmp.configuration-id + '/configuration-data/port-mirror-configuration-topology'`" />

+            </set>

+            <set>

+                <parameter name='pm.configuration-data.configuration-oper-status.order-status'

+  value='Created' />

+                <parameter name='pm.configuration-data.configuration-oper-status.last-action'

+  value='`$port-mirror-topology-operation-input.request-information.request-action`' />

+                <parameter name='pm.configuration-data.configuration-oper-status.last-rpc-action'

+  value='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.pm-configuration`"/>

+                <parameter name="outputPath" value="tmp.pmc-url"/>

+                <parameter name="target" value="{configuration-id}"/>

+                <parameter name="replacement" value="`$tmp.configuration-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.portmirrorconfig.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-pmc" />

+                <outcome value='success'>

+                    <block></block>

+                </outcome>

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Error updating md-sal for port-mirror-configuration" />

+                        </set>

+                        <block>

+                            <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >

+                                <block>

+                                    <set>

+                                        <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id

+  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name

+  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />

+                                    </set>

+                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="logical-link" 

+	key="logical-link.link-name = $tmp.link-name" ></delete>

+                                </block>

+                            </for>

+                            <block>

+                                <set>

+                                    <parameter name='cto-api.default-domain' value='default-domain' />

+                                    <parameter name='cto-api.default-project' value='`$tmp.tenant`' />

+                                    <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />

+                                    <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />

+                                    <parameter name='cto-api.rollback-flag' value='true' />

+                                    <parameter name='tmp.saved-error-message' value='`$error-message`' />

+                                </set>

+                                <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>

+                                <set>

+                                    <parameter name='error-message' value='`$tmp.saved-error-message`' />

+                                </set>

+                                <block>

+                                    <switch test='`$tmp.configuration-sub-type`'>

+                                        <outcome value='vprobe'>

+                                            <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>

+                                        </outcome>

+                                    </switch>

+                                    <block>

+                                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                            <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                            <parameter name="input.ack-final-indicator" value="Y" />

+                                            <parameter name="input.response-code" value="500" />

+                                            <parameter name="input.response-message" value="`$error-message`" />

+                                            <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                            <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                            <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                        </configure>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </block>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Error updating md-sal for port-mirror-configuration" />

+                        </set>

+                        <block>

+                            <for index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >

+                                <block>

+                                    <set>

+                                        <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id

+  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name

+  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />

+                                    </set>

+                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="logical-link" 

+	key="logical-link.link-name = $tmp.link-name" ></delete>

+                                </block>

+                            </for>

+                            <block>

+                                <set>

+                                    <parameter name='cto-api.default-domain' value='default-domain' />

+                                    <parameter name='cto-api.default-project' value='`$tmp.tenant`' />

+                                    <parameter name='cto-api.cloud-region-id' value='`$tmp.cloud-region-id`' />

+                                    <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />

+                                    <parameter name='cto-api.rollback-flag' value='true' />

+                                    <parameter name='tmp.saved-error-message' value='`$error-message`' />

+                                </set>

+                                <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' ></call>

+                                <set>

+                                    <parameter name='error-message' value='`$tmp.saved-error-message`' />

+                                </set>

+                                <block>

+                                    <switch test='`$tmp.configuration-sub-type`'>

+                                        <outcome value='vprobe'>

+                                            <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' ></call>

+                                        </outcome>

+                                    </switch>

+                                    <block>

+                                        <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                                            <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                                            <parameter name="input.ack-final-indicator" value="Y" />

+                                            <parameter name="input.response-code" value="500" />

+                                            <parameter name="input.response-message" value="`$error-message`" />

+                                            <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                                            <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                                            <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                                        </configure>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </block>

+                        </block>

+                    </block>

+                </outcome>

+            </execute>

+            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">

+                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                <parameter name="input.ack-final-indicator" value="Y" />

+                <parameter name="input.response-code" value="200" />

+                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />

+                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />

+            </configure>

+            <return status='success'>

+                <parameter name='error-code' value='200' />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-sync.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-sync.xml
new file mode 100755
index 0000000..2cdd98d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-assign-sync.xml
@@ -0,0 +1,124 @@
+<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='port-mirror-topology-operation-assign-sync' mode='sync'>

+        <block atomic="true">

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='select role,nfc_naming_code,pps_capacity

+    from PORT_MIRROR_CAPABILITY cap, PORT_MIRROR_CONFIGURATION conf, SERVICE_PROXY sp

+    where cap.port_mirror_capability_name=conf.port_mirror_capability_name

+     and cap.port_mirror_service_uuid=conf.port_mirror_service_uuid

+     and cap.service_proxy_name=conf.service_proxy_name

+     and cap.service_proxy_name=sp.service_proxy_name

+     and cap.port_mirror_service_uuid=sp.parent_service_uuid

+     and conf.customization_uuid = $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid

+     and conf.port_mirror_service_uuid = $service-data.service-information.onap-model-information.model-uuid

+    order by role'

+  pfx='db.cap[]'>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error reading PORT_MIRROR_CONFIGURATION and PORT_MIRROR_CAPABILITY tables" />

+                    </return>

+                </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="`'Unable to find PORT_MIRROR_CONFIGURATION entry for ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`'>

+                <outcome value='vprobe'>

+                    <block atomic="true">

+                        <switch test='`$db.cap_length == 2`'>

+                            <outcome value='false'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'PORT_MIRROR_CONFIGURATION does not contain exactly 2 entries for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test="`$db.cap[0].role == 'collector'`">

+                            <outcome value='false'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'No collector capability_role found for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test="`$db.cap[1].role == 'source'`">

+                            <outcome value='false'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'No source capability_role found for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='pprobe'>

+                    <block atomic="true">

+                        <switch test='`$db.cap_length == 1`'>

+                            <outcome value='false'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'PORT_MIRROR_CONFIGURATION does not contain exactly 1 entry for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test="`$db.cap[0].role == 'source'`">

+                            <outcome value='false'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'No source capability_role found for UUID ' + $port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='tmp.pm.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />

+            </set>

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.pm-configuration`"/>

+                <parameter name="outputPath" value="tmp.pmc-url"/>

+                <parameter name="target" value="{configuration-id}"/>

+                <parameter name="replacement" value="`$tmp.pm.configuration-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-pmc" />

+                <outcome value='success'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value="`'Port mirror configuration ' + $tmp.pm.configuration-id + ' already exists'`" />

+                    </return>

+                </outcome>

+                <outcome value='failure'>

+                    <block></block>

+                </outcome>

+            </execute>

+            <return status='success'>

+                <parameter name='error-code' value='200' />

+                <parameter name='ack-final' value='N' />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-async.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-async.xml
new file mode 100644
index 0000000..8b07ec1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-async.xml
@@ -0,0 +1,88 @@
+<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='port-mirror-topology-operation-async' mode='sync'>
+        <block atomic="true">
+            <switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`'>
+                <outcome value='pprobe'>
+                    <set>
+                        <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='pprobe' />
+                    </set>
+                </outcome>
+                <outcome value='PPROBE'>
+                    <set>
+                        <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='pprobe' />
+                    </set>
+                </outcome>
+                <outcome value='vprobe'>
+                    <set>
+                        <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='vprobe' />
+                    </set>
+                </outcome>
+                <outcome value='VPROBE'>
+                    <set>
+                        <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='vprobe' />
+                    </set>
+                </outcome>
+                <outcome value=''>
+                    <set>
+                        <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='vprobe' />
+                    </set>
+                </outcome>
+            </switch>
+            <switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`'>
+                <outcome value='assign'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-assign-async' mode='sync' >
+                            <outcome value='failure'>
+                                <return status='failure'></return>
+                            </outcome>
+                            <outcome value='not-found'>
+                                <return status='failure'>
+                                    <parameter name='error-code' value='500' />
+                                    <parameter name='error-message' value="Cannot find assign async DG" />
+                                    <parameter name='ack-final' value='Y' />
+                                </return>
+                            </outcome>
+                        </call>
+                    </block>
+                </outcome>
+                <outcome value='activate'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-activate-async' mode='sync' >
+                            <outcome value='failure'>
+                                <return status='failure'></return>
+                            </outcome>
+                            <outcome value='not-found'>
+                                <return status='failure'>
+                                    <parameter name='error-code' value='500' />
+                                    <parameter name='error-message' value="Cannot find activate async DG" />
+                                    <parameter name='ack-final' value='Y' />
+                                </return>
+                            </outcome>
+                        </call>
+                    </block>
+                </outcome>
+                <outcome value='deactivate'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-deactivate-async' mode='sync' >
+                            <outcome value='failure'>
+                                <return status='failure'></return>
+                            </outcome>
+                            <outcome value='not-found'>
+                                <return status='failure'>
+                                    <parameter name='error-code' value='500' />
+                                    <parameter name='error-message' value="Cannot find deactivate async DG" />
+                                    <parameter name='ack-final' value='Y' />
+                                </return>
+                            </outcome>
+                        </call>
+                    </block>
+                </outcome>
+            </switch>
+            <return status='success'>
+                <parameter name='ack-final' value='Y' />
+            </return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-create-vnfcs.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-create-vnfcs.xml
new file mode 100644
index 0000000..0860c6b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-create-vnfcs.xml
@@ -0,0 +1,293 @@
+<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='port-mirror-topology-operation-create-vnfcs' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.vnfc-objects-idx' value='0' />
+            </set>
+            <for silentFailure='true' index='src-li-idx' start='0' end='`$tmp.AnAI-data.src-li.results_length`' >
+                <switch test='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.vnfc-name`'>
+                    <outcome value=''>
+                        <block atomic="true"></block>
+                    </outcome>
+                    <outcome value='Other'>
+                        <block atomic="true">
+                            <set>
+                                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnfc-key'
+  value='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.vnfc-name`' />
+                                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnfc-name'
+  value='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.vnfc-name`' />
+                                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnf-id'
+  value='`$tmp.src-vnf-id`' />
+                            </set>
+                            <set>
+                                <parameter name='tmp.vserver-id' value='0' />
+                            </set>
+                            <for index='rel-idx' start='0' end='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship_length`' >
+                                <switch test="`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship[$rel-idx].related-to == 'vserver'`">
+                                    <outcome value='true'>
+                                        <for index='reldata-idx' start='0' end='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data_length`' >
+                                            <switch test="`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data[$reldata-idx].relationship-key == 'vserver.vserver-id'`">
+                                                <outcome value='true'>
+                                                    <set>
+                                                        <parameter name='tmp.vserver-id' value='`$tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data[$reldata-idx].relationship-value`' />
+                                                    </set>
+                                                </outcome>
+                                            </switch>
+                                        </for>
+                                    </outcome>
+                                </switch>
+                            </for>
+                            <switch test='`$tmp.vserver-id == 0`'>
+                                <outcome value='true'>
+                                    <block atomic="true">
+                                        <return status='failure'>
+                                            <parameter name='error-code' value='500' />
+                                            <parameter name='error-message' value="`'Unable to find vserver related to vnfc ' + $tmp.AnAI-data.src-li.results[$src-li-idx].vnfc.vnfc-name`" />
+                                        </return>
+                                    </block>
+                                </outcome>
+                            </switch>
+                            <for index='src-vs-idx' start='0' end='`$tmp.AnAI-data.src-li.results_length`' >
+                                <switch test='`$tmp.AnAI-data.src-li.results[$src-vs-idx].vserver.vserver-id == $tmp.vserver-id`'>
+                                    <outcome value='true'>
+                                        <block atomic="true">
+                                            <set>
+                                                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vserver-name'
+  value='`$tmp.AnAI-data.src-li.results[$src-vs-idx].vserver.vserver-name`' />
+                                                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vserver-id'
+  value='`$tmp.AnAI-data.src-li.results[$src-vs-idx].vserver.vserver-id`' />
+                                                <parameter name='tmp.vs-idx' value='`$src-vs-idx`' />
+                                            </set>
+                                        </block>
+                                    </outcome>
+                                </switch>
+                            </for>
+                            <set>
+                                <parameter name='tmp.interface-ids_length' value='0' />
+                            </set>
+                            <for silentFailure='true' index='src-vli-idx' start='0' end='`$tmp.AnAI-data.src-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface_length`' >
+                                <switch test='`$tmp.AnAI-data.src-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface[$src-vli-idx].network-name == $tmp.src-network-name`'>
+                                    <outcome value='true'>
+                                        <set>
+                                            <parameter name='tmp.interface-ids[$tmp.interface-ids_length].interface-id' value='`$tmp.AnAI-data.src-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface[$src-vli-idx].interface-id`' />
+                                            <parameter name='tmp.interface-ids_length' value='`$tmp.interface-ids_length + 1`' />
+                                        </set>
+                                    </outcome>
+                                </switch>
+                            </for>
+                            <set>
+                                <parameter name='tmp.vnic-idx' value='0' />
+                            </set>
+                            <for silentFailure='true' index='src-rs-idx' start='0' end='`$tmp.AnAI-data.src-li.results_length`' >
+                                <switch test='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.interface-name`'>
+                                    <outcome value=''>
+                                        <block></block>
+                                    </outcome>
+                                    <outcome value='Other'>
+                                        <for index='in-idx' start='0' end='`$tmp.interface-ids_length`' >
+                                            <switch test='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.interface-id == $tmp.interface-ids[$in-idx].interface-id`'>
+                                                <outcome value='true'>
+                                                    <block atomic="true">
+                                                        <set>
+                                                            <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-port-id'
+  value='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.interface-id`' />
+                                                            <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-port-name'
+  value='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.interface-name`' />
+                                                            <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].capacity.vnic-capacity'
+  value='`$tmp.src-pps`' />
+                                                            <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].capacity.used-capacity'
+  value='0' />
+                                                        </set>
+                                                        <switch test='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`'>
+                                                            <outcome value=''>
+                                                                <block></block>
+                                                            </outcome>
+                                                            <outcome value='Other'>
+                                                                <set>
+                                                                    <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-ip-addresses.ip-addresses.ipv4-address'
+  value='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`' />
+                                                                </set>
+                                                            </outcome>
+                                                        </switch>
+                                                        <switch test='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`'>
+                                                            <outcome value=''>
+                                                                <block></block>
+                                                            </outcome>
+                                                            <outcome value='Other'>
+                                                                <set>
+                                                                    <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-ip-addresses.ip-addresses.ipv6-address'
+  value='`$tmp.AnAI-data.src-li.results[$src-rs-idx].l-interface.l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`' />
+                                                                </set>
+                                                            </outcome>
+                                                        </switch>
+                                                        <set>
+                                                            <parameter name='tmp.vnic-idx' value='`$tmp.vnic-idx + 1`' />
+                                                        </set>
+                                                    </block>
+                                                </outcome>
+                                            </switch>
+                                        </for>
+                                    </outcome>
+                                </switch>
+                            </for>
+                            <set>
+                                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic_length' value='`$tmp.vnic-idx`' />
+                            </set>
+                            <set>
+                                <parameter name='tmp.vnfc-objects-idx' value='`$tmp.vnfc-objects-idx + 1`' />
+                            </set>
+                        </block>
+                    </outcome>
+                </switch>
+            </for>
+            <set>
+                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object_length' value='`$tmp.vnfc-objects-idx`' />
+            </set>
+            <set>
+                <parameter name='tmp.vnfc-objects-idx' value='0' />
+            </set>
+            <for silentFailure='true' index='dest-li-idx' start='0' end='`$tmp.AnAI-data.dest-li.results_length`' >
+                <switch test='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.vnfc-name`'>
+                    <outcome value=''>
+                        <block atomic="true"></block>
+                    </outcome>
+                    <outcome value='Other'>
+                        <block atomic="true">
+                            <set>
+                                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnfc-key'
+  value='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.vnfc-name`' />
+                                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnfc-name'
+  value='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.vnfc-name`' />
+                                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnf-id'
+  value='`$tmp.dest-vnf-id`' />
+                            </set>
+                            <set>
+                                <parameter name='tmp.vserver-id' value='0' />
+                            </set>
+                            <for index='rel-idx' start='0' end='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship_length`' >
+                                <switch test="`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship[$rel-idx].related-to == 'vserver'`">
+                                    <outcome value='true'>
+                                        <for index='reldata-idx' start='0' end='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data_length`' >
+                                            <switch test="`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data[$reldata-idx].relationship-key == 'vserver.vserver-id'`">
+                                                <outcome value='true'>
+                                                    <set>
+                                                        <parameter name='tmp.vserver-id' value='`$tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.relationship-list.relationship[$rel-idx].relationship-data[$reldata-idx].relationship-value`' />
+                                                    </set>
+                                                </outcome>
+                                            </switch>
+                                        </for>
+                                    </outcome>
+                                </switch>
+                            </for>
+                            <switch test='`$tmp.vserver-id == 0`'>
+                                <outcome value='true'>
+                                    <block atomic="true">
+                                        <return status='failure'>
+                                            <parameter name='error-code' value='500' />
+                                            <parameter name='error-message' value="`'Unable to find vserver related to vnfc ' + $tmp.AnAI-data.dest-li.results[$dest-li-idx].vnfc.vnfc-name`" />
+                                        </return>
+                                    </block>
+                                </outcome>
+                            </switch>
+                            <for index='dest-vs-idx' start='0' end='`$tmp.AnAI-data.dest-li.results_length`' >
+                                <switch test='`$tmp.AnAI-data.dest-li.results[$dest-vs-idx].vserver.vserver-id == $tmp.vserver-id`'>
+                                    <outcome value='true'>
+                                        <block atomic="true">
+                                            <set>
+                                                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vserver-name'
+  value='`$tmp.AnAI-data.dest-li.results[$dest-vs-idx].vserver.vserver-name`' />
+                                                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vserver-id'
+  value='`$tmp.AnAI-data.dest-li.results[$dest-vs-idx].vserver.vserver-id`' />
+                                                <parameter name='tmp.vs-idx' value='`$dest-vs-idx`' />
+                                            </set>
+                                        </block>
+                                    </outcome>
+                                </switch>
+                            </for>
+                            <set>
+                                <parameter name='tmp.interface-ids_length' value='0' />
+                            </set>
+                            <for silentFailure='true' index='dest-vli-idx' start='0' end='`$tmp.AnAI-data.dest-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface_length`' >
+                                <switch test='`$tmp.AnAI-data.dest-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface[$dest-vli-idx].network-name == $tmp.dest-network-name`'>
+                                    <outcome value='true'>
+                                        <set>
+                                            <parameter name='tmp.interface-ids[$tmp.interface-ids_length].interface-id' value='`$tmp.AnAI-data.dest-li.results[$tmp.vs-idx].vserver.l-interfaces.l-interface[$dest-vli-idx].interface-id`' />
+                                            <parameter name='tmp.interface-ids_length' value='`$tmp.interface-ids_length + 1`' />
+                                        </set>
+                                    </outcome>
+                                </switch>
+                            </for>
+                            <set>
+                                <parameter name='tmp.vnic-idx' value='0' />
+                            </set>
+                            <for silentFailure='true' index='dest-rs-idx' start='0' end='`$tmp.AnAI-data.dest-li.results_length`' >
+                                <switch test='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.interface-name`'>
+                                    <outcome value=''>
+                                        <block></block>
+                                    </outcome>
+                                    <outcome value='Other'>
+                                        <for index='in-idx' start='0' end='`$tmp.interface-ids_length`' >
+                                            <switch test='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.interface-id == $tmp.interface-ids[$in-idx].interface-id`'>
+                                                <outcome value='true'>
+                                                    <block atomic="true">
+                                                        <set>
+                                                            <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-port-id'
+  value='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.interface-id`' />
+                                                            <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-port-name'
+  value='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.interface-name`' />
+                                                            <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].capacity.vnic-capacity'
+  value='`$tmp.dest-pps`' />
+                                                            <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].capacity.used-capacity'
+  value='0' />
+                                                        </set>
+                                                        <switch test='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`'>
+                                                            <outcome value=''>
+                                                                <block></block>
+                                                            </outcome>
+                                                            <outcome value='Other'>
+                                                                <set>
+                                                                    <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-ip-addresses.ip-addresses.ipv4-address'
+  value='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`' />
+                                                                </set>
+                                                            </outcome>
+                                                        </switch>
+                                                        <switch test='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`'>
+                                                            <outcome value=''>
+                                                                <block></block>
+                                                            </outcome>
+                                                            <outcome value='Other'>
+                                                                <set>
+                                                                    <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic[$tmp.vnic-idx].vnic-ip-addresses.ip-addresses.ipv6-address'
+  value='`$tmp.AnAI-data.dest-li.results[$dest-rs-idx].l-interface.l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`' />
+                                                                </set>
+                                                            </outcome>
+                                                        </switch>
+                                                        <set>
+                                                            <parameter name='tmp.vnic-idx' value='`$tmp.vnic-idx + 1`' />
+                                                        </set>
+                                                    </block>
+                                                </outcome>
+                                            </switch>
+                                        </for>
+                                    </outcome>
+                                </switch>
+                            </for>
+                            <set>
+                                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.vnfc-objects-idx].vnics.vnic_length' value='`$tmp.vnic-idx`' />
+                            </set>
+                            <set>
+                                <parameter name='tmp.vnfc-objects-idx' value='`$tmp.vnfc-objects-idx + 1`' />
+                            </set>
+                        </block>
+                    </outcome>
+                </switch>
+            </for>
+            <set>
+                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object_length' value='`$tmp.vnfc-objects-idx`' />
+            </set>
+            <return status='success'></return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-async.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-async.xml
new file mode 100644
index 0000000..50c52fb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-async.xml
@@ -0,0 +1,373 @@
+<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='port-mirror-topology-operation-deactivate-async' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+                <parameter name="outputPath" value="tmp.pmc-url"/>
+                <parameter name="target" value="{configuration-id}"/>
+                <parameter name="replacement" value="`$tmp.configuration-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="pm-mdsal" />
+                <outcome value='success'>
+                    <block></block>
+                </outcome>
+                <outcome value='failure'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name="error-message" value="Failed to read port-mirror-configuration from MD-SAL" />
+                        </set>
+                        <block atomic="true">
+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                <parameter name="input.ack-final-indicator" value="Y" />
+                                <parameter name="input.response-code" value="500" />
+                                <parameter name="input.response-message" value="`$error-message`" />
+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                            </configure>
+                            <return status='failure'>
+                                <parameter name='ack-final' value='Y'/>
+                                <parameter name="error-code" value="500" />
+                                <parameter name="error-message" value="`'$error-message'`" />
+                            </return>
+                        </block>
+                    </block>
+                </outcome>
+                <outcome value='not-found'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name="error-message" value="Cannot find port-mirror-configuration in MD-SAL" />
+                        </set>
+                        <block atomic="true">
+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                <parameter name="input.ack-final-indicator" value="Y" />
+                                <parameter name="input.response-code" value="500" />
+                                <parameter name="input.response-message" value="`$error-message`" />
+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                            </configure>
+                            <return status='failure'>
+                                <parameter name='ack-final' value='Y'/>
+                                <parameter name="error-code" value="500" />
+                                <parameter name="error-message" value="`'$error-message'`" />
+                            </return>
+                        </block>
+                    </block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />
+                <parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />
+            </set>
+            <set>
+                <parameter name='tmp.configuration-sub-type' value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type`' />
+            </set>
+            <set>
+                <parameter name='pm.configuration-data.configuration-operation-information.sdnc-request-header.'
+  value='`$port-mirror-topology-operation-input.sdnc-request-header.`' />
+            </set>
+            <for silentFailure='true' index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+                <block atomic="true">
+                    <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                        <parameter name='api-name' value='port-mirroring' />
+                        <parameter name='api-action' value='disable' />
+                        <parameter name='resp-prefix' value='contrailResp' />
+                        <parameter name='display-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+                        <parameter name='contrail-virtual-machine-interface-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+                        <parameter name='contrail-virtual-machine-interface-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+                        <parameter name='policy-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+                        <parameter name='default-domain' value='default-domain' />
+                        <parameter name='default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                        <parameter name='cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                        <parameter name='cloud-owner'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+                        <outcome value='success'>
+                            <set>
+                                <parameter name='contrail-set[$src-idx]' value='true' />
+                            </set>
+                        </outcome>
+                        <outcome value='failure'>
+                            <block atomic="true">
+                                <set>
+                                    <parameter name="error-message" value="`'Failed to update policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+                                </set>
+                                <block atomic="true">
+                                    <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                        <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                        <parameter name="input.ack-final-indicator" value="Y" />
+                                        <parameter name="input.response-code" value="500" />
+                                        <parameter name="input.response-message" value="`$error-message`" />
+                                        <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                        <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                        <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                                    </configure>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`'$error-message'`" />
+                                    </return>
+                                </block>
+                            </block>
+                        </outcome>
+                    </execute>
+                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+   resource="l-interface"
+   key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+   force="true" pfx="tmp.AnAI-data">
+                        <parameter name="is-port-mirrored" value="false" />
+                        <outcome value='not-found'>
+                            <block atomic="true">
+                                <set>
+                                    <parameter name="error-message" value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+                                </set>
+                                <block atomic="true">
+                                    <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                        <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                        <parameter name="input.ack-final-indicator" value="Y" />
+                                        <parameter name="input.response-code" value="500" />
+                                        <parameter name="input.response-message" value="`$error-message`" />
+                                        <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                        <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                        <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                                    </configure>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`'$error-message'`" />
+                                    </return>
+                                </block>
+                            </block>
+                        </outcome>
+                        <outcome value='failure'>
+                            <block atomic="true">
+                                <set>
+                                    <parameter name="error-message" value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+                                </set>
+                                <block atomic="true">
+                                    <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                        <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                        <parameter name="input.ack-final-indicator" value="Y" />
+                                        <parameter name="input.response-code" value="500" />
+                                        <parameter name="input.response-message" value="`$error-message`" />
+                                        <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                        <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                        <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                                    </configure>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`'$error-message'`" />
+                                    </return>
+                                </block>
+                            </block>
+                        </outcome>
+                        <outcome value='success'>
+                            <set>
+                                <parameter name='l-interface-set[$src-idx]' value='true' />
+                            </set>
+                        </outcome>
+                    </update>
+                </block>
+            </for>
+            <switch test='`$tmp.configuration-sub-type`'>
+                <outcome value='vprobe'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='cto-api.default-domain' value='default-domain' />
+                            <parameter name='cto-api.default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                            <parameter name='cto-api.cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                            <parameter name='cto-api.contrail-route-allotted-resource-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.route-allotted-resource-id`' />
+                            <parameter name='cto-api.src-contrail-network-fqdn'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-network-fqdn`' />
+                            <parameter name='cto-api.collector-contrail-network-fqdn'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />
+                            <parameter name='cto-api.rollback-flag' value='false' />
+                            <parameter name='cto-api.owning-entity'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.owning-entity`' />
+                        </set>
+                        <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-deactivate' mode='sync' >
+                            <outcome value='failure'>
+                                <block atomic="true">
+                                    <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                        <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                        <parameter name="input.ack-final-indicator" value="Y" />
+                                        <parameter name="input.response-code" value="500" />
+                                        <parameter name="input.response-message" value="`$error-message`" />
+                                        <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                        <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                        <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                                    </configure>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`'$error-message'`" />
+                                    </return>
+                                </block>
+                            </outcome>
+                        </call>
+                    </block>
+                </outcome>
+            </switch>
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+   resource="configuration"
+   key="configuration.configuration-id = $tmp.configuration-id"
+   force="true" pfx="tmp.AnAI-data">
+                <parameter name="operational-status" value="out-of-service-path" />
+                <outcome value='not-found'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name="error-message" value="Unable to find configuration object in AAI" />
+                        </set>
+                        <block atomic="true">
+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                <parameter name="input.ack-final-indicator" value="Y" />
+                                <parameter name="input.response-code" value="500" />
+                                <parameter name="input.response-message" value="`$error-message`" />
+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                            </configure>
+                            <return status='failure'>
+                                <parameter name='ack-final' value='Y'/>
+                                <parameter name="error-code" value="500" />
+                                <parameter name="error-message" value="`'$error-message'`" />
+                            </return>
+                        </block>
+                    </block>
+                </outcome>
+                <outcome value='failure'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name="error-message" value="Failure updating configuration object in AAI" />
+                        </set>
+                        <block atomic="true">
+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                <parameter name="input.ack-final-indicator" value="Y" />
+                                <parameter name="input.response-code" value="500" />
+                                <parameter name="input.response-message" value="`$error-message`" />
+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                            </configure>
+                            <return status='failure'>
+                                <parameter name='ack-final' value='Y'/>
+                                <parameter name="error-code" value="500" />
+                                <parameter name="error-message" value="`'$error-message'`" />
+                            </return>
+                        </block>
+                    </block>
+                </outcome>
+            </update>
+            <set>
+                <parameter name='pm.configuration-data.configuration-oper-status.order-status'
+  value='Created' />
+                <parameter name='pm.configuration-data.configuration-oper-status.last-action'
+  value='`$port-mirror-topology-operation-input.request-information.request-action`' />
+                <parameter name='pm.configuration-data.configuration-oper-status.last-rpc-action'
+  value='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.portmirrorconfig.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name="responsePrefix" value="mdsal-pmc" />
+                <outcome value='success'>
+                    <block></block>
+                </outcome>
+                <outcome value='failure'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name="error-message" value="Error updating md-sal for port-mirror-configuration" />
+                        </set>
+                        <block atomic="true">
+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                <parameter name="input.ack-final-indicator" value="Y" />
+                                <parameter name="input.response-code" value="500" />
+                                <parameter name="input.response-message" value="`$error-message`" />
+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                            </configure>
+                            <return status='failure'>
+                                <parameter name='ack-final' value='Y'/>
+                                <parameter name="error-code" value="500" />
+                                <parameter name="error-message" value="`'$error-message'`" />
+                            </return>
+                        </block>
+                    </block>
+                </outcome>
+                <outcome value='not-found'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name="error-message" value="Error updating md-sal for port-mirror-configuration" />
+                        </set>
+                        <block atomic="true">
+                            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                                <parameter name="input.ack-final-indicator" value="Y" />
+                                <parameter name="input.response-code" value="500" />
+                                <parameter name="input.response-message" value="`$error-message`" />
+                                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+                            </configure>
+                            <return status='failure'>
+                                <parameter name='ack-final' value='Y'/>
+                                <parameter name="error-code" value="500" />
+                                <parameter name="error-message" value="`'$error-message'`" />
+                            </return>
+                        </block>
+                    </block>
+                </outcome>
+            </execute>
+            <configure activate="true" adaptor="com.att.sdnctl.sli.adaptor.mso.MSOAdaptor" key="__READ_FROM_PARAMETERS__">
+                <parameter name="notification-url" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`" />
+                <parameter name="input.ack-final-indicator" value="Y" />
+                <parameter name="input.response-code" value="200" />
+                <parameter name="input.svc-request-id" value="`$port-mirror-topology-operation-input.sdnc-request-header.svc-request-id`" />
+                <parameter name="input.service-information.service-type" value="`$port-mirror-topology-operation-input.service-information.subscription-service-type`" />
+                <parameter name="input.service-information.service-instance-id" value="`$port-mirror-topology-operation-input.service-information.service-instance-id`" />
+            </configure>
+            <return status='success'>
+                <parameter name='error-code' value='200' />
+            </return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-sync.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-sync.xml
new file mode 100644
index 0000000..4a1fc27
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-deactivate-sync.xml
@@ -0,0 +1,57 @@
+<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='port-mirror-topology-operation-deactivate-sync' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.pm.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+                <parameter name="outputPath" value="tmp.pmc-url"/>
+                <parameter name="target" value="{configuration-id}"/>
+                <parameter name="replacement" value="`$tmp.pm.configuration-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-pmc" />
+                <outcome value='success'>
+                    <switch test='`$mdsal-pmc.port-mirror-configuration_length == 1`'>
+                        <outcome value='false'>
+                            <return status='failure'>
+                                <parameter name='error-code' value='500' />
+                                <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.pm.configuration-id`" />
+                            </return>
+                        </outcome>
+                    </switch>
+                </outcome>
+                <outcome value='Other'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.pm.configuration-id`" />
+                    </return>
+                </outcome>
+            </execute>
+            <switch test="`$mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Active'`">
+                <outcome value='false'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Active'`" />
+                    </return>
+                </outcome>
+            </switch>
+            <return status='success'>
+                <parameter name='error-code' value='200' />
+                <parameter name='ack-final' value='N' />
+            </return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-disable.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-disable.xml
new file mode 100644
index 0000000..0be852c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-disable.xml
@@ -0,0 +1,184 @@
+<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='port-mirror-topology-operation-disable' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+                <parameter name="outputPath" value="tmp.pmc-url"/>
+                <parameter name="target" value="{configuration-id}"/>
+                <parameter name="replacement" value="`$tmp.configuration-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="pm-mdsal" />
+                <outcome value='success'>
+                    <switch test='`$pm-mdsal.port-mirror-configuration_length == 1`'>
+                        <outcome value='false'>
+                            <return status='failure'>
+                                <parameter name='error-code' value='500' />
+                                <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`" />
+                            </return>
+                        </outcome>
+                    </switch>
+                </outcome>
+                <outcome value='Other'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`" />
+                    </return>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />
+                <parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />
+            </set>
+            <switch test="`$pm-mdsal.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Active'`">
+                <outcome value='false'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Active'`" />
+                    </return>
+                </outcome>
+            </switch>
+            <for index='idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+                <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$idx].source-port-id
+  == $port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id`'>
+                    <outcome value='true'>
+                        <block atomic="true">
+                            <set>
+                                <parameter name='src-idx' value='`$idx`' />
+                            </set>
+                            <break/>
+                        </block>
+                    </outcome>
+                </switch>
+            </for>
+            <switch test='`$src-idx`'>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Unable to find source port ' + $port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id + ' in MD-SAL'`" />
+                    </return>
+                </outcome>
+            </switch>
+            <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`'>
+                <outcome value='Other'>
+                    <set>
+                        <parameter name='tmp.analyzer.ip-address'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`' />
+                    </set>
+                </outcome>
+                <outcome value=''>
+                    <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`'>
+                        <outcome value='Other'>
+                            <set>
+                                <parameter name='tmp.analyzer.ip-address'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`' />
+                            </set>
+                        </outcome>
+                        <outcome value=''>
+                            <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`'>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='tmp.analyzer.ip-address'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`' />
+                                    </set>
+                                </outcome>
+                                <outcome value=''>
+                                    <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`'>
+                                        <outcome value='Other'>
+                                            <set>
+                                                <parameter name='tmp.analyzer.ip-address'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`' />
+                                            </set>
+                                        </outcome>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='error-code' value='500' />
+                                                <parameter name='error-message' value="`'No dest addresses stored for source port ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                </outcome>
+            </switch>
+            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                <parameter name='api-name' value='port-mirroring' />
+                <parameter name='api-action' value='disable' />
+                <parameter name='resp-prefix' value='contrailResp' />
+                <parameter name='display-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+                <parameter name='contrail-virtual-machine-interface-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+                <parameter name='contrail-virtual-machine-interface-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+                <parameter name='default-domain' value='default-domain' />
+                <parameter name='default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                <parameter name='traffic-direction' value='both' />
+                <parameter name='analyzer-ip-address'
+  value='`$tmp.analyzer.ip-address`' />
+                <parameter name='udp-port' value='8099' />
+                <parameter name='routing-instance'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />
+                <parameter name='local-preference' value='1' />
+                <parameter name='cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                <parameter name='cloud-owner'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+                <outcome value='success'>
+                    <set>
+                        <parameter name='contrail-set[$src-idx]' value='true' />
+                    </set>
+                </outcome>
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Failed to update policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+                    </return>
+                </outcome>
+            </execute>
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+   resource="l-interface"
+   key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+   force="true" pfx="tmp.AnAI-data">
+                <parameter name="is-port-mirrored" value="false" />
+                <outcome value='not-found'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+                    </return>
+                </outcome>
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+                    </return>
+                </outcome>
+            </update>
+            <return status='success'>
+                <parameter name='error-code' value='200' />
+                <parameter name='ack-final' value='Y' />
+            </return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-enable.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-enable.xml
new file mode 100644
index 0000000..b6d8c6d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-enable.xml
@@ -0,0 +1,231 @@
+<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='port-mirror-topology-operation-enable' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+                <parameter name="outputPath" value="tmp.pmc-url"/>
+                <parameter name="target" value="{configuration-id}"/>
+                <parameter name="replacement" value="`$tmp.configuration-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="pm-mdsal" />
+                <outcome value='success'>
+                    <switch test='`$pm-mdsal.port-mirror-configuration_length == 1`'>
+                        <outcome value='false'>
+                            <return status='failure'>
+                                <parameter name='error-code' value='500' />
+                                <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`" />
+                            </return>
+                        </outcome>
+                    </switch>
+                </outcome>
+                <outcome value='Other'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`" />
+                    </return>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />
+                <parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />
+            </set>
+            <set>
+                <parameter name='tmp.configuration-sub-type' value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type`' />
+            </set>
+            <switch test="`$pm-mdsal.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Active'`">
+                <outcome value='false'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Active'`" />
+                    </return>
+                </outcome>
+            </switch>
+            <for index='idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+                <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$idx].source-port-id
+  == $port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id`'>
+                    <outcome value='true'>
+                        <block atomic="true">
+                            <set>
+                                <parameter name='src-idx' value='`$idx`' />
+                            </set>
+                            <break/>
+                        </block>
+                    </outcome>
+                </switch>
+            </for>
+            <switch test='`$src-idx`'>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Unable to find source port ' + $port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id + ' in MD-SAL'`" />
+                    </return>
+                </outcome>
+            </switch>
+            <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`'>
+                <outcome value='Other'>
+                    <set>
+                        <parameter name='tmp.analyzer.ip-address'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv4-address`' />
+                    </set>
+                </outcome>
+                <outcome value=''>
+                    <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`'>
+                        <outcome value='Other'>
+                            <set>
+                                <parameter name='tmp.analyzer.ip-address'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.ipv6-address`' />
+                            </set>
+                        </outcome>
+                        <outcome value=''>
+                            <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`'>
+                                <outcome value='Other'>
+                                    <set>
+                                        <parameter name='tmp.analyzer.ip-address'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv4-address`' />
+                                    </set>
+                                </outcome>
+                                <outcome value=''>
+                                    <switch test='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`'>
+                                        <outcome value='Other'>
+                                            <set>
+                                                <parameter name='tmp.analyzer.ip-address'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-ip-addresses.ip-addresses.vipv6-address`' />
+                                            </set>
+                                        </outcome>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='error-code' value='500' />
+                                                <parameter name='error-message' value="`'No dest addresses stored for source port ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                </outcome>
+                            </switch>
+                        </outcome>
+                    </switch>
+                </outcome>
+            </switch>
+            <switch test='`$tmp.configuration-sub-type`'>
+                <outcome value='vprobe'>
+                    <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                        <parameter name='api-name' value='port-mirroring' />
+                        <parameter name='api-action' value='enable' />
+                        <parameter name='resp-prefix' value='contrailResp' />
+                        <parameter name='display-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+                        <parameter name='contrail-virtual-machine-interface-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+                        <parameter name='contrail-virtual-machine-interface-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+                        <parameter name='default-domain' value='default-domain' />
+                        <parameter name='default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                        <parameter name='traffic-direction' value='both' />
+                        <parameter name='analyzer-ip-address'
+  value='`$tmp.analyzer.ip-address`' />
+                        <parameter name='udp-port' value='8099' />
+                        <parameter name='routing-instance'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />
+                        <parameter name='local-preference' value='1' />
+                        <parameter name='cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                        <parameter name='cloud-owner'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+                        <outcome value='success'>
+                            <set>
+                                <parameter name='contrail-set[$src-idx]' value='true' />
+                            </set>
+                        </outcome>
+                        <outcome value='failure'>
+                            <return status='failure'>
+                                <parameter name='error-code' value='500' />
+                                <parameter name='error-message' value="`'Failed to update policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+                            </return>
+                        </outcome>
+                    </execute>
+                </outcome>
+                <outcome value='pprobe'>
+                    <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                        <parameter name='api-name' value='port-mirroring' />
+                        <parameter name='api-action' value='enable' />
+                        <parameter name='resp-prefix' value='contrailResp' />
+                        <parameter name='display-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+                        <parameter name='contrail-virtual-machine-interface-name'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`' />
+                        <parameter name='contrail-virtual-machine-interface-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-id`' />
+                        <parameter name='default-domain' value='default-domain' />
+                        <parameter name='default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                        <parameter name='traffic-direction' value='both' />
+                        <parameter name='analyzer-ip-address'
+  value='`$tmp.analyzer.ip-address`' />
+                        <parameter name='vni' value='1000' />
+                        <parameter name='udp-port' value='8099' />
+                        <parameter name='routing-instance'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.dest-network-fqdn`' />
+                        <parameter name='local-preference' value='1' />
+                        <parameter name='juniper-header' value='false' />
+                        <parameter name='cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                        <parameter name='cloud-owner'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner`' />
+                        <outcome value='success'>
+                            <set>
+                                <parameter name='contrail-set[$src-idx]' value='true' />
+                            </set>
+                        </outcome>
+                        <outcome value='failure'>
+                            <return status='failure'>
+                                <parameter name='error-code' value='500' />
+                                <parameter name='error-message' value="`'Failed to update policy in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+                            </return>
+                        </outcome>
+                    </execute>
+                </outcome>
+            </switch>
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+   resource="l-interface"
+   key="cloud-region.cloud-region-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id
+     AND cloud-region.cloud-owner = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-owner
+     AND tenant.tenant-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant-id
+     AND vserver.vserver-id = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-vserver-id
+     AND l-interface.interface-name = $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name"
+   force="true" pfx="tmp.AnAI-data">
+                <parameter name="is-port-mirrored" value="true" />
+                <outcome value='not-found'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+                    </return>
+                </outcome>
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Failed to update l-interface object in AAI for interface ' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name`" />
+                    </return>
+                </outcome>
+            </update>
+            <return status='success'>
+                <parameter name='error-code' value='200' />
+                <parameter name='ack-final' value='Y' />
+            </return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-pprobe.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-pprobe.xml
new file mode 100644
index 0000000..aaead56
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-pprobe.xml
@@ -0,0 +1,108 @@
+<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='port-mirror-topology-operation-mapping-pprobe' mode='sync'>
+        <block atomic="true">
+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="l-interfaces" 
+		key="pnf.pnf-name = $tmp.dest-pnf-name AND 
+		     p-interface.interface-name = $tmp.dest-p-interface AND depth='all'"
+        pfx='aai.pnf.p-interface' local-only='false' >
+                <outcome value='not-found'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Destination L-Interfaces are not set for the Destination PNF" />
+                    </return>
+                </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 retrieving l-interfaces from AAI" />
+                    </return>
+                </outcome>
+            </get-resource>
+            <switch test='`$aai.pnf.p-interface.l-interface_length &gt; 0`'>
+                <outcome value='false'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="Destination L-Interface is not set for the Destination PNF" />
+                    </return>
+                </outcome>
+            </switch>
+            <set>
+                <parameter name='tmp.found-one' value='false' />
+            </set>
+            <for index='idx' start='0' end='`$aai.pnf.p-interface.l-interface_length`' >
+                <switch test='`$aai.pnf.p-interface.l-interface[$idx].l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`'>
+                    <outcome value=''>
+                        <switch test='`$aai.pnf.p-interface.l-interface[$idx].l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`'>
+                            <outcome value=''>
+                                <block></block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <block atomic="true">
+                                    <set>
+                                        <parameter name='tmp.found-one' value='true' />
+                                    </set>
+                                    <break/>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </outcome>
+                    <outcome value='Other'>
+                        <block atomic="true">
+                            <set>
+                                <parameter name='tmp.found-one' value='true' />
+                            </set>
+                            <break/>
+                        </block>
+                    </outcome>
+                </switch>
+            </for>
+            <switch test='`$tmp.found-one`'>
+                <outcome value='false'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value='Destination Port IP Address is not set for the Destination PNF' />
+                    </return>
+                </outcome>
+            </switch>
+            <set>
+                <parameter name='map-idx' value='0' />
+            </set>
+            <for silentFailure='true' index='vnfc-so-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object_length`' >
+                <for silentFailure='true' index='vnic-s-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic_length`' >
+                    <block atomic="true">
+                        <set>
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-port-id'
+  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-id`' />
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-port-name'
+  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-name`' />
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-vserver-id'
+  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vserver-id`' />
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-port-id'
+  value='`$aai.pnf.p-interface.l-interface[$idx].interface-id`' />
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-port-name'
+  value='`$aai.pnf.p-interface.l-interface[$idx].interface-name`' />
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-ip-addresses.ip-addresses.ipv4-address'
+  value='`$aai.pnf.p-interface.l-interface[$idx].l3-interface-ipv4-address-list[0].l3-interface-ipv4-address`' />
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-ip-addresses.ip-addresses.ipv6-address'
+  value='`$aai.pnf.p-interface.l-interface[$idx].l3-interface-ipv6-address-list[0].l3-interface-ipv6-address`' />
+                        </set>
+                        <set>
+                            <parameter name='map-idx' value='`$map-idx + 1`' />
+                        </set>
+                    </block>
+                </for>
+            </for>
+            <set>
+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length'
+  value='`$map-idx`' />
+            </set>
+            <return status='success'></return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-vprobe.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-vprobe.xml
new file mode 100644
index 0000000..5421853
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-mapping-vprobe.xml
@@ -0,0 +1,243 @@
+<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='port-mirror-topology-operation-mapping-vprobe' mode='sync'>
+        <block atomic="true">
+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+  key='select vnics_group_id
+    from VNICS_CAPACITY_GROUP
+    where service_instance_id = $tmp.service-instance-id
+    and nfc_naming_code = $tmp.dest-nfc-naming-code
+    and vnf_id = $tmp.dest-vnf-id'
+  pfx='db'>
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="Failure reading VNICS_CAPACITY_GROUP table" />
+                    </return>
+                </outcome>
+                <outcome value='not-found'>
+                    <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+	key="insert into VNICS_CAPACITY_GROUP 
+	  (service_instance_id, nfc_naming_code, vnf_id)
+	  VALUES ( $tmp.service-instance-id , $tmp.dest-nfc-naming-code , $tmp.dest-vnf-id )"
+	pfx='pfx' >
+                        <outcome value='failure'>
+                            <return status='failure'>
+                                <parameter name='error-code' value='500' />
+                                <parameter name='error-message' value="Failure to insert record into VNICS_CAPACITY_GROUP table" />
+                            </return>
+                        </outcome>
+                        <outcome value='success'>
+                            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+  key='select vnics_group_id
+    from VNICS_CAPACITY_GROUP
+    where service_instance_id = $tmp.service-instance-id
+    and nfc_naming_code = $tmp.dest-nfc-naming-code
+    and vnf_id = $tmp.dest-vnf-id'
+  pfx='db'>
+                                <outcome value='failure'>
+                                    <return status='failure'>
+                                        <parameter name='error-code' value='500' />
+                                        <parameter name='error-message' value="Failure reading VNICS_CAPACITY_GROUP table" />
+                                    </return>
+                                </outcome>
+                            </get-resource>
+                        </outcome>
+                    </save>
+                </outcome>
+            </get-resource>
+            <set>
+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.vnics-group-id'
+  value='`$db.vnics-group-id`' />
+            </set>
+            <for silentFailure='true' index='vnfc-do-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object_length`' >
+                <for silentFailure='true' index='vnic-d-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic_length`' >
+                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+  key='select available_capacity, vnic_capacity
+    from VNICS_CAPACITY
+    where vnics_group_id = $db.vnics-group-id
+    and vnic_port_name = $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-port-name'
+  pfx='db.vnics-capacity'>
+                        <outcome value='failure'>
+                            <return status='failure'>
+                                <parameter name='error-code' value='500' />
+                                <parameter name='error-message' value="Failure reading VNICS_CAPACITY_GROUP table" />
+                            </return>
+                        </outcome>
+                        <outcome value='not-found'>
+                            <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+	key="insert into VNICS_CAPACITY 
+	  (vnics_group_id, vnic_port_name, available_capacity, vnic_capacity)
+	  VALUES ( $db.vnics-group-id ,
+	    $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-port-name ,
+	    $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.vnic-capacity ,
+	    $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.vnic-capacity
+	    )"
+	pfx='pfx' >
+                                <outcome value='failure'>
+                                    <return status='failure'>
+                                        <parameter name='error-code' value='500' />
+                                        <parameter name='error-message' value="Failure to insert record into VNICS_CAPACITY table" />
+                                    </return>
+                                </outcome>
+                            </save>
+                        </outcome>
+                        <outcome value='success'>
+                            <set>
+                                <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.vnic-capacity'
+  value='`$db.vnics-capacity.available-capacity`' />
+                            </set>
+                        </outcome>
+                    </get-resource>
+                </for>
+            </for>
+            <set>
+                <parameter name='map-idx' value='0' />
+            </set>
+            <for silentFailure='true' index='vnfc-so-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object_length`' >
+                <for silentFailure='true' index='vnic-s-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic_length`' >
+                    <block atomic="true">
+                        <set>
+                            <parameter name='tmp.found-capacity' value='N' />
+                            <parameter name='tmp.save-rem-cap' value='0' />
+                        </set>
+                        <for silentFailure='true' index='vnfc-do-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object_length`' >
+                            <for silentFailure='true' index='vnic-d-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic_length`' >
+                                <block atomic="true">
+                                    <set>
+                                        <parameter name='tmp.rem-cap' value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.vnic-capacity
+  - $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.used-capacity`' />
+                                    </set>
+                                    <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].capacity.vnic-capacity
+  &lt;= $tmp.rem-cap`'>
+                                        <outcome value='true'>
+                                            <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-ip-addresses.ip-addresses.ipv4-address`'>
+                                                <outcome value=''>
+                                                    <switch test='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-ip-addresses.ip-addresses.ipv6-address`'>
+                                                        <outcome value=''>
+                                                            <block atomic="true"></block>
+                                                        </outcome>
+                                                        <outcome value='Other'>
+                                                            <switch test='`$tmp.rem-cap &gt; $tmp.save-rem-cap`'>
+                                                                <outcome value='true'>
+                                                                    <set>
+                                                                        <parameter name='tmp.found-capacity' value='Y' />
+                                                                        <parameter name='tmp.save-vnfc-do-idx' value='`$vnfc-do-idx`' />
+                                                                        <parameter name='tmp.save-vnic-d-idx' value='`$vnic-d-idx`' />
+                                                                        <parameter name='tmp.save-rem-cap' value='`$tmp.rem-cap`' />
+                                                                    </set>
+                                                                </outcome>
+                                                            </switch>
+                                                        </outcome>
+                                                    </switch>
+                                                </outcome>
+                                                <outcome value='Other'>
+                                                    <switch test='`$tmp.rem-cap &gt; $tmp.save-rem-cap`'>
+                                                        <outcome value='true'>
+                                                            <set>
+                                                                <parameter name='tmp.found-capacity' value='Y' />
+                                                                <parameter name='tmp.save-vnfc-do-idx' value='`$vnfc-do-idx`' />
+                                                                <parameter name='tmp.save-vnic-d-idx' value='`$vnic-d-idx`' />
+                                                                <parameter name='tmp.save-rem-cap' value='`$tmp.rem-cap`' />
+                                                            </set>
+                                                        </outcome>
+                                                    </switch>
+                                                </outcome>
+                                            </switch>
+                                        </outcome>
+                                    </switch>
+                                </block>
+                            </for>
+                        </for>
+                        <switch test="`$tmp.found-capacity == 'N'`">
+                            <outcome value='true'>
+                                <return status='failure'>
+                                    <parameter name='error-code' value='500' />
+                                    <parameter name='error-message' value="`'No capacity for source interface '
+  + $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-id`" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <set>
+                            <parameter name='service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].capacity.used-capacity'
+  value='`$tmp.src-pps + $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].capacity.used-capacity`' />
+                        </set>
+                        <set>
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-port-id'
+  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-id`' />
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-port-name'
+  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vnics.vnic[$vnic-s-idx].vnic-port-name`' />
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].source-vserver-id'
+  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.src-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-so-idx].vserver-id`' />
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-port-id'
+  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].vnic-port-id`' />
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-port-name'
+  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].vnic-port-name`' />
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-vserver-id'
+  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vserver-id`' />
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-ip-addresses.ip-addresses.ipv4-address'
+  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].vnic-ip-addresses.ip-addresses.ipv4-address`' />
+                            <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$map-idx].dest-ip-addresses.ip-addresses.ipv6-address'
+  value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$tmp.save-vnfc-do-idx].vnics.vnic[$tmp.save-vnic-d-idx].vnic-ip-addresses.ip-addresses.ipv6-address`' />
+                        </set>
+                        <set>
+                            <parameter name='map-idx' value='`$map-idx + 1`' />
+                        </set>
+                    </block>
+                </for>
+            </for>
+            <set>
+                <parameter name='pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length'
+  value='`$map-idx`' />
+            </set>
+            <for silentFailure='true' index='vnfc-do-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object_length`' >
+                <for silentFailure='true' index='vnic-d-idx' start='0' end='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic_length`' >
+                    <block atomic="true">
+                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+  key='select available_capacity
+    from VNICS_CAPACITY
+    where vnics_group_id = $db.vnics-group-id
+    and vnic_port_name = $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-port-name'
+  pfx='db.vnics-capacity'>
+                            <outcome value='failure'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="Failure reading VNICS_CAPACITY table" />
+                                </return>
+                            </outcome>
+                        </get-resource>
+                        <set>
+                            <parameter name='tmp.original-avail-capacity' value='`$db.vnics-capacity.available-capacity`' />
+                            <parameter name='tmp.original-used-capacity' value='`$service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.used-capacity`' />
+                            <parameter name='tmp.avail-capacity' value='`$db.vnics-capacity.available-capacity - $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].capacity.used-capacity`' />
+                        </set>
+                        <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+key="update VNICS_CAPACITY
+     set available_capacity = $tmp.avail-capacity
+     where vnics_group_id = $db.vnics-group-id
+     and vnic_port_name = $service-data.vnfc-instance-groups.vnfc-instance-group[$tmp.dest-vnfc-idx].vnfc-objects.vnfc-object[$vnfc-do-idx].vnics.vnic[$vnic-d-idx].vnic-port-name
+" >
+                            <outcome value='failure'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="Failure updating VNICS_CAPACITY table" />
+                                </return>
+                            </outcome>
+                        </update>
+                    </block>
+                </for>
+            </for>
+            <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+	key="insert into VNICS_CONFIGURATION_ID
+	(configuration_id, vnics_group_id)
+	values ( $tmp.configuration-id , $db.vnics-group-id )"
+	pfx='pfx' ></save>
+            <return status='success'>
+                <parameter name='' value='' />
+            </return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-unassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-unassign.xml
new file mode 100644
index 0000000..673c513
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-unassign.xml
@@ -0,0 +1,153 @@
+<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='port-mirror-topology-operation-unassign' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.configuration-id' value='`$port-mirror-topology-operation-input.configuration-information.configuration-id`' />
+                <parameter name='tmp.service-instance-id' value='`$port-mirror-topology-operation-input.service-information.service-instance-id`' />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.pm-configuration`"/>
+                <parameter name="outputPath" value="tmp.pmc-url"/>
+                <parameter name="target" value="{configuration-id}"/>
+                <parameter name="replacement" value="`$tmp.configuration-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="pm-mdsal" />
+                <outcome value='success'>
+                    <switch test='`$pm-mdsal.port-mirror-configuration_length == 1`'>
+                        <outcome value='false'>
+                            <return status='failure'>
+                                <parameter name='error-code' value='500' />
+                                <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`" />
+                            </return>
+                        </outcome>
+                    </switch>
+                </outcome>
+                <outcome value='Other'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Cannot find port-mirror-configuration ' + $tmp.configuration-id`" />
+                    </return>
+                </outcome>
+            </execute>
+            <switch test="`$pm-mdsal.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status == 'Created'`">
+                <outcome value='false'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="`'Order status is ' + $mdsal-pmc.port-mirror-configuration[0].configuration-data.configuration-oper-status.order-status + ' but must be Created'`" />
+                    </return>
+                </outcome>
+            </switch>
+            <set>
+                <parameter name='pm.configuration-id' value='`$tmp.configuration-id`' />
+                <parameter name='pm.configuration-data.' value='`$pm-mdsal.port-mirror-configuration[0].configuration-data.`' />
+            </set>
+            <set>
+                <parameter name='tmp.configuration-sub-type' value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.probe-type`' />
+            </set>
+            <switch test='`$tmp.configuration-sub-type`'>
+                <outcome value='vprobe'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='cto-api.default-domain' value='default-domain' />
+                            <parameter name='cto-api.default-project'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.tenant`' />
+                            <parameter name='cto-api.cloud-region-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.cloud-region-id`' />
+                            <parameter name='cto-api.contrail-route-allotted-resource-id'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.route-allotted-resource-id`' />
+                            <parameter name='cto-api.rollback-flag' value='false' />
+                            <parameter name='cto-api.configuration-id' value='`$tmp.configuration-id`' />
+                            <parameter name='cto-api.owning-entity'
+  value='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.owning-entity`' />
+                        </set>
+                        <call module='GENERIC-RESOURCE-API' rpc='api-contrail-route-topology-operation-delete' mode='sync' >
+                            <outcome value='failure'>
+                                <return status='failure'></return>
+                            </outcome>
+                        </call>
+                        <call module='GENERIC-RESOURCE-API' rpc='port-mirror-rollback-capacity-db' mode='sync' >
+                            <outcome value='failure'>
+                                <return status='failure'></return>
+                            </outcome>
+                        </call>
+                    </block>
+                </outcome>
+            </switch>
+            <for silentFailure='true' index='src-idx' start='0' end='`$pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map_length`' >
+                <block atomic="true">
+                    <set>
+                        <parameter name='tmp.link-name' value="`'PMC_' + $tmp.configuration-id
+  + '_Source' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].source-port-name
+  + '_Dest' + $pm.configuration-data.port-mirror-configuration-topology.port-mirror-configuration-assignments.source-to-dest-maps.source-to-dest-map[$src-idx].dest-port-name`" />
+                    </set>
+                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="logical-link" 
+	key="logical-link.link-name = $tmp.link-name" >
+                        <outcome value='failure'>
+                            <block atomic="true">
+                                <return status='failure'>
+                                    <parameter name='error-code' value='500' />
+                                    <parameter name='error-message' value="`'Failed to delete logical-link in AAI: ' + $tmp.link-name`" />
+                                </return>
+                            </block>
+                        </outcome>
+                        <outcome value='not-found'>
+                            <block atomic="true"></block>
+                        </outcome>
+                    </delete>
+                </block>
+            </for>
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+   resource="configuration"
+   key="configuration.configuration-id = $tmp.configuration-id"
+   force="true" pfx="tmp.AnAI-data">
+                <parameter name="operational-status" value="out-of-service-path" />
+                <outcome value='not-found'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="Unable to find configuration object in AAI" />
+                    </return>
+                </outcome>
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="Failure updating configuration object in AAI" />
+                    </return>
+                </outcome>
+            </update>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.pmc-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='DELETE' />
+                <parameter name="responsePrefix" value="mdsal-pmc" />
+                <outcome value='success'>
+                    <block></block>
+                </outcome>
+                <outcome value='Other'>
+                    <return status='failure'>
+                        <parameter name='error-code' value='500' />
+                        <parameter name='error-message' value="Failed to delete port-mirror-configuration object in MD-SAL" />
+                    </return>
+                </outcome>
+            </execute>
+            <return status='success'>
+                <parameter name='error-code' value='200' />
+                <parameter name='ack-final' value='Y' />
+            </return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-validation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-validation.xml
new file mode 100755
index 0000000..5a8dad5
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation-validation.xml
@@ -0,0 +1,237 @@
+<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='port-mirror-topology-operation-validation' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.service-information.subscription-service-type`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value="`'No service exists for service instance ' + $port-mirror-topology-operation-input.service-information.service-instance-id`" />

+                        <parameter name='ack-final' value='Y' />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value="No configuration-id supplied in input" />

+                        <parameter name='ack-final' value='Y' />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`'>

+                <outcome value='pprobe'>

+                    <set>

+                        <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='pprobe' />

+                    </set>

+                </outcome>

+                <outcome value='PPROBE'>

+                    <set>

+                        <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='pprobe' />

+                    </set>

+                </outcome>

+                <outcome value='vprobe'>

+                    <set>

+                        <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='vprobe' />

+                    </set>

+                </outcome>

+                <outcome value='VPROBE'>

+                    <set>

+                        <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='vprobe' />

+                    </set>

+                </outcome>

+                <outcome value=''>

+                    <set>

+                        <parameter name='port-mirror-topology-operation-input.configuration-information.configuration-sub-type' value='vprobe' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value="configuration-sub-type must be pprobe or vprobe" />

+                        <parameter name='ack-final' value='Y' />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='assign'>

+                    <block atomic="true">

+                        <switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="svc-notification-url is required for assign" />

+                                    <parameter name='ack-final' value='Y' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test="`$port-mirror-topology-operation-input.request-information.request-action == 'CreatePortMirrorConfigurationInstance'`">

+                            <outcome value='false'>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="request-action must be CreatePortMirrorConfigurationInstance for assign" />

+                                    <parameter name='ack-final' value='Y' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-type`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="configuration-type is required for assign" />

+                                    <parameter name='ack-final' value='Y' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$port-mirror-topology-operation-input.configuration-information.onap-model-information.model-customization-uuid`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="configuration-information.onap-model-information.model-customization-uuid is required for assign" />

+                                    <parameter name='ack-final' value='Y' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.vnf-information.vnf-id`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="source vnf-id is required for assign" />

+                                    <parameter name='ack-final' value='Y' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$port-mirror-topology-operation-input.configuration-information.configuration-sub-type`'>

+                            <outcome value='vprobe'>

+                                <switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.dest-port.vnf-information.vnf-id`'>

+                                    <outcome value=''>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500' />

+                                            <parameter name='error-message' value="dest vnf-id is required for vprobe assign" />

+                                            <parameter name='ack-final' value='Y' />

+                                        </return>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                            <outcome value='pprobe'>

+                                <switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.dest-port.pnf-information.pnf-name`'>

+                                    <outcome value=''>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500' />

+                                            <parameter name='error-message' value="dest pnf-name is required for pprobe assign" />

+                                            <parameter name='ack-final' value='Y' />

+                                        </return>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='activate'>

+                    <block atomic="true">

+                        <switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="svc-notification-url is required for activate" />

+                                    <parameter name='ack-final' value='Y' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test="`$port-mirror-topology-operation-input.request-information.request-action == 'CreatePortMirrorConfigurationInstance'`">

+                            <outcome value='false'>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="request-action must be CreatePortMirrorConfigurationInstance for activate" />

+                                    <parameter name='ack-final' value='Y' />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='unassign'>

+                    <block atomic="true">

+                        <switch test="`$port-mirror-topology-operation-input.request-information.request-action == 'DeletePortMirrorConfigurationInstance'`">

+                            <outcome value='false'>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="request-action must be DeletePortMirrorConfigurationInstance for unassign" />

+                                    <parameter name='ack-final' value='Y' />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='deactivate'>

+                    <block atomic="true">

+                        <switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-notification-url`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="svc-notification-url is required for deactivate" />

+                                    <parameter name='ack-final' value='Y' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test="`$port-mirror-topology-operation-input.request-information.request-action == 'DeletePortMirrorConfigurationInstance'`">

+                            <outcome value='false'>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="request-action must be DeletePortMirrorConfigurationInstance for deactivate" />

+                                    <parameter name='ack-final' value='Y' />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='enable'>

+                    <block atomic="true">

+                        <switch test="`$port-mirror-topology-operation-input.request-information.request-action == 'ChangePortMirrorConfigurationInstance'`">

+                            <outcome value='false'>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="request-action must be ChangePortMirrorConfigurationInstance for enable" />

+                                    <parameter name='ack-final' value='Y' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="port-mirror-configuration-request-input.source-port.source-port-id is required for enable" />

+                                    <parameter name='ack-final' value='Y' />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='disable'>

+                    <block atomic="true">

+                        <switch test="`$port-mirror-topology-operation-input.request-information.request-action == 'ChangePortMirrorConfigurationInstance'`">

+                            <outcome value='false'>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="request-action must be ChangePortMirrorConfigurationInstance for disable" />

+                                    <parameter name='ack-final' value='Y' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$port-mirror-topology-operation-input.port-mirror-configuration-request-input.source-port.source-port-id`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="port-mirror-configuration-request-input.source-port.source-port-id is required for disable" />

+                                    <parameter name='ack-final' value='Y' />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <return status='success'></return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation.xml
new file mode 100644
index 0000000..fb3cdb2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_port-mirror-topology-operation.xml
@@ -0,0 +1,90 @@
+<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='port-mirror-topology-operation' mode='sync'>
+        <block atomic="true">
+            <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-validation' mode='sync' >
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y' />
+                    </return>
+                </outcome>
+            </call>
+            <switch test='`$port-mirror-topology-operation-input.sdnc-request-header.svc-action`'>
+                <outcome value='assign'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-assign-sync' mode='sync' >
+                            <outcome value='failure'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y' />
+                                </return>
+                            </outcome>
+                        </call>
+                    </block>
+                </outcome>
+                <outcome value='activate'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-activate-sync' mode='sync' >
+                            <outcome value='failure'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y' />
+                                </return>
+                            </outcome>
+                        </call>
+                    </block>
+                </outcome>
+                <outcome value='unassign'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-unassign' mode='sync' >
+                            <outcome value='failure'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y' />
+                                </return>
+                            </outcome>
+                        </call>
+                    </block>
+                </outcome>
+                <outcome value='deactivate'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-deactivate-sync' mode='sync' >
+                            <outcome value='failure'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y' />
+                                </return>
+                            </outcome>
+                        </call>
+                    </block>
+                </outcome>
+                <outcome value='enable'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-enable' mode='sync' >
+                            <outcome value='failure'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y' />
+                                </return>
+                            </outcome>
+                        </call>
+                    </block>
+                </outcome>
+                <outcome value='disable'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='port-mirror-topology-operation-disable' mode='sync' >
+                            <outcome value='failure'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y' />
+                                </return>
+                            </outcome>
+                        </call>
+                    </block>
+                </outcome>
+            </switch>
+            <set>
+                <parameter name='service-object-path' value="`'/config/GENERIC-RESOURCE-API:services/service/'
+  + $port-mirror-topology-operation-input.service-information.service-instance-id + '/service-data/service-topology'`" />
+                <parameter name='port-mirror-object-path' value="`'/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/'
+  + $port-mirror-topology-operation-input.configuration-information.configuration-id + '/configuration-data/port-mirror-configuration-topology'`" />
+            </set>
+            <return status='success'></return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_preload-network-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_preload-network-topology-operation.xml
new file mode 100755
index 0000000..2558152
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_preload-network-topology-operation.xml
@@ -0,0 +1,34 @@
+<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='preload-network-topology-operation' mode='sync'>

+        <block atomic="true">

+            <switch test='`$preload-data.preload-network-topology-information.network-topology-identifier-structure.network-name`'>

+                <outcome value=''>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='preload-data.' value='' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='preload-data.preload-network-topology-information.'

+  value='`$preload-network-topology-operation-input.preload-network-topology-information.`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+                <parameter name="outputPath" value="tmp.current-time" />

+            </execute>

+            <set>

+                <parameter name='preload-data.preload-oper-status.order-status' value='PendingAssignment' />

+                <parameter name='preload-data.preload-oper-status.create-timestamp' value='`$tmp.current-time`' />

+            </set>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="success" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_preload-vf-module-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_preload-vf-module-topology-operation.xml
new file mode 100755
index 0000000..91fd4a7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_preload-vf-module-topology-operation.xml
@@ -0,0 +1,34 @@
+<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='preload-vf-module-topology-operation' mode='sync'>

+        <block atomic="true">

+            <switch test='`$preload-data.preload-vf-module-topology-information.vf-module-topology.vf-module-topology-identifier.vf-module-name`'>

+                <outcome value=''>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='preload-data.' value='' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='preload-data.preload-vf-module-topology-information.'

+  value='`$preload-vf-module-topology-operation-input.preload-vf-module-topology-information.`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+                <parameter name="outputPath" value="tmp.current-time" />

+            </execute>

+            <set>

+                <parameter name='preload-data.preload-oper-status.order-status' value='PendingAssignment' />

+                <parameter name='preload-data.preload-oper-status.create-timestamp' value='`$tmp.current-time`' />

+            </set>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="success" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_process-eipam-pools.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_process-eipam-pools.xml
new file mode 100755
index 0000000..0f27169
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_process-eipam-pools.xml
@@ -0,0 +1,935 @@
+<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="process-eipam-pools" mode="sync">

+        <switch test='`$tmp.process-eipam-action`'>

+            <outcome value='assign'>

+                <block atomic="true">

+                    <set>

+                        <parameter name='eipam-ip-block.entity-id' value='' />

+                        <parameter name='eipam-ip-block.ip-prefix' value='' />

+                        <parameter name='eipam-ip-block.mask' value='' />

+                        <parameter name='tmp.location8' value='' />

+                        <parameter name='tmp.l3-network.level1.v4.entity-id' value='' />

+                        <parameter name='tmp.l3-network.level1.v4.ip-prefix' value='' />

+                        <parameter name='tmp.l3-network.level1.v4.mask' value='' />

+                        <parameter name='tmp.l3-network.level1.v4.pool.pre-existing' value='false' />

+                        <parameter name='tmp.l3-network.level1.v4.subnet.pre-existing' value='false' />

+                        <parameter name='tmp.l3-network.level1.v6.entity-id' value='' />

+                        <parameter name='tmp.l3-network.level1.v6.ip-prefix' value='' />

+                        <parameter name='tmp.l3-network.level1.v6.mask' value='' />

+                        <parameter name='tmp.l3-network.level1.v6.pool.pre-existing' value='false' />

+                        <parameter name='tmp.l3-network.level1.v6.subnet.pre-existing' value='false' />

+                        <parameter name='tmp.l3-network.level2.v4.entity-id' value='' />

+                        <parameter name='tmp.l3-network.level2.v4.ip-prefix' value='' />

+                        <parameter name='tmp.l3-network.level2.v4.mask' value='' />

+                        <parameter name='tmp.l3-network.level2.v4.pool.pre-existing' value='false' />

+                        <parameter name='tmp.l3-network.level2.v4.subnet.pre-existing' value='false' />

+                        <parameter name='tmp.l3-network.level2.v6.entity-id' value='' />

+                        <parameter name='tmp.l3-network.level2.v6.ip-prefix' value='' />

+                        <parameter name='tmp.l3-network.level2.v6.mask' value='' />

+                        <parameter name='tmp.l3-network.level2.v6.pool.pre-existing' value='false' />

+                        <parameter name='tmp.l3-network.level2.v6.subnet.pre-existing' value='false' />

+                    </set>

+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>

+                        <parameter name="string" value="`$aai.complex.physical-location-id`" />

+                        <parameter name="result" value="tmp.location8"/>

+                        <parameter name="begin-index" value="0" />

+                        <parameter name="end-index" value="8" />

+                    </execute>

+                    <set>

+                        <parameter name='tmp.region' value='`$aai.complex.region`' />

+                        <parameter name='tmp.cloud-region-id' value="`$aai.cloud-region.cloud-region-id`" />

+                        <parameter name='tmp.physical-location-id' value="`$aai.complex.physical-location-id`" />

+                        <parameter name="tmp.clli" value="`$aai.complex.physical-location-id`" />

+                        <parameter name="tmp.zone" value="`$aai.cloud-region.cloud-zone`" />

+                        <parameter name="tmp.network-id" value="`$tmp.l3-network.network-id`" />

+                        <parameter name="tmp.service-type" value="`$network-topology-operation-input.service-information.subscription-service-type`" />

+                        <parameter name="eipam-ip-block.level" value='1' />

+                        <parameter name='eipam-ip-block.plans_length' value='0' />

+                        <parameter name='eipam-pool.v4.pre-existing' value='false' />

+                        <parameter name='eipam-pool.v6.pre-existing' value='false' />

+                        <parameter name="tmp.level1-key-value" value="`$tmp.location8 + ':' + $aai.cloud-region.cloud-region-id`" />

+                        <parameter name="tmp.level2-key-value" value="`$network-model.network-role + ':' + $tmp.l3-network.network-id`" />

+                        <parameter name="tmp.ipv4-cidr-mask" value="`$network-model.ipv4-cidr-mask`" />

+                        <parameter name="tmp.ipv6-cidr-mask" value="`$network-model.ipv6-cidr-mask`" />

+                    </set>

+                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                    <set>

+                        <parameter name="eipam-ip-block.subnet-size-override-v4" value="`$network-model.ipv4-cidr-mask`" />

+                        <parameter name="eipam-ip-block.subnet-size-override-v6" value="`$network-model.ipv6-cidr-mask`" />

+                    </set>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">

+                        <outcome value=''>

+                            <block></block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <block>

+                                <for index='pidx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >

+                                            <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].name`" />

+                                            <parameter name="target" value="network_assignments_ipv4_subnet_default_assignment_cidr_mask"/>

+                                            <outcome value='true'>

+                                                <set>

+                                                    <parameter name='eipam-ip-block.subnet-size-override-v4' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].value`' />

+                                                </set>

+                                            </outcome>

+                                        </execute>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >

+                                            <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].name`" />

+                                            <parameter name="target" value="network_assignments_ipv6_subnet_default_assignment_cidr_mask"/>

+                                            <outcome value='true'>

+                                                <set>

+                                                    <parameter name='eipam-ip-block.subnet-size-override-v6' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].value`' />

+                                                </set>

+                                            </outcome>

+                                        </execute>

+                                    </block>

+                                </for>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <!--tmp.level should be set to 1-->

+                    <call module='GENERIC-RESOURCE-API' rpc='eipam-create-network-role-pool' mode='sync' >

+                        <outcome value='failure'>

+                            <return status="failure">

+                                <parameter name="tmp.eipam-error" value="true" />

+                                <parameter name="error-code" value="500"/>

+                                <parameter name="error-message" value="`'An error occured while allocating subnet in EIPAM.  Error creating level 1 pool. ' + $error-message`" />

+                            </return>

+                        </outcome>

+                        <outcome value='success'>

+                            <block atomic="true">

+                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                    <parameter name="logger" value="message-log"/>

+                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                    <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                    <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                    <parameter name="field4" value="eipam-pool.v4.pre-existing"/>

+                                    <parameter name="field5" value="`$eipam-pool.v4.pre-existing`"/>

+                                    <parameter name="field6" value="eipam-pool.v4.pre-existing"/>

+                                    <parameter name="field7" value="`$eipam-pool.v6.pre-existing`"/>

+                                    <parameter name="field8" value="tmp.create-v4-pool-flag" />

+                                    <parameter name="field9" value="`$tmp.create-v4-pool-flag`" />

+                                    <parameter name="field10" value="tmp.create-v6-pool-flag" />

+                                    <parameter name="field11" value="`$tmp.create-v6-pool-flag`" />

+                                </record>

+                                <set>

+                                    <parameter name='tmp.l3-network.level1.v4.pool.pre-existing' value='`$eipam-pool.v4.pre-existing`'/>

+                                    <parameter name='tmp.l3-network.level1.v6.pool.pre-existing' value='`$eipam-pool.v6.pre-existing`'/>

+                                </set>

+                            </block>

+                        </outcome>

+                    </call>

+                    <switch test="`$network-model.use-ipv4`">

+                        <outcome value='Y'>

+                            <block atomic='true'>

+                                <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v4-address-plan and s.entity_id = k.entity_id and k.level = 1 and k.key_value = $tmp.level1-key-value ; "

+        pfx='tmp.eipam-subnet-row'>

+                                    <outcome value='success'>

+                                        <block atomic="true">

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                <parameter name="field4" value="Existing eipam-ip-block.ip-prefix for level1"/>

+                                                <parameter name="field5" value="`$tmp.eipam-subnet-row.ip-address`"/>

+                                                <parameter name="field6" value="Existing eipam-ip-block.mask for level1"/>

+                                                <parameter name="field7" value="`$tmp.eipam-subnet-row.prefix-length`"/>

+                                                <parameter name="field8" value="ipv4"/>

+                                            </record>

+                                            <set>

+                                                <parameter name='tmp.l3-network.level1.v4.subnet.pre-existing' value='true' />

+                                                <parameter name='tmp.l3-network.level1.v4.entity-id' value='`$tmp.eipam-row.entity-id`' />

+                                                <parameter name='tmp.l3-network.level1.v4.ip-prefix' value='`$tmp.eipam-row.ip-address`' />

+                                                <parameter name='tmp.l3-network.level1.v4.mask' value='`$tmp.eipam-row.prefix-length`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                    <outcome value="not-found">

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name='eipam-ip-block.entity-id' value='' />

+                                                <parameter name='eipam-ip-block.ip-prefix' value='' />

+                                                <parameter name='eipam-ip-block.mask' value='' />

+                                                <parameter name="eipam-ip-block.allocate-version" value='ipv4' />

+                                                <parameter name="eipam-ip-block.level" value='1' />

+                                                <parameter name='eipam-ip-block.plans_length' value='0' />

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-network-role-subnet' mode='sync' >

+                                                <outcome value='success'>

+                                                    <block atomic="true">

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                            <parameter name="field4" value="eipam-ip-block.ip-prefix for level1"/>

+                                                            <parameter name="field5" value="`$eipam-ip-block.ip-prefix`"/>

+                                                            <parameter name="field6" value="eipam-ip-block.mask for level1"/>

+                                                            <parameter name="field7" value="`$eipam-ip-block.mask`"/>

+                                                            <parameter name="field8" value="ipv4"/>

+                                                        </record>

+                                                        <set>

+                                                            <parameter name='tmp.l3-network.level1.v4.subnet.pre-existing' value='' />

+                                                            <parameter name='tmp.l3-network.level1.v4.entity-id' value='`$eipam-ip-block.entity-id`' />

+                                                            <parameter name='tmp.l3-network.level1.v4.ip-prefix' value='`$eipam-ip-block.ip-prefix`' />

+                                                            <parameter name='tmp.l3-network.level1.v4.mask' value='`$eipam-ip-block.mask`' />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='failure'>

+                                                    <block atomic="true">

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                            <parameter name="field4" value="Failed to allocate level1 ipv4 subnet - failure from eipam-allocate-network-role-subnet"/>

+                                                        </record>

+                                                        <switch test="`$tmp.l3-network.level1.v4.pool.pre-existing`">

+                                                            <outcome value='true'>

+                                                                <return status="failure">

+                                                                    <parameter name="tmp.eipam-error" value="true" />

+                                                                    <parameter name="error-code" value="500"/>

+                                                                    <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />

+                                                                </return>

+                                                            </outcome>

+                                                            <outcome value='false'>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                        <parameter name="eipam-ip-block.level" value='1' />

+                                                                    </set>

+                                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                        <outcome value='failure'>

+                                                                            <return status="failure">

+                                                                                <parameter name="tmp.eipam-error" value="true" />

+                                                                                <parameter name="error-code" value="500"/>

+                                                                                <parameter name="error-message" value="An error occured while allocating subnet in EIPAM.  Error rolling back EIPAM level 1 pool." />

+                                                                            </return>

+                                                                        </outcome>

+                                                                        <outcome value='Other'>

+                                                                            <return status="failure">

+                                                                                <parameter name="tmp.eipam-error" value="true" />

+                                                                                <parameter name="error-code" value="500"/>

+                                                                                <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Rollback complete." />

+                                                                            </return>

+                                                                        </outcome>

+                                                                    </execute>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value=''>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                        <parameter name="eipam-ip-block.level" value='1' />

+                                                                    </set>

+                                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                        <outcome value='failure'>

+                                                                            <return status="failure">

+                                                                                <parameter name="tmp.eipam-error" value="true" />

+                                                                                <parameter name="error-code" value="500"/>

+                                                                                <parameter name="error-message" value="An error occured while allocating subnet in EIPAM.  Error rolling back EIPAM level 1 pool." />

+                                                                            </return>

+                                                                        </outcome>

+                                                                        <outcome value='Other'>

+                                                                            <return status="failure">

+                                                                                <parameter name="tmp.eipam-error" value="true" />

+                                                                                <parameter name="error-code" value="500"/>

+                                                                                <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Rollback complete." />

+                                                                            </return>

+                                                                        </outcome>

+                                                                    </execute>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                </outcome>

+                                            </call>

+                                        </block>

+                                    </outcome>

+                                </get-resource>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-model.use-ipv6`">

+                        <outcome value='Y'>

+                            <block atomic='true'>

+                                <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v6-address-plan and s.entity_id = k.entity_id and k.level = 1 and k.key_value = $tmp.level1-key-value ; "

+        pfx='tmp.eipam-subnet-row'>

+                                    <outcome value='success'>

+                                        <block atomic="true">

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                <parameter name="field4" value="Existing eipam-ip-block.ip-prefix for level1"/>

+                                                <parameter name="field5" value="`$tmp.eipam-subnet-row.ip-address`"/>

+                                                <parameter name="field6" value="Existing eipam-ip-block.mask for level1"/>

+                                                <parameter name="field7" value="`$tmp.eipam-subnet-row.prefix-length`"/>

+                                                <parameter name="field8" value="ipv6"/>

+                                            </record>

+                                            <set>

+                                                <parameter name='tmp.l3-network.level1.v6.subnet.pre-existing' value='true' />

+                                                <parameter name='tmp.l3-network.level1.v6.entity-id' value='`$tmp.eipam-row.entity-id`' />

+                                                <parameter name='tmp.l3-network.level1.v6.ip-prefix' value='`$tmp.eipam-row.ip-address`' />

+                                                <parameter name='tmp.l3-network.level1.v6.mask' value='`$tmp.eipam-row.prefix-length`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                    <outcome value="not-found">

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name='eipam-ip-block.entity-id' value='' />

+                                                <parameter name='eipam-ip-block.ip-prefix' value='' />

+                                                <parameter name='eipam-ip-block.mask' value='' />

+                                                <parameter name="eipam-ip-block.allocate-version" value='ipv6' />

+                                                <parameter name="eipam-ip-block.level" value='1' />

+                                                <parameter name='eipam-ip-block.plans_length' value='0' />

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-network-role-subnet' mode='sync' >

+                                                <outcome value='success'>

+                                                    <block atomic="true">

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                            <parameter name="field4" value="eipam-ip-block.ip-prefix for level1"/>

+                                                            <parameter name="field5" value="`$eipam-ip-block.ip-prefix`"/>

+                                                            <parameter name="field6" value="eipam-ip-block.mask for level1"/>

+                                                            <parameter name="field7" value="`$eipam-ip-block.mask`"/>

+                                                            <parameter name="field8" value="ipv6"/>

+                                                        </record>

+                                                        <set>

+                                                            <parameter name='tmp.l3-network.level1.v6.subnet.pre-existing' value='' />

+                                                            <parameter name='tmp.l3-network.level1.v6.entity-id' value='`$eipam-ip-block.entity-id`' />

+                                                            <parameter name='tmp.l3-network.level1.v6.ip-prefix' value='`$eipam-ip-block.ip-prefix`' />

+                                                            <parameter name='tmp.l3-network.level1.v6.mask' value='`$eipam-ip-block.mask`' />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='failure'>

+                                                    <block atomic="true">

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                            <parameter name="field4" value="Failed to allocate level1 ipv6 subnet - failure from eipam-allocate-network-role-subnet"/>

+                                                        </record>

+                                                        <switch test="`$tmp.l3-network.level1.v6.pool.pre-existing`">

+                                                            <outcome value='true'>

+                                                                <return status="failure">

+                                                                    <parameter name="tmp.eipam-error" value="true" />

+                                                                    <parameter name="error-code" value="500"/>

+                                                                    <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />

+                                                                </return>

+                                                            </outcome>

+                                                            <outcome value='false'>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                        <parameter name="eipam-ip-block.level" value='1' />

+                                                                    </set>

+                                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                        <outcome value='Other'>

+                                                                            <return status="failure">

+                                                                                <parameter name="tmp.eipam-error" value="true" />

+                                                                                <parameter name="error-code" value="500"/>

+                                                                                <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Rollback complete." />

+                                                                            </return>

+                                                                        </outcome>

+                                                                        <outcome value='failure'>

+                                                                            <return status="failure">

+                                                                                <parameter name="tmp.eipam-error" value="true" />

+                                                                                <parameter name="error-code" value="500"/>

+                                                                                <parameter name="error-message" value="An error occured while allocating subnet in EIPAM.  Error rolling back EIPAM level 1 pool." />

+                                                                            </return>

+                                                                        </outcome>

+                                                                    </execute>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value=''>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                        <parameter name="eipam-ip-block.level" value='1' />

+                                                                    </set>

+                                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                        <outcome value='Other'>

+                                                                            <return status="failure">

+                                                                                <parameter name="tmp.eipam-error" value="true" />

+                                                                                <parameter name="error-code" value="500"/>

+                                                                                <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Rollback complete." />

+                                                                            </return>

+                                                                        </outcome>

+                                                                        <outcome value='failure'>

+                                                                            <return status="failure">

+                                                                                <parameter name="tmp.eipam-error" value="true" />

+                                                                                <parameter name="error-code" value="500"/>

+                                                                                <parameter name="error-message" value="An error occured while allocating subnet in EIPAM.  Error rolling back EIPAM level 1 pool." />

+                                                                            </return>

+                                                                        </outcome>

+                                                                    </execute>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                </outcome>

+                                            </call>

+                                        </block>

+                                    </outcome>

+                                </get-resource>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <set>

+                        <parameter name='eipam-ip-block.entity-id' value='' />

+                        <parameter name='eipam-ip-block.ip-prefix' value='' />

+                        <parameter name='eipam-ip-block.mask' value='' />

+                        <parameter name="eipam-ip-block.level" value='2' />

+                        <parameter name='eipam-ip-block.plans_length' value='0' />

+                        <parameter name='eipam-pool.v4.pre-existing' value='false' />

+                        <parameter name='eipam-pool.v6.pre-existing' value='false' />

+                    </set>

+                    <!--tmp.level should be set to 1-->

+                    <call module='GENERIC-RESOURCE-API' rpc='eipam-create-network-role-pool' mode='sync' >

+                        <outcome value='failure'>

+                            <block atomic="true">

+                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                    <parameter name="logger" value="message-log"/>

+                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                    <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                    <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                    <parameter name="field4" value="Error creating level 2 pool, need to attempt rollback"/>

+                                </record>

+                                <return status="failure">

+                                    <parameter name="tmp.eipam-error" value="true" />

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="error-message" value="An error occured while allocating subnet in EIPAM.  Error creating level 2 pool" />

+                                </return>

+                            </block>

+                        </outcome>

+                        <outcome value='success'>

+                            <block atomic="true">

+                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                    <parameter name="logger" value="message-log"/>

+                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                    <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                    <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                    <parameter name="field4" value="eipam-pool.v4.pre-existing"/>

+                                    <parameter name="field5" value="`$eipam-pool.v4.pre-existing`"/>

+                                    <parameter name="field6" value="eipam-pool.v4.pre-existing"/>

+                                    <parameter name="field7" value="`$eipam-pool.v6.pre-existing`"/>

+                                    <parameter name="field8" value="tmp.create-v4-pool-flag" />

+                                    <parameter name="field9" value="`$tmp.create-v4-pool-flag`" />

+                                    <parameter name="field10" value="tmp.create-v6-pool-flag" />

+                                    <parameter name="field11" value="`$tmp.create-v6-pool-flag`" />

+                                </record>

+                                <set>

+                                    <parameter name='tmp.l3-network.level2.v4.pre-existing' value='`$eipam-pool.v4.pre-existing`'/>

+                                    <parameter name='tmp.l3-network.level2.v6.pre-existing' value='`$eipam-pool.v6.pre-existing`'/>

+                                </set>

+                            </block>

+                        </outcome>

+                    </call>

+                    <switch test="`$network-model.use-ipv4`">

+                        <outcome value='Y'>

+                            <block atomic='true'>

+                                <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v4-address-plan and s.entity_id = k.entity_id and k.level = 2 and k.key_value = $tmp.level2-key-value ; "

+        pfx='tmp.eipam-subnet-row'>

+                                    <outcome value='success'>

+                                        <block atomic="true">

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                <parameter name="field4" value="Existing eipam-ip-block.ip-prefix for level2"/>

+                                                <parameter name="field5" value="`$tmp.eipam-subnet-row.ip-address`"/>

+                                                <parameter name="field6" value="Existing eipam-ip-block.mask for level2"/>

+                                                <parameter name="field7" value="`$tmp.eipam-subnet-row.prefix-length`"/>

+                                                <parameter name="field8" value="ipv4"/>

+                                            </record>

+                                            <set>

+                                                <parameter name='tmp.l3-network.level2.v4.subnet.pre-existing' value='true' />

+                                                <parameter name='tmp.l3-network.level2.v4.entity-id' value='`$tmp.eipam-row.entity-id`' />

+                                                <parameter name='tmp.l3-network.level2.v4.ip-prefix' value='`$tmp.eipam-row.ip-address`' />

+                                                <parameter name='tmp.l3-network.level2.v4.mask' value='`$tmp.eipam-row.prefix-length`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                    <outcome value="not-found">

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name='eipam-ip-block.entity-id' value='' />

+                                                <parameter name='eipam-ip-block.ip-prefix' value='' />

+                                                <parameter name='eipam-ip-block.mask' value='' />

+                                                <parameter name="eipam-ip-block.allocate-version" value='ipv4' />

+                                                <parameter name="eipam-ip-block.level" value='2' />

+                                                <parameter name='eipam-ip-block.plans_length' value='0' />

+                                                <parameter name="eipam-ip-block.subnet-size-override" value="`$eipam-ip-block.subnet-size-override-v4`" />

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-network-role-subnet' mode='sync' >

+                                                <outcome value='success'>

+                                                    <block atomic="true">

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                            <parameter name="field4" value="eipam-ip-block.ip-prefix for level2"/>

+                                                            <parameter name="field5" value="`$eipam-ip-block.ip-prefix`"/>

+                                                            <parameter name="field6" value="eipam-ip-block.mask for level2"/>

+                                                            <parameter name="field7" value="`$eipam-ip-block.mask`"/>

+                                                            <parameter name="field8" value="ipv4"/>

+                                                        </record>

+                                                        <set>

+                                                            <parameter name='tmp.l3-network.level2.v4.subnet.pre-existing' value='' />

+                                                            <parameter name='tmp.l3-network.level2.v4.entity-id' value='`$eipam-ip-block.entity-id`' />

+                                                            <parameter name='tmp.l3-network.level2.v4.ip-prefix' value='`$eipam-ip-block.ip-prefix`' />

+                                                            <parameter name='tmp.l3-network.level2.v4.mask' value='`$eipam-ip-block.mask`' />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='failure'>

+                                                    <block atomic="true">

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                            <parameter name="field4" value="Failed to allocate level2 ipv4 subnet - failure from eipam-allocate-network-role-subnet"/>

+                                                        </record>

+                                                        <switch test="`$tmp.l3-network.level2.v4.pool.pre-existing`">

+                                                            <outcome value='true'>

+                                                                <return status="failure">

+                                                                    <parameter name="tmp.eipam-error" value="true" />

+                                                                    <parameter name="error-code" value="500"/>

+                                                                    <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />

+                                                                </return>

+                                                            </outcome>

+                                                            <outcome value='false'>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                        <parameter name="eipam-ip-block.level" value='2' />

+                                                                    </set>

+                                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                        <outcome value='failure'></outcome>

+                                                                        <outcome value='Other'></outcome>

+                                                                    </execute>

+                                                                    <switch test="`$tmp.l3-network.level1.v4.pool.pre-existing == true or $tmp.l3-network.level1.v4.pool.pre-existing == true`">

+                                                                        <outcome value='true'>

+                                                                            <return status="failure">

+                                                                                <parameter name="tmp.eipam-error" value="true" />

+                                                                                <parameter name="error-code" value="500"/>

+                                                                                <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />

+                                                                            </return>

+                                                                        </outcome>

+                                                                        <outcome value='false'>

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                                    <parameter name="eipam-ip-block.level" value='1' />

+                                                                                </set>

+                                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                                    <outcome value='Other'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM. Rollback complete." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                    <outcome value='failure'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM.  Error rolling back EIPAM level 1 pool." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                </execute>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value=''>

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                                    <parameter name="eipam-ip-block.level" value='1' />

+                                                                                </set>

+                                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                                    <outcome value='Other'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM. Rollback complete." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                    <outcome value='failure'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM.  Error rolling back EIPAM level 1 pool." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                </execute>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value=''>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                        <parameter name="eipam-ip-block.level" value='2' />

+                                                                    </set>

+                                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                        <outcome value='failure'></outcome>

+                                                                        <outcome value='Other'></outcome>

+                                                                    </execute>

+                                                                    <switch test="`$tmp.l3-network.level1.v4.pool.pre-existing == true or $tmp.l3-network.level1.v4.pool.pre-existing == true`">

+                                                                        <outcome value='true'>

+                                                                            <return status="failure">

+                                                                                <parameter name="tmp.eipam-error" value="true" />

+                                                                                <parameter name="error-code" value="500"/>

+                                                                                <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />

+                                                                            </return>

+                                                                        </outcome>

+                                                                        <outcome value='false'>

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                                    <parameter name="eipam-ip-block.level" value='1' />

+                                                                                </set>

+                                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                                    <outcome value='Other'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM. Rollback complete." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                    <outcome value='failure'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM.  Error rolling back EIPAM level 1 pool." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                </execute>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value=''>

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                                    <parameter name="eipam-ip-block.level" value='1' />

+                                                                                </set>

+                                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                                    <outcome value='Other'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM. Rollback complete." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                    <outcome value='failure'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv4 subnet in EIPAM.  Error rolling back EIPAM level 1 pool." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                </execute>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                </outcome>

+                                            </call>

+                                        </block>

+                                    </outcome>

+                                </get-resource>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-model.use-ipv6`">

+                        <outcome value='Y'>

+                            <block atomic='true'>

+                                <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v6-address-plan and s.entity_id = k.entity_id and k.level = 2 and k.key_value = $tmp.level2-key-value ; "

+        pfx='tmp.eipam-subnet-row'>

+                                    <outcome value='success'>

+                                        <block atomic="true">

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                <parameter name="field4" value="Existing eipam-ip-block.ip-prefix for level1"/>

+                                                <parameter name="field5" value="`$tmp.eipam-subnet-row.ip-address`"/>

+                                                <parameter name="field6" value="Existing eipam-ip-block.mask for level1"/>

+                                                <parameter name="field7" value="`$tmp.eipam-subnet-row.prefix-length`"/>

+                                                <parameter name="field8" value="ipv6"/>

+                                            </record>

+                                            <set>

+                                                <parameter name='tmp.l3-network.level2.v6.subnet.pre-existing' value='true' />

+                                                <parameter name='tmp.l3-network.level2.v6.entity-id' value='`$tmp.eipam-row.entity-id`' />

+                                                <parameter name='tmp.l3-network.level2.v6.ip-prefix' value='`$tmp.eipam-row.ip-address`' />

+                                                <parameter name='tmp.l3-network.level2.v6.mask' value='`$tmp.eipam-row.prefix-length`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                    <outcome value="not-found">

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name='eipam-ip-block.entity-id' value='' />

+                                                <parameter name='eipam-ip-block.ip-prefix' value='' />

+                                                <parameter name='eipam-ip-block.mask' value='' />

+                                                <parameter name="eipam-ip-block.allocate-version" value='ipv6' />

+                                                <parameter name="eipam-ip-block.level" value='2' />

+                                                <parameter name='eipam-ip-block.plans_length' value='0' />

+                                                <parameter name="eipam-ip-block.subnet-size-override" value="`$eipam-ip-block.subnet-size-override-v6`" />

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-network-role-subnet' mode='sync' >

+                                                <outcome value='success'>

+                                                    <block atomic="true">

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                            <parameter name="field4" value="eipam-ip-block.ip-prefix for level1"/>

+                                                            <parameter name="field5" value="`$eipam-ip-block.ip-prefix`"/>

+                                                            <parameter name="field6" value="eipam-ip-block.mask for level1"/>

+                                                            <parameter name="field7" value="`$eipam-ip-block.mask`"/>

+                                                            <parameter name="field8" value="ipv6"/>

+                                                        </record>

+                                                        <set>

+                                                            <parameter name='tmp.l3-network.level2.v6.subnet.pre-existing' value='' />

+                                                            <parameter name='tmp.l3-network.level2.v6.entity-id' value='`$eipam-ip-block.entity-id`' />

+                                                            <parameter name='tmp.l3-network.level2.v6.ip-prefix' value='`$eipam-ip-block.ip-prefix`' />

+                                                            <parameter name='tmp.l3-network.level2.v6.mask' value='`$eipam-ip-block.mask`' />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='failure'>

+                                                    <block atomic="true">

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                            <parameter name="field4" value="Failed to allocate level2 ipv6 subnet - failure from eipam-allocate-network-role-subnet"/>

+                                                        </record>

+                                                        <switch test="`$tmp.l3-network.level2.v6.pool.pre-existing`">

+                                                            <outcome value='true'>

+                                                                <return status="failure">

+                                                                    <parameter name="tmp.eipam-error" value="true" />

+                                                                    <parameter name="error-code" value="500"/>

+                                                                    <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />

+                                                                </return>

+                                                            </outcome>

+                                                            <outcome value='false'>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                        <parameter name="eipam-ip-block.level" value='2' />

+                                                                    </set>

+                                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                        <outcome value='failure'></outcome>

+                                                                        <outcome value='Other'></outcome>

+                                                                    </execute>

+                                                                    <switch test="`$tmp.l3-network.level1.v4.pool.pre-existing == true or $tmp.l3-network.level1.v4.pool.pre-existing == true`">

+                                                                        <outcome value='true'>

+                                                                            <return status="failure">

+                                                                                <parameter name="tmp.eipam-error" value="true" />

+                                                                                <parameter name="error-code" value="500"/>

+                                                                                <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />

+                                                                            </return>

+                                                                        </outcome>

+                                                                        <outcome value='false'>

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                                    <parameter name="eipam-ip-block.level" value='1' />

+                                                                                </set>

+                                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                                    <outcome value='Other'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM. Rollback complete." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                    <outcome value='failure'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM.  Error rolling back EIPAM level 1 pool." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                </execute>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value=''>

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                                    <parameter name="eipam-ip-block.level" value='1' />

+                                                                                </set>

+                                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                                    <outcome value='Other'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM. Rollback complete." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                    <outcome value='failure'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM.  Error rolling back EIPAM level 1 pool." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                </execute>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value=''>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                        <parameter name="eipam-ip-block.level" value='2' />

+                                                                    </set>

+                                                                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                        <outcome value='failure'></outcome>

+                                                                        <outcome value='Other'></outcome>

+                                                                    </execute>

+                                                                    <switch test="`$tmp.l3-network.level1.v4.pool.pre-existing == true or $tmp.l3-network.level1.v4.pool.pre-existing == true`">

+                                                                        <outcome value='true'>

+                                                                            <return status="failure">

+                                                                                <parameter name="tmp.eipam-error" value="true" />

+                                                                                <parameter name="error-code" value="500"/>

+                                                                                <parameter name="error-message" value="An error occured while allocating subnet in EIPAM. Pre-existing pool, no rollback." />

+                                                                            </return>

+                                                                        </outcome>

+                                                                        <outcome value='false'>

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                                    <parameter name="eipam-ip-block.level" value='1' />

+                                                                                </set>

+                                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                                    <outcome value='Other'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM. Rollback complete." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                    <outcome value='failure'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM.  Error rolling back EIPAM level 1 pool." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                </execute>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value=''>

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name="eipam-ip-block.network-id" value="`$tmp.l3-network.network-id`" />

+                                                                                    <parameter name="eipam-ip-block.level" value='1' />

+                                                                                </set>

+                                                                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                                                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePoolByNetworkLevel">

+                                                                                    <outcome value='Other'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM. Rollback complete." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                    <outcome value='failure'>

+                                                                                        <return status="failure">

+                                                                                            <parameter name="tmp.eipam-error" value="true" />

+                                                                                            <parameter name="error-code" value="500"/>

+                                                                                            <parameter name="error-message" value="An error occured while allocating level 2 ipv6 subnet in EIPAM.  Error rolling back EIPAM level 1 pool." />

+                                                                                        </return>

+                                                                                    </outcome>

+                                                                                </execute>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                </outcome>

+                                            </call>

+                                        </block>

+                                    </outcome>

+                                </get-resource>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </outcome>

+            <outcome value='delete'>

+                <return status="failure">

+                    <parameter name="tmp.eipam-error" value="true" />

+                    <parameter name="error-code" value="500"/>

+                    <parameter name="error-message" value="Invalid option to process-eipam" />

+                </return>

+            </outcome>

+            <outcome value='Other'>

+                <return status="failure">

+                    <parameter name="tmp.eipam-error" value="true" />

+                    <parameter name="error-code" value="500"/>

+                    <parameter name="error-message" value="Invalid option to process-eipam" />

+                </return>

+            </outcome>

+        </switch>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_process-generic-eipam-pools.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_process-generic-eipam-pools.xml
new file mode 100755
index 0000000..d713d23
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_process-generic-eipam-pools.xml
@@ -0,0 +1,661 @@
+<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}'>

+    <!--This DG relys on generate-FQPN to determine the key_names & key_values for all levels for the specified plan-name.-->

+    <method rpc="process-generic-eipam-pools" mode="sync">

+        <block atomic='true'>

+            <set>

+                <parameter name="tmp.eipam-error" value="false" />

+                <parameter name="tmp.create-v4-pool-flag" value="N" />

+                <parameter name="tmp.create-v6-pool-flag" value="N" />

+                <parameter name='eipam-ip-block.plans_length' value='0' />

+                <parameter name="eipam-pool.v4.pre-existing" value="false"/>

+                <parameter name="eipam-pool.v6.pre-existing" value="false"/>

+                <!-- <parameter name="tmp.network-id" value="`$tmp.l3-network.network-id`" /> -->

+                <parameter name="tmp.network-id" value="`$network-topology-operation-input.network-information.network-id`" />

+            </set>

+            <switch test='`$tmp.service-type`'>

+                <outcome value=''>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="tmp.service-type" value="`$service-data.service-information.subscription-service-type`" />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$tmp.network-instance-group-id`'>

+                <outcome value=''>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="tmp.network-instance-group-id" value="`$network-topology-operation-input.network-request-input.network-instance-group-id`" />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$generate-FQPN-input.network-name`'>

+                <outcome value=''>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="generate-FQPN-input.network-name" value="`$network-topology-identifier-structure.network-name`" />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$generate-FQPN-input.zone`'>

+                <outcome value=''>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="generate-FQPN-input.zone" value="`$aai.cloud-region.cloud-zone`" />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$generate-FQPN-input.network-collection`'>

+                <outcome value=''>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name="generate-FQPN-input.network-collection" value="`$aai-network-collection.collection-name`" />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$generate-FQPN-input.aic-cloud-region`'>

+                <outcome value=''>

+                    <block atomic='true'>

+                        <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="cloud-region" 

+		key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND 

+		     cloud-region.cloud-region-id = $aai.cloud-region.cloud-region-id AND

+		     depth = '0'"

+        pfx='aai.cloud-region' >

+                            <outcome value='not-found'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="`'aic-cloud-region, '+ $generate-fqpn-input.aic-cloud-region + ' not found in AAI'`" />

+                                </return>

+                            </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 retrieving cloud region from AAI" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                        <switch test='`$aai.cloud-region.relationship-list.relationship_length`'>

+                            <outcome value='0'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="cloud-region missing relationships in AAI" />

+                                </return>

+                            </outcome>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="cloud-region missing relationships in AAI" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <for index='ridx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >

+                            <for silentFailure='false' index='rdidx' start='0' end="`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`" >

+                                <switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>

+                                    <outcome value='complex.physical-location-id'>

+                                        <block atomic='true'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='tmp.aic-clli' value='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`' />

+                                                </set>

+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>

+                                                    <parameter name='result' value='tmp.truncated.clli8' />

+                                                    <parameter name='string' value='`$tmp.aic-clli`' />

+                                                    <parameter name='begin-index' value='0' />

+                                                    <parameter name='end-index' value='8' />

+                                                </execute>

+                                                <set>

+                                                    <parameter name='generate-FQPN-input.location-clli8' value='`$tmp.truncated.clli8`' />

+                                                </set>

+                                            </block>

+                                            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="complex" 

+		key="complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"

+    pfx='aai.complex' >

+                                                <outcome value='not-found'>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="Complex not found in AAI" />

+                                                    </return>

+                                                </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 retrieving complex from AAI" />

+                                                    </return>

+                                                </outcome>

+                                            </get-resource>

+                                            <set>

+                                                <parameter name='generate-FQPN-input.complex-region' value='`$aai.complex.region`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </for>

+                        </for>

+                        <set>

+                            <parameter name='generate-FQPN-input.aic-cloud-region' 

+	value='`$aai.cloud-region.cloud-region-id`' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$generate-FQPN-input.location-clli8`'>

+                <outcome value=''>

+                    <block atomic='true'>

+                        <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="cloud-region" 

+		key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND 

+		     cloud-region.cloud-region-id = $aai.cloud-region.cloud-region-id AND

+		     depth = '0'"

+        pfx='aai.cloud-region' >

+                            <outcome value='not-found'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="`'aic-cloud-region, '+ $generate-fqpn-input.aic-cloud-region + ' not found in AAI'`" />

+                                </return>

+                            </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 retrieving cloud region from AAI" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                        <switch test='`$aai.cloud-region.relationship-list.relationship_length`'>

+                            <outcome value='0'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="cloud-region missing relationships in AAI" />

+                                </return>

+                            </outcome>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="cloud-region missing relationships in AAI" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <for index='ridx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >

+                            <for silentFailure='false' index='rdidx' start='0' end="`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`" >

+                                <switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>

+                                    <outcome value='complex.physical-location-id'>

+                                        <block atomic='true'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='tmp.aic-clli' value='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`' />

+                                                </set>

+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>

+                                                    <parameter name='result' value='tmp.truncated.clli8' />

+                                                    <parameter name='string' value='`$tmp.aic-clli`' />

+                                                    <parameter name='begin-index' value='0' />

+                                                    <parameter name='end-index' value='8' />

+                                                </execute>

+                                                <set>

+                                                    <parameter name='generate-FQPN-input.location-clli8' value='`$tmp.truncated.clli8`' />

+                                                </set>

+                                            </block>

+                                            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="complex" 

+		key="complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"

+    pfx='aai.complex' >

+                                                <outcome value='not-found'>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="Complex not found in AAI" />

+                                                    </return>

+                                                </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 retrieving complex from AAI" />

+                                                    </return>

+                                                </outcome>

+                                            </get-resource>

+                                            <set>

+                                                <parameter name='generate-FQPN-input.complex-region' value='`$aai.complex.region`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </for>

+                        </for>

+                        <set>

+                            <parameter name='generate-FQPN-input.aic-cloud-region' 

+	value='`$aai.cloud-region.cloud-region-id`' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$generate-FQPN-input.complex-region`'>

+                <outcome value=''>

+                    <block atomic='true'>

+                        <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="cloud-region" 

+		key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND 

+		     cloud-region.cloud-region-id = $aai.cloud-region.cloud-region-id AND

+		     depth = '0'"

+        pfx='aai.cloud-region' >

+                            <outcome value='not-found'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="`'aic-cloud-region, '+ $generate-fqpn-input.aic-cloud-region + ' not found in AAI'`" />

+                                </return>

+                            </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 retrieving cloud region from AAI" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                        <switch test='`$aai.cloud-region.relationship-list.relationship_length`'>

+                            <outcome value='0'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="cloud-region missing relationships in AAI" />

+                                </return>

+                            </outcome>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="cloud-region missing relationships in AAI" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <for index='ridx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >

+                            <for silentFailure='false' index='rdidx' start='0' end="`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data_length`" >

+                                <switch test='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>

+                                    <outcome value='complex.physical-location-id'>

+                                        <block atomic='true'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='tmp.aic-clli' value='`$aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value`' />

+                                                </set>

+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>

+                                                    <parameter name='result' value='tmp.truncated.clli8' />

+                                                    <parameter name='string' value='`$tmp.aic-clli`' />

+                                                    <parameter name='begin-index' value='0' />

+                                                    <parameter name='end-index' value='8' />

+                                                </execute>

+                                                <set>

+                                                    <parameter name='generate-FQPN-input.location-clli8' value='`$tmp.truncated.clli8`' />

+                                                </set>

+                                            </block>

+                                            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="complex" 

+		key="complex.physical-location-id = $aai.cloud-region.relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value"

+    pfx='aai.complex' >

+                                                <outcome value='not-found'>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="Complex not found in AAI" />

+                                                    </return>

+                                                </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 retrieving complex from AAI" />

+                                                    </return>

+                                                </outcome>

+                                            </get-resource>

+                                            <set>

+                                                <parameter name='generate-FQPN-input.complex-region' value='`$aai.complex.region`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </for>

+                        </for>

+                        <set>

+                            <parameter name='generate-FQPN-input.aic-cloud-region' 

+	value='`$aai.cloud-region.cloud-region-id`' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test="`$network-model.use-ipv4`">

+                <outcome value='N'></outcome>

+                <outcome value='Y'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='generate-FQPN-input.plan-name' value='`$network-model.eipam-v4-address-plan`' />

+                        </set>

+                        <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >

+                            <outcome value='failure'>

+                                <return status="failure">

+                                    <parameter name="ack-final" value="Y" />

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />

+                                </return>

+                            </outcome>

+                        </call>

+                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                        <set>

+                            <parameter name="v4FQPN-output." value="generate-FQPN-output."/>

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value=""></outcome>

+            </switch>

+            <switch test="`$network-model.use-ipv6`">

+                <outcome value='N'></outcome>

+                <outcome value='Y'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='generate-FQPN-input.plan-name' value='`$network-model.eipam-v6-address-plan`' />

+                        </set>

+                        <call module='GENERIC-RESOURCE-API' rpc='generate-FQPN' mode='sync' >

+                            <outcome value='failure'>

+                                <return status="failure">

+                                    <parameter name="ack-final" value="Y" />

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="error-message" value="`'An error occured while generating FQPN: '+ $error-message`" />

+                                </return>

+                            </outcome>

+                        </call>

+                        <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+                        <set>

+                            <parameter name="v6FQPN-output." value="generate-FQPN-output."/>

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value=""></outcome>

+            </switch>

+            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->

+            <set>

+                <parameter name="eipam-ip-block.subnet-size-override-v4" value="`$network-model.ipv4-cidr-mask`" />

+                <parameter name="eipam-ip-block.subnet-size-override-v6" value="`$network-model.ipv6-cidr-mask`" />

+            </set>

+            <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">

+                <outcome value=''>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <for index='pidx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >

+                            <block atomic="true">

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >

+                                    <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].name`" />

+                                    <parameter name="target" value="network_assignments_ipv4_subnet_default_assignment_cidr_mask"/>

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='eipam-ip-block.subnet-size-override-v4' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].value`' />

+                                        </set>

+                                    </outcome>

+                                </execute>

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >

+                                    <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].name`" />

+                                    <parameter name="target" value="network_assignments_ipv6_subnet_default_assignment_cidr_mask"/>

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='eipam-ip-block.subnet-size-override-v6' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx].value`' />

+                                        </set>

+                                    </outcome>

+                                </execute>

+                            </block>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <for index="l-idx" start="1" end="`$eipam-ip-block.getPlanTopologyResponse.TopologyDetails_length + 1`">

+                <block atomic='true'>

+                    <set>

+                        <parameter name='eipam-ip-block.entity-id' value='' />

+                        <parameter name='eipam-ip-block.ip-prefix' value='' />

+                        <parameter name='eipam-ip-block.mask' value='' />

+                        <parameter name="eipam-ip-block.level" value='`$l-idx`' />

+                        <parameter name='eipam-pool.v4.pre-existing' value='false' />

+                        <parameter name='eipam-pool.v6.pre-existing' value='false' />

+                    </set>

+                    <!--tmp.level should be set to 1-->

+                    <call module='GENERIC-RESOURCE-API' rpc='eipam-create-generic-pool' mode='sync' >

+                        <outcome value='failure'>

+                            <block atomic="true">

+                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                    <parameter name="logger" value="message-log"/>

+                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                    <parameter name="field2" value="GENERIC-RESOURCE-API.process-generic-eipam-pools:REQID"/>

+                                    <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                    <parameter name="field4" value="Error creating pool for level"/>

+                                    <parameter name="field5" value="`$l-idx`"/>

+                                </record>

+                                <return status="failure">

+                                    <parameter name="tmp.eipam-error" value="true" />

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="error-message" value="An error occured while creating pool" />

+                                </return>

+                            </block>

+                        </outcome>

+                        <outcome value='success'>

+                            <block atomic="true">

+                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                    <parameter name="logger" value="message-log"/>

+                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                    <parameter name="field2" value="GENERIC-RESOURCE-API.process-generic-eipam-pools:REQID"/>

+                                    <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                    <parameter name="field4" value="`$l-idx`"/>

+                                    <parameter name="field5" value="`$eipam-pool.v4.pre-existing`"/>

+                                    <parameter name="field6" value="eipam-pool.v4.pre-existing"/>

+                                    <parameter name="field7" value="`$eipam-pool.v6.pre-existing`"/>

+                                    <parameter name="field8" value="tmp.create-v4-pool-flag" />

+                                    <parameter name="field9" value="`$tmp.create-v4-pool-flag`" />

+                                    <parameter name="field10" value="tmp.create-v6-pool-flag" />

+                                    <parameter name="field11" value="`$tmp.create-v6-pool-flag`" />

+                                    <parameter name="field12" value="Successful" />

+                                </record>

+                            </block>

+                        </outcome>

+                    </call>

+                    <switch test="`$tmp.allocate-subnet-flag`">

+                        <outcome value=""></outcome>

+                        <outcome value='N'>

+                            <block atomic='true'>

+                                <switch test="`$network-model.use-ipv4`">

+                                    <outcome value='N'></outcome>

+                                    <outcome value='Y'>

+                                        <block atomic='true'>

+                                            <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v4-address-plan and s.entity_id = k.entity_id and k.level = $l-idx and k.key_value = $key-value ; "

+        pfx='tmp.eipam-subnet-row'>

+                                                <outcome value='success'>

+                                                    <block atomic="true">

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                            <parameter name="field4" value="Existing eipam-ip-block.ip-prefix for level:" />

+                                                            <parameter name="field5" value="`$l-idx`" />

+                                                            <parameter name="field6" value="Existing eipam-ip-block.mask for level:" />

+                                                            <parameter name="field7" value="`$tmp.eipam-subnet-row.prefix-length`"/>

+                                                            <parameter name="field8" value="ipv4"/>

+                                                            <parameter name="field9" value="`$tmp.eipam-subnet-row.ip-address`"/>

+                                                        </record>

+                                                        <set>

+                                                            <parameter name='tmp.l3-network.level1.v4.subnet.pre-existing' value='true' />

+                                                            <parameter name='tmp.l3-network.level1.v4.entity-id' value='`$tmp.eipam-row.entity-id`' />

+                                                            <parameter name='tmp.l3-network.level1.v4.ip-prefix' value='`$tmp.eipam-row.ip-address`' />

+                                                            <parameter name='tmp.l3-network.level1.v4.mask' value='`$tmp.eipam-row.prefix-length`' />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value="not-found">

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name='eipam-ip-block.entity-id' value='' />

+                                                            <parameter name='eipam-ip-block.ip-prefix' value='' />

+                                                            <parameter name='eipam-ip-block.mask' value='' />

+                                                            <parameter name="eipam-ip-block.allocate-version" value='ipv4' />

+                                                            <parameter name='eipam-ip-block.plans_length' value='0' />

+                                                        </set>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-generic-subnet' mode='sync' >

+                                                            <outcome value='success'>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name='eipam-ip-block.v4.allocateSubnetResponse.' value='eipam-ip-block.allocateSubnetResponse.' />

+                                                                    </set>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                        <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                                        <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                                        <parameter name="field4" value="eipam-ip-block.ip-prefix"/>

+                                                                        <parameter name="field5" value="`$eipam-ip-block.ip-prefix`"/>

+                                                                        <parameter name="field6" value="eipam-ip-block.mask"/>

+                                                                        <parameter name="field7" value="`$eipam-ip-block.v4.allocateSubnetResponse.Mask`"/>

+                                                                        <parameter name="field8" value="ipv4"/>

+                                                                        <parameter name="field9" value="`$l-idx`" />

+                                                                    </record>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='failure'>

+                                                                <block atomic="true">

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                        <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                                        <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                                        <parameter name="field4" value="Failed to allocate ipv4 subnet - failure from eipam-allocate-network-role-subnet"/>

+                                                                        <parameter name="field5" value="`$l-idx`" />

+                                                                    </record>

+                                                                </block>

+                                                            </outcome>

+                                                        </call>

+                                                    </block>

+                                                </outcome>

+                                            </get-resource>

+                                        </block>

+                                    </outcome>

+                                    <outcome value=""></outcome>

+                                </switch>

+                                <switch test="`$network-model.use-ipv6`">

+                                    <outcome value='N'></outcome>

+                                    <outcome value='Y'>

+                                        <block atomic='true'>

+                                            <get-resource

+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'

+        resource='SQL'

+        key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $network-model.eipam-v6-address-plan and s.entity_id = k.entity_id and k.level = $l-idx and k.key_value = $key-value ; "

+        pfx='tmp.eipam-subnet-row'>

+                                                <outcome value='success'>

+                                                    <block atomic="true">

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                            <parameter name="field4" value="Existing eipam-ip-block.ip-prefix for level:" />

+                                                            <parameter name="field5" value="`$l-idx`" />

+                                                            <parameter name="field6" value="Existing eipam-ip-block.mask for level:" />

+                                                            <parameter name="field7" value="`$tmp.eipam-subnet-row.prefix-length`"/>

+                                                            <parameter name="field8" value="ipv6"/>

+                                                            <parameter name="field9" value="`$tmp.eipam-subnet-row.ip-address`"/>

+                                                        </record>

+                                                        <set>

+                                                            <parameter name='tmp.l3-network.level1.v6.subnet.pre-existing' value='true' />

+                                                            <parameter name='tmp.l3-network.level1.v6.entity-id' value='`$tmp.eipam-row.entity-id`' />

+                                                            <parameter name='tmp.l3-network.level1.v6.ip-prefix' value='`$tmp.eipam-row.ip-address`' />

+                                                            <parameter name='tmp.l3-network.level1.v6.mask' value='`$tmp.eipam-row.prefix-length`' />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value="not-found">

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name='eipam-ip-block.entity-id' value='' />

+                                                            <parameter name='eipam-ip-block.ip-prefix' value='' />

+                                                            <parameter name='eipam-ip-block.mask' value='' />

+                                                            <parameter name="eipam-ip-block.allocate-version" value='ipv6' />

+                                                            <parameter name='eipam-ip-block.plans_length' value='0' />

+                                                        </set>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='eipam-allocate-generic-subnet' mode='sync' >

+                                                            <outcome value='success'>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name='eipam-ip-block.v6.allocateSubnetResponse.' value='eipam-ip-block.allocateSubnetResponse.' />

+                                                                    </set>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                        <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                                        <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                                        <parameter name="field4" value="eipam-ip-block.ip-prefix"/>

+                                                                        <parameter name="field5" value="`$eipam-ip-block.ip-prefix`"/>

+                                                                        <parameter name="field6" value="eipam-ip-block.mask"/>

+                                                                        <parameter name="field7" value="`$eipam-ip-block.v6.allocateSubnetResponse.Mask`"/>

+                                                                        <parameter name="field8" value="ipv6"/>

+                                                                        <parameter name="field9" value="`$l-idx`" />

+                                                                    </record>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='failure'>

+                                                                <block atomic="true">

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                        <parameter name="field2" value="GENERIC-RESOURCE-API.process-eipam-pools:REQID"/>

+                                                                        <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                                        <parameter name="field4" value="Failed to allocate ipv6 subnet - failure from eipam-allocate-network-role-subnet"/>

+                                                                        <parameter name="field9" value="`$l-idx`" />

+                                                                    </record>

+                                                                </block>

+                                                            </outcome>

+                                                        </call>

+                                                    </block>

+                                                </outcome>

+                                            </get-resource>

+                                        </block>

+                                    </outcome>

+                                    <outcome value=""></outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                        <outcome value='Y'></outcome>

+                    </switch>

+                </block>

+            </for>

+            <return status='success'>

+                <parameter name="error-code" value="200" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_query-aai-l3-network-by-network-role.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_query-aai-l3-network-by-network-role.xml
new file mode 100644
index 0000000..64e5765
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_query-aai-l3-network-by-network-role.xml
@@ -0,0 +1,199 @@
+<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='query-aai-l3-network-by-network-role' mode='sync'>

+        <block atomic='true'>

+            <switch test='`$query-aai-l3-network-by-network-role-input.aic-cloud-region`'>

+                <outcome value=''>

+                    <return status="failure">

+                        <parameter name="ack-final" value="Y" />

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="query-aai-l3-network-by-network-role-input.aic-cloud-region is null" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$query-aai-l3-network-by-network-role-input.service-instance-id`'>

+                <outcome value=''>

+                    <return status="failure">

+                        <parameter name="ack-final" value="Y" />

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="query-aai-l3-network-by-network-role-input.service-instance-id is null" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$query-aai-l3-network-by-network-role-input.network-role`'>

+                <outcome value=''>

+                    <return status="failure">

+                        <parameter name="ack-final" value="Y" />

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="query-aai-l3-network-by-network-role-input.network-role is null" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='query-aai-l3-network-by-network-role-output.' value='' />

+            </set>

+            <set>

+                <parameter name='tmp.aai.l3-networks.' value='' />

+            </set>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-networks" 

+		key="l3-network.network-role = $query-aai-l3-network-by-network-role-input.network-role" 

+	pfx='tmp.aai.l3-networks' >

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'No active l3-network found in AAI with cloud_region_id '

+          + $vnf-topology-operation-input.vnf-request-information.aic-cloud-region + ' and network_role '

+          + $query-aai-l3-network-by-network-role-input.network-role`" />

+                    </return>

+                </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 retrieving l3-network from AAI with network-role = ' + $query-aai-l3-network-by-network-role-input.network-role`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <switch test='`$tmp.aai.l3-networks.l3-network_length`'>

+                <outcome value='1'>

+                    <set>

+                        <parameter name='query-aai-l3-network-by-network-role-output.l3-network.' 

+	value='`$tmp.aai.l3-networks.l3-network[0].`' />

+                        <!--

+<parameter name='query-aai-l3-network-by-network-role-output.network-id' 

+	value='`$tmp.aai.l3-networks.l3-network[0].network-id`' /><parameter name='query-aai-l3-network-by-network-role-output.network-name' 

+	value='`$tmp.aai.l3-networks.l3-network[0].network-name`' />

+-->

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='tmp.l3-network-found' value='0' />

+                        </set>

+                        <set>

+                            <parameter name='cloud.matched.l3-networks_length' value='0' />

+                        </set>

+                        <for index='network-index' start='0' end='`$tmp.aai.l3-networks.l3-network_length`' >

+                            <block>

+                                <switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length`'>

+                                    <outcome value=''>

+                                        <set>

+                                            <parameter name ='tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length' value = '0' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                                <for index='ridx' start='0' end='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length`' >

+                                    <switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship[$ridx].related-to`'>

+                                        <outcome value='cloud-region'>

+                                            <for silentFailure='false' index='rdidx' start='0' end="`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship[$ridx].relationship-data_length`" >

+                                                <switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>

+                                                    <outcome value='cloud-region.cloud-region-id'>

+                                                        <switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value == $query-aai-l3-network-by-network-role-input.aic-cloud-region`'>

+                                                            <outcome value='true'>

+                                                                <block>

+                                                                    <set>

+                                                                        <parameter name='cloud.matched.l3-networks[$cloud.matched.l3-networks_length].' 

+	value='$tmp.aai.l3-networks.l3-network[$network-index].' />

+                                                                    </set>

+                                                                    <set>

+                                                                        <parameter name='cloud.matched.l3-networks_length' value='`$cloud.matched.l3-networks_length + 1`' />

+                                                                    </set>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                </switch>

+                                            </for>

+                                        </outcome>

+                                    </switch>

+                                </for>

+                            </block>

+                        </for>

+                        <switch test='`$cloud.matched.l3-networks_length`'>

+                            <outcome value='0'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'No l3-network with network-role=' + $query-aai-l3-network-by-network-role-input.network-role + ' and cloud-region=' + $query-aai-l3-network-by-network-role-input.aic-cloud-region + ' found in AAI'`" />

+                                </return>

+                            </outcome>

+                            <outcome value='1'>

+                                <set>

+                                    <parameter name='query-aai-l3-network-by-network-role-output.l3-network.' 

+	value='`$cloud.matched.l3-networks[0].`' />

+                                    <!--		

+	<parameter name='query-aai-l3-network-by-network-role-output.network-id' 

+		value='`$cloud.matched.l3-networks[0].network-id`' /><parameter name='query-aai-l3-network-by-network-role-output.network-name' 

+		value='`$cloud.matched.l3-networks[0].network-name`' />

+-->

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block atomic='true'>

+                                    <block>

+                                        <for index='cidx' start='0' end='`$cloud.matched.l3-networks_length`' >

+                                            <block>

+                                                <switch test='`$tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length`'>

+                                                    <outcome value=''>

+                                                        <set>

+                                                            <parameter name ='tmp.aai.l3-networks.l3-network[$network-index].relationship-list.relationship_length' value = '0' />

+                                                        </set>

+                                                    </outcome>

+                                                </switch>

+                                                <for index='ridx' start='0' end='`$cloud.matched.l3-networks[$cidx].relationship-list.relationship_length`' >

+                                                    <switch test='`$cloud.matched.l3-networks[$cidx].relationship-list.relationship[$ridx].related-to`'>

+                                                        <outcome value='service-instance'>

+                                                            <for silentFailure='false' index='rdidx' start='0' end="`$cloud.matched.l3-networks[$cidx].relationship-list.relationship[$ridx].relationship-data_length`" >

+                                                                <switch test='`$cloud.matched.l3-networks[$cidx].relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-key`'>

+                                                                    <outcome value='service-instance.service-instance-id'>

+                                                                        <switch test='`$cloud.matched.l3-networks[$cidx].relationship-list.relationship[$ridx].relationship-data[$rdidx].relationship-value == $query-aai-l3-network-by-network-role-input.service-instance-id`'>

+                                                                            <outcome value='true'>

+                                                                                <block atomic='true'>

+                                                                                    <set>

+                                                                                        <parameter name='query-aai-l3-network-by-network-role-output.l3-network.' 

+	value='`$cloud.matched.l3-networks[$cidx].`' />

+                                                                                        <!--

+<parameter name='query-aai-l3-network-by-network-role-output.network-id' 

+	value='`$cloud.matched.l3-networks[$cidx].network-id`' /><parameter name='query-aai-l3-network-by-network-role-output.network-name' 

+	value='`$cloud.matched.l3-networks[$cidx].network-name`' />

+-->

+                                                                                    </set>

+                                                                                    <set>

+                                                                                        <parameter name='tmp.l3-network-found' value='1' />

+                                                                                    </set>

+                                                                                    <return status='failure'></return>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </for>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                            </block>

+                                        </for>

+                                        <return status='success'></return>

+                                    </block>

+                                    <switch test='`$tmp.l3-network-found`'>

+                                        <outcome value='0'>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="`'No l3-network with network-role=' + $query-aai-l3-network-by-network-role-input.network-role + ' and cloud-region=' + $query-aai-l3-network-by-network-role-input.aic-cloud-region + ' and service-instance-id=' + $query-aai-l3-network-by-network-role-input.service-instance-id + ' found in AAI'`" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_rollback-eipam-ip-assignment.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_rollback-eipam-ip-assignment.xml
new file mode 100644
index 0000000..6a4ca1b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_rollback-eipam-ip-assignment.xml
@@ -0,0 +1,46 @@
+<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='rollback-eipam-ip-assignment' mode='sync'>

+        <block atomic="true">

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from EIPAM_IP_ASSIGNMENTS 

+  WHERE info = $vnf-topology-operation-input.vnf-request-information.vnf-id'>

+                <outcome value='not-found'>

+                    <block></block>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='tmp.status' 

+	value="`'PENDING_DELETE_' + $vnf-topology-operation-input.vnf-request-information.vnf-id`" />

+                            <parameter name='service-data.service-information.service-type' 

+	value='NOT_APPLICABLE' />

+                        </set>

+                        <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"

+	key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status 

+		WHERE info = $vnf-topology-operation-input.vnf-request-information.vnf-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 updating EIPAM_IP_ASSIGNMENTS table on rollback." />

+                                </return>

+                            </outcome>

+                        </update>

+                        <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">

+                            <parameter name="deleteEIPAM_status" value="`$tmp.status`" />

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Error in EIPAM unassign IP address on rollback." />

+                                </return>

+                            </outcome>

+                        </execute>

+                    </block>

+                </outcome>

+            </get-resource>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_rollback-generated-names.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_rollback-generated-names.xml
new file mode 100644
index 0000000..41a6468
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_rollback-generated-names.xml
@@ -0,0 +1,341 @@
+<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='rollback-generated-names' mode='sync'>

+        <block atomic="true">

+            <switch test='`$rollback-generated-names-input.context-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="rollback-generated-names-input.context-id can not be null" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$rollback-generated-names-input.naming-type`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="rollback-generated-names-input.naming-type can not be null" />

+                    </return>

+                </outcome>

+                <outcome value='VM_INSTANCE'>

+                    <set>

+                        <parameter name='rollback-generated-names.index-table-name' value='NAMING_POLICY_VM_NAME_INDEX' />

+                        <parameter name='rollback-generated-names.index-table.name-prefix-column' value='vm_name_prefix' />

+                    </set>

+                </outcome>

+                <outcome value='VNFC_INSTANCE'>

+                    <set>

+                        <parameter name='rollback-generated-names.index-table-name' value='NAMING_POLICY_VNFC_NAME_INDEX' />

+                        <parameter name='rollback-generated-names.index-table.name-prefix-column' value='vnfc_name_prefix' />

+                    </set>

+                </outcome>

+                <outcome value='CLIENT_KEY'>

+                    <set>

+                        <parameter name='rollback-generated-names.index-table-name' value='EIPAM_CLIENT_KEY_INDEX' />

+                        <parameter name='rollback-generated-names.index-table.name-prefix-column' value='vnf_name_prefix' />

+                    </set>

+                </outcome>

+                <outcome value='NETWORK_INSTANCE'>

+                    <set>

+                        <parameter name='rollback-generated-names.index-table-name' 

+	value='NETWORK_INSTANCE_NAME_INDEX' />

+                        <parameter name='rollback-generated-names.index-table.name-prefix-column' 

+	value='network_instance_name_prefix' />

+                    </set>

+                </outcome>

+                <outcome value='SERVICE_INSTANCE'>

+                    <block>

+                        <set>

+                            <parameter name='rollback-generated-names.index-table-name' 

+	value='SERVICE_INSTANCE_NAME_INDEX' />

+                            <parameter name='rollback-generated-names.index-table.name-prefix-column' 

+	value='service_instance_name_prefix' />

+                        </set>

+                        <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+	key='DELETE from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type  

+		AND context_id = $rollback-generated-names-input.context-id AND prefix IS NULL AND name_index IS NULL'></delete>

+                    </block>

+                </outcome>

+                <outcome value='VNF_INSTANCE'>

+                    <set>

+                        <parameter name='rollback-generated-names.index-table-name' value='VNF_NAME_INDEX' />

+                        <parameter name='rollback-generated-names.index-table.name-prefix-column' 

+	value='vnf_name_prefix' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unknown rollbck-generated-name-input.naming-type: ' + $rollback-generated-names-input.naming-type`" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='db.grn.' value='' />

+            </set>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+	key='SELECT distinct prefix from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type  

+		AND context_id = $rollback-generated-names-input.context-id'

+  pfx='db.grn.distinct-prefix[]'>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500'/>

+                        <parameter name='error-message' value="Encountered error reading GENERIC_RESOURCE_NAME table to retrieve distinct prefix"/>

+                    </return>

+                </outcome>

+                <outcome value='not-found'>

+                    <set>

+                        <parameter name='db.grn.distinct-prefix_length' value='0' />

+                    </set>

+                </outcome>

+            </get-resource>

+            <for index='prefix-index' start='0' end='`$db.grn.distinct-prefix_length`' >

+                <block atomic='true'>

+                    <set>

+                        <parameter name='db.grn.subset.' value='' />

+                    </set>

+                    <set>

+                        <parameter name='tmp.rb.' value='' />

+                    </set>

+                    <set>

+                        <parameter name='tmp.rb.grn.prefix' value='`$db.grn.distinct-prefix[$prefix-index].prefix`' />

+                    </set>

+                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+	key='SELECT * from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type   

+		AND context_id = $rollback-generated-names-input.context-id 

+		AND prefix = $tmp.rb.grn.prefix order by name_index'

+  pfx='db.grn.subset[]'>

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="Encountered error reading GENERIC_RESOURCE_NAME table"/>

+                            </return>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="`'No entry found in GENERIC_RESOURCE_NAME where context_id = ' + $rollback-generated-names-input.context-id + ' and type = ' + $rollback-generated-names-input.naming-type + ' and prefix = ' + $db.grn.distinct-prefix[$prefix-index].prefix`"/>

+                            </return>

+                        </outcome>

+                    </get-resource>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='tmp.rb.sql' 

+	value="`'SELECT * from ' + $rollback-generated-names.index-table-name 

+		+ ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column 

+		+ ' = $tmp.rb.grn.prefix'`" />

+                        </set>

+                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.rb.sql`" pfx='db.grn.index-table'>

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='error-message' value="`'Error reading the '

+	+ $rollback-generated-names.index-table-name 

+	+ ' table with ' + $rollback-generated-names.name-prefix-column

+	+ ' = ' + $tmp.rb.grn.prefix 

+	+ '. MANUAL clean up is required!'`" />

+                                </return>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <return status='failure'>

+                                    <parameter name='error-message' value="`'No entries found in ' 

+	+ $rollback-generated-names.index-table-name 

+	+ ' with ' 

+	+ $rollback-generated-names.name-prefix-column 

+	+ ' = ' 

+	+ $tmp.rb.grn.prefix `" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                    <set>

+                        <parameter name='tmp.rb.grn.max-index' 

+	value='`$db.grn.subset[$db.grn.subset_length - 1].name-index`' />

+                    </set>

+                    <set>

+                        <parameter name='tmp.rb.delta-index' 

+	value='`$db.grn.index-table.index-number - $tmp.rb.grn.max-index`' />

+                    </set>

+                    <set>

+                        <parameter name='tmp.rb.net-index' 

+	value='`$db.grn.index-table.index-number - $db.grn.subset_length`' />

+                    </set>

+                    <switch test="`$tmp.rb.delta-index == 0`">

+                        <outcome value='true'>

+                            <switch test="`$tmp.rb.net-index == 0`">

+                                <outcome value='true'>

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='tmp.rb.sql' 

+	value="`'DELETE from ' + $rollback-generated-names.index-table-name 

+		+ ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column 

+		+ ' = $tmp.rb.grn.prefix'`" />

+                                            <!--

++ ' = $tmp.rb.grn.prefix AND index_number = $db.grn.index-table.index-number'`" />

+-->

+                                        </set>

+                                        <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.rb.sql`">

+                                            <outcome value='failure'>

+                                                <return status='failure'>

+                                                    <parameter name='error-message' value="`'Error deleting '

+	+ $rollback-generated-names.index-table-name 

+	+ ' WHERE ' + $rollback-generated-names.name-prefix-column 

+	+ ' = ' + $tmp.rb.grn.prefix 

+	+ ' AND index_number = ' + $db.index-table.index-number

+	+ '. MANUAL clean up is required!'`" />

+                                                </return>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block></block>

+                                            </outcome>

+                                        </update>

+                                    </block>

+                                </outcome>

+                                <outcome value='false'>

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='tmp.rb.sql' 

+	value="`'UPDATE ' + $rollback-generated-names.index-table-name 

+		+ ' set index_number = ' + $tmp.rb.net-index

+		+ ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column 

+		+ ' = $tmp.rb.grn.prefix'`" />

+                                        </set>

+                                        <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.rb.sql`">

+                                            <outcome value='failure'>

+                                                <return status='failure'>

+                                                    <parameter name='error-message' value="`'Error updating  '

+	+ $rollback-generated-names.index-table-name + '.index_number = ' 

+	+ $tmp.rb.net-index

+	+ ' WHERE ' + $rollback-generated-names.name-prefix-column 

+	+ ' = ' + $tmp.rb.grn.prefix

+	+ '. MANUAL clean up is required!'`" />

+                                                </return>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <return status='failure'>

+                                                    <parameter name='error-message' value="`'Error updating  '

+	+ $rollback-generated-names.index-table-name + '.index_number = ' 

+	+ $tmp.rb.net-index

+	+ ' WHERE ' + $rollback-generated-names.name-prefix-column 

+	+ ' = ' + $tmp.rb.grn.prefix

+	+ '. MANUAL clean up is required!'`" />

+                                                </return>

+                                            </outcome>

+                                        </update>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </outcome>

+                        <outcome value='false'>

+                            <block></block>

+                        </outcome>

+                    </switch>

+                    <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+	key='DELETE from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type  

+		AND context_id = $rollback-generated-names-input.context-id 

+		AND prefix = $tmp.rb.grn.prefix'>

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='error-message' value="`'Error deleting GENERIC_RESOURCE_NAME WHERE type = '

+	+ $rollback-generated-names-input.naming-type  

+	+ ' AND context_id = ' + $rollback-generated-names-input.context-id 

+	+ ' AND prefix = '+ $tmp.rb.grn.prefix

+	+ '. MANUAL clean up is required!'`" />

+                            </return>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <block></block>

+                        </outcome>

+                    </delete>

+                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+	key='SELECT * from GENERIC_RESOURCE_NAME WHERE type = $rollback-generated-names-input.naming-type    

+		AND prefix = $tmp.rb.grn.prefix order by name_index'

+  pfx='db.grn.prefix[]'>

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500'/>

+                                <parameter name='error-message' value="Encountered error reading GENERIC_RESOURCE_NAME table"/>

+                            </return>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <block>

+                                <set>

+                                    <parameter name='tmp.rb.sql' 

+	value="`'DELETE from ' + $rollback-generated-names.index-table-name 

+		+ ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column 

+		+ ' = $tmp.rb.grn.prefix'`" />

+                                    <!--

++ ' = $tmp.rb.grn.prefix AND index_number = $db.grn.index-table.index-number'`" />

+-->

+                                </set>

+                                <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.rb.sql`">

+                                    <outcome value='failure'>

+                                        <return status='failure'>

+                                            <parameter name='error-message' value="`'Error deleting '

+	+ $rollback-generated-names.index-table-name 

+	+ ' WHERE ' + $rollback-generated-names.name-prefix-column 

+	+ ' = ' + $tmp.rb.grn.prefix 

+	+ ' AND index_number = ' + $db.index-table.index-number`" />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <block></block>

+                                    </outcome>

+                                </update>

+                            </block>

+                        </outcome>

+                        <outcome value='success'>

+                            <block>

+                                <set>

+                                    <parameter name='tmp.rb.grn.last-max-index' 

+	value='`$db.grn.prefix[$db.grn.prefix_length - 1].name-index`' />

+                                </set>

+                                <switch test="`$tmp.rb.net-index > $tmp.rb.grn.last-max-index`">

+                                    <outcome value='true'>

+                                        <block>

+                                            <set>

+                                                <parameter name='tmp.rb.sql' 

+	value="`'UPDATE ' + $rollback-generated-names.index-table-name 

+		+ ' set index_number = ' + $tmp.rb.grn.last-max-index

+		+ ' WHERE ' + $rollback-generated-names.index-table.name-prefix-column 

+		+ ' = $tmp.rb.grn.prefix'`" />

+                                            </set>

+                                            <update plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="`$tmp.rb.sql`">

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-message' value="`'Error updating  '

+	+ $rollback-generated-names.index-table-name + '.index_number = ' 

+	+ $tmp.rb.grn.last-max-index

+	+ ' WHERE ' + $rollback-generated-names.name-prefix-column 

+	+ ' = ' + $tmp.rb.grn.prefix`" />

+                                                    </return>

+                                                </outcome>

+                                                <outcome value='not-found'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-message' value="`'Error updating  '

+	+ $rollback-generated-names.index-table-name + '.index_number = ' 

+	+ $tmp.rb.grn.last-max-index

+	+ ' WHERE ' + $rollback-generated-names.name-prefix-column 

+	+ ' = ' + $tmp.rb.grn.prefix`" />

+                                                    </return>

+                                                </outcome>

+                                            </update>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                    </get-resource>

+                </block>

+            </for>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-activate.xml
new file mode 100755
index 0000000..f49173a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-activate.xml
@@ -0,0 +1,150 @@
+<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='security-zone-topology-operation-activate' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+                <parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+                <parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+            </set>
+            <set>
+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/security-zone-topology/'` " />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.sz-allottedresource`"/>
+                <parameter name="outputPath" value="tmp.ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='bk-sz-ar' value='$mdsal-ar.' />
+                        </set>
+                        <switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>
+                            <outcome value='1'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />
+                                    </set>
+                                    <switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+                                        <outcome value='Created'>
+                                            <block></block>
+                                        </outcome>
+                                        <outcome value='Other'>
+                                            <block></block>
+                                        </outcome>
+                                    </switch>
+                                    <set>
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+                                    </set>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true"></block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='sz-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+                <parameter name='sz-ar.allotted-resource-status.action' value="`$security-zone-topology-operation-input.request-information.request-action` " />
+                <parameter name='sz-ar.allotted-resource-status.rpc-name' value="security-zone-topology-operation" />
+                <parameter name='sz-ar.allotted-resource-status.rpc-action' value="`$security-zone-topology-operation-input.sdnc-request-header.svc-action` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$security-zone-topology-operation-input.request-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$security-zone-topology-operation-input.sdnc-request-header.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$security-zone-topology-operation-input.service-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$security-zone-topology-operation-input.allotted-resource-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value="`$security-zone-topology-operation-input.security-zone-request-input.` " />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+                <parameter name="outputPath" value="tmp.current-time" />
+            </execute>
+            <set>
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+            </set>
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="allotted-resource" 
+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+			allotted-resource.id = $tmp.ar.allotted-resource-id"
+        pfx='pfx' local-only='false' force='false'>
+                <parameter name="operational-status" value="in-service-path" />
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="AAI failed" />
+                    </return>
+                </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="AAI failed" />
+                    </return>
+                </outcome>
+            </update>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block></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 updating md-sal for security-zone-allotted-resource" />
+                    </return>
+                </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="Error updating md-sal for security-zone-allotted-resource" />
+                    </return>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+                <parameter name='security-zone-object-path' value="`$tmp.ar.self-link`"/>
+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $security-zone-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-assign.xml
new file mode 100755
index 0000000..cb8450b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-assign.xml
@@ -0,0 +1,348 @@
+<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='security-zone-topology-operation-assign' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+                <parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+                <parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+            </set>
+            <set>
+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/security-zone-topology/'` " />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.sz-allottedresource`"/>
+                <parameter name="outputPath" value="tmp.ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.vnf-provided-allottedresource`" />
+                <parameter name="outputPath" value="tmp.vnf-p-ar-url" />
+                <parameter name="target" value="{service-instance-id}" />
+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`" />
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$tmp.vnf-p-ar-url`" />
+                <parameter name="outputPath" value="tmp.vnf-p-ar-url" />
+                <parameter name="target" value="{vnf-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.sz-vnf-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='bk-sz-ar' value='$mdsal-ar.' />
+                        </set>
+                        <switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>
+                            <outcome value='1'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />
+                                    </set>
+                                    <switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+                                        <outcome value='Created'>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" 
+    value="`'Existing security-zone-allotted-resource with order status of ' + $sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`" />
+                                            </return>
+                                        </outcome>
+                                        <outcome value='PendingDelete'>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" 
+    value="`'Existing security-zone-allotted-resource with order status of ' + $sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <set>
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+                                    </set>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true"></block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='sz-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+                <parameter name='sz-ar.allotted-resource-status.action' value="`$security-zone-topology-operation-input.request-information.request-action` " />
+                <parameter name='sz-ar.allotted-resource-status.rpc-name' value="security-zone-topology-operation" />
+                <parameter name='sz-ar.allotted-resource-status.rpc-action' value="`$security-zone-topology-operation-input.sdnc-request-header.svc-action` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$security-zone-topology-operation-input.request-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$security-zone-topology-operation-input.sdnc-request-header.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$security-zone-topology-operation-input.service-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$security-zone-topology-operation-input.allotted-resource-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value="`$security-zone-topology-operation-input.security-zone-request-input.` " />
+            </set>
+            <set>
+                <parameter name='sz-ar-identifiers.consuming-service-instance-id' value="`$security-zone-topology-operation-input.service-information.service-instance-id` " />
+                <parameter name='sz-ar-identifiers.parent-service-instance-id' value="`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />
+                <parameter name='sz-ar-identifiers.allotted-resource-type' value="`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-type` " />
+                <parameter name='sz-ar-identifiers.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+            </set>
+            <set>
+                <parameter name='sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.' 
+value="`$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.`" />
+            </set>
+            <switch test='$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid'>
+                <outcome value=''>
+                    <set>
+                        <parameter name='sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.model-invariant-uuid' 
+value="`$ar-model.invariant-uuid`" />
+                    </set>
+                </outcome>
+            </switch>
+            <switch test='$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid'>
+                <outcome value=''>
+                    <set>
+                        <parameter name='sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.model-uuid' 
+value="`$ar-model.uuid`" />
+                    </set>
+                </outcome>
+            </switch>
+            <switch test='$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-version'>
+                <outcome value=''>
+                    <set>
+                        <parameter name='sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.model-version' 
+value="`$ar-model.version`" />
+                    </set>
+                </outcome>
+            </switch>
+            <switch test='`$ar-model.ecomp-generated-naming`'>
+                <outcome value='Y'>
+                    <block atomic="true">
+                        <switch test='`$ar-model.naming-policy`'>
+                            <outcome value='oam_security_zone_name'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />
+                                    </set>
+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                                        <parameter name="source" value="`$tmp.ar-name`"/>
+                                        <parameter name="outputPath" value="tmp.ar-name"/>
+                                        <parameter name="target" value="$TenantOAMNetworkRole"/>
+                                        <parameter name="replacement" value="`$security-zone-topology-operation-input.security-zone-request-input.untrusted-network-role`"/>
+                                    </execute>
+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                                        <parameter name="source" value="`$tmp.ar-name`"/>
+                                        <parameter name="outputPath" value="tmp.ar-name"/>
+                                        <parameter name="target" value="$LandingNetworkRole"/>
+                                        <parameter name="replacement" value="`$security-zone-topology-operation-input.security-zone-request-input.trusted-network-role`"/>
+                                    </execute>
+                                    <set>
+                                        <parameter name='sz-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />
+                                    </set>
+                                </block>
+                            </outcome>
+                            <outcome value='Other'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />
+                                    </set>
+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                                        <parameter name="source" value="`$tmp.ar-name`"/>
+                                        <parameter name="outputPath" value="tmp.ar-name"/>
+                                        <parameter name="target" value="$TenantOAMNetworkRole"/>
+                                        <parameter name="replacement" value="`$security-zone-topology-operation-input.security-zone-request-input.untrusted-network-role`"/>
+                                    </execute>
+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                                        <parameter name="source" value="`$tmp.ar-name`"/>
+                                        <parameter name="outputPath" value="tmp.ar-name"/>
+                                        <parameter name="target" value="$LandingNetworkRole"/>
+                                        <parameter name="replacement" value="`$security-zone-topology-operation-input.security-zone-request-input.trusted-network-role`"/>
+                                    </execute>
+                                    <set>
+                                        <parameter name='sz-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />
+                                    </set>
+                                </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="Error in allotted-resource-model data.  Ecomp-generated-naming should be true" />
+                    </return>
+                </outcome>
+            </switch>
+            <set>
+                <parameter name='sz-ar.allotted-resource-data.security-zone-topology.allotted-resource-identifiers.' 
+value="`$sz-ar-identifiers.`" />
+            </set>
+            <set>
+                <parameter name='sz-ar-assignments.vlan-tag' value="`$security-zone-topology-operation-input.security-zone-request-input.vlan-tag` " />
+                <parameter name='sz-ar-assignments.trusted-network-role' value="`$security-zone-topology-operation-input.security-zone-request-input.trusted-network-role` " />
+                <parameter name='sz-ar-assignments.untrusted-network-role' value="`$security-zone-topology-operation-input.security-zone-request-input.untrusted-network-role` " />
+                <parameter name='sz-ar-assignments.security-zone-service-instance-id' value="`$tmp.ar.parent-service-instance-id` " />
+            </set>
+            <call module='GENERIC-RESOURCE-API' rpc='generate-panorama-name' mode='sync' ></call>
+            <set>
+                <parameter name='sz-ar-assignments.security-zone-name-untrusted' value="`$tmp.untrust-sz` " />
+                <parameter name='sz-ar-assignments.security-zone-name-trusted' value="`$tmp.trust-sz` " />
+            </set>
+            <set>
+                <parameter name='sz-ar.allotted-resource-data.security-zone-topology.security-zone-assignments.' 
+value="`$sz-ar-assignments.`" />
+            </set>
+            <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>
+                <outcome value=''>
+                    <set>
+                        <parameter name='tmp.cidx' value="`0`" />
+                        <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value="1" />
+                    </set>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true">
+                        <for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >
+                            <switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">
+                                <outcome value='true'>
+                                    <block atomic="true">
+                                        <set>
+                                            <parameter name='tmp.cidx' value='`$cidx`' />
+                                            <parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />
+                                            <parameter name='tmp.found-cidx' value='true' />
+                                        </set>
+                                        <break/>
+                                    </block>
+                                </outcome>
+                            </switch>
+                        </for>
+                        <switch test='`$tmp.found-cidx`'>
+                            <outcome value='false'>
+                                <block atomic="true">
+                                    <set>
+                                        <parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />
+                                    </set>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+            </switch>
+            <set>
+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value="`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-type` " />
+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value="`$tmp.ar.self-link` " />
+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+                <parameter name="outputPath" value="tmp.current-time" />
+            </execute>
+            <set>
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingCreate' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+            </set>
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="allotted-resource" 
+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+			allotted-resource.id = $tmp.ar.allotted-resource-id"
+        pfx='pfx' local-only='false' force='false'>
+                <parameter name="description" value="`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-type`" />
+                <parameter name="selflink" value="`$tmp.ar.self-link`" />
+                <parameter name="model-invariant-id" value="`$ar-model.invariant-uuid`" />
+                <parameter name="model-version-id" value="`$ar-model.uuid`" />
+                <parameter name="operational-status" value="null" />
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="AAI failed" />
+                    </return>
+                </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="AAI failed" />
+                    </return>
+                </outcome>
+            </update>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block>
+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />
+                            <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />
+                            <parameter name='restapiUser' value='`$prop.controller.user`' />
+                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                            <parameter name='format' value='json' />
+                            <parameter name='httpMethod' value='DELETE' />
+                            <parameter name="responsePrefix" value="parent" />
+                            <outcome value='success'>
+                                <block></block>
+                            </outcome>
+                            <outcome value='failure'>
+                                <block></block>
+                            </outcome>
+                            <outcome value='not-found'>
+                                <block></block>
+                            </outcome>
+                        </execute>
+                    </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 updating md-sal for security-zone-allotted-resource" />
+                    </return>
+                </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="Error updating md-sal for security-zone-allotted-resource" />
+                    </return>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+                <parameter name='security-zone-object-path' value="`$tmp.ar.self-link`"/>
+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $security-zone-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-create.xml
new file mode 100755
index 0000000..a234d0d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-create.xml
@@ -0,0 +1,127 @@
+<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='security-zone-topology-operation-create' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+                <parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+                <parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+            </set>
+            <set>
+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/security-zone-topology/'` " />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.sz-allottedresource`"/>
+                <parameter name="outputPath" value="tmp.ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='bk-sz-ar' value='$mdsal-ar.' />
+                        </set>
+                        <switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>
+                            <outcome value='1'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />
+                                    </set>
+                                    <switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+                                        <outcome value='PendingCreate'>
+                                            <block></block>
+                                        </outcome>
+                                        <outcome value='Other'>
+                                            <block></block>
+                                        </outcome>
+                                    </switch>
+                                    <set>
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+                                    </set>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true"></block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='sz-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+                <parameter name='sz-ar.allotted-resource-status.action' value="`$security-zone-topology-operation-input.request-information.request-action` " />
+                <parameter name='sz-ar.allotted-resource-status.rpc-name' value="security-zone-topology-operation" />
+                <parameter name='sz-ar.allotted-resource-status.rpc-action' value="`$security-zone-topology-operation-input.sdnc-request-header.svc-action` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$security-zone-topology-operation-input.request-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$security-zone-topology-operation-input.sdnc-request-header.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$security-zone-topology-operation-input.service-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$security-zone-topology-operation-input.allotted-resource-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value="`$security-zone-topology-operation-input.security-zone-request-input.` " />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+                <parameter name="outputPath" value="tmp.current-time" />
+            </execute>
+            <set>
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block></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 updating md-sal for security-zone-allotted-resource" />
+                    </return>
+                </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="Error updating md-sal for security-zone-allotted-resource" />
+                    </return>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+                <parameter name='security-zone-object-path' value="`$tmp.ar.self-link`"/>
+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $security-zone-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-deactivate.xml
new file mode 100755
index 0000000..14ecf29
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-deactivate.xml
@@ -0,0 +1,150 @@
+<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='security-zone-topology-operation-deactivate' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+                <parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+                <parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+            </set>
+            <set>
+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/security-zone-topology/'` " />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.sz-allottedresource`"/>
+                <parameter name="outputPath" value="tmp.ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='bk-sz-ar' value='$mdsal-ar.' />
+                        </set>
+                        <switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>
+                            <outcome value='1'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />
+                                    </set>
+                                    <switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+                                        <outcome value='Created'>
+                                            <block></block>
+                                        </outcome>
+                                        <outcome value='Other'>
+                                            <block></block>
+                                        </outcome>
+                                    </switch>
+                                    <set>
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+                                    </set>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true"></block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='sz-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+                <parameter name='sz-ar.allotted-resource-status.action' value="`$security-zone-topology-operation-input.request-information.request-action` " />
+                <parameter name='sz-ar.allotted-resource-status.rpc-name' value="security-zone-topology-operation" />
+                <parameter name='sz-ar.allotted-resource-status.rpc-action' value="`$security-zone-topology-operation-input.sdnc-request-header.svc-action` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$security-zone-topology-operation-input.request-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$security-zone-topology-operation-input.sdnc-request-header.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$security-zone-topology-operation-input.service-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$security-zone-topology-operation-input.allotted-resource-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value="`$security-zone-topology-operation-input.security-zone-request-input.` " />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+                <parameter name="outputPath" value="tmp.current-time" />
+            </execute>
+            <set>
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+            </set>
+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="allotted-resource" 
+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND
+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND
+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND
+			allotted-resource.id = $tmp.ar.allotted-resource-id"
+        pfx='pfx' local-only='false' force='false'>
+                <parameter name="operational-status" value="out-of-service-path" />
+                <outcome value='failure'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="AAI failed" />
+                    </return>
+                </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="AAI failed" />
+                    </return>
+                </outcome>
+            </update>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block></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 updating md-sal for security-zone-allotted-resource" />
+                    </return>
+                </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="Error updating md-sal for security-zone-allotted-resource" />
+                    </return>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+                <parameter name='security-zone-object-path' value="`$tmp.ar.self-link`"/>
+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $security-zone-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-delete.xml
new file mode 100755
index 0000000..acad449
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-delete.xml
@@ -0,0 +1,130 @@
+<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='security-zone-topology-operation-delete' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+                <parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+                <parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+            </set>
+            <set>
+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/security-zone-topology/'` " />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.sz-allottedresource`"/>
+                <parameter name="outputPath" value="tmp.ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='bk-sz-ar' value='$mdsal-ar.' />
+                        </set>
+                        <switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>
+                            <outcome value='1'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />
+                                    </set>
+                                    <switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+                                        <outcome value='Created'>
+                                            <block></block>
+                                        </outcome>
+                                        <outcome value='Other'>
+                                            <block></block>
+                                        </outcome>
+                                    </switch>
+                                    <set>
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+                                    </set>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true"></block>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='sz-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />
+                <parameter name='sz-ar.allotted-resource-status.action' value="`$security-zone-topology-operation-input.request-information.request-action` " />
+                <parameter name='sz-ar.allotted-resource-status.rpc-name' value="security-zone-topology-operation" />
+                <parameter name='sz-ar.allotted-resource-status.rpc-action' value="`$security-zone-topology-operation-input.sdnc-request-header.svc-action` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$security-zone-topology-operation-input.request-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$security-zone-topology-operation-input.sdnc-request-header.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$security-zone-topology-operation-input.service-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$security-zone-topology-operation-input.allotted-resource-information.` " />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.' value="`$security-zone-topology-operation-input.security-zone-request-input.` " />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >
+                <parameter name="outputPath" value="tmp.current-time" />
+            </execute>
+            <set>
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$security-zone-topology-operation-input.request-information.request-action`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`' />
+                <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />
+            </set>
+            <set>
+                <parameter name='sz-ar-assignments.' value="" />
+            </set>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sz.templatefile`" />
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='PUT' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block></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 updating md-sal for security-zone-allotted-resource" />
+                    </return>
+                </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="Error updating md-sal for security-zone-allotted-resource" />
+                    </return>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+                <parameter name='security-zone-object-path' value="`$tmp.ar.self-link`"/>
+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $security-zone-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-unassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-unassign.xml
new file mode 100755
index 0000000..0f11b39
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation-unassign.xml
@@ -0,0 +1,105 @@
+<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='security-zone-topology-operation-unassign' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.ar.allotted-resource-id' value='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`' />
+                <parameter name='tmp.ar.parent-service-instance-id' value='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />
+                <parameter name='tmp.ar.sz-vnf-id' value='`$security-zone-topology-operation-input.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id`' />
+            </set>
+            <set>
+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/'
+ + $tmp.ar.allotted-resource-id
+ + '/allotted-resource-data/security-zone-topology/'` " />
+            </set>
+            <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>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                <parameter name="source" value="`$prop.restapi.sz-allottedresource`"/>
+                <parameter name="outputPath" value="tmp.ar-url"/>
+                <parameter name="target" value="{allotted-resource-id}"/>
+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='GET' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block atomic="true">
+                        <set>
+                            <parameter name='bk-sz-ar' value='$mdsal-ar.' />
+                        </set>
+                        <switch test='`$mdsal-ar.security-zone-allotted-resource_length`'>
+                            <outcome value='1'>
+                                <block atomic='true'>
+                                    <set>
+                                        <parameter name='sz-ar.' value='$mdsal-ar.security-zone-allotted-resource[0].' />
+                                    </set>
+                                    <switch test='`$sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>
+                                        <outcome value='Created'>
+                                            <block></block>
+                                        </outcome>
+                                        <outcome value='Other'>
+                                            <block></block>
+                                        </outcome>
+                                    </switch>
+                                    <set>
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$sz-ar.allotted-resource-status.rpc-action`' />
+                                        <parameter name='sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />
+                                    </set>
+                                </block>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true"></block>
+                </outcome>
+            </execute>
+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />
+                <parameter name='restapiUser' value='`$prop.controller.user`' />
+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                <parameter name='format' value='json' />
+                <parameter name='httpMethod' value='DELETE' />
+                <parameter name="responsePrefix" value="mdsal-ar" />
+                <outcome value='success'>
+                    <block></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 updating md-sal for security-zone-allotted-resource" />
+                    </return>
+                </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="Error updating md-sal for security-zone-allotted-resource" />
+                    </return>
+                </outcome>
+            </execute>
+            <set>
+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />
+                <parameter name='security-zone-object-path' value="`$tmp.ar.self-link`"/>
+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $security-zone-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation.xml
new file mode 100755
index 0000000..5cb18ae
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_security-zone-topology-operation.xml
@@ -0,0 +1,56 @@
+<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='security-zone-topology-operation' mode='sync'>
+        <block atomic="true">
+            <call module='GENERIC-RESOURCE-API' rpc='validate-security-zone-input' mode='sync' ></call>
+            <switch test='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`'>
+                <outcome value='assign'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-assign' mode='sync' ></call>
+                    </block>
+                </outcome>
+                <outcome value='create'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-create' mode='sync' ></call>
+                    </block>
+                </outcome>
+                <outcome value='activate'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-activate' mode='sync' ></call>
+                    </block>
+                </outcome>
+                <outcome value='deactivate'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-deactivate' mode='sync' ></call>
+                    </block>
+                </outcome>
+                <outcome value='delete'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-delete' mode='sync' ></call>
+                    </block>
+                </outcome>
+                <outcome value='unassign'>
+                    <block atomic="true">
+                        <call module='GENERIC-RESOURCE-API' rpc='security-zone-topology-operation-unassign' mode='sync' ></call>
+                    </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="sdnc-request-header.svc-action is a required input" />
+                    </return>
+                </outcome>
+            </switch>
+            <set>
+                <parameter name="ack-final" value="Y"/>
+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.xml b/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-aai-vf-module-put.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-aai-vf-module-put.xml
new file mode 100644
index 0000000..c64485b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-aai-vf-module-put.xml
@@ -0,0 +1,6600 @@
+<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-vf-module-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'>

+                        <block>

+                            <set>

+                                <parameter name='nidx' value='0' />

+                            </set>

+                            <for silentFailure='true' index="bidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`" >

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >

+                                    <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`" />

+                                    <parameter name="target" value="sriov"/>

+                                    <outcome value='true'>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='endsWith' emitsOutcome='true' >

+                                            <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`" />

+                                            <parameter name="target" value="_net_id"/>

+                                            <outcome value='true'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='ss.network[$nidx].netid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='nidx' value='`$nidx + 1`' />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </execute>

+                                    </outcome>

+                                    <outcome value='false'>

+                                        <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`'>

+                                            <outcome value='vf_module_id'>

+                                                <set>

+                                                    <parameter name='ss.param.vf-module-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='vf-module-name'>

+                                                <set>

+                                                    <parameter name='ss.param.vf-module-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='volume-group-id'>

+                                                <set>

+                                                    <parameter name='ss.param.volume-group-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='volume-group-name'>

+                                                <set>

+                                                    <parameter name='ss.param.volume-group-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='aic-cloud-region'>

+                                                <set>

+                                                    <parameter name='ss.param.aic-cloud-region' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='vnfc-name'>

+                                                <set>

+                                                    <parameter name='ss.param.vnfc-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.vnfc-name-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='oam-interface-name'>

+                                                <set>

+                                                    <parameter name='ss.param.oam-interface-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.oam-interface-name-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='=”lo0-interface-name'>

+                                                <set>

+                                                    <parameter name='ss.param.lo0-interface-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.lo0-interface-name-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='ipv4-oam-address'>

+                                                <set>

+                                                    <parameter name='ss.param.ipv4-oam-address' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.ipv4-oam-address-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='ipv4-oam-address-prefix'>

+                                                <set>

+                                                    <parameter name='ss.param.ipv4-oam-address-prefix' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.ipv4-oam-address-prefix-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='loopback0_ipv4_address'>

+                                                <set>

+                                                    <parameter name='ss.param.loopback0-ipv4-address' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.loopback0-ipv4-address-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='ipv4-loopback0-address'>

+                                                <set>

+                                                    <parameter name='ss.param.ipv4-loopback0-address' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.ipv4-loopback0-address-index' value='`bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='nfc-naming-code'>

+                                                <set>

+                                                    <parameter name='ss.param.nfc-naming-code' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.nfc-naming-code-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='nfc-function'>

+                                                <set>

+                                                    <parameter name='ss.param.nfc-function' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.nfc-function-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='vnfc-model-customization-uuid'>

+                                                <set>

+                                                    <parameter name='ss.param.vnfc-model-customization-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.vnfc-model-customization-uuid-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='vnfc-model-invariant-uuid'>

+                                                <set>

+                                                    <parameter name='ss.param.vnfc-model-invariant-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.vnfc-model-invariant-uuid-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='vnfc-model-version'>

+                                                <set>

+                                                    <parameter name='ss.param.vnfc-model-version' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.vnfc-model-version-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='as-number'>

+                                                <set>

+                                                    <parameter name='ss.param.as-number' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.as-number-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='vlan-id-outer'>

+                                                <set>

+                                                    <parameter name='ss.param.vlan-id-outer' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.vlan-id-outer-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='availability_zone_0'>

+                                                <set>

+                                                    <parameter name='ss.param.availability-zone-0' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.availability-zone-0-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='aai-vf-module-put'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='ss.param.aai-vf-module-put-index' value='`$bidx`' />

+                                                    </set>

+                                                    <for silentFailure='true' index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key_length`">

+                                                        <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].name`'>

+                                                            <outcome value='generic-vnf'>

+                                                                <set>

+                                                                    <parameter name='ss.resource-key.generic-vnf' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='vf-module'>

+                                                                <set>

+                                                                    <parameter name='ss.resource-key.vf-module' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='volume-group'>

+                                                                <set>

+                                                                    <parameter name='ss.resource-key.volume-group' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='vnfc'>

+                                                                <set>

+                                                                    <parameter name='ss.resource-key.vnfc' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='connection-points'>

+                                                                <set>

+                                                                    <parameter name='ss.resource-key.connection-points' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='l-interface'>

+                                                                <set>

+                                                                    <parameter name='ss.resource-key.l-interface' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='l3-netework'>

+                                                                <set>

+                                                                    <parameter name='ss.resource-key.l3-network' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                </set>

+                                                            </outcome>

+                                                        </switch>

+                                                    </for>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </outcome>

+                                </execute>

+                            </for>

+                            <set>

+                                <parameter name='ss.param.vnf-id' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-id`' />

+                            </set>

+                        </block>

+                        <switch test="`$ss.resource-key.generic-vnf`">

+                            <outcome value='generic-vnf'>

+                                <block atomic='true'>

+                                    <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id "

+	pfx="tmp.aai.vnf" >

+                                        <outcome value='failure'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-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 generic-vnf with vnf-id=' + $ss.param.vnf-id + ' from AnAI'`" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='not-found'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                </set>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500' />

+                                                    <parameter name='error-message' value="`'generic-vnf.vnf-name with vnf-id=' + $ss.param.vnf-id + ' not found in AAI. '`" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                    </get-resource>

+                                    <switch test="`$ss.param.ipv4-loopback0-address != ''`">

+                                        <outcome value='true'>

+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >

+                                                <parameter name='source' value='`$ss.param.ipv4-loopback0-address`' />

+                                                <parameter name='target' value='$' />

+                                                <outcome value='true'>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="`'ss.param.ipv4-loopback0-address = ' + $ss.param.ipv4-loopback0-address`"/>

+                                                        <parameter name="field3" value="__SKIP ipv4-loopback0-address update for generic-vnf in AnAI__"/>

+                                                    </record>

+                                                </outcome>

+                                                <outcome value='false'>

+                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                        <parameter name="ipv4-loopback0-address" value='`$ss.param.ipv4-loopback0-address`' />

+                                                        <outcome value='failure'>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500' />

+                                                                <parameter name='error-message' value="`'Failed to update generic-vnf.ipv4-loopback0-address in AnAI with ipv4-loopback0-address=' + $ss.param.ipv4-loopback0-address + '; ' + $error-message`" />

+                                                            </return>

+                                                        </outcome>

+                                                        <outcome value='not-found'>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500' />

+                                                                <parameter name='error-message' value="`'Failed to update generic-vnf because vnf-id =' + $ss.param.vnf-id + ' is not found in AAI. ' + $error-message`" />

+                                                            </return>

+                                                        </outcome>

+                                                        <outcome value='success'>

+                                                            <set>

+                                                                <parameter name='ss.ipv4-loopback0-address-updated' value='true' />

+                                                            </set>

+                                                        </outcome>

+                                                    </update>

+                                                </outcome>

+                                            </execute>

+                                        </outcome>

+                                    </switch>

+                                    <switch test="`$ss.param.ipv4-oam-address != ''`">

+                                        <outcome value='true'>

+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >

+                                                <parameter name='source' value='`$ss.param.ipv4-oam-address`' />

+                                                <parameter name='target' value='$' />

+                                                <outcome value='true'>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="`'ss.param.ipv4-oam-address = ' + $ss.param.ipv4-oam-address`"/>

+                                                        <parameter name="field3" value="__SKIP ipv4-oam-address update for generic-vnf in AnAI__"/>

+                                                    </record>

+                                                </outcome>

+                                                <outcome value='false'>

+                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                        <parameter name="ipv4-oam-address" value='`$ss.param.ipv4-oam-address`' />

+                                                        <outcome value='failure'>

+                                                            <block atomic='true'>

+                                                                <block>

+                                                                    <switch test="`$ss.ipv4-loopback0-address-updated`">

+                                                                        <outcome value='true'>

+                                                                            <block>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>

+                                                                                </record>

+                                                                                <set>

+                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                </set>

+                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                    <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                    <outcome value='failure'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </update>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value="`'Failed to update generic-vnf.ipv4-oam-address in AnAI with ipv4-oam-address=' + $ss.param.ipv4-oam-address + '; ' + $error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='not-found'>

+                                                            <block atomic='true'>

+                                                                <block>

+                                                                    <switch test="`$ss.ipv4-loopback0-address-updated`">

+                                                                        <outcome value='true'>

+                                                                            <block>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>

+                                                                                </record>

+                                                                                <set>

+                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                </set>

+                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                    <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                    <outcome value='failure'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </update>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value="`'Failed to update generic-vnf because vnf-id =' + $ss.param.vnf-id + ' is not found in AAI' + '; ' + $error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='success'>

+                                                            <set>

+                                                                <parameter name='ss.ipv4-oam-address-updated' value='true' />

+                                                            </set>

+                                                        </outcome>

+                                                    </update>

+                                                </outcome>

+                                            </execute>

+                                        </outcome>

+                                    </switch>

+                                    <switch test="`$ss.param.as-number != ''`">

+                                        <outcome value='true'>

+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >

+                                                <parameter name='source' value='`$ss.param.as-number`' />

+                                                <parameter name='target' value='$' />

+                                                <outcome value='true'>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="`'ss.param.as-number = ' + $ss.param.as-number`"/>

+                                                        <parameter name="field3" value="__SKIP as-number update for generic-vnf in AnAI__"/>

+                                                    </record>

+                                                </outcome>

+                                                <outcome value='false'>

+                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                        <parameter name="as-number" value='`$ss.param.as-number`' />

+                                                        <outcome value='failure'>

+                                                            <block atomic='true'>

+                                                                <block>

+                                                                    <block>

+                                                                        <switch test="`$ss.ipv4-loopback0-address-updated`">

+                                                                            <outcome value='true'>

+                                                                                <block>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>

+                                                                                    </record>

+                                                                                    <set>

+                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                    </set>

+                                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                        <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                        <outcome value='failure'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </update>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <switch test="`$ss.ipv4-oam-address-updated`">

+                                                                        <outcome value='true'>

+                                                                            <block atomic='true'>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-oam-address update"/>

+                                                                                </record>

+                                                                                <set>

+                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                </set>

+                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                    <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                    <outcome value='failure'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-oam-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-oam-address update completed. '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </update>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value="`'Failed to update generic-vnf.as-number in AnAI with as-number=' + $ss.param.as-number + '; ' + $error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='not-found'>

+                                                            <block atomic='true'>

+                                                                <block>

+                                                                    <block>

+                                                                        <switch test="`$ss.ipv4-loopback0-address-updated`">

+                                                                            <outcome value='true'>

+                                                                                <block>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>

+                                                                                    </record>

+                                                                                    <set>

+                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                    </set>

+                                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                        <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                        <outcome value='failure'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </update>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <switch test="`$ss.ipv4-oam-address-updated`">

+                                                                        <outcome value='true'>

+                                                                            <block atomic='true'>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-oam-address update"/>

+                                                                                </record>

+                                                                                <set>

+                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                </set>

+                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                    <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                    <outcome value='failure'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-oam-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-oam-address update completed. '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </update>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value="`'Failed to update generic-vnf because vnf-id =' + $ss.param.vnf-id + ' is not found in AAI. ' + $error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='success'>

+                                                            <set>

+                                                                <parameter name='ss.as-number-updated' value='true' />

+                                                            </set>

+                                                        </outcome>

+                                                    </update>

+                                                </outcome>

+                                            </execute>

+                                        </outcome>

+                                    </switch>

+                                    <switch test="`$ss.param.vlan-id-outer != ''`">

+                                        <outcome value='true'>

+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >

+                                                <parameter name='source' value='`$ss.param.vlan-id-outer`' />

+                                                <parameter name='target' value='$' />

+                                                <outcome value='true'>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="`'ss.param.vlan-id-outer = ' + $ss.param.vlan-id-outer`"/>

+                                                        <parameter name="field3" value="__SKIP vlan-id-outer update for generic-vnf in AnAI__"/>

+                                                    </record>

+                                                </outcome>

+                                                <outcome value='false'>

+                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                        <parameter name="vlan-id-outer" value='`$ss.param.vlan-id-outer`' />

+                                                        <outcome value='failure'>

+                                                            <block atomic='true'>

+                                                                <block>

+                                                                    <block>

+                                                                        <block>

+                                                                            <switch test="`$ss.ipv4-loopback0-address-updated`">

+                                                                                <outcome value='true'>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>

+                                                                                        </record>

+                                                                                        <set>

+                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                        </set>

+                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                            <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                            <outcome value='failure'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </update>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <switch test="`$ss.ipv4-oam-address-updated`">

+                                                                            <outcome value='true'>

+                                                                                <block atomic='true'>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-oam-address update"/>

+                                                                                    </record>

+                                                                                    <set>

+                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                    </set>

+                                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                        <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                        <outcome value='failure'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-oam-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-oam-address update completed. '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </update>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <switch test="`$ss.as-number-updated`">

+                                                                        <outcome value='true'>

+                                                                            <block>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="ROLLBACK generic-vnf.as-number update"/>

+                                                                                </record>

+                                                                                <set>

+                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                </set>

+                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                    <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                    <outcome value='failure'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.as-number update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.as-number update completed. '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </update>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value="`'Failed to update generic-vnf.vlan-id-outer in AnAI with as-number=' + $ss.param.as-number  + '; ' + $error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='not-found'>

+                                                            <block atomic='true'>

+                                                                <block>

+                                                                    <block>

+                                                                        <block>

+                                                                            <switch test="`$ss.ipv4-loopback0-address-updated`">

+                                                                                <outcome value='true'>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>

+                                                                                        </record>

+                                                                                        <set>

+                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                        </set>

+                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                            <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                            <outcome value='failure'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </update>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <switch test="`$ss.ipv4-oam-address-updated`">

+                                                                            <outcome value='true'>

+                                                                                <block atomic='true'>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-oam-address update"/>

+                                                                                    </record>

+                                                                                    <set>

+                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                    </set>

+                                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                        <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                        <outcome value='failure'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-oam-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-oam-address update completed. '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </update>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <switch test="`$ss.as-number-updated`">

+                                                                        <outcome value='true'>

+                                                                            <block>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="ROLLBACK generic-vnf.as-number update"/>

+                                                                                </record>

+                                                                                <set>

+                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                </set>

+                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                    <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                    <outcome value='failure'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.as-number update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.as-number update completed. '`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </update>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value="`'Failed to update generic-vnf because vnf-id =' + $ss.param.vnf-id + ' is not found in AAI. ' + $error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='success'>

+                                                            <set>

+                                                                <parameter name='ss.vlan-id-outer-updated' value='true' />

+                                                            </set>

+                                                        </outcome>

+                                                    </update>

+                                                </outcome>

+                                            </execute>

+                                        </outcome>

+                                    </switch>

+                                    <switch test="`$ss.param.availability-zone-0 != ''`">

+                                        <outcome value='true'>

+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >

+                                                <parameter name='source' value='`$ss.param.availability-zone-0`' />

+                                                <parameter name='target' value='$' />

+                                                <outcome value='true'>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="`'ss.param.availability-zone-0 = ' + $ss.param.availability-zone-0`"/>

+                                                        <parameter name="field3" value="__SKIP availability-zone-0 update for generic-vnf in AnAI__"/>

+                                                    </record>

+                                                </outcome>

+                                                <outcome value='false'>

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name='ss.availability-zone.related-link' 

+	value="`'/aai/v$/cloud-infrastructure/cloud-regions/cloud-region/' + 

+	$prop.cloud-region.cloud-owner + '/' + $ss.param.aic-cloud-region + 

+	'/availability-zones/availability-zone/' + 

+	$ss.param.availability-zone-0`" />

+                                                        </set>

+                                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf:relationship-list"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                            <parameter name="relationship-list.relationship[0].related-to" value="availability-zone" />

+                                                            <parameter name="relationship-list.relationship[0].related-link" value="`$ss.availability-zone.related-link`" />

+                                                            <!--

+<parameter name="relationship-list.relationship[0].related-to" value="availability-zone" /><parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" /><parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.cloud-region.cloud-owner`" /><parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" /><parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$ss.param.aic-cloud-region`" /><parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="availability-zone.availability-zone-name" /><parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$ss.param.availability-zone-0`" />

+-->

+                                                            <outcome value='failure'>

+                                                                <block atomic='true'>

+                                                                    <block>

+                                                                        <block>

+                                                                            <block>

+                                                                                <block>

+                                                                                    <switch test="`$ss.ipv4-loopback0-address-updated`">

+                                                                                        <outcome value='true'>

+                                                                                            <block>

+                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                    <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>

+                                                                                                </record>

+                                                                                                <set>

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                </set>

+                                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                    <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                    <outcome value='failure'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='not-found'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='success'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                </update>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                                <switch test="`$ss.ipv4-oam-address-updated`">

+                                                                                    <outcome value='true'>

+                                                                                        <block atomic='true'>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-oam-address update"/>

+                                                                                            </record>

+                                                                                            <set>

+                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                            </set>

+                                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                <outcome value='failure'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-oam-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-oam-address update completed. '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </update>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <switch test="`$ss.as-number-updated`">

+                                                                                <outcome value='true'>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK generic-vnf.as-number update"/>

+                                                                                        </record>

+                                                                                        <set>

+                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                        </set>

+                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                            <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                            <outcome value='failure'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.as-number update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.as-number update completed. '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </update>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <switch test="`$ss.vlan-id-outer-updated`">

+                                                                            <outcome value='true'>

+                                                                                <block>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK generic-vnf.vlan-id-outer update"/>

+                                                                                    </record>

+                                                                                    <set>

+                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                    </set>

+                                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                        <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                        <outcome value='failure'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.vlan-id-outer update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.vlan-id-outer update completed. '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </update>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <return status='failure'>

+                                                                        <parameter name='error-code' value='500' />

+                                                                        <parameter name='error-message' value="`'Failed to save availability-zone relationship for generic-vnf in AnAI with availability-zone-name =' + $ss.param.as-number + '; ' + $error-message`" />

+                                                                    </return>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='not-found'>

+                                                                <block atomic='true'>

+                                                                    <block>

+                                                                        <block>

+                                                                            <block>

+                                                                                <block>

+                                                                                    <switch test="`$ss.ipv4-loopback0-address-updated`">

+                                                                                        <outcome value='true'>

+                                                                                            <block>

+                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                    <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-loopback0-address update"/>

+                                                                                                </record>

+                                                                                                <set>

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                </set>

+                                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                    <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                    <outcome value='failure'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-loopback0-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='not-found'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='success'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-loopback0-address update completed. '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                </update>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                                <switch test="`$ss.ipv4-oam-address-updated`">

+                                                                                    <outcome value='true'>

+                                                                                        <block atomic='true'>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK generic-vnf.ipv4-oam-address update"/>

+                                                                                            </record>

+                                                                                            <set>

+                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                            </set>

+                                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                <outcome value='failure'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.ipv4-oam-address update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.ipv4-oam-address update completed. '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </update>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <switch test="`$ss.as-number-updated`">

+                                                                                <outcome value='true'>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK generic-vnf.as-number update"/>

+                                                                                        </record>

+                                                                                        <set>

+                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                        </set>

+                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                            <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                            <outcome value='failure'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.as-number update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.as-number update completed. '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </update>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <switch test="`$ss.vlan-id-outer-updated`">

+                                                                            <outcome value='true'>

+                                                                                <block>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK generic-vnf.vlan-id-outer update"/>

+                                                                                    </record>

+                                                                                    <set>

+                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                    </set>

+                                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                        <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                        <outcome value='failure'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf.vlan-id-outer update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf.vlan-id-outer update completed. '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </update>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <return status='failure'>

+                                                                        <parameter name='error-code' value='500' />

+                                                                        <parameter name='error-message' value="`'Failed to create availability-zone relationship because generic-vnf with vnf-id =' + $ss.param.vnf-id + ' is not found in AAI. ' + $error-message`" />

+                                                                    </return>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='success'>

+                                                                <set>

+                                                                    <parameter name='ss.availability-zone-0-updated' value='true' />

+                                                                </set>

+                                                            </outcome>

+                                                        </save>

+                                                    </block>

+                                                </outcome>

+                                            </execute>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <switch test="`$ss.resource-key.vf-module`">

+                            <outcome value='vf-module'>

+                                <block atomic='true'>

+                                    <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id "

+	pfx="tmp.aai.vfmdoule" >

+                                        <outcome value='failure'>

+                                            <block atomic='true'>

+                                                <block>

+                                                    <switch test="`$ss.resource-key.generic-vnf`">

+                                                        <outcome value='generic-vnf'>

+                                                            <block>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                </record>

+                                                                <set>

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                </set>

+                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                    <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                    <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                    <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                    <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                    <outcome value='failure'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='success'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </update>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500' />

+                                                    <parameter name='error-message' value="`'Failed to get vf-module in AnAI with vf-module-id = ' + $ss.param.vf-module-id  + '; ' + $error-message`" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='not-found'>

+                                            <block atomic='true'>

+                                                <block>

+                                                    <switch test="`$ss.resource-key.generic-vnf`">

+                                                        <outcome value='generic-vnf'>

+                                                            <block>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                </record>

+                                                                <set>

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                </set>

+                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                    <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                    <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                    <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                    <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                    <outcome value='failure'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='success'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </update>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500' />

+                                                    <parameter name='error-message' value="`'vf-module not found in AnAI with vf-module-id=' + $ss.param.vf-module-id + $error-message`" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                    </get-resource>

+                                    <set>

+                                        <parameter name='ss.selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + 

+$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.service-instance-id + 

+'/service-data/vnfs/vnf/' + 

+$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.vnf-id + 

+'/vnf-data/vf-modules/vf-module/' + 

+$ss.param.vf-module-id + 

+'/vf-module-data/vf-module-topology/'`" />

+                                    </set>

+                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                        <parameter name="vf-module-name" value='`$ss.param.vf-module-name`' />

+                                        <parameter name="selflink" value='`$ss.selflink`' />

+                                        <outcome value='failure'>

+                                            <block atomic='true'>

+                                                <block>

+                                                    <switch test="`$ss.resource-key.generic-vnf`">

+                                                        <outcome value='generic-vnf'>

+                                                            <block>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                </record>

+                                                                <set>

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                </set>

+                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                    <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                    <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                    <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                    <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                    <outcome value='failure'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='success'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </update>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500' />

+                                                    <parameter name='error-message' value="`'Failed to update vf-module-name with vf-module-id = ' + $ss.param.vf-module-id + ' in AnAI; ' + $error-message`" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='not-found'>

+                                            <block atomic='true'>

+                                                <block>

+                                                    <switch test="`$ss.resource-key.generic-vnf`">

+                                                        <outcome value='generic-vnf'>

+                                                            <block>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                </record>

+                                                                <set>

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                </set>

+                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                    <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                    <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                    <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                    <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                    <outcome value='failure'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='success'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </update>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500' />

+                                                    <parameter name='error-message' value="`'Failed to update vf-module-name with vf-module-id =' + $ss.param.vf-module-id + ' because vf-module is not found in AAI' + $error-message`" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                    </update>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <switch test="`$ss.resource-key.volume-group`">

+                            <outcome value='volume-group'>

+                                <block atomic='true'>

+                                    <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" 

+	pfx="tmp.aai.volume-group" >

+                                        <outcome value='failure'>

+                                            <block atomic='true'>

+                                                <block>

+                                                    <block>

+                                                        <switch test="`$ss.resource-key.generic-vnf`">

+                                                            <outcome value='generic-vnf'>

+                                                                <block>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                    </record>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                    </set>

+                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                        <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                        <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                        <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                        <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                        <outcome value='failure'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='success'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </update>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                    <switch test="`$ss.resource-key.vf-module`">

+                                                        <outcome value='vf-module'>

+                                                            <block>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                </record>

+                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                    <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                    <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                    <outcome value='failure'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='success'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </update>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500' />

+                                                    <parameter name='error-message' value="`'Failed to get volume-group in AnAI with volume-group-id = ' + $ss.param.volume-group-id  + '; ' + $error-message`" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='not-found'>

+                                            <block atomic='true'>

+                                                <block>

+                                                    <block>

+                                                        <switch test="`$ss.resource-key.generic-vnf`">

+                                                            <outcome value='generic-vnf'>

+                                                                <block>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                    </record>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                    </set>

+                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                        <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                        <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                        <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                        <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                        <outcome value='failure'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='success'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </update>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                    <switch test="`$ss.resource-key.vf-module`">

+                                                        <outcome value='vf-module'>

+                                                            <block>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                </record>

+                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                    <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                    <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                    <outcome value='failure'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='success'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </update>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500' />

+                                                    <parameter name='error-message' value="`'volume-group not found in AnAI with volume-group-id=' + $ss.param.volume-group-id  + '; ' + $error-message`" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                    </get-resource>

+                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                        <parameter name="volume-group-name" value='`$ss.param.volume-group-name`' />

+                                        <parameter name="volume-group-id" value='`$ss.param.volume-group-id`' />

+                                        <outcome value='failure'>

+                                            <block atomic='true'>

+                                                <block>

+                                                    <block>

+                                                        <switch test="`$ss.resource-key.generic-vnf`">

+                                                            <outcome value='generic-vnf'>

+                                                                <block>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                    </record>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                    </set>

+                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                        <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                        <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                        <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                        <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                        <outcome value='failure'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='success'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </update>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                    <switch test="`$ss.resource-key.vf-module`">

+                                                        <outcome value='vf-module'>

+                                                            <block>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                </record>

+                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                    <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                    <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                    <outcome value='failure'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='success'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </update>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500' />

+                                                    <parameter name='error-message' value="`' Failed to update volume-group with volume-group-id =' + $ss.param.volume-group-id + ' and volume-group-name = ' + $ss.param.volume-group-name + ' in AnAI.' + $error-message`" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='not-found'>

+                                            <block atomic='true'>

+                                                <block>

+                                                    <block>

+                                                        <switch test="`$ss.resource-key.generic-vnf`">

+                                                            <outcome value='generic-vnf'>

+                                                                <block>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                    </record>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                    </set>

+                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                        <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                        <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                        <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                        <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                        <outcome value='failure'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='success'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </update>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                    <switch test="`$ss.resource-key.vf-module`">

+                                                        <outcome value='vf-module'>

+                                                            <block>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                </record>

+                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                    <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                    <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                    <outcome value='failure'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='success'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </update>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500' />

+                                                    <parameter name='error-message' value="`'volume-group not found in AnAI with volume-group-id=' + $ss.param.volume-group-id  + '; ' + $error-message`" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                    </update>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <switch test="`$ss.resource-key.vnfc`">

+                            <outcome value='vnfc'>

+                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                    <parameter name="nfc-naming-code" value='`$ss.param.nfc-naming-code`' />

+                                    <parameter name="nfc-function" value='`$ss.param.nfc-function`' />

+                                    <parameter name="model-customization-id" value='`$ss.param.vnfc-model-customization-uuid`' />

+                                    <parameter name="model-invariant-id" value='`$ss.param.vnfc-model-invariant-uuid`' />

+                                    <parameter name="model-version-id" value='`$ss.param.vnfc-model-version`' />

+                                    <outcome value='failure'>

+                                        <block atomic='true'>

+                                            <block>

+                                                <block>

+                                                    <block>

+                                                        <switch test="`$ss.resource-key.generic-vnf`">

+                                                            <outcome value='generic-vnf'>

+                                                                <block>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                    </record>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                    </set>

+                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                        <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                        <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                        <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                        <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                        <outcome value='failure'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='success'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </update>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                    <switch test="`$ss.resource-key.vf-module`">

+                                                        <outcome value='vf-module'>

+                                                            <block>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                </record>

+                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                    <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                    <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                    <outcome value='failure'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='success'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </update>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                                <switch test="`$ss.resource-key.volume-group`">

+                                                    <outcome value='volume-group'>

+                                                        <block>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                            </record>

+                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                <outcome value='failure'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='success'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </update>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value="`' Failed to create vnfc with vnfc-name =' + $ss.param.vnfc-name + ' in AnAI. ' + $error-message`" />

+                                            </return>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <block atomic='true'>

+                                            <block>

+                                                <block>

+                                                    <block>

+                                                        <switch test="`$ss.resource-key.generic-vnf`">

+                                                            <outcome value='generic-vnf'>

+                                                                <block>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                    </record>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                    </set>

+                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                        <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                        <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                        <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                        <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                        <outcome value='failure'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='success'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </update>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                    <switch test="`$ss.resource-key.vf-module`">

+                                                        <outcome value='vf-module'>

+                                                            <block>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                </record>

+                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                    <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                    <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                    <outcome value='failure'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='success'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </update>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                                <switch test="`$ss.resource-key.volume-group`">

+                                                    <outcome value='volume-group'>

+                                                        <block>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                            </record>

+                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                <outcome value='failure'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='success'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </update>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value="`' Failed to create vnfc with vnfc-name =' + $ss.param.vnfc-name + ' in AnAI. ' + $error-message`" />

+                                            </return>

+                                        </block>

+                                    </outcome>

+                                </save>

+                            </outcome>

+                        </switch>

+                        <switch test="`$ss.resource-key.connection-points`">

+                            <outcome value='connection-points'>

+                                <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="cp"

+		key="cp.cp-instance-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.connection-point-id 

+		AND vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                        <parameter name="cp-instance-id" 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.connection-point-id`' />

+                                        <outcome value='failure'>

+                                            <block atomic='true'>

+                                                <block atomic='true'>

+                                                    <block>

+                                                        <block>

+                                                            <block>

+                                                                <switch test="`$ss.resource-key.generic-vnf`">

+                                                                    <outcome value='generic-vnf'>

+                                                                        <block>

+                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                <parameter name="logger" value="message-log"/>

+                                                                                <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                            </record>

+                                                                            <set>

+                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                            </set>

+                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                <outcome value='failure'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                                <outcome value='not-found'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                                <outcome value='success'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                            </update>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                            <switch test="`$ss.resource-key.vf-module`">

+                                                                <outcome value='vf-module'>

+                                                                    <block>

+                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                            <parameter name="logger" value="message-log"/>

+                                                                            <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                        </record>

+                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                            <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                            <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                            <outcome value='failure'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                            <outcome value='not-found'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                            <outcome value='success'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                        </update>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                        <switch test="`$ss.resource-key.volume-group`">

+                                                            <outcome value='volume-group'>

+                                                                <block>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                    </record>

+                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                        <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                        <outcome value='failure'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='success'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </update>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                    <switch test="`$ss.resource-key.vnfc`">

+                                                        <outcome value='vnfc'>

+                                                            <block atomic='true'>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                </record>

+                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                    <outcome value='failure'>

+                                                                        <block atomic='true'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                            <switch test='`$tmp.return-failure`'>

+                                                                                <outcome value='true'>

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                        </set>

+                                                                                        <return status='failure'>

+                                                                                            <parameter name='error-code' value='500' />

+                                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                                        </return>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='success'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </delete>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500' />

+                                                    <parameter name='error-message' value="`' Failed to create connection-point with cp-instance-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.connection-point-id + ' in AnAI. ' + $error-message`" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='not-found'>

+                                            <block atomic='true'>

+                                                <block atomic='true'>

+                                                    <block>

+                                                        <block>

+                                                            <block>

+                                                                <switch test="`$ss.resource-key.generic-vnf`">

+                                                                    <outcome value='generic-vnf'>

+                                                                        <block>

+                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                <parameter name="logger" value="message-log"/>

+                                                                                <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                            </record>

+                                                                            <set>

+                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                            </set>

+                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                <outcome value='failure'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                                <outcome value='not-found'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                                <outcome value='success'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                            </update>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                            <switch test="`$ss.resource-key.vf-module`">

+                                                                <outcome value='vf-module'>

+                                                                    <block>

+                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                            <parameter name="logger" value="message-log"/>

+                                                                            <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                        </record>

+                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                            <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                            <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                            <outcome value='failure'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                            <outcome value='not-found'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                            <outcome value='success'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                        </update>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                        <switch test="`$ss.resource-key.volume-group`">

+                                                            <outcome value='volume-group'>

+                                                                <block>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                    </record>

+                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                        <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                        <outcome value='failure'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='success'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </update>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                    <switch test="`$ss.resource-key.vnfc`">

+                                                        <outcome value='vnfc'>

+                                                            <block atomic='true'>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                </record>

+                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                    <outcome value='failure'>

+                                                                        <block atomic='true'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                            </set>

+                                                                            <switch test='`$tmp.return-failure`'>

+                                                                                <outcome value='true'>

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                        </set>

+                                                                                        <return status='failure'>

+                                                                                            <parameter name='error-code' value='500' />

+                                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                                        </return>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='success'>

+                                                                        <set>

+                                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                        </set>

+                                                                    </outcome>

+                                                                </delete>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='500' />

+                                                    <parameter name='error-message' value="`' Failed to create connection-point with cp-instance-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.connection-point-id + ' in AnAI. ' + $error-message`" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='success'>

+                                            <for silentFailure='true' index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                    <parameter name="vlan-tag-id" 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid`' />

+                                                    <parameter name="vlan-tag-role" 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-tag-description`' />

+                                                    <parameter name="vlan-id-outer" 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-tag-id`' />

+                                                    <outcome value='success'>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='ss.cp.related-link' 

+	value="`'/aai/v$/network/vnfcs/vnfc/' + 

+	$ss.param.vnfc-name + 

+	'/cps/cp/' + 

+	$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.connection-point-id`" />

+                                                            </set>

+                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag:relationship-list"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                <parameter name="relationship-list.relationship[0].related-to" value="cp" />

+                                                                <parameter name="relationship-list.relationship[0].related-link" value="`$ss.cp.related-link`" />

+                                                                <outcome value='failure'>

+                                                                    <block atomic='true'>

+                                                                        <block>

+                                                                            <block atomic='true'>

+                                                                                <block>

+                                                                                    <block>

+                                                                                        <block>

+                                                                                            <switch test="`$ss.resource-key.generic-vnf`">

+                                                                                                <outcome value='generic-vnf'>

+                                                                                                    <block>

+                                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                                            <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                                                        </record>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                        </set>

+                                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                            <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                            <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                            <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                                            <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                                            <outcome value='failure'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                            <outcome value='not-found'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                            <outcome value='success'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                        </update>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                        <switch test="`$ss.resource-key.vf-module`">

+                                                                                            <outcome value='vf-module'>

+                                                                                                <block>

+                                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                                        <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                                                    </record>

+                                                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                                                        <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                                                        <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                                                        <outcome value='failure'>

+                                                                                                            <set>

+                                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                        <outcome value='not-found'>

+                                                                                                            <set>

+                                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                        <outcome value='success'>

+                                                                                                            <set>

+                                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                    </update>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </block>

+                                                                                    <switch test="`$ss.resource-key.volume-group`">

+                                                                                        <outcome value='volume-group'>

+                                                                                            <block>

+                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                    <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                                                </record>

+                                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                                                    <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                                                    <outcome value='failure'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='not-found'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='success'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                </update>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                                <switch test="`$ss.resource-key.vnfc`">

+                                                                                    <outcome value='vnfc'>

+                                                                                        <block atomic='true'>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                                            </record>

+                                                                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                                                <outcome value='failure'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                        <switch test='`$tmp.return-failure`'>

+                                                                                                            <outcome value='true'>

+                                                                                                                <block atomic='true'>

+                                                                                                                    <set>

+                                                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                                    </set>

+                                                                                                                    <return status='failure'>

+                                                                                                                        <parameter name='error-code' value='500' />

+                                                                                                                        <parameter name='error-message' value='`$error-message`' />

+                                                                                                                    </return>

+                                                                                                                </block>

+                                                                                                            </outcome>

+                                                                                                        </switch>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </delete>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <block atomic='true'>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                                                                </record>

+                                                                                <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                                                                    <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                                            <outcome value='failure'>

+                                                                                                <block atomic='true'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                    <switch test='`$tmp.return-failure`'>

+                                                                                                        <outcome value='true'>

+                                                                                                            <block atomic='true'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                                </set>

+                                                                                                                <return status='failure'>

+                                                                                                                    <parameter name='error-code' value='500' />

+                                                                                                                    <parameter name='error-message' value='`$error-message`' />

+                                                                                                                </return>

+                                                                                                            </block>

+                                                                                                        </outcome>

+                                                                                                    </switch>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </delete>

+                                                                                    </for>

+                                                                                </for>

+                                                                            </block>

+                                                                        </block>

+                                                                        <return status='failure'>

+                                                                            <parameter name='error-code' value='500' />

+                                                                            <parameter name='error-message' value="`' Failed to create cp relationship for vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' in AnAI. ' + $error-message`" />

+                                                                        </return>

+                                                                    </block>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <block atomic='true'>

+                                                                        <block>

+                                                                            <block atomic='true'>

+                                                                                <block>

+                                                                                    <block>

+                                                                                        <block>

+                                                                                            <switch test="`$ss.resource-key.generic-vnf`">

+                                                                                                <outcome value='generic-vnf'>

+                                                                                                    <block>

+                                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                                            <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                                                        </record>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                        </set>

+                                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                            <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                            <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                            <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                                            <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                                            <outcome value='failure'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                            <outcome value='not-found'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                            <outcome value='success'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                        </update>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                        <switch test="`$ss.resource-key.vf-module`">

+                                                                                            <outcome value='vf-module'>

+                                                                                                <block>

+                                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                                        <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                                                    </record>

+                                                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                                                        <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                                                        <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                                                        <outcome value='failure'>

+                                                                                                            <set>

+                                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                        <outcome value='not-found'>

+                                                                                                            <set>

+                                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                        <outcome value='success'>

+                                                                                                            <set>

+                                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                    </update>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </block>

+                                                                                    <switch test="`$ss.resource-key.volume-group`">

+                                                                                        <outcome value='volume-group'>

+                                                                                            <block>

+                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                    <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                                                </record>

+                                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                                                    <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                                                    <outcome value='failure'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='not-found'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='success'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                </update>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                                <switch test="`$ss.resource-key.vnfc`">

+                                                                                    <outcome value='vnfc'>

+                                                                                        <block atomic='true'>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                                            </record>

+                                                                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                                                <outcome value='failure'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                        <switch test='`$tmp.return-failure`'>

+                                                                                                            <outcome value='true'>

+                                                                                                                <block atomic='true'>

+                                                                                                                    <set>

+                                                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                                    </set>

+                                                                                                                    <return status='failure'>

+                                                                                                                        <parameter name='error-code' value='500' />

+                                                                                                                        <parameter name='error-message' value='`$error-message`' />

+                                                                                                                    </return>

+                                                                                                                </block>

+                                                                                                            </outcome>

+                                                                                                        </switch>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </delete>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <block atomic='true'>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                                                                </record>

+                                                                                <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                                                                    <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                                            <outcome value='failure'>

+                                                                                                <block atomic='true'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                    <switch test='`$tmp.return-failure`'>

+                                                                                                        <outcome value='true'>

+                                                                                                            <block atomic='true'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                                </set>

+                                                                                                                <return status='failure'>

+                                                                                                                    <parameter name='error-code' value='500' />

+                                                                                                                    <parameter name='error-message' value='`$error-message`' />

+                                                                                                                </return>

+                                                                                                            </block>

+                                                                                                        </outcome>

+                                                                                                    </switch>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </delete>

+                                                                                    </for>

+                                                                                </for>

+                                                                            </block>

+                                                                        </block>

+                                                                        <return status='failure'>

+                                                                            <parameter name='error-code' value='500' />

+                                                                            <parameter name='error-message' value="`' Failed to create cp relationship for vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' in AnAI. ' + $error-message`" />

+                                                                        </return>

+                                                                    </block>

+                                                                </outcome>

+                                                            </save>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='failure'>

+                                                        <block atomic='true'>

+                                                            <block>

+                                                                <block atomic='true'>

+                                                                    <block>

+                                                                        <block>

+                                                                            <block>

+                                                                                <switch test="`$ss.resource-key.generic-vnf`">

+                                                                                    <outcome value='generic-vnf'>

+                                                                                        <block>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                                            </record>

+                                                                                            <set>

+                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                            </set>

+                                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                                <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                                <outcome value='failure'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </update>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <switch test="`$ss.resource-key.vf-module`">

+                                                                                <outcome value='vf-module'>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                                        </record>

+                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                                            <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                                            <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                                            <outcome value='failure'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </update>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <switch test="`$ss.resource-key.volume-group`">

+                                                                            <outcome value='volume-group'>

+                                                                                <block>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                                    </record>

+                                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                                        <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                                        <outcome value='failure'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </update>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <switch test="`$ss.resource-key.vnfc`">

+                                                                        <outcome value='vnfc'>

+                                                                            <block atomic='true'>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                                </record>

+                                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                                    <outcome value='failure'>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                            <switch test='`$tmp.return-failure`'>

+                                                                                                <outcome value='true'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                        </set>

+                                                                                                        <return status='failure'>

+                                                                                                            <parameter name='error-code' value='500' />

+                                                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                                                        </return>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </delete>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                                <block atomic='true'>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                                                    </record>

+                                                                    <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                                                        <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                                <outcome value='failure'>

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                        <switch test='`$tmp.return-failure`'>

+                                                                                            <outcome value='true'>

+                                                                                                <block atomic='true'>

+                                                                                                    <set>

+                                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                    </set>

+                                                                                                    <return status='failure'>

+                                                                                                        <parameter name='error-code' value='500' />

+                                                                                                        <parameter name='error-message' value='`$error-message`' />

+                                                                                                    </return>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                                <outcome value='not-found'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                                <outcome value='success'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                            </delete>

+                                                                        </for>

+                                                                    </for>

+                                                                </block>

+                                                            </block>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500' />

+                                                                <parameter name='error-message' value="`' Failed to create vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' in AnAI. ' + $error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <block atomic='true'>

+                                                            <block>

+                                                                <block atomic='true'>

+                                                                    <block>

+                                                                        <block>

+                                                                            <block>

+                                                                                <switch test="`$ss.resource-key.generic-vnf`">

+                                                                                    <outcome value='generic-vnf'>

+                                                                                        <block>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                                            </record>

+                                                                                            <set>

+                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                            </set>

+                                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                                <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                                <outcome value='failure'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </update>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <switch test="`$ss.resource-key.vf-module`">

+                                                                                <outcome value='vf-module'>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                                        </record>

+                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                                            <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                                            <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                                            <outcome value='failure'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </update>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <switch test="`$ss.resource-key.volume-group`">

+                                                                            <outcome value='volume-group'>

+                                                                                <block>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                                    </record>

+                                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                                        <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                                        <outcome value='failure'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </update>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <switch test="`$ss.resource-key.vnfc`">

+                                                                        <outcome value='vnfc'>

+                                                                            <block atomic='true'>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                                </record>

+                                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                                    <outcome value='failure'>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                            <switch test='`$tmp.return-failure`'>

+                                                                                                <outcome value='true'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                        </set>

+                                                                                                        <return status='failure'>

+                                                                                                            <parameter name='error-code' value='500' />

+                                                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                                                        </return>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </delete>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                                <block atomic='true'>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                                                    </record>

+                                                                    <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                                                        <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                                <outcome value='failure'>

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                        <switch test='`$tmp.return-failure`'>

+                                                                                            <outcome value='true'>

+                                                                                                <block atomic='true'>

+                                                                                                    <set>

+                                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                    </set>

+                                                                                                    <return status='failure'>

+                                                                                                        <parameter name='error-code' value='500' />

+                                                                                                        <parameter name='error-message' value='`$error-message`' />

+                                                                                                    </return>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                                <outcome value='not-found'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                                <outcome value='success'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                            </delete>

+                                                                        </for>

+                                                                    </for>

+                                                                </block>

+                                                            </block>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500' />

+                                                                <parameter name='error-message' value="`' Failed to create vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' in AnAI. ' + $error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                </save>

+                                            </for>

+                                        </outcome>

+                                    </save>

+                                </for>

+                            </outcome>

+                        </switch>

+                        <switch test="`$ss.resource-key.l-interface`">

+                            <outcome value='l-interface'>

+                                <block atomic='true'>

+                                    <switch test="`$ss.param.oam-interface-name != ''`">

+                                        <outcome value='true'>

+                                            <block atomic='true'>

+                                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.oam-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                    <parameter name="interface-name" value='`$ss.param.oam-interface-name`' />

+                                                    <parameter name="interface-role" value='OAM' />

+                                                    <outcome value='failure'>

+                                                        <block atomic='true'>

+                                                            <block>

+                                                                <block atomic='true'>

+                                                                    <block>

+                                                                        <block>

+                                                                            <block>

+                                                                                <switch test="`$ss.resource-key.generic-vnf`">

+                                                                                    <outcome value='generic-vnf'>

+                                                                                        <block>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                                            </record>

+                                                                                            <set>

+                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                            </set>

+                                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                                <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                                <outcome value='failure'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </update>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <switch test="`$ss.resource-key.vf-module`">

+                                                                                <outcome value='vf-module'>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                                        </record>

+                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                                            <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                                            <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                                            <outcome value='failure'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </update>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <switch test="`$ss.resource-key.volume-group`">

+                                                                            <outcome value='volume-group'>

+                                                                                <block>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                                    </record>

+                                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                                        <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                                        <outcome value='failure'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </update>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <switch test="`$ss.resource-key.vnfc`">

+                                                                        <outcome value='vnfc'>

+                                                                            <block atomic='true'>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                                </record>

+                                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                                    <outcome value='failure'>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                            <switch test='`$tmp.return-failure`'>

+                                                                                                <outcome value='true'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                        </set>

+                                                                                                        <return status='failure'>

+                                                                                                            <parameter name='error-code' value='500' />

+                                                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                                                        </return>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </delete>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                                <block atomic='true'>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                                                    </record>

+                                                                    <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                                                        <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                                <outcome value='failure'>

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                        <switch test='`$tmp.return-failure`'>

+                                                                                            <outcome value='true'>

+                                                                                                <block atomic='true'>

+                                                                                                    <set>

+                                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                    </set>

+                                                                                                    <return status='failure'>

+                                                                                                        <parameter name='error-code' value='500' />

+                                                                                                        <parameter name='error-message' value='`$error-message`' />

+                                                                                                    </return>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                                <outcome value='not-found'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                                <outcome value='success'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                            </delete>

+                                                                        </for>

+                                                                    </for>

+                                                                </block>

+                                                            </block>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500' />

+                                                                <parameter name='error-message' value="`' Failed to create l-interface with interface-name = ' + $ss.param.oam-interface-name + ' in AnAI. ' + $error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <block atomic='true'>

+                                                            <block>

+                                                                <block atomic='true'>

+                                                                    <block>

+                                                                        <block>

+                                                                            <block>

+                                                                                <switch test="`$ss.resource-key.generic-vnf`">

+                                                                                    <outcome value='generic-vnf'>

+                                                                                        <block>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                                            </record>

+                                                                                            <set>

+                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                            </set>

+                                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                                <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                                <outcome value='failure'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </update>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <switch test="`$ss.resource-key.vf-module`">

+                                                                                <outcome value='vf-module'>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                                        </record>

+                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                                            <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                                            <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                                            <outcome value='failure'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </update>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <switch test="`$ss.resource-key.volume-group`">

+                                                                            <outcome value='volume-group'>

+                                                                                <block>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                                    </record>

+                                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                                        <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                                        <outcome value='failure'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </update>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <switch test="`$ss.resource-key.vnfc`">

+                                                                        <outcome value='vnfc'>

+                                                                            <block atomic='true'>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                                </record>

+                                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                                    <outcome value='failure'>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                            <switch test='`$tmp.return-failure`'>

+                                                                                                <outcome value='true'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                        </set>

+                                                                                                        <return status='failure'>

+                                                                                                            <parameter name='error-code' value='500' />

+                                                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                                                        </return>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </delete>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                                <block atomic='true'>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                                                    </record>

+                                                                    <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                                                        <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                                <outcome value='failure'>

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                        </set>

+                                                                                        <switch test='`$tmp.return-failure`'>

+                                                                                            <outcome value='true'>

+                                                                                                <block atomic='true'>

+                                                                                                    <set>

+                                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                    </set>

+                                                                                                    <return status='failure'>

+                                                                                                        <parameter name='error-code' value='500' />

+                                                                                                        <parameter name='error-message' value='`$error-message`' />

+                                                                                                    </return>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                                <outcome value='not-found'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                                <outcome value='success'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                            </delete>

+                                                                        </for>

+                                                                    </for>

+                                                                </block>

+                                                            </block>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500' />

+                                                                <parameter name='error-message' value="`' Failed to create l-interface with interface-name = ' + $ss.param.oam-interface-name + ' in AnAI. ' + $error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                </save>

+                                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l3-interface-ipv4-address-list"

+		key="l3-interface-ipv4-address-list.l3-interface-ipv4-address = $ss.param.ipv4-oam-address 

+		AND generic-vnf.vnf-id = $ss.param.vnf-id 

+		AND l-interface.interface-name = $ss.param.oam-interface-name" >

+                                                    <parameter name="l3-interface-ipv4-address" value='`$ss.param.ipv4-oam-address`' />

+                                                    <parameter name="l3-interface-ipv4-prefix-length" value='`$ss.param.ipv4-oam-address-prefix`' />

+                                                    <outcome value='failure'>

+                                                        <block atomic='true'>

+                                                            <block>

+                                                                <block>

+                                                                    <block atomic='true'>

+                                                                        <block>

+                                                                            <block>

+                                                                                <block>

+                                                                                    <switch test="`$ss.resource-key.generic-vnf`">

+                                                                                        <outcome value='generic-vnf'>

+                                                                                            <block>

+                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                    <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                                                </record>

+                                                                                                <set>

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                </set>

+                                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                    <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                    <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                    <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                                    <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                                    <outcome value='failure'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='not-found'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='success'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                </update>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                                <switch test="`$ss.resource-key.vf-module`">

+                                                                                    <outcome value='vf-module'>

+                                                                                        <block>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                                            </record>

+                                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                                                <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                                                <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                                                <outcome value='failure'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </update>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <switch test="`$ss.resource-key.volume-group`">

+                                                                                <outcome value='volume-group'>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                                        </record>

+                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                                            <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                                            <outcome value='failure'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </update>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <switch test="`$ss.resource-key.vnfc`">

+                                                                            <outcome value='vnfc'>

+                                                                                <block atomic='true'>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                                    </record>

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <block atomic='true'>

+                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                            <parameter name="logger" value="message-log"/>

+                                                                            <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                                                        </record>

+                                                                        <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                                                            <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                                    <outcome value='failure'>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                            <switch test='`$tmp.return-failure`'>

+                                                                                                <outcome value='true'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                        </set>

+                                                                                                        <return status='failure'>

+                                                                                                            <parameter name='error-code' value='500' />

+                                                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                                                        </return>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </delete>

+                                                                            </for>

+                                                                        </for>

+                                                                    </block>

+                                                                </block>

+                                                                <switch test="`$ss.resource-key.l-interface`">

+                                                                    <outcome value='l-interface'>

+                                                                        <block atomic='true'>

+                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                <parameter name="logger" value="message-log"/>

+                                                                                <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>

+                                                                            </record>

+                                                                            <switch test="`$ss.param.oam-interface-name != ''`">

+                                                                                <outcome value='true'>

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.oam-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500' />

+                                                                <parameter name='error-message' value="`' Failed to create l3-interface-ipv4-address-list with l3-interface-ipv4-address = ' + $ss.param.ipv4-oam-address + ' in AnAI. ' + $error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <block atomic='true'>

+                                                            <block>

+                                                                <block>

+                                                                    <block atomic='true'>

+                                                                        <block>

+                                                                            <block>

+                                                                                <block>

+                                                                                    <switch test="`$ss.resource-key.generic-vnf`">

+                                                                                        <outcome value='generic-vnf'>

+                                                                                            <block>

+                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                    <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                                                </record>

+                                                                                                <set>

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                </set>

+                                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                    <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                    <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                    <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                                    <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                                    <outcome value='failure'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='not-found'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='success'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                </update>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                                <switch test="`$ss.resource-key.vf-module`">

+                                                                                    <outcome value='vf-module'>

+                                                                                        <block>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                                            </record>

+                                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                                                <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                                                <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                                                <outcome value='failure'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </update>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <switch test="`$ss.resource-key.volume-group`">

+                                                                                <outcome value='volume-group'>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                                        </record>

+                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                                            <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                                            <outcome value='failure'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </update>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <switch test="`$ss.resource-key.vnfc`">

+                                                                            <outcome value='vnfc'>

+                                                                                <block atomic='true'>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                                    </record>

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <block atomic='true'>

+                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                            <parameter name="logger" value="message-log"/>

+                                                                            <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                                                        </record>

+                                                                        <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                                                            <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                                    <outcome value='failure'>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                            <switch test='`$tmp.return-failure`'>

+                                                                                                <outcome value='true'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                        </set>

+                                                                                                        <return status='failure'>

+                                                                                                            <parameter name='error-code' value='500' />

+                                                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                                                        </return>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </delete>

+                                                                            </for>

+                                                                        </for>

+                                                                    </block>

+                                                                </block>

+                                                                <switch test="`$ss.resource-key.l-interface`">

+                                                                    <outcome value='l-interface'>

+                                                                        <block atomic='true'>

+                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                <parameter name="logger" value="message-log"/>

+                                                                                <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>

+                                                                            </record>

+                                                                            <switch test="`$ss.param.oam-interface-name != ''`">

+                                                                                <outcome value='true'>

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.oam-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500' />

+                                                                <parameter name='error-message' value="`' Failed to create l3-interface-ipv4-address-list with l3-interface-ipv4-address = ' + $ss.param.ipv4-oam-address + ' in AnAI. ' + $error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                </save>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <switch test="`$ss.param.lo0-interface-name != ''`">

+                                        <outcome value='true'>

+                                            <block atomic='true'>

+                                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.lo0-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                    <parameter name="interface-name" value='`$ss.param.lo0-interface-name`' />

+                                                    <parameter name="interface-role" value='loopback' />

+                                                    <outcome value='failure'>

+                                                        <block atomic='true'>

+                                                            <block>

+                                                                <block>

+                                                                    <block atomic='true'>

+                                                                        <block>

+                                                                            <block>

+                                                                                <block>

+                                                                                    <switch test="`$ss.resource-key.generic-vnf`">

+                                                                                        <outcome value='generic-vnf'>

+                                                                                            <block>

+                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                    <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                                                </record>

+                                                                                                <set>

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                </set>

+                                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                    <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                    <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                    <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                                    <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                                    <outcome value='failure'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='not-found'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='success'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                </update>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                                <switch test="`$ss.resource-key.vf-module`">

+                                                                                    <outcome value='vf-module'>

+                                                                                        <block>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                                            </record>

+                                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                                                <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                                                <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                                                <outcome value='failure'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </update>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <switch test="`$ss.resource-key.volume-group`">

+                                                                                <outcome value='volume-group'>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                                        </record>

+                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                                            <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                                            <outcome value='failure'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </update>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <switch test="`$ss.resource-key.vnfc`">

+                                                                            <outcome value='vnfc'>

+                                                                                <block atomic='true'>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                                    </record>

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <block atomic='true'>

+                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                            <parameter name="logger" value="message-log"/>

+                                                                            <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                                                        </record>

+                                                                        <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                                                            <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                                    <outcome value='failure'>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                            <switch test='`$tmp.return-failure`'>

+                                                                                                <outcome value='true'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                        </set>

+                                                                                                        <return status='failure'>

+                                                                                                            <parameter name='error-code' value='500' />

+                                                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                                                        </return>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </delete>

+                                                                            </for>

+                                                                        </for>

+                                                                    </block>

+                                                                </block>

+                                                                <switch test="`$ss.resource-key.l-interface`">

+                                                                    <outcome value='l-interface'>

+                                                                        <block atomic='true'>

+                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                <parameter name="logger" value="message-log"/>

+                                                                                <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>

+                                                                            </record>

+                                                                            <switch test="`$ss.param.oam-interface-name != ''`">

+                                                                                <outcome value='true'>

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.oam-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500' />

+                                                                <parameter name='error-message' value="`' Failed to create l-interface with interface-name = ' + $ss.param.lo0-interface-name + ' in AnAI. ' + $error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <block atomic='true'>

+                                                            <block>

+                                                                <block>

+                                                                    <block atomic='true'>

+                                                                        <block>

+                                                                            <block>

+                                                                                <block>

+                                                                                    <switch test="`$ss.resource-key.generic-vnf`">

+                                                                                        <outcome value='generic-vnf'>

+                                                                                            <block>

+                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                    <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                                                </record>

+                                                                                                <set>

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                </set>

+                                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                    <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                    <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                    <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                                    <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                                    <outcome value='failure'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='not-found'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='success'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                </update>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                                <switch test="`$ss.resource-key.vf-module`">

+                                                                                    <outcome value='vf-module'>

+                                                                                        <block>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                                            </record>

+                                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                                                <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                                                <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                                                <outcome value='failure'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </update>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <switch test="`$ss.resource-key.volume-group`">

+                                                                                <outcome value='volume-group'>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                                        </record>

+                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                                            <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                                            <outcome value='failure'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </update>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <switch test="`$ss.resource-key.vnfc`">

+                                                                            <outcome value='vnfc'>

+                                                                                <block atomic='true'>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                                    </record>

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <block atomic='true'>

+                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                            <parameter name="logger" value="message-log"/>

+                                                                            <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                                                        </record>

+                                                                        <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                                                            <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                                    <outcome value='failure'>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                            <switch test='`$tmp.return-failure`'>

+                                                                                                <outcome value='true'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                        </set>

+                                                                                                        <return status='failure'>

+                                                                                                            <parameter name='error-code' value='500' />

+                                                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                                                        </return>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </delete>

+                                                                            </for>

+                                                                        </for>

+                                                                    </block>

+                                                                </block>

+                                                                <switch test="`$ss.resource-key.l-interface`">

+                                                                    <outcome value='l-interface'>

+                                                                        <block atomic='true'>

+                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                <parameter name="logger" value="message-log"/>

+                                                                                <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>

+                                                                            </record>

+                                                                            <switch test="`$ss.param.oam-interface-name != ''`">

+                                                                                <outcome value='true'>

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.oam-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500' />

+                                                                <parameter name='error-message' value="`' Failed to create l-interface with interface-name = ' + $ss.param.lo0-interface-name + ' in AnAI. ' + $error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                </save>

+                                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l3-interface-ipv4-address-list"

+		key="l3-interface-ipv4-address-list.l3-interface-ipv4-address = $ss.param.ipv4-loopback0-address 

+		AND generic-vnf.vnf-id = $ss.param.vnf-id 

+		AND l-interface.interface-name = $ss.param.lo0-interface-name" >

+                                                    <parameter name="l3-interface-ipv4-address" value='`$ss.param.ipv4-loopback0-address`' />

+                                                    <parameter name="l3-interface-ipv4-prefix-length" value='32' />

+                                                    <outcome value='failure'>

+                                                        <block atomic='true'>

+                                                            <block>

+                                                                <block>

+                                                                    <block>

+                                                                        <block atomic='true'>

+                                                                            <block>

+                                                                                <block>

+                                                                                    <block>

+                                                                                        <switch test="`$ss.resource-key.generic-vnf`">

+                                                                                            <outcome value='generic-vnf'>

+                                                                                                <block>

+                                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                                        <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                                                    </record>

+                                                                                                    <set>

+                                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                    </set>

+                                                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                        <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                        <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                        <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                                        <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                                        <outcome value='failure'>

+                                                                                                            <set>

+                                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                        <outcome value='not-found'>

+                                                                                                            <set>

+                                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                        <outcome value='success'>

+                                                                                                            <set>

+                                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                    </update>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </block>

+                                                                                    <switch test="`$ss.resource-key.vf-module`">

+                                                                                        <outcome value='vf-module'>

+                                                                                            <block>

+                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                    <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                                                </record>

+                                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                                                    <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                                                    <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                                                    <outcome value='failure'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='not-found'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='success'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                </update>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                                <switch test="`$ss.resource-key.volume-group`">

+                                                                                    <outcome value='volume-group'>

+                                                                                        <block>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                                            </record>

+                                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                                                <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                                                <outcome value='failure'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </update>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <switch test="`$ss.resource-key.vnfc`">

+                                                                                <outcome value='vnfc'>

+                                                                                    <block atomic='true'>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                                        </record>

+                                                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                                            <outcome value='failure'>

+                                                                                                <block atomic='true'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                    <switch test='`$tmp.return-failure`'>

+                                                                                                        <outcome value='true'>

+                                                                                                            <block atomic='true'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                                </set>

+                                                                                                                <return status='failure'>

+                                                                                                                    <parameter name='error-code' value='500' />

+                                                                                                                    <parameter name='error-message' value='`$error-message`' />

+                                                                                                                </return>

+                                                                                                            </block>

+                                                                                                        </outcome>

+                                                                                                    </switch>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </delete>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <block atomic='true'>

+                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                <parameter name="logger" value="message-log"/>

+                                                                                <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                                                            </record>

+                                                                            <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                                                                <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </for>

+                                                                            </for>

+                                                                        </block>

+                                                                    </block>

+                                                                    <switch test="`$ss.resource-key.l-interface`">

+                                                                        <outcome value='l-interface'>

+                                                                            <block atomic='true'>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>

+                                                                                </record>

+                                                                                <switch test="`$ss.param.oam-interface-name != ''`">

+                                                                                    <outcome value='true'>

+                                                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.oam-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                                                            <outcome value='failure'>

+                                                                                                <block atomic='true'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                    <switch test='`$tmp.return-failure`'>

+                                                                                                        <outcome value='true'>

+                                                                                                            <block atomic='true'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                                </set>

+                                                                                                                <return status='failure'>

+                                                                                                                    <parameter name='error-code' value='500' />

+                                                                                                                    <parameter name='error-message' value='`$error-message`' />

+                                                                                                                </return>

+                                                                                                            </block>

+                                                                                                        </outcome>

+                                                                                                    </switch>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + '  completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </delete>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                                <switch test="`$ss.resource-key.l-interface`">

+                                                                    <outcome value='l-interface'>

+                                                                        <block atomic='true'>

+                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                <parameter name="logger" value="message-log"/>

+                                                                                <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>

+                                                                            </record>

+                                                                            <switch test="`$ss.param.lo0-interface-name != ''`">

+                                                                                <outcome value='true'>

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.lo0-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.lo0-interface-name + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500' />

+                                                                <parameter name='error-message' value="`' Failed to create l3-interface-ipv4-address-list with l3-interface-ipv4-address = ' + $ss.param.loopback0-ipv4-address + ' in AnAI. ' + $error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <block atomic='true'>

+                                                            <block>

+                                                                <block>

+                                                                    <block>

+                                                                        <block atomic='true'>

+                                                                            <block>

+                                                                                <block>

+                                                                                    <block>

+                                                                                        <switch test="`$ss.resource-key.generic-vnf`">

+                                                                                            <outcome value='generic-vnf'>

+                                                                                                <block>

+                                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                                        <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                                                    </record>

+                                                                                                    <set>

+                                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                    </set>

+                                                                                                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                        <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                        <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                        <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                                        <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                                        <outcome value='failure'>

+                                                                                                            <set>

+                                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                        <outcome value='not-found'>

+                                                                                                            <set>

+                                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                        <outcome value='success'>

+                                                                                                            <set>

+                                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                                            </set>

+                                                                                                        </outcome>

+                                                                                                    </update>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </block>

+                                                                                    <switch test="`$ss.resource-key.vf-module`">

+                                                                                        <outcome value='vf-module'>

+                                                                                            <block>

+                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                    <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                                                </record>

+                                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                                                    <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                                                    <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                                                    <outcome value='failure'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='not-found'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='success'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                </update>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                                <switch test="`$ss.resource-key.volume-group`">

+                                                                                    <outcome value='volume-group'>

+                                                                                        <block>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                                            </record>

+                                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                                                <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                                                <outcome value='failure'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </update>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <switch test="`$ss.resource-key.vnfc`">

+                                                                                <outcome value='vnfc'>

+                                                                                    <block atomic='true'>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                                        </record>

+                                                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                                            <outcome value='failure'>

+                                                                                                <block atomic='true'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                    <switch test='`$tmp.return-failure`'>

+                                                                                                        <outcome value='true'>

+                                                                                                            <block atomic='true'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                                </set>

+                                                                                                                <return status='failure'>

+                                                                                                                    <parameter name='error-code' value='500' />

+                                                                                                                    <parameter name='error-message' value='`$error-message`' />

+                                                                                                                </return>

+                                                                                                            </block>

+                                                                                                        </outcome>

+                                                                                                    </switch>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </delete>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <block atomic='true'>

+                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                <parameter name="logger" value="message-log"/>

+                                                                                <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                                                            </record>

+                                                                            <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                                                                <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </for>

+                                                                            </for>

+                                                                        </block>

+                                                                    </block>

+                                                                    <switch test="`$ss.resource-key.l-interface`">

+                                                                        <outcome value='l-interface'>

+                                                                            <block atomic='true'>

+                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                    <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>

+                                                                                </record>

+                                                                                <switch test="`$ss.param.oam-interface-name != ''`">

+                                                                                    <outcome value='true'>

+                                                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.oam-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                                                            <outcome value='failure'>

+                                                                                                <block atomic='true'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                    </set>

+                                                                                                    <switch test='`$tmp.return-failure`'>

+                                                                                                        <outcome value='true'>

+                                                                                                            <block atomic='true'>

+                                                                                                                <set>

+                                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                                </set>

+                                                                                                                <return status='failure'>

+                                                                                                                    <parameter name='error-code' value='500' />

+                                                                                                                    <parameter name='error-message' value='`$error-message`' />

+                                                                                                                </return>

+                                                                                                            </block>

+                                                                                                        </outcome>

+                                                                                                    </switch>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + '  completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </delete>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                                <switch test="`$ss.resource-key.l-interface`">

+                                                                    <outcome value='l-interface'>

+                                                                        <block atomic='true'>

+                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                <parameter name="logger" value="message-log"/>

+                                                                                <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>

+                                                                            </record>

+                                                                            <switch test="`$ss.param.lo0-interface-name != ''`">

+                                                                                <outcome value='true'>

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.lo0-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.lo0-interface-name + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='500' />

+                                                                <parameter name='error-message' value="`' Failed to create l3-interface-ipv4-address-list with l3-interface-ipv4-address = ' + $ss.param.loopback0-ipv4-address + ' in AnAI. ' + $error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                </save>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <switch test="`$ss.resource-key.l3-network`">

+                            <outcome value='l3-netework'>

+                                <for silentFailure='true' index='n' start='0' end='`$nidx`' >

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='ss.l3-network.related-link' 

+	value="`'/aai/v$/network/l3-networks/l3-network/' + $ss.network[$n].netid`" />

+                                        </set>

+                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf:relationship-list"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                            <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />

+                                            <parameter name="relationship-list.relationship[0].related-link" value="`$ss.l3-network.related-link`" />

+                                            <!--

+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" /><parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$ss.network[$n].netid`" />

+-->

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <block>

+                                                        <block>

+                                                            <block>

+                                                                <block>

+                                                                    <block atomic='true'>

+                                                                        <block>

+                                                                            <block>

+                                                                                <block>

+                                                                                    <switch test="`$ss.resource-key.generic-vnf`">

+                                                                                        <outcome value='generic-vnf'>

+                                                                                            <block>

+                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                    <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                                                </record>

+                                                                                                <set>

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                </set>

+                                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                    <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                    <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                    <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                                    <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                                    <outcome value='failure'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='not-found'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='success'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                </update>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                                <switch test="`$ss.resource-key.vf-module`">

+                                                                                    <outcome value='vf-module'>

+                                                                                        <block>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                                            </record>

+                                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                                                <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                                                <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                                                <outcome value='failure'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </update>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <switch test="`$ss.resource-key.volume-group`">

+                                                                                <outcome value='volume-group'>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                                        </record>

+                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                                            <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                                            <outcome value='failure'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </update>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <switch test="`$ss.resource-key.vnfc`">

+                                                                            <outcome value='vnfc'>

+                                                                                <block atomic='true'>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                                    </record>

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <block atomic='true'>

+                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                            <parameter name="logger" value="message-log"/>

+                                                                            <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                                                        </record>

+                                                                        <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                                                            <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                                    <outcome value='failure'>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                            <switch test='`$tmp.return-failure`'>

+                                                                                                <outcome value='true'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                        </set>

+                                                                                                        <return status='failure'>

+                                                                                                            <parameter name='error-code' value='500' />

+                                                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                                                        </return>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </delete>

+                                                                            </for>

+                                                                        </for>

+                                                                    </block>

+                                                                </block>

+                                                                <switch test="`$ss.resource-key.l-interface`">

+                                                                    <outcome value='l-interface'>

+                                                                        <block atomic='true'>

+                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                <parameter name="logger" value="message-log"/>

+                                                                                <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>

+                                                                            </record>

+                                                                            <switch test="`$ss.param.oam-interface-name != ''`">

+                                                                                <outcome value='true'>

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.oam-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                            <switch test="`$ss.resource-key.l-interface`">

+                                                                <outcome value='l-interface'>

+                                                                    <block atomic='true'>

+                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                            <parameter name="logger" value="message-log"/>

+                                                                            <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>

+                                                                        </record>

+                                                                        <switch test="`$ss.param.lo0-interface-name != ''`">

+                                                                            <outcome value='true'>

+                                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.lo0-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                                                    <outcome value='failure'>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                            <switch test='`$tmp.return-failure`'>

+                                                                                                <outcome value='true'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                        </set>

+                                                                                                        <return status='failure'>

+                                                                                                            <parameter name='error-code' value='500' />

+                                                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                                                        </return>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.lo0-interface-name + '  completed.'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </delete>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                        <switch test="`$ss.resource-key.l3-network`">

+                                                            <outcome value='l3-netework'>

+                                                                <block atomic='true'>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK VNF l3-network relationship"/>

+                                                                    </record>

+                                                                    <for silentFailure='true' index='n' start='0' end='`$nidx`' >

+                                                                        <set>

+                                                                            <parameter name='tmp.related-link' value="`'/aai/v$/network/l3-networks/l3-network/' + $ss.network[$n].netid`" />

+                                                                            <!--

+<parameter name='tmp.related-link' value="`'/aai/' + $prop.aai.version + '/network/l3-networks/l3-network/' + $ss.network[$n].netid`" />

+-->

+                                                                        </set>

+                                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="generic-vnf:relationship-list" 

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+		AND related-to = l3-network 

+		AND relationship.related-link = $tmp.related-link" >

+                                                                            <outcome value='failure'>

+                                                                                <block atomic='true'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to delete VNF l3-network relationship for generic-vnf.vnfid = ' + $ss.param.vnf-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                    </set>

+                                                                                    <switch test='`$tmp.return-failure`'>

+                                                                                        <outcome value='true'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                </set>

+                                                                                                <return status='failure'>

+                                                                                                    <parameter name='error-code' value='500' />

+                                                                                                    <parameter name='error-message' value='`$error-message`' />

+                                                                                                </return>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                            </outcome>

+                                                                            <outcome value='not-found'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="`$error-message + ' l3-network relationship with related-path = ' + $tmp.related-path  + ' not found in AAI. Consider silent success!'`" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                            <outcome value='success'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback (delete) of generic-vnf l3-network relationships completed.'`" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                        </delete>

+                                                                    </for>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`' Failed to create generic-vnf releationship for l3-network with network-id =' + $ss.network[$n].netid + ' in AnAI. ' + $error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block atomic='true'>

+                                                    <block>

+                                                        <block>

+                                                            <block>

+                                                                <block>

+                                                                    <block atomic='true'>

+                                                                        <block>

+                                                                            <block>

+                                                                                <block>

+                                                                                    <switch test="`$ss.resource-key.generic-vnf`">

+                                                                                        <outcome value='generic-vnf'>

+                                                                                            <block>

+                                                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                    <parameter name="logger" value="message-log"/>

+                                                                                                    <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                                                                </record>

+                                                                                                <set>

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                </set>

+                                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                                                    <parameter name="ipv4-loopback0-address" value='`$tmp.aai.vnf.ipv4-loopback0-address`' />

+                                                                                                    <parameter name="ipv4-oam-address" value='`$tmp.aai.vnf.ipv4-oam-address`' />

+                                                                                                    <parameter name="as-number" value='`$tmp.aai.vnf.as-number`' />

+                                                                                                    <parameter name="vlan-id-outer" value='`$tmp.aai.vnf.vlan-id-outer`' />

+                                                                                                    <outcome value='failure'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='not-found'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id=' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='success'>

+                                                                                                        <set>

+                                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                                                        </set>

+                                                                                                    </outcome>

+                                                                                                </update>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                                <switch test="`$ss.resource-key.vf-module`">

+                                                                                    <outcome value='vf-module'>

+                                                                                        <block>

+                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                <parameter name="field1" value="ROLLBACK vf-module update"/>

+                                                                                            </record>

+                                                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vf-module"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+			AND vf-module.vf-module-id = $ss.param.vf-module-id " >

+                                                                                                <parameter name="vf-module-name" value='`$tmp.aai.vfmdoule.vf-module-name`' />

+                                                                                                <parameter name="selflink" value='`$tmp.aai.vfmdoule.selflink`' />

+                                                                                                <outcome value='failure'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' in AnAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='not-found'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback vf-module update with vf-module-id=' + $ss.param.vf-module-id + ' because vf-module not found in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='success'>

+                                                                                                    <set>

+                                                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of vf-module update completed.'`" />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </update>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                            <switch test="`$ss.resource-key.volume-group`">

+                                                                                <outcome value='volume-group'>

+                                                                                    <block>

+                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                            <parameter name="field1" value="ROLLBACK volume-group update"/>

+                                                                                        </record>

+                                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="volume-group"

+		key="cloud-region.cloud-owner = $prop.cloud-owner  

+			AND cloud-region.cloud-region-id = $ss.param.aic-cloud-region 

+			AND cloud-region.cloud-owner = $prop.cloud-region.cloud-owner 

+			AND volume-group-id = $ss.param.volume-group-id" >

+                                                                                            <parameter name="volume-group-name" value='`$tmp.aai.volume-group.volume-group-name`' />

+                                                                                            <outcome value='failure'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to UPDATE volume-group with volume-group-id=' + $ss.param.volume-group-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='not-found'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' volume-group with volume-group-id = ' + $ss.param.volume-group-id + ' not found in AAI. Consider silent success!'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='success'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of volume_group completed.'`" />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </update>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                        <switch test="`$ss.resource-key.vnfc`">

+                                                                            <outcome value='vnfc'>

+                                                                                <block atomic='true'>

+                                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                        <parameter name="logger" value="message-log"/>

+                                                                                        <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                                                                    </record>

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                    <block atomic='true'>

+                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                            <parameter name="logger" value="message-log"/>

+                                                                            <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                                                        </record>

+                                                                        <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                                                            <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                                                                    <outcome value='failure'>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                            <switch test='`$tmp.return-failure`'>

+                                                                                                <outcome value='true'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                        </set>

+                                                                                                        <return status='failure'>

+                                                                                                            <parameter name='error-code' value='500' />

+                                                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                                                        </return>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </delete>

+                                                                            </for>

+                                                                        </for>

+                                                                    </block>

+                                                                </block>

+                                                                <switch test="`$ss.resource-key.l-interface`">

+                                                                    <outcome value='l-interface'>

+                                                                        <block atomic='true'>

+                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                <parameter name="logger" value="message-log"/>

+                                                                                <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>

+                                                                            </record>

+                                                                            <switch test="`$ss.param.oam-interface-name != ''`">

+                                                                                <outcome value='true'>

+                                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.oam-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                                                        <outcome value='failure'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                                </set>

+                                                                                                <switch test='`$tmp.return-failure`'>

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic='true'>

+                                                                                                            <set>

+                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                            </set>

+                                                                                                            <return status='failure'>

+                                                                                                                <parameter name='error-code' value='500' />

+                                                                                                                <parameter name='error-message' value='`$error-message`' />

+                                                                                                            </return>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                        <outcome value='not-found'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='success'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + '  completed.'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </delete>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                            <switch test="`$ss.resource-key.l-interface`">

+                                                                <outcome value='l-interface'>

+                                                                    <block atomic='true'>

+                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                            <parameter name="logger" value="message-log"/>

+                                                                            <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>

+                                                                        </record>

+                                                                        <switch test="`$ss.param.lo0-interface-name != ''`">

+                                                                            <outcome value='true'>

+                                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.lo0-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                                                    <outcome value='failure'>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                            </set>

+                                                                                            <switch test='`$tmp.return-failure`'>

+                                                                                                <outcome value='true'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                        </set>

+                                                                                                        <return status='failure'>

+                                                                                                            <parameter name='error-code' value='500' />

+                                                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                                                        </return>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                    <outcome value='not-found'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' not found in AAI. Consider silent success!'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                    <outcome value='success'>

+                                                                                        <set>

+                                                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.lo0-interface-name + '  completed.'`" />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </delete>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                        <switch test="`$ss.resource-key.l3-network`">

+                                                            <outcome value='l3-netework'>

+                                                                <block atomic='true'>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK VNF l3-network relationship"/>

+                                                                    </record>

+                                                                    <for silentFailure='true' index='n' start='0' end='`$nidx`' >

+                                                                        <set>

+                                                                            <parameter name='tmp.related-link' value="`'/aai/v$/network/l3-networks/l3-network/' + $ss.network[$n].netid`" />

+                                                                            <!--

+<parameter name='tmp.related-link' value="`'/aai/' + $prop.aai.version + '/network/l3-networks/l3-network/' + $ss.network[$n].netid`" />

+-->

+                                                                        </set>

+                                                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="generic-vnf:relationship-list" 

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+		AND related-to = l3-network 

+		AND relationship.related-link = $tmp.related-link" >

+                                                                            <outcome value='failure'>

+                                                                                <block atomic='true'>

+                                                                                    <set>

+                                                                                        <parameter name='error-message' value="`$error-message + ' Failed to delete VNF l3-network relationship for generic-vnf.vnfid = ' + $ss.param.vnf-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                                    </set>

+                                                                                    <switch test='`$tmp.return-failure`'>

+                                                                                        <outcome value='true'>

+                                                                                            <block atomic='true'>

+                                                                                                <set>

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                                                </set>

+                                                                                                <return status='failure'>

+                                                                                                    <parameter name='error-code' value='500' />

+                                                                                                    <parameter name='error-message' value='`$error-message`' />

+                                                                                                </return>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                            </outcome>

+                                                                            <outcome value='not-found'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="`$error-message + ' l3-network relationship with related-path = ' + $tmp.related-path  + ' not found in AAI. Consider silent success!'`" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                            <outcome value='success'>

+                                                                                <set>

+                                                                                    <parameter name='error-message' value="`$error-message + ' Rollback (delete) of generic-vnf l3-network relationships completed.'`" />

+                                                                                </set>

+                                                                            </outcome>

+                                                                        </delete>

+                                                                    </for>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`' Failed to create generic-vnf releationship for l3-network with network-id =' + $ss.network[$n].netid + ' in AnAI. ' + $error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                        </save>

+                                    </block>

+                                </for>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='SUCCESS' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].value' 

+	value='SUCCESS' />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='unassign'>

+                    <block atomic='true'>

+                        <block>

+                            <set>

+                                <parameter name='nidx' value='0' />

+                            </set>

+                            <for silentFailure='true' index="bidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`" >

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >

+                                    <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`" />

+                                    <parameter name="target" value="sriov"/>

+                                    <outcome value='true'>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='endsWith' emitsOutcome='true' >

+                                            <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`" />

+                                            <parameter name="target" value="_net_id"/>

+                                            <outcome value='true'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='ss.network[$nidx].netid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='nidx' value='`$nidx + 1`' />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </execute>

+                                    </outcome>

+                                    <outcome value='false'>

+                                        <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].name`'>

+                                            <outcome value='vf_module_id'>

+                                                <set>

+                                                    <parameter name='ss.param.vf-module-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='vf_module_name'>

+                                                <set>

+                                                    <parameter name='ss.param.vf-module-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='volume-group-id'>

+                                                <set>

+                                                    <parameter name='ss.param.volume-group-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='volume-group-name'>

+                                                <set>

+                                                    <parameter name='ss.param.volume-group-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='aic-cloud-region'>

+                                                <set>

+                                                    <parameter name='ss.param.aic-cloud-region' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='vnfc-name'>

+                                                <set>

+                                                    <parameter name='ss.param.vnfc-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.vnfc-name-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='oam-interface-name'>

+                                                <set>

+                                                    <parameter name='ss.param.oam-interface-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.oam-interface-name-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='=”lo0-interface-name'>

+                                                <set>

+                                                    <parameter name='ss.param.lo0-interface-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.lo0-interface-name-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='ipv4-oam-address'>

+                                                <set>

+                                                    <parameter name='ss.param.ipv4-oam-address' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.ipv4-oam-address-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='ipv4-oam-address-prefix'>

+                                                <set>

+                                                    <parameter name='ss.param.ipv4-oam-address-prefix' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.ipv4-oam-address-prefix-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='loopback0_ipv4_address'>

+                                                <set>

+                                                    <parameter name='ss.param.loopback0-ipv4-address' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.loopback0-ipv4-address-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='ipv4-loopback0-address'>

+                                                <set>

+                                                    <parameter name='ss.param.ipv4-loopback0-address' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.ipv4-loopback0-address-index' value='`bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='nfc-naming-code'>

+                                                <set>

+                                                    <parameter name='ss.param.nfc-naming-code' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.nfc-naming-code-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='nfc-function'>

+                                                <set>

+                                                    <parameter name='ss.param.nfc-function' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.nfc-function-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='vnfc-model-customization-uuid'>

+                                                <set>

+                                                    <parameter name='ss.param.vnfc-model-customization-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.vnfc-model-customization-uuid-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='vnfc-model-invariant-uuid'>

+                                                <set>

+                                                    <parameter name='ss.param.vnfc-model-invariant-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.vnfc-model-invariant-uuid-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='vnfc-model-version'>

+                                                <set>

+                                                    <parameter name='ss.param.vnfc-model-version' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.vnfc-model-version-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='as-number'>

+                                                <set>

+                                                    <parameter name='ss.param.as-number' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.as-number-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='vlan-id-outer'>

+                                                <set>

+                                                    <parameter name='ss.param.vlan-id-outer' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.vlan-id-outer-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='availability_zone_0'>

+                                                <set>

+                                                    <parameter name='ss.param.availability-zone-0' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].value`' />

+                                                    <parameter name='ss.param.availability-zone-0-index' value='`$bidx`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='aai-vf-module-put'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='ss.param.aai-vf-module-put-index' value='`$bidx`' />

+                                                    </set>

+                                                    <for silentFailure='true' index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key_length`">

+                                                        <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].name`'>

+                                                            <outcome value='generic-vnf'>

+                                                                <set>

+                                                                    <parameter name='ss.resource-key.generic-vnf' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='vf-module'>

+                                                                <set>

+                                                                    <parameter name='ss.resource-key.vf-module' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='volume-group'>

+                                                                <set>

+                                                                    <parameter name='ss.resource-key.volume-group' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='vnfc'>

+                                                                <set>

+                                                                    <parameter name='ss.resource-key.vnfc' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='connection-points'>

+                                                                <set>

+                                                                    <parameter name='ss.resource-key.connection-points' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='l-interface'>

+                                                                <set>

+                                                                    <parameter name='ss.resource-key.l-interface' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='l3-netework'>

+                                                                <set>

+                                                                    <parameter name='ss.resource-key.l3-network' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$bidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                </set>

+                                                            </outcome>

+                                                        </switch>

+                                                    </for>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </outcome>

+                                </execute>

+                            </for>

+                            <set>

+                                <parameter name='ss.param.vnf-id' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-id`' />

+                            </set>

+                        </block>

+                        <set>

+                            <parameter name='tmp.return-failure' value ='true' />

+                        </set>

+                        <block atomic='true'>

+                            <switch test="`$ss.resource-key.vnfc`">

+                                <outcome value='vnfc'>

+                                    <block atomic='true'>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="ROLLBACK vnfc save"/>

+                                        </record>

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vnfc"

+		key="vnfc.vnfc-name = $ss.param.vnfc-name" >

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='error-message' value="`$error-message + ' Failed to delete vnfc with vnfc-name=' + $ss.param.vnfc-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                    </set>

+                                                    <switch test='`$tmp.return-failure`'>

+                                                        <outcome value='true'>

+                                                            <block atomic='true'>

+                                                                <set>

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                </set>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value='`$error-message`' />

+                                                                </return>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <set>

+                                                    <parameter name='error-message' value="`$error-message + ' vnfc with vnfc-name=' + $ss.param.vnfc-name + ' not found in AAI. Consider silent success!'`" />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <set>

+                                                    <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vnfc with vnfc-name=' + $ss.param.vnfc-name + '  completed.'`" />

+                                                </set>

+                                            </outcome>

+                                        </delete>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <block atomic='true'>

+                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                    <parameter name="logger" value="message-log"/>

+                                    <parameter name="field1" value="ROLLBACK vlan-tag save"/>

+                                </record>

+                                <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length`' >

+                                    <for silentFailure='true' index='j' start='0' end='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data_length`' >

+                                        <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="vlan-tag"

+		key="vlan-tag.vlan-tag-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid" >

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='error-message' value="`$error-message + ' Failed to delete vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                    </set>

+                                                    <switch test='`$tmp.return-failure`'>

+                                                        <outcome value='true'>

+                                                            <block atomic='true'>

+                                                                <set>

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                </set>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value='`$error-message`' />

+                                                                </return>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <set>

+                                                    <parameter name='error-message' value="`$error-message + ' vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + ' not found in AAI. Consider silent success!'`" />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <set>

+                                                    <parameter name='error-message' value="`$error-message + ' Rollback (delete) of vlan-tag with vlan-tag-id =' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$i].connection-point.vlan-data[$j].vlan-uuid + '  completed.'`" />

+                                                </set>

+                                            </outcome>

+                                        </delete>

+                                    </for>

+                                </for>

+                            </block>

+                            <switch test="`$ss.resource-key.l-interface`">

+                                <outcome value='l-interface'>

+                                    <block atomic='true'>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>

+                                        </record>

+                                        <switch test="`$ss.param.oam-interface-name != ''`">

+                                            <outcome value='true'>

+                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.oam-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                    <outcome value='failure'>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.oam-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                            </set>

+                                                            <switch test='`$tmp.return-failure`'>

+                                                                <outcome value='true'>

+                                                                    <block atomic='true'>

+                                                                        <set>

+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                        </set>

+                                                                        <return status='failure'>

+                                                                            <parameter name='error-code' value='500' />

+                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                        </return>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <set>

+                                                            <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.oam-interface-name + ' not found in AAI. Consider silent success!'`" />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='success'>

+                                                        <set>

+                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.oam-interface-name + '  completed.'`" />

+                                                        </set>

+                                                    </outcome>

+                                                </delete>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test="`$ss.resource-key.l-interface`">

+                                <outcome value='l-interface'>

+                                    <block atomic='true'>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="ROLLBACK l-interface (oam) save"/>

+                                        </record>

+                                        <switch test="`$ss.param.lo0-interface-name != ''`">

+                                            <outcome value='true'>

+                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="l-interface"

+		key="l-interface.interface-name = $ss.param.lo0-interface-name

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                                    <outcome value='failure'>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='error-message' value="`$error-message + ' Failed to delete l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                            </set>

+                                                            <switch test='`$tmp.return-failure`'>

+                                                                <outcome value='true'>

+                                                                    <block atomic='true'>

+                                                                        <set>

+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                        </set>

+                                                                        <return status='failure'>

+                                                                            <parameter name='error-code' value='500' />

+                                                                            <parameter name='error-message' value='`$error-message`' />

+                                                                        </return>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <set>

+                                                            <parameter name='error-message' value="`$error-message + ' l-interface.interface-name = ' + $ss.param.lo0-interface-name + ' not found in AAI. Consider silent success!'`" />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='success'>

+                                                        <set>

+                                                            <parameter name='error-message' value="`$error-message + ' Rollback (delete) of l-interface with interface-name = ' + $ss.param.lo0-interface-name + '  completed.'`" />

+                                                        </set>

+                                                    </outcome>

+                                                </delete>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test="`$ss.resource-key.l3-network`">

+                                <outcome value='l3-netework'>

+                                    <block atomic='true'>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="ROLLBACK VNF l3-network relationship"/>

+                                        </record>

+                                        <for silentFailure='true' index='n' start='0' end='`$nidx`' >

+                                            <set>

+                                                <parameter name='tmp.related-link' value="`'/aai/v$/network/l3-networks/l3-network/' + $ss.network[$n].netid`" />

+                                                <!--

+<parameter name='tmp.related-link' value="`'/aai/' + $prop.aai.version + '/network/l3-networks/l3-network/' + $ss.network[$n].netid`" />

+-->

+                                            </set>

+                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="generic-vnf:relationship-list" 

+		key="generic-vnf.vnf-id = $ss.param.vnf-id 

+		AND related-to = l3-network 

+		AND relationship.related-link = $tmp.related-link" >

+                                                <outcome value='failure'>

+                                                    <block atomic='true'>

+                                                        <set>

+                                                            <parameter name='error-message' value="`$error-message + ' Failed to delete VNF l3-network relationship for generic-vnf.vnfid = ' + $ss.param.vnf-id + ' from AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                        </set>

+                                                        <switch test='`$tmp.return-failure`'>

+                                                            <outcome value='true'>

+                                                                <block atomic='true'>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                                    </set>

+                                                                    <return status='failure'>

+                                                                        <parameter name='error-code' value='500' />

+                                                                        <parameter name='error-message' value='`$error-message`' />

+                                                                    </return>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='not-found'>

+                                                    <set>

+                                                        <parameter name='error-message' value="`$error-message + ' l3-network relationship with related-path = ' + $tmp.related-path  + ' not found in AAI. Consider silent success!'`" />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='success'>

+                                                    <set>

+                                                        <parameter name='error-message' value="`$error-message + ' Rollback (delete) of generic-vnf l3-network relationships completed.'`" />

+                                                    </set>

+                                                </outcome>

+                                            </delete>

+                                        </for>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </block>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-put-index].resource-resolution-data.status' 

+	value='DELETED' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-module-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-vfput.log' />

+            </execute>

+        </block>

+    </method>

+</service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-aai-vnf-put.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-aai-vnf-put.xml
new file mode 100644
index 0000000..877c272
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-aai-vnf-put.xml
@@ -0,0 +1,434 @@
+<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-vnf-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.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`">

+                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].name`'>

+                                <outcome value='vnf_name'>

+                                    <set>

+                                        <parameter name='ss.param.vnf-name' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />

+                                        <parameter name='ss.param.vnf-name-index' value='`$aidx`' />

+                                    </set>

+                                </outcome>

+                                <outcome value='vnf_id'>

+                                    <set>

+                                        <parameter name='ss.param.vnf-id' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />

+                                        <parameter name='ss.param.vnf-id-index' value='`$aidx`' />

+                                    </set>

+                                </outcome>

+                                <outcome value='license-assignment-group-uuid'>

+                                    <set>

+                                        <parameter name='ss.param.license-assignment-group-uuid' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />

+                                        <parameter name='ss.param.license-assignment-group-uuid-index' value='`$aidx`' />

+                                    </set>

+                                </outcome>

+                                <outcome value='entitlement-assignment-group-uuid'>

+                                    <set>

+                                        <parameter name='ss.param.entitlement-assignment-group-uuid' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />

+                                        <parameter name='ss.param.entitlement-assignment-group-uuid-index' value='`$aidx`' />

+                                    </set>

+                                </outcome>

+                                <outcome value='aai-vnf-put'>

+                                    <set>

+                                        <parameter name='ss.param.aai-vnf-put-index' value='`$aidx`' />

+                                    </set>

+                                </outcome>

+                                <outcome value='license-key'>

+                                    <set>

+                                        <parameter name='ss.param.license-key' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />

+                                        <parameter name='ss.param.license-key-index' value='`$aidx`' />

+                                    </set>

+                                </outcome>

+                                <outcome value='entitlement-key'>

+                                    <set>

+                                        <parameter name='ss.param.entitlement-key' value ='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$aidx].value`' />

+                                        <parameter name='ss.param.entitlement-key-index' value='`$aidx`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id "

+	pfx="tmp.aai.vnf" >

+                            <outcome value='failure'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-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 generic-vnf with vnf-id=' + $ss.param.vnf-id + ' from AnAI'`" />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                    </set>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value="`'generic-vnf.vnf-name with vnf-id=' + $ss.param.vnf-id + ' not found in AAI'`" />

+                                    </return>

+                                </block>

+                            </outcome>

+                        </get-resource>

+                        <set>

+                            <parameter name="ss.selflink" 

+	value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + 

+	$service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.service-instance-id + 

+	'/service-data/vnfs/vnf/' + 

+	$ss.param.vnf-id + 

+	'/vnf-data/vnf-topology/'`" />

+                        </set>

+                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                            <parameter name="vnf-name" value="`$ss.param.vnf-name`" />

+                            <parameter name="prov-status" value="PREPROV" />

+                            <parameter name="operational-status" value="out-of-service-path" />

+                            <parameter name="selflink" value="`$ss.selflink`" />

+                            <parameter name="model-customization-id" 

+	value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-customization-uuid`" />

+                            <parameter name="model-invariant-id" 

+	value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-invariant-uuid`" />

+                            <parameter name="model-version-id" 

+	value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-uuid`" />

+                            <outcome value='failure'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-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 generic-vnf.vnf-name in AnAI with vnf-name=' + $ss.param.vnf-name`" />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                    </set>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value="`'generic-vnf with vnf-id =' + $ss.param.vnf-id + ' is not found in AAI'`" />

+                                    </return>

+                                </block>

+                            </outcome>

+                        </update>

+                        <switch test="`$ss.param.license-assignment-group-uuid != ''`">

+                            <outcome value='true'>

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >

+                                    <parameter name='source' value='`$ss.param.license-assignment-group-uuid`' />

+                                    <parameter name='target' value='$' />

+                                    <outcome value='true'>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                            <parameter name="field2" value="`'ss.param.license-assignment-group-uuid = ' + $ss.param.license-assignment-group-uuid`"/>

+                                            <parameter name="field3" value="__SKIP saving license object in AnAI__"/>

+                                        </record>

+                                    </outcome>

+                                    <outcome value='false'>

+                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="license"

+		key="license.group-uuid = $ss.param.license-assignment-group-uuid 

+		AND license.resource-uuid = $ss.param.license-key

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                            <parameter name="group-uuid" value='`$ss.param.license-assignment-group-uuid`' />

+                                            <parameter name="resource-uuid" value='`$ss.param.license-key`' />

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <block>

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                        </record>

+                                                        <set>

+                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                        </set>

+                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                            <parameter name="vnf-name" value='`$tmp.aai.vnf.vnf-anme`' />

+                                                            <outcome value='failure'>

+                                                                <set>

+                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='not-found'>

+                                                                <set>

+                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id = ' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='success'>

+                                                                <set>

+                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                </set>

+                                                            </outcome>

+                                                        </update>

+                                                    </block>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`'Failed to save license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' in AA. ' + $error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block atomic='true'>

+                                                    <block>

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                        </record>

+                                                        <set>

+                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                        </set>

+                                                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                            <parameter name="vnf-name" value='`$tmp.aai.vnf.vnf-anme`' />

+                                                            <outcome value='failure'>

+                                                                <set>

+                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='not-found'>

+                                                                <set>

+                                                                    <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id = ' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='success'>

+                                                                <set>

+                                                                    <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                </set>

+                                                            </outcome>

+                                                        </update>

+                                                    </block>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`'license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' is not found in AAI. ' + $error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <set>

+                                                    <parameter name='ss.license-updated' value='true' />

+                                                </set>

+                                            </outcome>

+                                        </save>

+                                    </outcome>

+                                </execute>

+                            </outcome>

+                        </switch>

+                        <switch test="`$ss.param.entitlement-assignment-group-uuid != ''`">

+                            <outcome value='true'>

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >

+                                    <parameter name='source' value='`$ss.param.entitlement-assignment-group-uuid`' />

+                                    <parameter name='target' value='$' />

+                                    <outcome value='true'>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                            <parameter name="field2" value="`'ss.param.entitlement-assignment-group-uuid = ' + $ss.param.entitlement-assignment-group-uuid`"/>

+                                            <parameter name="field3" value="__SKIP saving entitlement object in AnAI__"/>

+                                        </record>

+                                    </outcome>

+                                    <outcome value='false'>

+                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="entitlement"

+		key="entitlement.group-uuid = $ss.param.entitlement-assignment-group-uuid 

+		AND entitlement.resource-uuid = $ss.param.entitlement-key

+		AND generic-vnf.vnf-id = $ss.param.vnf-id" >

+                                            <parameter name="group-uuid" value='`$ss.param.entitlement-assignment-group-uuid`' />

+                                            <parameter name="resource-uuid" value='`$ss.param.entitlement-key`' />

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <block>

+                                                        <block>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                            </record>

+                                                            <set>

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                            </set>

+                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                <parameter name="vnf-name" value='`$tmp.aai.vnf.vnf-anme`' />

+                                                                <outcome value='failure'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id = ' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='success'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </update>

+                                                        </block>

+                                                        <switch test="`$ss.license-updated`">

+                                                            <outcome value='true'>

+                                                                <block>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK license"/>

+                                                                    </record>

+                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="license"

+		key="license.group-uuid = $ss.param.license-assignment-group-uuid 

+		AND license.resource-uuid = $ss.param.license-key" >

+                                                                        <outcome value='failure'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback license because license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' NOT FOUND in AAI. SILENT SUCCESS! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='success'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of license completed. '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </delete>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`'Failed to save entitlement with group-uuid = ' + $ss.param.entitlement-assignment-group-uuid + ' AND entitlement.resource-uuid = ' + $ss.param.entitlement-key + ' in AAI. ' + $error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block atomic='true'>

+                                                    <block>

+                                                        <block>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="ROLLBACK generic-vnf update"/>

+                                                            </record>

+                                                            <set>

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.param.aai-vf-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                            </set>

+                                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id = $ss.param.vnf-id " >

+                                                                <parameter name="vnf-name" value='`$tmp.aai.vnf.vnf-anme`' />

+                                                                <outcome value='failure'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update in AnAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="`$error-message + ' Failed to rollback generic-vnf update because generic-vnf with vnf-id = ' + $ss.param.vnf-id + ' is not found in AAI. MANUAL ROLLBACK IS REQUIRED! '`" />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='success'>

+                                                                    <set>

+                                                                        <parameter name='error-message' value="`$error-message + ' Rollback of generic-vnf update completed. '`" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </update>

+                                                        </block>

+                                                        <switch test="`$ss.license-updated`">

+                                                            <outcome value='true'>

+                                                                <block>

+                                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                        <parameter name="logger" value="message-log"/>

+                                                                        <parameter name="field1" value="ROLLBACK license"/>

+                                                                    </record>

+                                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="license"

+		key="license.group-uuid = $ss.param.license-assignment-group-uuid 

+		AND license.resource-uuid = $ss.param.license-key" >

+                                                                        <outcome value='failure'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' in AAI. MANUAL ROLLBACK IS REQUIRED!'`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Failed to rollback license because license with group-uuid = ' + $ss.param.license-assignment-group-uuid + ' AND license.resource-uuid = ' + $ss.param.license-key + ' NOT FOUND in AAI. SILENT SUCCESS! '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                        <outcome value='success'>

+                                                                            <set>

+                                                                                <parameter name='error-message' value="`$error-message + ' Rollback of license completed. '`" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </delete>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`'entitlement with group-uuid = ' + $ss.param.entitlement-assignment-group-uuid + ' AND entitlement.resource-uuid = ' + $ss.param.entitlement-key + ' is not found in AAI. ' + $error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                        </save>

+                                    </outcome>

+                                </execute>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-put-index].resource-resolution-data.status' 

+	value='SUCCESS' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.param.aai-vnf-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-vnfput.log' />

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-capability-param-resolution.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-capability-param-resolution.xml
new file mode 100644
index 0000000..d3dce91
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-capability-param-resolution.xml
@@ -0,0 +1,281 @@
+<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-capability-param-resolution' mode='sync'>

+        <block atomic='true'>

+            <switch test="`$ss.capability-type`">

+                <outcome value='vnf'>

+                    <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length == ''`">

+                        <outcome value='false'>

+                            <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>

+                                    <outcome value='true'>

+                                        <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key_length == ''`">

+                                            <outcome value='false'>

+                                                <for silentFailure='true' index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >

+                                                        <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`" />

+                                                        <parameter name="target" value="$"/>

+                                                        <outcome value='true'>

+                                                            <block atomic='true'>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="`'SS: param[].value with leading $: ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`"/>

+                                                                </record>

+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>

+                                                                    <parameter name='ctx_memory_result_key' value='resource-resolution-split' />

+                                                                    <parameter name='original_string' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`' />

+                                                                    <parameter name='regex' value='\$\{' />

+                                                                </execute>

+                                                                <set>

+                                                                    <parameter name="tmp.s1" value='`$resource-resolution-split[0]`'/>

+                                                                    <parameter name="tmp.s2.s2" value=''/>

+                                                                    <parameter name="tmp.resolved.var.value" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`'/>

+                                                                </set>

+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>

+                                                                    <parameter name='ctx_memory_result_key' value='s2' />

+                                                                    <parameter name='original_string' value='`$resource-resolution-split[1]`' />

+                                                                    <parameter name='regex' value='\}' />

+                                                                </execute>

+                                                                <switch test='`$s2_length`'>

+                                                                    <outcome value='1'>

+                                                                        <set>

+                                                                            <parameter name="tmp.s2.s1" value='`$s2[0]`'/>

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='2'>

+                                                                        <block>

+                                                                            <set>

+                                                                                <parameter name="tmp.s2.s1" value='`$s2[0]`'/>

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name="tmp.s2.s2" value='`$s2[1]`'/>

+                                                                            </set>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                                <for silentFailure='true' index='cn' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >

+                                                                    <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$cn].name == $tmp.s2.s1`'>

+                                                                        <outcome value='true'>

+                                                                            <set>

+                                                                                <parameter name='tmp.resolved.var.value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$cn].value`'/>

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </for>

+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>

+                                                                    <parameter name='source' value='`$tmp.s1`' />

+                                                                    <parameter name='target' value='`$tmp.resolved.var.value`' />

+                                                                    <parameter name='outputPath' value='tmp.result' />

+                                                                </execute>

+                                                                <switch test="`$tmp.s2.s2 == ''`">

+                                                                    <outcome value='true'></outcome>

+                                                                    <outcome value='false'>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>

+                                                                            <parameter name='source' value='`$tmp.result`' />

+                                                                            <parameter name='target' value='`$tmp.s2.s2`' />

+                                                                            <parameter name='outputPath' value='tmp.result' />

+                                                                        </execute>

+                                                                    </outcome>

+                                                                </switch>

+                                                                <set>

+                                                                    <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`' value='`$tmp.result`'/>

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </execute>

+                                                </for>

+                                            </outcome>

+                                        </switch>

+                                    </outcome>

+                                </switch>

+                            </for>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='vf-module'>

+                    <switch test="`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length == ''`">

+                        <outcome value='false'>

+                            <for silentFailure='true' index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>

+                                    <outcome value='true'>

+                                        <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key_length == ''`">

+                                            <outcome value='false'>

+                                                <for silentFailure='true' index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key_length`' >

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >

+                                                        <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`" />

+                                                        <parameter name="target" value="$"/>

+                                                        <outcome value='true'>

+                                                            <block atomic='true'>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="`'SS: param[].value with leading $: ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`"/>

+                                                                </record>

+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>

+                                                                    <parameter name='ctx_memory_result_key' value='resource-resolution-split' />

+                                                                    <parameter name='original_string' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`' />

+                                                                    <parameter name='regex' value='\$\{' />

+                                                                </execute>

+                                                                <set>

+                                                                    <parameter name="tmp.s1" value='`$resource-resolution-split[0]`'/>

+                                                                    <parameter name="tmp.s2.s2" value=''/>

+                                                                    <parameter name="tmp.resolved.var.value" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`'/>

+                                                                </set>

+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>

+                                                                    <parameter name='ctx_memory_result_key' value='s2' />

+                                                                    <parameter name='original_string' value='`$resource-resolution-split[1]`' />

+                                                                    <parameter name='regex' value='\}' />

+                                                                </execute>

+                                                                <switch test='`$s2_length`'>

+                                                                    <outcome value='1'>

+                                                                        <set>

+                                                                            <parameter name="tmp.s2.s1" value='`$s2[0]`'/>

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='2'>

+                                                                        <block>

+                                                                            <set>

+                                                                                <parameter name="tmp.s2.s1" value='`$s2[0]`'/>

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name="tmp.s2.s2" value='`$s2[1]`'/>

+                                                                            </set>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                                <for silentFailure='true' index='cn' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >

+                                                                    <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].name == $tmp.s2.s1`'>

+                                                                        <outcome value='true'>

+                                                                            <set>

+                                                                                <parameter name='tmp.resolved.var.value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cn].value`'/>

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </for>

+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>

+                                                                    <parameter name='source' value='`$tmp.s1`' />

+                                                                    <parameter name='target' value='`$tmp.resolved.var.value`' />

+                                                                    <parameter name='outputPath' value='tmp.result' />

+                                                                </execute>

+                                                                <switch test="`$tmp.s2.s2 == ''`">

+                                                                    <outcome value='true'></outcome>

+                                                                    <outcome value='false'>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>

+                                                                            <parameter name='source' value='`$tmp.result`' />

+                                                                            <parameter name='target' value='`$tmp.s2.s2`' />

+                                                                            <parameter name='outputPath' value='tmp.result' />

+                                                                        </execute>

+                                                                    </outcome>

+                                                                </switch>

+                                                                <set>

+                                                                    <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`' value='`$tmp.result`'/>

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </execute>

+                                                </for>

+                                            </outcome>

+                                        </switch>

+                                    </outcome>

+                                </switch>

+                            </for>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='pnf'>

+                    <switch test="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length == ''`">

+                        <outcome value='false'>

+                            <for silentFailure='true' index='i' 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[$i].resource-resolution-data.capability-name == $ss.capability-name`'>

+                                    <outcome value='true'>

+                                        <switch test="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key_length == ''`">

+                                            <outcome value='false'>

+                                                <for silentFailure='true' index='j' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >

+                                                        <parameter name="source" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`" />

+                                                        <parameter name="target" value="$"/>

+                                                        <outcome value='true'>

+                                                            <block atomic='true'>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                    <parameter name="logger" value="message-log"/>

+                                                                    <parameter name="field1" value="`'SS: param[].value with leading $: ' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`"/>

+                                                                </record>

+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>

+                                                                    <parameter name='ctx_memory_result_key' value='resource-resolution-split' />

+                                                                    <parameter name='original_string' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`' />

+                                                                    <parameter name='regex' value='\$\{' />

+                                                                </execute>

+                                                                <set>

+                                                                    <parameter name="tmp.s1" value='`$resource-resolution-split[0]`'/>

+                                                                    <parameter name="tmp.s2.s2" value=''/>

+                                                                    <parameter name="tmp.resolved.var.value" value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`'/>

+                                                                </set>

+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>

+                                                                    <parameter name='ctx_memory_result_key' value='s2' />

+                                                                    <parameter name='original_string' value='`$resource-resolution-split[1]`' />

+                                                                    <parameter name='regex' value='\}' />

+                                                                </execute>

+                                                                <switch test='`$s2_length`'>

+                                                                    <outcome value='1'>

+                                                                        <set>

+                                                                            <parameter name="tmp.s2.s1" value='`$s2[0]`'/>

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='2'>

+                                                                        <block>

+                                                                            <set>

+                                                                                <parameter name="tmp.s2.s1" value='`$s2[0]`'/>

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name="tmp.s2.s2" value='`$s2[1]`'/>

+                                                                            </set>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                                <for silentFailure='true' index='cn' 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[$cn].name == $tmp.s2.s1`'>

+                                                                        <outcome value='true'>

+                                                                            <set>

+                                                                                <parameter name='tmp.resolved.var.value' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$cn].value`'/>

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </for>

+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>

+                                                                    <parameter name='source' value='`$tmp.s1`' />

+                                                                    <parameter name='target' value='`$tmp.resolved.var.value`' />

+                                                                    <parameter name='outputPath' value='tmp.result' />

+                                                                </execute>

+                                                                <switch test="`$tmp.s2.s2 == ''`">

+                                                                    <outcome value='true'></outcome>

+                                                                    <outcome value='false'>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat'>

+                                                                            <parameter name='source' value='`$tmp.result`' />

+                                                                            <parameter name='target' value='`$tmp.s2.s2`' />

+                                                                            <parameter name='outputPath' value='tmp.result' />

+                                                                        </execute>

+                                                                    </outcome>

+                                                                </switch>

+                                                                <set>

+                                                                    <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`' value='`$tmp.result`'/>

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </execute>

+                                                </for>

+                                            </outcome>

+                                        </switch>

+                                    </outcome>

+                                </switch>

+                            </for>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </switch>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value="DONE: self-serve-capability-param-resolution"/>

+            </record>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-generate-name-changeassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-generate-name-changeassign.xml
new file mode 100644
index 0000000..a8ef58d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-generate-name-changeassign.xml
@@ -0,0 +1,50 @@
+<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-generate-name-changeassign' mode='sync'>

+        <block atomic="true">

+            <switch test='`$prop.controller.user`'>

+                <outcome value=''>

+                    <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>

+                </outcome>

+            </switch>

+            <call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' ></call>

+            <switch test='`$ss.input.param.index`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="ss.input.param.index is null" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$ss.service-data.param.index`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="ss.service-data.param.index is null" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$ss.capability-type`'>

+                <outcome value='vnf'>

+                    <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-generate-name-changeassign' mode='sync' ></call>

+                </outcome>

+                <outcome value='vf-module'>

+                    <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-generate-name-changeassign' mode='sync' ></call>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unknown capability-type [' + $ss.capability-type + '], valid value are: vnf, pnf, vf-module'`" />

+                    </return>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-generate-name.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-generate-name.xml
new file mode 100644
index 0000000..c6b5a9a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-generate-name.xml
@@ -0,0 +1,31 @@
+<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-generate-name' mode='sync'>

+        <block atomic="true">

+            <switch test='`$prop.controller.user`'>

+                <outcome value=''>

+                    <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>

+                </outcome>

+            </switch>

+            <call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' ></call>

+            <switch test="`$ss.capability-type`">

+                <outcome value='vnf'>

+                    <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-generate-name' mode='sync' ></call>

+                </outcome>

+                <outcome value='vf-module'>

+                    <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-generate-name' mode='sync' ></call>

+                </outcome>

+                <outcome value='pnf'>

+                    <call module='GENERIC-RESOURCE-API' rpc='self-serve-pnf-generate-name' mode='sync' ></call>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='`$pathname`' />

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-mS-mac-address-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-mS-mac-address-assign.xml
new file mode 100644
index 0000000..60c749a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-mS-mac-address-assign.xml
@@ -0,0 +1,625 @@
+<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-mS-mac-address-assign' mode='sync'>

+        <block atomic='true'>

+            <switch test="`$ss.capability-name`">

+                <outcome value='Other'>

+                    <block>

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="self-serve-mS-mac-address-assign: ss.capability-name is not mS-mac-address-assign or it is not set"/>

+                        </record>

+                        <return status='failure'>

+                            <parameter name='error-code' value='401' />

+                            <parameter name='error-message' value='ss.capability-name is not set' />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value=''>

+                    <block>

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="self-serve-mS-mac-address-assign: ss.capability-name is not mS-mac-address-assign or it is not set"/>

+                        </record>

+                        <return status='failure'>

+                            <parameter name='error-code' value='401' />

+                            <parameter name='error-message' value='ss.capability-name is not set' />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='null'>

+                    <block>

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="self-serve-mS-mac-address-assign: ss.capability-name is not mS-mac-address-assign or it is not set"/>

+                        </record>

+                        <return status='failure'>

+                            <parameter name='error-code' value='401' />

+                            <parameter name='error-message' value='ss.capability-name is not set' />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='mS-mac-address-assign'>

+                    <record plugin="com.att.sdnctl.sli.recording.Slf4jRecorder">

+                        <parameter name="logger" value="message-log"/>

+                        <parameter name="field1" value="__TIMESTAMP__"/>

+                        <parameter name="field2" value="self-serve-mS-mac-address-assign: ss.capability-name is mS-mac-address-assign"/>

+                    </record>

+                </outcome>

+            </switch>

+            <switch test="`$ss.capability-action`">

+                <outcome value='Other'></outcome>

+                <outcome value=''>

+                    <block>

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="self-serve-mS-mac-address-assign: ss.capability-action is not set"/>

+                        </record>

+                        <return status='failure'>

+                            <parameter name='error-code' value='401' />

+                            <parameter name='error-message' value='ss.capability-action is not set' />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='null'></outcome>

+                <outcome value='assign'>

+                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                        <parameter name="logger" value="message-log"/>

+                        <parameter name="field1" value="__TIMESTAMP__"/>

+                        <parameter name="field2" value="self-serve-mS-mac-address-assign: ss.capability-action is assign"/>

+                    </record>

+                </outcome>

+                <outcome value='unassign'>

+                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                        <parameter name="logger" value="message-log"/>

+                        <parameter name="field1" value="__TIMESTAMP__"/>

+                        <parameter name="field2" value="self-serve-mS-mac-address-assign: ss.capability-action is unassign"/>

+                    </record>

+                </outcome>

+            </switch>

+            <block atomic='true'>

+                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                    <parameter name="logger" value="message-log"/>

+                    <parameter name="field1" value="__TIMESTAMP__"/>

+                    <parameter name="field2" value="self-serve-mS-mac-address-assign: call self-serve-capability-param-resolution DG"/>

+                </record>

+                <set>

+                    <!--<parameter name='name' value='value' />-->

+                </set>

+                <call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' >

+                    <outcome value='failure'>

+                        <block>

+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                <parameter name="logger" value="message-log"/>

+                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                <parameter name="field2" value="self-serve-mS-mac-address-assign: Failure calling self-serve-capability-param-resolution"/>

+                            </record>

+                            <return status='failure'>

+                                <parameter name='error-code' value='402' />

+                                <parameter name='error-message' value='Failure calling self-serve-capability-param-resolution' />

+                            </return>

+                        </block>

+                    </outcome>

+                    <outcome value='success'></outcome>

+                </call>

+            </block>

+            <block atomic='true'>

+                <set>

+                    <parameter name='ma.elements.element_length' value='0' />

+                </set>

+                <set>

+                    <parameter name='tmp.vf-module-parameters-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' />

+                </set>

+                <for index='vf-module-param-index' start='0' end='`$tmp.vf-module-parameters-length`' >

+                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                        <parameter name="logger" value="message-log"/>

+                        <parameter name="field1" value="__TIMESTAMP__"/>

+                        <parameter name="field2" value="self-serve-mS-mac-address-assign: vf-module-param-index"/>

+                        <parameter name="field3" value='`$vf-module-param-index`'/>

+                    </record>

+                    <block>

+                        <set>

+                            <parameter name='vfModuleParamsCapabilityName' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.capability-name`'  />

+                            <parameter name='tmp.vnfHostName' value=''  />

+                            <parameter name='tmp.policyInstanceName' value=''  />

+                            <parameter name='tmp.cloudParamName' value=''  />

+                            <parameter name='tmp.swName' value=''  />

+                            <parameter name='tmp.resourceValue' value=''  />

+                        </set>

+                        <switch test="`$ss.capability-name == $vfModuleParamsCapabilityName`">

+                            <outcome value='true'>

+                                <block>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="self-serve-mS-mac-address-assign: Found ss.capability-name MATCH"/>

+                                    </record>

+                                    <block atomic='true'>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >

+                                            <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].value`" />

+                                            <parameter name="target" value="$"/>

+                                            <outcome value='false'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='tmp.resourceValue' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].value`'  />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </execute>

+                                        <set>

+                                            <parameter name='tmp.cloudParamName' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].name`'  />

+                                        </set>

+                                        <set>

+                                            <parameter name='tmp.resource-resolution-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.`'  />

+                                        </set>

+                                        <switch test="`$tmp.resource-resolution-data.status == 'PENDING'`">

+                                            <outcome value='false'>

+                                                <block>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="self-serve-mS-mac-address-assign: reseouce-resolution-data.status is not PENDING"/>

+                                                    </record>

+                                                    <set>

+                                                        <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />

+                                                    </set>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='401' />

+                                                        <parameter name='error-message' value='reseouce-resolution-data.status is not PENDING' />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='tmp.resource-key-length' value='`$tmp.resource-resolution-data.resource-key_length`' />

+                                        </set>

+                                        <for index='key-index' start='0' end='`$tmp.resource-resolution-data.resource-key_length`' >

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="self-serve-mS-mac-address-assign: key-index"/>

+                                                <parameter name="field3" value='`$key-index`'/>

+                                            </record>

+                                            <block>

+                                                <switch test="`$tmp.resource-resolution-data.resource-key[$key-index].name`">

+                                                    <outcome value='key'>

+                                                        <block>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="self-serve-mS-mac-address-assign: Found resource-resolution-data.name = vnf-name"/>

+                                                            </record>

+                                                            <set>

+                                                                <parameter name='tmp.vnfHostName' value='`$tmp.resource-resolution-data.resource-key[$key-index].value`'  />

+                                                            </set>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="self-serve-mS-mac-address-assign: resolved vnfHostName: "/>

+                                                                <parameter name="field3" value='`$tmp.vnfHostName`'/>

+                                                            </record>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='policy-instance-name'>

+                                                        <block>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="self-serve-mS-mac-address-assign: Found resource-resolution-data.name = policy-instance-name-name"/>

+                                                            </record>

+                                                            <set>

+                                                                <parameter name='tmp.policyInstanceName' value='`$tmp.resource-resolution-data.resource-key[$key-index].value`'  />

+                                                            </set>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="self-serve-mS-mac-address-assign: resolved policyInstanceName: "/>

+                                                                <parameter name="field3" value='`$tmp.policyInstanceName`'/>

+                                                            </record>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='sw-name'>

+                                                        <block>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="self-serve-mS-mac-address-assign: Found resource-resolution-data.name = sw-name"/>

+                                                            </record>

+                                                            <set>

+                                                                <parameter name='tmp.swName' value='`$tmp.resource-resolution-data.resource-key[$key-index].value`'  />

+                                                            </set>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="self-serve-mS-mac-address-assign: resolved swName: "/>

+                                                                <parameter name="field3" value='`$tmp.swName`'/>

+                                                            </record>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </for>

+                                        <switch test="`$tmp.vnfHostName`">

+                                            <outcome value='null'>

+                                                <block>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="self-serve-mS-mac-address-assign: vnfHostName is not set"/>

+                                                    </record>

+                                                    <set>

+                                                        <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />

+                                                    </set>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='403' />

+                                                        <parameter name='error-message' value='vnfHostName is not set' />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value=''>

+                                                <block>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="self-serve-mS-mac-address-assign: vnfHostName is not set"/>

+                                                    </record>

+                                                    <set>

+                                                        <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />

+                                                    </set>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='403' />

+                                                        <parameter name='error-message' value='vnfHostName is not set' />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$tmp.cloudParamName`">

+                                            <outcome value='null'>

+                                                <block>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="self-serve-mS-mac-address-assign: cloudParamName is not set"/>

+                                                    </record>

+                                                    <set>

+                                                        <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />

+                                                    </set>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='403' />

+                                                        <parameter name='error-message' value='cloudParamName is not set' />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value=''>

+                                                <block>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="self-serve-mS-mac-address-assign: cloudParamName is not set"/>

+                                                    </record>

+                                                    <set>

+                                                        <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />

+                                                    </set>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='403' />

+                                                        <parameter name='error-message' value='cloudParamName is not set' />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$tmp.policyInstanceName`">

+                                            <outcome value='null'>

+                                                <switch test="`$ss.capability-action` == 'assign'">

+                                                    <outcome value='true'>

+                                                        <block>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="self-serve-mS-mac-address-assign: policyInstanceName is not set and action is assign"/>

+                                                            </record>

+                                                            <set>

+                                                                <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />

+                                                            </set>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='403' />

+                                                                <parameter name='error-message' value='policyInstanceName is not set and action is assign' />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                            <outcome value=''>

+                                                <switch test="`$ss.capability-action` == 'assign'">

+                                                    <outcome value='true'>

+                                                        <block>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="self-serve-mS-mac-address-assign: policyInstanceName is not set and action is assign"/>

+                                                            </record>

+                                                            <set>

+                                                                <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />

+                                                            </set>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='403' />

+                                                                <parameter name='error-message' value='policyInstanceName is not set and action is assign' />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$tmp.swName`">

+                                            <outcome value='null'>

+                                                <switch test="`$ss.capability-action` == 'assign'">

+                                                    <outcome value='true'>

+                                                        <block>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="self-serve-mS-mac-address-assign: swName is not set and action is assign"/>

+                                                            </record>

+                                                            <set>

+                                                                <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />

+                                                            </set>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='403' />

+                                                                <parameter name='error-message' value='swName is not set and action is assign' />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                            <outcome value=''>

+                                                <switch test="`$ss.capability-action` == 'assign'">

+                                                    <outcome value='true'>

+                                                        <block>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="self-serve-mS-mac-address-assign: swName is not set and action is assign"/>

+                                                            </record>

+                                                            <set>

+                                                                <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />

+                                                            </set>

+                                                            <return status='failure'>

+                                                                <parameter name='error-code' value='403' />

+                                                                <parameter name='error-message' value='swName is not set and action is assign' />

+                                                            </return>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                        </switch>

+                                        <set>

+                                            <parameter name='ma.elements.element[$ma.elements.element_length].policy-instance-name' value='`$tmp.policyInstanceName`' />

+                                            <parameter name='ma.elements.element[$ma.elements.element_length].vnf-host-name' value='`$tmp.vnfHostName`' />

+                                            <parameter name='ma.elements.element[$ma.elements.element_length].cloud-param-name' value='`$tmp.cloudParamName`' />

+                                            <parameter name='ma.elements.element[$ma.elements.element_length].sw-name' value='`$tmp.swName`' />

+                                        </set>

+                                        <switch test="`$tmp.resourceValue`">

+                                            <outcome value='Other'>

+                                                <set>

+                                                    <parameter name='ma.elements.element[$ma.elements.element_length].resource-value' value='`$tmp.resourceValue`' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='null'></outcome>

+                                            <outcome value=''></outcome>

+                                        </switch>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                            <parameter name="field2" value="self-serve-mS-mac-address-assign: Adding this vf-module-parameters.param to ma.elements "/>

+                                            <parameter name="field3" value='`$ma.elements.element_length`'/>

+                                            <parameter name="field4" value='`$ma.elements.element[$ma.elements.element_length].policy-instance-name`'/>

+                                            <parameter name="field5" value='`$ma.elements.element[$ma.elements.element_length].vnf-host-name`'/>

+                                            <parameter name="field6" value='`$ma.elements.element[$ma.elements.element_length].cloud-param-name`'/>

+                                            <parameter name="field7" value='`$ma.elements.element[$ma.elements.element_length].sw-name`'/>

+                                            <parameter name="field8" value='`$ma.elements.element[$ma.elements.element_length].resource-value`'/>

+                                        </record>

+                                        <set>

+                                            <parameter name='ma.elements.element_length' value='`$ma.elements.element_length + 1`' />

+                                        </set>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='false'></outcome>

+                        </switch>

+                    </block>

+                </for>

+            </block>

+            <switch test='`$ss.capability-action`'>

+                <outcome value='assign'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='prop.restapi.templateDir' value="/opt/lsc/restapi/templates" />

+                            <parameter name='prop.mac-address-microserivice.url' value="http://mtanjv9sdlg51-eth1-0.aic.cip.att.com:8989" />

+                        </set>

+                        <record plugin="com.att.sdnctl.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="self-serve-mS-mac-address-assign: restapi-call-node Call MAC Address microService assign"/>

+                        </record>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/mac-address-assign.json'`" />

+                            <parameter name='restapiUrl' value="`$prop.mac-address-microserivice.url + '/macaddress/service/assign'`" />

+                            <parameter name='format' value='json' />

+                            <parameter name='httpMethod' value='POST' />

+                            <parameter name='customHttpHeaders'

+      value="Authorization=Basic YWRtaW46YWRtaW4=" />

+                            <parameter name="responsePrefix" value="tmp.mac-address-resp.prefix" />

+                            <outcome value='failure'>

+                                <block>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="self-serve-mS-mac-address-assign: Error calling MAC Address Micro Service assign"/>

+                                    </record>

+                                    <set>

+                                        <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />

+                                    </set>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='502' />

+                                        <parameter name='error-message' value='self-serve-mS-mac-address-assign: Error calling MAC Address Micro Service assign' />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='success'>

+                                <block>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="self-serve-mS-mac-address-assign: assign SUCCESS"/>

+                                    </record>

+                                </block>

+                            </outcome>

+                        </execute>

+                        <for index='mac-address-list-index' start='0' end='`$tmp.mac-address-resp.prefix.mac-address-list_length`' >

+                            <block>

+                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                    <parameter name="logger" value="message-log"/>

+                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                    <parameter name="field2" value="self-serve-mS-mac-address-assign: mac-address-list-index|name|value "/>

+                                    <parameter name="field3" value='`$mac-address-list-index`'/>

+                                    <parameter name="field4" value='`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].name`'/>

+                                    <parameter name="field5" value='`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].value`'/>

+                                </record>

+                                <for index='vf-module-param-index' start='0' end='`$tmp.vf-module-parameters-length`' >

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="self-serve-mS-mac-address-assign: vf-module-param-index"/>

+                                        <parameter name="field3" value='`$vf-module-param-index`'/>

+                                    </record>

+                                    <block>

+                                        <switch test="`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].name == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].name`">

+                                            <outcome value='true'>

+                                                <block>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                        <parameter name="logger" value="message-log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="self-serve-mS-mac-address-assign: mac-address-list MATCH with param.value: "/>

+                                                        <parameter name="field3" value="`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].name`"/>

+                                                    </record>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >

+                                                        <parameter name="source" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].value`" />

+                                                        <parameter name="target" value="$"/>

+                                                        <outcome value='false'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.capability-name' value='INPUT'  />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='true'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name="`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].value`" value="`$tmp.mac-address-resp.prefix.mac-address-list[$mac-address-list-index].value`"  />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </execute>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <set>

+                                            <parameter name="`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status`" value='SUCCESS'  />

+                                        </set>

+                                    </block>

+                                </for>

+                            </block>

+                        </for>

+                    </block>

+                </outcome>

+                <outcome value='unassign'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='prop.restapi.templateDir' value="/opt/lsc/restapi/templates" />

+                            <parameter name='prop.mac-address-microserivice.url' value="http://mtanjv9sdlg51-eth1-0.aic.cip.att.com:8989" />

+                        </set>

+                        <record plugin="com.att.sdnctl.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="self-serve-mS-mac-address-assign: restapi-call-node Call MAC Address microService unassign"/>

+                        </record>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/mac-address-unassign.json'`" />

+                            <parameter name='restapiUrl' value="`$prop.mac-address-microserivice.url + '/macaddress/service/unassign'`" />

+                            <parameter name='format' value='json' />

+                            <parameter name='httpMethod' value='POST' />

+                            <parameter name='customHttpHeaders'

+      value="Authorization=Basic YWRtaW46YWRtaW4=" />

+                            <parameter name="responsePrefix" value="tmp.mac-address-resp.prefix" />

+                            <outcome value='failure'>

+                                <block>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="self-serve-mS-mac-address-assign: Error calling MAC Address Micro Service unassign"/>

+                                    </record>

+                                    <set>

+                                        <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />

+                                    </set>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='502' />

+                                        <parameter name='error-message' value='self-serve-mS-mac-address-assign: Error calling MAC Address Micro Service unassign' />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='success'>

+                                <block>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                        <parameter name="field2" value="self-serve-mS-mac-address-assign: unassign SUCCESS: response: "/>

+                                        <parameter name='field3' value='`$tmp.mac-address-resp.prefix.status`' />

+                                    </record>

+                                    <switch test="`$tmp.mac-address-resp.prefix.status == 'deleted successfully'`">

+                                        <outcome value='false'>

+                                            <block>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                    <parameter name="field2" value="self-serve-mS-mac-address-assign: Address Micro Service unassign did not return: deleted successfully"/>

+                                                </record>

+                                                <set>

+                                                    <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status' value='FAILED'  />

+                                                </set>

+                                                <return status='failure'>

+                                                    <parameter name='error-code' value='502' />

+                                                    <parameter name='error-message' value='self-serve-mS-mac-address-assign: Address Micro Service unassign did not return: deleted successfully' />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='true'>

+                                            <block>

+                                                <for index='vf-module-param-index' start='0' end='`$tmp.vf-module-parameters-length`' >

+                                                    <set>

+                                                        <parameter name="`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-param-index].resource-resolution-data.status`" value="DELETED"  />

+                                                    </set>

+                                                </for>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </execute>

+                    </block>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/self-serve-mS-mac-address-assign.log' />

+            </execute>

+            <return status='success'>

+                <parameter name="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vf-module-parameters-index].resource-resolution-data.status`" value='SUCCESS'  />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-mS-vlan-tag-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-mS-vlan-tag-assign.xml
new file mode 100644
index 0000000..0b2cde9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-mS-vlan-tag-assign.xml
@@ -0,0 +1,744 @@
+<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-mS-vlan-tag-assign' 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">

+                        <call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' >

+                            <outcome value='failure'>

+                                <return status="failure">

+                                    <parameter name="ack-final" value="Y" />

+                                    <parameter name="error-code" value="500"/>

+                                    <parameter name="error-message" value="`'Not all assignments are resolved' + $error-message`" />

+                                </return>

+                            </outcome>

+                        </call>

+                        <set>

+                            <parameter name='qidx' value='0' />

+                            <parameter name='ss.vt.' value='' />

+                        </set>

+                        <for silentFailure='true' index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">

+                            <set>

+                                <parameter name='tmp.ss.param.capability-name' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />

+                            </set>

+                            <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>

+                                <outcome value='true'>

+                                    <block>

+                                        <set>

+                                            <parameter name='ss.vt.param[$qidx].index' value='`$pidx`' />

+                                        </set>

+                                        <for silentFailure='true' index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key_length`">

+                                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>

+                                                <outcome value='policy-instance-name'>

+                                                    <set>

+                                                        <parameter name='vt.request[$qidx].policy-instance-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='resource-name'>

+                                                    <set>

+                                                        <parameter name='vt.request[$qidx].resource-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='scope-id'>

+                                                    <set>

+                                                        <parameter name='vt.request[$qidx].scope-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='vlan-tag-key'>

+                                                    <set>

+                                                        <parameter name='vt.request[$qidx].vlan-tag-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='vlan-type'>

+                                                    <set>

+                                                        <parameter name='vt.request[$qidx].vlan-type' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='resource-value'>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >

+                                                        <parameter name='source' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                        <parameter name='target' value='$' />

+                                                        <outcome value='false'>

+                                                            <set>

+                                                                <parameter name='vt.request[$qidx].resource-value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                            </set>

+                                                        </outcome>

+                                                        <outcome value='true'>

+                                                            <set>

+                                                                <parameter name='vt.request[$qidx].resource-value' value='' />

+                                                            </set>

+                                                        </outcome>

+                                                    </execute>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                        <set>

+                                            <parameter name='qidx' value='`$qidx + 1`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='vt.request_length' value='`$qidx`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='ss.vt.param_length' value='`$qidx`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                            <parameter name="source" value="`$prop.restapi.ss-mS-vlan-tag-assign`"/>

+                            <parameter name="outputPath" value="tmp.ss-vlan-tag-url"/>

+                            <parameter name="target" value="{action}"/>

+                            <parameter name="replacement" value="`$ss.capability-action`"/>

+                        </execute>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.mS.vlan.tag.assign.templatefile`" />

+                            <parameter name='restapiUrl' value='`$prop.vt.mS.url + $tmp.ss-vlan-tag-url`' />

+                            <parameter name='restapiUser' value='`$prop.vt.mS.user`' />

+                            <parameter name='restapiPassword' value='`$prop.vt.mS.pwd`' />

+                            <parameter name='format' value='json' />

+                            <parameter name='httpMethod' value='POST' />

+                            <parameter name="responsePrefix" value="vtResp" />

+                            <outcome value='failure'>

+                                <block atomic="true">

+                                    <for index="i" start="0" end="`$ss.vt.param_length`">

+                                        <set>

+                                            <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                        </set>

+                                    </for>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value="Failed to get vlan-tag assisgnment from mS" />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic="true">

+                                    <for index="i" start="0" end="`$ss.vt.param_length`">

+                                        <set>

+                                            <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                        </set>

+                                    </for>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value="Failed to get vlan-tag assisgnment from mS" />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='success'>

+                                <switch test='`$vtResp.error-code`'>

+                                    <outcome value='500'>

+                                        <block atomic='true'>

+                                            <for index="i" start="0" end="`$ss.vt.param_length`">

+                                                <set>

+                                                    <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                </set>

+                                            </for>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500'/>

+                                                <parameter name='error-message' value="`'Encountered error from mS-vlan-tag-assign with error-code = ' + $vtResp.error-code + ' and error-message = ' + $vtResp.error-message`" />

+                                            </return>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='200'>

+                                        <block atomic='true'>

+                                            <for silentFailure='true' index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">

+                                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name`'>

+                                                    <outcome value='nfc-function'>

+                                                        <set>

+                                                            <parameter name='ss.param.nfc-function' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />

+                                                            <parameter name='ss.param.nfc-function-index' value='`$pidx`' />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='nfc-naming-code'>

+                                                        <set>

+                                                            <parameter name='ss.param.nfc-naming-code' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />

+                                                            <parameter name='ss.param.nfc-naming-code-index' value='`$pidx`' />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='vnfc-model-customization-uuid'>

+                                                        <set>

+                                                            <parameter name='ss.param.vnfc-model-customization-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />

+                                                            <parameter name='ss.param.vnfc-model-customization-uuid-index' value='`$pidx`' />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='vnfc-model-invariant-uuid'>

+                                                        <set>

+                                                            <parameter name='ss.param.vnfc-model-invariant-uuid' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />

+                                                            <parameter name='ss.param.vnfc-model-invariant-uuid-index' value='`$pidx`' />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='vnfc-model-version'>

+                                                        <set>

+                                                            <parameter name='ss.param.vnfc-model-version' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />

+                                                            <parameter name='ss.param.vnfc-model-version-index' value='`$pidx`' />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='vm-type'>

+                                                        <set>

+                                                            <parameter name='ss.param.vm-type' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />

+                                                            <parameter name='ss.param.vm-type-index' value='`$pidx`' />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='vnfc-name'>

+                                                        <block atomic='true'>

+                                                            <set>

+                                                                <parameter name='ss.param.vnfc-name-unresolved-value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />

+                                                            </set>

+                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                <parameter name="source" value="`$ss.param.vnfc-name-unresolved-value`" />

+                                                                <parameter name="target" value="${"/>

+                                                                <parameter name="replacement" value=""/>

+                                                                <parameter name="outputPath" value="ss.param.vnfc-name-unresolved-value"/>

+                                                            </execute>

+                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                <parameter name="source" value="`$ss.param.vnfc-name-unresolved-value`" />

+                                                                <parameter name="target" value="}"/>

+                                                                <parameter name="replacement" value=""/>

+                                                                <parameter name="outputPath" value="ss.param.vnfc-name-unresolved-value"/>

+                                                            </execute>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="`'ss.param.vnfc-name-unresolved-value = ' + $ss.param.vnfc-name-unresolved-value`"/>

+                                                            </record>

+                                                            <block>

+                                                                <for silentFailure='true' index="x" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">

+                                                                    <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$x].name == $ss.param.vnfc-name-unresolved-value`'>

+                                                                        <outcome value='true'>

+                                                                            <block atomic='true'>

+                                                                                <set>

+                                                                                    <parameter name='ss.param.vnfc-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$x].value`' />

+                                                                                    <parameter name='ss.param.vnfc-name-index' value='`$x`' />

+                                                                                </set>

+                                                                                <return status='failure'></return>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </for>

+                                                                <return status='success'></return>

+                                                            </block>

+                                                            <switch test='`$ss.param.vnfc-name`'>

+                                                                <outcome value=''>

+                                                                    <block atomic='true'>

+                                                                        <block atomic="true">

+                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                <parameter name="logger" value="message-log"/>

+                                                                                <parameter name="field1" value="ROLLBACK: self-serve-mS-vlan-tag-assign"/>

+                                                                            </record>

+                                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                                <parameter name="source" value="`$prop.restapi.ss-mS-vlan-tag-assign`"/>

+                                                                                <parameter name="outputPath" value="tmp.ss-vlan-tag-url"/>

+                                                                                <parameter name="target" value="{action}"/>

+                                                                                <parameter name="replacement" value="unassign"/>

+                                                                            </execute>

+                                                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.mS.vlan.tag.unassign.templatefile`" />

+                                                                                <parameter name='restapiUrl' value='`$prop.vt.mS.url + $tmp.ss-vlan-tag-url`' />

+                                                                                <parameter name='restapiUser' value='`$prop.vt.mS.user`' />

+                                                                                <parameter name='restapiPassword' value='`$prop.vt.mS.pwd`' />

+                                                                                <parameter name='format' value='json' />

+                                                                                <parameter name='httpMethod' value='POST' />

+                                                                                <parameter name="responsePrefix" value="vtResp" />

+                                                                                <outcome value='failure'>

+                                                                                    <set>

+                                                                                        <parameter name="error-message" 

+	value="Failed to rollback vlan-tag from mS. vlan-tag MUST BE ROLLBACK MANUALLY!!!" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                                <outcome value='not-found'>

+                                                                                    <set>

+                                                                                        <parameter name="error-message" 

+	value="Failed to rollback vlan-tag from mS. vlan-tag MUST BE ROLLBACK MANUALLY!!!" />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                                <outcome value='success'>

+                                                                                    <switch test='`$vtResp.error-code`'>

+                                                                                        <outcome value='500'>

+                                                                                            <set>

+                                                                                                <parameter name="error-message" 

+	value="`'Received error from mS with error-code = ' + $vtResp.error-code + ' and error-message = ' + $vtResp.error-message + '; vlan-tag MUST BE ROLLBACK MANUALLY!!!'`" />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                        <outcome value='200'>

+                                                                                            <block>

+                                                                                                <for silentFailure='true' index="oidx" start="0" end="`$vtResp.output_length`">

+                                                                                                    <for silentFailure='true' index="i" start="0" end="`$ss.vt.param_length`">

+                                                                                                        <set>

+                                                                                                            <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />

+                                                                                                        </set>

+                                                                                                        <set>

+                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' 

+	value='PENDING' />

+                                                                                                        </set>

+                                                                                                    </for>

+                                                                                                </for>

+                                                                                                <set>

+                                                                                                    <parameter name="error-message" 

+	value="vlan tags were rolled back from mS successfully." />

+                                                                                                </set>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </outcome>

+                                                                            </execute>

+                                                                        </block>

+                                                                        <return status='failure'>

+                                                                            <parameter name='error-code' value='500' />

+                                                                            <parameter name='error-message' value="`'Unable to resolve vnfc-name; ' + $error-message`" />

+                                                                        </return>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </for>

+                                            <set>

+                                                <parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-type' value = '`$ss.param.vm-type`' />

+                                                <parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-invariant-uuid' value = '`$ss.param.vnfc-model-invariant-uuid`' />

+                                                <parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-customization-uuid' value = '`$ss.param.vnfc-model-customization-uuid`' />

+                                                <parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].onap-model-information.model-version' value = '`$ss.param.vnfc-model-version`' />

+                                                <parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-name' value = '`$ss.param.vnfc-name`' />

+                                            </set>

+                                            <set>

+                                                <parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length' value = '1' />

+                                                <parameter name = 'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names_length' value = '1' />

+                                            </set>

+                                            <for silentFailure='true' index="oidx" start="0" end="`$vtResp.output_length`">

+                                                <for silentFailure='true' index="vtidx" start="0" end="`$ss.vt.param_length`">

+                                                    <set>

+                                                        <parameter name='vt-index' value='`$ss.vt.param[$vtidx].index`' />

+                                                    </set>

+                                                    <switch test='`$vtResp.output[$oidx].resource-name == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].name`'>

+                                                        <outcome value='true'>

+                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >

+                                                                <parameter name='source' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].value`' />

+                                                                <parameter name='target' value='$' />

+                                                                <outcome value='true'>

+                                                                    <block atomic='true'>

+                                                                        <set>

+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].value' 

+	value='`$vtResp.output[$oidx].resource-value`' />

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' 

+	value='SUCCESS' />

+                                                                        </set>

+                                                                        <for silentFailure='true' index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key_length`">

+                                                                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key[$kidx].name`'>

+                                                                                <outcome value='vnfc-network-role'>

+                                                                                    <block atomic='true'>

+                                                                                        <set>

+                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].vnfc-network-role' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                                        </set>

+                                                                                        <call module="GENERIC-RESOURCE-API" rpc="generate-cp-instance-id" mode="sync" >

+                                                                                            <outcome value='failure'>

+                                                                                                <block atomic='true'>

+                                                                                                    <block atomic="true">

+                                                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                            <parameter name="logger" value="message-log"/>

+                                                                                                            <parameter name="field1" value="ROLLBACK: self-serve-mS-vlan-tag-assign"/>

+                                                                                                        </record>

+                                                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                                                            <parameter name="source" value="`$prop.restapi.ss-mS-vlan-tag-assign`"/>

+                                                                                                            <parameter name="outputPath" value="tmp.ss-vlan-tag-url"/>

+                                                                                                            <parameter name="target" value="{action}"/>

+                                                                                                            <parameter name="replacement" value="unassign"/>

+                                                                                                        </execute>

+                                                                                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.mS.vlan.tag.unassign.templatefile`" />

+                                                                                                            <parameter name='restapiUrl' value='`$prop.vt.mS.url + $tmp.ss-vlan-tag-url`' />

+                                                                                                            <parameter name='restapiUser' value='`$prop.vt.mS.user`' />

+                                                                                                            <parameter name='restapiPassword' value='`$prop.vt.mS.pwd`' />

+                                                                                                            <parameter name='format' value='json' />

+                                                                                                            <parameter name='httpMethod' value='POST' />

+                                                                                                            <parameter name="responsePrefix" value="vtResp" />

+                                                                                                            <outcome value='failure'>

+                                                                                                                <set>

+                                                                                                                    <parameter name="error-message" 

+	value="Failed to rollback vlan-tag from mS. vlan-tag MUST BE ROLLBACK MANUALLY!!!" />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                            <outcome value='not-found'>

+                                                                                                                <set>

+                                                                                                                    <parameter name="error-message" 

+	value="Failed to rollback vlan-tag from mS. vlan-tag MUST BE ROLLBACK MANUALLY!!!" />

+                                                                                                                </set>

+                                                                                                            </outcome>

+                                                                                                            <outcome value='success'>

+                                                                                                                <switch test='`$vtResp.error-code`'>

+                                                                                                                    <outcome value='500'>

+                                                                                                                        <set>

+                                                                                                                            <parameter name="error-message" 

+	value="`'Received error from mS with error-code = ' + $vtResp.error-code + ' and error-message = ' + $vtResp.error-message + '; vlan-tag MUST BE ROLLBACK MANUALLY!!!'`" />

+                                                                                                                        </set>

+                                                                                                                    </outcome>

+                                                                                                                    <outcome value='200'>

+                                                                                                                        <block>

+                                                                                                                            <for silentFailure='true' index="oidx" start="0" end="`$vtResp.output_length`">

+                                                                                                                                <for silentFailure='true' index="i" start="0" end="`$ss.vt.param_length`">

+                                                                                                                                    <set>

+                                                                                                                                        <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />

+                                                                                                                                    </set>

+                                                                                                                                    <set>

+                                                                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' 

+	value='PENDING' />

+                                                                                                                                    </set>

+                                                                                                                                </for>

+                                                                                                                            </for>

+                                                                                                                            <set>

+                                                                                                                                <parameter name="error-message" 

+	value="vlan tags were rolled back from mS successfully." />

+                                                                                                                            </set>

+                                                                                                                        </block>

+                                                                                                                    </outcome>

+                                                                                                                </switch>

+                                                                                                            </outcome>

+                                                                                                        </execute>

+                                                                                                    </block>

+                                                                                                    <return status='failure'>

+                                                                                                        <parameter name='error-code' value='500'/>

+                                                                                                        <parameter name='error-message' value="`'Error in generating cp-instance-id in SDNC; ' + $error-message.generate-cp-instance-id + $error-message`" />

+                                                                                                    </return>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </call>

+                                                                                        <for silentFailure='true' index="sidx" start="0" end="`$vtResp.output[$oidx].stored-elements_length`">

+                                                                                            <set>

+                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.connection-point-id' 

+	value='`$tmp.return.generate-cp-instance-id.id`' />

+                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-uuid' 

+	value='`$vtResp.output[$oidx].stored-elements[$sidx].vlan-uuid`' />

+                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-tag-id' 

+	value='`$vtResp.output[$oidx].stored-elements[$sidx].vlantag-value`' />

+                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-tag-description' 

+	value='`$vtResp.output[$oidx].stored-elements[$sidx].vlantag-name`' />

+                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-role' 

+	value='`$vtResp.output[$oidx].stored-elements[$sidx].element-vlan-role`' />

+                                                                                            </set>

+                                                                                        </for>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </for>

+                                                                    </block>

+                                                                </outcome>

+                                                                <outcome value='false'>

+                                                                    <block atomic='true'>

+                                                                        <block atomic='true'>

+                                                                            <set>

+                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].value' 

+	value='`$vtResp.output[$oidx].resource-value`' />

+                                                                            </set>

+                                                                            <set>

+                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' 

+	value='SUCCESS' />

+                                                                            </set>

+                                                                            <for silentFailure='true' index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key_length`">

+                                                                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key[$kidx].name`'>

+                                                                                    <outcome value='vnfc-network-role'>

+                                                                                        <block atomic='true'>

+                                                                                            <set>

+                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].vnfc-network-role' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.resource-key[$kidx].value`' />

+                                                                                            </set>

+                                                                                            <call module="GENERIC-RESOURCE-API" rpc="generate-cp-instance-id" mode="sync" >

+                                                                                                <outcome value='failure'>

+                                                                                                    <block atomic='true'>

+                                                                                                        <block atomic="true">

+                                                                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                                                                <parameter name="logger" value="message-log"/>

+                                                                                                                <parameter name="field1" value="ROLLBACK: self-serve-mS-vlan-tag-assign"/>

+                                                                                                            </record>

+                                                                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                                                                <parameter name="source" value="`$prop.restapi.ss-mS-vlan-tag-assign`"/>

+                                                                                                                <parameter name="outputPath" value="tmp.ss-vlan-tag-url"/>

+                                                                                                                <parameter name="target" value="{action}"/>

+                                                                                                                <parameter name="replacement" value="unassign"/>

+                                                                                                            </execute>

+                                                                                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                                                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.mS.vlan.tag.unassign.templatefile`" />

+                                                                                                                <parameter name='restapiUrl' value='`$prop.vt.mS.url + $tmp.ss-vlan-tag-url`' />

+                                                                                                                <parameter name='restapiUser' value='`$prop.vt.mS.user`' />

+                                                                                                                <parameter name='restapiPassword' value='`$prop.vt.mS.pwd`' />

+                                                                                                                <parameter name='format' value='json' />

+                                                                                                                <parameter name='httpMethod' value='POST' />

+                                                                                                                <parameter name="responsePrefix" value="vtResp" />

+                                                                                                                <outcome value='failure'>

+                                                                                                                    <set>

+                                                                                                                        <parameter name="error-message" 

+	value="Failed to rollback vlan-tag from mS. vlan-tag MUST BE ROLLBACK MANUALLY!!!" />

+                                                                                                                    </set>

+                                                                                                                </outcome>

+                                                                                                                <outcome value='not-found'>

+                                                                                                                    <set>

+                                                                                                                        <parameter name="error-message" 

+	value="Failed to rollback vlan-tag from mS. vlan-tag MUST BE ROLLBACK MANUALLY!!!" />

+                                                                                                                    </set>

+                                                                                                                </outcome>

+                                                                                                                <outcome value='success'>

+                                                                                                                    <switch test='`$vtResp.error-code`'>

+                                                                                                                        <outcome value='500'>

+                                                                                                                            <set>

+                                                                                                                                <parameter name="error-message" 

+	value="`'Received error from mS with error-code = ' + $vtResp.error-code + ' and error-message = ' + $vtResp.error-message + '; vlan-tag MUST BE ROLLBACK MANUALLY!!!'`" />

+                                                                                                                            </set>

+                                                                                                                        </outcome>

+                                                                                                                        <outcome value='200'>

+                                                                                                                            <block>

+                                                                                                                                <for silentFailure='true' index="oidx" start="0" end="`$vtResp.output_length`">

+                                                                                                                                    <for silentFailure='true' index="i" start="0" end="`$ss.vt.param_length`">

+                                                                                                                                        <set>

+                                                                                                                                            <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />

+                                                                                                                                        </set>

+                                                                                                                                        <set>

+                                                                                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' 

+	value='PENDING' />

+                                                                                                                                        </set>

+                                                                                                                                    </for>

+                                                                                                                                </for>

+                                                                                                                                <set>

+                                                                                                                                    <parameter name="error-message" 

+	value="vlan tags were rolled back from mS successfully." />

+                                                                                                                                </set>

+                                                                                                                            </block>

+                                                                                                                        </outcome>

+                                                                                                                    </switch>

+                                                                                                                </outcome>

+                                                                                                            </execute>

+                                                                                                        </block>

+                                                                                                        <return status='failure'>

+                                                                                                            <parameter name='error-code' value='500'/>

+                                                                                                            <parameter name='error-message' value="`'Error in generating cp-instance-id in SDNC; ' + $error-message.generate-cp-instance-id + $error-message`" />

+                                                                                                        </return>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </call>

+                                                                                            <for silentFailure='true' index="sidx" start="0" end="`$vtResp.output[$oidx].stored-elements_length`">

+                                                                                                <set>

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.connection-point-id' 

+	value='`$tmp.return.generate-cp-instance-id.id`' />

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-uuid' 

+	value='`$vtResp.output[$oidx].stored-elements[$sidx].vlan-uuid`' />

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-tag-id' 

+	value='`$vtResp.output[$oidx].stored-elements[$sidx].vlantag-value`' />

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-tag-description' 

+	value='`$vtResp.output[$oidx].stored-elements[$sidx].vlantag-name`' />

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data[$sidx].vlan-role' 

+	value='`$vtResp.output[$oidx].stored-elements[$sidx].element-vlan-role`' />

+                                                                                                </set>

+                                                                                            </for>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </for>

+                                                                        </block>

+                                                                        <set>

+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.capability-name' 

+	value='INPUT' />

+                                                                        </set>

+                                                                    </block>

+                                                                </outcome>

+                                                            </execute>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                            </for>

+                                            <set>

+                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data_length' 

+	value='`$ss.vt.param_length`' />

+                                            </set>

+                                            <set>

+                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[0].vm-names.vnfc-names[0].vnfc-networks.vnfc-network-data[$vtidx].connection-point.vlan-data_length' 

+	value='`$vtResp.output[$oidx].stored-elements_length`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                        </execute>

+                    </block>

+                </outcome>

+                <outcome value='unassign'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='qidx' value='0' />

+                            <parameter name='ss.vt.' value='' />

+                        </set>

+                        <for silentFailure='true' index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">

+                            <set>

+                                <parameter name='tmp.ss.param.capability-name' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />

+                            </set>

+                            <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>

+                                <outcome value='true'>

+                                    <block>

+                                        <set>

+                                            <parameter name='ss.vt.param[$qidx].index' value='`$pidx`' />

+                                        </set>

+                                        <for silentFailure='true' index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key_length`">

+                                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>

+                                                <outcome value='policy-instance-name'>

+                                                    <set>

+                                                        <parameter name='vt.request[$qidx].policy-instance-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='vlan-type'>

+                                                    <set>

+                                                        <parameter name='vt.request[$qidx].vlan-type' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='vlan-tag-key'>

+                                                    <set>

+                                                        <parameter name='vt.request[$qidx].vlan-tag-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                        <set>

+                                            <parameter name='qidx' value='`$qidx + 1`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='vt.request_length' value='`$qidx`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='ss.vt.param_length' value='`$qidx`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                            <parameter name="source" value="`$prop.restapi.ss-mS-vlan-tag-assign`"/>

+                            <parameter name="outputPath" value="tmp.ss-vlan-tag-url"/>

+                            <parameter name="target" value="{action}"/>

+                            <parameter name="replacement" value="`$ss.capability-action`"/>

+                        </execute>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.mS.vlan.tag.unassign.templatefile`" />

+                            <parameter name='restapiUrl' value='`$prop.vt.mS.url + $tmp.ss-vlan-tag-url`' />

+                            <parameter name='restapiUser' value='`$prop.vt.mS.user`' />

+                            <parameter name='restapiPassword' value='`$prop.vt.mS.pwd`' />

+                            <parameter name='format' value='json' />

+                            <parameter name='httpMethod' value='POST' />

+                            <parameter name="responsePrefix" value="vtResp" />

+                            <outcome value='failure'>

+                                <block atomic="true">

+                                    <for index="i" start="0" end="`$ss.vt.param_length`">

+                                        <set>

+                                            <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                        </set>

+                                    </for>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value="Failed to unassign vlan-tag from mS" />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic="true">

+                                    <for index="i" start="0" end="`$ss.vt.param_length`">

+                                        <set>

+                                            <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                        </set>

+                                    </for>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value="Failed to unassign vlan-tag from mS" />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='success'>

+                                <switch test='`$vtResp.error-code`'>

+                                    <outcome value='500'>

+                                        <block atomic="true">

+                                            <for index="i" start="0" end="`$ss.vt.param_length`">

+                                                <set>

+                                                    <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                                </set>

+                                            </for>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500'/>

+                                                <parameter name='error-message' value="`'Encountered error while unassigning mS-vlan-tag with error-code = ' + $vtResp.error-code + ' and error-message = ' + $vtResp.error-message`" />

+                                            </return>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='200'>

+                                        <for silentFailure='true' index="oidx" start="0" end="`$vtResp.output_length`">

+                                            <for silentFailure='true' index="i" start="0" end="`$ss.vt.param_length`">

+                                                <set>

+                                                    <parameter name='vt-index' value='`$ss.vt.param[$i].index`' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$vt-index].resource-resolution-data.status' 

+	value='DELETED' />

+                                                </set>

+                                            </for>

+                                        </for>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                        </execute>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='pathname' 

+	value="`'/var/tmp/ss-mS-vlan-tag-' + $ss.capability-action + '-' + 

+	$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.vf-module-id + '.log'`" />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='`$pathname`' />

+            </execute>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value="DONE: mS-vlan-tag-assign"/>

+            </record>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-netbox-ip-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-netbox-ip-assign.xml
new file mode 100644
index 0000000..85522cf
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-netbox-ip-assign.xml
@@ -0,0 +1,414 @@
+<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-netbox-ip-assign' 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>
+            </switch>
+            <call module='GENERIC-RESOURCE-API' rpc='self-serve-capability-param-resolution' mode='sync' >
+                <outcome value='failure'>
+                    <return status="failure">
+                        <parameter name="ack-final" value="Y" />
+                        <parameter name="error-code" value="500"/>
+                        <parameter name="error-message" value="`'Not all assignments are resolved' + $error-message`" />
+                    </return>
+                </outcome>
+            </call>
+            <switch test="`$ss.capability-type == 'vnf'`">
+                <outcome value='true'>
+                    <block>
+                        <for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >
+                            <set>
+                                <parameter name='tmp.ss.param.capability-name' 
+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />
+                            </set>
+                            <set>
+                                <parameter name='tmp.ss.param.name' 
+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].name`' />
+                            </set>
+                            <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>
+                                <outcome value='true'>
+                                    <block>
+                                        <for index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key_length`">
+                                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>
+                                                <outcome value='service-instance-id'>
+                                                    <set>
+                                                        <parameter name='tmp.ss.service-instance-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+                                                    </set>
+                                                </outcome>
+                                                <outcome value='vnf-id'>
+                                                    <set>
+                                                        <parameter name='tmp.ss.vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+                                                    </set>
+                                                </outcome>
+                                                <outcome value='prefix-id'>
+                                                    <set>
+                                                        <parameter name='tmp.ss.prefix-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+                                                    </set>
+                                                </outcome>
+                                                <outcome value='external_key'>
+                                                    <set>
+                                                        <parameter name='tmp.ss.external-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+                                                    </set>
+                                                </outcome>
+                                            </switch>
+                                        </for>
+                                        <switch test='`$ss.capability-action`'>
+                                            <outcome value='assign'>
+                                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`'>
+                                                    <outcome value='FAILED'>
+                                                        <block atomic='true'>
+                                                            <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="assignIpAddress">
+                                                                <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
+                                                                <parameter name="vf_module_id" value="`$tmp.ss.vnf-id`" />
+                                                                <parameter name="prefix_id" value="`$tmp.ss.prefix-id`" />
+                                                                <parameter name="resource_name" value="`$tmp.ss.param.name`" />
+                                                                <parameter name="external_key" value="`$tmp.ss.external-key`" />
+                                                                <outcome value='failure'>
+                                                                    <block atomic='true'>
+                                                                        <set>
+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' value='FAILED' />
+                                                                        </set>
+                                                                        <return status='failure'>
+                                                                            <parameter name='error-code' value='' />
+                                                                            <parameter name='error-message' value='' />
+                                                                        </return>
+                                                                    </block>
+                                                                </outcome>
+                                                                <outcome value='success'>
+                                                                    <block>
+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+                                                                            <parameter name="original_string" value="`$self_serve_netbox_ip_assignement.ip-address`" />
+                                                                            <parameter name="regex" value="/"/>
+                                                                            <parameter name="ctx_memory_result_key" value="ip" />
+                                                                        </execute>
+                                                                        <set>
+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].value' 
+	value='`$ip[0]`' />
+                                                                        </set>
+                                                                        <set>
+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' 
+	value='SUCCESS' />
+                                                                        </set>
+                                                                    </block>
+                                                                </outcome>
+                                                            </execute>
+                                                        </block>
+                                                    </outcome>
+                                                    <outcome value='PENDING'>
+                                                        <block atomic='true'>
+                                                            <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="assignIpAddress">
+                                                                <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
+                                                                <parameter name="vf_module_id" value="`$tmp.ss.vnf-id`" />
+                                                                <parameter name="prefix_id" value="`$tmp.ss.prefix-id`" />
+                                                                <parameter name="resource_name" value="`$tmp.ss.param.name`" />
+                                                                <parameter name="external_key" value="`$tmp.ss.external-key`" />
+                                                                <outcome value='failure'>
+                                                                    <block atomic='true'>
+                                                                        <set>
+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' value='FAILED' />
+                                                                        </set>
+                                                                        <return status='failure'>
+                                                                            <parameter name='error-code' value='' />
+                                                                            <parameter name='error-message' value='' />
+                                                                        </return>
+                                                                    </block>
+                                                                </outcome>
+                                                                <outcome value='success'>
+                                                                    <block>
+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+                                                                            <parameter name="original_string" value="`$self_serve_netbox_ip_assignement.ip-address`" />
+                                                                            <parameter name="regex" value="/"/>
+                                                                            <parameter name="ctx_memory_result_key" value="ip" />
+                                                                        </execute>
+                                                                        <set>
+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].value' 
+	value='`$ip[0]`' />
+                                                                        </set>
+                                                                        <set>
+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' 
+	value='SUCCESS' />
+                                                                        </set>
+                                                                    </block>
+                                                                </outcome>
+                                                            </execute>
+                                                        </block>
+                                                    </outcome>
+                                                </switch>
+                                            </outcome>
+                                            <outcome value='unassign'>
+                                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`'>
+                                                    <outcome value='SUCCESS'>
+                                                        <block atomic="true">
+                                                            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+	key='SELECT * from IPAM_IP_ASSIGNEMENT 
+		WHERE external_key = $tmp.ss.external-key
+		AND service_instance_id = $tmp.ss.service-instance-id' >
+                                                                <outcome value='not-found'>
+                                                                    <block></block>
+                                                                </outcome>
+                                                                <outcome value='success'>
+                                                                    <block atomic="true">
+                                                                        <set>
+                                                                            <parameter name='tmp.status' value="PENDING_DELETE" />
+                                                                        </set>
+                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+	key="UPDATE IPAM_IP_ASSIGNEMENT set ip_status = $tmp.status 
+		WHERE external_key = $tmp.ss.external-key
+		AND service_instance_id = $tmp.ss.service-instance-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 updating NETBOX_IP_ASSIGNMENTS table to unassign ip with external_key=' + $tmp.ss.external-key + ' and service_instance_id=' + $tmp.ss.service-instance-id`" />
+                                                                                </return>
+                                                                            </outcome>
+                                                                        </update>
+                                                                        <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="unassignIpAddress">
+                                                                            <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
+                                                                            <parameter name="external_key" value="`$tmp.ss.external-key`" />
+                                                                            <outcome value='failure'>
+                                                                                <return status='failure'>
+                                                                                    <parameter name='ack-final' value='Y'/>
+                                                                                    <parameter name="error-code" value="500" />
+                                                                                    <parameter name="error-message" value="`'Error in NetboxClient#unassignIPAddress with external-key='+ $tmp.ss.external-key`" />
+                                                                                </return>
+                                                                            </outcome>
+                                                                            <outcome value='success'>
+                                                                                <set>
+                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' 
+	value='DELETED' />
+                                                                                </set>
+                                                                            </outcome>
+                                                                        </execute>
+                                                                    </block>
+                                                                </outcome>
+                                                            </get-resource>
+                                                        </block>
+                                                    </outcome>
+                                                </switch>
+                                            </outcome>
+                                        </switch>
+                                    </block>
+                                </outcome>
+                            </switch>
+                        </for>
+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+                            <parameter name="logger" value="message-log"/>
+                            <parameter name="field1" value="__TIMESTAMP__"/>
+                            <parameter name="field2" value="`'SS: pidx: ' + $pidx`"/>
+                        </record>
+                    </block>
+                </outcome>
+            </switch>
+            <switch test="`$ss.capability-type == 'vf-module'`">
+                <outcome value='true'>
+                    <block>
+                        <for index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">
+                            <set>
+                                <parameter name='tmp.ss.param.capability-name' 
+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />
+                            </set>
+                            <set>
+                                <parameter name='tmp.ss.param.name' 
+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name`' />
+                            </set>
+                            <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>
+                                <outcome value='true'>
+                                    <block>
+                                        <for index="kidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key_length`">
+                                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].name`'>
+                                                <outcome value='service-instance-id'>
+                                                    <set>
+                                                        <parameter name='tmp.ss.service-instance-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+                                                    </set>
+                                                </outcome>
+                                                <outcome value='vf-module-id'>
+                                                    <set>
+                                                        <parameter name='tmp.ss.vf-module-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+                                                    </set>
+                                                </outcome>
+                                                <outcome value='prefix-id'>
+                                                    <set>
+                                                        <parameter name='tmp.ss.prefix-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+                                                    </set>
+                                                </outcome>
+                                                <outcome value='ip-address-id'>
+                                                    <set>
+                                                        <parameter name='tmp.ss.ip-address-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+                                                    </set>
+                                                </outcome>
+                                                <outcome value='external_key'>
+                                                    <set>
+                                                        <parameter name='tmp.ss.external-key' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.resource-key[$kidx].value`' />
+                                                    </set>
+                                                </outcome>
+                                            </switch>
+                                        </for>
+                                        <switch test='`$ss.capability-action`'>
+                                            <outcome value='assign'>
+                                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`'>
+                                                    <outcome value='FAILED'>
+                                                        <block atomic='true'>
+                                                            <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="assignIpAddress">
+                                                                <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
+                                                                <parameter name="vf_module_id" value="`$tmp.ss.vf-module-id`" />
+                                                                <parameter name="prefix_id" value="`$tmp.ss.prefix-id`" />
+                                                                <parameter name="resource_name" value="`$tmp.ss.param.name`" />
+                                                                <parameter name="external_key" value="`$tmp.ss.external-key`" />
+                                                                <outcome value='failure'>
+                                                                    <block atomic='true'>
+                                                                        <set>
+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' value='FAILED' />
+                                                                        </set>
+                                                                        <return status='failure'>
+                                                                            <parameter name='error-code' value='' />
+                                                                            <parameter name='error-message' value='' />
+                                                                        </return>
+                                                                    </block>
+                                                                </outcome>
+                                                                <outcome value='success'>
+                                                                    <block>
+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+                                                                            <parameter name="original_string" value="`$self_serve_netbox_ip_assignement.ip-address`" />
+                                                                            <parameter name="regex" value="/"/>
+                                                                            <parameter name="ctx_memory_result_key" value="ip" />
+                                                                        </execute>
+                                                                        <set>
+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value' 
+	value='`$ip[0]`' />
+                                                                        </set>
+                                                                        <set>
+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' 
+	value='SUCCESS' />
+                                                                        </set>
+                                                                    </block>
+                                                                </outcome>
+                                                            </execute>
+                                                        </block>
+                                                    </outcome>
+                                                    <outcome value='PENDING'>
+                                                        <block atomic='true'>
+                                                            <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="assignIpAddress">
+                                                                <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
+                                                                <parameter name="vf_module_id" value="`$tmp.ss.vf-module-id`" />
+                                                                <parameter name="prefix_id" value="`$tmp.ss.prefix-id`" />
+                                                                <parameter name="resource_name" value="`$tmp.ss.param.name`" />
+                                                                <parameter name="external_key" value="`$tmp.ss.external-key`" />
+                                                                <outcome value='failure'>
+                                                                    <block atomic='true'>
+                                                                        <set>
+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' value='FAILED' />
+                                                                        </set>
+                                                                        <return status='failure'>
+                                                                            <parameter name='error-code' value='' />
+                                                                            <parameter name='error-message' value='' />
+                                                                        </return>
+                                                                    </block>
+                                                                </outcome>
+                                                                <outcome value='success'>
+                                                                    <block>
+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
+                                                                            <parameter name="original_string" value="`$self_serve_netbox_ip_assignement.ip-address`" />
+                                                                            <parameter name="regex" value="/"/>
+                                                                            <parameter name="ctx_memory_result_key" value="ip" />
+                                                                        </execute>
+                                                                        <set>
+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value' 
+	value='`$ip[0]`' />
+                                                                        </set>
+                                                                        <set>
+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' 
+	value='SUCCESS' />
+                                                                        </set>
+                                                                    </block>
+                                                                </outcome>
+                                                            </execute>
+                                                        </block>
+                                                    </outcome>
+                                                </switch>
+                                            </outcome>
+                                            <outcome value='unassign'>
+                                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`'>
+                                                    <outcome value='SUCCESS'>
+                                                        <block atomic="true">
+                                                            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+	key='SELECT * from IPAM_IP_ASSIGNEMENT 
+		WHERE external_key = $tmp.ss.external-key
+		AND service_instance_id = $tmp.ss.service-instance-id' >
+                                                                <outcome value='not-found'>
+                                                                    <block></block>
+                                                                </outcome>
+                                                                <outcome value='success'>
+                                                                    <block atomic="true">
+                                                                        <set>
+                                                                            <parameter name='tmp.status' value="PENDING_DELETE" />
+                                                                        </set>
+                                                                        <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
+	key="UPDATE IPAM_IP_ASSIGNEMENT set ip_status = $tmp.status 
+		WHERE external_key = $tmp.ss.external-key
+		AND service_instance_id = $tmp.ss.service-instance-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 updating NETBOX_IP_ASSIGNMENTS table to unassign ip with external_key=' + $tmp.ss.external-key + ' and service_instance_id=' + $tmp.ss.service-instance-id`" />
+                                                                                </return>
+                                                                            </outcome>
+                                                                        </update>
+                                                                        <execute plugin="org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient" method="unassignIpAddress">
+                                                                            <parameter name="service_instance_id" value="`$tmp.ss.service-instance-id`" />
+                                                                            <parameter name="external_key" value="`$tmp.ss.external-key`" />
+                                                                            <outcome value='failure'>
+                                                                                <return status='failure'>
+                                                                                    <parameter name='ack-final' value='Y'/>
+                                                                                    <parameter name="error-code" value="500" />
+                                                                                    <parameter name="error-message" value="`'Error in NetboxClient#unassignIPAddress with external-key='+ $tmp.ss.external-key`" />
+                                                                                </return>
+                                                                            </outcome>
+                                                                            <outcome value='success'>
+                                                                                <set>
+                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' 
+	value='DELETED' />
+                                                                                </set>
+                                                                            </outcome>
+                                                                        </execute>
+                                                                    </block>
+                                                                </outcome>
+                                                            </get-resource>
+                                                        </block>
+                                                    </outcome>
+                                                </switch>
+                                            </outcome>
+                                        </switch>
+                                    </block>
+                                </outcome>
+                            </switch>
+                        </for>
+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+                            <parameter name="logger" value="message-log"/>
+                            <parameter name="field1" value="__TIMESTAMP__"/>
+                            <parameter name="field2" value="`'SS: pidx: ' + $pidx`"/>
+                        </record>
+                    </block>
+                </outcome>
+            </switch>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-pnf-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-pnf-assign.xml
new file mode 100644
index 0000000..55d851c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-pnf-assign.xml
@@ -0,0 +1,400 @@
+<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-pnf-assign' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='is-new-pnf' value='true' />

+            </set>

+            <switch test='`$service-data.pnfs.pnf_length`'>

+                <outcome value=''>

+                    <block>

+                        <set>

+                            <parameter name='pnf-index' value='0' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.pnfs.pnf_length' value='1' />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='0'>

+                    <block>

+                        <set>

+                            <parameter name='pnf-index' value='0' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.pnfs.pnf_length' value='1' />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <for index='idx' start='0' end='`$service-data.pnfs.pnf_length`' >

+                            <switch test='`$pf-topology-operation-input.pnf-details.pnf-id == $service-data.pnfs.pnf[$idx].pnf-id`'>

+                                <outcome value='true'>

+                                    <block>

+                                        <set>

+                                            <parameter name='is-new-pnf' value='false' />

+                                        </set>

+                                        <set>

+                                            <parameter name='pnf-index' value='`$idx`' />

+                                        </set>

+                                        <break/>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$is-new-pnf`'>

+                            <outcome value='true'>

+                                <block>

+                                    <set>

+                                        <parameter name='pnf-index' value='`$service-data.pnfs.pnf_length`' />

+                                    </set>

+                                    <set>

+                                        <parameter name='service-data.pnfs.pnf_length' value='`$service-data.pnfs.pnf_length + 1`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$is-new-pnf`'>

+                <outcome value='true'>

+                    <block>

+                        <set>

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-id'

+ value='`$pnf-topology-operation-input.pnf-details.pnf-id`' />

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-type'

+ value='`$pnf-topology-operation-input.pnf-details.pnf-type`' />

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.tenant'

+ value='`$pnf-topology-operation-input.pnf-request-input.tenant`' />

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.aic-cloud-region'

+ value='`$pnf-topology-operation-input.pnf-request-input.aic-cloud-region`' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-id'

+   value='`$pnf-topology-operation-input.pnf-details.pnf-id`' />

+                        </set>

+                        <switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-invariant-uuid`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-invariant-uuid'

+  value='`$db.pnf-model.invariant-uuid`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-invariant-uuid'

+  value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-invariant-uuid`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-uuid`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-uuid'

+  value='`$db.pnf-model.uuid`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-uuid'

+  value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-uuid`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-version`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-version'

+  value='`$db.pnf-model.version`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-version'

+  value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-version`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-name`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-name'

+  value='`$db.pnf-model.name`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-name'

+  value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-name`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.onap-model-information.model-customization-uuid' 

+  value='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid`' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.'

+        value='$pnf-topology-operation-input.sdnc-request-header.' />

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.'

+        value='$pnf-topology-operation-input.request-information.' />

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.'

+        value='$pnf-topology-operation-input.service-information.' />

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.'

+        value='$pnf-topology-operation-input.pnf-details.' />

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.'

+        value='$pnf-topology-operation-input.pnf-request-input.' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.order-status' value='PendingCreate' />

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-rpc-action' value='`$pnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.last-action' value='`$pnf-topology-operation-input.request-information.request-action`' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='ss.capability.execution-order[0]' value='aai-get' />

+                <parameter name='ss.capability.execution-order[1]' value='generate-name' />

+                <parameter name='ss.capability.execution-order[2]' value='alts-entitlement-assign' />

+                <parameter name='ss.capability.execution-order[3]' value='alts-license-assign' />

+                <parameter name='ss.capability.execution-order[4]' value='vlan-tag-assign' />

+                <parameter name='ss.capability.execution-order[5]' value='mS-vlan-tag-assign' />

+                <parameter name='ss.capability.execution-order[6]' value='eipam-ip-assignment' />

+                <parameter name='ss.capability.execution-order[7]' value='eipam-create-pool' />

+                <parameter name='ss.capability.execution-order[8]' value='netbox-ip-assign' />

+                <parameter name='ss.capability.execution-order[9]' value='mac-address-assign' />

+                <parameter name='ss.capability.execution-order[10]' value='mS-mac-address-assign' />

+                <parameter name='ss.capability.execution-order[11]' value='create-vpe-pool' />

+                <parameter name='ss.capability.execution-order[12]' value='unresolved-composite-data' />

+                <parameter name='ss.capability.execution-order[13]' value='aai-pnf-put' />

+                <parameter name='ss.capability.execution-order_length' value='14' />

+            </set>

+            <set>

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.sdnc-generated-cloud-resources' value='true' />

+            </set>

+            <set>

+                <parameter name='ss.capability-type' value='pnf' />

+            </set>

+            <switch test='`$prop.controller.user`'>

+                <outcome value=''>

+                    <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>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`'>

+                <outcome value=''>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.'

+  value='pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.' />

+                        </set>

+                        <call module='GENERIC-RESOURCE-API' rpc='self-serve-pnf-ra-assignment' mode='sync' >

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="`'Failed to get RA assignments: ' + $error-message`" />

+                                </return>

+                            </outcome>

+                        </call>

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="DONE with pnf-ra-assigment"/>

+                        </record>

+                    </block>

+                </outcome>

+            </switch>

+            <for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >

+                <set>

+                    <parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />

+                    <!--

+ss.capability.execution-order[]

+-->

+                </set>

+                <set>

+                    <parameter name='ss.capability-action' value='assign' />

+                </set>

+                <set>

+                    <parameter name='ss.capability-dg' value="`'self-serve-' + $ss.capability.execution-order[$cidx]`" />

+                </set>

+                <for index='pidx' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' >

+                    <set>

+                        <parameter name='tmp.param.capability-name' 

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />

+                    </set>

+                    <switch test='`$ss.capability-name == $tmp.param.capability-name`'>

+                        <outcome value='true'>

+                            <block atomic='true'>

+                                <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$pidx].resource-resolution-data.status`'>

+                                    <outcome value='PENDING'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='pf.pnf-id'

+    value='`$service-data.pnfs.pnf[$pnf-index].pnf-id`' />

+                                                        <parameter name='pf.pnf-data.sdnc-request-header.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.`' />

+                                                        <parameter name='pf.pnf-data.request-information.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.`' />

+                                                        <parameter name='pf.pnf-data.service-information.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.`' />

+                                                        <parameter name='pf.pnf-data.pnf-details.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.`' />

+                                                        <parameter name='pf.pnf-data.pnf-topology.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.`' />

+                                                        <parameter name='pf.pnf-data.pnf-level-oper-status.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.`' />

+                                                        <parameter name='pf.pnf-data.pnf-request-input.pnf-input-parameters.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.pnf-input-parameters.`' />

+                                                        <parameter name='pf.pnf-data.pnf-request-input.request-version'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.request-version`' />

+                                                        <parameter name='pf.pnf-data.pnf-request-input.pnf-name'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.pnf-name`' />

+                                                        <parameter name='pf.pnf-data.pnf-request-input.tenant'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.tenant`' />

+                                                        <parameter name='pf.pnf-data.pnf-request-input.aic-cloud-region'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.aic-cloud-region`' />

+                                                        <parameter name='pf.pnf-data.pnf-request-input.aic-clli'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.aic-clli`' />

+                                                    </set>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                        <parameter name="source" value="`$prop.restapi.ss-pnf-assignments`"/>

+                                                        <parameter name="outputPath" value="tmp.ss-pnf-url"/>

+                                                        <parameter name="target" value="{service-instance-id}"/>

+                                                        <parameter name="replacement" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.service-instance-id`"/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                        <parameter name="source" value="`$tmp.ss-pnf-url`"/>

+                                                        <parameter name="outputPath" value="tmp.ss-pnf-url"/>

+                                                        <parameter name="target" value="{pnf-id}"/>

+                                                        <parameter name="replacement" value="`$service-data.pnfs.pnf[$pnf-index].pnf-id`"/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.pnf.templatefile`" />

+                                                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-pnf-url`' />

+                                                        <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                        <parameter name='format' value='json' />

+                                                        <parameter name='httpMethod' value='PUT' />

+                                                        <parameter name="responsePrefix" value="mdsal-ss-pnf" />

+                                                        <outcome value='failure'>

+                                                            <set>

+                                                                <parameter name="error-message" value="Failed to persist self-serve pnf assignments during assign in MD-SAL" />

+                                                            </set>

+                                                        </outcome>

+                                                        <outcome value='not-found'>

+                                                            <set>

+                                                                <parameter name="error-message" value="Failed to persist self-serve pnf assignments during assign in MD-SAL" />

+                                                            </set>

+                                                        </outcome>

+                                                    </execute>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`'Encountered error from capability: '+ $ss.capability-dg + ', with error: '+ $error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="`'EXECUTION DONE: ' + $ss.capability-dg`"/>

+                                                </record>

+                                            </outcome>

+                                        </call>

+                                    </outcome>

+                                    <outcome value='FAILED'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='pf.pnf-id'

+    value='`$service-data.pnfs.pnf[$pnf-index].pnf-id`' />

+                                                        <parameter name='pf.pnf-data.sdnc-request-header.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.`' />

+                                                        <parameter name='pf.pnf-data.request-information.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.`' />

+                                                        <parameter name='pf.pnf-data.service-information.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.`' />

+                                                        <parameter name='pf.pnf-data.pnf-details.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.`' />

+                                                        <parameter name='pf.pnf-data.pnf-topology.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.`' />

+                                                        <parameter name='pf.pnf-data.pnf-level-oper-status.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.`' />

+                                                        <parameter name='pf.pnf-data.pnf-request-input.pnf-input-parameters.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.pnf-input-parameters.`' />

+                                                        <parameter name='pf.pnf-data.pnf-request-input.request-version'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.request-version`' />

+                                                        <parameter name='pf.pnf-data.pnf-request-input.pnf-name'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.pnf-name`' />

+                                                        <parameter name='pf.pnf-data.pnf-request-input.tenant'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.tenant`' />

+                                                        <parameter name='pf.pnf-data.pnf-request-input.aic-cloud-region'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.aic-cloud-region`' />

+                                                        <parameter name='pf.pnf-data.pnf-request-input.aic-clli'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.aic-clli`' />

+                                                    </set>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                        <parameter name="source" value="`$prop.restapi.ss-pnf-assignments`"/>

+                                                        <parameter name="outputPath" value="tmp.ss-pnf-url"/>

+                                                        <parameter name="target" value="{service-instance-id}"/>

+                                                        <parameter name="replacement" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.service-instance-id`"/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                        <parameter name="source" value="`$tmp.ss-pnf-url`"/>

+                                                        <parameter name="outputPath" value="tmp.ss-pnf-url"/>

+                                                        <parameter name="target" value="{pnf-id}"/>

+                                                        <parameter name="replacement" value="`$service-data.pnfs.pnf[$pnf-index].pnf-id`"/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.pnf.templatefile`" />

+                                                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-pnf-url`' />

+                                                        <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                        <parameter name='format' value='json' />

+                                                        <parameter name='httpMethod' value='PUT' />

+                                                        <parameter name="responsePrefix" value="mdsal-ss-pnf" />

+                                                        <outcome value='failure'>

+                                                            <set>

+                                                                <parameter name="error-message" value="Failed to persist self-serve pnf assignments during assign in MD-SAL" />

+                                                            </set>

+                                                        </outcome>

+                                                        <outcome value='not-found'>

+                                                            <set>

+                                                                <parameter name="error-message" value="Failed to persist self-serve pnf assignments during assign in MD-SAL" />

+                                                            </set>

+                                                        </outcome>

+                                                    </execute>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`'Encountered error from capability: '+ $ss.capability-dg + ', with error: '+ $error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="`'EXECUTION DONE: ' + $ss.capability-dg`"/>

+                                                </record>

+                                            </outcome>

+                                        </call>

+                                    </outcome>

+                                </switch>

+                                <break/>

+                            </block>

+                        </outcome>

+                    </switch>

+                </for>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/ss-pnf-assign.log' />

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-pnf-generate-name.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-pnf-generate-name.xml
new file mode 100644
index 0000000..bded0cb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-pnf-generate-name.xml
@@ -0,0 +1,233 @@
+<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-pnf-generate-name' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='pathname' 

+	value="`'/var/tmp/ss-gen-name-' + 

+	$ss.capability-type + '-' + $ss.capability-action + '-' + 

+	$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.pnf-id + '.log'`" />

+            </set>

+            <switch test="`$ss.capability-action`">

+                <outcome value='unassign'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />

+                        </set>

+                        <for index='i' 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[$i].resource-resolution-data.capability-name == $ss.capability-name`'>

+                                <outcome value='true'>

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '{'`" />

+                                            <parameter name='tmp.gen-name_length' value='1' />

+                                        </set>

+                                        <for index='j' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >

+                                            <switch test="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name == 'external-key'`">

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name="tmp.naming-data-payload" value="`$tmp.naming-data-payload + '&quot;' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`"/>

+                                                        <parameter name="`tmp.gen-name[0].element[$j].name`" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name`"/>

+                                                        <parameter name="`tmp.gen-name[0].element[$j].value`" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`"/>

+                                                        <parameter name="`tmp.gen-name[0].element_length`" value='`$j + 1`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '},'`" />

+                                        </set>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + ']}'`" />

+                                        </set>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>

+                                            <parameter name='outputPath' value='tmp.naming-data-payload' />

+                                            <parameter name='source' value='`$tmp.naming-data-payload`' />

+                                            <parameter name='target' value=',}' />

+                                            <parameter name='replacement' value='}' />

+                                        </execute>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>

+                                            <parameter name='outputPath' value='tmp.naming-data-payload' />

+                                            <parameter name='source' value='`$tmp.naming-data-payload`' />

+                                            <parameter name='target' value=',]' />

+                                            <parameter name='replacement' value=']' />

+                                        </execute>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="BEFORE namegeneration.node.UnAssignNameNode"/>

+                                        </record>

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`" />

+                                            <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />

+                                            <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />

+                                            <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />

+                                            <parameter name='format' value='json' />

+                                            <parameter name='httpMethod' value='DELETE' />

+                                            <parameter name="responsePrefix" value="nameGenResponse" />

+                                            <outcome value='failure'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />

+                                                    </set>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="Error from NameGenerationNode Unassign" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />

+                                                    </set>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="Error from NameGenerationNode Unassign" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                        </execute>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="AFTER namegeneration.node.UnAssignNameNode"/>

+                                        </record>

+                                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">

+                                            <parameter name="source" value="nameGenResponse.httpResponse" />

+                                            <parameter name="outputPath" value="jsonContextPrefix" />

+                                            <parameter name="isEscaped" value="false" />

+                                        </execute>

+                                        <set>

+                                            <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.status`' value='DELETED' />

+                                        </set>

+                                        <for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >

+                                            <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].name == $jsonContextPrefix.elements[$n].resource-name`'>

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].value`' value="`$jsonContextPrefix.elements[$n].resource-value`" />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+                <outcome value='assign'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />

+                            <parameter name='tmp.gen-name_length' value='0' />

+                        </set>

+                        <for index='i' 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[$i].resource-resolution-data.capability-name == $ss.capability-name`'>

+                                <outcome value='true'>

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '{'`" />

+                                        </set>

+                                        <for index='j' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >

+                                            <set>

+                                                <parameter name="tmp.naming-data-payload" value="`$tmp.naming-data-payload + '&quot;' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`"/>

+                                                <parameter name="`tmp.gen-name[$tmp.gen-name_length].element[$j].name`" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name`"/>

+                                                <parameter name="`tmp.gen-name[$tmp.gen-name_length].element[$j].value`" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`"/>

+                                                <parameter name="`tmp.gen-name[$tmp.gen-name_length].element_length`" value='`$j + 1`' />

+                                            </set>

+                                        </for>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '},'`" />

+                                            <parameter name='tmp.gen-name_length' value='`$tmp.gen-name_length + 1`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test="`$tmp.naming-data-payload == ''`">

+                            <outcome value='false'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + ']}'`" />

+                                    </set>

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>

+                                        <parameter name='outputPath' value='tmp.naming-data-payload' />

+                                        <parameter name='source' value='`$tmp.naming-data-payload`' />

+                                        <parameter name='target' value=',}' />

+                                        <parameter name='replacement' value='}' />

+                                    </execute>

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>

+                                        <parameter name='outputPath' value='tmp.naming-data-payload' />

+                                        <parameter name='source' value='`$tmp.naming-data-payload`' />

+                                        <parameter name='target' value=',]' />

+                                        <parameter name='replacement' value=']' />

+                                    </execute>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="BEFORE namegeneration.node.AssignNameNode"/>

+                                    </record>

+                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`" />

+                                        <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />

+                                        <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />

+                                        <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />

+                                        <parameter name='format' value='json' />

+                                        <parameter name='httpMethod' value='POST' />

+                                        <parameter name="responsePrefix" value="nameGenResponse" />

+                                        <outcome value='failure'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />

+                                                </set>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="Error from NameGenerationNode Assign" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='not-found'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />

+                                                </set>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="Error from NameGenerationNode Assign" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                    </execute>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="AFTER namegeneration.node.AssignNameNode"/>

+                                    </record>

+                                    <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">

+                                        <parameter name="source" value="nameGenResponse.httpResponse" />

+                                        <parameter name="outputPath" value="jsonContextPrefix" />

+                                        <parameter name="isEscaped" value="false" />

+                                    </execute>

+                                    <for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >

+                                        <for index='l' 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[$l].name == $jsonContextPrefix.elements[$n].resource-name`'>

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$l].value`' value="`$jsonContextPrefix.elements[$n].resource-value`" />

+                                                        <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$l].resource-resolution-data.status`' value='SUCCESS' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-pnf-ra-assignment.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-pnf-ra-assignment.xml
new file mode 100644
index 0000000..cff4d49
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-pnf-ra-assignment.xml
@@ -0,0 +1,235 @@
+<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-pnf-ra-assignment' mode='sync'>

+        <block atomic="true">

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                <parameter name="ctx-destination" value="tmp.return.generate.pnf-se-serv-uuid" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="generateUUID is failed" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name="cds" value="execution-service_process."/>

+                <parameter name="`$cds + 'commonHeader.requestId'`" value="`$tmp.return.generate.pnf-se-serv-uuid`"/>

+                <parameter name="resource-type" value="`$pnf-topology-operation-input.pnf-details.pnf-type`" />

+                <parameter name="`$cds + 'commonHeader.subRequestId'`" value="`$pnf-topology-operation-input.pnf-details.pnf-id`" />

+                <parameter name="`$cds + 'actionIdentifiers.actionName'`" value="resource-assignment"/>

+                <parameter name="responsePrefix" value="raAssign" />

+                <parameter name="`$cds + 'isNonAppend'`" value="true"/>

+                <parameter name="`$cds + 'commonHeader.originatorId'`" value="SDNC_DG"/>

+                <parameter name="`$cds + 'actionIdentifiers.mode'`" value="sync"/>

+            </set>

+            <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='highnum' value='0' />

+                        <parameter name='prehighnum' value='0'/>

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='highnum' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' />

+                        <parameter name='prehighnum' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' />

+                    </set>

+                </outcome>

+            </switch>

+            <for silentFailure='true' index='i' start='0' end='`$pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param_length`' >

+                <block atomic="true">

+                    <switch test='`$pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param[$i].name`'>

+                        <outcome value='sdnc_model_name'>

+                            <set>

+                                <parameter name='tmp.sdnc-model-name' value='`$pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param[$i].value`' />

+                            </set>

+                        </outcome>

+                        <outcome value='sdnc_model_version'>

+                            <set>

+                                <parameter name='tmp.sdnc-model-version' value='`$pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param[$i].value`' />

+                            </set>

+                        </outcome>

+                        <outcome value='sdnc_artifact_name'>

+                            <set>

+                                <parameter name='tmp.sdnc-artifact-name' value='`$pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param[$i].value`' />

+                            </set>

+                        </outcome>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name="tmp.config-name-value-other-payload" value="`$tmp.config-name-value-other-payload + '&quot;' + $pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param[$i].name + '&quot;:&quot;' + $pnf-topology-operation-input.pnf-request-input.pnf-input-parameters.param[$i].value + '&quot;,'`"/>

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <switch test="`$tmp.sdnc-model-name == '' or $tmp.sdnc-model-version == '' or $tmp.sdnc-artifact-name == ''`">

+                <outcome value='true'>

+                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODEL WHERE customization_uuid = $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid'

+  pfx='db1.vf-model'>

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="Error reading VF_MODEL table" />

+                            </return>

+                        </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="`'No VF_MODEL found where customization_uuid = ' + $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid`" />

+                            </return>

+                        </outcome>

+                        <outcome value='success'>

+                            <set>

+                                <parameter name='tmp.sdnc-model-name' value='`$db1.vf-model.sdnc-model-name`' />

+                                <parameter name='tmp.sdnc-model-version' value='`$db1.vf-model.sdnc-model-version`' />

+                                <parameter name='tmp.sdnc-artifact-name' value='`$db1.vf-model.sdnc-artifact-name`' />

+                            </set>

+                        </outcome>

+                    </get-resource>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="tmp.config-name-value-payload4" value="`$tmp.config-name-value-other-payload + '&quot;service-instance-id&quot;:&quot;' + $pnf-topology-operation-input.service-information.service-instance-id   + '&quot;,'`"/>

+                <parameter name="tmp.config-name-value-payload5" value="`$tmp.config-name-value-payload4 + '&quot;pnf-model-customization-uuid&quot;:&quot;' + $pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid + '&quot;,'`"/>

+                <parameter name="tmp.config-name-value-payload6" value="`$tmp.config-name-value-payload5 + '&quot;pnf-id&quot;:&quot;' + $pnf-topology-operation-input.pnf-details.pnf-id + '&quot;,'`"/>

+                <parameter name="tmp.config-name-value-payload7" value="`$tmp.config-name-value-payload6 + '&quot;aic-cloud-region&quot;:&quot;' + $pnf-topology-operation-input.pnf-request-input.aic-cloud-region + '&quot;'`"/>

+            </set>

+            <set>

+                <parameter name="tmp.json-payload" value="`'{' + $tmp.config-name-value-payload7 + '}'`" />

+                <parameter name="`$cds + 'actionIdentifiers.blueprintName'`" value='`$tmp.sdnc-model-name`' />

+                <parameter name="`$cds + 'actionIdentifiers.blueprintVersion'`" value='`$tmp.sdnc-model-version`' />

+                <parameter name="`$cds + 'payload.resource-assignment-request.template-prefix[0]'`" value='`$tmp.sdnc-artifact-name`' />

+                <parameter name="`$cds + 'payload.resource-assignment-request.resource-assignment-properties'`" value='`$tmp.json-payload`' />

+            </set>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value="BEFORE BlueprintProcessingClient"/>

+            </record>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value="`$prop.cds.url + '/api/v1/execution-service/process'`" />

+                <parameter name='restapiUser' value='`$prop.cds.user`' />

+                <parameter name='restapiPassword' value='`$prop.cds.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='POST' />

+                <parameter name='dirPath' value="/opt/onap/sdnc/restconfapi/yang" />

+                <parameter name="responsePrefix" value="`$responsePrefix`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error from BlueprintProcessingClient" />

+                    </return>

+                </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="Error from BlueprintProcessingClient" />

+                    </return>

+                </outcome>

+            </execute>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value="AFTER BlueprintProcessingClient"/>

+            </record>

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">

+                <parameter name="source" value="`'raAssign.payload.resource-assignment-response.meshed-template.' + $tmp.sdnc-artifact-name`" />

+                <parameter name="outputPath" value="jsonContextPrefix" />

+                <parameter name="isEscaped" value="false" />

+            </execute>

+            <for silentFailure='true'  index='i' start='0' end='`$jsonContextPrefix.resource-accumulator-resolved-data_length`' >

+                <block atomic="true">

+                    <set>

+                        <parameter name='tmp.mso.param.found' value='false' />

+                    </set>

+                    <switch test='`$prehighnum &gt; 0`'>

+                        <outcome value='true'>

+                            <for silentFailure='true' index='cnt' 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[$cnt].name == $jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'>

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$cnt].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>

+                                            <parameter name='tmp.mso.param.found' value='true' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                            </for>

+                        </outcome>

+                    </switch>

+                    <switch test='`$tmp.mso.param.found`'>

+                        <outcome value='false'>

+                            <block atomic='true'>

+                                <set>

+                                    <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].name`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'/>

+                                    <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>

+                                    <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.capability-name`' value='RA Resolved'/>

+                                    <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.status`' value='SUCCESS'/>

+                                </set>

+                                <set>

+                                    <parameter name='highnum' value='`$highnum + 1`' />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <for silentFailure='true' index='i' start='0' end='`$jsonContextPrefix.capability-data_length`' >

+                <for silentFailure='true' index='j' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping_length`' >

+                    <for silentFailure='true' index='l' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping_length`' >

+                        <block atomic="true">

+                            <set>

+                                <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-name`'/>

+                                <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-value`'/>

+                                <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.capability-name`' value='`$jsonContextPrefix.capability-data[$i].capability-name`'/>

+                                <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.status`' value='PENDING'/>

+                                <parameter name='num' value='0' />

+                            </set>

+                            <switch test="`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length == ''`">

+                                <outcome value='true'></outcome>

+                                <outcome value='false'>

+                                    <for silentFailure='true' index='k' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length`' >

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.resource-key[$num].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-name`'/>

+                                                <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.resource-key[$num].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-value`'/>

+                                            </set>

+                                            <set>

+                                                <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$highnum].resource-resolution-data.resource-key_length`' value='`$num + 1`'/>

+                                            </set>

+                                            <set>

+                                                <parameter name='num' value='`$num + 1`' />

+                                            </set>

+                                        </block>

+                                    </for>

+                                </outcome>

+                            </switch>

+                            <set>

+                                <parameter name='`service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' value='`$highnum + 1`'/>

+                            </set>

+                            <set>

+                                <parameter name='highnum' value='`$highnum + 1`' />

+                            </set>

+                        </block>

+                    </for>

+                </for>

+            </for>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value="DONE: pnf-ra-assignment"/>

+            </record>

+            <set>

+                <parameter name='pathname' 

+	value="`'/var/tmp/ss-pnf-ra-assignment-' + 

+	$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.pnf-id + '.log'`" />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='`$pathname`' />

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-pnf-unassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-pnf-unassign.xml
new file mode 100644
index 0000000..2fc4a3a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-pnf-unassign.xml
@@ -0,0 +1,143 @@
+<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-pnf-unassign' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='ss.capability.execution-order[0]' value='mS-mac-address-assign' />

+                <parameter name='ss.capability.execution-order[1]' value='mac-address-assign' />

+                <parameter name='ss.capability.execution-order[2]' value='netbox-ip-assign' />

+                <parameter name='ss.capability.execution-order[3]' value='eipam-ip-assignment' />

+                <parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />

+                <parameter name='ss.capability.execution-order[5]' value='vlan-tag-assign' />

+                <parameter name='ss.capability.execution-order[6]' value='alts-license-assign' />

+                <parameter name='ss.capability.execution-order[7]' value='alts-entitlement-assign' />

+                <parameter name='ss.capability.execution-order[8]' value='generate-name' />

+                <parameter name='ss.capability.execution-order_length' value='9' />

+            </set>

+            <set>

+                <parameter name='ss.capability-type' value='pnf' />

+            </set>

+            <switch test='`$prop.controller.user`'>

+                <outcome value=''>

+                    <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>

+                </outcome>

+            </switch>

+            <for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >

+                <set>

+                    <parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />

+                    <!--

+ss.capability.execution-order[]

+-->

+                </set>

+                <set>

+                    <parameter name='ss.capability-action' value='unassign' />

+                </set>

+                <set>

+                    <parameter name='ss.capability-dg' value="`'self-serve-' + $ss.capability.execution-order[$cidx]`" />

+                </set>

+                <for index='pidx' start='0' end='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`' >

+                    <set>

+                        <parameter name='tmp.param.capability-name' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />

+                    </set>

+                    <switch test='`$ss.capability-name == $tmp.param.capability-name`'>

+                        <outcome value='true'>

+                            <block atomic='true'>

+                                <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$pidx].resource-resolution-data.status`'>

+                                    <outcome value='SUCCESS'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='vf.pnf-id'

+    value='`$service-data.pnfs.pnf[$pnf-index].pnf-id`' />

+                                                        <parameter name='vf.pnf-data.sdnc-request-header.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.sdnc-request-header.`' />

+                                                        <parameter name='vf.pnf-data.request-information.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.request-information.`' />

+                                                        <parameter name='vf.pnf-data.service-information.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.`' />

+                                                        <parameter name='vf.pnf-data.pnf-information.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.`' />

+                                                        <parameter name='vf.pnf-data.pnf-request-input.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.`' />

+                                                        <parameter name='vf.pnf-data.pnf-request-input.pnf-input-parameters.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-request-input.pnf-input-parameters.`' />

+                                                        <parameter name='vf.pnf-data.pnf-topology.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.`' />

+                                                        <parameter name='vf.pnf-data.pnf-level-oper-status.'

+  value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-level-oper-status.`' />

+                                                    </set>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                        <parameter name="source" value="`$prop.restapi.ss-pnf-assignments`"/>

+                                                        <parameter name="outputPath" value="tmp.ss-pnf-url"/>

+                                                        <parameter name="target" value="{service-instance-id}"/>

+                                                        <parameter name="replacement" value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.service-instance-id`"/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                        <parameter name="source" value="`$tmp.ss-pnf-url`"/>

+                                                        <parameter name="outputPath" value="tmp.ss-pnf-url"/>

+                                                        <parameter name="target" value="{pnf-id}"/>

+                                                        <parameter name="replacement" value="`$service-data.pnfs.pnf[$pnf-index].pnf-id`"/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.pnf.templatefile`" />

+                                                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-pnf-url`' />

+                                                        <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                        <parameter name='format' value='json' />

+                                                        <parameter name='httpMethod' value='PUT' />

+                                                        <parameter name="responsePrefix" value="mdsal-ss-pnf" />

+                                                        <outcome value='failure'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name="error-message" value="Error persisting self-serve pnf assignments in MD-SAL during unassign" />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='not-found'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name="error-message" value="Error persisting self-serve pnf assignments in MD-SAL during unassign" />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </execute>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`'Failed to unassign self-serve pnf assignments for ' + $ss.capability-dg + ' with error: ' + $error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="`'DONE: ' + $ss.capability-dg`"/>

+                                                </record>

+                                            </outcome>

+                                        </call>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="`'SS: resource-resolution-data.status: ' + $service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$pidx].resource-resolution-data.status`"/>

+                                            <parameter name="field2" value="`'SS: ss.capability-name: ' + $ss.capability-name`"/>

+                                            <parameter name="field3" value="`'SS: tmp.param.capability-name: ' + $tmp.param.capability-name`"/>

+                                        </record>

+                                    </outcome>

+                                </switch>

+                                <break/>

+                            </block>

+                        </outcome>

+                    </switch>

+                </for>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/ss-pnf-unassign.log' />

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-unresolved-composite-data.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-unresolved-composite-data.xml
new file mode 100644
index 0000000..ebd065a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-unresolved-composite-data.xml
@@ -0,0 +1,612 @@
+<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-unresolved-composite-data' 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>

+            </switch>

+            <switch test='`$ss.capability-type`'>

+                <outcome value=''>

+                    <return status="failure">

+                        <parameter name="ack-final" value="Y" />

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="ss.capability-type is null" />

+                    </return>

+                </outcome>

+                <outcome value='vnf'>

+                    <for silentFailure='true' index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`">

+                        <set>

+                            <parameter name='tmp.ss.param.capability-name' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />

+                        </set>

+                        <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>

+                            <outcome value='true'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='tmp.ss.composite' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].value`' />

+                                    </set>

+                                    <switch test="`$tmp.ss.composite == ''`">

+                                        <outcome value='false'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name='tmp.ss.final.resolved-value' value="" />

+                                                    <parameter name='tmp.ss.final.resolved-value.end' value="" />

+                                                </set>

+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >

+                                                    <parameter name="source" value="`$tmp.ss.composite`" />

+                                                    <parameter name="target" value="["/>

+                                                    <outcome value='true'>

+                                                        <set>

+                                                            <parameter name='tmp.ss.final.resolved-value' value="[" />

+                                                            <parameter name='tmp.ss.final.resolved-value.end' value="]" />

+                                                        </set>

+                                                    </outcome>

+                                                </execute>

+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                    <parameter name="source" value="`$tmp.ss.composite`" />

+                                                    <parameter name="target" value="["/>

+                                                    <parameter name="replacement" value=""/>

+                                                    <parameter name="outputPath" value="tmp.ss.composite"/>

+                                                </execute>

+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                    <parameter name="source" value="`$tmp.ss.composite`" />

+                                                    <parameter name="target" value="]"/>

+                                                    <parameter name="replacement" value=""/>

+                                                    <parameter name="outputPath" value="tmp.ss.composite"/>

+                                                </execute>

+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >

+                                                    <parameter name="source" value="`$tmp.ss.composite`" />

+                                                    <parameter name="outputPath" value="tmp.ss.composite"/>

+                                                </execute>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                    <parameter name="field2" value="`'SS: tmp.ss.composite: ' + $tmp.ss.composite`"/>

+                                                </record>

+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                    <parameter name="original_string" value="`$tmp.ss.composite`" />

+                                                    <parameter name="regex" value=","/>

+                                                    <parameter name="ctx_memory_result_key" value="comma-splits" />

+                                                </execute>

+                                                <for silentFailure='true' index="comma-splits-index" start="0" end="`$comma-splits_length`">

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >

+                                                        <parameter name="source" value="`$comma-splits[$comma-splits-index]`" />

+                                                        <parameter name="outputPath" value="tmp.ss.composite.trim"/>

+                                                    </execute>

+                                                    <set>

+                                                        <parameter name='tmp.ss.param-prefix' value='' />

+                                                        <parameter name='tmp.ss.param-suffix' value='' />

+                                                    </set>

+                                                    <block>

+                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                            <parameter name="original_string" value="`$tmp.ss.composite.trim`" />

+                                                            <parameter name="regex" value="\$"/>

+                                                            <parameter name="ctx_memory_result_key" value="dollar-splits" />

+                                                        </execute>

+                                                        <set>

+                                                            <parameter name='tmp.ss.param-prefix' value='`$dollar-splits[0]`' />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name='tmp.ss.final.composite-resolved-value' value='' />

+                                                        </set>

+                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >

+                                                            <parameter name="source" value="`$tmp.ss.param-prefix`" />

+                                                            <parameter name="outputPath" value="tmp.ss.param-prefix"/>

+                                                        </execute>

+                                                        <switch test='`$dollar-splits_length == 1`'>

+                                                            <outcome value='true'>

+                                                                <set>

+                                                                    <parameter name='tmp.ss.final.composite-resolved-value' 

+	value="`$tmp.ss.param-prefix`" />

+                                                                </set>

+                                                            </outcome>

+                                                        </switch>

+                                                        <for silentFailure='true' index="dollar-splits-index" start="1" end="`$dollar-splits_length`">

+                                                            <set>

+                                                                <parameter name='tmp.ss.partial.resolved-value' value="`'$' + $dollar-splits[$dollar-splits-index]`" />

+                                                            </set>

+                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >

+                                                                <parameter name="source" value="`$dollar-splits[$dollar-splits-index]`" />

+                                                                <parameter name="target" value="{"/>

+                                                                <outcome value='true'>

+                                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                        <parameter name="source" value="`$dollar-splits[$dollar-splits-index]`" />

+                                                                        <parameter name="target" value="{"/>

+                                                                        <parameter name="replacement" value=""/>

+                                                                        <parameter name="outputPath" value="tmp.ss.partial.composite-value"/>

+                                                                    </execute>

+                                                                </outcome>

+                                                                <outcome value='false'>

+                                                                    <set>

+                                                                        <parameter name='tmp.ss.partial.composite-value' value='`$dollar-splits[$dollar-splits-index]`' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </execute>

+                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='endsWith' emitsOutcome='true' >

+                                                                <parameter name="source" value="`$tmp.ss.partial.composite-value`" />

+                                                                <parameter name="target" value="}"/>

+                                                                <outcome value='true'>

+                                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                        <parameter name="source" value="`$tmp.ss.partial.composite-value`" />

+                                                                        <parameter name="target" value="}"/>

+                                                                        <parameter name="replacement" value=""/>

+                                                                        <parameter name="outputPath" value="tmp.ss.partial.composite-value"/>

+                                                                    </execute>

+                                                                </outcome>

+                                                                <outcome value='false'>

+                                                                    <block>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                                            <parameter name="original_string" value="`$tmp.ss.partial.composite-value`" />

+                                                                            <parameter name="regex" value="\}"/>

+                                                                            <parameter name="ctx_memory_result_key" value="end-curly-splits" />

+                                                                        </execute>

+                                                                        <set>

+                                                                            <parameter name='tmp.ss.partial.composite-value' value='`$end-curly-splits[0]`' />

+                                                                        </set>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >

+                                                                            <parameter name="source" value="`$tmp.ss.partial.composite-value`" />

+                                                                            <parameter name="outputPath" value="tmp.ss.partial.composite-value"/>

+                                                                        </execute>

+                                                                        <set>

+                                                                            <parameter name='tmp.ss.param-suffix' value='`$end-curly-splits[1]`' />

+                                                                        </set>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >

+                                                                            <parameter name="source" value="`$tmp.ss.param-suffix`" />

+                                                                            <parameter name="outputPath" value="tmp.ss.param-suffix"/>

+                                                                        </execute>

+                                                                        <set>

+                                                                            <parameter name='tmp.ss.partial.resolved-value' value="`'${' + $tmp.ss.partial.composite-value + '}'`" />

+                                                                        </set>

+                                                                    </block>

+                                                                </outcome>

+                                                            </execute>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="`'SS: tmp.ss.partial.composite-value: ' + $tmp.ss.partial.composite-value`"/>

+                                                            </record>

+                                                            <switch test='`$ss.capability-type`'>

+                                                                <outcome value='vnf'>

+                                                                    <for silentFailure='true' index="i" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`">

+                                                                        <set>

+                                                                            <parameter name='tmp.ss.param-name' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].name`' />

+                                                                        </set>

+                                                                        <switch test='`$tmp.ss.partial.composite-value == $tmp.ss.param-name`'>

+                                                                            <outcome value='true'>

+                                                                                <block>

+                                                                                    <set>

+                                                                                        <parameter name='tmp.ss.partial.resolved-value' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].value`' />

+                                                                                    </set>

+                                                                                    <break/>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </for>

+                                                                </outcome>

+                                                                <outcome value='vf-module'>

+                                                                    <for silentFailure='true' index="i" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">

+                                                                        <set>

+                                                                            <parameter name='tmp.ss.param-name' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].name`' />

+                                                                        </set>

+                                                                        <switch test='`$tmp.ss.partial.composite-value == $tmp.ss.param-name`'>

+                                                                            <outcome value='true'>

+                                                                                <block>

+                                                                                    <set>

+                                                                                        <parameter name='tmp.ss.partial.resolved-value' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].value`' />

+                                                                                    </set>

+                                                                                    <break/>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </for>

+                                                                </outcome>

+                                                            </switch>

+                                                            <set>

+                                                                <parameter name='tmp.ss.partial.resolved-value' 

+	value="`$tmp.ss.param-prefix + $tmp.ss.partial.resolved-value + $tmp.ss.param-suffix`" />

+                                                            </set>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="`'SS: tmp.ss.partial.resolved-value: ' + $tmp.ss.partial.resolved-value`"/>

+                                                            </record>

+                                                            <set>

+                                                                <parameter name='tmp.ss.final.composite-resolved-value' 

+	value="`$tmp.ss.final.composite-resolved-value + $tmp.ss.partial.resolved-value`" />

+                                                            </set>

+                                                        </for>

+                                                    </block>

+                                                    <switch test='`$comma-splits-index == 0`'>

+                                                        <outcome value='true'>

+                                                            <set>

+                                                                <parameter name='tmp.ss.final.resolved-value' 

+	value="`$tmp.ss.final.resolved-value + $tmp.ss.final.composite-resolved-value`" />

+                                                            </set>

+                                                        </outcome>

+                                                        <outcome value='false'>

+                                                            <set>

+                                                                <parameter name='tmp.ss.final.resolved-value' 

+	value="`$tmp.ss.final.resolved-value + ',' + $tmp.ss.final.composite-resolved-value`" />

+                                                            </set>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                                <set>

+                                                    <parameter name='tmp.ss.final.resolved-value' 

+	value='`$tmp.ss.final.resolved-value + $tmp.ss.final.resolved-value.end`' />

+                                                </set>

+                                                <switch test='`$ss.capability-type`'>

+                                                    <outcome value='vnf'>

+                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >

+                                                            <parameter name="source" value="`$tmp.ss.final.resolved-value`" />

+                                                            <parameter name="target" value="$"/>

+                                                            <outcome value='true'>

+                                                                <block atomic='true'>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' value='FAILED' />

+                                                                    </set>

+                                                                    <return status='failure'>

+                                                                        <parameter name='error-code' value='500' />

+                                                                        <parameter name='error-message' value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].name + ' was not resolved by ' + $ss.capability + ' with value = '+ $tmp.ss.final.resolved-value`" />

+                                                                    </return>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='false'>

+                                                                <set>

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].value' 

+	value='`$tmp.ss.final.resolved-value`' />

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' 

+	value='SUCCESS' />

+                                                                </set>

+                                                            </outcome>

+                                                        </execute>

+                                                    </outcome>

+                                                    <outcome value='vf-module'>

+                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >

+                                                            <parameter name="source" value="`$tmp.ss.final.resolved-value`" />

+                                                            <parameter name="target" value="$"/>

+                                                            <outcome value='true'>

+                                                                <block atomic='true'>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' value='FAILED' />

+                                                                    </set>

+                                                                    <return status='failure'>

+                                                                        <parameter name='error-code' value='500' />

+                                                                        <parameter name='error-message' value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name + ' was not resolved by ' + $ss.capability + ' with value = '+ $tmp.ss.final.resolved-value`" />

+                                                                    </return>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='false'>

+                                                                <set>

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value' 

+	value='`$tmp.ss.final.resolved-value`' />

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' 

+	value='SUCCESS' />

+                                                                </set>

+                                                            </outcome>

+                                                        </execute>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </for>

+                </outcome>

+                <outcome value='vf-module'>

+                    <for silentFailure='true' index="pidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">

+                        <set>

+                            <parameter name='tmp.ss.param.capability-name' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />

+                        </set>

+                        <switch test='`$tmp.ss.param.capability-name == $ss.capability-name`'>

+                            <outcome value='true'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='tmp.ss.composite' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value`' />

+                                    </set>

+                                    <switch test="`$tmp.ss.composite == ''`">

+                                        <outcome value='false'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name='tmp.ss.final.resolved-value' value="" />

+                                                    <parameter name='tmp.ss.final.resolved-value.end' value="" />

+                                                </set>

+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >

+                                                    <parameter name="source" value="`$tmp.ss.composite`" />

+                                                    <parameter name="target" value="["/>

+                                                    <outcome value='true'>

+                                                        <set>

+                                                            <parameter name='tmp.ss.final.resolved-value' value="[" />

+                                                            <parameter name='tmp.ss.final.resolved-value.end' value="]" />

+                                                        </set>

+                                                    </outcome>

+                                                </execute>

+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                    <parameter name="source" value="`$tmp.ss.composite`" />

+                                                    <parameter name="target" value="["/>

+                                                    <parameter name="replacement" value=""/>

+                                                    <parameter name="outputPath" value="tmp.ss.composite"/>

+                                                </execute>

+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                    <parameter name="source" value="`$tmp.ss.composite`" />

+                                                    <parameter name="target" value="]"/>

+                                                    <parameter name="replacement" value=""/>

+                                                    <parameter name="outputPath" value="tmp.ss.composite"/>

+                                                </execute>

+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >

+                                                    <parameter name="source" value="`$tmp.ss.composite`" />

+                                                    <parameter name="outputPath" value="tmp.ss.composite"/>

+                                                </execute>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                    <parameter name="field2" value="`'SS: tmp.ss.composite: ' + $tmp.ss.composite`"/>

+                                                </record>

+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                    <parameter name="original_string" value="`$tmp.ss.composite`" />

+                                                    <parameter name="regex" value=","/>

+                                                    <parameter name="ctx_memory_result_key" value="comma-splits" />

+                                                </execute>

+                                                <for silentFailure='true' index="comma-splits-index" start="0" end="`$comma-splits_length`">

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >

+                                                        <parameter name="source" value="`$comma-splits[$comma-splits-index]`" />

+                                                        <parameter name="outputPath" value="tmp.ss.composite.trim"/>

+                                                    </execute>

+                                                    <set>

+                                                        <parameter name='tmp.ss.param-prefix' value='' />

+                                                        <parameter name='tmp.ss.param-suffix' value='' />

+                                                    </set>

+                                                    <block>

+                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                            <parameter name="original_string" value="`$tmp.ss.composite.trim`" />

+                                                            <parameter name="regex" value="\$"/>

+                                                            <parameter name="ctx_memory_result_key" value="dollar-splits" />

+                                                        </execute>

+                                                        <set>

+                                                            <parameter name='tmp.ss.param-prefix' value='`$dollar-splits[0]`' />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name='tmp.ss.final.composite-resolved-value' value='' />

+                                                        </set>

+                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >

+                                                            <parameter name="source" value="`$tmp.ss.param-prefix`" />

+                                                            <parameter name="outputPath" value="tmp.ss.param-prefix"/>

+                                                        </execute>

+                                                        <switch test='`$dollar-splits_length == 1`'>

+                                                            <outcome value='true'>

+                                                                <set>

+                                                                    <parameter name='tmp.ss.final.composite-resolved-value' 

+	value="`$tmp.ss.param-prefix`" />

+                                                                </set>

+                                                            </outcome>

+                                                        </switch>

+                                                        <for silentFailure='true' index="dollar-splits-index" start="1" end="`$dollar-splits_length`">

+                                                            <set>

+                                                                <parameter name='tmp.ss.partial.resolved-value' value="`'$' + $dollar-splits[$dollar-splits-index]`" />

+                                                            </set>

+                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='startsWith' emitsOutcome='true' >

+                                                                <parameter name="source" value="`$dollar-splits[$dollar-splits-index]`" />

+                                                                <parameter name="target" value="{"/>

+                                                                <outcome value='true'>

+                                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                        <parameter name="source" value="`$dollar-splits[$dollar-splits-index]`" />

+                                                                        <parameter name="target" value="{"/>

+                                                                        <parameter name="replacement" value=""/>

+                                                                        <parameter name="outputPath" value="tmp.ss.partial.composite-value"/>

+                                                                    </execute>

+                                                                </outcome>

+                                                                <outcome value='false'>

+                                                                    <set>

+                                                                        <parameter name='tmp.ss.partial.composite-value' value='`$dollar-splits[$dollar-splits-index]`' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </execute>

+                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='endsWith' emitsOutcome='true' >

+                                                                <parameter name="source" value="`$tmp.ss.partial.composite-value`" />

+                                                                <parameter name="target" value="}"/>

+                                                                <outcome value='true'>

+                                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                        <parameter name="source" value="`$tmp.ss.partial.composite-value`" />

+                                                                        <parameter name="target" value="}"/>

+                                                                        <parameter name="replacement" value=""/>

+                                                                        <parameter name="outputPath" value="tmp.ss.partial.composite-value"/>

+                                                                    </execute>

+                                                                </outcome>

+                                                                <outcome value='false'>

+                                                                    <block>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                                            <parameter name="original_string" value="`$tmp.ss.partial.composite-value`" />

+                                                                            <parameter name="regex" value="\}"/>

+                                                                            <parameter name="ctx_memory_result_key" value="end-curly-splits" />

+                                                                        </execute>

+                                                                        <set>

+                                                                            <parameter name='tmp.ss.partial.composite-value' value='`$end-curly-splits[0]`' />

+                                                                        </set>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >

+                                                                            <parameter name="source" value="`$tmp.ss.partial.composite-value`" />

+                                                                            <parameter name="outputPath" value="tmp.ss.partial.composite-value"/>

+                                                                        </execute>

+                                                                        <set>

+                                                                            <parameter name='tmp.ss.param-suffix' value='`$end-curly-splits[1]`' />

+                                                                        </set>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='trim' >

+                                                                            <parameter name="source" value="`$tmp.ss.param-suffix`" />

+                                                                            <parameter name="outputPath" value="tmp.ss.param-suffix"/>

+                                                                        </execute>

+                                                                        <set>

+                                                                            <parameter name='tmp.ss.partial.resolved-value' value="`'${' + $tmp.ss.partial.composite-value + '}'`" />

+                                                                        </set>

+                                                                    </block>

+                                                                </outcome>

+                                                            </execute>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="`'SS: tmp.ss.partial.composite-value: ' + $tmp.ss.partial.composite-value`"/>

+                                                            </record>

+                                                            <switch test='`$ss.capability-type`'>

+                                                                <outcome value='vnf'>

+                                                                    <for silentFailure='true' index="i" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`">

+                                                                        <set>

+                                                                            <parameter name='tmp.ss.param-name' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].name`' />

+                                                                        </set>

+                                                                        <switch test='`$tmp.ss.partial.composite-value == $tmp.ss.param-name`'>

+                                                                            <outcome value='true'>

+                                                                                <block>

+                                                                                    <set>

+                                                                                        <parameter name='tmp.ss.partial.resolved-value' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].value`' />

+                                                                                    </set>

+                                                                                    <break/>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </for>

+                                                                </outcome>

+                                                                <outcome value='vf-module'>

+                                                                    <for silentFailure='true' index="i" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`">

+                                                                        <set>

+                                                                            <parameter name='tmp.ss.param-name' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].name`' />

+                                                                        </set>

+                                                                        <switch test='`$tmp.ss.partial.composite-value == $tmp.ss.param-name`'>

+                                                                            <outcome value='true'>

+                                                                                <block>

+                                                                                    <set>

+                                                                                        <parameter name='tmp.ss.partial.resolved-value' 

+	value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].value`' />

+                                                                                    </set>

+                                                                                    <break/>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </for>

+                                                                </outcome>

+                                                            </switch>

+                                                            <set>

+                                                                <parameter name='tmp.ss.partial.resolved-value' 

+	value="`$tmp.ss.param-prefix + $tmp.ss.partial.resolved-value + $tmp.ss.param-suffix`" />

+                                                            </set>

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                                <parameter name="logger" value="message-log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="`'SS: tmp.ss.partial.resolved-value: ' + $tmp.ss.partial.resolved-value`"/>

+                                                            </record>

+                                                            <set>

+                                                                <parameter name='tmp.ss.final.composite-resolved-value' 

+	value="`$tmp.ss.final.composite-resolved-value + $tmp.ss.partial.resolved-value`" />

+                                                            </set>

+                                                        </for>

+                                                    </block>

+                                                    <switch test='`$comma-splits-index == 0`'>

+                                                        <outcome value='true'>

+                                                            <set>

+                                                                <parameter name='tmp.ss.final.resolved-value' 

+	value="`$tmp.ss.final.resolved-value + $tmp.ss.final.composite-resolved-value`" />

+                                                            </set>

+                                                        </outcome>

+                                                        <outcome value='false'>

+                                                            <set>

+                                                                <parameter name='tmp.ss.final.resolved-value' 

+	value="`$tmp.ss.final.resolved-value + ',' + $tmp.ss.final.composite-resolved-value`" />

+                                                            </set>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                                <set>

+                                                    <parameter name='tmp.ss.final.resolved-value' 

+	value='`$tmp.ss.final.resolved-value + $tmp.ss.final.resolved-value.end`' />

+                                                </set>

+                                                <switch test='`$ss.capability-type`'>

+                                                    <outcome value='vnf'>

+                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >

+                                                            <parameter name="source" value="`$tmp.ss.final.resolved-value`" />

+                                                            <parameter name="target" value="$"/>

+                                                            <outcome value='true'>

+                                                                <block atomic='true'>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' value='FAILED' />

+                                                                    </set>

+                                                                    <return status='failure'>

+                                                                        <parameter name='error-code' value='500' />

+                                                                        <parameter name='error-message' value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].name + ' was not resolved by ' + $ss.capability + ' with value = '+ $tmp.ss.final.resolved-value`" />

+                                                                    </return>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='false'>

+                                                                <set>

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].value' 

+	value='`$tmp.ss.final.resolved-value`' />

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status' 

+	value='SUCCESS' />

+                                                                </set>

+                                                            </outcome>

+                                                        </execute>

+                                                    </outcome>

+                                                    <outcome value='vf-module'>

+                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains'  emitsOutcome='true' >

+                                                            <parameter name="source" value="`$tmp.ss.final.resolved-value`" />

+                                                            <parameter name="target" value="$"/>

+                                                            <outcome value='true'>

+                                                                <block atomic='true'>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' value='FAILED' />

+                                                                    </set>

+                                                                    <return status='failure'>

+                                                                        <parameter name='error-code' value='500' />

+                                                                        <parameter name='error-message' value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].name + ' was not resolved by ' + $ss.capability + ' with value = '+ $tmp.ss.final.resolved-value`" />

+                                                                    </return>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='false'>

+                                                                <set>

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].value' 

+	value='`$tmp.ss.final.resolved-value`' />

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status' 

+	value='SUCCESS' />

+                                                                </set>

+                                                            </outcome>

+                                                        </execute>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </for>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/ss-composite.log' />

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-assign.xml
new file mode 100644
index 0000000..d2bb3a0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-assign.xml
@@ -0,0 +1,302 @@
+<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-vf-module-assign' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='is-new-vfmodule' value='true' />

+            </set>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value=''>

+                    <block>

+                        <set>

+                            <parameter name='vf-module-index' value='0' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-module-index + 1`' />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='0'>

+                    <block>

+                        <set>

+                            <parameter name='vf-module-index' value='0' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-module-index + 1`' />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                            <switch test='`$vf-module-topology-operation-input.vf-module-information.vf-module-id == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id`'>

+                                <outcome value='true'>

+                                    <block>

+                                        <set>

+                                            <parameter name='is-new-vfmodule' value='false' />

+                                        </set>

+                                        <set>

+                                            <parameter name='vf-module-index' value='`$idx`' />

+                                        </set>

+                                        <break/>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$is-new-vfmodule`'>

+                            <outcome value='true'>

+                                <block>

+                                    <set>

+                                        <parameter name='vf-module-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                                    </set>

+                                    <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>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$is-new-vfmodule`'>

+                <outcome value='true'>

+                    <block>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id'

+   value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id' 

+    value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-name' 

+    value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-name`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-type' 

+    value='`$vf-module-topology-operation-input.vf-module-information.vf-module-type`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.tenant' 

+    value='`$vf-module-topology-operation-input.vf-module-request-input.tenant`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.aic-cloud-region' 

+    value='`$vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.aic-clli'

+    value='`$vf-module-topology-operation-input.vf-module-request-input.aic-clli`' />

+                        </set>

+                        <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-invariant-uuid'

+  value='`$db.vf-module-model.invariant-uuid`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-invariant-uuid'

+  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-uuid'

+  value='`$db.vf-module-model.uuid`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-uuid'

+  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-version'

+  value='`$db.vf-module-model.version`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-version'

+  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-name'

+  value='`$db.vf-module-model.name`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-name'

+  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.onap-model-information.model-customization-uuid'

+  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-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-module-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-module-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-module-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-module-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-module-index].vf-module-data.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[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'

+  value='PendingCreate' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-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-module-index].vf-module-data.vf-module-level-oper-status.last-action'

+  value='`$vf-module-topology-operation-input.request-information.request-action`' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.sdnc-generated-cloud-resources' 

+	value='true' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='ss.capability-type' value='vf-module' />

+            </set>

+            <set>

+                <parameter name='ss.capability.execution-order[0]' value='generate-name' />

+                <parameter name='ss.capability.execution-order[1]' value='alts-entitlement-assign' />

+                <parameter name='ss.capability.execution-order[2]' value='alts-license-assign' />

+                <parameter name='ss.capability.execution-order[3]' value='vlan-tag-assign' />

+                <parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />

+                <parameter name='ss.capability.execution-order[5]' value='eipam-ip-assignment' />

+                <parameter name='ss.capability.execution-order[6]' value='eipam-create-pool' />

+                <parameter name='ss.capability.execution-order[7]' value='netbox-ip-assign' />

+                <parameter name='ss.capability.execution-order[8]' value='mac-address-assign' />

+                <parameter name='ss.capability.execution-order[9]' value='mS-mac-address-assign' />

+                <parameter name='ss.capability.execution-order[10]' value='create-vpe-pool' />

+                <parameter name='ss.capability.execution-order[11]' value='unresolved-composite-data' />

+                <parameter name='ss.capability.execution-order[12]' value='aai-vf-module-put' />

+                <parameter name='ss.capability.execution-order_length' value='13' />

+            </set>

+            <switch test='`$prop.controller.user`'>

+                <outcome value=''>

+                    <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>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`'>

+                <outcome value=''>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.'

+  value='vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.' />

+                        </set>

+                        <call module='GENERIC-RESOURCE-API' rpc='self-serve-vfmodule-ra-assignment' mode='sync' >

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="`'Failed to get RA assignments: ' + $error-message`" />

+                                </return>

+                            </outcome>

+                        </call>

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                            <parameter name="logger" value="message-log"/>

+                            <parameter name="field1" value="DONE with vfmodule-ra-assignment"/>

+                        </record>

+                    </block>

+                </outcome>

+            </switch>

+            <for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >

+                <set>

+                    <parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />

+                    <!--

+ss.capability.execution-order

+-->

+                </set>

+                <set>

+                    <parameter name='ss.capability-action' value='assign' />

+                </set>

+                <set>

+                    <parameter name='ss.capability-dg' value="`'self-serve-' + $ss.capability.execution-order[$cidx]`" />

+                </set>

+                <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >

+                    <set>

+                        <parameter name='tmp.param.capability-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />

+                    </set>

+                    <switch test='`$ss.capability-name == $tmp.param.capability-name`'>

+                        <outcome value='true'>

+                            <block atomic='true'>

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`'>

+                                    <outcome value='PENDING'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='error-message' value="`'Encountered error from ' + $ss.capability-dg + ' with error: ' + $error-message`" />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-mdsal-put' mode='sync' ></call>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`$error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="`'DONE: ' + $ss.capability-dg`"/>

+                                                </record>

+                                            </outcome>

+                                        </call>

+                                    </outcome>

+                                    <outcome value='FAILED'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='error-message' value="`'Encountered error from ' + $ss.capability-dg + ' with error: ' + $error-message`" />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-mdsal-put' mode='sync' ></call>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`$error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="`'DONE: ' + $ss.capability-dg`"/>

+                                                </record>

+                                            </outcome>

+                                        </call>

+                                    </outcome>

+                                </switch>

+                                <break/>

+                            </block>

+                        </outcome>

+                    </switch>

+                </for>

+            </for>

+            <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-mdsal-put' mode='sync' ></call>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/ss-vf-assign.log' />

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-forking-logic.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-forking-logic.xml
new file mode 100644
index 0000000..1c5e077
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-forking-logic.xml
@@ -0,0 +1,85 @@
+<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-vf-module-forking-logic' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.exist.sdnc-model-name' value='false' />

+                <parameter name='tmp.exist.vf_module_label' value='false' />

+            </set>

+            <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">

+                <outcome value=''>

+                    <set>

+                        <parameter name='vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length' value='0' />

+                    </set>

+                </outcome>

+            </switch>

+            <for silentFailure='true' index='p' start='0' end='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$p].name`">

+                    <outcome value='sdnc_model_name'>

+                        <set>

+                            <parameter name='tmp.exist.sdnc-model-name' value='true' />

+                        </set>

+                    </outcome>

+                    <outcome value='vf_module_label'>

+                        <set>

+                            <parameter name='tmp.exist.vf_module_label' value='true' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test="`$tmp.exist.sdnc-model-name == 'true' and $tmp.exist.vf_module_label == 'true'`">

+                <outcome value='true'>

+                    <set>

+                        <parameter name='ss.self-serve-flag' value='true' />

+                    </set>

+                </outcome>

+                <outcome value='false'>

+                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT sdnc_model_name from VF_MODEL 

+  	WHERE customization_uuid = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-customization-uuid 

+  	AND sdnc_model_name is not null'

+  pfx='db.vf-model-name'>

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="Error reading VF_MODEL table to determine self-serve forking criteria" />

+                            </return>

+                        </outcome>

+                        <outcome value='success'>

+                            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT vf_module_label from VF_MODULE_MODEL 

+  	WHERE vf_customization_uuid = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-customization-uuid

+  	AND vf_module_label is not null '

+  pfx='db.vf-module-label'>

+                                <outcome value='success'>

+                                    <set>

+                                        <parameter name='ss.self-serve-flag' value='true' />

+                                    </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 reading VF_MODULE_MODEL table to determine self-serve forking criteria" />

+                                    </return>

+                                </outcome>

+                                <outcome value='not-found'>

+                                    <set>

+                                        <parameter name='ss.self-serve-flag' value='false' />

+                                    </set>

+                                </outcome>

+                            </get-resource>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <set>

+                                <parameter name='ss.self-serve-flag' value='false' />

+                            </set>

+                        </outcome>

+                    </get-resource>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name-changeassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name-changeassign.xml
new file mode 100644
index 0000000..e2dc3e3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name-changeassign.xml
@@ -0,0 +1,92 @@
+<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-vf-module-generate-name-changeassign' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='tmp.external-key.value' value='' />

+            </set>

+            <for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.resource-key_length`' >

+                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.resource-key[$i].name`'>

+                    <outcome value='external-key'>

+                        <set>

+                            <parameter name='tmp.external-key.value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.resource-key[$i].value`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$tmp.external-key.value`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="self-service-vf-module-generate-name-changeassign error : external-key is null for vf-module" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="tmp.vf-module.changeassign.naming-data-payload" value="`'{&quot;elements&quot;:[{' + '&quot;resource-name&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].name + '&quot;,&quot;resource-value&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].value + '&quot;,&quot;external-key&quot;:&quot;' + $tmp.external-key.value + '&quot;}]}'`"/>

+            </set>

+            <execute plugin='org.openecomp.sdnc.prov.namegeneration.node.AssignNameNode' method='process'>

+                <parameter name='payload' value='`$tmp.vf-module.changeassign.naming-data-payload`' />

+                <parameter name="prifix" value="vf-module.changeassign.nameGenResponse" />

+                <outcome value='failure'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />

+                        </set>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`'Error from NameGenerationNode ChangeAssign vf-module ' + $error-message`" />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />

+                        </set>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`'Error from NameGenerationNode ChangeAssign vf-module ' + $error-message`" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module" key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id AND vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id " >

+                <parameter name="vf-module-name" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].value`' />

+                <outcome value='failure'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />

+                        </set>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`'Failed to update vf-module.vf-module-name to ' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].value + ' in AnAI'`" />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />

+                        </set>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`'Failed to update vf-module.vf-module-name to ' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].value + ' in AnAI'`" />

+                        </return>

+                    </block>

+                </outcome>

+            </update>

+            <set>

+                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].value`' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$ss.input.param.index].value`'/>

+                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$ss.service-data.param.index].resource-resolution-data.status`' value='SUCCESS' />

+            </set>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name.xml
new file mode 100644
index 0000000..01ec0d4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-generate-name.xml
@@ -0,0 +1,233 @@
+<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-vf-module-generate-name' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='pathname' 

+	value="`'/var/tmp/ss-gen-name-' + 

+	$ss.capability-type + '-' + $ss.capability-action + '-' + 

+	$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.vf-module-id + '.log'`" />

+            </set>

+            <switch test="`$ss.capability-action`">

+                <outcome value='unassign'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />

+                        </set>

+                        <for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >

+                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>

+                                <outcome value='true'>

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '{'`" />

+                                            <parameter name='tmp.gen-name_length' value='1' />

+                                        </set>

+                                        <for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key_length`' >

+                                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name == 'external-key'`">

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name="tmp.naming-data-payload" value="`$tmp.naming-data-payload + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`"/>

+                                                        <parameter name="`tmp.gen-name[0].element[$j].name`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name`"/>

+                                                        <parameter name="`tmp.gen-name[0].element[$j].value`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`"/>

+                                                        <parameter name="`tmp.gen-name[0].element_length`" value='`$j + 1`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '},'`" />

+                                        </set>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + ']}'`" />

+                                        </set>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>

+                                            <parameter name='outputPath' value='tmp.naming-data-payload' />

+                                            <parameter name='source' value='`$tmp.naming-data-payload`' />

+                                            <parameter name='target' value=',}' />

+                                            <parameter name='replacement' value='}' />

+                                        </execute>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>

+                                            <parameter name='outputPath' value='tmp.naming-data-payload' />

+                                            <parameter name='source' value='`$tmp.naming-data-payload`' />

+                                            <parameter name='target' value=',]' />

+                                            <parameter name='replacement' value=']' />

+                                        </execute>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="BEFORE namegeneration.node.UnAssignNameNode"/>

+                                        </record>

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`" />

+                                            <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />

+                                            <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />

+                                            <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />

+                                            <parameter name='format' value='json' />

+                                            <parameter name='httpMethod' value='DELETE' />

+                                            <parameter name="responsePrefix" value="nameGenResponse" />

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.status`' value='FAILED' />

+                                                    </set>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="Error from NameGenerationNode Unassign" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.status`' value='FAILED' />

+                                                    </set>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="Error from NameGenerationNode Unassign" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                        </execute>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="AFTER namegeneration.node.UnAssignNameNode"/>

+                                        </record>

+                                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">

+                                            <parameter name="source" value="nameGenResponse.httpResponse" />

+                                            <parameter name="outputPath" value="jsonContextPrefix" />

+                                            <parameter name="isEscaped" value="false" />

+                                        </execute>

+                                        <set>

+                                            <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.status`' value='DELETED' />

+                                        </set>

+                                        <for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >

+                                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].name == $jsonContextPrefix.elements[$n].resource-name`'>

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].value`' value="`$jsonContextPrefix.elements[$n].resource-value`" />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+                <outcome value='assign'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />

+                            <parameter name='tmp.gen-name_length' value='0' />

+                        </set>

+                        <for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >

+                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>

+                                <outcome value='true'>

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '{'`" />

+                                        </set>

+                                        <for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key_length`' >

+                                            <set>

+                                                <parameter name="tmp.naming-data-payload" value="`$tmp.naming-data-payload + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`"/>

+                                                <parameter name="`tmp.gen-name[$tmp.gen-name_length].element[$j].name`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].name`"/>

+                                                <parameter name="`tmp.gen-name[$tmp.gen-name_length].element[$j].value`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.resource-key[$j].value`"/>

+                                                <parameter name="`tmp.gen-name[$tmp.gen-name_length].element_length`" value='`$j + 1`' />

+                                            </set>

+                                        </for>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '},'`" />

+                                            <parameter name='tmp.gen-name_length' value='`$tmp.gen-name_length + 1`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test="`$tmp.naming-data-payload == ''`">

+                            <outcome value='false'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + ']}'`" />

+                                    </set>

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>

+                                        <parameter name='outputPath' value='tmp.naming-data-payload' />

+                                        <parameter name='source' value='`$tmp.naming-data-payload`' />

+                                        <parameter name='target' value=',}' />

+                                        <parameter name='replacement' value='}' />

+                                    </execute>

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>

+                                        <parameter name='outputPath' value='tmp.naming-data-payload' />

+                                        <parameter name='source' value='`$tmp.naming-data-payload`' />

+                                        <parameter name='target' value=',]' />

+                                        <parameter name='replacement' value=']' />

+                                    </execute>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="BEFORE namegeneration.node.AssignNameNode"/>

+                                    </record>

+                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`" />

+                                        <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />

+                                        <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />

+                                        <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />

+                                        <parameter name='format' value='json' />

+                                        <parameter name='httpMethod' value='POST' />

+                                        <parameter name="responsePrefix" value="nameGenResponse" />

+                                        <outcome value='failure'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.status`' value='FAILED' />

+                                                </set>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="Error from NameGenerationNode Assign" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='not-found'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$i].resource-resolution-data.status`' value='FAILED' />

+                                                </set>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="Error from NameGenerationNode Assign" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                    </execute>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="AFTER namegeneration.node.AssignNameNode"/>

+                                    </record>

+                                    <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">

+                                        <parameter name="source" value="nameGenResponse.httpResponse" />

+                                        <parameter name="outputPath" value="jsonContextPrefix" />

+                                        <parameter name="isEscaped" value="false" />

+                                    </execute>

+                                    <for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >

+                                        <for index='l' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >

+                                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].name == $jsonContextPrefix.elements[$n].resource-name`'>

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].value`' value="`$jsonContextPrefix.elements[$n].resource-value`" />

+                                                        <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$l].resource-resolution-data.status`' value='SUCCESS' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-mdsal-put.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-mdsal-put.xml
new file mode 100644
index 0000000..76b6087
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-mdsal-put.xml
@@ -0,0 +1,75 @@
+<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-vf-module-mdsal-put' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='vf.vf-module-id'

+    value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`' />

+                <parameter name='vf.vf-module-data.sdnc-request-header.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.`' />

+                <parameter name='vf.vf-module-data.request-information.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.request-information.`' />

+                <parameter name='vf.vf-module-data.service-information.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.`' />

+                <parameter name='vf.vf-module-data.vnf-information.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.`' />

+                <parameter name='vf.vf-module-data.vf-module-information.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.`' />

+                <parameter name='vf.vf-module-data.vf-module-topology.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.`' />

+                <parameter name='vf.vf-module-data.vf-module-level-oper-status.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.`' />

+                <parameter name='vf.vf-module-data.vf-module-request-input.vf-module-input-parameters.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.vf-module-input-parameters.`' />

+                <parameter name='vf.vf-module-data.vf-module-request-input.request-version'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.request-version`' />

+                <parameter name='vf.vf-module-data.vf-module-request-input.vf-module-name'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.vf-module-name`' />

+                <parameter name='vf.vf-module-data.vf-module-request-input.tenant'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.tenant`' />

+                <parameter name='vf.vf-module-data.vf-module-request-input.aic-cloud-region'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.aic-cloud-region`' />

+                <parameter name='vf.vf-module-data.vf-module-request-input.aic-clli'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.aic-clli`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.ss-vfmodule-assignments`"/>

+                <parameter name="outputPath" value="tmp.ss-vfmodule-url"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.ss-vfmodule-url`"/>

+                <parameter name="outputPath" value="tmp.ss-vfmodule-url"/>

+                <parameter name="target" value="{vnf-id}"/>

+                <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.vnf-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.ss-vfmodule-url`"/>

+                <parameter name="outputPath" value="tmp.ss-vfmodule-url"/>

+                <parameter name="target" value="{vf-module-id}"/>

+                <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.vfmodule.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-vfmodule-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-ss-vfmodule" />

+                <outcome value='failure'>

+                    <set>

+                        <parameter name="error-message" value="`'Failed to persist self-serve vf-module assignments during assign in MD-SAL. ' + $error-message`" />

+                    </set>

+                </outcome>

+                <outcome value='not-found'>

+                    <set>

+                        <parameter name="error-message" value="`'Failed to persist self-serve vf-module assignments during assign in MD-SAL. ' + $error-message`" />

+                    </set>

+                </outcome>

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-unassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-unassign.xml
new file mode 100644
index 0000000..68df95e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vf-module-unassign.xml
@@ -0,0 +1,159 @@
+<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-vf-module-unassign' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='ss.capability.execution-order[0]' value='mS-mac-address-assign' />

+                <parameter name='ss.capability.execution-order[1]' value='mac-address-assign' />

+                <parameter name='ss.capability.execution-order[2]' value='netbox-ip-assign' />

+                <parameter name='ss.capability.execution-order[3]' value='eipam-ip-assignment' />

+                <parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />

+                <parameter name='ss.capability.execution-order[5]' value='vlan-tag-assign' />

+                <parameter name='ss.capability.execution-order[6]' value='alts-license-assign' />

+                <parameter name='ss.capability.execution-order[7]' value='alts-entitlement-assign' />

+                <parameter name='ss.capability.execution-order[8]' value='generate-name' />

+                <parameter name='ss.capability.execution-order_length' value='9' />

+            </set>

+            <set>

+                <parameter name='ss.capability-type' value='vf-module' />

+            </set>

+            <switch test='`$prop.controller.user`'>

+                <outcome value=''>

+                    <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>

+                </outcome>

+            </switch>

+            <for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >

+                <set>

+                    <parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />

+                    <!--

+ss.capability.execution-order

+-->

+                </set>

+                <set>

+                    <parameter name='ss.capability-action' value='unassign' />

+                </set>

+                <set>

+                    <parameter name='ss.capability-dg' value="`'self-serve-' + $ss.capability.execution-order[$cidx]`" />

+                </set>

+                <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >

+                    <set>

+                        <parameter name='tmp.param.capability-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.capability-name`' />

+                    </set>

+                    <switch test='`$ss.capability-name == $tmp.param.capability-name`'>

+                        <outcome value='true'>

+                            <block atomic='true'>

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`'>

+                                    <outcome value='SUCCESS'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='vf.vf-module-id'

+    value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`' />

+                                                        <parameter name='vf.vf-module-data.sdnc-request-header.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.sdnc-request-header.`' />

+                                                        <parameter name='vf.vf-module-data.request-information.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.request-information.`' />

+                                                        <parameter name='vf.vf-module-data.service-information.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.`' />

+                                                        <parameter name='vf.vf-module-data.vnf-information.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.`' />

+                                                        <parameter name='vf.vf-module-data.vf-module-information.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.`' />

+                                                        <parameter name='vf.vf-module-data.vf-module-topology.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.`' />

+                                                        <parameter name='vf.vf-module-data.vf-module-level-oper-status.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.`' />

+                                                        <parameter name='vf.vf-module-data.vf-module-request-input.vf-module-input-parameters.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.vf-module-input-parameters.`' />

+                                                        <parameter name='vf.vf-module-data.vf-module-request-input.request-version'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.request-version`' />

+                                                        <parameter name='vf.vf-module-data.vf-module-request-input.vf-module-name'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.vf-module-name`' />

+                                                        <parameter name='vf.vf-module-data.vf-module-request-input.tenant'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.tenant`' />

+                                                        <parameter name='vf.vf-module-data.vf-module-request-input.aic-cloud-region'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.aic-cloud-region`' />

+                                                        <parameter name='vf.vf-module-data.vf-module-request-input.aic-clli'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-request-input.aic-clli`' />

+                                                    </set>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                        <parameter name="source" value="`$prop.restapi.ss-vfmodule-assignments`"/>

+                                                        <parameter name="outputPath" value="tmp.ss-vfmodule-url"/>

+                                                        <parameter name="target" value="{service-instance-id}"/>

+                                                        <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.service-information.service-instance-id`"/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                        <parameter name="source" value="`$tmp.ss-vfmodule-url`"/>

+                                                        <parameter name="outputPath" value="tmp.ss-vfmodule-url"/>

+                                                        <parameter name="target" value="{vnf-id}"/>

+                                                        <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vnf-information.vnf-id`"/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                        <parameter name="source" value="`$tmp.ss-vfmodule-url`"/>

+                                                        <parameter name="outputPath" value="tmp.ss-vfmodule-url"/>

+                                                        <parameter name="target" value="{vf-module-id}"/>

+                                                        <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`"/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.vfmodule.templatefile`" />

+                                                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-vfmodule-url`' />

+                                                        <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                        <parameter name='format' value='json' />

+                                                        <parameter name='httpMethod' value='PUT' />

+                                                        <parameter name="responsePrefix" value="mdsal-ss-vfmodule" />

+                                                        <outcome value='failure'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name="error-message" value="Failed to persist self-serve vf-module assignments during unassign in MD-SAL" />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='not-found'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name="error-message" value="Failed to persist self-serve vf-module assignments during unassign in MD-SAL" />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </execute>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`'Encountered error from capability: '+ $ss.capability-dg + ', with error: '+ $error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="`'DONE: ' + $ss.capability-dg`"/>

+                                                </record>

+                                            </outcome>

+                                        </call>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="`'SS: resource-resolution-data.status: ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$pidx].resource-resolution-data.status`"/>

+                                            <parameter name="field2" value="`'SS: ss.capability-name: ' + $ss.capability-name`"/>

+                                            <parameter name="field3" value="`'SS: tmp.param.capability-name: ' + $tmp.param.capability-name`"/>

+                                        </record>

+                                    </outcome>

+                                </switch>

+                                <break/>

+                            </block>

+                        </outcome>

+                    </switch>

+                </for>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/ss-vf-unassign.log' />

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vfmodule-changeassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vfmodule-changeassign.xml
new file mode 100644
index 0000000..543b9f5
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vfmodule-changeassign.xml
@@ -0,0 +1,70 @@
+<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-vfmodule-changeassign' mode='sync'>

+        <block atomic="true">

+            <switch test='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="no param name/value provided in vf-module-request-input" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='i' start='0' end='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length == ''`">

+                    <outcome value='false'>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name='ss.input.param.found.in.service.param' value='false' />

+                            </set>

+                            <for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$j].name == $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name`'>

+                                    <outcome value='true'>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$j].resource-resolution-data.status`' value='PENDING'/>

+                                                <parameter name='ss.input.param.index' value='`$i`' />

+                                                <parameter name='ss.service-data.param.index' value='`$j`' />

+                                                <parameter name='ss.input.param.found.in.service.param' value='true' />

+                                                <parameter name='ss.capability-type' value='vf-module' />

+                                                <parameter name='ss.capability-action' value='changeassign' />

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='self-serve-generate-name-changeassign' mode='sync' >

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="Error from self-service-generate-name-changeassign" />

+                                                    </return>

+                                                </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="Error from self-service-generate-name-changeassign" />

+                                                    </return>

+                                                </outcome>

+                                            </call>

+                                            <return status='success'></return>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </for>

+                            <switch test='`$ss.input.param.found.in.service.param`'>

+                                <outcome value='false'>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="No vf-module-request-input.vf-module-input-parameters.param[].name found in service-data." />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vfmodule-ra-assignment.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vfmodule-ra-assignment.xml
new file mode 100644
index 0000000..79e84d6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vfmodule-ra-assignment.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='self-serve-vfmodule-ra-assignment' mode='sync'>

+        <block atomic="true">

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                <parameter name="ctx-destination" value="tmp.return.generate.vnf-se-serv-uuid" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="generateUUID is failed" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name="cds" value="execution-service_process."/>

+                <parameter name="`$cds + 'commonHeader.requestId'`" value="`$tmp.return.generate.vnf-se-serv-uuid`"/>

+                <parameter name="resource-type" value="`$vf-module-topology-operation-input.vf-module-information.vf-module-type`" />

+                <parameter name="`$cds + 'commonHeader.subRequestId'`" value="`$vf-module-topology-operation-input.vf-module-information.vf-module-id`" />

+                <parameter name="`$cds + 'actionIdentifiers.actionName'`" value="resource-assignment"/>

+                <parameter name="responsePrefix" value="raAssign" />

+                <parameter name="`$cds + 'isNonAppend'`" value="true"/>

+                <parameter name="`$cds + 'commonHeader.originatorId'`" value="SDNC_DG"/>

+                <parameter name="`$cds + 'actionIdentifiers.mode'`" value="sync"/>

+            </set>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='highnum' value='0' />

+                        <parameter name='prehighnum' value='0'/>

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='highnum' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' />

+                        <parameter name='prehighnum' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' />

+                    </set>

+                </outcome>

+            </switch>

+            <for silentFailure='true' index='i' start='0' end='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                <switch test='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name`'>

+                    <outcome value='sdnc_model_name'>

+                        <set>

+                            <parameter name='tmp.sdnc-model-name' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`' />

+                        </set>

+                    </outcome>

+                    <outcome value='sdnc_model_version'>

+                        <set>

+                            <parameter name='tmp.sdnc-model-version' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`' />

+                        </set>

+                    </outcome>

+                    <outcome value='vf_module_label'>

+                        <set>

+                            <parameter name='tmp.vf-module-label' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`' />

+                        </set>

+                    </outcome>

+                    <outcome value='Other'>

+                        <set>

+                            <parameter name="tmp.config-name-value-other-payload" value="`$tmp.config-name-value-other-payload + '&quot;' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name + '&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value + '&quot;,'`"/>

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test="`$tmp.sdnc-model-name == '' or $tmp.sdnc-model-version == '' or $tmp.vf-module-label == ''`">

+                <outcome value='true'>

+                    <block atomic="true">

+                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'

+  pfx='db1.vf-model'>

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Error reading VF_MODEL table" />

+                                </return>

+                            </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="`'No VF_MODEL found with customization_uuid = ' + $vf-module-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`" />

+                                </return>

+                            </outcome>

+                            <outcome value='success'>

+                                <set>

+                                    <parameter name='tmp.sdnc-model-name' value='`$db1.vf-model.sdnc-model-name`' />

+                                    <parameter name='tmp.sdnc-model-version' value='`$db1.vf-model.sdnc-model-version`' />

+                                </set>

+                            </outcome>

+                        </get-resource>

+                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT vf_module_label from VF_MODULE_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid 

+  	AND vf_module_label is not null'

+  pfx='db1.vf-module-model'>

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />

+                                </return>

+                            </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="`'vf_module_label not found in VF_MODULE_MODEL WHERE customization_uuid = ' + $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`" />

+                                </return>

+                            </outcome>

+                            <outcome value='success'>

+                                <set>

+                                    <parameter name='tmp.vf-module-label' value='`$db1.vf-module-model.vf-module-label`' />

+                                </set>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="tmp.config-name-value-payload4" value="`$tmp.config-name-value-other-payload + '&quot;service-instance-id&quot;:&quot;' + $vf-module-topology-operation-input.service-information.service-instance-id + '&quot;,'`"/>

+                <parameter name="tmp.config-name-value-payload5" value="`$tmp.config-name-value-payload4 + '&quot;vnf-id&quot;:&quot;' + $vf-module-topology-operation-input.vnf-information.vnf-id + '&quot;,'`"/>

+                <parameter name="tmp.config-name-value-payload6" value="`$tmp.config-name-value-payload5 + '&quot;vf-module-model-customization-uuid&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid + '&quot;,'`"/>

+                <parameter name="tmp.config-name-value-payload7" value="`$tmp.config-name-value-payload6 + '&quot;vnf-model-customization-uuid&quot;:&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.onap-model-information.model-customization-uuid + '&quot;,'`"/>

+                <parameter name="tmp.config-name-value-payload8" value="`$tmp.config-name-value-payload7 + '&quot;vf-module-id&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + '&quot;,'`"/>

+                <parameter name="tmp.config-name-value-payload9" value="`$tmp.config-name-value-payload8 + '&quot;aic-cloud-region&quot;:&quot;' + $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region + '&quot;'`"/>

+            </set>

+            <set>

+                <parameter name="tmp.json-payload" value="`'{' + $tmp.config-name-value-payload9 + '}'`" />

+                <parameter name="`$cds + 'actionIdentifiers.blueprintName'`" value='`$tmp.sdnc-model-name`' />

+                <parameter name="`$cds + 'actionIdentifiers.blueprintVersion'`" value='`$tmp.sdnc-model-version`' />

+                <parameter name="`$cds + 'payload.resource-assignment-request.template-prefix[0]'`" value='`$tmp.vf-module-label`' />

+                <parameter name="`$cds + 'payload.resource-assignment-request.resource-assignment-properties'`" value='`$tmp.json-payload`' />

+            </set>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value="BEFORE BlueprintProcessingClient"/>

+            </record>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value="`$prop.cds.url + '/api/v1/execution-service/process'`" />

+                <parameter name='restapiUser' value='`$prop.cds.user`' />

+                <parameter name='restapiPassword' value='`$prop.cds.pwd`' />

+                <parameter name='dirPath' value="/opt/onap/sdnc/restconfapi/yang" />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='POST' />

+                <parameter name="responsePrefix" value="`$responsePrefix`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error from ConfigAssignmentNode" />

+                    </return>

+                </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="Error from ConfigAssignmentNode" />

+                    </return>

+                </outcome>

+            </execute>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value="AFTER BlueprintProcessingClient"/>

+            </record>

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">

+                <parameter name="source" value="`'raAssign.payload.resource-assignment-response.meshed-template.' + $tmp.vf-module-label`" />

+                <parameter name="outputPath" value="jsonContextPrefix" />

+                <parameter name="isEscaped" value="false" />

+            </execute>

+            <for silentFailure='true' index='i' start='0' end='`$jsonContextPrefix.resource-accumulator-resolved-data_length`' >

+                <block atomic="true">

+                    <set>

+                        <parameter name='tmp.mso.param.found' value='false' />

+                    </set>

+                    <switch test='`$prehighnum &gt; 0`'>

+                        <outcome value='true'>

+                            <for silentFailure='true' index='cnt' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cnt].name == $jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'>

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$cnt].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>

+                                            <parameter name='tmp.mso.param.found' value='true' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                            </for>

+                        </outcome>

+                    </switch>

+                    <switch test='`$tmp.mso.param.found`'>

+                        <outcome value='false'>

+                            <block atomic='true'>

+                                <set>

+                                    <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].name`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'/>

+                                    <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>

+                                    <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.capability-name`' value='RA Resolved'/>

+                                    <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.status`' value='SUCCESS'/>

+                                </set>

+                                <set>

+                                    <parameter name='highnum' value='`$highnum + 1`' />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <for silentFailure='true' index='i' start='0' end='`$jsonContextPrefix.capability-data_length`' >

+                <for silentFailure='true' index='j' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping_length`' >

+                    <for silentFailure='true' index='l' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping_length`' >

+                        <block atomic="true">

+                            <set>

+                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-name`'/>

+                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-value`'/>

+                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.capability-name`' value='`$jsonContextPrefix.capability-data[$i].capability-name`'/>

+                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.status`' value='PENDING'/>

+                                <parameter name='num' value='0' />

+                            </set>

+                            <switch test="`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length == ''`">

+                                <outcome value='true'></outcome>

+                                <outcome value='false'>

+                                    <for index='k' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length`' >

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.resource-key[$num].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-name`'/>

+                                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.resource-key[$num].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-value`'/>

+                                            </set>

+                                            <set>

+                                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param[$highnum].resource-resolution-data.resource-key_length`' value='`$num + 1`'/>

+                                            </set>

+                                            <set>

+                                                <parameter name='num' value='`$num + 1`' />

+                                            </set>

+                                        </block>

+                                    </for>

+                                </outcome>

+                            </switch>

+                            <set>

+                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' value='`$highnum + 1`'/>

+                            </set>

+                            <set>

+                                <parameter name='highnum' value='`$highnum + 1`' />

+                            </set>

+                        </block>

+                    </for>

+                </for>

+            </for>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value="DONE: vfmodule-ra-assignment"/>

+            </record>

+            <set>

+                <parameter name='pathname' 

+	value="`'/var/tmp/ss-vfmodule-ra-assignment-' + 

+	$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.vf-module-id + '.log'`" />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='`$pathname`' />

+            </execute>

+        </block>

+    </method>

+</service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-assign.xml
new file mode 100644
index 0000000..96db3ef
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-assign.xml
@@ -0,0 +1,287 @@
+<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-vnf-assign' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='is-new-vnf' value='true' />

+            </set>

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <block>

+                        <set>

+                            <parameter name='vnf-index' value='0' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf_length' value='1' />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='0'>

+                    <block>

+                        <set>

+                            <parameter name='vnf-index' value='0' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf_length' value='1' />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>

+                                <outcome value='true'>

+                                    <block>

+                                        <set>

+                                            <parameter name='is-new-vnf' value='false' />

+                                        </set>

+                                        <set>

+                                            <parameter name='vnf-index' value='`$idx`' />

+                                        </set>

+                                        <break/>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$is-new-vnf`'>

+                            <outcome value='true'>

+                                <block>

+                                    <set>

+                                        <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />

+                                    </set>

+                                    <set>

+                                        <parameter name='service-data.vnfs.vnf_length' value='`$service-data.vnfs.vnf_length + 1`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$is-new-vnf`'>

+                <outcome value='true'>

+                    <block>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id'

+ value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-type'

+ value='`$vnf-topology-operation-input.vnf-information.vnf-type`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-type'

+ value='`$db.vf-model.nf-type`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role'

+ value='`$db.vf-model.nf-role`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-function'

+ value='`$db.vf-model.nf-function`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-code'

+ value='`$db.vf-model.nf-code`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.tenant'

+ value='`$vnf-topology-operation-input.vnf-request-input.tenant`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-cloud-region'

+ value='`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id'

+   value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                        </set>

+                        <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'

+  value='`$db.vf-model.invariant-uuid`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'

+  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'

+  value='`$db.vf-model.uuid`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'

+  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'

+  value='`$db.vf-model.version`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'

+  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'

+  value='`$db.vf-model.name`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'

+  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'

+  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' 

+	value='$vnf-topology-operation-input.sdnc-request-header.' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' 

+	value='$vnf-topology-operation-input.request-information.' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' 

+	value='$vnf-topology-operation-input.service-information.' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' 

+	value='$vnf-topology-operation-input.vnf-information.' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' 

+	value='$vnf-topology-operation-input.vnf-request-input.' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='ss.capability.execution-order[0]' value='generate-name' />

+                <parameter name='ss.capability.execution-order[1]' value='alts-entitlement-assign' />

+                <parameter name='ss.capability.execution-order[2]' value='alts-license-assign' />

+                <parameter name='ss.capability.execution-order[3]' value='vlan-tag-assign' />

+                <parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />

+                <parameter name='ss.capability.execution-order[5]' value='eipam-ip-assignment' />

+                <parameter name='ss.capability.execution-order[6]' value='eipam-create-pool' />

+                <parameter name='ss.capability.execution-order[7]' value='netbox-ip-assign' />

+                <parameter name='ss.capability.execution-order[8]' value='mac-address-assign' />

+                <parameter name='ss.capability.execution-order[9]' value='mS-mac-address-assign' />

+                <parameter name='ss.capability.execution-order[10]' value='create-vpe-pool' />

+                <parameter name='ss.capability.execution-order[11]' value='unresolved-composite-data' />

+                <parameter name='ss.capability.execution-order[12]' value='aai-vnf-put' />

+                <parameter name='ss.capability.execution-order_length' value='13' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.sdnc-generated-cloud-resources' value='true' />

+            </set>

+            <set>

+                <parameter name='ss.capability-type' value='vnf' />

+            </set>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`'>

+                <outcome value=''>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.'

+  value='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.' />

+                        </set>

+                        <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-ra-assignment' mode='sync' >

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value="`'Failed to get RA assignments: ' + $error-message`" />

+                                </return>

+                            </outcome>

+                        </call>

+                    </block>

+                </outcome>

+            </switch>

+            <for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >

+                <set>

+                    <parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />

+                    <!--

+ss.capability.execution-order[]

+-->

+                </set>

+                <set>

+                    <parameter name='ss.capability-action' value='assign' />

+                </set>

+                <set>

+                    <parameter name='ss.capability-dg' value="`'self-serve-' + $ss.capability.execution-order[$cidx]`" />

+                </set>

+                <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >

+                    <set>

+                        <parameter name='tmp.param.capability-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />

+                    </set>

+                    <switch test='`$ss.capability-name == $tmp.param.capability-name`'>

+                        <outcome value='true'>

+                            <block atomic='true'>

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`'>

+                                    <outcome value='PENDING'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='error-message' value="`'Encountered error from ' + $ss.capability-dg + ' with error: ' + $error-message`" />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-mdsal-put' mode='sync' ></call>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`$error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="`'EXECUTION DONE: ' + $ss.capability-dg`"/>

+                                                </record>

+                                            </outcome>

+                                        </call>

+                                    </outcome>

+                                    <outcome value='FAILED'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='error-message' value="`'Encountered error from ' + $ss.capability-dg + ' with error: ' + $error-message`" />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-mdsal-put' mode='sync' ></call>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`$error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="`'EXECUTION DONE: ' + $ss.capability-dg`"/>

+                                                </record>

+                                            </outcome>

+                                        </call>

+                                    </outcome>

+                                </switch>

+                                <break/>

+                            </block>

+                        </outcome>

+                    </switch>

+                </for>

+            </for>

+            <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-mdsal-put' mode='sync' ></call>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/ss-vnf-assign.log' />

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-changeassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-changeassign.xml
new file mode 100644
index 0000000..16da1bb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-changeassign.xml
@@ -0,0 +1,70 @@
+<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-vnf-changeassign' mode='sync'>

+        <block atomic='true'>

+            <switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="no param name/value provided in vnf-request-input" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='i' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >

+                <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length == ''`">

+                    <outcome value='false'>

+                        <block atomic='true'>

+                            <set>

+                                <parameter name='ss.input.param.found.in.service.param' value='false' />

+                            </set>

+                            <for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$j].name == $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].name`'>

+                                    <outcome value='true'>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.status`' value='PENDING'/>

+                                                <parameter name='ss.input.param.index' value='`$i`' />

+                                                <parameter name='ss.service-data.param.index' value='`$j`' />

+                                                <parameter name='ss.input.param.found.in.service.param' value='true' />

+                                                <parameter name='ss.capability-type' value='vnf' />

+                                                <parameter name='ss.capability-action' value='changeassign' />

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='self-serve-generate-name-changeassign' mode='sync' >

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="Error from self-service-generate-name-changeassign" />

+                                                    </return>

+                                                </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="Error from self-service-generate-name-changeassign" />

+                                                    </return>

+                                                </outcome>

+                                            </call>

+                                            <return status='success'></return>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </for>

+                            <switch test='`$ss.input.param.found.in.service.param`'>

+                                <outcome value='false'>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="No vnf-request-input.vnf-input-parameters.param[].name found in service-data." />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-forking-logic.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-forking-logic.xml
new file mode 100644
index 0000000..3570e5d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-forking-logic.xml
@@ -0,0 +1,54 @@
+<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-vnf-forking-logic' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.exist.sdnc-model-name' value='false' />

+                <parameter name='tmp.exist.sdnc-artifact-name' value='false' />

+            </set>

+            <switch test="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`">

+                <outcome value=''>

+                    <set>

+                        <parameter name='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length' value='0' />

+                    </set>

+                </outcome>

+            </switch>

+            <for silentFailure='true' index='p' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >

+                <switch test="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$p].name`">

+                    <outcome value='sdnc_model_name'>

+                        <set>

+                            <parameter name='tmp.exist.sdnc-model-name' value='true' />

+                        </set>

+                    </outcome>

+                    <outcome value='sdnc_artifact_name'>

+                        <set>

+                            <parameter name='tmp.exist.sdnc-artifact-name' value='true' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test="`$tmp.exist.sdnc-model-name == 'true' and $tmp.exist.sdnc-artifact-name == 'true'`">

+                <outcome value='true'>

+                    <set>

+                        <parameter name='ss.self-serve-flag' value='true' />

+                    </set>

+                </outcome>

+                <outcome value='false'>

+                    <switch test="`$db.vf-model.sdnc-model-name != '' and $db.vf-model.sdnc-artifact-name != ''`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='ss.self-serve-flag' value='true' />

+                            </set>

+                        </outcome>

+                        <outcome value='false'>

+                            <set>

+                                <parameter name='ss.self-serve-flag' value='false' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-generate-name-changeassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-generate-name-changeassign.xml
new file mode 100644
index 0000000..c8a419a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-generate-name-changeassign.xml
@@ -0,0 +1,94 @@
+<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-vnf-generate-name-changeassign' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='tmp.external-key.value' value='' />

+            </set>

+            <for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.resource-key_length`' >

+                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.resource-key[$i].name`'>

+                    <outcome value='external-key'>

+                        <set>

+                            <parameter name='tmp.external-key.value' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.resource-key[$i].value`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$tmp.external-key.value`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="self-service-vnf-generate-name-changeassign error : external-key is null for vnf" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="tmp.vnf.changeassign.naming-data-payload" 

+	value="`'{&quot;elements&quot;:[{' + '&quot;resource-name&quot;:&quot;' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].name + '&quot;,&quot;resource-value&quot;:&quot;' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].value + '&quot;,&quot;external-key&quot;:&quot;' + $tmp.external-key.value + '&quot;}]}'`"/>

+            </set>

+            <execute plugin='org.openecomp.sdnc.prov.namegeneration.node.AssignNameNode' method='process'>

+                <parameter name='payload' value='`$tmp.vnf.changeassign.naming-data-payload`' />

+                <parameter name="prifix" value="vnf.changeassign.nameGenResponse" />

+                <outcome value='failure'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />

+                        </set>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`'Error from NameGenerationNode ChangeAssign vnf ' + $error-message`" />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />

+                        </set>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`'Error from NameGenerationNode ChangeAssign vnf ' + $error-message`" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="generic-vnf"

+		key="generic-vnf.vnf-id =  $service-data.vnfs.vnf[$vnf-index].vnf-id " >

+                <parameter name="vnf-name" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].value`' />

+                <outcome value='failure'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />

+                        </set>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`'Failed to update generic-vnf.vnf-name to ' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].value + ' in AnAI'`" />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.status`' value='FAILED' />

+                        </set>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`'Failed to update generic-vnf.vnf-name to ' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].value + ' in AnAI'`" />

+                        </return>

+                    </block>

+                </outcome>

+            </update>

+            <set>

+                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].value`' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$ss.input.param.index].value`'/>

+                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$ss.service-data.param.index].resource-resolution-data.status`' value='SUCCESS' />

+            </set>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-generate-name.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-generate-name.xml
new file mode 100644
index 0000000..4a87679
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-generate-name.xml
@@ -0,0 +1,233 @@
+<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-vnf-generate-name' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='pathname' 

+	value="`'/var/tmp/ss-gen-name-' + 

+	$ss.capability-type + '-' + $ss.capability-action + '-' + 

+	$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.vnf-id + '.log'`" />

+            </set>

+            <switch test="`$ss.capability-action`">

+                <outcome value='unassign'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />

+                        </set>

+                        <for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >

+                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>

+                                <outcome value='true'>

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '{'`" />

+                                            <parameter name='tmp.gen-name_length' value='1' />

+                                        </set>

+                                        <for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >

+                                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name == 'external-key'`">

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name="tmp.naming-data-payload" value="`$tmp.naming-data-payload + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`"/>

+                                                        <parameter name="`tmp.gen-name[0].element[$j].name`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name`"/>

+                                                        <parameter name="`tmp.gen-name[0].element[$j].value`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`"/>

+                                                        <parameter name="`tmp.gen-name[0].element_length`" value='`$j + 1`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '},'`" />

+                                        </set>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + ']}'`" />

+                                        </set>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>

+                                            <parameter name='outputPath' value='tmp.naming-data-payload' />

+                                            <parameter name='source' value='`$tmp.naming-data-payload`' />

+                                            <parameter name='target' value=',}' />

+                                            <parameter name='replacement' value='}' />

+                                        </execute>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>

+                                            <parameter name='outputPath' value='tmp.naming-data-payload' />

+                                            <parameter name='source' value='`$tmp.naming-data-payload`' />

+                                            <parameter name='target' value=',]' />

+                                            <parameter name='replacement' value=']' />

+                                        </execute>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="BEFORE namegeneration.node.UnAssignNameNode"/>

+                                        </record>

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`" />

+                                            <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />

+                                            <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />

+                                            <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />

+                                            <parameter name='format' value='json' />

+                                            <parameter name='httpMethod' value='DELETE' />

+                                            <parameter name="responsePrefix" value="nameGenResponse" />

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />

+                                                    </set>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="Error from NameGenerationNode Unassign" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />

+                                                    </set>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="Error from NameGenerationNode Unassign" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                        </execute>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="AFTER namegeneration.node.UnAssignNameNode"/>

+                                        </record>

+                                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">

+                                            <parameter name="source" value="nameGenResponse.httpResponse" />

+                                            <parameter name="outputPath" value="jsonContextPrefix" />

+                                            <parameter name="isEscaped" value="false" />

+                                        </execute>

+                                        <set>

+                                            <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.status`' value='DELETED' />

+                                        </set>

+                                        <for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >

+                                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].name == $jsonContextPrefix.elements[$n].resource-name`'>

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].value`' value="`$jsonContextPrefix.elements[$n].resource-value`" />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+                <outcome value='assign'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='tmp.naming-data-payload' value='{&quot;elements&quot;:[' />

+                            <parameter name='tmp.gen-name_length' value='0' />

+                        </set>

+                        <for index='i' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >

+                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.capability-name == $ss.capability-name`'>

+                                <outcome value='true'>

+                                    <block atomic='true'>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '{'`" />

+                                        </set>

+                                        <for index='j' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key_length`' >

+                                            <set>

+                                                <parameter name="tmp.naming-data-payload" value="`$tmp.naming-data-payload + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name + '&quot;:' + '&quot;' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value + '&quot;,'`"/>

+                                                <parameter name="`tmp.gen-name[$tmp.gen-name_length].element[$j].name`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].name`"/>

+                                                <parameter name="`tmp.gen-name[$tmp.gen-name_length].element[$j].value`" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.resource-key[$j].value`"/>

+                                                <parameter name="`tmp.gen-name[$tmp.gen-name_length].element_length`" value='`$j + 1`' />

+                                            </set>

+                                        </for>

+                                        <set>

+                                            <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + '},'`" />

+                                            <parameter name='tmp.gen-name_length' value='`$tmp.gen-name_length + 1`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test="`$tmp.naming-data-payload == ''`">

+                            <outcome value='false'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='tmp.naming-data-payload' value="`$tmp.naming-data-payload + ']}'`" />

+                                    </set>

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>

+                                        <parameter name='outputPath' value='tmp.naming-data-payload' />

+                                        <parameter name='source' value='`$tmp.naming-data-payload`' />

+                                        <parameter name='target' value=',}' />

+                                        <parameter name='replacement' value='}' />

+                                    </execute>

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace'>

+                                        <parameter name='outputPath' value='tmp.naming-data-payload' />

+                                        <parameter name='source' value='`$tmp.naming-data-payload`' />

+                                        <parameter name='target' value=',]' />

+                                        <parameter name='replacement' value=']' />

+                                    </execute>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="BEFORE namegeneration.node.AssignNameNode"/>

+                                    </record>

+                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.naming.gen-name.templatefile`" />

+                                        <parameter name='restapiUrl' value='`$prop.naming.gen-name.url + $prop.restapi.naming.gen-name.service`' />

+                                        <parameter name='restapiUser' value='`$prop.naming.gen-name.user`' />

+                                        <parameter name='restapiPassword' value='`$prop.naming.gen-name.pwd`' />

+                                        <parameter name='format' value='json' />

+                                        <parameter name='httpMethod' value='POST' />

+                                        <parameter name="responsePrefix" value="nameGenResponse" />

+                                        <outcome value='failure'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />

+                                                </set>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="Error from NameGenerationNode Assign" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='not-found'>

+                                            <block atomic='true'>

+                                                <set>

+                                                    <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$i].resource-resolution-data.status`' value='FAILED' />

+                                                </set>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="Error from NameGenerationNode Assign" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                    </execute>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value="AFTER namegeneration.node.AssignNameNode"/>

+                                    </record>

+                                    <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">

+                                        <parameter name="source" value="nameGenResponse.httpResponse" />

+                                        <parameter name="outputPath" value="jsonContextPrefix" />

+                                        <parameter name="isEscaped" value="false" />

+                                    </execute>

+                                    <for index='n' start='0' end='`$jsonContextPrefix.elements_length`' >

+                                        <for index='l' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >

+                                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$l].name == $jsonContextPrefix.elements[$n].resource-name`'>

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$l].value`' value="`$jsonContextPrefix.elements[$n].resource-value`" />

+                                                        <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$l].resource-resolution-data.status`' value='SUCCESS' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-mdsal-put.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-mdsal-put.xml
new file mode 100644
index 0000000..a35b4c1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-mdsal-put.xml
@@ -0,0 +1,67 @@
+<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-vnf-mdsal-put' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='vf.vnf-id'

+    value='`$service-data.vnfs.vnf[$vnf-index].vnf-id`' />

+                <parameter name='vf.vnf-data.sdnc-request-header.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.`' />

+                <parameter name='vf.vnf-data.request-information.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.`' />

+                <parameter name='vf.vnf-data.service-information.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.`' />

+                <parameter name='vf.vnf-data.vnf-information.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.`' />

+                <parameter name='vf.vnf-data.vnf-topology.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.`' />

+                <parameter name='vf.vnf-data.vnf-level-oper-status.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.`' />

+                <parameter name='vf.vnf-data.vnf-request-input.vnf-input-parameters.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.`' />

+                <parameter name='vf.vnf-data.vnf-request-input.request-version'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.request-version`' />

+                <parameter name='vf.vnf-data.vnf-request-input.vnf-name'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-name`' />

+                <parameter name='vf.vnf-data.vnf-request-input.tenant'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.tenant`' />

+                <parameter name='vf.vnf-data.vnf-request-input.aic-cloud-region'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.aic-cloud-region`' />

+                <parameter name='vf.vnf-data.vnf-request-input.aic-clli'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.aic-clli`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.ss-vnf-assignments`"/>

+                <parameter name="outputPath" value="tmp.ss-vnf-url"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.ss-vnf-url`"/>

+                <parameter name="outputPath" value="tmp.ss-vnf-url"/>

+                <parameter name="target" value="{vnf-id}"/>

+                <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.vnf.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-vnf-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-ss-vnf" />

+                <outcome value='failure'>

+                    <set>

+                        <parameter name="error-message" value="`'Failed to persist self-serve vnf assignments during assign in MD-SAL. ' + $error-message`" />

+                    </set>

+                </outcome>

+                <outcome value='not-found'>

+                    <set>

+                        <parameter name="error-message" value="`'Failed to persist self-serve vnf assignments during assign in MD-SAL. ' + $error-message`" />

+                    </set>

+                </outcome>

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-ra-assignment.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-ra-assignment.xml
new file mode 100644
index 0000000..347dd71
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-ra-assignment.xml
@@ -0,0 +1,235 @@
+<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-vnf-ra-assignment' mode='sync'>

+        <block atomic="true">

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                <parameter name="ctx-destination" value="tmp.return.generate.vnf-se-serv-uuid" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="generateUUID is failed" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name="cds" value="execution-service_process."/>

+                <parameter name="`$cds + 'commonHeader.requestId'`" value="`$tmp.return.generate.vnf-se-serv-uuid`"/>

+                <parameter name="resource-type" value="`$vnf-topology-operation-input.vnf-information.vnf-type`" />

+                <parameter name="`$cds + 'commonHeader.subRequestId'`" value="`$vnf-topology-operation-input.vnf-information.vnf-id`" />

+                <parameter name="`$cds + 'actionIdentifiers.actionName'`" value="resource-assignment"/>

+                <parameter name="responsePrefix" value="raAssign" />

+                <parameter name="`$cds + 'isNonAppend'`" value="true"/>

+                <parameter name="`$cds + 'commonHeader.originatorId'`" value="SDNC_DG"/>

+                <parameter name="`$cds + 'actionIdentifiers.mode'`" value="sync"/>

+            </set>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='highnum' value='0' />

+                        <parameter name='prehighnum' value='0'/>

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='highnum' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' />

+                        <parameter name='prehighnum' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' />

+                    </set>

+                </outcome>

+            </switch>

+            <for silentFailure='true' index='i' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`' >

+                <block atomic="true">

+                    <switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].name`'>

+                        <outcome value='sdnc_model_name'>

+                            <set>

+                                <parameter name='tmp.sdnc-model-name' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].value`' />

+                            </set>

+                        </outcome>

+                        <outcome value='sdnc_model_version'>

+                            <set>

+                                <parameter name='tmp.sdnc-model-version' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].value`' />

+                            </set>

+                        </outcome>

+                        <outcome value='sdnc_artifact_name'>

+                            <set>

+                                <parameter name='tmp.sdnc-artifact-name' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].value`' />

+                            </set>

+                        </outcome>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name="tmp.config-name-value-other-payload" value="`$tmp.config-name-value-other-payload + '&quot;' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].name + '&quot;:&quot;' + $vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$i].value + '&quot;,'`"/>

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <switch test="`$tmp.sdnc-model-name == '' or $tmp.sdnc-model-version == '' or $tmp.sdnc-artifact-name == ''`">

+                <outcome value='true'>

+                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'

+  pfx='db1.vf-model'>

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />

+                            </return>

+                        </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="Error reading VF_MODULE_MODEL table" />

+                            </return>

+                        </outcome>

+                        <outcome value='success'>

+                            <set>

+                                <parameter name='tmp.sdnc-model-name' value='`$db1.vf-model.sdnc-model-name`' />

+                                <parameter name='tmp.sdnc-model-version' value='`$db1.vf-model.sdnc-model-version`' />

+                                <parameter name='tmp.sdnc-artifact-name' value='`$db1.vf-model.sdnc-artifact-name`' />

+                            </set>

+                        </outcome>

+                    </get-resource>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="tmp.config-name-value-payload4" value="`$tmp.config-name-value-other-payload + '&quot;service-instance-id&quot;:&quot;' + $vnf-topology-operation-input.service-information.service-instance-id   + '&quot;,'`"/>

+                <parameter name="tmp.config-name-value-payload5" value="`$tmp.config-name-value-payload4 + '&quot;vnf-model-customization-uuid&quot;:&quot;' + $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid + '&quot;,'`"/>

+                <parameter name="tmp.config-name-value-payload6" value="`$tmp.config-name-value-payload5 + '&quot;vnf-id&quot;:&quot;' + $vnf-topology-operation-input.vnf-information.vnf-id + '&quot;,'`"/>

+                <parameter name="tmp.config-name-value-payload7" value="`$tmp.config-name-value-payload6 + '&quot;aic-cloud-region&quot;:&quot;' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region + '&quot;'`"/>

+            </set>

+            <set>

+                <parameter name="tmp.json-payload" value="`'{' + $tmp.config-name-value-payload7 + '}'`" />

+                <parameter name="`$cds + 'actionIdentifiers.blueprintName'`" value='`$tmp.sdnc-model-name`' />

+                <parameter name="`$cds + 'actionIdentifiers.blueprintVersion'`" value='`$tmp.sdnc-model-version`' />

+                <parameter name="`$cds + 'payload.resource-assignment-request.template-prefix[0]'`" value='`$tmp.sdnc-artifact-name`' />

+                <parameter name="`$cds + 'payload.resource-assignment-request.resource-assignment-properties'`" value='`$tmp.json-payload`' />

+            </set>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value="BEFORE BlueprintProcessingClient"/>

+            </record>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value="`$prop.cds.url + '/api/v1/execution-service/process'`" />

+                <parameter name='restapiUser' value='`$prop.cds.user`' />

+                <parameter name='restapiPassword' value='`$prop.cds.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='POST' />

+                <parameter name='dirPath' value="/opt/onap/sdnc/restconfapi/yang" />

+                <parameter name="responsePrefix" value="`$responsePrefix`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error from ConfigAssignmentNode" />

+                    </return>

+                </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="Error from ConfigAssignmentNode" />

+                    </return>

+                </outcome>

+            </execute>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value="AFTER BlueprintProcessingClient"/>

+            </record>

+            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="jsonStringToCtx">

+                <parameter name="source" value="`'raAssign.payload.resource-assignment-response.meshed-template.' + $tmp.sdnc-artifact-name`" />

+                <parameter name="outputPath" value="jsonContextPrefix" />

+                <parameter name="isEscaped" value="false" />

+            </execute>

+            <for silentFailure='true'  index='i' start='0' end='`$jsonContextPrefix.resource-accumulator-resolved-data_length`' >

+                <block atomic="true">

+                    <set>

+                        <parameter name='tmp.mso.param.found' value='false' />

+                    </set>

+                    <switch test='`$prehighnum &gt; 0`'>

+                        <outcome value='true'>

+                            <for silentFailure='true' index='cnt' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$cnt].name == $jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'>

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$cnt].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>

+                                            <parameter name='tmp.mso.param.found' value='true' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                            </for>

+                        </outcome>

+                    </switch>

+                    <switch test='`$tmp.mso.param.found`'>

+                        <outcome value='false'>

+                            <block atomic='true'>

+                                <set>

+                                    <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].name`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-name`'/>

+                                    <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].value`' value='`$jsonContextPrefix.resource-accumulator-resolved-data[$i].param-value`'/>

+                                    <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.capability-name`' value='RA Resolved'/>

+                                    <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.status`' value='SUCCESS'/>

+                                </set>

+                                <set>

+                                    <parameter name='highnum' value='`$highnum + 1`' />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <for silentFailure='true' index='i' start='0' end='`$jsonContextPrefix.capability-data_length`' >

+                <for silentFailure='true' index='j' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping_length`' >

+                    <for silentFailure='true' index='l' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping_length`' >

+                        <block atomic="true">

+                            <set>

+                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-name`'/>

+                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].output-key-mapping[$l].resource-value`'/>

+                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.capability-name`' value='`$jsonContextPrefix.capability-data[$i].capability-name`'/>

+                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.status`' value='PENDING'/>

+                                <parameter name='num' value='0' />

+                            </set>

+                            <switch test="`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length == ''`">

+                                <outcome value='true'></outcome>

+                                <outcome value='false'>

+                                    <for silentFailure='true' index='k' start='0' end='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload_length`' >

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.resource-key[$num].name`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-name`'/>

+                                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.resource-key[$num].value`' value='`$jsonContextPrefix.capability-data[$i].key-mapping[$j].payload[$k].param-value`'/>

+                                            </set>

+                                            <set>

+                                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$highnum].resource-resolution-data.resource-key_length`' value='`$num + 1`'/>

+                                            </set>

+                                            <set>

+                                                <parameter name='num' value='`$num + 1`' />

+                                            </set>

+                                        </block>

+                                    </for>

+                                </outcome>

+                            </switch>

+                            <set>

+                                <parameter name='`service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' value='`$highnum + 1`'/>

+                            </set>

+                            <set>

+                                <parameter name='highnum' value='`$highnum + 1`' />

+                            </set>

+                        </block>

+                    </for>

+                </for>

+            </for>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value="DONE: vnf-ra-assignment"/>

+            </record>

+            <set>

+                <parameter name='pathname' 

+	value="`'/var/tmp/ss-vnf-ra-assignment-' + 

+	$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.vnf-id + '.log'`" />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='`$pathname`' />

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-unassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-unassign.xml
new file mode 100644
index 0000000..b640fbf
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-vnf-unassign.xml
@@ -0,0 +1,143 @@
+<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-vnf-unassign' mode='sync'>

+        <block atomic='true'>

+            <set>

+                <parameter name='ss.capability.execution-order[0]' value='mS-mac-address-assign' />

+                <parameter name='ss.capability.execution-order[1]' value='mac-address-assign' />

+                <parameter name='ss.capability.execution-order[2]' value='netbox-ip-assign' />

+                <parameter name='ss.capability.execution-order[3]' value='eipam-ip-assignment' />

+                <parameter name='ss.capability.execution-order[4]' value='mS-vlan-tag-assign' />

+                <parameter name='ss.capability.execution-order[5]' value='vlan-tag-assign' />

+                <parameter name='ss.capability.execution-order[6]' value='alts-license-assign' />

+                <parameter name='ss.capability.execution-order[7]' value='alts-entitlement-assign' />

+                <parameter name='ss.capability.execution-order[8]' value='generate-name' />

+                <parameter name='ss.capability.execution-order_length' value='9' />

+            </set>

+            <set>

+                <parameter name='ss.capability-type' value='vnf' />

+            </set>

+            <switch test='`$prop.controller.user`'>

+                <outcome value=''>

+                    <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>

+                </outcome>

+            </switch>

+            <for index='cidx' start='0' end='`$ss.capability.execution-order_length`' >

+                <set>

+                    <parameter name='ss.capability-name' value='`$ss.capability.execution-order[$cidx]`' />

+                    <!--

+ss.capability.execution-order[]

+-->

+                </set>

+                <set>

+                    <parameter name='ss.capability-action' value='unassign' />

+                </set>

+                <set>

+                    <parameter name='ss.capability-dg' value="`'self-serve-' + $ss.capability.execution-order[$cidx]`" />

+                </set>

+                <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >

+                    <set>

+                        <parameter name='tmp.param.capability-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.capability-name`' />

+                    </set>

+                    <switch test='`$ss.capability-name == $tmp.param.capability-name`'>

+                        <outcome value='true'>

+                            <block atomic='true'>

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`'>

+                                    <outcome value='SUCCESS'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='`$ss.capability-dg`' mode='sync' >

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name='vf.vnf-id'

+    value='`$service-data.vnfs.vnf[$vnf-index].vnf-id`' />

+                                                        <parameter name='vf.vnf-data.sdnc-request-header.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.`' />

+                                                        <parameter name='vf.vnf-data.request-information.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.`' />

+                                                        <parameter name='vf.vnf-data.service-information.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.`' />

+                                                        <parameter name='vf.vnf-data.vnf-information.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.`' />

+                                                        <parameter name='vf.vnf-data.vnf-request-input.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.`' />

+                                                        <parameter name='vf.vnf-data.vnf-request-input.vnf-input-parameters.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.`' />

+                                                        <parameter name='vf.vnf-data.vnf-topology.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.`' />

+                                                        <parameter name='vf.vnf-data.vnf-level-oper-status.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.`' />

+                                                    </set>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                        <parameter name="source" value="`$prop.restapi.ss-vnf-assignments`"/>

+                                                        <parameter name="outputPath" value="tmp.ss-vnf-url"/>

+                                                        <parameter name="target" value="{service-instance-id}"/>

+                                                        <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.service-instance-id`"/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                        <parameter name="source" value="`$tmp.ss-vnf-url`"/>

+                                                        <parameter name="outputPath" value="tmp.ss-vnf-url"/>

+                                                        <parameter name="target" value="{vnf-id}"/>

+                                                        <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-id`"/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                        <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.ss.vnf.templatefile`" />

+                                                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ss-vnf-url`' />

+                                                        <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                        <parameter name='format' value='json' />

+                                                        <parameter name='httpMethod' value='PUT' />

+                                                        <parameter name="responsePrefix" value="mdsal-ss-vnf" />

+                                                        <outcome value='failure'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name="error-message" value="Error persisting self-serve vnf assignments in MD-SAL during unassign" />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='not-found'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name="error-message" value="Error persisting self-serve vnf assignments in MD-SAL during unassign" />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </execute>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`'Failed to unassign self-serve vnf assignments for ' + $ss.capability-dg + ' with error: ' + $error-message`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value="`'DONE: ' + $ss.capability-dg`"/>

+                                                </record>

+                                            </outcome>

+                                        </call>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value="`'SS: resource-resolution-data.status: ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.param[$pidx].resource-resolution-data.status`"/>

+                                            <parameter name="field2" value="`'SS: ss.capability-name: ' + $ss.capability-name`"/>

+                                            <parameter name="field3" value="`'SS: tmp.param.capability-name: ' + $tmp.param.capability-name`"/>

+                                        </record>

+                                    </outcome>

+                                </switch>

+                                <break/>

+                            </block>

+                        </outcome>

+                    </switch>

+                </for>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/ss-vnf-unassign.log' />

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_send-so-response.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_send-so-response.xml
new file mode 100644
index 0000000..bf4c264
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_send-so-response.xml
@@ -0,0 +1,44 @@
+<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='send-so-response' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name="so.response-message" value="`$error-message`" />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + 'so-response.json'`" />

+                <parameter name='restapiUrl' value="`$so.notification-url`" />

+                <parameter name='restapiUser' value='`$prop.so.user`' />

+                <parameter name='restapiPassword' value='`$prop.so.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='POST' />

+                <parameter name="responsePrefix" value="soResponse-vnf-assign" />

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="`'Error sending SO response. ' + $error-message`" />

+                        </set>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`$error-message`" />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="`'Error sending SO response. ' + $error-message`" />

+                        </set>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`$error-message`" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation-assign.xml
new file mode 100755
index 0000000..c9300bd
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation-assign.xml
@@ -0,0 +1,228 @@
+<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='service-topology-operation-assign' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-topology-operation-input.request-information.request-action`'>

+                <outcome value='CreateServiceInstance'>

+                    <block></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="If svc-action is 'assign' then request-action must be 'CreateServiceInstance'" />

+                    </return>

+                </outcome>

+            </switch>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from SERVICE_MODEL WHERE service_uuid = $service-topology-operation-input.service-information.onap-model-information.model-uuid'

+  pfx='db.service-model'>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error reading SERVICE_MODEL table" />

+                    </return>

+                </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="`'No model found for service UUID ' + $service-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <set>

+                <parameter name='tmp.service-instance-name' value='' />

+            </set>

+            <switch test='`$service-topology-operation-input.service-request-input.service-instance-name`'>

+                <outcome value=''>

+                    <block atomic="true">

+                        <switch test='`$db.service-model.ecomp-naming`'>

+                            <outcome value='Y'>

+                                <block></block>

+                            </outcome>

+                            <outcome value='N'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="No service-instance-name was received but ecomp-naming is not Y" />

+                                </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="No service-instance-name was received but ecomp-naming is not Y" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$db.service-model.naming-policy`'>

+                            <outcome value=''>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='generate-unique-name-input.action' value='ASSIGN' />

+                                        <parameter name='generate-unique-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />

+                                        <parameter name='generate-unique-name-input.index-table-name' value='SERVICE_INSTANCE_NAME_INDEX' />

+                                        <parameter name='generate-unique-name-input.index-table-prefix-column' value='service_instance_name_prefix' />

+                                        <parameter name='generate-unique-name-input.name-table-type' value='SERVICE_INSTANCE' />

+                                        <parameter name='generate-unique-name-input.prefix' value="`$db.service-model.service-instance-name-prefix + '_'`" />

+                                    </set>

+                                    <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='success'>

+                                            <set>

+                                                <parameter name='tmp.service-instance-name' value='`$generate-unique-name-output.generated-name`' />

+                                            </set>

+                                        </outcome>

+                                    </call>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='generated-via-policy' value='true' />

+                                    </set>

+                                    <set>

+                                        <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.service-model.naming-policy`' />

+                                        <parameter name='naming-policy-generate-name-input.naming-type' value='SERVICE' />

+                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />

+                                        <parameter name='naming-policy-generate-name-input.query-parameter' value='`$db.service-model.service-uuid`' />

+                                        <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />

+                                    </set>

+                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="Unable to generate service name" />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='success'>

+                                            <set>

+                                                <parameter name='tmp.service-instance-name' value='`$naming-policy-generate-name-output.service-name`' />

+                                            </set>

+                                        </outcome>

+                                    </call>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='generate-unique-name-input.name-table-type' value='SERVICE_INSTANCE' />

+                            <parameter name='generate-unique-name-input.supplied-name' value='`$service-topology-operation-input.service-request-input.service-instance-name`' />

+                            <parameter name='generate-unique-name-input.service-instance-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />

+                        </set>

+                        <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />

+                                </return>

+                            </outcome>

+                            <outcome value='success'>

+                                <set>

+                                    <parameter name='tmp.service-instance-name' value="`$service-topology-operation-input.service-request-input.service-instance-name`" />

+                                </set>

+                            </outcome>

+                        </call>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $service-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="service-instance" 

+		key="customer.global-customer-id = $service-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $service-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-topology-operation-input.service-information.service-instance-id"

+        pfx='pfx' local-only='false' force='false'>

+                <parameter name="service-instance-name" value="`$tmp.service-instance-name`" />

+                <parameter name="selflink" value="`$service-object-path`" />

+                <outcome value='failure'>

+                    <block>

+                        <block atomic="true">

+                            <set>

+                                <parameter name='naming-policy-generate-name-input.naming-type' value='SERVICE' />

+                                <parameter name='naming-policy-generate-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />

+                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                            </set>

+                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                        </block>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="Failure calling AAI to update the service instance" />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block>

+                        <block atomic="true">

+                            <set>

+                                <parameter name='naming-policy-generate-name-input.naming-type' value='SERVICE' />

+                                <parameter name='naming-policy-generate-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />

+                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                            </set>

+                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                        </block>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="The service instance does not exist in AAI" />

+                        </return>

+                    </block>

+                </outcome>

+            </update>

+            <set>

+                <parameter name='service-data.service-topology.service-topology-identifier.service-instance-id'

+  value='`$service-topology-operation-input.service-information.service-instance-id`' />

+                <parameter name='service-data.service-topology.service-topology-identifier.service-type'

+  value='`$service-topology-operation-input.service-information.subscription-service-type`' />

+                <parameter name='service-data.service-topology.service-topology-identifier.service-instance-name'

+  value='`$tmp.service-instance-name`' />

+                <parameter name='service-data.service-topology.service-topology-identifier.global-customer-id'

+  value='`$service-topology-operation-input.service-information.global-customer-id`' />

+            </set>

+            <set>

+                <parameter name='service-data.service-topology.onap-model-information.'

+  value='`$service-topology-operation-input.service-information.onap-model-information.`' />

+            </set>

+            <switch test='`$service-topology-operation-input.service-request-input.service-input-parameters.param_length`'>

+                <outcome value=''>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <for index='idx' start='0' end='`$service-topology-operation-input.service-request-input.service-input-parameters.param_length`' >

+                        <set>

+                            <parameter name='service-data.service-topology.service-parameters[$idx].service-parameter-name'

+  value='`$service-topology-operation-input.service-request-input.service-input-parameters.param[$idx].name`' />

+                            <parameter name='service-data.service-topology.service-parameters[$idx].service-parameter-value'

+  value='`$service-topology-operation-input.service-request-input.service-input-parameters.param[$idx].value`' />

+                        </set>

+                    </for>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='service-data.service-level-oper-status.order-status' value='Created' />

+                <parameter name='service-data.service-level-oper-status.last-rpc-action' value='assign' />

+                <parameter name='service-data.service-level-oper-status.last-action' value='CreateServiceInstance' />

+            </set>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation-changeassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation-changeassign.xml
new file mode 100755
index 0000000..c018b1a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation-changeassign.xml
@@ -0,0 +1,63 @@
+<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='service-topology-operation-changeassign' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-topology-operation-input.request-information.request-action`'>

+                <outcome value='CreateServiceInstance'>

+                    <block></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="If svc-action is 'changeassign' then request-action must be 'CreateServiceInstance'" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.service-topology.service-topology-identifier.service-instance-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="`'Service ' + $service-topology-operation-input.service-information.service-instance-id + ' is not found'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from SERVICE_MODEL WHERE service_uuid = $service-topology-operation-input.service-information.onap-model-information.model-uuid'

+  pfx='db.service-model'>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error reading SERVICE_MODEL table" />

+                    </return>

+                </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="`'No model found for service UUID ' + $service-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <set>

+                <parameter name='service-data.service-topology.onap-model-information.'

+  value='`$service-topology-operation-input.service-information.onap-model-information.`' />

+            </set>

+            <set>

+                <parameter name='service-data.service-level-oper-status.order-status' value='Created' />

+                <parameter name='service-data.service-level-oper-status.last-rpc-action' value='changeassign' />

+                <parameter name='service-data.service-level-oper-status.last-action' value='CreateServiceInstance' />

+            </set>

+            <set>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $service-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <return status='success'></return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation-deactivate.xml
new file mode 100755
index 0000000..89cc3eb
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation-deactivate.xml
@@ -0,0 +1,67 @@
+<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='service-topology-operation-deactivate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.service-topology.service-topology-identifier.service-instance-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="`'Service ' + $service-topology-operation-input.service-information.service-instance-id + ' is not found'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-topology-operation-input.request-information.request-action`'>

+                <outcome value='DeleteServiceInstance'>

+                    <block></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="If svc-action is 'deactivate' then request-action must be 'DeleteServiceInstance'" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.provided-allotted-resources.provided-allotted-resource_length`'>

+                <outcome value='0'>

+                    <block></block>

+                </outcome>

+                <outcome value=''>

+                    <block></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="Cannot deactivate this service because there are provided allotted resources" />

+                    </return>

+                </outcome>

+            </switch>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="service-instance" 

+		key="customer.global-customer-id = $service-data.service-topology.service-topology-identifier.global-customer-id AND

+			service-subscription.service-type = $service-data.service-topology.service-topology-identifier.service-type AND

+			service-instance.service-instance-id = $service-topology-operation-input.service-information.service-instance-id"

+        pfx='pfx' local-only='false' force='false'>

+                <parameter name="orchestration-status" value="PendingDelete" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="AAI failed" />

+                    </return>

+                </outcome>

+                <outcome value='not-found'>

+                    <block></block>

+                </outcome>

+            </update>

+            <set>

+                <parameter name='service-data.service-level-oper-status.order-status' value='PendingDelete' />

+                <parameter name='service-data.service-level-oper-status.last-rpc-action' value='deactivate' />

+                <parameter name='service-data.service-level-oper-status.last-action' value='DeleteServiceInstance' />

+            </set>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation-delete.xml
new file mode 100755
index 0000000..5270874
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation-delete.xml
@@ -0,0 +1,100 @@
+<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='service-topology-operation-delete' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.service-topology.service-topology-identifier.service-instance-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="`'Service ' + $service-topology-operation-input.service-information.service-instance-id + ' is not found'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-topology-operation-input.request-information.request-action`'>

+                <outcome value='DeleteServiceInstance'>

+                    <block></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="If svc-action is 'delete' then request-action must be 'DeleteServiceInstance'" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.networks.network_length`'>

+                <outcome value='0'>

+                    <block></block>

+                </outcome>

+                <outcome value=''>

+                    <block></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="Cannot delete the service because there are networks defined" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value='0'>

+                    <block></block>

+                </outcome>

+                <outcome value=''>

+                    <block></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="Cannot delete the service because there are VNFs defined" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.provided-allotted-resources.provided-allotted-resource_length`'>

+                <outcome value='0'>

+                    <block></block>

+                </outcome>

+                <outcome value=''>

+                    <block></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="Cannot deactivate this service because there are provided allotted resources" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>

+                <outcome value='0'>

+                    <block></block>

+                </outcome>

+                <outcome value=''>

+                    <block></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="Cannot deactivate this service because there are consumed allotted resources" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='naming-policy-generate-name-input.naming-type' value='SERVICE' />

+                <parameter name='naming-policy-generate-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />

+                <parameter name='naming-policy-generate-name-input.query-parameter' value='`$service-data.service-topology.onap-model-information.model-uuid`' />

+                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+            <set>

+                <parameter name='service-data.' value='' />

+                <parameter name='service-status.' value='' />

+            </set>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation.xml
new file mode 100755
index 0000000..1cf7718
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_service-topology-operation.xml
@@ -0,0 +1,41 @@
+<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='service-topology-operation' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-service-input' mode='sync' ></call>

+            <set>

+                <parameter name='service-data.sdnc-request-header.' value='`$service-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.request-information.' value='`$service-topology-operation-input.request-information.`' />

+                <parameter name='service-data.service-information.' value='`$service-topology-operation-input.service-information.`' />

+                <parameter name='service-data.service-request-input.' value='`$service-topology-operation-input.service-request-input.`' />

+            </set>

+            <switch test='`$service-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='assign'>

+                    <call module='GENERIC-RESOURCE-API' rpc='service-topology-operation-assign' mode='sync' ></call>

+                </outcome>

+                <outcome value='deactivate'>

+                    <call module='GENERIC-RESOURCE-API' rpc='service-topology-operation-deactivate' mode='sync' ></call>

+                </outcome>

+                <outcome value='delete'>

+                    <call module='GENERIC-RESOURCE-API' rpc='service-topology-operation-delete' mode='sync' ></call>

+                </outcome>

+                <outcome value='changeassign'>

+                    <call module='GENERIC-RESOURCE-API' rpc='service-topology-operation-changeassign' mode='sync' ></call>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`$service-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-activate.xml
new file mode 100644
index 0000000..4d75a2f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-activate.xml
@@ -0,0 +1,133 @@
+<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='tunnelxconn-topology-operation-activate' mode='sync'>

+<block atomic="true"><set>

+<parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+<parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+<parameter name='tmp.ar.brg-vnf-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.tunnelxconn-vnf-id`' />

+

+

+</set><set>

+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/tunnelxconn-topology/'` " />

+

+</set><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><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.restapi.tx-allottedresource`"/>

+    <parameter name="outputPath" value="tmp.ar-url"/>

+    <parameter name="target" value="{allotted-resource-id}"/>

+    <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='GET' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block atomic="true">

+<set>

+<parameter name='bk-tx-ar' value='$mdsal-ar.' />

+</set><switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>

+<outcome value='1'>

+<block atomic='true'>

+<set>

+<parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />

+</set><switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+<outcome value='Created'>

+<block>

+</block></outcome><outcome value='Other'>

+<block>

+</block></outcome></switch><set>

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+

+</set></block></outcome></switch></block></outcome><outcome value='Other'>

+<block atomic="true">

+</block></outcome></execute><set>

+<parameter name='tx-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+<parameter name='tx-ar.allotted-resource-status.action' value="`$tunnelxconn-topology-operation-input.request-information.request-action` " />

+<parameter name='tx-ar.allotted-resource-status.rpc-name' value="tunnelxconn-topology-operation" />

+<parameter name='tx-ar.allotted-resource-status.rpc-action' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$tunnelxconn-topology-operation-input.request-information.` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$tunnelxconn-topology-operation-input.service-information.` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` " /></set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+    <parameter name="outputPath" value="tmp.current-time" />

+

+</execute><set>

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+</set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $tunnelxconn-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $tunnelxconn-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id"

+        pfx='pfx' local-only='false' force='false'>

+	<parameter name="operational-status" value="in-service-path" />

+

+

+<!--

+

+<set>

+$tunnelxconn-topology-operation-input.service-information.global-customer-id

+$tunnelxconn-topology-operation-input.service-information.subscription-service-type

+

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id"

+			

+			$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id

+			

+--><outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="AAI failed" />

+</return></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="AAI failed" />

+</return></outcome></update><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`" />

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='PUT' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block>

+</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 updating md-sal for tunnelxconn-allotted-resource" />

+</return></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="Error updating md-sal for tunnelxconn-allotted-resource" />

+</return></outcome></execute><set>

+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+<parameter name='tunnelxconn-object-path' value="`$tmp.ar.self-link`"/>

+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $tunnelxconn-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-assign.xml
new file mode 100644
index 0000000..58f73f8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-assign.xml
@@ -0,0 +1,272 @@
+<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='tunnelxconn-topology-operation-assign' mode='sync'>

+<block atomic="true"><set>

+<parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+<parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+<parameter name='tmp.search.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+

+

+</set><set>

+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/tunnelxconn-topology/'` " />

+

+</set><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><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.restapi.tx-allottedresource`"/>

+    <parameter name="outputPath" value="tmp.ar-url"/>

+    <parameter name="target" value="{allotted-resource-id}"/>

+    <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='GET' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='Other'>

+

+<call module='GENERIC-RESOURCE-API' rpc='get-vnf-api-parent-instance' mode='sync' >

+<outcome value='success'>

+<block atomic="true">

+<set>

+<parameter name='tx-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+<parameter name='tx-ar.allotted-resource-status.action' value="`$tunnelxconn-topology-operation-input.request-information.request-action` " />

+<parameter name='tx-ar.allotted-resource-status.rpc-name' value="tunnelxconn-topology-operation" />

+<parameter name='tx-ar.allotted-resource-status.rpc-action' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$tunnelxconn-topology-operation-input.request-information.` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$tunnelxconn-topology-operation-input.service-information.` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` " /></set><set>

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+

+</set><set>

+<parameter name='tx-ar-identifiers.consuming-service-instance-id' value="`$tunnelxconn-topology-operation-input.service-information.service-instance-id` " />

+<parameter name='tx-ar-identifiers.parent-service-instance-id' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />

+<parameter name='tx-ar-identifiers.allotted-resource-type' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type` " />

+<parameter name='tx-ar-identifiers.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+

+</set><set>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.' 

+value="`$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.`" />

+

+

+</set><switch test='$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid'>

+<outcome value=''>

+<set>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-invariant-uuid' 

+value="`$ar-model.invariant-uuid`" />

+

+

+</set></outcome></switch><switch test='$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid'>

+<outcome value=''>

+<set>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-uuid' 

+value="`$ar-model.uuid`" />

+

+

+</set></outcome></switch><switch test='$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-version'>

+<outcome value=''>

+<set>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-version' 

+value="`$ar-model.version`" />

+

+

+</set></outcome></switch><switch test='`$ar-model.ecomp-generated-naming`'>

+<outcome value='Y'>

+<block atomic="true">

+<switch test='`$ar-model.naming-policy`'>

+<outcome value='oam_network_policy'>

+<block atomic='true'>

+<set>

+<parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />

+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$tmp.ar-name`"/>

+    <parameter name="outputPath" value="tmp.ar-name"/>

+    <parameter name="target" value="$TenantOAMNetworkRole"/>

+    <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.untrusted-network-role`"/>

+

+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$tmp.ar-name`"/>

+    <parameter name="outputPath" value="tmp.ar-name"/>

+    <parameter name="target" value="$LandingNetworkRole"/>

+    <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.trusted-network-role`"/>

+

+</execute><set>

+<parameter name='tx-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />

+</set></block></outcome><outcome value='Other'>

+<block atomic='true'>

+<set>

+<parameter name='tmp.ar-name' value='$TenantOAMNetworkRole_$LandingNetworkRole_SZ' />

+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$tmp.ar-name`"/>

+    <parameter name="outputPath" value="tmp.ar-name"/>

+    <parameter name="target" value="$TenantOAMNetworkRole"/>

+    <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.untrusted-network-role`"/>

+

+</execute><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$tmp.ar-name`"/>

+    <parameter name="outputPath" value="tmp.ar-name"/>

+    <parameter name="target" value="$LandingNetworkRole"/>

+    <parameter name="replacement" value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.trusted-network-role`"/>

+

+</execute><set>

+<parameter name='tx-ar-identifiers.allotted-resource-name' value='`$tmp.ar-name`' />

+</set></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="Error in allotted-resource-model data.  Ecomp-generated-naming should be true" />

+

+</return></outcome></switch><set>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.' value="`$tx-ar-identifiers.`" />

+

+

+</set><set>

+<parameter name='tmp.vni' value='123' />

+<parameter name='tmp.vgmux-bearer-ip' value='127.0.0.1' />

+<parameter name='tmp.vgmux-lan-ip' value='127.0.0.1' /></set><switch test="`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters_length != ''`">

+<outcome value='true'>

+<for index='curidx' start='0' end='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters_length`' >

+<switch test='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$curidx].vnf-parameter-name`'>

+<outcome value='vgmux_private_ip_0'>

+<set>

+<parameter name='tmp.vgmux-lan-ip' value='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$curidx].vnf-parameter-value`'/>

+

+</set></outcome><outcome value='vgmux_private_ip_2'>

+<set>

+<parameter name='tmp.vgmux-bearer-ip' value='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$curidx].vnf-parameter-value`'/>

+

+</set></outcome></switch></for></outcome></switch><set>

+<parameter name='tmp.manageVni.action' value='reserve' />

+<parameter name='tmp.manageIpaddr.action' value='reserve' />

+<parameter name='tmp.manageVni.pool' value='VNI'/>

+<parameter name='tmp.manageIpaddr.pool' value='VGW'/></set><call module='GENERIC-RESOURCE-API' rpc='manage-vni-assignment' mode='sync' >

+</call><call module='GENERIC-RESOURCE-API' rpc='manage-ipaddr-assignment' mode='sync' >

+</call><set>

+<parameter name='tx-ar-assignments.vni' value='`$tmp.manageVni.vni`'/>

+<parameter name='tx-ar-assignments.vgmux-bearer-ip' value='`$tmp.vgmux-bearer-ip`'/>

+<parameter name='tx-ar-assignments.vgmux-lan-ip' value='`$tmp.vgmux-lan-ip`'/>

+<parameter name='tx-ar-assignments.vg-ip' value='`$tmp.manageIpaddr.ip`'/>

+

+</set><set>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[0].name' value='VNI'/>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[0].value' value='`$tmp.manageVni.vni`'/>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[1].name' value='vgmux_private_ip_2'/>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[1].value' value='`$tmp.vgmux-bearer-ip`'/>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[2].name' value='vgmux_private_ip_0'/>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[2].value' value='`$tmp.vgmux-lan-ip`'/>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[3].name' value='vgw_private_ip_0'/>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters.param[3].value' value='`$tmp.manageIpaddr.ip`'/>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-parameters_length' value='4'/>

+

+</set><set>

+<parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.' 

+value="`$tx-ar-assignments.`" />

+

+

+</set><switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>

+<outcome value=''>

+<set>

+<parameter name='tmp.cidx' value="`0`" />

+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value="1" />

+

+

+</set></outcome><outcome value='Other'>

+<block atomic="true"><for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >

+<switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">

+

+<outcome value='true'>

+<block atomic="true"><set>

+<parameter name='tmp.cidx' value='`$cidx`' />

+<parameter name='ctx.consumed-ar.' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].`' />

+<parameter name='tmp.found-cidx' value='true' /></set></block></outcome></switch></for><switch test='`$tmp.found-cidx`'>

+<outcome value='false'>

+<block atomic="true"><set>

+<parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />

+</set></block></outcome></switch></block></outcome></switch><set>

+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type` " />

+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value="`$tmp.ar.self-link` " />

+<parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />

+

+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+    <parameter name="outputPath" value="tmp.current-time" />

+

+</execute><set>

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingCreate' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+</set><set>

+<parameter name='service-data.service-information.global-customer-id' value='`$tunnelxconn-topology-operation-input.service-information.global-customer-id`' />

+<parameter name='service-data.service-information.subscription-service-type' value='`$tunnelxconn-topology-operation-input.service-information.subscription-service-type`' />

+<!--

+<parameter name='service-data.service-information.service-instance-id' value='`$tunnelxconn-topology-operation-input.service-information.service-instance-id`' />

+-->

+<parameter name='service-data.service-information.service-instance-id' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`"/></set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id"

+        pfx='pfx' local-only='false' force='false'>

+	<parameter name="description" value="`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type`" />

+	<parameter name="selflink" value="`$tmp.ar.self-link`" />

+	<parameter name="model-invariant-id" value="`$ar-model.invariant-uuid`" />

+	<parameter name="model-version-id" value="`$ar-model.uuid`" />

+	<parameter name="operational-status" value="null" /><outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="AAI failed" />

+</return></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="AAI failed" />

+</return></outcome></update><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`" />

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='PUT' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block>

+</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 updating md-sal for tunnelxconn-allotted-resource" />

+</return></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="Error updating md-sal for tunnelxconn-allotted-resource" />

+</return></outcome></execute><set>

+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+<parameter name='tunnelxconn-object-path' value="`$tmp.ar.self-link`"/>

+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $tunnelxconn-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></outcome><outcome value='Other'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" 

+    value="`'No entry found for parent service instance id ' + $tmp.ar.parent-service-instance-id + '.'`" />

+</return></outcome></call></outcome></execute></block></method></service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-create.xml
new file mode 100644
index 0000000..8071065
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-create.xml
@@ -0,0 +1,300 @@
+<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='tunnelxconn-topology-operation-create' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+                <parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/' + $tmp.ar.allotted-resource-id + '/allotted-resource-data/tunnelxconn-topology/'` " />

+            </set>

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.tx-allottedresource`"/>

+                <parameter name="outputPath" value="tmp.ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='bk-tx-ar' value='$mdsal-ar.' />

+                        </set>

+                        <switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>

+                            <outcome value='1'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />

+                                    </set>

+                                    <switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+                                        <outcome value='PendingCreate'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block></block>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+                                        <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />

+                                        <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='tx-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+                <parameter name='tx-ar.allotted-resource-status.action' value="`$tunnelxconn-topology-operation-input.request-information.request-action` " />

+                <parameter name='tx-ar.allotted-resource-status.rpc-name' value="tunnelxconn-topology-operation" />

+                <parameter name='tx-ar.allotted-resource-status.rpc-action' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` " />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$tunnelxconn-topology-operation-input.request-information.` " />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.` " />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$tunnelxconn-topology-operation-input.service-information.` " />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.` " />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+                <parameter name="outputPath" value="tmp.current-time" />

+            </execute>

+            <set>

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='IPADDR' key="SELECT min(ip_addr) ip from DHCP_MAP where mac_addr = $tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.brg-wan-mac-address" pfx="tmp.brg-wan-ip" ></get-resource>

+            <set>

+                <parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip' value='`$tmp.brg-wan-ip.ip`' />

+            </set>

+            <set>

+                <parameter name='tmp.tunnel-vgMUX-vG-name' value="`'vxlanTun' + $tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip` " />

+                <parameter name='tmp.tunnel-vgMUX-vBRG-name' value="`'vxlanTun' + $tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip` " />

+            </set>

+            <set>

+                <parameter name='tmp.search.parent-service-instance-id' value='`$tmp.ar.parent-service-instance-id`' />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='get-vnf-api-parent-instance' mode='sync' ></call>

+            <for index='paramidx' start='0' end='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters_length`' >

+                <!--

+            <for index='paramidx' start='0' end='`$parent-service-instance.vnf-topology-information.vnf-parameters_length`' >

+                -->

+                <switch test='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-name == vgmux_private_ip_1`'>

+                    <!--

+                <switch test='`$parent-service-instance.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-name == vgmux_private_ip_1`'>

+                    -->

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip' value='`$parent-service-instance.service-data.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-value`' />

+                            <!--

+                             <parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip' value='`$parent-service-instance.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-value`' />

+

+                            -->

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.honeycomb.url`"/>

+                <parameter name="outputPath" value="tmp.honeycomb.url"/>

+                <parameter name="target" value="{honeycomb-instance-ip}"/>

+                <parameter name="replacement" value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip`"/>

+            </execute>

+            <set>

+                <parameter name='tmp.tunnel-name' value="`$tmp.tunnel-vgMUX-vG-name` " />

+                <parameter name='tmp.tunnel-dest-ip' value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip` " />

+                <parameter name='tmp.tunnel-src-ip' value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-bearer-ip` " />

+                <parameter name='tmp.tunnel-vni' value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vni` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>

+                <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>

+                <parameter name="target" value="{tunnel-name}"/>

+                <parameter name="replacement" value="`$tmp.tunnel-name`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.vxlan-tunnel.templatefile`" />

+                <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />

+                <parameter name='restapiUser' value='`$prop.honeycomb.user`' />

+                <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="honeycomb-vnf" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='tmp.tunnel-name' value="`$tmp.tunnel-vgMUX-vBRG-name` " />

+                <parameter name='tmp.tunnel-dest-ip' value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip` " />

+                <parameter name='tmp.tunnel-src-ip' value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-lan-ip` " />

+                <parameter name='tmp.tunnel-vni' value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vni` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>

+                <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>

+                <parameter name="target" value="{tunnel-name}"/>

+                <parameter name="replacement" value="`$tmp.tunnel-name`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.vxlan-tunnel.templatefile`" />

+                <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />

+                <parameter name='restapiUser' value='`$prop.honeycomb.user`' />

+                <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="honeycomb-vnf" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='tmp.tunnel-name' value="`$tmp.tunnel-vgMUX-vG-name` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.xconnect.templatefile`" />

+                <parameter name='restapiUrl' value="`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `" />

+                <parameter name='restapiUser' value='`$prop.honeycomb.user`' />

+                <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="honeycomb-vnf" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='tmp.tunnel-name' value="`$tmp.tunnel-vgMUX-vG-name` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>

+                <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>

+                <parameter name="target" value="{tunnel-name}"/>

+                <parameter name="replacement" value="`$tmp.tunnel-name`"/>

+            </execute>

+            <set>

+                <parameter name='tmp.tunnel-name' value="`$tmp.tunnel-vgMUX-vBRG-name` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.vpp.xconnect.templatefile`" />

+                <parameter name='restapiUrl' value="`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `" />

+                <parameter name='restapiUser' value='`$prop.honeycomb.user`' />

+                <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="honeycomb-vnf" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+                <parameter name='tunnelxconn-object-path' value="`$tmp.ar.self-link`"/>

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $tunnelxconn-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-deactivate.xml
new file mode 100644
index 0000000..dc24e03
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-deactivate.xml
@@ -0,0 +1,117 @@
+<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='tunnelxconn-topology-operation-deactivate' mode='sync'>

+<block atomic="true"><set>

+<parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+<parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+

+

+</set><set>

+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/tunnelxconn-topology/'` " />

+

+</set><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><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.restapi.tx-allottedresource`"/>

+    <parameter name="outputPath" value="tmp.ar-url"/>

+    <parameter name="target" value="{allotted-resource-id}"/>

+    <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='GET' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block atomic="true">

+<set>

+<parameter name='bk-tx-ar' value='$mdsal-ar.' />

+</set><switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>

+<outcome value='1'>

+<block atomic='true'>

+<set>

+<parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />

+</set><switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+<outcome value='Created'>

+<block>

+</block></outcome><outcome value='Other'>

+<block>

+</block></outcome></switch><set>

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+

+</set></block></outcome></switch></block></outcome><outcome value='Other'>

+<block atomic="true">

+</block></outcome></execute><set>

+<parameter name='tx-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+<parameter name='tx-ar.allotted-resource-status.action' value="`$tunnelxconn-topology-operation-input.request-information.request-action` " />

+<parameter name='tx-ar.allotted-resource-status.rpc-name' value="tunnelxconn-topology-operation" />

+<parameter name='tx-ar.allotted-resource-status.rpc-action' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$tunnelxconn-topology-operation-input.request-information.` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$tunnelxconn-topology-operation-input.service-information.` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.` " />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` " /></set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+    <parameter name="outputPath" value="tmp.current-time" />

+

+</execute><set>

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+</set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $service-data.service-information.global-customer-id AND

+			service-subscription.service-type = $service-data.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $service-data.service-information.service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id"

+        pfx='pfx' local-only='false' force='false'>

+	<parameter name="operational-status" value="out-of-service-path" />

+<outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="AAI failed" />

+</return></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="AAI failed" />

+</return></outcome></update><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`" />

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='PUT' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block>

+</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 updating md-sal for tunnelxconn-allotted-resource" />

+</return></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="Error updating md-sal for tunnelxconn-allotted-resource" />

+</return></outcome></execute><set>

+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+<parameter name='tunnelxconn-object-path' value="`$tmp.ar.self-link`"/>

+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $tunnelxconn-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>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-delete.xml
new file mode 100644
index 0000000..d70fb60
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-delete.xml
@@ -0,0 +1,268 @@
+<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='tunnelxconn-topology-operation-delete' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+                <parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/' + $tmp.ar.allotted-resource-id + '/allotted-resource-data/tunnelxconn-topology/'` " />

+            </set>

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.tx-allottedresource`"/>

+                <parameter name="outputPath" value="tmp.ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='bk-tx-ar' value='$mdsal-ar.' />

+                        </set>

+                        <switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>

+                            <outcome value='1'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />

+                                    </set>

+                                    <switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+                                        <outcome value='Created'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block></block>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+                                        <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />

+                                        <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='tx-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+                <parameter name='tx-ar.allotted-resource-status.action' value="`$tunnelxconn-topology-operation-input.request-information.request-action` " />

+                <parameter name='tx-ar.allotted-resource-status.rpc-name' value="tunnelxconn-topology-operation" />

+                <parameter name='tx-ar.allotted-resource-status.rpc-action' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action` " />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$tunnelxconn-topology-operation-input.request-information.` " />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$tunnelxconn-topology-operation-input.sdnc-request-header.` " />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$tunnelxconn-topology-operation-input.service-information.` " />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$tunnelxconn-topology-operation-input.allotted-resource-information.` " />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.' value="`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+                <parameter name="outputPath" value="tmp.current-time" />

+            </execute>

+            <set>

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tunnelxconn-topology-operation-input.request-information.request-action`' />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`' />

+                <parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+            </set>

+            <set>

+                <parameter name='tx-ar-assignments.' value="" />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.tx.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='tmp.search.parent-service-instance-id' value='`$tmp.ar.parent-service-instance-id`' />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='get-vnf-api-parent-instance' mode='sync' ></call>

+            <for index='paramidx' start='0' end='`$parent-service-instance.vnf-topology-information.vnf-parameters_length`' >

+                <switch test='`$parent-service-instance.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-name == vgmux_private_ip_1`'>

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip' value='`$parent-service-instance.vnf-topology-information.vnf-parameters[$paramidx].vnf-parameter-value`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.honeycomb.url`"/>

+                <parameter name="outputPath" value="tmp.honeycomb.url"/>

+                <parameter name="target" value="{honeycomb-instance-ip}"/>

+                <parameter name="replacement" value="`$tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-mgmt-ip`"/>

+            </execute>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='IPADDR' key="SELECT min(ip_addr) ip from DHCP_MAP where mac_addr = $tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.brg-wan-mac-address" pfx="tmp.brg-wan-ip" ></get-resource>

+            <set>

+                <parameter name='tunnelxconn-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip' value='`$tmp.brg-wan-ip.ip`' />

+            </set>

+            <set>

+                <parameter name='tmp.tunnel-vgMUX-vG-name' value="`'vxlanTun' + $tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip` " />

+                <parameter name='tmp.tunnel-vgMUX-vBRG-name' value="`'vxlanTun' + $tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vbrg-wan-ip` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>

+                <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>

+                <parameter name="target" value="{tunnel-name}"/>

+                <parameter name="replacement" value="`$tmp.tunnel-vgMUX-vG-name`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value="`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `" />

+                <parameter name='restapiUser' value='`$prop.honeycomb.user`' />

+                <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='DELETE' />

+                <parameter name="responsePrefix" value="honeycomb-vnf" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>

+                <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>

+                <parameter name="target" value="{tunnel-name}"/>

+                <parameter name="replacement" value="`$tmp.tunnel-vgMUX-vBRG-name`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value="`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url + '/v3po:l2' `" />

+                <parameter name='restapiUser' value='`$prop.honeycomb.user`' />

+                <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='DELETE' />

+                <parameter name="responsePrefix" value="honeycomb-vnf" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />

+                <parameter name='restapiUser' value='`$prop.honeycomb.user`' />

+                <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='DELETE' />

+                <parameter name="responsePrefix" value="honeycomb-vnf" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.vpp-honeycomb`"/>

+                <parameter name="outputPath" value="tmp.vpp-honeycomb-url"/>

+                <parameter name="target" value="{tunnel-name}"/>

+                <parameter name="replacement" value="`$tmp.tunnel-vgMUX-vG-name`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$tmp.honeycomb.url + $tmp.vpp-honeycomb-url`' />

+                <parameter name='restapiUser' value='`$prop.honeycomb.user`' />

+                <parameter name='restapiPassword' value='`$prop.honeycomb.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='DELETE' />

+                <parameter name="responsePrefix" value="honeycomb-vnf" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for tunnelxconn-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+                <parameter name='tunnelxconn-object-path' value="`$tmp.ar.self-link`"/>

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + $tunnelxconn-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-unassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-unassign.xml
new file mode 100644
index 0000000..eaab7f2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation-unassign.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='tunnelxconn-topology-operation-unassign' mode='sync'>

+<block atomic="true"><set>

+<parameter name='tmp.ar.allotted-resource-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+<parameter name='tmp.ar.parent-service-instance-id' value='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+

+

+</set><set>

+<parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/tunnelxconn-topology/'` " />

+

+</set><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><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+    <parameter name="source" value="`$prop.restapi.tx-allottedresource`"/>

+    <parameter name="outputPath" value="tmp.ar-url"/>

+    <parameter name="target" value="{allotted-resource-id}"/>

+    <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+</execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='GET' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block atomic="true">

+<set>

+<parameter name='bk-tx-ar' value='$mdsal-ar.' />

+</set><switch test='`$mdsal-ar.tunnelxconn-allotted-resource_length`'>

+<outcome value='1'>

+<block atomic='true'>

+<set>

+<parameter name='tx-ar.' value='$mdsal-ar.tunnelxconn-allotted-resource[0].' />

+</set><switch test='`$tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+<outcome value='Created'>

+<block>

+</block></outcome><outcome value='Other'>

+<block>

+</block></outcome></switch><set>

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$tx-ar.allotted-resource-status.rpc-action`' />

+<parameter name='tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+

+</set></block></outcome></switch></block></outcome><outcome value='Other'>

+<block atomic="true">

+</block></outcome></execute><execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+    <parameter name='restapiUser' value='`$prop.controller.user`' />

+    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+    <parameter name='format' value='json' />

+    <parameter name='httpMethod' value='DELETE' />

+    <parameter name="responsePrefix" value="mdsal-ar" />

+

+<outcome value='success'>

+<block>

+</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 updating md-sal for tunnelxconn-allotted-resource" />

+</return></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="Error updating md-sal for tunnelxconn-allotted-resource" />

+</return></outcome></execute><set>

+<parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+<parameter name='tunnelxconn-object-path' value="`$tmp.ar.self-link`"/>

+<parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $tunnelxconn-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>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation.xml
new file mode 100644
index 0000000..277b74d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_tunnelxconn-topology-operation.xml
@@ -0,0 +1,26 @@
+<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='tunnelxconn-topology-operation' mode='sync'>

+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='validate-tunnelxconn-input' mode='sync' >

+</call><switch test='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`'>

+<outcome value='assign'>

+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-assign' mode='sync' >

+</call></block></outcome><outcome value='create'>

+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-create' mode='sync' >

+</call></block></outcome><outcome value='activate'>

+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-activate' mode='sync' >

+</call></block></outcome><outcome value='deactivate'>

+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-deactivate' mode='sync' >

+</call></block></outcome><outcome value='delete'>

+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-delete' mode='sync' >

+</call></block></outcome><outcome value='unassign'>

+<block atomic="true"><call module='GENERIC-RESOURCE-API' rpc='tunnelxconn-topology-operation-unassign' mode='sync' >

+</call></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="sdnc-request-header.svc-action is a required input" />

+</return></outcome></switch><set>

+<parameter name="ack-final" value="Y"/></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>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-api-contrail-route-input.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-api-contrail-route-input.xml
new file mode 100644
index 0000000..bf041b1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-api-contrail-route-input.xml
@@ -0,0 +1,319 @@
+<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-api-contrail-route-input' mode='sync'>
+        <block atomic="true">
+            <switch test='`$ctotmp.action`'>
+                <outcome value='create'>
+                    <block atomic="true">
+                        <switch test='`$cto-api.parent-service-instance-id`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.parent-service-instance-id is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.port-mirror-configuration-instance-id`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.port-mirror-configuration-instance-id is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.source-network-role`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.source-network-role is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.collector-network-role`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.collector-network-role is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.default-domain`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-domain is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.default-project`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-project is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.cloud-region-id`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.cloud-region-id is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.cloud-owner`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.cloud-owner is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.service-type`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.service-type is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.owning-entity`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.owning-entity is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='activate'>
+                    <block atomic="true">
+                        <switch test='`$cto-api.default-domain`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-domain is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.default-project`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-project is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.cloud-region-id`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.cloud-region-id is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.contrail-route-allotted-resource-id`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.src-contrail-network-fqdn is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.src-contrail-network-fqdn`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.src-contrail-network-fqdn is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.collector-contrail-network-fqdn`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.collector-contrail-network-fqdn is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.owning-entity`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.owning-entity is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='deactivate'>
+                    <block atomic="true">
+                        <switch test='`$cto-api.default-domain`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-domain is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.default-project`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-project is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.cloud-region-id`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.cloud-region-id is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.contrail-route-allotted-resource-id`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.src-contrail-network-fqdn is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.src-contrail-network-fqdn`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.src-contrail-network-fqdn is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.collector-contrail-network-fqdn`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.collector-contrail-network-fqdn is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.rollback-flag`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.rollback-flag is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.owning-entity`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.owning-entity is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='delete'>
+                    <block atomic="true">
+                        <switch test='`$cto-api.default-domain`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-domain is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.default-project`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.default-project is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.cloud-region-id`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.cloud-region-id is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.contrail-route-allotted-resource-id`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation:cto-api.src-contrail-network-fqdn is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.rollback-flag`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.rollback-flag is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.configuration-id`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.configuration-id is a required input" />
+                                </return>
+                            </outcome>
+                        </switch>
+                        <switch test='`$cto-api.owning-entity`'>
+                            <outcome value=''>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="API-contrail-route-topology-operation-create:cto-api.owning-entity is a required input" />
+                                </return>
+                            </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>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-bbs-network-input-parameters.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-bbs-network-input-parameters.xml
new file mode 100644
index 0000000..73bb52d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-bbs-network-input-parameters.xml
@@ -0,0 +1,118 @@
+<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-bbs-network-input-parameters' mode='sync'>
+        <block atomic="true">
+            <switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>
+                <outcome value='create'>
+                    <block atomic="true">
+                        <switch test='`$network-topology-operation-input.request-information.request-action`'>
+                            <outcome value='CreateAccessConnectivityInstance'>
+                                <switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>
+                                    <outcome value=''>
+                                        <return status='failure'>
+                                            <parameter name='ack-final' value='Y'/>
+                                            <parameter name="error-code" value="500" />
+                                            <parameter name="error-message" value="Error invalid request-action" />
+                                        </return>
+                                    </outcome>
+                                </switch>
+                            </outcome>
+                            <outcome value='CreateInternetProfileInstance'>
+                                <switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>
+                                    <outcome value=''>
+                                        <return status='failure'>
+                                            <parameter name='ack-final' value='Y'/>
+                                            <parameter name="error-code" value="500" />
+                                            <parameter name="error-message" value="Error invalid request-action" />
+                                        </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="Error invalid request-action" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='delete'>
+                    <block atomic="true">
+                        <switch test='`$network-topology-operation-input.request-information.request-action`'>
+                            <outcome value='DeleteAccessConnectivityInstance'>
+                                <switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>
+                                    <outcome value=''>
+                                        <return status='failure'>
+                                            <parameter name='ack-final' value='Y'/>
+                                            <parameter name="error-code" value="500" />
+                                            <parameter name="error-message" value="Error invalid request-action" />
+                                        </return>
+                                    </outcome>
+                                </switch>
+                            </outcome>
+                            <outcome value='DeleteInternetProfileInstance'>
+                                <switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>
+                                    <outcome value=''>
+                                        <return status='failure'>
+                                            <parameter name='ack-final' value='Y'/>
+                                            <parameter name="error-code" value="500" />
+                                            <parameter name="error-message" value="Error invalid request-action" />
+                                        </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="Error invalid request-action" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='update'>
+                    <block atomic="true">
+                        <switch test='`$network-topology-operation-input.request-information.request-action`'>
+                            <outcome value='Other'>
+                                <return status='failure'>
+                                    <parameter name='ack-final' value='Y'/>
+                                    <parameter name="error-code" value="500" />
+                                    <parameter name="error-message" value="Error invalid request-action" />
+                                </return>
+                            </outcome>
+                            <outcome value='ChangeInternetProfileInstance'>
+                                <switch test='$network-topology-operation-input.network-request-input.network-input-parameters.param_length'>
+                                    <outcome value=''>
+                                        <return status='failure'>
+                                            <parameter name='ack-final' value='Y'/>
+                                            <parameter name="error-code" value="500" />
+                                            <parameter name="error-message" value="Error invalid request-action" />
+                                        </return>
+                                    </outcome>
+                                </switch>
+                            </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="`$network-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
+                    </return>
+                </outcome>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="svc-action is null" />
+                    </return>
+                </outcome>
+            </switch>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-brg-input.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-brg-input.xml
new file mode 100644
index 0000000..57b493f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-brg-input.xml
@@ -0,0 +1,116 @@
+<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-brg-input' mode='sync'>

+<block atomic="true"><switch test='`$brg-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-action is a required input" />

+</return></outcome></switch><switch test='`$brg-topology-operation-input.sdnc-request-header.svc-request-id`'>

+<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='`$brg-topology-operation-input.service-information.service-instance-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="service-information.service-instance-id is a required input" />

+</return></outcome></switch><switch test='`$brg-topology-operation-input.sdnc-request-header.svc-action`'>

+<outcome value='assign'><block atomic="true"><switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />

+</return></outcome></switch><switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-type`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.allotted-resource-type is a required input" />

+</return></outcome></switch><switch test='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />

+</return></outcome></switch><switch test='`$brg-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="brg-information.onap-model-information.model-customization-uuid is a required input" />

+</return></outcome></switch><switch test='`$brg-topology-operation-input.brg-request-input.vgmux-bearer-ip`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="brg-topology-operation-input.brg-request-input.vlan-tag is a required input" />

+</return></outcome></switch><switch test='`$brg-topology-operation-input.brg-request-input.vni`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="brg-topology-operation-input.brg-request-input.vlan-tag is a required input" />

+</return></outcome></switch><switch test='`$brg-topology-operation-input.brg-request-input.brg-wan-mac-address `'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="brg-topology-operation-input.brg-request-input.vlan-tag is a required input" />

+</return></outcome></switch><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from ALLOTTED_RESOURCE_MODEL WHERE customization_uuid = $brg-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid'

+  pfx='ar-model'>

+

+<outcome value='not-found'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="`'No allotted resource model found for model customization UUID ' + $brg-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />

+</return></outcome><outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="`'No allotted resource model found for model customization UUID ' + $brg-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />

+</return></outcome></get-resource></block></outcome><outcome value='create'><block atomic="true"><switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />

+</return></outcome></switch><switch test='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />

+</return></outcome></switch></block></outcome><outcome value='activate'><block atomic="true"><switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />

+</return></outcome></switch><switch test='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />

+</return></outcome></switch></block></outcome><outcome value='deactivate'><block atomic="true"><switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />

+</return></outcome></switch><switch test='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />

+</return></outcome></switch></block></outcome><outcome value='delete'><block atomic="true"><switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />

+</return></outcome></switch><switch test='`$brg-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />

+</return></outcome></switch></block></outcome><outcome value='unassign'><block atomic="true"><switch test='`$brg-topology-operation-input.allotted-resource-information.allotted-resource-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />

+</return></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></method></service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-connection-attachment-input.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-connection-attachment-input.xml
new file mode 100644
index 0000000..ec0301a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-connection-attachment-input.xml
@@ -0,0 +1,331 @@
+<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-connection-attachment-input' mode='sync'>

+        <block atomic="true">

+            <switch test='`$connection-attachment-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='`$connection-attachment-topology-operation-input.service-information.service-instance-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="service-information.service-instance-id is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="service-information.parent-service-instance-id is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='create'>

+                    <block atomic="true">

+                        <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>

+                            <outcome value='CreateSOTNAttachmentInstance'>

+                                <block atomic="true">

+                                    <for index="i" start="0" end="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param_length`">

+                                        <block>

+                                            <set>

+                                                <parameter name='tmp.name' value='' />

+                                                <parameter name='tmp.value' value='' />

+                                            </set>

+                                            <set>

+                                                <parameter name='tmp.name' value="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].name`"/>

+                                                <parameter name='tmp.value' value="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].value`"/>

+                                            </set>

+                                            <switch test="`$tmp.name`">

+                                                <outcome value='sotnVpnName'>

+                                                    <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="`'$tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value='clientSignal'>

+                                                    <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="`'$tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value='access-provider-id'>

+                                                    <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="`'$tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value='access-client-id'>

+                                                    <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="`'$tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value='access-topology-id'></outcome>

+                                                <outcome value='access-node-id'>

+                                                    <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="`'$tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value='cVLAN'>

+                                                    <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="`'$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="`'network-topology-operation-input.network-request-input.network-input-parameters.param[' + $i + ']' + '.name is a required input'`" />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </for>

+                                </block>

+                            </outcome>

+                            <outcome value='CreateSDWANAttachmentInstance'>

+                                <block atomic="true">

+                                    <for index="i" start="0" end="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param_length`">

+                                        <block>

+                                            <set>

+                                                <parameter name='tmp.name' value='' />

+                                                <parameter name='tmp.value' value='' />

+                                            </set>

+                                            <set>

+                                                <parameter name='tmp.name' value="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].name`"/>

+                                                <parameter name='tmp.value' value="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].value`"/>

+                                            </set>

+                                            <switch test="`$tmp.name`">

+                                                <outcome value='sdwanVpnName'>

+                                                    <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="`'$tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value='role'>

+                                                    <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="`'$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="`'network-topology-operation-input.network-request-input.network-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="sdnc-request-header.request-action is invalid" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='activate'>

+                    <block atomic="true">

+                        <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>

+                            <outcome value='ActivateSOTNAttachmentInstance'>

+                                <block atomic="true">

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                        <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>

+                                    </execute>

+                                    <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-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>

+                                </block>

+                            </outcome>

+                            <outcome value='ActivateSDWANAttachmentInstance'>

+                                <block atomic="true">

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                        <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>

+                                    </execute>

+                                    <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-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>

+                                </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="sdnc-request-header.request-action is invalid" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='deactivate'>

+                    <block atomic="true">

+                        <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>

+                            <outcome value='DeactivateSDWANAttachmentInstance'>

+                                <block atomic="true">

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                        <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>

+                                    </execute>

+                                    <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-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>

+                                </block>

+                            </outcome>

+                            <outcome value='DeactivateSOTNAttachmentInstance'>

+                                <block atomic="true">

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                        <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>

+                                    </execute>

+                                    <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-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>

+                                </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 DeleteNetworkInstance for svc-action=delete" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='delete'>

+                    <block atomic="true">

+                        <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>

+                            <outcome value='DeleteSOTNAttachmentInstance'>

+                                <block atomic="true">

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                        <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>

+                                    </execute>

+                                    <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-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>

+                                </block>

+                            </outcome>

+                            <outcome value='DeleteSDWANAttachmentInstance'>

+                                <block atomic="true">

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                        <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>

+                                    </execute>

+                                    <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-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>

+                                </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 DeleteNetworkInstance for svc-action=delete" />

+                                </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="`$network-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />

+                    </return>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-contrail-route-input.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-contrail-route-input.xml
new file mode 100755
index 0000000..421335d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-contrail-route-input.xml
@@ -0,0 +1,337 @@
+<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-contrail-route-input' mode='sync'>
+        <block atomic="true">
+            <switch test='`$contrail-route-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-action is a required input" />
+                    </return>
+                </outcome>
+            </switch>
+            <switch test='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`'>
+                <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='`$contrail-route-topology-operation-input.request-information.request-action`'>
+                <outcome value='CreateContrailRouteInstance'>
+                    <block></block>
+                </outcome>
+                <outcome value='DeleteContrailRouteInstance'>
+                    <block></block>
+                </outcome>
+                <outcome value=''>
+                    <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 a required input" />
+                    </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="Invalid request-information.request-action " />
+                    </return>
+                </outcome>
+            </switch>
+            <switch test='`$contrail-route-topology-operation-input.service-information.service-instance-id`'>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="service-information.service-instance-id is a required input" />
+                    </return>
+                </outcome>
+            </switch>
+            <switch test='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`'>
+                <outcome value='assign'>
+                    <block atomic="true">
+                        <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
+                            <outcome value='CreateContrailRouteInstance'>
+                                <block atomic="true">
+                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-type is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="contrail-route-information.onap-model-information.model-customization-uuid is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-role`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-role is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-role`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="contrail-topology-operation-input.contrail-route-request-input.dest-network.network-role is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.service-instance-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.service-instance-id is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+  key='SELECT * from ALLOTTED_RESOURCE_MODEL WHERE customization_uuid = $contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid'
+  pfx='ar-model'>
+                                        <outcome value='not-found'>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="`'No alloted resource model found for model customization UUID ' + $contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />
+                                            </return>
+                                        </outcome>
+                                        <outcome value='failure'>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="`'No alloted resource model found for model customization UUID ' + $contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />
+                                            </return>
+                                        </outcome>
+                                    </get-resource>
+                                </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 a required to be CreateContrailRouteInstance for svc-action=assign" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='create'>
+                    <block atomic="true">
+                        <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
+                            <outcome value='CreateContrailRouteInstance'>
+                                <block atomic="true">
+                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+                                            </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 a required to be CreateNetworkInstance for svc-action=create" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='activate'>
+                    <block atomic="true">
+                        <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
+                            <outcome value='CreateContrailRouteInstance'>
+                                <block atomic="true">
+                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+                                            </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 a required to be CreateContrailRouteInstance for svc-action=activate" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='deactivate'>
+                    <block atomic="true">
+                        <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
+                            <outcome value='DeleteContrailRouteInstance'>
+                                <block atomic="true">
+                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+                                            </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 a required to be DeleteContrailRouteInstance for svc-action=deactivate" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='delete'>
+                    <block atomic="true">
+                        <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
+                            <outcome value='DeleteContrailRouteInstance'>
+                                <block atomic="true">
+                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+                                            </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 a required to be DeleteContrailRouteInstance for svc-action=delete" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='unassign'>
+                    <block atomic="true">
+                        <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
+                            <outcome value='DeleteContrailRouteInstance'>
+                                <block atomic="true">
+                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+                                            </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 a required to be DeleteContrailRouteInstance for svc-action=unassign" />
+                                </return>
+                            </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>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-generic-configuration-input.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-generic-configuration-input.xml
new file mode 100755
index 0000000..cc1bc1a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-generic-configuration-input.xml
@@ -0,0 +1,108 @@
+<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-generic-configuration-input' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.service-information.service-instance-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value="`'Service instance ' + $generic-configuration-topology-operation-input.service-information.service-instance-id + ' does not exist'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$generic-configuration-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-action is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$generic-configuration-topology-operation-input.sdnc-request-header.svc-request-id`'>

+                <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='`$generic-configuration-topology-operation-input.request-information.request-action`'>

+                <outcome value=''>

+                    <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 a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$generic-configuration-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='assign'>

+                    <switch test='`$generic-configuration-topology-operation-input.request-information.request-action`'>

+                        <outcome value='CreateGenericConfigurationInstance'>

+                            <block></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="`'If svc-action is ' + $generic-configuration-topology-operation-input.sdnc-request-header.svc-action + ' then request-action must be CreateGenericConfigurationInstance'`" />

+                            </return>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='activate'>

+                    <switch test='`$generic-configuration-topology-operation-input.request-information.request-action`'>

+                        <outcome value='CreateGenericConfigurationInstance'>

+                            <block></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="`'If svc-action is ' + $generic-configuration-topology-operation-input.sdnc-request-header.svc-action + ' then request-action must be CreateGenericConfigurationInstance'`" />

+                            </return>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='deactivate'>

+                    <switch test='`$generic-configuration-topology-operation-input.request-information.request-action`'>

+                        <outcome value='DeleteGenericConfigurationInstance'>

+                            <block></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="`'If svc-action is ' + $generic-configuration-topology-operation-input.sdnc-request-header.svc-action + ' then request-action must be DeleteGenericConfigurationInstance'`" />

+                            </return>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='unassign'>

+                    <switch test='`$generic-configuration-topology-operation-input.request-information.request-action`'>

+                        <outcome value='DeleteGenericConfigurationInstance'>

+                            <block></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="`'If svc-action is ' + $generic-configuration-topology-operation-input.sdnc-request-header.svc-action + ' then request-action must be DeleteGenericConfigurationInstance'`" />

+                            </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="`'Unsupported svc-action ' + $generic-configuration-topology-operation-input.sdnc-request-header.svc-action`" />

+                    </return>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-getpathsegment-input.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-getpathsegment-input.xml
new file mode 100755
index 0000000..3489544
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-getpathsegment-input.xml
@@ -0,0 +1,107 @@
+<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-getpathsegment-input' mode='sync'>

+        <block atomic="true">

+            <switch test='`$getpathsegment-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-action is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$getpathsegment-topology-operation-input.sdnc-request-header.svc-request-id`'>

+                <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='`$getpathsegment-topology-operation-input.request-information.request-action`'>

+                <outcome value=''>

+                    <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 a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="service-information.onap-model-information.model-uuid is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="service-information.onap-model-information.model-invariant-uuid is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$getpathsegment-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='create'>

+                    <block atomic="true">

+                        <switch test='`$getpathsegment-topology-operation-input.request-information.request-action`'>

+                            <outcome value='CreateForwardingPathInstance'>

+                                <block></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="service-information.subscription-service-type is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from SERVICE_MODEL WHERE service_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid'

+  pfx='db.service-model'>

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="System error reading SERVICE_MODEL table" />

+                                </return>

+                            </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="`'No service model found for service UUID ' + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from SERVICE_MODEL WHERE invariant_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid'

+  pfx='db.service-model'>

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="System error reading SERVICE_MODEL table" />

+                                </return>

+                            </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="`'No service model found for invariant UUID ' + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-network-input-parameters.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-network-input-parameters.xml
new file mode 100644
index 0000000..0987a77
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-network-input-parameters.xml
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<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-network-input-parameters" mode="sync">

+        <block atomic="true">

+            <switch test="`$network-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="`$network-topology-operation-input.sdnc-request-header.svc-action`">

+                <outcome value="create">

+                    <block atomic="true">

+                        <switch test="`$network-topology-operation-input.request-information.request-action`">

+                            <outcome value="CreateNetworkInstance">

+                                <block atomic="true">

+                                    <for index="i" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">

+                                        <block>

+                                            <set>

+                                                <parameter name="tmp.name" value="" />

+                                                <parameter name="tmp.value" value="" />

+                                            </set>

+                                            <set>

+                                                <parameter name="tmp.name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$i].name`" />

+                                                <parameter name="tmp.value" value="`$network-topology-operation-input.network-request-input.network-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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="service-type">

+                                                    <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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="site1-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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="site2-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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="sna1_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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="sna2_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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="pe1_id">

+                                                    <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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="pe2_id">

+                                                    <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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="ac1-id">

+                                                    <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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="ac2-id">

+                                                    <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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="ac1-ip">

+                                                    <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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="ac2-ip">

+                                                    <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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="ac1_peer_ip">

+                                                    <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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="ac2_peer_ip">

+                                                    <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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="ac1_svlan">

+                                                    <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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value="ac2_svlan">

+                                                    <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="`'network-request-input.network-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="`'network-topology-operation-input.network-request-input.network-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 CreateNetworkInstance for svc-action=create" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value="activate">

+                    <switch test="`$network-topology-operation-input.request-information.request-action`">

+                        <outcome value="ActivateDCINetworkInstance">

+                            <block atomic="true">

+                                <call module="GENERIC-RESOURCE-API" rpc="validate-overlay-network-input-parameters" mode="sync" />

+                            </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 ActivateNetworkInstance for svc-action=activate" />

+                            </return>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value="deactivate">

+                    <switch test="`$network-topology-operation-input.request-information.request-action`">

+                        <outcome value="DeActivateDCINetworkInstance">

+                            <block atomic="true">

+                                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="requiredParameters">

+                                    <parameter name="network-topology-operation-input.network-information.network-id" value="$network-topology-operation-input.network-information.network-id" />

+                                </execute>

+                                <switch test="`$network-topology-operation-input.network-information.network-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>

+                            </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 DeactivateNetworkInstance for svc-action=deactivate" />

+                            </return>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value="delete">

+                    <block atomic="true">

+                        <switch test="`$network-topology-operation-input.request-information.request-action`">

+                            <outcome value="DeleteNetworkInstance">

+                                <block atomic="true">

+                                    <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="requiredParameters">

+                                        <parameter name="network-topology-operation-input.network-information.network-id" value="$network-topology-operation-input.network-information.network-id" />

+                                    </execute>

+                                    <switch test="`$network-topology-operation-input.network-information.network-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>

+                                </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 DeleteNetworkInstance for svc-action=delete" />

+                                </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="`$network-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />

+                    </return>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-network-input.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-network-input.xml
new file mode 100644
index 0000000..87cf448
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-network-input.xml
@@ -0,0 +1,596 @@
+<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-network-input' mode='sync'>

+        <block atomic="true">

+            <switch test='`$network-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-action is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$network-topology-operation-input.sdnc-request-header.svc-request-id`'>

+                <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='`$network-topology-operation-input.request-information.request-action`'>

+                <outcome value=''>

+                    <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 a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$network-topology-operation-input.service-information.service-instance-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="service-information.service-instance-id is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$network-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='assign'>

+                    <block atomic="true">

+                        <switch test='`$network-topology-operation-input.request-information.request-action`'>

+                            <outcome value='CreateNetworkInstance'>

+                                <block atomic="true">

+                                    <switch test='`$network-topology-operation-input.network-information.network-id`'>

+                                        <outcome value=''>

+                                            <return status='success'>

+                                                <parameter name='' value='' />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block>

+                                                <switch test='`$service-data.networks.network_length`'>

+                                                    <outcome value=''>

+                                                        <record plugin="com.att.sdnctl.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="GENERIC-RESOURCE-API.validate-network-input"/>

+                                                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                            <parameter name="field4" value="Network id proveded but no network exists that matches"/>

+                                                            <parameter name="field5" value="`$network-topology-operation-input.network-information.network-id`"/>

+                                                        </record>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <block atomic="true">

+                                                            <for index='nidx' start='0' end='`$service-data.networks.network_length`' >

+                                                                <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">

+                                                                    <outcome value='true'>

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name='tmp.nidx' value='`$nidx`' />

+                                                                                <parameter name='network-data.' value='`$service-data.networks.network[$nidx].`' />

+                                                                            </set>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </for>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-information.network-instance-group-id`'>

+                                        <outcome value=''>

+                                            <return status='success'>

+                                                <parameter name='' value='' />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block>

+                                                <switch test='`$service-data.network-instance-groups.network-instance-group_length`'>

+                                                    <outcome value=''>

+                                                        <record plugin="com.att.sdnctl.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="GENERIC-RESOURCE-API.validate-network-input"/>

+                                                            <parameter name="field3" value="`$network-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                            <parameter name="field4" value="Network instance group id proveded but no network instance group exists that matches"/>

+                                                            <parameter name="field5" value="`$network-topology-operation-input.network-information.network-instance-group-id`"/>

+                                                        </record>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <block atomic="true">

+                                                            <for index='ngidx' start='0' end='`$service-data.network-instance-groups.network-instance-_length`' >

+                                                                <switch test="`$service-data.network-instance-groups.network-instance-group[$nidx].network-instance-group-id == $network-topology-operation-input.network-information.network-instance-group-id`">

+                                                                    <outcome value='true'>

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name='tmp.ngidx' value='`$ngidx`' />

+                                                                                <parameter name='ctx.network-instance-group-data.' value='`$service-data.network-instance-groups.network-instance-group[$ngidx].`' />

+                                                                            </set>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </for>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="network-information.onap-model-information.model-invariant-uuid is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="network-information.onap-model-information.model-customization-uuid is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-uuid`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="network-information.onap-model-information.model-uuid is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-request-input.tenant`'>

+                                        <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.tenant is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-request-input.aic-cloud-region`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="service-information.network-request-information.aic-cloud-region is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.service-information.onap-model-information.model-uuid`'>

+                                        <outcome value=''>

+                                            <block atomic="true">

+                                                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from SERVICE_MODEL WHERE service_uuid = $service-data.service-information.onap-model-information.model-uuid'

+  pfx='service-model'>

+                                                    <outcome value='not-found'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                </get-resource>

+                                                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from NETWORK_MODEL WHERE customization_uuid = $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid

+  and service_uuid = $service-data.service-information.onap-model-information.model-uuid'

+  pfx='network-model'>

+                                                    <outcome value='not-found'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No network model found for customization UUID ' 

+    + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +

+    ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No network model found for customization UUID ' 

+    + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +

+    ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                </get-resource>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block atomic="true">

+                                                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from SERVICE_MODEL WHERE service_uuid = $network-topology-operation-input.service-information.onap-model-information.model-uuid'

+  pfx='service-model'>

+                                                    <outcome value='not-found'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                </get-resource>

+                                                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from NETWORK_MODEL WHERE customization_uuid = $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid

+  and service_uuid = $network-topology-operation-input.service-information.onap-model-information.model-uuid'

+  pfx='network-model'>

+                                                    <outcome value='not-found'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No network model found for customization UUID ' 

+    + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +

+    ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No network model found for customization UUID ' 

+    + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +

+    ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                </get-resource>

+                                            </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="request-information.request-action is required to be CreateNetworkInstance for svc-action=assign" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='activate'>

+                    <block atomic="true">

+                        <switch test='`$network-topology-operation-input.request-information.request-action`'>

+                            <outcome value='ActivateSDWANConnectivityInstance'>

+                                <block atomic="true"></block>

+                            </outcome>

+                            <outcome value='ActivateSOTNConnectivityInstance'>

+                                <block atomic="true"></block>

+                            </outcome>

+                            <outcome value='ActivateDCINetworkInstance'>

+                                <block atomic="true"></block>

+                            </outcome>

+                            <outcome value='CreateNetworkInstance'>

+                                <block atomic="true">

+                                    <switch test='`$network-topology-operation-input.network-information.network-id`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="service-information.network-information.network-id is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="network-information.onap-model-information.model-invariant-uuid is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="network-information.onap-model-information.model-customization-uuid is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-uuid`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="network-information.onap-model-information.model-uuid is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-request-input.tenant`'>

+                                        <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.tenant is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-request-input.aic-cloud-region`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="service-information.network-request-information.aic-cloud-region is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.service-information.onap-model-information.model-uuid`'>

+                                        <outcome value=''>

+                                            <block atomic="true">

+                                                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from SERVICE_MODEL WHERE service_uuid = $service-data.service-information.onap-model-information.model-uuid'

+  pfx='service-model'>

+                                                    <outcome value='not-found'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                </get-resource>

+                                                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from NETWORK_MODEL WHERE customization_uuid = $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid

+  and service_uuid = $service-data.service-information.onap-model-information.model-uuid'

+  pfx='network-model'>

+                                                    <outcome value='not-found'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No network model found for customization UUID ' 

+    + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +

+    ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No network model found for customization UUID ' 

+    + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +

+    ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                </get-resource>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block atomic="true">

+                                                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from SERVICE_MODEL WHERE service_uuid = $network-topology-operation-input.service-information.onap-model-information.model-uuid'

+  pfx='service-model'>

+                                                    <outcome value='not-found'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No service model found for service UUID ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                </get-resource>

+                                                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from NETWORK_MODEL WHERE customization_uuid = $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid

+  and service_uuid = $network-topology-operation-input.service-information.onap-model-information.model-uuid'

+  pfx='network-model'>

+                                                    <outcome value='not-found'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No network model found for customization UUID ' 

+    + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +

+    ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='failure'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`'No network model found for customization UUID ' 

+    + $network-topology-operation-input.network-information.onap-model-information.model-customization-uuid +

+    ' and model-uuid ' + $network-topology-operation-input.service-information.onap-model-information.model-uuid`" />

+                                                        </return>

+                                                    </outcome>

+                                                </get-resource>

+                                            </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="request-information.request-action is required to be CreateNetworkInstance for svc-action=activate" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='changeassign'>

+                    <block atomic="true">

+                        <switch test='`$network-topology-operation-input.request-information.request-action`'>

+                            <outcome value='CreateNetworkInstance'>

+                                <block atomic="true">

+                                    <switch test='`$network-topology-operation-input.network-information.network-id`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="service-information.network-information.network-id is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-information.from-preload`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="network-information.from-preload is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="network-information.onap-model-information.model-invariant-uuid is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="network-information.onap-model-information.model-customization-uuid is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-information.onap-model-information.model-uuid`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="network-information.onap-model-information.model-uuid is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-request-input.tenant`'>

+                                        <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.tenant is a required input" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$network-topology-operation-input.network-request-input.aic-cloud-region`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="service-information.network-request-information.aic-cloud-region is a required input" />

+                                            </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 CreateNetworkInstance for svc-action=changeassign" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='deactivate'>

+                    <block atomic="true">

+                        <switch test='`$network-topology-operation-input.request-information.request-action`'>

+                            <outcome value='DeactivateSDWANConnectivityInstance'>

+                                <block atomic="true"></block>

+                            </outcome>

+                            <outcome value='DeactivateSOTNConnectivityInstance'>

+                                <block atomic="true"></block>

+                            </outcome>

+                            <outcome value='DeActivateDCINetworkInstance'>

+                                <block atomic="true"></block>

+                            </outcome>

+                            <outcome value='DeleteNetworkInstance'>

+                                <block atomic="true">

+                                    <switch test='`$network-topology-operation-input.network-information.network-id`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="service-information.network-information.network-id is a required input" />

+                                            </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 DeleteNetworkInstance for svc-action=deactivate" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='unassign'>

+                    <block atomic="true">

+                        <switch test='`$network-topology-operation-input.request-information.request-action`'>

+                            <outcome value='DeleteNetworkInstance'>

+                                <block atomic="true">

+                                    <switch test='`$network-topology-operation-input.network-information.network-id`'>

+                                        <outcome value=''>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="service-information.network-information.network-id is a required input" />

+                                            </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 DeleteNetworkInstance for svc-action=unassign" />

+                                </return>

+                            </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>

+    </method>

+</service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-overlay-network-input-parameters.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-overlay-network-input-parameters.xml
new file mode 100644
index 0000000..2e16622
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-overlay-network-input-parameters.xml
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<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-overlay-network-input-parameters" mode="sync">

+        <for index="idx" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">

+            <block atomic="true">

+                <block>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`">

+                        <outcome value="true">

+                            <block>

+                                <set>

+                                    <parameter name="validate.dci-connects.name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">

+                                    <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>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_id'`">

+                        <outcome value="true">

+                            <block>

+                                <set>

+                                    <parameter name="validate.dci-connects.site1_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">

+                                    <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>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_id'`">

+                        <outcome value="true">

+                            <block>

+                                <set>

+                                    <parameter name="validate.dci-connects.site2_id" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">

+                                    <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>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_networkName'`">

+                        <outcome value="true">

+                            <block>

+                                <set>

+                                    <parameter name="validate.dci-connects.site1_networkName" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">

+                                    <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>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_networkName'`">

+                        <outcome value="true">

+                            <block>

+                                <set>

+                                    <parameter name="validate.dci-connects.site2_networkName" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">

+                                    <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>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_routerId'`">

+                        <outcome value="true">

+                            <block>

+                                <set>

+                                    <parameter name="validate.dci-connects.site1_routerId" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">

+                                    <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>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_routerId'`">

+                        <outcome value="true">

+                            <block>

+                                <set>

+                                    <parameter name="validate.dci-connects.site2_routerId" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">

+                                    <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>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_importRT1'`">

+                        <outcome value="true">

+                            <block>

+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">

+                                    <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>

+                                <set>

+                                    <parameter name="validate.dci-connects.site1_importRT1" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_importRT1'`">

+                        <outcome value="true">

+                            <block>

+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">

+                                    <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>

+                                <set>

+                                    <parameter name="validate.dci-connects.site2_importRT1" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_exportRT1'`">

+                        <outcome value="true">

+                            <block>

+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">

+                                    <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>

+                                <set>

+                                    <parameter name="validate.dci-connects.site1_exportRT1" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_exportRT2'`">

+                        <outcome value="true">

+                            <block>

+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">

+                                    <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>

+                                <set>

+                                    <parameter name="validate.dci-connects.site1_exportRT2" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site1_vni'`">

+                        <outcome value="true">

+                            <block>

+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">

+                                    <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>

+                                <set>

+                                    <parameter name="validate.dci-connects.site1_vni" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'site2_vni'`">

+                        <outcome value="true">

+                            <block>

+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">

+                                    <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>

+                                <set>

+                                    <parameter name="validate.dci-connects.site2_vni" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'tunnelType'`">

+                        <outcome value="true">

+                            <block>

+                                <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`">

+                                    <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>

+                                <set>

+                                    <parameter name="prop.dci-connects.tunnelType" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`" />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+                <switch test="`$validate.dci-connects.tunnelType`">

+                    <outcome value="L3-DCI">

+                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="requiredParameters">

+                            <parameter name="`$network-topology-operation-input.network-request-input.network-input-parameters.site1_routerId`" value="" />

+                            <parameter name="`$network-topology-operation-input.network-request-input.network-input-parameters.site2_routerId`" value="" />

+                        </execute>

+                    </outcome>

+                    <outcome value="L2-DCI" />

+                    <outcome value="other">

+                        <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>

+            </block>

+        </for>

+    </method>

+</service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-pnf-input.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-pnf-input.xml
new file mode 100644
index 0000000..3c1ae0d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-pnf-input.xml
@@ -0,0 +1,86 @@
+<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-pnf-input' mode='sync'>

+        <block atomic="true">

+            <switch test='`$pnf-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-action is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$pnf-topology-operation-input.sdnc-request-header.svc-request-id`'>

+                <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='`$pnf-topology-operation-input.request-information.request-action`'>

+                <outcome value=''>

+                    <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 a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$pnf-topology-operation-input.service-information.service-instance-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="service-information.service-instance-id is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$pnf-topology-operation-input.pnf-details.pnf-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="pnf-details.pnf-id is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$pnf-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='assign'>

+                    <block atomic="true">

+                        <switch test='`$pnf-topology-operation-input.pnf-details.onap-model-information.model-customization-uuid`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="pnf-details.onap-model-information.model-customization-uuid is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$pnf-topology-operation-input.pnf-request-input.tenant`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="pnf-request-input.tenant is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$pnf-topology-operation-input.pnf-request-input.aic-cloud-region`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="pnf-request-input.aic-cloud-region is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-security-zone-input.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-security-zone-input.xml
new file mode 100755
index 0000000..0aaa7ba
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-security-zone-input.xml
@@ -0,0 +1,328 @@
+<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-security-zone-input' mode='sync'>
+        <block atomic="true">
+            <switch test='`$security-zone-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-action is a required input" />
+                    </return>
+                </outcome>
+            </switch>
+            <switch test='`$security-zone-topology-operation-input.sdnc-request-header.svc-request-id`'>
+                <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='`$security-zone-topology-operation-input.request-information.request-action`'>
+                <outcome value='CreateSecurityZoneInstance'>
+                    <block></block>
+                </outcome>
+                <outcome value='DeleteSecurityZoneInstance'>
+                    <block></block>
+                </outcome>
+                <outcome value=''>
+                    <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 a required input" />
+                    </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="Invalid request-information.request-action " />
+                    </return>
+                </outcome>
+            </switch>
+            <switch test='`$security-zone-topology-operation-input.service-information.service-instance-id`'>
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="service-information.service-instance-id is a required input" />
+                    </return>
+                </outcome>
+            </switch>
+            <switch test='`$security-zone-topology-operation-input.sdnc-request-header.svc-action`'>
+                <outcome value='assign'>
+                    <block atomic="true">
+                        <switch test='`$security-zone-topology-operation-input.request-information.request-action`'>
+                            <outcome value='CreateSecurityZoneInstance'>
+                                <block atomic="true">
+                                    <switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-type`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-type is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="security-zone-information.onap-model-information.model-customization-uuid is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$security-zone-topology-operation-input.security-zone-request-input.vlan-tag`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="security-zone-topology-operation-input.security-zone-request-input.vlan-tag is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$security-zone-topology-operation-input.security-zone-request-input.trusted-network-role`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="security-zone-topology-operation-input.security-zone-request-input.trusted-network-role is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$security-zone-topology-operation-input.security-zone-request-input.untrusted-network-role`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="security-zone-operation-input.security-zone-request-input.untrusted-network-role is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
+  key='SELECT * from ALLOTTED_RESOURCE_MODEL WHERE customization_uuid = $security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid'
+  pfx='ar-model'>
+                                        <outcome value='not-found'>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="`'No alloted resource model found for model customization UUID ' + $security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />
+                                            </return>
+                                        </outcome>
+                                        <outcome value='failure'>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="`'No alloted resource model found for model customization UUID ' + $security-zone-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />
+                                            </return>
+                                        </outcome>
+                                    </get-resource>
+                                </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 a required to be CreateSecurityZoneInstance for svc-action=assign" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='create'>
+                    <block atomic="true">
+                        <switch test='`$security-zone-topology-operation-input.request-information.request-action`'>
+                            <outcome value='CreateSecurityZoneInstance'>
+                                <block atomic="true">
+                                    <switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+                                            </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 a required to be CreateSecurityZoneInstance for svc-action=create" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='activate'>
+                    <block atomic="true">
+                        <switch test='`$security-zone-topology-operation-input.request-information.request-action`'>
+                            <outcome value='CreateSecurityZoneInstance'>
+                                <block atomic="true">
+                                    <switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+                                            </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 a required to be CreateSecurityZoneInstance for svc-action=activate" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='deactivate'>
+                    <block atomic="true">
+                        <switch test='`$security-zone-topology-operation-input.request-information.request-action`'>
+                            <outcome value='DeleteSecurityZoneInstance'>
+                                <block atomic="true">
+                                    <switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+                                            </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 a required to be DeleteSecurityZoneInstance for svc-action=deactivate" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='delete'>
+                    <block atomic="true">
+                        <switch test='`$security-zone-topology-operation-input.request-information.request-action`'>
+                            <outcome value='DeleteSecurityZoneInstance'>
+                                <block atomic="true">
+                                    <switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+                                            </return>
+                                        </outcome>
+                                    </switch>
+                                    <switch test='`$security-zone-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />
+                                            </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 a required to be DeleteSecurityZoneInstance for svc-action=delete" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+                <outcome value='unassign'>
+                    <block atomic="true">
+                        <switch test='`$security-zone-topology-operation-input.request-information.request-action`'>
+                            <outcome value='DeleteSecurityZoneInstance'>
+                                <block atomic="true">
+                                    <switch test='`$security-zone-topology-operation-input.allotted-resource-information.allotted-resource-id`'>
+                                        <outcome value=''>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />
+                                            </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 a required to be DeleteSecurityZoneInstance for svc-action=unassign" />
+                                </return>
+                            </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>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-service-input.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-service-input.xml
new file mode 100755
index 0000000..ca1c3a4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-service-input.xml
@@ -0,0 +1,117 @@
+<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-service-input' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-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-action is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-topology-operation-input.sdnc-request-header.svc-request-id`'>

+                <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-topology-operation-input.request-information.request-action`'>

+                <outcome value=''>

+                    <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 a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='assign'>

+                    <block atomic="true">

+                        <switch test='`$service-topology-operation-input.service-information.subscription-service-type`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="service-information.subscription-service-type is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$service-topology-operation-input.service-information.global-customer-id`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="service-information.global-customer-id is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$service-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="service-information.onap-model-information.model-invariant-uuid is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$service-topology-operation-input.service-information.onap-model-information.model-uuid`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="service-information.onap-model-information.model-uuid is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$service-topology-operation-input.service-information.onap-model-information.model-name`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="service-information.onap-model-information.model-name is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='changeassign'>

+                    <block atomic="true">

+                        <switch test='`$service-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="service-information.onap-model-information.model-invariant-uuid is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$service-topology-operation-input.service-information.onap-model-information.model-uuid`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="service-information.onap-model-information.model-uuid is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$service-topology-operation-input.service-information.onap-model-information.model-name`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="service-information.onap-model-information.model-name is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-tunnelxconn-input.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-tunnelxconn-input.xml
new file mode 100644
index 0000000..58b7467
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-tunnelxconn-input.xml
@@ -0,0 +1,106 @@
+<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-tunnelxconn-input' mode='sync'>

+<block atomic="true"><switch test='`$tunnelxconn-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-action is a required input" />

+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-request-id`'>

+<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='`$tunnelxconn-topology-operation-input.service-information.service-instance-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="service-information.service-instance-id is a required input" />

+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.sdnc-request-header.svc-action`'>

+<outcome value='assign'><block atomic="true"><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />

+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-type`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.allotted-resource-type is a required input" />

+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />

+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="tunnelxconn-information.onap-model-information.model-customization-uuid is a required input" />

+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.tunnelxconn-request-input.brg-wan-mac-address`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="tunnelxconn-topology-operation-input.brg-wan-mac-address is a required input" />

+</return></outcome></switch><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from ALLOTTED_RESOURCE_MODEL WHERE customization_uuid = $tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid'

+  pfx='ar-model'>

+

+<outcome value='not-found'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="`'No allotted resource model found for model customization UUID ' + $tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />

+</return></outcome><outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="`'No allotted resource model found for model customization UUID ' + $tunnelxconn-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />

+</return></outcome></get-resource></block></outcome><outcome value='create'><block atomic="true"><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />

+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />

+</return></outcome></switch></block></outcome><outcome value='activate'><block atomic="true"><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />

+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />

+</return></outcome></switch></block></outcome><outcome value='deactivate'><block atomic="true"><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />

+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />

+</return></outcome></switch></block></outcome><outcome value='delete'><block atomic="true"><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />

+</return></outcome></switch><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.parent-service-instance-id is a required input" />

+</return></outcome></switch></block></outcome><outcome value='unassign'><block atomic="true"><switch test='`$tunnelxconn-topology-operation-input.allotted-resource-information.allotted-resource-id`'>

+<outcome value=''><return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="allotted-resource-information.allotted-resource-id is a required input" />

+</return></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></method></service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-vf-module-input.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-vf-module-input.xml
new file mode 100644
index 0000000..f21ff99
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-vf-module-input.xml
@@ -0,0 +1,86 @@
+<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-vf-module-input' 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-action is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`'>

+                <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='`$vf-module-topology-operation-input.request-information.request-action`'>

+                <outcome value=''>

+                    <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 a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$vf-module-topology-operation-input.service-information.service-instance-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="service-information.service-instance-id is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$vf-module-topology-operation-input.vnf-information.vnf-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-information.vnf-id is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='assign'>

+                    <block atomic="true">

+                        <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="vf-module-information.onap-model-information.model-customization-uuid is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vf-module-topology-operation-input.vf-module-request-input.tenant`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="vf-module-information.vf-module-request-input.tenant is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`'>

+                            <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.aic-cloud-region is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-vnf-input.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-vnf-input.xml
new file mode 100644
index 0000000..6de5257
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_validate-vnf-input.xml
@@ -0,0 +1,77 @@
+<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-vnf-input' mode='sync'>

+        <block atomic="true">

+            <switch test='`$vnf-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-action is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-request-id`'>

+                <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='`$vnf-topology-operation-input.request-information.request-action`'>

+                <outcome value=''>

+                    <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 a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$vnf-topology-operation-input.service-information.service-instance-id`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="service-information.service-instance-id is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='assign'>

+                    <block atomic="true">

+                        <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="vnf-information.onap-model-information.model-customization-uuid is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vnf-topology-operation-input.vnf-request-input.tenant`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="vnf-information.vnf-request-input.tenant is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="vnf-request-input.aic-cloud-region is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-generate-heat-parameters.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-generate-heat-parameters.xml
new file mode 100755
index 0000000..0324511
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-generate-heat-parameters.xml
@@ -0,0 +1,926 @@
+<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-generate-heat-parameters' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='const.sub-int' value='subint' />

+                <parameter name='const.subnet-id' value='_subnet_id' />

+                <parameter name='const.v6-subnet-id' value='_v6_subnet_id' />

+                <parameter name='const.port' value='port' />

+                <parameter name='const.sub-int-count' value='_subintcount' />

+                <parameter name='const.vlan-ids' value='_vlan_ids' />

+                <parameter name='const.net-names' value='_net_names' />

+                <parameter name='const.net-ids' value='_net_ids' />

+                <parameter name='const.ip' value='_ip' />

+                <parameter name='const.v6-ip' value='_v6_ip' />

+                <parameter name='const.floating-ip' value='_floating_ip' />

+                <parameter name='const.floating-v6-ip' value='_floating_v6_ip' />

+                <parameter name='const.underscore' value='_' />

+            </set>

+            <set>

+                <parameter name='output-index' value='0' />

+            </set>

+            <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                <block>

+                    <for silentFailure='true' index='vm-name-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >

+                        <block>

+                            <set>

+                                <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+    + '_name_'

+    + $vm-name-index`" />

+                                <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`" />

+                            </set>

+                            <switch test='`$vm-name-index &gt; 0`'>

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name='cdl' value="`$cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`" />

+                                    </set>

+                                </outcome>

+                                <outcome value='false'>

+                                    <set>

+                                        <parameter name='cdl' value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`" />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <set>

+                                <parameter name='output-index' value='`$output-index + 1`' />

+                            </set>

+                        </block>

+                    </for>

+                    <set>

+                        <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+    + '_names'`" />

+                        <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$cdl`" />

+                    </set>

+                    <set>

+                        <parameter name='output-index' value='`$output-index + 1`' />

+                    </set>

+                    <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >

+                        <block>

+                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag`'>

+                                <outcome value=''>

+                                    <set>

+                                        <parameter name='network-key' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role`' />

+                                    </set>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <set>

+                                        <parameter name='network-key' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].floating-ips.floating-ip-v4`'>

+                                <outcome value=''>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <block>

+                                        <set>

+                                            <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+    + $const.underscore

+    + $network-key

+    + $const.floating-ip`" />

+                                            <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].floating-ips.floating-ip-v4`" />

+                                        </set>

+                                        <set>

+                                            <parameter name='output-index' value='`$output-index + 1`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].floating-ips.floating-ip-v6`'>

+                                <outcome value=''>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <block>

+                                        <set>

+                                            <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+    + $const.underscore

+    + $network-key

+    + $const.floating-v6-ip`" />

+                                            <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].floating-ips.floating-ip-v6`" />

+                                        </set>

+                                        <set>

+                                            <parameter name='output-index' value='`$output-index + 1`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].interface-route-prefixes.interface-route-prefix_length &gt; 0`'>

+                                <outcome value='true'>

+                                    <block>

+                                        <set>

+                                            <parameter name='cdl' value='[' />

+                                        </set>

+                                        <for index='interface-route-prefix-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].interface-route-prefixes.interface-route-prefix_length`' >

+                                            <block>

+                                                <switch test='`$interface-route-prefix-index &gt; 0`'>

+                                                    <outcome value='true'>

+                                                        <set>

+                                                            <parameter name='cdl' value="`$cdl + ','`" />

+                                                        </set>

+                                                    </outcome>

+                                                </switch>

+                                                <set>

+                                                    <parameter name='cdl' value="`$cdl

+  + '{\&quot;interface_route_table_routes_route_prefix\&quot;:\&quot;'

+  + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].interface-route-prefixes.interface-route-prefix[$interface-route-prefix-index]

+  + '\&quot;}'`" />

+                                                </set>

+                                            </block>

+                                        </for>

+                                        <set>

+                                            <parameter name='cdl' value="`$cdl + ']'`" />

+                                        </set>

+                                        <set>

+                                            <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+    + $const.underscore

+    + $network-key

+    + '_route_prefixes'`" />

+                                            <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$cdl`" />

+                                        </set>

+                                        <set>

+                                            <parameter name='output-index' value='`$output-index + 1`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <for silentFailure='true' index='address-family-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item_length`' >

+                                <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].ip-version`'>

+                                    <outcome value='ipv4'>

+                                        <block>

+                                            <for silentFailure='true' index='address-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip_length`' >

+                                                <block>

+                                                    <set>

+                                                        <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+    + $const.underscore

+    + $network-key

+    + $const.ip

+    + $const.underscore

+    + $address-index`" />

+                                                        <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip[$address-index]`" />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='output-index' value='`$output-index + 1`' />

+                                                    </set>

+                                                    <switch test='`$address-index &gt; 0`'>

+                                                        <outcome value='true'>

+                                                            <set>

+                                                                <parameter name='cdl' value="`$cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip[$address-index]`" />

+                                                            </set>

+                                                        </outcome>

+                                                        <outcome value='false'>

+                                                            <set>

+                                                                <parameter name='cdl' value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip[$address-index]`" />

+                                                            </set>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </for>

+                                            <set>

+                                                <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+    + $const.underscore

+    + $network-key

+    + '_ips'`" />

+                                                <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$cdl`" />

+                                            </set>

+                                            <set>

+                                                <parameter name='output-index' value='`$output-index + 1`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='ipv6'>

+                                        <block>

+                                            <for silentFailure='true' index='address-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip_length`' >

+                                                <block>

+                                                    <set>

+                                                        <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+    + $const.underscore

+    + $network-key

+    + $const.v6-ip

+    + $const.underscore

+    + $address-index`" />

+                                                        <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip[$address-index]`" />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='output-index' value='`$output-index + 1`' />

+                                                    </set>

+                                                    <switch test='`$address-index &gt; 0`'>

+                                                        <outcome value='true'>

+                                                            <set>

+                                                                <parameter name='cdl' value="`$cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip[$address-index]`" />

+                                                            </set>

+                                                        </outcome>

+                                                        <outcome value='false'>

+                                                            <set>

+                                                                <parameter name='cdl' value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$address-family-index].network-ips.network-ip[$address-index]`" />

+                                                            </set>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </for>

+                                            <set>

+                                                <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+    + $const.underscore

+    + $network-key

+    + '_v6_ips'`" />

+                                                <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$cdl`" />

+                                            </set>

+                                            <set>

+                                                <parameter name='output-index' value='`$output-index + 1`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </for>

+                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length &gt; 0`'>

+                                <outcome value='true'>

+                                    <block>

+                                        <set>

+                                            <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+    + $const.underscore

+    + $network-key

+    + '_vlan_filter'`" />

+                                            <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].segmentation-id`" />

+                                        </set>

+                                        <set>

+                                            <parameter name='output-index' value='`$output-index + 1`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='public-cdl' value='' />

+                                            <parameter name='private-cdl' value='' />

+                                            <parameter name='all-cdl' value='' />

+                                        </set>

+                                        <for silentFailure='true' index='related-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length`' >

+                                            <block>

+                                                <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.is-private`'>

+                                                    <outcome value='true'>

+                                                        <switch test='`$private-cdl`'>

+                                                            <outcome value=''>

+                                                                <set>

+                                                                    <parameter name='private-cdl'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`' />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='Other'>

+                                                                <set>

+                                                                    <parameter name='private-cdl'

+  value="',' + `$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`" />

+                                                                </set>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                    <outcome value='false'>

+                                                        <switch test='`$public-cdl`'>

+                                                            <outcome value=''>

+                                                                <set>

+                                                                    <parameter name='public-cdl'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`' />

+                                                                </set>

+                                                            </outcome>

+                                                            <outcome value='Other'>

+                                                                <set>

+                                                                    <parameter name='public-cdl'

+  value="',' + `$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`" />

+                                                                </set>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                </switch>

+                                                <switch test='`$all-cdl`'>

+                                                    <outcome value=''>

+                                                        <set>

+                                                            <parameter name='all-cdl'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`' />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <set>

+                                                            <parameter name='all-cdl'

+  value="',' + `$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.upper-tag-id`" />

+                                                        </set>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </for>

+                                        <switch test='`$private-cdl`'>

+                                            <outcome value=''>

+                                                <block></block>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+    + $const.underscore

+    + $network-key

+    + '_private_vlans'`" />

+                                                        <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$private-cdl`" />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='output-index' value='`$output-index + 1`' />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <switch test='`$public-cdl`'>

+                                            <outcome value=''>

+                                                <block></block>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+    + $const.underscore

+    + $network-key

+    + '_public_vlans'`" />

+                                                        <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$public-cdl`" />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='output-index' value='`$output-index + 1`' />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <set>

+                                            <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+    + $const.underscore

+    + $network-key

+    + '_guest_vlans'`" />

+                                            <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$all-cdl`" />

+                                        </set>

+                                        <set>

+                                            <parameter name='output-index' value='`$output-index + 1`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </block>

+                    </for>

+                    <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                        <block>

+                            <for silentFailure='true' index='vnfc-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >

+                                <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type`'>

+                                    <outcome value=''>

+                                        <block></block>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block>

+                                            <set>

+                                                <parameter name='port-index' value='0' />

+                                            </set>

+                                            <for silentFailure='true' index='vnfc-port-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port_length`' >

+                                                <block>

+                                                    <set>

+                                                        <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type

+    + '_subint_'

+    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role

+    + '_port_'

+    + $port-index

+    + '_subintcount'`" />

+                                                        <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data_length`" />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='output-index' value='`$output-index + 1`' />

+                                                    </set>

+                                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[0].floating-ips.floating-ip-v4`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type

+    + '_subint_'

+    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role

+    + '_port_'

+    + $port-index

+    + '_floating_ip'`" />

+                                                                    <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[0].floating-ips.floating-ip-v4`" />

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name='output-index' value='`$output-index + 1`' />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[0].floating-ips.floating-ip-v6`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type

+    + '_subint_'

+    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role

+    + '_port_'

+    + $port-index

+    + '_floating_v6_ip'`" />

+                                                                    <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[0].floating-ips.floating-ip-v6`" />

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name='output-index' value='`$output-index + 1`' />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                    <set>

+                                                        <parameter name='vlan-cdl' value='' />

+                                                        <parameter name='net-names-cdl' value='' />

+                                                        <parameter name='net-id-cdl' value='' />

+                                                        <parameter name='ipv4-ips-cdl' value='' />

+                                                        <parameter name='ipv6-ips-cdl' value='' />

+                                                    </set>

+                                                    <for silentFailure='true' index='vnic-sub-interface-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data_length`' >

+                                                        <block>

+                                                            <switch test='`$vlan-cdl`'>

+                                                                <outcome value=''>

+                                                                    <set>

+                                                                        <parameter name='vlan-cdl' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].vlan-tag-id`' />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='Other'>

+                                                                    <set>

+                                                                        <parameter name='vlan-cdl' value="`$vlan-cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].vlan-tag-id`" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                            <switch test='`$net-names-cdl`'>

+                                                                <outcome value=''>

+                                                                    <set>

+                                                                        <parameter name='net-names-cdl' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-name`' />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='Other'>

+                                                                    <set>

+                                                                        <parameter name='net-names-cdl' value="`$net-names-cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-name`" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                            <switch test='`$net-id-cdl`'>

+                                                                <outcome value=''>

+                                                                    <set>

+                                                                        <parameter name='net-id-cdl' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-id`' />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='Other'>

+                                                                    <set>

+                                                                        <parameter name='net-id-cdl' value="`$net-id-cdl + ',' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-id`" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                            <for silentFailure='true' index='nii-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item_length`' >

+                                                                <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].ip-version`'>

+                                                                    <outcome value='ipv4'>

+                                                                        <block>

+                                                                            <for silentFailure='true' index='ip-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].network-ips.network-ip_length`' >

+                                                                                <block>

+                                                                                    <set>

+                                                                                        <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type

+    + $const.underscore

+    + $vnfc-network-index

+    + '_subint_'

+    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role

+    + '_port_'

+    + $port-index

+    + '_ip_'

+    + $ip-index`" />

+                                                                                        <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].network-ips.network-ip[$ip-index]`" />

+                                                                                    </set>

+                                                                                    <set>

+                                                                                        <parameter name='output-index' value='`$output-index + 1`' />

+                                                                                    </set>

+                                                                                </block>

+                                                                            </for>

+                                                                        </block>

+                                                                    </outcome>

+                                                                    <outcome value='ipv6'>

+                                                                        <block>

+                                                                            <for silentFailure='true' index='ip-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].network-ips.network-ip_length`' >

+                                                                                <block>

+                                                                                    <set>

+                                                                                        <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type

+    + $const.underscore

+    + $vnfc-network-index

+    + '_subint_'

+    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role

+    + '_port_'

+    + $port-index

+    + '_v6_ip_'

+    + $ip-index`" />

+                                                                                        <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.sub-interface-network-data[$vnic-sub-interface-index].network-information-items.network-information-item[$nii-index].network-ips.network-ip[$ip-index]`" />

+                                                                                    </set>

+                                                                                    <set>

+                                                                                        <parameter name='output-index' value='`$output-index + 1`' />

+                                                                                    </set>

+                                                                                </block>

+                                                                            </for>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </for>

+                                                        </block>

+                                                    </for>

+                                                    <switch test='`$vlan-cdl`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type

+    + $const.underscore

+    + $vnfc-network-index

+    + '_subint_'

+    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role

+    + '_port_'

+    + $port-index

+    + '_vlan_ids'`" />

+                                                                    <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$vlan-cdl`" />

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name='output-index' value='`$output-index + 1`' />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                    <switch test='`$net-names-cdl`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type

+    + $const.underscore

+    + $vnfc-network-index

+    + '_subint_'

+    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role

+    + '_port_'

+    + $port-index

+    + '_net_names'`" />

+                                                                    <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$net-names-cdl`" />

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name='output-index' value='`$output-index + 1`' />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                    <switch test='`$net-id-cdl`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-type

+    + $const.underscore

+    + $vnfc-network-index

+    + '_subint_'

+    + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role

+    + '_port_'

+    + $port-index

+    + '_net_ids'`" />

+                                                                    <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$net-id-cdl`" />

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name='output-index' value='`$output-index + 1`' />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                    <set>

+                                                        <parameter name='port-index' value='`$port-index + 1`' />

+                                                    </set>

+                                                </block>

+                                            </for>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </for>

+                        </block>

+                    </for>

+                </block>

+            </for>

+            <for silentFailure='true' index='az-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone_length`' >

+                <block>

+                    <set>

+                        <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`'availability_zone_'

+    + $az-index`" />

+                        <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[$az-index]`" />

+                    </set>

+                    <set>

+                        <parameter name='output-index' value='`$output-index + 1`' />

+                    </set>

+                </block>

+            </for>

+            <for silentFailure='true' index='vnf-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >

+                <block>

+                    <set>

+                        <parameter name='network-key' value='' />

+                    </set>

+                    <set>

+                        <parameter name='network-role' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`' />

+                    </set>

+                    <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                        <block>

+                            <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >

+                                <switch test='`$network-role ==

+  $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role`'>

+                                    <outcome value='true'>

+                                        <block>

+                                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag`'>

+                                                <outcome value=''>

+                                                    <set>

+                                                        <parameter name='network-key' value='`network-role`' />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <set>

+                                                        <parameter name='network-key' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                            <break/>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </for>

+                            <switch test='`$network-key`'>

+                                <outcome value=''>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <break/>

+                                </outcome>

+                            </switch>

+                        </block>

+                    </for>

+                    <switch test='`$network-key`'>

+                        <outcome value=''>

+                            <block></block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <block>

+                                <set>

+                                    <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$network-key

+    + '_net_id'`" />

+                                    <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].neutron-id`" />

+                                </set>

+                                <set>

+                                    <parameter name='output-index' value='`$output-index + 1`' />

+                                </set>

+                                <set>

+                                    <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$network-key

+    + '_net_name'`" />

+                                    <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name`" />

+                                </set>

+                                <set>

+                                    <parameter name='output-index' value='`$output-index + 1`' />

+                                </set>

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].contrail-network-fqdn`'>

+                                    <outcome value=''>

+                                        <block></block>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block>

+                                            <set>

+                                                <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$network-key

+    + '_net_fqdn'`" />

+                                                <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].contrail-network-fqdn

+`" />

+                                            </set>

+                                            <set>

+                                                <parameter name='output-index' value='`$output-index + 1`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <set>

+                        <parameter name='found-ipv4' value='false' />

+                        <parameter name='found-ipv6' value='false' />

+                    </set>

+                    <for silentFailure='true' index='subnet-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >

+                        <block>

+                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].ip-version`'>

+                                <outcome value='ipv4'>

+                                    <switch test='`$found-ipv4`'>

+                                        <outcome value='false'>

+                                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`'>

+                                                <outcome value=''>

+                                                    <block></block>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <block>

+                                                        <set>

+                                                            <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$network-key

+    + $const.subnet-id`" />

+                                                            <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`" />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name='output-index' value='`$output-index + 1`' />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name='found-ipv4' value='true' />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </outcome>

+                                    </switch>

+                                </outcome>

+                                <outcome value='ipv6'>

+                                    <switch test='`$found-ipv6`'>

+                                        <outcome value='false'>

+                                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`'>

+                                                <outcome value=''>

+                                                    <block></block>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <block>

+                                                        <set>

+                                                            <parameter name='tmp.vf-module-parameters.param[$output-index].name'

+  value="`$network-key

+    + $const.v6-subnet-id`" />

+                                                            <parameter name='tmp.vf-module-parameters.param[$output-index].value'

+  value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`" />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name='output-index' value='`$output-index + 1`' />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name='found-ipv6' value='true' />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </outcome>

+                                    </switch>

+                                </outcome>

+                            </switch>

+                        </block>

+                    </for>

+                </block>

+            </for>

+            <block>

+                <switch test='`$tmp.vf-module-topology.vf-module-parameters.param_length`'>

+                    <outcome value='0'>

+                        <block></block>

+                    </outcome>

+                    <outcome value=''>

+                        <block></block>

+                    </outcome>

+                    <outcome value='Other'>

+                        <set>

+                            <parameter name='tmp.preload-parameters.' value='`$tmp.vf-module-topology.vf-module-parameters.`' />

+                        </set>

+                    </outcome>

+                </switch>

+                <set>

+                    <parameter name='tmp.vf-module-topology.vf-module-parameters.' value='`$tmp.vf-module-parameters.`' />

+                </set>

+                <for silentFailure='true' index='preload-index' start='0' end='`$tmp.preload-parameters.param_length`' >

+                    <block>

+                        <set>

+                            <parameter name='found-match' value='false' />

+                        </set>

+                        <for index='cur-index' start='0' end='`$output-index`' >

+                            <switch test='`$tmp.vf-module-topology.vf-module-parameters.param[$cur-index].name

+  == $tmp.preload-parameters.param[$preload-index].name`'>

+                                <outcome value='true'>

+                                    <block>

+                                        <set>

+                                            <parameter name='$tmp.vf-module-topology.vf-module-parameters.param[$cur-index].value' value='`$tmp.preload-parameters.param[$preload-index].value`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='found-match' value='true' />

+                                        </set>

+                                        <break/>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$found-match`'>

+                            <outcome value='false'>

+                                <block>

+                                    <set>

+                                        <parameter name='tmp.vf-module-topology.vf-module-parameters.param[$output-index].name'

+  value="`$tmp.preload-parameters.param[$preload-index].name`" />

+                                        <parameter name='tmp.vf-module-topology.vf-module-parameters.param[$output-index].value'

+  value="`$tmp.preload-parameters.param[$preload-index].value`" />

+                                    </set>

+                                    <set>

+                                        <parameter name='output-index' value='`$output-index + 1`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </for>

+                <for silentFailure='true' index='input-index' start='0' end='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                    <block>

+                        <set>

+                            <parameter name='found-match' value='false' />

+                        </set>

+                        <for index='cur-index' start='0' end='`$output-index`' >

+                            <switch test='`$tmp.vf-module-topology.vf-module-parameters.param[$cur-index].name

+  == $vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$input-index].name`'>

+                                <outcome value='true'>

+                                    <block>

+                                        <set>

+                                            <parameter name='$tmp.vf-module-topology.vf-module-parameters.param[$cur-index].value'

+  value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$input-index].value`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='found-match' value='true' />

+                                        </set>

+                                        <break/>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$found-match`'>

+                            <outcome value='false'>

+                                <block>

+                                    <set>

+                                        <parameter name='tmp.vf-module-topology.vf-module-parameters.param[$output-index].name'

+  value="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$input-index].name`" />

+                                        <parameter name='tmp.vf-module-topology.vf-module-parameters.param[$output-index].value'

+  value="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$input-index].value`" />

+                                    </set>

+                                    <set>

+                                        <parameter name='output-index' value='`$output-index + 1`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </for>

+                <set>

+                    <parameter name='$tmp.vf-module-topology.vf-module-parameters.param_length' value='`$output-index`' />

+                </set>

+                <set>

+                    <parameter name='tmp.vf-module-topology.sdnc-generated-cloud-resources' value='true' />

+                </set>

+            </block>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-assign-rollback.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-assign-rollback.xml
new file mode 100755
index 0000000..edbbcca
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-assign-rollback.xml
@@ -0,0 +1,188 @@
+<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-assign-rollback' mode='sync'>

+        <block>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value='1'>

+                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv4-flag`'>

+                        <outcome value='true'>

+                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`'>

+                                <outcome value=''>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <block>

+                                        <set>

+                                            <parameter name='tmp.status' value="`'PENDING_DELETE_' + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`" />

+                                        </set>

+                                        <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"

+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id" ></update>

+                                        <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">

+                                            <parameter name="deleteEIPAM_status" value="`$tmp.status`" />

+                                        </execute>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </outcome>

+                        <outcome value='false'>

+                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv6-flag`'>

+                                <outcome value='true'>

+                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`'>

+                                        <outcome value=''>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='tmp.status' value="`'PENDING_DELETE_' + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`" />

+                                                </set>

+                                                <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"

+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id" ></update>

+                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">

+                                                    <parameter name="deleteEIPAM_status" value="`$tmp.status`" />

+                                                </execute>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </outcome>

+                            </switch>

+                        </outcome>

+                        <outcome value=''>

+                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv6-flag`'>

+                                <outcome value='true'>

+                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`'>

+                                        <outcome value=''>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='tmp.status' value="`'PENDING_DELETE_' + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`" />

+                                                </set>

+                                                <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"

+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id" ></update>

+                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">

+                                                    <parameter name="deleteEIPAM_status" value="`$tmp.status`" />

+                                                </execute>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </outcome>

+                            </switch>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.from-preload`'>

+                <outcome value='false'>

+                    <block>

+                        <set>

+                            <parameter name='tmp.status' value="`'PENDING_DELETE_' + $vf-module-topology-operation-input.vf-module-information.vf-module-id`" />

+                        </set>

+                        <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"

+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $vf-module-topology-operation-input.vf-module-information.vf-module-id" ></update>

+                        <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">

+                            <parameter name="deleteEIPAM_status" value="`$tmp.status`" />

+                        </execute>

+                    </block>

+                </outcome>

+                <outcome value='true'>

+                    <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                        <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                <outcome value=''>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <block>

+                                        <set>

+                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </for>

+                </outcome>

+            </switch>

+            <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                <block>

+                    <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].created_flag`'>

+                            <outcome value='true'>

+                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+        resource="vnfc" 

+        key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name" ></delete>

+                            </outcome>

+                        </switch>

+                    </for>

+                    <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >

+                        <block>

+                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].created-flag`'>

+                                <outcome value='true'>

+                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="vf-module:relationship-list"

+    key="vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id

+      AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id

+      AND related-to = l3-network

+      AND l3-network.network-id = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id" ></delete>

+                                </outcome>

+                            </switch>

+                            <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                <block>

+                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv4-flag`'>

+                                        <outcome value='true'>

+                                            <for silentFailure='true' index='ipv4-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4_length`' >

+                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+   resource="vip-ipv4-address-list" 

+   key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner

+	  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region

+	  AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]" ></delete>

+                                            </for>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv6-flag`'>

+                                        <outcome value='true'>

+                                            <for silentFailure='true' index='ipv6-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6_length`' >

+                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+   resource="vip-ipv6-address-list" 

+   key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner

+	  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region

+	  AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]" ></delete>

+                                            </for>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </for>

+                        </block>

+                    </for>

+                </block>

+            </for>

+            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id`'>

+                <outcome value=''>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <for index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >

+                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-id

+  == $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>

+                            <outcome value='true'>

+                                <for index='network-index' start='0' end='`$service-data.network-instance-groups.network-instance-group[$nig-index].networks.network_length`' >

+                                    <set>

+                                        <parameter name='service-data.network-instance-groups.network-instance-group[$nig-index].networks.network[$network-index].vlan-tag-id'

+  value='' />

+                                        <parameter name='service-data.network-instance-groups.network-instance-group[$nig-index].networks.network[$network-index].network-status'

+  value='unassigned' />

+                                    </set>

+                                </for>

+                            </outcome>

+                        </switch>

+                    </for>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-activate.xml
new file mode 100755
index 0000000..d7f4ddd
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-activate.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='vf-module-topology-operation-activate' mode='sync'>

+        <block atomic="true">

+            <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='`$vf-module-topology-operation-input.request-information.request-action`'>

+                <outcome value='CreateVfModuleInstance'>

+                    <block></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="If svc-action is 'activate' then request-action must be 'CreateVfModuleInstance'" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='vnf-index' value='-1' />

+            </set>

+            <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="There are no VNFs defined in MD-SAL" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <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'>

+                                <block>

+                                    <set>

+                                        <parameter name='vnf-index' value='`$idx`' />

+                                    </set>

+                                    <break/>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </for>

+                </outcome>

+            </switch>

+            <switch test='`$vnf-index`'>

+                <outcome value='-1'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='vf-module-index' value='-1' />

+            </set>

+            <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="`'There are no VF modules defined in MD-SAL for VNF ' + $vf-module-topology-operation-input.vnf-information.vnf-id`" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <for index='idx' 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[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`'>

+                            <outcome value='true'>

+                                <block>

+                                    <set>

+                                        <parameter name='vf-module-index' value='`$idx`' />

+                                    </set>

+                                    <break/>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </for>

+                </outcome>

+            </switch>

+            <switch test='`$vf-module-index`'>

+                <outcome value='-1'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unable to find VF module ID ' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' in MD-SAL'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`'>

+                <outcome value=''>

+                    <block></block>

+                </outcome>

+                <outcome value='0'>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-activate' mode='sync' >

+                        <outcome value='failure'>

+                            <return status='failure'></return>

+                        </outcome>

+                    </call>

+                </outcome>

+            </switch>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="vf-module"

+   key="vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id

+      AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"

+   force="true" pfx="tmp.AnAI-data">

+                <parameter name="orchestration-status" value="Active" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error updating vf-module in AAI" />

+                    </return>

+                </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="`'No vf-module found in AAI for vf module ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`" />

+                    </return>

+                </outcome>

+            </update>

+            <for silentFailure='true' index='vm-type-index' start='0'

+  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                <for silentFailure='true' index='vnfc-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="vnfc"

+   key="vnfc.vnfc-name = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name"

+   force="true" pfx="tmp.AnAI-data">

+                        <parameter name="orchestration-status" value="Active" />

+                        <parameter name="prov-status" value="NVTPROV" />

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="Error updating vnfc in AAI" />

+                            </return>

+                        </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="`'No vnfc found in AAI for vnfc name ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />

+                            </return>

+                        </outcome>

+                    </update>

+                </for>

+            </for>

+            <update resource='SQL' force='true' plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' 

+  key='UPDATE EIPAM_IP_ASSIGNMENTS SET status = "ACTIVE" WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-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 updating EIPAM_IP_ASSIGNMENTS table" />

+                    </return>

+                </outcome>

+            </update>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-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-module-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-module-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-module-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-module-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-module-index].vf-module-data.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[$vf-module-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-module-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-module-index].vf-module-data.vf-module-level-oper-status.last-action'

+  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/bgb-vfmoduleactivate.log' />

+            </execute>

+            <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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-no-preload.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-no-preload.xml
new file mode 100755
index 0000000..fd1ca63
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-no-preload.xml
@@ -0,0 +1,1302 @@
+<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-assign-no-preload' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.from-preload' value='false' />

+            </set>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODULE_TO_VFC_MAPPING WHERE vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'

+  pfx='db.vf-module-to-vfc-mapping[]'>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error reading VF_MODULE_TO_VFC_MAPPING table" />

+                    </return>

+                </outcome>

+                <outcome value='not-found'>

+                    <set>

+                        <parameter name='db.vf-module-to-vfc-mapping_length' value='0' />

+                    </set>

+                </outcome>

+            </get-resource>

+            <set>

+                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm_length'

+  value='`$db.vf-module-to-vfc-mapping_length`' />

+            </set>

+            <for index='vm-type-index' start='0' end='`$db.vf-module-to-vfc-mapping_length`' >

+                <block atomic="true">

+                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VFC_MODEL WHERE customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'

+  pfx='db.vfc-model'>

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="Error reading VFC_MODEL table" />

+                            </return>

+                        </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="`'No entries found in VFC_MODEL table for customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc_customization_uuid`" />

+                            </return>

+                        </outcome>

+                    </get-resource>

+                    <switch test="$db.vfc-model.ecomp-generated-naming == 'Y'">

+                        <outcome value='false'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`'ECOMP generated naming is not Y for VFC customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc_customization_uuid`" />

+                            </return>

+                        </outcome>

+                    </switch>

+                    <switch test="$db.vfc-model.naming-policy">

+                        <outcome value=''>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`'naming_policy is null for VFC customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc_customization_uuid`" />

+                            </return>

+                        </outcome>

+                    </switch>

+                    <set>

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type'

+   value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code'

+   value='`$db.vfc-model.nfc-naming-code`' />

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type-tag'

+   value='`$db.vfc-model.vm-type-tag`' />

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count'

+   value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />

+                        <!-- Context variables used when creating vnfc object in AAI -->

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid'

+   value='`$db.vfc-model.invariant-uuid`' />

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function'

+   value='`$db.vfc-model.nfc-function`' />

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].uuid'

+   value='`$db.vfc-model.uuid`' />

+                    </set>

+                    <set>

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length'

+  value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />

+                    </set>

+                    <set>

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length'

+  value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />

+                    </set>

+                    <for index='vm-index' start='0' end='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >

+                        <block atomic="true">

+                            <set>

+                                <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.vfc-model.naming-policy`' />

+                                <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />

+                                <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                <parameter name='naming-policy-generate-name-input.query-parameter' value='`$db.vfc-model.customization-uuid`' />

+                                <parameter name='naming-policy-generate-name-input.vnf-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name`' />

+                                <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />

+                            </set>

+                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >

+                                <outcome value='failure'>

+                                    <block atomic="true">

+                                        <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                            <block>

+                                                <for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >

+                                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />

+                                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                </set>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                                <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                </set>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                            </block>

+                                        </for>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`'Unable to generate VM name: ' + $error-message`" />

+                                        </return>

+                                    </block>

+                                </outcome>

+                                <outcome value='success'>

+                                    <set>

+                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]'

+  value='`$naming-policy-generate-name-output.vm-name`' />

+                                    </set>

+                                </outcome>

+                            </call>

+                            <set>

+                                <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.vfc-model.naming-policy`' />

+                                <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                <parameter name='naming-policy-generate-name-input.query-parameter' value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vf-module-customization-uuid`' />

+                                <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />

+                                <parameter name='naming-policy-generate-name-input.vnf-name' value='`$vf-module-topology-operation-input.vnf-information.vnf-id`' />

+                                <parameter name='naming-policy-generate-name-input.vm-name' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`' />

+                            </set>

+                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >

+                                <outcome value='failure'>

+                                    <block atomic="true">

+                                        <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                            <block>

+                                                <for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >

+                                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />

+                                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                </set>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                                <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                </set>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                            </block>

+                                        </for>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`'Unable to generate VNFC name: ' + $error-message`" />

+                                        </return>

+                                    </block>

+                                </outcome>

+                                <outcome value='success'>

+                                    <set>

+                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vm-index].vnfc-name'

+  value='`$naming-policy-generate-name-output.vnfc-name`' />

+                                    </set>

+                                </outcome>

+                            </call>

+                        </block>

+                    </for>

+                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VFC_TO_NETWORK_ROLE_MAPPING WHERE vfc_customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'

+  pfx='db.vfc-to-network-role-mapping[]'>

+                        <outcome value='failure'>

+                            <block atomic="true">

+                                <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                    <block>

+                                        <for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >

+                                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>

+                                                <outcome value=''>

+                                                    <block></block>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />

+                                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                        </set>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                        <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                                <outcome value=''>

+                                                    <block></block>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                        </set>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                    </block>

+                                </for>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Error reading VFC_TO_NETWORK_ROLE_MAPPING table" />

+                                </return>

+                            </block>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <set>

+                                <parameter name='db.vfc-to-network-role-mapping_length' value='0' />

+                            </set>

+                        </outcome>

+                    </get-resource>

+                    <for index='network-role-index' start='0' end='`$db.vfc-to-network-role-mapping_length`' >

+                        <block atomic="true">

+                            <set>

+                                <parameter name='network-index' value='-1' />

+                            </set>

+                            <for silentFailure='true' index='idx' start='0' end='`$service-data.networks.network_length`' >

+                                <switch test='`$service-data.networks.network[$idx].network-data.network-topology.network-topology-identifier-structure.network-role == $db.vfc-to-network-role-mapping[$network-role-index].network-role`'>

+                                    <outcome value='true'>

+                                        <block>

+                                            <set>

+                                                <parameter name='network-index' value='`$idx`' />

+                                            </set>

+                                            <break/>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </for>

+                            <switch test='`$network-index`'>

+                                <outcome value='-1'>

+                                    <block atomic="true">

+                                        <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                            <block>

+                                                <for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >

+                                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />

+                                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                </set>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                                <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                </set>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                            </block>

+                                        </for>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`'No network found in MD-SAL with network-role ' + $db.vfc-to-network-role-mapping[$network-role-index].network-role`" />

+                                        </return>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <!--This isn't a node in MD-SAL, but we need to save this for later when we are doing EIPAM processing-->

+                            <set>

+                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id'

+  value='`$service-data.networks.network[$idx].network-data.network-topology.network-topology-identifier-structure.network-id`' />

+                            </set>

+                            <set>

+                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role'

+   value='`$db.vfc-to-network-role-mapping[$network-role-index].network-role`' />

+                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role-tag'

+   value='`$db.vfc-to-network-role-mapping[$network-role-index].network-role-tag`' />

+                            </set>

+                            <switch test='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>

+                                <outcome value=''>

+                                    <set>

+                                        <parameter name='network-information-index' value='-1' />

+                                    </set>

+                                </outcome>

+                                <outcome value='4'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='network-information-index' value='0' />

+                                        </set>

+                                        <set>

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-version'

+   value='ipv4' />

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].use-dhcp'

+   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-count'

+   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-count`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>

+                                <outcome value=''>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='6'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='network-information-index' value='`$network-information-index + 1`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-version'

+   value='ipv6' />

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].use-dhcp'

+   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-information-items.network-information-item[$network-information-index].ip-count'

+   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-count`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </block>

+                    </for>

+                    <set>

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'

+  value='`$db.vfc-to-network-role-mapping_length`' />

+                    </set>

+                </block>

+            </for>

+            <set>

+                <parameter name='auto-ip-assignment-input.aic-cloud-region'

+  value='`$tmp.vf-module-topology.aic-cloud-region`' />

+                <parameter name='auto-ip-assignment-input.vf-module.model-customization-uuid'

+  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />

+                <parameter name='auto-ip-assignment-input.vf-module-id'

+  value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                <parameter name='auto-ip-assignment-input.service-instance-id'

+  value='`$service-data.service-information.service-instance-id`' />

+                <parameter name='auto-ip-assignment-input.service-type'

+  value='`$service-data.service-information.service-type`' />

+            </set>

+            <set>

+                <parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms_length'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' />

+            </set>

+            <for index='vm-type-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                <block>

+                    <set>

+                        <parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-type'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type`' />

+                        <parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names_length'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' />

+                    </set>

+                    <for index='vm-name-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >

+                        <block>

+                            <set>

+                                <parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-name-index].vm-name'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`' />

+                                <parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-name-index].vnfc-names_length'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' />

+                            </set>

+                            <for index='vnfc-name-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                <set>

+                                    <parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-name-index].vnfc-names[$vnfc-name-index].vnfc-name'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-name`' />

+                                </set>

+                            </for>

+                        </block>

+                    </for>

+                </block>

+            </for>

+            <set>

+                <parameter name='auto-ip-assignment-input.vnf-topology.vnf-assignments.' 

+  value='tmp.vnf-topology.vnf-assignments.' />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='auto-ip-assignment' mode='sync' >

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                            <block>

+                                <for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >

+                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>

+                                        <outcome value=''>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </for>

+                                <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                        <outcome value=''>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </for>

+                            </block>

+                        </for>

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="`'Failure in call to auto-ip-assignment: ' + $error-message`" />

+                        </return>

+                    </block>

+                </outcome>

+            </call>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/bgb-no-preload.log' />

+            </execute>

+            <for silentFailure='true' index='plan-index' start='0' end='`$eipam-ip-block.plans_length`' >

+                <for silentFailure='true' index='req-index' start='0' end='`$eipam-ip-block.plans[$plan-index].requests_length`' >

+                    <block atomic="true">

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>

+                            <parameter name='ctx_memory_result_key' value='ck-split' />

+                            <parameter name='original_string' value='`$eipam-ip-block.plans[$plan-index].requests[$req-index].client-key`' />

+                            <parameter name='regex' value='\|' />

+                        </execute>

+                        <set>

+                            <parameter name='tmp.vm-type' value='`$ck-split[0]`' />

+                            <parameter name='tmp.vnfc-name' value='`$ck-split[1]`' />

+                            <parameter name='tmp.network-role' value='`$ck-split[2]`' />

+                            <parameter name='tmp.subnet-role' value='`$ck-split[3]`' />

+                            <parameter name='tmp.address-family' value='`$ck-split[5]`' />

+                            <parameter name='tmp.ip-type' value='`$eipam-ip-block.plans[$plan-index].requests[$req-index].ip-type`' />

+                            <parameter name='tmp.client-key' value='`$eipam-ip-block.plans[$plan-index].requests[$req-index].client-key`' />

+                            <parameter name='tmp.ip-prefix' value='`$eipam-ip-block.plans[$plan-index].requests[$req-index].ip-prefix`' />

+                        </set>

+                        <switch test='`$tmp.subnet-role`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='tmp.subnet-role' value='NONE' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$tmp.address-family`'>

+                            <outcome value='4'>

+                                <set>

+                                    <parameter name='tmp.address-family' value='ipv4' />

+                                </set>

+                            </outcome>

+                            <outcome value='6'>

+                                <set>

+                                    <parameter name='tmp.address-family' value='ipv6' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='found-vm-type' value='false' />

+                        </set>

+                        <for index='vm-type-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+  == $tmp.vm-type`'>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='found-vm-type' value='true' />

+                                        </set>

+                                        <break/>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$found-vm-type`'>

+                            <outcome value='false'>

+                                <block atomic="true">

+                                    <block>

+                                        <block>

+                                            <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"

+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id" ></update>

+                                        </block>

+                                        <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                            <block>

+                                                <for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >

+                                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />

+                                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                </set>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                                <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                </set>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                            </block>

+                                        </for>

+                                    </block>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="`'EIPAM returned vm-type ' + $tmp.vm-type + ' but could not find that under vf-module-assignments'`" />

+                                    </return>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <switch test='`$tmp.ip-type`'>

+                            <outcome value='FIXED'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='found-vnfc-name' value='false' />

+                                    </set>

+                                    <for silentFailure='true' index='vnfc-name-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-name

+  == $tmp.vnfc-name`'>

+                                            <outcome value='true'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name='found-vnfc-name' value='true' />

+                                                    </set>

+                                                    <break/>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                    <switch test='`$found-vnfc-name`'>

+                                        <outcome value='false'>

+                                            <block atomic="true">

+                                                <block>

+                                                    <block>

+                                                        <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"

+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id" ></update>

+                                                    </block>

+                                                    <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                                        <block>

+                                                            <for silentFailure='true' index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >

+                                                                <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`'>

+                                                                    <outcome value=''>

+                                                                        <block></block>

+                                                                    </outcome>

+                                                                    <outcome value='Other'>

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />

+                                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                            </set>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </for>

+                                                            <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                                                <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                                                    <outcome value=''>

+                                                                        <block></block>

+                                                                    </outcome>

+                                                                    <outcome value='Other'>

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                            </set>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </for>

+                                                        </block>

+                                                    </for>

+                                                </block>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`'EIPAM returned VNFC name ' + $tmp.vnfc-name + ' but could not find that under vf-module-assignments for vm-type ' + $tmp.vm-type`" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length`'>

+                                        <outcome value=''>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length' value='1' />

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-network-role'

+  value='`$tmp.network-role`' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet_length' value='1' />

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-subnet-role'

+  value='`$tmp.subnet-role`' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments_length' value='1' />

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-address-family'

+  value='`$tmp.address-family`' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip_length' value='1' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-ip-address'

+  value='`$tmp.ip-prefix`' />

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-client-key'

+  value='`$tmp.client-key`' />

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].ip-type'

+  value='FIXED' />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='0'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length' value='1' />

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-network-role'

+  value='`$tmp.network-role`' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet_length' value='1' />

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-subnet-role'

+  value='`$tmp.subnet-role`' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments_length' value='1' />

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-address-family'

+  value='`$tmp.address-family`' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip_length' value='1' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-ip-address'

+  value='`$tmp.ip-prefix`' />

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-client-key'

+  value='`$tmp.client-key`' />

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[0].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].ip-type'

+  value='FIXED' />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='found-network-role' value='false' />

+                                                </set>

+                                                <for index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length`' >

+                                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-network-role

+  == $tmp.network-role`'>

+                                                        <outcome value='true'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name='found-network-role' value='true' />

+                                                                </set>

+                                                                <break/>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                                <switch test='`$found-network-role`'>

+                                                    <outcome value='false'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='network-role-index'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-network-role'

+  value='`$tmp.network-role`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data_length'

+  value='`$network-role-index + 1`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length' value='1' />

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-subnet-role'

+  value='`$tmp.subnet-role`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments_length' value='1' />

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-address-family'

+  value='`$tmp.address-family`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip_length' value='1' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-ip-address'

+  value='`$tmp.ip-prefix`' />

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-client-key'

+  value='`$tmp.client-key`' />

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[0].vnfc-ip-assignments[0].vnfc-subnet-ip[0].ip-type'

+  value='FIXED' />

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='found-subnet-role' value='false' />

+                                                            </set>

+                                                            <for index='subnet-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length`' >

+                                                                <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-subnet-role

+  == $tmp.subnet-role`'>

+                                                                    <outcome value='true'>

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name='found-subnet-role' value='true' />

+                                                                            </set>

+                                                                            <break/>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </for>

+                                                            <switch test='`$found-subnet-role`'>

+                                                                <outcome value='false'>

+                                                                    <block atomic="true">

+                                                                        <set>

+                                                                            <parameter name='subnet-role-index'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length`' />

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-subnet-role'

+  value='`$tmp.subnet-role`' />

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length'

+  value='`$subnet-role-index + 1`' />

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length' value='1' />

+                                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-address-family'

+  value='`$tmp.address-family`' />

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-subnet-ip_length' value='1' />

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-ip-address'

+  value='`$tmp.ip-prefix`' />

+                                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-subnet-ip[0].vnfc-client-key'

+  value='`$tmp.client-key`' />

+                                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[0].vnfc-subnet-ip[0].ip-type'

+  value='FIXED' />

+                                                                        </set>

+                                                                    </block>

+                                                                </outcome>

+                                                                <outcome value='true'>

+                                                                    <block atomic="true">

+                                                                        <set>

+                                                                            <parameter name='found-address-family' value='false' />

+                                                                        </set>

+                                                                        <for index='address-family-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' >

+                                                                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-subnet-role

+  == $tmp.address-family`'>

+                                                                                <outcome value='true'>

+                                                                                    <block atomic="true">

+                                                                                        <set>

+                                                                                            <parameter name='found-address-family' value='true' />

+                                                                                        </set>

+                                                                                        <break/>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </for>

+                                                                        <switch test='`$found-address-family`'>

+                                                                            <outcome value='false'>

+                                                                                <block atomic="true">

+                                                                                    <set>

+                                                                                        <parameter name='address-family-index'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' />

+                                                                                    </set>

+                                                                                    <set>

+                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family'

+  value='`$tmp.address-family`' />

+                                                                                    </set>

+                                                                                    <set>

+                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length'

+  value='`$address-family-index + 1`' />

+                                                                                    </set>

+                                                                                    <set>

+                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length' value='1' />

+                                                                                    </set>

+                                                                                    <set>

+                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-ip-address'

+  value='`$tmp.ip-prefix`' />

+                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-client-key'

+  value='`$tmp.client-key`' />

+                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].ip-type'

+  value='FIXED' />

+                                                                                    </set>

+                                                                                </block>

+                                                                            </outcome>

+                                                                            <outcome value='true'>

+                                                                                <block atomic="true">

+                                                                                    <set>

+                                                                                        <parameter name='ip-address-index'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' />

+                                                                                    </set>

+                                                                                    <set>

+                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$ip-address-index].vnfc-ip-address'

+  value='`$tmp.ip-prefix`' />

+                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$ip-address-index].vnfc-client-key'

+  value='`$tmp.client-key`' />

+                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$ip-address-index].ip-type'

+  value='FIXED' />

+                                                                                    </set>

+                                                                                    <set>

+                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-name-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length'

+  value='`$ip-address-length + 1`' />

+                                                                                    </set>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                            <outcome value='VIP'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.network-role' value='`$ck-split[1]`' />

+                                        <parameter name='tmp.subnet-role' value='`$ck-split[2]`' />

+                                        <parameter name='tmp.address-family' value='`$ck-split[4]`' />

+                                    </set>

+                                    <set>

+                                        <parameter name='tmp.vm-network-index' value='-1' />

+                                    </set>

+                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`'>

+                                        <outcome value=''>

+                                            <block>

+                                                <set>

+                                                    <parameter name='tmp.vm-network-index' value='0' />

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'

+  value='1' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[0].network-role'

+  value='`$tmp.network-role`' />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='0'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='tmp.vm-network-index' value='0' />

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'

+  value='1' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[0].network-role'

+  value='`$tmp.network-role`' />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block>

+                                                <for silentFailure='true' index='vm-network-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >

+                                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-role

+  == $tmp.network-role`'>

+                                                        <outcome value='true'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name='tmp.vm-network-index' value='`$vm-network-index`' />

+                                                                </set>

+                                                                <break/>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                                <switch test='`$tmp.vm-network-index`'>

+                                                    <outcome value='-1'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.vm-network-index'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-role'

+  value='`$tmp.network-role`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'

+  value='`$tmp.vm-network-index + 1`' />

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$tmp.address-family`'>

+                                        <outcome value='4'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='tmp.length'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4_length`' />

+                                                </set>

+                                                <switch test='`$tmp.length`'>

+                                                    <outcome value=''>

+                                                        <set>

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4_length'

+  value='1' />

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4[0]'

+  value='`$tmp.ip-prefix`' />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='0'>

+                                                        <set>

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4_length'

+  value='1' />

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4[0]'

+  value='`$tmp.ip-prefix`' />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$tmp.length]'

+  value='`$tmp.ip-prefix`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v4_length'

+  value='`$tmp.length + 1`' />

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='6'>

+                                            <block>

+                                                <set>

+                                                    <parameter name='tmp.length'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6_length`' />

+                                                </set>

+                                                <switch test='`$tmp.length`'>

+                                                    <outcome value=''>

+                                                        <set>

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6_length'

+  value='1' />

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6[0]'

+  value='`$tmp.ip-prefix`' />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='0'>

+                                                        <set>

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6_length'

+  value='1' />

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6[0]'

+  value='`$tmp.ip-prefix`' />

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6[$tmp.length]'

+  value='`$tmp.ip-prefix`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].floating-ips.floating-ip-v6_length'

+  value='`$tmp.length + 1`' />

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </for>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/bgb-no-preload2.log' />

+            </execute>

+            <for silentFailure='true' index='vm-type-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                <for silentFailure='true' index='vnfc-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                    <for silentFailure='true' index='vnfc-network-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >

+                        <block>

+                            <set>

+                                <parameter name='tmp.network-role'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-network-role`' />

+                            </set>

+                            <set>

+                                <parameter name='tmp.vm-network-index' value='-1' />

+                            </set>

+                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`'>

+                                <outcome value=''>

+                                    <block>

+                                        <set>

+                                            <parameter name='tmp.vm-network-index' value='0' />

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'

+  value='1' />

+                                        </set>

+                                        <set>

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[0].network-role'

+  value='`$tmp.network-role`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                                <outcome value='0'>

+                                    <block>

+                                        <set>

+                                            <parameter name='tmp.vm-network-index' value='0' />

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'

+  value='1' />

+                                        </set>

+                                        <set>

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[0].network-role'

+  value='`$tmp.network-role`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <block>

+                                        <for silentFailure='true' index='vm-network-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >

+                                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-role

+  == $tmp.network-role`'>

+                                                <outcome value='true'>

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name='tmp.vm-network-index' value='`$vm-network-index`' />

+                                                        </set>

+                                                        <break/>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                        <switch test='`$tmp.vm-network-index`'>

+                                            <outcome value='-1'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name='tmp.vm-network-index'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-role'

+  value='`$tmp.network-role`' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length'

+  value='`$tmp.vm-network-index + 1`' />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <for index='vnfc-subnet-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet_length`' >

+                                <for index='address-family-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments_length`' >

+                                    <block>

+                                        <set>

+                                            <parameter name='tmp.ip-version'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='tmp.nii-index' value='-1' />

+                                        </set>

+                                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length`'>

+                                            <outcome value=''>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='tmp.nii-index' value='0' />

+                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length'

+  value='1' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[0].ip-version'

+  value='`$tmp.ip-version`' />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='0'>

+                                                <block>

+                                                    <set>

+                                                        <parameter name='tmp.nii-index' value='0' />

+                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length'

+  value='1' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[0].ip-version'

+  value='`$tmp.ip-version`' />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <block>

+                                                    <for silentFailure='true' index='nii-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length`' >

+                                                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$nii-index].ip-version

+  == $tmp.ip-version`'>

+                                                            <outcome value='true'>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name='tmp.nii-index' value='`$nii-index`' />

+                                                                    </set>

+                                                                    <break/>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </for>

+                                                    <switch test='`$tmp.nii-index`'>

+                                                        <outcome value='-1'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name='tmp.nii-index'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length`' />

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].ip-version'

+  value='`$tmp.ip-version`' />

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item_length'

+  value='`$tmp.nii-index + 1`' />

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].network-ips.network-ip_length`'>

+                                            <outcome value=''>

+                                                <set>

+                                                    <parameter name='tmp.ip-index' value='0' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='0'>

+                                                <set>

+                                                    <parameter name='tmp.ip-index' value='0' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <set>

+                                                    <parameter name='tmp.ip-index'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].network-ips.network-ip_length`' />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <for silentFailure='true' index='ip-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' >

+                                            <block>

+                                                <set>

+                                                    <parameter name='target-index' value='`$ip-index + $tmp.ip-index`' />

+                                                </set>

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].network-ips.network-ip[$target-index]'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$ip-index].vnfc-ip-address`' />

+                                                </set>

+                                            </block>

+                                        </for>

+                                        <set>

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].network-ips.network-ip_length'

+  value='`$tmp.ip-index + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$tmp.vm-network-index].network-information-items.network-information-item[$tmp.nii-index].ip-count'

+  value='`$tmp.ip-index + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$vnfc-subnet-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' />

+                                        </set>

+                                    </block>

+                                </for>

+                            </for>

+                        </block>

+                    </for>

+                </for>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/bgb-no-preload3.log' />

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-preload.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-preload.xml
new file mode 100755
index 0000000..879f000
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-assign-preload.xml
@@ -0,0 +1,559 @@
+<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-assign-preload' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.from-preload' value='true' />

+            </set>

+            <set>

+                <parameter name='tmp.vf-module-topology.'

+  value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vf-module-topology.`' />

+            </set>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODULE_TO_VFC_MAPPING WHERE vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'

+  pfx='db.vf-module-to-vfc-mapping[]'>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error reading VF_MODULE_TO_VFC_MAPPING table" />

+                    </return>

+                </outcome>

+                <outcome value='not-found'>

+                    <set>

+                        <parameter name='db.vf-module-to-vfc-mapping_length' value='0' />

+                    </set>

+                </outcome>

+            </get-resource>

+            <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                <block atomic="true">

+                    <set>

+                        <parameter name='db-vm-type-index' value='-1' />

+                    </set>

+                    <for index='tmp-idx' start='0' end='`$db.vf-module-to-vfc-mapping_length`' >

+                        <switch test='`$db.vf-module-to-vfc-mapping[$tmp-idx].vm-type

+  == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type`'>

+                            <outcome value='true'>

+                                <block>

+                                    <set>

+                                        <parameter name='db-vm-type-index' value='`$tmp-idx`' />

+                                    </set>

+                                    <break/>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </for>

+                    <switch test='`$db-vm-type-index`'>

+                        <outcome value='-1'>

+                            <block atomic="true">

+                                <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                    <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                            <outcome value=''>

+                                                <block></block>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                </for>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'Preload data contains vm-type ' + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type + ' but VF_MODULE_TO_VFC_MAPPING table does not have this vm-type'`" />

+                                </return>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VFC_MODEL WHERE customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'

+  pfx='db.vfc-model'>

+                        <outcome value='failure'>

+                            <block atomic="true">

+                                <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                    <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                            <outcome value=''>

+                                                <block></block>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                </for>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Error reading VFC_MODEL table" />

+                                </return>

+                            </block>

+                        </outcome>

+                        <outcome value='not-found'>

+                            <block atomic="true">

+                                <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                    <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                            <outcome value=''>

+                                                <block></block>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                    </set>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                </for>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'No entries found in VFC_MODEL table for customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc_customization_uuid`" />

+                                </return>

+                            </block>

+                        </outcome>

+                    </get-resource>

+                    <set>

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code'

+  value='`$db.vfc-model.nfc-naming-code`' />

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function'

+  value='`$db.vfc-model.nfc-function`' />

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid'

+  value='`$db.vfc-model.invariant-uuid`' />

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].uuid'

+  value='`$db.vfc-model.uuid`' />

+                    </set>

+                    <set>

+                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' />

+                    </set>

+                    <switch test='`$db.vfc-model.naming-policy`'>

+                        <outcome value=''>

+                            <for index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vm-index].vnfc-name'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-type-index]`' />

+                                </set>

+                            </for>

+                        </outcome>

+                        <outcome value='Other'>

+                            <for index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.vfc-model.naming-policy`' />

+                                        <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                        <parameter name='naming-policy-generate-name-input.query-parameter' value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vf-module-customization-uuid`' />

+                                        <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />

+                                        <parameter name='naming-policy-generate-name-input.vnf-name' value='`$vf-module-topology-operation-input.vnf-information.vnf-id`' />

+                                        <parameter name='naming-policy-generate-name-input.vm-name' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]`' />

+                                    </set>

+                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >

+                                        <outcome value='failure'>

+                                            <block atomic="true">

+                                                <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                                    <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                                            <outcome value=''>

+                                                                <block></block>

+                                                            </outcome>

+                                                            <outcome value='Other'>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                    </set>

+                                                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </for>

+                                                </for>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`'Unable to generate VNFC name: ' + $error-message`" />

+                                                </return>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='success'>

+                                            <set>

+                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vm-index].vnfc-name'

+  value='`$naming-policy-generate-name-output.vnfc-name`' />

+                                            </set>

+                                        </outcome>

+                                    </call>

+                                </block>

+                            </for>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                    <block>

+                        <set>

+                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' />

+                        </set>

+                        <for silentFailure='true' index='vm-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >

+                            <block>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-network-role'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-role`' />

+                                </set>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-subnet-role'

+  value='NA' />

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet_length'

+  value='1' />

+                                </set>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments_length'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item_length`' />

+                                </set>

+                                <for silentFailure='true' index='ip-version-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item_length`' >

+                                    <block>

+                                        <set>

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-address-family'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].ip-version`' />

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-subnet-dhcp'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].use-dhcp`' />

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-subnet-ip-count'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].ip-count`' />

+                                        </set>

+                                        <for silentFailure='true' index='ip-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].network-ips.network-ip_length`' >

+                                            <set>

+                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-subnet-ips[$ip-index].vnfc-ip-address'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-information-items.network-information-item[$ip-version-index].network-ips.network-ip[$ip-index]`' />

+                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vm-network-index].vnfc-subnet[0].vnfc-ip-assignments[$ip-version-index].vnfc-subnet-ips[$ip-index].ip-type'

+  value='FIXED' />

+                                            </set>

+                                        </for>

+                                    </block>

+                                </for>

+                            </block>

+                        </for>

+                    </block>

+                </for>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/bgb-preload-x.log' />

+            </execute>

+            <for silentFailure='true' index='vnf-network-index' start='0'

+  end='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network_length`' >

+                <block atomic="true">

+                    <set>

+                        <parameter name='found-network-name' value='false' />

+                    </set>

+                    <for silentFailure='true' index='ex-vnf-network-index' start='0'

+  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >

+                        <switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name

+  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].network-name`'>

+                            <outcome value='true'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='found-network-name' value='true' />

+                                    </set>

+                                    <break/>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </for>

+                    <switch test='`$found-network-name`'>

+                        <outcome value='true'>

+                            <switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role

+  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].network-role`'>

+                                <outcome value='false'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='cur-vnf-network-index'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-role'

+  value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`' />

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-name'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].network-name`' />

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-id'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].network-id`' />

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].neutron-id'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].neutron-id`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length'

+  value='`$cur-vnf-network-index + 1`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='cur-subnet-index' value='0' />

+                                        </set>

+                                        <switch test="`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[0].sdnc-subnet-id`">

+                                            <outcome value=''>

+                                                <block atomic="true">

+                                                    <for index='ex-subnet-index' start='0'

+  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data_length`' >

+                                                        <set>

+                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].sdnc-subnet-id'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].sdnc-subnet-id`' />

+                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-id'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-id`' />

+                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].ip-version'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].ip-version`' />

+                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-name'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-name`' />

+                                                        </set>

+                                                    </for>

+                                                    <set>

+                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data_length'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data_length`' />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <block atomic="true">

+                                                    <for index='subnet-index' start='0'

+  end='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.found-match' value='false' />

+                                                            </set>

+                                                            <for index='ex-subnet-index' start='0'

+  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data_length`' >

+                                                                <switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].ip-version

+  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].ip-version`'>

+                                                                    <outcome value='true'>

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name='match' value='true' />

+                                                                            </set>

+                                                                            <switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id`'>

+                                                                                <outcome value=''>

+                                                                                    <block></block>

+                                                                                </outcome>

+                                                                                <outcome value='Other'>

+                                                                                    <switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-id

+  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-id`'>

+                                                                                        <outcome value='false'>

+                                                                                            <set>

+                                                                                                <parameter name='match' value='false' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                            <switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-name`'>

+                                                                                <outcome value=''>

+                                                                                    <block></block>

+                                                                                </outcome>

+                                                                                <outcome value='Other'>

+                                                                                    <switch test='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-index].subnet-name

+  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-name`'>

+                                                                                        <outcome value='false'>

+                                                                                            <set>

+                                                                                                <parameter name='match' value='false' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                            <switch test='`$match`'>

+                                                                                <outcome value='true'>

+                                                                                    <block atomic="true">

+                                                                                        <set>

+                                                                                            <parameter name='tmp.found-match' value='true' />

+                                                                                        </set>

+                                                                                        <break/>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </for>

+                                                            <switch test='`$tmp.found-match`'>

+                                                                <outcome value='false'>

+                                                                    <block atomic="true">

+                                                                        <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                                                            <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                                                                <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                                                                    <outcome value=''>

+                                                                                        <block></block>

+                                                                                    </outcome>

+                                                                                    <outcome value='Other'>

+                                                                                        <block atomic="true">

+                                                                                            <set>

+                                                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                                            </set>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </for>

+                                                                        </for>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                                                                            <parameter name='filename' value='/var/tmp/bgb-preloadxxx.log' />

+                                                                        </execute>

+                                                                        <return status='failure'>

+                                                                            <parameter name='ack-final' value='Y'/>

+                                                                            <parameter name="error-code" value="500" />

+                                                                            <parameter name="error-message" value="`'Could not find subnet match for network-name '

+      + $mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name`" />

+                                                                        </return>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                            <set>

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$cur-subnet-index].sdnc-subnet-id'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].sdnc-subnet-id`' />

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$cur-subnet-index].subnet-id'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-id`' />

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$cur-subnet-index].ip-version'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].ip-version`' />

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data[$cur-subnet-index].subnet-name'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$ex-vnf-network-index].subnets-data.subnet-data[$ex-subnet-index].subnet-name`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='cur-subnet-index' value='`$cur-subnet-index + 1`' />

+                                                            </set>

+                                                        </block>

+                                                    </for>

+                                                    <set>

+                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].subnets-data.subnet-data_length'

+  value='`$cur-subnet-index`' />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </outcome>

+                        <outcome value='false'>

+                            <block atomic="true">

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`'>

+                                    <outcome value=''>

+                                        <set>

+                                            <parameter name='cur-vnf-network-index' value='0' />

+                                        </set>

+                                    </outcome>

+                                    <outcome value='0'>

+                                        <set>

+                                            <parameter name='cur-vnf-network-index' value='0' />

+                                        </set>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <set>

+                                            <parameter name='cur-vnf-network-index'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-role'

+  value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`' />

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-name'

+  value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-name`' />

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].network-id'

+  value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-id`' />

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$cur-vnf-network-index].neutron-id'

+  value='`$mdsal-preload.preload-list[0].preload-data.preload-vf-module-topology-information.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].neutron-id`' />

+                                </set>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length'

+  value='`$cur-vnf-network-index + 1`' />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/bgb-preload.log' />

+            </execute>

+            <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                <for index='vm-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >

+                    <block atomic="true">

+                        <set>

+                            <parameter name='found-network' value='false' />

+                        </set>

+                        <set>

+                            <parameter name='tmp.network-role'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-role`' />

+                        </set>

+                        <for index='vnf-network-index' start='0'

+  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >

+                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role

+  == $tmp.network-role`'>

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-id'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-id`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='found-network' value='true' />

+                                        </set>

+                                        <break/>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$found-network`'>

+                            <outcome value='false'>

+                                <block atomic="true">

+                                    <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                        <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                                <outcome value=''>

+                                                    <block></block>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                        </set>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                    </for>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value="`'Unable to find network-id for network with network-role ' + $tmp.network-role`" />

+                                    </return>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </for>

+            </for>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-assign.xml
new file mode 100755
index 0000000..b9589a7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-assign.xml
@@ -0,0 +1,1862 @@
+<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='1-4-2-20181108R1'>

+    <method rpc='vf-module-topology-operation-assign' mode='sync'>

+        <block atomic="true">

+            <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>

+            <set>

+                <parameter name="so.ack-final-indicator" value="Y" />

+                <parameter name="so.response-code" value="500" />

+                <parameter name="so.notification-url" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                <parameter name="so.svc-request-id" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                <parameter name="so.service-type" value="`$vf-module-topology-operation-input.service-information.subscription-service-type`" />

+                <parameter name="so.service-instance-id" value="`$vf-module-topology-operation-input.service-information.service-instance-id`" />

+            </set>

+            <switch test='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`'>

+                <outcome value=''>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='prop.cloud-region.cloud-owner' value='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`' />

+                    </set>

+                </outcome>

+            </switch>

+            <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>

+                <outcome value='CreateVfModuleInstance'>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="If svc-action is 'assign' then request-action must be 'CreateVfModuleInstance'" />

+                        </set>

+                        <block atomic='true'>

+                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </switch>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODULE_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'

+  pfx='db.vf-module-model'>

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />

+                        </set>

+                        <block atomic='true'>

+                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="`'No model found for VF module customization UUID ' + $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`" />

+                        </set>

+                        <block atomic='true'>

+                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </get-resource>

+            <set>

+                <parameter name='vnf-index' value='-1' />

+            </set>

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="There are no VNFs defined in MD-SAL" />

+                        </set>

+                        <block atomic='true'>

+                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <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'>

+                                <block>

+                                    <set>

+                                        <parameter name='vnf-index' value='`$idx`' />

+                                    </set>

+                                    <break/>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </for>

+                </outcome>

+            </switch>

+            <switch test='`$vnf-index`'>

+                <outcome value='-1'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`" />

+                        </set>

+                        <block atomic='true'>

+                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </switch>

+            <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-forking-logic' mode='sync' ></call>

+            <switch test="`$ss.self-serve-flag`">

+                <outcome value='true'>

+                    <block atomic="true">

+                        <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-assign' mode='sync' >

+                            <outcome value='failure'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="`'Failed to create self-serve assignment for vf-module with vf-module-id=' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' with error: ' + $error-message`" />

+                                    </set>

+                                    <block atomic='true'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </call>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'

+  value='PendingCreate' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-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-module-index].vf-module-data.vf-module-level-oper-status.last-action'

+  value='`$vf-module-topology-operation-input.request-information.request-action`' />

+                        </set>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                            <parameter name='filename' value='/var/tmp/ss-vnfend.log' />

+                        </execute>

+                        <set>

+                            <parameter name="so.response-code" value="200" />

+                        </set>

+                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                        <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>

+                </outcome>

+                <outcome value='false'>

+                    <block atomic="true">

+                        <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='vf-module-index' value='0' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block>

+                                    <set>

+                                        <parameter name='vf-module-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                                    </set>

+                                    <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                                        <switch test='`$vf-module-topology-operation-input.vf-module-information.vf-module-id == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id`'>

+                                            <outcome value='true'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name="error-message" value="`'VF module id ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id

+       + ' already exists, and status is ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-level-oper-status.order-status`" />

+                                                    </set>

+                                                    <block atomic='true'>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`$error-message`" />

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-module-index + 1`' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id'

+   value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                        </set>

+                        <set>

+                            <parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                            <parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-name' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-name`' />

+                            <parameter name='tmp.vf-module-topology.vf-module-topology-identifier.vf-module-type' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-type`' />

+                            <parameter name='tmp.vf-module-topology.tenant' value='`$vf-module-topology-operation-input.vf-module-request-input.tenant`' />

+                            <parameter name='tmp.vf-module-topology.aic-cloud-region' value='`$vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`' />

+                        </set>

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="cloud-region" 

+		key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND 

+		     cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region"

+        pfx='aai.cloud-region' local-only='false' >

+                            <outcome value='not-found'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Cloud region not found in AAI" />

+                                    </set>

+                                    <block atomic='true'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='failure'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Error retrieving cloud region from AAI.  Is AAI down?" />

+                                    </set>

+                                    <block atomic='true'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </get-resource>

+                        <for index='idx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >

+                            <switch test='`$aai.cloud-region.relationship-list.relationship[$idx].related-to`'>

+                                <outcome value='complex'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>

+                                            <parameter name='ctx_memory_result_key' value='aai-uid-split' />

+                                            <parameter name='original_string' value='`$aai.cloud-region.relationship-list.relationship[$idx].related-link`' />

+                                            <parameter name='regex' value='/' />

+                                        </execute>

+                                        <set>

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.aic-clli'

+   value='`$aai-uid-split[$aai-uid-split_length - 1]`' />

+                                        </set>

+                                        <break/>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.aic-clli`'>

+                            <outcome value=''>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="`'Unable to find aic-clli in AAI for aic-cloud-region ' + $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region`" />

+                                    </set>

+                                    <block atomic='true'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.onap-model-information.model-invariant-uuid'

+  value='`$db.vf-module-model.invariant-uuid`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.onap-model-information.model-invariant-uuid'

+  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.onap-model-information.model-uuid'

+  value='`$db.vf-module-model.uuid`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.onap-model-information.model-uuid'

+  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-uuid`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.onap-model-information.model-version'

+  value='`$db.vf-module-model.version`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.onap-model-information.model-version'

+  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.onap-model-information.model-name'

+  value='`$db.vf-module-model.name`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.onap-model-information.model-name'

+  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-name`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='tmp.vf-module-topology.onap-model-information.model-customization-uuid'

+  value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />

+                        </set>

+                        <switch test='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-name`'>

+                            <outcome value=''>

+                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-no-preload' mode='sync' >

+                                    <outcome value='failure'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="`'from-preload flag is true but could not find preload information for VF module name ' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-name`" />

+                                            </set>

+                                            <block atomic='true'>

+                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`$error-message`" />

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                </call>

+                            </outcome>

+                            <outcome value='Other'>

+                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                    <parameter name='restapiUrl' value="`$prop.controller.url + $prop.restapi.preloadinformation + $vf-module-topology-operation-input.vf-module-request-input.vf-module-name + '/vf-module'`" />

+                                    <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                    <parameter name='format' value='json' />

+                                    <parameter name='httpMethod' value='GET' />

+                                    <parameter name="responsePrefix" value="mdsal-preload" />

+                                    <outcome value='failure'>

+                                        <block>

+                                            <switch test='`$mdsal-preload.response-code`'>

+                                                <outcome value='404'>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-no-preload' mode='sync' >

+                                                        <outcome value='failure'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name="error-message" value="`'from-preload flag is true but could not find preload information for VF module name ' + $vf-module-topology-operation-input.vf-module-request-input.vf-module-name`" />

+                                                                </set>

+                                                                <block atomic='true'>

+                                                                    <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                    <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                    <return status='failure'>

+                                                                        <parameter name='ack-final' value='Y'/>

+                                                                        <parameter name="error-code" value="500" />

+                                                                        <parameter name="error-message" value="`$error-message`" />

+                                                                    </return>

+                                                                </block>

+                                                            </block>

+                                                        </outcome>

+                                                    </call>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name="error-message" value="Error retrieving preload-information" />

+                                                        </set>

+                                                        <block atomic='true'>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                            <return status='failure'>

+                                                                <parameter name='ack-final' value='Y'/>

+                                                                <parameter name="error-code" value="500" />

+                                                                <parameter name="error-message" value="`$error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='success'>

+                                        <block>

+                                            <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign-preload' mode='sync' >

+                                                <outcome value='failure'>

+                                                    <block atomic='true'>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`$error-message`" />

+                                                        </return>

+                                                    </block>

+                                                </outcome>

+                                            </call>

+                                        </block>

+                                    </outcome>

+                                </execute>

+                            </outcome>

+                        </switch>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                            <parameter name='filename' value='/var/tmp/bgb-vfmoduleb.log' />

+                        </execute>

+                        <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.from-preload`'>

+                            <outcome value='false'>

+                                <set>

+                                    <parameter name='automated-assignment' value='true' />

+                                </set>

+                            </outcome>

+                            <outcome value='true'>

+                                <set>

+                                    <parameter name='automated-assignment' value='false' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                            <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                <for silentFailure='true' index='vnfc-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='vnf-network-index' value='-1' />

+                                        </set>

+                                        <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >

+                                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-network-role

+  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$idx].network-role`'>

+                                                <outcome value='true'>

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name='vnf-network-index' value='`$idx`' />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].network-id'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$idx].network-id`' />

+                                                        </set>

+                                                        <break/>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                        <switch test='`$vnf-network-index`'>

+                                            <outcome value='-1'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name="error-message" value="`'VNFC network role '

+      + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-network-role

+      + ' is not found in VNF network list'

+      `" />

+                                                    </set>

+                                                    <block atomic='true'>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`$error-message`" />

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <for index='subnet-role-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet_length`' >

+                                            <for index='address-family-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' >

+                                                <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`'>

+                                                    <outcome value=''>

+                                                        <block></block>

+                                                    </outcome>

+                                                    <outcome value='0'>

+                                                        <block></block>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.address-family'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family`' />

+                                                            </set>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name='af-count' value='0' />

+                                                                </set>

+                                                                <for index='subnet-data-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >

+                                                                    <switch test='`$tmp.address-family

+  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].ip-version`'>

+                                                                        <outcome value='true'>

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name='subnet-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id`' />

+                                                                                </set>

+                                                                                <set>

+                                                                                    <parameter name='af-count' value='`$af-count + 1`' />

+                                                                                </set>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </for>

+                                                                <switch test='`$af-count`'>

+                                                                    <outcome value='1'>

+                                                                        <set>

+                                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id'

+  value='`$subnet-id`' />

+                                                                        </set>

+                                                                    </outcome>

+                                                                    <outcome value='Other'>

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name='subnet-id' value='-1' />

+                                                                            </set>

+                                                                            <for index='subnet-data-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data_length`' >

+                                                                                <switch test='`$tmp.address-family

+  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].ip-version`'>

+                                                                                    <outcome value='true'>

+                                                                                        <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].network-start-address`'>

+                                                                                            <outcome value=''>

+                                                                                                <block atomic="true">

+                                                                                                    <set>

+                                                                                                        <parameter name="error-message" value="`'SDNC subnet id '

+      + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id

+      + ' does not have network-start-address populated'`" />

+                                                                                                    </set>

+                                                                                                    <block atomic='true'>

+                                                                                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                                        <return status='failure'>

+                                                                                                            <parameter name='ack-final' value='Y'/>

+                                                                                                            <parameter name="error-code" value="500" />

+                                                                                                            <parameter name="error-message" value="`$error-message`" />

+                                                                                                        </return>

+                                                                                                    </block>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                            <outcome value='Other'>

+                                                                                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].cidr-mask`'>

+                                                                                                    <outcome value=''>

+                                                                                                        <block atomic="true">

+                                                                                                            <set>

+                                                                                                                <parameter name="error-message" value="`'SDNC subnet id '

+      + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id

+      + ' does not have cidr-mask populated'`" />

+                                                                                                            </set>

+                                                                                                            <block atomic='true'>

+                                                                                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                                                <return status='failure'>

+                                                                                                                    <parameter name='ack-final' value='Y'/>

+                                                                                                                    <parameter name="error-code" value="500" />

+                                                                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                                                                </return>

+                                                                                                            </block>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='Other'>

+                                                                                                        <block atomic="true">

+                                                                                                            <switch test='`$tmp.address-family`'>

+                                                                                                                <outcome value='ipv4'>

+                                                                                                                    <set>

+                                                                                                                        <parameter name='ip-type' value='IPv4' />

+                                                                                                                    </set>

+                                                                                                                </outcome>

+                                                                                                                <outcome value='ipv6'>

+                                                                                                                    <set>

+                                                                                                                        <parameter name='ip-type' value='IPv6' />

+                                                                                                                    </set>

+                                                                                                                </outcome>

+                                                                                                            </switch>

+                                                                                                            <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="isInSameSubnet">

+                                                                                                                <parameter name="firstIPAddr" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].network-start-address`" />

+                                                                                                                <parameter name="secondIPAddr" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-ip-address`" />

+                                                                                                                <parameter name="subnet" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].cidr-mask`" />

+                                                                                                                <parameter name="ipType" value="`$ip-type`" />

+                                                                                                                <outcome value='success'>

+                                                                                                                    <block atomic="true">

+                                                                                                                        <set>

+                                                                                                                            <parameter name='subnet-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].subnets-data.subnet-data[$subnet-data-index].sdnc-subnet-id`' />

+                                                                                                                        </set>

+                                                                                                                        <break/>

+                                                                                                                    </block>

+                                                                                                                </outcome>

+                                                                                                            </execute>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </for>

+                                                                            <switch test='`$subnet-id`'>

+                                                                                <outcome value='-1'>

+                                                                                    <block atomic="true">

+                                                                                        <set>

+                                                                                            <parameter name="error-message" value="`'Not able to find VNF network subnet that contains address '

+      + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[0].vnfc-ip-address

+      `" />

+                                                                                        </set>

+                                                                                        <block atomic='true'>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                            <return status='failure'>

+                                                                                                <parameter name='ack-final' value='Y'/>

+                                                                                                <parameter name="error-code" value="500" />

+                                                                                                <parameter name="error-message" value="`$error-message`" />

+                                                                                            </return>

+                                                                                        </block>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                            <set>

+                                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id' value='`$subnet-id`' />

+                                                                            </set>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </for>

+                                        </for>

+                                    </block>

+                                </for>

+                            </for>

+                        </for>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                            <parameter name='filename' value='/var/tmp/bgb-vfmodulec.log' />

+                        </execute>

+                        <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                            <block atomic="true">

+                                <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >

+                                    <block atomic="true">

+                                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VFC_RELATED_NETWORK_ROLE where vfc_customization_uuid = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].model-customization-uuid

+    and network_role = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role'

+  pfx='db.vnf-related-network-role[]'>

+                                            <outcome value='failure'>

+                                                <block atomic='true'>

+                                                    <set>

+                                                        <parameter name="error-message" value="Error reading VFC_RELATED_NETWORK_ROLE table" />

+                                                    </set>

+                                                    <block atomic='true'>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`$error-message`" />

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <for index='db-related-network-index' start='0' end='`$db.vnf-related-network-role_length`' >

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name='found-related-network' value='false' />

+                                                        </set>

+                                                        <for silentFailure='true' index='vnf-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >

+                                                            <block atomic="true">

+                                                                <for silentFailure='true' index='related-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].related-networks.related-network_length`' >

+                                                                    <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].related-networks.related-network[$related-network-index].network-role

+  == $db.vnf-related-network-role[$db-related-network-index].related-network-role`'>

+                                                                        <outcome value='true'>

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name='found-related-network' value='true' />

+                                                                                </set>

+                                                                                <set>

+                                                                                    <parameter name='saved-vnf-network-index' value='`$vnf-network-index`' />

+                                                                                    <parameter name='saved-related-network-index' value='`$related-network-index`' />

+                                                                                </set>

+                                                                                <break/>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </for>

+                                                                <switch test='`$found-related-network`'>

+                                                                    <outcome value='true'>

+                                                                        <break/>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                        </for>

+                                                        <switch test='`$found-related-network`'>

+                                                            <outcome value='false'>

+                                                                <block atomic='true'>

+                                                                    <set>

+                                                                        <parameter name="error-message" value="`'Unable to find related network '

+      + $db.vnf-related-network-role[$db-related-network-index].related-network-role + ' in vnf-networks'`" />

+                                                                    </set>

+                                                                    <block atomic='true'>

+                                                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                        <return status='failure'>

+                                                                            <parameter name='ack-final' value='Y'/>

+                                                                            <parameter name="error-code" value="500" />

+                                                                            <parameter name="error-message" value="`$error-message`" />

+                                                                        </return>

+                                                                    </block>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                        <set>

+                                                            <parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].is-trunked'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].is-trunked`' />

+                                                            <parameter name='$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].segmentation-id'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].segmentation-id`' />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name='rn-index' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length`' />

+                                                        </set>

+                                                        <switch test='`$rn-index`'>

+                                                            <outcome value=''>

+                                                                <set>

+                                                                    <parameter name='rn-index' value='0' />

+                                                                </set>

+                                                            </outcome>

+                                                        </switch>

+                                                        <set>

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].network-id'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].network-id`' />

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].network-role'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].network-role`' />

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.vlan-interface'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.vlan-interface`' />

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.lower-tag-id'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.lower-tag-id`' />

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.upper-tag-id'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.upper-tag-id`' />

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$rn-index].vlan-tags.is-private'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$saved-vnf-network-index].related-networks.related-network[$saved-related-network-index].vlan-tags.is-private`' />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length'

+  value='`$rn-index + 1`' />

+                                                        </set>

+                                                    </block>

+                                                </for>

+                                            </outcome>

+                                        </get-resource>

+                                    </block>

+                                </for>

+                            </block>

+                        </for>

+                        <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>

+                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="vf-module"

+   key="vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id

+      AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"

+   force="true" pfx="tmp.AnAI-data">

+                            <parameter name="vf-module-name" value="`$tmp.vf-module-topology.vf-module-topology-identifier.vf-module-name`" />

+                            <parameter name="model-invariant-id" value="`$tmp.vf-module-topology.onap-model-information.model-invariant-uuid`" />

+                            <parameter name="model-version-id" value="`$tmp.vf-module-topology.onap-model-information.model-uuid`" />

+                            <parameter name="model-customization-id" value="`$tmp.vf-module-topology.onap-model-information.model-customization-uuid`" />

+                            <parameter name="selflink" value="`$vf-module-object-path`" />

+                            <parameter name="automated-assignment" value="`$automated-assignment`" />

+                            <outcome value='failure'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Error updating vf-module in AAI" />

+                                    </set>

+                                    <block atomic='true'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="`'No vf-module found in AAI for vf module ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`" />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </update>

+                        <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                            <block atomic="true">

+                                <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                    <block atomic="true">

+                                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code`'>

+                                            <outcome value=''>

+                                                <set>

+                                                    <parameter name='tmp.nfc-naming-code' value='DEFAULT' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <set>

+                                                    <parameter name='tmp.nfc-naming-code' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-naming-code`' />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function`'>

+                                            <outcome value=''>

+                                                <set>

+                                                    <parameter name='tmp.nfc-function' value='DEFAULT' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <set>

+                                                    <parameter name='tmp.nfc-function' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].nfc-function`' />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid`'>

+                                            <outcome value=''>

+                                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vnfc" 

+	key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name" >

+                                                    <parameter name="vnfc-name" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />

+                                                    <parameter name="nfc-naming-code" value="`$tmp.nfc-naming-code`" />

+                                                    <parameter name="nfc-function" value="`$tmp.nfc-function`" />

+                                                    <parameter name="orchestration-status" value="`PendingCreate`" />

+                                                    <parameter name="in-maint" value="true" />

+                                                    <parameter name="prov-status" value="`PREPROV`" />

+                                                    <outcome value='failure'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name="error-message" value="Error saving vnfc to AAI" />

+                                                            </set>

+                                                            <block atomic='true'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name="error-message" value="Error saving vnfc to AAI" />

+                                                            </set>

+                                                            <block atomic='true'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                </save>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vnfc" 

+	key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name" >

+                                                    <parameter name="vnfc-name" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />

+                                                    <parameter name="nfc-naming-code" value="`$tmp.nfc-naming-code`" />

+                                                    <parameter name="nfc-function" value="`$tmp.nfc-function`" />

+                                                    <parameter name="model-invariant-id" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].invariant-uuid`" />

+                                                    <parameter name="model-version-id" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].uuid`" />

+                                                    <parameter name="model-customization-id" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].model-customization-uuid`" />

+                                                    <parameter name="orchestration-status" value="`PendingCreate`" />

+                                                    <parameter name="in-maint" value="true" />

+                                                    <parameter name="prov-status" value="`PREPROV`" />

+                                                    <outcome value='failure'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name="error-message" value="Error saving vnfc to AAI" />

+                                                            </set>

+                                                            <block atomic='true'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name="error-message" value="Error saving vnfc to AAI" />

+                                                            </set>

+                                                            <block atomic='true'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                </save>

+                                            </outcome>

+                                        </switch>

+                                        <set>

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].created_flag' value='true' />

+                                        </set>

+                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="vnfc:relationship-list"

+   key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name"

+   force="true" pfx="tmp.AnAI-data">

+                                            <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />

+                                            <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/generic-vnfs/generic-vnf/' +

+        $vf-module-topology-operation-input.vnf-information.vnf-id`" />

+                                            <parameter name="relationship-list.relationship[1].related-to" value="vf-module" />

+                                            <parameter name="relationship-list.relationship[1].related-link"

+      value="`'/aai/v$/network/generic-vnfs/generic-vnf/' +

+        $vf-module-topology-operation-input.vnf-information.vnf-id +

+        '/vf-modules/vf-module/' +

+        $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`" />

+                                            <outcome value='failure'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name="error-message" value="Error updating vnfc relationships in AAI" />

+                                                    </set>

+                                                    <block atomic='true'>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`$error-message`" />

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name="error-message" value="Not-found error updating vnfc relationships" />

+                                                    </set>

+                                                    <block atomic='true'>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`$error-message`" />

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                        </save>

+                                        <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >

+                                            <block atomic="true">

+                                                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >

+                                                    <parameter name="ctx-destination" value="cp-instance-id" />

+                                                </execute>

+                                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="cp" 

+	key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name

+	  AND cp.cp-instance-id = $cp-instance-id" >

+                                                    <parameter name="cp-instance-id" value="`$cp-instance-id`" />

+                                                    <parameter name="port-id" value="0" />

+                                                    <outcome value='failure'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name="error-message" value="Error saving cp object to AAI" />

+                                                            </set>

+                                                            <block atomic='true'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name="error-message" value="Error saving cp object to AAI" />

+                                                            </set>

+                                                            <block atomic='true'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                </save>

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].connection-point.connection-point-id'

+  value='`$cp-instance-id`' />

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].connection-point.port-id'

+  value='0' />

+                                                </set>

+                                                <for silentFailure='true' index='subnet-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet_length`' >

+                                                    <for silentFailure='true' index='address-family-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments_length`' >

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.address-family'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-address-family`' />

+                                                            </set>

+                                                            <for silentFailure='true' index='address-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip_length`' >

+                                                                <switch test='`$tmp.address-family`'>

+                                                                    <outcome value='ipv4'>

+                                                                        <block atomic="true">

+                                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-interface-ipv4-address-list" 

+	key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name

+	  AND cp.cp-instance-id = $cp-instance-id

+	  AND l3-interface-ipv4-address-list.l3-interface-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address" >

+                                                                                <parameter name="l3-interface-ipv4-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address`" />

+                                                                                <parameter name="l3-interface-ipv4-prefix-length" value="32" />

+                                                                                <parameter name="is-floating" value="false" />

+                                                                                <outcome value='failure'>

+                                                                                    <block atomic="true">

+                                                                                        <set>

+                                                                                            <parameter name="error-message" value="Error creating l3-interface-ipv4-address-list object in AAI" />

+                                                                                        </set>

+                                                                                        <block atomic='true'>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                            <return status='failure'>

+                                                                                                <parameter name='ack-final' value='Y'/>

+                                                                                                <parameter name="error-code" value="500" />

+                                                                                                <parameter name="error-message" value="`$error-message`" />

+                                                                                            </return>

+                                                                                        </block>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </save>

+                                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="l3-interface-ipv4-address-list:relationship-list"

+   key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name

+	  AND cp.cp-instance-id = $cp-instance-id

+	  AND l3-interface-ipv4-address-list.l3-interface-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address"

+   force="true" pfx="tmp.AnAI-data">

+                                                                                <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />

+                                                                                <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/l3-networks/l3-network/' +

+        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id`" />

+                                                                                <parameter name="relationship-list.relationship[1].related-to" value="subnet" />

+                                                                                <parameter name="relationship-list.relationship[1].related-link"

+      value="`'/aai/v$/network/l3-networks/l3-network/' +

+        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id +

+        '/subnets/subnet/' +

+        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id`" />

+                                                                                <outcome value='failure'>

+                                                                                    <block atomic="true">

+                                                                                        <set>

+                                                                                            <parameter name="error-message" value="Error updating l3-interface-ipv4-address-list relationships in AAI" />

+                                                                                        </set>

+                                                                                        <block atomic='true'>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                            <return status='failure'>

+                                                                                                <parameter name='ack-final' value='Y'/>

+                                                                                                <parameter name="error-code" value="500" />

+                                                                                                <parameter name="error-message" value="`$error-message`" />

+                                                                                            </return>

+                                                                                        </block>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                                <outcome value='not-found'>

+                                                                                    <block atomic="true">

+                                                                                        <set>

+                                                                                            <parameter name="error-message" value="Not-found error updating l3-interface-ipv4-address-list relationships" />

+                                                                                        </set>

+                                                                                        <block atomic='true'>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                            <return status='failure'>

+                                                                                                <parameter name='ack-final' value='Y'/>

+                                                                                                <parameter name="error-code" value="500" />

+                                                                                                <parameter name="error-message" value="`$error-message`" />

+                                                                                            </return>

+                                                                                        </block>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </save>

+                                                                        </block>

+                                                                    </outcome>

+                                                                    <outcome value='ipv6'>

+                                                                        <block atomic="true">

+                                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="l3-interface-ipv6-address-list" 

+	key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name

+	  AND cp.cp-instance-id = $cp-instance-id

+	  AND l3-interface-ipv6-address-list.l3-interface-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address" >

+                                                                                <parameter name="l3-interface-ipv6-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address`" />

+                                                                                <parameter name="l3-interface-ipv6-prefix-length" value="128" />

+                                                                                <parameter name="is-floating" value="false" />

+                                                                                <outcome value='failure'>

+                                                                                    <block atomic="true">

+                                                                                        <set>

+                                                                                            <parameter name="error-message" value="Error creating l3-interface-ipv6-address-list object in AAI" />

+                                                                                        </set>

+                                                                                        <block atomic='true'>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                            <return status='failure'>

+                                                                                                <parameter name='ack-final' value='Y'/>

+                                                                                                <parameter name="error-code" value="500" />

+                                                                                                <parameter name="error-message" value="`$error-message`" />

+                                                                                            </return>

+                                                                                        </block>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </save>

+                                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="l3-interface-ipv6-address-list:relationship-list"

+   key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name

+	  AND cp.cp-instance-id = $cp-instance-id

+	  AND l3-interface-ipv6-address-list.l3-interface-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].vnfc-subnet-ip[$address-index].vnfc-ip-address"

+   force="true" pfx="tmp.AnAI-data">

+                                                                                <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />

+                                                                                <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/l3-networks/l3-network/' +

+        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id`" />

+                                                                                <parameter name="relationship-list.relationship[1].related-to" value="subnet" />

+                                                                                <parameter name="relationship-list.relationship[1].related-link"

+      value="`'/aai/v$/network/l3-networks/l3-network/' +

+        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].network-id +

+        '/subnets/subnet/' +

+        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-subnet[$subnet-role-index].vnfc-ip-assignments[$address-family-index].subnet-id`" />

+                                                                                <outcome value='failure'>

+                                                                                    <block atomic="true">

+                                                                                        <set>

+                                                                                            <parameter name="error-message" value="Error updating l3-interface-ipv6-address-list relationships in AAI" />

+                                                                                        </set>

+                                                                                        <block atomic='true'>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                            <return status='failure'>

+                                                                                                <parameter name='ack-final' value='Y'/>

+                                                                                                <parameter name="error-code" value="500" />

+                                                                                                <parameter name="error-message" value="`$error-message`" />

+                                                                                            </return>

+                                                                                        </block>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                                <outcome value='not-found'>

+                                                                                    <block atomic="true">

+                                                                                        <set>

+                                                                                            <parameter name="error-message" value="Not-found error updating l3-interface-ipv6-address-list relationships" />

+                                                                                        </set>

+                                                                                        <block atomic='true'>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                            <return status='failure'>

+                                                                                                <parameter name='ack-final' value='Y'/>

+                                                                                                <parameter name="error-code" value="500" />

+                                                                                                <parameter name="error-message" value="`$error-message`" />

+                                                                                            </return>

+                                                                                        </block>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </save>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </for>

+                                                        </block>

+                                                    </for>

+                                                </for>

+                                                <for index='vnf-network-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >

+                                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$network-role-index].vnfc-network-role

+  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`'>

+                                                        <outcome value='true'>

+                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="cp:relationship-list"

+   key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name

+     AND cp.cp-instance-id = $cp-instance-id"

+   force="true" pfx="tmp.AnAI-data">

+                                                                <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />

+                                                                <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/l3-networks/l3-network/' +

+        $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-id`" />

+                                                                <outcome value='failure'>

+                                                                    <block atomic="true">

+                                                                        <set>

+                                                                            <parameter name="error-message" value="Error updating cp relationship to l3-network in AAI" />

+                                                                        </set>

+                                                                        <block atomic='true'>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                            <return status='failure'>

+                                                                                <parameter name='ack-final' value='Y'/>

+                                                                                <parameter name="error-code" value="500" />

+                                                                                <parameter name="error-message" value="`$error-message`" />

+                                                                            </return>

+                                                                        </block>

+                                                                    </block>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <block atomic="true">

+                                                                        <set>

+                                                                            <parameter name="error-message" value="Not-found error updating cp relationship to l3-network" />

+                                                                        </set>

+                                                                        <block atomic='true'>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                            <return status='failure'>

+                                                                                <parameter name='ack-final' value='Y'/>

+                                                                                <parameter name="error-code" value="500" />

+                                                                                <parameter name="error-message" value="`$error-message`" />

+                                                                            </return>

+                                                                        </block>

+                                                                    </block>

+                                                                </outcome>

+                                                            </save>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                                <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >

+                                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role

+  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-network-index].network-role`'>

+                                                        <outcome value='true'>

+                                                            <for silentFailure='true' index='related-network-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network_length`' >

+                                                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="cp:relationship-list"

+   key="vnfc.vnfc-name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name

+     AND cp.cp-instance-id = $cp-instance-id"

+   force="true" pfx="tmp.AnAI-data">

+                                                                    <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />

+                                                                    <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/l3-networks/l3-network/' +

+        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].network-id`" />

+                                                                    <parameter name="relationship-list.relationship[1].related-to" value="vlan-tag" />

+                                                                    <parameter name="relationship-list.relationship[1].related-link"

+      value="`'/aai/v$/network/vlan-tags/vlan-tag/' +

+        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].related-networks.related-network[$related-network-index].vlan-tags.vlan-interface`" />

+                                                                    <outcome value='failure'>

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name="error-message" value="Error updating cp relationship to l3-network and vlan-tag in AAI" />

+                                                                            </set>

+                                                                            <block atomic='true'>

+                                                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                <return status='failure'>

+                                                                                    <parameter name='ack-final' value='Y'/>

+                                                                                    <parameter name="error-code" value="500" />

+                                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                                </return>

+                                                                            </block>

+                                                                        </block>

+                                                                    </outcome>

+                                                                    <outcome value='not-found'>

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name="error-message" value="Not-found error updating cp relationship to l3-network and vlan-tag" />

+                                                                            </set>

+                                                                            <block atomic='true'>

+                                                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                <return status='failure'>

+                                                                                    <parameter name='ack-final' value='Y'/>

+                                                                                    <parameter name="error-code" value="500" />

+                                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                                </return>

+                                                                            </block>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </save>

+                                                            </for>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                            </block>

+                                        </for>

+                                    </block>

+                                </for>

+                                <for silentFailure='true' index='network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >

+                                    <block atomic="true">

+                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="vf-module:relationship-list"

+   key="vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id

+      AND 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="l3-network" />

+                                            <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/l3-networks/l3-network/' +

+        $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id`" />

+                                            <outcome value='failure'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name="error-message" value="Error updating vf-module relationships in AAI" />

+                                                    </set>

+                                                    <block atomic='true'>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`$error-message`" />

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name="error-message" value="`'No l3-network found in AAI for network ID '

+      + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-id`" />

+                                                    </set>

+                                                    <block atomic='true'>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`$error-message`" />

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                        </save>

+                                        <set>

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].created-flag' value='true' />

+                                        </set>

+                                        <for silentFailure='true' index='ipv4-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4_length`' >

+                                            <block atomic="true">

+                                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vip-ipv4-address-list" 

+	key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner

+	  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region

+	  AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]" >

+                                                    <parameter name="vip-ipv4-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]`" />

+                                                    <parameter name="vip-ipv4-prefix-length" value="32" />

+                                                    <parameter name="is-floating" value="false" />

+                                                    <outcome value='failure'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name="error-message" value="Error saving vip-ipv4-address-list in AAI" />

+                                                            </set>

+                                                            <block atomic='true'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name="error-message" value="Not-found error saving vip-ipv4-address-list" />

+                                                            </set>

+                                                            <block atomic='true'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                </save>

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv4-flag' value='true' />

+                                                </set>

+                                                <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                                    <block atomic="true">

+                                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="vip-ipv4-address-list:relationship-list"

+   key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner

+	  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region

+	  AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]"

+   force="true" pfx="tmp.AnAI-data">

+                                                            <parameter name="relationship-list.relationship[0].related-to" value="subnet" />

+                                                            <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/l3-networks/l3-network/'

+        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-id

+        + '/subnets/subnet/'

+        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.ipv4-subnet-id`" />

+                                                            <parameter name="relationship-list.relationship[1].related-to" value="vnfc" />

+                                                            <parameter name="relationship-list.relationship[1].related-link"

+      value="`'/aai/v$/network/vnfcs/vnfc/'

+        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />

+                                                            <outcome value='failure'>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name="error-message" value="Error updating vip-ipv4-address-list relationships in AAI" />

+                                                                    </set>

+                                                                    <block atomic='true'>

+                                                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                        <return status='failure'>

+                                                                            <parameter name='ack-final' value='Y'/>

+                                                                            <parameter name="error-code" value="500" />

+                                                                            <parameter name="error-message" value="`$error-message`" />

+                                                                        </return>

+                                                                    </block>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='not-found'>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name="error-message" value="Not-found error updating vip-ipv4-address-list relationships" />

+                                                                    </set>

+                                                                    <block atomic='true'>

+                                                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                        <return status='failure'>

+                                                                            <parameter name='ack-final' value='Y'/>

+                                                                            <parameter name="error-code" value="500" />

+                                                                            <parameter name="error-message" value="`$error-message`" />

+                                                                        </return>

+                                                                    </block>

+                                                                </block>

+                                                            </outcome>

+                                                        </save>

+                                                        <for silentFailure='true' index='vnfc-network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >

+                                                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role

+  == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].vnfc-network-role`'>

+                                                                <outcome value='true'>

+                                                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="vip-ipv4-address-list:relationship-list"

+   key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner

+	  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region

+	  AND vip-ipv4-address-list.vip-ipv4-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]"

+   force="true" pfx="tmp.AnAI-data">

+                                                                        <parameter name="relationship-list.relationship[0].related-to" value="cp" />

+                                                                        <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/vnfcs/vnfc/'

+        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name

+        + '/cps/cp/'

+        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].connection-point.connection-point-id`" />

+                                                                        <outcome value='failure'>

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name="error-message" value="Error updating vip-ipv4-address-list relationship to cp in AAI" />

+                                                                                </set>

+                                                                                <block atomic='true'>

+                                                                                    <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                    <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                    <return status='failure'>

+                                                                                        <parameter name='ack-final' value='Y'/>

+                                                                                        <parameter name="error-code" value="500" />

+                                                                                        <parameter name="error-message" value="`$error-message`" />

+                                                                                    </return>

+                                                                                </block>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name="error-message" value="Not-found error updating vip-ipv4-address-list relationship to cp" />

+                                                                                </set>

+                                                                                <block atomic='true'>

+                                                                                    <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                    <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                    <return status='failure'>

+                                                                                        <parameter name='ack-final' value='Y'/>

+                                                                                        <parameter name="error-code" value="500" />

+                                                                                        <parameter name="error-message" value="`$error-message`" />

+                                                                                    </return>

+                                                                                </block>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </save>

+                                                                </outcome>

+                                                            </switch>

+                                                        </for>

+                                                    </block>

+                                                </for>

+                                            </block>

+                                        </for>

+                                        <for silentFailure='true' index='ipv6-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6_length`' >

+                                            <block atomic="true">

+                                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vip-ipv6-address-list" 

+	key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner

+	  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region

+	  AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]" >

+                                                    <parameter name="vip-ipv6-address" value="`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]`" />

+                                                    <parameter name="vip-ipv6-prefix-length" value="128" />

+                                                    <parameter name="is-floating" value="false" />

+                                                    <outcome value='failure'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name="error-message" value="Error saving vip-ipv6-address-list in AAI" />

+                                                            </set>

+                                                            <block atomic='true'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='not-found'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name="error-message" value="Not-found error saving vip-ipv6-address-list" />

+                                                            </set>

+                                                            <block atomic='true'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                </save>

+                                                <set>

+                                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.created-ipv6-flag' value='true' />

+                                                </set>

+                                                <for silentFailure='true' index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                                    <block atomic="true">

+                                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="vip-ipv6-address-list:relationship-list"

+   key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner

+	  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region

+	  AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]"

+   force="true" pfx="tmp.AnAI-data">

+                                                            <parameter name="relationship-list.relationship[0].related-to" value="subnet" />

+                                                            <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/l3-networks/l3-network/'

+        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].network-id

+        + '/subnets/subnet/'

+        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.ipv6-subnet-id`" />

+                                                            <parameter name="relationship-list.relationship[1].related-to" value="vnfc" />

+                                                            <parameter name="relationship-list.relationship[1].related-link"

+      value="`'/aai/v$/network/vnfcs/vnfc/'

+        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />

+                                                            <outcome value='failure'>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name="error-message" value="Error updating vip-ipv6-address-list relationships in AAI" />

+                                                                    </set>

+                                                                    <block atomic='true'>

+                                                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                        <return status='failure'>

+                                                                            <parameter name='ack-final' value='Y'/>

+                                                                            <parameter name="error-code" value="500" />

+                                                                            <parameter name="error-message" value="`$error-message`" />

+                                                                        </return>

+                                                                    </block>

+                                                                </block>

+                                                            </outcome>

+                                                            <outcome value='not-found'>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name="error-message" value="Not-found error updating vip-ipv6-address-list relationships" />

+                                                                    </set>

+                                                                    <block atomic='true'>

+                                                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                        <return status='failure'>

+                                                                            <parameter name='ack-final' value='Y'/>

+                                                                            <parameter name="error-code" value="500" />

+                                                                            <parameter name="error-message" value="`$error-message`" />

+                                                                        </return>

+                                                                    </block>

+                                                                </block>

+                                                            </outcome>

+                                                        </save>

+                                                        <for silentFailure='true' index='vnfc-network-role-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >

+                                                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$network-role-index].network-role

+  == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].vnfc-network-role`'>

+                                                                <outcome value='true'>

+                                                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="vip-ipv6-address-list:relationship-list"

+   key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner

+	  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region

+	  AND vip-ipv6-address-list.vip-ipv6-address = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]"

+   force="true" pfx="tmp.AnAI-data">

+                                                                        <parameter name="relationship-list.relationship[0].related-to" value="cp" />

+                                                                        <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/vnfcs/vnfc/'

+        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name

+        + '/cps/cp/'

+        + $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vnfc-network-role-index].connection-point.connection-point-id`" />

+                                                                        <outcome value='failure'>

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name="error-message" value="Error updating vip-ipv4-address-list relationship to cp in AAI" />

+                                                                                </set>

+                                                                                <block atomic='true'>

+                                                                                    <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                    <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                    <return status='failure'>

+                                                                                        <parameter name='ack-final' value='Y'/>

+                                                                                        <parameter name="error-code" value="500" />

+                                                                                        <parameter name="error-message" value="`$error-message`" />

+                                                                                    </return>

+                                                                                </block>

+                                                                            </block>

+                                                                        </outcome>

+                                                                        <outcome value='not-found'>

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name="error-message" value="Not-found error updating vip-ipv4-address-list relationship to cp" />

+                                                                                </set>

+                                                                                <block atomic='true'>

+                                                                                    <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                                                                    <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                    <return status='failure'>

+                                                                                        <parameter name='ack-final' value='Y'/>

+                                                                                        <parameter name="error-code" value="500" />

+                                                                                        <parameter name="error-message" value="`$error-message`" />

+                                                                                    </return>

+                                                                                </block>

+                                                                            </block>

+                                                                        </outcome>

+                                                                    </save>

+                                                                </outcome>

+                                                            </switch>

+                                                        </for>

+                                                    </block>

+                                                </for>

+                                            </block>

+                                        </for>

+                                    </block>

+                                </for>

+                            </block>

+                        </for>

+                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-assign' mode='sync' >

+                            <outcome value='failure'>

+                                <block atomic="true">

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                                        <parameter name='filename' value='/var/tmp/bgb-vlantaggingfailure.log' />

+                                    </execute>

+                                    <block atomic='true'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </call>

+                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-generate-heat-parameters' mode='sync' ></call>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                            <parameter name='filename' value='/var/tmp/bgb-vfmoduleheat.log' />

+                        </execute>

+                        <for silentFailure='true' index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                            <for index='vm-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >

+                                <block atomic="true">

+                                    <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='DELETE from VIPR_CONFIGURATION WHERE vnf_id = $service-data.vnfs.vnf[$vnf-index].vnf-id

+     AND ecomp_service_instance_id = $service-data.service-information.service-instance-id

+     AND vm_name = $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]' >

+                                        <outcome value='failure'>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID"/>

+                                                <parameter name="field3" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                <parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>

+                                            </record>

+                                        </outcome>

+                                    </delete>

+                                    <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"

+key="INSERT INTO VIPR_CONFIGURATION (vnf_id, vnf_name, ecomp_service_instance_id, vm_name, cloud_region_id, cloud_owner) VALUES ( $service-data.vnfs.vnf[$vnf-index].vnf-id , $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name , $service-data.service-information.service-instance-id , $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index] , $tmp.vf-module-topology.aic-cloud-region , $prop.cloud-region.cloud-owner )" >

+                                        <outcome value='failure'>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                <parameter name="field2" value="GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID"/>

+                                                <parameter name="field3" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                <parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>

+                                            </record>

+                                        </outcome>

+                                    </save>

+                                </block>

+                            </for>

+                        </for>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.' value='tmp.vf-module-topology.' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-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-module-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-module-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-module-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-module-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-module-index].vf-module-data.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[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'

+  value='PendingCreate' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-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-module-index].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-data.'

+  value='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.' />

+                        </set>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                            <parameter name="source" value="`$prop.restapi.vf-module`"/>

+                            <parameter name="outputPath" value="tmp.part"/>

+                            <parameter name="target" value="{service-instance-id}"/>

+                            <parameter name="replacement" value="`$service-data.service-topology.service-topology-identifier.service-instance-id`"/>

+                        </execute>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                            <parameter name="source" value="`$tmp.part`"/>

+                            <parameter name="outputPath" value="tmp.part"/>

+                            <parameter name="target" value="{vnf-id}"/>

+                            <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-id`"/>

+                        </execute>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                            <parameter name="source" value="`$tmp.part`"/>

+                            <parameter name="outputPath" value="tmp.vf-module.url"/>

+                            <parameter name="target" value="{vf-module-id}"/>

+                            <parameter name="replacement" value="`$vf-module-topology-operation-input.vf-module-information.vf-module-id`"/>

+                        </execute>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + 'vf-module-assign.json'`" />

+                            <parameter name='restapiUrl' value="`$prop.controller.url + $tmp.vf-module.url`" />

+                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                            <parameter name='format' value='json' />

+                            <parameter name='httpMethod' value='PUT' />

+                            <parameter name="responsePrefix" value="vf-module-assign" />

+                            <outcome value='failure'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Error doing PUT of vf-module" />

+                                    </set>

+                                    <block atomic='true'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Error doing PUT of vf-module" />

+                                    </set>

+                                    <block atomic='true'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-assign-rollback' mode='sync' ></call>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </execute>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                            <parameter name='filename' value='/var/tmp/bgb-vfmodule.log' />

+                        </execute>

+                        <set>

+                            <parameter name="so.response-code" value="200" />

+                        </set>

+                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                        <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>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-async.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-async.xml
new file mode 100644
index 0000000..4c89d83
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-async.xml
@@ -0,0 +1,28 @@
+<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-async' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='skip-mdsal-update' value='Y' />

+            </set>

+            <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='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" 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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-changeassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-changeassign.xml
new file mode 100755
index 0000000..93eaf71
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-changeassign.xml
@@ -0,0 +1,158 @@
+<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-changeassign' mode='sync'>

+        <block atomic="true">

+            <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>

+                <outcome value='CreateVfModuleInstance'>

+                    <block></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="If svc-action is 'changeassign' then request-action must be 'CreateVfModuleInstance'" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='vnf-index' value='-1' />

+            </set>

+            <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="There are no VNFs defined in MD-SAL" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <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'>

+                                <block>

+                                    <set>

+                                        <parameter name='vnf-index' value='`$idx`' />

+                                    </set>

+                                    <break/>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </for>

+                </outcome>

+            </switch>

+            <switch test='`$vnf-index`'>

+                <outcome value='-1'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='vf-module-index' value='-1' />

+            </set>

+            <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="`'There are no VF modules defined in MD-SAL for VNF ' + $vf-module-topology-operation-input.vnf-information.vnf-id`" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <for index='idx' 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[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`'>

+                            <outcome value='true'>

+                                <block>

+                                    <set>

+                                        <parameter name='vf-module-index' value='`$idx`' />

+                                    </set>

+                                    <break/>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </for>

+                </outcome>

+            </switch>

+            <switch test='`$vf-module-index`'>

+                <outcome value='-1'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unable to find VF module ID ' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' in MD-SAL'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-forking-logic' mode='sync' ></call>

+            <switch test="`$ss.self-serve-flag`">

+                <outcome value='true'>

+                    <call module='GENERIC-RESOURCE-API' rpc='self-serve-vfmodule-changeassign' mode='sync' >

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500' />

+                                <parameter name='error-message' value="`'Encountered error performing changeassign for self-serve vf-module resources with error: '+ $error-message`" />

+                            </return>

+                        </outcome>

+                        <outcome value='success'>

+                            <return status='success'>

+                                <parameter name="ack-final-indicator" value="Y" />

+                                <parameter name="error-code" value="200" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </outcome>

+                    </call>

+                </outcome>

+                <outcome value='false'>

+                    <block atomic="true">

+                        <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="vf-module-information.onap-model-information.model-customization-uuid is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODULE_MODEL WHERE customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid'

+  pfx='db.vf-module-model'>

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />

+                                </return>

+                            </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="`'No model found for VF module customization UUID ' + $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-information.onap-model-information.'

+   value='$vf-module-topology-operation-input.vf-module-information.onap-model-information.' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-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-module-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-module-index].vf-module-data.vf-module-level-oper-status.last-action'

+  value='`$vf-module-topology-operation-input.request-information.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>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-deactivate.xml
new file mode 100755
index 0000000..788f0a9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-deactivate.xml
@@ -0,0 +1,177 @@
+<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-deactivate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>

+                <outcome value='DeleteVfModuleInstance'>

+                    <block></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="If svc-action is 'deactivate' then request-action must be 'DeleteVfModuleInstance'" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='vnf-index' value='-1' />

+            </set>

+            <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="There are no VNFs defined in MD-SAL" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <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'>

+                                <block>

+                                    <set>

+                                        <parameter name='vnf-index' value='`$idx`' />

+                                    </set>

+                                    <break/>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </for>

+                </outcome>

+            </switch>

+            <switch test='`$vnf-index`'>

+                <outcome value='-1'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unable to find VNF ID ' + $vf-module-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='vf-module-index' value='-1' />

+            </set>

+            <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="`'There are no VF modules defined in MD-SAL for VNF ' + $vf-module-topology-operation-input.vnf-information.vnf-id`" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <for index='idx' 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[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`'>

+                            <outcome value='true'>

+                                <block>

+                                    <set>

+                                        <parameter name='vf-module-index' value='`$idx`' />

+                                    </set>

+                                    <break/>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </for>

+                </outcome>

+            </switch>

+            <switch test='`$vf-module-index`'>

+                <outcome value='-1'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unable to find VF module ID ' + $vf-module-topology-operation-input.vf-module-information.vf-module-id + ' in MD-SAL'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`'>

+                <outcome value=''>

+                    <block></block>

+                </outcome>

+                <outcome value='0'>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-deactivate' mode='sync' >

+                        <outcome value='failure'>

+                            <return status='failure'></return>

+                        </outcome>

+                    </call>

+                </outcome>

+            </switch>

+            <for silentFailure='true' index='vm-type-index' start='0'

+  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                <for silentFailure='true' index='vnfc-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                    <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="vnfc"

+   key="vnfc.vnfc-name = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name"

+   force="true" pfx="tmp.AnAI-data">

+                        <parameter name="orchestration-status" value="PendingDelete" />

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="Error updating vnfc in AAI" />

+                            </return>

+                        </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="`'No vnfc found in AAI for vnfc name ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`" />

+                            </return>

+                        </outcome>

+                    </update>

+                </for>

+            </for>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-topology.vf-module-assignments.vf-module-status' value='PendingDelete' />

+            </set>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="vf-module"

+   key="vf-module.vf-module-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id

+      AND generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id"

+   force="true" pfx="tmp.AnAI-data">

+                <parameter name="orchestration-status" value="PendingDelete" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error updating vf-module in AAI" />

+                    </return>

+                </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="`'No vf-module found in AAI for vf module ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-id`" />

+                    </return>

+                </outcome>

+            </update>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-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-module-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-module-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-module-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-module-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-module-index].vf-module-data.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[$vf-module-index].vf-module-data.vf-module-level-oper-status.order-status'

+  value='PendingDelete' />

+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-unassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-unassign.xml
new file mode 100755
index 0000000..4586dad
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation-unassign.xml
@@ -0,0 +1,386 @@
+<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-unassign' mode='sync'>

+        <block atomic="true">

+            <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='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`'>

+                <outcome value=''>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='prop.cloud-region.cloud-owner' value='`$vf-module-topology-operation-input.vf-module-request-input.cloud-owner`' />

+                    </set>

+                </outcome>

+            </switch>

+            <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>

+                <outcome value='DeleteVfModuleInstance'>

+                    <block></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="If svc-action is 'deactivate' then request-action must be 'DeleteVfModuleInstance'" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='vnf-index' value='-1' />

+            </set>

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='success'>

+                        <parameter name="ack-final-indicator" value="Y" />

+                        <parameter name="error-code" value="200" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <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'>

+                                <block>

+                                    <set>

+                                        <parameter name='vnf-index' value='`$idx`' />

+                                    </set>

+                                    <break/>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </for>

+                </outcome>

+            </switch>

+            <switch test='`$vnf-index`'>

+                <outcome value='-1'>

+                    <return status='success'>

+                        <parameter name="ack-final-indicator" value="Y" />

+                        <parameter name="error-code" value="200" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='vf-module-index' value='-1' />

+            </set>

+            <for silentFailure='true' index='idx' 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[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`'>

+                    <outcome value='true'>

+                        <block>

+                            <set>

+                                <parameter name='vf-module-index' value='`$idx`' />

+                            </set>

+                            <break/>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$vf-module-index`'>

+                <outcome value='-1'>

+                    <return status='success'>

+                        <parameter name="ack-final-indicator" value="Y" />

+                        <parameter name="error-code" value="200" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-forking-logic' mode='sync' ></call>

+                        <switch test="`$ss.self-serve-flag`">

+                            <outcome value='true'>

+                                <call module='GENERIC-RESOURCE-API' rpc='self-serve-vf-module-unassign' mode='sync' >

+                                    <outcome value='failure'>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500' />

+                                            <parameter name='error-message' value="`'Encountered error while unassigning self-serve vf-moldule esources with error: '+ $error-message`" />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='success'>

+                                        <block>

+                                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                                                <outcome value='1'>

+                                                    <set>

+                                                        <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules." value=""/>

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <block atomic="true">

+                                                        <for index='idx' start='`$vf-module-index + 1`' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name="tmpidx" value="`$idx - 1`"/>

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmpidx].' value='' />

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmpidx]." value="$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx]." />

+                                                                </set>

+                                                            </block>

+                                                        </for>

+                                                        <!--EIPAM plug-in needs this attribute set with this name-->

+                                                        <set>

+                                                            <parameter name='lastidx' 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[$lastidx]." value=""/>

+                                                        </set>

+                                                        <set>

+                                                            <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value="`$lastidx`"/>

+                                                        </set>

+                                                    </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>

+                                    </outcome>

+                                </call>

+                            </outcome>

+                            <outcome value='false'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.status' value="`'PENDING_DELETE_' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id`" />

+                                    </set>

+                                    <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"

+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-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 updating EIPAM_IP_ASSIGNMENTS table" />

+                                            </return>

+                                        </outcome>

+                                    </update>

+                                    <!--EIPAM plug-in needs this attribute set with this name-->

+                                    <set>

+                                        <parameter name='service-data.service-information.service-type' value='`$service-data.service-information.subscription-service-type`' />

+                                    </set>

+                                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">

+                                        <parameter name="deleteEIPAM_status" value="`$tmp.status`" />

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="Error in EIPAM unassign IP address" />

+                                            </return>

+                                        </outcome>

+                                    </execute>

+                                    <for silentFailure='true' index='vm-type-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                        <for silentFailure='true' index='vm-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-count`' >

+                                            <block atomic="true">

+                                                <delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='DELETE from VIPR_CONFIGURATION WHERE vnf_id = $service-data.vnfs.vnf[$vnf-index].vnf-id

+     AND ecomp_service_instance_id = $service-data.service-information.service-instance-id

+     AND vm_name = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-index]' >

+                                                    <outcome value='failure'>

+                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                            <parameter name="logger" value="message-log"/>

+                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                            <parameter name="field2" value="GENERIC-RESOURCE-API.vf-module-topology-operation-assign:REQID"/>

+                                                            <parameter name="field3" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+                                                            <parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>

+                                                        </record>

+                                                    </outcome>

+                                                </delete>

+                                            </block>

+                                        </for>

+                                    </for>

+                                    <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function`'>

+                                        <outcome value=''>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+  resource="instance-groups" 

+  key="instance-group.instance-group-function = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[0].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function

+    AND instance-group.instance-group-type = 'L3-NETWORK'"

+  pfx='aai.instance-group' local-only='false' >

+                                                <outcome value='success'>

+                                                    <for index='ig-index' start='0' end='`$aai.instance-group.instance-group_length`' >

+                                                        <for index='rel-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship_length`' >

+                                                            <for index='reldata-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data_length`' >

+                                                                <switch test="`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-key

+  == 'service-instance.service-instance-id'`">

+                                                                    <outcome value='true'>

+                                                                        <switch test='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-value

+  == $service-data.service-information.service-instance-id`'>

+                                                                            <outcome value='true'>

+                                                                                <block>

+                                                                                    <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                                                                                        <outcome value='1'>

+                                                                                            <block>

+                                                                                                <set>

+                                                                                                    <parameter name='tmp.status' value="`'PENDING_DELETE_' + $aai.instance-group.instance-group[$ig-index].id`" />

+                                                                                                </set>

+                                                                                                <update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"

+key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status WHERE info = $aai.instance-group.instance-group[$ig-index].id" ></update>

+                                                                                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">

+                                                                                                    <parameter name="deleteEIPAM_status" value="`$tmp.status`" />

+                                                                                                </execute>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                    <for index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >

+                                                                                        <switch test='`$aai.instance-group.instance-group[$ig-index].id

+  == $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>

+                                                                                            <outcome value='true'>

+                                                                                                <for index='network-index' start='0' end='`$service-data.network-instance-groups.network-instance-group[$nig-index].networks.network_length`' >

+                                                                                                    <set>

+                                                                                                        <parameter name='service-data.network-instance-groups.network-instance-group[$nig-index].networks.network[$network-index].vlan-tag-id'

+  value='' />

+                                                                                                        <parameter name='service-data.network-instance-groups.network-instance-group[$nig-index].networks.network[$network-index].network-status'

+  value='unassigned' />

+                                                                                                    </set>

+                                                                                                </for>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </for>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </for>

+                                                        </for>

+                                                    </for>

+                                                </outcome>

+                                            </get-resource>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-name`'>

+                                        <outcome value='Other'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value=''>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='generate-unique-name-input.name-table-type' value='VF_MODULE_INSTANCE' />

+                                                    <parameter name='generate-unique-name-input.context-id' value='`$vf-module-topology-operation-input.vnf-information.vnf-id`' />

+                                                    <parameter name='generate-unique-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-unique-name' mode='sync' ></call>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <for silentFailure='true' index='vm-type-index' start='0'

+  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                        <block>

+                                            <for silentFailure='true' index='vm-name-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name_length`' >

+                                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vm-name-index]`'>

+                                                    <outcome value=''>

+                                                        <block></block>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <block>

+                                                            <set>

+                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='VM' />

+                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id`' />

+                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                            </set>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </for>

+                                            <for silentFailure='true' index='vnfc-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                                <block>

+                                                    <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNFC' />

+                                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id`' />

+                                                                    <parameter name='naming-policy-generate-name-input.vm-name' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vm-name[$vnfc-index]`' />

+                                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                </set>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="vnfc"

+   key="vnfc.vnfc-name = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name"></delete>

+                                                </block>

+                                            </for>

+                                            <for silentFailure='true' index='network-role-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network_length`' >

+                                                <block>

+                                                    <for silentFailure='true' index='vnfc-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                                        <block>

+                                                            <for silentFailure='true' index='ipv4-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4_length`' >

+                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+   resource="vip-ipv4-address-list" 

+   key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner

+	  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region

+	  AND vip-ipv4-address-list.vip-ipv4-address = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v4[$ipv4-index]" ></delete>

+                                                            </for>

+                                                            <for silentFailure='true' index='ipv6-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6_length`' >

+                                                                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+   resource="vip-ipv6-address-list" 

+   key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner

+	  AND cloud-region.cloud-region-id = $vf-module-topology-operation-input.vf-module-request-input.aic-cloud-region

+	  AND vip-ipv6-address-list.vip-ipv6-address = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-networks.vm-network[$vm-network-index].floating-ips.floating-ip-v6[$ipv6-index]" ></delete>

+                                                            </for>

+                                                        </block>

+                                                    </for>

+                                                </block>

+                                            </for>

+                                        </block>

+                                    </for>

+                                    <block>

+                                        <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                                            <outcome value='1'>

+                                                <set>

+                                                    <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules." value=""/>

+                                                </set>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <block atomic="true">

+                                                    <for index='idx' start='`$vf-module-index + 1`' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                                                        <block>

+                                                            <set>

+                                                                <parameter name="tmpidx" value="`$idx - 1`"/>

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmpidx].' value='' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmpidx]." value="$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx]." />

+                                                            </set>

+                                                        </block>

+                                                    </for>

+                                                    <!--EIPAM plug-in needs this attribute set with this name-->

+                                                    <set>

+                                                        <parameter name='lastidx' 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[$lastidx]." value=""/>

+                                                    </set>

+                                                    <set>

+                                                        <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value="`$lastidx`"/>

+                                                    </set>

+                                                </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>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation.xml
new file mode 100644
index 0000000..dae4b9b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-operation.xml
@@ -0,0 +1,153 @@
+<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'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='skip-mdsal-update' value='Y' />

+                        </set>

+                        <set>

+                            <parameter name='ack-final' value='N' />

+                        </set>

+                    </block>

+                </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='CreateSDWANSiteInstance'>

+                                <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='CreateSDWANLanPortInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-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='ActivateSDWANSiteInstance'>

+                                <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='ActivateSDWANLanPortInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-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='DeactivateSDWANSiteInstance'>

+                                <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='DeactivateSDWANLanPortInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-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='DeleteSDWANSiteInstance'>

+                                <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='DeleteSDWANLanPortInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-lanport-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='update'>

+                    <block atomic="true">

+                        <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>

+                            <outcome value='SdwanBandwidthChange'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-bandwidth-policy-change' 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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-activate.xml
new file mode 100755
index 0000000..42c29a7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-activate.xml
@@ -0,0 +1,313 @@
+<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-vlan-tagging-activate' mode='sync'>

+        <block atomic="true">

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource&amp;nodesOnly=true'"

+      force="true"

+      local-only="false"

+      pfx="tmp.aai.vnf">

+                <parameter name="start[0]" value="`'/network/generic-vnfs/generic-vnf/' + $vf-module-topology-operation-input.vnf-information.vnf-id `" />

+                <parameter name="start_length" value="1" />

+                <parameter name="query" value="query/cloud-region-fromVnf" />

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Failed call to AAI custom query: cloud-region-fromVnf" />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="No cloud region returned from AAI: cloud-region-fromVnf" />

+                        </set>

+                    </block>

+                </outcome>

+            </save>

+            <for index='result-idx' start='0' end='`$tmp.aai.vnf.results_length`' >

+                <block atomic="true">

+                    <switch test='`$tmp.aai.vnf.results[$result-idx].cloud-region.cloud-region-id`'>

+                        <outcome value=''>

+                            <block></block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name='tmp.cloud-region-id' value='`$tmp.aai.vnf.results[$result-idx].cloud-region.cloud-region-id`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <set>

+                <parameter name='tmp.vlan-vnfc-instance-groups.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.`' />

+            </set>

+            <for index='vvig-index' start='0' end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`' >

+                <switch test='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`'>

+                    <outcome value=''>

+                        <block></block>

+                    </outcome>

+                    <outcome value='0'>

+                        <block></block>

+                    </outcome>

+                    <outcome value='Other'>

+                        <block atomic="true">

+                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`'>

+                                <outcome value=''>

+                                    <set>

+                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length'

+  value='0' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <set>

+                                <parameter name='parent-port-role'

+  value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vnic-interface-role`' />

+                                <parameter name='vnfc-instance-group-function'

+  value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-function`' />

+                                <parameter name='network-instance-group-function'

+  value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function`' />

+                            </set>

+                            <set>

+                                <parameter name='vsig-index' value='-1' />

+                            </set>

+                            <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`' >

+                                <switch test='`

+  $parent-port-role == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$idx].parent-port-role

+  and $vnfc-instance-group-function == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$idx].vnfc-instance-group-function

+  and $network-instance-group-function == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$idx].network-instance-group-function

+`'>

+                                    <outcome value='true'>

+                                        <block>

+                                            <set>

+                                                <parameter name='vsig-index' value='`$idx`' />

+                                            </set>

+                                            <break/>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </for>

+                            <switch test='`$vsig-index`'>

+                                <outcome value='-1'>

+                                    <block>

+                                        <set>

+                                            <parameter name='vsig-index'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role'

+  value='`$parent-port-role`' />

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfc-instance-group-function'

+  value='`$vnfc-instance-group-function`' />

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].network-instance-group-function'

+  value='`$network-instance-group-function`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length'

+  value='`$vsig-index + 1`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource'"

+      force="true"

+      local-only="false"

+      pfx="tmp.aai.network">

+                                <parameter name="start[0]" value="`'/cloud-infrastructure/cloud-regions/cloud-region/' + $prop.cloud-region.cloud-owner + '/' + $tmp.cloud-region-id`" />

+                                <parameter name="start_length" value="1" />

+                                <parameter name="query" value="`'/query/network-name-fromNetwork-role?networkRole='  + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role`" />

+                                <outcome value='failure'>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value="`'Failed to get network data for network role '

+  + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role`" />

+                                    </return>

+                                </outcome>

+                                <outcome value='not-found'>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value="`'Failed to get network data for network role '

+  + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role`" />

+                                    </return>

+                                </outcome>

+                            </save>

+                            <set>

+                                <parameter name='network-name' value='`$tmp.aai.network.results[0].l3-network.network-name`' />

+                            </set>

+                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length`'>

+                                <outcome value=''>

+                                    <set>

+                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length'

+  value='0' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <set>

+                                <parameter name='dest-vnfc-index'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length`' />

+                            </set>

+                            <for index='src-vnfc-index' start='0'

+  end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnfc-name'

+  value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$src-vnfc-index].vnfc-name`' />

+                                    </set>

+                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource'"

+      force="true"

+      local-only="false"

+      pfx="tmp.aai.interfaces">

+                                        <parameter name="start[0]" value="`'/network/vnfcs/vnfc/' + $tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$src-vnfc-index].vnfc-name`" />

+                                        <parameter name="start_length" value="1" />

+                                        <parameter name="query" value="`'/query/vserver-l-interfaces-fromVnfc?networkName=' + $network-name`" />

+                                        <outcome value='failure'>

+                                            <return status='failure'>

+                                                <parameter name='error-code' value='500' />

+                                                <parameter name='error-message' value="`'Failed to get interface data for network name '

+  + $network-name

+  + ' and vnfc '

+  + $tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$src-vnfc-index].vnfc-name`" />

+                                            </return>

+                                        </outcome>

+                                        <outcome value='not-found'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='success'>

+                                            <block>

+                                                <for silentFailure='true' index='idx1' start='0' end='`$tmp.aai.interfaces.results_length`' >

+                                                    <switch test='`$tmp.aai.interfaces.results[$idx1].vserver.vserver-id`'>

+                                                        <outcome value=''>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vserver-id'

+  value='`$tmp.aai.interfaces.results[$idx1].vserver.vserver-id`' />

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vserver-name'

+  value='`$tmp.aai.interfaces.results[$idx1].vserver.vserver-name`' />

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic_length'

+  value='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface_length`' />

+                                                                </set>

+                                                                <for silentFailure='true' index='int-index' start='0'

+  end='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface_length`' >

+                                                                    <block>

+                                                                        <set>

+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].vnic-port-id'

+  value='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface[$int-index].interface-id`' />

+                                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].vnic-port-name'

+  value='`$tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface[$int-index].interface-name`' />

+                                                                        </set>

+                                                                        <for silentFailure='true' index='idx2' start='0' end='`$tmp.aai.interfaces.results_length`' >

+                                                                            <switch test='`$tmp.aai.interfaces.results[$idx2].l-interface.interface-id

+  == $tmp.aai.interfaces.results[$idx1].vserver.l-interfaces.l-interface[$int-index].interface-id`'>

+                                                                                <outcome value='true'>

+                                                                                    <block>

+                                                                                        <switch test='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface_length`'>

+                                                                                            <outcome value=''>

+                                                                                                <block></block>

+                                                                                            </outcome>

+                                                                                            <outcome value='Other'>

+                                                                                                <set>

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface_length'

+  value='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface_length`' />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                        <for silentFailure='true' index='sub-int-index' start='0'

+  end='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface_length`' >

+                                                                                            <block>

+                                                                                                <set>

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface[$sub-int-index].sub-interface-port-id'

+  value='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface[$sub-int-index].interface-id`' />

+                                                                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface[$sub-int-index].sub-interface-port-name'

+  value='`$tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface[$sub-int-index].interface-name`' />

+                                                                                                </set>

+                                                                                                <for silentFailure='true' index='idx3' start='0' end='`$tmp.aai.interfaces.results_length`' >

+                                                                                                    <switch test='`$tmp.aai.interfaces.results[$idx3].l-interface.interface-id

+  == $tmp.aai.interfaces.results[$idx2].l-interface.l-interfaces.l-interface[$sub-int-index].interface-id`'>

+                                                                                                        <outcome value='true'>

+                                                                                                            <switch test='`$tmp.aai.interfaces.results[$idx3].l-interface.vlans.vlan[0].vlan-interface`'>

+                                                                                                                <outcome value=''>

+                                                                                                                    <block></block>

+                                                                                                                </outcome>

+                                                                                                                <outcome value='Other'>

+                                                                                                                    <for silentFailure='true' index='idx4' start='0' end='`$tmp.aai.interfaces.results_length`' >

+                                                                                                                        <switch test='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-interface

+  == $tmp.aai.interfaces.results[$idx3].l-interface.vlans.vlan[0].vlan-interface`'>

+                                                                                                                            <outcome value='true'>

+                                                                                                                                <block>

+                                                                                                                                    <switch test='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-outer`'>

+                                                                                                                                        <outcome value=''>

+                                                                                                                                            <block></block>

+                                                                                                                                        </outcome>

+                                                                                                                                        <outcome value='Other'>

+                                                                                                                                            <set>

+                                                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface[$sub-int-index].vlan-tags.upper-tag-id'

+  value='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-outer`' />

+                                                                                                                                            </set>

+                                                                                                                                        </outcome>

+                                                                                                                                    </switch>

+                                                                                                                                    <switch test='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-inner`'>

+                                                                                                                                        <outcome value=''>

+                                                                                                                                            <block></block>

+                                                                                                                                        </outcome>

+                                                                                                                                        <outcome value='Other'>

+                                                                                                                                            <set>

+                                                                                                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$dest-vnfc-index].vnics.vnic[$int-index].sub-interfaces.sub-interface[$sub-int-index].vlan-tags.lower-tag-id'

+  value='`$tmp.aai.interfaces.results[$idx4].vlan.vlan-id-inner`' />

+                                                                                                                                            </set>

+                                                                                                                                        </outcome>

+                                                                                                                                    </switch>

+                                                                                                                                </block>

+                                                                                                                            </outcome>

+                                                                                                                        </switch>

+                                                                                                                    </for>

+                                                                                                                </outcome>

+                                                                                                            </switch>

+                                                                                                        </outcome>

+                                                                                                    </switch>

+                                                                                                </for>

+                                                                                            </block>

+                                                                                        </for>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </for>

+                                                                    </block>

+                                                                </for>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </for>

+                                                <set>

+                                                    <parameter name='dest-vnfc-index' value='`$dest-vnfc-index + 1`' />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                    </save>

+                                </block>

+                            </for>

+                            <set>

+                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length'

+  value='`$dest-vnfc-index`' />

+                            </set>

+                        </block>

+                    </outcome>

+                </switch>

+            </for>

+            <return status='success'>

+                <parameter name='' value='' />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-assign.xml
new file mode 100755
index 0000000..f451812
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-assign.xml
@@ -0,0 +1,791 @@
+<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-vlan-tagging-assign' mode='sync'>

+        <block atomic="true">

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="select distinct vmvm.vm_type, rg.group_uuid from VF_MODULE_TO_VFC_MAPPING vmvm, VFC_MODEL vm,

+  RESOURCE_GROUP_TO_TARGET_NODE_MAPPING rgm, RESOURCE_GROUP rg

+	where vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid

+	and vmvm.vfc_customization_uuid = vm.customization_uuid

+	and vmvm.vm_type = vm.vm_type

+	and vm.uuid = rgm.target_node_uuid

+	and rgm.target_type = 'CVFC'

+	and rgm.group_uuid = rg.group_uuid"

+  pfx='db.group-uuids[]'>

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="500" />

+                            <parameter name="error-message" value="System error getting group uuids from DB" />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true"></block>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true">

+                        <for index='group-index' start='0' end='`$db.group-uuids_length`' >

+                            <block atomic="true">

+                                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="select attribute_name, attribute_value from ATTRIBUTE_VALUE_PAIR

+	where resource_uuid = $db.group-uuids[$group-index].group-uuid

+	and attribute_name in ('vfc_instance_group_function','vfc_parent_port_role','network_collection_function')"

+  pfx='db.parameters[]'>

+                                    <outcome value='failure'>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="System error getting parameters from ATTRIBUTE_VALUE_PAIR table" />

+                                        </return>

+                                    </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="`'Unable to find parameters ATTRIBUTE_VALUE_PAIR table for group ' + $db.group-uuids[$group-index].group-uuid`" />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='success'>

+                                        <for index='parameter-index' start='0' end='`$db.parameters_length`' >

+                                            <switch test='`$db.parameters[$parameter-index].attribute-name`'>

+                                                <outcome value='vfc_parent_port_role'>

+                                                    <set>

+                                                        <parameter name='db.group-uuids[$group-index].vfc_parent_port_role' value='`$db.parameters[$parameter-index].attribute-value`' />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='vfc_instance_group_function'>

+                                                    <block atomic="true">

+                                                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="startsWith" emitsOutcome='true' >

+                                                            <parameter name="source" value="`$db.parameters[$parameter-index].attribute-value`" />

+                                                            <parameter name="target" value="get_input=" />

+                                                            <outcome value='false'>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message"

+      value="`'Parameter value for '

+        + $db.parameters[$parameter-index].attribute-name

+        + ' is '

+        + $db.parameters[$parameter-index].attribute-value

+        + ' but was expected to start with get_input='`" />

+                                                                </return>

+                                                            </outcome>

+                                                            <outcome value='true'>

+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>

+                                                                    <parameter name='result' value='tmp.truncated-value' />

+                                                                    <parameter name='string' value='`$db.parameters[$parameter-index].attribute-value`' />

+                                                                    <parameter name='begin-index' value='10' />

+                                                                </execute>

+                                                            </outcome>

+                                                        </execute>

+                                                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="select attribute_value from VF_MODULE_MODEL vmm, VF_MODEL vf, ATTRIBUTE_VALUE_PAIR avp

+	where vmm.customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid

+	and vmm.vf_customization_uuid = vf.customization_uuid

+	and vf.uuid = avp.resource_uuid

+	and vmm.vf_customization_uuid = avp.resource_customization_uuid

+	and avp.attribute_name = $tmp.truncated-value"

+  pfx='db.mapped-value'>

+                                                            <outcome value='failure'>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message"

+      value="`'System error retrieving mapped parameter value for '

+        + $db.parameters[$parameter-index].attribute-name`" />

+                                                                </return>

+                                                            </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="`'Unable to find mapped parameter value for '

+        + $db.parameters[$parameter-index].attribute-name

+        + ' value '

+        + $tmp.truncated-value`" />

+                                                                </return>

+                                                            </outcome>

+                                                        </get-resource>

+                                                        <set>

+                                                            <parameter name='db.group-uuids[$group-index].vfc-instance-group-function' value='`$db.mapped-value.attribute-value`' />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='network_collection_function'>

+                                                    <block atomic="true">

+                                                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="startsWith" emitsOutcome='true' >

+                                                            <parameter name="source" value="`$db.parameters[$parameter-index].attribute-value`" />

+                                                            <parameter name="target" value="get_input=" />

+                                                            <outcome value='false'>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message"

+      value="`'Parameter value for '

+        + $db.parameters[$parameter-index].attribute-name

+        + ' is '

+        + $db.parameters[$parameter-index].attribute-value

+        + ' but was expected to start with get_input='`" />

+                                                                </return>

+                                                            </outcome>

+                                                            <outcome value='true'>

+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='substring'>

+                                                                    <parameter name='result' value='tmp.truncated-value' />

+                                                                    <parameter name='string' value='`$db.parameters[$parameter-index].attribute-value`' />

+                                                                    <parameter name='begin-index' value='10' />

+                                                                </execute>

+                                                            </outcome>

+                                                        </execute>

+                                                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="select attribute_value from VF_MODULE_MODEL vmm, VF_MODEL vf, ATTRIBUTE_VALUE_PAIR avp

+	where vmm.customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid

+	and vmm.vf_customization_uuid = vf.customization_uuid

+	and vf.uuid = avp.resource_uuid

+	and vmm.vf_customization_uuid = avp.resource_customization_uuid

+	and avp.attribute_name = $tmp.truncated-value"

+  pfx='db.mapped-value'>

+                                                            <outcome value='failure'>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message"

+      value="`'System error retrieving mapped parameter value for '

+        + $db.parameters[$parameter-index].attribute-name`" />

+                                                                </return>

+                                                            </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="`'Unable to find mapped parameter value for '

+        + $db.parameters[$parameter-index].attribute-name

+        + ' value '

+        + $tmp.truncated-value`" />

+                                                                </return>

+                                                            </outcome>

+                                                        </get-resource>

+                                                        <set>

+                                                            <parameter name='db.group-uuids[$group-index].network-collection-function' value='`$db.mapped-value.attribute-value`' />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                    </outcome>

+                                </get-resource>

+                                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+  resource="instance-groups" 

+  key="instance-group.instance-group-function = $db.group-uuids[$group-index].vfc-instance-group-function

+    AND instance-group.instance-group-type = 'VNFC'"

+  pfx='aai.instance-group' local-only='false' >

+                                    <outcome value='not-found'>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message"

+      value="`'Unable to find AAI instance-group for instance-group-function '

+        + $db.group-uuids[$group-index].vfc-instance-group-function

+        + ' and instance-group-type VNFC'`" />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='failure'>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message"

+      value="`'System error getting AAI instance-group for instance-group-function '

+        + $db.group-uuids[$group-index].vfc-instance-group-function

+        + ' and instance-group-type VNFC'`" />

+                                        </return>

+                                    </outcome>

+                                </get-resource>

+                                <set>

+                                    <parameter name='found-instance-group' value='false' />

+                                </set>

+                                <for index='ig-index' start='0' end='`$aai.instance-group.instance-group_length`' >

+                                    <for index='rel-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship_length`' >

+                                        <for index='reldata-index' start='0' end='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data_length`' >

+                                            <switch test="`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-key

+  == 'service-instance.service-instance-id'`">

+                                                <outcome value='true'>

+                                                    <switch test='`$aai.instance-group.instance-group[$ig-index].relationship-list.relationship[$rel-index].relationship-data[$reldata-index].relationship-value

+  == $service-data.service-information.service-instance-id`'>

+                                                        <outcome value='true'>

+                                                            <block>

+                                                                <set>

+                                                                    <parameter name='found-instance-group' value='true' />

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name='aai-ig-index' value='`$ig-index`' />

+                                                                </set>

+                                                                <break/>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                    </for>

+                                </for>

+                                <switch test='`$found-instance-group`'>

+                                    <outcome value='false'>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message"

+      value="`'Unable to find AAI instance-group for instance-group-function '

+        + $db.group-uuids[$group-index].vfc-instance-group-function

+        + ' and instance-group-type VNFC'`" />

+                                        </return>

+                                    </outcome>

+                                </switch>

+                                <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`'>

+                                    <outcome value=''>

+                                        <set>

+                                            <parameter name='vvig-index' value='0' />

+                                        </set>

+                                    </outcome>

+                                    <outcome value='0'>

+                                        <break/>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic="true">

+                                            <for index='vvig-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`' >

+                                                <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-id

+ == $aai.instance-group.instance-group[$aai-ig-index].id`'>

+                                                    <outcome value='true'>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message"

+      value="`'Instance group id '

+        + $aai.instance-group.instance-group[$aai-ig-index].id

+        + ' already exists in MD-SAL under vlan-vnfc-instance-groups'`" />

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </for>

+                                            <set>

+                                                <parameter name='vvig-index' value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-id'

+  value='`$aai.instance-group.instance-group[$aai-ig-index].id`' />

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-function'

+  value='`$db.group-uuids[$group-index].vfc-instance-group-function`' />

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnf-id'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-id`' />

+                                </set>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length'

+  value='`$vvig-index + 1`' />

+                                </set>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vm-type'

+  value='`$db.group-uuids[$group-index].vm-type`' />

+                                </set>

+                                <set>

+                                    <parameter name='found-vm-type' value='false' />

+                                </set>

+                                <for index='vm-type-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm_length`' >

+                                    <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-type

+  == $db.group-uuids[$group-index].vm-type`'>

+                                        <outcome value='true'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='found-vm-type' value='true' />

+                                                </set>

+                                                <break/>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </for>

+                                <switch test='`$found-vm-type`'>

+                                    <outcome value='false'>

+                                        <block atomic="true">

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="500" />

+                                                <parameter name="error-message" value="`'TOSCA provided vm-type ' +

+      $db.group-uuids[$group-index].vm-type + ' but that was not found in vf-module-assignments.vms'`" />

+                                            </return>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' />

+                                </set>

+                                <for index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-name`' />

+                                        </set>

+                                        <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="instance-group:relationship-list"

+   key="instance-group.id = $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-id"

+   force="true" pfx="tmp.AnAI-data">

+                                            <parameter name="relationship-list.relationship[0].related-to" value="vnfc" />

+                                            <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/vnfcs/vnfc/' +

+        $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`" />

+                                            <outcome value='failure'>

+                                                <block atomic="true">

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="System error creating instance-group relationship to vnfc" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='not-found'>

+                                                <block atomic="true">

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="`'Not-found error relating instance group '

+      + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-id

+      + ' to vnfc '

+      + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`" />

+                                                    </return>

+                                                </block>

+                                            </outcome>

+                                        </save>

+                                        <set>

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].data-created' value='true' />

+                                        </set>

+                                    </block>

+                                </for>

+                                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="select property_name from VF_MODULE_TO_VFC_MAPPING vmvm,

+    RESOURCE_POLICY_TO_TARGET_NODE_MAPPING rptnm, RESOURCE_POLICY rp

+	where vmvm.vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid

+	AND vmvm.vm_type = $db.group-uuids[$group-index].vm-type

+	AND vmvm.vfc_customization_uuid = rptnm.target_node_uuid

+	AND rptnm.policy_uuid = rp.policy_uuid

+	AND rp.property_type = 'vlan_tag_policy'

+	AND rp.policy_type = 'ecomp.policies.External'

+	AND rp.property_source = 'Policy Manager'"

+  pfx='db.policy[]'>

+                                    <outcome value='failure'>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`'Failure retrieving policy for vm-type ' + $db.group-uuids[$group-index].vm-type`" />

+                                        </return>

+                                    </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="`'Unable to find policy for vm-type ' + $db.group-uuids[$group-index].vm-type`" />

+                                        </return>

+                                    </outcome>

+                                </get-resource>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vnic-interface-role'

+  value='`$db.group-uuids[$group-index].vfc_parent_port_role`' />

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-assignment-policy-name'

+  value='`$db.policy[0].property-name`' />

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].network-instance-group-function'

+  value='`$db.group-uuids[$group-index].network-collection-function`' />

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group_length'

+  value='1' />

+                                </set>

+                                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key="select vnrm.* from VF_MODULE_TO_VFC_MAPPING vmvm, VFC_TO_NETWORK_ROLE_MAPPING vnrm

+	where vmvm.vf_module_customization_uuid = $vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid

+	AND vmvm.vm_type = $db.group-uuids[$group-index].vm-type

+	AND vmvm.vfc_customization_uuid = vnrm.vfc_customization_uuid

+	AND vnrm.network_role_tag = $db.group-uuids[$group-index].vfc_parent_port_role"

+  pfx='db.vfc-to-network-role[]'>

+                                    <outcome value='failure'>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`'Failure reading VFC_TO_NETWORK_ROLE_MAPPING for parent role ' + $db.group-uuids[$group-index].vfc_parent_port_role`" />

+                                        </return>

+                                    </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="`'Unable to find rows in VFC_TO_NETWORK_ROLE_MAPPING for parent role ' + $db.group-uuids[$group-index].vfc_parent_port_role`" />

+                                        </return>

+                                    </outcome>

+                                </get-resource>

+                                <for index='vnic-index' start='0' end='`$db.vfc-to-network-role_length`' >

+                                    <block>

+                                        <set>

+                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-vnics.vlan-vnic[$vnic-index].vnic-port-id'

+  value='`$vnic-index`' />

+                                        </set>

+                                    </block>

+                                </for>

+                                <set>

+                                    <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnic-groups.vnic-group[0].vlan-vnics.vlan-vnic_length'

+  value='`$db.vfc-to-network-role_length`' />

+                                </set>

+                                <set>

+                                    <parameter name='get-data-from-policy-input.policy-instance-name' value='`$db.policy[0].property-name`' />

+                                </set>

+                                <call module='GENERIC-RESOURCE-API' rpc='get-data-from-policy' mode='sync' >

+                                    <outcome value='failure'>

+                                        <return status='failure'></return>

+                                    </outcome>

+                                </call>

+                                <switch test='`$get-data-from-policy-output.precreate-sub-intf-num &gt; 0`'>

+                                    <outcome value='true'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='assign-vlan-tags' mode='sync' >

+                                            <outcome value='failure'>

+                                                <return status='failure'></return>

+                                            </outcome>

+                                        </call>

+                                    </outcome>

+                                </switch>

+                                <for index='vnfc-index' start='1' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >

+                                    <set>

+                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnics-groups.'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[0].vnics-groups.`' />

+                                    </set>

+                                </for>

+                                <set>

+                                    <parameter name='counter' value='0' />

+                                </set>

+                                <set>

+                                    <parameter name='seq-no' value='1' />

+                                </set>

+                                <for index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >

+                                    <for index='vnic-group-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group_length`' >

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='tmp.vt-ip.' value='' />

+                                            </set>

+                                            <set>

+                                                <parameter name='tmp.vt-ip.network-instance-group-function'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`' />

+                                                <parameter name='tmp.vt-ip.nf-role'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`' />

+                                                <parameter name='tmp.vt-ip.vm-type'

+  value='`$db.group-uuids[$group-index].vm-type`' />

+                                                <parameter name='tmp.vt-ip.vnfc-name'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name`' />

+                                                <parameter name='tmp.vt-ip.type'

+  value='FIXED' />

+                                                <parameter name='tmp.vt-ip.vf-module-id'

+  value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                                            </set>

+                                            <for index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >

+                                                <switch test='`$tmp.vt-ip.network-instance-group-id

+  == $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>

+                                                    <outcome value='true'>

+                                                        <switch test='`$get-data-from-policy-output.ip-assignment`'>

+                                                            <outcome value='shared'>

+                                                                <for silentFailure='true' index='subnet-index' start='0'

+  end='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets_length`' >

+                                                                    <block atomic="true">

+                                                                        <set>

+                                                                            <parameter name='tmp.vt-ip.ip-version'

+  value='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets[$subnet-index].ip-version`' />

+                                                                            <parameter name='tmp.vt-ip.network-instance-group-id'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-id`' />

+                                                                            <parameter name='tmp.vt-ip.sequence-number'

+  value='`$seq-no`' />

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name='counter' value='`$counter + 1`' />

+                                                                        </set>

+                                                                        <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-ip-addresses' mode='sync' >

+                                                                            <outcome value='failure'>

+                                                                                <return status='failure'></return>

+                                                                            </outcome>

+                                                                        </call>

+                                                                        <switch test='`$eipam-ip-block.plans_length`'>

+                                                                            <outcome value=''>

+                                                                                <block></block>

+                                                                            </outcome>

+                                                                            <outcome value='0'>

+                                                                                <block></block>

+                                                                            </outcome>

+                                                                            <outcome value='Other'>

+                                                                                <for index='vnic-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic_length`' >

+                                                                                    <for index='sub-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >

+                                                                                        <block>

+                                                                                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length`'>

+                                                                                                <outcome value=''>

+                                                                                                    <set>

+                                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'

+  value='1' />

+                                                                                                        <parameter name='tmp.index' value='0' />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='0'>

+                                                                                                    <set>

+                                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'

+  value='1' />

+                                                                                                        <parameter name='tmp.index' value='0' />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='1'>

+                                                                                                    <set>

+                                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'

+  value='2' />

+                                                                                                        <parameter name='tmp.index' value='1' />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                            <set>

+                                                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].network-ips.network-ip[0]'

+  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />

+                                                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].network-ips.network-ip_length'

+  value='1' />

+                                                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].ip-version'

+  value='`$tmp.vt-ip.ip-version`' />

+                                                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].ip-count'

+  value='1' />

+                                                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].use-dhcp'

+  value='N' />

+                                                                                            </set>

+                                                                                            <switch test='`$tmp.vt-ip.ip-version`'>

+                                                                                                <outcome value='ipv4'>

+                                                                                                    <set>

+                                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-common-ip-addresses.ip-addresses.ipv4-address'

+  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='ipv6'>

+                                                                                                    <set>

+                                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-common-ip-addresses.ip-addresses.ipv6-address'

+  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </for>

+                                                                                </for>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                        <set>

+                                                                            <parameter name='seq-no' value='`$seq-no + 1`' />

+                                                                        </set>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                                                                            <parameter name='filename' value="`'/var/tmp/bgb-eipam.log' + $counter`" />

+                                                                        </execute>

+                                                                    </block>

+                                                                </for>

+                                                            </outcome>

+                                                            <outcome value='unique'>

+                                                                <for silentFailure='true' index='subnet-index' start='0'

+  end='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets_length`' >

+                                                                    <for index='vnic-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic_length`' >

+                                                                        <set>

+                                                                            <parameter name='tmp.vt-ip.ip-version'

+  value='`$service-data.network-instance-groups.network-instance-group[$nig-index].subnets[$subnet-index].ip-version`' />

+                                                                        </set>

+                                                                        <for index='sub-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data_length`' >

+                                                                            <block atomic="true">

+                                                                                <set>

+                                                                                    <parameter name='tmp.vt-ip.network-id'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-id`' />

+                                                                                    <parameter name='tmp.vt-ip.sequence-number'

+  value='`$seq-no`' />

+                                                                                </set>

+                                                                                <set>

+                                                                                    <parameter name='counter' value='`$counter + 1`' />

+                                                                                </set>

+                                                                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-vlan-tagging-ip-addresses' mode='sync' >

+                                                                                    <outcome value='failure'>

+                                                                                        <return status='failure'></return>

+                                                                                    </outcome>

+                                                                                </call>

+                                                                                <switch test='`$eipam-ip-block.plans_length`'>

+                                                                                    <outcome value=''>

+                                                                                        <block></block>

+                                                                                    </outcome>

+                                                                                    <outcome value='0'>

+                                                                                        <block></block>

+                                                                                    </outcome>

+                                                                                    <outcome value='Other'>

+                                                                                        <block>

+                                                                                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length`'>

+                                                                                                <outcome value=''>

+                                                                                                    <set>

+                                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'

+  value='1' />

+                                                                                                        <parameter name='tmp.index' value='0' />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='0'>

+                                                                                                    <set>

+                                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'

+  value='1' />

+                                                                                                        <parameter name='tmp.index' value='0' />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                                <outcome value='1'>

+                                                                                                    <set>

+                                                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item_length'

+  value='2' />

+                                                                                                        <parameter name='tmp.index' value='1' />

+                                                                                                    </set>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                            <set>

+                                                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].network-ips.network-ip[0]'

+  value='`$eipam-ip-block.plans[0].requests[0].ip-prefix`' />

+                                                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].network-ips.network-ip_length'

+  value='1' />

+                                                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].ip-version'

+  value='`$tmp.vt-ip.ip-version`' />

+                                                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].ip-count'

+  value='1' />

+                                                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.sub-interface-network-data[$sub-index].network-information-items.network-information-item[$tmp.index].use-dhcp'

+  value='N' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                                <set>

+                                                                                    <parameter name='seq-no' value='`$seq-no + 1`' />

+                                                                                </set>

+                                                                            </block>

+                                                                        </for>

+                                                                    </for>

+                                                                </for>

+                                                            </outcome>

+                                                            <outcome value='Other'>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value="`'From policy: ip-assignment is '

+  + $get-data-from-policy-output.ip-assignment

+  + ' but must be unique or shared'`" />

+                                                                </return>

+                                                            </outcome>

+                                                        </switch>

+                                                    </outcome>

+                                                </switch>

+                                            </for>

+                                        </block>

+                                    </for>

+                                </for>

+                                <for index='vnfc-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >

+                                    <for index='vm-vnfc-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names_length`' >

+                                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name

+  == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vm-vnfc-index].vnfc-name`'>

+                                            <outcome value='true'>

+                                                <for index='vnic-group-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group_length`' >

+                                                    <block>

+                                                        <set>

+                                                            <parameter name='vnfc-network-index' value='-1' />

+                                                        </set>

+                                                        <for index='vn-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data_length`' >

+                                                            <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vnic-interface-role

+  == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-network-role`'>

+                                                                <outcome value='true'>

+                                                                    <block>

+                                                                        <set>

+                                                                            <parameter name='vnfc-network-index' value='`$vn-index`' />

+                                                                        </set>

+                                                                        <break/>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </for>

+                                                        <switch test='`$vnfc-network-index`'>

+                                                            <outcome value='-1'>

+                                                                <return status='failure'>

+                                                                    <parameter name='error-code' value='500' />

+                                                                    <parameter name='error-message' value="`'Cannot find vnfc-network for network role '

+  + $tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vnic-interface-role`" />

+                                                                </return>

+                                                            </outcome>

+                                                            <outcome value='Other'>

+                                                                <block>

+                                                                    <set>

+                                                                        <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-network-role.vnfc-type'

+  value='`$db.group-uuids[$group-index].vm-type`' />

+                                                                    </set>

+                                                                    <for index='vnic-index' start='0'

+  end='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic_length`' >

+                                                                        <block>

+                                                                            <set>

+                                                                                <parameter name='vnfc-port-index' value='-1' />

+                                                                            </set>

+                                                                            <for silentFailure='true' index='v-index' start='0' end='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port_length`' >

+                                                                                <switch test='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-port-id

+  == $tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port[$v-index].vnfc-port-id`'>

+                                                                                    <outcome value='true'>

+                                                                                        <block>

+                                                                                            <set>

+                                                                                                <parameter name='vnfc-port-index' value='`$v-index`' />

+                                                                                            </set>

+                                                                                            <break/>

+                                                                                        </block>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </for>

+                                                                            <switch test='`$vnfc-port-index`'>

+                                                                                <outcome value='-1'>

+                                                                                    <block>

+                                                                                        <switch test='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port_length`'>

+                                                                                            <outcome value=''>

+                                                                                                <set>

+                                                                                                    <parameter name='vnfc-port-index' value='0' />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                            <outcome value='Other'>

+                                                                                                <set>

+                                                                                                    <parameter name='vnfc-port-index' value='`$tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port_length`' />

+                                                                                                </set>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                        <set>

+                                                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnfc-port-id'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-port-id`' />

+                                                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port[$vnfc-port-index].common-sub-interface-role'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vnic-interface-role`' />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port_length'

+  value='`$vnfc-port-index + 1`' />

+                                                                                        </set>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                                <outcome value='Other'></outcome>

+                                                                            </switch>

+                                                                            <set>

+                                                                                <parameter name='tmp.vf-module-topology.vf-module-assignments.vms.vm[$vm-type-index].vm-names.vnfc-names[$vnfc-index].vnfc-networks.vnfc-network-data[$vn-index].vnfc-ports.vnfc-port[$vnfc-port-index].vnic-sub-interfaces.'

+  value='`$tmp.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vlan-vnics.vlan-vnic[$vnic-index].vnic-sub-interfaces.`' />

+                                                                            </set>

+                                                                        </block>

+                                                                    </for>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                </for>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                </for>

+                            </block>

+                        </for>

+                    </block>

+                </outcome>

+            </get-resource>

+            <return status='success'></return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-deactivate.xml
new file mode 100755
index 0000000..b39e116
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-deactivate.xml
@@ -0,0 +1,88 @@
+<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-vlan-tagging-deactivate' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.vlan-vnfc-instance-groups.'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-module-index].vf-module-data.vf-module-topology.vf-module-assignments.vlan-vnfc-instance-groups.`' />

+            </set>

+            <for index='vvig-index' start='0' end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group_length`' >

+                <for index='vnfc-index' start='0' end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc_length`' >

+                    <for index='vnic-group-index' start='0' end='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group_length`' >

+                        <block atomic="true">

+                            <set>

+                                <parameter name='parent-port-role'

+  value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].vnic-interface-role`' />

+                                <parameter name='network-instance-group-function'

+  value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnic-groups.vnic-group[$vnic-group-index].network-instance-group-function`' />

+                                <parameter name='vnfc-instance-group-function'

+  value='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].instance-group-function`' />

+                            </set>

+                            <for silentFailure='true' index='vsig-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group_length`' >

+                                <switch test='`

+  $parent-port-role == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].parent-port-role

+  and $vnfc-instance-group-function == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfc-instance-group-function

+  and $network-instance-group-function == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].network-instance-group-function

+`'>

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].customer-bonding-requests.customer-bonding-request_length`'>

+                                                <outcome value=''>

+                                                    <block></block>

+                                                </outcome>

+                                                <outcome value='0'>

+                                                    <block></block>

+                                                </outcome>

+                                                <outcome value='Other'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value='Cannot deactivate module because customer bonding request exists' />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                            <for index='vnf-vnfc-index' start='0'

+  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length`' >

+                                                <switch test='`$tmp.vlan-vnfc-instance-groups.vlan-vnfc-instance-group[$vvig-index].vnfcs.vnfc[$vnfc-index].vnfc-name

+  == $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$vnf-vnfc-index].vnfc-name`'>

+                                                    <outcome value='true'>

+                                                        <block>

+                                                            <for index='$idx' start='`$vnf-vnfc-index`'

+  end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length - 1`' >

+                                                                <block>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$idx].'

+  value='' />

+                                                                    </set>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$idx].'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$idx + 1].`' />

+                                                                    </set>

+                                                                </block>

+                                                            </for>

+                                                            <set>

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length'

+  value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length - 1`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc[$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-sub-interface-groups.vnf-sub-interface-group[$vsig-index].vnfcs.vnfc_length].' value='' />

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </for>

+                                            <break/>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </for>

+                        </block>

+                    </for>

+                </for>

+            </for>

+            <return status='success'>

+                <parameter name='' value='' />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-ip-addresses.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-ip-addresses.xml
new file mode 100644
index 0000000..9a7a73b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vf-module-topology-vlan-tagging-ip-addresses.xml
@@ -0,0 +1,289 @@
+<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-vlan-tagging-ip-addresses' mode='sync'>

+        <block atomic="true">

+            <switch test='`$tmp.vt-ip.type`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value='type is required' />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$tmp.vt-ip.network-instance-group-function`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value='network-instance-group-function is required for FIXED ip request' />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$tmp.vt-ip.ip-version`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value='ip-version is required' />

+                    </return>

+                </outcome>

+                <outcome value='ipv4'>

+                    <set>

+                        <parameter name='tmp.address-family' value='4' />

+                        <parameter name='tmp.sql.address-family' value='%4' />

+                    </set>

+                </outcome>

+                <outcome value='ipv6'>

+                    <set>

+                        <parameter name='tmp.address-family' value='6' />

+                        <parameter name='tmp.sql.address-family' value='%6' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='eipam-ip-block.' value='' />

+            </set>

+            <switch test='`$tmp.vt-ip.type`'>

+                <outcome value='FIXED'>

+                    <block atomic='true'>

+                        <switch test='`$tmp.vt-ip.vnfc-name`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value='vnfc-name is required for FIXED ip request' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$tmp.vt-ip.vf-module-id`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value='vf-module-id is required' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test='`$tmp.vt-ip.sequence-number`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value='seq-num is required' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name="tmp.selected-client-key" 

+	value="`$tmp.vt-ip.vm-type + '|' +

+			$tmp.vt-ip.vnfc-name + '|' +

+			$tmp.vt-ip.network-instance-group-function + '|' + 

+			$tmp.vt-ip.type + '|' + 

+			$tmp.address-family + '|' + 

+			$tmp.vt-ip.sequence-number`" />

+                            <!--	

+fixed-ip client-key:

+vm-type + VFCname + network-instance-group-function + "FIXED" + [ip-version(4/6)] + seqNo

+		seqNo required for unique, but not required for shared

+-->

+                        </set>

+                        <set>

+                            <parameter name="tmp.eipam.info" value="`$tmp.vt-ip.vf-module-id`"/>

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='VIP'>

+                    <block atomic='true'>

+                        <switch test='`$tmp.vt-ip.nf-role`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value='nf-role is required for VIP ip request' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test="`$tmp.vt-ip.network-instance-group-id == '' `">

+                            <outcome value='true'>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value='network-isntance-group-id is required for VIP' />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name="tmp.eipam.info" value="`$tmp.vt-ip.network-instance-group-id`"/>

+                        </set>

+                        <set>

+                            <parameter name='tmp.selected-client-key' 

+	value="`$tmp.vt-ip.nf-role + '|' + 

+			$tmp.vt-ip.network-instance-group-function + '|' +

+			$tmp.vt-ip.type + '|' + 

+			$tmp.vt-ip.ip-version`" />

+                            <!--	

+loating-ip client-key:

+nf-role + network-instance-group-function + "VIP" + [ip-version(4/6)]

+-->

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.vt-ip.network-id == '' and $tmp.vt-ip.network-instance-group-id == '' `">

+                <outcome value='true'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value='either network-id or network-isntance-group-id is required' />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.vt-ip.network-id != '' `">

+                <outcome value='true'>

+                    <block atomic='true'>

+                        <set>

+                            <parameter name='tmp.sql' 

+	value="`'SELECT * from EIPAM_IP_SUBNETS WHERE network_id = ' + 

+	'$tmp.vt-ip.network-id AND address_family like $tmp.sql.address-family'`" />

+                        </set>

+                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='`$tmp.sql`' pfx='db.selected-subnet-data[]'>

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNETS table' />

+                                </return>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <return status='failure'>

+                                    <parameter name='error-code' value='500' />

+                                    <parameter name='error-message' value = "`'No EIPAM_IP_SUBNETS entry found with network-id = ' + $tmp.vt-ip.network-id + ' and address_family = ' + $tmp.address-family`" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                        <set>

+                            <parameter name="eipam-ip-block.plans[0].requests[0].network-id" 

+	value="`$tmp.vt-ip.network-id`"/>

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='false'>

+                    <switch test="`$tmp.vt-ip.network-instance-group-id != '' `">

+                        <outcome value='true'>

+                            <block atomic='true'>

+                                <set>

+                                    <parameter name='tmp.sql' 

+	value="`'SELECT * from EIPAM_IP_SUBNETS WHERE network_instance_group_id = '+ 

+		'$tmp.vt-ip.network-instance-group-id AND address_family like $tmp.sql.address-family'`" />

+                                </set>

+                                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='`$tmp.sql`' pfx='db.selected-subnet-data[]'>

+                                    <outcome value='failure'>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500' />

+                                            <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNETS table' />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <return status='failure'>

+                                            <parameter name='error-code' value='500' />

+                                            <parameter name='error-message' value = "`'No EIPAM_IP_SUBNETS entry found with network-instance-group-id = ' + $tmp.vt-ip.network-instance-group-id + ' and address_family = ' + $tmp.address-family`" />

+                                        </return>

+                                    </outcome>

+                                </get-resource>

+                                <set>

+                                    <parameter name="eipam-ip-block.plans[0].requests[0].network-instance-group-id" 

+	value="`$tmp.vt-ip.network-instance-group-id`"/>

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='tmp.level4-key-found' value='false' />

+            </set>

+            <for index='didx' start='0' end='`$db.selected-subnet-data_length`' >

+                <set>

+                    <parameter name='tmp.sql' 

+	value="`'SELECT a.entity_id, a.key_name, a.key_value, a.level from EIPAM_IP_SUBNET_KEYS a where level = (SELECT MAX(level) from EIPAM_IP_SUBNET_KEYS b where b.entity_id = a.entity_id and entity_id = ' + ' $db.selected-subnet-data[$didx].entity-id )'`" />

+                </set>

+                <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='`$tmp.sql`' pfx='db.selected-subnet-keys'>

+                    <outcome value='failure'>

+                        <return status='failure'>

+                            <parameter name='error-code' value='500' />

+                            <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNET_KEYS table to find MAX level by entity_id' />

+                        </return>

+                    </outcome>

+                    <outcome value='success'>

+                        <switch test="`$db.selected-subnet-keys.level == '4' `">

+                            <outcome value='false'>

+                                <block></block>

+                            </outcome>

+                            <outcome value='true'>

+                                <block>

+                                    <set>

+                                        <parameter name='tmp.level4-key-found' value='true' />

+                                    </set>

+                                    <set>

+                                        <parameter name='tmp.selected-entity-id' value='`$db.selected-subnet-keys.entity-id`' />

+                                    </set>

+                                    <set>

+                                        <parameter name='tmp.selected-plan-name' value='`$db.selected-subnet-data[$didx].plan-name`' />

+                                    </set>

+                                    <break/>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </outcome>

+                </get-resource>

+            </for>

+            <switch test="`$tmp.level4-key-found`">

+                <outcome value='false'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value='No level 4 KeyName found in EIPAM_IP_SUBNET_KEYS' />

+                    </return>

+                </outcome>

+            </switch>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from EIPAM_IP_SUBNET_KEYS  

+  	where entity_id = $tmp.selected-entity-id order by level'

+  pfx='db.eipam-subnet-keys[]'>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='500' />

+                        <parameter name='error-message' value = 'Failed to read EIPAM_IP_SUBNET_KEYS table by entity_id' />

+                    </return>

+                </outcome>

+            </get-resource>

+            <for index='key' start='0' end='`$db.eipam-subnet-keys_length`' >

+                <set>

+                    <parameter name="eipam-ip-block.plans[0].requests[0].pools[$key].key-name" 

+	value="`$db.eipam-subnet-keys[$key].key-name`"/>

+                    <parameter name="eipam-ip-block.plans[0].requests[0].pools[$key].key-value" 

+	value="`$db.eipam-subnet-keys[$key].key-value`"/>

+                </set>

+            </for>

+            <set>

+                <parameter name='eipam-ip-block.plans[0].plan-name' value='`$tmp.selected-plan-name`' />

+                <parameter name='eipam-ip-block.plans[0].address-family' value="`$tmp.vt-ip.ip-version`" />

+                <parameter name='eipam-ip-block.plans[0].requests[0].client-key' 

+	value="`$tmp.selected-client-key`" />

+                <parameter name="eipam-ip-block.plans[0].requests[0].info" 

+	value="`$tmp.eipam.info`"/>

+                <parameter name="eipam-ip-block.plans[0].requests[0].pools_length" value="4"/>

+                <parameter name='eipam-ip-block.plans[0].requests_length' value='1' />

+                <parameter name="eipam-ip-block.plans_length" value="1"/>

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/vlan-tag-ip.log' />

+            </execute>

+            <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="assignIPAddress">

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <return status="failure">

+                            <parameter name="ack-final" value="Y" />

+                            <parameter name="error-code" value="500"/>

+                            <parameter name="error-message" value="`'An error occured while obtaining ip addresses from EIPAM: ' + $error-message`" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-get-resource-request.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-get-resource-request.xml
new file mode 100644
index 0000000..d602cc0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-get-resource-request.xml
@@ -0,0 +1,242 @@
+<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='vnf-get-resource-request' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name="vnf-get-resource-request-output.vnf-get-resource-response-information.service-instance-id" value='`$vnf-get-resource-request-input.service-information.service-instance-id`'/>

+                <parameter name="vnf-get-resource-request-output.vnf-get-resource-response-information.service-instance-name" value='`$service-data.service-topology.service-topology-identifier.service-instance-name`'/>

+            </set>

+            <switch test="`$vnf-get-resource-request-input.vnf_length == ''`">

+                <outcome value='true'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="vnf-get-resource-request-output.vnf-get-resource-response-information.vnf_length" value='`$service-data.vnfs.vnf_length`'/>

+                        </set>

+                        <switch test="`$service-data.vnfs.vnf_length == ''`">

+                            <outcome value='false'>

+                                <for index='i' start='0' end='`$service-data.vnfs.vnf_length`' >

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vnf-id`' value="`$service-data.vnfs.vnf[$i].vnf-id`"/>

+                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vnf-name`' value="`$service-data.vnfs.vnf[$i].vnf-name`"/>

+                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param_length`' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length`'/>

+                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module_length`' value='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length`'/>

+                                        </set>

+                                        <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length == ''`">

+                                            <outcome value='false'>

+                                                <for index='j' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].name`"/>

+                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].value`"/>

+                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.status`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.status`"/>

+                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.capability-name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.capability-name`"/>

+                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.resource-key_length`' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length`' />

+                                                        </set>

+                                                        <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length == ''`">

+                                                            <outcome value='false'>

+                                                                <for index='k' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length`' >

+                                                                    <set>

+                                                                        <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.resource-key[$k].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key[$k].name`"/>

+                                                                        <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].param[$j].resource-resolution-data.resource-key[$k].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key[$k].value`"/>

+                                                                    </set>

+                                                                </for>

+                                                            </outcome>

+                                                        </switch>

+                                                    </block>

+                                                </for>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length == ''`">

+                                            <outcome value='false'>

+                                                <for index='l' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length`' >

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].vf-module-id`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-id`"/>

+                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param_length`' value="`service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param_length`"/>

+                                                        </set>

+                                                        <for index='m' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].name`"/>

+                                                                    <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].value`"/>

+                                                                    <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].resource-resolution-data.resource-key_length`' value="`service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length`"/>

+                                                                </set>

+                                                                <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length == ''`">

+                                                                    <outcome value='false'>

+                                                                        <for index='n' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length`' >

+                                                                            <set>

+                                                                                <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].resource-resolution-data.resource-key[$n].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].name`"/>

+                                                                                <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$i].vf-module[$l].param[$m].resource-resolution-data.resource-key[$n].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$l].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].value`"/>

+                                                                            </set>

+                                                                        </for>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                        </for>

+                                                    </block>

+                                                </for>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </for>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='false'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="tmp.vnf_counter" value='0'/>

+                        </set>

+                        <for index='ll' start='0' end='`$vnf-get-resource-request-input.vnf_length`' >

+                            <block atomic="true">

+                                <set>

+                                    <parameter name="tmp.vnf-id" value="`$vnf-get-resource-request-input.vnf[$ll].vnf-id`"/>

+                                </set>

+                                <switch test="`$service-data.vnfs.vnf_length == ''`">

+                                    <outcome value='false'>

+                                        <for index='i' start='0' end='`$service-data.vnfs.vnf_length`' >

+                                            <block atomic="true">

+                                                <switch test='`$tmp.vnf-id == $service-data.vnfs.vnf[$i].vnf-id`'>

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vnf-id`' value="`$service-data.vnfs.vnf[$i].vnf-id`"/>

+                                                                <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vnf-name`' value="`$service-data.vnfs.vnf[$i].vnf-name`"/>

+                                                                <parameter name="tmp.pnum" value='0'/>

+                                                            </set>

+                                                            <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length == ''`">

+                                                                <outcome value='false'>

+                                                                    <for index='j' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param_length`' >

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].name`"/>

+                                                                                <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].value`"/>

+                                                                                <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.status`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.status`"/>

+                                                                                <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.capability-name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.capability-name`"/>

+                                                                                <parameter name='tmp.prnum' value='0' />

+                                                                            </set>

+                                                                            <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length == ''`">

+                                                                                <outcome value='false'>

+                                                                                    <for index='k' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key_length`' >

+                                                                                        <set>

+                                                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.resource-key[$tmp.prnum].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key[$k].name`"/>

+                                                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.resource-key[$tmp.prnum].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vnf-topology.vnf-parameters-data.param[$j].resource-resolution-data.resource-key[$k].value`"/>

+                                                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param[$tmp.pnum].resource-resolution-data.resource-key_length`' value='`$tmp.prnum + 1`' />

+                                                                                            <parameter name='tmp.prnum' value='`$tmp.prnum + 1`' />

+                                                                                        </set>

+                                                                                    </for>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                            <set>

+                                                                                <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].param_length`' value='`$tmp.pnum + 1`' />

+                                                                                <parameter name='tmp.pnum' value='`$tmp.pnum + 1`' />

+                                                                            </set>

+                                                                        </block>

+                                                                    </for>

+                                                                </outcome>

+                                                            </switch>

+                                                            <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length == ''`">

+                                                                <outcome value='false'>

+                                                                    <for index='ln' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module_length`' >

+                                                                        <switch test="`$vnf-get-resource-request-input.vnf[$ll].vf-module_length == ''`">

+                                                                            <outcome value='false'>

+                                                                                <for index='jj' start='0' end='`$vnf-get-resource-request-input.vnf[$ll].vf-module_length`' >

+                                                                                    <switch test='`$vnf-get-resource-request-input.vnf[$ll].vf-module[$jj].vf-module-id == $service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-id`'>

+                                                                                        <outcome value='true'>

+                                                                                            <block atomic="true">

+                                                                                                <set>

+                                                                                                    <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].vf-module-id`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-id`"/>

+                                                                                                    <parameter name="tmp.vfpnum" value='0'/>

+                                                                                                </set>

+                                                                                                <for index='m' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >

+                                                                                                    <block atomic="true">

+                                                                                                        <set>

+                                                                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].name`"/>

+                                                                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].value`"/>

+                                                                                                            <parameter name='tmp.pvnfrnum' value='0' />

+                                                                                                        </set>

+                                                                                                        <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length == ''`">

+                                                                                                            <outcome value='false'>

+                                                                                                                <for index='n' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length`' >

+                                                                                                                    <set>

+                                                                                                                        <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key[$tmp.pvnfrnum].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].name`"/>

+                                                                                                                        <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key[$tmp.pvnfrnum].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].value`"/>

+                                                                                                                        <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key_length`' value='`$tmp.pvnfrnum + 1`' />

+                                                                                                                        <parameter name='tmp.pvnfrnum' value='`$tmp.pvnfrnum + 1`' />

+                                                                                                                    </set>

+                                                                                                                </for>

+                                                                                                            </outcome>

+                                                                                                        </switch>

+                                                                                                        <set>

+                                                                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param_length`' value='`$tmp.vfpnum + 1`' />

+                                                                                                            <parameter name='tmp.vfpnum' value='`$tmp.vfpnum + 1`' />

+                                                                                                        </set>

+                                                                                                    </block>

+                                                                                                </for>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </for>

+                                                                            </outcome>

+                                                                            <outcome value='true'>

+                                                                                <block atomic="true">

+                                                                                    <set>

+                                                                                        <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].vf-module-id`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-id`"/>

+                                                                                        <parameter name="tmp.vfpnum" value='0'/>

+                                                                                    </set>

+                                                                                    <for index='m' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param_length`' >

+                                                                                        <block atomic="true">

+                                                                                            <set>

+                                                                                                <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].name`"/>

+                                                                                                <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].value`"/>

+                                                                                                <parameter name='tmp.pvnfrnum' value='0' />

+                                                                                            </set>

+                                                                                            <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length == ''`">

+                                                                                                <outcome value='false'>

+                                                                                                    <for index='n' start='0' end='`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key_length`' >

+                                                                                                        <set>

+                                                                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key[$tmp.pvnfrnum].name`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].name`"/>

+                                                                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key[$tmp.pvnfrnum].value`' value="`$service-data.vnfs.vnf[$i].vnf-data.vf-modules.vf-module[$ln].vf-module-data.vf-module-topology.vf-module-parameters.param[$m].resource-resolution-data.resource-key[$n].value`"/>

+                                                                                                            <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param[$tmp.vfpnum].resource-resolution-data.resource-key_length`' value='`$tmp.pvnfrnum + 1`' />

+                                                                                                            <parameter name='tmp.pvnfrnum' value='`$tmp.pvnfrnum + 1`' />

+                                                                                                        </set>

+                                                                                                    </for>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                            <set>

+                                                                                                <parameter name='`vnf-get-resource-request-output.vnf-get-resource-response-information.vnf[$tmp.vnf_counter].vf-module[$tmp.vf_counter].param_length`' value='`$tmp.vfpnum + 1`' />

+                                                                                                <parameter name='tmp.vfpnum' value='`$tmp.vfpnum + 1`' />

+                                                                                            </set>

+                                                                                        </block>

+                                                                                    </for>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </for>

+                                                                </outcome>

+                                                            </switch>

+                                                            <set>

+                                                                <parameter name='vnf-get-resource-request-output.vnf-get-resource-response-information.vnf_length' value='`$tmp.vnf_counter + 1`' />

+                                                                <parameter name='tmp.vnf_counter' value='`$tmp.vnf_counter + 1`' />

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </for>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <return status="success">

+                <parameter name="error-code" value="200" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-activate.xml
new file mode 100755
index 0000000..6d5aacd
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-activate.xml
@@ -0,0 +1,84 @@
+<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='vnf-topology-operation-activate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$vnf-topology-operation-input.request-information.request-action`'>

+                <outcome value='CreateVnfInstance'>

+                    <block></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="If svc-action is 'activate' then request-action must be 'CreateVnfInstance'" />

+                    </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="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 == $vnf-topology-operation-input.vnf-information.vnf-id`'>

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$vnf-index`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="'Could not find VNF ' + $vnf-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'" />

+                    </return>

+                </outcome>

+            </switch>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="generic-vnf"

+   key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id"

+   force="true" pfx="tmp.AnAI-data">

+                <parameter name="prov-status" value="NVTPROV" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error updating generic-vnf in AAI" />

+                    </return>

+                </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="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />

+                    </return>

+                </outcome>

+            </update>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-assign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-assign.xml
new file mode 100755
index 0000000..66341c3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-assign.xml
@@ -0,0 +1,1536 @@
+<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='vnf-topology-operation-assign' mode='sync'>

+        <block atomic="true">

+            <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>

+            <set>

+                <parameter name="so.ack-final-indicator" value="Y" />

+                <parameter name="so.response-code" value="500" />

+                <parameter name="so.notification-url" value="`$vnf-topology-operation-input.sdnc-request-header.svc-notification-url`" />

+                <parameter name="so.svc-request-id" value="`$vnf-topology-operation-input.sdnc-request-header.svc-request-id`" />

+                <parameter name="so.service-type" value="`$vnf-topology-operation-input.service-information.subscription-service-type`" />

+                <parameter name="so.service-instance-id" value="`$vnf-topology-operation-input.service-information.service-instance-id`" />

+            </set>

+            <switch test='`$vnf-topology-operation-input.vnf-request-input.cloud-owner`'>

+                <outcome value=''>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='prop.cloud-region.cloud-owner' value='`$vnf-topology-operation-input.vnf-request-input.cloud-owner`' />

+                    </set>

+                </outcome>

+            </switch>

+            <switch test='`$vnf-topology-operation-input.request-information.request-action`'>

+                <outcome value='CreateVnfInstance'>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="If svc-action is 'assign' then request-action must be 'CreateVnfInstance'" />

+                        </set>

+                        <block atomic='true'>

+                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </switch>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'

+  pfx='db.vf-model'>

+                <outcome value='failure'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="Error reading VF_MODEL table" />

+                        </set>

+                        <block atomic='true'>

+                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='not-found'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name="error-message" value="`'No model found for VNF customization UUID ' + $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`" />

+                        </set>

+                        <block atomic='true'>

+                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+            </get-resource>

+            <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-forking-logic' mode='sync' ></call>

+            <switch test="`$ss.self-serve-flag`">

+                <outcome value='true'>

+                    <block atomic="true">

+                        <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-assign' mode='sync' >

+                            <outcome value='failure'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="`'Failed to create self-serve assignment for vnf with vnf-id=' + $vnf-topology-operation-input.vnf-information.vnf-id + ' with error: ' + $error-message`" />

+                                    </set>

+                                    <block atomic='true'>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </call>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+                        </set>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                            <parameter name='filename' value='/var/tmp/ss-vnfend.log' />

+                        </execute>

+                        <set>

+                            <parameter name="so.response-code" value="200" />

+                        </set>

+                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                        <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>

+                </outcome>

+                <outcome value='false'>

+                    <block atomic="true">

+                        <switch test='`$service-data.vnfs.vnf_length`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='vnf-index' value='0' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />

+                                    </set>

+                                    <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                                        <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>

+                                            <outcome value='true'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name="error-message" value="`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id

+      + ' already exists'`" />

+                                                    </set>

+                                                    <block atomic='true'>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`$error-message`" />

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />

+                        </set>

+                        <set>

+                            <parameter name='tmp.vnf-network-collection_length' value='0' />

+                        </set>

+                        <for silentFailure='true' index='inst-group-index' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids_length`' >

+                            <block atomic="true">

+                                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="instance-group" 

+		key="instance-group.id = $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id"

+        pfx='aai.instance-group' local-only='false' >

+                                    <outcome value='not-found'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="`'Cannot find instance group id ' +

+      $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id

+      + ' in AAI'`" />

+                                            </set>

+                                            <block atomic='true'>

+                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`$error-message`" />

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='failure'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="Error retrieving instance-group from AAI" />

+                                            </set>

+                                            <block atomic='true'>

+                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`$error-message`" />

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                </get-resource>

+                                <for index='rel-index' start='0' end='`$aai.instance-group.relationship-list.relationship_length`' >

+                                    <switch test='`$aai.instance-group.relationship-list.relationship[$rel-index].related-to`'>

+                                        <outcome value='collection'>

+                                            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="collection" 

+		key="collection.collection-id = $aai.instance-group.relationship-list.relationship[$rel-index].relationship-data[0].relationship-value"

+        pfx='aai.collection' local-only='false' >

+                                                <outcome value='not-found'>

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name="error-message" value="`'Unable to find AAI relationship from collection '

+      + $aai.instance-group.relationship-list.relationship[$rel-index].relationship-data[0].relationship-value

+      + ' to service instance'`" />

+                                                        </set>

+                                                        <block atomic='true'>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                            <return status='failure'>

+                                                                <parameter name='ack-final' value='Y'/>

+                                                                <parameter name="error-code" value="500" />

+                                                                <parameter name="error-message" value="`$error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='failure'>

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name="error-message" value="`'Failed to get network service instance '

+      + $network-service-instance + ' from MD-SAL'`" />

+                                                        </set>

+                                                        <block atomic='true'>

+                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                            <return status='failure'>

+                                                                <parameter name='ack-final' value='Y'/>

+                                                                <parameter name="error-code" value="500" />

+                                                                <parameter name="error-message" value="`$error-message`" />

+                                                            </return>

+                                                        </block>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='success'>

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name='found-network-instance-group' value='false' />

+                                                        </set>

+                                                        <for silentFailure='true' index='nig-index' start='0' end='`$service-data.network-instance-groups.network-instance-group_length`' >

+                                                            <switch test='`$vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id

+  == $service-data.network-instance-groups.network-instance-group[$nig-index].network-instance-group-id`'>

+                                                                <outcome value='true'>

+                                                                    <block>

+                                                                        <set>

+                                                                            <parameter name='found-network-instance-group' value='true' />

+                                                                        </set>

+                                                                        <break/>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </for>

+                                                        <switch test='`$found-network-instance-group`'>

+                                                            <outcome value='false'>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name="error-message" value="`'Could not find network instance group ' +

+      $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id

+      + ' in MD-SAL service instance '

+      + $network-service-instance`" />

+                                                                    </set>

+                                                                    <block atomic='true'>

+                                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                        <return status='failure'>

+                                                                            <parameter name='ack-final' value='Y'/>

+                                                                            <parameter name="error-code" value="500" />

+                                                                            <parameter name="error-message" value="`$error-message`" />

+                                                                        </return>

+                                                                    </block>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                        <set>

+                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$tmp.vnf-network-collection_length].network-instance-group-function'

+  value='`$aai.instance-group.instance-group-function`' />

+                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$tmp.vnf-network-collection_length].network-instance-group-id'

+  value='`$aai.instance-group.id`' />

+                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$tmp.vnf-network-collection_length].network-collection-service-instance-id'

+  value='`$service-data.network-instance-groups.network-instance-group[$nig-index].service-instance-id`' />

+                                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection[$tmp.vnf-network-collection_length].network-collection-customization-uuid'

+  value='`$aai.collection.collection-customization-id`' />

+                                                        </set>

+                                                        <set>

+                                                            <parameter name='tmp.vnf-network-collection_length' value='`$tmp.vnf-network-collection_length + 1`' />

+                                                        </set>

+                                                    </block>

+                                                </outcome>

+                                            </get-resource>

+                                        </outcome>

+                                    </switch>

+                                </for>

+                            </block>

+                        </for>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-network-collections.vnf-network-collection_length'

+  value='`$tmp.vnf-network-collection_length`' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id'

+ value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-type'

+ value='`$vnf-topology-operation-input.vnf-information.vnf-type`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-type'

+ value='`$db.vf-model.nf-type`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role'

+ value='`$db.vf-model.nf-role`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-function'

+ value='`$db.vf-model.nf-function`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-code'

+ value='`$db.vf-model.nf-code`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.tenant'

+ value='`$vnf-topology-operation-input.vnf-request-input.tenant`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-cloud-region'

+ value='`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`' />

+                        </set>

+                        <switch test='`$vnf-topology-operation-input.vnf-information.vnf-name`'>

+                            <outcome value=''>

+                                <block atomic="true">

+                                    <switch test='`$db.vf-model.ecomp-generated-naming`'>

+                                        <outcome value='Y'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='N'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name="error-message" value="No vnf-name was received but ecomp-generated-naming is not Y" />

+                                                </set>

+                                                <block atomic='true'>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="`$error-message`" />

+                                                    </return>

+                                                </block>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name="error-message" value="No vnf-name was received but ecomp-generated-naming is not Y" />

+                                                </set>

+                                                <block atomic='true'>

+                                                    <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="`$error-message`" />

+                                                    </return>

+                                                </block>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                    <switch test='`$db.vf-model.naming-policy`'>

+                                        <outcome value=''>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='generate-unique-name-input.action' value='ASSIGN' />

+                                                    <parameter name='generate-unique-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                    <parameter name='generate-unique-name-input.index-table-name' value='VNF_NAME_INDEX' />

+                                                    <parameter name='generate-unique-name-input.index-table-prefix-column' value='vnf_name_prefix' />

+                                                    <parameter name='generate-unique-name-input.name-table-type' value='VNF_INSTANCE' />

+                                                    <parameter name='generate-unique-name-input.prefix' value="`'z' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region + $db.vf-model.nf-code`" />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >

+                                                    <outcome value='failure'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />

+                                                            </set>

+                                                            <block atomic='true'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='success'>

+                                                        <set>

+                                                            <parameter name='tmp.vnf-name' value='`$generate-unique-name-output.generated-name`' />

+                                                        </set>

+                                                    </outcome>

+                                                </call>

+                                            </block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.vf-model.naming-policy`' />

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />

+                                                    <parameter name='naming-policy-generate-name-input.query-parameter' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >

+                                                    <outcome value='failure'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name="error-message" value="Unable to generate VNF name" />

+                                                            </set>

+                                                            <block atomic='true'>

+                                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                <return status='failure'>

+                                                                    <parameter name='ack-final' value='Y'/>

+                                                                    <parameter name="error-code" value="500" />

+                                                                    <parameter name="error-message" value="`$error-message`" />

+                                                                </return>

+                                                            </block>

+                                                        </block>

+                                                    </outcome>

+                                                    <outcome value='success'>

+                                                        <set>

+                                                            <parameter name='tmp.vnf-name' value='`$naming-policy-generate-name-output.vnf-name`' />

+                                                        </set>

+                                                    </outcome>

+                                                </call>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='tmp.vnf-name' value="`$vnf-topology-operation-input.vnf-information.vnf-name`" />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id'

+   value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name'

+   value='`$tmp.vnf-name`' />

+                        </set>

+                        <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'

+  value='`$db.vf-model.invariant-uuid`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid'

+  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'

+  value='`$db.vf-model.uuid`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid'

+  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'

+  value='`$db.vf-model.version`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-version'

+  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-version`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <switch test='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`'>

+                            <outcome value=''>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'

+  value='`$db.vf-model.name`' />

+                                </set>

+                            </outcome>

+                            <outcome value='Other'>

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-name'

+  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-name`' />

+                                </set>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'

+  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />

+                        </set>

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="cloud-region" 

+		key="cloud-region.cloud-owner = $prop.cloud-region.cloud-owner AND 

+		     cloud-region.cloud-region-id = $vnf-topology-operation-input.vnf-request-input.aic-cloud-region AND

+		     depth='all'"

+        pfx='aai.cloud-region' local-only='false' >

+                            <outcome value='not-found'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Cloud region not found in AAI" />

+                                    </set>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='failure'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Error retrieving cloud region from AAI" />

+                                    </set>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </get-resource>

+                        <for index='idx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >

+                            <switch test='`$aai.cloud-region.relationship-list.relationship[$idx].related-to`'>

+                                <outcome value='complex'>

+                                    <block atomic="true">

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>

+                                            <parameter name='ctx_memory_result_key' value='aai-uid-split' />

+                                            <parameter name='original_string' value='`$aai.cloud-region.relationship-list.relationship[$idx].related-link`' />

+                                            <parameter name='regex' value='/' />

+                                        </execute>

+                                        <set>

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-clli'

+  value='`$aai-uid-split[$aai-uid-split_length - 1]`' />

+                                        </set>

+                                        <break/>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.aic-clli`'>

+                            <outcome value=''>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="`'Unable to find aic-clli in AAI for aic-cloud-region ' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />

+                                    </set>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_TO_NETWORK_ROLE_MAPPING WHERE vf_customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'

+  pfx='db.vf-network-role-mapping[]'>

+                            <outcome value='failure'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Error reading VF_TO_NETWORK_ROLE_MAPPING table" />

+                                    </set>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <set>

+                                    <parameter name='db.vf-network-role-mapping_length' value='0' />

+                                </set>

+                            </outcome>

+                        </get-resource>

+                        <set>

+                            <parameter name='network-index' value='0' />

+                        </set>

+                        <for silentFailure='true' index='role-index' start='0' end='`$db.vf-network-role-mapping_length`'>

+                            <switch test='`$db.vf-network-role-mapping[$role-index].network-role`'>

+                                <outcome value=''>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='null'>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='NULL'>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='aai.l3-network.' value='' />

+                                        </set>

+                                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="l3-networks" 

+		key="l3-network.network-role = $db.vf-network-role-mapping[$role-index].network-role"

+        pfx='aai.l3-network' local-only='false'

+>

+                                            <outcome value='not-found'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name="error-message" value="`'Unable to find l3-network in AAI for network role ' + $db.vf-network-role-mapping[$role-index].network-role`" />

+                                                    </set>

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                        </set>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`$error-message`" />

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='failure'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name="error-message" value="Error retrieving l3-network from AAI" />

+                                                    </set>

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                        </set>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`$error-message`" />

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                        </get-resource>

+                                        <set>

+                                            <parameter name='l3-network-id' value='-1' />

+                                        </set>

+                                        <block>

+                                            <set>

+                                                <parameter name='found-network' value='false' />

+                                            </set>

+                                            <for index='db-network-index' start='0' end='`$aai.l3-network.l3-network_length`' >

+                                                <block atomic="true">

+                                                    <switch test='`$aai.l3-network.l3-network[$db-network-index].orchestration-status`'>

+                                                        <outcome value='PendingCreate'>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Pending Create'>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='PendingDelete'>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Pending Delete'>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <for silentFailure='true' index='db-rel-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship_length`' >

+                                                                <block atomic="true">

+                                                                    <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].related-to`'>

+                                                                        <outcome value='service-instance'>

+                                                                            <for silentFailure='true' index='db-data-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data_length`' >

+                                                                                <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-key`'>

+                                                                                    <outcome value='service-instance.service-instance-id'>

+                                                                                        <set>

+                                                                                            <parameter name='network-service-instance-id'

+  value='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-value`' />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </for>

+                                                                        </outcome>

+                                                                        <outcome value='cloud-region'>

+                                                                            <for silentFailure='true' index='db-data-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data_length`' >

+                                                                                <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-key`'>

+                                                                                    <outcome value='cloud-region.cloud-region-id'>

+                                                                                        <switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-value == $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`'>

+                                                                                            <outcome value='true'>

+                                                                                                <block atomic="true">

+                                                                                                    <set>

+                                                                                                        <parameter name='l3-network-id' value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />

+                                                                                                    </set>

+                                                                                                    <set>

+                                                                                                        <parameter name='found-network' value='true' />

+                                                                                                    </set>

+                                                                                                    <break/>

+                                                                                                </block>

+                                                                                            </outcome>

+                                                                                        </switch>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </for>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                    <switch test='`$found-network`'>

+                                                                        <outcome value='true'>

+                                                                            <break/>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                            </for>

+                                                        </outcome>

+                                                    </switch>

+                                                    <switch test='`$found-network`'>

+                                                        <outcome value='true'>

+                                                            <break/>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </for>

+                                        </block>

+                                        <switch test='`$l3-network-id`'>

+                                            <outcome value='-1'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name="error-message" value="`'Unable to find l3-network in AAI for network role ' + $db.vf-network-role-mapping[$role-index].network-role`" />

+                                                    </set>

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                        </set>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`$error-message`" />

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <set>

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-role'

+    value='`$db.vf-network-role-mapping[$role-index].network-role`' />

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-name'

+    value='`$aai.l3-network.l3-network[$db-network-index].network-name`' />

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].neutron-id'

+    value='`$aai.l3-network.l3-network[$db-network-index].neutron-network-id`' />

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].network-id'

+    value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />

+                                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].contrail-network-fqdn'

+    value='`$aai.l3-network.l3-network[$db-network-index].contrail-network-fqdn`' />

+                                        </set>

+                                        <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet_length`'>

+                                            <outcome value=''>

+                                                <set>

+                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data_length'

+   value='0' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='0'>

+                                                <set>

+                                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data_length'

+   value='0' />

+                                                </set>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <block>

+                                                    <for index='subnet-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet_length`' >

+                                                        <block>

+                                                            <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role`'>

+                                                                <outcome value=''>

+                                                                    <set>

+                                                                        <parameter name='aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role' value='NONE' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                            <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].ip-version`'>

+                                                                <outcome value='4'>

+                                                                    <set>

+                                                                        <parameter name='tmp.ip-version' value='ipv4' />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='6'>

+                                                                    <set>

+                                                                        <parameter name='tmp.ip-version' value='ipv6' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                            <set>

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].ip-version'

+   value='`$tmp.ip-version`' />

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].subnet-id'

+   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].neutron-subnet-id`' />

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].sdnc-subnet-id'

+   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-id`' />

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].subnet-role'

+   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-role`' />

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].subnet-name'

+   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].subnet-name`' />

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].network-start-address'

+   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].network-start-address`' />

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].gateway-address'

+   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].gateway-address`' />

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].cidr-mask'

+   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].cidr-mask`' />

+                                                            </set>

+                                                            <switch test='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet[$subnet-index].dhcp-enabled`'>

+                                                                <outcome value='true'>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].dhcp-enabled'

+   value='Y' />

+                                                                    </set>

+                                                                </outcome>

+                                                                <outcome value='false'>

+                                                                    <set>

+                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data[$subnet-index].dhcp-enabled'

+   value='N' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </for>

+                                                    <set>

+                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].subnets-data.subnet-data_length'

+   value='`$aai.l3-network.l3-network[$db-network-index].subnets.subnet_length`' />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VNF_RELATED_NETWORK_ROLE where vnf_customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid

+    and network_role = $db.vf-network-role-mapping[$role-index].network-role'

+  pfx='db.vnf-related-network-role[]'>

+                                            <outcome value='failure'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name="error-message" value="Error reading VNF_RELATED_NETWORK_ROLE table" />

+                                                    </set>

+                                                    <block atomic="true">

+                                                        <set>

+                                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                        </set>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="`$error-message`" />

+                                                        </return>

+                                                    </block>

+                                                </block>

+                                            </outcome>

+                                            <outcome value='success'>

+                                                <block atomic="true">

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                        <parameter name="source" value="`$prop.restapi.network-topology-identifier-structure`"/>

+                                                        <parameter name="outputPath" value="tmp.part"/>

+                                                        <parameter name="target" value="{service-instance-id}"/>

+                                                        <parameter name="replacement" value="`$network-service-instance-id`"/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                        <parameter name="source" value="`$tmp.part`"/>

+                                                        <parameter name="outputPath" value="tmp.ntis-url"/>

+                                                        <parameter name="target" value="{network-id}"/>

+                                                        <parameter name="replacement" value="`$l3-network-id`"/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ntis-url`' />

+                                                        <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                        <parameter name='format' value='json' />

+                                                        <parameter name='httpMethod' value='GET' />

+                                                        <parameter name="responsePrefix" value="mdsal-ntis" />

+                                                        <outcome value='failure'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name="error-message" value="`

+    'Error retrieving network-topology-identifier-structure for service instance '

+    + $network-service-instance-id

+    + ' and network-id '

+    + $l3-network-id`" />

+                                                                </set>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                    </set>

+                                                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                                    <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                    <return status='failure'>

+                                                                        <parameter name='ack-final' value='Y'/>

+                                                                        <parameter name="error-code" value="500" />

+                                                                        <parameter name="error-message" value="`$error-message`" />

+                                                                    </return>

+                                                                </block>

+                                                            </block>

+                                                        </outcome>

+                                                    </execute>

+                                                    <set>

+                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].is-trunked'

+    value='`$mdsal-ntis.network-topology-identifier-structure.is-trunked`' />

+                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].segmentation-id'

+    value='`$mdsal-ntis.network-topology-identifier-structure.segmentation-id`' />

+                                                    </set>

+                                                    <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource'"

+      force="true"

+      local-only="false"

+      pfx="tmp.AnAI-data.oe">

+                                                        <parameter name="start[0]" value="`'nodes/service-instances/service-instance?service-instance-id=' + $network-service-instance-id `" />

+                                                        <parameter name="start_length" value="1" />

+                                                        <parameter name="query" value="/query/owning-entity-fromService-instance" />

+                                                        <outcome value='failure'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name="error-message" value="Error getting owning entity from service instance" />

+                                                                </set>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                    </set>

+                                                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                                    <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                    <return status='failure'>

+                                                                        <parameter name='ack-final' value='Y'/>

+                                                                        <parameter name="error-code" value="500" />

+                                                                        <parameter name="error-message" value="`$error-message`" />

+                                                                    </return>

+                                                                </block>

+                                                            </block>

+                                                        </outcome>

+                                                        <outcome value='not-found'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name="error-message" value="Unable to find owning entity from service instance" />

+                                                                </set>

+                                                                <block atomic="true">

+                                                                    <set>

+                                                                        <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                                        <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                                        <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                    </set>

+                                                                    <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                                    <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                    <return status='failure'>

+                                                                        <parameter name='ack-final' value='Y'/>

+                                                                        <parameter name="error-code" value="500" />

+                                                                        <parameter name="error-message" value="`$error-message`" />

+                                                                    </return>

+                                                                </block>

+                                                            </block>

+                                                        </outcome>

+                                                    </save>

+                                                    <set>

+                                                        <parameter name='rn-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network_length`' />

+                                                    </set>

+                                                    <switch test='`$rn-index`'>

+                                                        <outcome value=''>

+                                                            <set>

+                                                                <parameter name='rn-index' value='0' />

+                                                            </set>

+                                                        </outcome>

+                                                    </switch>

+                                                    <for index='rel-network-role-index' start='0' end='`$db.vnf-related-network-role_length`' >

+                                                        <block atomic="true">

+                                                            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+      resource="custom-query"

+      key="format = 'resource'"

+      force="true"

+      local-only="false"

+      pfx="tmp.AnAI-data.get-networks">

+                                                                <parameter name="start[0]" value="`'/business/owning-entities/owning-entity/' + $tmp.AnAI-data.oe.results[0].owning-entity.owning-entity-id `" />

+                                                                <parameter name="start_length" value="1" />

+                                                                <parameter name="query" value="`'/query/getNetworks?networkRole=' + $db.vnf-related-network-role[$rel-network-role-index].related-network-role

+  + '&amp;cloudRegionId=' + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />

+                                                                <outcome value='failure'>

+                                                                    <block atomic="true">

+                                                                        <set>

+                                                                            <parameter name="error-message" value="Error calling getNetworks custom query in AAI" />

+                                                                        </set>

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                            </set>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                            <return status='failure'>

+                                                                                <parameter name='ack-final' value='Y'/>

+                                                                                <parameter name="error-code" value="500" />

+                                                                                <parameter name="error-message" value="`$error-message`" />

+                                                                            </return>

+                                                                        </block>

+                                                                    </block>

+                                                                </outcome>

+                                                                <outcome value='not-found'>

+                                                                    <block atomic="true">

+                                                                        <set>

+                                                                            <parameter name="error-message" value="`'No l3-network returned from getNetworks custom query for related network role '

+      + $db.vnf-related-network-role[0].related-network-role`" />

+                                                                        </set>

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                            </set>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                            <return status='failure'>

+                                                                                <parameter name='ack-final' value='Y'/>

+                                                                                <parameter name="error-code" value="500" />

+                                                                                <parameter name="error-message" value="`$error-message`" />

+                                                                            </return>

+                                                                        </block>

+                                                                    </block>

+                                                                </outcome>

+                                                            </save>

+                                                            <set>

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].network-id'

+  value='`$tmp.AnAI-data.get-networks.results[0].l3-network.network-id`' />

+                                                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].network-role'

+  value='`$tmp.AnAI-data.get-networks.results[0].l3-network.network-role`' />

+                                                            </set>

+                                                            <for index='rel-index' start='0' end='`$tmp.AnAI-data.get-networks.results[0].l3-network.relationship-list.relationship_length`' >

+                                                                <switch test='`$tmp.AnAI-data.get-networks.results[0].l3-network.relationship-list.relationship[$rel-index].related-to`'>

+                                                                    <outcome value='vlan-tag'>

+                                                                        <block atomic="true">

+                                                                            <set>

+                                                                                <parameter name='vlan-tag-id' value='`$tmp.AnAI-data.get-networks.results[0].l3-network.relationship-list.relationship[$rel-index].relationship-data[0].relationship-value`' />

+                                                                            </set>

+                                                                            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="vlan-tag" 

+		key="vlan-tag.vlan-tag-id = $vlan-tag-id"

+        pfx='aai.vlan-tag' local-only='false'

+>

+                                                                                <outcome value='failure'>

+                                                                                    <block atomic="true">

+                                                                                        <set>

+                                                                                            <parameter name="error-message" value="Error getting vlan-tag object from AAI" />

+                                                                                        </set>

+                                                                                        <block atomic="true">

+                                                                                            <set>

+                                                                                                <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                                                                <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                                                                <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                                                            </set>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                                                            <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                                                            <return status='failure'>

+                                                                                                <parameter name='ack-final' value='Y'/>

+                                                                                                <parameter name="error-code" value="500" />

+                                                                                                <parameter name="error-message" value="`$error-message`" />

+                                                                                            </return>

+                                                                                        </block>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                                <outcome value='success'>

+                                                                                    <set>

+                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.vlan-interface'

+  value='`$aai.vlan-tag.vlan-tag-id`' />

+                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.upper-tag-id'

+  value='`$aai.vlan-tag.vlan-id-outer`' />

+                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.lower-tag-id'

+  value='`$aai.vlan-tag.vlan-id-inner`' />

+                                                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network[$rn-index].vlan-tags.is-private'

+  value='`$aai.vlan-tag.is-private`' />

+                                                                                    </set>

+                                                                                </outcome>

+                                                                            </get-resource>

+                                                                            <break/>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </for>

+                                                        </block>

+                                                    </for>

+                                                    <set>

+                                                        <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$network-index].related-networks.related-network_length'

+  value='`$rn-index + 1`' />

+                                                    </set>

+                                                </block>

+                                            </outcome>

+                                        </get-resource>

+                                        <set>

+                                            <parameter name='network-index' value='`$network-index + 1`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                            <parameter name='filename' value='/var/tmp/bgb-vnfa.log' />

+                        </execute>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length'

+  value='`$network-index`' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-parameters-data.'

+  value='vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.' />

+                        </set>

+                        <switch test='`$aai.cloud-region.availability-zones.availability-zone_length`'>

+                            <outcome value=''>

+                                <switch test='`$db.vf-model.avail-zone-max-count &gt; 0`'>

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="`'No availability zones found in AAI for cloud region '

+       + $vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />

+                                            </set>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`$error-message`" />

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='false'>

+                                        <set>

+                                            <parameter name='aai.cloud-region.availability-zones.availability-zone_length' value='0' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                            </outcome>

+                        </switch>

+                        <for index='idx' start='0' end='`$aai.cloud-region.availability-zones.availability-zone_length`' >

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[$idx]'

+  value='`$aai.cloud-region.availability-zones.availability-zone[$idx].availability-zone-name`' />

+                                </set>

+                                <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="availability-zone" />

+                                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" />

+                                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.cloud-region.cloud-owner`" />

+                                    <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" />

+                                    <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$vnf-topology-operation-input.vnf-request-input.aic-cloud-region`" />

+                                    <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="availability-zone.availability-zone-name" />

+                                    <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$aai.cloud-region.availability-zones.availability-zone[$idx].availability-zone-name`" />

+                                    <outcome value='failure'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="Error updating generic-vnf in AAI" />

+                                            </set>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`$error-message`" />

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />

+                                            </set>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`$error-message`" />

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                </save>

+                            </block>

+                        </for>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.max-count'

+   value='`$db.vf-model.avail-zone-max-count`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone_length'

+   value='`$aai.cloud-region.availability-zones.availability-zone_length`' />

+                        </set>

+                        <for index='vnf-nw-index' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length`' >

+                            <block atomic="true">

+                                <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="l3-network" />

+                                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />

+                                    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[$vnf-nw-index].network-id`" />

+                                    <outcome value='failure'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="Error updating generic-vnf in AAI" />

+                                            </set>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`$error-message`" />

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />

+                                            </set>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`$error-message`" />

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                </save>

+                            </block>

+                        </for>

+                        <set>

+                            <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vnf-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/'

+ + $vnf-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+                        </set>

+                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="generic-vnf"

+   key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id"

+   force="true" pfx="tmp.AnAI-data">

+                            <parameter name="vnf-name" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name`" />

+                            <parameter name="prov-status" value="PREPROV" />

+                            <!-- <parameter name="operational-status" value="out-of-service-path" /> -->

+                            <parameter name="equipment-role" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role`" />

+                            <parameter name="model-invariant-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-invariant-uuid`" />

+                            <parameter name="model-version-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-uuid`" />

+                            <parameter name="model-customization-id" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid`" />

+                            <parameter name="in-maint" value="true" />

+                            <parameter name="selflink" value="`$vnf-object-path`" />

+                            <outcome value='failure'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Error updating selflink in generic-vnf in AAI" />

+                                    </set>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />

+                                    </set>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </update>

+                        <for silentFailure='true' index='inst-group-index' start='0' end='`$vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids_length`' >

+                            <block atomic="true">

+                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="generic-vnf:relationship-list"

+   key="generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-information.vnf-id"

+   force="true" pfx="tmp.AnAI-data">

+                                    <parameter name="relationship-list.relationship[0].related-to" value="instance-group" />

+                                    <parameter name="relationship-list.relationship[0].related-link"

+      value="`'/aai/v$/network/instance-groups/instance-group/'

+        + $vnf-topology-operation-input.vnf-request-input.vnf-network-instance-group-ids[$inst-group-index].vnf-network-instance-group-id`" />

+                                    <outcome value='failure'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="Error updating relationship in generic-vnf in AAI" />

+                                            </set>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`$error-message`" />

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='not-found'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name="error-message" value="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />

+                                            </set>

+                                            <block atomic="true">

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                                <return status='failure'>

+                                                    <parameter name='ack-final' value='Y'/>

+                                                    <parameter name="error-code" value="500" />

+                                                    <parameter name="error-message" value="`$error-message`" />

+                                                </return>

+                                            </block>

+                                        </block>

+                                    </outcome>

+                                </save>

+                            </block>

+                        </for>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingCreate' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+                        </set>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                            <parameter name="source" value="`$prop.restapi.vnf-assign`"/>

+                            <parameter name="outputPath" value="tmp.part"/>

+                            <parameter name="target" value="{service-instance-id}"/>

+                            <parameter name="replacement" value="`$service-data.service-topology.service-topology-identifier.service-instance-id`"/>

+                        </execute>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                            <parameter name="source" value="`$tmp.part`"/>

+                            <parameter name="outputPath" value="tmp.vnf.url"/>

+                            <parameter name="target" value="{vnf-id}"/>

+                            <parameter name="replacement" value="`$service-data.vnfs.vnf[$vnf-index].vnf-id`"/>

+                        </execute>

+                        <set>

+                            <parameter name='vnf-data.' value='service-data.vnfs.vnf[$vnf-index].vnf-data.' />

+                        </set>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + 'vnf-data-assign.json'`" />

+                            <parameter name='restapiUrl' value="`$prop.controller.url + $tmp.vnf.url`" />

+                            <parameter name='restapiUser' value='`$prop.controller.user`' />

+                            <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                            <parameter name='format' value='json' />

+                            <parameter name='httpMethod' value='PUT' />

+                            <parameter name="responsePrefix" value="vnf-assign" />

+                            <outcome value='failure'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Error doing PUT of vnf-data" />

+                                    </set>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name="error-message" value="Error doing PUT of vnf-data" />

+                                    </set>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                            <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                            <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`$error-message`" />

+                                        </return>

+                                    </block>

+                                </block>

+                            </outcome>

+                        </execute>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                            <parameter name='filename' value='/var/tmp/bgb-vnf.log' />

+                        </execute>

+                        <set>

+                            <parameter name="so.response-code" value="200" />

+                        </set>

+                        <call module='GENERIC-RESOURCE-API' rpc='send-so-response' mode='sync' ></call>

+                        <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>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-async.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-async.xml
new file mode 100644
index 0000000..69175f2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-async.xml
@@ -0,0 +1,28 @@
+<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='vnf-topology-operation-async' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='skip-mdsal-update' value='Y' />

+            </set>

+            <switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='assign'>

+                    <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-assign' mode='sync' ></call>

+                </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-changeassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-changeassign.xml
new file mode 100755
index 0000000..a45713f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-changeassign.xml
@@ -0,0 +1,132 @@
+<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='vnf-topology-operation-changeassign' mode='sync'>

+        <block atomic="true">

+            <switch test='`$vnf-topology-operation-input.request-information.request-action`'>

+                <outcome value='CreateVnfInstance'>

+                    <block></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="If svc-action is 'changeassign' then request-action must be 'CreateVnfInstance'" />

+                    </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="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 == $vnf-topology-operation-input.vnf-information.vnf-id`'>

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$vnf-index`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="'Could not find VNF ' + $vnf-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'" />

+                    </return>

+                </outcome>

+            </switch>

+            <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODEL WHERE customization_uuid = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'

+  pfx='db.vf-model'>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error reading VF_MODEL table" />

+                    </return>

+                </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="`'No model found for VNF customization UUID ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-forking-logic' mode='sync' ></call>

+            <switch test="`$ss.self-serve-flag`">

+                <outcome value='false'>

+                    <block atomic="true">

+                        <switch test='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`'>

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="vf-module-information.onap-model-information.model-customization-uuid is a required input" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid'

+  pfx='db.vf-model'>

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Error reading VF_MODEL table" />

+                                </return>

+                            </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="`'No model found for VNF customization UUID ' + $vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.'

+  value='`$vnf-topology-operation-input.vnf-information.onap-model-information.`' />

+                        </set>

+                        <set>

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                            <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+                        </set>

+                        <set>

+                            <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $service-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+                        </set>

+                        <return status='success'></return>

+                    </block>

+                </outcome>

+                <outcome value='true'>

+                    <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-changeassign' mode='sync' >

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='error-code' value='500' />

+                                <parameter name='error-message' value="`'Encountered error performing changeassign for self-serve resources with error: '+ $error-message`" />

+                            </return>

+                        </outcome>

+                        <outcome value='success'>

+                            <return status='success'>

+                                <parameter name="ack-final-indicator" value="Y" />

+                                <parameter name="error-code" value="200" />

+                                <parameter name="error-message" value="`$error-message`" />

+                            </return>

+                        </outcome>

+                    </call>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-deactivate.xml
new file mode 100755
index 0000000..7665486
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-deactivate.xml
@@ -0,0 +1,84 @@
+<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='vnf-topology-operation-deactivate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$vnf-topology-operation-input.request-information.request-action`'>

+                <outcome value='DeleteVnfInstance'>

+                    <block></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="If svc-action is 'deactivate' then request-action must be 'DeleteVnfInstance'" />

+                    </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="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 == $vnf-topology-operation-input.vnf-information.vnf-id`'>

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$vnf-index`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="'Could not find VNF ' + $vnf-topology-operation-input.vnf-information.vnf-id + ' in MD-SAL'" />

+                    </return>

+                </outcome>

+            </switch>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+   resource="generic-vnf"

+   key="generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id"

+   force="true" pfx="tmp.AnAI-data">

+                <parameter name="orchestration-status" value="PendingDelete" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error updating generic-vnf in AAI" />

+                    </return>

+                </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="`'No generic-vnf found in AAI for vnf ID ' + $service-data.vnfs.vnf[$vnf-index].vnf-id`" />

+                    </return>

+                </outcome>

+            </update>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-unassign.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-unassign.xml
new file mode 100644
index 0000000..32e922e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation-unassign.xml
@@ -0,0 +1,174 @@
+<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='vnf-topology-operation-unassign' mode='sync'>

+        <block atomic="true">

+            <switch test='`$vnf-topology-operation-input.request-information.request-action`'>

+                <outcome value='DeleteVnfInstance'>

+                    <block></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="If svc-action is 'deactivate' then request-action must be 'DeleteVnfInstance'" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='success'>

+                        <parameter name="ack-final-indicator" value="Y" />

+                        <parameter name="error-code" value="200" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <switch test='`$service-data.vnfs.vnf[$idx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`' >

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name='vnf-index' value='`$idx`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$vnf-index`'>

+                            <outcome value=''>

+                                <return status='success'>

+                                    <parameter name="ack-final-indicator" value="Y" />

+                                    <parameter name="error-code" value="200" />

+                                </return>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block atomic="true">

+                                    <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`">

+                                        <outcome value='0'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value=''>

+                                            <block></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="Cannot delete the VNF because there are VF modules defined" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODEL WHERE customization_uuid = $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid'

+  pfx='db.vf-model'>

+                                        <outcome value='failure'>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="Error reading VF_MODEL table"/>

+                                            </record>

+                                        </outcome>

+                                        <outcome value='not-found'>

+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                <parameter name="logger" value="message-log"/>

+                                                <parameter name="field1" value="`'No model found for VNF customization UUID ' + $service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-topology.onap-model-information.model-customization-uuid`"/>

+                                            </record>

+                                        </outcome>

+                                    </get-resource>

+                                    <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-forking-logic' mode='sync' ></call>

+                                    <switch test="`$ss.self-serve-flag`">

+                                        <outcome value='false'>

+                                            <block atomic="true">

+                                                <switch test='`$service-data.vnfs.vnf_length`'>

+                                                    <outcome value='1'>

+                                                        <set>

+                                                            <parameter name="service-data.vnfs." value=""/>

+                                                        </set>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <block atomic="true">

+                                                            <for index='idx' start='`$vnf-index + 1`' end='`$service-data.vnfs.vnf_length`' >

+                                                                <block>

+                                                                    <set>

+                                                                        <parameter name="$tmpidx" value="`$idx - 1`"/>

+                                                                    </set>

+                                                                    <set>

+                                                                        <parameter name="service-data.vnfs.vnf[$tmpidx]." value="" />

+                                                                    </set>

+                                                                    <set>

+                                                                        <parameter name="service-data.vnfs.vnf[$tmpidx]." value="$service-data.vnfs.vnf[$idx]." />

+                                                                    </set>

+                                                                </block>

+                                                            </for>

+                                                            <set>

+                                                                <parameter name="service-data.vnfs.vnf[$service-data.vnfs.vnf_length - 1]." value=""/>

+                                                            </set>

+                                                            <set>

+                                                                <parameter name="service-data.vnfs.vnf_length" value="`$service-data.vnfs.vnf_length - 1`"/>

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                                <set>

+                                                    <parameter name='naming-policy-generate-name-input.naming-type' value='VNF' />

+                                                    <parameter name='naming-policy-generate-name-input.context-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                                                    <parameter name='naming-policy-generate-name-input.action' value='DELETE' />

+                                                </set>

+                                                <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>

+                                                <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>

+                                        </outcome>

+                                        <outcome value='true'>

+                                            <call module='GENERIC-RESOURCE-API' rpc='self-serve-vnf-unassign' mode='sync' >

+                                                <outcome value='failure'>

+                                                    <return status='failure'>

+                                                        <parameter name='error-code' value='500' />

+                                                        <parameter name='error-message' value="`'Encountered error while unassigning self-serve resources with error: '+ $error-message`" />

+                                                    </return>

+                                                </outcome>

+                                                <outcome value='success'>

+                                                    <switch test='`$service-data.vnfs.vnf_length`'>

+                                                        <outcome value='1'>

+                                                            <set>

+                                                                <parameter name="service-data.vnfs." value=""/>

+                                                            </set>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <block atomic="true">

+                                                                <for index='idx' start='`$vnf-index + 1`' end='`$service-data.vnfs.vnf_length`' >

+                                                                    <block>

+                                                                        <set>

+                                                                            <parameter name="$tmpidx" value="`$idx - 1`"/>

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name="service-data.vnfs.vnf[$tmpidx]." value="" />

+                                                                        </set>

+                                                                        <set>

+                                                                            <parameter name="service-data.vnfs.vnf[$tmpidx]." value="$service-data.vnfs.vnf[$idx]." />

+                                                                        </set>

+                                                                    </block>

+                                                                </for>

+                                                                <set>

+                                                                    <parameter name="service-data.vnfs.vnf[$service-data.vnfs.vnf_length - 1]." value=""/>

+                                                                </set>

+                                                                <set>

+                                                                    <parameter name="service-data.vnfs.vnf_length" value="`$service-data.vnfs.vnf_length - 1`"/>

+                                                                </set>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                            </call>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation.xml
new file mode 100644
index 0000000..ecee104
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_vnf-topology-operation.xml
@@ -0,0 +1,148 @@
+<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='vnf-topology-operation' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-vnf-input' mode='sync' ></call>

+            <switch test='`$vnf-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='assign'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='skip-mdsal-update' value='Y' />

+                        </set>

+                        <set>

+                            <parameter name='ack-final' value='N' />

+                        </set>

+                    </block>

+                </outcome>

+                <outcome value='activate'>

+                    <block atomic="true">

+                        <switch test='`$vnf-topology-operation-input.request-information.request-action`'>

+                            <outcome value='ActivateSiteInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='site-vnf-topology-operation-activate' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='ActivateSDWANDeviceInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-device-activate' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='ActivateSDWANPortInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-wanport-activate' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='ActivateSDWANVpnInstance'>

+                                <block atomic="true">

+                                    <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-activate' mode='sync' ></call>

+                                </block>

+                            </outcome>

+                            <outcome value='ActivateSDWANSiteInstance'>

+                                <block atomic="true">

+                                    <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-activate' mode='sync' ></call>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-activate' mode='sync' ></call>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='deactivate'>

+                    <block atomic="true">

+                        <switch test='`$vnf-topology-operation-input.request-information.request-action`'>

+                            <outcome value='DeactivateSiteInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='site-vnf-topology-operation-deactivate' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='DeactivateSDWANDeviceInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-device-deactivate' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='DeactivateSDWANPortInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-wanport-deactivate' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='DeactivateSDWANVpnInstance'>

+                                <block atomic="true">

+                                    <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-deactivate' mode='sync' ></call>

+                                </block>

+                            </outcome>

+                            <outcome value='DeactivateSDWANSiteInstance'>

+                                <block atomic="true">

+                                    <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-deactivate' mode='sync' ></call>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-deactivate' mode='sync' ></call>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='unassign'>

+                    <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-unassign' mode='sync' ></call>

+                </outcome>

+                <outcome value='create'>

+                    <block atomic="true">

+                        <switch test='`$vnf-topology-operation-input.request-information.request-action`'>

+                            <outcome value='CreateSiteInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='site-vnf-topology-operation-create' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='CreateSDWANDeviceInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-device-create' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='CreateSDWANPortInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-wanport-create' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='CreateSDWANVpnInstance'>

+                                <block atomic="true">

+                                    <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-create' mode='sync' ></call>

+                                </block>

+                            </outcome>

+                            <outcome value='CreateSDWANSiteInstance'>

+                                <block atomic="true">

+                                    <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-create' mode='sync' ></call>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block></block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='delete'>

+                    <block atomic="true">

+                        <switch test='`$vnf-topology-operation-input.request-information.request-action`'>

+                            <outcome value='DeleteSiteInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='site-vnf-topology-operation-delete' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='DeleteSDWANDeviceInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-device-delete' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='DeleteSDWANPortInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vnf-topology-operation-wanport-delete' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='DeleteSDWANVpnInstance'>

+                                <block atomic="true">

+                                    <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-delete' mode='sync' ></call>

+                                </block>

+                            </outcome>

+                            <outcome value='DeleteSDWANSiteInstance'>

+                                <block atomic="true">

+                                    <call module='GENERIC-RESOURCE-API' rpc='vnf-topology-operation-vpn-site-resource-delete' mode='sync' ></call>

+                                </block>

+                            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_wan-connection-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_wan-connection-topology-operation-activate.xml
new file mode 100644
index 0000000..b11e740
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_wan-connection-topology-operation-activate.xml
@@ -0,0 +1,777 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<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="wan-connection-topology-operation-activate" mode="sync"> 
+    <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+      <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+      <parameter name="target" value="specification"/>  
+      <outcome value="true"> 
+        <return status="success"> 
+          <parameter name="ack-final-indicator" value="Y"/>  
+          <parameter name="error-code" value="200"/>  
+          <parameter name="error-message" value="`$error-message`"/> 
+        </return>
+      </outcome>
+      <outcome value="false"> 
+        <block atomic="true">
+          <block atomic="true">
+            <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>
+            <set> 
+              <parameter name="tmp.found-network-input" value="false"/>
+            </set>
+            <for index="pidx" start="0" end="`$service-data.networks.network_length`"> 
+              <switch test="`$service-data.networks.network[$pidx].network-data.network-information.onap-model-information.model-name == $network-topology-operation-input.network-information.onap-model-information.model-name`"> 
+                <outcome value="true"> 
+                  <set> 
+                    <parameter name="tmp.pidx" value="`$pidx`"/>  
+                    <parameter name="tmp.network." value="`$service-data.networks.network[$pidx].`"/>  
+                    <parameter name="tmp.network-input-parameters" value="`$service-data.networks.network[$pidx].network-data.network-request-input.network-input-parameters`"/>  
+                    <parameter name="tmp.found-network-input" value="true"/>
+                  </set>
+                </outcome>
+              </switch>
+            </for>
+          </block>
+          <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+            <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+            <parameter name="target" value="FC"/>  
+            <outcome value="true"> 
+              <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+                <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+                <parameter name="target" value="sotn"/>  
+                <outcome value="true"> 
+                  <block> 
+                    <block atomic="true">
+                      <set> 
+                        <parameter name="sotnFcPortListLength" value="0"/>
+                      </set>
+                      <for index="sIdx" start="0" end="`$service-data.networks.network_length`"> 
+                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+                          <parameter name="source" value="`$service-data.networks.network[$sIdx].network-data.network-information.onap-model-information.model-name`"/>  
+                          <parameter name="target" value="sotn"/>  
+                          <outcome value="true"> 
+                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+                              <parameter name="source" value="`$service-data.networks.network[$sIdx].network-data.network-information.onap-model-information.model-name`"/>  
+                              <parameter name="target" value="FcPort"/>  
+                              <outcome value="true"> 
+                                <block atomic="true">
+                                  <set> 
+                                    <parameter name="tmp.sotnFcPortList[`$sotnFcPortListLength`]" value="`$sIdx`"/>
+                                  </set>
+                                  <for index="paramIdx" start="0" end="`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param_length`"> 
+                                    <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+                                      <parameter name="source" value="`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paramIdx].name`"/>  
+                                      <parameter name="target" value="address"/>  
+                                      <outcome value="true"> 
+                                        <block atomic="true">
+                                          <set> 
+                                            <parameter name="sotnFcPortAddress" value="`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paramIdx].value`"/>
+                                          </set>
+                                          <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest"> 
+                                            <parameter name="restapiUrl" value="`$prop.oss.url + '/oss/inventory?location=' + $sotnFcPortAddress`"/>  
+                                            <parameter name="format" value="json"/>  
+                                            <parameter name="customHttpHeaders" value="X-FromAppId=MSO"/>  
+                                            <parameter name="httpMethod" value="GET"/>  
+                                            <parameter name="responsePrefix" value="temp.oss.accessTPs"/>  
+                                            <outcome value="success"> 
+                                              <switch test="`$temp.oss.accessTPs_length`"> 
+                                                <outcome value="Other"> 
+                                                  <block atomic="true">
+                                                    <switch test="`$temp.accessTPs_length`"> 
+                                                      <outcome value=""> 
+                                                        <set> 
+                                                          <parameter name="tp_length" value="0"/>
+                                                        </set>
+                                                      </outcome>
+                                                      <outcome value="Other"> 
+                                                        <set> 
+                                                          <parameter name="tp_length" value="`$temp.accessTPs_length`"/>
+                                                        </set>
+                                                      </outcome>
+                                                    </switch>
+                                                    <for index="idx" start="0" end="`$temp.oss.accessTPs_length`"> 
+                                                      <set> 
+                                                        <parameter name="`temp.accessTPs[$idx + $tp_length].`" value="`$temp.oss.accessTPs[$idx].`"/>
+                                                      </set>
+                                                    </for>
+                                                    <set> 
+                                                      <parameter name="temp.accessTPs_length" value="`$temp.accessTPs_length + $temp.oss.accessTPs_length`"/> 
+                                                    </set>
+                                                  </block>
+                                                </outcome>
+                                              </switch>
+                                            </outcome>
+                                          </execute>
+                                        </block>
+                                      </outcome>
+                                    </execute>
+                                  </for>
+                                </block>
+                              </outcome>
+                            </execute>
+                          </outcome>
+                        </execute>
+                      </for>
+                    </block>
+                    <switch test="`$temp.accessTPs_length &gt;= 2`"> 
+                      <outcome value="true"> 
+                        <block atomic="true">
+                          <set> 
+                            <parameter name="prop.connection-attachment.access-topology-id" value="`$temp.accessTPs[0].access-topology-id`"/>  
+                            <parameter name="prop.connection-attachment.access-client-id" value="`$temp.accessTPs[0].access-client-id`"/>  
+                            <parameter name="prop.connection-attachment.access-provider-id" value="`$temp.accessTPs[0].access-provider-id`"/>  
+                            <parameter name="prop.connection-attachment.access-node-id" value="`$temp.accessTPs[0].access-node-id`"/>  
+                            <parameter name="prop.connection-attachment.access-ltp-id" value="`$temp.accessTPs[0].access-ltp-id`"/>  
+                            <parameter name="prop.remote.connection-attachment.access-topology-id" value="`$temp.accessTPs[1].access-topology-id`"/>  
+                            <parameter name="prop.remote.connection-attachment.access-client-id" value="`$temp.accessTPs[1].access-client-id`"/>  
+                            <parameter name="prop.remote.connection-attachment.access-provider-id" value="`$temp.accessTPs[1].access-provider-id`"/>  
+                            <parameter name="prop.remote.connection-attachment.access-node-id" value="`$temp.accessTPs[1].access-node-id`"/>  
+                            <parameter name="prop.remote.connection-attachment.access-ltp-id" value="`$temp.accessTPs[1].access-ltp-id`"/>
+                          </set>
+                          <for index="paidx" start="0" end="`$tmp.network-input-parameters.param_length`">
+                            <block> 
+                              <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'name'`">
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="template.name" value="`$tmp.network-input-parameters.param[$paidx].value`"/> 
+                                  </set>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'service-type'`">
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="template.service-type" value="`$tmp.network-input-parameters.param[$paidx].value`"/> 
+                                  </set>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'total-size'`">
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="template.total-size" value="`$tmp.network-input-parameters.param[$paidx].value`"/> 
+                                  </set>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'pir'`">
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="template.pir" value="`$tmp.network-input-parameters.param[$paidx].value`"/> 
+                                  </set>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'cbs'`">
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="template.cbs" value="`$tmp.network-input-parameters.param[$paidx].value`"/> 
+                                  </set>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'pbs'`">
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="template.pbs" value="`$tmp.network-input-parameters.param[$paidx].value`"/> 
+                                  </set>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'couplingFlag'`">
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="template.couplingFlag" value="`$tmp.network-input-parameters.param[$paidx].value`"/> 
+                                  </set>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'colorAware'`">
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="template.colorAware" value="`$tmp.network-input-parameters.param[$paidx].value`"/> 
+                                  </set>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'route-objective-function'`">
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="template.route-objective-function" value="`$tmp.network-input-parameters.param[$paidx].value`"/> 
+                                  </set>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'diversity-policy'`">
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="template.diversity-policy" value="`$tmp.network-input-parameters.param[$paidx].value`"/> 
+                                  </set>
+                                </outcome>
+                              </switch>
+                            </block>
+                          </for>
+                          <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest"> 
+                            <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/' + $prop.restapi.oof-getpath.templatefile`"/>  
+                            <parameter name="restapiUrl" value="`$prop.restapi.connection-oof-url`"/>  
+                            <parameter name="restapiUser" value="`$prop.oof.user`"/>  
+                            <parameter name="restapiPassword" value="`$prop.oof.password`"/>  
+                            <parameter name="format" value="json"/>  
+                            <parameter name="httpMethod" value="post"/>  
+                            <parameter name="responsePrefix" value="oof"/>  
+                            <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.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"></outcome>
+                            <outcome value="success"> 
+                              <for index="vidx" start="0" end="`$oof.vpns_length`">
+                                <block atomic="true">
+                                  <set> 
+                                    <parameter name="oof.vpn." value="`$oof.vpns[$vidx].`"/>
+                                  </set>
+                                  <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="pnf" key="pnf.pnf-name = $oof.vpn.access-node-id    AND depth = '0'" pfx="tmp.aai.pnf" local-only="false"> 
+                                    <outcome value="success"> 
+                                      <set> 
+                                        <parameter name="tmp.thirdparty-sdnc-id" value="`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`"/> 
+                                      </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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-id`"/> 
+                                      </return>
+                                    </outcome>
+                                  </get-resource>
+                                  <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $tmp.thirdparty-sdnc-id 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 + '/sotn-api-ConnectivityService.json'`"/>  
+                                    <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ZTE-API-ConnectivityService:create-connectivity-service'`"/>  
+                                    <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="patch"/>  
+                                    <parameter name="responsePrefix" value="vpn-result"/>  
+                                    <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.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"/>
+                                    </outcome>
+                                  </execute>
+                                </block>
+                              </for>
+                            </outcome>
+                          </execute>
+                        </block>
+                      </outcome>
+                    </switch>
+                  </block>
+                </outcome>
+                <outcome value="false"> 
+                  <block atomic="true">
+                    <switch test="`$found-network-input`"> 
+                      <outcome value="false"> 
+                        <return status="failure"> 
+                          <parameter name="ack-final" value="Y"/>  
+                          <parameter name="error-code" value="404"/>  
+                          <parameter name="error-message" value="Error: Network input parameters not found"/> 
+                        </return>
+                      </outcome>
+                      <outcome value="true"> 
+                        <block atomic="true">
+                          <set> 
+                            <parameter name="tmp.restapiUrl-found" value="false"/>  
+                            <parameter name="tmp.restapiUser-found" value="false"/>  
+                            <parameter name="tmp.restapiPassword-found" value="false"/>  
+                            <parameter name="tmp.templateFileName-found" value="false"/>  
+                            <parameter name="tmp.thirdPartyAdaptorRpc-found" value="false"/>
+                          </set>
+                          <for index="cidx" start="0" end="`$tmp.network.network-data.network-topology.network-parameters.network-parameter_length`"> 
+                            <block> 
+                              <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartySdncId'`"> 
+                                <outcome value="true"> 
+                                  <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = `$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value` AND         depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false"> 
+                                    <outcome value="success"> 
+                                      <set> 
+                                        <parameter name="prop.thirdpartySdnc-found" value="true"/>  
+                                        <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"> 
+                                      <set> 
+                                        <parameter name="prop.thirdpartySdnc-found" value="false"/> 
+                                      </set>
+                                    </outcome>
+                                    <outcome value="Other"> 
+                                      <set> 
+                                        <parameter name="prop.thirdpartySdnc-found" value="false"/> 
+                                      </set>
+                                    </outcome>
+                                  </get-resource>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'templateFileName'`"> 
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="tmp.templateFileName" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>  
+                                    <parameter name="tmp.templateFileName-found" value="true"/>
+                                  </set>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUrl'`"> 
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="tmp.restapiUrl" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>  
+                                    <parameter name="tmp.restapiUrl-found" value="true"/>
+                                  </set>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartyAdaptorRpc'`"> 
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="tmp.thirdPartyAdaptorRpc" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>  
+                                    <parameter name="tmp.thirdPartyAdaptorRpc-found" value="true"/>
+                                  </set>
+                                </outcome>
+                              </switch>
+                            </block>
+                          </for>
+                          <switch test="`$tmp.thirdPartyAdaptorRpc-found == 'true'`"> 
+                            <outcome value="true"> 
+                              <call module="GENERIC-RESOURCE-API" rpc="`$tmp.thirdPartyAdaptorRpc`" mode="sync"> 
+                                <outcome value="success"> 
+                                  <block></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 calling ' + $tmp.thirdPartyAdaptorRpc`"/> 
+                                  </return>
+                                </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="`'Error calling ' + $tmp.thirdPartyAdaptorRpc`"/> 
+                                  </return>
+                                </outcome>
+                              </call>
+                            </outcome>
+                            <outcome value="false"> 
+                              <switch test="`$tmp.prop.thirdpartySdnc-found == 'true' and $tmp.templateFileName-found == 'true' and `$tmp.prop.restapiUrl-found == 'true'`"> 
+                                <outcome value="false"> 
+                                  <return status="failure"> 
+                                    <parameter name="ack-final" value="Y"/>  
+                                    <parameter name="error-code" value="404"/>  
+                                    <parameter name="error-message" value="Error: 3rd party controller restapiUrl not found"/> 
+                                  </return>
+                                </outcome>
+                                <outcome value="true"> 
+                                  <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest"> 
+                                    <parameter name="templateFileName" value="`$tmp.templateFileName`"/>  
+                                    <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + $tmp.restapiUrl`"/>  
+                                    <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="restApi-result"/>
+                                    <outcome value="success"> 
+                                      <block></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 calling ' + $tmp.restapiUrl`"/> 
+                                      </return>
+                                    </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="`'Error calling ' + $tmp.restapiUrl`"/> 
+                                      </return>
+                                    </outcome>
+                                  </execute>
+                                </outcome>
+                              </switch>
+                            </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>
+                </outcome>
+              </execute>
+            </outcome>
+            <outcome value="false"> 
+              <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+                <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+                <parameter name="target" value="FD"/>  
+                <outcome value="true"> 
+                  <block atomic="true">
+                    <switch test="`$found-network-input`"> 
+                      <outcome value="false"> 
+                        <return status="failure"> 
+                          <parameter name="ack-final" value="Y"/>  
+                          <parameter name="error-code" value="404"/>  
+                          <parameter name="error-message" value="Error: Network input parameters not found"/> 
+                        </return>
+                      </outcome>
+                      <outcome value="true"> 
+                        <block atomic="true">
+                          <set> 
+                            <parameter name="tmp.restapiUrl-found" value="false"/>  
+                            <parameter name="tmp.restapiUser-found" value="false"/>  
+                            <parameter name="tmp.restapiPassword-found" value="false"/>  
+                            <parameter name="tmp.templateFileName-found" value="false"/>  
+                            <parameter name="tmp.thirdPartyAdaptorRpc-found" value="false"/>
+                          </set>
+                          <for index="cidx" start="0" end="`$tmp.network.network-data.network-topology.network-parameters.network-parameter_length`"> 
+                            <block> 
+                              <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartySdncId'`"> 
+                                <outcome value="true"> 
+                                  <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = `$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value` AND         depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false"> 
+                                    <outcome value="success"> 
+                                      <set> 
+                                        <parameter name="prop.thirdpartySdnc-found" value="true"/>  
+                                        <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"> 
+                                      <set> 
+                                        <parameter name="prop.thirdpartySdnc-found" value="false"/> 
+                                      </set>
+                                    </outcome>
+                                    <outcome value="Other"> 
+                                      <set> 
+                                        <parameter name="prop.thirdpartySdnc-found" value="false"/> 
+                                      </set>
+                                    </outcome>
+                                  </get-resource>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'templateFileName'`"> 
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="tmp.templateFileName" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>  
+                                    <parameter name="tmp.templateFileName-found" value="true"/>
+                                  </set>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUrl'`"> 
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="tmp.restapiUrl" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>  
+                                    <parameter name="tmp.restapiUrl-found" value="true"/>
+                                  </set>
+                                </outcome>
+                              </switch>
+                              <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartyAdaptorRpc'`"> 
+                                <outcome value="true"> 
+                                  <set> 
+                                    <parameter name="tmp.thirdPartyAdaptorRpc" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>  
+                                    <parameter name="tmp.thirdPartyAdaptorRpc-found" value="true"/>
+                                  </set>
+                                </outcome>
+                              </switch>
+                            </block>
+                          </for>
+                          <switch test="`$tmp.thirdPartyAdaptorRpc-found == 'true'`"> 
+                            <outcome value="true"> 
+                              <call module="GENERIC-RESOURCE-API" rpc="`$tmp.thirdPartyAdaptorRpc`" mode="sync"> 
+                                <outcome value="success"> 
+                                  <block></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 calling ' + $tmp.thirdPartyAdaptorRpc`"/> 
+                                  </return>
+                                </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="`'Error calling ' + $tmp.thirdPartyAdaptorRpc`"/> 
+                                  </return>
+                                </outcome>
+                              </call>
+                            </outcome>
+                            <outcome value="false"> 
+                              <switch test="`$tmp.prop.thirdpartySdnc-found == 'true' and $tmp.templateFileName-found == 'true' and `$tmp.prop.restapiUrl-found == 'true'`"> 
+                                <outcome value="false"> 
+                                  <return status="failure"> 
+                                    <parameter name="ack-final" value="Y"/>  
+                                    <parameter name="error-code" value="404"/>  
+                                    <parameter name="error-message" value="Error: 3rd party controller restapiUrl not found"/> 
+                                  </return>
+                                </outcome>
+                                <outcome value="true"> 
+                                  <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest"> 
+                                    <parameter name="templateFileName" value="`$tmp.templateFileName`"/>  
+                                    <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + $tmp.restapiUrl`"/>  
+                                    <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="restApi-result"/>
+                                    <outcome value="success"> 
+                                      <block></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 calling ' + $tmp.restapiUrl`"/> 
+                                      </return>
+                                    </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="`'Error calling ' + $tmp.restapiUrl`"/> 
+                                      </return>
+                                    </outcome>
+                                  </execute>
+                                </outcome>
+                              </switch>
+                            </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>
+                </outcome>
+                <outcome value="false"> 
+                  <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+                    <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+                    <parameter name="target" value="FcPort"/>  
+                    <outcome value="true"> 
+                      <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+                        <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+                        <parameter name="target" value="sitewan"/>  
+                        <outcome value="true"> 
+                          <block atomic="true">
+                            <switch test="`$found-network-input`"> 
+                              <outcome value="false"> 
+                                <return status="failure"> 
+                                  <parameter name="ack-final" value="Y"/>  
+                                  <parameter name="error-code" value="404"/>  
+                                  <parameter name="error-message" value="Error: Network input parameters not found"/> 
+                                </return>
+                              </outcome>
+                              <outcome value="true"> 
+                                <block atomic="true">
+                                  <set> 
+                                    <parameter name="tmp.restapiUrl-found" value="false"/>  
+                                    <parameter name="tmp.restapiUser-found" value="false"/>  
+                                    <parameter name="tmp.restapiPassword-found" value="false"/>  
+                                    <parameter name="tmp.templateFileName-found" value="false"/>  
+                                    <parameter name="tmp.thirdPartyAdaptorRpc-found" value="false"/>
+                                  </set>
+                                  <for index="cidx" start="0" end="`$tmp.network.network-data.network-topology.network-parameters.network-parameter_length`"> 
+                                    <block> 
+                                      <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartySdncId'`"> 
+                                        <outcome value="true"> 
+                                          <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="esr-thirdparty-sdnc" key="esr-thirdparty-sdnc.thirdparty-sdnc-id = `$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value` AND         depth = '1'" pfx="tmp.aai.esr-thirdparty-sdnc" local-only="false"> 
+                                            <outcome value="success"> 
+                                              <set> 
+                                                <parameter name="prop.thirdpartySdnc-found" value="true"/>  
+                                                <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"> 
+                                              <set> 
+                                                <parameter name="prop.thirdpartySdnc-found" value="false"/> 
+                                              </set>
+                                            </outcome>
+                                            <outcome value="Other"> 
+                                              <set> 
+                                                <parameter name="prop.thirdpartySdnc-found" value="false"/> 
+                                              </set>
+                                            </outcome>
+                                          </get-resource>
+                                        </outcome>
+                                      </switch>
+                                      <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'templateFileName'`"> 
+                                        <outcome value="true"> 
+                                          <set> 
+                                            <parameter name="tmp.templateFileName" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>  
+                                            <parameter name="tmp.templateFileName-found" value="true"/>
+                                          </set>
+                                        </outcome>
+                                      </switch>
+                                      <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUrl'`"> 
+                                        <outcome value="true"> 
+                                          <set> 
+                                            <parameter name="tmp.restapiUrl" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>  
+                                            <parameter name="tmp.restapiUrl-found" value="true"/>
+                                          </set>
+                                        </outcome>
+                                      </switch>
+                                      <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartyAdaptorRpc'`"> 
+                                        <outcome value="true"> 
+                                          <set> 
+                                            <parameter name="tmp.thirdPartyAdaptorRpc" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>  
+                                            <parameter name="tmp.thirdPartyAdaptorRpc-found" value="true"/>
+                                          </set>
+                                        </outcome>
+                                      </switch>
+                                    </block>
+                                  </for>
+                                  <switch test="`$tmp.thirdPartyAdaptorRpc-found == 'true'`"> 
+                                    <outcome value="true"> 
+                                      <call module="GENERIC-RESOURCE-API" rpc="`$tmp.thirdPartyAdaptorRpc`" mode="sync"> 
+                                        <outcome value="success"> 
+                                          <block></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 calling ' + $tmp.thirdPartyAdaptorRpc`"/> 
+                                          </return>
+                                        </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="`'Error calling ' + $tmp.thirdPartyAdaptorRpc`"/> 
+                                          </return>
+                                        </outcome>
+                                      </call>
+                                    </outcome>
+                                    <outcome value="false"> 
+                                      <switch test="`$tmp.prop.thirdpartySdnc-found == 'true' and $tmp.templateFileName-found == 'true' and `$tmp.prop.restapiUrl-found == 'true'`"> 
+                                        <outcome value="false"> 
+                                          <return status="failure"> 
+                                            <parameter name="ack-final" value="Y"/>  
+                                            <parameter name="error-code" value="404"/>  
+                                            <parameter name="error-message" value="Error: 3rd party controller restapiUrl not found"/> 
+                                          </return>
+                                        </outcome>
+                                        <outcome value="true"> 
+                                          <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest"> 
+                                            <parameter name="templateFileName" value="`$tmp.templateFileName`"/>  
+                                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + $tmp.restapiUrl`"/>  
+                                            <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="restApi-result"/>
+                                            <outcome value="success"> 
+                                              <block></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 calling ' + $tmp.restapiUrl`"/> 
+                                              </return>
+                                            </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="`'Error calling ' + $tmp.restapiUrl`"/> 
+                                              </return>
+                                            </outcome>
+                                          </execute>
+                                        </outcome>
+                                      </switch>
+                                    </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>
+                        </outcome>
+                        <outcome value="false"> 
+                          <block> 
+                            <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>
+                        </outcome>
+                      </execute>
+                    </outcome>
+                    <outcome value="false"> 
+                      <block> 
+                        <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>
+                    </outcome>
+                  </execute>
+                </outcome>
+              </execute>
+            </outcome>
+          </execute>
+        </block>
+      </outcome>
+    </execute>
+  </method>
+</service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_wan-connection-topology-operation-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_wan-connection-topology-operation-create.xml
new file mode 100644
index 0000000..d3b24d4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_wan-connection-topology-operation-create.xml
@@ -0,0 +1,297 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<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="wan-connection-topology-operation-create" mode="sync"> 
+    <block atomic="true">
+      <switch test="`$network-topology-operation-input.network-information.network-id`"> 
+        <outcome value="">
+          <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID"> 
+            <parameter name="ctx-destination" value="network-topology-operation-input.network-information.network-id"/>  
+            <outcome value="failure"> 
+              <return status="failure"> 
+                <parameter name="error-code" value=""/>  
+                <parameter name="error-message" value="An error occured while generation allotted resource ID"/> 
+              </return>
+            </outcome>
+          </execute>
+        </outcome>
+        <outcome value="Other"></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>
+      <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+        <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+        <parameter name="target" value="specification"/>  
+        <outcome value="true"> 
+          <block atomic="true">
+            <switch test="`$service-data.networks.network_length`"> 
+              <outcome value=""> 
+                <set> 
+                  <parameter name="nidx" value="0"/>
+                </set>
+              </outcome>
+              <outcome value="Other"> 
+                <set> 
+                  <parameter name="nidx" value="`$service-data.networks.network_length`"/>
+                </set>
+              </outcome>
+            </switch>
+            <set> 
+              <parameter name="service-data.networks.network[$nidx].network-id" value="`$network-topology-operation-input.network-information.network-id`"/>  
+              <parameter name="service-data.networks.network[$nidx].network-data.sdnc-request-header." value="`$network-topology-operation-input.sdnc-request-header.`"/>  
+              <parameter name="service-data.networks.network[$nidx].network-data.request-information." value="`$network-topology-operation-input.request-information.`"/>  
+              <parameter name="service-data.networks.network[$nidx].network-data.service-information." value="`$network-topology-operation-input.service-information.`"/>  
+              <parameter name="service-data.networks.network[$nidx].network-data.network-information." value="`$network-topology-operation-input.network-information.`"/>  
+              <parameter name="service-data.networks.network[$nidx].network-data.network-request-input." value="`$network-topology-operation-input.network-request-input.`"/>  
+              <parameter name="service-data.networks.network_length" value="`$nidx+1`"/> 
+            </set>
+          </block>
+        </outcome>
+        <outcome value="false"> 
+          <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+            <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+            <parameter name="target" value="FC"/>  
+            <outcome value="true"> 
+              <block atomic="true">
+                <switch test="`$service-data.networks.network_length`"> 
+                  <outcome value=""> 
+                    <set> 
+                      <parameter name="nidx" value="0"/>  
+                      <parameter name="isExist" value="false"/>
+                    </set>
+                  </outcome>
+                  <outcome value="Other"> 
+                    <block> 
+                      <set> 
+                        <parameter name="nidx" value="`$service-data.networks.network_length`"/>  
+                        <parameter name="isExist" value="false"/>
+                      </set>
+                      <for index="idx" start="0" end="`$nidx`"> 
+                        <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome="true"> 
+                          <parameter name="source" value="`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`"/>  
+                          <parameter name="target" value="specification"/>  
+                          <outcome value="true"> 
+                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome="true"> 
+                              <parameter name="source" value="`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`"/>  
+                              <parameter name="target" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+                              <outcome value="true"> 
+                                <block atomic="true">
+                                  <set> 
+                                    <parameter name="nidx" value="`$idx`"/>  
+                                    <parameter name="isExist" value="true"/>
+                                  </set>
+                                  <switch test="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`"> 
+                                    <outcome value=""> 
+                                      <set> 
+                                        <parameter name="param_length" value="0"/>
+                                      </set>
+                                    </outcome>
+                                    <outcome value="Other"> 
+                                      <set> 
+                                        <parameter name="param_length" value="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`"/>
+                                      </set>
+                                    </outcome>
+                                  </switch>
+                                  <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`"> 
+                                    <outcome value=""> 
+                                      <set> 
+                                        <parameter name="input_param_length" value="0"/>
+                                      </set>
+                                    </outcome>
+                                    <outcome value="Other"> 
+                                      <set> 
+                                        <parameter name="input_param_length" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`"/>
+                                      </set>
+                                    </outcome>
+                                  </switch>
+                                  <for index="pidx" start="0" end="`$param_length`"> 
+                                    <set> 
+                                      <parameter name="network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx+$input_param_length]." value="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx].`"/>
+                                    </set>
+                                  </for>
+                                  <set> 
+                                    <parameter name="network-topology-operation-input.network-request-input.network-input-parameters.param_length" value="`$input_param_length + $param_length`"/> 
+                                  </set>
+                                </block>
+                              </outcome>
+                            </execute>
+                          </outcome>
+                        </execute>
+                      </for>
+                    </block>
+                  </outcome>
+                </switch>
+              </block>
+            </outcome>
+            <outcome value="false"> 
+              <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+                <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+                <parameter name="target" value="FD"/>  
+                <outcome value="true"> 
+                  <block atomic="true">
+                    <switch test="`$service-data.networks.network_length`"> 
+                      <outcome value=""> 
+                        <set> 
+                          <parameter name="nidx" value="0"/>  
+                          <parameter name="isExist" value="false"/>
+                        </set>
+                      </outcome>
+                      <outcome value="Other"> 
+                        <block> 
+                          <set> 
+                            <parameter name="nidx" value="`$service-data.networks.network_length`"/>  
+                            <parameter name="isExist" value="false"/>
+                          </set>
+                          <for index="idx" start="0" end="`$nidx`"> 
+                            <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome="true"> 
+                              <parameter name="source" value="`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`"/>  
+                              <parameter name="target" value="specification"/>  
+                              <outcome value="true"> 
+                                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome="true"> 
+                                  <parameter name="source" value="`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`"/>  
+                                  <parameter name="target" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+                                  <outcome value="true"> 
+                                    <block atomic="true">
+                                      <set> 
+                                        <parameter name="nidx" value="`$idx`"/>  
+                                        <parameter name="isExist" value="true"/>
+                                      </set>
+                                      <switch test="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`"> 
+                                        <outcome value=""> 
+                                          <set> 
+                                            <parameter name="param_length" value="0"/>
+                                          </set>
+                                        </outcome>
+                                        <outcome value="Other"> 
+                                          <set> 
+                                            <parameter name="param_length" value="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`"/>
+                                          </set>
+                                        </outcome>
+                                      </switch>
+                                      <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`"> 
+                                        <outcome value=""> 
+                                          <set> 
+                                            <parameter name="input_param_length" value="0"/>
+                                          </set>
+                                        </outcome>
+                                        <outcome value="Other"> 
+                                          <set> 
+                                            <parameter name="input_param_length" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`"/>
+                                          </set>
+                                        </outcome>
+                                      </switch>
+                                      <for index="pidx" start="0" end="`$param_length`"> 
+                                        <set> 
+                                          <parameter name="network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx+$input_param_length]." value="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx].`"/>
+                                        </set>
+                                      </for>
+                                      <set> 
+                                        <parameter name="network-topology-operation-input.network-request-input.network-input-parameters.param_length" value="`$input_param_length + $param_length`"/> 
+                                      </set>
+                                    </block>
+                                  </outcome>
+                                </execute>
+                              </outcome>
+                            </execute>
+                          </for>
+                        </block>
+                      </outcome>
+                    </switch>
+                  </block>
+                </outcome>
+                <outcome value="false"> 
+                  <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+                    <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+                    <parameter name="target" value="FcPort"/>  
+                    <outcome value="true"> 
+                      <block atomic="true">
+                        <switch test="`$service-data.networks.network_length`"> 
+                          <outcome value=""> 
+                            <set> 
+                              <parameter name="nidx" value="0"/>  
+                              <parameter name="isExist" value="false"/>
+                            </set>
+                          </outcome>
+                          <outcome value="Other"> 
+                            <block> 
+                              <set> 
+                                <parameter name="nidx" value="`$service-data.networks.network_length`"/>  
+                                <parameter name="isExist" value="false"/>
+                              </set>
+                              <for index="idx" start="0" end="`$nidx`"> 
+                                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome="true"> 
+                                  <parameter name="source" value="`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`"/>  
+                                  <parameter name="target" value="specification"/>  
+                                  <outcome value="true"> 
+                                    <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains" emitsOutcome="true"> 
+                                      <parameter name="source" value="`$service-data.networks.network[$idx].network-data.network-information.onap-model-information.model-name`"/>  
+                                      <parameter name="target" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+                                      <outcome value="true"> 
+                                        <block atomic="true">
+                                          <set> 
+                                            <parameter name="nidx" value="`$idx`"/>  
+                                            <parameter name="isExist" value="true"/>
+                                          </set>
+                                          <switch test="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`"> 
+                                            <outcome value=""> 
+                                              <set> 
+                                                <parameter name="param_length" value="0"/>
+                                              </set>
+                                            </outcome>
+                                            <outcome value="Other"> 
+                                              <set> 
+                                                <parameter name="param_length" value="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param_length`"/>
+                                              </set>
+                                            </outcome>
+                                          </switch>
+                                          <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`"> 
+                                            <outcome value=""> 
+                                              <set> 
+                                                <parameter name="input_param_length" value="0"/>
+                                              </set>
+                                            </outcome>
+                                            <outcome value="Other"> 
+                                              <set> 
+                                                <parameter name="input_param_length" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`"/>
+                                              </set>
+                                            </outcome>
+                                          </switch>
+                                          <for index="pidx" start="0" end="`$param_length`"> 
+                                            <set> 
+                                              <parameter name="network-topology-operation-input.network-request-input.network-input-parameters.param[$pidx+$input_param_length]." value="`$service-data.networks.network[$nidx].network-data.network-request-input.network-input-parameters.param[$pidx].`"/>
+                                            </set>
+                                          </for>
+                                          <set> 
+                                            <parameter name="network-topology-operation-input.network-request-input.network-input-parameters.param_length" value="`$input_param_length + $param_length`"/> 
+                                          </set>
+                                        </block>
+                                      </outcome>
+                                    </execute>
+                                  </outcome>
+                                </execute>
+                              </for>
+                            </block>
+                          </outcome>
+                        </switch>
+                      </block>
+                    </outcome>
+                    <outcome value="false"> 
+                      <block></block>
+                    </outcome>
+                  </execute>
+                </outcome>
+              </execute>
+            </outcome>
+          </execute>
+        </outcome>
+      </execute>
+      <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>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_wan-connection-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_wan-connection-topology-operation-deactivate.xml
new file mode 100644
index 0000000..592fb65
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_wan-connection-topology-operation-deactivate.xml
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<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="wan-connection-topology-operation-deactivate" mode="sync"> 
+    <block atomic="true">
+      <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>
+      <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="replace"> 
+        <parameter name="source" value="`$prop.network-provided-resource`"/>  
+        <parameter name="outputPath" value="tmp.services-url"/>  
+        <parameter name="target" value="{service-instance-id}"/>  
+        <parameter name="replacement" value="`$network-topology-operation-input.service-information.service-id`"/> 
+      </execute>
+      <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest"> 
+        <parameter name="restapiUrl" value="`$prop.controller.url + $tmp.services-url`"/>  
+        <parameter name="restapiUser" value="`$prop.controller.user`"/>  
+        <parameter name="restapiPassword" value="`$prop.controller.pwd`"/>  
+        <parameter name="format" value="json"/>  
+        <parameter name="httpMethod" value="GET"/>  
+        <parameter name="responsePrefix" value="mdsal-psd"/>  
+        <outcome value="success"> 
+          <block></block>
+        </outcome>
+        <outcome value="Other"> 
+          <return status="failure"> 
+            <parameter name="ack-final" value="Y"/>  
+            <parameter name="error-code" value="404"/>  
+            <parameter name="error-message" value="Error: Parent service data not available"/> 
+          </return>
+        </outcome>
+      </execute>
+      <set> 
+        <parameter name="tmp.found-network-input" value="false"/>
+      </set>
+      <for index="pidx" start="0" end="`$mdsal-psd.service-data.networks.network_length`"> 
+        <switch test="`$mdsal-psd.service-data.networks.network[$pidx].network-id == $network-topology-operation-input.network-information.network-id`"> 
+          <outcome value="true"> 
+            <block atomic="true">
+              <set> 
+                <parameter name="tmp.pidx" value="`$pidx`"/>  
+                <parameter name="tmp.network." value="`$mdsal-psd.service-data.networks.network[$pidx].`"/>  
+                <parameter name="tmp.network-input-parameters" value="`$mdsal-psd.service-data.networks.network[$pidx].network-data.network-request-input.network-input-parameters`"/>  
+                <parameter name="tmp.found-network-input" value="true"/>
+              </set>
+            </block>
+          </outcome>
+        </switch>
+      </for>
+      <switch test="`$found-network-input`"> 
+        <outcome value="false"> 
+          <return status="failure"> 
+            <parameter name="ack-final" value="Y"/>  
+            <parameter name="error-code" value="404"/>  
+            <parameter name="error-message" value="Error: Network input parameters not found"/> 
+          </return>
+        </outcome>
+        <outcome value="true"> 
+          <block atomic="true">
+            <set> 
+              <parameter name="tmp.restapiUrl-found" value="false"/>  
+              <parameter name="tmp.restapiUser-found" value="false"/>  
+              <parameter name="tmp.restapiPassword-found" value="false"/>  
+              <parameter name="tmp.thirdPartyAdaptorRpc-found" value="false"/>  
+              <parameter name="tmp.actualId-found" value="false"/>
+            </set>
+            <for index="cidx" start="0" end="`$tmp.network.network-data.network-topology.network-parameters.network-parameter_length`"> 
+              <block> 
+                <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUrl-deactivate'`"> 
+                  <outcome value="true"> 
+                    <set> 
+                      <parameter name="tmp.restapiUrl" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>  
+                      <parameter name="tmp.restapiUrl-found" value="true"/>
+                    </set>
+                  </outcome>
+                </switch>
+                <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiUser'`"> 
+                  <outcome value="true"> 
+                    <set> 
+                      <parameter name="tmp.restapiUser" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>  
+                      <parameter name="tmp.restapiUser-found" value="true"/>
+                    </set>
+                  </outcome>
+                </switch>
+                <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'restapiPassword'`"> 
+                  <outcome value="true"> 
+                    <set> 
+                      <parameter name="tmp.restapiPassword" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>  
+                      <parameter name="tmp.restapiPassword-found" value="true"/>
+                    </set>
+                  </outcome>
+                </switch>
+                <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'actualId'`"> 
+                  <outcome value="true"> 
+                    <set> 
+                      <parameter name="tmp.actualId" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>  
+                      <parameter name="tmp.actualId-found" value="true"/>
+                    </set>
+                  </outcome>
+                </switch>
+                <switch test="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-name == 'thirdPartyAdaptorRpc-deactivate'`"> 
+                  <outcome value="true"> 
+                    <set> 
+                      <parameter name="tmp.thirdPartyAdaptorRpc" value="`$tmp.network.network-data.network-topology.network-parameters.network-parameter[$cxid].network-parameter-value`"/>  
+                      <parameter name="tmp.thirdPartyAdaptorRpc-found" value="true"/>
+                    </set>
+                  </outcome>
+                </switch>
+              </block>
+            </for>
+            <switch test="`$tmp.thirdPartyAdaptorRpc-found == 'true'`"> 
+              <outcome value="true"> 
+                <call module="GENERIC-RESOURCE-API" rpc="`$tmp.thirdPartyAdaptorRpc`" mode="sync"> 
+                  <outcome value="success"> 
+                    <block></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 calling ' + $tmp.thirdPartyAdaptorRpc`"/> 
+                    </return>
+                  </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="`'Error calling ' + $tmp.thirdPartyAdaptorRpc`"/> 
+                    </return>
+                  </outcome>
+                </call>
+              </outcome>
+              <outcome value="false"> 
+                <switch test="`$tmp.restapiUrl-found == 'true'`"> 
+                  <outcome value="false"> 
+                    <return status="failure"> 
+                      <parameter name="ack-final" value="Y"/>  
+                      <parameter name="error-code" value="404"/>  
+                      <parameter name="error-message" value="Error: 3rd party controller restapiUrl not found"/> 
+                    </return>
+                  </outcome>
+                  <outcome value="true"> 
+                    <switch test="`$tmp.restapiUser-found == 'true'`"> 
+                      <outcome value="false"> 
+                        <return status="failure"> 
+                          <parameter name="ack-final" value="Y"/>  
+                          <parameter name="error-code" value="404"/>  
+                          <parameter name="error-message" value="Error: 3rd party controller restapiUser not found"/> 
+                        </return>
+                      </outcome>
+                      <outcome value="true"> 
+                        <switch test="`$tmp.restapiPassword-found == 'true'`"> 
+                          <outcome value="false"> 
+                            <return status="failure"> 
+                              <parameter name="ack-final" value="Y"/>  
+                              <parameter name="error-code" value="404"/>  
+                              <parameter name="error-message" value="Error: 3rd party controller restapiPassword not found"/> 
+                            </return>
+                          </outcome>
+                          <outcome value="true"> 
+                            <switch test="`$tmp.actualId-found == 'true'`"> 
+                              <outcome value="false"> 
+                                <return status="failure"> 
+                                  <parameter name="ack-final" value="Y"/>  
+                                  <parameter name="error-code" value="404"/>  
+                                  <parameter name="error-message" value="Error: Wan Connection actualId not found"/> 
+                                </return>
+                              </outcome>
+                              <outcome value="true"> 
+                                <execute plugin="org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode" method="sendRequest"> 
+                                  <parameter name="restapiUrl" value="`$tmp.restapiUrl + $tmp.actualId`"/>  
+                                  <parameter name="restapiUser" value="`$tmp.restapiUser`"/>  
+                                  <parameter name="restapiPassword" value="`$tmp.restapiPassword`"/>  
+                                  <parameter name="format" value="json"/>  
+                                  <parameter name="httpMethod" value="delete"/>
+                                  <outcome value="success"> 
+                                    <block></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 calling ' + $tmp.restapiUrl`"/> 
+                                    </return>
+                                  </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="`'Error calling ' + $tmp.restapiUrl`"/> 
+                                    </return>
+                                  </outcome>
+                                </execute>
+                              </outcome>
+                            </switch>
+                          </outcome>
+                        </switch>
+                      </outcome>
+                    </switch>
+                  </outcome>
+                </switch>
+              </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>
+  </method>
+</service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_wan-connection-topology-operation-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_wan-connection-topology-operation-delete.xml
new file mode 100644
index 0000000..9c24e52
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_wan-connection-topology-operation-delete.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<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="wan-connection-topology-operation-delete" mode="sync"> 
+    <block atomic="true">
+      <switch test="`$network-topology-operation-input.network-information.network-id`"> 
+        <outcome value="">
+          <return status="failure"> 
+            <parameter name="error-code" value=""/>  
+            <parameter name="error-message" value="An error occured while generation allotted resource ID"/> 
+          </return>
+        </outcome>
+        <outcome value="Other"></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>
+      <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+        <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+        <parameter name="target" value="FC"/>  
+        <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.log"/>  
+              <parameter name="field1" value="__TIMESTAMP__"/>  
+              <parameter name="field2" value="wan-connection-topology-operation-delete"/>  
+              <parameter name="field3" value="`$network-topology-operation-input.network-information.onap-model-information.model-name + ' delete'`"/> 
+            </record>
+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="connectivity" key="connectivity.connectivity-id = $network-topology-operation-input.network-information.network-id"></delete>
+            <set> 
+              <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`"/> 
+            </set>
+            <set> 
+              <parameter name="service-data.networks.network[$tmp.nidx]." value=""/> 
+            </set>
+            <set> 
+              <parameter name="networkId" value="`$network-topology-operation-input.network-information.network-id`"/>  
+              <parameter name="service-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/service-topology/'` "/>
+            </set>
+          </block>
+        </outcome>
+        <outcome value="false"> 
+          <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+            <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+            <parameter name="target" value="FD"/>  
+            <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.log"/>  
+                  <parameter name="field1" value="__TIMESTAMP__"/>  
+                  <parameter name="field2" value="wan-connection-topology-operation-delete"/>  
+                  <parameter name="field3" value="`$network-topology-operation-input.network-information.onap-model-information.model-name + ' delete'`"/> 
+                </record>
+                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="connectivity" key="connectivity.connectivity-id = $network-topology-operation-input.network-information.network-id"></delete>
+                <set> 
+                  <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`"/> 
+                </set>
+                <set> 
+                  <parameter name="service-data.networks.network[$tmp.nidx]." value=""/> 
+                </set>
+                <set> 
+                  <parameter name="networkId" value="`$network-topology-operation-input.network-information.network-id`"/>  
+                  <parameter name="service-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/service-topology/'` "/>
+                </set>
+              </block>
+            </outcome>
+            <outcome value="false"> 
+              <block></block>
+            </outcome>
+          </execute>
+        </outcome>
+      </execute>
+      <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>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/SUBNET-API_managed-network-notification.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/SUBNET-API_managed-network-notification.xml
new file mode 100755
index 0000000..1654a83
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/SUBNET-API_managed-network-notification.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='SUBNET-API' version='${project.version}'>
+    <method rpc='managed-network-notification' mode='sync'>
+        <block>
+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+                <parameter name="logger" value="message-log"/>
+                <parameter name="field1" value="__TIMESTAMP__"/>
+                <parameter name="field2" value="managed-network-notification"/>
+                <parameter name="field3" value="`$managed-network-notification-input.request-id`"/>
+                <parameter name="field4" value="`$managed-network-notification-input.managed-network-status.status.code`"/>
+                <parameter name="field5" value="`$managed-network-notification-input.managed-network-status.status.description`"/>
+                <parameter name="field6" value="`$managed-network-notification-input.managed-network-status.final-notification-indicator`"/>
+            </record>
+            <switch test="`$managed-network-notification-input.managed-network-status.status.code`">
+                <outcome value="Success">
+                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="activateSubnet">
+                        <outcome value="success">
+                            <block>
+                                <get-resource
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+        resource='SQL'
+        key="SELECT * FROM VPE_POOL where vpe_name = $eipam-ip-block.ptnii-name ;"
+        pfx='tmp.vpe-pool-row'></get-resource>
+                                <save 
+	plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' 
+	resource='SQL'
+	key="UPDATE EIPAM_IP_SUBNETS
+             SET status = 'ACTIVE' 
+             WHERE entity_id = $eipam-ip-block.entity-id ; "
+    force='true'
+        pfx='pfx.eipam-subnet-row'></save>
+                                <set>
+                                    <parameter name="eipam-ip-block.status" value="ACTIVE" />
+                                </set>
+                                <save plugin="org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource" resource="eipam-ip-block">
+                                    <parameter name="eipam-ip-block.status" value="ACTIVE" />
+                                </save>
+                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="generic-vnf" key="generic-vnf.vnf-id = $tmp.vpe-pool-row.vpe-id" pfx="vpe-after">
+                                    <parameter name="orchestration-status" value="Activated" />
+                                    <parameter name="prov-status" value="NVTPROV" />
+                                </update>
+                                <return status="success"></return>
+                            </block>
+                        </outcome>
+                        <outcome value="Other">
+                            <block>
+                                <save 
+	plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' 
+	resource='SQL'
+	key="UPDATE EIPAM_IP_SUBNETS
+             SET status = 'ACTIVATE_ERROR' 
+             WHERE entity_id = $eipam-ip-block.entity-id ; "
+    force='true'
+        pfx='pfx.eipam-subnet-row'></save>
+                                <set>
+                                    <parameter name="eipam-ip-block.status" value="ERROR" />
+                                </set>
+                                <save plugin="org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource" resource="eipam-ip-block">
+                                    <parameter name="eipam-ip-block.status" value="EIPAM_ACTIVATESUBNET_ERROR" />
+                                </save>
+                                <return status="failure">
+                                    <parameter name="error-code" value="3000" />
+                                    <parameter name="error-message" value="ActivateSubnet failure, need to manually activate in EIPAM" />
+                                </return>
+                            </block>
+                        </outcome>
+                    </execute>
+                </outcome>
+                <outcome value="Other">
+                    <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+                    <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deallocateSubnet">
+                        <outcome value="success">
+                            <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+                            <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePool">
+                                <outcome value="success">
+                                    <block>
+                                        <set>
+                                            <parameter name="eipam-ip-block.status" value="DELETED" />
+                                        </set>
+                                        <return status="failure">
+                                            <parameter name="error-code" value="2000" />
+                                            <parameter name="error-message" value="Failure from NCS and deleted pool/subnet in EIPAM"/>
+                                        </return>
+                                    </block>
+                                </outcome>
+                                <outcome value="Other">
+                                    <block>
+                                        <save 
+	plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' 
+	resource='SQL'
+	key="UPDATE EIPAM_IP_SUBNETS
+             SET status = 'DEALLOCATED' 
+             WHERE entity_id = $eipam-ip-block.entity-id ; "
+    force='true'
+        pfx='pfx.eipam-subnet-row'></save>
+                                        <set>
+                                            <parameter name="eipam-ip-block.status" value="ERROR" />
+                                        </set>
+                                        <save plugin="org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource" resource="eipam-ip-block">
+                                            <parameter name="eipam-ip-block.status" value="SDN_C_BACKOUT_ERROR" />
+                                        </save>
+                                        <return status="failure">
+                                            <parameter name="error-code" value="1000" />
+                                            <parameter name="error-message" value="Failure from NCS and deletePool failed in EIPAM, need to manually delete." />
+                                        </return>
+                                    </block>
+                                </outcome>
+                            </execute>
+                        </outcome>
+                        <outcome value="Other">
+                            <block>
+                                <save 
+	plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' 
+	resource='SQL'
+	key="UPDATE EIPAM_IP_SUBNETS
+             SET status = 'DEALLOCSUBNET_ERROR' 
+             WHERE entity_id = $eipam-ip-block.entity-id ; "
+    force='true'
+        pfx='pfx.eipam-subnet-row'></save>
+                                <set>
+                                    <parameter name="eipam-ip-block.status" value="ERROR" />
+                                </set>
+                                <save plugin="org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource" resource="eipam-ip-block">
+                                    <parameter name="eipam-ip-block.status" value="SDN_C_BACKOUT_ERROR" />
+                                </save>
+                                <return status="failure">
+                                    <parameter name="error-code" value="1000" />
+                                    <parameter name="error-message" value="Failure from NCS and deletePool failed in EIPAM, need to manually delete." />
+                                </return>
+                            </block>
+                        </outcome>
+                    </execute>
+                </outcome>
+            </switch>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/SUBNET-API_subnet-allocated-notification.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/SUBNET-API_subnet-allocated-notification.xml
new file mode 100755
index 0000000..c1ed57c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/SUBNET-API_subnet-allocated-notification.xml
@@ -0,0 +1,626 @@
+<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='SUBNET-API' version='${project.version}'>
+    <method rpc='subnet-allocated-notification' mode='sync'>
+        <block>
+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+                <parameter name="logger" value="message-log"/>
+                <parameter name="field1" value="__TIMESTAMP__"/>
+                <parameter name="field2" value="subnet-allocated-notification"/>
+                <parameter name="field3" value="`$eipam-ip-block.request-id`"/>
+                <parameter name="field4" value="`$eipam-ip-block.entity-id`"/>
+                <parameter name="field5" value="`$eipam-ip-block.ptnii-name`"/>
+                <parameter name="field6" value="`$eipam-ip-block.ip-address`"/>
+                <parameter name="field7" value="`$eipam-ip-block.prefix-length`"/>
+                <parameter name="field8" value="`$eipam-ip-block.status`"/>
+                <parameter name="field9" value="`$tmp.key-value`"/>
+            </record>
+            <!--Need to know which ipv version to get the plan name from the network-model.-->
+            <switch test="`$eipam-ip-block.ptnii-name`">
+                <!--If there's ptnii-name, then it's Gamma service-->
+                <outcome value='Other'>
+                    <block>
+                        <configure adaptor="com.att.sdnctl.sli.adaptor.ncs.ncsAdaptor" key="SNIIR" activate="true">
+                            <parameter name="input.request-id" value="`$eipam-ip-block.request-id`" />
+                            <parameter name="input.source" value="SDNC" />
+                            <parameter name="input.ptnii-name" value="`$eipam-ip-block.ptnii-name`" />
+                            <parameter name="input.ip-address" value="`$eipam-ip-block.ip-address`" />
+                            <parameter name="input.mask" value="`$eipam-ip-block.prefix-length`" />
+                            <outcome value="success">
+                                <block>
+                                    <save 
+	plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' 
+	resource='SQL'
+	key="UPDATE EIPAM_IP_SUBNETS
+             SET status = 'PENDING-ACTIVE'
+             WHERE entity_id = $eipam-ip-block.entity-id ; "
+    force='true'
+        pfx='pfx.eipam-subnet-row'></save>
+                                    <set>
+                                        <parameter name="eipam-ip-block.status" value="PENDING-ACTIVE" />
+                                    </set>
+                                    <save plugin="org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource" resource="eipam-ip-block">
+                                        <parameter name="eipam-ip-block.status" value="PENDING-ACTIVE" />
+                                    </save>
+                                    <return status="success"></return>
+                                </block>
+                            </outcome>
+                            <outcome value="Other">
+                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="deletePool">
+                                    <outcome value="success">
+                                        <block>
+                                            <set>
+                                                <parameter name="eipam-ip-block.status" value="DELETED" />
+                                            </set>
+                                            <return status="failure">
+                                                <parameter name="error-code" value="1000" />
+                                                <parameter name="error-message" value="IpBlockInstall failure and deletePool deleted in EIPAM" />
+                                            </return>
+                                        </block>
+                                    </outcome>
+                                    <outcome value="Other">
+                                        <block>
+                                            <save 
+	plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' 
+	resource='SQL'
+	key="UPDATE EIPAM_IP_SUBNETS
+             SET 
+             status = 'ERROR',
+             dealloc_failure = 'deletePool failed in response to NCS_IP_SUBNET_INSTALL_ERROR'
+             WHERE entity_id = $eipam-ip-block.entity-id ; "
+    force='true'
+        pfx='pfx.eipam-subnet-row'></save>
+                                            <set>
+                                                <parameter name="eipam-ip-block.status" value="NCS_IP_SUBNET_INSTALL_ERROR" />
+                                            </set>
+                                            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="generic-vnf" key="generic-vnf.vnf-id = $tmp.vpe-pool.vpe-id" pfx="vpe-after">
+                                                <parameter name="operational-status" value="NCS_IP_SUBNET_INSTALL_ERROR" />
+                                                <parameter name="summary-status" value="`$aai-summary-status-message`" />
+                                                <parameter name="prov-status" value="PREPROV" />
+                                            </update>
+                                            <return status="failure">
+                                                <parameter name="error-code" value="1000" />
+                                                <parameter name="error-message" value="IpBlockInstall failure and deletePool failed in EIPAM, need to manually delete" />
+                                            </return>
+                                        </block>
+                                    </outcome>
+                                </execute>
+                            </outcome>
+                        </configure>
+                    </block>
+                </outcome>
+                <!--If no ptnii-name, check if VIPR or SRIOV-->
+                <outcome value=''>
+                    <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="startsWith" emitsOutcome='true' >
+                        <parameter name="source" value="`toUpperCase($eipam-ip-block.plan-name)`" />
+                        <parameter name="target" value="AIC_" />
+                        <outcome value='false'>
+                            <return status="failure">
+                                <parameter name="error-code" value="500" />
+                                <parameter name="error-message" value="Unknown Address Plan - not supported!" />
+                            </return>
+                        </outcome>
+                        <outcome value='true'>
+                            <block atomic='true'>
+                                <get-resource
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+        resource='SQL'
+        key="SELECT * FROM EIPAM_IP_POOLS where plan_name = $eipam-ip-block.plan-name and level = 2 and key_value = $tmp.level2-key-value ;"
+        pfx='tmp.eipam-pool-row'>
+                                    <outcome value='failure'>
+                                        <block atomic='true'>
+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+                                                <parameter name="logger" value="message-log"/>
+                                                <parameter name="field1" value="__TIMESTAMP__"/>
+                                                <parameter name="field2" value="subnet-allocated-notification"/>
+                                                <parameter name="field3" value="`$eipam-ip-block.request-id`"/>
+                                                <parameter name="field4" value="`$eipam-ip-block.entity-id`"/>
+                                                <parameter name="field5" value="`$eipam-ip-block.ptnii-name`"/>
+                                                <parameter name="field6" value="`$eipam-ip-block.ip-address`"/>
+                                                <parameter name="field7" value="`$eipam-ip-block.prefix-length`"/>
+                                                <parameter name="field8" value="`$eipam-ip-block.status`"/>
+                                                <parameter name="field9" value="Failed to find this record in DB!"/>
+                                            </record>
+                                            <return status="failure">
+                                                <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="Unknown EIPAM pool - not found in DB!" />
+                                            </return>
+                                        </block>
+                                    </outcome>
+                                    <outcome value="not-found">
+                                        <block atomic='true'>
+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+                                                <parameter name="logger" value="message-log"/>
+                                                <parameter name="field1" value="__TIMESTAMP__"/>
+                                                <parameter name="field2" value="subnet-allocated-notification"/>
+                                                <parameter name="field3" value="`$eipam-ip-block.request-id`"/>
+                                                <parameter name="field4" value="`$eipam-ip-block.entity-id`"/>
+                                                <parameter name="field5" value="`$eipam-ip-block.ptnii-name`"/>
+                                                <parameter name="field6" value="`$eipam-ip-block.ip-address`"/>
+                                                <parameter name="field7" value="`$eipam-ip-block.prefix-length`"/>
+                                                <parameter name="field8" value="`$eipam-ip-block.status`"/>
+                                                <parameter name="field9" value="This record is not found in DB!"/>
+                                            </record>
+                                            <return status="failure">
+                                                <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="Unknown EIPAM pool - not found in DB!" />
+                                            </return>
+                                        </block>
+                                    </outcome>
+                                </get-resource>
+                                <!--initial subnet should exists-->
+                                <get-resource
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+        resource='SQL'
+        key="SELECT * from EIPAM_IP_SUBNETS s, EIPAM_IP_SUBNET_KEYS k WHERE s.plan_name = $eipam-ip-block.plan-name and s.entity_id = k.entity_id and k.level = 2 and k.key_value = $tmp.level2-key-value and s.address_family = $tmp.version ; "
+        pfx='pfx.eipam-initial-subnet'>
+                                    <outcome value='failure'>
+                                        <return status="failure">
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="500"/>
+                                            <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed." />
+                                        </return>
+                                    </outcome>
+                                    <outcome value="not-found">
+                                        <return status="failure">
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="500"/>
+                                            <parameter name="error-message" value="Initial subnet not found, cannot auto extend." />
+                                        </return>
+                                    </outcome>
+                                </get-resource>
+                                <!--check if new subnet already exists, possibly from previous attempt.-->
+                                <get-resource
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+        resource='SQL'
+        key="SELECT * from EIPAM_IP_SUBNETS s WHERE s.plan_name = $eipam-ip-block.plan-name and s.entity_id = $eipam-ip-block.entity-id and s.ip_address = $eipam-ip-block.ip-address ; "
+        pfx='pfx.eipam-subnet-with-same-ip'>
+                                    <outcome value='failure'>
+                                        <return status="failure">
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="500"/>
+                                            <parameter name="error-message" value="Query to DB table EIPAM_IP_SUBNET_KEYS and EIPAM_IP_SUBNETS failed." />
+                                        </return>
+                                    </outcome>
+                                    <outcome value="not-found"></outcome>
+                                </get-resource>
+                                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="l3-network" 
+		key="l3-network.network-id = $pfx.eipam-initial-subnet.network-id" 
+		local-only="false" 
+		pfx="aai.l3-network">
+                                    <outcome value='not-found'>
+                                        <return status='failure'>
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="404" />
+                                            <parameter name="error-message" value="'l3-network with network-id=' + $pfx.eipam-initial-subnet.network-id + 'Not found in AnAI'" />
+                                        </return>
+                                    </outcome>
+                                    <outcome value='failure'>
+                                        <return status='failure'>
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="500" />
+                                            <parameter name="error-message" value="'Error retrieving l3-network with network-id=' + $pfx.eipam-initial-subnet.network-id + 'from AnAI'" />
+                                        </return>
+                                    </outcome>
+                                </get-resource>
+                                <set>
+                                    <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                </set>
+                                <save
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+        resource='SQL'
+        key="INSERT EIPAM_IP_SUBNETS
+             SET
+             entity_id = $eipam-ip-block.entity-id ,
+             service_type = $pfx.eipam-initial-subnet.service-type ,
+             ip_address = $eipam-ip-block.ip-prefix ,
+             prefix_length = $eipam-ip-block.mask ,
+             plan_name = $eipam-ip-block.plan-name ,
+             status = 'PENDING_ACTIVE' ,
+             pool_id = $pfx.eipam-initial-subnet.pool-id ,
+             address_family = $pfx.eipam-initial-subnet.address-family ,
+             network_id = $pfx.eipam-initial-subnet.network-id ; "
+    force='true'
+        pfx='pfx.eipam-new-subnet'>
+                                    <outcome value='failure'>
+                                        <return status="failure">
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="500"/>
+                                            <parameter name="error-message" value="Insert to DB table EIPAM_IP_SUBNETS failed." />
+                                        </return>
+                                    </outcome>
+                                    <outcome value='success'></outcome>
+                                </save>
+                                <save
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+        resource='SQL'
+        key="INSERT EIPAM_IP_SUBNET_KEYS
+             SET
+             entity_id = $eipam-ip-block.entity-id ,
+             key_name = $tmp.level1-key-name ,
+             key_value = $tmp.level1-key-value ,
+             level = 1 ; "
+    force='true'
+        pfx='pfx.eipam-subnet-level1'>
+                                    <outcome value='success'></outcome>
+                                    <outcome value='failure'>
+                                        <return status="failure">
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="500"/>
+                                            <parameter name="error-message" value="Insert to DB table EIPAM_IP_SUBNET_KEYS failed." />
+                                        </return>
+                                    </outcome>
+                                </save>
+                                <save
+        plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource'
+        resource='SQL'
+        key="INSERT EIPAM_IP_SUBNET_KEYS
+             SET
+             entity_id = $eipam-ip-block.entity-id ,
+             key_name = $tmp.level2-key-name ,
+             key_value = $tmp.level2-key-value ,
+             level = 2 ; "
+    force='true'
+        pfx='pfx.eipam-subnet-level2'>
+                                    <outcome value='success'></outcome>
+                                    <outcome value='failure'>
+                                        <return status="failure">
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="500"/>
+                                            <parameter name="error-message" value="Insert to DB table EIPAM_IP_SUBNET_KEYS failed." />
+                                        </return>
+                                    </outcome>
+                                </save>
+                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+                                    <parameter name="logger" value="message-log"/>
+                                    <parameter name="field1" value="__TIMESTAMP__"/>
+                                    <parameter name="field2" value="Added an entry for subnet-allocated-notification in EIPAM_IP_SUBNETS and EIPAM_IP_SUBNET_KEYS"/>
+                                    <parameter name="field3" value="`$eipam-ip-block.request-id`"/>
+                                    <parameter name="field4" value="`$eipam-ip-block.entity-id`"/>
+                                    <parameter name="field5" value="`$pfx.eipam-initial-subnet.network-id`"/>
+                                    <parameter name="field6" value="`$eipam-ip-block.ip-address`"/>
+                                    <parameter name="field7" value="`$eipam-ip-block.prefix-length`"/>
+                                    <parameter name="field8" value="`$eipam-ip-block.status`"/>
+                                    <parameter name="field9" value="`$tmp.key-value`"/>
+                                </record>
+                                <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="subnet" 
+		key="l3-network.network-id = $pfx.eipam-initial-subnet.network-id
+			AND subnet.subnet-id = $eipam-ip-block.entity-id"
+		local-only="false" 
+		pfx="tmp.aai-initial-subnet">
+                                    <outcome value='not-found'>
+                                        <return status='failure'>
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="404" />
+                                            <parameter name="error-message" value="'l3-network with network-id=' + $pfx.eipam-initial-subnet.network-id + ' And subnet-id=' + $eipam-ip-block.entity-id + ' is Not found in AnAI'" />
+                                        </return>
+                                    </outcome>
+                                    <outcome value='failure'>
+                                        <return status='failure'>
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="500" />
+                                            <parameter name="error-message" value="'Error retrieving l3-network with network-id=' + $pfx.eipam-initial-subnet.network-id + ' And subnet-id=' + $eipam-ip-block.entity-id  + ' from AnAI'" />
+                                        </return>
+                                    </outcome>
+                                </get-resource>
+                                <switch test='`$aai.l3-network.subnets.subnet_length`'>
+                                    <outcome value=''>
+                                        <return status='failure'>
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="404" />
+                                            <parameter name="error-message" value="'No subnets found in AAI for network-id=' + $pfx.eipam-initial-subnet.network-id" />
+                                        </return>
+                                    </outcome>
+                                    <outcome value='Other'>
+                                        <set>
+                                            <parameter name='tmp.l3-network.subnet.subnet-name' value="`$aai.l3-network.network-name + '_S' + $aai.l3-network.subnets.subnet_length`" />
+                                        </set>
+                                    </outcome>
+                                </switch>
+                                <execute plugin="com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool" method="getSubnetAddresses">
+                                    <parameter name="ipAddress" value="`$eipam-ip-block.ip-prefix`" />
+                                    <parameter name="ipVersion" value="`tmp.version`" />
+                                    <parameter name="subnet" value="`$eipam-ip-block.prefix-length`" />
+                                    <parameter name="ctxGateway" value="tmp.return.generate.gateway-address" />
+                                    <parameter name="ctxDhcpStart" value="tmp.return.generate.dhcp-start-address" />
+                                    <parameter name="ctxDhcpEnd" value="tmp.return.generate.dhcp-end-address" />
+                                    <outcome value='failure'>
+                                        <return status='failure'>
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name='ack-final' value='Y'/>
+                                            <parameter name="error-code" value="500" />
+                                            <parameter name="error-message" value="Failed to generate gateway addresses using IpAddressTools" />
+                                        </return>
+                                    </outcome>
+                                </execute>
+                                <switch test='`$tmp.aai-initial-subnet.dhcp-enabled`'>
+                                    <outcome value='Y'>
+                                        <block atomic="true">
+                                            <set>
+                                                <parameter name='tmp.l3-network.subnet.dhcp-enabled' value='true' />
+                                                <parameter name='tmp.l3-network.subnet.dhcp-start' value='`$tmp.return.generate.dhcp-start-address`' />
+                                                <parameter name='tmp.l3-network.subnet.dhcp-end' value='`$tmp.return.generate.dhcp-end-address`' />
+                                            </set>
+                                        </block>
+                                    </outcome>
+                                    <outcome value='N'>
+                                        <block atomic="true">
+                                            <set>
+                                                <parameter name='tmp.l3-network.subnet.dhcp-enabled' value='false' />
+                                                <parameter name='tmp.l3-network.subnet.dhcp-start' value='' />
+                                                <parameter name='tmp.l3-network.subnet.dhcp-end' value='' />
+                                            </set>
+                                        </block>
+                                    </outcome>
+                                </switch>
+                                <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="subnet" 
+		key="l3-network.network-id = $pfx.eipam-initial-subnet.network-id 
+			AND subnet.subnet-id = $eipam-ip-block.entity-id" >
+                                    <!-- Create l3-network object -->
+                                    <parameter name="network-id" value="`$pfx.eipam-initial-subnet.network-id`" />
+                                    <parameter name="subnet-id" value="`$eipam-ip-block.entity-id`" />
+                                    <parameter name="subnet-name" value="`$tmp.l3-network.subnet.subnet-name`" />
+                                    <parameter name="gateway-address" value="`$tmp.return.generate.gateway-address`" />
+                                    <parameter name="network-start-address" value="`$eipam-ip-block.ip-prefix`" />
+                                    <parameter name="cidr-mask" value="`$eipam-ip-block.prefix-length`" />
+                                    <parameter name="ip-version" value="`$tmp.version`" />
+                                    <parameter name="dhcp-start" value="`$tmp.l3-network.subnet.dhcp-start`" />
+                                    <parameter name="dhcp-end" value="`$tmp.l3-network.subnet.dhcp-end`" />
+                                    <parameter name="dhcp-enabled" value="`$tmp.l3-network.subnet.dhcp-enabled`" />
+                                    <parameter name="orchestration-status" value="PendingCreate" />
+                                    <outcome value='failure'>
+                                        <return status='failure'>
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="500" />
+                                            <parameter name="error-message" value="'Cannot save subnet with l3 network-id=' + $pfx.eipam-initial-subnet.network-id + ' And subnet-id=' + $eipam-ip-block.entity-id  + ' in AnAI'" />
+                                        </return>
+                                    </outcome>
+                                    <outcome value='not-found'></outcome>
+                                </save>
+                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+                                    <parameter name="logger" value="message-log"/>
+                                    <parameter name="field1" value="__TIMESTAMP__"/>
+                                    <parameter name="field2" value="Added a subnetin AAI"/>
+                                    <parameter name="field3" value="`$eipam-ip-block.request-id`"/>
+                                    <parameter name="field4" value="`$eipam-ip-block.entity-id`"/>
+                                    <parameter name="field5" value="`$pfx.eipam-initial-subnet.network-id`"/>
+                                    <parameter name="field6" value="`$eipam-ip-block.ip-address`"/>
+                                    <parameter name="field7" value="`$eipam-ip-block.prefix-length`"/>
+                                    <parameter name="field8" value="`$eipam-ip-block.status`"/>
+                                    <parameter name="field9" value="`$tmp.key-value`"/>
+                                </record>
+                                <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                                    <parameter name='api-name' value='subnet' />
+                                    <parameter name='api-action' value='add' />
+                                    <parameter name='resp-prefix' value='contrailResp' />
+                                    <parameter name='contrail-virtual-network-id' value='`$pfx.eipam-initial-subnet.network-id`' />
+                                    <parameter name='ip-prefix' value='`$eipam-ip-block.ip-prefix`' />
+                                    <parameter name='ip-prefix-len' value='`$eipam-ip-block.prefix-length`' />
+                                    <parameter name='dns-server-address' value='0.0.0.0' />
+                                    <parameter name='enable-dhcp' value='`$tmp.l3-network.subnet.dhcp-enabled`' />
+                                    <parameter name='default-gateway' value='`$tmp.return.generate.gateway-address`' />
+                                    <parameter name='subnet-name' value='`$tmp.l3-network.subnet.subnet-name`' />
+                                    <parameter name='start' value='`$tmp.l3-network.subnet.dhcp-start`' />
+                                    <parameter name='end' value='`$tmp.l3-network.subnet.dhcp-end`' />
+                                    <outcome value='success'>
+                                        <block></block>
+                                    </outcome>
+                                    <outcome value='failure'>
+                                        <block>
+                                            <set>
+                                                <parameter name="eipam-ip-block.status" value="ERROR" />
+                                            </set>
+                                            <save 
+	plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' 
+	resource='SQL'
+	key="UPDATE EIPAM_IP_SUBNETS
+             SET status = 'ERROR'
+             WHERE entity_id = $eipam-ip-block.entity-id ; "
+    force='true'
+        pfx='pfx.eipam-subnet-row'>
+                                                <outcome value='failure'>
+                                                    <return status="failure">
+                                                        <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                                        <parameter name="error-code" value="500"/>
+                                                        <parameter name="error-message" value="An error occured while updating subnet to ERROR in mysql." />
+                                                    </return>
+                                                </outcome>
+                                                <outcome value="not-found">
+                                                    <return status="failure">
+                                                        <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                                        <parameter name="error-code" value="500"/>
+                                                        <parameter name="error-message" value="An error occured while updating subnet to ERROR in mysql." />
+                                                    </return>
+                                                </outcome>
+                                            </save>
+                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="subnet" 
+	key="l3-network.network-id = $pfx.eipam-initial-subnet.network-id
+				AND subnet.subnet-id = $eipam-ip-block.entity-id"></delete>
+                                            <save plugin="org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource" resource="eipam-ip-block">
+                                                <parameter name="eipam-ip-block.status" value="ERROR" />
+                                            </save>
+                                            <return status='failure'>
+                                                <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="`'Failed to create subnet in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+                                            </return>
+                                        </block>
+                                    </outcome>
+                                </execute>
+                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+                                    <parameter name="logger" value="message-log"/>
+                                    <parameter name="field1" value="__TIMESTAMP__"/>
+                                    <parameter name="field2" value="Added a subnet in Contrail"/>
+                                    <parameter name="field3" value="`$eipam-ip-block.request-id`"/>
+                                    <parameter name="field4" value="`$eipam-ip-block.entity-id`"/>
+                                    <parameter name="field5" value="`$pfx.eipam-initial-subnet.network-id`"/>
+                                    <parameter name="field6" value="`$eipam-ip-block.ip-address`"/>
+                                    <parameter name="field7" value="`$eipam-ip-block.prefix-length`"/>
+                                    <parameter name="field8" value="`$eipam-ip-block.status`"/>
+                                    <parameter name="field9" value="`$tmp.key-value`"/>
+                                </record>
+                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="subnet" 
+		key="l3-network.network-id = $pfx.eipam-initial-subnet.network-id 
+			AND subnet.subnet-id = $eipam-ip-block.entity-id" >
+                                    <parameter name="orchestration-status" value="Created" />
+                                    <outcome value='not-found'></outcome>
+                                    <outcome value='failure'>
+                                        <block>
+                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+                                                <parameter name="logger" value="message-log"/>
+                                                <parameter name="field1" value="__TIMESTAMP__"/>
+                                                <parameter name="field2" value="Update status to Created failed in AAI"/>
+                                                <parameter name="field3" value="`$eipam-ip-block.request-id`"/>
+                                                <parameter name="field4" value="`$eipam-ip-block.entity-id`"/>
+                                                <parameter name="field5" value="`$pfx.eipam-initial-subnet.network-id`"/>
+                                                <parameter name="field6" value="`$eipam-ip-block.ip-address`"/>
+                                                <parameter name="field7" value="`$eipam-ip-block.prefix-length`"/>
+                                                <parameter name="field8" value="`$eipam-ip-block.status`"/>
+                                                <parameter name="field9" value="`$tmp.key-value`"/>
+                                            </record>
+                                            <save 
+	plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' 
+	resource='SQL'
+	key="UPDATE EIPAM_IP_SUBNETS
+             SET status = 'ERROR'
+             WHERE entity_id = $eipam-ip-block.entity-id ; "
+    force='true'
+        pfx='pfx.eipam-subnet-row'>
+                                                <outcome value='failure'>
+                                                    <return status="failure">
+                                                        <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                                        <parameter name="error-code" value="500"/>
+                                                        <parameter name="error-message" value="An error occured while updating subnet to ERROR in mysql." />
+                                                    </return>
+                                                </outcome>
+                                                <outcome value="not-found">
+                                                    <return status="failure">
+                                                        <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                                        <parameter name="error-code" value="500"/>
+                                                        <parameter name="error-message" value="An error occured while updating subnet to ERROR in mysql." />
+                                                    </return>
+                                                </outcome>
+                                            </save>
+                                            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="subnet" 
+	key="l3-network.network-id = $pfx.eipam-initial-subnet.network-id
+				AND subnet.subnet-id = $eipam-ip-block.entity-id"></delete>
+                                            <execute plugin='org.onap.ccsdk.sli.plugins.contrail.ContrailAdaptor' method='sendContrailRequest' emitsOutcome='true' >
+                                                <parameter name='api-name' value='subnet' />
+                                                <parameter name='api-action' value='delete' />
+                                                <parameter name='resp-prefix' value='contrailResp' />
+                                                <parameter name='contrail-virtual-network-id' value='`$pfx.eipam-initial-subnet.network-id`' />
+                                                <parameter name='ip-prefix' value='`$eipam-ip-block.ip-prefix`' />
+                                                <outcome value='failure'>
+                                                    <return status='failure'>
+                                                        <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                                        <parameter name="error-code" value="500" />
+                                                        <parameter name="error-message" value="`'Failed to delete subnet in Contrail. '+ $contrailResp.resp-code + ':' +$contrailResp.resp-message `" />
+                                                    </return>
+                                                </outcome>
+                                            </execute>
+                                            <set>
+                                                <parameter name="eipam-ip-block.status" value="ERROR" />
+                                            </set>
+                                            <return status='failure'>
+                                                <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="'Cannot save subnet status to Created with l3 network-id=' + $pfx.eipam-initial-subnet.network-id + ' And subnet-id=' + $eipam-ip-block.entity-id  + ' in AnAI'" />
+                                            </return>
+                                        </block>
+                                    </outcome>
+                                </update>
+                                <save 
+	plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' 
+	resource='SQL'
+	key="UPDATE EIPAM_IP_SUBNETS
+             SET status = 'CREATED'
+             WHERE entity_id = $eipam-ip-block.entity-id ; "
+    force='true'
+        pfx='pfx.eipam-subnet-row'>
+                                    <outcome value='failure'>
+                                        <return status="failure">
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="500"/>
+                                            <parameter name="error-message" value="An error occured while updating subnet to CREATED in mysql." />
+                                        </return>
+                                    </outcome>
+                                    <outcome value="not-found">
+                                        <return status="failure">
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="500"/>
+                                            <parameter name="error-message" value="An error occured while updating subnet to CREATED in mysql." />
+                                        </return>
+                                    </outcome>
+                                </save>
+                                <!--subnet and subnet_keys are deleted in the EIPAMPlugin-->
+                                <execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="activateSubnet">
+                                    <outcome value='failure'>
+                                        <return status="failure">
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="500"/>
+                                            <parameter name="error-message" value="An error occured while activating subnet in EIPAM." />
+                                        </return>
+                                    </outcome>
+                                </execute>
+                                <save 
+	plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' 
+	resource='SQL'
+	key="UPDATE EIPAM_IP_SUBNETS
+             SET status = 'ACTIVE'
+             WHERE entity_id = $eipam-ip-block.entity-id ; "
+    force='true'
+        pfx='pfx.eipam-subnet-row'>
+                                    <outcome value='failure'>
+                                        <return status="failure">
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="500"/>
+                                            <parameter name="error-message" value="An error occured while updating subnet to active in mysql." />
+                                        </return>
+                                    </outcome>
+                                    <outcome value="not-found">
+                                        <return status="failure">
+                                            <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                            <parameter name="error-code" value="500"/>
+                                            <parameter name="error-message" value="An error occured while updating subnet to active in mysql." />
+                                        </return>
+                                    </outcome>
+                                    <outcome value='success'></outcome>
+                                </save>
+                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+	resource="subnet" 
+		key="l3-network.network-id = $aai.l3-network.network-id 
+			AND subnet.subnet-id = $eipam-ip-block.entity-id" >
+                                    <parameter name="orchestration-status" value="Created" />
+                                    <outcome value='failure'>
+                                        <return status="failure">
+                                            <parameter name="error-code" value="500"/>
+                                            <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet." />
+                                        </return>
+                                    </outcome>
+                                    <outcome value="not-found">
+                                        <return status="failure">
+                                            <parameter name="error-code" value="500"/>
+                                            <parameter name="error-message" value="Failure updating orchestration-status in AAI for subnet.  Subnet not found." />
+                                        </return>
+                                    </outcome>
+                                </update>
+                                <return status="success">
+                                    <parameter name='eipam-ip-block.request-id' value="`$eipam-ip-block.entity-id + '-' + $aai.l3-network.contrail-network-fqdn`" />
+                                </return>
+                            </block>
+                        </outcome>
+                    </execute>
+                </outcome>
+            </switch>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-activate.xml
new file mode 100644
index 0000000..01db650
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-activate.xml
@@ -0,0 +1,501 @@
+<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-attachment-topology-operation-activate' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+                <parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/connection-attachment-topology/'` " />

+            </set>

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>

+                <parameter name="outputPath" value="tmp.ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block atomic="true">

+                        <switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>

+                            <outcome value='1'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='connection-attachment-ar.' value='$mdsal-ar.connection-attachment-allotted-resource[0].' />

+                                    </set>

+                                    <switch test='`$connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+                                        <outcome value='Created'>

+                                            <block></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="`'Existing connection-attachment-allotted-resource with order status of ' + $connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+                                        <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-ar.allotted-resource-status.rpc-action`' />

+                                        <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="Error: Connection attachment resource not exist" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="404" />

+                            <parameter name="error-message" value="Error: Connection attachment resource not exist" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <block atomic="true">

+                <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-saved-ar-param' mode='sync' ></call>

+            </block>

+            <set>

+                <parameter name='tmp.ar.parent-service-instance-id' value="`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>

+                <parameter name="outputPath" value="tmp.ar-url-psd"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-psd" />

+                <outcome value='success'>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="Error: Parent service data not available" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='prop.siteAttachements_length' value='0' />

+                <parameter name='prop.siteIds_length' value='0' />

+            </set>

+            <for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >

+                <block atomic="true">

+                    <set>

+                        <parameter name='prop.ar.provided-allotted-resource-id' value='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id`' />

+                    </set>

+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                        <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>

+                        <parameter name="outputPath" value="tmp.ar-url-connection"/>

+                        <parameter name="target" value="{allotted-resource-id}"/>

+                        <parameter name="replacement" value="`$prop.ar.provided-allotted-resource-id`"/>

+                    </execute>

+                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />

+                        <parameter name='restapiUser' value='`$prop.controller.user`' />

+                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                        <parameter name='format' value='json' />

+                        <parameter name='httpMethod' value='GET' />

+                        <parameter name="responsePrefix" value="mdsal-providedAr" />

+                        <outcome value='Other'>

+                            <block></block>

+                        </outcome>

+                        <outcome value='success'>

+                            <block atomic="true">

+                                <for index="aridx" start="0" end="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`">

+                                    <block atomic="true">

+                                        <switch test="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'role'`">

+                                            <outcome value='true'>

+                                                <set>

+                                                    <parameter name='prop.role' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'sdwanVpnName'`">

+                                            <outcome value='true'>

+                                                <set>

+                                                    <parameter name='prop.name' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </for>

+                                <set>

+                                    <parameter name='prop.ar-parent-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id`' />

+                                </set>

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                    <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>

+                                    <parameter name="outputPath" value="tmp.ar-url-connection"/>

+                                    <parameter name="target" value="{service-instance-id}"/>

+                                    <parameter name="replacement" value="`$prop.ar-parent-service-instance-id`"/>

+                                </execute>

+                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />

+                                    <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                    <parameter name='format' value='json' />

+                                    <parameter name='httpMethod' value='GET' />

+                                    <parameter name="responsePrefix" value="mdsal-parentsd" />

+                                    <outcome value='Other'>

+                                        <block></block>

+                                    </outcome>

+                                    <outcome value='success'>

+                                        <block atomic="true">

+                                            <for index='pnidx' start='0' end='`$mdsal-parentsd.service-data.networks.network_length`' >

+                                                <block atomic="true">

+                                                    <switch test="`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.request-information.request-action == ActivateSDWANConnectivityInstance`">

+                                                        <outcome value='true'>

+                                                            <block atomic="true">

+                                                                <for index="paramidx" start="0" end="`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param_length`">

+                                                                    <block atomic="true">

+                                                                        <switch test="`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'topology'`">

+                                                                            <outcome value='true'>

+                                                                                <set>

+                                                                                    <parameter name='prop.topology' value='`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />

+                                                                                </set>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                        <switch test="`$mdsal-psd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'vpn-id'`">

+                                                                            <outcome value='true'>

+                                                                                <set>

+                                                                                    <parameter name='prop.vpn1Id' value='`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />

+                                                                                </set>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                </for>

+                                                                <set>

+                                                                    <parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id`' />

+                                                                </set>

+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                    <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>

+                                                                    <parameter name="outputPath" value="tmp.ar-url-connection"/>

+                                                                    <parameter name="target" value="{service-instance-id}"/>

+                                                                    <parameter name="replacement" value="`$prop.ar-service-instance-id`"/>

+                                                                </execute>

+                                                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />

+                                                                    <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                                    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                                    <parameter name='format' value='json' />

+                                                                    <parameter name='httpMethod' value='GET' />

+                                                                    <parameter name="responsePrefix" value="mdsal-sd" />

+                                                                    <outcome value='Other'>

+                                                                        <block></block>

+                                                                    </outcome>

+                                                                    <outcome value='success'>

+                                                                        <block atomic="true">

+                                                                            <for index='arvidx' start='0' end='`$mdsal-sd.service-data.vnfs.vnf_length`' >

+                                                                                <block atomic="true">

+                                                                                    <switch test="`$mdsal-sd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`">

+                                                                                        <outcome value='true'>

+                                                                                            <block atomic="true">

+                                                                                                <set>

+                                                                                                    <parameter name='tmp.sitevidx' value='`$arvidx`' />

+                                                                                                </set>

+                                                                                                <for index="siteidx" start="0" end="`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">

+                                                                                                    <block atomic="true">

+                                                                                                        <switch test="`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`">

+                                                                                                            <outcome value='true'>

+                                                                                                                <block atomic="true">

+                                                                                                                    <set>

+                                                                                                                        <parameter name='prop.attach.siteId' value='`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].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>

+                                                                                            </block>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                            </for>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </execute>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </for>

+                                        </block>

+                                    </outcome>

+                                </execute>

+                            </block>

+                        </outcome>

+                    </execute>

+                </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>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="service-subscription" 

+        key= 'service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type 

+        AND customer.global-customer-id = $connection-attachment-topology-operation-input.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`'>

+                        <outcome value=''>

+                            <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>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name='prop.tenant-id' value='`$tmp.AnAI-data-tenant.temp-ub-sub-account-id`' />

+                            </set>

+                        </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>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/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>

+            <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>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-wanport-vnf-topology-operation-underlay' mode='sync' ></call>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-status.action' value="`$connection-attachment-topology-operation-input.request-information.request-action` " />

+                <parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value="connection-attachment-topology-operation" />

+                <parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value="`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$connection-attachment-topology-operation-input.request-information.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$connection-attachment-topology-operation-input.sdnc-request-header.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$connection-attachment-topology-operation-input.service-information.` " />

+            </set>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+                <parameter name="outputPath" value="tmp.current-time" />

+            </execute>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sdwan-attachment.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+                <parameter name='connection-attachment-object-path' value="`$tmp.ar.self-link`"/>

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $connection-attachment-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id"

+        pfx='pfx' local-only='false' force='false'>

+                <parameter name="description" value="`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`" />

+                <parameter name="selflink" value="`$tmp.ar.self-link`" />

+                <parameter name="model-invariant-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`" />

+                <parameter name="model-version-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`" />

+                <parameter name="operational-status" value="Active" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="AAI failed" />

+                    </return>

+                </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="AAI failed" />

+                    </return>

+                </outcome>

+            </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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-create.xml
new file mode 100644
index 0000000..2b20f06
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-create.xml
@@ -0,0 +1,285 @@
+<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-attachment-topology-operation-create' mode='sync'>

+        <block atomic="true">

+            <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`'>

+                <outcome value=''>

+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >

+                        <parameter name="ctx-destination" value="tmp.ar.allotted-resource-id"/>

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='error-code' value='' />

+                                <parameter name='error-message' value="An error occured while generation allotted resource ID" />

+                            </return>

+                        </outcome>

+                    </execute>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+                    </set>

+                </outcome>

+            </switch>

+            <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='tmp.ar.allotted-resource-type' value="SDWANAttachmentInstance" />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.ar.allotted-resource-type' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/connection-attachment-topology/'` " />

+            </set>

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>

+                <parameter name="outputPath" value="tmp.ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='failure'>

+                    <block></block>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true">

+                        <switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>

+                            <outcome value='1'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Error: Existing connection attachment allotted resource" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </execute>

+            <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='tmp.cidx' value="`0`" />

+                        <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value="1" />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='tmp.found-cidx' value="`false`" />

+                        </set>

+                        <for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >

+                            <switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">

+                                <outcome value='true'>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="Error updating md-sal for connection-attachment-allotted-resource as cosumed allotted resource already exists." />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$tmp.found-cidx`'>

+                            <outcome value='false'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value="`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type` " />

+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value="`$tmp.ar.self-link` " />

+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.parent-service-instance-id' value="`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.parent-provided-resource`"/>

+                <parameter name="outputPath" value="tmp.parent-ar-url"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.parent-ar-url`"/>

+                <parameter name="outputPath" value="tmp.parent-ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="parent" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+                <parameter name='connection-attachment-ar.allotted-resource-status.action' value="`$connection-attachment-topology-operation-input.request-information.request-action` " />

+                <parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value="connection-attachment-topology-operation" />

+                <parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value="`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$connection-attachment-topology-operation-input.request-information.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$connection-attachment-topology-operation-input.sdnc-request-header.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$connection-attachment-topology-operation-input.service-information.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$connection-attachment-topology-operation-input.allotted-resource-information.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.' value="`$connection-attachment-topology-operation-input.connection-attachment-request-input.` " />

+            </set>

+            <set>

+                <parameter name='connection-attachment-ar-identifiers.consuming-service-instance-id' value="`$connection-attachment-topology-operation-input.service-information.service-instance-id` " />

+                <parameter name='connection-attachment-ar-identifiers.parent-service-instance-id' value="`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />

+                <parameter name='connection-attachment-ar-identifiers.allotted-resource-type' value="`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type` " />

+                <parameter name='connection-attachment-ar-identifiers.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+            </set>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.' 

+value="`$connection-attachment-ar-identifiers.`" />

+            </set>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+                <parameter name="outputPath" value="tmp.current-time" />

+            </execute>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+            </set>

+            <block atomic="true">

+                <for index='i' start='0' end='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`' >

+                    <block atomic="true">

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                            <parameter name="original_string" value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$i].name`'/>

+                            <parameter name="regex" value="_"/>

+                            <parameter name="ctx_memory_result_key" value="param-prefix"/>

+                        </execute>

+                        <set>

+                            <parameter name="`connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$i].name`" value='`$param-prefix[$param-prefix_length -1]`'/>

+                        </set>

+                    </block>

+                </for>

+                <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-saved-ar-param' mode='sync' ></call>

+            </block>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sdwan-attachment.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+                <parameter name='connection-attachment-object-path' value="`$tmp.ar.self-link`"/>

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $connection-attachment-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id"

+        pfx='pfx' local-only='false' force='false'>

+                <parameter name="id" value="`$tmp.ar.allotted-resource-id`" />

+                <parameter name="role" value="`$prop.connection-attachment.role`" />

+                <parameter name="vpn-name" value="`$prop.connection-attachment.sdwanVpnName`" />

+                <parameter name="selflink" value="`$tmp.ar.self-link`" />

+                <parameter name="model-invariant-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`" />

+                <parameter name="model-version-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`" />

+                <parameter name="operational-status" value="Created" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="AAI failed" />

+                    </return>

+                </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="AAI failed" />

+                    </return>

+                </outcome>

+            </save>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:relationship-list" 

+		key="customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id" 

+      force="true" pfx="tmp.AnAI-data">

+                <parameter name="relationship-list.relationship[0].related-to" value="allotted-resource" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/business/customers/customer/' + $connection-attachment-topology-operation-input.service-information.global-customer-id + '/service-subscriptions/service-subscription/' + $connection-attachment-topology-operation-input.service-information.subscription-service-type + '/service-instances/service-instance/' + $connection-attachment-topology-operation-input.service-information.service-instance-id + '/allotted-resources/allotted-resource/' + $tmp.ar.allotted-resource-id`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="allotted-resource.id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.ar.allotted-resource-id`" />

+            </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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-deactivate.xml
new file mode 100644
index 0000000..6d67936
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-deactivate.xml
@@ -0,0 +1,541 @@
+<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-attachment-topology-operation-deactivate' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+                <parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/connection-attachment-topology/'` " />

+            </set>

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>

+                <parameter name="outputPath" value="tmp.ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block atomic="true">

+                        <switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>

+                            <outcome value='1'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='connection-attachment-ar.' value='$mdsal-ar.connection-attachment-allotted-resource[0].' />

+                                    </set>

+                                    <switch test='`$connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+                                        <outcome value='Active'>

+                                            <block></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="`'Existing connection-attachment-allotted-resource with order status of ' + $connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+                                        <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-ar.allotted-resource-status.rpc-action`' />

+                                        <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="Error: SOTN resource not found" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="404" />

+                            <parameter name="error-message" value="Error: SOTN resource not found" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <block atomic="true">

+                <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-saved-ar-param' mode='sync' ></call>

+            </block>

+            <set>

+                <parameter name='tmp.ar.parent-service-instance-id' value="`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>

+                <parameter name="outputPath" value="tmp.ar-url-psd"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-psd" />

+                <outcome value='success'>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="Error: SOTN resource not found" />

+                    </return>

+                </outcome>

+            </execute>

+            <for index='ntidx' start='0' end='`$mdsal-psd.service-data.networks.network_length`' >

+                <block atomic="true">

+                    <switch test="`$mdsal-psd.service-data.networks.network[$ntidx].network-data.request-information.request-action == 'ActivateSDWANConnectivityInstance'`">

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <for index="paramidx" start="0" end="`$mdsal-psd.service-data.networks.network[$ntidx].network-data.network-request-input.network-input-parameters.param_length`">

+                                    <block>

+                                        <switch test="`$mdsal-psd.service-data.networks.network[$ntidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'name'`">

+                                            <outcome value='true'>

+                                                <set>

+                                                    <parameter name='prop.name' value='`$mdsal-psd.service-data.networks.network[$ntidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$mdsal-psd.service-data.networks.network[$ntidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'topology'`">

+                                            <outcome value='true'>

+                                                <set>

+                                                    <parameter name='prop.topology' value='`$mdsal-psd.service-data.networks.network[$ntidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$mdsal-psd.service-data.networks.network[$ntidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'vpn-id'`">

+                                            <outcome value='true'>

+                                                <set>

+                                                    <parameter name='prop.vpn1Id' value='`$mdsal-psd.service-data.networks.network[$ntidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </for>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <set>

+                <parameter name='prop.siteAttachements_length' value='0' />

+                <parameter name='prop.siteIds_length' value='0' />

+            </set>

+            <for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >

+                <block atomic="true">

+                    <switch test="`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">

+                        <outcome value='false'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='prop.ar.provided-allotted-resource-id' value='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id`' />

+                                </set>

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                    <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>

+                                    <parameter name="outputPath" value="tmp.ar-url-connection"/>

+                                    <parameter name="target" value="{allotted-resource-id}"/>

+                                    <parameter name="replacement" value="`$prop.ar.provided-allotted-resource-id`"/>

+                                </execute>

+                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />

+                                    <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                    <parameter name='format' value='json' />

+                                    <parameter name='httpMethod' value='GET' />

+                                    <parameter name="responsePrefix" value="mdsal-providedAr" />

+                                    <outcome value='Other'>

+                                        <block></block>

+                                    </outcome>

+                                    <outcome value='success'>

+                                        <block atomic="true">

+                                            <for index="aridx" start="0" end="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`">

+                                                <block>

+                                                    <switch test="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'Role'`">

+                                                        <outcome value='true'>

+                                                            <set>

+                                                                <parameter name='prop.role' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />

+                                                            </set>

+                                                        </outcome>

+                                                    </switch>

+                                                    <switch test="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'sdwanVpnName'`">

+                                                        <outcome value='true'>

+                                                            <set>

+                                                                <parameter name='prop.name' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />

+                                                            </set>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </for>

+                                            <set>

+                                                <parameter name='prop.ar-parent-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id`' />

+                                            </set>

+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>

+                                                <parameter name="outputPath" value="tmp.ar-url-connection"/>

+                                                <parameter name="target" value="{service-instance-id}"/>

+                                                <parameter name="replacement" value="`$prop.ar-parent-service-instance-id`"/>

+                                            </execute>

+                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />

+                                                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                <parameter name='format' value='json' />

+                                                <parameter name='httpMethod' value='GET' />

+                                                <parameter name="responsePrefix" value="mdsal-parentsd" />

+                                                <outcome value='Other'>

+                                                    <block></block>

+                                                </outcome>

+                                                <outcome value='success'>

+                                                    <block atomic="true">

+                                                        <for index='pnidx' start='0' end='`$mdsal-parentsd.service-data.networks.network_length`' >

+                                                            <block atomic="true">

+                                                                <switch test="`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.request-information.request-action == 'ActivateSDWANConnectivityInstance'`">

+                                                                    <outcome value='true'>

+                                                                        <block atomic="true">

+                                                                            <for index="paramidx" start="0" end="`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param_length`">

+                                                                                <block>

+                                                                                    <switch test="`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'topology'`">

+                                                                                        <outcome value='true'>

+                                                                                            <set>

+                                                                                                <parameter name='prop.topology' value='`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                    <switch test="`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'vpn-id'`">

+                                                                                        <outcome value='true'>

+                                                                                            <set>

+                                                                                                <parameter name='prop.vpn1Id' value='`$mdsal-parentsd.service-data.networks.network[$pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                            </for>

+                                                                            <set>

+                                                                                <parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id`' />

+                                                                            </set>

+                                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                                <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>

+                                                                                <parameter name="outputPath" value="tmp.ar-url-connection"/>

+                                                                                <parameter name="target" value="{service-instance-id}"/>

+                                                                                <parameter name="replacement" value="`$prop.ar-service-instance-id`"/>

+                                                                            </execute>

+                                                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />

+                                                                                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                                                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                                                <parameter name='format' value='json' />

+                                                                                <parameter name='httpMethod' value='GET' />

+                                                                                <parameter name="responsePrefix" value="mdsal-sd" />

+                                                                                <outcome value='Other'>

+                                                                                    <block></block>

+                                                                                </outcome>

+                                                                                <outcome value='success'>

+                                                                                    <block atomic="true">

+                                                                                        <for index='arvidx' start='0' end='`$mdsal-sd.service-data.vnfs.vnf_length`' >

+                                                                                            <block atomic="true">

+                                                                                                <switch test="`$mdsal-sd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == ActivateSiteInstance`">

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic="true">

+                                                                                                            <set>

+                                                                                                                <parameter name='tmp.sitevidx' value='`$arvidx`' />

+                                                                                                            </set>

+                                                                                                            <for index="siteidx" start="0" end="`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">

+                                                                                                                <block atomic="true">

+                                                                                                                    <switch test="`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`">

+                                                                                                                        <outcome value='true'>

+                                                                                                                            <block atomic="true">

+                                                                                                                                <set>

+                                                                                                                                    <parameter name='prop.attach.siteId' value='`$mdsal-sd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].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>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </for>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </execute>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                        </for>

+                                                    </block>

+                                                </outcome>

+                                            </execute>

+                                        </block>

+                                    </outcome>

+                                </execute>

+                            </block>

+                        </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>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="service-subscription" 

+        key= 'service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type 

+        AND customer.global-customer-id = $connection-attachment-topology-operation-input.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`'>

+                        <outcome value=''>

+                            <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>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name='prop.tenant-id' value='`$tmp.AnAI-data-tenant.temp-ub-sub-account-id`' />

+                            </set>

+                        </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>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/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>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-wanport-vnf-topology-operation-underlay' mode='sync' ></call>

+            <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 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-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 rest api" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-status.action' value="`$connection-attachment-topology-operation-input.request-information.request-action` " />

+                <parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value="connection-attachment-topology-operation" />

+                <parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value="`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$connection-attachment-topology-operation-input.request-information.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$connection-attachment-topology-operation-input.sdnc-request-header.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$connection-attachment-topology-operation-input.service-information.` " />

+            </set>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+                <parameter name="outputPath" value="tmp.current-time" />

+            </execute>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sdwan-attachment.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+                <parameter name='connection-attachment-object-path' value="`$tmp.ar.self-link`"/>

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $connection-attachment-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id"

+        pfx='pfx' local-only='false' force='false'>

+                <parameter name="selflink" value="`$tmp.ar.self-link`" />

+                <parameter name="model-invariant-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`" />

+                <parameter name="model-version-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`" />

+                <parameter name="operational-status" value="PendingDelete" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="AAI failed" />

+                    </return>

+                </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="AAI failed" />

+                    </return>

+                </outcome>

+            </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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-delete.xml
new file mode 100644
index 0000000..9f9121c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-attachment-topology-operation-delete.xml
@@ -0,0 +1,189 @@
+<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-attachment-topology-operation-delete' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+                <parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/connection-attachment-topology/'` " />

+            </set>

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>

+                <parameter name="outputPath" value="tmp.ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='Delete' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Resource to be deleted doesn't exist in MDSAL." />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >

+                            <switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.cidx' value='`$cidx`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test="`$tmp.cidx`">

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="resource to be deleted is not available in mdsal" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx]." value="" />

+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.parent-service-instance-id' value="`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>

+                <parameter name="outputPath" value="tmp.ar-url-psd"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-psd" />

+                <outcome value='success'>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="Error: SOTN resource not found" />

+                    </return>

+                </outcome>

+            </execute>

+            <switch test='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Resource to be deleted doesn't exist in MDSAL." />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >

+                            <switch test="`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.pidx' value='`$pidx`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test="`$tmp.pidx`">

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="resource to be deleted is not available in mdsal" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value="`$prop.controller.url + $tmp.ar-url-psd + '/provided-allotted-resources/provided-allotted-resource/' + $tmp.ar.allotted-resource-id`" />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='DELETE' />

+                <parameter name="responsePrefix" value="mdsal-psd-delete" />

+            </execute>

+            <set>

+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+                <parameter name='connection-attachment-object-path' value="`$tmp.ar.self-link`"/>

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $connection-attachment-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='allotted-resource'  

+		key="customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id">

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="AAI failed" />

+                    </return>

+                </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="AAI failed" />

+                    </return>

+                </outcome>

+            </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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-bandwidth-policy-change.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-bandwidth-policy-change.xml
new file mode 100644
index 0000000..3774e0c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-bandwidth-policy-change.xml
@@ -0,0 +1,398 @@
+<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-bandwidth-policy-change' 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="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'>

+                    <set>

+                        <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                    </set>

+                </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='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-data.request-information.request-action == 'ActivateSDWANPortInstance'`">

+                        <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/svclogic121.log"/>

+                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                    <parameter name="field2" value="tmp.wanPortVidx"/>

+                                    <parameter name="field3" value='`$tmp.wanPortVidx`'/>

+                                    <parameter name="field4" value="wan port i/p param len"/>

+                                    <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_length`'/>

+                                </record>

+                                <set>

+                                    <parameter name='tmp.wanPortVidx' value='`$idx`' />

+                                    <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>

+            <set>

+                <parameter name='prop.siteAttachements_length' value='0' />

+                <parameter name='prop.siteIds_length' value='0' />

+            </set>

+            <for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].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/svclogic111.log"/>

+                        <parameter name="field1" value="__TIMESTAMP__"/>

+                        <parameter name="field2" value="request-action"/>

+                        <parameter name="field3" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action`'/>

+                    </record>

+                    <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].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[$vfidx].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[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].name == 'name'`">

+                                            <outcome value='true'>

+                                                <block atomic="true">

+                                                    <switch test="`$prop.wan.deviceName == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].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[$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/svclogic113.log"/>

+                                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                            <parameter name="field2" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].name`'/>

+                                                                            <parameter name="field3" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].value`'/>

+                                                                        </record>

+                                                                        <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].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[$vfidx].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='`$vfidx`' />

+                                                                </set>

+                                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                                                                    <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic112.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[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANSiteInstance'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='tmp.siteVidx' value='`$vfidx`' />

+                                <parameter name='ctx.site.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vfidx].`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <switch test="`$tmp.wanPortVidx`">

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="ActivateSDWANPortInstance not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.siteVidx`">

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="ActivateSiteInstance not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.devicevidx`">

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="ActivateSDWANDeviceInstance not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <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>

+            <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="bwidx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">

+                <block atomic="true">

+                    <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$bwidx].name == 'bandwidth'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.inputBandwidth' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$bwidx].value`' />

+                                <parameter name='prop.wan.outputBandwidth' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$bwidx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$bwidx].name == 'bandwidth-change-time'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.bandwidth-change-time' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$bwidx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <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'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='prop.wan.IpMode' value="static" />

+                                                <parameter name='prop.wan.ipAddress' value='`$prop.wan.ip-address`' />

+                                                <parameter name='prop.route.nextHopType' value="ip-address" />

+                                            </set>

+                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-wan-port-static.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="put"/>

+                                                <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">

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="Error executing Create wan port rest api" />

+                                                        </return>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='success'>

+                                                    <block atomic="true"></block>

+                                                </outcome>

+                                            </execute>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <switch test="`DHCP == $prop.wan.IPMode`">

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='prop.wan.ipAddress' value="" />

+                                                <parameter name='prop.wan.prefixLength' value="" />

+                                                <parameter name='prop.wan.providerIpAddress' value="" />

+                                                <parameter name='prop.wan.IpMode' value="DHCP" />

+                                                <parameter name='prop.route.nextHopType' value="outbound-interface" />

+                                            </set>

+                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-wan-port-dhcp.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="put"/>

+                                                <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">

+                                                        <return status='failure'>

+                                                            <parameter name='ack-final' value='Y'/>

+                                                            <parameter name="error-code" value="500" />

+                                                            <parameter name="error-message" value="Error executing Create wan port rest api" />

+                                                        </return>

+                                                    </block>

+                                                </outcome>

+                                                <outcome value='success'>

+                                                    <block atomic="true"></block>

+                                                </outcome>

+                                            </execute>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-device-param.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-device-param.xml
new file mode 100644
index 0000000..c4bbca1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-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-device-param' mode='sync'>
+        <block atomic="true">
+            <for index='idx' start='0' end='`$vnf-request-input.vnf-input-parameters.param_length`' >
+                <block>
+                    <switch test="`$vnf-request-input.vnf-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="`$vnf-request-input.vnf-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="`$vnf-request-input.vnf-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="`$vnf-request-input.vnf-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="`$vnf-request-input.vnf-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="`$vnf-request-input.vnf-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="`$vnf-request-input.vnf-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="`$vnf-request-input.vnf-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="`$vnf-request-input.vnf-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="`$vnf-request-input.vnf-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-saved-ar-param.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-saved-ar-param.xml
new file mode 100644
index 0000000..d9bce9b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-saved-ar-param.xml
@@ -0,0 +1,31 @@
+<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-saved-ar-param' mode='sync'>

+        <block atomic="true">

+            <for index='idx' start='0' end='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`' >

+                <block>

+                    <switch test="`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'sdwanVpnName'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.connection-attachment.sdwanVpnName' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'role'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.connection-attachment.role' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-site-param.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-site-param.xml
new file mode 100644
index 0000000..c6147a0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-site-param.xml
@@ -0,0 +1,141 @@
+<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-site-param' mode='sync'>
+        <block atomic="true">
+            <for index='idx' start='0' end='`$vnf-request-input.vnf-input-parameters.param_length`' >
+                <block>
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.site.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'description'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.site.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.site.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'location-name'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.site.location-name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'address'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.site.location-address' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'postcode'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.site.location-postcode' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'latitude'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.site.location-latitude' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'longitude'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.site.location-longitude' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'emails'`">
+                        <outcome value='true'>
+                            <block atomic="true">
+                                <set>
+                                    <parameter name='prop.site.emails' value='`$vnf-request-input.vnf-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="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'type'`">
+                        <outcome value='true'>
+                            <block>
+                                <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].value`">
+                                    <outcome value=''>
+                                        <block></block>
+                                    </outcome>
+                                    <outcome value='Other'>
+                                        <set>
+                                            <parameter name='prop.site.type' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />
+                                            <parameter name='prop.site.sdwan' value='true' />
+                                        </set>
+                                    </outcome>
+                                </switch>
+                            </block>
+                        </outcome>
+                    </switch>
+                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'role'`">
+                        <outcome value='true'>
+                            <block atomic="true">
+                                <set>
+                                    <parameter name='prop.site.role' value='`$vnf-request-input.vnf-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="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'controlPoint'`">
+                        <outcome value='true'>
+                            <block>
+                                <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].value`">
+                                    <outcome value=''>
+                                        <block></block>
+                                    </outcome>
+                                    <outcome value='Other'>
+                            <block atomic="true">
+                                <set>
+                                    <parameter name='prop.site.controlPoint' value='`$vnf-request-input.vnf-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.xml
new file mode 100644
index 0000000..491efef
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.xml
@@ -0,0 +1,51 @@
+<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-tenant-auth' mode='sync'>

+        <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[$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`'>

+                        <outcome value=''>

+                            <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>

+                        <outcome value='Other'>

+                            <set>

+                                <parameter name='prop.tenant-id' value='`$tmp.AnAI-data-tenant.temp-ub-sub-account-id`' />

+                            </set>

+                        </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>

+            <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>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.xml b/sdnc-a1-controller/oam/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..c8ecd15
--- /dev/null
+++ b/sdnc-a1-controller/oam/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-request-input.vf-module-input-parameters.param_length`">

+                <block>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.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 == 'esn'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.esn' 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 == 'class'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.class' 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 == 'type'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.deviceModel' 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 == 'version'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.version' 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 == 'systemIp'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.systemIP' 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.device.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 == 'vendor'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.vendor' 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 == 'deviceId'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.deviceId' 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 == 'sdncCreate'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.sdncCreate' 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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.xml b/sdnc-a1-controller/oam/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..70d408d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-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-lanport-param' mode='sync'>

+        <block atomic="true">

+            <for index="idx" start="0" end="`$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>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'bridgeDomainId'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.lan.bridgeDomainId' 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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.xml b/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.xml
new file mode 100644
index 0000000..30d7116
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.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-get-wan-param' mode='sync'>

+        <block atomic="true">

+            <for index="idx" start="0" end="`$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.wan.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 == 'name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.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.wan.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 == 'deviceName'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.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 == 'portType'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.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 == 'apn'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.apn-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 == 'portNumber'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.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.wan.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 == 'providerIpAddress'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.providerIpAddress' 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.wan.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 == 'transportNetworkName'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.transportNetworkName' 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 == 'inputBandwidth'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.inputBandwidth' 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 == 'outputBandwidth'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.outputBandwidth' 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.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>

+                    <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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-activate.xml
new file mode 100644
index 0000000..db4a18c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-activate.xml
@@ -0,0 +1,266 @@
+<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-network-topology-operation-activate' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-network-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.network-data.network-request-input.network-input-parameters.param_length`' >

+                <block>

+                    <switch test="`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].name == 'name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.name' value='`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].name == 'topology'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.topology' value='`$ctx.network-data.network-request-input.network-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>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="service-subscription" 

+        key= 'service-subscription.service-type = $service-data.networks.network[$tmp.nidx].network-data.service-information.subscription-service-type 

+        AND customer.global-customer-id = $service-data.networks.network[$tmp.nidx].network-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='`$ctx.network-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/v1/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.networks.network[$tmp.nidx].network-data.service-information.subscription-service-type 

+        AND customer.global-customer-id = $service-data.networks.network[$tmp.nidx].network-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/v1/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/v1/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>

+            <block atomic="true">

+                <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>

+            </block>

+            <set>

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$network-topology-operation-input.network-request-input.network-input-parameters.param_length].name' value='tenant-id' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$network-topology-operation-input.network-request-input.network-input-parameters.param_length].value' value='`$prop.tenant-id`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length + 1`' />

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$network-topology-operation-input.network-request-input.network-input-parameters.param_length].name' value='vpn-id' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$network-topology-operation-input.network-request-input.network-input-parameters.param_length].value' value='`$prop.vpn-id`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length + 1`' />

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />

+            </set>

+            <set>

+                <parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />

+                <parameter name="network-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $network-topology-operation-input.network-information.network-id  + '/network-data/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='Active' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn' 

+      key='sdwan-vpn.sdwan-vpn-id = $network-topology-operation-input.network-information.network-id' >

+                <parameter name='sdwan-vpn-id' value='`$network-topology-operation-input.network-information.network-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-create.xml
new file mode 100644
index 0000000..70500cc
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-create.xml
@@ -0,0 +1,105 @@
+<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-network-topology-operation-create' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-network-input-parameters' mode='sync' ></call>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >

+                <parameter name="ctx-destination" value="prop.sdwan.network-id"/>

+            </execute>

+            <for index="idx" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">

+                <block>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.name' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'topology'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.topology' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <switch test='`$service-data.networks.network_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='nidx' value='0' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name='nidx' value='`$service-data.networks.network_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$nidx`' >

+                            <switch test="`$service-data.networks.network[$idx].network-id == $network-topology-operation-input.network-information.network-id`">

+                                <outcome value='true'>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id already found in service-data" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </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="sdwan-network-topology-operation-create"/>

+                <parameter name="field3" value="SDWAN-Config"/>

+            </record>

+            <set>

+                <parameter name='service-data.networks.network[$nidx].network-id' value='`$prop.sdwan.network-id`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />

+                <parameter name='service-data.networks.network_length' value='`$nidx+1`' />

+            </set>

+            <set>

+                <parameter name='networkId' value='`$prop.sdwan.network-id`' />

+                <parameter name="network-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.sdwan.network-id  + '/network-data/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='Created' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />

+            </set>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn' 

+      key='sdwan-vpn.sdwan-vpn-id = $prop.sdwan.network-id' >

+                <parameter name='sdwan-vpn-id' value='`$prop.sdwan.network-id`' />

+                <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='`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`' />

+                <parameter name='model-invariant-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`' />

+                <parameter name='model-version-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-uuid`' />

+                <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.sdwan.network-id  + '/network-data/'` " />

+            </save>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' 

+      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id 

+         AND customer.global-customer-id = $service-data.networks.network[$nidx].network-data.service-information.global-customer-id 

+         AND service-subscription.service-type = $service-data.networks.network[$nidx].network-data.service-information.subscription-service-type' 

+      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.sdwan.network-id`" />

+                <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.sdwan.network-id`" />

+            </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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-deactivate.xml
new file mode 100644
index 0000000..f2d0b1b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-deactivate.xml
@@ -0,0 +1,190 @@
+<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-network-topology-operation-deactivate' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-network-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-deactivate"/>

+                <parameter name="field3" value="SDWAN-Deactivate"/>

+            </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.network-data.network-request-input.network-input-parameters.param_length`' >

+                <block>

+                    <switch test="`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].name == 'name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.name' value='`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].name == 'topology'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.topology' value='`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].name == 'vpn-id'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.vpn-id' value='`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].name == 'tenant-id'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.tenant-id' value='`$ctx.network-data.network-request-input.network-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>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="service-subscription" 

+        key= 'service-subscription.service-type = $service-data.networks.network[$tmp.nidx].network-data.service-information.subscription-service-type 

+        AND customer.global-customer-id = $service-data.networks.network[$tmp.nidx].network-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='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="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/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>

+            <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.networks.network[$tmp.nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />

+            </set>

+            <set>

+                <parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />

+                <parameter name="network-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $network-topology-operation-input.network-information.network-id  + '/network-data/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='PendingDelete' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn' 

+      key='sdwan-vpn.sdwan-vpn-id = $network-topology-operation-input.network-information.network-id' >

+                <parameter name='sdwan-vpn-id' value='`$network-topology-operation-input.network-information.network-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-delete.xml
new file mode 100644
index 0000000..afd579d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-network-topology-operation-delete.xml
@@ -0,0 +1,34 @@
+<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-network-topology-operation-delete' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-network-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-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 = $network-topology-operation-input.network-information.network-id'></delete>

+            <set>

+                <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`"/>

+            </set>

+            <set>

+                <parameter name="service-data.networks.network[$tmp.nidx]." value=""/>

+            </set>

+            <set>

+                <parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $network-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.xml
new file mode 100644
index 0000000..4bd3821
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.xml
@@ -0,0 +1,322 @@
+<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='`$vnf-index`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <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>

+            <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>

+            <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>

+            <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='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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.xml
new file mode 100644
index 0000000..15bbecf
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.xml
@@ -0,0 +1,206 @@
+<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">

+            <set>

+                <parameter name='prop.sdncCreate' 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='`$vnf-index`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test="`$vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                <outcome value=''>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='prop.sdncCreate' value='true' />

+                        </set>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >

+                            <parameter name="ctx-destination" value="prop.vf-id"/>

+                        </execute>

+                        <block atomic="true">

+                            <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'>

+                                    <set>

+                                        <parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <set>

+                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />

+                            </set>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <block atomic="true">

+                            <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'>

+                                    <set>

+                                        <parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <set>

+                                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />

+                            </set>

+                        </block>

+                        <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="`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id

+      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <set>

+                            <parameter name='prop.vf-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                        </set>

+                    </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[$vf-index].vf-module-id' value='`$prop.vf-id`' />

+                <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.`' />

+            </set>

+            <set>

+                <parameter name='vf-module-id' value='`$prop.vf-id`'/>

+                <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.vf-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>

+            <switch test='`$prop.sdncCreate`'>

+                <outcome value='true'>

+                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' 

+      key='device.device-id = $prop.vf-id' >

+                        <parameter name='device-id' value='`$prop.vf-id`' />

+                        <parameter name='esn' value='`$prop.device.esn`' />

+                        <parameter name='device-name' value='`$prop.device.name`' />

+                        <parameter name='description' value='`$prop.device.description`' />

+                        <parameter name='vendor' value='`$prop.device.vendor`' />

+                        <parameter name='class' value='`$prop.device.class`' />

+                        <parameter name='type' value='`$prop.device.deviceModel`' />

+                        <parameter name='version' value='`$prop.device.version`' />

+                        <parameter name='system-ip' value='`$prop.device.systemIp`' />

+                        <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-uuid`' />

+                        <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.vf-id + '/vf-module-data/'` " />

+                    </save>

+                </outcome>

+                <outcome value='false'>

+                    <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' 

+      key='device.device-id = $prop.vf-id' >

+                        <parameter name='device-id' value='`$prop.vf-id`' />

+                        <parameter name='esn' value='`$prop.device.esn`' />

+                        <parameter name='device-name' value='`$prop.device.name`' />

+                        <parameter name='description' value='`$prop.device.description`' />

+                        <parameter name='vendor' value='`$prop.device.vendor`' />

+                        <parameter name='class' value='`$prop.device.class`' />

+                        <parameter name='type' value='`$prop.device.deviceModel`' />

+                        <parameter name='version' value='`$prop.device.version`' />

+                        <parameter name='system-ip' value='`$prop.device.systemIp`' />

+                        <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-uuid`' />

+                        <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.vf-id + '/vf-module-data/'` " />

+                    </update>

+                </outcome>

+            </switch>

+            <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="device" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/devices/device/' + $prop.vf-id`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="device.device-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.vf-id`" />

+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.xml b/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.xml b/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.xml
new file mode 100644
index 0000000..7a6c727
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.xml
@@ -0,0 +1,487 @@
+<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>

+            <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='`$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`' >

+                <block atomic="true">

+                    <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length >= '0'`">

+                        <!--switch test="`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`"-->

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <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`' >

+                                        <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 == $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'>

+                                                                <block atomic="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>

+                                                                    <set>

+                                                                        <parameter name='site-vnf-index' value='`$vnfidx`' />

+                                                                    </set>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </for>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </for>

+                                </for>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </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`' >

+                <block atomic="true">

+                    <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length >= '0'`">

+                        <!--switch test="`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`"-->

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >

+                                    <block>

+                                        <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'>

+                                                <block atomic="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 == '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].value == 'dsvpn-hub'`">

+                                                                        <outcome value='true'>

+                                                                            <set>

+                                                                                <parameter name='prop.role' value="hub" />

+                                                                            </set>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                    <for index='sidx' 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[$sidx].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[$sidx].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>

+                                                                    </for>

+                                                                </block>

+                                                            </outcome>

+                                                        </switch>

+                                                    </for>

+                                                </block>

+                                            </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`' >

+                                                    <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].name == 'topology'`">

+                                                            <outcome value='true'>

+                                                                <set>

+                                                                    <parameter name='prop.topology' 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>

+                                                        <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 == 'name'`">

+                                                            <outcome value='true'>

+                                                                <set>

+                                                                    <parameter name='prop.name' 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>

+                                                        <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.vpnId' 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>

+                                                    </block>

+                                                </for>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </for>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$site-vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                <block>

+                    <switch test="`$service-data.vnfs.vnf[$site-vnf-index].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[$site-vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                                <block atomic="true">

+                                    <switch test="`$service-data.vnfs.vnf[$site-vnf-index].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.siteId' value='`$service-data.vnfs.vnf[$site-vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </for>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <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>

+            <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-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.vpnId + '/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>

+            <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">

+                                <set>

+                                    <parameter name='prop.lan.bridgeDomainId' value='`$bridgeDomainResp.success[0].id`' />

+                                </set>

+                            </block>

+                        </outcome>

+                    </execute>

+                </outcome>

+            </switch>

+            <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>

+            <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_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='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.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='bridgeDomainId' />

+                <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.bridgeDomainId`' />

+            </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='lan-port-config'

+                    key='lan-port-config.lan-port-config-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >

+                <parameter name='lan-port-config-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.xml
new file mode 100644
index 0000000..27f1c43
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.xml
@@ -0,0 +1,146 @@
+<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='`$vnf-index`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <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-lanport-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.vf-id"/>

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.vf-id`' />

+                <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.vf-id`'/>

+                <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.vf-id' >

+                <parameter name="lan-port-config-id" value="`$prop.vf-id`" />

+                <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-uuid`' />

+                <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.vf-id + '/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="lan-port-config" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/lan-port-configs/lan-port-config/' + $prop.vf-id`" />

+                <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.vf-id`" />

+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.xml
new file mode 100644
index 0000000..9a81491
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.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-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='`$vnf-index`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="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>

+            <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`' >

+                <block atomic="true">

+                    <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length >= '0'`">

+                        <!--switch test="`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`"-->

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <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`' >

+                                        <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 == $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'>

+                                                                    <block atomic="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>

+                                                                        <set>

+                                                                            <parameter name='site-vnf-index' value='`$vnfidx`' />

+                                                                        </set>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </for>

+                                                    </block>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </for>

+                                </for>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </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>

+                                <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'>

+                                        <block atomic="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 == '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].value == 'dsvpn-hub'`">

+                                                                <outcome value='true'>

+                                                                    <set>

+                                                                        <parameter name='prop.role' value="hub" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                            <for index='sidx' 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[$sidx].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[$sidx].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>

+                                                            </for>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </for>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                    </outcome>

+                </switch>

+            </for>

+            <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`' >

+                    <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`' >

+                                <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].name == 'topology'`">

+                                        <outcome value='true'>

+                                            <set>

+                                                <parameter name='prop.topology' 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>

+                                    <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 == 'name'`">

+                                        <outcome value='true'>

+                                            <set>

+                                                <parameter name='prop.name' 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>

+                                    <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.vpnId' 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>

+                                </block>

+                            </for>

+                        </outcome>

+                    </switch>

+                </for>

+            </for>

+            <for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$site-vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                <block>

+                    <switch test="`$service-data.vnfs.vnf[$site-vnf-index].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[$site-vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                                <block atomic="true">

+                                    <switch test="`$service-data.vnfs.vnf[$site-vnf-index].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.siteId' value='`$service-data.vnfs.vnf[$site-vnf-index].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />

+                                                </set>

+                                            </block>

+                                        </outcome>

+                                    </switch>

+                                </block>

+                            </for>

+                        </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.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"></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-del.json'`" />

+                        <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/bridge-domains/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="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.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>

+            <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.vpnId + '/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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.xml
new file mode 100644
index 0000000..7a7dba2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.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-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='`$vnf-index`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <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>

+            <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].vf-module-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].vf-module-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='lan-port-config.lan-port-config-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.xml b/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.xml
new file mode 100644
index 0000000..b88f3af
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.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-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>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' 

+      key='site-resource.site-resource-id = $prop.site-vf-index' >

+                <parameter name='site-resource-id' value='`$prop.site-vf-index`' />

+                <parameter name='site-resource-name' value='`$prop.site.name`' />

+                <parameter name='description' value='`$prop.site.description`' />

+                <parameter name='type' value='`$prop.site.type`' />

+                <parameter name='role' value='`$prop.site.role`' />

+                <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-uuid`' />

+                <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="site-resource" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/site-resources/site-resource/' + $prop.site-vf-index`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="site-resource.site-resource-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.xml b/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.xml
new file mode 100644
index 0000000..a108518
--- /dev/null
+++ b/sdnc-a1-controller/oam/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-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>

+            <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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.xml
new file mode 100644
index 0000000..40477c3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.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-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>

+            <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-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.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='vpn-id' />

+                <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.vpn-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='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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.xml
new file mode 100644
index 0000000..7d8950a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.xml
@@ -0,0 +1,133 @@
+<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[$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.vpn-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-uuid`' />

+                <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>

+            <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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.xml
new file mode 100644
index 0000000..b41efbc
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.xml
@@ -0,0 +1,162 @@
+<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>

+                </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.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='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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.xml
new file mode 100644
index 0000000..5ddf41f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.xml
@@ -0,0 +1,88 @@
+<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>

+            <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='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[$prop.vnfidxLen]." value=""/>

+            </set>

+            <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>

+            <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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.xml
new file mode 100644
index 0000000..288dd5d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.xml
@@ -0,0 +1,480 @@
+<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>

+                                                <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 == '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[$didx].value`' />

+                                                            <parameter name='prop.site.deviceId_length' value='`$prop.site.deviceId_length + 1`' />

+                                                        </set>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                            <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 == 'ActivateSDWANSiteInstance'`">

+                                <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="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.siteVidx].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>

+            <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 == 'portType'`">

+                        <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[$idx].value`">

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='prop.wan.linkType' value="Ethernet" />

+                                            </set>

+                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-port-ethernet.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>

+                                        </block>

+                                    </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[$idx].value`">

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='prop.wan.linkType' value="Cellular" />

+                                            </set>

+                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-port-cellular.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>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <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'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='prop.wan.IpMode' value="static" />

+                                                <parameter name='prop.wan.ipAddress' value='`$prop.wan.ip-address`' />

+                                                <parameter name='prop.route.nextHopType' value="ip-address" />

+                                            </set>

+                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-wan-port-static.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>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <switch test="`DHCP == $prop.wan.IPMode`">

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='prop.wan.ipAddress' value="" />

+                                                <parameter name='prop.wan.prefixLength' value="" />

+                                                <parameter name='prop.wan.providerIpAddress' value="" />

+                                                <parameter name='prop.wan.IpMode' value="DHCP" />

+                                                <parameter name='prop.route.nextHopType' value="outbound-interface" />

+                                            </set>

+                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-wan-port-dhcp.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>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <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.vf-module-information.vf-module-id' >

+                <parameter name="wan-port-config-id" value='`$vf-module-topology-operation-input.vf-module-information.vf-module-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`' />

+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.xml
new file mode 100644
index 0000000..a25f727
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.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-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.wan-port-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.wan-port-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.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.wan-port-vf-index' >

+                <parameter name="wan-port-config-id" value="`$prop.wan-port-vf-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-uuid`' />

+                <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.wan-port-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="wan-port-config" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/wan-port-configs/wan-port-config/' + $prop.wan-port-vf-index`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="wan-port-config.wan-port-config-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.wan-port-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.xml
new file mode 100644
index 0000000..b0cccdf
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.xml
@@ -0,0 +1,200 @@
+<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'>

+                    <block atomic="true"></block>

+                </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'>

+                    <block atomic="true"></block>

+                </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.xml
new file mode 100644
index 0000000..710925d
--- /dev/null
+++ b/sdnc-a1-controller/oam/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-wan-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-activate.xml
new file mode 100644
index 0000000..c30915f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-activate.xml
@@ -0,0 +1,704 @@
+<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='wan-connection-topology-operation-activate' mode='sync'>
+        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+            <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+            <parameter name="target" value="specification"/>
+            <outcome value='true'>
+                <return status='success'>
+                    <parameter name="ack-final-indicator" value="Y" />
+                    <parameter name="error-code" value="200" />
+                    <parameter name="error-message" value="`$error-message`" />
+                </return>
+            </outcome>
+            <outcome value='false'>
+                <block atomic="true">
+                    <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>
+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                        <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+                        <parameter name="target" value="Fc"/>
+                        <outcome value='true'>
+                            <block atomic="true">
+                                <set>
+                                    <parameter name='needOof' value='false' />
+                                </set>
+                                <for index='aidx' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                        <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$aidx].name`"/>
+                                        <parameter name="target" value="fcport"/>
+                                        <outcome value='true'>
+                                            <set>
+                                                <parameter name='needOof' value='true' />
+                                            </set>
+                                        </outcome>
+                                    </execute>
+                                </for>
+                                <switch test="`$needOof`">
+                                    <outcome value='true'>
+                                        <block>
+                                            <block atomic="true">
+                                                <set>
+                                                    <parameter name='sotnFcPortListLength' value='0' />
+                                                </set>
+                                                <for index='sIdx' start='0' end='`$service-data.networks.network_length`' >
+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                                        <parameter name="source" value="`$service-data.networks.network[$sIdx].network-data.network-information.onap-model-information.model-name`"/>
+                                                        <parameter name="target" value="sotn"/>
+                                                        <outcome value='true'>
+                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                                                <parameter name="source" value="`$service-data.networks.network[$sIdx].network-data.network-information.onap-model-information.model-name`"/>
+                                                                <parameter name="target" value="FcPort"/>
+                                                                <outcome value='true'>
+                                                                    <block atomic="true">
+                                                                        <set>
+                                                                            <parameter name='tmp.sotnFcPortList[`$sotnFcPortListLength`]' value='`$sIdx`' />
+                                                                        </set>
+                                                                        <for index='paramIdx' start='0' end='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param_length`' >
+                                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                                                                <parameter name="source" value="`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paramIdx].name`"/>
+                                                                                <parameter name="target" value="address"/>
+                                                                                <outcome value='true'>
+                                                                                    <block atomic="true">
+                                                                                        <set>
+                                                                                            <parameter name='sotnFcPortAddress' value='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paramIdx].value`' />
+                                                                                        </set>
+                                                                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                                                                            <parameter name='restapiUrl' value="`$prop.oss.url + '/oss/inventory?location=' + $sotnFcPortAddress`"/>
+                                                                                            <parameter name='format' value='json' />
+                                                                                            <parameter name='customHttpHeaders' value="X-FromAppId=MSO" />
+                                                                                            <parameter name='httpMethod' value='GET' />
+                                                                                            <parameter name="responsePrefix" value="temp.oss.accessTPs" />
+                                                                                            <outcome value='success'>
+                                                                                                <switch test="`$temp.oss.accessTPs_length`">
+                                                                                                    <outcome value='Other'>
+                                                                                                        <block atomic="true">
+                                                                                                            <switch test='`$temp.accessTPs_length`'>
+                                                                                                                <outcome value=''>
+                                                                                                                    <set>
+                                                                                                                        <parameter name='tp_length' value='0' />
+                                                                                                                    </set>
+                                                                                                                </outcome>
+                                                                                                                <outcome value='Other'>
+                                                                                                                    <set>
+                                                                                                                        <parameter name='tp_length' value='`$temp.accessTPs_length`' />
+                                                                                                                    </set>
+                                                                                                                </outcome>
+                                                                                                            </switch>
+                                                                                                            <for index='idx' start='0' end='`$temp.oss.accessTPs_length`' >
+                                                                                                                <set>
+                                                                                                                    <parameter name='`temp.accessTPs[$idx + $tp_length].`' value='`$temp.oss.accessTPs[$idx].`' />
+                                                                                                                </set>
+                                                                                                            </for>
+                                                                                                            <set>
+                                                                                                                <parameter name='temp.accessTPs_length' value='`$temp.accessTPs_length + $temp.oss.accessTPs_length`' />
+                                                                                                            </set>
+                                                                                                        </block>
+                                                                                                    </outcome>
+                                                                                                </switch>
+                                                                                            </outcome>
+                                                                                        </execute>
+                                                                                    </block>
+                                                                                </outcome>
+                                                                            </execute>
+                                                                        </for>
+                                                                    </block>
+                                                                </outcome>
+                                                            </execute>
+                                                        </outcome>
+                                                    </execute>
+                                                </for>
+                                            </block>
+                                            <switch test="`$temp.accessTPs_length >= 2`">
+                                                <outcome value='true'>
+                                                    <block atomic="true">
+                                                        <set>
+                                                            <parameter name='prop.connection-attachment.access-topology-id' value='`$temp.accessTPs[0].access-topology-id`' />
+                                                            <parameter name='prop.connection-attachment.access-client-id' value='`$temp.accessTPs[0].access-client-id`' />
+                                                            <parameter name='prop.connection-attachment.access-provider-id' value='`$temp.accessTPs[0].access-provider-id`' />
+                                                            <parameter name='prop.connection-attachment.access-node-id' value='`$temp.accessTPs[0].access-node-id`' />
+                                                            <parameter name='prop.connection-attachment.access-ltp-id' value='`$temp.accessTPs[0].access-ltp-id`' />
+                                                            <parameter name='prop.remote.connection-attachment.access-topology-id' value='`$temp.accessTPs[1].access-topology-id`' />
+                                                            <parameter name='prop.remote.connection-attachment.access-client-id' value='`$temp.accessTPs[1].access-client-id`' />
+                                                            <parameter name='prop.remote.connection-attachment.access-provider-id' value='`$temp.accessTPs[1].access-provider-id`' />
+                                                            <parameter name='prop.remote.connection-attachment.access-node-id' value='`$temp.accessTPs[1].access-node-id`' />
+                                                            <parameter name='prop.remote.connection-attachment.access-ltp-id' value='`$temp.accessTPs[1].access-ltp-id`' />
+                                                        </set>
+                                                        <for index='paidx' start='0' end='`$tmp.network-input-parameters.param_length`' >
+                                                            <block>
+                                                                <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'name'`">
+                                                                    <outcome value='true'>
+                                                                        <set>
+                                                                            <parameter name='template.name' value='`$tmp.network-input-parameters.param[$paidx].value`' />
+                                                                        </set>
+                                                                    </outcome>
+                                                                </switch>
+                                                                <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'service-type'`">
+                                                                    <outcome value='true'>
+                                                                        <set>
+                                                                            <parameter name='template.service-type' value='`$tmp.network-input-parameters.param[$paidx].value`' />
+                                                                        </set>
+                                                                    </outcome>
+                                                                </switch>
+                                                                <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'total-size'`">
+                                                                    <outcome value='true'>
+                                                                        <set>
+                                                                            <parameter name='template.total-size' value='`$tmp.network-input-parameters.param[$paidx].value`' />
+                                                                        </set>
+                                                                    </outcome>
+                                                                </switch>
+                                                                <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'pir'`">
+                                                                    <outcome value='true'>
+                                                                        <set>
+                                                                            <parameter name='template.pir' value='`$tmp.network-input-parameters.param[$paidx].value`' />
+                                                                        </set>
+                                                                    </outcome>
+                                                                </switch>
+                                                                <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'cbs'`">
+                                                                    <outcome value='true'>
+                                                                        <set>
+                                                                            <parameter name='template.cbs' value='`$tmp.network-input-parameters.param[$paidx].value`' />
+                                                                        </set>
+                                                                    </outcome>
+                                                                </switch>
+                                                                <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'pbs'`">
+                                                                    <outcome value='true'>
+                                                                        <set>
+                                                                            <parameter name='template.pbs' value='`$tmp.network-input-parameters.param[$paidx].value`' />
+                                                                        </set>
+                                                                    </outcome>
+                                                                </switch>
+                                                                <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'couplingFlag'`">
+                                                                    <outcome value='true'>
+                                                                        <set>
+                                                                            <parameter name='template.couplingFlag' value='`$tmp.network-input-parameters.param[$paidx].value`' />
+                                                                        </set>
+                                                                    </outcome>
+                                                                </switch>
+                                                                <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'colorAware'`">
+                                                                    <outcome value='true'>
+                                                                        <set>
+                                                                            <parameter name='template.colorAware' value='`$tmp.network-input-parameters.param[$paidx].value`' />
+                                                                        </set>
+                                                                    </outcome>
+                                                                </switch>
+                                                                <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'route-objective-function'`">
+                                                                    <outcome value='true'>
+                                                                        <set>
+                                                                            <parameter name='template.route-objective-function' value='`$tmp.network-input-parameters.param[$paidx].value`' />
+                                                                        </set>
+                                                                    </outcome>
+                                                                </switch>
+                                                                <switch test="`$tmp.network-input-parameters.param[$paidx].name == 'diversity-policy'`">
+                                                                    <outcome value='true'>
+                                                                        <set>
+                                                                            <parameter name='template.diversity-policy' value='`$tmp.network-input-parameters.param[$paidx].value`' />
+                                                                        </set>
+                                                                    </outcome>
+                                                                </switch>
+                                                            </block>
+                                                        </for>
+                                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                                            <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/' + $prop.restapi.oof-getpath.templatefile`" />
+                                                            <parameter name="restapiUrl" value="`$prop.restapi.connection-oof-url`" />
+                                                            <parameter name="restapiUser" value="`$prop.oof.user`" />
+                                                            <parameter name="restapiPassword" value="`$prop.oof.password`" />
+                                                            <parameter name="format" value="json"/>
+                                                            <parameter name="httpMethod" value="post"/>
+                                                            <parameter name="responsePrefix" value="oof"/>
+                                                            <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.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'></outcome>
+                                                            <outcome value='success'>
+                                                                <for index='vidx' start='0' end='`$oof.vpns_length`' >
+                                                                    <block atomic="true">
+                                                                        <set>
+                                                                            <parameter name='oof.vpn.' value='`$oof.vpns[$vidx].`' />
+                                                                        </set>
+                                                                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="pnf" 
+		key="pnf.pnf-name = $oof.vpn.access-node-id 
+		AND depth = '0'"
+        pfx='tmp.aai.pnf' local-only='false' >
+                                                                            <outcome value='success'>
+                                                                                <set>
+                                                                                    <parameter name='tmp.thirdparty-sdnc-id' value="`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`" />
+                                                                                </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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-id`" />
+                                                                                </return>
+                                                                            </outcome>
+                                                                        </get-resource>
+                                                                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="esr-thirdparty-sdnc" 
+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $tmp.thirdparty-sdnc-id 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 + '/sotn-api-ConnectivityService.json'`" />
+                                                                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/operations/ZTE-API-ConnectivityService:create-connectivity-service'`" />
+                                                                            <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="patch"/>
+                                                                            <parameter name="responsePrefix" value="vpn-result"/>
+                                                                            <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.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>
+                                                                    </block>
+                                                                </for>
+                                                            </outcome>
+                                                        </execute>
+                                                    </block>
+                                                </outcome>
+                                            </switch>
+                                        </block>
+                                    </outcome>
+                                    <outcome value='false'>
+                                        <block atomic="true">
+                                            <set>
+                                                <parameter name='tmp.restapiUrl-found' value='false' />
+                                                <parameter name='tmp.restapiUser-found' value='false' />
+                                                <parameter name='tmp.restapiPassword-found' value='false' />
+                                                <parameter name='tmp.templateFileName-found' value='false' />
+                                                <parameter name='tmp.thirdPartyAdaptorRpc-found' value='false' />
+                                            </set>
+                                            <for index='cxid' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+                                                <block atomic="true">
+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                                        <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`"/>
+                                                        <parameter name="target" value="thirdPartySdncId"/>
+                                                        <outcome value='true'>
+                                                            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="esr-thirdparty-sdnc" 
+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = `$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value` AND 
+		     depth = '1'"
+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
+                                                                <outcome value='success'>
+                                                                    <set>
+                                                                        <parameter name='prop.thirdpartySdnc-found' value='true' />
+                                                                        <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'>
+                                                                    <set>
+                                                                        <parameter name='prop.thirdpartySdnc-found' value='false' />
+                                                                    </set>
+                                                                </outcome>
+                                                                <outcome value='Other'>
+                                                                    <set>
+                                                                        <parameter name='prop.thirdpartySdnc-found' value='false' />
+                                                                    </set>
+                                                                </outcome>
+                                                            </get-resource>
+                                                        </outcome>
+                                                        <outcome value='false'>
+                                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                                                <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`"/>
+                                                                <parameter name="target" value="templateFileName"/>
+                                                                <outcome value='true'>
+                                                                    <set>
+                                                                        <parameter name='tmp.templateFileName' value="`$prop.restapi.templateDir + '/' + $network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value`" />
+                                                                        <parameter name='tmp.templateFileName-found' value='true' />
+                                                                    </set>
+                                                                </outcome>
+                                                                <outcome value='false'>
+                                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                                                        <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`"/>
+                                                                        <parameter name="target" value="restapiUrl"/>
+                                                                        <outcome value='true'>
+                                                                            <set>
+                                                                                <parameter name='tmp.restapiUrl' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value`' />
+                                                                                <parameter name='tmp.restapiUrl-found' value='true' />
+                                                                            </set>
+                                                                        </outcome>
+                                                                    </execute>
+                                                                </outcome>
+                                                            </execute>
+                                                        </outcome>
+                                                    </execute>
+                                                    <set>
+                                                        <parameter name='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value`' />
+                                                    </set>
+                                                </block>
+                                            </for>
+                                            <return status='success'>
+                                                <parameter name="ack-final-indicator" value="Y" />
+                                                <parameter name="error-code" value="200" />
+                                                <parameter name="error-message" value="`$error-message`" />
+                                            </return>
+                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                                <parameter name="templateFileName" value="`$tmp.templateFileName`" />
+                                                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + $tmp.restapiUrl`" />
+                                                <parameter name="restapiUser" value="admin" />
+                                                <parameter name="restapiPassword" value="admin" />
+                                                <parameter name="format" value="json"/>
+                                                <parameter name="httpMethod" value="post"/>
+                                                <parameter name="responsePrefix" value="restApi-result"/>
+                                                <outcome value='success'>
+                                                    <for index='sIdx' start='0' end='`$service-data.networks.network_length`' >
+                                                        <switch test='`$service-data.networks.network[$sIdx].network-id == $network-topology-operation-input.network-information.network-id`'>
+                                                            <outcome value='true'>
+                                                                <block atomic="true">
+                                                                    <set>
+                                                                        <parameter name='paraIndx' value='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param_length`' />
+                                                                    </set>
+                                                                    <set>
+                                                                        <parameter name='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paraIndx].name`' value='localServiceId' />
+                                                                        <parameter name='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paraIndx].value`' value='`$restApi-result.output.service.uuid`' />
+                                                                    </set>
+                                                                </block>
+                                                            </outcome>
+                                                        </switch>
+                                                    </for>
+                                                </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 calling ' + $tmp.restapiUrl`" />
+                                                    </return>
+                                                </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="`'Error calling ' + $tmp.restapiUrl`" />
+                                                    </return>
+                                                </outcome>
+                                            </execute>
+                                        </block>
+                                    </outcome>
+                                </switch>
+                            </block>
+                        </outcome>
+                        <outcome value='false'>
+                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+                                <parameter name="target" value="Fd"/>
+                                <outcome value='true'>
+                                    <block atomic="true">
+                                        <set>
+                                            <parameter name='tmp.restapiUrl-found' value='false' />
+                                            <parameter name='tmp.restapiUser-found' value='false' />
+                                            <parameter name='tmp.restapiPassword-found' value='false' />
+                                            <parameter name='tmp.templateFileName-found' value='false' />
+                                            <parameter name='tmp.thirdPartyAdaptorRpc-found' value='false' />
+                                        </set>
+                                        <for index='cxid' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+                                            <block atomic="true">
+                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                                    <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`"/>
+                                                    <parameter name="target" value="thirdPartySdncId"/>
+                                                    <outcome value='true'>
+                                                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="esr-thirdparty-sdnc" 
+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = `$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value` AND 
+		     depth = '1'"
+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
+                                                            <outcome value='success'>
+                                                                <set>
+                                                                    <parameter name='prop.thirdpartySdnc-found' value='true' />
+                                                                    <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'>
+                                                                <set>
+                                                                    <parameter name='prop.thirdpartySdnc-found' value='false' />
+                                                                </set>
+                                                            </outcome>
+                                                            <outcome value='Other'>
+                                                                <set>
+                                                                    <parameter name='prop.thirdpartySdnc-found' value='false' />
+                                                                </set>
+                                                            </outcome>
+                                                        </get-resource>
+                                                    </outcome>
+                                                    <outcome value='false'>
+                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                                            <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`"/>
+                                                            <parameter name="target" value="templateFileName"/>
+                                                            <outcome value='true'>
+                                                                <set>
+                                                                    <parameter name='tmp.templateFileName' value="`$prop.restapi.templateDir + '/' + $network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value`" />
+                                                                    <parameter name='tmp.templateFileName-found' value='true' />
+                                                                </set>
+                                                            </outcome>
+                                                            <outcome value='false'>
+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                                                    <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`"/>
+                                                                    <parameter name="target" value="restapiUrl"/>
+                                                                    <outcome value='true'>
+                                                                        <set>
+                                                                            <parameter name='tmp.restapiUrl' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value`' />
+                                                                            <parameter name='tmp.restapiUrl-found' value='true' />
+                                                                        </set>
+                                                                    </outcome>
+                                                                </execute>
+                                                            </outcome>
+                                                        </execute>
+                                                    </outcome>
+                                                </execute>
+                                                <set>
+                                                    <parameter name='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value`' />
+                                                </set>
+                                            </block>
+                                        </for>
+                                        <return status='success'>
+                                            <parameter name="ack-final-indicator" value="Y" />
+                                            <parameter name="error-code" value="200" />
+                                            <parameter name="error-message" value="`$error-message`" />
+                                        </return>
+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                            <parameter name="templateFileName" value="`$tmp.templateFileName`" />
+                                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + $tmp.restapiUrl`" />
+                                            <parameter name="restapiUser" value="admin" />
+                                            <parameter name="restapiPassword" value="admin" />
+                                            <parameter name="format" value="json"/>
+                                            <parameter name="httpMethod" value="post"/>
+                                            <parameter name="responsePrefix" value="restApi-result"/>
+                                            <outcome value='success'>
+                                                <for index='sIdx' start='0' end='`$service-data.networks.network_length`' >
+                                                    <switch test='`$service-data.networks.network[$sIdx].network-id == $network-topology-operation-input.network-information.network-id`'>
+                                                        <outcome value='true'>
+                                                            <block atomic="true">
+                                                                <set>
+                                                                    <parameter name='paraIndx' value='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param_length`' />
+                                                                </set>
+                                                                <set>
+                                                                    <parameter name='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paraIndx].name`' value='localServiceId' />
+                                                                    <parameter name='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paraIndx].value`' value='`$restApi-result.output.service.uuid`' />
+                                                                </set>
+                                                            </block>
+                                                        </outcome>
+                                                    </switch>
+                                                </for>
+                                            </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 calling ' + $tmp.restapiUrl`" />
+                                                </return>
+                                            </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="`'Error calling ' + $tmp.restapiUrl`" />
+                                                </return>
+                                            </outcome>
+                                        </execute>
+                                    </block>
+                                </outcome>
+                                <outcome value='false'>
+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                        <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+                                        <parameter name="target" value="FcPort"/>
+                                        <outcome value='true'>
+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                                <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>
+                                                <parameter name="target" value="sitewan"/>
+                                                <outcome value='true'>
+                                                    <block atomic="true">
+                                                        <set>
+                                                            <parameter name='tmp.restapiUrl-found' value='false' />
+                                                            <parameter name='tmp.restapiUser-found' value='false' />
+                                                            <parameter name='tmp.restapiPassword-found' value='false' />
+                                                            <parameter name='tmp.templateFileName-found' value='false' />
+                                                            <parameter name='tmp.thirdPartyAdaptorRpc-found' value='false' />
+                                                        </set>
+                                                        <for index='cxid' start='0' end='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`' >
+                                                            <block atomic="true">
+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                                                    <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`"/>
+                                                                    <parameter name="target" value="thirdPartySdncId"/>
+                                                                    <outcome value='true'>
+                                                                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
+		resource="esr-thirdparty-sdnc" 
+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = `$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value` AND 
+		     depth = '1'"
+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
+                                                                            <outcome value='success'>
+                                                                                <set>
+                                                                                    <parameter name='prop.thirdpartySdnc-found' value='true' />
+                                                                                    <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'>
+                                                                                <set>
+                                                                                    <parameter name='prop.thirdpartySdnc-found' value='false' />
+                                                                                </set>
+                                                                            </outcome>
+                                                                            <outcome value='Other'>
+                                                                                <set>
+                                                                                    <parameter name='prop.thirdpartySdnc-found' value='false' />
+                                                                                </set>
+                                                                            </outcome>
+                                                                        </get-resource>
+                                                                    </outcome>
+                                                                    <outcome value='false'>
+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                                                            <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`"/>
+                                                                            <parameter name="target" value="templateFileName"/>
+                                                                            <outcome value='true'>
+                                                                                <set>
+                                                                                    <parameter name='tmp.templateFileName' value="`$prop.restapi.templateDir + '/' + $network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value`" />
+                                                                                    <parameter name='tmp.templateFileName-found' value='true' />
+                                                                                </set>
+                                                                            </outcome>
+                                                                            <outcome value='false'>
+                                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='contains' emitsOutcome='true' >
+                                                                                    <parameter name="source" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`"/>
+                                                                                    <parameter name="target" value="restapiUrl"/>
+                                                                                    <outcome value='true'>
+                                                                                        <set>
+                                                                                            <parameter name='tmp.restapiUrl' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value`' />
+                                                                                            <parameter name='tmp.restapiUrl-found' value='true' />
+                                                                                        </set>
+                                                                                    </outcome>
+                                                                                </execute>
+                                                                            </outcome>
+                                                                        </execute>
+                                                                    </outcome>
+                                                                </execute>
+                                                                <set>
+                                                                    <parameter name='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].name`' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$cxid].value`' />
+                                                                </set>
+                                                            </block>
+                                                        </for>
+                                                        <return status='success'>
+                                                            <parameter name="ack-final-indicator" value="Y" />
+                                                            <parameter name="error-code" value="200" />
+                                                            <parameter name="error-message" value="`$error-message`" />
+                                                        </return>
+                                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                                            <parameter name="templateFileName" value="`$tmp.templateFileName`" />
+                                                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + $tmp.restapiUrl`" />
+                                                            <parameter name="restapiUser" value="admin" />
+                                                            <parameter name="restapiPassword" value="admin" />
+                                                            <parameter name="format" value="json"/>
+                                                            <parameter name="httpMethod" value="post"/>
+                                                            <parameter name="responsePrefix" value="restApi-result"/>
+                                                            <outcome value='success'>
+                                                                <for index='sIdx' start='0' end='`$service-data.networks.network_length`' >
+                                                                    <switch test='`$service-data.networks.network[$sIdx].network-id == $network-topology-operation-input.network-information.network-id`'>
+                                                                        <outcome value='true'>
+                                                                            <block atomic="true">
+                                                                                <set>
+                                                                                    <parameter name='paraIndx' value='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param_length`' />
+                                                                                </set>
+                                                                                <set>
+                                                                                    <parameter name='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paraIndx].name`' value='localServiceId' />
+                                                                                    <parameter name='`$service-data.networks.network[$sIdx].network-data.network-request-input.network-input-parameters.param[$paraIndx].value`' value='`$restApi-result.output.service.uuid`' />
+                                                                                </set>
+                                                                            </block>
+                                                                        </outcome>
+                                                                    </switch>
+                                                                </for>
+                                                            </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 calling ' + $tmp.restapiUrl`" />
+                                                                </return>
+                                                            </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="`'Error calling ' + $tmp.restapiUrl`" />
+                                                                </return>
+                                                            </outcome>
+                                                        </execute>
+                                                    </block>
+                                                </outcome>
+                                                <outcome value='false'>
+                                                    <block>
+                                                        <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>
+                                                </outcome>
+                                            </execute>
+                                        </outcome>
+                                        <outcome value='false'>
+                                            <block>
+                                                <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>
+                                        </outcome>
+                                    </execute>
+                                </outcome>
+                            </execute>
+                        </outcome>
+                    </execute>
+                </block>
+            </outcome>
+        </execute>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-create.xml
new file mode 100644
index 0000000..03ccd49
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-create.xml
@@ -0,0 +1,61 @@
+<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='wan-connection-topology-operation-create' mode='sync'>
+        <block atomic="true">
+            <switch test='`$network-topology-operation-input.network-information.network-id`'>
+                <outcome value=''>
+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >
+                        <parameter name="ctx-destination" value="network-topology-operation-input.network-information.network-id"/>
+                        <outcome value='Other'>
+                            <return status='failure'>
+                                <parameter name='error-code' value='' />
+                                <parameter name='error-message' value="An error occured while generation allotted resource ID" />
+                            </return>
+                        </outcome>
+                        <outcome value='success'>
+                            <block>
+                                <set>
+                                    <parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />
+                                    <parameter name="network-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $network-topology-operation-input.network-information.network-id  + '/network-data/'` " />
+                                </set>
+                            </block>
+                        </outcome>
+                    </execute>
+                </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>
+            <block atomic="true">
+                <switch test='`$service-data.networks.network_length`'>
+                    <outcome value=''>
+                        <set>
+                            <parameter name='nidx' value='0' />
+                        </set>
+                    </outcome>
+                    <outcome value='Other'>
+                        <set>
+                            <parameter name='nidx' value='`$service-data.networks.network_length`' />
+                        </set>
+                    </outcome>
+                </switch>
+                <set>
+                    <parameter name='service-data.networks.network[$nidx].network-id' value='`$network-topology-operation-input.network-information.network-id`' />
+                    <parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />
+                    <parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />
+                    <parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />
+                    <parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />
+                    <parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />
+                    <parameter name='service-data.networks.network_length' value='`$nidx+1`' />
+                </set>
+            </block>
+            <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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-deactivate.xml
new file mode 100644
index 0000000..2748b31
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-deactivate.xml
@@ -0,0 +1,110 @@
+<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='wan-connection-topology-operation-deactivate' mode='sync'>
+        <block atomic="true">
+            <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>
+            <set>
+                <parameter name='tmp.found-network-input' value='false' />
+            </set>
+            <for index='pidx' start='0' end='`$service-data.networks.network_length`' >
+                <switch test="`$service-data.networks.network[$pidx].network-id == $network-topology-operation-input.network-information.network-id`">
+                    <outcome value='true'>
+                        <set>
+                            <parameter name='tmp.pidx' value='`$pidx`' />
+                            <parameter name='tmp.network.' value='`$service-data.networks.network[$pidx].`' />
+                            <parameter name='tmp.network-input-parameters' value='`$service-data.networks.network[$pidx].network-data.network-request-input.network-input-parameters`' />
+                            <parameter name='tmp.found-network-input' value='true' />
+                        </set>
+                    </outcome>
+                </switch>
+            </for>
+            <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 atomic="true">
+                <set>
+                    <parameter name='isLocalIdFound' value='false' />
+                </set>
+                <for index='paidx' start='0' end='`$tmp.network.network-data.network-request-input.network-input-parameters.param_length`' >
+                    <switch test="`$tmp.network.network-data.network-request-input.network-input-parameters.param[$paidx].name == 'localServiceId'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='localServiceId' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$paidx].value`' />
+                                <parameter name='isLocalIdFound' value='true' />
+                            </set>
+                        </outcome>
+                    </switch>
+                </for>
+                <switch test="`$isLocalIdFound`">
+                    <outcome value='false'>
+                        <set>
+                            <parameter name='sotnServiceId' value='73aa6033-a43e-3162-9bc9-085edc2b5a10' />
+                        </set>
+                    </outcome>
+                </switch>
+                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                    <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sotn_get_zte_template.json' `" />
+                    <parameter name="restapiUrl" value="http://10.80.80.21:8443/restconf/operations/ZTE-API-ConnectivityService:get-service-details" />
+                    <parameter name="restapiUser" value="admin" />
+                    <parameter name="restapiPassword" value="admin" />
+                    <parameter name="format" value="json"/>
+                    <parameter name="httpMethod" value="post"/>
+                    <parameter name="responsePrefix" value="restApiResult"/>
+                    <outcome value='success'>
+                        <block atomic="true">
+                            <set>
+                                <parameter name='localId' value='`$restApiResult.output.normal-service.name[0].value`' />
+                            </set>
+                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sotn_delete_zte_template.json' `" />
+                                <parameter name="restapiUrl" value="http://10.80.80.21:8443/restconf/operations/ZTE-API-ConnectivityService:delete-connectivity-service" />
+                                <parameter name="restapiUser" value="admin" />
+                                <parameter name="restapiPassword" value="admin" />
+                                <parameter name="format" value="json"/>
+                                <parameter name="httpMethod" value="post"/>
+                                <parameter name="responsePrefix" value="restApiResult"/>
+                                <outcome value='success'>
+                                    <block></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 calling ' + $tmp.restapiUrl`" />
+                                    </return>
+                                </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="`'Error calling ' + $tmp.restapiUrl`" />
+                                    </return>
+                                </outcome>
+                            </execute>
+                        </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 calling ' + $tmp.restapiUrl`" />
+                        </return>
+                    </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="`'Error calling ' + $tmp.restapiUrl`" />
+                        </return>
+                    </outcome>
+                </execute>
+            </block>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-delete.xml
new file mode 100644
index 0000000..9c24e52
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-topology-operation-zte-delete.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<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="wan-connection-topology-operation-delete" mode="sync"> 
+    <block atomic="true">
+      <switch test="`$network-topology-operation-input.network-information.network-id`"> 
+        <outcome value="">
+          <return status="failure"> 
+            <parameter name="error-code" value=""/>  
+            <parameter name="error-message" value="An error occured while generation allotted resource ID"/> 
+          </return>
+        </outcome>
+        <outcome value="Other"></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>
+      <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+        <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+        <parameter name="target" value="FC"/>  
+        <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.log"/>  
+              <parameter name="field1" value="__TIMESTAMP__"/>  
+              <parameter name="field2" value="wan-connection-topology-operation-delete"/>  
+              <parameter name="field3" value="`$network-topology-operation-input.network-information.onap-model-information.model-name + ' delete'`"/> 
+            </record>
+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="connectivity" key="connectivity.connectivity-id = $network-topology-operation-input.network-information.network-id"></delete>
+            <set> 
+              <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`"/> 
+            </set>
+            <set> 
+              <parameter name="service-data.networks.network[$tmp.nidx]." value=""/> 
+            </set>
+            <set> 
+              <parameter name="networkId" value="`$network-topology-operation-input.network-information.network-id`"/>  
+              <parameter name="service-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/service-topology/'` "/>
+            </set>
+          </block>
+        </outcome>
+        <outcome value="false"> 
+          <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils" method="contains"> 
+            <parameter name="source" value="`$network-topology-operation-input.network-information.onap-model-information.model-name`"/>  
+            <parameter name="target" value="FD"/>  
+            <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.log"/>  
+                  <parameter name="field1" value="__TIMESTAMP__"/>  
+                  <parameter name="field2" value="wan-connection-topology-operation-delete"/>  
+                  <parameter name="field3" value="`$network-topology-operation-input.network-information.onap-model-information.model-name + ' delete'`"/> 
+                </record>
+                <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="connectivity" key="connectivity.connectivity-id = $network-topology-operation-input.network-information.network-id"></delete>
+                <set> 
+                  <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`"/> 
+                </set>
+                <set> 
+                  <parameter name="service-data.networks.network[$tmp.nidx]." value=""/> 
+                </set>
+                <set> 
+                  <parameter name="networkId" value="`$network-topology-operation-input.network-information.network-id`"/>  
+                  <parameter name="service-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/service-topology/'` "/>
+                </set>
+              </block>
+            </outcome>
+            <outcome value="false"> 
+              <block></block>
+            </outcome>
+          </execute>
+        </outcome>
+      </execute>
+      <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>
diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-activate.xml
new file mode 100644
index 0000000..54bae83
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-activate.xml
@@ -0,0 +1,149 @@
+<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-vnf-topology-operation-device-activate' mode='sync'>

+        <block atomic="true">

+            <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <block>

+                    <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='tmp.vidx' value='`$vidx`' />

+                                    <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />

+                                </set>

+                                <set>

+                                    <parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />

+                                </set>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' ></call>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <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'>

+                    <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-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[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value="deviceId" />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$deviceResp.success[0].id`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />

+            </set>

+            <set>

+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+            </set>

+            <set>

+                <!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' 

+      key='device.device-id = $vnf-topology-operation-input.vnf-information.vnf-id' >

+                <parameter name='device-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                <!--parameter name='device-id' value='`$deviceResp.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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-create.xml
new file mode 100644
index 0000000..ab122cc
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-create.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-vnf-topology-operation-device-create' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='prop.sdncCreate' value='false' />

+            </set>

+            <switch test="`$vnf-topology-operation-input.vnf-information.vnf-id`">

+                <outcome value=''>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='prop.sdncCreate' value='true' />

+                        </set>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >

+                            <parameter name="ctx-destination" value="prop.vnf-id"/>

+                        </execute>

+                        <block atomic="true">

+                            <switch test='`$service-data.vnfs.vnf_length`'>

+                                <outcome value=''>

+                                    <set>

+                                        <parameter name='vnf-index' value='0' />

+                                    </set>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <set>

+                                        <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <set>

+                                <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />

+                            </set>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <block atomic="true">

+                            <switch test='`$service-data.vnfs.vnf_length`'>

+                                <outcome value=''>

+                                    <set>

+                                        <parameter name='vnf-index' value='0' />

+                                    </set>

+                                </outcome>

+                                <outcome value='Other'>

+                                    <set>

+                                        <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <set>

+                                <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />

+                            </set>

+                        </block>

+                        <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>

+                                <outcome value='true'>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id

+      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <set>

+                            <parameter name='prop.vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <for index="idx" start="0" end="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`">

+                <block>

+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                        <parameter name="original_string" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`'/>

+                        <parameter name="regex" value="_"/>

+                        <parameter name="ctx_memory_result_key" value="param-prefix"/>

+                    </execute>

+                    <set>

+                        <parameter name="`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>

+                    </set>

+                </block>

+            </for>

+            <set>

+                <parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' ></call>

+            <set>

+                <parameter name='vnfId' value='`$prop.vnf-id`' />

+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-id`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />

+            </set>

+            <switch test='`$prop.sdncCreate`'>

+                <outcome value='true'>

+                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' 

+      key='device.device-id = $prop.vnf-id' >

+                        <parameter name='device-id' value='`$prop.vnf-id`' />

+                        <parameter name='esn' value='`$prop.device.esn`' />

+                        <parameter name='device-name' value='`$prop.device.name`' />

+                        <parameter name='description' value='`$prop.device.description`' />

+                        <parameter name='vendor' value='`$prop.device.vendor`' />

+                        <parameter name='class' value='`$prop.device.class`' />

+                        <parameter name='type' value='`$prop.device.deviceModel`' />

+                        <parameter name='version' value='`$prop.device.version`' />

+                        <parameter name='system-ip' value='`$prop.device.systemIp`' />

+                        <parameter name='operational-status' value='Created' />

+                        <parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />

+                        <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />

+                        <parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />

+                        <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` " />

+                    </save>

+                </outcome>

+                <outcome value='false'>

+                    <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' 

+      key='device.device-id = $prop.vnf-id' >

+                        <parameter name='device-id' value='`$prop.vnf-id`' />

+                        <parameter name='esn' value='`$prop.device.esn`' />

+                        <parameter name='device-name' value='`$prop.device.name`' />

+                        <parameter name='description' value='`$prop.device.description`' />

+                        <parameter name='vendor' value='`$prop.device.vendor`' />

+                        <parameter name='class' value='`$prop.device.class`' />

+                        <parameter name='type' value='`$prop.device.deviceModel`' />

+                        <parameter name='version' value='`$prop.device.version`' />

+                        <parameter name='system-ip' value='`$prop.device.systemIp`' />

+                        <parameter name='operational-status' value='Created' />

+                        <parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />

+                        <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />

+                        <parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />

+                        <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` " />

+                    </update>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value="sdncCreate" />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.sdncCreate`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />

+            </set>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' 

+      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id 

+         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id 

+         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' 

+      force="true" pfx="tmp.AnAI-data">

+                <parameter name="relationship-list.relationship[0].related-to" value="device" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/devices/device/' + $prop.vnf-id`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="device.device-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.vnf-id`" />

+            </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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-deactivate.xml
new file mode 100644
index 0000000..d2a8129
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-deactivate.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-vnf-topology-operation-device-deactivate' mode='sync'>

+        <block atomic="true">

+            <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <block>

+                    <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='tmp.vidx' value='`$vidx`' />

+                                    <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />

+                                </set>

+                                <set>

+                                    <parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />

+                                </set>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' ></call>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <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[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />

+            </set>

+            <set>

+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' 

+      key='device.device-id = $vnf-topology-operation-input.vnf-information.vnf-id' >

+                <parameter name='device-id' value='`$vnf-topology-operation-input.vnf-information.vnf-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-delete.xml
new file mode 100644
index 0000000..de29db4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-device-delete.xml
@@ -0,0 +1,117 @@
+<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-vnf-topology-operation-device-delete' mode='sync'>

+        <block atomic="true">

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                <parameter name="vnf-topology-operation-input.vnf-information.vnf-id" value="$vnf-topology-operation-input.vnf-information.vnf-id"/>

+            </execute>

+            <switch test="`$vnf-topology-operation-input.vnf-information.vnf-id`">

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-request-input.vnf-input-parameters.name 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-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.vidx' value='`$vidx`' />

+                                            <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-device-param' mode='sync' ></call>

+                                        <set>

+                                            <parameter name='tmp.vidx' value='`$vidx`' />

+                                            <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].vnf-data.`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <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>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-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_length`' >

+                <block atomic="true">

+                    <switch test="`$service-data.vnfs.vnf[$lidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">

+                        <outcome value='false'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$lidx].vnf-id`' />

+                                    <parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$lidx].vnf-data.`' />

+                                </set>

+                                <set>

+                                    <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <set>

+                <parameter name="service-data.vnfs.vnf_length" value='`$prop.vnfidxLen`'/>

+            </set>

+            <set>

+                <parameter name="service-data.vnfs.vnf[$prop.vnfidxLen]." value=""/>

+            </set>

+            <set>

+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                <parameter name='vnf-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vnf-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 = $vnf-topology-operation-input.vnf-information.vnf-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-activate.xml
new file mode 100644
index 0000000..720c1da
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-activate.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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vnf-topology-operation-wanport-activate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_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">

+                        <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <block>

+                                <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='tmp.vidx' value='`$vidx`' />

+                                                <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />

+                                            </set>

+                                            <set>

+                                                <parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' 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="....."/>

+                                                <parameter name="field3" value="prop.wan.deviceName"/>

+                                                <parameter name="field4" value='`$prop.wan.deviceName`'/>

+                                            </record>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                        <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`">

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name='tmp.siteVidx' value='`$vidx`' />

+                                        <parameter name='ctx.site.' value='`$service-data.vnfs.vnf[$vidx].`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                            <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <for index="didx" start="0" end="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">

+                                            <block atomic="true">

+                                                <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].name == 'name'`">

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <switch test="`$prop.wan.deviceName == $service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].value`">

+                                                                <outcome value='true'>

+                                                                    <block atomic="true">

+                                                                        <for index="deviceidx" start="0" end="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">

+                                                                            <block atomic="true">

+                                                                                <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].name == 'deviceId'`">

+                                                                                    <outcome value='true'>

+                                                                                        <set>

+                                                                                            <parameter name='prop.wan.deviceId' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                        </for>

+                                                                        <set>

+                                                                            <parameter name='tmp.devicevidx' value='`$vidx`' />

+                                                                        </set>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </for>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <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="`$tmp.siteVidx`">

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="ActivateSiteInstance not found in service-data" />

+                                </return>

+                            </outcome>

+                        </switch>

+                        <switch test="`$tmp.devicevidx`">

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="ActivateSDWANDeviceInstance not found in service-data" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </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="sdwan-wanport-vnf-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="sidx" start="0" end="`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param_length`">

+                <block atomic="true">

+                    <switch test="`$ctx.site.vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'siteId'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.siteId' value='`$ctx.site.vnf-data.vnf-request-input.vnf-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>

+            <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>

+            <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>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='devicePortId' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.wan.devicePortId`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='wanPortId' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$prop.wan.wanPortId`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />

+            </set>

+            <set>

+                <!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />

+            </set>

+            <set>

+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' 

+      key='wan-port-config.wan-port-config-id = $vnf-topology-operation-input.vnf-information.vnf-id' >

+                <parameter name="wan-port-config-id" value="`$vnf-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='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />

+                <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />

+                <parameter name='model-version-id' value='`$vnf-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-create.xml
new file mode 100644
index 0000000..a182dc5
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-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-vnf-topology-operation-wanport-create' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='vnf-index' value='0' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>

+                                <outcome value='true'>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id

+      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >

+                <parameter name="ctx-destination" value="prop.vnf-index"/>

+            </execute>

+            <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-wanport-vnf-topology-operation-create"/>

+                <parameter name="field3" value="SDWAN-Config"/>

+            </record>

+            <for index="idx" start="0" end="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`">

+                <block>

+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                        <parameter name="original_string" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`'/>

+                        <parameter name="regex" value="_"/>

+                        <parameter name="ctx_memory_result_key" value="param-prefix"/>

+                    </execute>

+                    <set>

+                        <parameter name="`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>

+                    </set>

+                </block>

+            </for>

+            <set>

+                <parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-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-id' value='`$prop.vnf-index`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+            </set>

+            <set>

+                <parameter name='vnfId' value='`$prop.vnf-index`' />

+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` " />

+            </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='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />

+                <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />

+                <parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />

+                <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` " />

+            </save>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' 

+      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id 

+         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id 

+         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' 

+      force="true" pfx="tmp.AnAI-data">

+                <parameter name="relationship-list.relationship[0].related-to" value="wan-port-config" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/wan-port-configs/wan-port-config/' + $prop.vnf-index`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="wan-port-config.wan-port-config-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.vnf-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-deactivate.xml
new file mode 100644
index 0000000..fa3d885
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-deactivate.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-vnf-topology-operation-wanport-deactivate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_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">

+                        <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <block>

+                                <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='tmp.vidx' value='`$vidx`' />

+                                                <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />

+                                            </set>

+                                            <set>

+                                                <parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' ></call>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                        <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>

+                    </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>

+            <set>

+                <!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-information.' value='`$vnf-topology-operation-input.vnf-information.`' />

+            </set>

+            <set>

+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' 

+      key='wan-port-config.wan-port-config-id = $vnf-topology-operation-input.vnf-information.vnf-id' >

+                <parameter name='wan-port-config-id' value="`$vnf-topology-operation-input.vnf-information.vnf-id`" />

+                <parameter name='operational-status' value='PendingDelete' />

+                <parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />

+                <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />

+                <parameter name='model-version-id' value='`$vnf-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-delete.xml
new file mode 100644
index 0000000..9f9eb3b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vnf-topology-operation-wanport-delete.xml
@@ -0,0 +1,103 @@
+<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-vnf-topology-operation-wanport-delete' mode='sync'>

+        <block atomic="true">

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                <parameter name="vnf-topology-operation-input.vnf-information.vnf-id" value="$vnf-topology-operation-input.vnf-information.vnf-id"/>

+            </execute>

+            <switch test="`$vnf-topology-operation-input.vnf-information.vnf-id`">

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-request-input.vnf-input-parameters.name 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-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name='tmp.vidx' value='`$vidx`' />

+                                        <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].vnf-data.`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <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>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-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_length`' >

+                <block atomic="true">

+                    <switch test="`$service-data.vnfs.vnf[$lidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">

+                        <outcome value='false'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$lidx].vnf-id`' />

+                                    <parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$lidx].vnf-data.`' />

+                                </set>

+                                <set>

+                                    <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <set>

+                <parameter name="service-data.vnfs.vnf_length" value='`$prop.vnfidxLen`'/>

+            </set>

+            <set>

+                <parameter name="service-data.vnfs.vnf[$prop.vnfidxLen]." value=""/>

+            </set>

+            <set>

+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                <parameter name='vnf-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vnf-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'` " />

+            </set>

+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='wan-port-config' 

+        key='wan-port-config.wan-port-config-id = $vnf-topology-operation-input.vnf-information.vnf-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-wanport-vnf-topology-operation-underlay.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-wanport-vnf-topology-operation-underlay.xml
new file mode 100644
index 0000000..d075c21
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-wanport-vnf-topology-operation-underlay.xml
@@ -0,0 +1,782 @@
+<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-wanport-vnf-topology-operation-underlay' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='prop.underlay.routeIds_length' value='0' />

+            </set>

+            <set>

+                <parameter name='prop.provision.siteIds_length' value='0' />

+            </set>

+            <for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >

+                <block atomic="true">

+                    <set>

+                        <parameter name='prop.ar.allotted-resource-id' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id`' />

+                    </set>

+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                        <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>

+                        <parameter name="outputPath" value="tmp.ar-url-connection"/>

+                        <parameter name="target" value="{allotted-resource-id}"/>

+                        <parameter name="replacement" value="`$prop.ar.allotted-resource-id`"/>

+                    </execute>

+                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />

+                        <parameter name='restapiUser' value='`$prop.controller.user`' />

+                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                        <parameter name='format' value='json' />

+                        <parameter name='httpMethod' value='GET' />

+                        <parameter name="responsePrefix" value="mdsal-ar" />

+                        <outcome value='success'>

+                            <block atomic="true">

+                                <switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>

+                                    <outcome value='1'>

+                                        <block atomic='true'>

+                                            <set>

+                                                <parameter name='prop.parent-service-instance-id' value='`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id`' />

+                                            </set>

+                                            <for index="roleidx" start="0" end="`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`">

+                                                <block>

+                                                    <switch test="`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$roleidx].name == 'role'`">

+                                                        <outcome value='true'>

+                                                            <set>

+                                                                <parameter name='prop.spoke.role' value='`$mdsal-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$roleidx].value`' />

+                                                            </set>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </for>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="404" />

+                                            <parameter name="error-message" value="Error: Connection attachement resource not found" />

+                                        </return>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <block atomic="true">

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="Error: Connection attachement resource not found" />

+                                </return>

+                            </block>

+                        </outcome>

+                    </execute>

+                    <switch test="`$prop.spoke.role == 'spoke'`">

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <for index='i' start='0' end='`$service-data.vnfs.vnf_length`' >

+                                    <block atomic="true">

+                                        <switch test="`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSDWANPortInstance'`">

+                                            <outcome value='true'>

+                                                <block atomic="true">

+                                                    <for index="widx" start="0" end="`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">

+                                                        <block atomic="true">

+                                                            <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].name == 'transportNetworkName'`">

+                                                                <outcome value='true'>

+                                                                    <set>

+                                                                        <parameter name='prop.spoke.transportNetworkName' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].value`' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                            <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].name == 'wanPortId'`">

+                                                                <outcome value='true'>

+                                                                    <set>

+                                                                        <parameter name='prop.spoke.wanPortId' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].value`' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                            <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].name == 'providerIpAddress'`">

+                                                                <outcome value='true'>

+                                                                    <set>

+                                                                        <parameter name='prop.spoke.providerIpAddress' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].value`' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                            <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].name == 'ipAddress'`">

+                                                                <outcome value='true'>

+                                                                    <set>

+                                                                        <parameter name='prop.spoke.ipAddress' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$widx].value`' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </for>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`">

+                                            <outcome value='true'>

+                                                <block atomic="true">

+                                                    <for index="didx" start="0" end="`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">

+                                                        <block atomic="true">

+                                                            <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].name == 'deviceId'`">

+                                                                <outcome value='true'>

+                                                                    <set>

+                                                                        <parameter name='prop.spoke.deviceId' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$didx].value`' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </for>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$service-data.vnfs.vnf[$i].vnf-data.request-information.request-action == 'ActivateSiteInstance'`">

+                                            <outcome value='true'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name='prop.spoke.siteidx' value='`$i`' />

+                                                    </set>

+                                                    <for index="sidx" start="0" end="`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">

+                                                        <block atomic="true">

+                                                            <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'name'`">

+                                                                <outcome value='true'>

+                                                                    <set>

+                                                                        <parameter name='prop.spoke.siteName' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                            <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'siteId'`">

+                                                                <outcome value='true'>

+                                                                    <set>

+                                                                        <parameter name='prop.spoke.siteId' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                            <switch test="`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].name == 'underlayRouteIds'`">

+                                                                <outcome value='true'>

+                                                                    <block atomic="true">

+                                                                        <set>

+                                                                            <parameter name='prop.underlay.routeIdsString' value='`$service-data.vnfs.vnf[$i].vnf-data.vnf-request-input.vnf-input-parameters.param[$sidx].value`' />

+                                                                        </set>

+                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                                            <parameter name="original_string" value='`$prop.underlay.routeIdsString`'/>

+                                                                            <parameter name="regex" value=" | "/>

+                                                                            <parameter name="ctx_memory_result_key" value="prop.underlay.routeIdsValue"/>

+                                                                            <outcome value='success'>

+                                                                                <for index="ridx" start="0" end="`$prop.underlay.routeIdsValue_length`">

+                                                                                    <block atomic="true">

+                                                                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                                                            <parameter name="original_string" value='`$prop.underlay.routeIdsValue[$ridx]`'/>

+                                                                                            <parameter name="regex" value=","/>

+                                                                                            <parameter name="ctx_memory_result_key" value="prop.underlay.routeIdsValues"/>

+                                                                                            <outcome value='success'>

+                                                                                                <switch test='`$prop.underlay.routeIdsValues_length`'>

+                                                                                                    <outcome value='Other'>

+                                                                                                        <block></block>

+                                                                                                    </outcome>

+                                                                                                    <outcome value='3'>

+                                                                                                        <block atomic="true">

+                                                                                                            <set>

+                                                                                                                <parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubSiteId' value='`$prop.underlay.routeIdsValues[0]`' />

+                                                                                                                <parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubRouteId' value='`$prop.underlay.routeIdsValues[1]`' />

+                                                                                                                <parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].spokeRouteId' value='`$prop.underlay.routeIdsValues[2]`' />

+                                                                                                            </set>

+                                                                                                            <set>

+                                                                                                                <parameter name='prop.underlay.routeIds_length' value='`$prop.underlay.routeIds_length + 1`' />

+                                                                                                            </set>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </outcome>

+                                                                                            <outcome value='failure'>

+                                                                                                <block></block>

+                                                                                            </outcome>

+                                                                                        </execute>

+                                                                                    </block>

+                                                                                </for>

+                                                                            </outcome>

+                                                                            <outcome value='failure'>

+                                                                                <block></block>

+                                                                            </outcome>

+                                                                        </execute>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </for>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </for>

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                    <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>

+                                    <parameter name="outputPath" value="tmp.ar-url-parent-connection"/>

+                                    <parameter name="target" value="{service-instance-id}"/>

+                                    <parameter name="replacement" value="`$prop.parent-service-instance-id`"/>

+                                </execute>

+                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-parent-connection`' />

+                                    <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                    <parameter name='format' value='json' />

+                                    <parameter name='httpMethod' value='GET' />

+                                    <parameter name="responsePrefix" value="mdsal-psd" />

+                                    <outcome value='success'>

+                                        <block></block>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="404" />

+                                            <parameter name="error-message" value="Error: SOTN resource not found" />

+                                        </return>

+                                    </outcome>

+                                </execute>

+                                <for index='pnidx' start='0' end='`$mdsal-psd.service-data.networks.network_length`' >

+                                    <block atomic="true">

+                                        <switch test="`$mdsal-psd.service-data.networks.network[$pnidx].network-data.request-information.request-action == 'ActivateSDWANConnectivityInstance'`">

+                                            <outcome value='true'>

+                                                <set>

+                                                    <parameter name='tmp.pnidx' value='`$pnidx`' />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </for>

+                                <switch test="`$tmp.pnidx`">

+                                    <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="paramidx" start="0" end="`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param_length`">

+                                    <block atomic="true">

+                                        <switch test="`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'topology'`">

+                                            <outcome value='true'>

+                                                <set>

+                                                    <parameter name='prop.topology' value='`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].name == 'vpn-id'`">

+                                            <outcome value='true'>

+                                                <set>

+                                                    <parameter name='prop.vpnId' value='`$mdsal-psd.service-data.networks.network[$tmp.pnidx].network-data.network-request-input.network-input-parameters.param[$paramidx].value`' />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </for>

+                                <switch test="`$prop.topology == 'hub-spoke'`">

+                                    <outcome value='false'>

+                                        <block></block>

+                                    </outcome>

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <for index='ppidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name='prop.ar.provided-allotted-resource-id' value='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$ppidx].allotted-resource-id`' />

+                                                    </set>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                        <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>

+                                                        <parameter name="outputPath" value="tmp.ar-url-connection"/>

+                                                        <parameter name="target" value="{allotted-resource-id}"/>

+                                                        <parameter name="replacement" value="`$prop.ar.provided-allotted-resource-id`"/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />

+                                                        <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                        <parameter name='format' value='json' />

+                                                        <parameter name='httpMethod' value='GET' />

+                                                        <parameter name="responsePrefix" value="mdsal-providedAr" />

+                                                        <outcome value='success'>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <return status='failure'>

+                                                                <parameter name='ack-final' value='Y'/>

+                                                                <parameter name="error-code" value="404" />

+                                                                <parameter name="error-message" value="Error: SOTN resource not found" />

+                                                            </return>

+                                                        </outcome>

+                                                    </execute>

+                                                    <for index="aridx" start="0" end="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`">

+                                                        <block atomic="true">

+                                                            <switch test="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].name == 'Role'`">

+                                                                <outcome value='true'>

+                                                                    <set>

+                                                                        <parameter name='prop.role' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$aridx].value`' />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </for>

+                                                    <switch test="`$prop.role == hub`">

+                                                        <outcome value='false'>

+                                                            <block></block>

+                                                        </outcome>

+                                                        <outcome value='true'>

+                                                            <block atomic="true">

+                                                                <set>

+                                                                    <parameter name='prop.ar-service-instance-id' value='`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id`' />

+                                                                </set>

+                                                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                                                    <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>

+                                                                    <parameter name="outputPath" value="tmp.ar-url-connection"/>

+                                                                    <parameter name="target" value="{service-instance-id}"/>

+                                                                    <parameter name="replacement" value="`$prop.ar-service-instance-id`"/>

+                                                                </execute>

+                                                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                    <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />

+                                                                    <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                                                    <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                                                    <parameter name='format' value='json' />

+                                                                    <parameter name='httpMethod' value='GET' />

+                                                                    <parameter name="responsePrefix" value="mdsal-arsd" />

+                                                                    <outcome value='success'>

+                                                                        <block></block>

+                                                                    </outcome>

+                                                                    <outcome value='Other'>

+                                                                        <return status='failure'>

+                                                                            <parameter name='ack-final' value='Y'/>

+                                                                            <parameter name="error-code" value="404" />

+                                                                            <parameter name="error-message" value="Error: SDWAN service-data not found" />

+                                                                        </return>

+                                                                    </outcome>

+                                                                </execute>

+                                                                <for index='arvidx' start='0' end='`$mdsal-arsd.service-data.vnfs.vnf_length`' >

+                                                                    <block atomic="true">

+                                                                        <switch test="`$mdsal-arsd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSDWANPortInstance'`">

+                                                                            <outcome value='true'>

+                                                                                <block atomic="true">

+                                                                                    <set>

+                                                                                        <parameter name='tmp.portvidx' value='`$arvidx`' />

+                                                                                    </set>

+                                                                                    <for index="wportidx" start="0" end="`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">

+                                                                                        <block atomic="true">

+                                                                                            <switch test="`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].name == 'transportNetworkName'`">

+                                                                                                <outcome value='true'>

+                                                                                                    <block atomic="true">

+                                                                                                        <switch test="`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].value == $prop.spoke.transportNetworkName`">

+                                                                                                            <outcome value='true'>

+                                                                                                                <block atomic="true">

+                                                                                                                    <set>

+                                                                                                                        <parameter name='tmp.wanportvidx' value='`$arvidx`' />

+                                                                                                                    </set>

+                                                                                                                    <set>

+                                                                                                                        <parameter name='prop.hub.transportNetworkName' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.portvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].value`' />

+                                                                                                                    </set>

+                                                                                                                </block>

+                                                                                                            </outcome>

+                                                                                                        </switch>

+                                                                                                    </block>

+                                                                                                </outcome>

+                                                                                            </switch>

+                                                                                        </block>

+                                                                                    </for>

+                                                                                </block>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                        <switch test="`$mdsal-arsd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`">

+                                                                            <outcome value='true'>

+                                                                                <set>

+                                                                                    <parameter name='tmp.devicevidx' value='`$arvidx`' />

+                                                                                </set>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                        <switch test="`$mdsal-arsd.service-data.vnfs.vnf[$arvidx].vnf-data.request-information.request-action == 'ActivateSiteInstance'`">

+                                                                            <outcome value='true'>

+                                                                                <set>

+                                                                                    <parameter name='tmp.sitevidx' value='`$arvidx`' />

+                                                                                </set>

+                                                                            </outcome>

+                                                                        </switch>

+                                                                    </block>

+                                                                </for>

+                                                                <block atomic="true">

+                                                                    <switch test="`$tmp.wanportvidx`">

+                                                                        <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 (port) not found in service-data" />

+                                                                            </return>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                    <switch test="`$tmp.devicevidx`">

+                                                                        <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 (device) not found in service-data" />

+                                                                            </return>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                    <switch test="`$tmp.sitevidx`">

+                                                                        <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 (site) not found in service-data" />

+                                                                            </return>

+                                                                        </outcome>

+                                                                    </switch>

+                                                                </block>

+                                                                <switch test="`$prop.hub.transportNetworkName == $prop.spoke.transportNetworkName`">

+                                                                    <outcome value='false'>

+                                                                        <block></block>

+                                                                    </outcome>

+                                                                    <outcome value='true'>

+                                                                        <block atomic="true">

+                                                                            <for index="wportidx" start="0" end="`$mdsal-arsd.service-data.vnfs.vnf[$tmp.wanportvidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">

+                                                                                <block atomic="true">

+                                                                                    <switch test="`$mdsal-arsd.service-data.vnfs.vnf[$tmp.wanportvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].name == 'wanPortId'`">

+                                                                                        <outcome value='true'>

+                                                                                            <set>

+                                                                                                <parameter name='prop.hub.wanPortId' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.wanportvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].value`' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                    <switch test="`$mdsal-arsd.service-data.vnfs.vnf[$tmp.wanportvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].name == 'providerIpAddress'`">

+                                                                                        <outcome value='true'>

+                                                                                            <set>

+                                                                                                <parameter name='prop.hub.providerIpAddress' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.wanportvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].value`' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                    <switch test="`$mdsal-arsd.service-data.vnfs.vnf[$tmp.wanportvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].name == 'ipAddress'`">

+                                                                                        <outcome value='true'>

+                                                                                            <set>

+                                                                                                <parameter name='prop.hub.ipAddress' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.wanportvidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$wportidx].value`' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                            </for>

+                                                                            <set>

+                                                                                <parameter name='prop.hubTnpId' value='$prop.hub.wanPortId' />

+                                                                            </set>

+                                                                            <for index="deviceidx" start="0" end="`$mdsal-arsd.service-data.vnfs.vnf[$tmp.devicevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">

+                                                                                <block atomic="true">

+                                                                                    <switch test="`$mdsal-arsd.service-data.vnfs.vnf[$tmp.devicevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].name == 'deviceId'`">

+                                                                                        <outcome value='true'>

+                                                                                            <set>

+                                                                                                <parameter name='prop.hub.deviceId' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.devicevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                            </for>

+                                                                            <for index="siteidx" start="0" end="`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">

+                                                                                <block atomic="true">

+                                                                                    <switch test="`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'name'`">

+                                                                                        <outcome value='true'>

+                                                                                            <set>

+                                                                                                <parameter name='prop.hub.siteName' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                    <switch test="`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].name == 'siteId'`">

+                                                                                        <outcome value='true'>

+                                                                                            <set>

+                                                                                                <parameter name='prop.hub.siteId' value='`$mdsal-arsd.service-data.vnfs.vnf[$tmp.sitevidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$siteidx].value`' />

+                                                                                            </set>

+                                                                                        </outcome>

+                                                                                    </switch>

+                                                                                </block>

+                                                                            </for>

+                                                                            <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>

+                                                                                <outcome value='ActivateSDWANAttachmentInstance'>

+                                                                                    <block atomic="true">

+                                                                                        <set>

+                                                                                            <parameter name='prop.hub.ipAddress' value="10.2.0.2" />

+                                                                                            <parameter name='prop.hub.providerIpAddress' value="10.2.0.0/16" />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='prop.route.vpnId' value='`$prop.vpnId`' />

+                                                                                            <parameter name='prop.route.siteId' value='`$prop.hub.siteId`' />

+                                                                                            <parameter name='prop.route.deviceId' value='`$prop.hub.deviceId`' />

+                                                                                            <parameter name='prop.route.providerIpAddress' value='`$prop.hub.providerIpAddress`' />

+                                                                                            <parameter name='prop.route.wanportId' value='`$prop.spoke.wanPortId`' />

+                                                                                            <parameter name='prop.route.ipAddress' value='`$prop.hub.ipAddress`' />

+                                                                                        </set>

+                                                                                        <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'`" />

+                                                                                            <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="underlayHubResp"/>

+                                                                                            <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='prop.spoke.ipAddress' value="10.3.0.1" />

+                                                                                            <parameter name='prop.spoke.providerIpAddress' value="10.3.0.0/16" />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='prop.route.vpnId' value='`$prop.vpnId`' />

+                                                                                            <parameter name='prop.route.siteId' value='`$prop.spoke.siteId`' />

+                                                                                            <parameter name='prop.route.deviceId' value='`$prop.spoke.deviceId`' />

+                                                                                            <parameter name='prop.route.providerIpAddress' value='`$prop.spoke.providerIpAddress`' />

+                                                                                            <parameter name='prop.route.wanportId' value='`$prop.hub.wanPortId`' />

+                                                                                            <parameter name='prop.route.ipAddress' value='`$prop.spoke.ipAddress`' />

+                                                                                        </set>

+                                                                                        <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'`" />

+                                                                                            <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='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubSiteId' value='`$prop.hub.siteId`' />

+                                                                                            <!--parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].spokeSiteId' value='`$prop.spoke.siteId`' /-->

+                                                                                            <parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].hubRouteId' value='`$underlayHubResp.success[0].id`' />

+                                                                                            <parameter name='prop.underlay.routeIds[$prop.underlay.routeIds_length].spokeRouteId' value='`$underlayspokeResp.success[0].id`' />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='prop.underlay.routeIds_length' value='`$prop.underlay.routeIds_length + 1`' />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].hubSiteName' value='`$prop.hub.siteName`' />

+                                                                                            <parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].hubSiteId' value='`$prop.hub.siteId`' />

+                                                                                            <parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].spokeSiteName' value='`$prop.spoke.siteName`' />

+                                                                                            <parameter name='prop.provision.siteIds[$prop.provision.siteIds_length].spokeSiteId' value='`$prop.spoke.siteId`' />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='prop.provision.siteIds_length' value='`$prop.provision.siteIds_length + 1`' />

+                                                                                        </set>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                                <outcome value='DeactivateSDWANAttachmentInstance'>

+                                                                                    <block atomic="true">

+                                                                                        <for index="uidx" start="0" end="`$prop.underlay.routeIds_length`">

+                                                                                            <block atomic="true">

+                                                                                                <switch test="`$prop.underlay.routeIds[$uidx].hubSiteId == $prop.hub.siteId`">

+                                                                                                    <outcome value='true'>

+                                                                                                        <block atomic="true">

+                                                                                                            <set>

+                                                                                                                <parameter name='prop.hubRouteId' value='`$prop.underlay.routeIds[$uidx].hubRouteId`' />

+                                                                                                                <parameter name='prop.spokeRouteId' value='`$prop.underlay.routeIds[$uidx].spokeRouteId`' />

+                                                                                                            </set>

+                                                                                                        </block>

+                                                                                                    </outcome>

+                                                                                                </switch>

+                                                                                            </block>

+                                                                                        </for>

+                                                                                        <set>

+                                                                                            <parameter name='prop.hub.ipAddress' value="10.2.0.2" />

+                                                                                            <parameter name='prop.hub.providerIpAddress' value="10.2.0.0/16" />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='prop.route.id' value='`$prop.hubRouteId`' />

+                                                                                            <parameter name='prop.route.vpnId' value='`$prop.vpnId`' />

+                                                                                            <parameter name='prop.route.siteId' value='`$prop.hub.siteId`' />

+                                                                                            <parameter name='prop.route.deviceId' value='`$prop.hub.deviceId`' />

+                                                                                            <parameter name='prop.route.providerIpAddress' value='`$prop.hub.providerIpAddress`' />

+                                                                                            <parameter name='prop.route.wanportId' value='`$prop.spoke.wanPortId`' />

+                                                                                            <parameter name='prop.route.ipAddress' value='`$prop.hub.ipAddress`' />

+                                                                                        </set>

+                                                                                        <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="underlayHubResp"/>

+                                                                                            <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='prop.spoke.ipAddress' value="10.3.0.1" />

+                                                                                            <parameter name='prop.spoke.providerIpAddress' value="10.3.0.0/16" />

+                                                                                        </set>

+                                                                                        <set>

+                                                                                            <parameter name='prop.route.id' value='`$prop.spokeRouteId`' />

+                                                                                            <parameter name='prop.route.vpnId' value='`$prop.vpnId`' />

+                                                                                            <parameter name='prop.route.siteId' value='`$prop.spoke.siteId`' />

+                                                                                            <parameter name='prop.route.deviceId' value='`$prop.spoke.deviceId`' />

+                                                                                            <parameter name='prop.route.providerIpAddress' value='`$prop.spoke.providerIpAddress`' />

+                                                                                            <parameter name='prop.route.wanportId' value='`$prop.hub.wanPortId`' />

+                                                                                            <parameter name='prop.route.ipAddress' value='`$prop.spoke.ipAddress`' />

+                                                                                        </set>

+                                                                                        <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>

+                                                                                    </block>

+                                                                                </outcome>

+                                                                            </switch>

+                                                                        </block>

+                                                                    </outcome>

+                                                                </switch>

+                                                            </block>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </for>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>

+                                    <outcome value='ActivateSDWANAttachmentInstance'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='tmp.routeString' value="" />

+                                            </set>

+                                            <for index="jidx" start="0" end="`$prop.underlay.routeIds_length`">

+                                                <block atomic="true">

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >

+                                                        <parameter name="source" value='`$prop.underlay.routeIds[$jidx].hubSiteId`'/>

+                                                        <parameter name="outputPath" value="tmp.concat"/>

+                                                        <parameter name="target" value=","/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >

+                                                        <parameter name="source" value='`$tmp.concat`'/>

+                                                        <parameter name="outputPath" value="tmp.concat1"/>

+                                                        <parameter name="target" value='`$prop.underlay.routeIds[$jidx].hubRouteId`'/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >

+                                                        <parameter name="source" value='`$tmp.concat1`'/>

+                                                        <parameter name="outputPath" value="tmp.concat2"/>

+                                                        <parameter name="target" value=","/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >

+                                                        <parameter name="source" value='`$tmp.concat2`'/>

+                                                        <parameter name="outputPath" value="tmp.concat3"/>

+                                                        <parameter name="target" value='`$prop.underlay.routeIds[$jidx].spokeRouteId`'/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >

+                                                        <parameter name="source" value='`$tmp.concat3`'/>

+                                                        <parameter name="outputPath" value="tmp.concat4"/>

+                                                        <parameter name="target" value=" | "/>

+                                                    </execute>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >

+                                                        <parameter name="source" value='`$tmp.routeString`'/>

+                                                        <parameter name="outputPath" value="tmp.routeString"/>

+                                                        <parameter name="target" value='`$tmp.concat4`'/>

+                                                    </execute>

+                                                </block>

+                                            </for>

+                                            <set>

+                                                <parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value="underlayRouteIds" />

+                                                <parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$tmp.routeString`' />

+                                            </set>

+                                            <set>

+                                                <parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                    <outcome value='DeactivateSDWANAttachmentInstance'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$prop.spoke.siteidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length - 1`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <for index='providx' start='0' end='`$prop.provision.siteIds_length`' >

+                <block atomic="true">

+                    <set>

+                        <parameter name='prop.provision.hubSitename' value='`$prop.provision.siteIds[$providx].hubSiteName`' />

+                        <parameter name='prop.provision.spokeSitename' value='`$prop.provision.siteIds[$providx].spokeSiteName`' />

+                        <parameter name='prop.provision.hubspokesite[0]' value='`$prop.provision.siteIds[$providx].hubSiteId`' />

+                        <parameter name='prop.provision.hubspokesite[1]' value='`$prop.provision.siteIds[$providx].spokeSiteId`' />

+                        <parameter name='prop.provision.hubspokesite_length' value='2' />

+                    </set>

+                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                        <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-site-provision.json'`" />

+                        <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/sites/provision-urls'`" />

+                        <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="provisionUrlRsp"/>

+                        <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 provision url rest api" />

+                            </return>

+                        </outcome>

+                        <outcome value='success'></outcome>

+                    </execute>

+                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                        <parameter name="file" value="`'/opt/opendaylight/current/data/log/' + 'HUB-' + $prop.provision.hubSitename + '-SPOKE-' + $prop.provision.spokeSitename + '-provisionUrl'`"/>

+                        <parameter name="field1" value="__TIMESTAMP__"/>

+                        <parameter name="field2" value='`$provisionUrlRsp.success[0].url`'/>

+                    </record>

+                </block>

+            </for>

+            <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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-activate.xml
new file mode 100644
index 0000000..4c0e09f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-activate.xml
@@ -0,0 +1,232 @@
+<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='site-vnf-topology-operation-activate' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='prop.site.sdwan' value="false" />

+            </set>

+            <switch test='`$service-data.vnfs.vnf_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='prop.site.deviceId_length' value='0' />

+                        </set>

+                        <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <block atomic="true">

+                                <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='tmp.vidx' value='`$vidx`' />

+                                                <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />

+                                            </set>

+                                            <set>

+                                                <parameter name='vnf-request-input.' value='`$ctx.vnf-data.vnf-data.vnf-request-input.`' />

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-site-param' mode='sync' ></call>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`">

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <for index="deviceidx" start="0" end="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">

+                                                <block>

+                                                    <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].name == 'deviceId'`">

+                                                        <outcome value='true'>

+                                                            <set>

+                                                                <parameter name='prop.site.deviceId[$prop.site.deviceId_length]' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-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>

+                        <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>

+                    </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[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' /-->

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].name' value='siteId' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length].value' value='`$site-result.success[0].id`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />

+            </set>

+            <set>

+                <parameter name='vnfId' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />

+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+            </set>

+            <set>

+                <!--parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' 

+      key='site-resource.site-resource-id = $vnf-topology-operation-input.vnf-information.vnf-id' >

+                <parameter name='site-resource-id' value='`$vnf-topology-operation-input.vnf-information.vnf-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-create.xml
new file mode 100644
index 0000000..f431eb6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-create.xml
@@ -0,0 +1,101 @@
+<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='site-vnf-topology-operation-create' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='vnf-index' value='0' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>

+                                <outcome value='true'>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id

+      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <for index="idx" start="0" end="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`">

+                <block>

+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                        <parameter name="original_string" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`'/>

+                        <parameter name="regex" value="_"/>

+                        <parameter name="ctx_memory_result_key" value="param-prefix"/>

+                    </execute>

+                    <set>

+                        <parameter name="`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>

+                    </set>

+                </block>

+            </for>

+            <set>

+                <parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-site-param' mode='sync' ></call>

+            <set>

+                <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >

+                <parameter name="ctx-destination" value="prop.vnf-index"/>

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-index`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+            </set>

+            <set>

+                <parameter name='vnfId' value='`$prop.vnf-index`' />

+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` " />

+            </set>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' 

+      key='site-resource.site-resource-id = $prop.vnf-index' >

+                <parameter name='site-resource-id' value='`$prop.vnf-index`' />

+                <parameter name='site-resource-name' value='`$prop.site.name`' />

+                <parameter name='description' value='`$prop.site.description`' />

+                <parameter name='type' value='`$prop.site.type`' />

+                <parameter name='role' value='`$prop.site.role`' />

+                <parameter name='operational-status' value='Created' />

+                <parameter name='model-customization-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />

+                <parameter name='model-invariant-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />

+                <parameter name='model-version-id' value='`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />

+                <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-index  + '/vnf-data/'` " />

+            </save>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' 

+      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id 

+         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id 

+         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' 

+      force="true" pfx="tmp.AnAI-data">

+                <parameter name="relationship-list.relationship[0].related-to" value="site-resource" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/site-resources/site-resource/' + $prop.vnf-index`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="site-resource.site-resource-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.vnf-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-deactivate.xml
new file mode 100644
index 0000000..4f90141
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-deactivate.xml
@@ -0,0 +1,190 @@
+<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='site-vnf-topology-operation-deactivate' mode='sync'>

+        <block atomic="true">

+            <block atomic="true">

+                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                    <parameter name="vnf-topology-operation-input.vnf-information.vnf-id" value="$vnf-topology-operation-input.vnf-information.vnf-id"/>

+                </execute>

+                <switch test="`$vnf-topology-operation-input.vnf-information.vnf-id`">

+                    <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-information.vnf-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-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                        </return>

+                    </outcome>

+                    <outcome value='Other'>

+                        <block atomic="true">

+                            <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                                <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='tmp.vidx' value='`$vidx`' />

+                                            <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].vnf-data.`' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                            </for>

+                            <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-information.vnf-id not found in service-data" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </block>

+                    </outcome>

+                </switch>

+                <switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-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="`'VNF is not in appropriate state for deactivate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`" />

+                        </return>

+                    </outcome>

+                </switch>

+            </block>

+            <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[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`' >

+                <block>

+                    <switch test="`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'type'`">

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='prop.site.type' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                    <parameter name='prop.site.sdwan' value="true" />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'siteId'`">

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='prop.site.siteId' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-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[$tmp.vidx].vnf-data.sdnc-request-header.' value='`$vnf-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='`$vnf-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='`$vnf-topology-operation-input.service-information.`' />

+            </set>

+            <set>

+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' 

+      key='site-resource.site-resource-id = $vnf-topology-operation-input.vnf-information.vnf-id' >

+                <parameter name='site-resource-id' value='`$vnf-topology-operation-input.vnf-information.vnf-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-delete.xml
new file mode 100644
index 0000000..38f118f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_site-vnf-topology-operation-delete.xml
@@ -0,0 +1,103 @@
+<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='site-vnf-topology-operation-delete' mode='sync'>
+        <block atomic="true">
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
+                <parameter name="vnf-topology-operation-input.vnf-information.vnf-id" value="$vnf-topology-operation-input.vnf-information.vnf-id"/>
+            </execute>
+            <switch test="`$vnf-topology-operation-input.vnf-information.vnf-id`">
+                <outcome value=''>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="vnf-request-input.vnf-input-parameters.name 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-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+                    </return>
+                </outcome>
+                <outcome value='Other'>
+                    <block atomic="true">
+                        <for index='nidx' start='0' end='`$service-data.vnfs.vnf_length`' >
+                            <switch test="`$service-data.vnfs.vnf[$nidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">
+                                <outcome value='true'>
+                                    <set>
+                                        <parameter name='tmp.nidx' value='`$nidx`' />
+                                        <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$nidx].vnf-data.`' />
+                                    </set>
+                                </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="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
+                                </return>
+                            </outcome>
+                        </switch>
+                    </block>
+                </outcome>
+            </switch>
+            <switch test='`$service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-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_length`' >
+                <block atomic="true">
+                    <switch test="`$service-data.vnfs.vnf[$lidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">
+                        <outcome value='false'>
+                            <block atomic="true">
+                                <set>
+                                    <parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$lidx].vnf-id`' />
+                                    <parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$lidx].vnf-data.`' />
+                                </set>
+                                <set>
+                                    <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />
+                                </set>
+                            </block>
+                        </outcome>
+                    </switch>
+                </block>
+            </for>
+            <set>
+                <parameter name="service-data.vnfs.vnf_length" value='`$prop.vnfidxLen`'/>
+            </set>
+            <set>
+                <parameter name="service-data.vnfs.vnf[$prop.vnfidxLen]." value=""/>
+            </set>
+            <set>
+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />
+                <parameter name='vnf-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'
+ + $vnf-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 = $vnf-topology-operation-input.vnf-information.vnf-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_validate-sdwan-network-input-parameters.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_validate-sdwan-network-input-parameters.xml
new file mode 100644
index 0000000..478fe4d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_validate-sdwan-network-input-parameters.xml
@@ -0,0 +1,305 @@
+<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-network-input-parameters' mode='sync'>

+        <block atomic="true">

+            <switch test='`$network-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='`$network-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='create'>

+                    <block atomic="true">

+                        <switch test='`$network-topology-operation-input.request-information.request-action`'>

+                            <outcome value='CreateSDWANConnectivityInstance'>

+                                <block atomic="true">

+                                    <for index="i" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">

+                                        <block>

+                                            <set>

+                                                <parameter name='tmp.name' value='' />

+                                                <parameter name='tmp.value' value='' />

+                                            </set>

+                                            <set>

+                                                <parameter name='tmp.name' value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$i].name`"/>

+                                                <parameter name='tmp.value' value="`$network-topology-operation-input.network-request-input.network-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="`'network-request-input.network-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="`'network-request-input.network-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="`'network-topology-operation-input.network-request-input.network-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='`$network-topology-operation-input.request-information.request-action`'>

+                        <outcome value='ActivateSDWANConnectivityInstance'>

+                            <block atomic="true">

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                    <parameter name="network-topology-operation-input.network-information.network-id" value="$network-topology-operation-input.network-information.network-id"/>

+                                </execute>

+                                <switch test="`$network-topology-operation-input.network-information.network-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.networks.network_length`'>

+                                    <outcome value=''>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic="true">

+                                            <for index='nidx' start='0' end='`$service-data.networks.network_length`' >

+                                                <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.nidx' value='`$nidx`' />

+                                                                <parameter name='ctx.network-data.' value='`$service-data.networks.network[$nidx].network-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="network-topology-operation-input.network-request-input.network-id not found in service-data" />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-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="`'Network is not in appropriate state for activate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-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='`$network-topology-operation-input.request-information.request-action`'>

+                        <outcome value='DeactivateSDWANConnectivityInstance'>

+                            <block atomic="true">

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                    <parameter name="network-topology-operation-input.network-information.network-id" value="$network-topology-operation-input.network-information.network-id"/>

+                                </execute>

+                                <switch test="`$network-topology-operation-input.network-information.network-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.networks.network_length`'>

+                                    <outcome value=''>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic="true">

+                                            <for index='nidx' start='0' end='`$service-data.networks.network_length`' >

+                                                <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.nidx' value='`$nidx`' />

+                                                                <parameter name='ctx.network-data.' value='`$service-data.networks.network[$nidx].network-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="network-topology-operation-input.network-request-input.network-id not found in service-data" />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-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="`'Network is not in appropriate state for deactivate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-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='`$network-topology-operation-input.request-information.request-action`'>

+                        <outcome value='DeleteSDWANConnectivityInstance'>

+                            <block atomic="true">

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                    <parameter name="network-topology-operation-input.network-information.network-id" value="$network-topology-operation-input.network-information.network-id"/>

+                                </execute>

+                                <switch test="`$network-topology-operation-input.network-information.network-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.networks.network_length`'>

+                                    <outcome value=''>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic="true">

+                                            <for index='nidx' start='0' end='`$service-data.networks.network_length`' >

+                                                <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.nidx' value='`$nidx`' />

+                                                                <parameter name='ctx.network-data.' value='`$service-data.networks.network[$nidx].network-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="network-topology-operation-input.network-request-input.network-id not found in service-data" />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-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="`'Network is not in appropriate state for delete. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-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="`$network-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />

+                    </return>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.xml b/sdnc-a1-controller/oam/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..60492b5
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.xml
@@ -0,0 +1,332 @@
+<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='`$vnf-index`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <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.vidx' 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.vidx`">

+                                                <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.vidx].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.vidx' 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.vidx`">

+                                                <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.vidx].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.vidx' 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.vidx`">

+                                                <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.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="`'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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-activate.xml
new file mode 100644
index 0000000..86099f3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-activate.xml
@@ -0,0 +1,77 @@
+<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='vnf-topology-operation-vpn-site-resource-activate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_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">

+                        <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <block>

+                                <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='tmp.vidx' value='`$vidx`' />

+                                            <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-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="`'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='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />

+            </set>

+            <set>

+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+            </set>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="generic-vnf"   

+		key="generic-vnf.vnf-id = $vnfId" >

+                <parameter name="orchestration-status" value="Active" />

+                <parameter name="vnf-type" value="some vnf-type" />

+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-create.xml
new file mode 100644
index 0000000..ceff5ba
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-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='vnf-topology-operation-vpn-site-resource-create' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='vnf-index' value='0' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name='vnf-index' value='`$service-data.vnfs.vnf_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <switch test='`$vnf-topology-operation-input.vnf-information.vnf-id == $service-data.vnfs.vnf[$idx].vnf-id`'>

+                                <outcome value='true'>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="`'VNF id ' + $service-data.vnfs.vnf[$idx].vnf-id

+      + ' already exists, and has order status ' + $service-data.vnfs.vnf[$idx].vnf-data.vnf-level-oper-status.order-status`" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <for index="idx" start="0" end="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`">

+                <block>

+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                        <parameter name="original_string" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`'/>

+                        <parameter name="regex" value="_"/>

+                        <parameter name="ctx_memory_result_key" value="param-prefix"/>

+                    </execute>

+                    <set>

+                        <parameter name="`vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>

+                    </set>

+                </block>

+            </for>

+            <set>

+                <parameter name='vnf-request-input.' value='`$vnf-topology-operation-input.vnf-request-input.`' />

+            </set>

+            <for index="idx" start="0" end="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`">

+                <block>

+                    <switch test="`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.vnfName' value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <set>

+                <parameter name='service-data.vnfs.vnf_length' value='`$vnf-index + 1`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >

+                <parameter name="ctx-destination" value="prop.vnf-id"/>

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-id' value='`$prop.vnf-id`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.' value='$vnf-topology-operation-input.vnf-information.' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-request-input.' value='$vnf-topology-operation-input.vnf-request-input.' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-information.vnf-id' value='`$prop.vnf-id`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.order-status' value='Created' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+            </set>

+            <set>

+                <parameter name='vnfId' value='`$prop.vnf-id`' />

+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $prop.vnf-id  + '/vnf-data/'` " />

+            </set>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="generic-vnf"   

+		key='generic-vnf.vnf-id = $prop.vnf-id' >

+                <parameter name="orchestration-status" value="Created" />

+                <parameter name="in-maint" value = "true" />

+                <parameter name="vnf-type" value='`$prop.vnfName`' />

+                <parameter name="vnf-name" value = "`$prop.vnfName`"/>

+                <parameter name="model-invariant-id" value = "`$vnf-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`"/>

+                <parameter name="model-version-id" value = "`$vnf-topology-operation-input.vnf-information.onap-model-information.model-uuid`"/>

+                <parameter name="model-customization-id" value = "`$vnf-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`"/>

+            </save>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' 

+      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id

+         AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.global-customer-id 

+         AND service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.service-information.subscription-service-type' 

+      force="true" pfx="tmp.AnAI-data">

+                <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/generic-vnfs/generic-vnf/' + $prop.vnf-id`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="generic-vnf.vnf-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.vnf-id`" />

+                <!--key='service-instance.service-instance-id = $service-data.service-information.service-instance-id -->

+                <!--key='service-instance.service-instance-id = $service-data.service-instance-id -->

+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-deactivate.xml
new file mode 100644
index 0000000..95c6707
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-deactivate.xml
@@ -0,0 +1,89 @@
+<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='vnf-topology-operation-vpn-site-resource-deactivate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_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">

+                        <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <block>

+                                <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='tmp.vidx' value='`$vidx`' />

+                                                <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />

+                                            </set>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                        <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>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-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="`'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='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' /-->

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />

+            </set>

+            <set>

+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $vnf-topology-operation-input.vnf-information.vnf-id  + '/vnf-data/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='PendingDelete' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />

+            </set>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="generic-vnf"   

+		key="generic-vnf.vnf-id = $vnfId" >

+                <parameter name="orchestration-status" value="PendingDelete" />

+                <parameter name="vnf-type" value="some vnf-type" />

+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-delete.xml
new file mode 100644
index 0000000..87e6c52
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vnf-topology-operation-vpn-site-resource-delete.xml
@@ -0,0 +1,98 @@
+<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='vnf-topology-operation-vpn-site-resource-delete' mode='sync'>

+        <block atomic="true">

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                <parameter name="vnf-topology-operation-input.vnf-information.vnf-id" value="$vnf-topology-operation-input.vnf-information.vnf-id"/>

+            </execute>

+            <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>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <for index='nidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                            <switch test="`$service-data.vnfs.vnf[$nidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name='tmp.nidx' value='`$nidx`' />

+                                        <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$nidx].vnf-data.`' />

+                                    </set>

+                                </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="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-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_length`' >

+                <block atomic="true">

+                    <switch test="`$service-data.vnfs.vnf[$lidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">

+                        <outcome value='false'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$lidx].vnf-id`' />

+                                    <parameter name='service-data.vnfs.vnf[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$lidx].vnf-data.`' />

+                                </set>

+                                <set>

+                                    <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <set>

+                <parameter name="service-data.vnfs.vnf_length" value='`$prop.vnfidxLen`'/>

+            </set>

+            <set>

+                <parameter name="service-data.vnfs.vnf[$prop.vnfidxLen]." value=""/>

+            </set>

+            <set>

+                <parameter name='vnfId' value='`$vnf-topology-operation-input.vnf-information.vnf-id`' />

+                <parameter name='vnf-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vnf-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'` " />

+            </set>

+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="generic-vnf"   

+		key="generic-vnf.vnf-id = $vnfId" >

+                <parameter name="orchestration-status" value="PendingDelete" />

+                <parameter name="vnf-type" value="some vnf-type" />

+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-activate.xml
new file mode 100644
index 0000000..3e3b395
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-activate.xml
@@ -0,0 +1,673 @@
+<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='sotn-attachment-topology-operation-activate' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+                <parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/connection-attachment-topology/'` " />

+            </set>

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>

+                <parameter name="outputPath" value="tmp.ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block atomic="true">

+                        <switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>

+                            <outcome value='1'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='connection-attachment-ar.' value='$mdsal-ar.connection-attachment-allotted-resource[0].' />

+                                    </set>

+                                    <switch test='`$connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+                                        <outcome value='Created'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='PendingDelete'>

+                                            <block></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="`'Existing connection-attachment-allotted-resource with order status of ' + $connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+                                        <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-ar.allotted-resource-status.rpc-action`' />

+                                        <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="Error: Connection attachment resource not exist" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="404" />

+                            <parameter name="error-message" value="Error: Connection attachment resource not exist" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <block atomic="true">

+                <call module='GENERIC-RESOURCE-API' rpc='sotn-get-saved-ar-param' mode='sync' ></call>

+            </block>

+            <set>

+                <parameter name='tmp.ar.parent-service-instance-id' value="`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>

+                <parameter name="outputPath" value="tmp.ar-url-psd"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-psd" />

+                <outcome value='success'>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="Error: Parent service data not available" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='tmp.found-in-ar' value='false' />

+                <parameter name='tmp.found-in-network' value='false' />

+                <parameter name='tmp.ep-available' value='false' />

+            </set>

+            <switch test='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`'>

+                <outcome value='2'>

+                    <block atomic="true">

+                        <for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >

+                            <switch test="`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">

+                                <outcome value='true'>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='false'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.pidx' value='`$pidx`' />

+                                            <parameter name='tmp.provided-ar.' value='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].`' />

+                                            <parameter name='tmp.found-in-ar' value='true' />

+                                            <parameter name='tmp.ep-available' value='true' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$tmp.found-in-ar`'>

+                            <outcome value='true'>

+                                <block atomic="true">

+                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                                        <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>

+                                        <parameter name="outputPath" value="tmp.ar-other-url-connection"/>

+                                        <parameter name="target" value="{allotted-resource-id}"/>

+                                        <parameter name="replacement" value="`$tmp.provided-ar.allotted-resource-id`"/>

+                                    </execute>

+                                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-other-url-connection`' />

+                                        <parameter name='restapiUser' value='`$prop.controller.user`' />

+                                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                                        <parameter name='format' value='json' />

+                                        <parameter name='httpMethod' value='GET' />

+                                        <parameter name="responsePrefix" value="mdsal-other-ar" />

+                                        <outcome value='success'>

+                                            <block></block>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <return status='failure'>

+                                                <parameter name='ack-final' value='Y'/>

+                                                <parameter name="error-code" value="404" />

+                                                <parameter name="error-message" value="Error: SOTN provided attachment resource not found" />

+                                            </return>

+                                        </outcome>

+                                    </execute>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='1'>

+                    <block atomic="true">

+                        <switch test='`$mdsal-psd.service-data.networks.network_length`'>

+                            <outcome value='1'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.network.' value='`$mdsal-psd.service-data.networks.network[0].`' />

+                                    </set>

+                                    <for index='nidx' start='0' end='`$tmp.network.network-data.network-request-input.network-input-parameters.param_length`' >

+                                        <block>

+                                            <switch test="`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'access-node-id'`">

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='tmp.found-in-network' value='true' />

+                                                        <parameter name='tmp.ep-available' value='true' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                            <switch test="`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'name'`">

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-name' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />

+                                                        <parameter name='ietf-eth-tran-service_etht-svc.globals.etht-svc-bandwidth-profiles[0].bandwidth-profile-name' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />

+                                                        <parameter name='ietf-eth-tran-service:etht-svc.etht-svc-instances[0].etht-svc-access-ports[0].ingress-egress-bandwidth-profile-name' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />

+                                                        <parameter name='ietf-eth-tran-service:etht-svc.etht-svc-instances[0].etht-svc-access-ports[1].ingress-egress-bandwidth-profile-name' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                            <switch test="`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'description'`">

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='prop.global.sotn.etht-svc-descr' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                            <switch test="`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'tenantId'`">

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='prop.global.sotn.tenantId' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                            <switch test="`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'vpnType'`">

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='prop.global.sotn.vpnType' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                            <switch test="`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'cir'`">

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='ietf-eth-tran-service_etht-svc.globals.etht-svc-bandwidth-profiles[0].CIR' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                            <switch test="`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'eir'`">

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='ietf-eth-tran-service_etht-svc.globals.etht-svc-bandwidth-profiles[0].EIR' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                            <switch test="`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'colorAware'`">

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='ietf-eth-tran-service_etht-svc.globals.etht-svc-bandwidth-profiles[0].color-aware' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                            <switch test="`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'couplingFlag'`">

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='ietf-eth-tran-service_etht-svc.globals.etht-svc-bandwidth-profiles[0].coupling-flag' value='`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].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>

+                            </outcome>

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="Error: Incorrect state found more then 1 network" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="Error: End points not available" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$tmp.ep-available`'>

+                <outcome value='false'>

+                    <block></block>

+                </outcome>

+                <outcome value='true'>

+                    <block atomic="true">

+                        <switch test='`$tmp.found-in-ar`'>

+                            <outcome value='true'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.ep.parameters.' value='`$mdsal-other-ar.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='false'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.ep.parameters.' value='`$tmp.network.network-data.network-request-input.network-input-parameters.`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <for index='idx' start='0' end='`$tmp.ep.parameters.param_length`'>

+                            <block>

+                                <switch test="`$tmp.ep.parameters.param[$idx].name == 'access-node-id'`">

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='prop.remote.connection-attachment.access-node-id' value='`$tmp.ep.parameters.param[$idx].value`' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                                <switch test="`$tmp.ep.parameters.param[$idx].name == 'access-ltp-id'`">

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='prop.remote.connection-attachment.access-ltp-id' value='`$tmp.ep.parameters.param[$idx].value`' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                                <switch test="`$tmp.ep.parameters.param[$idx].name == 'clientSignal'`">

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='prop.remote.connection-attachment.clientSignal' value='`$tmp.ep.parameters.param[$idx].value`' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                                <switch test="`$tmp.ep.parameters.param[$idx].name == 'cVLAN'`">

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='prop.remote.connection-attachment.cVLAN' value='`$tmp.ep.parameters.param[$idx].value`' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                                <switch test="`$tmp.ep.parameters.param[$idx].name == 'access-provider-id'`">

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='prop.remote.connection-attachment.access-provider-id' value='`$tmp.ep.parameters.param[$idx].value`' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                                <switch test="`$tmp.ep.parameters.param[$idx].name == 'access-client-id'`">

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='prop.remote.connection-attachment.access-client-id' value='`$tmp.ep.parameters.param[$idx].value`' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                                <switch test="`$tmp.ep.parameters.param[$idx].name == 'access-topology-id'`">

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='prop.remote.connection-attachment.access-topology-id' value='`$tmp.ep.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 atomic="true">

+                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/' + $prop.restapi.oof-getpath.templatefile`" />

+                                <parameter name="restapiUrl" value="`$prop.restapi.connection-oof-url`" />

+                                <parameter name="restapiUser" value="`$prop.oof.user`" />

+                                <parameter name="restapiPassword" value="`$prop.oof.password`" />

+                                <parameter name="format" value="json"/>

+                                <parameter name="httpMethod" value="post"/>

+                                <parameter name="responsePrefix" value="oof"/>

+                                <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 OOF api" />

+                                    </return>

+                                </outcome>

+                                <outcome value='success'>

+                                    <block></block>

+                                </outcome>

+                            </execute>

+                            <for index='vidx' start='0' end='`$oof.vpns_length`' >

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='oof.vpn.' value='`$oof.vpns[$vidx].`' />

+                                    </set>

+                                    <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="pnf" 

+		key="pnf.pnf-name = $oof.vpn.access-node-id 

+		AND depth = '0'"

+        pfx='tmp.aai.pnf' local-only='false' >

+                                        <outcome value='success'>

+                                            <set>

+                                                <parameter name='tmp.thirdparty-sdnc-id' value="`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`" />

+                                            </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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-id`" />

+                                            </return>

+                                        </outcome>

+                                    </get-resource>

+                                    <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="esr-thirdparty-sdnc" 

+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $tmp.thirdparty-sdnc-id 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>

+                                    <set>

+                                        <parameter name='ietf-eth-tran-service_etht-svc.globals.etht-svc-bandwidth-profiles[0].bandwidth-profile-type' value='ietf-eth-tran-types:mef-10-bwp' />

+                                        <parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-type' value='ietf-eth-tran-types:p2p-svc' />

+                                        <parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].admin-status' value='ietf-te-types:tunnel-state-up' />

+                                        <parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[0].access-port-id' value='0' />

+                                        <parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[0].service-classification-type' value='ietf-eth-tran-types:port-classification' />

+                                        <parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[1].access-port-id' value='1' />

+                                        <parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[1].service-classification-type' value='ietf-eth-tran-types:port-classification' />

+                                    </set>

+                                    <set>

+                                        <parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].access-provider-id' value='`$oof.vpn.access-provider-id`' />

+                                        <parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].access-client-id' value='`$oof.vpn.access-client-id`' />

+                                        <parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].access-topology-id' value='`$oof.vpn.access-topology-id`' />

+                                        <parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[0].access-node-id' value='`$oof.vpn.access-node-id`' />

+                                        <parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[0].access-ltp-id' value='`$oof.vpn.src-access-ltp-id`' />

+                                        <parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[1].access-node-id' value='`$oof.vpn.access-node-id`' />

+                                        <parameter name='ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-access-ports[1].access-ltp-id' value='`$oof.vpn.dst-access-ltp-id`' />

+                                    </set>

+                                    <switch test="`$prop.sdncRestApi.token_id`">

+                                        <outcome value=''>

+                                            <execute plugin='org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode' method='sendRequest' >

+                                                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/ietf-eth-tran-service:etht-svc'`" />

+                                                <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="patch"/>

+                                                <parameter name='dirPath' value="/opt/sdnc/restapi/yang" />

+                                                <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"/>

+                                                <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>

+                                        </outcome>

+                                        <outcome value='Other'>

+                                            <execute plugin='org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode' method='sendRequest' >

+                                                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/ietf-eth-tran-service:etht-svc'`" />

+                                                <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="patch"/>

+                                                <parameter name='dirPath' value="/opt/sdnc/restapi/yang" />

+                                                <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 rest api" />

+                                                    </return>

+                                                </outcome>

+                                                <outcome value='success'>

+                                                    <block atomic="true"></block>

+                                                </outcome>

+                                            </execute>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='tmp.vpnName' value="`$oof.vpn.access-node-id + '-' + $ietf-eth-tran-service_etht-svc.etht-svc-instances[0].etht-svc-name`" />

+                                    </set>

+                                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='vpn-binding' 

+      key='vpn-binding.vpn-id = $tmp.vpnName' >

+                                        <parameter name='vpn-id' value='`$tmp.vpnName`' />

+                                        <parameter name='vpn-name' value='`$tmp.vpnName`' />

+                                        <parameter name='access-provider-id' value='`$oof.vpn.access-provider-id`' />

+                                        <parameter name='access-client-id' value='`$oof.vpn.access-client-id`' />

+                                        <parameter name='access-topology-id' value='`$oof.vpn.access-topology-id`' />

+                                        <parameter name='src-access-node-id' value='`$oof.vpn.access-node-id`' />

+                                        <parameter name='src-access-ltp-id' value='`$oof.vpn.src-access-ltp-id`' />

+                                        <parameter name='dst-access-node-id' value='`$oof.vpn.access-node-id`' />

+                                        <parameter name='dst-access-ltp-id' value='`$oof.vpn.dst-access-ltp-id`' />

+                                        <parameter name='vpn-type' value='`$prop.global.sotn.vpnType`' />

+                                        <parameter name='operational-status' value='Created' />

+                                        <parameter name='model-customization-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`' />

+                                        <parameter name='model-invariant-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`' />

+                                        <parameter name='model-version-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-uuid`' />

+                                    </save>

+                                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='vpn-binding:relationship-list' 

+      key='vpn-binding.vpn-id = $tmp.vpnName' 

+      force="true" pfx="tmp.AnAI-data">

+                                        <parameter name="relationship-list.relationship[0].related-to" value="connectivity" />

+                                        <parameter name="relationship-list.relationship[0].related-link" value="`'/network/connectivities/connectivity/' + $mdsal-psd.service-data.networks.network[0].network-id`" />

+                                        <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="connectivity.connectivity-id" />

+                                        <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$mdsal-psd.service-data.networks.network[0].network-id`" />

+                                    </save>

+                                    <set>

+                                        <parameter name='src-ltpId' value="`'nodeId-' + $oof.vpn.access-node-id + '-ltpId-' + $oof.vpn.src-access-ltp-id`" />

+                                        <parameter name='dst-ltpId' value="`'nodeId-' + $oof.vpn.access-node-id + '-ltpId-' + $oof.vpn.dst-access-ltp-id`" />

+                                    </set>

+                                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='vpn-binding:relationship-list' 

+      key='vpn-binding.vpn-id = $tmp.vpnName' 

+      force="true" pfx="tmp.AnAI-data">

+                                        <parameter name="relationship-list.relationship[0].related-to" value="p-interface" />

+                                        <parameter name="relationship-list.relationship[0].related-link" value="`'/network/pnfs/pnf/' + $oof.vpn.access-node-id + '/p-interfaces/p-interface/' + $src-ltpId`" />

+                                        <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="p-interface.interface-name" />

+                                        <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$src-ltpId`" />

+                                    </save>

+                                    <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='vpn-binding:relationship-list' 

+      key='vpn-binding.vpn-id = $tmp.vpnName' 

+      force="true" pfx="tmp.AnAI-data">

+                                        <parameter name="relationship-list.relationship[0].related-to" value="p-interface" />

+                                        <parameter name="relationship-list.relationship[0].related-link" value="`'/network/pnfs/pnf/' + $oof.vpn.access-node-id + '/p-interfaces/p-interface/' + $dst-ltpId`" />

+                                        <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="p-interface.interface-name" />

+                                        <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$dst-ltpId`" />

+                                    </save>

+                                </block>

+                            </for>

+                        </block>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-status.action' value="`$connection-attachment-topology-operation-input.request-information.request-action` " />

+                <parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value="connection-attachment-topology-operation" />

+                <parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value="`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$connection-attachment-topology-operation-input.request-information.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$connection-attachment-topology-operation-input.sdnc-request-header.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$connection-attachment-topology-operation-input.service-information.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$connection-attachment-topology-operation-input.allotted-resource-information.` " />

+            </set>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+                <parameter name="outputPath" value="tmp.current-time" />

+            </execute>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Active' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sotn-attachment.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+                <parameter name='connection-attachment-object-path' value="`$tmp.ar.self-link`"/>

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $connection-attachment-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id"

+        pfx='pfx' local-only='false' force='false'>

+                <parameter name="description" value="`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`" />

+                <parameter name="selflink" value="`$tmp.ar.self-link`" />

+                <parameter name="model-invariant-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`" />

+                <parameter name="model-version-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`" />

+                <parameter name="operational-status" value="Active" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="AAI failed" />

+                    </return>

+                </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="AAI failed" />

+                    </return>

+                </outcome>

+            </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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-create.xml
new file mode 100644
index 0000000..ff7640d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-create.xml
@@ -0,0 +1,304 @@
+<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='sotn-attachment-topology-operation-create' mode='sync'>

+        <block atomic="true">

+            <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`'>

+                <outcome value=''>

+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >

+                        <parameter name="ctx-destination" value="tmp.ar.allotted-resource-id"/>

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='error-code' value='' />

+                                <parameter name='error-message' value="An error occured while generation allotted resource ID" />

+                            </return>

+                        </outcome>

+                    </execute>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+                    </set>

+                </outcome>

+            </switch>

+            <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='tmp.ar.allotted-resource-type' value="SOTNAttachmentInstance" />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <set>

+                        <parameter name='tmp.ar.allotted-resource-type' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`' />

+                    </set>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/connection-attachment-topology/'` " />

+            </set>

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>

+                <parameter name="outputPath" value="tmp.ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='failure'>

+                    <block></block>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true">

+                        <switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>

+                            <outcome value='1'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Error: Existing connection attachment allotted resource" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </execute>

+            <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='tmp.cidx' value="`0`" />

+                        <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value="1" />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='tmp.found-cidx' value="`false`" />

+                        </set>

+                        <for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >

+                            <switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">

+                                <outcome value='true'>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="Error updating md-sal for connection-attachment-allotted-resource as cosumed allotted resource already exists." />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test='`$tmp.found-cidx`'>

+                            <outcome value='false'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.cidx' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-type' value="`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type` " />

+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource[$tmp.cidx].allotted-resource-pointer' value="`$tmp.ar.self-link` " />

+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$tmp.cidx + 1`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.parent-service-instance-id' value="`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.parent-provided-resource`"/>

+                <parameter name="outputPath" value="tmp.parent-ar-url"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$tmp.parent-ar-url`"/>

+                <parameter name="outputPath" value="tmp.parent-ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.parentsvc.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.parent-ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="parent" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+                <parameter name='connection-attachment-ar.allotted-resource-status.action' value="`$connection-attachment-topology-operation-input.request-information.request-action` " />

+                <parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value="connection-attachment-topology-operation" />

+                <parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value="`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$connection-attachment-topology-operation-input.request-information.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$connection-attachment-topology-operation-input.sdnc-request-header.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$connection-attachment-topology-operation-input.service-information.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$connection-attachment-topology-operation-input.allotted-resource-information.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.' value="`$connection-attachment-topology-operation-input.connection-attachment-request-input.` " />

+            </set>

+            <set>

+                <parameter name='connection-attachment-ar-identifiers.consuming-service-instance-id' value="`$connection-attachment-topology-operation-input.service-information.service-instance-id` " />

+                <parameter name='connection-attachment-ar-identifiers.parent-service-instance-id' value="`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />

+                <parameter name='connection-attachment-ar-identifiers.allotted-resource-type' value="`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type` " />

+                <parameter name='connection-attachment-ar-identifiers.allotted-resource-id' value="`$tmp.ar.allotted-resource-id` " />

+            </set>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.' 

+value="`$connection-attachment-ar-identifiers.`" />

+            </set>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+                <parameter name="outputPath" value="tmp.current-time" />

+            </execute>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='Created' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+            </set>

+            <block atomic="true">

+                <for index='i' start='0' end='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`' >

+                    <block atomic="true">

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                            <parameter name="original_string" value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$i].name`'/>

+                            <parameter name="regex" value="_"/>

+                            <parameter name="ctx_memory_result_key" value="param-prefix"/>

+                        </execute>

+                        <set>

+                            <parameter name="`connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$i].name`" value='`$param-prefix[$param-prefix_length -1]`'/>

+                        </set>

+                    </block>

+                </for>

+                <call module='GENERIC-RESOURCE-API' rpc='sotn-get-saved-ar-param' mode='sync' ></call>

+            </block>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sotn-attachment.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+                <parameter name='connection-attachment-object-path' value="`$tmp.ar.self-link`"/>

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $connection-attachment-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='allotted-resource' 

+      key='customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id' >

+                <parameter name="id" value="`$tmp.ar.allotted-resource-id`" />

+                <parameter name="name" value="`$prop.connection-attachment.sotnVpnName`" />

+                <parameter name="access-provider-id" value="`$prop.connection-attachment.access-provider-id`" />

+                <parameter name="access-client-id" value="`$prop.connection-attachment.access-client-id`" />

+                <parameter name="access-topology-id" value="`$prop.connection-attachment.access-topology-id`" />

+                <parameter name="access-node-id" value="`$prop.connection-attachment.access-node-id`" />

+                <parameter name="access-ltp-id" value="`$prop.connection-attachment.access-ltp-id`" />

+                <parameter name="cvlan" value="`$prop.connection-attachment.cVLAN`" />

+                <parameter name="vpn-name" value="`$prop.connection-attachment.sotnVpnName`" />

+                <parameter name="selflink" value="`$tmp.ar.self-link`" />

+                <parameter name="model-invariant-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`" />

+                <parameter name="model-version-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`" />

+                <parameter name="operational-status" value="Created" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="AAI failed" />

+                    </return>

+                </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="AAI failed" />

+                    </return>

+                </outcome>

+            </save>

+            <set>

+                <parameter name='src-ltpId' value="`'nodeId-' + $prop.connection-attachment.access-node-id + '-ltpId-' + $prop.connection-attachment.access-ltp-id`" />

+            </set>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource:relationship-list" 

+		key="customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id" 

+      force="true" pfx="tmp.AnAI-data">

+                <parameter name="relationship-list.relationship[0].related-to" value="p-interface" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/pnfs/pnf/' + $prop.connection-attachment.access-node-id + '/p-interfaces/p-interface/' + $src-ltpId`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="p-interface.interface-name" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$src-ltpId`" />

+            </save>

+            <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource="service-instance:relationship-list" 

+		key="customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id" 

+      force="true" pfx="tmp.AnAI-data">

+                <parameter name="relationship-list.relationship[0].related-to" value="allotted-resource" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/business/customers/customer/' + $connection-attachment-topology-operation-input.service-information.global-customer-id + '/service-subscriptions/service-subscription/' + $connection-attachment-topology-operation-input.service-information.subscription-service-type + '/service-instances/service-instance/' + $connection-attachment-topology-operation-input.service-information.service-instance-id + '/allotted-resources/allotted-resource/' + $tmp.ar.allotted-resource-id`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="allotted-resource.id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.ar.allotted-resource-id`" />

+            </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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-deactivate.xml
new file mode 100644
index 0000000..9a33465
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-deactivate.xml
@@ -0,0 +1,464 @@
+<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='sotn-attachment-topology-operation-deactivate' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+                <parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/connection-attachment-topology/'` " />

+            </set>

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>

+                <parameter name="outputPath" value="tmp.ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block atomic="true">

+                        <switch test='`$mdsal-ar.connection-attachment-allotted-resource_length`'>

+                            <outcome value='1'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='connection-attachment-ar.' value='$mdsal-ar.connection-attachment-allotted-resource[0].' />

+                                    </set>

+                                    <switch test='`$connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status`'>

+                                        <outcome value='Active'>

+                                            <block></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="`'Existing connection-attachment-allotted-resource with order status of ' + $connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status + '.'`" />

+                                            </return>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action`' />

+                                        <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-ar.allotted-resource-status.rpc-action`' />

+                                        <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id`' />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="Error: SOTN resource not found" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <return status='failure'>

+                            <parameter name='ack-final' value='Y'/>

+                            <parameter name="error-code" value="404" />

+                            <parameter name="error-message" value="Error: SOTN resource not found" />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+            <block atomic="true">

+                <call module='GENERIC-RESOURCE-API' rpc='sotn-get-saved-ar-param' mode='sync' ></call>

+            </block>

+            <set>

+                <parameter name='tmp.ar.parent-service-instance-id' value="`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>

+                <parameter name="outputPath" value="tmp.ar-url-psd"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-psd" />

+                <outcome value='success'>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="Error: SOTN resource not found" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='tmp.found-in-ar' value='false' />

+                <parameter name='tmp.found-in-network' value='false' />

+                <parameter name='tmp.ep-available' value='false' />

+            </set>

+            <switch test='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`'>

+                <outcome value='2'>

+                    <block atomic="true">

+                        <for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >

+                            <switch test="`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">

+                                <outcome value='true'>

+                                    <block></block>

+                                </outcome>

+                                <outcome value='false'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.pidx' value='`$pidx`' />

+                                            <parameter name='tmp.provided-ar.' value='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].`' />

+                                            <parameter name='tmp.found-in-ar' value='true' />

+                                            <parameter name='tmp.ep-available' value='true' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+                <outcome value='1'>

+                    <block atomic="true">

+                        <switch test='`$mdsal-psd.service-data.networks.network_length`'>

+                            <outcome value='1'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='tmp.network.' value='`$mdsal-psd.service-data.networks.network[0].`' />

+                                    </set>

+                                    <for index='nidx' start='0' end='`$tmp.network.network-data.network-request-input.network-input-parameters.param_length`' >

+                                        <block>

+                                            <switch test="`$tmp.network.network-data.network-request-input.network-input-parameters.param[$nidx].name == 'access-node-id'`">

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='tmp.found-in-network' value='true' />

+                                                        <parameter name='tmp.ep-available' value='true' />

+                                                    </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>

+                            </outcome>

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="Error: Incorrect state found more then 1 network" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="Error: SOTN resource not found" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$tmp.ep-available`'>

+                <outcome value='false'>

+                    <block></block>

+                </outcome>

+                <outcome value='true'>

+                    <block atomic="true">

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="connectivity" 

+		key="connectivity.connectivity-id = $mdsal-psd.service-data.networks.network[0].network-id AND 

+		     depth = '1'"

+        pfx='tmp.connectivity' local-only='false' >

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="404" />

+                                    <parameter name="error-message" value="Error: Connectivity resource not found" />

+                                </return>

+                            </outcome>

+                            <outcome value='success'>

+                                <block>

+                                    <for silentFailure='true' index='vidx' start='0' end='`$tmp.connectivity.relationship-list.relationship_length`' >

+                                        <switch test='`$tmp.connectivity.relationship-list.relationship[$vidx].related-to`'>

+                                            <outcome value='vpn-binding'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name='tmp.vpn-name' value="`$tmp.connectivity.relationship-list.relationship[$vidx].relationship-data[0].relationship-value` " />

+                                                    </set>

+                                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                        <parameter name="original_string" value='`$tmp.vpn-name`'/>

+                                                        <parameter name="regex" value="-"/>

+                                                        <parameter name="ctx_memory_result_key" value="route1"/>

+                                                        <outcome value='success'>

+                                                            <set>

+                                                                <parameter name='tmp.node-id' value='`$route1[0]`' />

+                                                                <parameter name='tmp.actual.vpn-name' value='`$route1[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>

+                                                    <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="pnf" 

+		key="pnf.pnf-name = $tmp.node-id 

+		AND depth = '0'"

+        pfx='tmp.aai.pnf' local-only='false' >

+                                                        <outcome value='success'>

+                                                            <set>

+                                                                <parameter name='tmp.thirdparty-sdnc-id' value="`$tmp.aai.pnf.relationship-list.relationship[0].relationship-data[0].relationship-value`" />

+                                                            </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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-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 pnf from AnAI with pnf-name = ' + $prop.connection-attachement.access-node-id`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </get-resource>

+                                                    <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="esr-thirdparty-sdnc" 

+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $tmp.thirdparty-sdnc-id 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>

+                                                    <switch test="`$prop.sdncRestApi.token_id`">

+                                                        <outcome value=''>

+                                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/ietf-eth-tran-service:etht-svc/etht-svc-instances=' + $tmp.actual.vpn-name`" />

+                                                                <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"/>

+                                                                <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>

+                                                        </outcome>

+                                                        <outcome value='Other'>

+                                                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                                                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/restconf/data/ietf-eth-tran-service:etht-svc/etht-svc-instances=' + $tmp.actual.vpn-name`" />

+                                                                <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`" />

+                                                                <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>

+                                                        </outcome>

+                                                    </switch>

+                                                    <delete plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='vpn-binding' 

+      key='vpn-binding.vpn-id = $tmp.vpn-name' >

+                                                        <outcome value='failure'>

+                                                            <return status='failure'>

+                                                                <parameter name='ack-final' value='Y'/>

+                                                                <parameter name="error-code" value="500" />

+                                                                <parameter name="error-message" value="AAI failed" />

+                                                            </return>

+                                                        </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="AAI failed" />

+                                                            </return>

+                                                        </outcome>

+                                                    </delete>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-status.action' value="`$connection-attachment-topology-operation-input.request-information.request-action` " />

+                <parameter name='connection-attachment-ar.allotted-resource-status.rpc-name' value="connection-attachment-topology-operation" />

+                <parameter name='connection-attachment-ar.allotted-resource-status.rpc-action' value="`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.' value="`$connection-attachment-topology-operation-input.request-information.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.' value="`$connection-attachment-topology-operation-input.sdnc-request-header.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.service-information.' value="`$connection-attachment-topology-operation-input.service-information.` " />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.' value="`$connection-attachment-topology-operation-input.allotted-resource-information.` " />

+            </set>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.' value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='setTime' >

+                <parameter name="outputPath" value="tmp.current-time" />

+            </execute>

+            <set>

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status' value='PendingDelete' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action' value='`$connection-attachment-topology-operation-input.request-information.request-action`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id' value='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-request-id`' />

+                <parameter name='connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp' value='`$tmp.current-time`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.sotn-attachment.templatefile`" />

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+                <parameter name='connection-attachment-object-path' value="`$tmp.ar.self-link`"/>

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $connection-attachment-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="allotted-resource" 

+		key="customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id"

+        pfx='pfx' local-only='false' force='false'>

+                <parameter name="description" value="`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type`" />

+                <parameter name="selflink" value="`$tmp.ar.self-link`" />

+                <parameter name="model-invariant-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-invariant-uuid`" />

+                <parameter name="model-version-id" value="`$connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.model-uuid`" />

+                <parameter name="operational-status" value="PendingDelete" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="AAI failed" />

+                    </return>

+                </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="AAI failed" />

+                    </return>

+                </outcome>

+            </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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-delete.xml
new file mode 100644
index 0000000..3104c68
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-attachment-topology-operation-delete.xml
@@ -0,0 +1,189 @@
+<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='sotn-attachment-topology-operation-delete' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='tmp.ar.allotted-resource-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id`' />

+                <parameter name='tmp.ar.parent-service-instance-id' value='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.self-link' value="`'restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/'

+ + $tmp.ar.allotted-resource-id

+ + '/allotted-resource-data/connection-attachment-topology/'` " />

+            </set>

+            <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>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>

+                <parameter name="outputPath" value="tmp.ar-url"/>

+                <parameter name="target" value="{allotted-resource-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.allotted-resource-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='Delete' />

+                <parameter name="responsePrefix" value="mdsal-ar" />

+                <outcome value='success'>

+                    <block></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 updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </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="Error updating md-sal for connection-attachment-allotted-resource" />

+                    </return>

+                </outcome>

+            </execute>

+            <switch test='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Resource to be deleted doesn't exist in MDSAL." />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <for index='cidx' start='0' end='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length`' >

+                            <switch test="`$service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.cidx' value='`$cidx`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test="`$tmp.cidx`">

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="resource to be deleted is not available in mdsal" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name="service-data.consumed-allotted-resources.consumed-allotted-resource[$cidx]." value="" />

+                <parameter name='service-data.consumed-allotted-resources.consumed-allotted-resource_length' value='`$service-data.consumed-allotted-resources.consumed-allotted-resource_length - 1`' />

+            </set>

+            <set>

+                <parameter name='tmp.ar.parent-service-instance-id' value="`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id` " />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >

+                <parameter name="source" value="/restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data"/>

+                <parameter name="outputPath" value="tmp.ar-url-psd"/>

+                <parameter name="target" value="{service-instance-id}"/>

+                <parameter name="replacement" value="`$tmp.ar.parent-service-instance-id`"/>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-psd`' />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="mdsal-psd" />

+                <outcome value='success'>

+                    <block></block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="Error: SOTN resource not found" />

+                    </return>

+                </outcome>

+            </execute>

+            <switch test='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Resource to be deleted doesn't exist in MDSAL." />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <for index='pidx' start='0' end='`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource_length`' >

+                            <switch test="`$mdsal-psd.service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id == $tmp.ar.allotted-resource-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.pidx' value='`$pidx`' />

+                                        </set>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <switch test="`$tmp.pidx`">

+                            <outcome value=''>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="resource to be deleted is not available in mdsal" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value="`$prop.controller.url + $tmp.ar-url-psd + '/provided-allotted-resources/provided-allotted-resource/' + $tmp.ar.allotted-resource-id`" />

+                <parameter name='restapiUser' value='`$prop.controller.user`' />

+                <parameter name='restapiPassword' value='`$prop.controller.pwd`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='DELETE' />

+                <parameter name="responsePrefix" value="mdsal-psd-delete" />

+            </execute>

+            <set>

+                <parameter name='allotted-resource-id' value='`$tmp.ar.allotted-resource-id`' />

+                <parameter name='connection-attachment-object-path' value="`$tmp.ar.self-link`"/>

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $connection-attachment-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='allotted-resource'  

+		key="customer.global-customer-id = $connection-attachment-topology-operation-input.service-information.global-customer-id AND

+			service-subscription.service-type = $connection-attachment-topology-operation-input.service-information.subscription-service-type AND

+			service-instance.service-instance-id = $connection-attachment-topology-operation-input.service-information.service-instance-id AND

+			allotted-resource.id = $tmp.ar.allotted-resource-id">

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="AAI failed" />

+                    </return>

+                </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="AAI failed" />

+                    </return>

+                </outcome>

+            </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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-get-saved-ar-param.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-get-saved-ar-param.xml
new file mode 100644
index 0000000..0aa82b7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-get-saved-ar-param.xml
@@ -0,0 +1,73 @@
+<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='sotn-get-saved-ar-param' mode='sync'>

+      <block atomic="true">

+         <for index='idx' start='0' end='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param_length`' >

+            <block>

+               <switch test="`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'sotnVpnName'`">

+                  <outcome value='true'>

+                     <set>

+                        <parameter name='prop.connection-attachment.sotnVpnName' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />

+                     </set>

+                  </outcome>

+               </switch>

+               <switch test="`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'access-provider-id'`">

+                  <outcome value='true'>

+                     <set>

+                        <parameter name='prop.connection-attachment.access-provider-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />

+                     </set>

+                  </outcome>

+               </switch>

+               <switch test="`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'access-client-id'`">

+                  <outcome value='true'>

+                     <set>

+                        <parameter name='prop.connection-attachment.access-client-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />

+                     </set>

+                  </outcome>

+               </switch>

+               <switch test="`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'access-topology-id'`">

+                  <outcome value='true'>

+                     <set>

+                        <parameter name='prop.connection-attachment.access-topology-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />

+                     </set>

+                  </outcome>

+               </switch>

+               <switch test="`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'access-node-id'`">

+                  <outcome value='true'>

+                     <set>

+                        <parameter name='prop.connection-attachment.access-node-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />

+                     </set>

+                  </outcome>

+               </switch>

+               <switch test="`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'access-ltp-id'`">

+                  <outcome value='true'>

+                     <set>

+                        <parameter name='prop.connection-attachment.access-ltp-id' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />

+                     </set>

+                  </outcome>

+               </switch>

+               <switch test="`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'clientSignal'`">

+                  <outcome value='true'>

+                     <set>

+                        <parameter name='prop.connection-attachment.clientSignal' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].value`' />

+                     </set>

+                  </outcome>

+               </switch>

+               <switch test="`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.param[$idx].name == 'cVLAN'`">

+                  <outcome value='true'>

+                     <set>

+                        <parameter name='prop.connection-attachment.cVLAN' value='`$connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-activate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-activate.xml
new file mode 100644
index 0000000..bee2272
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-activate.xml
@@ -0,0 +1,44 @@
+<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='sotn-network-topology-operation-activate' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-sotn-network-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="sotn-network-topology-operation-activate"/>

+                <parameter name="field3" value="SOTN-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>

+            <set>

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />

+            </set>

+            <set>

+                <parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />

+                <parameter name="network-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $network-topology-operation-input.network-information.network-id  + '/network-data/'` " />

+            </set>

+            <set>

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='Active' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='connectivity' 

+      key='connectivity.connectivity-id = $network-topology-operation-input.network-information.network-id' >

+                <parameter name='connectivity-id' value='`$network-topology-operation-input.network-information.network-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-create.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-create.xml
new file mode 100644
index 0000000..af67bd6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-create.xml
@@ -0,0 +1,209 @@
+<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='sotn-network-topology-operation-create' mode='sync'>
+        <block atomic="true">
+            <call module='GENERIC-RESOURCE-API' rpc='validate-sotn-network-input-parameters' mode='sync' ></call>
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >
+                <parameter name="ctx-destination" value="prop.sotn.network-id"/>
+            </execute>
+            <for index="idx" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">
+                <block>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'name'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.etht-svc-name' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'description'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.etht-svc-descr' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'tenantId'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.tenantId' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'vpnType'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.vpnType' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'cir'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.cir' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'eir'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.eir' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'cbs'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.cbs' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'ebs'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.ebs' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'colorAware'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.colorAware' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'couplingFlag'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.couplingFlag' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'access-provider-id'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.access-provider-id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'access-client-id'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.access-client-id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'access-topology-id'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.access-topology-id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'access-node-id'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.access-node-id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                    <switch test="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].name == 'access-ltp-id'`">
+                        <outcome value='true'>
+                            <set>
+                                <parameter name='prop.sotn.access-ltp-id' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param[$idx].value`' />
+                            </set>
+                        </outcome>
+                    </switch>
+                </block>
+            </for>
+            <switch test='`$service-data.networks.network_length`'>
+                <outcome value=''>
+                    <set>
+                        <parameter name='nidx' value='0' />
+                    </set>
+                </outcome>
+                <outcome value='Other'>
+                    <block>
+                        <set>
+                            <parameter name='nidx' value='`$service-data.networks.network_length`' />
+                        </set>
+                        <for index='idx' start='0' end='`$nidx`' >
+                            <switch test="`$service-data.networks.network[$idx].network-id == $network-topology-operation-input.network-information.network-id`">
+                                <outcome value='true'>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id already found in service-data" />
+                                    </return>
+                                </outcome>
+                            </switch>
+                        </for>
+                    </block>
+                </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="sotn-network-topology-operation-create"/>
+                <parameter name="field3" value="SOTN-Config"/>
+            </record>
+            <set>
+                <parameter name='service-data.networks.network[$nidx].network-id' value='`$prop.sotn.network-id`' />
+                <parameter name='service-data.networks.network[$nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />
+                <parameter name='service-data.networks.network[$nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />
+                <parameter name='service-data.networks.network[$nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />
+                <parameter name='service-data.networks.network[$nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />
+                <parameter name='service-data.networks.network[$nidx].network-data.network-request-input.' value='`$network-topology-operation-input.network-request-input.`' />
+                <parameter name='service-data.networks.network_length' value='`$nidx+1`' />
+            </set>
+            <set>
+                <parameter name='networkId' value='`$prop.sotn.network-id`' />
+                <parameter name="network-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.sotn.network-id  + '/network-data/'` " />
+            </set>
+            <set>
+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.order-status' value='Created' />
+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />
+                <parameter name='service-data.networks.network[$nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />
+            </set>
+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='connectivity' 
+      key='connectivity.connectivity-id = $prop.sotn.network-id' >
+                <parameter name='connectivity-id' value='`$prop.sotn.network-id`' />
+                <parameter name='bandwidth-profile-name' value='`$prop.sotn.etht-svc-name`' />
+                <parameter name='vpn-type' value='`$prop.sotn.vpnType`' />
+                <parameter name='CIR' value='`$prop.sotn.cir`' />
+                <parameter name='EIR' value='`$prop.sotn.eir`' />
+                <parameter name='CBS' value='`$prop.sotn.cbs`' />
+                <parameter name='EBS' value='`$prop.sotn.ebs`' />
+                <parameter name='color-aware' value='`$prop.sotn.colorAware`' />
+                <parameter name='coupling-flag' value='`$prop.sotn.couplingFlag`' />
+                <parameter name='etht-svc-name' value='`$prop.sotn.etht-svc-name`' />
+                <parameter name='access-provider-id' value='`$prop.sotn.access-provider-id`' />
+                <parameter name='access-client-id' value='`$prop.sotn.access-client-id`' />
+                <parameter name='access-topology-id' value='`$prop.sotn.access-topology-id`' />
+                <parameter name='access-node-id' value='`$prop.sotn.access-node-id`' />
+                <parameter name='access-ltp-id' value='`$prop.sotn.access-ltp-id`' />
+                <parameter name='cvlan' value='`$prop.sotn.cVLAN`' />
+                <parameter name='operational-status' value='Created' />
+                <parameter name='model-customization-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-customization-uuid`' />
+                <parameter name='model-invariant-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-invariant-uuid`' />
+                <parameter name='model-version-id' value='`$network-topology-operation-input.network-information.onap-model-information.model-uuid`' />
+                <parameter name='connectivity-selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $prop.sotn.network-id  + '/network-data/'` " />
+            </save>
+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list' 
+      key='service-instance.service-instance-id = $service-data.service-information.service-instance-id 
+         AND customer.global-customer-id = $service-data.networks.network[$nidx].network-data.service-information.global-customer-id 
+         AND service-subscription.service-type = $service-data.networks.network[$nidx].network-data.service-information.subscription-service-type' 
+      force="true" pfx="tmp.AnAI-data">
+                <parameter name="relationship-list.relationship[0].related-to" value="connectivity" />
+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/connectivities/connectivity/' + $prop.sotn.network-id`" />
+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="connectivity.connectivity-id" />
+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.sotn.network-id`" />
+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-deactivate.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-deactivate.xml
new file mode 100644
index 0000000..53dae26
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-deactivate.xml
@@ -0,0 +1,44 @@
+<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='sotn-network-topology-operation-deactivate' mode='sync'>
+        <block atomic="true">
+            <call module='GENERIC-RESOURCE-API' rpc='validate-sotn-network-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="sotn-network-topology-operation-activate"/>
+                <parameter name="field3" value="SOTN-Deactivate"/>
+            </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>
+            <set>
+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />
+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />
+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />
+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />
+            </set>
+            <set>
+                <parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />
+                <parameter name="network-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $network-topology-operation-input.network-information.network-id  + '/network-data/'` " />
+            </set>
+            <set>
+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='PendingDelete' />
+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />
+                <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />
+            </set>
+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='connectivity' 
+      key='connectivity.connectivity-id = $network-topology-operation-input.network-information.network-id' >
+                <parameter name='connectivity-id' value='`$network-topology-operation-input.network-information.network-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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-delete.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-delete.xml
new file mode 100644
index 0000000..2eb6e76
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-delete.xml
@@ -0,0 +1,34 @@
+<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='sotn-network-topology-operation-delete' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-sotn-network-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="sotn-network-topology-operation-delete"/>

+                <parameter name="field3" value="SOTN-Delete"/>

+            </record>

+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='connectivity' 

+        key='connectivity.connectivity-id = $network-topology-operation-input.network-information.network-id'></delete>

+            <set>

+                <parameter name="service-data.networks.network_length" value="`$service-data.networks.network_length - 1`"/>

+            </set>

+            <set>

+                <parameter name="service-data.networks.network[$tmp.nidx]." value=""/>

+            </set>

+            <set>

+                <parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />

+                <parameter name='service-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $network-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>

diff --git a/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-reoptimize.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-reoptimize.xml
new file mode 100644
index 0000000..b49cb89
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_sotn-network-topology-operation-reoptimize.xml
@@ -0,0 +1,89 @@
+<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='sotn-network-topology-operation-reoptimize' mode='sync'>
+        <block atomic="true">
+            <set>
+                <parameter name='tmp.network.network-id' value='`$network-topology-operation-input.network-information.network-id`' />
+                <parameter name='tmp.network.service-instance-id' value='`$network-topology-operation-input.service-information.service-instance-id`' />
+            </set>
+            <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>
+            <set>
+                <parameter name = 'tmp.service-data.' value="`$service-data.`"/>
+            </set>
+            <for index='pidx' start='0' end='1' >
+                <block atomic="true">
+                    <set>
+                        <parameter name='prop.ar.provided-allotted-resource-id' value='`$service-data.provided-allotted-resources.provided-allotted-resource[$pidx].allotted-resource-id`' />
+                    </set>
+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                        <parameter name="source" value="`$prop.restapi.connection-attachment-allottedresource`"/>
+                        <parameter name="outputPath" value="tmp.ar-url-connection"/>
+                        <parameter name="target" value="{allotted-resource-id}"/>
+                        <parameter name="replacement" value='`$prop.ar.provided-allotted-resource-id`'/>
+                    </execute>
+                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                        <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.ar-url-connection`' />
+                        <parameter name='restapiUser' value='`$prop.controller.user`' />
+                        <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
+                        <parameter name='format' value='json' />
+                        <parameter name='httpMethod' value='GET' />
+                        <parameter name="responsePrefix" value="mdsal-providedAr" />
+                        <outcome value='success'>
+                            <block></block>
+                        </outcome>
+                        <outcome value='Other'>
+                            <return status='failure'>
+                                <parameter name='ack-final' value='Y'/>
+                                <parameter name="error-code" value="404" />
+                                <parameter name="error-message" value="Error: Parent service data not available" />
+                            </return>
+                        </outcome>
+                    </execute>
+                    <set>
+                        <parameter name='connection-attachment-topology-operation-input.request-information.request-action' value="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-status.action` " />
+                        <parameter name='connection-attachment-topology-operation-input.sdnc-request-header.svc-action' value="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-status.rpc-action` " />
+                        <parameter name='connection-attachment-topology-operation-input.request-information.' value="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.request-information.` " />
+                        <parameter name='connection-attachment-topology-operation-input.sdnc-request-header.' value="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.` " />
+                        <parameter name='connection-attachment-topology-operation-input.service-information.' value="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.service-information.` " />
+                        <parameter name='connection-attachment-topology-operation-input.allotted-resource-information.' value="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.` " />
+                        <parameter name='connection-attachment-topology-operation-input.connection-attachment-request-input.' value="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.allotted-resource-operation-information.connection-attachment-request-input.` " />
+                    </set>
+                    <set>
+                        <parameter name='connection-attachment-topology-operation-input.service-information.service-instance-id' value="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id` " />
+                        <parameter name='connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id' value="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.parent-service-instance-id` " />
+                        <parameter name='connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-type' value="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.allotted-resource-type` " />
+                        <parameter name='connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id' value="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.allotted-resource-id` " />
+                    </set>
+                    <set>
+                        <parameter name='connection-attachment-topology-operation-input.allotted-resource-information.onap-model-information.' value="`$mdsal-providedAr.connection-attachment-allotted-resource[0].allotted-resource-data.connection-attachment-topology.onap-model-information.` " />
+                    </set>
+                    <set>
+                        <parameter name='connection-attachment-topology-operation-input.sdnc-request-header.svc-action' value="deactivate" />
+                        <parameter name='connection-attachment-topology-operation-input.request-information.request-action' value="DeactivateSOTNAttachmentInstance" />
+                        <parameter name='connection-attachment-topology-operation-input.service-information.global-customer-id' value="`$service-data.service-information.global-customer-id` " />
+                        <parameter name='connection-attachment-topology-operation-input.service-information.subscription-service-type' value="`$service-data.service-information.subscription-service-type` " />
+                        <parameter name='connection-attachment-topology-operation-input.service-information.subscriber-name' value="`$service-data.service-information.subscriber-name` " />
+                    </set>
+                    <call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-deactivate' mode='sync' ></call>
+                    <set>
+                        <parameter name='connection-attachment-topology-operation-input.sdnc-request-header.svc-action' value="activate" />
+                        <parameter name='connection-attachment-topology-operation-input.request-information.request-action' value="ActivateSOTNAttachmentInstance" />
+                    </set>
+                    <call module='GENERIC-RESOURCE-API' rpc='sotn-attachment-topology-operation-activate' mode='sync' ></call>
+                </block>
+            </for>
+            <set>
+                <parameter name = 'service-data. '  value = "`$tmp.service-data.`"/>
+            </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/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_validate-sotn-network-input-parameters.xml b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_validate-sotn-network-input-parameters.xml
new file mode 100644
index 0000000..2669e64
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/generic-resource-api/src/main/xml/sotn/GENERIC-RESOURCE-API_validate-sotn-network-input-parameters.xml
@@ -0,0 +1,305 @@
+<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-sotn-network-input-parameters' mode='sync'>

+        <block atomic="true">

+            <switch test='`$network-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='`$network-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='create'>

+                    <block atomic="true">

+                        <switch test='`$network-topology-operation-input.request-information.request-action`'>

+                            <outcome value='CreateSOTNConnectivityInstance'>

+                                <block atomic="true">

+                                    <for index="i" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">

+                                        <block>

+                                            <set>

+                                                <parameter name='tmp.name' value='' />

+                                                <parameter name='tmp.value' value='' />

+                                            </set>

+                                            <set>

+                                                <parameter name='tmp.name' value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$i].name`"/>

+                                                <parameter name='tmp.value' value="`$network-topology-operation-input.network-request-input.network-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="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value='description'>

+                                                    <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="`'network-request-input.network-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="`'network-topology-operation-input.network-request-input.network-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='`$network-topology-operation-input.request-information.request-action`'>

+                        <outcome value='ActivateSOTNConnectivityInstance'>

+                            <block atomic="true">

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                    <parameter name="network-topology-operation-input.network-information.network-id" value="$network-topology-operation-input.network-information.network-id"/>

+                                </execute>

+                                <switch test="`$network-topology-operation-input.network-information.network-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.networks.network_length`'>

+                                    <outcome value=''>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic="true">

+                                            <for index='nidx' start='0' end='`$service-data.networks.network_length`' >

+                                                <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.nidx' value='`$nidx`' />

+                                                                <parameter name='ctx.network-data.' value='`$service-data.networks.network[$nidx].network-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="network-topology-operation-input.network-request-input.network-id not found in service-data" />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-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="`'Network is not in appropriate state for activate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-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='`$network-topology-operation-input.request-information.request-action`'>

+                        <outcome value='DeactivateSOTNConnectivityInstance'>

+                            <block atomic="true">

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                    <parameter name="network-topology-operation-input.network-information.network-id" value="$network-topology-operation-input.network-information.network-id"/>

+                                </execute>

+                                <switch test="`$network-topology-operation-input.network-information.network-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.networks.network_length`'>

+                                    <outcome value=''>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic="true">

+                                            <for index='nidx' start='0' end='`$service-data.networks.network_length`' >

+                                                <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.nidx' value='`$nidx`' />

+                                                                <parameter name='ctx.network-data.' value='`$service-data.networks.network[$nidx].network-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="network-topology-operation-input.network-request-input.network-id not found in service-data" />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-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="`'Network is not in appropriate state for deactivate. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-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='`$network-topology-operation-input.request-information.request-action`'>

+                        <outcome value='DeleteSOTNConnectivityInstance'>

+                            <block atomic="true">

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                    <parameter name="network-topology-operation-input.network-information.network-id" value="$network-topology-operation-input.network-information.network-id"/>

+                                </execute>

+                                <switch test="`$network-topology-operation-input.network-information.network-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.networks.network_length`'>

+                                    <outcome value=''>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="network-topology-operation-input.network-request-input.network-id not found in service-data" />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic="true">

+                                            <for index='nidx' start='0' end='`$service-data.networks.network_length`' >

+                                                <switch test="`$service-data.networks.network[$nidx].network-id == $network-topology-operation-input.network-information.network-id`">

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.nidx' value='`$nidx`' />

+                                                                <parameter name='ctx.network-data.' value='`$service-data.networks.network[$nidx].network-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="network-topology-operation-input.network-request-input.network-id not found in service-data" />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <switch test='`$service-data.networks.network[$tmp.nidx].network-data.network-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="`'Network is not in appropriate state for delete. Current state is ' + $service-data.networks.network[$tmp.nidx].network-data.network-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="`$network-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />

+                    </return>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/installer/pom.xml b/sdnc-a1-controller/oam/platform-logic/installer/pom.xml
new file mode 100644
index 0000000..bfe56a0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/installer/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.onap.ccsdk.parent</groupId>
+		<artifactId>odlparent-lite</artifactId>
+		<version>1.4.3</version>
+		<relativePath/>
+	</parent>
+
+	<groupId>org.onap.sdnc.oam</groupId>
+	<artifactId>platform-logic-installer</artifactId>
+	<version>1.7.3-SNAPSHOT</version>
+	<packaging>pom</packaging>
+
+	<name>sdnc-oam :: platform-logic :: ${project.artifactId}</name>
+	<description>Contains platform-level service logic installer</description>
+
+	<build>
+		<plugins>
+
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<version>2.6</version>
+				<executions>
+					<execution>
+						<id>create-zip</id>
+						<goals>
+							<goal>single</goal>
+						</goals>
+						<phase>package</phase>
+						<configuration>
+							<attach>true</attach>
+							<descriptors>
+								<descriptor>src/assembly/assemble_zip.xml</descriptor>
+							</descriptors>
+							<appendAssemblyId>false</appendAssemblyId>
+						</configuration>
+					</execution>
+
+				</executions>
+			</plugin>
+
+        </plugins>
+	</build>
+</project>
diff --git a/sdnc-a1-controller/oam/platform-logic/installer/src/assembly/assemble_zip.xml b/sdnc-a1-controller/oam/platform-logic/installer/src/assembly/assemble_zip.xml
new file mode 100644
index 0000000..9fc5ff8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/installer/src/assembly/assemble_zip.xml
@@ -0,0 +1,62 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  							reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<!-- Defines how we build the .zip file which is our distribution. -->
+
+<assembly
+    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+    <id>bin</id>
+    <formats>
+        <format>zip</format>
+    </formats>
+
+    <includeBaseDirectory>false</includeBaseDirectory>
+
+    <fileSets>
+
+        <fileSet>
+            <directory>../target/svclogic</directory>
+            <outputDirectory>svclogic</outputDirectory>
+            <includes>
+                <include>**/*</include>
+            </includes>
+        </fileSet>
+        <fileSet>
+            <directory>../target/restapi</directory>
+            <outputDirectory>restapi</outputDirectory>
+            <includes>
+                <include>**/*</include>
+            </includes>
+        </fileSet>
+        <fileSet>
+            <directory>../target/restconfapi</directory>
+            <outputDirectory>restconfapi</outputDirectory>
+            <includes>
+                <include>**/*</include>
+            </includes>
+        </fileSet>
+
+    </fileSets>
+
+
+</assembly>
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/pom.xml b/sdnc-a1-controller/oam/platform-logic/lcm/pom.xml
new file mode 100644
index 0000000..96db0dd
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/pom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.onap.ccsdk.parent</groupId>
+		<artifactId>odlparent-lite</artifactId>
+		<version>1.4.3</version>
+        <relativePath/>
+	</parent>
+
+	<groupId>org.onap.sdnc.oam</groupId>
+	<artifactId>platform-logic-lcm</artifactId>
+	<version>1.7.3-SNAPSHOT</version>
+	<packaging>pom</packaging>
+
+    <name>sdnc-oam :: platform-logic :: ${project.artifactId}</name>
+	<description>Contains platform-level service logic for the LCM</description>
+
+	<build>
+		<plugins>
+			<plugin>
+				<artifactId>maven-resources-plugin</artifactId>
+				<version>2.6</version>
+				<executions>
+					<execution>
+						<id>copy-version</id>
+						<goals>
+							<goal>copy-resources</goal>
+						</goals><!-- here the phase you need -->
+						<phase>validate</phase>
+						<configuration>
+							<outputDirectory>../target/svclogic/graphs/lcm</outputDirectory>
+							<resources>
+								<resource>
+									<directory>src/main/xml</directory>
+									<includes>
+										<include>**/*.xml</include>
+									</includes>
+									<filtering>true</filtering>
+								</resource>
+								<resource>
+									<directory>src/main/resources</directory>
+									<includes>
+										<include>graph.versions</include>
+									</includes>
+									<filtering>true</filtering>
+								</resource>
+							</resources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_config-scale-out.json b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_config-scale-out.json
new file mode 100755
index 0000000..870997b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_config-scale-out.json
@@ -0,0 +1,364 @@
+[

+    {

+        "id": "2525c69c.46a53a",

+        "type": "method",

+        "name": "config-scale-out",

+        "xml": "<method rpc='config-scale-out' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 525,

+        "y": 310,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "fbc1ecc4.e47a5"

+            ]

+        ]

+    },

+    {

+        "id": "71bc22fb.570a1c",

+        "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": 316.99993896484375,

+        "y": 312,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "2525c69c.46a53a"

+            ]

+        ]

+    },

+    {

+        "id": "9aa59a9a.573488",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 535,

+        "y": 499.0000305175781,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "1648f778.245cc9"

+            ]

+        ]

+    },

+    {

+        "id": "af21aba.b59b158",

+        "type": "other",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 534,

+        "y": 573,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "4b5b877e.ab2088"

+            ]

+        ]

+    },

+    {

+        "id": "def90fda.f980a",

+        "type": "returnSuccess",

+        "name": "return success",

+        "xml": "<return status='success'>\n<parameter name='status.code' value='`$restconf.response-code`' />\n<parameter name='status.message' value='`$restconf.response-message`' />",

+        "comments": "",

+        "x": 833.9998779296875,

+        "y": 629.0000305175781,

+        "z": "2e6279df.227e56",

+        "wires": []

+    },

+    {

+        "id": "42cca51a.60b21c",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 132,

+        "y": 311,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "71bc22fb.570a1c"

+            ]

+        ]

+    },

+    {

+        "id": "fbc1ecc4.e47a5",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 117.91668701171875,

+        "y": 448.0833435058594,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "78a05e7a.6a51e",

+                "bafaa90c.54ab78",

+                "4ce05c2c.5aa5b4",

+                "dfe17100.934dc"

+            ]

+        ]

+    },

+    {

+        "id": "78a05e7a.6a51e",

+        "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": 302.00001525878906,

+        "y": 427.0833435058594,

+        "z": "2e6279df.227e56",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2f415068.43c48",

+        "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='dmaap' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 864.0000610351562,

+        "y": 435.0833435058594,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "fdf40e79.456aa"

+            ]

+        ]

+    },

+    {

+        "id": "fdf40e79.456aa",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1046,

+        "y": 434.0833435058594,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "d3492d84.dee36"

+            ]

+        ]

+    },

+    {

+        "id": "1648f778.245cc9",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 673,

+        "y": 500.0833435058594,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "2f415068.43c48",

+                "fb59df11.d6057",

+                "aafbe068.0daef"

+            ]

+        ]

+    },

+    {

+        "id": "c832fe63.37e5f",

+        "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='dmaap' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 854.4998779296875,

+        "y": 578.0833435058594,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "5e5bf79f.1bf8b8"

+            ]

+        ]

+    },

+    {

+        "id": "5e5bf79f.1bf8b8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1031.4998779296875,

+        "y": 577.0833740234375,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "1e79000b.07848"

+            ]

+        ]

+    },

+    {

+        "id": "d3492d84.dee36",

+        "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": 1173,

+        "y": 434.0833435058594,

+        "z": "2e6279df.227e56",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fb59df11.d6057",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='status.code' value= '`$lcm-dmaap.status.code`'/>\n<parameter name='status.message' value='`$lcm-dmaap.status.message`' />\n",

+        "comments": "",

+        "x": 844.9166870117188,

+        "y": 485.0833435058594,

+        "z": "2e6279df.227e56",

+        "wires": []

+    },

+    {

+        "id": "1e79000b.07848",

+        "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": 1163.9166259765625,

+        "y": 575.0833740234375,

+        "z": "2e6279df.227e56",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "aafbe068.0daef",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$config-scale-out-input.common-header.request-id + '-' + $config-scale-out-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='config-scale-out'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$config-scale-out-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$config-scale-out-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$config-scale-out-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$config-scale-out-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$config-scaleout-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$config-scale-out-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$config-scale-out-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$config-scale-out-input.common-header.flags.ttl`'/>\n<parameter name='lcm-dmaap.status.code' value='401' />\n<parameter name='lcm-dmaap.status.message' value=\"`'DG-Failure '  + $restconf.response-message + ' RestConf ResponseCode=' + $restconf.response-code`\"/>\n",

+        "comments": "",

+        "x": 832.0000610351562,

+        "y": 379.0833435058594,

+        "z": "2e6279df.227e56",

+        "wires": []

+    },

+    {

+        "id": "4b5b877e.ab2088",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 683.9998779296875,

+        "y": 577.0833129882812,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "c832fe63.37e5f",

+                "654b3892.a14d08",

+                "def90fda.f980a"

+            ]

+        ]

+    },

+    {

+        "id": "654b3892.a14d08",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$config-scale-out-input.common-header.request-id + '-' + $upgrade-software-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='config-scale-out'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$config-scale-out-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$config-scaleout-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$config-scale-out-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$config-scale-out-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$config-scale-out-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$config-scale-out-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$config-scale-out-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$config-scale-out-input.common-header.flags.ttl`'/>\n<parameter name='lcm-dmaap.status.code' value='`$restconf.response-code`' />\n<parameter name='lcm-dmaap.status.message' value='`$restconf.response-message`'/>\n\n",

+        "comments": "",

+        "x": 814.1666259765625,

+        "y": 530.0833435058594,

+        "z": "2e6279df.227e56",

+        "wires": []

+    },

+    {

+        "id": "bafaa90c.54ab78",

+        "type": "set",

+        "name": "set default status value",

+        "xml": "<set>\n<parameter name='status.code' value='200' />\n<parameter name='status.message' value='unexpected return from LCM DG' />",

+        "comments": "",

+        "x": 310,

+        "y": 473,

+        "z": "2e6279df.227e56",

+        "wires": []

+    },

+    {

+        "id": "dfe17100.934dc",

+        "type": "execute",

+        "name": "execute RestConfAPI",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.lcm.restconf.configscaleout.templatefile`\" />\n    <parameter name='restapiUrl' value=\"`'http://' + $payloadJson.request-parameters.host-ip-address + ':' + $prop.lcm.restconf.port + $prop.lcm.restconf.configscaleout.urlpath  + $payloadJson.configuration-parameters.ip-addr`\" />\n    <parameter name='restapiUser' value='`$prop.lcm.restconf.configscaleout.user`' />\n    <parameter name='restapiPassword' value='`$prop.lcm.restconf.configscaleout.password`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='PUT' />\n    <parameter name='contentType' value='application/json' />\n    <parameter name=\"responsePrefix\" value=\"restconf\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 302,

+        "y": 582,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "9aa59a9a.573488",

+                "af21aba.b59b158"

+            ]

+        ]

+    },

+    {

+        "id": "4ce05c2c.5aa5b4",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='config-scale-out-input.payload' />\n\t<parameter name='outputPath' value='payloadJson' />\n\t<parameter name='isEscaped' value='true' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 310,

+        "y": 520,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "e5f5e49e.ae0018"

+            ]

+        ]

+    },

+    {

+        "id": "874cba8d.9da118",

+        "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='`$payloadJson.request-parameters.host-ip-address`'/>\n\t<parameter name='field2' value='`$payloadJson.configuration-parameters.ip-addr`'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 678,

+        "y": 430,

+        "z": "2e6279df.227e56",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e5f5e49e.ae0018",

+        "type": "other",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 536,

+        "y": 429,

+        "z": "2e6279df.227e56",

+        "wires": [

+            [

+                "874cba8d.9da118"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_distribute-traffic.json b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_distribute-traffic.json
new file mode 100755
index 0000000..fcd3d4f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_distribute-traffic.json
@@ -0,0 +1,813 @@
+[

+    {

+        "id": "fab0f7ed.c486b8",

+        "type": "method",

+        "name": "distribute-traffic",

+        "xml": "<method rpc='distribute-traffic' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 480,

+        "y": 147,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "5ccc8e8d.06e5"

+            ]

+        ]

+    },

+    {

+        "id": "5c791eb8.0072b",

+        "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": 267.99993896484375,

+        "y": 148,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "fab0f7ed.c486b8"

+            ]

+        ]

+    },

+    {

+        "id": "3503ece1.d7ad14",

+        "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='`$distribute-traffic-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='`$distribute-traffic-input.common-header.request-id`'/>\n<parameter name='PlaybookName' value='`$playbookname`'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 335.00001525878906,

+        "y": 755,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "734b2c42.973ee4",

+                "bb8a76ca.fb7058",

+                "a457fe79.46497"

+            ]

+        ]

+    },

+    {

+        "id": "f17ff2aa.67075",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 734.9999389648438,

+        "y": 863.0000305175781,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "7ad5787f.1c20f8",

+                "b6f779a3.cc7ed8",

+                "f695f05e.abf31"

+            ]

+        ]

+    },

+    {

+        "id": "7ad5787f.1c20f8",

+        "type": "other",

+        "name": "outcome 500",

+        "xml": "<outcome value='500'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 879.9999389648438,

+        "y": 861.0000381469727,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "b6f779a3.cc7ed8",

+        "type": "other",

+        "name": "outcome 100",

+        "xml": "<outcome value='100'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 876.9999389648438,

+        "y": 918.0000305175781,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "1a65bc45.b2fcb4"

+            ]

+        ]

+    },

+    {

+        "id": "1a65bc45.b2fcb4",

+        "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": 1064.9999389648438,

+        "y": 917.0000305175781,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "5b0d24c6.9eb0ac",

+                "2b5e4322.1d495c"

+            ]

+        ]

+    },

+    {

+        "id": "bb8a76ca.fb7058",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 593.9999389648438,

+        "y": 776.0000915527344,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "734b2c42.973ee4",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 595.9999389648438,

+        "y": 828.0000610351562,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "f17ff2aa.67075"

+            ]

+        ]

+    },

+    {

+        "id": "5b0d24c6.9eb0ac",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1233.9999389648438,

+        "y": 875.0000381469727,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "f695f05e.abf31",

+        "type": "other",

+        "name": "outcome 101",

+        "xml": "<outcome value='101'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 876.9999389648438,

+        "y": 819.0000686645508,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "2b5e4322.1d495c",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1241.9998779296875,

+        "y": 923.0001220703125,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "db1e6d62.a1404"

+            ]

+        ]

+    },

+    {

+        "id": "c1a2b259.11e46",

+        "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": 1535.9998779296875,

+        "y": 980.0000610351562,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "566f9779.c05d38",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 83,

+        "y": 147,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "5c791eb8.0072b"

+            ]

+        ]

+    },

+    {

+        "id": "5ccc8e8d.06e5",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 80.91668701171875,

+        "y": 239.08334350585938,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "3503ece1.d7ad14",

+                "dc18f7c9.2e4ac8",

+                "814875d2.cac108",

+                "e9d89bdf.30f7a8",

+                "69e97f86.e07ef",

+                "fa9a8e1f.bba53",

+                "baba22fc.1ceb5",

+                "81510405.ca8868"

+            ]

+        ]

+    },

+    {

+        "id": "dc18f7c9.2e4ac8",

+        "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": 379.0000305175781,

+        "y": 272.0833435058594,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "70d1c79a.089af8",

+        "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": 1545.9998779296875,

+        "y": 725.0834045410156,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "d776c76b.1dd188"

+            ]

+        ]

+    },

+    {

+        "id": "d776c76b.1dd188",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1715.9998168945312,

+        "y": 724.0834045410156,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "eac6c260.d11fc"

+            ]

+        ]

+    },

+    {

+        "id": "2b54a991.b17b16",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1348.9998168945312,

+        "y": 749.0834045410156,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "70d1c79a.089af8",

+                "7970fcd5.6f11b4",

+                "3d8934f9.d0339c"

+            ]

+        ]

+    },

+    {

+        "id": "e790e11b.4f947",

+        "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": 1546.4998779296875,

+        "y": 930.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2e13891.034f576"

+            ]

+        ]

+    },

+    {

+        "id": "2e13891.034f576",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1714.4998779296875,

+        "y": 930.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "30475e40.9b8be2"

+            ]

+        ]

+    },

+    {

+        "id": "eac6c260.d11fc",

+        "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": 1835.9998779296875,

+        "y": 723.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7970fcd5.6f11b4",

+        "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": 1527.91650390625,

+        "y": 776.0834045410156,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "30475e40.9b8be2",

+        "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": 1842.9166259765625,

+        "y": 930.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3d8934f9.d0339c",

+        "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=\"`$distribute-traffic-input.common-header.request-id + '-' + $distribute-traffic-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='distribute-traffic'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$distribute-traffic-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$distribute-traffic-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$distribute-traffic-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$distribute-traffic-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$distribute-traffic-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$distribute-traffic-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$distribute-traffic-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$distribute-traffic-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": 1532.9998779296875,

+        "y": 672.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "db1e6d62.a1404",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1369.9998779296875,

+        "y": 924.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "e790e11b.4f947",

+                "3a3f1d44.898da2",

+                "c1a2b259.11e46"

+            ]

+        ]

+    },

+    {

+        "id": "3a3f1d44.898da2",

+        "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=\"`$distribute-traffic-input.common-header.request-id + '-' + $distribute-traffic-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='distribute-traffic'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$distribute-traffic-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$distribute-traffic-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$distribute-traffic-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$distribute-traffic-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$distribute-traffic-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$distribute-traffic-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$distribute-traffic-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$distribute-traffic-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": 1536.1666259765625,

+        "y": 875.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "a457fe79.46497",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 602.9999389648438,

+        "y": 728.0000610351562,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "3d4c2c9a.7b1324"

+            ]

+        ]

+    },

+    {

+        "id": "d512629f.bc625",

+        "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": 893.9999389648438,

+        "y": 687,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "3d4c2c9a.7b1324",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 739.9999389648438,

+        "y": 722.0000610351562,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "d512629f.bc625",

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "814875d2.cac108",

+        "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": 372,

+        "y": 319,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "442dbdff.6dfcb4",

+        "type": "get-resource",

+        "name": "get aai.generic-vnf ",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $distribute-traffic-input.action-identifiers.vnf-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx='aai.generic-vnf'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 912,

+        "y": 495,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "1e57cb28.122ad5"

+            ]

+        ]

+    },

+    {

+        "id": "1e57cb28.122ad5",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1070.3907470703125,

+        "y": 493.28399658203125,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "5a65efc0.bf413"

+            ]

+        ]

+    },

+    {

+        "id": "baba22fc.1ceb5",

+        "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": 300.9998779296875,

+        "y": 683,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "69e97f86.e07ef",

+        "type": "switchNode",

+        "name": "switch pnf-flag",

+        "xml": "<switch test='`$payloadJson.pnf-flag`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 354,

+        "y": 420,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "e43265e9.4c7f38",

+                "d78c93da.7125f"

+            ]

+        ]

+    },

+    {

+        "id": "e9d89bdf.30f7a8",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='distribute-traffic-input.payload' />\n\t<parameter name='outputPath' value='payloadJson' />\n\t<parameter name='isEscaped' value='true' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 386,

+        "y": 366,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e43265e9.4c7f38",

+        "type": "outcome",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 551,

+        "y": 399,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "abbc4ae4.be5328"

+            ]

+        ]

+    },

+    {

+        "id": "d78c93da.7125f",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 550.9999389648438,

+        "y": 460,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "f68ee407.ca6d88"

+            ]

+        ]

+    },

+    {

+        "id": "f68ee407.ca6d88",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 698.9999389648438,

+        "y": 459,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "442dbdff.6dfcb4",

+                "80c560bb.eea5f"

+            ]

+        ]

+    },

+    {

+        "id": "abbc4ae4.be5328",

+        "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.distribute-traffic.playbookname`'/>\n",

+        "comments": "",

+        "x": 712,

+        "y": 397,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "80c560bb.eea5f",

+        "type": "execute",

+        "name": "set playbookname",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='outputPath' value='playbookname' />\n\t<parameter name='source' value=\"`'prop.lcm.' + $payloadJson.nf-naming-code + '.distribute-traffic.playbookname'`\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 921,

+        "y": 439,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fa9a8e1f.bba53",

+        "type": "switchNode",

+        "name": "switch playbookname",

+        "xml": "<switch test='`$playbookname`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 351,

+        "y": 551,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "1a5624d2.74e98b"

+            ]

+        ]

+    },

+    {

+        "id": "1a5624d2.74e98b",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 522,

+        "y": 552,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "524c17a1.30fbf8"

+            ]

+        ]

+    },

+    {

+        "id": "524c17a1.30fbf8",

+        "type": "set",

+        "name": "set playbookname",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>\n<parameter name='playbookname' value='`$prop.lcm.distribute-traffic.playbookname`'/>",

+        "comments": "",

+        "x": 712,

+        "y": 551,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "81510405.ca8868",

+        "type": "switchNode",

+        "name": "switch nodelist",

+        "xml": "<switch test='`$nodelist`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 341,

+        "y": 610,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "7a126f.d2de2d9",

+                "8743a074.e8506"

+            ]

+        ]

+    },

+    {

+        "id": "7a126f.d2de2d9",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 521,

+        "y": 603,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "c954af6f.c34df"

+            ]

+        ]

+    },

+    {

+        "id": "c954af6f.c34df",

+        "type": "set",

+        "name": "set nodelist",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>",

+        "comments": "",

+        "x": 678,

+        "y": 617,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "8743a074.e8506",

+        "type": "outcome",

+        "name": "empty",

+        "xml": "<outcome value=\"['']\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 520,

+        "y": 647,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "c954af6f.c34df"

+            ]

+        ]

+    },

+    {

+        "id": "90b2891b.001708",

+        "type": "switchNode",

+        "name": "switch playbookname",

+        "xml": "<switch test='`$playbookname`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1396,

+        "y": 482,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "c9dd0d76.432f7"

+            ]

+        ]

+    },

+    {

+        "id": "c9dd0d76.432f7",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1574,

+        "y": 482,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "6ea15b2b.d9cd74"

+            ]

+        ]

+    },

+    {

+        "id": "9706bdee.6acf9",

+        "type": "set",

+        "name": "set nodelist",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`'[' + $quote + $aai.generic-vnf.ipv4-oam-address +  $quote + ']'`\"/>\n",

+        "comments": "",

+        "x": 1369,

+        "y": 535,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "5a65efc0.bf413",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1199,

+        "y": 492,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "90b2891b.001708",

+                "9706bdee.6acf9"

+            ]

+        ]

+    },

+    {

+        "id": "6ea15b2b.d9cd74",

+        "type": "execute",

+        "name": "set playbookname",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='outputPath' value='playbookname' />\n\t<parameter name='source' value=\"`'prop.lcm.' + $aai.generic-vnf.nf-naming-code + '.distribute-traffic.playbookname'`\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1746,

+        "y": 480,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_health-check.json b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_health-check.json
new file mode 100755
index 0000000..60e65b6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_health-check.json
@@ -0,0 +1,364 @@
+[

+    {

+        "id": "2b8f6748.3fa5c8",

+        "type": "method",

+        "name": "health-check",

+        "xml": "<method rpc='health-check' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 691,

+        "y": 201,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "86fd93d8.101eb"

+            ]

+        ]

+    },

+    {

+        "id": "785dd229.90154c",

+        "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": 482.99993896484375,

+        "y": 203,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "2b8f6748.3fa5c8"

+            ]

+        ]

+    },

+    {

+        "id": "a28eb083.f3e5f",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 298,

+        "y": 202,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "785dd229.90154c"

+            ]

+        ]

+    },

+    {

+        "id": "86fd93d8.101eb",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 283.91668701171875,

+        "y": 339.0833435058594,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "bbe42636.ef2208",

+                "e6df0ad2.e107d8",

+                "671ded81.c280d4",

+                "a0daec6.f75351"

+            ]

+        ]

+    },

+    {

+        "id": "bbe42636.ef2208",

+        "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": 468.00001525878906,

+        "y": 318.0833435058594,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e6df0ad2.e107d8",

+        "type": "set",

+        "name": "set default status value",

+        "xml": "<set>\n<parameter name='status.code' value='200' />\n<parameter name='status.message' value='unexpected return from LCM DG' />",

+        "comments": "",

+        "x": 476,

+        "y": 364,

+        "z": "bbb5423b.9a29f",

+        "wires": []

+    },

+    {

+        "id": "a0daec6.f75351",

+        "type": "execute",

+        "name": "execute RestConfAPI",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='restapiUrl' value=\"`'http://' + $payloadJson.request-parameters.host-ip-address + ':' + $prop.lcm.restconf.port + $prop.lcm.restconf.configscaleout.geturlpath`\" />\n    <parameter name='restapiUser' value='`$prop.lcm.restconf.user`' />\n    <parameter name='restapiPassword' value='`$prop.lcm.restconf.password`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='GET' />\n    <parameter name=\"responsePrefix\" value=\"restconf\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 465,

+        "y": 474,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "a0cf136b.8e462",

+                "239d5c1.593a9a4"

+            ]

+        ]

+    },

+    {

+        "id": "671ded81.c280d4",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='health-check-input.payload' />\n\t<parameter name='outputPath' value='payloadJson' />\n\t<parameter name='isEscaped' value='true' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 476,

+        "y": 411,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "8008fd81.155e7"

+            ]

+        ]

+    },

+    {

+        "id": "289cee6b.89c1d2",

+        "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='`$payloadJson.request-parameters.host-ip-address`'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 845,

+        "y": 299,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8008fd81.155e7",

+        "type": "other",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 702,

+        "y": 302,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "289cee6b.89c1d2"

+            ]

+        ]

+    },

+    {

+        "id": "a0cf136b.8e462",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 722,

+        "y": 379,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "d1efbb12.8f20b8"

+            ]

+        ]

+    },

+    {

+        "id": "239d5c1.593a9a4",

+        "type": "other",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 724,

+        "y": 503.9999694824219,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "d97877e8.182738"

+            ]

+        ]

+    },

+    {

+        "id": "8d0805b4.65dad8",

+        "type": "returnSuccess",

+        "name": "return success",

+        "xml": "<return status='success'>\n<parameter name='status.code' value='`$restconf.response-code`' />\n<parameter name='status.message' value='`$restconf.response-message`' />",

+        "comments": "",

+        "x": 1022.9998779296875,

+        "y": 555,

+        "z": "bbb5423b.9a29f",

+        "wires": []

+    },

+    {

+        "id": "e12b38ab.e68b38",

+        "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='dmaap' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1061.0000610351562,

+        "y": 363.08331298828125,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "46030217.bb5c0c"

+            ]

+        ]

+    },

+    {

+        "id": "46030217.bb5c0c",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1236,

+        "y": 364.08331298828125,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "c10a4371.c7e1"

+            ]

+        ]

+    },

+    {

+        "id": "d1efbb12.8f20b8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 848,

+        "y": 376.08331298828125,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "e12b38ab.e68b38",

+                "55604be3.6c4c94",

+                "48cd4e57.0a075"

+            ]

+        ]

+    },

+    {

+        "id": "2473531d.cd328c",

+        "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='dmaap' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1043.4998779296875,

+        "y": 504.08331298828125,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "5e7f5a6e.1235f4"

+            ]

+        ]

+    },

+    {

+        "id": "5e7f5a6e.1235f4",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1220.4998779296875,

+        "y": 503.0833435058594,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "395b2b90.bcb3e4"

+            ]

+        ]

+    },

+    {

+        "id": "c10a4371.c7e1",

+        "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": 1362,

+        "y": 360.08331298828125,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "55604be3.6c4c94",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='status.code' value= '`$lcm-dmaap.status.code`'/>\n<parameter name='status.message' value='`$lcm-dmaap.status.message`' />\n",

+        "comments": "",

+        "x": 1033.9166870117188,

+        "y": 411.08331298828125,

+        "z": "bbb5423b.9a29f",

+        "wires": []

+    },

+    {

+        "id": "395b2b90.bcb3e4",

+        "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": 1352.9166259765625,

+        "y": 501.0833435058594,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d97877e8.182738",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 862.9998779296875,

+        "y": 501.0832824707031,

+        "z": "bbb5423b.9a29f",

+        "wires": [

+            [

+                "2473531d.cd328c",

+                "fc35ebb1.2e7db8",

+                "8d0805b4.65dad8"

+            ]

+        ]

+    },

+    {

+        "id": "fc35ebb1.2e7db8",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$health-check-input.common-header.request-id + '-' + $health-check-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='health-check'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$health-check-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$health-check-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$health-check-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$health-check-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$health-check-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$health-check-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$health-check-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$health-check-input.common-header.flags.ttl`'/>\n<parameter name='lcm-dmaap.status.code' value='`$restconf.response-code`' />\n<parameter name='lcm-dmaap.status.message' value='`$restconf.response-message`'/>\n\n",

+        "comments": "",

+        "x": 1003.1666259765625,

+        "y": 456.08331298828125,

+        "z": "bbb5423b.9a29f",

+        "wires": []

+    },

+    {

+        "id": "48cd4e57.0a075",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$health-check-input.common-header.request-id + '-' + $health-check-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='health-check'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$health-check-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$health-check-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$health-check-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$health-check-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$health-check-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$health-check-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$health-check-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$health-check-input.common-header.flags.ttl`'/>\n<parameter name='lcm-dmaap.status.code' value='401' />\n<parameter name='lcm-dmaap.status.message' value=\"`'DG-Failure '  + $restconf.response-message + ' RestConf ResponseCode=' + $restconf.response-code`\"/>\n",

+        "comments": "",

+        "x": 1019,

+        "y": 306,

+        "z": "bbb5423b.9a29f",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_lock.json b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_lock.json
new file mode 100644
index 0000000..dea68fa
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_lock.json
@@ -0,0 +1,164 @@
+[

+    {

+        "id": "c36c1e82.e47c",

+        "type": "method",

+        "name": "lock",

+        "xml": "<method rpc='lock' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 530,

+        "y": 121,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "ea26f1ed.e963b"

+            ]

+        ]

+    },

+    {

+        "id": "4c2264b2.81a61c",

+        "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": 300.99993896484375,

+        "y": 122,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "c36c1e82.e47c"

+            ]

+        ]

+    },

+    {

+        "id": "a3360ab0.ce42c8",

+        "type": "returnSuccess",

+        "name": "return success",

+        "xml": "<return status='success'>\n<parameter name='status.code' value='400' />\n<parameter name='status.message' value='SDNC Lock Mock returns success'/>",

+        "comments": "",

+        "x": 383,

+        "y": 510,

+        "z": "a439ae77.f8998",

+        "wires": []

+    },

+    {

+        "id": "7e67863d.7c42f8",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 98,

+        "y": 121,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "4c2264b2.81a61c"

+            ]

+        ]

+    },

+    {

+        "id": "ea26f1ed.e963b",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 133.91668701171875,

+        "y": 275.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "f1d5fb31.fa3878",

+                "625601b.39b33",

+                "786cf009.ea481",

+                "cd184491.d656e8",

+                "a3360ab0.ce42c8"

+            ]

+        ]

+    },

+    {

+        "id": "f1d5fb31.fa3878",

+        "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": 421,

+        "y": 260.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "cd184491.d656e8",

+        "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": 397,

+        "y": 437.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "91133c94.04e29"

+            ]

+        ]

+    },

+    {

+        "id": "91133c94.04e29",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 606,

+        "y": 435.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "f3b86bb6.9cf808"

+            ]

+        ]

+    },

+    {

+        "id": "f3b86bb6.9cf808",

+        "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": 766,

+        "y": 435.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "786cf009.ea481",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$lock-input.common-header.request-id + '-' + $lock-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='lock'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$lock-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$lock-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$lock-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$lock-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$lock-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$lock-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$lock-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$lock-input.common-header.flags.ttl`'/>\n<parameter name='lcm-dmaap.status.code' value='400' />\n<parameter name='lcm-dmaap.status.message' value='SDNC Lock Mock returns success'/>\n",

+        "comments": "",

+        "x": 369,

+        "y": 369.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": []

+    },

+    {

+        "id": "625601b.39b33",

+        "type": "set",

+        "name": "set default status value",

+        "xml": "<set>\n<parameter name='status.code' value='200' />\n<parameter name='status.message' value='unexpected return from DG' />\n",

+        "comments": "",

+        "x": 423,

+        "y": 312,

+        "z": "a439ae77.f8998",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_quiesce-traffic.json b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_quiesce-traffic.json
new file mode 100644
index 0000000..d6f757a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_quiesce-traffic.json
@@ -0,0 +1,813 @@
+[

+    {

+        "id": "fab0f7ed.c486b8",

+        "type": "method",

+        "name": "quiesce-traffic",

+        "xml": "<method rpc='quiesce-traffic' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 480,

+        "y": 147,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "5ccc8e8d.06e5"

+            ]

+        ]

+    },

+    {

+        "id": "5c791eb8.0072b",

+        "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": 267.99993896484375,

+        "y": 148,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "fab0f7ed.c486b8"

+            ]

+        ]

+    },

+    {

+        "id": "3503ece1.d7ad14",

+        "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='`$quiesce-traffic-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='`$quiesce-traffic-input.common-header.request-id`'/>\n<parameter name='PlaybookName' value='`$playbookname`'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 335.00001525878906,

+        "y": 755,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "734b2c42.973ee4",

+                "bb8a76ca.fb7058",

+                "a457fe79.46497"

+            ]

+        ]

+    },

+    {

+        "id": "f17ff2aa.67075",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 734.9999389648438,

+        "y": 863.0000305175781,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "7ad5787f.1c20f8",

+                "b6f779a3.cc7ed8",

+                "f695f05e.abf31"

+            ]

+        ]

+    },

+    {

+        "id": "7ad5787f.1c20f8",

+        "type": "other",

+        "name": "outcome 500",

+        "xml": "<outcome value='500'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 879.9999389648438,

+        "y": 861.0000381469727,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "b6f779a3.cc7ed8",

+        "type": "other",

+        "name": "outcome 100",

+        "xml": "<outcome value='100'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 876.9999389648438,

+        "y": 918.0000305175781,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "1a65bc45.b2fcb4"

+            ]

+        ]

+    },

+    {

+        "id": "1a65bc45.b2fcb4",

+        "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": 1064.9999389648438,

+        "y": 917.0000305175781,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "5b0d24c6.9eb0ac",

+                "2b5e4322.1d495c"

+            ]

+        ]

+    },

+    {

+        "id": "bb8a76ca.fb7058",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 593.9999389648438,

+        "y": 776.0000915527344,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "734b2c42.973ee4",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 595.9999389648438,

+        "y": 828.0000610351562,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "f17ff2aa.67075"

+            ]

+        ]

+    },

+    {

+        "id": "5b0d24c6.9eb0ac",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1233.9999389648438,

+        "y": 875.0000381469727,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "f695f05e.abf31",

+        "type": "other",

+        "name": "outcome 101",

+        "xml": "<outcome value='101'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 876.9999389648438,

+        "y": 819.0000686645508,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "2b5e4322.1d495c",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1241.9998779296875,

+        "y": 923.0001220703125,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "db1e6d62.a1404"

+            ]

+        ]

+    },

+    {

+        "id": "c1a2b259.11e46",

+        "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": 1535.9998779296875,

+        "y": 980.0000610351562,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "566f9779.c05d38",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 83,

+        "y": 147,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "5c791eb8.0072b"

+            ]

+        ]

+    },

+    {

+        "id": "5ccc8e8d.06e5",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 80.91668701171875,

+        "y": 239.08334350585938,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "3503ece1.d7ad14",

+                "dc18f7c9.2e4ac8",

+                "814875d2.cac108",

+                "e9d89bdf.30f7a8",

+                "69e97f86.e07ef",

+                "fa9a8e1f.bba53",

+                "baba22fc.1ceb5",

+                "81510405.ca8868"

+            ]

+        ]

+    },

+    {

+        "id": "dc18f7c9.2e4ac8",

+        "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": 379.0000305175781,

+        "y": 272.0833435058594,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "70d1c79a.089af8",

+        "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": 1545.9998779296875,

+        "y": 725.0834045410156,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "d776c76b.1dd188"

+            ]

+        ]

+    },

+    {

+        "id": "d776c76b.1dd188",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1715.9998168945312,

+        "y": 724.0834045410156,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "eac6c260.d11fc"

+            ]

+        ]

+    },

+    {

+        "id": "2b54a991.b17b16",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1348.9998168945312,

+        "y": 749.0834045410156,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "70d1c79a.089af8",

+                "7970fcd5.6f11b4",

+                "3d8934f9.d0339c"

+            ]

+        ]

+    },

+    {

+        "id": "e790e11b.4f947",

+        "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": 1546.4998779296875,

+        "y": 930.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2e13891.034f576"

+            ]

+        ]

+    },

+    {

+        "id": "2e13891.034f576",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1714.4998779296875,

+        "y": 930.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "30475e40.9b8be2"

+            ]

+        ]

+    },

+    {

+        "id": "eac6c260.d11fc",

+        "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": 1835.9998779296875,

+        "y": 723.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7970fcd5.6f11b4",

+        "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": 1527.91650390625,

+        "y": 776.0834045410156,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "30475e40.9b8be2",

+        "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": 1842.9166259765625,

+        "y": 930.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3d8934f9.d0339c",

+        "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=\"`$quiesce-traffic-input.common-header.request-id + '-' + $quiesce-traffic-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='quiesce-traffic'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$quiesce-traffic-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$quiesce-traffic-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$quiesce-traffic-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$quiesce-traffic-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$quiesce-traffic-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$quiesce-traffic-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$quiesce-traffic-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$quiesce-traffic-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": 1532.9998779296875,

+        "y": 672.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "db1e6d62.a1404",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1369.9998779296875,

+        "y": 924.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "e790e11b.4f947",

+                "3a3f1d44.898da2",

+                "c1a2b259.11e46"

+            ]

+        ]

+    },

+    {

+        "id": "3a3f1d44.898da2",

+        "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=\"`$quiesce-traffic-input.common-header.request-id + '-' + $quiesce-traffic-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='quiesce-traffic'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$quiesce-traffic-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$quiesce-traffic-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$quiesce-traffic-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$quiesce-traffic-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$quiesce-traffic-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$quiesce-traffic-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$quiesce-traffic-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$quiesce-traffic-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": 1536.1666259765625,

+        "y": 875.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "a457fe79.46497",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 602.9999389648438,

+        "y": 728.0000610351562,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "3d4c2c9a.7b1324"

+            ]

+        ]

+    },

+    {

+        "id": "d512629f.bc625",

+        "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": 893.9999389648438,

+        "y": 687,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "3d4c2c9a.7b1324",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 739.9999389648438,

+        "y": 722.0000610351562,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "d512629f.bc625",

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "814875d2.cac108",

+        "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": 372,

+        "y": 319,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "442dbdff.6dfcb4",

+        "type": "get-resource",

+        "name": "get aai.generic-vnf ",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $quiesce-traffic-input.action-identifiers.vnf-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx='aai.generic-vnf'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 912,

+        "y": 495,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "1e57cb28.122ad5"

+            ]

+        ]

+    },

+    {

+        "id": "1e57cb28.122ad5",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1070.3907470703125,

+        "y": 493.28399658203125,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "5a65efc0.bf413"

+            ]

+        ]

+    },

+    {

+        "id": "baba22fc.1ceb5",

+        "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": 300.9998779296875,

+        "y": 683,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "69e97f86.e07ef",

+        "type": "switchNode",

+        "name": "switch pnf-flag",

+        "xml": "<switch test='`$payloadJson.pnf-flag`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 354,

+        "y": 420,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "e43265e9.4c7f38",

+                "d78c93da.7125f"

+            ]

+        ]

+    },

+    {

+        "id": "e9d89bdf.30f7a8",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='quiesce-traffic-input.payload' />\n\t<parameter name='outputPath' value='payloadJson' />\n\t<parameter name='isEscaped' value='true' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 386,

+        "y": 366,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e43265e9.4c7f38",

+        "type": "outcome",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 551,

+        "y": 399,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "abbc4ae4.be5328"

+            ]

+        ]

+    },

+    {

+        "id": "d78c93da.7125f",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 550.9999389648438,

+        "y": 460,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "f68ee407.ca6d88"

+            ]

+        ]

+    },

+    {

+        "id": "f68ee407.ca6d88",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 698.9999389648438,

+        "y": 459,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "442dbdff.6dfcb4",

+                "80c560bb.eea5f"

+            ]

+        ]

+    },

+    {

+        "id": "abbc4ae4.be5328",

+        "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.quiesce-traffic.playbookname`'/>\n",

+        "comments": "",

+        "x": 712,

+        "y": 397,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "80c560bb.eea5f",

+        "type": "execute",

+        "name": "set playbookname",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='outputPath' value='playbookname' />\n\t<parameter name='source' value=\"`'prop.lcm.' + $payloadJson.nf-naming-code + '.quiesce-traffic.playbookname'`\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 921,

+        "y": 439,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fa9a8e1f.bba53",

+        "type": "switchNode",

+        "name": "switch playbookname",

+        "xml": "<switch test='`$playbookname`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 351,

+        "y": 551,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "1a5624d2.74e98b"

+            ]

+        ]

+    },

+    {

+        "id": "1a5624d2.74e98b",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 522,

+        "y": 552,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "524c17a1.30fbf8"

+            ]

+        ]

+    },

+    {

+        "id": "524c17a1.30fbf8",

+        "type": "set",

+        "name": "set playbookname",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>\n<parameter name='playbookname' value='`$prop.lcm.quiesce-traffic.playbookname`'/>",

+        "comments": "",

+        "x": 712,

+        "y": 551,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "81510405.ca8868",

+        "type": "switchNode",

+        "name": "switch nodelist",

+        "xml": "<switch test='`$nodelist`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 341,

+        "y": 610,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "7a126f.d2de2d9",

+                "8743a074.e8506"

+            ]

+        ]

+    },

+    {

+        "id": "7a126f.d2de2d9",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 521,

+        "y": 603,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "c954af6f.c34df"

+            ]

+        ]

+    },

+    {

+        "id": "c954af6f.c34df",

+        "type": "set",

+        "name": "set nodelist",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>",

+        "comments": "",

+        "x": 678,

+        "y": 617,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "8743a074.e8506",

+        "type": "outcome",

+        "name": "empty",

+        "xml": "<outcome value=\"['']\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 520,

+        "y": 647,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "c954af6f.c34df"

+            ]

+        ]

+    },

+    {

+        "id": "90b2891b.001708",

+        "type": "switchNode",

+        "name": "switch playbookname",

+        "xml": "<switch test='`$playbookname`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1396,

+        "y": 482,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "c9dd0d76.432f7"

+            ]

+        ]

+    },

+    {

+        "id": "c9dd0d76.432f7",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1574,

+        "y": 482,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "6ea15b2b.d9cd74"

+            ]

+        ]

+    },

+    {

+        "id": "9706bdee.6acf9",

+        "type": "set",

+        "name": "set nodelist",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`'[' + $quote + $aai.generic-vnf.ipv4-oam-address +  $quote + ']'`\"/>\n",

+        "comments": "",

+        "x": 1369,

+        "y": 535,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "5a65efc0.bf413",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1199,

+        "y": 492,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "90b2891b.001708",

+                "9706bdee.6acf9"

+            ]

+        ]

+    },

+    {

+        "id": "6ea15b2b.d9cd74",

+        "type": "execute",

+        "name": "set playbookname",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='outputPath' value='playbookname' />\n\t<parameter name='source' value=\"`'prop.lcm.' + $aai.generic-vnf.nf-naming-code + '.quiesce-traffic.playbookname'`\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1746,

+        "y": 480,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_resume-traffic.json b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_resume-traffic.json
new file mode 100644
index 0000000..405e58b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_resume-traffic.json
@@ -0,0 +1,813 @@
+[

+    {

+        "id": "fab0f7ed.c486b8",

+        "type": "method",

+        "name": "resume-traffic",

+        "xml": "<method rpc='resume-traffic' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 480,

+        "y": 147,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "5ccc8e8d.06e5"

+            ]

+        ]

+    },

+    {

+        "id": "5c791eb8.0072b",

+        "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": 267.99993896484375,

+        "y": 148,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "fab0f7ed.c486b8"

+            ]

+        ]

+    },

+    {

+        "id": "3503ece1.d7ad14",

+        "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='`$resume-traffic-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='`$resume-traffic-input.common-header.request-id`'/>\n<parameter name='PlaybookName' value='`$playbookname`'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 335.00001525878906,

+        "y": 755,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "734b2c42.973ee4",

+                "bb8a76ca.fb7058",

+                "a457fe79.46497"

+            ]

+        ]

+    },

+    {

+        "id": "f17ff2aa.67075",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 734.9999389648438,

+        "y": 863.0000305175781,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "7ad5787f.1c20f8",

+                "b6f779a3.cc7ed8",

+                "f695f05e.abf31"

+            ]

+        ]

+    },

+    {

+        "id": "7ad5787f.1c20f8",

+        "type": "other",

+        "name": "outcome 500",

+        "xml": "<outcome value='500'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 879.9999389648438,

+        "y": 861.0000381469727,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "b6f779a3.cc7ed8",

+        "type": "other",

+        "name": "outcome 100",

+        "xml": "<outcome value='100'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 876.9999389648438,

+        "y": 918.0000305175781,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "1a65bc45.b2fcb4"

+            ]

+        ]

+    },

+    {

+        "id": "1a65bc45.b2fcb4",

+        "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": 1064.9999389648438,

+        "y": 917.0000305175781,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "5b0d24c6.9eb0ac",

+                "2b5e4322.1d495c"

+            ]

+        ]

+    },

+    {

+        "id": "bb8a76ca.fb7058",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 593.9999389648438,

+        "y": 776.0000915527344,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "734b2c42.973ee4",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 595.9999389648438,

+        "y": 828.0000610351562,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "f17ff2aa.67075"

+            ]

+        ]

+    },

+    {

+        "id": "5b0d24c6.9eb0ac",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1233.9999389648438,

+        "y": 875.0000381469727,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "f695f05e.abf31",

+        "type": "other",

+        "name": "outcome 101",

+        "xml": "<outcome value='101'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 876.9999389648438,

+        "y": 819.0000686645508,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "2b5e4322.1d495c",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1241.9998779296875,

+        "y": 923.0001220703125,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "db1e6d62.a1404"

+            ]

+        ]

+    },

+    {

+        "id": "c1a2b259.11e46",

+        "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": 1535.9998779296875,

+        "y": 980.0000610351562,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "566f9779.c05d38",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 83,

+        "y": 147,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "5c791eb8.0072b"

+            ]

+        ]

+    },

+    {

+        "id": "5ccc8e8d.06e5",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 80.91668701171875,

+        "y": 239.08334350585938,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "3503ece1.d7ad14",

+                "dc18f7c9.2e4ac8",

+                "814875d2.cac108",

+                "e9d89bdf.30f7a8",

+                "69e97f86.e07ef",

+                "fa9a8e1f.bba53",

+                "baba22fc.1ceb5",

+                "81510405.ca8868"

+            ]

+        ]

+    },

+    {

+        "id": "dc18f7c9.2e4ac8",

+        "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": 379.0000305175781,

+        "y": 272.0833435058594,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "70d1c79a.089af8",

+        "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": 1545.9998779296875,

+        "y": 725.0834045410156,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "d776c76b.1dd188"

+            ]

+        ]

+    },

+    {

+        "id": "d776c76b.1dd188",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1715.9998168945312,

+        "y": 724.0834045410156,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "eac6c260.d11fc"

+            ]

+        ]

+    },

+    {

+        "id": "2b54a991.b17b16",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1348.9998168945312,

+        "y": 749.0834045410156,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "70d1c79a.089af8",

+                "7970fcd5.6f11b4",

+                "3d8934f9.d0339c"

+            ]

+        ]

+    },

+    {

+        "id": "e790e11b.4f947",

+        "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": 1546.4998779296875,

+        "y": 930.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "2e13891.034f576"

+            ]

+        ]

+    },

+    {

+        "id": "2e13891.034f576",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1714.4998779296875,

+        "y": 930.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "30475e40.9b8be2"

+            ]

+        ]

+    },

+    {

+        "id": "eac6c260.d11fc",

+        "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": 1835.9998779296875,

+        "y": 723.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7970fcd5.6f11b4",

+        "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": 1527.91650390625,

+        "y": 776.0834045410156,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "30475e40.9b8be2",

+        "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": 1842.9166259765625,

+        "y": 930.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3d8934f9.d0339c",

+        "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=\"`$resume-traffic-input.common-header.request-id + '-' + $resume-traffic-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='resume-traffic'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$resume-traffic-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$resume-traffic-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$resume-traffic-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$resume-traffic-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$resume-traffic-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$resume-traffic-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$resume-traffic-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$resume-traffic-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": 1532.9998779296875,

+        "y": 672.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "db1e6d62.a1404",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1369.9998779296875,

+        "y": 924.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "e790e11b.4f947",

+                "3a3f1d44.898da2",

+                "c1a2b259.11e46"

+            ]

+        ]

+    },

+    {

+        "id": "3a3f1d44.898da2",

+        "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=\"`$resume-traffic-input.common-header.request-id + '-' + $resume-traffic-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='resume-traffic'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$resume-traffic-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$resume-traffic-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$resume-traffic-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$resume-traffic-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$resume-traffic-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$resume-traffic-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$resume-traffic-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$resume-traffic-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": 1536.1666259765625,

+        "y": 875.0833740234375,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "a457fe79.46497",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 602.9999389648438,

+        "y": 728.0000610351562,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "3d4c2c9a.7b1324"

+            ]

+        ]

+    },

+    {

+        "id": "d512629f.bc625",

+        "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": 893.9999389648438,

+        "y": 687,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "3d4c2c9a.7b1324",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 739.9999389648438,

+        "y": 722.0000610351562,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "d512629f.bc625",

+                "2b54a991.b17b16"

+            ]

+        ]

+    },

+    {

+        "id": "814875d2.cac108",

+        "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": 372,

+        "y": 319,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "442dbdff.6dfcb4",

+        "type": "get-resource",

+        "name": "get aai.generic-vnf ",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $resume-traffic-input.action-identifiers.vnf-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx='aai.generic-vnf'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 912,

+        "y": 495,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "1e57cb28.122ad5"

+            ]

+        ]

+    },

+    {

+        "id": "1e57cb28.122ad5",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1070.3907470703125,

+        "y": 493.28399658203125,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "5a65efc0.bf413"

+            ]

+        ]

+    },

+    {

+        "id": "baba22fc.1ceb5",

+        "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": 300.9998779296875,

+        "y": 683,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "69e97f86.e07ef",

+        "type": "switchNode",

+        "name": "switch pnf-flag",

+        "xml": "<switch test='`$payloadJson.pnf-flag`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 354,

+        "y": 420,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "e43265e9.4c7f38",

+                "d78c93da.7125f"

+            ]

+        ]

+    },

+    {

+        "id": "e9d89bdf.30f7a8",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='resume-traffic-input.payload' />\n\t<parameter name='outputPath' value='payloadJson' />\n\t<parameter name='isEscaped' value='true' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 386,

+        "y": 366,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e43265e9.4c7f38",

+        "type": "outcome",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 551,

+        "y": 399,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "abbc4ae4.be5328"

+            ]

+        ]

+    },

+    {

+        "id": "d78c93da.7125f",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 550.9999389648438,

+        "y": 460,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "f68ee407.ca6d88"

+            ]

+        ]

+    },

+    {

+        "id": "f68ee407.ca6d88",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 698.9999389648438,

+        "y": 459,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "442dbdff.6dfcb4",

+                "80c560bb.eea5f"

+            ]

+        ]

+    },

+    {

+        "id": "abbc4ae4.be5328",

+        "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.resume-traffic.playbookname`'/>\n",

+        "comments": "",

+        "x": 712,

+        "y": 397,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "80c560bb.eea5f",

+        "type": "execute",

+        "name": "set playbookname",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='outputPath' value='playbookname' />\n\t<parameter name='source' value=\"`'prop.lcm.' + $payloadJson.nf-naming-code + '.resume-traffic.playbookname'`\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 921,

+        "y": 439,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fa9a8e1f.bba53",

+        "type": "switchNode",

+        "name": "switch playbookname",

+        "xml": "<switch test='`$playbookname`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 351,

+        "y": 551,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "1a5624d2.74e98b"

+            ]

+        ]

+    },

+    {

+        "id": "1a5624d2.74e98b",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 522,

+        "y": 552,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "524c17a1.30fbf8"

+            ]

+        ]

+    },

+    {

+        "id": "524c17a1.30fbf8",

+        "type": "set",

+        "name": "set playbookname",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>\n<parameter name='playbookname' value='`$prop.lcm.resume-traffic.playbookname`'/>",

+        "comments": "",

+        "x": 712,

+        "y": 551,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "81510405.ca8868",

+        "type": "switchNode",

+        "name": "switch nodelist",

+        "xml": "<switch test='`$nodelist`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 341,

+        "y": 610,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "7a126f.d2de2d9",

+                "8743a074.e8506"

+            ]

+        ]

+    },

+    {

+        "id": "7a126f.d2de2d9",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 521,

+        "y": 603,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "c954af6f.c34df"

+            ]

+        ]

+    },

+    {

+        "id": "c954af6f.c34df",

+        "type": "set",

+        "name": "set nodelist",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>",

+        "comments": "",

+        "x": 678,

+        "y": 617,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "8743a074.e8506",

+        "type": "outcome",

+        "name": "empty",

+        "xml": "<outcome value=\"['']\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 520,

+        "y": 647,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "c954af6f.c34df"

+            ]

+        ]

+    },

+    {

+        "id": "90b2891b.001708",

+        "type": "switchNode",

+        "name": "switch playbookname",

+        "xml": "<switch test='`$playbookname`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1396,

+        "y": 482,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "c9dd0d76.432f7"

+            ]

+        ]

+    },

+    {

+        "id": "c9dd0d76.432f7",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1574,

+        "y": 482,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "6ea15b2b.d9cd74"

+            ]

+        ]

+    },

+    {

+        "id": "9706bdee.6acf9",

+        "type": "set",

+        "name": "set nodelist",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`'[' + $quote + $aai.generic-vnf.ipv4-oam-address +  $quote + ']'`\"/>\n",

+        "comments": "",

+        "x": 1369,

+        "y": 535,

+        "z": "50de34e0.ace54c",

+        "wires": []

+    },

+    {

+        "id": "5a65efc0.bf413",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1199,

+        "y": 492,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            [

+                "90b2891b.001708",

+                "9706bdee.6acf9"

+            ]

+        ]

+    },

+    {

+        "id": "6ea15b2b.d9cd74",

+        "type": "execute",

+        "name": "set playbookname",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='outputPath' value='playbookname' />\n\t<parameter name='source' value=\"`'prop.lcm.' + $aai.generic-vnf.nf-naming-code + '.resume-traffic.playbookname'`\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1746,

+        "y": 480,

+        "z": "50de34e0.ace54c",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_rollback.json b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_rollback.json
new file mode 100644
index 0000000..108d015
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_rollback.json
@@ -0,0 +1,972 @@
+[

+    {

+        "id": "603c1b6d.6124c4",

+        "type": "method",

+        "name": "rollback",

+        "xml": "<method rpc='rollback' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 577,

+        "y": 47,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "8f078f23.03658"

+            ]

+        ]

+    },

+    {

+        "id": "88cbe26c.f2c83",

+        "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": 364.99993896484375,

+        "y": 48,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "603c1b6d.6124c4"

+            ]

+        ]

+    },

+    {

+        "id": "76631d3d.b2bda4",

+        "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": 432.00001525878906,

+        "y": 655,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "86dfcb26.6ad318",

+                "ace54675.d37718",

+                "bac4c91b.f07a18"

+            ]

+        ]

+    },

+    {

+        "id": "4b37ff5.334c5",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 831.9999389648438,

+        "y": 763.0000305175781,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "9a0bf3d2.1d44f",

+                "2ee77d61.9094f2",

+                "c9baa5a1.b1a3e8"

+            ]

+        ]

+    },

+    {

+        "id": "9a0bf3d2.1d44f",

+        "type": "other",

+        "name": "outcome 500",

+        "xml": "<outcome value='500'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 976.9999389648438,

+        "y": 761.0000381469727,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "c81014d9.4af6a8"

+            ]

+        ]

+    },

+    {

+        "id": "2ee77d61.9094f2",

+        "type": "other",

+        "name": "outcome 100",

+        "xml": "<outcome value='100'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 973.9999389648438,

+        "y": 818.0000305175781,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "b8c25e18.a4534"

+            ]

+        ]

+    },

+    {

+        "id": "b8c25e18.a4534",

+        "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": 1161,

+        "y": 818.0000610351562,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "9fd8cd6c.24d13",

+                "f0a35f4d.9195a"

+            ]

+        ]

+    },

+    {

+        "id": "ace54675.d37718",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 690.9999389648438,

+        "y": 676.0000915527344,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "c81014d9.4af6a8"

+            ]

+        ]

+    },

+    {

+        "id": "86dfcb26.6ad318",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 692.9999389648438,

+        "y": 728.0000610351562,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "4b37ff5.334c5"

+            ]

+        ]

+    },

+    {

+        "id": "c9baa5a1.b1a3e8",

+        "type": "other",

+        "name": "outcome 101",

+        "xml": "<outcome value='101'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 973.9999389648438,

+        "y": 719.0000686645508,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "c81014d9.4af6a8"

+            ]

+        ]

+    },

+    {

+        "id": "8024a972.fa79a8",

+        "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": 2413.999755859375,

+        "y": 948.0000610351562,

+        "z": "deca6c6e.62787",

+        "wires": []

+    },

+    {

+        "id": "9e6a1fde.3d38e",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 180,

+        "y": 47,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "88cbe26c.f2c83"

+            ]

+        ]

+    },

+    {

+        "id": "8f078f23.03658",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 177.9166259765625,

+        "y": 139.08331298828125,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "76631d3d.b2bda4",

+                "18f99414.0f1f5c",

+                "e9a0ae4a.a010c",

+                "720dbe92.a2daf",

+                "90d2eba5.bddd78",

+                "e456084e.3d1b28",

+                "abd53cca.80312",

+                "86b92780.e4fd18"

+            ]

+        ]

+    },

+    {

+        "id": "18f99414.0f1f5c",

+        "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": 476.0000305175781,

+        "y": 172.08334350585938,

+        "z": "deca6c6e.62787",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "dd58ea95.701bc8",

+        "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": 1642.9998779296875,

+        "y": 625.0834045410156,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "79c12f79.46a5"

+            ]

+        ]

+    },

+    {

+        "id": "79c12f79.46a5",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1812.9998168945312,

+        "y": 624.0834045410156,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "69422560.e902dc"

+            ]

+        ]

+    },

+    {

+        "id": "c81014d9.4af6a8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1445.9998168945312,

+        "y": 649.0834045410156,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "dd58ea95.701bc8",

+                "5a6746.ee1428bc",

+                "3c47a348.5e546c"

+            ]

+        ]

+    },

+    {

+        "id": "12844f47.97d421",

+        "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": 1690.4998779296875,

+        "y": 924.0833740234375,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "cbef2423.2a36b8"

+            ]

+        ]

+    },

+    {

+        "id": "cbef2423.2a36b8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1877.5,

+        "y": 924.0833740234375,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "9fd0c5ed.f195b8"

+            ]

+        ]

+    },

+    {

+        "id": "69422560.e902dc",

+        "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": 1932.9998779296875,

+        "y": 623.0833740234375,

+        "z": "deca6c6e.62787",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5a6746.ee1428bc",

+        "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": 1624.91650390625,

+        "y": 676.0834045410156,

+        "z": "deca6c6e.62787",

+        "wires": []

+    },

+    {

+        "id": "9fd0c5ed.f195b8",

+        "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": 2019.91650390625,

+        "y": 924.0833740234375,

+        "z": "deca6c6e.62787",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3c47a348.5e546c",

+        "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": 1629.9998779296875,

+        "y": 572.0833740234375,

+        "z": "deca6c6e.62787",

+        "wires": []

+    },

+    {

+        "id": "542925f0.27fbdc",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1482.9998779296875,

+        "y": 821.0833740234375,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "12844f47.97d421",

+                "e3737dc2.9a3b6",

+                "764a748a.61b14c",

+                "9775ae82.61b25",

+                "9a61d7f0.2347b8"

+            ]

+        ]

+    },

+    {

+        "id": "63386817.4a7cc8",

+        "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`'/>",

+        "comments": "",

+        "x": 2042.16650390625,

+        "y": 827.0833740234375,

+        "z": "deca6c6e.62787",

+        "wires": []

+    },

+    {

+        "id": "bac4c91b.f07a18",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 699.9999389648438,

+        "y": 628.0000610351562,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "2763f6ed.1a7e1a"

+            ]

+        ]

+    },

+    {

+        "id": "eb87e665.0acf88",

+        "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": 990.9999389648438,

+        "y": 587,

+        "z": "deca6c6e.62787",

+        "wires": []

+    },

+    {

+        "id": "2763f6ed.1a7e1a",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 836.9999389648438,

+        "y": 622.0000610351562,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "eb87e665.0acf88",

+                "c81014d9.4af6a8"

+            ]

+        ]

+    },

+    {

+        "id": "e9a0ae4a.a010c",

+        "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": 469,

+        "y": 219,

+        "z": "deca6c6e.62787",

+        "wires": []

+    },

+    {

+        "id": "abd53cca.80312",

+        "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": 397.9998779296875,

+        "y": 583,

+        "z": "deca6c6e.62787",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "90d2eba5.bddd78",

+        "type": "switchNode",

+        "name": "switch pnf-flag",

+        "xml": "<switch test='`$payloadJson.pnf-flag`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 451,

+        "y": 320,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "97096eec.158be",

+                "db62c67c.f16678"

+            ]

+        ]

+    },

+    {

+        "id": "720dbe92.a2daf",

+        "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": 483,

+        "y": 266,

+        "z": "deca6c6e.62787",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "97096eec.158be",

+        "type": "outcome",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 648,

+        "y": 299,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "2baa8c31.1c7364"

+            ]

+        ]

+    },

+    {

+        "id": "db62c67c.f16678",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 648,

+        "y": 360,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "e8ec5d49.26bb5"

+            ]

+        ]

+    },

+    {

+        "id": "e8ec5d49.26bb5",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 795.9999389648438,

+        "y": 359,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "d1d2edc3.c0ebb"

+            ]

+        ]

+    },

+    {

+        "id": "2baa8c31.1c7364",

+        "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": 809,

+        "y": 297,

+        "z": "deca6c6e.62787",

+        "wires": []

+    },

+    {

+        "id": "e456084e.3d1b28",

+        "type": "switchNode",

+        "name": "switch playbookname",

+        "xml": "<switch test='`$playbookname`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 448,

+        "y": 451,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "852cba96.1b8598"

+            ]

+        ]

+    },

+    {

+        "id": "852cba96.1b8598",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 619,

+        "y": 452,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "c3a06545.f22d98"

+            ]

+        ]

+    },

+    {

+        "id": "c3a06545.f22d98",

+        "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": 809,

+        "y": 451,

+        "z": "deca6c6e.62787",

+        "wires": []

+    },

+    {

+        "id": "86b92780.e4fd18",

+        "type": "switchNode",

+        "name": "switch nodelist",

+        "xml": "<switch test='`$nodelist`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 438,

+        "y": 510,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "314228d.17719d8",

+                "d39f4666.4c5158"

+            ]

+        ]

+    },

+    {

+        "id": "314228d.17719d8",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 618,

+        "y": 503,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "e384eccc.6fd13"

+            ]

+        ]

+    },

+    {

+        "id": "e384eccc.6fd13",

+        "type": "set",

+        "name": "set nodelist",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>",

+        "comments": "",

+        "x": 775,

+        "y": 517,

+        "z": "deca6c6e.62787",

+        "wires": []

+    },

+    {

+        "id": "d39f4666.4c5158",

+        "type": "outcome",

+        "name": "empty",

+        "xml": "<outcome value=\"['']\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 617,

+        "y": 547,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "e384eccc.6fd13"

+            ]

+        ]

+    },

+    {

+        "id": "d1d2edc3.c0ebb",

+        "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": 969,

+        "y": 359,

+        "z": "deca6c6e.62787",

+        "wires": []

+    },

+    {

+        "id": "e3737dc2.9a3b6",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='org.onap.appc.adapter.ansible.results' />\n\t<parameter name='outputPath' value='resultsJson' />\n\t<parameter name='isEscaped' value='false' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1703,

+        "y": 741,

+        "z": "deca6c6e.62787",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "764a748a.61b14c",

+        "type": "execute",

+        "name": "execute getAttributeValue",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='source' value=\"`'resultsJson.' + $payloadJson.ipaddress-v4-oam + '.Output'`\" />\n\t<parameter name='outputPath' value='outputPayload' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1709,

+        "y": 796,

+        "z": "deca6c6e.62787",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9775ae82.61b25",

+        "type": "switchNode",

+        "name": "switch outputPayload",

+        "xml": "<switch test='`$outputPayload`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1694,

+        "y": 854,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "17082276.b4933e",

+                "55bb01f1.008aa"

+            ]

+        ]

+    },

+    {

+        "id": "ba985798.6d2de8",

+        "type": "set",

+        "name": "set DmaapReq with payload",

+        "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<parameter name='lcm-dmaap.payload' value='`$outputPayload`'/>",

+        "comments": "",

+        "x": 2080,

+        "y": 873,

+        "z": "deca6c6e.62787",

+        "wires": []

+    },

+    {

+        "id": "17082276.b4933e",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1876,

+        "y": 827,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "63386817.4a7cc8"

+            ]

+        ]

+    },

+    {

+        "id": "55bb01f1.008aa",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1875,

+        "y": 873,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "ba985798.6d2de8"

+            ]

+        ]

+    },

+    {

+        "id": "a556bfd0.26234",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1875,

+        "y": 970,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "921bd724.038378"

+            ]

+        ]

+    },

+    {

+        "id": "bfa7e392.13bb3",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1875,

+        "y": 1046,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "37bee539.62e3ea"

+            ]

+        ]

+    },

+    {

+        "id": "9a61d7f0.2347b8",

+        "type": "switchNode",

+        "name": "switch outputPayload",

+        "xml": "<switch test='`$outputPayload`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1691,

+        "y": 1009,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "a556bfd0.26234",

+                "bfa7e392.13bb3"

+            ]

+        ]

+    },

+    {

+        "id": "dbab97fc.ffb6e8",

+        "type": "returnSuccess",

+        "name": "return success with payload",

+        "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`'/>\n<parameter name='payload' value='`$outputPayload`'/>",

+        "comments": "",

+        "x": 2455,

+        "y": 1030,

+        "z": "deca6c6e.62787",

+        "wires": []

+    },

+    {

+        "id": "f0a35f4d.9195a",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1343.9998779296875,

+        "y": 841.0001220703125,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "542925f0.27fbdc"

+            ]

+        ]

+    },

+    {

+        "id": "9fd8cd6c.24d13",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1340.9998779296875,

+        "y": 799.0000610351562,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "542925f0.27fbdc"

+            ]

+        ]

+    },

+    {

+        "id": "921bd724.038378",

+        "type": "switchNode",

+        "name": "switch result code",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2050,

+        "y": 970,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "292c4dcf.7880e2",

+                "73b035d4.ad062c"

+            ]

+        ]

+    },

+    {

+        "id": "37bee539.62e3ea",

+        "type": "switchNode",

+        "name": "switch result code",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2050,

+        "y": 1046,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "7e470c4a.386af4",

+                "5feb02a4.d890ac"

+            ]

+        ]

+    },

+    {

+        "id": "7ef093b7.2cf64c",

+        "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": 2408,

+        "y": 986,

+        "z": "deca6c6e.62787",

+        "wires": []

+    },

+    {

+        "id": "b08c6ff3.d3ef1",

+        "type": "returnFailure",

+        "name": "return failure with payload",

+        "xml": "<return status='failure'>\n<parameter name='status.code' value='401' />\n<parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />\n<parameter name='payload' value='`$outputPayload`'/>",

+        "comments": "",

+        "x": 2451,

+        "y": 1068,

+        "z": "deca6c6e.62787",

+        "wires": []

+    },

+    {

+        "id": "292c4dcf.7880e2",

+        "type": "other",

+        "name": "outcome 400",

+        "xml": "<outcome value='400'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2238,

+        "y": 948,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "8024a972.fa79a8"

+            ]

+        ]

+    },

+    {

+        "id": "73b035d4.ad062c",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2219,

+        "y": 986,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "7ef093b7.2cf64c"

+            ]

+        ]

+    },

+    {

+        "id": "7e470c4a.386af4",

+        "type": "other",

+        "name": "outcome 400",

+        "xml": "<outcome value='400'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2239,

+        "y": 1030,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "dbab97fc.ffb6e8"

+            ]

+        ]

+    },

+    {

+        "id": "5feb02a4.d890ac",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2221,

+        "y": 1068,

+        "z": "deca6c6e.62787",

+        "wires": [

+            [

+                "b08c6ff3.d3ef1"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_snapshot.json b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_snapshot.json
new file mode 100644
index 0000000..76bb844
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_snapshot.json
@@ -0,0 +1,164 @@
+[

+    {

+        "id": "c36c1e82.e47c",

+        "type": "method",

+        "name": "snapshot",

+        "xml": "<method rpc='snapshot' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 530,

+        "y": 121,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "ea26f1ed.e963b"

+            ]

+        ]

+    },

+    {

+        "id": "4c2264b2.81a61c",

+        "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": 300.99993896484375,

+        "y": 122,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "c36c1e82.e47c"

+            ]

+        ]

+    },

+    {

+        "id": "a3360ab0.ce42c8",

+        "type": "returnSuccess",

+        "name": "return success",

+        "xml": "<return status='success'>\n<parameter name='status.code' value='400' />\n<parameter name='status.message' value='SDNC Snapshot Mock returns success'/>",

+        "comments": "",

+        "x": 383,

+        "y": 510,

+        "z": "a439ae77.f8998",

+        "wires": []

+    },

+    {

+        "id": "7e67863d.7c42f8",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 98,

+        "y": 121,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "4c2264b2.81a61c"

+            ]

+        ]

+    },

+    {

+        "id": "ea26f1ed.e963b",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 133.91668701171875,

+        "y": 275.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "f1d5fb31.fa3878",

+                "625601b.39b33",

+                "786cf009.ea481",

+                "cd184491.d656e8",

+                "a3360ab0.ce42c8"

+            ]

+        ]

+    },

+    {

+        "id": "f1d5fb31.fa3878",

+        "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": 421,

+        "y": 260.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "cd184491.d656e8",

+        "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": 397,

+        "y": 437.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "91133c94.04e29"

+            ]

+        ]

+    },

+    {

+        "id": "91133c94.04e29",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 606,

+        "y": 435.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "f3b86bb6.9cf808"

+            ]

+        ]

+    },

+    {

+        "id": "f3b86bb6.9cf808",

+        "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": 766,

+        "y": 435.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "786cf009.ea481",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$snapshot-input.common-header.request-id + '-' + $snapshot-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='snapshot'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$snapshot-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$snapshot-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$snapshot-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$snapshot-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$snapshot-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$snapshot-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$snapshot-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$snapshot-input.common-header.flags.ttl`'/>\n<parameter name='lcm-dmaap.status.code' value='400' />\n<parameter name='lcm-dmaap.status.message' value='SDNC Snapshot Mock returns success'/>\n",

+        "comments": "",

+        "x": 369,

+        "y": 369.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": []

+    },

+    {

+        "id": "625601b.39b33",

+        "type": "set",

+        "name": "set default status value",

+        "xml": "<set>\n<parameter name='status.code' value='200' />\n<parameter name='status.message' value='unexpected return from DG' />\n",

+        "comments": "",

+        "x": 423,

+        "y": 312,

+        "z": "a439ae77.f8998",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_unlock.json b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_unlock.json
new file mode 100644
index 0000000..98d391d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_unlock.json
@@ -0,0 +1,164 @@
+[

+    {

+        "id": "c36c1e82.e47c",

+        "type": "method",

+        "name": "unlock",

+        "xml": "<method rpc='unlock' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 530,

+        "y": 121,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "ea26f1ed.e963b"

+            ]

+        ]

+    },

+    {

+        "id": "4c2264b2.81a61c",

+        "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": 300.99993896484375,

+        "y": 122,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "c36c1e82.e47c"

+            ]

+        ]

+    },

+    {

+        "id": "a3360ab0.ce42c8",

+        "type": "returnSuccess",

+        "name": "return success",

+        "xml": "<return status='success'>\n<parameter name='status.code' value='400' />\n<parameter name='status.message' value='SDNC Unlock Mock returns success'/>",

+        "comments": "",

+        "x": 383,

+        "y": 510,

+        "z": "a439ae77.f8998",

+        "wires": []

+    },

+    {

+        "id": "7e67863d.7c42f8",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 98,

+        "y": 121,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "4c2264b2.81a61c"

+            ]

+        ]

+    },

+    {

+        "id": "ea26f1ed.e963b",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 133.91668701171875,

+        "y": 275.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "f1d5fb31.fa3878",

+                "625601b.39b33",

+                "786cf009.ea481",

+                "cd184491.d656e8",

+                "a3360ab0.ce42c8"

+            ]

+        ]

+    },

+    {

+        "id": "f1d5fb31.fa3878",

+        "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": 421,

+        "y": 260.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "cd184491.d656e8",

+        "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": 397,

+        "y": 437.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "91133c94.04e29"

+            ]

+        ]

+    },

+    {

+        "id": "91133c94.04e29",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 606,

+        "y": 435.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "f3b86bb6.9cf808"

+            ]

+        ]

+    },

+    {

+        "id": "f3b86bb6.9cf808",

+        "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": 766,

+        "y": 435.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "786cf009.ea481",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$unlock-input.common-header.request-id + '-' + $unlock-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='unlock'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$unlock-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$unlock-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$unlock-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$unlock-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$unlock-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$unlock-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$unlock-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$unlock-input.common-header.flags.ttl`'/>\n<parameter name='lcm-dmaap.status.code' value='400' />\n<parameter name='lcm-dmaap.status.message' value='SDNC Unlock Mock returns success'/>\n",

+        "comments": "",

+        "x": 369,

+        "y": 369.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": []

+    },

+    {

+        "id": "625601b.39b33",

+        "type": "set",

+        "name": "set default status value",

+        "xml": "<set>\n<parameter name='status.code' value='200' />\n<parameter name='status.message' value='unexpected return from DG' />\n",

+        "comments": "",

+        "x": 423,

+        "y": 312,

+        "z": "a439ae77.f8998",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_upgrade-backup.json b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_upgrade-backup.json
new file mode 100644
index 0000000..d45b3d1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_upgrade-backup.json
@@ -0,0 +1,164 @@
+[

+    {

+        "id": "c36c1e82.e47c",

+        "type": "method",

+        "name": "upgrade-backup",

+        "xml": "<method rpc='upgrade-backup' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 530,

+        "y": 121,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "ea26f1ed.e963b"

+            ]

+        ]

+    },

+    {

+        "id": "4c2264b2.81a61c",

+        "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": 300.99993896484375,

+        "y": 122,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "c36c1e82.e47c"

+            ]

+        ]

+    },

+    {

+        "id": "a3360ab0.ce42c8",

+        "type": "returnSuccess",

+        "name": "return success",

+        "xml": "<return status='success'>\n<parameter name='status.code' value='400' />\n<parameter name='status.message' value='SDNC Upgrade-backup Mock returns success'/>",

+        "comments": "",

+        "x": 383,

+        "y": 510,

+        "z": "a439ae77.f8998",

+        "wires": []

+    },

+    {

+        "id": "7e67863d.7c42f8",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 98,

+        "y": 121,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "4c2264b2.81a61c"

+            ]

+        ]

+    },

+    {

+        "id": "ea26f1ed.e963b",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 133.91668701171875,

+        "y": 275.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "f1d5fb31.fa3878",

+                "625601b.39b33",

+                "786cf009.ea481",

+                "cd184491.d656e8",

+                "a3360ab0.ce42c8"

+            ]

+        ]

+    },

+    {

+        "id": "f1d5fb31.fa3878",

+        "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": 421,

+        "y": 260.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "cd184491.d656e8",

+        "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": 397,

+        "y": 437.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "91133c94.04e29"

+            ]

+        ]

+    },

+    {

+        "id": "91133c94.04e29",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 606,

+        "y": 435.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            [

+                "f3b86bb6.9cf808"

+            ]

+        ]

+    },

+    {

+        "id": "f3b86bb6.9cf808",

+        "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": 766,

+        "y": 435.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "786cf009.ea481",

+        "type": "set",

+        "name": "set",

+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$upgrade-backup-input.common-header.request-id + '-' + $upgrade-backup-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='upgrade-backup'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$upgrade-backup-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$upgrade-backup-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$upgrade-backup-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$upgrade-backup-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-backup-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$upgrade-backup-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$upgrade-backup-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-backup-input.common-header.flags.ttl`'/>\n<parameter name='lcm-dmaap.status.code' value='400' />\n<parameter name='lcm-dmaap.status.message' value='SDNC Upgrade-backup Mock returns success'/>\n",

+        "comments": "",

+        "x": 369,

+        "y": 369.0833435058594,

+        "z": "a439ae77.f8998",

+        "wires": []

+    },

+    {

+        "id": "625601b.39b33",

+        "type": "set",

+        "name": "set default status value",

+        "xml": "<set>\n<parameter name='status.code' value='200' />\n<parameter name='status.message' value='unexpected return from DG' />\n",

+        "comments": "",

+        "x": 423,

+        "y": 312,

+        "z": "a439ae77.f8998",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_upgrade-post-check.json b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_upgrade-post-check.json
new file mode 100644
index 0000000..781faaa
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_upgrade-post-check.json
@@ -0,0 +1,1083 @@
+[

+    {

+        "id": "fe0acee3.b3d4f",

+        "type": "method",

+        "name": "upgrade-post-check",

+        "xml": "<method rpc='upgrade-post-check' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 523,

+        "y": 71,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "88d3f9c3.91e818"

+            ]

+        ]

+    },

+    {

+        "id": "dd69f330.0db38",

+        "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": 310.99993896484375,

+        "y": 72,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "fe0acee3.b3d4f"

+            ]

+        ]

+    },

+    {

+        "id": "ca77e1d2.5f235",

+        "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='`$upgrade-post-check-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='`$upgrade-post-check-input.common-header.request-id`'/>\n<parameter name='PlaybookName' value='`$playbookname`'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 378.00001525878906,

+        "y": 679,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "98532a13.9e8648",

+                "300b9189.6839ae",

+                "93689f4a.8157"

+            ]

+        ]

+    },

+    {

+        "id": "338f7649.ef4e9a",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 777.9999389648438,

+        "y": 787.0000305175781,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "13e6fdd5.284672",

+                "558456ec.861628",

+                "d84c0d6b.4e961"

+            ]

+        ]

+    },

+    {

+        "id": "13e6fdd5.284672",

+        "type": "other",

+        "name": "outcome 500",

+        "xml": "<outcome value='500'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 922.9999389648438,

+        "y": 785.0000381469727,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "d4f3b77a.b39508"

+            ]

+        ]

+    },

+    {

+        "id": "558456ec.861628",

+        "type": "other",

+        "name": "outcome 100",

+        "xml": "<outcome value='100'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 919.9999389648438,

+        "y": 842.0000305175781,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "a1c39fcf.a06c"

+            ]

+        ]

+    },

+    {

+        "id": "a1c39fcf.a06c",

+        "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": 1107.9999389648438,

+        "y": 841.0000305175781,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "f58c60bb.b391f",

+                "b18d4538.e8ef28"

+            ]

+        ]

+    },

+    {

+        "id": "300b9189.6839ae",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 636.9999389648438,

+        "y": 700.0000915527344,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "d4f3b77a.b39508"

+            ]

+        ]

+    },

+    {

+        "id": "98532a13.9e8648",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 638.9999389648438,

+        "y": 752.0000610351562,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "338f7649.ef4e9a"

+            ]

+        ]

+    },

+    {

+        "id": "f58c60bb.b391f",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1278.9998779296875,

+        "y": 820.0000610351562,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "44e1b1d0.b5bf9"

+            ]

+        ]

+    },

+    {

+        "id": "d84c0d6b.4e961",

+        "type": "other",

+        "name": "outcome 101",

+        "xml": "<outcome value='101'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 919.9999389648438,

+        "y": 743.0000686645508,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "d4f3b77a.b39508"

+            ]

+        ]

+    },

+    {

+        "id": "b18d4538.e8ef28",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1281.9998779296875,

+        "y": 871.0001220703125,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "44e1b1d0.b5bf9"

+            ]

+        ]

+    },

+    {

+        "id": "67392fb2.3fda3",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 126,

+        "y": 71,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "dd69f330.0db38"

+            ]

+        ]

+    },

+    {

+        "id": "88d3f9c3.91e818",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 123.91668701171875,

+        "y": 163.08334350585938,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "ca77e1d2.5f235",

+                "c7ec6050.45978",

+                "889f84ed.e111e8",

+                "40652fca.65d24",

+                "983b7f00.0aa95",

+                "43b098aa.2b8088",

+                "3c8d18f4.57a768",

+                "5c9efc94.d81d24"

+            ]

+        ]

+    },

+    {

+        "id": "c7ec6050.45978",

+        "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": 422.0000305175781,

+        "y": 196.08334350585938,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d9d2286.379c4d8",

+        "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": 1588.9998779296875,

+        "y": 649.0834045410156,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "642ae55d.535a7c"

+            ]

+        ]

+    },

+    {

+        "id": "642ae55d.535a7c",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1758.9998168945312,

+        "y": 648.0834045410156,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "7969554f.e56e0c"

+            ]

+        ]

+    },

+    {

+        "id": "d4f3b77a.b39508",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1391.9998168945312,

+        "y": 673.0834045410156,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "d9d2286.379c4d8",

+                "8a00ee98.85d8c",

+                "a967853.2e08a78"

+            ]

+        ]

+    },

+    {

+        "id": "61a865a3.81374c",

+        "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": 1600.4998779296875,

+        "y": 904.0833740234375,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "bf6e3414.ac0ab8"

+            ]

+        ]

+    },

+    {

+        "id": "bf6e3414.ac0ab8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1782.4998779296875,

+        "y": 904.0833740234375,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "a98ac8b6.1c8b18"

+            ]

+        ]

+    },

+    {

+        "id": "7969554f.e56e0c",

+        "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": 1878.9998779296875,

+        "y": 647.0833740234375,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8a00ee98.85d8c",

+        "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": 1570.91650390625,

+        "y": 700.0834045410156,

+        "z": "b4969602.e5a2a8",

+        "wires": []

+    },

+    {

+        "id": "a98ac8b6.1c8b18",

+        "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": 1912.9166259765625,

+        "y": 904.0833740234375,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a967853.2e08a78",

+        "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=\"`$upgrade-post-check-input.common-header.request-id + '-' + $upgrade-post-check-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='upgrade-post-check'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$upgrade-post-check-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$upgrade-post-check-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$upgrade-post-check-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$upgrade-post-check-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-post-check-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$upgrade-post-check-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$upgrade-post-check-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-post-check-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": 1575.9998779296875,

+        "y": 596.0833740234375,

+        "z": "b4969602.e5a2a8",

+        "wires": []

+    },

+    {

+        "id": "44e1b1d0.b5bf9",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1406.9998779296875,

+        "y": 845.0833740234375,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "61a865a3.81374c",

+                "af2360f3.a1b32",

+                "c058b1a3.cafa7",

+                "d59d4575.f7aa08",

+                "97b68625.59c538"

+            ]

+        ]

+    },

+    {

+        "id": "72836a7a.768624",

+        "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=\"`$upgrade-post-check-input.common-header.request-id + '-' + $upgrade-post-check-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='upgrade-post-check'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$upgrade-post-check-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$upgrade-post-check-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$upgrade-post-check-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$upgrade-post-check-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-post-check-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$upgrade-post-check-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$upgrade-post-check-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-post-check-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": 1938.1666259765625,

+        "y": 819.0833740234375,

+        "z": "b4969602.e5a2a8",

+        "wires": []

+    },

+    {

+        "id": "93689f4a.8157",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 645.9999389648438,

+        "y": 652.0000610351562,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "c92e96da.bead68"

+            ]

+        ]

+    },

+    {

+        "id": "3705b5ae.a55ada",

+        "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": 936.9999389648438,

+        "y": 611,

+        "z": "b4969602.e5a2a8",

+        "wires": []

+    },

+    {

+        "id": "c92e96da.bead68",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 782.9999389648438,

+        "y": 646.0000610351562,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "3705b5ae.a55ada",

+                "d4f3b77a.b39508"

+            ]

+        ]

+    },

+    {

+        "id": "889f84ed.e111e8",

+        "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<parameter name='outputPayloadField' value='.Output' />\n",

+        "comments": "",

+        "x": 415,

+        "y": 243,

+        "z": "b4969602.e5a2a8",

+        "wires": []

+    },

+    {

+        "id": "9e2047bf.84ca98",

+        "type": "get-resource",

+        "name": "get aai.generic-vnf ",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $upgrade-post-check-input.action-identifiers.vnf-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx='aai.generic-vnf'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 955,

+        "y": 419,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "db67679b.d5f7f8"

+            ]

+        ]

+    },

+    {

+        "id": "db67679b.d5f7f8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1113.3907470703125,

+        "y": 417.28399658203125,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "9f78147c.45b0d8"

+            ]

+        ]

+    },

+    {

+        "id": "3c8d18f4.57a768",

+        "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": 343.9998779296875,

+        "y": 607,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "983b7f00.0aa95",

+        "type": "switchNode",

+        "name": "switch pnf-flag",

+        "xml": "<switch test='`$payloadJson.pnf-flag`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 397,

+        "y": 344,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "6ab53366.6b679c",

+                "c2f80dd0.8d1"

+            ]

+        ]

+    },

+    {

+        "id": "40652fca.65d24",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='upgrade-post-check-input.payload' />\n\t<parameter name='outputPath' value='payloadJson' />\n\t<parameter name='isEscaped' value='true' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 429,

+        "y": 290,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6ab53366.6b679c",

+        "type": "outcome",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 594,

+        "y": 323,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "b2f335c.b319ac8"

+            ]

+        ]

+    },

+    {

+        "id": "c2f80dd0.8d1",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 593.9999389648438,

+        "y": 384,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "64084999.263e28"

+            ]

+        ]

+    },

+    {

+        "id": "64084999.263e28",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 741.9999389648438,

+        "y": 383,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "9e2047bf.84ca98",

+                "1c2838e7.02c327"

+            ]

+        ]

+    },

+    {

+        "id": "b2f335c.b319ac8",

+        "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.upgrade-post-check.playbookname`'/>\n<parameter name='outputPayloadField' value=\"`'.' + $payloadJson.ipaddress-v4-oam + '.Output'`\"/>\n",

+        "comments": "",

+        "x": 755,

+        "y": 321,

+        "z": "b4969602.e5a2a8",

+        "wires": []

+    },

+    {

+        "id": "1c2838e7.02c327",

+        "type": "execute",

+        "name": "set playbookname",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='outputPath' value='playbookname' />\n\t<parameter name='source' value=\"`'prop.lcm.' + $payloadJson.nf-naming-code + '.upgrade-post-check.playbookname'`\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 964,

+        "y": 363,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "43b098aa.2b8088",

+        "type": "switchNode",

+        "name": "switch playbookname",

+        "xml": "<switch test='`$playbookname`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 394,

+        "y": 475,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "f5a4d554.8310a8"

+            ]

+        ]

+    },

+    {

+        "id": "f5a4d554.8310a8",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 565,

+        "y": 476,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "e3207caa.85b44"

+            ]

+        ]

+    },

+    {

+        "id": "e3207caa.85b44",

+        "type": "set",

+        "name": "set playbookname",

+        "xml": "<set>\n<parameter name='playbookname' value='`$prop.lcm.upgrade-post-check.playbookname`'/>",

+        "comments": "",

+        "x": 755,

+        "y": 475,

+        "z": "b4969602.e5a2a8",

+        "wires": []

+    },

+    {

+        "id": "5c9efc94.d81d24",

+        "type": "switchNode",

+        "name": "switch nodelist",

+        "xml": "<switch test='`$nodelist`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 384,

+        "y": 534,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "77224991.c20a78",

+                "2deab8c5.642298"

+            ]

+        ]

+    },

+    {

+        "id": "77224991.c20a78",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 564,

+        "y": 527,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "3881d027.425ff"

+            ]

+        ]

+    },

+    {

+        "id": "3881d027.425ff",

+        "type": "set",

+        "name": "set nodelist",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>",

+        "comments": "",

+        "x": 721,

+        "y": 541,

+        "z": "b4969602.e5a2a8",

+        "wires": []

+    },

+    {

+        "id": "2deab8c5.642298",

+        "type": "outcome",

+        "name": "empty",

+        "xml": "<outcome value=\"['']\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 563,

+        "y": 571,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "3881d027.425ff"

+            ]

+        ]

+    },

+    {

+        "id": "153ed401.962ddc",

+        "type": "switchNode",

+        "name": "switch playbookname",

+        "xml": "<switch test='`$playbookname`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1439,

+        "y": 406,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "3cfaf009.20065"

+            ]

+        ]

+    },

+    {

+        "id": "3cfaf009.20065",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1617,

+        "y": 406,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "8e725f1f.6662f"

+            ]

+        ]

+    },

+    {

+        "id": "9e70216f.c9b2f",

+        "type": "set",

+        "name": "set nodelist",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`'[' + $quote + $aai.generic-vnf.ipv4-oam-address +  $quote + ']'`\"/>\n",

+        "comments": "",

+        "x": 1412,

+        "y": 459,

+        "z": "b4969602.e5a2a8",

+        "wires": []

+    },

+    {

+        "id": "9f78147c.45b0d8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1242,

+        "y": 416,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "153ed401.962ddc",

+                "9e70216f.c9b2f"

+            ]

+        ]

+    },

+    {

+        "id": "8e725f1f.6662f",

+        "type": "execute",

+        "name": "set playbookname",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='outputPath' value='playbookname' />\n\t<parameter name='source' value=\"`'prop.lcm.' + $aai.generic-vnf.nf-naming-code + '.upgrade-post-check.playbookname'`\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1789,

+        "y": 404,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "af2360f3.a1b32",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='org.onap.appc.adapter.ansible.results' />\n\t<parameter name='outputPath' value='resultsJson' />\n\t<parameter name='isEscaped' value='false' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1616,

+        "y": 750,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c058b1a3.cafa7",

+        "type": "execute",

+        "name": "execute getAttributeValue",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='source' value=\"`'resultsJson' + $outputPayloadField`\" />\n\t<parameter name='outputPath' value='outputPayload' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1622,

+        "y": 793,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d59d4575.f7aa08",

+        "type": "switchNode",

+        "name": "switch outputPayload",

+        "xml": "<switch test='`$outputPayload`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1606,

+        "y": 840,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "676d5ce5.e9d864",

+                "8ecd1678.ebdff8"

+            ]

+        ]

+    },

+    {

+        "id": "676d5ce5.e9d864",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1783,

+        "y": 819,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "72836a7a.768624"

+            ]

+        ]

+    },

+    {

+        "id": "8ecd1678.ebdff8",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1782,

+        "y": 859,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "5f5e736e.9d3b8c"

+            ]

+        ]

+    },

+    {

+        "id": "5f5e736e.9d3b8c",

+        "type": "set",

+        "name": "set DmaapReq with payload",

+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$upgrade-post-check-input.common-header.request-id + '-' + $upgrade-post-check-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='upgrade-post-check'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$upgrade-post-check-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$upgrade-post-check-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$upgrade-post-check-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$upgrade-post-check-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-post-check-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$upgrade-post-check-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$upgrade-post-check-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-post-check-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<parameter name='lcm-dmaap.payload' value='`$outputPayload`'/>",

+        "comments": "",

+        "x": 1980,

+        "y": 859,

+        "z": "b4969602.e5a2a8",

+        "wires": []

+    },

+    {

+        "id": "bd7deada.205038",

+        "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": 2322,

+        "y": 937,

+        "z": "b4969602.e5a2a8",

+        "wires": []

+    },

+    {

+        "id": "530e9d63.07dd34",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1788.000244140625,

+        "y": 958.9999389648438,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "aba50f21.a535d"

+            ]

+        ]

+    },

+    {

+        "id": "d6c0e471.9108d8",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1787.000244140625,

+        "y": 1034.9999389648438,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "801dd50e.8622c8"

+            ]

+        ]

+    },

+    {

+        "id": "97b68625.59c538",

+        "type": "switchNode",

+        "name": "switch outputPayload",

+        "xml": "<switch test='`$outputPayload`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1605.000244140625,

+        "y": 994.9999389648438,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "530e9d63.07dd34",

+                "d6c0e471.9108d8"

+            ]

+        ]

+    },

+    {

+        "id": "acbbf9db.eeba28",

+        "type": "returnSuccess",

+        "name": "return success with payload",

+        "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`'/>\n<parameter name='payload' value='`$outputPayload`'/>",

+        "comments": "",

+        "x": 2363.000244140625,

+        "y": 1018.9999389648438,

+        "z": "b4969602.e5a2a8",

+        "wires": []

+    },

+    {

+        "id": "aba50f21.a535d",

+        "type": "switchNode",

+        "name": "switch result code",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1958.000244140625,

+        "y": 958.9999389648438,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "3ac4241b.62144c",

+                "c67e4b5c.d70a28"

+            ]

+        ]

+    },

+    {

+        "id": "801dd50e.8622c8",

+        "type": "switchNode",

+        "name": "switch result code",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1958.000244140625,

+        "y": 1034.9999389648438,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "8dcd3ae3.608a58",

+                "a94e8dc6.52647"

+            ]

+        ]

+    },

+    {

+        "id": "657ecc9e.2687c4",

+        "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": 2316.000244140625,

+        "y": 974.9999389648438,

+        "z": "b4969602.e5a2a8",

+        "wires": []

+    },

+    {

+        "id": "52f49f6f.dcf4",

+        "type": "returnFailure",

+        "name": "return failure with payload",

+        "xml": "<return status='failure'>\n<parameter name='status.code' value='401' />\n<parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />\n<parameter name='payload' value='`$outputPayload`'/>",

+        "comments": "",

+        "x": 2359.000244140625,

+        "y": 1056.9999389648438,

+        "z": "b4969602.e5a2a8",

+        "wires": []

+    },

+    {

+        "id": "3ac4241b.62144c",

+        "type": "other",

+        "name": "outcome 400",

+        "xml": "<outcome value='400'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2146.000244140625,

+        "y": 936.9999389648438,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "bd7deada.205038"

+            ]

+        ]

+    },

+    {

+        "id": "c67e4b5c.d70a28",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2127.000244140625,

+        "y": 974.9999389648438,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "657ecc9e.2687c4"

+            ]

+        ]

+    },

+    {

+        "id": "8dcd3ae3.608a58",

+        "type": "other",

+        "name": "outcome 400",

+        "xml": "<outcome value='400'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2147.000244140625,

+        "y": 1018.9999389648438,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "acbbf9db.eeba28"

+            ]

+        ]

+    },

+    {

+        "id": "a94e8dc6.52647",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2129.000244140625,

+        "y": 1056.9999389648438,

+        "z": "b4969602.e5a2a8",

+        "wires": [

+            [

+                "52f49f6f.dcf4"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_upgrade-pre-check.json b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_upgrade-pre-check.json
new file mode 100644
index 0000000..0239c76
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_upgrade-pre-check.json
@@ -0,0 +1,1083 @@
+[

+    {

+        "id": "e17c1584.f756d8",

+        "type": "method",

+        "name": "upgrade-pre-check",

+        "xml": "<method rpc='upgrade-pre-check' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 552,

+        "y": 67,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "4a691c8b.6b9db4"

+            ]

+        ]

+    },

+    {

+        "id": "1f7a861d.c2112a",

+        "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": 339.99993896484375,

+        "y": 68,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "e17c1584.f756d8"

+            ]

+        ]

+    },

+    {

+        "id": "bb18ce54.65a6d",

+        "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='`$upgrade-pre-check-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='`$upgrade-pre-check-input.common-header.request-id`'/>\n<parameter name='PlaybookName' value='`$playbookname`'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 407.00001525878906,

+        "y": 675,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "c6f98872.c067e8",

+                "5614f2d4.83759c",

+                "1beab9a5.7e2366"

+            ]

+        ]

+    },

+    {

+        "id": "8e97cc56.5d143",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 806.9999389648438,

+        "y": 783.0000305175781,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "d5d391c0.e33eb",

+                "96569d9a.8f849",

+                "8eb6da31.c976d8"

+            ]

+        ]

+    },

+    {

+        "id": "d5d391c0.e33eb",

+        "type": "other",

+        "name": "outcome 500",

+        "xml": "<outcome value='500'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 951.9999389648438,

+        "y": 781.0000381469727,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "261676ae.6c18ea"

+            ]

+        ]

+    },

+    {

+        "id": "96569d9a.8f849",

+        "type": "other",

+        "name": "outcome 100",

+        "xml": "<outcome value='100'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 948.9999389648438,

+        "y": 838.0000305175781,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "a9aeb5d4.ad8218"

+            ]

+        ]

+    },

+    {

+        "id": "a9aeb5d4.ad8218",

+        "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": 1136.9999389648438,

+        "y": 837.0000305175781,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "50e30f80.cb97b",

+                "f9b1e44f.cf0bf8"

+            ]

+        ]

+    },

+    {

+        "id": "5614f2d4.83759c",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 665.9999389648438,

+        "y": 696.0000915527344,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "261676ae.6c18ea"

+            ]

+        ]

+    },

+    {

+        "id": "c6f98872.c067e8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 667.9999389648438,

+        "y": 748.0000610351562,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "8e97cc56.5d143"

+            ]

+        ]

+    },

+    {

+        "id": "50e30f80.cb97b",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1305.9998779296875,

+        "y": 819.0000610351562,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "7ac364bd.12e01c"

+            ]

+        ]

+    },

+    {

+        "id": "8eb6da31.c976d8",

+        "type": "other",

+        "name": "outcome 101",

+        "xml": "<outcome value='101'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 948.9999389648438,

+        "y": 739.0000686645508,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "261676ae.6c18ea"

+            ]

+        ]

+    },

+    {

+        "id": "f9b1e44f.cf0bf8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1309.9998779296875,

+        "y": 863.0001220703125,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "7ac364bd.12e01c"

+            ]

+        ]

+    },

+    {

+        "id": "a40759ed.63a388",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 155,

+        "y": 67,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "1f7a861d.c2112a"

+            ]

+        ]

+    },

+    {

+        "id": "4a691c8b.6b9db4",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 152.91668701171875,

+        "y": 159.08334350585938,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "bb18ce54.65a6d",

+                "4f789742.ddd168",

+                "2f15d339.87cf0c",

+                "556d2c3e.217c14",

+                "905f1137.7562f",

+                "5cc58e7c.083a5",

+                "db896c60.3d19a",

+                "ae5d9d02.d1fe4"

+            ]

+        ]

+    },

+    {

+        "id": "4f789742.ddd168",

+        "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": 451.0000305175781,

+        "y": 192.08334350585938,

+        "z": "df893cfa.16f38",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9f29e934.d196d8",

+        "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": 1617.9998779296875,

+        "y": 645.0834045410156,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "eff6b07f.5f555"

+            ]

+        ]

+    },

+    {

+        "id": "eff6b07f.5f555",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1787.9998168945312,

+        "y": 644.0834045410156,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "39c1e046.0c9a2"

+            ]

+        ]

+    },

+    {

+        "id": "261676ae.6c18ea",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1420.9998168945312,

+        "y": 669.0834045410156,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "9f29e934.d196d8",

+                "20f5321f.fe2dee",

+                "b16d5209.3031f"

+            ]

+        ]

+    },

+    {

+        "id": "dd99789.6491a88",

+        "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": 1653.4998779296875,

+        "y": 911.0833740234375,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "16bb547b.d2861c"

+            ]

+        ]

+    },

+    {

+        "id": "16bb547b.d2861c",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1838.4998779296875,

+        "y": 911.0833740234375,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "95e8f51a.226ea8"

+            ]

+        ]

+    },

+    {

+        "id": "39c1e046.0c9a2",

+        "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": 1907.9998779296875,

+        "y": 643.0833740234375,

+        "z": "df893cfa.16f38",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "20f5321f.fe2dee",

+        "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": 1599.91650390625,

+        "y": 696.0834045410156,

+        "z": "df893cfa.16f38",

+        "wires": []

+    },

+    {

+        "id": "95e8f51a.226ea8",

+        "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": 1970.9166259765625,

+        "y": 911.0833740234375,

+        "z": "df893cfa.16f38",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b16d5209.3031f",

+        "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=\"`$upgrade-pre-check-input.common-header.request-id + '-' + $upgrade-pre-check-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='upgrade-pre-check'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$upgrade-pre-check-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$upgrade-pre-check-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$upgrade-pre-check-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$upgrade-pre-check-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-pre-check-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$upgrade-pre-check-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$upgrade-pre-check-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-pre-check-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": 1604.9998779296875,

+        "y": 592.0833740234375,

+        "z": "df893cfa.16f38",

+        "wires": []

+    },

+    {

+        "id": "7ac364bd.12e01c",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1441.9998779296875,

+        "y": 838.0833740234375,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "dd99789.6491a88",

+                "66ca1a2.98ef5e4",

+                "6f78d9df.0d3518",

+                "3c0a54ab.00262c",

+                "9977ea00.521808"

+            ]

+        ]

+    },

+    {

+        "id": "b364bef1.e2765",

+        "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=\"`$upgrade-pre-check-input.common-header.request-id + '-' + $upgrade-pre-check-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='upgrade-pre-check'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$upgrade-pre-check-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$upgrade-pre-check-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$upgrade-pre-check-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$upgrade-pre-check-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-pre-check-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$upgrade-pre-check-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$upgrade-pre-check-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-pre-check-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": 1995.1666259765625,

+        "y": 816.0833740234375,

+        "z": "df893cfa.16f38",

+        "wires": []

+    },

+    {

+        "id": "1beab9a5.7e2366",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 674.9999389648438,

+        "y": 648.0000610351562,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "dd0b1351.6bec5"

+            ]

+        ]

+    },

+    {

+        "id": "6e45eb8e.292b44",

+        "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": 965.9999389648438,

+        "y": 607,

+        "z": "df893cfa.16f38",

+        "wires": []

+    },

+    {

+        "id": "dd0b1351.6bec5",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 811.9999389648438,

+        "y": 642.0000610351562,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "6e45eb8e.292b44",

+                "261676ae.6c18ea"

+            ]

+        ]

+    },

+    {

+        "id": "2f15d339.87cf0c",

+        "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<parameter name='outputPayloadField' value='.Output' />\n",

+        "comments": "",

+        "x": 444,

+        "y": 239,

+        "z": "df893cfa.16f38",

+        "wires": []

+    },

+    {

+        "id": "3bd1d194.63001e",

+        "type": "get-resource",

+        "name": "get aai.generic-vnf ",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $upgrade-pre-check-input.action-identifiers.vnf-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx='aai.generic-vnf'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 984,

+        "y": 415,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "d0549989.50cdf8"

+            ]

+        ]

+    },

+    {

+        "id": "d0549989.50cdf8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1142.3907470703125,

+        "y": 413.28399658203125,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "50890a76.58d434"

+            ]

+        ]

+    },

+    {

+        "id": "db896c60.3d19a",

+        "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": 372.9998779296875,

+        "y": 603,

+        "z": "df893cfa.16f38",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "905f1137.7562f",

+        "type": "switchNode",

+        "name": "switch pnf-flag",

+        "xml": "<switch test='`$payloadJson.pnf-flag`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 426,

+        "y": 340,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "d4a98e23.62f9b",

+                "a403044b.ebc9f8"

+            ]

+        ]

+    },

+    {

+        "id": "556d2c3e.217c14",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='upgrade-pre-check-input.payload' />\n\t<parameter name='outputPath' value='payloadJson' />\n\t<parameter name='isEscaped' value='true' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 458,

+        "y": 286,

+        "z": "df893cfa.16f38",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d4a98e23.62f9b",

+        "type": "outcome",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 623,

+        "y": 319,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "582ec79b.faa468"

+            ]

+        ]

+    },

+    {

+        "id": "a403044b.ebc9f8",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 622.9999389648438,

+        "y": 380,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "3184e083.2b204"

+            ]

+        ]

+    },

+    {

+        "id": "3184e083.2b204",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 770.9999389648438,

+        "y": 379,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "3bd1d194.63001e",

+                "395906a2.acd1ea"

+            ]

+        ]

+    },

+    {

+        "id": "582ec79b.faa468",

+        "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.upgrade-pre-check.playbookname`'/>\n<parameter name='outputPayloadField' value=\"`'.' + $payloadJson.ipaddress-v4-oam + '.Output'`\"/>\n",

+        "comments": "",

+        "x": 784,

+        "y": 317,

+        "z": "df893cfa.16f38",

+        "wires": []

+    },

+    {

+        "id": "395906a2.acd1ea",

+        "type": "execute",

+        "name": "set playbookname",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='outputPath' value='playbookname' />\n\t<parameter name='source' value=\"`'prop.lcm.' + $payloadJson.nf-naming-code + '.upgrade-pre-check.playbookname'`\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 993,

+        "y": 359,

+        "z": "df893cfa.16f38",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5cc58e7c.083a5",

+        "type": "switchNode",

+        "name": "switch playbookname",

+        "xml": "<switch test='`$playbookname`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 423,

+        "y": 471,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "b9c121b9.01765"

+            ]

+        ]

+    },

+    {

+        "id": "b9c121b9.01765",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 594,

+        "y": 472,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "96dc86e8.19da88"

+            ]

+        ]

+    },

+    {

+        "id": "96dc86e8.19da88",

+        "type": "set",

+        "name": "set playbookname",

+        "xml": "<set>\n<parameter name='playbookname' value='`$prop.lcm.upgrade-pre-check.playbookname`'/>",

+        "comments": "",

+        "x": 784,

+        "y": 471,

+        "z": "df893cfa.16f38",

+        "wires": []

+    },

+    {

+        "id": "ae5d9d02.d1fe4",

+        "type": "switchNode",

+        "name": "switch nodelist",

+        "xml": "<switch test='`$nodelist`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 413,

+        "y": 530,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "d47821da.1dd48",

+                "69b2cec2.dd018"

+            ]

+        ]

+    },

+    {

+        "id": "d47821da.1dd48",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 593,

+        "y": 523,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "dce9b14d.bb77b"

+            ]

+        ]

+    },

+    {

+        "id": "dce9b14d.bb77b",

+        "type": "set",

+        "name": "set nodelist",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>",

+        "comments": "",

+        "x": 750,

+        "y": 537,

+        "z": "df893cfa.16f38",

+        "wires": []

+    },

+    {

+        "id": "69b2cec2.dd018",

+        "type": "outcome",

+        "name": "empty",

+        "xml": "<outcome value=\"['']\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 592,

+        "y": 567,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "dce9b14d.bb77b"

+            ]

+        ]

+    },

+    {

+        "id": "8d045871.31f638",

+        "type": "switchNode",

+        "name": "switch playbookname",

+        "xml": "<switch test='`$playbookname`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1468,

+        "y": 402,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "ef1e7a17.621f38"

+            ]

+        ]

+    },

+    {

+        "id": "ef1e7a17.621f38",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1646,

+        "y": 402,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "862a6ea8.3ba16"

+            ]

+        ]

+    },

+    {

+        "id": "8543ebcf.2ead48",

+        "type": "set",

+        "name": "set nodelist",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`'[' + $quote + $aai.generic-vnf.ipv4-oam-address +  $quote + ']'`\"/>\n",

+        "comments": "",

+        "x": 1441,

+        "y": 455,

+        "z": "df893cfa.16f38",

+        "wires": []

+    },

+    {

+        "id": "50890a76.58d434",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1271,

+        "y": 412,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "8d045871.31f638",

+                "8543ebcf.2ead48"

+            ]

+        ]

+    },

+    {

+        "id": "862a6ea8.3ba16",

+        "type": "execute",

+        "name": "set playbookname",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='outputPath' value='playbookname' />\n\t<parameter name='source' value=\"`'prop.lcm.' + $aai.generic-vnf.nf-naming-code + '.upgrade-pre-check.playbookname'`\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1818,

+        "y": 400,

+        "z": "df893cfa.16f38",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "66ca1a2.98ef5e4",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='org.onap.appc.adapter.ansible.results' />\n\t<parameter name='outputPath' value='resultsJson' />\n\t<parameter name='isEscaped' value='false' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1668,

+        "y": 744,

+        "z": "df893cfa.16f38",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6f78d9df.0d3518",

+        "type": "execute",

+        "name": "execute getAttributeValue",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='source' value=\"`'resultsJson' + $outputPayloadField`\" />\n\t<parameter name='outputPath' value='outputPayload' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1674,

+        "y": 789,

+        "z": "df893cfa.16f38",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3c0a54ab.00262c",

+        "type": "switchNode",

+        "name": "switch outputPayload",

+        "xml": "<switch test='`$outputPayload`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1660,

+        "y": 836,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "65b8d06e.2f308",

+                "db2edf05.5dbf2"

+            ]

+        ]

+    },

+    {

+        "id": "65b8d06e.2f308",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1838,

+        "y": 816,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "b364bef1.e2765"

+            ]

+        ]

+    },

+    {

+        "id": "db2edf05.5dbf2",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1839,

+        "y": 860,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "3b020d0b.edb822"

+            ]

+        ]

+    },

+    {

+        "id": "3b020d0b.edb822",

+        "type": "set",

+        "name": "set DmaapReq with payload",

+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$upgrade-pre-check-input.common-header.request-id + '-' + $upgrade-pre-check-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='upgrade-pre-check'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$upgrade-pre-check-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$upgrade-pre-check-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$upgrade-pre-check-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$upgrade-pre-check-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-pre-check-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$upgrade-pre-check-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$upgrade-pre-check-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-pre-check-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<parameter name='lcm-dmaap.payload' value='`$outputPayload`'/>",

+        "comments": "",

+        "x": 2036,

+        "y": 860,

+        "z": "df893cfa.16f38",

+        "wires": []

+    },

+    {

+        "id": "e583cc0b.79586",

+        "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": 2371,

+        "y": 946.9999389648438,

+        "z": "df893cfa.16f38",

+        "wires": []

+    },

+    {

+        "id": "b678b572.4bc6d8",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1837.000244140625,

+        "y": 968.9998779296875,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "bebb9bde.cadbc8"

+            ]

+        ]

+    },

+    {

+        "id": "e71f0e75.f5e6e",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1836.000244140625,

+        "y": 1044.9998779296875,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "a34ae1ab.50555"

+            ]

+        ]

+    },

+    {

+        "id": "9977ea00.521808",

+        "type": "switchNode",

+        "name": "switch outputPayload",

+        "xml": "<switch test='`$outputPayload`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1654.000244140625,

+        "y": 1004.9998779296875,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "b678b572.4bc6d8",

+                "e71f0e75.f5e6e"

+            ]

+        ]

+    },

+    {

+        "id": "c888915f.7e81c",

+        "type": "returnSuccess",

+        "name": "return success with payload",

+        "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`'/>\n<parameter name='payload' value='`$outputPayload`'/>",

+        "comments": "",

+        "x": 2412.000244140625,

+        "y": 1028.9998779296875,

+        "z": "df893cfa.16f38",

+        "wires": []

+    },

+    {

+        "id": "bebb9bde.cadbc8",

+        "type": "switchNode",

+        "name": "switch result code",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2007.000244140625,

+        "y": 968.9998779296875,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "1b395046.b5f6",

+                "d4989dec.88a2e"

+            ]

+        ]

+    },

+    {

+        "id": "a34ae1ab.50555",

+        "type": "switchNode",

+        "name": "switch result code",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2007.000244140625,

+        "y": 1044.9998779296875,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "8e9f2082.ee767",

+                "3b44f0c3.4b7c2"

+            ]

+        ]

+    },

+    {

+        "id": "5e9a3c.5f7e95c4",

+        "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": 2365.000244140625,

+        "y": 984.9998779296875,

+        "z": "df893cfa.16f38",

+        "wires": []

+    },

+    {

+        "id": "398f4135.fd470e",

+        "type": "returnFailure",

+        "name": "return failure with payload",

+        "xml": "<return status='failure'>\n<parameter name='status.code' value='401' />\n<parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />\n<parameter name='payload' value='`$outputPayload`'/>",

+        "comments": "",

+        "x": 2408.000244140625,

+        "y": 1066.9998779296875,

+        "z": "df893cfa.16f38",

+        "wires": []

+    },

+    {

+        "id": "1b395046.b5f6",

+        "type": "other",

+        "name": "outcome 400",

+        "xml": "<outcome value='400'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2195.000244140625,

+        "y": 946.9998779296875,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "e583cc0b.79586"

+            ]

+        ]

+    },

+    {

+        "id": "d4989dec.88a2e",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2176.000244140625,

+        "y": 984.9998779296875,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "5e9a3c.5f7e95c4"

+            ]

+        ]

+    },

+    {

+        "id": "8e9f2082.ee767",

+        "type": "other",

+        "name": "outcome 400",

+        "xml": "<outcome value='400'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2196.000244140625,

+        "y": 1028.9998779296875,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "c888915f.7e81c"

+            ]

+        ]

+    },

+    {

+        "id": "3b44f0c3.4b7c2",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2178.000244140625,

+        "y": 1066.9998779296875,

+        "z": "df893cfa.16f38",

+        "wires": [

+            [

+                "398f4135.fd470e"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_upgrade-software.json b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_upgrade-software.json
new file mode 100644
index 0000000..98bb939
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/LCM_upgrade-software.json
@@ -0,0 +1,1083 @@
+[

+    {

+        "id": "700a0160.004aa",

+        "type": "method",

+        "name": "upgrade-software",

+        "xml": "<method rpc='upgrade-software' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 567,

+        "y": 95,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "bd9b1e7b.c0a1e"

+            ]

+        ]

+    },

+    {

+        "id": "fa41fb4b.580858",

+        "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": 354.99993896484375,

+        "y": 96,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "700a0160.004aa"

+            ]

+        ]

+    },

+    {

+        "id": "e9118cc6.cb56",

+        "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='`$upgrade-software-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='`$upgrade-software-input.common-header.request-id`'/>\n<parameter name='PlaybookName' value='`$playbookname`'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 422.00001525878906,

+        "y": 703,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "a4805e06.99a58",

+                "c3cf6822.251028",

+                "8fa9e7e9.017688"

+            ]

+        ]

+    },

+    {

+        "id": "53951e82.372c1",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 821.9999389648438,

+        "y": 811.0000305175781,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "46287bfa.134154",

+                "b76b1945.f582c8",

+                "c42f2303.695eb"

+            ]

+        ]

+    },

+    {

+        "id": "46287bfa.134154",

+        "type": "other",

+        "name": "outcome 500",

+        "xml": "<outcome value='500'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 966.9999389648438,

+        "y": 809.0000381469727,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "cd8ebd14.23c24"

+            ]

+        ]

+    },

+    {

+        "id": "b76b1945.f582c8",

+        "type": "other",

+        "name": "outcome 100",

+        "xml": "<outcome value='100'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 963.9999389648438,

+        "y": 866.0000305175781,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "6450772a.c289b8"

+            ]

+        ]

+    },

+    {

+        "id": "6450772a.c289b8",

+        "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": 1151.9999389648438,

+        "y": 865.0000305175781,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "e139990d.0bffa8",

+                "d862bbfb.0fc3d8"

+            ]

+        ]

+    },

+    {

+        "id": "c3cf6822.251028",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 680.9999389648438,

+        "y": 724.0000915527344,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "cd8ebd14.23c24"

+            ]

+        ]

+    },

+    {

+        "id": "a4805e06.99a58",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 682.9999389648438,

+        "y": 776.0000610351562,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "53951e82.372c1"

+            ]

+        ]

+    },

+    {

+        "id": "e139990d.0bffa8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1320.9998779296875,

+        "y": 841.0000610351562,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "c8609f9e.cb4cc"

+            ]

+        ]

+    },

+    {

+        "id": "c42f2303.695eb",

+        "type": "other",

+        "name": "outcome 101",

+        "xml": "<outcome value='101'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 963.9999389648438,

+        "y": 767.0000686645508,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "cd8ebd14.23c24"

+            ]

+        ]

+    },

+    {

+        "id": "d862bbfb.0fc3d8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1324.9998779296875,

+        "y": 895.0001220703125,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "c8609f9e.cb4cc"

+            ]

+        ]

+    },

+    {

+        "id": "a498eeb0.e871c",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 170,

+        "y": 95,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "fa41fb4b.580858"

+            ]

+        ]

+    },

+    {

+        "id": "bd9b1e7b.c0a1e",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 167.91668701171875,

+        "y": 187.08334350585938,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "e9118cc6.cb56",

+                "8f2cdd2c.cf15b",

+                "881e51a9.bba9",

+                "3bae173d.769688",

+                "f24727d0.cfe3a8",

+                "a40512f5.69e4d",

+                "57b0407c.30e16",

+                "2f8a882.7fbf078"

+            ]

+        ]

+    },

+    {

+        "id": "8f2cdd2c.cf15b",

+        "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": 466.0000305175781,

+        "y": 220.08334350585938,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f33bb583.25a398",

+        "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": 1632.9998779296875,

+        "y": 673.0834045410156,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "1ec548c6.857767"

+            ]

+        ]

+    },

+    {

+        "id": "1ec548c6.857767",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1802.9998168945312,

+        "y": 672.0834045410156,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "f99d1384.2dae"

+            ]

+        ]

+    },

+    {

+        "id": "cd8ebd14.23c24",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1435.9998168945312,

+        "y": 697.0834045410156,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "f33bb583.25a398",

+                "bfff1f61.da463",

+                "b136bf71.fb6b9"

+            ]

+        ]

+    },

+    {

+        "id": "f99d1384.2dae",

+        "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": 1922.9998779296875,

+        "y": 671.0833740234375,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bfff1f61.da463",

+        "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": 1614.91650390625,

+        "y": 724.0834045410156,

+        "z": "ec3deb45.e00818",

+        "wires": []

+    },

+    {

+        "id": "b136bf71.fb6b9",

+        "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=\"`$upgrade-software-input.common-header.request-id + '-' + $upgrade-software-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='upgrade-software'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$upgrade-software-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$upgrade-software-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$upgrade-software-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$upgrade-software-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-software-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$upgrade-software-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$upgrade-software-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-software-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": 1619.9998779296875,

+        "y": 620.0833740234375,

+        "z": "ec3deb45.e00818",

+        "wires": []

+    },

+    {

+        "id": "c8609f9e.cb4cc",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1453.9998779296875,

+        "y": 864.0833740234375,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "77de5f8d.0aa37",

+                "87eb757f.5a9998",

+                "d4c78c4a.10f57",

+                "9253558b.1de3f8",

+                "abc5eb21.233c78"

+            ]

+        ]

+    },

+    {

+        "id": "8fa9e7e9.017688",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 689.9999389648438,

+        "y": 676.0000610351562,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "8d1a07a6.9f8f38"

+            ]

+        ]

+    },

+    {

+        "id": "d1a59bdb.49c988",

+        "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": 980.9999389648438,

+        "y": 635,

+        "z": "ec3deb45.e00818",

+        "wires": []

+    },

+    {

+        "id": "8d1a07a6.9f8f38",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 826.9999389648438,

+        "y": 670.0000610351562,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "d1a59bdb.49c988",

+                "cd8ebd14.23c24"

+            ]

+        ]

+    },

+    {

+        "id": "881e51a9.bba9",

+        "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<parameter name='outputPayloadField' value='.Output' />\n",

+        "comments": "",

+        "x": 459,

+        "y": 267,

+        "z": "ec3deb45.e00818",

+        "wires": []

+    },

+    {

+        "id": "27e24246.a44b8e",

+        "type": "get-resource",

+        "name": "get aai.generic-vnf ",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $upgrade-software-input.action-identifiers.vnf-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx='aai.generic-vnf'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 999,

+        "y": 443,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "4d967fc5.86e13"

+            ]

+        ]

+    },

+    {

+        "id": "4d967fc5.86e13",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1157.3907470703125,

+        "y": 441.28399658203125,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "363cf7ac.eea978"

+            ]

+        ]

+    },

+    {

+        "id": "57b0407c.30e16",

+        "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": 387.9998779296875,

+        "y": 631,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f24727d0.cfe3a8",

+        "type": "switchNode",

+        "name": "switch pnf-flag",

+        "xml": "<switch test='`$payloadJson.pnf-flag`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 441,

+        "y": 368,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "ebcaa444.5c15f8",

+                "200181e1.aab39e"

+            ]

+        ]

+    },

+    {

+        "id": "3bae173d.769688",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='upgrade-software-input.payload' />\n\t<parameter name='outputPath' value='payloadJson' />\n\t<parameter name='isEscaped' value='true' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 473,

+        "y": 314,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ebcaa444.5c15f8",

+        "type": "outcome",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 638,

+        "y": 347,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "4f4ae7b6.577da8"

+            ]

+        ]

+    },

+    {

+        "id": "200181e1.aab39e",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 637.9999389648438,

+        "y": 408,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "b59848fc.f07918"

+            ]

+        ]

+    },

+    {

+        "id": "b59848fc.f07918",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 785.9999389648438,

+        "y": 407,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "27e24246.a44b8e",

+                "91c96ed6.a5b05"

+            ]

+        ]

+    },

+    {

+        "id": "4f4ae7b6.577da8",

+        "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.upgrade-software.playbookname`'/>\n<parameter name='outputPayloadField' value=\"`'.' + $payloadJson.ipaddress-v4-oam + '.Output'`\"/>\n",

+        "comments": "",

+        "x": 799,

+        "y": 345,

+        "z": "ec3deb45.e00818",

+        "wires": []

+    },

+    {

+        "id": "91c96ed6.a5b05",

+        "type": "execute",

+        "name": "set playbookname",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='outputPath' value='playbookname' />\n\t<parameter name='source' value=\"`'prop.lcm.' + $payloadJson.nf-naming-code + '.upgrade-software.playbookname'`\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1008,

+        "y": 387,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a40512f5.69e4d",

+        "type": "switchNode",

+        "name": "switch playbookname",

+        "xml": "<switch test='`$playbookname`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 438,

+        "y": 499,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "e6c437a6.29de58"

+            ]

+        ]

+    },

+    {

+        "id": "e6c437a6.29de58",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 609,

+        "y": 500,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "a4fde5cc.d4c598"

+            ]

+        ]

+    },

+    {

+        "id": "a4fde5cc.d4c598",

+        "type": "set",

+        "name": "set playbookname",

+        "xml": "<set>\n<parameter name='playbookname' value='`$prop.lcm.upgrade-software.playbookname`'/>",

+        "comments": "",

+        "x": 799,

+        "y": 499,

+        "z": "ec3deb45.e00818",

+        "wires": []

+    },

+    {

+        "id": "2f8a882.7fbf078",

+        "type": "switchNode",

+        "name": "switch nodelist",

+        "xml": "<switch test='`$nodelist`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 428,

+        "y": 558,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "fc8a62b5.226f9",

+                "174740d3.bb580f"

+            ]

+        ]

+    },

+    {

+        "id": "fc8a62b5.226f9",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 608,

+        "y": 551,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "82a452fa.2b2b4"

+            ]

+        ]

+    },

+    {

+        "id": "82a452fa.2b2b4",

+        "type": "set",

+        "name": "set nodelist",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>",

+        "comments": "",

+        "x": 765,

+        "y": 565,

+        "z": "ec3deb45.e00818",

+        "wires": []

+    },

+    {

+        "id": "174740d3.bb580f",

+        "type": "outcome",

+        "name": "empty",

+        "xml": "<outcome value=\"['']\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 607,

+        "y": 595,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "82a452fa.2b2b4"

+            ]

+        ]

+    },

+    {

+        "id": "2651af68.3f9dc",

+        "type": "switchNode",

+        "name": "switch playbookname",

+        "xml": "<switch test='`$playbookname`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1483,

+        "y": 430,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "bf08f71c.7cf758"

+            ]

+        ]

+    },

+    {

+        "id": "bf08f71c.7cf758",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1661,

+        "y": 430,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "61379210.f96dcc"

+            ]

+        ]

+    },

+    {

+        "id": "5f26038d.9f08dc",

+        "type": "set",

+        "name": "set nodelist",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`'[' + $quote + $aai.generic-vnf.ipv4-oam-address +  $quote + ']'`\"/>\n",

+        "comments": "",

+        "x": 1456,

+        "y": 483,

+        "z": "ec3deb45.e00818",

+        "wires": []

+    },

+    {

+        "id": "363cf7ac.eea978",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1286,

+        "y": 440,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "2651af68.3f9dc",

+                "5f26038d.9f08dc"

+            ]

+        ]

+    },

+    {

+        "id": "61379210.f96dcc",

+        "type": "execute",

+        "name": "set playbookname",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='outputPath' value='playbookname' />\n\t<parameter name='source' value=\"`'prop.lcm.' + $aai.generic-vnf.nf-naming-code + '.upgrade-software.playbookname'`\" />\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1833,

+        "y": 428,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9253558b.1de3f8",

+        "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": 1648,

+        "y": 939,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "a452deae.c86e6"

+            ]

+        ]

+    },

+    {

+        "id": "a452deae.c86e6",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1830,

+        "y": 939,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "fedb3391.b66c"

+            ]

+        ]

+    },

+    {

+        "id": "fedb3391.b66c",

+        "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": 1960.416748046875,

+        "y": 939,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4f44742c.4c245c",

+        "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=\"`$upgrade-software-input.common-header.request-id + '-' + $upgrade-software-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='upgrade-software'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$upgrade-software-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$upgrade-software-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$upgrade-software-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$upgrade-software-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-software-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$upgrade-software-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$upgrade-software-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-software-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": 1985.666748046875,

+        "y": 854,

+        "z": "ec3deb45.e00818",

+        "wires": []

+    },

+    {

+        "id": "77de5f8d.0aa37",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='org.onap.appc.adapter.ansible.results' />\n\t<parameter name='outputPath' value='resultsJson' />\n\t<parameter name='isEscaped' value='false' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1663.5001220703125,

+        "y": 784.9166259765625,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "87eb757f.5a9998",

+        "type": "execute",

+        "name": "execute getAttributeValue",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>\n\t<parameter name='source' value=\"`'resultsJson' + $outputPayloadField`\" />\n\t<parameter name='outputPath' value='outputPayload' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1669.5001220703125,

+        "y": 827.9166259765625,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d4c78c4a.10f57",

+        "type": "switchNode",

+        "name": "switch outputPayload",

+        "xml": "<switch test='`$outputPayload`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1653.5001220703125,

+        "y": 874.9166259765625,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "52af5803.b461c8",

+                "f8c7b0fd.65877"

+            ]

+        ]

+    },

+    {

+        "id": "52af5803.b461c8",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1830.5001220703125,

+        "y": 853.9166259765625,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "4f44742c.4c245c"

+            ]

+        ]

+    },

+    {

+        "id": "f8c7b0fd.65877",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1829.5001220703125,

+        "y": 893.9166259765625,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "596dd9e6.b15a48"

+            ]

+        ]

+    },

+    {

+        "id": "596dd9e6.b15a48",

+        "type": "set",

+        "name": "set DmaapReq with payload",

+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$upgrade-software-input.common-header.request-id + '-' + $upgrade-software-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='upgrade-software'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$upgrade-software-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$upgrade-software-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$upgrade-software-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$upgrade-software-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-software-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$upgrade-software-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$upgrade-software-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-software-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<parameter name='lcm-dmaap.payload' value='`$outputPayload`'/>",

+        "comments": "",

+        "x": 2027.5001220703125,

+        "y": 893.9166259765625,

+        "z": "ec3deb45.e00818",

+        "wires": []

+    },

+    {

+        "id": "1310b766.620cb9",

+        "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": 2369.5001220703125,

+        "y": 971.9166259765625,

+        "z": "ec3deb45.e00818",

+        "wires": []

+    },

+    {

+        "id": "94ccd9bd.ce5728",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1835.5003662109375,

+        "y": 993.9165649414062,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "acf117a7.e47ff8"

+            ]

+        ]

+    },

+    {

+        "id": "af6eae51.b597d",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1834.5003662109375,

+        "y": 1069.9165649414062,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "526dfc55.6eeaf4"

+            ]

+        ]

+    },

+    {

+        "id": "abc5eb21.233c78",

+        "type": "switchNode",

+        "name": "switch outputPayload",

+        "xml": "<switch test='`$outputPayload`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1652.5003662109375,

+        "y": 1029.9165649414062,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "94ccd9bd.ce5728",

+                "af6eae51.b597d"

+            ]

+        ]

+    },

+    {

+        "id": "d4fc7ba0.d97cd8",

+        "type": "returnSuccess",

+        "name": "return success with payload",

+        "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`'/>\n<parameter name='payload' value='`$outputPayload`'/>",

+        "comments": "",

+        "x": 2410.5003662109375,

+        "y": 1053.9165649414062,

+        "z": "ec3deb45.e00818",

+        "wires": []

+    },

+    {

+        "id": "acf117a7.e47ff8",

+        "type": "switchNode",

+        "name": "switch result code",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2005.5003662109375,

+        "y": 993.9165649414062,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "7b6a7dcd.0bf034",

+                "964b16ae.6cb568"

+            ]

+        ]

+    },

+    {

+        "id": "526dfc55.6eeaf4",

+        "type": "switchNode",

+        "name": "switch result code",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2005.5003662109375,

+        "y": 1069.9165649414062,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "116f67f9.8b84e8",

+                "b7261460.4d2728"

+            ]

+        ]

+    },

+    {

+        "id": "270915b4.03f91a",

+        "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": 2363.5003662109375,

+        "y": 1009.9165649414062,

+        "z": "ec3deb45.e00818",

+        "wires": []

+    },

+    {

+        "id": "ba208b9e.ce90f8",

+        "type": "returnFailure",

+        "name": "return failure with payload",

+        "xml": "<return status='failure'>\n<parameter name='status.code' value='401' />\n<parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />\n<parameter name='payload' value='`$outputPayload`'/>",

+        "comments": "",

+        "x": 2406.5003662109375,

+        "y": 1091.9165649414062,

+        "z": "ec3deb45.e00818",

+        "wires": []

+    },

+    {

+        "id": "7b6a7dcd.0bf034",

+        "type": "other",

+        "name": "outcome 400",

+        "xml": "<outcome value='400'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2193.5003662109375,

+        "y": 971.9165649414062,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "1310b766.620cb9"

+            ]

+        ]

+    },

+    {

+        "id": "964b16ae.6cb568",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2174.5003662109375,

+        "y": 1009.9165649414062,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "270915b4.03f91a"

+            ]

+        ]

+    },

+    {

+        "id": "116f67f9.8b84e8",

+        "type": "other",

+        "name": "outcome 400",

+        "xml": "<outcome value='400'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2194.5003662109375,

+        "y": 1053.9165649414062,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "d4fc7ba0.d97cd8"

+            ]

+        ]

+    },

+    {

+        "id": "b7261460.4d2728",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2176.5003662109375,

+        "y": 1091.9165649414062,

+        "z": "ec3deb45.e00818",

+        "wires": [

+            [

+                "ba208b9e.ce90f8"

+            ]

+        ]

+    }

+]

diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/lcm-restconf-configscaleout.json b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/lcm-restconf-configscaleout.json
new file mode 100755
index 0000000..63285f9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/json/lcm-restconf-configscaleout.json
@@ -0,0 +1,5 @@
+{
+   "vdns-instance": [
+        ${payloadJson.configuration-parameters}
+   ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/resources/graph.versions b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/resources/graph.versions
new file mode 100644
index 0000000..40fe3a9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/resources/graph.versions
@@ -0,0 +1,13 @@
+LCM upgrade-software ${project.version} sync
+LCM upgrade-post-check ${project.version} sync
+LCM upgrade-pre-check ${project.version} sync
+LCM upgrade-backup ${project.version} sync
+LCM quiesce-traffic ${project.version} sync
+LCM resume-traffic ${project.version} sync
+LCM distribute-traffic ${project.version} sync
+LCM lock ${project.version} sync
+LCM unlock ${project.version} sync
+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/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_config-scale-out.xml b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_config-scale-out.xml
new file mode 100755
index 0000000..ce836e2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_config-scale-out.xml
@@ -0,0 +1,120 @@
+<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='config-scale-out' mode='sync'>

+        <block>

+            <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 LCM DG' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>

+                <parameter name='source' value='config-scale-out-input.payload' />

+                <parameter name='outputPath' value='payloadJson' />

+                <parameter name='isEscaped' value='true' />

+                <outcome value='success'>

+                    <record plugin='org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder'>

+                        <parameter name='logger' value='message-log'/>

+                        <parameter name='field1' value='`$payloadJson.request-parameters.host-ip-address`'/>

+                        <parameter name='field2' value='`$payloadJson.configuration-parameters.ip-addr`'/>

+                    </record>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.lcm.restconf.configscaleout.templatefile`" />

+                <parameter name='restapiUrl' value="`'http://' + $payloadJson.request-parameters.host-ip-address + ':' + $prop.lcm.restconf.port + $prop.lcm.restconf.configscaleout.urlpath  + $payloadJson.configuration-parameters.ip-addr`" />

+                <parameter name='restapiUser' value='`$prop.lcm.restconf.configscaleout.user`' />

+                <parameter name='restapiPassword' value='`$prop.lcm.restconf.configscaleout.password`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='PUT' />

+                <parameter name='contentType' value='application/json' />

+                <parameter name="responsePrefix" value="restconf" />

+                <outcome value='failure'>

+                    <block>

+                        <set>

+                            <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                            <parameter name='lcm-dmaap.correlation-id' value="`$config-scale-out-input.common-header.request-id + '-' + $config-scale-out-input.common-header.sub-request-id`"/>

+                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                            <parameter name='lcm-dmaap.rpc-name' value='config-scale-out'/>

+                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                            <parameter name='lcm-dmaap.timestamp' value='`$config-scale-out-input.common-header.timestamp`'/>

+                            <parameter name='lcm-dmaap.api-ver' value='`$config-scale-out-input.common-header.api-ver`'/>

+                            <parameter name='lcm-dmaap.originator-id' value='`$config-scale-out-input.common-header.originator-id`'/>

+                            <parameter name='lcm-dmaap.request-id' value='`$config-scale-out-input.common-header.request-id`'/>

+                            <parameter name='lcm-dmaap.sub-request-id' value='`$config-scaleout-input.common-header.sub-request-id`'/>

+                            <parameter name='lcm-dmaap.flags.mode' value='`$config-scale-out-input.common-header.flags.mode`'/>

+                            <parameter name='lcm-dmaap.flags.force' value='`$config-scale-out-input.common-header.flags.force`'/>

+                            <parameter name='lcm-dmaap.flags.ttl' value='`$config-scale-out-input.common-header.flags.ttl`'/>

+                            <parameter name='lcm-dmaap.status.code' value='401' />

+                            <parameter name='lcm-dmaap.status.message' value="`'DG-Failure '  + $restconf.response-message + ' RestConf ResponseCode=' + $restconf.response-code`"/>

+                        </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='dmaap' />

+                            <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= '`$lcm-dmaap.status.code`'/>

+                            <parameter name='status.message' value='`$lcm-dmaap.status.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="`$config-scale-out-input.common-header.request-id + '-' + $upgrade-software-input.common-header.sub-request-id`"/>

+                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                            <parameter name='lcm-dmaap.rpc-name' value='config-scale-out'/>

+                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                            <parameter name='lcm-dmaap.timestamp' value='`$config-scale-out-input.common-header.timestamp`'/>

+                            <parameter name='lcm-dmaap.api-ver' value='`$config-scaleout-input.common-header.api-ver`'/>

+                            <parameter name='lcm-dmaap.originator-id' value='`$config-scale-out-input.common-header.originator-id`'/>

+                            <parameter name='lcm-dmaap.request-id' value='`$config-scale-out-input.common-header.request-id`'/>

+                            <parameter name='lcm-dmaap.sub-request-id' value='`$config-scale-out-input.common-header.sub-request-id`'/>

+                            <parameter name='lcm-dmaap.flags.mode' value='`$config-scale-out-input.common-header.flags.mode`'/>

+                            <parameter name='lcm-dmaap.flags.force' value='`$config-scale-out-input.common-header.flags.force`'/>

+                            <parameter name='lcm-dmaap.flags.ttl' value='`$config-scale-out-input.common-header.flags.ttl`'/>

+                            <parameter name='lcm-dmaap.status.code' value='`$restconf.response-code`' />

+                            <parameter name='lcm-dmaap.status.message' value='`$restconf.response-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='dmaap' />

+                            <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='`$restconf.response-code`' />

+                            <parameter name='status.message' value='`$restconf.response-message`' />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_distribute-traffic.xml b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_distribute-traffic.xml
new file mode 100755
index 0000000..9b550d3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_distribute-traffic.xml
@@ -0,0 +1,361 @@
+<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='distribute-traffic' mode='sync'>

+        <block>

+            <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='distribute-traffic-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.distribute-traffic.playbookname`'/>

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                            <parameter name='outputPath' value='playbookname' />

+                            <parameter name='source' value="`'prop.lcm.' + $payloadJson.nf-naming-code + '.distribute-traffic.playbookname'`" />

+                        </execute>

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="generic-vnf" 

+		key="generic-vnf.vnf-id = $distribute-traffic-input.action-identifiers.vnf-id" 

+		local-only="false" 

+		pfx='aai.generic-vnf'>

+                            <outcome value='success'>

+                                <block>

+                                    <switch test='`$playbookname`'>

+                                        <outcome value=''>

+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                                                <parameter name='outputPath' value='playbookname' />

+                                                <parameter name='source' value="`'prop.lcm.' + $aai.generic-vnf.nf-naming-code + '.distribute-traffic.playbookname'`" />

+                                            </execute>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='nodelist' value="`'[' + $quote + $aai.generic-vnf.ipv4-oam-address +  $quote + ']'`"/>

+                                    </set>

+                                </block>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$playbookname`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='nodelist' value="`$prop.ansible.nodelist`"/>

+                        <parameter name='playbookname' value='`$prop.lcm.distribute-traffic.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='`$distribute-traffic-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='`$distribute-traffic-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="`$distribute-traffic-input.common-header.request-id + '-' + $distribute-traffic-input.common-header.sub-request-id`"/>

+                                <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                <parameter name='lcm-dmaap.rpc-name' value='distribute-traffic'/>

+                                <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                <parameter name='lcm-dmaap.timestamp' value='`$distribute-traffic-input.common-header.timestamp`'/>

+                                <parameter name='lcm-dmaap.api-ver' value='`$distribute-traffic-input.common-header.api-ver`'/>

+                                <parameter name='lcm-dmaap.originator-id' value='`$distribute-traffic-input.common-header.originator-id`'/>

+                                <parameter name='lcm-dmaap.request-id' value='`$distribute-traffic-input.common-header.request-id`'/>

+                                <parameter name='lcm-dmaap.sub-request-id' value='`$distribute-traffic-input.common-header.sub-request-id`'/>

+                                <parameter name='lcm-dmaap.flags.mode' value='`$distribute-traffic-input.common-header.flags.mode`'/>

+                                <parameter name='lcm-dmaap.flags.force' value='`$distribute-traffic-input.common-header.flags.force`'/>

+                                <parameter name='lcm-dmaap.flags.ttl' value='`$distribute-traffic-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="`$distribute-traffic-input.common-header.request-id + '-' + $distribute-traffic-input.common-header.sub-request-id`"/>

+                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                            <parameter name='lcm-dmaap.rpc-name' value='distribute-traffic'/>

+                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                            <parameter name='lcm-dmaap.timestamp' value='`$distribute-traffic-input.common-header.timestamp`'/>

+                            <parameter name='lcm-dmaap.api-ver' value='`$distribute-traffic-input.common-header.api-ver`'/>

+                            <parameter name='lcm-dmaap.originator-id' value='`$distribute-traffic-input.common-header.originator-id`'/>

+                            <parameter name='lcm-dmaap.request-id' value='`$distribute-traffic-input.common-header.request-id`'/>

+                            <parameter name='lcm-dmaap.sub-request-id' value='`$distribute-traffic-input.common-header.sub-request-id`'/>

+                            <parameter name='lcm-dmaap.flags.mode' value='`$distribute-traffic-input.common-header.flags.mode`'/>

+                            <parameter name='lcm-dmaap.flags.force' value='`$distribute-traffic-input.common-header.flags.force`'/>

+                            <parameter name='lcm-dmaap.flags.ttl' value='`$distribute-traffic-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="`$distribute-traffic-input.common-header.request-id + '-' + $distribute-traffic-input.common-header.sub-request-id`"/>

+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                    <parameter name='lcm-dmaap.rpc-name' value='distribute-traffic'/>

+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                    <parameter name='lcm-dmaap.timestamp' value='`$distribute-traffic-input.common-header.timestamp`'/>

+                                    <parameter name='lcm-dmaap.api-ver' value='`$distribute-traffic-input.common-header.api-ver`'/>

+                                    <parameter name='lcm-dmaap.originator-id' value='`$distribute-traffic-input.common-header.originator-id`'/>

+                                    <parameter name='lcm-dmaap.request-id' value='`$distribute-traffic-input.common-header.request-id`'/>

+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$distribute-traffic-input.common-header.sub-request-id`'/>

+                                    <parameter name='lcm-dmaap.flags.mode' value='`$distribute-traffic-input.common-header.flags.mode`'/>

+                                    <parameter name='lcm-dmaap.flags.force' value='`$distribute-traffic-input.common-header.flags.force`'/>

+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$distribute-traffic-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="`$distribute-traffic-input.common-header.request-id + '-' + $distribute-traffic-input.common-header.sub-request-id`"/>

+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                    <parameter name='lcm-dmaap.rpc-name' value='distribute-traffic'/>

+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                    <parameter name='lcm-dmaap.timestamp' value='`$distribute-traffic-input.common-header.timestamp`'/>

+                                    <parameter name='lcm-dmaap.api-ver' value='`$distribute-traffic-input.common-header.api-ver`'/>

+                                    <parameter name='lcm-dmaap.originator-id' value='`$distribute-traffic-input.common-header.originator-id`'/>

+                                    <parameter name='lcm-dmaap.request-id' value='`$distribute-traffic-input.common-header.request-id`'/>

+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$distribute-traffic-input.common-header.sub-request-id`'/>

+                                    <parameter name='lcm-dmaap.flags.mode' value='`$distribute-traffic-input.common-header.flags.mode`'/>

+                                    <parameter name='lcm-dmaap.flags.force' value='`$distribute-traffic-input.common-header.flags.force`'/>

+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$distribute-traffic-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="`$distribute-traffic-input.common-header.request-id + '-' + $distribute-traffic-input.common-header.sub-request-id`"/>

+                                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                            <parameter name='lcm-dmaap.rpc-name' value='distribute-traffic'/>

+                                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                            <parameter name='lcm-dmaap.timestamp' value='`$distribute-traffic-input.common-header.timestamp`'/>

+                                            <parameter name='lcm-dmaap.api-ver' value='`$distribute-traffic-input.common-header.api-ver`'/>

+                                            <parameter name='lcm-dmaap.originator-id' value='`$distribute-traffic-input.common-header.originator-id`'/>

+                                            <parameter name='lcm-dmaap.request-id' value='`$distribute-traffic-input.common-header.request-id`'/>

+                                            <parameter name='lcm-dmaap.sub-request-id' value='`$distribute-traffic-input.common-header.sub-request-id`'/>

+                                            <parameter name='lcm-dmaap.flags.mode' value='`$distribute-traffic-input.common-header.flags.mode`'/>

+                                            <parameter name='lcm-dmaap.flags.force' value='`$distribute-traffic-input.common-header.flags.force`'/>

+                                            <parameter name='lcm-dmaap.flags.ttl' value='`$distribute-traffic-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="`$distribute-traffic-input.common-header.request-id + '-' + $distribute-traffic-input.common-header.sub-request-id`"/>

+                                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                            <parameter name='lcm-dmaap.rpc-name' value='distribute-traffic'/>

+                                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                            <parameter name='lcm-dmaap.timestamp' value='`$distribute-traffic-input.common-header.timestamp`'/>

+                                            <parameter name='lcm-dmaap.api-ver' value='`$distribute-traffic-input.common-header.api-ver`'/>

+                                            <parameter name='lcm-dmaap.originator-id' value='`$distribute-traffic-input.common-header.originator-id`'/>

+                                            <parameter name='lcm-dmaap.request-id' value='`$distribute-traffic-input.common-header.request-id`'/>

+                                            <parameter name='lcm-dmaap.sub-request-id' value='`$distribute-traffic-input.common-header.sub-request-id`'/>

+                                            <parameter name='lcm-dmaap.flags.mode' value='`$distribute-traffic-input.common-header.flags.mode`'/>

+                                            <parameter name='lcm-dmaap.flags.force' value='`$distribute-traffic-input.common-header.flags.force`'/>

+                                            <parameter name='lcm-dmaap.flags.ttl' value='`$distribute-traffic-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/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_health-check.xml b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_health-check.xml
new file mode 100755
index 0000000..d706aac
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_health-check.xml
@@ -0,0 +1,117 @@
+<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='health-check' mode='sync'>

+        <block>

+            <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 LCM DG' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>

+                <parameter name='source' value='health-check-input.payload' />

+                <parameter name='outputPath' value='payloadJson' />

+                <parameter name='isEscaped' value='true' />

+                <outcome value='success'>

+                    <record plugin='org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder'>

+                        <parameter name='logger' value='message-log'/>

+                        <parameter name='field1' value='`$payloadJson.request-parameters.host-ip-address`'/>

+                    </record>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name='restapiUrl' value="`'http://' + $payloadJson.request-parameters.host-ip-address + ':' + $prop.lcm.restconf.port + $prop.lcm.restconf.configscaleout.geturlpath`" />

+                <parameter name='restapiUser' value='`$prop.lcm.restconf.user`' />

+                <parameter name='restapiPassword' value='`$prop.lcm.restconf.password`' />

+                <parameter name='format' value='json' />

+                <parameter name='httpMethod' value='GET' />

+                <parameter name="responsePrefix" value="restconf" />

+                <outcome value='failure'>

+                    <block>

+                        <set>

+                            <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                            <parameter name='lcm-dmaap.correlation-id' value="`$health-check-input.common-header.request-id + '-' + $health-check-input.common-header.sub-request-id`"/>

+                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                            <parameter name='lcm-dmaap.rpc-name' value='health-check'/>

+                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                            <parameter name='lcm-dmaap.timestamp' value='`$health-check-input.common-header.timestamp`'/>

+                            <parameter name='lcm-dmaap.api-ver' value='`$health-check-input.common-header.api-ver`'/>

+                            <parameter name='lcm-dmaap.originator-id' value='`$health-check-input.common-header.originator-id`'/>

+                            <parameter name='lcm-dmaap.request-id' value='`$health-check-input.common-header.request-id`'/>

+                            <parameter name='lcm-dmaap.sub-request-id' value='`$health-check-input.common-header.sub-request-id`'/>

+                            <parameter name='lcm-dmaap.flags.mode' value='`$health-check-input.common-header.flags.mode`'/>

+                            <parameter name='lcm-dmaap.flags.force' value='`$health-check-input.common-header.flags.force`'/>

+                            <parameter name='lcm-dmaap.flags.ttl' value='`$health-check-input.common-header.flags.ttl`'/>

+                            <parameter name='lcm-dmaap.status.code' value='401' />

+                            <parameter name='lcm-dmaap.status.message' value="`'DG-Failure '  + $restconf.response-message + ' RestConf ResponseCode=' + $restconf.response-code`"/>

+                        </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='dmaap' />

+                            <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= '`$lcm-dmaap.status.code`'/>

+                            <parameter name='status.message' value='`$lcm-dmaap.status.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="`$health-check-input.common-header.request-id + '-' + $health-check-input.common-header.sub-request-id`"/>

+                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                            <parameter name='lcm-dmaap.rpc-name' value='health-check'/>

+                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                            <parameter name='lcm-dmaap.timestamp' value='`$health-check-input.common-header.timestamp`'/>

+                            <parameter name='lcm-dmaap.api-ver' value='`$health-check-input.common-header.api-ver`'/>

+                            <parameter name='lcm-dmaap.originator-id' value='`$health-check-input.common-header.originator-id`'/>

+                            <parameter name='lcm-dmaap.request-id' value='`$health-check-input.common-header.request-id`'/>

+                            <parameter name='lcm-dmaap.sub-request-id' value='`$health-check-input.common-header.sub-request-id`'/>

+                            <parameter name='lcm-dmaap.flags.mode' value='`$health-check-input.common-header.flags.mode`'/>

+                            <parameter name='lcm-dmaap.flags.force' value='`$health-check-input.common-header.flags.force`'/>

+                            <parameter name='lcm-dmaap.flags.ttl' value='`$health-check-input.common-header.flags.ttl`'/>

+                            <parameter name='lcm-dmaap.status.code' value='`$restconf.response-code`' />

+                            <parameter name='lcm-dmaap.status.message' value='`$restconf.response-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='dmaap' />

+                            <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='`$restconf.response-code`' />

+                            <parameter name='status.message' value='`$restconf.response-message`' />

+                        </return>

+                    </block>

+                </outcome>

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_lock.xml b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_lock.xml
new file mode 100644
index 0000000..5cbe621
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_lock.xml
@@ -0,0 +1,53 @@
+<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='lock' mode='sync'>

+        <block>

+            <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' />

+            </set>

+            <set>

+                <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                <parameter name='lcm-dmaap.correlation-id' value="`$lock-input.common-header.request-id + '-' + $lock-input.common-header.sub-request-id`"/>

+                <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                <parameter name='lcm-dmaap.rpc-name' value='lock'/>

+                <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                <parameter name='lcm-dmaap.timestamp' value='`$lock-input.common-header.timestamp`'/>

+                <parameter name='lcm-dmaap.api-ver' value='`$lock-input.common-header.api-ver`'/>

+                <parameter name='lcm-dmaap.originator-id' value='`$lock-input.common-header.originator-id`'/>

+                <parameter name='lcm-dmaap.request-id' value='`$lock-input.common-header.originator-id`'/>

+                <parameter name='lcm-dmaap.sub-request-id' value='`$lock-input.common-header.sub-request-id`'/>

+                <parameter name='lcm-dmaap.flags.mode' value='`$lock-input.common-header.flags.mode`'/>

+                <parameter name='lcm-dmaap.flags.force' value='`$lock-input.common-header.flags.force`'/>

+                <parameter name='lcm-dmaap.flags.ttl' value='`$lock-input.common-header.flags.ttl`'/>

+                <parameter name='lcm-dmaap.status.code' value='400' />

+                <parameter name='lcm-dmaap.status.message' value='SDNC Lock Mock returns success'/>

+            </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='400' />

+                <parameter name='status.message' value='SDNC Lock Mock returns success'/>

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_quiesce-traffic.xml b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_quiesce-traffic.xml
new file mode 100644
index 0000000..36eec1d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_quiesce-traffic.xml
@@ -0,0 +1,361 @@
+<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='quiesce-traffic' mode='sync'>

+        <block>

+            <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='quiesce-traffic-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.quiesce-traffic.playbookname`'/>

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                            <parameter name='outputPath' value='playbookname' />

+                            <parameter name='source' value="`'prop.lcm.' + $payloadJson.nf-naming-code + '.quiesce-traffic.playbookname'`" />

+                        </execute>

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="generic-vnf" 

+		key="generic-vnf.vnf-id = $quiesce-traffic-input.action-identifiers.vnf-id" 

+		local-only="false" 

+		pfx='aai.generic-vnf'>

+                            <outcome value='success'>

+                                <block>

+                                    <switch test='`$playbookname`'>

+                                        <outcome value=''>

+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                                                <parameter name='outputPath' value='playbookname' />

+                                                <parameter name='source' value="`'prop.lcm.' + $aai.generic-vnf.nf-naming-code + '.quiesce-traffic.playbookname'`" />

+                                            </execute>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='nodelist' value="`'[' + $quote + $aai.generic-vnf.ipv4-oam-address +  $quote + ']'`"/>

+                                    </set>

+                                </block>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$playbookname`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='nodelist' value="`$prop.ansible.nodelist`"/>

+                        <parameter name='playbookname' value='`$prop.lcm.quiesce-traffic.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='`$quiesce-traffic-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='`$quiesce-traffic-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="`$quiesce-traffic-input.common-header.request-id + '-' + $quiesce-traffic-input.common-header.sub-request-id`"/>

+                                <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                <parameter name='lcm-dmaap.rpc-name' value='quiesce-traffic'/>

+                                <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                <parameter name='lcm-dmaap.timestamp' value='`$quiesce-traffic-input.common-header.timestamp`'/>

+                                <parameter name='lcm-dmaap.api-ver' value='`$quiesce-traffic-input.common-header.api-ver`'/>

+                                <parameter name='lcm-dmaap.originator-id' value='`$quiesce-traffic-input.common-header.originator-id`'/>

+                                <parameter name='lcm-dmaap.request-id' value='`$quiesce-traffic-input.common-header.request-id`'/>

+                                <parameter name='lcm-dmaap.sub-request-id' value='`$quiesce-traffic-input.common-header.sub-request-id`'/>

+                                <parameter name='lcm-dmaap.flags.mode' value='`$quiesce-traffic-input.common-header.flags.mode`'/>

+                                <parameter name='lcm-dmaap.flags.force' value='`$quiesce-traffic-input.common-header.flags.force`'/>

+                                <parameter name='lcm-dmaap.flags.ttl' value='`$quiesce-traffic-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="`$quiesce-traffic-input.common-header.request-id + '-' + $quiesce-traffic-input.common-header.sub-request-id`"/>

+                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                            <parameter name='lcm-dmaap.rpc-name' value='quiesce-traffic'/>

+                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                            <parameter name='lcm-dmaap.timestamp' value='`$quiesce-traffic-input.common-header.timestamp`'/>

+                            <parameter name='lcm-dmaap.api-ver' value='`$quiesce-traffic-input.common-header.api-ver`'/>

+                            <parameter name='lcm-dmaap.originator-id' value='`$quiesce-traffic-input.common-header.originator-id`'/>

+                            <parameter name='lcm-dmaap.request-id' value='`$quiesce-traffic-input.common-header.request-id`'/>

+                            <parameter name='lcm-dmaap.sub-request-id' value='`$quiesce-traffic-input.common-header.sub-request-id`'/>

+                            <parameter name='lcm-dmaap.flags.mode' value='`$quiesce-traffic-input.common-header.flags.mode`'/>

+                            <parameter name='lcm-dmaap.flags.force' value='`$quiesce-traffic-input.common-header.flags.force`'/>

+                            <parameter name='lcm-dmaap.flags.ttl' value='`$quiesce-traffic-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="`$quiesce-traffic-input.common-header.request-id + '-' + $quiesce-traffic-input.common-header.sub-request-id`"/>

+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                    <parameter name='lcm-dmaap.rpc-name' value='quiesce-traffic'/>

+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                    <parameter name='lcm-dmaap.timestamp' value='`$quiesce-traffic-input.common-header.timestamp`'/>

+                                    <parameter name='lcm-dmaap.api-ver' value='`$quiesce-traffic-input.common-header.api-ver`'/>

+                                    <parameter name='lcm-dmaap.originator-id' value='`$quiesce-traffic-input.common-header.originator-id`'/>

+                                    <parameter name='lcm-dmaap.request-id' value='`$quiesce-traffic-input.common-header.request-id`'/>

+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$quiesce-traffic-input.common-header.sub-request-id`'/>

+                                    <parameter name='lcm-dmaap.flags.mode' value='`$quiesce-traffic-input.common-header.flags.mode`'/>

+                                    <parameter name='lcm-dmaap.flags.force' value='`$quiesce-traffic-input.common-header.flags.force`'/>

+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$quiesce-traffic-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="`$quiesce-traffic-input.common-header.request-id + '-' + $quiesce-traffic-input.common-header.sub-request-id`"/>

+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                    <parameter name='lcm-dmaap.rpc-name' value='quiesce-traffic'/>

+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                    <parameter name='lcm-dmaap.timestamp' value='`$quiesce-traffic-input.common-header.timestamp`'/>

+                                    <parameter name='lcm-dmaap.api-ver' value='`$quiesce-traffic-input.common-header.api-ver`'/>

+                                    <parameter name='lcm-dmaap.originator-id' value='`$quiesce-traffic-input.common-header.originator-id`'/>

+                                    <parameter name='lcm-dmaap.request-id' value='`$quiesce-traffic-input.common-header.request-id`'/>

+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$quiesce-traffic-input.common-header.sub-request-id`'/>

+                                    <parameter name='lcm-dmaap.flags.mode' value='`$quiesce-traffic-input.common-header.flags.mode`'/>

+                                    <parameter name='lcm-dmaap.flags.force' value='`$quiesce-traffic-input.common-header.flags.force`'/>

+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$quiesce-traffic-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="`$quiesce-traffic-input.common-header.request-id + '-' + $quiesce-traffic-input.common-header.sub-request-id`"/>

+                                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                            <parameter name='lcm-dmaap.rpc-name' value='quiesce-traffic'/>

+                                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                            <parameter name='lcm-dmaap.timestamp' value='`$quiesce-traffic-input.common-header.timestamp`'/>

+                                            <parameter name='lcm-dmaap.api-ver' value='`$quiesce-traffic-input.common-header.api-ver`'/>

+                                            <parameter name='lcm-dmaap.originator-id' value='`$quiesce-traffic-input.common-header.originator-id`'/>

+                                            <parameter name='lcm-dmaap.request-id' value='`$quiesce-traffic-input.common-header.request-id`'/>

+                                            <parameter name='lcm-dmaap.sub-request-id' value='`$quiesce-traffic-input.common-header.sub-request-id`'/>

+                                            <parameter name='lcm-dmaap.flags.mode' value='`$quiesce-traffic-input.common-header.flags.mode`'/>

+                                            <parameter name='lcm-dmaap.flags.force' value='`$quiesce-traffic-input.common-header.flags.force`'/>

+                                            <parameter name='lcm-dmaap.flags.ttl' value='`$quiesce-traffic-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="`$quiesce-traffic-input.common-header.request-id + '-' + $quiesce-traffic-input.common-header.sub-request-id`"/>

+                                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                            <parameter name='lcm-dmaap.rpc-name' value='quiesce-traffic'/>

+                                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                            <parameter name='lcm-dmaap.timestamp' value='`$quiesce-traffic-input.common-header.timestamp`'/>

+                                            <parameter name='lcm-dmaap.api-ver' value='`$quiesce-traffic-input.common-header.api-ver`'/>

+                                            <parameter name='lcm-dmaap.originator-id' value='`$quiesce-traffic-input.common-header.originator-id`'/>

+                                            <parameter name='lcm-dmaap.request-id' value='`$quiesce-traffic-input.common-header.request-id`'/>

+                                            <parameter name='lcm-dmaap.sub-request-id' value='`$quiesce-traffic-input.common-header.sub-request-id`'/>

+                                            <parameter name='lcm-dmaap.flags.mode' value='`$quiesce-traffic-input.common-header.flags.mode`'/>

+                                            <parameter name='lcm-dmaap.flags.force' value='`$quiesce-traffic-input.common-header.flags.force`'/>

+                                            <parameter name='lcm-dmaap.flags.ttl' value='`$quiesce-traffic-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/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_resume-traffic.xml b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_resume-traffic.xml
new file mode 100644
index 0000000..9d2795b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_resume-traffic.xml
@@ -0,0 +1,361 @@
+<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='resume-traffic' mode='sync'>

+        <block>

+            <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='resume-traffic-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.resume-traffic.playbookname`'/>

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                            <parameter name='outputPath' value='playbookname' />

+                            <parameter name='source' value="`'prop.lcm.' + $payloadJson.nf-naming-code + '.resume-traffic.playbookname'`" />

+                        </execute>

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="generic-vnf" 

+		key="generic-vnf.vnf-id = $resume-traffic-input.action-identifiers.vnf-id" 

+		local-only="false" 

+		pfx='aai.generic-vnf'>

+                            <outcome value='success'>

+                                <block>

+                                    <switch test='`$playbookname`'>

+                                        <outcome value=''>

+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                                                <parameter name='outputPath' value='playbookname' />

+                                                <parameter name='source' value="`'prop.lcm.' + $aai.generic-vnf.nf-naming-code + '.resume-traffic.playbookname'`" />

+                                            </execute>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='nodelist' value="`'[' + $quote + $aai.generic-vnf.ipv4-oam-address +  $quote + ']'`"/>

+                                    </set>

+                                </block>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$playbookname`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='nodelist' value="`$prop.ansible.nodelist`"/>

+                        <parameter name='playbookname' value='`$prop.lcm.resume-traffic.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='`$resume-traffic-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='`$resume-traffic-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="`$resume-traffic-input.common-header.request-id + '-' + $resume-traffic-input.common-header.sub-request-id`"/>

+                                <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                <parameter name='lcm-dmaap.rpc-name' value='resume-traffic'/>

+                                <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                <parameter name='lcm-dmaap.timestamp' value='`$resume-traffic-input.common-header.timestamp`'/>

+                                <parameter name='lcm-dmaap.api-ver' value='`$resume-traffic-input.common-header.api-ver`'/>

+                                <parameter name='lcm-dmaap.originator-id' value='`$resume-traffic-input.common-header.originator-id`'/>

+                                <parameter name='lcm-dmaap.request-id' value='`$resume-traffic-input.common-header.request-id`'/>

+                                <parameter name='lcm-dmaap.sub-request-id' value='`$resume-traffic-input.common-header.sub-request-id`'/>

+                                <parameter name='lcm-dmaap.flags.mode' value='`$resume-traffic-input.common-header.flags.mode`'/>

+                                <parameter name='lcm-dmaap.flags.force' value='`$resume-traffic-input.common-header.flags.force`'/>

+                                <parameter name='lcm-dmaap.flags.ttl' value='`$resume-traffic-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="`$resume-traffic-input.common-header.request-id + '-' + $resume-traffic-input.common-header.sub-request-id`"/>

+                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                            <parameter name='lcm-dmaap.rpc-name' value='resume-traffic'/>

+                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                            <parameter name='lcm-dmaap.timestamp' value='`$resume-traffic-input.common-header.timestamp`'/>

+                            <parameter name='lcm-dmaap.api-ver' value='`$resume-traffic-input.common-header.api-ver`'/>

+                            <parameter name='lcm-dmaap.originator-id' value='`$resume-traffic-input.common-header.originator-id`'/>

+                            <parameter name='lcm-dmaap.request-id' value='`$resume-traffic-input.common-header.request-id`'/>

+                            <parameter name='lcm-dmaap.sub-request-id' value='`$resume-traffic-input.common-header.sub-request-id`'/>

+                            <parameter name='lcm-dmaap.flags.mode' value='`$resume-traffic-input.common-header.flags.mode`'/>

+                            <parameter name='lcm-dmaap.flags.force' value='`$resume-traffic-input.common-header.flags.force`'/>

+                            <parameter name='lcm-dmaap.flags.ttl' value='`$resume-traffic-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="`$resume-traffic-input.common-header.request-id + '-' + $resume-traffic-input.common-header.sub-request-id`"/>

+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                    <parameter name='lcm-dmaap.rpc-name' value='resume-traffic'/>

+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                    <parameter name='lcm-dmaap.timestamp' value='`$resume-traffic-input.common-header.timestamp`'/>

+                                    <parameter name='lcm-dmaap.api-ver' value='`$resume-traffic-input.common-header.api-ver`'/>

+                                    <parameter name='lcm-dmaap.originator-id' value='`$resume-traffic-input.common-header.originator-id`'/>

+                                    <parameter name='lcm-dmaap.request-id' value='`$resume-traffic-input.common-header.request-id`'/>

+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$resume-traffic-input.common-header.sub-request-id`'/>

+                                    <parameter name='lcm-dmaap.flags.mode' value='`$resume-traffic-input.common-header.flags.mode`'/>

+                                    <parameter name='lcm-dmaap.flags.force' value='`$resume-traffic-input.common-header.flags.force`'/>

+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$resume-traffic-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="`$resume-traffic-input.common-header.request-id + '-' + $resume-traffic-input.common-header.sub-request-id`"/>

+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                    <parameter name='lcm-dmaap.rpc-name' value='resume-traffic'/>

+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                    <parameter name='lcm-dmaap.timestamp' value='`$resume-traffic-input.common-header.timestamp`'/>

+                                    <parameter name='lcm-dmaap.api-ver' value='`$resume-traffic-input.common-header.api-ver`'/>

+                                    <parameter name='lcm-dmaap.originator-id' value='`$resume-traffic-input.common-header.originator-id`'/>

+                                    <parameter name='lcm-dmaap.request-id' value='`$resume-traffic-input.common-header.request-id`'/>

+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$resume-traffic-input.common-header.sub-request-id`'/>

+                                    <parameter name='lcm-dmaap.flags.mode' value='`$resume-traffic-input.common-header.flags.mode`'/>

+                                    <parameter name='lcm-dmaap.flags.force' value='`$resume-traffic-input.common-header.flags.force`'/>

+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$resume-traffic-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="`$resume-traffic-input.common-header.request-id + '-' + $resume-traffic-input.common-header.sub-request-id`"/>

+                                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                            <parameter name='lcm-dmaap.rpc-name' value='resume-traffic'/>

+                                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                            <parameter name='lcm-dmaap.timestamp' value='`$resume-traffic-input.common-header.timestamp`'/>

+                                            <parameter name='lcm-dmaap.api-ver' value='`$resume-traffic-input.common-header.api-ver`'/>

+                                            <parameter name='lcm-dmaap.originator-id' value='`$resume-traffic-input.common-header.originator-id`'/>

+                                            <parameter name='lcm-dmaap.request-id' value='`$resume-traffic-input.common-header.request-id`'/>

+                                            <parameter name='lcm-dmaap.sub-request-id' value='`$resume-traffic-input.common-header.sub-request-id`'/>

+                                            <parameter name='lcm-dmaap.flags.mode' value='`$resume-traffic-input.common-header.flags.mode`'/>

+                                            <parameter name='lcm-dmaap.flags.force' value='`$resume-traffic-input.common-header.flags.force`'/>

+                                            <parameter name='lcm-dmaap.flags.ttl' value='`$resume-traffic-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="`$resume-traffic-input.common-header.request-id + '-' + $resume-traffic-input.common-header.sub-request-id`"/>

+                                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                            <parameter name='lcm-dmaap.rpc-name' value='resume-traffic'/>

+                                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                            <parameter name='lcm-dmaap.timestamp' value='`$resume-traffic-input.common-header.timestamp`'/>

+                                            <parameter name='lcm-dmaap.api-ver' value='`$resume-traffic-input.common-header.api-ver`'/>

+                                            <parameter name='lcm-dmaap.originator-id' value='`$resume-traffic-input.common-header.originator-id`'/>

+                                            <parameter name='lcm-dmaap.request-id' value='`$resume-traffic-input.common-header.request-id`'/>

+                                            <parameter name='lcm-dmaap.sub-request-id' value='`$resume-traffic-input.common-header.sub-request-id`'/>

+                                            <parameter name='lcm-dmaap.flags.mode' value='`$resume-traffic-input.common-header.flags.mode`'/>

+                                            <parameter name='lcm-dmaap.flags.force' value='`$resume-traffic-input.common-header.flags.force`'/>

+                                            <parameter name='lcm-dmaap.flags.ttl' value='`$resume-traffic-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/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_rollback.xml b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_rollback.xml
new file mode 100644
index 0000000..dd24063
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_rollback.xml
@@ -0,0 +1,470 @@
+<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>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>

+                                            <parameter name='source' value='org.onap.appc.adapter.ansible.results' />

+                                            <parameter name='outputPath' value='resultsJson' />

+                                            <parameter name='isEscaped' value='false' />

+                                        </execute>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                                            <parameter name='source' value="`'resultsJson.' + $payloadJson.ipaddress-v4-oam + '.Output'`" />

+                                            <parameter name='outputPath' value='outputPayload' />

+                                        </execute>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <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>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <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`'/>

+                                                    <parameter name='lcm-dmaap.payload' value='`$outputPayload`'/>

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <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>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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`'/>

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </outcome>

+                                <outcome value='success'>

+                                    <block>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>

+                                            <parameter name='source' value='org.onap.appc.adapter.ansible.results' />

+                                            <parameter name='outputPath' value='resultsJson' />

+                                            <parameter name='isEscaped' value='false' />

+                                        </execute>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                                            <parameter name='source' value="`'resultsJson.' + $payloadJson.ipaddress-v4-oam + '.Output'`" />

+                                            <parameter name='outputPath' value='outputPayload' />

+                                        </execute>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <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>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <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`'/>

+                                                    <parameter name='lcm-dmaap.payload' value='`$outputPayload`'/>

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <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>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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`'/>

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </outcome>

+                            </execute>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_snapshot.xml b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_snapshot.xml
new file mode 100644
index 0000000..73d0885
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_snapshot.xml
@@ -0,0 +1,53 @@
+<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='snapshot' mode='sync'>

+        <block>

+            <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' />

+            </set>

+            <set>

+                <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                <parameter name='lcm-dmaap.correlation-id' value="`$snapshot-input.common-header.request-id + '-' + $snapshot-input.common-header.sub-request-id`"/>

+                <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                <parameter name='lcm-dmaap.rpc-name' value='snapshot'/>

+                <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                <parameter name='lcm-dmaap.timestamp' value='`$snapshot-input.common-header.timestamp`'/>

+                <parameter name='lcm-dmaap.api-ver' value='`$snapshot-input.common-header.api-ver`'/>

+                <parameter name='lcm-dmaap.originator-id' value='`$snapshot-input.common-header.originator-id`'/>

+                <parameter name='lcm-dmaap.request-id' value='`$snapshot-input.common-header.originator-id`'/>

+                <parameter name='lcm-dmaap.sub-request-id' value='`$snapshot-input.common-header.sub-request-id`'/>

+                <parameter name='lcm-dmaap.flags.mode' value='`$snapshot-input.common-header.flags.mode`'/>

+                <parameter name='lcm-dmaap.flags.force' value='`$snapshot-input.common-header.flags.force`'/>

+                <parameter name='lcm-dmaap.flags.ttl' value='`$snapshot-input.common-header.flags.ttl`'/>

+                <parameter name='lcm-dmaap.status.code' value='400' />

+                <parameter name='lcm-dmaap.status.message' value='SDNC Snapshot Mock returns success'/>

+            </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='400' />

+                <parameter name='status.message' value='SDNC Snapshot Mock returns success'/>

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_unlock.xml b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_unlock.xml
new file mode 100644
index 0000000..f524af4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_unlock.xml
@@ -0,0 +1,53 @@
+<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='unlock' mode='sync'>

+        <block>

+            <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' />

+            </set>

+            <set>

+                <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                <parameter name='lcm-dmaap.correlation-id' value="`$unlock-input.common-header.request-id + '-' + $unlock-input.common-header.sub-request-id`"/>

+                <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                <parameter name='lcm-dmaap.rpc-name' value='unlock'/>

+                <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                <parameter name='lcm-dmaap.timestamp' value='`$unlock-input.common-header.timestamp`'/>

+                <parameter name='lcm-dmaap.api-ver' value='`$unlock-input.common-header.api-ver`'/>

+                <parameter name='lcm-dmaap.originator-id' value='`$unlock-input.common-header.originator-id`'/>

+                <parameter name='lcm-dmaap.request-id' value='`$unlock-input.common-header.originator-id`'/>

+                <parameter name='lcm-dmaap.sub-request-id' value='`$unlock-input.common-header.sub-request-id`'/>

+                <parameter name='lcm-dmaap.flags.mode' value='`$unlock-input.common-header.flags.mode`'/>

+                <parameter name='lcm-dmaap.flags.force' value='`$unlock-input.common-header.flags.force`'/>

+                <parameter name='lcm-dmaap.flags.ttl' value='`$unlock-input.common-header.flags.ttl`'/>

+                <parameter name='lcm-dmaap.status.code' value='400' />

+                <parameter name='lcm-dmaap.status.message' value='SDNC Unlock Mock returns success'/>

+            </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='400' />

+                <parameter name='status.message' value='SDNC Unlock Mock returns success'/>

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_upgrade-backup.xml b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_upgrade-backup.xml
new file mode 100644
index 0000000..39eb341
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_upgrade-backup.xml
@@ -0,0 +1,53 @@
+<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='upgrade-backup' mode='sync'>

+        <block>

+            <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' />

+            </set>

+            <set>

+                <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                <parameter name='lcm-dmaap.correlation-id' value="`$upgrade-backup-input.common-header.request-id + '-' + $upgrade-backup-input.common-header.sub-request-id`"/>

+                <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                <parameter name='lcm-dmaap.rpc-name' value='upgrade-backup'/>

+                <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                <parameter name='lcm-dmaap.timestamp' value='`$upgrade-backup-input.common-header.timestamp`'/>

+                <parameter name='lcm-dmaap.api-ver' value='`$upgrade-backup-input.common-header.api-ver`'/>

+                <parameter name='lcm-dmaap.originator-id' value='`$upgrade-backup-input.common-header.originator-id`'/>

+                <parameter name='lcm-dmaap.request-id' value='`$upgrade-backup-input.common-header.originator-id`'/>

+                <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-backup-input.common-header.sub-request-id`'/>

+                <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-backup-input.common-header.flags.mode`'/>

+                <parameter name='lcm-dmaap.flags.force' value='`$upgrade-backup-input.common-header.flags.force`'/>

+                <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-backup-input.common-header.flags.ttl`'/>

+                <parameter name='lcm-dmaap.status.code' value='400' />

+                <parameter name='lcm-dmaap.status.message' value='SDNC Upgrade-backup Mock returns success'/>

+            </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='400' />

+                <parameter name='status.message' value='SDNC Upgrade-backup Mock returns success'/>

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_upgrade-post-check.xml b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_upgrade-post-check.xml
new file mode 100644
index 0000000..b22f471
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_upgrade-post-check.xml
@@ -0,0 +1,492 @@
+<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='upgrade-post-check' mode='sync'>

+        <block>

+            <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="'" />

+                <parameter name='outputPayloadField' value='.Output' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>

+                <parameter name='source' value='upgrade-post-check-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.upgrade-post-check.playbookname`'/>

+                        <parameter name='outputPayloadField' value="`'.' + $payloadJson.ipaddress-v4-oam + '.Output'`"/>

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                            <parameter name='outputPath' value='playbookname' />

+                            <parameter name='source' value="`'prop.lcm.' + $payloadJson.nf-naming-code + '.upgrade-post-check.playbookname'`" />

+                        </execute>

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="generic-vnf" 

+		key="generic-vnf.vnf-id = $upgrade-post-check-input.action-identifiers.vnf-id" 

+		local-only="false" 

+		pfx='aai.generic-vnf'>

+                            <outcome value='success'>

+                                <block>

+                                    <switch test='`$playbookname`'>

+                                        <outcome value=''>

+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                                                <parameter name='outputPath' value='playbookname' />

+                                                <parameter name='source' value="`'prop.lcm.' + $aai.generic-vnf.nf-naming-code + '.upgrade-post-check.playbookname'`" />

+                                            </execute>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='nodelist' value="`'[' + $quote + $aai.generic-vnf.ipv4-oam-address +  $quote + ']'`"/>

+                                    </set>

+                                </block>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$playbookname`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='playbookname' value='`$prop.lcm.upgrade-post-check.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='`$upgrade-post-check-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='`$upgrade-post-check-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="`$upgrade-post-check-input.common-header.request-id + '-' + $upgrade-post-check-input.common-header.sub-request-id`"/>

+                                <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                <parameter name='lcm-dmaap.rpc-name' value='upgrade-post-check'/>

+                                <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                <parameter name='lcm-dmaap.timestamp' value='`$upgrade-post-check-input.common-header.timestamp`'/>

+                                <parameter name='lcm-dmaap.api-ver' value='`$upgrade-post-check-input.common-header.api-ver`'/>

+                                <parameter name='lcm-dmaap.originator-id' value='`$upgrade-post-check-input.common-header.originator-id`'/>

+                                <parameter name='lcm-dmaap.request-id' value='`$upgrade-post-check-input.common-header.request-id`'/>

+                                <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-post-check-input.common-header.sub-request-id`'/>

+                                <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-post-check-input.common-header.flags.mode`'/>

+                                <parameter name='lcm-dmaap.flags.force' value='`$upgrade-post-check-input.common-header.flags.force`'/>

+                                <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-post-check-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="`$upgrade-post-check-input.common-header.request-id + '-' + $upgrade-post-check-input.common-header.sub-request-id`"/>

+                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                            <parameter name='lcm-dmaap.rpc-name' value='upgrade-post-check'/>

+                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                            <parameter name='lcm-dmaap.timestamp' value='`$upgrade-post-check-input.common-header.timestamp`'/>

+                            <parameter name='lcm-dmaap.api-ver' value='`$upgrade-post-check-input.common-header.api-ver`'/>

+                            <parameter name='lcm-dmaap.originator-id' value='`$upgrade-post-check-input.common-header.originator-id`'/>

+                            <parameter name='lcm-dmaap.request-id' value='`$upgrade-post-check-input.common-header.request-id`'/>

+                            <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-post-check-input.common-header.sub-request-id`'/>

+                            <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-post-check-input.common-header.flags.mode`'/>

+                            <parameter name='lcm-dmaap.flags.force' value='`$upgrade-post-check-input.common-header.flags.force`'/>

+                            <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-post-check-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="`$upgrade-post-check-input.common-header.request-id + '-' + $upgrade-post-check-input.common-header.sub-request-id`"/>

+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-post-check'/>

+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-post-check-input.common-header.timestamp`'/>

+                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-post-check-input.common-header.api-ver`'/>

+                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-post-check-input.common-header.originator-id`'/>

+                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-post-check-input.common-header.request-id`'/>

+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-post-check-input.common-header.sub-request-id`'/>

+                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-post-check-input.common-header.flags.mode`'/>

+                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-post-check-input.common-header.flags.force`'/>

+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-post-check-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="`$upgrade-post-check-input.common-header.request-id + '-' + $upgrade-post-check-input.common-header.sub-request-id`"/>

+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-post-check'/>

+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-post-check-input.common-header.timestamp`'/>

+                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-post-check-input.common-header.api-ver`'/>

+                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-post-check-input.common-header.originator-id`'/>

+                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-post-check-input.common-header.request-id`'/>

+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-post-check-input.common-header.sub-request-id`'/>

+                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-post-check-input.common-header.flags.mode`'/>

+                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-post-check-input.common-header.flags.force`'/>

+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-post-check-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>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>

+                                            <parameter name='source' value='org.onap.appc.adapter.ansible.results' />

+                                            <parameter name='outputPath' value='resultsJson' />

+                                            <parameter name='isEscaped' value='false' />

+                                        </execute>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                                            <parameter name='source' value="`'resultsJson' + $outputPayloadField`" />

+                                            <parameter name='outputPath' value='outputPayload' />

+                                        </execute>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <set>

+                                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                                    <parameter name='lcm-dmaap.correlation-id' value="`$upgrade-post-check-input.common-header.request-id + '-' + $upgrade-post-check-input.common-header.sub-request-id`"/>

+                                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-post-check'/>

+                                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-post-check-input.common-header.timestamp`'/>

+                                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-post-check-input.common-header.api-ver`'/>

+                                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-post-check-input.common-header.originator-id`'/>

+                                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-post-check-input.common-header.request-id`'/>

+                                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-post-check-input.common-header.sub-request-id`'/>

+                                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-post-check-input.common-header.flags.mode`'/>

+                                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-post-check-input.common-header.flags.force`'/>

+                                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-post-check-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>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <set>

+                                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                                    <parameter name='lcm-dmaap.correlation-id' value="`$upgrade-post-check-input.common-header.request-id + '-' + $upgrade-post-check-input.common-header.sub-request-id`"/>

+                                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-post-check'/>

+                                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-post-check-input.common-header.timestamp`'/>

+                                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-post-check-input.common-header.api-ver`'/>

+                                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-post-check-input.common-header.originator-id`'/>

+                                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-post-check-input.common-header.request-id`'/>

+                                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-post-check-input.common-header.sub-request-id`'/>

+                                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-post-check-input.common-header.flags.mode`'/>

+                                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-post-check-input.common-header.flags.force`'/>

+                                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-post-check-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`'/>

+                                                    <parameter name='lcm-dmaap.payload' value='`$outputPayload`'/>

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <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>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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`'/>

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </outcome>

+                                <outcome value='success'>

+                                    <block>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>

+                                            <parameter name='source' value='org.onap.appc.adapter.ansible.results' />

+                                            <parameter name='outputPath' value='resultsJson' />

+                                            <parameter name='isEscaped' value='false' />

+                                        </execute>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                                            <parameter name='source' value="`'resultsJson' + $outputPayloadField`" />

+                                            <parameter name='outputPath' value='outputPayload' />

+                                        </execute>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <set>

+                                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                                    <parameter name='lcm-dmaap.correlation-id' value="`$upgrade-post-check-input.common-header.request-id + '-' + $upgrade-post-check-input.common-header.sub-request-id`"/>

+                                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-post-check'/>

+                                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-post-check-input.common-header.timestamp`'/>

+                                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-post-check-input.common-header.api-ver`'/>

+                                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-post-check-input.common-header.originator-id`'/>

+                                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-post-check-input.common-header.request-id`'/>

+                                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-post-check-input.common-header.sub-request-id`'/>

+                                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-post-check-input.common-header.flags.mode`'/>

+                                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-post-check-input.common-header.flags.force`'/>

+                                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-post-check-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>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <set>

+                                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                                    <parameter name='lcm-dmaap.correlation-id' value="`$upgrade-post-check-input.common-header.request-id + '-' + $upgrade-post-check-input.common-header.sub-request-id`"/>

+                                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-post-check'/>

+                                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-post-check-input.common-header.timestamp`'/>

+                                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-post-check-input.common-header.api-ver`'/>

+                                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-post-check-input.common-header.originator-id`'/>

+                                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-post-check-input.common-header.request-id`'/>

+                                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-post-check-input.common-header.sub-request-id`'/>

+                                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-post-check-input.common-header.flags.mode`'/>

+                                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-post-check-input.common-header.flags.force`'/>

+                                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-post-check-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`'/>

+                                                    <parameter name='lcm-dmaap.payload' value='`$outputPayload`'/>

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <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>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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`'/>

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </outcome>

+                            </execute>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_upgrade-pre-check.xml b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_upgrade-pre-check.xml
new file mode 100644
index 0000000..8903322
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_upgrade-pre-check.xml
@@ -0,0 +1,492 @@
+<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='upgrade-pre-check' mode='sync'>

+        <block>

+            <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="'" />

+                <parameter name='outputPayloadField' value='.Output' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>

+                <parameter name='source' value='upgrade-pre-check-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.upgrade-pre-check.playbookname`'/>

+                        <parameter name='outputPayloadField' value="`'.' + $payloadJson.ipaddress-v4-oam + '.Output'`"/>

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                            <parameter name='outputPath' value='playbookname' />

+                            <parameter name='source' value="`'prop.lcm.' + $payloadJson.nf-naming-code + '.upgrade-pre-check.playbookname'`" />

+                        </execute>

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="generic-vnf" 

+		key="generic-vnf.vnf-id = $upgrade-pre-check-input.action-identifiers.vnf-id" 

+		local-only="false" 

+		pfx='aai.generic-vnf'>

+                            <outcome value='success'>

+                                <block>

+                                    <switch test='`$playbookname`'>

+                                        <outcome value=''>

+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                                                <parameter name='outputPath' value='playbookname' />

+                                                <parameter name='source' value="`'prop.lcm.' + $aai.generic-vnf.nf-naming-code + '.upgrade-pre-check.playbookname'`" />

+                                            </execute>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='nodelist' value="`'[' + $quote + $aai.generic-vnf.ipv4-oam-address +  $quote + ']'`"/>

+                                    </set>

+                                </block>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$playbookname`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='playbookname' value='`$prop.lcm.upgrade-pre-check.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='`$upgrade-pre-check-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='`$upgrade-pre-check-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="`$upgrade-pre-check-input.common-header.request-id + '-' + $upgrade-pre-check-input.common-header.sub-request-id`"/>

+                                <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                <parameter name='lcm-dmaap.rpc-name' value='upgrade-pre-check'/>

+                                <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                <parameter name='lcm-dmaap.timestamp' value='`$upgrade-pre-check-input.common-header.timestamp`'/>

+                                <parameter name='lcm-dmaap.api-ver' value='`$upgrade-pre-check-input.common-header.api-ver`'/>

+                                <parameter name='lcm-dmaap.originator-id' value='`$upgrade-pre-check-input.common-header.originator-id`'/>

+                                <parameter name='lcm-dmaap.request-id' value='`$upgrade-pre-check-input.common-header.request-id`'/>

+                                <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-pre-check-input.common-header.sub-request-id`'/>

+                                <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-pre-check-input.common-header.flags.mode`'/>

+                                <parameter name='lcm-dmaap.flags.force' value='`$upgrade-pre-check-input.common-header.flags.force`'/>

+                                <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-pre-check-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="`$upgrade-pre-check-input.common-header.request-id + '-' + $upgrade-pre-check-input.common-header.sub-request-id`"/>

+                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                            <parameter name='lcm-dmaap.rpc-name' value='upgrade-pre-check'/>

+                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                            <parameter name='lcm-dmaap.timestamp' value='`$upgrade-pre-check-input.common-header.timestamp`'/>

+                            <parameter name='lcm-dmaap.api-ver' value='`$upgrade-pre-check-input.common-header.api-ver`'/>

+                            <parameter name='lcm-dmaap.originator-id' value='`$upgrade-pre-check-input.common-header.originator-id`'/>

+                            <parameter name='lcm-dmaap.request-id' value='`$upgrade-pre-check-input.common-header.request-id`'/>

+                            <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-pre-check-input.common-header.sub-request-id`'/>

+                            <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-pre-check-input.common-header.flags.mode`'/>

+                            <parameter name='lcm-dmaap.flags.force' value='`$upgrade-pre-check-input.common-header.flags.force`'/>

+                            <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-pre-check-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="`$upgrade-pre-check-input.common-header.request-id + '-' + $upgrade-pre-check-input.common-header.sub-request-id`"/>

+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-pre-check'/>

+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-pre-check-input.common-header.timestamp`'/>

+                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-pre-check-input.common-header.api-ver`'/>

+                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-pre-check-input.common-header.originator-id`'/>

+                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-pre-check-input.common-header.request-id`'/>

+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-pre-check-input.common-header.sub-request-id`'/>

+                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-pre-check-input.common-header.flags.mode`'/>

+                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-pre-check-input.common-header.flags.force`'/>

+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-pre-check-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="`$upgrade-pre-check-input.common-header.request-id + '-' + $upgrade-pre-check-input.common-header.sub-request-id`"/>

+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-pre-check'/>

+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-pre-check-input.common-header.timestamp`'/>

+                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-pre-check-input.common-header.api-ver`'/>

+                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-pre-check-input.common-header.originator-id`'/>

+                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-pre-check-input.common-header.request-id`'/>

+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-pre-check-input.common-header.sub-request-id`'/>

+                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-pre-check-input.common-header.flags.mode`'/>

+                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-pre-check-input.common-header.flags.force`'/>

+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-pre-check-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>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>

+                                            <parameter name='source' value='org.onap.appc.adapter.ansible.results' />

+                                            <parameter name='outputPath' value='resultsJson' />

+                                            <parameter name='isEscaped' value='false' />

+                                        </execute>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                                            <parameter name='source' value="`'resultsJson' + $outputPayloadField`" />

+                                            <parameter name='outputPath' value='outputPayload' />

+                                        </execute>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <set>

+                                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                                    <parameter name='lcm-dmaap.correlation-id' value="`$upgrade-pre-check-input.common-header.request-id + '-' + $upgrade-pre-check-input.common-header.sub-request-id`"/>

+                                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-pre-check'/>

+                                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-pre-check-input.common-header.timestamp`'/>

+                                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-pre-check-input.common-header.api-ver`'/>

+                                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-pre-check-input.common-header.originator-id`'/>

+                                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-pre-check-input.common-header.request-id`'/>

+                                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-pre-check-input.common-header.sub-request-id`'/>

+                                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-pre-check-input.common-header.flags.mode`'/>

+                                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-pre-check-input.common-header.flags.force`'/>

+                                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-pre-check-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>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <set>

+                                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                                    <parameter name='lcm-dmaap.correlation-id' value="`$upgrade-pre-check-input.common-header.request-id + '-' + $upgrade-pre-check-input.common-header.sub-request-id`"/>

+                                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-pre-check'/>

+                                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-pre-check-input.common-header.timestamp`'/>

+                                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-pre-check-input.common-header.api-ver`'/>

+                                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-pre-check-input.common-header.originator-id`'/>

+                                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-pre-check-input.common-header.request-id`'/>

+                                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-pre-check-input.common-header.sub-request-id`'/>

+                                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-pre-check-input.common-header.flags.mode`'/>

+                                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-pre-check-input.common-header.flags.force`'/>

+                                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-pre-check-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`'/>

+                                                    <parameter name='lcm-dmaap.payload' value='`$outputPayload`'/>

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <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>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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`'/>

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </outcome>

+                                <outcome value='success'>

+                                    <block>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>

+                                            <parameter name='source' value='org.onap.appc.adapter.ansible.results' />

+                                            <parameter name='outputPath' value='resultsJson' />

+                                            <parameter name='isEscaped' value='false' />

+                                        </execute>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                                            <parameter name='source' value="`'resultsJson' + $outputPayloadField`" />

+                                            <parameter name='outputPath' value='outputPayload' />

+                                        </execute>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <set>

+                                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                                    <parameter name='lcm-dmaap.correlation-id' value="`$upgrade-pre-check-input.common-header.request-id + '-' + $upgrade-pre-check-input.common-header.sub-request-id`"/>

+                                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-pre-check'/>

+                                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-pre-check-input.common-header.timestamp`'/>

+                                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-pre-check-input.common-header.api-ver`'/>

+                                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-pre-check-input.common-header.originator-id`'/>

+                                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-pre-check-input.common-header.request-id`'/>

+                                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-pre-check-input.common-header.sub-request-id`'/>

+                                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-pre-check-input.common-header.flags.mode`'/>

+                                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-pre-check-input.common-header.flags.force`'/>

+                                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-pre-check-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>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <set>

+                                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                                    <parameter name='lcm-dmaap.correlation-id' value="`$upgrade-pre-check-input.common-header.request-id + '-' + $upgrade-pre-check-input.common-header.sub-request-id`"/>

+                                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-pre-check'/>

+                                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-pre-check-input.common-header.timestamp`'/>

+                                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-pre-check-input.common-header.api-ver`'/>

+                                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-pre-check-input.common-header.originator-id`'/>

+                                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-pre-check-input.common-header.request-id`'/>

+                                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-pre-check-input.common-header.sub-request-id`'/>

+                                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-pre-check-input.common-header.flags.mode`'/>

+                                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-pre-check-input.common-header.flags.force`'/>

+                                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-pre-check-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`'/>

+                                                    <parameter name='lcm-dmaap.payload' value='`$outputPayload`'/>

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <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>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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`'/>

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </outcome>

+                            </execute>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_upgrade-software.xml b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_upgrade-software.xml
new file mode 100644
index 0000000..af0ee71
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/lcm/src/main/xml/LCM_upgrade-software.xml
@@ -0,0 +1,492 @@
+<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='upgrade-software' mode='sync'>

+        <block>

+            <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="'" />

+                <parameter name='outputPayloadField' value='.Output' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>

+                <parameter name='source' value='upgrade-software-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.upgrade-software.playbookname`'/>

+                        <parameter name='outputPayloadField' value="`'.' + $payloadJson.ipaddress-v4-oam + '.Output'`"/>

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                            <parameter name='outputPath' value='playbookname' />

+                            <parameter name='source' value="`'prop.lcm.' + $payloadJson.nf-naming-code + '.upgrade-software.playbookname'`" />

+                        </execute>

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="generic-vnf" 

+		key="generic-vnf.vnf-id = $upgrade-software-input.action-identifiers.vnf-id" 

+		local-only="false" 

+		pfx='aai.generic-vnf'>

+                            <outcome value='success'>

+                                <block>

+                                    <switch test='`$playbookname`'>

+                                        <outcome value=''>

+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                                                <parameter name='outputPath' value='playbookname' />

+                                                <parameter name='source' value="`'prop.lcm.' + $aai.generic-vnf.nf-naming-code + '.upgrade-software.playbookname'`" />

+                                            </execute>

+                                        </outcome>

+                                    </switch>

+                                    <set>

+                                        <parameter name='nodelist' value="`'[' + $quote + $aai.generic-vnf.ipv4-oam-address +  $quote + ']'`"/>

+                                    </set>

+                                </block>

+                            </outcome>

+                        </get-resource>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$playbookname`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='playbookname' value='`$prop.lcm.upgrade-software.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='`$upgrade-software-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='`$upgrade-software-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="`$upgrade-software-input.common-header.request-id + '-' + $upgrade-software-input.common-header.sub-request-id`"/>

+                                <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                <parameter name='lcm-dmaap.rpc-name' value='upgrade-software'/>

+                                <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                <parameter name='lcm-dmaap.timestamp' value='`$upgrade-software-input.common-header.timestamp`'/>

+                                <parameter name='lcm-dmaap.api-ver' value='`$upgrade-software-input.common-header.api-ver`'/>

+                                <parameter name='lcm-dmaap.originator-id' value='`$upgrade-software-input.common-header.originator-id`'/>

+                                <parameter name='lcm-dmaap.request-id' value='`$upgrade-software-input.common-header.request-id`'/>

+                                <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-software-input.common-header.sub-request-id`'/>

+                                <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-software-input.common-header.flags.mode`'/>

+                                <parameter name='lcm-dmaap.flags.force' value='`$upgrade-software-input.common-header.flags.force`'/>

+                                <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-software-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="`$upgrade-software-input.common-header.request-id + '-' + $upgrade-software-input.common-header.sub-request-id`"/>

+                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                            <parameter name='lcm-dmaap.rpc-name' value='upgrade-software'/>

+                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                            <parameter name='lcm-dmaap.timestamp' value='`$upgrade-software-input.common-header.timestamp`'/>

+                            <parameter name='lcm-dmaap.api-ver' value='`$upgrade-software-input.common-header.api-ver`'/>

+                            <parameter name='lcm-dmaap.originator-id' value='`$upgrade-software-input.common-header.originator-id`'/>

+                            <parameter name='lcm-dmaap.request-id' value='`$upgrade-software-input.common-header.request-id`'/>

+                            <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-software-input.common-header.sub-request-id`'/>

+                            <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-software-input.common-header.flags.mode`'/>

+                            <parameter name='lcm-dmaap.flags.force' value='`$upgrade-software-input.common-header.flags.force`'/>

+                            <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-software-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="`$upgrade-software-input.common-header.request-id + '-' + $upgrade-software-input.common-header.sub-request-id`"/>

+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-software'/>

+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-software-input.common-header.timestamp`'/>

+                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-software-input.common-header.api-ver`'/>

+                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-software-input.common-header.originator-id`'/>

+                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-software-input.common-header.request-id`'/>

+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-software-input.common-header.sub-request-id`'/>

+                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-software-input.common-header.flags.mode`'/>

+                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-software-input.common-header.flags.force`'/>

+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-software-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="`$upgrade-software-input.common-header.request-id + '-' + $upgrade-software-input.common-header.sub-request-id`"/>

+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-software'/>

+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-software-input.common-header.timestamp`'/>

+                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-software-input.common-header.api-ver`'/>

+                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-software-input.common-header.originator-id`'/>

+                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-software-input.common-header.request-id`'/>

+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-software-input.common-header.sub-request-id`'/>

+                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-software-input.common-header.flags.mode`'/>

+                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-software-input.common-header.flags.force`'/>

+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-software-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>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>

+                                            <parameter name='source' value='org.onap.appc.adapter.ansible.results' />

+                                            <parameter name='outputPath' value='resultsJson' />

+                                            <parameter name='isEscaped' value='false' />

+                                        </execute>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                                            <parameter name='source' value="`'resultsJson' + $outputPayloadField`" />

+                                            <parameter name='outputPath' value='outputPayload' />

+                                        </execute>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <set>

+                                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                                    <parameter name='lcm-dmaap.correlation-id' value="`$upgrade-software-input.common-header.request-id + '-' + $upgrade-software-input.common-header.sub-request-id`"/>

+                                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-software'/>

+                                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-software-input.common-header.timestamp`'/>

+                                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-software-input.common-header.api-ver`'/>

+                                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-software-input.common-header.originator-id`'/>

+                                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-software-input.common-header.request-id`'/>

+                                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-software-input.common-header.sub-request-id`'/>

+                                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-software-input.common-header.flags.mode`'/>

+                                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-software-input.common-header.flags.force`'/>

+                                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-software-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>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <set>

+                                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                                    <parameter name='lcm-dmaap.correlation-id' value="`$upgrade-software-input.common-header.request-id + '-' + $upgrade-software-input.common-header.sub-request-id`"/>

+                                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-software'/>

+                                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-software-input.common-header.timestamp`'/>

+                                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-software-input.common-header.api-ver`'/>

+                                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-software-input.common-header.originator-id`'/>

+                                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-software-input.common-header.request-id`'/>

+                                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-software-input.common-header.sub-request-id`'/>

+                                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-software-input.common-header.flags.mode`'/>

+                                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-software-input.common-header.flags.force`'/>

+                                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-software-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`'/>

+                                                    <parameter name='lcm-dmaap.payload' value='`$outputPayload`'/>

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <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>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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`'/>

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </outcome>

+                                <outcome value='success'>

+                                    <block>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>

+                                            <parameter name='source' value='org.onap.appc.adapter.ansible.results' />

+                                            <parameter name='outputPath' value='resultsJson' />

+                                            <parameter name='isEscaped' value='false' />

+                                        </execute>

+                                        <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='getAttributeValue'>

+                                            <parameter name='source' value="`'resultsJson' + $outputPayloadField`" />

+                                            <parameter name='outputPath' value='outputPayload' />

+                                        </execute>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <set>

+                                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                                    <parameter name='lcm-dmaap.correlation-id' value="`$upgrade-software-input.common-header.request-id + '-' + $upgrade-software-input.common-header.sub-request-id`"/>

+                                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-software'/>

+                                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-software-input.common-header.timestamp`'/>

+                                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-software-input.common-header.api-ver`'/>

+                                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-software-input.common-header.originator-id`'/>

+                                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-software-input.common-header.request-id`'/>

+                                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-software-input.common-header.sub-request-id`'/>

+                                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-software-input.common-header.flags.mode`'/>

+                                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-software-input.common-header.flags.force`'/>

+                                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-software-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>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <set>

+                                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                                    <parameter name='lcm-dmaap.correlation-id' value="`$upgrade-software-input.common-header.request-id + '-' + $upgrade-software-input.common-header.sub-request-id`"/>

+                                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                                    <parameter name='lcm-dmaap.rpc-name' value='upgrade-software'/>

+                                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                                    <parameter name='lcm-dmaap.timestamp' value='`$upgrade-software-input.common-header.timestamp`'/>

+                                                    <parameter name='lcm-dmaap.api-ver' value='`$upgrade-software-input.common-header.api-ver`'/>

+                                                    <parameter name='lcm-dmaap.originator-id' value='`$upgrade-software-input.common-header.originator-id`'/>

+                                                    <parameter name='lcm-dmaap.request-id' value='`$upgrade-software-input.common-header.request-id`'/>

+                                                    <parameter name='lcm-dmaap.sub-request-id' value='`$upgrade-software-input.common-header.sub-request-id`'/>

+                                                    <parameter name='lcm-dmaap.flags.mode' value='`$upgrade-software-input.common-header.flags.mode`'/>

+                                                    <parameter name='lcm-dmaap.flags.force' value='`$upgrade-software-input.common-header.flags.force`'/>

+                                                    <parameter name='lcm-dmaap.flags.ttl' value='`$upgrade-software-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`'/>

+                                                    <parameter name='lcm-dmaap.payload' value='`$outputPayload`'/>

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                        <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>

+                                        <switch test='`$outputPayload`'>

+                                            <outcome value=''>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                            <outcome value='Other'>

+                                                <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                                                    <outcome value='400'>

+                                                        <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`'/>

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                    <outcome value='Other'>

+                                                        <return status='failure'>

+                                                            <parameter name='status.code' value='401' />

+                                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                                            <parameter name='payload' value='`$outputPayload`'/>

+                                                        </return>

+                                                    </outcome>

+                                                </switch>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </outcome>

+                            </execute>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/pom.xml b/sdnc-a1-controller/oam/platform-logic/pom.xml
new file mode 100644
index 0000000..6e58638
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/pom.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>odlparent-lite</artifactId>
+        <version>1.4.3</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.onap.sdnc.oam</groupId>
+    <artifactId>platform-logic</artifactId>
+    <version>1.7.3-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <name>sdnc-oam :: platform-logic</name>
+    <description>Contains platform-level service logic</description>
+    <organization>
+        <name>ONAP</name>
+    </organization>
+
+    <modules>
+        <module>setup</module>
+        <module>generic-resource-api</module>
+        <module>vnfapi</module>
+        <module>lcm</module>
+        <module>restapi-templates</module>
+        <module>restconfapi-yang</module>
+        <module>datachange</module>
+        <module>installer</module>
+    </modules>
+
+    <properties>
+        <application.name>platform-logic</application.name>
+
+        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
+        <build.number>${maven.build.timestamp}</build.number>
+    </properties>
+</project>
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/pom.xml b/sdnc-a1-controller/oam/platform-logic/restapi-templates/pom.xml
new file mode 100644
index 0000000..ae49c99
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/pom.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>odlparent-lite</artifactId>
+        <version>1.4.3</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.onap.sdnc.oam</groupId>
+    <artifactId>platform-logic-restapi-templates</artifactId>
+    <version>1.7.3-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <name>sdnc-oam :: platform-logic :: ${project.artifactId}</name>
+    <description>Contains platform-level platform logic for REST API templates</description>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <id>copy-version</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>../target/restapi/templates</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/json</directory>
+                                    <includes>
+                                        <include>**/*.json</include>
+                                    </includes>
+                                    <filtering>true</filtering>
+                                </resource>
+                                <resource>
+                                    <directory>src/main/xml</directory>
+                                    <includes>
+                                        <include>**/*.xml</include>
+                                    </includes>
+                                    <filtering>true</filtering>
+                                </resource>
+                                <resource>
+                                    <directory>src/main/velocity</directory>
+                                    <includes>
+                                        <include>**/*.vtl</include>
+                                    </includes>
+                                    <filtering>true</filtering>
+                                </resource>
+                                <resource>
+                                    <directory>src/main/multipartfile</directory>
+                                    <includes>
+                                        <include>**/*.*</include>
+                                    </includes>
+                                    <filtering>true</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/actokentemplate.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/actokentemplate.json
new file mode 100644
index 0000000..934b9b4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/actokentemplate.json
@@ -0,0 +1,5 @@
+
+{
+  "userName": ${prop.sdncRestApi.thirdpartySdnc.user},
+  "password": ${prop.sdncRestApi.thirdpartySdnc.password}
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/bbs-access-connectivity-create.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/bbs-access-connectivity-create.json
new file mode 100644
index 0000000..0cab56e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/bbs-access-connectivity-create.json
@@ -0,0 +1,39 @@
+{
+"accessE2Eservice" : {
+                "serviceID" : "",
+                "subscriberInfo" : {
+                        "accessID" : "",
+                        "extendParas" : {},
+"dpName":""
+                },
+                "aEnd" : {
+                        "endNeName" : "",
+                        "endPort" : "",
+                        "extendParas" : {
+                                "ontSN" :  ${prop.bbs.ONTSN},
+                                "cVlanID" : ${prop.bbs.CVLAN}
+                        }
+                },
+                "zEnd" : {
+                        "endNeName" : "",
+                        "endPort" : "",
+                        "extendParas" : {
+                                "sVlanID" :  ${prop.bbs.SVLAN}
+                        }
+                },
+                "serviceInfo" : {
+                        "serviceBasciInfo" : {
+                                "serviceType" : "HSI"
+                        },
+                        "hsiServiceInfo" : {
+                                "hsiServiceType" : ${prop.bbs.HsiType},
+                                "hsiPackage" : ${prop.bbs.HsiPackage},
+                                "lineProfileName" : "",
+                                "serviceProfileName" : "",
+                                "vaProfileName" : "",
+                                "trafficProfileName" : "",
+                                "extendParas" : {}
+                        }
+                }
+        }
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/bbs-internet-profile-operation.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/bbs-internet-profile-operation.json
new file mode 100644
index 0000000..dc44ad3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/bbs-internet-profile-operation.json
@@ -0,0 +1,11 @@
+{
+  "service_id":${prop.bbs.service_id},
+  "remote_id":${prop.bbs.remote_id},
+  "ont_sn":${prop.bbs.ont_sn},
+  "service_type":${prop.bbs.service_type},
+  "mac":${prop.bbs.mac},
+  "up_speed":${prop.bbs.up_speed},
+  "down_speed":${prop.bbs.down_speed},
+  "s_vlan":${prop.bbs.s_vlan},
+  "c_vlan":${prop.bbs.c_vlan}
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/bbs-token-template.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/bbs-token-template.json
new file mode 100644
index 0000000..9fec06b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/bbs-token-template.json
@@ -0,0 +1,5 @@
+{
+"userName":"swisscom",
+"grantType":"password",
+"value":"Test_12345"
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/brg-allotted-resource.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/brg-allotted-resource.json
new file mode 100644
index 0000000..519071f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/brg-allotted-resource.json
@@ -0,0 +1,72 @@
+{
+    "brg-allotted-resource": [{
+        "allotted-resource-id": ${brg-ar.allotted-resource-id},
+        "allotted-resource-data": {
+            "brg-topology": {
+                "allotted-resource-identifiers": {
+                    "consuming-service-instance-id": ${brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.consuming-service-instance-id},
+                    "allotted-resource-name": ${brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.allotted-resource-name},
+                    "allotted-resource-id": ${brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.allotted-resource-id},
+                    "parent-service-instance-id": ${brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.parent-service-instance-id},
+                    "allotted-resource-type": ${brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.allotted-resource-type}
+                },
+                "onap-model-information": {
+                    "model-invariant-uuid": ${brg-ar.allotted-resource-data.brg-topology.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${brg-ar.allotted-resource-data.brg-topology.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${brg-ar.allotted-resource-data.brg-topology.onap-model-information.model-uuid},
+                    "model-version": ${brg-ar.allotted-resource-data.brg-topology.onap-model-information.model-version}
+                },
+                "brg-assignments": {
+                    "vbrg-wan-ip": ${brg-ar.allotted-resource-data.brg-topology.brg-assignments.vbrg-wan-ip},
+                },
+                "brg-parameters": {
+                }
+
+            },
+            "allotted-resource-operation-information": {
+            "allotted-resource-information": {
+                    "allotted-resource-id": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.allotted-resource-id},
+                    "allotted-resource-type": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.allotted-resource-type},
+                    "parent-service-instance-id": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id},
+                    "onap-model-information": {
+                        "model-invariant-uuid": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-invariant-uuid},
+                        "model-customization-uuid": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-customization-uuid},
+                        "model-uuid": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-uuid},
+                        "model-version": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-version}
+                    }
+                },
+                "sdnc-request-header": {
+                    "svc-request-id": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id},
+                    "svc-action": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-action}
+                },
+                "request-information": {
+                    "request-id": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-id},
+                    "source": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.source},
+                    "order-version": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.order-version},
+                    "order-number": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.order-number},
+                    "notification-url": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.notification-url},
+                    "request-action": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action}
+                },
+                "brg-request-input": {
+                     "vgmux-bearer-ip": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.vgmux-bearer-ip},
+                     "vni": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.vni},
+                     "brg-wan-mac-address": ${brg-ar.allotted-resource-data.allotted-resource-operation-information.brg-request-input.brg-wan-mac-address}
+                }
+            },
+            "allotted-resource-oper-status": {
+                "last-action": ${brg-ar.allotted-resource-data.allotted-resource-oper-status.last-action},
+                "modify-timestamp": ${brg-ar.allotted-resource-data.allotted-resource-oper-status.modify-timestamp},
+                "last-order-status": ${brg-ar.allotted-resource-data.allotted-resource-oper-status.last-order-status},
+                "create-timestamp": ${brg-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp},
+                "order-status": ${brg-ar.allotted-resource-data.allotted-resource-oper-status.order-status},
+                "last-rpc-action": ${brg-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action},
+                "last-svc-request-id": ${brg-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id}
+            }
+        },
+        "allotted-resource-status" : {
+            "action": ${brg-ar.allotted-resource-status.action},
+            "rpc-name": ${brg-ar.allotted-resource-status.rpc-name},
+            "rpc-action": ${brg-ar.allotted-resource-status.rpc-action}
+        }
+    }]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/contrail-route-allotted-resource.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/contrail-route-allotted-resource.json
new file mode 100755
index 0000000..dd3a743
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/contrail-route-allotted-resource.json
@@ -0,0 +1,102 @@
+{
+	"contrail-route-allotted-resource": [{
+		"allotted-resource-id": ${ar.allotted-resource-id},
+		"allotted-resource-data": {
+			"contrail-route-topology": {
+				"allotted-resource-identifiers": {
+					"consuming-service-instance-id": ${ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.consuming-service-instance-id},
+					"allotted-resource-name": ${ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.allotted-resource-name},
+					"allotted-resource-id": ${ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.allotted-resource-id},
+					"parent-service-instance-id": ${ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.parent-service-instance-id},
+					"allotted-resource-type": ${ar.allotted-resource-data.contrail-route-topology.allotted-resource-identifiers.allotted-resource-type}
+				},
+				"onap-model-information": {
+					"model-invariant-uuid": ${ar.allotted-resource-data.contrail-route-topology.onap-model-information.model-invariant-uuid},
+					"model-customization-uuid": ${ar.allotted-resource-data.contrail-route-topology.onap-model-information.model-customization-uuid},
+					"model-uuid": ${ar.allotted-resource-data.contrail-route-topology.onap-model-information.model-uuid},
+					"model-version": ${ar.allotted-resource-data.contrail-route-topology.onap-model-information.model-version}
+				},
+				"contrail-route-assignments": {
+					"fq-name": ${ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.fq-name},
+					"contrail-id": ${ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.contrail-id},
+					"vlan-tag": ${ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.vlan-tag},
+					"source-network": {
+						"network-id": ${ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-id},
+						"network-role": ${ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.source-network.network-role}
+					},
+					"dest-network": {
+						"network-id": ${ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-id},
+						"network-role": ${ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.dest-network.network-role}
+					},
+					"contrail-applied-service": {
+						"service-instance-id": ${ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.contrail-applied-service.service-instance-id},
+						"vnf-id": ${ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.contrail-applied-service.vnf-id},
+						"contrail-fqdn": ${ar.allotted-resource-data.contrail-route-topology.contrail-route-assignments.contrail-applied-service.contrail-fqdn}
+					}
+				},
+				"contrail-route-parameters": {
+					"param" : [
+  ${repeat:ar.allotted-resource-data.contrail-route-topology.contrail-route-parameters_length:
+    					{
+						"name": ${ar.allotted-resource-data.contrail-route-topology.contrail-route-parameters[${1}].name},
+						"value": ${ar.allotted-resource-data.contrail-route-topology.contrail-route-parameters[${1}].value}
+    					}
+   }
+					]
+				}
+			},
+			"allotted-resource-operation-information": {
+			"allotted-resource-information": {
+      				"allotted-resource-id": ${ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.allotted-resource-id},
+					"allotted-resource-type": ${ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.allotted-resource-type},
+					"parent-service-instance-id": ${ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id},
+					"onap-model-information": {
+						"model-invariant-uuid": ${ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-invariant-uuid},
+						"model-customization-uuid": ${ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-customization-uuid},
+						"model-uuid": ${ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-uuid},
+						"model-version": ${ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-version}
+      				}
+    			},
+    			"sdnc-request-header": {
+      				"svc-request-id": ${ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id},
+      				"svc-action": ${ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-action}
+    			},
+			"request-information": {
+				"request-id": ${ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-id},
+				"source": ${ar.allotted-resource-data.allotted-resource-operation-information.request-information.source},
+				"order-version": ${ar.allotted-resource-data.allotted-resource-operation-information.request-information.order-version},
+				"order-number": ${ar.allotted-resource-data.allotted-resource-operation-information.request-information.order-number},
+				"notification-url": ${ar.allotted-resource-data.allotted-resource-operation-information.request-information.notification-url},
+				"request-action": ${ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action}
+			},
+			"contrail-route-request-input": {
+				"source-network": {
+					"network-id": ${ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.source-network.network-id},
+					"network-role": ${ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.source-network.network-role}
+				},
+				"dest-network": {
+					"network-id": ${ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.dest-network.network-id},
+					"network-role": ${ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.dest-network.network-role}
+				},
+				"contrail-applied-service-info": {
+					"service-instance-id" : ${ar.allotted-resource-data.allotted-resource-operation-information.contrail-route-request-input.contrail-applied-service-info.service-instance-id}
+				}
+    			}
+			},
+			"allotted-resource-oper-status": {
+				"last-action": ${ar.allotted-resource-data.allotted-resource-oper-status.last-action},
+				"modify-timestamp": ${ar.allotted-resource-data.allotted-resource-oper-status.modify-timestamp},
+				"last-order-status": ${ar.allotted-resource-data.allotted-resource-oper-status.last-order-status},
+				"create-timestamp": ${ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp},
+				"order-status": ${ar.allotted-resource-data.allotted-resource-oper-status.order-status},
+				"last-rpc-action": ${ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action},
+				"last-svc-request-id": ${ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id}
+			}
+		},
+		"allotted-resource-status" : {
+			"action": ${ar.allotted-resource-status.action},
+			"rpc-name": ${ar.allotted-resource-status.rpc-name},
+			"rpc-action": ${ar.allotted-resource-status.rpc-action}
+		}
+	}]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/getzteodutoponodedetailstemplate.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/getzteodutoponodedetailstemplate.json
new file mode 100644
index 0000000..5d89383
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/getzteodutoponodedetailstemplate.json
@@ -0,0 +1,6 @@
+
+{
+  "input":{
+     "node-id":${prop.zte.odutopo.node.name}
+  }
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/getzteodutoponodenepdetailstemplate.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/getzteodutoponodenepdetailstemplate.json
new file mode 100644
index 0000000..7f84b6d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/getzteodutoponodenepdetailstemplate.json
@@ -0,0 +1,6 @@
+
+{
+  "input":{
+     "node-edge-point-id":${prop.zte.odutopo.node.nep.uuid}
+  }
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/getzteodutoponodetemplate.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/getzteodutoponodetemplate.json
new file mode 100644
index 0000000..d7e9cde
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/getzteodutoponodetemplate.json
@@ -0,0 +1,6 @@
+
+{
+  "input":{
+     "topology-name":${prop.zte.odutopo.name}
+  }
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/getzteodutopotemplate.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/getzteodutopotemplate.json
new file mode 100644
index 0000000..2925399
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/getzteodutopotemplate.json
@@ -0,0 +1,5 @@
+
+{
+  "input":{
+  }
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l2-dci-connects-template.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l2-dci-connects-template.json
new file mode 100644
index 0000000..f180756
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l2-dci-connects-template.json
@@ -0,0 +1,29 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : SDN-C
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+{
+  "l2-dci-connect": {
+    "id": ${prop.dci-connects.id},
+    "name": ${prop.dci-connects.name},
+    "description": ${prop.dci-connects.description},
+    "network_id": ${prop.dci-connects.local_networks[0]},
+    "evpn_irts": ${prop.dci-connects.evpn_irts},
+    "evpn_erts": ${prop.dci-connects.evpn_erts},
+    "vni": ${prop.dci-connects.vni}
+  }
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l3-dci-connects-template.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l3-dci-connects-template.json
new file mode 100644
index 0000000..c011b07
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l3-dci-connects-template.json
@@ -0,0 +1,34 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 Intel Corp. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+{
+  "l3-dci-connect": {
+    "id": ${prop.dci-connects.id},
+    "name": ${prop.dci-connects.name},
+    "description": ${prop.dci-connects.description},
+    "router_id": ${prop.dci-connects.router_id},
+    "firewall_enable": false,
+    "local_networks": ${prop.dci-connects.local_networks},
+    "local_network_all": false,
+    "evpn_irts": ${prop.dci-connects.evpn_irts},
+    "evpn_erts": ${prop.dci-connects.evpn_erts},
+    "l3_vni": ${prop.dci-connects.vni}
+  }
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l3smsitetemplate.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l3smsitetemplate.json
new file mode 100644
index 0000000..585c311
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l3smsitetemplate.json
@@ -0,0 +1,146 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * 						reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+{
+  "site":[
+  {
+  "site-id": ${prop.l3vpn.site1_name},
+  "site-name":"Site-forhuawei1",
+  "vrf-control-option": {
+    "custom-vrf": "true",
+    "vrf-definition-policy": "site-and-vpn-policy"
+  },
+  "vpn-policies": {
+    "vpn-policy": [
+      {
+        "vpn-policy-id": ${prop.l3vpn.vpn-policy1-id},
+        "vpn-policy-name": "policy-forhuawei1",
+        "entries": [
+        {
+          "id": ${prop.l3vpn.entry1-id},
+          "vpn": {
+          "vpn-id": ${prop.l3vpn.name},
+          "site-role": "huawei-ac-net-l3vpn-svc:any-to-any-role"
+          }
+        }
+        ]
+      }
+    ]
+  },
+  "site-network-accesses": {
+    "site-network-access": [
+      {
+        "site-network-access-id": ${prop.l3vpn.sna1_name},
+        "bearer": {
+          "appointed-access": {
+            "ne-id": ${prop.l3vpn.pe1_id},
+            "ltp-id": ${prop.l3vpn.ac1_id},
+            "admin-status":"admin-up",
+            "vlan": {
+              "huawei-ac-net-l3vpn-svc:type": "vlan-dot1q",
+              "vlan-id": ${prop.l3vpn.ac1_svlan},
+              "sub-if-number":"dyn-allocate"
+            }
+          }
+        },
+        "ip-connection": {
+          "ipv4": {
+            "addresses": {
+              "provider-address": ${prop.l3vpn.ac1_ip},
+              "customer-address": ${prop.l3vpn.ac1_peer_ip},
+              "mask": "30"
+            }
+          }
+        },
+        "routing-protocols": {
+          "routing-protocol": [
+            {
+              "type": ${prop.l3vpn.ac1_protocol},
+              "static": {
+                "cascaded-lan-prefixes": 
+                  {
+                    "ipv4-lan-prefixes": [
+                      {
+                        "ip-prefix": ${prop.l3vpn.sna1-route.ip-prefix},
+                        "next-hop": ${prop.l3vpn.sna1-route.next-hop},
+                        "preference":"100"
+                      }
+                    ]
+                  }
+              }
+            }
+          ]
+        },
+        "vpn-attachment": {
+          "vpn-policy-id": ${prop.l3vpn.vpn-policy1-id}
+        }
+      },
+      {
+  "site-network-access-id": ${prop.l3vpn.sna2_name},
+  "bearer": {
+    "appointed-access": {
+      "ne-id": ${prop.l3vpn.pe2_id},
+      "ltp-id": ${prop.l3vpn.ac2_id},
+      "admin-status": "admin-up",
+      "vlan": {
+        "huawei-ac-net-l3vpn-svc:type": "vlan-dot1q",
+        "vlan-id": ${prop.l3vpn.ac2_svlan},
+        "sub-if-number": "dyn-allocate"
+      }
+    }
+  },
+  "ip-connection": {
+    "ipv4": {
+      "addresses": {
+        "provider-address": ${prop.l3vpn.ac2_ip},
+        "customer-address": ${prop.l3vpn.ac2_peer_ip},
+        "mask": "30"
+      }
+    }
+  },
+  "routing-protocols": {
+    "routing-protocol": [
+      {
+        "huawei-ac-net-l3vpn-svc:type": ${prop.l3vpn.ac2_protocol},
+        "static": {
+          "cascaded-lan-prefixes": {
+            "ipv4-lan-prefixes": [
+              {
+                "ip-prefix": ${prop.l3vpn.sna2-route.ip-prefix},
+                "next-hop": ${prop.l3vpn.sna2-route.next-hop},
+                "preference": "100"
+              }
+            ]
+          }
+        }
+      }
+    ]
+  },
+  "vpn-attachment": {
+    "vpn-policy-id": ${prop.l3vpn.vpn-policy1-id}
+  }
+}
+]
+}
+  }
+ ]
+}
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l3smvpntemplate.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l3smvpntemplate.json
new file mode 100644
index 0000000..fa940a4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l3smvpntemplate.json
@@ -0,0 +1,32 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * 						reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+{
+  "vpn-service": [
+    {
+      "vpn-id": ${prop.l3vpn.name},
+      "customer-name": "huawei",
+      "vpn-service-topology": ${prop.l3vpn.topology},
+      "route-exchange-policy": "vpnv4-way",
+      "address-family":"ipv4", 
+    }
+  ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l3smvrftemplate.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l3smvrftemplate.json
new file mode 100644
index 0000000..1957135
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/l3smvrftemplate.json
@@ -0,0 +1,115 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : SDN-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * 						reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+{
+  "huawei-ac-net-l3vpn-svc-vfi:vrf-attributes": {
+    "vrf-attribute": [
+        {
+            "vrf-attribute-id": ${prop.l3vpn.vrf1-id},
+            "ne-id": ${prop.l3vpn.pe1_id},
+            "vpn-policy-id": ${prop.l3vpn.vpn-policy1-id},
+            "site-id": ${prop.l3vpn.site1_name},
+          "address-families": {
+    "address-family": [
+      {
+        "af-type": "ipv4",
+        "tunnel-service": {
+          "type": "huawei-ac-net-l3vpn-svc-vfi:auto-select",
+          "auto-select": {
+            "select-tunnels": {
+              "select-tunnel": {
+                "type": "ldp",
+                "priority": 3
+              }
+            }
+          }
+        },
+        "access-protocols": {
+          "protocol": {
+            "type": "huawei-ac-net-l3vpn-svc:bgp",
+            "bgp": {
+              "import-routes": {
+                "import-route": [{
+                  "type": "huawei-ac-net-l3vpn-svc:static",
+                  "policy-type": "none"
+                },
+                {
+                  "type": "huawei-ac-net-l3vpn-svc:direct",
+                  "policy-type": "none"
+                }
+                ]
+              }
+            }
+          }
+        },
+        "popgo": true
+      }
+    ]
+  }
+        },
+        {
+            "vrf-attribute-id": ${prop.l3vpn.vrf2-id},
+            "ne-id": ${prop.l3vpn.pe2_id},
+            "vpn-policy-id": ${prop.l3vpn.vpn-policy1-id},
+            "site-id": ${prop.l3vpn.site1_name},
+              "address-families": {
+    "address-family": [
+      {
+        "af-type": "ipv4",
+        "tunnel-service": {
+          "type": "huawei-ac-net-l3vpn-svc-vfi:auto-select",
+          "auto-select": {
+            "select-tunnels": {
+              "select-tunnel": [
+                {
+                  "type": "ldp",
+                  "priority": 3
+                }
+              ]
+            }
+          }
+        },
+        "access-protocols": {
+          "protocol": {
+            "type": "huawei-ac-net-l3vpn-svc:bgp",
+            "bgp": {
+              "import-routes": {
+                "import-route": [{
+                  "type": "huawei-ac-net-l3vpn-svc:static",
+                  "policy-type": "none"
+                },
+                {
+                  "type": "huawei-ac-net-l3vpn-svc:direct",
+                  "policy-type": "none"
+                }
+                ]
+              }
+            }
+          }
+        },
+        "popgo": true
+      }
+    ]
+  }
+        }
+    ]
+  }
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/lcm-dmaap-publish-template.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/lcm-dmaap-publish-template.json
new file mode 100644
index 0000000..67d8b1d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/lcm-dmaap-publish-template.json
@@ -0,0 +1,28 @@
+{
+    "version": ${lcm-dmaap.version},
+    "cambria.partition": ${lcm-dmaap.partition},
+    "correlation-id": ${lcm-dmaap.correlation-id},
+    "rpc-name": ${lcm-dmaap.rpc-name},
+    "type": ${lcm-dmaap.type},
+    "body": {
+        "output": {
+            "common-header": {
+                "api-ver": ${lcm-dmaap.api-ver},
+                "flags": {
+                    "ttl": ${lcm-dmaap.flags.ttl},
+                    "force": ${lcm-dmaap.flags.force},
+                    "mode": ${lcm-dmaap.flags.mode}
+                },
+                "originator-id": ${lcm-dmaap.originator-id},
+                "request-id": ${lcm-dmaap.request-id},
+                "sub-request-id": ${lcm-dmaap.sub-request-id},
+                "timestamp": ${lcm-dmaap.timestamp}
+            },
+            "payload": ${lcm-dmaap.payload},
+            "status": {
+                "code": ${lcm-dmaap.status.code},
+                "message": ${lcm-dmaap.status.message}
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/lcm-restconf-configscaleout.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/lcm-restconf-configscaleout.json
new file mode 100755
index 0000000..63285f9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/lcm-restconf-configscaleout.json
@@ -0,0 +1,5 @@
+{
+   "vdns-instance": [
+        ${payloadJson.configuration-parameters}
+   ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/naming-ms-post-gen-name.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/naming-ms-post-gen-name.json
new file mode 100644
index 0000000..1887aed
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/naming-ms-post-gen-name.json
@@ -0,0 +1,13 @@
+{
+     "elements": [
+   ${repeat:tmp.gen-name_length:
+         {
+            ${repeat:tmp.gen-name[${1}].element_length:
+                        ${tmp.gen-name[${1}].element[${2}].name}: ${tmp.gen-name[${1}].element[${2}].value}
+                ,
+         },
+   },
+        }
+
+     ]
+ }
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/network-provided-allotted-resources.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/network-provided-allotted-resources.json
new file mode 100755
index 0000000..663eba4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/network-provided-allotted-resources.json
@@ -0,0 +1,10 @@
+{
+	network-provided-allotted-resources: 
+	{
+		"network-provided-ar-id": [
+			${repeat:net-ar.network-provided-allotted-resources.network-provided-ar-id_length:
+			${net-ar.network-provided-allotted-resources.network-provided-ar-id[${1}]},
+			}
+		]
+	}
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/oof-getpath.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/oof-getpath.json
new file mode 100644
index 0000000..feab0bc
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/oof-getpath.json
@@ -0,0 +1,17 @@
+{
+    "srcPort": {
+        "src-access-topology-id": ${prop.connection-attachment.access-topology-id},
+        "src-access-client-id": ${prop.connection-attachment.access-client-id},
+        "src-access-provider-id": ${prop.connection-attachment.access-provider-id},
+        "src-access-node-id": ${prop.connection-attachment.access-node-id},
+        "src-access-ltp-id": ${prop.connection-attachment.access-ltp-id}
+    },
+    "dstPort": {
+        "dst-access-topology-id": ${prop.remote.connection-attachment.access-topology-id},
+        "dst-access-client-id": ${prop.remote.connection-attachment.access-client-id},
+        "dst-access-provider-id": ${prop.remote.connection-attachment.access-provider-id},
+        "dst-access-node-id": ${prop.remote.connection-attachment.access-node-id},
+        "dst-access-ltp-id": ${prop.remote.connection-attachment.access-ltp-id}
+    }
+}
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/parent-provided-allotted-resource.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/parent-provided-allotted-resource.json
new file mode 100755
index 0000000..e6daf0b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/parent-provided-allotted-resource.json
@@ -0,0 +1,9 @@
+{
+  "provided-allotted-resource": [
+    {
+      "allotted-resource-id": ${tmp.ar.allotted-resource-id},
+      "allotted-resource-pointer": ${tmp.ar.self-link},
+      "allotted-resource-type": ${tmp.ar.allotted-resource-type}
+    }
+  ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-bridge-domain-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-bridge-domain-del.json
new file mode 100644
index 0000000..99d66e3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-bridge-domain-del.json
@@ -0,0 +1,7 @@
+{
+  "bridgeDomains": [
+    {
+      "id": ${prop.lan.bridgeDomainId},
+    }
+  ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-bridge-domain.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-bridge-domain.json
new file mode 100644
index 0000000..1d0f8bd
--- /dev/null
+++ b/sdnc-a1-controller/oam/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/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets-del.json
new file mode 100644
index 0000000..a1c74f8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets-del.json
@@ -0,0 +1,13 @@
+{
+
+    "IPSubnets": [
+
+        {
+
+            "id": ${prop.lan.lanPortId},
+
+        }
+
+    ]
+
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets.json
new file mode 100644
index 0000000..504be83
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets.json
@@ -0,0 +1,37 @@
+{
+  "IPSubnets":[
+  {
+    "vpnId": ${prop.vpnId},
+    "siteId": ${prop.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/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-port-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-port-del.json
new file mode 100644
index 0000000..953a9fd
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-port-del.json
@@ -0,0 +1,7 @@
+{
+    "ports": [
+        {
+            "id": ${prop.lan.devicePortId},
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-port.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdlan-port.json
new file mode 100644
index 0000000..a499d9a
--- /dev/null
+++ b/sdnc-a1-controller/oam/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
+                 }
+            }
+        }
+    ]
+}
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-attachment-allotted-resource.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-attachment-allotted-resource.json
new file mode 100644
index 0000000..8cbf39d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-attachment-allotted-resource.json
@@ -0,0 +1,100 @@
+{
+    "connection-attachment-allotted-resource": [{
+        "allotted-resource-id": ${connection-attachment-ar.allotted-resource-id},
+        "allotted-resource-data": {
+            "allotted-resource-operation-information": {
+                "allotted-resource-information": {
+                    "allotted-resource-id": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.allotted-resource-id},
+                    "allotted-resource-type": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.allotted-resource-type},
+                    "parent-service-instance-id": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id},
+                    "onap-model-information": {
+                        "model-invariant-uuid": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-invariant-uuid},
+                        "model-customization-uuid": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-customization-uuid},
+                        "model-uuid": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-uuid},
+                        "model-version": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-version}
+                    }
+                },
+                "sdnc-request-header": {
+                    "svc-request-id": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id},
+                    "svc-action": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-action}
+                },
+                "request-information": {
+                    "request-id": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-id},
+                    "source": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.source},
+                    "order-version": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.order-version},
+                    "order-number": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.order-number},
+                    "notification-url": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.notification-url},
+                    "request-action": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action}
+                },
+                "connection-attachment-request-input": {
+                    "param": [
+                        {
+                            "name": "sdwanVpnName",
+                            "value": ${prop.connection-attachment.sdwanVpnName}
+                        },
+                        {
+                            "name": "role",
+                            "value": ${prop.connection-attachment.role}
+                        }
+                    ]
+                }
+            },
+            "connection-attachment-topology": {
+                "allotted-resource-identifiers": {
+                    "consuming-service-instance-id": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id},
+                    "allotted-resource-name": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.allotted-resource-name},
+                    "allotted-resource-id": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.allotted-resource-id},
+                    "parent-service-instance-id": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.parent-service-instance-id},
+                    "allotted-resource-type": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.allotted-resource-type}
+                },
+                "onap-model-information": {
+                    "model-invariant-uuid": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.model-uuid},
+                    "model-version": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.model-version}
+                },
+                "connection-attachment-parameters": {
+                    "param": [
+                        {
+                            "name": "sdwanVpnName",
+                            "value": ${prop.connection-attachment.sdwanVpnName}
+                        },
+                        {
+                            "name": "role",
+                            "value": ${prop.connection-attachment.role}
+                        }
+                    ]
+                }
+            },
+            "connection-attachment-parameters": {
+                "param": [
+                    {
+                        "name": "sdwanVpnName",
+                        "value": ${prop.connection-attachment.sdwanVpnName}
+                    },
+                    {
+                        "name": "role",
+                        "value": ${prop.connection-attachment.role}
+                    }
+                ]
+            },
+            "allotted-resource-oper-status": {
+                "last-action": ${connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action},
+                "modify-timestamp": ${connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.modify-timestamp},
+                "last-order-status": ${connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-order-status},
+                "create-timestamp": ${connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp},
+                "order-status": ${connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status},
+                "last-rpc-action": ${connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action},
+                "last-svc-request-id": ${connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id}
+            },
+        },
+        "allotted-resource-status" : {
+            "action": ${connection-attachment-ar.allotted-resource-status.action},
+            "rpc-name": ${connection-attachment-ar.allotted-resource-status.rpc-name},
+            "rpc-action": ${connection-attachment-ar.allotted-resource-status.rpc-action}
+        }
+    }]
+}
+
+
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device-del.json
new file mode 100644
index 0000000..efe5fdd
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device-del.json
@@ -0,0 +1,7 @@
+{
+    "deviceIds": [${repeat:prop.devices_length:
+                                ${prop.devices[${1}]},
+                                }
+                             ]
+}
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device-port-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device-port-del.json
new file mode 100644
index 0000000..e801839
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device-port-del.json
@@ -0,0 +1,7 @@
+{
+    "ports": [
+        {
+            "id": ${prop.wan.devicePortId},            
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device-zte-add.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device-zte-add.json
new file mode 100644
index 0000000..53dfc86
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device-zte-add.json
@@ -0,0 +1,13 @@
+{
+    "devices": [
+        {
+            "esn": ${prop.device.esn},
+            "deviceModel": ${prop.device.deviceModel},
+            "name": ${prop.device.name},
+            "siteId": null,
+            "description": ${prop.device.description},
+            "systemIp": ${prop.device.systemIP},
+            "tags": null
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device-zte-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device-zte-del.json
new file mode 100644
index 0000000..efe5fdd
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device-zte-del.json
@@ -0,0 +1,7 @@
+{
+    "deviceIds": [${repeat:prop.devices_length:
+                                ${prop.devices[${1}]},
+                                }
+                             ]
+}
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device.json
new file mode 100644
index 0000000..53dfc86
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-device.json
@@ -0,0 +1,13 @@
+{
+    "devices": [
+        {
+            "esn": ${prop.device.esn},
+            "deviceModel": ${prop.device.deviceModel},
+            "name": ${prop.device.name},
+            "siteId": null,
+            "description": ${prop.device.description},
+            "systemIp": ${prop.device.systemIP},
+            "tags": null
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-inter-connect-zte-create.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-inter-connect-zte-create.json
new file mode 100644
index 0000000..d6814d5
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-inter-connect-zte-create.json
@@ -0,0 +1,9 @@
+{
+    "vpns": [
+        {
+            "name": ${prop.name},
+            "id": ${prop.vpn1Id}
+        }
+    ]
+}
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-inter-connect-zte-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-inter-connect-zte-del.json
new file mode 100644
index 0000000..11412b4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-inter-connect-zte-del.json
@@ -0,0 +1,13 @@
+{
+    "vpns": [
+        {
+            "name": ${prop.name},
+            "id": ${prop.vpn1Id},
+            "siteIds": [
+                ${repeat:prop.siteIds_length:
+                 ${prop.siteIds[${1}]},
+                 }
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-network-orchestration.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-network-orchestration.json
new file mode 100644
index 0000000..e2b9903
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-network-orchestration.json
@@ -0,0 +1,25 @@
+{
+    "bgpAsNum": 65101,
+    "vpnType": "dsvpn",
+    "siteScale":"30",
+    "dsvpnIPpool": ["100.1.0.0/16"],
+    "innerTunnelIPpool": [
+      "101.1.0.0/16"
+    ],
+    "interConnectIPpool": "102.1.0.0/16",
+    "transportNetworks": [
+      {
+        "name": "net001",
+        "routingDomain": "routing001",
+        "description": "string"
+      }
+    ],
+    "routingDomain":[{
+    	"name": "routing001",
+    	"ipsecEncryption":false
+    }],
+    "ipsecEncryptionParameter": {
+      "encrptionAlgorithm":"AES128",
+      "preSharedKey": "Admin@12134=========================================="
+    }
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port-cellular.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port-cellular.json
new file mode 100644
index 0000000..b274c1b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port-cellular.json
@@ -0,0 +1,18 @@
+{
+    "ports": [
+        {
+            "portType": ${prop.wan.portType},
+            "portNumber": ${prop.wan.portNumber},
+            "deviceId": ${prop.wan.deviceId},
+            "portSwitch": "layer3-port",
+            "linkInfo": {
+                 "linkType": "Cellular",
+                 "cellular": {
+                     "apn" : ${prop.wan.apn-name}
+                 },
+                 "atm": null,
+                 "ethernet": null                 
+            }
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port-ethernet.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port-ethernet.json
new file mode 100644
index 0000000..d24cf4f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port-ethernet.json
@@ -0,0 +1,21 @@
+{
+    "ports": [
+        {
+            "portType": ${prop.wan.portType},
+            "portNumber": ${prop.wan.portNumber},
+            "deviceId": ${prop.wan.deviceId},
+            "portSwitch": "layer3-port",
+            "linkInfo": {
+                 "linkType": "Ethernet",
+                 "cellular": null,
+                 "atm": null,
+                 "ethernet": {
+                      "negotiationMode": "auto",
+                      "media": "copper",
+                      "duplex": "half",
+                      "speed": 10
+                 }
+            }
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port-zte-add.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port-zte-add.json
new file mode 100644
index 0000000..8d93758
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port-zte-add.json
@@ -0,0 +1,16 @@
+{
+    "ports": [
+        {
+            "portType": ${prop.wan.portType},
+            "portNumber": ${prop.wan.portNumber},
+            "deviceId": ${prop.wan.deviceId},
+            "portSwitch": "layer3-port",
+            "linkInfo": {
+                 "linkType": "Ethernet",
+                 "ethernet": {
+                      "negotiationMode": "auto"
+                 }
+            }
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port-zte-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port-zte-del.json
new file mode 100644
index 0000000..e801839
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port-zte-del.json
@@ -0,0 +1,7 @@
+{
+    "ports": [
+        {
+            "id": ${prop.wan.devicePortId},            
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port.json
new file mode 100644
index 0000000..8d93758
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-port.json
@@ -0,0 +1,16 @@
+{
+    "ports": [
+        {
+            "portType": ${prop.wan.portType},
+            "portNumber": ${prop.wan.portNumber},
+            "deviceId": ${prop.wan.deviceId},
+            "portSwitch": "layer3-port",
+            "linkInfo": {
+                 "linkType": "Ethernet",
+                 "ethernet": {
+                      "negotiationMode": "auto"
+                 }
+            }
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-del.json
new file mode 100644
index 0000000..daa6a33
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-del.json
@@ -0,0 +1,9 @@
+{
+    "sites": [
+        {
+            "id": ${prop.site.siteId}            
+        }
+    ]
+}
+
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-ha-zte-add.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-ha-zte-add.json
new file mode 100644
index 0000000..a871f11
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-ha-zte-add.json
@@ -0,0 +1,25 @@
+{
+    "bpgAsNum": 65101,
+    "vpnType": "dsvpn",
+    "siteScale":"30",
+    "dsvpnIPpool": ["100.1.0.0/16"],
+    "innerTunnelIPpool": [
+      "101.1.0.0/16"
+    ],
+    "interConnectIPpool": "102.1.0.0/16",
+    "transportNetworks": [
+      {
+        "name": "net001",
+        "routingDomain": "routing001",
+        "description": "string"
+      }
+    ],
+    "routingDomain":[{
+    	"name": "routing001",
+    	"ipsecEncryption":false
+    }],
+    "ipsecEncryptionParameter": {
+      "encrptionAlgorithm":"AES128",
+      "preSharedKey": "Admin@12134=========================================="
+    }
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-ha-zte-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-ha-zte-del.json
new file mode 100644
index 0000000..a871f11
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-ha-zte-del.json
@@ -0,0 +1,25 @@
+{
+    "bpgAsNum": 65101,
+    "vpnType": "dsvpn",
+    "siteScale":"30",
+    "dsvpnIPpool": ["100.1.0.0/16"],
+    "innerTunnelIPpool": [
+      "101.1.0.0/16"
+    ],
+    "interConnectIPpool": "102.1.0.0/16",
+    "transportNetworks": [
+      {
+        "name": "net001",
+        "routingDomain": "routing001",
+        "description": "string"
+      }
+    ],
+    "routingDomain":[{
+    	"name": "routing001",
+    	"ipsecEncryption":false
+    }],
+    "ipsecEncryptionParameter": {
+      "encrptionAlgorithm":"AES128",
+      "preSharedKey": "Admin@12134=========================================="
+    }
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-hub.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-hub.json
new file mode 100644
index 0000000..1dcedd9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-hub.json
@@ -0,0 +1,30 @@
+{
+    "sites": [
+        {            
+            "name": ${prop.site.name},
+            "locations": [
+                {
+                     "name": ${prop.site.location-name},
+                     "address": ${prop.site.location-address},
+                     "postcode": ${prop.site.location-postcode}
+                }
+            ],
+           "devices": [${repeat:prop.site.deviceId_length:
+                  {
+                      "deviceId": ${prop.site.deviceId[${1}]},
+                      "locationName": ${prop.site.location-name},
+                  },
+                }
+           ],
+            "siteType": ${prop.site.type},
+            "role": [${repeat:prop.site.roles_length:
+                       ${prop.site.roles[${1}]},
+                      }
+                    ],               
+            "controlPoints": [],            
+            "description": "--------role:dsvpn-hub---------------"
+        }
+    ]
+}
+
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-lan-zte-add.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-lan-zte-add.json
new file mode 100644
index 0000000..93b68f7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-lan-zte-add.json
@@ -0,0 +1,7 @@
+{
+    "vpns": [
+        {
+            "id": ${prop.vpn-id}
+        }
+    ]
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-lan-zte-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-lan-zte-del.json
new file mode 100644
index 0000000..93b68f7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-lan-zte-del.json
@@ -0,0 +1,7 @@
+{
+    "vpns": [
+        {
+            "id": ${prop.vpn-id}
+        }
+    ]
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-provision.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-provision.json
new file mode 100644
index 0000000..238fa46
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-provision.json
@@ -0,0 +1,9 @@
+{
+    "siteIds": [${repeat:prop.provision.hubspokesite_length:
+        ${prop.provision.hubspokesite[${1}]},
+     }
+    ],
+    "encryptionKey":null,
+    "validityPeriod":3
+}
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-spoke.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-spoke.json
new file mode 100644
index 0000000..1e50e76
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-spoke.json
@@ -0,0 +1,34 @@
+{
+    "sites": [
+        {
+            "id": "",
+            "name": ${prop.site.name},
+            "locations": [
+                {
+                     "name": ${prop.site.location-name},
+                     "address": ${prop.site.location-address},
+                     "postcode": ${prop.site.location-postcode}
+                }
+            ],
+           "devices": [${repeat:prop.site.deviceId_length:
+                  {
+                      "deviceId": ${prop.site.deviceId[${1}]},
+                      "locationName": ${prop.site.location-name},
+                  },
+                }
+           ],
+            "siteType": ${prop.site.type},
+            "role": [${repeat:prop.site.roles_length:
+                       ${prop.site.roles[${1}]},
+                      }
+                    ],               
+            "controlPoints": [${repeat:prop.site.controlpoints_length:
+                                ${prop.site.controlpoints[${1}]},
+                                }
+                             ],            
+            "description": "--------role:dsvpn-hub---------------"
+        }
+    ]
+}
+
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-wan-zte-add.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-wan-zte-add.json
new file mode 100644
index 0000000..55e603e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-wan-zte-add.json
@@ -0,0 +1,45 @@
+{
+    "tnps": [
+        {
+            "name": ${prop.wan.name},
+            "siteId": ${prop.wan.siteId},
+            "deviceId": ${prop.wan.deviceId},
+            "portId": ${prop.wan.devicePortId},
+            "inSubInterface": false,
+            "vlanId": "null",            
+            "ipConnection": {
+                "ipv4": {
+                    "publicIP": ${prop.wan.ip-address},
+                    "accessType": "IPoE",
+                    "ipMode": "Static",
+                    "customerAddress": ${prop.wan.ip-address},
+                    "prefixLength": ${prop.wan.prefixLength},
+                    "providerAddress": ${prop.wan.providerIpAddress},
+					"peerIp": "null",
+                    "userName": "null",
+                    "userKey": "null"
+                }
+             },
+             "transportNetworkInfo": {
+                 "transportNetworkId": ${prop.wan.transportNetworkId},
+                 "workMode": "active"
+             },
+            "attributes": {
+                "inputBandwidth": ${prop.wan.inputBandwidth},
+                "outputBandwidth": ${prop.wan.outputBandwidth},
+                "mtu": 1500,
+                "TCPmss": 1200
+            },
+			"ntp": [
+              {
+                "serverIP": "11.11.11.11",
+                "authentication": false,
+                "mode": "MD5",
+                "authKey": "123456",
+                "authId": 123
+              }
+            ],
+            "description": ${prop.wan.description}
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-wan-zte-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-wan-zte-del.json
new file mode 100644
index 0000000..bdd2216
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-wan-zte-del.json
@@ -0,0 +1,7 @@
+{
+    "tnps": [
+        {
+            "id": ${prop.wan.wanPortId},            
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-zte-add.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-zte-add.json
new file mode 100644
index 0000000..1e50e76
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-zte-add.json
@@ -0,0 +1,34 @@
+{
+    "sites": [
+        {
+            "id": "",
+            "name": ${prop.site.name},
+            "locations": [
+                {
+                     "name": ${prop.site.location-name},
+                     "address": ${prop.site.location-address},
+                     "postcode": ${prop.site.location-postcode}
+                }
+            ],
+           "devices": [${repeat:prop.site.deviceId_length:
+                  {
+                      "deviceId": ${prop.site.deviceId[${1}]},
+                      "locationName": ${prop.site.location-name},
+                  },
+                }
+           ],
+            "siteType": ${prop.site.type},
+            "role": [${repeat:prop.site.roles_length:
+                       ${prop.site.roles[${1}]},
+                      }
+                    ],               
+            "controlPoints": [${repeat:prop.site.controlpoints_length:
+                                ${prop.site.controlpoints[${1}]},
+                                }
+                             ],            
+            "description": "--------role:dsvpn-hub---------------"
+        }
+    ]
+}
+
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-zte-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-zte-del.json
new file mode 100644
index 0000000..daa6a33
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-site-zte-del.json
@@ -0,0 +1,9 @@
+{
+    "sites": [
+        {
+            "id": ${prop.site.siteId}            
+        }
+    ]
+}
+
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-tenant-zte-add.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-tenant-zte-add.json
new file mode 100644
index 0000000..ed6161b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-tenant-zte-add.json
@@ -0,0 +1,17 @@
+{
+    "routes": [
+        {
+            "id": ${prop.route.id},
+            "vpnId": ${prop.vpnId},
+            "siteId": ${prop.route.siteId},
+            "deviceId": ${prop.route.deviceId}, 
+            "destinationAddressMask": ${prop.route.providerIpAddress},			
+            "priority": 60,            
+            "nextHopType": "ip-address",
+            "ipAddress": ${prop.route.ipAddress},
+            "track": false,
+            "target": null
+        }
+    ]
+}
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-tenant-zte-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-tenant-zte-del.json
new file mode 100644
index 0000000..6161b1b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-tenant-zte-del.json
@@ -0,0 +1,13 @@
+{
+    "tenantName": ${prop.customer-id},
+    "tenantEmail": ${prop.userEmail},
+    "tenantPhone": "8888888888",
+    "tenantDescription": "This is a test tenant created by ONAP",
+    "tenantAddress": "Road123",
+    "limitAccountNum": 1000,
+    "userAccount": ${prop.userAccount},
+    "userEmail": ${prop.userEmail},
+    "sendInitEmailEnable": "true",
+    "countryCode": "CN",
+    "userPassword": "Test@12345"
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-tenant.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-tenant.json
new file mode 100644
index 0000000..5f85aa2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-tenant.json
@@ -0,0 +1,13 @@
+{
+    "tenantName": ${prop.customer-id},
+    "tenantEmail": ${prop.userEmail},
+    "tenantPhone": "8888888888",
+    "tenantDescription": "This is a test tenant created by ONAP",
+    "tenantAddress": "Road123",
+    "limitAccountNum": 1000,
+    "userAccount": ${prop.userAccount},
+    "userEmail": ${prop.userEmail},
+    "sendInitEmailEnable": "false",
+    "countryCode": "CN",
+    "userPassword": "Test@12345"
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-underlay.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-underlay.json
new file mode 100644
index 0000000..ed6161b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-underlay.json
@@ -0,0 +1,17 @@
+{
+    "routes": [
+        {
+            "id": ${prop.route.id},
+            "vpnId": ${prop.vpnId},
+            "siteId": ${prop.route.siteId},
+            "deviceId": ${prop.route.deviceId}, 
+            "destinationAddressMask": ${prop.route.providerIpAddress},			
+            "priority": 60,            
+            "nextHopType": "ip-address",
+            "ipAddress": ${prop.route.ipAddress},
+            "track": false,
+            "target": null
+        }
+    ]
+}
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn-create.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn-create.json
new file mode 100644
index 0000000..d6814d5
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn-create.json
@@ -0,0 +1,9 @@
+{
+    "vpns": [
+        {
+            "name": ${prop.name},
+            "id": ${prop.vpn1Id}
+        }
+    ]
+}
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn-delete.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn-delete.json
new file mode 100644
index 0000000..93b68f7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn-delete.json
@@ -0,0 +1,7 @@
+{
+    "vpns": [
+        {
+            "id": ${prop.vpn-id}
+        }
+    ]
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn-topology-create.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn-topology-create.json
new file mode 100644
index 0000000..713ef75
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn-topology-create.json
@@ -0,0 +1,11 @@
+{
+    "vpnId": ${prop.vpn1Id},
+    "areas": [
+        {
+            "name": "area1",
+            "areaType": "backbone",
+            "topologyType": ${prop.topology}
+        }
+    ]
+}
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn-topology.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn-topology.json
new file mode 100644
index 0000000..89da9a2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn-topology.json
@@ -0,0 +1,22 @@
+{
+    "vpnId": ${prop.vpn1Id},
+    "areas": [
+        {
+            "name": "area1",
+            "areaType": "backbone",
+            "topologyType": ${prop.topology},
+            "siteAttachments": [${repeat:prop.siteAttachements_length:
+                    {"siteId": ${prop.siteAttachements[${1}].siteId},
+                     "role": [${repeat:prop.siteAttachements[${1}].roles_length:
+                               ${prop.siteAttachements[${1}].roles[${2}]},
+                                }
+                               ],
+                     "workMode": "with-interconnection",
+                     "sitePriority": "active",
+                     "borders": null
+                    },
+                 }
+            ]
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn.json
new file mode 100644
index 0000000..f1192a2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-vpn.json
@@ -0,0 +1,13 @@
+{
+    "vpns": [
+        {
+            "name": ${prop.name},
+            "id": ${prop.vpnId},
+            "siteIds": [
+                ${repeat:prop.siteIds_length:
+                 ${prop.siteIds[${1}]},
+                 }
+            ]
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-wan-port-del.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-wan-port-del.json
new file mode 100644
index 0000000..bdd2216
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-wan-port-del.json
@@ -0,0 +1,7 @@
+{
+    "tnps": [
+        {
+            "id": ${prop.wan.wanPortId},            
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-wan-port-dhcp.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-wan-port-dhcp.json
new file mode 100644
index 0000000..3f07b60
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-wan-port-dhcp.json
@@ -0,0 +1,45 @@
+{
+    "tnps": [
+        {
+            "name": ${prop.wan.name},
+            "siteId": ${prop.wan.siteId},
+            "deviceId": ${prop.wan.deviceId},
+            "portId": ${prop.wan.devicePortId},
+            "inSubInterface": false,
+            "vlanId": "null",            
+            "ipConnection": {
+                "ipv4": {
+                    "publicIP": ${prop.wan.ipAddress},
+                    "accessType": "IPoE",
+                    "ipMode": "DHCP",
+                    "customerAddress": "",
+                    "prefixLength": null,
+                    "providerAddress": "",
+                    "peerIp": null,
+                    "userName": null,
+                    "userKey": null
+                }
+             },
+             "transportNetworkInfo": {
+                 "transportNetworkId": ${prop.wan.transportNetworkId},
+                 "workMode": "active"
+             },
+            "attributes": {
+                "inputBandwidth": ${prop.wan.inputBandwidth},
+                "outputBandwidth": ${prop.wan.outputBandwidth},
+                "mtu": 1500,
+                "TCPmss": 1200
+            },
+			"ntp": [
+              {
+                "serverIP": "11.11.11.11",
+                "authentication": false,
+                "mode": "MD5",
+                "authKey": "123456",
+                "authId": 123
+              }
+            ],
+            "description": ${prop.wan.description}
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-wan-port-static.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-wan-port-static.json
new file mode 100644
index 0000000..fff33cc
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-wan-port-static.json
@@ -0,0 +1,43 @@
+{
+    "tnps": [
+        {
+            "id": ${prop.wan.wanPortId},
+            "name": ${prop.wan.name},
+            "siteId": ${prop.wan.siteId},
+            "deviceId": ${prop.wan.deviceId},
+            "portId": ${prop.wan.devicePortId},
+            "inSubInterface": false,
+            "vlanId": "null",            
+            "ipConnection": {
+                "ipv4": {
+                    "publicIP": ${prop.wan.ip-address},
+                    "accessType": "IPoE",
+                    "ipMode": "Static",
+                    "customerAddress": ${prop.wan.ip-address},
+                    "prefixLength": ${prop.wan.prefixLength},
+                    "providerAddress": ${prop.wan.providerIpAddress},
+		    "peerIp": null,
+                    "userName": null,
+                    "userKey": null
+                }
+             },
+            "attributes": {
+                "inputBandwidth": ${prop.wan.inputBandwidth},
+                "outputBandwidth": ${prop.wan.outputBandwidth},
+                "mtu": 1500,
+                "TCPmss": 1200
+            },
+			"ntp": [
+              {
+                "serverIP": "11.11.11.11",
+                "authentication": false,
+                "mode": "MD5",
+                "authKey": "123456",
+                "authId": 123
+              }
+            ],
+            "description": ${prop.wan.description}
+        }
+    ]
+}
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-wan-port.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-wan-port.json
new file mode 100644
index 0000000..55e603e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sdwan-wan-port.json
@@ -0,0 +1,45 @@
+{
+    "tnps": [
+        {
+            "name": ${prop.wan.name},
+            "siteId": ${prop.wan.siteId},
+            "deviceId": ${prop.wan.deviceId},
+            "portId": ${prop.wan.devicePortId},
+            "inSubInterface": false,
+            "vlanId": "null",            
+            "ipConnection": {
+                "ipv4": {
+                    "publicIP": ${prop.wan.ip-address},
+                    "accessType": "IPoE",
+                    "ipMode": "Static",
+                    "customerAddress": ${prop.wan.ip-address},
+                    "prefixLength": ${prop.wan.prefixLength},
+                    "providerAddress": ${prop.wan.providerIpAddress},
+					"peerIp": "null",
+                    "userName": "null",
+                    "userKey": "null"
+                }
+             },
+             "transportNetworkInfo": {
+                 "transportNetworkId": ${prop.wan.transportNetworkId},
+                 "workMode": "active"
+             },
+            "attributes": {
+                "inputBandwidth": ${prop.wan.inputBandwidth},
+                "outputBandwidth": ${prop.wan.outputBandwidth},
+                "mtu": 1500,
+                "TCPmss": 1200
+            },
+			"ntp": [
+              {
+                "serverIP": "11.11.11.11",
+                "authentication": false,
+                "mode": "MD5",
+                "authKey": "123456",
+                "authId": 123
+              }
+            ],
+            "description": ${prop.wan.description}
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/security-zone-allotted-resource.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/security-zone-allotted-resource.json
new file mode 100755
index 0000000..71b8503
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/security-zone-allotted-resource.json
@@ -0,0 +1,78 @@
+{
+	"security-zone-allotted-resource": [{
+		"allotted-resource-id": ${sz-ar.allotted-resource-id},
+		"allotted-resource-data": {
+			"security-zone-topology": {
+				"allotted-resource-identifiers": {
+					"consuming-service-instance-id": ${sz-ar.allotted-resource-data.security-zone-topology.allotted-resource-identifiers.consuming-service-instance-id},
+					"allotted-resource-name": ${sz-ar.allotted-resource-data.security-zone-topology.allotted-resource-identifiers.allotted-resource-name},
+					"allotted-resource-id": ${sz-ar.allotted-resource-data.security-zone-topology.allotted-resource-identifiers.allotted-resource-id},
+					"parent-service-instance-id": ${sz-ar.allotted-resource-data.security-zone-topology.allotted-resource-identifiers.parent-service-instance-id},
+					"allotted-resource-type": ${sz-ar.allotted-resource-data.security-zone-topology.allotted-resource-identifiers.allotted-resource-type}
+				},
+				"onap-model-information": {
+					"model-invariant-uuid": ${sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.model-invariant-uuid},
+					"model-customization-uuid": ${sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.model-customization-uuid},
+					"model-uuid": ${sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.model-uuid},
+					"model-version": ${sz-ar.allotted-resource-data.security-zone-topology.onap-model-information.model-version}
+				},
+				"security-zone-assignments": {
+					"trusted-network-role": ${sz-ar.allotted-resource-data.security-zone-topology.security-zone-assignments.trusted-network-role},
+					"security-zone-name-trusted": ${sz-ar.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-name-trusted},
+					"security-zone-name-untrusted": ${sz-ar.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-name-untrusted},
+					"untrusted-network-role": ${sz-ar.allotted-resource-data.security-zone-topology.security-zone-assignments.untrusted-network-role},
+					"security-zone-service-instance-id" : ${sz-ar.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-service-instance-id},
+					"security-zone-vnf-id" : ${sz-ar.allotted-resource-data.security-zone-topology.security-zone-assignments.security-zone-vnf-id},
+					"vlan-tag": ${sz-ar.allotted-resource-data.security-zone-topology.security-zone-assignments.vlan-tag}
+				},
+				"security-zone-parameters": {
+				}
+				
+			},
+			"allotted-resource-operation-information": {
+			"allotted-resource-information": {
+      				"allotted-resource-id": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.allotted-resource-id},
+					"allotted-resource-type": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.allotted-resource-type},
+					"parent-service-instance-id": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id},
+					"onap-model-information": {
+						"model-invariant-uuid": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-invariant-uuid},
+						"model-customization-uuid": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-customization-uuid},
+						"model-uuid": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-uuid},
+						"model-version": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-version}
+      				}
+    			},
+    			"sdnc-request-header": {
+      				"svc-request-id": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id},
+      				"svc-action": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-action}
+    			},
+				"request-information": {
+					"request-id": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-id},
+					"source": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.source},
+					"order-version": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.order-version},
+					"order-number": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.order-number},
+					"notification-url": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.notification-url},
+					"request-action": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action}
+				},
+				"security-zone-request-input": {
+					"vlan-tag": ${sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.vlan-tag},
+					"trusted-network-role" : ${sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.trusted-network-role},
+					"untrusted-network-role" : ${sz-ar.allotted-resource-data.allotted-resource-operation-information.security-zone-request-input.untrusted-network-role}
+    			}
+			},
+			"allotted-resource-oper-status": {
+				"last-action": ${sz-ar.allotted-resource-data.allotted-resource-oper-status.last-action},
+				"modify-timestamp": ${sz-ar.allotted-resource-data.allotted-resource-oper-status.modify-timestamp},
+				"last-order-status": ${sz-ar.allotted-resource-data.allotted-resource-oper-status.last-order-status},
+				"create-timestamp": ${sz-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp},
+				"order-status": ${sz-ar.allotted-resource-data.allotted-resource-oper-status.order-status},
+				"last-rpc-action": ${sz-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action},
+				"last-svc-request-id": ${sz-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id}
+			}
+		},
+		"allotted-resource-status" : {
+			"action": ${sz-ar.allotted-resource-status.action},
+			"rpc-name": ${sz-ar.allotted-resource-status.rpc-name},
+			"rpc-action": ${sz-ar.allotted-resource-status.rpc-action}
+		}
+	}]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-capacity-release.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-capacity-release.json
new file mode 100644
index 0000000..0ecfe10
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-capacity-release.json
@@ -0,0 +1,16 @@
+{
+   "input": {
+         "reservation-entity-list": [
+           {
+               "reservation-entity-type": "${sscap.rel-entity-type}",
+               "reservation-entity-id": "${sscap.rel-entity-id}"
+           }
+          ],
+         "reservation-resource-list": [
+            {
+                "endpoint-position": "${sscap.rel-endpoint-position}"
+            }
+         ]
+        }
+}
+ 
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-capacity-reserve.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-capacity-reserve.json
new file mode 100644
index 0000000..65b55c4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-capacity-reserve.json
@@ -0,0 +1,22 @@
+{
+ 	"input": {
+ 		"capacity-reservation-information": {
+ 			"service-model": "${sscap.res-service-model}",
+ 			"reservation-entity-list": [{
+ 					"reservation-entity-id": "${sscap.res-entityid}",
+ 					"reservation-entity-type": "${sscap.res-entity-type}"
+ 				}
+			],
+ 			"reservation-target-list": [{
+ 					"reservation-target-type": "${sscap.res-target-type}",
+ 					"reservation-target-id": "${sscap.res-target-id}"
+ 			  }
+ 			],
+ 			"reservation-resource-list": [
+ 				{
+ 					"endpoint-position": "${sscap.res-endpoint-position}" 
+ 				}
+ 			]
+ 		}
+ 	}
+ }
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-mS-mac-address-assign.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-mS-mac-address-assign.json
new file mode 100644
index 0000000..2419c89
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-mS-mac-address-assign.json
@@ -0,0 +1,26 @@
+{
+    "elements": [ ${repeat:ma.elements.element_length:
+      [
+	{
+            "name": "policy-instance-name",
+            "value": ${ma.elements.element[${1}].policy-instance-name}
+	},
+	{
+            "name": "vnf-host-name",
+            "value": ${ma.elements.element[${1}].vnf-host-name}
+	},
+	{
+            "name": "cloud-param-name", 
+            "value": ${ma.elements.element[${1}].cloud-param-name}
+	},
+	{
+            "name": "sw-name",
+            "value":  ${ma.elements.element[${1}].sw-name}
+	},
+	{
+            "name": "resource-value",
+            "value":  ${ma.elements.element[${1}].resource-value}
+        }
+      ], }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-mS-mac-address-unassign.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-mS-mac-address-unassign.json
new file mode 100644
index 0000000..cdf5f90
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-mS-mac-address-unassign.json
@@ -0,0 +1,14 @@
+{
+    "elements": [ ${repeat:ma.elements.element_length:
+      [
+	{
+            "name": "vnf-host-name",
+            "value": ${ma.elements.element[${1}].vnf-host-name}
+	},
+	{
+            "name": "cloud-param-name", 
+            "value": ${ma.elements.element[${1}].cloud-param-name}
+	}
+      ], }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-mS-vlan-tag-assignments.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-mS-vlan-tag-assignments.json
new file mode 100644
index 0000000..acf5e65
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-mS-vlan-tag-assignments.json
@@ -0,0 +1,14 @@
+{
+    "input": [
+  ${repeat:vt.request_length:
+        {
+            "policy-instance-name": ${vt.request[${1}].policy-instance-name},
+            "vlan-type":  ${vt.request[${1}].vlan-type},
+            "resource-name": ${vt.request[${1}].resource-name}, 
+            "resource-value":  ${vt.request[${1}].resource-value},
+            "scope-id":  ${vt.request[${1}].scope-id},
+            "vlan-tag-key": ${vt.request[${1}].vlan-tag-key}
+        },
+  }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-mS-vlan-tag-unassignments.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-mS-vlan-tag-unassignments.json
new file mode 100644
index 0000000..aeb6b36
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-mS-vlan-tag-unassignments.json
@@ -0,0 +1,11 @@
+{
+    "input": [
+  ${repeat:vt.request_length:
+        {
+            "policy-instance-name": ${vt.request[${1}].policy-instance-name},
+            "vlan-type":  ${vt.request[${1}].vlan-type},
+            "vlan-tag-key": ${vt.request[${1}].vlan-tag-key}
+        },
+  }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-pnf-assignments.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-pnf-assignments.json
new file mode 100644
index 0000000..4e15e91
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-pnf-assignments.json
@@ -0,0 +1,112 @@
+{
+    "pnf": [{
+        "pnf-id": ${pf.pnf-id},
+        "pnf-data": {
+            "sdnc-request-header": {
+                "svc-request-id": ${pf.pnf-data.sdnc-request-header.svc-request-id},
+                "svc-action": ${pf.pnf-data.sdnc-request-header.svc-action},
+                "svc-notification-url": ${pf.pnf-data.sdnc-request-header.svc-notification-url}
+            },
+            "request-information": {
+                "request-id": ${pf.pnf-data.request-information.request-id},
+                "request-action": ${pf.pnf-data.request-information.request-action},
+                "source": ${pf.pnf-data.request-information.source},
+                "notification-url": ${pf.pnf-data.request-information.notification-url},
+                "order-number": ${pf.pnf-data.request-information.order-number},
+                "order-version": ${pf.pnf-data.request-information.order-version}
+            },
+            "service-information": {
+                "service-id": ${pf.pnf-data.service-information.service-id},
+                "subscription-service-type": ${pf.pnf-data.service-information.subscription-service-type},
+                "onap-model-information": {
+                    "model-invariant-uuid": ${pf.pnf-data.service-information.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${pf.pnf-data.service-information.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${pf.pnf-data.service-information.onap-model-information.model-uuid},
+                    "model-version": ${pf.pnf-data.service-information.onap-model-information.model-version},
+                    "model-name": ${pf.pnf-data.service-information.onap-model-information.model-name}
+                },
+                "service-instance-id": ${pf.pnf-data.service-information.service-instance-id},
+                "global-customer-id": ${pf.pnf-data.service-information.global-customer-id},
+                "subscriber-name": ${pf.pnf-data.service-information.subscriber-name}
+            },
+            "pnf-details": {
+                "pnf-id": ${pf.pnf-data.pnf-details.pnf-id},
+                "pnf-type": ${pf.pnf-data.pnf-details.pnf-type},
+                "pnf-name": ${pf.pnf-data.pnf-details.pnf-name},
+                "onap-model-information": {
+                    "model-invariant-uuid": ${pf.pnf-data.pnf-details.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${pf.pnf-data.pnf-details.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${pf.pnf-data.pnf-details.onap-model-information.model-uuid},
+                    "model-version": ${pf.pnf-data.pnf-details.onap-model-information.model-version},
+                    "model-name": ${pf.pnf-data.pnf-details.onap-model-information.model-name}
+                }
+            },
+            "pnf-request-input": {
+                "request-version": ${pf.pnf-data.pnf-request-input.request-version},
+                "pnf-name": ${pf.pnf-data.pnf-request-input.pnf-name},
+                "tenant": ${pf.pnf-data.pnf-request-input.tenant},
+                "aic-cloud-region": ${pf.pnf-data.pnf-request-input.aic-cloud-region},
+                "aic-clli": ${pf.pnf-data.pnf-request-input.aic-clli},
+                "pnf-input-parameters": {
+                    "param": [
+        ${repeat:pf.pnf-data.pnf-request-input.pnf-input-parameters.param_length:
+                        {
+                            "name": ${pf.pnf-data.pnf-request-input.pnf-input-parameters.param[${1}].name},
+                            "value": ${pf.pnf-data.pnf-request-input.pnf-input-parameters.param[${1}].value}
+                        },
+        }
+                    ]
+                }
+            },
+            "pnf-topology": {
+                "pnf-topology-identifier-structure": {
+                    "pnf-id": ${pf.pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-id},
+                    "pnf-name": ${pf.pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-name},
+                    "pnf-type": ${pf.pnf-data.pnf-topology.pnf-topology-identifier-structure.pnf-type}
+                },
+                "onap-model-information": {
+                    "model-invariant-uuid": ${pf.pnf-data.pnf-topology.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${pf.pnf-data.pnf-topology.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${pf.pnf-data.pnf-topology.onap-model-information.model-uuid},
+                    "model-version": ${pf.pnf-data.pnf-topology.onap-model-information.model-version},
+                    "model-name": ${pf.pnf-data.pnf-topology.onap-model-information.model-name}
+                },
+                "pnf-parameters-data": {
+                    "param": [
+        ${repeat:pf.pnf-data.pnf-topology.pnf-parameters-data.param_length:
+                        {
+                            "name": ${pf.pnf-data.pnf-topology.pnf-parameters-data.param[${1}].name},
+                            "value": ${pf.pnf-data.pnf-topology.pnf-parameters-data.param[${1}].value},
+                            "resource-resolution-data": {
+                                "resource-key": [
+                ${repeat:pf.pnf-data.pnf-topology.pnf-parameters-data.param[${1}].resource-resolution-data.resource-key_length:
+                                    {
+                                        "name": ${pf.pnf-data.pnf-topology.pnf-parameters-data.param[${1}].resource-resolution-data.resource-key[${2}].name},
+                                        "value": ${pf.pnf-data.pnf-topology.pnf-parameters-data.param[${1}].resource-resolution-data.resource-key[${2}].value}
+                                    },
+                }
+                                ],
+                                "status": ${pf.pnf-data.pnf-topology.pnf-parameters-data.param[${1}].resource-resolution-data.status},
+                                "capability-name": ${pf.pnf-data.pnf-topology.pnf-parameters-data.param[${1}].resource-resolution-data.capability-name}
+                            },
+                        },
+        }
+                    ]
+                },
+                "tenant": ${pf.pnf-data.pnf-topology.tenant},
+                "aic-cloud-region": ${pf.pnf-data.pnf-topology.aic-cloud-region},
+                "aic-clli": ${pf.pnf-data.pnf-topology.aic-clli}
+                "sdnc-generated-cloud-resources": ${pf.pnf-data.pnf-topology.sdnc-generated-cloud-resources}
+            },
+            "pnf-level-oper-status": {
+                "order-status": ${pf.pnf-data.pnf-level-oper-status.order-status},
+                "last-rpc-action": ${pf.pnf-data.pnf-level-oper-status.last-rpc-action},
+                "last-action": ${pf.pnf-data.pnf-level-oper-status.last-action},
+                "last-svc-request-id": ${pf.pnf-data.pnf-level-oper-status.last-svc-request-id},
+                "last-order-status": ${pf.pnf-data.pnf-level-oper-status.last-order-status},
+                "create-timestamp": ${pf.pnf-data.pnf-level-oper-status.create-timestamp},
+                "modify-timestamp": ${pf.pnf-data.pnf-level-oper-status.modify-timestamp}
+            }
+        }
+    }]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-vfmodule-assignments.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-vfmodule-assignments.json
new file mode 100644
index 0000000..ee23965
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-vfmodule-assignments.json
@@ -0,0 +1,171 @@
+{
+    "vf-module": [{
+        "vf-module-id": ${vf.vf-module-id},
+        "vf-module-data": {
+            "sdnc-request-header": {
+                "svc-request-id": ${vf.vf-module-data.sdnc-request-header.svc-request-id},
+                "svc-action": ${vf.vf-module-data.sdnc-request-header.svc-action},
+                "svc-notification-url": ${vf.vf-module-data.sdnc-request-header.svc-notification-url}
+            },
+            "request-information": {
+                "request-id": ${vf.vf-module-data.request-information.request-id},
+                "request-action": ${vf.vf-module-data.request-information.request-action},
+                "source": ${vf.vf-module-data.request-information.source},
+                "notification-url": ${vf.vf-module-data.request-information.notification-url},
+                "order-number": ${vf.vf-module-data.request-information.order-number},
+                "order-version": ${vf.vf-module-data.request-information.order-version}
+            },
+            "service-information": {
+                "service-id": ${vf.vf-module-data.service-information.service-id},
+                "subscription-service-type": ${vf.vf-module-data.service-information.subscription-service-type},
+                "onap-model-information": {
+                    "model-invariant-uuid": ${vf.vf-module-data.service-information.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${vf.vf-module-data.service-information.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${vf.vf-module-data.service-information.onap-model-information.model-uuid},
+                    "model-version": ${vf.vf-module-data.service-information.onap-model-information.model-version},
+                    "model-name": ${vf.vf-module-data.service-information.onap-model-information.model-name}
+                },
+                "service-instance-id": ${vf.vf-module-data.service-information.service-instance-id},
+                "global-customer-id": ${vf.vf-module-data.service-information.global-customer-id},
+                "subscriber-name": ${vf.vf-module-data.service-information.subscriber-name}
+            },
+            "vnf-information": {
+                "vnf-id": ${vf.vf-module-data.vnf-information.vnf-id},
+                "vnf-type": ${vf.vf-module-data.vnf-information.vnf-type},
+                "vnf-name": ${vf.vf-module-data.vnf-information.vnf-name},
+                "onap-model-information": {
+                    "model-invariant-uuid": ${vf.vf-module-data.vnf-information.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${vf.vf-module-data.vnf-information.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${vf.vf-module-data.vnf-information.onap-model-information.model-uuid},
+                    "model-version": ${vf.vf-module-data.vnf-information.onap-model-information.model-version},
+                    "model-name": ${vf.vf-module-data.vnf-information.onap-model-information.model-name}
+                }
+            },
+            "vf-module-information": {
+                "vf-module-id": ${vf.vf-module-data.vf-module-information.vf-module-id},
+                "vf-module-type": ${vf.vf-module-data.vf-module-information.vf-module-type},
+                "onap-model-information": {
+                    "model-invariant-uuid": ${vf.vf-module-data.vf-module-information.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${vf.vf-module-data.vf-module-information.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${vf.vf-module-data.vf-module-information.onap-model-information.model-uuid},
+                    "model-version": ${vf.vf-module-data.vf-module-information.onap-model-information.model-version},
+                    "model-name": ${vf.vf-module-data.vf-module-information.onap-model-information.model-name}
+                }
+            },
+            "vf-module-request-input": {
+                "request-version": ${vf.vf-module-data.vf-module-request-input.request-version},
+                "vf-module-name": ${vf.vf-module-data.vf-module-request-input.vf-module-name},
+                "tenant": ${vf.vf-module-data.vf-module-request-input.tenant},
+                "aic-cloud-region": ${vf.vf-module-data.vf-module-request-input.aic-cloud-region},
+                "aic-clli": ${vf.vf-module-data.vf-module-request-input.aic-clli},
+                "vf-module-input-parameters": {
+                    "param": [
+${repeat:vf.vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length:
+                        {
+                            "name": ${vf.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[${1}].name},
+                            "value": ${vf.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[${1}].value}
+                        },
+}
+                    ]
+                }
+            },
+            "vf-module-topology": {
+                "vf-module-topology-identifier": {
+                    "vf-module-id": ${vf.vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id},
+                    "vf-module-name": ${vf.vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-name},
+                    "vf-module-type": ${vf.vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-type}
+                },
+                "onap-model-information": {
+                    "model-invariant-uuid": ${vf.vf-module-data.vf-module-topology.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${vf.vf-module-data.vf-module-topology.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${vf.vf-module-data.vf-module-topology.onap-model-information.model-uuid},
+                    "model-version": ${vf.vf-module-data.vf-module-topology.onap-model-information.model-version},
+                    "model-name": ${vf.vf-module-data.vf-module-topology.onap-model-information.model-name}
+                },
+                "vf-module-assignments": {
+                    "vms": {
+                        "vm": [
+${repeat:vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length:
+                            {
+                                "vm-type": ${vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-type},
+                                "onap-model-information": {
+                                    "model-invariant-uuid": ${vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].onap-model-information.model-invariant-uuid},
+                                    "model-customization-uuid": ${vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].onap-model-information.model-customization-uuid},
+                                    "model-version": ${vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].onap-model-information.model-version}
+                                },
+                                "vm-names": {
+                                    "vnfc-names": [
+${repeat:vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names_length:
+                                        {
+                                            "vnfc-name": ${vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-name},
+                                            "vnfc-networks": {
+                                                "vnfc-network-data": [
+${repeat:vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data_length:
+                                                    {
+                                                        "vnfc-network-role": ${vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].vnfc-network-role},
+                                                        "vnfc-type": ${vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].vnfc-type},
+                                                        "connection-point": {
+                                                            "connection-point-id": ${vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].connection-point.connection-point-id},
+                                                        	"vlan-data": [
+${repeat:vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].connection-point.vlan-data_length:
+                                                            	{
+                                                                	"vlan-uuid": ${vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].connection-point.vlan-data[${4}].vlan-uuid},
+                                                                	"vlan-tag-id": ${vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].connection-point.vlan-data[${4}].vlan-tag-id},
+                                                                	"vlan-tag-description": ${vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].connection-point.vlan-data[${4}].vlan-tag-description},
+                                                                	"vlan-role": ${vf.vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].connection-point.vlan-data[${4}].vlan-role}
+                                                            	},
+}
+                                                        	]
+                                                    	}
+													},
+}
+                                                ]
+											}
+										},
+}
+                                    ]
+                                }
+							},
+}
+                        ]
+                    }
+                },
+                "vf-module-parameters": {
+                    "param": [
+${repeat:vf.vf-module-data.vf-module-topology.vf-module-parameters.param_length:
+                        {
+                            "name": ${vf.vf-module-data.vf-module-topology.vf-module-parameters.param[${1}].name},
+                            "value": ${vf.vf-module-data.vf-module-topology.vf-module-parameters.param[${1}].value},
+                            "resource-resolution-data": {
+                                "resource-key": [
+${repeat:vf.vf-module-data.vf-module-topology.vf-module-parameters.param[${1}].resource-resolution-data.resource-key_length:
+                                    {
+                                        "name": ${vf.vf-module-data.vf-module-topology.vf-module-parameters.param[${1}].resource-resolution-data.resource-key[${2}].name},
+                                        "value": ${vf.vf-module-data.vf-module-topology.vf-module-parameters.param[${1}].resource-resolution-data.resource-key[${2}].value}
+                                    },
+}
+                                ],
+                                "status": ${vf.vf-module-data.vf-module-topology.vf-module-parameters.param[${1}].resource-resolution-data.status},
+                                "capability-name": ${vf.vf-module-data.vf-module-topology.vf-module-parameters.param[${1}].resource-resolution-data.capability-name}
+                            },
+                        },
+}
+                    ]
+                },
+                "tenant": ${vf.vf-module-data.vf-module-topology.tenant},
+                "aic-cloud-region": ${vf.vf-module-data.vf-module-topology.aic-cloud-region},
+                "aic-clli": ${vf.vf-module-data.vf-module-topology.aic-clli},
+                "sdnc-generated-cloud-resources": ${vf.vf-module-data.vf-module-topology.sdnc-generated-cloud-resources}
+            },
+            "vf-module-level-oper-status": {
+                "order-status": ${vf.vf-module-data.vf-module-level-oper-status.order-status},
+                "last-rpc-action": ${vf.vf-module-data.vf-module-level-oper-status.last-rpc-action},
+                "last-action": ${vf.vf-module-data.vf-module-level-oper-status.last-action},
+                "last-svc-request-id": ${vf.vf-module-data.vf-module-level-oper-status.last-svc-request-id},
+                "last-order-status": ${vf.vf-module-data.vf-module-level-oper-status.last-order-status},
+                "create-timestamp": ${vf.vf-module-data.vf-module-level-oper-status.create-timestamp},
+                "modify-timestamp": ${vf.vf-module-data.vf-module-level-oper-status.modify-timestamp}
+            }
+        }
+    }]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-vnf-assignments.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-vnf-assignments.json
new file mode 100644
index 0000000..666e918
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/self-serve-vnf-assignments.json
@@ -0,0 +1,112 @@
+{
+    "vnf": [{
+        "vnf-id": ${vf.vnf-id},
+        "vnf-data": {
+            "sdnc-request-header": {
+                "svc-request-id": ${vf.vnf-data.sdnc-request-header.svc-request-id},
+                "svc-action": ${vf.vnf-data.sdnc-request-header.svc-action},
+                "svc-notification-url": ${vf.vnf-data.sdnc-request-header.svc-notification-url}
+            },
+            "request-information": {
+                "request-id": ${vf.vnf-data.request-information.request-id},
+                "request-action": ${vf.vnf-data.request-information.request-action},
+                "source": ${vf.vnf-data.request-information.source},
+                "notification-url": ${vf.vnf-data.request-information.notification-url},
+                "order-number": ${vf.vnf-data.request-information.order-number},
+                "order-version": ${vf.vnf-data.request-information.order-version}
+            },
+            "service-information": {
+                "service-id": ${vf.vnf-data.service-information.service-id},
+                "subscription-service-type": ${vf.vnf-data.service-information.subscription-service-type},
+                "onap-model-information": {
+                    "model-invariant-uuid": ${vf.vnf-data.service-information.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${vf.vnf-data.service-information.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${vf.vnf-data.service-information.onap-model-information.model-uuid},
+                    "model-version": ${vf.vnf-data.service-information.onap-model-information.model-version},
+                    "model-name": ${vf.vnf-data.service-information.onap-model-information.model-name}
+                },
+                "service-instance-id": ${vf.vnf-data.service-information.service-instance-id},
+                "global-customer-id": ${vf.vnf-data.service-information.global-customer-id},
+                "subscriber-name": ${vf.vnf-data.service-information.subscriber-name}
+            },
+            "vnf-information": {
+                "vnf-id": ${vf.vnf-data.vnf-information.vnf-id},
+                "vnf-type": ${vf.vnf-data.vnf-information.vnf-type},
+                "vnf-name": ${vf.vnf-data.vnf-information.vnf-name},
+                "onap-model-information": {
+                    "model-invariant-uuid": ${vf.vnf-data.vnf-information.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${vf.vnf-data.vnf-information.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${vf.vnf-data.vnf-information.onap-model-information.model-uuid},
+                    "model-version": ${vf.vnf-data.vnf-information.onap-model-information.model-version},
+                    "model-name": ${vf.vnf-data.vnf-information.onap-model-information.model-name}
+                }
+            },
+            "vnf-request-input": {
+                "request-version": ${vf.vnf-data.vnf-request-input.request-version},
+                "vnf-name": ${vf.vnf-data.vnf-request-input.vnf-name},
+                "tenant": ${vf.vnf-data.vnf-request-input.tenant},
+                "aic-cloud-region": ${vf.vnf-data.vnf-request-input.aic-cloud-region},
+                "aic-clli": ${vf.vnf-data.vnf-request-input.aic-clli},
+                "vnf-input-parameters": {
+                    "param": [
+        ${repeat:vf.vnf-data.vnf-request-input.vnf-input-parameters.param_length:
+                        {
+                            "name": ${vf.vnf-data.vnf-request-input.vnf-input-parameters.param[${1}].name},
+                            "value": ${vf.vnf-data.vnf-request-input.vnf-input-parameters.param[${1}].value}
+                        },
+        }
+                    ]
+                }
+            },
+            "vnf-topology": {
+                "vnf-topology-identifier-structure": {
+                    "vnf-id": ${vf.vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id},
+                    "vnf-name": ${vf.vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name},
+                    "vnf-type": ${vf.vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-type}
+                },
+                "onap-model-information": {
+                    "model-invariant-uuid": ${vf.vnf-data.vnf-topology.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${vf.vnf-data.vnf-topology.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${vf.vnf-data.vnf-topology.onap-model-information.model-uuid},
+                    "model-version": ${vf.vnf-data.vnf-topology.onap-model-information.model-version},
+                    "model-name": ${vf.vnf-data.vnf-topology.onap-model-information.model-name}
+                },
+                "vnf-parameters-data": {
+                    "param": [
+        ${repeat:vf.vnf-data.vnf-topology.vnf-parameters-data.param_length:
+                        {
+                            "name": ${vf.vnf-data.vnf-topology.vnf-parameters-data.param[${1}].name},
+                            "value": ${vf.vnf-data.vnf-topology.vnf-parameters-data.param[${1}].value},
+                            "resource-resolution-data": {
+                                "resource-key": [
+                ${repeat:vf.vnf-data.vnf-topology.vnf-parameters-data.param[${1}].resource-resolution-data.resource-key_length:
+                                    {
+                                        "name": ${vf.vnf-data.vnf-topology.vnf-parameters-data.param[${1}].resource-resolution-data.resource-key[${2}].name},
+                                        "value": ${vf.vnf-data.vnf-topology.vnf-parameters-data.param[${1}].resource-resolution-data.resource-key[${2}].value}
+                                    },
+                }
+                                ],
+                                "status": ${vf.vnf-data.vnf-topology.vnf-parameters-data.param[${1}].resource-resolution-data.status},
+                                "capability-name": ${vf.vnf-data.vnf-topology.vnf-parameters-data.param[${1}].resource-resolution-data.capability-name}
+                            },
+                        },
+        }
+                    ]
+                },
+                "tenant": ${vf.vnf-data.vnf-topology.tenant},
+                "aic-cloud-region": ${vf.vnf-data.vnf-topology.aic-cloud-region},
+                "aic-clli": ${vf.vnf-data.vnf-topology.aic-clli}
+                "sdnc-generated-cloud-resources": ${vf.vnf-data.vnf-topology.sdnc-generated-cloud-resources}
+            },
+            "vnf-level-oper-status": {
+                "order-status": ${vf.vnf-data.vnf-level-oper-status.order-status},
+                "last-rpc-action": ${vf.vnf-data.vnf-level-oper-status.last-rpc-action},
+                "last-action": ${vf.vnf-data.vnf-level-oper-status.last-action},
+                "last-svc-request-id": ${vf.vnf-data.vnf-level-oper-status.last-svc-request-id},
+                "last-order-status": ${vf.vnf-data.vnf-level-oper-status.last-order-status},
+                "create-timestamp": ${vf.vnf-data.vnf-level-oper-status.create-timestamp},
+                "modify-timestamp": ${vf.vnf-data.vnf-level-oper-status.modify-timestamp}
+            }
+        }
+    }]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/so-response.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/so-response.json
new file mode 100644
index 0000000..2e47fb0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/so-response.json
@@ -0,0 +1,10 @@
+{
+	"service-information": {
+		"service-instance-id": ${so.service-instance-id},
+		"service-type": ${so.service-type}
+	},
+	"svc-request-id": ${so.svc-request-id},
+	"response-code": ${so.response-code},
+	"response-message": ${so.response-message},
+	"ack-final-indicator": ${so.ack-final-indicator}
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sotn-attachment-allotted-resource.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sotn-attachment-allotted-resource.json
new file mode 100644
index 0000000..4929b4a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sotn-attachment-allotted-resource.json
@@ -0,0 +1,171 @@
+{
+    "connection-attachment-allotted-resource": [{
+        "allotted-resource-id": ${connection-attachment-ar.allotted-resource-id},
+        "allotted-resource-data": {
+            "allotted-resource-operation-information": {
+                "allotted-resource-information": {
+                    "allotted-resource-id": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.allotted-resource-id},
+                    "allotted-resource-type": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.allotted-resource-type},
+                    "parent-service-instance-id": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id},
+                    "onap-model-information": {
+                        "model-invariant-uuid": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-invariant-uuid},
+                        "model-customization-uuid": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-customization-uuid},
+                        "model-uuid": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-uuid},
+                        "model-version": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-version}
+                    }
+                },
+                "sdnc-request-header": {
+                    "svc-request-id": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id},
+                    "svc-action": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-action}
+                },
+                "request-information": {
+                    "request-id": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-id},
+                    "source": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.source},
+                    "order-version": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.order-version},
+                    "order-number": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.order-number},
+                    "notification-url": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.notification-url},
+                    "request-action": ${connection-attachment-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action}
+                },
+                "connection-attachment-request-input": {
+                    "param": [
+                        {
+                            "name": "sotnVpnName",
+                            "value": ${prop.connection-attachment.sotnVpnName}
+                        },
+                        {
+                            "name": "access-provider-id",
+                            "value": ${prop.connection-attachment.access-provider-id}
+                        },
+                        {
+                            "name": "access-client-id",
+                            "value": ${prop.connection-attachment.access-client-id}
+                        },
+                        {
+                            "name": "access-topology-id",
+                            "value": ${prop.connection-attachment.access-topology-id}
+                        },
+                        {
+                            "name": "access-node-id",
+                            "value": ${prop.connection-attachment.access-node-id}
+                        },
+                        {
+                            "name": "access-ltp-id",
+                            "value": ${prop.connection-attachment.access-ltp-id}
+                        },
+                        {
+                            "name": "clientSignal",
+                            "value": ${prop.connection-attachment.clientSignal}
+                        },
+                        {
+                            "name": "cVLAN",
+                            "value": ${prop.connection-attachment.cVLAN}
+                        }
+                    ]
+                }
+            },
+            "connection-attachment-topology": {
+                "allotted-resource-identifiers": {
+                    "consuming-service-instance-id": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.consuming-service-instance-id},
+                    "allotted-resource-name": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.allotted-resource-name},
+                    "allotted-resource-id": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.allotted-resource-id},
+                    "parent-service-instance-id": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.parent-service-instance-id},
+                    "allotted-resource-type": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.allotted-resource-identifiers.allotted-resource-type}
+                },
+                "onap-model-information": {
+                    "model-invariant-uuid": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.model-uuid},
+                    "model-version": ${connection-attachment-ar.allotted-resource-data.connection-attachment-topology.onap-model-information.model-version}
+                },
+                "connection-attachment-parameters": {
+                    "param": [
+                        {
+                            "name": "sotnVpnName",
+                            "value": ${prop.connection-attachment.sotnVpnName}
+                        },
+                        {
+                            "name": "access-provider-id",
+                            "value": ${prop.connection-attachment.access-provider-id}
+                        },
+                        {
+                            "name": "access-client-id",
+                            "value": ${prop.connection-attachment.access-client-id}
+                        },
+                        {
+                            "name": "access-topology-id",
+                            "value": ${prop.connection-attachment.access-topology-id}
+                        },
+                        {
+                            "name": "access-node-id",
+                            "value": ${prop.connection-attachment.access-node-id}
+                        },
+                        {
+                            "name": "access-ltp-id",
+                            "value": ${prop.connection-attachment.access-ltp-id}
+                        },
+                        {
+                            "name": "clientSignal",
+                            "value": ${prop.connection-attachment.clientSignal}
+                        },
+                        {
+                            "name": "cVLAN",
+                            "value": ${prop.connection-attachment.cVLAN}
+                        }
+                    ]
+                }
+            },
+            "connection-attachment-parameters": {
+                "param": [
+                    {
+                        "name": "sotnVpnName",
+                        "value": ${prop.connection-attachment.sotnVpnName}
+                    },
+                    {
+                        "name": "access-provider-id",
+                        "value": ${prop.connection-attachment.access-provider-id}
+                    },
+                    {
+                        "name": "access-client-id",
+                        "value": ${prop.connection-attachment.access-client-id}
+                    },
+                    {
+                        "name": "access-topology-id",
+                        "value": ${prop.connection-attachment.access-topology-id}
+                    },
+                    {
+                        "name": "access-node-id",
+                        "value": ${prop.connection-attachment.access-node-id}
+                    },
+                    {
+                        "name": "access-ltp-id",
+                        "value": ${prop.connection-attachment.access-ltp-id}
+                    },
+                    {
+                        "name": "clientSignal",
+                        "value": ${prop.connection-attachment.clientSignal}
+                    },
+                    {
+                        "name": "cVLAN",
+                        "value": ${prop.connection-attachment.cVLAN}
+                    }
+                ]
+            },
+            "allotted-resource-oper-status": {
+                "last-action": ${connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-action},
+                "modify-timestamp": ${connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.modify-timestamp},
+                "last-order-status": ${connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-order-status},
+                "create-timestamp": ${connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp},
+                "order-status": ${connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.order-status},
+                "last-rpc-action": ${connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action},
+                "last-svc-request-id": ${connection-attachment-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id}
+            },
+        },
+        "allotted-resource-status" : {
+            "action": ${connection-attachment-ar.allotted-resource-status.action},
+            "rpc-name": ${connection-attachment-ar.allotted-resource-status.rpc-name},
+            "rpc-action": ${connection-attachment-ar.allotted-resource-status.rpc-action}
+        }
+    }]
+}
+
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sotn-ethernet-service.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sotn-ethernet-service.json
new file mode 100644
index 0000000..582e88e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/sotn-ethernet-service.json
@@ -0,0 +1,42 @@
+{
+    "ietf-eth-tran-service:etht-svc": {
+        "globals": {
+            "etht-svc-bandwidth-profiles": [
+                {
+                    "bandwidth-profile-name": ${prop.global.sotn.bandwidth-profile-name},
+                    "bandwidth-profile-type": "ietf-eth-tran-types:mef-10-bwp",
+                    "CIR": ${prop.global.sotn.cir},
+                    "EIR": ${prop.global.sotn.eir},
+                    "color-aware": ${prop.global.sotn.colorAware},
+                    "coupling-flag": ${prop.global.sotn.couplingFlag}
+                }
+            ]
+        },
+        "etht-svc-instances": [
+            {
+                "etht-svc-name": ${prop.global.sotn.etht-svc-name},
+                "access-provider-id": ${oof.vpn.access-provider-id},
+                "access-client-id": ${oof.vpn.access-client-id},
+                "access-topology-id": ${oof.vpn.access-topology-id},
+                "etht-svc-type": "ietf-eth-tran-types:p2p-svc",
+                "admin-status": "ietf-te-types:tunnel-state-up",
+                "etht-svc-access-ports": [
+                    {
+                        "access-port-id": "0",
+                        "access-node-id": ${oof.vpn.access-node-id},
+                        "access-ltp-id": ${oof.vpn.src-access-ltp-id},
+                        "service-classification-type": "ietf-eth-tran-types:port-classification",
+                        "ingress-egress-bandwidth-profile-name": ${prop.global.sotn.bandwidth-profile-name}
+                    },
+                    {
+                        "access-port-id": "1",
+                        "access-node-id": ${oof.vpn.access-node-id},
+                        "access-ltp-id": ${oof.vpn.dst-access-ltp-id},
+                        "service-classification-type": "ietf-eth-tran-types:port-classification",
+                        "ingress-egress-bandwidth-profile-name": ${prop.global.sotn.bandwidth-profile-name}
+                    }
+                ]
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/tunnelxconn-allotted-resource.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/tunnelxconn-allotted-resource.json
new file mode 100644
index 0000000..d3c384d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/tunnelxconn-allotted-resource.json
@@ -0,0 +1,93 @@
+{
+    "tunnelxconn-allotted-resource": [{
+        "allotted-resource-id": ${tx-ar.allotted-resource-id},
+        "allotted-resource-data": {
+            "tunnelxconn-topology": {
+                "allotted-resource-identifiers": {
+                    "consuming-service-instance-id": ${tx-ar.allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.consuming-service-instance-id},
+                    "allotted-resource-name": ${tx-ar.allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.allotted-resource-name},
+                    "allotted-resource-id": ${tx-ar.allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.allotted-resource-id},
+                    "parent-service-instance-id": ${tx-ar.allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.parent-service-instance-id},
+                    "allotted-resource-type": ${tx-ar.allotted-resource-data.tunnelxconn-topology.allotted-resource-identifiers.allotted-resource-type}
+                },
+                "onap-model-information": {
+                    "model-invariant-uuid": ${tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-uuid},
+                    "model-version": ${tx-ar.allotted-resource-data.tunnelxconn-topology.onap-model-information.model-version}
+                },
+                "tunnelxconn-assignments": {
+                    "vni": ${tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vni},
+                    "vgmux-bearer-ip": ${tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-bearer-ip},
+                    "vgmux-lan-ip": ${tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-lan-ip},
+                    "vg-ip": ${tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip},
+                },
+                "tunnelxconn-parameters": {
+                    "param" : [
+                        {
+                            "name" : "VNI",
+                            "value": ${tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vni}
+                        },
+                        {
+                            "name" : "vgmux_private_ip_2",
+                            "value": ${tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-bearer-ip},
+                        },
+                        {
+                            "name" : "vgmux_private_ip_0",
+                            "value": ${tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vgmux-lan-ip}
+                        },
+                        {
+                            "name" : "vgw_private_ip_0",
+                            "value": ${tx-ar.allotted-resource-data.tunnelxconn-topology.tunnelxconn-assignments.vg-ip}
+
+                        }
+                    ]
+
+                }
+
+            },
+            "allotted-resource-operation-information": {
+            "allotted-resource-information": {
+                    "allotted-resource-id": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.allotted-resource-id},
+                    "allotted-resource-type": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.allotted-resource-type},
+                    "parent-service-instance-id": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.parent-service-instance-id},
+                    "onap-model-information": {
+                        "model-invariant-uuid": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-invariant-uuid},
+                        "model-customization-uuid": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-customization-uuid},
+                        "model-uuid": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-uuid},
+                        "model-version": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.allotted-resource-information.onap-model-information.model-version}
+                    }
+                },
+                "sdnc-request-header": {
+                    "svc-request-id": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-request-id},
+                    "svc-action": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.sdnc-request-header.svc-action}
+                },
+                "request-information": {
+                    "request-id": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-id},
+                    "source": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.source},
+                    "order-version": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.order-version},
+                    "order-number": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.order-number},
+                    "notification-url": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.notification-url},
+                    "request-action": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.request-information.request-action}
+                },
+                "tunnelxconn-request-input": {
+                    "brg-wan-mac-address": ${tx-ar.allotted-resource-data.allotted-resource-operation-information.tunnelxconn-request-input.brg-wan-mac-address}
+                }
+            },
+            "allotted-resource-oper-status": {
+                "last-action": ${tx-ar.allotted-resource-data.allotted-resource-oper-status.last-action},
+                "modify-timestamp": ${tx-ar.allotted-resource-data.allotted-resource-oper-status.modify-timestamp},
+                "last-order-status": ${tx-ar.allotted-resource-data.allotted-resource-oper-status.last-order-status},
+                "create-timestamp": ${tx-ar.allotted-resource-data.allotted-resource-oper-status.create-timestamp},
+                "order-status": ${tx-ar.allotted-resource-data.allotted-resource-oper-status.order-status},
+                "last-rpc-action": ${tx-ar.allotted-resource-data.allotted-resource-oper-status.last-rpc-action},
+                "last-svc-request-id": ${tx-ar.allotted-resource-data.allotted-resource-oper-status.last-svc-request-id}
+            }
+        },
+        "allotted-resource-status" : {
+            "action": ${tx-ar.allotted-resource-status.action},
+            "rpc-name": ${tx-ar.allotted-resource-status.rpc-name},
+            "rpc-action": ${tx-ar.allotted-resource-status.rpc-action}
+        }
+    }]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vcpe-l2-interface.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vcpe-l2-interface.json
new file mode 100644
index 0000000..a3b0237
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vcpe-l2-interface.json
@@ -0,0 +1,5 @@
+{
+    "l2": {
+        "xconnect-outgoing-interface": ${tmp.tunnel-name}
+    }
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vcpe-services-service.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vcpe-services-service.json
new file mode 100644
index 0000000..3a448ec
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vcpe-services-service.json
@@ -0,0 +1,55 @@
+{
+  "service": [
+    {
+      "service-instance-id": ${tmp.service-data.service-information.service-instance-id},
+      "service-status": {
+        "action": ${brg-ar.allotted-resource-status.action},
+        "rpc-name": ${brg-ar.allotted-resource-status.rpc-name},
+        "rpc-action": ${brg-ar.allotted-resource-status.rpc-action}
+      },
+      "service-data": {
+        "service-level-oper-status": {
+          "last-order-status": ${tmp.service-data.oper-status.last-order-status},
+          "order-status": ${tmp.service-data.oper-status.order-status},
+          "last-action": ${tmp.service-data.oper-status.last-action}
+        },
+        "service-topology": {
+          "service-topology-identifier": {
+            "service-id": ${tmp.service-data.service-information.service-id},
+            "service-type": ${tmp.service-data.vnf-topology-information.vnf-topology-identifier.service-type},
+            "service-instance-id": ${tmp.service-data.service-information.service-instance-id}
+          }
+        },
+        "request-information": {
+          "request-action": ${tmp.service-data.request-information.request-action},
+          "request-id": ${tmp.service-data.request-information.request-id},
+          "source": ${tmp.service-data.request-information.source}
+        },
+        "service-information": {
+          "service-instance-id": ${tmp.service-data.service-information.service-instance-id},
+          "subscriber-name": ${tmp.service-data.service-information.subscriber-name}
+        },
+        "sdnc-request-header": {
+          "svc-action": ${tmp.service-data.sdnc-request-header.svc-action},
+          "svc-notification-url": ${tmp.service-data.sdnc-request-header.svc-notification-url},
+          "svc-request-id": ${tmp.service-data.sdnc-request-header.svc-request-id}
+        },
+        "vnfs": {
+          "vnf": [
+            {
+              "vnf-id": ${tmp.service-data.vnf-request-information.vnf-id}
+            }
+          ]
+        },
+        "consumed-allotted-resources": {
+          "consumed-allotted-resource": [
+            {
+              "allotted-resource-type": ${brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.allotted-resource-type},
+              "allotted-resource-id": ${brg-ar.allotted-resource-data.brg-topology.allotted-resource-identifiers.allotted-resource-id}
+            }
+          ]
+        }
+      }
+    }
+  ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vcpe-vpp-bridge-domain.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vcpe-vpp-bridge-domain.json
new file mode 100644
index 0000000..dd0d017
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vcpe-vpp-bridge-domain.json
@@ -0,0 +1,7 @@
+{
+    "l2":{
+        "bridge-domain": ${tmp.bridge-domain},
+        "bridged-virtual-interface":false,
+        "split-horizon-group": ${tmp.split-horizon-group}
+    }
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vcpe-vxlan-tunnel.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vcpe-vxlan-tunnel.json
new file mode 100644
index 0000000..fde75fe
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vcpe-vxlan-tunnel.json
@@ -0,0 +1,16 @@
+{
+    "interface": [
+        {
+            "enabled": "true",
+            "link-up-down-trap-enable": "enabled",
+            "name": ${tmp.tunnel-name},
+            "type": "v3po:vxlan-tunnel",
+            "vxlan": {
+                "dst": ${tmp.tunnel-dest-ip},
+                "encap-vrf-id": "0",
+                "src": ${tmp.tunnel-src-ip},
+                "vni": ${tmp.tunnel-vni}
+            }
+        }
+    ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vf-module-assign.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vf-module-assign.json
new file mode 100644
index 0000000..c6e4b31
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vf-module-assign.json
@@ -0,0 +1,279 @@
+{
+    "vf-module": [{
+        "vf-module-id": ${vf-module-topology-operation-input.vf-module-information.vf-module-id},
+        "vf-module-data": {
+            "sdnc-request-header": {
+                "svc-request-id": ${vf-module-data.sdnc-request-header.svc-request-id},
+                "svc-action": ${vf-module-data.sdnc-request-header.svc-action},
+                "svc-notification-url": ${vf-module-data.sdnc-request-header.svc-notification-url}
+            },
+            "request-information": {
+                "request-id": ${vf-module-data.request-information.request-id},
+                "request-action": ${vf-module-data.request-information.request-action},
+                "source": ${vf-module-data.request-information.source},
+                "notification-url": ${vf-module-data.request-information.notification-url},
+                "order-number": ${vf-module-data.request-information.order-number},
+                "order-version": ${vf-module-data.request-information.order-version}
+            },
+            "service-information": {
+                "service-id": ${vf-module-data.service-information.service-id},
+                "subscription-service-type": ${vf-module-data.service-information.subscription-service-type},
+                "onap-model-information": {
+                    "model-invariant-uuid": ${vf-module-data.service-information.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${vf-module-data.service-information.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${vf-module-data.service-information.onap-model-information.model-uuid},
+                    "model-version": ${vf-module-data.service-information.onap-model-information.model-version},
+                    "model-name": ${vf-module-data.service-information.onap-model-information.model-name}
+                },
+                "service-instance-id": ${vf-module-data.service-information.service-instance-id},
+                "global-customer-id": ${vf-module-data.service-information.global-customer-id},
+                "subscriber-name": ${vf-module-data.service-information.subscriber-name}
+            },
+            "vnf-information": {
+                "vnf-id": ${vf-module-data.vnf-information.vnf-id},
+                "vnf-type": ${vf-module-data.vnf-information.vnf-type},
+                "vnf-name": ${vf-module-data.vnf-information.vnf-name},
+                "onap-model-information": {
+                    "model-invariant-uuid": ${vf-module-data.vnf-information.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${vf-module-data.vnf-information.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${vf-module-data.vnf-information.onap-model-information.model-uuid},
+                    "model-version": ${vf-module-data.vnf-information.onap-model-information.model-version},
+                    "model-name": ${vf-module-data.vnf-information.onap-model-information.model-name}
+                }
+            },
+            "vf-module-information": {
+                "vf-module-id": ${vf-module-data.vf-module-information.vf-module-id},
+                "vf-module-type": ${vf-module-data.vf-module-information.vf-module-type},
+				"from-preload": ${vf-module-data.vf-module-information.from-preload},
+                "onap-model-information": {
+                    "model-invariant-uuid": ${vf-module-data.vf-module-information.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${vf-module-data.vf-module-information.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${vf-module-data.vf-module-information.onap-model-information.model-uuid},
+                    "model-version": ${vf-module-data.vf-module-information.onap-model-information.model-version},
+                    "model-name": ${vf-module-data.vf-module-information.onap-model-information.model-name}
+                }
+            },
+            "vf-module-request-input": {
+                "request-version": ${vf-module-data.vf-module-request-input.request-version},
+                "vf-module-name": ${vf-module-data.vf-module-request-input.vf-module-name},
+                "tenant": ${vf-module-data.vf-module-request-input.tenant},
+                "aic-cloud-region": ${vf-module-data.vf-module-request-input.aic-cloud-region},
+                "aic-clli": ${vf-module-data.vf-module-request-input.aic-clli},
+                "vf-module-input-parameters": {
+                    "param": [
+${repeat:vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length:
+                        {
+                            "name": ${vf-module-data.vf-module-request-input.vf-module-input-parameters.param[${1}].name},
+                            "value": ${vf-module-data.vf-module-request-input.vf-module-input-parameters.param[${1}].value}
+                        },
+}
+                    ]
+                }
+            },
+            "vf-module-topology": {
+                "vf-module-topology-identifier": {
+                    "vf-module-id": ${vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-id},
+                    "vf-module-name": ${vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-name},
+                    "vf-module-type": ${vf-module-data.vf-module-topology.vf-module-topology-identifier.vf-module-type}
+                },
+                "tenant": ${vf-module-data.vf-module-topology.tenant},
+                "aic-cloud-region": ${vf-module-data.vf-module-topology.aic-cloud-region},
+                "cloud-owner": ${vf-module-data.vf-module-topology.cloud-owner},
+                "aic-clli": ${vf-module-data.vf-module-topology.aic-clli},
+                "onap-model-information": {
+                    "model-invariant-uuid": ${vf-module-data.vf-module-topology.onap-model-information.model-invariant-uuid},
+                    "model-customization-uuid": ${vf-module-data.vf-module-topology.onap-model-information.model-customization-uuid},
+                    "model-uuid": ${vf-module-data.vf-module-topology.onap-model-information.model-uuid},
+                    "model-version": ${vf-module-data.vf-module-topology.onap-model-information.model-version},
+                    "model-name": ${vf-module-data.vf-module-topology.onap-model-information.model-name}
+                },
+                "vf-module-assignments": {
+					"vf-module-status": ${vf-module-data.vf-module-topology.vf-module-assignments.vf-module-status},
+                    "vms": {
+                        "vm": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm_length:
+                            {
+                                "vm-type": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-type},
+                                "onap-model-information": {
+                                    "model-invariant-uuid": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].onap-model-information.model-invariant-uuid},
+                                    "model-customization-uuid": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].onap-model-information.model-customization-uuid},
+                                    "model-uuid": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].onap-model-information.model-uuid},
+                                    "model-version": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].onap-model-information.model-version},
+                                    "model-name": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].onap-model-information.model-name}
+                                },
+								"nfc-naming-code": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].nfc-naming-code},
+								"vm-type-tag": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-type-tag},
+								"vm-count": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-count},
+                                "vm-names": {
+									"vm-name": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vm-name_length:
+										${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vm-name[${2}]},
+}
+									],
+                                    "vnfc-names": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names_length:
+                                        {
+                                            "vnfc-name": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-name},
+                                            "vnfc-networks": {
+                                                "vnfc-network-data": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data_length:
+                                                    {
+                                                        "vnfc-network-role": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].vnfc-network-role},
+                                                        "vnfc-type": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].vnfc-type},
+                                                        "connection-point": {
+                                                            "connection-point-id": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].connection-point.connection-point-id},
+                                                            "port-id": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].connection-point.port-id},
+                                                            "vlan-data": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].connection-point.vlan-data_length:
+                                                            	{
+                                                                	"vlan-uuid": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].connection-point.vlan-data[${4}].vlan-uuid},
+                                                                	"vlan-tag-id": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].connection-point.vlan-data[${4}].vlan-tag-id},
+                                                                	"vlan-tag-description": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].connection-point.vlan-data[${4}].vlan-tag-description},
+                                                                	"vlan-role": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].connection-point.vlan-data[${4}].vlan-role}
+                                                            	},
+}
+                                                        	]
+                                                    	},
+														"vnfc-subnet": {
+															"vnfc-subnet-role": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].vnfc-subnet.vnfc-subnet-role},
+															"vnfc-ip-assignments": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].vnfc-subnet.vnfc-ip-assignments_length:
+																{
+																	"vnfc-address-family": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].vnfc-subnet.vnfc-ip-assignments[${4}].vnfc-ip-assignments},
+																	"vnfc-subnet-dhcp": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].vnfc-subnet.vnfc-ip-assignments[${4}].vnfc-subnet-dhcp},
+																	"vnfc-subnet-ip-count": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].vnfc-subnet.vnfc-ip-assignments[${4}].vnfc-subnet-ip-count},
+																	"vnfc-subnet-ip": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].vnfc-subnet.vnfc-ip-assignments[${4}].vnfc-subnet-ip_length:
+																		{
+																			"vnfc-ip-address": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].vnfc-subnet.vnfc-ip-assignments[${4}].vnfc-subnet-ip[${5}].vnfc-ip-address},
+																			"vnfc-client-key": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].vnfc-subnet.vnfc-ip-assignments[${4}].vnfc-subnet-ip[${5}].vnfc-client-key},
+																			"ip-type": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-names.vnfc-names[${2}].vnfc-networks.vnfc-network-data[${3}].vnfc-subnet.vnfc-ip-assignments[${4}].vnfc-subnet-ip[${5}].ip-type}
+																		}
+}
+																		]
+																}
+}
+															]
+														}
+													},
+}
+                                                ]
+											}
+										},
+}
+                                    ]
+                                },
+								"vm-networks": {
+									"vm-network": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network_length:
+										{
+											"network-role": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].network-role},
+											"network-role-tag": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].network-role-tag},
+											"network-information-items": {
+												"network-information-item": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].network-information-items.network-information-item_length:
+													{
+														"ip-version": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].network-information-items.network-information-item[${3}].ip-version},
+														"use-dhcp": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].network-information-items.network-information-item[${3}].use-dhcp},
+														"ip-count": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].network-information-items.network-information-item[${3}].ip-count},
+														"network-ips": {
+															"network-ip": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].network-information-items.network-information-item[${3}].network-ips.network-ip_length:
+																${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].network-information-items.network-information-item[${3}].network-ips.network-ip[${4}]},
+}
+															]
+														}
+													},
+}
+												]
+											},
+											"mac-addresses": {
+												"mac-address": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].mac-addresses.mac-address_length:
+													${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].mac-addresses.mac-address[${3}]},
+}
+												]
+											},
+											"floating-ips": {
+												"floating-ip-v4": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].floating-ips.floating-ip-v4_length:
+													${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].floating-ips.floating-ip-v4[${3}]},
+}
+												],
+												"floating-ip-v6": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].floating-ips.floating-ip-v6_length:
+													${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].floating-ips.floating-ip-v6[${3}]},
+}
+												]
+											},
+											"interface-route-prefixes": {
+												"interface-route-prefix": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].interface-route-prefixes.interface-route-prefix:
+													${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].interface-route-prefixes.interface-route-prefix[${3}]},
+}
+												]
+											},
+											"is-trunked": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].is-trunked},
+											"segmentation-id": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].segmentation-id},
+											"related-networks": {
+												"related-network": [
+${repeat:vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].related-networks.related-network_length:
+													{
+														"network-id": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].related-networks.related-network[${3}].network-id},
+														"network-role": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].related-networks.related-network[${3}].network-role},
+														"vlan-tags": {
+															"vlan-interface": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].related-networks.related-network[${3}].vlan-tags.vlan-interface},
+															"upper-tag-id": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].related-networks.related-network[${3}].vlan-tags.upper-tag-id},
+															"lower-tag-id": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].related-networks.related-network[${3}].vlan-tags.lower-tag-id},
+															"is-private": ${vf-module-data.vf-module-topology.vf-module-assignments.vms.vm[${1}].vm-networks.vm-network[${2}].related-networks.related-network[${3}].vlan-tags.is-private}
+														}
+													},
+}
+												]
+											}
+										},
+}
+									]
+								}
+							},
+}
+                        ]
+                    }
+                },
+                "vf-module-parameters": {
+                    "param": [
+${repeat:vf-module-data.vf-module-topology.vf-module-parameters.param_length:
+                        {
+                            "name": ${vf-module-data.vf-module-topology.vf-module-parameters.param[${1}].name},
+                            "value": ${vf-module-data.vf-module-topology.vf-module-parameters.param[${1}].value},
+                            "resource-resolution-data": {
+                                "resource-key": [
+${repeat:vf-module-data.vf-module-topology.vf-module-parameters.param[${1}].resource-resolution-data.resource-key_length:
+                                    {
+                                        "name": ${vf-module-data.vf-module-topology.vf-module-parameters.param[${1}].resource-resolution-data.resource-key[${2}].name},
+                                        "value": ${vf-module-data.vf-module-topology.vf-module-parameters.param[${1}].resource-resolution-data.resource-key[${2}].value}
+                                    },
+}
+                                ],
+                                "status": ${vf-module-data.vf-module-topology.vf-module-parameters.param[${1}].resource-resolution-data.status},
+                                "capability-name": ${vf-module-data.vf-module-topology.vf-module-parameters.param[${1}].resource-resolution-data.capability-name}
+                            },
+                        },
+}
+                    ]
+                },
+                "sdnc-generated-cloud-resources": ${vf-module-data.vf-module-topology.sdnc-generated-cloud-resources}
+            },
+            "vf-module-level-oper-status": {
+                "order-status": ${vf-module-data.vf-module-level-oper-status.order-status},
+                "last-rpc-action": ${vf-module-data.vf-module-level-oper-status.last-rpc-action},
+                "last-action": ${vf-module-data.vf-module-level-oper-status.last-action},
+                "last-svc-request-id": ${vf-module-data.vf-module-level-oper-status.last-svc-request-id},
+                "last-order-status": ${vf-module-data.vf-module-level-oper-status.last-order-status},
+                "create-timestamp": ${vf-module-data.vf-module-level-oper-status.create-timestamp},
+                "modify-timestamp": ${vf-module-data.vf-module-level-oper-status.modify-timestamp}
+            }
+        }
+    }]
+}
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vfmodule-vim-parameters.vgw.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vfmodule-vim-parameters.vgw.json
new file mode 100644
index 0000000..72c2dfe
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vfmodule-vim-parameters.vgw.json
@@ -0,0 +1,79 @@
+{
+  "GENERIC-RESOURCE-API:vf-module": [
+    {
+      "GENERIC-RESOURCE-API:vf-module-id": ${tmp.service.vnf.vf-module.vf-module-id},
+      "GENERIC-RESOURCE-API:vf-module-data": {
+        "GENERIC-RESOURCE-API:vf-module-topology": {
+          "GENERIC-RESOURCE-API:vf-module-parameters": {
+            "GENERIC-RESOURCE-API:param": [
+              {
+                "name": "public_net_id",
+                "value": "external"
+              },
+              {
+                "name": "mux_gw_private_subnet_id",
+                "value": "zdfw1muxgw01_private"
+              },
+              {
+                "name": "mux_gw_private_net_id",
+                "value": "zdfw1muxgw01_private"
+              },
+              {
+                "name": "mux_gw_private_subnet_id",
+                "value": "zdfw1muxgw01_sub_private"
+              },
+              {
+                "name": "mux_gw_private_net_cidr",
+                "value": "10.5.0.0/24"
+              },
+              {
+                "name": "cpe_public_net_id",
+                "value": "vCPEInfraCPEPUBLIC110306"
+              },
+              {
+                "name": "cpe_public_subnet_id",
+                "value": "vCPEInfraCPEPUBLICSUB110306"
+              },
+              {
+                "name": "cpe_public_net_cidr",
+                "value": "10.2.0.0/24"
+              },
+              {
+                "name": "onap_private_net_id",
+                "value": "oam_onap_hUnI"
+              },
+              {
+                "name": "onap_private_subnet_id",
+                "value": "oam_onap_hUnI"
+              },
+              {
+                "name": "onap_private_net_cidr",
+                "value": "10.0.0.0/16"
+              },
+              {
+                "name": "vgw_private_ip_0",
+                "value": "10.5.0.22"
+              },
+              {
+                "name": "vgw_private_ip_1",
+                "value": "10.0.101.30"
+              },
+              {
+                "name": "vgw_name_0",
+                "value": "zdcpe1cpe01gw01_110801"
+              },
+              {
+                "name": "mux_ip_addr",
+                "value": "10.5.0.21"
+              },
+              {
+                "name": "vg_vgmux_tunnel_vni",
+                "value": ${tmp.service.vnf.vf-module.vg-mux-tunnel-vni}
+              }
+            ]
+          }
+        }
+      }
+    }
+  ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vnf-data-assign.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vnf-data-assign.json
new file mode 100644
index 0000000..74ac8f7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vnf-data-assign.json
@@ -0,0 +1,250 @@
+{
+	"vnf": [{
+		"vnf-id": ${vnf-topology-operation-input.vnf-information.vnf-id},
+		"vnf-data": {
+			"sdnc-request-header": {
+				"svc-request-id": ${vnf-data.sdnc-request-header.svc-request-id},
+				"svc-action": ${vnf-data.sdnc-request-header.svc-action},
+				"svc-notification-url": ${vnf-data.sdnc-request-header.svc-notification-url}
+			},
+			"request-information": {
+				"request-id": ${vnf-data.request-information.request-id},
+				"request-action": ${vnf-data.request-information.request-action},
+				"source": ${vnf-data.request-information.source},
+				"notification-url": ${vnf-data.request-information.notification-url},
+				"order-number": ${vnf-data.request-information.order-number},
+				"order-version": ${vnf-data.request-information.order-version}
+			},
+			"service-information": {
+				"service-id": ${vnf-data.service-information.service-id},
+				"subscription-service-type": ${vnf-data.service-information.subscription-service-type},
+				"onap-model-information": {
+					"model-invariant-uuid": ${vnf-data.service-information.onap-model-information.model-invariant-uuid},
+					"model-customization-uuid": ${vnf-data.service-information.onap-model-information.model-customization-uuid},
+					"model-uuid": ${vnf-data.service-information.onap-model-information.model-uuid},
+					"model-version": ${vnf-data.service-information.onap-model-information.model-version},
+					"model-name": ${vnf-data.service-information.onap-model-information.model-name}
+				},
+				"service-instance-id": ${vnf-data.service-information.service-instance-id},
+				"global-customer-id": ${vnf-data.service-information.global-customer-id},
+				"subscriber-name": ${vnf-data.service-information.subscriber-name}
+			},
+			"vnf-information": {
+				"vnf-id": ${vnf-data.vnf-information.vnf-id},
+				"vnf-type": ${vnf-data.vnf-information.vnf-type},
+				"vnf-name": ${vnf-data.vnf-information.vnf-name},
+				"onap-model-information": {
+					"model-invariant-uuid": ${vnf-data.vnf-information.onap-model-information.model-invariant-uuid},
+					"model-customization-uuid": ${vnf-data.vnf-information.onap-model-information.model-customization-uuid},
+					"model-uuid": ${vnf-data.vnf-information.onap-model-information.model-uuid},
+					"model-version": ${vnf-data.vnf-information.onap-model-information.model-version},
+					"model-name": ${vnf-data.vnf-information.onap-model-information.model-name}
+				}
+			},
+			"vnf-request-input": {
+				"request-version": ${vnf-data.vnf-request-input.request-version},
+				"vnf-name": ${vnf-data.vnf-request-input.vnf-name},
+				"tenant": ${vnf-data.vnf-request-input.tenant},
+				"aic-cloud-region": ${vnf-data.vnf-request-input.aic-cloud-region},
+				"cloud-owner": ${vnf-data.vnf-request-input.cloud-owner},
+				"aic-clli": ${vnf-data.vnf-request-input.aic-clli},
+				"vnf-networks": {
+					"vnf-network": [
+${repeat:vnf-data.vnf-request-input.vnf-networks.vnf-network_length:
+						{
+							"network-role": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].network-role},
+							"network-name": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].network-name},
+							"neutron-id": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].neutron-id},
+							"network-id": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].network-id},
+							"contrail-network-fqdn": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].contrail-network-fqdn},
+							"subnets-data": {
+								"subnet-data": [
+${repeat:vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].subnets-data.subnet-data_length:
+									{
+										"sdnc-subnet-id": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].sdnc-subnet-id},
+										"subnet-role": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].subnet-role},
+										"subnet-name": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].subnet-name},
+										"ip-version": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].ip-version},
+										"subnet-id": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].subnet-id},
+										"dhcp-enabled": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].dhcp-enabled},
+										"network-start-address": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].network-start-address},
+										"gateway-address": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].gateway-address},
+										"cidr-mask": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].cidr-mask}
+									},
+}
+								]
+							},
+							"is-trunked": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].is-trunked},
+							"segmentation-id": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].segmentation-id},
+							"related-networks": {
+								"related-network": [
+${repeat:vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].related-networks.related-network_length:
+									{
+										"network-id": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].related-networks.related-network[${2}].network-id},
+										"network-role": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].related-networks.related-network[${2}].network-role},
+										"vlan-tags": {
+											"vlan-interface": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].related-networks.related-network[${2}].vlan-tags.vlan-interface},
+											"upper-tag-id": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].related-networks.related-network[${2}].vlan-tags.upper-tag-id},
+											"lower-tag-id": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].related-networks.related-network[${2}].vlan-tags.lower-tag-id},
+											"is-private": ${vnf-data.vnf-request-input.vnf-networks.vnf-network[${1}].related-networks.related-network[${2}].vlan-tags.is-private}
+										}
+									},
+}
+								]
+							},
+						},
+}
+					]
+				},
+				"vnf-network-instance-group-ids": [
+${repeat:vnf-data.vnf-request-input.vnf-network-instance-group-ids_length:
+					{
+						"vnf-network-instance-group-id": ${vnf-data.vnf-request-input.vnf-network-instance-group-ids[${1}].vnf-network-instance-group-id}
+					},
+}
+				],
+				"vnf-input-parameters": {
+					"param": [
+${repeat:vnf-data.vnf-request-input.vnf-input-parameters.param_length:
+						{
+							"name": ${vnf-data.vnf-request-input.vnf-input-parameters.param[${1}].name},
+							"value": ${vnf-data.vnf-request-input.vnf-input-parameters.param[${1}].value}
+						},
+}
+					]
+				}
+			},
+			"vnf-topology": {
+				"vnf-topology-identifier-structure": {
+					"vnf-id": ${vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-id},
+					"vnf-type": ${vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-type},
+					"nf-type": ${vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-type},
+					"nf-role": ${vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-role},
+					"nf-function": ${vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-function},
+					"nf-code": ${vnf-data.vnf-topology.vnf-topology-identifier-structure.nf-code},
+					"vnf-name": ${vnf-data.vnf-topology.vnf-topology-identifier-structure.vnf-name},
+				},
+				"tenant": ${vnf-data.vnf-topology.tenant},
+				"aic-cloud-region": ${vnf-data.vnf-topology.aic-cloud-region},
+				"cloud-owner": ${vnf-data.vnf-topology.cloud-owner},
+				"aic-clli": ${vnf-data.vnf-topology.aic-clli},
+				"onap-model-information": {
+					"model-invariant-uuid": ${vnf-data.vnf-topology.onap-model-information.model-invariant-uuid},
+					"model-customization-uuid": ${vnf-data.vnf-topology.onap-model-information.model-customization-uuid},
+					"model-uuid": ${vnf-data.vnf-topology.onap-model-information.model-uuid},
+					"model-version": ${vnf-data.vnf-topology.onap-model-information.model-version},
+					"model-name": ${vnf-data.vnf-topology.onap-model-information.model-name},
+				},
+				"vnf-resource-assignments": {
+					"vnf-status": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-status},
+					"availability-zones": {
+						"availability-zone": [
+${repeat:vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone_length:
+							${vnf-data.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[${1}]},
+}
+						]
+					},
+					"vnf-networks": {
+						"vnf-network": [
+${repeat:vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network_length:
+							{
+								"network-role": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].network-role},
+								"network-name": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].network-name},
+								"neutron-id": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].neutron-id},
+								"network-id": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].network-id},
+								"contrail-network-fqdn": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].contrail-network-fqdn},
+								"subnets-data": {
+									"subnet-data": [
+${repeat:vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].subnets-data.subnet-data_length:
+										{
+											"sdnc-subnet-id": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].sdnc-subnet-id},
+											"subnet-role": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].subnet-role},
+											"subnet-name": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].subnet-name},
+											"ip-version": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].ip-version},
+											"subnet-id": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].subnet-id},
+											"dhcp-enabled": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].dhcp-enabled},
+											"network-start-address": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].network-start-address},
+											"gateway-address": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].gateway-address},
+											"cidr-mask": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].subnets-data.subnet-data[${2}].cidr-mask}
+										},
+}
+									]
+								},
+								"is-trunked": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].is-trunked},
+								"segmentation-id": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].segmentation-id},
+								"related-networks": {
+									"related-network": [
+${repeat:vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].related-networks.related-network_length:
+										{
+											"network-id": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].related-networks.related-network[${2}].network-id},
+											"network-role": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].related-networks.related-network[${2}].network-role},
+											"vlan-tags": {
+												"vlan-interface": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].related-networks.related-network[${2}].vlan-tags.vlan-interface},
+												"upper-tag-id": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].related-networks.related-network[${2}].vlan-tags.upper-tag-id},
+												"lower-tag-id": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].related-networks.related-network[${2}].vlan-tags.lower-tag-id},
+												"is-private": ${vnf-data.vnf-topology.vnf-resource-assignments.vnf-networks.vnf-network[${1}].related-networks.related-network[${2}].vlan-tags.is-private}
+											}
+										},
+}
+									]
+								}
+							},
+}
+						]
+					}
+				},
+				"vnf-parameters-data": {
+					"param": [
+${repeat:vnf-data.vnf-topology.vnf-parameters-data.param_length:
+						{
+							"name": ${vnf-data.vnf-topology.vnf-parameters-data.param[${1}].name},
+							"value": ${vnf-data.vnf-topology.vnf-parameters-data.param[${1}].value}
+						},
+}
+					]
+				},
+				"sdnc-generated-cloud-resources": ${vnf-data.vnf-topology.sdnc-generated-cloud-resources},
+			},
+			"vnf-network-collections": {
+				"vnf-network-collection": [
+${repeat:vnf-data.vnf-network-collections.vnf-network-collection_length:
+					{
+						"network-instance-group-function": ${vnf-data.vnf-network-collections.vnf-network-collection[${1}].network-instance-group-function},
+						"network-instance-group-id": ${vnf-data.vnf-network-collections.vnf-network-collection[${1}].network-instance-group-id},
+						"network-collection-service-instance-id": ${vnf-data.vnf-network-collections.vnf-network-collection[${1}].network-collection-service-instance-id},
+						"network-collection-customization-uuid": ${vnf-data.vnf-network-collections.vnf-network-collection[${1}].network-collection-customization-uuid},
+						"networks": {
+							"network": [
+${repeat:vnf-data.vnf-network-collections.vnf-network-collection[${1}].networks.network_length:
+								{
+									"network-id": ${vnf-data.vnf-network-collections.vnf-network-collection[${1}].networks.network[${2}].network-id},
+									"neutron-network-id": ${vnf-data.vnf-network-collections.vnf-network-collection[${1}].networks.network[${2}].neutron-network-id}
+								},
+}
+							]
+						},
+						"vnf-floating-ip": {
+							"ip-addresses": {
+								"ipv4-address": ${vnf-data.vnf-network-collections.vnf-network-collection[${1}].vnf-floating-ip.ip-addresses.ipv4-address},
+								"ipv6-address": ${vnf-data.vnf-network-collections.vnf-network-collection[${1}].vnf-floating-ip.ip-addresses.ipv6-address},
+								"vipv4-address": ${vnf-data.vnf-network-collections.vnf-network-collection[${1}].vnf-floating-ip.ip-addresses.vipv4-address},
+								"vipv6-address": ${vnf-data.vnf-network-collections.vnf-network-collection[${1}].vnf-floating-ip.ip-addresses.vipv6-address}
+							}
+						}
+					},
+}
+				]
+			},
+			"vnf-level-oper-status": {
+				"order-status": ${vnf-data.vnf-level-oper-status.order-status},
+				"last-rpc-action": ${vnf-data.vnf-level-oper-status.last-rpc-action},
+				"last-action": ${vnf-data.vnf-level-oper-status.last-action},
+				"last-svc-request-id": ${vnf-data.vnf-level-oper-status.last-svc-request-id},
+				"last-order-status": ${vnf-data.vnf-level-oper-status.last-order-status},
+				"create-timestamp": ${vnf-data.vnf-level-oper-status.create-timestamp},
+				"modify-timestamp": ${vnf-data.vnf-level-oper-status.modify-timestamp}
+			}
+		}
+	}]
+}
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vnf-provided-allotted-resources.json b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vnf-provided-allotted-resources.json
new file mode 100755
index 0000000..3c73fe4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/json/vnf-provided-allotted-resources.json
@@ -0,0 +1,10 @@
+{
+        vnf-provided-allotted-resources: 
+        {
+                "vnf-provided-ar-id": [
+                        ${repeat:vnf-ar.vnf-provided-allotted-resources.vnf-provided-ar-id_length:
+                        ${vnf-ar.vnf-provided-allotted-resources.vnf-provided-ar-id[${1}]},
+                        }
+                ]
+        }
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/multipartfile/README.md b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/multipartfile/README.md
new file mode 100644
index 0000000..454d373
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/multipartfile/README.md
@@ -0,0 +1,3 @@
+This source folder contains multi part form data files used as part of RestApiCallNode plugin usage by DGs.
+
+
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/velocity/oofpcipoc-dmaap-publish-modifyconfig-resp-payload-template.vtl b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/velocity/oofpcipoc-dmaap-publish-modifyconfig-resp-payload-template.vtl
new file mode 100644
index 0000000..2f6957c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/velocity/oofpcipoc-dmaap-publish-modifyconfig-resp-payload-template.vtl
@@ -0,0 +1,31 @@
+## Velocity template for configPCI response payload
+#set($begCntr=0)
+#set($endCntr=0)
+#set($entries=$ctx.getAttribute("configuration-phy-cell-id-input.fap-service-number-of-entries"))
+#set($endCntr=$endCntr.parseInt($entries))
+#set( $endCntr = $endCntr - 1)
+{
+        "Configurations": [ #foreach($no in [$begCntr..$endCntr]) {"Status": {
+                        "Code":  "$ctx.getAttribute("prop.oofpcipoc-dmaap-config-resp.status-code")",
+                        "Value": "$ctx.getAttribute("prop.oofpcipoc-dmaap-config-resp.status-value")"
+                },
+                "data": {
+                        "FAPService": {
+                                "alias": "$ctx.getAttribute("configuration-phy-cell-id-input.fap-service[$no].alias")",
+                                "X0005b9Lte": {
+                                        "phyCellIdInUse": "$ctx.getAttribute("configuration-phy-cell-id-input.fap-service[$no].phy-cell-id-in-use")",
+                                        "pnfName": "$ctx.getAttribute("configuration-phy-cell-id-input.fap-service[$no].pnf-name")"
+                                },
+                                "CellConfig": {
+                                        "LTE": {
+                                                "RAN": {
+                                                        "Common": {
+                                                                "CellIdentity": "$ctx.getAttribute("configuration-phy-cell-id-input.fap-service[$no].cid")"
+                                                        }
+                                                }
+                                        }
+                                }
+                        }
+                }
+        } #if( $foreach.count == $endCntr), #end #end ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/velocity/oofpcipoc-dmaap-publish-modifyconfiganr-resp-payload-template.vtl b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/velocity/oofpcipoc-dmaap-publish-modifyconfiganr-resp-payload-template.vtl
new file mode 100644
index 0000000..700eb73
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restapi-templates/src/main/velocity/oofpcipoc-dmaap-publish-modifyconfiganr-resp-payload-template.vtl
@@ -0,0 +1,38 @@
+## Velocity template for modifyconfigANR response payload
+#set($begCntr=0)
+#set($endCntr=0)
+#set($entries=$ctx.getAttribute("generic-neighbor-configuration-input.lte-cell-number-of-entries"))
+#set($endCntr=$endCntr.parseInt($entries))
+#set( $endCntr = $endCntr - 1)
+{
+        "Configurations": [{
+                "Status": {
+                        "Code": "$ctx.getAttribute("prop.oofpcipoc-dmaap-config-resp.status-code")",
+                        "Value": "$ctx.getAttribute("prop.oofpcipoc-dmaap-config-resp.status-value")"
+                },
+                "data": {
+                        "FAPService": {
+                                "alias": "$ctx.getAttribute("generic-neighbor-configuration-input.alias")",
+                                "CellConfig": {
+                                        "LTE": {
+                                                "RAN": {
+                                                        "Common": {
+                                                                "CellIdentity": "$ctx.getAttribute("generic-neighbor-configuration-input.alias")"
+                                                        },
+                                                        "NeighborListInUse": {
+                                                                "LTECellNumberOfEntries": "$ctx.getAttribute("generic-neighbor-configuration-input.lte-cell-number-of-entries")",
+                                                                "LTECell": [ #foreach($no in [$begCntr..$endCntr]) {
+                                                                        "PLMNID": "$ctx.getAttribute("generic-neighbor-configuration-input.neighbor-list-in-use[$no].plmnid")",
+                                                                        "CID": "$ctx.getAttribute("generic-neighbor-configuration-input.neighbor-list-in-use[$no].cid")",
+                                                                        "PhyCellID": "$ctx.getAttribute("generic-neighbor-configuration-input.neighbor-list-in-use[$no].phy-cell-id")",
+                                                                        "PNFName": "$ctx.getAttribute("generic-neighbor-configuration-input.neighbor-list-in-use[$no].pnf-name")",
+                                                                        "Blacklisted": "$ctx.getAttribute("generic-neighbor-configuration-input.neighbor-list-in-use[$no].blacklisted")"
+                                                                } #if( $foreach.count == $endCntr), #end #end ]
+                                                        }
+                                                }
+                                        }
+                                }
+                        }
+                }
+        }   ]
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/pom.xml b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/pom.xml
new file mode 100644
index 0000000..b35c963
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/pom.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>odlparent-lite</artifactId>
+        <version>1.4.3</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.onap.sdnc.oam</groupId>
+    <artifactId>platform-logic-restconfapi-yang</artifactId>
+    <version>1.7.3-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <name>sdnc-oam :: platform-logic :: ${project.artifactId}</name>
+    <description>Contains Restconf API YANG</description>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>2.6</version>
+                <executions>
+                    <execution>
+                        <id>copy-version</id>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals><!-- here the phase you need -->
+                        <phase>validate</phase>
+                        <configuration>
+                            <outputDirectory>../target/restconfapi/yang</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/yang</directory>
+                                    <includes>
+                                        <include>**/*.yang</include>
+                                    </includes>
+                                    <filtering>true</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/cds/execution-service.yang b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/cds/execution-service.yang
new file mode 100644
index 0000000..fcd35ed
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/cds/execution-service.yang
@@ -0,0 +1,43 @@
+module execution-service {
+    yang-version 1.1;
+    namespace "cds:workflow:rest";
+    prefix "cds";
+
+    revision "2019-05-21";
+
+    container process {
+        container commonHeader {
+            leaf originatorId {
+                type string;
+            }
+            leaf requestId {
+                type string;
+            }
+            leaf subRequestId {
+                type string;
+            }
+        }
+        container actionIdentifiers {
+            leaf blueprintName {
+                type string;
+            }
+            leaf blueprintVersion {
+                type string;
+            }
+            leaf actionName {
+                type string;
+            }
+            leaf mode {
+                type string;
+            }
+        }
+        container payload {
+            container resource-assignment-request {
+                leaf-list template-prefix {
+                    type string;
+                }
+                anyxml resource-assignment-properties;
+            }
+        }
+    }
+}
diff --git a/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/notification/ietf-subscribed-notifications.yang b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/notification/ietf-subscribed-notifications.yang
new file mode 100644
index 0000000..f7e01be
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/notification/ietf-subscribed-notifications.yang
@@ -0,0 +1,21 @@
+module ietf-subscribed-notifications {
+    yang-version 1;
+    namespace "ietf:subscribed:notifications:huawei";
+    prefix "notif";
+
+    revision 2018-09-08;
+
+    rpc establish-subscription {
+        input {
+            leaf encoding {
+                type string;
+            }
+        }
+
+        output {
+            leaf identifier {
+                type int16;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-eth-tran-service@2018-03-01.yang b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-eth-tran-service@2018-03-01.yang
new file mode 100644
index 0000000..cb7c8f0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-eth-tran-service@2018-03-01.yang
@@ -0,0 +1,572 @@
+module ietf-eth-tran-service {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-service";
+
+  prefix "ethtsvc";
+
+        import ietf-yang-types {
+                prefix "yang";
+        }
+
+  import ietf-te-types {
+    prefix "te-types";
+  }
+
+  import ietf-eth-tran-types {
+    prefix "etht-types";
+  }
+
+        organization
+                "Internet Engineering Task Force (IETF) CCAMP WG";
+  contact
+    "
+      WG List: <mailto:ccamp@ietf.org>
+      ID-draft editor:
+        Haomian Zheng (zhenghaomian@huawei.com);
+        Italo Busi (italo.busi@huawei.com);
+        Aihua Guo (aihuaguo@huawei.com);
+        Yunbin Xu (xuyunbin@ritt.cn);
+        Yang Zhao (zhaoyangyjy@chinamobile.com);
+        Xufeng Liu (Xufeng_Liu@jabil.com);
+        Giuseppe Fioccola (giuseppe.fioccola@telecomitalia.it);
+    ";
+
+  description
+    "This module defines a YANG data model for describing
+     the Ethernet transport services.";
+
+        revision 2018-03-01 {
+                description
+                        "Initial revision";
+                reference
+                        "draft-zheng-ccamp-client-signal-yang";
+        }
+
+  /*
+  Groupings
+  */
+
+  grouping vlan-classification {
+    description
+      "A grouping which represents classification on an 802.1Q VLAN tag.";
+
+    leaf tag-type {
+      type etht-types:eth-tag-classify;
+      description
+        "The tag type used for VLAN classification.";
+    }
+    choice individual-bundling-vlan {
+      description
+        "VLAN based classification can be individual
+         or bundling.";
+      case individual-vlan {
+        leaf vlan-value {
+          type etht-types:vlanid;
+          description
+            "VLAN ID value.";
+        }
+      }
+
+      case vlan-bundling {
+        leaf vlan-range {
+          type etht-types:vid-range-type;
+          description
+            "List of VLAN ID values.";
+        }
+      }
+    }
+  }
+
+  grouping vlan-write {
+    description
+      "A grouping which represents push/pop operations
+       of an 802.1Q VLAN tag.";
+
+    leaf tag-type {
+      type etht-types:eth-tag-type;
+      description
+        "The VLAN tag type to push/swap.";
+    }
+    leaf vlan-value {
+      type etht-types:vlanid;
+      description
+        "The VLAN ID value to push/swap.";
+    }
+  }
+
+  grouping vlan-operations {
+    description
+      "A grouping which represents VLAN operations.";
+
+      leaf pop-tags {
+      type uint8 {
+        range "1..2";
+      }
+      description
+        "The number of VLAN tags to pop (or swap if used in
+         conjunction with push-tags)";
+    }
+    container push-tags {
+      description
+        "The VLAN tags to push (or swap if used in
+         conjunction with pop-tags)";
+
+      container outer-tag {
+        presence
+          "Indicates existence of the outermost VLAN tag to
+           push/swap";
+
+        description
+          "The outermost VLAN tag to push/swap.";
+
+        uses vlan-write;
+      }
+      container second-tag {
+        must
+                                        '../outer-tag/tag-type = "s-vlan-tag-type" and ' +
+                                        'tag-type = "c-vlan-tag-type"'
+        {
+
+          error-message
+            "
+              When pushing/swapping two tags, the outermost tag must
+              be specified and of S-VLAN type and the second
+              outermost tag must be of C-VLAN tag type.
+            ";
+          description
+            "
+              For IEEE 802.1Q interoperability, when pushing/swapping
+              two tags, it is required that the outermost tag exists
+              and is an S-VLAN, and the second outermost tag is a
+              C-VLAN.
+            ";
+        }
+
+        presence
+          "Indicates existence of a second outermost VLAN tag to
+           push/swap";
+
+        description
+          "The second outermost VLAN tag to push/swap.";
+
+        uses vlan-write;
+      }
+    }
+  }
+
+  grouping bandwidth-profiles {
+    description
+      "A grouping which represent bandwidth profile configuration.";
+
+    choice direction {
+      description
+        "Whether the bandwidth profiles are symmetrical or
+         asymmetrical";
+      case symmetrical {
+        description
+          "The same bandwidth profile is used to describe the ingress
+          and the egress bandwidth profile.";
+
+        leaf ingress-egress-bandwidth-profile-name {
+          type "string";
+          description
+            "Name of the bandwidth profile.";
+        }
+      }
+      case asymmetrical {
+        description
+          "Ingress and egress bandwidth profiles can be specified.";
+        leaf ingress-bandwidth-profile-name {
+          type "string";
+          description
+            "Name of the bandwidth profile used in
+             the ingress direction.";
+        }
+        leaf egress-bandwidth-profile-name {
+          type "string";
+          description
+            "Name of the bandwidth profile used in
+             the egress direction.";
+        }
+      }
+    }
+  }
+
+  grouping etht-svc-access-parameters {
+    description
+      "ETH transport services access parameters";
+
+    leaf access-node-id {
+      type te-types:te-node-id;
+      description
+        "The identifier of the access node in
+         the ETH transport topology.";
+    }
+    leaf access-ltp-id {
+      type te-types:te-tp-id;
+      description
+        "The TE link termination point identifier, used
+         together with access-node-id to identify the
+         access LTP.";
+    }
+    leaf service-classification-type {
+      type identityref {
+        base etht-types:service-classification-type;
+      }
+      description
+        "Service classification type.";
+    }
+
+    choice service-classification {
+      description
+        "Access classification can be port-based or
+         VLAN based.";
+
+      case port-classification {
+        /* no additional information */
+      }
+
+      case vlan-classification {
+        container outer-tag {
+          presence "The outermost VLAN tag exists";
+          description
+            "Classifies traffic using the outermost VLAN tag.";
+
+          uses vlan-classification;
+        }
+        container second-tag {
+          must
+                                                '../outer-tag/tag-type = "classify-s-vlan" and ' +
+                                                'tag-type = "classify-c-vlan"'
+          {
+
+            error-message
+              "
+                When matching two tags, the outermost tag must be
+                specified and of S-VLAN type and the second
+                outermost tag must be of C-VLAN tag type.
+              ";
+            description
+              "
+                For IEEE 802.1Q interoperability, when matching two
+                tags, it is required that the outermost tag exists
+                and is an S-VLAN, and the second outermost tag is a
+                C-VLAN.
+              ";
+          }
+          presence "The second outermost VLAN tag exists";
+
+          description
+            "Classifies traffic using the second outermost VLAN tag.";
+
+          uses vlan-classification;
+        }
+      }
+    }
+
+/*
+        Open issue: can we constraints it to be used only with mp services?
+*/
+                leaf split-horizon-group {
+                        type string;
+                        description "Identify a split horizon group";
+                }
+
+    uses bandwidth-profiles;
+
+    container vlan-operations {
+        description
+          "include parameters for vlan-operation";
+      choice direction {
+        description
+          "Whether the VLAN operations are symmetrical or
+           asymmetrical";
+        case symmetrical {
+          container symmetrical-operation {
+            uses vlan-operations;
+            description
+              "Symmetrical operations.
+               Expressed in the ingress direction, but
+               the reverse operation is applied to egress traffic";
+          }
+        }
+        case asymmetrical {
+          container asymmetrical-operation {
+            description "Asymmetrical operations";
+            container ingress {
+              uses vlan-operations;
+              description "Ingress operations";
+            }
+            container egress {
+              uses vlan-operations;
+              description "Egress operations";
+            }
+          }
+        }
+      }
+    }
+  }
+
+  grouping etht-svc-tunnel-parameters {
+    description
+      "ETH transport services tunnel parameters";
+
+    leaf tunnel-name {
+      type string;
+      description
+        "TE service tunnel instance name.";
+    }
+    choice svc-multiplexing-tag {
+      description
+        "Service multiplexing is optional and flexible.";
+
+      case other {
+        /*
+         placeholder to support proprietary multiplexing
+         (for further discussion)
+        */
+                        }
+
+      case none {
+        /* no additional information is needed */
+                        }
+
+      case vlan-tag {
+        /*
+          No additional information is needed
+          The C-Tag or S-Tag used for service mulitplexing is defined
+          by the VLAN classification and operations configured in the
+          etht-svc-access-parameters grouping
+        */
+                        }
+
+      case pw {
+        /* to be completed (for further discussion) */
+                        }
+    }
+
+/*
+        Open issue: can we constraints it to be used only with mp services?
+*/
+                leaf src-split-horizon-group {
+                        type string;
+                        description "Identify a split horizon group at the Tunnel source TTP";
+                }
+                leaf dst-split-horizon-group {
+                        type string;
+                        description "Identify a split horizon group at the Tunnel destination TTP";
+                }
+  }
+
+  grouping te-topology-identifier {
+                description
+        "An identifier to uniquely identify the TE topology.";
+    leaf access-provider-id {
+      type te-types:te-global-id;
+      description
+        "An identifier to uniquely identify a provider.";
+    }
+    leaf access-client-id {
+      type te-types:te-global-id;
+      description
+        "An identifier to uniquely identify a client.";
+    }
+    leaf access-topology-id {
+      type te-types:te-topology-id;
+      description
+        "Identifies the topology the
+        service access ports belong to.";
+    }
+  }
+
+        grouping  etht-svc-pm-threshold_config {
+                description
+                        "Configuraiton parameters for Ethernet service PM thresholds.";
+
+                leaf sending-rate-high {
+                        type uint64;
+                        description
+                                "High threshold of packet sending rate in kbps.";
+                }
+                leaf sending-rate-low {
+                        type uint64;
+                        description
+                                "Low threshold of packet sending rate in kbps.";
+                }
+                leaf receiving-rate-high {
+                        type uint64;
+                        description
+                                "High threshold of packet receiving rate in kbps.";
+                }
+                leaf receiving-rate-low {
+                        type uint64;
+                        description
+                                "Low threshold of packet receiving rate in kbps.";
+                }
+        }
+
+        grouping  etht-svc-pm-stats {
+                description
+                        "Ethernet service PM statistics.";
+
+                leaf sending-rate-too-high {
+                        type uint32;
+                        description
+                                "Counter that indicates the number of times the sending rate is above the high threshold";
+                }
+                leaf sending-rate-too-low {
+                        type uint32;
+                        description
+                                "Counter that indicates the number of times the sending rate is below the low threshold";
+                }
+                leaf receiving-rate-too-high {
+                        type uint32;
+                        description
+                                "Counter that indicates the number of times the receiving rate is above the high threshold";
+                }
+                leaf receiving-rate-too-low {
+                        type uint32;
+                        description
+                                "Counter that indicates the number of times the receiving rate is below the low threshold";
+                }
+        }
+
+  grouping  etht-svc-instance_config {
+    description
+      "Configuraiton parameters for Ethernet services.";
+
+    leaf etht-svc-name {
+      type string;
+      description
+        "Name of the p2p ETH transport service.";
+    }
+
+                leaf etht-svc-descr {
+                        type string;
+                        description
+                                "Description of the ETH transport service.";
+                }
+
+                leaf etht-svc-type {
+                        type etht-types:service-type;
+                        description
+                                "Type of Ethernet service (p2p, mp2mp or rmp).";
+                        /* Add default as p2p */
+                }
+
+                uses te-topology-identifier;
+
+    list etht-svc-access-ports {
+      key access-port-id;
+      min-elements "1";
+/*
+        Open Issue:
+                Is it possible to limit the max-elements only for p2p services?
+                        max-elements "2";
+*/
+      description
+        "List of the ETH trasport services access port instances.";
+
+      leaf access-port-id {
+        type uint16;
+        description
+          "ID of the service access port instance";
+      }
+        uses etht-svc-access-parameters;
+    }
+    list etht-svc-tunnels {
+      key tunnel-name;
+      description
+        "List of the TE Tunnels supporting the ETH
+        transport service.";
+
+      uses etht-svc-tunnel-parameters;
+    }
+                container pm-config {
+                        description
+                                "ETH service performance monitoring";
+
+                        leaf pm-enable {
+                                type boolean;
+                                description
+                                        "Boolean value indicating whether PM is enabled.";
+                        }
+                        uses etht-svc-pm-threshold_config;
+                }
+    leaf admin-status {
+      type identityref {
+        base te-types:tunnel-state-type;
+      }
+      default te-types:tunnel-state-up;
+      description "ETH service administrative state.";
+    }
+        }
+
+  grouping  etht-svc-instance_state {
+    description
+      "State parameters for Ethernet services.";
+
+    leaf operational-state {
+          type identityref {
+        base te-types:tunnel-state-type;
+      }
+      default te-types:tunnel-state-up;
+          description "ETH service operational state.";
+    }
+    leaf provisioning-state {
+      type identityref {
+        base te-types:lsp-state-type;
+      }
+      description "ETH service provisioning state.";
+    }
+                leaf creation-time {
+                        type yang:date-and-time;
+                        description
+                                "Time of ETH service creation.";
+                }
+                leaf last-updated-time {
+                        type yang:date-and-time;
+                        description
+                                "Time of ETH service last update.";
+                }
+                uses etht-svc-pm-stats;
+  }
+
+  /*
+  Data nodes
+  */
+
+  container etht-svc {
+    description
+      "ETH transport services.";
+
+    container globals {
+      description
+      "ETH profile information.";
+      list etht-svc-bandwidth-profiles {
+        key bandwidth-profile-name;
+        description
+          "List of bandwidth profile templates used by
+           Ethernet services.";
+
+        uses etht-types:etht-bandwidth-profiles;
+      }
+    }
+
+    list etht-svc-instances {
+      key etht-svc-name;
+      description
+        "The list of p2p ETH transport service instances";
+
+      uses etht-svc-instance_config;
+
+      container state {
+        config false;
+        description
+          "Ethernet Service states.";
+
+        uses etht-svc-instance_state;
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-eth-tran-types@2018-05-24.yang b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-eth-tran-types@2018-05-24.yang
new file mode 100644
index 0000000..3775f36
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-eth-tran-types@2018-05-24.yang
@@ -0,0 +1,303 @@
+module ietf-eth-tran-types {
+  namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-types";
+  prefix "etht-types";
+
+  organization
+    "Internet Engineering Task Force (IETF) CCAMP WG";
+  contact
+    "
+      WG List: <mailto:ccamp@ietf.org>
+      ID-draft editor:
+        Haomian Zheng (zhenghaomian@huawei.com);
+        Italo Busi (italo.busi@huawei.com);
+        Aihua Guo (aihuaguo@huawei.com);
+        Yunbin Xu (xuyunbin@ritt.cn);
+        Yang Zhao (zhaoyangyjy@chinamobile.com);
+        Xufeng Liu (Xufeng_Liu@jabil.com);
+        Giuseppe Fioccola (giuseppe.fioccola@telecomitalia.it);
+    ";
+
+  description
+    "This module defines the ETH transport types.";
+
+  revision 2018-05-24 {
+    description
+      "Initial revision";
+    reference
+      "draft-zheng-ccamp-client-signal-yang";
+  }
+
+  /*
+   * Identities
+   */
+
+  identity eth-vlan-tag-type {
+    description
+      "ETH VLAN tag type.";
+  }
+
+  identity c-vlan-tag-type {
+    base eth-vlan-tag-type;
+    description
+      "802.1Q Customer VLAN";
+  }
+
+  identity s-vlan-tag-type {
+    base eth-vlan-tag-type;
+    description
+      "802.1Q Service VLAN (QinQ)";
+  }
+
+  identity service-classification-type {
+    description
+      "Service classification.";
+  }
+
+  identity port-classification {
+    base service-classification-type;
+    description
+      "Port classification.";
+  }
+
+  identity vlan-classification {
+    base service-classification-type;
+    description
+      "VLAN classification.";
+  }
+
+  identity eth-vlan-tag-classify {
+    description
+      "VLAN tag classification.";
+  }
+
+  identity classify-c-vlan {
+    base eth-vlan-tag-classify;
+    description
+      "Classify 802.1Q Customer VLAN tag.
+       Only C-tag type is accepted";
+  }
+
+  identity classify-s-vlan {
+    base eth-vlan-tag-classify;
+    description
+      "Classify 802.1Q Service VLAN (QinQ) tag.
+       Only S-tag type is accepted";
+  }
+
+  identity classify-s-or-c-vlan {
+    base eth-vlan-tag-classify;
+    description
+      "Classify S-VLAN or C-VLAN tag-classify.
+       Either tag is accepted";
+  }
+
+  identity bandwidth-profile-type {
+    description
+      "Bandwidth Profile Types";
+  }
+
+  identity mef-10-bwp {
+    base bandwidth-profile-type;
+    description
+      "MEF 10 Bandwidth Profile";
+  }
+  identity rfc-2697-bwp {
+    base bandwidth-profile-type;
+    description
+      "RFC 2697 Bandwidth Profile";
+  }
+
+  identity rfc-2698-bwp {
+    base bandwidth-profile-type;
+    description
+      "RFC 2698 Bandwidth Profile";
+  }
+
+  identity rfc-4115-bwp {
+    base bandwidth-profile-type;
+    description
+      "RFC 4115 Bandwidth Profile";
+  }
+
+  identity service-type {
+    description
+      "Type of Ethernet service.";
+  }
+
+  identity p2p-svc {
+    base service-type;
+    description
+      "Ethernet point-to-point service (EPL, EVPL).";
+  }
+
+  identity rmp-svc {
+    base service-type;
+    description
+      "Ethernet rooted-multitpoint service (E-TREE, EP-TREE).";
+  }
+
+  identity mp2mp-svc {
+    base service-type;
+    description
+      "Ethernet multipoint-to-multitpoint service (E-LAN, EP-LAN).";
+  }
+
+  /*
+   * Type Definitions
+   */
+
+  typedef eth-tag-type {
+    type identityref {
+      base eth-vlan-tag-type;
+    }
+    description
+      "Identifies a specific ETH VLAN tag type.";
+  }
+
+  typedef eth-tag-classify {
+    type identityref {
+      base eth-vlan-tag-classify;
+    }
+    description
+      "Identifies a specific VLAN tag classification.";
+  }
+
+  typedef vlanid {
+    type uint16 {
+      range "1..4094";
+    }
+    description
+      "The 12-bit VLAN-ID used in the VLAN Tag header.";
+  }
+
+  typedef vid-range-type {
+    type string {
+      pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?" +
+              "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)";
+    }
+    description
+      "A list of VLAN Ids, or non overlapping VLAN ranges, in
+       ascending order, between 1 and 4094.
+       This type is used to match an ordered list of VLAN Ids, or
+       contiguous ranges of VLAN Ids. Valid VLAN Ids must be in the
+       range 1 to 4094, and included in the list in non overlapping
+       ascending order.
+       For example: 1,10-100,50,500-1000";
+  }
+
+  typedef bandwidth-profile-type {
+    type identityref {
+      base bandwidth-profile-type;
+    }
+    description
+      "Identifies a specific Bandwidth Profile type.";
+    }
+
+  typedef service-type {
+    type identityref {
+      base service-type;
+    }
+    description
+      "Identifies the type of Ethernet service.";
+  }
+
+  /*
+   * Grouping Definitions
+   */
+
+  grouping etht-bandwidth-profiles {
+    description
+      "Bandwidth profile configuration paramters.";
+
+    leaf bandwidth-profile-name {
+      type string;
+      description
+        "Name of the bandwidth profile.";
+    }
+    leaf bandwidth-profile-type {
+      type etht-types:bandwidth-profile-type;
+      description
+        "The type of bandwidth profile.";
+    }
+    leaf CIR {
+      type uint64;
+      description
+        "Committed Information Rate in Kbps";
+    }
+    leaf CBS {
+      type uint64;
+      description
+        "Committed Burst Size in in KBytes";
+    }
+    leaf EIR {
+      type uint64;
+/*
+ * Open Issue: need to indicate that EIR is not supported by RFC 2697
+ *   must
+ *     '../bw-profile-type = "mef-10-bwp" or ' +
+ *     '../bw-profile-type = "rfc-2698-bwp" or ' +
+ *     '../bw-profile-type = "rfc-4115-bwp"'
+ *
+ *   must
+ *     '../bw-profile-type != "rfc-2697-bwp"'
+*/
+      description
+        "Excess Information Rate in Kbps
+         In case of RFC 2698, PIR = CIR + EIR";
+    }
+    leaf EBS {
+      type uint64;
+      description
+        "Excess Burst Size in KBytes.
+         In case of RFC 2698, PBS = CBS + EBS";
+    }
+    leaf color-aware {
+      type boolean;
+      description
+        "Indicates weather the color-mode is color-aware or color-blind.";
+    }
+    leaf coupling-flag {
+      type boolean;
+/*
+ * Open issue: need to indicate that Coupling Flag is defined only for MEF 10
+ *
+ *   must
+ *     '../bw-profile-type = "mef-10-bwp"'
+ */
+      description
+        "Coupling Flag.";
+    }
+  }
+
+  grouping eth-bandwidth {
+    leaf eth-bandwidth {
+      type uint64 {
+        range "0..10000000000";
+      }
+      units "Kbps";
+      description
+        "Available bandwith value expressed in kilobits per second";
+    }
+  }
+
+  grouping eth-label-restriction {
+          container eth-label-restriction {
+      leaf tag-type {
+        type etht-types:eth-tag-type;
+        description "VLAN tag type.";
+      }
+      leaf priority {
+              type uint8;
+              description "priority.";
+            }
+    }
+  }
+
+  grouping eth-label {
+    leaf vlanid {
+      type etht-types:vlanid;
+        description
+          "VLAN tag id.";
+      }
+    }
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-inet-types.yang b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-inet-types.yang
new file mode 100644
index 0000000..c4033b8
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-inet-types.yang
@@ -0,0 +1,430 @@
+module ietf-inet-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+  prefix "inet";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types for Internet addresses and related things.
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - ip-address-no-zone
+      - ipv4-address-no-zone
+      - ipv6-address-no-zone";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of types related to protocol fields ***/
+
+  typedef ip-version {
+    type enumeration {
+      enum unknown {
+        value "0";
+        description
+         "An unknown or unspecified version of the Internet
+          protocol.";
+      }
+      enum ipv4 {
+        value "1";
+        description
+         "The IPv4 protocol as defined in RFC 791.";
+      }
+      enum ipv6 {
+        value "2";
+        description
+         "The IPv6 protocol as defined in RFC 2460.";
+      }
+    }
+    description
+     "This value represents the version of the IP protocol.
+      In the value set and its semantics, this type is equivalent
+      to the InetVersion textual convention of the SMIv2.";
+    reference
+     "RFC  791: Internet Protocol
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  typedef dscp {
+    type uint8 {
+      range "0..63";
+    }
+    description
+     "The dscp type represents a Differentiated Services Code Point
+      that may be used for marking packets in a traffic stream.
+      In the value set and its semantics, this type is equivalent
+      to the Dscp textual convention of the SMIv2.";
+    reference
+     "RFC 3289: Management Information Base for the Differentiated
+                Services Architecture
+      RFC 2474: Definition of the Differentiated Services Field
+                (DS Field) in the IPv4 and IPv6 Headers
+      RFC 2780: IANA Allocation Guidelines For Values In
+                the Internet Protocol and Related Headers";
+  }
+
+  typedef ipv6-flow-label {
+    type uint32 {
+      range "0..1048575";
+    }
+    description
+     "The ipv6-flow-label type represents the flow identifier or Flow
+      Label in an IPv6 packet header that may be used to
+      discriminate traffic flows.
+      In the value set and its semantics, this type is equivalent
+      to the IPv6FlowLabel textual convention of the SMIv2.";
+    reference
+     "RFC 3595: Textual Conventions for IPv6 Flow Label
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+  }
+
+  typedef port-number {
+    type uint16 {
+      range "0..65535";
+    }
+    description
+     "The port-number type represents a 16-bit port number of an
+      Internet transport-layer protocol such as UDP, TCP, DCCP, or
+      SCTP.  Port numbers are assigned by IANA.  A current list of
+      all assignments is available from <http://www.iana.org/>.
+      Note that the port number value zero is reserved by IANA.  In
+      situations where the value zero does not make sense, it can
+      be excluded by subtyping the port-number type.
+      In the value set and its semantics, this type is equivalent
+      to the InetPortNumber textual convention of the SMIv2.";
+    reference
+     "RFC  768: User Datagram Protocol
+      RFC  793: Transmission Control Protocol
+      RFC 4960: Stream Control Transmission Protocol
+      RFC 4340: Datagram Congestion Control Protocol (DCCP)
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  /*** collection of types related to autonomous systems ***/
+
+  typedef as-number {
+    type uint32;
+    description
+     "The as-number type represents autonomous system numbers
+      which identify an Autonomous System (AS).  An AS is a set
+      of routers under a single technical administration, using
+      an interior gateway protocol and common metrics to route
+      packets within the AS, and using an exterior gateway
+      protocol to route packets to other ASes.  IANA maintains
+      the AS number space and has delegated large parts to the
+      regional registries.
+      Autonomous system numbers were originally limited to 16
+      bits.  BGP extensions have enlarged the autonomous system
+      number space to 32 bits.  This type therefore uses an uint32
+      base type without a range restriction in order to support
+      a larger autonomous system number space.
+      In the value set and its semantics, this type is equivalent
+      to the InetAutonomousSystemNumber textual convention of
+      the SMIv2.";
+    reference
+     "RFC 1930: Guidelines for creation, selection, and registration
+                of an Autonomous System (AS)
+      RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+      RFC 4001: Textual Conventions for Internet Network Addresses
+      RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+                Number Space";
+  }
+
+  /*** collection of types related to IP addresses and hostnames ***/
+
+  typedef ip-address {
+    type union {
+      type inet:ipv4-address;
+      type inet:ipv6-address;
+    }
+    description
+     "The ip-address type represents an IP address and is IP
+      version neutral.  The format of the textual representation
+      implies the IP version.  This type supports scoped addresses
+      by allowing zone identifiers in the address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+      + '(%[\p{N}\p{L}]+)?';
+    }
+    description
+      "The ipv4-address type represents an IPv4 address in
+       dotted-quad notation.  The IPv4 address may include a zone
+       index, separated by a % sign.
+       The zone index is used to disambiguate identical address
+       values.  For link-local addresses, the zone index will
+       typically be the interface index number or the name of an
+       interface.  If the zone index is not present, the default
+       zone of the device will be used.
+       The canonical format for the zone index is the numerical
+       format";
+  }
+
+  typedef ipv6-address {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(%[\p{N}\p{L}]+)?';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(%.+)?';
+    }
+    description
+     "The ipv6-address type represents an IPv6 address in full,
+      mixed, shortened, and shortened-mixed notation.  The IPv6
+      address may include a zone index, separated by a % sign.
+      The zone index is used to disambiguate identical address
+      values.  For link-local addresses, the zone index will
+      typically be the interface index number or the name of an
+      interface.  If the zone index is not present, the default
+      zone of the device will be used.
+      The canonical format of IPv6 addresses uses the textual
+      representation defined in Section 4 of RFC 5952.  The
+      canonical format for the zone index is the numerical
+      format as described in Section 11.2 of RFC 4007.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-address-no-zone {
+    type union {
+      type inet:ipv4-address-no-zone;
+      type inet:ipv6-address-no-zone;
+    }
+    description
+     "The ip-address-no-zone type represents an IP address and is
+      IP version neutral.  The format of the textual representation
+      implies the IP version.  This type does not support scoped
+      addresses since it does not allow zone identifiers in the
+      address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address-no-zone {
+    type inet:ipv4-address {
+      pattern '[0-9\.]*';
+    }
+    description
+      "An IPv4 address without a zone index.  This type, derived from
+       ipv4-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+  }
+
+  typedef ipv6-address-no-zone {
+    type inet:ipv6-address {
+      pattern '[0-9a-fA-F:\.]*';
+    }
+    description
+      "An IPv6 address without a zone index.  This type, derived from
+       ipv6-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-prefix {
+    type union {
+      type inet:ipv4-prefix;
+      type inet:ipv6-prefix;
+    }
+    description
+     "The ip-prefix type represents an IP prefix and is IP
+      version neutral.  The format of the textual representations
+      implies the IP version.";
+  }
+
+  typedef ipv4-prefix {
+    type string {
+      pattern
+         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+       + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
+    }
+    description
+     "The ipv4-prefix type represents an IPv4 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 32.
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+      The canonical format of an IPv4 prefix has all bits of
+      the IPv4 address set to zero that are not part of the
+      IPv4 prefix.";
+  }
+
+  typedef ipv6-prefix {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(/.+)';
+    }
+
+
+    description
+     "The ipv6-prefix type represents an IPv6 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 128.
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+      The IPv6 address should have all bits that do not belong
+      to the prefix set to zero.
+      The canonical format of an IPv6 prefix has all bits of
+      the IPv6 address set to zero that are not part of the
+      IPv6 prefix.  Furthermore, the IPv6 address is represented
+      as defined in Section 4 of RFC 5952.";
+    reference
+     "RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  /*** collection of domain name and URI types ***/
+
+  typedef domain-name {
+    type string {
+      pattern
+        '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
+      + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
+      + '|\.';
+      length "1..253";
+    }
+    description
+     "The domain-name type represents a DNS domain name.  The
+      name SHOULD be fully qualified whenever possible.
+      Internet domain names are only loosely specified.  Section
+      3.5 of RFC 1034 recommends a syntax (modified in Section
+      2.1 of RFC 1123).  The pattern above is intended to allow
+      for current practice in domain name use, and some possible
+      future expansion.  It is designed to hold various types of
+      domain names, including names used for A or AAAA records
+      (host names) and other records, such as SRV records.  Note
+      that Internet host names have a stricter syntax (described
+      in RFC 952) than the DNS recommendations in RFCs 1034 and
+      1123, and that systems that want to store host names in
+      schema nodes using the domain-name type are recommended to
+      adhere to this stricter standard to ensure interoperability.
+      The encoding of DNS names in the DNS protocol is limited
+      to 255 characters.  Since the encoding consists of labels
+      prefixed by a length bytes and there is a trailing NULL
+      byte, only 253 characters can appear in the textual dotted
+      notation.
+      The description clause of schema nodes using the domain-name
+      type MUST describe when and how these names are resolved to
+      IP addresses.  Note that the resolution of a domain-name value
+      may require to query multiple DNS records (e.g., A for IPv4
+      and AAAA for IPv6).  The order of the resolution process and
+      which DNS record takes precedence can either be defined
+      explicitly or may depend on the configuration of the
+      resolver.
+      Domain-name values use the US-ASCII encoding.  Their canonical
+      format uses lowercase US-ASCII characters.  Internationalized
+      domain names MUST be A-labels as per RFC 5890.";
+    reference
+     "RFC  952: DoD Internet Host Table Specification
+      RFC 1034: Domain Names - Concepts and Facilities
+      RFC 1123: Requirements for Internet Hosts -- Application
+                and Support
+      RFC 2782: A DNS RR for specifying the location of services
+                (DNS SRV)
+      RFC 5890: Internationalized Domain Names in Applications
+                (IDNA): Definitions and Document Framework";
+  }
+
+  typedef host {
+    type union {
+      type inet:ip-address;
+      type inet:domain-name;
+    }
+    description
+     "The host type represents either an IP address or a DNS
+      domain name.";
+  }
+
+  typedef uri {
+    type string;
+    description
+     "The uri type represents a Uniform Resource Identifier
+      (URI) as defined by STD 66.
+      Objects using the uri type MUST be in US-ASCII encoding,
+      and MUST be normalized as described by RFC 3986 Sections
+      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
+      percent-encoding is removed, and all case-insensitive
+      characters are set to lowercase except for hexadecimal
+      digits, which are normalized to uppercase as described in
+      Section 6.2.2.1.
+      The purpose of this normalization is to help provide
+      unique URIs.  Note that this normalization is not
+      sufficient to provide uniqueness.  Two URIs that are
+      textually distinct after this normalization may still be
+      equivalent.
+      Objects using the uri type may restrict the schemes that
+      they permit.  For example, 'data:' and 'urn:' schemes
+      might not be appropriate.
+      A zero-length URI is not a valid URI.  This can be used to
+      express 'URI absent' where required.
+      In the value set and its semantics, this type is equivalent
+      to the Uri SMIv2 textual convention defined in RFC 5017.";
+    reference
+     "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+      RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+                Group: Uniform Resource Identifiers (URIs), URLs,
+                and Uniform Resource Names (URNs): Clarifications
+                and Recommendations
+      RFC 5017: MIB Textual Conventions for Uniform Resource
+                Identifiers (URIs)";
+  }
+
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-routing-types@2017-10-13.yang b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-routing-types@2017-10-13.yang
new file mode 100644
index 0000000..e33c4bc
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-routing-types@2017-10-13.yang
@@ -0,0 +1,733 @@
+module ietf-routing-types {
+  namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types";
+  prefix rt-types;
+
+  import ietf-yang-types {
+    prefix yang;
+  }
+  import ietf-inet-types {
+    prefix inet;
+  }
+
+  organization
+    "IETF RTGWG - Routing Area Working Group";
+  contact
+    "WG Web:   <http://tools.ietf.org/wg/rtgwg/>
+     WG List:  <mailto:rtgwg@ietf.org>
+     Editor:   Xufeng Liu
+               <mailto:Xufeng_Liu@jabail.com>
+               Yingzhen Qu
+               <mailto:yingzhen.qu@huawei.com>
+               Acee Lindem
+               <mailto:acee@cisco.com>
+               Christian Hopps
+               <mailto:chopps@chopps.org>
+               Lou Berger
+               <mailto:lberger@labn.com>";
+  description
+    "This module contains a collection of YANG data types
+     considered generally useful for routing protocols.
+     Copyright (c) 2017 IETF Trust and the persons
+     identified as authors of the code.  All rights reserved.
+     Redistribution and use in source and binary forms, with or
+     without modification, is permitted pursuant to, and subject
+     to the license terms contained in, the Simplified BSD License
+     set forth in Section 4.c of the IETF Trust's Legal Provisions
+     Relating to IETF Documents
+     (http://trustee.ietf.org/license-info).
+     This version of this YANG module is part of RFC XXXX; see
+     the RFC itself for full legal notices.";
+  reference "RFC XXXX";
+
+  revision 2017-10-13 {
+    description "Initial revision.";
+    reference "RFC TBD: Routing YANG Data Types";
+  }
+
+  /*** Identities related to MPLS/GMPLS ***/
+
+  identity mpls-label-special-purpose-value {
+    description
+      "Base identity for deriving identities describing
+       special-purpose Multiprotocol Label Switching (MPLS) label
+       values.";
+    reference
+      "RFC7274: Allocating and Retiring Special-Purpose MPLS
+       Labels.";
+  }
+
+  identity ipv4-explicit-null-label {
+    base mpls-label-special-purpose-value;
+    description
+      "This identity represents the IPv4 Explicit NULL Label.";
+    reference "RFC3032: MPLS Label Stack Encoding. Section 2.1.";
+  }
+
+  identity router-alert-label {
+    base mpls-label-special-purpose-value;
+    description
+      "This identity represents the Router Alert Label.";
+    reference "RFC3032: MPLS Label Stack Encoding. Section 2.1.";
+  }
+
+  identity ipv6-explicit-null-label {
+    base mpls-label-special-purpose-value;
+    description
+      "This identity represents the IPv6 Explicit NULL Label.";
+    reference "RFC3032: MPLS Label Stack Encoding. Section 2.1.";
+  }
+
+  identity implicit-null-label {
+    base mpls-label-special-purpose-value;
+    description
+      "This identity represents the Implicit NULL Label.";
+    reference "RFC3032: MPLS Label Stack Encoding. Section 2.1.";
+  }
+
+  identity entropy-label-indicator {
+    base mpls-label-special-purpose-value;
+    description
+      "This identity represents the Entropy Label Indicator.";
+    reference
+      "RFC6790: The Use of Entropy Labels in MPLS Forwarding.
+       Sections 3 and 10.1.";
+  }
+
+  identity gal-label {
+    base mpls-label-special-purpose-value;
+    description
+      "This identity represents the Generic Associated Channel
+       Label (GAL).";
+    reference
+      "RFC5586: MPLS Generic Associated Channel.
+       Sections 4 and 10.";
+  }
+
+  identity oam-alert-label {
+    base mpls-label-special-purpose-value;
+    description
+      "This identity represents the OAM Alert Label.";
+    reference
+      "RFC3429: Assignment of the 'OAM Alert Label' for
+       Multiprotocol Label Switching Architecture (MPLS)
+       Operation and Maintenance (OAM) Functions.
+       Sections 3 and 6.";
+  }
+
+  identity extension-label {
+    base mpls-label-special-purpose-value;
+    description
+      "This identity represents the Extension Label.";
+    reference
+      "RFC7274: Allocating and Retiring Special-Purpose MPLS
+       Labels.  Sections 3.1 and 5.";
+  }
+
+  /*** Collection of types related to routing ***/
+
+  typedef router-id {
+    type yang:dotted-quad;
+    description
+      "A 32-bit number in the dotted quad format assigned to each
+       router. This number uniquely identifies the router within
+       an Autonomous System.";
+  }
+
+  /*** Collection of types related to VPN ***/
+
+  typedef route-target {
+    type string {
+      pattern
+        '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+      +     '6[0-4][0-9]{3}|'
+      +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|'
+      +     '42949672[0-8][0-9]|'
+      +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|'
+      +     '42949[0-5][0-9]{4}|'
+      +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|'
+      +     '42[0-8][0-9]{7}|4[01][0-9]{8}|'
+      +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|'
+      + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|'
+      +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|'
+      +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|'
+      +     '655[0-2][0-9]|'
+      +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|'
+      +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+      + '(2:(429496729[0-5]|42949672[0-8][0-9]|'
+      +     '4294967[01][0-9]{2}|'
+      +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|'
+      +     '4294[0-8][0-9]{5}|'
+      +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|'
+      +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):'
+      +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+      +     '6[0-4][0-9]{3}|'
+      +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+      + '(6(:[a-fA-F0-9]{2}){6})|'
+      + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):'
+      +     '[0-9a-fA-F]{1,12})';
+    }
+    description
+      "A route target is an 8-octet BGP extended community
+       initially identifying a set of sites in a BGP
+       VPN (RFC 4364). However, it has since taken on a more
+       general role in BGP route filtering.
+       A route target consists of two or three fields:
+       a 2-octet type field, an administrator field,
+       and, optionally, an assigned number field.
+       According to the data formats for type 0, 1, 2, and 6
+       defined in RFC4360, RFC5668, and RFC7432, the encoding
+       pattern is defined as:
+       0:2-octet-asn:4-octet-number
+       1:4-octet-ipv4addr:2-octet-number
+       2:4-octet-asn:2-octet-number.
+       6:6-octet-mac-address.
+       Additionally, a generic pattern is defined for future
+       route target types:
+       2-octet-other-hex-number:6-octet-hex-number
+       Some valid examples are: 0:100:100, 1:1.1.1.1:100,
+       2:1234567890:203 and 6:26:00:08:92:78:00";
+    reference
+      "RFC4360: BGP Extended Communities Attribute.
+       RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs)
+       RFC5668: 4-Octet AS Specific BGP Extended Community.
+       RFC7432: BGP MPLS-Based Ethernet VPN";
+  }
+
+  typedef ipv6-route-target {
+    type string {
+      pattern
+          '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+          + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+          + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}'
+          + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))'
+          + ':'
+          + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+          + '6[0-4][0-9]{3}|'
+          + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
+      pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+          + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))'
+          + ':'
+          + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+          + '6[0-4][0-9]{3}|'
+          + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
+    }
+    description
+      "An IPv6 route target is a 20-octet BGP IPv6 address
+       specific extended community serving the same function
+       as a standard 8-octet route target only allowing for
+       an IPv6 address as the global administrator. The format
+       is <ipv6-address:2-octet-number>.
+       Some valid examples are: 2001:DB8::1:6544 and
+       2001:DB8::5eb1:791:6b37:17958";
+    reference
+      "RFC5701: IPv6 Address Specific BGP Extended Community
+                Attribute";
+  }
+
+  typedef route-target-type {
+    type enumeration {
+      enum "import" {
+        value 0;
+        description
+          "The route target applies to route import.";
+      }
+      enum "export" {
+        value 1;
+        description
+          "The route target applies to route export.";
+      }
+      enum "both" {
+        value 2;
+        description
+          "The route target applies to both route import and
+           route export.";
+      }
+    }
+    description
+      "Indicates the role a route target takes
+       in route filtering.";
+    reference "RFC4364: BGP/MPLS IP Virtual Private Networks
+               (VPNs).";
+  }
+
+  typedef route-distinguisher {
+    type string {
+      pattern
+        '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+      +     '6[0-4][0-9]{3}|'
+      +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|'
+      +     '42949672[0-8][0-9]|'
+      +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|'
+      +     '42949[0-5][0-9]{4}|'
+      +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|'
+      +     '42[0-8][0-9]{7}|4[01][0-9]{8}|'
+      +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|'
+      + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|'
+      +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|'
+      +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|'
+      +     '655[0-2][0-9]|'
+      +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|'
+      +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+      + '(2:(429496729[0-5]|42949672[0-8][0-9]|'
+      +     '4294967[01][0-9]{2}|'
+      +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|'
+      +     '4294[0-8][0-9]{5}|'
+      +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|'
+      +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):'
+      +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+      +     '6[0-4][0-9]{3}|'
+      +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+      + '(6(:[a-fA-F0-9]{2}){6})|'
+      + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):'
+      +     '[0-9a-fA-F]{1,12})';
+    }
+    description
+      "A route distinguisher is an 8-octet value used to
+       distinguish routes from different BGP VPNs (RFC 4364).
+       As per RFC 4360, a route distinguisher will have the same
+       format as a route target and will consist of two or three
+       fields including a 2-octet type field, an administrator
+       field, and, optionally, an assigned number field.
+       According to the data formats for type 0, 1, 2, and 6
+       defined in RFC4360, RFC5668, and RFC7432, the encoding
+       pattern is defined as:
+       0:2-octet-asn:4-octet-number
+       1:4-octet-ipv4addr:2-octet-number
+       2:4-octet-asn:2-octet-number.
+       6:6-octet-mac-address.
+       Additionally, a generic pattern is defined for future
+       route discriminator types:
+       2-octet-other-hex-number:6-octet-hex-number
+       Some valid examples are: 0:100:100, 1:1.1.1.1:100,
+       2:1234567890:203 and 6:26:00:08:92:78:00";
+    reference
+      "RFC4360: BGP Extended Communities Attribute.
+       RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs)
+       RFC5668: 4-Octet AS Specific BGP Extended Community.
+       RFC7432: BGP MPLS-Based Ethernet VPN";
+  }
+
+  typedef route-origin {
+    type string {
+      pattern
+        '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+      +     '6[0-4][0-9]{3}|'
+      +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|'
+      +     '42949672[0-8][0-9]|'
+      +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|'
+      +     '42949[0-5][0-9]{4}|'
+      +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|'
+      +     '42[0-8][0-9]{7}|4[01][0-9]{8}|'
+      +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|'
+      + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|'
+      +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|'
+      +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|'
+      +     '655[0-2][0-9]|'
+      +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|'
+      +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+      + '(2:(429496729[0-5]|42949672[0-8][0-9]|'
+      +     '4294967[01][0-9]{2}|'
+      +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|'
+      +     '4294[0-8][0-9]{5}|'
+      +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|'
+      +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):'
+      +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+      +     '6[0-4][0-9]{3}|'
+      +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+      + '(6(:[a-fA-F0-9]{2}){6})|'
+      + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):'
+      +    '[0-9a-fA-F]{1,12})';
+    }
+    description
+      "A route origin is an 8-octet BGP extended community
+       identifying the set of sites where the BGP route
+       originated (RFC 4364). A route target consists of two
+       or three fields: a 2-octet type field, an administrator
+       field, and, optionally, an assigned number field.
+       According to the data formats for type 0, 1, 2, and 6
+       defined in RFC4360, RFC5668, and RFC7432, the encoding
+       pattern is defined as:
+       0:2-octet-asn:4-octet-number
+       1:4-octet-ipv4addr:2-octet-number
+       2:4-octet-asn:2-octet-number.
+       6:6-octet-mac-address.
+       Additionally, a generic pattern is defined for future
+       route origin types:
+       2-octet-other-hex-number:6-octet-hex-number
+       Some valid examples are: 0:100:100, 1:1.1.1.1:100,
+       2:1234567890:203 and 6:26:00:08:92:78:00";
+    reference
+      "RFC4360: BGP Extended Communities Attribute.
+       RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs)
+       RFC5668: 4-Octet AS Specific BGP Extended Community.
+       RFC7432: BGP MPLS-Based Ethernet VPN";
+  }
+
+  typedef ipv6-route-origin {
+    type string {
+      pattern
+          '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+          + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+          + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}'
+          + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))'
+          + ':'
+          + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+          + '6[0-4][0-9]{3}|'
+          + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
+      pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+          + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))'
+          + ':'
+          + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+          + '6[0-4][0-9]{3}|'
+          + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
+    }
+    description
+      "An IPv6 route origin is a 20-octet BGP IPv6 address
+       specific extended community serving the same function
+       as a standard 8-octet route only allowing for
+       an IPv6 address as the global administrator. The format
+       is <ipv6-address:2-octet-number>.
+       Some valid examples are: 2001:DB8::1:6544 and
+       2001:DB8::5eb1:791:6b37:17958";
+    reference
+      "RFC5701: IPv6 Address Specific BGP Extended Community
+                Attribute";
+  }
+
+  /*** Collection of types common to multicast ***/
+
+  typedef ipv4-multicast-group-address {
+    type inet:ipv4-address {
+      pattern '(2((2[4-9])|(3[0-9]))\.).*';
+    }
+    description
+      "This type represents an IPv4 multicast group address,
+       which is in the range from 224.0.0.0 to 239.255.255.255.";
+    reference "RFC1112: Host Extensions for IP Multicasting.";
+  }
+
+  typedef ipv6-multicast-group-address {
+    type inet:ipv6-address {
+      pattern
+        '(([fF]{2}[0-9a-fA-F]{2}):).*';
+    }
+    description
+      "This type represents an IPv6 multicast group address,
+       which is in the range of FF00::/8.";
+    reference
+      "RFC4291: IP Version 6 Addressing Architecture. Sec 2.7.
+       RFC7346: IPv6 Multicast Address Scopes.";
+  }
+
+  typedef ip-multicast-group-address {
+    type union {
+      type ipv4-multicast-group-address;
+      type ipv6-multicast-group-address;
+    }
+    description
+      "This type represents a version-neutral IP multicast group
+       address. The format of the textual representation implies
+       the IP version.";
+  }
+
+  typedef ipv4-multicast-source-address {
+    type union {
+      type enumeration {
+        enum "*" {
+          description
+            "Any source address.";
+        }
+      }
+      type inet:ipv4-address;
+    }
+    description
+      "Multicast source IPv4 address type.";
+  }
+
+  typedef ipv6-multicast-source-address {
+    type union {
+      type enumeration {
+        enum "*" {
+          description
+            "Any source address.";
+        }
+      }
+      type inet:ipv6-address;
+    }
+    description
+      "Multicast source IPv6 address type.";
+  }
+
+  /*** Collection of types common to protocols ***/
+
+  typedef bandwidth-ieee-float32 {
+    type string {
+      pattern
+        '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
+      + '1(\.([0-9a-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
+      + '1[01][0-9]|0?[0-9]?[0-9])?)';
+    }
+    description
+      "Bandwidth in IEEE 754 floating point 32-bit binary format:
+       (-1)**(S) * 2**(Exponent-127) * (1 + Fraction),
+       where Exponent uses 8 bits, and Fraction uses 23 bits.
+       The units are octets per second.
+       The encoding format is the external hexadecimal-significant
+       character sequences specified in IEEE 754 and C99. The
+       format is restricted to be normalized, non-negative, and
+       non-fraction: 0x1.hhhhhhp{+}d, 0X1.HHHHHHP{+}D, or 0x0p0,
+       where 'h' and 'H' are hexadecimal digits and'd' and 'D' are
+       integers in the range of [0..127].
+       When six hexadecimal digits are used for 'hhhhhh' or
+       'HHHHHH', the least significant digit must be an even
+       number. 'x' and 'X' indicate hexadecimal; 'p' and 'P'
+       indicate power of two. Some examples are: 0x0p0, 0x1p10, and
+       0x1.abcde2p+20";
+    reference
+      "IEEE Std 754-2008: IEEE Standard for Floating-Point
+       Arithmetic.";
+  }
+
+  typedef link-access-type {
+    type enumeration {
+      enum "broadcast" {
+        description
+          "Specify broadcast multi-access network.";
+      }
+      enum "non-broadcast-multiaccess" {
+        description
+          "Specify Non-Broadcast Multi-Access (NBMA) network.";
+      }
+      enum "point-to-multipoint" {
+        description
+          "Specify point-to-multipoint network.";
+      }
+      enum "point-to-point" {
+        description
+          "Specify point-to-point network.";
+      }
+    }
+    description
+      "Link access type.";
+  }
+
+  typedef timer-multiplier {
+    type uint8;
+    description
+      "The number of timer value intervals that should be
+       interpreted as a failure.";
+  }
+
+  typedef timer-value-seconds16 {
+    type union {
+      type uint16 {
+        range "1..65535";
+      }
+      type enumeration {
+        enum "infinity" {
+          description
+            "The timer is set to infinity.";
+        }
+        enum "not-set" {
+          description
+            "The timer is not set.";
+        }
+      }
+    }
+    units "seconds";
+    description
+      "Timer value type, in seconds (16-bit range).";
+  }
+
+  typedef timer-value-seconds32 {
+    type union {
+      type uint32 {
+        range "1..4294967295";
+      }
+      type enumeration {
+        enum "infinity" {
+          description
+            "The timer is set to infinity.";
+        }
+        enum "not-set" {
+          description
+            "The timer is not set.";
+        }
+      }
+    }
+    units "seconds";
+    description
+      "Timer value type, in seconds (32-bit range).";
+  }
+  typedef timer-value-milliseconds {
+    type union {
+      type uint32 {
+        range "1..4294967295";
+      }
+      type enumeration {
+        enum "infinity" {
+          description
+            "The timer is set to infinity.";
+        }
+        enum "not-set" {
+          description
+            "The timer is not set.";
+        }
+      }
+    }
+    units "milliseconds";
+    description
+      "Timer value type, in milliseconds.";
+  }
+
+  typedef percentage {
+    type uint8 {
+      range "0..100";
+    }
+    description
+      "Integer indicating a percentage value";
+  }
+
+  typedef timeticks64 {
+    type uint64;
+    description
+      "This type is based on the timeticks type defined in
+       RFC 6991, but with 64-bit width.  It represents the time,
+       modulo 2^64, in hundredths of a second between two epochs.";
+    reference "RFC 6991 - Common YANG Data Types";
+  }
+
+  typedef uint24 {
+    type uint32 {
+      range "0 .. 16777215";
+    }
+    description
+      "24-bit unsigned integer";
+  }
+
+  /*** Collection of types related to MPLS/GMPLS ***/
+
+  typedef generalized-label {
+    type binary;
+    description
+      "Generalized label. Nodes sending and receiving the
+       Generalized Label are aware of the link-specific
+       label context and type.";
+    reference "RFC3471: Section 3.2";
+  }
+
+  typedef mpls-label-special-purpose {
+    type identityref {
+      base mpls-label-special-purpose-value;
+    }
+    description
+      "This type represents the special-purpose Multiprotocol Label
+       Switching (MPLS) label values.";
+    reference
+      "RFC3032: MPLS Label Stack Encoding.
+       RFC7274: Allocating and Retiring Special-Purpose MPLS
+       Labels.";
+  }
+
+  typedef mpls-label-general-use {
+    type uint32 {
+      range "16..1048575";
+    }
+    description
+      "The 20-bit label values in an MPLS label stack entry,
+       specified in RFC3032. This label value does not include
+       the encodings of Traffic Class and TTL (time to live).
+       The label range specified by this type is for general use,
+       with special-purpose MPLS label values excluded.";
+    reference "RFC3032: MPLS Label Stack Encoding.";
+  }
+
+  typedef mpls-label {
+    type union {
+      type mpls-label-special-purpose;
+      type mpls-label-general-use;
+    }
+    description
+      "The 20-bit label values in an MPLS label stack entry,
+       specified in RFC3032. This label value does not include
+       the encodings of Traffic Class and TTL (time to live).";
+    reference "RFC3032: MPLS Label Stack Encoding.";
+  }
+
+  /*** Groupings **/
+  grouping mpls-label-stack {
+    description
+      "This grouping specifies an MPLS label stack.  The label
+       stack is encoded as a list of label stack entries.  The
+       list key is an identifier which indicates relative
+       ordering of each entry, with the lowest value identifier
+       corresponding to the top of the label stack.";
+    container mpls-label-stack {
+      description
+        "Container for a list of MPLS label stack entries.";
+      list entry {
+        key "id";
+        description
+          "List of MPLS label stack entries.";
+        leaf id {
+          type uint8;
+          description
+            "Identifies the entry in a sequence of MPLS label
+             stack entries. An entry with a smaller identifier
+             value precedes an entry with a larger identifier
+             value in the label stack. The value of this ID has
+             no semantic meaning other than relative ordering
+             and referencing the entry.";
+        }
+        leaf label {
+          type rt-types:mpls-label;
+          description
+            "Label value.";
+        }
+        leaf ttl {
+          type uint8;
+          description
+            "Time to Live (TTL).";
+          reference "RFC3032: MPLS Label Stack Encoding.";
+        }
+        leaf traffic-class {
+          type uint8 {
+            range "0..7";
+          }
+          description
+            "Traffic Class (TC).";
+          reference
+            "RFC5462: Multiprotocol Label Switching (MPLS) Label
+             Stack Entry: 'EXP' Field Renamed to 'Traffic Class'
+             Field.";
+        }
+      }
+    }
+  }
+
+  grouping vpn-route-targets {
+    description
+      "A grouping that specifies Route Target import-export rules
+       used in the BGP enabled Virtual Private Networks (VPNs).";
+    reference
+      "RFC4364: BGP/MPLS IP Virtual Private Networks (VPNs).
+       RFC4664: Framework for Layer 2 Virtual Private Networks
+       (L2VPNs)";
+    list vpn-target {
+      key "route-target";
+      description
+        "List of Route Targets.";
+      leaf route-target {
+        type rt-types:route-target;
+        description
+          "Route Target value";
+      }
+      leaf route-target-type {
+        type rt-types:route-target-type;
+        mandatory true;
+        description
+          "Import/export type of the Route Target.";
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-te-types@2018-07-01.yang b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-te-types@2018-07-01.yang
new file mode 100644
index 0000000..7a50210
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-te-types@2018-07-01.yang
@@ -0,0 +1,2457 @@
+module ietf-te-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-te-types";
+
+  /* Replace with IANA when assigned */
+  prefix "te-types";
+
+  import ietf-inet-types {
+    prefix inet;
+  }
+
+  import ietf-yang-types {
+    prefix "yang";
+  }
+
+  import ietf-routing-types {
+    prefix "rt-types";
+  }
+
+  organization
+    "IETF Traffic Engineering Architecture and Signaling (TEAS)
+     Working Group";
+
+  contact
+    "WG Web:   <http://tools.ietf.org/wg/teas/>
+     WG List:  <mailto:teas@ietf.org>
+     WG Chair: Lou Berger
+               <mailto:lberger@labn.net>
+     WG Chair: Vishnu Pavan Beeram
+               <mailto:vbeeram@juniper.net>
+     Editor:   Tarek Saad
+               <mailto:tsaad@cisco.com>
+     Editor:   Rakesh Gandhi
+               <mailto:rgandhi@cisco.com>
+     Editor:   Vishnu Pavan Beeram
+               <mailto:vbeeram@juniper.net>
+     Editor:   Himanshu Shah
+               <mailto:hshah@ciena.com>
+     Editor:   Xufeng Liu
+               <mailto:xufeng.liu@ericsson.com>
+     Editor:   Igor Bryskin
+               <mailto:Igor.Bryskin@huawei.com>";
+
+  description
+    "This module contains a collection of generally
+    useful TE specific YANG data type defintions.";
+
+  revision "2018-07-01" {
+    description "Latest revision of TE types";
+    reference "RFC3209";
+  }
+
+  /*
+   * Identities
+   */
+  identity association-type {
+    description "Base identity for tunnel association";
+    reference "RFC6780, RFC4872, RFC4873";
+  }
+  identity association-type-recovery {
+    base association-type;
+    description
+      "Association Type Recovery used to association LSPs of
+       same tunnel for recovery";
+    reference "RFC4872";
+  }
+  identity association-type-resource-sharing {
+    base association-type;
+    description
+      "Association Type Resource Sharing used to enable resource
+       sharing during make-before-break.";
+    reference "RFC4873";
+  }
+  identity association-type-double-sided-bidir {
+    base association-type;
+    description
+      "Association Type Double Sided bidirectional used to associate
+       two LSPs of two tunnels that are independently configured on
+       either endpoint";
+    reference "RFC7551";
+  }
+  identity association-type-single-sided-bidir {
+    base association-type;
+    description
+      "Association Type Single Sided bidirectional used to associate
+       two LSPs of two tunnels, where a tunnel is configured on one
+       side/endpoint, and the other tunnel is dynamically created on
+       the other endpoint";
+    reference "RFC7551";
+  }
+
+  identity objective-function-type {
+    description "Base objective function type";
+    reference "RFC4657";
+  }
+  identity of-minimize-cost-path {
+    base objective-function-type;
+    description
+        "Mimimuze cost of path objective function";
+  }
+  identity of-minimize-load-path {
+    base objective-function-type;
+    description
+        "Minimize the load on path(s) objective
+         function";
+  }
+  identity of-maximize-residual-bandwidth {
+    base objective-function-type;
+    description
+        "Maximize the residual bandwidth objective
+         function";
+  }
+  identity of-minimize-agg-bandwidth-consumption {
+    base objective-function-type;
+    description
+        "minimize the aggregate bandwidth consumption
+         objective function";
+  }
+  identity of-minimize-load-most-loaded-link {
+    base objective-function-type;
+    description
+        "Minimize the load on the most loaded link
+         objective function";
+  }
+  identity of-minimize-cost-path-set {
+    base objective-function-type;
+    description
+        "Minimize the cost on a path set objective
+         function";
+  }
+
+  identity path-computation-method {
+    description
+     "base identity for supported path computation
+      mechanisms";
+  }
+
+  identity path-locally-computed {
+    base path-computation-method;
+    description
+      "indicates a constrained-path LSP in which the
+      path is computed by the local LER";
+  }
+
+  identity path-externally-queried {
+    base path-computation-method;
+    description
+     "Constrained-path LSP in which the path is
+      obtained by querying an external source, such as a PCE server.
+      In the case that an LSP is defined to be externally queried, it
+      may also have associated explicit definitions (provided
+      to the external source to aid computation); and the path that is
+      returned by the external source is not required to provide a
+      wholly resolved path back to the originating system - that is to
+      say, some local computation may also be required";
+  }
+
+  identity path-explicitly-defined {
+    base path-computation-method;
+    description
+     "constrained-path LSP in which the path is
+      explicitly specified as a collection of strict or/and loose
+      hops";
+  }
+  /**
+   * Typedefs
+   */
+
+  typedef te-bandwidth {
+    type string {
+      pattern
+        '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
+      + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
+      + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+'
+      + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
+      + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
+      + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*';
+    }
+    description
+      "This is the generic bandwidth type that is a string containing
+       a list of numbers separated by commas, with each of these
+       number can be non-negative decimal, hex integer, or hex float:
+       (dec | hex | float)[*(','(dec | hex | float))]
+       For packet switching type, a float number is used, such as
+       0x1p10.
+       For OTN switching type, a list of integers can be used, such
+       as '0,2,3,1', indicating 2 odu0's and 1 odu3.
+       For DWDM, a list of pairs of slot number and width can be
+       used, such as '0, 2, 3, 3', indicating a frequency slot 0 with
+       slot width 2 and a frequency slot 3 with slot width 3.";
+  } // te-bandwidth
+
+  typedef te-ds-class {
+    type uint8 {
+      range "0..7";
+    }
+    description
+      "The Differentiatied Class-Type of traffic.";
+    reference "RFC4124: section-4.3.1";
+  }
+
+  typedef te-link-direction {
+    type enumeration {
+      enum INCOMING {
+        description
+          "explicit route represents an incoming link on a node";
+      }
+      enum OUTGOING {
+        description
+          "explicit route represents an outgoing link on a node";
+      }
+    }
+    description
+     "enumerated type for specifying direction of link on a node";
+  }
+
+  typedef te-label-direction {
+    type enumeration {
+      enum FORWARD {
+        description
+          "Label allocated for the forward LSP direction";
+      }
+      enum REVERSE {
+        description
+          "Label allocated for the reverse LSP direction";
+      }
+    }
+    description
+     "enumerated type for specifying the forward or reverse
+     label";
+  }
+
+  typedef te-hop-type {
+    type enumeration {
+      enum LOOSE {
+        description
+          "loose hop in an explicit path";
+      }
+      enum STRICT {
+        description
+          "strict hop in an explicit path";
+      }
+    }
+    description
+     "enumerated type for specifying loose or strict
+      paths";
+    reference "RFC3209: section-4.3.2";
+  }
+
+  identity LSP_METRIC_TYPE {
+    description
+      "Base identity for types of LSP metric specification";
+  }
+
+  identity LSP_METRIC_RELATIVE {
+    base LSP_METRIC_TYPE;
+    description
+      "The metric specified for the LSPs to which this identity refers
+      is specified as a relative value to the IGP metric cost to the
+      LSP's tail-end.";
+  }
+
+  identity LSP_METRIC_ABSOLUTE {
+    base LSP_METRIC_TYPE;
+    description
+      "The metric specified for the LSPs to which this identity refers
+      is specified as an absolute value";
+  }
+
+  identity LSP_METRIC_INHERITED {
+    base LSP_METRIC_TYPE;
+    description
+      "The metric for for the LSPs to which this identity refers is
+      not specified explicitly - but rather inherited from the IGP
+      cost directly";
+  }
+
+  identity tunnel-type {
+    description
+      "Base identity from which specific tunnel types are
+      derived.";
+  }
+
+  identity tunnel-p2p {
+    base tunnel-type;
+    description
+      "TE point-to-point tunnel type.";
+  }
+
+  identity tunnel-p2mp {
+    base tunnel-type;
+    description
+      "TE point-to-multipoint tunnel type.";
+    reference "RFC4875";
+  }
+
+  identity tunnel-action-type {
+    description
+      "Base identity from which specific tunnel action types
+       are derived.";
+  }
+
+  identity tunnel-action-resetup {
+    base tunnel-action-type;
+    description
+      "TE tunnel action resetup. Tears the
+      tunnel's current LSP (if any) and
+      attempts to re-establish a new LSP";
+  }
+
+  identity tunnel-action-reoptimize {
+    base tunnel-action-type;
+    description
+      "TE tunnel action reoptimize.
+       Reoptimizes placement of the tunnel LSP(s)";
+  }
+
+  identity tunnel-action-switchpath {
+    base tunnel-action-type;
+    description
+      "TE tunnel action reoptimize
+       Switches the tunnel's LSP to use the specified path";
+  }
+
+  identity te-action-result {
+    description
+      "Base identity from which specific TE action results
+       are derived.";
+  }
+
+  identity te-action-success {
+    base te-action-result;
+    description "TE action successul.";
+  }
+
+  identity te-action-fail {
+    base te-action-result;
+    description "TE action failed.";
+  }
+
+  identity tunnel-action-inprogress {
+    base te-action-result;
+    description "TE action inprogress.";
+  }
+
+  identity tunnel-admin-state-type {
+    description
+      "Base identity for TE tunnel admin states";
+  }
+
+  identity tunnel-admin-state-up {
+    base tunnel-admin-state-type;
+    description "Tunnel administratively state up";
+  }
+
+  identity tunnel-admin-state-down {
+    base tunnel-admin-state-type;
+    description "Tunnel administratively state down";
+  }
+
+  identity tunnel-state-type {
+    description
+      "Base identity for TE tunnel states";
+  }
+
+  identity tunnel-state-up {
+    base tunnel-state-type;
+    description "Tunnel state up";
+  }
+
+  identity tunnel-state-down {
+    base tunnel-state-type;
+    description "Tunnel state down";
+  }
+
+  identity lsp-state-type {
+    description
+      "Base identity for TE LSP states";
+  }
+
+  identity lsp-path-computing {
+    base lsp-state-type;
+    description
+      "State path compute in progress";
+  }
+
+  identity lsp-path-computation-ok {
+    base lsp-state-type;
+    description
+      "State path compute successful";
+  }
+
+  identity lsp-path-computatione-failed {
+    base lsp-state-type;
+    description
+      "State path compute failed";
+  }
+
+  identity lsp-state-setting-up {
+    base lsp-state-type;
+    description
+      "State setting up";
+  }
+
+  identity lsp-state-setup-ok {
+    base lsp-state-type;
+    description
+      "State setup successful";
+  }
+
+  identity lsp-state-setup-failed {
+    base lsp-state-type;
+    description
+      "State setup failed";
+  }
+
+  identity lsp-state-up {
+    base lsp-state-type;
+    description "State up";
+  }
+
+  identity lsp-state-tearing-down {
+    base lsp-state-type;
+    description
+      "State tearing down";
+  }
+
+  identity lsp-state-down {
+    base lsp-state-type;
+    description "State down";
+  }
+
+  identity path-invalidation-action-type {
+    description
+      "Base identity for TE path invalidation action types";
+  }
+
+  identity path-invalidation-action-drop-type {
+    base path-invalidation-action-type;
+    description
+      "TE path invalidation action drop";
+  }
+
+  identity path-invalidation-action-drop-tear {
+    base path-invalidation-action-type;
+    description
+      "TE path invalidation action tear";
+  }
+
+  identity lsp-restoration-type {
+    description
+      "Base identity from which LSP restoration types are
+       derived.";
+  }
+
+  identity lsp-restoration-restore-any {
+    base lsp-restoration-type;
+    description
+      "Restores when any of the LSPs is affected by a failure";
+  }
+
+  identity lsp-restoration-restore-all {
+    base lsp-restoration-type;
+    description
+      "Restores when all the tunnel LSPs are affected by failure";
+  }
+
+  identity restoration-scheme-type {
+    description
+      "Base identity for LSP restoration schemes";
+    reference "RFC4872";
+  }
+
+  identity restoration-scheme-preconfigured {
+    base restoration-scheme-type;
+    description
+      "Restoration LSP is preconfigured prior to the failure";
+  }
+
+  identity restoration-scheme-precomputed {
+    base restoration-scheme-type;
+    description
+      "Restoration LSP is precomputed prior to the failure";
+  }
+
+  identity restoration-scheme-presignaled {
+    base restoration-scheme-type;
+    description
+      "Restoration LSP is presignaledd prior to the failure";
+  }
+
+  identity lsp-protection-type {
+    description
+      "Base identity from which LSP protection types are
+      derived.";
+  }
+
+  identity lsp-protection-unprotected {
+    base lsp-protection-type;
+    description
+      "LSP protection 'Unprotected'";
+    reference "RFC4872";
+  }
+
+  identity lsp-protection-reroute-extra {
+    base lsp-protection-type;
+    description
+      "LSP protection '(Full) Rerouting'";
+    reference "RFC4872";
+  }
+
+  identity lsp-protection-reroute {
+    base lsp-protection-type;
+    description
+      "LSP protection 'Rerouting without Extra-Traffic'";
+    reference "RFC4872";
+  }
+
+  identity lsp-protection-1-for-n {
+    base lsp-protection-type;
+    description
+      "LSP protection '1:N Protection with Extra-Traffic'";
+    reference "RFC4872";
+  }
+
+  identity lsp-protection-unidir-1-to-1 {
+    base lsp-protection-type;
+    description
+      "LSP protection '1+1 Unidirectional Protection'";
+    reference "RFC4872";
+  }
+
+  identity lsp-protection-bidir-1-to-1 {
+    base lsp-protection-type;
+    description
+      "LSP protection '1+1 Bidirectional Protection'";
+    reference "RFC4872";
+  }
+
+  identity lsp-protection-extra-traffic {
+    base lsp-protection-type;
+    description
+      "LSP protection 'Extra-Traffic'";
+    reference
+      "ITU-T G.808, RFC 4427.";
+  }
+
+  identity lsp-protection-state {
+    description
+      "Base identity of protection states for reporting
+       purposes.";
+  }
+
+  identity normal {
+    base lsp-protection-state;
+    description "Normal state.";
+  }
+
+  identity signal-fail-of-protection {
+    base lsp-protection-state;
+    description
+        "There is a SF condition on the protection transport
+        entity which has higher priority than the FS command.";
+    reference
+        "ITU-T G.873.1, G.8031, G.8131";
+  }
+
+  identity lockout-of-protection {
+    base lsp-protection-state;
+    description
+        "A Loss of Protection (LoP) command is active.";
+    reference
+        "ITU-T G.808, RFC 4427";
+  }
+
+  identity forced-switch {
+    base lsp-protection-state;
+    description
+        "A forced switch (FS) command is active.";
+    reference
+        "ITU-T G.808, RFC 4427";
+  }
+
+  identity signal-fail {
+    base lsp-protection-state;
+    description
+        "There is a SF condition on either the working
+        or the protection path.";
+    reference
+        "ITU-T G.808, RFC 4427";
+  }
+
+  identity signal-degrade {
+    base lsp-protection-state;
+    description
+        "There is an SD condition on either the working or the
+         protection path.";
+    reference
+        "ITU-T G.808, RFC 4427";
+  }
+
+  identity manual-switch {
+    base lsp-protection-state;
+    description
+        "A manual switch (MS) command is active.";
+    reference
+        "ITU-T G.808, RFC 4427";
+  }
+
+  identity wait-to-restore {
+    base lsp-protection-state;
+    description
+        "A wait time to restore (WTR) is running.";
+    reference
+        "ITU-T G.808, RFC 4427";
+  }
+
+  identity do-not-revert {
+    base lsp-protection-state;
+    description
+        "A DNR condition is active because of a non-revertive
+         behavior.";
+    reference
+        "ITU-T G.808, RFC 4427";
+  }
+
+  identity failure-of-protocol {
+    base lsp-protection-state;
+    description
+        "The protection is not working because of a failure of
+         protocol condition.";
+    reference
+        "ITU-T G.873.1, G.8031, G.8131";
+  }
+
+  identity protection-external-commands {
+    description
+      "Protection external commands for trouble shooting
+      purposes.";
+  }
+
+  identity action-freeze {
+    base protection-external-commands;
+    description
+      "A temporary configuration action initiated by an operator
+       command to prevent any switch action to be taken and as such
+       freezes the current state.";
+    reference
+      "ITU-T G.808, RFC 4427";
+  }
+
+  identity clear-freeze {
+    base protection-external-commands;
+    description
+      "An action that clears the active freeze state.";
+    reference
+      "ITU-T G.808, RFC 4427";
+  }
+
+  identity action-lockout-of-normal {
+    base protection-external-commands;
+    description
+      "A temporary configuration action initiated by an operator
+       command to ensure that the normal traffic is not allowed
+       to use the protection transport entity.";
+    reference
+      "ITU-T G.808, RFC 4427";
+  }
+
+  identity clear-lockout-of-normal {
+    base protection-external-commands;
+    description
+      "An action that clears the active lockout of normal state.";
+    reference
+      "ITU-T G.808, RFC 4427";
+  }
+
+  identity action-lockout-of-protection {
+    base protection-external-commands;
+    description
+      "A temporary configuration action initiated by an operator
+       command to ensure that the protection transport entity is
+       temporarily not available to transport a traffic signal
+       (either normal or extra traffic).";
+    reference
+        "ITU-T G.808, RFC 4427";
+  }
+
+  identity action-forced-switch {
+    base protection-external-commands;
+    description
+        "A switch action initiated by an operator command to swith
+         the extra traffic signal, the normal traffic signal, or the
+         null signal to the protection transport entity, unless an
+         equal or higher priority switch command is in effect.";
+    reference
+        "ITU-T G.808, RFC 4427";
+  }
+
+  identity action-manual-switch {
+    base protection-external-commands;
+    description
+        "A switch action initiated by an operator command to swith
+         the extra traffic signal, the normal traffic signal #i, or
+         the null signal to the protection transport entity, unless
+         a fault condition exists on other transport entities or an
+         equal or higher priority switch command is in effect.";
+    reference
+        "ITU-T G.808, RFC 4427";
+  }
+
+  identity action-exercise {
+    base protection-external-commands;
+    description
+        "An action to start testing if the APS communication is
+         operating correctly. It is lower priority than any other
+         state or command.";
+    reference
+        "ITU-T G.808, RFC 4427";
+  }
+
+  identity clear {
+    base protection-external-commands;
+    description
+        "An action that clears the active near-end lockout of
+         protection, forced switch, manual switch, WTR state,
+         or exercise command.";
+    reference
+        "ITU-T G.808, RFC 4427";
+  }
+
+  identity switching-capabilities {
+    description
+      "Base identity for interface switching capabilities";
+    reference "RFC3471";
+  }
+
+  identity switching-psc1 {
+    base switching-capabilities;
+    description
+      "Packet-Switch Capable-1 (PSC-1)";
+    reference "RFC3471";
+  }
+
+  identity switching-evpl {
+    base switching-capabilities;
+    description
+      "Ethernet Virtual Private Line (EVPL)";
+  }
+
+  identity switching-l2sc {
+    base switching-capabilities;
+    description
+      "Layer-2 Switch Capable (L2SC)";
+    reference "RFC3471";
+  }
+
+  identity switching-tdm {
+    base switching-capabilities;
+    description
+      "Time-Division-Multiplex Capable (TDM)";
+    reference "RFC3471";
+  }
+
+  identity switching-otn {
+    base switching-capabilities;
+    description
+      "OTN-TDM capable";
+  }
+
+  identity switching-dcsc {
+    base switching-capabilities;
+    description
+      "Data Channel Switching Capable (DCSC)";
+  }
+
+  identity switching-lsc {
+    base switching-capabilities;
+    description
+      "Lambda-Switch Capable (LSC)";
+    reference "RFC3471";
+  }
+
+  identity switching-fsc {
+    base switching-capabilities;
+    description
+      "Fiber-Switch Capable (FSC)";
+    reference "RFC3471";
+  }
+
+  identity lsp-encoding-types {
+    description
+      "Base identity for encoding types";
+    reference "RFC3471";
+  }
+
+  identity lsp-encoding-packet {
+    base lsp-encoding-types;
+    description
+      "Packet LSP encoding";
+    reference "RFC3471";
+  }
+
+  identity lsp-encoding-ethernet {
+    base lsp-encoding-types;
+    description
+      "Ethernet LSP encoding";
+    reference "RFC3471";
+  }
+
+  identity lsp-encoding-pdh {
+    base lsp-encoding-types;
+    description
+      "ANSI/ETSI LSP encoding";
+    reference "RFC3471";
+  }
+
+  identity lsp-encoding-sdh {
+    base lsp-encoding-types;
+    description
+      "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding";
+    reference "RFC3471";
+  }
+
+  identity lsp-encoding-digital-wrapper {
+    base lsp-encoding-types;
+    description
+      "Digital Wrapper LSP encoding";
+    reference "RFC3471";
+  }
+
+  identity lsp-encoding-lambda {
+    base lsp-encoding-types;
+    description
+      "Lambda (photonic) LSP encoding";
+    reference "RFC3471";
+  }
+
+  identity lsp-encoding-fiber {
+    base lsp-encoding-types;
+    description
+      "Fiber LSP encoding";
+    reference "RFC3471";
+  }
+
+  identity lsp-encoding-fiber-channel {
+    base lsp-encoding-types;
+    description
+      "FiberChannel LSP encoding";
+    reference "RFC3471";
+  }
+
+  identity lsp-encoding-oduk {
+    base lsp-encoding-types;
+    description
+      "G.709 ODUk (Digital Path)LSP encoding";
+  }
+
+  identity lsp-encoding-optical-channel {
+    base lsp-encoding-types;
+    description
+      "Line (e.g., 8B/10B) LSP encoding";
+  }
+
+  identity lsp-encoding-line {
+    base lsp-encoding-types;
+    description
+      "Line (e.g., 8B/10B) LSP encoding";
+  }
+
+  identity path-signaling-type {
+    description
+      "base identity from which specific LSPs path
+       setup types are derived";
+  }
+
+  identity path-setup-static {
+    base path-signaling-type;
+    description
+      "Static LSP provisioning path setup";
+  }
+
+  identity path-setup-rsvp {
+    base path-signaling-type;
+    description
+      "RSVP-TE signaling path setup";
+    reference "RFC3209";
+  }
+
+  identity path-setup-sr {
+    base path-signaling-type;
+    description
+      "Segment-routing path setup";
+  }
+
+  identity path-scope-type {
+    description
+      "base identity from which specific path
+       scope types are derived";
+  }
+
+  identity path-scope-segment {
+    base path-scope-type;
+    description
+      "Path scope segment";
+  }
+
+  identity path-scope-end-to-end {
+    base path-scope-type;
+    description
+      "Path scope end to end";
+  }
+
+  /* TE basic features */
+  feature p2mp-te {
+    description
+      "Indicates support for P2MP-TE";
+    reference "RFC4875";
+  }
+
+  feature frr-te {
+    description
+      "Indicates support for TE FastReroute (FRR)";
+    reference "RFC4090";
+  }
+
+  feature extended-admin-groups {
+    description
+      "Indicates support for TE link extended admin
+      groups.";
+    reference "RFC7308";
+  }
+
+  feature named-path-affinities {
+    description
+      "Indicates support for named path affinities";
+  }
+
+  feature named-extended-admin-groups {
+    description
+      "Indicates support for named extended admin groups";
+  }
+
+  feature named-srlg-groups {
+    description
+      "Indicates support for named SRLG groups";
+  }
+
+  feature named-path-constraints {
+    description
+      "Indicates support for named path constraints";
+  }
+
+  feature path-optimization-metric {
+    description
+      "Indicates support for path optimization metric";
+  }
+
+  feature path-optimization-objective-function {
+    description
+      "Indicates support for path optimization objective function";
+  }
+
+  identity route-usage-type {
+    description
+      "Base identity for route usage";
+  }
+
+  identity route-include-ero {
+    base route-usage-type;
+    description
+      "Include ERO from route";
+  }
+
+  identity route-exclude-ero {
+    base route-usage-type;
+    description
+      "Exclude ERO from route";
+  }
+
+  identity route-exclude-srlg {
+    base route-usage-type;
+    description
+      "Exclude SRLG from route";
+  }
+
+  identity path-metric-type {
+    description
+      "Base identity for path metric type";
+  }
+
+  identity path-metric-te {
+    base path-metric-type;
+    description
+      "TE path metric";
+    reference "RFC3785";
+  }
+
+  identity path-metric-igp {
+    base path-metric-type;
+    description
+      "IGP path metric";
+    reference "RFC3785";
+  }
+
+  identity path-metric-hop {
+    base path-metric-type;
+    description
+      "Hop path metric";
+  }
+
+  identity path-metric-delay-average {
+    base path-metric-type;
+    description
+      "Unidirectional average link delay";
+    reference "RFC7471";
+  }
+
+  identity path-metric-residual-bandwidth {
+    base path-metric-type;
+    description
+      "Unidirectional Residual Bandwidth, which is defined to be
+       Maximum Bandwidth [RFC3630] minus the bandwidth currently
+       allocated to  LSPs.";
+    reference "RFC7471";
+  }
+  identity path-metric-optimize-includes {
+    base path-metric-type;
+    description
+      "A metric that optimizes the number of included resources
+       specified in a set";
+  }
+
+  identity path-metric-optimize-excludes {
+    base path-metric-type;
+    description
+      "A metric that optimizes the number of excluded resources
+       specified in a set";
+  }
+
+  identity path-tiebreaker-type {
+    description
+      "Base identity for path tie-breaker type";
+  }
+
+  identity path-tiebreaker-minfill {
+    base path-tiebreaker-type;
+    description
+      "Min-Fill LSP path placement";
+  }
+
+  identity path-tiebreaker-maxfill {
+    base path-tiebreaker-type;
+    description
+      "Max-Fill LSP path placement";
+  }
+
+  identity path-tiebreaker-randoom {
+    base path-tiebreaker-type;
+    description
+      "Random LSP path placement";
+  }
+
+  identity bidir-provisioning-mode {
+    description
+      "Base identity for bidirectional provisioning
+      mode.";
+    reference "RFC7551";
+  }
+
+  identity bidir-provisioning-single-sided {
+    base bidir-provisioning-mode;
+    description
+      "Single-sided bidirectional provioning mode";
+    reference "RFC7551";
+  }
+
+  identity bidir-provisioning-double-sided {
+    base bidir-provisioning-mode;
+    description
+      "Double-sided bidirectional provioning mode";
+    reference "RFC7551";
+  }
+
+  identity bidir-association-type {
+    description
+      "Base identity for bidirectional association type";
+    reference "RFC7551";
+  }
+
+  identity bidir-assoc-corouted {
+    base bidir-association-type;
+    description
+      "Co-routed bidirectional association type";
+    reference "RFC7551";
+  }
+
+  identity bidir-assoc-non-corouted {
+    base bidir-association-type;
+    description
+      "Non co-routed bidirectional association type";
+    reference "RFC7551";
+  }
+
+  identity resource-affinities-type {
+    description
+      "Base identity for resource affinities";
+    reference "RFC2702";
+  }
+
+  identity resource-aff-include-all {
+    base resource-affinities-type;
+    description
+      "The set of attribute filters associated with a
+      tunnel all of which must be present for a link
+      to be acceptable";
+    reference "RFC2702 and RFC3209";
+  }
+
+  identity resource-aff-include-any {
+    base resource-affinities-type;
+    description
+      "The set of attribute filters associated with a
+      tunnel any of which must be present for a link
+      to be acceptable";
+    reference "RFC2702 and RFC3209";
+  }
+
+  identity resource-aff-exclude-any {
+    base resource-affinities-type;
+    description
+      "The set of attribute filters associated with a
+      tunnel any of which renders a link unacceptable";
+    reference "RFC2702 and RFC3209";
+  }
+
+  typedef optimization-goal {
+    type enumeration {
+      enum minimize {
+        description "Pick lowest path metric goal";
+      }
+      enum maximize {
+        description "Pick highest path metric goal";
+      }
+      enum randomize {
+        description
+          "Pick a path at random from list of
+           equally favorable ones";
+      }
+    }
+    description "TE optimization goal";
+  }
+
+  identity te-optimization-criterion {
+    description
+      "Base identity for TE optimization criterion.";
+    reference
+      "RFC3272: Overview and Principles of Internet Traffic
+       Engineering.";
+  }
+
+  identity not-optimized {
+    base te-optimization-criterion;
+    description "Optimization is not applied.";
+  }
+
+  identity cost {
+    base te-optimization-criterion;
+    description "Optimized on cost.";
+  }
+  identity delay {
+    base te-optimization-criterion;
+    description "Optimized on delay.";
+  }
+
+  /*
+   * Typedefs
+   */
+
+  typedef percentage {
+    type uint8 {
+      range "0..100";
+    }
+    description
+      "Integer indicating a percentage value";
+  }
+
+  typedef performance-metric-normality {
+    type enumeration {
+      enum "unknown" {
+        value 0;
+        description
+          "Unknown.";
+      }
+      enum "normal" {
+        value 1;
+        description
+          "Normal.";
+      }
+      enum "abnormal" {
+        value 2;
+        description
+          "Abnormal. The anomalous bit is set.";
+      }
+    }
+    description
+      "Indicates whether a performance metric is normal, abnormal, or
+       unknown.";
+    reference
+      "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
+       RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
+       RFC7823: Performance-Based Path Selection for Explicitly
+       Routed Label Switched Paths (LSPs) Using TE Metric
+       Extensions";
+  }
+
+  typedef te-admin-status {
+    type enumeration {
+      enum up {
+        description
+          "Enabled.";
+      }
+      enum down {
+        description
+          "Disabled.";
+      }
+      enum testing {
+        description
+          "In some test mode.";
+      }
+      enum preparing-maintenance {
+        description
+          "Resource is disabled in the control plane to prepare for
+           graceful shutdown for maintenance purposes.";
+        reference
+          "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS
+           Traffic Engineering Networks";
+      }
+      enum maintenance {
+        description
+          "Resource is disabled in the data plane for maintenance
+           purposes.";
+      }
+    }
+    description
+      "Defines a type representing the administrative status of
+       a TE resource.";
+  }
+
+  typedef te-global-id {
+    type uint32;
+    description
+      "An identifier to uniquely identify an operator, which can be
+       either a provider or a client.
+       The definition of this type is taken from RFC6370 and RFC5003.
+       This attribute type is used solely to provide a globally
+       unique context for TE topologies.";
+  }
+
+  typedef te-link-access-type {
+    type enumeration {
+      enum point-to-point {
+        description
+          "The link is point-to-point.";
+      }
+      enum multi-access {
+        description
+          "The link is multi-access, including broacast and NBMA.";
+      }
+    }
+    description
+      "Defines a type representing the access type of a TE link.";
+    reference
+      "RFC3630: Traffic Engineering (TE) Extensions to OSPF
+       Version 2.";
+  }
+
+  typedef te-node-id {
+    type yang:dotted-quad;
+    description
+      "An identifier for a node in a topology.
+       The identifier is represented as 32-bit unsigned integer in
+       the dotted-quad notation.
+       This attribute is mapped to Router ID in
+       RFC3630, RFC5329, RFC5305, and RFC6119.";
+  }
+
+  typedef te-oper-status {
+    type enumeration {
+      enum up {
+        description
+        "Operational up.";
+      }
+      enum down {
+        description
+        "Operational down.";
+      }
+      enum testing {
+        description
+        "In some test mode.";
+      }
+      enum unknown {
+        description
+        "Status cannot be determined for some reason.";
+      }
+      enum preparing-maintenance {
+        description
+          "Resource is disabled in the control plane to prepare for
+           graceful shutdown for maintenance purposes.";
+        reference
+          "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS
+           Traffic Engineering Networks";
+      }
+      enum maintenance {
+        description
+          "Resource is disabled in the data plane for maintenance
+           purposes.";
+      }
+    }
+    description
+      "Defines a type representing the operational status of
+       a TE resource.";
+  }
+
+  typedef te-path-disjointness {
+    type bits {
+      bit node {
+        position 0;
+        description "Node disjoint.";
+      }
+      bit link {
+        position 1;
+        description "Link disjoint.";
+      }
+      bit srlg {
+        position 2;
+        description "SRLG (Shared Risk Link Group) disjoint.";
+      }
+    }
+    description
+      "Type of the resource disjointness for a TE tunnel path.";
+    reference
+      "RFC4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS)
+       Recovery";
+  } // te-path-disjointness
+
+  typedef te-recovery-status {
+    type enumeration {
+      enum normal {
+        description
+          "Both the recovery and working spans are fully
+           allocated and active, data traffic is being
+           transported over (or selected from) the working
+           span, and no trigger events are reported.";
+      }
+      enum recovery-started {
+        description
+          "The recovery action has been started, but not completed.";
+      }
+      enum recovery-succeeded {
+        description
+          "The recovery action has succeeded. The working span has
+           reported a failure/degrade condition and the user traffic
+           is being transported (or selected) on the recovery span.";
+      }
+      enum recovery-failed {
+        description
+          "The recovery action has failed.";
+      }
+      enum reversion-started {
+        description
+          "The reversion has started.";
+      }
+      enum reversion-failed {
+        description
+          "The reversion has failed.";
+      }
+      enum recovery-unavailable {
+        description
+          "The recovery is unavailable -- either as a result of an
+           operator Lockout command or a failure condition detected
+           on the recovery span.";
+      }
+      enum recovery-admin {
+        description
+          "The operator has issued a command switching the user
+           traffic to the recovery span.";
+      }
+      enum wait-to-restore {
+        description
+          "The recovery domain is recovering from a failuer/degrade
+           condition on the working span that is being controlled by
+           the Wait-to-Restore (WTR) timer.";
+      }
+    }
+    description
+      "Defines the status of a recovery action.";
+    reference
+      "RFC4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS).
+       RFC6378: MPLS Transport Profile (MPLS-TP) Linear Protection";
+  }
+
+  typedef te-template-name {
+    type string {
+      pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
+    }
+    description
+      "A type for the name of a TE node template or TE link
+       template.";
+  }
+
+  typedef te-topology-event-type {
+    type enumeration {
+      enum "add" {
+        value 0;
+        description
+          "A TE node or te-link has been added.";
+      }
+      enum "remove" {
+        value 1;
+        description
+          "A TE node or te-link has been removed.";
+      }
+      enum "update" {
+        value 2;
+        description
+          "A TE node or te-link has been updated.";
+      }
+    }
+    description "TE  Event type for notifications";
+  } // te-topology-event-type
+
+  typedef te-topology-id {
+    type string {
+      pattern
+        '([a-zA-Z0-9\-_.]+:)*'
+      + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
+    }
+    description
+      "An identifier for a topology.
+       It is optional to have one or more prefixes at the begining,
+       separated by colons. The prefixes can be the network-types,
+       defined in ietf-network.yang, to help user to understand the
+       topology better before further inquiry.";
+  }
+
+  typedef te-tp-id {
+    type union {
+      type uint32;          // Unnumbered
+      type inet:ip-address; // IPv4 or IPv6 address
+    }
+    description
+      "An identifier for a TE link endpoint on a node.
+       This attribute is mapped to local or remote link identifier in
+       RFC3630 and RFC5305.";
+  }
+  typedef admin-group {
+    type binary {
+      length 4;
+    }
+    description
+      "Administrative group/Resource class/Color.";
+    reference "RFC3630 and RFC5305";
+  }
+
+  typedef extended-admin-group {
+    type binary;
+    description
+      "Extended administrative group/Resource class/Color.";
+    reference "RFC7308";
+  }
+
+  typedef admin-groups {
+    type union {
+      type admin-group;
+      type extended-admin-group;
+    }
+    description "TE administrative group derived type";
+  }
+
+  typedef srlg {
+    type uint32;
+    description "SRLG type";
+    reference "RFC4203 and RFC5307";
+  }
+
+  identity path-computation-srlg-type {
+    description
+      "Base identity for SRLG path computation";
+  }
+
+  identity srlg-ignore {
+    base path-computation-srlg-type;
+    description
+      "Ignores SRLGs in path computation";
+  }
+
+  identity srlg-strict {
+    base path-computation-srlg-type;
+    description
+      "Include strict SRLG check in path computation";
+  }
+
+  identity srlg-preferred {
+    base path-computation-srlg-type;
+    description
+      "Include preferred SRLG check in path computation";
+  }
+
+  identity srlg-weighted {
+    base path-computation-srlg-type;
+    description
+      "Include weighted SRLG check in path computation";
+  }
+
+  typedef te-metric {
+    type uint32;
+    description
+      "TE link metric";
+    reference "RFC3785";
+  }
+
+  /**
+   * TE bandwidth groupings
+   **/
+  identity otn-rate-type {
+    description
+      "Base type to identify OTN bit rates of various information
+       structures.";
+    reference "RFC7139";
+  }
+  identity odu0 {
+    base otn-rate-type;
+    description
+        "ODU0 bit rate.";
+  }
+  identity odu1 {
+    base otn-rate-type;
+    description
+        "ODU1 bit rate.";
+  }
+  identity odu2 {
+    base otn-rate-type;
+    description
+        "ODU2 bit rate.";
+  }
+  identity odu3 {
+    base otn-rate-type;
+    description
+        "ODU3 bit rate.";
+  }
+  identity odu4 {
+    base otn-rate-type;
+    description
+        "ODU4 bit rate.";
+  }
+  identity odu2e {
+    base otn-rate-type;
+    description
+        "ODU2e bit rate.";
+  }
+  identity oduc {
+    base otn-rate-type;
+    description
+        "ODUCn bit rate.";
+  }
+  identity oduflex {
+    base otn-rate-type;
+    description
+        "ODUflex bit rate.";
+  }
+
+  identity wdm-spectrum-type {
+    description
+      "Base type to identify WDM spectrum type.";
+  }
+  identity cwdm {
+    base wdm-spectrum-type;
+    description "CWDM.";
+    reference "RFC6205";
+  }
+  identity dwdm {
+    base wdm-spectrum-type;
+    description "DWDM.";
+    reference "RFC6205";
+  }
+  identity flexible-grid {
+    base wdm-spectrum-type;
+    description "Flexible grid.";
+    reference "RFC6205";
+  }
+
+  grouping te-bandwidth {
+    description
+      "This grouping defines the generic TE bandwidth.
+       For some known data plane technologies, specific modeling
+       structures are specified. The string encoded te-bandwidth
+       type is used for un-specified technologies.
+       The modeling structure can be augmented later for other
+       technologies.";
+    container te-bandwidth {
+      description
+        "Container that specifies TE bandwidth.";
+      choice technology {
+        default generic;
+        description
+          "Data plane technology type.";
+        case generic {
+          leaf generic {
+            type te-bandwidth;
+            description
+              "Bandwidth specified in a generic format.";
+          }
+        }
+      }
+    }
+  }
+
+  /**
+   * TE label groupings
+   **/
+  grouping te-label {
+    description
+      "This grouping defines the generic TE label.
+       The modeling structure can be augmented for each technology.
+       For un-specified technologies, rt-types:generalized-label
+       is used.";
+    container te-label {
+      description
+        "Container that specifies TE label.";
+      choice technology {
+        default generic;
+        description
+          "Data plane technology type.";
+        case generic {
+          leaf generic {
+            type rt-types:generalized-label;
+            description
+              "TE label specified in a generic format.";
+          }
+        }
+      }
+      leaf direction {
+        type te-label-direction;
+        description "Label direction";
+      }
+    }
+  }
+  /**
+   * TE performance metric groupings
+   **/
+  grouping performance-metric-container {
+    description
+      "A container containing performance metric attributes.";
+    container performance-metric {
+      description
+        "Link performance information in real time.";
+      reference
+        "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
+         RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
+         RFC7823: Performance-Based Path Selection for Explicitly
+         Routed Label Switched Paths (LSPs) Using TE Metric
+         Extensions";
+      container measurement {
+        description
+          "Measured performance metric values. Static configuration
+           and manual overrides of these measurements are also
+           allowed.";
+        uses performance-metric-attributes;
+      }
+      container normality
+      {
+        description
+          "Performance metric normality values.";
+        uses performance-metric-normality-attributes;
+      }
+      uses performance-metric-throttle-container;
+    }
+  } // performance-metric-container
+
+  grouping te-topology-identifier {
+    description
+      "Augmentation for TE topology.";
+    container te-topology-identifier {
+      description "TE topology identifier container";
+      leaf provider-id {
+        type te-types:te-global-id;
+        description
+          "An identifier to uniquely identify a provider.";
+      }
+      leaf client-id {
+        type te-types:te-global-id;
+        description
+          "An identifier to uniquely identify a client.";
+      }
+      leaf topology-id {
+        type te-types:te-topology-id;
+        description
+          "It is presumed that a datastore will contain many
+           topologies. To distinguish between topologies it is
+           vital to have UNIQUE topology identifiers.";
+      }
+    }
+  }
+
+  grouping performance-metric-attributes {
+    description
+      "Link performance information in real time.";
+    reference
+      "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
+       RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
+       RFC7823: Performance-Based Path Selection for Explicitly
+       Routed Label Switched Paths (LSPs) Using TE Metric
+       Extensions";
+    leaf unidirectional-delay {
+      type uint32 {
+        range 0..16777215;
+      }
+      description "Delay or latency in micro seconds.";
+    }
+    leaf unidirectional-min-delay {
+      type uint32 {
+        range 0..16777215;
+      }
+      description "Minimum delay or latency in micro seconds.";
+    }
+    leaf unidirectional-max-delay {
+      type uint32 {
+        range 0..16777215;
+      }
+      description "Maximum delay or latency in micro seconds.";
+    }
+    leaf unidirectional-delay-variation {
+      type uint32 {
+        range 0..16777215;
+      }
+      description "Delay variation in micro seconds.";
+    }
+    leaf unidirectional-packet-loss {
+      type decimal64 {
+        fraction-digits 6;
+        range "0 .. 50.331642";
+      }
+      description
+        "Packet loss as a percentage of the total traffic sent
+         over a configurable interval. The finest precision is
+         0.000003%.";
+    }
+    leaf unidirectional-residual-bandwidth {
+      type rt-types:bandwidth-ieee-float32;
+      description
+        "Residual bandwidth that subtracts tunnel
+         reservations from Maximum Bandwidth (or link capacity)
+         [RFC3630] and provides an aggregated remainder across QoS
+         classes.";
+    }
+    leaf unidirectional-available-bandwidth {
+      type rt-types:bandwidth-ieee-float32;
+      description
+        "Available bandwidth that is defined to be residual
+         bandwidth minus the measured bandwidth used for the
+         actual forwarding of non-RSVP-TE LSP packets.  For a
+         bundled link, available bandwidth is defined to be the
+         sum of the component link available bandwidths.";
+    }
+    leaf unidirectional-utilized-bandwidth {
+      type rt-types:bandwidth-ieee-float32;
+      description
+        "Bandwidth utilization that represents the actual
+         utilization of the link (i.e. as measured in the router).
+         For a bundled link, bandwidth utilization is defined to
+         be the sum of the component link bandwidth
+         utilizations.";
+    }
+  } // performance-metric-attributes
+
+  grouping performance-metric-normality-attributes {
+    description
+      "Link performance metric normality attributes.";
+    reference
+      "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
+       RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
+       RFC7823: Performance-Based Path Selection for Explicitly
+       Routed Label Switched Paths (LSPs) Using TE Metric
+       Extensions";
+    leaf unidirectional-delay {
+      type te-types:performance-metric-normality;
+      description "Delay normality.";
+    }
+    leaf unidirectional-min-delay {
+      type te-types:performance-metric-normality;
+      description "Minimum delay or latency normality.";
+    }
+    leaf unidirectional-max-delay {
+      type te-types:performance-metric-normality;
+      description "Maximum delay or latency normality.";
+    }
+    leaf unidirectional-delay-variation {
+      type te-types:performance-metric-normality;
+      description "Delay variation normality.";
+    }
+    leaf unidirectional-packet-loss {
+      type te-types:performance-metric-normality;
+      description "Packet loss normality.";
+    }
+    leaf unidirectional-residual-bandwidth {
+      type te-types:performance-metric-normality;
+      description "Residual bandwidth normality.";
+    }
+    leaf unidirectional-available-bandwidth {
+      type te-types:performance-metric-normality;
+      description "Available bandwidth normality.";
+    }
+    leaf unidirectional-utilized-bandwidth {
+      type te-types:performance-metric-normality;
+      description "Bandwidth utilization normality.";
+    }
+  } // performance-metric-normality-attributes
+
+  grouping performance-metric-throttle-container {
+    description
+      "A container controlling performance metric throttle.";
+    container throttle {
+      must "suppression-interval >= measure-interval" {
+        error-message
+          "suppression-interval cannot be less then
+           measure-interval.";
+        description
+          "Constraint on suppression-interval and
+           measure-interval.";
+      }
+      description
+        "Link performance information in real time.";
+      reference
+        "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
+         RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
+         RFC7823: Performance-Based Path Selection for Explicitly
+         Routed Label Switched Paths (LSPs) Using TE Metric
+         Extensions";
+      leaf unidirectional-delay-offset {
+        type uint32 {
+          range 0..16777215;
+        }
+        description
+          "Offset value to be added to the measured delay value.";
+      }
+      leaf measure-interval {
+        type uint32;
+        default 30;
+        description
+          "Interval in seconds to measure the extended metric
+           values.";
+      }
+      leaf advertisement-interval {
+        type uint32;
+        description
+          "Interval in seconds to advertise the extended metric
+           values.";
+      }
+      leaf suppression-interval {
+        type uint32 {
+          range "1 .. max";
+        }
+        default 120;
+        description
+          "Interval in seconds to suppress advertising the extended
+           metric values.";
+      }
+      container threshold-out {
+        uses performance-metric-attributes;
+        description
+          "If the measured parameter falls outside an upper bound
+           for all but the min delay metric (or lower bound for
+           min-delay metric only) and the advertised value is not
+           already outside that bound, anomalous announcement will be
+           triggered.";
+      }
+      container threshold-in {
+        uses performance-metric-attributes;
+        description
+          "If the measured parameter falls inside an upper bound
+           for all but the min delay metric (or lower bound for
+           min-delay metric only) and the advertised value is not
+           already inside that bound, normal (anomalous-flag cleared)
+           announcement will be triggered.";
+      }
+      container threshold-accelerated-advertisement {
+        description
+          "When the difference between the last advertised value and
+           current measured value exceed this threshold, anomalous
+           announcement will be triggered.";
+        uses performance-metric-attributes;
+      }
+    }
+  } // performance-metric-throttle-container
+
+  /**
+   * TE tunnel generic groupings
+   **/
+
+  /* Tunnel path selection parameters */
+  grouping explicit-route-hop {
+    description
+      "The explicit route subobject grouping";
+    leaf index {
+      type uint32;
+      description "ERO subobject index";
+    }
+    choice type {
+      description
+        "The explicit route subobject type";
+      case num-unnum-hop {
+        container num-unnum-hop {
+          leaf node-id {
+            type te-types:te-node-id;
+            description
+              "The identifier of a node in the TE topology.";
+          }
+          leaf link-tp-id {
+            type te-types:te-tp-id;
+              description
+                "TE link termination point identifier. The combination
+                 of TE link ID and the TE node ID is used to identify an
+                 unnumbered TE link.";
+          }
+          leaf hop-type {
+            type te-hop-type;
+            description "strict or loose hop";
+          }
+          leaf direction {
+            type te-link-direction;
+            description "Unnumbered Link ERO direction";
+          }
+          description
+            "Numbered and Unnumbered link/node explicit route
+             subobject";
+          reference
+            "RFC3209: section 4.3 for EXPLICIT_ROUTE in RSVP-TE
+             RFC3477: Signalling Unnumbered Links in RSVP-TE";
+        }
+      }
+      case as-number {
+        container as-number-hop {
+          leaf as-number {
+            type binary {
+              length 16;
+            }
+            description "AS number";
+          }
+          leaf hop-type {
+            type te-hop-type;
+              description
+                "strict or loose hop";
+          }
+          description
+            "Autonomous System explicit route subobject";
+        }
+      }
+      case label {
+        container label-hop {
+          description "Label hop type";
+          uses te-label;
+        }
+        description
+          "The Label ERO subobject";
+      }
+    }
+  }
+
+  grouping record-route-subobject_state {
+    description
+      "The record route subobject grouping";
+    leaf index {
+      type uint32;
+      description "RRO subobject index";
+    }
+    choice type {
+      description
+        "The record route subobject type";
+      case numbered {
+        leaf address {
+          type te-types:te-tp-id;
+          description
+            "Numbered link TE termination point address.";
+        }
+        leaf ip-flags {
+          type binary {
+            length 8;
+          }
+          description
+            "RRO IP address sub-object flags";
+          reference "RFC3209";
+        }
+      }
+      case unnumbered {
+        leaf node-id {
+          type te-types:te-node-id;
+          description
+            "The identifier of a node in the TE topology.";
+        }
+        leaf link-tp-id {
+          type te-types:te-tp-id;
+            description
+              "TE link termination point identifier, used
+               together with te-node-id to identify the
+               link termination point";
+        }
+        description
+          "Unnumbered link record route subobject";
+        reference
+          "RFC3477: Signalling Unnumbered Links in
+           RSVP-TE";
+      }
+      case label {
+        container label-hop {
+          description "Label hop type";
+          uses te-label;
+          leaf label-flags {
+            type binary {
+              length 8;
+            }
+            description
+              "Label sub-object flags";
+            reference "RFC3209";
+          }
+        }
+        description
+          "The Label RRO subobject";
+      }
+    }
+  }
+
+  grouping label-restriction-info {
+    description "Label set item info";
+    leaf restriction {
+      type enumeration {
+        enum inclusive {
+          description "The label or label range is inclusive.";
+        }
+        enum exclusive {
+          description "The label or label range is exclusive.";
+        }
+      }
+      description
+        "Whether the list item is inclusive or exclusive.";
+    }
+    leaf index {
+      type uint32;
+      description
+        "Then index of the label restriction list entry.";
+    }
+    container label-start {
+      description
+        "This is the starting label if a label range is specified.
+         This is the label value if a single label is specified,
+         in which case, attribute 'label-end' is not set.";
+      uses te-label;
+    }
+    container label-end {
+      description
+        "The ending label if a label range is specified;
+         This attribute is not set, If a single label is
+         specified.";
+      uses te-label;
+    }
+    leaf range-bitmap {
+      type binary;
+      description
+        "When there are gaps between label-start and label-end,
+         this attribute is used to specified the possitions
+         of the used labels.";
+    }
+  }
+
+  grouping label-set-info {
+    description
+      "Grouping for List of label restrictions specifying what labels
+       may or may not be used on a link connectivity.";
+    container label-restrictions {
+      description
+        "The label restrictions container";
+      list label-restriction {
+        key "index";
+        description
+          "The absence of label-set implies that all labels are
+           acceptable; otherwise only restricted labels are
+           available.";
+        reference
+          "RFC7579: General Network Element Constraint Encoding
+           for GMPLS-Controlled Networks";
+        uses label-restriction-info;
+      }
+    }
+  }
+
+  /*** End of TE tunnel groupings ***/
+  grouping optimizations_config {
+    description "Optimization metrics configuration grouping";
+    leaf metric-type {
+      type identityref {
+        base te-types:path-metric-type;
+      }
+      description "TE path metric type";
+    }
+    leaf weight {
+      type uint8;
+      description "TE path metric normalization weight";
+    }
+    container explicit-route-exclude-objects {
+      when "../metric-type = " +
+           "'te-types:path-metric-optimize-excludes'";
+      description
+        "Container for the exclude route object list";
+      uses path-route-exclude-objects;
+    }
+    container explicit-route-include-objects {
+      when "../metric-type = " +
+           "'te-types:path-metric-optimize-includes'";
+      description
+        "Container for the include route object list";
+      uses path-route-include-objects;
+    }
+  }
+
+  grouping common-constraints_config {
+    description
+      "Common constraints grouping that can be set on
+       a constraint set or directly on the tunnel";
+
+    uses te-types:te-bandwidth {
+      description
+        "A requested bandwidth to use for path computation";
+    }
+
+    leaf setup-priority {
+      type uint8 {
+        range "0..7";
+      }
+      description
+        "TE LSP requested setup priority";
+      reference "RFC3209";
+    }
+    leaf hold-priority {
+      type uint8 {
+        range "0..7";
+      }
+      description
+        "TE LSP requested hold priority";
+      reference "RFC3209";
+    }
+    leaf signaling-type {
+      type identityref {
+        base te-types:path-signaling-type;
+      }
+      description "TE tunnel path signaling type";
+    }
+  }
+
+  grouping tunnel-constraints_config {
+    description
+      "Tunnel constraints grouping that can be set on
+       a constraint set or directly on the tunnel";
+    uses te-types:te-topology-identifier;
+    uses te-types:common-constraints_config;
+  }
+
+  grouping path-metrics-bounds_config {
+    description "TE path metric bounds grouping";
+    leaf metric-type {
+      type identityref {
+        base te-types:path-metric-type;
+      }
+      description "TE path metric type";
+    }
+    leaf upper-bound {
+      type uint64;
+      description "Upper bound on end-to-end TE path metric";
+    }
+  }
+
+  grouping path-objective-function_config {
+    description "Optimization metrics configuration grouping";
+    leaf objective-function-type {
+      type identityref {
+        base te-types:objective-function-type;
+      }
+      description
+        "Objective function entry";
+    }
+  }
+
+  /**
+   * TE interface generic groupings
+   **/
+  grouping path-route-objects {
+    description
+      "List of EROs to be included or excluded when performing
+       the path computation.";
+    container explicit-route-objects {
+      description
+        "Container for the exclude route object list";
+      list route-object-exclude-always {
+        key index;
+        description
+          "List of explicit route objects to always exclude
+           from path computation";
+        uses te-types:explicit-route-hop;
+      }
+      list route-object-include-exclude {
+        key index;
+        description
+          "List of explicit route objects to include or
+           exclude in path computation";
+        leaf explicit-route-usage {
+          type identityref {
+            base te-types:route-usage-type;
+          }
+          description "Explicit-route usage.";
+        }
+        uses te-types:explicit-route-hop {
+          augment "type" {
+            case srlg {
+              container srlg {
+                description "SRLG container";
+                leaf srlg {
+                  type uint32;
+                  description "SRLG value";
+                }
+              }
+              description "An SRLG value to be included or excluded";
+            }
+            description
+              "Augmentation to generic explicit route for SRLG
+               exclusion";
+          }
+        }
+      }
+    }
+  }
+
+  grouping path-route-include-objects {
+    description
+      "List of EROs to be included when performing
+       the path computation.";
+    list route-object-include-object {
+      key index;
+      description
+        "List of explicit route objects to be included
+         in path computation";
+      uses te-types:explicit-route-hop;
+    }
+  }
+
+  grouping path-route-exclude-objects {
+    description
+      "List of EROs to be included when performing
+       the path computation.";
+    list route-object-exclude-object {
+      key index;
+      description
+        "List of explicit route objects to be excluded
+         in path computation";
+      uses te-types:explicit-route-hop {
+        augment "type" {
+          case srlg {
+            container srlg {
+              description "SRLG container";
+              leaf srlg {
+                type uint32;
+                description "SRLG value";
+              }
+            }
+            description "An SRLG value to be included or excluded";
+          }
+          description
+            "Augmentation to generic explicit route for SRLG exclusion";
+        }
+      }
+    }
+  }
+
+  grouping generic-path-metric-bounds {
+    description "TE path metric bounds grouping";
+    container path-metric-bounds {
+      description "TE path metric bounds container";
+      list path-metric-bound {
+        key metric-type;
+        description "List of TE path metric bounds";
+        uses path-metrics-bounds_config;
+      }
+    }
+  }
+
+  grouping generic-path-optimization {
+    description "TE generic path optimization grouping";
+
+    container optimizations {
+      description
+        "The objective function container that includes
+         attributes to impose when computing a TE path";
+
+      choice algorithm {
+        description "Optimizations algorithm.";
+        case metric {
+          if-feature path-optimization-metric;
+          /* Optimize by metric */
+          list optimization-metric {
+            key "metric-type";
+            description "TE path metric type";
+            uses optimizations_config;
+          }
+          /* Tiebreakers */
+          container tiebreakers {
+            description
+              "The list of tiebreaker criterion to apply
+               on an equally favored set of paths to pick best";
+            list tiebreaker {
+              key "tiebreaker-type";
+              description
+                "The list of tiebreaker criterion to apply
+                 on an equally favored set of paths to pick best";
+              leaf tiebreaker-type {
+                type identityref {
+                  base te-types:path-metric-type;
+                }
+                description "The objective function";
+              }
+            }
+          }
+        }
+        case objective-function {
+          if-feature path-optimization-objective-function;
+          /* Objective functions */
+          container objective-function {
+            description
+              "The objective function container that includes
+               attributes to impose when computing a TE path";
+            uses path-objective-function_config;
+          }
+        }
+      }
+    }
+  }
+
+  grouping generic-path-affinities {
+    description
+      "Path affinities grouping";
+    container path-affinities {
+      description
+        "Path affinities container";
+      list constraint {
+        key "usage";
+        description
+          "List of named affinity constraints";
+        leaf usage {
+          type identityref {
+            base resource-affinities-type;
+          }
+          description "Affinities usage";
+        }
+        leaf value {
+          type admin-groups;
+          description "Affinity value";
+        }
+      }
+    }
+  }
+
+  grouping generic-path-srlgs {
+    description
+      "Path SRLG grouping";
+    container path-srlgs {
+      description
+        "Path SRLG properties container";
+      leaf usage {
+        type identityref {
+          base te-types:route-exclude-srlg;
+        }
+        description "SRLG usage";
+      }
+      leaf-list values {
+        type srlg;
+        description "SRLG value";
+      }
+    }
+  }
+
+  grouping generic-path-disjointness {
+    description "Path disjointness grouping";
+    leaf disjointness {
+      type te-types:te-path-disjointness;
+      description
+        "The type of resource disjointness.
+         Under primary path, disjointness level applies to
+         all secondary LSPs. Under secondary, disjointness
+         level overrides the one under primary";
+    }
+  }
+
+  grouping common-path-constraints-attributes {
+    description
+      "Common path constraints configuration grouping";
+    uses common-constraints_config;
+    uses generic-path-metric-bounds;
+    uses generic-path-affinities;
+    uses generic-path-srlgs;
+  }
+
+  grouping generic-path-constraints {
+    description
+      "Global named path constraints configuration
+      grouping";
+    container path-constraints {
+      description "TE named path constraints container";
+      uses common-path-constraints-attributes;
+      uses generic-path-disjointness;
+    }
+  }
+
+  grouping generic-path-properties {
+    description "TE generic path properties grouping";
+    container path-properties {
+      config false;
+      description "The TE path properties";
+      list path-metric {
+        key metric-type;
+        description "TE path metric type";
+        leaf metric-type {
+          type identityref {
+            base te-types:path-metric-type;
+          }
+          description "TE path metric type";
+        }
+        leaf accumulative-value {
+          type uint64;
+          description "TE path metric accumulative value";
+        }
+      }
+      uses generic-path-affinities;
+      uses generic-path-srlgs;
+      container path-route-objects {
+        description
+          "Container for the list of route objects either returned by
+           the computation engine or actually used by an LSP";
+        list path-route-object {
+          key index;
+          description
+            "List of route objects either returned by the computation
+             engine or actually used by an LSP";
+          uses explicit-route-hop;
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-yang-types.yang b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-yang-types.yang
new file mode 100644
index 0000000..5231f6a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-yang-types.yang
@@ -0,0 +1,438 @@
+module ietf-yang-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
+  prefix "yang";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types.
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - yang-identifier
+      - hex-string
+      - uuid
+      - dotted-quad";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of counter and gauge types ***/
+
+  typedef counter32 {
+    type uint32;
+    description
+     "The counter32 type represents a non-negative integer
+      that monotonically increases until it reaches a
+      maximum value of 2^32-1 (4294967295 decimal), when it
+      wraps around and starts increasing again from zero.
+      Counters have no defined 'initial' value, and thus, a
+      single value of a counter has (in general) no information
+      content.  Discontinuities in the monotonically increasing
+      value normally occur at re-initialization of the
+      management system, and at other times as specified in the
+      description of a schema node using this type.  If such
+      other times can occur, for example, the creation of
+      a schema node of type counter32 at times other than
+      re-initialization, then a corresponding schema node
+      should be defined, with an appropriate type, to indicate
+      the last discontinuity.
+      The counter32 type should not be used for configuration
+      schema nodes.  A default statement SHOULD NOT be used in
+      combination with the type counter32.
+      In the value set and its semantics, this type is equivalent
+      to the Counter32 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef zero-based-counter32 {
+    type yang:counter32;
+    default "0";
+    description
+     "The zero-based-counter32 type represents a counter32
+      that has the defined 'initial' value zero.
+      A schema node of this type will be set to zero (0) on creation
+      and will thereafter increase monotonically until it reaches
+      a maximum value of 2^32-1 (4294967295 decimal), when it
+      wraps around and starts increasing again from zero.
+      Provided that an application discovers a new schema node
+      of this type within the minimum time to wrap, it can use the
+      'initial' value as a delta.  It is important for a management
+      station to be aware of this minimum time and the actual time
+      between polls, and to discard data if the actual time is too
+      long or there is no defined minimum time.
+      In the value set and its semantics, this type is equivalent
+      to the ZeroBasedCounter32 textual convention of the SMIv2.";
+    reference
+      "RFC 4502: Remote Network Monitoring Management Information
+                 Base Version 2";
+  }
+
+  typedef counter64 {
+    type uint64;
+    description
+     "The counter64 type represents a non-negative integer
+      that monotonically increases until it reaches a
+      maximum value of 2^64-1 (18446744073709551615 decimal),
+      when it wraps around and starts increasing again from zero.
+      Counters have no defined 'initial' value, and thus, a
+      single value of a counter has (in general) no information
+      content.  Discontinuities in the monotonically increasing
+      value normally occur at re-initialization of the
+      management system, and at other times as specified in the
+      description of a schema node using this type.  If such
+      other times can occur, for example, the creation of
+      a schema node of type counter64 at times other than
+      re-initialization, then a corresponding schema node
+      should be defined, with an appropriate type, to indicate
+      the last discontinuity.
+      The counter64 type should not be used for configuration
+      schema nodes.  A default statement SHOULD NOT be used in
+      combination with the type counter64.
+      In the value set and its semantics, this type is equivalent
+      to the Counter64 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef zero-based-counter64 {
+    type yang:counter64;
+    default "0";
+    description
+     "The zero-based-counter64 type represents a counter64 that
+      has the defined 'initial' value zero.
+      A schema node of this type will be set to zero (0) on creation
+      and will thereafter increase monotonically until it reaches
+      a maximum value of 2^64-1 (18446744073709551615 decimal),
+      when it wraps around and starts increasing again from zero.
+      Provided that an application discovers a new schema node
+      of this type within the minimum time to wrap, it can use the
+      'initial' value as a delta.  It is important for a management
+      station to be aware of this minimum time and the actual time
+      between polls, and to discard data if the actual time is too
+      long or there is no defined minimum time.
+      In the value set and its semantics, this type is equivalent
+      to the ZeroBasedCounter64 textual convention of the SMIv2.";
+    reference
+     "RFC 2856: Textual Conventions for Additional High Capacity
+                Data Types";
+  }
+
+  typedef gauge32 {
+    type uint32;
+    description
+     "The gauge32 type represents a non-negative integer, which
+      may increase or decrease, but shall never exceed a maximum
+      value, nor fall below a minimum value.  The maximum value
+      cannot be greater than 2^32-1 (4294967295 decimal), and
+      the minimum value cannot be smaller than 0.  The value of
+      a gauge32 has its maximum value whenever the information
+      being modeled is greater than or equal to its maximum
+      value, and has its minimum value whenever the information
+      being modeled is smaller than or equal to its minimum value.
+      If the information being modeled subsequently decreases
+      below (increases above) the maximum (minimum) value, the
+      gauge32 also decreases (increases).
+      In the value set and its semantics, this type is equivalent
+      to the Gauge32 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef gauge64 {
+    type uint64;
+    description
+     "The gauge64 type represents a non-negative integer, which
+      may increase or decrease, but shall never exceed a maximum
+      value, nor fall below a minimum value.  The maximum value
+      cannot be greater than 2^64-1 (18446744073709551615), and
+      the minimum value cannot be smaller than 0.  The value of
+      a gauge64 has its maximum value whenever the information
+      being modeled is greater than or equal to its maximum
+      value, and has its minimum value whenever the information
+      being modeled is smaller than or equal to its minimum value.
+      If the information being modeled subsequently decreases
+      below (increases above) the maximum (minimum) value, the
+      gauge64 also decreases (increases).
+      In the value set and its semantics, this type is equivalent
+      to the CounterBasedGauge64 SMIv2 textual convention defined
+      in RFC 2856";
+    reference
+     "RFC 2856: Textual Conventions for Additional High Capacity
+                Data Types";
+  }
+
+  /*** collection of identifier-related types ***/
+
+  typedef object-identifier {
+    type string {
+      pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
+            + '(\.(0|([1-9]\d*)))*';
+    }
+    description
+     "The object-identifier type represents administratively
+      assigned names in a registration-hierarchical-name tree.
+      Values of this type are denoted as a sequence of numerical
+      non-negative sub-identifier values.  Each sub-identifier
+      value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
+      are separated by single dots and without any intermediate
+      whitespace.
+      The ASN.1 standard restricts the value space of the first
+      sub-identifier to 0, 1, or 2.  Furthermore, the value space
+      of the second sub-identifier is restricted to the range
+      0 to 39 if the first sub-identifier is 0 or 1.  Finally,
+      the ASN.1 standard requires that an object identifier
+      has always at least two sub-identifiers.  The pattern
+      captures these restrictions.
+      Although the number of sub-identifiers is not limited,
+      module designers should realize that there may be
+      implementations that stick with the SMIv2 limit of 128
+      sub-identifiers.
+      This type is a superset of the SMIv2 OBJECT IDENTIFIER type
+      since it is not restricted to 128 sub-identifiers.  Hence,
+      this type SHOULD NOT be used to represent the SMIv2 OBJECT
+      IDENTIFIER type; the object-identifier-128 type SHOULD be
+      used instead.";
+    reference
+     "ISO9834-1: Information technology -- Open Systems
+      Interconnection -- Procedures for the operation of OSI
+      Registration Authorities: General procedures and top
+      arcs of the ASN.1 Object Identifier tree";
+  }
+
+  typedef object-identifier-128 {
+    type object-identifier {
+      pattern '\d*(\.\d*){1,127}';
+    }
+    description
+     "This type represents object-identifiers restricted to 128
+      sub-identifiers.
+      In the value set and its semantics, this type is equivalent
+      to the OBJECT IDENTIFIER type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef yang-identifier {
+    type string {
+      length "1..max";
+      pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
+      pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
+    }
+    description
+      "A YANG identifier string as defined by the 'identifier'
+       rule in Section 12 of RFC 6020.  An identifier must
+       start with an alphabetic character or an underscore
+       followed by an arbitrary sequence of alphabetic or
+       numeric characters, underscores, hyphens, or dots.
+       A YANG identifier MUST NOT start with any possible
+       combination of the lowercase or uppercase character
+       sequence 'xml'.";
+    reference
+      "RFC 6020: YANG - A Data Modeling Language for the Network
+                 Configuration Protocol (NETCONF)";
+  }
+
+  /*** collection of types related to date and time***/
+
+  typedef date-and-time {
+    type string {
+      pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
+            + '(Z|[\+\-]\d{2}:\d{2})';
+    }
+    description
+     "The date-and-time type is a profile of the ISO 8601
+      standard for representation of dates and times using the
+      Gregorian calendar.  The profile is defined by the
+      date-time production in Section 5.6 of RFC 3339.
+      The date-and-time type is compatible with the dateTime XML
+      schema type with the following notable exceptions:
+      (a) The date-and-time type does not allow negative years.
+      (b) The date-and-time time-offset -00:00 indicates an unknown
+          time zone (see RFC 3339) while -00:00 and +00:00 and Z
+          all represent the same time zone in dateTime.
+      (c) The canonical format (see below) of data-and-time values
+          differs from the canonical format used by the dateTime XML
+          schema type, which requires all times to be in UTC using
+          the time-offset 'Z'.
+      This type is not equivalent to the DateAndTime textual
+      convention of the SMIv2 since RFC 3339 uses a different
+      separator between full-date and full-time and provides
+      higher resolution of time-secfrac.
+      The canonical format for date-and-time values with a known time
+      zone uses a numeric time zone offset that is calculated using
+      the device's configured known offset to UTC time.  A change of
+      the device's offset to UTC time will cause date-and-time values
+      to change accordingly.  Such changes might happen periodically
+      in case a server follows automatically daylight saving time
+      (DST) time zone offset changes.  The canonical format for
+      date-and-time values with an unknown time zone (usually
+      referring to the notion of local time) uses the time-offset
+      -00:00.";
+    reference
+     "RFC 3339: Date and Time on the Internet: Timestamps
+      RFC 2579: Textual Conventions for SMIv2
+      XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
+  }
+
+  typedef timeticks {
+    type uint32;
+    description
+     "The timeticks type represents a non-negative integer that
+      represents the time, modulo 2^32 (4294967296 decimal), in
+      hundredths of a second between two epochs.  When a schema
+      node is defined that uses this type, the description of
+      the schema node identifies both of the reference epochs.
+      In the value set and its semantics, this type is equivalent
+      to the TimeTicks type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef timestamp {
+    type yang:timeticks;
+    description
+     "The timestamp type represents the value of an associated
+      timeticks schema node at which a specific occurrence
+      happened.  The specific occurrence must be defined in the
+      description of any schema node defined using this type.  When
+      the specific occurrence occurred prior to the last time the
+      associated timeticks attribute was zero, then the timestamp
+      value is zero.  Note that this requires all timestamp values
+      to be reset to zero when the value of the associated timeticks
+      attribute reaches 497+ days and wraps around to zero.
+      The associated timeticks schema node must be specified
+      in the description of any schema node using this type.
+      In the value set and its semantics, this type is equivalent
+      to the TimeStamp textual convention of the SMIv2.";
+    reference
+     "RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  /*** collection of generic address types ***/
+
+  typedef phys-address {
+    type string {
+      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+    }
+
+
+
+
+    description
+     "Represents media- or physical-level addresses represented
+      as a sequence octets, each octet represented by two hexadecimal
+      numbers.  Octets are separated by colons.  The canonical
+      representation uses lowercase characters.
+      In the value set and its semantics, this type is equivalent
+      to the PhysAddress textual convention of the SMIv2.";
+    reference
+     "RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  typedef mac-address {
+    type string {
+      pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
+    }
+    description
+     "The mac-address type represents an IEEE 802 MAC address.
+      The canonical representation uses lowercase characters.
+      In the value set and its semantics, this type is equivalent
+      to the MacAddress textual convention of the SMIv2.";
+    reference
+     "IEEE 802: IEEE Standard for Local and Metropolitan Area
+                Networks: Overview and Architecture
+      RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  /*** collection of XML-specific types ***/
+
+  typedef xpath1.0 {
+    type string;
+    description
+     "This type represents an XPATH 1.0 expression.
+      When a schema node is defined that uses this type, the
+      description of the schema node MUST specify the XPath
+      context in which the XPath expression is evaluated.";
+    reference
+     "XPATH: XML Path Language (XPath) Version 1.0";
+  }
+
+  /*** collection of string types ***/
+
+  typedef hex-string {
+    type string {
+      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+    }
+    description
+     "A hexadecimal string with octets represented as hex digits
+      separated by colons.  The canonical representation uses
+      lowercase characters.";
+  }
+
+  typedef uuid {
+    type string {
+      pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
+            + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
+    }
+    description
+     "A Universally Unique IDentifier in the string representation
+      defined in RFC 4122.  The canonical representation uses
+      lowercase characters.
+      The following is an example of a UUID in string representation:
+      f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+      ";
+    reference
+     "RFC 4122: A Universally Unique IDentifier (UUID) URN
+                Namespace";
+  }
+
+  typedef dotted-quad {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
+    }
+    description
+      "An unsigned 32-bit number expressed in the dotted-quad
+       notation, i.e., four octets written as decimal numbers
+       and separated with the '.' (full stop) character.";
+  }
+}
\ No newline at end of file
diff --git a/sdnc-a1-controller/oam/platform-logic/setup/pom.xml b/sdnc-a1-controller/oam/platform-logic/setup/pom.xml
new file mode 100644
index 0000000..453499c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/setup/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+        <groupId>org.onap.ccsdk.parent</groupId>
+        <artifactId>odlparent-lite</artifactId>
+        <version>1.4.3</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.onap.sdnc.oam</groupId>
+	<artifactId>platform-logic-setup</artifactId>
+	<version>1.7.3-SNAPSHOT</version>
+	<packaging>pom</packaging>
+
+    <name>sdnc-oam :: platform-logic :: ${project.artifactId}</name>
+	<description>Copies base ONAP platform-logic</description>
+
+	<build>
+		<plugins>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-dependency-plugin</artifactId>
+				<version>3.0.0</version>
+				<executions>
+					<execution>
+						<id>unpack</id>
+						<phase>validate</phase>
+						<goals>
+							<goal>unpack</goal>
+						</goals>
+						<configuration>
+							<artifactItems>
+								<artifactItem>
+									<groupId>org.onap.ccsdk.distribution</groupId>
+									<artifactId>platform-logic-installer</artifactId>
+									<version>${ccsdk.distribution.version}</version>
+									<type>zip</type>
+									<overWrite>true</overWrite>
+									<outputDirectory>../target</outputDirectory>
+								</artifactItem>
+							</artifactItems>
+							<overWriteReleases>false</overWriteReleases>
+							<overWriteSnapshots>true</overWriteSnapshots>
+							<overWriteIfNewer>true</overWriteIfNewer>
+							<localRepositoryDirectory>../target/repository</localRepositoryDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+
+
+
+
+		</plugins>
+	</build>
+</project>
diff --git a/sdnc-a1-controller/oam/platform-logic/src/main/scripts/updateDgNamespace.sh b/sdnc-a1-controller/oam/platform-logic/src/main/scripts/updateDgNamespace.sh
new file mode 100755
index 0000000..dde8891
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/src/main/scripts/updateDgNamespace.sh
@@ -0,0 +1,12 @@
+#! /bin/bash
+
+updateFile() {
+sed  -i .orig -e '
+s/openecomp.org/onap.org/g
+' $1
+}
+
+for file in $@
+do
+	updateFile $file
+done
diff --git a/sdnc-a1-controller/oam/platform-logic/src/main/scripts/updatePackages.sh b/sdnc-a1-controller/oam/platform-logic/src/main/scripts/updatePackages.sh
new file mode 100755
index 0000000..2fd0e36
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/src/main/scripts/updatePackages.sh
@@ -0,0 +1,21 @@
+#! /bin/bash
+
+updateFile() {
+sed  -i .orig -e '
+s/\(plugin=.\)org.openecomp.sdnc.\(prop\)/\org.onap.ccsdk.sli.plugins.\2/g
+s/\(plugin=.\)org.openecomp.sdnc.\(ra\)/\1org.onap.ccsdk.sli.adaptors.\2/g
+s/\(plugin=.\)org.openecomp.sdnc.\(restapicall\)/\1org.onap.ccsdk.sli.plugins.\2/g
+s/\(plugin=.\)org.openecomp.sdnc.sli.\(aai\)/\1org.onap.ccsdk.sli.adaptors.\2/g
+s/\(plugin=.\)org.openecomp.sdnc.sli.common/\1org.onap.ccsdk.sli.core.sli/g
+s/\(plugin=.\)org.openecomp.sdnc.\(sli.provider\)/\1org.onap.ccsdk.sli.core.\2/g
+s/\(plugin=\\\{0,1\}.\)com.att.sdnctl.\(sli.recording\)/\1org.openecomp.sdnc.\2/g
+s/\(plugin=.\)org.openecomp.sdnc.sli.\(resource.mdsal\)/\1org.onap.ccsdk.sli.adaptors.\2/g
+s/\(plugin=.\)org.openecomp.sdnc.sli\(resource.sql\)/\org.onap.ccsdk.sli.adaptors.\2/g
+s/\(plugin=.\)org.openecomp.sdnc.sli.SliPluginUtils/\1org.onap.ccsdk.sli.core.slipluginutils/g
+' $1
+}
+
+for file in $@
+do
+	updateFile $file
+done
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/pom.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/pom.xml
new file mode 100644
index 0000000..e0e7c58
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/pom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.onap.ccsdk.parent</groupId>
+		<artifactId>odlparent-lite</artifactId>
+		<version>1.4.3</version>
+        <relativePath/>
+	</parent>
+
+	<groupId>org.onap.sdnc.oam</groupId>
+	<artifactId>platform-logic-vnfapi</artifactId>
+	<version>1.7.3-SNAPSHOT</version>
+	<packaging>pom</packaging>
+
+    <name>sdnc-oam :: platform-logic :: ${project.artifactId}</name>
+	<description>Contains platform-level service logic for the VNF-API</description>
+
+	<build>
+		<plugins>
+			<plugin>
+				<artifactId>maven-resources-plugin</artifactId>
+				<version>2.6</version>
+				<executions>
+					<execution>
+						<id>copy-version</id>
+						<goals>
+							<goal>copy-resources</goal>
+						</goals><!-- here the phase you need -->
+						<phase>validate</phase>
+						<configuration>
+							<outputDirectory>../target/svclogic/graphs/vnfapi</outputDirectory>
+							<resources>
+								<resource>
+									<directory>src/main/xml</directory>
+									<includes>
+										<include>**/*.xml</include>
+									</includes>
+									<filtering>true</filtering>
+								</resource>
+								<resource>
+									<directory>src/main/resources</directory>
+									<includes>
+										<include>graph.versions</include>
+									</includes>
+									<filtering>true</filtering>
+								</resource>
+							</resources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_generate-l3network-network-id.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_generate-l3network-network-id.json
new file mode 100644
index 0000000..5ff1cff
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_generate-l3network-network-id.json
@@ -0,0 +1,407 @@
+[
+    {
+        "id": "dd70f366.d125c",
+        "type": "execute",
+        "name": "execute: generateUUID",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n\t<parameter name=\"ctx-destination\" value=\"tmp.return.generate-l3network-network-id.uuid\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 508.75,
+        "y": 337.5,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "f9cd5358.f88ee"
+            ]
+        ]
+    },
+    {
+        "id": "f9cd5358.f88ee",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 704.5000076293945,
+        "y": 337.5,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "8a954bff.6fab18"
+            ]
+        ]
+    },
+    {
+        "id": "8a954bff.6fab18",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<!-- Used to work around execute node bug -->\n\t<parameter name=\"execute_failure\" value=\"false\" />\n\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-l3network-network-id\" value=\"An error occured while generating a UUID for L3-NETWORK.\" />",
+        "comments": "",
+        "x": 869.5000076293945,
+        "y": 337.74999713897705,
+        "z": "d1ec70b0.44ebb",
+        "wires": []
+    },
+    {
+        "id": "e113a5e5.a5dc38",
+        "type": "get-resource",
+        "name": "Query AnAI -  l3-network",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n              resource=\"l3-network\"\n              key=\"l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid\"\n              local-only=\"false\"\n              pfx=\"tmp.local-variables.generate-l3network-network-id.L3NETWORK\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 634.0000076293945,
+        "y": 428.74999713897705,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "8852c700.cf1728",
+                "49979ca4.27c0b4",
+                "414c6b14.1afed4",
+                "5312fbfe.635864"
+            ]
+        ]
+    },
+    {
+        "id": "5c1d01b6.e9f5e",
+        "type": "for",
+        "name": "for n: true",
+        "xml": "<for atomic=\"true\" index=\"n\" start=\"0\" end=\"1\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 458.00000762939453,
+        "y": 428.74999713897705,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "e113a5e5.a5dc38"
+            ]
+        ]
+    },
+    {
+        "id": "8852c700.cf1728",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 838.5000076293945,
+        "y": 428.74999713897705,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "8e45d485.7ae718"
+            ]
+        ]
+    },
+    {
+        "id": "49979ca4.27c0b4",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 834.5000076293945,
+        "y": 508.74999713897705,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "9c34c546.317498"
+            ]
+        ]
+    },
+    {
+        "id": "414c6b14.1afed4",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 843.5000076293945,
+        "y": 468.74999713897705,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "6b739598.b52fcc"
+            ]
+        ]
+    },
+    {
+        "id": "9c34c546.317498",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-l3network-network-id\" value=\"`'An error occured while checking if a generated l3network-network-id was unique. network-id = ' + $tmp.local-variables.generate-l3network-network-id.uuid`\" />",
+        "comments": "",
+        "x": 1001.0000152587891,
+        "y": 533.750002861023,
+        "z": "d1ec70b0.44ebb",
+        "wires": []
+    },
+    {
+        "id": "8e45d485.7ae718",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 996.5000076293945,
+        "y": 428.74999713897705,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "2b4a6d59.a9d4b2",
+                "401c414.4d08ac"
+            ]
+        ]
+    },
+    {
+        "id": "2b4a6d59.a9d4b2",
+        "type": "set",
+        "name": "set: ...local...is-unique = 0",
+        "xml": "<set>\n\t<parameter name=\"tmp.local-variables.generate-l3network-network-id.is-unique\" value=\"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1214.0000610351562,
+        "y": 428.75000286102295,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "401c414.4d08ac",
+        "type": "execute",
+        "name": "execute: generateUUID",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n\t<parameter name=\"ctx-destination\" value=\"tmp.return.generate-l3network-network-id.uuid\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1207.5000076293945,
+        "y": 468.74999713897705,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "2afa9dc4.53e492"
+            ]
+        ]
+    },
+    {
+        "id": "2afa9dc4.53e492",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1394.5000076293945,
+        "y": 468.74999713897705,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "34a04552.d8838a"
+            ]
+        ]
+    },
+    {
+        "id": "34a04552.d8838a",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-l3network-network-id\" value=\"An error occured while generating a UUID for L3-NETWORK.\" />",
+        "comments": "",
+        "x": 1548.5000076293945,
+        "y": 468.74999713897705,
+        "z": "d1ec70b0.44ebb",
+        "wires": []
+    },
+    {
+        "id": "6b739598.b52fcc",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 974.5000076293945,
+        "y": 468.74999713897705,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "437c334.fa9bacc",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 215.00000381469727,
+        "y": 24.999996185302734,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "d0d787ad.11a628"
+            ]
+        ]
+    },
+    {
+        "id": "d0d787ad.11a628",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 239,
+        "y": 71.24999618530273,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "b3eba119.c492f"
+            ]
+        ]
+    },
+    {
+        "id": "b3eba119.c492f",
+        "type": "method",
+        "name": "method generate-l3network-network-id",
+        "xml": "<method rpc=\"generate-l3network-network-id\" mode=\"sync\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 324.75,
+        "y": 123.74999618530273,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "f616b569.f578f8"
+            ]
+        ]
+    },
+    {
+        "id": "bd83e429.00ab68",
+        "type": "comment",
+        "name": "VNF-API: GENERATE-L3NETWORK-NETWORK-ID",
+        "info": "",
+        "comments": "",
+        "x": 766.5000152587891,
+        "y": 31.2499942779541,
+        "z": "d1ec70b0.44ebb",
+        "wires": []
+    },
+    {
+        "id": "f616b569.f578f8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 276.50000762939453,
+        "y": 248.74999713897705,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "dd70f366.d125c",
+                "5c1d01b6.e9f5e",
+                "b4996f5b.9e931",
+                "60de1533.5bb86c"
+            ]
+        ]
+    },
+    {
+        "id": "2ec4eee9.2ac6b2",
+        "type": "comment",
+        "name": "LOOP UNTIL GENERATED NETWORK-ID ISN'T FOUND IN A&AI",
+        "info": "",
+        "comments": "",
+        "x": 677.75,
+        "y": 385.0000009536743,
+        "z": "d1ec70b0.44ebb",
+        "wires": []
+    },
+    {
+        "id": "5ce6ee54.fd9d2",
+        "type": "comment",
+        "name": "GENERATE A NETWORK-ID",
+        "info": "",
+        "comments": "",
+        "x": 541.5,
+        "y": 294.9999990463257,
+        "z": "d1ec70b0.44ebb",
+        "wires": []
+    },
+    {
+        "id": "b4996f5b.9e931",
+        "type": "set",
+        "name": "unset: local-variables & return",
+        "xml": "<set>\n\t<parameter name=\"tmp.local-variables.generate-l3network-network-id.\" value=\"\" />\n\t<parameter name=\"tmp.return.generate-l3network-network-id.\" value=\"\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 527.5000076293945,
+        "y": 248.74999713897705,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a706e0b1.9117a",
+        "type": "comment",
+        "name": "CLEANUP LOCAL VARIABLES TO BE USED",
+        "info": "",
+        "comments": "",
+        "x": 611.75,
+        "y": 204.99999809265137,
+        "z": "d1ec70b0.44ebb",
+        "wires": []
+    },
+    {
+        "id": "a0f4690f.efa0d8",
+        "type": "comment",
+        "name": "GLOBAL VARIABLES USED",
+        "info": "// RETURN VALUES\nerror-message.generate-generic-vnf-id\ntmp.return.generate-generic-vnf-id.uuid\n\n// LOCAL VARIABLES (erased at beginning & end of DG)\ntmp.local-variables.generate-generic-vnf-id.*\ntmp.local-variables.generate-generic-vnf-id.GENERIC_VNF.*",
+        "comments": "",
+        "x": 753.0000305175781,
+        "y": 71.2499942779541,
+        "z": "d1ec70b0.44ebb",
+        "wires": []
+    },
+    {
+        "id": "60de1533.5bb86c",
+        "type": "set",
+        "name": "unset: local-variables & return",
+        "xml": "<set>\n\t<parameter name=\"tmp.local-variables.generate-l3network-network-id.\" value=\"\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 527.5000076293945,
+        "y": 528.749997138977,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "39e8f5d1.20ee3a",
+        "type": "comment",
+        "name": "CLEANUP LOCAL VARIABLES",
+        "info": "",
+        "comments": "",
+        "x": 569,
+        "y": 486.25000190734863,
+        "z": "d1ec70b0.44ebb",
+        "wires": []
+    },
+    {
+        "id": "5312fbfe.635864",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value=\"Other\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 834.5000076293945,
+        "y": 548.749997138977,
+        "z": "d1ec70b0.44ebb",
+        "wires": [
+            [
+                "9c34c546.317498"
+            ]
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_generate-subnets-subnet-id.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_generate-subnets-subnet-id.json
new file mode 100644
index 0000000..90549fc
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_generate-subnets-subnet-id.json
@@ -0,0 +1,407 @@
+[
+    {
+        "id": "aaa6ff4b.724ea",
+        "type": "execute",
+        "name": "execute: generateUUID",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n\t<parameter name=\"ctx-destination\" value=\"tmp.return.generate-subnets-subnet-id.uuid\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 412.8571472167969,
+        "y": 357.1428527832031,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "5dbe3d08.2b3ac4"
+            ]
+        ]
+    },
+    {
+        "id": "5dbe3d08.2b3ac4",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 608.6071548461914,
+        "y": 357.1428527832031,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "e14fcee.4b28f3"
+            ]
+        ]
+    },
+    {
+        "id": "e14fcee.4b28f3",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<!-- Used to work around execute node bug -->\n\t<parameter name=\"execute_failure\" value=\"false\" />\n\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-l3network-network-id\" value=\"An error occured while generating a UUID for L3-NETWORK.\" />",
+        "comments": "",
+        "x": 773.6071548461914,
+        "y": 357.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": []
+    },
+    {
+        "id": "a4f5c20.aaf894",
+        "type": "get-resource",
+        "name": "Query AnAI -  subnets",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"subnet\"\n\t\tkey=\"l3-network.network-id = $tmp.local.network-id \n\t\t\tAND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid\"\n\t\tlocal-only=\"false\"\n\t\tpfx=\"tmp.local-variables.generate-subnets-subnet-id.SUBNETS\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 538.1071548461914,
+        "y": 448.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "7566b0aa.23333",
+                "41541145.8f2fe",
+                "f04ddaec.babb98",
+                "53fa760f.b1d208"
+            ]
+        ]
+    },
+    {
+        "id": "6e3cbfaa.cae83",
+        "type": "for",
+        "name": "for s: true",
+        "xml": "<for atomic=\"true\" index=\"s\" start=\"0\" end=\"1\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 362.1071548461914,
+        "y": 448.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "a4f5c20.aaf894"
+            ]
+        ]
+    },
+    {
+        "id": "7566b0aa.23333",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 742.6071548461914,
+        "y": 448.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "a7ff3de0.89a3b"
+            ]
+        ]
+    },
+    {
+        "id": "41541145.8f2fe",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 738.6071548461914,
+        "y": 528.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "f6eee8f.2de7c18"
+            ]
+        ]
+    },
+    {
+        "id": "f04ddaec.babb98",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 747.6071548461914,
+        "y": 488.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "ef8307c7.c73008"
+            ]
+        ]
+    },
+    {
+        "id": "f6eee8f.2de7c18",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-subnets-subnet-id\" value=\"`'An error occured while checking if a generated subnets-subnet-id was unique. subnet-id = ' + $tmp.local-variables.generate-subnets-subnet-id.uuid`\" />",
+        "comments": "",
+        "x": 905.1071624755859,
+        "y": 553.3928556442261,
+        "z": "212bebba.daa304",
+        "wires": []
+    },
+    {
+        "id": "a7ff3de0.89a3b",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 900.6071548461914,
+        "y": 448.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "bde977bc.984908",
+                "a44a8681.7894a8"
+            ]
+        ]
+    },
+    {
+        "id": "bde977bc.984908",
+        "type": "set",
+        "name": "set: ...local...is-unique = 0",
+        "xml": "<set>\n\t<parameter name=\"tmp.local-variables.generate-subnets-subnet-id.is-unique\" value=\"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1118.1072082519531,
+        "y": 448.3928556442261,
+        "z": "212bebba.daa304",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a44a8681.7894a8",
+        "type": "execute",
+        "name": "execute: generateUUID",
+        "xml": "<execute plugin=\"org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils\" method=\"generateUUID\" >\n\t<parameter name=\"ctx-destination\" value=\"tmp.return.generate-subnets-subnet-id.uuid\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1111.6071548461914,
+        "y": 488.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "87ba26d4.c54c58"
+            ]
+        ]
+    },
+    {
+        "id": "87ba26d4.c54c58",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1298.6071548461914,
+        "y": 488.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "22793b05.dbc9f4"
+            ]
+        ]
+    },
+    {
+        "id": "22793b05.dbc9f4",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status=\"failure\">\n\t<!-- return parameters -->\n\t<parameter name=\"error-message.generate-subnets-subnet-id\" value=\"An error occured while generating a UUID for SUBNETS.\" />",
+        "comments": "",
+        "x": 1452.6071548461914,
+        "y": 488.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": []
+    },
+    {
+        "id": "ef8307c7.c73008",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 878.6071548461914,
+        "y": 488.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "514ace13.73fbc",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 119.10715103149414,
+        "y": 44.64284896850586,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "1b1cc085.47687f"
+            ]
+        ]
+    },
+    {
+        "id": "1b1cc085.47687f",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 143.10714721679688,
+        "y": 90.89284896850586,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "d99b1637.7ed018"
+            ]
+        ]
+    },
+    {
+        "id": "d99b1637.7ed018",
+        "type": "method",
+        "name": "method generate-subnets-subnet-id",
+        "xml": "<method rpc=\"generate-subnets-subnet-id\" mode=\"sync\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 228.85714721679688,
+        "y": 143.39284896850586,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "11287140.bdd92f"
+            ]
+        ]
+    },
+    {
+        "id": "c84b6b4.9fc4398",
+        "type": "comment",
+        "name": "VNF-API: GENERATE-SUBNETS-SUBNET-ID",
+        "info": "",
+        "comments": "",
+        "x": 670.6071624755859,
+        "y": 50.89284706115723,
+        "z": "212bebba.daa304",
+        "wires": []
+    },
+    {
+        "id": "11287140.bdd92f",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 180.6071548461914,
+        "y": 268.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "aaa6ff4b.724ea",
+                "a5490895.039508",
+                "41976a7f.5999d4",
+                "6e3cbfaa.cae83"
+            ]
+        ]
+    },
+    {
+        "id": "6ab42343.db7f8c",
+        "type": "comment",
+        "name": "LOOP UNTIL GENERATED NETWORK-ID ISN'T FOUND IN A&AI",
+        "info": "",
+        "comments": "",
+        "x": 581.8571472167969,
+        "y": 404.64285373687744,
+        "z": "212bebba.daa304",
+        "wires": []
+    },
+    {
+        "id": "b9ed64f0.37f1d8",
+        "type": "comment",
+        "name": "GENERATE A SUBNET-ID",
+        "info": "",
+        "comments": "",
+        "x": 445.6071472167969,
+        "y": 314.6428518295288,
+        "z": "212bebba.daa304",
+        "wires": []
+    },
+    {
+        "id": "a5490895.039508",
+        "type": "set",
+        "name": "unset: local-variables & return",
+        "xml": "<set>\n\t<parameter name=\"tmp.local-variables.generate-subnets-subnet-id.\" value=\"\" />\n\t<parameter name=\"tmp.return.generate-subnets-subnet-id.\" value=\"\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 431.6071548461914,
+        "y": 268.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "60c2bbdc.ec4e64",
+        "type": "comment",
+        "name": "CLEANUP LOCAL VARIABLES TO BE USED",
+        "info": "",
+        "comments": "",
+        "x": 515.8571472167969,
+        "y": 224.6428508758545,
+        "z": "212bebba.daa304",
+        "wires": []
+    },
+    {
+        "id": "71172ef4.cf0d8",
+        "type": "comment",
+        "name": "GLOBAL VARIABLES USED",
+        "info": "// RETURN VALUES\nerror-message.generate-generic-vnf-id\ntmp.return.generate-generic-vnf-id.uuid\n\n// LOCAL VARIABLES (erased at beginning & end of DG)\ntmp.local-variables.generate-generic-vnf-id.*\ntmp.local-variables.generate-generic-vnf-id.GENERIC_VNF.*",
+        "comments": "",
+        "x": 657.107177734375,
+        "y": 90.89284706115723,
+        "z": "212bebba.daa304",
+        "wires": []
+    },
+    {
+        "id": "41976a7f.5999d4",
+        "type": "set",
+        "name": "unset: local-variables & return",
+        "xml": "<set>\n\t<parameter name=\"tmp.local-variables.generate-subnets-subnet-id.\" value=\"\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 431.6071548461914,
+        "y": 548.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "57f68649.0093a8",
+        "type": "comment",
+        "name": "CLEANUP LOCAL VARIABLES",
+        "info": "",
+        "comments": "",
+        "x": 473.1071472167969,
+        "y": 505.89285469055176,
+        "z": "212bebba.daa304",
+        "wires": []
+    },
+    {
+        "id": "53fa760f.b1d208",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value=\"Other\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 738.6071548461914,
+        "y": 568.3928499221802,
+        "z": "212bebba.daa304",
+        "wires": [
+            [
+                "f6eee8f.2de7c18"
+            ]
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-assign.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-assign.json
new file mode 100644
index 0000000..000681c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-assign.json
@@ -0,0 +1,2244 @@
+[
+    {
+        "id": "761cf409.e7fe2c",
+        "type": "method",
+        "name": "method network-topology-assign",
+        "xml": "<method rpc=\"network-topology-assign\" mode=\"sync\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 220,
+        "y": 88.57142639160156,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "f32f7d99.8e885"
+            ]
+        ]
+    },
+    {
+        "id": "2cc42ce.d3a7dd4",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 295.4444351196289,
+        "y": 37.238101959228516,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "761cf409.e7fe2c"
+            ]
+        ]
+    },
+    {
+        "id": "d4150291.a47c7",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 131.33332061767578,
+        "y": 37.238101959228516,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "2cc42ce.d3a7dd4"
+            ]
+        ]
+    },
+    {
+        "id": "f32f7d99.8e885",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 185.76110458374023,
+        "y": 160.88003540039062,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "e6608c59.2d82d",
+                "d54bce56.12186",
+                "7c655566.f8d98c",
+                "d18455b2.897038",
+                "9683e1d.b26132",
+                "fdec3d96.4fe6c",
+                "aec67243.3085b",
+                "b25a8a99.44e208",
+                "d1f10746.e56058",
+                "6a95cc4c.004c34",
+                "cced61c2.cb78b",
+                "d30ff142.3546e",
+                "eec55dc8.09816",
+                "d92a7574.cd1b58",
+                "f5d35022.8ff6",
+                "30dd8358.aaaadc",
+                "830f1b88.627bf8",
+                "d045d509.c8ec58",
+                "4330f5b6.e6251c"
+            ]
+        ]
+    },
+    {
+        "id": "e6608c59.2d82d",
+        "type": "save",
+        "name": "save AnAI - l3-network",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.return.generate-l3network-network-id.uuid`\" />\n<parameter name=\"network-name\" value=\"`$network-topology-operation-input.network-request-information.network-name`\" />\n<parameter name=\"network-type\" value=\"`$network-topology-operation-input.network-request-information.network-type`\" />\n<parameter name=\"network-role\" value=\"`$preload-data.network-topology-information.network-topology-identifier.network-role`\" />\n<parameter name=\"network-technology\" value=\"`$preload-data.network-topology-information.network-topology-identifier.network-technology`\" />\n<parameter name=\"service-id\" value=\"`$network-topology-operation-input.service-information.service-id`\" />\n<parameter name=\"tenant-id\" value=\"`$network-topology-operation-input.network-request-information.tenant`\" />\n<parameter name=\"network-role-instance\" value=\"0\" />\n<parameter name=\"orchestration-status\" value=\"pending-create\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 436.1934051513672,
+        "y": 454.1977233886719,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "9de98ca4.f462",
+                "8cf9ad87.65dd7"
+            ]
+        ]
+    },
+    {
+        "id": "d54bce56.12186",
+        "type": "for",
+        "name": "for loop i - PRELOAD subnets",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$preload-data.network-topology-information.subnets_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 457.9034957885742,
+        "y": 640.8798131942749,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "4ae47500.3fa4ac"
+            ]
+        ]
+    },
+    {
+        "id": "7c655566.f8d98c",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status=\"success\">\n\t<parameter name=\"networkId\" value=\"`$tmp.return.generate-l3network-network-id.uuid`\" />\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 375.84381103515625,
+        "y": 2471.0271310806274,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "d18455b2.897038",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "x": 399.12740325927734,
+        "y": 2422.105136871338,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "9de98ca4.f462",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 628.4765625,
+        "y": 454.213041305542,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "c0b37f94.55c04"
+            ]
+        ]
+    },
+    {
+        "id": "4ae47500.3fa4ac",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 672.9021148681641,
+        "y": 640.8888244628906,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "d2b530e1.e4e06",
+                "a4bddbdd.384ca8",
+                "b441c359.b1ed5",
+                "a461de0f.d6093",
+                "bbec29a5.4081f8",
+                "69434546.6b177c"
+            ]
+        ]
+    },
+    {
+        "id": "c0b37f94.55c04",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Failed to save l3-netework in AnAI with network-id = ' + $tmp.return.generate-l3network-network-id.uuid`\"/>",
+        "comments": "",
+        "x": 829.254035949707,
+        "y": 453.9908256530762,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "bf4af859.d229c8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1152.2541790008545,
+        "y": 868.8520412445068,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "78a54b4f.f2a264"
+            ]
+        ]
+    },
+    {
+        "id": "c5f09568.abd408",
+        "type": "set",
+        "name": "set tmp.dhcpEnabled.boolean=false",
+        "xml": "<set>\n<parameter name=\"tmp.dhcpEnabled.boolean\" value=\"false\" />\n",
+        "comments": "",
+        "x": 1419.9320831298828,
+        "y": 682.2393565177917,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "27c769b5.ca3316",
+        "type": "set",
+        "name": "set tmp.dhcpEnabled.boolean=true",
+        "xml": "<set>\n<parameter name=\"tmp.dhcpEnabled.boolean\" value=\"true\" />\n",
+        "comments": "",
+        "x": 1418.2495880126953,
+        "y": 641.1758060455322,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "d2b530e1.e4e06",
+        "type": "switchNode",
+        "name": "switch: PRELOAD dhcp-enabled",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.subnets[$i].dhcp-enabled`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 944.2495880126953,
+        "y": 640.6820316314697,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "1d57866b.dc0d9a",
+                "1656d8a4.c39f97"
+            ]
+        ]
+    },
+    {
+        "id": "1d57866b.dc0d9a",
+        "type": "other",
+        "name": "Y",
+        "xml": "<outcome value='Y'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1201.4719314575195,
+        "y": 640.9043521881104,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "27c769b5.ca3316"
+            ]
+        ]
+    },
+    {
+        "id": "1656d8a4.c39f97",
+        "type": "other",
+        "name": "N",
+        "xml": "<outcome value='N'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1201.3766021728516,
+        "y": 682.7455735206604,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "c5f09568.abd408"
+            ]
+        ]
+    },
+    {
+        "id": "9683e1d.b26132",
+        "type": "for",
+        "name": "for loop i - PRELOAD vpn-bindings",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$preload-data.network-topology-information.vpn-bindings_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 470.5514221191406,
+        "y": 1153.222297668457,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "547d693b.b05e78"
+            ]
+        ]
+    },
+    {
+        "id": "547d693b.b05e78",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 712.3292007446289,
+        "y": 1153.4722995758057,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "26c6c645.1a9d3a",
+                "239555fc.bdbfaa",
+                "36380a8c.5dc166",
+                "300d9dbd.6d58a2"
+            ]
+        ]
+    },
+    {
+        "id": "42bfa7b6.ab68a8",
+        "type": "save",
+        "name": "save relationship: vpn_bindings",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid\" \n\tforce=\"true\" \n\tlocal-only=\"false\">\n\t\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"vpn-binding\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"vpn-binding.vpn-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.vpn-binding-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1053.856918334961,
+        "y": 1378.4445276260376,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "80139c48.11b38",
+                "cd3c019c.f3ce1",
+                "188bd49e.885fbb"
+            ]
+        ]
+    },
+    {
+        "id": "d1f10746.e56058",
+        "type": "call",
+        "name": "call: generate-l3network-network-id",
+        "xml": "<call module=\"VNF-API\" rpc=\"generate-l3network-network-id\" mode=\"sync\" >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 474.26195526123047,
+        "y": 407.761869430542,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "d51eccf4.b117b"
+            ]
+        ]
+    },
+    {
+        "id": "d51eccf4.b117b",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 697.0119400024414,
+        "y": 408.0118598937988,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "8780710c.05f27"
+            ]
+        ]
+    },
+    {
+        "id": "8780710c.05f27",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value='Error in generating l3-network.network-id in SDNC'/>",
+        "comments": "",
+        "x": 853.7894134521484,
+        "y": 407.789644241333,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "fdec3d96.4fe6c",
+        "type": "switchNode",
+        "name": "switch ... PRELOAD vpn-bindings[]",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.vpn-bindings_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 470.92886522081153,
+        "y": 1109.8036111195884,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "33a85e7a.541aa2"
+            ]
+        ]
+    },
+    {
+        "id": "33a85e7a.541aa2",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 691.3733155992295,
+        "y": 1109.5813468297324,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "8f10e90b.9b56a8"
+            ]
+        ]
+    },
+    {
+        "id": "8f10e90b.9b56a8",
+        "type": "set",
+        "name": "set vpn-bindings[] = 0",
+        "xml": "<set>\n<parameter name=\"preload-data.network-topology-information.vpn-bindings_length\" value=\"0\" />\n",
+        "comments": "",
+        "x": 885.9289245605469,
+        "y": 1109.5813674926758,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "b25a8a99.44e208",
+        "type": "switchNode",
+        "name": "switch ... PRELOAD network-policy[]",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.network-policy_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 452.0991668701172,
+        "y": 1523.0717792510986,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "b82095af.08bfb8"
+            ]
+        ]
+    },
+    {
+        "id": "b82095af.08bfb8",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 681.5436172485352,
+        "y": 1522.8495149612427,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "91c9b9db.ea94b8"
+            ]
+        ]
+    },
+    {
+        "id": "91c9b9db.ea94b8",
+        "type": "set",
+        "name": "set network-policy[] = 0",
+        "xml": "<set>\n<parameter name='preload-data.network-topology-information.network-policy_length' value='0' />\n",
+        "comments": "",
+        "x": 876.0992262098525,
+        "y": 1522.849535624186,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "a4bddbdd.384ca8",
+        "type": "switchNode",
+        "name": "switch test: PRELOAD gateway-address",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.subnets[$i].gateway-address`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 968.646915435791,
+        "y": 735.6547451019287,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "919f40fc.c3bd9"
+            ]
+        ]
+    },
+    {
+        "id": "919f40fc.c3bd9",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 1212.146915435791,
+        "y": 735.6547451019287,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "82d44a1c.206d88"
+            ]
+        ]
+    },
+    {
+        "id": "21deb593.226d7a",
+        "type": "GenericXML",
+        "name": "Execute: generate gateway-address",
+        "xml": "<execute plugin=\"com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool\" method=\"getGatewayAddress\">\n\t<parameter name=\"ipAddress\" value=\"`$preload-data.network-topology-information.subnets[$i].start-address`\" />\n\t<parameter name=\"ipVersion\" value=\"`$preload-data.network-topology-information.subnets[$i].ip-version`\" />\n\t<parameter name=\"subnet\" value=\"`$preload-data.network-topology-information.subnets[$i].cidr-mask`\" />\n\t<parameter name=\"ctxVariable\" value=\"tmp.return.generate.gateway-address\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1609.39693069458,
+        "y": 735.4047527313232,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "82d44a1c.206d88",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1362.8969230651855,
+        "y": 735.6547555923462,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "21deb593.226d7a",
+                "144c19a.8fa82e6"
+            ]
+        ]
+    },
+    {
+        "id": "b441c359.b1ed5",
+        "type": "set",
+        "name": "set tmp.gateway-address",
+        "xml": "<set>\n<parameter name=\"tmp.gateway-address\" value=\"`$preload-data.network-topology-information.subnets[$i].gateway-address`\" />\n",
+        "comments": "",
+        "x": 922.1469306945801,
+        "y": 688.9047517776489,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "144c19a.8fa82e6",
+        "type": "set",
+        "name": "set tmp.gateway-address",
+        "xml": "<set>\n<parameter name=\"tmp.gateway-address\" value=\"`$tmp.return.generate.gateway-address`\" />\n",
+        "comments": "",
+        "x": 1575.89693069458,
+        "y": 777.4047546386719,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "26c6c645.1a9d3a",
+        "type": "switchNode",
+        "name": "switch: PRELOAD route-target != NULL",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.vpn-bindings[$i].global-route-target != ''`\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 975.5635833740234,
+        "y": 1244.8216018676758,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "57a4fb2.f593104"
+            ]
+        ]
+    },
+    {
+        "id": "57a4fb2.f593104",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1212.0635833740234,
+        "y": 1245.0716018676758,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "fc2001b2.ee9d2"
+            ]
+        ]
+    },
+    {
+        "id": "fc2001b2.ee9d2",
+        "type": "save",
+        "name": "query AnAI - vpn-bindings",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vpn-binding\" \n\t\tkey=\"vpn-binding.global-route-target = $preload-data.network-topology-information.vpn-bindings[$i].global-route-target\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.vpn-binding\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1411.5635795593262,
+        "y": 1244.82160282135,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "9d2982aa.7ea2a",
+                "c4a0a4b9.d67758",
+                "67b5caf1.ddebd4"
+            ]
+        ]
+    },
+    {
+        "id": "9d2982aa.7ea2a",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1621.8135795593262,
+        "y": 1325.0716037750244,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "55368e8d.0d27b"
+            ]
+        ]
+    },
+    {
+        "id": "78a54b4f.f2a264",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1351.6470069885254,
+        "y": 868.4881591796875,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "5157a0f1.40c66",
+                "7598ed5f.703d44"
+            ]
+        ]
+    },
+    {
+        "id": "5157a0f1.40c66",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving l3-newtork.subnet in AnAI where subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`\"/>",
+        "comments": "",
+        "x": 1553.7465476989746,
+        "y": 868.23805809021,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "e4f1cfec.80ca7",
+        "type": "delete",
+        "name": "delete l3-network",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\tkey=\"l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1525.530288696289,
+        "y": 2284.034454345703,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2b7509e.d0964f6",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Error writing to l3-netework - ' + $tmp.error-message`\"/>",
+        "comments": "",
+        "x": 1512.4676208496094,
+        "y": 2327.230498313904,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "c4a0a4b9.d67758",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1627.3135833740234,
+        "y": 1284.57160282135,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "55368e8d.0d27b"
+            ]
+        ]
+    },
+    {
+        "id": "7598ed5f.703d44",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1335.7065505981445,
+        "y": 2284.2860431671143,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "e4f1cfec.80ca7",
+                "2b7509e.d0964f6"
+            ]
+        ]
+    },
+    {
+        "id": "55368e8d.0d27b",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1774.8135833740234,
+        "y": 1324.8216047286987,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "7756b135.e6c4b",
+                "7598ed5f.703d44"
+            ]
+        ]
+    },
+    {
+        "id": "7756b135.e6c4b",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query vpn-bindings from AnAI where global-route-target = ' + $preload-data.network-topology-information.vpn-bindings[$i].global-route-target`\"/>",
+        "comments": "",
+        "x": 1996.9131240844727,
+        "y": 1324.5715036392212,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "239555fc.bdbfaa",
+        "type": "switchNode",
+        "name": "switch: PRELOAD vpn-binding-id",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.vpn-bindings[$i].vpn-binding-id`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 955.8135871887207,
+        "y": 1200.3215417861938,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "ea26c779.e30328"
+            ]
+        ]
+    },
+    {
+        "id": "ea26c779.e30328",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1169.3135948181152,
+        "y": 1200.0715427398682,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "d6658c61.93f25"
+            ]
+        ]
+    },
+    {
+        "id": "d6658c61.93f25",
+        "type": "set",
+        "name": "set tmp.vpn-binding-id",
+        "xml": "<set>\n<parameter name=\"tmp.vpn-binding-id\" value=\"`$preload-data.network-topology-information.vpn-bindings[$i].vpn-binding-id`\" />\n",
+        "comments": "",
+        "x": 1351.8135948181152,
+        "y": 1200.0715436935425,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "67b5caf1.ddebd4",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1622.8135795593262,
+        "y": 1244.82160282135,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "93380f51.982a9"
+            ]
+        ]
+    },
+    {
+        "id": "6fc7931.d198c6c",
+        "type": "set",
+        "name": "set tmp.vpn-binding-id",
+        "xml": "<set>\n<parameter name=\"tmp.vpn-binding-id\" value=\"`$tmp.AnAI.vpn-binding.vpn-id`\" />\n",
+        "comments": "",
+        "x": 2277.0636291503906,
+        "y": 1243.571678161621,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "80139c48.11b38",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1278.9297943115234,
+        "y": 1377.920114517212,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "4dce9a6d.462e74"
+            ]
+        ]
+    },
+    {
+        "id": "4dce9a6d.462e74",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1466.8226737976074,
+        "y": 1377.556221961975,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "d7897aa2.314cd8",
+                "7598ed5f.703d44"
+            ]
+        ]
+    },
+    {
+        "id": "d7897aa2.314cd8",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving vpn-binding relationship for l3-network in AnAI where vpn-id = ' + $tmp.vpn-binding-id`\"/>",
+        "comments": "",
+        "x": 1679.9222145080566,
+        "y": 1378.3061208724976,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "aec67243.3085b",
+        "type": "for",
+        "name": "for loop i - PRELOAD network-policy",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$preload-data.network-topology-information.network-policy_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 451.45642852783203,
+        "y": 1568.6431703567505,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "9591c346.1a1b4"
+            ]
+        ]
+    },
+    {
+        "id": "efde88cf.9b8748",
+        "type": "save",
+        "name": "save relationship: network-policy",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"network-policy\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"network-policy.network-policy-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.network-policy.network-policy-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2268.0121154785156,
+        "y": 1701.1154356002808,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "61a477bc.3c1228",
+                "70ae584f.c14f98"
+            ]
+        ]
+    },
+    {
+        "id": "9591c346.1a1b4",
+        "type": "switchNode",
+        "name": "switch: PRELOAD network-policy-fqdn != NULL",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.network-policy[$i].network-policy-fqdn != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 807.7186872694228,
+        "y": 1568.9924284617105,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "28c23efe.60d8c2"
+            ]
+        ]
+    },
+    {
+        "id": "28c23efe.60d8c2",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1073.4686872694228,
+        "y": 1569.2424284617105,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "9a67180c.7e8c88"
+            ]
+        ]
+    },
+    {
+        "id": "9a67180c.7e8c88",
+        "type": "save",
+        "name": "query AnAI - network-policy",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"network-policy\" \n\t\tkey=\"network-policy.network-policy-fqdn = $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.network-policy\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1282.71869108412,
+        "y": 1569.2424284617105,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "86e4182d.175af8",
+                "3ac39ea5.f66bf2",
+                "36636bd5.8e92b4"
+            ]
+        ]
+    },
+    {
+        "id": "86e4182d.175af8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1490.71877500746,
+        "y": 1610.2424379984536,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "19951b2e.af9645"
+            ]
+        ]
+    },
+    {
+        "id": "3ac39ea5.f66bf2",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1496.2187788221572,
+        "y": 1568.7424370447793,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "19951b2e.af9645"
+            ]
+        ]
+    },
+    {
+        "id": "19951b2e.af9645",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1660.7187788221572,
+        "y": 1609.992438952128,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "1be79b78.b46515",
+                "7598ed5f.703d44"
+            ]
+        ]
+    },
+    {
+        "id": "1be79b78.b46515",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`\"/>",
+        "comments": "",
+        "x": 1869.8183195326064,
+        "y": 1609.7423378626504,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "61a477bc.3c1228",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2491.084991455078,
+        "y": 1700.591022491455,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "905198df.a2e8e8"
+            ]
+        ]
+    },
+    {
+        "id": "905198df.a2e8e8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 2670.977870941162,
+        "y": 1700.2271299362183,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "3c4f721c.b157ae",
+                "7598ed5f.703d44"
+            ]
+        ]
+    },
+    {
+        "id": "3c4f721c.b157ae",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving network-policy relationship for l3-network in AnAI where network-policy-id = ' + $tmp.AnAI.network-policy.network-policy-id`\"/>",
+        "comments": "",
+        "x": 2894.0774116516113,
+        "y": 1700.9770288467407,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "a461de0f.d6093",
+        "type": "call",
+        "name": "call: generate-subnets-subnet-id",
+        "xml": "<call module=\"VNF-API\" rpc=\"generate-subnets-subnet-id\" mode=\"sync\" >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 941.7618713378906,
+        "y": 822.5118942260742,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "6a268e02.7bf99"
+            ]
+        ]
+    },
+    {
+        "id": "6a268e02.7bf99",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1239.5118560791016,
+        "y": 822.761884689331,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "7598ed5f.703d44"
+            ]
+        ]
+    },
+    {
+        "id": "6a95cc4c.004c34",
+        "type": "save",
+        "name": "save relationship: tenant and cloud-region",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid\" \n\tforce=\"true\" \n\tlocal-only=\"false\">\n\t<!-- create relationship-list -->\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"tenant\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"cloud-region.cloud-owner\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"CloudOwner\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-key\" value=\"cloud-region.cloud-region-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-value\" value=\"`$network-topology-operation-input.network-request-information.aic-cloud-region`\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-key\" value=\"tenant.tenant-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-value\" value=\"`$network-topology-operation-input.network-request-information.tenant`\" />\n\t<parameter name=\"relationship-list.relationship[1].related-to\" value=\"cloud-region\" />\n\t<parameter name=\"relationship-list.relationship[1].relationship-data[0].relationship-key\" value=\"cloud-region.cloud-owner\" />\n\t<parameter name=\"relationship-list.relationship[1].relationship-data[0].relationship-value\" value=\"CloudOwner\" />\n\t<parameter name=\"relationship-list.relationship[1].relationship-data[1].relationship-key\" value=\"cloud-region.cloud-region-id\" />\n\t<parameter name=\"relationship-list.relationship[1].relationship-data[1].relationship-value\" value=\"`$network-topology-operation-input.network-request-information.aic-cloud-region`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 495.5635681152344,
+        "y": 953.7380905151367,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "94d20436.9f5a98",
+                "5c4aab8f.7f8844"
+            ]
+        ]
+    },
+    {
+        "id": "94d20436.9f5a98",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 743.5635681152344,
+        "y": 953.7380905151367,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "9bdd4cad.3259a"
+            ]
+        ]
+    },
+    {
+        "id": "9bdd4cad.3259a",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 931.9563961029053,
+        "y": 953.3742084503174,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "9e720f57.6429d",
+                "7598ed5f.703d44"
+            ]
+        ]
+    },
+    {
+        "id": "9e720f57.6429d",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving tenant and clould-region relationship for l3-network in AnAI where network-id = ' + $tmp.return.generate-l3network-network-id.uuid`\"/>",
+        "comments": "",
+        "x": 1136.0559368133545,
+        "y": 953.1241073608398,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "36380a8c.5dc166",
+        "type": "switchNode",
+        "name": "switch: tmp.vpn-binding-id != NULL",
+        "xml": "<switch test=\"`$tmp.vpn-binding-id != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 962.8135833740234,
+        "y": 1291.7381057739258,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "2a156ae6.84e5a6"
+            ]
+        ]
+    },
+    {
+        "id": "2a156ae6.84e5a6",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1182.5635681152344,
+        "y": 1291.7380905151367,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "42bfa7b6.ab68a8"
+            ]
+        ]
+    },
+    {
+        "id": "bbec29a5.4081f8",
+        "type": "set",
+        "name": "set tmp.local.network-id",
+        "xml": "<set>\n<parameter name=\"tmp.local.network-id\" value=\"`$tmp.return.generate-l3network-network-id.uuid`\" />\n",
+        "comments": "",
+        "x": 917.5714569091797,
+        "y": 778.9999885559082,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "69434546.6b177c",
+        "type": "save",
+        "name": "save AnAI - l3-network.subnets",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid \n\t\t\tAND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid\" >\n<!-- Create l3-network object -->\n<parameter name=\"network-id\" value=\"`$tmp.return.generate-l3network-network-id.uuid`\" />\n<parameter name=\"subnet-id\" value=\"`$tmp.return.generate-subnets-subnet-id.uuid`\" />\n<parameter name=\"subnet-name\" value=\"`$preload-data.network-topology-information.subnets[$i].subnet-name`\" />\n<parameter name=\"gateway-address\" value=\"`$tmp.gateway-address`\" />\n<parameter name=\"network-start-address\" value=\"`$preload-data.network-topology-information.subnets[$i].start-address`\" />\n<parameter name=\"cidr-mask\" value=\"`$preload-data.network-topology-information.subnets[$i].cidr-mask`\" />\n<parameter name=\"ip-version\" value=\"`$preload-data.network-topology-information.subnets[$i].ip-version`\" />\n<parameter name=\"dhcp-start\" value=\"`$preload-data.network-topology-information.subnets[$i].dhcp-start-address`\" />\n<parameter name=\"dhcp-end\" value=\"`$preload-data.network-topology-information.subnets[$i].dhcp-end-address`\" />\n<parameter name=\"dhcp-enabled\" value=\"`$tmp.dhcpEnabled.boolean`\" />\n\t\t<parameter name=\"orchestration-status\" value=\"pending-create\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 940.6379051208496,
+        "y": 868.5035381317139,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "bf4af859.d229c8",
+                "91ca1bcf.ce5e18"
+            ]
+        ]
+    },
+    {
+        "id": "cced61c2.cb78b",
+        "type": "save",
+        "name": "get AnAI - l3-network by name",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-name = $network-topology-operation-input.network-request-information.network-name\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.l3network.existed\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 458,
+        "y": 254.42857360839844,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "442f4dcc.0db234",
+                "b16ddddf.00d98"
+            ]
+        ]
+    },
+    {
+        "id": "442f4dcc.0db234",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 684.25,
+        "y": 296.6786346435547,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "6a2fcf8c.18eb8"
+            ]
+        ]
+    },
+    {
+        "id": "202129b8.5c0ed6",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'An error occurred while querying whether l3-network with network-name = ' + $network-topology-operation-input.network-request-information.network-name + ' already exists in AnAI'`\"/>\n",
+        "comments": "",
+        "x": 832.7457580566406,
+        "y": 254.89673042297363,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "b16ddddf.00d98",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 679.5235358344185,
+        "y": 254.89673042297363,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "202129b8.5c0ed6"
+            ]
+        ]
+    },
+    {
+        "id": "6a2fcf8c.18eb8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'A l3-network with network-name = ' + $network-topology-operation-input.network-request-information.network-name + ' already existed in AnAI with network-id = ' + $tmp.AnAI.l3network.existed.network-id`\"  />\n",
+        "comments": "",
+        "x": 835.4286193847656,
+        "y": 296.42857360839844,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "d30ff142.3546e",
+        "type": "set",
+        "name": "set: tmp.error-message to \"\"",
+        "xml": "<set>\n\t<parameter name=\"tmp.error-message\" value=\"\"/>",
+        "comments": "",
+        "x": 451.5714111328125,
+        "y": 362.67857360839844,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "300d9dbd.6d58a2",
+        "type": "set",
+        "name": "unset tmp.vpn-binding-id",
+        "xml": "<set>\n<parameter name=\"tmp.vpn-binding-id\" value=\"\" />\n",
+        "comments": "",
+        "x": 929.8888931274414,
+        "y": 1154.015875339508,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "36636bd5.8e92b4",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1493.24998304579,
+        "y": 1654.5715109507241,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "ce9859f8.9238e8"
+            ]
+        ]
+    },
+    {
+        "id": "cd3c019c.f3ce1",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1282.5872650146484,
+        "y": 1464.777780532837,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "b9331242.105a7"
+            ]
+        ]
+    },
+    {
+        "id": "b9331242.105a7",
+        "type": "set",
+        "name": "set tmp.is-bound-to-vpn",
+        "xml": "<set>\n<parameter name=\"tmp.is-bound-to-vpn\" value=\"true\" />\n",
+        "comments": "",
+        "x": 1473.0872650146484,
+        "y": 1464.777780532837,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "dfebf1ef.060d1",
+        "type": "save",
+        "name": "update AnAI - l3-network",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid\" >\n<parameter name=\"is-bound-to-vpn\" value=\"true\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 655.3016128540039,
+        "y": 1956.206524848938,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "e1336583.4cd0d8",
+                "8f30eaa4.9bde48"
+            ]
+        ]
+    },
+    {
+        "id": "e1336583.4cd0d8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 851.5847702026367,
+        "y": 1956.221842765808,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "f55c1f6d.ea9aa"
+            ]
+        ]
+    },
+    {
+        "id": "eec55dc8.09816",
+        "type": "switchNode",
+        "name": "switch ... tmp.is-bound-to-vpn",
+        "xml": "<switch test=\"`$tmp.is-bound-to-vpn`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 424.44444274902344,
+        "y": 1891.3493671417236,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "34d11c70.e8f384"
+            ]
+        ]
+    },
+    {
+        "id": "34d11c70.e8f384",
+        "type": "outcome",
+        "name": "true",
+        "xml": "<outcome value=\"true\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 643.8888931274414,
+        "y": 1891.1271028518677,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "dfebf1ef.060d1"
+            ]
+        ]
+    },
+    {
+        "id": "f55c1f6d.ea9aa",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1063.694450378418,
+        "y": 1956.5993690490723,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "36e75acf.f931c6",
+                "7598ed5f.703d44"
+            ]
+        ]
+    },
+    {
+        "id": "36e75acf.f931c6",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while updating l3-network is-bound-to-vpn in AnAI where network-id = ' + $tmp.return.generate-l3network-network-id.uuid`\"/>",
+        "comments": "",
+        "x": 1282.194435119629,
+        "y": 1956.349347114563,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "8cf9ad87.65dd7",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 636.5714111328125,
+        "y": 497.57141304016113,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "c0b37f94.55c04"
+            ]
+        ]
+    },
+    {
+        "id": "91ca1bcf.ce5e18",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1160.5714111328125,
+        "y": 909.5714130401611,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "78a54b4f.f2a264"
+            ]
+        ]
+    },
+    {
+        "id": "5c4aab8f.7f8844",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 751.5714111328125,
+        "y": 995.5714130401611,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "9bdd4cad.3259a"
+            ]
+        ]
+    },
+    {
+        "id": "188bd49e.885fbb",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1287.0157318115234,
+        "y": 1420.5713863372803,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "4dce9a6d.462e74"
+            ]
+        ]
+    },
+    {
+        "id": "8f30eaa4.9bde48",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 859.071403503418,
+        "y": 1997.3214921951294,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "f55c1f6d.ea9aa"
+            ]
+        ]
+    },
+    {
+        "id": "70ae584f.c14f98",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2498.8214433458115,
+        "y": 1743.071546872457,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "905198df.a2e8e8"
+            ]
+        ]
+    },
+    {
+        "id": "93380f51.982a9",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.vpn-binding.vpn-id",
+        "xml": "<switch test=\"`$tmp.AnAI.vpn-binding.vpn-id`\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1830.8214416503906,
+        "y": 1244.3214302062988,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "eff41a9e.00afa8",
+                "5bc2956f.787c5c"
+            ]
+        ]
+    },
+    {
+        "id": "b76ca92c.0ed578",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 2253.5714416503906,
+        "y": 1283.3214302062988,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "bb1b9631.658388",
+                "7598ed5f.703d44"
+            ]
+        ]
+    },
+    {
+        "id": "5bc2956f.787c5c",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2088.5714416503906,
+        "y": 1283.8214302062988,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "b76ca92c.0ed578"
+            ]
+        ]
+    },
+    {
+        "id": "eff41a9e.00afa8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2088.5714111328125,
+        "y": 1243.8214130401611,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "6fc7931.d198c6c"
+            ]
+        ]
+    },
+    {
+        "id": "bb1b9631.658388",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query vpn-bindings from AnAI where global-route-target = ' + $preload-data.network-topology-information.vpn-bindings[$i].global-route-target + '. It is likely that the same global-route-target points to more than one vpn-binding objects in AnAI.'`\"/>",
+        "comments": "",
+        "x": 2469.0714111328125,
+        "y": 1283.3214130401611,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "ce9859f8.9238e8",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.network-policy.network-policy-id",
+        "xml": "<switch test=\"`$tmp.AnAI.network-policy.network-policy-id`\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1771.3292541503906,
+        "y": 1654.0713682174683,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "3c3f8072.e88a9",
+                "d073d6e1.0db6e8"
+            ]
+        ]
+    },
+    {
+        "id": "3c3f8072.e88a9",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2045.0792541503906,
+        "y": 1653.5713682174683,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "78fb0dee.396224"
+            ]
+        ]
+    },
+    {
+        "id": "78fb0dee.396224",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 2210.0792541503906,
+        "y": 1653.0713682174683,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "7598ed5f.703d44",
+                "c12525bf.5dfe18"
+            ]
+        ]
+    },
+    {
+        "id": "b7a4e2fe.7602c",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query route-table-reference from AnAI where route-table-reference-fqdn = ' + $preload-data.network-topology-information.route-table-reference[$i].route-table-reference-fqdn + '. It is likely that the same route-table-reference-fqdn points to more than one route-table-reference objects in AnAI.'`\"/>",
+        "comments": "",
+        "x": 2636.912660386827,
+        "y": 1851.404614766439,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "d073d6e1.0db6e8",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2044.5714111328125,
+        "y": 1700.8214664459229,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "efde88cf.9b8748"
+            ]
+        ]
+    },
+    {
+        "id": "d92a7574.cd1b58",
+        "type": "save",
+        "name": "update AnAI - l3-network.provider-network-information",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid\" >\n<parameter name=\"physical-network-name\" value=\"`$preload-data.network-topology-information.provider-network-information.physical-network-name`\" />\n<parameter name=\"is-provider-network\" value=\"`$preload-data.network-topology-information.provider-network-information.is-provider-network`\" />\n<parameter name=\"is-shared-network\" value=\"`$preload-data.network-topology-information.provider-network-information.is-shared-network`\" />\n<parameter name=\"is-external-network\" value=\"`$preload-data.network-topology-information.provider-network-information.is-external-network`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 534.7499847412109,
+        "y": 541.3214206695557,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "8d65ff4.75283",
+                "a6764a00.4418a8"
+            ]
+        ]
+    },
+    {
+        "id": "8d65ff4.75283",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 848.2831344604492,
+        "y": 541.3367395401001,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "19a0604d.6fffb"
+            ]
+        ]
+    },
+    {
+        "id": "19a0604d.6fffb",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1060.3928146362305,
+        "y": 541.7142658233643,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "bfc1c864.dda818",
+                "7598ed5f.703d44"
+            ]
+        ]
+    },
+    {
+        "id": "bfc1c864.dda818",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while updating l3-network with provider-network-information in AnAI where network-id = ' + $tmp.return.generate-l3network-network-id.uuid`\"/>",
+        "comments": "",
+        "x": 1278.8927993774414,
+        "y": 541.464243888855,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "a6764a00.4418a8",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 855.7697677612305,
+        "y": 582.4363889694214,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "19a0604d.6fffb"
+            ]
+        ]
+    },
+    {
+        "id": "f5d35022.8ff6",
+        "type": "switchNode",
+        "name": "switch ... PRELOAD route-table-reference[]",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.route-table-reference_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 469.74998474121094,
+        "y": 1721.5714130401611,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "4f951dff.ce2564"
+            ]
+        ]
+    },
+    {
+        "id": "4f951dff.ce2564",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 725.1944351196289,
+        "y": 1721.3491487503052,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "d46faf09.e831"
+            ]
+        ]
+    },
+    {
+        "id": "d46faf09.e831",
+        "type": "set",
+        "name": "set route-table-reference[] = 0",
+        "xml": "<set>\n<parameter name='preload-data.network-topology-information.route-table-reference_length' value='0' />\n",
+        "comments": "",
+        "x": 930.7500440809463,
+        "y": 1721.3491694132485,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "30dd8358.aaaadc",
+        "type": "for",
+        "name": "for loop i - PRELOAD route-table-reference",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$preload-data.network-topology-information.route-table-reference_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 468.1072463989258,
+        "y": 1769.142804145813,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "9bc7e123.4762e"
+            ]
+        ]
+    },
+    {
+        "id": "75664f84.1ae09",
+        "type": "save",
+        "name": "save relationship: route-table-reference",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"route-table-reference\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"route-table-reference.route-table-reference-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.route-table-reference.route-table-reference-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2454.9962632921006,
+        "y": 1900.9483931859336,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "4d7f2cce.5452f4",
+                "5883ac21.585844"
+            ]
+        ]
+    },
+    {
+        "id": "9bc7e123.4762e",
+        "type": "switchNode",
+        "name": "switch: PRELOAD network-policy-fqdn != NULL",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.route-table-reference[$i].route-table-reference-fqdn != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 853.7028350830078,
+        "y": 1768.8253860473633,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "209cfc0f.7ee064"
+            ]
+        ]
+    },
+    {
+        "id": "209cfc0f.7ee064",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1119.4528350830078,
+        "y": 1769.0753860473633,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "4c6ed27c.d3899c"
+            ]
+        ]
+    },
+    {
+        "id": "4c6ed27c.d3899c",
+        "type": "save",
+        "name": "query AnAI - route-table-reference",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"route-table-reference\" \n\t\tkey=\"route-table-reference.route-table-reference-fqdn = $preload-data.network-topology-information.route-table-reference[$i].route-table-reference-fqdn\" \n\t\tpfx=\"tmp.AnAI.route-table-reference\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1348.702838897705,
+        "y": 1769.0753860473633,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "32be05d4.ef453a",
+                "d31265a9.dd2a68",
+                "fc3f6dcc.3ffa5"
+            ]
+        ]
+    },
+    {
+        "id": "32be05d4.ef453a",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1574.702922821045,
+        "y": 1810.0753955841064,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "c7025ab3.2465e8"
+            ]
+        ]
+    },
+    {
+        "id": "d31265a9.dd2a68",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1580.2029266357422,
+        "y": 1768.5753946304321,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "c7025ab3.2465e8"
+            ]
+        ]
+    },
+    {
+        "id": "c7025ab3.2465e8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1744.7029266357422,
+        "y": 1809.8253965377808,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "a84e07a3.02c778"
+            ]
+        ]
+    },
+    {
+        "id": "a84e07a3.02c778",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`\"/>",
+        "comments": "",
+        "x": 1953.8024673461914,
+        "y": 1809.5752954483032,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "4d7f2cce.5452f4",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2710.069139268663,
+        "y": 1900.423980077108,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "7402c469.9e6bcc"
+            ]
+        ]
+    },
+    {
+        "id": "7402c469.9e6bcc",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 2889.962018754747,
+        "y": 1900.060087521871,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "75091979.f14b18",
+                "7598ed5f.703d44"
+            ]
+        ]
+    },
+    {
+        "id": "75091979.f14b18",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving route-table-reference relationship for l3-network in AnAI where route-table-reference-id = ' + $tmp.AnAI.route-table-reference.route-table-reference-id`\"/>",
+        "comments": "",
+        "x": 3114.061586168077,
+        "y": 1899.8100102742515,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "fc3f6dcc.3ffa5",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1577.234130859375,
+        "y": 1854.404468536377,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "b4dd51b0.f58dd"
+            ]
+        ]
+    },
+    {
+        "id": "5883ac21.585844",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2717.8055911593965,
+        "y": 1942.9045044581098,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "7402c469.9e6bcc"
+            ]
+        ]
+    },
+    {
+        "id": "b4dd51b0.f58dd",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.route-table-reference.route-table-reference-id",
+        "xml": "<switch test=\"`$tmp.AnAI.route-table-referencey.route-table-reference-id`\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1895.3134019639756,
+        "y": 1853.904325803121,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "caa62ee1.0e628",
+                "70a311b7.2883a"
+            ]
+        ]
+    },
+    {
+        "id": "caa62ee1.0e628",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2222.0634019639756,
+        "y": 1853.404325803121,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "6ccdc09b.5108b"
+            ]
+        ]
+    },
+    {
+        "id": "6ccdc09b.5108b",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 2387.0634019639756,
+        "y": 1852.904325803121,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "b7a4e2fe.7602c"
+            ]
+        ]
+    },
+    {
+        "id": "c12525bf.5dfe18",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query newtork-policy from AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn + '. It is likely that the same network-policy-fqdn points to more than one network-policy objects in AnAI.'`\"/>",
+        "comments": "",
+        "x": 2455.229965209961,
+        "y": 1652.5709247589111,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "70a311b7.2883a",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2221.5555589463975,
+        "y": 1900.6544240315757,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "75664f84.1ae09"
+            ]
+        ]
+    },
+    {
+        "id": "830f1b88.627bf8",
+        "type": "save",
+        "name": "save relationship: service-instance",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"service-instance\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"customer.global-customer-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$network-topology-operation-input.service-information.subscriber-name`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-key\" value=\"service-subscription.service-type\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[1].relationship-value\" value=\"`$network-topology-operation-input.service-information.service-type`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-key\" value=\"service-instance.service-instance-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[2].relationship-value\" value=\"`$network-topology-operation-input.service-information.service-instance-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 449.74998474121094,
+        "y": 2092.571413040161,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "862cdb1e.cf3978",
+                "29684e7c.4d3332"
+            ]
+        ]
+    },
+    {
+        "id": "862cdb1e.cf3978",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 704.8228607177734,
+        "y": 2092.0469999313354,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "a91510cb.75d29"
+            ]
+        ]
+    },
+    {
+        "id": "a91510cb.75d29",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 884.7157402038574,
+        "y": 2091.6831073760986,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "c6dc81e.9bba78",
+                "7598ed5f.703d44"
+            ]
+        ]
+    },
+    {
+        "id": "c6dc81e.9bba78",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving service-instance relationship for l3-network in AnAI where service-instance-id = ' + $network-topology-operation-input.service-information.service-instance-id`\"/>",
+        "comments": "",
+        "x": 1122.8153076171875,
+        "y": 2091.433030128479,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "29684e7c.4d3332",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 712.5593126085068,
+        "y": 2134.5275243123374,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "a91510cb.75d29"
+            ]
+        ]
+    },
+    {
+        "id": "4330f5b6.e6251c",
+        "type": "switchNode",
+        "name": "switch: INPUT service-type",
+        "xml": "<switch test=\"`$network-topology-operation-input.service-information.service-type`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 447.75,
+        "y": 160.57142639160156,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "a00be1d.7bd562"
+            ]
+        ]
+    },
+    {
+        "id": "a00be1d.7bd562",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 653.75,
+        "y": 160.57142639160156,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "84d2b076.55161"
+            ]
+        ]
+    },
+    {
+        "id": "84d2b076.55161",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value='service-type, aka AnAI subscription-service-type, is required.'/>",
+        "comments": "",
+        "x": 811.75,
+        "y": 160.57142639160156,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    },
+    {
+        "id": "d045d509.c8ec58",
+        "type": "switchNode",
+        "name": "switch: INPUT subscriber-name",
+        "xml": "<switch test=\"`$network-topology-operation-input.service-information.subscriber-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 461.75,
+        "y": 206.57142639160156,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "5efbbb28.950c14"
+            ]
+        ]
+    },
+    {
+        "id": "5efbbb28.950c14",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 683.75,
+        "y": 206.57142639160156,
+        "z": "f9c6b4d6.c89d48",
+        "wires": [
+            [
+                "d57a3c68.3825d"
+            ]
+        ]
+    },
+    {
+        "id": "d57a3c68.3825d",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value='subscriber-name, aka AnAI global-customer-id, is required.'/>",
+        "comments": "",
+        "x": 841.75,
+        "y": 206.57142639160156,
+        "z": "f9c6b4d6.c89d48",
+        "wires": []
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-changeassign.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-changeassign.json
new file mode 100644
index 0000000..e8a2de4
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-changeassign.json
@@ -0,0 +1,5042 @@
+[
+    {
+        "id": "adccb6.8424d348",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 178.7500114440918,
+        "y": 167.50000190734863,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "c7828b0a.e799e8",
+                "2212dd2d.8e7942",
+                "2dfb355b.d5d24a",
+                "313c1584.4f97fa",
+                "6c413597.876f3c",
+                "34af06b5.07d33a",
+                "59c57e09.0c9bd",
+                "c10e73d.da8889",
+                "bb8ce764.d17888",
+                "b16ab5f2.35a148",
+                "f15dac05.a23f",
+                "10056ed4.c3d191",
+                "b4cd1414.581b48",
+                "e456340c.466478",
+                "eca5ffa4.23d73",
+                "bd2d9b6e.b5c1d8"
+            ]
+        ]
+    },
+    {
+        "id": "c7828b0a.e799e8",
+        "type": "get-resource",
+        "name": "get AnAI - l3-network",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $network-topology-operation-input.network-request-information.network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.l3network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 424.80941009521484,
+        "y": 168.38485431671143,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "812ba46c.1b8558",
+                "8ace8ce6.55a0e"
+            ]
+        ]
+    },
+    {
+        "id": "2212dd2d.8e7942",
+        "type": "switchNode",
+        "name": "switch: AnAI == PRELOAD - network-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.network-name == $preload-data.network-topology-information.network-topology-identifier.network-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 493.2222099304199,
+        "y": 340.5555057525635,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "f97c22c3.bd33d"
+            ]
+        ]
+    },
+    {
+        "id": "2dfb355b.d5d24a",
+        "type": "for",
+        "name": "for loop k - tmp.AnAI.l3network.subnets.subnet",
+        "xml": "<for index=\"k\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 499.5236930847168,
+        "y": 515.6143531799316,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "4dd3576.8062ba8"
+            ]
+        ]
+    },
+    {
+        "id": "99484323.6781e",
+        "type": "for",
+        "name": "for loop i - PRELOAD subnets",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$preload-data.network-topology-information.subnets_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 847.464298248291,
+        "y": 1611.5709714889526,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "caf58dc4.3309b"
+            ]
+        ]
+    },
+    {
+        "id": "313c1584.4f97fa",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status=\"success\">\n\t<parameter name=\"networkId\" value=\"`$network-topology-operation-input.network-request-information.network-id`\" />\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 284.05884170532227,
+        "y": 6246.302718162537,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "812ba46c.1b8558",
+        "type": "not-found",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 611.7143592834473,
+        "y": 209.57915782928467,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "90e7717c.4ff42"
+            ]
+        ]
+    },
+    {
+        "id": "90e7717c.4ff42",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"`'network-id: ' + $network-topology-operation-input.network-request-information.network-id + 'not found in AnAI'`\" />",
+        "comments": "",
+        "x": 774.3531341552734,
+        "y": 209.4681453704834,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "6a707f17.e585d",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 641.8493194580078,
+        "y": 654.6338815689087,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "e1540d8d.4554a",
+                "15930eb5.9d2c61"
+            ]
+        ]
+    },
+    {
+        "id": "c69a9fad.d395d",
+        "type": "set",
+        "name": "initialize tmp.start-address-match = 0",
+        "xml": "<set>\n<parameter name='tmp.start-address-match' value='0' />\n",
+        "comments": "",
+        "x": 714.3761596679688,
+        "y": 563.1682300567627,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "cb84ba2b.90bd48",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 549.4607391357422,
+        "y": 1776.8211612701416,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "766397f9.d8d1f8",
+                "9f8d35e4.e55ae8"
+            ]
+        ]
+    },
+    {
+        "id": "7945c8d8.383a58",
+        "type": "set",
+        "name": "initialize tmp.start-address-match = 0",
+        "xml": "<set>\n<parameter name=\"tmp.start-address-match\" value=\"0\" />\n",
+        "comments": "",
+        "x": 738.2764015197754,
+        "y": 1709.0573635101318,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e1540d8d.4554a",
+        "type": "for",
+        "name": "for loop n PRELOAD subnets",
+        "xml": "<for index=\"n\" start=\"0\" end=\"`$preload-data.network-topology-information.subnets_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 874.579891204834,
+        "y": 655.1577501296997,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "94c41929.7cf038"
+            ]
+        ]
+    },
+    {
+        "id": "4fd8628d.a08a8c",
+        "type": "switchNode",
+        "name": "switch: tmp.start-address-match = 0",
+        "xml": "<switch test=\"`$tmp.start-address-match == 0`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 989.4622459411621,
+        "y": 1282.7005062103271,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "d695fd69.34476"
+            ]
+        ]
+    },
+    {
+        "id": "766397f9.d8d1f8",
+        "type": "for",
+        "name": "for loop j - AnAI l3subnet",
+        "xml": "<for index=\"j\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 770.6567459106445,
+        "y": 1777.2368459701538,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "a27e439b.1f5f7"
+            ]
+        ]
+    },
+    {
+        "id": "d695fd69.34476",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1226.8745765686035,
+        "y": 1282.2680130004883,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "df441732.5a6038"
+            ]
+        ]
+    },
+    {
+        "id": "e08b1d05.35c67",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 933.4417266845703,
+        "y": 1831.371304512024,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "f26659b9.bdc948"
+            ]
+        ]
+    },
+    {
+        "id": "94c41929.7cf038",
+        "type": "switchNode",
+        "name": "switch: AnAI-k == PRELOAD-n start-address",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].network-start-address == $preload-data.network-topology-information.subnets[$n].start-address`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 887.6592407226562,
+        "y": 706.0110673904419,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "5c5db431.fc380c"
+            ]
+        ]
+    },
+    {
+        "id": "a27e439b.1f5f7",
+        "type": "switchNode",
+        "name": "switch: PRELOAD-i == AnAI-j start-address",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.subnets[$i].start-address == $tmp.AnAI.l3network.subnets.subnet[$j].network-start-address`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1084.7081756591797,
+        "y": 1777.8203172683716,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "c4c3be7b.c7a1b"
+            ]
+        ]
+    },
+    {
+        "id": "f26659b9.bdc948",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1113.581069946289,
+        "y": 1831.8419494628906,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "8fd779af.d8ec98",
+                "b1a240fe.72ecb",
+                "bdf792c0.b5a28",
+                "2340601b.c0fbc",
+                "84c3d0d1.e984c",
+                "754d89e8.1de998"
+            ]
+        ]
+    },
+    {
+        "id": "5c5db431.fc380c",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1154.7284240722656,
+        "y": 706.2167139053345,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "b5badb50.692f18"
+            ]
+        ]
+    },
+    {
+        "id": "df441732.5a6038",
+        "type": "save",
+        "name": "update AnAI - subnet",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id\" >\n<parameter name=\"orchestration-status\" value=\"pending-delete\" />\n\t\t",
+        "comments": "",
+        "outputs": 1,
+        "x": 1410.3694496154785,
+        "y": 1281.6625576019287,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "b8c75959.a07998",
+                "e5068dd8.d58d5",
+                "150db709.87fab9"
+            ]
+        ]
+    },
+    {
+        "id": "c4c3be7b.c7a1b",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1335.9098434448242,
+        "y": 1777.2601118087769,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "b390fee8.578a3"
+            ]
+        ]
+    },
+    {
+        "id": "b8c75959.a07998",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1603.3452911376953,
+        "y": 1281.5433139801025,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "c6b0d6cd.d0a058"
+            ]
+        ]
+    },
+    {
+        "id": "272c0e65.707422",
+        "type": "comment",
+        "name": "foreach AnAI l3subnet not found in PRELOAD, set pending-delete",
+        "info": "",
+        "comments": "",
+        "x": 1032.8700065612793,
+        "y": 1158.146183013916,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "661025a8.9e175c",
+        "type": "comment",
+        "name": "foreach PRELOAD subnet not found in AnAI l3subnet, create subnet in AnAI",
+        "info": "",
+        "comments": "",
+        "x": 626.5205192565918,
+        "y": 1534.1595935821533,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "5138e1dc.f8066",
+        "type": "switchNode",
+        "name": "switch: AnAI-k == PRELOAD-n cidr-mask",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].cidr-mask == $preload-data.network-topology-information.subnets[$n].cidr-mask`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1588.1782608032227,
+        "y": 467.1387405395508,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "da70def2.76425"
+            ]
+        ]
+    },
+    {
+        "id": "5bb8c4e2.6d08bc",
+        "type": "set",
+        "name": "set tmp.start-address-match = 1",
+        "xml": "<set>\n<parameter name='tmp.start-address-match' value='1' />\n",
+        "comments": "",
+        "x": 1560.4662246704102,
+        "y": 418.6142053604126,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b5badb50.692f18",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1304.9099044799805,
+        "y": 706.583779335022,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "5bb8c4e2.6d08bc",
+                "5138e1dc.f8066",
+                "f67b8249.bf0ed",
+                "49957628.a77588",
+                "c6be995.0b46868",
+                "e67b0a35.1d06e8",
+                "aa1015d0.f81c38",
+                "cf30dbbc.caf468",
+                "ef8f189e.13e928"
+            ]
+        ]
+    },
+    {
+        "id": "28694ef.e6d40b2",
+        "type": "comment",
+        "name": "start-addr matched, compare other subnet attrs",
+        "info": "",
+        "comments": "",
+        "x": 1184.274257659912,
+        "y": 560.822154045105,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "da70def2.76425",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1834.7589530944824,
+        "y": 467.59263038635254,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "90858a29.37fc08"
+            ]
+        ]
+    },
+    {
+        "id": "17ed7289.814ddd",
+        "type": "save",
+        "name": "update AnAI - subnet",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id\" >\n\t<!-- Update l3network.subnet -->\n\t<parameter name=\"gateway-address\" value=\"`$tmp.gateway-address`\"/>\n\t<parameter name=\"subnet-name\" value=\"`$preload-data.network-topology-information.subnets[$n].subnet-name`\"/>\n\t<parameter name=\"cidr-mask\" value=\"`$preload-data.network-topology-information.subnets[$n].cidr-mask`\"/>\n\t<parameter name=\"dhcp-start\" value=\"`$preload-data.network-topology-information.subnets[$n].dhcp-start-address`\"/>\n\t<parameter name=\"dhcp-end\" value=\"`$preload-data.network-topology-information.subnets[$n].dhcp-end-address`\"/>\n\t<parameter name=\"dhcp-enabled\" value=\"`$tmp.dhcpEnabled.boolean`\"/>\n\t<parameter name=\"orchestration-status\" value=\"pending-update\" />\n\t\t",
+        "comments": "",
+        "outputs": 1,
+        "x": 1941.5383796691895,
+        "y": 1026.5579977035522,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "2d5ecb94.1f2404",
+                "80e40fc7.91291",
+                "c9c8378e.07a4c8"
+            ]
+        ]
+    },
+    {
+        "id": "bfe3db0b.73f948",
+        "type": "comment",
+        "name": "foreach AnAI subnet attr different from PRELOAD, update AnAI and set pending-update",
+        "info": "",
+        "comments": "",
+        "x": 1908.5912628173828,
+        "y": 365.12071228027344,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "cf30dbbc.caf468",
+        "type": "switchNode",
+        "name": "switch: AnAI-k == PRELOAD-n dhcp-enabled.boolean",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-enabled == $tmp.dhcpEnabled.boolean`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1625.5838432312012,
+        "y": 829.0172414779663,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "7321a40b.545eac"
+            ]
+        ]
+    },
+    {
+        "id": "7321a40b.545eac",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1908.4177474975586,
+        "y": 828.9894180297852,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "1bcbd50a.81742b"
+            ]
+        ]
+    },
+    {
+        "id": "8fd779af.d8ec98",
+        "type": "switchNode",
+        "name": "switch : PRELOAD dhcp-enabled",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.subnets[$i].dhcp-enabled`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1376.659194946289,
+        "y": 1831.488842010498,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "d1241924.ed09f8",
+                "7227226.f5b7ddc"
+            ]
+        ]
+    },
+    {
+        "id": "7227226.f5b7ddc",
+        "type": "other",
+        "name": "N",
+        "xml": "<outcome value='N'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1624.2147521972656,
+        "y": 1832.4095478057861,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "2a420bce.572e64"
+            ]
+        ]
+    },
+    {
+        "id": "d1241924.ed09f8",
+        "type": "other",
+        "name": "Y",
+        "xml": "<outcome value='Y'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1624.881492614746,
+        "y": 1878.8540449142456,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "797eb8ae.317378"
+            ]
+        ]
+    },
+    {
+        "id": "67602934.d76d68",
+        "type": "set",
+        "name": "set tmp.dhcpEnabled.bolean=false",
+        "xml": "<set>\n<parameter name=\"tmp.dhcpEnabled.boolean\" value=\"false\" />\n",
+        "comments": "",
+        "x": 2016.2388725280762,
+        "y": 738.6499919891357,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "25a34e9f.ba3cb2",
+        "type": "set",
+        "name": "set tmp.dhcpEnabled.boolean=true",
+        "xml": "<set>\n<parameter name=\"tmp.dhcpEnabled.boolean\" value=\"true\" />\n",
+        "comments": "",
+        "x": 2017.8779106140137,
+        "y": 780.1221618652344,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "aa1015d0.f81c38",
+        "type": "switchNode",
+        "name": "switch : PRELOAD-n dhcp-enabled",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.subnets[$n].dhcp-enabled`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1567.1460990905762,
+        "y": 738.4153118133545,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "d4a0bbfd.813968",
+                "7c02b1e6.66023"
+            ]
+        ]
+    },
+    {
+        "id": "7c02b1e6.66023",
+        "type": "other",
+        "name": "N",
+        "xml": "<outcome value='N'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1797.2017631530762,
+        "y": 738.6931438446045,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "67602934.d76d68"
+            ]
+        ]
+    },
+    {
+        "id": "d4a0bbfd.813968",
+        "type": "other",
+        "name": "Y",
+        "xml": "<outcome value='Y'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1796.618564605713,
+        "y": 779.8876571655273,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "25a34e9f.ba3cb2"
+            ]
+        ]
+    },
+    {
+        "id": "4dd3576.8062ba8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 452.6436080932617,
+        "y": 563.4527454376221,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "c69a9fad.d395d",
+                "6a707f17.e585d",
+                "d6ebf8bb.4c2de8"
+            ]
+        ]
+    },
+    {
+        "id": "d6ebf8bb.4c2de8",
+        "type": "set",
+        "name": "initialize tmp.subnetUpdate = 0",
+        "xml": "<set>\n<parameter name='tmp.subnetUpdate' value='0' />\n",
+        "comments": "",
+        "x": 695.1359634399414,
+        "y": 608.8260974884033,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f67b8249.bf0ed",
+        "type": "switchNode",
+        "name": "switch: tmp.subnetUpdate = 1",
+        "xml": "<switch test=\"`$tmp.subnetUpdate == 1`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1548.4172706604004,
+        "y": 1027.1630268096924,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "b0b528dc.173918"
+            ]
+        ]
+    },
+    {
+        "id": "b0b528dc.173918",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1756.4172706604004,
+        "y": 1026.8297748565674,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "17ed7289.814ddd"
+            ]
+        ]
+    },
+    {
+        "id": "caf58dc4.3309b",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 476.2505073547363,
+        "y": 1709.036449432373,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "7945c8d8.383a58",
+                "cb84ba2b.90bd48"
+            ]
+        ]
+    },
+    {
+        "id": "d922f181.c8317",
+        "type": "set",
+        "name": "set tmp.l3networkUpdate = 1",
+        "xml": "<set>\n<parameter name=\"tmp.l3networkUpdate\" value=\"1\" />\n",
+        "comments": "",
+        "x": 2512.298324584961,
+        "y": 1271.3373107910156,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e5068dd8.d58d5",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1610.0681495666504,
+        "y": 1435.3452835083008,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "87593b73.e592d8"
+            ]
+        ]
+    },
+    {
+        "id": "b0faff93.2dd14",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1640.504550933838,
+        "y": 2245.03267288208,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "ee66f92b.ccfb18"
+            ]
+        ]
+    },
+    {
+        "id": "f20c0bb3.0d7af8",
+        "type": "set",
+        "name": "set tmp.subnetRollback: orchestraton-status",
+        "xml": "<set>\n  <parameter name=\"tmp.subnetRollback[$x].subnet-id\" value= \"`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`\"/>\n  <parameter name=\"tmp.subnetRollback[$x].orchestration-status\" value= \"`$tmp.AnAI.l3network.subnets.subnet[$k].orchestration-status`\" />\n  <parameter name=\"tmp.subnetRollback[$x].type\" value = \"delete\"  />\n  \n\n\n",
+        "comments": "",
+        "x": 2054.0706214904785,
+        "y": 1434.5365447998047,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "87593b73.e592d8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1746.9279098510742,
+        "y": 1435.1081132888794,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "f20c0bb3.0d7af8",
+                "8f7fc73c.e2c3d8",
+                "3eceba12.f5d206"
+            ]
+        ]
+    },
+    {
+        "id": "ee66f92b.ccfb18",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1782.9489860534668,
+        "y": 2244.078380584717,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "eaaa5901.98e238",
+                "29738f0c.0d796",
+                "3b6d36e2.4f5b5a"
+            ]
+        ]
+    },
+    {
+        "id": "eaaa5901.98e238",
+        "type": "set",
+        "name": "set tmp.subnetRollback for create",
+        "xml": "<set>\n  <parameter name=\"tmp.subnetRollback[$x].subnet-id\" value= \"`$tmp.return.generate-subnets-subnet-id.uuid`\" />\n  <parameter name=\"tmp.subnetRollback[$x].type\" value = \"create\"  />",
+        "comments": "",
+        "x": 2019.2348937988281,
+        "y": 2244.792977333069,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8f7fc73c.e2c3d8",
+        "type": "set",
+        "name": "$x++",
+        "xml": "<set>\n  <parameter name=\"x\" value = \"`$x + 1`\"  />\n\n",
+        "comments": "",
+        "x": 1937.775577545166,
+        "y": 1480.5871963500977,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "29738f0c.0d796",
+        "type": "set",
+        "name": "$x++",
+        "xml": "<set>\n  <parameter name=\"x\" value = \"`$x + 1`\"  />\n\n",
+        "comments": "",
+        "x": 1936.1711730957031,
+        "y": 2290.3573427200317,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "49957628.a77588",
+        "type": "switchNode",
+        "name": "switch: l3subnet[k] == PRELOAD subnets[n] dhcp-start",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-start == $preload-data.network-topology-information.subnets[$n].dhcp-start-address`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1627.2202644348145,
+        "y": 877.0411176681519,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "a485a10d.6f0aa"
+            ]
+        ]
+    },
+    {
+        "id": "a485a10d.6f0aa",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1908.1367721557617,
+        "y": 876.7633323669434,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "ca9a6174.d3216"
+            ]
+        ]
+    },
+    {
+        "id": "c6be995.0b46868",
+        "type": "switchNode",
+        "name": "switch: l3subnet[k] == PRELOAD subnets[n] dhcp-end",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-end == $preload-data.network-topology-information.subnets[$n].dhcp-end-address`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1624.4424324035645,
+        "y": 924.3744916915894,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "b7005098.53ee7"
+            ]
+        ]
+    },
+    {
+        "id": "b7005098.53ee7",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1907.3589401245117,
+        "y": 924.0967063903809,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "292eb234.c8484e"
+            ]
+        ]
+    },
+    {
+        "id": "e25fc8a9.1116e8",
+        "type": "method",
+        "name": "method network-topology-changeassign",
+        "xml": "<method rpc=\"network-topology-changeassign\" mode=\"sync\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 228.1150665283203,
+        "y": 109.55552768707275,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "adccb6.8424d348"
+            ]
+        ]
+    },
+    {
+        "id": "202a3e03.4ddbf2",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 282.5594940185547,
+        "y": 53.22220325469971,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "e25fc8a9.1116e8"
+            ]
+        ]
+    },
+    {
+        "id": "570ef049.e5ed1",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 118.44837951660156,
+        "y": 53.22220325469971,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "202a3e03.4ddbf2"
+            ]
+        ]
+    },
+    {
+        "id": "8ace8ce6.55a0e",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 604.6705780029297,
+        "y": 168.77773571014404,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "77d4339b.2c77fc"
+            ]
+        ]
+    },
+    {
+        "id": "77d4339b.2c77fc",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + ' from AnAI'`\" />",
+        "comments": "",
+        "x": 763.7816619873047,
+        "y": 168.9999647140503,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "540da71a.6c5d78",
+        "type": "GenericXML",
+        "name": "Execute: generate gateway-address",
+        "xml": "<execute plugin=\"com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool\" method=\"getGatewayAddress\">\n\t<parameter name=\"ipAddress\" value=\"`$preload-data.network-topology-information.subnets[$n].start-address`\" />\n\t<parameter name=\"ipVersion\" value=\"`$preload-data.network-topology-information.subnets[$n].ip-version`\" />\n\t<parameter name=\"subnet\" value=\"`$preload-data.network-topology-information.subnets[$n].cidr-mask`\" />\n\t<parameter name=\"ctxVariable\" value=\"tmp.return.generate.gateway-address\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2190.293586730957,
+        "y": 525.952335357666,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "66b36d53.f585d4",
+        "type": "set",
+        "name": "set tmp.gateway-address",
+        "xml": "<set>\n<parameter name=\"tmp.gateway-address\" value=\"`$tmp.return.generate.gateway-address`\" />\n",
+        "comments": "",
+        "x": 2807.043712615967,
+        "y": 588.9523363113403,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e67b0a35.1d06e8",
+        "type": "switchNode",
+        "name": "switch : PRELOAD gateway-address",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.subnets[$n].gateway-address`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1575.543586730957,
+        "y": 525.952335357666,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "8b3b77a0.09f798",
+                "4ab20367.f03b6c"
+            ]
+        ]
+    },
+    {
+        "id": "8b3b77a0.09f798",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 1809.543586730957,
+        "y": 525.952335357666,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "4d8feb3a.3484b4"
+            ]
+        ]
+    },
+    {
+        "id": "4ab20367.f03b6c",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1811.543586730957,
+        "y": 569.952335357666,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "6708d473.7fb07c"
+            ]
+        ]
+    },
+    {
+        "id": "6708d473.7fb07c",
+        "type": "switchNode",
+        "name": "switch: AnAI-k == PRELOAD-n gateway-address",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].gateway-address == $preload-data.network-topology-information.subnets[$n].gateway-address`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2044.543743133545,
+        "y": 648.6666088104248,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "263829a0.412d26",
+                "9e7603e8.19f05"
+            ]
+        ]
+    },
+    {
+        "id": "263829a0.412d26",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2321.043743133545,
+        "y": 648.9166088104248,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "ac91a48c.df4748"
+            ]
+        ]
+    },
+    {
+        "id": "d3078aa9.d0b7f8",
+        "type": "set",
+        "name": "set tmp.gateway-address",
+        "xml": "<set>\n<parameter name=\"tmp.gateway-address\" value=\"`$preload-data.network-topology-information.subnets[$n].gateway-address`\" />\n",
+        "comments": "",
+        "x": 2808.0437049865723,
+        "y": 647.0594596862793,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4d8feb3a.3484b4",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1949.543586730957,
+        "y": 525.952335357666,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "540da71a.6c5d78",
+                "e9310489.7af568"
+            ]
+        ]
+    },
+    {
+        "id": "ac91a48c.df4748",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2460.043743133545,
+        "y": 648.9166088104248,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "d3078aa9.d0b7f8",
+                "9d0c9a84.7d8738"
+            ]
+        ]
+    },
+    {
+        "id": "6e1e477.31893b8",
+        "type": "returnSuccess",
+        "name": "set execute_failure = true",
+        "xml": "<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n",
+        "comments": "",
+        "x": 2527.4322395324707,
+        "y": 1113.436484336853,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "f97c22c3.bd33d",
+        "type": "not-found",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 747.4722099304199,
+        "y": 340.55950260162354,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "5b49a928.5702a8"
+            ]
+        ]
+    },
+    {
+        "id": "5b49a928.5702a8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"`'No preload network found with network-name = ' + $tmp.AnAI.l3network.network-name + ' in SDNC'`\" />",
+        "comments": "",
+        "x": 910.1109848022461,
+        "y": 340.44849014282227,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "cd77a967.3c6308",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2295.138832092285,
+        "y": 1026.595251083374,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "6e1e477.31893b8",
+                "fcfd2600.488c78",
+                "5d6b7d0.b989584"
+            ]
+        ]
+    },
+    {
+        "id": "2d5ecb94.1f2404",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2127.6016120910645,
+        "y": 1026.3078203201294,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "cd77a967.3c6308"
+            ]
+        ]
+    },
+    {
+        "id": "80e40fc7.91291",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2135.163372039795,
+        "y": 1181.254093170166,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "3fce51fa.fd9e2e"
+            ]
+        ]
+    },
+    {
+        "id": "c1d7a122.2a287",
+        "type": "set",
+        "name": "set tmp.subnetRollback: keys",
+        "xml": "<set>\n  <parameter name=\"tmp.subnetRollback[$x].subnet-id\" value= \"`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`\"/>\n  <parameter name=\"tmp.subnetRollback[$x].type\" value = \"update\"/>\n  \n\n\n",
+        "comments": "",
+        "x": 2511.4268836975098,
+        "y": 1181.4888858795166,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3fce51fa.fd9e2e",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2273.662322998047,
+        "y": 1181.2392616271973,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "c1d7a122.2a287",
+                "61057541.26debc",
+                "d922f181.c8317"
+            ]
+        ]
+    },
+    {
+        "id": "61057541.26debc",
+        "type": "set",
+        "name": "$x++",
+        "xml": "<set>\n  <parameter name=\"x\" value = \"`$x + 1`\"  />\n\n",
+        "comments": "",
+        "x": 2441.1170692443848,
+        "y": 1227.039545059204,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3d2b0a50.3a8f56",
+        "type": "returnSuccess",
+        "name": "set execute_failure = true",
+        "xml": "<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n",
+        "comments": "",
+        "x": 2039.186595916748,
+        "y": 1368.3451623916626,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "84c3d0d1.e984c",
+        "type": "save",
+        "name": "save AnAI - l3-network.subnets.subnet",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid\" >\n\t<!-- Create l3-network object -->\n\t<parameter name=\"network-id\" value=\"`$tmp.AnAI.l3network.network-id`\" />\n\t<parameter name=\"subnet-id\" value=\"`$tmp.return.generate-subnets-subnet-id.uuid`\" />\n\t<parameter name=\"gateway-address\" value=\"`$tmp.gateway-address`\" />\n\t<parameter name=\"subnet-name\" value=\"`$preload-data.network-topology-information.subnets[$i].subnet-name`\" />\t\t\n\t<parameter name=\"network-start-address\" value=\"`$preload-data.network-topology-information.subnets[$i].start-address`\" />\n\t<parameter name=\"cidr-mask\" value=\"`$preload-data.network-topology-information.subnets[$i].cidr-mask`\" />\n\t<parameter name=\"ip-version\" value=\"`$preload-data.network-topology-information.subnets[$i].ip-version`\" />\n\t<parameter name=\"dhcp-start\" value=\"`$preload-data.network-topology-information.subnets[$i].dhcp-start-address`\" />\n\t<parameter name=\"dhcp-end\" value=\"`$preload-data.network-topology-information.subnets[$i].dhcp-end-address`\" />\n\t<parameter name=\"dhcp-enabled\" value=\"`$tmp.dhcpEnabled.boolean`\" />\n\t<parameter name=\"orchestration-status\" value=\"pending-create\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1392.1628170013428,
+        "y": 2104.321937561035,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "ddd8c8e2.0b4288",
+                "b0faff93.2dd14",
+                "92778af8.befa68"
+            ]
+        ]
+    },
+    {
+        "id": "ddd8c8e2.0b4288",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1634.7790908813477,
+        "y": 2104.670440673828,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "8dabdae5.57ab58"
+            ]
+        ]
+    },
+    {
+        "id": "bdf792c0.b5a28",
+        "type": "switchNode",
+        "name": "switch : PRELOAD gateway-address",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.subnets[$i].gateway-address`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1391.028793334961,
+        "y": 1969.615735054016,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "b4dd1568.7deed8"
+            ]
+        ]
+    },
+    {
+        "id": "b4dd1568.7deed8",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 1614.528793334961,
+        "y": 1969.615735054016,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "cbdcd1c2.b3ed5"
+            ]
+        ]
+    },
+    {
+        "id": "a0138d79.73728",
+        "type": "GenericXML",
+        "name": "Execute: generate gateway-address",
+        "xml": "<execute plugin=\"com.att.sdnctl.sli.plugin.ipAddressTools.IpAddressTool\" method=\"getGatewayAddress\">\n\t<parameter name=\"ipAddress\" value=\"`$preload-data.network-topology-information.subnets[$i].start-address`\" />\n\t<parameter name=\"ipVersion\" value=\"`$preload-data.network-topology-information.subnets[$i].ip-version`\" />\n\t<parameter name=\"subnet\" value=\"`$preload-data.network-topology-information.subnets[$i].cidr-mask`\" />\n\t<parameter name=\"ctxVariable\" value=\"tmp.return.generate.gateway-address\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1987.77880859375,
+        "y": 1969.3657426834106,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "cbdcd1c2.b3ed5",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1756.2788009643555,
+        "y": 1969.6157455444336,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "a0138d79.73728",
+                "c95c4bf2.a7bd28"
+            ]
+        ]
+    },
+    {
+        "id": "b1a240fe.72ecb",
+        "type": "set",
+        "name": "set tmp.gateway-address",
+        "xml": "<set>\n<parameter name='tmp.gateway-address' value='`$preload-data.network-topology-information.subnets[$i].gateway-address`' />\n",
+        "comments": "",
+        "x": 1353.52880859375,
+        "y": 1925.8657417297363,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c95c4bf2.a7bd28",
+        "type": "set",
+        "name": "set tmp.gateway-address",
+        "xml": "<set>\n<parameter name=\"tmp.gateway-address\" value=\"`$tmp.return.generate.gateway-address`\" />\n",
+        "comments": "",
+        "x": 1954.27880859375,
+        "y": 2011.3657445907593,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2340601b.c0fbc",
+        "type": "call",
+        "name": "call generate-subnets-subnet-id",
+        "xml": "<call module=\"VNF-API\" rpc=\"generate-subnets-subnet-id\" mode=\"sync\" >\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1371.1437721252441,
+        "y": 2057.4728574752808,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "8589e64d.6294f8"
+            ]
+        ]
+    },
+    {
+        "id": "8589e64d.6294f8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1634.893756866455,
+        "y": 2057.7228479385376,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "8dabdae5.57ab58"
+            ]
+        ]
+    },
+    {
+        "id": "c6b0d6cd.d0a058",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1807.6506958007812,
+        "y": 1281.8093757629395,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "3d2b0a50.3a8f56",
+                "eea3a1e.e88116",
+                "1623f021.c2b9"
+            ]
+        ]
+    },
+    {
+        "id": "2a420bce.572e64",
+        "type": "set",
+        "name": "set tmp.dhcpEnabled.bolean=false",
+        "xml": "<set>\n<parameter name=\"tmp.dhcpEnabled.boolean\" value=\"false\" />\n",
+        "comments": "",
+        "x": 1848.3532104492188,
+        "y": 1831.9525032043457,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "797eb8ae.317378",
+        "type": "set",
+        "name": "set tmp.dhcpEnabled.boolean=true",
+        "xml": "<set>\n<parameter name=\"tmp.dhcpEnabled.boolean\" value=\"true\" />\n",
+        "comments": "",
+        "x": 1850.1350021362305,
+        "y": 1878.5675792694092,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9117f581.49cd58",
+        "type": "returnSuccess",
+        "name": "set execute_failure = true",
+        "xml": "<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n",
+        "comments": "",
+        "x": 2045.3016777038574,
+        "y": 2193.504596710205,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "8dabdae5.57ab58",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1834.5158653259277,
+        "y": 2104.3617782592773,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "9117f581.49cd58",
+                "a6fad29a.1da73",
+                "ca78be2.35c6c4"
+            ]
+        ]
+    },
+    {
+        "id": "a6fad29a.1da73",
+        "type": "set",
+        "name": "set i, j max + 1",
+        "xml": "<set>\n\t<parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />\n\t<parameter name='i' value='`$preload-data.network-topology-information.subnets_length + 1`' />",
+        "comments": "",
+        "x": 2009.0159034729004,
+        "y": 2104.361795425415,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "da60e97d.0ede68",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Error updating l3-network in AnAI with network-id = ' + $tmp.AnAI.l3network.network-id + ' - ' + $tmp.error-message + ' - ' + $tmp.rollback.error-message`\"/>",
+        "comments": "",
+        "x": 669.991397857666,
+        "y": 6073.796445846558,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "6c413597.876f3c",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "x": 347.87683486938477,
+        "y": 6179.523144721985,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3b6d36e2.4f5b5a",
+        "type": "set",
+        "name": "set tmp.l3networkUpdate = 1",
+        "xml": "<set>\n<parameter name='tmp.l3networkUpdate' value='1' />\n",
+        "comments": "",
+        "x": 2005.5675163269043,
+        "y": 2336.881452560425,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4ab836fd.f49d78",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1271.8109970092773,
+        "y": 4664.159008979797,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "b682bac.b292748"
+            ]
+        ]
+    },
+    {
+        "id": "80e7eee4.21ab2",
+        "type": "switchNode",
+        "name": "switch : tmp.l3networkUpdate = 1",
+        "xml": "<switch test=\"`$tmp.l3networkUpdate == 1`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 518.019718170166,
+        "y": 4664.275115013123,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "b8e556ef.dde5f8"
+            ]
+        ]
+    },
+    {
+        "id": "b8e556ef.dde5f8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 731.6863822937012,
+        "y": 4664.052649497986,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "e53a9499.9d4d28"
+            ]
+        ]
+    },
+    {
+        "id": "e53a9499.9d4d28",
+        "type": "save",
+        "name": "update AnAI - l3-network.orchestration-status",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"orchestration-status\" value=\"pending-update\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 986.7340812683105,
+        "y": 4664.179589271545,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "4ab836fd.f49d78",
+                "b3df03dc.e1fb8",
+                "40f41704.9cc688"
+            ]
+        ]
+    },
+    {
+        "id": "b682bac.b292748",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "outputs": 1,
+        "x": 1446.8769569396973,
+        "y": 4664.4650774002075,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "277621ff.2d16fe",
+                "2e3c7ba2.d21b54"
+            ]
+        ]
+    },
+    {
+        "id": "277621ff.2d16fe",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"An error occurred while updating l3-network.orchestration-status in AnAI\"/>",
+        "comments": "",
+        "x": 1694.02103805542,
+        "y": 4664.2675523757935,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ea36d758.4a9288",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 493.1831245422363,
+        "y": 2314.7121753692627,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "50318e70.387a9",
+                "6f14f693.d5a4e8"
+            ]
+        ]
+    },
+    {
+        "id": "70d1080b.b08868",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 459.1587104797363,
+        "y": 3271.960355758667,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "85ca29b3.1bb488",
+                "67e9507e.488ea"
+            ]
+        ]
+    },
+    {
+        "id": "7d587fe3.3f132",
+        "type": "save",
+        "name": "Rollback AnAI - l3-network.orchestration-status",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"orchestration-status\" value=\"`$tmp.AnAI.l3network.orchestration-status`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1280.6508178710938,
+        "y": 5976.617420196533,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "d11dd828.7802a8",
+                "81ba8fb7.9e498"
+            ]
+        ]
+    },
+    {
+        "id": "ae8d6ec6.39e21",
+        "type": "set",
+        "name": "set tmp.subnetUpdate = 1",
+        "xml": "<set>\n<parameter name=\"tmp.subnetUpdate\" value=\"1\" />\n",
+        "comments": "",
+        "x": 2313.293930053711,
+        "y": 828.4881381988525,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3eceba12.f5d206",
+        "type": "set",
+        "name": "set tmp.l3networkUpdate = 1",
+        "xml": "<set>\n<parameter name=\"tmp.l3networkUpdate\" value=\"1\" />\n",
+        "comments": "",
+        "x": 2005.543643951416,
+        "y": 1525.7023010253906,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9f8d35e4.e55ae8",
+        "type": "switchNode",
+        "name": "switch: tmp.start-address-match = 0",
+        "xml": "<switch test=\"`$tmp.start-address-match == 0`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 693.8650512695312,
+        "y": 1831.6666650772095,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "e08b1d05.35c67"
+            ]
+        ]
+    },
+    {
+        "id": "b390fee8.578a3",
+        "type": "set",
+        "name": "set tmp.start-address-match = 1",
+        "xml": "<set>\n<parameter name='tmp.start-address-match' value='1' />\n",
+        "comments": "",
+        "x": 1557.3650588989258,
+        "y": 1776.9166612625122,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "50318e70.387a9",
+        "type": "save",
+        "name": "delete relationship: vpn_binding",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\tAND related-to = vpn-binding\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 764.8055114746094,
+        "y": 2315.0001096725464,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "30ff2667.471baa"
+            ]
+        ]
+    },
+    {
+        "id": "c4f81359.003b8",
+        "type": "for",
+        "name": "for loop i - PRELOAD vpn-bindings",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$preload-data.network-topology-information.vpn-bindings_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 862.5317022535537,
+        "y": 2543.666758219401,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "7c3e0805.40af68"
+            ]
+        ]
+    },
+    {
+        "id": "7c3e0805.40af68",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1101.309480879042,
+        "y": 2543.9167601267495,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "678f44ab.ea50ac",
+                "1598e5df.565bea",
+                "36a2784d.cf59e8",
+                "236011f6.f5e4be"
+            ]
+        ]
+    },
+    {
+        "id": "d17665c3.e234d8",
+        "type": "save",
+        "name": "save relationship: vpn_bindings",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"vpn-binding\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"vpn-binding.vpn-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.vpn-binding-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1557.5039176940918,
+        "y": 2921.8888416290283,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "cc145aed.800d88",
+                "e2c85fda.7c9cd",
+                "49306a1.5c79894"
+            ]
+        ]
+    },
+    {
+        "id": "a47b8b14.1829d8",
+        "type": "switchNode",
+        "name": "switch ... PRELOAD vpn-bindings[]",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.vpn-bindings_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 862.9091453552246,
+        "y": 2500.248071670532,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "4801868f.077cf8"
+            ]
+        ]
+    },
+    {
+        "id": "4801868f.077cf8",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 1089.3535957336426,
+        "y": 2500.0258073806763,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "a35d2b.e1e2b2d8"
+            ]
+        ]
+    },
+    {
+        "id": "a35d2b.e1e2b2d8",
+        "type": "set",
+        "name": "set vpn-bindings[] = 0",
+        "xml": "<set>\n<parameter name=\"preload-data.network-topology-information.vpn-bindings_length\" value=\"0\" />\n",
+        "comments": "",
+        "x": 1277.90920469496,
+        "y": 2500.0258280436196,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6940ee9d.942ff",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1604.0438635084365,
+        "y": 2637.5160624186196,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "96fde5e9.4b32b8"
+            ]
+        ]
+    },
+    {
+        "id": "96fde5e9.4b32b8",
+        "type": "save",
+        "name": "query AnAI - vpn-bindings",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vpn-binding\" \n\t\tkey=\"vpn-binding.global-route-target = $preload-data.network-topology-information.vpn-bindings[$i].global-route-target\" \n\t\tpfx=\"tmp.AnAI.vpn-binding\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1808.5438596937393,
+        "y": 2637.266063372294,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "3c316751.c18568",
+                "f1e8d85f.221188",
+                "804fc820.1767b8"
+            ]
+        ]
+    },
+    {
+        "id": "3c316751.c18568",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2016.293897840712,
+        "y": 2684.766030947367,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "30521316.33fc5c"
+            ]
+        ]
+    },
+    {
+        "id": "f1e8d85f.221188",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2021.7939016554092,
+        "y": 2637.266029993693,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "30521316.33fc5c"
+            ]
+        ]
+    },
+    {
+        "id": "30521316.33fc5c",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "outputs": 1,
+        "x": 2169.293901655409,
+        "y": 2684.5160319010415,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "c83277b8.bca398",
+                "69801ad3.b07ae4"
+            ]
+        ]
+    },
+    {
+        "id": "c83277b8.bca398",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query vpn-bindings n AnAI where global-route-target = ' + $preload-data.network-topology-information.vpn-bindings[$i].global-route-target`\"/>",
+        "comments": "",
+        "x": 2410.3934423658584,
+        "y": 2684.265930811564,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "678f44ab.ea50ac",
+        "type": "switchNode",
+        "name": "switch: PRELOAD vpn-binding-id",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.vpn-bindings[$i].vpn-binding-id`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1346.7938673231338,
+        "y": 2591.7660023371377,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "49c99c5d.db6104"
+            ]
+        ]
+    },
+    {
+        "id": "49c99c5d.db6104",
+        "type": "other",
+        "name": "other",
+        "xml": "<outcome value='Other'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1567.2938749525283,
+        "y": 2591.516003290812,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "dc650ff6.6a37a"
+            ]
+        ]
+    },
+    {
+        "id": "dc650ff6.6a37a",
+        "type": "set",
+        "name": "set tmp.vpn-binding-id",
+        "xml": "<set>\n<parameter name=\"tmp.vpn-binding-id\" value=\"`$preload-data.network-topology-information.vpn-bindings[$i].vpn-binding-id`\" />\n",
+        "comments": "",
+        "x": 1762.7938749525283,
+        "y": 2591.5160042444863,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "804fc820.1767b8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2021.7107429504395,
+        "y": 2785.932608604431,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "d43a1da1.801f4"
+            ]
+        ]
+    },
+    {
+        "id": "d43a1da1.801f4",
+        "type": "set",
+        "name": "set tmp.vpn-binding-id",
+        "xml": "<set>\n<parameter name=\"tmp.vpn-binding-id\" value=\"`$tmp.AnAI.vpn-binding.vpn-id`\" />\n",
+        "comments": "",
+        "x": 2212.2107429504395,
+        "y": 2785.932608604431,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "cc145aed.800d88",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1817.5767936706543,
+        "y": 2921.3644285202026,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "bd84c069.9f407"
+            ]
+        ]
+    },
+    {
+        "id": "bd84c069.9f407",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "outputs": 1,
+        "x": 1974.4696731567383,
+        "y": 2921.000535964966,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "d0bc0241.16643",
+                "67a32bcf.a45a94",
+                "d62cda9.c225228"
+            ]
+        ]
+    },
+    {
+        "id": "d0bc0241.16643",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.vpn-binding-id`\"/>",
+        "comments": "",
+        "x": 2194.5692138671875,
+        "y": 2920.7504348754883,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d8a1ae30.7e241",
+        "type": "switchNode",
+        "name": "switch: tmp.vpn-binding-id != NULL",
+        "xml": "<switch test=\"`$tmp.vpn-binding-id != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1387.5438346862793,
+        "y": 2816.9325428009033,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "35e2cab.1320636"
+            ]
+        ]
+    },
+    {
+        "id": "35e2cab.1320636",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1609.7938385009766,
+        "y": 2816.9325428009033,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "d17665c3.e234d8"
+            ]
+        ]
+    },
+    {
+        "id": "9dcafbd2.180118",
+        "type": "switchNode",
+        "name": "switch ... PRELOAD network-policy[]",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.network-policy_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 815.2102928161621,
+        "y": 3497.8329753875732,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "9a549469.8cf168"
+            ]
+        ]
+    },
+    {
+        "id": "9a549469.8cf168",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 1044.65474319458,
+        "y": 3497.6107110977173,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "626b2924.e714b8"
+            ]
+        ]
+    },
+    {
+        "id": "626b2924.e714b8",
+        "type": "set",
+        "name": "set network-policy[] = 0",
+        "xml": "<set>\n<parameter name='preload-data.network-topology-information.network-policy_length' value='0' />\n",
+        "comments": "",
+        "x": 1239.2103521558975,
+        "y": 3497.6107317606607,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f4907fd3.a65",
+        "type": "for",
+        "name": "for loop i - PRELOAD network-policy",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$preload-data.network-topology-information.network-policy_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 814.567554473877,
+        "y": 3543.404366493225,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "c8c91878.a06a48"
+            ]
+        ]
+    },
+    {
+        "id": "74c62ee.c142ad",
+        "type": "save",
+        "name": "save relationship: network-policy",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"network-policy\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"network-policy.network-policy-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.network-policy.network-policy-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2095.9804649353027,
+        "y": 3742.5910663604736,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "961c1793.845838",
+                "cd9366f0.221d18",
+                "c3c189a0.4ccb58"
+            ]
+        ]
+    },
+    {
+        "id": "c8c91878.a06a48",
+        "type": "switchNode",
+        "name": "switch: PRELOAD network-policy-fqdn != NULL",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.network-policy[$i].network-policy-fqdn != NULL`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1173.0797521803115,
+        "y": 3543.5036207834873,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "b83dfff2.e2be5"
+            ]
+        ]
+    },
+    {
+        "id": "b83dfff2.e2be5",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1453.8297521803115,
+        "y": 3543.7536207834873,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "72405702.54bef8"
+            ]
+        ]
+    },
+    {
+        "id": "72405702.54bef8",
+        "type": "save",
+        "name": "query AnAI - network-policy",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"network-policy\" \n\t\tkey=\"network-policy.network-policy-fqdn = $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn\"  \n\t\tpfx=\"tmp.AnAI.network-policy\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1653.8297882080078,
+        "y": 3543.753540992737,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "9106f450.700d08",
+                "d7e04886.f0b1b8",
+                "38bde268.aac7fe"
+            ]
+        ]
+    },
+    {
+        "id": "9106f450.700d08",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1865.8298204210068,
+        "y": 3584.503463109335,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "8bf9d679.d0ee98"
+            ]
+        ]
+    },
+    {
+        "id": "d7e04886.f0b1b8",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1871.329824235704,
+        "y": 3544.0034621556606,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "8bf9d679.d0ee98"
+            ]
+        ]
+    },
+    {
+        "id": "8bf9d679.d0ee98",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "outputs": 1,
+        "x": 2020.829824235704,
+        "y": 3584.2534640630092,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "e5a86167.920af",
+                "338842a2.95efee"
+            ]
+        ]
+    },
+    {
+        "id": "e5a86167.920af",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`\"/>",
+        "comments": "",
+        "x": 2236.9293649461533,
+        "y": 3584.0033629735317,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "961c1793.845838",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2322.0533409118652,
+        "y": 3742.066653251648,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "9f43abef.bd4728"
+            ]
+        ]
+    },
+    {
+        "id": "9f43abef.bd4728",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "outputs": 1,
+        "x": 2462.946220397949,
+        "y": 3741.702760696411,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "d2d1e07.7cfa32",
+                "133667f2.eb77f8"
+            ]
+        ]
+    },
+    {
+        "id": "d2d1e07.7cfa32",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.network-policy.network-policy-id`\"/>",
+        "comments": "",
+        "x": 2694.0457611083984,
+        "y": 3741.4526596069336,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "85ca29b3.1bb488",
+        "type": "save",
+        "name": "delete relationship: network-policy",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t AND related-to = network-policy\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 747.372989654541,
+        "y": 3271.769684076309,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "e8183966.f88478"
+            ]
+        ]
+    },
+    {
+        "id": "754d89e8.1de998",
+        "type": "set",
+        "name": "set tmp.local.network-id",
+        "xml": "<set>\n<parameter name=\"tmp.local.network-id\" value=\"`$tmp.AnAI.l3network.network-id`\" />\n",
+        "comments": "",
+        "x": 1350.7499885559082,
+        "y": 2012.642957687378,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7ffa62de.33fecc",
+        "type": "comment",
+        "name": "query l3-network gets all the subnets and relationships for free",
+        "info": "",
+        "comments": "",
+        "x": 1084.7022819519043,
+        "y": 164.40476989746094,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "1598e5df.565bea",
+        "type": "switchNode",
+        "name": "switch: PRELOAD route-target != NULL",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.vpn-bindings[$i].global-route-target != ''`\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1368.130941602919,
+        "y": 2637.071567217509,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "6940ee9d.942ff"
+            ]
+        ]
+    },
+    {
+        "id": "34af06b5.07d33a",
+        "type": "set",
+        "name": "initialize tmp variables, x, tmp.error-message, tmp.l3networkUpdate, execute_failure",
+        "xml": "<set>\n\t<parameter name='x' value='0' />\n\t<parameter name='tmp.error-message' value='' />\n\t<parameter name='execute_failure' value='false' />\n\t<parameter name='tmp.l3networkUpdate' value='0' />",
+        "comments": "",
+        "x": 617.3453178405762,
+        "y": 428.8214406967163,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e9310489.7af568",
+        "type": "switchNode",
+        "name": "switch: AnAI-k == tmp.return.generate.gateway-address",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].gateway-address == $tmp.return.generate.gateway-address`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2155.7498893737793,
+        "y": 588.8214159011841,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "fd638c90.7772"
+            ]
+        ]
+    },
+    {
+        "id": "fd638c90.7772",
+        "type": "outcomeTrue",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2440.3215827941895,
+        "y": 588.2857179641724,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "8a95056c.8243a8"
+            ]
+        ]
+    },
+    {
+        "id": "8a95056c.8243a8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2585.0000495910645,
+        "y": 588.7222108840942,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "66b36d53.f585d4",
+                "9d0c9a84.7d8738"
+            ]
+        ]
+    },
+    {
+        "id": "1bcbd50a.81742b",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2045.7501602172852,
+        "y": 829.2222023010254,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "ae8d6ec6.39e21"
+            ]
+        ]
+    },
+    {
+        "id": "ca9a6174.d3216",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2045.0001602172852,
+        "y": 876.222204208374,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "ae8d6ec6.39e21"
+            ]
+        ]
+    },
+    {
+        "id": "292eb234.c8484e",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2044.5001602172852,
+        "y": 924.4722051620483,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "ae8d6ec6.39e21"
+            ]
+        ]
+    },
+    {
+        "id": "38bde268.aac7fe",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1870.595417022705,
+        "y": 3742.094934463501,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "74c62ee.c142ad"
+            ]
+        ]
+    },
+    {
+        "id": "36a2784d.cf59e8",
+        "type": "set",
+        "name": "unset tmp.vpn-binding-id",
+        "xml": "<set>\n<parameter name=\"tmp.vpn-binding-id\" value=\"\" />\n",
+        "comments": "",
+        "x": 1320.9166776869033,
+        "y": 2544.0001236597695,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "30ff2667.471baa",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 996.0833282470703,
+        "y": 2314.5833377838135,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "e69d9ede.c998c"
+            ]
+        ]
+    },
+    {
+        "id": "e69d9ede.c998c",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1155.8201026916504,
+        "y": 2315.2746753692627,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "7c0a1390.80c06c",
+                "2f44a8dd.3b2668"
+            ]
+        ]
+    },
+    {
+        "id": "7c0a1390.80c06c",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"An error occurred while deleting l3-network vpn-binding relationship from AnAI\"/>",
+        "comments": "",
+        "x": 1374.500072479248,
+        "y": 2315.5835123062134,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e8183966.f88478",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 971.5079612731934,
+        "y": 3271.3528950214386,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "fc52b15.447615"
+            ]
+        ]
+    },
+    {
+        "id": "fc52b15.447615",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1148.2447357177734,
+        "y": 3271.044232606888,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "18b5ade9.0299e2",
+                "8aeb103.23b59f"
+            ]
+        ]
+    },
+    {
+        "id": "18b5ade9.0299e2",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"An error occurred while deleting l3-network network-policy relationship from AnAI in preparation to regenerate the network-policy relationship from PRELOAD.\"/>",
+        "comments": "",
+        "x": 1372.2579612731934,
+        "y": 3271.3528950214386,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "28badb43.5ee5d4",
+        "type": "switchNode",
+        "name": "switch : tmp.l3network.status.updated = 1",
+        "xml": "<switch test=\"`$tmp.l3network.status.updated == 1`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 764.6190795898438,
+        "y": 5976.534414291382,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "d6b5f392.672a4"
+            ]
+        ]
+    },
+    {
+        "id": "d6b5f392.672a4",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1017.2857131958008,
+        "y": 5976.812002182007,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "7d587fe3.3f132"
+            ]
+        ]
+    },
+    {
+        "id": "7d8628e3.bfb0d8",
+        "type": "set",
+        "name": "set tmp.l3network.status.updated = 1",
+        "xml": "<set>\n<parameter name='tmp.l3network.status.updated' value='1' />\n",
+        "comments": "",
+        "x": 1527.988193511963,
+        "y": 4767.8097858428955,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b3df03dc.e1fb8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1275.9168281555176,
+        "y": 4768.083599090576,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "7d8628e3.bfb0d8"
+            ]
+        ]
+    },
+    {
+        "id": "f2214172.a1643",
+        "type": "for",
+        "name": "for loop z - tmp.AnAI.l3network.relationship-list.relationship[]",
+        "xml": "<for index=\"z\" start=\"0\" end=\"`$tmp.AnAI.l3network.relationship-list.relationship_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 824.3810005187988,
+        "y": 4983.3337116241455,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "40b39fed.993b8"
+            ]
+        ]
+    },
+    {
+        "id": "40b39fed.993b8",
+        "type": "switchNode",
+        "name": "switch: relationship[].related-to",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.relationship-list.relationship[$z].related-to`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 901.1309394836426,
+        "y": 5074.583716392517,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "445af20b.efd5dc",
+                "7e1ce913.d1ada8",
+                "63a30c32.764734"
+            ]
+        ]
+    },
+    {
+        "id": "445af20b.efd5dc",
+        "type": "other",
+        "name": "vpn-binding",
+        "xml": "<outcome value='vpn-binding'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1130.6309394836426,
+        "y": 5074.833716392517,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "3307d5fd.2423fa"
+            ]
+        ]
+    },
+    {
+        "id": "fb5a4fe8.b156b",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 491.38093185424805,
+        "y": 4982.8337116241455,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "f2214172.a1643",
+                "30cb9475.50352c",
+                "28badb43.5ee5d4",
+                "da60e97d.0ede68"
+            ]
+        ]
+    },
+    {
+        "id": "befdd7ed.7d6be8",
+        "type": "save",
+        "name": "Rollback to save relationship: vpn_binding",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"vpn-binding\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"vpn-binding.vpn-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1294.21431350708,
+        "y": 5133.833827018738,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "a9924139.29c5e",
+                "d4b57fb0.f24f4"
+            ]
+        ]
+    },
+    {
+        "id": "a9924139.29c5e",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1547.2871894836426,
+        "y": 5133.309413909912,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "3a4aef64.3150d"
+            ]
+        ]
+    },
+    {
+        "id": "3a4aef64.3150d",
+        "type": "set",
+        "name": "set: tmp.rollback.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.rollback.error-message\" value=\"`'An error occurred during rollback of l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`\"/>",
+        "comments": "",
+        "x": 1787.2795906066895,
+        "y": 5132.695249557495,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9cd29c09.984bd",
+        "type": "set",
+        "name": "set tmp.network-policy.updated = 1",
+        "xml": "<set>\n<parameter name='tmp.network-policy.updated' value='1' />\n",
+        "comments": "",
+        "x": 2567.38090133667,
+        "y": 3832.2736530303955,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e0cc74f6.cef2e8",
+        "type": "set",
+        "name": "set tmp.vpn-binding.updated = 1",
+        "xml": "<set>\n<parameter name='tmp.vpn-binding.updated' value='1' />\n",
+        "comments": "",
+        "x": 2044.4286079406738,
+        "y": 3063.916700363159,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "cd9366f0.221d18",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2328.63090133667,
+        "y": 3832.5236530303955,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "9cd29c09.984bd"
+            ]
+        ]
+    },
+    {
+        "id": "e2c85fda.7c9cd",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1820.6786003112793,
+        "y": 3063.916700363159,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "e0cc74f6.cef2e8"
+            ]
+        ]
+    },
+    {
+        "id": "7e1ce913.d1ada8",
+        "type": "other",
+        "name": "network-policy",
+        "xml": "<outcome value='network-policy'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1141.583209991455,
+        "y": 5223.654871940613,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "163697ef.53ddb8"
+            ]
+        ]
+    },
+    {
+        "id": "a1822be9.e1be18",
+        "type": "save",
+        "name": "Rollback to save relationship: network-policy",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"network-policy\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"network-policy.network-policy-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1309.16646194458,
+        "y": 5282.988368034363,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "cde96a1a.b38188",
+                "c5b6850b.08be08"
+            ]
+        ]
+    },
+    {
+        "id": "cde96a1a.b38188",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1569.2393379211426,
+        "y": 5282.463954925537,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "de78af5a.c6912"
+            ]
+        ]
+    },
+    {
+        "id": "de78af5a.c6912",
+        "type": "set",
+        "name": "tmp.rollback.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.rollback.error-message\" value=\"`'An error occurred during rollback of l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`\"/>",
+        "comments": "",
+        "x": 1785.2316627502441,
+        "y": 5282.849543571472,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "163697ef.53ddb8",
+        "type": "switchNode",
+        "name": "switch:  tmp.network-policy.updated == 1",
+        "xml": "<switch test=\"`$tmp.network-policy.updated == 1`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1412.9166984558105,
+        "y": 5223.655074119568,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "7a01074a.f70308"
+            ]
+        ]
+    },
+    {
+        "id": "3307d5fd.2423fa",
+        "type": "switchNode",
+        "name": "switch:  tmp.vpn-binding.updated == 1",
+        "xml": "<switch test=\"`$tmp.vpn-binding.updated == 1`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1372.916706085205,
+        "y": 5074.655116081238,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "462a22ce.3cdbbc"
+            ]
+        ]
+    },
+    {
+        "id": "462a22ce.3cdbbc",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1606.916706085205,
+        "y": 5074.655116081238,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "befdd7ed.7d6be8"
+            ]
+        ]
+    },
+    {
+        "id": "7a01074a.f70308",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1657.916706085205,
+        "y": 5223.655116081238,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "a1822be9.e1be18"
+            ]
+        ]
+    },
+    {
+        "id": "70aa977b.fe30d8",
+        "type": "for",
+        "name": "for loop i - tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1018.5593681335449,
+        "y": 5636.50013256073,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "e51d6a24.425c98"
+            ]
+        ]
+    },
+    {
+        "id": "56134ac0.df0084",
+        "type": "switchNode",
+        "name": "switch: tmp.subnetRollback[].type",
+        "xml": "<switch test=\"`$tmp.subnetRollback[$j].type`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1265.3325576782227,
+        "y": 5719.288496017456,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "cab697cd.251568",
+                "d0693ac4.d5ac18"
+            ]
+        ]
+    },
+    {
+        "id": "cab697cd.251568",
+        "type": "outcomeTrue",
+        "name": "delete",
+        "xml": "<outcome value='delete'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1504.0470352172852,
+        "y": 5719.137134552002,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "74fc00ec.dc13f"
+            ]
+        ]
+    },
+    {
+        "id": "d0693ac4.d5ac18",
+        "type": "outcomeTrue",
+        "name": "update",
+        "xml": "<outcome value='update'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1505.6183624267578,
+        "y": 5764.709531784058,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "32bdc1c1.96f2ee"
+            ]
+        ]
+    },
+    {
+        "id": "74fc00ec.dc13f",
+        "type": "save",
+        "name": "Rollback AnAI delete - l3network.subnets.subnet",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.subnetRollback[$j].subnet-id\" >\n<parameter name=\"orchestration-status\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`\" />\n\t\t",
+        "comments": "",
+        "outputs": 1,
+        "x": 1786.475700378418,
+        "y": 5718.710096359253,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "d50c1822.8cb098",
+                "ad551bbf.58fcc8"
+            ]
+        ]
+    },
+    {
+        "id": "76cbcff8.a7aa9",
+        "type": "outcomeTrue",
+        "name": "create",
+        "xml": "<outcome value='create'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1657.0249366760254,
+        "y": 5868.8378829956055,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "5e8f2f9e.a1436"
+            ]
+        ]
+    },
+    {
+        "id": "5e8f2f9e.a1436",
+        "type": "delete",
+        "name": "Rollback AnAI create -  l3-network.subnets.subnet",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.subnetRollback[$j].subnet-id\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1943.310344696045,
+        "y": 5867.815706253052,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "eb93aa28.0b07f8",
+                "c1cf86f2.493818"
+            ]
+        ]
+    },
+    {
+        "id": "30cb9475.50352c",
+        "type": "for",
+        "name": "for loop j - subnetRollback[]",
+        "xml": "<for index=\"j\" start=\"0\" end=\"`$x`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 728.845157623291,
+        "y": 5525.070099830627,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "dad835c6.d0c618"
+            ]
+        ]
+    },
+    {
+        "id": "e51d6a24.425c98",
+        "type": "switchNode",
+        "name": "switch: subnet-id  tmp.AnAI.l3network.subnets.subnet[] == tmp.subnetRollback[]",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-id == $tmp.subnetRollback[$j].subnet-id`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1521.5595359802246,
+        "y": 5636.785568237305,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "f63c8882.16f8c8"
+            ]
+        ]
+    },
+    {
+        "id": "f63c8882.16f8c8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1899.2739334106445,
+        "y": 5637.213930130005,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "7bc44cc3.686514"
+            ]
+        ]
+    },
+    {
+        "id": "32bdc1c1.96f2ee",
+        "type": "save",
+        "name": "rollback AnAI update - l3-network.subnets.subnet ",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t\tAND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$j].subnet-id\" >\n<parameter name=\"subnet-name\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name`\"/>\n<parameter name=\"gateway-address\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].gateway-address`\"/>\n<parameter name=\"cidr-mask\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].cidr-mask`\"/>\n<parameter name=\"dhcp-start\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-start`\"/>\n<parameter name=\"dhcp-end\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-end`\"/>\n<parameter name=\"dhcp-enabled\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-enabled`\"/>\n<parameter name=\"orchestration-status\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`\" />\n\t\t",
+        "comments": "",
+        "outputs": 1,
+        "x": 1788.274269104004,
+        "y": 5764.070308685303,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "1f2ad8bc.a55ac7",
+                "e61b880e.096858"
+            ]
+        ]
+    },
+    {
+        "id": "90858a29.37fc08",
+        "type": "set",
+        "name": "set tmp.subnetUpdate = 1",
+        "xml": "<set>\n<parameter name=\"tmp.subnetUpdate\" value=\"1\" />\n",
+        "comments": "",
+        "x": 2039.7500114440918,
+        "y": 467.30952644348145,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2e3c7ba2.d21b54",
+        "type": "returnSuccess",
+        "name": "set execute_failure = true",
+        "xml": "<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n",
+        "comments": "",
+        "x": 1703.5237846374512,
+        "y": 4707.786193847656,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "8ecdb1d7.aea0c",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value=\"true\">",
+        "outputs": 1,
+        "x": 626.4760551452637,
+        "y": 4866.821534156799,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "fb5a4fe8.b156b"
+            ]
+        ]
+    },
+    {
+        "id": "59c57e09.0c9bd",
+        "type": "switchNode",
+        "name": "switch: execute_failure",
+        "xml": "<switch test=\"`$execute_failure`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 420.53577041625977,
+        "y": 1611.0597400665283,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "41ca0932.f48da8"
+            ]
+        ]
+    },
+    {
+        "id": "41ca0932.f48da8",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 623.2500190734863,
+        "y": 1611.059762954712,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "99484323.6781e"
+            ]
+        ]
+    },
+    {
+        "id": "15930eb5.9d2c61",
+        "type": "switchNode",
+        "name": "switch: execute_failure",
+        "xml": "<switch test=\"`$execute_failure`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 822.3214836120605,
+        "y": 1218.0238513946533,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "13aa477e.313a59"
+            ]
+        ]
+    },
+    {
+        "id": "13aa477e.313a59",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1028.035732269287,
+        "y": 1218.023874282837,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "4fd8628d.a08a8c"
+            ]
+        ]
+    },
+    {
+        "id": "eea3a1e.e88116",
+        "type": "set",
+        "name": "set k, n max + 1",
+        "xml": "<set>\n\t<parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />\n\t<parameter name='n' value='`$preload-data.network-topology-information.subnets_length + 1`' />",
+        "comments": "",
+        "x": 2009.035930633545,
+        "y": 1281.0239906311035,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "fcfd2600.488c78",
+        "type": "set",
+        "name": "set k, n max + 1",
+        "xml": "<set>\n\t<parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />\n\t<parameter name='n' value='`$preload-data.network-topology-information.subnets_length + 1`' />",
+        "comments": "",
+        "x": 2495.2500495910645,
+        "y": 1026.416687965393,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f15dac05.a23f",
+        "type": "switchNode",
+        "name": "switch: execute_failure",
+        "xml": "<switch test=\"`$execute_failure`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 417.50002670288086,
+        "y": 2252.666706085205,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "aae89695.f77e48"
+            ]
+        ]
+    },
+    {
+        "id": "aae89695.f77e48",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 620.2142753601074,
+        "y": 2252.6667289733887,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "ea36d758.4a9288"
+            ]
+        ]
+    },
+    {
+        "id": "b16ab5f2.35a148",
+        "type": "switchNode",
+        "name": "switch: execute_failure",
+        "xml": "<switch test=\"`$execute_failure`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 419.91669845581055,
+        "y": 4867.2497272491455,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "8ecdb1d7.aea0c"
+            ]
+        ]
+    },
+    {
+        "id": "bb8ce764.d17888",
+        "type": "switchNode",
+        "name": "switch: execute_failure",
+        "xml": "<switch test=\"`$execute_failure`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 426.8452568054199,
+        "y": 4584.21407699585,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "4b1ed48a.23e81c"
+            ]
+        ]
+    },
+    {
+        "id": "4b1ed48a.23e81c",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 629.5595054626465,
+        "y": 4584.214099884033,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "80e7eee4.21ab2"
+            ]
+        ]
+    },
+    {
+        "id": "c10e73d.da8889",
+        "type": "switchNode",
+        "name": "switch: texecute_failure",
+        "xml": "<switch test=\"`$execute_failure`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 441.80556869506836,
+        "y": 3195.333309173584,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "452cff0a.34b71"
+            ]
+        ]
+    },
+    {
+        "id": "452cff0a.34b71",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 644.5198173522949,
+        "y": 3195.3333320617676,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "70d1080b.b08868"
+            ]
+        ]
+    },
+    {
+        "id": "6f14f693.d5a4e8",
+        "type": "switchNode",
+        "name": "switch: execute_failure",
+        "xml": "<switch test=\"`$execute_failure`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 748.750057220459,
+        "y": 2416.8331909179688,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "4f7b45c9.8320cc"
+            ]
+        ]
+    },
+    {
+        "id": "4f7b45c9.8320cc",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 951.4643058776855,
+        "y": 2416.8332138061523,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "1cdf3f9f.d8ad9"
+            ]
+        ]
+    },
+    {
+        "id": "1cdf3f9f.d8ad9",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 575.4166831970215,
+        "y": 2500.1666870117188,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "a47b8b14.1829d8",
+                "c4f81359.003b8"
+            ]
+        ]
+    },
+    {
+        "id": "2f44a8dd.3b2668",
+        "type": "returnSuccess",
+        "name": "set execute_failure = true",
+        "xml": "<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n",
+        "comments": "",
+        "x": 1379.3213157653809,
+        "y": 2357.7857484817505,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "69801ad3.b07ae4",
+        "type": "returnSuccess",
+        "name": "set execute_failure = true",
+        "xml": "<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n",
+        "comments": "",
+        "x": 2416.083438873291,
+        "y": 2728.4998531341553,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "236011f6.f5e4be",
+        "type": "switchNode",
+        "name": "switch: execute_failure",
+        "xml": "<switch test=\"`$execute_failure`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1326.7500114440918,
+        "y": 2731.1666736602783,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "a714abe2.f5c9e8"
+            ]
+        ]
+    },
+    {
+        "id": "a714abe2.f5c9e8",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1529.4642601013184,
+        "y": 2731.166696548462,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "d8a1ae30.7e241"
+            ]
+        ]
+    },
+    {
+        "id": "67a32bcf.a45a94",
+        "type": "returnSuccess",
+        "name": "set execute_failure = true",
+        "xml": "<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n",
+        "comments": "",
+        "x": 2201.1783409118652,
+        "y": 3006.547595977783,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "d62cda9.c225228",
+        "type": "set",
+        "name": "set i = max + 1",
+        "xml": "<set>\n  <parameter name=\"i\" value = \"`$preload-data.network-topology-information.vpn-bindings_length + 1`\"  />\n\n",
+        "comments": "",
+        "x": 2168.321300506592,
+        "y": 2963.452346801758,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "67e9507e.488ea",
+        "type": "switchNode",
+        "name": "switch: execute_failure",
+        "xml": "<switch test=\"`$execute_failure`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 722.6388664245605,
+        "y": 3411.7224493026733,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "24fa2743.255dc8"
+            ]
+        ]
+    },
+    {
+        "id": "24fa2743.255dc8",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 925.3531150817871,
+        "y": 3411.722472190857,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "abcc1298.8b121"
+            ]
+        ]
+    },
+    {
+        "id": "abcc1298.8b121",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 551.5277671813965,
+        "y": 3498.1664628982544,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "9dcafbd2.180118",
+                "f4907fd3.a65"
+            ]
+        ]
+    },
+    {
+        "id": "8aeb103.23b59f",
+        "type": "returnSuccess",
+        "name": "set execute_failure = true",
+        "xml": "<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n",
+        "comments": "",
+        "x": 1377.8608665466309,
+        "y": 3317.5153970718384,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "338842a2.95efee",
+        "type": "returnSuccess",
+        "name": "set execute_failure = true",
+        "xml": "<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n",
+        "comments": "",
+        "x": 2245.4166526794434,
+        "y": 3628.166793823242,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "133667f2.eb77f8",
+        "type": "returnSuccess",
+        "name": "set execute_failure = true",
+        "xml": "<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n",
+        "comments": "",
+        "x": 2704.7027473449707,
+        "y": 3785.4525051116943,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "9d0c9a84.7d8738",
+        "type": "set",
+        "name": "set tmp.subnetUpdate = 1",
+        "xml": "<set>\n<parameter name=\"tmp.subnetUpdate\" value=\"1\" />\n",
+        "comments": "",
+        "x": 2812.464214324951,
+        "y": 697.5952434539795,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9e7603e8.19f05",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2322.178722381592,
+        "y": 693.7380847930908,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "17af6854.693e78"
+            ]
+        ]
+    },
+    {
+        "id": "17af6854.693e78",
+        "type": "set",
+        "name": "set tmp.gateway-address",
+        "xml": "<set>\n<parameter name=\"tmp.gateway-address\" value=\"`$preload-data.network-topology-information.subnets[$n].gateway-address`\" />\n",
+        "comments": "",
+        "x": 2518.035655975342,
+        "y": 693.8809680938721,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "dad835c6.d0c618",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 728.4644050598145,
+        "y": 5585.832514762878,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "70aa977b.fe30d8",
+                "e3487ebb.a5939",
+                "153987c7.1a4048"
+            ]
+        ]
+    },
+    {
+        "id": "f6fe6422.4322c8",
+        "type": "set",
+        "name": "set: tmp.rollbck.match = 1",
+        "xml": "<set>\n\t<parameter name=\"tmp.rollback.match\" value=\"1\"/>",
+        "comments": "",
+        "x": 1242.6072006225586,
+        "y": 5804.118718147278,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7bc44cc3.686514",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 996.6070785522461,
+        "y": 5719.1187171936035,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "56134ac0.df0084",
+                "f6fe6422.4322c8"
+            ]
+        ]
+    },
+    {
+        "id": "e3487ebb.a5939",
+        "type": "switchNode",
+        "name": "switch: tmp.rollback.match == 0",
+        "xml": "<switch test=\"`$tmp.rollback.match == 0`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 970.8927803039551,
+        "y": 5869.405124664307,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "97427759.0023b8"
+            ]
+        ]
+    },
+    {
+        "id": "44553355.40997c",
+        "type": "switchNode",
+        "name": "switch: tmp.subnetRollback[].type",
+        "xml": "<switch test=\"`$tmp.subnetRollback[$j].type`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1423.607120513916,
+        "y": 5868.690284729004,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "76cbcff8.a7aa9"
+            ]
+        ]
+    },
+    {
+        "id": "d50c1822.8cb098",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2076.3214721679688,
+        "y": 5718.976065635681,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "abd6e5ca.0f7378"
+            ]
+        ]
+    },
+    {
+        "id": "abd6e5ca.0f7378",
+        "type": "set",
+        "name": "set: tmp.rollback.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.rollback.error-message\" value=\"`'failed to rollback the subnet.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`\"/>",
+        "comments": "",
+        "x": 2341.3138847351074,
+        "y": 5718.36167049408,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a1bcb891.4f80b8",
+        "type": "set",
+        "name": "set: tmp.rollback.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.rollback.error-message\" value=\"`'failed to rollback the subnet attributes update in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`\"/>",
+        "comments": "",
+        "x": 2344.1787719726562,
+        "y": 5763.833457946777,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "602727b5.9746c8",
+        "type": "set",
+        "name": "set: tmp.rollback.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.rollback.error-message\" value=\"`'failed to rollback to delete subnet from AnAI where subnet-id = ' + $tmp.subnetRollback[$j].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`\"/>",
+        "comments": "",
+        "x": 2462.321430206299,
+        "y": 5867.9756507873535,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1f2ad8bc.a55ac7",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2076.3212890625,
+        "y": 5764.11878490448,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "a1bcb891.4f80b8"
+            ]
+        ]
+    },
+    {
+        "id": "eb93aa28.0b07f8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2231.4643592834473,
+        "y": 5867.404291152954,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "602727b5.9746c8"
+            ]
+        ]
+    },
+    {
+        "id": "cdfeb5ff.d63b08",
+        "type": "set",
+        "name": "set: tmp.rollback.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.rollback.error-message\" value=\"`'failed to rollback l3network.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`\"/>",
+        "comments": "",
+        "x": 1794.464267730713,
+        "y": 5975.404790878296,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d11dd828.7802a8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1556.6071968078613,
+        "y": 5975.8334312438965,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "cdfeb5ff.d63b08"
+            ]
+        ]
+    },
+    {
+        "id": "d02a826d.205fd",
+        "type": "comment",
+        "name": "----  ROLLBACK STARTS HERE  ----",
+        "info": "",
+        "comments": "",
+        "x": 484.1071357727051,
+        "y": 4820.047375679016,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "ca78be2.35c6c4",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving new subnet in AnAI with subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`\"/>",
+        "comments": "",
+        "x": 2037.1785850524902,
+        "y": 2146.595244407654,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1623f021.c2b9",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while updating subnet status to pending-delete in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`\"/>",
+        "comments": "",
+        "x": 2030.3214073181152,
+        "y": 1323.7380981445312,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5d6b7d0.b989584",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while updating subnet attributes in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`\"/>",
+        "comments": "",
+        "x": 2519.464366912842,
+        "y": 1069.880968093872,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "153987c7.1a4048",
+        "type": "set",
+        "name": "set: tmp.rollbck.match = 0",
+        "xml": "<set>\n\t<parameter name=\"tmp.rollback.match\" value=\"0\"/>",
+        "comments": "",
+        "x": 950.8928108215332,
+        "y": 5586.119483947754,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "92778af8.befa68",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1643.0358047485352,
+        "y": 2149.9285049438477,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "8dabdae5.57ab58"
+            ]
+        ]
+    },
+    {
+        "id": "150db709.87fab9",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1612.1785697937012,
+        "y": 1325.3571643829346,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "c6b0d6cd.d0a058"
+            ]
+        ]
+    },
+    {
+        "id": "c9c8378e.07a4c8",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2135.8928031921387,
+        "y": 1069.928575515747,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "cd77a967.3c6308"
+            ]
+        ]
+    },
+    {
+        "id": "49306a1.5c79894",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1826.6071586608887,
+        "y": 2964.214220046997,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "bd84c069.9f407"
+            ]
+        ]
+    },
+    {
+        "id": "c3c189a0.4ccb58",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2330.6071586608887,
+        "y": 3788.071397781372,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "40f41704.9cc688",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1280.1071510314941,
+        "y": 4706.237885475159,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "b682bac.b292748"
+            ]
+        ]
+    },
+    {
+        "id": "10056ed4.c3d191",
+        "type": "switchNode",
+        "name": "switch: AnAI == INPUT - network-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.network-name == $network-topology-operation-input.network-request-information.network-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 482.1785697937012,
+        "y": 250.93650436401367,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "9ed8a698.ef15c8"
+            ]
+        ]
+    },
+    {
+        "id": "9ed8a698.ef15c8",
+        "type": "not-found",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 729.4285697937012,
+        "y": 250.94050121307373,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "669252c9.4ba83c"
+            ]
+        ]
+    },
+    {
+        "id": "669252c9.4ba83c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"`'The input network-name,' + network-topology-operation-input.network-request-information.network-name + ', does not match what is returned from AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`\" />",
+        "comments": "",
+        "x": 892.0673446655273,
+        "y": 250.82948875427246,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "b4cd1414.581b48",
+        "type": "switchNode",
+        "name": "switch: AnAI == INPUT - network-type",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.network-type == $network-topology-operation-input.network-request-information.network-type`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 475.892822265625,
+        "y": 294.22220611572266,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "4ad1dbfd.e57f94"
+            ]
+        ]
+    },
+    {
+        "id": "4ad1dbfd.e57f94",
+        "type": "not-found",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 730.142822265625,
+        "y": 294.2262029647827,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "3522894b.36b6e6"
+            ]
+        ]
+    },
+    {
+        "id": "3522894b.36b6e6",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"`'The input network-type,' + network-topology-operation-input.network-request-information.network-type + ', does not match what is returned from AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`\" />",
+        "comments": "",
+        "x": 892.7815971374512,
+        "y": 294.11519050598145,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "e456340c.466478",
+        "type": "switchNode",
+        "name": "switch: AnAI == PRELOAD - network-type",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.network-type == $preload-data.network-topology-information.network-topology-identifier.network-type`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 491.0357475280762,
+        "y": 384.22219944000244,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "9cd473e1.2c58a"
+            ]
+        ]
+    },
+    {
+        "id": "9cd473e1.2c58a",
+        "type": "not-found",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 747.2857475280762,
+        "y": 384.2261962890625,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "6893351b.74b03c"
+            ]
+        ]
+    },
+    {
+        "id": "6893351b.74b03c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"`'No preload network found with network-type = ' + $tmp.AnAI.l3network.network-type + ' in SDNC'`\" />",
+        "comments": "",
+        "x": 909.9245223999023,
+        "y": 384.11518383026123,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "97427759.0023b8",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1190.7143287658691,
+        "y": 5869.460375785828,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "44553355.40997c"
+            ]
+        ]
+    },
+    {
+        "id": "c5b6850b.08be08",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1577.4998817443848,
+        "y": 5322.082991600037,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "de78af5a.c6912"
+            ]
+        ]
+    },
+    {
+        "id": "d4b57fb0.f24f4",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1554.4998817443848,
+        "y": 5173.749495506287,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "3a4aef64.3150d"
+            ]
+        ]
+    },
+    {
+        "id": "ad551bbf.58fcc8",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2084.333240509033,
+        "y": 5673.749419212341,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "abd6e5ca.0f7378"
+            ]
+        ]
+    },
+    {
+        "id": "e61b880e.096858",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2083.9998664855957,
+        "y": 5809.082915306091,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "a1bcb891.4f80b8"
+            ]
+        ]
+    },
+    {
+        "id": "c1cf86f2.493818",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2239.999988555908,
+        "y": 5909.749419212341,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "602727b5.9746c8"
+            ]
+        ]
+    },
+    {
+        "id": "81ba8fb7.9e498",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1564.3332405090332,
+        "y": 6018.082915306091,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "cdfeb5ff.d63b08"
+            ]
+        ]
+    },
+    {
+        "id": "eca5ffa4.23d73",
+        "type": "switchNode",
+        "name": "switch ... tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 499.1785697937012,
+        "y": 470.35716438293457,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "48a25cc2.387cb4"
+            ]
+        ]
+    },
+    {
+        "id": "48a25cc2.387cb4",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 769.6230201721191,
+        "y": 470.1349000930786,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "8ba49ed0.9ad3c"
+            ]
+        ]
+    },
+    {
+        "id": "8ba49ed0.9ad3c",
+        "type": "set",
+        "name": "set tmp.AnAI.l3network.subnets.subnet[] = 0",
+        "xml": "<set>\n<parameter name=\"tmp.AnAI.l3network.subnets.subnet_length\" value=\"0\" />\n",
+        "comments": "",
+        "x": 1027.1786291334365,
+        "y": 470.134920756022,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "95ceb957.e7a948",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 463.0356864929199,
+        "y": 4019.404680252075,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "c3dd4c7f.8ca1e",
+                "af6b3c9b.97c77"
+            ]
+        ]
+    },
+    {
+        "id": "2d4379bf.6ca416",
+        "type": "switchNode",
+        "name": "switch ... PRELOAD route-table-reference[]",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.route-table-reference_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 837.8372917175293,
+        "y": 4245.277545928955,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "7688d6b7.3bce68"
+            ]
+        ]
+    },
+    {
+        "id": "7688d6b7.3bce68",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 1094.5317192077637,
+        "y": 4245.0550355911255,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "26a757db.f17628"
+            ]
+        ]
+    },
+    {
+        "id": "26a757db.f17628",
+        "type": "set",
+        "name": "set route-table-reference[] = 0",
+        "xml": "<set>\n<parameter name='preload-data.network-topology-information.route-table-reference_length' value='0' />\n",
+        "comments": "",
+        "x": 1309.087328169081,
+        "y": 4245.055056254068,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3fbe4ceb.b0e5e4",
+        "type": "for",
+        "name": "for loop i - PRELOAD route-table-reference",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$preload-data.network-topology-information.route-table-reference_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 837.4445457458496,
+        "y": 4290.848835945129,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "6b695bb.39906a4"
+            ]
+        ]
+    },
+    {
+        "id": "e761c57c.044408",
+        "type": "save",
+        "name": "save relationship: network-policy",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"route-table-reference\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"route-table-reference.route-table-reference-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.route-table-reference.route-table-reference-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2229.8574409484863,
+        "y": 4490.035390853882,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "5628f36a.55c77c",
+                "a92d1865.c2b648",
+                "3e5fe722.9f7198"
+            ]
+        ]
+    },
+    {
+        "id": "6b695bb.39906a4",
+        "type": "switchNode",
+        "name": "switch: PRELOAD route-table-reference-fqdn != NULL",
+        "xml": "<switch test=\"`$preload-data.network-topology-information.route-table-reference[$i].route-table-reference-fqdn != NULL`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1248.2067527770996,
+        "y": 4290.947957038879,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "8696f734.56d0f8"
+            ]
+        ]
+    },
+    {
+        "id": "8696f734.56d0f8",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1533.9567604064941,
+        "y": 4291.197957038879,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "c3ff1f7e.223f6"
+            ]
+        ]
+    },
+    {
+        "id": "c3ff1f7e.223f6",
+        "type": "save",
+        "name": "query AnAI - route-table-reference",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"route-table-reference\" \n\t\tkey=\"route-table-reference.route-table-reference-fqdn = $preload-data.network-topology-information.route-table-reference[$i].route-table-reference-fqdn\" \n\t\tpfx=\"tmp.AnAI.route-table-reference\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1760.7067642211914,
+        "y": 4291.197865486145,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "c5a368f6.5d1388",
+                "4611ee89.1d504",
+                "1c257c97.0acec3"
+            ]
+        ]
+    },
+    {
+        "id": "c5a368f6.5d1388",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1999.7067964341904,
+        "y": 4331.947787602743,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "c1256682.7b8998"
+            ]
+        ]
+    },
+    {
+        "id": "4611ee89.1d504",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2005.2068002488877,
+        "y": 4291.447786649069,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "c1256682.7b8998"
+            ]
+        ]
+    },
+    {
+        "id": "c1256682.7b8998",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "outputs": 1,
+        "x": 2154.7068002488877,
+        "y": 4331.697788556417,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "daaddd41.3513f",
+                "dabc25b1.2558b8"
+            ]
+        ]
+    },
+    {
+        "id": "daaddd41.3513f",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`\"/>",
+        "comments": "",
+        "x": 2370.806340959337,
+        "y": 4331.44768746694,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5628f36a.55c77c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2455.930316925049,
+        "y": 4489.510977745056,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "e1c99ca6.e00f4"
+            ]
+        ]
+    },
+    {
+        "id": "e1c99ca6.e00f4",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "false",
+        "outputs": 1,
+        "x": 2596.823196411133,
+        "y": 4489.147085189819,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "e0fe20d7.e6c28",
+                "6b785063.e94b4"
+            ]
+        ]
+    },
+    {
+        "id": "e0fe20d7.e6c28",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"`'An error occurred while saving l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.route-table-reference.route-table-reference-id`\"/>",
+        "comments": "",
+        "x": 2827.922737121582,
+        "y": 4488.896984100342,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c3dd4c7f.8ca1e",
+        "type": "save",
+        "name": "delete relationship: route-table-reference",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id \n\t\t AND related-to = route-table-reference\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 751.2499656677246,
+        "y": 4019.2140085697174,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "593b5e06.7f9d3"
+            ]
+        ]
+    },
+    {
+        "id": "1c257c97.0acec3",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2004.4723930358887,
+        "y": 4489.539258956909,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "e761c57c.044408"
+            ]
+        ]
+    },
+    {
+        "id": "593b5e06.7f9d3",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1044.384937286377,
+        "y": 4018.797219514847,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "72f7191.61f2fe8"
+            ]
+        ]
+    },
+    {
+        "id": "72f7191.61f2fe8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1221.121711730957,
+        "y": 4018.488557100296,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "35c5090a.a6a506",
+                "9f95b6ef.410b58"
+            ]
+        ]
+    },
+    {
+        "id": "35c5090a.a6a506",
+        "type": "set",
+        "name": "set: tmp.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.error-message\" value=\"An error occurred while deleting l3-network route-table-reference relationship from AnAI prior to regenerate the route-table-reference relationship from PRELOAD.\"/>",
+        "comments": "",
+        "x": 1445.134937286377,
+        "y": 4018.797219514847,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b1f0d10d.9422f",
+        "type": "set",
+        "name": "set tmp.route-table-reference.updated = 1",
+        "xml": "<set>\n<parameter name='tmp.route-table-reference.updated' value='1' />\n",
+        "comments": "",
+        "x": 2701.2578773498535,
+        "y": 4579.717977523804,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a92d1865.c2b648",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2462.5078773498535,
+        "y": 4579.967977523804,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "b1f0d10d.9422f"
+            ]
+        ]
+    },
+    {
+        "id": "bd2d9b6e.b5c1d8",
+        "type": "switchNode",
+        "name": "switch: texecute_failure",
+        "xml": "<switch test=\"`$execute_failure`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 441.6825370788574,
+        "y": 3942.777727127075,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "3e54549b.21c4cc"
+            ]
+        ]
+    },
+    {
+        "id": "3e54549b.21c4cc",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 648.3967933654785,
+        "y": 3942.777656555176,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "95ceb957.e7a948"
+            ]
+        ]
+    },
+    {
+        "id": "af6b3c9b.97c77",
+        "type": "switchNode",
+        "name": "switch: execute_failure",
+        "xml": "<switch test=\"`$execute_failure`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 726.5158424377441,
+        "y": 4159.1667737960815,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "96f82eb1.4c085"
+            ]
+        ]
+    },
+    {
+        "id": "96f82eb1.4c085",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 929.2300910949707,
+        "y": 4159.166796684265,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "ab2bfb98.61b8f8"
+            ]
+        ]
+    },
+    {
+        "id": "ab2bfb98.61b8f8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 555.4047431945801,
+        "y": 4245.610787391663,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "2d4379bf.6ca416",
+                "3fbe4ceb.b0e5e4"
+            ]
+        ]
+    },
+    {
+        "id": "9f95b6ef.410b58",
+        "type": "returnSuccess",
+        "name": "set execute_failure = true",
+        "xml": "<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n",
+        "comments": "",
+        "x": 1450.7378425598145,
+        "y": 4064.9597215652466,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "dabc25b1.2558b8",
+        "type": "returnSuccess",
+        "name": "set execute_failure = true",
+        "xml": "<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n",
+        "comments": "",
+        "x": 2379.293628692627,
+        "y": 4375.61111831665,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "6b785063.e94b4",
+        "type": "returnSuccess",
+        "name": "set execute_failure = true",
+        "xml": "<return status='success'>\n\t<parameter name='execute_failure' value='true' />\n",
+        "comments": "",
+        "x": 2838.5797233581543,
+        "y": 4532.8968296051025,
+        "z": "b24c83f7.abbc6",
+        "wires": []
+    },
+    {
+        "id": "3e5fe722.9f7198",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2464.4841346740723,
+        "y": 4535.51572227478,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "63a30c32.764734",
+        "type": "other",
+        "name": "route-table-reference",
+        "xml": "<outcome value='route-table-reference'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1136.785717010498,
+        "y": 5378.57142829895,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "cb6e6d5b.fb8fc"
+            ]
+        ]
+    },
+    {
+        "id": "e64e8959.22cce8",
+        "type": "save",
+        "name": "Rollback to save relationship: route-table-reference",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network:relationship-list\" \n\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"route-table-reference\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"route-table-reference.route-table-reference-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1304.368968963623,
+        "y": 5437.9049243927,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "daa92ca8.40a27",
+                "751ffeff.5a4d2"
+            ]
+        ]
+    },
+    {
+        "id": "daa92ca8.40a27",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1564.4418449401855,
+        "y": 5437.3805112838745,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "5bbb5aa9.dd0a84"
+            ]
+        ]
+    },
+    {
+        "id": "5bbb5aa9.dd0a84",
+        "type": "set",
+        "name": "tmp.rollback.error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"tmp.rollback.error-message\" value=\"`'An error occurred during rollback of l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`\"/>",
+        "comments": "",
+        "x": 1780.434169769287,
+        "y": 5437.76609992981,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "cb6e6d5b.fb8fc",
+        "type": "switchNode",
+        "name": "switch:  tmp.route-table-reference.updated == 1",
+        "xml": "<switch test=\"`$tmp.route-table-reference.updated == 1`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1408.1192054748535,
+        "y": 5378.571630477905,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "43ccda4d.49fa94"
+            ]
+        ]
+    },
+    {
+        "id": "43ccda4d.49fa94",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1653.119213104248,
+        "y": 5378.571672439575,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "e64e8959.22cce8"
+            ]
+        ]
+    },
+    {
+        "id": "751ffeff.5a4d2",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1572.7023887634277,
+        "y": 5476.999547958374,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "5bbb5aa9.dd0a84"
+            ]
+        ]
+    },
+    {
+        "id": "ef8f189e.13e928",
+        "type": "switchNode",
+        "name": "switch: l3subnet[k] == PRELOAD subnets[n] subnet-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-name == $preload-data.network-topology-information.subnets[$n].subnet-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1637.285717010498,
+        "y": 971.0714282989502,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "abf8f55e.ce71d8"
+            ]
+        ]
+    },
+    {
+        "id": "abf8f55e.ce71d8",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1937.2022247314453,
+        "y": 970.7936429977417,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "a89a0d2d.9ab2c"
+            ]
+        ]
+    },
+    {
+        "id": "a89a0d2d.9ab2c",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 2075.3434448242188,
+        "y": 971.1691417694092,
+        "z": "b24c83f7.abbc6",
+        "wires": [
+            [
+                "ae8d6ec6.39e21"
+            ]
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-delete.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-delete.json
new file mode 100644
index 0000000..d7bfdbd
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-delete.json
@@ -0,0 +1,424 @@
+[
+    {
+        "id": "9a85f16b.d93cd",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 1144,
+        "y": 667.2234153747559,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "97b09ce.37e6a6",
+                "3e48845d.1dee8c",
+                "7a75947e.dc19cc"
+            ]
+        ]
+    },
+    {
+        "id": "97b09ce.37e6a6",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1376.1924362182617,
+        "y": 716.0835227966309,
+        "z": "78f26cc2.346884",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3e48845d.1dee8c",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"networkId\" value=\"`$tmp.AnAI.l3network.network-id`\" />\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 1355.73929977417,
+        "y": 766.4465789794922,
+        "z": "78f26cc2.346884",
+        "wires": []
+    },
+    {
+        "id": "7a75947e.dc19cc",
+        "type": "delete",
+        "name": "delete AnAI - l3-network",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $tmp.AnAI.l3network.network-id\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1381.7546920776367,
+        "y": 668.0158958435059,
+        "z": "78f26cc2.346884",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6426b1cc.4346d",
+        "type": "switchNode",
+        "name": "switch: INPUT network-id",
+        "xml": "<switch test=\"`$network-topology-operation-input.network-request-information.network-id`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 262.6510238647461,
+        "y": 236.66913223266602,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "9751ef82.d9c77",
+                "bf204584.cdc938",
+                "1b3cf9d1.1a1ed6"
+            ]
+        ]
+    },
+    {
+        "id": "7698e3d.ad1ef1c",
+        "type": "switchNode",
+        "name": "switch: INPUT network-name",
+        "xml": "<switch test=\"`$network-topology-operation-input.network-request-information.network-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 700.6512680053711,
+        "y": 410.12323570251465,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "c217c4b3.588c08",
+                "5789e661.35e1f8"
+            ]
+        ]
+    },
+    {
+        "id": "28116afa.ade786",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value=\"DisconnectNetworkRequest requires  network-id or network-name \"/>",
+        "comments": "",
+        "x": 1085.651268005371,
+        "y": 409.12323570251465,
+        "z": "78f26cc2.346884",
+        "wires": []
+    },
+    {
+        "id": "28abb006.b3f25",
+        "type": "get-resource",
+        "name": "get AnAI - l3-network by network-name",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-name = $network-topology-operation-input.network-request-information.network-name\" \n\t\tpfx=\"tmp.AnAI.l3network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1168.1371955871582,
+        "y": 453.1300859451294,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "b4715be3.bcd0c8",
+                "5d878005.c41e6",
+                "89e70fc0.287a2"
+            ]
+        ]
+    },
+    {
+        "id": "6a7fc7cc.ee76d8",
+        "type": "get-resource",
+        "name": "get AnAI - l3-network by network-id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $network-topology-operation-input.network-request-information.network-id\" \n\t\tpfx=\"tmp.AnAI.l3network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 718.0410385131836,
+        "y": 237.04998779296875,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "690d7e4b.60bd3",
+                "b9af04da.c023e8",
+                "47d05050.d96c3"
+            ]
+        ]
+    },
+    {
+        "id": "690d7e4b.60bd3",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 947.9980697631836,
+        "y": 236.52020263671875,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "2ebce416.bdfaac"
+            ]
+        ]
+    },
+    {
+        "id": "2ebce416.bdfaac",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value=\"Failed to query AAI by network-id\"/>",
+        "comments": "",
+        "x": 1111.9981002807617,
+        "y": 236.51995849609375,
+        "z": "78f26cc2.346884",
+        "wires": []
+    },
+    {
+        "id": "b4715be3.bcd0c8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1404.1373176574707,
+        "y": 453.1300859451294,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "b96fe1bf.ab29e"
+            ]
+        ]
+    },
+    {
+        "id": "b96fe1bf.ab29e",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value=\"Failed to query AAI by network-name\"/>",
+        "comments": "",
+        "x": 1568.1373481750488,
+        "y": 453.1298418045044,
+        "z": "78f26cc2.346884",
+        "wires": []
+    },
+    {
+        "id": "1b3cf9d1.1a1ed6",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 496.7481002807617,
+        "y": 237.15521240234375,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "6a7fc7cc.ee76d8"
+            ]
+        ]
+    },
+    {
+        "id": "9751ef82.d9c77",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 496.6369857788086,
+        "y": 320.26629638671875,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "7698e3d.ad1ef1c"
+            ]
+        ]
+    },
+    {
+        "id": "bf204584.cdc938",
+        "type": "other",
+        "name": "0",
+        "xml": "<outcome value='0'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 496.7481002807617,
+        "y": 278.15521240234375,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "7698e3d.ad1ef1c"
+            ]
+        ]
+    },
+    {
+        "id": "c217c4b3.588c08",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 924.4981002807617,
+        "y": 409.65546226501465,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "28116afa.ade786"
+            ]
+        ]
+    },
+    {
+        "id": "5789e661.35e1f8",
+        "type": "other",
+        "name": "Other",
+        "xml": "<outcome value='Other'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 923.4981384277344,
+        "y": 453.655478477478,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "28abb006.b3f25"
+            ]
+        ]
+    },
+    {
+        "id": "b9af04da.c023e8",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 955.9980697631836,
+        "y": 281.22381591796875,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "59b0c026.b692a"
+            ]
+        ]
+    },
+    {
+        "id": "5d878005.c41e6",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1412.137134552002,
+        "y": 499.8349199295044,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "9de2063e.c41718"
+            ]
+        ]
+    },
+    {
+        "id": "59b0c026.b692a",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status=\"success\">\n\t<parameter name=\"networkId\" value=\"`$network-topology-operation-input.network-request-information.network-id` not found\" />\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 1122.9980697631836,
+        "y": 281.22381591796875,
+        "z": "78f26cc2.346884",
+        "wires": []
+    },
+    {
+        "id": "9de2063e.c41718",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status=\"success\">\n\t<parameter name=\"augmentation\" value=\"`$network-topology-operation-input.network-request-information.network-name` not found\" />\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 1574.137134552002,
+        "y": 499.8349199295044,
+        "z": "78f26cc2.346884",
+        "wires": []
+    },
+    {
+        "id": "47d05050.d96c3",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 952.3224105834961,
+        "y": 325.90545654296875,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "9a85f16b.d93cd"
+            ]
+        ]
+    },
+    {
+        "id": "89e70fc0.287a2",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1407.461353302002,
+        "y": 547.5165605545044,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "9a85f16b.d93cd"
+            ]
+        ]
+    },
+    {
+        "id": "bcbd8a.ad7d6278",
+        "type": "method",
+        "name": "method network-topology-delete",
+        "xml": "<method rpc=\"network-topology-delete\" mode=\"sync\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 212.60881805419922,
+        "y": 109.03170585632324,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "acd387f9.1c0658"
+            ]
+        ]
+    },
+    {
+        "id": "eaea2109.ba78e",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 299.2754669189453,
+        "y": 47.142822265625,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "bcbd8a.ad7d6278"
+            ]
+        ]
+    },
+    {
+        "id": "93281b43.a28d38",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 135.1643524169922,
+        "y": 47.142822265625,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "eaea2109.ba78e"
+            ]
+        ]
+    },
+    {
+        "id": "acd387f9.1c0658",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 171.02154541015625,
+        "y": 172.30953216552734,
+        "z": "78f26cc2.346884",
+        "wires": [
+            [
+                "6426b1cc.4346d"
+            ]
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-operation.json
new file mode 100644
index 0000000..b48d882
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"cc8952bd.01144","type":"switchNode","name":"switch: request-action","xml":"<switch test=\"`$network-topology-operation-input.request-information.request-action`\">\n","comments":"","outputs":1,"x":372.8571472167969,"y":208.63279914855957,"z":"cf03aec.9922b5","wires":[["4c41531b.7bfc9c","e130a2cb.76694","77db12a6.c13bdc"]]},{"id":"4c41531b.7bfc9c","type":"other","name":"NetworkActivateRequest","xml":"<outcome value='NetworkActivateRequest'>","comments":"","outputs":1,"x":633.4604797363281,"y":207.8074131011963,"z":"cf03aec.9922b5","wires":[["3959ce4f.944012"]]},{"id":"86daa5ed.972558","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":155.53559112548828,"y":122.77776908874512,"z":"cf03aec.9922b5","wires":[["cc8952bd.01144"]]},{"id":"7d290301.28b16c","type":"method","name":"method network-topology-operation","xml":"<method rpc=\"network-topology-operation\" mode=\"sync\">","comments":"","outputs":1,"x":217.09117889404297,"y":71.33332443237305,"z":"cf03aec.9922b5","wires":[["86daa5ed.972558"]]},{"id":"c478d676.6453f8","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":329.5356140136719,"y":20,"z":"cf03aec.9922b5","wires":[["7d290301.28b16c"]]},{"id":"c07c1301.4dfef","type":"dgstart","name":"DGSTART","outputs":1,"x":128.42449951171875,"y":20,"z":"cf03aec.9922b5","wires":[["c478d676.6453f8"]]},{"id":"fe0a67ff.83d1e8","type":"other","name":"changeassign","xml":"<outcome value='changeassign'>","comments":"","outputs":1,"x":1297.1108665466309,"y":703.3849267959595,"z":"cf03aec.9922b5","wires":[["588586d4.12fbc8"]]},{"id":"8c7a9569.d57008","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1276.9678535461426,"y":618.9527864456177,"z":"cf03aec.9922b5","wires":[["ead75f3a.51643"]]},{"id":"ead75f3a.51643","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='svc-action is not found'/>","comments":"","x":1432.3011054992676,"y":618.8099336624146,"z":"cf03aec.9922b5","wires":[]},{"id":"535fa224.5d6a7c","type":"other","name":"rollback","xml":"<outcome value='rollback'>","comments":"","outputs":1,"x":1277.3290367126465,"y":764.3809337615967,"z":"cf03aec.9922b5","wires":[["ae5d1f41.9b158"]]},{"id":"e130a2cb.76694","type":"other","name":"DisconnectNetworkRequest","xml":"<outcome value='DisconnectNetworkRequest'>","comments":"","outputs":1,"x":635.4273681640625,"y":804.8360719680786,"z":"cf03aec.9922b5","wires":[["36833426.9875fc"]]},{"id":"36833426.9875fc","type":"switchNode","name":"switch: svc-action","xml":"<switch test=\"`$network-topology-operation-input.sdnc-request-header.svc-action`\">\n<!--\nleaf svc-action { \n\ttype enumeration { \n\t\tenum \"reserve\";\n\t\tenum \"assign\";\n\t\tenum \"activate\";  // equal to commit\n\t\tenum \"delete\";\t  // equal to commit\n\t\tenum \"changeassign\";\n\t\tenum \"changedelete\";\n\t\tenum \"rollback\";\n\t}\n}\n-->\n\n","comments":"","outputs":1,"x":1054.5842361450195,"y":804.6429119110107,"z":"cf03aec.9922b5","wires":[["9ce5608d.d74db","4585d7c1.f39d38","535fa224.5d6a7c"]]},{"id":"9ce5608d.d74db","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1274.7564392089844,"y":845.8952465057373,"z":"cf03aec.9922b5","wires":[["69ab51be.f77ab"]]},{"id":"4585d7c1.f39d38","type":"other","name":"delete","xml":"<outcome value='delete'>","comments":"","outputs":1,"x":1274.5265579223633,"y":805.2641544342041,"z":"cf03aec.9922b5","wires":[["6661afbb.fb47d"]]},{"id":"77db12a6.c13bdc","type":"other","name":"outcome: Other","xml":"<outcome value=\"Other\">\n\n","outputs":1,"x":590.23779296875,"y":973.148886680603,"z":"cf03aec.9922b5","wires":[["64c62b7b.a65014"]]},{"id":"64c62b7b.a65014","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='request-action is not found'/>","comments":"","x":778.6143264770508,"y":972.8133153915405,"z":"cf03aec.9922b5","wires":[]},{"id":"aabe8f81.43c7f","type":"switchNode","name":"switch: svc-action","xml":"<switch test=\"`$network-topology-operation-input.sdnc-request-header.svc-action`\">\n<!--\nleaf svc-action { \n\ttype enumeration { \n\t\tenum \"reserve\";\n\t\tenum \"assign\";\n\t\tenum \"activate\";  // equal to commit\n\t\tenum \"delete\";\t  // equal to commit\n\t\tenum \"changeassign\";\n\t\tenum \"changedelete\";\n\t\tenum \"rollback\";\n\t}\n}\n-->\n\n","comments":"","outputs":1,"x":1064.2219123840332,"y":619.3849020004272,"z":"cf03aec.9922b5","wires":[["8c7a9569.d57008","6e355467.bd533c","fe0a67ff.83d1e8","535fa224.5d6a7c"]]},{"id":"6e355467.bd533c","type":"other","name":"assign","xml":"<outcome value='assign'>","comments":"","outputs":1,"x":1275.9996490478516,"y":660.6071405410767,"z":"cf03aec.9922b5","wires":[["134ac69f.15aa29"]]},{"id":"134ac69f.15aa29","type":"call","name":"call network-topology-assign","xml":"<call module=\"VNF-API\" rpc=\"network-topology-assign\" mode=\"sync\" >\n","comments":"","outputs":1,"x":1480.4442710876465,"y":660.2737684249878,"z":"cf03aec.9922b5","wires":[[]]},{"id":"588586d4.12fbc8","type":"call","name":"call network-topology-changeassign","xml":"<call module=\"VNF-API\" rpc=\"network-topology-changeassign\" mode=\"sync\" >\n","comments":"","outputs":1,"x":1543.7774620056152,"y":703.2738027572632,"z":"cf03aec.9922b5","wires":[[]]},{"id":"6661afbb.fb47d","type":"call","name":"call network-topology-delete","xml":"<call module=\"VNF-API\" rpc=\"network-topology-delete\" mode=\"sync\" >\n","comments":"","outputs":1,"x":1488.4402618408203,"y":805.0198135375977,"z":"cf03aec.9922b5","wires":[[]]},{"id":"ae5d1f41.9b158","type":"call","name":"call network-topology-rollback","xml":"<call module=\"VNF-API\" rpc=\"network-topology-rollback\" mode=\"sync\" >\n","comments":"","outputs":1,"x":1495.1069526672363,"y":764.2698259353638,"z":"cf03aec.9922b5","wires":[[]]},{"id":"69ab51be.f77ab","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='svc-action is not found'/>","comments":"","x":1441.6623344421387,"y":846.2261772155762,"z":"cf03aec.9922b5","wires":[]},{"id":"657de4c7.50482c","type":"switchNode","name":"switch: INPUT tenant","xml":"<switch test=\"`$network-topology-operation-input.network-request-information.tenant`\">","comments":"","outputs":1,"x":1074.3537902832031,"y":531.2381191253662,"z":"cf03aec.9922b5","wires":[["ccce555e.a5d1e8"]]},{"id":"8453258.a70d4d8","type":"switchNode","name":"switch: INPUT aic-cloud-region","xml":"<switch test=\"`$network-topology-operation-input.network-request-information.aic-cloud-region`\">","comments":"","outputs":1,"x":1105.0916442871094,"y":488.1388759613037,"z":"cf03aec.9922b5","wires":[["4b54d3a.984b22c"]]},{"id":"4b54d3a.984b22c","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1325.0916442871094,"y":488.1388759613037,"z":"cf03aec.9922b5","wires":[["57afe76d.be0978"]]},{"id":"57afe76d.be0978","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value='aic-cloud-region is required.'/>","comments":"","x":1483.0916442871094,"y":488.1388759613037,"z":"cf03aec.9922b5","wires":[]},{"id":"7528b8c6.f78868","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value='tenant is required.'/>","comments":"","x":1422.0916442871094,"y":531.1388759613037,"z":"cf03aec.9922b5","wires":[]},{"id":"ccce555e.a5d1e8","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1263.0916442871094,"y":531.1388759613037,"z":"cf03aec.9922b5","wires":[["7528b8c6.f78868"]]},{"id":"52e3c7a2.607c48","type":"switchNode","name":"switch: INPUT service-id","xml":"<switch test=\"`$network-topology-operation-input.service-information.service-id`\">","comments":"","outputs":1,"x":1084.4687805175781,"y":575.250020980835,"z":"cf03aec.9922b5","wires":[["bc9b4f8e.0fd5f"]]},{"id":"bc9b4f8e.0fd5f","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1281.4687805175781,"y":575.250020980835,"z":"cf03aec.9922b5","wires":[["dcd4ec18.41266"]]},{"id":"dcd4ec18.41266","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value='service-id is required.'/>","comments":"","x":1439.4687805175781,"y":575.250020980835,"z":"cf03aec.9922b5","wires":[]},{"id":"3959ce4f.944012","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":851.6071510314941,"y":207.21612358093262,"z":"cf03aec.9922b5","wires":[["8453258.a70d4d8","657de4c7.50482c","52e3c7a2.607c48","aabe8f81.43c7f","c6819f24.6143f","8b92cff3.8fb5c","d58471ed.067e"]]},{"id":"c6819f24.6143f","type":"switchNode","name":"switch test: INPUT network-name","xml":"<switch test=\"`$network-topology-operation-input.network-request-information.network-name`\">","comments":"","outputs":1,"x":1108.9029693603516,"y":208.10726642608643,"z":"cf03aec.9922b5","wires":[["e79fabb5.3c1d58","68bd0f13.5871b"]]},{"id":"e79fabb5.3c1d58","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1334.3473663330078,"y":208.10725212097168,"z":"cf03aec.9922b5","wires":[["e298897.825df78"]]},{"id":"68bd0f13.5871b","type":"other","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1334.1410446166992,"y":253.7580966949463,"z":"cf03aec.9922b5","wires":[["1123eaed.206925"]]},{"id":"e298897.825df78","type":"switchNode","name":"switch test: PRELOAD network-name","xml":"<switch test=\"`$preload-data.network-topology-information.network-topology-identifier.network-name`\">","comments":"","outputs":1,"x":1571.9707984924316,"y":208.3418140411377,"z":"cf03aec.9922b5","wires":[["75edc30c.2e5d1c","41291a34.1acd64"]]},{"id":"1123eaed.206925","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='network-name is required from input'/>","comments":"","x":1493.4188232421875,"y":253.6747341156006,"z":"cf03aec.9922b5","wires":[]},{"id":"75edc30c.2e5d1c","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1827.7918701171875,"y":207.77392864227295,"z":"cf03aec.9922b5","wires":[["b37eb3cf.6ca5f"]]},{"id":"41291a34.1acd64","type":"other","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1828.2521896362305,"y":249.3135986328125,"z":"cf03aec.9922b5","wires":[["de0d4c5.4679eb"]]},{"id":"b37eb3cf.6ca5f","type":"switchNode","name":"switch: network-name INPUT == PRELOAD","xml":"<switch test=\"`$network-topology-operation-input.network-request-information.network-name == $preload-data.network-topology-information.network-topology-identifier.network-name`\">","comments":"","outputs":1,"x":2091.0494232177734,"y":208.468768119812,"z":"cf03aec.9922b5","wires":[["144a5081.bac47f"]]},{"id":"de0d4c5.4679eb","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='network-name not found from preload-data'/>","comments":"","x":1989.7521286010742,"y":249.34133529663086,"z":"cf03aec.9922b5","wires":[]},{"id":"144a5081.bac47f","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2357.4586448669434,"y":207.77416324615479,"z":"cf03aec.9922b5","wires":[["86a746fe.7491e8"]]},{"id":"86a746fe.7491e8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value=\"`'No preload-data found to match input network-name = ' + $network-topology-operation-input.network-request-information.network-name`\"/>","comments":"","x":2525.014190673828,"y":207.10725212097168,"z":"cf03aec.9922b5","wires":[]},{"id":"8b92cff3.8fb5c","type":"switchNode","name":"switch test: INPUT network-type","xml":"<switch test=\"`$network-topology-operation-input.network-request-information.network-type`\">","comments":"","outputs":1,"x":1110.0000610351562,"y":328.6327838897705,"z":"cf03aec.9922b5","wires":[["eb995458.ad64c8","eb85171a.141aa8"]]},{"id":"eb995458.ad64c8","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1335.4444580078125,"y":328.63276958465576,"z":"cf03aec.9922b5","wires":[["d4b33de8.c3994"]]},{"id":"eb85171a.141aa8","type":"other","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1335.238136291504,"y":374.28361415863037,"z":"cf03aec.9922b5","wires":[["510d46b5.7c8cc8"]]},{"id":"d4b33de8.c3994","type":"switchNode","name":"switch test: PRELOAD network-type","xml":"<switch test=\"`$preload-data.network-topology-information.network-topology-identifier.network-type`\">","comments":"","outputs":1,"x":1573.0678901672363,"y":328.8673315048218,"z":"cf03aec.9922b5","wires":[["79e007d7.cb0018","357acb99.e99cb4"]]},{"id":"510d46b5.7c8cc8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='network-type is required from input'/>","comments":"","x":1494.5159149169922,"y":374.20025157928467,"z":"cf03aec.9922b5","wires":[]},{"id":"79e007d7.cb0018","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1828.8889617919922,"y":328.29944610595703,"z":"cf03aec.9922b5","wires":[["be09f603.e76d88"]]},{"id":"357acb99.e99cb4","type":"other","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1829.3492813110352,"y":369.8391160964966,"z":"cf03aec.9922b5","wires":[["4d8c7f82.8fff1"]]},{"id":"be09f603.e76d88","type":"switchNode","name":"switch: network-type INPUT == PRELOAD","xml":"<switch test=\"`$network-topology-operation-input.network-request-information.network-type == $preload-data.network-topology-information.network-topology-identifier.network-type`\">","comments":"","outputs":1,"x":2092.146514892578,"y":328.9942855834961,"z":"cf03aec.9922b5","wires":[["299c8dd.b652c72"]]},{"id":"4d8c7f82.8fff1","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='network-type not found from preload-data'/>","comments":"","x":1990.849220275879,"y":369.86685276031494,"z":"cf03aec.9922b5","wires":[]},{"id":"299c8dd.b652c72","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":2358.555736541748,"y":328.29968070983887,"z":"cf03aec.9922b5","wires":[["da9775b6.375548"]]},{"id":"da9775b6.375548","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value=\"`'No preload-data found to match input network-type = ' + $network-topology-operation-input.network-request-information.network-type`\"/>","comments":"","x":2526.111282348633,"y":327.63276958465576,"z":"cf03aec.9922b5","wires":[]},{"id":"d58471ed.067e","type":"switchNode","name":"switch: INPUT service-instance-id","xml":"<switch test=\"`$network-topology-operation-input.service-information.service-instance-id`\">","comments":"","outputs":1,"x":1112.8571472167969,"y":437.1428699493408,"z":"cf03aec.9922b5","wires":[["26657535.6feeaa"]]},{"id":"26657535.6feeaa","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1332.8571472167969,"y":437.1428699493408,"z":"cf03aec.9922b5","wires":[["3eb7a225.48f2be"]]},{"id":"3eb7a225.48f2be","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value='service-instance-id is required.'/>","comments":"","x":1490.8571472167969,"y":437.1428699493408,"z":"cf03aec.9922b5","wires":[]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-rollback.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-rollback.json
new file mode 100644
index 0000000..60c4b0f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_network-topology-rollback.json
@@ -0,0 +1,575 @@
+[
+    {
+        "id": "ed874a4d.fd8fa8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 205.71429443359375,
+        "y": 164.2857208251953,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "24d7124b.287cae",
+                "6f5f0903.600f88",
+                "56187c49.06fa54",
+                "34867ac.18cfc86"
+            ]
+        ]
+    },
+    {
+        "id": "be439a72.253938",
+        "type": "not-found",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 688.7422180175781,
+        "y": 164.44003295898438,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "b0ac9e35.109ef"
+            ]
+        ]
+    },
+    {
+        "id": "b0ac9e35.109ef",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"`'l3-network not found in AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`\" />",
+        "comments": "",
+        "x": 851.9366149902344,
+        "y": 164.55125427246094,
+        "z": "16a5084d.6904d8",
+        "wires": []
+    },
+    {
+        "id": "24d7124b.287cae",
+        "type": "switchNode",
+        "name": "switch: l3-network.orchestration_status",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.orchestration-status`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 463.72552490234375,
+        "y": 272.89379501342773,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "2c75bd76.80f6d2",
+                "4c028d7d.749944",
+                "ba62e3d9.12a4"
+            ]
+        ]
+    },
+    {
+        "id": "2c75bd76.80f6d2",
+        "type": "other",
+        "name": "pending-create",
+        "xml": "<outcome value='pending-create'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 747.4795608520508,
+        "y": 273.5526599884033,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "d89faa07.866668"
+            ]
+        ]
+    },
+    {
+        "id": "ba62e3d9.12a4",
+        "type": "other",
+        "name": "pending-update",
+        "xml": "<outcome value='pending-update'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 750.0867538452148,
+        "y": 383.1594228744507,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "924236c2.8eb018"
+            ]
+        ]
+    },
+    {
+        "id": "4c028d7d.749944",
+        "type": "other",
+        "name": "pending-delete",
+        "xml": "<outcome value='pending-delete'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 747.2295074462891,
+        "y": 328.2672004699707,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "d63de22c.d6ac3"
+            ]
+        ]
+    },
+    {
+        "id": "d63de22c.d6ac3",
+        "type": "save",
+        "name": "update AnAI:  l3-network.orchestration-status",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $network-topology-operation-input.network-request-information.network-id\" >\n<parameter name=\"orchestration-status\" value=\"active\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1029.535385131836,
+        "y": 328.9064884185791,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "30ace356.607a3c"
+            ]
+        ]
+    },
+    {
+        "id": "30ace356.607a3c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1282.0407447814941,
+        "y": 328.19105052948,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "65d58e38.14597"
+            ]
+        ]
+    },
+    {
+        "id": "65d58e38.14597",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Failed to update l3-netework orchestration-status in AnAI for network-id = ' + $network-topology-operation-input.network-request-information.network-id`\"/>",
+        "comments": "",
+        "x": 1440.5405006408691,
+        "y": 327.69105052948,
+        "z": "16a5084d.6904d8",
+        "wires": []
+    },
+    {
+        "id": "56187c49.06fa54",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status=\"success\">\n\t<parameter name=\"networkId\" value=\"`$network-topology-operation-input.network-request-information.network-id`\" />\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 387.8685607910156,
+        "y": 810.4369297027588,
+        "z": "16a5084d.6904d8",
+        "wires": []
+    },
+    {
+        "id": "6f5f0903.600f88",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 411.8686218261719,
+        "y": 763.4369297027588,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "924236c2.8eb018",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 934.9215087890625,
+        "y": 383.1720905303955,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "ddbaf6a3.157138",
+                "b17a76ed.0f85b8",
+                "601ab575.5ab91c"
+            ]
+        ]
+    },
+    {
+        "id": "ddbaf6a3.157138",
+        "type": "for",
+        "name": "for loop i - tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1257.5074462890625,
+        "y": 437.3375072479248,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "3a9492ae.aa26ae"
+            ]
+        ]
+    },
+    {
+        "id": "3a9492ae.aa26ae",
+        "type": "switchNode",
+        "name": "switch : l3subnet.orchestration-status",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1308.7061004638672,
+        "y": 534.154951095581,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "dcb0b0f5.3edc8",
+                "3c0ecb2f.7fa144"
+            ]
+        ]
+    },
+    {
+        "id": "dcb0b0f5.3edc8",
+        "type": "other",
+        "name": "pending-create",
+        "xml": "<outcome value='pending-create'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1579.3409118652344,
+        "y": 533.6986665725708,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "4b483612.3e69e8"
+            ]
+        ]
+    },
+    {
+        "id": "3c0ecb2f.7fa144",
+        "type": "other",
+        "name": "pending-delete",
+        "xml": "<outcome value='pending-delete'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1581.5910339355469,
+        "y": 580.4486694335938,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "262c9783.799c48"
+            ]
+        ]
+    },
+    {
+        "id": "ce707857.7d5938",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1483.0867156982422,
+        "y": 644.0207948684692,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "105e0afc.2b75f5"
+            ]
+        ]
+    },
+    {
+        "id": "105e0afc.2b75f5",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Failed to rollback l3-netework orchestration-status in AnAI for network-id = ' + $network-topology-operation-input.network-request-information.network-id`\"/>",
+        "comments": "",
+        "x": 1648.9435691833496,
+        "y": 644.0206813812256,
+        "z": "16a5084d.6904d8",
+        "wires": []
+    },
+    {
+        "id": "7560895d.bec338",
+        "type": "method",
+        "name": "method network-topology-rollback",
+        "xml": "<method rpc=\"network-topology-rollback\" mode=\"sync\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 254.35324096679688,
+        "y": 104.81352615356445,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "ed874a4d.fd8fa8"
+            ]
+        ]
+    },
+    {
+        "id": "22f704b1.4b00ac",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 308.79766845703125,
+        "y": 48.480201721191406,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "7560895d.bec338"
+            ]
+        ]
+    },
+    {
+        "id": "14e828b3.f5f857",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 144.68655395507812,
+        "y": 48.480201721191406,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "22f704b1.4b00ac"
+            ]
+        ]
+    },
+    {
+        "id": "34867ac.18cfc86",
+        "type": "get-resource",
+        "name": "get AnAI - l3-network by network-id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $network-topology-operation-input.network-request-information.network-id\" \n\t\tpfx=\"tmp.AnAI.l3network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 453.4643249511719,
+        "y": 164.9246368408203,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "be439a72.253938",
+                "d84ea22f.e407c"
+            ]
+        ]
+    },
+    {
+        "id": "d84ea22f.e407c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 681.4643249511719,
+        "y": 207.9246368408203,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "42ccb0c4.44987"
+            ]
+        ]
+    },
+    {
+        "id": "42ccb0c4.44987",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'An error occurred while querying l3-network from AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`\" />",
+        "comments": "",
+        "x": 833.5754089355469,
+        "y": 208.14686584472656,
+        "z": "16a5084d.6904d8",
+        "wires": []
+    },
+    {
+        "id": "262c9783.799c48",
+        "type": "save",
+        "name": "update AnAI - subnet.orchestration-status",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $network-topology-operation-input.network-request-information.network-id  \n\t\t\tAND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id\" >\n\t<parameter name=\"orchestration-status\" value=\"active\" />\n\t\t",
+        "comments": "",
+        "outputs": 1,
+        "x": 1862.6230087280273,
+        "y": 580.6667499542236,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "c9eebef.d2d794"
+            ]
+        ]
+    },
+    {
+        "id": "d89faa07.866668",
+        "type": "delete",
+        "name": "delete AnAI - l3-network",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $network-topology-operation-input.network-request-information.network-id\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 968.1071929931641,
+        "y": 273.78178787231445,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "9ce56dcb.c4e3b"
+            ]
+        ]
+    },
+    {
+        "id": "9ce56dcb.c4e3b",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1159.857177734375,
+        "y": 273.5317840576172,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "119f926b.f22d8e"
+            ]
+        ]
+    },
+    {
+        "id": "119f926b.f22d8e",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Failed to delete l3-network from AAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`\"/>",
+        "comments": "",
+        "x": 1318.3570355589,
+        "y": 273.0320094249846,
+        "z": "16a5084d.6904d8",
+        "wires": []
+    },
+    {
+        "id": "4b483612.3e69e8",
+        "type": "delete",
+        "name": "delete l3-network.subnet",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"subnet\" \n\t\tkey=\"l3-network.network-id = $network-topology-operation-input.network-request-information.network-id  \n\t\t\tAND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1808.6865310668945,
+        "y": 533.5754108428955,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "88c83fbb.cfade"
+            ]
+        ]
+    },
+    {
+        "id": "b17a76ed.0f85b8",
+        "type": "save",
+        "name": "update AnAI - l3-network.orchestration-status",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $network-topology-operation-input.network-request-information.network-id\" >\n<parameter name=\"orchestration-status\" value=\"active\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1219.020034790039,
+        "y": 644.4007987976074,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "ce707857.7d5938"
+            ]
+        ]
+    },
+    {
+        "id": "88c83fbb.cfade",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2002.8293075561523,
+        "y": 533.5754375457764,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "ad6689b7.9adf18"
+            ]
+        ]
+    },
+    {
+        "id": "ad6689b7.9adf18",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Failed to rollback to delete subnet from AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' and network-id = ' + $network-topology-operation-input.network-request-information.network-id`\" />",
+        "comments": "",
+        "x": 2150.9403915405273,
+        "y": 533.7976665496826,
+        "z": "16a5084d.6904d8",
+        "wires": []
+    },
+    {
+        "id": "c9eebef.d2d794",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2115.6864852905273,
+        "y": 580.4325847625732,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "b2f04093.c9348"
+            ]
+        ]
+    },
+    {
+        "id": "b2f04093.c9348",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`'Failed to rollback subnet orchestration-status from AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' and network-id = ' + $network-topology-operation-input.network-request-information.network-id`\" />",
+        "comments": "",
+        "x": 2263.7975692749023,
+        "y": 580.6548137664795,
+        "z": "16a5084d.6904d8",
+        "wires": []
+    },
+    {
+        "id": "601ab575.5ab91c",
+        "type": "switchNode",
+        "name": "switch ... tmp.AnAI.l3network.subnets.subnet_length[]",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1275.1428833007812,
+        "y": 383.2857360839844,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "fc8ffad6.e42698"
+            ]
+        ]
+    },
+    {
+        "id": "fc8ffad6.e42698",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 1556.5873336791992,
+        "y": 383.0634717941284,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            [
+                "188c2712.ad31f9"
+            ]
+        ]
+    },
+    {
+        "id": "188c2712.ad31f9",
+        "type": "set",
+        "name": "set tmp.AnAI.l3network.subnets.subnet_length = 0",
+        "xml": "<set>\n<parameter name=\"tmp.AnAI.l3network.subnets.subnet_length\" value=\"0\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1831.1429426405166,
+        "y": 383.0634924570718,
+        "z": "16a5084d.6904d8",
+        "wires": [
+            []
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_preload-network-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_preload-network-topology-operation.json
new file mode 100644
index 0000000..0679423
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_preload-network-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"f52d4cf4.25d3f","type":"dgstart","name":"DGSTART","outputs":1,"x":182.85714721679688,"y":88.57142639160156,"z":"7cd51ac5.0ee414","wires":[["e4785cdc.f593f"]]},{"id":"e4785cdc.f593f","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":215.85716247558594,"y":139.68252563476562,"z":"7cd51ac5.0ee414","wires":[["29605b3a.00ad24"]]},{"id":"29605b3a.00ad24","type":"method","name":"preload-network-topology-operation","xml":"<method rpc=\"preload-network-topology-operation\" mode=\"sync\">","comments":"","outputs":1,"x":296.52381896972656,"y":217.0158519744873,"z":"7cd51ac5.0ee414","wires":[["2f66e3d0.99841c"]]},{"id":"2f66e3d0.99841c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":231.079345703125,"y":338.2380828857422,"z":"7cd51ac5.0ee414","wires":[["52294c1e.1dd794"]]},{"id":"5dc20ae6.6f9ae4","type":"comment","name":"preload-network-topology-operation","info":"","comments":"","x":764.5693168640137,"y":95.33911037445068,"z":"7cd51ac5.0ee414","wires":[]},{"id":"790af37e.78cc8c","type":"comment","name":"request-action = PreloadNetworkRequest, svc-action = reserve","info":"","comments":"","x":773.3571434020996,"y":133.01587295532227,"z":"7cd51ac5.0ee414","wires":[]},{"id":"52294c1e.1dd794","type":"switchNode","name":"switch: request-action","xml":"<switch test=\"`$preload-network-topology-operation-input.request-information.request-action`\">\n","comments":"","outputs":1,"x":497.8571472167969,"y":358.339111328125,"z":"7cd51ac5.0ee414","wires":[["db22adff.36335","6ec5a1af.35451","ff3b1c67.7a25e"]]},{"id":"db22adff.36335","type":"other","name":"PreloadNetworkRequest","xml":"<outcome value='PreloadNetworkRequest'>","comments":"","outputs":1,"x":725.8571472167969,"y":359.339111328125,"z":"7cd51ac5.0ee414","wires":[["d64506b6.031b58"]]},{"id":"6ec5a1af.35451","type":"other","name":"DeletePreloadNetworkRequest","xml":"<outcome value='DeletePreloadNetworkRequest'>","comments":"","outputs":1,"x":738.8571472167969,"y":628.339111328125,"z":"7cd51ac5.0ee414","wires":[["87952e61.63dc8"]]},{"id":"787d89f8.d6f8c8","type":"set","name":"Delete Preload Data","xml":"<set>\n<parameter name=\"preload-data.\" value=\"\" />\n","comments":"","x":1205.9683151245117,"y":629.0058326721191,"z":"7cd51ac5.0ee414","wires":[[]]},{"id":"4a24898e.fdd898","type":"returnSuccess","name":"return success","xml":"<return status=\"success\">\n\t<parameter name=\"error-code\" value=\"200\" />","comments":"","x":1189.8572082519531,"y":710.3391132354736,"z":"7cd51ac5.0ee414","wires":[]},{"id":"ff3b1c67.7a25e","type":"other","name":"outcome: Other","xml":"<outcome value=\"Other\">\n\n","outputs":1,"x":706.8571472167969,"y":748.339111328125,"z":"7cd51ac5.0ee414","wires":[["77675a88.cd35b4"]]},{"id":"77675a88.cd35b4","type":"returnFailure","name":"return failure","xml":" <return status=\"failure\">\n\t<parameter name='error-code' value='2000'/>\n\t<parameter name='error-message' value='Invalid Request `$preload-network-topology-operation-input.request-information.request-action`'/>\n\n \n","comments":"","x":948.9392623901367,"y":749.0246486663818,"z":"7cd51ac5.0ee414","wires":[]},{"id":"d64506b6.031b58","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":965.8571472167969,"y":358.339111328125,"z":"7cd51ac5.0ee414","wires":[["a398e9e4.8d7a38","e4652a21.9cd618","e616ae08.47d6b","4247b32b.85a4cc","9719f83c.615828"]]},{"id":"4247b32b.85a4cc","type":"returnSuccess","name":"return success","xml":"<return status=\"success\">\n\t<parameter name=\"error-code\" value=\"200\" />","comments":"","x":1200.6786499023438,"y":529.7240610122681,"z":"7cd51ac5.0ee414","wires":[]},{"id":"e616ae08.47d6b","type":"set","name":"set: order-status = PendingAssignment","xml":"<set>\n\t<parameter name=\"preload-data.oper-status.order-status\" value=\"PendingAssignment\"/>","comments":"","x":1274.3533210754395,"y":442.7321243286133,"z":"7cd51ac5.0ee414","wires":[[]]},{"id":"a398e9e4.8d7a38","type":"set","name":"Set final indicator to Y","xml":"<set>\n<parameter name=\"ack-final\" value=\"Y\"/>","comments":"","x":1222.5874786376953,"y":487.5257034301758,"z":"7cd51ac5.0ee414","wires":[[]]},{"id":"e4652a21.9cd618","type":"set","name":"set: preload-data += input","xml":"<set>\n<parameter name=\"preload-data.\" value=\"preload-network-topology-operation-input.\" />\n","comments":"","x":1232.158863067627,"y":398.94419956207275,"z":"7cd51ac5.0ee414","wires":[[]]},{"id":"87952e61.63dc8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":977.8571472167969,"y":629.339111328125,"z":"7cd51ac5.0ee414","wires":[["787d89f8.d6f8c8","4a24898e.fdd898","20ea8ce6.d4b434"]]},{"id":"e53a497e.ccc4a8","type":"comment","name":"request-action = DeletePreloadNetworkRequest, svc-action = delete","info":"","comments":"","x":781.8571472167969,"y":170.339111328125,"z":"7cd51ac5.0ee414","wires":[]},{"id":"9719f83c.615828","type":"set","name":"Delete Preload Data","xml":"<set>\n<parameter name=\"preload-data.\" value=\"\" />\n","comments":"","x":1214.1072463989258,"y":358.0356864929199,"z":"7cd51ac5.0ee414","wires":[[]]},{"id":"20ea8ce6.d4b434","type":"set","name":"Set final indicator to Y","xml":"<set>\n<parameter name=\"ack-final\" value=\"Y\"/>","comments":"","x":1211.7142868041992,"y":669.2857131958008,"z":"7cd51ac5.0ee414","wires":[[]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_preload-vf-module-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_preload-vf-module-topology-operation.json
new file mode 100644
index 0000000..c30c92f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_preload-vf-module-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"d2cea9e2.1fdc78","type":"dgstart","name":"DGSTART","outputs":1,"x":135.71429443359375,"y":102.85714721679688,"z":"9b38888e.2edc68","wires":[["a67d94b9.dd3888"]]},{"id":"a67d94b9.dd3888","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":168.7143096923828,"y":153.96824645996094,"z":"9b38888e.2edc68","wires":[["70ca3740.839b38"]]},{"id":"70ca3740.839b38","type":"method","name":"preload-vf-module-topology-operation","xml":"<method rpc=\"preload-vf-module-topology-operation\" mode=\"sync\">","comments":"","outputs":1,"x":256.0476379394531,"y":199.079345703125,"z":"9b38888e.2edc68","wires":[["f38d7271.b1bad"]]},{"id":"f38d7271.b1bad","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":238.2221908569336,"y":259.66666412353516,"z":"9b38888e.2edc68","wires":[["b003587f.590da8"]]},{"id":"b003587f.590da8","type":"switchNode","name":"switch: request-action","xml":"<switch test=\"`$preload-vf-module-topology-operation-input.request-information.request-action`\">\n\n","comments":"","outputs":1,"x":473.57139587402344,"y":304.48198413848877,"z":"9b38888e.2edc68","wires":[["c28f1e55.dce72","5b6a1c71.3ecc64","ad9bcdf5.5fbaa"]]},{"id":"c28f1e55.dce72","type":"other","name":"PreloadVfModuleRequest","xml":"<outcome value='PreloadVfModuleRequest'>","comments":"","outputs":1,"x":729.5713958740234,"y":304.48198413848877,"z":"9b38888e.2edc68","wires":[["7cee46a7.2c1b98"]]},{"id":"5b6a1c71.3ecc64","type":"other","name":"DeletePreloadVfModuleRequest","xml":"<outcome value='DeletePreloadVfModuleRequest'>","comments":"","outputs":1,"x":745.8570098876953,"y":525.6962842941284,"z":"9b38888e.2edc68","wires":[["ada7947d.7e5ed8"]]},{"id":"44ee2d8.e4dbcd4","type":"set","name":"Delete vf-module-preload-data","xml":"<set>\n<parameter name=\"vf-module-preload-data.\" value=\"\" />\n","comments":"","x":1261.1070709228516,"y":525.4463138580322,"z":"9b38888e.2edc68","wires":[]},{"id":"ad9bcdf5.5fbaa","type":"other","name":"outcome: Other","xml":"<outcome value=\"Other\">\n\n","outputs":1,"x":684.1427307128906,"y":644.6962747573853,"z":"9b38888e.2edc68","wires":[["7e2bfb9e.53fef4"]]},{"id":"7e2bfb9e.53fef4","type":"returnFailure","name":"return failure","xml":" <return status=\"failure\">\n\t<parameter name='error-code' value='2000'/>\n\t<parameter name='error-message' value=\"`'Invalid Request, ' + $preload-vf-module-topology-operation-input.request-information.request-action`\"/>\n\n \n","comments":"","x":932.0819244384766,"y":645.0167264938354,"z":"9b38888e.2edc68","wires":[]},{"id":"7cee46a7.2c1b98","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":970.5713958740234,"y":304.48198413848877,"z":"9b38888e.2edc68","wires":[["14e44ca1.dac4d3","d9d4f8e7.cb22b8","7176e99a.abbfc8","9914570a.6811f8","ce6fc41b.78e588"]]},{"id":"bb6a127d.cef8b","type":"returnSuccess","name":"return success","xml":"<return status=\"success\">\n\t<parameter name=\"error-code\" value=\"200\" />","comments":"","x":1350.5714416503906,"y":642.1606178283691,"z":"9b38888e.2edc68","wires":[]},{"id":"7176e99a.abbfc8","type":"set","name":"set: order-status = PendingAssignment","xml":"<set>\n\t<parameter name=\"vf-module-preload-data.oper-status.order-status\" value=\"PendingAssignment\"/>","comments":"","x":1283.5953521728516,"y":439.1051263809204,"z":"9b38888e.2edc68","wires":[]},{"id":"b3b7a80f.2755f8","type":"set","name":"Set final indicator to Y","xml":"<set>\n<parameter name=\"ack-final\" value=\"Y\"/>","comments":"","x":1371.4802551269531,"y":599.1687049865723,"z":"9b38888e.2edc68","wires":[]},{"id":"14e44ca1.dac4d3","type":"get-resource","name":"get-resource: vnf-profile.vnf-type","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" \n\tresource=\"vnf-profile\" key=\"SELECT * from VNF_PROFILE where vnf_type = $preload-vf-module-topology-operation-input.vf-module-topology-information.vf-module-identifiers.vf-module-model-id\">\n","comments":"","outputs":1,"x":1262.0914459228516,"y":304.93456268310547,"z":"9b38888e.2edc68","wires":[["e81e4681.2cd218","47e205dc.4d75fc"]]},{"id":"c6977735.6f78c8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"preload vnf-model-id not found. New vnf-model-id can be added via admin portal\" />","comments":"","x":1752.4246368408203,"y":304.15673065185547,"z":"9b38888e.2edc68","wires":[]},{"id":"e81e4681.2cd218","type":"success","name":"not found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1539.0913848876953,"y":304.71227264404297,"z":"9b38888e.2edc68","wires":[["c6977735.6f78c8"]]},{"id":"d9d4f8e7.cb22b8","type":"set","name":"set: vf-module-preload-data += input","xml":"<set>\n<parameter name=\"vf-module-preload-data.\" value=\"preload-vf-module-topology-operation-input.\" />\n","comments":"","x":1276.761978149414,"y":393.40056705474854,"z":"9b38888e.2edc68","wires":[]},{"id":"47e205dc.4d75fc","type":"success","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1531.3690948486328,"y":346.2577438354492,"z":"9b38888e.2edc68","wires":[["c6977735.6f78c8"]]},{"id":"ada7947d.7e5ed8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":997.6070098876953,"y":525.6962833404541,"z":"9b38888e.2edc68","wires":[["44ee2d8.e4dbcd4","ce6fc41b.78e588"]]},{"id":"9914570a.6811f8","type":"set","name":"Delete vf-module-preload-data","xml":"<set>\n<parameter name=\"vf-module-preload-data.\" value=\"\" />\n","comments":"","x":1255.785659790039,"y":349.82149505615234,"z":"9b38888e.2edc68","wires":[]},{"id":"ce6fc41b.78e588","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1182.250015258789,"y":599.9286470413208,"z":"9b38888e.2edc68","wires":[["b3b7a80f.2755f8","bb6a127d.cef8b"]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_preload-vnf-instance-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_preload-vnf-instance-topology-operation.json
new file mode 100644
index 0000000..5b5d4d9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_preload-vnf-instance-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"acb78607.669d98","type":"dgstart","name":"DGSTART","outputs":1,"x":174.2857208251953,"y":107.14286041259766,"z":"8933f47c.8eca28","wires":[["1d5dd029.fdeb2"]]},{"id":"1d5dd029.fdeb2","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":207.28573608398438,"y":158.25395965576172,"z":"8933f47c.8eca28","wires":[["d17b44c2.cdd0f8"]]},{"id":"d17b44c2.cdd0f8","type":"method","name":"preload-vnf-instance-topology-operation","xml":"<method rpc=\"preload-vnf-instance-topology-operation\" mode=\"sync\">","comments":"","outputs":1,"x":294.6190643310547,"y":203.36505889892578,"z":"8933f47c.8eca28","wires":[["15e09d37.0dd353"]]},{"id":"15e09d37.0dd353","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":276.79361724853516,"y":263.95237731933594,"z":"8933f47c.8eca28","wires":[["e7a7dbc2.f05948"]]},{"id":"e7a7dbc2.f05948","type":"switchNode","name":"switch: request-action","xml":"<switch test=\"`$preload-vnf-instance-topology-operation-input.request-information.request-action`\">\n\n","comments":"","outputs":1,"x":512.142822265625,"y":308.76769733428955,"z":"8933f47c.8eca28","wires":[["10b04798.1315a8","2fb0d9fd.987eb6","5221dded.ffd334"]]},{"id":"10b04798.1315a8","type":"other","name":"PreloadVnfInstanceRequest","xml":"<outcome value='PreloadVnfInstanceRequest'>","comments":"","outputs":1,"x":774.142822265625,"y":308.76769733428955,"z":"8933f47c.8eca28","wires":[["c7936654.a5eee8"]]},{"id":"2fb0d9fd.987eb6","type":"other","name":"DeletePreloadVnfInstanceRequest","xml":"<outcome value='DeletePreloadVnfInstanceRequest'>","comments":"","outputs":1,"x":793.4284362792969,"y":529.9819974899292,"z":"8933f47c.8eca28","wires":[["ba7d7b73.a72568"]]},{"id":"804376ed.19eab8","type":"set","name":"Delete vnf-instance-preload-data","xml":"<set>\n<parameter name=\"vnf-instance-preload-data.\" value=\"\" />\n","comments":"","x":1309.6784973144531,"y":529.732027053833,"z":"8933f47c.8eca28","wires":[]},{"id":"5221dded.ffd334","type":"other","name":"outcome: Other","xml":"<outcome value=\"Other\">\n\n","outputs":1,"x":722.7141571044922,"y":648.981987953186,"z":"8933f47c.8eca28","wires":[["11a3d982.d1fa06"]]},{"id":"11a3d982.d1fa06","type":"returnFailure","name":"return failure","xml":" <return status=\"failure\">\n\t<parameter name='error-code' value='2000'/>\n\t<parameter name='error-message' value='Invalid Request `$preload-vnf-instance-topology-operation-input.request-information.request-action`'/>\n\n \n","comments":"","x":980.6533508300781,"y":649.3024396896362,"z":"8933f47c.8eca28","wires":[]},{"id":"c7936654.a5eee8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1019.142822265625,"y":308.76769733428955,"z":"8933f47c.8eca28","wires":[["7288864f.4ca648","add8c4fe.ffd258","55c30909.4c2f38","729a6f33.9aa24","61b570ed.ef516"]]},{"id":"b9a99e15.45ee4","type":"returnSuccess","name":"return success","xml":"<return status=\"success\">\n\t<parameter name=\"error-code\" value=\"200\" />","comments":"","x":1399.1428680419922,"y":646.4463310241699,"z":"8933f47c.8eca28","wires":[]},{"id":"55c30909.4c2f38","type":"set","name":"set: order-status = PendingAssignment","xml":"<set>\n\t<parameter name=\"vnf-instance-preload-data.oper-status.order-status\" value=\"PendingAssignment\"/>","comments":"","x":1332.1667785644531,"y":443.3908395767212,"z":"8933f47c.8eca28","wires":[]},{"id":"eb852ae1.437ce8","type":"set","name":"Set final indicator to Y","xml":"<set>\n<parameter name=\"ack-final\" value=\"Y\"/>","comments":"","x":1420.0516815185547,"y":603.454418182373,"z":"8933f47c.8eca28","wires":[]},{"id":"7288864f.4ca648","type":"get-resource","name":"get-resource: vnf-profile.vnf-type","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" \n\tresource=\"vnf-profile\" key=\"SELECT * from VNF_PROFILE where vnf_type = $preload-vnf-instance-topology-operation-input.vnf-instance-topology-information.vnf-instance-identifiers.vnf-model-id\">\n","comments":"","outputs":1,"x":1310.6628723144531,"y":309.22027587890625,"z":"8933f47c.8eca28","wires":[["4464022f.8d1b5c","a85fb482.a59958"]]},{"id":"1181ba91.3da815","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name=\"error-code\" value=\"404\" />\n\t<parameter name=\"error-message\" value=\"preload vnf-model-id not found. New vnf-model-id can be added via admin portal\" />","comments":"","x":1800.9960632324219,"y":308.44244384765625,"z":"8933f47c.8eca28","wires":[]},{"id":"4464022f.8d1b5c","type":"success","name":"not found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1587.6628112792969,"y":308.99798583984375,"z":"8933f47c.8eca28","wires":[["1181ba91.3da815"]]},{"id":"add8c4fe.ffd258","type":"set","name":"set: vnf-instance-preload-data += input","xml":"<set>\n<parameter name=\"vnf-instance-preload-data.\" value=\"preload-vnf-instance-topology-operation-input.\" />\n","comments":"","x":1330.3334045410156,"y":397.6862802505493,"z":"8933f47c.8eca28","wires":[]},{"id":"a85fb482.a59958","type":"success","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1579.9405212402344,"y":350.54345703125,"z":"8933f47c.8eca28","wires":[["1181ba91.3da815"]]},{"id":"ba7d7b73.a72568","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1046.1784362792969,"y":529.9819965362549,"z":"8933f47c.8eca28","wires":[["804376ed.19eab8","61b570ed.ef516"]]},{"id":"729a6f33.9aa24","type":"set","name":"Delete vnf-instance-preload-data","xml":"<set>\n<parameter name=\"vnf-instance-preload-data.\" value=\"\" />\n","comments":"","x":1312.3570861816406,"y":354.1072082519531,"z":"8933f47c.8eca28","wires":[]},{"id":"61b570ed.ef516","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1230.8214416503906,"y":604.2143602371216,"z":"8933f47c.8eca28","wires":[["eb852ae1.437ce8","b9a99e15.45ee4"]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_preload-vnf-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_preload-vnf-topology-operation.json
new file mode 100644
index 0000000..8f10b18
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_preload-vnf-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"d3e2dd72.f3eb28","type":"dgstart","name":"DGSTART","outputs":1,"x":153,"y":80,"z":"ec010968.e7b3c8","wires":[["89fa3693.857fc"]]},{"id":"89fa3693.857fc","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":186.00001525878906,"y":131.11109924316406,"z":"ec010968.e7b3c8","wires":[["f67f175f.4ffd08"]]},{"id":"f67f175f.4ffd08","type":"method","name":"preload-vnf-topology-operation","xml":"<method rpc=\"preload-vnf-topology-operation\" mode=\"sync\">","comments":"","outputs":1,"x":273.3333435058594,"y":176.22219848632812,"z":"ec010968.e7b3c8","wires":[["84f2afd6.541b48"]]},{"id":"84f2afd6.541b48","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":201.22219848632812,"y":329.6666564941406,"z":"ec010968.e7b3c8","wires":[["8428aef3.294fb"]]},{"id":"433e4bbb.0041a4","type":"comment","name":"preload-vnf-topology-operation","info":"","comments":"","x":734.7121696472168,"y":86.76768398284912,"z":"ec010968.e7b3c8","wires":[]},{"id":"c245f742.938de8","type":"comment","name":"request-action = PreloadVNFRequest, svc-action = reserve","info":"","comments":"","x":743.4999961853027,"y":124.4444465637207,"z":"ec010968.e7b3c8","wires":[]},{"id":"8428aef3.294fb","type":"switchNode","name":"switch: request-action","xml":"<switch test=\"`$preload-vnf-topology-operation-input.request-information.request-action`\">\n<!--\nleaf request-action { \n\t\t\t\ttype enumeration { \n\t\t\t\t\tenum \"VNFActivateRequest\";\n\t\t\t\t\tenum \"ChangeVNFActivateRequest\";\n\t\t\t\t\tenum \"DisconnectVNFRequest\";\n\t\t\t\t\tenum \"PreloadVNFRequest\";\n\t\t\t\t\tenum \"DeletePreloadVNFRequest\";\n\t\t\t\t} \n}\n-->\n\n","comments":"","outputs":1,"x":468,"y":349.76768493652344,"z":"ec010968.e7b3c8","wires":[["224db7b9.99c05","25c7df15.e2ee68","d922a69b.5847a"]]},{"id":"224db7b9.99c05","type":"other","name":"PreloadVNFRequest","xml":"<outcome value='PreloadVNFRequest'>","comments":"","outputs":1,"x":696,"y":350.76768493652344,"z":"ec010968.e7b3c8","wires":[["168570d4.1b2c0f"]]},{"id":"25c7df15.e2ee68","type":"other","name":"DeletePreloadVNFRequest","xml":"<outcome value='DeletePreloadVNFRequest'>","comments":"","outputs":1,"x":697.5713119506836,"y":724.6248331069946,"z":"ec010968.e7b3c8","wires":[["7234c5f6.8e775c"]]},{"id":"c8fc1b0d.1f04b","type":"set","name":"Delete Preload Data","xml":"<set>\n<parameter name=\"preload-data.\" value=\"\" />\n","comments":"","x":1167.5713119506836,"y":766.6248331069946,"z":"ec010968.e7b3c8","wires":[]},{"id":"293e913d.2d205e","type":"returnSuccess","name":"return success","xml":"<return status=\"success\">\n\t<parameter name=\"error-code\" value=\"200\" />","comments":"","x":1150.5713119506836,"y":806.6248331069946,"z":"ec010968.e7b3c8","wires":[]},{"id":"d922a69b.5847a","type":"other","name":"outcome: Other","xml":"<outcome value=\"Other\">\n\n","outputs":1,"x":665.5713119506836,"y":844.6248331069946,"z":"ec010968.e7b3c8","wires":[["3f1f5721.c4719"]]},{"id":"3f1f5721.c4719","type":"returnFailure","name":"return failure","xml":" <return status=\"failure\">\n\t<parameter name='error-code' value='2000'/>\n\t<parameter name='error-message' value='Invalid Request `$preload-vnf-topology-operation-input.request-information.request-action`'/>\n\n \n","comments":"","x":907.6534042358398,"y":843.0881509780884,"z":"ec010968.e7b3c8","wires":[]},{"id":"168570d4.1b2c0f","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":936,"y":349.76768493652344,"z":"ec010968.e7b3c8","wires":[["2dfc339a.33eb4c","1be7681f.50003","256a1875.9f523","88afcd6b.4398f","cb33cf00.3b6b58","84940a76.3bc3a"]]},{"id":"cb33cf00.3b6b58","type":"returnSuccess","name":"return success","xml":"<return status=\"success\">\n\t<parameter name=\"error-code\" value=\"200\" />","comments":"","x":1194.0000457763672,"y":586.1962547302246,"z":"ec010968.e7b3c8","wires":[]},{"id":"88afcd6b.4398f","type":"set","name":"set: order-status = PendingAssignment","xml":"<set>\n\t<parameter name=\"preload-data.oper-status.order-status\" value=\"PendingAssignment\"/>","comments":"","x":1269.0239715576172,"y":546.2836875915527,"z":"ec010968.e7b3c8","wires":[]},{"id":"2dfc339a.33eb4c","type":"set","name":"Set final indicator to Y","xml":"<set>\n<parameter name=\"ack-final\" value=\"Y\"/>","comments":"","x":1214.9088668823242,"y":348.91858863830566,"z":"ec010968.e7b3c8","wires":[]},{"id":"1be7681f.50003","type":"set","name":"set : sql-resource-plugin","xml":"<set only-if-unset=\"true\">\n<parameter name=\"sql-resource-plugin\" value=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\"/>","comments":"","x":1235.7321090698242,"y":387.79737281799316,"z":"ec010968.e7b3c8","wires":[]},{"id":"256a1875.9f523","type":"set","name":"set: preload-data += input","xml":"<set>\n<parameter name=\"preload-data.\" value=\"preload-vnf-topology-operation-input.\" />\n","comments":"","x":1226.940658569336,"y":506.82912826538086,"z":"ec010968.e7b3c8","wires":[]},{"id":"7234c5f6.8e775c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":936.5713119506836,"y":725.6248331069946,"z":"ec010968.e7b3c8","wires":[["c8fc1b0d.1f04b","293e913d.2d205e"]]},{"id":"8fe855d2.3e6538","type":"comment","name":"request-action = DeletePreloadVNFRequest, svc-action = delete","info":"","comments":"","x":752,"y":161.76768493652344,"z":"ec010968.e7b3c8","wires":[]},{"id":"84940a76.3bc3a","type":"set","name":"Delete Preload Data","xml":"<set>\n<parameter name=\"preload-data.\" value=\"\" />\n","comments":"","x":1209.7143020629883,"y":467.0000305175781,"z":"ec010968.e7b3c8","wires":[]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_rollback-eipam-ip-assignment.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_rollback-eipam-ip-assignment.json
new file mode 100644
index 0000000..36d1e82
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_rollback-eipam-ip-assignment.json
@@ -0,0 +1 @@
+[{"id":"ca13d39d.4a481","type":"dgstart","name":"DGSTART","outputs":1,"x":191.66665649414062,"y":130,"z":"81d77771.435188","wires":[["850132f2.97faa"]]},{"id":"d53fa926.bc8038","type":"method","name":"method rollback-eipam-ip-assignment","xml":"<method rpc='rollback-eipam-ip-assignment' mode='sync'>\n","comments":"","outputs":1,"x":359.16664123535156,"y":290.93651580810547,"z":"81d77771.435188","wires":[["d55d452f.723fa8"]]},{"id":"850132f2.97faa","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":293.56346130371094,"y":203.634934425354,"z":"81d77771.435188","wires":[["d53fa926.bc8038"]]},{"id":"bacdf2b.d9c0f1","type":"update","name":"update EIPAM_IP_ASSIGNMENTS to PENDING_DELETE...","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\n\tkey=\"UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status \n\t\tWHERE info = $vnf-topology-operation-input.vnf-request-information.vnf-id\" >","comments":"","outputs":1,"x":969.8571624755859,"y":288.5714282989502,"z":"81d77771.435188","wires":[["e93433cf.3976"]]},{"id":"204a22bc.04bd2e","type":"set","name":"set status variable","xml":"<set>\n<parameter name='tmp.status' \n\tvalue=\"`'PENDING_DELETE_' + $vnf-topology-operation-input.vnf-request-information.vnf-id`\" />\n<parameter name='service-data.service-information.service-type' \n\tvalue='NOT_APPLICABLE' />\n\t\n","comments":"","x":839.8571243286133,"y":241.90480041503906,"z":"81d77771.435188","wires":[]},{"id":"e93433cf.3976","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1275.8570709228516,"y":287.904727935791,"z":"81d77771.435188","wires":[["c6588808.afd928"]]},{"id":"c6588808.afd928","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 updating EIPAM_IP_ASSIGNMENTS table on rollback.\" />\n","comments":"","x":1434.8570976257324,"y":287.71446323394775,"z":"81d77771.435188","wires":[]},{"id":"9f945c90.bbdc5","type":"execute","name":"execute EIPAM unassign IP addresses","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"unassignIPAddress\">\n<parameter name=\"deleteEIPAM_status\" value=\"`$tmp.status`\" />\n","comments":"","outputs":1,"x":904.8571319580078,"y":333.57147216796875,"z":"81d77771.435188","wires":[["94d18ac.d008f78"]]},{"id":"94d18ac.d008f78","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1141.5237579345703,"y":333.57141494750977,"z":"81d77771.435188","wires":[["c3033b34.c5b888"]]},{"id":"c3033b34.c5b888","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 in EIPAM unassign IP address on rollback.\" />\n","comments":"","x":1331.5237846374512,"y":333.3811502456665,"z":"81d77771.435188","wires":[]},{"id":"eecace93.5e461","type":"comment","name":"rollback-eipam-ip-assignment","info":"","comments":"","x":715.7143402099609,"y":140.71476936340332,"z":"81d77771.435188","wires":[]},{"id":"d55d452f.723fa8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":611.5237884521484,"y":290.9049243927002,"z":"81d77771.435188","wires":[["204a22bc.04bd2e","bacdf2b.d9c0f1","9f945c90.bbdc5"]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-activate.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-activate.json
new file mode 100644
index 0000000..725798d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-activate.json
@@ -0,0 +1,404 @@
+[
+    {
+        "id": "39e8a74f.00d7a8",
+        "type": "set",
+        "name": "set: order-status = Active",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.oper-status.order-status\" value=\"Active\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 432.8571472167969,
+        "y": 392.8571472167969,
+        "z": "99edc426.381898",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "74e6fd2f.dee3c4",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 179.85713958740234,
+        "y": 160.35716247558594,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "39e8a74f.00d7a8",
+                "83f09b75.461298",
+                "b65a1681.7c1c38",
+                "ca5aa154.d8ea2",
+                "e0967d0e.757cc",
+                "91c8fd96.73034",
+                "ef986c0d.9506",
+                "3041a9ae.a8b0d6",
+                "38723ef.e0f7bc2",
+                "7646ab3a.7636e4"
+            ]
+        ]
+    },
+    {
+        "id": "dfa6e2c6.49745",
+        "type": "method",
+        "name": "method vf-module-topology-activate",
+        "xml": "<method rpc='vf-module-topology-activate' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 222.5238265991211,
+        "y": 104.5238265991211,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "74e6fd2f.dee3c4"
+            ]
+        ]
+    },
+    {
+        "id": "daef36a1.fa1368",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 314.52379608154297,
+        "y": 57.523834228515625,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "dfa6e2c6.49745"
+            ]
+        ]
+    },
+    {
+        "id": "1253e5b0.3e31fa",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 149.35713958740234,
+        "y": 57.35716247558594,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "daef36a1.fa1368"
+            ]
+        ]
+    },
+    {
+        "id": "83f09b75.461298",
+        "type": "switchNode",
+        "name": "switch: order-status = PendingCreate",
+        "xml": "<switch test=\"`$vf-module-service-data.oper-status.order-status == PendingCreate`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 472.1905212402344,
+        "y": 289.19036865234375,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "32730681.fc526a"
+            ]
+        ]
+    },
+    {
+        "id": "32730681.fc526a",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 721.5238723754883,
+        "y": 288.52367782592773,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "94496491.8e1268"
+            ]
+        ]
+    },
+    {
+        "id": "86ef0554.fbc0a8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid order-status'/>",
+        "comments": "",
+        "x": 1379.8569946289062,
+        "y": 288.5237293243408,
+        "z": "99edc426.381898",
+        "wires": []
+    },
+    {
+        "id": "e0967d0e.757cc",
+        "type": "switchNode",
+        "name": "switch:vf-module-id   config == input",
+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vf-module-id == $vf-module-service-data.vf-module-id`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 465.6298828125,
+        "y": 237.40260314941406,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "f8c73b3a.1a2af8"
+            ]
+        ]
+    },
+    {
+        "id": "f8c73b3a.1a2af8",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 694.084358215332,
+        "y": 237.58442306518555,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "6bcf58a9.7508d8"
+            ]
+        ]
+    },
+    {
+        "id": "6bcf58a9.7508d8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value=\"`'vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' not found in SDNC'`\"/>",
+        "comments": "",
+        "x": 847.1753005981445,
+        "y": 237.49352645874023,
+        "z": "99edc426.381898",
+        "wires": []
+    },
+    {
+        "id": "b65a1681.7c1c38",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 400.96826171875,
+        "y": 705.5238037109375,
+        "z": "99edc426.381898",
+        "wires": []
+    },
+    {
+        "id": "94496491.8e1268",
+        "type": "switchNode",
+        "name": "switch: order-status = PendingUpdate",
+        "xml": "<switch test=\"`$vf-module-service-data.oper-status.order-status == PendingUpdate`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 972.4480667114258,
+        "y": 288.9480857849121,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "b04177c6.257fd8"
+            ]
+        ]
+    },
+    {
+        "id": "b04177c6.257fd8",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1214.902473449707,
+        "y": 288.948055267334,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "86ef0554.fbc0a8"
+            ]
+        ]
+    },
+    {
+        "id": "ca5aa154.d8ea2",
+        "type": "set",
+        "name": "set: last-order-status = order-status",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.oper-status.last-order-status\" value=\"`$vf-module-service-data.oper-status.order-status`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 465.9708251953125,
+        "y": 341.4708557128906,
+        "z": "99edc426.381898",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a84acf1a.f3c8c",
+        "type": "comment",
+        "name": "request-action = VNFActivateRequest, svc-action = activate",
+        "info": "",
+        "comments": "",
+        "x": 728.4682235717773,
+        "y": 96.69049644470215,
+        "z": "99edc426.381898",
+        "wires": []
+    },
+    {
+        "id": "91c8fd96.73034",
+        "type": "set",
+        "name": "set: service-data = input",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.\" value=\"vf-module-topology-operation-input.\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 429.8571472167969,
+        "y": 527.9127197265625,
+        "z": "99edc426.381898",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ef986c0d.9506",
+        "type": "set",
+        "name": "set: last-action ",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.oper-status.last-action\" value=\"`$vf-module-service-data.request-information.request-action`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 399.8571472167969,
+        "y": 439.9127197265625,
+        "z": "99edc426.381898",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "cba23ed7.a7888",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 758.2698669433594,
+        "y": 482.90121841430664,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "b1d53231.032d9"
+            ]
+        ]
+    },
+    {
+        "id": "b1d53231.032d9",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'An error occurred while updating vf-module orchestration-status in AnAI with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and vnf-instance-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`\"/>",
+        "comments": "",
+        "x": 941.4127960205078,
+        "y": 482.90128898620605,
+        "z": "99edc426.381898",
+        "wires": []
+    },
+    {
+        "id": "d71b0b9.a2878f8",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 423.17459869384766,
+        "y": 663.6269645690918,
+        "z": "99edc426.381898",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3041a9ae.a8b0d6",
+        "type": "save",
+        "name": "update AnAI - vf-module.orchestration-status",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module\" \n\t\tkey=\"vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id \n\t\t\tAND generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id\" >\n\t<parameter name=\"orchestration-status\" value=\"active\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 493.74600982666016,
+        "y": 482.91271591186523,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "cba23ed7.a7888",
+                "324dd0a1.e8559"
+            ]
+        ]
+    },
+    {
+        "id": "324dd0a1.e8559",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 765.4960327148438,
+        "y": 525.66273021698,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "b1d53231.032d9"
+            ]
+        ]
+    },
+    {
+        "id": "38723ef.e0f7bc2",
+        "type": "set",
+        "name": "set: vnf-instance-service-data.vf-module-relationship-list[]",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.vf-module-relationship-list[$vnf-instance-service-data.vf-module-relationship-list_length].vf-module-id\" value=\"`$vf-module-topology-operation-input.vf-module-request-information.vf-module-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 532.2460098266602,
+        "y": 619.1627159118652,
+        "z": "99edc426.381898",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d97e99d0.9e7e48",
+        "type": "set",
+        "name": "set: vnf-instance-service-data.vf-module-relationship-list[] = 0",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.vf-module-relationship-list_length\" value=\"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1149.773796081543,
+        "y": 575.0516405105591,
+        "z": "99edc426.381898",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7646ab3a.7636e4",
+        "type": "switchNode",
+        "name": "switch: vnf-instance-service-data.vf-module-relationship-list[]",
+        "xml": "<switch test=\"`$vnf-instance-service-data.vf-module-relationship-list_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 543.4960098266602,
+        "y": 574.4127254486084,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "f9261340.ae80b"
+            ]
+        ]
+    },
+    {
+        "id": "f9261340.ae80b",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 844.7460098266602,
+        "y": 574.4127254486084,
+        "z": "99edc426.381898",
+        "wires": [
+            [
+                "d97e99d0.9e7e48"
+            ]
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-assign-vnf-networks.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-assign-vnf-networks.json
new file mode 100644
index 0000000..be55968
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-assign-vnf-networks.json
@@ -0,0 +1,1862 @@
+[
+    {
+        "id": "c30b96fb.b54ae8",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 107.3214340209961,
+        "y": 47.32143020629883,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "92128070.77ca8"
+            ]
+        ]
+    },
+    {
+        "id": "92128070.77ca8",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 272.4880905151367,
+        "y": 47.488101959228516,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "17c24793.5d4508"
+            ]
+        ]
+    },
+    {
+        "id": "17c24793.5d4508",
+        "type": "method",
+        "name": "method vf-module-topology-assign-vnf-networks",
+        "xml": "<method rpc='vf-module-topology-assign-vnf-networks' mode='sync'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 235.7381134033203,
+        "y": 101.73809432983398,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "4de1dc94.aef9f4"
+            ]
+        ]
+    },
+    {
+        "id": "4de1dc94.aef9f4",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 188.0714340209961,
+        "y": 150.57143020629883,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "70ff54f3.ff0e6c",
+                "b46a3430.78ab38",
+                "aaf65e9a.4351f",
+                "763de398.5ac24c",
+                "8fc6861.1cc4c78",
+                "330d0bd.ba072f4",
+                "3600f85a.1aec98"
+            ]
+        ]
+    },
+    {
+        "id": "dc1fefd3.cd357",
+        "type": "switchNode",
+        "name": "switch test: INPUT network-id = NULL or 0",
+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-id == '' or $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-id == '0'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 764.5137062072754,
+        "y": 701.5578842163086,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "ed113fb3.62eda",
+                "a0ca4ac5.fdc388"
+            ]
+        ]
+    },
+    {
+        "id": "ed113fb3.62eda",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1039.8771934509277,
+        "y": 745.7397541999817,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "aba6d801.11f9a8"
+            ]
+        ]
+    },
+    {
+        "id": "aba6d801.11f9a8",
+        "type": "switchNode",
+        "name": "switch : INPUT network-name = NULL",
+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-name == '' or $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-name == '0'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1277.659294128418,
+        "y": 745.5837326049805,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "18391f2.d637de1",
+                "d29dc4ee.83b888"
+            ]
+        ]
+    },
+    {
+        "id": "a0ca4ac5.fdc388",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1039.8974800109863,
+        "y": 702.4467806816101,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "3c76d450.1a1c5c"
+            ]
+        ]
+    },
+    {
+        "id": "18391f2.d637de1",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1515.851245880127,
+        "y": 785.139214515686,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "4e004f85.49efa"
+            ]
+        ]
+    },
+    {
+        "id": "3c76d450.1a1c5c",
+        "type": "save",
+        "name": "get  AnAI - l3-network by id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-id\" \n\tpfx=\"tmp.AnAI.l3network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1241.1195945739746,
+        "y": 702.4469485282898,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "b7314ceb.79175",
+                "32bd35ee.cb0d2a"
+            ]
+        ]
+    },
+    {
+        "id": "b7314ceb.79175",
+        "type": "success",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1444.0642852783203,
+        "y": 702.0023970603943,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "32309ba2.0ab454"
+            ]
+        ]
+    },
+    {
+        "id": "3c910573.9a235a",
+        "type": "for",
+        "name": "for i : INPUT vnf-networks",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 546.8075828552246,
+        "y": 559.0505676269531,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "dfdb5bcb.cdcf38"
+            ]
+        ]
+    },
+    {
+        "id": "4e004f85.49efa",
+        "type": "save",
+        "name": "get AnAI - l3-network by name",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-name = $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-name\" \n\tpfx=\"tmp.AnAI.l3network\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1726.3532485961914,
+        "y": 784.8810062408447,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "127c9bfe.0fbf64",
+                "7871388.9d854c8"
+            ]
+        ]
+    },
+    {
+        "id": "127c9bfe.0fbf64",
+        "type": "success",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1947.6032485961914,
+        "y": 785.131067276001,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "32309ba2.0ab454"
+            ]
+        ]
+    },
+    {
+        "id": "f0b9ed4f.6db11",
+        "type": "set",
+        "name": "initialize tmp.usePreload = 1 and tmp.AAI.l3network",
+        "xml": "<set>\n<parameter name='tmp.usePreload' value='1' />\n<parameter name='tmp.AnAI.l3network.' value='' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 478.3012237548828,
+        "y": 472.77592849731445,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e1f0efe6.81d2e",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 138.2354278564453,
+        "y": 472.56047439575195,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "f0b9ed4f.6db11",
+                "6e1813c8.e5e2fc",
+                "ee2deaea.1bec48"
+            ]
+        ]
+    },
+    {
+        "id": "70ff54f3.ff0e6c",
+        "type": "for",
+        "name": "for j : PRELOAD vnf-networks",
+        "xml": "<for index=\"j\" start=\"0\" end=\"`$vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 272.4603729248047,
+        "y": 385.82141494750977,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "e1f0efe6.81d2e"
+            ]
+        ]
+    },
+    {
+        "id": "6e1813c8.e5e2fc",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 314.1876983642578,
+        "y": 558.9804592132568,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "3c910573.9a235a",
+                "aeff0ffa.88a75"
+            ]
+        ]
+    },
+    {
+        "id": "dfdb5bcb.cdcf38",
+        "type": "switchNode",
+        "name": "switch : PRELOAD network-role = INPUT",
+        "xml": "<switch test=\"`$vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks[$j].network-role == $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-role`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 856.1877632141113,
+        "y": 558.3441305160522,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "382cc26b.de833e"
+            ]
+        ]
+    },
+    {
+        "id": "382cc26b.de833e",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1106.9831886291504,
+        "y": 558.6397728919983,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "fb7701c1.24954"
+            ]
+        ]
+    },
+    {
+        "id": "fb7701c1.24954",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 465.2687568664551,
+        "y": 659.4189281463623,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "dc1fefd3.cd357",
+                "5a2e54d8.28c0dc",
+                "bc41d36b.5b0d6"
+            ]
+        ]
+    },
+    {
+        "id": "5a2e54d8.28c0dc",
+        "type": "set",
+        "name": "set tmp.usePreload = 0",
+        "xml": "<set>\n<parameter name='tmp.usePreload' value='0' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 705.6323890686035,
+        "y": 659.3280572891235,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d29dc4ee.83b888",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1515.4091796875,
+        "y": 745.8452072143555,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "32309ba2.0ab454"
+            ]
+        ]
+    },
+    {
+        "id": "bc41d36b.5b0d6",
+        "type": "switchNode",
+        "name": "switch : tmp.usePreload= 0",
+        "xml": "<switch test=\"`$tmp.usePreload == 0`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 705.0207977294922,
+        "y": 971.0733308792114,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "9ce9a7a6.6d0d28"
+            ]
+        ]
+    },
+    {
+        "id": "9ce9a7a6.6d0d28",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 906.0206756591797,
+        "y": 971.0734529495239,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "df99f43a.192678"
+            ]
+        ]
+    },
+    {
+        "id": "aeff0ffa.88a75",
+        "type": "switchNode",
+        "name": "switch: tmp.usePreload= 1",
+        "xml": "<switch test=\"`$tmp.usePreload == 1`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 467.8374481201172,
+        "y": 1901.7782440185547,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "35b40dfd.b6e712"
+            ]
+        ]
+    },
+    {
+        "id": "35b40dfd.b6e712",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 675.869026184082,
+        "y": 1901.5184955596924,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "9aecd914.8483b8"
+            ]
+        ]
+    },
+    {
+        "id": "32309ba2.0ab454",
+        "type": "set",
+        "name": "set tmp.usePreload = 1",
+        "xml": "<set>\n<parameter name='tmp.usePreload' value='1' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1710.0172729492188,
+        "y": 886.6042308807373,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "70579eed.d89c5",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'An error occurred while querying AnAI for l3-network with network-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-id`\"  />\n",
+        "comments": "",
+        "x": 1594.9880854288735,
+        "y": 661.1269476148818,
+        "z": "1faa4c21.138614",
+        "wires": []
+    },
+    {
+        "id": "32bd35ee.cb0d2a",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1437.7658632066514,
+        "y": 661.1269476148818,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "70579eed.d89c5"
+            ]
+        ]
+    },
+    {
+        "id": "d5ab10a8.40fb5",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'An error occurred whie querying AnAI for l3-network with network-name = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-name`\"  />\n",
+        "comments": "",
+        "x": 2096.099006652832,
+        "y": 743.3491630554199,
+        "z": "1faa4c21.138614",
+        "wires": []
+    },
+    {
+        "id": "7871388.9d854c8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1938.8767844306099,
+        "y": 743.3491630554199,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "d5ab10a8.40fb5"
+            ]
+        ]
+    },
+    {
+        "id": "b46a3430.78ab38",
+        "type": "switchNode",
+        "name": "switch ...PRELOAD vnf-networks[]",
+        "xml": "<switch test=\"`$vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 452.07142639160156,
+        "y": 330.0714340209961,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "3f756909.e553f6"
+            ]
+        ]
+    },
+    {
+        "id": "3f756909.e553f6",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 679.5158996582031,
+        "y": 329.5991439819336,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "61c7ea59.ae7a54"
+            ]
+        ]
+    },
+    {
+        "id": "61c7ea59.ae7a54",
+        "type": "set",
+        "name": "set PRELOAD vnf-networks[] = 0",
+        "xml": "<set>\n<parameter name = \"vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks_length\" value=\"0\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 901.0715086195205,
+        "y": 329.59916464487696,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ee2deaea.1bec48",
+        "type": "switchNode",
+        "name": "switch ...INPUT vnf-networks[]",
+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 367.5714416503906,
+        "y": 513.8214120864868,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "b5803df6.ae5a9"
+            ]
+        ]
+    },
+    {
+        "id": "b5803df6.ae5a9",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 591.0158920288086,
+        "y": 513.5991477966309,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "a3eaa269.9cad5"
+            ]
+        ]
+    },
+    {
+        "id": "a3eaa269.9cad5",
+        "type": "set",
+        "name": "set INPUT vnf-networks_length = 0",
+        "xml": "<set>\n<parameter name='vf-module-topology-operation-input.vf-module-request-information.vnf-networks_length' value='0' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 823.571500990126,
+        "y": 513.5991684595742,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a5aed389.d71d6",
+        "type": "comment",
+        "name": "For each preload network, see if there is an override in input",
+        "info": "",
+        "comments": "",
+        "x": 741.6826629638672,
+        "y": 422.0436592102051,
+        "z": "1faa4c21.138614",
+        "wires": []
+    },
+    {
+        "id": "238b5959.ad0836",
+        "type": "comment",
+        "name": "CALLED BY vf-module-topology-assign AND vf-module-topology-changeassign",
+        "info": "",
+        "comments": "",
+        "x": 793.7380828857422,
+        "y": 92.68254470825195,
+        "z": "1faa4c21.138614",
+        "wires": []
+    },
+    {
+        "id": "763de398.5ac24c",
+        "type": "set",
+        "name": "set: service-data =+ input",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.\" value=\"vf-module-topology-operation-input.\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 423.8492031097412,
+        "y": 239.015869140625,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "aaf65e9a.4351f",
+        "type": "set",
+        "name": "set: service-data = preload-data",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.\" value=\"vf-module-preload-data.\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 443.75331687927246,
+        "y": 197.162353515625,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8fc6861.1cc4c78",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 396.19046783447266,
+        "y": 2271.0118932724,
+        "z": "1faa4c21.138614",
+        "wires": []
+    },
+    {
+        "id": "330d0bd.ba072f4",
+        "type": "switchNode",
+        "name": "switch: preload order-status = PendingAssignment",
+        "xml": "<switch test=\"`$vf-module-preload-data.oper-status.order-status == PendingAssignment`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 500.8492126464844,
+        "y": 150.57143306732178,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "4c5e6e0b.0d9a"
+            ]
+        ]
+    },
+    {
+        "id": "471ae763.ed73c8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid preload-data order status'/>",
+        "comments": "",
+        "x": 917.7884559631348,
+        "y": 150.26844310760498,
+        "z": "1faa4c21.138614",
+        "wires": []
+    },
+    {
+        "id": "4c5e6e0b.0d9a",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 768.4553451538086,
+        "y": 150.2683687210083,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "471ae763.ed73c8"
+            ]
+        ]
+    },
+    {
+        "id": "3600f85a.1aec98",
+        "type": "set",
+        "name": "set: vf-module-id",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.vf-module-id\" value=\"`$vf-module-topology-operation-input.vf-module-request-information.vf-module-id`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 397.17071533203125,
+        "y": 283.51190757751465,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5b189a42.545814",
+        "type": "for",
+        "name": "for k : SERVICE_DATA vnf-networks",
+        "xml": "<for index=\"k\" start=\"0\" end=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 774,
+        "y": 1174,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "a749d767.017348"
+            ]
+        ]
+    },
+    {
+        "id": "a749d767.017348",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA network-role = INPUT",
+        "xml": "<switch test=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].network-role == $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-role`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1134.9634094238281,
+        "y": 1173.099287033081,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "b3cb6d4f.0288f"
+            ]
+        ]
+    },
+    {
+        "id": "b3cb6d4f.0288f",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1414.5088195800781,
+        "y": 1173.144941329956,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "24634a0a.d7c076"
+            ]
+        ]
+    },
+    {
+        "id": "de134847.1f4e48",
+        "type": "set",
+        "name": "set: SERVICE_DATA vnf-networks = AAI DATA",
+        "xml": "<set>\n<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].network-name\" value=\"`$tmp.AnAI.l3network.network-name`\" />\n<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].network-id\" value=\"`$tmp.AnAI.l3network.network-id`\" />\n<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].neutron-id\" value=\"`$tmp.AnAI.l3network.neutron-network-id`\" />\n<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].contrail-network-fqdn\" value=\"`$tmp.AnAI.l3network.contrail-network-fqdn`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1892.982032775879,
+        "y": 1172.0794134140015,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "24634a0a.d7c076",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1574.9354400634766,
+        "y": 1172.961480140686,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "73a4d8d5.c06308",
+                "748cdef5.bc80f",
+                "de134847.1f4e48"
+            ]
+        ]
+    },
+    {
+        "id": "a8393abf.7fcee8",
+        "type": "comment",
+        "name": "Use INPUT vnf-networks to override preload",
+        "info": "",
+        "comments": "",
+        "x": 880.2924880981445,
+        "y": 1064.4257173538208,
+        "z": "1faa4c21.138614",
+        "wires": []
+    },
+    {
+        "id": "181bc12d.03d83f",
+        "type": "switchNode",
+        "name": "switch: INPUT sbunet-name != NULL",
+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].subnet-name != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2357.911766052246,
+        "y": 1280.5684156417847,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "b1aab41.1658748"
+            ]
+        ]
+    },
+    {
+        "id": "b1aab41.1658748",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2595.1617317199707,
+        "y": 1280.3183946609497,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "ebb89f74.08857"
+            ]
+        ]
+    },
+    {
+        "id": "ce3cc9d0.4cee08",
+        "type": "set",
+        "name": "set: service-data = AnAI - subnet-id ",
+        "xml": "<set>\n<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].subnet-id\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 3334.42374420166,
+        "y": 1393.8661336898804,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ebb89f74.08857",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.subnets.subnet != NULL",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2460.923728942871,
+        "y": 1330.866021156311,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "c8277f6a.50834"
+            ]
+        ]
+    },
+    {
+        "id": "94133efa.587e1",
+        "type": "for",
+        "name": "for i : tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2469.352195739746,
+        "y": 1395.2946138381958,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "d4e7d16e.714f7"
+            ]
+        ]
+    },
+    {
+        "id": "d4e7d16e.714f7",
+        "type": "switchNode",
+        "name": "switch: AnAI == INPUT - subnet-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].subnet-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2842.102149963379,
+        "y": 1394.5446977615356,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "cf289518.3fc368"
+            ]
+        ]
+    },
+    {
+        "id": "cf289518.3fc368",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3100.50484085083,
+        "y": 1394.4117259979248,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "ce3cc9d0.4cee08"
+            ]
+        ]
+    },
+    {
+        "id": "c8277f6a.50834",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2746.2452125549316,
+        "y": 1330.449411869049,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "94133efa.587e1"
+            ]
+        ]
+    },
+    {
+        "id": "748cdef5.bc80f",
+        "type": "switchNode",
+        "name": "switch: INPUT sbunet-id != NULL",
+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].subnet-id != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1851.483211517334,
+        "y": 1236.8065958023071,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "87aac3bf.46e16",
+                "8c173a36.9127d8"
+            ]
+        ]
+    },
+    {
+        "id": "1bed8cec.efe9e3",
+        "type": "set",
+        "name": "set: data-data = INPUT - subnet-id ",
+        "xml": "<set>\n<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].subnet-id\" value=\"`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2349.7332077026367,
+        "y": 1237.0565977096558,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "87aac3bf.46e16",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2107.7331771850586,
+        "y": 1236.5565748214722,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "1bed8cec.efe9e3"
+            ]
+        ]
+    },
+    {
+        "id": "8c173a36.9127d8",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2108.9832191467285,
+        "y": 1280.5565958023071,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "181bc12d.03d83f"
+            ]
+        ]
+    },
+    {
+        "id": "12ef162a.3f441a",
+        "type": "switchNode",
+        "name": "switch: INPUT ipv6-sbunet-name != NULL",
+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].ipv6-subnet-name != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2366.185417175293,
+        "y": 1508.7114629745483,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "f70a96da.79e438"
+            ]
+        ]
+    },
+    {
+        "id": "f70a96da.79e438",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2613.4353828430176,
+        "y": 1508.4614419937134,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "f829dcc5.c6de7"
+            ]
+        ]
+    },
+    {
+        "id": "cc6db42c.cf6378",
+        "type": "set",
+        "name": "set: service-data = AnAI - ipv6-subnet-id ",
+        "xml": "<set>\n<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 3342.697395324707,
+        "y": 1622.009181022644,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f829dcc5.c6de7",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.subnets.subnet != NULL",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2469.197380065918,
+        "y": 1559.0090684890747,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "fdeef706.829528"
+            ]
+        ]
+    },
+    {
+        "id": "4f132648.69d248",
+        "type": "for",
+        "name": "for i : tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2477.625846862793,
+        "y": 1623.4376611709595,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "cae2d965.d355a8"
+            ]
+        ]
+    },
+    {
+        "id": "cae2d965.d355a8",
+        "type": "switchNode",
+        "name": "switch: AnAI == INPUT - ipv6-subnet-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].ipv6-subnet-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2850.375801086426,
+        "y": 1622.6877450942993,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "1d5397be.45f898"
+            ]
+        ]
+    },
+    {
+        "id": "1d5397be.45f898",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3108.778491973877,
+        "y": 1622.5547733306885,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "cc6db42c.cf6378"
+            ]
+        ]
+    },
+    {
+        "id": "fdeef706.829528",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2754.5188636779785,
+        "y": 1558.5924592018127,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "4f132648.69d248"
+            ]
+        ]
+    },
+    {
+        "id": "73a4d8d5.c06308",
+        "type": "switchNode",
+        "name": "switch: INPUT ipv6-sbunet-id != NULL",
+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].ipv6-subnet-id != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1859.7568626403809,
+        "y": 1464.9496431350708,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "9cb75fc8.62948",
+                "64acb997.b0bf68"
+            ]
+        ]
+    },
+    {
+        "id": "ae50028d.0d9f6",
+        "type": "set",
+        "name": "set: service-data = INPUT - ipv6-subnet-id ",
+        "xml": "<set>\n<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id\" value=\"`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].ipv6-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2367.0068588256836,
+        "y": 1465.1996450424194,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9cb75fc8.62948",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2116.0068283081055,
+        "y": 1464.6996221542358,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "ae50028d.0d9f6"
+            ]
+        ]
+    },
+    {
+        "id": "64acb997.b0bf68",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2117.2568702697754,
+        "y": 1508.6996431350708,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "12ef162a.3f441a"
+            ]
+        ]
+    },
+    {
+        "id": "df99f43a.192678",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 515.8282470703125,
+        "y": 1070.390067100525,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "44440d79.5a1ee4",
+                "5b189a42.545814"
+            ]
+        ]
+    },
+    {
+        "id": "44440d79.5a1ee4",
+        "type": "switchNode",
+        "name": "switch:vf-module-service-data...vnf-networks_length",
+        "xml": "<switch test=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 831.0153274536133,
+        "y": 1124.4490270614624,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "63358e06.3f664"
+            ]
+        ]
+    },
+    {
+        "id": "63358e06.3f664",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1118.5153198242188,
+        "y": 1124.4490270614624,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "ac876566.e9a498"
+            ]
+        ]
+    },
+    {
+        "id": "ac876566.e9a498",
+        "type": "switchNode",
+        "name": "set: vf-module-service-data...vnf-networks_length = 0",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length\" value = \"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1417.2653198242188,
+        "y": 1124.4490270614624,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a64b9779.a71b08",
+        "type": "success",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1339.638515472412,
+        "y": 1900.6209201812744,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "4696ff9e.15cd7"
+            ]
+        ]
+    },
+    {
+        "id": "3b397c6b.f1ef14",
+        "type": "set",
+        "name": "set: SERVICE_DATA vnf-networks = AAI DATA",
+        "xml": "<set>\n<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].network-name\" value=\"`$tmp.AnAI.l3network.network-name`\" />\n<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].network-id\" value=\"`$tmp.AnAI.l3network.network-id`\" />\n<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].neutron-id\" value=\"`$tmp.AnAI.l3network.neutron-network-id`\" />\n<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].contrail-network-fqdn\" value=\"`$tmp.AnAI.l3network.contrail-network-fqdn`\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2014.0710487365723,
+        "y": 2173.3637895584106,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5d489590.345c3c",
+        "type": "save",
+        "name": "get AnAI - l3-network by name",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-name = $vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks[$j].network-name\" \n\tpfx=\"tmp.AnAI.l3network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1116.531536102295,
+        "y": 1900.8868598937988,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "a64b9779.a71b08",
+                "96f0e56a.e21d98",
+                "1b8842da.0a0e4d"
+            ]
+        ]
+    },
+    {
+        "id": "9aecd914.8483b8",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 858.0431060791016,
+        "y": 1901.1858234405518,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "5d489590.345c3c",
+                "eb351c3a.523a",
+                "a1ca6a21.36bfc8"
+            ]
+        ]
+    },
+    {
+        "id": "60582a4c.d77b14",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'An error occurred while querying AnAI for l3-network with network-name = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$j].network-name`\"  />\n",
+        "comments": "",
+        "x": 1486.9243507385254,
+        "y": 1938.4834985733032,
+        "z": "1faa4c21.138614",
+        "wires": []
+    },
+    {
+        "id": "96f0e56a.e21d98",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1331.7021285163032,
+        "y": 1938.4834985733032,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "60582a4c.d77b14"
+            ]
+        ]
+    },
+    {
+        "id": "4696ff9e.15cd7",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'PRELOAD network-name = ' + $vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks[$j].network-name + ' not found in AnAI'`\"  />\n",
+        "comments": "",
+        "x": 1505.9243812561035,
+        "y": 1900.4835233688354,
+        "z": "1faa4c21.138614",
+        "wires": []
+    },
+    {
+        "id": "1f867022.29e93",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA network-role = PRELOAD",
+        "xml": "<switch test=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].network-role == $vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks[$j].network-role`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1264.674373626709,
+        "y": 2173.2336616516113,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "e72c07ef.a09cd8"
+            ]
+        ]
+    },
+    {
+        "id": "e72c07ef.a09cd8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1549.0770645141602,
+        "y": 2173.1006898880005,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "946a7c8e.c755c"
+            ]
+        ]
+    },
+    {
+        "id": "eb351c3a.523a",
+        "type": "for",
+        "name": "for k : SERVICE_DATA vnf-networks",
+        "xml": "<for index=\"k\" start=\"0\" end=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1134.4244194030762,
+        "y": 2120.483539581299,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "1f867022.29e93"
+            ]
+        ]
+    },
+    {
+        "id": "4c2a528c.ae82fc",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.network-id == null",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.network-id == ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1597.317310333252,
+        "y": 1976.3764724731445,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "c00f083d.1aa798"
+            ]
+        ]
+    },
+    {
+        "id": "c00f083d.1aa798",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1859.567310333252,
+        "y": 1976.3764724731445,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "45a1f95e.d33e58"
+            ]
+        ]
+    },
+    {
+        "id": "45a1f95e.d33e58",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'An error occurred while querying l3-network with network-name = ' + $vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks[$j].network-name + ' , it is likely that there are more than one l3-newtork object with the same network-name in AnAI.'`\"  />\n",
+        "comments": "",
+        "x": 2013.567310333252,
+        "y": 1976.8764724731445,
+        "z": "1faa4c21.138614",
+        "wires": []
+    },
+    {
+        "id": "1b8842da.0a0e4d",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1337.317295074463,
+        "y": 1976.1264533996582,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "4c2a528c.ae82fc"
+            ]
+        ]
+    },
+    {
+        "id": "a1ca6a21.36bfc8",
+        "type": "switchNode",
+        "name": "switch: vf-module-service-data...vnf-networks_length",
+        "xml": "<switch test=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1189.995891571045,
+        "y": 2071.305072784424,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "2beaa433.a0358c"
+            ]
+        ]
+    },
+    {
+        "id": "2beaa433.a0358c",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1477.4958839416504,
+        "y": 2071.305072784424,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "46d2dad3.6e7a34"
+            ]
+        ]
+    },
+    {
+        "id": "46d2dad3.6e7a34",
+        "type": "switchNode",
+        "name": "set: vf-module-service-data...vnf-networks_length = 0",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length\" value = \"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1776.2458839416504,
+        "y": 2071.305072784424,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "19586604.772bba",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA sbunet-id == NULL",
+        "xml": "<switch test=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].subnet-id == ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2000.0316200256348,
+        "y": 2225.2693090438843,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "b3750df1.dad78"
+            ]
+        ]
+    },
+    {
+        "id": "946a7c8e.c755c",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1707.0316123962402,
+        "y": 2173.2693090438843,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "3b397c6b.f1ef14",
+                "19586604.772bba",
+                "a54a422d.7f289"
+            ]
+        ]
+    },
+    {
+        "id": "b3750df1.dad78",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2256.2815856933594,
+        "y": 2225.0192880630493,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "1fb12a07.945fd6"
+            ]
+        ]
+    },
+    {
+        "id": "1fb12a07.945fd6",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA sbunet-name != NULL",
+        "xml": "<switch test=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].subnet-name != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2082.6267700195312,
+        "y": 2285.174117088318,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "7263aff8.1dc94"
+            ]
+        ]
+    },
+    {
+        "id": "7263aff8.1dc94",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2347.876735687256,
+        "y": 2284.924096107483,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "1e753aed.9f0f55"
+            ]
+        ]
+    },
+    {
+        "id": "1cc5f67b.c5836a",
+        "type": "set",
+        "name": "set: service-data = AnAI - subnet-id ",
+        "xml": "<set>\n<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].subnet-id\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 3104.1387329101562,
+        "y": 2408.043137550354,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1e753aed.9f0f55",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.subnets.subnet != NULL",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2201.3529663085938,
+        "y": 2346.1146154403687,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "80ab5bcc.2e28c8"
+            ]
+        ]
+    },
+    {
+        "id": "ea48a7cf.4c4df8",
+        "type": "for",
+        "name": "for i : tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2239.067184448242,
+        "y": 2409.4716176986694,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "145c2385.46aa9c"
+            ]
+        ]
+    },
+    {
+        "id": "145c2385.46aa9c",
+        "type": "switchNode",
+        "name": "switch: AnAI == service-data - subnet-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].subnet-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2611.817138671875,
+        "y": 2408.7217016220093,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "b42e690f.505ff8"
+            ]
+        ]
+    },
+    {
+        "id": "b42e690f.505ff8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2870.219829559326,
+        "y": 2408.5887298583984,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "1cc5f67b.c5836a"
+            ]
+        ]
+    },
+    {
+        "id": "80ab5bcc.2e28c8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2486.6744499206543,
+        "y": 2345.6980061531067,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "ea48a7cf.4c4df8"
+            ]
+        ]
+    },
+    {
+        "id": "5296c6fd.9fcb48",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA ipv6-sbunet-name != NULL",
+        "xml": "<switch test=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-name != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2096.4482421875,
+        "y": 2544.9955739974976,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "e32aea1f.9758e8"
+            ]
+        ]
+    },
+    {
+        "id": "e32aea1f.9758e8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2381.6982078552246,
+        "y": 2544.7455530166626,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "384e37ed.ea75c8"
+            ]
+        ]
+    },
+    {
+        "id": "13d42cf8.7179b3",
+        "type": "set",
+        "name": "set: service-data = AnAI - ipv6-subnet-id ",
+        "xml": "<set>\n<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 3127.9600982666016,
+        "y": 2660.007555961609,
+        "z": "1faa4c21.138614",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "384e37ed.ea75c8",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.subnets.subnet != NULL",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2193.7459716796875,
+        "y": 2603.7931451797485,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "21db5d22.4f1eb2"
+            ]
+        ]
+    },
+    {
+        "id": "1f1251f4.1e980e",
+        "type": "for",
+        "name": "for i : tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2262.8885498046875,
+        "y": 2661.4360361099243,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "c4b44e57.fc7a1"
+            ]
+        ]
+    },
+    {
+        "id": "c4b44e57.fc7a1",
+        "type": "switchNode",
+        "name": "switch: AnAI == service-data - ipv6-subnet-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2635.6385040283203,
+        "y": 2660.686120033264,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "95800325.64ed4"
+            ]
+        ]
+    },
+    {
+        "id": "95800325.64ed4",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2894.0411949157715,
+        "y": 2660.5531482696533,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "13d42cf8.7179b3"
+            ]
+        ]
+    },
+    {
+        "id": "21db5d22.4f1eb2",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2479.067455291748,
+        "y": 2603.3765358924866,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "1f1251f4.1e980e"
+            ]
+        ]
+    },
+    {
+        "id": "b6579139.05a4d",
+        "type": "comment",
+        "name": "Use Preload Data",
+        "info": "",
+        "comments": "",
+        "x": 453.5230941772461,
+        "y": 1850.9603958129883,
+        "z": "1faa4c21.138614",
+        "wires": []
+    },
+    {
+        "id": "a54a422d.7f289",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA ipv6-sbunet-id == NULL",
+        "xml": "<switch test=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id == ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2010.781494140625,
+        "y": 2492.055146217346,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "c01ff5de.4ee4b8"
+            ]
+        ]
+    },
+    {
+        "id": "c01ff5de.4ee4b8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2295.0314598083496,
+        "y": 2491.8051252365112,
+        "z": "1faa4c21.138614",
+        "wires": [
+            [
+                "5296c6fd.9fcb48"
+            ]
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-assign.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-assign.json
new file mode 100644
index 0000000..9915744
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-assign.json
@@ -0,0 +1,406 @@
+[
+    {
+        "id": "c16263f6.6c033",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 122.85714721679688,
+        "y": 48.57143020629883,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "37a9d0a8.5ccc7"
+            ]
+        ]
+    },
+    {
+        "id": "37a9d0a8.5ccc7",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 288.0238037109375,
+        "y": 48.738101959228516,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "588951bd.cad18"
+            ]
+        ]
+    },
+    {
+        "id": "588951bd.cad18",
+        "type": "method",
+        "name": "method vf-module-topology-assign",
+        "xml": "<method rpc='vf-module-topology-assign' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 247.4524040222168,
+        "y": 104.30952453613281,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "23232616.dc87ba"
+            ]
+        ]
+    },
+    {
+        "id": "23232616.dc87ba",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 234.78572463989258,
+        "y": 159.14286041259766,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "f8edc82.b3e8938",
+                "2ec63c84.2fdfa4",
+                "6f2046b4.9e38b8",
+                "70b11385.26396c",
+                "83b4e560.3deac8",
+                "ec42a08c.2f911",
+                "3fb1f49d.968cac",
+                "70c2e0fb.98281"
+            ]
+        ]
+    },
+    {
+        "id": "f8edc82.b3e8938",
+        "type": "set",
+        "name": "set: order-status = PendingCreate",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.oper-status.order-status\" value=\"PendingCreate\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 502.67656326293945,
+        "y": 581.3350772857666,
+        "z": "350dd502.49698a",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2ec63c84.2fdfa4",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 441.8194007873535,
+        "y": 667.0397090911865,
+        "z": "350dd502.49698a",
+        "wires": []
+    },
+    {
+        "id": "2e373aaa.eea7e6",
+        "type": "comment",
+        "name": "request-action = VNFActivateRequest",
+        "info": "",
+        "comments": "",
+        "x": 681.4523811340332,
+        "y": 77.25397491455078,
+        "z": "350dd502.49698a",
+        "wires": []
+    },
+    {
+        "id": "2f391c5c.812e84",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 799.7263221740723,
+        "y": 532.3576011657715,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "47e9fdf3.2b1f24"
+            ]
+        ]
+    },
+    {
+        "id": "ccece92b.253528",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"An error occurred while updating vf-module orchestration-status in AnAI\"/>",
+        "comments": "",
+        "x": 1183.8692512512207,
+        "y": 532.3576717376709,
+        "z": "350dd502.49698a",
+        "wires": []
+    },
+    {
+        "id": "a9a15235.6b621",
+        "type": "save",
+        "name": "save relationship: l3-network",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module:relationship-list\" \n\t\tkey=\"vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id \n\t\t\tand generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id\" >\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"l3-network.network-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$i].network-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 802.031810760498,
+        "y": 375.2578191757202,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "7bf5e0bd.bd877"
+            ]
+        ]
+    },
+    {
+        "id": "7bf5e0bd.bd877",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1014.676082611084,
+        "y": 375.3048334121704,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "6b0b8d97.a1d2c4"
+            ]
+        ]
+    },
+    {
+        "id": "6f2046b4.9e38b8",
+        "type": "for",
+        "name": "for i : SERVICE_DATA vnf-networks",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 507.67861557006836,
+        "y": 375.226300239563,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "a9a15235.6b621"
+            ]
+        ]
+    },
+    {
+        "id": "9195333e.3c5b3",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'An error occurred while saving vf-module l3-network relationship in AnAI with network-id = ' + $vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$i].network-id`\"/>",
+        "comments": "",
+        "x": 1183.726146697998,
+        "y": 485.3211603164673,
+        "z": "350dd502.49698a",
+        "wires": []
+    },
+    {
+        "id": "6b0b8d97.a1d2c4",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 973.4405326843262,
+        "y": 437.6070137023926,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "2266e1a7.71fbbe",
+                "9195333e.3c5b3"
+            ]
+        ]
+    },
+    {
+        "id": "2266e1a7.71fbbe",
+        "type": "save",
+        "name": "delete vf-module: l3-network relationship",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module:relationship-list\" \n\t\tkey=\"vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id \n\t\t\tAND generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id \n\t\t\tAND related-to = l3-network\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1266.8691291809082,
+        "y": 438.0357599258423,
+        "z": "350dd502.49698a",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "70b11385.26396c",
+        "type": "save",
+        "name": "update AnAI - vf-module.orchestration-status",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module\" \n\t\tkey=\"vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id \n\t\t\tand generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id\" >\n<parameter name=\"orchestration-status\" value=\"pending-create\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 535.202465057373,
+        "y": 532.3690986633301,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "2f391c5c.812e84"
+            ]
+        ]
+    },
+    {
+        "id": "47e9fdf3.2b1f24",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 958.1548957824707,
+        "y": 532.4643602371216,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "ccece92b.253528",
+                "2266e1a7.71fbbe"
+            ]
+        ]
+    },
+    {
+        "id": "83b4e560.3deac8",
+        "type": "call",
+        "name": "call: vf-module-topology-assign-vnf-networks",
+        "xml": "<call module='VNF-API' rpc='vf-module-topology-assign-vnf-networks' mode='sync' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 534.9524040222168,
+        "y": 264.8928756713867,
+        "z": "350dd502.49698a",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ec42a08c.2f911",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 465.8572120666504,
+        "y": 626.4642963409424,
+        "z": "350dd502.49698a",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3fb1f49d.968cac",
+        "type": "switchNode",
+        "name": "switch ...SERVICE-DATA vnf-networks[]",
+        "xml": "<switch test=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 520.0357627868652,
+        "y": 315.46430587768555,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "66fc8dde.364c84"
+            ]
+        ]
+    },
+    {
+        "id": "66fc8dde.364c84",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 760.4802360534668,
+        "y": 314.99201583862305,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "5163a821.a1b9a8"
+            ]
+        ]
+    },
+    {
+        "id": "5163a821.a1b9a8",
+        "type": "set",
+        "name": "set SERVICE-DATA vnf-networks[] = 0",
+        "xml": "<set>\n<parameter name='vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length' value='0' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 982.0358450147842,
+        "y": 314.9920365015664,
+        "z": "350dd502.49698a",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "70c2e0fb.98281",
+        "type": "save",
+        "name": "GET AnAI - vf-module",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module\" \n\t\tkey=\"vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id \n\t\t\tand generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id\" \n\t\tpfx=\"tmp.AnAI.vfmodule\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 465.5357322692871,
+        "y": 159.64287090301514,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "5093485a.9aea88",
+                "ef352420.3d6798"
+            ]
+        ]
+    },
+    {
+        "id": "5093485a.9aea88",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 659.5357322692871,
+        "y": 159.39287090301514,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "2a95d52a.bc0f4a"
+            ]
+        ]
+    },
+    {
+        "id": "ef352420.3d6798",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 667.0357475280762,
+        "y": 199.39288139343262,
+        "z": "350dd502.49698a",
+        "wires": [
+            [
+                "a7a735d3.c7fd48"
+            ]
+        ]
+    },
+    {
+        "id": "2a95d52a.bc0f4a",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'An error occurred while querying vf-module from AnAI with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and vnf-instance-id = ' + vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`\"/>",
+        "comments": "",
+        "x": 813.7857322692871,
+        "y": 159.14287090301514,
+        "z": "350dd502.49698a",
+        "wires": []
+    },
+    {
+        "id": "a7a735d3.c7fd48",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'vf-module not found in AnAI with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and vnf-instance-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`\"/>",
+        "comments": "",
+        "x": 834.2857322692871,
+        "y": 199.64287090301514,
+        "z": "350dd502.49698a",
+        "wires": []
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-changeassign.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-changeassign.json
new file mode 100644
index 0000000..f211547
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-changeassign.json
@@ -0,0 +1,694 @@
+[
+    {
+        "id": "74fb79ea.032e48",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 122.85714721679688,
+        "y": 60,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "1f56866e.5a45aa"
+            ]
+        ]
+    },
+    {
+        "id": "1f56866e.5a45aa",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 288.0238037109375,
+        "y": 60.16667175292969,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "7d1ef972.4819e8"
+            ]
+        ]
+    },
+    {
+        "id": "ded9641e.047bb8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 200.3571548461914,
+        "y": 163,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "74023518.66a7dc",
+                "53b04d88.f911e4",
+                "ee20442e.3ca3d8",
+                "4e4ca37c.97abbc",
+                "3db50ae5.43abb6",
+                "6af9e30c.118d8c",
+                "64e590aa.7bcaa",
+                "490cb041.34c72",
+                "3520790.e294188",
+                "8646627b.abeda",
+                "df4daff8.410d8"
+            ]
+        ]
+    },
+    {
+        "id": "74023518.66a7dc",
+        "type": "set",
+        "name": "set: order-status = PendingUpdate",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.oper-status.order-status\" value=\"PendingUpdate\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 495.8020248413086,
+        "y": 887.4610958099365,
+        "z": "82b724af.168de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "53b04d88.f911e4",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 434.07183837890625,
+        "y": 1022.2609748840332,
+        "z": "82b724af.168de8",
+        "wires": []
+    },
+    {
+        "id": "ee20442e.3ca3d8",
+        "type": "switchNode",
+        "name": "switch: service-data order-status = Active",
+        "xml": "<switch test=\"`$vf-module-service-data.oper-status.order-status == Active`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 515.5238189697266,
+        "y": 162.88889145851135,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "6f57b256.79d63c"
+            ]
+        ]
+    },
+    {
+        "id": "2efaeb27.a894b4",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid service-data order status'/>",
+        "comments": "",
+        "x": 920.2736358642578,
+        "y": 162.72226548194885,
+        "z": "82b724af.168de8",
+        "wires": []
+    },
+    {
+        "id": "6f57b256.79d63c",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 761.6904449462891,
+        "y": 162.47214341163635,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "2efaeb27.a894b4"
+            ]
+        ]
+    },
+    {
+        "id": "7d1ef972.4819e8",
+        "type": "method",
+        "name": "method vf-module-topology-changeassign",
+        "xml": "<method rpc='vf-module-topology-changeassign' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 222.85714721679688,
+        "y": 111,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "ded9641e.047bb8"
+            ]
+        ]
+    },
+    {
+        "id": "4e4ca37c.97abbc",
+        "type": "set",
+        "name": "set: last-action ",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.oper-status.last-action\" value=\"`$vf-module-service-data.request-information.request-action`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 433.80957794189453,
+        "y": 933.476110458374,
+        "z": "82b724af.168de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3db50ae5.43abb6",
+        "type": "set",
+        "name": "set: last-order-status = order-status",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.oper-status.last-order-status\" value=\"`$vf-module-service-data.oper-status.order-status`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 497.80957794189453,
+        "y": 841.476110458374,
+        "z": "82b724af.168de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6af9e30c.118d8c",
+        "type": "call",
+        "name": "call: vf-module-topology-assign-vnf-neworks",
+        "xml": "<call module='VNF-API' rpc='vf-module-topology-assign-vnf-networks' mode='sync' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 523.7460479736328,
+        "y": 208.66666793823242,
+        "z": "82b724af.168de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "490cb041.34c72",
+        "type": "save",
+        "name": "delete l3-network relationship",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module:relationship-list\" \n\t\tkey=\"vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id \n\t\t\tAND generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id \n\t\t\tAND related-to = l3-network\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 478.7778015136719,
+        "y": 339.9049777984619,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "9028380b.6c4ac8"
+            ]
+        ]
+    },
+    {
+        "id": "557a38ee.a802f8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'An error occurred while deleting existing vf-module l3-network relationship in AnAI with with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and vnf-instance-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id + ' vf-module update FAILED.'`\"/>",
+        "comments": "",
+        "x": 880.6347961425781,
+        "y": 340.1903476715088,
+        "z": "82b724af.168de8",
+        "wires": []
+    },
+    {
+        "id": "64e590aa.7bcaa",
+        "type": "save",
+        "name": "get AnAI - vf-module",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module\" \n\t\tkey=\"vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id \n\t\t\tand generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id\" \n\t\tpfx=\"tmp.AnAI.vfmodule\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 452.63490295410156,
+        "y": 253.55555725097656,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "6fd52d0e.ed4644",
+                "85739c68.20d2c"
+            ]
+        ]
+    },
+    {
+        "id": "795ec745.e145d8",
+        "type": "save",
+        "name": "save l3-network relationship",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module:relationship-list\" \n\t\tkey=\"vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id \n\t\t\tAND generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id\" >\n\t\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"l3-network.network-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$i].network-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 799.5909881591797,
+        "y": 429.90022468566895,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "c6d96495.8cf3e8"
+            ]
+        ]
+    },
+    {
+        "id": "c6d96495.8cf3e8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1012.7352294921875,
+        "y": 429.94725704193115,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "fc96e652.96f9f8"
+            ]
+        ]
+    },
+    {
+        "id": "3520790.e294188",
+        "type": "for",
+        "name": "for i : SERVICE_DATA vnf-networks",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 495.80943298339844,
+        "y": 429.44017601013184,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "795ec745.e145d8"
+            ]
+        ]
+    },
+    {
+        "id": "cbdefadd.2eea08",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Failed to update vf-module l3-network relationship in AnAI. ' + $error-message`\"/>",
+        "comments": "",
+        "x": 1368.928123474121,
+        "y": 789.1421012878418,
+        "z": "82b724af.168de8",
+        "wires": []
+    },
+    {
+        "id": "fc96e652.96f9f8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1181.713981628418,
+        "y": 429.1780004501343,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "cbdefadd.2eea08",
+                "c910e4b6.a9df08",
+                "434af9d5.0675a8",
+                "264625a3.d0bf3a",
+                "52f02717.530ac8"
+            ]
+        ]
+    },
+    {
+        "id": "434af9d5.0675a8",
+        "type": "save",
+        "name": "delete relationship: vf-module",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module:relationship-list\" \n\t\tkey=\"vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id \n\t\t\tAND generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id \n\t\t\tAND related-to = l3-network\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1421.2140502929688,
+        "y": 477.10680198669434,
+        "z": "82b724af.168de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d3e9f0df.7a967",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'An error occurred while querying vf-module from AnAI with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and vnf-instance-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`\"/>",
+        "comments": "",
+        "x": 833.9204864501953,
+        "y": 254.2696990966797,
+        "z": "82b724af.168de8",
+        "wires": []
+    },
+    {
+        "id": "9028380b.6c4ac8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 694.6349182128906,
+        "y": 340.3333225250244,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "557a38ee.a802f8"
+            ]
+        ]
+    },
+    {
+        "id": "8646627b.abeda",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 455.4286117553711,
+        "y": 979.4286098480225,
+        "z": "82b724af.168de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "264625a3.d0bf3a",
+        "type": "for",
+        "name": "for i : tmp.AnAI.vfmodule.relationship",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.vfmodule.relationship-list.relationship_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1445.1783752441406,
+        "y": 568.0000343322754,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "e2842577.e43338"
+            ]
+        ]
+    },
+    {
+        "id": "e2842577.e43338",
+        "type": "switchNode",
+        "name": "switch: relationship.related-to",
+        "xml": "<switch test=\"`$tmp.AnAI.vfmodule.relationship-list.relationship[$i].related-to`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1756.1783447265625,
+        "y": 567.7143545150757,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "6c2ffb96.bbe484"
+            ]
+        ]
+    },
+    {
+        "id": "6c2ffb96.bbe484",
+        "type": "other",
+        "name": "l3-network",
+        "xml": "<outcome value='l3-network'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1984.1783447265625,
+        "y": 567.7143545150757,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "ee9c3f17.36cc2"
+            ]
+        ]
+    },
+    {
+        "id": "a605f7c0.31a3b8",
+        "type": "for",
+        "name": "for j : tmp.AnAI.vfmodule.relationship-data",
+        "xml": "<for index=\"j\" start=\"0\" end=\"`$tmp.AnAI.vfmodule.relationship-list.relationship[$i].relationship-data_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1884.1783752441406,
+        "y": 702.6071891784668,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "75b5e472.e4c3ac"
+            ]
+        ]
+    },
+    {
+        "id": "75b5e472.e4c3ac",
+        "type": "save",
+        "name": "save l3-network relationship",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module:relationship-list\" \n\t\tkey=\"vf-module.vf-module-id = vf-module-topology-operation-input.vf-module-request-information.vf-module-id \n\t\t\tAND generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id\" >\n\t\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"l3-network.network-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.vfmodule.relationship-list.relationship[$i].relationship-data[$j].relationship-value`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2241.7498321533203,
+        "y": 702.750072479248,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "706c56b8.8643e8",
+                "5f66312e.f434f"
+            ]
+        ]
+    },
+    {
+        "id": "706c56b8.8643e8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2499.7498321533203,
+        "y": 702.750072479248,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "7dd21ad6.da13b4"
+            ]
+        ]
+    },
+    {
+        "id": "6fd52d0e.ed4644",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 642.4920768737793,
+        "y": 253.69842529296875,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "d3e9f0df.7a967"
+            ]
+        ]
+    },
+    {
+        "id": "c910e4b6.a9df08",
+        "type": "set",
+        "name": "set error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`' | An error occurred while saving l3-network relationship with network-id = ' + $vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$i].network-id + ' for vf-module with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and generic-vnf-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1386.2141189575195,
+        "y": 429.10716819763184,
+        "z": "82b724af.168de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7dd21ad6.da13b4",
+        "type": "set",
+        "name": "set error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`$error-message + ' | An error occurred while during rollback of l3-network relationship for vf-module with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and generic-vnf-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2697.7141494750977,
+        "y": 702.285717010498,
+        "z": "82b724af.168de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "85739c68.20d2c",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 649.3849029541016,
+        "y": 296.1388702392578,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "d3e9f0df.7a967"
+            ]
+        ]
+    },
+    {
+        "id": "5f66312e.f434f",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2510.0355377197266,
+        "y": 743.9285688400269,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "7dd21ad6.da13b4"
+            ]
+        ]
+    },
+    {
+        "id": "75eb4741.287e38",
+        "type": "switchNode",
+        "name": "set: vf-module-service-data...vnf-networks_length = 0",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length\" value = \"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1134.9840469360352,
+        "y": 384.7142581939697,
+        "z": "82b724af.168de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6c3f0f76.71273",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 836.2340469360352,
+        "y": 384.7142581939697,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "75eb4741.287e38"
+            ]
+        ]
+    },
+    {
+        "id": "df4daff8.410d8",
+        "type": "switchNode",
+        "name": "switch: vf-module-service-data...vnf-networks_length",
+        "xml": "<switch test=\"`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 548.7340545654297,
+        "y": 384.7142581939697,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "6c3f0f76.71273"
+            ]
+        ]
+    },
+    {
+        "id": "7ee2d878.734fd8",
+        "type": "switchNode",
+        "name": "set: tmp.AnAI.vfmodule.relationship-list.relationship_length = 0",
+        "xml": "<set>\n\t<parameter name=\"tmp.AnAI.vfmodule.relationship-list.relationship_length\" value = \"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2168.9999923706055,
+        "y": 524.0000495910645,
+        "z": "82b724af.168de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a0c959dc.928788",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1851.2499923706055,
+        "y": 524.0000495910645,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "7ee2d878.734fd8"
+            ]
+        ]
+    },
+    {
+        "id": "52f02717.530ac8",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.vfmodule.relationship-list.relationship_length",
+        "xml": "<switch test=\"`$tmp.AnAI.vfmodule.relationship-list.relationship_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1530.75,
+        "y": 524.0000495910645,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "a0c959dc.928788"
+            ]
+        ]
+    },
+    {
+        "id": "767a5f43.e2cc1",
+        "type": "switchNode",
+        "name": "set: tmp.AnAI.vfmodulerelationship-list.relationship[$i].relationship-data_length = 0",
+        "xml": "<set>\n\t<parameter name=\"tmp.AnAI.vfmodule.relationship-list.relationship[$i].relationship-data_length\" value = \"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2777.0000228881836,
+        "y": 655.0000133514404,
+        "z": "82b724af.168de8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4e18247d.2004dc",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2392.2500228881836,
+        "y": 655.0000133514404,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "767a5f43.e2cc1"
+            ]
+        ]
+    },
+    {
+        "id": "a926fa42.76f768",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.vfmodule.relationship-list.relationship[$i].relationship-data_length",
+        "xml": "<switch test=\"`$tmp.AnAI.vfmodule.relationship-list.relationship[$i].relationship-data_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2008.7500305175781,
+        "y": 655.0000133514404,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "4e18247d.2004dc"
+            ]
+        ]
+    },
+    {
+        "id": "ee9c3f17.36cc2",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1596.2500228881836,
+        "y": 654.7500095367432,
+        "z": "82b724af.168de8",
+        "wires": [
+            [
+                "a926fa42.76f768",
+                "a605f7c0.31a3b8"
+            ]
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-delete.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-delete.json
new file mode 100644
index 0000000..c0248e9
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-delete.json
@@ -0,0 +1,240 @@
+[
+    {
+        "id": "311b3dda.3a6ee2",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 391.11109924316406,
+        "y": 442.75004386901855,
+        "z": "dab4c267.b1578",
+        "wires": []
+    },
+    {
+        "id": "3879dfc2.a88",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 168.11104583740234,
+        "y": 141.888916015625,
+        "z": "dab4c267.b1578",
+        "wires": [
+            [
+                "26cf5bcd.60b334",
+                "311b3dda.3a6ee2",
+                "1ebd1e72.56bc82",
+                "92acc6b8.3892a8",
+                "755d4650.1103f8",
+                "fad87c6e.a4bde",
+                "32debc64.c813c4",
+                "e381bce7.8db14"
+            ]
+        ]
+    },
+    {
+        "id": "26cf5bcd.60b334",
+        "type": "set",
+        "name": "set: order-status = Deleted",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.oper-status.order-status\" value=\"Deleted\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 432.11109924316406,
+        "y": 269.75004386901855,
+        "z": "dab4c267.b1578",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3b032898.d41a98",
+        "type": "method",
+        "name": "method vf-module-topology-delete",
+        "xml": "<method rpc='vf-module-topology-delete' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 199.7777328491211,
+        "y": 91.05558013916016,
+        "z": "dab4c267.b1578",
+        "wires": [
+            [
+                "3879dfc2.a88"
+            ]
+        ]
+    },
+    {
+        "id": "ee0d1a29.b42c08",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 269.77770233154297,
+        "y": 39.05558776855469,
+        "z": "dab4c267.b1578",
+        "wires": [
+            [
+                "3b032898.d41a98"
+            ]
+        ]
+    },
+    {
+        "id": "7e50728c.7027fc",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 106.61104583740234,
+        "y": 38.888916015625,
+        "z": "dab4c267.b1578",
+        "wires": [
+            [
+                "ee0d1a29.b42c08"
+            ]
+        ]
+    },
+    {
+        "id": "152dd102.d75f6f",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 639.4798355102539,
+        "y": 185.5732650756836,
+        "z": "dab4c267.b1578",
+        "wires": [
+            [
+                "32c98655.4f8d8a"
+            ]
+        ]
+    },
+    {
+        "id": "32c98655.4f8d8a",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid order-status'/>",
+        "comments": "",
+        "x": 802.8129653930664,
+        "y": 185.57332611083984,
+        "z": "dab4c267.b1578",
+        "wires": []
+    },
+    {
+        "id": "755d4650.1103f8",
+        "type": "set",
+        "name": "set: last-action ",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.oper-status.last-action\" value=\"`$vf-module-service-data.request-information.request-action`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 393.3686981201172,
+        "y": 313.2956371307373,
+        "z": "dab4c267.b1578",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1ebd1e72.56bc82",
+        "type": "switchNode",
+        "name": "switch: vf-module-id config == input",
+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vf-module-id == $vf-module-service-data.vf-module-id`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 459.25494384765625,
+        "y": 142.37646102905273,
+        "z": "dab4c267.b1578",
+        "wires": [
+            [
+                "b8947b68.74b8b8"
+            ]
+        ]
+    },
+    {
+        "id": "b8947b68.74b8b8",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 684.7095031738281,
+        "y": 142.55828857421875,
+        "z": "dab4c267.b1578",
+        "wires": [
+            [
+                "5ffa6798.ed60a8"
+            ]
+        ]
+    },
+    {
+        "id": "5ffa6798.ed60a8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='404'/>\n\t<parameter name='error-message' value='vf-module-id not found in SDNC'/>",
+        "comments": "",
+        "x": 847.300422668457,
+        "y": 142.7173891067505,
+        "z": "dab4c267.b1578",
+        "wires": []
+    },
+    {
+        "id": "92acc6b8.3892a8",
+        "type": "set",
+        "name": "set: last-order-status = order-status",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.oper-status.last-order-status\" value=\"`$vf-module-service-data.oper-status.order-status`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 458.5050506591797,
+        "y": 228.48759269714355,
+        "z": "dab4c267.b1578",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "fad87c6e.a4bde",
+        "type": "set",
+        "name": "Clear vf-module-topology",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.vf-module-topology-information.\" value=\"\" /> \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 425.5050506591797,
+        "y": 353.48759269714355,
+        "z": "dab4c267.b1578",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e381bce7.8db14",
+        "type": "switchNode",
+        "name": "switch: order-status = Active",
+        "xml": "<switch test=\"`$vf-module-service-data.oper-status.order-status == Active`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 437.66273498535156,
+        "y": 185.87306594848633,
+        "z": "dab4c267.b1578",
+        "wires": [
+            [
+                "152dd102.d75f6f"
+            ]
+        ]
+    },
+    {
+        "id": "32debc64.c813c4",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 413.8254165649414,
+        "y": 398.6905174255371,
+        "z": "dab4c267.b1578",
+        "wires": [
+            []
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-operation.json
new file mode 100644
index 0000000..df0a074
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"e0ff2801.a03df8","type":"dgstart","name":"DGSTART","outputs":1,"x":195.71429443359375,"y":81.42857360839844,"z":"68297705.7f4dc8","wires":[["78140404.aeb19c"]]},{"id":"78140404.aeb19c","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":362.99205780029297,"y":81.09524250030518,"z":"68297705.7f4dc8","wires":[["78b1b039.ff13b"]]},{"id":"78b1b039.ff13b","type":"method","name":"vf-module-topology-operation","xml":"<method rpc='vf-module-topology-operation' mode='sync'>\n","comments":"","outputs":1,"x":286.21429443359375,"y":131.65079498291016,"z":"68297705.7f4dc8","wires":[["673f06bc.66a948"]]},{"id":"b7519e64.1a17d","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":714.3254470825195,"y":981.7618408203125,"z":"68297705.7f4dc8","wires":[["27978610.8d377a"]]},{"id":"27978610.8d377a","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='svc-action not recognized'/>\n","comments":"","x":939.3254470825195,"y":981.7618408203125,"z":"68297705.7f4dc8","wires":[]},{"id":"3e3dbb9f.24df84","type":"other","name":"delete","xml":"<outcome value='delete'>","comments":"","outputs":1,"x":714.5754470825195,"y":938.0118427276611,"z":"68297705.7f4dc8","wires":[["ea75b949.ebd298"]]},{"id":"ea75b949.ebd298","type":"call","name":"call: vf-module-topology-delete","xml":"<call module='VNF-API' rpc='vf-module-topology-delete' mode='sync' >","comments":"","outputs":1,"x":994.3255157470703,"y":938.0118436813354,"z":"68297705.7f4dc8","wires":[[]]},{"id":"74dacbed.650b84","type":"comment","name":"vf-module-topology-operation","info":"","comments":"","x":686.6031723022461,"y":122.87301826477051,"z":"68297705.7f4dc8","wires":[]},{"id":"673f06bc.66a948","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":280.7143020629883,"y":188.42857933044434,"z":"68297705.7f4dc8","wires":[["fa0f3bd8.c39298","dbdbdf9f.cc2d6","b9acb3f5.7c184","c1212ec.b8775d","5526645.e90c39c","aa3d3826.cb6ba8","deec160a.22b3a8","4f3a433c.cd903c"]]},{"id":"fa0f3bd8.c39298","type":"switchNode","name":"switch: INPUT vf-module-name","xml":"<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vf-module-name`\">","comments":"","outputs":1,"x":542.380973815918,"y":235.09522151947021,"z":"68297705.7f4dc8","wires":[["82f0521.21003b","640e052e.b656ec"]]},{"id":"82f0521.21003b","type":"outcome","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":756.380973815918,"y":235.09522151947021,"z":"68297705.7f4dc8","wires":[["5b22340b.32f12c"]]},{"id":"640e052e.b656ec","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":755.380973815918,"y":279.0952215194702,"z":"68297705.7f4dc8","wires":[["bb3c05e8.388e28"]]},{"id":"5b22340b.32f12c","type":"switchNode","name":"switch: PRELOAD vf-module-name","xml":"<switch test=\"`$vf-module-preload-data.vf-module-topology-information.vf-module-identifiers.vf-module-name`\">","comments":"","outputs":1,"x":986.380973815918,"y":235.09522151947021,"z":"68297705.7f4dc8","wires":[["54e614b9.3b37bc","ee5a11dd.17f2d"]]},{"id":"54e614b9.3b37bc","type":"outcome","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1221.380973815918,"y":235.09522151947021,"z":"68297705.7f4dc8","wires":[["7f77d834.7fd738"]]},{"id":"ee5a11dd.17f2d","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1222.380973815918,"y":278.0952215194702,"z":"68297705.7f4dc8","wires":[["924b77be.5bf338"]]},{"id":"7f77d834.7fd738","type":"switchNode","name":"switch: vf-module-name INPUT == PRELOAD","xml":"<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vf-module-name == $vf-module-preload-data.vf-module-topology-information.vf-module-identifiers.vf-module-name`\">","comments":"","outputs":1,"x":1479.380958557129,"y":235.09521961212158,"z":"68297705.7f4dc8","wires":[["5165cc73.2191d4"]]},{"id":"5165cc73.2191d4","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1734.7143249511719,"y":235.76212215423584,"z":"68297705.7f4dc8","wires":[["c51991e0.17e19"]]},{"id":"c51991e0.17e19","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='404'/>\n\t<parameter name='error-message' value='vf-module-name not found in vf-module-preload-data'/>","comments":"","x":1893.3809509277344,"y":235.09522151947021,"z":"68297705.7f4dc8","wires":[]},{"id":"924b77be.5bf338","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='No preload data found to match vf-module-name'/>","comments":"","x":1389.380973815918,"y":278.0952215194702,"z":"68297705.7f4dc8","wires":[]},{"id":"bb3c05e8.388e28","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vf-module-name is required'/>","comments":"","x":916.880973815918,"y":279.3452215194702,"z":"68297705.7f4dc8","wires":[]},{"id":"dbdbdf9f.cc2d6","type":"switchNode","name":"switch: INPUT vf-module-model-id","xml":"<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vf-module-model-id`\">","comments":"","outputs":1,"x":548.6032104492188,"y":339.7618923187256,"z":"68297705.7f4dc8","wires":[["738dfde0.130494","9e499c38.3810c"]]},{"id":"738dfde0.130494","type":"outcome","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":771.6032028198242,"y":339.7618923187256,"z":"68297705.7f4dc8","wires":[["4068ad6f.23d994"]]},{"id":"9e499c38.3810c","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":770.6032028198242,"y":381.7618923187256,"z":"68297705.7f4dc8","wires":[["8d635944.f692b8"]]},{"id":"4068ad6f.23d994","type":"switchNode","name":"switch: PRELOAD vf-module-model-id","xml":"<switch test=\"`$vf-module-preload-data.vf-module-topology-information.vf-module-identifiers.vf-module-model-id`\">","comments":"","outputs":1,"x":1010.6032028198242,"y":339.7618923187256,"z":"68297705.7f4dc8","wires":[["5914ef95.68c0c","84aff1dd.c5e9a"]]},{"id":"5914ef95.68c0c","type":"outcome","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1250.6032028198242,"y":339.7618923187256,"z":"68297705.7f4dc8","wires":[["b6797064.75d77"]]},{"id":"84aff1dd.c5e9a","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1250.6032028198242,"y":380.7618923187256,"z":"68297705.7f4dc8","wires":[["5bac39ac.c75ae8"]]},{"id":"8d635944.f692b8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vf-module-model-id is required'/>","comments":"","x":932.1032028198242,"y":382.0118923187256,"z":"68297705.7f4dc8","wires":[]},{"id":"b6797064.75d77","type":"switchNode","name":"switch: vf-module-model-id INPUT == PRELOAD","xml":"<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vf-module-model-id == $vf-module-preload-data.vf-module-topology-information.vf-module-identifiers.vf-module-model-id`\">","comments":"","outputs":1,"x":1521.6031799316406,"y":339.7618923187256,"z":"68297705.7f4dc8","wires":[["a95f9de7.96ae5"]]},{"id":"5bac39ac.c75ae8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='No preload data found to match vf-module-model-id from input'/>","comments":"","x":1410.6031799316406,"y":380.7618923187256,"z":"68297705.7f4dc8","wires":[]},{"id":"a95f9de7.96ae5","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1791.6031799316406,"y":340.0953884124756,"z":"68297705.7f4dc8","wires":[["519c0a31.767ca4"]]},{"id":"519c0a31.767ca4","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='404'/>\n\t<parameter name='error-message' value='vf-module-model-id not found in vf-module-preload-data'/>","comments":"","x":1950.2698059082031,"y":339.42848777770996,"z":"68297705.7f4dc8","wires":[]},{"id":"b9acb3f5.7c184","type":"switchNode","name":"switch: INPUT vf-module-id","xml":"<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vf-module-id`\">","comments":"","outputs":1,"x":526.781867980957,"y":431.72621726989746,"z":"68297705.7f4dc8","wires":[["d1ebf8c0.c6a178","319b8367.1d946c"]]},{"id":"319b8367.1d946c","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":748.7818374633789,"y":471.8690547943115,"z":"68297705.7f4dc8","wires":[["71f257ae.ebcf08"]]},{"id":"d1ebf8c0.c6a178","type":"outcome","name":"0","xml":"<outcome value='0'>","comments":"","outputs":1,"x":748.9247665405273,"y":431.2976531982422,"z":"68297705.7f4dc8","wires":[["71f257ae.ebcf08"]]},{"id":"71f257ae.ebcf08","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vf-module-id cannot be NULL or 0'/>","comments":"","x":923.639045715332,"y":472.15477561950684,"z":"68297705.7f4dc8","wires":[]},{"id":"c1212ec.b8775d","type":"switchNode","name":"switch: INPUT vnf-instance-id","xml":"<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`\">","comments":"","outputs":1,"x":532.6865997314453,"y":525.3730382919312,"z":"68297705.7f4dc8","wires":[["42518bf.4367274","af1b381e.b67c38"]]},{"id":"af1b381e.b67c38","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":765.6865692138672,"y":563.5158758163452,"z":"68297705.7f4dc8","wires":[["e777cce9.c995a"]]},{"id":"42518bf.4367274","type":"outcome","name":"0","xml":"<outcome value='0'>","comments":"","outputs":1,"x":764.8294982910156,"y":525.9444742202759,"z":"68297705.7f4dc8","wires":[["e777cce9.c995a"]]},{"id":"e777cce9.c995a","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vnf-instance-id cannot be NULL or 0'/>","comments":"","x":919.5437774658203,"y":563.8015966415405,"z":"68297705.7f4dc8","wires":[]},{"id":"5526645.e90c39c","type":"switchNode","name":"switch: INPUT vnf-instance-name","xml":"<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vnf-instance-name`\">","comments":"","outputs":1,"x":545.9365882873535,"y":606.3730392456055,"z":"68297705.7f4dc8","wires":[["bf0856af.62fb18"]]},{"id":"bf0856af.62fb18","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":795.9365577697754,"y":606.5158767700195,"z":"68297705.7f4dc8","wires":[["d2d0c1d2.6d45"]]},{"id":"d2d0c1d2.6d45","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vnf-instance-name cannot be NULL'/>","comments":"","x":949.7937660217285,"y":606.8015975952148,"z":"68297705.7f4dc8","wires":[]},{"id":"aa3d3826.cb6ba8","type":"switchNode","name":"switch: INPUT vnf-model-id","xml":"<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vnf-model-id`\">","comments":"","outputs":1,"x":527.6866226196289,"y":653.6230411529541,"z":"68297705.7f4dc8","wires":[["8f8cbdfc.4846a"]]},{"id":"8f8cbdfc.4846a","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":777.6865921020508,"y":653.7658786773682,"z":"68297705.7f4dc8","wires":[["6f5b3f20.92185"]]},{"id":"6f5b3f20.92185","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vnf-model-id cannot be NULL'/>","comments":"","x":931.5438003540039,"y":654.0515995025635,"z":"68297705.7f4dc8","wires":[]},{"id":"deec160a.22b3a8","type":"switchNode","name":"switch: INPUT aic-cloud-region","xml":"<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.aic-cloud-region`\">","comments":"","outputs":1,"x":537.9643020629883,"y":697.9285831451416,"z":"68297705.7f4dc8","wires":[["a1e5052d.4510a8"]]},{"id":"a1e5052d.4510a8","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":755.9642715454102,"y":698.0714206695557,"z":"68297705.7f4dc8","wires":[["8cc2ab6a.205d98"]]},{"id":"8cc2ab6a.205d98","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='aic-cloud-region cannot be NULL'/>","comments":"","x":909.8214797973633,"y":698.357141494751,"z":"68297705.7f4dc8","wires":[]},{"id":"4f3a433c.cd903c","type":"switchNode","name":"switch: svc-action","xml":"<switch test=\"`$vf-module-topology-operation-input.sdnc-request-header.svc-action`\">\n<!--\nleaf svc-action { \n\ttype enumeration { \n\t\tenum \"reserve\";\n\t\tenum \"assign\";\n\t\tenum \"activate\";  // equal to commit\n\t\tenum \"delete\";\t  // equal to commit\n\t\tenum \"changeassign\";\n\t\tenum \"changedelete\";\n\t\tenum \"rollback\";\n\t}\n}\n-->\n\n","comments":"","outputs":1,"x":496.2698440551758,"y":763.7618370056152,"z":"68297705.7f4dc8","wires":[["b7519e64.1a17d","ca8e3631.a35768","6b6e6366.f5966c","64432f78.b4e26","3e3dbb9f.24df84","d425cfc4.5c5b6"]]},{"id":"ca8e3631.a35768","type":"other","name":"assign","xml":"<outcome value='assign'>","comments":"","outputs":1,"x":713.8254013061523,"y":763.7618427276611,"z":"68297705.7f4dc8","wires":[["b7efe2a6.85804"]]},{"id":"6b6e6366.f5966c","type":"other","name":"activate","xml":"<outcome value='activate'>","comments":"","outputs":1,"x":716.8254165649414,"y":853.0118312835693,"z":"68297705.7f4dc8","wires":[["ba7e49a5.adf968"]]},{"id":"64432f78.b4e26","type":"other","name":"rollback","xml":"<outcome value='rollback'>","comments":"","outputs":1,"x":716.5754165649414,"y":895.2618322372437,"z":"68297705.7f4dc8","wires":[["7fbdb178.da1f3"]]},{"id":"d425cfc4.5c5b6","type":"other","name":"changeassign","xml":"<outcome value='changeassign'>","comments":"","outputs":1,"x":735.3254165649414,"y":809.261833190918,"z":"68297705.7f4dc8","wires":[["f52637d5.69b248"]]},{"id":"b7efe2a6.85804","type":"call","name":"call: vf-module-topology-assign","xml":"<call module='VNF-API' rpc='vf-module-topology-assign' mode='sync' >","comments":"","outputs":1,"x":994.0754013061523,"y":763.7618408203125,"z":"68297705.7f4dc8","wires":[[]]},{"id":"f52637d5.69b248","type":"call","name":"call: vf-module-topology-changeassign","xml":"<call module='VNF-API' rpc='vf-module-topology-changeassign' mode='sync' >","comments":"","outputs":1,"x":1017.3255233764648,"y":808.7618408203125,"z":"68297705.7f4dc8","wires":[[]]},{"id":"7fbdb178.da1f3","type":"call","name":"call: vf-module-topology-rollback","xml":"<call module='VNF-API' rpc='vf-module-topology-rollback' mode='sync' >","comments":"","outputs":1,"x":999.0755233764648,"y":895.2618427276611,"z":"68297705.7f4dc8","wires":[[]]},{"id":"ba7e49a5.adf968","type":"call","name":"call: vf-module-topology-activate","xml":"<call module='VNF-API' rpc='vf-module-topology-activate' mode='sync' >","comments":"","outputs":1,"x":998.5755157470703,"y":853.2618365287781,"z":"68297705.7f4dc8","wires":[[]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-rollback.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-rollback.json
new file mode 100644
index 0000000..60bebe7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vf-module-topology-rollback.json
@@ -0,0 +1,299 @@
+[
+    {
+        "id": "c3ce5a21.858818",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 156.80559539794922,
+        "y": 155.7499885559082,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            [
+                "b7bd282e.ecbe08"
+            ]
+        ]
+    },
+    {
+        "id": "504ed4c1.19f72c",
+        "type": "method",
+        "name": "method  vf-module-topology-rollback",
+        "xml": "<method rpc='vf-module-topology-rollback' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 185.22228240966797,
+        "y": 103.1666612625122,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            [
+                "c3ce5a21.858818"
+            ]
+        ]
+    },
+    {
+        "id": "bbc0a862.2012a8",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 262.3333435058594,
+        "y": 44.055559158325195,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            [
+                "504ed4c1.19f72c"
+            ]
+        ]
+    },
+    {
+        "id": "dc5c5f1f.f5323",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 96.61115264892578,
+        "y": 43.888885498046875,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            [
+                "bbc0a862.2012a8"
+            ]
+        ]
+    },
+    {
+        "id": "69f49ed4.8c74a",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 895.0556182861328,
+        "y": 508.4972972869873,
+        "z": "a2906cac.f91a6",
+        "wires": []
+    },
+    {
+        "id": "5f1c1e9f.c2fb3",
+        "type": "set",
+        "name": "set: order-status = Deleted",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.oper-status.order-status\" value=\"Deleted\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 930.8056182861328,
+        "y": 337.2751064300537,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "560147c0.dbc8c8",
+        "type": "switchNode",
+        "name": "switch: order-status = PendingCreate",
+        "xml": "<switch test=\"`$vf-module-service-data.oper-status.order-status == PendingCreate`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 963.6465606689453,
+        "y": 251.40388870239258,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            [
+                "190a74c8.9c3ddb"
+            ]
+        ]
+    },
+    {
+        "id": "190a74c8.9c3ddb",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1195.2299423217773,
+        "y": 251.2372007369995,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            [
+                "c8163813.24eb68"
+            ]
+        ]
+    },
+    {
+        "id": "c8163813.24eb68",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid order-status'/>",
+        "comments": "",
+        "x": 1347.5630722045898,
+        "y": 251.23726177215576,
+        "z": "a2906cac.f91a6",
+        "wires": []
+    },
+    {
+        "id": "9439ef4e.19bcf",
+        "type": "set",
+        "name": "set: last-action ",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.oper-status.last-action\" value=\"`$vf-modules-service-data.request-information.request-action`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 892.5633125305176,
+        "y": 379.57069969177246,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2366439a.26ba4c",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1218.9041366577148,
+        "y": 204.1944456100464,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            [
+                "378d2536.971caa"
+            ]
+        ]
+    },
+    {
+        "id": "378d2536.971caa",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='404'/>\n\t<parameter name='error-message' value=\"`'vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' not found in SDNC'`\"/>",
+        "comments": "",
+        "x": 1378.9949569702148,
+        "y": 204.60354900360107,
+        "z": "a2906cac.f91a6",
+        "wires": []
+    },
+    {
+        "id": "97215d09.0cf54",
+        "type": "set",
+        "name": "set: last-order-status = order-status",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.oper-status.last-order-status\" value=\"`$vf-module-service-data.oper-status.order-status`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 956.4496612548828,
+        "y": 294.59599781036377,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "98c2d38b.6194",
+        "type": "set",
+        "name": "Clear vf-module topology",
+        "xml": "<set>\n\t<parameter name=\"vf-module-service-data.\" value=\"\" /> \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 925.9496612548828,
+        "y": 423.2626552581787,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "77cc369b.dab328",
+        "type": "switchNode",
+        "name": "switch:CONFIG == INPUT - vf-module-id",
+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-information.vf-module-id == $vf-module-service-data.vf-module-id`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 975.0556182861328,
+        "y": 204.1944456100464,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            [
+                "2366439a.26ba4c"
+            ]
+        ]
+    },
+    {
+        "id": "b7bd282e.ecbe08",
+        "type": "switchNode",
+        "name": "switch: order-status = PendingCreate",
+        "xml": "<switch test=\"`$vf-module-service-data.oper-status.order-status == PendingCreate`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 264.30560302734375,
+        "y": 202.69444942474365,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            [
+                "d8a6efb4.1cae2"
+            ]
+        ]
+    },
+    {
+        "id": "d8a6efb4.1cae2",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 500.5555953979492,
+        "y": 203.44444274902344,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            [
+                "d28acb25.7ef2e8"
+            ]
+        ]
+    },
+    {
+        "id": "d28acb25.7ef2e8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 662.5555953979492,
+        "y": 203.44444274902344,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            [
+                "77cc369b.dab328",
+                "560147c0.dbc8c8",
+                "97215d09.0cf54",
+                "5f1c1e9f.c2fb3",
+                "9439ef4e.19bcf",
+                "98c2d38b.6194",
+                "69f49ed4.8c74a",
+                "5a9a93a0.4a243c"
+            ]
+        ]
+    },
+    {
+        "id": "58f1f93f.d350c8",
+        "type": "comment",
+        "name": "request-action = VNFActivateRequest, svc-action = rollback",
+        "info": "",
+        "comments": "",
+        "x": 760.3056030273438,
+        "y": 80.44444465637207,
+        "z": "a2906cac.f91a6",
+        "wires": []
+    },
+    {
+        "id": "5a9a93a0.4a243c",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 916.6666259765625,
+        "y": 465.5555419921875,
+        "z": "a2906cac.f91a6",
+        "wires": [
+            []
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-activate.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-activate.json
new file mode 100644
index 0000000..9e76fa6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-activate.json
@@ -0,0 +1,354 @@
+[
+    {
+        "id": "224ab88a.0adf58",
+        "type": "set",
+        "name": "set: order-status = Active",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.oper-status.order-status\" value=\"Active\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 423.33331298828125,
+        "y": 374.3888626098633,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ab9eb400.713038",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 170.33330535888672,
+        "y": 141.88887786865234,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            [
+                "224ab88a.0adf58",
+                "c8ee6ab7.bac638",
+                "c0d479cd.b79348",
+                "34cb709c.929ed",
+                "f798ae57.6d47d",
+                "b8342ba1.d183f8",
+                "a8c37c05.42ceb",
+                "716ea0ca.5337a"
+            ]
+        ]
+    },
+    {
+        "id": "e7f31ebf.f0df3",
+        "type": "method",
+        "name": "method vnf-instance-topology-activate",
+        "xml": "<method rpc='vnf-instance-topology-activate' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 212.99999237060547,
+        "y": 86.0555419921875,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            [
+                "ab9eb400.713038"
+            ]
+        ]
+    },
+    {
+        "id": "ef96001e.3e2e5",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 304.99996185302734,
+        "y": 39.05554962158203,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            [
+                "e7f31ebf.f0df3"
+            ]
+        ]
+    },
+    {
+        "id": "5b8d2293.3efc3c",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 139.83330535888672,
+        "y": 38.888877868652344,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            [
+                "ef96001e.3e2e5"
+            ]
+        ]
+    },
+    {
+        "id": "c8ee6ab7.bac638",
+        "type": "switchNode",
+        "name": "switch: order-status = PendingCreate",
+        "xml": "<switch test=\"`$vnf-instance-service-data.oper-status.order-status == PendingCreate`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 462.66668701171875,
+        "y": 270.72208404541016,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            [
+                "2f2bb679.ddde5a"
+            ]
+        ]
+    },
+    {
+        "id": "2f2bb679.ddde5a",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 712.0000381469727,
+        "y": 271.05539321899414,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            [
+                "caf23eef.2d6a7"
+            ]
+        ]
+    },
+    {
+        "id": "9112f66c.accf18",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid order-status'/>",
+        "comments": "",
+        "x": 1370.3331604003906,
+        "y": 270.0554447174072,
+        "z": "76e70bd1.ad60c4",
+        "wires": []
+    },
+    {
+        "id": "f798ae57.6d47d",
+        "type": "switchNode",
+        "name": "switch:vnf-instance-id   config == input",
+        "xml": "<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id == $vnf-instance-service-data.vnf-instance-id`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 456.1060485839844,
+        "y": 218.93431854248047,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            [
+                "d6b1f417.d762b8"
+            ]
+        ]
+    },
+    {
+        "id": "d6b1f417.d762b8",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 684.5605239868164,
+        "y": 219.11613845825195,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            [
+                "7f1082ca.4c62bc"
+            ]
+        ]
+    },
+    {
+        "id": "7f1082ca.4c62bc",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value=\"`'vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id + ' not found in SDNC'`\"/>",
+        "comments": "",
+        "x": 837.6514663696289,
+        "y": 219.02524185180664,
+        "z": "76e70bd1.ad60c4",
+        "wires": []
+    },
+    {
+        "id": "c0d479cd.b79348",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 392.4444274902344,
+        "y": 595.0555191040039,
+        "z": "76e70bd1.ad60c4",
+        "wires": []
+    },
+    {
+        "id": "caf23eef.2d6a7",
+        "type": "switchNode",
+        "name": "switch: order-status = PendingUpdate",
+        "xml": "<switch test=\"`$vnf-instance-service-data.oper-status.order-status == PendingUpdate`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 962.9242324829102,
+        "y": 270.4798011779785,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            [
+                "3d49c074.c55d4"
+            ]
+        ]
+    },
+    {
+        "id": "3d49c074.c55d4",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1205.3786392211914,
+        "y": 270.4797706604004,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            [
+                "9112f66c.accf18"
+            ]
+        ]
+    },
+    {
+        "id": "26b3d7a2.652ae8",
+        "type": "comment",
+        "name": "once success is returned, operational-data gets saved",
+        "info": "",
+        "comments": "",
+        "x": 738.8510208129883,
+        "y": 555.9898414611816,
+        "z": "76e70bd1.ad60c4",
+        "wires": []
+    },
+    {
+        "id": "34cb709c.929ed",
+        "type": "set",
+        "name": "set: last-order-status = order-status",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.oper-status.last-order-status\" value=\"`$vnf-instance-service-data.oper-status.order-status`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 456.4469909667969,
+        "y": 323.00257110595703,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1c5ee2ad.503e0d",
+        "type": "comment",
+        "name": "request-action = VNFActivateRequest, svc-action = activate",
+        "info": "",
+        "comments": "",
+        "x": 718.9443893432617,
+        "y": 78.22221183776855,
+        "z": "76e70bd1.ad60c4",
+        "wires": []
+    },
+    {
+        "id": "b8342ba1.d183f8",
+        "type": "set",
+        "name": "set: service-data = input",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.\" value=\"vnf-instance-topology-operation-input.\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 420.33331298828125,
+        "y": 509.4444351196289,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a8c37c05.42ceb",
+        "type": "set",
+        "name": "set: last-action ",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.oper-status.last-action\" value=\"`$vnf-instance-service-data.request-information.request-action`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 390.33331298828125,
+        "y": 421.4444351196289,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "9d73784e.83dda8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 778.7460327148438,
+        "y": 464.43293380737305,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            [
+                "852e8aa2.d5c6c8"
+            ]
+        ]
+    },
+    {
+        "id": "852e8aa2.d5c6c8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'An error occurred while updating vnf-instance orchestration-status in AnAI with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`\"/>",
+        "comments": "",
+        "x": 961.8889617919922,
+        "y": 464.43300437927246,
+        "z": "76e70bd1.ad60c4",
+        "wires": []
+    },
+    {
+        "id": "5f34e90c.952258",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 414.65076446533203,
+        "y": 553.1586799621582,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "716ea0ca.5337a",
+        "type": "save",
+        "name": "update AnAI - vnf-instance.orchestration-status",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\"   \n\t\tkey=\"generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id\" >\n<parameter name=\"orchestration-status\" value=\"active\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 491.22217559814453,
+        "y": 464.44443130493164,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            [
+                "9d73784e.83dda8",
+                "d85d5574.f399a8"
+            ]
+        ]
+    },
+    {
+        "id": "d85d5574.f399a8",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 785.9721984863281,
+        "y": 507.1944456100464,
+        "z": "76e70bd1.ad60c4",
+        "wires": [
+            [
+                "852e8aa2.d5c6c8"
+            ]
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-assign-vnf-networks.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-assign-vnf-networks.json
new file mode 100644
index 0000000..91e1d15
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-assign-vnf-networks.json
@@ -0,0 +1,1873 @@
+[
+    {
+        "id": "2febef4a.283f9",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 142.85714721679688,
+        "y": 42.85714340209961,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "87e9f370.e9afd"
+            ]
+        ]
+    },
+    {
+        "id": "87e9f370.e9afd",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 308.0238037109375,
+        "y": 43.0238151550293,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "93f9836d.c6161"
+            ]
+        ]
+    },
+    {
+        "id": "93f9836d.c6161",
+        "type": "method",
+        "name": "method vnf-instance-topology-assign-vnf-networks",
+        "xml": "<method rpc='vnf-instance-topology-assign-vnf-networks' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 271.2738265991211,
+        "y": 97.27380752563477,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "32b0dfaf.61c42"
+            ]
+        ]
+    },
+    {
+        "id": "32b0dfaf.61c42",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 223.60714721679688,
+        "y": 146.1071434020996,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "469e6730.fe15a8",
+                "86c0733.b9d429",
+                "5927f9c6.e24288",
+                "62bcb573.1f631c",
+                "c6c3193c.d163d8",
+                "c5892e4d.2c5e1",
+                "675a0354.e31bbc"
+            ]
+        ]
+    },
+    {
+        "id": "5c01cf7e.f97ba",
+        "type": "switchNode",
+        "name": "switch test: INPUT network-id = NULL or 0",
+        "xml": "<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-id == '' or $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-id == '0'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 804.0494194030762,
+        "y": 698.0935974121094,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "f75a2a6c.ecff98",
+                "35d46151.35aa0e"
+            ]
+        ]
+    },
+    {
+        "id": "f75a2a6c.ecff98",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1093.4129066467285,
+        "y": 741.2754673957825,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "8e53b29.404cb5"
+            ]
+        ]
+    },
+    {
+        "id": "8e53b29.404cb5",
+        "type": "switchNode",
+        "name": "switch : INPUT network-name = NULL",
+        "xml": "<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-name == '' or $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-name == '0'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1331.1950073242188,
+        "y": 741.1194458007812,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "8819d24.34e3e3",
+                "4bb47302.d72c4c"
+            ]
+        ]
+    },
+    {
+        "id": "35d46151.35aa0e",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1093.433193206787,
+        "y": 697.9824938774109,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "6dd56a34.8d5b54"
+            ]
+        ]
+    },
+    {
+        "id": "8819d24.34e3e3",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1569.3869590759277,
+        "y": 780.6749277114868,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "7b1b2acb.ddf7c4"
+            ]
+        ]
+    },
+    {
+        "id": "6dd56a34.8d5b54",
+        "type": "save",
+        "name": "get  AnAI - l3-network by id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-id\" \n\tpfx=\"tmp.AnAI.l3network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1294.6553077697754,
+        "y": 697.9826617240906,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "44c56e39.3f0a8",
+                "51e53ee8.48261"
+            ]
+        ]
+    },
+    {
+        "id": "44c56e39.3f0a8",
+        "type": "success",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1497.599998474121,
+        "y": 697.5381102561951,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "dff64318.2bcdb"
+            ]
+        ]
+    },
+    {
+        "id": "19517c79.8ad8d4",
+        "type": "for",
+        "name": "for i : INPUT vnf-networks",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 582.3432960510254,
+        "y": 554.5862808227539,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "bdc05789.7d3538"
+            ]
+        ]
+    },
+    {
+        "id": "7b1b2acb.ddf7c4",
+        "type": "save",
+        "name": "get AnAI - l3-network by name",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-name = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-name\" \n\tpfx=\"tmp.AnAI.l3network\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1779.8889617919922,
+        "y": 780.4167194366455,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "2e045a8b.0e6f96",
+                "8351920.613ce7"
+            ]
+        ]
+    },
+    {
+        "id": "2e045a8b.0e6f96",
+        "type": "success",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2001.1389617919922,
+        "y": 780.6667804718018,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "dff64318.2bcdb"
+            ]
+        ]
+    },
+    {
+        "id": "7b66b18d.2f326",
+        "type": "set",
+        "name": "initialize tmp.usePreload = 1 and tmp.AAI.l3network",
+        "xml": "<set>\n<parameter name='tmp.usePreload' value='1' />\n<parameter name='tmp.AnAI.l3network.' value='' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 513.8369369506836,
+        "y": 468.31164169311523,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "43e60079.dc59f",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 173.7711410522461,
+        "y": 468.09618759155273,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "7b66b18d.2f326",
+                "47109692.f76808",
+                "30733a26.180766"
+            ]
+        ]
+    },
+    {
+        "id": "469e6730.fe15a8",
+        "type": "for",
+        "name": "for j : PRELOAD vnf-networks",
+        "xml": "<for index=\"j\" start=\"0\" end=\"`$vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 307.99608612060547,
+        "y": 381.35712814331055,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "43e60079.dc59f"
+            ]
+        ]
+    },
+    {
+        "id": "47109692.f76808",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 349.7234115600586,
+        "y": 554.5161724090576,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "19517c79.8ad8d4",
+                "7c927d87.7b5564"
+            ]
+        ]
+    },
+    {
+        "id": "bdc05789.7d3538",
+        "type": "switchNode",
+        "name": "switch : PRELOAD network-role = INPUT",
+        "xml": "<switch test=\"`$vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$j].network-role == $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-role`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 891.7234764099121,
+        "y": 553.879843711853,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "c183486b.a5ef78"
+            ]
+        ]
+    },
+    {
+        "id": "c183486b.a5ef78",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1142.5189018249512,
+        "y": 554.1754860877991,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "54abbc42.575c24"
+            ]
+        ]
+    },
+    {
+        "id": "54abbc42.575c24",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 500.80447006225586,
+        "y": 654.9546413421631,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "5c01cf7e.f97ba",
+                "210d0a9b.6fcbb6",
+                "90f51ab8.31eb88"
+            ]
+        ]
+    },
+    {
+        "id": "210d0a9b.6fcbb6",
+        "type": "set",
+        "name": "set tmp.usePreload = 0",
+        "xml": "<set>\n<parameter name='tmp.usePreload' value='0' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 745.1681022644043,
+        "y": 654.8637704849243,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4bb47302.d72c4c",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1568.9448928833008,
+        "y": 741.3809204101562,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "dff64318.2bcdb"
+            ]
+        ]
+    },
+    {
+        "id": "90f51ab8.31eb88",
+        "type": "switchNode",
+        "name": "switch : tmp.usePreload= 0",
+        "xml": "<switch test=\"`$tmp.usePreload == 0`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 753.667610168457,
+        "y": 972.085075378418,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "d1d0fb28.49edd8"
+            ]
+        ]
+    },
+    {
+        "id": "d1d0fb28.49edd8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 960.6674880981445,
+        "y": 972.0851974487305,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "5b8f0229.494b7c"
+            ]
+        ]
+    },
+    {
+        "id": "95ee9ed6.51075",
+        "type": "for",
+        "name": "for k : SERVICE_DATA vnf-networks",
+        "xml": "<for index=\"k\" start=\"0\" end=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 834.2347030639648,
+        "y": 1170.0867052078247,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "5e01584.eae73a8"
+            ]
+        ]
+    },
+    {
+        "id": "5e01584.eae73a8",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA network-role = INPUT",
+        "xml": "<switch test=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].network-role == $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-role`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1195.198112487793,
+        "y": 1169.1859922409058,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "c658b72e.64fd88"
+            ]
+        ]
+    },
+    {
+        "id": "c658b72e.64fd88",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1474.743522644043,
+        "y": 1169.2316465377808,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "55115b00.d54c94"
+            ]
+        ]
+    },
+    {
+        "id": "7c927d87.7b5564",
+        "type": "switchNode",
+        "name": "switch: tmp.usePreload= 1",
+        "xml": "<switch test=\"`$tmp.usePreload == 1`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 577.5398750305176,
+        "y": 1811.4806985855103,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "cb0441d2.c823a"
+            ]
+        ]
+    },
+    {
+        "id": "cb0441d2.c823a",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 785.5714530944824,
+        "y": 1811.220950126648,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "7eabce1e.f927a"
+            ]
+        ]
+    },
+    {
+        "id": "dff64318.2bcdb",
+        "type": "set",
+        "name": "set tmp.usePreload = 1",
+        "xml": "<set>\n<parameter name='tmp.usePreload' value='1' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1763.5529861450195,
+        "y": 882.1399440765381,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e2672de2.41ec7",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'An error occurred while querying AnAI for l3-network with network-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-id`\"  />\n",
+        "comments": "",
+        "x": 1648.5237986246743,
+        "y": 656.6626608106826,
+        "z": "705ac336.10121c",
+        "wires": []
+    },
+    {
+        "id": "51e53ee8.48261",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1491.3015764024522,
+        "y": 656.6626608106826,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "e2672de2.41ec7"
+            ]
+        ]
+    },
+    {
+        "id": "e8382ace.043858",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'An error occurred while querying AnAI for l3-network with network-name = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-name`\"  />\n",
+        "comments": "",
+        "x": 2149.634719848633,
+        "y": 738.8848762512207,
+        "z": "705ac336.10121c",
+        "wires": []
+    },
+    {
+        "id": "8351920.613ce7",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1992.4124976264102,
+        "y": 738.8848762512207,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "e8382ace.043858"
+            ]
+        ]
+    },
+    {
+        "id": "96febb32.ff1698",
+        "type": "set",
+        "name": "set: SERVICE_DATA vnf-networks = AAI DATA",
+        "xml": "<set>\n<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].network-name\" value=\"`$tmp.AnAI.l3network.network-name`\" />\n<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].network-id\" value=\"`$tmp.AnAI.l3network.network-id`\" />\n<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].neutron-id\" value=\"`$tmp.AnAI.l3network.neutron-network-id`\" />\n<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].contrail-network-fqdn\" value=\"`$tmp.AnAI.l3network.contrail-network-fqdn`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1953.2167358398438,
+        "y": 1168.1661186218262,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b430a14b.edbac",
+        "type": "success",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1423.1784019470215,
+        "y": 1811.1015844345093,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "5e981db0.af4e04"
+            ]
+        ]
+    },
+    {
+        "id": "bfa6a0be.7489",
+        "type": "set",
+        "name": "set: SERVICE_DATA vnf-networks = AAI DATA",
+        "xml": "<set>\n<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].network-name\" value=\"`$tmp.AnAI.l3network.network-name`\" />\n<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].network-id\" value=\"`$tmp.AnAI.l3network.network-id`\" />\n<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].neutron-id\" value=\"`$tmp.AnAI.l3network.neutron-network-id`\" />\n<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].contrail-network-fqdn\" value=\"`$tmp.AnAI.l3network.contrail-network-fqdn`\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2097.6109352111816,
+        "y": 2083.8444538116455,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ab894ac3.a9bab8",
+        "type": "save",
+        "name": "get AnAI - l3-network by name",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-name = $vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$j].network-name\" \n\tpfx=\"tmp.AnAI.l3network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1200.0714225769043,
+        "y": 1811.3675241470337,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "b430a14b.edbac",
+                "c1f93466.7c2698",
+                "fd1394ec.ad0d08"
+            ]
+        ]
+    },
+    {
+        "id": "7eabce1e.f927a",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 941.5829925537109,
+        "y": 1811.6664876937866,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "ab894ac3.a9bab8",
+                "74f2ba7a.8cc2c4",
+                "1538dd04.c879b3"
+            ]
+        ]
+    },
+    {
+        "id": "eb0f970.2983468",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'An error occurred while querying AnAI for l3-network with network-name = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$j].network-name`\"  />\n",
+        "comments": "",
+        "x": 1570.4642372131348,
+        "y": 1848.964162826538,
+        "z": "705ac336.10121c",
+        "wires": []
+    },
+    {
+        "id": "c1f93466.7c2698",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1415.2420149909126,
+        "y": 1848.964162826538,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "eb0f970.2983468"
+            ]
+        ]
+    },
+    {
+        "id": "5e981db0.af4e04",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'PRELOAD network-name = ' + $vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$j].network-name + ' not found in AnAI'`\"  />\n",
+        "comments": "",
+        "x": 1589.464267730713,
+        "y": 1810.9641876220703,
+        "z": "705ac336.10121c",
+        "wires": []
+    },
+    {
+        "id": "86c0733.b9d429",
+        "type": "switchNode",
+        "name": "switch ...PRELOAD vnf-networks[]",
+        "xml": "<switch test=\"`$vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 487.60713958740234,
+        "y": 325.6071472167969,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "6be8fc2.6fa3c04"
+            ]
+        ]
+    },
+    {
+        "id": "6be8fc2.6fa3c04",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 715.0516128540039,
+        "y": 325.1348571777344,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "71d9fad7.21cca4"
+            ]
+        ]
+    },
+    {
+        "id": "71d9fad7.21cca4",
+        "type": "set",
+        "name": "set PRELOAD vnf-networks[] = 0",
+        "xml": "<set>\n<parameter name = \"vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length\" value=\"0\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 936.6072218153213,
+        "y": 325.13487784067775,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "30733a26.180766",
+        "type": "switchNode",
+        "name": "switch ...INPUT vnf-networks[]",
+        "xml": "<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 403.1071548461914,
+        "y": 509.3571252822876,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "65ed996e.186c98"
+            ]
+        ]
+    },
+    {
+        "id": "65ed996e.186c98",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 626.5516052246094,
+        "y": 509.13486099243164,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "62ba63ce.b4775c"
+            ]
+        ]
+    },
+    {
+        "id": "62ba63ce.b4775c",
+        "type": "set",
+        "name": "set INPUT vnf-networks_length = 0",
+        "xml": "<set>\n<parameter name='vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks_length' value='0' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 859.1072141859268,
+        "y": 509.134881655375,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d7d2ccb7.b7852",
+        "type": "comment",
+        "name": "For each preload network, see if there is an override in input",
+        "info": "",
+        "comments": "",
+        "x": 777.218376159668,
+        "y": 417.57937240600586,
+        "z": "705ac336.10121c",
+        "wires": []
+    },
+    {
+        "id": "cb5c7a6.d166888",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA network-role = PRELOAD",
+        "xml": "<switch test=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].network-role == $vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$j].network-role`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1348.2142601013184,
+        "y": 2083.714325904846,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "44615613.416bf8"
+            ]
+        ]
+    },
+    {
+        "id": "44615613.416bf8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1632.6169509887695,
+        "y": 2083.5813541412354,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "9eb668ef.2179a8"
+            ]
+        ]
+    },
+    {
+        "id": "74f2ba7a.8cc2c4",
+        "type": "for",
+        "name": "for k : SERVICE_DATA vnf-networks",
+        "xml": "<for index=\"k\" start=\"0\" end=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1217.9643058776855,
+        "y": 2030.9642038345337,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "cb5c7a6.d166888"
+            ]
+        ]
+    },
+    {
+        "id": "24c39fed.a3597",
+        "type": "comment",
+        "name": "CALLED BY vnf-instance-topology-assign AND vnf-instance-topology-changeassign",
+        "info": "",
+        "comments": "",
+        "x": 829.273796081543,
+        "y": 88.21825790405273,
+        "z": "705ac336.10121c",
+        "wires": []
+    },
+    {
+        "id": "62bcb573.1f631c",
+        "type": "set",
+        "name": "set: service-data =+ input",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.\" value=\"vnf-instance-topology-operation-input.\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 459.384916305542,
+        "y": 234.55158233642578,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5927f9c6.e24288",
+        "type": "set",
+        "name": "set: service-data = preload-data",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.\" value=\"vnf-instance-preload-data.\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 479.28903007507324,
+        "y": 192.69806671142578,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c6c3193c.d163d8",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 416.6428451538086,
+        "y": 2581.464366912842,
+        "z": "705ac336.10121c",
+        "wires": []
+    },
+    {
+        "id": "c5892e4d.2c5e1",
+        "type": "switchNode",
+        "name": "switch: preload order-status = PendingAssignment",
+        "xml": "<switch test=\"`$vnf-instance-preload-data.oper-status.order-status == PendingAssignment`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 536.3849258422852,
+        "y": 146.10714626312256,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "9e68561a.bf1958"
+            ]
+        ]
+    },
+    {
+        "id": "934076d8.86ea48",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid preload-data order status'/>",
+        "comments": "",
+        "x": 953.3241691589355,
+        "y": 145.80415630340576,
+        "z": "705ac336.10121c",
+        "wires": []
+    },
+    {
+        "id": "9e68561a.bf1958",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 803.9910583496094,
+        "y": 145.80408191680908,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "934076d8.86ea48"
+            ]
+        ]
+    },
+    {
+        "id": "675a0354.e31bbc",
+        "type": "set",
+        "name": "set: vnf-iinstance-d",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.vnf-instance-id\" value=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 439.70642852783203,
+        "y": 279.04762077331543,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2745e73.af9a018",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.network-id == null",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.network-id == ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1680.8571968078613,
+        "y": 1886.8571367263794,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "e35dc16c.c2c63"
+            ]
+        ]
+    },
+    {
+        "id": "e35dc16c.c2c63",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1943.1071968078613,
+        "y": 1886.8571367263794,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "6722f4ec.b60c2c"
+            ]
+        ]
+    },
+    {
+        "id": "6722f4ec.b60c2c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'An error occurred while querying l3-network with network-name = ' + $vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$j].network-name + ' , it is likely that there are more than one l3-newtork object with the same network-name in AnAI.'`\"  />\n",
+        "comments": "",
+        "x": 2097.1071968078613,
+        "y": 1887.3571367263794,
+        "z": "705ac336.10121c",
+        "wires": []
+    },
+    {
+        "id": "fd1394ec.ad0d08",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1420.8571815490723,
+        "y": 1886.607117652893,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "2745e73.af9a018"
+            ]
+        ]
+    },
+    {
+        "id": "1538dd04.c879b3",
+        "type": "switchNode",
+        "name": "switch: vnf-instance-service-data...vnf-networks_length",
+        "xml": "<switch test=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1273.5357780456543,
+        "y": 1981.7857370376587,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "acdd927c.05908"
+            ]
+        ]
+    },
+    {
+        "id": "acdd927c.05908",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1561.0357704162598,
+        "y": 1981.7857370376587,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "15d7e90e.01ef77"
+            ]
+        ]
+    },
+    {
+        "id": "15d7e90e.01ef77",
+        "type": "switchNode",
+        "name": "set: vnf-instance-service-data...vnf-networks_length = 0",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length\" value = \"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1859.7857704162598,
+        "y": 1981.7857370376587,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2dbaf99b.74fa26",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA sbunet-id == NULL",
+        "xml": "<switch test=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].subnet-id == ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2083.571506500244,
+        "y": 2135.749973297119,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "72edf3ef.16637c"
+            ]
+        ]
+    },
+    {
+        "id": "9eb668ef.2179a8",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1790.5714988708496,
+        "y": 2083.749973297119,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "bfa6a0be.7489",
+                "2dbaf99b.74fa26",
+                "ceefaa2e.4bf518"
+            ]
+        ]
+    },
+    {
+        "id": "72edf3ef.16637c",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2339.8214721679688,
+        "y": 2135.499952316284,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "bfc8e1d2.0b5d2"
+            ]
+        ]
+    },
+    {
+        "id": "bfc8e1d2.0b5d2",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA sbunet-name != NULL",
+        "xml": "<switch test=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].subnet-name != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2166.1666564941406,
+        "y": 2195.6547813415527,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "fd2de09f.959e6"
+            ]
+        ]
+    },
+    {
+        "id": "fd2de09f.959e6",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2431.4166221618652,
+        "y": 2195.404760360718,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "2cb0803c.c7bc8"
+            ]
+        ]
+    },
+    {
+        "id": "4a5f9fe5.05752",
+        "type": "set",
+        "name": "set: service-data = AnAI - subnet-id ",
+        "xml": "<set>\n<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].subnet-id\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 3187.6786193847656,
+        "y": 2318.523801803589,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "2cb0803c.c7bc8",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.subnets.subnet != NULL",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2284.892852783203,
+        "y": 2256.5952796936035,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "d4ebe86e.15b258"
+            ]
+        ]
+    },
+    {
+        "id": "4954faeb.6cfbf4",
+        "type": "for",
+        "name": "for i : tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2322.6070709228516,
+        "y": 2319.9522819519043,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "90d30b64.06a4e8"
+            ]
+        ]
+    },
+    {
+        "id": "90d30b64.06a4e8",
+        "type": "switchNode",
+        "name": "switch: AnAI == service-data - subnet-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].subnet-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2695.3570251464844,
+        "y": 2319.202365875244,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "2e058631.959aea"
+            ]
+        ]
+    },
+    {
+        "id": "2e058631.959aea",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2953.7597160339355,
+        "y": 2319.0693941116333,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "4a5f9fe5.05752"
+            ]
+        ]
+    },
+    {
+        "id": "d4ebe86e.15b258",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2570.2143363952637,
+        "y": 2256.1786704063416,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "4954faeb.6cfbf4"
+            ]
+        ]
+    },
+    {
+        "id": "59ecf05b.2d584",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA ipv6-sbunet-name != NULL",
+        "xml": "<switch test=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-name != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2179.9881286621094,
+        "y": 2455.4762382507324,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "11682b08.bfbad5"
+            ]
+        ]
+    },
+    {
+        "id": "11682b08.bfbad5",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2465.238094329834,
+        "y": 2455.2262172698975,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "3e72b6d2.9b778a"
+            ]
+        ]
+    },
+    {
+        "id": "c982fd9a.aac94",
+        "type": "set",
+        "name": "set: service-data = AnAI - ipv6-subnet-id ",
+        "xml": "<set>\n<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 3211.499984741211,
+        "y": 2570.4882202148438,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3e72b6d2.9b778a",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.subnets.subnet != NULL",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2277.285858154297,
+        "y": 2514.2738094329834,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "3cfbefe2.89e85"
+            ]
+        ]
+    },
+    {
+        "id": "30ffaee.a267252",
+        "type": "for",
+        "name": "for i : tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2346.428436279297,
+        "y": 2571.916700363159,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "4c7bf8f0.8c87f8"
+            ]
+        ]
+    },
+    {
+        "id": "4c7bf8f0.8c87f8",
+        "type": "switchNode",
+        "name": "switch: AnAI == service-data - ipv6-subnet-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2719.1783905029297,
+        "y": 2571.166784286499,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "9622186b.306c98"
+            ]
+        ]
+    },
+    {
+        "id": "9622186b.306c98",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2977.581081390381,
+        "y": 2571.033812522888,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "c982fd9a.aac94"
+            ]
+        ]
+    },
+    {
+        "id": "3cfbefe2.89e85",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2562.6073417663574,
+        "y": 2513.8572001457214,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "30ffaee.a267252"
+            ]
+        ]
+    },
+    {
+        "id": "12a1ac30.b20924",
+        "type": "comment",
+        "name": "Use INPUT vnf-networks to override preload",
+        "info": "",
+        "comments": "",
+        "x": 919.8214416503906,
+        "y": 921.9643211364746,
+        "z": "705ac336.10121c",
+        "wires": []
+    },
+    {
+        "id": "55115b00.d54c94",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1635.1701431274414,
+        "y": 1169.0481853485107,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "3532fb1.4b9fd04",
+                "f20e0105.06607",
+                "96febb32.ff1698"
+            ]
+        ]
+    },
+    {
+        "id": "ba99d311.ff42e",
+        "type": "comment",
+        "name": "Use INPUT vnf-networks to override preload",
+        "info": "",
+        "comments": "",
+        "x": 940.5271911621094,
+        "y": 1060.5124225616455,
+        "z": "705ac336.10121c",
+        "wires": []
+    },
+    {
+        "id": "7e2271f2.8e943",
+        "type": "switchNode",
+        "name": "switch: INPUT sbunet-name != NULL",
+        "xml": "<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].subnet-name != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2418.146469116211,
+        "y": 1276.6551208496094,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "bce7ec0c.26ab4"
+            ]
+        ]
+    },
+    {
+        "id": "bce7ec0c.26ab4",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2655.3964347839355,
+        "y": 1276.4050998687744,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "5ecde9ff.9bcd68"
+            ]
+        ]
+    },
+    {
+        "id": "1b75f440.6ce07c",
+        "type": "set",
+        "name": "set: service-data = AnAI - subnet-id ",
+        "xml": "<set>\n<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].subnet-id\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 3394.658447265625,
+        "y": 1389.952838897705,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "5ecde9ff.9bcd68",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.subnets.subnet != NULL",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2521.158432006836,
+        "y": 1326.9527263641357,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "c5624ea.4db5bb"
+            ]
+        ]
+    },
+    {
+        "id": "94a26b5d.774068",
+        "type": "for",
+        "name": "for i : tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2529.586898803711,
+        "y": 1391.3813190460205,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "2d6ec25.ba7e33e"
+            ]
+        ]
+    },
+    {
+        "id": "2d6ec25.ba7e33e",
+        "type": "switchNode",
+        "name": "switch: AnAI == INPUT - subnet-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].subnet-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2902.3368530273438,
+        "y": 1390.6314029693604,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "81fef1e6.a152e"
+            ]
+        ]
+    },
+    {
+        "id": "81fef1e6.a152e",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3160.739543914795,
+        "y": 1390.4984312057495,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "1b75f440.6ce07c"
+            ]
+        ]
+    },
+    {
+        "id": "c5624ea.4db5bb",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2806.4799156188965,
+        "y": 1326.5361170768738,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "94a26b5d.774068"
+            ]
+        ]
+    },
+    {
+        "id": "f20e0105.06607",
+        "type": "switchNode",
+        "name": "switch: INPUT sbunet-id != NULL",
+        "xml": "<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].subnet-id != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1911.7179145812988,
+        "y": 1232.8933010101318,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "d4afa68e.bfc558",
+                "98804ce8.a13a6"
+            ]
+        ]
+    },
+    {
+        "id": "abd5ea69.b13cb8",
+        "type": "set",
+        "name": "set: data-data = INPUT - subnet-id ",
+        "xml": "<set>\n<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].subnet-id\" value=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2409.9679107666016,
+        "y": 1233.1433029174805,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d4afa68e.bfc558",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2167.9678802490234,
+        "y": 1232.6432800292969,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "abd5ea69.b13cb8"
+            ]
+        ]
+    },
+    {
+        "id": "98804ce8.a13a6",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2169.2179222106934,
+        "y": 1276.6433010101318,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "7e2271f2.8e943"
+            ]
+        ]
+    },
+    {
+        "id": "1d02e4c9.16f89b",
+        "type": "switchNode",
+        "name": "switch: INPUT ipv6-sbunet-name != NULL",
+        "xml": "<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].ipv6-subnet-name != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2426.420120239258,
+        "y": 1504.798168182373,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "560491e4.841a3"
+            ]
+        ]
+    },
+    {
+        "id": "560491e4.841a3",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2673.6700859069824,
+        "y": 1504.548147201538,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "ad4e972e.25b658"
+            ]
+        ]
+    },
+    {
+        "id": "dfb01c55.64a29",
+        "type": "set",
+        "name": "set: service-data = AnAI - ipv6-subnet-id ",
+        "xml": "<set>\n<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 3402.932098388672,
+        "y": 1618.0958862304688,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ad4e972e.25b658",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.subnets.subnet != NULL",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2529.432083129883,
+        "y": 1555.0957736968994,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "c4bb2d17.a6dd2"
+            ]
+        ]
+    },
+    {
+        "id": "b53303f1.98bac",
+        "type": "for",
+        "name": "for i : tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2537.860549926758,
+        "y": 1619.5243663787842,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "8b2e7716.5aaf38"
+            ]
+        ]
+    },
+    {
+        "id": "8b2e7716.5aaf38",
+        "type": "switchNode",
+        "name": "switch: AnAI == INPUT - ipv6-subnet-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].ipv6-subnet-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2910.6105041503906,
+        "y": 1618.774450302124,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "e8ec1e1f.57f23"
+            ]
+        ]
+    },
+    {
+        "id": "e8ec1e1f.57f23",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3169.013195037842,
+        "y": 1618.6414785385132,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "dfb01c55.64a29"
+            ]
+        ]
+    },
+    {
+        "id": "c4bb2d17.a6dd2",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2814.7535667419434,
+        "y": 1554.6791644096375,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "b53303f1.98bac"
+            ]
+        ]
+    },
+    {
+        "id": "3532fb1.4b9fd04",
+        "type": "switchNode",
+        "name": "switch: INPUT ipv6-sbunet-id != NULL",
+        "xml": "<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].ipv6-subnet-id != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1919.9915657043457,
+        "y": 1461.0363483428955,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "843a8b19.b1c348",
+                "8591ce30.50334"
+            ]
+        ]
+    },
+    {
+        "id": "f7ba6e82.4320e",
+        "type": "set",
+        "name": "set: service-data = INPUT - ipv6-subnet-id ",
+        "xml": "<set>\n<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id\" value=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].ipv6-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2427.2415618896484,
+        "y": 1461.2863502502441,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "843a8b19.b1c348",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2176.2415313720703,
+        "y": 1460.7863273620605,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "f7ba6e82.4320e"
+            ]
+        ]
+    },
+    {
+        "id": "8591ce30.50334",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2177.4915733337402,
+        "y": 1504.7863483428955,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "1d02e4c9.16f89b"
+            ]
+        ]
+    },
+    {
+        "id": "10ab9be3.5754a4",
+        "type": "comment",
+        "name": "Use Preload Data",
+        "info": "",
+        "comments": "",
+        "x": 608.4915390014648,
+        "y": 1743.5838871002197,
+        "z": "705ac336.10121c",
+        "wires": []
+    },
+    {
+        "id": "5b8f0229.494b7c",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 576.0629501342773,
+        "y": 1066.4767723083496,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "c5e10bb0.819f28",
+                "95ee9ed6.51075"
+            ]
+        ]
+    },
+    {
+        "id": "c5e10bb0.819f28",
+        "type": "switchNode",
+        "name": "switch: vnf-instance-service-data...vnf-networks_length",
+        "xml": "<switch test=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 891.2500305175781,
+        "y": 1120.535732269287,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "6761e206.68fe2c"
+            ]
+        ]
+    },
+    {
+        "id": "6761e206.68fe2c",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1178.7500228881836,
+        "y": 1120.535732269287,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "380d182.b48fce8"
+            ]
+        ]
+    },
+    {
+        "id": "380d182.b48fce8",
+        "type": "switchNode",
+        "name": "set: vnf-instance-service-data...vnf-networks_length = 0",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length\" value = \"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1477.5000228881836,
+        "y": 1120.535732269287,
+        "z": "705ac336.10121c",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ceefaa2e.4bf518",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA ipv6-sbunet-id == NULL",
+        "xml": "<switch test=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id == ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2094.3213806152344,
+        "y": 2402.535810470581,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "c1f79dd7.d0fc5"
+            ]
+        ]
+    },
+    {
+        "id": "c1f79dd7.d0fc5",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2378.571346282959,
+        "y": 2402.285789489746,
+        "z": "705ac336.10121c",
+        "wires": [
+            [
+                "59ecf05b.2d584"
+            ]
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-assign.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-assign.json
new file mode 100644
index 0000000..a971cf6
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-assign.json
@@ -0,0 +1,406 @@
+[
+    {
+        "id": "2cedcd37.fe8ab2",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 174.57137298583984,
+        "y": 71.4285888671875,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "d0b308e8.cdee18"
+            ]
+        ]
+    },
+    {
+        "id": "d0b308e8.cdee18",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 339.73802947998047,
+        "y": 71.59526062011719,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "7508dd9c.f543d4"
+            ]
+        ]
+    },
+    {
+        "id": "7508dd9c.f543d4",
+        "type": "method",
+        "name": "method vnf-instance-topology-assign",
+        "xml": "<method rpc='vnf-instance-topology-assign' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 289.16661834716797,
+        "y": 118.59525680541992,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "df9a3175.c6c8d"
+            ]
+        ]
+    },
+    {
+        "id": "df9a3175.c6c8d",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 235.07138061523438,
+        "y": 174.4285888671875,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "da24c094.d6258",
+                "7e403afc.ca86f4",
+                "db6cf5b9.be6428",
+                "41693571.36e60c",
+                "8723af06.8912c",
+                "4e11edf0.dd1024",
+                "33375972.3ee9b6",
+                "88fc01a3.bf7a3"
+            ]
+        ]
+    },
+    {
+        "id": "da24c094.d6258",
+        "type": "set",
+        "name": "set: order-status = PendingCreate",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.oper-status.order-status\" value=\"PendingCreate\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 502.96221923828125,
+        "y": 595.6208057403564,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7e403afc.ca86f4",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 442.1050567626953,
+        "y": 681.3254375457764,
+        "z": "cee53bf1.d63798",
+        "wires": []
+    },
+    {
+        "id": "c1bd5bbc.d08278",
+        "type": "comment",
+        "name": "request-action = VNFActivateRequest",
+        "info": "",
+        "comments": "",
+        "x": 681.738037109375,
+        "y": 91.53970336914062,
+        "z": "cee53bf1.d63798",
+        "wires": []
+    },
+    {
+        "id": "2983e427.e89c6c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 820.0119781494141,
+        "y": 546.6433296203613,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "6e9f230e.fe328c"
+            ]
+        ]
+    },
+    {
+        "id": "5785fdd6.aeaed4",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"An error occurred while updating vnf-instance orchestration-status in AnAI\"/>",
+        "comments": "",
+        "x": 1204.1549072265625,
+        "y": 546.6434001922607,
+        "z": "cee53bf1.d63798",
+        "wires": []
+    },
+    {
+        "id": "67bf7768.b620d8",
+        "type": "save",
+        "name": "save relationship: l3-network",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf:relationship-list\" \n\t\tkey=\"generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id\" >\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"l3-network.network-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$i].network-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 822.3174667358398,
+        "y": 389.54354763031006,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "a997a0b4.695d1"
+            ]
+        ]
+    },
+    {
+        "id": "a997a0b4.695d1",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1034.9617385864258,
+        "y": 389.59056186676025,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "aea10b11.934cb8"
+            ]
+        ]
+    },
+    {
+        "id": "db6cf5b9.be6428",
+        "type": "for",
+        "name": "for i : SERVICE_DATA vnf-networks",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 507.96427154541016,
+        "y": 389.51202869415283,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "67bf7768.b620d8"
+            ]
+        ]
+    },
+    {
+        "id": "12eea8c7.978027",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'An error occurred while saving generic-vnf l3-network relationship in AnAI with network-id = ' + $vnf-instance.service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$i].network-id`\"/>",
+        "comments": "",
+        "x": 1204.0118026733398,
+        "y": 499.60688877105713,
+        "z": "cee53bf1.d63798",
+        "wires": []
+    },
+    {
+        "id": "aea10b11.934cb8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 993.726188659668,
+        "y": 451.8927421569824,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "98086e0f.3b64d",
+                "12eea8c7.978027"
+            ]
+        ]
+    },
+    {
+        "id": "98086e0f.3b64d",
+        "type": "save",
+        "name": "delete vnf-instance: l3-network relationship",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf:relationship-list\" \n\t\tkey=\"generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id \n\t\t\tAND related-to = l3-network\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1287.15478515625,
+        "y": 452.32148838043213,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "41693571.36e60c",
+        "type": "save",
+        "name": "update AnAI - vnf-instance.orchestration-status",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id\" >\n\t<parameter name=\"orchestration-status\" value=\"pending-create\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 544.4881210327148,
+        "y": 546.6548271179199,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "2983e427.e89c6c"
+            ]
+        ]
+    },
+    {
+        "id": "6e9f230e.fe328c",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 978.4405517578125,
+        "y": 546.7500886917114,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "5785fdd6.aeaed4",
+                "98086e0f.3b64d"
+            ]
+        ]
+    },
+    {
+        "id": "8723af06.8912c",
+        "type": "call",
+        "name": "call: vnf-instance-topology-assign-vnf-networks",
+        "xml": "<call module='VNF-API' rpc='vnf-instance-topology-assign-vnf-networks' mode='sync' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 542.2380599975586,
+        "y": 279.17860412597656,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4e11edf0.dd1024",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 466.1428680419922,
+        "y": 640.7500247955322,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "33375972.3ee9b6",
+        "type": "switchNode",
+        "name": "switch ...SERVICE-DATA vnf-networks[]",
+        "xml": "<switch test=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 520.321418762207,
+        "y": 329.7500343322754,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "de2601f5.481bb"
+            ]
+        ]
+    },
+    {
+        "id": "de2601f5.481bb",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 766.7658920288086,
+        "y": 329.2777442932129,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "bc89e7d4.363558"
+            ]
+        ]
+    },
+    {
+        "id": "bc89e7d4.363558",
+        "type": "set",
+        "name": "set SERVICE-DATA vnf-networks[] = 0",
+        "xml": "<set>\n<parameter name='vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length' value='0' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1012.321500990126,
+        "y": 329.27776495615626,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "88fc01a3.bf7a3",
+        "type": "save",
+        "name": "GET AnAI - vnf-instance",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id\" \n\tpfx=\"tmp.AnAI.vnf-instance\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 465.8213882446289,
+        "y": 173.92859935760498,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "544d350b.3602ec",
+                "2400a64e.19d90a"
+            ]
+        ]
+    },
+    {
+        "id": "544d350b.3602ec",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 666.8213882446289,
+        "y": 173.67859935760498,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "24cc16d1.2a783a"
+            ]
+        ]
+    },
+    {
+        "id": "2400a64e.19d90a",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 674.321403503418,
+        "y": 213.67860984802246,
+        "z": "cee53bf1.d63798",
+        "wires": [
+            [
+                "e96a9f54.0d0cd"
+            ]
+        ]
+    },
+    {
+        "id": "24cc16d1.2a783a",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'An error occurred while querying generic-vnf from AnAI with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`\"/>",
+        "comments": "",
+        "x": 833.0713882446289,
+        "y": 173.42859935760498,
+        "z": "cee53bf1.d63798",
+        "wires": []
+    },
+    {
+        "id": "e96a9f54.0d0cd",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'generic-vnf not found in AnAI with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`\"/>",
+        "comments": "",
+        "x": 834.5713882446289,
+        "y": 213.92859935760498,
+        "z": "cee53bf1.d63798",
+        "wires": []
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-changeassign.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-changeassign.json
new file mode 100644
index 0000000..55877de
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-changeassign.json
@@ -0,0 +1,694 @@
+[
+    {
+        "id": "7e3f5196.e417c",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 111.42857360839844,
+        "y": 60.00000047683716,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "10b8528a.211b1d"
+            ]
+        ]
+    },
+    {
+        "id": "10b8528a.211b1d",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 276.59523010253906,
+        "y": 60.166672229766846,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "59ca7427.fd225c"
+            ]
+        ]
+    },
+    {
+        "id": "26eeb6ea.2961fa",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 188.92858123779297,
+        "y": 163.00000047683716,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "54500f80.f1dde",
+                "b5bb0315.e5f83",
+                "e31262f8.d4f67",
+                "b5584bc7.3ea138",
+                "7c0c33c0.92e28c",
+                "e091d3c2.33bc",
+                "ed72da5e.728ab8",
+                "579e919a.69eb7",
+                "d72290b6.13cfc",
+                "7b79f91e.a56ff8",
+                "723df9f0.89be98"
+            ]
+        ]
+    },
+    {
+        "id": "54500f80.f1dde",
+        "type": "set",
+        "name": "set: order-status = PendingUpdate",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.oper-status.order-status\" value=\"PendingUpdate\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 484.37345123291016,
+        "y": 887.4610962867737,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b5bb0315.e5f83",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 422.6432647705078,
+        "y": 1022.2609753608704,
+        "z": "2cd468d5.f36418",
+        "wires": []
+    },
+    {
+        "id": "e31262f8.d4f67",
+        "type": "switchNode",
+        "name": "switch: service-data order-status = Active",
+        "xml": "<switch test=\"`$vnf-instance-service-data.oper-status.order-status == Active`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 495.2063674926758,
+        "y": 163.66666984558105,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "83191ca8.35ba"
+            ]
+        ]
+    },
+    {
+        "id": "1634a3cd.229f0c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid service-data order status'/>",
+        "comments": "",
+        "x": 899.9561920166016,
+        "y": 166.00004768371582,
+        "z": "2cd468d5.f36418",
+        "wires": []
+    },
+    {
+        "id": "83191ca8.35ba",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 741.3729934692383,
+        "y": 163.24992179870605,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "1634a3cd.229f0c"
+            ]
+        ]
+    },
+    {
+        "id": "59ca7427.fd225c",
+        "type": "method",
+        "name": "method vnf-instance-topology-changeassign",
+        "xml": "<method rpc='vnf-instance-topology-changeassign' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 233.65078735351562,
+        "y": 109.88889026641846,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "26eeb6ea.2961fa"
+            ]
+        ]
+    },
+    {
+        "id": "b5584bc7.3ea138",
+        "type": "set",
+        "name": "set: last-action ",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.oper-status.last-action\" value=\"`$vnf-instance-service-data.request-information.request-action`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 422.3810043334961,
+        "y": 933.4761109352112,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7c0c33c0.92e28c",
+        "type": "set",
+        "name": "set: last-order-status = order-status",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.oper-status.last-order-status\" value=\"`$vnf-instance-service-data.oper-status.order-status`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 486.3810043334961,
+        "y": 841.4761109352112,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e091d3c2.33bc",
+        "type": "call",
+        "name": "call: vnf-instance-topology-assign-vnf-networks",
+        "xml": "<call module='VNF-API' rpc='vnf-instance-topology-assign-vnf-networks' mode='sync' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 514.3174896240234,
+        "y": 209.77777767181396,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "579e919a.69eb7",
+        "type": "save",
+        "name": "delete l3-network relationship",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf:relationship-list\" \n\t\tkey=\"generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id \n\t\t\tAND related-to = l3-network\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 461.793701171875,
+        "y": 348.7938804626465,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "12305cd8.a70123"
+            ]
+        ]
+    },
+    {
+        "id": "6fb4fdc9.79da44",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'An error occurred while deleting existing l3-network relationship in AnAI with with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id + ' vnf-instance update FAILED.'`\"/>",
+        "comments": "",
+        "x": 863.6506958007812,
+        "y": 349.07925033569336,
+        "z": "2cd468d5.f36418",
+        "wires": []
+    },
+    {
+        "id": "ed72da5e.728ab8",
+        "type": "save",
+        "name": "get AnAI - vnf-instance",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id\" \n\tpfx=\"tmp.AnAI.vnf-instance\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 440.0952453613281,
+        "y": 253.55556106567383,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "75c63427.b2a41c",
+                "58db1cd8.34dbb4"
+            ]
+        ]
+    },
+    {
+        "id": "f6b122b7.d730f",
+        "type": "save",
+        "name": "save l3-network relationship",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf:relationship-list\" \n\t\tkey=\"generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id\" >\n\t\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"l3-network.network-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$i].network-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 780.8290863037109,
+        "y": 438.56689071655273,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "f6bb7bd9.76bae8"
+            ]
+        ]
+    },
+    {
+        "id": "f6bb7bd9.76bae8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 989.9733276367188,
+        "y": 438.61392307281494,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "93b5ee1e.221ca"
+            ]
+        ]
+    },
+    {
+        "id": "d72290b6.13cfc",
+        "type": "for",
+        "name": "for i : SERVICE_DATA vnf-networks",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 481.0475311279297,
+        "y": 439.1068420410156,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "f6b122b7.d730f"
+            ]
+        ]
+    },
+    {
+        "id": "5921c16b.5bd97",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Failed to update vnf-instance l3-network relationship in AnAI. ' + $error-message`\"/>",
+        "comments": "",
+        "x": 1335.166160583496,
+        "y": 818.8087882995605,
+        "z": "2cd468d5.f36418",
+        "wires": []
+    },
+    {
+        "id": "93b5ee1e.221ca",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1152.9520797729492,
+        "y": 438.84466648101807,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "5921c16b.5bd97",
+                "76dff6e4.660dd8",
+                "625f1fb8.1f18e",
+                "efc90ef3.b0a7c",
+                "e4edafac.b2e1f"
+            ]
+        ]
+    },
+    {
+        "id": "625f1fb8.1f18e",
+        "type": "save",
+        "name": "delete relationship: vf-module",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf:relationship-list\" \n\t\tkey=\"generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id \n\t\t\tAND related-to = l3-network\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 1392.4521484375,
+        "y": 486.7734680175781,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e63dcfd2.1a0d3",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'An error occurred while querying generic-vnf from AnAI with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`\"/>",
+        "comments": "",
+        "x": 821.3808288574219,
+        "y": 254.26970291137695,
+        "z": "2cd468d5.f36418",
+        "wires": []
+    },
+    {
+        "id": "12305cd8.a70123",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 677.6508178710938,
+        "y": 349.222225189209,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "6fb4fdc9.79da44"
+            ]
+        ]
+    },
+    {
+        "id": "7b79f91e.a56ff8",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 444.00003814697266,
+        "y": 979.4286103248596,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "efc90ef3.b0a7c",
+        "type": "for",
+        "name": "for i : tmp.AnAI.vnf-instance.relationship",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.vnf-instance.relationship-list.relationship_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1425.4164733886719,
+        "y": 577.6667003631592,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "68e41057.68fce"
+            ]
+        ]
+    },
+    {
+        "id": "68e41057.68fce",
+        "type": "switchNode",
+        "name": "switch: relationship.related-to",
+        "xml": "<switch test=\"`$tmp.AnAI.vnf-instance.relationship-list.relationship[$i].related-to`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1732.4164428710938,
+        "y": 577.3810205459595,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "ac07b174.2f5ff"
+            ]
+        ]
+    },
+    {
+        "id": "ac07b174.2f5ff",
+        "type": "other",
+        "name": "l3-network",
+        "xml": "<outcome value='l3-network'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1955.4164428710938,
+        "y": 577.3810205459595,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "87f7cb69.27eb38"
+            ]
+        ]
+    },
+    {
+        "id": "a34ca0bd.1f59f",
+        "type": "for",
+        "name": "for j : tmp.AnAI.vnf-instance.relationship-data",
+        "xml": "<for index=\"j\" start=\"0\" end=\"`$tmp.AnAI.vnf-instance.relationship-list.relationship[$i].relationship-data_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1866.6664123535156,
+        "y": 711.0238761901855,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "867a21f.18c04e"
+            ]
+        ]
+    },
+    {
+        "id": "867a21f.18c04e",
+        "type": "save",
+        "name": "save l3-network relationship",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf:relationship-list\" \n\t\tkey=\"generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id\" >\n\t\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"l3-network.network-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.vnf-instance.relationship-list.relationship[$i].relationship-data[$j].relationship-value`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2224.2378692626953,
+        "y": 711.1667594909668,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "6dbc5217.3d6f5c",
+                "6f428706.86a3b8"
+            ]
+        ]
+    },
+    {
+        "id": "6dbc5217.3d6f5c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2482.2378692626953,
+        "y": 711.1667594909668,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "6609cec3.9d5d2"
+            ]
+        ]
+    },
+    {
+        "id": "75c63427.b2a41c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 629.9524192810059,
+        "y": 253.69842910766602,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "e63dcfd2.1a0d3"
+            ]
+        ]
+    },
+    {
+        "id": "76dff6e4.660dd8",
+        "type": "set",
+        "name": "set error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`' | An error occurred while saving l3-network relationship with network-id = ' + $vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$i].network-id + ' for vnf-instance with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1357.4522171020508,
+        "y": 438.7738342285156,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6609cec3.9d5d2",
+        "type": "set",
+        "name": "set error-message",
+        "xml": "<set>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`$error-message + ' | An error occurred while during rollback of l3-network relationship for vnf-instance with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2680.2021865844727,
+        "y": 710.7024040222168,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "58db1cd8.34dbb4",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 636.8452453613281,
+        "y": 296.1388740539551,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "e63dcfd2.1a0d3"
+            ]
+        ]
+    },
+    {
+        "id": "6f428706.86a3b8",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2492.5235748291016,
+        "y": 752.3452558517456,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "6609cec3.9d5d2"
+            ]
+        ]
+    },
+    {
+        "id": "f7812e3d.246cd",
+        "type": "switchNode",
+        "name": "set: vnf-instance-service-data...vnf-networks_length = 0",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length\" value = \"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1126.888816833496,
+        "y": 394.7142753601074,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a018c1ed.7323c",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 828.1388168334961,
+        "y": 394.7142753601074,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "f7812e3d.246cd"
+            ]
+        ]
+    },
+    {
+        "id": "723df9f0.89be98",
+        "type": "switchNode",
+        "name": "switch: vnf-instance-service-data...vnf-networks_length",
+        "xml": "<switch test=\"`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 540.6388244628906,
+        "y": 394.7142753601074,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "a018c1ed.7323c"
+            ]
+        ]
+    },
+    {
+        "id": "b1a06442.5f4468",
+        "type": "switchNode",
+        "name": "set: tmp.AnAI.vnf-instance.relationship-list.relationship_length = 0",
+        "xml": "<set>\n\t<parameter name=\"tmp.AnAI.vnf-instance.relationship-list.relationship_length\" value = \"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2139.2380905151367,
+        "y": 533.6667156219482,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "cfeea49e.1a6548",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1821.4880905151367,
+        "y": 533.6667156219482,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "b1a06442.5f4468"
+            ]
+        ]
+    },
+    {
+        "id": "e4edafac.b2e1f",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.vnf-instance.relationship-list.relationship_length",
+        "xml": "<switch test=\"`$tmp.AnAI.vnf-instance.relationship-list.relationship_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1502.9880981445312,
+        "y": 533.6667156219482,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "cfeea49e.1a6548"
+            ]
+        ]
+    },
+    {
+        "id": "87f7cb69.27eb38",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1571.250015258789,
+        "y": 663.7500133514404,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "baf72e9.09de9d",
+                "a34ca0bd.1f59f"
+            ]
+        ]
+    },
+    {
+        "id": "baf72e9.09de9d",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.vnf-instance.relationship-list.relationship[$i].relationship-data_length",
+        "xml": "<switch test=\"`$tmp.AnAI.vnf-instance.relationship-list.relationship[$i].relationship-data_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1990.7500228881836,
+        "y": 664.0000171661377,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "ddf26f89.730fa"
+            ]
+        ]
+    },
+    {
+        "id": "ddf26f89.730fa",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2367.250015258789,
+        "y": 664.0000171661377,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            [
+                "a4584fcd.7e598"
+            ]
+        ]
+    },
+    {
+        "id": "a4584fcd.7e598",
+        "type": "switchNode",
+        "name": "set: tmp.AnAI.vnf-instance.relationship-list.relationship[$i].relationship-data_length = 0",
+        "xml": "<set>\n\t<parameter name=\"tmp.AnAI.vnf-instance.relationship-list.relationship[$i].relationship-data_length\" value = \"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2752.000015258789,
+        "y": 664.0000171661377,
+        "z": "2cd468d5.f36418",
+        "wires": [
+            []
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-delete.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-delete.json
new file mode 100644
index 0000000..9ebbf15
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-delete.json
@@ -0,0 +1,240 @@
+[
+    {
+        "id": "892394b6.5a0068",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 394.4444274902344,
+        "y": 448.305570602417,
+        "z": "bae6c09b.ec173",
+        "wires": []
+    },
+    {
+        "id": "ae2cbfc2.b3e0d",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 171.44437408447266,
+        "y": 147.44444274902344,
+        "z": "bae6c09b.ec173",
+        "wires": [
+            [
+                "8dac86ee.e1bed8",
+                "892394b6.5a0068",
+                "3d06c980.f160e6",
+                "d3da4ebd.718d2",
+                "e25b96d5.e6f508",
+                "da9108f7.df52c8",
+                "ed7cb1e2.2fa6d",
+                "99637329.93ae"
+            ]
+        ]
+    },
+    {
+        "id": "8dac86ee.e1bed8",
+        "type": "set",
+        "name": "set: order-status = Deleted",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.oper-status.order-status\" value=\"Deleted\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 435.4444274902344,
+        "y": 275.305570602417,
+        "z": "bae6c09b.ec173",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "24188683.531f4a",
+        "type": "method",
+        "name": "method vnf-instance-topology-delete",
+        "xml": "<method rpc='vnf-instance-topology-delete' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 203.1110610961914,
+        "y": 96.6111068725586,
+        "z": "bae6c09b.ec173",
+        "wires": [
+            [
+                "ae2cbfc2.b3e0d"
+            ]
+        ]
+    },
+    {
+        "id": "2d805b52.c5e354",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 273.1110305786133,
+        "y": 44.611114501953125,
+        "z": "bae6c09b.ec173",
+        "wires": [
+            [
+                "24188683.531f4a"
+            ]
+        ]
+    },
+    {
+        "id": "1dec305b.bded3",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 109.94437408447266,
+        "y": 44.44444274902344,
+        "z": "bae6c09b.ec173",
+        "wires": [
+            [
+                "2d805b52.c5e354"
+            ]
+        ]
+    },
+    {
+        "id": "59d02cc9.9c4fa4",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 642.8131637573242,
+        "y": 191.12879180908203,
+        "z": "bae6c09b.ec173",
+        "wires": [
+            [
+                "cbe21014.03475"
+            ]
+        ]
+    },
+    {
+        "id": "cbe21014.03475",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid order-status'/>",
+        "comments": "",
+        "x": 806.1462936401367,
+        "y": 191.12885284423828,
+        "z": "bae6c09b.ec173",
+        "wires": []
+    },
+    {
+        "id": "e25b96d5.e6f508",
+        "type": "set",
+        "name": "set: last-action ",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.oper-status.last-action\" value=\"`$vnf-instance-service-data.request-information.request-action`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 396.7020263671875,
+        "y": 318.85116386413574,
+        "z": "bae6c09b.ec173",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3d06c980.f160e6",
+        "type": "switchNode",
+        "name": "switch: vnf-instance-id config == input",
+        "xml": "<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vf-module-id == $vf-module-service-data.vnf-instance-id`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 468.58827209472656,
+        "y": 147.93198776245117,
+        "z": "bae6c09b.ec173",
+        "wires": [
+            [
+                "52ff4df1.be8e04"
+            ]
+        ]
+    },
+    {
+        "id": "52ff4df1.be8e04",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 717.0428314208984,
+        "y": 148.1138153076172,
+        "z": "bae6c09b.ec173",
+        "wires": [
+            [
+                "8514ded5.e8697"
+            ]
+        ]
+    },
+    {
+        "id": "8514ded5.e8697",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='404'/>\n\t<parameter name='error-message' value='vf-module-id not found in SDNC'/>",
+        "comments": "",
+        "x": 885.6337509155273,
+        "y": 148.27291584014893,
+        "z": "bae6c09b.ec173",
+        "wires": []
+    },
+    {
+        "id": "d3da4ebd.718d2",
+        "type": "set",
+        "name": "set: last-order-status = order-status",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.oper-status.last-order-status\" value=\"`$vnf-instance-service-data.oper-status.order-status`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 461.83837890625,
+        "y": 234.043119430542,
+        "z": "bae6c09b.ec173",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "da9108f7.df52c8",
+        "type": "set",
+        "name": "Clear vnf-instance-topology",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.vnf-instance-topology-information.\" value=\"\" /> \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 435.83837890625,
+        "y": 359.043119430542,
+        "z": "bae6c09b.ec173",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "99637329.93ae",
+        "type": "switchNode",
+        "name": "switch: order-status = Active",
+        "xml": "<switch test=\"`$vnf-instance-service-data.oper-status.order-status == Active`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 439.9960632324219,
+        "y": 191.42859268188477,
+        "z": "bae6c09b.ec173",
+        "wires": [
+            [
+                "59d02cc9.9c4fa4"
+            ]
+        ]
+    },
+    {
+        "id": "ed7cb1e2.2fa6d",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 417.1587448120117,
+        "y": 404.24604415893555,
+        "z": "bae6c09b.ec173",
+        "wires": [
+            []
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-operation.json
new file mode 100644
index 0000000..9b9fa44
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"fd297644.e7c598","type":"dgstart","name":"DGSTART","outputs":1,"x":122.85714721679688,"y":74.28571319580078,"z":"fd58158c.ce6608","wires":[["c46e7454.e9c9b8"]]},{"id":"c46e7454.e9c9b8","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":290.1349105834961,"y":73.95238208770752,"z":"fd58158c.ce6608","wires":[["8e79a786.9a27d8"]]},{"id":"8e79a786.9a27d8","type":"method","name":"vnf-instance-topology-operation","xml":"<method rpc='vnf-instance-topology-operation' mode='sync'>\n","comments":"","outputs":1,"x":217.35714721679688,"y":128.50793075561523,"z":"fd58158c.ce6608","wires":[["c9295ef5.984bc"]]},{"id":"bcf03a22.4acff8","type":"switchNode","name":"switch: svc-action","xml":"<switch test=\"`$vnf-instance-topology-operation-input.sdnc-request-header.svc-action`\">\n","comments":"","outputs":1,"x":435.9126968383789,"y":594.3689575195312,"z":"fd58158c.ce6608","wires":[["8fca1abe.fbd228","ab124c9a.57743","c514096c.65a738","bfc509a.8c94bf8","ee98fdb6.3bc2b","33f9f05f.770f5"]]},{"id":"8fca1abe.fbd228","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":653.7182998657227,"y":811.1189594268799,"z":"fd58158c.ce6608","wires":[["8b2d7ea.7a8088"]]},{"id":"ab124c9a.57743","type":"other","name":"assign","xml":"<outcome value='assign'>","comments":"","outputs":1,"x":653.4682540893555,"y":594.3689632415771,"z":"fd58158c.ce6608","wires":[["cc0dbb0.31d6348"]]},{"id":"8b2d7ea.7a8088","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='svc-action not recognized'/>\n","comments":"","x":867.7182998657227,"y":811.1189594268799,"z":"fd58158c.ce6608","wires":[]},{"id":"c514096c.65a738","type":"other","name":"activate","xml":"<outcome value='activate'>","comments":"","outputs":1,"x":656.4682693481445,"y":683.6189517974854,"z":"fd58158c.ce6608","wires":[["6753428c.6d54dc"]]},{"id":"bfc509a.8c94bf8","type":"other","name":"rollback","xml":"<outcome value='rollback'>","comments":"","outputs":1,"x":656.2182693481445,"y":725.8689527511597,"z":"fd58158c.ce6608","wires":[["cff4c731.8d74f8"]]},{"id":"33f9f05f.770f5","type":"other","name":"changeassign","xml":"<outcome value='changeassign'>","comments":"","outputs":1,"x":674.9682693481445,"y":639.868953704834,"z":"fd58158c.ce6608","wires":[["84079b33.ceeeb8"]]},{"id":"ee98fdb6.3bc2b","type":"other","name":"delete","xml":"<outcome value='delete'>","comments":"","outputs":1,"x":653.9682998657227,"y":767.3689603805542,"z":"fd58158c.ce6608","wires":[["820d7e4e.7102c"]]},{"id":"cc0dbb0.31d6348","type":"call","name":"call: vnf-instance-topology-assign","xml":"<call module='VNF-API' rpc='vnf-instance-topology-assign' mode='sync' >","comments":"","outputs":1,"x":927.7182540893555,"y":594.3689613342285,"z":"fd58158c.ce6608","wires":[[]]},{"id":"84079b33.ceeeb8","type":"call","name":"call: vnf-instance-topology-changeassign","xml":"<call module='VNF-API' rpc='vnf-instance-topology-changeassign' mode='sync' >","comments":"","outputs":1,"x":950.968376159668,"y":639.3689613342285,"z":"fd58158c.ce6608","wires":[[]]},{"id":"cff4c731.8d74f8","type":"call","name":"call: vnf-instance-topology-rollback","xml":"<call module='VNF-API' rpc='vnf-instance-topology-rollback' mode='sync' >","comments":"","outputs":1,"x":932.718376159668,"y":725.8689632415771,"z":"fd58158c.ce6608","wires":[[]]},{"id":"820d7e4e.7102c","type":"call","name":"call: vnf-instance-topology-delete","xml":"<call module='VNF-API' rpc='vnf-instance-topology-delete' mode='sync' >","comments":"","outputs":1,"x":928.7183685302734,"y":767.3689613342285,"z":"fd58158c.ce6608","wires":[[]]},{"id":"6753428c.6d54dc","type":"call","name":"call: vnf-instance-topology-activate","xml":"<call module='VNF-API' rpc='vnf-instance-topology-activate' mode='sync' >","comments":"","outputs":1,"x":932.2183685302734,"y":683.8689570426941,"z":"fd58158c.ce6608","wires":[[]]},{"id":"5559eeb0.3a344","type":"comment","name":"vnf-instance-topology-operation","info":"","comments":"","x":649.7460250854492,"y":119.73015689849854,"z":"fd58158c.ce6608","wires":[]},{"id":"c9295ef5.984bc","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":225.85714721679688,"y":178.28572463989258,"z":"fd58158c.ce6608","wires":[["5e104a56.a77f04","4b089ba9.cc5224","bcf03a22.4acff8","f93caaf5.9786d8","738dcb6b.5f37c4"]]},{"id":"5e104a56.a77f04","type":"switchNode","name":"switch: INPUT vnf-instance-name","xml":"<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-name`\">","comments":"","outputs":1,"x":491.0793762207031,"y":224.73014545440674,"z":"fd58158c.ce6608","wires":[["4888dd7b.ca0734","be681e5f.25477"]]},{"id":"4888dd7b.ca0734","type":"outcome","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":725.0793762207031,"y":224.73014545440674,"z":"fd58158c.ce6608","wires":[["2bd3a996.402226"]]},{"id":"be681e5f.25477","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":725.0793762207031,"y":266.73014545440674,"z":"fd58158c.ce6608","wires":[["201420c1.169e5"]]},{"id":"2bd3a996.402226","type":"switchNode","name":"switch: PRELOAD vnf-instance-name","xml":"<switch test=\"`$vnf-instance-preload-data.vnf-instance-topology-information.vnf-instance-identifiers.vnf-instance-name`\">","comments":"","outputs":1,"x":963.0793762207031,"y":224.73014545440674,"z":"fd58158c.ce6608","wires":[["41f12dd4.ed9824","9d58cea8.cde5d"]]},{"id":"41f12dd4.ed9824","type":"outcome","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1196.0793762207031,"y":224.73014545440674,"z":"fd58158c.ce6608","wires":[["dc375cfa.881af"]]},{"id":"9d58cea8.cde5d","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1194.0793762207031,"y":265.73014545440674,"z":"fd58158c.ce6608","wires":[["85123cbc.181bb"]]},{"id":"dc375cfa.881af","type":"switchNode","name":"switch: vnf-instance-name INPUT == PRELOAD","xml":"<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-name == $vnf-instance-preload-data.vnf-instance-topology-information.vnf-instance-identifiers.vnf-instance-name`\">","comments":"","outputs":1,"x":1470.079360961914,"y":224.7301435470581,"z":"fd58158c.ce6608","wires":[["1ecb91bb.6831de"]]},{"id":"1ecb91bb.6831de","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1745.412727355957,"y":224.39704608917236,"z":"fd58158c.ce6608","wires":[["154ef7f.4af5608"]]},{"id":"154ef7f.4af5608","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='404'/>\n\t<parameter name='error-message' value='vnf-instance-name from input not found in vnf-instance-preload-data'/>","comments":"","x":1904.0793533325195,"y":224.73014545440674,"z":"fd58158c.ce6608","wires":[]},{"id":"85123cbc.181bb","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='No preload data found to match vnf-instance-name from input'/>","comments":"","x":1361.0793762207031,"y":265.73014545440674,"z":"fd58158c.ce6608","wires":[]},{"id":"201420c1.169e5","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vnf-instance-name is required'/>","comments":"","x":886.5793762207031,"y":266.98014545440674,"z":"fd58158c.ce6608","wires":[]},{"id":"4b089ba9.cc5224","type":"switchNode","name":"switch: INPUT vnf-model-id","xml":"<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-model-id`\">","comments":"","outputs":1,"x":471.07940673828125,"y":312.73014545440674,"z":"fd58158c.ce6608","wires":[["1c8fb5e0.30549a","8375a795.3229a8"]]},{"id":"1c8fb5e0.30549a","type":"outcome","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":688.0793991088867,"y":313.73014545440674,"z":"fd58158c.ce6608","wires":[["4de2da3a.8608c4"]]},{"id":"8375a795.3229a8","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":689.0793991088867,"y":356.73014545440674,"z":"fd58158c.ce6608","wires":[["73308a13.e64bb4"]]},{"id":"4de2da3a.8608c4","type":"switchNode","name":"switch: PRELOAD vnf-model-id","xml":"<switch test=\"`$vnf-instance-preload-data.vnf-instance-topology-information.vnf-instance-identifiers.vnf-model-id`\">","comments":"","outputs":1,"x":899.0793991088867,"y":313.73014545440674,"z":"fd58158c.ce6608","wires":[["bdac221b.8b4d2","1346493e.864997"]]},{"id":"bdac221b.8b4d2","type":"outcome","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1110.0793991088867,"y":313.73014545440674,"z":"fd58158c.ce6608","wires":[["530c77e7.241608"]]},{"id":"1346493e.864997","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1111.0793991088867,"y":355.73014545440674,"z":"fd58158c.ce6608","wires":[["9daf4382.f092a"]]},{"id":"73308a13.e64bb4","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vnf-model-id is required'/>","comments":"","x":842.5793991088867,"y":356.98014545440674,"z":"fd58158c.ce6608","wires":[]},{"id":"530c77e7.241608","type":"switchNode","name":"switch: vnf-model-id INPUT == PRELOAD","xml":"<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-model-id == $vnf-instance-preload-data.vnf-instance-topology-information.vnf-instance-identifiers.vnf-model-id`\">","comments":"","outputs":1,"x":1358.0793762207031,"y":313.73014545440674,"z":"fd58158c.ce6608","wires":[["ad4966b9.8c18d8"]]},{"id":"9daf4382.f092a","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='No preload data found to match vnf-model-id from input'/>","comments":"","x":1270.0793762207031,"y":355.73014545440674,"z":"fd58158c.ce6608","wires":[]},{"id":"ad4966b9.8c18d8","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1607.0793762207031,"y":313.06364154815674,"z":"fd58158c.ce6608","wires":[["29ab6ac5.37ac76"]]},{"id":"29ab6ac5.37ac76","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='404'/>\n\t<parameter name='error-message' value='request.vnf-model-id not found in vnf-instance-preload-data'/>","comments":"","x":1765.7460021972656,"y":312.3967409133911,"z":"fd58158c.ce6608","wires":[]},{"id":"f93caaf5.9786d8","type":"switchNode","name":"switch: INPUT vnf-instance-id","xml":"<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`\">","comments":"","outputs":1,"x":476.75804901123047,"y":407.19447231292725,"z":"fd58158c.ce6608","wires":[["8a575356.8ffc1","3b617d0c.95eb72"]]},{"id":"3b617d0c.95eb72","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":695.7580184936523,"y":448.3373098373413,"z":"fd58158c.ce6608","wires":[["c5bccaf4.2f4438"]]},{"id":"8a575356.8ffc1","type":"outcome","name":"0","xml":"<outcome value='0'>","comments":"","outputs":1,"x":694.9009475708008,"y":406.765908241272,"z":"fd58158c.ce6608","wires":[["c5bccaf4.2f4438"]]},{"id":"c5bccaf4.2f4438","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vf-instance-id cannot be NULL or 0'/>","comments":"","x":870.6152267456055,"y":448.6230306625366,"z":"fd58158c.ce6608","wires":[]},{"id":"738dcb6b.5f37c4","type":"switchNode","name":"switch: INPUT aic-cloud-region","xml":"<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.aic-cloud-region`\">","comments":"","outputs":1,"x":478.60716247558594,"y":529.7857036590576,"z":"fd58158c.ce6608","wires":[["db22259e.8012b8"]]},{"id":"db22259e.8012b8","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":696.6071319580078,"y":529.9285411834717,"z":"fd58158c.ce6608","wires":[["a48a127d.62bfa"]]},{"id":"a48a127d.62bfa","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='aic-cloud-region cannot be NULL'/>","comments":"","x":850.4643402099609,"y":530.214262008667,"z":"fd58158c.ce6608","wires":[]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-rollback.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-rollback.json
new file mode 100644
index 0000000..e86df7b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-instance-topology-rollback.json
@@ -0,0 +1,299 @@
+[
+    {
+        "id": "94c92ddd.ae5ed",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 184.44444274902344,
+        "y": 160.74999046325684,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            [
+                "93e2a330.f35a"
+            ]
+        ]
+    },
+    {
+        "id": "3d687d14.a75552",
+        "type": "method",
+        "name": "method  vnf-instance-topology-rollback",
+        "xml": "<method rpc='vnf-instance-topology-rollback' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 212.8611297607422,
+        "y": 108.16666316986084,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            [
+                "94c92ddd.ae5ed"
+            ]
+        ]
+    },
+    {
+        "id": "cee35ab0.d8d768",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 289.9721908569336,
+        "y": 49.05556106567383,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            [
+                "3d687d14.a75552"
+            ]
+        ]
+    },
+    {
+        "id": "561962a7.5d021c",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 124.25,
+        "y": 48.88888740539551,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            [
+                "cee35ab0.d8d768"
+            ]
+        ]
+    },
+    {
+        "id": "1bf35c69.3105c4",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 922.694465637207,
+        "y": 513.4972991943359,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": []
+    },
+    {
+        "id": "faa6e689.963ce8",
+        "type": "set",
+        "name": "set: order-status = Deleted",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.oper-status.order-status\" value=\"Deleted\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 958.444465637207,
+        "y": 342.27510833740234,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8bd3d099.709d5",
+        "type": "switchNode",
+        "name": "switch: order-status = PendingCreate",
+        "xml": "<switch test=\"`$vnf-instance-service-data.oper-status.order-status == PendingCreate`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 991.2854080200195,
+        "y": 256.4038906097412,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            [
+                "8b9ee3fe.e64ab"
+            ]
+        ]
+    },
+    {
+        "id": "8b9ee3fe.e64ab",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1222.8687896728516,
+        "y": 256.23720264434814,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            [
+                "a0d580c9.8f91a"
+            ]
+        ]
+    },
+    {
+        "id": "a0d580c9.8f91a",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid order-status'/>",
+        "comments": "",
+        "x": 1375.201919555664,
+        "y": 256.2372636795044,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": []
+    },
+    {
+        "id": "61bf6764.c0ee08",
+        "type": "set",
+        "name": "set: last-action ",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.oper-status.last-action\" value=\"`$vnf-instances-service-data.request-information.request-action`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 920.2021598815918,
+        "y": 384.5707015991211,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "abf35da3.aa20e",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1246.542984008789,
+        "y": 209.19444751739502,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            [
+                "6266141a.67c14c"
+            ]
+        ]
+    },
+    {
+        "id": "6266141a.67c14c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='404'/>\n\t<parameter name='error-message' value=\"`'vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id + ' not found in SDNC'`\"/>",
+        "comments": "",
+        "x": 1406.633804321289,
+        "y": 209.6035509109497,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": []
+    },
+    {
+        "id": "a6e5c1a8.6bc63",
+        "type": "set",
+        "name": "set: last-order-status = order-status",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.oper-status.last-order-status\" value=\"`$vnf-instance-service-data.oper-status.order-status`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 984.088508605957,
+        "y": 299.5959997177124,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8e3a7d8d.ca152",
+        "type": "set",
+        "name": "Clear vnf-instance topology",
+        "xml": "<set>\n\t<parameter name=\"vnf-instance-service-data.\" value=\"\" /> \n",
+        "comments": "",
+        "outputs": 1,
+        "x": 960.588508605957,
+        "y": 428.26265716552734,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "68d58b09.4d9dd4",
+        "type": "switchNode",
+        "name": "switch:CONFIG == INPUT - vnf-instance-id",
+        "xml": "<switch test=\"`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id == $vnf-instance-service-data.vnf-instance-id`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1002.694465637207,
+        "y": 209.19444751739502,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            [
+                "abf35da3.aa20e"
+            ]
+        ]
+    },
+    {
+        "id": "93e2a330.f35a",
+        "type": "switchNode",
+        "name": "switch: order-status = PendingCreate",
+        "xml": "<switch test=\"`$vnf-instance-service-data.oper-status.order-status == PendingCreate`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 291.94445037841797,
+        "y": 207.69445133209229,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            [
+                "ef7c4880.dd4728"
+            ]
+        ]
+    },
+    {
+        "id": "ef7c4880.dd4728",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 528.1944427490234,
+        "y": 208.44444465637207,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            [
+                "7f540634.54f868"
+            ]
+        ]
+    },
+    {
+        "id": "7f540634.54f868",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 690.1944427490234,
+        "y": 208.44444465637207,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            [
+                "68d58b09.4d9dd4",
+                "8bd3d099.709d5",
+                "a6e5c1a8.6bc63",
+                "faa6e689.963ce8",
+                "61bf6764.c0ee08",
+                "8e3a7d8d.ca152",
+                "1bf35c69.3105c4",
+                "e3c9abe6.25d908"
+            ]
+        ]
+    },
+    {
+        "id": "34d8bebb.20ff92",
+        "type": "comment",
+        "name": "request-action = VNFActivateRequest, svc-action = rollback",
+        "info": "",
+        "comments": "",
+        "x": 787.944450378418,
+        "y": 85.4444465637207,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": []
+    },
+    {
+        "id": "e3c9abe6.25d908",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 944.3054733276367,
+        "y": 470.55554389953613,
+        "z": "df9d3b3e.c0e1c8",
+        "wires": [
+            []
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-activate.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-activate.json
new file mode 100644
index 0000000..2c87a0a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-activate.json
@@ -0,0 +1,348 @@
+[
+    {
+        "id": "88706b6c.d7e8f8",
+        "type": "comment",
+        "name": "VNF-TOPOLOGY-ACTIVATE",
+        "info": "",
+        "comments": "",
+        "x": 705,
+        "y": 56.25,
+        "z": "bdb7525f.b82ac",
+        "wires": []
+    },
+    {
+        "id": "9919a3a0.0db84",
+        "type": "set",
+        "name": "set: order-status = Active",
+        "xml": "<set>\n\t<parameter name=\"service-data.oper-status.order-status\" value=\"Active\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 416.1111373901367,
+        "y": 392.19443130493164,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "c7aef71a.0546b8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 163.1111297607422,
+        "y": 159.6944465637207,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            [
+                "9919a3a0.0db84",
+                "d2f822b9.c0ba2",
+                "cb7a4a21.63f1a8",
+                "a2825e7b.f1f5b",
+                "997d743b.93f348",
+                "4d75942d.b062cc",
+                "4d26f461.ab756c",
+                "be925673.a43ed8"
+            ]
+        ]
+    },
+    {
+        "id": "e1d7f022.0eec5",
+        "type": "method",
+        "name": "method vnf-topology-activate",
+        "xml": "<method rpc='vnf-topology-activate' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 205.77781677246094,
+        "y": 103.86111068725586,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            [
+                "c7aef71a.0546b8"
+            ]
+        ]
+    },
+    {
+        "id": "8ecea6c6.be7228",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 297.7777862548828,
+        "y": 56.86111831665039,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            [
+                "e1d7f022.0eec5"
+            ]
+        ]
+    },
+    {
+        "id": "c14838e9.4ff538",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 132.6111297607422,
+        "y": 56.6944465637207,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            [
+                "8ecea6c6.be7228"
+            ]
+        ]
+    },
+    {
+        "id": "d2f822b9.c0ba2",
+        "type": "switchNode",
+        "name": "switch: order-status = PendingCreate",
+        "xml": "<switch test=\"`$service-data.oper-status.order-status == PendingCreate`\">\n\n<!--\nleaf order-status {\n\ttype enumeration {\n\t\tenum \"Active\";\n\t\tenum \"PendingAssignment\";\n\t\tenum \"PendingCreate\";\n\t\tenum \"PendingUpdate\";\n\t\tenum \"Deleted\";\n\t}\n}\n-->",
+        "comments": "",
+        "outputs": 1,
+        "x": 455.4445114135742,
+        "y": 288.5276527404785,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            [
+                "7fbf2884.337bd8"
+            ]
+        ]
+    },
+    {
+        "id": "7fbf2884.337bd8",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 704.7778625488281,
+        "y": 288.8609619140625,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            [
+                "6a86c40f.3cacbc"
+            ]
+        ]
+    },
+    {
+        "id": "5ab563ab.d3ac3c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid last-order-status'/>",
+        "comments": "",
+        "x": 1363.110984802246,
+        "y": 287.8610134124756,
+        "z": "bdb7525f.b82ac",
+        "wires": []
+    },
+    {
+        "id": "997d743b.93f348",
+        "type": "switchNode",
+        "name": "switch:vnf-id   config == input",
+        "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 427.88387298583984,
+        "y": 236.73988723754883,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            [
+                "18372478.ff847c"
+            ]
+        ]
+    },
+    {
+        "id": "18372478.ff847c",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 647.3383483886719,
+        "y": 236.9217071533203,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            [
+                "a2862881.e98788"
+            ]
+        ]
+    },
+    {
+        "id": "a2862881.e98788",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value=\"`'vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' not found in config tree'`\"/>",
+        "comments": "",
+        "x": 825.4292907714844,
+        "y": 236.830810546875,
+        "z": "bdb7525f.b82ac",
+        "wires": []
+    },
+    {
+        "id": "cb7a4a21.63f1a8",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 385.22225189208984,
+        "y": 612.8610877990723,
+        "z": "bdb7525f.b82ac",
+        "wires": []
+    },
+    {
+        "id": "6a86c40f.3cacbc",
+        "type": "switchNode",
+        "name": "switch: order-status = PendingUpdate",
+        "xml": "<switch test=\"`$service-data.oper-status.order-status == PendingUpdate`\">\n\n<!--\nleaf order-status {\n\ttype enumeration {\n\t\tenum \"Active\";\n\t\tenum \"PendingAssignment\";\n\t\tenum \"PendingCreate\";\n\t\tenum \"PendingUpdate\";\n\t\tenum \"Deleted\";\n\t}\n}\n-->",
+        "comments": "",
+        "outputs": 1,
+        "x": 955.7020568847656,
+        "y": 288.2853698730469,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            [
+                "8c8f2029.ca786"
+            ]
+        ]
+    },
+    {
+        "id": "8c8f2029.ca786",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1198.1564636230469,
+        "y": 288.28533935546875,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            [
+                "5ab563ab.d3ac3c"
+            ]
+        ]
+    },
+    {
+        "id": "3c6838ea.3c4ff8",
+        "type": "comment",
+        "name": "once success is returned, operational-data gets saved",
+        "info": "",
+        "comments": "",
+        "x": 731.6288452148438,
+        "y": 573.79541015625,
+        "z": "bdb7525f.b82ac",
+        "wires": []
+    },
+    {
+        "id": "a2825e7b.f1f5b",
+        "type": "set",
+        "name": "set: last-order-status = order-status",
+        "xml": "<set>\n\t<parameter name=\"service-data.oper-status.last-order-status\" value=\"`$service-data.oper-status.order-status`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 449.22481536865234,
+        "y": 340.8081398010254,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b434395d.5c9488",
+        "type": "comment",
+        "name": "request-action = VNFActivateRequest, svc-action = activate",
+        "info": "",
+        "comments": "",
+        "x": 711.7222137451172,
+        "y": 96.02778053283691,
+        "z": "bdb7525f.b82ac",
+        "wires": []
+    },
+    {
+        "id": "4d75942d.b062cc",
+        "type": "set",
+        "name": "set: service-data = input",
+        "xml": "<set>\n\t<parameter name=\"service-data.\" value=\"vnf-topology-operation-input.\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 413.1111373901367,
+        "y": 527.2500038146973,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "4d26f461.ab756c",
+        "type": "set",
+        "name": "set: last-action ",
+        "xml": "<set>\n\t<parameter name=\"service-data.oper-status.last-action\" value=\"`$service-data.request-information.request-action`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 383.1111373901367,
+        "y": 439.25000381469727,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "25f69501.db82ca",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 741.5238571166992,
+        "y": 482.2385025024414,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            [
+                "8b31c6d4.18a8e8"
+            ]
+        ]
+    },
+    {
+        "id": "8b31c6d4.18a8e8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Encountered error while updating vf-module orchestration-status in AnAI with vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`\"/>",
+        "comments": "",
+        "x": 909.6667861938477,
+        "y": 482.2385730743408,
+        "z": "bdb7525f.b82ac",
+        "wires": []
+    },
+    {
+        "id": "baf5a37d.f9734",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 407.4285888671875,
+        "y": 570.9642486572266,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "be925673.a43ed8",
+        "type": "save",
+        "name": "update AnAI - vf-module.orchestration-status",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module\" \n\t\tkey=\"vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t\t\tAND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id\" \n\t\tlocal-only=\"false\" >\n\t<parameter name=\"orchestration-status\" value=\"active\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 477,
+        "y": 482.25,
+        "z": "bdb7525f.b82ac",
+        "wires": [
+            [
+                "25f69501.db82ca"
+            ]
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-assign-vfmodule.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-assign-vfmodule.json
new file mode 100644
index 0000000..cb53e89
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-assign-vfmodule.json
@@ -0,0 +1,1873 @@
+[
+    {
+        "id": "a31dd50.8f7cf28",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 140,
+        "y": 61.42857360839844,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "fcb8154c.6bd848"
+            ]
+        ]
+    },
+    {
+        "id": "fcb8154c.6bd848",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 305.1666564941406,
+        "y": 61.595245361328125,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "94fe54b7.9c25f8"
+            ]
+        ]
+    },
+    {
+        "id": "94fe54b7.9c25f8",
+        "type": "method",
+        "name": "method vnf-topology-assign-vfmodule",
+        "xml": "<method rpc='vnf-topology-assign-vfmodule' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 237.16668701171875,
+        "y": 114.5952377319336,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "1d4d3089.10a17f"
+            ]
+        ]
+    },
+    {
+        "id": "1d4d3089.10a17f",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 189.50000762939453,
+        "y": 163.42857360839844,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "20002884.ee2078",
+                "b3f35db0.e0e4",
+                "d031edaa.e6184",
+                "cb1afc0e.40927",
+                "3c67b88b.3c6c28",
+                "9aaf059b.32e0d8",
+                "9f4073e7.b1211"
+            ]
+        ]
+    },
+    {
+        "id": "637385b9.ca295c",
+        "type": "switchNode",
+        "name": "switch test: INPUT network-id = NULL",
+        "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-id == '' or $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-id == '0'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 718.9422798156738,
+        "y": 715.4150276184082,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "49d71e01.633db",
+                "53a64d09.4de384"
+            ]
+        ]
+    },
+    {
+        "id": "49d71e01.633db",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 959.3057670593262,
+        "y": 758.5968976020813,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "3983efb0.652cd"
+            ]
+        ]
+    },
+    {
+        "id": "3983efb0.652cd",
+        "type": "switchNode",
+        "name": "switch : INPUT network-name = NULL",
+        "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-name == '' or $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-name == '0'`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1197.0878677368164,
+        "y": 758.4408760070801,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "372c9435.92cf3c",
+                "d62ab763.7f7488"
+            ]
+        ]
+    },
+    {
+        "id": "53a64d09.4de384",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 959.3260536193848,
+        "y": 715.3039240837097,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "c6e8f114.6edb3"
+            ]
+        ]
+    },
+    {
+        "id": "372c9435.92cf3c",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1435.2798194885254,
+        "y": 797.9963579177856,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "459aea4a.7ec284"
+            ]
+        ]
+    },
+    {
+        "id": "c6e8f114.6edb3",
+        "type": "save",
+        "name": "get  AnAI - l3-network by id",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-id = $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.l3network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1160.548168182373,
+        "y": 715.3040919303894,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "ef79ca38.6e05a8",
+                "8a064197.2016f"
+            ]
+        ]
+    },
+    {
+        "id": "ef79ca38.6e05a8",
+        "type": "success",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1363.4928588867188,
+        "y": 714.8595404624939,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "df4013d1.53f66"
+            ]
+        ]
+    },
+    {
+        "id": "d4a5dd72.75857",
+        "type": "for",
+        "name": "for i : INPUT vnf-networks",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$vnf-topology-operation-input.vnf-request-information.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 548.236156463623,
+        "y": 571.9077110290527,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "2dd04c5d.087a24"
+            ]
+        ]
+    },
+    {
+        "id": "459aea4a.7ec284",
+        "type": "save",
+        "name": "get AnAI - l3-network by name",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-name = $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-name\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.l3network\">\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1645.7818222045898,
+        "y": 797.7381496429443,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "3388e17e.b2e1be",
+                "86e3396f.1580b8"
+            ]
+        ]
+    },
+    {
+        "id": "3388e17e.b2e1be",
+        "type": "success",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1867.0318222045898,
+        "y": 797.9882106781006,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "df4013d1.53f66"
+            ]
+        ]
+    },
+    {
+        "id": "b1029783.5d2708",
+        "type": "set",
+        "name": "initialize tmp.usePreload = 1 and tmp.AAI.l3network",
+        "xml": "<set>\n<parameter name='tmp.usePreload' value='1' />\n<parameter name='tmp.AnAI.l3network.' value='' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 435.72979736328125,
+        "y": 485.63307189941406,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "22808f4a.1e8c2",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 510.91400146484375,
+        "y": 398.16761016845703,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "b1029783.5d2708",
+                "816372ff.06ba2",
+                "b66fd01c.9af55"
+            ]
+        ]
+    },
+    {
+        "id": "20002884.ee2078",
+        "type": "for",
+        "name": "for j : PRELOAD vnf-networks",
+        "xml": "<for index=\"j\" start=\"0\" end=\"`$preload-data.vnf-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 273.8889465332031,
+        "y": 398.6785583496094,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "22808f4a.1e8c2"
+            ]
+        ]
+    },
+    {
+        "id": "816372ff.06ba2",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 315.61627197265625,
+        "y": 571.8376026153564,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "d4a5dd72.75857",
+                "fd1635d9.5c1398"
+            ]
+        ]
+    },
+    {
+        "id": "2dd04c5d.087a24",
+        "type": "switchNode",
+        "name": "switch : PRELOAD network-role = INPUT",
+        "xml": "<switch test=\"`$preload-data.vnf-topology-information.vnf-assignments.vnf-networks[$j].network-role == $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-role`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 857.6163368225098,
+        "y": 572.2012739181519,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "b66fe12f.c0be8"
+            ]
+        ]
+    },
+    {
+        "id": "b66fe12f.c0be8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1108.4117622375488,
+        "y": 572.4969162940979,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "6c5f5d3f.b58ed4"
+            ]
+        ]
+    },
+    {
+        "id": "6c5f5d3f.b58ed4",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 466.6973304748535,
+        "y": 672.2760715484619,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "637385b9.ca295c",
+                "13b8f738.862a39",
+                "989e6dbf.d5d9d"
+            ]
+        ]
+    },
+    {
+        "id": "13b8f738.862a39",
+        "type": "set",
+        "name": "set tmp.usePreload = 0",
+        "xml": "<set>\n<parameter name='tmp.usePreload' value='0' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 673.060962677002,
+        "y": 672.1852006912231,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d62ab763.7f7488",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1434.8377532958984,
+        "y": 758.7023506164551,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "df4013d1.53f66"
+            ]
+        ]
+    },
+    {
+        "id": "989e6dbf.d5d9d",
+        "type": "switchNode",
+        "name": "switch : tmp.usePreload= 0",
+        "xml": "<switch test=\"`$tmp.usePreload == 0`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 699.7430572509766,
+        "y": 951.2915191650391,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "a94fbeb7.9f49d"
+            ]
+        ]
+    },
+    {
+        "id": "a94fbeb7.9f49d",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 898.7429428100586,
+        "y": 951.5416564941406,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "f300366b.1bf838"
+            ]
+        ]
+    },
+    {
+        "id": "ae3d7146.3003c",
+        "type": "for",
+        "name": "for k : SERVICE_DATA vnf-networks",
+        "xml": "<for index=\"k\" start=\"0\" end=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 800.1870269775391,
+        "y": 1135.3089752197266,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "6d4a43e6.1837ec"
+            ]
+        ]
+    },
+    {
+        "id": "6d4a43e6.1837ec",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA network-role = INPUT",
+        "xml": "<switch test=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].network-role == $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-role`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1158.0671691894531,
+        "y": 1135.6582279205322,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "5d39673b.750638"
+            ]
+        ]
+    },
+    {
+        "id": "5d39673b.750638",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1437.6125793457031,
+        "y": 1135.7038822174072,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "99507e8d.3fb04"
+            ]
+        ]
+    },
+    {
+        "id": "fd1635d9.5c1398",
+        "type": "switchNode",
+        "name": "switch: tmp.usePreload= 1",
+        "xml": "<switch test=\"`$tmp.usePreload == 1`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 540.9327087402344,
+        "y": 1653.80224609375,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "f3fd6148.f130e"
+            ]
+        ]
+    },
+    {
+        "id": "f3fd6148.f130e",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 748.9642868041992,
+        "y": 1653.5424976348877,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "394ee13a.df62ee"
+            ]
+        ]
+    },
+    {
+        "id": "df4013d1.53f66",
+        "type": "set",
+        "name": "set tmp.usePreload = 1",
+        "xml": "<set>\n<parameter name='tmp.usePreload' value='1' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1629.4458465576172,
+        "y": 899.4613742828369,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b7f69264.cf1ab",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to query AnAI for l3-network with network-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-id`\"  />\n",
+        "comments": "",
+        "x": 1514.416659037272,
+        "y": 673.9840910169814,
+        "z": "3018bfef.3ec6f",
+        "wires": []
+    },
+    {
+        "id": "8a064197.2016f",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1357.1944368150498,
+        "y": 673.9840910169814,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "b7f69264.cf1ab"
+            ]
+        ]
+    },
+    {
+        "id": "d9b59f8d.62ec6",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to query AnAI for l3-network with network-name = ' + $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-name`\"  />\n",
+        "comments": "",
+        "x": 2015.5275802612305,
+        "y": 756.2063064575195,
+        "z": "3018bfef.3ec6f",
+        "wires": []
+    },
+    {
+        "id": "86e3396f.1580b8",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1858.3053580390078,
+        "y": 756.2063064575195,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "d9b59f8d.62ec6"
+            ]
+        ]
+    },
+    {
+        "id": "18ac44d0.2f45cb",
+        "type": "set",
+        "name": "set: SERVICE_DATA vnf-networks = AAI DATA",
+        "xml": "<set>\n<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].network-name\" value=\"`$tmp.AnAI.l3network.network-name`\" />\n<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].network-id\" value=\"`$tmp.AnAI.l3network.network-id`\" />\n<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].neutron-id\" value=\"`$tmp.AnAI.l3network.neutron-network-id`\" />\n<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].contrail-network-fqdn\" value=\"`$tmp.AnAI.l3network.contrail-network-fqdn`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1894.9072570800781,
+        "y": 1135.7456226348877,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d30c2e81.9d2fd",
+        "type": "success",
+        "name": "not found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1419.0712356567383,
+        "y": 1653.4231624603271,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "ae6f9f81.1a798"
+            ]
+        ]
+    },
+    {
+        "id": "10de1549.964beb",
+        "type": "set",
+        "name": "set: SERVICE_DATA vnf-networks = AAI DATA",
+        "xml": "<set>\n<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].network-name\" value=\"`$tmp.AnAI.l3network.network-name`\" />\n<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].network-id\" value=\"`$tmp.AnAI.l3network.network-id`\" />\n<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].neutron-id\" value=\"`$tmp.AnAI.l3network.neutron-network-id`\" />\n<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].contrail-network-fqdn\" value=\"`$tmp.AnAI.l3network.contrail-network-fqdn`\" />\n\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2024.2062301635742,
+        "y": 1900.2730236053467,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "a3d35540.191cd8",
+        "type": "save",
+        "name": "get AnAI - l3-network by name",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"l3-network\" \n\t\tkey=\"l3-network.network-name = $preload-data.vnf-topology-information.vnf-assignments.vnf-networks[$j].network-name\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.l3network\">\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1153.964256286621,
+        "y": 1653.6891021728516,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "d30c2e81.9d2fd",
+                "d435904c.f085c",
+                "f9269416.45efe8"
+            ]
+        ]
+    },
+    {
+        "id": "394ee13a.df62ee",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 904.9758262634277,
+        "y": 1653.9880352020264,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "a3d35540.191cd8",
+                "b15670b5.3c9b2",
+                "ad2f4a81.8af4e8"
+            ]
+        ]
+    },
+    {
+        "id": "e68e26af.0bdf48",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to query AnAI for l3-network with network-name = ' + $vnf-topology-operation-input.vnf-request-information.vnf-networks[$j].network-name`\"  />\n",
+        "comments": "",
+        "x": 1566.3570709228516,
+        "y": 1691.285740852356,
+        "z": "3018bfef.3ec6f",
+        "wires": []
+    },
+    {
+        "id": "d435904c.f085c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1411.1348487006294,
+        "y": 1691.285740852356,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "e68e26af.0bdf48"
+            ]
+        ]
+    },
+    {
+        "id": "ae6f9f81.1a798",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'PRELOAD network-name = ' + $preload-data.vnf-topology-information.vnf-assignments.vnf-networks[$j].network-name + ' not found in AnAI'`\"  />\n",
+        "comments": "",
+        "x": 1585.3571014404297,
+        "y": 1653.2857656478882,
+        "z": "3018bfef.3ec6f",
+        "wires": []
+    },
+    {
+        "id": "b3f35db0.e0e4",
+        "type": "switchNode",
+        "name": "switch ...PRELOAD vnf-networks[]",
+        "xml": "<switch test=\"`$preload-data.vnf-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 453.5,
+        "y": 342.9285774230957,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "24971653.569cea"
+            ]
+        ]
+    },
+    {
+        "id": "24971653.569cea",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 680.9444732666016,
+        "y": 342.4562873840332,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "cbca70d0.7f17"
+            ]
+        ]
+    },
+    {
+        "id": "cbca70d0.7f17",
+        "type": "set",
+        "name": "set PRELOAD vnf-networks[] = 0",
+        "xml": "<set>\n<parameter name = \"preload-data.vnf-topology-information.vnf-assignments.vnf-networks_length\" value=\"0\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 902.5000822279189,
+        "y": 342.4563080469766,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b66fd01c.9af55",
+        "type": "switchNode",
+        "name": "switch ...INPUT vnf-networks[]",
+        "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 369.00001525878906,
+        "y": 526.6785554885864,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "3bbc7752.e54408"
+            ]
+        ]
+    },
+    {
+        "id": "3bbc7752.e54408",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 592.444465637207,
+        "y": 526.4562911987305,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "ebefaf21.666f1"
+            ]
+        ]
+    },
+    {
+        "id": "ebefaf21.666f1",
+        "type": "set",
+        "name": "set INPUT vnf-networks_length = 0",
+        "xml": "<set>\n<parameter name='vnf-topology-operation-input.vnf-request-information.vnf-networks_length' value='0' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 825.0000745985244,
+        "y": 526.4563118616738,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8ee6be3c.0943d",
+        "type": "comment",
+        "name": "For each preload network, see if there is an override in input",
+        "info": "",
+        "comments": "",
+        "x": 861.8612213134766,
+        "y": 454.90082454681396,
+        "z": "3018bfef.3ec6f",
+        "wires": []
+    },
+    {
+        "id": "be41e53d.c12d58",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA network-role = PRELOAD",
+        "xml": "<switch test=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].network-role == $preload-data.vnf-topology-information.vnf-assignments.vnf-networks[$j].network-role`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1278.1070175170898,
+        "y": 1900.0358438491821,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "35b957ef.660a98"
+            ]
+        ]
+    },
+    {
+        "id": "35b957ef.660a98",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1566.509693145752,
+        "y": 1899.6528720855713,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "9a01436f.4ed71"
+            ]
+        ]
+    },
+    {
+        "id": "b15670b5.3c9b2",
+        "type": "for",
+        "name": "for k : SERVICE_DATA vnf-networks",
+        "xml": "<for index=\"k\" start=\"0\" end=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1173.642807006836,
+        "y": 1850.6072368621826,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "be41e53d.c12d58"
+            ]
+        ]
+    },
+    {
+        "id": "c7ee590b.fb69b8",
+        "type": "comment",
+        "name": "CALLED BY vnf-topology-assign AND vnf-topology-changeassign",
+        "info": "",
+        "comments": "",
+        "x": 795.1666564941406,
+        "y": 105.53968811035156,
+        "z": "3018bfef.3ec6f",
+        "wires": []
+    },
+    {
+        "id": "cb1afc0e.40927",
+        "type": "set",
+        "name": "set: service-data =+ input",
+        "xml": "<set>\n\t<parameter name=\"service-data.\" value=\"vnf-topology-operation-input.\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 425.27777671813965,
+        "y": 251.8730125427246,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d031edaa.e6184",
+        "type": "set",
+        "name": "set: service-data = preload-data",
+        "xml": "<set>\n\t<parameter name=\"service-data.\" value=\"preload-data.\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 445.1818904876709,
+        "y": 210.0194969177246,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3c67b88b.3c6c28",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 396.2857437133789,
+        "y": 1912.2859153747559,
+        "z": "3018bfef.3ec6f",
+        "wires": []
+    },
+    {
+        "id": "9aaf059b.32e0d8",
+        "type": "switchNode",
+        "name": "switch: preload order-status = PendingAssignment",
+        "xml": "<switch test=\"`$preload-data.oper-status.order-status == PendingAssignment`\">\n<!--\nleaf order-status {\n\ttype enumeration {\n\t\tenum \"Active\";\n\t\tenum \"PendingAssignment\";\n\t\tenum \"PendingCreate\";\n\t\tenum \"PendingUpdate\";\n\t\tenum \"Deleted\";\n\t}\n}\n-->",
+        "comments": "",
+        "outputs": 1,
+        "x": 502.2777862548828,
+        "y": 163.4285764694214,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "113a87df.14b818"
+            ]
+        ]
+    },
+    {
+        "id": "d97cceee.5c382",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid preload-data order status'/>",
+        "comments": "",
+        "x": 919.2170295715332,
+        "y": 163.1255865097046,
+        "z": "3018bfef.3ec6f",
+        "wires": []
+    },
+    {
+        "id": "113a87df.14b818",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 769.883918762207,
+        "y": 163.1255121231079,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "d97cceee.5c382"
+            ]
+        ]
+    },
+    {
+        "id": "9f4073e7.b1211",
+        "type": "set",
+        "name": "set: vnf-id",
+        "xml": "<set>\n\t<parameter name=\"service-data.vnf-id\" value=\"`$vnf-topology-operation-input.vnf-request-information.vnf-id`\"/>\n\t<parameter name=\"service-data.service-information.service-instance-id\" value=\"`$vnf-topology-operation-input.service-information.service-instance-id`\"/>\n\t<parameter name=\"service-data.vnf-request-information.vnf-id\" value=\"`$vnf-topology-operation-input.vnf-request-information.vnf-id`\"/>\n    <parameter name=\"service-data.vnf-topology-information.vnf-topology-identifier.vnf-id\" value=\"`$vnf-topology-operation-input.vnf-request-information.vnf-id`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 377.5992889404297,
+        "y": 296.36905097961426,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "63fc40cc.c84e4",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.network-id == null",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.network-id == ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1676.7500305175781,
+        "y": 1729.1787147521973,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "f7b88266.11803"
+            ]
+        ]
+    },
+    {
+        "id": "f7b88266.11803",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1939.0000305175781,
+        "y": 1729.1787147521973,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "60aaae18.6b34b"
+            ]
+        ]
+    },
+    {
+        "id": "60aaae18.6b34b",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'An error occurred while querying l3-network with network-name = ' + $preload-data.vnf-topology-information.vnf-assignments.vnf-networks[$j].network-name + ' , it is likely that there are more than one l3-newtork object with the same network-name in AnAI.'`\"  />\n",
+        "comments": "",
+        "x": 2093.000030517578,
+        "y": 1729.6787147521973,
+        "z": "3018bfef.3ec6f",
+        "wires": []
+    },
+    {
+        "id": "f9269416.45efe8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1414.750015258789,
+        "y": 1728.928695678711,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "63fc40cc.c84e4"
+            ]
+        ]
+    },
+    {
+        "id": "365956fb.0b312a",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA ipv6-sbunet-id == NULL",
+        "xml": "<switch test=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id == ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2011.41650390625,
+        "y": 2245.250244140625,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "94a6ca67.61df88"
+            ]
+        ]
+    },
+    {
+        "id": "94a6ca67.61df88",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2295.6664695739746,
+        "y": 2245.00022315979,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "34509c24.cfaf64"
+            ]
+        ]
+    },
+    {
+        "id": "b4cda74e.ecf228",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA sbunet-name != NULL",
+        "xml": "<switch test=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].subnet-name != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2102.857208251953,
+        "y": 2050.3570852279663,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "117b6909.23fc67"
+            ]
+        ]
+    },
+    {
+        "id": "117b6909.23fc67",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2368.1071739196777,
+        "y": 2050.1070642471313,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "14f42f64.b3e611"
+            ]
+        ]
+    },
+    {
+        "id": "f8a8a33e.215bb",
+        "type": "set",
+        "name": "set: service-data = AnAI - subnet-id ",
+        "xml": "<set>\n<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].subnet-id\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 3136.868942260742,
+        "y": 2164.6549243927,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "14f42f64.b3e611",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.subnets.subnet != NULL",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2228.368927001953,
+        "y": 2107.9048166275024,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "12ee504d.24c76"
+            ]
+        ]
+    },
+    {
+        "id": "f8a347b6.06cb48",
+        "type": "for",
+        "name": "for i : tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2271.797393798828,
+        "y": 2166.0834045410156,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "f8cb09b3.6b0028"
+            ]
+        ]
+    },
+    {
+        "id": "f8cb09b3.6b0028",
+        "type": "switchNode",
+        "name": "switch: AnAI == service-data - subnet-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].subnet-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2644.547348022461,
+        "y": 2165.3334884643555,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "7ed66661.050d48"
+            ]
+        ]
+    },
+    {
+        "id": "7ed66661.050d48",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2902.950038909912,
+        "y": 2165.2005167007446,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "f8a8a33e.215bb"
+            ]
+        ]
+    },
+    {
+        "id": "12ee504d.24c76",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2513.6904106140137,
+        "y": 2107.4882073402405,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "f8a347b6.06cb48"
+            ]
+        ]
+    },
+    {
+        "id": "34509c24.cfaf64",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA ipv6-sbunet-name != NULL",
+        "xml": "<switch test=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-name != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2147.6188888549805,
+        "y": 2299.976417541504,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "9d340516.572948"
+            ]
+        ]
+    },
+    {
+        "id": "9d340516.572948",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2432.868854522705,
+        "y": 2299.726396560669,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "1544738d.b38abc"
+            ]
+        ]
+    },
+    {
+        "id": "e9ee4f00.4d645",
+        "type": "set",
+        "name": "set: service-data = AnAI - ipv6-subnet-id ",
+        "xml": "<set>\n<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 3159.1308670043945,
+        "y": 2411.7742557525635,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1544738d.b38abc",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.subnets.subnet != NULL",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2248.1308517456055,
+        "y": 2355.024024963379,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "151974e3.0664ab"
+            ]
+        ]
+    },
+    {
+        "id": "5a40afd6.e4ff8",
+        "type": "for",
+        "name": "for i : tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2294.0593185424805,
+        "y": 2413.202735900879,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "d120df1f.f811c"
+            ]
+        ]
+    },
+    {
+        "id": "d120df1f.f811c",
+        "type": "switchNode",
+        "name": "switch: AnAI == service-data - ipv6-subnet-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2666.8092727661133,
+        "y": 2412.4528198242188,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "541bc841.f2b0f8"
+            ]
+        ]
+    },
+    {
+        "id": "541bc841.f2b0f8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2925.2119636535645,
+        "y": 2412.319848060608,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "e9ee4f00.4d645"
+            ]
+        ]
+    },
+    {
+        "id": "151974e3.0664ab",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2533.452335357666,
+        "y": 2354.607415676117,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "5a40afd6.e4ff8"
+            ]
+        ]
+    },
+    {
+        "id": "9a01436f.4ed71",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1729.9999771118164,
+        "y": 1900.16672706604,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "10de1549.964beb",
+                "6110484f.04a978",
+                "365956fb.0b312a"
+            ]
+        ]
+    },
+    {
+        "id": "6110484f.04a978",
+        "type": "switchNode",
+        "name": "switch: SERVICE-DATA sbunet-id == NULL",
+        "xml": "<switch test=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].subnet-id == ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1996.4285697937012,
+        "y": 1993.845314025879,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "71d2499c.c98928"
+            ]
+        ]
+    },
+    {
+        "id": "71d2499c.c98928",
+        "type": "outcomeFalse",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2252.6785049438477,
+        "y": 1994.345365524292,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "b4cda74e.ecf228"
+            ]
+        ]
+    },
+    {
+        "id": "99507e8d.3fb04",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1601.2500228881836,
+        "y": 1136.2500171661377,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "18ac44d0.2f45cb",
+                "aa7965a7.8a0268",
+                "fe682f55.17228"
+            ]
+        ]
+    },
+    {
+        "id": "9b32ad95.a25bc",
+        "type": "comment",
+        "name": "Use INPUT vnf-networks to override preload",
+        "info": "",
+        "comments": "",
+        "x": 906.6070709228516,
+        "y": 1030.7142543792725,
+        "z": "3018bfef.3ec6f",
+        "wires": []
+    },
+    {
+        "id": "f6b569a4.ef41e8",
+        "type": "comment",
+        "name": "if INPUT vnf-network not in AnAI, use Preload",
+        "info": "",
+        "comments": "",
+        "x": 1957.1429443359375,
+        "y": 878.2142715454102,
+        "z": "3018bfef.3ec6f",
+        "wires": []
+    },
+    {
+        "id": "acfdf9bf.62cbd8",
+        "type": "switchNode",
+        "name": "switch: INPUT sbunet-name != NULL",
+        "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].subnet-name != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2384.226348876953,
+        "y": 1246.8569526672363,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "279dbc6a.3dcd44"
+            ]
+        ]
+    },
+    {
+        "id": "279dbc6a.3dcd44",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2621.4763145446777,
+        "y": 1246.6069316864014,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "7a8c22e0.a09bfc"
+            ]
+        ]
+    },
+    {
+        "id": "15630d42.609893",
+        "type": "set",
+        "name": "set: service-data = AnAI - subnet-id ",
+        "xml": "<set>\n<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].subnet-id\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 3360.738327026367,
+        "y": 1360.154670715332,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7a8c22e0.a09bfc",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.subnets.subnet != NULL",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2487.238311767578,
+        "y": 1297.1545581817627,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "f12b50fc.bf6ec"
+            ]
+        ]
+    },
+    {
+        "id": "3e5c8652.818e1a",
+        "type": "for",
+        "name": "for i : tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2495.666778564453,
+        "y": 1361.5831508636475,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "1103bb86.f0b774"
+            ]
+        ]
+    },
+    {
+        "id": "1103bb86.f0b774",
+        "type": "switchNode",
+        "name": "switch: AnAI == INPUT - subnet-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].subnet-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2868.416732788086,
+        "y": 1360.8332347869873,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "86b2b0cf.39e87"
+            ]
+        ]
+    },
+    {
+        "id": "86b2b0cf.39e87",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3126.819423675537,
+        "y": 1360.7002630233765,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "15630d42.609893"
+            ]
+        ]
+    },
+    {
+        "id": "f12b50fc.bf6ec",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2772.5597953796387,
+        "y": 1296.7379488945007,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "3e5c8652.818e1a"
+            ]
+        ]
+    },
+    {
+        "id": "fe682f55.17228",
+        "type": "switchNode",
+        "name": "switch: INPUT sbunet-id != NULL",
+        "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].subnet-id != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1877.797794342041,
+        "y": 1203.0951328277588,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "d47a1488.eef628",
+                "c9c1e1fa.1b416"
+            ]
+        ]
+    },
+    {
+        "id": "b85f607.859b7a",
+        "type": "set",
+        "name": "set: data-data = INPUT - subnet-id ",
+        "xml": "<set>\n<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].subnet-id\" value=\"`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2376.0477905273438,
+        "y": 1203.3451347351074,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "d47a1488.eef628",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2134.0477600097656,
+        "y": 1202.8451118469238,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "b85f607.859b7a"
+            ]
+        ]
+    },
+    {
+        "id": "c9c1e1fa.1b416",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2135.2978019714355,
+        "y": 1246.8451328277588,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "acfdf9bf.62cbd8"
+            ]
+        ]
+    },
+    {
+        "id": "a1734fb1.d43be",
+        "type": "switchNode",
+        "name": "switch: INPUT ipv6-sbunet-name != NULL",
+        "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].ipv6-subnet-name != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2392.5,
+        "y": 1475,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "e98fe3c1.1cf8c"
+            ]
+        ]
+    },
+    {
+        "id": "e98fe3c1.1cf8c",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2639.7499656677246,
+        "y": 1474.749979019165,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "77179e25.c032f"
+            ]
+        ]
+    },
+    {
+        "id": "7618e85b.df1788",
+        "type": "set",
+        "name": "set: service-data = AnAI - ipv6-subnet-id ",
+        "xml": "<set>\n<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id\" value=\"`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 3369.011978149414,
+        "y": 1588.2977180480957,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "77179e25.c032f",
+        "type": "switchNode",
+        "name": "switch: tmp.AnAI.l3network.subnets.subnet != NULL",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet_length != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2495.511962890625,
+        "y": 1525.2976055145264,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "d63d308e.fbbed"
+            ]
+        ]
+    },
+    {
+        "id": "4cf11d6a.ec1414",
+        "type": "for",
+        "name": "for i : tmp.AnAI.l3network.subnets.subnet[]",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.l3network.subnets.subnet_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2503.9404296875,
+        "y": 1589.7261981964111,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "1eb54f30.ad23b1"
+            ]
+        ]
+    },
+    {
+        "id": "1eb54f30.ad23b1",
+        "type": "switchNode",
+        "name": "switch: AnAI == INPUT - ipv6-subnet-name",
+        "xml": "<switch test=\"`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].ipv6-subnet-name`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 2876.690383911133,
+        "y": 1588.976282119751,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "bba8b999.fef0c8"
+            ]
+        ]
+    },
+    {
+        "id": "bba8b999.fef0c8",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 3135.093074798584,
+        "y": 1588.8433103561401,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "7618e85b.df1788"
+            ]
+        ]
+    },
+    {
+        "id": "d63d308e.fbbed",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2780.8334465026855,
+        "y": 1524.8809962272644,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "4cf11d6a.ec1414"
+            ]
+        ]
+    },
+    {
+        "id": "aa7965a7.8a0268",
+        "type": "switchNode",
+        "name": "switch: INPUT ipv6-sbunet-id != NULL",
+        "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].ipv6-subnet-id != ''`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1886.071445465088,
+        "y": 1431.2381801605225,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "dba017f7.db9878",
+                "db733b1.265eec8"
+            ]
+        ]
+    },
+    {
+        "id": "83458f26.3bb7d",
+        "type": "set",
+        "name": "set: service-data = INPUT - ipv6-subnet-id ",
+        "xml": "<set>\n<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id\" value=\"`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].ipv6-subnet-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 2393.3214416503906,
+        "y": 1431.488182067871,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "dba017f7.db9878",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2142.3214111328125,
+        "y": 1430.9881591796875,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "83458f26.3bb7d"
+            ]
+        ]
+    },
+    {
+        "id": "db733b1.265eec8",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 2143.5714530944824,
+        "y": 1474.9881801605225,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "a1734fb1.d43be"
+            ]
+        ]
+    },
+    {
+        "id": "f8168a86.067868",
+        "type": "comment",
+        "name": "Use Preload Data",
+        "info": "",
+        "comments": "",
+        "x": 576,
+        "y": 1599.5,
+        "z": "3018bfef.3ec6f",
+        "wires": []
+    },
+    {
+        "id": "ad2f4a81.8af4e8",
+        "type": "switchNode",
+        "name": "switch: service-data...vnf-networks_length",
+        "xml": "<switch test=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1190.21435546875,
+        "y": 1803.0714111328125,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "27e3bb35.5afc04"
+            ]
+        ]
+    },
+    {
+        "id": "27e3bb35.5afc04",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1449.7143478393555,
+        "y": 1803.0714111328125,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "c75309.f948fcf8"
+            ]
+        ]
+    },
+    {
+        "id": "c75309.f948fcf8",
+        "type": "switchNode",
+        "name": "set: service-data...vnf-networks_length = 0",
+        "xml": "<set>\n\t<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks_length\" value = \"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1714.4643478393555,
+        "y": 1803.0714111328125,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "98d3927f.7bccf",
+        "type": "switchNode",
+        "name": "switch: service-data...vnf-networks_length",
+        "xml": "<switch test=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 817.6786041259766,
+        "y": 1087.6786041259766,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "d2e9cd7e.23312"
+            ]
+        ]
+    },
+    {
+        "id": "d2e9cd7e.23312",
+        "type": "other",
+        "name": "NULL",
+        "xml": "<outcome value=''>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1077.178596496582,
+        "y": 1087.6786041259766,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "fcd3cd85.688eb"
+            ]
+        ]
+    },
+    {
+        "id": "fcd3cd85.688eb",
+        "type": "switchNode",
+        "name": "set: service-data...vnf-networks_length = 0",
+        "xml": "<set>\n\t<parameter name=\"service-data.vnf-topology-information.vnf-assignments.vnf-networks_length\" value = \"0\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1341.928596496582,
+        "y": 1087.6786041259766,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "f300366b.1bf838",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 542.1428298950195,
+        "y": 1036.6786041259766,
+        "z": "3018bfef.3ec6f",
+        "wires": [
+            [
+                "98d3927f.7bccf",
+                "ae3d7146.3003c"
+            ]
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-assign.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-assign.json
new file mode 100644
index 0000000..4f9513c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-assign.json
@@ -0,0 +1,441 @@
+[
+    {
+        "id": "6b847111.14518",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 138,
+        "y": 100,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "e8032bdd.c514c8"
+            ]
+        ]
+    },
+    {
+        "id": "e8032bdd.c514c8",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 252,
+        "y": 160,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "efc24499.7db518"
+            ]
+        ]
+    },
+    {
+        "id": "efc24499.7db518",
+        "type": "method",
+        "name": "method vnf-topology-assign",
+        "xml": "<method rpc='vnf-topology-assign' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 254.5,
+        "y": 220,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "291cc045.48f06"
+            ]
+        ]
+    },
+    {
+        "id": "291cc045.48f06",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 292,
+        "y": 280,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "79076789.383708",
+                "d3435702.674a18",
+                "53b3c202.b3d34c",
+                "6511ce13.6b3e7",
+                "b261bb64.7dc868",
+                "730a4402.7a9fec",
+                "cc1eb17.357f85",
+                "ec4234b5.37aa58",
+                "e1123f17.441d3"
+            ]
+        ]
+    },
+    {
+        "id": "79076789.383708",
+        "type": "set",
+        "name": "set: order-status = PendingCreate",
+        "xml": "<set>\n\t<parameter name=\"service-data.oper-status.order-status\" value=\"PendingCreate\"/>",
+        "comments": "",
+        "x": 594.5,
+        "y": 640,
+        "z": "f6aa4435.0ea2a8",
+        "wires": []
+    },
+    {
+        "id": "d3435702.674a18",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 533.5,
+        "y": 720,
+        "z": "f6aa4435.0ea2a8",
+        "wires": []
+    },
+    {
+        "id": "3098b2d1.15998e",
+        "type": "comment",
+        "name": "request-action = VNFActivateRequest",
+        "info": "",
+        "comments": "",
+        "x": 222,
+        "y": 60,
+        "z": "f6aa4435.0ea2a8",
+        "wires": []
+    },
+    {
+        "id": "404b9c45.b090b4",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 890,
+        "y": 600,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "44680508.69c9cc"
+            ]
+        ]
+    },
+    {
+        "id": "76ee352d.d7924c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"Encountered error while updating vf-module orchestration-status in AnAI\"/>",
+        "comments": "",
+        "x": 1268.5,
+        "y": 600,
+        "z": "f6aa4435.0ea2a8",
+        "wires": []
+    },
+    {
+        "id": "e68cdc52.c407d",
+        "type": "save",
+        "name": "save relationship: l3-network",
+        "xml": "<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module:relationship-list\" \n\t\tkey=\"vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t\t\tand generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id\" \n\tforce=\"true\" \n\tlocal-only=\"false\">\n\t\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"l3-network.network-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$i].network-id`\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 918,
+        "y": 480,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "37286e8d.29b9f2"
+            ]
+        ]
+    },
+    {
+        "id": "37286e8d.29b9f2",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 890,
+        "y": 520,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "44f17fbc.617ed"
+            ]
+        ]
+    },
+    {
+        "id": "53b3c202.b3d34c",
+        "type": "for",
+        "name": "for i : SERVICE_DATA vnf-networks",
+        "xml": "<for index=\"i\" start=\"0\" end=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 600,
+        "y": 480,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "e68cdc52.c407d"
+            ]
+        ]
+    },
+    {
+        "id": "749c3a93.be4684",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Encountered error while saving vf-module l3-network relationship in AnAI with network-id = ' + $service-data.vnf-topology-information.vnf-assignments.vnf-networks[$i].network-id`\"/>",
+        "comments": "",
+        "x": 1268.5,
+        "y": 560,
+        "z": "f6aa4435.0ea2a8",
+        "wires": []
+    },
+    {
+        "id": "44f17fbc.617ed",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 1052,
+        "y": 520,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "a2a13f6d.2a0c8",
+                "749c3a93.be4684"
+            ]
+        ]
+    },
+    {
+        "id": "a2a13f6d.2a0c8",
+        "type": "save",
+        "name": "delete vf-module: l3-network relationship",
+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module:relationship-list\" \n\tkey=\"vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t\tAND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id \n\t\tAND related-to = l3-network\" \n\tforce=\"true\" \n\tlocal-only=\"false\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 1355.5,
+        "y": 520,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "6511ce13.6b3e7",
+        "type": "save",
+        "name": "update AnAI - vf-module.orchestration-status",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module\" \n\t\tkey=\"vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t\t\tand generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id\" \n\t\tlocal-only=\"false\" >\n\t<parameter name=\"orchestration-status\" value=\"pending-create\" />",
+        "comments": "",
+        "outputs": 1,
+        "x": 628.5,
+        "y": 600,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "404b9c45.b090b4"
+            ]
+        ]
+    },
+    {
+        "id": "44680508.69c9cc",
+        "type": "block",
+        "name": "block: atomic",
+        "xml": "<block atomic=\"true\">\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1049.5,
+        "y": 600,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "76ee352d.d7924c",
+                "a2a13f6d.2a0c8"
+            ]
+        ]
+    },
+    {
+        "id": "b261bb64.7dc868",
+        "type": "call",
+        "name": "call: vnf-topology-assign-vfmodule",
+        "xml": "<call module='VNF-API' rpc='vnf-topology-assign-vfmodule' mode='sync' >",
+        "comments": "",
+        "outputs": 1,
+        "x": 594.5,
+        "y": 400,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "730a4402.7a9fec",
+        "type": "set",
+        "name": "Set final indicator to Y",
+        "xml": "<set>\n<parameter name=\"ack-final\" value=\"Y\"/>",
+        "comments": "",
+        "x": 558.5,
+        "y": 680,
+        "z": "f6aa4435.0ea2a8",
+        "wires": []
+    },
+    {
+        "id": "cc1eb17.357f85",
+        "type": "switchNode",
+        "name": "switch ...SERVICE-DATA vnf-networks[]",
+        "xml": "<switch test=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 612.5,
+        "y": 440,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "e9379e9d.985f7"
+            ]
+        ]
+    },
+    {
+        "id": "e9379e9d.985f7",
+        "type": "outcome",
+        "name": "NULL",
+        "xml": "<outcome value=''>",
+        "outputs": 1,
+        "x": 850,
+        "y": 440,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "be746643.61ac78"
+            ]
+        ]
+    },
+    {
+        "id": "be746643.61ac78",
+        "type": "set",
+        "name": "set SERVICE-DATA vnf-networks[] = 0",
+        "xml": "<set>\n<parameter name='service-data.vnf-topology-information.vnf-assignments.vnf-networks_length' value='0' />\n",
+        "comments": "",
+        "x": 1088,
+        "y": 440,
+        "z": "f6aa4435.0ea2a8",
+        "wires": []
+    },
+    {
+        "id": "ec4234b5.37aa58",
+        "type": "save",
+        "name": "GET AnAI - vf-module",
+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module\" \n\t\tkey=\"vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t\t\tand generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.vfmodule\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 557.5,
+        "y": 340,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "1080e2bd.3bc8dd",
+                "573755d9.256a8c"
+            ]
+        ]
+    },
+    {
+        "id": "1080e2bd.3bc8dd",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 790,
+        "y": 320,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "5f7a62b3.c0435c"
+            ]
+        ]
+    },
+    {
+        "id": "573755d9.256a8c",
+        "type": "not-found",
+        "name": "not-found",
+        "xml": "<outcome value='not-found'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 798.5,
+        "y": 360,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "b3b13d2d.da245"
+            ]
+        ]
+    },
+    {
+        "id": "5f7a62b3.c0435c",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Encountered error while querying vf-module from AnAI with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`\"/>",
+        "comments": "",
+        "x": 988.5,
+        "y": 320,
+        "z": "f6aa4435.0ea2a8",
+        "wires": []
+    },
+    {
+        "id": "b3b13d2d.da245",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'vf-module not found in AnAI with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`\"/>",
+        "comments": "",
+        "x": 988.5,
+        "y": 360,
+        "z": "f6aa4435.0ea2a8",
+        "wires": []
+    },
+    {
+        "id": "e1123f17.441d3",
+        "type": "switchNode",
+        "name": "switch:vnf-id | config == input",
+        "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 579.8333129882812,
+        "y": 280.00001335144043,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "3a4715d4.547d2a"
+            ]
+        ]
+    },
+    {
+        "id": "2730cc09.74d084",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value='vnf-id is already present in config-tree'/>",
+        "comments": "",
+        "x": 988.5,
+        "y": 280,
+        "z": "f6aa4435.0ea2a8",
+        "wires": []
+    },
+    {
+        "id": "3a4715d4.547d2a",
+        "type": "outcomeTrue",
+        "name": "true",
+        "xml": "<outcome value='true'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 790,
+        "y": 280,
+        "z": "f6aa4435.0ea2a8",
+        "wires": [
+            [
+                "2730cc09.74d084"
+            ]
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-assign-vfmodule.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-assign-vfmodule.json
new file mode 100644
index 0000000..31349cf
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-assign-vfmodule.json
@@ -0,0 +1 @@
+[{"id":"a3f3d39b.f78d9","type":"dgstart","name":"DGSTART","outputs":1,"x":221.66665649414062,"y":78.59521961212158,"z":"c6a6763c.4a8938","wires":[["7618c6cb.6da728"]]},{"id":"7618c6cb.6da728","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":427.4523696899414,"y":78.33333206176758,"z":"c6a6763c.4a8938","wires":[["745c4044.c7543"]]},{"id":"745c4044.c7543","type":"method","name":"method vnf-topology-automated-assign-vfmodule","xml":"<method rpc='vnf-topology-automated-assign-vfmodule' mode='sync'>\n","comments":"","outputs":1,"x":343.95240020751953,"y":137.34521961212158,"z":"c6a6763c.4a8938","wires":[["d060a59c.64f7d8"]]},{"id":"658e22f0.e8f0ac","type":"comment","name":"vf-module-topology-operation-assign","info":"","comments":"","x":941.9877777099609,"y":114.07091808319092,"z":"c6a6763c.4a8938","wires":[]},{"id":"89188f30.f0547","type":"switchNode","name":"switch request-action","xml":"<switch test='`$vnf-topology-operation-input.request-information.request-action`'>\n","comments":"","outputs":1,"x":705.1904525756836,"y":196.02378845214844,"z":"c6a6763c.4a8938","wires":[["d088b2f2.8739a","f45b77de.439698"]]},{"id":"d088b2f2.8739a","type":"outcome","name":"VNFActivateRequest","xml":"<outcome value='VNFActivateRequest'>\n","comments":"","outputs":1,"x":967.2380676269531,"y":173.16667461395264,"z":"c6a6763c.4a8938","wires":[["b8e0d10d.97964"]]},{"id":"f45b77de.439698","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":923.904712677002,"y":218.54766368865967,"z":"c6a6763c.4a8938","wires":[["5cacb441.fde0cc"]]},{"id":"b8e0d10d.97964","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1157.0952320098877,"y":173.16670608520508,"z":"c6a6763c.4a8938","wires":[[]]},{"id":"5cacb441.fde0cc","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=\"If svc-action is 'assign' then request-action must be 'VNFActivateRequest'\" />\n","comments":"","x":1175.9047203063965,"y":218.88097620010376,"z":"c6a6763c.4a8938","wires":[]},{"id":"8f60b4ac.2c4328","type":"get-resource","name":"get-resource VF_MODULE_MODEL","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODULE_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-request-information.model-customization-uuid'\n  pfx='db.vf-module-model'>\n\n","comments":"","outputs":1,"x":752.5237197875977,"y":287.16673851013184,"z":"c6a6763c.4a8938","wires":[["13d1cb9d.f21ef4","890a29b.28c78d8"]]},{"id":"d9dd7137.f2e6f","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=\"`'No model found for VF module customization UUID ' + $vnf-topology-operation-input.vnf-request-information.model-customization-uuid`\" />\n","comments":"","x":1193.9521408081055,"y":311.59521102905273,"z":"c6a6763c.4a8938","wires":[]},{"id":"13d1cb9d.f21ef4","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1018.3094100952148,"y":267.54756927490234,"z":"c6a6763c.4a8938","wires":[["88d4d30f.afb0f"]]},{"id":"890a29b.28c78d8","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1026.8808403015137,"y":311.8332824707031,"z":"c6a6763c.4a8938","wires":[["d9dd7137.f2e6f"]]},{"id":"88d4d30f.afb0f","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 reading VF_MODULE_MODEL table\" />\n","comments":"","x":1193.309341430664,"y":266.6904697418213,"z":"c6a6763c.4a8938","wires":[]},{"id":"d060a59c.64f7d8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":281.66663360595703,"y":2689.5951585769653,"z":"c6a6763c.4a8938","wires":[["89188f30.f0547","8f60b4ac.2c4328","311746e4.0a155a","60df562d.be7488","bc2c72de.8ea2e","af03ef4d.70e9e","b00f7262.1c094","74a8a4cc.6a37bc","50a525a1.ba695c","1c0d1734.2252b9","d4c6f015.e3386","b1e903e3.a9656","f95ebeb7.10204","946d1e34.4231","bf9d4319.1481e"]]},{"id":"92ef08a2.2df308","type":"set","name":"set aic-clli","xml":"<set>\n<parameter name='tmp.aic-clli' value='`$aai-uid-split[$aai-uid-split_length - 1]`' />\n","comments":"","x":1596.0950164794922,"y":572.0712900161743,"z":"c6a6763c.4a8938","wires":[]},{"id":"311746e4.0a155a","type":"get-resource","name":"get-resource cloud region","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"cloud-region\" \n\t\tkey=\"cloud-region.cloud-owner = 'CloudOwner' AND \n\t\t     cloud-region.cloud-region-id = $vnf-topology-operation-input.vnf-request-information.aic-cloud-region\"\n        pfx='aai.cloud-region' local-only='false' >\n\n","comments":"","outputs":1,"x":719.6428527832031,"y":389.52400493621826,"z":"c6a6763c.4a8938","wires":[["c986ee76.ee16","d962828a.b478c"]]},{"id":"d962828a.b478c","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":933.889045715332,"y":407.67486095428467,"z":"c6a6763c.4a8938","wires":[["e920bb81.b40cb8"]]},{"id":"e920bb81.b40cb8","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 retrieving cloud region from AAI\" />\n","comments":"","x":1108.8890190124512,"y":407.6748971939087,"z":"c6a6763c.4a8938","wires":[]},{"id":"c986ee76.ee16","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":942.8176422119141,"y":365.9605941772461,"z":"c6a6763c.4a8938","wires":[["3f933d3b.567172"]]},{"id":"3f933d3b.567172","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=\"`'aic-cloud-region,'+ $vnf-topology-operation-input.vnf-request-information.aic-cloud-region + ' not found in AAI'`\" />\n","comments":"","x":1109.166919708252,"y":365.2661714553833,"z":"c6a6763c.4a8938","wires":[]},{"id":"60df562d.be7488","type":"get-resource","name":"get-resource VF_MODULE_TO_VFC_MAPPING","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VF_MODULE_TO_VFC_MAPPING WHERE vf_module_customization_uuid = $vnf-topology-operation-input.vnf-request-information.model-customization-uuid'\n  pfx='db.vf-module-to-vfc-mapping[]'>\n\n","comments":"","outputs":1,"x":799.4524383544922,"y":844.142825126648,"z":"c6a6763c.4a8938","wires":[["d338b11f.a37bd","2618c557.dded6a"]]},{"id":"d338b11f.a37bd","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1083.8095703125,"y":826.2379236221313,"z":"c6a6763c.4a8938","wires":[["2f952fcf.2a5da"]]},{"id":"2618c557.dded6a","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1092.3810005187988,"y":870.5236368179321,"z":"c6a6763c.4a8938","wires":[["7b10c7c8.b3c7e8"]]},{"id":"2f952fcf.2a5da","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 reading VF_MODULE_TO_VFC_MAPPING table\" />\n","comments":"","x":1258.8095016479492,"y":825.3808240890503,"z":"c6a6763c.4a8938","wires":[]},{"id":"bc2c72de.8ea2e","type":"for","name":"for each vm-type","xml":"<for index='vm-type-index' start='0' end='`$db.vf-module-to-vfc-mapping_length`' >\n","comments":"","outputs":1,"x":668.571418762207,"y":1739.1430168151855,"z":"c6a6763c.4a8938","wires":[["ccbb8f9.a6c077"]]},{"id":"ccbb8f9.a6c077","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":747.6190719604492,"y":1804.428677558899,"z":"c6a6763c.4a8938","wires":[["33dc2f21.83919","52d8daec.769304","fbab1088.c3bf6","d8725c39.89566","76c54fa9.38022","8c428202.a4584","96d35d.16f99ca","7f727408.3c054c","3112f18c.d7febe","317a074d.bd4138"]]},{"id":"af03ef4d.70e9e","type":"set","name":"set vnf-vms_length","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms_length'\n  value='`$db.vf-module-to-vfc-mapping_length`' />\n","comments":"","x":705.9999618530273,"y":910.0477952957153,"z":"c6a6763c.4a8938","wires":[]},{"id":"33dc2f21.83919","type":"for","name":"for each network-role","xml":"<for index='network-role-index' start='0' end='`$db.vfc-to-network-role-mapping_length`' >\n","comments":"","outputs":1,"x":1058.0478515625,"y":1587.4918432235718,"z":"c6a6763c.4a8938","wires":[["57fcf630.bf5d88"]]},{"id":"b00f7262.1c094","type":"for","name":"for each cloud-region relationship","xml":"<for index='idx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >\n","comments":"","outputs":1,"x":746.1823654174805,"y":571.6021165847778,"z":"c6a6763c.4a8938","wires":[["17ad304.585b5d"]]},{"id":"17ad304.585b5d","type":"switchNode","name":"switch related-to","xml":"<switch test='`$aai.cloud-region.relationship-list.relationship[$idx].related-to`'>\n","comments":"","outputs":1,"x":1012.8609085083008,"y":571.3520460128784,"z":"c6a6763c.4a8938","wires":[["aa25cb53.f74cc8"]]},{"id":"aa25cb53.f74cc8","type":"outcome","name":"complex","xml":"<outcome value='complex'>\n","comments":"","outputs":1,"x":1209.3252296447754,"y":571.7448682785034,"z":"c6a6763c.4a8938","wires":[["744bf544.60ac9c"]]},{"id":"3fb04830.758938","type":"execute","name":"split related-link","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>\n   <parameter name='ctx_memory_result_key' value='aai-uid-split' />\n   <parameter name='original_string' value='`$aai.cloud-region.relationship-list.relationship[$idx].related-link`' />\n   <parameter name='regex' value='/' />\n","comments":"","outputs":1,"x":1613.4917297363281,"y":524.244912147522,"z":"c6a6763c.4a8938","wires":[[]]},{"id":"744bf544.60ac9c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1400.0870895385742,"y":571.8402318954468,"z":"c6a6763c.4a8938","wires":[["3fb04830.758938","b8173b08.432cc8","92ef08a2.2df308"]]},{"id":"b8173b08.432cc8","type":"break","name":"break","xml":"<break>\n","comments":"","x":1590.0154724121094,"y":621.9592657089233,"z":"c6a6763c.4a8938","wires":[]},{"id":"52d8daec.769304","type":"set","name":"set vm-networks_length","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks_length' \n  value='`$db.vfc-to-network-role-mapping_length`' />\n","comments":"","x":1068.1903991699219,"y":1417.9677104949951,"z":"c6a6763c.4a8938","wires":[]},{"id":"74a8a4cc.6a37bc","type":"for","name":"for each vm-type","xml":"<for index='vm-type-index' start='0' end='`$tmp.vnf-topology.vnf-assignments.vnf-vms_length`' >\n","comments":"","outputs":1,"x":637.6190872192383,"y":2421.6335849761963,"z":"c6a6763c.4a8938","wires":[["1a33d1f3.8f6e4e"]]},{"id":"1a33d1f3.8f6e4e","type":"for","name":"for each network-role in vm-networks","xml":"<for index='network-role-index' start='0' end='`$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks_length`' >\n","comments":"","outputs":1,"x":911.1903839111328,"y":2421.6572647094727,"z":"c6a6763c.4a8938","wires":[["ba72b14b.2156"]]},{"id":"ba72b14b.2156","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1171.059455871582,"y":2421.466869354248,"z":"c6a6763c.4a8938","wires":[["d09a49ef.7c1908","98a1c0da.3df17","3b82b435.6743cc","e76ba29b.dbd2f","bca0b7c7.7693f8"]]},{"id":"50a525a1.ba695c","type":"set","name":"copy vnf-topology data","xml":"<set>\n<parameter name='service-data.vnf-topology-information.' value='tmp.vnf-topology.' />\n","comments":"","x":636.6309814453125,"y":3725.919508934021,"z":"c6a6763c.4a8938","wires":[]},{"id":"1c0d1734.2252b9","type":"execute","name":"printContext","xml":"<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/bgb-vnfapi-vfmodule.log' />\n","comments":"","outputs":1,"x":603.2619247436523,"y":3789.8836212158203,"z":"c6a6763c.4a8938","wires":[[]]},{"id":"d4c6f015.e3386","type":"for","name":"for each vm-type","xml":"<for index='vm-type-index' start='0' end='`$tmp.vnf-topology.vnf-assignments.vnf-vms_length`' >\n","comments":"","outputs":1,"x":618.4761657714844,"y":3657.035722732544,"z":"c6a6763c.4a8938","wires":[["27442cf3.32c4a4"]]},{"id":"27442cf3.32c4a4","type":"for","name":"for each vm","xml":"<for index='vm-index' start='0' end='`$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-count`' >\n","comments":"","outputs":1,"x":814.4761962890625,"y":3657.368730545044,"z":"c6a6763c.4a8938","wires":[["78a03f6e.8c578"]]},{"id":"537a79f4.c23ef8","type":"save","name":"save VIPR_CONFIGURATION","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" resource=\"SQL\"\n\tkey=\"INSERT INTO VIPR_CONFIGURATION (vnf_id, \n\t\tvnf_name, \n\t\tecomp_service_instance_id, \n\t\tvm_name, \n\t\tcloud_region_id, \n\t\tcloud_owner) \n\tVALUES ( $service-data.vnf-id , \n\t\t$vnf-topology-operation-input.vnf-request-information.vnf-name , \n\t\t$vnf-topology-operation-input.service-information.service-instance-id , \n\t\t$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index]-vm-name , \n\t\t$vnf-topology-operation.vnf-request-information.aic-cloud-region , \n\t\t'CloudOwner')\" >","comments":"","outputs":1,"x":1222.1428985595703,"y":3680.0363807678223,"z":"c6a6763c.4a8938","wires":[["8ceacfdf.89fec"]]},{"id":"f06def73.72458","type":"comment","name":"Not a failure","info":"","comments":"","x":1742.1427993774414,"y":3680.036385536194,"z":"c6a6763c.4a8938","wires":[]},{"id":"8ceacfdf.89fec","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1432.1428833007812,"y":3680.03653049469,"z":"c6a6763c.4a8938","wires":[["b7da4a1c.00f698"]]},{"id":"b7da4a1c.00f698","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"VNF-API.vnf-topology-automated-assign-vfmodule:REQID\"/>\n<parameter name=\"field3\" value=\"`$vnf-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Failed to insert VIPR_CONFIGURATION record\"/>\n","comments":"","outputs":1,"x":1575.4763259887695,"y":3680.036368370056,"z":"c6a6763c.4a8938","wires":[[]]},{"id":"2d06b410.7028dc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1605.476448059082,"y":3631.368082046509,"z":"c6a6763c.4a8938","wires":[["db145896.d33078"]]},{"id":"3036cc89.607c34","type":"comment","name":"Not a failure","info":"","comments":"","x":2032.8095016479492,"y":3629.701904296875,"z":"c6a6763c.4a8938","wires":[]},{"id":"db145896.d33078","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\">\n<parameter name=\"logger\" value=\"message-log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"VNF-API.vnf-topology-automated-assign-vfmodule:REQID\"/>\n<parameter name=\"field3\" value=\"`$vnf-topology-operation-input.sdnc-request-header.svc-request-id`\"/>\n<parameter name=\"field4\" value=\"Failed to insert VIPR_CONFIGURATION record\"/>\n","comments":"","outputs":1,"x":1855.4763832092285,"y":3631.368715286255,"z":"c6a6763c.4a8938","wires":[[]]},{"id":"78a03f6e.8c578","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":982.8095893859863,"y":3656.3685750961304,"z":"c6a6763c.4a8938","wires":[["1bd6f906.202927","537a79f4.c23ef8"]]},{"id":"1bd6f906.202927","type":"delete","name":"delete any pre-existing records in VIPR_CONFIGURATION","xml":"<delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='DELETE from VIPR_CONFIGURATION WHERE vnf_id = $service-data.vnf-id\n     AND ecomp_service_instance_id = $vnf-topology-operation-input.service-information.service-instance-id\n     AND vm_name = $tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vm-name' >","comments":"","outputs":1,"x":1312.1429138183594,"y":3631.702714920044,"z":"c6a6763c.4a8938","wires":[["2d06b410.7028dc"]]},{"id":"7b10c7c8.b3c7e8","type":"set","name":"set vf-module-to-vfc-mapping length to 0","xml":"<set>\n<parameter name='db.vf-module-to-vfc-mapping_length' value='0' />\n","comments":"","x":1345.5952911376953,"y":870.1422996520996,"z":"c6a6763c.4a8938","wires":[]},{"id":"f95ebeb7.10204","type":"set","name":"set: service-data.vnf-id","xml":"<set>\n\t<parameter name=\"service-data.vnf-id\" value=\"`$vnf-topology-operation-input.vnf-request-information.vnf-id`\"/>\n\t<parameter name=\"service-data.service-information.service-instance-id\" value=\"`$vnf-topology-operation-input.service-information.service-instance-id`\"/>\n\t<parameter name=\"service-data.service-information.service-type\" value=\"`$vnf-topology-operation-input.service-information.service-type`\"/>\n","comments":"","x":711.4881820678711,"y":453.2098321914673,"z":"c6a6763c.4a8938","wires":[]},{"id":"57fcf630.bf5d88","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1266.1906051635742,"y":1586.7732563018799,"z":"c6a6763c.4a8938","wires":[["bc92bded.ca455","fe584b6c.0233d8","3f0ffec2.1a9d32","d46dd161.dffe2","3a46ead4.8020a6","6e76e719.77b5f8"]]},{"id":"3f0ffec2.1a9d32","type":"get-resource","name":"get-resource l3-network","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"l3-networks\" \n\t\tkey=\"l3-network.network-role = $db.vfc-to-network-role-mapping[$network-role-index].network-role\"\n        pfx='aai.l3-network' local-only='false'\n>\n<!--\n\tAND l3-network.orchestration-status = 'active'\n\tAND cloud-region.cloud-region-id = $vnf-topology-operation-input.vnf-request-input.aic-cloud-region\n\tAND depth = 'ALL'\"\n-->\n","comments":"","outputs":1,"x":1517.7618255615234,"y":1505.2498626708984,"z":"c6a6763c.4a8938","wires":[["c1d211cb.4fae5","8d13a3a8.b532e"]]},{"id":"8d13a3a8.b532e","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1723.8095397949219,"y":1527.3927021026611,"z":"c6a6763c.4a8938","wires":[["47da81c8.ba4d8"]]},{"id":"47da81c8.ba4d8","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 retrieving l3-network from AAI\" />\n","comments":"","x":1898.809513092041,"y":1527.3927383422852,"z":"c6a6763c.4a8938","wires":[]},{"id":"c1d211cb.4fae5","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1732.738136291504,"y":1485.6784353256226,"z":"c6a6763c.4a8938","wires":[["8e067fe5.5fcdd"]]},{"id":"8e067fe5.5fcdd","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=\"`'No active l3-network found in AAI with cloud_region_id '\n          + $vnf-topology-operation-input.vnf-request-information.aic-cloud-region + ' and network_role '\n          + $db.vf-network-role-mapping[$network-role-index].network-role`\" />\n","comments":"","x":1899.0874137878418,"y":1484.9840126037598,"z":"c6a6763c.4a8938","wires":[]},{"id":"bc92bded.ca455","type":"set","name":"set tmp vnf-networks data","xml":"<set>\n<parameter name=\"tmp.vnf-topology.vnf-assignments.vnf-networks[$network-index].network-name\" \n\tvalue=\"`$aai.l3-network.l3-network[$network-role-index].network-name`\" />\n<parameter name=\"tmp.vnf-topology.vnf-assignments.vnf-networks[$network-index].network-id\" \n\tvalue=\"`$aai.l3-network.l3-network[$network-role-index].network-id`\" />\n<parameter name=\"tmp.vnf-topology.vnf-assignments.vnf-networks[$network-index].neutron-id\" \n\tvalue=\"`$aai.l3-network.l3-network[$network-role-index].neutron-network-id`\" />\n<parameter name=\"tmp.vnf-topology.vnf-assignments.vnf-networks[$network-index].contrail-network-fqdn\" \n\tvalue=\"`$aai.l3-network.l3-network[$network-role-index].contrail-network-fqdn`\" />\n<parameter name=\"tmp.vnf-topology.vnf-assignments.vnf-networks[$network-index].network-role\" \n\tvalue=\"`$db.vfc-to-network-role-mapping[$network-role-index].network-role`\" />\n","comments":"","x":1515.4761657714844,"y":1934.3929119110107,"z":"c6a6763c.4a8938","wires":[]},{"id":"fe584b6c.0233d8","type":"set","name":"network-index++","xml":"<set>\n<parameter name='network-index' value='`$network-index + 1`' />\n","comments":"","x":1487.9166984558105,"y":1982.785807609558,"z":"c6a6763c.4a8938","wires":[]},{"id":"82c167e.cb8f898","type":"for","name":"for each l3-network","xml":"<for index='db-network-index' start='0' end='`$aai.l3-network.l3-network_length`' >\n","comments":"","outputs":1,"x":1666.500144958496,"y":1664.9640560150146,"z":"c6a6763c.4a8938","wires":[["52452f43.5046b"]]},{"id":"52452f43.5046b","type":"switchNode","name":"switch orchestration-status","xml":"<switch test='`$aai.l3-network.l3-network[$db-network-index].orchestration-status`'>\n","comments":"","outputs":1,"x":1895.071346282959,"y":1664.5354833602905,"z":"c6a6763c.4a8938","wires":[["948e53a0.a1a4e","bb5bb136.9a8cb","67f6e44a.8c755c"]]},{"id":"948e53a0.a1a4e","type":"outcome","name":"Pending Delete","xml":"<outcome value='Pending Delete'>\n","comments":"","outputs":1,"x":2129.238311767578,"y":1663.952260017395,"z":"c6a6763c.4a8938","wires":[["6e1e86e4.fc0878"]]},{"id":"bb5bb136.9a8cb","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":2102.9287872314453,"y":1706.868727684021,"z":"c6a6763c.4a8938","wires":[["3d98f5bc.ae345a"]]},{"id":"1b5cfc0a.780784","type":"switchNode","name":"switch related-to","xml":"<switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].related-to`'>\n","comments":"","outputs":1,"x":2468.643138885498,"y":1706.440068244934,"z":"c6a6763c.4a8938","wires":[["18608e13.047c82"]]},{"id":"3d98f5bc.ae345a","type":"for","name":"for each relationship","xml":"<for silentFailure='true' index='db-rel-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship_length`' >\n","comments":"","outputs":1,"x":2272.928699493408,"y":1706.440104484558,"z":"c6a6763c.4a8938","wires":[["1b5cfc0a.780784"]]},{"id":"18608e13.047c82","type":"outcome","name":"cloud-region","xml":"<outcome value='cloud-region'>\n","comments":"","outputs":1,"x":2642.928779602051,"y":1706.0115146636963,"z":"c6a6763c.4a8938","wires":[["1a0b207b.b43a1"]]},{"id":"1a0b207b.b43a1","type":"for","name":"for each relationship data","xml":"<for silentFailure='true' index='db-data-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data_length`' >\n","comments":"","outputs":1,"x":2840.0714797973633,"y":1706.4399824142456,"z":"c6a6763c.4a8938","wires":[["ad33c2ce.a476"]]},{"id":"ad33c2ce.a476","type":"switchNode","name":"switch relationship-key","xml":"<switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-key`'>\n","comments":"","outputs":1,"x":3071.5000801086426,"y":1706.011357307434,"z":"c6a6763c.4a8938","wires":[["99e02cfa.c00ff"]]},{"id":"99e02cfa.c00ff","type":"outcome","name":"cloud-region.cloud-region-id","xml":"<outcome value='cloud-region.cloud-region-id'>\n","comments":"","outputs":1,"x":3312.928611755371,"y":1706.011462211609,"z":"c6a6763c.4a8938","wires":[["72f776c7.f8acb8"]]},{"id":"72f776c7.f8acb8","type":"switchNode","name":"switch relationship-value == cloud-region-id","xml":"<switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-value == $vnf-topology-operation-input.vnf-request-information.aic-cloud-region`'>\n","comments":"","outputs":1,"x":3617.214530944824,"y":1705.8685178756714,"z":"c6a6763c.4a8938","wires":[["fb503bba.563f58"]]},{"id":"fb503bba.563f58","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":3857.2145614624023,"y":1706.0114631652832,"z":"c6a6763c.4a8938","wires":[["f34debda.3059a8"]]},{"id":"d46dd161.dffe2","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1464.7142944335938,"y":1733.8212022781372,"z":"c6a6763c.4a8938","wires":[["82c167e.cb8f898","7dc3e952.f9aa48"]]},{"id":"7dc3e952.f9aa48","type":"returnSuccess","name":"CATCH BREAK","xml":"<return status='success'>\n\n","comments":"","x":1656.047737121582,"y":1807.15438747406,"z":"c6a6763c.4a8938","wires":[]},{"id":"563020a1.8c4ca","type":"returnFailure","name":"BREAK","xml":"<return status='failure'>\n","comments":"","x":4166.0475425720215,"y":1723.8208665847778,"z":"c6a6763c.4a8938","wires":[]},{"id":"3a46ead4.8020a6","type":"set","name":"set l3-network-id = -1","xml":"<set>\n<parameter name='l3-network-id' value='-1' />\n","comments":"","x":1509.047592163086,"y":1567.1545162200928,"z":"c6a6763c.4a8938","wires":[]},{"id":"f34debda.3059a8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":4003.047538757324,"y":1705.4875717163086,"z":"c6a6763c.4a8938","wires":[["d88a343b.538ab8","563020a1.8c4ca"]]},{"id":"d88a343b.538ab8","type":"set","name":"set l3-network-id","xml":"<set>\n<parameter name='l3-network-id' value='`$aai.l3-network.l3-network[$db-network-index].network-id`' />","comments":"","x":4192.714241027832,"y":1682.1541051864624,"z":"c6a6763c.4a8938","wires":[]},{"id":"6e76e719.77b5f8","type":"switchNode","name":"switch l3-network-id","xml":"<switch test='`$l3-network-id`'>\n","comments":"","outputs":1,"x":1497.7142486572266,"y":1886.8216562271118,"z":"c6a6763c.4a8938","wires":[["cc4e6c44.94099"]]},{"id":"cc4e6c44.94099","type":"outcome","name":"-1","xml":"<outcome value='-1'>\n","comments":"","outputs":1,"x":1667.714199066162,"y":1886.8214120864868,"z":"c6a6763c.4a8938","wires":[["aaf27a6f.92dd38"]]},{"id":"aaf27a6f.92dd38","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=\"`'Unable to find l3-network in AAI for network role ' + $db.vf-network-role-mapping[$role-index].network-role`\" />\n","comments":"","x":1816.0475616455078,"y":1886.8215494155884,"z":"c6a6763c.4a8938","wires":[]},{"id":"6e1e86e4.fc0878","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2282.452423095703,"y":1663.729115486145,"z":"c6a6763c.4a8938","wires":[[]]},{"id":"67f6e44a.8c755c","type":"outcome","name":"Pending Create","xml":"<outcome value='Pending Create'>\n","comments":"","outputs":1,"x":2131.6189918518066,"y":1622.645486831665,"z":"c6a6763c.4a8938","wires":[["1d748942.552097"]]},{"id":"1d748942.552097","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":2284.8330841064453,"y":1622.4223642349243,"z":"c6a6763c.4a8938","wires":[[]]},{"id":"fbab1088.c3bf6","type":"set","name":"set network-index = 0","xml":"<set>\n<parameter name='network-index' value='0' />\n","comments":"","x":1060.7978820800781,"y":1473.381046295166,"z":"c6a6763c.4a8938","wires":[]},{"id":"47540555.ce149c","type":"comment","name":"NO SUPPORT for network-macs","info":"","comments":"","x":248.52376556396484,"y":1477.5233364105225,"z":"c6a6763c.4a8938","wires":[]},{"id":"dc87a0e1.830c7","type":"comment","name":"NO SUPPORT for floating-ip[] and floating-ip-v6[]","info":"","comments":"","x":298.5237045288086,"y":1507.523419380188,"z":"c6a6763c.4a8938","wires":[]},{"id":"866effdc.31e09","type":"comment","name":"NO SUPPORT for interface-route-prefixes[]","info":"","comments":"","x":280.52376556396484,"y":1538.1900882720947,"z":"c6a6763c.4a8938","wires":[]},{"id":"77294c8e.f5ef34","type":"comment","name":"VNF-ASSIGNMENTS.VNF-NETWORKS[ ]","info":"","comments":"","x":1153.5714416503906,"y":1685.2971000671387,"z":"c6a6763c.4a8938","wires":[]},{"id":"a717d2eb.33e0d","type":"comment","name":"No support of vnf-networks[].subnet-id and subnet-name in 1707","info":"","comments":"","x":1624.5241203308105,"y":2031.9880800247192,"z":"c6a6763c.4a8938","wires":[]},{"id":"6bc6c778.aeb9b8","type":"comment","name":"Find l3-network with matching aic-cloud-region","info":"","comments":"","x":2675.833526611328,"y":1665.0827531814575,"z":"c6a6763c.4a8938","wires":[]},{"id":"d09a49ef.7c1908","type":"switchNode","name":"switch ipv4-ip-version","xml":"<switch test='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>\n","comments":"","outputs":1,"x":1421.7381134033203,"y":2356.749324798584,"z":"c6a6763c.4a8938","wires":[["672a7280.55091c","31643f78.a77a6"]]},{"id":"78ac8019.a7f14","type":"set","name":"set vm-networks-index to -1","xml":"<set>\n<parameter name='vm-networks-index' value='-1' />\n\n","comments":"","x":1831.2617378234863,"y":2314.749429702759,"z":"c6a6763c.4a8938","wires":[]},{"id":"672a7280.55091c","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1598.4046325683594,"y":2314.7494649887085,"z":"c6a6763c.4a8938","wires":[["78ac8019.a7f14"]]},{"id":"31643f78.a77a6","type":"other","name":"ipv4","xml":"<outcome value='ipv4'>\n","comments":"","outputs":1,"x":1603.1665840148926,"y":2409.7016077041626,"z":"c6a6763c.4a8938","wires":[["5853f915.b367d8"]]},{"id":"2cc28b35.b1b3d4","type":"set","name":"set vm-networks-index to 0","xml":"<set>\n<parameter name='vm-networks-index' value='0' />\n","comments":"","x":2001.7378463745117,"y":2362.225468635559,"z":"c6a6763c.4a8938","wires":[]},{"id":"5853f915.b367d8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1764.3570594787598,"y":2409.0350732803345,"z":"c6a6763c.4a8938","wires":[["2cc28b35.b1b3d4","a3fe56e9.bbd588","f65ee3e0.f68a8"]]},{"id":"a3fe56e9.bbd588","type":"set","name":"set vm-networkls[].use-dhcp, ip-count","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].use-dhcp'\n   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].ip-count'\n   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-count`' />","comments":"","x":2034.2142486572266,"y":2409.1304264068604,"z":"c6a6763c.4a8938","wires":[]},{"id":"98a1c0da.3df17","type":"switchNode","name":"switch ipv6-ip-version","xml":"<switch test='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>\n","comments":"","outputs":1,"x":1418.880973815918,"y":2556.9874448776245,"z":"c6a6763c.4a8938","wires":[["3c446888.3e39b8","eb49d457.dd4f28"]]},{"id":"3c446888.3e39b8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1597.6904678344727,"y":2527.225256919861,"z":"c6a6763c.4a8938","wires":[["e181069f.a9af18"]]},{"id":"eb49d457.dd4f28","type":"other","name":"ipv6","xml":"<outcome value='ipv6'>\n","comments":"","outputs":1,"x":1599.1190223693848,"y":2591.5108137130737,"z":"c6a6763c.4a8938","wires":[["5fb2c0ca.155f3"]]},{"id":"ea162272.2b02b","type":"set","name":"increment vm-networks-index","xml":"<set>\n<parameter name='vm-networks-index' value='`$network-information-index + 1`' />\n","comments":"","x":2004.8331146240234,"y":2543.034843444824,"z":"c6a6763c.4a8938","wires":[]},{"id":"5fb2c0ca.155f3","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1754.3571815490723,"y":2590.5585527420044,"z":"c6a6763c.4a8938","wires":[["ea162272.2b02b","aaf6159f.3f4398","e09776e2.09fce8"]]},{"id":"e181069f.a9af18","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1740.3570976257324,"y":2526.5588750839233,"z":"c6a6763c.4a8938","wires":[[]]},{"id":"db2dfaa0.2e4a18","type":"outcome","name":"-1","xml":"<outcome value='-1'>","comments":"","outputs":1,"x":1641.0713024139404,"y":2779.3679761886597,"z":"c6a6763c.4a8938","wires":[["a57ad8d4.649d58"]]},{"id":"9a4fb538.0f0488","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1640.8332653045654,"y":2825.3202905654907,"z":"c6a6763c.4a8938","wires":[["fc11d026.29d27"]]},{"id":"a57ad8d4.649d58","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1777.7380180358887,"y":2779.701636314392,"z":"c6a6763c.4a8938","wires":[[]]},{"id":"fc11d026.29d27","type":"set","name":"increment vm-networks-index","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks_length'\n   value='`$vm-networks-index + 1`' />\n","comments":"","x":1848.4046325683594,"y":2825.701428413391,"z":"c6a6763c.4a8938","wires":[]},{"id":"aaf6159f.3f4398","type":"set","name":"set vm-networks[].use-dhcp, ip-count","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].use-dhcp'\n   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].ip-count'\n   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-count`' />","comments":"","x":2029.8809967041016,"y":2590.233787536621,"z":"c6a6763c.4a8938","wires":[]},{"id":"4fd57938.fd6288","type":"switchNode","name":"switch use-dhcp","xml":"<switch test='`$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].use-dhcp`'>\n","comments":"","outputs":1,"x":1145.7619895935059,"y":2980.401258468628,"z":"c6a6763c.4a8938","wires":[["f5b2b31d.2316a"]]},{"id":"f5b2b31d.2316a","type":"outcome","name":"N","xml":"<outcome value='N'>\n","comments":"","outputs":1,"x":1327.7619018554688,"y":2979.972861289978,"z":"c6a6763c.4a8938","wires":[["d199b2c.f491e5"]]},{"id":"e57a3f7a.8c001","type":"execute","name":"call EIPAM assignIPAddress","xml":"<execute plugin=\"com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin\" method=\"assignIPAddress\">","comments":"","outputs":1,"x":2089.4402961730957,"y":3168.976450443268,"z":"c6a6763c.4a8938","wires":[["55962543.83bbfc"]]},{"id":"55962543.83bbfc","type":"failure","name":"failure","xml":"<outcome value='failure'>","outputs":1,"x":2304.8213539123535,"y":3168.7030835151672,"z":"c6a6763c.4a8938","wires":[["ce019ac0.7cad08"]]},{"id":"d05f74bb.e28858","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=\"An error occured while obtaining new address blocks from EIPAM.\" />\n","comments":"","x":2639.9998893737793,"y":3213.3460116386414,"z":"c6a6763c.4a8938","wires":[]},{"id":"19d92b6.c89dcd5","type":"comment","name":"Need VF_MODULE_MODEL availability_zone_count and ecomp_generated_vm_assignments","info":"","comments":"","x":525.5951919555664,"y":237.46378231048584,"z":"c6a6763c.4a8938","wires":[]},{"id":"31be1c0b.e4a514","type":"for","name":"for each cloud-region availability zone","xml":"<for index='az-index' start='0' end='`$aai.cloud-region.availability-zones.availability-zone_length`' >\n","comments":"","outputs":1,"x":911.3571243286133,"y":736.2734155654907,"z":"c6a6763c.4a8938","wires":[["644e35b7.02498c"]]},{"id":"7d5d3a7e.13dfa4","type":"set","name":"set availability-zone","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.availability-zones[$az-index].availability-zone'\n  value='`$aai.cloud-region.availability-zones.availability-zone[$az-index].availability-zone-name`' />\n","comments":"","x":1369.0238571166992,"y":737.0353193283081,"z":"c6a6763c.4a8938","wires":[]},{"id":"644e35b7.02498c","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1165.023567199707,"y":736.3689994812012,"z":"c6a6763c.4a8938","wires":[["7d5d3a7e.13dfa4"]]},{"id":"811225ec.4649e8","type":"switchNode","name":"switch AAI availability-zone_length","xml":"<switch test='`$aai.cloud-region.availability-zones.availability-zone_length`'>\n","comments":"","outputs":1,"x":901.4521408081055,"y":690.1785621643066,"z":"c6a6763c.4a8938","wires":[["fbe8d942.a860d8"]]},{"id":"fbe8d942.a860d8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1120.0235595703125,"y":689.7499713897705,"z":"c6a6763c.4a8938","wires":[["c01d6a9b.970a38"]]},{"id":"c01d6a9b.970a38","type":"set","name":"set availability-zone_length to 0","xml":"<set>\n<parameter name='aai.cloud-region.availability-zones.availability-zone_length' value='0' />\n","comments":"","x":1357.1665267944336,"y":689.1784152984619,"z":"c6a6763c.4a8938","wires":[]},{"id":"68aa1809.492868","type":"comment","name":"VNF-ASSIGNMENTS.AVAILABILITY-ZONES[ ]","info":"","comments":"","x":315.59522247314453,"y":593.1780614852905,"z":"c6a6763c.4a8938","wires":[]},{"id":"8300a18c.5a56","type":"comment","name":"VNF-ASSIGNMENTS.VNF-NETWORKS[ ]","info":"","comments":"","x":291.3095474243164,"y":761.3210287094116,"z":"c6a6763c.4a8938","wires":[]},{"id":"3a48a7be.8af1b8","type":"comment","name":"VNF-ASSIGNMENTS.VNF-VMS[ ].VM-NETWORKS[ ]","info":"","comments":"","x":1026.881004333496,"y":2339.368064880371,"z":"c6a6763c.4a8938","wires":[]},{"id":"3b82b435.6743cc","type":"set","name":"set vm-networks-index to -1","xml":"<set>\n<parameter name='vm-networks-index' value='-1' />\n\n","comments":"","x":1440.2141647338867,"y":2265.082242012024,"z":"c6a6763c.4a8938","wires":[]},{"id":"e76ba29b.dbd2f","type":"switchNode","name":"switch vm-networks-index","xml":"<switch test='`$vm-networks-index`'>\n","comments":"","outputs":1,"x":1422.7379455566406,"y":2802.7012300491333,"z":"c6a6763c.4a8938","wires":[["db2dfaa0.2e4a18","9a4fb538.0f0488"]]},{"id":"39f5f08d.dbc63","type":"switchNode","name":"switch plans[].address-family","xml":"<switch test='`$eipam-ip-block.plans[$plans-index].address-family`'>\n","comments":"","outputs":1,"x":2818.7937927246094,"y":3474.15486907959,"z":"c6a6763c.4a8938","wires":[["51a03202.e47d3c","70d3e88f.a07718"]]},{"id":"51a03202.e47d3c","type":"other","name":"ipv4","xml":"<outcome value='ipv4'>\n","comments":"","outputs":1,"x":3029.924644470215,"y":3448.4643754959106,"z":"c6a6763c.4a8938","wires":[["34d01025.7d17"]]},{"id":"70d3e88f.a07718","type":"other","name":"ipv6","xml":"<outcome value='ipv6'>\n","comments":"","outputs":1,"x":3030.459800720215,"y":3499.2737035751343,"z":"c6a6763c.4a8938","wires":[["c5666e02.07c39"]]},{"id":"34d01025.7d17","type":"set","name":"set vm-networks[].network-ips[].ip-address","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].network-ips[$ip-count-index].ip-address'\n   value='`$eipam-ip-block.plans[$plans-index].requests[$rqst-index].ip-prefix`' />","comments":"","x":3286.6750144958496,"y":3447.964214324951,"z":"c6a6763c.4a8938","wires":[]},{"id":"c5666e02.07c39","type":"set","name":"set vm-networks[].network-ips-v6[].ip-address-ipv6","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].network-ips-v6[$ip-count-index].ip-address-ipv6'\n   value='`$eipam-ip-block.plans[$plans-index].requests[$rqst-index].ip-prefix`' />","comments":"","x":3311.2576599121094,"y":3498.964376449585,"z":"c6a6763c.4a8938","wires":[]},{"id":"840dab74.e88378","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1811.4284591674805,"y":2979.1546588540077,"z":"c6a6763c.4a8938","wires":[["8a748fef.e9c92","464cbd36.e681d4","ec3340b.4bdcfc","e57a3f7a.8c001","1bbc0c5c.b5a494","817518c2.6f35c8","a8d8485a.c01bd8"]]},{"id":"8a748fef.e9c92","type":"set","name":"set eipam aic-cloud-region, client-key, subnetpool-id","xml":"<set>\n<parameter name='tmp.aic-cloud-region'\n   value='`$vnf-topology-operation-input.vnf-request-information.aic-cloud-region`' />\n<parameter name='tmp.client-key'\n   value='`$generate-unique-name-output.generated-name`' />\n<parameter name='tmp.subnetpool-id'\n   value='`$db.vfc-to-network-role-mapping[$network-role-index].extcp-subnetpool-id`' />\n<parameter name='network-topology-operation-input.network-information.network-id' \n\tvalue = 'NOT_APPLICABLE' />\n<parameter name='service-data.service-information.service-type' \n\tvalue = 'NOT_APPLICABLE' />\n","comments":"","x":2163.190719604492,"y":3073.869504928589,"z":"c6a6763c.4a8938","wires":[]},{"id":"ec3340b.4bdcfc","type":"call","name":"call GENERIC-RESOURCE-API:generate-unique-name","xml":"<call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\n","comments":"","outputs":1,"x":2174.404983520508,"y":3026.591185569763,"z":"c6a6763c.4a8938","wires":[["503f07b6.8177c8"]]},{"id":"503f07b6.8177c8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2465.357437133789,"y":3026.4487466812134,"z":"c6a6763c.4a8938","wires":[["a1d0b29.32de85"]]},{"id":"464cbd36.e681d4","type":"set","name":"set variables for generating unique name","xml":"<set>\n<parameter name='generate-unique-name-input.index-table-name' value='EIPAM_CLIENT_KEY_INDEX' />\n<parameter name='generate-unique-name-input.index-table-prefix-column' value='vnf_name_prefix' />\n<parameter name='generate-unique-name-input.name-table-type' value='VNFAPI_CLIENT_KEY' />\n<parameter name='generate-unique-name-input.prefix'\n\tvalue=\"`$vnf-topology-operation-input.vnf-request-information.vnf-name + ':' +\n\t\t$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-type + ':' +\n\t\t$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].network-role + ':'`\" />\n<parameter name='generate-unique-name-input.index-length' value='2' />\n\n<!-- zrdm3mmex57_vlc:vlc:sctp_a:01 -->","comments":"","x":2130.023910522461,"y":2979.019688606262,"z":"c6a6763c.4a8938","wires":[]},{"id":"a1d0b29.32de85","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=\"`$generate-unique-name-output.error-message`\" />\n","comments":"","x":2621.7858657836914,"y":3026.305785179138,"z":"c6a6763c.4a8938","wires":[]},{"id":"d8725c39.89566","type":"get-resource","name":"get-resource VFC_MODEL","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VFC_MODEL WHERE customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'\n  pfx='db.vfc-model'>\n\n","comments":"","outputs":1,"x":1079.9999771118164,"y":1000.7376537322998,"z":"c6a6763c.4a8938","wires":[["783971a3.9819a","282c150e.65d37a"]]},{"id":"b3b0020d.74ce7","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=\"`'No entries found in VFC_MODEL table for customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc-customization-uuid`\" />\n","comments":"","x":1476.4283256530762,"y":1025.1660461425781,"z":"c6a6763c.4a8938","wires":[]},{"id":"783971a3.9819a","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1302.7855949401855,"y":980.1184043884277,"z":"c6a6763c.4a8938","wires":[["b7066615.e7f238"]]},{"id":"282c150e.65d37a","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1310.3570251464844,"y":1025.4041175842285,"z":"c6a6763c.4a8938","wires":[["b3b0020d.74ce7"]]},{"id":"b7066615.e7f238","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 reading VFC_MODEL table\" />\n","comments":"","x":1476.7855262756348,"y":980.2613048553467,"z":"c6a6763c.4a8938","wires":[]},{"id":"8c428202.a4584","type":"set","name":"set vnf-vms[] data","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-type'\n   value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-count'\n   value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />\n\n","comments":"","x":1049.2976531982422,"y":1148.356819152832,"z":"c6a6763c.4a8938","wires":[]},{"id":"96d35d.16f99ca","type":"for","name":"for each vm-count","xml":"<for index='vm-index' start='0' end='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >\n","comments":"","outputs":1,"x":1051.6307220458984,"y":1212.6098346710205,"z":"c6a6763c.4a8938","wires":[["ce61047d.6b6798"]]},{"id":"9b33cb2.cd1cb38","type":"call","name":"call GENERIC-RESOURCE-API:generate-unique-name","xml":"<call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\n","comments":"","outputs":1,"x":1584.0593452453613,"y":1240.2289810180664,"z":"c6a6763c.4a8938","wires":[["e1a23a4b.e7ad28","645ecf24.2a316"]]},{"id":"e1a23a4b.e7ad28","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1879.7736333211265,"y":1213.0862436294556,"z":"c6a6763c.4a8938","wires":[["64093666.6d3df8"]]},{"id":"645ecf24.2a316","type":"success","name":"success","xml":"<outcome value='success'>\n","comments":"","outputs":1,"x":1883.1069831848145,"y":1264.7528867721558,"z":"c6a6763c.4a8938","wires":[["d1a2193e.7c37a8"]]},{"id":"9a519830.138b58","type":"set","name":"set variables for generating unique name","xml":"<set>\n<parameter name='generate-unique-name-input.index-table-name' value='VM_NAME_INDEX' />\n<parameter name='generate-unique-name-input.index-table-prefix-column' value='vm_name_prefix' />\n<parameter name='generate-unique-name-input.name-table-type' value='VNFAPI_VM_INSTANCE' />\n<parameter name='x' value=\"`$vnf-topology-operation-input.vnf-request-information.generic-vnf-name`\" />\n<parameter name='y' value=\"`$db.vfc-model.nfc-naming-code`\" />\n<parameter name='generate-unique-name-input.prefix' value=\"`$vnf-topology-operation-input.vnf-request-information.generic-vnf-name + $db.vfc-model.nfc-naming-code`\" />\n<parameter name='generate-unique-name-input.index-length' value='3' />\n","comments":"","x":1540.726058959961,"y":1188.562307357788,"z":"c6a6763c.4a8938","wires":[]},{"id":"d1a2193e.7c37a8","type":"set","name":"set generated name","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vm-name' value='`$generate-unique-name-output.generated-name`' />\n","comments":"","x":2067.630699157715,"y":1264.228904724121,"z":"c6a6763c.4a8938","wires":[]},{"id":"64093666.6d3df8","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=\"`$generate-unique-name-output.error-message`\" />\n","comments":"","x":2047.630746205648,"y":1212.5147552490234,"z":"c6a6763c.4a8938","wires":[]},{"id":"ce61047d.6b6798","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":1258.0356636047363,"y":1212.2527389526367,"z":"c6a6763c.4a8938","wires":[["9a519830.138b58","9b33cb2.cd1cb38"]]},{"id":"76c54fa9.38022","type":"switchNode","name":"switch ecomp-generated-naming == 'Y'","xml":"<switch test=\"$db.vfc-model.ecomp-generated-naming == 'Y'\">\n","comments":"","outputs":1,"x":1115.9403839111328,"y":1080.4993133544922,"z":"c6a6763c.4a8938","wires":[["53ce2381.2090fc"]]},{"id":"53ce2381.2090fc","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1347.6069946289062,"y":1080.4989442825317,"z":"c6a6763c.4a8938","wires":[["63254101.50f2a"]]},{"id":"63254101.50f2a","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=\"`'ECOMP generated naming is not Y for VFC customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc-customization-uuid`\" />\n","comments":"","x":1494.2737350463867,"y":1079.8323993682861,"z":"c6a6763c.4a8938","wires":[]},{"id":"46a48b56.e456d4","type":"comment","name":"1707 assumes same ipv4-ip-count and ipv6-ip-count the same","info":"","comments":"","x":1197.7381286621094,"y":2927.035418510437,"z":"c6a6763c.4a8938","wires":[]},{"id":"9226d6f7.945608","type":"for","name":"for each network-role in vm-networks","xml":"<for index='network-role-index' start='0' end='`$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks_length`' >\n","comments":"","outputs":1,"x":884.8809127807617,"y":2980.5825901031494,"z":"c6a6763c.4a8938","wires":[["4fd57938.fd6288"]]},{"id":"ec67f8aa.5a4cc8","type":"comment","name":"Set vnf-vms[]","info":"","comments":"","x":842.0832824707031,"y":1064.487636566162,"z":"c6a6763c.4a8938","wires":[]},{"id":"3112f18c.d7febe","type":"set","name":"set vm-names_length","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names_length'\n  value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />\n","comments":"","x":1062.547519683838,"y":1289.1103086471558,"z":"c6a6763c.4a8938","wires":[]},{"id":"b1e903e3.a9656","type":"for","name":"for each vm-type","xml":"<for index='vm-type-index' start='0' end='`$tmp.vnf-topology.vnf-assignments.vnf-vms_length`' >\n","comments":"","outputs":1,"x":620.3094863891602,"y":2980.130418777466,"z":"c6a6763c.4a8938","wires":[["9226d6f7.945608"]]},{"id":"a8d8485a.c01bd8","type":"for","name":"for plans in eipam-ip-block.plans","xml":"<for index='plans-index' start='0' end='`$eipam-ip-block.plans_length`' >\n","comments":"","outputs":1,"x":2100.142868041992,"y":3394.5238189697266,"z":"c6a6763c.4a8938","wires":[["d21eb1a7.a1a34"]]},{"id":"1bbc0c5c.b5a494","type":"switchNode","name":"switch eipam-ip-block.plans_length","xml":"<switch test='`$eipam-ip-block.plans_length`'>\n","comments":"","outputs":1,"x":2109.190517425537,"y":3305.904595851898,"z":"c6a6763c.4a8938","wires":[["c1c303a7.b62b9","69212587.efd27c"]]},{"id":"c1c303a7.b62b9","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2376.404853820801,"y":3281.725981235504,"z":"c6a6763c.4a8938","wires":[["66ca4c22.7c8a04"]]},{"id":"e1bf439.0dee4c","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=\"eipam-ip-block.plans[] is null.\" />\n","comments":"","x":2781.1190605163574,"y":3303.2259278297424,"z":"c6a6763c.4a8938","wires":[]},{"id":"76c321b0.d733e","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=\"`'eipam-ip-block.plans['+ $plans-index +'].requests[] is null.'`\" />\n","comments":"","x":3081.06339263916,"y":3397.162829399109,"z":"c6a6763c.4a8938","wires":[]},{"id":"304e678e.946e88","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":2739.7777404785156,"y":3375.2341175079346,"z":"c6a6763c.4a8938","wires":[["71155dea.d5c054"]]},{"id":"1c8f57b8.7e9de8","type":"switchNode","name":"switch requests_length","xml":"<switch test='`$eipam-ip-block.plans[$plans-index].requests_length`'>\n","comments":"","outputs":1,"x":2559.2063217163086,"y":3394.912588119507,"z":"c6a6763c.4a8938","wires":[["304e678e.946e88","ad0e3173.986be"]]},{"id":"ce019ac0.7cad08","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2466.5833473205566,"y":3168.6545939445496,"z":"c6a6763c.4a8938","wires":[["d05f74bb.e28858","2e3396bb.a9dc1a"]]},{"id":"69212587.efd27c","type":"outcome","name":"0","xml":"<outcome value='0'>","comments":"","outputs":1,"x":2377.476261138916,"y":3328.154568195343,"z":"c6a6763c.4a8938","wires":[["66ca4c22.7c8a04"]]},{"id":"66ca4c22.7c8a04","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2572.0833702087402,"y":3303.4046387672424,"z":"c6a6763c.4a8938","wires":[["e1bf439.0dee4c","2e3396bb.a9dc1a"]]},{"id":"71155dea.d5c054","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2892.5278244018555,"y":3397.6270179748535,"z":"c6a6763c.4a8938","wires":[["76c321b0.d733e","2e3396bb.a9dc1a"]]},{"id":"ad0e3173.986be","type":"outcome","name":"0","xml":"<outcome value='0'>","comments":"","outputs":1,"x":2740.277820587158,"y":3419.1270141601562,"z":"c6a6763c.4a8938","wires":[["71155dea.d5c054"]]},{"id":"53449ad4.088df4","type":"for","name":"for each rqst in requests","xml":"<for index='rqst-index' start='0' end='`$eipam-ip-block.plans[$plans-index].requests_length`' >\n","comments":"","outputs":1,"x":2563.722213745117,"y":3473.987840652466,"z":"c6a6763c.4a8938","wires":[["39f5f08d.dbc63"]]},{"id":"d21eb1a7.a1a34","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":2347.611099243164,"y":3394.87654876709,"z":"c6a6763c.4a8938","wires":[["1c8f57b8.7e9de8","53449ad4.088df4"]]},{"id":"7f727408.3c054c","type":"set","name":"set vnf-networks_length","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-networks_length'\n  value='`$network-index`' />\n","comments":"","x":1062.5597381591797,"y":2092.975839614868,"z":"c6a6763c.4a8938","wires":[]},{"id":"946d1e34.4231","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":672.1666793823242,"y":712.3209276199341,"z":"c6a6763c.4a8938","wires":[["811225ec.4649e8","31be1c0b.e4a514"]]},{"id":"2e3396bb.a9dc1a","type":"call","name":"call: rollback-eipam-ip-assignment","xml":"<call module='VNF-API' rpc='rollback-eipam-ip-assignment' mode='sync' >","comments":"","outputs":1,"x":3079.9761543273926,"y":3168.3689274787903,"z":"c6a6763c.4a8938","wires":[[]]},{"id":"817518c2.6f35c8","type":"call","name":"call: eipam-mobility-ip-assignment","xml":"<call module='VNF-API' rpc='eipam-mobility-ip-assignment' mode='sync' >","comments":"","outputs":1,"x":2107.4361000061035,"y":3120.408854007721,"z":"c6a6763c.4a8938","wires":[[]]},{"id":"bf9d4319.1481e","type":"set","name":"copy input data","xml":"<set>\n\t<parameter name=\"service-data.\" value=\"vnf-topology-operation-input.\" />","comments":"","x":688.7737045288086,"y":513.5952196121216,"z":"c6a6763c.4a8938","wires":[]},{"id":"317a074d.bd4138","type":"get-resource","name":"get-resource VFC_TO_NETWORK_ROLE_MAPPING","xml":"<get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\n  key='SELECT * from VFC_TO_NETWORK_ROLE_MAPPING WHERE vfc_customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'\n  pfx='db.vfc-to-network-role-mapping[]'>\n\n","comments":"","outputs":1,"x":1161.6666259765625,"y":1354.999912261963,"z":"c6a6763c.4a8938","wires":[["5622a9a8.299278","400145c8.a5820c"]]},{"id":"5622a9a8.299278","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1448.8808288574219,"y":1335.3807592391968,"z":"c6a6763c.4a8938","wires":[["caac1149.1f034"]]},{"id":"400145c8.a5820c","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":1457.4522590637207,"y":1379.6664724349976,"z":"c6a6763c.4a8938","wires":[["d6f31097.71144"]]},{"id":"caac1149.1f034","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 reading VFC_TO_NETWORK_ROLE_MAPPING table\" />\n","comments":"","x":1623.880760192871,"y":1334.5236597061157,"z":"c6a6763c.4a8938","wires":[]},{"id":"d6f31097.71144","type":"set","name":"set vfc-to-network-role-mapping length to 0","xml":"<set>\n<parameter name='db.vfc-to-network-role-mapping_length' value='0' />\n","comments":"","x":1720.857078552246,"y":1379.6748628616333,"z":"c6a6763c.4a8938","wires":[]},{"id":"e09776e2.09fce8","type":"set","name":"set local ip-version","xml":"<set>\n<parameter name='tmp.local.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].ip-version'\n   value='ipv6' />\n","comments":"","x":1974.5473403930664,"y":2637.082179069519,"z":"c6a6763c.4a8938","wires":[]},{"id":"f65ee3e0.f68a8","type":"set","name":"set local.ip-version","xml":"<set>\n<parameter name='tmp.local.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].ip-version'\n   value='ipv4' />   ","comments":"","x":1979.547462463379,"y":2455.749161720276,"z":"c6a6763c.4a8938","wires":[]},{"id":"bca0b7c7.7693f8","type":"set","name":"set vm-networks[].network-role","xml":"<set>\n<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].network-role'\n   value='`$db.vfc-to-network-role-mapping[$network-role-index].network-role`' />","comments":"","x":1447.142837524414,"y":2689.9998846054077,"z":"c6a6763c.4a8938","wires":[]},{"id":"d199b2c.f491e5","type":"for","name":"for ip-count-index in ip-count","xml":"<for index='ip-count-index' start='0' end='`$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].ip-count`'>","comments":"","outputs":1,"x":1555.333152770996,"y":2979.66695022583,"z":"c6a6763c.4a8938","wires":[["840dab74.e88378"]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-assign.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-assign.json
new file mode 100644
index 0000000..24c3f08
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-assign.json
@@ -0,0 +1 @@
+[{"id":"16c70efe.7a8801","type":"dgstart","name":"DGSTART","outputs":1,"x":120,"y":81.25,"z":"1a1ddf2c.df1b41","wires":[["355a50a5.566cd"]]},{"id":"355a50a5.566cd","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":234,"y":141.25,"z":"1a1ddf2c.df1b41","wires":[["3cac45ed.2af29a"]]},{"id":"3cac45ed.2af29a","type":"method","name":"method vnf-topology-automated-assign","xml":"<method rpc='vnf-topology-automated-assign' mode='sync'>\n","comments":"","outputs":1,"x":236.5,"y":201.25,"z":"1a1ddf2c.df1b41","wires":[["7f45592b.5aa228"]]},{"id":"7f45592b.5aa228","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","comments":"","outputs":1,"x":274,"y":261.25,"z":"1a1ddf2c.df1b41","wires":[["242b6039.a4933","5304daf6.f2f644","7994db7a.864d54","16f2f46d.f9323c","134b41a5.40812e","d578e5a.1ca0318","7e51ab70.dd7844","113a63d2.c73f9c","a83a3395.50d63"]]},{"id":"242b6039.a4933","type":"set","name":"set: order-status = PendingCreate","xml":"<set>\n\t<parameter name=\"service-data.oper-status.order-status\" value=\"PendingCreate\"/>","comments":"","x":579.3571395874023,"y":844.821439743042,"z":"1a1ddf2c.df1b41","wires":[]},{"id":"82792209.9734a","type":"comment","name":"request-action = VNFActivateRequest","info":"","comments":"","x":204,"y":41.25,"z":"1a1ddf2c.df1b41","wires":[]},{"id":"fb53bdbf.46f42","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":874.8571395874023,"y":785.821439743042,"z":"1a1ddf2c.df1b41","wires":[["58e46612.49adb8"]]},{"id":"ddf10b49.e08dc8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"Encountered error while updating vf-module orchestration-status in AnAI\"/>","comments":"","x":1229.071388244629,"y":786.2499771118164,"z":"1a1ddf2c.df1b41","wires":[]},{"id":"3f3242c8.1b61ee","type":"save","name":"save relationship: l3-network","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module:relationship-list\" \n\t\tkey=\"vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t\t\tand generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id\" \n\tforce=\"true\" \n\tlocal-only=\"false\">\n\t\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"l3-network.network-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$i].network-id`\" />","comments":"","outputs":1,"x":902.8571395874023,"y":659.821439743042,"z":"1a1ddf2c.df1b41","wires":[["10b1439d.aea9cc"]]},{"id":"10b1439d.aea9cc","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1121.9999656677246,"y":659.1071357727051,"z":"1a1ddf2c.df1b41","wires":[["520b73a3.1208cc"]]},{"id":"5304daf6.f2f644","type":"for","name":"for i : SERVICE_DATA vnf-networks","xml":"<for index=\"i\" start=\"0\" end=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`\">","comments":"","outputs":1,"x":584.8571395874023,"y":659.821439743042,"z":"1a1ddf2c.df1b41","wires":[["3f3242c8.1b61ee"]]},{"id":"d2e43a22.4b50c8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Encountered error while saving vf-module l3-network relationship in AnAI with network-id = ' + $service-data.vnf-topology-information.vnf-assignments.vnf-networks[$i].network-id`\"/>","comments":"","x":1483.357063293457,"y":657.964316368103,"z":"1a1ddf2c.df1b41","wires":[]},{"id":"520b73a3.1208cc","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1283.9999656677246,"y":659.1071357727051,"z":"1a1ddf2c.df1b41","wires":[["d2e43a22.4b50c8","6954002.67688"]]},{"id":"bc71a20.de7366","type":"save","name":"delete vf-module: l3-network relationship","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module:relationship-list\" \n\tkey=\"vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t\tAND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id \n\t\tAND related-to = l3-network\" \n\tforce=\"true\" \n\tlocal-only=\"false\">","comments":"","outputs":1,"x":1744.642921447754,"y":523.3928279876709,"z":"1a1ddf2c.df1b41","wires":[[]]},{"id":"7994db7a.864d54","type":"save","name":"update AnAI - vf-module.orchestration-status","xml":"<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module\" \n\t\tkey=\"vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t\t\tand generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id\" \n\t\tlocal-only=\"false\" >\n\t<parameter name=\"orchestration-status\" value=\"pending-create\" />","comments":"","outputs":1,"x":613.3571395874023,"y":785.821439743042,"z":"1a1ddf2c.df1b41","wires":[["fb53bdbf.46f42"]]},{"id":"58e46612.49adb8","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1042.928581237793,"y":786.2500095367432,"z":"1a1ddf2c.df1b41","wires":[["ddf10b49.e08dc8","6954002.67688"]]},{"id":"16f2f46d.f9323c","type":"call","name":"call: vnf-topology-automated-assign-vfmodule","xml":"<call module='VNF-API' rpc='vnf-topology-automated-assign-vfmodule' mode='sync' >","comments":"","outputs":1,"x":615.3571395874023,"y":531.821439743042,"z":"1a1ddf2c.df1b41","wires":[[]]},{"id":"134b41a5.40812e","type":"set","name":"Set final indicator to Y","xml":"<set>\n<parameter name=\"ack-final\" value=\"Y\"/>","comments":"","x":543.3571395874023,"y":900.821439743042,"z":"1a1ddf2c.df1b41","wires":[]},{"id":"d578e5a.1ca0318","type":"switchNode","name":"switch ...SERVICE-DATA vnf-networks[]","xml":"<switch test=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`\">","comments":"","outputs":1,"x":597.3571395874023,"y":591.821439743042,"z":"1a1ddf2c.df1b41","wires":[["ac55335c.b48bc"]]},{"id":"ac55335c.b48bc","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":834.8571395874023,"y":591.821439743042,"z":"1a1ddf2c.df1b41","wires":[["60a230cd.63643"]]},{"id":"60a230cd.63643","type":"set","name":"set SERVICE-DATA vnf-networks[] = 0","xml":"<set>\n<parameter name='service-data.vnf-topology-information.vnf-assignments.vnf-networks_length' value='0' />\n","comments":"","x":1072.8571395874023,"y":591.821439743042,"z":"1a1ddf2c.df1b41","wires":[]},{"id":"7e51ab70.dd7844","type":"save","name":"GET AnAI - vf-module","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module\" \n\t\tkey=\"vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t\t\tand generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.vfmodule\" >","comments":"","outputs":1,"x":546.6428604125977,"y":447.8214340209961,"z":"1a1ddf2c.df1b41","wires":[["d5f4c089.d7081","d330aef1.d0e27"]]},{"id":"d5f4c089.d7081","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":744.8571319580078,"y":419.25001335144043,"z":"1a1ddf2c.df1b41","wires":[["3b52247c.b50a5c"]]},{"id":"d330aef1.d0e27","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":750.4999923706055,"y":470.67858123779297,"z":"1a1ddf2c.df1b41","wires":[["a911107d.bce06"]]},{"id":"3b52247c.b50a5c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Encountered error while querying vf-module from AnAI with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`\"/>","comments":"","x":943.3571319580078,"y":419.25001335144043,"z":"1a1ddf2c.df1b41","wires":[]},{"id":"a911107d.bce06","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='404'/>\n\t<parameter name='error-message' value=\"`'vf-module not found in AnAI with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`\"/>","comments":"","x":940.4999923706055,"y":470.67858123779297,"z":"1a1ddf2c.df1b41","wires":[]},{"id":"113a63d2.c73f9c","type":"switchNode","name":"switch:vnf-id | config == input","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`\">","comments":"","outputs":1,"x":561.8333129882812,"y":261.25001335144043,"z":"1a1ddf2c.df1b41","wires":[["7c6dbcf3.1a3954"]]},{"id":"fec3a55d.1a66c8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value='vnf-id is already present in config-tree'/>","comments":"","x":970.5,"y":261.25,"z":"1a1ddf2c.df1b41","wires":[]},{"id":"7c6dbcf3.1a3954","type":"outcomeTrue","name":"true","xml":"<outcome value='true'>\n","comments":"","outputs":1,"x":772,"y":261.25,"z":"1a1ddf2c.df1b41","wires":[["fec3a55d.1a66c8"]]},{"id":"a83a3395.50d63","type":"switchNode","name":"switch: INPUT model-customization-uuid","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.model-customization-uuid`\">","comments":"","outputs":1,"x":598.5714111328125,"y":337.14282035827637,"z":"1a1ddf2c.df1b41","wires":[["2b051e5b.50a662","1811e1b.758e61e"]]},{"id":"1811e1b.758e61e","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":857.6427993774414,"y":358.39280700683594,"z":"1a1ddf2c.df1b41","wires":[["227c03f7.c6066c"]]},{"id":"2b051e5b.50a662","type":"outcome","name":"0","xml":"<outcome value='0'>","comments":"","outputs":1,"x":853.9285583496094,"y":312.2499761581421,"z":"1a1ddf2c.df1b41","wires":[["227c03f7.c6066c"]]},{"id":"227c03f7.c6066c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='model-customization-uuid cannot be NULL or 0'/>","comments":"","x":1027.6428756713867,"y":331.53565406799316,"z":"1a1ddf2c.df1b41","wires":[]},{"id":"5b308fe2.250b5","type":"call","name":"call: rollback-eipam-ip-assignment","xml":"<call module='VNF-API' rpc='rollback-eipam-ip-assignment' mode='sync' >","comments":"","outputs":1,"x":1729.0001258850098,"y":571.1428575515747,"z":"1a1ddf2c.df1b41","wires":[[]]},{"id":"6954002.67688","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":1471.4286041259766,"y":548.5714340209961,"z":"1a1ddf2c.df1b41","wires":[["bc71a20.de7366","5b308fe2.250b5"]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-delete.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-delete.json
new file mode 100644
index 0000000..1a957ff
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-delete.json
@@ -0,0 +1 @@
+[{"id":"a17f2c56.75bec","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":257.8570556640625,"y":235.57144355773926,"z":"e9465f3b.ff9db","wires":[["277a3558.11867a","35cf5f24.d47eb","bd77133.bab7af","ede0237b.f3b56","95956b76.93c358","c369ede6.f62b2","834d2cf5.5a461","e2863c33.6bb83"]]},{"id":"277a3558.11867a","type":"set","name":"set: order-status = Deleted","xml":"<set>\n\t<parameter name=\"service-data.oper-status.order-status\" value=\"Deleted\"/>","comments":"","x":542.2856979370117,"y":452.8453245162964,"z":"e9465f3b.ff9db","wires":[]},{"id":"3840051b.85529a","type":"method","name":"method vnf-topology-automated-delete","xml":"<method rpc='vnf-topology-automated-delete' mode='sync'>\n","comments":"","outputs":1,"x":250.9523468017578,"y":154.73809337615967,"z":"e9465f3b.ff9db","wires":[["a17f2c56.75bec"]]},{"id":"6ea1ded.d5f8b2","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":333.33326721191406,"y":74.16667461395264,"z":"e9465f3b.ff9db","wires":[["3840051b.85529a"]]},{"id":"8a168a7b.717948","type":"dgstart","name":"DGSTART","outputs":1,"x":123.49994659423828,"y":74,"z":"e9465f3b.ff9db","wires":[["6ea1ded.d5f8b2"]]},{"id":"6ca1cda5.7a4a04","type":"other","name":"false","xml":"<outcome value='false'>","comments":"","outputs":1,"x":749.0671157836914,"y":289.7478561401367,"z":"e9465f3b.ff9db","wires":[["b065b223.b815b"]]},{"id":"b065b223.b815b","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid order-status'/>","comments":"","x":901.4002456665039,"y":289.74791717529297,"z":"e9465f3b.ff9db","wires":[]},{"id":"bd77133.bab7af","type":"set","name":"set: last-action ","xml":"<set>\n\t<parameter name=\"service-data.oper-status.last-action\" value=\"`$service-data.request-information.request-action`\"/>","comments":"","x":503.5432891845703,"y":500.6766357421875,"z":"e9465f3b.ff9db","wires":[]},{"id":"35cf5f24.d47eb","type":"set","name":"set: last-order-status = order-status","xml":"<set>\n\t<parameter name=\"service-data.oper-status.last-order-status\" value=\"`$service-data.oper-status.order-status`\"/>","comments":"","x":568.6796417236328,"y":403.0114555358887,"z":"e9465f3b.ff9db","wires":[]},{"id":"ede0237b.f3b56","type":"set","name":"Clear vnf topology","xml":"<set>\n\t<parameter name=\"service-data.\" value=\"\" /> \n","comments":"","x":511.2510757446289,"y":550.868616104126,"z":"e9465f3b.ff9db","wires":[]},{"id":"c369ede6.f62b2","type":"switchNode","name":"switch: order-status = Active","xml":"<switch test=\"`$service-data.oper-status.order-status == Active`\">","comments":"","outputs":1,"x":547.2500152587891,"y":290.04765701293945,"z":"e9465f3b.ff9db","wires":[["6ca1cda5.7a4a04"]]},{"id":"95956b76.93c358","type":"set","name":"Set final indicator to Y","xml":"<set>\n<parameter name=\"ack-final\" value=\"Y\"/>","comments":"","x":521.1428985595703,"y":596.0715312957764,"z":"e9465f3b.ff9db","wires":[]},{"id":"834d2cf5.5a461","type":"switchNode","name":"switch:vnf-id   config == input","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`\">","comments":"","outputs":1,"x":547.1428451538086,"y":234.8571605682373,"z":"e9465f3b.ff9db","wires":[["6c92b5e8.1192bc"]]},{"id":"6c92b5e8.1192bc","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":748.5974044799805,"y":235.03898811340332,"z":"e9465f3b.ff9db","wires":[["caf756bf.ce79e8"]]},{"id":"caf756bf.ce79e8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='404'/>\n\t<parameter name='error-message' value='vnf-id not found'/>","comments":"","x":912.1883239746094,"y":235.19808864593506,"z":"e9465f3b.ff9db","wires":[]},{"id":"e2863c33.6bb83","type":"call","name":"call: rollback-eipam-ip-assignment","xml":"<call module='VNF-API' rpc='rollback-eipam-ip-assignment' mode='sync' >","comments":"","outputs":1,"x":567.1428833007812,"y":344.28573417663574,"z":"e9465f3b.ff9db","wires":[[]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-operation.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-operation.json
new file mode 100644
index 0000000..922a52c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-operation.json
@@ -0,0 +1 @@
+[{"id":"18c57a33.efbf46","type":"dgstart","name":"DGSTART","outputs":1,"x":138.3333282470703,"y":63.33333206176758,"z":"a1500f38.53c3e","wires":[["a39f2a21.325218"]]},{"id":"a39f2a21.325218","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":345.9444351196289,"y":64.11111640930176,"z":"a1500f38.53c3e","wires":[["7005a08d.a5fc7"]]},{"id":"7005a08d.a5fc7","type":"method","name":"vnf-topology-automated-operation","xml":"<method rpc='vnf-topology-automated-operation' mode='sync'>\n","comments":"","outputs":1,"x":259.8333206176758,"y":119.55555152893066,"z":"a1500f38.53c3e","wires":[["f2e2d7f9.0126f8"]]},{"id":"9162cd79.14658","type":"switchNode","name":"switch: svc-action","xml":"<switch test=\"`$vnf-topology-operation-input.sdnc-request-header.svc-action`\">\n<!--\nleaf svc-action { \n\ttype enumeration { \n\t\tenum \"reserve\";\n\t\tenum \"assign\";\n\t\tenum \"activate\";  // equal to commit\n\t\tenum \"delete\";\t  // equal to commit\n\t\tenum \"changeassign\";\n\t\tenum \"changedelete\";\n\t\tenum \"rollback\";\n\t}\n}\n-->\n\n","comments":"","outputs":1,"x":422.7460174560547,"y":580.9523010253906,"z":"a1500f38.53c3e","wires":[["8224b548.40b4a8","5f465d1e.4d94b4","d983d392.1d9a6","98e7501f.26dbc","59d3b456.0a00fc"]]},{"id":"8224b548.40b4a8","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":639.5793914794922,"y":866.7024803161621,"z":"a1500f38.53c3e","wires":[["72343cc8.fc7bb4"]]},{"id":"5f465d1e.4d94b4","type":"other","name":"assign","xml":"<outcome value='assign'>","comments":"","outputs":1,"x":640.3015747070312,"y":580.9523067474365,"z":"a1500f38.53c3e","wires":[["547b268.884f1d8"]]},{"id":"72343cc8.fc7bb4","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='svc-action not recognized'/>\n","comments":"","x":811.5793914794922,"y":866.7024803161621,"z":"a1500f38.53c3e","wires":[]},{"id":"d983d392.1d9a6","type":"other","name":"activate","xml":"<outcome value='activate'>","comments":"","outputs":1,"x":643.3015899658203,"y":702.2022953033447,"z":"a1500f38.53c3e","wires":[["f19c8d58.4a549"]]},{"id":"98e7501f.26dbc","type":"other","name":"rollback","xml":"<outcome value='rollback'>","comments":"","outputs":1,"x":643.0515899658203,"y":759.452296257019,"z":"a1500f38.53c3e","wires":[["4e79020d.f21e3c"]]},{"id":"cee7b9d8.a8e638","type":"other","name":"changeassign","xml":"<outcome value='changeassign'>","comments":"","outputs":1,"x":661.8015899658203,"y":643.4522972106934,"z":"a1500f38.53c3e","wires":[["7797f0bb.8a36c"]]},{"id":"59d3b456.0a00fc","type":"other","name":"delete","xml":"<outcome value='delete'>","comments":"","outputs":1,"x":640.6627502441406,"y":812.3135557174683,"z":"a1500f38.53c3e","wires":[["d8f73085.d4515"]]},{"id":"2b43b340.5116cc","type":"call","name":"call: vnf-topology-automated-assign","xml":"<call module='VNF-API' rpc='vnf-topology-automated-assign' mode='sync' >","comments":"","outputs":1,"x":1113.5515747070312,"y":580.9522495269775,"z":"a1500f38.53c3e","wires":[[]]},{"id":"fd2a3a1a.99f018","type":"call","name":"call: vnf-topology-automated-changeassign","xml":"<call module='VNF-API' rpc='vnf-topology-automated-changeassign' mode='sync' >","comments":"","outputs":1,"x":1136.8016967773438,"y":641.9523048400879,"z":"a1500f38.53c3e","wires":[[]]},{"id":"19c4d34a.91c3dd","type":"call","name":"call: vnf-topology-automated-rollback","xml":"<call module='VNF-API' rpc='vnf-topology-automated-rollback' mode='sync' >","comments":"","outputs":1,"x":1037.5516967773438,"y":759.4523067474365,"z":"a1500f38.53c3e","wires":[[]]},{"id":"d8f73085.d4515","type":"call","name":"call: vnf-topology-automated-delete","xml":"<call module='VNF-API' rpc='vnf-topology-automated-delete' mode='sync' >","comments":"","outputs":1,"x":883.4128189086914,"y":812.3135566711426,"z":"a1500f38.53c3e","wires":[[]]},{"id":"828e15d2.79b178","type":"call","name":"call: vnf-topology-activate","xml":"<call module='VNF-API' rpc='vnf-topology-activate' mode='sync' >","comments":"","outputs":1,"x":1037.0516891479492,"y":701.4523005485535,"z":"a1500f38.53c3e","wires":[[]]},{"id":"ef5eb70c.59f308","type":"comment","name":"vnf-topology-automated-operation","info":"","comments":"","x":734.0793533325195,"y":72.92062950134277,"z":"a1500f38.53c3e","wires":[]},{"id":"f2e2d7f9.0126f8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":240.33333587646484,"y":176.083345413208,"z":"a1500f38.53c3e","wires":[["9162cd79.14658","3eddd5cf.e6463a"]]},{"id":"2af077bd.a29358","type":"switchNode","name":"switch: INPUT generic-vnf-id","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.generic-vnf-id`\">","comments":"","outputs":1,"x":1346.5913696289062,"y":303.81356716156006,"z":"a1500f38.53c3e","wires":[["9f219d1a.64396","598e436e.a80f1c"]]},{"id":"598e436e.a80f1c","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1575.305648803711,"y":354.8135452270508,"z":"a1500f38.53c3e","wires":[["d978e183.52eb8"]]},{"id":"9f219d1a.64396","type":"outcome","name":"0","xml":"<outcome value='0'>","comments":"","outputs":1,"x":1573.7342681884766,"y":303.3850030899048,"z":"a1500f38.53c3e","wires":[["d978e183.52eb8"]]},{"id":"d978e183.52eb8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='generic-vnf-id cannot be NULL or 0'/>","comments":"","x":1739.8770217895508,"y":354.6707239151001,"z":"a1500f38.53c3e","wires":[]},{"id":"dffc6547.7214d8","type":"switchNode","name":"switch: INPUT generic-vnf-name","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.generic-vnf-name`\">","comments":"","outputs":1,"x":1357.34130859375,"y":406.2420825958252,"z":"a1500f38.53c3e","wires":[["d60757e2.82ff78"]]},{"id":"d60757e2.82ff78","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1576.3412780761719,"y":406.38492012023926,"z":"a1500f38.53c3e","wires":[["b2e6c97f.26fa58"]]},{"id":"b2e6c97f.26fa58","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='generic-vnf-name cannot be NULL'/>","comments":"","x":1765.198486328125,"y":406.67064094543457,"z":"a1500f38.53c3e","wires":[]},{"id":"8d7c9ac.030d068","type":"switchNode","name":"switch: INPUT generic-vnf-type","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.generic-vnf-type`\">","comments":"","outputs":1,"x":1353.4485397338867,"y":460.24215602874756,"z":"a1500f38.53c3e","wires":[["44e2dc10.614bd4"]]},{"id":"44e2dc10.614bd4","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1573.4485092163086,"y":460.3849935531616,"z":"a1500f38.53c3e","wires":[["3cb0240a.f6544c"]]},{"id":"3cb0240a.f6544c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='generic-vnf-type cannot be NULL'/>","comments":"","x":1768.3057174682617,"y":460.67071437835693,"z":"a1500f38.53c3e","wires":[]},{"id":"193531be.f37bae","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":1087.1191482543945,"y":303.79775619506836,"z":"a1500f38.53c3e","wires":[["2af077bd.a29358","dffc6547.7214d8","8d7c9ac.030d068","77a4d146.d7dc","77259fa6.669ab","7d03f557.462e9c"]]},{"id":"f19c8d58.4a549","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":791.6904830932617,"y":701.6190490722656,"z":"a1500f38.53c3e","wires":[["828e15d2.79b178"]]},{"id":"7797f0bb.8a36c","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":854.4404830932617,"y":642.8690490722656,"z":"a1500f38.53c3e","wires":[["193531be.f37bae","fd2a3a1a.99f018"]]},{"id":"4e79020d.f21e3c","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":792.9404830932617,"y":759.1190500259399,"z":"a1500f38.53c3e","wires":[["19c4d34a.91c3dd"]]},{"id":"547b268.884f1d8","type":"block","name":"block : atomic","xml":"<block atomic='true'>","atomic":"true","comments":"","outputs":1,"x":827.4404830932617,"y":580.8690509796143,"z":"a1500f38.53c3e","wires":[["193531be.f37bae","2b43b340.5116cc"]]},{"id":"77a4d146.d7dc","type":"switchNode","name":"switch: INPUT aic-cloud-region","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.aic-cloud-region`\">","comments":"","outputs":1,"x":1353.15478515625,"y":511.36915588378906,"z":"a1500f38.53c3e","wires":[["46e24365.9866cc"]]},{"id":"46e24365.9866cc","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1574.1547546386719,"y":511.5119934082031,"z":"a1500f38.53c3e","wires":[["c1fb7f1e.e7973"]]},{"id":"c1fb7f1e.e7973","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='aic-cloud-region cannot be NULL'/>","comments":"","x":1769.011962890625,"y":511.79771423339844,"z":"a1500f38.53c3e","wires":[]},{"id":"3eddd5cf.e6463a","type":"switchNode","name":"switch: INPUT vnf-id","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-id`\">","comments":"","outputs":1,"x":464.9842300415039,"y":176.24210929870605,"z":"a1500f38.53c3e","wires":[["fbc8c7a9.c38ab8","65fb1338.4b47ec"]]},{"id":"65fb1338.4b47ec","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":675.9841995239258,"y":227.38494682312012,"z":"a1500f38.53c3e","wires":[["f2246943.f6e1d8"]]},{"id":"fbc8c7a9.c38ab8","type":"outcome","name":"0","xml":"<outcome value='0'>","comments":"","outputs":1,"x":675.1271286010742,"y":175.81354522705078,"z":"a1500f38.53c3e","wires":[["f2246943.f6e1d8"]]},{"id":"f2246943.f6e1d8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vf-modules vnf-id cannot be NULL or 0'/>","comments":"","x":850.8414077758789,"y":227.67066764831543,"z":"a1500f38.53c3e","wires":[]},{"id":"77259fa6.669ab","type":"switchNode","name":"switch: INPUT vnf-name","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-name`\">","comments":"","outputs":1,"x":1332.9999694824219,"y":198.14290809631348,"z":"a1500f38.53c3e","wires":[["175c0792.497be8"]]},{"id":"175c0792.497be8","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1536.5713806152344,"y":198.0000286102295,"z":"a1500f38.53c3e","wires":[["8639aa6b.22c9e8"]]},{"id":"8639aa6b.22c9e8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vnf-name is required'/>","comments":"","x":1698.0713806152344,"y":198.2500286102295,"z":"a1500f38.53c3e","wires":[]},{"id":"7d03f557.462e9c","type":"switchNode","name":"switch: INPUT vnf-type","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-type`\">","comments":"","outputs":1,"x":1329.000015258789,"y":252.57145595550537,"z":"a1500f38.53c3e","wires":[["4fed628b.c7308c"]]},{"id":"4fed628b.c7308c","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1536.8571338653564,"y":252.85716342926025,"z":"a1500f38.53c3e","wires":[["2d42aa93.47ca86"]]},{"id":"2d42aa93.47ca86","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vnf-type is required'/>","comments":"","x":1698.3571338653564,"y":253.10716342926025,"z":"a1500f38.53c3e","wires":[]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-rollback.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-rollback.json
new file mode 100644
index 0000000..b9b0359
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-automated-rollback.json
@@ -0,0 +1 @@
+[{"id":"2df19079.01dee","type":"comment","name":"vnf-topology-automated-rollback","info":"","comments":"","x":781.6666259765625,"y":85,"z":"852e9052.1933","wires":[]},{"id":"8a5a63e.605c3a","type":"method","name":"method vnf-topology-automated-rollback","xml":"<method rpc='vnf-topology-automated-rollback' mode='sync'>\n","comments":"","outputs":1,"x":218.00005340576172,"y":143.72221851348877,"z":"852e9052.1933","wires":[["ea4526ce.6a7fe8"]]},{"id":"64773b27.1076f4","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":311.0000915527344,"y":65.61112022399902,"z":"852e9052.1933","wires":[["8a5a63e.605c3a"]]},{"id":"d15cd70a.44d268","type":"dgstart","name":"DGSTART","outputs":1,"x":107.83336639404297,"y":65.55555725097656,"z":"852e9052.1933","wires":[["64773b27.1076f4"]]},{"id":"38300bd0.9d91a4","type":"set","name":"set: order-status = Deleted","xml":"<set>\n\t<parameter name=\"service-data.oper-status.order-status\" value=\"Deleted\"/>","comments":"","x":565.0120162963867,"y":400.29102516174316,"z":"852e9052.1933","wires":[]},{"id":"8e11ce88.6d977","type":"switchNode","name":"switch: order-status = PendingCreate","xml":"<switch test=\"`$service-data.oper-status.order-status == PendingCreate`\">","comments":"","outputs":1,"x":596.4244003295898,"y":250.84835243225098,"z":"852e9052.1933","wires":[["527bd20f.db61ac"]]},{"id":"527bd20f.db61ac","type":"other","name":"false","xml":"<outcome value='false'>","comments":"","outputs":1,"x":828.0077819824219,"y":250.6816644668579,"z":"852e9052.1933","wires":[["8c38cdbb.f8955"]]},{"id":"8c38cdbb.f8955","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid order-status'/>","comments":"","x":980.3409118652344,"y":250.68172550201416,"z":"852e9052.1933","wires":[]},{"id":"8cc0bfaa.280a8","type":"set","name":"set: last-action ","xml":"<set>\n\t<parameter name=\"service-data.oper-status.last-action\" value=\"`$service-data.request-information.request-action`\"/>","comments":"","x":528.7697296142578,"y":447.87234020233154,"z":"852e9052.1933","wires":[]},{"id":"ed465a50.3ba868","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":816.6819763183594,"y":203.63890933990479,"z":"852e9052.1933","wires":[["a7bd6389.171b5"]]},{"id":"a7bd6389.171b5","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value=\"`'vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' not found in config tree'`\"/>","comments":"","x":979.7727966308594,"y":204.04801273345947,"z":"852e9052.1933","wires":[]},{"id":"ffb7307a.7a1ec","type":"set","name":"set: last-order-status = order-status","xml":"<set>\n\t<parameter name=\"service-data.oper-status.last-order-status\" value=\"`$service-data.oper-status.order-status`\"/>","comments":"","x":591.6560516357422,"y":350.84999656677246,"z":"852e9052.1933","wires":[]},{"id":"5953a9f9.983b98","type":"set","name":"Clear vnf topology","xml":"<set>\n\t<parameter name=\"service-data.\" value=\"\" /> \n","comments":"","x":538.0450286865234,"y":495.85004782676697,"z":"852e9052.1933","wires":[]},{"id":"2d8f7fa7.aece","type":"switchNode","name":"switch:CONFIG == INPUT - vnf-id","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`\">","comments":"","outputs":1,"x":585.8334579467773,"y":203.63890933990479,"z":"852e9052.1933","wires":[["ed465a50.3ba868"]]},{"id":"ea4526ce.6a7fe8","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":295.33343505859375,"y":202.88890647888184,"z":"852e9052.1933","wires":[["2d8f7fa7.aece","8e11ce88.6d977","ffb7307a.7a1ec","38300bd0.9d91a4","8cc0bfaa.280a8","5953a9f9.983b98","4ba4d3b6.88298c"]]},{"id":"5fa2bce2.0c59d4","type":"comment","name":"Only valid to rollback assigned vf-module with Orchestration status = PendingCreate","info":"","comments":"","x":793.0833740234375,"y":121.00000190734863,"z":"852e9052.1933","wires":[]},{"id":"4ba4d3b6.88298c","type":"call","name":"call: rollback-eipam-ip-assignment","xml":"<call module='VNF-API' rpc='rollback-eipam-ip-assignment' mode='sync' >","comments":"","outputs":1,"x":586.6428604125977,"y":300,"z":"852e9052.1933","wires":[[]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-changeassign.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-changeassign.json
new file mode 100644
index 0000000..7ba41de
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-changeassign.json
@@ -0,0 +1 @@
+[{"id":"1c2e4ec2.265511","type":"dgstart","name":"DGSTART","outputs":1,"x":168.57142639160156,"y":82.85714387893677,"z":"f2a32f4b.a395c","wires":[["327d7a0d.239446"]]},{"id":"327d7a0d.239446","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":390.4047393798828,"y":83.02382278442383,"z":"f2a32f4b.a395c","wires":[["b2fa78f1.5e9c28"]]},{"id":"a17bcae8.28c348","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":246.0714340209961,"y":185.85714387893677,"z":"f2a32f4b.a395c","wires":[["96ebfd33.34f83","fb382397.3c3d6","14bb58a1.af0e67","f9810dfb.b06c3","62e2a3ed.47ecac","3ae2afd7.ca527","ab86fb03.c39478","63823512.60608c","bd5aae62.fb397","2b097b37.aa27e4","4a603bf8.396a34"]]},{"id":"96ebfd33.34f83","type":"set","name":"set: order-status = PendingUpdate","xml":"<set>\n\t<parameter name=\"service-data.oper-status.order-status\" value=\"PendingUpdate\"/>","comments":"","x":543.182975769043,"y":961.9848866462708,"z":"f2a32f4b.a395c","wires":[[]]},{"id":"fb382397.3c3d6","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />","comments":"","x":481.4527893066406,"y":1096.7847657203674,"z":"f2a32f4b.a395c","wires":[]},{"id":"14bb58a1.af0e67","type":"switchNode","name":"switch: service-data order-status = Active","xml":"<switch test=\"`$service-data.oper-status.order-status == Active`\">\n<!--\nleaf order-status {\n\ttype enumeration {\n\t\tenum \"Active\";\n\t\tenum \"PendingAssignment\";\n\t\tenum \"PendingCreate\";\n\t\tenum \"PendingUpdate\";\n\t\tenum \"Deleted\";\n\t}\n}\n-->","comments":"","outputs":1,"x":564.5714263916016,"y":229.85714387893677,"z":"f2a32f4b.a395c","wires":[["b9cd1561.1ea538"]]},{"id":"7f09bcc9.27e9a4","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid service-data order status'/>","comments":"","x":969.3212432861328,"y":229.69051790237427,"z":"f2a32f4b.a395c","wires":[]},{"id":"b9cd1561.1ea538","type":"other","name":"false","xml":"<outcome value='false'>","comments":"","outputs":1,"x":810.7380523681641,"y":229.44039583206177,"z":"f2a32f4b.a395c","wires":[["7f09bcc9.27e9a4"]]},{"id":"b2fa78f1.5e9c28","type":"method","name":"method vnf-topology-changeassign","xml":"<method rpc='vnf-topology-changeassign' mode='sync'>\n","comments":"","outputs":1,"x":268.57142639160156,"y":133.85714387893677,"z":"f2a32f4b.a395c","wires":[["a17bcae8.28c348"]]},{"id":"f9810dfb.b06c3","type":"set","name":"set: last-action ","xml":"<set>\n\t<parameter name=\"service-data.oper-status.last-action\" value=\"`$service-data.request-information.request-action`\"/>","comments":"","x":481.1905288696289,"y":1007.9999012947083,"z":"f2a32f4b.a395c","wires":[[]]},{"id":"62e2a3ed.47ecac","type":"set","name":"set: last-order-status = order-status","xml":"<set>\n\t<parameter name=\"service-data.oper-status.last-order-status\" value=\"`$service-data.oper-status.order-status`\"/>","comments":"","x":543.8572082519531,"y":912.6665992736816,"z":"f2a32f4b.a395c","wires":[[]]},{"id":"3ae2afd7.ca527","type":"call","name":"call: vnf-topology-assign-vfmodule","xml":"<call module='VNF-API' rpc='vnf-topology-assign-vfmodule' mode='sync' >","comments":"","outputs":1,"x":542.5714263916016,"y":274.85714387893677,"z":"f2a32f4b.a395c","wires":[[]]},{"id":"63823512.60608c","type":"save","name":"delete relationship: vf-module","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module:relationship-list\" \n\t\tkey=\"vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t\t\tAND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id \n\t\t\tAND related-to = l3-network\" \n\tforce=\"true\" \n\tlocal-only=\"false\">","comments":"","outputs":1,"x":526.7143096923828,"y":419.42879915237427,"z":"f2a32f4b.a395c","wires":[["c841e1cb.40476"]]},{"id":"8ad6d1c9.a9a0c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'An error occurred while deleting existing vf-module l3-network relationship in AnAI with with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id + ' vf-module update FAILED.'`\"/>","comments":"","x":928.5713043212891,"y":419.71416902542114,"z":"f2a32f4b.a395c","wires":[]},{"id":"ab86fb03.c39478","type":"save","name":"get AnAI - vf-module","xml":"<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module\" \n\t\tkey=\"vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t\t\tand generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id\" \n\t\tlocal-only=\"false\" \n\t\tpfx=\"tmp.AnAI.vfmodule\">","comments":"","outputs":1,"x":500.57142639160156,"y":320.85714387893677,"z":"f2a32f4b.a395c","wires":[["1a5ea207.1792ee","34bdca57.146506"]]},{"id":"fdbb1fb1.edc49","type":"save","name":"save vf-module relationship: l3-network","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module:relationship-list\" \n\t\tkey=\"vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t\t\tAND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id\" \n\tforce=\"true\" \n\tlocal-only=\"false\">\n\t\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"l3-network.network-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$i].network-id`\" />","comments":"","outputs":1,"x":865.5435943603516,"y":545.4240374565125,"z":"f2a32f4b.a395c","wires":[["e5957add.e0e3b8"]]},{"id":"e5957add.e0e3b8","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1108.6878356933594,"y":545.4710698127747,"z":"f2a32f4b.a395c","wires":[["f3e1a4c1.9cbf48"]]},{"id":"bd5aae62.fb397","type":"for","name":"for i : SERVICE_DATA vnf-networks","xml":"<for index=\"i\" start=\"0\" end=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`\">","comments":"","outputs":1,"x":543.1903991699219,"y":545.3925185203552,"z":"f2a32f4b.a395c","wires":[["fdbb1fb1.edc49"]]},{"id":"d43666a.f2b7098","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Failed to update vf-module l3-network relationship in AnAI. ' + $error-message`\"/>","comments":"","x":1435.6306610107422,"y":825.6659226417542,"z":"f2a32f4b.a395c","wires":[]},{"id":"f3e1a4c1.9cbf48","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1254.6665878295898,"y":545.7018132209778,"z":"f2a32f4b.a395c","wires":[["d43666a.f2b7098","9738bd98.25ecc","50861927.da6ba8","a7599cc5.49cd9"]]},{"id":"50861927.da6ba8","type":"save","name":"delete relationship: vf-module","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module:relationship-list\" \n\t\tkey=\"vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t\t\tAND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id \n\t\t\tAND related-to = l3-network\" \n\tforce=\"true\" \n\tlocal-only=\"false\">","comments":"","outputs":1,"x":1495.595199584961,"y":593.6305890083313,"z":"f2a32f4b.a395c","wires":[[]]},{"id":"fef44b3b.61d0e8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'An error occurred while querying vf-module from AnAI with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`\"/>","comments":"","x":881.8570098876953,"y":321.5712857246399,"z":"f2a32f4b.a395c","wires":[]},{"id":"c841e1cb.40476","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":742.5714263916016,"y":419.85714387893677,"z":"f2a32f4b.a395c","wires":[["8ad6d1c9.a9a0c"]]},{"id":"2b097b37.aa27e4","type":"set","name":"Set final indicator to Y","xml":"<set>\n<parameter name=\"ack-final\" value=\"Y\"/>","comments":"","x":502.80956268310547,"y":1053.9524006843567,"z":"f2a32f4b.a395c","wires":[[]]},{"id":"a7599cc5.49cd9","type":"for","name":"for i : tmp.AnAI.vfmodule.relationship","xml":"<for index=\"i\" start=\"0\" end=\"`$tmp.AnAI.vfmodule.relationship-list.relationship_length`\">","comments":"","outputs":1,"x":1515.131004333496,"y":643.095263004303,"z":"f2a32f4b.a395c","wires":[["2c37487d.d71f68"]]},{"id":"2c37487d.d71f68","type":"switchNode","name":"switch: relationship.related-to","xml":"<switch test=\"`$tmp.AnAI.vfmodule.relationship-list.relationship[$i].related-to`\">","comments":"","outputs":1,"x":1824.130973815918,"y":643.8095831871033,"z":"f2a32f4b.a395c","wires":[["adcc0a50.763648"]]},{"id":"adcc0a50.763648","type":"other","name":"l3-network","xml":"<outcome value='l3-network'>","comments":"","outputs":1,"x":2047.130973815918,"y":643.8095831871033,"z":"f2a32f4b.a395c","wires":[["fd90feeb.bd151"]]},{"id":"fd90feeb.bd151","type":"for","name":"for j : tmp.AnAI.vfmodule.relationship-data","xml":"<for index=\"j\" start=\"0\" end=\"`$tmp.AnAI.vfmodule.relationship-list.relationship[$i].relationship-data_length`\">","comments":"","outputs":1,"x":1642.1309661865234,"y":726.4524254798889,"z":"f2a32f4b.a395c","wires":[["b995870e.83a938"]]},{"id":"b995870e.83a938","type":"save","name":"save vf-module relationship: l3-network","xml":"<save plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"vf-module:relationship-list\" \n\t\tkey=\"vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id \n\t\t\tAND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id\" \n\tforce=\"true\" \n\tlocal-only=\"false\">\n\t\n\t<parameter name=\"relationship-list.relationship[0].related-to\" value=\"l3-network\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"l3-network.network-id\" />\n\t<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$tmp.AnAI.vfmodule.relationship-list.relationship[$i].relationship-data[$j].relationship-value`\" />","comments":"","outputs":1,"x":1999.7024230957031,"y":726.5953087806702,"z":"f2a32f4b.a395c","wires":[["cfb16deb.85c16","3cd815da.19e77a"]]},{"id":"cfb16deb.85c16","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":2257.702423095703,"y":726.5953087806702,"z":"f2a32f4b.a395c","wires":[["a65d95ce.02bfa8"]]},{"id":"1a5ea207.1792ee","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":690.4286003112793,"y":321.00001192092896,"z":"f2a32f4b.a395c","wires":[["fef44b3b.61d0e8"]]},{"id":"9738bd98.25ecc","type":"set","name":"set error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`' | An error occurred while saving l3-network relationship with network-id = ' + $service-data.vnf-topology-information.vnf-assignments.vnf-networks[$i].network-id + ' for vf-module with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`\" />\n","comments":"","x":1459.1667251586914,"y":545.6309809684753,"z":"f2a32f4b.a395c","wires":[[]]},{"id":"a65d95ce.02bfa8","type":"set","name":"set error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\" />\n\t<parameter name=\"error-message\" value=\"`$error-message + ' | An error occurred while during rollback of l3-network relationship for vf-module with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`\" />\n","comments":"","x":2455.6667404174805,"y":726.1309533119202,"z":"f2a32f4b.a395c","wires":[[]]},{"id":"34bdca57.146506","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":697.3214263916016,"y":363.440456867218,"z":"f2a32f4b.a395c","wires":[["fef44b3b.61d0e8"]]},{"id":"3cd815da.19e77a","type":"not-found","name":"not-found","xml":"<outcome value='not-found'>\n","comments":"","outputs":1,"x":2267.9881286621094,"y":767.773805141449,"z":"f2a32f4b.a395c","wires":[["a65d95ce.02bfa8"]]},{"id":"4a603bf8.396a34","type":"switchNode","name":"switch ...service-data vnf-networks[]","xml":"<switch test=\"`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`\">","comments":"","outputs":1,"x":543.8095855712891,"y":483.8095455169678,"z":"f2a32f4b.a395c","wires":[["b6182977.6d3518"]]},{"id":"b6182977.6d3518","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":771.2540588378906,"y":483.3372554779053,"z":"f2a32f4b.a395c","wires":[["8329b2ad.be702"]]},{"id":"8329b2ad.be702","type":"set","name":"set service-data vnf-networks[] = 0","xml":"<set>\n<parameter name = \"service-data.vnf-topology-information.vnf-assignments.vnf-networks_length\" value=\"0\" />\n","comments":"","x":992.809667799208,"y":483.33727614084864,"z":"f2a32f4b.a395c","wires":[]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-changedelete.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-changedelete.json
new file mode 100644
index 0000000..2c7d555
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-changedelete.json
@@ -0,0 +1,269 @@
+[
+    {
+        "id": "793c9be.5fc6b64",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 268.7654113769531,
+        "y": 201.6666717529297,
+        "z": "3dd6ebc6.a724f4",
+        "wires": [
+            [
+                "7a4e0a99.334ed4",
+                "e4ca79b3.d28a88",
+                "1cd82265.55c3be",
+                "3ae9090d.f22816",
+                "dec0e9d5.73e028",
+                "d825c0c4.1d4a1",
+                "407cc4f8.57aaec",
+                "af3c9c59.5186d"
+            ]
+        ]
+    },
+    {
+        "id": "4d73e6f.4df7218",
+        "type": "method",
+        "name": "method vnf-topology-changedelete",
+        "xml": "<method rpc='vnf-topology-changedelete' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 329.4320983886719,
+        "y": 127.83333683013916,
+        "z": "3dd6ebc6.a724f4",
+        "wires": [
+            [
+                "793c9be.5fc6b64"
+            ]
+        ]
+    },
+    {
+        "id": "7a4e0a99.334ed4",
+        "type": "switchNode",
+        "name": "switch: order-status = Active",
+        "xml": "<switch test=\"'$service-data.oper-status.order-status == Active'\">\n\n<!--\nleaf order-status {\n\ttype enumeration {\n\t\tenum \"Active\";\n\t\tenum \"PendingAssignment\";\n\t\tenum \"PendingCreate\";\n\t\tenum \"PendingUpdate\";\n\t\tenum \"Deleted\";\n\t}\n}\n-->",
+        "comments": "",
+        "outputs": 1,
+        "x": 564.0987243652344,
+        "y": 259.9998321533203,
+        "z": "3dd6ebc6.a724f4",
+        "wires": [
+            [
+                "ce1b152f.c5c3d8"
+            ]
+        ]
+    },
+    {
+        "id": "20352e7f.4c6aa2",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 399.43206787109375,
+        "y": 81.83334445953369,
+        "z": "3dd6ebc6.a724f4",
+        "wires": [
+            [
+                "4d73e6f.4df7218"
+            ]
+        ]
+    },
+    {
+        "id": "ce1b152f.c5c3d8",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 784.4320983886719,
+        "y": 260.33314514160156,
+        "z": "3dd6ebc6.a724f4",
+        "wires": [
+            [
+                "ba2b0430.95ba08"
+            ]
+        ]
+    },
+    {
+        "id": "6ebec187.42b24",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 236.26541137695312,
+        "y": 81.666672706604,
+        "z": "3dd6ebc6.a724f4",
+        "wires": [
+            [
+                "20352e7f.4c6aa2"
+            ]
+        ]
+    },
+    {
+        "id": "ba2b0430.95ba08",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid last-order-status'/>",
+        "comments": "",
+        "x": 943.7652282714844,
+        "y": 260.33319091796875,
+        "z": "3dd6ebc6.a724f4",
+        "wires": []
+    },
+    {
+        "id": "e4ca79b3.d28a88",
+        "type": "set",
+        "name": "set: order-status = PendingDelete",
+        "xml": "<set>\n\t<parameter name=\"service-data.oper-status.order-status\" value=\"PendingDelete\"/>",
+        "comments": "",
+        "x": 579.265380859375,
+        "y": 421.66664123535156,
+        "z": "3dd6ebc6.a724f4",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "1cd82265.55c3be",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />\n",
+        "comments": "",
+        "x": 525.2654113769531,
+        "y": 588.6666412353516,
+        "z": "3dd6ebc6.a724f4",
+        "wires": []
+    },
+    {
+        "id": "edf99f91.a8ecc",
+        "type": "comment",
+        "name": "Update VNF status to PendingDelete",
+        "info": "",
+        "comments": "",
+        "x": 1137.5987854003906,
+        "y": 72.55556964874268,
+        "z": "3dd6ebc6.a724f4",
+        "wires": []
+    },
+    {
+        "id": "b076f9c8.0ae248",
+        "type": "comment",
+        "name": "VNF-TOPOLOGY-CHANGEDELETE",
+        "info": "",
+        "comments": "",
+        "x": 833.1543121337891,
+        "y": 72.22222900390625,
+        "z": "3dd6ebc6.a724f4",
+        "wires": []
+    },
+    {
+        "id": "2780acb6.663784",
+        "type": "comment",
+        "name": "request-action = DisconnectVNFRequest, svc-action = changedelete",
+        "info": "",
+        "comments": "",
+        "x": 966.0431518554688,
+        "y": 108.3333387374878,
+        "z": "3dd6ebc6.a724f4",
+        "wires": []
+    },
+    {
+        "id": "d825c0c4.1d4a1",
+        "type": "set",
+        "name": "set: last-action ",
+        "xml": "<set>\n\t<parameter name=\"service-data.oper-status.last-action\" value=\"`$service-data.request-information.request-action`\"/>",
+        "comments": "",
+        "x": 522.2654113769531,
+        "y": 475.66664123535156,
+        "z": "3dd6ebc6.a724f4",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "3ae9090d.f22816",
+        "type": "switchNode",
+        "name": "switch:vnf-id   config == input",
+        "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 561.4018096923828,
+        "y": 202.8586196899414,
+        "z": "3dd6ebc6.a724f4",
+        "wires": [
+            [
+                "34619221.3001ae"
+            ]
+        ]
+    },
+    {
+        "id": "34619221.3001ae",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 783.8563232421875,
+        "y": 203.04042434692383,
+        "z": "3dd6ebc6.a724f4",
+        "wires": [
+            [
+                "eb0b61e2.b88"
+            ]
+        ]
+    },
+    {
+        "id": "eb0b61e2.b88",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vnf-id not found'/>",
+        "comments": "",
+        "x": 941.9472274780273,
+        "y": 202.94952201843262,
+        "z": "3dd6ebc6.a724f4",
+        "wires": []
+    },
+    {
+        "id": "dec0e9d5.73e028",
+        "type": "set",
+        "name": "set: last-order-status = order-status",
+        "xml": "<set>\n\t<parameter name=\"service-data.oper-status.last-order-status\" value=\"`$service-data.oper-status.order-status`\"/>",
+        "comments": "",
+        "x": 584.4017639160156,
+        "y": 370.8585968017578,
+        "z": "3dd6ebc6.a724f4",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "407cc4f8.57aaec",
+        "type": "set",
+        "name": "set: service-data = input",
+        "xml": "<set>\n\t<parameter name=\"service-data.\" value=\"vnf-topology-operation-input.\" /> \n",
+        "comments": "",
+        "x": 553.4017639160156,
+        "y": 529.8585357666016,
+        "z": "3dd6ebc6.a724f4",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "af3c9c59.5186d",
+        "type": "save",
+        "name": "update generic-vnf status to pending-delete",
+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\" \n\t\tkey=\"generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id\" \n\tforce=\"true\" \n\tlocal-only=\"false\" >\n\t<parameter name=\"orchestration-status\" value=\"pending-delete\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 611.7352142333984,
+        "y": 315.85854721069336,
+        "z": "3dd6ebc6.a724f4",
+        "wires": [
+            []
+        ]
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-delete.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-delete.json
new file mode 100644
index 0000000..62a8356
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-delete.json
@@ -0,0 +1 @@
+[{"id":"b7bd68dc.2f2598","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />","comments":"","x":442.83336639404297,"y":580.250039100647,"z":"8bafd60a.f9e8e8","wires":[]},{"id":"29350296.bd8dfe","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":219.83331298828125,"y":173.8333282470703,"z":"8bafd60a.f9e8e8","wires":[["d2e1aff0.abd97","b7bd68dc.2f2598","1100f729.686421","f7dbd114.d5b85","99a80553.587948","e47598ee.1b6f68","ca1dc7fb.a35a5"]]},{"id":"d2e1aff0.abd97","type":"set","name":"set: order-status = Deleted","xml":"<set>\n\t<parameter name=\"service-data.oper-status.order-status\" value=\"Deleted\"/>","comments":"","x":483.83336639404297,"y":407.250039100647,"z":"8bafd60a.f9e8e8","wires":[]},{"id":"f243526a.6db178","type":"method","name":"method vnf-topology-delete","xml":"<method rpc='vnf-topology-delete' mode='sync'>\n","comments":"","outputs":1,"x":251.5,"y":122.99999237060547,"z":"8bafd60a.f9e8e8","wires":[["29350296.bd8dfe"]]},{"id":"163c6981.d4f7ee","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":368.16663360595703,"y":71.00000286102295,"z":"8bafd60a.f9e8e8","wires":[["f243526a.6db178"]]},{"id":"1c4e666f.583c8a","type":"dgstart","name":"DGSTART","outputs":1,"x":158.33331298828125,"y":70.83332824707031,"z":"8bafd60a.f9e8e8","wires":[["163c6981.d4f7ee"]]},{"id":"499d2345.e96514","type":"other","name":"false","xml":"<outcome value='false'>","comments":"","outputs":1,"x":1146.757640838623,"y":255.29546451568604,"z":"8bafd60a.f9e8e8","wires":[["829c09fd.4a37f8"]]},{"id":"829c09fd.4a37f8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid order-status'/>","comments":"","x":1299.0907707214355,"y":255.29552555084229,"z":"8bafd60a.f9e8e8","wires":[]},{"id":"99a80553.587948","type":"set","name":"set: last-action ","xml":"<set>\n\t<parameter name=\"service-data.oper-status.last-action\" value=\"`$service-data.request-information.request-action`\"/>","comments":"","x":445.0909652709961,"y":450.7956323623657,"z":"8bafd60a.f9e8e8","wires":[]},{"id":"1100f729.686421","type":"switchNode","name":"switch:vnf-id   config == input","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`\">","comments":"","outputs":1,"x":488.97721099853516,"y":173.32087326049805,"z":"8bafd60a.f9e8e8","wires":[["1fa6b0bd.a10757"]]},{"id":"1fa6b0bd.a10757","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":690.431770324707,"y":173.50270080566406,"z":"8bafd60a.f9e8e8","wires":[["7a028d33.c7867c"]]},{"id":"7a028d33.c7867c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vnf-id not found'/>","comments":"","x":854.0226898193359,"y":173.6618013381958,"z":"8bafd60a.f9e8e8","wires":[]},{"id":"f7dbd114.d5b85","type":"set","name":"set: last-order-status = order-status","xml":"<set>\n\t<parameter name=\"service-data.oper-status.last-order-status\" value=\"`$service-data.oper-status.order-status`\"/>","comments":"","x":510.2273178100586,"y":365.987587928772,"z":"8bafd60a.f9e8e8","wires":[]},{"id":"e47598ee.1b6f68","type":"set","name":"Clear vnf topology","xml":"<set>\n\t<parameter name=\"service-data.\" value=\"\" /> \n","comments":"","x":454.2273178100586,"y":490.987587928772,"z":"8bafd60a.f9e8e8","wires":[]},{"id":"588037ab.411398","type":"switchNode","name":"switch: order-status = Active","xml":"<switch test=\"`$service-data.oper-status.order-status == Active`\">","comments":"","outputs":1,"x":944.9405403137207,"y":255.59526538848877,"z":"8bafd60a.f9e8e8","wires":[["499d2345.e96514"]]},{"id":"ca1dc7fb.a35a5","type":"set","name":"Set final indicator to Y","xml":"<set>\n<parameter name=\"ack-final\" value=\"Y\"/>","comments":"","x":465.5476837158203,"y":536.1905126571655,"z":"8bafd60a.f9e8e8","wires":[]},{"id":"3bd3c149.991f8e","type":"switchNode","name":"switch: INPUT aic-cloud-region","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.aic-cloud-region`\">","comments":"","outputs":1,"x":497.83336639404297,"y":255.9166669845581,"z":"8bafd60a.f9e8e8","wires":[["29f9627f.944e3e"]]},{"id":"6f4819ac.e92ae8","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":729.5833625793457,"y":303.55952072143555,"z":"8bafd60a.f9e8e8","wires":[["cc9b109c.a783d8"]]},{"id":"cc9b109c.a783d8","type":"switchNode","name":"switch: INPUT aic-clli","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.aic-clli`\">","comments":"","outputs":1,"x":926.5834045410156,"y":303.6666889190674,"z":"8bafd60a.f9e8e8","wires":[["36c5c0c5.92b1b","382df0cf.996808"]]},{"id":"29f9627f.944e3e","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":729.083423614502,"y":255.66668128967285,"z":"8bafd60a.f9e8e8","wires":[["588037ab.411398"]]},{"id":"36c5c0c5.92b1b","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1121.583351135254,"y":304.4166622161865,"z":"8bafd60a.f9e8e8","wires":[["c9b05e7f.f314d8"]]},{"id":"c9b05e7f.f314d8","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Either aic-cloud-region or aic-clli must be present'/>","comments":"","x":1294.083351135254,"y":304.9166622161865,"z":"8bafd60a.f9e8e8","wires":[]},{"id":"382df0cf.996808","type":"other","name":"other","xml":"<outcome value='Other'>\n","comments":"","outputs":1,"x":1122.833351135254,"y":346.9166622161865,"z":"8bafd60a.f9e8e8","wires":[["b2a8ee0.050159"]]},{"id":"ad2e2232.a5be28","type":"save","name":"delete generic-vnf-l3-network","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" \n\tresource=\"generic-vnf-l3-network\" \n\tkey=\"DELETE FROM GENERIC_VNF_L3_NETWORK WHERE vnf_id = $service-data.vnf-id\" \n\tforce=\"true\" >\n\n","comments":"","outputs":1,"x":1245.333381652832,"y":469.4166851043701,"z":"8bafd60a.f9e8e8","wires":[["fdbba735.e0de7"]]},{"id":"e9bd3f49.9f08a8","type":"save","name":"delete GammaResource: generic-vnf","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" \n\tresource=\"generic-vnf\" \n\tkey=\"DELETE FROM GENERIC_VNF where vnf_id = $service-data.vnf-id\" \n\tlocal-only=\"true\" \n\tforce=\"true\" >\n\n","comments":"","outputs":1,"x":1268.992546081543,"y":555.7879467010498,"z":"8bafd60a.f9e8e8","wires":[["fdbba735.e0de7"]]},{"id":"26073509.d26ec2","type":"save","name":"delete generic-vnf-vserver","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource\" \n\tresource=\"generic-vnf-vserver\" \n\tkey=\"DELETE FROM GENERIC_VNF_VSERVER where vnf_id = $service-data.vnf-id\" \n\tforce=\"true\" >\n\n","comments":"","outputs":1,"x":1236.742546081543,"y":510.87122917175293,"z":"8bafd60a.f9e8e8","wires":[["fdbba735.e0de7"]]},{"id":"579bfb77.6bce7c","type":"switchNode","name":"switch: order-status = PendingDelete","xml":"<switch test=\"'$service-data.oper-status.order-status == PendingDelete'\">\n\n<!--\nleaf order-status {\n\ttype enumeration {\n\t\tenum \"Active\";\n\t\tenum \"PendingAssignment\";\n\t\tenum \"PendingCreate\";\n\t\tenum \"PendingUpdate\";\n\t\tenum \"Deleted\";\n\t}\n}\n-->","comments":"","outputs":1,"x":1268.583366394043,"y":427.66666984558105,"z":"8bafd60a.f9e8e8","wires":[["aabc86d2.b53c08"]]},{"id":"aabc86d2.b53c08","type":"other","name":"false","xml":"<outcome value='false'>","comments":"","outputs":1,"x":1497.9167404174805,"y":427.9999828338623,"z":"8bafd60a.f9e8e8","wires":[["1d00dfdf.4c452"]]},{"id":"1d00dfdf.4c452","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid order-status'/>","comments":"","x":1650.249870300293,"y":428.00004386901855,"z":"8bafd60a.f9e8e8","wires":[]},{"id":"b2a8ee0.050159","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":1015.3333511352539,"y":427.9166622161865,"z":"8bafd60a.f9e8e8","wires":[["ad2e2232.a5be28","e9bd3f49.9f08a8","26073509.d26ec2","14ecdcf0.08e2c3"]]},{"id":"fdbba735.e0de7","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1531.583351135254,"y":510.4166622161865,"z":"8bafd60a.f9e8e8","wires":[["64bf16b1.96428"]]},{"id":"64bf16b1.96428","type":"set","name":"set: error-message","xml":"<set>\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"An error occurred while deleting generic-vnf, generic-vnf-l3-netweork or generic-vnf-vserver from GammaResource\"/>","comments":"","x":1714.0833740234375,"y":510.41667079925537,"z":"8bafd60a.f9e8e8","wires":[]},{"id":"14ecdcf0.08e2c3","type":"save","name":"delete AnAI: generic-vnf","xml":"<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\tresource=\"generic-vnf\" \n\tkey=\"generic-vnf.vnf-id = $service-data.vnf-id\" \n\tlocal-only=\"false\" \n\tforce=\"true\" >\n\n","comments":"","outputs":1,"x":1228.4445495605469,"y":600.1666746139526,"z":"8bafd60a.f9e8e8","wires":[["9832e19f.ecb298"]]},{"id":"9832e19f.ecb298","type":"failure","name":"failure","xml":"<outcome value='failure'>\n","comments":"","outputs":1,"x":1420.4241561889648,"y":600.2953777313232,"z":"8bafd60a.f9e8e8","wires":[["fbabc3e8.8b39d"]]},{"id":"fbabc3e8.8b39d","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='500'/>\n\t<parameter name='error-message' value=\"`'Failed to delete generic-vnf from AnAI with vnf-id = '+ $service-data.vnf-id`\"/>","comments":"","x":1578.5906829833984,"y":600.378758430481,"z":"8bafd60a.f9e8e8","wires":[]},{"id":"94222545.335fe8","type":"comment","name":"NOT checking order-status intentionally","info":"","comments":"","x":1372.833366394043,"y":391.9166679382324,"z":"8bafd60a.f9e8e8","wires":[]},{"id":"6deab84a.46fd68","type":"comment","name":"Removing check for aic-cllu in 1707","info":"ks220y: Confirmed with Pat Cheung, as MSO won't send aic-clli","comments":"","x":816.1235427856445,"y":341.9444580078125,"z":"8bafd60a.f9e8e8","wires":[]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-operation.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-operation.json
new file mode 100644
index 0000000..2cb2e21
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-operation.json
@@ -0,0 +1 @@
+[{"id":"7c224822.de0bf8","type":"dgstart","name":"DGSTART","outputs":1,"x":151.42857360839844,"y":77.14286041259766,"z":"18357c4f.d20534","wires":[["4450b5a4.63b3bc"]]},{"id":"d95979ed.a93438","type":"method","name":"vnf-topology-operation","xml":"<method rpc='vnf-topology-operation' mode='sync'>\n","comments":"","outputs":1,"x":218.92857360839844,"y":137.6507921218872,"z":"18357c4f.d20534","wires":[["4d30e664.ab5478"]]},{"id":"4d30e664.ab5478","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":237.00003051757812,"y":200.14287567138672,"z":"18357c4f.d20534","wires":[["f2e393f6.829c1"]]},{"id":"4450b5a4.63b3bc","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":359.03968048095703,"y":77.92064476013184,"z":"18357c4f.d20534","wires":[["d95979ed.a93438"]]},{"id":"f2e393f6.829c1","type":"switchNode","name":"switch: INPUT use-preload","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.use-preload`\">","comments":"","outputs":1,"x":482.1428680419922,"y":200.428560256958,"z":"18357c4f.d20534","wires":[["becf3fd1.846a7","e10f53ce.5364a","9db68f85.0badf"]]},{"id":"becf3fd1.846a7","type":"other","name":"Y","xml":"<outcome value='Y'>","comments":"","outputs":1,"x":729.3969612121582,"y":171.23642539978027,"z":"18357c4f.d20534","wires":[["34569cc.b53e864"]]},{"id":"e10f53ce.5364a","type":"other","name":"N","xml":"<outcome value='N'>","comments":"","outputs":1,"x":729.0159873962402,"y":272.36340522766113,"z":"18357c4f.d20534","wires":[["57f77e4c.ac732"]]},{"id":"34569cc.b53e864","type":"call","name":"call: vnf-topology-preload-operation","xml":"<call module='VNF-API' rpc='vnf-topology-preload-operation' mode='sync' >","comments":"","outputs":1,"x":990.8571853637695,"y":201.00000953674316,"z":"18357c4f.d20534","wires":[[]]},{"id":"57f77e4c.ac732","type":"call","name":"call: vnf-topology-automated-operation","xml":"<call module='VNF-API' rpc='vnf-topology-automated-operation' mode='sync' >","comments":"","outputs":1,"x":1000.8571548461914,"y":272.42856311798096,"z":"18357c4f.d20534","wires":[[]]},{"id":"9db68f85.0badf","type":"other","name":"Null","xml":"<outcome value=''>","comments":"","outputs":1,"x":727.5714492797852,"y":223.14285564422607,"z":"18357c4f.d20534","wires":[["34569cc.b53e864"]]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-preload-operation.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-preload-operation.json
new file mode 100644
index 0000000..af0cd9e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-preload-operation.json
@@ -0,0 +1 @@
+[{"id":"27382898.127288","type":"dgstart","name":"DGSTART","outputs":1,"x":105.71430206298828,"y":20.000000953674316,"z":"92a428a4.4be018","wires":[["da86500.c82cab"]]},{"id":"da86500.c82cab","type":"service-logic","name":"VNF-API ${project.version}","module":"VNF-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='VNF-API' version='${project.version}'>","outputs":1,"x":313.3254089355469,"y":20.777785301208496,"z":"92a428a4.4be018","wires":[["45974f49.3e0bb"]]},{"id":"45974f49.3e0bb","type":"method","name":"vnf-topology-preload-operation","xml":"<method rpc='vnf-topology-preload-operation' mode='sync'>\n","comments":"","outputs":1,"x":232.92855834960938,"y":80.79364585876465,"z":"92a428a4.4be018","wires":[["2e83e166.81c9ce"]]},{"id":"19e5b740.1bbdb9","type":"switchNode","name":"switch: svc-action","xml":"<switch test=\"`$vnf-topology-operation-input.sdnc-request-header.svc-action`\">\n<!--\nleaf svc-action { \n\ttype enumeration { \n\t\tenum \"reserve\";\n\t\tenum \"assign\";\n\t\tenum \"activate\";  // equal to commit\n\t\tenum \"delete\";\t  // equal to commit\n\t\tenum \"changeassign\";\n\t\tenum \"changedelete\";\n\t\tenum \"rollback\";\n\t}\n}\n-->\n\n","comments":"","outputs":1,"x":364.4126968383789,"y":723.3332614898682,"z":"92a428a4.4be018","wires":[["bc453dc4.37403","f70ce018.29f22","6d06e616.179dc8","fdd37020.a7e9d","8b547a17.7f8778","37529cbb.9f60c4"]]},{"id":"bc453dc4.37403","type":"other","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":579.9960556030273,"y":1140.083420753479,"z":"92a428a4.4be018","wires":[["66ea35b2.ce742c"]]},{"id":"f70ce018.29f22","type":"other","name":"assign","xml":"<outcome value='assign'>","comments":"","outputs":1,"x":581.9682540893555,"y":723.3332672119141,"z":"92a428a4.4be018","wires":[["a5973f66.bde0b"]]},{"id":"66ea35b2.ce742c","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='svc-action not recognized'/>\n","comments":"","x":751.9960556030273,"y":1140.083420753479,"z":"92a428a4.4be018","wires":[]},{"id":"6d06e616.179dc8","type":"other","name":"activate","xml":"<outcome value='activate'>","comments":"","outputs":1,"x":584.9682693481445,"y":812.5832557678223,"z":"92a428a4.4be018","wires":[["6fc64ea9.47d27"]]},{"id":"fdd37020.a7e9d","type":"other","name":"rollback","xml":"<outcome value='rollback'>","comments":"","outputs":1,"x":584.7182693481445,"y":854.8332567214966,"z":"92a428a4.4be018","wires":[["e81e121b.9d7d4"]]},{"id":"37529cbb.9f60c4","type":"other","name":"changeassign","xml":"<outcome value='changeassign'>","comments":"","outputs":1,"x":603.4682693481445,"y":768.8332576751709,"z":"92a428a4.4be018","wires":[["4b2ba6a6.5bfb58"]]},{"id":"8b547a17.7f8778","type":"other","name":"delete","xml":"<outcome value='delete'>","comments":"","outputs":1,"x":581.0794143676758,"y":1093.6944961547852,"z":"92a428a4.4be018","wires":[["463ecdea.916a04"]]},{"id":"dab3d2fe.9b3b8","type":"call","name":"call: vnf-topology-assign","xml":"<call module='VNF-API' rpc='vnf-topology-assign' mode='sync' >","comments":"","outputs":1,"x":974.2182540893555,"y":723.3332653045654,"z":"92a428a4.4be018","wires":[[]]},{"id":"90793683.10ad78","type":"other","name":"changedelete","xml":"<outcome value='changedelete'>","comments":"","outputs":1,"x":601.7182998657227,"y":952.5832653045654,"z":"92a428a4.4be018","wires":[["99083217.f89ae"]]},{"id":"852e8019.fd2ce","type":"call","name":"call: vnf-topology-changeassign","xml":"<call module='VNF-API' rpc='vnf-topology-changeassign' mode='sync' >","comments":"","outputs":1,"x":997.468376159668,"y":767.3332653045654,"z":"92a428a4.4be018","wires":[[]]},{"id":"d6877835.c8b078","type":"call","name":"call: vnf-topology-rollback","xml":"<call module='VNF-API' rpc='vnf-topology-rollback' mode='sync' >","comments":"","outputs":1,"x":979.218376159668,"y":854.8332672119141,"z":"92a428a4.4be018","wires":[[]]},{"id":"463ecdea.916a04","type":"call","name":"call: vnf-topology-delete","xml":"<call module='VNF-API' rpc='vnf-topology-delete' mode='sync' >","comments":"","outputs":1,"x":789.8294830322266,"y":1093.6944971084595,"z":"92a428a4.4be018","wires":[[]]},{"id":"7d86d5e2.f9dc1c","type":"call","name":"call: vnf-topology-activate","xml":"<call module='VNF-API' rpc='vnf-topology-activate' mode='sync' >","comments":"","outputs":1,"x":978.7183685302734,"y":811.833261013031,"z":"92a428a4.4be018","wires":[[]]},{"id":"18365e43.db5f52","type":"call","name":"call: vnf-topology-changedelete","xml":"<call module='VNF-API' rpc='vnf-topology-changedelete' mode='sync' >","comments":"","outputs":1,"x":984.2183837890625,"y":1043.583267211914,"z":"92a428a4.4be018","wires":[[]]},{"id":"edaa795d.815648","type":"comment","name":"vnf-topology-preload-operation","info":"","comments":"","x":708.6031723022461,"y":59.587297439575195,"z":"92a428a4.4be018","wires":[]},{"id":"2e83e166.81c9ce","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":169.8571548461914,"y":138.0000057220459,"z":"92a428a4.4be018","wires":[["e10d753d.1a5108","e57664b7.a0cb78","19e5b740.1bbdb9","6ee4c55.7765b3c"]]},{"id":"e10d753d.1a5108","type":"switchNode","name":"switch: INPUT vnf-name","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-name`\">","comments":"","outputs":1,"x":418.36509704589844,"y":138.15870761871338,"z":"92a428a4.4be018","wires":[["f6d54468.393c88","7be45943.cc6978"]]},{"id":"f6d54468.393c88","type":"outcome","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":632.3650970458984,"y":138.15870761871338,"z":"92a428a4.4be018","wires":[["d8f7b15c.f03e6"]]},{"id":"7be45943.cc6978","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":633.3651428222656,"y":185.58727836608887,"z":"92a428a4.4be018","wires":[["b1504b8f.bb2e18"]]},{"id":"d8f7b15c.f03e6","type":"switchNode","name":"switch: PRELOAD vnf-name","xml":"<switch test=\"`$preload-data.vnf-topology-information.vnf-topology-identifier.vnf-name`\">","comments":"","outputs":1,"x":843.3650970458984,"y":138.15870761871338,"z":"92a428a4.4be018","wires":[["6b9d4424.f09efc","99560218.ef1e6"]]},{"id":"6b9d4424.f09efc","type":"outcome","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1054.3650970458984,"y":138.15870761871338,"z":"92a428a4.4be018","wires":[["b2beb900.1fb638"]]},{"id":"99560218.ef1e6","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1055.3651428222656,"y":184.58727836608887,"z":"92a428a4.4be018","wires":[["34e1e6d9.6c147a"]]},{"id":"b2beb900.1fb638","type":"switchNode","name":"switch: vnf-name INPUT == PRELOAD","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-name == $preload-data.vnf-topology-information.vnf-topology-identifier.vnf-name`\">","comments":"","outputs":1,"x":1302.3650817871094,"y":138.15870571136475,"z":"92a428a4.4be018","wires":[["4acdda61.594564"]]},{"id":"4acdda61.594564","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1548.6984481811523,"y":137.825608253479,"z":"92a428a4.4be018","wires":[["4f6229f6.67b498"]]},{"id":"4f6229f6.67b498","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='request.vnf-name not found in preload-data'/>","comments":"","x":1707.3650741577148,"y":137.15870761871338,"z":"92a428a4.4be018","wires":[]},{"id":"34e1e6d9.6c147a","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='No preload data found to match vnf-name'/>","comments":"","x":1222.3651428222656,"y":184.58727836608887,"z":"92a428a4.4be018","wires":[]},{"id":"b1504b8f.bb2e18","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vnf-name is required'/>","comments":"","x":794.8651428222656,"y":185.83727836608887,"z":"92a428a4.4be018","wires":[]},{"id":"e57664b7.a0cb78","type":"switchNode","name":"switch: INPUT vnf-type","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-type`\">","comments":"","outputs":1,"x":410.2222442626953,"y":257.5872712135315,"z":"92a428a4.4be018","wires":[["e531261b.ed3c88","b1342015.3408b"]]},{"id":"e531261b.ed3c88","type":"outcome","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":627.2222366333008,"y":258.5872712135315,"z":"92a428a4.4be018","wires":[["5edfa51c.3acd5c"]]},{"id":"b1342015.3408b","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":628.2222785949707,"y":308.87298822402954,"z":"92a428a4.4be018","wires":[["9119f902.c4ce58"]]},{"id":"5edfa51c.3acd5c","type":"switchNode","name":"switch: PRELOAD vnf-type","xml":"<switch test=\"`$preload-data.vnf-topology-information.vnf-topology-identifier.vnf-type`\">","comments":"","outputs":1,"x":838.2222366333008,"y":258.5872712135315,"z":"92a428a4.4be018","wires":[["306c4502.a9f18a","457d774f.08d388"]]},{"id":"306c4502.a9f18a","type":"outcome","name":"Other","xml":"<outcome value='Other'>","comments":"","outputs":1,"x":1049.2222366333008,"y":258.5872712135315,"z":"92a428a4.4be018","wires":[["713425d2.ff15dc"]]},{"id":"457d774f.08d388","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1050.2222785949707,"y":307.87298822402954,"z":"92a428a4.4be018","wires":[["4e5864e1.616eac"]]},{"id":"9119f902.c4ce58","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vnf-type is required'/>","comments":"","x":789.7222785949707,"y":309.12298822402954,"z":"92a428a4.4be018","wires":[]},{"id":"713425d2.ff15dc","type":"switchNode","name":"switch: vnf-type INPUT == PRELOAD","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-type == $preload-data.vnf-topology-information.vnf-topology-identifier.vnf-type`\">","comments":"","outputs":1,"x":1297.2222137451172,"y":258.5872712135315,"z":"92a428a4.4be018","wires":[["7851a2cb.dac9cc"]]},{"id":"4e5864e1.616eac","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='No preload data found to match vnf-type'/>","comments":"","x":1217.222255706787,"y":307.87298822402954,"z":"92a428a4.4be018","wires":[]},{"id":"7851a2cb.dac9cc","type":"outcomeFalse","name":"false","xml":"<outcome value='false'>\n","comments":"","outputs":1,"x":1546.2222137451172,"y":258.9207673072815,"z":"92a428a4.4be018","wires":[["352d87ea.74b988"]]},{"id":"352d87ea.74b988","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='request.vnf-type not found in preload-data'/>","comments":"","x":1704.8888397216797,"y":258.25386667251587,"z":"92a428a4.4be018","wires":[]},{"id":"6ee4c55.7765b3c","type":"switchNode","name":"switch: INPUT vnf-id","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-id`\">","comments":"","outputs":1,"x":405.75806427001953,"y":374.90874195098877,"z":"92a428a4.4be018","wires":[["a668f8f8.c2e6e8","36879ada.5a4b76"]]},{"id":"36879ada.5a4b76","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":588.7580184936523,"y":424.9087247848511,"z":"92a428a4.4be018","wires":[["caf5e229.ed387"]]},{"id":"a668f8f8.c2e6e8","type":"outcome","name":"0","xml":"<outcome value='0'>","comments":"","outputs":1,"x":587.9009628295898,"y":374.4801778793335,"z":"92a428a4.4be018","wires":[["caf5e229.ed387"]]},{"id":"caf5e229.ed387","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='vf-modules vnf-id cannot be NULL or 0'/>","comments":"","x":763.6152267456055,"y":425.1944456100464,"z":"92a428a4.4be018","wires":[]},{"id":"bd1afb26.982af8","type":"switchNode","name":"switch: INPUT generic-vnf-id","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.generic-vnf-id`\">","comments":"","outputs":1,"x":1223.8295059204102,"y":489.05160427093506,"z":"92a428a4.4be018","wires":[["fa68e5d5.3ea798","cbda632b.05b6"]]},{"id":"cbda632b.05b6","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1456.829475402832,"y":527.1944417953491,"z":"92a428a4.4be018","wires":[["4e5d27c4.668018"]]},{"id":"fa68e5d5.3ea798","type":"outcome","name":"0","xml":"<outcome value='0'>","comments":"","outputs":1,"x":1455.9724044799805,"y":489.6230401992798,"z":"92a428a4.4be018","wires":[["4e5d27c4.668018"]]},{"id":"4e5d27c4.668018","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='generic-vnf-id cannot be NULL or 0'/>","comments":"","x":1610.6866836547852,"y":527.4801626205444,"z":"92a428a4.4be018","wires":[]},{"id":"92006f83.303b6","type":"switchNode","name":"switch: INPUT generic-vnf-name","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.generic-vnf-name`\">","comments":"","outputs":1,"x":1235.5795059204102,"y":570.0516042709351,"z":"92a428a4.4be018","wires":[["cae82f17.dd03f"]]},{"id":"cae82f17.dd03f","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1453.579475402832,"y":570.1944417953491,"z":"92a428a4.4be018","wires":[["e4890c61.433f"]]},{"id":"e4890c61.433f","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='generic-vnf-name cannot be NULL'/>","comments":"","x":1607.4366836547852,"y":570.4801626205444,"z":"92a428a4.4be018","wires":[]},{"id":"844204d8.c22708","type":"switchNode","name":"switch: INPUT generic-vnf-type","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.generic-vnf-type`\">","comments":"","outputs":1,"x":1229.8295059204102,"y":614.0516042709351,"z":"92a428a4.4be018","wires":[["b35bce0.f21be3"]]},{"id":"b35bce0.f21be3","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1447.829475402832,"y":614.1944417953491,"z":"92a428a4.4be018","wires":[["d570b3ad.3533e"]]},{"id":"d570b3ad.3533e","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='generic-vnf-type cannot be NULL'/>","comments":"","x":1601.6866836547852,"y":614.4801626205444,"z":"92a428a4.4be018","wires":[]},{"id":"b87379e9.53f3e8","type":"block","name":"block: atomic","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":941.3573303222656,"y":488.60720443725586,"z":"92a428a4.4be018","wires":[["bd1afb26.982af8","92006f83.303b6","844204d8.c22708","450707b1.858888"]]},{"id":"6fc64ea9.47d27","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":733.3571624755859,"y":812.0000095367432,"z":"92a428a4.4be018","wires":[["b87379e9.53f3e8","7d86d5e2.f9dc1c"]]},{"id":"4b2ba6a6.5bfb58","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":762.1071624755859,"y":768.2500095367432,"z":"92a428a4.4be018","wires":[["b87379e9.53f3e8","852e8019.fd2ce"]]},{"id":"e81e121b.9d7d4","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":734.6071624755859,"y":854.5000104904175,"z":"92a428a4.4be018","wires":[["d6877835.c8b078","b87379e9.53f3e8"]]},{"id":"a5973f66.bde0b","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":752.1071624755859,"y":723.2500114440918,"z":"92a428a4.4be018","wires":[["b87379e9.53f3e8","dab3d2fe.9b3b8"]]},{"id":"4038275c.842618","type":"comment","name":"changedelete is for 1604 VNF ONLY","info":"","comments":"","x":1038.857162475586,"y":903.7500133514404,"z":"92a428a4.4be018","wires":[]},{"id":"450707b1.858888","type":"switchNode","name":"switch: INPUT aic-cloud-region","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.aic-cloud-region`\">","comments":"","outputs":1,"x":1229.1072082519531,"y":656.6071491241455,"z":"92a428a4.4be018","wires":[["9cbb01c7.83921"]]},{"id":"9cbb01c7.83921","type":"outcome","name":"NULL","xml":"<outcome value=''>","outputs":1,"x":1447.107177734375,"y":656.7499866485596,"z":"92a428a4.4be018","wires":[["e698a55e.3f6698"]]},{"id":"e698a55e.3f6698","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='aic-cloud-region cannot be NULL'/>","comments":"","x":1600.9643859863281,"y":657.0357074737549,"z":"92a428a4.4be018","wires":[]},{"id":"4636fdf4.bf5944","type":"switchNode","name":"switch: INPUT aic-cloud-region","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.aic-cloud-region`\">","comments":"","outputs":1,"x":982.6071662902832,"y":953.0000133514404,"z":"92a428a4.4be018","wires":[["8e8be05f.50d97"]]},{"id":"8e8be05f.50d97","type":"outcome","name":"other","xml":"<outcome value='other'>","comments":"","outputs":1,"x":1200.607135772705,"y":953.1428508758545,"z":"92a428a4.4be018","wires":[["5fc9284e.ceef08"]]},{"id":"5fc9284e.ceef08","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='aic-cloud-region can not be present for 1604 VNF changedelete'/>","comments":"","x":1354.4643440246582,"y":953.4285717010498,"z":"92a428a4.4be018","wires":[]},{"id":"1576a27c.acc86e","type":"switchNode","name":"switch: INPUT aic-clli","xml":"<switch test=\"`$vnf-topology-operation-input.vnf-request-information.aic-clli`\">","comments":"","outputs":1,"x":952.6071853637695,"y":996.5000276565552,"z":"92a428a4.4be018","wires":[["bb182be9.4c74d8"]]},{"id":"bb182be9.4c74d8","type":"outcome","name":"NULL","xml":"<outcome value=''>","comments":"","outputs":1,"x":1134.6071548461914,"y":996.6428651809692,"z":"92a428a4.4be018","wires":[["4b5b253c.5dcfcc"]]},{"id":"4b5b253c.5dcfcc","type":"returnFailure","name":"return failure","xml":"<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='aic-cloud-region can not be present for 1604 VNF changedelete'/>","comments":"","x":1288.4643630981445,"y":996.9285860061646,"z":"92a428a4.4be018","wires":[]},{"id":"99083217.f89ae","type":"block","name":"block","xml":"<block atomic=\"true\">\n","atomic":"false","comments":"","outputs":1,"x":763.8571662902832,"y":952.7500133514404,"z":"92a428a4.4be018","wires":[["4636fdf4.bf5944","1576a27c.acc86e","18365e43.db5f52"]]},{"id":"99f9cba3.9ea678","type":"comment","name":"Removing outcome for changeDelete in 1707","info":"ks220y: Confirmed with Pat Cheung, as MSO is not at all calling with this svc action","comments":"","x":696.1904373168945,"y":911.4815158843994,"z":"92a428a4.4be018","wires":[]}]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-rollback.json b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-rollback.json
new file mode 100644
index 0000000..65a828d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/json/VNF-API_vnf-topology-rollback.json
@@ -0,0 +1,292 @@
+[
+    {
+        "id": "91e51a78.f2f898",
+        "type": "comment",
+        "name": "vnf-topology-rollback",
+        "info": "",
+        "comments": "",
+        "x": 744.3209228515625,
+        "y": 66.54320526123047,
+        "z": "da6e10f.d63acf",
+        "wires": []
+    },
+    {
+        "id": "cf768572.2720b8",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 167.79322814941406,
+        "y": 531.182092666626,
+        "z": "da6e10f.d63acf",
+        "wires": [
+            [
+                "38ee8eff.5172c2"
+            ]
+        ]
+    },
+    {
+        "id": "685886bd.6497f8",
+        "type": "method",
+        "name": "method vnf-topology-rollback",
+        "xml": "<method rpc='vnf-topology-rollback' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 180.65435028076172,
+        "y": 125.26542377471924,
+        "z": "da6e10f.d63acf",
+        "wires": [
+            [
+                "e765cc09.203e5"
+            ]
+        ]
+    },
+    {
+        "id": "9497dff0.cd216",
+        "type": "service-logic",
+        "name": "VNF-API ${project.version}",
+        "module": "VNF-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='VNF-API' version='${project.version}'>",
+        "outputs": 1,
+        "x": 329.6543884277344,
+        "y": 77.15432167053223,
+        "z": "da6e10f.d63acf",
+        "wires": [
+            [
+                "685886bd.6497f8"
+            ]
+        ]
+    },
+    {
+        "id": "bd68af1b.bf9c3",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 126.48766326904297,
+        "y": 77.09875869750977,
+        "z": "da6e10f.d63acf",
+        "wires": [
+            [
+                "9497dff0.cd216"
+            ]
+        ]
+    },
+    {
+        "id": "cdbdf7d4.379e78",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />",
+        "comments": "",
+        "x": 489.3766670227051,
+        "y": 447.2627954483032,
+        "z": "da6e10f.d63acf",
+        "wires": []
+    },
+    {
+        "id": "c94fe78d.f21d78",
+        "type": "set",
+        "name": "set: order-status = Deleted",
+        "xml": "<set>\n\t<parameter name=\"service-data.oper-status.order-status\" value=\"Deleted\"/>",
+        "comments": "",
+        "x": 526.2377548217773,
+        "y": 318.2627754211426,
+        "z": "da6e10f.d63acf",
+        "wires": []
+    },
+    {
+        "id": "77ddff10.81a9e",
+        "type": "switchNode",
+        "name": "switch: order-status = PendingCreate",
+        "xml": "<switch test=\"`$service-data.oper-status.order-status == PendingCreate`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 559.0786972045898,
+        "y": 232.39155769348145,
+        "z": "da6e10f.d63acf",
+        "wires": [
+            [
+                "1dbee524.28393b"
+            ]
+        ]
+    },
+    {
+        "id": "1dbee524.28393b",
+        "type": "other",
+        "name": "false",
+        "xml": "<outcome value='false'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 790.6620788574219,
+        "y": 232.22486972808838,
+        "z": "da6e10f.d63acf",
+        "wires": [
+            [
+                "a0f6ee02.fe089"
+            ]
+        ]
+    },
+    {
+        "id": "a0f6ee02.fe089",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value='Invalid order-status'/>",
+        "comments": "",
+        "x": 942.9952087402344,
+        "y": 232.22493076324463,
+        "z": "da6e10f.d63acf",
+        "wires": []
+    },
+    {
+        "id": "712c6030.e56b2",
+        "type": "set",
+        "name": "set: last-action ",
+        "xml": "<set>\n\t<parameter name=\"service-data.oper-status.last-action\" value=\"`$service-data.request-information.request-action`\"/>",
+        "comments": "",
+        "x": 487.9954490661621,
+        "y": 360.5583686828613,
+        "z": "da6e10f.d63acf",
+        "wires": []
+    },
+    {
+        "id": "aa95e846.1b2478",
+        "type": "outcomeFalse",
+        "name": "false",
+        "xml": "<outcome value='false'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 779.3362731933594,
+        "y": 185.18211460113525,
+        "z": "da6e10f.d63acf",
+        "wires": [
+            [
+                "4527a17.6e2476"
+            ]
+        ]
+    },
+    {
+        "id": "4527a17.6e2476",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n\t<parameter name='error-code' value='400'/>\n\t<parameter name='error-message' value=\"`'vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' not found in config tree'`\"/>",
+        "comments": "",
+        "x": 942.4270935058594,
+        "y": 185.59121799468994,
+        "z": "da6e10f.d63acf",
+        "wires": []
+    },
+    {
+        "id": "9ab6d07b.bdd0c",
+        "type": "set",
+        "name": "set: last-order-status = order-status",
+        "xml": "<set>\n\t<parameter name=\"service-data.oper-status.last-order-status\" value=\"`$service-data.oper-status.order-status`\"/>",
+        "comments": "",
+        "x": 552.8817977905273,
+        "y": 275.25032234191895,
+        "z": "da6e10f.d63acf",
+        "wires": []
+    },
+    {
+        "id": "95a16bfa.1fed78",
+        "type": "set",
+        "name": "Clear vnf topology",
+        "xml": "<set>\n\t<parameter name=\"service-data.\" value=\"\" /> \n",
+        "comments": "",
+        "x": 500.2707099914551,
+        "y": 404.2503433227539,
+        "z": "da6e10f.d63acf",
+        "wires": []
+    },
+    {
+        "id": "52c9c127.4c5ea",
+        "type": "switchNode",
+        "name": "switch:CONFIG == INPUT - vnf-id",
+        "xml": "<switch test=\"`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`\">",
+        "comments": "",
+        "outputs": 1,
+        "x": 548.4877548217773,
+        "y": 185.18211460113525,
+        "z": "da6e10f.d63acf",
+        "wires": [
+            [
+                "aa95e846.1b2478"
+            ]
+        ]
+    },
+    {
+        "id": "38ee8eff.5172c2",
+        "type": "switchNode",
+        "name": "switch: order-status = PendingCreate",
+        "xml": "<switch test=\"`$service-data.oper-status.order-status == PendingCreate`\">\n\n<!--\nleaf order-status {\n\ttype enumeration {\n\t\tenum \"Active\";\n\t\tenum \"PendingAssignment\";\n\t\tenum \"PendingCreate\";\n\t\tenum \"PendingUpdate\";\n\t\tenum \"Deleted\";\n\t}\n}\n-->",
+        "comments": "",
+        "outputs": 1,
+        "x": 275.2932357788086,
+        "y": 578.1265535354614,
+        "z": "da6e10f.d63acf",
+        "wires": [
+            [
+                "3321b25c.99345e"
+            ]
+        ]
+    },
+    {
+        "id": "3321b25c.99345e",
+        "type": "other",
+        "name": "true",
+        "xml": "<outcome value='true'>",
+        "comments": "",
+        "outputs": 1,
+        "x": 511.54322814941406,
+        "y": 578.8765468597412,
+        "z": "da6e10f.d63acf",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "e765cc09.203e5",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic=\"true\">",
+        "atomic": "true",
+        "outputs": 1,
+        "x": 257.98773193359375,
+        "y": 184.4321117401123,
+        "z": "da6e10f.d63acf",
+        "wires": [
+            [
+                "52c9c127.4c5ea",
+                "77ddff10.81a9e",
+                "9ab6d07b.bdd0c",
+                "c94fe78d.f21d78",
+                "712c6030.e56b2",
+                "95a16bfa.1fed78",
+                "cdbdf7d4.379e78"
+            ]
+        ]
+    },
+    {
+        "id": "a864c3f6.a048c",
+        "type": "comment",
+        "name": "request-action = VNFActivateRequest, svc-action = rollback",
+        "info": "",
+        "comments": "",
+        "x": 755.7376708984375,
+        "y": 102.5432071685791,
+        "z": "da6e10f.d63acf",
+        "wires": []
+    },
+    {
+        "id": "5b757381.4bc8ac",
+        "type": "comment",
+        "name": "Removing the redundent check",
+        "info": "ks220y: it's being checked at node 3",
+        "comments": "",
+        "x": 217.65431213378906,
+        "y": 490.987642288208,
+        "z": "da6e10f.d63acf",
+        "wires": []
+    }
+]
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/resources/graph.versions b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/resources/graph.versions
new file mode 100644
index 0000000..ea29a00
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/resources/graph.versions
@@ -0,0 +1,40 @@
+VNF-API generate-l3network-network-id ${project.version} sync
+VNF-API generate-subnets-subnet-id ${project.version} sync
+VNF-API network-topology-assign ${project.version} sync
+VNF-API network-topology-changeassign ${project.version} sync
+VNF-API network-topology-delete ${project.version} sync
+VNF-API network-topology-operation ${project.version} sync
+VNF-API network-topology-rollback ${project.version} sync
+VNF-API preload-network-topology-operation ${project.version} sync
+VNF-API preload-vf-module-topology-operation ${project.version} sync
+VNF-API preload-vnf-instance-topology-operation ${project.version} sync
+VNF-API preload-vnf-topology-operation ${project.version} sync
+VNF-API rollback-eipam-ip-assignment ${project.version} sync
+VNF-API vf-module-topology-activate ${project.version} sync
+VNF-API vf-module-topology-assign-vnf-networks ${project.version} sync
+VNF-API vf-module-topology-assign ${project.version} sync
+VNF-API vf-module-topology-changeassign ${project.version} sync
+VNF-API vf-module-topology-delete ${project.version} sync
+VNF-API vf-module-topology-operation ${project.version} sync
+VNF-API vf-module-topology-rollback ${project.version} sync
+VNF-API vnf-instance-topology-activate ${project.version} sync
+VNF-API vnf-instance-topology-assign-vnf-networks ${project.version} sync
+VNF-API vnf-instance-topology-assign ${project.version} sync
+VNF-API vnf-instance-topology-changeassign ${project.version} sync
+VNF-API vnf-instance-topology-delete ${project.version} sync
+VNF-API vnf-instance-topology-operation ${project.version} sync
+VNF-API vnf-instance-topology-rollback ${project.version} sync
+VNF-API vnf-topology-activate ${project.version} sync
+VNF-API vnf-topology-assign-vfmodule ${project.version} sync
+VNF-API vnf-topology-assign ${project.version} sync
+VNF-API vnf-topology-automated-assign-vfmodule ${project.version} sync
+VNF-API vnf-topology-automated-assign ${project.version} sync
+VNF-API vnf-topology-automated-delete ${project.version} sync
+VNF-API vnf-topology-automated-operation ${project.version} sync
+VNF-API vnf-topology-automated-rollback ${project.version} sync
+VNF-API vnf-topology-changeassign ${project.version} sync
+VNF-API vnf-topology-changedelete ${project.version} sync
+VNF-API vnf-topology-delete ${project.version} sync
+VNF-API vnf-topology-operation ${project.version} sync
+VNF-API vnf-topology-preload-operation ${project.version} sync
+VNF-API vnf-topology-rollback ${project.version} sync
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_generate-l3network-network-id.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_generate-l3network-network-id.xml
new file mode 100644
index 0000000..efe7d6b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_generate-l3network-network-id.xml
@@ -0,0 +1,48 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc="generate-l3network-network-id" mode="sync"><block atomic="true"><set>
+    <parameter name="tmp.local-variables.generate-l3network-network-id." value="" />
+    <parameter name="tmp.return.generate-l3network-network-id." value="" /></set><execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+    <parameter name="ctx-destination" value="tmp.return.generate-l3network-network-id.uuid" /><outcome value='failure'>
+<return status='failure'>
+    <!-- Used to work around execute node bug -->
+    <parameter name="execute_failure" value="false" />
+
+    <!-- return parameters -->
+    <parameter name="error-message.generate-l3network-network-id" value="An error occured while generating a UUID for L3-NETWORK." /></return></outcome></execute><for atomic="true" index="n" start="0" end="1" ><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+              resource="l3-network"
+              key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"
+              local-only="false"
+              pfx="tmp.local-variables.generate-l3network-network-id.L3NETWORK" ><outcome value='success'>
+<block atomic='true'><set>
+    <parameter name="tmp.local-variables.generate-l3network-network-id.is-unique" value="0" /></set><execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+    <parameter name="ctx-destination" value="tmp.return.generate-l3network-network-id.uuid" /><outcome value='failure'>
+<return status="failure">
+    <!-- return parameters -->
+    <parameter name="error-message.generate-l3network-network-id" value="An error occured while generating a UUID for L3-NETWORK." /></return></outcome></execute></block></outcome><outcome value='not-found'>
+<block></block></outcome><outcome value='failure'>
+<return status="failure">
+    <!-- return parameters -->
+    <parameter name="error-message.generate-l3network-network-id" value="`'An error occured while checking if a generated l3network-network-id was unique. network-id = ' + $tmp.local-variables.generate-l3network-network-id.uuid`" /></return></outcome><outcome value="Other"><return status="failure">
+    <!-- return parameters -->
+    <parameter name="error-message.generate-l3network-network-id" value="`'An error occured while checking if a generated l3network-network-id was unique. network-id = ' + $tmp.local-variables.generate-l3network-network-id.uuid`" /></return></outcome></get-resource></for><set>
+    <parameter name="tmp.local-variables.generate-l3network-network-id." value="" /></set></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_generate-subnets-subnet-id.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_generate-subnets-subnet-id.xml
new file mode 100644
index 0000000..dca7e0f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_generate-subnets-subnet-id.xml
@@ -0,0 +1,49 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc="generate-subnets-subnet-id" mode="sync"><block atomic="true"><set>
+    <parameter name="tmp.local-variables.generate-subnets-subnet-id." value="" />
+    <parameter name="tmp.return.generate-subnets-subnet-id." value="" /></set><execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+    <parameter name="ctx-destination" value="tmp.return.generate-subnets-subnet-id.uuid" /><outcome value='failure'>
+<return status='failure'>
+    <!-- Used to work around execute node bug -->
+    <parameter name="execute_failure" value="false" />
+
+    <!-- return parameters -->
+    <parameter name="error-message.generate-l3network-network-id" value="An error occured while generating a UUID for L3-NETWORK." /></return></outcome></execute><for atomic="true" index="s" start="0" end="1" ><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="subnet"
+        key="l3-network.network-id = $tmp.local.network-id
+            AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid"
+        local-only="false"
+        pfx="tmp.local-variables.generate-subnets-subnet-id.SUBNETS" ><outcome value='success'>
+<block atomic='true'><set>
+    <parameter name="tmp.local-variables.generate-subnets-subnet-id.is-unique" value="0" /></set><execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
+    <parameter name="ctx-destination" value="tmp.return.generate-subnets-subnet-id.uuid" /><outcome value='failure'>
+<return status="failure">
+    <!-- return parameters -->
+    <parameter name="error-message.generate-subnets-subnet-id" value="An error occured while generating a UUID for SUBNETS." /></return></outcome></execute></block></outcome><outcome value='not-found'>
+<block></block></outcome><outcome value='failure'>
+<return status="failure">
+    <!-- return parameters -->
+    <parameter name="error-message.generate-subnets-subnet-id" value="`'An error occured while checking if a generated subnets-subnet-id was unique. subnet-id = ' + $tmp.local-variables.generate-subnets-subnet-id.uuid`" /></return></outcome><outcome value="Other"><return status="failure">
+    <!-- return parameters -->
+    <parameter name="error-message.generate-subnets-subnet-id" value="`'An error occured while checking if a generated subnets-subnet-id was unique. subnet-id = ' + $tmp.local-variables.generate-subnets-subnet-id.uuid`" /></return></outcome></get-resource></for><set>
+    <parameter name="tmp.local-variables.generate-subnets-subnet-id." value="" /></set></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-assign.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-assign.xml
new file mode 100644
index 0000000..76988ef
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-assign.xml
@@ -0,0 +1,358 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc="network-topology-assign" mode="sync"><block atomic="true"><switch test="`$network-topology-operation-input.service-information.service-type`"><outcome value=''><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value='service-type, aka AnAI subscription-service-type, is required.'/></return></outcome></switch><switch test="`$network-topology-operation-input.service-information.subscriber-name`"><outcome value=''><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value='subscriber-name, aka AnAI global-customer-id, is required.'/></return></outcome></switch><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-name = $network-topology-operation-input.network-request-information.network-name"
+        local-only="false"
+        pfx="tmp.AnAI.l3network.existed">
+
+<outcome value='failure'>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'An error occurred while querying whether l3-network with network-name = ' + $network-topology-operation-input.network-request-information.network-name + ' already exists in AnAI'`"/>
+</return></outcome><outcome value='success'>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'A l3-network with network-name = ' + $network-topology-operation-input.network-request-information.network-name + ' already existed in AnAI with network-id = ' + $tmp.AnAI.l3network.existed.network-id`"  />
+</return></outcome></get-resource><set>
+    <parameter name="tmp.error-message" value=""/></set><call module="VNF-API" rpc="generate-l3network-network-id" mode="sync" >
+<outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value='Error in generating l3-network.network-id in SDNC'/></return></outcome></call><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid" >
+<!-- Create l3-network object -->
+<parameter name="network-id" value="`$tmp.return.generate-l3network-network-id.uuid`" />
+<parameter name="network-name" value="`$network-topology-operation-input.network-request-information.network-name`" />
+<parameter name="network-type" value="`$network-topology-operation-input.network-request-information.network-type`" />
+<parameter name="network-role" value="`$preload-data.network-topology-information.network-topology-identifier.network-role`" />
+<parameter name="network-technology" value="`$preload-data.network-topology-information.network-topology-identifier.network-technology`" />
+<parameter name="service-id" value="`$network-topology-operation-input.service-information.service-id`" />
+<parameter name="tenant-id" value="`$network-topology-operation-input.network-request-information.tenant`" />
+<parameter name="network-role-instance" value="0" />
+<parameter name="orchestration-status" value="pending-create" /><outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Failed to save l3-netework in AnAI with network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/></return></outcome><outcome value='not-found'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Failed to save l3-netework in AnAI with network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/></return></outcome></save><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid" >
+<parameter name="physical-network-name" value="`$preload-data.network-topology-information.provider-network-information.physical-network-name`" />
+<parameter name="is-provider-network" value="`$preload-data.network-topology-information.provider-network-information.is-provider-network`" />
+<parameter name="is-shared-network" value="`$preload-data.network-topology-information.provider-network-information.is-shared-network`" />
+<parameter name="is-external-network" value="`$preload-data.network-topology-information.provider-network-information.is-external-network`" /><outcome value='failure'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while updating l3-network with provider-network-information in AnAI where network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome><outcome value='not-found'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while updating l3-network with provider-network-information in AnAI where network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome></update><for index="i" start="0" end="`$preload-data.network-topology-information.subnets_length`">
+<block atomic='true'><switch test="`$preload-data.network-topology-information.subnets[$i].dhcp-enabled`"><outcome value='Y'><set>
+<parameter name="tmp.dhcpEnabled.boolean" value="true" />
+</set></outcome><outcome value='N'><set>
+<parameter name="tmp.dhcpEnabled.boolean" value="false" />
+</set></outcome></switch><set>
+<parameter name="tmp.gateway-address" value="`$preload-data.network-topology-information.subnets[$i].gateway-address`" />
+</set><switch test="`$preload-data.network-topology-information.subnets[$i].gateway-address`"><outcome value=''><block atomic='true'><execute plugin="org.onap.ccsdk.sli.plugins.ipaddresstools.IpAddressTool" method="getGatewayAddress">
+    <parameter name="ipAddress" value="`$preload-data.network-topology-information.subnets[$i].start-address`" />
+    <parameter name="ipVersion" value="`$preload-data.network-topology-information.subnets[$i].ip-version`" />
+    <parameter name="subnet" value="`$preload-data.network-topology-information.subnets[$i].cidr-mask`" />
+    <parameter name="ctxVariable" value="tmp.return.generate.gateway-address" /></execute><set>
+<parameter name="tmp.gateway-address" value="`$tmp.return.generate.gateway-address`" />
+</set></block></outcome></switch><set>
+<parameter name="tmp.local.network-id" value="`$tmp.return.generate-l3network-network-id.uuid`" />
+</set><call module="VNF-API" rpc="generate-subnets-subnet-id" mode="sync" >
+<outcome value='failure'>
+<block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></outcome></call><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="subnet"
+        key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid
+            AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid" >
+<!-- Create l3-network object -->
+<parameter name="network-id" value="`$tmp.return.generate-l3network-network-id.uuid`" />
+<parameter name="subnet-id" value="`$tmp.return.generate-subnets-subnet-id.uuid`" />
+<parameter name="subnet-name" value="`$preload-data.network-topology-information.subnets[$i].subnet-name`" />
+<parameter name="gateway-address" value="`$tmp.gateway-address`" />
+<parameter name="network-start-address" value="`$preload-data.network-topology-information.subnets[$i].start-address`" />
+<parameter name="cidr-mask" value="`$preload-data.network-topology-information.subnets[$i].cidr-mask`" />
+<parameter name="ip-version" value="`$preload-data.network-topology-information.subnets[$i].ip-version`" />
+<parameter name="dhcp-start" value="`$preload-data.network-topology-information.subnets[$i].dhcp-start-address`" />
+<parameter name="dhcp-end" value="`$preload-data.network-topology-information.subnets[$i].dhcp-end-address`" />
+<parameter name="dhcp-enabled" value="`$tmp.dhcpEnabled.boolean`" />
+        <parameter name="orchestration-status" value="pending-create" /><outcome value='failure'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork.subnet in AnAI where subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome><outcome value='not-found'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork.subnet in AnAI where subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome></save></block></for><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network:relationship-list"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"
+    force="true"
+    local-only="false">
+    <!-- create relationship-list -->
+    <parameter name="relationship-list.relationship[0].related-to" value="tenant" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="CloudOwner" />
+    <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" />
+    <parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$network-topology-operation-input.network-request-information.aic-cloud-region`" />
+    <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="tenant.tenant-id" />
+    <parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$network-topology-operation-input.network-request-information.tenant`" />
+    <parameter name="relationship-list.relationship[1].related-to" value="cloud-region" />
+    <parameter name="relationship-list.relationship[1].relationship-data[0].relationship-key" value="cloud-region.cloud-owner" />
+    <parameter name="relationship-list.relationship[1].relationship-data[0].relationship-value" value="CloudOwner" />
+    <parameter name="relationship-list.relationship[1].relationship-data[1].relationship-key" value="cloud-region.cloud-region-id" />
+    <parameter name="relationship-list.relationship[1].relationship-data[1].relationship-value" value="`$network-topology-operation-input.network-request-information.aic-cloud-region`" /><outcome value='failure'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving tenant and clould-region relationship for l3-network in AnAI where network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome><outcome value='not-found'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving tenant and clould-region relationship for l3-network in AnAI where network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome></save><switch test="`$preload-data.network-topology-information.vpn-bindings_length`"><outcome value=''><set>
+<parameter name="preload-data.network-topology-information.vpn-bindings_length" value="0" />
+</set></outcome></switch><for index="i" start="0" end="`$preload-data.network-topology-information.vpn-bindings_length`">
+<block atomic='true'><set>
+<parameter name="tmp.vpn-binding-id" value="" />
+</set><switch test="`$preload-data.network-topology-information.vpn-bindings[$i].vpn-binding-id`"><outcome value='Other'>
+<set>
+<parameter name="tmp.vpn-binding-id" value="`$preload-data.network-topology-information.vpn-bindings[$i].vpn-binding-id`" />
+</set></outcome></switch><switch test="`$preload-data.network-topology-information.vpn-bindings[$i].global-route-target != ''`" ><outcome value='true'>
+<get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="vpn-binding"
+        key="vpn-binding.global-route-target = $preload-data.network-topology-information.vpn-bindings[$i].global-route-target"
+        local-only="false"
+        pfx="tmp.AnAI.vpn-binding"><outcome value='success'>
+<switch test="`$tmp.AnAI.vpn-binding.vpn-id`" ><outcome value='Other'>
+<set>
+<parameter name="tmp.vpn-binding-id" value="`$tmp.AnAI.vpn-binding.vpn-id`" />
+</set></outcome><outcome value=''>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings from AnAI where global-route-target = ' + $preload-data.network-topology-information.vpn-bindings[$i].global-route-target + '. It is likely that the same global-route-target points to more than one vpn-binding objects in AnAI.'`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome></switch></outcome><outcome value='not-found'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings from AnAI where global-route-target = ' + $preload-data.network-topology-information.vpn-bindings[$i].global-route-target`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome><outcome value='failure'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings from AnAI where global-route-target = ' + $preload-data.network-topology-information.vpn-bindings[$i].global-route-target`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome></get-resource></outcome></switch><switch test="`$tmp.vpn-binding-id != ''`"><outcome value='true'>
+<save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network:relationship-list"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"
+    force="true"
+    local-only="false">
+
+    <parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.vpn-binding-id`" /><outcome value='failure'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving vpn-binding relationship for l3-network in AnAI where vpn-id = ' + $tmp.vpn-binding-id`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome><outcome value='not-found'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving vpn-binding relationship for l3-network in AnAI where vpn-id = ' + $tmp.vpn-binding-id`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome><outcome value='success'>
+<set>
+<parameter name="tmp.is-bound-to-vpn" value="true" />
+</set></outcome></save></outcome></switch></block></for><switch test="`$preload-data.network-topology-information.network-policy_length`"><outcome value=''><set>
+<parameter name='preload-data.network-topology-information.network-policy_length' value='0' />
+</set></outcome></switch><for index="i" start="0" end="`$preload-data.network-topology-information.network-policy_length`">
+<switch test="`$preload-data.network-topology-information.network-policy[$i].network-policy-fqdn != ''`"><outcome value='true'>
+<get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="network-policy"
+        key="network-policy.network-policy-fqdn = $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn"
+        local-only="false"
+        pfx="tmp.AnAI.network-policy"><outcome value='not-found'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome><outcome value='failure'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome><outcome value='success'>
+<switch test="`$tmp.AnAI.network-policy.network-policy-id`" ><outcome value=''>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query newtork-policy from AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn + '. It is likely that the same network-policy-fqdn points to more than one network-policy objects in AnAI.'`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome><outcome value='Other'>
+<save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network:relationship-list"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid" >
+<parameter name="relationship-list.relationship[0].related-to" value="network-policy" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-policy.network-policy-id" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.network-policy.network-policy-id`" /><outcome value='failure'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving network-policy relationship for l3-network in AnAI where network-policy-id = ' + $tmp.AnAI.network-policy.network-policy-id`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome><outcome value='not-found'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving network-policy relationship for l3-network in AnAI where network-policy-id = ' + $tmp.AnAI.network-policy.network-policy-id`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome></save></outcome></switch></outcome></get-resource></outcome></switch></for><switch test="`$preload-data.network-topology-information.route-table-reference_length`"><outcome value=''><set>
+<parameter name='preload-data.network-topology-information.route-table-reference_length' value='0' />
+</set></outcome></switch><for index="i" start="0" end="`$preload-data.network-topology-information.route-table-reference_length`">
+<switch test="`$preload-data.network-topology-information.route-table-reference[$i].route-table-reference-fqdn != ''`"><outcome value='true'>
+<get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="route-table-reference"
+        key="route-table-reference.route-table-reference-fqdn = $preload-data.network-topology-information.route-table-reference[$i].route-table-reference-fqdn"
+        pfx="tmp.AnAI.route-table-reference"><outcome value='not-found'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`"/></set></block></outcome><outcome value='failure'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`"/></set></block></outcome><outcome value='success'>
+<switch test="`$tmp.AnAI.route-table-referencey.route-table-reference-id`" ><outcome value=''>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query route-table-reference from AnAI where route-table-reference-fqdn = ' + $preload-data.network-topology-information.route-table-reference[$i].route-table-reference-fqdn + '. It is likely that the same route-table-reference-fqdn points to more than one route-table-reference objects in AnAI.'`"/></set></block></outcome><outcome value='Other'>
+<save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network:relationship-list"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid" >
+<parameter name="relationship-list.relationship[0].related-to" value="route-table-reference" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="route-table-reference.route-table-reference-id" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.route-table-reference.route-table-reference-id`" /><outcome value='failure'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving route-table-reference relationship for l3-network in AnAI where route-table-reference-id = ' + $tmp.AnAI.route-table-reference.route-table-reference-id`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome><outcome value='not-found'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving route-table-reference relationship for l3-network in AnAI where route-table-reference-id = ' + $tmp.AnAI.route-table-reference.route-table-reference-id`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome></save></outcome></switch></outcome></get-resource></outcome></switch></for><switch test="`$tmp.is-bound-to-vpn`"><outcome value="true"><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid" >
+<parameter name="is-bound-to-vpn" value="true" /><outcome value='failure'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while updating l3-network is-bound-to-vpn in AnAI where network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome><outcome value='not-found'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while updating l3-network is-bound-to-vpn in AnAI where network-id = ' + $tmp.return.generate-l3network-network-id.uuid`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome></update></outcome></switch><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network:relationship-list"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid" >
+<parameter name="relationship-list.relationship[0].related-to" value="service-instance" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="customer.global-customer-id" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$network-topology-operation-input.service-information.subscriber-name`" />
+<parameter name="relationship-list.relationship[0].relationship-data[1].relationship-key" value="service-subscription.service-type" />
+<parameter name="relationship-list.relationship[0].relationship-data[1].relationship-value" value="`$network-topology-operation-input.service-information.service-type`" />
+<parameter name="relationship-list.relationship[0].relationship-data[2].relationship-key" value="service-instance.service-instance-id" />
+<parameter name="relationship-list.relationship[0].relationship-data[2].relationship-value" value="`$network-topology-operation-input.service-information.service-instance-id`" /><outcome value='failure'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving service-instance relationship for l3-network in AnAI where service-instance-id = ' + $network-topology-operation-input.service-information.service-instance-id`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome><outcome value='not-found'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving service-instance relationship for l3-network in AnAI where service-instance-id = ' + $network-topology-operation-input.service-information.service-instance-id`"/></set><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+    key="l3-network.network-id = $tmp.return.generate-l3network-network-id.uuid"></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error writing to l3-netework - ' + $tmp.error-message`"/></return></block></block></outcome></save><set>
+<parameter name="ack-final" value="Y"/></set><return status="success">
+    <parameter name="networkId" value="`$tmp.return.generate-l3network-network-id.uuid`" />
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-changeassign.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-changeassign.xml
new file mode 100644
index 0000000..7f35d4e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-changeassign.xml
@@ -0,0 +1,525 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc="network-topology-changeassign" mode="sync"><block atomic="true"><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $network-topology-operation-input.network-request-information.network-id"
+        local-only="false"
+        pfx="tmp.AnAI.l3network">
+<outcome value='failure'>
+<return status='failure'>
+    <parameter name="error-code" value="500" />
+    <parameter name="error-message" value="`'Error retrieving l3-network with network-id=' + $network-topology-operation-input.network-request-information.network-id + ' from AnAI'`" /></return></outcome><outcome value='not-found'>
+<return status='failure'>
+    <parameter name="error-code" value="404" />
+    <parameter name="error-message" value="`'network-id: ' + $network-topology-operation-input.network-request-information.network-id + 'not found in AnAI'`" /></return></outcome></get-resource><switch test="`$tmp.AnAI.l3network.network-name == $network-topology-operation-input.network-request-information.network-name`"><outcome value='false'>
+<return status='failure'>
+    <parameter name="error-code" value="404" />
+    <parameter name="error-message" value="`'The input network-name,' + network-topology-operation-input.network-request-information.network-name + ', does not match what is returned from AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`" /></return></outcome></switch><switch test="`$tmp.AnAI.l3network.network-type == $network-topology-operation-input.network-request-information.network-type`"><outcome value='false'>
+<return status='failure'>
+    <parameter name="error-code" value="404" />
+    <parameter name="error-message" value="`'The input network-type,' + network-topology-operation-input.network-request-information.network-type + ', does not match what is returned from AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`" /></return></outcome></switch><switch test="`$tmp.AnAI.l3network.network-name == $preload-data.network-topology-information.network-topology-identifier.network-name`"><outcome value='false'>
+<return status='failure'>
+    <parameter name="error-code" value="404" />
+    <parameter name="error-message" value="`'No preload network found with network-name = ' + $tmp.AnAI.l3network.network-name + ' in SDNC'`" /></return></outcome></switch><switch test="`$tmp.AnAI.l3network.network-type == $preload-data.network-topology-information.network-topology-identifier.network-type`"><outcome value='false'>
+<return status='failure'>
+    <parameter name="error-code" value="404" />
+    <parameter name="error-message" value="`'No preload network found with network-type = ' + $tmp.AnAI.l3network.network-type + ' in SDNC'`" /></return></outcome></switch><set>
+    <parameter name='x' value='0' />
+    <parameter name='tmp.error-message' value='' />
+    <parameter name='execute_failure' value='false' />
+    <parameter name='tmp.l3networkUpdate' value='0' /></set><switch test="`$tmp.AnAI.l3network.subnets.subnet_length`"><outcome value=''><set>
+<parameter name="tmp.AnAI.l3network.subnets.subnet_length" value="0" />
+</set></outcome></switch><for index="k" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">
+<block atomic='true'><set>
+<parameter name='tmp.start-address-match' value='0' />
+</set><set>
+<parameter name='tmp.subnetUpdate' value='0' />
+</set><block atomic='true'><for index="n" start="0" end="`$preload-data.network-topology-information.subnets_length`">
+<switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].network-start-address == $preload-data.network-topology-information.subnets[$n].start-address`"><outcome value='true'>
+<block atomic='true'><set>
+<parameter name='tmp.start-address-match' value='1' />
+</set><switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].cidr-mask == $preload-data.network-topology-information.subnets[$n].cidr-mask`"><outcome value='false'>
+<set>
+<parameter name="tmp.subnetUpdate" value="1" />
+</set></outcome></switch><switch test="`$preload-data.network-topology-information.subnets[$n].gateway-address`"><outcome value=''><block>
+<execute plugin="org.onap.ccsdk.sli.plugins.ipaddresstools.IpAddressTool" method="getGatewayAddress">
+    <parameter name="ipAddress" value="`$preload-data.network-topology-information.subnets[$n].start-address`" />
+    <parameter name="ipVersion" value="`$preload-data.network-topology-information.subnets[$n].ip-version`" />
+    <parameter name="subnet" value="`$preload-data.network-topology-information.subnets[$n].cidr-mask`" />
+    <parameter name="ctxVariable" value="tmp.return.generate.gateway-address" /></execute><switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].gateway-address == $tmp.return.generate.gateway-address`"><outcome value='false'>
+<block>
+<set>
+<parameter name="tmp.gateway-address" value="`$tmp.return.generate.gateway-address`" />
+</set><set>
+<parameter name="tmp.subnetUpdate" value="1" />
+</set></block></outcome></switch></block></outcome><outcome value='Other'>
+<switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].gateway-address == $preload-data.network-topology-information.subnets[$n].gateway-address`"><outcome value='false'>
+<block>
+<set>
+<parameter name="tmp.gateway-address" value="`$preload-data.network-topology-information.subnets[$n].gateway-address`" />
+</set><set>
+<parameter name="tmp.subnetUpdate" value="1" />
+</set></block></outcome><outcome value='true'>
+<set>
+<parameter name="tmp.gateway-address" value="`$preload-data.network-topology-information.subnets[$n].gateway-address`" />
+</set></outcome></switch></outcome></switch><switch test="`$preload-data.network-topology-information.subnets[$n].dhcp-enabled`"><outcome value='N'><set>
+<parameter name="tmp.dhcpEnabled.boolean" value="false" />
+</set></outcome><outcome value='Y'><set>
+<parameter name="tmp.dhcpEnabled.boolean" value="true" />
+</set></outcome></switch><switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-enabled == $tmp.dhcpEnabled.boolean`"><outcome value='false'>
+<block>
+<set>
+<parameter name="tmp.subnetUpdate" value="1" />
+</set></block></outcome></switch><switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-start == $preload-data.network-topology-information.subnets[$n].dhcp-start-address`"><outcome value='false'>
+<block>
+<set>
+<parameter name="tmp.subnetUpdate" value="1" />
+</set></block></outcome></switch><switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].dhcp-end == $preload-data.network-topology-information.subnets[$n].dhcp-end-address`"><outcome value='false'>
+<block>
+<set>
+<parameter name="tmp.subnetUpdate" value="1" />
+</set></block></outcome></switch><switch test="`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-name == $preload-data.network-topology-information.subnets[$n].subnet-name`"><outcome value='false'>
+<block>
+<set>
+<parameter name="tmp.subnetUpdate" value="1" />
+</set></block></outcome></switch><switch test="`$tmp.subnetUpdate == 1`"><outcome value='true'>
+<update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="subnet"
+        key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+            AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id" >
+    <!-- Update l3network.subnet -->
+    <parameter name="gateway-address" value="`$tmp.gateway-address`"/>
+    <parameter name="subnet-name" value="`$preload-data.network-topology-information.subnets[$n].subnet-name`"/>
+    <parameter name="cidr-mask" value="`$preload-data.network-topology-information.subnets[$n].cidr-mask`"/>
+    <parameter name="dhcp-start" value="`$preload-data.network-topology-information.subnets[$n].dhcp-start-address`"/>
+    <parameter name="dhcp-end" value="`$preload-data.network-topology-information.subnets[$n].dhcp-end-address`"/>
+    <parameter name="dhcp-enabled" value="`$tmp.dhcpEnabled.boolean`"/>
+    <parameter name="orchestration-status" value="pending-update" />
+        <outcome value='failure'>
+<block>
+<set>
+    <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />
+    <parameter name='n' value='`$preload-data.network-topology-information.subnets_length + 1`' /></set><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while updating subnet attributes in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='not-found'>
+<block>
+<set>
+    <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />
+    <parameter name='n' value='`$preload-data.network-topology-information.subnets_length + 1`' /></set><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while updating subnet attributes in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='success'>
+<block>
+<set>
+  <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>
+  <parameter name="tmp.subnetRollback[$x].type" value = "update"/>
+
+
+
+</set><set>
+  <parameter name="x" value = "`$x + 1`"  />
+
+</set><set>
+<parameter name="tmp.l3networkUpdate" value="1" />
+</set></block></outcome></update></outcome></switch></block></outcome></switch></for><switch test="`$execute_failure`"><outcome value='false'>
+<switch test="`$tmp.start-address-match == 0`"><outcome value='true'>
+<update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="subnet"
+        key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+            AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id" >
+<parameter name="orchestration-status" value="pending-delete" />
+        <outcome value='failure'>
+<block>
+<set>
+    <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />
+    <parameter name='n' value='`$preload-data.network-topology-information.subnets_length + 1`' /></set><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while updating subnet status to pending-delete in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='not-found'>
+<block>
+<set>
+    <parameter name='k' value='`$tmp.AnAI.l3network.subnets.subnet_length + 1`' />
+    <parameter name='n' value='`$preload-data.network-topology-information.subnets_length + 1`' /></set><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while updating subnet status to pending-delete in AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='success'>
+<block>
+<set>
+  <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].subnet-id`"/>
+  <parameter name="tmp.subnetRollback[$x].orchestration-status" value= "`$tmp.AnAI.l3network.subnets.subnet[$k].orchestration-status`" />
+  <parameter name="tmp.subnetRollback[$x].type" value = "delete"  />
+
+
+
+</set><set>
+  <parameter name="x" value = "`$x + 1`"  />
+
+</set><set>
+<parameter name="tmp.l3networkUpdate" value="1" />
+</set></block></outcome></update></outcome></switch></outcome></switch></block></block></for><switch test="`$execute_failure`"><outcome value='false'>
+<for index="i" start="0" end="`$preload-data.network-topology-information.subnets_length`">
+<block atomic='true'><set>
+<parameter name="tmp.start-address-match" value="0" />
+</set><block atomic='true'><for index="j" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">
+<switch test="`$preload-data.network-topology-information.subnets[$i].start-address == $tmp.AnAI.l3network.subnets.subnet[$j].network-start-address`"><outcome value='true'>
+<set>
+<parameter name='tmp.start-address-match' value='1' />
+</set></outcome></switch></for><switch test="`$tmp.start-address-match == 0`"><outcome value='true'>
+<block atomic="true"><switch test="`$preload-data.network-topology-information.subnets[$i].dhcp-enabled`"><outcome value='N'><set>
+<parameter name="tmp.dhcpEnabled.boolean" value="false" />
+</set></outcome><outcome value='Y'><set>
+<parameter name="tmp.dhcpEnabled.boolean" value="true" />
+</set></outcome></switch><set>
+<parameter name='tmp.gateway-address' value='`$preload-data.network-topology-information.subnets[$i].gateway-address`' />
+</set><switch test="`$preload-data.network-topology-information.subnets[$i].gateway-address`"><outcome value=''><block>
+<execute plugin="org.onap.ccsdk.sli.plugins.ipaddresstools.IpAddressTool" method="getGatewayAddress">
+    <parameter name="ipAddress" value="`$preload-data.network-topology-information.subnets[$i].start-address`" />
+    <parameter name="ipVersion" value="`$preload-data.network-topology-information.subnets[$i].ip-version`" />
+    <parameter name="subnet" value="`$preload-data.network-topology-information.subnets[$i].cidr-mask`" />
+    <parameter name="ctxVariable" value="tmp.return.generate.gateway-address" /></execute><set>
+<parameter name="tmp.gateway-address" value="`$tmp.return.generate.gateway-address`" />
+</set></block></outcome></switch><set>
+<parameter name="tmp.local.network-id" value="`$tmp.AnAI.l3network.network-id`" />
+</set><call module="VNF-API" rpc="generate-subnets-subnet-id" mode="sync" >
+<outcome value='failure'>
+<block>
+<set>
+    <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />
+    <parameter name='i' value='`$preload-data.network-topology-information.subnets_length + 1`' /></set><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving new subnet in AnAI with subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome></call><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="subnet"
+        key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+            AND subnet.subnet-id = $tmp.return.generate-subnets-subnet-id.uuid" >
+    <!-- Create l3-network object -->
+    <parameter name="network-id" value="`$tmp.AnAI.l3network.network-id`" />
+    <parameter name="subnet-id" value="`$tmp.return.generate-subnets-subnet-id.uuid`" />
+    <parameter name="gateway-address" value="`$tmp.gateway-address`" />
+    <parameter name="subnet-name" value="`$preload-data.network-topology-information.subnets[$i].subnet-name`" />
+    <parameter name="network-start-address" value="`$preload-data.network-topology-information.subnets[$i].start-address`" />
+    <parameter name="cidr-mask" value="`$preload-data.network-topology-information.subnets[$i].cidr-mask`" />
+    <parameter name="ip-version" value="`$preload-data.network-topology-information.subnets[$i].ip-version`" />
+    <parameter name="dhcp-start" value="`$preload-data.network-topology-information.subnets[$i].dhcp-start-address`" />
+    <parameter name="dhcp-end" value="`$preload-data.network-topology-information.subnets[$i].dhcp-end-address`" />
+    <parameter name="dhcp-enabled" value="`$tmp.dhcpEnabled.boolean`" />
+    <parameter name="orchestration-status" value="pending-create" /><outcome value='failure'>
+<block>
+<set>
+    <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />
+    <parameter name='i' value='`$preload-data.network-topology-information.subnets_length + 1`' /></set><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving new subnet in AnAI with subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='not-found'>
+<block>
+<set>
+    <parameter name='j' value='`$tmp.AnAI.l3subnet_length + 1`' />
+    <parameter name='i' value='`$preload-data.network-topology-information.subnets_length + 1`' /></set><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving new subnet in AnAI with subnet-id = ' + $tmp.return.generate-subnets-subnet-id.uuid`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='success'>
+<block>
+<set>
+  <parameter name="tmp.subnetRollback[$x].subnet-id" value= "`$tmp.return.generate-subnets-subnet-id.uuid`" />
+  <parameter name="tmp.subnetRollback[$x].type" value = "create"  /></set><set>
+  <parameter name="x" value = "`$x + 1`"  />
+
+</set><set>
+<parameter name='tmp.l3networkUpdate' value='1' />
+</set></block></outcome></save></block></outcome></switch></block></block></for></outcome></switch><switch test="`$execute_failure`"><outcome value='false'>
+<block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network:relationship-list"
+    key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+        AND related-to = vpn-binding" ><outcome value='failure'>
+<block>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="An error occurred while deleting l3-network vpn-binding relationship from AnAI"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome></delete><switch test="`$execute_failure`"><outcome value='false'>
+<block atomic='true'><switch test="`$preload-data.network-topology-information.vpn-bindings_length`"><outcome value=''><set>
+<parameter name="preload-data.network-topology-information.vpn-bindings_length" value="0" />
+</set></outcome></switch><for index="i" start="0" end="`$preload-data.network-topology-information.vpn-bindings_length`">
+<block atomic='true'><set>
+<parameter name="tmp.vpn-binding-id" value="" />
+</set><switch test="`$preload-data.network-topology-information.vpn-bindings[$i].vpn-binding-id`"><outcome value='Other'>
+<set>
+<parameter name="tmp.vpn-binding-id" value="`$preload-data.network-topology-information.vpn-bindings[$i].vpn-binding-id`" />
+</set></outcome></switch><switch test="`$preload-data.network-topology-information.vpn-bindings[$i].global-route-target != ''`" ><outcome value='true'>
+<get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="vpn-binding"
+        key="vpn-binding.global-route-target = $preload-data.network-topology-information.vpn-bindings[$i].global-route-target"
+        pfx="tmp.AnAI.vpn-binding"><outcome value='not-found'>
+<block><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings n AnAI where global-route-target = ' + $preload-data.network-topology-information.vpn-bindings[$i].global-route-target`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='failure'>
+<block><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query vpn-bindings n AnAI where global-route-target = ' + $preload-data.network-topology-information.vpn-bindings[$i].global-route-target`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='success'>
+<set>
+<parameter name="tmp.vpn-binding-id" value="`$tmp.AnAI.vpn-binding.vpn-id`" />
+</set></outcome></get-resource></outcome></switch><switch test="`$execute_failure`"><outcome value='false'>
+<switch test="`$tmp.vpn-binding-id != ''`"><outcome value='true'>
+<save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network:relationship-list"
+    key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+<parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.vpn-binding-id`" /><outcome value='failure'>
+<block><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.vpn-binding-id`"/></set><set>
+  <parameter name="i" value = "`$preload-data.network-topology-information.vpn-bindings_length + 1`"  />
+
+</set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='not-found'>
+<block><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.vpn-binding-id`"/></set><set>
+  <parameter name="i" value = "`$preload-data.network-topology-information.vpn-bindings_length + 1`"  />
+
+</set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='success'>
+<set>
+<parameter name='tmp.vpn-binding.updated' value='1' />
+</set></outcome></save></outcome></switch></outcome></switch></block></for></block></outcome></switch></block></outcome></switch><switch test="`$execute_failure`"><outcome value='false'>
+<block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network:relationship-list"
+    key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+         AND related-to = network-policy" ><outcome value='failure'>
+<block>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="An error occurred while deleting l3-network network-policy relationship from AnAI in preparation to regenerate the network-policy relationship from PRELOAD."/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome></delete><switch test="`$execute_failure`"><outcome value='false'>
+<block atomic='true'><switch test="`$preload-data.network-topology-information.network-policy_length`"><outcome value=''><set>
+<parameter name='preload-data.network-topology-information.network-policy_length' value='0' />
+</set></outcome></switch><for index="i" start="0" end="`$preload-data.network-topology-information.network-policy_length`">
+<switch test="`$preload-data.network-topology-information.network-policy[$i].network-policy-fqdn != NULL`"><outcome value='true'>
+<get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="network-policy"
+        key="network-policy.network-policy-fqdn = $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn"
+        pfx="tmp.AnAI.network-policy" ><outcome value='not-found'>
+<block><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='failure'>
+<block><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='success'>
+<save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network:relationship-list"
+    key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+<parameter name="relationship-list.relationship[0].related-to" value="network-policy" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-policy.network-policy-id" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.network-policy.network-policy-id`" /><outcome value='failure'>
+<block><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.network-policy.network-policy-id`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='not-found'>
+</outcome><outcome value='success'>
+<set>
+<parameter name='tmp.network-policy.updated' value='1' />
+</set></outcome></save></outcome></get-resource></outcome></switch></for></block></outcome></switch></block></outcome></switch><switch test="`$execute_failure`"><outcome value='false'>
+<block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network:relationship-list"
+    key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+         AND related-to = route-table-reference" ><outcome value='failure'>
+<block>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="An error occurred while deleting l3-network route-table-reference relationship from AnAI prior to regenerate the route-table-reference relationship from PRELOAD."/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome></delete><switch test="`$execute_failure`"><outcome value='false'>
+<block atomic='true'><switch test="`$preload-data.network-topology-information.route-table-reference_length`"><outcome value=''><set>
+<parameter name='preload-data.network-topology-information.route-table-reference_length' value='0' />
+</set></outcome></switch><for index="i" start="0" end="`$preload-data.network-topology-information.route-table-reference_length`">
+<switch test="`$preload-data.network-topology-information.route-table-reference[$i].route-table-reference-fqdn != NULL`"><outcome value='true'>
+<get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="route-table-reference"
+        key="route-table-reference.route-table-reference-fqdn = $preload-data.network-topology-information.route-table-reference[$i].route-table-reference-fqdn"
+        pfx="tmp.AnAI.route-table-reference"><outcome value='not-found'>
+<block><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='failure'>
+<block><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'Failed to query network-policy n AnAI where network-policy-fqdn = ' + $preload-data.network-topology-information.network-policy[$i].network-policy-fqdn`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='success'>
+<save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network:relationship-list"
+    key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+<parameter name="relationship-list.relationship[0].related-to" value="route-table-reference" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="route-table-reference.route-table-reference-id" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.route-table-reference.route-table-reference-id`" /><outcome value='failure'>
+<block><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="`'An error occurred while saving l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.route-table-reference.route-table-reference-id`"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='not-found'>
+</outcome><outcome value='success'>
+<set>
+<parameter name='tmp.route-table-reference.updated' value='1' />
+</set></outcome></save></outcome></get-resource></outcome></switch></for></block></outcome></switch></block></outcome></switch><switch test="`$execute_failure`"><outcome value='false'>
+<switch test="`$tmp.l3networkUpdate == 1`">
+<outcome value='true'>
+<update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+<parameter name="orchestration-status" value="pending-update" /><outcome value='failure'>
+<block><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="An error occurred while updating l3-network.orchestration-status in AnAI"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='not-found'>
+<block><set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.error-message" value="An error occurred while updating l3-network.orchestration-status in AnAI"/></set><return status='success'>
+    <parameter name='execute_failure' value='true' />
+</return></block></outcome><outcome value='success'>
+<set>
+<parameter name='tmp.l3network.status.updated' value='1' />
+</set></outcome></update></outcome></switch></outcome></switch><switch test="`$execute_failure`"><outcome value="true"><block atomic='true'><for index="z" start="0" end="`$tmp.AnAI.l3network.relationship-list.relationship_length`">
+<switch test="`$tmp.AnAI.l3network.relationship-list.relationship[$z].related-to`"><outcome value='vpn-binding'>
+<switch test="`$tmp.vpn-binding.updated == 1`"><outcome value='true'>
+<save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network:relationship-list"
+    key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+<parameter name="relationship-list.relationship[0].related-to" value="vpn-binding" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="vpn-binding.vpn-id" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" /><outcome value='failure'>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/></set></outcome><outcome value='not-found'>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork vpn-binding relationship in AnAI where vpn-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/></set></outcome></save></outcome></switch></outcome><outcome value='network-policy'>
+<switch test="`$tmp.network-policy.updated == 1`"><outcome value='true'>
+<save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network:relationship-list"
+    key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+<parameter name="relationship-list.relationship[0].related-to" value="network-policy" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="network-policy.network-policy-id" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" /><outcome value='failure'>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/></set></outcome><outcome value='not-found'>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork network-policy relationship in AnAI where network-policy-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/></set></outcome></save></outcome></switch></outcome><outcome value='route-table-reference'>
+<switch test="`$tmp.route-table-reference.updated == 1`"><outcome value='true'>
+<save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network:relationship-list"
+    key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+<parameter name="relationship-list.relationship[0].related-to" value="route-table-reference" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="route-table-reference.route-table-reference-id" />
+<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value`" /><outcome value='failure'>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/></set></outcome><outcome value='not-found'>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.rollback.error-message" value="`'An error occurred during rollback of l3-newtork route-table-reference relationship in AnAI where route-table-reference-id = ' + $tmp.AnAI.l3network.relationship-list.relationship[$z].relationship-data[0].relationship-value + ' MANUAL ROLLBACK IS REQUIRED.'`"/></set></outcome></save></outcome></switch></outcome></switch></for><for index="j" start="0" end="`$x`">
+<block atomic='true'><set>
+    <parameter name="tmp.rollback.match" value="0"/></set><for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">
+<switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-id == $tmp.subnetRollback[$j].subnet-id`"><outcome value='true'>
+<block atomic='true'><switch test="`$tmp.subnetRollback[$j].type`"><outcome value='delete'>
+<update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="subnet"
+        key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+            AND subnet.subnet-id = $tmp.subnetRollback[$j].subnet-id" >
+<parameter name="orchestration-status" value="`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`" />
+        <outcome value='not-found'>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/></set></outcome><outcome value='failure'>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/></set></outcome></update></outcome><outcome value='update'>
+<update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="subnet"
+        key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+            AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$j].subnet-id" >
+<parameter name="subnet-name" value="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name`"/>
+<parameter name="gateway-address" value="`$tmp.AnAI.l3network.subnets.subnet[$i].gateway-address`"/>
+<parameter name="cidr-mask" value="`$tmp.AnAI.l3network.subnets.subnet[$i].cidr-mask`"/>
+<parameter name="dhcp-start" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-start`"/>
+<parameter name="dhcp-end" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-end`"/>
+<parameter name="dhcp-enabled" value="`$tmp.AnAI.l3network.subnets.subnet[$i].dhcp-enabled`"/>
+<parameter name="orchestration-status" value="`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`" />
+        <outcome value='failure'>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet attributes update in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/></set></outcome><outcome value='not-found'>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.rollback.error-message" value="`'failed to rollback the subnet attributes update in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/></set></outcome></update></outcome></switch><set>
+    <parameter name="tmp.rollback.match" value="1"/></set></block></outcome></switch></for><switch test="`$tmp.rollback.match == 0`"><outcome value='true'>
+<switch test="`$tmp.subnetRollback[$j].type`"><outcome value='create'>
+<delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="subnet"
+        key="l3-network.network-id = $tmp.AnAI.l3network.network-id
+            AND subnet.subnet-id = $tmp.subnetRollback[$j].subnet-id" ><outcome value='failure'>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.rollback.error-message" value="`'failed to rollback to delete subnet from AnAI where subnet-id = ' + $tmp.subnetRollback[$j].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/></set></outcome><outcome value='not-found'>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.rollback.error-message" value="`'failed to rollback to delete subnet from AnAI where subnet-id = ' + $tmp.subnetRollback[$j].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/></set></outcome></delete></outcome></switch></outcome></switch></block></for><switch test="`$tmp.l3network.status.updated == 1`">
+<outcome value='true'>
+<update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $tmp.AnAI.l3network.network-id" >
+<parameter name="orchestration-status" value="`$tmp.AnAI.l3network.orchestration-status`" /><outcome value='failure'>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.rollback.error-message" value="`'failed to rollback l3network.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/></set></outcome><outcome value='not-found'>
+<set>
+    <parameter name="error-code" value="500"/>
+    <parameter name="tmp.rollback.error-message" value="`'failed to rollback l3network.orchestration-status in AnAI where subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' MANUAL ROLLBACK IS REQUIRED.'`"/></set></outcome></update></outcome></switch><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Error updating l3-network in AnAI with network-id = ' + $tmp.AnAI.l3network.network-id + ' - ' + $tmp.error-message + ' - ' + $tmp.rollback.error-message`"/></return></block></outcome></switch><set>
+<parameter name="ack-final" value="Y"/></set><return status="success">
+    <parameter name="networkId" value="`$network-topology-operation-input.network-request-information.network-id`" />
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-delete.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-delete.xml
new file mode 100644
index 0000000..ab266a1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-delete.xml
@@ -0,0 +1,75 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc="network-topology-delete" mode="sync"><block atomic="true">
+<switch test="`$network-topology-operation-input.network-request-information.network-id`"><outcome value='Other'><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $network-topology-operation-input.network-request-information.network-id"
+        pfx="tmp.AnAI.l3network">
+<outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value="Failed to query AAI by network-id"/></return></outcome><outcome value='not-found'>
+<return status="success">
+    <parameter name="networkId" value="`$network-topology-operation-input.network-request-information.network-id` not found" />
+    <parameter name="error-code" value="200" /></return></outcome><outcome value='success'>
+<block atomic="true"><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $tmp.AnAI.l3network.network-id" ></delete><set>
+<parameter name="ack-final" value="Y"/></set><return status='success'>
+    <parameter name="networkId" value="`$tmp.AnAI.l3network.network-id`" />
+    <parameter name="error-code" value="200" /></return></block></outcome></get-resource></outcome><outcome value='0'><switch test="`$network-topology-operation-input.network-request-information.network-name`"><outcome value=''><return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value="DisconnectNetworkRequest requires  network-id or network-name "/></return></outcome><outcome value='Other'><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-name = $network-topology-operation-input.network-request-information.network-name"
+        pfx="tmp.AnAI.l3network">
+<outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value="Failed to query AAI by network-name"/></return></outcome><outcome value='not-found'>
+<return status="success">
+    <parameter name="augmentation" value="`$network-topology-operation-input.network-request-information.network-name` not found" />
+    <parameter name="error-code" value="200" /></return></outcome><outcome value='success'>
+<block atomic="true"><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $tmp.AnAI.l3network.network-id" ></delete><set>
+<parameter name="ack-final" value="Y"/></set><return status='success'>
+    <parameter name="networkId" value="`$tmp.AnAI.l3network.network-id`" />
+    <parameter name="error-code" value="200" /></return></block></outcome></get-resource></outcome></switch></outcome><outcome value=''><switch test="`$network-topology-operation-input.network-request-information.network-name`"><outcome value=''><return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value="DisconnectNetworkRequest requires  network-id or network-name "/></return></outcome><outcome value='Other'><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-name = $network-topology-operation-input.network-request-information.network-name"
+        pfx="tmp.AnAI.l3network">
+<outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value="Failed to query AAI by network-name"/></return></outcome><outcome value='not-found'>
+<return status="success">
+    <parameter name="augmentation" value="`$network-topology-operation-input.network-request-information.network-name` not found" />
+    <parameter name="error-code" value="200" /></return></outcome><outcome value='success'>
+<block atomic="true"><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $tmp.AnAI.l3network.network-id" ></delete><set>
+<parameter name="ack-final" value="Y"/></set><return status='success'>
+    <parameter name="networkId" value="`$tmp.AnAI.l3network.network-id`" />
+    <parameter name="error-code" value="200" /></return></block></outcome></get-resource></outcome></switch></outcome></switch></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-operation.xml
new file mode 100644
index 0000000..5d97ce1
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-operation.xml
@@ -0,0 +1,70 @@
+<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='VNF-API' version='${project.version}'><method rpc="network-topology-operation" mode="sync"><block atomic="true"><switch test="`$network-topology-operation-input.request-information.request-action`">

+<outcome value='NetworkActivateRequest'><block atomic="true">

+<switch test="`$network-topology-operation-input.network-request-information.network-name`"><outcome value='Other'><switch test="`$preload-data.network-topology-information.network-topology-identifier.network-name`"><outcome value='Other'><switch test="`$network-topology-operation-input.network-request-information.network-name == $preload-data.network-topology-information.network-topology-identifier.network-name`"><outcome value='false'>

+<return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value="`'No preload-data found to match input network-name = ' + $network-topology-operation-input.network-request-information.network-name`"/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='network-name not found from preload-data'/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='network-name is required from input'/></return></outcome></switch><switch test="`$network-topology-operation-input.network-request-information.network-type`"><outcome value='Other'><switch test="`$preload-data.network-topology-information.network-topology-identifier.network-type`"><outcome value='Other'><switch test="`$network-topology-operation-input.network-request-information.network-type == $preload-data.network-topology-information.network-topology-identifier.network-type`"><outcome value='false'>

+<return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value="`'No preload-data found to match input network-type = ' + $network-topology-operation-input.network-request-information.network-type`"/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='network-type not found from preload-data'/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='network-type is required from input'/></return></outcome></switch><switch test="`$network-topology-operation-input.service-information.service-instance-id`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value='service-instance-id is required.'/></return></outcome></switch><switch test="`$network-topology-operation-input.network-request-information.aic-cloud-region`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value='aic-cloud-region is required.'/></return></outcome></switch><switch test="`$network-topology-operation-input.network-request-information.tenant`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value='tenant is required.'/></return></outcome></switch><switch test="`$network-topology-operation-input.service-information.service-id`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value='service-id is required.'/></return></outcome></switch><switch test="`$network-topology-operation-input.sdnc-request-header.svc-action`">

+<!--

+leaf svc-action { 

+	type enumeration { 

+		enum "reserve";

+		enum "assign";

+		enum "activate";  // equal to commit

+		enum "delete";	  // equal to commit

+		enum "changeassign";

+		enum "changedelete";

+		enum "rollback";

+	}

+}

+-->

+

+<outcome value='Other'>

+<return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='svc-action is not found'/></return></outcome><outcome value='assign'><call module="VNF-API" rpc="network-topology-assign" mode="sync" >

+</call></outcome><outcome value='changeassign'><call module="VNF-API" rpc="network-topology-changeassign" mode="sync" >

+</call></outcome><outcome value='rollback'><call module="VNF-API" rpc="network-topology-rollback" mode="sync" >

+</call></outcome></switch></block></outcome><outcome value='DisconnectNetworkRequest'><switch test="`$network-topology-operation-input.sdnc-request-header.svc-action`">

+<!--

+leaf svc-action { 

+	type enumeration { 

+		enum "reserve";

+		enum "assign";

+		enum "activate";  // equal to commit

+		enum "delete";	  // equal to commit

+		enum "changeassign";

+		enum "changedelete";

+		enum "rollback";

+	}

+}

+-->

+

+<outcome value='rollback'><call module="VNF-API" rpc="network-topology-rollback" mode="sync" >

+</call></outcome><outcome value='delete'><call module="VNF-API" rpc="network-topology-delete" mode="sync" >

+</call></outcome><outcome value='Other'>

+<return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='svc-action is not found'/></return></outcome></switch></outcome><outcome value="Other">

+

+<return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='request-action is not found'/></return></outcome></switch></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-rollback.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-rollback.xml
new file mode 100644
index 0000000..61c8790
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_network-topology-rollback.xml
@@ -0,0 +1,75 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc="network-topology-rollback" mode="sync"><block atomic="true"><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $network-topology-operation-input.network-request-information.network-id"
+        pfx="tmp.AnAI.l3network">
+<outcome value='not-found'>
+<return status='failure'>
+    <parameter name="error-code" value="404" />
+    <parameter name="error-message" value="`'l3-network not found in AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`" /></return></outcome><outcome value='failure'>
+<return status='failure'>
+    <parameter name="error-code" value="500" />
+    <parameter name="error-message" value="`'An error occurred while querying l3-network from AnAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`" /></return></outcome></get-resource><switch test="`$tmp.AnAI.l3network.orchestration-status`"><outcome value='pending-create'>
+<delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $network-topology-operation-input.network-request-information.network-id" ><outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Failed to delete l3-network from AAI with network-id = ' + $network-topology-operation-input.network-request-information.network-id`"/></return></outcome></delete></outcome><outcome value='pending-delete'>
+<update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $network-topology-operation-input.network-request-information.network-id" >
+<parameter name="orchestration-status" value="active" /><outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Failed to update l3-netework orchestration-status in AnAI for network-id = ' + $network-topology-operation-input.network-request-information.network-id`"/></return></outcome></update></outcome><outcome value='pending-update'>
+<block atomic="true">
+<switch test="`$tmp.AnAI.l3network.subnets.subnet_length`"><outcome value=''><set>
+<parameter name="tmp.AnAI.l3network.subnets.subnet_length" value="0" />
+</set></outcome></switch><for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`">
+<switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].orchestration-status`"><outcome value='pending-create'>
+<delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="subnet"
+        key="l3-network.network-id = $network-topology-operation-input.network-request-information.network-id
+            AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id" ><outcome value='failure'>
+<return status='failure'>
+    <parameter name="error-code" value="500" />
+    <parameter name="error-message" value="`'Failed to rollback to delete subnet from AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' and network-id = ' + $network-topology-operation-input.network-request-information.network-id`" /></return></outcome></delete></outcome><outcome value='pending-delete'>
+<update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="subnet"
+        key="l3-network.network-id = $network-topology-operation-input.network-request-information.network-id
+            AND subnet.subnet-id = $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id" >
+    <parameter name="orchestration-status" value="active" />
+        <outcome value='failure'>
+<return status='failure'>
+    <parameter name="error-code" value="500" />
+    <parameter name="error-message" value="`'Failed to rollback subnet orchestration-status from AnAI with subnet-id = ' + $tmp.AnAI.l3network.subnets.subnet[$i].subnet-id + ' and network-id = ' + $network-topology-operation-input.network-request-information.network-id`" /></return></outcome></update></outcome></switch></for><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $network-topology-operation-input.network-request-information.network-id" >
+<parameter name="orchestration-status" value="active" /><outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Failed to rollback l3-netework orchestration-status in AnAI for network-id = ' + $network-topology-operation-input.network-request-information.network-id`"/></return></outcome></update></block></outcome></switch><set>
+<parameter name="ack-final" value="Y"/></set><return status="success">
+    <parameter name="networkId" value="`$network-topology-operation-input.network-request-information.network-id`" />
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_preload-network-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_preload-network-topology-operation.xml
new file mode 100644
index 0000000..3c1c5a3
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_preload-network-topology-operation.xml
@@ -0,0 +1,20 @@
+<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='VNF-API' version='${project.version}'><method rpc="preload-network-topology-operation" mode="sync"><block atomic="true"><switch test="`$preload-network-topology-operation-input.request-information.request-action`">

+<outcome value='PreloadNetworkRequest'><block atomic="true"><set>

+<parameter name="preload-data." value="" />

+</set><set>

+<parameter name="preload-data." value="preload-network-topology-operation-input." />

+</set><set>

+	<parameter name="preload-data.oper-status.order-status" value="PendingAssignment"/></set><set>

+<parameter name="ack-final" value="Y"/></set><return status="success">

+	<parameter name="error-code" value="200" /></return></block></outcome><outcome value='DeletePreloadNetworkRequest'><block atomic="true"><set>

+<parameter name="preload-data." value="" />

+</set><set>

+<parameter name="ack-final" value="Y"/></set><return status="success">

+	<parameter name="error-code" value="200" /></return></block></outcome><outcome value="Other">

+

+ <return status="failure">

+	<parameter name='error-code' value='2000'/>

+	<parameter name='error-message' value='Invalid Request `$preload-network-topology-operation-input.request-information.request-action`'/>

+

+ 

+</return></outcome></switch></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_preload-vf-module-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_preload-vf-module-topology-operation.xml
new file mode 100644
index 0000000..c19b096
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_preload-vf-module-topology-operation.xml
@@ -0,0 +1,31 @@
+<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='VNF-API' version='${project.version}'><method rpc="preload-vf-module-topology-operation" mode="sync"><block atomic="true"><switch test="`$preload-vf-module-topology-operation-input.request-information.request-action`">

+

+<outcome value='PreloadVfModuleRequest'><block atomic="true"><get-resource plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" 

+	resource="vnf-profile" key="SELECT * from VNF_PROFILE where vnf_type = $preload-vf-module-topology-operation-input.vf-module-topology-information.vf-module-identifiers.vf-module-model-id">

+<outcome value='not-found'>

+<return status='failure'>

+	<parameter name="error-code" value="404" />

+	<parameter name="error-message" value="preload vnf-model-id not found. New vnf-model-id can be added via admin portal" /></return></outcome><outcome value='failure'>

+<return status='failure'>

+	<parameter name="error-code" value="404" />

+	<parameter name="error-message" value="preload vnf-model-id not found. New vnf-model-id can be added via admin portal" /></return></outcome></get-resource><set>

+<parameter name="vf-module-preload-data." value="" />

+</set><set>

+<parameter name="vf-module-preload-data." value="preload-vf-module-topology-operation-input." />

+</set><set>

+	<parameter name="vf-module-preload-data.oper-status.order-status" value="PendingAssignment"/></set><block>

+<set>

+<parameter name="ack-final" value="Y"/></set><return status="success">

+	<parameter name="error-code" value="200" /></return></block></block></outcome><outcome value='DeletePreloadVfModuleRequest'><block atomic="true"><set>

+<parameter name="vf-module-preload-data." value="" />

+</set><block>

+<set>

+<parameter name="ack-final" value="Y"/></set><return status="success">

+	<parameter name="error-code" value="200" /></return></block></block></outcome><outcome value="Other">

+

+ <return status="failure">

+	<parameter name='error-code' value='2000'/>

+	<parameter name='error-message' value="`'Invalid Request, ' + $preload-vf-module-topology-operation-input.request-information.request-action`"/>

+

+ 

+</return></outcome></switch></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_preload-vnf-instance-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_preload-vnf-instance-topology-operation.xml
new file mode 100644
index 0000000..5b0e0f0
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_preload-vnf-instance-topology-operation.xml
@@ -0,0 +1,31 @@
+<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='VNF-API' version='${project.version}'><method rpc="preload-vnf-instance-topology-operation" mode="sync"><block atomic="true"><switch test="`$preload-vnf-instance-topology-operation-input.request-information.request-action`">

+

+<outcome value='PreloadVnfInstanceRequest'><block atomic="true"><get-resource plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" 

+	resource="vnf-profile" key="SELECT * from VNF_PROFILE where vnf_type = $preload-vnf-instance-topology-operation-input.vnf-instance-topology-information.vnf-instance-identifiers.vnf-model-id">

+<outcome value='not-found'>

+<return status='failure'>

+	<parameter name="error-code" value="404" />

+	<parameter name="error-message" value="preload vnf-model-id not found. New vnf-model-id can be added via admin portal" /></return></outcome><outcome value='failure'>

+<return status='failure'>

+	<parameter name="error-code" value="404" />

+	<parameter name="error-message" value="preload vnf-model-id not found. New vnf-model-id can be added via admin portal" /></return></outcome></get-resource><set>

+<parameter name="vnf-instance-preload-data." value="" />

+</set><set>

+<parameter name="vnf-instance-preload-data." value="preload-vnf-instance-topology-operation-input." />

+</set><set>

+	<parameter name="vnf-instance-preload-data.oper-status.order-status" value="PendingAssignment"/></set><block>

+<set>

+<parameter name="ack-final" value="Y"/></set><return status="success">

+	<parameter name="error-code" value="200" /></return></block></block></outcome><outcome value='DeletePreloadVnfInstanceRequest'><block atomic="true"><set>

+<parameter name="vnf-instance-preload-data." value="" />

+</set><block>

+<set>

+<parameter name="ack-final" value="Y"/></set><return status="success">

+	<parameter name="error-code" value="200" /></return></block></block></outcome><outcome value="Other">

+

+ <return status="failure">

+	<parameter name='error-code' value='2000'/>

+	<parameter name='error-message' value='Invalid Request `$preload-vnf-instance-topology-operation-input.request-information.request-action`'/>

+

+ 

+</return></outcome></switch></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_preload-vnf-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_preload-vnf-topology-operation.xml
new file mode 100644
index 0000000..6e84ef7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_preload-vnf-topology-operation.xml
@@ -0,0 +1,32 @@
+<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='VNF-API' version='${project.version}'><method rpc="preload-vnf-topology-operation" mode="sync"><block atomic="true"><switch test="`$preload-vnf-topology-operation-input.request-information.request-action`">

+<!--

+leaf request-action { 

+				type enumeration { 

+					enum "VNFActivateRequest";

+					enum "ChangeVNFActivateRequest";

+					enum "DisconnectVNFRequest";

+					enum "PreloadVNFRequest";

+					enum "DeletePreloadVNFRequest";

+				} 

+}

+-->

+

+<outcome value='PreloadVNFRequest'><block atomic="true"><set>

+<parameter name="ack-final" value="Y"/></set><set only-if-unset="true">

+<parameter name="sql-resource-plugin" value="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource"/></set><set>

+<parameter name="preload-data." value="" />

+</set><set>

+<parameter name="preload-data." value="preload-vnf-topology-operation-input." />

+</set><set>

+	<parameter name="preload-data.oper-status.order-status" value="PendingAssignment"/></set><return status="success">

+	<parameter name="error-code" value="200" /></return></block></outcome><outcome value='DeletePreloadVNFRequest'><block atomic="true"><set>

+<parameter name="preload-data." value="" />

+</set><return status="success">

+	<parameter name="error-code" value="200" /></return></block></outcome><outcome value="Other">

+

+ <return status="failure">

+	<parameter name='error-code' value='2000'/>

+	<parameter name='error-message' value='Invalid Request `$preload-vnf-topology-operation-input.request-information.request-action`'/>

+

+ 

+</return></outcome></switch></block></method></service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_rollback-eipam-ip-assignment.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_rollback-eipam-ip-assignment.xml
new file mode 100644
index 0000000..e400b42
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_rollback-eipam-ip-assignment.xml
@@ -0,0 +1,22 @@
+<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='VNF-API' version='${project.version}'><method rpc='rollback-eipam-ip-assignment' mode='sync'>

+<block atomic="true"><set>

+<parameter name='tmp.status' 

+	value="`'PENDING_DELETE_' + $vnf-topology-operation-input.vnf-request-information.vnf-id`" />

+<parameter name='service-data.service-information.service-type' 

+	value='NOT_APPLICABLE' />

+	

+</set><update plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"

+	key="UPDATE EIPAM_IP_ASSIGNMENTS set status = $tmp.status 

+		WHERE info = $vnf-topology-operation-input.vnf-request-information.vnf-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 updating EIPAM_IP_ASSIGNMENTS table on rollback." />

+</return></outcome></update><execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="unassignIPAddress">

+<parameter name="deleteEIPAM_status" value="`$tmp.status`" />

+<outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="Error in EIPAM unassign IP address on rollback." />

+</return></outcome></execute></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-activate.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-activate.xml
new file mode 100644
index 0000000..4ebc5ee
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-activate.xml
@@ -0,0 +1,45 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc='vf-module-topology-activate' mode='sync'>
+<block atomic="true"><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vf-module-id == $vf-module-service-data.vf-module-id`"><outcome value='false'>
+<return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value="`'vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' not found in SDNC'`"/></return></outcome></switch><switch test="`$vf-module-service-data.oper-status.order-status == PendingCreate`"><outcome value='false'><switch test="`$vf-module-service-data.oper-status.order-status == PendingUpdate`"><outcome value='false'><return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value='Invalid order-status'/></return></outcome></switch></outcome></switch><set>
+    <parameter name="vf-module-service-data.oper-status.last-order-status" value="`$vf-module-service-data.oper-status.order-status`"/></set><set>
+    <parameter name="vf-module-service-data.oper-status.order-status" value="Active"/></set><set>
+    <parameter name="vf-module-service-data.oper-status.last-action" value="`$vf-module-service-data.request-information.request-action`"/></set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="vf-module"
+        key="vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id
+            AND generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id" >
+    <parameter name="orchestration-status" value="active" /><outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'An error occurred while updating vf-module orchestration-status in AnAI with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and vnf-instance-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`"/></return></outcome><outcome value='not-found'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'An error occurred while updating vf-module orchestration-status in AnAI with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and vnf-instance-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`"/></return></outcome></update><set>
+    <parameter name="vf-module-service-data." value="vf-module-topology-operation-input." /></set><switch test="`$vnf-instance-service-data.vf-module-relationship-list_length`"><outcome value=''><set>
+    <parameter name="vnf-instance-service-data.vf-module-relationship-list_length" value="0" /></set></outcome></switch><set>
+    <parameter name="vnf-instance-service-data.vf-module-relationship-list[$vnf-instance-service-data.vf-module-relationship-list_length].vf-module-id" value="`$vf-module-topology-operation-input.vf-module-request-information.vf-module-id`" /></set><return status='success'>
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-assign-vnf-networks.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-assign-vnf-networks.xml
new file mode 100644
index 0000000..ec0af29
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-assign-vnf-networks.xml
@@ -0,0 +1,129 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc='vf-module-topology-assign-vnf-networks' mode='sync'><block atomic="true"><switch test="`$vf-module-preload-data.oper-status.order-status == PendingAssignment`"><outcome value='false'><return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value='Invalid preload-data order status'/></return></outcome></switch><set>
+    <parameter name="vf-module-service-data." value="vf-module-preload-data." /></set><set>
+    <parameter name="vf-module-service-data." value="vf-module-topology-operation-input." /></set><set>
+    <parameter name="vf-module-service-data.vf-module-id" value="`$vf-module-topology-operation-input.vf-module-request-information.vf-module-id`"/></set><switch test="`$vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''><set>
+<parameter name = "vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks_length" value="0" />
+</set></outcome></switch><for index="j" start="0" end="`$vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`"><block atomic="true">
+<set>
+<parameter name='tmp.usePreload' value='1' />
+<parameter name='tmp.AnAI.l3network.' value='' />
+</set><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks_length`"><outcome value=''><set>
+<parameter name='vf-module-topology-operation-input.vf-module-request-information.vnf-networks_length' value='0' />
+</set></outcome></switch><block atomic="true">
+<for index="i" start="0" end="`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks_length`"><switch test="`$vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks[$j].network-role == $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-role`"><outcome value='true'>
+<block atomic="true">
+<set>
+<parameter name='tmp.usePreload' value='0' />
+</set><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-id == '' or $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-id == '0'`"><outcome value='false'><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-id"
+    pfx="tmp.AnAI.l3network">
+<outcome value='failure'>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'An error occurred while querying AnAI for l3-network with network-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-id`"  />
+</return></outcome><outcome value='not-found'>
+<set>
+<parameter name='tmp.usePreload' value='1' />
+</set></outcome></get-resource></outcome><outcome value='true'>
+<switch test="`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-name == '' or $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-name == '0'`"><outcome value='true'>
+<set>
+<parameter name='tmp.usePreload' value='1' />
+</set></outcome><outcome value='false'><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-name = $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-name"
+    pfx="tmp.AnAI.l3network">
+
+<outcome value='failure'>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'An error occurred whie querying AnAI for l3-network with network-name = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-name`"  />
+</return></outcome><outcome value='not-found'>
+<set>
+<parameter name='tmp.usePreload' value='1' />
+</set></outcome></get-resource></outcome></switch></outcome></switch><switch test="`$tmp.usePreload == 0`"><outcome value='true'>
+<block>
+<switch test="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''>
+<set>
+    <parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length" value = "0" /></set></outcome></switch><for index="k" start="0" end="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`"><switch test="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].network-role == $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].network-role`"><outcome value='true'>
+<block>
+<set>
+<parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].network-name" value="`$tmp.AnAI.l3network.network-name`" />
+<parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].network-id" value="`$tmp.AnAI.l3network.network-id`" />
+<parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].neutron-id" value="`$tmp.AnAI.l3network.neutron-network-id`" />
+<parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].contrail-network-fqdn" value="`$tmp.AnAI.l3network.contrail-network-fqdn`" />
+</set><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].subnet-id != ''`"><outcome value='true'>
+<set>
+<parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].subnet-id" value="`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].subnet-id`" /></set></outcome><outcome value='false'>
+<switch test="`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].subnet-name != ''`"><outcome value='true'>
+<switch test="`$tmp.AnAI.l3network.subnets.subnet_length != ''`"><outcome value='true'>
+<for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`"><switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].subnet-name`"><outcome value='true'>
+<set>
+<parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`" /></set></outcome></switch></for></outcome></switch></outcome></switch></outcome></switch><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].ipv6-subnet-id != ''`"><outcome value='true'>
+<set>
+<parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id" value="`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].ipv6-subnet-id`" /></set></outcome><outcome value='false'>
+<switch test="`$vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].ipv6-subnet-name != ''`"><outcome value='true'>
+<switch test="`$tmp.AnAI.l3network.subnets.subnet_length != ''`"><outcome value='true'>
+<for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`"><switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$i].ipv6-subnet-name`"><outcome value='true'>
+<set>
+<parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`" /></set></outcome></switch></for></outcome></switch></outcome></switch></outcome></switch></block></outcome></switch></for></block></outcome></switch></block></outcome></switch></for><switch test="`$tmp.usePreload == 1`"><outcome value='true'><block atomic="true">
+<get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-name = $vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks[$j].network-name"
+    pfx="tmp.AnAI.l3network">
+<outcome value='not-found'>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'PRELOAD network-name = ' + $vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks[$j].network-name + ' not found in AnAI'`"  />
+</return></outcome><outcome value='failure'>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'An error occurred while querying AnAI for l3-network with network-name = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-networks[$j].network-name`"  />
+</return></outcome><outcome value='success'>
+<switch test="`$tmp.AnAI.l3network.network-id == ''`"><outcome value='true'><return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'An error occurred while querying l3-network with network-name = ' + $vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks[$j].network-name + ' , it is likely that there are more than one l3-newtork object with the same network-name in AnAI.'`"  />
+</return></outcome></switch></outcome></get-resource><switch test="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''>
+<set>
+    <parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length" value = "0" /></set></outcome></switch><for index="k" start="0" end="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`"><switch test="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].network-role == $vf-module-preload-data.vf-module-topology-information.vnf-assignments.vnf-networks[$j].network-role`"><outcome value='true'>
+<block><set>
+<parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].network-name" value="`$tmp.AnAI.l3network.network-name`" />
+<parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].network-id" value="`$tmp.AnAI.l3network.network-id`" />
+<parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].neutron-id" value="`$tmp.AnAI.l3network.neutron-network-id`" />
+<parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].contrail-network-fqdn" value="`$tmp.AnAI.l3network.contrail-network-fqdn`" />
+
+</set><switch test="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].subnet-id == ''`"><outcome value='true'>
+<switch test="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].subnet-name != ''`"><outcome value='true'>
+<switch test="`$tmp.AnAI.l3network.subnets.subnet_length != ''`"><outcome value='true'>
+<for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`"><switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].subnet-name`"><outcome value='true'>
+<set>
+<parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`" /></set></outcome></switch></for></outcome></switch></outcome></switch></outcome></switch><switch test="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id == ''`"><outcome value='true'>
+<switch test="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-name != ''`"><outcome value='true'>
+<switch test="`$tmp.AnAI.l3network.subnets.subnet_length != ''`"><outcome value='true'>
+<for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`"><switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-name`"><outcome value='true'>
+<set>
+<parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`" /></set></outcome></switch></for></outcome></switch></outcome></switch></outcome></switch></block></outcome></switch></for></block></outcome></switch></block></block></for><return status='success'>
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-assign.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-assign.xml
new file mode 100644
index 0000000..ad23cac
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-assign.xml
@@ -0,0 +1,63 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc='vf-module-topology-assign' mode='sync'>
+<block atomic="true"><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="vf-module"
+        key="vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id
+            and generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id"
+        pfx="tmp.AnAI.vfmodule" ><outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'An error occurred while querying vf-module from AnAI with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and vnf-instance-id = ' + vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`"/></return></outcome><outcome value='not-found'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'vf-module not found in AnAI with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and vnf-instance-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`"/></return></outcome></get-resource><call module='VNF-API' rpc='vf-module-topology-assign-vnf-networks' mode='sync' ></call><switch test="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''><set>
+<parameter name='vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length' value='0' />
+</set></outcome></switch><for index="i" start="0" end="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`"><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="vf-module:relationship-list"
+        key="vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id
+            and generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id" >
+    <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$i].network-id`" /><outcome value='failure'>
+<block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="vf-module:relationship-list"
+        key="vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id
+            AND generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id
+            AND related-to = l3-network" ></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'An error occurred while saving vf-module l3-network relationship in AnAI with network-id = ' + $vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$i].network-id`"/></return></block></outcome></save></for><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="vf-module"
+        key="vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id
+            and generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id" >
+<parameter name="orchestration-status" value="pending-create" /><outcome value='failure'>
+<block atomic="true">
+<delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="vf-module:relationship-list"
+        key="vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id
+            AND generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id
+            AND related-to = l3-network" ></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="An error occurred while updating vf-module orchestration-status in AnAI"/></return></block></outcome></update><set>
+    <parameter name="vf-module-service-data.oper-status.order-status" value="PendingCreate"/></set><set>
+<parameter name="ack-final" value="Y"/></set><return status='success'>
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-changeassign.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-changeassign.xml
new file mode 100644
index 0000000..b5e7e57
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-changeassign.xml
@@ -0,0 +1,85 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc='vf-module-topology-changeassign' mode='sync'>
+<block atomic="true"><switch test="`$vf-module-service-data.oper-status.order-status == Active`"><outcome value='false'><return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value='Invalid service-data order status'/></return></outcome></switch><call module='VNF-API' rpc='vf-module-topology-assign-vnf-networks' mode='sync' ></call><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="vf-module"
+        key="vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id
+            and generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id"
+        pfx="tmp.AnAI.vfmodule"><outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'An error occurred while querying vf-module from AnAI with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and vnf-instance-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`"/></return></outcome><outcome value='not-found'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'An error occurred while querying vf-module from AnAI with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and vnf-instance-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`"/></return></outcome></get-resource><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="vf-module:relationship-list"
+        key="vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id
+            AND generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id
+            AND related-to = l3-network" ><outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'An error occurred while deleting existing vf-module l3-network relationship in AnAI with with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and vnf-instance-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id + ' vf-module update FAILED.'`"/></return></outcome></delete><switch test="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''>
+<set>
+    <parameter name="vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length" value = "0" /></set></outcome></switch><for index="i" start="0" end="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks_length`"><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="vf-module:relationship-list"
+        key="vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id
+            AND generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id" >
+
+    <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$i].network-id`" /><outcome value='failure'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500" />
+    <parameter name="error-message" value="`' | An error occurred while saving l3-network relationship with network-id = ' + $vf-module-service-data.vf-module-topology-information.vnf-assignments.vnf-networks[$i].network-id + ' for vf-module with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and generic-vnf-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`" />
+</set><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="vf-module:relationship-list"
+        key="vf-module.vf-module-id = $vf-module-topology-operation-input.vf-module-request-information.vf-module-id
+            AND generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id
+            AND related-to = l3-network" ></delete><switch test="`$tmp.AnAI.vfmodule.relationship-list.relationship_length`"><outcome value=''>
+<set>
+    <parameter name="tmp.AnAI.vfmodule.relationship-list.relationship_length" value = "0" /></set></outcome></switch><for index="i" start="0" end="`$tmp.AnAI.vfmodule.relationship-list.relationship_length`"><switch test="`$tmp.AnAI.vfmodule.relationship-list.relationship[$i].related-to`"><outcome value='l3-network'><block atomic='true'><switch test="`$tmp.AnAI.vfmodule.relationship-list.relationship[$i].relationship-data_length`"><outcome value=''>
+<set>
+    <parameter name="tmp.AnAI.vfmodule.relationship-list.relationship[$i].relationship-data_length" value = "0" /></set></outcome></switch><for index="j" start="0" end="`$tmp.AnAI.vfmodule.relationship-list.relationship[$i].relationship-data_length`"><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="vf-module:relationship-list"
+        key="vf-module.vf-module-id = vf-module-topology-operation-input.vf-module-request-information.vf-module-id
+            AND generic-vnf.vnf-id = $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id" >
+
+    <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.vfmodule.relationship-list.relationship[$i].relationship-data[$j].relationship-value`" /><outcome value='failure'>
+<set>
+    <parameter name="error-code" value="500" />
+    <parameter name="error-message" value="`$error-message + ' | An error occurred while during rollback of l3-network relationship for vf-module with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and generic-vnf-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`" />
+</set></outcome><outcome value='not-found'>
+<set>
+    <parameter name="error-code" value="500" />
+    <parameter name="error-message" value="`$error-message + ' | An error occurred while during rollback of l3-network relationship for vf-module with vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' and generic-vnf-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`" />
+</set></outcome></save></for></block></outcome></switch></for><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Failed to update vf-module l3-network relationship in AnAI. ' + $error-message`"/></return></block></outcome></save></for><set>
+    <parameter name="vf-module-service-data.oper-status.last-order-status" value="`$vf-module-service-data.oper-status.order-status`"/></set><set>
+    <parameter name="vf-module-service-data.oper-status.order-status" value="PendingUpdate"/></set><set>
+    <parameter name="vf-module-service-data.oper-status.last-action" value="`$vf-module-service-data.request-information.request-action`"/></set><set>
+<parameter name="ack-final" value="Y"/></set><return status='success'>
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-delete.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-delete.xml
new file mode 100644
index 0000000..78cec6a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-delete.xml
@@ -0,0 +1,35 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc='vf-module-topology-delete' mode='sync'>
+<block atomic="true"><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vf-module-id == $vf-module-service-data.vf-module-id`"><outcome value='false'>
+<return status='failure'>
+    <parameter name='error-code' value='404'/>
+    <parameter name='error-message' value='vf-module-id not found in SDNC'/></return></outcome></switch><switch test="`$vf-module-service-data.oper-status.order-status == Active`"><outcome value='false'><return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value='Invalid order-status'/></return></outcome></switch><set>
+    <parameter name="vf-module-service-data.oper-status.last-order-status" value="`$vf-module-service-data.oper-status.order-status`"/></set><set>
+    <parameter name="vf-module-service-data.oper-status.order-status" value="Deleted"/></set><set>
+    <parameter name="vf-module-service-data.oper-status.last-action" value="`$vf-module-service-data.request-information.request-action`"/></set><set>
+    <parameter name="vf-module-service-data.vf-module-topology-information." value="" />
+</set><set>
+<parameter name="ack-final" value="Y"/></set><return status='success'>
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-operation.xml
new file mode 100644
index 0000000..dbe31b2
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-operation.xml
@@ -0,0 +1,48 @@
+<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='VNF-API' version='${project.version}'><method rpc='vf-module-topology-operation' mode='sync'>

+<block atomic="true"><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vf-module-name`"><outcome value='Other'><switch test="`$vf-module-preload-data.vf-module-topology-information.vf-module-identifiers.vf-module-name`"><outcome value='Other'><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vf-module-name == $vf-module-preload-data.vf-module-topology-information.vf-module-identifiers.vf-module-name`"><outcome value='false'>

+<return status='failure'>

+	<parameter name='error-code' value='404'/>

+	<parameter name='error-message' value='vf-module-name not found in vf-module-preload-data'/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='No preload data found to match vf-module-name'/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vf-module-name is required'/></return></outcome></switch><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vf-module-model-id`"><outcome value='Other'><switch test="`$vf-module-preload-data.vf-module-topology-information.vf-module-identifiers.vf-module-model-id`"><outcome value='Other'><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vf-module-model-id == $vf-module-preload-data.vf-module-topology-information.vf-module-identifiers.vf-module-model-id`"><outcome value='false'>

+<return status='failure'>

+	<parameter name='error-code' value='404'/>

+	<parameter name='error-message' value='vf-module-model-id not found in vf-module-preload-data'/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='No preload data found to match vf-module-model-id from input'/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vf-module-model-id is required'/></return></outcome></switch><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vf-module-id`"><outcome value='0'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vf-module-id cannot be NULL or 0'/></return></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vf-module-id cannot be NULL or 0'/></return></outcome></switch><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vnf-instance-id`"><outcome value='0'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vnf-instance-id cannot be NULL or 0'/></return></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vnf-instance-id cannot be NULL or 0'/></return></outcome></switch><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vnf-instance-name`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vnf-instance-name cannot be NULL'/></return></outcome></switch><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vnf-model-id`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vnf-model-id cannot be NULL'/></return></outcome></switch><switch test="`$vf-module-topology-operation-input.vf-module-request-information.aic-cloud-region`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='aic-cloud-region cannot be NULL'/></return></outcome></switch><switch test="`$vf-module-topology-operation-input.sdnc-request-header.svc-action`">

+<!--

+leaf svc-action { 

+	type enumeration { 

+		enum "reserve";

+		enum "assign";

+		enum "activate";  // equal to commit

+		enum "delete";	  // equal to commit

+		enum "changeassign";

+		enum "changedelete";

+		enum "rollback";

+	}

+}

+-->

+

+<outcome value='assign'><call module='VNF-API' rpc='vf-module-topology-assign' mode='sync' ></call></outcome><outcome value='changeassign'><call module='VNF-API' rpc='vf-module-topology-changeassign' mode='sync' ></call></outcome><outcome value='activate'><call module='VNF-API' rpc='vf-module-topology-activate' mode='sync' ></call></outcome><outcome value='rollback'><call module='VNF-API' rpc='vf-module-topology-rollback' mode='sync' ></call></outcome><outcome value='delete'><call module='VNF-API' rpc='vf-module-topology-delete' mode='sync' ></call></outcome><outcome value='Other'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='svc-action not recognized'/>

+</return></outcome></switch></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-rollback.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-rollback.xml
new file mode 100644
index 0000000..3629a9a
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vf-module-topology-rollback.xml
@@ -0,0 +1,35 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc='vf-module-topology-rollback' mode='sync'>
+<block atomic="true"><switch test="`$vf-module-service-data.oper-status.order-status == PendingCreate`"><outcome value='true'><block atomic="true"><switch test="`$vf-module-topology-operation-input.vf-module-request-information.vf-module-id == $vf-module-service-data.vf-module-id`"><outcome value='false'>
+<return status='failure'>
+    <parameter name='error-code' value='404'/>
+    <parameter name='error-message' value="`'vf-module-id = ' + $vf-module-topology-operation-input.vf-module-request-information.vf-module-id + ' not found in SDNC'`"/></return></outcome></switch><switch test="`$vf-module-service-data.oper-status.order-status == PendingCreate`"><outcome value='false'><return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value='Invalid order-status'/></return></outcome></switch><set>
+    <parameter name="vf-module-service-data.oper-status.last-order-status" value="`$vf-module-service-data.oper-status.order-status`"/></set><set>
+    <parameter name="vf-module-service-data.oper-status.order-status" value="Deleted"/></set><set>
+    <parameter name="vf-module-service-data.oper-status.last-action" value="`$vf-modules-service-data.request-information.request-action`"/></set><set>
+    <parameter name="vf-module-service-data." value="" />
+</set><set>
+<parameter name="ack-final" value="Y"/></set><return status='success'>
+    <parameter name="error-code" value="200" /></return></block></outcome></switch></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-activate.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-activate.xml
new file mode 100644
index 0000000..e301b31
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-activate.xml
@@ -0,0 +1,42 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc='vnf-instance-topology-activate' mode='sync'>
+<block atomic="true"><switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id == $vnf-instance-service-data.vnf-instance-id`"><outcome value='false'>
+<return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value="`'vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id + ' not found in SDNC'`"/></return></outcome></switch><switch test="`$vnf-instance-service-data.oper-status.order-status == PendingCreate`"><outcome value='false'><switch test="`$vnf-instance-service-data.oper-status.order-status == PendingUpdate`"><outcome value='false'><return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value='Invalid order-status'/></return></outcome></switch></outcome></switch><set>
+    <parameter name="vnf-instance-service-data.oper-status.last-order-status" value="`$vnf-instance-service-data.oper-status.order-status`"/></set><set>
+    <parameter name="vnf-instance-service-data.oper-status.order-status" value="Active"/></set><set>
+    <parameter name="vnf-instance-service-data.oper-status.last-action" value="`$vnf-instance-service-data.request-information.request-action`"/></set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="generic-vnf"
+        key="generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id" >
+<parameter name="orchestration-status" value="active" /><outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'An error occurred while updating vnf-instance orchestration-status in AnAI with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`"/></return></outcome><outcome value='not-found'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'An error occurred while updating vnf-instance orchestration-status in AnAI with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`"/></return></outcome></update><set>
+    <parameter name="vnf-instance-service-data." value="vnf-instance-topology-operation-input." /></set><return status='success'>
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-assign-vnf-networks.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-assign-vnf-networks.xml
new file mode 100644
index 0000000..0190de7
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-assign-vnf-networks.xml
@@ -0,0 +1,130 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc='vnf-instance-topology-assign-vnf-networks' mode='sync'>
+<block atomic="true"><switch test="`$vnf-instance-preload-data.oper-status.order-status == PendingAssignment`"><outcome value='false'><return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value='Invalid preload-data order status'/></return></outcome></switch><set>
+    <parameter name="vnf-instance-service-data." value="vnf-instance-preload-data." /></set><set>
+    <parameter name="vnf-instance-service-data." value="vnf-instance-topology-operation-input." /></set><set>
+    <parameter name="vnf-instance-service-data.vnf-instance-id" value="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`"/></set><switch test="`$vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''><set>
+<parameter name = "vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length" value="0" />
+</set></outcome></switch><for index="j" start="0" end="`$vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`"><block atomic="true">
+<set>
+<parameter name='tmp.usePreload' value='1' />
+<parameter name='tmp.AnAI.l3network.' value='' />
+</set><switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks_length`"><outcome value=''><set>
+<parameter name='vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks_length' value='0' />
+</set></outcome></switch><block atomic="true">
+<for index="i" start="0" end="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks_length`"><switch test="`$vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$j].network-role == $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-role`"><outcome value='true'>
+<block atomic="true">
+<set>
+<parameter name='tmp.usePreload' value='0' />
+</set><switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-id == '' or $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-id == '0'`"><outcome value='false'><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-id"
+    pfx="tmp.AnAI.l3network">
+<outcome value='failure'>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'An error occurred while querying AnAI for l3-network with network-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-id`"  />
+</return></outcome><outcome value='not-found'>
+<set>
+<parameter name='tmp.usePreload' value='1' />
+</set></outcome></get-resource></outcome><outcome value='true'>
+<switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-name == '' or $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-name == '0'`"><outcome value='true'>
+<set>
+<parameter name='tmp.usePreload' value='1' />
+</set></outcome><outcome value='false'><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-name = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-name"
+    pfx="tmp.AnAI.l3network">
+
+<outcome value='failure'>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'An error occurred while querying AnAI for l3-network with network-name = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-name`"  />
+</return></outcome><outcome value='not-found'>
+<set>
+<parameter name='tmp.usePreload' value='1' />
+</set></outcome></get-resource></outcome></switch></outcome></switch><switch test="`$tmp.usePreload == 0`"><outcome value='true'>
+<block>
+<switch test="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''>
+<set>
+    <parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length" value = "0" /></set></outcome></switch><for index="k" start="0" end="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`"><switch test="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].network-role == $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].network-role`"><outcome value='true'>
+<block>
+<set>
+<parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].network-name" value="`$tmp.AnAI.l3network.network-name`" />
+<parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].network-id" value="`$tmp.AnAI.l3network.network-id`" />
+<parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].neutron-id" value="`$tmp.AnAI.l3network.neutron-network-id`" />
+<parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].contrail-network-fqdn" value="`$tmp.AnAI.l3network.contrail-network-fqdn`" />
+</set><switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].subnet-id != ''`"><outcome value='true'>
+<set>
+<parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].subnet-id" value="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].subnet-id`" /></set></outcome><outcome value='false'>
+<switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].subnet-name != ''`"><outcome value='true'>
+<switch test="`$tmp.AnAI.l3network.subnets.subnet_length != ''`"><outcome value='true'>
+<for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`"><switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].subnet-name`"><outcome value='true'>
+<set>
+<parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`" /></set></outcome></switch></for></outcome></switch></outcome></switch></outcome></switch><switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].ipv6-subnet-id != ''`"><outcome value='true'>
+<set>
+<parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id" value="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].ipv6-subnet-id`" /></set></outcome><outcome value='false'>
+<switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].ipv6-subnet-name != ''`"><outcome value='true'>
+<switch test="`$tmp.AnAI.l3network.subnets.subnet_length != ''`"><outcome value='true'>
+<for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`"><switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$i].ipv6-subnet-name`"><outcome value='true'>
+<set>
+<parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`" /></set></outcome></switch></for></outcome></switch></outcome></switch></outcome></switch></block></outcome></switch></for></block></outcome></switch></block></outcome></switch></for><switch test="`$tmp.usePreload == 1`"><outcome value='true'><block atomic="true">
+<get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-name = $vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$j].network-name"
+    pfx="tmp.AnAI.l3network">
+<outcome value='not-found'>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'PRELOAD network-name = ' + $vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$j].network-name + ' not found in AnAI'`"  />
+</return></outcome><outcome value='failure'>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'An error occurred while querying AnAI for l3-network with network-name = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-networks[$j].network-name`"  />
+</return></outcome><outcome value='success'>
+<switch test="`$tmp.AnAI.l3network.network-id == ''`"><outcome value='true'><return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'An error occurred while querying l3-network with network-name = ' + $vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$j].network-name + ' , it is likely that there are more than one l3-newtork object with the same network-name in AnAI.'`"  />
+</return></outcome></switch></outcome></get-resource><switch test="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''>
+<set>
+    <parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length" value = "0" /></set></outcome></switch><for index="k" start="0" end="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`"><switch test="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].network-role == $vnf-instance-preload-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$j].network-role`"><outcome value='true'>
+<block><set>
+<parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].network-name" value="`$tmp.AnAI.l3network.network-name`" />
+<parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].network-id" value="`$tmp.AnAI.l3network.network-id`" />
+<parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].neutron-id" value="`$tmp.AnAI.l3network.neutron-network-id`" />
+<parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].contrail-network-fqdn" value="`$tmp.AnAI.l3network.contrail-network-fqdn`" />
+
+</set><switch test="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].subnet-id == ''`"><outcome value='true'>
+<switch test="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].subnet-name != ''`"><outcome value='true'>
+<switch test="`$tmp.AnAI.l3network.subnets.subnet_length != ''`"><outcome value='true'>
+<for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`"><switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].subnet-name`"><outcome value='true'>
+<set>
+<parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`" /></set></outcome></switch></for></outcome></switch></outcome></switch></outcome></switch><switch test="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id == ''`"><outcome value='true'>
+<switch test="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-name != ''`"><outcome value='true'>
+<switch test="`$tmp.AnAI.l3network.subnets.subnet_length != ''`"><outcome value='true'>
+<for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`"><switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-name`"><outcome value='true'>
+<set>
+<parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`" /></set></outcome></switch></for></outcome></switch></outcome></switch></outcome></switch></block></outcome></switch></for></block></outcome></switch></block></block></for><return status='success'>
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-assign.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-assign.xml
new file mode 100644
index 0000000..05a551d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-assign.xml
@@ -0,0 +1,58 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc='vnf-instance-topology-assign' mode='sync'>
+<block atomic="true"><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="generic-vnf"
+        key="generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id"
+    pfx="tmp.AnAI.vnf-instance" ><outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'An error occurred while querying generic-vnf from AnAI with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`"/></return></outcome><outcome value='not-found'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'generic-vnf not found in AnAI with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`"/></return></outcome></get-resource><call module='VNF-API' rpc='vnf-instance-topology-assign-vnf-networks' mode='sync' ></call><switch test="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''><set>
+<parameter name='vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length' value='0' />
+</set></outcome></switch><for index="i" start="0" end="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`"><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="generic-vnf:relationship-list"
+        key="generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id" >
+    <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$i].network-id`" /><outcome value='failure'>
+<block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="generic-vnf:relationship-list"
+        key="generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id
+            AND related-to = l3-network" ></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'An error occurred while saving generic-vnf l3-network relationship in AnAI with network-id = ' + $vnf-instance.service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$i].network-id`"/></return></block></outcome></save></for><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="generic-vnf"
+        key="generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id" >
+    <parameter name="orchestration-status" value="pending-create" /><outcome value='failure'>
+<block atomic="true">
+<delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="generic-vnf:relationship-list"
+        key="generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id
+            AND related-to = l3-network" ></delete><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="An error occurred while updating vnf-instance orchestration-status in AnAI"/></return></block></outcome></update><set>
+    <parameter name="vnf-instance-service-data.oper-status.order-status" value="PendingCreate"/></set><set>
+<parameter name="ack-final" value="Y"/></set><return status='success'>
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-changeassign.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-changeassign.xml
new file mode 100644
index 0000000..d9b504b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-changeassign.xml
@@ -0,0 +1,80 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc='vnf-instance-topology-changeassign' mode='sync'>
+<block atomic="true"><switch test="`$vnf-instance-service-data.oper-status.order-status == Active`"><outcome value='false'><return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value='Invalid service-data order status'/></return></outcome></switch><call module='VNF-API' rpc='vnf-instance-topology-assign-vnf-networks' mode='sync' ></call><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="generic-vnf"
+        key="generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id"
+    pfx="tmp.AnAI.vnf-instance" ><outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'An error occurred while querying generic-vnf from AnAI with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`"/></return></outcome><outcome value='not-found'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'An error occurred while querying generic-vnf from AnAI with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`"/></return></outcome></get-resource><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="generic-vnf:relationship-list"
+        key="generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id
+            AND related-to = l3-network" ><outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'An error occurred while deleting existing l3-network relationship in AnAI with with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id + ' vnf-instance update FAILED.'`"/></return></outcome></delete><switch test="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''>
+<set>
+    <parameter name="vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length" value = "0" /></set></outcome></switch><for index="i" start="0" end="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks_length`"><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="generic-vnf:relationship-list"
+        key="generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id" >
+
+    <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$i].network-id`" /><outcome value='failure'>
+<block atomic='true'><set>
+    <parameter name="error-code" value="500" />
+    <parameter name="error-message" value="`' | An error occurred while saving l3-network relationship with network-id = ' + $vnf-instance-service-data.vnf-instance-topology-information.vnf-assignments.vnf-networks[$i].network-id + ' for vnf-instance with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`" />
+</set><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="generic-vnf:relationship-list"
+        key="generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id
+            AND related-to = l3-network" ></delete><switch test="`$tmp.AnAI.vnf-instance.relationship-list.relationship_length`"><outcome value=''>
+<set>
+    <parameter name="tmp.AnAI.vnf-instance.relationship-list.relationship_length" value = "0" /></set></outcome></switch><for index="i" start="0" end="`$tmp.AnAI.vnf-instance.relationship-list.relationship_length`"><switch test="`$tmp.AnAI.vnf-instance.relationship-list.relationship[$i].related-to`"><outcome value='l3-network'><block atomic='true'><switch test="`$tmp.AnAI.vnf-instance.relationship-list.relationship[$i].relationship-data_length`"><outcome value=''>
+<set>
+    <parameter name="tmp.AnAI.vnf-instance.relationship-list.relationship[$i].relationship-data_length" value = "0" /></set></outcome></switch><for index="j" start="0" end="`$tmp.AnAI.vnf-instance.relationship-list.relationship[$i].relationship-data_length`"><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="generic-vnf:relationship-list"
+        key="generic-vnf.vnf-id = $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id" >
+
+    <parameter name="relationship-list.relationship[0].related-to" value="l3-network" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />
+    <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.vnf-instance.relationship-list.relationship[$i].relationship-data[$j].relationship-value`" /><outcome value='failure'>
+<set>
+    <parameter name="error-code" value="500" />
+    <parameter name="error-message" value="`$error-message + ' | An error occurred while during rollback of l3-network relationship for vnf-instance with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`" />
+</set></outcome><outcome value='not-found'>
+<set>
+    <parameter name="error-code" value="500" />
+    <parameter name="error-message" value="`$error-message + ' | An error occurred while during rollback of l3-network relationship for vnf-instance with vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`" />
+</set></outcome></save></for></block></outcome></switch></for><return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Failed to update vnf-instance l3-network relationship in AnAI. ' + $error-message`"/></return></block></outcome></save></for><set>
+    <parameter name="vnf-instance-service-data.oper-status.last-order-status" value="`$vnf-instance-service-data.oper-status.order-status`"/></set><set>
+    <parameter name="vnf-instance-service-data.oper-status.order-status" value="PendingUpdate"/></set><set>
+    <parameter name="vnf-instance-service-data.oper-status.last-action" value="`$vnf-instance-service-data.request-information.request-action`"/></set><set>
+<parameter name="ack-final" value="Y"/></set><return status='success'>
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-delete.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-delete.xml
new file mode 100644
index 0000000..b474eec
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-delete.xml
@@ -0,0 +1,35 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc='vnf-instance-topology-delete' mode='sync'>
+<block atomic="true"><switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vf-module-id == $vf-module-service-data.vnf-instance-id`"><outcome value='false'>
+<return status='failure'>
+    <parameter name='error-code' value='404'/>
+    <parameter name='error-message' value='vf-module-id not found in SDNC'/></return></outcome></switch><switch test="`$vnf-instance-service-data.oper-status.order-status == Active`"><outcome value='false'><return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value='Invalid order-status'/></return></outcome></switch><set>
+    <parameter name="vnf-instance-service-data.oper-status.last-order-status" value="`$vnf-instance-service-data.oper-status.order-status`"/></set><set>
+    <parameter name="vnf-instance-service-data.oper-status.order-status" value="Deleted"/></set><set>
+    <parameter name="vnf-instance-service-data.oper-status.last-action" value="`$vnf-instance-service-data.request-information.request-action`"/></set><set>
+    <parameter name="vnf-instance-service-data.vnf-instance-topology-information." value="" />
+</set><set>
+<parameter name="ack-final" value="Y"/></set><return status='success'>
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-operation.xml
new file mode 100644
index 0000000..daaab9c
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-operation.xml
@@ -0,0 +1,26 @@
+<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='VNF-API' version='${project.version}'><method rpc='vnf-instance-topology-operation' mode='sync'>

+<block atomic="true"><switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-name`"><outcome value='Other'><switch test="`$vnf-instance-preload-data.vnf-instance-topology-information.vnf-instance-identifiers.vnf-instance-name`"><outcome value='Other'><switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-name == $vnf-instance-preload-data.vnf-instance-topology-information.vnf-instance-identifiers.vnf-instance-name`"><outcome value='false'>

+<return status='failure'>

+	<parameter name='error-code' value='404'/>

+	<parameter name='error-message' value='vnf-instance-name from input not found in vnf-instance-preload-data'/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='No preload data found to match vnf-instance-name from input'/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vnf-instance-name is required'/></return></outcome></switch><switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-model-id`"><outcome value='Other'><switch test="`$vnf-instance-preload-data.vnf-instance-topology-information.vnf-instance-identifiers.vnf-model-id`"><outcome value='Other'><switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-model-id == $vnf-instance-preload-data.vnf-instance-topology-information.vnf-instance-identifiers.vnf-model-id`"><outcome value='false'>

+<return status='failure'>

+	<parameter name='error-code' value='404'/>

+	<parameter name='error-message' value='request.vnf-model-id not found in vnf-instance-preload-data'/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='No preload data found to match vnf-model-id from input'/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vnf-model-id is required'/></return></outcome></switch><switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id`"><outcome value='0'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vf-instance-id cannot be NULL or 0'/></return></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vf-instance-id cannot be NULL or 0'/></return></outcome></switch><switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.aic-cloud-region`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='aic-cloud-region cannot be NULL'/></return></outcome></switch><switch test="`$vnf-instance-topology-operation-input.sdnc-request-header.svc-action`">

+<outcome value='assign'><call module='VNF-API' rpc='vnf-instance-topology-assign' mode='sync' ></call></outcome><outcome value='changeassign'><call module='VNF-API' rpc='vnf-instance-topology-changeassign' mode='sync' ></call></outcome><outcome value='activate'><call module='VNF-API' rpc='vnf-instance-topology-activate' mode='sync' ></call></outcome><outcome value='rollback'><call module='VNF-API' rpc='vnf-instance-topology-rollback' mode='sync' ></call></outcome><outcome value='delete'><call module='VNF-API' rpc='vnf-instance-topology-delete' mode='sync' ></call></outcome><outcome value='Other'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='svc-action not recognized'/>

+</return></outcome></switch></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-rollback.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-rollback.xml
new file mode 100644
index 0000000..8f2d84d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-instance-topology-rollback.xml
@@ -0,0 +1,35 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc='vnf-instance-topology-rollback' mode='sync'>
+<block atomic="true"><switch test="`$vnf-instance-service-data.oper-status.order-status == PendingCreate`"><outcome value='true'><block atomic="true"><switch test="`$vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id == $vnf-instance-service-data.vnf-instance-id`"><outcome value='false'>
+<return status='failure'>
+    <parameter name='error-code' value='404'/>
+    <parameter name='error-message' value="`'vnf-instance-id = ' + $vnf-instance-topology-operation-input.vnf-instance-request-information.vnf-instance-id + ' not found in SDNC'`"/></return></outcome></switch><switch test="`$vnf-instance-service-data.oper-status.order-status == PendingCreate`"><outcome value='false'><return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value='Invalid order-status'/></return></outcome></switch><set>
+    <parameter name="vnf-instance-service-data.oper-status.last-order-status" value="`$vnf-instance-service-data.oper-status.order-status`"/></set><set>
+    <parameter name="vnf-instance-service-data.oper-status.order-status" value="Deleted"/></set><set>
+    <parameter name="vnf-instance-service-data.oper-status.last-action" value="`$vnf-instances-service-data.request-information.request-action`"/></set><set>
+    <parameter name="vnf-instance-service-data." value="" />
+</set><set>
+<parameter name="ack-final" value="Y"/></set><return status='success'>
+    <parameter name="error-code" value="200" /></return></block></outcome></switch></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-activate.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-activate.xml
new file mode 100644
index 0000000..be61023
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-activate.xml
@@ -0,0 +1,65 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc='vnf-topology-activate' mode='sync'>
+<block atomic="true"><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`"><outcome value='false'>
+<return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value="`'vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' not found in config tree'`"/></return></outcome></switch><switch test="`$service-data.oper-status.order-status == PendingCreate`">
+
+<!--
+leaf order-status {
+    type enumeration {
+        enum "Active";
+        enum "PendingAssignment";
+        enum "PendingCreate";
+        enum "PendingUpdate";
+        enum "Deleted";
+    }
+}
+--><outcome value='false'><switch test="`$service-data.oper-status.order-status == PendingUpdate`">
+
+<!--
+leaf order-status {
+    type enumeration {
+        enum "Active";
+        enum "PendingAssignment";
+        enum "PendingCreate";
+        enum "PendingUpdate";
+        enum "Deleted";
+    }
+}
+--><outcome value='false'><return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value='Invalid last-order-status'/></return></outcome></switch></outcome></switch><set>
+    <parameter name="service-data.oper-status.last-order-status" value="`$service-data.oper-status.order-status`"/></set><set>
+    <parameter name="service-data.oper-status.order-status" value="Active"/></set><set>
+    <parameter name="service-data.oper-status.last-action" value="`$service-data.request-information.request-action`"/></set><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="vf-module"
+        key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id
+            AND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id"
+        local-only="false" >
+    <parameter name="orchestration-status" value="active" /><outcome value='failure'>
+<return status='failure'>
+    <parameter name='error-code' value='500'/>
+    <parameter name='error-message' value="`'Encountered error while updating vf-module orchestration-status in AnAI with vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`"/></return></outcome></update><set>
+    <parameter name="service-data." value="vnf-topology-operation-input." /></set><return status='success'>
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-assign-vfmodule.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-assign-vfmodule.xml
new file mode 100644
index 0000000..c77f02b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-assign-vfmodule.xml
@@ -0,0 +1,148 @@
+<!--
+  ============LICENSE_START=======================================================
+  openECOMP : SDN-C
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property. All rights
+  						reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<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='VNF-API' version='${project.version}'><method rpc='vnf-topology-assign-vfmodule' mode='sync'>
+<block atomic="true"><switch test="`$preload-data.oper-status.order-status == PendingAssignment`">
+<!--
+leaf order-status {
+    type enumeration {
+        enum "Active";
+        enum "PendingAssignment";
+        enum "PendingCreate";
+        enum "PendingUpdate";
+        enum "Deleted";
+    }
+}
+--><outcome value='false'><return status='failure'>
+    <parameter name='error-code' value='400'/>
+    <parameter name='error-message' value='Invalid preload-data order status'/></return></outcome></switch><set>
+    <parameter name="service-data." value="preload-data." /></set><set>
+    <parameter name="service-data." value="vnf-topology-operation-input." /></set><set>
+    <parameter name="service-data.vnf-id" value="`$vnf-topology-operation-input.vnf-request-information.vnf-id`"/>
+    <parameter name="service-data.service-information.service-instance-id" value="`$vnf-topology-operation-input.service-information.service-instance-id`"/>
+    <parameter name="service-data.vnf-request-information.vnf-id" value="`$vnf-topology-operation-input.vnf-request-information.vnf-id`"/>
+    <parameter name="service-data.vnf-topology-information.vnf-topology-identifier.vnf-id" value="`$vnf-topology-operation-input.vnf-request-information.vnf-id`"/></set><switch test="`$preload-data.vnf-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''><set>
+<parameter name = "preload-data.vnf-topology-information.vnf-assignments.vnf-networks_length" value="0" />
+</set></outcome></switch><for index="j" start="0" end="`$preload-data.vnf-topology-information.vnf-assignments.vnf-networks_length`"><block atomic="true">
+<set>
+<parameter name='tmp.usePreload' value='1' />
+<parameter name='tmp.AnAI.l3network.' value='' />
+</set><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-networks_length`"><outcome value=''><set>
+<parameter name='vnf-topology-operation-input.vnf-request-information.vnf-networks_length' value='0' />
+</set></outcome></switch><block atomic="true">
+<for index="i" start="0" end="`$vnf-topology-operation-input.vnf-request-information.vnf-networks_length`"><switch test="`$preload-data.vnf-topology-information.vnf-assignments.vnf-networks[$j].network-role == $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-role`"><outcome value='true'>
+<block atomic="true">
+<set>
+<parameter name='tmp.usePreload' value='0' />
+</set><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-id == '' or $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-id == '0'`"><outcome value='false'><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-id = $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-id"
+        local-only="false"
+        pfx="tmp.AnAI.l3network">
+<outcome value='failure'>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'Failed to query AnAI for l3-network with network-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-id`"  />
+</return></outcome><outcome value='not-found'>
+<set>
+<parameter name='tmp.usePreload' value='1' />
+</set></outcome></get-resource></outcome><outcome value='true'>
+<switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-name == '' or $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-name == '0'`"><outcome value='true'>
+<set>
+<parameter name='tmp.usePreload' value='1' />
+</set></outcome><outcome value='false'><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-name = $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-name"
+        local-only="false"
+        pfx="tmp.AnAI.l3network">
+
+<outcome value='failure'>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'Failed to query AnAI for l3-network with network-name = ' + $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-name`"  />
+</return></outcome><outcome value='not-found'>
+<set>
+<parameter name='tmp.usePreload' value='1' />
+</set></outcome></get-resource></outcome></switch></outcome></switch><switch test="`$tmp.usePreload == 0`"><outcome value='true'>
+<block>
+<switch test="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''>
+<set>
+    <parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks_length" value = "0" /></set></outcome></switch><for index="k" start="0" end="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`"><switch test="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].network-role == $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].network-role`"><outcome value='true'>
+<block>
+<set>
+<parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].network-name" value="`$tmp.AnAI.l3network.network-name`" />
+<parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].network-id" value="`$tmp.AnAI.l3network.network-id`" />
+<parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].neutron-id" value="`$tmp.AnAI.l3network.neutron-network-id`" />
+<parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].contrail-network-fqdn" value="`$tmp.AnAI.l3network.contrail-network-fqdn`" />
+</set><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].subnet-id != ''`"><outcome value='true'>
+<set>
+<parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].subnet-id" value="`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].subnet-id`" /></set></outcome><outcome value='false'>
+<switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].subnet-name != ''`"><outcome value='true'>
+<switch test="`$tmp.AnAI.l3network.subnets.subnet_length != ''`"><outcome value='true'>
+<for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`"><switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].subnet-name`"><outcome value='true'>
+<set>
+<parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`" /></set></outcome></switch></for></outcome></switch></outcome></switch></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].ipv6-subnet-id != ''`"><outcome value='true'>
+<set>
+<parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id" value="`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].ipv6-subnet-id`" /></set></outcome><outcome value='false'>
+<switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].ipv6-subnet-name != ''`"><outcome value='true'>
+<switch test="`$tmp.AnAI.l3network.subnets.subnet_length != ''`"><outcome value='true'>
+<for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`"><switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $vnf-topology-operation-input.vnf-request-information.vnf-networks[$i].ipv6-subnet-name`"><outcome value='true'>
+<set>
+<parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`" /></set></outcome></switch></for></outcome></switch></outcome></switch></outcome></switch></block></outcome></switch></for></block></outcome></switch></block></outcome></switch></for><switch test="`$tmp.usePreload == 1`"><outcome value='true'><block atomic="true">
+<get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+    resource="l3-network"
+        key="l3-network.network-name = $preload-data.vnf-topology-information.vnf-assignments.vnf-networks[$j].network-name"
+        local-only="false"
+        pfx="tmp.AnAI.l3network">
+<outcome value='not-found'>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'PRELOAD network-name = ' + $preload-data.vnf-topology-information.vnf-assignments.vnf-networks[$j].network-name + ' not found in AnAI'`"  />
+</return></outcome><outcome value='failure'>
+<return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'Failed to query AnAI for l3-network with network-name = ' + $vnf-topology-operation-input.vnf-request-information.vnf-networks[$j].network-name`"  />
+</return></outcome><outcome value='success'>
+<switch test="`$tmp.AnAI.l3network.network-id == ''`"><outcome value='true'><return status='failure'>
+<parameter name='error-code' value='500' />
+<parameter name='error-message' value="`'An error occurred while querying l3-network with network-name = ' + $preload-data.vnf-topology-information.vnf-assignments.vnf-networks[$j].network-name + ' , it is likely that there are more than one l3-newtork object with the same network-name in AnAI.'`"  />
+</return></outcome></switch></outcome></get-resource><switch test="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''>
+<set>
+    <parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks_length" value = "0" /></set></outcome></switch><for index="k" start="0" end="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`"><switch test="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].network-role == $preload-data.vnf-topology-information.vnf-assignments.vnf-networks[$j].network-role`"><outcome value='true'>
+<block>
+<set>
+<parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].network-name" value="`$tmp.AnAI.l3network.network-name`" />
+<parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].network-id" value="`$tmp.AnAI.l3network.network-id`" />
+<parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].neutron-id" value="`$tmp.AnAI.l3network.neutron-network-id`" />
+<parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].contrail-network-fqdn" value="`$tmp.AnAI.l3network.contrail-network-fqdn`" />
+
+</set><switch test="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].subnet-id == ''`"><outcome value='true'>
+<switch test="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].subnet-name != ''`"><outcome value='true'>
+<switch test="`$tmp.AnAI.l3network.subnets.subnet_length != ''`"><outcome value='true'>
+<for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`"><switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].subnet-name`"><outcome value='true'>
+<set>
+<parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`" /></set></outcome></switch></for></outcome></switch></outcome></switch></outcome></switch><switch test="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id == ''`"><outcome value='true'>
+<switch test="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-name != ''`"><outcome value='true'>
+<switch test="`$tmp.AnAI.l3network.subnets.subnet_length != ''`"><outcome value='true'>
+<for index="i" start="0" end="`$tmp.AnAI.l3network.subnets.subnet_length`"><switch test="`$tmp.AnAI.l3network.subnets.subnet[$i].subnet-name == $service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-name`"><outcome value='true'>
+<set>
+<parameter name="service-data.vnf-topology-information.vnf-assignments.vnf-networks[$k].ipv6-subnet-id" value="`$tmp.AnAI.l3network.subnets.subnet[$i].neutron-subnet-id`" /></set></outcome></switch></for></outcome></switch></outcome></switch></outcome></switch></block></outcome></switch></for></block></outcome></switch></block></block></for><return status='success'>
+    <parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-assign.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-assign.xml
new file mode 100644
index 0000000..6bdb92f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-assign.xml
@@ -0,0 +1,54 @@
+<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='VNF-API' version='${project.version}'><method rpc='vnf-topology-assign' mode='sync'>

+<block atomic="true"><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`"><outcome value='true'>

+<return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value='vnf-id is already present in config-tree'/></return></outcome></switch><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module" 

+		key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+			and generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id" 

+		local-only="false" 

+		pfx="tmp.AnAI.vfmodule" ><outcome value='failure'>

+<return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value="`'Encountered error while querying vf-module from AnAI with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`"/></return></outcome><outcome value='not-found'>

+<return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value="`'vf-module not found in AnAI with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`"/></return></outcome></get-resource><call module='VNF-API' rpc='vnf-topology-assign-vfmodule' mode='sync' ></call><switch test="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''><set>

+<parameter name='service-data.vnf-topology-information.vnf-assignments.vnf-networks_length' value='0' />

+</set></outcome></switch><for index="i" start="0" end="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`"><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module:relationship-list" 

+		key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+			and generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id" 

+	force="true" 

+	local-only="false">

+	

+	<parameter name="relationship-list.relationship[0].related-to" value="l3-network" />

+	<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />

+	<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$i].network-id`" /><outcome value='failure'>

+<block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module:relationship-list" 

+	key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+		AND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id 

+		AND related-to = l3-network" 

+	force="true" 

+	local-only="false"></delete><return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value="`'Encountered error while saving vf-module l3-network relationship in AnAI with network-id = ' + $service-data.vnf-topology-information.vnf-assignments.vnf-networks[$i].network-id`"/></return></block></outcome></save></for><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module" 

+		key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+			and generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id" 

+		local-only="false" >

+	<parameter name="orchestration-status" value="pending-create" /><outcome value='failure'>

+<block atomic="true">

+<delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module:relationship-list" 

+	key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+		AND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id 

+		AND related-to = l3-network" 

+	force="true" 

+	local-only="false"></delete><return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value="Encountered error while updating vf-module orchestration-status in AnAI"/></return></block></outcome></update><set>

+	<parameter name="service-data.oper-status.order-status" value="PendingCreate"/></set><set>

+<parameter name="ack-final" value="Y"/></set><return status='success'>

+	<parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-assign-vfmodule.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-assign-vfmodule.xml
new file mode 100644
index 0000000..7ce6b2d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-assign-vfmodule.xml
@@ -0,0 +1,344 @@
+<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='VNF-API' version='${project.version}'><method rpc='vnf-topology-automated-assign-vfmodule' mode='sync'>

+<block atomic="true"><switch test='`$vnf-topology-operation-input.request-information.request-action`'>

+<outcome value='VNFActivateRequest'>

+<block>

+</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="If svc-action is 'assign' then request-action must be 'VNFActivateRequest'" />

+</return></outcome></switch><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODULE_MODEL WHERE customization_uuid = $vnf-topology-operation-input.vnf-request-information.model-customization-uuid'

+  pfx='db.vf-module-model'>

+

+<outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="Error reading VF_MODULE_MODEL table" />

+</return></outcome><outcome value='not-found'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="404" />

+    <parameter name="error-message" value="`'No model found for VF module customization UUID ' + $vnf-topology-operation-input.vnf-request-information.model-customization-uuid`" />

+</return></outcome></get-resource><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="cloud-region" 

+		key="cloud-region.cloud-owner = 'CloudOwner' AND 

+		     cloud-region.cloud-region-id = $vnf-topology-operation-input.vnf-request-information.aic-cloud-region"

+        pfx='aai.cloud-region' local-only='false' >

+

+<outcome value='not-found'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="404" />

+    <parameter name="error-message" value="`'aic-cloud-region,'+ $vnf-topology-operation-input.vnf-request-information.aic-cloud-region + ' not found in AAI'`" />

+</return></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 retrieving cloud region from AAI" />

+</return></outcome></get-resource><set>

+	<parameter name="service-data.vnf-id" value="`$vnf-topology-operation-input.vnf-request-information.vnf-id`"/>

+	<parameter name="service-data.service-information.service-instance-id" value="`$vnf-topology-operation-input.service-information.service-instance-id`"/>

+	<parameter name="service-data.service-information.service-type" value="`$vnf-topology-operation-input.service-information.service-type`"/>

+</set><set>

+	<parameter name="service-data." value="vnf-topology-operation-input." /></set><for index='idx' start='0' end='`$aai.cloud-region.relationship-list.relationship_length`' >

+<switch test='`$aai.cloud-region.relationship-list.relationship[$idx].related-to`'>

+<outcome value='complex'>

+<block atomic="true"><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split'>

+   <parameter name='ctx_memory_result_key' value='aai-uid-split' />

+   <parameter name='original_string' value='`$aai.cloud-region.relationship-list.relationship[$idx].related-link`' />

+   <parameter name='regex' value='/' />

+</execute><set>

+<parameter name='tmp.aic-clli' value='`$aai-uid-split[$aai-uid-split_length - 1]`' />

+</set><break/></block></outcome></switch></for><block>

+<switch test='`$aai.cloud-region.availability-zones.availability-zone_length`'>

+<outcome value=''><set>

+<parameter name='aai.cloud-region.availability-zones.availability-zone_length' value='0' />

+</set></outcome></switch><for index='az-index' start='0' end='`$aai.cloud-region.availability-zones.availability-zone_length`' >

+<block atomic="true"><set>

+<parameter name='tmp.vnf-topology.vnf-assignments.availability-zones[$az-index].availability-zone'

+  value='`$aai.cloud-region.availability-zones.availability-zone[$az-index].availability-zone-name`' />

+</set></block></for></block><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VF_MODULE_TO_VFC_MAPPING WHERE vf_module_customization_uuid = $vnf-topology-operation-input.vnf-request-information.model-customization-uuid'

+  pfx='db.vf-module-to-vfc-mapping[]'>

+

+<outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="Error reading VF_MODULE_TO_VFC_MAPPING table" />

+</return></outcome><outcome value='not-found'>

+<set>

+<parameter name='db.vf-module-to-vfc-mapping_length' value='0' />

+</set></outcome></get-resource><set>

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms_length'

+  value='`$db.vf-module-to-vfc-mapping_length`' />

+</set><for index='vm-type-index' start='0' end='`$db.vf-module-to-vfc-mapping_length`' >

+<block atomic="true"><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VFC_MODEL WHERE customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'

+  pfx='db.vfc-model'>

+

+<outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="Error reading VFC_MODEL table" />

+</return></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="`'No entries found in VFC_MODEL table for customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc-customization-uuid`" />

+</return></outcome></get-resource><switch test="$db.vfc-model.ecomp-generated-naming == 'Y'">

+<outcome value='false'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="`'ECOMP generated naming is not Y for VFC customization UUID ' + $db.vf-module-to-vfc-mapping[$db-vm-index].vfc-customization-uuid`" />

+</return></outcome></switch><set>

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-type'

+   value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-type`' />

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-count'

+   value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />

+

+</set><for index='vm-index' start='0' end='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' >

+<block atomic="true"><set>

+<parameter name='generate-unique-name-input.index-table-name' value='VM_NAME_INDEX' />

+<parameter name='generate-unique-name-input.index-table-prefix-column' value='vm_name_prefix' />

+<parameter name='generate-unique-name-input.name-table-type' value='VNFAPI_VM_INSTANCE' />

+<parameter name='x' value="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-name`" />

+<parameter name='y' value="`$db.vfc-model.nfc-naming-code`" />

+<parameter name='generate-unique-name-input.prefix' value="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-name + $db.vfc-model.nfc-naming-code`" />

+<parameter name='generate-unique-name-input.index-length' value='3' />

+</set><call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >

+<outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />

+</return></outcome><outcome value='success'>

+<set>

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vm-name' value='`$generate-unique-name-output.generated-name`' />

+</set></outcome></call></block></for><set>

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names_length'

+  value='`$db.vf-module-to-vfc-mapping[$vm-type-index].vm-count`' />

+</set><get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='SELECT * from VFC_TO_NETWORK_ROLE_MAPPING WHERE vfc_customization_uuid = $db.vf-module-to-vfc-mapping[$vm-type-index].vfc-customization-uuid'

+  pfx='db.vfc-to-network-role-mapping[]'>

+

+<outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="Error reading VFC_TO_NETWORK_ROLE_MAPPING table" />

+</return></outcome><outcome value='not-found'>

+<set>

+<parameter name='db.vfc-to-network-role-mapping_length' value='0' />

+</set></outcome></get-resource><set>

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks_length' 

+  value='`$db.vfc-to-network-role-mapping_length`' />

+</set><set>

+<parameter name='network-index' value='0' />

+</set><for index='network-role-index' start='0' end='`$db.vfc-to-network-role-mapping_length`' >

+<block atomic="true"><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="l3-networks" 

+		key="l3-network.network-role = $db.vfc-to-network-role-mapping[$network-role-index].network-role"

+        pfx='aai.l3-network' local-only='false'

+>

+<!--

+	AND l3-network.orchestration-status = 'active'

+	AND cloud-region.cloud-region-id = $vnf-topology-operation-input.vnf-request-input.aic-cloud-region

+	AND depth = 'ALL'"

+-->

+<outcome value='not-found'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="`'No active l3-network found in AAI with cloud_region_id '

+          + $vnf-topology-operation-input.vnf-request-information.aic-cloud-region + ' and network_role '

+          + $db.vf-network-role-mapping[$network-role-index].network-role`" />

+</return></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 retrieving l3-network from AAI" />

+</return></outcome></get-resource><set>

+<parameter name='l3-network-id' value='-1' />

+</set><block>

+<for index='db-network-index' start='0' end='`$aai.l3-network.l3-network_length`' >

+<switch test='`$aai.l3-network.l3-network[$db-network-index].orchestration-status`'>

+<outcome value='Pending Create'>

+<block>

+</block></outcome><outcome value='Pending Delete'>

+<block>

+</block></outcome><outcome value='Other'>

+<for silentFailure='true' index='db-rel-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship_length`' >

+<switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].related-to`'>

+<outcome value='cloud-region'>

+<for silentFailure='true' index='db-data-index' start='0' end='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data_length`' >

+<switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-key`'>

+<outcome value='cloud-region.cloud-region-id'>

+<switch test='`$aai.l3-network.l3-network[$db-network-index].relationship-list.relationship[$db-rel-index].relationship-data[$db-data-index].relationship-value == $vnf-topology-operation-input.vnf-request-information.aic-cloud-region`'>

+<outcome value='true'>

+<block atomic="true"><set>

+<parameter name='l3-network-id' value='`$aai.l3-network.l3-network[$db-network-index].network-id`' /></set><return status='failure'>

+</return></block></outcome></switch></outcome></switch></for></outcome></switch></for></outcome></switch></for><return status='success'>

+

+</return></block><switch test='`$l3-network-id`'>

+<outcome value='-1'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="`'Unable to find l3-network in AAI for network role ' + $db.vf-network-role-mapping[$role-index].network-role`" />

+</return></outcome></switch><set>

+<parameter name="tmp.vnf-topology.vnf-assignments.vnf-networks[$network-index].network-name" 

+	value="`$aai.l3-network.l3-network[$network-role-index].network-name`" />

+<parameter name="tmp.vnf-topology.vnf-assignments.vnf-networks[$network-index].network-id" 

+	value="`$aai.l3-network.l3-network[$network-role-index].network-id`" />

+<parameter name="tmp.vnf-topology.vnf-assignments.vnf-networks[$network-index].neutron-id" 

+	value="`$aai.l3-network.l3-network[$network-role-index].neutron-network-id`" />

+<parameter name="tmp.vnf-topology.vnf-assignments.vnf-networks[$network-index].contrail-network-fqdn" 

+	value="`$aai.l3-network.l3-network[$network-role-index].contrail-network-fqdn`" />

+<parameter name="tmp.vnf-topology.vnf-assignments.vnf-networks[$network-index].network-role" 

+	value="`$db.vfc-to-network-role-mapping[$network-role-index].network-role`" />

+</set><set>

+<parameter name='network-index' value='`$network-index + 1`' />

+</set></block></for><set>

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-networks_length'

+  value='`$network-index`' />

+</set></block></for><for index='vm-type-index' start='0' end='`$tmp.vnf-topology.vnf-assignments.vnf-vms_length`' >

+<for index='network-role-index' start='0' end='`$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks_length`' >

+<block atomic="true"><set>

+<parameter name='vm-networks-index' value='-1' />

+

+</set><switch test='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-ip-version`'>

+<outcome value=''><set>

+<parameter name='vm-networks-index' value='-1' />

+

+</set></outcome><outcome value='ipv4'>

+<block atomic="true"><set>

+<parameter name='vm-networks-index' value='0' />

+</set><set>

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].use-dhcp'

+   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-use-dhcp`' />

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].ip-count'

+   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv4-count`' /></set><set>

+<parameter name='tmp.local.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].ip-version'

+   value='ipv4' />   </set></block></outcome></switch><switch test='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-ip-version`'>

+<outcome value=''><block>

+</block></outcome><outcome value='ipv6'>

+<block atomic="true"><set>

+<parameter name='vm-networks-index' value='`$network-information-index + 1`' />

+</set><set>

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].use-dhcp'

+   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-use-dhcp`' />

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].ip-count'

+   value='`$db.vfc-to-network-role-mapping[$network-role-index].ipv6-count`' /></set><set>

+<parameter name='tmp.local.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].ip-version'

+   value='ipv6' />

+</set></block></outcome></switch><set>

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].network-role'

+   value='`$db.vfc-to-network-role-mapping[$network-role-index].network-role`' /></set><switch test='`$vm-networks-index`'>

+<outcome value='-1'><block>

+</block></outcome><outcome value='Other'>

+<set>

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks_length'

+   value='`$vm-networks-index + 1`' />

+</set></outcome></switch></block></for></for><for index='vm-type-index' start='0' end='`$tmp.vnf-topology.vnf-assignments.vnf-vms_length`' >

+<for index='network-role-index' start='0' end='`$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks_length`' >

+<switch test='`$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].use-dhcp`'>

+<outcome value='N'>

+<for index='ip-count-index' start='0' end='`$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].ip-count`'><block atomic="true"><set>

+<parameter name='generate-unique-name-input.index-table-name' value='EIPAM_CLIENT_KEY_INDEX' />

+<parameter name='generate-unique-name-input.index-table-prefix-column' value='vnf_name_prefix' />

+<parameter name='generate-unique-name-input.name-table-type' value='VNFAPI_CLIENT_KEY' />

+<parameter name='generate-unique-name-input.prefix'

+	value="`$vnf-topology-operation-input.vnf-request-information.vnf-name + ':' +

+		$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-type + ':' +

+		$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].network-role + ':'`" />

+<parameter name='generate-unique-name-input.index-length' value='2' />

+

+<!-- zrdm3mmex57_vlc:vlc:sctp_a:01 --></set><call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >

+<outcome value='failure'>

+<return status='failure'>

+	<parameter name='ack-final' value='Y'/>

+	<parameter name="error-code" value="500" />

+    <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />

+</return></outcome></call><set>

+<parameter name='tmp.aic-cloud-region'

+   value='`$vnf-topology-operation-input.vnf-request-information.aic-cloud-region`' />

+<parameter name='tmp.client-key'

+   value='`$generate-unique-name-output.generated-name`' />

+<parameter name='tmp.subnetpool-id'

+   value='`$db.vfc-to-network-role-mapping[$network-role-index].extcp-subnetpool-id`' />

+<parameter name='network-topology-operation-input.network-information.network-id' 

+	value = 'NOT_APPLICABLE' />

+<parameter name='service-data.service-information.service-type' 

+	value = 'NOT_APPLICABLE' />

+</set><call module='VNF-API' rpc='eipam-mobility-ip-assignment' mode='sync' ></call><execute plugin="com.att.sdnctl.sli.plugin.eipam.EIPAMPlugin" method="assignIPAddress"><outcome value='failure'><block atomic="true"><call module='VNF-API' rpc='rollback-eipam-ip-assignment' mode='sync' ></call><return status="failure">

+	<parameter name="ack-final" value="Y" />

+	<parameter name="error-code" value="500"/>

+	<parameter name="error-message" value="An error occured while obtaining new address blocks from EIPAM." />

+</return></block></outcome></execute><switch test='`$eipam-ip-block.plans_length`'>

+<outcome value=''><block atomic="true"><call module='VNF-API' rpc='rollback-eipam-ip-assignment' mode='sync' ></call><return status="failure">

+	<parameter name="ack-final" value="Y" />

+	<parameter name="error-code" value="500"/>

+	<parameter name="error-message" value="eipam-ip-block.plans[] is null." />

+</return></block></outcome><outcome value='0'><block atomic="true"><call module='VNF-API' rpc='rollback-eipam-ip-assignment' mode='sync' ></call><return status="failure">

+	<parameter name="ack-final" value="Y" />

+	<parameter name="error-code" value="500"/>

+	<parameter name="error-message" value="eipam-ip-block.plans[] is null." />

+</return></block></outcome></switch><for index='plans-index' start='0' end='`$eipam-ip-block.plans_length`' >

+<block atomic="true"><switch test='`$eipam-ip-block.plans[$plans-index].requests_length`'>

+<outcome value=''><block atomic="true"><call module='VNF-API' rpc='rollback-eipam-ip-assignment' mode='sync' ></call><return status="failure">

+	<parameter name="ack-final" value="Y" />

+	<parameter name="error-code" value="500"/>

+	<parameter name="error-message" value="`'eipam-ip-block.plans['+ $plans-index +'].requests[] is null.'`" />

+</return></block></outcome><outcome value='0'><block atomic="true"><call module='VNF-API' rpc='rollback-eipam-ip-assignment' mode='sync' ></call><return status="failure">

+	<parameter name="ack-final" value="Y" />

+	<parameter name="error-code" value="500"/>

+	<parameter name="error-message" value="`'eipam-ip-block.plans['+ $plans-index +'].requests[] is null.'`" />

+</return></block></outcome></switch><for index='rqst-index' start='0' end='`$eipam-ip-block.plans[$plans-index].requests_length`' >

+<switch test='`$eipam-ip-block.plans[$plans-index].address-family`'>

+<outcome value='ipv4'>

+<set>

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].network-ips[$ip-count-index].ip-address'

+   value='`$eipam-ip-block.plans[$plans-index].requests[$rqst-index].ip-prefix`' /></set></outcome><outcome value='ipv6'>

+<set>

+<parameter name='tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-networks[$network-role-index].network-ips-v6[$ip-count-index].ip-address-ipv6'

+   value='`$eipam-ip-block.plans[$plans-index].requests[$rqst-index].ip-prefix`' /></set></outcome></switch></for></block></for></block></for></outcome></switch></for></for><for index='vm-type-index' start='0' end='`$tmp.vnf-topology.vnf-assignments.vnf-vms_length`' >

+<for index='vm-index' start='0' end='`$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-count`' >

+<block atomic="true"><delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'

+  key='DELETE from VIPR_CONFIGURATION WHERE vnf_id = $service-data.vnf-id

+     AND ecomp_service_instance_id = $vnf-topology-operation-input.service-information.service-instance-id

+     AND vm_name = $tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index].vm-name' ><outcome value='failure'>

+<record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+<parameter name="logger" value="message-log"/>

+<parameter name="field1" value="__TIMESTAMP__"/>

+<parameter name="field2" value="VNF-API.vnf-topology-automated-assign-vfmodule:REQID"/>

+<parameter name="field3" value="`$vnf-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+<parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>

+</record></outcome></delete><save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"

+	key="INSERT INTO VIPR_CONFIGURATION (vnf_id, 

+		vnf_name, 

+		ecomp_service_instance_id, 

+		vm_name, 

+		cloud_region_id, 

+		cloud_owner) 

+	VALUES ( $service-data.vnf-id , 

+		$vnf-topology-operation-input.vnf-request-information.vnf-name , 

+		$vnf-topology-operation-input.service-information.service-instance-id , 

+		$tmp.vnf-topology.vnf-assignments.vnf-vms[$vm-type-index].vm-names[$vm-index]-vm-name , 

+		$vnf-topology-operation.vnf-request-information.aic-cloud-region , 

+		'CloudOwner')" ><outcome value='failure'>

+<record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+<parameter name="logger" value="message-log"/>

+<parameter name="field1" value="__TIMESTAMP__"/>

+<parameter name="field2" value="VNF-API.vnf-topology-automated-assign-vfmodule:REQID"/>

+<parameter name="field3" value="`$vnf-topology-operation-input.sdnc-request-header.svc-request-id`"/>

+<parameter name="field4" value="Failed to insert VIPR_CONFIGURATION record"/>

+</record></outcome></save></block></for></for><set>

+<parameter name='service-data.vnf-topology-information.' value='tmp.vnf-topology.' />

+</set><execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+<parameter name='filename' value='/var/tmp/bgb-vnfapi-vfmodule.log' />

+</execute></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-assign.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-assign.xml
new file mode 100644
index 0000000..7b6ae3e
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-assign.xml
@@ -0,0 +1,57 @@
+<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='VNF-API' version='${project.version}'><method rpc='vnf-topology-automated-assign' mode='sync'>

+<block atomic="true"><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`"><outcome value='true'>

+<return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value='vnf-id is already present in config-tree'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.model-customization-uuid`"><outcome value='0'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='model-customization-uuid cannot be NULL or 0'/></return></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='model-customization-uuid cannot be NULL or 0'/></return></outcome></switch><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module" 

+		key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+			and generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id" 

+		local-only="false" 

+		pfx="tmp.AnAI.vfmodule" ><outcome value='failure'>

+<return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value="`'Encountered error while querying vf-module from AnAI with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`"/></return></outcome><outcome value='not-found'>

+<return status='failure'>

+	<parameter name='error-code' value='404'/>

+	<parameter name='error-message' value="`'vf-module not found in AnAI with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`"/></return></outcome></get-resource><call module='VNF-API' rpc='vnf-topology-automated-assign-vfmodule' mode='sync' ></call><switch test="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''><set>

+<parameter name='service-data.vnf-topology-information.vnf-assignments.vnf-networks_length' value='0' />

+</set></outcome></switch><for index="i" start="0" end="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`"><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module:relationship-list" 

+		key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+			and generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id" 

+	force="true" 

+	local-only="false">

+	

+	<parameter name="relationship-list.relationship[0].related-to" value="l3-network" />

+	<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />

+	<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$i].network-id`" /><outcome value='failure'>

+<block atomic='true'><block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module:relationship-list" 

+	key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+		AND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id 

+		AND related-to = l3-network" 

+	force="true" 

+	local-only="false"></delete><call module='VNF-API' rpc='rollback-eipam-ip-assignment' mode='sync' ></call></block><return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value="`'Encountered error while saving vf-module l3-network relationship in AnAI with network-id = ' + $service-data.vnf-topology-information.vnf-assignments.vnf-networks[$i].network-id`"/></return></block></outcome></save></for><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module" 

+		key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+			and generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id" 

+		local-only="false" >

+	<parameter name="orchestration-status" value="pending-create" /><outcome value='failure'>

+<block atomic="true">

+<block atomic='true'><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module:relationship-list" 

+	key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+		AND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id 

+		AND related-to = l3-network" 

+	force="true" 

+	local-only="false"></delete><call module='VNF-API' rpc='rollback-eipam-ip-assignment' mode='sync' ></call></block><return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value="Encountered error while updating vf-module orchestration-status in AnAI"/></return></block></outcome></update><set>

+	<parameter name="service-data.oper-status.order-status" value="PendingCreate"/></set><set>

+<parameter name="ack-final" value="Y"/></set></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-delete.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-delete.xml
new file mode 100644
index 0000000..c9db485
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-delete.xml
@@ -0,0 +1,13 @@
+<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='VNF-API' version='${project.version}'><method rpc='vnf-topology-automated-delete' mode='sync'>

+<block atomic="true"><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`"><outcome value='false'>

+<return status='failure'>

+	<parameter name='error-code' value='404'/>

+	<parameter name='error-message' value='vnf-id not found'/></return></outcome></switch><switch test="`$service-data.oper-status.order-status == Active`"><outcome value='false'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='Invalid order-status'/></return></outcome></switch><call module='VNF-API' rpc='rollback-eipam-ip-assignment' mode='sync' ></call><set>

+	<parameter name="service-data.oper-status.last-order-status" value="`$service-data.oper-status.order-status`"/></set><set>

+	<parameter name="service-data.oper-status.order-status" value="Deleted"/></set><set>

+	<parameter name="service-data.oper-status.last-action" value="`$service-data.request-information.request-action`"/></set><set>

+	<parameter name="service-data." value="" /> 

+</set><set>

+<parameter name="ack-final" value="Y"/></set></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-operation.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-operation.xml
new file mode 100644
index 0000000..4cfb418
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-operation.xml
@@ -0,0 +1,41 @@
+<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='VNF-API' version='${project.version}'><method rpc='vnf-topology-automated-operation' mode='sync'>

+<block atomic="true"><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-id`"><outcome value='0'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vf-modules vnf-id cannot be NULL or 0'/></return></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vf-modules vnf-id cannot be NULL or 0'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.sdnc-request-header.svc-action`">

+<!--

+leaf svc-action { 

+	type enumeration { 

+		enum "reserve";

+		enum "assign";

+		enum "activate";  // equal to commit

+		enum "delete";	  // equal to commit

+		enum "changeassign";

+		enum "changedelete";

+		enum "rollback";

+	}

+}

+-->

+

+<outcome value='assign'><block atomic='true'><block atomic="true">

+<switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-name`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vnf-name is required'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-type`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vnf-type is required'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-id`"><outcome value='0'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-id cannot be NULL or 0'/></return></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-id cannot be NULL or 0'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-name`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-name cannot be NULL'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-type`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-type cannot be NULL'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.aic-cloud-region`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='aic-cloud-region cannot be NULL'/></return></outcome></switch></block><call module='VNF-API' rpc='vnf-topology-automated-assign' mode='sync' ></call></block></outcome><outcome value='activate'><block>

+<call module='VNF-API' rpc='vnf-topology-activate' mode='sync' ></call></block></outcome><outcome value='rollback'><block>

+<call module='VNF-API' rpc='vnf-topology-automated-rollback' mode='sync' ></call></block></outcome><outcome value='delete'><call module='VNF-API' rpc='vnf-topology-automated-delete' mode='sync' ></call></outcome><outcome value='Other'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='svc-action not recognized'/>

+</return></outcome></switch></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-rollback.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-rollback.xml
new file mode 100644
index 0000000..7b96f1d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-automated-rollback.xml
@@ -0,0 +1,12 @@
+<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='VNF-API' version='${project.version}'><method rpc='vnf-topology-automated-rollback' mode='sync'>

+<block atomic="true"><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`"><outcome value='false'>

+<return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value="`'vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' not found in config tree'`"/></return></outcome></switch><switch test="`$service-data.oper-status.order-status == PendingCreate`"><outcome value='false'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='Invalid order-status'/></return></outcome></switch><call module='VNF-API' rpc='rollback-eipam-ip-assignment' mode='sync' ></call><set>

+	<parameter name="service-data.oper-status.last-order-status" value="`$service-data.oper-status.order-status`"/></set><set>

+	<parameter name="service-data.oper-status.order-status" value="Deleted"/></set><set>

+	<parameter name="service-data.oper-status.last-action" value="`$service-data.request-information.request-action`"/></set><set>

+	<parameter name="service-data." value="" /> 

+</set></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-changeassign.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-changeassign.xml
new file mode 100644
index 0000000..40c665f
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-changeassign.xml
@@ -0,0 +1,81 @@
+<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='VNF-API' version='${project.version}'><method rpc='vnf-topology-changeassign' mode='sync'>

+<block atomic="true"><switch test="`$service-data.oper-status.order-status == Active`">

+<!--

+leaf order-status {

+	type enumeration {

+		enum "Active";

+		enum "PendingAssignment";

+		enum "PendingCreate";

+		enum "PendingUpdate";

+		enum "Deleted";

+	}

+}

+--><outcome value='false'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='Invalid service-data order status'/></return></outcome></switch><call module='VNF-API' rpc='vnf-topology-assign-vfmodule' mode='sync' ></call><get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module" 

+		key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+			and generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id" 

+		local-only="false" 

+		pfx="tmp.AnAI.vfmodule"><outcome value='failure'>

+<return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value="`'An error occurred while querying vf-module from AnAI with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`"/></return></outcome><outcome value='not-found'>

+<return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value="`'An error occurred while querying vf-module from AnAI with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`"/></return></outcome></get-resource><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module:relationship-list" 

+		key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+			AND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id 

+			AND related-to = l3-network" 

+	force="true" 

+	local-only="false"><outcome value='failure'>

+<return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value="`'An error occurred while deleting existing vf-module l3-network relationship in AnAI with with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id + ' vf-module update FAILED.'`"/></return></outcome></delete><switch test="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`"><outcome value=''><set>

+<parameter name = "service-data.vnf-topology-information.vnf-assignments.vnf-networks_length" value="0" />

+</set></outcome></switch><for index="i" start="0" end="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks_length`"><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module:relationship-list" 

+		key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+			AND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id" 

+	force="true" 

+	local-only="false">

+	

+	<parameter name="relationship-list.relationship[0].related-to" value="l3-network" />

+	<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />

+	<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$service-data.vnf-topology-information.vnf-assignments.vnf-networks[$i].network-id`" /><outcome value='failure'>

+<block>

+<set>

+	<parameter name="error-code" value="500" />

+	<parameter name="error-message" value="`' | An error occurred while saving l3-network relationship with network-id = ' + $service-data.vnf-topology-information.vnf-assignments.vnf-networks[$i].network-id + ' for vf-module with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`" />

+</set><delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module:relationship-list" 

+		key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+			AND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id 

+			AND related-to = l3-network" 

+	force="true" 

+	local-only="false"></delete><for index="i" start="0" end="`$tmp.AnAI.vfmodule.relationship-list.relationship_length`"><switch test="`$tmp.AnAI.vfmodule.relationship-list.relationship[$i].related-to`"><outcome value='l3-network'><for index="j" start="0" end="`$tmp.AnAI.vfmodule.relationship-list.relationship[$i].relationship-data_length`"><save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="vf-module:relationship-list" 

+		key="vf-module.vf-module-id = $vnf-topology-operation-input.vnf-request-information.vnf-id 

+			AND generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id" 

+	force="true" 

+	local-only="false">

+	

+	<parameter name="relationship-list.relationship[0].related-to" value="l3-network" />

+	<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="l3-network.network-id" />

+	<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$tmp.AnAI.vfmodule.relationship-list.relationship[$i].relationship-data[$j].relationship-value`" /><outcome value='failure'>

+<set>

+	<parameter name="error-code" value="500" />

+	<parameter name="error-message" value="`$error-message + ' | An error occurred while during rollback of l3-network relationship for vf-module with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`" />

+</set></outcome><outcome value='not-found'>

+<set>

+	<parameter name="error-code" value="500" />

+	<parameter name="error-message" value="`$error-message + ' | An error occurred while during rollback of l3-network relationship for vf-module with vf-module-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' and generic-vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.generic-vnf-id`" />

+</set></outcome></save></for></outcome></switch></for><return status='failure'>

+	<parameter name='error-code' value='500'/>

+	<parameter name='error-message' value="`'Failed to update vf-module l3-network relationship in AnAI. ' + $error-message`"/></return></block></outcome></save></for><set>

+	<parameter name="service-data.oper-status.last-order-status" value="`$service-data.oper-status.order-status`"/></set><set>

+	<parameter name="service-data.oper-status.order-status" value="PendingUpdate"/></set><set>

+	<parameter name="service-data.oper-status.last-action" value="`$service-data.request-information.request-action`"/></set><set>

+<parameter name="ack-final" value="Y"/></set><return status='success'>

+	<parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-changedelete.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-changedelete.xml
new file mode 100644
index 0000000..6baf25b
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-changedelete.xml
@@ -0,0 +1,32 @@
+<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='VNF-API' version='${project.version}'><method rpc='vnf-topology-changedelete' mode='sync'>

+<block atomic="true"><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`"><outcome value='false'>

+<return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vnf-id not found'/></return></outcome></switch><switch test="'$service-data.oper-status.order-status == Active'">

+

+<!--

+leaf order-status {

+	type enumeration {

+		enum "Active";

+		enum "PendingAssignment";

+		enum "PendingCreate";

+		enum "PendingUpdate";

+		enum "Deleted";

+	}

+}

+--><outcome value='false'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='Invalid last-order-status'/></return></outcome></switch><update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+	resource="generic-vnf" 

+		key="generic-vnf.vnf-id = $vnf-topology-operation-input.vnf-request-information.generic-vnf-id" 

+	force="true" 

+	local-only="false" >

+	<parameter name="orchestration-status" value="pending-delete" />

+</update><set>

+	<parameter name="service-data.oper-status.last-order-status" value="`$service-data.oper-status.order-status`"/></set><set>

+	<parameter name="service-data.oper-status.order-status" value="PendingDelete"/></set><set>

+	<parameter name="service-data.oper-status.last-action" value="`$service-data.request-information.request-action`"/></set><set>

+	<parameter name="service-data." value="vnf-topology-operation-input." /> 

+</set><return status='success'>

+	<parameter name="error-code" value="200" />

+</return></block></method></service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-delete.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-delete.xml
new file mode 100644
index 0000000..fd5319d
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-delete.xml
@@ -0,0 +1,13 @@
+<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='VNF-API' version='${project.version}'><method rpc='vnf-topology-delete' mode='sync'>

+<block atomic="true">

+<switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`"><outcome value='false'>

+<return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vnf-id not found'/></return></outcome></switch><set>

+	<parameter name="service-data.oper-status.last-order-status" value="`$service-data.oper-status.order-status`"/></set><set>

+	<parameter name="service-data.oper-status.order-status" value="Deleted"/></set><set>

+	<parameter name="service-data.oper-status.last-action" value="`$service-data.request-information.request-action`"/></set><set>

+	<parameter name="service-data." value="" /> 

+</set><set>

+<parameter name="ack-final" value="Y"/></set><return status='success'>

+	<parameter name="error-code" value="200" /></return></block></method></service-logic>

diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-operation.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-operation.xml
new file mode 100644
index 0000000..803d5a5
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-operation.xml
@@ -0,0 +1,2 @@
+<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='VNF-API' version='${project.version}'><method rpc='vnf-topology-operation' mode='sync'>

+<block atomic="true"><switch test="`$vnf-topology-operation-input.vnf-request-information.use-preload`"><outcome value='Y'><call module='VNF-API' rpc='vnf-topology-preload-operation' mode='sync' ></call></outcome><outcome value=''><call module='VNF-API' rpc='vnf-topology-preload-operation' mode='sync' ></call></outcome><outcome value='N'><call module='VNF-API' rpc='vnf-topology-automated-operation' mode='sync' ></call></outcome></switch></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-preload-operation.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-preload-operation.xml
new file mode 100644
index 0000000..55c81ad
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-preload-operation.xml
@@ -0,0 +1,86 @@
+<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='VNF-API' version='${project.version}'><method rpc='vnf-topology-preload-operation' mode='sync'>

+<block atomic="true"><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-name`"><outcome value='Other'><switch test="`$preload-data.vnf-topology-information.vnf-topology-identifier.vnf-name`"><outcome value='Other'><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-name == $preload-data.vnf-topology-information.vnf-topology-identifier.vnf-name`"><outcome value='false'>

+<return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='request.vnf-name not found in preload-data'/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='No preload data found to match vnf-name'/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vnf-name is required'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-type`"><outcome value='Other'><switch test="`$preload-data.vnf-topology-information.vnf-topology-identifier.vnf-type`"><outcome value='Other'><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-type == $preload-data.vnf-topology-information.vnf-topology-identifier.vnf-type`"><outcome value='false'>

+<return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='request.vnf-type not found in preload-data'/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='No preload data found to match vnf-type'/></return></outcome></switch></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vnf-type is required'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-id`"><outcome value='0'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vf-modules vnf-id cannot be NULL or 0'/></return></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='vf-modules vnf-id cannot be NULL or 0'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.sdnc-request-header.svc-action`">

+<!--

+leaf svc-action { 

+	type enumeration { 

+		enum "reserve";

+		enum "assign";

+		enum "activate";  // equal to commit

+		enum "delete";	  // equal to commit

+		enum "changeassign";

+		enum "changedelete";

+		enum "rollback";

+	}

+}

+-->

+

+<outcome value='assign'><block>

+<block atomic="true">

+<switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-id`"><outcome value='0'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-id cannot be NULL or 0'/></return></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-id cannot be NULL or 0'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-name`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-name cannot be NULL'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-type`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-type cannot be NULL'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.aic-cloud-region`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='aic-cloud-region cannot be NULL'/></return></outcome></switch></block><call module='VNF-API' rpc='vnf-topology-assign' mode='sync' ></call></block></outcome><outcome value='changeassign'><block>

+<block atomic="true">

+<switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-id`"><outcome value='0'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-id cannot be NULL or 0'/></return></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-id cannot be NULL or 0'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-name`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-name cannot be NULL'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-type`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-type cannot be NULL'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.aic-cloud-region`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='aic-cloud-region cannot be NULL'/></return></outcome></switch></block><call module='VNF-API' rpc='vnf-topology-changeassign' mode='sync' ></call></block></outcome><outcome value='activate'><block>

+<block atomic="true">

+<switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-id`"><outcome value='0'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-id cannot be NULL or 0'/></return></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-id cannot be NULL or 0'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-name`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-name cannot be NULL'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-type`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-type cannot be NULL'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.aic-cloud-region`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='aic-cloud-region cannot be NULL'/></return></outcome></switch></block><call module='VNF-API' rpc='vnf-topology-activate' mode='sync' ></call></block></outcome><outcome value='rollback'><block>

+<block atomic="true">

+<switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-id`"><outcome value='0'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-id cannot be NULL or 0'/></return></outcome><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-id cannot be NULL or 0'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-name`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-name cannot be NULL'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.generic-vnf-type`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='generic-vnf-type cannot be NULL'/></return></outcome></switch><switch test="`$vnf-topology-operation-input.vnf-request-information.aic-cloud-region`"><outcome value=''><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='aic-cloud-region cannot be NULL'/></return></outcome></switch></block><call module='VNF-API' rpc='vnf-topology-rollback' mode='sync' ></call></block></outcome><outcome value='delete'><call module='VNF-API' rpc='vnf-topology-delete' mode='sync' ></call></outcome><outcome value='Other'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='svc-action not recognized'/>

+</return></outcome></switch></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-rollback.xml b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-rollback.xml
new file mode 100644
index 0000000..0013653
--- /dev/null
+++ b/sdnc-a1-controller/oam/platform-logic/vnfapi/src/main/xml/VNF-API_vnf-topology-rollback.xml
@@ -0,0 +1,13 @@
+<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='VNF-API' version='${project.version}'><method rpc='vnf-topology-rollback' mode='sync'>

+<block atomic="true"><switch test="`$vnf-topology-operation-input.vnf-request-information.vnf-id == $service-data.vnf-id`"><outcome value='false'>

+<return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value="`'vnf-id = ' + $vnf-topology-operation-input.vnf-request-information.vnf-id + ' not found in config tree'`"/></return></outcome></switch><switch test="`$service-data.oper-status.order-status == PendingCreate`"><outcome value='false'><return status='failure'>

+	<parameter name='error-code' value='400'/>

+	<parameter name='error-message' value='Invalid order-status'/></return></outcome></switch><set>

+	<parameter name="service-data.oper-status.last-order-status" value="`$service-data.oper-status.order-status`"/></set><set>

+	<parameter name="service-data.oper-status.order-status" value="Deleted"/></set><set>

+	<parameter name="service-data.oper-status.last-action" value="`$service-data.request-information.request-action`"/></set><set>

+	<parameter name="service-data." value="" /> 

+</set><return status='success'>

+	<parameter name="error-code" value="200" /></return></block></method></service-logic>
diff --git a/sdnc-a1-controller/oam/pom.xml b/sdnc-a1-controller/oam/pom.xml
new file mode 100755
index 0000000..7ccbe16
--- /dev/null
+++ b/sdnc-a1-controller/oam/pom.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.onap.ccsdk.parent</groupId>
+		<artifactId>odlparent-lite</artifactId>
+		<version>1.4.3</version>
+	</parent>
+
+	<groupId>org.onap.sdnc.oam</groupId>
+	<artifactId>sdnc-oam</artifactId>
+	<version>1.7.3-SNAPSHOT</version>
+	<packaging>pom</packaging>
+
+	<name>sdnc-oam</name>
+	<description>The SDN-C OAM component contains the components needed to operate, administer and maintain the SDN-C platform.</description>
+	<url>https://wiki.onap.org</url>
+	<organization>
+		<name>AT&amp;T</name>
+	</organization>
+
+	<modules>
+		<module>admportal</module>
+		<module>platform-logic</module>
+		<module>configbackuprestore</module>
+		<module>SdncReports</module>
+		<module>data-migrator</module>
+	</modules>
+
+	<scm>
+                <connection>scm:git:ssh://git@${onap.git.host}/sdnc-oam.git</connection>
+                <developerConnection>scm:git:ssh://${onap.git.host}:${onap.git.port}/${onap.git.project}/sdnc-oam.git</developerConnection>
+                <url>${onap.git.protocol}://${onap.git.host}/projects/${onap.git.project}/repos/sdnc-oam/browse</url>
+    		<tag>HEAD</tag>
+ 	</scm>
+	<issueManagement>
+		<system>JIRA</system>
+		<url>https://jira.onap.org/</url>
+	</issueManagement>
+	<ciManagement>
+		<system>Jenkins</system>
+		<url>https://jenkins.onap.org/</url>
+	</ciManagement>
+	<distributionManagement>
+        <site>
+          <id>sdnc-javadoc</id>
+          <url>dav:https://${onap.nexus.host}:${onap.nexus.port}/repository/sdn-c-javadoc/${project.artifactId}/${project.version}</url>
+        </site>
+    </distributionManagement>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<version>2.17</version>
+				<configuration>
+					<skipTests>false</skipTests>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+	<profiles>
+		<profile>
+			<id>blackduck</id>
+			<activation>
+				<property>
+					<name>blackduck-scan</name>
+				</property>
+			</activation>
+			<build>
+					<plugins>
+						<plugin>
+							<groupId>com.blackducksoftware.integration</groupId>
+							<artifactId>hub-maven-plugin</artifactId>
+							<version>1.4.0</version>
+							<inherited>false</inherited>
+							<configuration>
+								<hubProjectName>${project.name}</hubProjectName>
+								<outputDirectory>${project.basedir}</outputDirectory>
+							</configuration>
+							<executions>
+								<execution>
+									<id>create-bdio-file</id>
+									<phase>package</phase>
+									<goals>
+										<goal>createHubOutput</goal>
+									</goals>
+								</execution>
+							</executions>
+						</plugin>
+					</plugins>
+
+
+			</build>
+
+		</profile>
+	        <profile>
+		  <id>docker</id>
+		  <modules>
+			<module>installation</module>
+		  </modules>
+	        </profile>
+
+	</profiles>
+	<dependencies>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+			<version>1.7.25</version>
+		</dependency>
+	</dependencies>
+</project>
diff --git a/sdnc-a1-controller/oam/releases/1.6.1.yaml b/sdnc-a1-controller/oam/releases/1.6.1.yaml
new file mode 100644
index 0000000..bb54acb
--- /dev/null
+++ b/sdnc-a1-controller/oam/releases/1.6.1.yaml
@@ -0,0 +1,5 @@
+---
+distribution_type: 'maven'
+version: '1.6.1'
+project: 'sdnc-oam'
+log_dir: 'sdnc-oam-maven-stage-master/165/'
diff --git a/sdnc-a1-controller/oam/releases/1.6.2.yaml b/sdnc-a1-controller/oam/releases/1.6.2.yaml
new file mode 100644
index 0000000..0030de0
--- /dev/null
+++ b/sdnc-a1-controller/oam/releases/1.6.2.yaml
@@ -0,0 +1,5 @@
+---
+distribution_type: 'maven'
+version: '1.6.2'
+project: 'sdnc-oam'
+log_dir: 'sdnc-oam-maven-stage-master/179/'
diff --git a/sdnc-a1-controller/oam/releases/1.7.3-container.yaml b/sdnc-a1-controller/oam/releases/1.7.3-container.yaml
new file mode 100644
index 0000000..928ade8
--- /dev/null
+++ b/sdnc-a1-controller/oam/releases/1.7.3-container.yaml
@@ -0,0 +1,19 @@
+---
+distribution_type: 'container'
+container_release_tag: '1.7.3'
+project: 'sdnc-oam'
+log_dir: 'sdnc-oam-maven-docker-stage-elalto/5/'
+ref: 845ff019964af8cd799861ccd47fc44182041675
+containers:
+    - name: 'sdnc-ansible-server-image'
+      version: '1.7.3-STAGING-20190920T222921Z'
+    - name: 'sdnc-aaf-image'
+      version: '1.7.3-STAGING-20190920T222921Z'
+    - name: 'sdnc-image'
+      version: '1.7.3-STAGING-20190920T222921Z'
+    - name: 'admportal-sdnc-image'
+      version: '1.7.3-STAGING-20190920T222921Z'
+    - name: 'sdnc-ueb-listener-image'
+      version: '1.7.3-STAGING-20190920T222921Z'
+    - name: 'sdnc-dmaap-listener-image'
+      version: '1.7.3-STAGING-20190920T222921Z'
diff --git a/sdnc-a1-controller/oam/releases/1.7.3.yaml b/sdnc-a1-controller/oam/releases/1.7.3.yaml
new file mode 100644
index 0000000..0d252ee
--- /dev/null
+++ b/sdnc-a1-controller/oam/releases/1.7.3.yaml
@@ -0,0 +1,5 @@
+---
+distribution_type: 'maven'
+version: '1.7.3'
+project: 'sdnc-oam'
+log_dir: 'sdnc-oam-maven-stage-elalto/5/'
diff --git a/sdnc-a1-controller/oam/version.properties b/sdnc-a1-controller/oam/version.properties
new file mode 100644
index 0000000..073c2cd
--- /dev/null
+++ b/sdnc-a1-controller/oam/version.properties
@@ -0,0 +1,14 @@
+###########################################################
+# Versioning variables
+# Note that these variables cannot be structured (e.g. : version.release or version.snapshot etc... )
+# because they are used in Jenkins, whose plug-in doesn't support
+
+release_name=1
+sprint_number=7
+feature_revision=3
+
+base_version=${release_name}.${sprint_number}.${feature_revision}
+
+release_version=${base_version}
+snapshot_version=${base_version}-SNAPSHOT
+